Merge branch 'V5-4-patches' into V5-7-patches
diff --git a/.gitignore b/.gitignore
index aa5f742..df174ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -66,6 +66,7 @@
 include/net-snmp/net-snmp-config.h
 libtool
 local/snmpcheck
+local/snmpconf
 Makefile
 man/*.[1358]
 man/default_store.3.h
diff --git a/AGENT.txt b/AGENT.txt
index 4d8d323..37eb279 100644
--- a/AGENT.txt
+++ b/AGENT.txt
@@ -418,14 +418,16 @@
 
    * a magic number (the #defined integer constant described above)
    * a type indicator (from the values listed in <snmplib/snmp_impl.h>)
-   * an access indicator (essentially RWRITE or RONLY)
+   * an access indicator (essentially NETSNMP_OLDAPI_RWRITE or
+     NETSNMP_OLDAPI_RONLY)
    * the name of the routine used to handle this entry
    * the length of the OID suffix used, and
    * an array of integers specifying this suffix (more on this in a moment)
 
 Thus a typical variable entry would look like:
 
-        { EXAMPLESTRING, ASN_OCTET_STR, RONLY, var_example, 1, {1}}
+        { EXAMPLESTRING, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+          var_example, 1, {1}}
 
 If the magic numbers have not been defined in the header file, then they
 should be defined here, usually comming immediately before the corresponding
diff --git a/CHANGES b/CHANGES
index 8d96747..eebeb12 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,706 +1,2597 @@
 This file contains a list of specific bugs that have been fixed, and patches
 that have been applied in released versions.  Please see the NEWS file for
 a summary of the major changes, and the ChangeLog file for a comprehensive
-listing of all changes made to the code. 
-      
-* 5.4.4 *
+listing of all changes made to the code.
 
+*5.7.3*
     snmplib:
-      - [BUG 3134323]: Fix crash when comparing invalid OIDs
-      - [BUG 3171878]: Using SNMPv3 context does not work
-      - [BUG 3182985]: Fix calculation of common OID prefix length
-      - [BUG 3234754]: Ensure old f_create_from_tstring hook is initialized to NULL
-      - [BUG 3264852]: Recognise missing report types
-      - [PATCH 3058645]: Use MSG_DONTWAIT for the unix domain socket
-      - [PATCH 3067540]: Fix IPv4 OID indexes on 64-bit big-endian systems
-      - [PATCH 3165878]: Catch buffer overrun on 64-bit systems
-      - [PATCH 3183000]: Fix calculation of common OID prefix length
-      - Added public declaration for netsnmp_table_data_delete_table()
-      - Added function netsnmp_delete_table_data_set().
-      - Added function snmp_sess_session_lookup()
-      - Added macro netsnmp_static_assert()
-      - Avoid Valgrind complaints about uninitialized data
-      - Check the return value of strdup in netsnmp_create_data_list
-      - Fix double-free crash when releasing duplicated handlers
-      - Fixed a memory leak in snmp_free_session()
-      - Fixed memory corruption triggered by snmpd.conf "enum" keyword
-      - Fixed bugs in building/parsing 64-bit integers
-      - Fixed leaks-at-exit triggered by using the snmp_enum code
-      - Fixed memory leak in netsnmp_table_data_delete_table()
-      - Fixed memory leak triggered by duplicate se_add_pair_to_list()
-      - Fix issue with USM using inactive users
-      - Fixed potential buffer overflow when generating temp file names
-      - Invoking se_clear_slist() no longer creates a dangling pointer
-      - Use realloc+init instead of calloc
+      - Fixed crash when MD5 hash is not supported by OpenSSL.
+      - Fixed parsing of sequences. Don't overwrite 'data' variable, it's
+	used when parsing bulk responses.
+      - [BUG 1267 ]: snmplib: register_mib_context() fix for read-only
+	variables   This is a slightly modified version of a patch from
+	Harsha Shivanna.
+
+    snmp:
+      - Usm-dh-objects-mib: Avoid triggering an assert statement in
+	netsnmp_ready_monotonic() The cache timeout for
+	snmp-usm-dh-objects-mib is -1. Any cache timeout value < 0 disables
+	caching. However, strictly negative values trigger the assert
+	statement in netsnmp_ready_monotonic(). Avoid triggering that
+	assert statement.
+      - Fixed monitoring based on non-delta trigger.   snmpd crashed wit
+	following snmpd.conf: monitor -s -D -r 10 -e LOGMATCH -o
+	logMatchCurrentCount "Log Match" != logMatchCurrentCount logmatch
+	LoginFailure1 /var/log/secure 10 su: .*fail.* The reason was
+	unitialized variable sysUT_var in mteTrigger_run(), it was filled
+	only if the trigger was delta-valued, while its value was used for
+	all triggers. With this patch, sysUT_var is filled for all code
+	branches where it is needed.
 
     snmpd:
-      - [BUG 1840230]: Don't include nlmLogVariableIndex as (pseudo-)accessing column
-      - [BUG 2972579]: fixed checking of snmpTargetAddrRowStatus SET requests
-      - [BUG 3003981]: Protect against config parsing buffer overflow
-      - [BUG 3019243]: Register execFix compatability directive correctly
-      - [BUG 3058101]: Writeable 'int' instances don't work on 64-bit systems
-      - [BUG 3062538]: Fix com2sec* handling of non-default contexts
-      - [BUG 3151897]: fd leak with /proc/partitions read in diskio
-      - [BUG 3178389]: Fix inconsistent handling of TZ offsets
-      - [BUG 3185528]: shutdown_master_agent doesn't close UDP sockets
-      - [BUG 3305157]: Fix ipAddressPrefix handling of IPv6 addresses
-      - [PATCH 2119725]: Fix skipNFSInHostResources handling of hrStorageTable
-      - [PATCH 2825653]: Fix sendmail.cf parsing in certain conditions
-      - [PATCH 2904900]: Documentation plus assorted handler code fixes
-      - [PATCH 2911361]: Remove redundant variables
-      - [PATCH 2941811]: Handle successful requests with reqID 0
-      - [PATCH 2975254]: Avoid callback re-use of closed sessions
-      - [PATCH 3053436]: Fix tcpConnectionTable_data_access invalid memory access
-      - [PATCH 3062526]: Fix security engineID setting in the trapsess directive
-      - [PATCH 3066862]: Fix comparison of large unsigned indexes (disk/extend tables)
-      - [PATCH 3096725]: Don't register v1Trap callback, if SNMPv1 not supported
-      - [PATCH 3096725]: sysORTable registation for Notification Log mib
-      - [PATCH 3096725]: Include SNMPv1 trap OIDs in nlmLogNotificationID column
-      - [PATCH 3141462]: Fix agentx subagent issues with multiple-object requests
-      - [PATCH 3198781]: Ensure disman/{ping,traceroute} do at least compile
-      - [PATCH 3299384]: Fix INFORMs so they retry probing for an engineID
+      - Add a missing function declaration
+      - Added btrfs support to hrFSTable
+      - Correct the size of of the EXAMPLEIPADDRESS value on L64 hosts
+      - Fixed crash in UCD-SNMP-MIB::extTable snmpd crashed when the
+	command to execute had no arguments, i.e. extend->args was NULL.
+      - Fixed value of UCD-SNMP-MIB::extCommand to contain full command
+	line. MIB description of UCD-SNMP-MIB::extCommand suggests it
+	should contail full command line. Also in Net-SNMP 5.3.2.2, whole
+	command line was shown.
+      - Make it possible to use NUL characters in the indices for
+	snmpTargetAddrTable
+      - PATCH 2472: from Sunil: don't use HBKT as heartbeat interval in
+	SCTP-MIB::sctpAssocTable.
+      - Remove some unused includes
+      - Show Linux kernel threads in hrSWRunTable.
+      - Use 0 for the ignored numvars argument to netsnmp_register_mib The
+	numvars argument of netsnmp_register_mib is ignored if the var
+	argument is NULL. In order to unify this use of it with all other
+	ones, change it from 1 to 0
+      - SECURITY: a denial of service attack vector was discovered on
+        the linux implementation of the ICMP-MIB.  This release fixes
+        this bug and all users are encouraged to update their SNMP
+        agent if they make use of the ICMP-MIB table objects.
+      - PATCH: 1275: from Viliam Púčik: fixed Perl trap handler when
+	processing trap with empty community string.
 
-      - Add newly created/destroyed interfaces to ipv6IfTable
-      - Call shutdown_master_agent() and shutdown_agent() during shutdown
-      - Don't deregister closed sessions
-      - Don't second-guess cache handler
-      - Fix clean_subtree() memory handling
-      - Fixed a double free, triggered by cleaning up embedded Perl data structure.
-      - Fixed adding new addresses to ipAddressTable
-      - Fixed logging of 'truncating integer value > 32 bits' in {IP,TCP}-MIB
-      - Fixed IP-MIB::ipIfStatsReasmReqds value
-      - Fixed potential buffer overflow in parsing OIDs in config files
-      - Fixed race conditions in hrSWRunTable and UCD prTable
-      - Fixed agent bogus 64-bit wrap warning (ipSystemStats)
-      - Fix engineid generation on outgoing v3 traps from the agent
-      - Fix VACM persistant storage.
-      - Optimizations for large route tables
-      - Use cache-unique id instead of handler name for shared cache reload protection
-      - Various MIB-specific leak-at-exit fixes.
-
-    snmptranslate:
-      - Fixed printing of ranges with UNSIGNED type
+    snmpd, snmptrapd and apps:
+      - Make ENV_SEPARATOR_CHAR configurable
 
     snmptrapd:
-      - [BUG 3151254]: Fix crash with invalid traphandle directive
-      - Fixed a double free, triggered by cleaning up embedded Perl data structure.
 
-    snmpusm:
-      - Correct ifdefs, remove dead variables
+    apps:
+      - Stop agentxtrap from accessing the persistent configuration This is
+	needed to prevent moaning about not beeing allowed to write those
+	files due to bad permissions.
+      - Stop using snmp_perror when logging after functions that don't set
+	snmp_errno.
+
+    building:
+      - Make the -without options to rpmbuild work
+      - Avoid duplicate and trailing spaces in the dependency files.
+
+    documentation:
+      - From "Eric S. Raymond": Correct man page markup problem Ambiguous
+	or invalid backslash.  This doesn't cause groff a problem. but it
+	confuses doclifter and may confuse older troff implementations.
+
+    perl:
+      - BUG: 2402: Add support for SNMPv3 traps
+
+    python:
+      - Fixed IPADDRESS size on 64bit systems.
+      - Fixed returning of empty strings. Varbind type (SNMP_NOSUCHOBJECT
+	etc.) should be used to detect errors instead of length of the
+	variable - it can be empty string.
+      - [PATCH 1239]: Fix memory leak
+
+    testing:
+      - Make sure Test::Harness is of at least version 1.21 Test::Harness
+	1.21 is the first version that implements TAP v12 which allows
+	putting the header (1..N) after the tests and since our tests
+	utilize that we should make sure that the test runner supports it.
+
+    unspecified:
+      - Added simfs (OpenVZ filesystem) to hrStorageTable and hrFSTable.
+      - Upport new MIB structures and MFD rewrites under Darwin
+      - [BUG 2470]: Accept 65535 as a valid IPv6 port number
+      - [BUG 2476]: snmpd fails to start on AIX On an AIX system there is
+	no <kvm.h> header file nor do the /dev/dmem or /dev/drum devices
+	exist and hence DMEM_LOC is not defined. Avoid that init_kmem()
+	fails in that case.
+
+    AIX:
+      - Make tcp-mib build
+      - Make udp-mib build
+
+    Linux:
+      - BUG: 2238: Add libnl3 support
+      - RESOURCES-MIB, hrSWRun table: Parse /proc/<pid>/stat correctly on
+	Linux This issue was reported by Vincent Bernat
+	<vincent.bernat@dailymotion.com>. See also
+	http://sourceforge.net/p/net-snmp/patches/1257/.
+
+    Win32:
+      - Perl: BUG: 2488: Avoid "Free to wrong pool" error
+      - Perl: BUG: 2488: Avoid "Free to wrong pool" error" This reverts
+	commit b2725964bde921b6285e3a59a512552cae0a0ca5.
+
+    Windows:
+      - Add multihoming support On Windows Vista / Windows Server 2008 and
+	later it is possible to add multihoming support by using the
+	IP_PKTINFO socket option. Conflicts:
+	snmplib/transports/snmpUDPBaseDomain.c
+      - Make winExtDLL work on 64-bit Windows systems
+      - Port batch build infrastructure to Visual Studio 2010 and later
+	From Visual Studio 2010 on it is no longer possible to specify
+	include or library directories globally - these have to be
+	specified per project. Hence two additional menu entries in
+	build.bat that allow to specify these directories.
+      - Ported ucd-snmp/dlmod to MinGW / MSVC
+
+*5.7.2*
+
+    snmplib:
+      - Add Doxygen-style function header for
+	netsnmp_register_default_target() and
+	netsnmp_clear_default_target().
+      - Add netsnmp_setenv().
+      - Avoid that system clock changes (e.g. by ntpd) affect code that
+	needs relative time Make sure that the range of the SNMPv3 variable
+	snmpEngineTime is 0..2147483647 on all supported systems instead of
+	0..42949672 on some systems (i.e. wraparound after 497 days) Add
+	netsnmp_get_monotonic_clock(), netsnmp_set_monotonic_marker(),
+	netsnmp_ready_monotonic(), netsnmp_get_agent_runtime()
+      - Avoid that system clock changes (e.g. by ntpd) affect code that
+	needs relative time Make sure that the range of the SNMPv3 variable
+	snmpEngineTime is 0..2147483647 on all supported systems instead of
+	0..42949672 on some systems (i.e. wraparound after 497 days) Add
+	netsnmp_get_monotonic_clock(), netsnmp_set_monotonic_marker(),
+	netsnmp_ready_monotonic(), netsnmp_get_agent_runtime() Deprecate
+	atime_diff(), atime_newMarker(), atime_ready(), atime_setMarker(),
+	marker_tticks(), netsnmp_marker_uptime(), netsnmp_timeval_uptime(),
+	timeval_tticks(), uatime_diff(), uatime_hdiff() and uatime_ready().
+      - Avoid waiting indefinitely if a session has timeout zero
+      - Declare "type" argument of se_store_list() / se_store_slist() /
+	se_store_enum_list() const
+      - Make it explicit that MAX_SUBID is an unsigned constant
+      - Make netsnmp_callback_accept() return -1 (failure) instead of 0
+	(STDIN_FILENO)
+      - Make netsnmp_large_fd_set_resize() robust against memory allocation
+	failures. Make NETSNMP_LARGE_FD_ZERO() use memset() on Unix systems
+	instead of an explicit loop.
+      - Make netsnmp_large_fd_set_resize() robust against memory allocation
+	failures. Make NETSNMP_LARGE_FD_ZERO() use memset() on Unix systems
+	instead of an explicit loop. Make sure that on Unix systems
+	netsnmp_large_fd_clr() doesn't try to read memory it isn't allowed
+	to read if the first argument equals -1 (a value that shouldn't be
+	passed by the caller).
+      - Merge together the Linux and *BSD version of src port sending.
+      - Only transform the address to printable form when needed.
+      - PATCH 3510454: Allow the use of 0.0.0.0/0 as alias for default
+      - Prevent gcc ped-warning for NETSNMP_REMOVE_CONST git-svn-id:
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@1
+	8052 06827809-a52a-0410-b366-d66718629ded
+      - Reduce overhead of config file parsing
+      - Remove obsolete snmp_get_fd_for_session() declaration
+      - Separate out the cmesg buffer size
+      - Set the rpath for libperl.so in libnetsnmpmibs.so such that the
+	dynamic linker can find libperl.so without requiring the user to
+	modify the dynamic linker settings. This change in
+	agent/Makefile.in is necessary on the 5.5 branch and later but not
+	on the 5.4 branch. That is because the 5.4 branch uses an older
+	version of libtool that propagates the rpath of dependent
+	libraries. This is called inter-library dependency tracking in the
+	libtool manual. This functionality is present in libtool version 1
+	but not in libtool version 2. For more background information about
+	dynamic libraries and rpaths, see also the document with the title
+	"RpathIssue" on the Debian wiki
+	(http://wiki.debian.org/RpathIssue).
+      - Simplify implementation of functions manipulating 64-bit numbers.
+      - Simplify the se_store_enum_list() implementation
+      - Use SNMP_ALLOC_TYPEDEF to allocate transports in order to avoid the
+	separate call to memset.
+      - [PATCH 3414773]: Encode integer value using ASN_INTEGER
+      - [PATCH 3526599]: Don't hang on retried failing SNMPv3 responses
+      - PATCH 3560473: from fenner: Handle TimeTicks when pretty-printing
+	OID   Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+      - Add the symbol NETSNMP_PRIo to help in printing oid values.
+      - Do not crash from empty values in --token=value arguments
+      - Do not crash on incomplete configuration tokens.
+      - Do not truncate single default transport domains
+      - Move the check that the pdu variable is non-NULL to before the
+	first dereference of it.
+
+    snmplib + snmpd + snmpwalk:
+      - Avoid that system clock changes (e.g. by ntpd) affect code that
+	needs relative time
+
+    snmplib, snmpd, perl:
+      - Eliminate dead variables agent/mibgroup/agentx/master_admin.c
+	agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c
+	agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_acc
+	ess.c agent/mibgroup/host/data_access/swinst_pkginfo.c
+	agent/mibgroup/host/data_access/swrun_procfs_status.c
+	agent/mibgroup/ip-mib/data_access/systemstats_linux.c
+	agent/mibgroup/mibII/kernel_linux.c
+	agent/mibgroup/rmon-mib/data_access/etherstats_linux.c
+	agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access
+	.c apps/snmptls.c apps/snmptrapd_log.c snmplib/dir_utils.c
+	snmplib/snmp_client.c snmplib/snmp_openssl.c
+	snmplib/transports/snmpTLSTCPDomain.c
+      - BUG: 3517030: Ensure large tables are walked properly
+      - BUG: 3541012: Fix handling of gettable columns
+      - [PATCH 3529541]: Don't refer to internal 'my' variables from
+	external scripts Fix provided by Lezz Giles
+
+    snmp:
+      - Bridge-mib: Fix index interpretation. This patch corrects a wrong
+	data interpretation. snmp-bridge-mib obtains the ifindex value from
+	the sysfs attribute 'ifindex' The value given by the sysfs
+	attribute is an integer, which is handled as hex and leads to
+	incorrect data displayed to the user. e.g. $ > snmpwalk localhost
+	BRIDGE-MIB::dot1dBasePortIfIndex.2
+	BRIDGE-MIB::dot1dBasePortIfIndex.2 = INTEGER: 54 according to the
+	sysfs attribute the value is 36 $ > cat
+	/sys/class/net/<device>/ifindex 36 Signed-off-by: Mijo Safradin
+	<safradin@linux.vnet.ibm.com>
+
+    snmpd:
+      - Lowered severity of 'Error expanding XXX to 64bits' messages.
+      - Removed error log messages when IPv6 is disabled.
+      - Add missing debug tag
+      - Add netsnmp_get_next_alarm_time()
+      - Avoid that system clock changes (e.g. by ntpd) affect code that
+	needs relative time Make sure that the range of the SNMPv3 variable
+	snmpEngineTime is 0..2147483647 on all supported systems instead of
+	0..42949672 on some systems (i.e. wraparound after 497 days)
+      - BUG 3542188: Correct sysORDescr for snmpUsmMIB. Thanks to Dave
+	Vucich for reporting this.
+      - BUG 3542307: Correct sysORID for snmpMPDStats. Thanks to Dave
+	Vucich for reporting this.
+      - BUG: 3439234: Correct the dependencies of ucd-snmp/pass and
+	ucd-snmp/pass_persist
+      - BUG: 3439234: Move netsnmp_pass_str_to_errno to pass_common and
+	rename it to netsnmp_internal_pass_str_to_errno
+      - BUG: 3463767: Handle parsing subidentifiers > 2^31
+      - BUG: 3532090: Fix high ifIndex values crashing hrDeviceDescr
+      - Call snmp_oidtree_compare instead of snmp_oid_min_compare
+      - DISMAN-PING-MIB: Avoid dangling pointers (based on patch 3503259)
+      - DISMAN-PING-MIB: Avoid reading freed memory when deleting a row
+	from a table
+      - DISMAN-PING-MIB: Do not send the contents of the stack over the
+	network
+      - DISMAN-PING-MIB: Don't call exit() upon memory allocation failure
+      - DISMAN-PING-MIB: Fix IPv6 socket leak in error paths
+      - DISMAN-PING-MIB: Fix a socket leak triggered by pinging a remote
+	host
+      - DISMAN-PING-MIB: Fix more memory leaks
+      - DISMAN-PING-MIB: Fix several memory leaks
+      - DISMAN-PING-MIB: Make ping implementation independent of ntpd clock
+	jumps
+      - DISMAN-PING-MIB: Make pinging local interface addresses work
+      - DISMAN-SCHEDULER-MIB: Handle 32-character schedContextName values
+	correctly. See also commit
+	b3c4982542e0ab151fb3884754cdfbcb472da52d.
+      - Disable the support for integer64 in pass scripts if compiling
+	without opaque-special-types.
+      - Factor out asc2bin and bin2asc. Add a netsnmp_internal_ prefix to
+	them
+      - Fixed UCD-SNMP-MIB::systemStats after 30 days of uptime. After 30
+	days, values from /proc/stat (on Linux) can get bigger than 32bits
+	and snmpd calculations might render counters like ssCpuUser
+	negative or zero, while the real value is higher. Therefore the
+	counters should be tracked as the largest integer available.
+      - Fixed snmpd '-d' option. Now it dumps packets again.
+      - IF-MIB::ifType: Report type "infiniband (199)" for InfiniBand
+	interfaces instead of type "other (1)".
+      - Init_agent() + init_kmem(): Return an error value instead of
+	invoking exit() if access to kernel virtual memory is denied
+      - Make the configuration of the dlmod module fail rather than
+	generate a dummy module if the dlopen function isn't available.
+      - Match each getpwnam()/getpwuid() call with an endpwent() call and
+	each getgrent() call with an endgrent() call.
+      - PATCH 3402376: from Leonardo Chiquitto: Recognise ReiserFS Also
+	move various FSType definitions to the appropriate blocks
+      - PATCH 3453868: from "Bill Fenner <fenner@gmail.com>": Factor common
+	code into pass_common Move the code for pormatting and printing
+	values from pass and pass_persist into pass_common.
+      - PATCH: 3487867: Don't skip missing ifXTable entries
+	(ifConnectorPresent FALSE)
+      - Pass_persist:  Fixes a race condition introduced in commit
+	31fa07cd9ffde46d41d2b5838c3fc4d01548bfb5. The following race
+	condition could happen: - A system call fails and errno is set
+	accordingly by the C library. - SIGCHLD handler invokes a system
+	call that fails and hence overwrites errno. - SIGCHLD handler
+	leaves. - original context checks errno and finds the value from
+	the system call invoked by the SIGCHLD handler instead of the
+	system call that failed originally. Other fixes included in this
+	patch: - Renamed deinit_pass_persist() into shutdown_pass_persist()
+	such that this function gets called during agent shutdown. - Made
+	sure that shutdown_pass_persist() is called by the Windows
+	snmpd.exe too. - Windows: avoid calling
+	CloseHandle(INVALID_HANDLE_VALUE). - Windows: avoid that closing a
+	pass_persist pipe triggers a crash. - Windows: pass_persist: close
+	handles of finished processes.
+	agent/mibgroup/ucd-snmp/pass_persist.c win32/mib_module_shutdown.h
+      - Smux: simplify smux_list_detach()
+      - UDP-MIB: Report the proper address in udpLocalAddress instead of
+	0.0.0.0. Makes test T160snmpnetstat pass again. Fixes a bug
+	introduced in commit c76fb96f65e33ba2fd212a921e8c386155ee5c7a.
+      - [BUG 3460364]: Fix use of block factor when detecting error
+	conditions
+      - [BUG 3489631]: Fix incorrect handling of UCD monitoring flag
+      - [PATCH 3410050]: Skip already-'processed' varbinds Based on mib2c
+	patch provided by Stephen Turner
+      - [PATCH 3410059]: Fix sparsely augmenting trigger tables Patch
+	provided by Stephen Turner
+      - [PATCH 3447444]: Fix SIG_PIPE handling Patch provided by Bill
+	Fenner
+      - [PATCH 3447671]: Fix override handling of OID values Patch supplied
+	by Phillip O'Donnell
+      - [PATCH 3479740]: Fix hrSWRunPerf statistics
+      - [PATCH 3487919]: Fix compilation when caching is disabled
+      - [PATCH 3495697]: Store persistent snmpTarget table changes
+      - BUG 3542188: Correct sysORDescr for snmpUsmMIB. Thanks to Dave
+	Vucich for reporting this.
+      - BUG 3542307: Correct sysORID for snmpMPDStats. Thanks to Dave
+	Vucich for reporting this.
+      - BUG: 3543864: Remove extraneous function type (and fix a related
+	typo)
+      - Removed limit of 'exec' and 'sh' entries in snmpd.conf Use dynamic
+	(re)allocation instead.
+      - [PATCH 3543000]: Various fixes to Rmon code Supplied by Patrick
+	Ritter
+
+    snmpdx:
+      - [PATCH 3445437]: Log AgentX disconnections (in line with
+	connections) Patch provided by Bill Fenner
+
+    snmptrapd:
+      - Avoid crash during shutdown due to invoking perl_destruct(NULL)
+      - Do not invoke shutdown_perl() from inside the SIGTERM handler since
+	that fails if SIGTERM is received while a Perl handler is active.
+	Based on a patch posted by Joel Avni <javni@arubanetworks.com>
+      - Eliminate an unused variable (Now)
+      - Move the main loop code into a new function
+      - Remove superfluous casts
+
+    snmptrapd_sql:
+      - Avoid that a linker error is triggered on systems where my_progname
+	is missing in libmysqlclient (e.g. Fedora 15 and 16). This is a
+	backport of commit 9f653f7.
+
+    aix:
+      - Eliminate configure warning regarding libperfstat.h on AIX 6.1 and
+	up
+      - PATCH 3403433: from blentz: Issues with hrSWRunName and Parameters
+	on AIX	 Signed-off-by: Wes Hardaker
+	<hardaker@users.sourceforge.net>
+
+    apps, snmplib:
+      - PATCH: 2835577: identified by "Bart Van Assche": Replace SNMP_ZERO
+	of arrays with a memset. git-svn-id:
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@1
+	7797 06827809-a52a-0410-b366-d66718629ded
+      - BUG: 3529768: Be more careful when stripping off numeric suffixes
 
     build:
-      - [BUG 3102904]: Compile all source files with -fno-strict-aliasing
-      - Do not call VACM APIs if VACM module is not included
-      - Fix autoconf detection of strcasecmp
-      - Fix building of static applications using net-snmp-config -*libs
-      - Fix definition of VERSION (number, not expression)
+      - Do not generate an output file on failure make supposes that no
+	output is generated if the command failed. Change feature-remove to
+	follow that presumption.
+      - BUG: 3532234: Fix typo in libtool script (addressed properly in
+	libtool 2.4.2)
+
+    building:
+      - Add dependencies on @FEATURETARGS@ to make the subtarget work as
+	well.
+      - Add missing end comments to feature ifndefs.
+      - Add target to build agentxtrap from the toplevel
+      - Build fix for systems lacking field msg_flags in struct msghdr
+	(e.g. IRIX)
+      - Build fix for systems lacking fields msg_control/msg_flags in
+	struct msghdr (backport)
+      - Correct dependencies - since
+	bf74fea69f24dc6e85f908f3f41d1426b2e09688 snmpconf is located in
+	builddir, not srcdir
+      - Correct dependencies - since
+	bf74fea69f24dc6e85f908f3f41d1426b2e09688 snmpconf is located in
+	builddir, not srcdir" This reverts commit
+	9efa467a972bb6e1c7fbdaf2e27429d29f4ab89e.
+      - Make the transport configuration code work again Previously the
+	transport inheritance processing code ran with
+	NETSNMP_FEATURE_CHECKING set. In this mode the file
+	net-snmp/feature-details.h is requiered. That file is created
+	during the first make run, and that happens after configure is run.
+	Change this to undefine NETSNMP_MINIMAL_CODE, effectively turning
+	off feature support during transport configuration in order to make
+	it work at all.
+      - Run libtool --mode=finish on the right directory
+
+    libnetsnmp:
+      - PATCH 3394586: from rwa-co: file descriptor leak in read_config
+	(+fix) Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+    libsnmp:
+      - Changed the type of the fourth argument of netsnmp_set_row_column()
+	from const char* to const void* such that no cast is necessary when
+	passing another datatype then char* or const char*.
 
     man:
-      - [BUG 3190725]: Document snmp{,_sess}synch_response and snmp_async_send
-      - clean up manual pages (from Debian patch 56_manpage)
+      - [BUG 3490708]: Clarify use of common command-line options
+      - BUG: 3535269: Document use of [snmp] for client-side tools.
+
+    pass:
+
+    perl:
+      - Add agent::uptime()
+      - Enable sending SNMPv2 traps with an empty varbind list
+      - Fix spelling in the documentation of the SNMP module
+      - Fixed segmentation fault when handler registration fails. When
+	netsnmp_register_handler fails, it frees its reginfo ->
+	nsahr_DESTROY (and any other function) must not dereference it.
+      - Perl: Make sure that the constant SNMP_DEFAULT_RETRIES is
+	recognized. SNMP module: Add constants
+	NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE and
+	NETSNMP_CALLBACK_OP_TIMED_OUT. When the Net-SNMP Perl modules are
+	built on Windows with MSVC or MinGW it is possible that each these
+	are linked with another version of the MSVC runtime library than
+	the Perl interpreter itself. In that case the "errno" variable used
+	inside .xs source files is another variable than the $! variable in
+	.pm files. Or: assignments to "errno" in a .xs file do not modify
+	the "$!" Perl variable This patch avoids using "errno" by modifying
+	the different constant() functions such that these return a
+	two-element array instead of returning a scalar and setting errno.
+
+    python:
+      - Avoid that an SNMP set with UseEnums enabled causes a segmentation
+	fault
+      - [PATCH 3433846]: Fix for use with python 2.4
+      - BUG: 3535967: Fix memory leak - snmp_{sess_}error allocates the
+	output buffer
+
+    testing:
+      - Add a test for se_store_list()
+      - Add testing/fulltests/default/T154dismanpingmib_simple
+      - Avoid false negative for T114agentxagentxtrap_simple caused by the
+	test result being present in the hex dump ("mostly_harmless")
+      - Convert snmplib/test_binary_array.c into two unit tests
+      - Fix Perl regression test failures All Perl regression tests pass
+	now on Linux and on Windows (MSVC).
+      - Make the asn1 test pass even if support for opaque types are
+	removed.
+      - Perl regression tests: Don't fail skipped tests.
+      - Protect the use of $OSTYPE to ensure that 'test' get enough
+	parameters.
+      - Remove an incorrect comment from simple_eval_tools.sh
+      - Remove unused variable
+      - Require a semicolon after OK(), OKF() and PLAN() Also, let OKF()
+	emit a single line of output such that all output it produces is
+	visible in the output of "make test".
+      - [BUG 3474590]: Don't match underscores within the source root
+	filename
+      - Add test cases for snmp_service
+
+    unspecified:
+      - Added CVFS (CentraVision File System) to hrStorageTable and
+	hrFSTable.
+      - Removed counter-64 error messages.   These messages do not say
+	enything useful, caller should check their return value and report
+	it.
+      - Added OCFS2 (Oracle Cluster FS) to hrStorageTable and hrFSTable
+      - [BUG 3444939]: BUG: 1796886: snmplib: Avoid that
+	sprint_realloc_octet_string() embeds unprintable control characters
+	or binary zeroes in its output. This behavior could cause truncated
+	output in snmptrapd.
+      - [BUG 3452069]: Fix snmptrap_oid declaration in mib2c generated code
+	This bug was introduced considerable time ago. It did already exist
+	at the time the 5.6 branch was created (see also commit
+	0ec088afa27cfda4e6ea78aae7cfc5507564edde).
+      - [BUG 3454168]: configure: Fix building with --enable-read-only
+      - [PATCH 3418649]: HOST-RESOURCES-MIB: Use pclose() instead of
+	fclose() to close a pipe.
+      - [BUG 3540621]: dist: Add missing Provides: to net-snmp-perlmods RPM
+	spec
+
+    BSD:
+
+    Bug 3152841:
+      - Do not install the util_funcs subheaders that were removed in 5.7
+      - Install util_funcs subheaders
+      - Install util_funcs subheaders introduced in 5.6
+
+    Cygwin:
+      - Make date_n_time() produce time zone information
+
+    Cywin:
+      - Agent: Implement get_uptime() such that querying
+	HOST-RESOURCES-MIB::hrSystemUptime returns a non-zero value.
+
+    FreeBSD:
+      - Restore IP_RECVDSTADDR functionality.
+      - Snmpd + apps: Sending UDP packets works again for non-root users
+      - [PATCH 3489387]: Install FreeBSD 10 header file (plus other missing
+	versions)
+
+    Linux:
+      - PATCH: 3525998: Don't use an uninitialised value in error message
+      - [PATCH 3536420]: Ensure snd/rcv memory buffers are suitably aligned
+	Patch provided by Tyler Olmstead
+
+    MinGW:
+      - Net-SNMP Perl modules build again.
+      - Support the directory structure of recent Shining Light OpenSSL
+	binary distributions
+      - Testing: Fix a race condition in the test framework
+      - Testing: Fix a race condition in the test runner
+      - Testing: Make test T130snmpv1vacmget_simple pass
+      - Testing: Make those regression tests pass for which SNMPCONFPATH
+	and/or SNMP_PERSISTENT_DIR matter
+      - Testing: Make unit-tests/T014gethostbyaddr_clib pass
+      - Testing: Make unit-tests/T102pdu_build_clib pass.
+      - Testing: Obtain the MSYS path from the environment
+
+    Win32:
+      - Avoid that compiling the header file <net-snmp/net-snmp-config.h>
+	with the MinGW gcc compiler triggers warnings about "pragma
+	comment".
+      - Avoid that the PACKAGE_* macros defined in
+	<net-snmp/net-snmp-config.h> cause trouble when including this
+	header in a package that uses the GNU autotools.
+      - Building: Builds now correctly with a 64-bit compiler. git-svn-id:
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@1
+	9458 06827809-a52a-0410-b366-d66718629ded
+      - Snmpd: Remove dlmod
+
+    Windows:
+      - Building (build.bat): Install netsnmp.dll before running the Perl
+	regression tests such that the regression tests are run with the
+	correct version of netsnmp.dll.
+      - MSVC: Avoid that the typedefs in <net-snmp/net-snmp-config.h>
+	conflict with those in <stdint.h> from the msinttypes project
+      - MSVC: Link with proper libeay32 library
+      - MSVC: When linking with OpenSSL, link with user32.lib too
+      - Make netsnmp_large_fd_set_resize() robust against memory allocation
+	failures. Make NETSNMP_LARGE_FD_ZERO() use memset() on Unix systems
+	instead of an explicit loop. Make sure that on Unix systems
+	netsnmp_large_fd_clr() doesn't try to read memory it isn't allowed
+	to read if the first argument equals -1 (a value that shouldn't be
+	passed by the caller). Make netsnmp_large_fd_is_set() return false
+	on Unix systems if the first argument equals -1 (a value that
+	shouldn't be passed by the caller). Make
+	netsnmp_large_fd_set_resize() shrink behavior correct.
+      - Perl (build.bat): When installing development files, install the
+	PDB files too.
+      - Remove superfluous link libraries from project files (*.dsp)
+      - Snmptrapd: Make the IP address to hostname conversion work
+      - Testing: perl: Fix an incorrect message printed while running the
+	Perl module regression tests
+
+
+
+
+*5.7.1*
+
+    snmplib:
+      - Fix a crash that could be
+      - tweak patch 3044888 to restore
+
+    snmpd:
+      - [PATCH 3386633]: fix integer overflow in disk percent calculations
+      - Make
+      - Restore storage tables on Linux
+      - run signal handlers when select()
+
+    snmptrapd:
+      - Add missing newline
+      - Invoke shutdown_perl() when
+
+    building:
+      - [PATCH 3383951]: Fix -Wunused compile warnings with FreeBSD/NetBSD
+	Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+      - build fix
+      - build fix for systems lacking
+
+    libnetsnmp:
+      - [PATCH 3387139]: from
+
+    man:
+      - [PATCH 3312861]: Man pages
+
+    testing:
+      - Changed
+      - Check PID file existence after having read it instead of before.
+	This fixes the race condition where the PID file disappeared after
+	the existence check and before it was read.
+      - Make the SNMP_VERBOSE=1 output even more verbose.
+
+    unspecified:
+      - minor NEWS polish
+
+    Perl:
+      - Remove file perl/NetSNMP.xs
+
+    Win32:
+      - Add support for
+      - Document how to build 64-bit
+      - Documented how to use build.bat with
+      - winExtDLL: Invoke
+
+    Windows:
+      - Avoid that if
+      - Remove outdated instructions about
+
+*5.7*
+    snmplib:
+      - Added function netsnmp_delete_table_data_set().
+      - Added function netsnmp_delete_table_data_set(). Added declaration
+	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().
+      - Added function netsnmp_delete_table_data_set(). Added declaration
+	for the function netsnmp_table_data_delete_table() in a public
+	agent header file. Fixed memory leak in
+	netsnmp_table_data_delete_table(). Fixed memory leak triggered by
+	unregistering a table handler.
+      - Added macro netsnmp_static_assert().
+      - Added netsnmp_mib_handler.data_clone, a function pointer that
+	defines how to clone netsnmp_mib_handler.myvoid. Must be defined if
+	and only if data_free is set. The function netsnmp_handler_dup()
+	does now clone MIB handler private data if data_clone() is set.
+	Previously after duplicating a MIB handler and unregistering one of
+	the two MIB handlers, the private data pointer (myvoid) of the
+	other became a dangling pointer. Note: addition of
+	netsnmp_mib_handler.data_clone is an ABI change.
+      - Added snmp_sess_session_lookup().
+      - Added the function netsnmp_check_definedness(), which helps to find
+	the cause of undefined value errors as reported by Valgrind.
+      - Avoid that Valgrind complains about uninitialized data for the
+	buffers returned by netsnmp_callback_recv() and
+	netsnmp_callback_hook_build().
+      - Be const correct over calls to str* functions.
+      - Changed the argument type of debug_register_tokens() from char *
+	into const char *.
+      - Check that the argument to netsnmp_transport_copy is non-NULL
+      - Check the return value of strdup in netsnmp_create_data_list and
+	fail if strdup fails.
+      - Correct the extern "C" declarations to be consistent. Remove
+	commented out code.
+      - Fenner: fix sending of UDP responses from multihomed agents. Try to
+	send the response as it was before Net-SNMP 5.6 (assuming the
+	appropriate request was unicast) and only if it fails try to set
+	if_index (the request must be broadcast).
+      - Fixed bugs in asn_parse_unsigned_int64(),
+	asn_build_unsigned_int64(), asn_parse_signed_int64() and
+	asn_build_signed_int64(). Most but not all of these bugs were
+	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.
+      - Remove the support for CMU compatibility since there is no way to
+	enable it and nobody have missed it.
+      - [BUG 3134323]: Fix crash when comparing invalid OIDs
+      - [PATCH 3165878]: Catch buffer overrun on 64-bit systems
+      - [PATCH 3195537]: Minor binary_array container sort optimization
+      - [PATCH 3203806]: Add the function netsnmp_large_select().
+      - [PATCH 3203806]: Make netsnmp_large_fd_set_resize() clear all
+	relevant file descriptors.
+      - [PATCH 3203806]: Minor performance optimization of
+	netsnmp_large_fd_set_resize().
+      - add IPv6 support to DTLSUDP transport
+      - add IPv6 support to DTLSUDP transport use new
+	netsnmp_sockaddr_storage in netsnmp_addr_pair
+      - add IPv6 support to DTLSUDP transport use new
+	netsnmp_sockaddr_storage in netsnmp_addr_pair add base_transport
+	ptr for tunneled transports
+      - add more openssl error cases where we check for local cert
+      - add new transport config tokens localCert/peerCert, deprecate
+	our_identity, their_identity
+      - add optional support for local DNSSEC validation of hostnames	-
+	optional at configure time: --with-local-dnssec-validation -
+	requires DNSSEC-Tool validation libraries - initial support, for
+	systems with getaddrinfo. support for additional resolver
+	interfaces coming soon. - also TODO: flag for ignoring validatoin
+	errors (log & continue)
+      - dont return empty array
+      - force a ; at the end of the static_assert macro.
+      - introduce new localCert/peerCert, deprecate serverCert, clientCert,
+	defX509ServerPub, defX509ClientPub
+      - netsnmp_handler_dup(): freeing the duplicated handler no longer
+	causes a crash (double free) when handler->myvoid of the original
+	handler was non-NULL.
+      - realloc+init instead of calloc inspired by patch 3195532 from
+	Stephen Hemminger
+      - refine cert debugging; remove unused function
+      - remove inline versions of container funcs
+      - snmp_shutdown(): added call to netsnmp_certs_shutdown().
+      - 0 Applied the intent of patch 3044888 to allow applications to read
+	the error messages of a MIB parsing failure.
+      - Fixed a memory leak in snmp_free_session().
+      - [BUG 3184697]: Don't reference internal MD5 when it's explicitly
+	disabled
+      - [BUG 3234754]: Ensure old f_create_from_tstring hook is initialized
+	to NULL
+      - [BUG 3264852]: Recognise missing report types
+	(snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers)
+      - _mibindex_add() no longer reads past the end of the dynamically
+	allocated array _mibindexes.
+      - [BUG 3151845]: fix multiple registrations of snmp transport handler
+
+    snmp:
+      - patch: 3096725: sysORTable registation for notification log mib
+	original patch fixed several issues, other parts applied earlier
+
+    snmpd:
+      - Add missing function declaration
+      - Added functions netsnmp_handler_owns_tabreq(),
+	netsnmp_registration_owns_tabreq(), netsnmp_iterator_clone().
+	Exported netsnmp_table_registration_info_clone().
+      - Added functions netsnmp_handler_owns_tabreq(),
+	netsnmp_registration_owns_tabreq(), netsnmp_iterator_clone().
+	Exported netsnmp_table_registration_info_clone(). Modified
+	netsnmp_iterator_delete_table() such that it frees the table
+	registration information stored in a table iterator too. Modified
+	netsnmp_get_table_iterator_handler() such that the table iterator
+	passed to this function is freed when the associated handler is
+	freed. Restored the behavior of netsnmp_get_table_handler() to that
+	of r19449, that is, not setting up the data_free pointer because
+	not all callers of netsnmp_get_table_handler() expect that table
+	registration information is freed when the associated handler is
+	freed.
+      - Added netsnmp_get_table_iterator2().
+      - Added netsnmp_get_table_iterator2(). Added
+	netsnmp_register_table_iterator2().
+      - Added netsnmp_get_table_iterator2(). Added
+	netsnmp_register_table_iterator2(). Added
+	netsnmp_handler_owns_iterator_info().
+      - Added netsnmp_get_table_iterator2(). Added
+	netsnmp_register_table_iterator2(). Added
+	netsnmp_handler_owns_iterator_info(). Fixed leak-at-exit triggered
+	by snmpNotifyTable.
+      - Added netsnmp_get_table_iterator2(). Added
+	netsnmp_register_table_iterator2(). Added
+	netsnmp_handler_owns_iterator_info(). Fixed leak-at-exit triggered
+	by snmpNotifyTable. Fixed leak-at-exit triggered by
+	snmpTargetAddrTable. Also, restored backwards compatibility of
+	netsnmp_register_table_iterator().
+      - Added netsnmp_register_watched_instance2(),
+	netsnmp_register_watched_scalar2(), netsnmp_clone_watcher_info()
+	and netsnmp_owns_watcher_info(). See also the Doxygen comments for
+	more info.
+      - Added netsnmp_unregister_auto_data_table().
+      - Added reference count in the netsnmp_baby_steps_modes data
+	structure and made sure that this data structure is automatically
+	freed when the handler that owns it is unregistered.
+      - Added snmp_sess_session_lookup(). Call shutdown_master_agent() and
+	shutdown_agent() during shutdown.
+      - Added snmp_sess_session_lookup(). Call shutdown_master_agent() and
+	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().
+      - Added the functions netsnmp_duplicate_variable() and
+	netsnmp_cache_handler_owns_cache().
+      - Added the functions netsnmp_duplicate_variable() and
+	netsnmp_cache_handler_owns_cache(). Memory allocated by
+	netsnmp_register_old_api() for storing SNMP variables is now freed
+	when the associated handler is unregistered.
+      - Added the functions netsnmp_duplicate_variable() and
+	netsnmp_cache_handler_owns_cache(). Memory allocated by
+	netsnmp_register_old_api() for storing SNMP variables is now freed
+	when the associated handler is unregistered. Callback function data
+	deallocation does no longer free the memory allocated for the
+	AgentX session - the memory that was allocated for AgentX sessions
+	is now deallocated just as that for any other session. This fixes a
+	leak-at-exit.
+      - Added the functions netsnmp_duplicate_variable() and
+	netsnmp_cache_handler_owns_cache(). Memory allocated by
+	netsnmp_register_old_api() for storing SNMP variables is now freed
+	when the associated handler is unregistered. Callback function data
+	deallocation does no longer free the memory allocated for the
+	AgentX session - the memory that was allocated for AgentX sessions
+	is now deallocated just as that for any other session. This fixes a
+	leak-at-exit. Notify filter table: Callback function data
+	deallocation does no longer free the data in *	  
+	*snmpNotifyFilterTable_if_ctx.container - this is now done by  
+	shutdown_snmpNotifyFilterTable() and
+      - Automatically free the private data structure allocated by
+	netsnmp_container_table_handler_get().
+      - Builds with most recent MinGW (having #define localtime_r).
+      - Count the number of users of a netsnmp_cache data structure instead
+	of duplicating it.
+      - Declare the OID argument type of MIB registration functions as
+	'const oid *' instead of 'oid *' since these functions do not
+	modify the OID.
+      - Do not leak the limits of scalar_group objects on shutdown.
+      - Extend the documentation for data_clone and data_free
+      - Factor out common config_add_mib statments
+      - Find out whether librpm is available before configuring the agent
+	modules because host/data/access/swinst needs symbol HAVE_LIBRPM.
+	As a result, configure has to be run only once instead of twice to
+	enable the hrSWInstalled table on systems that have librpm.
+      - Fixed a double free at exit that was triggered by cleaning up the
+	data structures used for embedded Perl support.
+      - Fixed a year-2038 bug in the implementation of ipRouteTable.
+      - Introduced netsnmp_pid_t.
+      - MIB-specific leak-at-exit fixes.
+      - Make it possible to copy watched data items without memory leaks.
+      - Make the setting of the argvrestart* variables optional on
+	USING_UTIL_FUNCS_RESTART_MODULE.
+      - Make the setting of the argvrestart* variables optional on
+	USING_UTIL_FUNCS_RESTART_MODULE. Remove util_funcs/restart from the
+	requirement sets of util_funcs and default_modules.
+      - Make the setting of the argvrestart* variables optional on
+	USING_UTIL_FUNCS_RESTART_MODULE. Remove util_funcs/restart from the
+	requirement sets of util_funcs and default_modules. Add
+	util_funcs/restart to the requirement set of ucd-snmp/versioninfo.
+      - Patch 3141462: from fenner: fix agentx subagent issues with
+	multiple-object requests
+      - Patch from Niels to fix VACM persistant storage.
+      - Remove unused variable cmp
+      - Remove util_funcs/Exit from the requirement sets of util_funcs and
+	default_modules.
+      - Remove util_funcs/Exit from the requirement sets of util_funcs and
+	default_modules. Never use Exit to terminate the agent.
+      - Removing the last cache via netsnmp_cache_remove() does no longer
+	trigger a crash.
+      - Update the length of sysObjectID as well as the data when it is set
+	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 3205765]: handle reconfig for certSecName token
+      - [BUG ]: enforce max length on TLS secName maps
+      - [BUG ]: enforce max length on TLS secName maps add priority to
+	secname debugging
+      - [PATCH 2119725]: Fix skipNFSInHostResources handling of
+	hrStorageTable
+      - [PATCH 2941811]: Handle successful requests with reqID 0
+      - [PATCH 2975254]: Avoid callback re-use of closed sessions Qn:
+	Should this also be applied when main session is NULL?
+      - [PATCH 3053436]: from: takevos: fix: tcpConnectionTable_data_access
+	invalid memory access
+      - [PATCH 3057090]: make ethtool support on linux use the high speed
+	struct info for 100G+.
+      - [PATCH 3057093]: allow linux to use libpci for creating useful
+	ifDescr strings
+      - [PATCH 3096725]: Don't register v1Trap callback, if SNMPv1 is not
+	supported
+      - [PATCH 3096725]: Include SNMPv1 trap OIDs in nlmLogNotificationID
+	column
+      - [PATCH 312596]: listen for netlink change events for the
+	arp-related tables
+      - [PATCH 3152412]: Handle (and report) problems reading /proc/vmstat
+      - [PATCH 3203806]: Avoid that the main agent processing loop - when
+	using more than FD_SETSIZE file descriptors - can cause memory
+	corruption by invoking select().
+      - [PATCH ]: optimizations for large route tables from Stephen
+	Hemminger applied parts 1-3 of 4 from him (msgs to coders on
+	2/28/11; subject ip-forward-mib performance improvements; part 4
+	needs more work
+      - add debug for cert find hint as string/int
+      - add newly created/destroyed interfaces to ipv6IfTable The list of
+	interfaces was never refreshed, now it is reloaded every time the
+	table is accessed. I've also fixed a memory leak and optimized the
+	loading of the list a bit.
+      - com2sec6 directive: If configure has not found getaddrinfo(),
+	non-numeric IPv6 addresses do now trigger an error message.
+      - don't second-guess cache handler (waves hand) this is not the
+	function you are looking for. netsnmp_cache_is_valid() is not meant
+	for mib modules
+      - example MIB: Added shutdown function that frees all memory owned by
+	this MIB implementation.
+      - fix double free in TLS error handling
+      - fixed the agent writing 'looks like a 64bit wrap, but prev!=new' in
+	syslog when computing ipSystemStats Without the memcpy,
+	prev_vals->stats and new_vals->stats could get different, which
+	could much much later (when a counter gets bigger than 32 bits)
+	result in 'prev!=new' message in syslog. Typically this happens
+	after long time of uptime and it is very hard to reproduce.
+      - host/data_access/swinst_rpm: Fixed a memory leak in
+	netsnm_swinst_arch_init().
+      - host/data_access/swinst_rpm: Pass correct path to rpmdbOpen() such
+	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.
+      - reworked hrStorageTable to support large filesystems. The
+	hrStorageAllocationUnits does not report real allocation unit size,
+	but some calculated value so hrStorageAllocationUnits *
+	hrStorageSize gives real size of the filesystem. This calculation
+	happens only when hrStorageSize is too small (32bits) for
+	filesystem size, e.g. filesystems larger than 8TB with 4096 bytes
+	block size. This calculation can be turned off by
+	'realStorageUnits' config option.
+      - skip non-AF_INET interfaces when loading ipv4 addrs
+      - snmpd is again single-threaded. [PATCH 2959811]: Safranek:
+	Reimplement Linux Netlink IPv6 prefix listener.
+      - Fixed memory leak in TCP-MIB tables introduced by patch #3053436.
+      - Fixed memory leak in TCP-MIB tables introduced by patch #3053436."
+	[PATCH 3053436]: from: takevos: fix: tcpConnectionTable_data_access
+	invalid memory access" the bug 3053436 is fixing was introduced in
+	r17719, and fixed in r17861.
+      - Use proper format specifier in debug statements for printing values
+	of type 'oid'.
+      - [PATCH 3066862]: fix the agent for comparing unsigned large indexes
+	of the disk and extend tables.
+      - fixed hrSWRunPath of swapped-out processes on Linux.   fgets()
+	returns NULL both when /proc/PID/cmdline is empty (= swapped out)
+	and when the process exited after fopen(), so check
+	/proc/PID/status in both cases.
+      - fixed race condition in hrSWRunTable Treat the reads from
+	/proc/<pid>/* carefuly, processes can exit in the middle of
+	processing. (already fixed in V5-5-patches and V5-4-patches in SVN
+	rev. 20115, dunno why I did not patch trunk)
+      - patch 3131397: from takevos: huge speedups of the TCP/UDP Tables
+      - patch 3299384: fix INFORMs so they retry probing for an engineID.
+      - patch 3306476: from tinypyramids: fix memory leak in the swrun
+	container loading
+      - ucd_snmp builds again on MinGW and Cygwin.
+      - patch 3310250: from fenner: misc fixes for debugging output of
+	agentx
+
+    snmptrapd:
+      - Fixed a double free at exit that was triggered by cleaning up the
+	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)
+
+    apps:
+      - [PATCH 3054817]: Adds per-variable timed output support to snmpwalk
+	using -CT
+      - add snmp.conf tokens for timeouts and retries
+
+    build:
+      - [BUG 3088360]: Ensure python modules are built against the correct
+	libraries
+
+    building:
+      - Fix --with-security-modules handling Allow repeated modules
+	(tsm,tsm) as well as defailt modules (usm) Move the generation of
+	the files after the checking
+      - Make it possible to regenerate using autoconf 2.68.
+      - Some systems do not support the -E flag to grep, use autoconf to
+	find the right egrep at all times.
+      - check for /dev/kmem instead of assuming it exists and hardcoding
+	when it is not there
+
+    libnetsnmp:
+      - made the SSH transport configurable as it should be.
+
+    libnetsnmpmibs:
+      - Make all functions in the dlmod module that don't have to be public
+	static
 
     mib2c:
       - [PATCH 3175323]: Fix handling of 'while (false)' blocks
       - [PATCH 3204883]: Fix handling of non-table objects named fooTable
       - [PATCH 3211484]: Support enumerations in notification varbinds
-      - Make the mib2c foreach ranges work as advertised
+      - make the mib2c foreach ranges work as advertised in the comments.
 
-    mibs:
-      - [PATCH 2974716]: Fix issues in the SMUX-MIB
+    packaging:
+      - Enable micro-and-macro-feature management within Net-SNMP; this
+	adds a number of new flags to configure (--enable-minimalist and
+	--enable-read-only). These changes are designed to remove much of
+	the inline code that isn't always necessary or desired. Scripts
+	exist (and will be improved) to stip out unused components from the
+	code entirely to enable a shorter review process for upgrading to
+	new releases. This work was done by Wes Hardaker and Michael Baer
+	from SPARTA, Inc. but is being checked in as a large patch since
+	converting the micro patches from git to svn turend out to be
+	impossible
+
+    patch 3140833:
+      - fix proxy GETNEXT requests When OIDs requested are below the proxy
+	request remap, we need to not include any OIDs that might be in the
+	space between the original OID and the remapped OID. This patch
+	fudges the request so that it fixes the request OID so it's just
+	before the remapped proxy range.
+
+    patch 3184026:
+      - Avoid constant refresh of interface statistics
 
     perl:
-      - [PATCH 3046371]: Fix memory leak in SNMPv1 trap handling
-      - [PATCH 3049029]: Fix a memory leak with snmp bulkwalks
-      - Don't always open stderr as the calls to snmp_log already do this
-           and it messes up the agent when embedded
-      - Handle embedded %'s in the result message.
+      - patch 3049029: from fennec: fix a memory leak with snmp bulkwalks
+      - patch from Martin Buck: don't always open stderr as the calls to
+	snmp_log already do this and it messes up the agent when embedded
 
     python:
-      - [BUG 3088360]: Ensure modules are built against the correct libraries
-      - [BUG 3295407]: Fix handling of void pointer
-      - [PATCH 3035328]: Check for failures in creating a session
-      - [PATCH 3035578]: Keep error codes up to date
       - [PATCH 3185085]: Fix segfault on 64-bit systems
+      - [BUG 3295407]: Fix handling of void pointer
 
     testing:
-      - Support dynamic analysis of regression tests
+      - Add missing preconditions
+      - Added function netsnmp_delete_table_data_set(). Added declaration
+	for the function netsnmp_table_data_delete_table() in a public
+	agent header file. Fixed memory leak in
+	netsnmp_table_data_delete_table(). Fixed memory leak triggered by
+	unregistering a table handler. Unit tests can now invoke functions
+	from libagent.
+      - Added function netsnmp_delete_table_data_set(). Added declaration
+	for the function netsnmp_table_data_delete_table() in a public
+	agent header file. Fixed memory leak in
+	netsnmp_table_data_delete_table(). Fixed memory leak triggered by
+	unregistering a table handler. Unit tests can now invoke functions
+	from libagent. Added unit test for table_dataset.
+      - Added inet_ntop() and inet_pton() unit test.
+      - Added netsnmp_mib_handler.data_clone, a function pointer that
+	defines how to clone netsnmp_mib_handler.myvoid. Must be defined if
+	and only if data_free is set. The function netsnmp_handler_dup()
+	does now clone MIB handler private data if data_clone() is set.
+	Previously after duplicating a MIB handler and unregistering one of
+	the two MIB handlers, the private data pointer (myvoid) of the
+	other became a dangling pointer. Note: addition of
+	netsnmp_mib_handler.data_clone is an ABI change. added more test
+	cases to the handler registration test.
+      - Generate a normal #line directive as per C99 instead of the
+	compiler-specific #<n>-directive.
+      - Introduced new test type next to capp and clib: cagentlib.
+      - 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.
+      - Test T030 does now pass on MinGW.
+      - auto-create user specified SNMP_TMPDIR and SNMP_TMP_PERSISTENTDIR
+	too; default SNMP_TMP_PERSISTENDIR based on SNMP_TMPDIR for user
+	specified SNMP_TMPDIR
+
+    man:
+      - [BUG 3190725]: Document snmp{,_sess}synch_response and
+	snmp_async_send
+
+    Generic:
+      - Make it possible to build static applications using net-snmp-config
+	and the -*libs flags once more.
+      - [BUG 3102904]: All Net-SNMP C source files are now compiled with
+	-fno-st rict-aliasing, at least if the configured compiler supports
+	this flag.
+      - [PATCH 3074918]: from weizheng: check for CONTAINER_INSERT failures
+	and react appropriately to avoid memory leaks
+      - [PATCH 3167325]: from krisztoforo: UCD-SNMP/SystemStats: add
+	variables to report cpusteal, cpuguest, cpuguestnice
+
+    Cygwin:
 
     Linux:
-      - [PATCH 3074918]: check for CONTAINER_INSERT failures
       - [PATCH 3083027]: Fix RPM spec file to support CentOS
-      - [PATCH 3152412]: Handle (and report) problems reading /proc/vmstat
-      - Fix a strlen calculation in IF-MIB support
-      - Fixed hrSWRunPath of swapped-out processes
-      - Fixed value of IP-MIB::ipv6InterfaceForwarding
-
-    NetBSD:
-      - DragonFly support
-      - Retrieve MIB-II network statistics via sysctl
-      - Update memory and CPU statistics handling
-
-    OpenBSD:
-      - Support updating the routing table [From OpenBSD patch archive]
-
-    Win32:
-      - [PATCH 3293842]: Eliminate registry argument limit of 127 characters
-      - Avoid MSVC warning about redefining EADDRINUSE
-      - Fix out-of-range array accesses errors in mibII interfaces table
-      - Fix test T030 on MinGW.
-      - Fix test T200 failures on known Microsoft SNMP extension DLL bugs
-      - Fixed memory leak in the internal (non-winExtDLL) ipNetToMediaTable
-      - Halt snmpd process on key press when run from a command prompt
-          (To aid debugging snmpd.exe)
+      - [PATCH 3205811]: Option to skip fd/loop/ram devices in diskIOTable
+      - agent: ipNetToPhysicalTable: Do not log an error message if one or
+	more interfaces are present that do not have such information
+	(NUD_NOARP), e.g. tunnels. Reported by Stephen Hemminger. See also
+	patch #3107003.
+      - snmpd is again single-threaded.
 
     MinGW:
-      - Make regression tests independent of registry settings
-      - Use <net-snmp/net-snmp-config.h> header file under WinGW
+      - Made regression test output independent of the Net-SNMP variables
+	defined in the Windows registry. Some tests that failed previously
+	after the Net-SNMP binaries (MSVC build) had been installed do now
+	pass.
+      - configure: Detection of the functions gai_strerror(),
+	getaddrinfo(), gethostbyname() and gethostname() does now succeed.
+      - testing: If the agent has been asked to stop, wait until the snmpd
+	process disappeared before proceeding.
+      - Tests 025 and 026 pass on MinGW even if winExtDLL has been enabled.
 
-      
-* 5.4.3 *
+    NetBSD:
+      - DragonFly support [From NetBSD patch archive]
+
+    OpenBSD:
+      - Update SWRun code to use kvm_getproc2 [From OpenBSD patch archive]
+
+    Win32:
+      - Avoid that MSVC reports a warning message about redefinition of the
+	malloc() macro during building the Net-SNMP source code.
+      - Deprecated libsnmp.def - add NETSNMP_IMPORT to function
+	declarations instead to export a function from netsnmp.dll.
+      - Guard netsnmp_udp_recvfrom() etc. declarations consistently. Builds
+	with Visual Studio 2010.
+      - Introduced netsnmp_pid_t. Eliminated casts between int and HANDLE
+	in agent/mibgroup/util_funcs.c and
+	agent/mibgroup/ucd-snmp/pass_persist.c.
+      - When snmpd.exe is started in a command prompt window, the snmpd
+	process now stops upon the first key press. This makes it easier to
+	debug snmpd.exe for memory leaks.
+      - [PATCH 3085187]: Building via the Microsoft Visual Studio project
+	file (.dsw/.dsp) works again.
+      - [PATCH 3293842]: Eliminate registry argument limit of 127
+	characters (this limitation was reported by Sylvain Dery).
+      - building: Avoid that MSVC 2010 prints a warning message about
+	redefining EADDRINUSE.
+      - building: Builds now correctly with a 64-bit compiler.
+      - building: batch build with OpenSSL enabled and with recent OpenSSL
+	development files works again.
+      - header file <net-snmp/net-snmp-config.h> can now be used in the
+	MinGW environment.
+      - testing: Avoid that T200 fails on known Microsoft SNMP extension
+	DLL bugs.
+      - Build snmplib/transports/snmpIPv6BaseDomain.c only if
+	NETSNMP_ENABLE_IPV6 has been defined.
+      - Fixed a memory leak in the Net-SNMP (non-winExtDLL) implementation
+	of the MIB-II ipNetToMediaTable.
+      - Microsoft Visual Studio: Link with gdi32.lib if OpenSSL has been
+	enabled because gdi32.lib is a dependency of OpenSSL.
+
+*5.6*
 
     snmplib:
-      - [BUG 2838243]: Correct the output of unsigned values.
-      - [BUG 2919320]: Avoid accessing freed memory
+      - 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 2043018]: fix recvfrom hangs
-      - [PATCH 2258229]: Remove misleading comment
-      - [PATCH 2479700]: Fix zoned IP address used as table indices
-      - [PATCH 2492377]: Fix typo/bug in snmp_enable_callback()
-      - [PATCH 2505488]: Fix alarm behaviour on large clock skews
-      - [PATCH 2538169]: Prevent infinite retries for invalid error-index
-      - [PATCH 2688345]: Fix netsnmp_assert() for Visual Studio
-      - [PATCH 2689362]: Fix handling of IPv6 hostnames
-      - [PATCH 2713841]: Fix runtime errors triggered by high-ASCII chars
-      - [PATCH 2780411]: Fix compiler warnings
-      - [PATCH 2797251]: Fix memory leaks
-      - [PATCH 2871747]: Fix memory leak in OID processing
-      - [PATCH 2952140]: Overflow counter32 and gauge32
-      - [PATCH 2952034]: Return of the Great SuSE 'sprintf' Hunt
-      - Change the parsing of ranges to accept all valid values
-      - Ensure O_CREATE mask is always specified
-      - Fix extern "C" wrapping
-      - Make -LN stop dumping core.
-      - Make bad debug levels report the offending symbol
-      - Remove inline declarations for non-inline defined functions
+      - [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:
-      - [BUG 1693039]: Be silent when insert fails.
+      - 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.
+      - [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 2914410]: Fix crash on empty command lines
-      - [BUG 2924140]: Fix termination of CPU/FPU types
-      - [PATCH 1257347]: Non-fixed size connection buffer
-      - [PATCH 1550730]: Report errors from iterator-based handlers
-      - [PATCH 1977439]: Fix pass/_persist bug with SET oid value
-      - [PATCH 2012402]: Handle failure to look up interface error counters
-      - [PATCH 2082726]: correctly report NIC speeds higher than 4Gbit/s
-      - [PATCH 2124288]: Fix setting of usmUserPrivProtocol at creation
-      - [PATCH 2162652]: Fix simple hrfs checks when NFS is in use
-      - [PATCH 2384779]: Fix handling of GetBulk with N>0,M==0
-      - [PATCH 2686280]: Report duplicate registrations as an error
-      - [PATCH 2693670]: Don't open AgentX sockets if other transports fail
-      - [PATCH 2791417]: Fix snmpd segfault when run with -DALL
-      - [PATCH 2797251]: Support multiple initialisation and shutdown
-      - [PATCH 2822337]: Fix memory leak in ipAddressPrefixTable
+      - [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 2883155]: Fix memory leak in proxy handling.
+      - [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()
-      - [PATCH 2911323]: Fix agent lockup when monitoring AgentX-delegated information
-      - [PATCH 2912584]: Fix null OID handling in Agentx on 64bit
-      - [PATCH 2950845]: Fix ifHighSpeed calculation
-      - [PATCH 2952034]: Return of the Great SuSE 'sprintf' Hunt
-      - [PATCH 2956657]: Handle over-length AgentX OIDs
-      - [PATCH 2968642]: Catch overflow of pass-through command buffer
-      - Allow "monitor" to handle negative threshold values
-      - Change default AgentX target from 0.0.0.0:705 to localhost:705
-      - Clean up notification
-      - Ensure O_CREATE mask is always specified
-      - Fix agent crash when sending encrypted SNMPv3 traps
-      - Fix CVE-2008-4309 (GETBULK issue reported by Oscar Mira-Sanchez)
-      - Fix creation of views using snmpusm
-      - Fix handling of multiple matching VACM entries
-      - Fix invalid access to memory in TCP-MIB
-      - Fix logging of 'truncating integer values' in IP-MIB and TCP-MIB
-      - Fix memory leak when multiple interfaces have the same IPv6 address
-      - Fix possible crash when 64-bit counters exceed 2^32
-      - Fix two bugs with smux password support
-      - Fix udpTable indexes on big-endian 64bit Linux.
-      - Improve parsing of -LS command line argument
-      - Latch large-disk statistics at 2Tb (rather than wrapping)
-      - Register CPU/memory hardware modules with nsCacheTable
-      - Remove inline declarations for non-inline defined functions
-      - Report ifSpeed of down network interfaces
-      - Support large HW addresses (>6bytes)
+      - [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
 
-    snmptrapd:
-      - [PATCH 2726302]: Pass results of Perl trap handlers to trap daemon
-      - Remove glibc-specific printf-formatting tokens
+    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:
-      - [BUG 2811577]: Fix bug in GetBulk handling
-      - [PATCH 2937996]: Add Date: header to email send by traptoemail
-      - Improve parsing of -LS command line argument
+      - 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.
 
     build:
-      - [BUG 2095983]: Fix errors in find-requires helper script
-      - [BUG 2782700]: Build failure when using --with-pkcs on Solaris
-      - [PATCH 2184039]: Misc fixes for freeing memory
-      - [PATCH 2952020]: Set permission on testing directories
-      - 'make test TESTOPTS="-P tcp"' works fine now
+      - [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
 
-    docs:
-      - [PATCH 2788072]: Document 'logmatch' functionality.
-      - [PATCH 2795739]: Fix incorrect disk/file size descriptions & unit specifiers
+    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
 
     mib2c:
-      - [BUG 2827269]: Suppress non-ordered TODO comments
+      - Remove unnecessary casts to u_char*
       - [BUG 2888569]: Fix generation of table columns array
-      - [PATCH 2136437]: Improve 64-bit handling of large table FLAG defines 
-      - [PATCH 2316127]: Fix bug in iterate_access generated code.
+      - 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: from bvassche: fix issues in the SMUX-MIB
+
+    misc:
+      - [PATCH 2836112]: Use the right modifier when printing size_t and
+	ssize_t variables.
+      - [PATCH 2952708]: Osterkamp: Added Perl implementation of BRIDGE-MIB
 
     perl:
-      - [BUG 1554817]: Fix class assigment so getRootOID works properly
-      - [PATCH 2022948]: Fix for Counter64 in perl subagent
-      - [PATCH 2182079]: Fix various warnings & allow use of "use strict"
-      - [PATCH 2361712]: Fix getbulk optimization during walks
-      - [PATCH 2793857]: Report failed asynchronous requests
-      - [PATCH 2890931]: Better handling of Counter64 values.
+      - 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 2258935]: Python Extension Module fails on Solaris
-      - [BUG 2919379]: Initialise SNMP sessions properly
-      - [PATCH 2074817]: Fix regexp engine CPU performance issues
-      - [PATCH 2260828]: Fix python snmpwalk memory leak
-      - [PATCH 2580979]: Fix python session pointers on 64-bit systems
-      - [PATCH 2667415]: Support "UseNumeric" option
-      - Support null-bytes in octet strings
+      - [BUG 2919379]: Initialise SNMP sessions properly Provided by Diego
+	Billi
+      - [PATCH 2001656]: Handle null-termination of string values properly.
+	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
 
+    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
 
-    AIX:
-      - [BUG 2712670]: Agent crashes on AIX with hrStorage
+    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.
 
-    *BSD:
-      - [PATCH 2435793]: Support 64-bit IF-MIB counters on sysctl systems
-      - Fix a make test
-
-    HP-UX:
-      - [BUG 2779472]: Filesystems missing in hrStorage table (HP-UX 11.31)
-      - [PATCH 2088726]: Fix an issue reporting negative memory values
+    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.
+      - 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 2822355]: Fix memory leaks on udpEndpointTable
-      - [PATCH 2926374]: Fix /proc/net/if_inet6 reading of ipAddressTable
-      - Fix build on modern distributions (using rpm-4.6)
-      - fix rare race condition when reading RPM database
+      - Improved EtherLike-MIB support Patch supplied by Josef Moellers
+      - builds again with embedded Perl disabled (bug 2985915).
+
+    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:
-      - [PATCH 2012404]: Deal with more than 10 interfaces
-      - [PATCH 2406378]: Fix hrSWRunPerfMem on 64-bit Solaris systems
-      - [PATCH 2751588]: Inconsistent data (e.g. UDP/TCP MIB scalar values
-	of zero) can be reported on Solaris 10U4+
-      - Protect against missing package version
+      - 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 2997492]: byte order of udpLocalPort is now correct
-      - [BUG 2971257]: Fixed winExtDLL handling of multi-varbind getNext requests.
-      - [BUG 2779541]: Fixed handle leak in pass_persist
-      - [PATCH 2686248]: Applied patch by Bart Van Assche
-      - [PATCH 2688342]: Fix various VS2005 compiler warnings
-      - [PATCH 2691876]: Applied patch by rdiez to allow
-      - [PATCH 2693746]: improved socket startup support
-      - Detect free UDP ports correctly for use in test infrastructure.
-      - Fix batch build using recent versions of Visual Studio.
-      - Fix builds with IPv6 support enabled
-      - Fix build under MinGW
-      - Fix winExtDLL build on Windows Vista, Windows 7
-      - Fix winExtDLL build with MinGW
-      - Simplify building Net-SNMP + winExtDLL with MSVC
-      - winExtDLL: Fixed a memory leak when SnmpExtensionQuery(Ex) fails
-      - winExtDLL: Log errors when loading an extension DLL fails
-      - winExtDLL: Use RFC-compliant error codes in SNMP response PDUs
-      - winExtDLL: Fix handling of multiple varbind SET requests
+    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.4.2 *
+
+*5.5*
 
     snmplib:
-      - [BUG 1793545]: Take the name from the sockaddr_un
+      - [BUG 1171904]: fix recvfrom hangs (already closed)
+      - [BUG 1345296]: fix recvfrom hangs (already closed)
+      - [BUG 1600171]: Support longer community strings in VACM config.
+      - [BUG 1619827]: improve handling of link dependencies
+      - [BUG 1660061]: Validate engineIDs more strictly.
       - [BUG 1795840]: Signed 32-bit truncation logged as debug message
-      - [BUG 1801835]: Support multiple default transports for an app.
       - [BUG 1866655]: Handle parsing invalid OID subidentifiers
+      - [BUG 1898198]: Avoid a segfault when parsing broken mibs.
       - [BUG 1958041]: Ensure IDs are not truncated.
-      - [BUG 2027834]: Extend string print buffer by the minimum necessary
+      - [BUG 1976772]: Changed mib parser to handle long binary/hex strings.
+      - [BUG 2001124]: Allow embedded NUL characters in usmUserPublic
+      - [BUG 2027834]: Extend string print buffer by the minimum necessary.
+      - [BUG 2099985]: Added const qualifiers to time conversion routins
+      - [PATCH 2827722]: Improve strtoull to be less MSVC-specific
       - [BUG Coverity #183]: fix memory leak if IP_PKTINFO fails
+      - [PATCH  700681]: limited support for UDPv4 broadcast addresses
+      - [PATCH 1548670]: Fix range checks for unsigned integers
+                         (Debian bug #383380)
+      - [PATCH 1592706]: Fix memory leak when cloning varbinds.
+      - [PATCH 1616912]: fix memory leak in snmp_udp_transport
+      - [PATCH 1620424]: Honor NETSNMP_DS_LIB_DEFAULT_PORT over the default system
+      - [PATCH 1627049]: New API to handle large numbers of file descriptors.
+      - [PATCH 1634620]: Fix leaks from create_user_from_session failure.
+      - [PATCH 1640114]: Don't store trailing null character.
+      - [PATCH 1641895]: Extend short view masks (as per RFC specs)
+      - [PATCH 1641972]: add missing const
+      - [PATCH 1642071]: Don't fiddle with the storage of pre-existing users.
+      - [PATCH 1645698]: fix 64-bit signed integer encoding
+      - [PATCH 1653670]: Consistent SNMPv3 behaviour when opening sessions.
+      - [PATCH 1665543]: Handle VACM checks correctly.
+      - [PATCH 1681030]: Better handling of empty apptype configs.
+      - [PATCH 1681977]: Add callbacks prior to reading config.
+      - [PATCH 1687316]: Don't drop const from casts.
+      - [PATCH 1687317]: Remove an unused local variable
+      - [PATCH 1687318]: Make _sess_selpol_info static.
+      - [PATCH 1687319]: Declare snmp_sess_read_extd()
+      - [PATCH 1687325]: Fix problem with operator precedence.
+      - [PATCH 1687337]: Implement _sess_open in terms of snmp_sess_add
+      - [PATCH 1728247]: Clean up int64 type checking and usage for building packets
+      - [PATCH 1737085]: fix the -M switch for mib parsing vs defaults
       - [PATCH 1768285]: Count MIB files correctly in add_mibdir()
       - [PATCH 1775124]: Fix clientaddr functionality
       - [PATCH 1806336]: fix -LS option parsing
       - [PATCH 1807489]: fix ignoring of display hints.
       - [PATCH 1811469]: read_config_files_in_path() reads past malloc'd buffer
       - [PATCH 1875022]: improve callback locking mechanisms
+      - [PATCH 1882069]: Add token for specifying an exact SNMPv3 engineID
       - [PATCH 1895927]: change obsolete recv/send to recvfrom/sendto
-      - [PATCH 1898204], [BUF 1898198]: fix segfault when parsing broken mibs.
+      - [PATCH 1898204]: Avoid a segfault when parsing broken mibs.
+      - [PATCH 1916840]: new config option to set SNMPv1 trap agent address
+	[PATCH 1916840]: introduce netsnmp_gethostbyname_v4
       - [PATCH 1921861]: Avoid endless loop after truncating 64bit int
-      - [PATCH 2003450]: Fix a couple of 64-bit problems
-      - Change CONTAINER_INSERT to not do partial inserts in containers
-	with multiple indices when one insert fails.
+      - [PATCH 2003450]: Fix a couple of 64-bit problems.
+      - [PATCH 2043018]: fix recvfrom hangs
+      - [PATCH 2258229]: Remove misleading comment
+      - [PATCH 2479700]: Fix zoned IP address used as table indices
+      - [PATCH 2492377]: Fix typo/bug in snmp_enable_callback()
+      - [PATCH 2505488]: Fix alarms not triggered due to large clock skews.
+      - [PATCH 2538169]: Prevent infinite retries for an invalid error-index.
+      - [PATCH 2689362]: Fix handling of IPv6 hostnames.
+      - [PATCH 2713841]: Fix runtime errors triggered by high-ASCII chars
+      - [PATCH 2772787]: Cleaner approach to handling large fd_sets.
+      - [PATCH 2780411]: Fix compiler warnings
+      - [FEATURES  454028]: Detect empty MIB index files.
+      - [FEATURES  851887]: Report range information for invalid SET requests.
+      - [FEATURES 1041888]: Check directory paths for config files.
+      - [FEATURES 1407476]: Rename 'strictCommentTerm' to reflect actual behaviour.
+      - Add GCC format checking attributes to the debug functions.
+      - Add iterator for singly linked lists
+      - Correct MAX_ENGINEID_LENGTH to 32 (as per SnmpEngineID TC)
+      - Correct registration of multiple premib config handlers.
+      - Deallocate various resources in shutdown_mib
       - Do not leak memory whenever an udp address is formatted.
       - Do not try to look up empty strings as hostnames for IPv6
-      - Fix registering of multiple premib config handlers
+      - Fix forwarding encoding
       - Fix potential buffer overflow in sprintf for UDP/IPv6
+      - Handle mapping complex transport strings to simple name definitions
+      - Hardcode default port numbers (rather than use getservbyname)
+      - Implement RFC5343 contextEngineID probing.
+      - Improve CONTAINER_INSERT handling of partial failure with multiple indexes
+      - Improve netsnmp_watcher_info to handle statically allocated data.
+      - Introduce printf-like versions of config_perror and config_pwarn
+      - Library layering improvements
+      - Read def{Target,Domain} from snmp.conf as well as <app>.conf
+      - 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.
 
     snmpd:
-      - [BUG 1557372]: Realign hrFSStorageIndex with hrStorageTable
+      - [BUG  902610]: Don't discard pending data following a TRAP.
+      - [BUG  902801]: Fix ordering of SMUX-registered subtrees.
+      - [BUG 1046327]: Reset "includeAllDisks" flag when reloading.
+      - [BUG 1102058]: Skip non-mounted disks (e.g. swap partitions)
+      - [BUG 1397895]: include missing interface declarations
+      - [BUG 1400101]: remove deleted interfaces from ifTable
+      - [BUG 1413728]: Reference index values in debug output correctly.
+      - [BUG 1416276]: Handle dependency on MIB parsing API.
+      - [BUG 1546817]: Fix snmpEnterprise varbind when forwarding v1 traps.
+      - [BUG 1558823]: fix ipAddressTable memory leak
+      - [BUG 1600261]: Handle non-x86 /proc/cpuinfo format
+      - [BUG 1600432]: Handle signals properly when restarting the agent.
+      - [BUG 1602286]: Don't let table holes block later rows.
+      - [BUG 1628613]: Restore memTotalFree.0 on Solaris
+      - [BUG 1633595]: Fix AgentX handling of Counter64 values
+      - [BUG 1677063]: Check for failed malloc calls.
+      - [BUG 1685067]: More precise handling of SNMPv3-admin MIB tables.
+      - [BUG 1685081]: Check for valid OID on Free/Undo passes.
+      - [BUG 1693039]: be silent when insert fails.
+      - [BUG 1712988]: default/configurable max # varbinds returned by GETBULK
+      - [BUG 1745113]: Handle single-line output in UCD compatability mode.
       - [BUG 1748206]: Protect against failures to open /etc/mtab (or equiv)
-      - [BUG 1758212]: Handling missing variable types (IpAddress,Counter,Opaque)
+      - [BUG 1758212]: Handle missing variable types (IpAddress,Counter,Opaque)
+      - [BUG 1760633]: fix typo in debug message
       - [BUG 1771221]: Retain ifLastChange information on data reload.
       - [BUG 1792890]: include CIFS mounts when skipping remote filesystems
       - [BUG 1822360]: Fix spinlock helper error handling.
-      - [BUG 1851047]: Don't over-process failed watcher requests
-      - [BUG 1912647]: Fix memory leak following failed request
-      - [BUG 1931391]: Fix reporting of Memory buffers and cached memory
-      - [BUG 2003144]: Increase size of AgentX packet
-      - [BUG 2006786]: Interface name can have more than 8 characters
-      - [BUG 2018031]: Don't probe engineID in internal monitor sessions
-      - [BUG 2023803]: Remove irrelevant configure dependency (HP-UX 11)
-      - [PATCH 1716548]: Fix help output for -D
+      - [BUG 1912647]: Fix memory leak following failed requests.
+      - [BUG 1931391]: Fix reporting of Memory buffers and cached memory.
+      - [BUG 2001124]: Allow embedded NUL characters in usmUserPublic
+      - [BUG 2003144]: Increase size of AgentX packet build buffer
+      - [BUG 2006786]: Interface name can have more than 8 characters.
+      - [BUG 2018031]: Don't probe engineID in internal monitor sessions.
+      - [BUG 2693670]: Don't open (& clobber) AgentX socket if other transports fail
+      - [BUG 2822355]: Fix memory leaks on udpEndpointTable (linux) Patch
+	supplied by Frank Lichtenheld
+      - [PATCH 1225440]: Delay sighup till it is safe.
+      - [PATCH 1257347]: Non-fixed size connection buffer
+      - [PATCH 1550730]: Report errors from iterator-based handlers.
+      - [PATCH 1585146]: Extend range of available error codes
+      - [PATCH 1595568]: fix delegated SET requests from agentx subagents
+      - [PATCH 1601188]: Handle signals properly when restarting the agent.
+      - [PATCH 1601453]: Dynamic Memory failure handling improvements
+      - [PATCH 1617255]: fix length of the history array to match code.
+      - [PATCH 1620424]: Fix default port for sending notification
+      - [PATCH 1625069]: speed improvements for solaris routing table access
+      - [PATCH 1639282]: Save persistent snmpTargetParamsTable settings correctly.
+      - [PATCH 1639726]: Report physical memory correctly on *BSD
+      - [PATCH 1641332]: Include missing agent config definitions.
+      - [PATCH 1641685]: Handle unresponsive AgentX subagents more reliably.
+      - [PATCH 1641865]: Don't double check snmpTrapOID in the filter table.
+      - [PATCH 1642255]: Handle saving long snmpNotifyFilterTable entries.
+      - [PATCH 1644280]: Don't automatically probe for v3 EngineIDs.
+      - [PATCH 1644280]: Use the correct engineID when sending v3 traps.
+      - [PATCH 1644714]: replace last use of deprecated copy_word by copy_nword
+      - [PATCH 1654424]: Handle row deletion issues in dataset tables
+      - [PATCH 1657741]: Handle 64-bit types via pass mechanism.
+      - [PATCH 1659623]: Handle SMUX peers with an empty password.
+      - [PATCH 1665543]: Handle VACM checks correctly.
+      - [PATCH 1665549]: Handle creating VACM entries correctly.
+      - [PATCH 1665985]: Implement ipReasmTimeout
+      - [PATCH 1666737]: include IPv6 traffic in various UDP counters.
+      - [PATCH 1668193]: Fix check for v6 ReasmMaxSize support.
+      - [PATCH 1668193]: Update registration of ReasmMaxSize support.
+      - [PATCH 1668952]: Ignore zombie processes.
+      - [PATCH 1669048]: Add support for ipv6InterfaceIdentifier
+      - [PATCH 1676478]: fix udpEndpointRemoteAddress
+      - [PATCH 1678301]: Deallocate domain registry at shutdown
+      - [PATCH 1678305]: Deallocate cache in hardware/cpu/cpu on shutdown
+      - [PATCH 1678306]: Deallocate log in notification-log-mib/notification_log
+      - [PATCH 1678788]: Better handling of SMUX socket descriptors.
+      - [PATCH 1681043]: clean up helper includes
+      - [PATCH 1683054]: set udpEndpointInstance to identify different processes.
+      - [PATCH 1687336]: Start using the enhanced read_config interface
+      - [PATCH 1692768]: Fix copying of non-octet-aligned IP address prefixes.
+      - [PATCH 1692817]: Improved RFC 4293 support (inc. non-unicast/random IP addresses)
+      - [PATCH 1698184]: Register non-default context integers as writable.
+      - [PATCH 1700157]: Fix ordering of exec tokens in MIB output
+      - [PATCH 1700730]: Remove unused extern declaration.
+      - [PATCH 1700732]: Fix debug output statements.
+      - [PATCH 1700737]: Tidy up setSerialNo implementations.
+      - [PATCH 1702361]: Read stats from /proc/net/snmp6
+      - [PATCH 1702366]: Support for icmpStatsTable
+      - [PATCH 1703004]: Consolidate snmp6 handling.
+      - [PATCH 1710632]: fix memory leak on broken container insertions for the ipAddressTable
+      - [PATCH 1715395]: fix icmp table errors in new icmp code
+      - [PATCH 1715406]: registration ordering fixes for icmpStatsTable
+      - [PATCH 1716548]: Fix help output so no space is printed between -D and arguments.
+      - [PATCH 1719253]: fix skipNFSInHostResources for multiple walks
+      - [PATCH 1721096]: remove unused variable stats from kernel extraction for better portability.
+      - [PATCH 1723611]: New implementation of the RMON alarmTable
+      - [PATCH 1729629]: Fix memory leak in disman agent.
+      - [PATCH 1737439]: automatic link up/down traps on a walk
       - [PATCH 1744157]: Report duplicate "extend/exec" identifiers.
-      - [PATCH 1746831]: fix process checking race condition
+      - [PATCH 1746831]: fix process checking race condition under Linux and platform #ifdefs
       - [PATCH 1752934]: Fix off-by-one qsort error in table utilities.
       - [PATCH 1753437]: Fix error index on failing SET requests
       - [PATCH 1753449]: Fix AgentX error propagation
       - [PATCH 1753463]: Fix AgentX subagent ping alarm handling
       - [PATCH 1758208]: Fix memory leak
-      - [PATCH 1774612]: More resilient process status handling
-      - [PATCH 1783733]: Include version info in hrSWInst table (solaris)
-      - [PATCH 1784747]: Fix ip adresses on 64 bit systems
+      - [PATCH 1783733]: Put the package version number into the hrSWInst table for solaris.
+      - [PATCH 1784747]: Fix long usage for ip adresses on 64 bit systems in various MIB-II tables.
+      - [PATCH 1797111]: implement IP-MIB::ipIfStatsTable
+      - [PATCH 1804445]: High order bits of HCInOctets not set on Solaris
+      - [PATCH 1806501]: Add API for sending traps with a snmpv3 context
+      - [PATCH 1823465]:  fix icmp cache registration
       - [PATCH 1823800]: release and reload all trap destinations on SIGHUP
       - [PATCH 1826088]: Use the right interface to read the netmask
-      - [PATCH 1826102]: support longer interface names on linux
-      - [PATCH 1828839]: handle of disk mount paths with embedded spaces
+      - [PATCH 1828839]: to provide better handling of disks mounted on paths with embedded spaces
       - [PATCH 1849903]: do not spam log with asserts when XEN is used
-      - [PATCH 1866823]: truncate 32 bit counter values on 64 bit machines
-      - [PATCH 1879261]: Add inactive memory to cached report (freebsd)
+      - [PATCH 1866823]: truncate 32 bit counter values on 64 bit machines to avoid bogus warnings.
+      - [PATCH 1879261]: Add in inactive memory to the cached report for freebsd
+      - [PATCH 1882621]: Add LVM support to the partition table
       - [PATCH 1893468]: fixed registration of OIDs with ranges
-      - [PATCH 1896118]: fix ifTable 32bit counters on linux
-      - [PATCH 1909813]: fix table_iterator hint for SORTED tables
-      - [PATCH 1944581]: Don't core dump on long string index values.
-      - [PATCH 1951996]: Fix for CPU stats on FreeBSD
+      - [PATCH 1901764]: for supporting logwatch files that are date based
+      - [PATCH 1909813]: fix table_iterator handling of SORTED hint
+      - [PATCH 1916840]: new config option to set SNMPv1 trap agent address
+      - [PATCH 1944581]: Protect against core dumps with long string index values.
       - [PATCH 1967194]: Recognise NFS4 mounts
+      - [PATCH 1977439]: Fix pass/_persist bug with SET oid value
+      - [PATCH 1995753]: minor cleanup agent/auto_nlist.c
+      - [PATCH 2012402]: don't fail on failure to look up interface error counters.
       - [PATCH 2014204]: Support -g {groupname}
       - [PATCH 2022936]: Fix AgentX Counter64 decoding on 64-bit architectures
-      - [PATCH 2023633]: add SCTP-MIB implementation (Linux only)
+      - [PATCH 2082726]: correctly report NIC speeds higher than 4Gbit/s
+      - [PATCH 2103492]: implement RMON-MIB::etherStatsJabbers
+      - [PATCH 2124288]: Fix setting of usmUserPrivProtocol at creation.
+      - [PATCH 2162652]: patch to fix simple hrfs checks when NFS is in use.
+      - [PATCH 2384779]: Fix handling of GetBulk with N>0,M==0
+      - [PATCH 2406378]: Fix hrSWRunPerfMem on 64-bit Solaris systems
+      - [PATCH 2431353]: Make some C++ compilers happier
+      - [PATCH 2435681]: Enable if-mib rewrite (with sysctl backend) on NetBSD
+      - [PATCH 2435793]: Support 64-bit IF-MIB counters on sysctl (*BSD) system.
+      - [PATCH 2449210]: add 64-bit disk usage statistics to UCD-SNMP-MIB::dskTable
+      - [PATCH 2564552]: provide libnetlink support for loading the tcp table
+      - [PATCH 2686280]: Report duplicate registrations as an error
+      - [PATCH 2791417]: fix snmpd segfault when run with -DALL Patch
+      - [PATCH 2822337]: Fix memory leak in ipAddressPrefixTable
+      - [FEATURES 1019429]: Set supplementary groups via initgroups(3)
+      - Add missing function declarations & include files.
+      - Add support for a user provided length variable
+	   and C string values to the watcher helper.
+      - Allow "monitor" to handle negative threshold values.
+      - Automatically reregister sysORTable entries from AgentX subagents.
+      - Clean up notification registrations during Event MIB cleanup
       - Enforce the lower limit on scalar_groups
-      - suppress annoying "registration != duplicate" warning for root oids
-      - Handle device names with embedded spaces in UCD-SNMP-MIB (dskDevice)
+      - Fix CVE-2008-4309 (GETBULK issue reported by Oscar Mira-Sanchez)
+      - Fix memory leak when multiple interfaces have the same IPv6 address
+      - Fix two bugs with smux password support.
+      - Handle device names with embedded spaces in UCD-SNMP-MIB::dskDevice
+      - Implement ipNetToPhysicalLastUpdated
+      - Implement ipAddressSpinLock
+      - Improve efficiency of scalar_group helper.
+      - Improve parsing of -LS command line argument
+      - Register CPU/memory hardware modules with nsCacheTable.
+      - Reimplementation of LM-SENSORS-MIB
+      - Reimplementation of snmpMPDStats.
+      - Reimplementation of usmStats.
+      - Remove unused variables.
+      - Suppress annoying "registration != duplicate" warning for root oids
+      - Unify all snmpd statistic variables with a common handler.
+      - Use the worker helpers from the register_*_instance helpers and
+	schedule the instance helpers for removal in 5.6
+      - Use static watcher_info for all watched variables and in int_watch.
+      - fix possible crash when 64-bit counters in ipSystemStatsTable get
+	bigger than 2^32
 
     snmptrapd:
+      - [BUG 1638225]: Fix interpretation of transport address data.
       - [BUG 1955227]: Memory leak for embedded Perl on x86_64
       - [PATCH 1746992]: Improve snmptrapd access-control error messages.
       - [PATCH 1767725]: Close all non standard file handles
+      - [PATCH 1908288]: Run perl END block on termination
+      - [PATCH 2726302]: Pass results of Perl trap handlers to trap daemon
+      - [PATCH 1225440]: Delay sighup till it is safe.
+      - [FEATURE  741375]: Extend -F flag to cover syslog/execute format strings.
+      - [FEATURE 1159947]: Allow control of traphandle data format
+      - Add trap handler for logging traps to a mysql database
+      - Support for forwarding traps by OID subtree.
+      - Support per-trap format specifications
+      - Withdraw deprecated options.
+
+    apps:
+      - [BUG 1964136]: Drop NULL type from snmpset usage message.
+      - [BUG 2811577]: Fix bug in GetBulk handling. Don't get confused by
+	index values that contain a ':' character.
+      - [PATCH 1529523]: Close SNMP session on failure.
+      - Improve parsing of -LS command line argument
+
+    snmpnetstat:
+      - [PATCH 2564538]: Support GETBULK in v2c+ snmp versions
+
+    snmpusm:
+      - [PATCH 1591355]: Allow cloning to arbitrary engineIDs
+
+    snmpwalk:
+      - [PATCH 1723620]: Specify an explicit end-point for the walk.
 
     build:
+      - [BUG 1096166]: Handle --without-logfile correctly.
+      - [BUG 1567324]: Clarify prompting for user-supplied values.
+      - [BUG 1600093]: autoconf 2.60 breaks the build
+      - [BUG 1647976]: Cygwin/MinGW Windows build fails due to libtool error
+      - [BUG 1707469]: Win32: snmpv3-security-includes.h not installed
       - [BUG 1802833]: Ensure snmptrapd builds with --disable-snmpv1/2c
+      - [BUG 1823381]: Use a sensible default MIBDIR path on Cygwin/MinGW
       - [BUG 1823381]: Valid MIB directory search path on Windows
       - [BUG 1872266]: PERLCC check fails for CC with options
-      - [BUG 1995172]: fix --without-elf configure usage
+      - [BUG 1995172]: fix --without-elf configure usage message
       - [BUG 2014526]: Win32: snmpv3-security-includes.h not installed
       - [BUG 2023803]: Compilation problems on HP-UX 11.31
-      - [PATCH 1681035]: improve net-snmp-config /bin/sh compatibility
+      - [BUG 2095983]: fix syntax/permissing error in find-requires helper script
+      - [BUG 2168180]: Improve handling of various --enable/--disable options.
+      - [BUG 2782700]: build failure when using --with-pkcs on Solaris
+      - [PATCH 1577917]:Simplify makefile target references (patch from Apple)
+      - [PATCH 1600453]: Fix cross-compile builds in apples build environment.
+      - [PATCH 1624406]: option to hardcode location of mount table
+      - [PATCH 1625135]: configure location of python interpreter 
+      - [PATCH 1678300]: compile-subagent doesn't call shutdown_ methods
+      - [PATCH 1681073]: #ifdef based config_error instead of special cases
+      - [PATCH 1728241]: Add configure check for <sys/uio.h>
+      - [PATCH 1728230]: add configure check for gai_strerror()
+      - [PATCH 1728233]: make sure type nfds_t is defined
+      - [PATCH 1728237]: Move variable declaration at the top of netsnmp_udp_sendto
+      - [PATCH 1728244]: Add configure check for sin6_scope_id
+      - [PATCH 1728247]: Add type check for int??_t and uint??_t
       - [PATCH 1899762]: Tweak embedded_perl configure checks.
-      - add --with-temp-file-pattern configure option
-      - Add support for winExtDLL to build.bat (win32)
-      - Disable agent tests if built without necessary mib modules
-      - Limit the use of _KERNEL definitions in configure tests to match
-        the use of _KERNEL in our codebase
-      - Update to libtool 1.5.26
-
-    mib2c:
-      - [BUG 1874059,1737068]: Handle MIB objects with embedded hyphens
-      - [PATCH 1914398]: install mib2c.perl.conf
+      - [PATCH 2000874]: Cleanup transport selection.
+      - [PATCH 2091156]: correctly declare dependencies in Makefile. 'make -j <N>' should work now.
+      - [PATCH 2184039]: Fixes for freeing memory during error conditions.
+      - [PATCH 2797251]: Support multiple initialisation/shutdown, fix memory leaks
+      - Add a variation of AC_SEARCH_LIBS where the result is settable.
+      - Add "BuildRequires: perl-ExtUtils-Embed" to the spec file
+      - Add '--with-temp-file-pattern' configure option
+      - Assume target platform supports mem{cpy,move,set} & str{,r}chr
+      - Disable inlining on solaris (due to linking errors)
+      - Disable MIB-specific tests if the agent omits the necessary modules.
+      - '--disable-as-needed' reverts to linking system libs into applications
+      - Do not config_require(util_funcs) if nothing from util_funcs is used
+      - Do not require use of --with-endianness when cross-compiling.
+      - Fix build issues with ethtool (on RH9).
+      - Fix checks for support of static inline functions
+      - Fix compilation on IRIX
+      - Fix macro for '--with-features-of'
+      - Improve library layering & dependency handling when linking apps
+      - Improve robustness of sed/grep/etc commans (using autoconf macros)
+      - Improve RPM spec files, for consistency with vendor-provided packages.
+      - Mechanism for selecting build environment based on version
+      - New NETSNMP_ARG_WITH/ENABLE macros to catch incorrect 'with/enable' usage
+      - '--enable-ipv6' should only enable 'mibII/ipv6' on supported systems
+      - Remove Net-SNMP special-case handling of standard functionality.
+      - Restructure configure template
+      - Stricter checks on '--with-persistent-mask' values
+      - Update to autoconf 2.63 & libtool 2.2.6
+      - Use 'config_error' to generate error messages at configure time.
+      - Use LDFLAGS when building agent, helpers and mib lib
+      - Use "libtool clean" to ensure removal of all libtool temp files.
+      - allow building with Perl versions that lack PERL_EXIT_DESTRUCT_END
+      - build fix for Tru64 Unix and IRIX: move _XOPEN* definitions to
+	where they are in 5.4.x and earlier
 
     documentation:
+      - [BUG 1247164]: Document use of OID macros
+      - [BUG 1407476]: Clarify MIB parsing toggle options & comment handling.
+      - [BUG 1614104]: broken snmpd(8) manual page in 5.4
       - [BUG 2027129]: fix typo in snmpcmd.1
+      - [PATCH 1604580]: SNMP(3) manual page corrections
+      - [PATCH 1644735]: Add gcc build instructions for IRIX
+      - Fix minor documentation bugs (patch from Apple)
+
+    mib2c:
+      - [BUG  833673]: More focused size checks.
+      - [BUG 1429472]: Protect against missing instances (and invalid objects)
+      - [BUG 1582972]: Handle @while@/@end@ properly.
+      - [BUG 1737068]: Handle MIB objects with embedded hyphens
+      - [BUG 1874059]: Handle MIB objects with embedded hyphens
+      - [PATCH 1668171]: skip unknown cols in min/max range for tables
+      - [PATCH 1719244]: Fix mfd generating map function
+      - [PATCH 1914398]: install mib2c.perl.conf
+      - [PATCH 2136437]: Improve FLAG defines for huge tables on 64bit systems
+      - [PATCH 2316127]: Fix bug in iterate_access generated code.
 
     misc:
-      - Avoid calling debug macros with too few/many arguments.
-      - enhance snmpnetstat test to check tcpTable in TCP mode
+      - [PATCH 1737727]: Add a NETSNMP_OLDAPI_ prefix to old-api access macros.
+      - [PATCH 1737727]: Replace NETSNMP_CLEAN_NAMESPACE with NETSNMP_NO_LEGACY_DEFINITIONS
+      - Add config reread support to "net-snmp-config --compile-subagent" code.
+      - Avoid calling debug macros with wrong number of arguments.
+      - Don't use the legacy symbol SNMPTRAPD_DISABLE_AGENTX
+      - Preliminary (alpha) support for SNMP over SSH and DTLS/UDP.
+      - Preliminary (alpha) support for the TSM security model
+      - Separate user management into new net-snmp-create-v3-user script
+
+    unspecified:
+      - [BUG 1596638]: memory leak in ipCidrRouteTable, inetCidrRouteTable
+      - [BUG 1611524]: fix tcp connection table fd leak
+      - [BUG 1793545]: Take the name from the sockaddr_un in order to avoid
+	               transport specifiers and other decorations.
+      - [BUG 1801835]: Multiple default transports for an application.
+      - [BUG 1851047]: Don't continue to process a corrupt watched value.
+      - [PATCH 1601453]: Dynamic Memory failure handling improvements
+      - [PATCH 1674298]: Remove unused sinkport variable
+      - [PATCH 1674299]: Lessen scope of zone variable in dump_realloc_oid_to_inetaddress
+      - [PATCH 1674302]: Lessen scope of len variable in convert_v2pdu_to_v1
+      - [PATCH 1678298]: compile-subagent checks for bad HAVE_SIGNAL_H
+      - [PATCH 1678302]: netsnmp_mibindex_load leaks memory
+      - [PATCH 1681035]: Improve net-snmp-config /bin/sh compatibility
+      - [PATCH 1902105]: Hide and improve debug log messages
+      - [PATCH 1902113]: Fix error log in inetNetToMediatable
+      - Fix for refs to OBJECT-GROUP in another MIB
+      - Initalize log subsystem
+      - Remove support for use of varargs.h.
 
     perl:
+      - [BUG 1450669]: a perl agentx consumes memory
+      - [BUG 1554817]: Fix class assigment so getRootOID works properly.
       - [BUG 1606062]: perl bulkwalk (async) coredump
+      - [BUG 1619827]: improve handling of link dependencies
       - [BUG 1747733]: More robust handling of undefined values.
-      - [BUG 1826174]: Check for buffer overflow when printing values.
       - [BUG 1834539]: Consistent handling of OID parsing.
+      - [PATCH 1627949]: a perl agentx consumes memory
+      - [PATCH 1725049]: Fix bulkwalk in cases of non-repeater usage.
       - [PATCH 1811463]: perl async callback coredump
+      - [PATCH 1834983]: Consistent handling of OID parsing.
       - [PATCH 1914393]: registerAgent can now be run multiple times
       - [PATCH 1914643]: fix issues with embedded perl
       - [PATCH 1914645]: better end of mib support
       - [PATCH 1920390]: fix registration of tables with .0 as IIDs
-      - [PATCH 2021444]: Support SNMPv2c in gettable
-      - fixed an extra brace in the docs pointed out by Jason Martin
-
-    python:
-      - [BUG 1826174]: Check for buffer overflow when printing values
-      - [BUG 1868278]: Python segfault (introduced by r16962)
-      - [PATCH 1862177]: made code more windows/cygwin compiler friendly
-      - [PATCH 1877840]: fix MIB label and indexing due to broken regexp
-
-    AIX:
-      - Add support for AIX 6.x.
-
-    Linux:
-      - [PATCH 1969627]: Handle empty /etc/sysconfig/network file
-      - Improved RPM spec files, for better consistency with
-        vendor-provided packages
-
-    Solaris:
-      - [BUG 1810814]: tcpTable missing entries and wrong ports
-      - [PATCH 1824196]: {ifOperStatus,ipAdEntIfIndex} reported incorrectly
-      - [PATCH 1834699]: Fix 1833294: DLPI problems on Solaris 2.6
-      - #define NEW_MIB_COMPLIANT to support Solaris 10U4+
-
-* 5.4.1 *
-
-    snmplib:
-      - Change snmp_sess_add_ex to consistently close and
-      - Deallocate the confmibs and confmibdirs
-      - FEATURES: 1041888: Check directory paths for
-      - FEATURES: 851887: Report range information for
-      - Read the config parameters defTarget and
-      - Use the default_target argument if it is
-      - [BUG 1600171]: Support longer community strings
-      - [BUG 1619827]: link against needed external
-      - [BUG 1619827]: link net-snmp libraries and binaries
-      - [BUG 1660061]: Validate engineIDs more strictly.
-      - [PATCH 1548670]: Fix range checks for unsigned
-      - [PATCH 1592706]: Fix memory leak when cloning
-      - [PATCH 1616912]: fix
-      - [PATCH 1620424]: Honor
-      - [PATCH 1634620]: Fix leaks from
-      - [PATCH 1640114]: Don't store trailing null
-      - [PATCH 1641895]: Extend short view masks (as per
-      - [PATCH 1641972]: add missing const
-      - [PATCH 1653670]: Consistent SNMPv3 behaviour
-      - [PATCH 1681030]: Better handling of empty
-      - [PATCH 1687316]: Don't drop const from casts.
-      - [PATCH 1687325]: Fix problem with operator
-      - increment "current" and "age" according to
-      - library layering improvements: introduce
-      - patch: 1645698: fix 64-bit signed integer
-
-    snmpapi:
-      - Do not use getservbyname to find default port
-
-    snmpd:
-      - Correct the dependency information for
-      - [BUG 1046327]: Reset "includeAllDisks" flag when
-      - [BUG 1073782]: Restore PerfStat values for FreeBSD
-      - [BUG 1102058]: Skip non-mounted disks (e.g. swap
-      - [BUG 1159908]: Fix memory leak
-      - [BUG 1397895]: include missing interface
-      - [BUG 1413728]: Reference index values in debug
-      - [BUG 1416276]: Handle dependency on MIB parsing
-      - [BUG 1546817]: Fix snmpEnterprise varbind when
-      - [BUG 1558823]: fix ipAddressTable memory leak
-      - [BUG 1600261]: Handle non-x86 /proc/cpuinfo format
-      - [BUG 1602286]: Don't let table holes block later
-      - [BUG 1628613]: Restore memTotalFree.0 on Solaris
-      - [BUG 1633595]: Fix AgentX handling of Counter64
-      - [BUG 1677063]: Check for failed malloc calls.
-      - [BUG 1685067]: More precise handling of
-      - [BUG 1685081]: Check for valid OID on Free/Undo
-      - [BUG 1712988]: default and configurable maximum
-      - [BUG 1745113]: Handle single-line (and zero-line)
-      - [BUG 1760633]: fix typo in debug message
-      - [BUG 902610]: Don't discard pending data following
-      - [BUG 902801]: Fix ordering of SMUX-registered
-      - [PATCH 1601188, ]: BUG: 1600432: Handle signals
-      - [PATCH 1620424]: Fix notification sending so that
-      - [PATCH 1637287]: Handle multiple target tags
-      - [PATCH 1639282]: Save persistent
-      - [PATCH 1639360]: Fix snmpNotifyFilterProfileTable
-      - [PATCH 1639726]: Report physical memory
-      - [PATCH 1641332]: Include missing agent config
-      - [PATCH 1641685]: Handle unresponsive AgentX
-      - [PATCH 1641865]: Don't double check snmpTrapOID
-      - [PATCH 1642255]: Handle saving long
-      - [PATCH 1644280]: Don't automatically probe for
-      - [PATCH 1644280]: Use the correct engineID when
-      - [PATCH 1644714]: replace
-      - [PATCH 1659623]: Handle SMUX peers with an empty
-      - [PATCH 1665549]: Handle creating VACM entries
-      - [PATCH 1665985]: Implement ipReasmTimeout
-      - [PATCH 1666737]: include ipv6 counts in
-      - [PATCH 1668193]: Fix check for v6 ReasmMaxSize
-      - [PATCH 1668193]: Update registration of
-      - [PATCH 1668952]: Ignore zombie processes.
-      - [PATCH 1676478]: fix udpEndpointRemoteAddress
-      - [PATCH 1678788]: Better handling of SMUX socket
-      - [PATCH 1683054]: set udpEndpointInstance to
-      - [PATCH 1687336]: Start using the enhanced
-      - [PATCH 1692768]: Fix copying of non-octet-aligned
-      - [PATCH 1698184]: Register non-default context
-      - [PATCH 1700730]: Remove unused extern declaration.
-      - [PATCH 1700732]: Fix debug output statements.
-      - [PATCH 1700737]: Tidy up setSerialNo
-      - [PATCH 1729629]: Fix memory leak in disman
-      - patch from Wojtek Jawor to handle row deletion
-      - patch: 1225440: Apply intent of patch: to delay
-      - patch: 1595568: from cyril_margaria: fix
-      - patch: 1617255: fix length of the history array
-      - patch: 1700157: from afrika: fixes ordering of exec
-      - patch: 1710632: from mavarley: fix memory leak on
-      - patch: 1719253: from "Christian Jung": fix
-      - patch: 1719254: from "Christan Jung": update
-
-    snmptrapd:
-      - [BUG 1638225]: Fix interpretation of transport
-      - [PATCH 1620424]: Fix notification reception so
-      - patch: 1225440: Apply intent of patch: to
-      - upport for forwarding traps by OID subtree.
-
-    apps:
-      - [BUG 1964136]: Drop NULL type from snmpset usage
-      - [PATCH 1529523]: Close SNMP session on failure.
-
-    build:
-      - Link libdl against libnetsnmpmibs instead of
-      - Link libkvm and libwrap to libnetsnmpagent
-      - [BUG 1096166]: Handle --without-logfile correctly.
-      - [BUG 1647976]: Cygwin/MinGW Windows build fails
-      - [PATCH 1625135]: configure location of python
-      - [PATCH 1681073]: #ifdef based config_error instead
-      - [PATCH 1728226]: make sure
-      - [PATCH 1728230]: add
-      - [PATCH 1728237]: Move
-      - [PATCH 1728244]: Add
-      - [PATCH 1728247]: Add type
-      - add "BuildRequires: perl-ExtUtils-Embed" to the
-      - add configure check for hasmntopt to fix the
-      - only enable mibII/ipv6 through --enable-ipv6 on
-      - patch from apple to simplify makefile target
-      - update to libtool 1.5.24 (from 1.5.22)
-      - use LDFLAGS when building agent, helpers and mib
-      - use libtool clean for removing files to ensure we
-      - work around libnetsnmpagent/libnetsnmphelpers
-      - yet another fix to address build issues with
-
-    building:
-      - Check for support of static inline functions
-      - Disable inlining on solaris as there are some
-
-    configure:
-      - [BUG 1567324]: Clarify prompting for
-
-    documentation:
-      - [BUG 1247164]: Document use of OID macros
-      - [BUG 1407476]: Clarify MIB parsing toggle
-      - [BUG 1614104]: broken snmpd(8) manual page
-      - [PATCH 1604580]: SNMP(3) manual page
-
-    irix:
-      - [PATCH 1709748]: Optimized IRIX cpu stats
-
-    library:
-      - FEATURES: 454028: Detect and handle empty MIB
-      - Patch from "Mitsuru Chinen": cleans up the
-      - [PATCH 1642071]: Don't fiddle with the storage
-      - [PATCH 1665543]: Handle VACM checks correctly.
-
-    mib2c:
-      - [BUG 1429472]: Protect against missing instances
-      - [BUG 1582972]: Handle @while@/@end@ properly.
-      - [BUG 833673]: More focused size checks.
-      - [PATCH 1668171]: skip unknown cols in min/max
-
-    misc:
-      - Don't use the legacy symbol
-
-    patch:
-      - fix the -M switch for
-
-    perl:
-      - [BUG 1450669]: PATCH: 1627949: from martin987: a
-      - [BUG 1619827]: link libnetsnmpagent/libnetsnmptrapd
+      - [PATCH 1956193]: beta threadable perl module code for SNMPv1/2c usage.
+      - [PATCH 2021444]: Support SNMPv2c in gettable processing
+      - [PATCH 2022948]: Fix for Counter64 in perl subagent
+      - [PATCH 2182079]: Fix various perl warnings & allow use of "use strict"
+      - [PATCH 2272347]: Implement "implied" in MIB hash
+      - [PATCH 2361712]: Fix getbulk optimization during walks
+      - [PATCH 2709705]: Retrieve src/target IP address in Perl-based agents
+      - [PATCH 2763717]: Allow perl to use OPAQUEs
+      - [PATCH 2793857]: Report failed asynchronous requests.
       - fix SNMP SET for IP addresses on 64-bit
       - fix prerequisites for NetSNMP::TrapReceiver
       - fix syntax error in NetSNMP::agent::Support
-      - install embedded perl init files for
-      - patch: 1725049: fix bulkwalk in cases of non-repeater
-
-    ports:
-      - patch: 1706344: from naylor: fix compilation with
+      - install embedded perl init files with correct permissions
 
     python:
-      - [PATCH 1716114]: Let python build in source tree
+      - [BUG 1826174]: Check for buffer overflow when printing values.
+	               Addresses CVE-2008-2292
+      - [BUG 1868278]: Python segfault
+      - [BUG 2258935]: Python Extension Module fails on Solaris
+      - [PATCH 1716114]: Let python build in source tree  (Debian patch#38)
+      - [PATCH 1862177]: made code more windows/cygwin compiler friendly
+      - [PATCH 1877840]: Fix MIB label and indexing due to sl, broken regexp
+      - [PATCH 2074817]: Fix regexp engine CPU performance issues
+      - [PATCH 2260828]: Fix python snmpwalk memory leak
+      - [PATCH 2580979]: Fix python session pointers on 64-bit systems.
+      - [PATCH 2667415]: Support "UseNumeric" option.
+      - [PATCH 2775800]: Allow threading to continue when a request is sent
 
     test:
-      - support a -n flag to RUNTESTS to print the test
+      - enhance snmpnetstat test to check tcpTable in TCP mode
+      - support a -n flag to RUNTESTS to print the test number found in the
+	test file as opposed to the numerical count
+      - Do not terminate on SIGCHLD since dash and soume bourne shells will
+	exit the main shell when a subshell terminates in that case.
 
-    unspecified:
-      - [BUG 1596638]: memory leak in ipCidrRouteTable,
-      - [BUG 1600093]: autoconf 2.60 breaks the build
-      - [BUG 1611524]: fix tcp connection table fd leak
-      - [BUG 1633483]: Support CPU HAL on FreeBSD4.x
+    Ports:
       - [BUG 1710910]: initial support for DragonFly BSD
-      - [PATCH 1678298]: from magfr: compile-subagent checks for
-      - [PATCH 1678301]: from magfr: deallocate domain registry
-      - [PATCH 1678302]: from magfr: netsnmp_mibindex_load leaks
-      - [PATCH 1678305]: from magfr: Deallocate the cache in
-      - [PATCH 1678306]: from magfr: Deallocate the log in
-      - [PATCH 1719244]: fix mfd generating map function
-      - [PATCH 1728241]: from mitsuru_chinen: add configure check
-      - patch from apple to fix cross-compile builds in apples
-      - patch from apple to fix minor documentation bugs.
-      - patch from apple to improve memory reporting
+      - [PATCH 1623874]: add GNU/kFreeBSD support
 
     AIX:
-      - [PATCH 1665079]: AIX patches
-      - build fixes for embedded Perl
-      - fix default shared library building instead of forcing
-      - use "-Wl,-brtl" when compiling with gcc
+      - [PATCH 1665079]: AIX patches for cpu stats and process monitoring
+      - Add support for AIX 6.x
+      - 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:
-      - add initial support for upcoming FreeBSD 7
-      - fix configure warning for sys/conf.h
+      - [BUG 1073782]: Restore PerfStat values for FreeBSD 5.x systems.
+      - [BUG 1633483]: Support CPU HAL on FreeBSD4.x
+      - [PATCH 1951996]: Fix for CPU stats on FreeBSD
+      - [PATCH 2507249]: sctp-mib support for FreeBSD.
+      - Add initial support for upcoming FreeBSD 7
+      - Fix configure warning for sys/conf.h
+      - patch from Cezary Morga to fix a make test on freebsd
 
-    HP:
-      - UX: BUG: 1742278: compile error on HP-UX 11.23 (IA64)
-      - UX: HP-UX needs _REENTRANT defined to pick up
+    HP-UX:
+      - [BUG 2779472]: Filesystems missing in hrStorage table
+      - [PATCH 2088726]: Fix an issue reporting memory in negative values.
+      - Needs _REENTRANT defined to pick up strtok_r.
 
     IRIX:
-      - [PATCH 1675869]: CPU statistics for IRIX
+      - [PATCH 1675869]: CPU statistics for IRIX based on PCP
+      - [PATCH 1709748]: Optimized IRIX cpu stats
 
     Linux:
-      - [BUG 1666005]: Fail to walk ipv6InterfaceTable on
-      - [PATCH 1581294]: 
-      - fix ethtool configure check for recent systems
+      - [BUG 1666005]: Fail to walk ipv6InterfaceTable on Linux
+      - [PATCH 1581294]: host-resources improvements
+      - [PATCH 1969627]: Handle install with empty /etc/sysconfig/network file 
+      - [PATCH 1704105]: Add IPv6 support to the inetNetToMediaTable
+      - [PATCH 1705594]: Various fixes to ipAddressPrefixTable reporting
+      - [PATCH 1708243]: Implement ipDefaultRouteTable
+      - [PATCH 1715405]: Implement ipv6ScopeZoneIndexTable
+      - [PATCH 1719254]: update HRFS_ignore list to current linux likelyhoods
+      - [PATCH 1724602]: MfD-based ipDefaultRouterTable implementation
+      - [PATCH 1783423]: return a correct ipv6InterfaceIdentifier of loopback
+      - [PATCH 1826102]: support longer interface names
+      - [PATCH 1828602]: Support ipDefaultTTL and ipForwarding SETs
+      - [PATCH 1896118]: Fix ifTable 32bit counters
+      - [PATCH 1927751]: Implement icmpMsgStatsTable
+      - [PATCH 2023633]: Implement SCTP-MIB
+      - [PATCH 2053273]: Implement EtherLike MIB
 
     MacOSX:
-      - [PATCH 1600453]: OS X
-      - [PATCH 1600522]: CPU HAL
-
-    Perl:
-      - link Perl modules against the exact set of libraries
+      - [PATCH 1600453]: OS X compile-time endian determination
+      - [PATCH 1600522]: CPU HAL implementation for mach/darwin
+      - Improve memory reporting (patch from Apple)
+      - Patch: 3514049 from twobits-github: fix compilation on darwin11
 
     Solaris:
-      - IF-MIB fix: add missing return at end of
-      - [BUG 1626153]: no hrSWRun informations on
-      - [PATCH 1623447]: hrSWRun
+      - [BUG 1626153]: No hrSWRun informations on Solaris zones
+      - [BUG 1810814]: tcpTable missing entries and wrong ports
+      - [BUG 1819189]: {ifOperStatus,ipAdEntIfIndex} reported incorrectly
+      - [BUG 1822275]: {ifOperStatus,ipAdEntIfIndex} reported incorrectly
+      - [PATCH 1623447]: Fix hrSWRun for terminated processes
+      - [PATCH 1719730]: Support for ipSystemStatsTable and ipAddressTable
+      - [PATCH 1824196]: {ifOperStatus,ipAdEntIfIndex} reported incorrectly
+      - [PATCH 1834699]: Fix 1833294: DLPI problems on Solaris 2.6
+      - [PATCH 2012404]: Deal with more than 10 interfaces.
+      - [PATCH 2751588]: Inconsistent data can be reported on Solaris 10U4+
+      - #define NEW_MIB_COMPLIANT to support Solaris 10U4+
+      - IF-MIB fix: add missing return at end of get_if_stats
 
     Win32:
       - [BUG 1662987]: compile error on Cygwin
-      - [PATCH 1622080]: A: pass Win32
+      - [BUG 2779541]: Fixed handle leak in pass_persist.
+      - [PATCH 1622080]: A: pass Win32 handles remain open.
+      - [PATCH 1706344]: Fix compilation with cygwin
+      - [PATCH 2686248]: Fix several winExtDLL bugs.
+      - [PATCH 2688342]: Fix VS2005 various compiler warning
+      - [PATCH 2691876]: Allow compiling the services using unicode.
+      - [PATCH 2693746]: improved socket startup support
+      - Add support for winExtDLL to build.bat
+      - Build fixes for MSVC 2008.
       - fix AES support
       - fix win32/Configure --with-ipv6
 
+*5.4*
+
+    build:
+      - [BUG 1416481]: Support specifying an explicit linker.
+      - enable-as-needed will try to link built libraries against needed
+	libraries at library link time, rather than application link time.
+
+    snmplib:
+      - [PATCH 1282566]: to rework transport creation to allow for
+	alternative interpretations of the address and a more flexible
+	transport registration system
+      - [BUGS: 1537459, BUGS: 1540745] Fix missing MIB parsing tokens
+      - [PATCH 1562168]: check for a sock fd less than 0.
+      - [PATCH 1570650]: create a logging shutdown function to propelry
+	clean up log registrations if needed.
+      - [PATCH 1565293]: UDPIPv6 transport reports wrong port number
+      - rename init_mib to netsnmp_init_mib to avoid symbol clash with
+	HP-UX's libnm
+      - [PATCH 1509943]: responses will get sent from the original dest IP
+	address when possible.
+
+    snmpd:
+      - [PATCH 1550725]: A new uint instance helper to match the existing
+	int, long and ulong helpers
+      - [BUG 1527930]: fix smux authentication
+      - [PATCH 1561277]: use net.ipv6.neigh.lo.base_reachable_time_ms
+	instead of deprecated base_reachable_time
+      - [BUG 1474468]: ifConnectorPresent always returns 0
+      - [PATCH 1524755]: to better support the UDPTable for unknown address
+	types
+      - [PATCH 1534877]: to add support for skipping NFS entries in the
+	host resources hrStorageTable.	See the skipNFSInHostResources
+	token in the snmpd.conf file for details.
+      - [PATCH 1557514 ]: Do not attempt to collect data during SET
+	processing.
+      - [BUG 1535903]: Support spaces within security names
+      - Agent builds default module list from a default_mibs.h rather than
+	a hard coded configure list
+      - [BUG 1559358]: check scanf results for diskio scanning
+      - [BUG 1564233]: Have configure test for rpm headers not just the
+	libraries
+      - [PATCH 1579364]: Updated darwin patch to fix compilation on Tiger
+	and Leapord
+      - [PATCH 1565703]: patch to fix rapid registrations/deregistration
+	issues
+      - [PATCH 1562688]: fix ping/reattach agentx code
+      - [PATCH 1551948]: Make pass_persist usable on uClinux
+      - [PATCH 1568150]: Extend pass_persist error messages that can be
+	passed back from the script
+      - [PATCH 1570650]: make delete table function public
+      - [PATCH 1575984]: block SIGHUP during reconfig
+      - [PATCH 1570982 ]: Solaris IF-MIB: Support for IPv6-only interfaces
+      - memTotalFree should report total virtual instead of physical memory
+      - build fix for --without-kmem-usage
+      - [BUG 1585815]: fix mfd bits length calculation
+      - [BUG 1427410]: Set auth engineID for SNMPv3 traps.
+      - [BUG 1502267]: Build access list in the correct order.
+      - [PATCH 1554827]: from rtyle: fix handling of failed proxy SET
+	requests
+      - [PATCH 1598966]: Fix bug #1598927: #elif build fix
+
+    snmptrapd:
+      - the traphandle directive now supports a -t switch to indicate
+	matching any OID in the tree below the specified OID
+      - [PATCH 1536773]: support partial oid matching
+      - [PATCH 1598968]: Fix bug #1587759: snmptrapd doesn't recognize -A
+	option
+
+    snmpdf:
+      - [BUG 1515507]: Handle failed requests better
+
+    perl:
+      - Fixed the perl bulkwalk function
+      - [PATCH 1575937]: fix usenumeric output in async varbinds so they
+	return OIDs instead of empty strings.
+      - update default_store module to latest default_store c-binding
+	tokens
+      - make perltest fixes for Solaris 2.6 and earlier
+      - 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.
+      - [BUG 2827269]: Suppress non-ordered TODO comments.
+
+    misc:
+      - Most net-snmp specific defines are now (also) available under a
+	proper NETSNMP_ prefix. The older, potentially conflicting names as
+	well as the autoconf variables can now be turned off by a special
+	define.
+      - [BUG 1585250]: don't use deprecated options in start script
+      - "make test" fixes for non-UDP transports
+      - [BUG 1577913]: add missing manual pages for executables, supplied
+	by Debian
+      - [PATCH 1596028]: from "Stephen J. Friedl": const fixes for the
+	mib_api(3) manual page
+      - RPM spec file fixes for 64-bit platforms
+
+    MacOSX:
+      - [PATCH 1566777]: build fixes for memory_darwin.c
+      - build fix for mibII/udpTable
+
+    Tru64:
+      - fix "auto_nlist failed on arptab_size at location 0" errors
+
+    IRIX:
+      - proper implementation for UCD-SNMP-MIB::laTable (avoiding nlist)
+
+    Solaris:
+      - [PATCH 1569537,1569539]: new UDP-MIB and TCP-MIB implementation
+	(enable through --with-mib-modules=udp-mib,tcp-mib)
+
+    AIX:
+      - use correct ARPTAB_SYMBOL and ARPTAB_SIZE_SYMBOL
+      - [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/COPYING b/COPYING
index 26db606..3eef440 100644
--- a/COPYING
+++ b/COPYING
@@ -229,3 +229,99 @@
 OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+---- Part 8: Apple Inc. copyright notice (BSD) -----
+
+Copyright (c) 2007 Apple 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:
+
+1.  Redistributions of source code must retain the above copyright  
+notice, this list of conditions and the following disclaimer.
+2.  Redistributions in binary form must reproduce the above  
+copyright notice, this list of conditions and the following  
+disclaimer in the documentation and/or other materials provided  
+with the distribution.
+3.  Neither the name of Apple Inc. ("Apple") 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 APPLE AND ITS 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 APPLE 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.
+
+---- Part 9: ScienceLogic, LLC copyright notice (BSD) -----
+
+Copyright (c) 2009, ScienceLogic, LLC
+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 ScienceLogic, LLC 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 10: IETF copyright notice (BSD) -----
+
+Copyright (c) 2013 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.
diff --git a/ChangeLog b/ChangeLog
index 1df020c..4651c14 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,105 +1,30038 @@
--------------------------------------------------------------------------------
-Changes: V5.4.3 -> V5.4.4
+# -*- text -*-
 
-2011-06-24 12:38  dts12
+----------------------------------------------------------------------
 
-   * configure, configure.in, include/net-snmp/net-snmp-config.h.in:
+Changes: V5.7.3.pre4 -> V5.7.3.pre5
 
-   Missing check for rpmts.h
+commit f3f371b276d265b455fc490fce1947dadf89e9c2
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 8 19:49:06 2014 -0700
 
-2011-06-24 12:20  dts12
+    make depend for 5.7.3.pre5
+
+commit 418132f43cc43231966a8b9672c626f60b991039
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 8 14:24:52 2014 -0700
+
+    fix the run-autoconf program
+
+commit 7db795949075efb489373f51f706636fe54a9835
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 8 14:24:52 2014 -0700
+
+    fix the run-autoconf program
+
+commit 78f1ef816ddad08e7d7c9e1b11e4b4ab26f6e4b0
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 8 13:28:47 2014 -0700
+
+    used the right autoconf
+
+commit 1eaeac801a3625b72b09c7da58038409cd8dc681
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 8 13:26:11 2014 -0700
+
+    Version number update: 5.7.3.pre5
+
+commit 7ecfd3ede19e9c2218c9bf5959c095ce9fa6c8ab
+Author: Brian Sipos <bsiposrkf@users.sourceforge.net>
+Date:   Wed Aug 6 10:30:54 2014 -0700
+
+    Fix detection of sha224 and sha384, patch from Brian Sipos
+    
+    https://sourceforge.net/p/net-snmp/bugs/2564/
+    
+    Luckily nobody's needed to build using an OpenSSL version
+    that doesn't support sha224 or sha384, since the inversion
+    of the test here would try to use sha224/sha384 support only
+    on OpenSSL versions that don't support them!
+
+commit a93991eaf53b199b19c582b630da25158300a9d1
+Author: Robert Story <rstory@localhost>
+Date:   Fri Aug 1 10:07:45 2014 -0400
+
+    fix #2482 snmp response: Too long
+
+commit 9f41d30b09e7c85b8268103ca320ac6cc32d5b04
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Jul 26 08:28:43 2014 +0200
+
+    Fix bug 2546: netsnmp_tdomain_transport_full uses wrong port for snmptrap + udp6
+
+commit db1f217541e00b53813d94f6befb9a42d4838e95
+Author: Jeff Gehlbach <jeffg@opennms.org>
+Date:   Fri Jul 25 16:11:23 2014 -0400
+
+    Fix bug 2562: Windows x64 build broken on 5.7.3.pre4
+
+commit 9741f08e75b4162bb3c8b449279f182d949da373
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Thu Jul 24 08:10:40 2014 -0400
+
+    Use the standard expr ":" syntax
+
+----------------------------------------------------------------------
+
+Changes: V5.7.3.pre3 -> V5.7.3.pre4
+
+commit 864abb5ba1eb324e423157db5fb1723f855973b2
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jul 23 15:07:41 2014 -0700
+
+    make depend for 5.7.3.pre4
+
+commit 5fc8f99c9f77ddadeeacedae7f06fea1767d4a9f
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jul 23 15:02:19 2014 -0700
+
+    fix C++ style comment
+
+commit 54a4a90a5529ea58add9e6af6a7e8ad065440828
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jul 23 14:49:41 2014 -0700
+
+    Version number update: 5.7.3.pre4
+
+commit c0d66826b71f05403f36c7f8234ff8f7ecbd1590
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Tue Jul 22 06:49:28 2014 -0700
+
+    When enlarging a large_fd_set, use FD_ZERO if possible
+    
+    The most common case of creating a large_fd_set on UNIX
+    is to create it with size zero, and then immediately enlarge
+    it to size FD_SETSIZE.  Instead of looping and calling
+    FD_CLR(), we can optimize this common case with the OS's
+    FD_ZERO.
+
+commit dcad31aeb442369a6fb52f4dc7d4f781bc56006c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 17 23:40:13 2014 +0200
+
+    Solaris does not like "grep -E" or "if !".
+    Propagate configures EGREP to man/Makefile.in and also used configured SED.
+
+commit a51cbedf7d1d424342ab5ca3a4b67217a364409a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Jul 15 21:45:54 2014 +0200
+
+    snmpnetstat/if.c: properly detect snmp exceptions
+
+commit eee92519f38e937f227bea7701ddb1157c8bcccc
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Tue Jul 15 07:27:18 2014 -0700
+
+    Close pipes when freeing config and kill child process on error
+    
+    When freeing the config, close the pipes corresponding to that
+    config, so they don't get leaked.  Also, if we have an error,
+    send a SIGKILL to the child process in case it is blocked and
+    won't die just because we closed the pipes to it.
+
+commit 8431f913554e0cccc48bedce1fd4a8a288b6c27d
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Tue Jul 15 07:19:33 2014 -0700
+
+    If the asp lookup returns NULL, don't try to use it
+    
+    If there is no corresponding asp, we set the result properly
+    but still fall through and attempt to use it.  Instead, just
+    continue.
+
+commit 146fa384d8b05e1e5a2c67f88d0eca0a304fa1f0
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Mon Jul 14 15:26:14 2014 -0700
+
+    Fix dependencies for auto-generated man pages
+    
+    Also make sure that the auto-generated .so files are listed
+    in the right Makefile variables, and update the variables
+    to include the ones that had been left out already.
+
+commit 4431728cf7a0950aed293d48c02e69000f5b83e8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jul 13 03:07:21 2014 -0700
+
+    AIX: Fix more compiler warnings
+    
+    Avoid that the compiler complains about casting away const, about
+    unused variables or functions, about missing function prototypes
+    and also avoid that the compiler complains that the type of the
+    third argument of mntctl() is wrong.
+
+commit 42a65f11e3ed56963f78a5c1561edd67658ccd00
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jul 13 09:47:26 2014 +0200
+
+    Remove C99 length specifier 'z' and use a cast instead
+    
+    See also commit b4eab11139eb122c9ad3c13ab8b9453e04e46842.
+
+commit 35d0f59cdd8894b8fbbad65370b5e301e377a37f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Jul 11 21:26:33 2014 +0200
+
+    Updated DOCS-IF-MIB reference
+
+commit 7a4d2ea2b3e163fdd98f067ae440faa3152c80c6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Jul 11 21:25:27 2014 +0200
+
+    Updated IANA mibs
+
+commit 01b3b6646413c14a050742726b97cf308b8fe09b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jul 9 23:51:27 2014 +0200
+
+    Add RFC 7257 vpls mibs
+
+commit b0be1d8ad2ccbcaa29ffc7cf884d02438c4c1665
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jul 9 23:50:21 2014 +0200
+
+    adjust debug token for netsnmp_sockaddr_in6_2
+
+commit 9920e9e767b10f029ab4b020e8259676d1a32b2f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jul 8 10:25:22 2014 +0200
+
+    AIX: Suppress a configure warning
+    
+    Avoid that the 'sort' command complains during the configure process
+    that its input is not terminated by a newline. See also commit
+    a63e381d9c1c9c87210bf2b022e3d6ac71d27a7e.
+
+commit b4eab11139eb122c9ad3c13ab8b9453e04e46842
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Jul 7 14:04:45 2014 -0700
+
+    AIX: Fix a few compiler warnings
+    
+    Avoid that the following compiler warnings are reported:
+    - Assignment discards const.
+    - Unused local variable.
+    - Mismatch between format string and argument list.
+    
+    Also correct the indentation of two Solaris-specific code statements.
+
+commit 0dd2783b747fb96d74978e11c82a504c0df1d555
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jul 6 11:12:30 2014 +0200
+
+    HP UX, CPU statistics: Fix an invalid pointer dereference
+    
+    See also commit 0034581deb3e676d328824c87637aaca31850c6a.
+
+commit dbd593132f719cc3d9bb5017ec8bc5c8cbb063b7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 3 23:23:29 2014 +0200
+
+    T071com2sec6_simple: use private host to check ipv6 address resolution to make sure we get the expected result
+
+commit 0034581deb3e676d328824c87637aaca31850c6a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Jun 30 22:08:34 2014 +0200
+
+    BUG #a2551: fix non-sequential cpu numbers on HP-UX.
+    Thanks to Dave Olker.
+
+commit b0f49ba21fb810efcb0992f01c4fc5fd30cf69af
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jun 26 21:42:48 2014 +0200
+
+    cpu_pstat.c: fix missing break(s) in switch statement
+
+commit a63e381d9c1c9c87210bf2b022e3d6ac71d27a7e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Jun 20 10:57:39 2014 +0200
+
+    Recent patch from Bart (Display module names sorted) make configure lose all module names on Solaris 8 and 10.
+    This changes the way the sorting is done.
+
+commit 60cf6a06ff73ae7d4f2454f2ef40c56fcd394bfa
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jun 18 22:19:32 2014 +0200
+
+    make test: bail out if netstat not found.
+
+commit c10f2acbfcc3834cd938641dc1a2c72aca7f7845
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Jun 10 16:06:59 2014 +0200
+
+    Fix stupid bug in pkg-ng patch
+
+commit e2da5489c3bb829762604c9d41f08cb3aedfd8a6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Jun 2 15:41:56 2014 +0200
+
+    PATCH #a1283: Recognize Oracle ACFS file system (Thanks John Haxby)
+
+commit 54c2cc2655c1b6c5485d99441aed2ac169eee5f9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Jun 2 15:26:00 2014 +0200
+
+    Install SNMP-TSM-MIB and SNMP-TLS-TM-MIB
+
+commit ce3091cbc48bc405c6eb1af7ddaeb370ed786471
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Jun 2 15:23:24 2014 +0200
+
+    BUG #a2537: Support *BSD pkg-ng
+
+commit 49e4e49b12aae0d8f7572839365d46cf932bfec9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Jun 2 15:18:46 2014 +0200
+
+    Fix FreeBSD system define chain
+
+commit 3c5e7124b35fd6aca4284eac365d74b69810785a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jun 1 11:27:25 2014 +0200
+
+    CHANGES: BUG: 1267 snmplib: register_mib_context() fix for read-only variables
+    
+    This is a slightly modified version of a patch from Harsha Shivanna.
+
+commit 56ecc433b09e985f1fdd786aae60b061ffac0382
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jun 1 11:12:47 2014 +0200
+
+    agent/mibgroup/ucd-snmp/lmsensorsMib.c: Fix compiler warnings
+
+commit c9cf8fd869f3791a58a71b8a63f5d61d67291fae
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jun 1 10:09:28 2014 +0200
+
+    configure: Display modules names sorted
+
+commit 27a16054d656eb10abd032dbac68ebbc26c76007
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jun 1 09:22:52 2014 +0200
+
+    agent/mibgroup/ip-mib/data_access/defaultrouter_linux: Rework netlink buffer alignment
+    
+    Based on a patch from Joshua Hoke. See also
+    https://sourceforge.net/p/net-snmp/bugs/2547/.
+
+commit bd13f004f6dc16dbe56ea5381662495745d937e1
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat May 31 20:16:20 2014 +0200
+
+    Windows: 64-bit fix for build-binary.pl
+
+commit 1fa4da1c6cf967606333f7e77e408b7f51ef6256
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri May 30 17:42:07 2014 +0200
+
+    Windows: Suppress Visual Studio 2013 warnings about strtoull()
+
+commit b31aede9c8b63461b5092e16d626a676b172f8aa
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu May 22 23:05:19 2014 +0200
+
+    PATCH #1277: Fix ifspeed for Solaris zones. Thanks to lijo
+
+commit 869f785541a1ea3b4278145867b152bec50d3eb0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Apr 30 14:52:31 2014 +0200
+
+    winExtDLL: Translate SnmpExtensionQuery() PDU type correctly
+
+commit e0107c26b3a0e30ae83235bb225feb78a1a15638
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Apr 30 15:38:55 2014 +0200
+
+    Windows: Silence a compiler warning
+
+commit 3a9f875423ccaa8baee7e164bb8a75dd8e0b7343
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue May 6 06:27:10 2014 +0200
+
+    PATCH #1279: Modified patch from Mohan for coredump after calling
+    free with a bad regex.
+
+commit 51302ba57285d4d47992ed15a460580112a3e924
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue May 6 06:21:24 2014 +0200
+
+    BUG #2521: AIX: dont die when CPU is dynamically added to system.
+
+commit 131c93ba92e46dddec4eb3a8208ab5a3c1026508
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue May 6 06:20:28 2014 +0200
+
+    Complain about -D option if debugging is disabled.
+
+commit 96a7a6a86895fdbf891799e3769b27a7e54af084
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue May 6 06:19:42 2014 +0200
+
+    snmptrapd.8: add some missing format tokens to man page.
+
+commit 80be907be9f4f1df6a1470feafaa916b9c9c4991
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Apr 27 15:25:30 2014 +0200
+
+    Fix bug 2313 for cross compilation.
+
+commit 9ae5981530fd2bdd9f2a5c86b7d6994b873033d7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 26 22:36:26 2014 +0200
+
+    Prepare for FreeBSD 11 and 12
+
+commit e32f70b12f57d26d69d491f1c742b0132aca7660
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 26 21:42:21 2014 +0200
+
+    Fix a couple of struct sizes to better match declaration.
+
+commit 7cc2deb5d915d2572328317d3701d35d861d3d92
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 26 21:34:26 2014 +0200
+
+    Use inet_pton onplace of inet_aton to help portability.
+
+commit a087fc9f164023de414b09bfd3747c72f1bca07f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 26 21:30:54 2014 +0200
+
+    Update to current IANA-ADDRESS-FAMILY-NUMBERS-MIB and current RFCs.
+
+commit 857037a8d2457ac9aa2a52510957647971a46634
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Apr 26 21:28:00 2014 +0200
+
+    Prepare for FreeBSD 11 and 12.
+
+commit b99308417d4be7e139f6103d44f11b55433a6bf1
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Mar 16 08:04:15 2014 +0100
+
+    Better documentation for trap logging formats.
+
+commit a6e4eb26f5c04d15761ceaf924580e0c40f72dfe
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Mar 9 08:46:57 2014 +0100
+
+    swrun_*: Simplify commit da00ba1
+
+commit 37af7923b832f2ec80837fa28edcac8eb0c7e8ea
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Mar 9 08:34:12 2014 +0100
+
+    swrun_*: Restore buffer overflow prevention code that was removed in da00ba1
+
+commit f436ce28fda3edc7010cd86ecf3c386c5af52196
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 8 14:07:57 2014 +0100
+
+    util_func: fix skipping of digits which would run one too far
+
+commit da00ba142d6b504255889f09eb9f7d222ef40ada
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 8 14:04:19 2014 +0100
+
+    swrun_*: snprint may have set a too long string length. Fix it if needed.
+
+commit 3b202eb05ec4e5f6f8f54bc8acb437373e6b5d03
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 8 14:02:18 2014 +0100
+
+    swinst_apt: ensure room for string terminator
+
+commit 8a66814edad5a28fdbc8645fb0e14459bf915da0
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 8 14:00:28 2014 +0100
+
+    mta_sendmail: isspace cannot take a char argument
+
+commit 3e734fb3bddf11b99b6ba7ddcb30ae932d8ba3b1
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 8 13:58:07 2014 +0100
+
+    expExpressionConf, expValue: isspace cannot take a char argument.
+
+commit 76e8d6d100320629d8a23be4b0128619600c919d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Mar 6 09:21:51 2014 +0100
+
+    CHANGES: snmpd: PATCH: 1275: from Viliam Púčik: fixed Perl trap handler when processing trap with empty community string.
+
+commit 5d06a5fbb5ed3ca2b5820e8ef2d5b5b88b9d7df8
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Mon Feb 3 11:58:03 2014 -0800
+
+    Allow the nodemap to contain multiple nodes for mibs like IF-MIB
+    
+    In the IF-MIB, "interfaces" and "ifMIBObjects" both contain
+    significant subtrees.  Allow nodemap to contain a comma-separated
+    list of nodes, to handle MIBs like this.
+
+----------------------------------------------------------------------
+
+Changes: V5.7.3.pre2 -> V5.7.3.pre3
+
+commit 54166cf6c7a98bf8e5d0dbabf9b5e5a255c4c421
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Feb 25 12:45:14 2014 -0800
+
+    make depend for 5.7.3.pre3
+
+commit 3d4e3a66bd097e3720fe5de2f2e05741b3306305
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Feb 25 11:42:15 2014 -0800
+
+    Version number update: 5.7.3.pre3
+
+commit a1fd64716f6794c55c34d77e618210238a73bfa1
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Feb 19 15:21:57 2014 -0800
+
+    bug fix from fenner: fix ICMP mib table handling on linux
+
+
+----------------------------------------------------------------------
+
+Changes: V5.7.3.pre1 -> V5.7.3.pre2
+
+commit bf0a1c37d8b8c644e837041d090aabe8fd8131e8
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Feb 25 07:49:04 2014 -0800
+
+    make depend for 5.7.3.pre2
+
+commit decfd8d79b54d298ded97439efb710e8f6ba524c
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Feb 25 07:33:52 2014 -0800
+
+    Version number update: 5.7.3.pre2
+
+commit 8aeccef39bbaeb8b8025a68ec4761bc82ec9aeaa
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Feb 25 07:27:47 2014 -0800
+
+    NEWS: snmpd: patch 2525: from Ryan Steinmetz: Fix argument length parsing of the host resources mib
+
+commit b222e7a3eef59cbb68a453476cb364342c74e640
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Feb 19 22:26:08 2014 +0100
+
+    Fix speling error
+
+commit f8fcb3bc38188ccbe9bacee58d6fd2b983d09927
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Feb 19 22:24:26 2014 +0100
+
+    Fix speling error
+
+commit d214d70c4524e62fccaf1083abc5ba1a439a463e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Feb 19 22:21:55 2014 +0100
+
+    snmpstatus: detect SNMP exception responses.
+
+commit bf75ec66965d157cb0442f7dff5656f99cd70635
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Feb 19 22:20:05 2014 +0100
+
+    Fix test for com2sec6 access.
+
+commit 6567a37fa301b8fa1b68009d5a0b3a3cbfb9e8f1
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 17 21:49:13 2014 +0100
+
+    testing/Makefile.in: make sure '$' survives for perl test.
+
+commit 05b551bc331185eda1c081d3138d0ac625b07d6a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 17 21:36:48 2014 +0100
+
+    Fix some man page spellings.
+
+commit 8b0555d95cbc238cbe9836439b88070c80a9ca5e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 17 21:35:28 2014 +0100
+
+    snmpnetstat: fix call of memcpy with overlapping areas.
+
+commit 3c6a7a6c947424824e724e294483a7ecd70d9d41
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 17 21:33:47 2014 +0100
+
+    route_ioctl.c: set proper mask before SIOCDELRT.
+
+commit f99ef5cef203ea378553a2ab4925fcd869e7f5a3
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Tue Feb 11 08:47:51 2014 -0800
+
+    David Jarvie's patch for bug 2507
+
+commit d70f2e91e2c7258e768e32b683d814a941564ac1
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Mon Feb 3 11:58:03 2014 -0800
+
+    Allow the nodemap to contain multiple nodes for mibs like IF-MIB
+    
+    In the IF-MIB, "interfaces" and "ifMIBObjects" both contain
+    significant subtrees.  Allow nodemap to contain a comma-separated
+    list of nodes, to handle MIBs like this.
+
+commit 98781ae3da43b7b1583ecde3e21bb6525a2c0b80
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Jan 27 22:24:18 2014 +0100
+
+    route_ioctl.c: Fix setting the netmask when creating route through
+    inetCidrRouteTable and ipCidrRouteTable.
+
+commit 2e94777693f1853479ded670be307ece7138feb5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Jan 27 22:13:05 2014 +0100
+
+    Fix compile for Solaris without IPv6.
+
+commit 8f6991a2114fd21ba5519ee9576beb082f603dec
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jan 23 16:30:46 2014 +0100
+
+    snmpnetstat: search ifName and ifAlias when looking for interface
+    name from -CI option.
+
+commit 4a360104659c169ce232256e138d938d94e435f9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jan 23 16:28:32 2014 +0100
+
+    logmatch: fix out-of-bounds access. Thanks to gcc or clang
+    with -fsanitize=address (recommended!)
+
+commit eef2f64b46357b353c79504bc593535ebe7421e7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jan 23 16:27:07 2014 +0100
+
+    cpu_linux: support systems with more than 100 cpus.
+
+commit 3bd683c96d6a8864fbd8078574aee8cd431ce302
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jan 15 18:36:01 2014 +0100
+
+    Update options lists in manual pages and commands help.
+
+commit a5efe8df17ddc4f6693c7da9a52c401f4db2be63
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jan 15 18:28:24 2014 +0100
+
+    test T027: make sure it works also when configured with --with-default-snmp-version != 3.
+
+commit 57d1082900f9ac931444316a6f95f19eda069074
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jan 15 18:26:24 2014 +0100
+
+    cpu_linux: remove redundant casts.
+
+commit 9f4c572614091404decba0d4ef1a4cbaf9fc5bd2
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 9 13:35:27 2014 +0100
+
+    CHANGES: snmpd: Fixed monitoring based on non-delta trigger.
+    
+    snmpd crashed wit following snmpd.conf:
+        monitor -s -D -r 10 -e LOGMATCH -o logMatchCurrentCount "Log Match" != logMatchCurrentCount
+        logmatch LoginFailure1 /var/log/secure 10 su: .*fail.*
+    
+    The reason was unitialized variable sysUT_var in mteTrigger_run(), it was
+    filled only if the trigger was delta-valued, while its value was used for all
+    triggers.
+    
+    With this patch, sysUT_var is filled for all code branches where it is needed.
+
+commit c7512afe5643ecaae9745ac199b839c3aad8457b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 29 17:34:51 2013 +0100
+
+    Regenerate dependencies
+
+commit c91f840d83981f660b75274dbcc387cb5c5f99af
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 29 17:29:26 2013 +0100
+
+    Regenerate dependencies
+
+commit 2dd7dba76d1d0b4f866834e0fd60148c281a153c
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 29 17:25:05 2013 +0100
+
+    Regenerate dependencies
+
+commit 591431f7991f83d2385adbc5a22c4a89576bc313
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 29 17:21:56 2013 +0100
+
+    Regenerate configure using the right autoconf version
+
+commit 85bb4b5c9f4896876715cb1f14f4f1b582d223bd
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 29 17:12:03 2013 +0100
+
+    Regenerate dependencies
+
+commit d255ca426d1e3d4bc48b8f3db937435788934c42
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 29 12:35:30 2013 +0100
+
+    CHANGES: building: Avoid duplicate and trailing spaces in the dependency files.
+
+commit d15cd2b9743cccb502deafd143ade0aa90cf31e4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 21 09:05:13 2013 +0200
+
+    MinGW: Build fix
+    
+    Apparently with recent MinGW header files <winsock2.h> should be
+    included instead of <winsock.h>. Modify <net-snmp/types.h> accordingly.
+
+commit 7ba23e57076499ef8eeb23885383473ccf447365
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Dec 15 10:58:25 2013 +0100
+
+    Win32: batch build: Check whether Perl architecture matches target architecture
+    
+    Building the Perl modules fails in a subtle way if e.g. a 32-bit Perl
+    interpreter is present in %PATH% and a 64-bit C compiler or vice versa.
+    Hence check whether Perl interpreter and C compiler target architecture
+    match before starting a build.
+
+commit 6b706c53d4cf751e495aab66fe39fd51c32ce930
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Dec 15 10:06:21 2013 +0100
+
+    Win32: Visual Studio 2013 build fix
+    
+    Apparently Visual Studio 2013 does not support goto <typedef name>.
+    Hence rename the UINT label. For consistency reasons, also rename
+    the OCT label.
+
+commit 13c8590e38269a9265ead5c85f05c8894e86d84c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Dec 15 09:31:44 2013 +0100
+
+    Remove the NETSNMP_DONTWAIT / NETSNMP_NOSIGNAL aliases for sendto/sendmsg flags
+    
+    Note: this patch is a more elaborate version of the V5-7-patches commit
+    89a504fe331e09a54f6b01c2877cf022900705a8 (2011-12-19).
+
+commit e0ead2d54ebf43533e562c3402e12188cfdc079e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Dec 14 18:54:01 2013 +0100
+
+    win32/build.pl: Add support for the Visual Studio 2013 command-line environment
+
+commit 8886095a99090293b06a0719e7b868f1edc14933
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Dec 14 18:29:01 2013 +0100
+
+    libagent: Win32 build fix (see also commit 01723c6)
+
+commit 5f32b4aaa8bcd22eba9c649223fe080d5479bc8e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Dec 14 17:17:30 2013 +0100
+
+    include/net-snmp/library/snmpUDPBaseDomain.h: Add a missing declaration
+
+----------------------------------------------------------------------
+
+Changes: V5.7.2 -> V5.7.3.pre1
+
+commit d0117adee84efcb58a5e4183f7d7cc6e700f0264
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Dec 5 23:33:51 2013 -0800
+
+    make depend for 5.7.3.pre1
+
+commit b1dbda8bbcca82377664dca9cb6bb06f9ce637a2
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Dec 5 23:33:37 2013 -0800
+
+    Replace // comments with /* comments
+
+commit 9ee396cec1811512fbcb24490b3be0b970f69ffb
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Dec 5 23:06:13 2013 -0800
+
+    Version number update: 5.7.3.pre1
+
+commit 6c392fed6cd5d7a32ed10c8170aed851cee77985
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Dec 5 23:04:25 2013 -0800
+
+    increment the revision
+
+commit f5403e7567eb071bed8dadba38a2cda60332b8fc
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Sun Dec 1 18:24:12 2013 -0800
+
+    Don't set the ifindex when sending a normal reply.
+    
+    Setting the ifindex in the IP_PKTINFO results in setting
+    the source address too (ignoring the source address that
+    we also supply).  The sequence here is that we send with
+    no interface specified but the request's destination
+    specified as our source.  If we get EINVAL, it's because
+    the request's destination was a broadcast address which
+    is an invalid source address, so we try again with the
+    incoming interface's if_index and specify the source
+    as INADDR_ANY.
+    
+    If we supply the ifindex in the first call, a reply from
+    a multi-homed agent may come from a different source address
+    than the request was sent to, potentially confusing a manager.
+    This bug was first introduced in SVN r17855 and was fixed
+    in SVN r19767; also see the mailing list thread
+    http://sourceforge.net/mailarchive/forum.php?thread_name=AANLkTim37H7M7Ba010Lmdk1YGYKwPTkDyRKoDr76uqDT%40mail.gmail.com&forum_name=net-snmp-coders
+
+commit 144a13208b4fa6f0a1cd971f41a7279716b27eee
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 29 08:07:28 2013 +0100
+
+    snmpnetstat: fixing the stats output broke the conn output :-(. Fixed.
+
+commit f4e5ee6f39630b73f8ad9946c990e9690580d7cf
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Nov 27 01:12:00 2013 +0100
+
+    CHANGES: testing: Add tests for asn_realloc_rbuild_*int* and tests for opaque unsigned 64-bit types.
+
+commit 20e4b37932a9e9cc56b360a236e9d8180793a297
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Nov 27 00:54:58 2013 +0100
+
+    CHANGES: snmplib: Correct the type check for opaque variables when decoding counter64 values.
+    
+    Thanks to rkj@softhome.net for reporting this issue.
+
+commit 6e76cbbb2a0783f22f58fb7d323e9f7217cc604a
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Nov 27 01:01:04 2013 +0100
+
+    CHANGES: snmplib: Avoid failure to trigger sign extension due to overlong types
+    
+    In asn_realloc_rbuild_signed_int64 the algorithm assumes that shifting
+    values greater than 0x7fffffff right is an arithmetic shift that will
+    shift in 1's. On hosts where long is more than 32 bits the use of long
+    for 'low' and 'high' makes this assumption false.
+    
+    Thanks to rkj@softhome.net for reporting this issue.
+
+commit 4a4b78e63dd688892b7399b584e26e047d367501
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 27 22:16:44 2013 +0100
+
+    Additional fix for darwin13
+
+commit 91bd5d4c5f41b54c46242883db92aa4e49455294
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 27 22:13:03 2013 +0100
+
+    snmpnetstat: fix truncated statistics when using -v1
+
+commit 0cb14d4e5c39a07c78474881e6c73fa617507bdb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 27 22:06:58 2013 +0100
+
+    snmpnetstat: fix statistics for ipv6
+
+commit 2d4defe77bdebbbc1a773eb8d48498b6f2558f23
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Nov 5 06:49:35 2013 +0100
+
+    CHANGES: snmpd: Use 0 for the ignored numvars argument to netsnmp_register_mib
+    
+    The numvars argument of netsnmp_register_mib is ignored if the var
+    argument is NULL. In order to unify this use of it with all other ones,
+    change it from 1 to 0
+
+commit b9933e6183b1715c90d7cf6dfac1891000796bce
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Nov 22 23:04:08 2013 +0100
+
+    CHANGES: snmpd: Remove some unused includes
+
+commit a78307038bf0b4859e11bd86ca3049c339abe126
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 23 09:49:01 2013 +0100
+
+    CHANGES: snmpd: Add a missing function declaration
+
+commit d8d6078b3e65b5ba131df842d92c7743737ff955
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Nov 19 08:06:34 2013 +0100
+
+    CHANGES: snmplib: Mark register_signal and unregister_signal as unused.
+
+commit bf083f5b69ccb95ff70e2a28a7c64fec7d7e422e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 18 22:41:28 2013 +0100
+
+    Patch a1270: man page fixups (thnks Aleksandrs Saveljevs)
+
+commit 62a634ce671c38ade97917077039e34ae3d92734
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Nov 3 16:02:39 2013 -0800
+
+    Win32: Unbreak the build (see also commit 253f90743)
+
+commit a813b5111255f75fef6944cedd648dbf8c34a9ad
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Nov 11 17:54:44 2013 +0100
+
+    Win32: perl: Avoid transport initialization failure in Perl SNMP agents
+    
+    Avoid that the followingn message is printed during startup of a Perl SNMP
+    agent:
+    
+    netsnmp_assert s != (-1) failed ..\..\snmplib\transports\snmpUDPBaseDomain.c:484
+    
+    See also commit 36a7de7230fbbbb52cc37cbbed281eb559404be9.
+
+commit a2a3a1aa67ff38daa8f139518abb3548475ed591
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 8 22:32:29 2013 +0100
+
+    snmpnetstat: fix usage message to be closer to reality. Fix handling of -Cp and -Cf options with new tables.
+
+commit 7277400102dfca921eac0bd9cef86b32f598003d
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 8 22:30:14 2013 +0100
+
+    Clean up snmpnetstat man page, removing some left over cruft man
+    original bsd netstat page.
+
+commit eb0379db3853fad138f92f4792a8034177d9629a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 4 22:09:55 2013 +0100
+
+    Fix length of default router adddress using sysctl.
+
+commit 8fa46f29613c1792c4a14432944273b6d74e3f3c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 4 22:07:56 2013 +0100
+
+    Fix handling of command names with blanks on Linux.
+
+commit 6fcb381dcd460b79556339eb36fbe579bf49dc03
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 4 22:05:56 2013 +0100
+
+    Add LISP-MIB to rfclist.
+
+commit 1c5104741070219f13800d76afd57a0d636c243b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 4 21:54:36 2013 +0100
+
+    Fix paging statistics for OpenBSD 5.4
+
+commit 2f57b804e83b8f89b8969637f83d8886010838ff
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Oct 30 21:35:33 2013 +0100
+
+    Add darwin13 support file
+
+commit 823d51f79b84e13593e5b1ac9b407634c54346f4
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 21 20:49:53 2013 +0200
+
+    Fix make install in man directory for Solaris caused by VPATH oddity.
+
+commit c575204a02059199428ce135bc12ecb385e36763
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 21 20:47:31 2013 +0200
+
+    Change an occurrenceof sprintf to snprintf.
+
+commit a2bda994019280278beded7917c877fcb448873d
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 21 20:46:30 2013 +0200
+
+    Better wording for statistic entry.
+
+commit 6644b05d3cf34123ceda74b7b84f16944359e7ca
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 21 20:45:15 2013 +0200
+
+    Fix warnings for libnl1.
+
+commit 940816e019171a0414ee00a46cda4ce60bc01f71
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Oct 5 11:05:12 2013 +0200
+
+    CHANGES: snmplib: PATCH: 1265: Fix a buffer overflow in dump_realloc_oid_to_inetaddress()
+
+commit 0992ecf8fc5d87837006d4bc3a8681e5736e3573
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Oct 17 07:16:23 2013 +0200
+
+    pass_persist: zap possible CR at end of line.
+
+commit eb88e024b4c267994de40401e8b7d77e32dec6cf
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Oct 15 21:33:56 2013 +0200
+
+    Maintain byte order for IPv6 port numbers in transport data (problem surfaced in snmpTargetAddrEntry)
+
+commit f2e57b8e638a1fcdc85fd0fd2f6552a33fcab3f8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Oct 15 21:17:21 2013 +0200
+
+    snmpnetstat: better handling of snmp exceptions.
+
+commit e0280294e7e6bebd62fbab9928b1b5f01b735e72
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Oct 15 21:15:39 2013 +0200
+
+    Fix DISPLAY-HINT for negative values and hint "d-n".
+
+commit 1abb5a094d27514b8147b1128db2cddcb1703bb8
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Nov 2 14:45:42 2012 +0100
+
+    Use NETSNMP_PRIz to print size_t values in _sess_read
+
+commit acb72589acb3018e443f5e3f654dd03f7c26316a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Oct 1 18:41:51 2013 +0200
+
+    Add forgotten icmpOutEchos to icmpMsgTable.
+
+commit 253f907439151023a92a3ac43a9f317e3a4e17fa
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 30 22:13:43 2013 +0200
+
+    Solaris: support icmpMsgStatsTable
+
+commit 6ee91f06b5bd0e0cbd2b69f3dae0bf6141cc9556
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 30 06:59:10 2013 +0200
+
+    Solaris support for IP-FORWARD-MIB
+
+commit 4ebdf3fb0445f9067ecb38394c2df2bd3b738182
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 30 06:54:28 2013 +0200
+
+    Properly handle the 'b' display hint.
+
+commit 7f2edbf68348cabeaf995aaba1b2a7893d18c5e7
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Aug 30 08:50:09 2013 +0200
+
+    Remove some commented out defines
+
+commit 435ee1f4023cb002245c3a56dbeaba37a3d3edbe
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Sep 28 14:26:10 2013 +0200
+
+    Patch a1259 (bug a2456): problems with ipCidrRouteTable on 64-bit bigendian machines. Thanks to Christopher Wu.
+
+commit 9a6f566392a3cf12dab488a76d69fc873dbec2ac
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Aug 25 10:18:53 2013 +0200
+
+    CHANGES: snmplib: Rename memdup() into netsnmp_memdup()
+    
+    Rename the function memdup() defined in libnetsnmp.so into
+    netsnmp_memdup(). This avoids conflicts with memdup() functions
+    defined in other libraries that define a function with the same
+    name. As an example, if WINS name resolution has been enabled via
+    /etc/nsswitch.conf then performing a host name lookup can trigger
+    a crash in the SAMBA WINS name lookup library because calls to
+    memdup() from that library get redirected to the incompatible
+    Net-SNMP memdup() function. See also
+    https://bugzilla.redhat.com/show_bug.cgi?id=1000780 for the details.
+    This patch intentionally changes the Net-SNMP ABI.
+
+commit 3dde41998625fe0e24119a2e1f4509ba3ba2fd9a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 5 20:27:22 2013 +0200
+
+    CHANGES: Linux: BUG: 2238: Add libnl3 support
+
+commit a37957bee9f79db19bba93f11faa037921d6e584
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 23 22:24:15 2013 +0200
+
+    route_sysctl.c: Fix for linklocal routes on FreeBSD 10
+
+commit d9a7f9fc679455b0fa328fbae67ec2ee2906b94b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 19:42:51 2013 +0200
+
+    win32/dist/build-binary.pl: Automate building the installer
+
+commit eb1a1641500d6bcf39f9b847a2c06c9eda0c88c4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 19:32:31 2013 +0200
+
+    win32/dist/installer/net-snmp.nsi: Make it possible to build an installer without administrative privileges
+
+commit a9777ec9afb37ca6442166079bd5b2e0349be3e3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 18:35:55 2013 +0200
+
+    win32/dist/installer/net-snmp.nsi: Fix OpenSSL version check
+
+commit 5cb2cc7ab20b290a6c74585f985f9c912cdec8ce
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 10:25:00 2013 +0200
+
+    win32/dist/installer/net-snmp.nsi: Remove MSVC redistributable files from the installer
+
+commit 178120061ece48ccd97a3ae36b880da6b1095207
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 09:50:18 2013 +0200
+
+    win32/dist/build-binary.bat: Generalize
+
+commit 85a1c5026f10ff143f437f003894a6c4aa187a96
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 18:43:05 2013 +0200
+
+    win32/dist/build-binary.pl: Fix x64 detection
+
+commit a0c2a7ab42997433e707c10f8acf61f912442f70
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 17:28:54 2013 +0200
+
+    win32/dist/build-binary.pl: Examine two locations for MinGW bin dir
+
+commit cf1006e67f9c77fbda94d4521e78f0098c8a0e19
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 10:11:13 2013 +0200
+
+    win32/dist/build-binary.pl: Fix SSL build
+
+commit b47f136bea8ef5468a20d9452b12318db6c349eb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 17:05:37 2013 +0200
+
+    win32/dist/build-binary.pl: Add WSDK support
+
+commit 0e18a206aaa490fdeb2c70a0e6e52c91eb5f3ed9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 09:48:06 2013 +0200
+
+    win32/dist/build-binary.pl: Reduce code duplication
+
+commit 85df02b836320cc45e5d2db45483bc508631446c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 10:02:21 2013 +0200
+
+    win32/Configure: Fix build without OpenSSL
+
+commit 3f9adb987b5bf5d2d095cfd6ea2da9cd81d1bec4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 22 09:15:41 2013 +0200
+
+    snmplib/transports/snmpUDPBaseDomain.c: Win32 build fix
+
+commit a6e1851fbe747cf15ed075807781ce89a34e96c2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 21 19:55:02 2013 +0200
+
+    Restore "CHANGES: Win32: perl: BUG: 2488: Avoid "Free to wrong pool" error"
+    
+    This reverts commit b2725964bde921b6285e3a59a512552cae0a0ca5.
+
+commit b2725964bde921b6285e3a59a512552cae0a0ca5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 21 19:49:58 2013 +0200
+
+    Revert "CHANGES: Win32: perl: BUG: 2488: Avoid "Free to wrong pool" error"
+    
+    This patch is not appropriate for the v5.4 branch.
+
+commit 6453717f6ac665bf532744a86cdb898aaf83d6bf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 21 19:34:25 2013 +0200
+
+    Add reproducer for bug 2488
+
+commit 0d0a4629702eb9f9fe9956c1bac4b445610ff3c7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 31 17:21:22 2013 +0200
+
+    Simplify snmpTargetAddr_rowStatusCheck()
+
+commit 4b87e3cb4d3679ab60c353ba4ff301f6842b84bc
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 21 16:37:09 2013 +0200
+
+    testing/fulltests/default/T068execfix_simple: Simplify
+
+commit 65c88e2ecf5de9365c83c46ef3bb4cd89cdc44e8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 15 11:11:43 2013 +0200
+
+    CHANGES: Win32: perl: BUG: 2488: Avoid "Free to wrong pool" error
+
+commit 1a4855da4b1dd693a2b0377b91e9c33e3c7f2a4d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 21 17:11:45 2013 +0200
+
+    CHANGES: perl: BUG: 2402: Add support for SNMPv3 traps
+
+commit 3d0515693f6a0d29d39dd0c868d378c74bc4f87c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 21 09:16:33 2013 +0200
+
+    testing/fulltests/default/T068execfix_simple: Port to MinGW and FreeBSD
+
+commit 5b6e431d9f663a3c327d71dac95392cfd86b3291
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 21 09:03:59 2013 +0200
+
+    agent/mibgroup/ucd-snmp/extensible.c: Fix compiler warnings
+
+commit 9f2e8fc8d9a26f57ab089aba3d1ae26b3e8f2d54
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Sep 17 22:30:38 2013 +0200
+
+    Fix dependency for FreeBSD10
+
+commit a506efdd1db824a9eeee03d0021c90faf3b62924
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Sep 17 22:29:34 2013 +0200
+
+    snmpdf man page: fix formatting of -Ch/-CH options
+
+commit a2e97bebfc52170f9ec1036d24aa84f59cf2e508
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Sep 17 22:27:49 2013 +0200
+
+    Update the BSD multi-cpu counters code to work without configure help.
+
+commit c85d64d54b06879a3a691dadffc03bfb1f59096d
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Sep 17 06:37:18 2013 +0200
+
+    Only test the execfix configuration directive if it is enabled
+
+commit ed8b697cea0679de7be5b3f5d469134e1cdaed56
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 7 10:27:02 2013 +0200
+
+    m4/ac_add_search_path.m4: Fix a comment
+
+commit f779c5e9467885852f16c5541a380111f9ead061
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 7 20:28:29 2013 +0200
+
+    agent/mibgroup/host/data_access/swinst_apt.c: Fix compiler warnings
+    
+    Remove the unused variable 'rc' and fix a format string.
+
+commit c6439627d09f503fdc8cfa32d884e83473831754
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Mar 8 00:13:05 2011 +0000
+
+    allow for v2c SET support testing
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20084 06827809-a52a-0410-b366-d66718629ded
+
+commit 5cbd54341a2a79bf8537377d11372483f08647ad
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 14 14:28:21 2013 +0200
+
+    regression tests: Add a test for the execfix configuration directive
+
+commit 1c756349e4d31d39ec2fc53c6440ae53b3b03df0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Sep 7 20:28:56 2013 +0200
+
+    snmpd: ucd-snmp: Fix a potential crash in fixExecError()
+    
+    Do not interpret a command specified via the execfix configuration
+    directive as a printf() format string.
+
+commit 8b140d0965e11f5921768bf05d0c2b1941c0d335
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 31 17:10:55 2013 +0200
+
+    SNMP-TARGET-MIB: Declare local variables at file scope static
+    
+    Also, declare those variables const that are not modified.
+
+commit 7b82c61e753e157c4b8698219006f2f83df52801
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 31 16:51:15 2013 +0200
+
+    SNMP-TARGET-MIB: Eliminate two superfluous casts
+
+commit dbcf47dd4fe5262ad0fad7c97745209589540c40
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Sep 11 10:21:32 2013 +0200
+
+    Reword the includeFile search process to fit the implementation.
+
+commit 85073085d67ed66ab74611c8e5f810192491ba68
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 9 22:26:23 2013 +0200
+
+    Patch a1263: Make database name configurable for trapd sql logging.
+    Thanks to Robin Sonefors.
+
+commit 7e7258ef8b32f974048f3fd098a9da526da2e613
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 9 22:17:15 2013 +0200
+
+    Patch a1262: Fix memory error caused by confusing size of pointer
+    with siuze of pointed area. Thanks to Robin Sonefors.
+
+commit 586e07b8de51b05400d582facd91d4410dd37703
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 31 17:09:59 2013 +0200
+
+    snmpd: Constify a few arguments of MIB registration functions
+    
+    Note: this patch does not change the ABI.
+
+commit 44c3671dd93fe0f08299e61d0a422fd072b490e6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Sep 8 07:35:46 2013 +0200
+
+    Run autoreconf
+
+commit 62dadefa1b2688c02792e9fd2d3fc31c79ed11c3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Sep 6 11:54:13 2013 +0200
+
+    swrun_darwin: Fix buffer overrun when collecting hrSWRunParameters
+
+commit 1e0526f85ed61567ca6ea53b566c772992111c9e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Sep 4 22:30:40 2013 +0200
+
+    Add a couple of contributors to README
+
+commit edc608ebd5d0219863bc5f656d177b1d561048c2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Sep 4 21:59:18 2013 +0200
+
+    Fix a printf format warning.
+
+commit fb24f733cb316c35ccfdc59f487b65e0cd974c68
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Sep 4 21:54:27 2013 +0200
+
+    snmpnetstat: Indent ICMP histogram for readability.
+
+commit f7943a5d58a6f953c79fb55ab897c849228edb8a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Sep 4 21:45:19 2013 +0200
+
+    Recognize zfs file systems
+
+commit ab4370baf5ccc146f8d1c839bb0f419ee37e71c2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 2 21:21:25 2013 +0200
+
+    Patch a1261 (Bill Fenner): Fix crash when mib-indexes are not all readable
+
+commit c6caa3007f60f6cdeaa134152758645a73a7fe64
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 2 19:39:14 2013 +0200
+
+    snmpnetstat: Proper tests for v2/v3 exception results (Bug a2477)
+
+commit 39420bd40b7a1ba720a9cbb92264d3f9cc0a7e2f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 21 22:08:41 2013 +0200
+
+    PATCH a1260: Support multi-cpu usage for Free/Net/Open-BSD.
+    Thanks to Pablo Carboni for first stab at this.
+
+commit 62305cd028d8abf430121e9008acc8f0d1871e1c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 21 22:08:41 2013 +0200
+
+    PATCH a1260: Support multi-cpu usage for Free/Net/Open-BSD.
+    Thanks to Pablo Carboni for first stab at this.
+
+commit cc2fe6bde6a3c28b3c1ad165c9ba3fc1d583c253
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Aug 25 08:23:43 2013 +0200
+
+    IP-MIB: Fix Doxygen header of netsnmp_ipaddress_ipv4_prefix_len()
+
+commit 96302af7fc3108c208227432f0f0b75f3e7b906d
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Aug 28 10:59:05 2013 +0200
+
+    Correct conversion factor from microseconds to centiseconds.
+
+commit e8cf766e083834af7fdfed877dbe8810bf00a4ea
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Aug 19 22:17:11 2013 +0200
+
+    Fix netsnmp_ipaddress_ipv4_prefix_len to take an argument in network byte order as dokumentet
+
+commit a0c59a3b458e8a8dfb059a62792d25a4c5c9fc9e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Aug 19 22:14:15 2013 +0200
+
+    Fix netsnmp_ipaddress_ipv4_prefix_len to take an argument in network byte order as dokumentet
+
+commit 66b9bfba4eae84944abf4e6d074894acd0513c6b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Aug 19 22:12:57 2013 +0200
+
+    Fix netsnmp_ipaddress_ipv4_prefix_len to take an argument in network byte order as dokumentet
+
+commit ec96b35d5060c09b9f53d4dec73fb7965c2ac145
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Aug 19 22:11:36 2013 +0200
+
+    Fix netsnmp_ipaddress_ipv4_prefix_len to take an argument in network byte order as dokumentet
+
+commit b27b47b5798469e9ab5bd4b51ac39d43fcd95608
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Aug 17 10:12:14 2013 +0200
+
+    CHANGES: testing: Make sure Test::Harness is of at least version 1.21
+    
+    Test::Harness 1.21 is the first version that implements TAP v12 which allows
+    putting the header (1..N) after the tests and since our tests utilize that
+    we should make sure that the test runner supports it.
+
+commit 14f8d4ad6f06d09d87096dd68137a125a039c562
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 29 17:42:54 2013 +0200
+
+    CHANGES: AIX: Make udp-mib build
+
+commit 38d77c7c20a3e7979c09c5144f86934ed46540dc
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 29 17:39:38 2013 +0200
+
+    CHANGES: AIX: Make tcp-mib build
+
+commit 58fd23b7110c93ee496ffafe868539c2af8543bd
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 16 10:39:03 2013 +0200
+
+    Win32: Build fix: Export skip_white_const(), skip_not_white_const() and read_config_read_octet_string_const()
+
+commit 0ab9cd1655d46f968dc12bd6714ac17b9bce5e71
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 16 08:28:08 2013 +0200
+
+    CHANGES: snmp-usm-dh-objects-mib: Avoid triggering an assert statement in netsnmp_ready_monotonic()
+    
+    The cache timeout for snmp-usm-dh-objects-mib is -1. Any cache timeout
+    value < 0 disables caching. However, strictly negative values trigger
+    the assert statement in netsnmp_ready_monotonic(). Avoid triggering that
+    assert statement.
+
+commit 1fa584b222c56724378f5c85993eeee6515260ab
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 16 10:02:47 2013 +0200
+
+    CHANGES: snmplib: Fix NETSNMP_FD_SET_BYTES()
+    
+    This patch avoids that unit test T009large_fd_set_clib crashes on AIX.
+
+commit 95ac190b526dba5205637411a892b52b9ed6b94c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Jul 21 17:16:42 2013 +0200
+
+    CHANGES: BUG: 2476: snmpd fails to start on AIX
+    
+    On an AIX system there is no <kvm.h> header file nor do the /dev/dmem
+    or /dev/drum devices exist and hence DMEM_LOC is not defined. Avoid
+    that init_kmem() fails in that case.
+
+commit 50481b769e29fc5ce6b1e40ce568185bb0898458
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 16 07:22:02 2013 +0200
+
+    snmpd: Refactor init_kmem()
+    
+    This patch does not change any functionality.
+
+commit cd7ef7be391035d9df05edc6ac9e6f3519b46f8b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Aug 14 23:38:21 2013 +0200
+
+    CHANGES: snmplib: Be more robust if clock_gettime fails.
+    
+    On RHEL3 it seems clock_gettime(CLOCK_MONOTONIC, ) always returns EINVAL but
+    it works for the other clocks.
+    
+    Further, the old code which returned a constant { 0, 0 } caused the test suite
+    to get stuck in a loop if no response arrived - thus this code have the
+    advantage of working less bad.
+
+commit 9d71feea271f91cc9b7adee6613af19eba7ec6cd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Aug 14 15:56:56 2013 +0200
+
+    Fixed return value on error.
+
+commit 9621f4cdc5a19cee4e11bf27094abf3339ddc30e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Aug 14 15:48:39 2013 +0200
+
+    Removing useless check, entry->d_name is array and can't be NULL.
+
+commit e41c2f574c25d8dd273f2406eeeac19bc2ae16db
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Aug 12 14:30:51 2013 +0200
+
+    CHANGES: snmplib: Fixed parsing of sequences.
+    
+    Don't overwrite 'data' variable, it's used when parsing bulk responses.
+
+commit 390303059fbd98b1ee7621ddd4ad4c11d100fff9
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jul 28 21:28:14 2013 +0200
+
+    Revert 78dac6e37943d1ad99841898806ea60b0eede636 and resolve a2478 in a way that avoids truncating snmpTargetAddrTimeout.
+
+commit e59d5db6d6e72d134591bbaaa6faa59b29338191
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jul 28 21:17:58 2013 +0200
+
+    Check that the timeout value is in range.
+
+commit 4ecb36a7aba3ab0efa89351650ce053ebcf48b6a
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Jul 29 21:54:25 2013 +0200
+
+    Check that snmpTargetAddrTimeout handles setting properly
+
+commit 1ae85b672eb07d0c01a54e06d3ddd4f4dc58ff2e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jul 28 10:43:17 2013 +0200
+
+    Add some more tests for snmpTargetAddr
+    (cherry picked from commit 6e13ebb85e44049846eae7f60e050375f9acf58e)
+    Sanitized
+
+commit 6a5a047cbc11d62df04a9666908f7652b217c1aa
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Aug 1 23:19:34 2013 +0200
+
+    Reinstate the check for creation of entries with embedded NUL's in the name
+
+commit 533bb80a5a4305b35dbb797444bd596d7d59951c
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Aug 1 22:55:45 2013 +0200
+
+    Sanitize.
+    
+    Change to use SNMPv3 since that is writeable in V5-6-patches.
+    Change to check values on index 'A'
+    Remove the check for embedded NUL in indices.
+
+commit b24bf46220aaaf5794e940f5d4673db71339f9c0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Jul 20 12:39:59 2013 +0200
+
+    Add tests for snmpTargetAddr
+    (cherry picked from commit 71f319cd23445c6e22a60a1a85f31c2b6904b3fb)
+
+commit 6e13ebb85e44049846eae7f60e050375f9acf58e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jul 28 10:43:17 2013 +0200
+
+    Add some more tests for snmpTargetAddr
+
+commit 0769f420d8f427993b1340fdb7ecb3bc049d3f6c
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Jul 25 08:15:32 2013 +0200
+
+    First shot on handling certificates with embedded nul characters
+
+commit d833b0c8be509bfa3b8001ae6f552289ce9567d0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Jul 20 12:41:40 2013 +0200
+
+    CHANGES: snmpd: Make it possible to use NUL characters in the indices for snmpTargetAddrTable
+
+commit 71f319cd23445c6e22a60a1a85f31c2b6904b3fb
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Jul 20 12:39:59 2013 +0200
+
+    Add tests for snmpTargetAddr
+
+commit ea39e3676665b7e8cc5dfeb5bbbcd0ad434ad912
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Jul 18 01:36:26 2013 +0200
+
+    CHANGES: snmplib: Make the data argument to read_config_save_octet_string accept constant values
+
+commit 78dac6e37943d1ad99841898806ea60b0eede636
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 22 12:39:00 2013 -0700
+
+    fix bug number #a2478: fix mib representation of timeout values
+
+commit a7e3bc8ddbe387ebf6f3f6b050e2992956bd2e61
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 11 20:14:47 2013 +0200
+
+    Fixes for memory statistics from *BSD
+
+commit 9dbe12403ceaafe617f7d49993316a249fcbb99a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 11 20:13:36 2013 +0200
+
+    Fix a missing newfile in a debug message
+
+commit 041deedf81537bc6169298753f9dca3f6cd61a35
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 11 20:12:12 2013 +0200
+
+    Make sure we don't make IPv6 mask longer then 128
+
+commit c67c78940339faeab42b1b1a0a6be6cd6dfe2e22
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 11 20:06:31 2013 +0200
+
+    Implament ipAddressTable for *BSD
+
+commit b181e43a6d1f567bfd10717a77df1848e3bb0f43
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 11 20:05:08 2013 +0200
+
+    Mark OS threads as such.
+
+commit e36a5cc5f20272afff4228e7e4391dd5e6c063b3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Jul 11 20:03:36 2013 +0200
+
+    Fic some man page cross references
+
+commit ecf8682d864d2f08525078543858d361b3adca5c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jul 10 10:47:33 2013 +0200
+
+    Lower importance of debugging messages, they spam syslog.
+
+commit ef963063de49485bd91c129e053f06d0744483e1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jul 4 11:34:25 2013 +0200
+
+    Fixed size of netlink message.
+    
+    Preventing kernel to log 'netlink: 12 bytes leftover after parsing attributes.' message.
+
+commit 2e0d1087313b0fa083e2b1ca4895fbf248d63ca9
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Jul 4 22:04:12 2013 +0200
+
+    Run autoreconf
+
+commit c7fba78e1225254a0f65605f381aedd7d8a212ca
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Jul 4 21:47:09 2013 +0200
+
+    Run autoreconf
+
+commit 571bd407f8be9c94cc552d4d3b7f5b6b0984d237
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Jul 4 21:39:59 2013 +0200
+
+    Run autoreconf
+
+commit 8aa50edba7a2d966d8dfc7ff4d7c78efdde8c5bd
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Jul 4 08:53:56 2013 +0200
+
+    Use AC_LINK_IFELSE instead of AC_TRY_LINK as the latter is deprecated
+
+commit 59c6ae34625ee04ace3824ec404613e0b51dc1b0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Jul 2 17:40:54 2013 +0200
+
+    Use the cpp and linker flags from mysql_config when checking for mysql headers.
+
+commit f89cfcafdae21fab50a70bddf158ffd9e4e001d2
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Jul 2 17:39:25 2013 +0200
+
+    Use the output of mysql_config --include instread of the output of mysql_config --cflags ito find include files.
+    
+    According to the mysql_config man page, --include is recommended for greater
+    portability since --cflags might contain compiler flags for the compiler that
+    was used to build libmysqlclient which might clash with the ones used to
+    build the application.
+
+commit 68a6a1ca6dc4ca8901bacab598326af73b444654
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Jul 2 17:30:29 2013 +0200
+
+    Only check for mysql/mysql.h once. Remove HAVE_MYSQL_MYSQL_H since nothing uses it.
+
+commit ad87bb608b305567a3c5eaf046b7c98ea3e4bdd5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jul 4 11:30:04 2013 +0200
+
+    CHANGES: snmpd: PATCH 2472: from Sunil: don't use HBKT as heartbeat interval in SCTP-MIB::sctpAssocTable.
+
+commit 4c4a4281fd5b2c6156c5120f9a2e8b708f466ccd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jul 4 11:08:48 2013 +0200
+
+    includeDir is not predictable with relative paths
+
+commit 79e8dd2a372a20ee97de1c7107b59ad4aaf89a36
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jul 4 10:47:29 2013 +0200
+
+    Update configuration documentation with includeFile and includeDir.
+
+commit e0e804482bec70f4c416a35fcb323a4169965c5f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jul 3 15:08:14 2013 +0200
+
+    CHANGES: BUG: 2470: Accept 65535 as a valid IPv6 port number
+
+commit dd332a035e853c72a832748469bab7b882e27b7c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Jul 2 07:00:51 2013 +0200
+
+    BUG a#2463: Fix configure to respect data from mysql_config.
+
+commit 408cc9732c346111fc1fda23e136d60883cdb7e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Jul 1 14:25:41 2013 +0200
+
+    CHANGES: python: correctly report error when parsing malformed OID.
+
+commit 9a2bfc8f95d6e926dcbf16ff44b53b27e38c8437
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Jul 1 13:54:38 2013 +0200
+
+    CHANGES: python: Fixed returning of empty strings.
+    
+    Varbind type (SNMP_NOSUCHOBJECT etc.) should be used to detect errors instead of length of the variable - it can be empty string.
+
+commit 1a0f07574a80d1d6a6788caeb391a1d2fef95710
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jun 28 10:37:46 2013 +0200
+
+    CHANGES: snmpd: show Linux kernel threads in hrSWRunTable.
+
+commit 2659c0f6bd86f0171869d34ff8a7d48194ea4b31
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue May 21 09:13:41 2013 +0200
+
+    CHANGES: snmpd: Added btrfs support to hrFSTable
+
+commit a84039d0a1d6f550b473d295921010d80e18d83f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Jun 25 14:55:26 2013 +0200
+
+    snmp_strcat: dont test *buf before we have tried realloc
+
+commit 5553ef4362d524a088b519e13556158e5d625ec4
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jun 3 02:48:06 2012 +0200
+
+    CHANGES: snmplib: Do not printf("%s", NULL) as that is undefined behaviour.
+
+commit 89416e79f5c50568e99c07fab06a9ae9f976bbef
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Jun 24 22:22:03 2013 +0200
+
+    BUG: A2441: Correct comment
+
+commit 1a3ae6477b8163a1b43b834abb30b1f03145ab62
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 20:27:34 2013 +0200
+
+    CHANGES: HOST-RESOURCES-MIB, hrSWRun table: Parse /proc/<pid>/stat correctly on Linux
+    
+    This issue was reported by Vincent Bernat <vincent.bernat@dailymotion.com>.
+    See also http://sourceforge.net/p/net-snmp/patches/1257/.
+
+commit f92ffe917a300c41ebe07e24c6418855e759f938
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 19:37:03 2013 +0200
+
+    snmptrapd: Fix a double free in an error path
+    
+    Detected by Coverity. See also http://sourceforge.net/p/net-snmp/patches/1251/.
+
+commit c5f3a1d8bb5804799b602d2769b031d6faf5f0ed
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 17:51:43 2013 +0200
+
+    snmplib: hex_to_binary2(): Return -1 if memory allocation fails
+
+commit f8f08e1d6d3ec8194fabd6ab002ab917afba91a3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 17:13:01 2013 +0200
+
+    snmplib: Simplify the code for deleting a request from the request list
+    
+    The goal is (hopefully) that the new implementation does not confuse
+    Coverity anymore. See also http://sourceforge.net/p/net-snmp/patches/1251/.
+
+commit ef6d5c7a0313247a6c9473261777e963f7a49529
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 14:48:22 2013 +0200
+
+    CHANGES: snmplib: snmp_strcat(): Check *buf before using it
+    
+    Detected by Coverity. See also http://sourceforge.net/p/net-snmp/patches/1251/.
+
+commit 2566b83ebeb0e34eea907928c54c2b4e74ff37f8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 14:23:33 2013 +0200
+
+    hrSWInstalled table: Check stat() return value (2/2)
+    
+    Detected by Coverity. See also http://sourceforge.net/p/net-snmp/patches/1251/.
+
+commit 49cfe4d840c58e1202fa271fbe760bd7526a83a8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 14:23:03 2013 +0200
+
+    hrSWInstalled table: Check stat() return value (1/2)
+    
+    Detected by Coverity. See also http://sourceforge.net/p/net-snmp/patches/1251/.
+
+commit 5df5462639f243d5929fa9ba14d20b3711f7cace
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 14:21:18 2013 +0200
+
+    ucd-snmp: find_device(): Remove an unused variable
+    
+    Detected by Coverity. See also http://sourceforge.net/p/net-snmp/patches/1251/
+
+commit 13ce1996a82e0b458b26ae39abf2012db59c8a55
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 14:20:15 2013 +0200
+
+    CHANGES: snmplib: _insert_nsfile(): Check stat() return value
+    
+    Detected by Coverity. See also http://sourceforge.net/p/net-snmp/patches/1251/.
+
+commit 81a0d859163f8d54908525b52243295d7b414550
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 14:07:37 2013 +0200
+
+    CHANGES: snmplib: Fix a bad free()
+    
+    Detected by Coverity. See also http://sourceforge.net/p/net-snmp/patches/1251/.
+
+commit d34c83e9342419aeecff5ffd7deab83987dbebca
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jun 22 14:00:39 2013 +0200
+
+    etherlike-mib, rmon-mib: Fix malloc(...) < 0 tests
+    
+    Detected by Coverity. See also http://sourceforge.net/p/net-snmp/patches/1251/.
+
+commit 43c440176b3e4f9ce995e482ec6975ba0c859bf3
+Author: Michael Shcwarcz <Michael.Shcwarcz@compass-eos.com>
+Date:   Sat Jun 22 12:46:04 2013 +0200
+
+    CHANGES: snmptrapd: Fix a double free at exit
+    
+    A quote from a message from Michael Shcwarcz:
+    
+    I am running net-snmp 5.7.2 and it looks like there is a double
+    free problem in snmptrapd, in free_trapd_address() and
+    parse_trapd_address(). I get a SIGABORT on the second SIGHUP
+    (looks like it does a double free on the first SIGHUP and on
+    the second it crashes).
+    
+    I have this snmptrapd.conf configuration:
+      snmpTrapdAddr udp:162,udp6:162
+      authCommunity log,execute,net public
+    
+    And this is the back-trace from gdb:
+    *** glibc detected *** /opt/compass/bin/snmptrapd: free(): invalid next size (fast): 0x080c17a8 ***
+    ======= Backtrace: =========
+    /lib/libc.so.6[0xf7204845]
+    /lib/libc.so.6(cfree+0x9c)[0xf72066ec]
+    /opt/compass/bin/snmptrapd(free_trapd_address+0x2a)[0x804a6ba]
+    /usr/lib/libnetsnmp.so.30(free_config+0x32)[0xf74ae4c2]
+    /opt/compass/bin/snmptrapd[0x804a557]
+    /opt/compass/bin/snmptrapd[0x804bfa9]
+    /lib/libc.so.6(__libc_start_main+0xe5)[0xf71b0455]
+    
+    I have a patch that fixes this issue, here is the diff:
+    @@ -446,6 +446,7 @@ free_trapd_address(void)
+    {
+         if (default_port != ddefault_port) {
+            free(default_port);
+    +       default_port = ddefault_port;
+         }
+    }
+
+commit 2db5485fc1ccce39efa69a377bb8d6f6231eb0b2
+Author: Eric S. Raymond <esr@thyrsus.com>
+Date:   Fri Jun 21 10:47:32 2013 +0200
+
+    CHANGES: documentation: from "Eric S. Raymond": Correct man page markup problem
+    Ambiguous or invalid backslash.  This doesn't cause groff a problem.
+    but it confuses doclifter and may confuse older troff implementations.
+
+commit d6771464f16dc6fe64dd24c08af4be725885adad
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Jun 18 23:45:28 2013 +0200
+
+    CHANGES: apps: Stop agentxtrap from accessing the persistent configuration
+    This is needed to prevent moaning about not beeing allowed to write those
+    files due to bad permissions.
+
+commit 14ac5d5d2c4d9f3a799d401cc1e403a8a292d425
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jun 12 22:37:23 2013 +0200
+
+    Darwin fixes: UDP and TCP tables, memory data, and some error checking.
+
+commit babd31d1049e233c454f1cbd88bba75f2f40781e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jun 12 22:25:19 2013 +0200
+
+    Fix some man pages references to other pages
+
+commit bdefce06a1ea1c1430802714fc837b558e1a675a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jun 12 22:23:57 2013 +0200
+
+    Updated ENTITY-MIB in rfc 6933
+
+commit df863a5348aabf71bbca7bfefcf8beb8bb9e7762
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jun 12 22:17:46 2013 +0200
+
+    Fix Bug #2427: Cannot resolve IPv6 only hostnames, by accepting a list
+    of transport domains.
+
+commit da1fef382591ff45dc92eb3b95a6bfeff9ecfa4f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue May 21 09:13:41 2013 +0200
+
+    CHANGES: snmpd: Added btrfs support to hrFSTable
+
+commit 931c87a05f5f66289613fed77ac78844b61cb79f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed May 15 20:18:14 2013 +0200
+
+    BUG 2458: Fix missing initialization of auto_nlist structure (Thanks Ryan Steinmetz)
+
+commit 9104e2a3f195506a47733983d8cba38ed592a988
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed May 15 20:13:05 2013 +0200
+
+    PATCH 1253: Fix parsing of DEFVAL BITS (Thanks Mike)
+
+commit 855e54e345c55ea22b7e7ac12a249d7409fbb309
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed May 15 20:11:29 2013 +0200
+
+    rfclist: add RFC 6945
+
+commit 36527cd8cca650713c85e0328c0c2a1cd095c358
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun May 12 10:04:08 2013 +0200
+
+    Windows, Visual Studio: Unbreak compilation with the Windows XP Platform SDK
+    
+    This was reported by Wim Devos
+
+commit 517a5512102d339489c9a70ea8d087a0e10035a9
+Author: Wim Devos <Wim.Devos@meucci-solutions.com>
+Date:   Sun May 12 09:40:53 2013 +0200
+
+    Windows: Unbreak the Visual Studio build
+    
+    "static NETSNMP_INLINE" triggers the error message "error C2159: more
+    than one storage class specified", so use NETSNMP_STATIC_INLINE instead.
+
+commit 4df02f967d0b9d16ca12b58215e9835bc9f391ca
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat May 4 14:54:48 2013 +0200
+
+    Remove compiler warning about missing prototype
+
+commit 18dafa58d8121961b058d6d416707df1d6a042ac
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat May 4 14:53:10 2013 +0200
+
+    Remove one copy of the linux_states array. Make the whole thing const.
+
+commit 02ad81ea2de2d4687794057e2e8104a65239254d
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri May 3 08:08:01 2013 +0200
+
+    Revert the functional changes from 'Fix mixing of code and declarations'[1]
+    in order to not use variables before they are set and not increase the
+    probability for memory leaks.
+    
+    1) rev eefc25ca6705a2d1a8f5216076f439e0d3e3ef76
+
+commit 4fd0525d6a65acfea3d7b431c97893dc47927da8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu May 2 22:45:51 2013 +0200
+
+    autoconf
+
+commit 55ddd8295ae65e47f220f4807794fbac9b69f0fa
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu May 2 22:20:46 2013 +0200
+
+    testing: Document why we skip tests
+
+commit eefc25ca6705a2d1a8f5216076f439e0d3e3ef76
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu May 2 22:13:42 2013 +0200
+
+    Fix mixing of code and declarations.
+
+commit b94b734dd353bcf793c8b65a273a1387bfd256ea
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu May 2 22:12:11 2013 +0200
+
+    Darwin: support 64-bit counters for diskio table
+
+commit 8d841c1d9b1b4eec264d682ac126032aa08f2e82
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu May 2 22:09:17 2013 +0200
+
+    CHANGES: Support new MIB structures and MFD rewrites under Darwin
+
+commit 27640fcfb20526bef2f6eb40c2a54566dfc6c4c6
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 27 10:58:29 2013 +0200
+
+    CHANGES: snmpd: Correct the size of of the EXAMPLEIPADDRESS value on L64 hosts
+
+commit ebbe2a3990ef6dcbdcb99a39add465398354c34c
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Apr 23 07:25:21 2013 +0200
+
+    building: Make --enable-minimalist compilation work again
+
+commit 4bd7d73b1fe60bb536bf39eb4a38596e8965c3f3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 22 22:25:38 2013 +0200
+
+    typecast to silence warning for format
+
+commit db071d0a6f487421769b69f22ccf09cc242d9454
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 22 22:23:52 2013 +0200
+
+    Only declare HRP_maxnames when needed
+
+commit faf00ce3b0feb4d37fabef6d4135e36803b00379
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 22 22:22:24 2013 +0200
+
+    ip.c: fix inconsistens declarations of ip_module_oid_len
+
+commit 7f6b59533cdfa06450aee41570223b1cdd2ca6b8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 22 22:19:44 2013 +0200
+
+    Recover from failures in libpci
+
+commit 40938a62619590b4ea071ae85baa2f42a0b7fcb2
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Apr 22 15:00:00 2013 +0200
+
+    Check if 'asn_parse_* ' actually succeeded.
+    
+    If not, discard the packet instead of using wrong data.
+
+commit aa4fb949012d7c022a436992ac203c065fd7420a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Apr 22 14:58:41 2013 +0200
+
+    Integer values encoded in BER must have at least one character.
+    
+    If asn_length == 0, we would read the first byte of the next varbind on next line:
+        if (*bufp & 0x80)
+    -> reading past the buffer if there is no such variable -> sigsegv.
+
+commit f6eed6e2384cbf857768f0ee8c6602eb7cd2f03a
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Apr 22 08:18:54 2013 +0200
+
+    Regenerate configure
+
+commit a587d11fb67fad3af24517a408abc3700565edf5
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Apr 22 08:18:35 2013 +0200
+
+    Regenerate configure
+
+commit ce3c9214128b1cdbebd2975da0f36a55e2584fa0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Apr 22 08:16:02 2013 +0200
+
+    Report the result of the POSIX shell test, not a constant yes
+
+commit 0c870f74b2e4337b4bf3b7f11f55b12e80df49ff
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Apr 22 08:00:32 2013 +0200
+
+    Change the check of perl shell detection to work with AIX sh as well
+
+commit 5f0819f102d1cde3899d08708c9c126268899318
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Apr 1 07:38:09 2013 +0200
+
+    CHANGES: snmpd: Make update-controlled changes trigger periodic saves. Thanks to Claus Klein for noticing that this was missing.
+
+commit a8ff26883d63861d876985dde89f3891577d6026
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Mar 31 13:33:02 2013 +0200
+
+    snmpd: Make the update handler call any child handlers
+
+commit 2bc62b972a2bd0b91ddd4f7c11d47dbe5bf6ff03
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Mar 31 13:32:29 2013 +0200
+
+    snmpd: Do not leak memory if handler registration fails.
+
+commit ae9148b51b9b02270fddbb74111ba2c02a8ea67c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Apr 16 22:03:00 2013 +0200
+
+    extend.c: fix missing semicolon and warning
+
+commit 46422d17dfdb416eb24ad7db7453ec473db20820
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Apr 16 13:48:26 2013 +0200
+
+    CHANGES: snmpd: Fixed crash in UCD-SNMP-MIB::extTable
+    
+    snmpd crashed when the command to execute had no arguments, i.e. extend->args was NULL.
+
+commit 8b57bdb0a09472a16d3af69fd2b1374c09e6a3ad
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 8 20:36:35 2013 +0200
+
+    rerun autoheader/autoconf
+
+commit 9a9ea257e6eb47800d34f1a86ec0a2a6e9085f31
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 8 20:35:24 2013 +0200
+
+    rerun autoheader/autoconf
+
+commit 59a3214398bceb22c48d58c0fe9c552b2e1ecb8c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 8 20:31:49 2013 +0200
+
+    rerun autoheader/autoconf
+
+commit e4d72db11d3fb7a44425097b5ec26b9f917a9c82
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 8 19:14:04 2013 +0200
+
+    snmpksm: handle deprecated krb5_auth_con_get{local,remote}subkey
+
+commit 99ff953673f73614463ace1210c4ac073a1f2a81
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 8 19:05:47 2013 +0200
+
+    snmpksm: fix some const cast warnings
+
+commit cf0d4ef224bad000995370483a5c98dc17839a41
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Apr 5 22:05:33 2013 +0200
+
+    Initialize a couple of variables to please clang
+
+commit 71f59e9e6c98e8dbfab1ffb0d1e468c12e3d92ce
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Apr 5 21:38:44 2013 +0200
+
+    Make sure snmpksm includes com_err.h (wherever it is) to declare error_message
+
+commit 8c01f64728a43656dc3ac5fbefdf8ecec8da1506
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Apr 5 21:13:30 2013 +0200
+
+    Minor fix to inline to allow compilation with clang
+
+commit 2db12f688e1f2eeebb589ec73da82eb897f34bd1
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Mar 18 08:54:49 2013 +0100
+
+    CHANGES: snmpd: Make the local truthvalue handler call any subhandlers it might have. Thanks to Claus Klein for noticing this problem.
+
+commit 90512a32bd1c2be5d17b23f10956278395de3754
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Mar 19 22:28:34 2013 +0100
+
+    Patch 1250 from sthen: include <sys/proc.h> in swrun_kinfo.c for OpenBSD 5.3
+
+commit 39193600ec38deb51379a109648d69e7e9001702
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 7 21:44:59 2013 +0100
+
+    snmpnetstat: prototype route6pr
+
+commit acce8296dc5b68d212f7404edc2afdb8b02817c0
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 7 21:39:16 2013 +0100
+
+    clean tabs tp spaces
+
+commit 402bdae96a6d79b3b63b67261b37a847ab4817e3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 7 21:37:43 2013 +0100
+
+    snmpnetstat: fall back to ipv4RouteTable (Thanks to fenner)
+
+commit e6917e372a06ddd7761b3103b329bcf696e93a1f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 7 21:29:44 2013 +0100
+
+    snmpnetstat: show AS in routing table if available (Thanks to fenner)
+
+commit 9eb8d0f907ed8d78de90dcf6623c33060993f2a0
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 7 21:28:26 2013 +0100
+
+    snmpnetstat: early detect if we want ipv4 route table (Thanks to fenner)
+
+commit 4083734ef7f4beaf1b9a1325738ba185eb7cc716
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 7 21:25:53 2013 +0100
+
+    Fix misplaced newlines in error messages
+
+commit 5b0ed3b76f6e4669f238b5c82cd3cc6cb6caa5cd
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 5 17:16:26 2013 +0100
+
+    Unit test T014: Fix a Cygwin build warning
+
+commit 106ad2450f2b78848f292ad03445a97c7f87e6f4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 5 17:17:05 2013 +0100
+
+    Unit test T014: Initialize variables properly
+
+commit a7dea573485931561051a2019027d7ed09d15565
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 4 22:35:06 2013 +0100
+
+    rfclist: add G998x mibs
+
+commit 4604cf61e7cf6ea64e782f4a3d72d4fb024c1f9b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 4 22:23:23 2013 +0100
+
+    snmpnetstat -Cs: consistent field widths for statistics. Document
+    snmpnetstat -Css variant.
+
+commit 4aa92157ce55d1e528d7de52491d3eb7020869e7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 4 22:17:19 2013 +0100
+
+    snmpnetstat.1: remove invalid references to routing statistics output.
+
+commit 751f4a6c7fc89a5cf2b2879f6f915b31466a04b7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 4 22:14:29 2013 +0100
+
+    snmpnetstat: fall back first to ipCidrRouteTable. Thanks to
+    Bill Fenner for initial patch for this.
+
+commit 93c86e6e1cf301bd269fdffb5e9aaace8aa193f4
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Jan 3 07:21:03 2012 +0100
+
+    Do not leak memory on error
+    
+    If allocation of iinfo fails then table_info is leaked.
+    Deallocate table_info in this case.
+
+commit 36a7de7230fbbbb52cc37cbbed281eb559404be9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 25 20:40:09 2013 +0100
+
+    CHANGES: Windows: Add multihoming support
+    
+    On Windows Vista / Windows Server 2008 and later it is possible to add
+    multihoming support by using the IP_PKTINFO socket option.
+    
+    Conflicts:
+    	snmplib/transports/snmpUDPBaseDomain.c
+
+commit 7bbabab2362daa6d76ad73033b3f32b2cba7253f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 22 18:55:47 2013 +0100
+
+    Rework IP_PKTINFO / IP_RECVDSTADDR detection
+    
+    Detect IP_PKTINFO / IP_RECVDSTADDR support during the configure
+    phase instead of repeating the following test in eight different
+    places:
+    
+     #if (defined(linux) && defined(IP_PKTINFO)) \
+         || defined(IP_RECVDSTADDR) && HAVE_STRUCT_MSGHDR_MSG_CONTROL \
+                                    && HAVE_STRUCT_MSGHDR_MSG_FLAGS
+     ...
+     #endif
+    
+    Two side-effects of this patch are:
+    * IP_PKTINFO support is enabled on Cygwin.
+    * setsockopt(IP_RECVDSTADDR) is no longer invoked on Windows when
+      built with Visual Studio or MinGW-gcc.
+
+commit 1a196ad9f1517868b93a6bec93a0cfe1d29e283b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Feb 23 14:03:29 2013 +0100
+
+    Testing: Make unit test T014 more robust
+
+commit 9be22aaaf8393713fbc39025f702111f50f1e4ea
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Feb 23 11:03:20 2013 +0100
+
+    Windows: Avoid collisions with the Windows Vista or later SDK
+
+commit 0b6bfef2ca9ae9e1c2beafe700100fae5f6f4c1a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Feb 23 11:20:23 2013 +0100
+
+    inet_ntop() / inet_pton(): Convert prototypes from K&R to ANSI C
+
+commit 2bb51d71eec4e789982c2a741186dce6df238542
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 21 20:59:25 2013 +0100
+
+    Reduce the time needed to run the regression tests (was enlarged by commit b3d5ed87)
+
+commit cf640ccd68e9636805b75079928c7277fa26083b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 21 11:55:03 2013 +0000
+
+    Unit test T014: Accept "localhost.localdomain" too
+
+commit bda4357375ad299cf1847579e1a1bc3c611895c3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 21 16:07:41 2013 +0100
+
+    Regression test T060: Escape backslashes passed to CONFIGTRAPD
+
+commit 6b5d784f4d6d000390014d120f15b937362f8c07
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 21 20:33:02 2013 +0100
+
+    Python bindings: Fix a recently introduced compiler warning
+
+commit 6d258efa2accadfccc50d86bd46379745449ca4a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 21 15:27:19 2013 +0100
+
+    python/netsnmp/client_intf.c: Remove superfluous casts
+
+commit 2c2e1f416393d485f9ac90c87f72065c668b7321
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 21 15:48:34 2013 +0100
+
+    python/netsnmp/client_intf.c: Fix a compiler warning
+
+commit 1bc799de6cab010b25c0c4d3f5155b5fbaf527f0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 21 20:05:14 2013 +0100
+
+    Python bindings: Fix the out-of-bounds write
+    
+    See also commit 234158b8e84cc204cbac96e6e9be6959635404b8
+
+commit 4f4eaeb920ad15c929c66782cc0a642912cabd06
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 17 12:24:26 2013 +0100
+
+    CHANGES: python: fixed IPADDRESS size on 64bit systems.
+
+commit 486f11ddee9f1c2dd8056449e9031e24b8646872
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Feb 21 10:06:12 2013 +0100
+
+    Added IETF BSD license for MIB files.
+    
+    MIBs included in Net-SNMP taken from IETF Documents are considered
+    Code Components in accordance with the IETF Trust License Policy, as found
+    here:
+    
+    http://trustee.ietf.org/license-info/
+
+commit d24efb04778d870efa2739493949db65f3fdd4f3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 12 20:44:46 2013 +0100
+
+    Solaris: Fix fetching of large chunks of data (larger than one buffer)
+    This fixes problem with many interfaces, but could also fix other large tables.
+
+commit 45001fd98c729df9ff053627c416ab5f2e4c60f3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 12 20:39:50 2013 +0100
+
+    Fix bug 2286,2439: Bound buffersize for swrun data on FreeBSD
+
+commit 9bd0413bfbdcd845413c135bbff8771fa7130809
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Feb 11 11:57:01 2013 +0100
+
+    Explicitly enumerate configuration files.
+    
+    The generic conf and local.conf extensions were interpreted as my.snmp.conf and my.other.snmp.local.conf by some customers.
+
+commit 0bdd09889d0811f864df131b844f20b00392062b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Feb 7 00:05:03 2013 +0100
+
+    snmp_client.c::netsnmp_query_walk: handle SNMPv2 exception results
+
+commit 864b4aca8dfa480a78b745fae2091edc5373a0c6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Feb 6 16:00:54 2013 +0100
+
+    snmptrapd: Add -X option to disable AgentX
+
+commit 112f3d4fa536b2c531d0780676198915a1f58179
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Feb 6 15:59:53 2013 +0100
+
+    rfclist: Add RBRIDGE-MIB
+
+commit c0a6549597947f29c36efadb04927ff690189eba
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Jan 30 15:53:15 2013 +0100
+
+    RUNTESTS: don't trap on SIGCHLD. It confuses dash, mksh and maybe other shells.
+    (dash is /bin/sh on Ubuntu)
+
+commit b95ac386e6c2356a1ec29f1c409b2ec3e90159c3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Jan 29 08:59:01 2013 +0100
+
+    rfclist: add TED-MIB
+
+commit 23bdf6d26f4337d07ea6e9901a7738d1186d16d4
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Jan 29 08:58:07 2013 +0100
+
+    snmpdf: add -CH as alternative to -Ch
+
+commit 40258e9c060aecac6555aedff3e70bde7d2ab846
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Jan 28 17:05:08 2013 +0100
+
+    T072com2secunix_simple: awk string indices start at 1!
+    Fix test to work with mawk (default for Debian/Ubuntu)
+
+commit e37f2b6bdffa7afaa1dc0b8aee565a4da82d6fe4
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Jan 25 16:24:10 2013 +0100
+
+    snmpdf: Add -Ch (human units) option
+
+commit 7a407ad34505ed4dbaa2e84e06a1dbf48c3c77e5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Jan 25 15:28:43 2013 +0100
+
+    snmpdf: Handle SNMP (v2c/v3) exceptions
+
+commit c739cb3875fb5d4cad4138661cc0a4171384c341
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Jan 25 10:14:02 2013 +0100
+
+    Apply patch#1246: Fix passing a SET of a string to not cut it at
+    four characters to a pass/pass_persist helper.
+
+commit 234158b8e84cc204cbac96e6e9be6959635404b8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 17 12:24:26 2013 +0100
+
+    CHANGES: python: fixed IPADDRESS size on 64bit systems.
+
+commit 9e0a0e35d8d1b36fa47cec938d6c874de0071bb6
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Jan 9 22:37:47 2013 +0000
+
+    CHANGES: python: PATCHES: 1239: Fix memory leak
+
+commit 55605ee3452aef5aabe4ed15a83374a97728e64a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 9 09:26:56 2013 +0100
+
+    Fixed memory leak on failed realloc.
+
+commit a32ca93a9b91674a8c1e89e1a383a76136b8ac38
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Jan 8 16:42:54 2013 +0000
+
+    CHANGES: snmpd: PATCHES: 1240: Fix deallocation of integer indexes
+
+commit 87681f0fb285a021636e06a6f2351d76409eebc8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jan 5 15:06:12 2013 +0100
+
+    Avoid using "local" since Solaris' /bin/sh does not understand it
+
+commit 59b4d40f3970ba82f3df2a399971254b04827443
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 4 18:00:53 2013 +0100
+
+    CHANGES: Windows: Make winExtDLL work on 64-bit Windows systems
+
+commit 39597106038f6e1c5ed49b3fce0021a6c59ec1fe
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 4 18:05:38 2013 +0100
+
+    winExtDLL: Add more debugging
+
+commit 85ce9062911d31b42e0c1e135abd3bda813e3003
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 4 18:02:30 2013 +0100
+
+    winExtDLL: Invoke SnmpExtensionClose() before unloading an extension agent
+
+commit 7e031229543579d37b006296e2f445482d0512cb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Jan 5 13:04:02 2013 +0100
+
+    winExtDLL: Remove source file win32/MgmtApi-winExtDLL.h
+
+commit 2e89624e55e73557862594f1f525f9dffc827986
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Jan 4 22:26:47 2013 +0100
+
+    Solaris /bin/sh does not understand 'local' builtin.
+
+commit 6257dea4827e85c7af845ae9cded48d44aa7bb3d
+Author: Jan Pokornテス <jpokorny@redhat.com>
+Date:   Thu Dec 20 14:45:45 2012 +0100
+
+    Fix comment typos in example.c
+    
+    Patch from Pokornテス <jpokorny at redhat.com>
+
+commit 9dfc44c91d7a29a4c43f779085dde34c5fe6d5ab
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 3 10:30:27 2013 +0100
+
+    MinGW, test harness: Fix a log message
+
+commit 1d099c7b919ef25efa03c14aa77ccbec8e5bb009
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 3 10:24:48 2013 +0100
+
+    apps/agentxtrap.c, Windows: Fix usage text
+
+commit f021e6fd4bc2acb6ffac339d3f38e4c15bb5bd7d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 1 17:53:16 2013 +0100
+
+    MinGW: Update test harness. Installation of pslist.exe is now required.
+
+commit 4bc3c0547e0b33eea71f3c1a09efdd5969d7e278
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Dec 31 17:24:33 2012 +0100
+
+    ucd-snmp/dlmod: Enable in MSVC batch build
+
+commit e9efb20095468e64157b84f18b6ccd991e1082e3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 1 15:04:37 2013 +0100
+
+    Windows: Link with snmpapi.lib and mgmtapi.lib even if not using the platform SDK
+
+commit 900aae8ea693fb840d57526fb671d215f865bedb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 1 01:33:01 2013 -0800
+
+    ucd-snmp/dlmod: Fix an MSVC compiler warning
+
+commit 363e3fa1a43ca6223fe3b0808e66295b3d9386b8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 1 01:27:42 2013 -0800
+
+    ucd-snmp/dlmod: Add dlmod.c to MSVC project
+
+commit e3542c04a84617857688ab8e8718cdc4c6a68cf5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 1 09:14:33 2013 +0100
+
+    ucd-snmp/dlmod: Remove more superfluous casts
+
+commit 1e3b0ae2b02cf1faccad4896bc3bdbea1db4a68f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Dec 31 13:19:36 2012 +0100
+
+    CHANGES: Windows: Ported ucd-snmp/dlmod to MinGW / MSVC
+
+commit 986fb9b85e1383b81eaea40d2cb7c14492ddbdac
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Dec 31 12:32:56 2012 +0100
+
+    MinGW: Avoid confusion between MinGW's kill.exe and the SysInternals pskill.exe (backport commit 9b427b353f1ceb8fe87e6fc8ed3b6cfab3ce7f20)
+
+commit 798b73cf59e3687f65bd54a7a8ac29fe2498c69f
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Thu Dec 17 13:05:53 2009 +0000
+
+    Unbreak the MinGW build for the 5.4 branch - timeradd() is not ANSI C
+    
+    Remove DIFFTIMEVAL() because it's buggy: in "diff.tv_usec > 1000000L" the ">"
+    should have been ">=" instead.
+    
+    This is a partial backport of commit 858509c9e1998f6d26e90cb622e4b17eb2488a4f.
+
+commit 1e556cc7740c06367ff3361aa96bf45339c2e8a2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Dec 30 17:59:44 2012 +0100
+
+    ucd-snmp/dlmod: Remove superfluous casts
+
+commit 51dfa6e67fd8487b8882c1632e811195d9496e41
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Dec 30 10:42:16 2012 +0100
+
+    ucd-snmp/dlmod: Mention library path in error messages
+
+commit 02a357d6b9538a48896368900bbb593dbb4dc374
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Dec 30 10:40:55 2012 +0100
+
+    ucd-snmp/dlmod: Remove a superfluous initializer
+
+commit ef748845b14c095049ed54803ea74cf457efd189
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Dec 30 09:57:38 2012 +0100
+
+    CHANGES: Windows: Fix environment separator in snmpd/snmptrapd/snmptranslate help text. Reported by Jason McCollum <jmccollum@comtechefdata.com>.
+
+commit bc0abae55dd867dbbf4e42e67a36234088c93771
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jan 2 09:25:33 2013 -0800
+
+    copyright update
+
+commit 4086af95b298f1cf130d08deb7e090058b321af9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Dec 20 07:37:14 2012 +0100
+
+    Fix the MIB names to actually work
+
+commit 795274fc21e1ba03efbe9b6042c6a3513d89debf
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Dec 20 07:24:47 2012 +0100
+
+    Clean up and value checking for ipDefaultTTL, ipv6IpDefaultHopLimit
+
+commit 439d50c679e9f09b106bfdf64f8cc766419e1344
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Dec 20 07:24:16 2012 +0100
+
+    Fix icmpMsgStatsTable for Solaris
+
+commit 007a7d24bc5f279392fd0ec4361477cd8f14e5af
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Dec 19 22:14:06 2012 +0100
+
+    git ignore tilde files
+
+commit aff02f24e198a29231273d494820dd6e354155ca
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Dec 17 22:44:18 2012 +0100
+
+    Running autoheader/autoconf
+
+commit 9cfd680f2f2f45cf76cd4216693b862faa27cbc1
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Dec 17 22:42:00 2012 +0100
+
+    Config check for BSD udpstat.udps_ipackets
+
+commit 53c2fdd5b66021144ad26539b53be9c1593b4884
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Dec 17 22:27:03 2012 +0100
+
+    Add SD support for ip-forward-mib
+
+commit ca7b17a41d4d16bd27aacf92116bea3562eeea36
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Dec 17 12:40:32 2012 +0100
+
+    CHANGES: snmpd: use cache for dskTable to speed it up.
+    
+    UCD-SNMP::dskTable was slow on NFS mounts. Now it uses fsys cache
+    to reload mounts every 5 seconds.
+
+commit 0b718184e070d2574c09b18f568950a8c9ff7659
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 16 20:57:29 2012 +0100
+
+    CHANGES: apps: Stop using snmp_perror when logging after functions that don't set snmp_errno.
+
+commit 7edce0c311a7dd5428e0edb701dabe9dc79d0967
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 15 12:40:10 2012 +0100
+
+    CHANGES: building: Make the -without options to rpmbuild work
+
+commit c6037548fb4b47996330fe1bc1e8265acea5dd54
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Dec 10 00:41:42 2012 +0100
+
+    The proper router files for BSD
+
+commit 2b359e450986bb8744bbff21e0cab493acacea98
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Dec 9 23:02:02 2012 +0100
+
+    Support for ipSystemStatsTable for *BSD. Most of the code by Garrett
+    Cooper. Partially funded by Cisco Ironport.
+
+commit 9a044128e8b331796221166358769eb0535dfc1f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Dec 9 22:36:21 2012 +0100
+
+    Support for ipNetToMediaTable for *BSD. Most of the code by Garrett Cooper.
+    Partially funded by Cisco Ironport.
+
+commit f9cb298dd20ef6d4bc683ce067f2330737be4e09
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Dec 9 22:17:22 2012 +0100
+
+    Support for ipDefaultRouterTable for *BSD. Most of the code by Garrett
+    Cooper. Partially funded by Cisco Ironport.
+
+commit 1dee41562c54e0b54b301a37838b3ba6509dcc38
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Dec 9 21:54:14 2012 +0100
+
+    Support for ipSystemStatsTable for *BSD. Most of the code by Garrett Cooper.
+    Partially funded by Cisco Ironport.
+
+commit 3dbabc97068b6c690b3fdf97b5ab3ae0d9eab28c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Dec 9 21:47:45 2012 +0100
+
+    Change some debug output into error logging. Failure to expand 32 to 64
+    IS an error.
+
+commit 907360e09fff3390d6269f8cb4740bdbcd958166
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Dec 9 21:45:44 2012 +0100
+
+    Fix some labels for netstat icmp output.
+
+commit 9f2f05405c7bb499ebe0839b0d79ba25c61c0f55
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Dec 7 09:49:51 2012 +0100
+
+    Running autoconf
+
+commit d27f36452583d291f255ef090e2aeaeaf39a9e0e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Dec 7 09:49:02 2012 +0100
+
+    Running autoconf
+
+commit 56352c2ebe9541f6abf9d2b9ebc4705d818d89b8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Dec 7 09:48:21 2012 +0100
+
+    Running autoconf
+
+commit 397923e0aae1385a0af3a803e60ebe8124f961d2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Dec 7 09:26:21 2012 +0100
+
+    Fixes for configure of ksm module. Previously ksm had to be the
+    first security module in list to be included.
+
+commit 430d10d296b8d8c98a3aafd27a8c6ff4f6408114
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Dec 7 09:24:39 2012 +0100
+
+    Fix speling which has prevented ksm module from compiling for many years :-(
+    Also some fixes to support Heimdal Kerberos. This supports Free/NetBSD.
+
+commit bff832ab248e08628be46ebf76111911e7f39e52
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Dec 7 09:17:22 2012 +0100
+
+    Adapt for longer lines from /proc/net/tcp6. And issue an error if
+    it happens to fail again. Patch from bug #2425 (Thanks Zhixu Liu)
+
+commit 9687e4d50781ba0168416f15c4f2d9fc8371050a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Dec 7 09:15:48 2012 +0100
+
+    icmp support files for *BSD (exceptNetBSD)
+
+commit f215ba1e37a8c3e076958efd83c0f5d393a14c22
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Dec 7 09:13:24 2012 +0100
+
+    Support for icmpStatsTable/icmpMsgStatsTable for *BSD and Solaris
+
+commit a7b7c3c0c3be3f6cf2d09f6470d3fa086153d036
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 30 15:35:33 2012 +0100
+
+    Shuffle in preparation for broader support for icmpStats/icmpMsgStats
+
+commit bd296ac18423503eda8effeb86afb19e00143889
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 30 15:34:52 2012 +0100
+
+    Shuffle in preparation for broader support for icmpStats/icmpMsgStats
+
+commit 2e23ea0f293bb8e9ceaf5636db7b7d07f6d62c7a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Nov 20 23:33:58 2012 +0100
+
+    Add missing ssIORawSent/received for Solaris.
+
+commit 59eebc41a9435811073fec50d76dd6aef9dd58a7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Nov 20 23:32:53 2012 +0100
+
+    Add some error checking to gittools
+
+commit 80b18375826653626c2d70451c2b54a1c50a3ce6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Nov 13 13:55:47 2012 +0100
+
+    Remember to init the systemstats provider
+
+commit 743cb66718904979f55895472501584c30c66f10
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Nov 12 15:49:15 2012 +0100
+
+    Fixed crash when MD5 and/or SHA-1 hash is not supported by OpenSSL.
+
+commit 1898cfc71bdb3f4a1685c6d21b54dd1a3482591c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 12 15:48:15 2012 +0100
+
+    OpenBSD 5.2 support.
+
+commit dd53ffbafeb31cde616a89949e70e3d5fe0cc1b3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Nov 12 15:46:43 2012 +0100
+
+    Fall back to SHA-1 if MD5 is not available.
+    
+    On paranoid systems where MD5 is disabled use SHA-1 instead of MD5 and don't crash.
+
+commit ea8f74c81f82c105b9fc01965adce14b0d8186da
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 12 15:46:34 2012 +0100
+
+    Fix NetBSD memory data typing
+
+commit dde3a35baaeb683cf1441a16a15441f8b456c520
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Nov 12 15:45:27 2012 +0100
+
+    CHANGES: snmplib: Fixed crash when MD5 hash is not supported by OpenSSL.
+
+commit b77b67d8d629f785639e402fa4fbee6ccfe18fa5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 12 15:44:49 2012 +0100
+
+    Kernel processes in DragonFly, and fixed cpu usage data
+
+commit d6c62012c8082fc886f747e0e2c9bb8a6c66c663
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 12 15:41:55 2012 +0100
+
+    Diskio for OpenBSD, and some clean-up for FreeBSD/DragonFly
+
+commit 4a5e0f4c95fb6cd123a4901787376e447d332c02
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Oct 9 14:23:48 2012 +0200
+
+    CHANGES: added simfs (OpenVZ filesystem) to hrStorageTable and hrFSTable.
+
+commit 2a0cd35acf3325a6fdc0a10423f54cb8b5ce522b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Sep 13 15:25:52 2012 +0200
+
+    CHANGES: snmpd: fixed infinite loop when SIGTEM arrives in middle of internal query processing.
+    
+    When snmpd starts internal query, e.g. for 'monitor' config options, it calls
+    netsnmp_query_walk(). This function loops until either error occurs or the
+    internal request is processed. And if SIGTERM comes to this loop, the request
+    is not marked as failed.
+    
+    Patch originally from Masahiro Matsuya, mmatsuya [at] redhat.com
+
+commit bc449c0f85ae9fa08ac4fce67282f48eb7ab1984
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Sep 10 13:25:38 2012 +0200
+
+    CHANGES: snmpd: fixed value of UCD-SNMP-MIB::extCommand to contain full command line.
+    
+    MIB description of UCD-SNMP-MIB::extCommand suggests it should contail full command line.
+    Also in Net-SNMP 5.3.2.2, whole command line was shown.
+
+commit a3978f2cc2056c97a4c3f338f709a20291aed472
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 12 06:48:37 2012 +0100
+
+    Proper handling of configure-generated snmpconf
+
+commit 0f46992924de5a4ab0763a8d44a1cece4a991d80
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 5 21:16:37 2012 +0100
+
+    Patch for OpenBSD 5.2 (Patch 3559420)
+
+commit 9ed0b2e0ac0c8e549b8f9a5845e9d1faacab73c5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 5 20:08:41 2012 +0100
+
+    rfc6779
+
+commit aef76ca0cba2ca56f6aa1db5c5b58a54939f389b
+Author: qqshka <qqshka@users.sourceforge.net>
+Date:   Wed Oct 31 20:00:04 2012 +0100
+
+    AgentX, IPX: Restore default port (bug #3582283).
+    
+    This reverts commit 7b9e03441c3dc3a07670ed01f5d04791a82c750c.
+
+commit d7d98e5aa9ee8ca7918b7675043d479cf77b83c4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 1 10:33:06 2011 +0200
+
+    .gitignore: Add local/snmpconf
+
+commit 71d83ba4117a2cfb7874e91832e45973da42ee98
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 1 10:34:30 2011 +0200
+
+    Win32, MSVC: Make build.bat work again now that ENV_SEPARATOR is configurable
+
+commit 5e500082728f453595f5024d241208c51f08d22c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 29 18:12:41 2012 +0100
+
+    README.win32: Remove reference to the no longer supported Cygwin compiler option --mno-cygwin
+
+commit 1a36dee165b8bd7df3ef694b7c3f2621a5449daa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Aug 30 20:54:00 2011 +0200
+
+    CHANGES: snmpd, snmptrapd and apps: Make ENV_SEPARATOR_CHAR configurable
+
+commit 0e1ca45a6f8d8acf44aa21a009a9e51192e84783
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Oct 28 10:11:22 2012 -0700
+
+    snmpnetstat: Fix MSVC compiler warnings
+
+commit 4a6d0378a3916571ce7604c4a3d54a8c96a8f807
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Oct 28 09:54:12 2012 -0700
+
+    Windows: Visual Studio 6 build fix for strlcat()
+
+commit 41b48a6370952bf4b12d34fb05ec55fb0702e8cf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Oct 28 14:37:52 2012 +0100
+
+    Windows: Make snmpnetstat build again
+
+commit 2451f826479881a4926fcf88855f582585eb813b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Oct 28 10:23:17 2012 +0100
+
+    win32/build.pl: Reduce code redundancy
+
+commit 6e99388683a6c854035f042a9d07c0723117e8a6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Oct 28 09:41:20 2012 +0100
+
+    Windows, batch build: Remove the obsolete variable "SSL"
+
+commit 7544adc5a1c76889e4a9ed51e96d22d02fd5695e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 22 15:35:04 2012 +0000
+
+    NEWS: Windows: Port batch build infrastructure to Visual Studio 2010 and later
+    
+    From Visual Studio 2010 on it is no longer possible to specify
+    include or library directories globally - these have to be specified
+    per project. Hence two additional menu entries in build.bat that
+    allow to specify these directories.
+
+commit 1b8a79c1c2eb13f8b207c12aa6e71a29ff00396f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 22 19:10:07 2012 +0000
+
+    win32/Configure: Factor out common code
+
+commit 2af7a73b0ca8cdbd36a7f19dd8e55764c8498552
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Oct 27 18:27:42 2012 +0200
+
+    Windows: Make snmpnetstat build again (see also commit aa5912b8986cde74090ba15be196426309a1e1f0)
+
+commit fa98b4cbd6dc15aa926166eef04d5bc8dfbaaad6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Oct 26 07:56:06 2012 +0200
+
+    Cope with additional statistics in /proc/net/sctp/snmp in RH6
+
+commit 54290bede338164ca65a3eed224fa5040d7dd857
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Oct 26 07:50:11 2012 +0200
+
+    Better cleanup of "exec" config to avoid crash during reload of config
+
+commit 82aa246671194f04be52c621e9f83d0fabd24fa5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Oct 24 15:30:11 2012 +0200
+
+    Don't mix code and declarations!
+
+commit 4e9ea845592fff8b2aae5d318dcabf41f9570632
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Oct 24 15:25:35 2012 +0200
+
+    Don't mix code and declarations!
+
+commit 21d5c6785e916b5101440ed1a4f71b41ba2eb809
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Oct 24 09:27:23 2012 +0200
+
+    Remember to free the description (if saved) during unload_all_mibs
+    (patch 3565922)
+
+commit 2b9940ca56fc8d3d610efd2eba9ae4ebb741e671
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Oct 24 06:41:46 2012 +0200
+
+    Clean up diskio config before reloading.
+
+commit f7768fb643be282d635289b57f88a07d070487b0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Oct 23 11:48:31 2012 +0200
+
+    apps/snmpnetstat/inetx.c: Eliminate dead code (see also commit aa5912b8)
+
+commit 64c56f27c5ed432ce8de44e2579ca0c806a517ea
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 22 17:45:19 2012 +0000
+
+    build.pl: Eliminate a temporary variable
+
+commit 30a5d013a80e9fd50b8fd0f70ffd96ff26b6e454
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 22 20:29:09 2012 +0200
+
+    Update to current IANA version
+
+commit f40d440689067ef6c4da7ddadfb373a452197fbd
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 22 19:47:06 2012 +0200
+
+    win32/Configure: Strip trailing whitespace
+
+commit d34e057779cb32e94324089dc4625638309cfe89
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 22 18:36:59 2012 +0200
+
+    win32/build.pl: Strip trailing whitespace
+
+commit 30daef1860397f045c4055cd61d663d290dd47f2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 22 18:32:38 2012 +0200
+
+    Fix MSYS kill/pskill confusion
+
+commit 14be9132b91158b05120710b1ff6a4b2accc531d
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 22 18:10:44 2012 +0200
+
+    Fix net0/netx confusion
+
+commit 8107a6352df2478660994ef103d52801a6607cc9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 22 17:03:47 2012 +0200
+
+    Fix speling errors
+
+commit aa5912b8986cde74090ba15be196426309a1e1f0
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 22 16:58:50 2012 +0200
+
+    Implement the modern IP version agnostic table in snmpnetstat.
+    If the modern table is not available (or the -CL option is used)
+    fall back to the legacy tables.
+
+commit 1a34d2249ef0d2215e5886f9b3c97ecfa7eb5190
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 22 16:39:41 2012 +0200
+
+    Pick up ifDescr from ifXTable when available, and use that as the name.
+    Very useful if pci-utils were avalable when compiling the agent as the
+    name otherwise will be the very obscure chip name
+
+commit b4caf543cff7dba8f9acca2b9ea88c9b79dc39ee
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 22 16:32:12 2012 +0200
+
+    Pick up HC octets and McastOctets from /proc/net/netstat of current RHEL6
+    and Fedora kernels.
+
+commit c655fce784532a523f7db582d0cd07dee4ad7ac5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 22 16:25:59 2012 +0200
+
+    Try to better classify Linux kernel threads as hrSWRunType=Os
+
+commit e1a8c95ca55f569585c88e174a43f6d4129c439d
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Oct 20 09:59:41 2012 +0200
+
+    Correct the nesting order of the doxygen end section comment and the feature removal endif.
+
+commit f67adf2a37a8c182eacbcfe52d5b789191a65929
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Oct 9 16:32:47 2012 -0700
+
+    remove release requirements
+
+commit 3e54330393ccc86525ed6fb9a0fc19c068306610
+Author: Jan Safranek <jsafrane@redhat.com>
+Date:   Tue Oct 9 06:34:10 2012 -0700
+
+    fix double-negative typo
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+----------------------------------------------------------------------
+
+Changes: V5.7.2.rc3 -> V5.7.2
+
+commit 5054b570619df0a81958a045bef135b20205f036
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Oct 9 15:26:05 2012 -0700
+
+    make depend for 5.7.2
+
+commit 56a797ff3e71dc886467d17ce025b0237c8c1cc3
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Oct 9 14:42:23 2012 -0700
+
+    Version number update: 5.7.2
+
+commit 0813f8b62df0e8440ffef161ce134ff9455e7de9
+Author: Jan Safranek <jsafrane@redhat.com>
+Date:   Tue Oct 9 06:33:58 2012 -0700
+
+    fix double-negative typo
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit a6a88927534684e275ccf0e780513094a73fc6bb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Oct 9 06:31:21 2012 -0700
+
+    AIX net-snmp5.7.1 hrSWRunPath not complete
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 58a4d8839021f772c35a732bd096d1e290dc0a62
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Oct 9 06:30:57 2012 -0700
+
+    AIX net-snmp5.7.1 hrSWRunPath not complete
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 626eabec4ea98e5359089790858479a59a26cdcb
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Sep 30 23:30:28 2012 +0200
+
+    CHANGES: snmplib: Move the check that the pdu variable is non-NULL to before the first dereference of it.
+
+commit 68aab572c2d2746b51a95eba110568c38b050808
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Sep 25 19:07:42 2012 -0700
+
+    Release Candidate for V5-7-patches
+
+commit 0a41533b1b49f00d7357a3d2bea5dfa75e8edcd7
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Sep 24 00:07:19 2012 +0200
+
+    CHANGES: testing: Add test cases for snmp_service
+
+commit a61b48d78e11d945def46fde0f7d55f7919c335a
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Sep 23 07:53:09 2012 +0200
+
+    Prefer copy_nword_const over copy_nword(NETSNMP_REMOVE_CONST
+
+commit 9bffc5413d0d882398b06f4109ac807af2f78347
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Sep 23 00:29:44 2012 +0200
+
+    Simplify logging through the use of netsnmp_config_error
+
+commit d09d53a0fa6df63b21e6f12731bee51a3624e85e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Sep 22 21:30:08 2012 +0200
+
+    CHANGES: snmplib: Do not crash on incomplete configuration tokens.
+
+commit 02dce6f43b99f85941627928c1a5022d6725d124
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Sep 22 21:28:51 2012 +0200
+
+    CHANGES: snmplib: Do not truncate single default transport domains
+
+commit 211e3c70625965441b2a029a6113802974673c43
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Sep 22 11:23:19 2012 +0200
+
+    CHANGES: snmplib: Do not crash from empty values in --token=value arguments
+
+commit af3d2d973b1e8e29d205d8a07acd82b1f854819e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Sep 22 10:30:16 2012 +0200
+
+    CHANGES: snmplib: Add the symbol NETSNMP_PRIo to help in printing oid values.
+
+----------------------------------------------------------------------
+
+Changes: V5.7.2.rc2 -> V5.7.2.rc3
+
+commit 8b45292301f0349ffb69d4fd8595f2d5b199e6b6
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Sep 25 19:35:39 2012 -0700
+
+    make depend for 5.7.2.rc3
+
+commit 0cbffb565e62aef937fc700d8d3c3b8c65ddfa65
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Sep 25 19:07:40 2012 -0700
+
+    Version number update: 5.7.2.rc3
+
+commit 40505971add6a3b6f5954cfbde532749bfbcb16a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 17 13:34:37 2012 -0700
+
+    fix for hidden CMSG_xxx macros on AIX
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 60f0a9e983ab827c824e397d62aeff48a60f0133
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 17 13:31:12 2012 -0700
+
+    Fix pstat memory leak on hpux 11i
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 13bd4d56baa9886018a00477e3214ebe02705ffe
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 17 13:31:04 2012 -0700
+
+    Fix pstat memory leak on hpux 11i
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 0805420813de156c7fc5142534fb420a0fcc3572
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 17 13:28:59 2012 -0700
+
+    fixes AT code on hpux 11i
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit bdb3b146380db1316cabd58b704436e7eecdd9f5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 17 13:28:50 2012 -0700
+
+    fixes AT code on hpux 11i
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit e936cf810a47379156d913a714e3816181a0d3db
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 17 13:25:20 2012 -0700
+
+    fixes disAvail on FreeBSD ufs
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 608ab57887e5566e63509a3f7e5d0a3e2892f4a7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Sep 17 13:25:02 2012 -0700
+
+    fixes disAvail on FreeBSD ufs
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+----------------------------------------------------------------------
+
+Changes: V5.7.2.rc1 -> V5.7.2.rc2
+
+commit 07f914564e097224d677515c2f5fd1f3c0c9eb42
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Sep 1 09:54:42 2012 -0700
+
+    Release Candidate for V5-7-patches
+
+commit aee217c07ea9f34a32268e966c7ecef036ec4a96
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Sep 1 09:54:38 2012 -0700
+
+    Version number update: 5.7.2.rc2
+
+commit 119b0d3cf12c97ca3c74d6d1e72319670a8378aa
+Author: Bill Fenner <fenner@users.sourceforge.net>
+Date:   Sat Sep 1 09:51:08 2012 -0700
+
+    CHANGES: libnetsnmp: PATCH 3560473: from fenner: Handle TimeTicks when pretty-printing OID
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit c94c62ea0edcebbfbb73fab6ecddc679f7694dab
+Author: Bill Fenner <fenner@users.sourceforge.net>
+Date:   Sat Sep 1 09:51:08 2012 -0700
+
+    CHANGES: libnetsnmp: PATCH 3560473: from fenner: Handle TimeTicks when pretty-printing OID
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 6d7f9eb0decdb9682836ffd03f19742197ad87db
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 29 21:14:46 2012 +0200
+
+    Fix possible memory overrun in fsys_getfsstats.c (patch 3559417)
+
+commit f235ee8b32eed1de3f1e4202ef45b6377fbce163
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 29 21:07:14 2012 +0200
+
+    Fix for hrStorageTable on AIX (bug 3557159)
+
+commit 78cc9d5ccd86b170622aac543c345c020755c78a
+Author: sthen <sthen23934@users.sourceforge.net>
+Date:   Tue Aug 28 17:18:09 2012 -0700
+
+    add missing process status values under net/open-bsd
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 4ef9dcd80b0bda1e18b7e349a08bc0f22a7e755e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Aug 28 17:16:37 2012 -0700
+
+    CHANGES: OpenBSD: PATCH 3559414: from nba: support OpenBSD for hr_swinst
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 0b569fccea9414c50cfd6b0e83e1831ba1291ce2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Aug 28 17:14:45 2012 -0700
+
+    add missing process status values under net/open-bsd
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 1d3c7be7fa7a38fd3fc39720bb5cb70f8bd71160
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Aug 28 17:14:22 2012 -0700
+
+    add missing process status values under net/open-bsd
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit ff438433aca096bbbea29dd30dfd5c5523761a72
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Aug 28 16:50:46 2012 -0700
+
+    Fix real memory reporting on BSD systems
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit c429a4f3984dae791e307df702251f96ef047d88
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Aug 28 16:49:10 2012 -0700
+
+    Fix real memory reporting on BSD systems
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 41d980c015564db7f22f763190f61ac0d56ba3b2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Aug 24 14:35:53 2012 +0000
+
+    Windows: Unbreak DLL build
+
+commit 2793923bfe2b026fcaeaf538ae503f105cb315bc
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 3 22:26:20 2011 +0000
+
+    added missing TLSTCP mention in the help output
+
+----------------------------------------------------------------------
+
+Changes: V5.7.2.pre3 -> V5.7.2.rc1
+
+commit 9ec5c599780251dcd3155f9ac9806ece7ed6ba22
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Aug 11 12:00:37 2012 -0700
+
+    make depend for 5.7.2.rc1
+
+commit 3358b65b11e2c0ee712f609f02071260f75f9bb3
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Aug 11 11:39:38 2012 -0700
+
+    Release Candidate for V5-7-patches
+
+commit 4849a430daafb91c7a61bfbbc17f9299e58fcf64
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Aug 11 11:39:35 2012 -0700
+
+    Version number update: 5.7.2.rc1
+
+commit 1bc268428e829852c9ef0a79552ca4045add28a3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Aug 9 22:42:52 2012 +0200
+
+    Make sure we have an initialized kvm structure when querying proc table on BSD.
+
+commit 7e67c5038b6aabfda1939ea81d940b24000cfb51
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Aug 9 14:27:08 2012 +0200
+
+    Removed error message when file cannot be opened.
+    
+    This should be handled by caller, not in the function. There is only one caller now, udp_endpoint_linux.c.
+
+commit 59b0de0b8fa73eb403006cee75ff8651e1585e28
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Aug 9 14:23:14 2012 +0200
+
+    Fix compilation errors introduced by commit f95df6341b1d06249443e516b59a43cdfa3d4777.
+    
+    This is embarassing, I compiled the sources without --enable-ipv6. Sorry for inconvenience.
+
+commit 5d7edadd4761680b66d1df3bfde7ca5b16ca5a16
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Aug 9 12:46:35 2012 +0200
+
+    Fix compilation error introduced by commit f95df6341b1d06249443e516b59a43cdfa3d4777.
+
+commit 43c97bbaaf211f4c7f7c704cfcb901dfbf834874
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Aug 9 12:30:09 2012 +0200
+
+    CHANGES: snmpd: Lowered severity of 'Error expanding XXX to 64bits' messages.
+
+commit 8e5cf2a72a46cd483d22e6290a6c8c4c26af6ad2
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Aug 9 12:25:48 2012 +0200
+
+    CHANGES: removed counter-64 error messages.
+    
+    These messages do not say enything useful, caller should check their return value and report it.
+
+commit f95df6341b1d06249443e516b59a43cdfa3d4777
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Aug 9 12:01:25 2012 +0200
+
+    CHANGES: snmpd: removed error log messages when IPv6 is disabled.
+
+commit 18dace8e4a36b083d6ef717735c63e7f40224db8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Aug 9 10:41:45 2012 +0200
+
+    CHANGES: added CVFS (CentraVision File System) to hrStorageTable and hrFSTable.
+
+commit 90f431b45d21506427bc0bd1d4ee69e0b8ea30bc
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 8 23:10:50 2012 +0200
+
+    Update to current MIB versions
+
+commit 9e7a0b9e580d3b1ea6198a7414c816c23b123b10
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 8 22:27:16 2012 +0200
+
+    Use a wrking awk for Solaris
+
+commit 0e3922ae21e4b7ec538867afd22ce74d741e0f1c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 8 22:17:34 2012 +0200
+
+    fix prototype for klookup
+
+commit a22109711a6d1ec14b6a3f1cac221d70263f104a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 8 22:08:13 2012 +0200
+
+    fix prototypes for klookup
+
+commit ac062972c585174f95d7ba87aa5ec54c42fdec55
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Aug 8 22:00:26 2012 +0200
+
+    fix prototypes for klookup
+
+commit 7cdd8ebef9507fe766107ca9fee054c44cc0bac5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Aug 5 08:13:59 2012 +0000
+
+    Make snmp_alarm_reset() use the monotonic clock. Fixes a bug introduced in commit 37ba7e2.
+
+commit 023f61ea783bfcc53fe90aa66545c5aea2db8061
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 8 16:26:54 2012 +0000
+
+    Fix build breakage caused by commit 028614ecf2d67398699dc3bd784029f3360f2e13
+
+commit cd820949a1491af103a8555f6bdae04851f3d285
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 8 16:16:43 2012 +0000
+
+    Undo build breakage caused by commit 37ba7e20a521fbf0458a0c77eea2e5e36bd7ec0a
+
+commit f143008ccc57ea10cbb88ab3554822b17b6270aa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Aug 5 08:45:42 2012 +0000
+
+    Make get_exec_output() work on big endian systems.
+    
+    Undo API breakage introduced by commit 7374b84fe4c2ef8497fde3dae80a69aa89eba19c.
+
+----------------------------------------------------------------------
+
+Changes: V5.7.2.pre2 -> V5.7.2.pre3
+
+commit 84322e0dc2a8974646542d9881bc01b43dc3a12d
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Jul 31 16:24:07 2012 -0700
+
+    make depend for 5.7.2.pre3
+
+commit 8fec7a81d6133a5f05ed34a5af9806af5d128223
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Jul 31 15:57:56 2012 -0700
+
+    fix the assert check to allow for some known asserts
+
+commit dfde6d2ddd519c8c2ae1788774fdf90d8bea02b1
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 30 10:08:24 2012 -0700
+
+    include errno.h and don't use continue outside a loop
+
+commit 7cffe0222cd98a21e30f44c3df9f0d90bf096fe9
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Jul 31 14:13:50 2012 -0700
+
+    Version number update: 5.7.2.pre3
+
+commit 22af7fd46776a8db2362e88acb1b69b165c034b6
+Author: blentz <blentz@users.sourceforge.net>
+Date:   Tue Jul 31 13:52:40 2012 -0700
+
+    CHANGES: aix: PATCH 3403433: from blentz: Issues with hrSWRunName and Parameters on AIX
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 516b9f8275b8db03cdc41078e65c2170309a3f8b
+Author: Julien Pinon <jpinon@users.sourceforge.net>
+Date:   Tue Jul 31 13:25:31 2012 -0700
+
+    CHANGES: perl: PATCH 3412939: from jpinon: Repair tkmib
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 8f230f401c64d822883ac444624a2c2fd7128d8e
+Author: Harsha Shivanna <naanuhs@users.sourceforge.net>
+Date:   Tue Jul 31 13:22:11 2012 -0700
+
+    CHANGES: libnetsnmp: PATCH 3552745: from naanuhs: fix to support 32 chars for VACM names as per RFC-2575
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 34008d32aef43d8bbe1000fb9bf94642c0514f6f
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Jul 31 13:20:31 2012 -0700
+
+    fix the agentx ping patch so it works with the newer alarm structure names
+
+commit 962676394d3fe557ead91057b4d780226dc0d6b3
+Author: Mijo Safradin <mijos@users.sourceforge.net>
+Date:   Tue Jul 31 12:48:01 2012 -0700
+
+    CHANGES: agent: PATCH 3414051: from mijos: snmp-bridge-mib: fix for dot1dBaseTable
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 37ba7e20a521fbf0458a0c77eea2e5e36bd7ec0a
+Author: Vincent Bernat <vbernat@users.sourceforge.net>
+Date:   Tue Jul 31 12:27:28 2012 -0700
+
+    CHANGES: agent: PATCH 3481686: from vbernat: Dont ping master agent unless there is no incoming traffic
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 2be5feadb0540846e0e3ada27efb97894a4cbd52
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Jul 31 07:29:17 2012 -0700
+
+    added a darwin 12 version
+
+commit 1f9bcd21e7c2d5effb62aa01b7b87e43dc86214c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jul 31 14:43:27 2012 +0200
+
+    Fixed SCTP-MIB::sctpAssocPrimProcess, the list of processes was not initialized.
+
+commit 48be5e89aa04adb0df7e094b2fe463015429fc98
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jul 31 13:48:31 2012 +0200
+
+    Added log message when ipTable misses some interfaces.
+
+commit 7523f0f01ba4db65ac1647a23228cf06c0b72a03
+Author: Mariusz Ceier <mceier@users.sourceforge.net>
+Date:   Mon Jul 30 10:19:33 2012 -0700
+
+    CHANGES: libnetsnmp: PATCH 3536692: from mceier: create a unit test for read_config APIs
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit c07b8d9b3770b615c8e162dbdf7643805f372d75
+Author: Mariusz Ceier <mceier@users.sourceforge.net>
+Date:   Mon Jul 30 10:18:42 2012 -0700
+
+    CHANGES: libnetsnmp: PATCH 3536692: from mceier: Fix for callback calling when unregistering config handler
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 5c2424f07d85c0c4f79d6c5faf64d7f3ee861726
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 30 10:08:42 2012 -0700
+
+    don't duplicate send_enterprise_trap_vars def
+
+commit 7374b84fe4c2ef8497fde3dae80a69aa89eba19c
+Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
+Date:   Mon Jul 30 09:41:17 2012 -0700
+
+    CHANGES: freebsd: PATCH 3383970: from yaberauneya: Fix compile error on FreeBSD 9.x/POSIXify auto_nlist, etc
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit 670d96e786590fdd30a16a3300c0ed5bd6e53214
+Author: Mark Rusk <user_id=349895@users.sourceforge.net>
+Date:   Sun Jul 29 23:39:22 2012 -0700
+
+    CHANGES: agent: PATCH 3424933: from user_id=349895: Use NETSNMP_DS_AGENT_AGENTX_TIMEOUT for the default timeout
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit f1eaec15ef603b8ce542932ffdbd8788c3d1acc5
+Author: Daniel Hobi <hobid@users.sourceforge.net>
+Date:   Sun Jul 29 23:28:01 2012 -0700
+
+    CHANGES: agent: PATCH 3530794: from hobid: pass/pass_persist: unregister MIB with correct priority
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit d783ad990e914c0ee1c98d0a93a429eb2b2f4997
+Author: Doug Manley <tekkamanendless@users.sourceforge.net>
+Date:   Sun Jul 29 23:25:40 2012 -0700
+
+    CHANGES: libnetsnmp: PATCH 3526599: from tekkamanendless: A buggy SNMPv3 agent can cause a net-snmp client to hang
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit e9851520c18d7ed172404a37dc0dc7a136bfaedd
+Author: Daniel Evers <daniel-evers@users.sourceforge.net>
+Date:   Sun Jul 29 23:14:19 2012 -0700
+
+    CHANGES: libnetsnmp: PATCH 3548257: from daniel-evers: fix for recursive pthread mutexes
+    
+    Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+commit e7a37678c2b7359afd44a307e824c1f7d7a0c87d
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sun Jul 29 21:35:35 2012 -0700
+
+    NEWS: osx: patch: 3514049 from twobits-github: fix compilation on darwin11
+
+commit 1221426abad15b9b2fcee8f1e32ab52ef2692952
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jul 27 14:18:24 2012 +0100
+
+    CHANGES: perl: PATCHES: 3529541: Don't refer to internal 'my' variables from external scripts
+    
+    Fix provided by Lezz Giles
+
+commit 9c06c2202dc056703c80959a0eca9a71684c28de
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jul 27 13:29:30 2012 +0100
+
+    CHANGES: Linux: PATCHES: 3536420: Ensure snd/rcv memory buffers are suitably aligned
+    
+    Patch provided by Tyler Olmstead
+
+commit 89b82c55f9efd2e8ab8c6d65fa567c5b1fac1843
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jul 27 13:14:07 2012 +0100
+
+    "Idle" processes (i.e. in the process of being created) are probably
+    best regarded as "waiting for an event" to become runnable - i.e. 'notRunnable(3)'
+    That event being the completion of the creation process.
+       It's arguable whether or not they are strictly "loaded", but
+    this feels less misleading than reporting them as 'invalid(4)'
+
+commit 6e780a5bf0d64bf47dfbf479ae7f56c10ff8166e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jul 27 12:57:54 2012 +0100
+
+    Clarify meaning of hrSWRunStatus 'invalid(4)'
+    Ensure architecture-specific alternatives don't confuse code syntax
+
+commit 99b353f7253a5bb38b86f31c2708e16b34a46ce7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jul 27 12:50:51 2012 +0100
+
+    Additional patch from Patch ID #3543000
+
+commit d0e03fe4a236945daf42af7a47094e686f9bdb9e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jul 27 12:41:02 2012 +0100
+
+    CHANGES: snmpd: PATCHES: 3543000: Various fixes to Rmon code
+    Supplied by Patrick Ritter
+
+commit 6632a2b9b9fad1a0b0d6baedf2a2b391f5d4e914
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 14:39:42 2012 +0100
+
+    CHANGES: perl: BUG: 3517030: Ensure large tables are walked properly
+
+commit b8d16604dbb2f80ebe2852322aa83361a0323796
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 14:19:07 2012 +0100
+
+    CHANGES: apps: BUG: 3529768: Be more careful when stripping off numeric suffixes
+
+commit 0b3ad44ec4c1b9f41dc3ef70e6a38a53ef268ade
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 13:34:10 2012 +0100
+
+    Fix comments describing FreeBSD relationships
+
+commit 8cf7a89187a996faff040414986ffa5d78d5683e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 13:21:56 2012 +0100
+
+    CHANGES: build: BUG: 3532234: Fix typo in libtool script
+    (addressed properly in libtool 2.4.2)
+
+commit 4258d852ca7b6aeae93ad73064d43aa807eb6104
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 13:16:20 2012 +0100
+
+    CHANGES: doc: BUG: 3535269: Document use of [snmp] for client-side tools.
+
+commit 26ed40cbd07cf271a9cfc4517d964774712ad77c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 12:57:56 2012 +0100
+
+    Support local rollup of patches without first synchronising with extenal repo.
+
+commit 904c442d60c5b99aacd7f60307c28684efae854c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 12:53:37 2012 +0100
+
+    CHANGES: python: BUG: 3535967: Fix memory leak - snmp_{sess_}error allocates the output buffer
+
+commit 597ecda68ee2b580b666288977b04aa133207517
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 12:17:14 2012 +0100
+
+    CHANGES: BUG: 3540621: dist: Add missing Provides: to net-snmp-perlmods RPM spec
+
+commit 43d5ba224c3f29fd8e7fd1d060a17045aad7eff0
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 11:25:43 2012 +0100
+
+    CHANGES: perl: BUG: 3541012: Fix handling of gettable columns
+
+commit bc293acad8d3487cddef3c70cea74368f34d9354
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 26 11:20:20 2012 +0100
+
+    CHANGES: snmpd: BUG: 3543864: Remove extraneous function type
+    (and fix a related typo)
+
+commit 028614ecf2d67398699dc3bd784029f3360f2e13
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jul 24 15:37:16 2012 +0200
+
+    CHANGES: snmpd: fixed snmpd exiting shortly after start due to incoming signal.
+
+commit 4d38895f459a1df24f68c4a60e4caf6a778d8c1f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jun 27 09:35:44 2012 -0400
+
+    CHANGES: snmpd: removed limit of 'exec' and 'sh' entries in snmpd.conf
+    
+    Use dynamic (re)allocation instead.
+
+commit dceeacc998fe2322882e7eedec0a71a79dc494ab
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Jul 24 09:00:23 2012 +0100
+
+    Don't be surprised if there are no changes to various files
+
+commit 56c3c078336cbf1bf09fd1b01078a9030717613e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Jul 11 08:47:13 2012 +0200
+
+    CHANGES: snmpd: BUG 3542307: Correct sysORID for snmpMPDStats. Thanks to Dave Vucich for reporting this.
+
+commit 61ecedc083f881db8a9a50d50bdeed36624ed307
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Jul 11 00:21:27 2012 +0200
+
+    CHANGES: snmpd: BUG 3542188: Correct sysORDescr for snmpUsmMIB. Thanks to Dave Vucich for reporting this.
+
+commit 2f9ede419f40e848a2425389288cac0e2331b992
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Jul 19 17:10:52 2012 +0100
+
+    Fix example 'rsync' command for full releases
+
+commit 6dd7884d99e756e2f22b688823ce1b1d526ad166
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Jul 18 15:59:59 2012 +0100
+
+    version update for 5.6.2
+
+commit 976696a128e57b512bf7ad400d002368b4a9a871
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+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>
+Date:   Wed Jul 18 10:46:47 2012 +0100
+
+    V5-5-patches out of Release Candidate
+
+commit 8bd440c43e365a0b77d47f582cade9f97c7bfce7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Jul 18 10:46:28 2012 +0100
+
+    Version number update: 5.5.2
+
+commit 6e0855a3157198499411ac52b46d5f32aad5b9fa
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Jul 18 09:51:32 2012 +0100
+
+    Add missing return type in function declaration
+
+commit 07d825e8bb35eea9ac6b1cb82cbb234fe66b1ab6
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Jul 18 09:51:32 2012 +0100
+
+    Add missing return type in function declaration
+
+commit 5db70036ef675635647e5b7c7253456838836647
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jul 11 14:55:38 2012 -0700
+
+    don't use --rebase
+
+commit d4c1549593ce2c2caeb98e5f8abfd7a5ae5a0273
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jun 27 09:35:44 2012 -0400
+
+    CHANGES: snmpd: removed limit of 'exec' and 'sh' entries in snmpd.conf
+    
+    Use dynamic (re)allocation instead.
+
+----------------------------------------------------------------------
+
+Changes: V5.7.2.pre1 -> V5.7.2.pre2
+
+commit ffce49fb1ab4a78d4f2947be06d620f1424528fd
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jul 11 17:12:31 2012 -0700
+
+    Version number update: 5.7.2.pre2
+
+commit bd7c7297187818e5eef7327667e4a81f6c9fc89b
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jul 11 14:55:38 2012 -0700
+
+    don't use --rebase
+
+commit a715312e2ce49d4da93fc140cc39fc100b0b7978
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jul 11 15:47:22 2012 -0700
+
+    updated for the previous 5.7.2.pre1 release
+
+commit 17277689b629f4586d5d714d87ce6bc11f887668
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Jul 11 14:55:38 2012 -0700
+
+    don't use --rebase
+
+commit 6786ffc76facf746afb6af25158f7940656ab39c
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Jul 11 08:47:13 2012 +0200
+
+    CHANGES: snmpd: BUG 3542307: Correct sysORID for snmpMPDStats. Thanks to Dave Vucich for reporting this.
+
+commit f0e35d61f9258dc608da9bf718af1457a859fa19
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Jul 11 00:21:27 2012 +0200
+
+    CHANGES: snmpd: BUG 3542188: Correct sysORDescr for snmpUsmMIB. Thanks to Dave Vucich for reporting this.
+
+commit 5206d25d4cb94d4b0dd331a5a4113d4d87782c42
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 2 12:14:39 2012 -0700
+
+    better description of --disable-set-support
+
+commit f92853281477ee724a51a9967f37d3f1dd1b0f7e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 2 12:09:50 2012 -0700
+
+    remove duplicate definitions causing a problem
+
+commit 5be27368751691fc1ab55fe62b4106d8d99b8704
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jul 2 12:06:58 2012 -0700
+
+    after pulling all the branches, switch back to the initial one
+
+commit 82596a69f5ce53d5a6f0af4215c98d6184dab4d4
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 14:04:50 2012 +0100
+
+    Unpick merge conflict.
+    (Not sure why this wasn't flagged up earlier - or maybe I just missed it!)
+    (cherry picked from commit b05bd78f9f234bb57a00b54c5bfb1de32a09f4a4)
+
+commit 6a075ae494c76b82eea96327cf5242df048743db
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 14:21:08 2012 +0100
+
+    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 b05bd78f9f234bb57a00b54c5bfb1de32a09f4a4
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 14:04:50 2012 +0100
+
+    Unpick merge conflict.
+    (Not sure why this wasn't flagged up earlier - or maybe I just missed it!)
+
+commit 4d15742c750a96a4dbb3da874741ae152489f8d5
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 13:58:07 2012 +0100
+
+    Release Candidate for V5-6-patches
+
+commit f6b5e3376ed3a8e9eaf74b7d6822b3a765772ee8
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 13:57:56 2012 +0100
+
+    Version number update: 5.6.2.rc3
+
+commit 5cfb0811127a653dff0f4e53ad6029e2298a6c62
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 13:28:37 2012 +0100
+
+    Release Candidate for V5-5-patches
+
+commit e72e205fdcef787ef840c8c928ed27351a69544b
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 13:58:07 2012 +0100
+
+    Release Candidate for V5-6-patches
+
+commit f79a54f2472508b167d977f367c3864b5621e89d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 13:42:53 2012 +0100
+
+    version update for 5.5.2.rc3
+
+commit 56ef5f0db51cfd55226f82f94f3f3d2450e4feb5
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 13:39:32 2012 +0100
+
+    version update for 5.5.2.rc3
+
+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 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
+
+    CHANGES: snmpd: PATCHES: 3479740: Fix hrSWRunPerf statistics
+
+commit 1e3bb6060be6156d3ff316c5a7e4fd7f05e37cff
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Jun 22 12:11:56 2012 +0100
+
+    NEWS: snmpd: BUG: 3532090: Fix high ifIndex values crashing hrDeviceDescr
+
+commit e8663fac8b88663282669726a08f16db16b5f4db
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Jun 18 13:30:25 2012 +0200
+
+    Revert "CHNAGES: snmpd: fixed snmpd exiting shortly after start due to incoming signal."
+    
+    This reverts commit b11a4e93f50d8a544f835f376c3a4b8c0641a31a,
+    we're in RC-phase and code is frozen
+    
+    (sorry for noise)
+
+commit b11a4e93f50d8a544f835f376c3a4b8c0641a31a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Jun 11 16:26:09 2012 +0200
+
+    CHNAGES: snmpd: fixed snmpd exiting shortly after start due to incoming signal.
+
+commit a570238d58eb5a996b56f01a27a18df6f37d0f60
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Jun 11 14:20:25 2012 +0200
+
+    More precisely describe -c option.
+
+commit 48cc39f1aa0fa6ce955ef76b25db8f9dca06b80d
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 09:27:10 2012 -0700
+
+    version update for 5.7.2.pre1
+
+commit 810185ae0b0cd2ad4d424a1ba775ef5ceaf50f03
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 09:24:19 2012 -0700
+
+    make depend for 5.7.2.pre1
+
+commit 6271471e01282f3675724eaf1358ceb0e95ddd4e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 08:32:40 2012 -0700
+
+    Version number update: 5.7.2.pre1
+
+commit fcb782aa8893134c7414a926d9268594f725b915
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 08:32:18 2012 -0700
+
+    version update for 5.7.2.pre1
+
+commit e3bcd87c72fcea7706e868b5ace75296093f7497
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 14:09:42 2012 +0100
+
+    Fix dist/release format
+
+commit d813ce2eeefc68229cfcaf20603244cdd6d09d3c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 14:07:52 2012 +0100
+
+    Fix dist/release format
+
+commit fa7bd581e3783685db39c9b4eaf847be5ac86fd3
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:53:10 2012 +0100
+
+    version update for 5.6.2.rc2
+
+commit 0739e2382d31146aca3205244cf70788b40a428d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:51:45 2012 +0100
+
+    version update for 5.6.2.rc2
+
+commit d9a15445aa74f5316bfc711c1558467872c2958c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:50:12 2012 +0100
+
+    make depend for 5.6.2.rc2
+
+commit bcabd2c9542dbebd1d319b4494413bdcca06614e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:38 2012 +0100
+
+    Release Candidate for V5-6-patches
+
+commit b473898c0c5ac9eb47c7c05a3f745e4ff2a76aaa
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:28 2012 +0100
+
+    Version number update: 5.6.2.rc2
+
+commit 131429e7062fbaa65b82affed1fb92df2c0cc813
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:38 2012 +0100
+
+    Release Candidate for V5-6-patches
+
+commit 1c8110b33b8105ca6190945a35fe7ae903252d68
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:21:38 2012 +0100
+
+    Avoid perl versioning problems when setting up the build environment
+
+commit 508ece16e6f6f49562da204792ae0644269994d1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:20:58 2012 +0100
+
+    Fix handling of dist/release merge
+
+commit 5b8a8547b1a47d2f5b207f48f2496e4241d902c6
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 11:10:48 2012 +0100
+
+    version update for 5.5.2.rc2
+
+commit 6c32914bf28d695df349dca269e488b501700316
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 11:07:22 2012 +0100
+
+    version update for 5.5.2.rc2
+
+commit 9f5a82a5afdbb3daeb2fd437a309f0b8d357cf4b
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 11:05:39 2012 +0100
+
+    make depend for 5.5.2.rc2
+
+commit 39203f29477a3bedf012d41135d8abd6bcad08b1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:54:27 2012 +0100
+
+    documentation update for 5.5.2.rc2
+
+commit 17e79ef0fad79609c5ba2feb4e8b9eb5d7db6886
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:46:11 2012 +0100
+
+    Release Candidate for V5-5-patches
+
+commit 5821be5bbb4018ded282fbbbd4830cf2eeadd9e1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:45:59 2012 +0100
+
+    Version number update: 5.5.2.rc2
+
+commit 3f2111de6733a04e12d910d306a34d671e008762
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:46:11 2012 +0100
+
+    Release Candidate for V5-5-patches
+
+commit ccf8ff2c4db60122d41302e4aeb700e0b868105f
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 28 10:18:43 2012 +0100
+
+    CHANGES: snmplib: PATCHES: 3526599: Don't hang on retried failing SNMPv3 responses
+
+commit c81c8483990911f47435d3005255d91c37ab92b2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 27 14:09:26 2012 +0200
+
+    Fix BSD that downnot always like IP_SENDSRCADDR - so retry without
+
+commit ffce1f2dc2f8b31abd01f93b26da78f4726a1e64
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 27 14:03:58 2012 +0200
+
+    Fix OS missing MSG_DONTWAIT (AIX). Backport from 5.7
+
+commit c575216850185b56454dad0253e3164979e13513
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 27 13:56:01 2012 +0200
+
+    Fix missing include. Fixes SIGSEGV on FreeBSD9 x64
+
+commit 5805878749c08062debf0a9d798d08fb916caa2d
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun May 27 06:23:19 2012 +0200
+
+    CHANGES: snmpd: Add missing debug tag
+
+commit d1a42bbcc7b14730c9a6d99c4f047097843a549b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri May 25 09:02:27 2012 +0200
+
+    CHANGES: building: Run libtool --mode=finish on the right directory
+
+commit 1fbf33711a19eac9739ad23f6f6251eacc41f1c4
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue May 22 14:54:45 2012 +0100
+
+    CHANGES: Linux: PATCH: 3525998: Don't use an uninitialised value in error message
+
+commit 32c1686b67dc85c4a189576363065609dfed5e61
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue May 22 14:52:56 2012 +0100
+
+    Attempt to mark release-candidate branches as such.
+    Omit final-release-only steps when preparing preN/rcN releases
+    (Relies on a tweak to the Makerelease perl modules)
+
+commit 4c5633f1603e4bd03ed05c37d782ec8911759c47
+Author: Robert Story <rstory@freesnmp.com>
+Date:   Mon May 14 11:40:06 2012 -0400
+
+    NEWS: snmp: BUG: 3526549: CVE-2012-2141 Array index error leading to crash
+
+commit 65dd83c2255ee58edbf0e25863e55b58a4113679
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 20:30:42 2012 +0100
+
+    version update for 5.6.2.rc1
+
+commit ac4bc65e2909f3bd85f32f04b504fa65d2f64553
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 20:28:06 2012 +0100
+
+    make depend for 5.6.2.rc1
+
+commit b74994864195119edb6e19c85147fac00bcb93e3
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 20:13:46 2012 +0100
+
+    Version number update: 5.6.2.rc1
+
+commit 91350092c46e66d06d74143f4816473db4d25160
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 19:56:33 2012 +0100
+
+    Mark version-specific changes _before_ pushing to central repository
+
+commit 7241accd70b82d0fcd44d5a5238b2ee9445900db
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:53:17 2012 +0100
+
+    version update for 5.5.2.rc1
+
+commit 7c796a15a1d1bb85feea940bd4e3516877920919
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:50:49 2012 +0100
+
+    version update for 5.5.2.rc1
+
+commit 07e268bfb64b0ec645b3f7e87266984f9217cf12
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:44:37 2012 +0100
+
+    make depend for 5.5.2.rc1
+
+commit 16eaaf6c3ba14596ca9efaf4b114f1b709f42b68
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:29:03 2012 +0100
+
+    documentation update for 5.5.2.rc1
+
+commit c729469ef12154930cf9d15967e16186fb445f30
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:27:20 2012 +0100
+
+    Version number update: 5.5.2.rc1
+
+commit 142571d3cea08f0c072d24c1d39a43c7446f8ce7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:01:03 2012 +0100
+
+    When building a new release, the installed version of the perl
+    modules may well be different to the version being built.
+    That should not break the build.
+
+commit eba86b6f7aff261ee0e61334df70de7156e5c3cb
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:01:03 2012 +0100
+
+    When building a new release, the installed version of the perl
+    modules may well be different to the version being built.
+    That should not break the build.
+
+commit 5c0f64d6db2b593f7cc0ed2d4f55b7c592b774a8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:25:15 2012 +0200
+
+    Only output cpu warnings once.
+
+commit ee58e4827b9fa16e6635ca003e8a4f11dcb5fb7a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:17:42 2012 +0200
+
+    Fix speling in errormessage.
+
+commit 03f485df22f20e149cfae94c57cb82feecb5d74b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:12:11 2012 +0200
+
+    Not all Linuxes use rpm (debian/ubuntu comes to mind)
+
+commit 930838224f781696bd35225f22569347416f1b16
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:10:15 2012 +0200
+
+    Check need for -lm to use round/exp
+
+commit a0609cf1f3a6917d263725732248cd937a45ad94
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 08:40:44 2012 +0200
+
+    Remove limitation on configuration line length.
+
+commit 305973338a63ae54c5e02a8626fbe9a8064dcb7e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 00:32:19 2012 +0200
+
+    Reduce variable scopes.
+
+commit ccab4e9d3ed424c39d0dc27be63fa76c7461ea81
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 00:15:22 2012 +0200
+
+    Internalize the name and line number of the curret configuration file
+
+commit cf874ad7b9daf4fcc0d46cdd034474b478005341
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Apr 6 21:47:28 2012 +0200
+
+    Replace #if (A) B #else B #endif with B.
+
+commit ef9ea641bc290eec50685b60519b31bee8b14a69
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 21:04:06 2012 +0100
+
+    version update for 5.6.2.pre2
+
+commit 35aba1959de119f1fb89203c37109aa6f0e21c57
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 21:00:40 2012 +0100
+
+    version update for 5.6.2.pre2
+
+commit e41fbaff18ac9095cf4a739a06ec39a1a6ccfdc1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 20:35:35 2012 +0100
+
+    Version number update: 5.6.2.pre2
+
+commit 137fe582d6cc5611430dab46ef144efd84cfc803
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Apr 6 20:46:56 2012 +0100
+
+    Revert commit 1f4a829b18275e4956ca91e5ec370df015f06133
+    (snmp_store_needed() API is not available in 5.[45].x)
+
+commit 2b7e64288c01a8a062026c521ca31a5e885f30cc
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 16:12:12 2012 +0100
+
+    FreeBSD-9: Fix for 'const'ifyed nlist arguments
+    Backport of ed65eca6e7f9cfa7380a78d56c01ed314745b169 from V5-6-patches
+
+commit 7e95d80b698051259645c074a53ffd264a6fa916
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 16:06:56 2012 +0100
+
+    FreeBSD-9: Fix for 'const'ifyed nlist arguments
+    Backport of ed65eca6e7f9cfa7380a78d56c01ed314745b169 from V5-6-patches
+
+commit 1a9b7b7c02e2deefe994d595a7cc1dd2ffbeee1d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 15:51:20 2012 +0100
+
+    Fix compilation on FreeBSD 9.x with 'recent' header shuffling
+    Backport of c53d8c3525f590f2213d35b0da94123862f3e366 from V5-5-patches
+    (Patch #3363308 - omitting tweaks to configure)
+
+commit 3d9ddb41e263bc1a78f9f9440b8d4ad4f86c82e1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 10:36:18 2012 +0100
+
+    Fix typo
+    Backport of 5b702b024b60176d7f5699b92e55da50a8deae71 from V5-6-patches
+
+commit 0d35c609564b66a1ffe81556d37adf0503c389ce
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 10:15:08 2012 +0100
+
+    Provide missing definition of NETSNMP_PRIo
+    (used in agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c)
+
+commit a79141a419953d010a6989e8b88f4df127394d38
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 09:19:26 2012 +0100
+
+    Header fiddling for FreeBSD,OpenBSD,Dragonfly
+    Backport of f7b0de1518002c6e8f9b94ef3deb8882e1e9338e from V5-7-patches
+
+commit adf74bf753d3970357afd633803256241d9c7b87
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 08:20:46 2012 +0100
+
+    Fix IPv6 TCP & UDP tables, *BSD support (including OpenBSD)
+    Backport of commits 5cd1573625471c0583e9087aec6802b77157d5a2
+      and 50d73f0d56fe22c590530b3e305d41dcdac3ce00 from V5-6-patches
+
+commit d9555acb9f47c3aa8fde4bc20a44d7ca6181a8a9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Mar 25 18:48:12 2012 +0000
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid dangling pointers (based on patch 3503259)
+
+commit 82a8b47ee96e5d29a2b7ac3ca00722d737d5b479
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:31:56 2012 +0200
+
+    Running autoheader / autoconf
+
+commit 9ca8d939ab393306a1d0f146c9cb70ea0cb19d49
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:30:38 2012 +0200
+
+    Running autoheader / autoconf
+
+commit cecd4869deb68f3d4c71e768d5b40dd576446925
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:29:31 2012 +0200
+
+    Running autoheader / autoconf
+
+commit a1a4513bd3e4e614200f6db5a02f61d6c8eefb32
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 28 09:47:45 2012 +0100
+
+    Doxygen-style documentation fixes (backport of git commit c09903a42e9d97331fd9e48ee831a85afdf9c70a)
+
+commit 9bdbcca122c37da304fc6aa6939729475f90f5fd
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 28 09:30:49 2012 +0100
+
+    Doxygen-style documentation fixes (back-port of GIT commit c09903a42e9d97331fd9e48ee831a85afdf9c70a)
+
+commit 1f4a829b18275e4956ca91e5ec370df015f06133
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 27 21:41:24 2012 +0100
+
+    CHANGES: snmpd: PATCHES: 3495697: Store persistent snmpTarget table changes
+
+commit 1f75f377d0db01754c0c161dc44373081beef520
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 27 21:14:06 2012 +0100
+
+    CHANGES: FreeBSD: PATCHES: 3489387: Install FreeBSD 10 header file (plus other missing versions)
+
+commit 3d72c9e78f2ad817c9d1d82977327bbb20d63ab9
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 27 21:06:31 2012 +0100
+
+    CHANGES: snmpd: PATCH: 3487867: Don't skip missing ifXTable entries (ifConnectorPresent FALSE)
+
+commit 12906578ab30cf776d080c0ef3025b30334d7655
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 16:17:45 2012 +0200
+
+    DISMAN-PING-MIB: Fix even more memory leaks
+
+commit ccfd5ca6fe10313d6181d24bbb1797825a97da10
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 15:51:16 2012 +0200
+
+    DISMAN-PING-MIB: Eliminate duplicate code
+
+commit 9fda2668722f08ddbfdd67a2239d8b021db64a83
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 15:48:46 2012 +0200
+
+    DISMAN-PING-MIB: Write a loop as a loop
+
+commit cbc18eb763ba6df69ef70668a54d75bf35e79503
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 15:24:08 2012 +0200
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix more memory leaks
+
+commit c7725192478aec018fb4aefa60946e04a406c00c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 13:43:24 2012 +0200
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid reading freed memory when deleting a row from a table
+
+commit a6be739566f310d7441fd7f54989e39446f7a143
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 13:42:28 2012 +0200
+
+    Extend DISMAN-PING-MIB test
+
+commit 8a9b57291453cb8aec28e766c594701ed19c4fc6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 26 21:03:41 2012 +0200
+
+    Fix for DragonFly 3
+
+commit e5c9a32f79eac2e85527c9cf05087cdae9b35a6c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 26 20:59:53 2012 +0200
+
+    DragonFly needs _KERNEL_STRUCTURES to compile ipv6 code
+
+commit cd43bc09a39bd97ff5e719a2ce232ce424600a65
+Author: David Imhoff <dimhoff@users.sourceforge.net>
+Date:   Sat Mar 24 15:47:17 2012 +0100
+
+    CHANGES: snmplib: PATCH 3510454: Allow the use of 0.0.0.0/0 as alias for default
+
+commit e2fc15f9e5a6e3e36be5f489601cbf6bf731917f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 24 15:21:38 2012 +0100
+
+    Fix TCP state values for DragonFly
+
+commit 432fe3ddf54f2c98f936959469cb9b014d599f06
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 24 15:10:52 2012 +0100
+
+    Require perl to do pass_persist test
+
+commit 37d2770cf50c98023eeba90e25d372bff7316ada
+Author: Niels Baggesen <nba@user.sourceforge.net>
+Date:   Sat Mar 24 15:06:40 2012 +0100
+
+    Fix TCP state values for DragonFly
+
+commit 86a948d8691e881d55591dcabddc2739ce72b30e
+Author: Niels Baggesen <nba@nba-linux.sb.statsbiblioteket.dk>
+Date:   Sat Mar 24 15:01:37 2012 +0100
+
+    Properly find pass helpers for testing.
+
+commit fe26a3c4f29f046bf65ed52e9d94054b675fbc4b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 09:04:42 2012 +0100
+
+    DISMAN-PING-MIB: Limit source code lines to 80 columns
+
+commit 745bafcdcc9c8e84616d4e274db2a384bf234da2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 08:55:05 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Make ping implementation independent of ntpd clock jumps
+
+commit da6925e6763cadbe02f4a8bbfe68a362e535ad5e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 10:38:36 2012 +0100
+
+    CHANGES: testing: Add testing/fulltests/default/T154dismanpingmib_simple
+
+commit fa606dd7ca6aff9308d4e8b01bbcde148f441271
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:49:21 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Make pinging local interface addresses work
+
+commit 617a83ba799575c84c66f6b1c480ef633161a64c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:28:46 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix a socket leak triggered by pinging a remote host
+
+commit 625f55c272ec6281e38d8e30eb53fd51516b00ae
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 09:54:55 2012 +0100
+
+    DISMAN-PING-MIB: Convert a dynamically allocated variable into a stack variable
+
+commit b48f19ad4b4aa68c3e16e2a72df37b9c0cd36c4a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:24:07 2012 +0100
+
+    DISMAN-PING-MIB: Add more debugging statements
+
+commit d74cb3966175892562f5e3a9b1683acba2c22e07
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 11:45:18 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix several memory leaks
+
+commit 0b1a77674678cc9a15be3e7700d3cef650ed02c7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 12:00:30 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Do not send the contents of the stack over the network
+
+commit 139023cd3ab51631cc10e2866d71abcf99ae4c1b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:56:07 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Don't call exit() upon memory allocation failure
+
+commit 169b6aaa7b61827cc1ad0b3aeeae3a7229dd25d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:53:26 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix IPv6 socket leak in error paths
+
+commit a0be32ad053a71fa96134d55e542bb07d4f0297d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 11:43:46 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid that host name resolution failure causes a crash
+
+commit bf9bff64556787d766ee2ef2d578afb920719f3a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:51:55 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Convert printf() statements into snmp_log() and DEBUGMSG()-statements.
+
+commit 5d74c01245523a9d8db1eda27d1efae2ebc104fb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:40:02 2012 +0100
+
+    New MIB: VRRPV3-MIB
+
+commit 5b38f062b99b6ef36708e2c7de4965a3192612e9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:34:48 2012 +0100
+
+    For safety, sizeof the right variable in memcpy
+
+commit e5f82782da05efa7c0e6dc2bf5a41ee11868f469
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:33:21 2012 +0100
+
+    Fix for hrSWRun data for FreeBSD
+
+commit 8327565e823270d10a4504568edbe5b5ae323a55
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:31:54 2012 +0100
+
+    Clean up variables for OpenBSD/NetBSD
+
+commit 170f6f027bf4f9174b7073530da4d07f400bba58
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:28:58 2012 +0100
+
+    Move declarations in front of statements
+
+commit dbb4573b69fae85cdc931b2892b5ce4e5b16b321
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:23:36 2012 +0100
+
+    Require kernel_netbsd for NetBSD6
+
+commit f11681f15aad7d9a52fa29812ecbb507f1b7fe24
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 21 12:36:38 2012 +0000
+
+    Check for old tarballs (and unpacked distributions) before starting.
+    These can confuse steps such as "make dependcheck", that do a 'find'
+    on the current tree, and would descend into such unpacked source trees.
+
+commit 470dcd4b6c3ff11ff0a3532a7340a56cffd69098
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 21 12:32:13 2012 +0000
+
+    Don't run "make docs; make mancp" if there's no Makefile present
+
+commit c9ac420343e16df2b7065f5bf2790df44e247fba
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 20 10:26:10 2012 +0000
+
+    Allow distribution as part of normal Net-SNMP packages.
+
+commit 5999f60c57723f23f3c254af57fdb10af301a8eb
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Mar 18 19:03:08 2012 +0100
+
+    Regenerate
+
+commit 275d204036a607e3df50e8447d4bc755e9db02fd
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Aug 28 21:29:03 2011 +0200
+
+    CHANGES: building: Make it possible to use --disable-applications/--disable-agent together with --enable-minimalist
+
+commit bdccc875710295aacf50f71eb1c1d2ee97f336fe
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Mar 16 20:10:58 2012 +0100
+
+    Do not declare the local variables for opaque_special_types unless that option is set.
+
+commit b80a67da052adca1b5a644db83a782e15c2237c3
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Mar 16 19:50:03 2012 +0100
+
+    Check that the data exist before trying to read it
+
+commit efae86bba5962491d42b77b935191a3eb25dd939
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Mar 14 01:05:33 2012 +0100
+
+    Partially revert "Merge remote branch 'origin/V5-7-patches' into V5-7-patches"
+    
+    Commit d35a1860217e723e4f866dd98ef6621665934c4a accidentally reverted
+    
+    4a2e5bcd56cd2afb36eb15d754e2fee888dd50c0 (hrh_storage is a proper replacement for hr_storage)
+    0dd1e54557d1ba498b55d017b0a93e8ccf9bd522 (CHANGES: snmpd: UDP-MIB: Report the proper address in udpLocalAddress)
+    5116d48378ecf03e722f3010ad47bf22a3fbcb8c (Reduce scope of prefix_val such that the compiler doesn't warn about an unsed variable)
+    10f566f4d4cbb3e205023c23669289e4bfd089cb (perl/SNMP/SNMP.xs: Fix a compiler warning)
+    
+    and part of
+    
+    6e74d64f85a59d50e461db4c34ac76f9de468bfb (Avoid using grep options -q and -w because grep in Solaris)
+    
+    This reverts those reverts.
+
+commit aaedd59cc2da701527dc2d261d4e9f85f16e7504
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Mar 11 20:57:38 2012 +0100
+
+    Allow make test where the source path contains the string Net-SNMP to succeed.
+
+commit 4b94d796918a4eeae68ab21aa53d444a8b5c2921
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Mar 9 08:04:59 2012 +0100
+
+    Unbreak compilation on FreeBSD 4
+
+commit 10fe6b83324ad37d18b937cc8c6de94de534d035
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 8 13:04:07 2012 +0000
+
+    version update for 5.6.2.pre1
+
+commit e1122edc1a5fe7976b065044134d39e7db5985ea
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 8 12:43:19 2012 +0000
+
+    version update for 5.6.2.pre1
+
+commit a613d3a834912206d1ba5971e441a3ea6b36af23
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 8 12:33:03 2012 +0000
+
+    make depend for 5.6.2.pre1
+
+commit 0ef34e6519dfcb82c97df8427547c08dcf81e69a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Mar 8 10:11:30 2012 +0100
+
+    CHANGES: snmpd: Fixed snmpd '-d' option.
+    
+    Now it dumps packets again.
+
+commit 8e69742f143e4fc11196e5b2ed66c8f7f53fd02f
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 6 09:24:21 2012 +0000
+
+    Version number update: 5.6.2.pre1
+
+commit c4e00b8c3e1010cdcab5e6c02d60d75df9c6dcf2
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 6 09:24:05 2012 +0000
+
+    version update for 5.6.2.pre1
+
+commit 39490104a3ab58235aace2f9d871c266dc4485ee
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit 4a2e5bcd56cd2afb36eb15d754e2fee888dd50c0
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 5 20:59:38 2012 +0100
+
+    hrh_storage is a proper replacement for hr_storage
+
+commit ce85832932ccd916c42319114c40885a466a9d0e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 5 20:56:40 2012 +0100
+
+    More fixes for Solaris sh
+
+commit 0dd1e54557d1ba498b55d017b0a93e8ccf9bd522
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 15:08:26 2012 +0100
+
+    CHANGES: snmpd: UDP-MIB: Report the proper address in udpLocalAddress instead of 0.0.0.0. Makes test T160snmpnetstat pass again. Fixes a bug introduced in commit c76fb96f65e33ba2fd212a921e8c386155ee5c7a.
+
+commit 518917e9f39f7a9d3c3bf3a865e8ac0e3026d600
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 14:04:54 2012 +0100
+
+    snmplib/snmpUDPDomain.c: Fix source code indentation
+
+commit 2651909ccceabfcfadaf942c02450e28fe837dc9
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Tue Nov 9 12:04:04 2010 +0000
+
+    Passes now on MinGW too.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19653 06827809-a52a-0410-b366-d66718629ded
+
+commit e41f115e40304c941ba17d67e24710722d90741b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 13:39:17 2012 +0100
+
+    testing/fulltests/support/simple_eval_tools.sh: Avoid using grep options -w and -q because grep in Solaris' default path doesn't understand these.
+
+commit 5116d48378ecf03e722f3010ad47bf22a3fbcb8c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 10:47:20 2012 +0100
+
+    agent/mibgroup/ip-mib/data_access/ipaddress_linux.c: Reduce scope of prefix_val such that the compiler doesn't warn about an unsed variable if it isn't needed.
+
+commit 6e74d64f85a59d50e461db4c34ac76f9de468bfb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 09:22:31 2012 +0100
+
+    testing/eval_tools.sh: Avoid using grep options -q and -w because grep in Solaris' default path doesn't understand these options.
+
+commit 10f566f4d4cbb3e205023c23669289e4bfd089cb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 10:47:39 2012 +0100
+
+    perl/SNMP/SNMP.xs: Fix a compiler warning
+
+commit 44aa265891cd563f7f4114ef25dcf7aaf3b14e9a
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit dae4e16be86117861f63d1a2f981ad361418f5c6
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit 28f6226f2e228b8ca248489735f86502b2cce0a1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit 40022a697958259ccfbb3fed44eb3c472f5e837e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Mar 4 10:37:41 2012 +0100
+
+    Solaris sh does not understand "test -e"
+
+commit 773af0c42e077bebdaecf1c0caf393285a7688f1
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 3 17:19:30 2012 +0100
+
+    Clean up nsrollup complications
+
+commit ee71049c3e21c1d0e3424297136652bbe0e39d85
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 3 16:49:41 2012 +0100
+
+    mibgroup/icmp.c: adjust ifdefs to make it compile on BSD's
+
+commit ce9600361e665dde17af9d8ab16d7ce85dc05643
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:39:55 2012 +0100
+
+    dot3StatsTable has bugs :-(
+
+commit dffacf6fa0755e1700cbac25b844185abd807a0a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:38:10 2012 +0100
+
+    passpersist test needs /usr/bin/perl
+
+commit 8726995c7a8aef674c4f164b1871c37bbdcdad50
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:36:58 2012 +0100
+
+    grep -w fails with OpenBSD and Solaris 10-64
+
+commit 1eb4745b23cc3a839864e7f6ea28355b0566eb67
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:35:49 2012 +0100
+
+    Solaris needs /usr/xpg4/bin/grep to understand -q
+
+commit 9954b4b741fd8c63d6128bd0527298c8e4e989fc
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:34:45 2012 +0100
+
+    Make sure we have the proper srcdir for out-of-source builds
+
+commit 78369002be2711f0aa876b64a4e10b090cc241cd
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:33:31 2012 +0100
+
+    Not all make versions define $(RM)
+
+commit 94245b29a3cda89475c6eab5d9493c6657ff38e3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:24:24 2012 +0100
+
+    Make autoconf 2.68 happy
+
+commit 44acd6c285fb5614b4c9611b1abdeca9dd28e4bb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:12:47 2012 +0100
+
+    Fix spelling of mib module fsys_getfsstats
+
+commit 1fa1fee3693f67b820223806b3d73afd4c50ec18
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Mar 2 01:37:20 2012 +0100
+
+    Silence a clang warning.
+
+commit 93263b98a5db344cf2c4d489c43971e7b29cdb03
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 13:37:20 2012 +0000
+
+    version update for 5.5.2.pre1
+
+commit 5a175428b973d2ea8553e29fecf94cf1566aa858
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 11:48:18 2012 +0000
+
+    version update for 5.5.2.pre1
+
+commit 364276a1c5aa66caa23eb5b7f111fdeb5af71fa7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 11:45:10 2012 +0000
+
+    make depend for 5.5.2.pre1
+
+commit 73598340172eff75729a6d57192b8171d5bbf00e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 10:42:56 2012 +0000
+
+    Version number update: 5.5.2.pre1
+
+commit f3214402672ca199fd531e66122bf96c4d9a4eb7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 10:42:39 2012 +0000
+
+    version update for 5.5.2.pre1
+
+commit 2e74acb6f19e4729cede0ab43e931961cb23aaea
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Mar 1 09:18:39 2012 +0100
+
+    CHANGES: Bug 3152841: Do not install the util_funcs subheaders that were removed in 5.7
+
+commit b7109646b95a70713d1ad991d41bccd57c0bb3eb
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Mar 1 08:48:48 2012 +0100
+
+    CHANGES: Bug 3152841: Install util_funcs subheaders introduced in 5.6
+
+commit 432cbb7a5501ab90d66d0a83e731e7343bc04b37
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Feb 25 10:13:15 2012 +0100
+
+    Correct typos
+
+commit 6a6c9bbc7584f196a1185cc1935204f1206811ed
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Feb 29 08:55:35 2012 +0100
+
+    CHANGES: Bug 3152841: Install util_funcs subheaders
+
+commit d515e2a6e4c2a1c4d84734cc7b2d0b2fc5a894ad
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 15:56:21 2012 +0000
+
+    CHANGES: snmpd: PATCHES: 3487919: Fix compilation when caching is disabled
+
+commit af8368ed8898a78d0868b47af46bc9db07d1c764
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 15:50:56 2012 +0000
+
+    CHANGES: snmplib: PATCHES: 3414773: Encode integer value using ASN_INTEGER
+
+commit 19e2715807fe06fd0baedf88165011aee933e755
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 14:05:34 2012 +0000
+
+    CHANGES: man: BUGS: 3490708: Clarify use of common command-line options
+
+commit 65f7962f932c9b75c5bbbb047d1e26ae60978e53
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 12:23:34 2012 +0000
+
+    CHANGES: snmpd: BUGS: 3489631: Fix incorrect handling of UCD monitoring flag
+
+commit ac166051b6a092dd4a594326ec85e2f699b62547
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 11:57:41 2012 +0000
+
+    CHANGES: testing: BUGS: 3474590: Don't match underscores within the source root filename
+
+commit 879bf7079d34fa46f6fcf54a01c8500beaece59a
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:44:41 2012 +0000
+
+    CHANGES: snmpd: BUGS: 3460364: Fix use of block factor when detecting error conditions
+
+commit 034f1c572f683ea428583074471e5d5d13b51837
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:22:20 2012 +0000
+
+    Skip SET-based tests when configured using --enable-read-only
+
+commit 36423e210bfb65ef121c6a66aec438c7c237d3df
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:03:25 2012 +0000
+
+    CHANGES: BUG: 3454168: configure: Fix building with --enable-read-only
+
+commit eed0bcbc43fea18259f0f63b2081b6d10535a052
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 09:27:11 2012 +0000
+
+    Skip SET-based baby-steps when compiled with --disable-set-support.
+    Inspired by bug #3454168
+
+commit ec6a23030e5a2072c19c18c1d9c124387da56b7b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 27 18:42:58 2012 +0000
+
+    Add -lrt to NETSNMPLIBS such that clock_gettime() can be found
+
+commit f13320500294bb240f63c6dd7d2e9a2208eb740d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Feb 27 16:52:51 2012 +0000
+
+    Skip SET-based tests when compiled using --disable-set-support
+
+commit c4276b6232c29145c039884e6b5a6b6da4b93837
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Feb 27 15:54:45 2012 +0000
+
+    Omit SET-related code when compiling with --disable-set-support (inspired by patch #3424930)
+
+commit 01c930edcc25700d6b5fb0376f55a26425e13fb0
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Feb 27 15:17:22 2012 +0000
+
+    Omit SET-related code when compiling with --disable-set-support
+    (inspired by patch #3424930)
+
+commit 9484d83203c4e2d820416be665fa833aa70444d2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 24 14:00:32 2012 +0100
+
+    Rework commit b4a19505a05816e94e01de97bf99ac37fcdc6d23.
+
+commit 2b7f13495228635d816e58b2174dc124dd0cf39f
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Feb 24 07:43:22 2012 -0800
+
+    set MERGE_AUTOEDIT before merging to avoid the future git 1.7.10 forced msg
+
+commit e1b910b0be9343586ae9edba6f46040af315fcdd
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 10:27:54 2012 +0100
+
+    CHANGES: snmpd: init_agent() + init_kmem(): Return an error value instead of invoking exit() if access to kernel virtual memory is denied
+
+commit 463eed2120f9d191bc22673496a49e8174664e4b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 10:03:31 2012 +0100
+
+    Remove obsolete symbol NETSNMP_EXIT_ON_BAD_KLREAD
+
+commit c36ab71a4e096f16cc5a55533f080c9a94009914
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 08:53:56 2012 +0100
+
+    CHANGES: FreeBSD: snmpd + apps: Sending UDP packets works again for non-root users
+
+commit edebddba930f8b1472fa0bd20fc413ef8cf464a2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Feb 21 11:31:46 2012 +0100
+
+    testing/RUNTESTS: Fix a bashism
+
+commit b4a19505a05816e94e01de97bf99ac37fcdc6d23
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 20 16:58:47 2012 +0100
+
+    Fix compiler warnings about %ld versus time_t on systems where time_t is a synonym for long long instead of long.
+
+commit d8978ecc8211be7c1e7905f1e215bb06ded266b6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Feb 21 12:32:25 2012 +0100
+
+    Fix snmplib/transports/snmpSocketBaseDomain.c file header
+
+commit aa766d196e5287f6ca79b58a345b024260aba354
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 20 17:07:13 2012 +0100
+
+    IF-MIB: do not trigger undefined behavior (>> 32 of a 32-bit variable) when updating a counter and ifi_ipackets is a 32-bit variable
+
+commit c3fb6dd9e6b99e9542493188987871fc5017cb3c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 09:45:45 2012 +0100
+
+    Fix a compiler warning on systems where mode_t is unsigned
+
+commit f8a3ef0d3d4e530279900101049b8de98a44a6fb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:48:52 2012 +0100
+
+    CHANGES: snmplib + snmpd + snmpwalk: Avoid that system clock changes (e.g. by ntpd) affect code that needs relative time
+    CHANGES: snmpd: Make sure that the range of the SNMPv3 variable snmpEngineTime is 0..2147483647 on all supported systems instead of 0..42949672 on some systems (i.e. wraparound after 497 days)
+    CHANGES: snmplib: Add netsnmp_get_monotonic_clock(), netsnmp_set_monotonic_marker(), netsnmp_ready_monotonic(), netsnmp_get_agent_runtime()
+    CHANGES: snmplib: Deprecate atime_diff(), atime_newMarker(), atime_ready(), atime_setMarker(), marker_tticks(), netsnmp_marker_uptime(), netsnmp_timeval_uptime(), timeval_tticks(), uatime_diff(), uatime_hdiff() and uatime_ready().
+    CHANGES: snmplib: Change the names of the struct timeval members of data structures that were used to store a wall clock time but that do now contain a monotonic clock value
+
+commit c19760f3333c92fac5d50e9768cdf939218bc487
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Feb 15 09:45:03 2012 +0100
+
+    snmplib/snmpv3.c: Fix source code indentation
+
+commit a6db239945e195de5a90fa183700b27a6ecb28d3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 7 00:11:14 2012 +0100
+
+    Fix possible memory leak from recent declarations patch
+
+commit 0fbbb9a9e2906a7af956957061d485874462aea9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 6 20:43:04 2012 +0100
+
+    Do not mix declarations and statements
+
+commit f308d5bafb05d78ed4030c4ecff324b6cbda680f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 15:25:30 2012 +0100
+
+    Fix two compiler warnings in agent/mibgroup/disman/ping/pingCtlTable.c
+
+commit 46f0fc1b7fc26a225763bc65cca520a1c59f0251
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 6 20:54:32 2012 +0100
+
+    sendmsg does not like IP_SENDSRCADDR if addr is INADDR_ANY
+
+commit debac498fe8410110107a2fe64f8afb748edaa07
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Feb 6 16:48:09 2012 +0100
+
+    CHANGES: added OCFS2 (Oracle Cluster FS) to hrStorageTable and hrFSTable
+
+commit fafc99cd89e73ec7e00bf7360d0b4fa61944a4f4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 11:18:34 2012 +0100
+
+    Simplify calculate_time_diff() and calculate_sectime_diff()
+
+commit 7af2013de8bf1b379c076db4e104508e17874d3e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:55:58 2012 +0100
+
+    Fix order of feature #ifndef and Doxygen comment block
+
+commit bbd67f63530f5ef0bfc948fc58dfe6a93f8f8679
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 15:25:30 2012 +0100
+
+    Fix two compiler warnings in agent/mibgroup/disman/ping/pingCtlTable.c
+
+commit 42a66aeff25b9e9ef635a404ad2f5212f9e8cf0d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:47:54 2012 +0100
+
+    Rename two function arguments
+
+commit 3fe72b3b99b7e4b2b982363dfc4f2d8d13f40592
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 13:49:22 2012 +0100
+
+    Convert snmp_select_info() documentation to Doxygen format
+
+commit e9db266ae48d05a7a6cb5d71b4bdea7ad808ef5e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 11:17:57 2012 +0100
+
+    CHANGES: snmpd: Add netsnmp_get_next_alarm_time()
+
+commit d08044cb9e5702fbf549e14425f42794259d8a21
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 09:38:07 2012 +0100
+
+    CHANGES: snmpd: Add netsnmp_get_agent_runtime()
+
+commit a05c27c2711cb41582a3b4c31e38b0e93530b62d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:51:33 2012 +0100
+
+    Fix spelling in a source code comment
+
+commit 910d7b0d99183609b9529b04c3f29330eb661021
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:38:12 2012 +0100
+
+    Replace netsnmp_timeval_uptime() by netsnmp_get_agent_uptime()
+
+commit 43a83f6c6a96cc2316b70eecacf127eb6913c7a7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 11:19:15 2012 +0100
+
+    Use the assignment operator instead of memcpy() for copying struct timeval
+
+commit 2fe579efb1cb3a74f82803ca323928f6b8e4b5c0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 3 14:04:02 2012 +0100
+
+    Make agent/mibgroup/mibII/icmp.c build again on non-Linux systems.
+    
+    See also commit 345a1e4254812cb9edc1d274491b76681a9dba1e.
+
+commit 881de6ab7355277a5c116a008fbe513293b05039
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 3 10:08:21 2012 +0100
+
+    Fix compiler warnings triggered by the Rmon MIB implementation
+
+commit 4629933c0d3b3f9f4ba583534f79a37fb9633817
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 20:05:31 2012 +0000
+
+    More compiler warning fixes
+
+commit e9b5a3dee6f9afab8b90a29392040632b075ad7a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 16:56:55 2012 +0100
+
+    Use SNMP_MIN() instead of min()
+
+commit ae452c77b411139d6b5800ffcf88d48e9b4792a8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 15:23:38 2012 +0100
+
+    Restore commit dbb8795a7df595f0603f2ec61704799f4c482667.
+
+commit c7d11fa00f9995ddb9fe3d4994a3e9790da2e189
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 15:18:40 2012 +0100
+
+    Restore commit dbb8795a7df595f0603f2ec61704799f4c482667 partially.
+
+commit 00fd62720ec454f5a690de4feba08223cfb2c3f8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 14:48:44 2012 +0100
+
+    CHANGES: snmptrapd: Avoid crash during shutdown due to invoking perl_destruct(NULL)
+
+commit d9e229d81abeaf191ef2ccb077842885c230d622
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 14:47:41 2012 +0100
+
+    Remove a superfluous declaration
+
+commit 1e2e2af6cae830f381e87a244d029eb86bf3fcce
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 13:20:37 2012 +0100
+
+    perl/SNMP/examples/pingmib.pl: Add error checking
+
+commit 241a141e31f1684fc6cf70cc4a00cce636fd3526
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 11:28:37 2012 +0100
+
+    Make configure-time EVP_MD_CTX_create() detection work on the 5.4 branch.
+    
+    See also commit 46eac02e9a27bf4f3068e795cab891f05a848870.
+
+commit 6d9d14feaaa2d0fec68b4d158944d32cb04ff1bc
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 11:12:00 2012 +0100
+
+    Revert the changes that break the build on the 5.4 branch from commit dbb8795a7df595f0603f2ec61704799f4c482667.
+
+commit 8abe49e30c97c8983e83b45a35c716fe91f66bea
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Feb 1 11:56:58 2012 +0100
+
+    Fix several compiler warnings in the DISMAN MIB implementations.
+
+commit f9fb0a533375e14dc370025a0b2fbc761bf27be6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 09:56:02 2012 +0100
+
+    Revert "HOST-RESOURCES_MIB: fix a compiler warning" because it's wrong.
+    
+    This reverts commit aa6b79bc124a7b7a885d7e5035ab06aa3ecef613.
+
+commit ca4a4fe25efd2714f8f1961b97856616563f42c9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 10:21:49 2012 +0100
+
+    .gitignore: Add python/build
+
+commit 13ada56558b44e28d1355c0dce1d921f3746d548
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:53:49 2012 +0100
+
+    Revert "Revert "Fix format specifiers to avoid warnings"" - there *is* NETSNMP_PRIo in V5-6+ branches
+    
+    This reverts commit aa528bd22c7493ca8d67e678fbf615ca0f63ea6d.
+
+commit aa528bd22c7493ca8d67e678fbf615ca0f63ea6d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:13:18 2012 +0100
+
+    Revert "Fix format specifiers to avoid warnings" - there is no NETSNMP_PRIo in V5-4 or V5-5 branches
+    
+    This reverts commit 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b.
+
+commit 2fb99be9aa86a6ca349b86d4ef8bc726ed9f2a82
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:58:35 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit e5c35589e0bf416bfd036bd468f42aaeab25e788
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:55:56 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 345a1e4254812cb9edc1d274491b76681a9dba1e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:51:26 2012 +0100
+
+    Fixed error handling in init_icmp().
+
+commit c303549a59fa8c2f20a9d8bf1e985fbc8abde6a8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:46:29 2012 +0100
+
+    Reworked _register_extend() error handling.
+
+commit 9c20e27a7026fc030da3b328b9a2e1b4f36670cd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:21:28 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 22fd0bfc2df0e1f6020dc3c50a753ddf28a4599c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:20:22 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 5d61e57baf580c78252c0abb0098c07bb05af17c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:17:05 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 3c3eeae80d796f27597c901e7ff2046c769ef4b8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:08:09 2012 +0100
+
+    Mark rowreq_ctx as freed so next iteration allocates new one instead of reusing the freed one.
+
+commit af9abd53c2337c90a691a7b044ff3f97c1003161
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:05:10 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit cf9465f54181e62e21a9b10219131107a3d2ebf6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:04:06 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 7871f2b09b8b52f34a9e57784266459053165bcb
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:02:50 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 7a37f33d310c9598607bc323d9bdbf91aaf72c95
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:00:51 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 3e45f7026249e45350edaac85337423aa0e95d8b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:13:18 2012 +0100
+
+    Revert "Fix format specifiers to avoid warnings" - there is no NETSNMP_PRIo in V5-4 or V5-5 branches
+    
+    This reverts commit 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b.
+
+commit 61936762e641c18db75aa5125a33e776c677adc5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 11:13:39 2012 +0100
+
+    Fixed freeing reginfo twice on error in a template and all its instances.
+
+commit 496437430415fbafeb1ccd4774f1ca00d627ea1f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 11:04:13 2012 +0100
+
+    python/netsnmp/client_intf.c: Fix compiler warnings introduced on V5.6 branch
+
+commit 5b4a24cdcee1bc3d82633ccafeb96fce95349c59
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 09:22:27 2012 +0100
+
+    unit tests: fix a 64-bit compiler warning
+
+commit cbf1c91baf7191be5fa27d81bcf8714331a2c12f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 09:20:42 2012 +0100
+
+    Use snmpTargetParamTable_dispose() to free a struct targetParamTable_struct.
+    
+    Fixes a bug introduced in commit dbf26a05a04ef24c47346e5adda48e338498e71f.
+
+commit aa6b79bc124a7b7a885d7e5035ab06aa3ecef613
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 09:20:31 2012 +0100
+
+    HOST-RESOURCES_MIB: fix a compiler warning
+
+commit 3a76b43e11fffada632fccb848ab500e876ad48b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 18 16:21:05 2012 +0100
+
+    CHANGES: python: Avoid that an SNMP set with UseEnums enabled causes a segmentation fault
+
+commit 84dec9fa92b0aa2d58eb7020330f4f98e5154321
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 18 14:38:21 2012 +0100
+
+    python/netsnmp/client_intf.c: Fix most compiler warnings
+
+commit 38cf218c3f1a727786e227a5d3fb186fd0f1a15f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:50:13 2012 +0100
+
+    Fix a typo
+
+commit 454122244122bfdb6f67cab31256d7b46372e9e1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:30:18 2012 +0100
+
+    Free tmStateRef on errors.
+
+commit 0119022daa59c73bfec0da2386d0628f14e6dab7
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:09:12 2012 +0100
+
+    Free fingerprint when it's not needed.
+
+commit 0e84cd303a08267dec78f6d81c9bb07e3d83a11f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:48:26 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 63dc846a7949ce697b3e28c543dc1105e63a2250
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:08:28 2012 +0100
+
+    Free certificate fingerprint.
+
+commit ce1f284a63eb81644b3e32606cbe39b67e1dff2a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:37:09 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 7e21413ca6f2efd7a3afb62c62b644881b8bd1e7
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:46:30 2012 +0100
+
+    Properly allocate and free engineID.
+
+commit 34c962882607c3638a2fa25a2ac531492d71c787
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:37:25 2012 +0100
+
+    Free locally allocated tmStateRef.
+
+commit f57ae531dc5658abcd65b1627615525238d16d2d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:20:24 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 536bc57556c3141561ea4a194810b16290a691ee
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:15:47 2012 +0100
+
+    Added check if the function actually does something.
+
+commit a0777d307dbcaf219ee0184a0fbab9d4e5d6aa0b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:01:45 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 8b97a71c8e7959428eb4d4e8d90e9096d43ff09f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 12:57:26 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 2c1507c22030549ae660c0e211fbdc5c75ec5c57
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 12:53:47 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 65f2b7bcd4fe03906aa1a115ab60a89b8ae933d5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 12:51:36 2012 +0100
+
+    Close open files on error.
+
+commit 0e52e4f66d44766bea37473556c78e5219b95461
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:45:33 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit dbf26a05a04ef24c47346e5adda48e338498e71f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:42:17 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 748da84b1fd654e338bc701e8f9e5da229187f1c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:32:04 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit eb217146fd54036ea4202bfef78bbf774d7e382d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:23:10 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 9ba38eec66138ec1f613ea8d04e158130c7121bc
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:18:55 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit d9d938d3018c27f53277bc5e59578500490c1d09
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:16:38 2012 +0100
+
+    Close open file on error.
+
+commit d5e817d5bd518d9ac6a0d60e0e141dd64f27ad19
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:14:12 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 2ae68f059df9d74b074d12f59c1847466ed576cd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:03:17 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit a00f3d461121b545aed72ac12b2438791dcfc4ba
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 14:58:39 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 59884bb4d35ad13747ffa6723436dca587a9ab77
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 17:09:12 2012 +0100
+
+    In above code, olength is checked, so let's check it also here.
+
+commit ba5d5292b04393b0c7d7d7ed961241929418c6e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 17:05:14 2012 +0100
+
+    Fixed dereferencing NULL.
+
+commit da2d6a7028a13b9edf3a5c84314d0f1feef76714
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:44:56 2012 +0100
+
+    Prevent dereferencing NULL.
+
+commit f88054a9b69b6de274f7a14a59b47323e5e4e4c6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:37:35 2012 +0100
+
+    Don't dereference context if it's NULL.
+
+commit 7c4d459e8f1f652cc2098c3d4c81de90a84ed710
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:30:09 2012 +0100
+
+    Don't deference NULL.
+
+commit fc19b7f33b587927d2a01e72d23d21b9b1696ab3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:25:26 2012 +0100
+
+    Don't close NULL file.
+
+commit 5e95ca6790076b788072a801ee7c82969d995bcb
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:17:09 2012 +0100
+
+    Prevent dereferencing NULL when a transport does not have f_fmtaddr.
+
+commit eed6f5f9b9ae54d2ceab67ad85adde1f6a8a21d5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:13:13 2012 +0100
+
+    Prevent dereferencing NULL.
+
+commit 41cde68b5fa4b38d81450cf91e082cdfa825e7cf
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:10:10 2012 +0100
+
+    Check if a registration was really found.
+
+commit 5b72a40853876a186efcc0090a4e32c235b9c05f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:03:58 2012 +0100
+
+    Don't dereference NULL when difflen is SMUX_MAX_PRIORITY (which is highly unlikely, but...)
+
+commit fa6a912e41c5d0fd2a636894e86b6426c07375ab
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 15:37:44 2012 +0100
+
+    Check for missing value in setEvent.
+
+commit 410b71da425389fecc25d14f49f23753581576ad
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 15:28:41 2012 +0100
+
+    Dereference ereg only if it is not NULL.
+
+commit 185272d1a0b913774186f1b9135aeaf637ebed52
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 15:17:21 2012 +0100
+
+    As per above code, template_v2pdu can be NULL, so check it before dereferencing.
+
+commit 48e5ead3fd2c2b385df6972c67526ff6bdc30768
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 14:42:22 2012 +0100
+
+    Updated last fix to new error reporting style.
+
+commit f33d33615d6d85d0073726473c4146cbcdf11ced
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 14:30:07 2012 +0100
+
+    Fixed sigsegv when empty config line is parsed.
+
+commit b5df1eeb47ed3559b6f4d9ecccdb242126e6c992
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 14:11:58 2012 +0100
+
+    Fixed (highly theoretical) sigsegv when sp->securityEngineID is NULL.
+
+commit 6feed629a71899c113096959d8549dc1201e8f9a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 13:43:37 2012 +0100
+
+    Added NULL and len check just in case someone provides value = NULL and nozero len (-> NULL is then dereferenced).
+
+commit 355c5ab264af2a6020a1d8a923f80f11b942295e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 13:36:41 2012 +0100
+
+    Extend the NULL check, i.e. return if there is nothing to remove.
+
+commit ddd7948acad938cd42974505ddca4f0372116709
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 11:11:29 2012 -0800
+
+    update sparta's copyright
+
+commit 41256086a7a5041453419cfd6e562c7b55c56b0a
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 10:32:04 2012 -0800
+
+    pulled full copy of extractnews from master
+
+commit 625a70dbdfd9902da79efa293fe6d2ac8ccf2b2e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 10:24:19 2012 -0800
+
+    update to change to the newer log generating/parsing
+
+commit 62e32b13089b29edcf276f615da67e4508fe7bb5
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 09:29:42 2012 -0800
+
+    conflicting merge from master for extractnews
+
+commit 70084da61d2bcbd2cf1ed81bdc3bf6794c2affb6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 13 11:49:16 2012 +0100
+
+    CHANGES: snmpd: DISMAN-SCHEDULER-MIB: Handle 32-character schedContextName values correctly.
+    
+    See also commit b3c4982542e0ab151fb3884754cdfbcb472da52d.
+
+commit 04bf3e288158ee880edf237e4007fee37d2044dd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:39:37 2012 +0100
+
+    Fixed endless loop when SSL_read returns error.
+
+commit c1526fccc0474c1db18caa9dbb833853cddde3cc
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:13:21 2012 +0100
+
+    Fixed a typo.
+
+commit a27aa19df283156c032c81eaee5e115859d38c17
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:11:32 2012 +0100
+
+    Don't replace 'rc' variable, it's value is needed outside the loop.
+
+commit 985dff2b0876d9483c414fccea3ef6bc63e14561
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:01:32 2012 +0100
+
+    Removed duplicate code.
+
+commit 2fd7818318e7a5dfe98f52ccf750c2a63e825ded
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:00:22 2012 +0100
+
+    Removed duplicate code.
+
+commit 15f21130ba33dc9afd164e52dfd74c9cec0e9232
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:58:14 2012 +0100
+
+    Removed duplicate code.
+
+commit 2a8a8f2ab7cd75826c5d41ec3cfd5ce3e9634cf3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:39:28 2012 +0100
+
+    remove dead code, 'cp' is always != NULL here.
+
+commit 38fd6378cc3275180f63b8d9b9a4072b3dabf8e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:25:06 2012 +0100
+
+    Fixed a typo.
+
+commit ebd92e19b10c0a38e17cde407864b45c26e17327
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:07:43 2012 +0100
+
+    Removed unnecessary if (value) check - value is checked few lines before.
+
+commit c5cacf5caf979d018ea6cae1c03b8fdf0b118dfd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 13:44:43 2012 +0100
+
+    Prevent double free(), 'dirname' is already freed inside se_add_pair_to_list() if it fails.
+
+commit acdceb50ea66d6b323c74ee021fb77e810e4e7af
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 13:43:19 2012 +0100
+
+    Prevent memory leak when malloc fails.
+
+commit 17053e34cfe9a8ab395fb50f5c3f1dafc7247aeb
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 13:32:57 2012 +0100
+
+    Fixed double fclose().
+    Linux man page for fclose(3) says: In either case any further access (including another call to fclose()) to the stream results in undefined behavior.
+
+commit a6641edb9cb74fc2236b42ce5554fc3329956552
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 15:22:34 2012 +0100
+
+    MinGW: Skip test T065 if not started from inside an MSYS shell
+
+commit a883ef1982f301b1485d227301674927330f5b67
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 11 15:14:53 2012 +0100
+
+    Moved debug oputput before return.
+
+commit 45751967287d97640efdcdf8e77e8d490939d8eb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 14:17:18 2012 +0100
+
+    Convert strtoull() unit test into a Net-SNMP unit test
+
+commit 2c2fa48336a4f1f177c2991d6515d29f39533c44
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 13:50:44 2012 +0100
+
+    Convert read_config_read_octet_string_const() unit test into a Net-SNMP unit test
+
+commit 07c666f6cea27f2b2ab9bc08aed0cb6133fe3758
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 11 13:17:45 2012 +0100
+
+    Fixed commit 73a523e468277f6df2e984891313b8be8bce1921:
+    Fidex dereferencing key->info when key is known to be NULL.
+
+commit 3b686566296dd87bc42b7f1169daacdb3c45cc58
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Mon Oct 18 06:25:56 2010 +0000
+
+    Win32: builds again without warnings with MSVC 6.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19489 06827809-a52a-0410-b366-d66718629ded
+
+commit f3a7d1b09609dad649f58bbdb5b7e10d39b398c1
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sun Oct 17 11:04:06 2010 +0000
+
+    Follow-up for r19476: fixed a typo.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19478 06827809-a52a-0410-b366-d66718629ded
+
+commit 2de73bd365a381b9c353ca5230769eefb1ac71ed
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 11:42:42 2012 +0100
+
+    local/passtest: Remove an incorrect PATH= statement
+
+commit 699513f1238e0adce1f1cec98e0d147293fc5047
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sun Oct 17 09:25:51 2010 +0000
+
+    NETSNMP_REMOVE_CONST()-related cleanup.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19476 06827809-a52a-0410-b366-d66718629ded
+
+commit 6358dee72fb347e2600a0a7bd21f23270d3a00f6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 10:58:15 2012 +0100
+
+    agent/mibgroup/ucd-snmp/versioninfo.c: Add a comment
+
+commit 5396bfe032c8cbc73c8ff5d4b085ebada9f59846
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 10:30:16 2012 +0100
+
+    Replace strncpy()/strncat() by strlcpy()/strlcat()
+
+commit feb3af28dcae22015ae865a2e5dd8c416e9991d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 10:02:08 2012 +0100
+
+    Replace strncpy()/strncat() by strlcpy()/strlcat()
+
+commit b7e1aa255bae4a3453f9eca644a876634351f11d
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sat Mar 20 19:36:28 2010 +0000
+
+    CHANGES: libsnmp: changed the type of the fourth argument of netsnmp_set_row_column() from const char* to const void* such that no cast is necessary when passing another datatype then char* or const char*.
+    CHANGES: Win32: changed in_addr_t from u_int to u_long such that it matches the datatype of sockaddr_in::sin_addr.
+    Also, fixed several compiler warnings (mostly char * <> u_char * mismatches) and removed some casts.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@18345 06827809-a52a-0410-b366-d66718629ded
+    
+    Conflicts:
+    	agent/agent_registry.c
+    	agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
+    	agent/mibgroup/mibII/interfaces.c
+    	agent/mibgroup/ucd-snmp/disk.c
+    	apps/snmptrapd.c
+    	snmplib/snmpIPv6BaseDomain.c
+    	snmplib/snmpUDPIPv6Domain.c
+    	snmplib/system.c
+
+commit f47a3752849db075e6f2053b8595b7b792fb6462
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Fri Oct 15 10:56:09 2010 +0000
+
+    CHANGES: Win32: building: Builds now correctly with a 64-bit compiler.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19458 06827809-a52a-0410-b366-d66718629ded
+
+commit 02b6056df95da8b673034e39c2c7c386ed0f369c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 11:44:53 2012 +0100
+
+    Fix a compiler warning about casting away const
+
+commit a19865832fc77f4c048144d91a431b1e94d329f2
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Wed Oct 14 23:12:05 2009 +0000
+
+    CHANGES: apps, snmplib: PATCH: 2835577: identified by "Bart Van Assche": Replace SNMP_ZERO of arrays with a memset.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@17797 06827809-a52a-0410-b366-d66718629ded
+
+commit 67a3e2eccb95f9c9d0809efcbddcd866ee3062d5
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed Jan 6 14:27:15 2010 +0000
+
+    Fixed a compiler warning about discarding the const qualifier.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@17970 06827809-a52a-0410-b366-d66718629ded
+
+commit 3dcde2e8a595a527f06142c3b852de8433a1cf28
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Sun Jan 24 14:27:55 2010 +0000
+
+    CHANGES: snmplib: Prevent gcc ped-warning for NETSNMP_REMOVE_CONST
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@18052 06827809-a52a-0410-b366-d66718629ded
+
+commit c2e1525a85bda5299a3b9f241614f7e6509aeeba
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed Jan 6 13:35:11 2010 +0000
+
+    Backport commit 295f473c83546221b2a71d815c61e33a67f98ae3: refine NETSNMP_REMOVE_CONST() implementation.
+
+commit cb423b0ae9ed0059aa100dc4e2fd93ad1b97faf8
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed Jan 6 11:57:51 2010 +0000
+
+    Backport commit e2fb09e0093e2f648fe2638da2f3af18fdb32bf0 - introduce NETSNMP_REMOVE_CONST().
+    
+    Conflicts:
+    	agent/snmp_perl.c
+    	snmplib/snmp_service.c
+
+commit afc396ab1618a8595a2519fbc25f7a498e174411
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 08:49:34 2012 +0100
+
+    Unbreak netsnmp_mktemp() and make_temp().
+    
+    These were broken by commit bb8fcbb874998000f945f058d1aa6fe14e925899.
+    Also replace a strncpy() call by a call to strlcpy() and replace the
+    make_tempfile() implementation by a call to netsnmp_mktemp().
+
+commit 210185c15d0d65f0ea98b5e3c2e0776f6222d170
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 08:27:43 2012 +0100
+
+    Fix a crash during startup of snmpd introduced by commit 885061687d9caa38470979667d7d8ad6563cedad.
+    
+    Also, make sure there is only a single copy of the cleanup code in function
+    mkdirhier().
+
+commit 8bb4e86abcf98ff28748af0af89c98e64d5cd961
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Jan 11 07:47:12 2012 +0100
+
+    Reduce the scope of the oldmask variable.
+
+commit 6680147b138ec114f81c5d128ac9350c8450d081
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 18:44:31 2012 +0000
+
+    Make test T015int64_clib pass on 64-bit systems
+
+commit 3aad15ae560ac857e73c90764e903e7ca02b3295
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:40:59 2012 +0100
+
+    Fixed buffer overflow for large OID names
+
+commit fba188ee82010b2f2d8ca2e426ba654499ab3d0a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:31:33 2012 +0100
+
+    fixed buffer overflow in __concat_oid_str
+
+commit 21d25d86b8e4904d798dc8c96dade9e5048457a8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:26:07 2012 +0100
+
+    Fixed buffer overflow when parsing port numbers.
+
+commit d36931841b2fc2cebc6364b2949129a0ad42ad1d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:05:51 2012 +0100
+
+    Fixed a buffer overflow when large SumFile is used.
+
+commit 0efdd022da09af1b5e16171fa7a2b523c5d6ec59
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:01:53 2012 +0100
+
+    Fixed buffer overflow when too big temp file pattern is used.
+
+commit 560bc6c09b751556efd6b4c4495751b109a93f92
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:59:24 2012 +0100
+
+    Fixed buffer overflow, just to be sure.
+
+commit 8291d7c5b92a31dd4f582b497d4b2a0853367a56
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:55:16 2012 +0100
+
+    Fixed buffer overflow.
+
+commit 88e1f34de7300575fa6dab857ecddb242a87de80
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:48:55 2012 +0100
+
+    Fixed buffer overflow when too long interface names are used.
+
+commit be1375a9926ebe0cd5b78a4045c3bd11c83664b1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:46:49 2012 +0100
+
+    Fixed buffer overflow when a sensor name is too long.
+
+commit 1cb24625372062b14c71d7dd51e20fef773e2743
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:41:00 2012 +0100
+
+    Fixed buffer overflow when a CPU has too long name.
+
+commit 84c807ee03251e54856e83d62d06ea08b8df527a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:36:50 2012 +0100
+
+    Fixed buffer overflow when too long interface names are used.
+
+commit c310e390b5dd05f24be7eb1904c74e41259c93db
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:24:54 2012 +0100
+
+    Fixed buffer overflow when too big temp file pattern is used.
+
+commit 4600d11434e83b8653cf9f813a3d8b630455b42d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:17:08 2012 +0100
+
+    Fixed plausible string overflow before parsing command line options.
+
+commit 885061687d9caa38470979667d7d8ad6563cedad
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:11:02 2012 +0100
+
+    Get rid of (insecure) SNMP_MAXPATH in mkdirhier()
+
+commit 8016890a445f6a7e2a873a04873d4e27b6ee64e3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:48:34 2012 +0100
+
+    Fixed wrong integer size on 64 bit platform.
+
+commit bb8fcbb874998000f945f058d1aa6fe14e925899
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:31:36 2012 +0100
+
+    Secure mkstemp() with umask() - on some implementations it does not set 0600 permissions automatically.
+
+commit 202523ca704bd722dc1ac0e1e6b0e4b4e5424495
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:11:57 2012 +0100
+
+    Fixed dereferencing 'c' before NULL check.
+
+commit 73a523e468277f6df2e984891313b8be8bce1921
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:08:24 2012 +0100
+
+    Fixed dereferencing key->info when key is known to be NULL.
+
+commit 2f4e6acd714183f015b763657f8f084593357e26
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 10:38:16 2012 +0100
+
+    .gitignore: Ignore perl/*.yml files
+
+commit c365d80c16c2d17b160011e8c1f9cb958954e9db
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 08:34:16 2012 +0100
+
+    CHANGES: snmptrapd: Do not invoke shutdown_perl() from inside the SIGTERM handler since that fails if SIGTERM is received while a Perl handler is active. Based on a patch posted by Joel Avni <javni@arubanetworks.com>
+
+commit d059fb878b1436599953cea5a077499ddcdcbcb5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 17:03:55 2012 +0000
+
+    CHANGES: BUG: 3440752: IF-MIB: Report interface speed correctly for Ethernet interfaces if other than 10 Mbps, 100 Mbps, 1 Gbps, 2.5 Gbps or 10 Gbps. Add support for NICs faster than 65 Gbps.
+
+commit c09903a42e9d97331fd9e48ee831a85afdf9c70a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Jan 9 13:26:17 2012 +0100
+
+    Doxygen-style documentation fixes
+
+commit e325ecbfce77f00ac5cf6fbd957f95495f61c59b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Jan 9 13:25:10 2012 +0100
+
+    Suppress uninteresting Doxygen warnings
+
+commit be9161d3a5898e863767f926613486126c2cbf67
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 12:35:39 2012 +0100
+
+    CHANGES: snmplib: Simplify implementation of functions manipulating 64-bit numbers.
+
+commit 86e4c2be0852a0a13b0603075720b3264ec70dde
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 12:29:11 2012 +0100
+
+    CHANGES: snmplib: Make it explicit that MAX_SUBID is an unsigned constant
+
+commit 37e272d8f7b7180ba140fa386a5ff058968a08a2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 18:21:48 2012 +0000
+
+    CHANGES: snmpd: IF-MIB::ifType: Report type "infiniband (199)" for InfiniBand interfaces instead of type "other (1)".
+
+commit 269932fa32c7cd47957489698e09bee31f63b7af
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 14:34:42 2012 +0100
+
+    Fix an MSVC compiler warning
+
+commit 0d1c21f9991d1309d057e3e4056d547df7d40ecf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 16:06:31 2012 +0100
+
+    Make declaration and definition of strlcat() consistent.
+
+commit 0c3d4dbb0a9cf5b359f70b2f19915495554f840f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 15:23:16 2012 +0100
+
+    CHANGES: Win32: snmpd: Remove dlmod
+
+commit 893ecc97b587661045becbe09a320c1bcbc71c7c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 14:36:59 2012 +0100
+
+    Add strlcat() to the MSVC build infrastructure.
+
+commit 3d126422e625702b9d3fa0676a97ec5cb20d9d10
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 15:01:06 2012 +0100
+
+    Make win32/net-snmp/net-snmp-config.h consistent with its .in file
+
+commit af53b76c2ffa751e3958d0fc5d8279f78c2c1c26
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 14:43:55 2012 +0100
+
+    Skip T066pass_simple and T067passpersist_simple on MinGW
+
+commit 35a92e693d133a5b11e9e9b599dbf47edef4933b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 08:16:36 2012 +0100
+
+    Remove snmplib/snmpDTLSUDPDomain.c again, which was added accidentally while resolving merge conflicts (commit 1d78f7d5b58aed2b52c4d386a7ba80a44711baca)
+
+commit a9b073ea3b6cedf713e305e7b15f28ae57bfdf1b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 17:47:11 2012 +0000
+
+    Fix 64-bit compiler warnings
+
+commit 7e890dad95f566069ee280215a4fea3f0e2e3980
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 16:38:50 2012 +0100
+
+    Avoid a SIGSEGV if cp == NULL. This is a follow-up for commit 089bcb360aa26790ad2a8ceddf583b7ba5ddfd48.
+
+commit 1f6200cfe1b0b27ebb093a1606b592f9e9684be8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 15:53:34 2012 +0100
+
+    Convert strncpy() calls introduced in v5.6
+
+commit c3126b143921fabeac442166eca5b5b742fd42c0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 15:02:39 2012 +0100
+
+    Replace most strncpy() calls introduced in v5.5
+
+commit b24ee7c909657db43bd8c5d8c01055ca0883c9cf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 08:40:39 2012 +0100
+
+    Eliminate most strncpy() and strncat() calls
+    
+    Using strncpy() and strncat() is error prone -- see also
+    http://www.gratisoft.us/todd/papers/strlcpy.html. Hence replace
+    all invocations of strncpy() and strncat(). Replace
+    strncpy(dst, src, n) calls by:
+    * strlcpy(dst, src, n) if the goal was to avoid output buffer overflow.
+    * sprintf(dst, "%.*s", n, src) to copy a prefix of src to dst or if src is
+        not '\0'-terminated.
+    * memcpy(dst, src, n) if strlen(src) >= n and n < size of dst.
+    * strcpy(dst, src) if n > strlen(src) and n < size of dst.
+
+commit 6d95bc4149472931005475c30a541fed5534da39
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 11:19:16 2012 +0100
+
+    Fix warnings triggered during compilation of the Perl xs source files
+
+commit bad0600f6ec944ef8455e327ce784b9b07d247c9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 10:00:13 2012 +0100
+
+    Add configure test for sockaddr_un.sun_path such that the com2sec test is run
+
+commit 92a32ac4866a5edc7f347d37942bf028de02762f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 10:00:29 2012 +0100
+
+    Get rid of a compiler warning
+
+commit 83e4c0e304f617ccac6610edd74d1706797bbf52
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 09:15:37 2012 +0100
+
+    CHANGES: testing: Add a test for se_store_list()
+
+commit 4fae5852103ec3893ad488bc0d905ca6914595ef
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 09:17:15 2012 +0100
+
+    CHANGES: snmplib: Simplify the se_store_enum_list() implementation
+
+commit b3222bb275f2f2346e0fd0478afa2efb600773e5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 09:16:45 2012 +0100
+
+    CHANGES: snmplib: Declare "type" argument of se_store_list() / se_store_slist() / se_store_enum_list() const
+
+commit 022f840fbfcb0e26b08f0e55728231f611495803
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 19:55:56 2012 +0000
+
+    Avoid that Valgrind complains about sending UDP data
+
+commit 672a809c228e9550b99b8910be75d0b161985402
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 17:33:09 2012 +0000
+
+    Fix a 64-bit compiler warning
+
+commit 24ff260ad89ce2aa361a55c7c72e916031defe35
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 17:11:24 2012 +0100
+
+    Change the type of the second argument of snmp_set_var_value() and snmp_set_var_typed_value() from u_char* to void*, like on more recent branches
+
+commit c6ca737fb46f90a4bda5d43734aac34e837a05f4
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sat Mar 13 19:07:37 2010 +0000
+
+    Backport commit f504ce2d74a4bc88f68cc9515fa7053373cb15b5.
+    (Fixed most compiler warnings triggered by the source code in the perl subdirectory. Note: these changes may contain some real bug fixes.)
+    
+    Conflicts:
+    
+    	perl/ASN/ASN.xs
+    	perl/OID/OID.xs
+    	perl/SNMP/SNMP.xs
+    	perl/agent/agent.xs
+
+commit d212dc984ec34e4d230625e46e58b0c628a50df5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 16:46:49 2012 +0100
+
+    SNMP.xs compiler warning fixes
+
+commit baceebb10d8caf5db63cc36935fed65ee931029d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 16:22:44 2012 +0100
+
+    Add declaration for shutdown_snmpNotifyTable()
+
+commit f7f966abd6d2849b1331252afe5c473e5c40b32d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 14:24:33 2012 +0100
+
+    Fix format specification mismatches.
+
+commit 303c015bcfe9af0b154e9881c7b4f449e08f30bb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed May 6 22:06:23 2009 +0000
+
+    Backport commit d3eb2b5ced22a8480053ce43acf9739729055404
+    (Sprinkle some const-ness where relevant / fix format string mismatches,
+    Niels Baggesen, May 2009)
+    
+    Conflicts:
+    
+    	agent/agent_sysORTable.c
+    	agent/helpers/instance.c
+    	agent/mibgroup/disman/event/mteTriggerConf.c
+    	include/net-snmp/agent/instance.h
+    	include/net-snmp/agent/sysORTable.h
+
+commit d95b40406916bda5b48b5a6131bec27b866b0a79
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed May 6 21:59:20 2009 +0000
+
+    Backport a2a7316c310f0fcc3728673fa047051c23b71960
+    (Trivial warning fixes, Niels Baggesen, May 2009).
+    
+    Conflicts:
+    
+    	agent/mibgroup/hardware/cpu/cpu_linux.c
+    	agent/mibgroup/host/hr_swrun.c
+    	agent/mibgroup/if-mib/data_access/interface_linux.c
+    	agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
+    	agent/mibgroup/ip-mib/data_access/systemstats_linux.c
+    	agent/mibgroup/mibII/sysORTable.c
+    	agent/mibgroup/mibII/system_mib.c
+    	agent/mibgroup/ucd-snmp/logmatch.c
+    	agent/mibgroup/util_funcs/get_pid_from_inode.c
+    	agent/snmpd.c
+    	snmplib/container_list_ssll.c
+
+commit d86c47f003fdc192bce7b46ac4f06b09e387c12b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 13:29:08 2012 +0100
+
+    Fixed a typo
+
+commit bee4d79cf4eb7e0a45397f59b5298da633a8e1ba
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 13:14:57 2012 +0100
+
+    Fixed reading past end of buffer.
+
+commit 3dc0e00a2fd8e34fe1ae33ecabf36e146460a31f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 12:40:07 2012 +0100
+
+    Fixed buffer overflow when large 'token' is used.
+
+commit b3c4982542e0ab151fb3884754cdfbcb472da52d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 12:28:52 2012 +0100
+
+    Fixed off-by-one memset.
+
+commit 0f53695044dd3f0c3507753e3f8c29d97e96872d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 3 21:38:26 2011 +0200
+
+    CHANGES: snmplib, snmpd, perl: Eliminate dead variables
+    
+    Conflicts:
+    
+    	agent/mibgroup/agentx/master_admin.c
+    	agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c
+    	agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c
+    	agent/mibgroup/host/data_access/swinst_pkginfo.c
+    	agent/mibgroup/host/data_access/swrun_procfs_status.c
+    	agent/mibgroup/ip-mib/data_access/systemstats_linux.c
+    	agent/mibgroup/mibII/kernel_linux.c
+    	agent/mibgroup/rmon-mib/data_access/etherstats_linux.c
+    	agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c
+    	apps/snmptls.c
+    	apps/snmptrapd_log.c
+    	snmplib/dir_utils.c
+    	snmplib/snmp_client.c
+    	snmplib/snmp_openssl.c
+    	snmplib/transports/snmpTLSTCPDomain.c
+
+commit 0153805c99b9197365935c5d11ae9c3d4bfaa0f3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 09:48:41 2012 +0100
+
+    Fix a set-but-not-used warning
+
+commit 3f8885fbee9407748fc2f0573728a11ba2bc023a
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Tue Apr 28 05:51:13 2009 +0000
+
+    Return a value from sprint_realloc_value even if no subtree is located.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@17578 06827809-a52a-0410-b366-d66718629ded
+
+commit b1eaaf302369fd4552e8fee7b6a805091ec0a9b4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 11:38:51 2012 +0100
+
+    Added check of find_sec_mod() return value.
+
+commit aee4e895fe3bd5f4a61e34275bfca0368b560555
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 11:31:22 2012 +0100
+
+    Added check of snmp_sess_transport() return value.
+
+commit 5d1d0a744ab30c8e645c3b8506cbbd2cceb3d275
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 11:04:48 2012 +0100
+
+    Added check of netsnmp_extract_iterator_context() return value.
+
+commit 299ea9a89c3f1758a7748bb9b3411f62f2c70f88
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 10:54:55 2012 +0100
+
+    Added check of fopen() return value, just in case of some race.
+
+commit 90f1ae6757917481636eef77100caeeb53edfe01
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 3 10:06:56 2012 +0100
+
+    Add strlcat.c. Source: http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/string/strlcat.c.
+
+commit 089bcb360aa26790ad2a8ceddf583b7ba5ddfd48
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 10:50:56 2012 +0100
+
+    Added strrchr return value check, just to be sure.
+
+commit 199a0511f6eb0ef3ff1d9f922b790ab67dfde01e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 10:31:26 2012 +0100
+
+    CHANGES: snmpd: smux: simplify smux_list_detach()
+
+commit d883573aa73e0f5fc188acedee6451f95dae900c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 10:23:06 2012 +0100
+
+    Fix a compiler warning introduced by commit a809fe5075c9f374715f7d1a682949a0730172c1.
+
+commit 7b7a3eb2500527eaa1699287a6ca6fcc4cc2e08a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 09:40:02 2012 +0100
+
+    Fix a build error caused by commit a809fe5075c9f374715f7d1a682949a0730172c1.
+
+commit 2b6c119fed4848da6663c11f0c2cbdc29921b5c6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:51:10 2012 +0100
+
+    Check for netsnmp_ds_get_int() errors.
+
+commit 6ce5360caa4c9de51ade57879e83f96bd04b4c5a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:42:23 2012 +0100
+
+    Check for missing view.
+
+commit b3bc54bed31690a85df2acfbf3296da93a9e89b4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:23:17 2012 +0100
+
+    Check socket() result.
+    Also close the socket on error.
+
+commit 92075f51cd45a38ca38760b3ffe82e16559e9c2e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:18:26 2012 +0100
+
+    Check open() result.
+
+commit 6665d5fe2fc569d6fa854d1d78e347bbac69e070
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:22:22 2012 +0100
+
+    Fixed missing break.
+
+commit a6648c5453e1ef8dac57a38efcc00cce53bf9e4f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:20:27 2012 +0100
+
+    Fixed missing break.
+
+commit d68dcae0f18d554571aef321944a5290548dde86
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:16:11 2012 +0100
+
+    Added 'fallthrough' comment for Coverity.
+
+commit fb6f80c0fe3ba36e56f5b911a47e3f6f32ba266e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:14:07 2012 +0100
+
+    Fixed exit code of encode_keychange with wrong arguments.
+    Also added a comment for Coverity.
+
+commit 3130e24fdc232464dd7bb216f46cafa2e0e775a6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:09:54 2012 +0100
+
+    Added missing break
+
+commit 18c126a9565cb4d69d7513b944a2105588045d35
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:07:29 2012 +0100
+
+    Added 'fallthrough' comment for Coverity.
+
+commit 6d31c82070a2c68fe3c519e9d56fa2779554d01f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:01:53 2012 +0100
+
+    Added 'fallthrough' comment for Coverity.
+
+commit dc6f0e2e549b4cd061ebc190084b1fc77a55f40f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:32:59 2012 +0100
+
+    Fixed wrong operator
+
+commit dab32867ed0b99301efd7b8d852ad1288a184be0
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:30:33 2012 +0100
+
+    Fixed QUITFUN usage.
+
+commit b1a2bcf64615eb66bc24d5be4950e45012962045
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:18:03 2012 +0100
+
+    Fixed wrong operator
+
+commit b2b1c851b94fed37c386eaa1bfead5c77696e3ef
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:14:52 2012 +0100
+
+    Fixed wrong operator
+
+commit a809fe5075c9f374715f7d1a682949a0730172c1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 10:58:46 2012 +0100
+
+    Added check for failed register_mib.
+
+commit 5949f055c16ae650615aae7a1fee3f2d7b16d940
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 10:29:59 2012 +0100
+
+    Make MIB file parsing and detection more strict - LABEL is required at the beginning of MIB files.
+
+commit e4b673683c68ba8b3abc040b9125ec304643cc7c
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jan 1 23:00:24 2012 +0100
+
+    Assume that libdl might be in AGENTLIBS or SNMPLIBS so preadd them.
+
+commit b13c1e57bedba79b806103c74f1921d53a706b38
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jan 1 22:55:06 2012 +0100
+
+    Do not require ucd-snmp/dlmod unless it will work.
+
+commit 27dcea0d5f801df494ab2cb5c5c0ebe54eb0dcd3
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 14:48:29 2011 +0100
+
+    Adjust paths for test restructure
+
+commit 14b60e85a1b5700e93d126e2f291d5c485f34e36
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 14:14:29 2011 +0100
+
+    CHANGES: snmpd: Make the configuration of the dlmod module fail rather than generate a dummy module if the dlopen function isn't available.
+
+commit 98a97538fc1e9ff46b60d5d969347444578378c0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 13:35:13 2011 +0100
+
+    Adjust the paths to support testing even if builddir != srcdir
+
+commit 88f0af3cfb916ae5863cc2986071d435f20c3064
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 11:37:52 2011 +0100
+
+    Reduce the scope of the variables 'p' and 'len'.
+
+commit 0815a7536c76f7e4842638683f674894a1a8ce14
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 29 14:42:54 2011 +0000
+
+    Report problems with SetUndo processing
+    Missed when applying patch #3445440
+
+commit eb2ab23742ca86c0b89ccfe91eb6ea374bf3acc1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 29 14:37:31 2011 +0000
+
+    Check for the expected error (EPIPE) on closure.
+    Missed when applying patch #3447444
+
+commit aac10bc4f053c014f382d6593fc32ab95e0b1a57
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 29 12:59:52 2011 +0000
+
+    CHANGES: snmpd: BUG: 3463767: Handle parsing subidentifiers > 2^31
+
+commit bbc02e36e90c1aab7898562f963f5cadb26e10bd
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Dec 28 17:15:16 2011 +0000
+
+    Move pass/pass_persist tests to the new location
+
+commit 3898c04fd6f89867062fdfebf36857ab619c0450
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Dec 28 16:53:24 2011 +0000
+
+    Add tests for pass/pass_persist, supplied by Bill Fenner
+
+commit d5ee3f0a1a63bb1752c74cbca55aa3d40bf9bf13
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 21:58:51 2011 +0000
+
+    CHANGES: snmpd: PATCHES: 3447444: Fix SIG_PIPE handling
+    Patch provided by Bill Fenner
+
+commit 2a17b37430c1852998c3588e547d7eb61c06da71
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 21:45:38 2011 +0000
+
+    CHANGES: agentx: PATCHES: 3445440: More robust handling of AgentX errors
+    Patch provided by Bill Fenner
+
+commit fe58a0e5f4d4e2e2ecbcb47382b08cb1e4df352c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 18:16:23 2011 +0000
+
+    CHANGES: snmplib: PATCHES: 3456770: Handle (obsolete) UInteger type properly
+    Patch provided by Bill Fenner
+
+commit 1be8cf08a67a91855fee1ec4a2d8e087c7812456
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 18:04:10 2011 +0000
+
+    CHANGES: agentx: PATCHES: 3445437: Log AgentX disconnections
+    (in line with connections) Patch provided by Bill Fenner
+
+commit 068037289107faa2ba3f5cd2fb00c19494bb9a04
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 17:27:46 2011 +0000
+
+    Handle any GETNEXT request OID, not just a simple walk.
+
+commit a74fa528983123d355a8cdcaa77dd4eb4b8c6959
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 17:00:18 2011 +0000
+
+    CHANGES: pass: PATCHES: 349394: Bring pass_persisttest script into line with passtest*
+    (i.e. using the legitimate structure of NET-SNMP-PASS-MIB)
+    Patch provided by Bill Fenner
+
+commit bbe649ebfa61ea22399170b36b99db30a1de8012
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 16:54:38 2011 +0000
+
+    Rework "passtest" example to fully validate GETNEXT requests
+    and use a legitimate structure for output.  Backport of SVN
+    revision 17632 (which updated 'passtest.pl' but missed 'passtest')
+    Correct in branches 5.5 and above
+
+commit 82d06c7247b22c8b01d45bf55041d2f1e6427d49
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 13:45:18 2011 +0000
+
+    CHANGES: snmpd: PATCHES: 3447671: Fix override handling of OID values
+    Patch supplied by Phillip O'Donnell
+
+commit ba4a9ce51c9600f9fda168f1e6eff32a1db63cb9
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 13:24:26 2011 +0000
+
+    Tweak --disable-snmp-set changes
+
+commit 827c8b28830171faa9c61d53efca9eb6600561c2
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 11:25:43 2011 +0000
+
+    CHANGES: python: PATCHES: 3433846: Fix for use with python 2.4
+
+commit f98a54a99caf7b46b100a920db942cbca9c43926
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 10:10:36 2011 +0000
+
+    Skip SET-based tests when configured with --disable-set-support
+
+commit 230df14f94c3736ff34379a4e281eea353b47f80
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Dec 26 23:34:23 2011 +0100
+
+    Do not assign tmStateRef twice
+
+commit c96b3b4d8530ad5e0efb03f24dab5e5f1a460031
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 25 11:18:21 2011 +0100
+
+    Correct use-after-free.
+
+commit c5978c89cde2440f4d20dadbc9d1dd8db562d56e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 25 11:15:44 2011 +0100
+
+    Correct double-free.
+    
+    netsnmp_tlstmAddr_add takes ownership of it's argument so calling free on the
+    argument on failure is incorrect.
+
+commit c139ca123b44bb3b9b6bf921e1609cc45f63a660
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Sat Dec 24 16:55:30 2011 +0000
+
+    CHANGES: snmpd: PATCHES 3410059: Fix sparsely augmenting trigger tables
+    Patch provided by Stephen Turner
+
+commit c4ae021b2e6384437081c5623f360c8896390188
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Sat Dec 24 16:29:54 2011 +0000
+
+    CHANGES: snmpd: PATCHES 3410050: Skip already-'processed' varbinds
+    Based on mib2c patch provided by Stephen Turner
+
+commit c6accf8c66254fa8c48767ed7dec795ddafc522e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Sat Dec 24 16:27:11 2011 +0000
+
+    CHANGES: mib2c: PATCHES 3410050: Skip already-'processed' varbinds
+    Patch provided by Stephen Turner
+
+commit a61826ad8ca54661d1d909712503bd3a8b32eed0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Dec 22 18:35:46 2011 +0100
+
+    Remove unused variable.
+    
+    myMatch is unused as nmatch is zero and also since regexBuffer is created
+    with REG_NOSUB set.
+
+commit ba4fc80fe2cfd5a5d89230d8f3703e4fe01e6019
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 22 19:24:40 2011 +0000
+
+    CHANGES: agent: PATCH 3402376: from Leonardo Chiquitto: Recognise ReiserFS
+    Also move various FSType definitions to the appropriate blocks
+
+commit b5ac4a04dcd5470d08d03321abcd1e982621e6e0
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:39:46 2011 +0100
+
+    Fixed unterminated strings after strncpy
+
+commit 2b37e4e8f250a0d8821199a74ac3f4e5b7b7baba
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:31:51 2011 +0100
+
+    Fixed unterminated strings after strncpy
+
+commit 3d08345156c419333de969f13d21fcec7e18e94d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:32:29 2011 +0100
+
+    Fixed unterminated strings after strncpy
+
+commit cd859ad51c4f18d5b0fc69dd669fcb051c798969
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:39:33 2011 +0100
+
+    Fixed wrong memmove size
+
+commit 30ff58d09d4c9d5438bb621054fd7ad7a2a597e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:07:19 2011 +0100
+
+    Fixed wrong length of buffer when printing ASN_BIT_STR
+
+commit 6c1487e1d360d3d260a39cb1f5b15da978395053
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 15:47:34 2011 +0100
+
+    Fixed potential free of uninitialized pointer in error cases
+
+commit c76fb96f65e33ba2fd212a921e8c386155ee5c7a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 15:44:46 2011 +0100
+
+    Fixed unitialized values in udpTable
+
+commit c44608679b89751176f28a2e54d5282b46e2a05c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 14:56:13 2011 +0100
+
+    Use calloc instead of malloc and manual clearing
+
+commit a05c5f9513461824e7903ae9ae9a6c3386e33879
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 14:40:50 2011 +0100
+
+    Fixed printing of unitialized variable when sensors_get_label() fails
+
+commit e4a5edc72393bd3de9bf12bceba9d83bbf7de70b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 14:31:25 2011 +0100
+
+    Removed unused variable
+
+commit fae2e5b835b8df1eae47e4cebb4eb404d7282377
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 13:31:21 2011 +0100
+
+    Fixed dereferencing unitialized iid in error cases and with debug info enabled.
+
+commit 9d58f81a9239cfbcfc8ebce367d21e9b3dcb028b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 13:33:33 2011 +0100
+
+    Fixed dereferencing uninitialized variables in error cases
+
+commit 0bc8c08edeae7ae095f116258c20ae5767d60652
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 13:20:52 2011 +0100
+
+    Fixed returning uninitialized variable 'status' when ss == NULL
+
+commit 7304c53cf8adee8eccef1a8f26756fc07f098721
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 18 23:31:53 2011 +0100
+
+    On solaris 10 test in /bin/sh doesn't support the -e test. Replace it with -f
+
+commit 8cd3be60d693c9c36ffb97d3d9bcb49c1b4abe35
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 17 08:52:24 2011 +0100
+
+    Avoid repetition of the complex expression determining if it is possible to get the destination address.
+    
+    This also makes it possible to build on platforms like Solaris 10 that define
+    IP_RECVDSTADDR but lack either of msghdr.msg_control and msghdr.msg_flags.
+
+commit 953f2e3d425ede3b863a2e7ccb0b4bc862928b57
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 5 22:13:07 2011 +0100
+
+    Move the use of _sendto and _recvfrom below their definitions.
+
+commit 68a1173c46cf77601426cf391d9a852794f2057e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Nov 20 20:05:18 2011 +0100
+
+    CHANGES: snmplib: Separate out the cmesg buffer size
+
+commit 461dd16f3b2647322cdce6363081cc44ba5a49b5
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 26 21:51:01 2011 +0100
+
+    CHANGES: snmplib: Merge together the Linux and *BSD version of src port sending.
+
+commit 7accb69baa1fc0b6a3439d2e549c86da3453bad2
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:30:31 2011 +0100
+
+    Use a bare struct iovec in instead of a one element array.
+    
+    The purpose of this change is to make _recvfrom more similar to _sendto.
+
+commit 39852cd4c85ef2bfc75cdea2825261ee93e768c2
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:29:20 2011 +0100
+
+    Add comment describing the purpose of the call to getsockname after almost removing it.
+
+commit 1b292ca27eab5caa73feaaa83dc9c12abc0f2e70
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:27:59 2011 +0100
+
+    Reduce variable scope.
+
+commit bc879571eca9520bc132f840c3e659d3793144d7
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:25:36 2011 +0100
+
+    Introduce temporary variables to ease the extraction of the server address.
+
+commit b7eea6cffbd872932ce2c04fefb6f43de339f374
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:18:33 2011 +0100
+
+    Rename the cmesgptr variable to cm.
+    
+    The purpose of this is to increase the readability of the code.
+
+commit 0a7461e728805c62a1cab9d87bfc74c7927a9fcc
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:15:22 2011 +0100
+
+    Factor out a common loop in recvmsg option processing.
+
+commit b3c6248d0201ab1610840d6d0e749b3b6c4ad792
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:13:43 2011 +0100
+
+    Unify the structure of Linux and BSD recvmsg option parsing somewhat.
+
+commit 356400d6290a423b52ebeea5a5e976fb15bb73b4
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:04:56 2011 +0100
+
+    Use CMSG_DATA on the result of CMSG_FIRST/NEXTHDR, not on the buffer.
+
+commit 3b351708c62de46aa1b90ed232cfd8c7c5b02231
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 12:00:32 2011 +0100
+
+    Remove a cast
+
+commit de9250d9dae9727a6cc7f647688dddf1b8597128
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 11:58:04 2011 +0100
+
+    CHANGES: snmpd: Make sprint_mib_oid() treat OID components as unsigned instead of signed integers
+
+commit 0e33b3b6d5854a4bac15d4ea5e016c53d161d0cd
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 10:02:28 2011 +0100
+
+    Fix recently introduced compiler warnings
+
+commit b7e50d5f9a6755982d2af3191473cb34643bc03f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 08:37:22 2011 +0100
+
+    CHANGES: snmplib: Reduce overhead of config file parsing
+
+commit 73c9ee42d28afe2e107a7d6616b6d011890c36ea
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 09:09:59 2011 +0100
+
+    Remove unused variables
+
+commit 3db97962b37eb12d254d61e6be234b06a391c8bb
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Thu Dec 8 07:43:45 2011 +0100
+
+    CHANGES: snmpd: PATCH 3453868: from "Bill Fenner <fenner@gmail.com>": Factor common code into pass_common
+    
+    Move the code for pormatting and printing values from pass and pass_persist
+    into pass_common.
+
+commit b6568c83f1756e9a65434edeeeb40d23ddbbb652
+Author: ccchiu <ccchiu@sourceforge.net>
+Date:   Wed Dec 7 16:25:27 2011 +0100
+
+    CHANGES: BUG: 3452069: Fix snmptrap_oid declaration in mib2c generated code
+    
+    This bug was introduced considerable time ago. It did already exist at the
+    time the 5.6 branch was created (see also commit
+    0ec088afa27cfda4e6ea78aae7cfc5507564edde).
+
+commit d494db64c208b4dc62813132f8863bd5c1a39d77
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:38:17 2011 +0100
+
+    CHANGES: snmptrapd: Eliminate an unused variable (Now)
+
+commit 28f2561bc2935d8e1cbf46d2820158173e7a4cf4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:37:11 2011 +0100
+
+    CHANGES: snmptrapd: Move the main loop code into a new function
+
+commit 396e122ddc42a916f06a02884c0e8a258edbe238
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 09:32:16 2011 +0100
+
+    CHANGES: snmpd: Match each getpwnam()/getpwuid() call with an endpwent() call and each getgrent() call with an endgrent() call.
+
+commit 3efefbc0024399786f8b68b1e93b0a8fddddc7da
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:41:01 2011 +0100
+
+    CHANGES: snmptrapd: Remove superfluous casts
+
+commit 7f05daa8e0e0f533b0f12a3e1cf07641519909d6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 11:58:32 2011 +0100
+
+    CHANGES: BUG: 3444939: BUG: 1796886: snmplib: Avoid that sprint_realloc_octet_string() embeds unprintable control characters or binary zeroes in its output. This behavior could cause truncated output in snmptrapd.
+
+commit db8f558fd2f3b7c109ea3a1c2133b75b6f8cb2ad
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:04:41 2011 +0100
+
+    Compiler warning fix: pass unsigned chars to isprint() instead of signed chars.
+
+commit 800dc1028e7e0cd8cc14d84dd31723d47ac073db
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Dec 1 10:18:58 2011 +0100
+
+    Reduce the scope of the hint variable
+
+commit 83ea4a080c90a74b9743d3f24cf0d4b8a1e8c849
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Nov 27 21:16:52 2011 +0100
+
+    Reduce the scope of the variable qos
+
+commit 7b9e03441c3dc3a07670ed01f5d04791a82c750c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:04:01 2011 +0100
+
+    Remove #define val(x) __STRING(x) and change val(x) into __STRING(x).
+
+commit 2f379b0e4ecadfa4e541e3005c8fc8281882b741
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 15:58:47 2011 +0100
+
+    Follow-up for commit 1aa704e: unbreak the MSVC build
+
+commit 64ef0f71127617837027fb2cfaf174b95ba79e0d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:19:50 2011 +0100
+
+    Add SNMP::register_debug_tokens()
+
+commit 7bead9ca917c67566d5ed98ab507bbc02816217d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:08:08 2011 +0100
+
+    AgentX subagent: Reduce code duplication
+
+commit 0ed71541f87e7d78bc998eebda3217c59e1df830
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:03:19 2011 +0100
+
+    CHANGES: snmplib: Add Doxygen-style function header for netsnmp_register_default_target() and netsnmp_clear_default_target().
+
+commit 8c2972b61e40169b47c50988b6ae9e8c285f84f8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:02:54 2011 +0100
+
+    CHANGES: perl: Fix spelling in the documentation of the SNMP module
+
+commit 5df2bac6bd717799311f001ac7b73db88f11bdda
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Nov 29 08:59:58 2011 +0100
+
+    CHANGES: snmplib: Only transform the address to printable form when needed.
+
+commit 171e8d48d4af04013cff8fd28f5341a2aef21d88
+Author: Mijo Safradin <safradin@linux.vnet.ibm.com>
+Date:   Tue Nov 29 16:49:46 2011 +0100
+
+    CHANGES: snmp-bridge-mib: Fix index interpretation.
+    
+    This patch corrects a wrong data interpretation.
+    snmp-bridge-mib obtains the ifindex value from the sysfs
+    attribute 'ifindex' The value given by the sysfs attribute
+    is an integer, which is handled as hex and leads to
+    incorrect data displayed to the user.
+    
+    e.g.
+        $ > snmpwalk localhost BRIDGE-MIB::dot1dBasePortIfIndex.2
+        BRIDGE-MIB::dot1dBasePortIfIndex.2 = INTEGER: 54
+    
+    according to the sysfs attribute the value is 36
+    
+        $ > cat /sys/class/net/<device>/ifindex
+        36
+    
+    Signed-off-by: Mijo Safradin <safradin@linux.vnet.ibm.com>
+
+commit 82e39fb6706df90ecf2fc9e10ada2b962ee196f3
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Nov 29 12:27:46 2011 +0000
+
+    Fix multi-line case testing of incoming OID
+
+commit b15da1a4516061105a1eac7450cf650ec44266b2
+Author: Nikolay Denev <ndenev@gmail.com>
+Date:   Tue Nov 29 08:29:49 2011 +0100
+
+    CHANGES: FreeBSD: Restore IP_RECVDSTADDR functionality.
+
+commit 7f47f52e481baa9aafb5784244b0dd2653e7dcff
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Nov 28 08:51:39 2011 +0100
+
+    CHANGES: snmplib: Use SNMP_ALLOC_TYPEDEF to allocate transports in order to avoid the separate call to memset.
+
+commit cf86039e3086225c3085bb9adf088b8ba5ba6979
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 15:02:58 2011 +0100
+
+    CHANGES: MinGW: testing: Make unit-tests/T102pdu_build_clib pass.
+
+commit 1a87e76e00ee3d5cd37a07bfc3d84490d3c2a4ec
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 14:55:42 2011 +0100
+
+    CHANGES: MinGW: testing: Make unit-tests/T014gethostbyaddr_clib pass
+
+commit 8867fd1dcfe72b59d07322ff38a699b66ec4f326
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 09:44:38 2011 +0100
+
+    CHANGES: snmplib: Make netsnmp_large_fd_set_resize() robust against memory allocation failures.
+    
+    CHANGES: snmplib: Make NETSNMP_LARGE_FD_ZERO() use memset() on Unix systems instead of an explicit loop.
+    CHANGES: snmplib: Make sure that on Unix systems netsnmp_large_fd_clr() doesn't try to read memory it isn't allowed to read if the first argument equals -1 (a value that shouldn't be passed by the caller).
+    CHANGES: snmplib: Make netsnmp_large_fd_is_set() return false on Unix systems if the first argument equals -1 (a value that shouldn't be passed by the caller).
+    CHANGES: Windows: Make netsnmp_large_fd_set_resize() shrink behavior correct.
+
+commit 23db0cf09b8b0eab37b749ef0c3c3f306900245c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 21 23:02:57 2011 +0100
+
+    Fix casting tv_usec to int which may be too short
+
+commit 80ee4022e534e64aad5a5f27192843b42acb85e0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 09:14:02 2011 +0100
+
+    CHANGES: snmpd: BUG: 3439234: Move netsnmp_pass_str_to_errno to pass_common and rename it to netsnmp_internal_pass_str_to_errno
+
+commit 0baa9296c072bb3735760b0dd992f2d1d3ca27fa
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 09:05:24 2011 +0100
+
+    CHANGES: snmpd: BUG: 3439234: Correct the dependencies of ucd-snmp/pass and ucd-snmp/pass_persist
+
+commit 1aa704e4a294430b28e39b6f9e4683b8a48bce04
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 08:35:21 2011 +0100
+
+    CHANGES: snmpd: Factor out asc2bin and bin2asc. Add a netsnmp_internal_ prefix to them
+
+commit cda8fe91013f12cbf64a0775abb55720035af931
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 00:55:24 2011 +0100
+
+    CHANGES: snmpd: Call snmp_oidtree_compare instead of snmp_oid_min_compare
+    CHANGES: snmpd: Remove snmp_oid_min_compare since it is internal and unused
+
+commit 85f893e2b605e67f9bd0443c74e2ed269aa68564
+Author: Niki Denev <niki_d@users.sourceforge.net>
+Date:   Thu Nov 17 22:42:32 2011 +0100
+
+    CHANGES: snmpd: PATCHES: 3175640: Use IP_RECVDSTADDR sockopt where available (*BSD)
+    
+    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
+
+    Fix size_t/int mismatches
+
+commit ca294cf75bbc8e90dbf44ee40478935e91db1487
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:18:03 2011 +0100
+
+    Remove unused variables
+
+commit cd32c2dff06b9b452cc18d552d2f2234092c829c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:17:09 2011 +0100
+
+    Fix format warning
+
+commit 883136c2b2fa0739f437a8cfb6614accc76e268e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:15:58 2011 +0100
+
+    More needs for NETSNMP_PRIo format specifier
+
+commit b8084a7ccc909b6d6db7c0e8e596d78671f5678b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:14:26 2011 +0100
+
+    Fix using char as array index (ctype.h)
+
+commit 84529e6320a89d97f1314aebad806255d2a1b18c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:00:57 2011 +0100
+
+    Fix missing format for FreeBSD 4
+
+commit 4bd0352955a2551bfe02308dd134b9128c98b9e9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 22:59:36 2011 +0100
+
+    Fix paranthesis problem
+
+commit fe6269b1900cf44dc27a199a761d15a01c3f3092
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 22:58:34 2011 +0100
+
+    Fix size_t/int mismatches
+
+commit a4db9f9fc13d21ecff488eb410376edda6c28232
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 13:43:34 2011 +0100
+
+    Remove unused variables
+
+commit 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 13:37:49 2011 +0100
+
+    Fix format specifiers to avoid warnings
+
+commit 25cfc1962ae576ccb1558da1e3ef8b6c17f63c16
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 11:27:53 2011 +0100
+
+    Really up-to-date mibs
+
+commit 0e86c781f3989bf022c8993a118617b74a75420c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 09:17:19 2011 +0100
+
+    memory_linux: get Shmem from /proc/meminfo for 2.6 (or newer) kernels
+
+commit bf264d15ded7acbbf2e3871b98fd1fcef43d9ec3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 09:16:16 2011 +0100
+
+    memory_linux: close sockets in error situations
+
+commit 57ff8a40bae5d9bcad16089142a9cf328c9fa1f5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 09:14:57 2011 +0100
+
+    disman/ping, disman/traceroute: Close sockets in error situations
+
+commit 8a2502a15c3217b95939a3c836167d230ac35f02
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 09:13:53 2011 +0100
+
+    Up-to-date list of RFCs wit mibs
+
+commit dcdd702111d8da5f53804cfcf0dfdad731468bde
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Nov 15 10:57:34 2011 +0000
+
+    Don't try to install an empty list of man pages (MAN3)
+
+commit ba619804e5978a8df754844efcca52b69b5015fa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Nov 14 13:34:20 2011 +0100
+
+    MinGW: Make sure that the backslashes in the pskill message are displayed.
+
+commit 923eecc507f75043b60c5e68053a4f396ab0b0d2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Nov 14 12:36:38 2011 +0100
+
+    Compiler warning fix for systems where uint64_t = unsigned long (e.g. RHEL 6.1/x86_64)
+
+commit 434bfc1f7457550b6f87d5bcd511276b270b5964
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Nov 14 11:22:53 2011 +0100
+
+    CHANGES: snmpd: from Martin Wilck: fixed snmpd crashing with 'select: bad file descriptor'.
+    
+    On 32-bit systems, snmpd dies with aforementioned message when using file descriptions > 32, e.g. when having >32 AgentX subagents.
+
+commit ed65eca6e7f9cfa7380a78d56c01ed314745b169
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 19:01:21 2011 +0100
+
+    FreeBSD-9: Fix for const'ifyed nlist arguments
+
+commit eaca7983e3655ab696fcc4461ca0cedbac6ce69a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 19:00:12 2011 +0100
+
+    NetBSD-6: One more instance of timespec replacing timeval
+
+commit 8ad6c53fdec5adeae4e52f1751ecec4a345bab05
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 18:59:01 2011 +0100
+
+    Fix buig #3436527: arp_netlink: fix dying reload of cache
+
+commit 378ffed03ba79a8346d6c62781e2ddf5ce92a478
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 18:55:43 2011 +0100
+
+    Fix bug #3436528: swinst_pkginfo: recover from NULL return from opendir
+
+commit d7ad8f5f9f3f67f16f65c2515d11e194d2cdd12c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 10 14:04:41 2011 +0100
+
+    CHANGES: Cygwin: Make date_n_time() produce time zone information
+
+commit ba35c50b2f459bd9c11ed59cc7d1b16215644fa3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 10 14:17:04 2011 +0100
+
+    Replace AC_TRY_LINK() by AC_LINK_IFELSE()
+    
+    Note: these changes do not affect the generated configure script.
+
+commit f615bf24f5d0f23ce9301da556184d6460740456
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 9 20:32:49 2011 +0100
+
+    Fis Bug #3434824: SIGSEGV when reading disk directive after SIGHUP
+
+commit a94a179d9340f51fa7c23431630bc0ffd6d759e8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 9 20:30:51 2011 +0100
+
+    Fix bug #3433616: dont treat DateAndTime as a string
+
+commit b29e4164531d258fe34a6fe2b9e1ec60c56f9544
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Nov 7 01:25:57 2011 +0100
+
+    CHANGES: testing: Remove unused variable
+
+commit e221e65fdc1c68f1968651717dcc9ccfb6414783
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 3 15:05:00 2011 +0100
+
+    Fix warnings about converting sockaddr_in * into sockaddr *.
+    
+    This is a follow-up for commit a0af385.
+
+commit 2e7e9eda0b0d62a7645a9a8f70ef3fb6f3dd6941
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 3 11:17:48 2011 +0100
+
+    Fix uninitialized variable warnings.
+
+commit 3462ebcdd0b7c298cb15c3099736f4f952257846
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 28 16:07:15 2011 +0200
+
+    Remove those superfluous parentheses that trigger a clang warning.
+
+commit 3e5fedd3e7d1ef31683604bf73dc56e944cad349
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Nov 3 09:45:27 2011 +0100
+
+    CHANGES: snmpd: fixed UCD-SNMP-MIB::systemStats after 30 days of uptime.
+    
+    After 30 days, values from /proc/stat (on Linux) can get bigger than 32bits and snmpd calculations might render counters like ssCpuUser negative or zero, while the real value is higher. Therefore the counters should be tracked as the largest integer available.
+
+commit 0fc8221b24988c4ae6180ed42b86b9852fd586ad
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 2 22:59:08 2011 +0100
+
+    dskIndex was off by one
+
+commit a5b28829e64d5f3b87e4b9b1ef8cc204f33a61b7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 2 21:25:07 2011 +0100
+
+    Solaris needs $AWK to get a usable nawk
+
+commit 2801a2139f27021e1ab15e362e2d3d624ffaa494
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 31 22:55:53 2011 +0100
+
+    Patch #3406364: Fix unstable data for NetBSD.
+
+commit 821a58d112d7ac495149e262d704412ba2800438
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 31 22:43:52 2011 +0100
+
+    Fix ipv6 statistics looping too far when scanning interfaces.
+    Fix TCP session table repeating data from first entry for all.
+
+commit 349591d03e17a55b43eacc6a687b02fd8d4e9528
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Oct 31 08:59:37 2011 +0100
+
+    CHANGES: perl: Make it possible to build perl support without support for opaque types.
+
+commit 1ec7110e72bce1561f746517459d6f043016b60e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 30 19:05:30 2011 +0100
+
+    CHANGES: testing: Make the asn1 test pass even if support for opaque types are removed.
+
+commit 6d26918af55aa3662a720542de77bbf39b0a3e91
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Oct 29 08:34:33 2011 +0200
+
+    CHANGES: snmpd: Disable the support for integer64 in pass scripts if compiling without opaque-special-types.
+
+commit 29bf69d70424f359d9c87f07a964a099415649a5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 13:02:25 2011 +0200
+
+    CHANGES: snmptrapd_sql: Avoid that a linker error is triggered on systems where my_progname is missing in libmysqlclient (e.g. Fedora 15 and 16).
+    
+    This is a backport of commit 9f653f7.
+
+commit 2cc9504b9bb8625b94be6cda7e60993d059cd928
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 09:01:23 2011 +0200
+
+    CHANGES: snmplib: BUG: 3428506: Fix netsnmp_gethostbyaddr()
+    
+    This patch should fix the regressions introduced by commit 85d96c4 (May 13, 2011).
+
+commit 9b427b353f1ceb8fe87e6fc8ed3b6cfab3ce7f20
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Oct 27 08:20:00 2011 +0200
+
+    MinGW: Avoid confusion between MinGW's kill.exe and the SysInternals pskill.exe
+
+commit 2c45f92cfcb5b05e049226a5a7883a0b106011ae
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 10:42:29 2011 +0200
+
+    Fix compiler warnings about passing a const pointer to a function accepting a non-const pointer.
+
+commit 275d23edfdebe0577b08421e4c6c936ae39b7fdc
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 09:33:09 2011 +0200
+
+    Fix compiler warnings about set-but-not-used variables
+
+commit 4495e17c078ac6997a9c7fa1a88db0644e919491
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 09:32:46 2011 +0200
+
+    Fix compiler warnings about casting away const
+
+commit 13952f6bee9f408867ab6d2fdfdde4f284074957
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Oct 26 14:05:16 2011 +0200
+
+    CHANGES: snmplib: from Siddhesh Poyarekar: properly clean up old requests in a subagent when we reconnect to master.
+    
+    An snmp subagent linked against net-snmp-libs may crash if it handles a
+    response which has magic referring to an older disconnected main session. This
+    may happen when the subagent
+    attempts to clean up old requests on reconnection of the disconnected master
+    session.
+
+commit ae052472b22720d08369e85127db214245df2e3f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Oct 25 16:15:17 2011 +0200
+
+    CHANGES: perl: fixed segmentation fault when handler registration fails.
+    
+    When netsnmp_register_handler fails, it frees its reginfo -> nsahr_DESTROY (and any other function) must not dereference it.
+
+commit c199bf91b6239f26b2aab34e8575e0f0df9cde9b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Oct 24 14:25:28 2011 +0200
+
+    CHANGES: snmpd: xfs, jfs and vxfs filesystems are now recognized in hrStorageTable
+
+commit 747fdc71e64d09e080928ebbb4d04cbde3906799
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Oct 5 15:57:59 2011 +0200
+
+    CHANGES: snmpd: Lowered severity of 'error finding row index in _ifXTable_container_row_restore' message.
+    
+    The message is shows up when snmpd is started and there is different set of network interfaces than it was when snmpd wast last stopped. This is common on ppp-servers or virtual hosts.
+
+commit 250f698e59eab9f1ffd332ff59fdb72ea0df06ff
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 23 08:51:23 2011 +0200
+
+    CHANGES: building: Make the transport configuration code work again
+    
+    Previously the transport inheritance processing code ran with
+    NETSNMP_FEATURE_CHECKING set. In this mode the file net-snmp/feature-details.h
+    is requiered. That file is created during the first make run, and that happens
+    after configure is run.
+    Change this to undefine NETSNMP_MINIMAL_CODE, effectively turning off feature
+    support during transport configuration in order to make it work at all.
+
+commit 6ef6907642247c663b9b8964b9fd44a211dbcaa7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Oct 20 20:30:54 2011 +0200
+
+    CHANGES: snmpd: BUG: 3408398: Fix a memory leak in agent/mibgroup/hardware/fsys.
+    
+    This memory leak was introduced via commit
+    9bf3d96d96a8ecd4a5fc35c326dc937467002b6c: Initial HAL
+    implementation of FileSystem information (March 7, 2008).
+
+commit cf82b894b2217c26edc6f1356351c932415604e2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Oct 15 14:45:08 2011 +0200
+
+    CHANGES: snmplib: BUG: 3423915: Change default number of retries back from 0 to 5
+    
+    This patch fixes a bug introduced via commit 6cac050 (May 5, 2011,
+    added support for specifying the default number of retries in
+    snmpd.conf).
+
+commit c11adaa12915abfee629bb6c026c21f2185b216e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 17 10:24:46 2011 +0200
+
+    CHANGES: Win32: Avoid that compiling the header file <net-snmp/net-snmp-config.h> with the MinGW gcc compiler triggers warnings about "pragma comment".
+
+commit b17a72a793483aee4a5bb2f2e2c7f4fd869817e6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 17 10:22:20 2011 +0200
+
+    CHANGES: Win32: Avoid that the PACKAGE_* macros defined in <net-snmp/net-snmp-config.h> cause trouble when including this header in a package that uses the GNU autotools.
+
+commit 664d3ae107d754051b8c42279d459aa57a1be1c3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 16:47:16 2011 +0200
+
+    MinGW, hw_fsys: Use proper format specifiers in a debug statement.
+    
+    This patch fixes an issue introduced in commit 76ff25d.
+
+commit 211dcb49306561e35ba3c213be7cfa257b40a8e5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 15:52:43 2011 +0200
+
+    Avoid that gcc 4.6 complains about set but not used variables
+
+commit 9f653f73e5aa70f0bef1174632e95594f87f669f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 13:02:25 2011 +0200
+
+    CHANGES: snmptrapd_sql: Avoid that a linker error is triggered on systems where my_progname is missing in libmysqlclient (e.g. Fedora 15 and 16).
+
+commit 4c83b9229a7454f34f6ff75f69e67e4030c419b5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 15:58:45 2011 +0200
+
+    CHANGES: snmplib: Set the rpath for libperl.so in libnetsnmpmibs.so such that the dynamic linker can find libperl.so without requiring the user to modify the dynamic linker settings.
+    
+    This change in agent/Makefile.in is necessary on the 5.5 branch and
+    later but not on the 5.4 branch. That is because the 5.4 branch uses
+    an older version of libtool that propagates the rpath of dependent
+    libraries. This is called inter-library dependency tracking in the
+    libtool manual. This functionality is present in libtool version 1
+    but not in libtool version 2. For more background information about
+    dynamic libraries and rpaths, see also the document with the title
+    "RpathIssue" on the Debian wiki (http://wiki.debian.org/RpathIssue).
+
+commit 8925c912d2639752a84bcffeef1b70a81026449b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 14:21:28 2011 +0200
+
+    CHANGES: agent: HOST-RESOURCES-MIB: Add missing brace in a debug statement
+
+commit 76ff25d9bf97579e7213102065fd5096f049a4c5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 14:13:18 2011 +0200
+
+    CHANGES: snmpd: HOST-RESOURCES-MIB::hrStorageTable: fix bug in handling large filesystems, where large means above 8 TB (= 2**31 * 4096 bytes).
+    
+    This patch fixes a bug introduced in commit
+    71d8293f387a6cd66bb0dbb13c0f50174d2e678b.
+    For the original bug report, see also
+    https://sourceforge.net/tracker/?func=detail&atid=112694&aid=3419825&group_id=12694.
+
+commit 866033db9904ffb1203f283f838092e4cf68de6b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Oct 6 07:33:27 2011 +0200
+
+    CHANGES: snmpd: Remove spurious #endif that seems to be the result of a mismerge.
+
+commit 20f4f3267ee20d55705b7a43789879c103f96620
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Oct 6 00:08:59 2011 +0200
+
+    CHANGES: building: Add missing end comments to feature ifndefs.
+
+commit e5de2cc57bf304f3320cad0034d2ea2d8aedc436
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 5 09:15:10 2011 +0200
+
+    CHANGES: agent: Log a more detailed error message if embedded perl initialization fails
+
+commit 5eef9990de28f63111e6c093be0f3c7ae2d513a1
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 5 08:45:49 2011 +0200
+
+    CHANGES: perl: Add agent::uptime()
+
+commit 6810ed42f9bc560750d6dbfb7e50b6e2ac11899c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 30 11:01:23 2011 +0200
+
+    CHANGES: Cywin: agent: Implement get_uptime() such that querying HOST-RESOURCES-MIB::hrSystemUptime returns a non-zero value.
+
+commit 97172b311d20f4441c7a7e90092b59c1e0da99f7
+Author: Thomas Jarosch <tjarosch@users.sourceforge.net>
+Date:   Wed Oct 5 08:46:39 2011 +0200
+
+    CHANGES: PATCH: 3418649: HOST-RESOURCES-MIB: Use pclose() instead of fclose() to close a pipe.
+
+commit 6591937adb85000c27069c4be84cf4688838ebcd
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 16:18:03 2011 +0200
+
+    CHANGES: building: Add dependencies on @FEATURETARGS@ to make the subtarget work as well.
+
+commit b9c8012ec035bc084f175876fecc375195f9be81
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 14:02:58 2011 +0200
+
+    CHANGES: building: Add target to build agentxtrap from the toplevel
+
+commit 995647c0cfe00412262cc5797bdfae9d00b70c76
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 15:44:36 2011 +0200
+
+    CHANGES: building: Remove the use of -L flags for internal libraries as it confuses libtool.
+
+commit 93dc1235a0db58ffd29617cff00dc11263780202
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 11:31:46 2011 +0200
+
+    CHANGES: building: Make make apps work again
+    
+    apps include snmptrapd and that require the agent libraries as well.
+
+commit ba41488ed44cd23c25963d4fc56c476853b2ab59
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 11:29:33 2011 +0200
+
+    CHANGES: building: When you say make libs you expect all the libs to be built.
+    
+    This is demonstrated by the snmptrapd target at the top level which obviously
+    expected both libs to be built and so failed to compile before this patch.
+
+commit 3057c73e093473be46254bcdfb4ca788e432d1b8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Sep 30 07:32:52 2008 +0000
+
+    NEWS: building: PATCH: 2091156: correctly declare dependencies in Makefile.
+    'make -j <N>' should work now.
+    
+    Backport this to V5-4 as it is needed for correct operation in the single
+    threaded case of make miblib as well.
+
+commit 6eae340fa2a64086592982cc52735bc01487d978
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Oct 1 19:33:50 2011 +0200
+
+    CHANGES: building: Silence libbsd 0.3.0 nagging
+    
+    If you have libbsd 0.3.0 installed then their version of nlist.h warns and
+    tries to make you include bsd/nlist.h instead. The problem is that we don't
+    need that compatibility library as we know how to do it ourself so it becomes
+    pure nagging. This patch adds a define that changes the warning into an
+    error and then figures out that there is no usable nlist.h and ignores it
+    for the future.
+
+commit ac38cb531bee50edc8d4c834f3005f5992c771d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 19:03:02 2011 +0200
+
+    CHANGES: perl: Enable sending SNMPv2 traps with an empty varbind list
+
+commit a75de2971527ac2d2e812024298602bb2412f337
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 30 10:41:44 2011 +0200
+
+    perl/SNMP/SNMP.xs: Update emacs modeline
+
+commit 848f6300efe38492fb454451a030f0b7e6ff8c9d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 30 10:41:44 2011 +0200
+
+    perl/SNMP/SNMP.xs: Update emacs modeline
+
+commit c1374473ecd8ec9e0310013861ee18c83e5d6c5b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Sep 30 03:29:36 2011 +0200
+
+    CHANGES: testing: Protect the use of $OSTYPE to ensure that 'test' get enough parameters.
+
+commit 7e97a20633a57eae39d015b23339463c32f5f848
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 10:22:08 2011 +0200
+
+    CHANGES: testing: Convert snmplib/test_binary_array.c into two unit tests
+
+commit 9c0dd98176457342fffaa5e74d802e3145ed70e7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 08:56:17 2011 +0200
+
+    CHANGES: testing: Add unit test for netsnmp_register_old_api()
+
+commit 5fd26e4fa3e000ea9c81c38ab975b7946efe2157
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 28 17:49:55 2011 +0200
+
+    CHANGES: agent: Avoid that netsnmp_register_old_api() failure triggers a double free.
+    
+    Fixes a regression introduced via commit
+    aa4d47c2609e52818c9cdf1a8e2205de9a335a0a (svn r19515).
+
+commit d2252d016693807326f72b66123649dea00af916
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 10:20:08 2011 +0200
+
+    CHANGES: testing: Require a semicolon after OK(), OKF() and PLAN()
+    
+    Also, let OKF() emit a single line of output such that all output it
+    produces is visible in the output of "make test".
+
+commit 1421924b4852142192c5bb9e93ddbfed69e908fa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 21 22:20:08 2011 +0200
+
+    CHANGES: snmplib: Avoid waiting indefinitely if a session has timeout zero
+
+commit 5f27f4f74ae2bd5baf503cf306b4f9a2841a57cf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:32:03 2011 +0200
+
+    CHANGES: MinGW: testing: Fix a race condition in the test runner
+
+commit 09703958cc5ea845929ae19ef9e0804aecaa512e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 27 12:42:41 2011 +0200
+
+    CHANGES: testing: Avoid false negative for T114agentxagentxtrap_simple caused by the test result being present in the hex dump ("mostly_harmless")
+
+commit 439300279f6f31438638d2f222c24c3c841fa6ab
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 27 11:16:32 2011 +0200
+
+    CHANGES: building: Micro-optimize agent module dependency analysis
+    
+    This makes the agent module dependency analysis carried out by the
+    configure script slightly faster, especially on those systems where
+    fork() is expensive (Cygwin).
+
+commit bbc680004a1376038dfdc4172dbe7b9e311fba68
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Sep 26 10:14:45 2011 +0200
+
+    CHANGES: MinGW: testing: Make test T130snmpv1vacmget_simple pass
+
+commit 70b06cf789208eaa890bfbcd638bdb775f817054
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 20 09:50:57 2011 +0000
+
+    CHANGES: Windows: testing: perl: Fix an incorrect message printed while running the Perl module regression tests
+
+commit 70bcc8de2d0fc92bbb8481823630fab9bc87af75
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 16 16:14:24 2011 +0200
+
+    CHANGES: MinGW: testing: Obtain the MSYS path from the environment
+
+commit 626275e2d1acafae7144a33ed301a40f596b37b0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 14 13:14:17 2011 +0200
+
+    CHANGES: Windows: Remove superfluous link libraries from project files (*.dsp)
+
+commit 38fc3caa9eeb3800254b4f6ad6f8f4764c0f83db
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 20 09:34:08 2011 +0200
+
+    CHANGES: snmplib: Make netsnmp_callback_accept() return -1 (failure) instead of 0 (STDIN_FILENO)
+
+commit 6c8c7e8aca8fc2eeb52010ae3e9fee6dd83ef780
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 13 09:58:26 2011 +0200
+
+    CHANGES: snmplib: Remove obsolete snmp_get_fd_for_session() declaration
+
+commit 0860d11fd8fc5dbdaaae2261fae2c07fb9c2c82d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 8 13:54:55 2011 +0200
+
+    CHANGES: Windows: MSVC: Avoid that the typedefs in <net-snmp/net-snmp-config.h> conflict with those in <stdint.h> from the msinttypes project
+
+commit f8a036f63ff68f083436120e0abd478b692a2f61
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 8 13:21:06 2011 +0200
+
+    CHANGES: Windows: MSVC: When linking with OpenSSL, link with user32.lib too
+
+commit 836a23e10ca810c3899902d32587616a9d1203df
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jul 14 18:38:13 2011 +0200
+
+    CHANGES: Windows: MSVC: Link with proper libeay32 library
+
+commit 7b07fd6cdef49ec7bb04b166e2a4fbb37b582840
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 11:10:38 2011 +0200
+
+    CHANGES: testing: Remove an incorrect comment from simple_eval_tools.sh
+
+commit 98f6d29d981ff8e607600c63dadb240535629807
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:49:03 2011 +0200
+
+    CHANGES: testing: Make ISDEFINED() check for an exact match instead of a prefix match
+
+commit 52cd0031a31f692f13263a94c335d06be1454803
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:59 2011 +0200
+
+    CHANGES: MinGW: testing: Make those regression tests pass for which SNMPCONFPATH and/or SNMP_PERSISTENT_DIR matter
+
+commit f5cd89bd3356dd74e1556c0b50966a643f192085
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:59 2011 +0200
+
+    CHANGES: MinGW: testing: Fix a race condition in the test framework
+
+commit deedd52c834a6448852a06785536e13865969694
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:58 2011 +0200
+
+    CHANGES: MinGW: Support the directory structure of recent Shining Light OpenSSL binary distributions
+
+commit d55bd4e0549f03b6fd32562c2aa7fe39272a9ef7
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Sep 28 06:55:19 2011 -0700
+
+    remove the v5.7 from the frozen list
+
+commit ac2aed3c94bb2ebb473af0a1e20f0561ad629956
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Sep 28 06:55:11 2011 -0700
+
+    remove the v5.7 from the frozen list
+
+commit 40079205967b8e5aeedb19fa3cb2e7b2f7988577
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Sep 27 21:53:47 2011 -0700
+
+    make depend
+
+commit cf14a228583aff3c5ab2f0d44c2f4c0fa5bd66af
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Sep 27 21:53:18 2011 -0700
+
+    version update for 5.7.1
+
+commit 1014dd8dfb48a5bd053f04541eb9728f0be07f47
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Sep 27 21:45:04 2011 -0700
+
+    version update for 5.7.1
+
+commit 18d116ba388c1dc949528884bb00698f1bacaa94
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Sep 27 21:11:52 2011 -0700
+
+    Version number update: 5.7.1
+
+commit 46eac02e9a27bf4f3068e795cab891f05a848870
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Sep 26 21:49:27 2011 +0200
+
+    CHANGES: snmpd: Avoid that snmpd crashes if started on a system with another OpenSSL library version than the one it has been built with.
+
+commit a5f064dd82996e2be3f1e9616703ad0395fb5aba
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Sep 22 07:33:01 2011 -0700
+
+    version update for 5.7.1.rc3
+
+commit 569794fceb99eed7be817c64f85cd945caf99592
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Sep 22 07:20:07 2011 -0700
+
+    Version number update: 5.7.1.rc3
+
+commit c55f608f16f160f5e79dc057f8878def462973e1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Sep 22 10:35:24 2011 +0100
+
+    Fix the code for populating the table_tdata cache,
+    and clarify areas needing MIB-specific additions.
+
+commit 13763cf2c71bf93fec096eee004857c15b2cffff
+Author: Steve Friedl <steve@unixwiz.net>
+Date:   Thu Sep 22 10:06:45 2011 +0100
+
+    CHANGES: snmpd: 3409692: Calculate disk percentage usage via floating-point arithmetic
+    to avoid integer arithmetic errors.
+    (Code based on patch, rather than applied verbatim)
+
+commit ee0d3adb078291b743c9ecb76d20b591b7b15972
+Author: Steve Friedl <steve@unixwiz.net>
+Date:   Thu Sep 22 09:58:39 2011 +0100
+
+    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 367da14fcdb146592de67c1d6997a09774259673
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 22 08:09:17 2011 +0200
+
+    The only change between V5.7.rc1 and V5.7.1.rc2 is the version number. Make this clear in the ChangeLog file.
+
+commit c276eeb8f0455a0870c4b478dde648e86529add3
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Sep 21 13:51:58 2011 -0700
+
+    changelog update
+
+commit 63050838666f645fc306dc2ee4f73f5efce63fed
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Sep 21 13:38:18 2011 -0700
+
+    Version number update: 5.7.1.rc2
+
+commit bbe2c19a01ecec024f741e2e54701ae6212f4c3e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Sep 4 14:44:38 2011 +0200
+
+    This should have gone only to master.
+    
+    Revert "CHANGES: building: Correct dependencies - since bf74fea69f24dc6e85f908f3f41d1426b2e09688 snmpconf is located in builddir, not srcdir"
+    
+    This reverts commit 9efa467a972bb6e1c7fbdaf2e27429d29f4ab89e.
+
+commit 9efa467a972bb6e1c7fbdaf2e27429d29f4ab89e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Sep 4 14:00:12 2011 +0200
+
+    CHANGES: building: Correct dependencies - since bf74fea69f24dc6e85f908f3f41d1426b2e09688 snmpconf is located in builddir, not srcdir
+
+commit 7835964d3593e5c6a1ae7de0b4114b7df1ae0fe1
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 30 19:21:51 2011 -0700
+
+    version update for 5.7.1.rc1
+
+commit cb6a0c0bd6f8c2c7cd5fd86080dc6324e7f73858
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 30 19:20:35 2011 -0700
+
+    make depend for 5.7.1.rc1
+
+commit e5ff2eb83bbbed92dac751c5a6643d78f837cf9c
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 30 19:19:46 2011 -0700
+
+    fix C++ comment
+
+commit cb1f5cffc6fb52c2a6c0f7b408afeb47fcfe55e4
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 30 19:09:56 2011 -0700
+
+    Version number update: 5.7.1.rc1
+
+commit 422b082a9593ca9c65aac449e6d128a9e97e94fb
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 30 19:06:56 2011 -0700
+
+    added 7 as a rc series branch
+
+commit 71c0d7650493710631fa08d5dc4dad501a9aa771
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 30 16:37:41 2011 -0700
+
+    deal properly with inverted error cases
+
+commit cf4cf7f32ad58f326ffed50494583231648d79d2
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 26 11:08:09 2011 -0700
+
+    added .ft and .ft.1 for feature files
+
+commit 41b2cde19d22209b483207614e027483c3706877
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 30 11:03:15 2011 -0700
+
+    auto-determine patch arguments if possible for nspatchtry
+
+commit 96bb589c2e5054890e98705ab5f4308ae6a130bb
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Tue Aug 30 10:13:06 2011 -0700
+
+    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
+
+    describe that nsrollup needs to be run now.
+
+commit 86efee23432ccb0d2e0c736d34dc1051130cdc0f
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Aug 30 10:52:30 2011 +0100
+
+    Apparently IRIX has a different API for statfs
+
+commit f7e21f2633390b7a27c50227bee6d8696ae3fbcf
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Aug 29 16:01:31 2011 -0700
+
+    don't provide a feature when your a child of another feature
+
+commit cac23c0b2574e7280bd128c6226875ad0f6b4bfc
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Aug 28 09:38:14 2011 +0200
+
+    Make sure that feature-details.h exists before trying to include it
+
+commit 781f4ce2acb371560797d8b29a89ed0674e935f8
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Aug 28 09:36:36 2011 +0200
+
+    Use the feature target instead of the target when building the feature set
+
+commit 11bff472ca7b1fcff0c16187a1b8a13093bc91c4
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Mon Aug 29 00:33:55 2011 +0200
+
+    the irix6 build only defines irix6, not irix
+
+commit 3c73a1407a081d42ebdd91dfbcb1e4f152b7df4a
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Mon Aug 29 00:05:13 2011 +0200
+
+    re-add sockaddr_un.sun_path configure check (lost in previous commit)
+
+commit 2e3f02e03aed125384ba4fe3d83494d43f3a29e9
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Sun Aug 28 23:53:30 2011 +0200
+
+    agent/mibgroup/hardware/fsys/fsys_mntent.c doesn't build on IRIX yet
+
+commit f95aa31377d572b049b0b316dbb163bf7aca93d5
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Sun Aug 28 23:25:40 2011 +0200
+
+    CHANGES: building: build fix for systems lacking fields msg_control/msg_flags in struct msghdr (backport)
+
+commit 7f47d93765aa35a58687eb9b4f9f700e4343e13c
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 26 11:11:35 2011 -0700
+
+    added required features for mfd handling
+
+commit 9b2e42a6e0550fb789c607c3520880d4dbc0cf24
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 26 11:08:09 2011 -0700
+
+    added .ft and .ft.1 for feature files
+
+commit 33dcbf56fc0626a3e4f1359095bd217d1a567794
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 26 11:07:58 2011 -0700
+
+    no_write_support supported
+
+commit 97d42efd76937ce7e4bc48a72ed5a110e423102d
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 26 10:08:51 2011 -0700
+
+    handle no-write-support with ifdefs
+
+commit ea8bed79e81c42e33cbf37ca6f3c03c549987b22
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 25 06:56:22 2011 -0700
+
+    import stderr
+
+commit fd6d804dc3e703c4059dbe775001a3be9b93309f
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 25 06:55:38 2011 -0700
+
+    use >> to print to stderr
+
+commit cee0359c6fae2b85d7b931859e517d89ce0722bb
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Tue Aug 23 23:43:19 2011 +0200
+
+    CHANGES: build: Do not generate an output file on failure
+    
+    make supposes that no output is generated if the command failed. Change
+    feature-remove to follow that presumption.
+
+commit fe39e7288ca930d2c9aaa8301cc9d95f0c38f36b
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Sun Aug 21 21:48:17 2011 +0200
+
+    Correct typo
+
+commit 1f082a31cd138f1f5e27be6d90a1d5790dc0ffe4
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Tue Aug 23 23:35:42 2011 +0200
+
+    make sure that _KERNEL is defined to 1 so that "#if _KERNEL" works on systems that need it (e.g. IRIX)
+
+commit 26bb2470c106f834442a2adbc7611bf16657fbdf
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Tue Aug 23 23:22:44 2011 +0200
+
+    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 1a2648eaf71cb018951596689c51588dca8063c5
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Sun Aug 21 01:48:57 2011 +0200
+
+    autoreconf
+
+commit 3f2f61b0e613d6105ecf2ceb395de0bde37f3ce3
+Author: Thomas Anders <tanders@users.sourceforge.net>
+Date:   Sun Aug 21 01:47:13 2011 +0200
+
+    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 5b5900a4f7dfee6e1ec869e32310b80ca6fb23fe
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 18 12:28:07 2011 -0700
+
+    version update for 5.7.1.pre2
+
+commit 3b7e2e39949f88d9c56ed5f994028b94816ab75c
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 18 12:23:28 2011 -0700
+
+    make depend for 5.7.1.pre2
+
+commit ece63bfe499c630bdaae6200648d29180ce3a179
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 18 12:03:17 2011 -0700
+
+    Version number update: 5.7.1.pre2
+
+commit 28b54070514753e8d8abb718b224d657ab7a8ab8
+Author: Garrett Cooper <yaberauneya@users.sourceforge.net>
+Date:   Thu Aug 18 11:49:56 2011 -0700
+
+    CHANGES: BSD: PATCH 3383965: from yaberauneya: Fix if-mib agent compile warnings on *BSD
+    
+    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
+
+    Patch from Claus Klein on -coders for fixing man page typos
+
+commit 6a841d56518a727196e66b59e7e5b3304f54b0a1
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Thu Aug 18 08:31:06 2011 -0700
+
+    changed clientaddr so it registers as pre-mib to be picked up before the transports get created
+
+commit c02131e5b35d296755baec99bd363205a86307dd
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Aug 17 09:34:00 2011 -0700
+
+    detect really old versions of Long.pm
+
+commit 500d6de06aa4ff330aee4d749a4cc377bec89e09
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 17 18:11:47 2011 +0200
+
+    Fix the log message that reports that gethostbyaddr() is missing
+
+commit 6580556cc7bd833af731b62ce1ed2017564fe7eb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 17 18:08:01 2011 +0200
+
+    CHANGES: Windows: snmptrapd: Make the IP address to hostname conversion work
+
+commit 3cb3f1ede388d84e392e1d815d5994a4bf0f10f9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Aug 14 07:59:25 2011 +0200
+
+    Windows, build.bat: Restore original build and install order. Apparently the correct netsnmp.dll is used during the Perl tests by setting PATH properly.
+    
+    This reverts commit c1b5a030d8f04876cd5b9af008c879cc468b212f.
+
+commit daff49d9b3369efcc87f05dc8591362e81a45fdf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 13 18:43:48 2011 +0200
+
+    Windows: Make the Perl agent module work again with the original SNMP_FREE() definition.
+
+commit 3c73b4838e605b150bc317313f14eb33444729f8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 13 17:38:27 2011 +0200
+
+    Revert the two most recent SNMP_FREE() changes (commits 47c8ef1b89c6ccb4247d9633477925908c68c1a5 and 7f42d0d93320484152271427cc9808cbda49bbd0).
+
+commit 3e50c3e00e9f321fb708bc579eb4dc1a0f1e7c4d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 13 11:31:40 2011 +0200
+
+    CHANGES: snmpd: pass_persist:  Fixes a race condition introduced in commit 31fa07cd9ffde46d41d2b5838c3fc4d01548bfb5.
+    
+    The following race condition could happen:
+    - A system call fails and errno is set accordingly by the C library.
+    - SIGCHLD handler invokes a system call that fails and hence overwrites errno.
+    - SIGCHLD handler leaves.
+    - original context checks errno and finds the value from the system call invoked
+      by the SIGCHLD handler instead of the system call that failed originally.
+    
+    Other fixes included in this patch:
+    - Renamed deinit_pass_persist() into shutdown_pass_persist() such that this
+      function gets called during agent shutdown.
+    - Made sure that shutdown_pass_persist() is called by the Windows snmpd.exe too.
+    - Windows: avoid calling CloseHandle(INVALID_HANDLE_VALUE).
+    - Windows: avoid that closing a pass_persist pipe triggers a crash.
+    - Windows: pass_persist: close handles of finished processes.
+    
+    Conflicts:
+    
+    	agent/mibgroup/ucd-snmp/pass_persist.c
+    	win32/mib_module_shutdown.h
+
+commit e147e4b96755207de1ce30990d67b4b7c76dd483
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 13 08:39:14 2011 +0200
+
+    Unbreak the Windows build. This is a follow-up for commit 1e1000a8815921b5ec2e7997b53592a544b3dfc2.
+
+commit c1b5a030d8f04876cd5b9af008c879cc468b212f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 13 08:10:33 2011 +0200
+
+    CHANGES: Windows: building (build.bat): Install netsnmp.dll before running the Perl regression tests such that the regression tests are run with the correct version of netsnmp.dll.
+
+commit 1e9d2003baed227f68b68528f1e97e6f5ea86c1a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 13 08:10:33 2011 +0200
+
+    CHANGES: Windows: perl (build.bat): When installing development files, install the PDB files too.
+
+commit a8d94007e32d03710692c8f1b417d5bdfe3650fa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 13 08:10:32 2011 +0200
+
+    CHANGES: testing: Fix Perl regression test failures
+    
+    All Perl regression tests pass now on Linux and on Windows (MSVC).
+
+commit b6d0b490181c6df8c11ecf155f1e6eaf11b1ec58
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 13 08:10:33 2011 +0200
+
+    CHANGES: testing: Perl regression tests: Don't fail skipped tests.
+
+commit ca3acf2b07039d96a117f090f7ec76b6e8b541e9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 13 08:10:32 2011 +0200
+
+    CHANGES: perl: Add SNMP::getenv() and SNMP::setenv().
+
+commit 56759e5ad537f01b4a51e7ff9994ec4b55c32135
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 13 08:14:46 2011 +0200
+
+    CHANGES: snmplib: Add netsnmp_setenv().
+
+commit 9843e5bcf472877e85b031b5e5dafaa9d5fc63c5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 13 08:10:32 2011 +0200
+
+    local/pass_persisttest: document how to use on Windows
+
+commit 6057866b73a022771e90e9967dd25bdc7192fbdc
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 13 08:10:32 2011 +0200
+
+    Set execute flag on local/pass_persisttest such that the instructions in that file work
+
+commit c2daf5940f21a13e8989dd055b17f3181112f856
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Aug 13 08:10:32 2011 +0200
+
+    .gitignore: Fix a suppression pattern
+
+commit 1f0a928a2913cfa7f5ceaaf4696c69fbdc687621
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Aug 12 09:09:11 2011 -0700
+
+    added the missing -e option to the createUser docs
+
+commit 1e1000a8815921b5ec2e7997b53592a544b3dfc2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Aug 11 15:46:32 2011 +0200
+
+    CHANGES: MinGW: Net-SNMP Perl modules build again.
+
+commit 97d6432f95e1cdcf6fd85e7ca1d0c5557eb6d919
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Aug 11 18:16:44 2011 +0200
+
+    CHANGES: Windows: perl: Make sure that the constant SNMP_DEFAULT_RETRIES is recognized.
+    
+    CHANGES: perl: SNMP module: Add constants NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE and NETSNMP_CALLBACK_OP_TIMED_OUT.
+    
+    When the Net-SNMP Perl modules are built on Windows with MSVC or MinGW it
+    is possible that each these are linked with another version of the MSVC
+    runtime library than the Perl interpreter itself. In that case the "errno"
+    variable used inside .xs source files is another variable than the $! variable
+    in .pm files. Or: assignments to "errno" in a .xs file do not modify the "$!"
+    Perl variable This patch avoids using "errno" by modifying the different
+    constant() functions such that these return a two-element array instead of
+    returning a scalar and setting errno.
+
+commit 7690894b7b8464f05c7c902bd7cf751cc269977a
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Aug 10 09:26:37 2011 -0700
+
+    don't assert on a double init; just don't do it twice
+
+commit 47c8ef1b89c6ccb4247d9633477925908c68c1a5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 10 16:44:36 2011 +0200
+
+    SNMP_FREE(): cast argument to (void *) before passing it to netsnmp_free()
+
+commit 0220392d899a9cab701f74af12030bb1d4cc5e2e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jul 1 13:02:15 2011 +0200
+
+    .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
+
+    fix C++ comments
+
+commit 69cb42a4ea0583ce6f5ff8f8383516d34bc4c344
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Aug 8 15:12:55 2011 -0700
+
+    fix C++ comments
+
+commit 447ddc66d90dd9e5c3105b268b6a63bfc580b924
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Aug 8 22:03:58 2011 +0100
+
+    Define _BIND_TO_CURRENT_VCLIBS_VERSION token
+    (as per Alex' build instructions)
+
+commit b0a62eb19763ab4f0b776430242a6117ccae5dd3
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Aug 8 21:59:17 2011 +0100
+
+    Define _BIND_TO_CURRENT_VCLIBS_VERSION token
+    (as per Alex' build instructions)
+
+----------------------------------------------------------------------
+
+Changes: V5.7.1 -> V5.7.2.pre1
+
+commit 810185ae0b0cd2ad4d424a1ba775ef5ceaf50f03
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 09:24:19 2012 -0700
+
+    make depend for 5.7.2.pre1
+
+commit 6271471e01282f3675724eaf1358ceb0e95ddd4e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 08:32:40 2012 -0700
+
+    Version number update: 5.7.2.pre1
+
+commit fcb782aa8893134c7414a926d9268594f725b915
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 08:32:18 2012 -0700
+
+    version update for 5.7.2.pre1
+
+commit e3bcd87c72fcea7706e868b5ace75296093f7497
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 14:09:42 2012 +0100
+
+    Fix dist/release format
+
+commit d813ce2eeefc68229cfcaf20603244cdd6d09d3c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 14:07:52 2012 +0100
+
+    Fix dist/release format
+
+commit fa7bd581e3783685db39c9b4eaf847be5ac86fd3
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:53:10 2012 +0100
+
+    version update for 5.6.2.rc2
+
+commit 0739e2382d31146aca3205244cf70788b40a428d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:51:45 2012 +0100
+
+    version update for 5.6.2.rc2
+
+commit d9a15445aa74f5316bfc711c1558467872c2958c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:50:12 2012 +0100
+
+    make depend for 5.6.2.rc2
+
+commit bcabd2c9542dbebd1d319b4494413bdcca06614e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:38 2012 +0100
+
+    Release Candidate for V5-6-patches
+
+commit b473898c0c5ac9eb47c7c05a3f745e4ff2a76aaa
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:28 2012 +0100
+
+    Version number update: 5.6.2.rc2
+
+commit 131429e7062fbaa65b82affed1fb92df2c0cc813
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:38 2012 +0100
+
+    Release Candidate for V5-6-patches
+
+commit 1c8110b33b8105ca6190945a35fe7ae903252d68
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:21:38 2012 +0100
+
+    Avoid perl versioning problems when setting up the build environment
+
+commit 508ece16e6f6f49562da204792ae0644269994d1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:20:58 2012 +0100
+
+    Fix handling of dist/release merge
+
+commit 5b8a8547b1a47d2f5b207f48f2496e4241d902c6
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 11:10:48 2012 +0100
+
+    version update for 5.5.2.rc2
+
+commit 6c32914bf28d695df349dca269e488b501700316
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 11:07:22 2012 +0100
+
+    version update for 5.5.2.rc2
+
+commit 9f5a82a5afdbb3daeb2fd437a309f0b8d357cf4b
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 11:05:39 2012 +0100
+
+    make depend for 5.5.2.rc2
+
+commit 39203f29477a3bedf012d41135d8abd6bcad08b1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:54:27 2012 +0100
+
+    documentation update for 5.5.2.rc2
+
+commit 17e79ef0fad79609c5ba2feb4e8b9eb5d7db6886
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:46:11 2012 +0100
+
+    Release Candidate for V5-5-patches
+
+commit 5821be5bbb4018ded282fbbbd4830cf2eeadd9e1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:45:59 2012 +0100
+
+    Version number update: 5.5.2.rc2
+
+commit 3f2111de6733a04e12d910d306a34d671e008762
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:46:11 2012 +0100
+
+    Release Candidate for V5-5-patches
+
+commit ccf8ff2c4db60122d41302e4aeb700e0b868105f
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 28 10:18:43 2012 +0100
+
+    CHANGES: snmplib: PATCHES: 3526599: Don't hang on retried failing SNMPv3 responses
+
+commit c81c8483990911f47435d3005255d91c37ab92b2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 27 14:09:26 2012 +0200
+
+    Fix BSD that downnot always like IP_SENDSRCADDR - so retry without
+
+commit ffce1f2dc2f8b31abd01f93b26da78f4726a1e64
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 27 14:03:58 2012 +0200
+
+    Fix OS missing MSG_DONTWAIT (AIX). Backport from 5.7
+
+commit c575216850185b56454dad0253e3164979e13513
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 27 13:56:01 2012 +0200
+
+    Fix missing include. Fixes SIGSEGV on FreeBSD9 x64
+
+commit 5805878749c08062debf0a9d798d08fb916caa2d
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun May 27 06:23:19 2012 +0200
+
+    CHANGES: snmpd: Add missing debug tag
+
+commit d1a42bbcc7b14730c9a6d99c4f047097843a549b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri May 25 09:02:27 2012 +0200
+
+    CHANGES: building: Run libtool --mode=finish on the right directory
+
+commit 1fbf33711a19eac9739ad23f6f6251eacc41f1c4
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue May 22 14:54:45 2012 +0100
+
+    CHANGES: Linux: PATCH: 3525998: Don't use an uninitialised value in error message
+
+commit 32c1686b67dc85c4a189576363065609dfed5e61
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue May 22 14:52:56 2012 +0100
+
+    Attempt to mark release-candidate branches as such.
+    Omit final-release-only steps when preparing preN/rcN releases
+    (Relies on a tweak to the Makerelease perl modules)
+
+commit 4c5633f1603e4bd03ed05c37d782ec8911759c47
+Author: Robert Story <rstory@freesnmp.com>
+Date:   Mon May 14 11:40:06 2012 -0400
+
+    NEWS: snmp: BUG: 3526549: CVE-2012-2141 Array index error leading to crash
+
+commit 65dd83c2255ee58edbf0e25863e55b58a4113679
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 20:30:42 2012 +0100
+
+    version update for 5.6.2.rc1
+
+commit ac4bc65e2909f3bd85f32f04b504fa65d2f64553
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 20:28:06 2012 +0100
+
+    make depend for 5.6.2.rc1
+
+commit b74994864195119edb6e19c85147fac00bcb93e3
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 20:13:46 2012 +0100
+
+    Version number update: 5.6.2.rc1
+
+commit 91350092c46e66d06d74143f4816473db4d25160
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 19:56:33 2012 +0100
+
+    Mark version-specific changes _before_ pushing to central repository
+
+commit 7241accd70b82d0fcd44d5a5238b2ee9445900db
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:53:17 2012 +0100
+
+    version update for 5.5.2.rc1
+
+commit 7c796a15a1d1bb85feea940bd4e3516877920919
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:50:49 2012 +0100
+
+    version update for 5.5.2.rc1
+
+commit 07e268bfb64b0ec645b3f7e87266984f9217cf12
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:44:37 2012 +0100
+
+    make depend for 5.5.2.rc1
+
+commit 16eaaf6c3ba14596ca9efaf4b114f1b709f42b68
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:29:03 2012 +0100
+
+    documentation update for 5.5.2.rc1
+
+commit c729469ef12154930cf9d15967e16186fb445f30
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:27:20 2012 +0100
+
+    Version number update: 5.5.2.rc1
+
+commit 142571d3cea08f0c072d24c1d39a43c7446f8ce7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:01:03 2012 +0100
+
+    When building a new release, the installed version of the perl
+    modules may well be different to the version being built.
+    That should not break the build.
+
+commit eba86b6f7aff261ee0e61334df70de7156e5c3cb
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:01:03 2012 +0100
+
+    When building a new release, the installed version of the perl
+    modules may well be different to the version being built.
+    That should not break the build.
+
+commit 5c0f64d6db2b593f7cc0ed2d4f55b7c592b774a8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:25:15 2012 +0200
+
+    Only output cpu warnings once.
+
+commit ee58e4827b9fa16e6635ca003e8a4f11dcb5fb7a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:17:42 2012 +0200
+
+    Fix speling in errormessage.
+
+commit 03f485df22f20e149cfae94c57cb82feecb5d74b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:12:11 2012 +0200
+
+    Not all Linuxes use rpm (debian/ubuntu comes to mind)
+
+commit 930838224f781696bd35225f22569347416f1b16
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:10:15 2012 +0200
+
+    Check need for -lm to use round/exp
+
+commit a0609cf1f3a6917d263725732248cd937a45ad94
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 08:40:44 2012 +0200
+
+    Remove limitation on configuration line length.
+
+commit 305973338a63ae54c5e02a8626fbe9a8064dcb7e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 00:32:19 2012 +0200
+
+    Reduce variable scopes.
+
+commit ccab4e9d3ed424c39d0dc27be63fa76c7461ea81
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 00:15:22 2012 +0200
+
+    Internalize the name and line number of the curret configuration file
+
+commit cf874ad7b9daf4fcc0d46cdd034474b478005341
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Apr 6 21:47:28 2012 +0200
+
+    Replace #if (A) B #else B #endif with B.
+
+commit ef9ea641bc290eec50685b60519b31bee8b14a69
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 21:04:06 2012 +0100
+
+    version update for 5.6.2.pre2
+
+commit 35aba1959de119f1fb89203c37109aa6f0e21c57
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 21:00:40 2012 +0100
+
+    version update for 5.6.2.pre2
+
+commit e41fbaff18ac9095cf4a739a06ec39a1a6ccfdc1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 20:35:35 2012 +0100
+
+    Version number update: 5.6.2.pre2
+
+commit 137fe582d6cc5611430dab46ef144efd84cfc803
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Apr 6 20:46:56 2012 +0100
+
+    Revert commit 1f4a829b18275e4956ca91e5ec370df015f06133
+    (snmp_store_needed() API is not available in 5.[45].x)
+
+commit 2b7e64288c01a8a062026c521ca31a5e885f30cc
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 16:12:12 2012 +0100
+
+    FreeBSD-9: Fix for 'const'ifyed nlist arguments
+    Backport of ed65eca6e7f9cfa7380a78d56c01ed314745b169 from V5-6-patches
+
+commit 7e95d80b698051259645c074a53ffd264a6fa916
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 16:06:56 2012 +0100
+
+    FreeBSD-9: Fix for 'const'ifyed nlist arguments
+    Backport of ed65eca6e7f9cfa7380a78d56c01ed314745b169 from V5-6-patches
+
+commit 1a9b7b7c02e2deefe994d595a7cc1dd2ffbeee1d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 15:51:20 2012 +0100
+
+    Fix compilation on FreeBSD 9.x with 'recent' header shuffling
+    Backport of c53d8c3525f590f2213d35b0da94123862f3e366 from V5-5-patches
+    (Patch #3363308 - omitting tweaks to configure)
+
+commit 3d9ddb41e263bc1a78f9f9440b8d4ad4f86c82e1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 10:36:18 2012 +0100
+
+    Fix typo
+    Backport of 5b702b024b60176d7f5699b92e55da50a8deae71 from V5-6-patches
+
+commit 0d35c609564b66a1ffe81556d37adf0503c389ce
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 10:15:08 2012 +0100
+
+    Provide missing definition of NETSNMP_PRIo
+    (used in agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c)
+
+commit a79141a419953d010a6989e8b88f4df127394d38
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 09:19:26 2012 +0100
+
+    Header fiddling for FreeBSD,OpenBSD,Dragonfly
+    Backport of f7b0de1518002c6e8f9b94ef3deb8882e1e9338e from V5-7-patches
+
+commit adf74bf753d3970357afd633803256241d9c7b87
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 08:20:46 2012 +0100
+
+    Fix IPv6 TCP & UDP tables, *BSD support (including OpenBSD)
+    Backport of commits 5cd1573625471c0583e9087aec6802b77157d5a2
+      and 50d73f0d56fe22c590530b3e305d41dcdac3ce00 from V5-6-patches
+
+commit d9555acb9f47c3aa8fde4bc20a44d7ca6181a8a9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Mar 25 18:48:12 2012 +0000
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid dangling pointers (based on patch 3503259)
+
+commit 82a8b47ee96e5d29a2b7ac3ca00722d737d5b479
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:31:56 2012 +0200
+
+    Running autoheader / autoconf
+
+commit 9ca8d939ab393306a1d0f146c9cb70ea0cb19d49
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:30:38 2012 +0200
+
+    Running autoheader / autoconf
+
+commit cecd4869deb68f3d4c71e768d5b40dd576446925
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:29:31 2012 +0200
+
+    Running autoheader / autoconf
+
+commit a1a4513bd3e4e614200f6db5a02f61d6c8eefb32
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 28 09:47:45 2012 +0100
+
+    Doxygen-style documentation fixes (backport of git commit c09903a42e9d97331fd9e48ee831a85afdf9c70a)
+
+commit 9bdbcca122c37da304fc6aa6939729475f90f5fd
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 28 09:30:49 2012 +0100
+
+    Doxygen-style documentation fixes (back-port of GIT commit c09903a42e9d97331fd9e48ee831a85afdf9c70a)
+
+commit 1f4a829b18275e4956ca91e5ec370df015f06133
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 27 21:41:24 2012 +0100
+
+    CHANGES: snmpd: PATCHES: 3495697: Store persistent snmpTarget table changes
+
+commit 1f75f377d0db01754c0c161dc44373081beef520
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 27 21:14:06 2012 +0100
+
+    CHANGES: FreeBSD: PATCHES: 3489387: Install FreeBSD 10 header file (plus other missing versions)
+
+commit 3d72c9e78f2ad817c9d1d82977327bbb20d63ab9
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 27 21:06:31 2012 +0100
+
+    CHANGES: snmpd: PATCH: 3487867: Don't skip missing ifXTable entries (ifConnectorPresent FALSE)
+
+commit 12906578ab30cf776d080c0ef3025b30334d7655
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 16:17:45 2012 +0200
+
+    DISMAN-PING-MIB: Fix even more memory leaks
+
+commit ccfd5ca6fe10313d6181d24bbb1797825a97da10
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 15:51:16 2012 +0200
+
+    DISMAN-PING-MIB: Eliminate duplicate code
+
+commit 9fda2668722f08ddbfdd67a2239d8b021db64a83
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 15:48:46 2012 +0200
+
+    DISMAN-PING-MIB: Write a loop as a loop
+
+commit cbc18eb763ba6df69ef70668a54d75bf35e79503
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 15:24:08 2012 +0200
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix more memory leaks
+
+commit c7725192478aec018fb4aefa60946e04a406c00c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 13:43:24 2012 +0200
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid reading freed memory when deleting a row from a table
+
+commit a6be739566f310d7441fd7f54989e39446f7a143
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 13:42:28 2012 +0200
+
+    Extend DISMAN-PING-MIB test
+
+commit 8a9b57291453cb8aec28e766c594701ed19c4fc6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 26 21:03:41 2012 +0200
+
+    Fix for DragonFly 3
+
+commit e5c9a32f79eac2e85527c9cf05087cdae9b35a6c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 26 20:59:53 2012 +0200
+
+    DragonFly needs _KERNEL_STRUCTURES to compile ipv6 code
+
+commit cd43bc09a39bd97ff5e719a2ce232ce424600a65
+Author: David Imhoff <dimhoff@users.sourceforge.net>
+Date:   Sat Mar 24 15:47:17 2012 +0100
+
+    CHANGES: snmplib: PATCH 3510454: Allow the use of 0.0.0.0/0 as alias for default
+
+commit e2fc15f9e5a6e3e36be5f489601cbf6bf731917f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 24 15:21:38 2012 +0100
+
+    Fix TCP state values for DragonFly
+
+commit 432fe3ddf54f2c98f936959469cb9b014d599f06
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 24 15:10:52 2012 +0100
+
+    Require perl to do pass_persist test
+
+commit 37d2770cf50c98023eeba90e25d372bff7316ada
+Author: Niels Baggesen <nba@user.sourceforge.net>
+Date:   Sat Mar 24 15:06:40 2012 +0100
+
+    Fix TCP state values for DragonFly
+
+commit 86a948d8691e881d55591dcabddc2739ce72b30e
+Author: Niels Baggesen <nba@nba-linux.sb.statsbiblioteket.dk>
+Date:   Sat Mar 24 15:01:37 2012 +0100
+
+    Properly find pass helpers for testing.
+
+commit fe26a3c4f29f046bf65ed52e9d94054b675fbc4b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 09:04:42 2012 +0100
+
+    DISMAN-PING-MIB: Limit source code lines to 80 columns
+
+commit 745bafcdcc9c8e84616d4e274db2a384bf234da2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 08:55:05 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Make ping implementation independent of ntpd clock jumps
+
+commit da6925e6763cadbe02f4a8bbfe68a362e535ad5e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 10:38:36 2012 +0100
+
+    CHANGES: testing: Add testing/fulltests/default/T154dismanpingmib_simple
+
+commit fa606dd7ca6aff9308d4e8b01bbcde148f441271
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:49:21 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Make pinging local interface addresses work
+
+commit 617a83ba799575c84c66f6b1c480ef633161a64c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:28:46 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix a socket leak triggered by pinging a remote host
+
+commit 625f55c272ec6281e38d8e30eb53fd51516b00ae
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 09:54:55 2012 +0100
+
+    DISMAN-PING-MIB: Convert a dynamically allocated variable into a stack variable
+
+commit b48f19ad4b4aa68c3e16e2a72df37b9c0cd36c4a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:24:07 2012 +0100
+
+    DISMAN-PING-MIB: Add more debugging statements
+
+commit d74cb3966175892562f5e3a9b1683acba2c22e07
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 11:45:18 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix several memory leaks
+
+commit 0b1a77674678cc9a15be3e7700d3cef650ed02c7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 12:00:30 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Do not send the contents of the stack over the network
+
+commit 139023cd3ab51631cc10e2866d71abcf99ae4c1b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:56:07 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Don't call exit() upon memory allocation failure
+
+commit 169b6aaa7b61827cc1ad0b3aeeae3a7229dd25d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:53:26 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix IPv6 socket leak in error paths
+
+commit a0be32ad053a71fa96134d55e542bb07d4f0297d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 11:43:46 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid that host name resolution failure causes a crash
+
+commit bf9bff64556787d766ee2ef2d578afb920719f3a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:51:55 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Convert printf() statements into snmp_log() and DEBUGMSG()-statements.
+
+commit 5d74c01245523a9d8db1eda27d1efae2ebc104fb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:40:02 2012 +0100
+
+    New MIB: VRRPV3-MIB
+
+commit 5b38f062b99b6ef36708e2c7de4965a3192612e9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:34:48 2012 +0100
+
+    For safety, sizeof the right variable in memcpy
+
+commit e5f82782da05efa7c0e6dc2bf5a41ee11868f469
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:33:21 2012 +0100
+
+    Fix for hrSWRun data for FreeBSD
+
+commit 8327565e823270d10a4504568edbe5b5ae323a55
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:31:54 2012 +0100
+
+    Clean up variables for OpenBSD/NetBSD
+
+commit 170f6f027bf4f9174b7073530da4d07f400bba58
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:28:58 2012 +0100
+
+    Move declarations in front of statements
+
+commit dbb4573b69fae85cdc931b2892b5ce4e5b16b321
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:23:36 2012 +0100
+
+    Require kernel_netbsd for NetBSD6
+
+commit f11681f15aad7d9a52fa29812ecbb507f1b7fe24
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 21 12:36:38 2012 +0000
+
+    Check for old tarballs (and unpacked distributions) before starting.
+    These can confuse steps such as "make dependcheck", that do a 'find'
+    on the current tree, and would descend into such unpacked source trees.
+
+commit 470dcd4b6c3ff11ff0a3532a7340a56cffd69098
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 21 12:32:13 2012 +0000
+
+    Don't run "make docs; make mancp" if there's no Makefile present
+
+commit c9ac420343e16df2b7065f5bf2790df44e247fba
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 20 10:26:10 2012 +0000
+
+    Allow distribution as part of normal Net-SNMP packages.
+
+commit 5999f60c57723f23f3c254af57fdb10af301a8eb
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Mar 18 19:03:08 2012 +0100
+
+    Regenerate
+
+commit 275d204036a607e3df50e8447d4bc755e9db02fd
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Aug 28 21:29:03 2011 +0200
+
+    CHANGES: building: Make it possible to use --disable-applications/--disable-agent together with --enable-minimalist
+
+commit bdccc875710295aacf50f71eb1c1d2ee97f336fe
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Mar 16 20:10:58 2012 +0100
+
+    Do not declare the local variables for opaque_special_types unless that option is set.
+
+commit b80a67da052adca1b5a644db83a782e15c2237c3
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Mar 16 19:50:03 2012 +0100
+
+    Check that the data exist before trying to read it
+
+commit efae86bba5962491d42b77b935191a3eb25dd939
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Mar 14 01:05:33 2012 +0100
+
+    Partially revert "Merge remote branch 'origin/V5-7-patches' into V5-7-patches"
+    
+    Commit d35a1860217e723e4f866dd98ef6621665934c4a accidentally reverted
+    
+    4a2e5bcd56cd2afb36eb15d754e2fee888dd50c0 (hrh_storage is a proper replacement for hr_storage)
+    0dd1e54557d1ba498b55d017b0a93e8ccf9bd522 (CHANGES: snmpd: UDP-MIB: Report the proper address in udpLocalAddress)
+    5116d48378ecf03e722f3010ad47bf22a3fbcb8c (Reduce scope of prefix_val such that the compiler doesn't warn about an unsed variable)
+    10f566f4d4cbb3e205023c23669289e4bfd089cb (perl/SNMP/SNMP.xs: Fix a compiler warning)
+    
+    and part of
+    
+    6e74d64f85a59d50e461db4c34ac76f9de468bfb (Avoid using grep options -q and -w because grep in Solaris)
+    
+    This reverts those reverts.
+
+commit aaedd59cc2da701527dc2d261d4e9f85f16e7504
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Mar 11 20:57:38 2012 +0100
+
+    Allow make test where the source path contains the string Net-SNMP to succeed.
+
+commit 4b94d796918a4eeae68ab21aa53d444a8b5c2921
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Mar 9 08:04:59 2012 +0100
+
+    Unbreak compilation on FreeBSD 4
+
+commit 10fe6b83324ad37d18b937cc8c6de94de534d035
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 8 13:04:07 2012 +0000
+
+    version update for 5.6.2.pre1
+
+commit e1122edc1a5fe7976b065044134d39e7db5985ea
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 8 12:43:19 2012 +0000
+
+    version update for 5.6.2.pre1
+
+commit a613d3a834912206d1ba5971e441a3ea6b36af23
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 8 12:33:03 2012 +0000
+
+    make depend for 5.6.2.pre1
+
+commit 0ef34e6519dfcb82c97df8427547c08dcf81e69a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Mar 8 10:11:30 2012 +0100
+
+    CHANGES: snmpd: Fixed snmpd '-d' option.
+    
+    Now it dumps packets again.
+
+commit 8e69742f143e4fc11196e5b2ed66c8f7f53fd02f
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 6 09:24:21 2012 +0000
+
+    Version number update: 5.6.2.pre1
+
+commit c4e00b8c3e1010cdcab5e6c02d60d75df9c6dcf2
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 6 09:24:05 2012 +0000
+
+    version update for 5.6.2.pre1
+
+commit 39490104a3ab58235aace2f9d871c266dc4485ee
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit 4a2e5bcd56cd2afb36eb15d754e2fee888dd50c0
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 5 20:59:38 2012 +0100
+
+    hrh_storage is a proper replacement for hr_storage
+
+commit ce85832932ccd916c42319114c40885a466a9d0e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 5 20:56:40 2012 +0100
+
+    More fixes for Solaris sh
+
+commit 0dd1e54557d1ba498b55d017b0a93e8ccf9bd522
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 15:08:26 2012 +0100
+
+    CHANGES: snmpd: UDP-MIB: Report the proper address in udpLocalAddress instead of 0.0.0.0. Makes test T160snmpnetstat pass again. Fixes a bug introduced in commit c76fb96f65e33ba2fd212a921e8c386155ee5c7a.
+
+commit 518917e9f39f7a9d3c3bf3a865e8ac0e3026d600
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 14:04:54 2012 +0100
+
+    snmplib/snmpUDPDomain.c: Fix source code indentation
+
+commit 2651909ccceabfcfadaf942c02450e28fe837dc9
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Tue Nov 9 12:04:04 2010 +0000
+
+    Passes now on MinGW too.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19653 06827809-a52a-0410-b366-d66718629ded
+
+commit e41f115e40304c941ba17d67e24710722d90741b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 13:39:17 2012 +0100
+
+    testing/fulltests/support/simple_eval_tools.sh: Avoid using grep options -w and -q because grep in Solaris' default path doesn't understand these.
+
+commit 5116d48378ecf03e722f3010ad47bf22a3fbcb8c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 10:47:20 2012 +0100
+
+    agent/mibgroup/ip-mib/data_access/ipaddress_linux.c: Reduce scope of prefix_val such that the compiler doesn't warn about an unsed variable if it isn't needed.
+
+commit 6e74d64f85a59d50e461db4c34ac76f9de468bfb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 09:22:31 2012 +0100
+
+    testing/eval_tools.sh: Avoid using grep options -q and -w because grep in Solaris' default path doesn't understand these options.
+
+commit 10f566f4d4cbb3e205023c23669289e4bfd089cb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 10:47:39 2012 +0100
+
+    perl/SNMP/SNMP.xs: Fix a compiler warning
+
+commit 44aa265891cd563f7f4114ef25dcf7aaf3b14e9a
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit dae4e16be86117861f63d1a2f981ad361418f5c6
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit 28f6226f2e228b8ca248489735f86502b2cce0a1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit 40022a697958259ccfbb3fed44eb3c472f5e837e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Mar 4 10:37:41 2012 +0100
+
+    Solaris sh does not understand "test -e"
+
+commit 773af0c42e077bebdaecf1c0caf393285a7688f1
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 3 17:19:30 2012 +0100
+
+    Clean up nsrollup complications
+
+commit ee71049c3e21c1d0e3424297136652bbe0e39d85
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 3 16:49:41 2012 +0100
+
+    mibgroup/icmp.c: adjust ifdefs to make it compile on BSD's
+
+commit ce9600361e665dde17af9d8ab16d7ce85dc05643
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:39:55 2012 +0100
+
+    dot3StatsTable has bugs :-(
+
+commit dffacf6fa0755e1700cbac25b844185abd807a0a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:38:10 2012 +0100
+
+    passpersist test needs /usr/bin/perl
+
+commit 8726995c7a8aef674c4f164b1871c37bbdcdad50
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:36:58 2012 +0100
+
+    grep -w fails with OpenBSD and Solaris 10-64
+
+commit 1eb4745b23cc3a839864e7f6ea28355b0566eb67
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:35:49 2012 +0100
+
+    Solaris needs /usr/xpg4/bin/grep to understand -q
+
+commit 9954b4b741fd8c63d6128bd0527298c8e4e989fc
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:34:45 2012 +0100
+
+    Make sure we have the proper srcdir for out-of-source builds
+
+commit 78369002be2711f0aa876b64a4e10b090cc241cd
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:33:31 2012 +0100
+
+    Not all make versions define $(RM)
+
+commit 94245b29a3cda89475c6eab5d9493c6657ff38e3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:24:24 2012 +0100
+
+    Make autoconf 2.68 happy
+
+commit 44acd6c285fb5614b4c9611b1abdeca9dd28e4bb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:12:47 2012 +0100
+
+    Fix spelling of mib module fsys_getfsstats
+
+commit 1fa1fee3693f67b820223806b3d73afd4c50ec18
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Mar 2 01:37:20 2012 +0100
+
+    Silence a clang warning.
+
+commit 93263b98a5db344cf2c4d489c43971e7b29cdb03
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 13:37:20 2012 +0000
+
+    version update for 5.5.2.pre1
+
+commit 5a175428b973d2ea8553e29fecf94cf1566aa858
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 11:48:18 2012 +0000
+
+    version update for 5.5.2.pre1
+
+commit 364276a1c5aa66caa23eb5b7f111fdeb5af71fa7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 11:45:10 2012 +0000
+
+    make depend for 5.5.2.pre1
+
+commit 73598340172eff75729a6d57192b8171d5bbf00e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 10:42:56 2012 +0000
+
+    Version number update: 5.5.2.pre1
+
+commit f3214402672ca199fd531e66122bf96c4d9a4eb7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 10:42:39 2012 +0000
+
+    version update for 5.5.2.pre1
+
+commit 2e74acb6f19e4729cede0ab43e931961cb23aaea
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Mar 1 09:18:39 2012 +0100
+
+    CHANGES: Bug 3152841: Do not install the util_funcs subheaders that were removed in 5.7
+
+commit b7109646b95a70713d1ad991d41bccd57c0bb3eb
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Mar 1 08:48:48 2012 +0100
+
+    CHANGES: Bug 3152841: Install util_funcs subheaders introduced in 5.6
+
+commit 432cbb7a5501ab90d66d0a83e731e7343bc04b37
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Feb 25 10:13:15 2012 +0100
+
+    Correct typos
+
+commit 6a6c9bbc7584f196a1185cc1935204f1206811ed
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Feb 29 08:55:35 2012 +0100
+
+    CHANGES: Bug 3152841: Install util_funcs subheaders
+
+commit d515e2a6e4c2a1c4d84734cc7b2d0b2fc5a894ad
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 15:56:21 2012 +0000
+
+    CHANGES: snmpd: PATCHES: 3487919: Fix compilation when caching is disabled
+
+commit af8368ed8898a78d0868b47af46bc9db07d1c764
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 15:50:56 2012 +0000
+
+    CHANGES: snmplib: PATCHES: 3414773: Encode integer value using ASN_INTEGER
+
+commit 19e2715807fe06fd0baedf88165011aee933e755
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 14:05:34 2012 +0000
+
+    CHANGES: man: BUGS: 3490708: Clarify use of common command-line options
+
+commit 65f7962f932c9b75c5bbbb047d1e26ae60978e53
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 12:23:34 2012 +0000
+
+    CHANGES: snmpd: BUGS: 3489631: Fix incorrect handling of UCD monitoring flag
+
+commit ac166051b6a092dd4a594326ec85e2f699b62547
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 11:57:41 2012 +0000
+
+    CHANGES: testing: BUGS: 3474590: Don't match underscores within the source root filename
+
+commit 879bf7079d34fa46f6fcf54a01c8500beaece59a
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:44:41 2012 +0000
+
+    CHANGES: snmpd: BUGS: 3460364: Fix use of block factor when detecting error conditions
+
+commit 034f1c572f683ea428583074471e5d5d13b51837
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:22:20 2012 +0000
+
+    Skip SET-based tests when configured using --enable-read-only
+
+commit 36423e210bfb65ef121c6a66aec438c7c237d3df
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:03:25 2012 +0000
+
+    CHANGES: BUG: 3454168: configure: Fix building with --enable-read-only
+
+commit eed0bcbc43fea18259f0f63b2081b6d10535a052
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 09:27:11 2012 +0000
+
+    Skip SET-based baby-steps when compiled with --disable-set-support.
+    Inspired by bug #3454168
+
+commit ec6a23030e5a2072c19c18c1d9c124387da56b7b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 27 18:42:58 2012 +0000
+
+    Add -lrt to NETSNMPLIBS such that clock_gettime() can be found
+
+commit f13320500294bb240f63c6dd7d2e9a2208eb740d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Feb 27 16:52:51 2012 +0000
+
+    Skip SET-based tests when compiled using --disable-set-support
+
+commit c4276b6232c29145c039884e6b5a6b6da4b93837
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Feb 27 15:54:45 2012 +0000
+
+    Omit SET-related code when compiling with --disable-set-support (inspired by patch #3424930)
+
+commit 01c930edcc25700d6b5fb0376f55a26425e13fb0
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Feb 27 15:17:22 2012 +0000
+
+    Omit SET-related code when compiling with --disable-set-support
+    (inspired by patch #3424930)
+
+commit 9484d83203c4e2d820416be665fa833aa70444d2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 24 14:00:32 2012 +0100
+
+    Rework commit b4a19505a05816e94e01de97bf99ac37fcdc6d23.
+
+commit 2b7f13495228635d816e58b2174dc124dd0cf39f
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Feb 24 07:43:22 2012 -0800
+
+    set MERGE_AUTOEDIT before merging to avoid the future git 1.7.10 forced msg
+
+commit e1b910b0be9343586ae9edba6f46040af315fcdd
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 10:27:54 2012 +0100
+
+    CHANGES: snmpd: init_agent() + init_kmem(): Return an error value instead of invoking exit() if access to kernel virtual memory is denied
+
+commit 463eed2120f9d191bc22673496a49e8174664e4b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 10:03:31 2012 +0100
+
+    Remove obsolete symbol NETSNMP_EXIT_ON_BAD_KLREAD
+
+commit c36ab71a4e096f16cc5a55533f080c9a94009914
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 08:53:56 2012 +0100
+
+    CHANGES: FreeBSD: snmpd + apps: Sending UDP packets works again for non-root users
+
+commit edebddba930f8b1472fa0bd20fc413ef8cf464a2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Feb 21 11:31:46 2012 +0100
+
+    testing/RUNTESTS: Fix a bashism
+
+commit b4a19505a05816e94e01de97bf99ac37fcdc6d23
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 20 16:58:47 2012 +0100
+
+    Fix compiler warnings about %ld versus time_t on systems where time_t is a synonym for long long instead of long.
+
+commit d8978ecc8211be7c1e7905f1e215bb06ded266b6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Feb 21 12:32:25 2012 +0100
+
+    Fix snmplib/transports/snmpSocketBaseDomain.c file header
+
+commit aa766d196e5287f6ca79b58a345b024260aba354
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 20 17:07:13 2012 +0100
+
+    IF-MIB: do not trigger undefined behavior (>> 32 of a 32-bit variable) when updating a counter and ifi_ipackets is a 32-bit variable
+
+commit c3fb6dd9e6b99e9542493188987871fc5017cb3c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 09:45:45 2012 +0100
+
+    Fix a compiler warning on systems where mode_t is unsigned
+
+commit f8a3ef0d3d4e530279900101049b8de98a44a6fb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:48:52 2012 +0100
+
+    CHANGES: snmplib + snmpd + snmpwalk: Avoid that system clock changes (e.g. by ntpd) affect code that needs relative time
+    CHANGES: snmpd: Make sure that the range of the SNMPv3 variable snmpEngineTime is 0..2147483647 on all supported systems instead of 0..42949672 on some systems (i.e. wraparound after 497 days)
+    CHANGES: snmplib: Add netsnmp_get_monotonic_clock(), netsnmp_set_monotonic_marker(), netsnmp_ready_monotonic(), netsnmp_get_agent_runtime()
+    CHANGES: snmplib: Deprecate atime_diff(), atime_newMarker(), atime_ready(), atime_setMarker(), marker_tticks(), netsnmp_marker_uptime(), netsnmp_timeval_uptime(), timeval_tticks(), uatime_diff(), uatime_hdiff() and uatime_ready().
+    CHANGES: snmplib: Change the names of the struct timeval members of data structures that were used to store a wall clock time but that do now contain a monotonic clock value
+
+commit c19760f3333c92fac5d50e9768cdf939218bc487
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Feb 15 09:45:03 2012 +0100
+
+    snmplib/snmpv3.c: Fix source code indentation
+
+commit a6db239945e195de5a90fa183700b27a6ecb28d3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 7 00:11:14 2012 +0100
+
+    Fix possible memory leak from recent declarations patch
+
+commit 0fbbb9a9e2906a7af956957061d485874462aea9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 6 20:43:04 2012 +0100
+
+    Do not mix declarations and statements
+
+commit f308d5bafb05d78ed4030c4ecff324b6cbda680f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 15:25:30 2012 +0100
+
+    Fix two compiler warnings in agent/mibgroup/disman/ping/pingCtlTable.c
+
+commit 46f0fc1b7fc26a225763bc65cca520a1c59f0251
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 6 20:54:32 2012 +0100
+
+    sendmsg does not like IP_SENDSRCADDR if addr is INADDR_ANY
+
+commit debac498fe8410110107a2fe64f8afb748edaa07
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Feb 6 16:48:09 2012 +0100
+
+    CHANGES: added OCFS2 (Oracle Cluster FS) to hrStorageTable and hrFSTable
+
+commit fafc99cd89e73ec7e00bf7360d0b4fa61944a4f4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 11:18:34 2012 +0100
+
+    Simplify calculate_time_diff() and calculate_sectime_diff()
+
+commit 7af2013de8bf1b379c076db4e104508e17874d3e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:55:58 2012 +0100
+
+    Fix order of feature #ifndef and Doxygen comment block
+
+commit bbd67f63530f5ef0bfc948fc58dfe6a93f8f8679
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 15:25:30 2012 +0100
+
+    Fix two compiler warnings in agent/mibgroup/disman/ping/pingCtlTable.c
+
+commit 42a66aeff25b9e9ef635a404ad2f5212f9e8cf0d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:47:54 2012 +0100
+
+    Rename two function arguments
+
+commit 3fe72b3b99b7e4b2b982363dfc4f2d8d13f40592
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 13:49:22 2012 +0100
+
+    Convert snmp_select_info() documentation to Doxygen format
+
+commit e9db266ae48d05a7a6cb5d71b4bdea7ad808ef5e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 11:17:57 2012 +0100
+
+    CHANGES: snmpd: Add netsnmp_get_next_alarm_time()
+
+commit d08044cb9e5702fbf549e14425f42794259d8a21
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 09:38:07 2012 +0100
+
+    CHANGES: snmpd: Add netsnmp_get_agent_runtime()
+
+commit a05c27c2711cb41582a3b4c31e38b0e93530b62d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:51:33 2012 +0100
+
+    Fix spelling in a source code comment
+
+commit 910d7b0d99183609b9529b04c3f29330eb661021
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:38:12 2012 +0100
+
+    Replace netsnmp_timeval_uptime() by netsnmp_get_agent_uptime()
+
+commit 43a83f6c6a96cc2316b70eecacf127eb6913c7a7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 11:19:15 2012 +0100
+
+    Use the assignment operator instead of memcpy() for copying struct timeval
+
+commit 2fe579efb1cb3a74f82803ca323928f6b8e4b5c0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 3 14:04:02 2012 +0100
+
+    Make agent/mibgroup/mibII/icmp.c build again on non-Linux systems.
+    
+    See also commit 345a1e4254812cb9edc1d274491b76681a9dba1e.
+
+commit 881de6ab7355277a5c116a008fbe513293b05039
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 3 10:08:21 2012 +0100
+
+    Fix compiler warnings triggered by the Rmon MIB implementation
+
+commit 4629933c0d3b3f9f4ba583534f79a37fb9633817
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 20:05:31 2012 +0000
+
+    More compiler warning fixes
+
+commit e9b5a3dee6f9afab8b90a29392040632b075ad7a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 16:56:55 2012 +0100
+
+    Use SNMP_MIN() instead of min()
+
+commit ae452c77b411139d6b5800ffcf88d48e9b4792a8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 15:23:38 2012 +0100
+
+    Restore commit dbb8795a7df595f0603f2ec61704799f4c482667.
+
+commit c7d11fa00f9995ddb9fe3d4994a3e9790da2e189
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 15:18:40 2012 +0100
+
+    Restore commit dbb8795a7df595f0603f2ec61704799f4c482667 partially.
+
+commit 00fd62720ec454f5a690de4feba08223cfb2c3f8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 14:48:44 2012 +0100
+
+    CHANGES: snmptrapd: Avoid crash during shutdown due to invoking perl_destruct(NULL)
+
+commit d9e229d81abeaf191ef2ccb077842885c230d622
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 14:47:41 2012 +0100
+
+    Remove a superfluous declaration
+
+commit 1e2e2af6cae830f381e87a244d029eb86bf3fcce
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 13:20:37 2012 +0100
+
+    perl/SNMP/examples/pingmib.pl: Add error checking
+
+commit 241a141e31f1684fc6cf70cc4a00cce636fd3526
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 11:28:37 2012 +0100
+
+    Make configure-time EVP_MD_CTX_create() detection work on the 5.4 branch.
+    
+    See also commit 46eac02e9a27bf4f3068e795cab891f05a848870.
+
+commit 6d9d14feaaa2d0fec68b4d158944d32cb04ff1bc
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 11:12:00 2012 +0100
+
+    Revert the changes that break the build on the 5.4 branch from commit dbb8795a7df595f0603f2ec61704799f4c482667.
+
+commit 8abe49e30c97c8983e83b45a35c716fe91f66bea
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Feb 1 11:56:58 2012 +0100
+
+    Fix several compiler warnings in the DISMAN MIB implementations.
+
+commit f9fb0a533375e14dc370025a0b2fbc761bf27be6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 09:56:02 2012 +0100
+
+    Revert "HOST-RESOURCES_MIB: fix a compiler warning" because it's wrong.
+    
+    This reverts commit aa6b79bc124a7b7a885d7e5035ab06aa3ecef613.
+
+commit ca4a4fe25efd2714f8f1961b97856616563f42c9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 10:21:49 2012 +0100
+
+    .gitignore: Add python/build
+
+commit 13ada56558b44e28d1355c0dce1d921f3746d548
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:53:49 2012 +0100
+
+    Revert "Revert "Fix format specifiers to avoid warnings"" - there *is* NETSNMP_PRIo in V5-6+ branches
+    
+    This reverts commit aa528bd22c7493ca8d67e678fbf615ca0f63ea6d.
+
+commit aa528bd22c7493ca8d67e678fbf615ca0f63ea6d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:13:18 2012 +0100
+
+    Revert "Fix format specifiers to avoid warnings" - there is no NETSNMP_PRIo in V5-4 or V5-5 branches
+    
+    This reverts commit 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b.
+
+commit 2fb99be9aa86a6ca349b86d4ef8bc726ed9f2a82
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:58:35 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit e5c35589e0bf416bfd036bd468f42aaeab25e788
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:55:56 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 345a1e4254812cb9edc1d274491b76681a9dba1e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:51:26 2012 +0100
+
+    Fixed error handling in init_icmp().
+
+commit c303549a59fa8c2f20a9d8bf1e985fbc8abde6a8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:46:29 2012 +0100
+
+    Reworked _register_extend() error handling.
+
+commit 9c20e27a7026fc030da3b328b9a2e1b4f36670cd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:21:28 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 22fd0bfc2df0e1f6020dc3c50a753ddf28a4599c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:20:22 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 5d61e57baf580c78252c0abb0098c07bb05af17c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:17:05 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 3c3eeae80d796f27597c901e7ff2046c769ef4b8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:08:09 2012 +0100
+
+    Mark rowreq_ctx as freed so next iteration allocates new one instead of reusing the freed one.
+
+commit af9abd53c2337c90a691a7b044ff3f97c1003161
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:05:10 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit cf9465f54181e62e21a9b10219131107a3d2ebf6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:04:06 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 7871f2b09b8b52f34a9e57784266459053165bcb
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:02:50 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 7a37f33d310c9598607bc323d9bdbf91aaf72c95
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:00:51 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 3e45f7026249e45350edaac85337423aa0e95d8b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:13:18 2012 +0100
+
+    Revert "Fix format specifiers to avoid warnings" - there is no NETSNMP_PRIo in V5-4 or V5-5 branches
+    
+    This reverts commit 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b.
+
+commit 61936762e641c18db75aa5125a33e776c677adc5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 11:13:39 2012 +0100
+
+    Fixed freeing reginfo twice on error in a template and all its instances.
+
+commit 496437430415fbafeb1ccd4774f1ca00d627ea1f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 11:04:13 2012 +0100
+
+    python/netsnmp/client_intf.c: Fix compiler warnings introduced on V5.6 branch
+
+commit 5b4a24cdcee1bc3d82633ccafeb96fce95349c59
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 09:22:27 2012 +0100
+
+    unit tests: fix a 64-bit compiler warning
+
+commit cbf1c91baf7191be5fa27d81bcf8714331a2c12f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 09:20:42 2012 +0100
+
+    Use snmpTargetParamTable_dispose() to free a struct targetParamTable_struct.
+    
+    Fixes a bug introduced in commit dbf26a05a04ef24c47346e5adda48e338498e71f.
+
+commit aa6b79bc124a7b7a885d7e5035ab06aa3ecef613
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 09:20:31 2012 +0100
+
+    HOST-RESOURCES_MIB: fix a compiler warning
+
+commit 3a76b43e11fffada632fccb848ab500e876ad48b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 18 16:21:05 2012 +0100
+
+    CHANGES: python: Avoid that an SNMP set with UseEnums enabled causes a segmentation fault
+
+commit 84dec9fa92b0aa2d58eb7020330f4f98e5154321
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 18 14:38:21 2012 +0100
+
+    python/netsnmp/client_intf.c: Fix most compiler warnings
+
+commit 38cf218c3f1a727786e227a5d3fb186fd0f1a15f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:50:13 2012 +0100
+
+    Fix a typo
+
+commit 454122244122bfdb6f67cab31256d7b46372e9e1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:30:18 2012 +0100
+
+    Free tmStateRef on errors.
+
+commit 0119022daa59c73bfec0da2386d0628f14e6dab7
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:09:12 2012 +0100
+
+    Free fingerprint when it's not needed.
+
+commit 0e84cd303a08267dec78f6d81c9bb07e3d83a11f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:48:26 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 63dc846a7949ce697b3e28c543dc1105e63a2250
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:08:28 2012 +0100
+
+    Free certificate fingerprint.
+
+commit ce1f284a63eb81644b3e32606cbe39b67e1dff2a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:37:09 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 7e21413ca6f2efd7a3afb62c62b644881b8bd1e7
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:46:30 2012 +0100
+
+    Properly allocate and free engineID.
+
+commit 34c962882607c3638a2fa25a2ac531492d71c787
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:37:25 2012 +0100
+
+    Free locally allocated tmStateRef.
+
+commit f57ae531dc5658abcd65b1627615525238d16d2d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:20:24 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 536bc57556c3141561ea4a194810b16290a691ee
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:15:47 2012 +0100
+
+    Added check if the function actually does something.
+
+commit a0777d307dbcaf219ee0184a0fbab9d4e5d6aa0b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:01:45 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 8b97a71c8e7959428eb4d4e8d90e9096d43ff09f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 12:57:26 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 2c1507c22030549ae660c0e211fbdc5c75ec5c57
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 12:53:47 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 65f2b7bcd4fe03906aa1a115ab60a89b8ae933d5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 12:51:36 2012 +0100
+
+    Close open files on error.
+
+commit 0e52e4f66d44766bea37473556c78e5219b95461
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:45:33 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit dbf26a05a04ef24c47346e5adda48e338498e71f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:42:17 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 748da84b1fd654e338bc701e8f9e5da229187f1c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:32:04 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit eb217146fd54036ea4202bfef78bbf774d7e382d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:23:10 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 9ba38eec66138ec1f613ea8d04e158130c7121bc
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:18:55 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit d9d938d3018c27f53277bc5e59578500490c1d09
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:16:38 2012 +0100
+
+    Close open file on error.
+
+commit d5e817d5bd518d9ac6a0d60e0e141dd64f27ad19
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:14:12 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 2ae68f059df9d74b074d12f59c1847466ed576cd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:03:17 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit a00f3d461121b545aed72ac12b2438791dcfc4ba
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 14:58:39 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 59884bb4d35ad13747ffa6723436dca587a9ab77
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 17:09:12 2012 +0100
+
+    In above code, olength is checked, so let's check it also here.
+
+commit ba5d5292b04393b0c7d7d7ed961241929418c6e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 17:05:14 2012 +0100
+
+    Fixed dereferencing NULL.
+
+commit da2d6a7028a13b9edf3a5c84314d0f1feef76714
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:44:56 2012 +0100
+
+    Prevent dereferencing NULL.
+
+commit f88054a9b69b6de274f7a14a59b47323e5e4e4c6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:37:35 2012 +0100
+
+    Don't dereference context if it's NULL.
+
+commit 7c4d459e8f1f652cc2098c3d4c81de90a84ed710
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:30:09 2012 +0100
+
+    Don't deference NULL.
+
+commit fc19b7f33b587927d2a01e72d23d21b9b1696ab3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:25:26 2012 +0100
+
+    Don't close NULL file.
+
+commit 5e95ca6790076b788072a801ee7c82969d995bcb
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:17:09 2012 +0100
+
+    Prevent dereferencing NULL when a transport does not have f_fmtaddr.
+
+commit eed6f5f9b9ae54d2ceab67ad85adde1f6a8a21d5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:13:13 2012 +0100
+
+    Prevent dereferencing NULL.
+
+commit 41cde68b5fa4b38d81450cf91e082cdfa825e7cf
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:10:10 2012 +0100
+
+    Check if a registration was really found.
+
+commit 5b72a40853876a186efcc0090a4e32c235b9c05f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:03:58 2012 +0100
+
+    Don't dereference NULL when difflen is SMUX_MAX_PRIORITY (which is highly unlikely, but...)
+
+commit fa6a912e41c5d0fd2a636894e86b6426c07375ab
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 15:37:44 2012 +0100
+
+    Check for missing value in setEvent.
+
+commit 410b71da425389fecc25d14f49f23753581576ad
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 15:28:41 2012 +0100
+
+    Dereference ereg only if it is not NULL.
+
+commit 185272d1a0b913774186f1b9135aeaf637ebed52
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 15:17:21 2012 +0100
+
+    As per above code, template_v2pdu can be NULL, so check it before dereferencing.
+
+commit 48e5ead3fd2c2b385df6972c67526ff6bdc30768
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 14:42:22 2012 +0100
+
+    Updated last fix to new error reporting style.
+
+commit f33d33615d6d85d0073726473c4146cbcdf11ced
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 14:30:07 2012 +0100
+
+    Fixed sigsegv when empty config line is parsed.
+
+commit b5df1eeb47ed3559b6f4d9ecccdb242126e6c992
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 14:11:58 2012 +0100
+
+    Fixed (highly theoretical) sigsegv when sp->securityEngineID is NULL.
+
+commit 6feed629a71899c113096959d8549dc1201e8f9a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 13:43:37 2012 +0100
+
+    Added NULL and len check just in case someone provides value = NULL and nozero len (-> NULL is then dereferenced).
+
+commit 355c5ab264af2a6020a1d8a923f80f11b942295e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 13:36:41 2012 +0100
+
+    Extend the NULL check, i.e. return if there is nothing to remove.
+
+commit ddd7948acad938cd42974505ddca4f0372116709
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 11:11:29 2012 -0800
+
+    update sparta's copyright
+
+commit 41256086a7a5041453419cfd6e562c7b55c56b0a
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 10:32:04 2012 -0800
+
+    pulled full copy of extractnews from master
+
+commit 625a70dbdfd9902da79efa293fe6d2ac8ccf2b2e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 10:24:19 2012 -0800
+
+    update to change to the newer log generating/parsing
+
+commit 62e32b13089b29edcf276f615da67e4508fe7bb5
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 09:29:42 2012 -0800
+
+    conflicting merge from master for extractnews
+
+commit 70084da61d2bcbd2cf1ed81bdc3bf6794c2affb6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 13 11:49:16 2012 +0100
+
+    CHANGES: snmpd: DISMAN-SCHEDULER-MIB: Handle 32-character schedContextName values correctly.
+    
+    See also commit b3c4982542e0ab151fb3884754cdfbcb472da52d.
+
+commit 04bf3e288158ee880edf237e4007fee37d2044dd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:39:37 2012 +0100
+
+    Fixed endless loop when SSL_read returns error.
+
+commit c1526fccc0474c1db18caa9dbb833853cddde3cc
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:13:21 2012 +0100
+
+    Fixed a typo.
+
+commit a27aa19df283156c032c81eaee5e115859d38c17
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:11:32 2012 +0100
+
+    Don't replace 'rc' variable, it's value is needed outside the loop.
+
+commit 985dff2b0876d9483c414fccea3ef6bc63e14561
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:01:32 2012 +0100
+
+    Removed duplicate code.
+
+commit 2fd7818318e7a5dfe98f52ccf750c2a63e825ded
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:00:22 2012 +0100
+
+    Removed duplicate code.
+
+commit 15f21130ba33dc9afd164e52dfd74c9cec0e9232
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:58:14 2012 +0100
+
+    Removed duplicate code.
+
+commit 2a8a8f2ab7cd75826c5d41ec3cfd5ce3e9634cf3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:39:28 2012 +0100
+
+    remove dead code, 'cp' is always != NULL here.
+
+commit 38fd6378cc3275180f63b8d9b9a4072b3dabf8e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:25:06 2012 +0100
+
+    Fixed a typo.
+
+commit ebd92e19b10c0a38e17cde407864b45c26e17327
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:07:43 2012 +0100
+
+    Removed unnecessary if (value) check - value is checked few lines before.
+
+commit c5cacf5caf979d018ea6cae1c03b8fdf0b118dfd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 13:44:43 2012 +0100
+
+    Prevent double free(), 'dirname' is already freed inside se_add_pair_to_list() if it fails.
+
+commit acdceb50ea66d6b323c74ee021fb77e810e4e7af
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 13:43:19 2012 +0100
+
+    Prevent memory leak when malloc fails.
+
+commit 17053e34cfe9a8ab395fb50f5c3f1dafc7247aeb
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 13:32:57 2012 +0100
+
+    Fixed double fclose().
+    Linux man page for fclose(3) says: In either case any further access (including another call to fclose()) to the stream results in undefined behavior.
+
+commit a6641edb9cb74fc2236b42ce5554fc3329956552
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 15:22:34 2012 +0100
+
+    MinGW: Skip test T065 if not started from inside an MSYS shell
+
+commit a883ef1982f301b1485d227301674927330f5b67
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 11 15:14:53 2012 +0100
+
+    Moved debug oputput before return.
+
+commit 45751967287d97640efdcdf8e77e8d490939d8eb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 14:17:18 2012 +0100
+
+    Convert strtoull() unit test into a Net-SNMP unit test
+
+commit 2c2fa48336a4f1f177c2991d6515d29f39533c44
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 13:50:44 2012 +0100
+
+    Convert read_config_read_octet_string_const() unit test into a Net-SNMP unit test
+
+commit 07c666f6cea27f2b2ab9bc08aed0cb6133fe3758
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 11 13:17:45 2012 +0100
+
+    Fixed commit 73a523e468277f6df2e984891313b8be8bce1921:
+    Fidex dereferencing key->info when key is known to be NULL.
+
+commit 3b686566296dd87bc42b7f1169daacdb3c45cc58
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Mon Oct 18 06:25:56 2010 +0000
+
+    Win32: builds again without warnings with MSVC 6.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19489 06827809-a52a-0410-b366-d66718629ded
+
+commit f3a7d1b09609dad649f58bbdb5b7e10d39b398c1
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sun Oct 17 11:04:06 2010 +0000
+
+    Follow-up for r19476: fixed a typo.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19478 06827809-a52a-0410-b366-d66718629ded
+
+commit 2de73bd365a381b9c353ca5230769eefb1ac71ed
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 11:42:42 2012 +0100
+
+    local/passtest: Remove an incorrect PATH= statement
+
+commit 699513f1238e0adce1f1cec98e0d147293fc5047
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sun Oct 17 09:25:51 2010 +0000
+
+    NETSNMP_REMOVE_CONST()-related cleanup.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19476 06827809-a52a-0410-b366-d66718629ded
+
+commit 6358dee72fb347e2600a0a7bd21f23270d3a00f6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 10:58:15 2012 +0100
+
+    agent/mibgroup/ucd-snmp/versioninfo.c: Add a comment
+
+commit 5396bfe032c8cbc73c8ff5d4b085ebada9f59846
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 10:30:16 2012 +0100
+
+    Replace strncpy()/strncat() by strlcpy()/strlcat()
+
+commit feb3af28dcae22015ae865a2e5dd8c416e9991d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 10:02:08 2012 +0100
+
+    Replace strncpy()/strncat() by strlcpy()/strlcat()
+
+commit b7e1aa255bae4a3453f9eca644a876634351f11d
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sat Mar 20 19:36:28 2010 +0000
+
+    CHANGES: libsnmp: changed the type of the fourth argument of netsnmp_set_row_column() from const char* to const void* such that no cast is necessary when passing another datatype then char* or const char*.
+    CHANGES: Win32: changed in_addr_t from u_int to u_long such that it matches the datatype of sockaddr_in::sin_addr.
+    Also, fixed several compiler warnings (mostly char * <> u_char * mismatches) and removed some casts.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@18345 06827809-a52a-0410-b366-d66718629ded
+    
+    Conflicts:
+    	agent/agent_registry.c
+    	agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
+    	agent/mibgroup/mibII/interfaces.c
+    	agent/mibgroup/ucd-snmp/disk.c
+    	apps/snmptrapd.c
+    	snmplib/snmpIPv6BaseDomain.c
+    	snmplib/snmpUDPIPv6Domain.c
+    	snmplib/system.c
+
+commit f47a3752849db075e6f2053b8595b7b792fb6462
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Fri Oct 15 10:56:09 2010 +0000
+
+    CHANGES: Win32: building: Builds now correctly with a 64-bit compiler.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19458 06827809-a52a-0410-b366-d66718629ded
+
+commit 02b6056df95da8b673034e39c2c7c386ed0f369c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 11:44:53 2012 +0100
+
+    Fix a compiler warning about casting away const
+
+commit a19865832fc77f4c048144d91a431b1e94d329f2
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Wed Oct 14 23:12:05 2009 +0000
+
+    CHANGES: apps, snmplib: PATCH: 2835577: identified by "Bart Van Assche": Replace SNMP_ZERO of arrays with a memset.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@17797 06827809-a52a-0410-b366-d66718629ded
+
+commit 67a3e2eccb95f9c9d0809efcbddcd866ee3062d5
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed Jan 6 14:27:15 2010 +0000
+
+    Fixed a compiler warning about discarding the const qualifier.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@17970 06827809-a52a-0410-b366-d66718629ded
+
+commit 3dcde2e8a595a527f06142c3b852de8433a1cf28
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Sun Jan 24 14:27:55 2010 +0000
+
+    CHANGES: snmplib: Prevent gcc ped-warning for NETSNMP_REMOVE_CONST
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@18052 06827809-a52a-0410-b366-d66718629ded
+
+commit c2e1525a85bda5299a3b9f241614f7e6509aeeba
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed Jan 6 13:35:11 2010 +0000
+
+    Backport commit 295f473c83546221b2a71d815c61e33a67f98ae3: refine NETSNMP_REMOVE_CONST() implementation.
+
+commit cb423b0ae9ed0059aa100dc4e2fd93ad1b97faf8
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed Jan 6 11:57:51 2010 +0000
+
+    Backport commit e2fb09e0093e2f648fe2638da2f3af18fdb32bf0 - introduce NETSNMP_REMOVE_CONST().
+    
+    Conflicts:
+    	agent/snmp_perl.c
+    	snmplib/snmp_service.c
+
+commit afc396ab1618a8595a2519fbc25f7a498e174411
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 08:49:34 2012 +0100
+
+    Unbreak netsnmp_mktemp() and make_temp().
+    
+    These were broken by commit bb8fcbb874998000f945f058d1aa6fe14e925899.
+    Also replace a strncpy() call by a call to strlcpy() and replace the
+    make_tempfile() implementation by a call to netsnmp_mktemp().
+
+commit 210185c15d0d65f0ea98b5e3c2e0776f6222d170
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 08:27:43 2012 +0100
+
+    Fix a crash during startup of snmpd introduced by commit 885061687d9caa38470979667d7d8ad6563cedad.
+    
+    Also, make sure there is only a single copy of the cleanup code in function
+    mkdirhier().
+
+commit 8bb4e86abcf98ff28748af0af89c98e64d5cd961
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Jan 11 07:47:12 2012 +0100
+
+    Reduce the scope of the oldmask variable.
+
+commit 6680147b138ec114f81c5d128ac9350c8450d081
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 18:44:31 2012 +0000
+
+    Make test T015int64_clib pass on 64-bit systems
+
+commit 3aad15ae560ac857e73c90764e903e7ca02b3295
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:40:59 2012 +0100
+
+    Fixed buffer overflow for large OID names
+
+commit fba188ee82010b2f2d8ca2e426ba654499ab3d0a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:31:33 2012 +0100
+
+    fixed buffer overflow in __concat_oid_str
+
+commit 21d25d86b8e4904d798dc8c96dade9e5048457a8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:26:07 2012 +0100
+
+    Fixed buffer overflow when parsing port numbers.
+
+commit d36931841b2fc2cebc6364b2949129a0ad42ad1d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:05:51 2012 +0100
+
+    Fixed a buffer overflow when large SumFile is used.
+
+commit 0efdd022da09af1b5e16171fa7a2b523c5d6ec59
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:01:53 2012 +0100
+
+    Fixed buffer overflow when too big temp file pattern is used.
+
+commit 560bc6c09b751556efd6b4c4495751b109a93f92
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:59:24 2012 +0100
+
+    Fixed buffer overflow, just to be sure.
+
+commit 8291d7c5b92a31dd4f582b497d4b2a0853367a56
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:55:16 2012 +0100
+
+    Fixed buffer overflow.
+
+commit 88e1f34de7300575fa6dab857ecddb242a87de80
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:48:55 2012 +0100
+
+    Fixed buffer overflow when too long interface names are used.
+
+commit be1375a9926ebe0cd5b78a4045c3bd11c83664b1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:46:49 2012 +0100
+
+    Fixed buffer overflow when a sensor name is too long.
+
+commit 1cb24625372062b14c71d7dd51e20fef773e2743
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:41:00 2012 +0100
+
+    Fixed buffer overflow when a CPU has too long name.
+
+commit 84c807ee03251e54856e83d62d06ea08b8df527a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:36:50 2012 +0100
+
+    Fixed buffer overflow when too long interface names are used.
+
+commit c310e390b5dd05f24be7eb1904c74e41259c93db
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:24:54 2012 +0100
+
+    Fixed buffer overflow when too big temp file pattern is used.
+
+commit 4600d11434e83b8653cf9f813a3d8b630455b42d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:17:08 2012 +0100
+
+    Fixed plausible string overflow before parsing command line options.
+
+commit 885061687d9caa38470979667d7d8ad6563cedad
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:11:02 2012 +0100
+
+    Get rid of (insecure) SNMP_MAXPATH in mkdirhier()
+
+commit 8016890a445f6a7e2a873a04873d4e27b6ee64e3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:48:34 2012 +0100
+
+    Fixed wrong integer size on 64 bit platform.
+
+commit bb8fcbb874998000f945f058d1aa6fe14e925899
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:31:36 2012 +0100
+
+    Secure mkstemp() with umask() - on some implementations it does not set 0600 permissions automatically.
+
+commit 202523ca704bd722dc1ac0e1e6b0e4b4e5424495
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:11:57 2012 +0100
+
+    Fixed dereferencing 'c' before NULL check.
+
+commit 73a523e468277f6df2e984891313b8be8bce1921
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:08:24 2012 +0100
+
+    Fixed dereferencing key->info when key is known to be NULL.
+
+commit 2f4e6acd714183f015b763657f8f084593357e26
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 10:38:16 2012 +0100
+
+    .gitignore: Ignore perl/*.yml files
+
+commit c365d80c16c2d17b160011e8c1f9cb958954e9db
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 08:34:16 2012 +0100
+
+    CHANGES: snmptrapd: Do not invoke shutdown_perl() from inside the SIGTERM handler since that fails if SIGTERM is received while a Perl handler is active. Based on a patch posted by Joel Avni <javni@arubanetworks.com>
+
+commit d059fb878b1436599953cea5a077499ddcdcbcb5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 17:03:55 2012 +0000
+
+    CHANGES: BUG: 3440752: IF-MIB: Report interface speed correctly for Ethernet interfaces if other than 10 Mbps, 100 Mbps, 1 Gbps, 2.5 Gbps or 10 Gbps. Add support for NICs faster than 65 Gbps.
+
+commit c09903a42e9d97331fd9e48ee831a85afdf9c70a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Jan 9 13:26:17 2012 +0100
+
+    Doxygen-style documentation fixes
+
+commit e325ecbfce77f00ac5cf6fbd957f95495f61c59b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Jan 9 13:25:10 2012 +0100
+
+    Suppress uninteresting Doxygen warnings
+
+commit be9161d3a5898e863767f926613486126c2cbf67
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 12:35:39 2012 +0100
+
+    CHANGES: snmplib: Simplify implementation of functions manipulating 64-bit numbers.
+
+commit 86e4c2be0852a0a13b0603075720b3264ec70dde
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 12:29:11 2012 +0100
+
+    CHANGES: snmplib: Make it explicit that MAX_SUBID is an unsigned constant
+
+commit 37e272d8f7b7180ba140fa386a5ff058968a08a2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 18:21:48 2012 +0000
+
+    CHANGES: snmpd: IF-MIB::ifType: Report type "infiniband (199)" for InfiniBand interfaces instead of type "other (1)".
+
+commit 269932fa32c7cd47957489698e09bee31f63b7af
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 14:34:42 2012 +0100
+
+    Fix an MSVC compiler warning
+
+commit 0d1c21f9991d1309d057e3e4056d547df7d40ecf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 16:06:31 2012 +0100
+
+    Make declaration and definition of strlcat() consistent.
+
+commit 0c3d4dbb0a9cf5b359f70b2f19915495554f840f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 15:23:16 2012 +0100
+
+    CHANGES: Win32: snmpd: Remove dlmod
+
+commit 893ecc97b587661045becbe09a320c1bcbc71c7c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 14:36:59 2012 +0100
+
+    Add strlcat() to the MSVC build infrastructure.
+
+commit 3d126422e625702b9d3fa0676a97ec5cb20d9d10
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 15:01:06 2012 +0100
+
+    Make win32/net-snmp/net-snmp-config.h consistent with its .in file
+
+commit af53b76c2ffa751e3958d0fc5d8279f78c2c1c26
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 14:43:55 2012 +0100
+
+    Skip T066pass_simple and T067passpersist_simple on MinGW
+
+commit 35a92e693d133a5b11e9e9b599dbf47edef4933b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 08:16:36 2012 +0100
+
+    Remove snmplib/snmpDTLSUDPDomain.c again, which was added accidentally while resolving merge conflicts (commit 1d78f7d5b58aed2b52c4d386a7ba80a44711baca)
+
+commit a9b073ea3b6cedf713e305e7b15f28ae57bfdf1b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 17:47:11 2012 +0000
+
+    Fix 64-bit compiler warnings
+
+commit 7e890dad95f566069ee280215a4fea3f0e2e3980
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 16:38:50 2012 +0100
+
+    Avoid a SIGSEGV if cp == NULL. This is a follow-up for commit 089bcb360aa26790ad2a8ceddf583b7ba5ddfd48.
+
+commit 1f6200cfe1b0b27ebb093a1606b592f9e9684be8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 15:53:34 2012 +0100
+
+    Convert strncpy() calls introduced in v5.6
+
+commit c3126b143921fabeac442166eca5b5b742fd42c0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 15:02:39 2012 +0100
+
+    Replace most strncpy() calls introduced in v5.5
+
+commit b24ee7c909657db43bd8c5d8c01055ca0883c9cf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 08:40:39 2012 +0100
+
+    Eliminate most strncpy() and strncat() calls
+    
+    Using strncpy() and strncat() is error prone -- see also
+    http://www.gratisoft.us/todd/papers/strlcpy.html. Hence replace
+    all invocations of strncpy() and strncat(). Replace
+    strncpy(dst, src, n) calls by:
+    * strlcpy(dst, src, n) if the goal was to avoid output buffer overflow.
+    * sprintf(dst, "%.*s", n, src) to copy a prefix of src to dst or if src is
+        not '\0'-terminated.
+    * memcpy(dst, src, n) if strlen(src) >= n and n < size of dst.
+    * strcpy(dst, src) if n > strlen(src) and n < size of dst.
+
+commit 6d95bc4149472931005475c30a541fed5534da39
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 11:19:16 2012 +0100
+
+    Fix warnings triggered during compilation of the Perl xs source files
+
+commit bad0600f6ec944ef8455e327ce784b9b07d247c9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 10:00:13 2012 +0100
+
+    Add configure test for sockaddr_un.sun_path such that the com2sec test is run
+
+commit 92a32ac4866a5edc7f347d37942bf028de02762f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 10:00:29 2012 +0100
+
+    Get rid of a compiler warning
+
+commit 83e4c0e304f617ccac6610edd74d1706797bbf52
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 09:15:37 2012 +0100
+
+    CHANGES: testing: Add a test for se_store_list()
+
+commit 4fae5852103ec3893ad488bc0d905ca6914595ef
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 09:17:15 2012 +0100
+
+    CHANGES: snmplib: Simplify the se_store_enum_list() implementation
+
+commit b3222bb275f2f2346e0fd0478afa2efb600773e5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 09:16:45 2012 +0100
+
+    CHANGES: snmplib: Declare "type" argument of se_store_list() / se_store_slist() / se_store_enum_list() const
+
+commit 022f840fbfcb0e26b08f0e55728231f611495803
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 19:55:56 2012 +0000
+
+    Avoid that Valgrind complains about sending UDP data
+
+commit 672a809c228e9550b99b8910be75d0b161985402
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 17:33:09 2012 +0000
+
+    Fix a 64-bit compiler warning
+
+commit 24ff260ad89ce2aa361a55c7c72e916031defe35
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 17:11:24 2012 +0100
+
+    Change the type of the second argument of snmp_set_var_value() and snmp_set_var_typed_value() from u_char* to void*, like on more recent branches
+
+commit c6ca737fb46f90a4bda5d43734aac34e837a05f4
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sat Mar 13 19:07:37 2010 +0000
+
+    Backport commit f504ce2d74a4bc88f68cc9515fa7053373cb15b5.
+    (Fixed most compiler warnings triggered by the source code in the perl subdirectory. Note: these changes may contain some real bug fixes.)
+    
+    Conflicts:
+    
+    	perl/ASN/ASN.xs
+    	perl/OID/OID.xs
+    	perl/SNMP/SNMP.xs
+    	perl/agent/agent.xs
+
+commit d212dc984ec34e4d230625e46e58b0c628a50df5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 16:46:49 2012 +0100
+
+    SNMP.xs compiler warning fixes
+
+commit baceebb10d8caf5db63cc36935fed65ee931029d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 16:22:44 2012 +0100
+
+    Add declaration for shutdown_snmpNotifyTable()
+
+commit f7f966abd6d2849b1331252afe5c473e5c40b32d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 14:24:33 2012 +0100
+
+    Fix format specification mismatches.
+
+commit 303c015bcfe9af0b154e9881c7b4f449e08f30bb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed May 6 22:06:23 2009 +0000
+
+    Backport commit d3eb2b5ced22a8480053ce43acf9739729055404
+    (Sprinkle some const-ness where relevant / fix format string mismatches,
+    Niels Baggesen, May 2009)
+    
+    Conflicts:
+    
+    	agent/agent_sysORTable.c
+    	agent/helpers/instance.c
+    	agent/mibgroup/disman/event/mteTriggerConf.c
+    	include/net-snmp/agent/instance.h
+    	include/net-snmp/agent/sysORTable.h
+
+commit d95b40406916bda5b48b5a6131bec27b866b0a79
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed May 6 21:59:20 2009 +0000
+
+    Backport a2a7316c310f0fcc3728673fa047051c23b71960
+    (Trivial warning fixes, Niels Baggesen, May 2009).
+    
+    Conflicts:
+    
+    	agent/mibgroup/hardware/cpu/cpu_linux.c
+    	agent/mibgroup/host/hr_swrun.c
+    	agent/mibgroup/if-mib/data_access/interface_linux.c
+    	agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
+    	agent/mibgroup/ip-mib/data_access/systemstats_linux.c
+    	agent/mibgroup/mibII/sysORTable.c
+    	agent/mibgroup/mibII/system_mib.c
+    	agent/mibgroup/ucd-snmp/logmatch.c
+    	agent/mibgroup/util_funcs/get_pid_from_inode.c
+    	agent/snmpd.c
+    	snmplib/container_list_ssll.c
+
+commit d86c47f003fdc192bce7b46ac4f06b09e387c12b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 13:29:08 2012 +0100
+
+    Fixed a typo
+
+commit bee4d79cf4eb7e0a45397f59b5298da633a8e1ba
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 13:14:57 2012 +0100
+
+    Fixed reading past end of buffer.
+
+commit 3dc0e00a2fd8e34fe1ae33ecabf36e146460a31f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 12:40:07 2012 +0100
+
+    Fixed buffer overflow when large 'token' is used.
+
+commit b3c4982542e0ab151fb3884754cdfbcb472da52d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 12:28:52 2012 +0100
+
+    Fixed off-by-one memset.
+
+commit 0f53695044dd3f0c3507753e3f8c29d97e96872d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 3 21:38:26 2011 +0200
+
+    CHANGES: snmplib, snmpd, perl: Eliminate dead variables
+    
+    Conflicts:
+    
+    	agent/mibgroup/agentx/master_admin.c
+    	agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c
+    	agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c
+    	agent/mibgroup/host/data_access/swinst_pkginfo.c
+    	agent/mibgroup/host/data_access/swrun_procfs_status.c
+    	agent/mibgroup/ip-mib/data_access/systemstats_linux.c
+    	agent/mibgroup/mibII/kernel_linux.c
+    	agent/mibgroup/rmon-mib/data_access/etherstats_linux.c
+    	agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c
+    	apps/snmptls.c
+    	apps/snmptrapd_log.c
+    	snmplib/dir_utils.c
+    	snmplib/snmp_client.c
+    	snmplib/snmp_openssl.c
+    	snmplib/transports/snmpTLSTCPDomain.c
+
+commit 0153805c99b9197365935c5d11ae9c3d4bfaa0f3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 09:48:41 2012 +0100
+
+    Fix a set-but-not-used warning
+
+commit 3f8885fbee9407748fc2f0573728a11ba2bc023a
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Tue Apr 28 05:51:13 2009 +0000
+
+    Return a value from sprint_realloc_value even if no subtree is located.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@17578 06827809-a52a-0410-b366-d66718629ded
+
+commit b1eaaf302369fd4552e8fee7b6a805091ec0a9b4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 11:38:51 2012 +0100
+
+    Added check of find_sec_mod() return value.
+
+commit aee4e895fe3bd5f4a61e34275bfca0368b560555
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 11:31:22 2012 +0100
+
+    Added check of snmp_sess_transport() return value.
+
+commit 5d1d0a744ab30c8e645c3b8506cbbd2cceb3d275
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 11:04:48 2012 +0100
+
+    Added check of netsnmp_extract_iterator_context() return value.
+
+commit 299ea9a89c3f1758a7748bb9b3411f62f2c70f88
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 10:54:55 2012 +0100
+
+    Added check of fopen() return value, just in case of some race.
+
+commit 90f1ae6757917481636eef77100caeeb53edfe01
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 3 10:06:56 2012 +0100
+
+    Add strlcat.c. Source: http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/string/strlcat.c.
+
+commit 089bcb360aa26790ad2a8ceddf583b7ba5ddfd48
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 10:50:56 2012 +0100
+
+    Added strrchr return value check, just to be sure.
+
+commit 199a0511f6eb0ef3ff1d9f922b790ab67dfde01e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 10:31:26 2012 +0100
+
+    CHANGES: snmpd: smux: simplify smux_list_detach()
+
+commit d883573aa73e0f5fc188acedee6451f95dae900c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 10:23:06 2012 +0100
+
+    Fix a compiler warning introduced by commit a809fe5075c9f374715f7d1a682949a0730172c1.
+
+commit 7b7a3eb2500527eaa1699287a6ca6fcc4cc2e08a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 09:40:02 2012 +0100
+
+    Fix a build error caused by commit a809fe5075c9f374715f7d1a682949a0730172c1.
+
+commit 2b6c119fed4848da6663c11f0c2cbdc29921b5c6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:51:10 2012 +0100
+
+    Check for netsnmp_ds_get_int() errors.
+
+commit 6ce5360caa4c9de51ade57879e83f96bd04b4c5a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:42:23 2012 +0100
+
+    Check for missing view.
+
+commit b3bc54bed31690a85df2acfbf3296da93a9e89b4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:23:17 2012 +0100
+
+    Check socket() result.
+    Also close the socket on error.
+
+commit 92075f51cd45a38ca38760b3ffe82e16559e9c2e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:18:26 2012 +0100
+
+    Check open() result.
+
+commit 6665d5fe2fc569d6fa854d1d78e347bbac69e070
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:22:22 2012 +0100
+
+    Fixed missing break.
+
+commit a6648c5453e1ef8dac57a38efcc00cce53bf9e4f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:20:27 2012 +0100
+
+    Fixed missing break.
+
+commit d68dcae0f18d554571aef321944a5290548dde86
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:16:11 2012 +0100
+
+    Added 'fallthrough' comment for Coverity.
+
+commit fb6f80c0fe3ba36e56f5b911a47e3f6f32ba266e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:14:07 2012 +0100
+
+    Fixed exit code of encode_keychange with wrong arguments.
+    Also added a comment for Coverity.
+
+commit 3130e24fdc232464dd7bb216f46cafa2e0e775a6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:09:54 2012 +0100
+
+    Added missing break
+
+commit 18c126a9565cb4d69d7513b944a2105588045d35
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:07:29 2012 +0100
+
+    Added 'fallthrough' comment for Coverity.
+
+commit 6d31c82070a2c68fe3c519e9d56fa2779554d01f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:01:53 2012 +0100
+
+    Added 'fallthrough' comment for Coverity.
+
+commit dc6f0e2e549b4cd061ebc190084b1fc77a55f40f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:32:59 2012 +0100
+
+    Fixed wrong operator
+
+commit dab32867ed0b99301efd7b8d852ad1288a184be0
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:30:33 2012 +0100
+
+    Fixed QUITFUN usage.
+
+commit b1a2bcf64615eb66bc24d5be4950e45012962045
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:18:03 2012 +0100
+
+    Fixed wrong operator
+
+commit b2b1c851b94fed37c386eaa1bfead5c77696e3ef
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:14:52 2012 +0100
+
+    Fixed wrong operator
+
+commit a809fe5075c9f374715f7d1a682949a0730172c1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 10:58:46 2012 +0100
+
+    Added check for failed register_mib.
+
+commit 5949f055c16ae650615aae7a1fee3f2d7b16d940
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 10:29:59 2012 +0100
+
+    Make MIB file parsing and detection more strict - LABEL is required at the beginning of MIB files.
+
+commit e4b673683c68ba8b3abc040b9125ec304643cc7c
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jan 1 23:00:24 2012 +0100
+
+    Assume that libdl might be in AGENTLIBS or SNMPLIBS so preadd them.
+
+commit b13c1e57bedba79b806103c74f1921d53a706b38
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jan 1 22:55:06 2012 +0100
+
+    Do not require ucd-snmp/dlmod unless it will work.
+
+commit 27dcea0d5f801df494ab2cb5c5c0ebe54eb0dcd3
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 14:48:29 2011 +0100
+
+    Adjust paths for test restructure
+
+commit 14b60e85a1b5700e93d126e2f291d5c485f34e36
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 14:14:29 2011 +0100
+
+    CHANGES: snmpd: Make the configuration of the dlmod module fail rather than generate a dummy module if the dlopen function isn't available.
+
+commit 98a97538fc1e9ff46b60d5d969347444578378c0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 13:35:13 2011 +0100
+
+    Adjust the paths to support testing even if builddir != srcdir
+
+commit 88f0af3cfb916ae5863cc2986071d435f20c3064
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 11:37:52 2011 +0100
+
+    Reduce the scope of the variables 'p' and 'len'.
+
+commit 0815a7536c76f7e4842638683f674894a1a8ce14
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 29 14:42:54 2011 +0000
+
+    Report problems with SetUndo processing
+    Missed when applying patch #3445440
+
+commit eb2ab23742ca86c0b89ccfe91eb6ea374bf3acc1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 29 14:37:31 2011 +0000
+
+    Check for the expected error (EPIPE) on closure.
+    Missed when applying patch #3447444
+
+commit aac10bc4f053c014f382d6593fc32ab95e0b1a57
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 29 12:59:52 2011 +0000
+
+    CHANGES: snmpd: BUG: 3463767: Handle parsing subidentifiers > 2^31
+
+commit bbc02e36e90c1aab7898562f963f5cadb26e10bd
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Dec 28 17:15:16 2011 +0000
+
+    Move pass/pass_persist tests to the new location
+
+commit 3898c04fd6f89867062fdfebf36857ab619c0450
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Dec 28 16:53:24 2011 +0000
+
+    Add tests for pass/pass_persist, supplied by Bill Fenner
+
+commit d5ee3f0a1a63bb1752c74cbca55aa3d40bf9bf13
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 21:58:51 2011 +0000
+
+    CHANGES: snmpd: PATCHES: 3447444: Fix SIG_PIPE handling
+    Patch provided by Bill Fenner
+
+commit 2a17b37430c1852998c3588e547d7eb61c06da71
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 21:45:38 2011 +0000
+
+    CHANGES: agentx: PATCHES: 3445440: More robust handling of AgentX errors
+    Patch provided by Bill Fenner
+
+commit fe58a0e5f4d4e2e2ecbcb47382b08cb1e4df352c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 18:16:23 2011 +0000
+
+    CHANGES: snmplib: PATCHES: 3456770: Handle (obsolete) UInteger type properly
+    Patch provided by Bill Fenner
+
+commit 1be8cf08a67a91855fee1ec4a2d8e087c7812456
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 18:04:10 2011 +0000
+
+    CHANGES: agentx: PATCHES: 3445437: Log AgentX disconnections
+    (in line with connections) Patch provided by Bill Fenner
+
+commit 068037289107faa2ba3f5cd2fb00c19494bb9a04
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 17:27:46 2011 +0000
+
+    Handle any GETNEXT request OID, not just a simple walk.
+
+commit a74fa528983123d355a8cdcaa77dd4eb4b8c6959
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 17:00:18 2011 +0000
+
+    CHANGES: pass: PATCHES: 349394: Bring pass_persisttest script into line with passtest*
+    (i.e. using the legitimate structure of NET-SNMP-PASS-MIB)
+    Patch provided by Bill Fenner
+
+commit bbe649ebfa61ea22399170b36b99db30a1de8012
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 16:54:38 2011 +0000
+
+    Rework "passtest" example to fully validate GETNEXT requests
+    and use a legitimate structure for output.  Backport of SVN
+    revision 17632 (which updated 'passtest.pl' but missed 'passtest')
+    Correct in branches 5.5 and above
+
+commit 82d06c7247b22c8b01d45bf55041d2f1e6427d49
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 13:45:18 2011 +0000
+
+    CHANGES: snmpd: PATCHES: 3447671: Fix override handling of OID values
+    Patch supplied by Phillip O'Donnell
+
+commit ba4a9ce51c9600f9fda168f1e6eff32a1db63cb9
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 13:24:26 2011 +0000
+
+    Tweak --disable-snmp-set changes
+
+commit 827c8b28830171faa9c61d53efca9eb6600561c2
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 11:25:43 2011 +0000
+
+    CHANGES: python: PATCHES: 3433846: Fix for use with python 2.4
+
+commit f98a54a99caf7b46b100a920db942cbca9c43926
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 10:10:36 2011 +0000
+
+    Skip SET-based tests when configured with --disable-set-support
+
+commit 230df14f94c3736ff34379a4e281eea353b47f80
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Dec 26 23:34:23 2011 +0100
+
+    Do not assign tmStateRef twice
+
+commit c96b3b4d8530ad5e0efb03f24dab5e5f1a460031
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 25 11:18:21 2011 +0100
+
+    Correct use-after-free.
+
+commit c5978c89cde2440f4d20dadbc9d1dd8db562d56e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 25 11:15:44 2011 +0100
+
+    Correct double-free.
+    
+    netsnmp_tlstmAddr_add takes ownership of it's argument so calling free on the
+    argument on failure is incorrect.
+
+commit c139ca123b44bb3b9b6bf921e1609cc45f63a660
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Sat Dec 24 16:55:30 2011 +0000
+
+    CHANGES: snmpd: PATCHES 3410059: Fix sparsely augmenting trigger tables
+    Patch provided by Stephen Turner
+
+commit c4ae021b2e6384437081c5623f360c8896390188
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Sat Dec 24 16:29:54 2011 +0000
+
+    CHANGES: snmpd: PATCHES 3410050: Skip already-'processed' varbinds
+    Based on mib2c patch provided by Stephen Turner
+
+commit c6accf8c66254fa8c48767ed7dec795ddafc522e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Sat Dec 24 16:27:11 2011 +0000
+
+    CHANGES: mib2c: PATCHES 3410050: Skip already-'processed' varbinds
+    Patch provided by Stephen Turner
+
+commit a61826ad8ca54661d1d909712503bd3a8b32eed0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Dec 22 18:35:46 2011 +0100
+
+    Remove unused variable.
+    
+    myMatch is unused as nmatch is zero and also since regexBuffer is created
+    with REG_NOSUB set.
+
+commit ba4fc80fe2cfd5a5d89230d8f3703e4fe01e6019
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 22 19:24:40 2011 +0000
+
+    CHANGES: agent: PATCH 3402376: from Leonardo Chiquitto: Recognise ReiserFS
+    Also move various FSType definitions to the appropriate blocks
+
+commit b5ac4a04dcd5470d08d03321abcd1e982621e6e0
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:39:46 2011 +0100
+
+    Fixed unterminated strings after strncpy
+
+commit 2b37e4e8f250a0d8821199a74ac3f4e5b7b7baba
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:31:51 2011 +0100
+
+    Fixed unterminated strings after strncpy
+
+commit 3d08345156c419333de969f13d21fcec7e18e94d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:32:29 2011 +0100
+
+    Fixed unterminated strings after strncpy
+
+commit cd859ad51c4f18d5b0fc69dd669fcb051c798969
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:39:33 2011 +0100
+
+    Fixed wrong memmove size
+
+commit 30ff58d09d4c9d5438bb621054fd7ad7a2a597e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:07:19 2011 +0100
+
+    Fixed wrong length of buffer when printing ASN_BIT_STR
+
+commit 6c1487e1d360d3d260a39cb1f5b15da978395053
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 15:47:34 2011 +0100
+
+    Fixed potential free of uninitialized pointer in error cases
+
+commit c76fb96f65e33ba2fd212a921e8c386155ee5c7a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 15:44:46 2011 +0100
+
+    Fixed unitialized values in udpTable
+
+commit c44608679b89751176f28a2e54d5282b46e2a05c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 14:56:13 2011 +0100
+
+    Use calloc instead of malloc and manual clearing
+
+commit a05c5f9513461824e7903ae9ae9a6c3386e33879
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 14:40:50 2011 +0100
+
+    Fixed printing of unitialized variable when sensors_get_label() fails
+
+commit e4a5edc72393bd3de9bf12bceba9d83bbf7de70b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 14:31:25 2011 +0100
+
+    Removed unused variable
+
+commit fae2e5b835b8df1eae47e4cebb4eb404d7282377
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 13:31:21 2011 +0100
+
+    Fixed dereferencing unitialized iid in error cases and with debug info enabled.
+
+commit 9d58f81a9239cfbcfc8ebce367d21e9b3dcb028b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 13:33:33 2011 +0100
+
+    Fixed dereferencing uninitialized variables in error cases
+
+commit 0bc8c08edeae7ae095f116258c20ae5767d60652
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 13:20:52 2011 +0100
+
+    Fixed returning uninitialized variable 'status' when ss == NULL
+
+commit 7304c53cf8adee8eccef1a8f26756fc07f098721
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 18 23:31:53 2011 +0100
+
+    On solaris 10 test in /bin/sh doesn't support the -e test. Replace it with -f
+
+commit 8cd3be60d693c9c36ffb97d3d9bcb49c1b4abe35
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 17 08:52:24 2011 +0100
+
+    Avoid repetition of the complex expression determining if it is possible to get the destination address.
+    
+    This also makes it possible to build on platforms like Solaris 10 that define
+    IP_RECVDSTADDR but lack either of msghdr.msg_control and msghdr.msg_flags.
+
+commit 953f2e3d425ede3b863a2e7ccb0b4bc862928b57
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 5 22:13:07 2011 +0100
+
+    Move the use of _sendto and _recvfrom below their definitions.
+
+commit 68a1173c46cf77601426cf391d9a852794f2057e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Nov 20 20:05:18 2011 +0100
+
+    CHANGES: snmplib: Separate out the cmesg buffer size
+
+commit 461dd16f3b2647322cdce6363081cc44ba5a49b5
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 26 21:51:01 2011 +0100
+
+    CHANGES: snmplib: Merge together the Linux and *BSD version of src port sending.
+
+commit 7accb69baa1fc0b6a3439d2e549c86da3453bad2
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:30:31 2011 +0100
+
+    Use a bare struct iovec in instead of a one element array.
+    
+    The purpose of this change is to make _recvfrom more similar to _sendto.
+
+commit 39852cd4c85ef2bfc75cdea2825261ee93e768c2
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:29:20 2011 +0100
+
+    Add comment describing the purpose of the call to getsockname after almost removing it.
+
+commit 1b292ca27eab5caa73feaaa83dc9c12abc0f2e70
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:27:59 2011 +0100
+
+    Reduce variable scope.
+
+commit bc879571eca9520bc132f840c3e659d3793144d7
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:25:36 2011 +0100
+
+    Introduce temporary variables to ease the extraction of the server address.
+
+commit b7eea6cffbd872932ce2c04fefb6f43de339f374
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:18:33 2011 +0100
+
+    Rename the cmesgptr variable to cm.
+    
+    The purpose of this is to increase the readability of the code.
+
+commit 0a7461e728805c62a1cab9d87bfc74c7927a9fcc
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:15:22 2011 +0100
+
+    Factor out a common loop in recvmsg option processing.
+
+commit b3c6248d0201ab1610840d6d0e749b3b6c4ad792
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:13:43 2011 +0100
+
+    Unify the structure of Linux and BSD recvmsg option parsing somewhat.
+
+commit 356400d6290a423b52ebeea5a5e976fb15bb73b4
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:04:56 2011 +0100
+
+    Use CMSG_DATA on the result of CMSG_FIRST/NEXTHDR, not on the buffer.
+
+commit 3b351708c62de46aa1b90ed232cfd8c7c5b02231
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 12:00:32 2011 +0100
+
+    Remove a cast
+
+commit de9250d9dae9727a6cc7f647688dddf1b8597128
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 11:58:04 2011 +0100
+
+    CHANGES: snmpd: Make sprint_mib_oid() treat OID components as unsigned instead of signed integers
+
+commit 0e33b3b6d5854a4bac15d4ea5e016c53d161d0cd
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 10:02:28 2011 +0100
+
+    Fix recently introduced compiler warnings
+
+commit b7e50d5f9a6755982d2af3191473cb34643bc03f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 08:37:22 2011 +0100
+
+    CHANGES: snmplib: Reduce overhead of config file parsing
+
+commit 73c9ee42d28afe2e107a7d6616b6d011890c36ea
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 09:09:59 2011 +0100
+
+    Remove unused variables
+
+commit 3db97962b37eb12d254d61e6be234b06a391c8bb
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Thu Dec 8 07:43:45 2011 +0100
+
+    CHANGES: snmpd: PATCH 3453868: from "Bill Fenner <fenner@gmail.com>": Factor common code into pass_common
+    
+    Move the code for pormatting and printing values from pass and pass_persist
+    into pass_common.
+
+commit b6568c83f1756e9a65434edeeeb40d23ddbbb652
+Author: ccchiu <ccchiu@sourceforge.net>
+Date:   Wed Dec 7 16:25:27 2011 +0100
+
+    CHANGES: BUG: 3452069: Fix snmptrap_oid declaration in mib2c generated code
+    
+    This bug was introduced considerable time ago. It did already exist at the
+    time the 5.6 branch was created (see also commit
+    0ec088afa27cfda4e6ea78aae7cfc5507564edde).
+
+commit d494db64c208b4dc62813132f8863bd5c1a39d77
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:38:17 2011 +0100
+
+    CHANGES: snmptrapd: Eliminate an unused variable (Now)
+
+commit 28f2561bc2935d8e1cbf46d2820158173e7a4cf4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:37:11 2011 +0100
+
+    CHANGES: snmptrapd: Move the main loop code into a new function
+
+commit 396e122ddc42a916f06a02884c0e8a258edbe238
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 09:32:16 2011 +0100
+
+    CHANGES: snmpd: Match each getpwnam()/getpwuid() call with an endpwent() call and each getgrent() call with an endgrent() call.
+
+commit 3efefbc0024399786f8b68b1e93b0a8fddddc7da
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:41:01 2011 +0100
+
+    CHANGES: snmptrapd: Remove superfluous casts
+
+commit 7f05daa8e0e0f533b0f12a3e1cf07641519909d6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 11:58:32 2011 +0100
+
+    CHANGES: BUG: 3444939: BUG: 1796886: snmplib: Avoid that sprint_realloc_octet_string() embeds unprintable control characters or binary zeroes in its output. This behavior could cause truncated output in snmptrapd.
+
+commit db8f558fd2f3b7c109ea3a1c2133b75b6f8cb2ad
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:04:41 2011 +0100
+
+    Compiler warning fix: pass unsigned chars to isprint() instead of signed chars.
+
+commit 800dc1028e7e0cd8cc14d84dd31723d47ac073db
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Dec 1 10:18:58 2011 +0100
+
+    Reduce the scope of the hint variable
+
+commit 83ea4a080c90a74b9743d3f24cf0d4b8a1e8c849
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Nov 27 21:16:52 2011 +0100
+
+    Reduce the scope of the variable qos
+
+commit 7b9e03441c3dc3a07670ed01f5d04791a82c750c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:04:01 2011 +0100
+
+    Remove #define val(x) __STRING(x) and change val(x) into __STRING(x).
+
+commit 2f379b0e4ecadfa4e541e3005c8fc8281882b741
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 15:58:47 2011 +0100
+
+    Follow-up for commit 1aa704e: unbreak the MSVC build
+
+commit 64ef0f71127617837027fb2cfaf174b95ba79e0d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:19:50 2011 +0100
+
+    Add SNMP::register_debug_tokens()
+
+commit 7bead9ca917c67566d5ed98ab507bbc02816217d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:08:08 2011 +0100
+
+    AgentX subagent: Reduce code duplication
+
+commit 0ed71541f87e7d78bc998eebda3217c59e1df830
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:03:19 2011 +0100
+
+    CHANGES: snmplib: Add Doxygen-style function header for netsnmp_register_default_target() and netsnmp_clear_default_target().
+
+commit 8c2972b61e40169b47c50988b6ae9e8c285f84f8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:02:54 2011 +0100
+
+    CHANGES: perl: Fix spelling in the documentation of the SNMP module
+
+commit 5df2bac6bd717799311f001ac7b73db88f11bdda
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Nov 29 08:59:58 2011 +0100
+
+    CHANGES: snmplib: Only transform the address to printable form when needed.
+
+commit 171e8d48d4af04013cff8fd28f5341a2aef21d88
+Author: Mijo Safradin <safradin@linux.vnet.ibm.com>
+Date:   Tue Nov 29 16:49:46 2011 +0100
+
+    CHANGES: snmp-bridge-mib: Fix index interpretation.
+    
+    This patch corrects a wrong data interpretation.
+    snmp-bridge-mib obtains the ifindex value from the sysfs
+    attribute 'ifindex' The value given by the sysfs attribute
+    is an integer, which is handled as hex and leads to
+    incorrect data displayed to the user.
+    
+    e.g.
+        $ > snmpwalk localhost BRIDGE-MIB::dot1dBasePortIfIndex.2
+        BRIDGE-MIB::dot1dBasePortIfIndex.2 = INTEGER: 54
+    
+    according to the sysfs attribute the value is 36
+    
+        $ > cat /sys/class/net/<device>/ifindex
+        36
+    
+    Signed-off-by: Mijo Safradin <safradin@linux.vnet.ibm.com>
+
+commit 82e39fb6706df90ecf2fc9e10ada2b962ee196f3
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Nov 29 12:27:46 2011 +0000
+
+    Fix multi-line case testing of incoming OID
+
+commit b15da1a4516061105a1eac7450cf650ec44266b2
+Author: Nikolay Denev <ndenev@gmail.com>
+Date:   Tue Nov 29 08:29:49 2011 +0100
+
+    CHANGES: FreeBSD: Restore IP_RECVDSTADDR functionality.
+
+commit 7f47f52e481baa9aafb5784244b0dd2653e7dcff
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Nov 28 08:51:39 2011 +0100
+
+    CHANGES: snmplib: Use SNMP_ALLOC_TYPEDEF to allocate transports in order to avoid the separate call to memset.
+
+commit cf86039e3086225c3085bb9adf088b8ba5ba6979
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 15:02:58 2011 +0100
+
+    CHANGES: MinGW: testing: Make unit-tests/T102pdu_build_clib pass.
+
+commit 1a87e76e00ee3d5cd37a07bfc3d84490d3c2a4ec
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 14:55:42 2011 +0100
+
+    CHANGES: MinGW: testing: Make unit-tests/T014gethostbyaddr_clib pass
+
+commit 8867fd1dcfe72b59d07322ff38a699b66ec4f326
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 09:44:38 2011 +0100
+
+    CHANGES: snmplib: Make netsnmp_large_fd_set_resize() robust against memory allocation failures.
+    
+    CHANGES: snmplib: Make NETSNMP_LARGE_FD_ZERO() use memset() on Unix systems instead of an explicit loop.
+    CHANGES: snmplib: Make sure that on Unix systems netsnmp_large_fd_clr() doesn't try to read memory it isn't allowed to read if the first argument equals -1 (a value that shouldn't be passed by the caller).
+    CHANGES: snmplib: Make netsnmp_large_fd_is_set() return false on Unix systems if the first argument equals -1 (a value that shouldn't be passed by the caller).
+    CHANGES: Windows: Make netsnmp_large_fd_set_resize() shrink behavior correct.
+
+commit 23db0cf09b8b0eab37b749ef0c3c3f306900245c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 21 23:02:57 2011 +0100
+
+    Fix casting tv_usec to int which may be too short
+
+commit 80ee4022e534e64aad5a5f27192843b42acb85e0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 09:14:02 2011 +0100
+
+    CHANGES: snmpd: BUG: 3439234: Move netsnmp_pass_str_to_errno to pass_common and rename it to netsnmp_internal_pass_str_to_errno
+
+commit 0baa9296c072bb3735760b0dd992f2d1d3ca27fa
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 09:05:24 2011 +0100
+
+    CHANGES: snmpd: BUG: 3439234: Correct the dependencies of ucd-snmp/pass and ucd-snmp/pass_persist
+
+commit 1aa704e4a294430b28e39b6f9e4683b8a48bce04
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 08:35:21 2011 +0100
+
+    CHANGES: snmpd: Factor out asc2bin and bin2asc. Add a netsnmp_internal_ prefix to them
+
+commit cda8fe91013f12cbf64a0775abb55720035af931
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 00:55:24 2011 +0100
+
+    CHANGES: snmpd: Call snmp_oidtree_compare instead of snmp_oid_min_compare
+    CHANGES: snmpd: Remove snmp_oid_min_compare since it is internal and unused
+
+commit 85f893e2b605e67f9bd0443c74e2ed269aa68564
+Author: Niki Denev <niki_d@users.sourceforge.net>
+Date:   Thu Nov 17 22:42:32 2011 +0100
+
+    CHANGES: snmpd: PATCHES: 3175640: Use IP_RECVDSTADDR sockopt where available (*BSD)
+    
+    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
+
+    Fix size_t/int mismatches
+
+commit ca294cf75bbc8e90dbf44ee40478935e91db1487
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:18:03 2011 +0100
+
+    Remove unused variables
+
+commit cd32c2dff06b9b452cc18d552d2f2234092c829c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:17:09 2011 +0100
+
+    Fix format warning
+
+commit 883136c2b2fa0739f437a8cfb6614accc76e268e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:15:58 2011 +0100
+
+    More needs for NETSNMP_PRIo format specifier
+
+commit b8084a7ccc909b6d6db7c0e8e596d78671f5678b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:14:26 2011 +0100
+
+    Fix using char as array index (ctype.h)
+
+commit 84529e6320a89d97f1314aebad806255d2a1b18c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:00:57 2011 +0100
+
+    Fix missing format for FreeBSD 4
+
+commit 4bd0352955a2551bfe02308dd134b9128c98b9e9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 22:59:36 2011 +0100
+
+    Fix paranthesis problem
+
+commit fe6269b1900cf44dc27a199a761d15a01c3f3092
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 22:58:34 2011 +0100
+
+    Fix size_t/int mismatches
+
+commit a4db9f9fc13d21ecff488eb410376edda6c28232
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 13:43:34 2011 +0100
+
+    Remove unused variables
+
+commit 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 13:37:49 2011 +0100
+
+    Fix format specifiers to avoid warnings
+
+commit 25cfc1962ae576ccb1558da1e3ef8b6c17f63c16
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 11:27:53 2011 +0100
+
+    Really up-to-date mibs
+
+commit 0e86c781f3989bf022c8993a118617b74a75420c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 09:17:19 2011 +0100
+
+    memory_linux: get Shmem from /proc/meminfo for 2.6 (or newer) kernels
+
+commit bf264d15ded7acbbf2e3871b98fd1fcef43d9ec3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 09:16:16 2011 +0100
+
+    memory_linux: close sockets in error situations
+
+commit 57ff8a40bae5d9bcad16089142a9cf328c9fa1f5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 09:14:57 2011 +0100
+
+    disman/ping, disman/traceroute: Close sockets in error situations
+
+commit 8a2502a15c3217b95939a3c836167d230ac35f02
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 09:13:53 2011 +0100
+
+    Up-to-date list of RFCs wit mibs
+
+commit dcdd702111d8da5f53804cfcf0dfdad731468bde
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Nov 15 10:57:34 2011 +0000
+
+    Don't try to install an empty list of man pages (MAN3)
+
+commit ba619804e5978a8df754844efcca52b69b5015fa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Nov 14 13:34:20 2011 +0100
+
+    MinGW: Make sure that the backslashes in the pskill message are displayed.
+
+commit 923eecc507f75043b60c5e68053a4f396ab0b0d2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Nov 14 12:36:38 2011 +0100
+
+    Compiler warning fix for systems where uint64_t = unsigned long (e.g. RHEL 6.1/x86_64)
+
+commit 434bfc1f7457550b6f87d5bcd511276b270b5964
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Nov 14 11:22:53 2011 +0100
+
+    CHANGES: snmpd: from Martin Wilck: fixed snmpd crashing with 'select: bad file descriptor'.
+    
+    On 32-bit systems, snmpd dies with aforementioned message when using file descriptions > 32, e.g. when having >32 AgentX subagents.
+
+commit ed65eca6e7f9cfa7380a78d56c01ed314745b169
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 19:01:21 2011 +0100
+
+    FreeBSD-9: Fix for const'ifyed nlist arguments
+
+commit eaca7983e3655ab696fcc4461ca0cedbac6ce69a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 19:00:12 2011 +0100
+
+    NetBSD-6: One more instance of timespec replacing timeval
+
+commit 8ad6c53fdec5adeae4e52f1751ecec4a345bab05
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 18:59:01 2011 +0100
+
+    Fix buig #3436527: arp_netlink: fix dying reload of cache
+
+commit 378ffed03ba79a8346d6c62781e2ddf5ce92a478
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 18:55:43 2011 +0100
+
+    Fix bug #3436528: swinst_pkginfo: recover from NULL return from opendir
+
+commit d7ad8f5f9f3f67f16f65c2515d11e194d2cdd12c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 10 14:04:41 2011 +0100
+
+    CHANGES: Cygwin: Make date_n_time() produce time zone information
+
+commit ba35c50b2f459bd9c11ed59cc7d1b16215644fa3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 10 14:17:04 2011 +0100
+
+    Replace AC_TRY_LINK() by AC_LINK_IFELSE()
+    
+    Note: these changes do not affect the generated configure script.
+
+commit f615bf24f5d0f23ce9301da556184d6460740456
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 9 20:32:49 2011 +0100
+
+    Fis Bug #3434824: SIGSEGV when reading disk directive after SIGHUP
+
+commit a94a179d9340f51fa7c23431630bc0ffd6d759e8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 9 20:30:51 2011 +0100
+
+    Fix bug #3433616: dont treat DateAndTime as a string
+
+commit b29e4164531d258fe34a6fe2b9e1ec60c56f9544
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Nov 7 01:25:57 2011 +0100
+
+    CHANGES: testing: Remove unused variable
+
+commit e221e65fdc1c68f1968651717dcc9ccfb6414783
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 3 15:05:00 2011 +0100
+
+    Fix warnings about converting sockaddr_in * into sockaddr *.
+    
+    This is a follow-up for commit a0af385.
+
+commit 2e7e9eda0b0d62a7645a9a8f70ef3fb6f3dd6941
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 3 11:17:48 2011 +0100
+
+    Fix uninitialized variable warnings.
+
+commit 3462ebcdd0b7c298cb15c3099736f4f952257846
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 28 16:07:15 2011 +0200
+
+    Remove those superfluous parentheses that trigger a clang warning.
+
+commit 3e5fedd3e7d1ef31683604bf73dc56e944cad349
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Nov 3 09:45:27 2011 +0100
+
+    CHANGES: snmpd: fixed UCD-SNMP-MIB::systemStats after 30 days of uptime.
+    
+    After 30 days, values from /proc/stat (on Linux) can get bigger than 32bits and snmpd calculations might render counters like ssCpuUser negative or zero, while the real value is higher. Therefore the counters should be tracked as the largest integer available.
+
+commit 0fc8221b24988c4ae6180ed42b86b9852fd586ad
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 2 22:59:08 2011 +0100
+
+    dskIndex was off by one
+
+commit a5b28829e64d5f3b87e4b9b1ef8cc204f33a61b7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 2 21:25:07 2011 +0100
+
+    Solaris needs $AWK to get a usable nawk
+
+commit 2801a2139f27021e1ab15e362e2d3d624ffaa494
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 31 22:55:53 2011 +0100
+
+    Patch #3406364: Fix unstable data for NetBSD.
+
+commit 821a58d112d7ac495149e262d704412ba2800438
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 31 22:43:52 2011 +0100
+
+    Fix ipv6 statistics looping too far when scanning interfaces.
+    Fix TCP session table repeating data from first entry for all.
+
+commit 349591d03e17a55b43eacc6a687b02fd8d4e9528
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Oct 31 08:59:37 2011 +0100
+
+    CHANGES: perl: Make it possible to build perl support without support for opaque types.
+
+commit 1ec7110e72bce1561f746517459d6f043016b60e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 30 19:05:30 2011 +0100
+
+    CHANGES: testing: Make the asn1 test pass even if support for opaque types are removed.
+
+commit 6d26918af55aa3662a720542de77bbf39b0a3e91
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Oct 29 08:34:33 2011 +0200
+
+    CHANGES: snmpd: Disable the support for integer64 in pass scripts if compiling without opaque-special-types.
+
+commit 29bf69d70424f359d9c87f07a964a099415649a5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 13:02:25 2011 +0200
+
+    CHANGES: snmptrapd_sql: Avoid that a linker error is triggered on systems where my_progname is missing in libmysqlclient (e.g. Fedora 15 and 16).
+    
+    This is a backport of commit 9f653f7.
+
+commit 2cc9504b9bb8625b94be6cda7e60993d059cd928
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 09:01:23 2011 +0200
+
+    CHANGES: snmplib: BUG: 3428506: Fix netsnmp_gethostbyaddr()
+    
+    This patch should fix the regressions introduced by commit 85d96c4 (May 13, 2011).
+
+commit 9b427b353f1ceb8fe87e6fc8ed3b6cfab3ce7f20
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Oct 27 08:20:00 2011 +0200
+
+    MinGW: Avoid confusion between MinGW's kill.exe and the SysInternals pskill.exe
+
+commit 2c45f92cfcb5b05e049226a5a7883a0b106011ae
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 10:42:29 2011 +0200
+
+    Fix compiler warnings about passing a const pointer to a function accepting a non-const pointer.
+
+commit 275d23edfdebe0577b08421e4c6c936ae39b7fdc
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 09:33:09 2011 +0200
+
+    Fix compiler warnings about set-but-not-used variables
+
+commit 4495e17c078ac6997a9c7fa1a88db0644e919491
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 09:32:46 2011 +0200
+
+    Fix compiler warnings about casting away const
+
+commit 13952f6bee9f408867ab6d2fdfdde4f284074957
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Oct 26 14:05:16 2011 +0200
+
+    CHANGES: snmplib: from Siddhesh Poyarekar: properly clean up old requests in a subagent when we reconnect to master.
+    
+    An snmp subagent linked against net-snmp-libs may crash if it handles a
+    response which has magic referring to an older disconnected main session. This
+    may happen when the subagent
+    attempts to clean up old requests on reconnection of the disconnected master
+    session.
+
+commit ae052472b22720d08369e85127db214245df2e3f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Oct 25 16:15:17 2011 +0200
+
+    CHANGES: perl: fixed segmentation fault when handler registration fails.
+    
+    When netsnmp_register_handler fails, it frees its reginfo -> nsahr_DESTROY (and any other function) must not dereference it.
+
+commit c199bf91b6239f26b2aab34e8575e0f0df9cde9b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Oct 24 14:25:28 2011 +0200
+
+    CHANGES: snmpd: xfs, jfs and vxfs filesystems are now recognized in hrStorageTable
+
+commit 747fdc71e64d09e080928ebbb4d04cbde3906799
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Oct 5 15:57:59 2011 +0200
+
+    CHANGES: snmpd: Lowered severity of 'error finding row index in _ifXTable_container_row_restore' message.
+    
+    The message is shows up when snmpd is started and there is different set of network interfaces than it was when snmpd wast last stopped. This is common on ppp-servers or virtual hosts.
+
+commit 250f698e59eab9f1ffd332ff59fdb72ea0df06ff
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 23 08:51:23 2011 +0200
+
+    CHANGES: building: Make the transport configuration code work again
+    
+    Previously the transport inheritance processing code ran with
+    NETSNMP_FEATURE_CHECKING set. In this mode the file net-snmp/feature-details.h
+    is requiered. That file is created during the first make run, and that happens
+    after configure is run.
+    Change this to undefine NETSNMP_MINIMAL_CODE, effectively turning off feature
+    support during transport configuration in order to make it work at all.
+
+commit 6ef6907642247c663b9b8964b9fd44a211dbcaa7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Oct 20 20:30:54 2011 +0200
+
+    CHANGES: snmpd: BUG: 3408398: Fix a memory leak in agent/mibgroup/hardware/fsys.
+    
+    This memory leak was introduced via commit
+    9bf3d96d96a8ecd4a5fc35c326dc937467002b6c: Initial HAL
+    implementation of FileSystem information (March 7, 2008).
+
+commit cf82b894b2217c26edc6f1356351c932415604e2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Oct 15 14:45:08 2011 +0200
+
+    CHANGES: snmplib: BUG: 3423915: Change default number of retries back from 0 to 5
+    
+    This patch fixes a bug introduced via commit 6cac050 (May 5, 2011,
+    added support for specifying the default number of retries in
+    snmpd.conf).
+
+commit c11adaa12915abfee629bb6c026c21f2185b216e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 17 10:24:46 2011 +0200
+
+    CHANGES: Win32: Avoid that compiling the header file <net-snmp/net-snmp-config.h> with the MinGW gcc compiler triggers warnings about "pragma comment".
+
+commit b17a72a793483aee4a5bb2f2e2c7f4fd869817e6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 17 10:22:20 2011 +0200
+
+    CHANGES: Win32: Avoid that the PACKAGE_* macros defined in <net-snmp/net-snmp-config.h> cause trouble when including this header in a package that uses the GNU autotools.
+
+commit 664d3ae107d754051b8c42279d459aa57a1be1c3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 16:47:16 2011 +0200
+
+    MinGW, hw_fsys: Use proper format specifiers in a debug statement.
+    
+    This patch fixes an issue introduced in commit 76ff25d.
+
+commit 211dcb49306561e35ba3c213be7cfa257b40a8e5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 15:52:43 2011 +0200
+
+    Avoid that gcc 4.6 complains about set but not used variables
+
+commit 9f653f73e5aa70f0bef1174632e95594f87f669f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 13:02:25 2011 +0200
+
+    CHANGES: snmptrapd_sql: Avoid that a linker error is triggered on systems where my_progname is missing in libmysqlclient (e.g. Fedora 15 and 16).
+
+commit 4c83b9229a7454f34f6ff75f69e67e4030c419b5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 15:58:45 2011 +0200
+
+    CHANGES: snmplib: Set the rpath for libperl.so in libnetsnmpmibs.so such that the dynamic linker can find libperl.so without requiring the user to modify the dynamic linker settings.
+    
+    This change in agent/Makefile.in is necessary on the 5.5 branch and
+    later but not on the 5.4 branch. That is because the 5.4 branch uses
+    an older version of libtool that propagates the rpath of dependent
+    libraries. This is called inter-library dependency tracking in the
+    libtool manual. This functionality is present in libtool version 1
+    but not in libtool version 2. For more background information about
+    dynamic libraries and rpaths, see also the document with the title
+    "RpathIssue" on the Debian wiki (http://wiki.debian.org/RpathIssue).
+
+commit 8925c912d2639752a84bcffeef1b70a81026449b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 14:21:28 2011 +0200
+
+    CHANGES: agent: HOST-RESOURCES-MIB: Add missing brace in a debug statement
+
+commit 76ff25d9bf97579e7213102065fd5096f049a4c5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 14:13:18 2011 +0200
+
+    CHANGES: snmpd: HOST-RESOURCES-MIB::hrStorageTable: fix bug in handling large filesystems, where large means above 8 TB (= 2**31 * 4096 bytes).
+    
+    This patch fixes a bug introduced in commit
+    71d8293f387a6cd66bb0dbb13c0f50174d2e678b.
+    For the original bug report, see also
+    https://sourceforge.net/tracker/?func=detail&atid=112694&aid=3419825&group_id=12694.
+
+commit 866033db9904ffb1203f283f838092e4cf68de6b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Oct 6 07:33:27 2011 +0200
+
+    CHANGES: snmpd: Remove spurious #endif that seems to be the result of a mismerge.
+
+commit 20f4f3267ee20d55705b7a43789879c103f96620
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Oct 6 00:08:59 2011 +0200
+
+    CHANGES: building: Add missing end comments to feature ifndefs.
+
+commit e5de2cc57bf304f3320cad0034d2ea2d8aedc436
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 5 09:15:10 2011 +0200
+
+    CHANGES: agent: Log a more detailed error message if embedded perl initialization fails
+
+commit 5eef9990de28f63111e6c093be0f3c7ae2d513a1
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 5 08:45:49 2011 +0200
+
+    CHANGES: perl: Add agent::uptime()
+
+commit 6810ed42f9bc560750d6dbfb7e50b6e2ac11899c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 30 11:01:23 2011 +0200
+
+    CHANGES: Cywin: agent: Implement get_uptime() such that querying HOST-RESOURCES-MIB::hrSystemUptime returns a non-zero value.
+
+commit 97172b311d20f4441c7a7e90092b59c1e0da99f7
+Author: Thomas Jarosch <tjarosch@users.sourceforge.net>
+Date:   Wed Oct 5 08:46:39 2011 +0200
+
+    CHANGES: PATCH: 3418649: HOST-RESOURCES-MIB: Use pclose() instead of fclose() to close a pipe.
+
+commit 6591937adb85000c27069c4be84cf4688838ebcd
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 16:18:03 2011 +0200
+
+    CHANGES: building: Add dependencies on @FEATURETARGS@ to make the subtarget work as well.
+
+commit b9c8012ec035bc084f175876fecc375195f9be81
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 14:02:58 2011 +0200
+
+    CHANGES: building: Add target to build agentxtrap from the toplevel
+
+commit 995647c0cfe00412262cc5797bdfae9d00b70c76
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 15:44:36 2011 +0200
+
+    CHANGES: building: Remove the use of -L flags for internal libraries as it confuses libtool.
+
+commit 93dc1235a0db58ffd29617cff00dc11263780202
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 11:31:46 2011 +0200
+
+    CHANGES: building: Make make apps work again
+    
+    apps include snmptrapd and that require the agent libraries as well.
+
+commit ba41488ed44cd23c25963d4fc56c476853b2ab59
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 11:29:33 2011 +0200
+
+    CHANGES: building: When you say make libs you expect all the libs to be built.
+    
+    This is demonstrated by the snmptrapd target at the top level which obviously
+    expected both libs to be built and so failed to compile before this patch.
+
+commit 3057c73e093473be46254bcdfb4ca788e432d1b8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Sep 30 07:32:52 2008 +0000
+
+    NEWS: building: PATCH: 2091156: correctly declare dependencies in Makefile.
+    'make -j <N>' should work now.
+    
+    Backport this to V5-4 as it is needed for correct operation in the single
+    threaded case of make miblib as well.
+
+commit 6eae340fa2a64086592982cc52735bc01487d978
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Oct 1 19:33:50 2011 +0200
+
+    CHANGES: building: Silence libbsd 0.3.0 nagging
+    
+    If you have libbsd 0.3.0 installed then their version of nlist.h warns and
+    tries to make you include bsd/nlist.h instead. The problem is that we don't
+    need that compatibility library as we know how to do it ourself so it becomes
+    pure nagging. This patch adds a define that changes the warning into an
+    error and then figures out that there is no usable nlist.h and ignores it
+    for the future.
+
+commit ac38cb531bee50edc8d4c834f3005f5992c771d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 19:03:02 2011 +0200
+
+    CHANGES: perl: Enable sending SNMPv2 traps with an empty varbind list
+
+commit a75de2971527ac2d2e812024298602bb2412f337
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 30 10:41:44 2011 +0200
+
+    perl/SNMP/SNMP.xs: Update emacs modeline
+
+commit 848f6300efe38492fb454451a030f0b7e6ff8c9d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 30 10:41:44 2011 +0200
+
+    perl/SNMP/SNMP.xs: Update emacs modeline
+
+commit c1374473ecd8ec9e0310013861ee18c83e5d6c5b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Sep 30 03:29:36 2011 +0200
+
+    CHANGES: testing: Protect the use of $OSTYPE to ensure that 'test' get enough parameters.
+
+commit 7e97a20633a57eae39d015b23339463c32f5f848
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 10:22:08 2011 +0200
+
+    CHANGES: testing: Convert snmplib/test_binary_array.c into two unit tests
+
+commit 9c0dd98176457342fffaa5e74d802e3145ed70e7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 08:56:17 2011 +0200
+
+    CHANGES: testing: Add unit test for netsnmp_register_old_api()
+
+commit 5fd26e4fa3e000ea9c81c38ab975b7946efe2157
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 28 17:49:55 2011 +0200
+
+    CHANGES: agent: Avoid that netsnmp_register_old_api() failure triggers a double free.
+    
+    Fixes a regression introduced via commit
+    aa4d47c2609e52818c9cdf1a8e2205de9a335a0a (svn r19515).
+
+commit d2252d016693807326f72b66123649dea00af916
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 10:20:08 2011 +0200
+
+    CHANGES: testing: Require a semicolon after OK(), OKF() and PLAN()
+    
+    Also, let OKF() emit a single line of output such that all output it
+    produces is visible in the output of "make test".
+
+commit 1421924b4852142192c5bb9e93ddbfed69e908fa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 21 22:20:08 2011 +0200
+
+    CHANGES: snmplib: Avoid waiting indefinitely if a session has timeout zero
+
+commit 5f27f4f74ae2bd5baf503cf306b4f9a2841a57cf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:32:03 2011 +0200
+
+    CHANGES: MinGW: testing: Fix a race condition in the test runner
+
+commit 09703958cc5ea845929ae19ef9e0804aecaa512e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 27 12:42:41 2011 +0200
+
+    CHANGES: testing: Avoid false negative for T114agentxagentxtrap_simple caused by the test result being present in the hex dump ("mostly_harmless")
+
+commit 439300279f6f31438638d2f222c24c3c841fa6ab
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 27 11:16:32 2011 +0200
+
+    CHANGES: building: Micro-optimize agent module dependency analysis
+    
+    This makes the agent module dependency analysis carried out by the
+    configure script slightly faster, especially on those systems where
+    fork() is expensive (Cygwin).
+
+commit bbc680004a1376038dfdc4172dbe7b9e311fba68
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Sep 26 10:14:45 2011 +0200
+
+    CHANGES: MinGW: testing: Make test T130snmpv1vacmget_simple pass
+
+commit 70b06cf789208eaa890bfbcd638bdb775f817054
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 20 09:50:57 2011 +0000
+
+    CHANGES: Windows: testing: perl: Fix an incorrect message printed while running the Perl module regression tests
+
+commit 70bcc8de2d0fc92bbb8481823630fab9bc87af75
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 16 16:14:24 2011 +0200
+
+    CHANGES: MinGW: testing: Obtain the MSYS path from the environment
+
+commit 626275e2d1acafae7144a33ed301a40f596b37b0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 14 13:14:17 2011 +0200
+
+    CHANGES: Windows: Remove superfluous link libraries from project files (*.dsp)
+
+commit 38fc3caa9eeb3800254b4f6ad6f8f4764c0f83db
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 20 09:34:08 2011 +0200
+
+    CHANGES: snmplib: Make netsnmp_callback_accept() return -1 (failure) instead of 0 (STDIN_FILENO)
+
+commit 6c8c7e8aca8fc2eeb52010ae3e9fee6dd83ef780
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 13 09:58:26 2011 +0200
+
+    CHANGES: snmplib: Remove obsolete snmp_get_fd_for_session() declaration
+
+commit 0860d11fd8fc5dbdaaae2261fae2c07fb9c2c82d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 8 13:54:55 2011 +0200
+
+    CHANGES: Windows: MSVC: Avoid that the typedefs in <net-snmp/net-snmp-config.h> conflict with those in <stdint.h> from the msinttypes project
+
+commit f8a036f63ff68f083436120e0abd478b692a2f61
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 8 13:21:06 2011 +0200
+
+    CHANGES: Windows: MSVC: When linking with OpenSSL, link with user32.lib too
+
+commit 836a23e10ca810c3899902d32587616a9d1203df
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jul 14 18:38:13 2011 +0200
+
+    CHANGES: Windows: MSVC: Link with proper libeay32 library
+
+commit 7b07fd6cdef49ec7bb04b166e2a4fbb37b582840
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 11:10:38 2011 +0200
+
+    CHANGES: testing: Remove an incorrect comment from simple_eval_tools.sh
+
+commit 98f6d29d981ff8e607600c63dadb240535629807
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:49:03 2011 +0200
+
+    CHANGES: testing: Make ISDEFINED() check for an exact match instead of a prefix match
+
+commit 52cd0031a31f692f13263a94c335d06be1454803
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:59 2011 +0200
+
+    CHANGES: MinGW: testing: Make those regression tests pass for which SNMPCONFPATH and/or SNMP_PERSISTENT_DIR matter
+
+commit f5cd89bd3356dd74e1556c0b50966a643f192085
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:59 2011 +0200
+
+    CHANGES: MinGW: testing: Fix a race condition in the test framework
+
+commit deedd52c834a6448852a06785536e13865969694
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:58 2011 +0200
+
+    CHANGES: MinGW: Support the directory structure of recent Shining Light OpenSSL binary distributions
+
+commit d55bd4e0549f03b6fd32562c2aa7fe39272a9ef7
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Sep 28 06:55:19 2011 -0700
+
+    remove the v5.7 from the frozen list
+
+commit ac2aed3c94bb2ebb473af0a1e20f0561ad629956
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Sep 28 06:55:11 2011 -0700
+
+    remove the v5.7 from the frozen list
+
+commit 46eac02e9a27bf4f3068e795cab891f05a848870
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Sep 26 21:49:27 2011 +0200
+
+    CHANGES: snmpd: Avoid that snmpd crashes if started on a system with another OpenSSL library version than the one it has been built with.
+	
+----------------------------------------------------------------------
+
+Changes: V5.7.1 -> V5.7.2.pre2
+
+commit 810185ae0b0cd2ad4d424a1ba775ef5ceaf50f03
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 09:24:19 2012 -0700
+
+    make depend for 5.7.2.pre1
+
+commit 6271471e01282f3675724eaf1358ceb0e95ddd4e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 08:32:40 2012 -0700
+
+    Version number update: 5.7.2.pre1
+
+commit fcb782aa8893134c7414a926d9268594f725b915
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Sat Jun 2 08:32:18 2012 -0700
+
+    version update for 5.7.2.pre1
+
+commit e3bcd87c72fcea7706e868b5ace75296093f7497
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 14:09:42 2012 +0100
+
+    Fix dist/release format
+
+commit d813ce2eeefc68229cfcaf20603244cdd6d09d3c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 14:07:52 2012 +0100
+
+    Fix dist/release format
+
+commit fa7bd581e3783685db39c9b4eaf847be5ac86fd3
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:53:10 2012 +0100
+
+    version update for 5.6.2.rc2
+
+commit 0739e2382d31146aca3205244cf70788b40a428d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:51:45 2012 +0100
+
+    version update for 5.6.2.rc2
+
+commit d9a15445aa74f5316bfc711c1558467872c2958c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:50:12 2012 +0100
+
+    make depend for 5.6.2.rc2
+
+commit bcabd2c9542dbebd1d319b4494413bdcca06614e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:38 2012 +0100
+
+    Release Candidate for V5-6-patches
+
+commit b473898c0c5ac9eb47c7c05a3f745e4ff2a76aaa
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:28 2012 +0100
+
+    Version number update: 5.6.2.rc2
+
+commit 131429e7062fbaa65b82affed1fb92df2c0cc813
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:38:38 2012 +0100
+
+    Release Candidate for V5-6-patches
+
+commit 1c8110b33b8105ca6190945a35fe7ae903252d68
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:21:38 2012 +0100
+
+    Avoid perl versioning problems when setting up the build environment
+
+commit 508ece16e6f6f49562da204792ae0644269994d1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 13:20:58 2012 +0100
+
+    Fix handling of dist/release merge
+
+commit 5b8a8547b1a47d2f5b207f48f2496e4241d902c6
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 11:10:48 2012 +0100
+
+    version update for 5.5.2.rc2
+
+commit 6c32914bf28d695df349dca269e488b501700316
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 11:07:22 2012 +0100
+
+    version update for 5.5.2.rc2
+
+commit 9f5a82a5afdbb3daeb2fd437a309f0b8d357cf4b
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 11:05:39 2012 +0100
+
+    make depend for 5.5.2.rc2
+
+commit 39203f29477a3bedf012d41135d8abd6bcad08b1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:54:27 2012 +0100
+
+    documentation update for 5.5.2.rc2
+
+commit 17e79ef0fad79609c5ba2feb4e8b9eb5d7db6886
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:46:11 2012 +0100
+
+    Release Candidate for V5-5-patches
+
+commit 5821be5bbb4018ded282fbbbd4830cf2eeadd9e1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:45:59 2012 +0100
+
+    Version number update: 5.5.2.rc2
+
+commit 3f2111de6733a04e12d910d306a34d671e008762
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu May 31 10:46:11 2012 +0100
+
+    Release Candidate for V5-5-patches
+
+commit ccf8ff2c4db60122d41302e4aeb700e0b868105f
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 28 10:18:43 2012 +0100
+
+    CHANGES: snmplib: PATCHES: 3526599: Don't hang on retried failing SNMPv3 responses
+
+commit c81c8483990911f47435d3005255d91c37ab92b2
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 27 14:09:26 2012 +0200
+
+    Fix BSD that downnot always like IP_SENDSRCADDR - so retry without
+
+commit ffce1f2dc2f8b31abd01f93b26da78f4726a1e64
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 27 14:03:58 2012 +0200
+
+    Fix OS missing MSG_DONTWAIT (AIX). Backport from 5.7
+
+commit c575216850185b56454dad0253e3164979e13513
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun May 27 13:56:01 2012 +0200
+
+    Fix missing include. Fixes SIGSEGV on FreeBSD9 x64
+
+commit 5805878749c08062debf0a9d798d08fb916caa2d
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun May 27 06:23:19 2012 +0200
+
+    CHANGES: snmpd: Add missing debug tag
+
+commit d1a42bbcc7b14730c9a6d99c4f047097843a549b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri May 25 09:02:27 2012 +0200
+
+    CHANGES: building: Run libtool --mode=finish on the right directory
+
+commit 1fbf33711a19eac9739ad23f6f6251eacc41f1c4
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue May 22 14:54:45 2012 +0100
+
+    CHANGES: Linux: PATCH: 3525998: Don't use an uninitialised value in error message
+
+commit 32c1686b67dc85c4a189576363065609dfed5e61
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue May 22 14:52:56 2012 +0100
+
+    Attempt to mark release-candidate branches as such.
+    Omit final-release-only steps when preparing preN/rcN releases
+    (Relies on a tweak to the Makerelease perl modules)
+
+commit 4c5633f1603e4bd03ed05c37d782ec8911759c47
+Author: Robert Story <rstory@freesnmp.com>
+Date:   Mon May 14 11:40:06 2012 -0400
+
+    NEWS: snmp: BUG: 3526549: CVE-2012-2141 Array index error leading to crash
+
+commit 65dd83c2255ee58edbf0e25863e55b58a4113679
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 20:30:42 2012 +0100
+
+    version update for 5.6.2.rc1
+
+commit ac4bc65e2909f3bd85f32f04b504fa65d2f64553
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 20:28:06 2012 +0100
+
+    make depend for 5.6.2.rc1
+
+commit b74994864195119edb6e19c85147fac00bcb93e3
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 20:13:46 2012 +0100
+
+    Version number update: 5.6.2.rc1
+
+commit 91350092c46e66d06d74143f4816473db4d25160
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 19:56:33 2012 +0100
+
+    Mark version-specific changes _before_ pushing to central repository
+
+commit 7241accd70b82d0fcd44d5a5238b2ee9445900db
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:53:17 2012 +0100
+
+    version update for 5.5.2.rc1
+
+commit 7c796a15a1d1bb85feea940bd4e3516877920919
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:50:49 2012 +0100
+
+    version update for 5.5.2.rc1
+
+commit 07e268bfb64b0ec645b3f7e87266984f9217cf12
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:44:37 2012 +0100
+
+    make depend for 5.5.2.rc1
+
+commit 16eaaf6c3ba14596ca9efaf4b114f1b709f42b68
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:29:03 2012 +0100
+
+    documentation update for 5.5.2.rc1
+
+commit c729469ef12154930cf9d15967e16186fb445f30
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:27:20 2012 +0100
+
+    Version number update: 5.5.2.rc1
+
+commit 142571d3cea08f0c072d24c1d39a43c7446f8ce7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:01:03 2012 +0100
+
+    When building a new release, the installed version of the perl
+    modules may well be different to the version being built.
+    That should not break the build.
+
+commit eba86b6f7aff261ee0e61334df70de7156e5c3cb
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon May 7 17:01:03 2012 +0100
+
+    When building a new release, the installed version of the perl
+    modules may well be different to the version being built.
+    That should not break the build.
+
+commit 5c0f64d6db2b593f7cc0ed2d4f55b7c592b774a8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:25:15 2012 +0200
+
+    Only output cpu warnings once.
+
+commit ee58e4827b9fa16e6635ca003e8a4f11dcb5fb7a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:17:42 2012 +0200
+
+    Fix speling in errormessage.
+
+commit 03f485df22f20e149cfae94c57cb82feecb5d74b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:12:11 2012 +0200
+
+    Not all Linuxes use rpm (debian/ubuntu comes to mind)
+
+commit 930838224f781696bd35225f22569347416f1b16
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Apr 23 22:10:15 2012 +0200
+
+    Check need for -lm to use round/exp
+
+commit a0609cf1f3a6917d263725732248cd937a45ad94
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 08:40:44 2012 +0200
+
+    Remove limitation on configuration line length.
+
+commit 305973338a63ae54c5e02a8626fbe9a8064dcb7e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 00:32:19 2012 +0200
+
+    Reduce variable scopes.
+
+commit ccab4e9d3ed424c39d0dc27be63fa76c7461ea81
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Apr 7 00:15:22 2012 +0200
+
+    Internalize the name and line number of the curret configuration file
+
+commit cf874ad7b9daf4fcc0d46cdd034474b478005341
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Apr 6 21:47:28 2012 +0200
+
+    Replace #if (A) B #else B #endif with B.
+
+commit ef9ea641bc290eec50685b60519b31bee8b14a69
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 21:04:06 2012 +0100
+
+    version update for 5.6.2.pre2
+
+commit 35aba1959de119f1fb89203c37109aa6f0e21c57
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 21:00:40 2012 +0100
+
+    version update for 5.6.2.pre2
+
+commit e41fbaff18ac9095cf4a739a06ec39a1a6ccfdc1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 9 20:35:35 2012 +0100
+
+    Version number update: 5.6.2.pre2
+
+commit 137fe582d6cc5611430dab46ef144efd84cfc803
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Fri Apr 6 20:46:56 2012 +0100
+
+    Revert commit 1f4a829b18275e4956ca91e5ec370df015f06133
+    (snmp_store_needed() API is not available in 5.[45].x)
+
+commit 2b7e64288c01a8a062026c521ca31a5e885f30cc
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 16:12:12 2012 +0100
+
+    FreeBSD-9: Fix for 'const'ifyed nlist arguments
+    Backport of ed65eca6e7f9cfa7380a78d56c01ed314745b169 from V5-6-patches
+
+commit 7e95d80b698051259645c074a53ffd264a6fa916
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 16:06:56 2012 +0100
+
+    FreeBSD-9: Fix for 'const'ifyed nlist arguments
+    Backport of ed65eca6e7f9cfa7380a78d56c01ed314745b169 from V5-6-patches
+
+commit 1a9b7b7c02e2deefe994d595a7cc1dd2ffbeee1d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 15:51:20 2012 +0100
+
+    Fix compilation on FreeBSD 9.x with 'recent' header shuffling
+    Backport of c53d8c3525f590f2213d35b0da94123862f3e366 from V5-5-patches
+    (Patch #3363308 - omitting tweaks to configure)
+
+commit 3d9ddb41e263bc1a78f9f9440b8d4ad4f86c82e1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 10:36:18 2012 +0100
+
+    Fix typo
+    Backport of 5b702b024b60176d7f5699b92e55da50a8deae71 from V5-6-patches
+
+commit 0d35c609564b66a1ffe81556d37adf0503c389ce
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 10:15:08 2012 +0100
+
+    Provide missing definition of NETSNMP_PRIo
+    (used in agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c)
+
+commit a79141a419953d010a6989e8b88f4df127394d38
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 09:19:26 2012 +0100
+
+    Header fiddling for FreeBSD,OpenBSD,Dragonfly
+    Backport of f7b0de1518002c6e8f9b94ef3deb8882e1e9338e from V5-7-patches
+
+commit adf74bf753d3970357afd633803256241d9c7b87
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Apr 2 08:20:46 2012 +0100
+
+    Fix IPv6 TCP & UDP tables, *BSD support (including OpenBSD)
+    Backport of commits 5cd1573625471c0583e9087aec6802b77157d5a2
+      and 50d73f0d56fe22c590530b3e305d41dcdac3ce00 from V5-6-patches
+
+commit d9555acb9f47c3aa8fde4bc20a44d7ca6181a8a9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sun Mar 25 18:48:12 2012 +0000
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid dangling pointers (based on patch 3503259)
+
+commit 82a8b47ee96e5d29a2b7ac3ca00722d737d5b479
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:31:56 2012 +0200
+
+    Running autoheader / autoconf
+
+commit 9ca8d939ab393306a1d0f146c9cb70ea0cb19d49
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:30:38 2012 +0200
+
+    Running autoheader / autoconf
+
+commit cecd4869deb68f3d4c71e768d5b40dd576446925
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Thu Mar 29 22:29:31 2012 +0200
+
+    Running autoheader / autoconf
+
+commit a1a4513bd3e4e614200f6db5a02f61d6c8eefb32
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 28 09:47:45 2012 +0100
+
+    Doxygen-style documentation fixes (backport of git commit c09903a42e9d97331fd9e48ee831a85afdf9c70a)
+
+commit 9bdbcca122c37da304fc6aa6939729475f90f5fd
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 28 09:30:49 2012 +0100
+
+    Doxygen-style documentation fixes (back-port of GIT commit c09903a42e9d97331fd9e48ee831a85afdf9c70a)
+
+commit 1f4a829b18275e4956ca91e5ec370df015f06133
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 27 21:41:24 2012 +0100
+
+    CHANGES: snmpd: PATCHES: 3495697: Store persistent snmpTarget table changes
+
+commit 1f75f377d0db01754c0c161dc44373081beef520
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 27 21:14:06 2012 +0100
+
+    CHANGES: FreeBSD: PATCHES: 3489387: Install FreeBSD 10 header file (plus other missing versions)
+
+commit 3d72c9e78f2ad817c9d1d82977327bbb20d63ab9
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 27 21:06:31 2012 +0100
+
+    CHANGES: snmpd: PATCH: 3487867: Don't skip missing ifXTable entries (ifConnectorPresent FALSE)
+
+commit 12906578ab30cf776d080c0ef3025b30334d7655
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 16:17:45 2012 +0200
+
+    DISMAN-PING-MIB: Fix even more memory leaks
+
+commit ccfd5ca6fe10313d6181d24bbb1797825a97da10
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 15:51:16 2012 +0200
+
+    DISMAN-PING-MIB: Eliminate duplicate code
+
+commit 9fda2668722f08ddbfdd67a2239d8b021db64a83
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 15:48:46 2012 +0200
+
+    DISMAN-PING-MIB: Write a loop as a loop
+
+commit cbc18eb763ba6df69ef70668a54d75bf35e79503
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 15:24:08 2012 +0200
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix more memory leaks
+
+commit c7725192478aec018fb4aefa60946e04a406c00c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 13:43:24 2012 +0200
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid reading freed memory when deleting a row from a table
+
+commit a6be739566f310d7441fd7f54989e39446f7a143
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 26 13:42:28 2012 +0200
+
+    Extend DISMAN-PING-MIB test
+
+commit 8a9b57291453cb8aec28e766c594701ed19c4fc6
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 26 21:03:41 2012 +0200
+
+    Fix for DragonFly 3
+
+commit e5c9a32f79eac2e85527c9cf05087cdae9b35a6c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 26 20:59:53 2012 +0200
+
+    DragonFly needs _KERNEL_STRUCTURES to compile ipv6 code
+
+commit cd43bc09a39bd97ff5e719a2ce232ce424600a65
+Author: David Imhoff <dimhoff@users.sourceforge.net>
+Date:   Sat Mar 24 15:47:17 2012 +0100
+
+    CHANGES: snmplib: PATCH 3510454: Allow the use of 0.0.0.0/0 as alias for default
+
+commit e2fc15f9e5a6e3e36be5f489601cbf6bf731917f
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 24 15:21:38 2012 +0100
+
+    Fix TCP state values for DragonFly
+
+commit 432fe3ddf54f2c98f936959469cb9b014d599f06
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 24 15:10:52 2012 +0100
+
+    Require perl to do pass_persist test
+
+commit 37d2770cf50c98023eeba90e25d372bff7316ada
+Author: Niels Baggesen <nba@user.sourceforge.net>
+Date:   Sat Mar 24 15:06:40 2012 +0100
+
+    Fix TCP state values for DragonFly
+
+commit 86a948d8691e881d55591dcabddc2739ce72b30e
+Author: Niels Baggesen <nba@nba-linux.sb.statsbiblioteket.dk>
+Date:   Sat Mar 24 15:01:37 2012 +0100
+
+    Properly find pass helpers for testing.
+
+commit fe26a3c4f29f046bf65ed52e9d94054b675fbc4b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 09:04:42 2012 +0100
+
+    DISMAN-PING-MIB: Limit source code lines to 80 columns
+
+commit 745bafcdcc9c8e84616d4e274db2a384bf234da2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 08:55:05 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Make ping implementation independent of ntpd clock jumps
+
+commit da6925e6763cadbe02f4a8bbfe68a362e535ad5e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 10:38:36 2012 +0100
+
+    CHANGES: testing: Add testing/fulltests/default/T154dismanpingmib_simple
+
+commit fa606dd7ca6aff9308d4e8b01bbcde148f441271
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:49:21 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Make pinging local interface addresses work
+
+commit 617a83ba799575c84c66f6b1c480ef633161a64c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:28:46 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix a socket leak triggered by pinging a remote host
+
+commit 625f55c272ec6281e38d8e30eb53fd51516b00ae
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Mar 22 09:54:55 2012 +0100
+
+    DISMAN-PING-MIB: Convert a dynamically allocated variable into a stack variable
+
+commit b48f19ad4b4aa68c3e16e2a72df37b9c0cd36c4a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 16:24:07 2012 +0100
+
+    DISMAN-PING-MIB: Add more debugging statements
+
+commit d74cb3966175892562f5e3a9b1683acba2c22e07
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 11:45:18 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix several memory leaks
+
+commit 0b1a77674678cc9a15be3e7700d3cef650ed02c7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 12:00:30 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Do not send the contents of the stack over the network
+
+commit 139023cd3ab51631cc10e2866d71abcf99ae4c1b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:56:07 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Don't call exit() upon memory allocation failure
+
+commit 169b6aaa7b61827cc1ad0b3aeeae3a7229dd25d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:53:26 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Fix IPv6 socket leak in error paths
+
+commit a0be32ad053a71fa96134d55e542bb07d4f0297d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Mar 20 11:43:46 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Avoid that host name resolution failure causes a crash
+
+commit bf9bff64556787d766ee2ef2d578afb920719f3a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Mar 21 08:51:55 2012 +0100
+
+    CHANGES: snmpd: DISMAN-PING-MIB: Convert printf() statements into snmp_log() and DEBUGMSG()-statements.
+
+commit 5d74c01245523a9d8db1eda27d1efae2ebc104fb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:40:02 2012 +0100
+
+    New MIB: VRRPV3-MIB
+
+commit 5b38f062b99b6ef36708e2c7de4965a3192612e9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:34:48 2012 +0100
+
+    For safety, sizeof the right variable in memcpy
+
+commit e5f82782da05efa7c0e6dc2bf5a41ee11868f469
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:33:21 2012 +0100
+
+    Fix for hrSWRun data for FreeBSD
+
+commit 8327565e823270d10a4504568edbe5b5ae323a55
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:31:54 2012 +0100
+
+    Clean up variables for OpenBSD/NetBSD
+
+commit 170f6f027bf4f9174b7073530da4d07f400bba58
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:28:58 2012 +0100
+
+    Move declarations in front of statements
+
+commit dbb4573b69fae85cdc931b2892b5ce4e5b16b321
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Mar 21 18:23:36 2012 +0100
+
+    Require kernel_netbsd for NetBSD6
+
+commit f11681f15aad7d9a52fa29812ecbb507f1b7fe24
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 21 12:36:38 2012 +0000
+
+    Check for old tarballs (and unpacked distributions) before starting.
+    These can confuse steps such as "make dependcheck", that do a 'find'
+    on the current tree, and would descend into such unpacked source trees.
+
+commit 470dcd4b6c3ff11ff0a3532a7340a56cffd69098
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Mar 21 12:32:13 2012 +0000
+
+    Don't run "make docs; make mancp" if there's no Makefile present
+
+commit c9ac420343e16df2b7065f5bf2790df44e247fba
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 20 10:26:10 2012 +0000
+
+    Allow distribution as part of normal Net-SNMP packages.
+
+commit 5999f60c57723f23f3c254af57fdb10af301a8eb
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Mar 18 19:03:08 2012 +0100
+
+    Regenerate
+
+commit 275d204036a607e3df50e8447d4bc755e9db02fd
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Aug 28 21:29:03 2011 +0200
+
+    CHANGES: building: Make it possible to use --disable-applications/--disable-agent together with --enable-minimalist
+
+commit bdccc875710295aacf50f71eb1c1d2ee97f336fe
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Mar 16 20:10:58 2012 +0100
+
+    Do not declare the local variables for opaque_special_types unless that option is set.
+
+commit b80a67da052adca1b5a644db83a782e15c2237c3
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Mar 16 19:50:03 2012 +0100
+
+    Check that the data exist before trying to read it
+
+commit efae86bba5962491d42b77b935191a3eb25dd939
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Mar 14 01:05:33 2012 +0100
+
+    Partially revert "Merge remote branch 'origin/V5-7-patches' into V5-7-patches"
+    
+    Commit d35a1860217e723e4f866dd98ef6621665934c4a accidentally reverted
+    
+    4a2e5bcd56cd2afb36eb15d754e2fee888dd50c0 (hrh_storage is a proper replacement for hr_storage)
+    0dd1e54557d1ba498b55d017b0a93e8ccf9bd522 (CHANGES: snmpd: UDP-MIB: Report the proper address in udpLocalAddress)
+    5116d48378ecf03e722f3010ad47bf22a3fbcb8c (Reduce scope of prefix_val such that the compiler doesn't warn about an unsed variable)
+    10f566f4d4cbb3e205023c23669289e4bfd089cb (perl/SNMP/SNMP.xs: Fix a compiler warning)
+    
+    and part of
+    
+    6e74d64f85a59d50e461db4c34ac76f9de468bfb (Avoid using grep options -q and -w because grep in Solaris)
+    
+    This reverts those reverts.
+
+commit aaedd59cc2da701527dc2d261d4e9f85f16e7504
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Mar 11 20:57:38 2012 +0100
+
+    Allow make test where the source path contains the string Net-SNMP to succeed.
+
+commit 4b94d796918a4eeae68ab21aa53d444a8b5c2921
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Mar 9 08:04:59 2012 +0100
+
+    Unbreak compilation on FreeBSD 4
+
+commit 10fe6b83324ad37d18b937cc8c6de94de534d035
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 8 13:04:07 2012 +0000
+
+    version update for 5.6.2.pre1
+
+commit e1122edc1a5fe7976b065044134d39e7db5985ea
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 8 12:43:19 2012 +0000
+
+    version update for 5.6.2.pre1
+
+commit a613d3a834912206d1ba5971e441a3ea6b36af23
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 8 12:33:03 2012 +0000
+
+    make depend for 5.6.2.pre1
+
+commit 0ef34e6519dfcb82c97df8427547c08dcf81e69a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Mar 8 10:11:30 2012 +0100
+
+    CHANGES: snmpd: Fixed snmpd '-d' option.
+    
+    Now it dumps packets again.
+
+commit 8e69742f143e4fc11196e5b2ed66c8f7f53fd02f
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 6 09:24:21 2012 +0000
+
+    Version number update: 5.6.2.pre1
+
+commit c4e00b8c3e1010cdcab5e6c02d60d75df9c6dcf2
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Mar 6 09:24:05 2012 +0000
+
+    version update for 5.6.2.pre1
+
+commit 39490104a3ab58235aace2f9d871c266dc4485ee
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit 4a2e5bcd56cd2afb36eb15d754e2fee888dd50c0
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 5 20:59:38 2012 +0100
+
+    hrh_storage is a proper replacement for hr_storage
+
+commit ce85832932ccd916c42319114c40885a466a9d0e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Mar 5 20:56:40 2012 +0100
+
+    More fixes for Solaris sh
+
+commit 0dd1e54557d1ba498b55d017b0a93e8ccf9bd522
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 15:08:26 2012 +0100
+
+    CHANGES: snmpd: UDP-MIB: Report the proper address in udpLocalAddress instead of 0.0.0.0. Makes test T160snmpnetstat pass again. Fixes a bug introduced in commit c76fb96f65e33ba2fd212a921e8c386155ee5c7a.
+
+commit 518917e9f39f7a9d3c3bf3a865e8ac0e3026d600
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 14:04:54 2012 +0100
+
+    snmplib/snmpUDPDomain.c: Fix source code indentation
+
+commit 2651909ccceabfcfadaf942c02450e28fe837dc9
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Tue Nov 9 12:04:04 2010 +0000
+
+    Passes now on MinGW too.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19653 06827809-a52a-0410-b366-d66718629ded
+
+commit e41f115e40304c941ba17d67e24710722d90741b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 13:39:17 2012 +0100
+
+    testing/fulltests/support/simple_eval_tools.sh: Avoid using grep options -w and -q because grep in Solaris' default path doesn't understand these.
+
+commit 5116d48378ecf03e722f3010ad47bf22a3fbcb8c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 10:47:20 2012 +0100
+
+    agent/mibgroup/ip-mib/data_access/ipaddress_linux.c: Reduce scope of prefix_val such that the compiler doesn't warn about an unsed variable if it isn't needed.
+
+commit 6e74d64f85a59d50e461db4c34ac76f9de468bfb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 09:22:31 2012 +0100
+
+    testing/eval_tools.sh: Avoid using grep options -q and -w because grep in Solaris' default path doesn't understand these options.
+
+commit 10f566f4d4cbb3e205023c23669289e4bfd089cb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Mar 5 10:47:39 2012 +0100
+
+    perl/SNMP/SNMP.xs: Fix a compiler warning
+
+commit 44aa265891cd563f7f4114ef25dcf7aaf3b14e9a
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit dae4e16be86117861f63d1a2f981ad361418f5c6
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit 28f6226f2e228b8ca248489735f86502b2cce0a1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Mar 5 09:06:52 2012 +0000
+
+    Mark the changes make as part of the release process as specific to
+    the particular branch being released.  Version tags, changelog entries
+    and the like shouldn't propagate to later branches.
+
+commit 40022a697958259ccfbb3fed44eb3c472f5e837e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sun Mar 4 10:37:41 2012 +0100
+
+    Solaris sh does not understand "test -e"
+
+commit 773af0c42e077bebdaecf1c0caf393285a7688f1
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 3 17:19:30 2012 +0100
+
+    Clean up nsrollup complications
+
+commit ee71049c3e21c1d0e3424297136652bbe0e39d85
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Sat Mar 3 16:49:41 2012 +0100
+
+    mibgroup/icmp.c: adjust ifdefs to make it compile on BSD's
+
+commit ce9600361e665dde17af9d8ab16d7ce85dc05643
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:39:55 2012 +0100
+
+    dot3StatsTable has bugs :-(
+
+commit dffacf6fa0755e1700cbac25b844185abd807a0a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:38:10 2012 +0100
+
+    passpersist test needs /usr/bin/perl
+
+commit 8726995c7a8aef674c4f164b1871c37bbdcdad50
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:36:58 2012 +0100
+
+    grep -w fails with OpenBSD and Solaris 10-64
+
+commit 1eb4745b23cc3a839864e7f6ea28355b0566eb67
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:35:49 2012 +0100
+
+    Solaris needs /usr/xpg4/bin/grep to understand -q
+
+commit 9954b4b741fd8c63d6128bd0527298c8e4e989fc
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:34:45 2012 +0100
+
+    Make sure we have the proper srcdir for out-of-source builds
+
+commit 78369002be2711f0aa876b64a4e10b090cc241cd
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:33:31 2012 +0100
+
+    Not all make versions define $(RM)
+
+commit 94245b29a3cda89475c6eab5d9493c6657ff38e3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:24:24 2012 +0100
+
+    Make autoconf 2.68 happy
+
+commit 44acd6c285fb5614b4c9611b1abdeca9dd28e4bb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Mar 2 21:12:47 2012 +0100
+
+    Fix spelling of mib module fsys_getfsstats
+
+commit 1fa1fee3693f67b820223806b3d73afd4c50ec18
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Mar 2 01:37:20 2012 +0100
+
+    Silence a clang warning.
+
+commit 93263b98a5db344cf2c4d489c43971e7b29cdb03
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 13:37:20 2012 +0000
+
+    version update for 5.5.2.pre1
+
+commit 5a175428b973d2ea8553e29fecf94cf1566aa858
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 11:48:18 2012 +0000
+
+    version update for 5.5.2.pre1
+
+commit 364276a1c5aa66caa23eb5b7f111fdeb5af71fa7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 11:45:10 2012 +0000
+
+    make depend for 5.5.2.pre1
+
+commit 73598340172eff75729a6d57192b8171d5bbf00e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 10:42:56 2012 +0000
+
+    Version number update: 5.5.2.pre1
+
+commit f3214402672ca199fd531e66122bf96c4d9a4eb7
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Mar 1 10:42:39 2012 +0000
+
+    version update for 5.5.2.pre1
+
+commit 2e74acb6f19e4729cede0ab43e931961cb23aaea
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Mar 1 09:18:39 2012 +0100
+
+    CHANGES: Bug 3152841: Do not install the util_funcs subheaders that were removed in 5.7
+
+commit b7109646b95a70713d1ad991d41bccd57c0bb3eb
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Mar 1 08:48:48 2012 +0100
+
+    CHANGES: Bug 3152841: Install util_funcs subheaders introduced in 5.6
+
+commit 432cbb7a5501ab90d66d0a83e731e7343bc04b37
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Feb 25 10:13:15 2012 +0100
+
+    Correct typos
+
+commit 6a6c9bbc7584f196a1185cc1935204f1206811ed
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Feb 29 08:55:35 2012 +0100
+
+    CHANGES: Bug 3152841: Install util_funcs subheaders
+
+commit d515e2a6e4c2a1c4d84734cc7b2d0b2fc5a894ad
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 15:56:21 2012 +0000
+
+    CHANGES: snmpd: PATCHES: 3487919: Fix compilation when caching is disabled
+
+commit af8368ed8898a78d0868b47af46bc9db07d1c764
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 15:50:56 2012 +0000
+
+    CHANGES: snmplib: PATCHES: 3414773: Encode integer value using ASN_INTEGER
+
+commit 19e2715807fe06fd0baedf88165011aee933e755
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 14:05:34 2012 +0000
+
+    CHANGES: man: BUGS: 3490708: Clarify use of common command-line options
+
+commit 65f7962f932c9b75c5bbbb047d1e26ae60978e53
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 12:23:34 2012 +0000
+
+    CHANGES: snmpd: BUGS: 3489631: Fix incorrect handling of UCD monitoring flag
+
+commit ac166051b6a092dd4a594326ec85e2f699b62547
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 11:57:41 2012 +0000
+
+    CHANGES: testing: BUGS: 3474590: Don't match underscores within the source root filename
+
+commit 879bf7079d34fa46f6fcf54a01c8500beaece59a
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:44:41 2012 +0000
+
+    CHANGES: snmpd: BUGS: 3460364: Fix use of block factor when detecting error conditions
+
+commit 034f1c572f683ea428583074471e5d5d13b51837
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:22:20 2012 +0000
+
+    Skip SET-based tests when configured using --enable-read-only
+
+commit 36423e210bfb65ef121c6a66aec438c7c237d3df
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 10:03:25 2012 +0000
+
+    CHANGES: BUG: 3454168: configure: Fix building with --enable-read-only
+
+commit eed0bcbc43fea18259f0f63b2081b6d10535a052
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Feb 28 09:27:11 2012 +0000
+
+    Skip SET-based baby-steps when compiled with --disable-set-support.
+    Inspired by bug #3454168
+
+commit ec6a23030e5a2072c19c18c1d9c124387da56b7b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 27 18:42:58 2012 +0000
+
+    Add -lrt to NETSNMPLIBS such that clock_gettime() can be found
+
+commit f13320500294bb240f63c6dd7d2e9a2208eb740d
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Feb 27 16:52:51 2012 +0000
+
+    Skip SET-based tests when compiled using --disable-set-support
+
+commit c4276b6232c29145c039884e6b5a6b6da4b93837
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Feb 27 15:54:45 2012 +0000
+
+    Omit SET-related code when compiling with --disable-set-support (inspired by patch #3424930)
+
+commit 01c930edcc25700d6b5fb0376f55a26425e13fb0
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Mon Feb 27 15:17:22 2012 +0000
+
+    Omit SET-related code when compiling with --disable-set-support
+    (inspired by patch #3424930)
+
+commit 9484d83203c4e2d820416be665fa833aa70444d2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 24 14:00:32 2012 +0100
+
+    Rework commit b4a19505a05816e94e01de97bf99ac37fcdc6d23.
+
+commit 2b7f13495228635d816e58b2174dc124dd0cf39f
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Fri Feb 24 07:43:22 2012 -0800
+
+    set MERGE_AUTOEDIT before merging to avoid the future git 1.7.10 forced msg
+
+commit e1b910b0be9343586ae9edba6f46040af315fcdd
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 10:27:54 2012 +0100
+
+    CHANGES: snmpd: init_agent() + init_kmem(): Return an error value instead of invoking exit() if access to kernel virtual memory is denied
+
+commit 463eed2120f9d191bc22673496a49e8174664e4b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 10:03:31 2012 +0100
+
+    Remove obsolete symbol NETSNMP_EXIT_ON_BAD_KLREAD
+
+commit c36ab71a4e096f16cc5a55533f080c9a94009914
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 08:53:56 2012 +0100
+
+    CHANGES: FreeBSD: snmpd + apps: Sending UDP packets works again for non-root users
+
+commit edebddba930f8b1472fa0bd20fc413ef8cf464a2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Feb 21 11:31:46 2012 +0100
+
+    testing/RUNTESTS: Fix a bashism
+
+commit b4a19505a05816e94e01de97bf99ac37fcdc6d23
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 20 16:58:47 2012 +0100
+
+    Fix compiler warnings about %ld versus time_t on systems where time_t is a synonym for long long instead of long.
+
+commit d8978ecc8211be7c1e7905f1e215bb06ded266b6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Feb 21 12:32:25 2012 +0100
+
+    Fix snmplib/transports/snmpSocketBaseDomain.c file header
+
+commit aa766d196e5287f6ca79b58a345b024260aba354
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 20 17:07:13 2012 +0100
+
+    IF-MIB: do not trigger undefined behavior (>> 32 of a 32-bit variable) when updating a counter and ifi_ipackets is a 32-bit variable
+
+commit c3fb6dd9e6b99e9542493188987871fc5017cb3c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 23 09:45:45 2012 +0100
+
+    Fix a compiler warning on systems where mode_t is unsigned
+
+commit f8a3ef0d3d4e530279900101049b8de98a44a6fb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:48:52 2012 +0100
+
+    CHANGES: snmplib + snmpd + snmpwalk: Avoid that system clock changes (e.g. by ntpd) affect code that needs relative time
+    CHANGES: snmpd: Make sure that the range of the SNMPv3 variable snmpEngineTime is 0..2147483647 on all supported systems instead of 0..42949672 on some systems (i.e. wraparound after 497 days)
+    CHANGES: snmplib: Add netsnmp_get_monotonic_clock(), netsnmp_set_monotonic_marker(), netsnmp_ready_monotonic(), netsnmp_get_agent_runtime()
+    CHANGES: snmplib: Deprecate atime_diff(), atime_newMarker(), atime_ready(), atime_setMarker(), marker_tticks(), netsnmp_marker_uptime(), netsnmp_timeval_uptime(), timeval_tticks(), uatime_diff(), uatime_hdiff() and uatime_ready().
+    CHANGES: snmplib: Change the names of the struct timeval members of data structures that were used to store a wall clock time but that do now contain a monotonic clock value
+
+commit c19760f3333c92fac5d50e9768cdf939218bc487
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Feb 15 09:45:03 2012 +0100
+
+    snmplib/snmpv3.c: Fix source code indentation
+
+commit a6db239945e195de5a90fa183700b27a6ecb28d3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Tue Feb 7 00:11:14 2012 +0100
+
+    Fix possible memory leak from recent declarations patch
+
+commit 0fbbb9a9e2906a7af956957061d485874462aea9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 6 20:43:04 2012 +0100
+
+    Do not mix declarations and statements
+
+commit f308d5bafb05d78ed4030c4ecff324b6cbda680f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 15:25:30 2012 +0100
+
+    Fix two compiler warnings in agent/mibgroup/disman/ping/pingCtlTable.c
+
+commit 46f0fc1b7fc26a225763bc65cca520a1c59f0251
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Feb 6 20:54:32 2012 +0100
+
+    sendmsg does not like IP_SENDSRCADDR if addr is INADDR_ANY
+
+commit debac498fe8410110107a2fe64f8afb748edaa07
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Feb 6 16:48:09 2012 +0100
+
+    CHANGES: added OCFS2 (Oracle Cluster FS) to hrStorageTable and hrFSTable
+
+commit fafc99cd89e73ec7e00bf7360d0b4fa61944a4f4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 11:18:34 2012 +0100
+
+    Simplify calculate_time_diff() and calculate_sectime_diff()
+
+commit 7af2013de8bf1b379c076db4e104508e17874d3e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:55:58 2012 +0100
+
+    Fix order of feature #ifndef and Doxygen comment block
+
+commit bbd67f63530f5ef0bfc948fc58dfe6a93f8f8679
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 15:25:30 2012 +0100
+
+    Fix two compiler warnings in agent/mibgroup/disman/ping/pingCtlTable.c
+
+commit 42a66aeff25b9e9ef635a404ad2f5212f9e8cf0d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:47:54 2012 +0100
+
+    Rename two function arguments
+
+commit 3fe72b3b99b7e4b2b982363dfc4f2d8d13f40592
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 13:49:22 2012 +0100
+
+    Convert snmp_select_info() documentation to Doxygen format
+
+commit e9db266ae48d05a7a6cb5d71b4bdea7ad808ef5e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 11:17:57 2012 +0100
+
+    CHANGES: snmpd: Add netsnmp_get_next_alarm_time()
+
+commit d08044cb9e5702fbf549e14425f42794259d8a21
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 09:38:07 2012 +0100
+
+    CHANGES: snmpd: Add netsnmp_get_agent_runtime()
+
+commit a05c27c2711cb41582a3b4c31e38b0e93530b62d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:51:33 2012 +0100
+
+    Fix spelling in a source code comment
+
+commit 910d7b0d99183609b9529b04c3f29330eb661021
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 14:38:12 2012 +0100
+
+    Replace netsnmp_timeval_uptime() by netsnmp_get_agent_uptime()
+
+commit 43a83f6c6a96cc2316b70eecacf127eb6913c7a7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Feb 6 11:19:15 2012 +0100
+
+    Use the assignment operator instead of memcpy() for copying struct timeval
+
+commit 2fe579efb1cb3a74f82803ca323928f6b8e4b5c0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 3 14:04:02 2012 +0100
+
+    Make agent/mibgroup/mibII/icmp.c build again on non-Linux systems.
+    
+    See also commit 345a1e4254812cb9edc1d274491b76681a9dba1e.
+
+commit 881de6ab7355277a5c116a008fbe513293b05039
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Feb 3 10:08:21 2012 +0100
+
+    Fix compiler warnings triggered by the Rmon MIB implementation
+
+commit 4629933c0d3b3f9f4ba583534f79a37fb9633817
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 20:05:31 2012 +0000
+
+    More compiler warning fixes
+
+commit e9b5a3dee6f9afab8b90a29392040632b075ad7a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 16:56:55 2012 +0100
+
+    Use SNMP_MIN() instead of min()
+
+commit ae452c77b411139d6b5800ffcf88d48e9b4792a8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 15:23:38 2012 +0100
+
+    Restore commit dbb8795a7df595f0603f2ec61704799f4c482667.
+
+commit c7d11fa00f9995ddb9fe3d4994a3e9790da2e189
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 15:18:40 2012 +0100
+
+    Restore commit dbb8795a7df595f0603f2ec61704799f4c482667 partially.
+
+commit 00fd62720ec454f5a690de4feba08223cfb2c3f8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 14:48:44 2012 +0100
+
+    CHANGES: snmptrapd: Avoid crash during shutdown due to invoking perl_destruct(NULL)
+
+commit d9e229d81abeaf191ef2ccb077842885c230d622
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 14:47:41 2012 +0100
+
+    Remove a superfluous declaration
+
+commit 1e2e2af6cae830f381e87a244d029eb86bf3fcce
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 13:20:37 2012 +0100
+
+    perl/SNMP/examples/pingmib.pl: Add error checking
+
+commit 241a141e31f1684fc6cf70cc4a00cce636fd3526
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 11:28:37 2012 +0100
+
+    Make configure-time EVP_MD_CTX_create() detection work on the 5.4 branch.
+    
+    See also commit 46eac02e9a27bf4f3068e795cab891f05a848870.
+
+commit 6d9d14feaaa2d0fec68b4d158944d32cb04ff1bc
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 11:12:00 2012 +0100
+
+    Revert the changes that break the build on the 5.4 branch from commit dbb8795a7df595f0603f2ec61704799f4c482667.
+
+commit 8abe49e30c97c8983e83b45a35c716fe91f66bea
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Feb 1 11:56:58 2012 +0100
+
+    Fix several compiler warnings in the DISMAN MIB implementations.
+
+commit f9fb0a533375e14dc370025a0b2fbc761bf27be6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 09:56:02 2012 +0100
+
+    Revert "HOST-RESOURCES_MIB: fix a compiler warning" because it's wrong.
+    
+    This reverts commit aa6b79bc124a7b7a885d7e5035ab06aa3ecef613.
+
+commit ca4a4fe25efd2714f8f1961b97856616563f42c9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Feb 2 10:21:49 2012 +0100
+
+    .gitignore: Add python/build
+
+commit 13ada56558b44e28d1355c0dce1d921f3746d548
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:53:49 2012 +0100
+
+    Revert "Revert "Fix format specifiers to avoid warnings"" - there *is* NETSNMP_PRIo in V5-6+ branches
+    
+    This reverts commit aa528bd22c7493ca8d67e678fbf615ca0f63ea6d.
+
+commit aa528bd22c7493ca8d67e678fbf615ca0f63ea6d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:13:18 2012 +0100
+
+    Revert "Fix format specifiers to avoid warnings" - there is no NETSNMP_PRIo in V5-4 or V5-5 branches
+    
+    This reverts commit 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b.
+
+commit 2fb99be9aa86a6ca349b86d4ef8bc726ed9f2a82
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:58:35 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit e5c35589e0bf416bfd036bd468f42aaeab25e788
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:55:56 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 345a1e4254812cb9edc1d274491b76681a9dba1e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:51:26 2012 +0100
+
+    Fixed error handling in init_icmp().
+
+commit c303549a59fa8c2f20a9d8bf1e985fbc8abde6a8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:46:29 2012 +0100
+
+    Reworked _register_extend() error handling.
+
+commit 9c20e27a7026fc030da3b328b9a2e1b4f36670cd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:21:28 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 22fd0bfc2df0e1f6020dc3c50a753ddf28a4599c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:20:22 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 5d61e57baf580c78252c0abb0098c07bb05af17c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:17:05 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 3c3eeae80d796f27597c901e7ff2046c769ef4b8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:08:09 2012 +0100
+
+    Mark rowreq_ctx as freed so next iteration allocates new one instead of reusing the freed one.
+
+commit af9abd53c2337c90a691a7b044ff3f97c1003161
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:05:10 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit cf9465f54181e62e21a9b10219131107a3d2ebf6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:04:06 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 7871f2b09b8b52f34a9e57784266459053165bcb
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:02:50 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 7a37f33d310c9598607bc323d9bdbf91aaf72c95
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 15:00:51 2012 +0100
+
+    Don't touch reginfo when registration fails - it has been already freed.
+
+commit 3e45f7026249e45350edaac85337423aa0e95d8b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 14:13:18 2012 +0100
+
+    Revert "Fix format specifiers to avoid warnings" - there is no NETSNMP_PRIo in V5-4 or V5-5 branches
+    
+    This reverts commit 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b.
+
+commit 61936762e641c18db75aa5125a33e776c677adc5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Fri Jan 20 11:13:39 2012 +0100
+
+    Fixed freeing reginfo twice on error in a template and all its instances.
+
+commit 496437430415fbafeb1ccd4774f1ca00d627ea1f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 11:04:13 2012 +0100
+
+    python/netsnmp/client_intf.c: Fix compiler warnings introduced on V5.6 branch
+
+commit 5b4a24cdcee1bc3d82633ccafeb96fce95349c59
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 09:22:27 2012 +0100
+
+    unit tests: fix a 64-bit compiler warning
+
+commit cbf1c91baf7191be5fa27d81bcf8714331a2c12f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 09:20:42 2012 +0100
+
+    Use snmpTargetParamTable_dispose() to free a struct targetParamTable_struct.
+    
+    Fixes a bug introduced in commit dbf26a05a04ef24c47346e5adda48e338498e71f.
+
+commit aa6b79bc124a7b7a885d7e5035ab06aa3ecef613
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 20 09:20:31 2012 +0100
+
+    HOST-RESOURCES_MIB: fix a compiler warning
+
+commit 3a76b43e11fffada632fccb848ab500e876ad48b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 18 16:21:05 2012 +0100
+
+    CHANGES: python: Avoid that an SNMP set with UseEnums enabled causes a segmentation fault
+
+commit 84dec9fa92b0aa2d58eb7020330f4f98e5154321
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 18 14:38:21 2012 +0100
+
+    python/netsnmp/client_intf.c: Fix most compiler warnings
+
+commit 38cf218c3f1a727786e227a5d3fb186fd0f1a15f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:50:13 2012 +0100
+
+    Fix a typo
+
+commit 454122244122bfdb6f67cab31256d7b46372e9e1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:30:18 2012 +0100
+
+    Free tmStateRef on errors.
+
+commit 0119022daa59c73bfec0da2386d0628f14e6dab7
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:09:12 2012 +0100
+
+    Free fingerprint when it's not needed.
+
+commit 0e84cd303a08267dec78f6d81c9bb07e3d83a11f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:48:26 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 63dc846a7949ce697b3e28c543dc1105e63a2250
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:08:28 2012 +0100
+
+    Free certificate fingerprint.
+
+commit ce1f284a63eb81644b3e32606cbe39b67e1dff2a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 14:37:09 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 7e21413ca6f2efd7a3afb62c62b644881b8bd1e7
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:46:30 2012 +0100
+
+    Properly allocate and free engineID.
+
+commit 34c962882607c3638a2fa25a2ac531492d71c787
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:37:25 2012 +0100
+
+    Free locally allocated tmStateRef.
+
+commit f57ae531dc5658abcd65b1627615525238d16d2d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:20:24 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 536bc57556c3141561ea4a194810b16290a691ee
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:15:47 2012 +0100
+
+    Added check if the function actually does something.
+
+commit a0777d307dbcaf219ee0184a0fbab9d4e5d6aa0b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 13:01:45 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 8b97a71c8e7959428eb4d4e8d90e9096d43ff09f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 12:57:26 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 2c1507c22030549ae660c0e211fbdc5c75ec5c57
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 12:53:47 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 65f2b7bcd4fe03906aa1a115ab60a89b8ae933d5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 19 12:51:36 2012 +0100
+
+    Close open files on error.
+
+commit 0e52e4f66d44766bea37473556c78e5219b95461
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:45:33 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit dbf26a05a04ef24c47346e5adda48e338498e71f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:42:17 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 748da84b1fd654e338bc701e8f9e5da229187f1c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:32:04 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit eb217146fd54036ea4202bfef78bbf774d7e382d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:23:10 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 9ba38eec66138ec1f613ea8d04e158130c7121bc
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:18:55 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit d9d938d3018c27f53277bc5e59578500490c1d09
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:16:38 2012 +0100
+
+    Close open file on error.
+
+commit d5e817d5bd518d9ac6a0d60e0e141dd64f27ad19
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:14:12 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 2ae68f059df9d74b074d12f59c1847466ed576cd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 15:03:17 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit a00f3d461121b545aed72ac12b2438791dcfc4ba
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 18 14:58:39 2012 +0100
+
+    Free previously allocated memory on errors.
+
+commit 59884bb4d35ad13747ffa6723436dca587a9ab77
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 17:09:12 2012 +0100
+
+    In above code, olength is checked, so let's check it also here.
+
+commit ba5d5292b04393b0c7d7d7ed961241929418c6e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 17:05:14 2012 +0100
+
+    Fixed dereferencing NULL.
+
+commit da2d6a7028a13b9edf3a5c84314d0f1feef76714
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:44:56 2012 +0100
+
+    Prevent dereferencing NULL.
+
+commit f88054a9b69b6de274f7a14a59b47323e5e4e4c6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:37:35 2012 +0100
+
+    Don't dereference context if it's NULL.
+
+commit 7c4d459e8f1f652cc2098c3d4c81de90a84ed710
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:30:09 2012 +0100
+
+    Don't deference NULL.
+
+commit fc19b7f33b587927d2a01e72d23d21b9b1696ab3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:25:26 2012 +0100
+
+    Don't close NULL file.
+
+commit 5e95ca6790076b788072a801ee7c82969d995bcb
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:17:09 2012 +0100
+
+    Prevent dereferencing NULL when a transport does not have f_fmtaddr.
+
+commit eed6f5f9b9ae54d2ceab67ad85adde1f6a8a21d5
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:13:13 2012 +0100
+
+    Prevent dereferencing NULL.
+
+commit 41cde68b5fa4b38d81450cf91e082cdfa825e7cf
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:10:10 2012 +0100
+
+    Check if a registration was really found.
+
+commit 5b72a40853876a186efcc0090a4e32c235b9c05f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 16:03:58 2012 +0100
+
+    Don't dereference NULL when difflen is SMUX_MAX_PRIORITY (which is highly unlikely, but...)
+
+commit fa6a912e41c5d0fd2a636894e86b6426c07375ab
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 15:37:44 2012 +0100
+
+    Check for missing value in setEvent.
+
+commit 410b71da425389fecc25d14f49f23753581576ad
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 15:28:41 2012 +0100
+
+    Dereference ereg only if it is not NULL.
+
+commit 185272d1a0b913774186f1b9135aeaf637ebed52
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 15:17:21 2012 +0100
+
+    As per above code, template_v2pdu can be NULL, so check it before dereferencing.
+
+commit 48e5ead3fd2c2b385df6972c67526ff6bdc30768
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 14:42:22 2012 +0100
+
+    Updated last fix to new error reporting style.
+
+commit f33d33615d6d85d0073726473c4146cbcdf11ced
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 14:30:07 2012 +0100
+
+    Fixed sigsegv when empty config line is parsed.
+
+commit b5df1eeb47ed3559b6f4d9ecccdb242126e6c992
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 14:11:58 2012 +0100
+
+    Fixed (highly theoretical) sigsegv when sp->securityEngineID is NULL.
+
+commit 6feed629a71899c113096959d8549dc1201e8f9a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 13:43:37 2012 +0100
+
+    Added NULL and len check just in case someone provides value = NULL and nozero len (-> NULL is then dereferenced).
+
+commit 355c5ab264af2a6020a1d8a923f80f11b942295e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 17 13:36:41 2012 +0100
+
+    Extend the NULL check, i.e. return if there is nothing to remove.
+
+commit ddd7948acad938cd42974505ddca4f0372116709
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 11:11:29 2012 -0800
+
+    update sparta's copyright
+
+commit 41256086a7a5041453419cfd6e562c7b55c56b0a
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 10:32:04 2012 -0800
+
+    pulled full copy of extractnews from master
+
+commit 625a70dbdfd9902da79efa293fe6d2ac8ccf2b2e
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 10:24:19 2012 -0800
+
+    update to change to the newer log generating/parsing
+
+commit 62e32b13089b29edcf276f615da67e4508fe7bb5
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Mon Jan 16 09:29:42 2012 -0800
+
+    conflicting merge from master for extractnews
+
+commit 70084da61d2bcbd2cf1ed81bdc3bf6794c2affb6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 13 11:49:16 2012 +0100
+
+    CHANGES: snmpd: DISMAN-SCHEDULER-MIB: Handle 32-character schedContextName values correctly.
+    
+    See also commit b3c4982542e0ab151fb3884754cdfbcb472da52d.
+
+commit 04bf3e288158ee880edf237e4007fee37d2044dd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:39:37 2012 +0100
+
+    Fixed endless loop when SSL_read returns error.
+
+commit c1526fccc0474c1db18caa9dbb833853cddde3cc
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:13:21 2012 +0100
+
+    Fixed a typo.
+
+commit a27aa19df283156c032c81eaee5e115859d38c17
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:11:32 2012 +0100
+
+    Don't replace 'rc' variable, it's value is needed outside the loop.
+
+commit 985dff2b0876d9483c414fccea3ef6bc63e14561
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:01:32 2012 +0100
+
+    Removed duplicate code.
+
+commit 2fd7818318e7a5dfe98f52ccf750c2a63e825ded
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 15:00:22 2012 +0100
+
+    Removed duplicate code.
+
+commit 15f21130ba33dc9afd164e52dfd74c9cec0e9232
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:58:14 2012 +0100
+
+    Removed duplicate code.
+
+commit 2a8a8f2ab7cd75826c5d41ec3cfd5ce3e9634cf3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:39:28 2012 +0100
+
+    remove dead code, 'cp' is always != NULL here.
+
+commit 38fd6378cc3275180f63b8d9b9a4072b3dabf8e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:25:06 2012 +0100
+
+    Fixed a typo.
+
+commit ebd92e19b10c0a38e17cde407864b45c26e17327
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 14:07:43 2012 +0100
+
+    Removed unnecessary if (value) check - value is checked few lines before.
+
+commit c5cacf5caf979d018ea6cae1c03b8fdf0b118dfd
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 13:44:43 2012 +0100
+
+    Prevent double free(), 'dirname' is already freed inside se_add_pair_to_list() if it fails.
+
+commit acdceb50ea66d6b323c74ee021fb77e810e4e7af
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 13:43:19 2012 +0100
+
+    Prevent memory leak when malloc fails.
+
+commit 17053e34cfe9a8ab395fb50f5c3f1dafc7247aeb
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Jan 12 13:32:57 2012 +0100
+
+    Fixed double fclose().
+    Linux man page for fclose(3) says: In either case any further access (including another call to fclose()) to the stream results in undefined behavior.
+
+commit a6641edb9cb74fc2236b42ce5554fc3329956552
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 15:22:34 2012 +0100
+
+    MinGW: Skip test T065 if not started from inside an MSYS shell
+
+commit a883ef1982f301b1485d227301674927330f5b67
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 11 15:14:53 2012 +0100
+
+    Moved debug oputput before return.
+
+commit 45751967287d97640efdcdf8e77e8d490939d8eb
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 14:17:18 2012 +0100
+
+    Convert strtoull() unit test into a Net-SNMP unit test
+
+commit 2c2fa48336a4f1f177c2991d6515d29f39533c44
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 13:50:44 2012 +0100
+
+    Convert read_config_read_octet_string_const() unit test into a Net-SNMP unit test
+
+commit 07c666f6cea27f2b2ab9bc08aed0cb6133fe3758
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 11 13:17:45 2012 +0100
+
+    Fixed commit 73a523e468277f6df2e984891313b8be8bce1921:
+    Fidex dereferencing key->info when key is known to be NULL.
+
+commit 3b686566296dd87bc42b7f1169daacdb3c45cc58
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Mon Oct 18 06:25:56 2010 +0000
+
+    Win32: builds again without warnings with MSVC 6.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19489 06827809-a52a-0410-b366-d66718629ded
+
+commit f3a7d1b09609dad649f58bbdb5b7e10d39b398c1
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sun Oct 17 11:04:06 2010 +0000
+
+    Follow-up for r19476: fixed a typo.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19478 06827809-a52a-0410-b366-d66718629ded
+
+commit 2de73bd365a381b9c353ca5230769eefb1ac71ed
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 11:42:42 2012 +0100
+
+    local/passtest: Remove an incorrect PATH= statement
+
+commit 699513f1238e0adce1f1cec98e0d147293fc5047
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sun Oct 17 09:25:51 2010 +0000
+
+    NETSNMP_REMOVE_CONST()-related cleanup.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19476 06827809-a52a-0410-b366-d66718629ded
+
+commit 6358dee72fb347e2600a0a7bd21f23270d3a00f6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 10:58:15 2012 +0100
+
+    agent/mibgroup/ucd-snmp/versioninfo.c: Add a comment
+
+commit 5396bfe032c8cbc73c8ff5d4b085ebada9f59846
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 10:30:16 2012 +0100
+
+    Replace strncpy()/strncat() by strlcpy()/strlcat()
+
+commit feb3af28dcae22015ae865a2e5dd8c416e9991d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 10:02:08 2012 +0100
+
+    Replace strncpy()/strncat() by strlcpy()/strlcat()
+
+commit b7e1aa255bae4a3453f9eca644a876634351f11d
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sat Mar 20 19:36:28 2010 +0000
+
+    CHANGES: libsnmp: changed the type of the fourth argument of netsnmp_set_row_column() from const char* to const void* such that no cast is necessary when passing another datatype then char* or const char*.
+    CHANGES: Win32: changed in_addr_t from u_int to u_long such that it matches the datatype of sockaddr_in::sin_addr.
+    Also, fixed several compiler warnings (mostly char * <> u_char * mismatches) and removed some casts.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@18345 06827809-a52a-0410-b366-d66718629ded
+    
+    Conflicts:
+    	agent/agent_registry.c
+    	agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
+    	agent/mibgroup/mibII/interfaces.c
+    	agent/mibgroup/ucd-snmp/disk.c
+    	apps/snmptrapd.c
+    	snmplib/snmpIPv6BaseDomain.c
+    	snmplib/snmpUDPIPv6Domain.c
+    	snmplib/system.c
+
+commit f47a3752849db075e6f2053b8595b7b792fb6462
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Fri Oct 15 10:56:09 2010 +0000
+
+    CHANGES: Win32: building: Builds now correctly with a 64-bit compiler.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19458 06827809-a52a-0410-b366-d66718629ded
+
+commit 02b6056df95da8b673034e39c2c7c386ed0f369c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 11:44:53 2012 +0100
+
+    Fix a compiler warning about casting away const
+
+commit a19865832fc77f4c048144d91a431b1e94d329f2
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Wed Oct 14 23:12:05 2009 +0000
+
+    CHANGES: apps, snmplib: PATCH: 2835577: identified by "Bart Van Assche": Replace SNMP_ZERO of arrays with a memset.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@17797 06827809-a52a-0410-b366-d66718629ded
+
+commit 67a3e2eccb95f9c9d0809efcbddcd866ee3062d5
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed Jan 6 14:27:15 2010 +0000
+
+    Fixed a compiler warning about discarding the const qualifier.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@17970 06827809-a52a-0410-b366-d66718629ded
+
+commit 3dcde2e8a595a527f06142c3b852de8433a1cf28
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Sun Jan 24 14:27:55 2010 +0000
+
+    CHANGES: snmplib: Prevent gcc ped-warning for NETSNMP_REMOVE_CONST
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@18052 06827809-a52a-0410-b366-d66718629ded
+
+commit c2e1525a85bda5299a3b9f241614f7e6509aeeba
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed Jan 6 13:35:11 2010 +0000
+
+    Backport commit 295f473c83546221b2a71d815c61e33a67f98ae3: refine NETSNMP_REMOVE_CONST() implementation.
+
+commit cb423b0ae9ed0059aa100dc4e2fd93ad1b97faf8
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Wed Jan 6 11:57:51 2010 +0000
+
+    Backport commit e2fb09e0093e2f648fe2638da2f3af18fdb32bf0 - introduce NETSNMP_REMOVE_CONST().
+    
+    Conflicts:
+    	agent/snmp_perl.c
+    	snmplib/snmp_service.c
+
+commit afc396ab1618a8595a2519fbc25f7a498e174411
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 08:49:34 2012 +0100
+
+    Unbreak netsnmp_mktemp() and make_temp().
+    
+    These were broken by commit bb8fcbb874998000f945f058d1aa6fe14e925899.
+    Also replace a strncpy() call by a call to strlcpy() and replace the
+    make_tempfile() implementation by a call to netsnmp_mktemp().
+
+commit 210185c15d0d65f0ea98b5e3c2e0776f6222d170
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 11 08:27:43 2012 +0100
+
+    Fix a crash during startup of snmpd introduced by commit 885061687d9caa38470979667d7d8ad6563cedad.
+    
+    Also, make sure there is only a single copy of the cleanup code in function
+    mkdirhier().
+
+commit 8bb4e86abcf98ff28748af0af89c98e64d5cd961
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Wed Jan 11 07:47:12 2012 +0100
+
+    Reduce the scope of the oldmask variable.
+
+commit 6680147b138ec114f81c5d128ac9350c8450d081
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 18:44:31 2012 +0000
+
+    Make test T015int64_clib pass on 64-bit systems
+
+commit 3aad15ae560ac857e73c90764e903e7ca02b3295
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:40:59 2012 +0100
+
+    Fixed buffer overflow for large OID names
+
+commit fba188ee82010b2f2d8ca2e426ba654499ab3d0a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:31:33 2012 +0100
+
+    fixed buffer overflow in __concat_oid_str
+
+commit 21d25d86b8e4904d798dc8c96dade9e5048457a8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:26:07 2012 +0100
+
+    Fixed buffer overflow when parsing port numbers.
+
+commit d36931841b2fc2cebc6364b2949129a0ad42ad1d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:05:51 2012 +0100
+
+    Fixed a buffer overflow when large SumFile is used.
+
+commit 0efdd022da09af1b5e16171fa7a2b523c5d6ec59
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 15:01:53 2012 +0100
+
+    Fixed buffer overflow when too big temp file pattern is used.
+
+commit 560bc6c09b751556efd6b4c4495751b109a93f92
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:59:24 2012 +0100
+
+    Fixed buffer overflow, just to be sure.
+
+commit 8291d7c5b92a31dd4f582b497d4b2a0853367a56
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:55:16 2012 +0100
+
+    Fixed buffer overflow.
+
+commit 88e1f34de7300575fa6dab857ecddb242a87de80
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:48:55 2012 +0100
+
+    Fixed buffer overflow when too long interface names are used.
+
+commit be1375a9926ebe0cd5b78a4045c3bd11c83664b1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:46:49 2012 +0100
+
+    Fixed buffer overflow when a sensor name is too long.
+
+commit 1cb24625372062b14c71d7dd51e20fef773e2743
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:41:00 2012 +0100
+
+    Fixed buffer overflow when a CPU has too long name.
+
+commit 84c807ee03251e54856e83d62d06ea08b8df527a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:36:50 2012 +0100
+
+    Fixed buffer overflow when too long interface names are used.
+
+commit c310e390b5dd05f24be7eb1904c74e41259c93db
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:24:54 2012 +0100
+
+    Fixed buffer overflow when too big temp file pattern is used.
+
+commit 4600d11434e83b8653cf9f813a3d8b630455b42d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:17:08 2012 +0100
+
+    Fixed plausible string overflow before parsing command line options.
+
+commit 885061687d9caa38470979667d7d8ad6563cedad
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 14:11:02 2012 +0100
+
+    Get rid of (insecure) SNMP_MAXPATH in mkdirhier()
+
+commit 8016890a445f6a7e2a873a04873d4e27b6ee64e3
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:48:34 2012 +0100
+
+    Fixed wrong integer size on 64 bit platform.
+
+commit bb8fcbb874998000f945f058d1aa6fe14e925899
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:31:36 2012 +0100
+
+    Secure mkstemp() with umask() - on some implementations it does not set 0600 permissions automatically.
+
+commit 202523ca704bd722dc1ac0e1e6b0e4b4e5424495
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:11:57 2012 +0100
+
+    Fixed dereferencing 'c' before NULL check.
+
+commit 73a523e468277f6df2e984891313b8be8bce1921
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 10 13:08:24 2012 +0100
+
+    Fixed dereferencing key->info when key is known to be NULL.
+
+commit 2f4e6acd714183f015b763657f8f084593357e26
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 10:38:16 2012 +0100
+
+    .gitignore: Ignore perl/*.yml files
+
+commit c365d80c16c2d17b160011e8c1f9cb958954e9db
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 10 08:34:16 2012 +0100
+
+    CHANGES: snmptrapd: Do not invoke shutdown_perl() from inside the SIGTERM handler since that fails if SIGTERM is received while a Perl handler is active. Based on a patch posted by Joel Avni <javni@arubanetworks.com>
+
+commit d059fb878b1436599953cea5a077499ddcdcbcb5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 17:03:55 2012 +0000
+
+    CHANGES: BUG: 3440752: IF-MIB: Report interface speed correctly for Ethernet interfaces if other than 10 Mbps, 100 Mbps, 1 Gbps, 2.5 Gbps or 10 Gbps. Add support for NICs faster than 65 Gbps.
+
+commit c09903a42e9d97331fd9e48ee831a85afdf9c70a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Jan 9 13:26:17 2012 +0100
+
+    Doxygen-style documentation fixes
+
+commit e325ecbfce77f00ac5cf6fbd957f95495f61c59b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Jan 9 13:25:10 2012 +0100
+
+    Suppress uninteresting Doxygen warnings
+
+commit be9161d3a5898e863767f926613486126c2cbf67
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 12:35:39 2012 +0100
+
+    CHANGES: snmplib: Simplify implementation of functions manipulating 64-bit numbers.
+
+commit 86e4c2be0852a0a13b0603075720b3264ec70dde
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 12:29:11 2012 +0100
+
+    CHANGES: snmplib: Make it explicit that MAX_SUBID is an unsigned constant
+
+commit 37e272d8f7b7180ba140fa386a5ff058968a08a2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 18:21:48 2012 +0000
+
+    CHANGES: snmpd: IF-MIB::ifType: Report type "infiniband (199)" for InfiniBand interfaces instead of type "other (1)".
+
+commit 269932fa32c7cd47957489698e09bee31f63b7af
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 14:34:42 2012 +0100
+
+    Fix an MSVC compiler warning
+
+commit 0d1c21f9991d1309d057e3e4056d547df7d40ecf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 16:06:31 2012 +0100
+
+    Make declaration and definition of strlcat() consistent.
+
+commit 0c3d4dbb0a9cf5b359f70b2f19915495554f840f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 15:23:16 2012 +0100
+
+    CHANGES: Win32: snmpd: Remove dlmod
+
+commit 893ecc97b587661045becbe09a320c1bcbc71c7c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 14:36:59 2012 +0100
+
+    Add strlcat() to the MSVC build infrastructure.
+
+commit 3d126422e625702b9d3fa0676a97ec5cb20d9d10
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 15:01:06 2012 +0100
+
+    Make win32/net-snmp/net-snmp-config.h consistent with its .in file
+
+commit af53b76c2ffa751e3958d0fc5d8279f78c2c1c26
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 14:43:55 2012 +0100
+
+    Skip T066pass_simple and T067passpersist_simple on MinGW
+
+commit 35a92e693d133a5b11e9e9b599dbf47edef4933b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Jan 6 08:16:36 2012 +0100
+
+    Remove snmplib/snmpDTLSUDPDomain.c again, which was added accidentally while resolving merge conflicts (commit 1d78f7d5b58aed2b52c4d386a7ba80a44711baca)
+
+commit a9b073ea3b6cedf713e305e7b15f28ae57bfdf1b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 17:47:11 2012 +0000
+
+    Fix 64-bit compiler warnings
+
+commit 7e890dad95f566069ee280215a4fea3f0e2e3980
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 16:38:50 2012 +0100
+
+    Avoid a SIGSEGV if cp == NULL. This is a follow-up for commit 089bcb360aa26790ad2a8ceddf583b7ba5ddfd48.
+
+commit 1f6200cfe1b0b27ebb093a1606b592f9e9684be8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 15:53:34 2012 +0100
+
+    Convert strncpy() calls introduced in v5.6
+
+commit c3126b143921fabeac442166eca5b5b742fd42c0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 15:02:39 2012 +0100
+
+    Replace most strncpy() calls introduced in v5.5
+
+commit b24ee7c909657db43bd8c5d8c01055ca0883c9cf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 08:40:39 2012 +0100
+
+    Eliminate most strncpy() and strncat() calls
+    
+    Using strncpy() and strncat() is error prone -- see also
+    http://www.gratisoft.us/todd/papers/strlcpy.html. Hence replace
+    all invocations of strncpy() and strncat(). Replace
+    strncpy(dst, src, n) calls by:
+    * strlcpy(dst, src, n) if the goal was to avoid output buffer overflow.
+    * sprintf(dst, "%.*s", n, src) to copy a prefix of src to dst or if src is
+        not '\0'-terminated.
+    * memcpy(dst, src, n) if strlen(src) >= n and n < size of dst.
+    * strcpy(dst, src) if n > strlen(src) and n < size of dst.
+
+commit 6d95bc4149472931005475c30a541fed5534da39
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 11:19:16 2012 +0100
+
+    Fix warnings triggered during compilation of the Perl xs source files
+
+commit bad0600f6ec944ef8455e327ce784b9b07d247c9
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 10:00:13 2012 +0100
+
+    Add configure test for sockaddr_un.sun_path such that the com2sec test is run
+
+commit 92a32ac4866a5edc7f347d37942bf028de02762f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 10:00:29 2012 +0100
+
+    Get rid of a compiler warning
+
+commit 83e4c0e304f617ccac6610edd74d1706797bbf52
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 09:15:37 2012 +0100
+
+    CHANGES: testing: Add a test for se_store_list()
+
+commit 4fae5852103ec3893ad488bc0d905ca6914595ef
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 09:17:15 2012 +0100
+
+    CHANGES: snmplib: Simplify the se_store_enum_list() implementation
+
+commit b3222bb275f2f2346e0fd0478afa2efb600773e5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jan 5 09:16:45 2012 +0100
+
+    CHANGES: snmplib: Declare "type" argument of se_store_list() / se_store_slist() / se_store_enum_list() const
+
+commit 022f840fbfcb0e26b08f0e55728231f611495803
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 19:55:56 2012 +0000
+
+    Avoid that Valgrind complains about sending UDP data
+
+commit 672a809c228e9550b99b8910be75d0b161985402
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 17:33:09 2012 +0000
+
+    Fix a 64-bit compiler warning
+
+commit 24ff260ad89ce2aa361a55c7c72e916031defe35
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 17:11:24 2012 +0100
+
+    Change the type of the second argument of snmp_set_var_value() and snmp_set_var_typed_value() from u_char* to void*, like on more recent branches
+
+commit c6ca737fb46f90a4bda5d43734aac34e837a05f4
+Author: Bart Van Assche <bvassche@users.sourceforge.net>
+Date:   Sat Mar 13 19:07:37 2010 +0000
+
+    Backport commit f504ce2d74a4bc88f68cc9515fa7053373cb15b5.
+    (Fixed most compiler warnings triggered by the source code in the perl subdirectory. Note: these changes may contain some real bug fixes.)
+    
+    Conflicts:
+    
+    	perl/ASN/ASN.xs
+    	perl/OID/OID.xs
+    	perl/SNMP/SNMP.xs
+    	perl/agent/agent.xs
+
+commit d212dc984ec34e4d230625e46e58b0c628a50df5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 16:46:49 2012 +0100
+
+    SNMP.xs compiler warning fixes
+
+commit baceebb10d8caf5db63cc36935fed65ee931029d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 16:22:44 2012 +0100
+
+    Add declaration for shutdown_snmpNotifyTable()
+
+commit f7f966abd6d2849b1331252afe5c473e5c40b32d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 14:24:33 2012 +0100
+
+    Fix format specification mismatches.
+
+commit 303c015bcfe9af0b154e9881c7b4f449e08f30bb
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed May 6 22:06:23 2009 +0000
+
+    Backport commit d3eb2b5ced22a8480053ce43acf9739729055404
+    (Sprinkle some const-ness where relevant / fix format string mismatches,
+    Niels Baggesen, May 2009)
+    
+    Conflicts:
+    
+    	agent/agent_sysORTable.c
+    	agent/helpers/instance.c
+    	agent/mibgroup/disman/event/mteTriggerConf.c
+    	include/net-snmp/agent/instance.h
+    	include/net-snmp/agent/sysORTable.h
+
+commit d95b40406916bda5b48b5a6131bec27b866b0a79
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed May 6 21:59:20 2009 +0000
+
+    Backport a2a7316c310f0fcc3728673fa047051c23b71960
+    (Trivial warning fixes, Niels Baggesen, May 2009).
+    
+    Conflicts:
+    
+    	agent/mibgroup/hardware/cpu/cpu_linux.c
+    	agent/mibgroup/host/hr_swrun.c
+    	agent/mibgroup/if-mib/data_access/interface_linux.c
+    	agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
+    	agent/mibgroup/ip-mib/data_access/systemstats_linux.c
+    	agent/mibgroup/mibII/sysORTable.c
+    	agent/mibgroup/mibII/system_mib.c
+    	agent/mibgroup/ucd-snmp/logmatch.c
+    	agent/mibgroup/util_funcs/get_pid_from_inode.c
+    	agent/snmpd.c
+    	snmplib/container_list_ssll.c
+
+commit d86c47f003fdc192bce7b46ac4f06b09e387c12b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 13:29:08 2012 +0100
+
+    Fixed a typo
+
+commit bee4d79cf4eb7e0a45397f59b5298da633a8e1ba
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 13:14:57 2012 +0100
+
+    Fixed reading past end of buffer.
+
+commit 3dc0e00a2fd8e34fe1ae33ecabf36e146460a31f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 12:40:07 2012 +0100
+
+    Fixed buffer overflow when large 'token' is used.
+
+commit b3c4982542e0ab151fb3884754cdfbcb472da52d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 12:28:52 2012 +0100
+
+    Fixed off-by-one memset.
+
+commit 0f53695044dd3f0c3507753e3f8c29d97e96872d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Aug 3 21:38:26 2011 +0200
+
+    CHANGES: snmplib, snmpd, perl: Eliminate dead variables
+    
+    Conflicts:
+    
+    	agent/mibgroup/agentx/master_admin.c
+    	agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c
+    	agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c
+    	agent/mibgroup/host/data_access/swinst_pkginfo.c
+    	agent/mibgroup/host/data_access/swrun_procfs_status.c
+    	agent/mibgroup/ip-mib/data_access/systemstats_linux.c
+    	agent/mibgroup/mibII/kernel_linux.c
+    	agent/mibgroup/rmon-mib/data_access/etherstats_linux.c
+    	agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c
+    	apps/snmptls.c
+    	apps/snmptrapd_log.c
+    	snmplib/dir_utils.c
+    	snmplib/snmp_client.c
+    	snmplib/snmp_openssl.c
+    	snmplib/transports/snmpTLSTCPDomain.c
+
+commit 0153805c99b9197365935c5d11ae9c3d4bfaa0f3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 09:48:41 2012 +0100
+
+    Fix a set-but-not-used warning
+
+commit 3f8885fbee9407748fc2f0573728a11ba2bc023a
+Author: Magnus Fromreide <magfr@users.sourceforge.net>
+Date:   Tue Apr 28 05:51:13 2009 +0000
+
+    Return a value from sprint_realloc_value even if no subtree is located.
+    
+    git-svn-id: file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@17578 06827809-a52a-0410-b366-d66718629ded
+
+commit b1eaaf302369fd4552e8fee7b6a805091ec0a9b4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 11:38:51 2012 +0100
+
+    Added check of find_sec_mod() return value.
+
+commit aee4e895fe3bd5f4a61e34275bfca0368b560555
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 11:31:22 2012 +0100
+
+    Added check of snmp_sess_transport() return value.
+
+commit 5d1d0a744ab30c8e645c3b8506cbbd2cceb3d275
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 11:04:48 2012 +0100
+
+    Added check of netsnmp_extract_iterator_context() return value.
+
+commit 299ea9a89c3f1758a7748bb9b3411f62f2c70f88
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 10:54:55 2012 +0100
+
+    Added check of fopen() return value, just in case of some race.
+
+commit 90f1ae6757917481636eef77100caeeb53edfe01
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Jan 3 10:06:56 2012 +0100
+
+    Add strlcat.c. Source: http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/string/strlcat.c.
+
+commit 089bcb360aa26790ad2a8ceddf583b7ba5ddfd48
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Jan 4 10:50:56 2012 +0100
+
+    Added strrchr return value check, just to be sure.
+
+commit 199a0511f6eb0ef3ff1d9f922b790ab67dfde01e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 10:31:26 2012 +0100
+
+    CHANGES: snmpd: smux: simplify smux_list_detach()
+
+commit d883573aa73e0f5fc188acedee6451f95dae900c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 10:23:06 2012 +0100
+
+    Fix a compiler warning introduced by commit a809fe5075c9f374715f7d1a682949a0730172c1.
+
+commit 7b7a3eb2500527eaa1699287a6ca6fcc4cc2e08a
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Jan 4 09:40:02 2012 +0100
+
+    Fix a build error caused by commit a809fe5075c9f374715f7d1a682949a0730172c1.
+
+commit 2b6c119fed4848da6663c11f0c2cbdc29921b5c6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:51:10 2012 +0100
+
+    Check for netsnmp_ds_get_int() errors.
+
+commit 6ce5360caa4c9de51ade57879e83f96bd04b4c5a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:42:23 2012 +0100
+
+    Check for missing view.
+
+commit b3bc54bed31690a85df2acfbf3296da93a9e89b4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:23:17 2012 +0100
+
+    Check socket() result.
+    Also close the socket on error.
+
+commit 92075f51cd45a38ca38760b3ffe82e16559e9c2e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 15:18:26 2012 +0100
+
+    Check open() result.
+
+commit 6665d5fe2fc569d6fa854d1d78e347bbac69e070
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:22:22 2012 +0100
+
+    Fixed missing break.
+
+commit a6648c5453e1ef8dac57a38efcc00cce53bf9e4f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:20:27 2012 +0100
+
+    Fixed missing break.
+
+commit d68dcae0f18d554571aef321944a5290548dde86
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:16:11 2012 +0100
+
+    Added 'fallthrough' comment for Coverity.
+
+commit fb6f80c0fe3ba36e56f5b911a47e3f6f32ba266e
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:14:07 2012 +0100
+
+    Fixed exit code of encode_keychange with wrong arguments.
+    Also added a comment for Coverity.
+
+commit 3130e24fdc232464dd7bb216f46cafa2e0e775a6
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:09:54 2012 +0100
+
+    Added missing break
+
+commit 18c126a9565cb4d69d7513b944a2105588045d35
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:07:29 2012 +0100
+
+    Added 'fallthrough' comment for Coverity.
+
+commit 6d31c82070a2c68fe3c519e9d56fa2779554d01f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 14:01:53 2012 +0100
+
+    Added 'fallthrough' comment for Coverity.
+
+commit dc6f0e2e549b4cd061ebc190084b1fc77a55f40f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:32:59 2012 +0100
+
+    Fixed wrong operator
+
+commit dab32867ed0b99301efd7b8d852ad1288a184be0
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:30:33 2012 +0100
+
+    Fixed QUITFUN usage.
+
+commit b1a2bcf64615eb66bc24d5be4950e45012962045
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:18:03 2012 +0100
+
+    Fixed wrong operator
+
+commit b2b1c851b94fed37c386eaa1bfead5c77696e3ef
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 13:14:52 2012 +0100
+
+    Fixed wrong operator
+
+commit a809fe5075c9f374715f7d1a682949a0730172c1
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 10:58:46 2012 +0100
+
+    Added check for failed register_mib.
+
+commit 5949f055c16ae650615aae7a1fee3f2d7b16d940
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Jan 3 10:29:59 2012 +0100
+
+    Make MIB file parsing and detection more strict - LABEL is required at the beginning of MIB files.
+
+commit e4b673683c68ba8b3abc040b9125ec304643cc7c
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jan 1 23:00:24 2012 +0100
+
+    Assume that libdl might be in AGENTLIBS or SNMPLIBS so preadd them.
+
+commit b13c1e57bedba79b806103c74f1921d53a706b38
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Jan 1 22:55:06 2012 +0100
+
+    Do not require ucd-snmp/dlmod unless it will work.
+
+commit 27dcea0d5f801df494ab2cb5c5c0ebe54eb0dcd3
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 14:48:29 2011 +0100
+
+    Adjust paths for test restructure
+
+commit 14b60e85a1b5700e93d126e2f291d5c485f34e36
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 14:14:29 2011 +0100
+
+    CHANGES: snmpd: Make the configuration of the dlmod module fail rather than generate a dummy module if the dlopen function isn't available.
+
+commit 98a97538fc1e9ff46b60d5d969347444578378c0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 13:35:13 2011 +0100
+
+    Adjust the paths to support testing even if builddir != srcdir
+
+commit 88f0af3cfb916ae5863cc2986071d435f20c3064
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 31 11:37:52 2011 +0100
+
+    Reduce the scope of the variables 'p' and 'len'.
+
+commit 0815a7536c76f7e4842638683f674894a1a8ce14
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 29 14:42:54 2011 +0000
+
+    Report problems with SetUndo processing
+    Missed when applying patch #3445440
+
+commit eb2ab23742ca86c0b89ccfe91eb6ea374bf3acc1
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 29 14:37:31 2011 +0000
+
+    Check for the expected error (EPIPE) on closure.
+    Missed when applying patch #3447444
+
+commit aac10bc4f053c014f382d6593fc32ab95e0b1a57
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 29 12:59:52 2011 +0000
+
+    CHANGES: snmpd: BUG: 3463767: Handle parsing subidentifiers > 2^31
+
+commit bbc02e36e90c1aab7898562f963f5cadb26e10bd
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Dec 28 17:15:16 2011 +0000
+
+    Move pass/pass_persist tests to the new location
+
+commit 3898c04fd6f89867062fdfebf36857ab619c0450
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Wed Dec 28 16:53:24 2011 +0000
+
+    Add tests for pass/pass_persist, supplied by Bill Fenner
+
+commit d5ee3f0a1a63bb1752c74cbca55aa3d40bf9bf13
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 21:58:51 2011 +0000
+
+    CHANGES: snmpd: PATCHES: 3447444: Fix SIG_PIPE handling
+    Patch provided by Bill Fenner
+
+commit 2a17b37430c1852998c3588e547d7eb61c06da71
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 21:45:38 2011 +0000
+
+    CHANGES: agentx: PATCHES: 3445440: More robust handling of AgentX errors
+    Patch provided by Bill Fenner
+
+commit fe58a0e5f4d4e2e2ecbcb47382b08cb1e4df352c
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 18:16:23 2011 +0000
+
+    CHANGES: snmplib: PATCHES: 3456770: Handle (obsolete) UInteger type properly
+    Patch provided by Bill Fenner
+
+commit 1be8cf08a67a91855fee1ec4a2d8e087c7812456
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 18:04:10 2011 +0000
+
+    CHANGES: agentx: PATCHES: 3445437: Log AgentX disconnections
+    (in line with connections) Patch provided by Bill Fenner
+
+commit 068037289107faa2ba3f5cd2fb00c19494bb9a04
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 17:27:46 2011 +0000
+
+    Handle any GETNEXT request OID, not just a simple walk.
+
+commit a74fa528983123d355a8cdcaa77dd4eb4b8c6959
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 17:00:18 2011 +0000
+
+    CHANGES: pass: PATCHES: 349394: Bring pass_persisttest script into line with passtest*
+    (i.e. using the legitimate structure of NET-SNMP-PASS-MIB)
+    Patch provided by Bill Fenner
+
+commit bbe649ebfa61ea22399170b36b99db30a1de8012
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 16:54:38 2011 +0000
+
+    Rework "passtest" example to fully validate GETNEXT requests
+    and use a legitimate structure for output.  Backport of SVN
+    revision 17632 (which updated 'passtest.pl' but missed 'passtest')
+    Correct in branches 5.5 and above
+
+commit 82d06c7247b22c8b01d45bf55041d2f1e6427d49
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 13:45:18 2011 +0000
+
+    CHANGES: snmpd: PATCHES: 3447671: Fix override handling of OID values
+    Patch supplied by Phillip O'Donnell
+
+commit ba4a9ce51c9600f9fda168f1e6eff32a1db63cb9
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 13:24:26 2011 +0000
+
+    Tweak --disable-snmp-set changes
+
+commit 827c8b28830171faa9c61d53efca9eb6600561c2
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 11:25:43 2011 +0000
+
+    CHANGES: python: PATCHES: 3433846: Fix for use with python 2.4
+
+commit f98a54a99caf7b46b100a920db942cbca9c43926
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Dec 27 10:10:36 2011 +0000
+
+    Skip SET-based tests when configured with --disable-set-support
+
+commit 230df14f94c3736ff34379a4e281eea353b47f80
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Dec 26 23:34:23 2011 +0100
+
+    Do not assign tmStateRef twice
+
+commit c96b3b4d8530ad5e0efb03f24dab5e5f1a460031
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 25 11:18:21 2011 +0100
+
+    Correct use-after-free.
+
+commit c5978c89cde2440f4d20dadbc9d1dd8db562d56e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 25 11:15:44 2011 +0100
+
+    Correct double-free.
+    
+    netsnmp_tlstmAddr_add takes ownership of it's argument so calling free on the
+    argument on failure is incorrect.
+
+commit c139ca123b44bb3b9b6bf921e1609cc45f63a660
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Sat Dec 24 16:55:30 2011 +0000
+
+    CHANGES: snmpd: PATCHES 3410059: Fix sparsely augmenting trigger tables
+    Patch provided by Stephen Turner
+
+commit c4ae021b2e6384437081c5623f360c8896390188
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Sat Dec 24 16:29:54 2011 +0000
+
+    CHANGES: snmpd: PATCHES 3410050: Skip already-'processed' varbinds
+    Based on mib2c patch provided by Stephen Turner
+
+commit c6accf8c66254fa8c48767ed7dec795ddafc522e
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Sat Dec 24 16:27:11 2011 +0000
+
+    CHANGES: mib2c: PATCHES 3410050: Skip already-'processed' varbinds
+    Patch provided by Stephen Turner
+
+commit a61826ad8ca54661d1d909712503bd3a8b32eed0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Dec 22 18:35:46 2011 +0100
+
+    Remove unused variable.
+    
+    myMatch is unused as nmatch is zero and also since regexBuffer is created
+    with REG_NOSUB set.
+
+commit ba4fc80fe2cfd5a5d89230d8f3703e4fe01e6019
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Thu Dec 22 19:24:40 2011 +0000
+
+    CHANGES: agent: PATCH 3402376: from Leonardo Chiquitto: Recognise ReiserFS
+    Also move various FSType definitions to the appropriate blocks
+
+commit b5ac4a04dcd5470d08d03321abcd1e982621e6e0
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:39:46 2011 +0100
+
+    Fixed unterminated strings after strncpy
+
+commit 2b37e4e8f250a0d8821199a74ac3f4e5b7b7baba
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:31:51 2011 +0100
+
+    Fixed unterminated strings after strncpy
+
+commit 3d08345156c419333de969f13d21fcec7e18e94d
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:32:29 2011 +0100
+
+    Fixed unterminated strings after strncpy
+
+commit cd859ad51c4f18d5b0fc69dd669fcb051c798969
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:39:33 2011 +0100
+
+    Fixed wrong memmove size
+
+commit 30ff58d09d4c9d5438bb621054fd7ad7a2a597e4
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Dec 22 14:07:19 2011 +0100
+
+    Fixed wrong length of buffer when printing ASN_BIT_STR
+
+commit 6c1487e1d360d3d260a39cb1f5b15da978395053
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 15:47:34 2011 +0100
+
+    Fixed potential free of uninitialized pointer in error cases
+
+commit c76fb96f65e33ba2fd212a921e8c386155ee5c7a
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 15:44:46 2011 +0100
+
+    Fixed unitialized values in udpTable
+
+commit c44608679b89751176f28a2e54d5282b46e2a05c
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 14:56:13 2011 +0100
+
+    Use calloc instead of malloc and manual clearing
+
+commit a05c5f9513461824e7903ae9ae9a6c3386e33879
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 14:40:50 2011 +0100
+
+    Fixed printing of unitialized variable when sensors_get_label() fails
+
+commit e4a5edc72393bd3de9bf12bceba9d83bbf7de70b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 14:31:25 2011 +0100
+
+    Removed unused variable
+
+commit fae2e5b835b8df1eae47e4cebb4eb404d7282377
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 13:31:21 2011 +0100
+
+    Fixed dereferencing unitialized iid in error cases and with debug info enabled.
+
+commit 9d58f81a9239cfbcfc8ebce367d21e9b3dcb028b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 13:33:33 2011 +0100
+
+    Fixed dereferencing uninitialized variables in error cases
+
+commit 0bc8c08edeae7ae095f116258c20ae5767d60652
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Dec 21 13:20:52 2011 +0100
+
+    Fixed returning uninitialized variable 'status' when ss == NULL
+
+commit 7304c53cf8adee8eccef1a8f26756fc07f098721
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 18 23:31:53 2011 +0100
+
+    On solaris 10 test in /bin/sh doesn't support the -e test. Replace it with -f
+
+commit 8cd3be60d693c9c36ffb97d3d9bcb49c1b4abe35
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Dec 17 08:52:24 2011 +0100
+
+    Avoid repetition of the complex expression determining if it is possible to get the destination address.
+    
+    This also makes it possible to build on platforms like Solaris 10 that define
+    IP_RECVDSTADDR but lack either of msghdr.msg_control and msghdr.msg_flags.
+
+commit 953f2e3d425ede3b863a2e7ccb0b4bc862928b57
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 5 22:13:07 2011 +0100
+
+    Move the use of _sendto and _recvfrom below their definitions.
+
+commit 68a1173c46cf77601426cf391d9a852794f2057e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Nov 20 20:05:18 2011 +0100
+
+    CHANGES: snmplib: Separate out the cmesg buffer size
+
+commit 461dd16f3b2647322cdce6363081cc44ba5a49b5
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 26 21:51:01 2011 +0100
+
+    CHANGES: snmplib: Merge together the Linux and *BSD version of src port sending.
+
+commit 7accb69baa1fc0b6a3439d2e549c86da3453bad2
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:30:31 2011 +0100
+
+    Use a bare struct iovec in instead of a one element array.
+    
+    The purpose of this change is to make _recvfrom more similar to _sendto.
+
+commit 39852cd4c85ef2bfc75cdea2825261ee93e768c2
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:29:20 2011 +0100
+
+    Add comment describing the purpose of the call to getsockname after almost removing it.
+
+commit 1b292ca27eab5caa73feaaa83dc9c12abc0f2e70
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:27:59 2011 +0100
+
+    Reduce variable scope.
+
+commit bc879571eca9520bc132f840c3e659d3793144d7
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:25:36 2011 +0100
+
+    Introduce temporary variables to ease the extraction of the server address.
+
+commit b7eea6cffbd872932ce2c04fefb6f43de339f374
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:18:33 2011 +0100
+
+    Rename the cmesgptr variable to cm.
+    
+    The purpose of this is to increase the readability of the code.
+
+commit 0a7461e728805c62a1cab9d87bfc74c7927a9fcc
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:15:22 2011 +0100
+
+    Factor out a common loop in recvmsg option processing.
+
+commit b3c6248d0201ab1610840d6d0e749b3b6c4ad792
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:13:43 2011 +0100
+
+    Unify the structure of Linux and BSD recvmsg option parsing somewhat.
+
+commit 356400d6290a423b52ebeea5a5e976fb15bb73b4
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Dec 11 19:04:56 2011 +0100
+
+    Use CMSG_DATA on the result of CMSG_FIRST/NEXTHDR, not on the buffer.
+
+commit 3b351708c62de46aa1b90ed232cfd8c7c5b02231
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 12:00:32 2011 +0100
+
+    Remove a cast
+
+commit de9250d9dae9727a6cc7f647688dddf1b8597128
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 11:58:04 2011 +0100
+
+    CHANGES: snmpd: Make sprint_mib_oid() treat OID components as unsigned instead of signed integers
+
+commit 0e33b3b6d5854a4bac15d4ea5e016c53d161d0cd
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 10:02:28 2011 +0100
+
+    Fix recently introduced compiler warnings
+
+commit b7e50d5f9a6755982d2af3191473cb34643bc03f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 08:37:22 2011 +0100
+
+    CHANGES: snmplib: Reduce overhead of config file parsing
+
+commit 73c9ee42d28afe2e107a7d6616b6d011890c36ea
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 8 09:09:59 2011 +0100
+
+    Remove unused variables
+
+commit 3db97962b37eb12d254d61e6be234b06a391c8bb
+Author: Bill Fenner <fenner@gmail.com>
+Date:   Thu Dec 8 07:43:45 2011 +0100
+
+    CHANGES: snmpd: PATCH 3453868: from "Bill Fenner <fenner@gmail.com>": Factor common code into pass_common
+    
+    Move the code for pormatting and printing values from pass and pass_persist
+    into pass_common.
+
+commit b6568c83f1756e9a65434edeeeb40d23ddbbb652
+Author: ccchiu <ccchiu@sourceforge.net>
+Date:   Wed Dec 7 16:25:27 2011 +0100
+
+    CHANGES: BUG: 3452069: Fix snmptrap_oid declaration in mib2c generated code
+    
+    This bug was introduced considerable time ago. It did already exist at the
+    time the 5.6 branch was created (see also commit
+    0ec088afa27cfda4e6ea78aae7cfc5507564edde).
+
+commit d494db64c208b4dc62813132f8863bd5c1a39d77
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:38:17 2011 +0100
+
+    CHANGES: snmptrapd: Eliminate an unused variable (Now)
+
+commit 28f2561bc2935d8e1cbf46d2820158173e7a4cf4
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:37:11 2011 +0100
+
+    CHANGES: snmptrapd: Move the main loop code into a new function
+
+commit 396e122ddc42a916f06a02884c0e8a258edbe238
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 09:32:16 2011 +0100
+
+    CHANGES: snmpd: Match each getpwnam()/getpwuid() call with an endpwent() call and each getgrent() call with an endgrent() call.
+
+commit 3efefbc0024399786f8b68b1e93b0a8fddddc7da
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:41:01 2011 +0100
+
+    CHANGES: snmptrapd: Remove superfluous casts
+
+commit 7f05daa8e0e0f533b0f12a3e1cf07641519909d6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 11:58:32 2011 +0100
+
+    CHANGES: BUG: 3444939: BUG: 1796886: snmplib: Avoid that sprint_realloc_octet_string() embeds unprintable control characters or binary zeroes in its output. This behavior could cause truncated output in snmptrapd.
+
+commit db8f558fd2f3b7c109ea3a1c2133b75b6f8cb2ad
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Dec 1 10:04:41 2011 +0100
+
+    Compiler warning fix: pass unsigned chars to isprint() instead of signed chars.
+
+commit 800dc1028e7e0cd8cc14d84dd31723d47ac073db
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Dec 1 10:18:58 2011 +0100
+
+    Reduce the scope of the hint variable
+
+commit 83ea4a080c90a74b9743d3f24cf0d4b8a1e8c849
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Nov 27 21:16:52 2011 +0100
+
+    Reduce the scope of the variable qos
+
+commit 7b9e03441c3dc3a07670ed01f5d04791a82c750c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:04:01 2011 +0100
+
+    Remove #define val(x) __STRING(x) and change val(x) into __STRING(x).
+
+commit 2f379b0e4ecadfa4e541e3005c8fc8281882b741
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 15:58:47 2011 +0100
+
+    Follow-up for commit 1aa704e: unbreak the MSVC build
+
+commit 64ef0f71127617837027fb2cfaf174b95ba79e0d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:19:50 2011 +0100
+
+    Add SNMP::register_debug_tokens()
+
+commit 7bead9ca917c67566d5ed98ab507bbc02816217d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:08:08 2011 +0100
+
+    AgentX subagent: Reduce code duplication
+
+commit 0ed71541f87e7d78bc998eebda3217c59e1df830
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:03:19 2011 +0100
+
+    CHANGES: snmplib: Add Doxygen-style function header for netsnmp_register_default_target() and netsnmp_clear_default_target().
+
+commit 8c2972b61e40169b47c50988b6ae9e8c285f84f8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Nov 30 14:02:54 2011 +0100
+
+    CHANGES: perl: Fix spelling in the documentation of the SNMP module
+
+commit 5df2bac6bd717799311f001ac7b73db88f11bdda
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Tue Nov 29 08:59:58 2011 +0100
+
+    CHANGES: snmplib: Only transform the address to printable form when needed.
+
+commit 171e8d48d4af04013cff8fd28f5341a2aef21d88
+Author: Mijo Safradin <safradin@linux.vnet.ibm.com>
+Date:   Tue Nov 29 16:49:46 2011 +0100
+
+    CHANGES: snmp-bridge-mib: Fix index interpretation.
+    
+    This patch corrects a wrong data interpretation.
+    snmp-bridge-mib obtains the ifindex value from the sysfs
+    attribute 'ifindex' The value given by the sysfs attribute
+    is an integer, which is handled as hex and leads to
+    incorrect data displayed to the user.
+    
+    e.g.
+        $ > snmpwalk localhost BRIDGE-MIB::dot1dBasePortIfIndex.2
+        BRIDGE-MIB::dot1dBasePortIfIndex.2 = INTEGER: 54
+    
+    according to the sysfs attribute the value is 36
+    
+        $ > cat /sys/class/net/<device>/ifindex
+        36
+    
+    Signed-off-by: Mijo Safradin <safradin@linux.vnet.ibm.com>
+
+commit 82e39fb6706df90ecf2fc9e10ada2b962ee196f3
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Nov 29 12:27:46 2011 +0000
+
+    Fix multi-line case testing of incoming OID
+
+commit b15da1a4516061105a1eac7450cf650ec44266b2
+Author: Nikolay Denev <ndenev@gmail.com>
+Date:   Tue Nov 29 08:29:49 2011 +0100
+
+    CHANGES: FreeBSD: Restore IP_RECVDSTADDR functionality.
+
+commit 7f47f52e481baa9aafb5784244b0dd2653e7dcff
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Nov 28 08:51:39 2011 +0100
+
+    CHANGES: snmplib: Use SNMP_ALLOC_TYPEDEF to allocate transports in order to avoid the separate call to memset.
+
+commit cf86039e3086225c3085bb9adf088b8ba5ba6979
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 15:02:58 2011 +0100
+
+    CHANGES: MinGW: testing: Make unit-tests/T102pdu_build_clib pass.
+
+commit 1a87e76e00ee3d5cd37a07bfc3d84490d3c2a4ec
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 14:55:42 2011 +0100
+
+    CHANGES: MinGW: testing: Make unit-tests/T014gethostbyaddr_clib pass
+
+commit 8867fd1dcfe72b59d07322ff38a699b66ec4f326
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Nov 22 09:44:38 2011 +0100
+
+    CHANGES: snmplib: Make netsnmp_large_fd_set_resize() robust against memory allocation failures.
+    
+    CHANGES: snmplib: Make NETSNMP_LARGE_FD_ZERO() use memset() on Unix systems instead of an explicit loop.
+    CHANGES: snmplib: Make sure that on Unix systems netsnmp_large_fd_clr() doesn't try to read memory it isn't allowed to read if the first argument equals -1 (a value that shouldn't be passed by the caller).
+    CHANGES: snmplib: Make netsnmp_large_fd_is_set() return false on Unix systems if the first argument equals -1 (a value that shouldn't be passed by the caller).
+    CHANGES: Windows: Make netsnmp_large_fd_set_resize() shrink behavior correct.
+
+commit 23db0cf09b8b0eab37b749ef0c3c3f306900245c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Nov 21 23:02:57 2011 +0100
+
+    Fix casting tv_usec to int which may be too short
+
+commit 80ee4022e534e64aad5a5f27192843b42acb85e0
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 09:14:02 2011 +0100
+
+    CHANGES: snmpd: BUG: 3439234: Move netsnmp_pass_str_to_errno to pass_common and rename it to netsnmp_internal_pass_str_to_errno
+
+commit 0baa9296c072bb3735760b0dd992f2d1d3ca27fa
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 09:05:24 2011 +0100
+
+    CHANGES: snmpd: BUG: 3439234: Correct the dependencies of ucd-snmp/pass and ucd-snmp/pass_persist
+
+commit 1aa704e4a294430b28e39b6f9e4683b8a48bce04
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 08:35:21 2011 +0100
+
+    CHANGES: snmpd: Factor out asc2bin and bin2asc. Add a netsnmp_internal_ prefix to them
+
+commit cda8fe91013f12cbf64a0775abb55720035af931
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Nov 19 00:55:24 2011 +0100
+
+    CHANGES: snmpd: Call snmp_oidtree_compare instead of snmp_oid_min_compare
+    CHANGES: snmpd: Remove snmp_oid_min_compare since it is internal and unused
+
+commit 85f893e2b605e67f9bd0443c74e2ed269aa68564
+Author: Niki Denev <niki_d@users.sourceforge.net>
+Date:   Thu Nov 17 22:42:32 2011 +0100
+
+    CHANGES: snmpd: PATCHES: 3175640: Use IP_RECVDSTADDR sockopt where available (*BSD)
+    
+    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
+
+    Fix size_t/int mismatches
+
+commit ca294cf75bbc8e90dbf44ee40478935e91db1487
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:18:03 2011 +0100
+
+    Remove unused variables
+
+commit cd32c2dff06b9b452cc18d552d2f2234092c829c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:17:09 2011 +0100
+
+    Fix format warning
+
+commit 883136c2b2fa0739f437a8cfb6614accc76e268e
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:15:58 2011 +0100
+
+    More needs for NETSNMP_PRIo format specifier
+
+commit b8084a7ccc909b6d6db7c0e8e596d78671f5678b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:14:26 2011 +0100
+
+    Fix using char as array index (ctype.h)
+
+commit 84529e6320a89d97f1314aebad806255d2a1b18c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 23:00:57 2011 +0100
+
+    Fix missing format for FreeBSD 4
+
+commit 4bd0352955a2551bfe02308dd134b9128c98b9e9
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 22:59:36 2011 +0100
+
+    Fix paranthesis problem
+
+commit fe6269b1900cf44dc27a199a761d15a01c3f3092
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 22:58:34 2011 +0100
+
+    Fix size_t/int mismatches
+
+commit a4db9f9fc13d21ecff488eb410376edda6c28232
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 13:43:34 2011 +0100
+
+    Remove unused variables
+
+commit 390c0114c8ec0bdb27b08b6f74e3f6ef3a62981b
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 13:37:49 2011 +0100
+
+    Fix format specifiers to avoid warnings
+
+commit 25cfc1962ae576ccb1558da1e3ef8b6c17f63c16
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 11:27:53 2011 +0100
+
+    Really up-to-date mibs
+
+commit 0e86c781f3989bf022c8993a118617b74a75420c
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 09:17:19 2011 +0100
+
+    memory_linux: get Shmem from /proc/meminfo for 2.6 (or newer) kernels
+
+commit bf264d15ded7acbbf2e3871b98fd1fcef43d9ec3
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 09:16:16 2011 +0100
+
+    memory_linux: close sockets in error situations
+
+commit 57ff8a40bae5d9bcad16089142a9cf328c9fa1f5
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 09:14:57 2011 +0100
+
+    disman/ping, disman/traceroute: Close sockets in error situations
+
+commit 8a2502a15c3217b95939a3c836167d230ac35f02
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 16 09:13:53 2011 +0100
+
+    Up-to-date list of RFCs wit mibs
+
+commit dcdd702111d8da5f53804cfcf0dfdad731468bde
+Author: Dave Shield <D.T.Shield@liverpool.ac.uk>
+Date:   Tue Nov 15 10:57:34 2011 +0000
+
+    Don't try to install an empty list of man pages (MAN3)
+
+commit ba619804e5978a8df754844efcca52b69b5015fa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Nov 14 13:34:20 2011 +0100
+
+    MinGW: Make sure that the backslashes in the pskill message are displayed.
+
+commit 923eecc507f75043b60c5e68053a4f396ab0b0d2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Nov 14 12:36:38 2011 +0100
+
+    Compiler warning fix for systems where uint64_t = unsigned long (e.g. RHEL 6.1/x86_64)
+
+commit 434bfc1f7457550b6f87d5bcd511276b270b5964
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Nov 14 11:22:53 2011 +0100
+
+    CHANGES: snmpd: from Martin Wilck: fixed snmpd crashing with 'select: bad file descriptor'.
+    
+    On 32-bit systems, snmpd dies with aforementioned message when using file descriptions > 32, e.g. when having >32 AgentX subagents.
+
+commit ed65eca6e7f9cfa7380a78d56c01ed314745b169
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 19:01:21 2011 +0100
+
+    FreeBSD-9: Fix for const'ifyed nlist arguments
+
+commit eaca7983e3655ab696fcc4461ca0cedbac6ce69a
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 19:00:12 2011 +0100
+
+    NetBSD-6: One more instance of timespec replacing timeval
+
+commit 8ad6c53fdec5adeae4e52f1751ecec4a345bab05
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 18:59:01 2011 +0100
+
+    Fix buig #3436527: arp_netlink: fix dying reload of cache
+
+commit 378ffed03ba79a8346d6c62781e2ddf5ce92a478
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Fri Nov 11 18:55:43 2011 +0100
+
+    Fix bug #3436528: swinst_pkginfo: recover from NULL return from opendir
+
+commit d7ad8f5f9f3f67f16f65c2515d11e194d2cdd12c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 10 14:04:41 2011 +0100
+
+    CHANGES: Cygwin: Make date_n_time() produce time zone information
+
+commit ba35c50b2f459bd9c11ed59cc7d1b16215644fa3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 10 14:17:04 2011 +0100
+
+    Replace AC_TRY_LINK() by AC_LINK_IFELSE()
+    
+    Note: these changes do not affect the generated configure script.
+
+commit f615bf24f5d0f23ce9301da556184d6460740456
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 9 20:32:49 2011 +0100
+
+    Fis Bug #3434824: SIGSEGV when reading disk directive after SIGHUP
+
+commit a94a179d9340f51fa7c23431630bc0ffd6d759e8
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 9 20:30:51 2011 +0100
+
+    Fix bug #3433616: dont treat DateAndTime as a string
+
+commit b29e4164531d258fe34a6fe2b9e1ec60c56f9544
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Nov 7 01:25:57 2011 +0100
+
+    CHANGES: testing: Remove unused variable
+
+commit e221e65fdc1c68f1968651717dcc9ccfb6414783
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 3 15:05:00 2011 +0100
+
+    Fix warnings about converting sockaddr_in * into sockaddr *.
+    
+    This is a follow-up for commit a0af385.
+
+commit 2e7e9eda0b0d62a7645a9a8f70ef3fb6f3dd6941
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Nov 3 11:17:48 2011 +0100
+
+    Fix uninitialized variable warnings.
+
+commit 3462ebcdd0b7c298cb15c3099736f4f952257846
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 28 16:07:15 2011 +0200
+
+    Remove those superfluous parentheses that trigger a clang warning.
+
+commit 3e5fedd3e7d1ef31683604bf73dc56e944cad349
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Thu Nov 3 09:45:27 2011 +0100
+
+    CHANGES: snmpd: fixed UCD-SNMP-MIB::systemStats after 30 days of uptime.
+    
+    After 30 days, values from /proc/stat (on Linux) can get bigger than 32bits and snmpd calculations might render counters like ssCpuUser negative or zero, while the real value is higher. Therefore the counters should be tracked as the largest integer available.
+
+commit 0fc8221b24988c4ae6180ed42b86b9852fd586ad
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 2 22:59:08 2011 +0100
+
+    dskIndex was off by one
+
+commit a5b28829e64d5f3b87e4b9b1ef8cc204f33a61b7
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Wed Nov 2 21:25:07 2011 +0100
+
+    Solaris needs $AWK to get a usable nawk
+
+commit 2801a2139f27021e1ab15e362e2d3d624ffaa494
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 31 22:55:53 2011 +0100
+
+    Patch #3406364: Fix unstable data for NetBSD.
+
+commit 821a58d112d7ac495149e262d704412ba2800438
+Author: Niels Baggesen <nba@users.sourceforge.net>
+Date:   Mon Oct 31 22:43:52 2011 +0100
+
+    Fix ipv6 statistics looping too far when scanning interfaces.
+    Fix TCP session table repeating data from first entry for all.
+
+commit 349591d03e17a55b43eacc6a687b02fd8d4e9528
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Mon Oct 31 08:59:37 2011 +0100
+
+    CHANGES: perl: Make it possible to build perl support without support for opaque types.
+
+commit 1ec7110e72bce1561f746517459d6f043016b60e
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 30 19:05:30 2011 +0100
+
+    CHANGES: testing: Make the asn1 test pass even if support for opaque types are removed.
+
+commit 6d26918af55aa3662a720542de77bbf39b0a3e91
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Oct 29 08:34:33 2011 +0200
+
+    CHANGES: snmpd: Disable the support for integer64 in pass scripts if compiling without opaque-special-types.
+
+commit 29bf69d70424f359d9c87f07a964a099415649a5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 13:02:25 2011 +0200
+
+    CHANGES: snmptrapd_sql: Avoid that a linker error is triggered on systems where my_progname is missing in libmysqlclient (e.g. Fedora 15 and 16).
+    
+    This is a backport of commit 9f653f7.
+
+commit 2cc9504b9bb8625b94be6cda7e60993d059cd928
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 09:01:23 2011 +0200
+
+    CHANGES: snmplib: BUG: 3428506: Fix netsnmp_gethostbyaddr()
+    
+    This patch should fix the regressions introduced by commit 85d96c4 (May 13, 2011).
+
+commit 9b427b353f1ceb8fe87e6fc8ed3b6cfab3ce7f20
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Oct 27 08:20:00 2011 +0200
+
+    MinGW: Avoid confusion between MinGW's kill.exe and the SysInternals pskill.exe
+
+commit 2c45f92cfcb5b05e049226a5a7883a0b106011ae
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 10:42:29 2011 +0200
+
+    Fix compiler warnings about passing a const pointer to a function accepting a non-const pointer.
+
+commit 275d23edfdebe0577b08421e4c6c936ae39b7fdc
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 09:33:09 2011 +0200
+
+    Fix compiler warnings about set-but-not-used variables
+
+commit 4495e17c078ac6997a9c7fa1a88db0644e919491
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 26 09:32:46 2011 +0200
+
+    Fix compiler warnings about casting away const
+
+commit 13952f6bee9f408867ab6d2fdfdde4f284074957
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Oct 26 14:05:16 2011 +0200
+
+    CHANGES: snmplib: from Siddhesh Poyarekar: properly clean up old requests in a subagent when we reconnect to master.
+    
+    An snmp subagent linked against net-snmp-libs may crash if it handles a
+    response which has magic referring to an older disconnected main session. This
+    may happen when the subagent
+    attempts to clean up old requests on reconnection of the disconnected master
+    session.
+
+commit ae052472b22720d08369e85127db214245df2e3f
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Oct 25 16:15:17 2011 +0200
+
+    CHANGES: perl: fixed segmentation fault when handler registration fails.
+    
+    When netsnmp_register_handler fails, it frees its reginfo -> nsahr_DESTROY (and any other function) must not dereference it.
+
+commit c199bf91b6239f26b2aab34e8575e0f0df9cde9b
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Mon Oct 24 14:25:28 2011 +0200
+
+    CHANGES: snmpd: xfs, jfs and vxfs filesystems are now recognized in hrStorageTable
+
+commit 747fdc71e64d09e080928ebbb4d04cbde3906799
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Wed Oct 5 15:57:59 2011 +0200
+
+    CHANGES: snmpd: Lowered severity of 'error finding row index in _ifXTable_container_row_restore' message.
+    
+    The message is shows up when snmpd is started and there is different set of network interfaces than it was when snmpd wast last stopped. This is common on ppp-servers or virtual hosts.
+
+commit 250f698e59eab9f1ffd332ff59fdb72ea0df06ff
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 23 08:51:23 2011 +0200
+
+    CHANGES: building: Make the transport configuration code work again
+    
+    Previously the transport inheritance processing code ran with
+    NETSNMP_FEATURE_CHECKING set. In this mode the file net-snmp/feature-details.h
+    is requiered. That file is created during the first make run, and that happens
+    after configure is run.
+    Change this to undefine NETSNMP_MINIMAL_CODE, effectively turning off feature
+    support during transport configuration in order to make it work at all.
+
+commit 6ef6907642247c663b9b8964b9fd44a211dbcaa7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Oct 20 20:30:54 2011 +0200
+
+    CHANGES: snmpd: BUG: 3408398: Fix a memory leak in agent/mibgroup/hardware/fsys.
+    
+    This memory leak was introduced via commit
+    9bf3d96d96a8ecd4a5fc35c326dc937467002b6c: Initial HAL
+    implementation of FileSystem information (March 7, 2008).
+
+commit cf82b894b2217c26edc6f1356351c932415604e2
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Sat Oct 15 14:45:08 2011 +0200
+
+    CHANGES: snmplib: BUG: 3423915: Change default number of retries back from 0 to 5
+    
+    This patch fixes a bug introduced via commit 6cac050 (May 5, 2011,
+    added support for specifying the default number of retries in
+    snmpd.conf).
+
+commit c11adaa12915abfee629bb6c026c21f2185b216e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 17 10:24:46 2011 +0200
+
+    CHANGES: Win32: Avoid that compiling the header file <net-snmp/net-snmp-config.h> with the MinGW gcc compiler triggers warnings about "pragma comment".
+
+commit b17a72a793483aee4a5bb2f2e2c7f4fd869817e6
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 17 10:22:20 2011 +0200
+
+    CHANGES: Win32: Avoid that the PACKAGE_* macros defined in <net-snmp/net-snmp-config.h> cause trouble when including this header in a package that uses the GNU autotools.
+
+commit 664d3ae107d754051b8c42279d459aa57a1be1c3
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 16:47:16 2011 +0200
+
+    MinGW, hw_fsys: Use proper format specifiers in a debug statement.
+    
+    This patch fixes an issue introduced in commit 76ff25d.
+
+commit 211dcb49306561e35ba3c213be7cfa257b40a8e5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 15:52:43 2011 +0200
+
+    Avoid that gcc 4.6 complains about set but not used variables
+
+commit 9f653f73e5aa70f0bef1174632e95594f87f669f
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Oct 10 13:02:25 2011 +0200
+
+    CHANGES: snmptrapd_sql: Avoid that a linker error is triggered on systems where my_progname is missing in libmysqlclient (e.g. Fedora 15 and 16).
+
+commit 4c83b9229a7454f34f6ff75f69e67e4030c419b5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 15:58:45 2011 +0200
+
+    CHANGES: snmplib: Set the rpath for libperl.so in libnetsnmpmibs.so such that the dynamic linker can find libperl.so without requiring the user to modify the dynamic linker settings.
+    
+    This change in agent/Makefile.in is necessary on the 5.5 branch and
+    later but not on the 5.4 branch. That is because the 5.4 branch uses
+    an older version of libtool that propagates the rpath of dependent
+    libraries. This is called inter-library dependency tracking in the
+    libtool manual. This functionality is present in libtool version 1
+    but not in libtool version 2. For more background information about
+    dynamic libraries and rpaths, see also the document with the title
+    "RpathIssue" on the Debian wiki (http://wiki.debian.org/RpathIssue).
+
+commit 8925c912d2639752a84bcffeef1b70a81026449b
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 14:21:28 2011 +0200
+
+    CHANGES: agent: HOST-RESOURCES-MIB: Add missing brace in a debug statement
+
+commit 76ff25d9bf97579e7213102065fd5096f049a4c5
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Oct 7 14:13:18 2011 +0200
+
+    CHANGES: snmpd: HOST-RESOURCES-MIB::hrStorageTable: fix bug in handling large filesystems, where large means above 8 TB (= 2**31 * 4096 bytes).
+    
+    This patch fixes a bug introduced in commit
+    71d8293f387a6cd66bb0dbb13c0f50174d2e678b.
+    For the original bug report, see also
+    https://sourceforge.net/tracker/?func=detail&atid=112694&aid=3419825&group_id=12694.
+
+commit 866033db9904ffb1203f283f838092e4cf68de6b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Oct 6 07:33:27 2011 +0200
+
+    CHANGES: snmpd: Remove spurious #endif that seems to be the result of a mismerge.
+
+commit 20f4f3267ee20d55705b7a43789879c103f96620
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Thu Oct 6 00:08:59 2011 +0200
+
+    CHANGES: building: Add missing end comments to feature ifndefs.
+
+commit e5de2cc57bf304f3320cad0034d2ea2d8aedc436
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 5 09:15:10 2011 +0200
+
+    CHANGES: agent: Log a more detailed error message if embedded perl initialization fails
+
+commit 5eef9990de28f63111e6c093be0f3c7ae2d513a1
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Oct 5 08:45:49 2011 +0200
+
+    CHANGES: perl: Add agent::uptime()
+
+commit 6810ed42f9bc560750d6dbfb7e50b6e2ac11899c
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 30 11:01:23 2011 +0200
+
+    CHANGES: Cywin: agent: Implement get_uptime() such that querying HOST-RESOURCES-MIB::hrSystemUptime returns a non-zero value.
+
+commit 97172b311d20f4441c7a7e90092b59c1e0da99f7
+Author: Thomas Jarosch <tjarosch@users.sourceforge.net>
+Date:   Wed Oct 5 08:46:39 2011 +0200
+
+    CHANGES: PATCH: 3418649: HOST-RESOURCES-MIB: Use pclose() instead of fclose() to close a pipe.
+
+commit 6591937adb85000c27069c4be84cf4688838ebcd
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 16:18:03 2011 +0200
+
+    CHANGES: building: Add dependencies on @FEATURETARGS@ to make the subtarget work as well.
+
+commit b9c8012ec035bc084f175876fecc375195f9be81
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 14:02:58 2011 +0200
+
+    CHANGES: building: Add target to build agentxtrap from the toplevel
+
+commit 995647c0cfe00412262cc5797bdfae9d00b70c76
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 15:44:36 2011 +0200
+
+    CHANGES: building: Remove the use of -L flags for internal libraries as it confuses libtool.
+
+commit 93dc1235a0db58ffd29617cff00dc11263780202
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 11:31:46 2011 +0200
+
+    CHANGES: building: Make make apps work again
+    
+    apps include snmptrapd and that require the agent libraries as well.
+
+commit ba41488ed44cd23c25963d4fc56c476853b2ab59
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sun Oct 2 11:29:33 2011 +0200
+
+    CHANGES: building: When you say make libs you expect all the libs to be built.
+    
+    This is demonstrated by the snmptrapd target at the top level which obviously
+    expected both libs to be built and so failed to compile before this patch.
+
+commit 3057c73e093473be46254bcdfb4ca788e432d1b8
+Author: Jan Safranek <jsafranek@users.sourceforge.net>
+Date:   Tue Sep 30 07:32:52 2008 +0000
+
+    NEWS: building: PATCH: 2091156: correctly declare dependencies in Makefile.
+    'make -j <N>' should work now.
+    
+    Backport this to V5-4 as it is needed for correct operation in the single
+    threaded case of make miblib as well.
+
+commit 6eae340fa2a64086592982cc52735bc01487d978
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Sat Oct 1 19:33:50 2011 +0200
+
+    CHANGES: building: Silence libbsd 0.3.0 nagging
+    
+    If you have libbsd 0.3.0 installed then their version of nlist.h warns and
+    tries to make you include bsd/nlist.h instead. The problem is that we don't
+    need that compatibility library as we know how to do it ourself so it becomes
+    pure nagging. This patch adds a define that changes the warning into an
+    error and then figures out that there is no usable nlist.h and ignores it
+    for the future.
+
+commit ac38cb531bee50edc8d4c834f3005f5992c771d8
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 19:03:02 2011 +0200
+
+    CHANGES: perl: Enable sending SNMPv2 traps with an empty varbind list
+
+commit a75de2971527ac2d2e812024298602bb2412f337
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 30 10:41:44 2011 +0200
+
+    perl/SNMP/SNMP.xs: Update emacs modeline
+
+commit 848f6300efe38492fb454451a030f0b7e6ff8c9d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 30 10:41:44 2011 +0200
+
+    perl/SNMP/SNMP.xs: Update emacs modeline
+
+commit c1374473ecd8ec9e0310013861ee18c83e5d6c5b
+Author: Magnus Fromreide <magfr@lysator.liu.se>
+Date:   Fri Sep 30 03:29:36 2011 +0200
+
+    CHANGES: testing: Protect the use of $OSTYPE to ensure that 'test' get enough parameters.
+
+commit 7e97a20633a57eae39d015b23339463c32f5f848
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 10:22:08 2011 +0200
+
+    CHANGES: testing: Convert snmplib/test_binary_array.c into two unit tests
+
+commit 9c0dd98176457342fffaa5e74d802e3145ed70e7
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 08:56:17 2011 +0200
+
+    CHANGES: testing: Add unit test for netsnmp_register_old_api()
+
+commit 5fd26e4fa3e000ea9c81c38ab975b7946efe2157
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 28 17:49:55 2011 +0200
+
+    CHANGES: agent: Avoid that netsnmp_register_old_api() failure triggers a double free.
+    
+    Fixes a regression introduced via commit
+    aa4d47c2609e52818c9cdf1a8e2205de9a335a0a (svn r19515).
+
+commit d2252d016693807326f72b66123649dea00af916
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 29 10:20:08 2011 +0200
+
+    CHANGES: testing: Require a semicolon after OK(), OKF() and PLAN()
+    
+    Also, let OKF() emit a single line of output such that all output it
+    produces is visible in the output of "make test".
+
+commit 1421924b4852142192c5bb9e93ddbfed69e908fa
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 21 22:20:08 2011 +0200
+
+    CHANGES: snmplib: Avoid waiting indefinitely if a session has timeout zero
+
+commit 5f27f4f74ae2bd5baf503cf306b4f9a2841a57cf
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:32:03 2011 +0200
+
+    CHANGES: MinGW: testing: Fix a race condition in the test runner
+
+commit 09703958cc5ea845929ae19ef9e0804aecaa512e
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 27 12:42:41 2011 +0200
+
+    CHANGES: testing: Avoid false negative for T114agentxagentxtrap_simple caused by the test result being present in the hex dump ("mostly_harmless")
+
+commit 439300279f6f31438638d2f222c24c3c841fa6ab
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 27 11:16:32 2011 +0200
+
+    CHANGES: building: Micro-optimize agent module dependency analysis
+    
+    This makes the agent module dependency analysis carried out by the
+    configure script slightly faster, especially on those systems where
+    fork() is expensive (Cygwin).
+
+commit bbc680004a1376038dfdc4172dbe7b9e311fba68
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Sep 26 10:14:45 2011 +0200
+
+    CHANGES: MinGW: testing: Make test T130snmpv1vacmget_simple pass
+
+commit 70b06cf789208eaa890bfbcd638bdb775f817054
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 20 09:50:57 2011 +0000
+
+    CHANGES: Windows: testing: perl: Fix an incorrect message printed while running the Perl module regression tests
+
+commit 70bcc8de2d0fc92bbb8481823630fab9bc87af75
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Fri Sep 16 16:14:24 2011 +0200
+
+    CHANGES: MinGW: testing: Obtain the MSYS path from the environment
+
+commit 626275e2d1acafae7144a33ed301a40f596b37b0
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Wed Sep 14 13:14:17 2011 +0200
+
+    CHANGES: Windows: Remove superfluous link libraries from project files (*.dsp)
+
+commit 38fc3caa9eeb3800254b4f6ad6f8f4764c0f83db
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 20 09:34:08 2011 +0200
+
+    CHANGES: snmplib: Make netsnmp_callback_accept() return -1 (failure) instead of 0 (STDIN_FILENO)
+
+commit 6c8c7e8aca8fc2eeb52010ae3e9fee6dd83ef780
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 13 09:58:26 2011 +0200
+
+    CHANGES: snmplib: Remove obsolete snmp_get_fd_for_session() declaration
+
+commit 0860d11fd8fc5dbdaaae2261fae2c07fb9c2c82d
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 8 13:54:55 2011 +0200
+
+    CHANGES: Windows: MSVC: Avoid that the typedefs in <net-snmp/net-snmp-config.h> conflict with those in <stdint.h> from the msinttypes project
+
+commit f8a036f63ff68f083436120e0abd478b692a2f61
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Sep 8 13:21:06 2011 +0200
+
+    CHANGES: Windows: MSVC: When linking with OpenSSL, link with user32.lib too
+
+commit 836a23e10ca810c3899902d32587616a9d1203df
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Thu Jul 14 18:38:13 2011 +0200
+
+    CHANGES: Windows: MSVC: Link with proper libeay32 library
+
+commit 7b07fd6cdef49ec7bb04b166e2a4fbb37b582840
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 11:10:38 2011 +0200
+
+    CHANGES: testing: Remove an incorrect comment from simple_eval_tools.sh
+
+commit 98f6d29d981ff8e607600c63dadb240535629807
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:49:03 2011 +0200
+
+    CHANGES: testing: Make ISDEFINED() check for an exact match instead of a prefix match
+
+commit 52cd0031a31f692f13263a94c335d06be1454803
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:59 2011 +0200
+
+    CHANGES: MinGW: testing: Make those regression tests pass for which SNMPCONFPATH and/or SNMP_PERSISTENT_DIR matter
+
+commit f5cd89bd3356dd74e1556c0b50966a643f192085
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:59 2011 +0200
+
+    CHANGES: MinGW: testing: Fix a race condition in the test framework
+
+commit deedd52c834a6448852a06785536e13865969694
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Tue Sep 6 10:12:58 2011 +0200
+
+    CHANGES: MinGW: Support the directory structure of recent Shining Light OpenSSL binary distributions
+
+commit d55bd4e0549f03b6fd32562c2aa7fe39272a9ef7
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Sep 28 06:55:19 2011 -0700
+
+    remove the v5.7 from the frozen list
+
+commit ac2aed3c94bb2ebb473af0a1e20f0561ad629956
+Author: Wes Hardaker <hardaker@users.sourceforge.net>
+Date:   Wed Sep 28 06:55:11 2011 -0700
+
+    remove the v5.7 from the frozen list
+
+commit 46eac02e9a27bf4f3068e795cab891f05a848870
+Author: Bart Van Assche <bvanassche@acm.org>
+Date:   Mon Sep 26 21:49:27 2011 +0200
+
+    CHANGES: snmpd: Avoid that snmpd crashes if started on a system with another OpenSSL library version than the one it has been built with.
+
+----------------------------------------------------------------------
+
+Changes: V5.7.rc3 -> V5.7.1
+
+2011-09-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7.1
+
+
+2011-09-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * ChangeLog: version update for 5.7.1.rc3
+
+----------------------------------------------------------------------
+
+Changes: V5.7.rc2 -> V5.7.1.rc3
+
+2011-09-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7.1.rc3
+
+
+2011-09-22  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : commit 07f61a02a2409096e5c962cd211126396ad09d2b Merge: ee0d3ad
+
+ bda324b Author: Dave Shield <D.T.Shield@liverpool.ac.uk> Date:   Thu
+ Sep 22 10:39:59 2011 +0100
+
+2011-09-22  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : commit c55f608f16f160f5e79dc057f8878def462973e1 Author: Dave
+
+ Shield <D.T.Shield@liverpool.ac.uk> Date:   Thu Sep 22 10:35:24 2011
+ +0100
+
+2011-09-22  Steve Friedl <steve@unixwiz.net>
+
+   * agent/mibgroup/ucd-snmp/disk_hw.c: CHANGES: snmpd: 3409692:
+
+ Calculate disk percentage usage via floating-point arithmetic to
+ avoid integer arithmetic errors.  (Code based on patch, rather than
+ applied verbatim)
+
+2011-09-22  Steve Friedl <steve@unixwiz.net>
+
+   * agent/mibgroup/ucd-snmp/disk_hw.c: CHANGES: snmpd: 3409692:
+
+ Calculate disk percentage usage via floating-point arithmetic to
+ avoid integer overflow errors.  (Code based on the submitted patch,
+ rather than applied verbatim)
+
+2011-09-22  Bart Van Assche <bvanassche@acm.org>
+
+   * ChangeLog: The only change between V5.7.rc1 and V5.7.1.rc2 is the
+
+ version number. Make this clear in the ChangeLog file.
+
+2011-09-21  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * ChangeLog: changelog update
+
+----------------------------------------------------------------------
+
+Changes: V5.7.rc1 -> V5.7.1.rc2
+
+2011-09-21  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7.1.rc2
+
+
+2011-09-04  Magnus Fromreide <magfr@lysator.liu.se>
+
+   * : commit 4d6defdae72c35b1080076180313d2910568475b Merge: d3a758c
+
+ 3b7fdc4 Author: Magnus Fromreide <magfr@lysator.liu.se> Date:   Sun
+ Sep 4 14:46:02 2011 +0200
+
+2011-09-04  Magnus Fromreide <magfr@lysator.liu.se>
+
+   * : commit bbe2c19a01ecec024f741e2e54701ae6212f4c3e Author: Magnus
+
+ Fromreide <magfr@lysator.liu.se> Date:   Sun Sep 4 14:44:38 2011
+ +0200
+
+2011-09-04  Magnus Fromreide <magfr@lysator.liu.se>
+
+   * : commit d3a758cf30254b80706a43f191c15238b2cb73c9 Merge: c107ce0
+
+ 227dbd7 Author: Magnus Fromreide <magfr@lysator.liu.se> Date:   Sun
+ Sep 4 14:08:35 2011 +0200
+
+2011-09-04  Magnus Fromreide <magfr@lysator.liu.se>
+
+   * : commit 9efa467a972bb6e1c7fbdaf2e27429d29f4ab89e Author: Magnus
+
+ Fromreide <magfr@lysator.liu.se> Date:   Sun Sep 4 14:00:12 2011
+ +0200
+
+----------------------------------------------------------------------
+
+Changes: V5.7.pre2 -> V5.7.1.rc1
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend, 
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend, 
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend: make
+
+ depend for 5.7.1.rc1
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/read_config.c: fix C++ comment
+
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7.1.rc1
+
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit c107ce078409d265b9b218d49f3815b795db1dc3 Merge: ea4b3b2
+
+ 915aa8d Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Tue Aug 30 19:07:07 2011 -0700
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 422b082a9593ca9c65aac449e6d128a9e97e94fb Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Tue Aug 30
+ 19:06:56 2011 -0700
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit ea4b3b23f350583e5626328b5367e6c617255f95 Merge: bcf38b8
+
+ b34d5dc Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Tue Aug 30 16:38:25 2011 -0700
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 71c0d7650493710631fa08d5dc4dad501a9aa771 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Tue Aug 30
+ 16:37:41 2011 -0700
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit b13f4d8886b6a4e73bc07df2b90d1a6115cf3dfc Merge: f7e21f2
+
+ 64e9778 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Tue Aug 30 11:09:30 2011 -0700
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit b5d2a43f97a59858c944eba2290b59b93c230a6a Merge: 86efee2
+
+ cf4cf7f Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Tue Aug 30 11:09:29 2011 -0700
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-6-patches' into
+
+ V5-6-patches
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: auto-determine patch arguments if
+
+ possible for nspatchtry
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: make it so the git commit line can
+
+ be cut/paste without linebreaks
+
+2011-08-30  Ronald Wahl <rwa-co@users.sourceforge.net>
+
+   * snmplib/read_config.c: CHANGES: libnetsnmp: PATCH 3394586: from
+
+ rwa-co: file descriptor leak in read_config (+fix) Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-30  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: describe that nsrollup needs to be run now.
+
+
+2011-08-30  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : commit 2b92a0a1e3a0618c515ebd902271b95c08931afa Merge: a086347
+
+ 86efee2 Author: Dave Shield <D.T.Shield@liverpool.ac.uk> Date:   Tue
+ Aug 30 11:28:14 2011 +0100
+
+2011-08-30  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * agent/mibgroup/hardware/fsys/fsys_mntent.c: Apparently IRIX has a
+
+ different API for statfs
+
+2011-08-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_tdata.c: don't provide a feature when your a
+
+ child of another feature
+
+2011-08-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-7-patches' into
+
+ V5-7-patches
+
+2011-08-28  Magnus Fromreide <magfr@lysator.liu.se>
+
+   * apps/Makefile.in: Use the feature target instead of the target
+
+ when building the feature set
+
+2011-08-29  Thomas Anders <tanders@users.sourceforge.net>
+
+   * agent/mibgroup/hardware/fsys.h: the irix6 build only defines
+
+ irix6, not irix
+
+2011-08-29  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  configure, configure.d/config_os_struct_members, 
+      include/net-snmp/net-snmp-config.h.in: re-add sockaddr_un.sun_path
+
+ configure check (lost in previous commit)
+
+2011-08-28  Thomas Anders <tanders@users.sourceforge.net>
+
+   * agent/mibgroup/hardware/fsys.h: 
+
+ agent/mibgroup/hardware/fsys/fsys_mntent.c doesn't build on IRIX yet
+
+2011-08-28  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit a0863479d80962c652947dfdee11bdd136c0e013 Merge: 5250893
+
+ f95aa31 Author: Thomas Anders <tanders@users.sourceforge.net> Date:
+ Sun Aug 28 23:37:27 2011 +0200
+
+2011-08-28  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  configure, configure.d/config_os_struct_members, 
+      include/net-snmp/net-snmp-config.h.in, snmplib/snmpUDPDomain.c, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: building: build fix
+
+ for systems lacking fields msg_control/msg_flags in struct msghdr
+ (backport)
+
+2011-08-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interface.m2c: added required features for
+
+ mfd handling
+
+2011-08-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * .gitignore: added .ft and .ft.1 for feature files
+
+
+2011-08-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * perl/agent/agent.xs: no_write_support supported
+
+
+2011-08-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interface.m2c: handle no-write-support with
+
+ ifdefs
+
+2011-08-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 525089327aba7d01d633c634c6b6f06de42acbb8 Merge: 1bb234a
+
+ 04fd71a Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 25 06:57:21 2011 -0700
+
+2011-08-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit ea8bed79e81c42e33cbf37ca6f3c03c549987b22 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Thu Aug 25
+ 06:56:22 2011 -0700
+
+2011-08-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * python/netsnmp/client.py: use >> to print to stderr
+
+
+2011-08-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * local/minimalist/feature-remove: CHANGES: build: Do not generate
+
+ an output file on failure make supposes that no output is generated if the command failed.
+ Change feature-remove to follow that presumption.
+
+2011-08-21  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * local/minimalist/feature-remove: Correct typo
+
+
+2011-08-23  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 1bb234a6cc36e6a4efbe3fb29c480210dc2b9c13 Merge: 35a98c3
+
+ 1f082a3 Author: Thomas Anders <tanders@users.sourceforge.net> Date:
+ Tue Aug 23 23:38:07 2011 +0200
+
+2011-08-23  Thomas Anders <tanders@users.sourceforge.net>
+
+   * configure, configure.d/config_os_struct_members: make sure that
+
+ _KERNEL is defined to 1 so that "#if _KERNEL" works on systems that
+ need it (e.g. IRIX)
+
+2011-08-23  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 35a98c3d7c5a3c5df356add9e8b808287899b69a Merge: 1f37f57
+
+ a27f744 Author: Thomas Anders <tanders@users.sourceforge.net> Date:
+ Tue Aug 23 23:30:27 2011 +0200
+
+2011-08-23  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 26bb2470c106f834442a2adbc7611bf16657fbdf Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Tue Aug 23 23:22:44
+ 2011 +0200
+
+2011-08-22  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : autoreconf
+
+
+2011-08-22  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  configure.d/config_os_struct_members, 
+      snmplib/transports/snmpUDPBaseDomain.c, 
+      snmplib/transports/snmpUDPDomain.c, 
+      snmplib/transports/snmpUDPIPv4BaseDomain.c, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: building: build fix
+
+ for systems lacking field msg_flags in struct msghdr (e.g. IRIX)
+
+2011-08-21  Thomas Anders <tanders@users.sourceforge.net>
+
+   * configure: autoreconf
+
+
+2011-08-21  Thomas Anders <tanders@users.sourceforge.net>
+
+   * configure: autoreconf
+
+
+2011-08-21  Thomas Anders <tanders@users.sourceforge.net>
+
+   * configure: autoreconf
+
+
+2011-08-21  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit b62cb0864f577ba85573d0d250d12a39387c07b4 Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Sun Aug 21 00:55:33
+ 2011 +0200
+
+2011-08-21  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 71b90b6f217944b4ffc1836e5160d40e33b4423d Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Sun Aug 21 00:40:28
+ 2011 +0200
+
+----------------------------------------------------------------------
+
+Changes: V5.7.pre1 -> V5.7.1.pre2
+
+2011-08-18  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend, 
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend, 
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend: make
+
+ depend for 5.7.1.pre2
+
+2011-08-18  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7.1.pre2
+
+
+2011-08-18  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 03053479604bc83efbea579b4562b1831cea1cb6 Merge: f73e636
+
+ d94df39 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 18 11:57:46 2011 -0700
+
+2011-08-18  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 28b54070514753e8d8abb718b224d657ab7a8ab8 Author: Garrett
+
+ Cooper <yaberauneya@users.sourceforge.net> Date:   Thu Aug 18
+ 11:49:56 2011 -0700
+
+2011-08-18  Vladimir Kondratiev <wulf2001@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/disk_hw.c: CHANGES: agent: PATCH 3389228:
+
+ from wulf2001: incomplete commit (patch 3386633: fix integer
+ overflow) Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-18  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * man/snmp.conf.5.def: Patch from Claus Klein on -coders for fixing
+
+ man page typos
+
+2011-08-18  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: changed clientaddr so it registers as pre-mib
+
+ to be picked up before the transports get created
+
+2011-08-17  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit c02131e5b35d296755baec99bd363205a86307dd Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Wed Aug 17
+ 09:34:00 2011 -0700
+
+2011-08-17  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/system.c: Fix the log message that reports that
+
+ gethostbyaddr() is missing
+
+2011-08-17  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 182e1dc0c3eacfa4e9ccdb28600ff0f2370211ae Merge: 499b796
+
+ 517b6b0 Author: Bart Van Assche <bvanassche@acm.org> Date:   Wed Aug
+ 17 18:09:30 2011 +0200
+
+2011-08-17  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 6580556cc7bd833af731b62ce1ed2017564fe7eb Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Wed Aug 17 18:08:01 2011 +0200
+
+2011-08-14  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 499b796cbd78065c3354779136bd3d9d1f548a58 Merge: 0418ff0
+
+ a9cb267 Author: Bart Van Assche <bvanassche@acm.org> Date:   Sun Aug
+ 14 08:02:38 2011 +0200
+
+2011-08-14  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 3cb3f1ede388d84e392e1d815d5994a4bf0f10f9 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Sun Aug 14 07:59:25 2011 +0200
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * perl/OID/OID.xs, perl/SNMP/SNMP.xs, perl/agent/agent.xs: Windows:
+
+ Make the Perl agent module work again with the original SNMP_FREE()
+ definition.
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0418ff0cda21411a47fa8978c3e0d043a19d24b6 Merge: 26b0aa3
+
+ 3c73b48 Author: Bart Van Assche <bvanassche@acm.org> Date:   Sat Aug
+ 13 18:42:05 2011 +0200
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/library/tools.h: Revert the two most recent
+
+ SNMP_FREE() changes (commits
+ 47c8ef1b89c6ccb4247d9633477925908c68c1a5 and
+ 7f42d0d93320484152271427cc9808cbda49bbd0).
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 26b0aa3010fa182b6039a8c2cad8ccb4571652de Merge: 2f3d607
+
+ 0c8e1a9 Author: Bart Van Assche <bvanassche@acm.org> Date:   Sat Aug
+ 13 11:43:20 2011 +0200
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 3e50c3e00e9f321fb708bc579eb4dc1a0f1e7c4d Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Sat Aug 13 11:31:40 2011 +0200
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 2f3d6079dc36aad9559d91c5c324e2ce535573dd Merge: e32aa97
+
+ ff1734d Author: Bart Van Assche <bvanassche@acm.org> Date:   Sat Aug
+ 13 09:08:06 2011 +0200
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit e147e4b96755207de1ce30990d67b4b7c76dd483 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Sat Aug 13 08:39:14 2011 +0200
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * win32/build.pl: CHANGES: Windows: building (build.bat): Install
+
+ netsnmp.dll before running the Perl regression tests such that the
+ regression tests are run with the correct version of netsnmp.dll.
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * win32/Makefile.in: CHANGES: Windows: perl (build.bat): When
+
+ installing development files, install the PDB files too.
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   *  perl/SNMP/t/async.t, perl/SNMP/t/conf.t, perl/SNMP/t/mib.t, 
+      perl/agent/test.pl: CHANGES: testing: Fix Perl regression test
+
+ failures All Perl regression tests pass now on Linux and on Windows (MSVC).
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * perl/SNMP/t/async.t, perl/SNMP/t/bulkwalk.t: CHANGES: testing:
+
+ Perl regression tests: Don't fail skipped tests.
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * perl/SNMP/SNMP.pm, perl/SNMP/SNMP.xs: CHANGES: perl: Add
+
+ SNMP::getenv() and SNMP::setenv().
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/library/tools.h, snmplib/tools.c: CHANGES:
+
+ snmplib: Add netsnmp_setenv().
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * local/pass_persisttest: local/pass_persisttest: document how to
+
+ use on Windows
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * local/pass_persisttest: Set execute flag on local/pass_persisttest
+
+ such that the instructions in that file work
+
+2011-08-13  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Fix a suppression pattern
+
+
+2011-08-12  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit e32aa97742232ced3a72f8b845ace5ce3d53b8df Merge: 4adfec8
+
+ 86fbd33 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Fri Aug 12 09:11:14 2011 -0700
+
+2011-08-12  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit a73eb40ec263a0fdf53a74e720ddf41c4a7ee3d4 Merge: 7690894
+
+ 2940ee3 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Fri Aug 12 09:11:13 2011 -0700
+
+2011-08-12  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 1f0a928a2913cfa7f5ceaaf4696c69fbdc687621 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Fri Aug 12
+ 09:09:11 2011 -0700
+
+2011-08-11  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 4adfec81216f6c5bf25c9ac6b2b7478d1be8e842 Merge: 281b869
+
+ 2940ee3 Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 11 18:57:29 2011 +0200
+
+2011-08-11  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 1e1000a8815921b5ec2e7997b53592a544b3dfc2 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Aug 11 15:46:32 2011 +0200
+
+2011-08-11  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 281b86961b10266ddf3883942d4dc3b6b98d3227 Merge: d8d225c
+
+ f181099 Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 11 18:46:06 2011 +0200
+
+2011-08-11  Bart Van Assche <bvanassche@acm.org>
+
+   * : Merge V5-4-patches.
+
+
+2011-08-10  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/host/data_access/swrun.c: don't assert on a double
+
+ init; just don't do it twice
+
+2011-08-10  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit d8d225ca34a8f22752153acb7944f9435f564d2c Merge: 06b4186
+
+ 47c8ef1 Author: Bart Van Assche <bvanassche@acm.org> Date:   Wed Aug
+ 10 18:05:21 2011 +0200
+
+2011-08-10  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/library/tools.h: SNMP_FREE(): cast argument to
+
+ (void *) before passing it to netsnmp_free()
+
+2011-08-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 06b41865ec302c3931b1083d3fde89f9345ec06f Merge: 11426fb
+
+ a4f6ac7 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Tue Aug 9 06:44:41 2011 -0700
+
+2011-08-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 11426fb3c6f327820b9bb86a76ecc9e2c37e7934 Merge: 0344df9
+
+ 9bf0681 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Tue Aug 9 06:44:11 2011 -0700
+
+2011-08-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-09  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 9bf0681218edf43cdb5fc68f172123bc4a2d0188 Merge: f9db611
+
+ ccb0eb6 Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Aug
+ 9 08:19:33 2011 +0200
+
+2011-08-09  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit de7e348ece03d2380c2a8806ebbad5d9b5487682 Merge: d538bcb
+
+ ccb0eb6 Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Aug
+ 9 08:07:22 2011 +0200
+
+2011-08-09  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0220392d899a9cab701f74af12030bb1d4cc5e2e Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Jul 1 13:02:15 2011 +0200
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * CHANGES, NEWS: version update for 5.7.1.pre1
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * ChangeLog: version update for 5.7.1.pre1
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/snmpd.c: fix C++ comments
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/snmpd.c: fix C++ comments
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/snmpd.c: fix C++ comments
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/snmpd.c: fix C++ comments
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec, perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm,
+       perl/OID/OID.pm, perl/SNMP/SNMP.pm, 
+      perl/TrapReceiver/TrapReceiver.pm, perl/agent/Support/Support.pm, 
+      perl/agent/agent.pm, perl/agent/default_store/default_store.pm, 
+      perl/default_store/default_store.pm: Version number update:
+
+ 5.7.1.pre1
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * Makefile.top: version update for 5.7.1.pre1
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit cf4cce4c189cf47f4c489db43b7fa510f8906a1a Merge: df91a9f
+
+ 93e97dc Author: Dave Shield <D.T.Shield@liverpool.ac.uk> Date:   Mon
+ Aug 8 22:15:28 2011 +0100
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : Merge remote-tracking branch 'origin/V5-6-patches' into
+
+ V5-6-patches
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   *  win32/Makefile-apps.in, win32/dist/README.build.win32.txt, 
+      win32/libagent/Makefile.in, win32/libnetsnmptrapd/Makefile.in, 
+      win32/libsnmp/Makefile.in, win32/libsnmp_dll/Makefile.in, 
+      win32/netsnmpmibs/Makefile.in, win32/snmpd/Makefile.in, 
+      win32/snmpnetstat/Makefile.in, win32/snmptrapd/Makefile.in: Define
+
+ _BIND_TO_CURRENT_VCLIBS_VERSION token (as per Alex' build
+ instructions)
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   *  win32/Makefile-apps.in, win32/libagent/Makefile.in, 
+      win32/libhelpers/Makefile.in, win32/libnetsnmptrapd/Makefile.in, 
+      win32/libsnmp/Makefile.in, win32/libsnmp_dll/Makefile.in, 
+      win32/netsnmpmibs/Makefile.in, win32/snmpd/Makefile.in, 
+      win32/snmpnetstat/Makefile.in, win32/snmptrapd/Makefile.in: Define
+
+ _BIND_TO_CURRENT_VCLIBS_VERSION token (as per Alex' build
+ instructions)
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit df16dc2221e993dd3c66650d5e872577ffe6c01b Merge: 714bc82
+
+ 8e5a28d Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 13:56:43 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit ffa05b051ac3e2b197195a9989cc7a91fe8d9282 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Mon Aug 8 13:55:38
+ 2011 -0700
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : commit 714bc82fa01e21a3655824963fa54e9b8042ffb0 Merge: 6fe8fe5
+
+ 3ef1db5 Author: Dave Shield <D.T.Shield@liverpool.ac.uk> Date:   Mon
+ Aug 8 21:21:46 2011 +0100
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : commit b451607dca015c111e96fdfeb2ddb0661fb4f724 Author: Dave
+
+ Shield <D.T.Shield@liverpool.ac.uk> Date:   Mon Aug 8 21:20:32 2011
+ +0100
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 6fe8fe5294a45bc7e4ea3751a1ad7aa47b5cabb2 Merge: 364f8ff
+
+ f69abe3 Author: Bart Van Assche <bvanassche@acm.org> Date:   Mon Aug
+ 8 22:02:38 2011 +0200
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit c94813044a4c4a608e98e80223075c6faf04ee11 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Mon Aug 8 21:56:15 2011 +0200
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 364f8ffaeb90b4eb0165fc855688cd0626632794 Merge: 3287295
+
+ 7abb926 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 11:24:26 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-6-patches' into
+
+ V5-6-patches
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: display the branch we'll commit to
+
+
+2011-08-08  Vladimir Kondratiev <wulf2001@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/disk_hw.c: CHANGES: snmpd: PATCH 3386633:
+
+ from wulf2001: fix integer overflow in disk percent calculations Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 84a775d0557fea97570e41715a3164970b4c03a2 Merge: 6fff1c1
+
+ d373c4f Author: Bart Van Assche <bvanassche@acm.org> Date:   Mon Aug
+ 8 20:12:32 2011 +0200
+
+2011-08-08  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * agent/agent_trap.c: CHANGES: libnetsnmp: PATCH 3387139: from
+
+ yaberauneya: Avoid segfault if trapsess transport element cant be
+ parsed Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: nssfpatchapply: split the
+
+ displayed git commit command into multiple segments
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/helpers/scalar_group.c: CHANGES: snmplib: PATCH: 3386961:
+
+ Make SNMP GET work in an AgentX subagent if write support is
+ disabled via NETSNMP_NO_WRITE_SUPPORT (Mark Rusk).
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/mib.c: CHANGES: snmplib: Fix a crash that could be
+
+ triggered by calling _mibindex_add() with the second argument not
+ equal to -1.
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 6fff1c1ae51b06c9d80faf15373a963d173f14e8 Merge: 837c52e
+
+ 8cc9004 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 10:58:59 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 8ca7ff1e692caec4186b788c9ae2d27be213290f Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Mon Aug 8 10:33:56
+ 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit b8f529cba27c0114b4cb7340cfd449504fa07506 Merge: 0822f2d
+
+ 556e938 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 10:05:36 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: fix function name typo
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 29882a078a959a0f78b03e01968f1d17b7f6a299 Merge: 5e9bd2f
+
+ 0409c0a Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 10:03:34 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : manual merge of pull/push
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: make nspull/nspush check for a
+
+ clean repo
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: new function "nsmakeall" to test
+
+ building on every branch
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: default to merge
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-7-patches' into
+
+ V5-7-patches
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/library/tools.h: CHANGES: Windows: Avoid that if
+
+ the Net-SNMP Perl modules have been built with another version of
+ Microsoft Visual Studio than ActivePerl that using one of these Perl
+ modules triggers a "Free to wrong pool" crash. This regression was
+ caused by commit 3b14c59cf8278d410207ff42debda2636426a468 (the
+ netsnmp_free() into SNMP_FREE() changes in the *.xs files).
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit e109539930703cb3052d5241b18ac6fc062faaca Merge: 0c9b6cb
+
+ e46b170 Author: Bart Van Assche <bvanassche@acm.org> Date:   Mon Aug
+ 8 18:34:11 2011 +0200
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/mib.c: CHANGES: snmplib: Fix a crash that could be
+
+ triggered by calling _mibindex_add() with the second argument not
+ equal to -1.
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 7f42d0d93320484152271427cc9808cbda49bbd0 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Mon Aug 8 09:50:51 2011 +0200
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0c9b6cbe9dbe2ec5217a95b6781fd7dc1f6ebda7 Merge: fa6cef5
+
+ 963320f Author: Bart Van Assche <bvanassche@acm.org> Date:   Mon Aug
+ 8 18:14:36 2011 +0200
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit a3b8654a232c563bc97cc9925cd98590a30c5bc5 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Mon Aug 8 17:24:18 2011 +0200
+
+2011-08-07  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit fa6cef5ca91df3a0b03455b68559d2bee248101c Merge: f5fe536
+
+ 8add0da Author: Bart Van Assche <bvanassche@acm.org> Date:   Sun Aug
+ 7 10:18:54 2011 +0200
+
+2011-08-07  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit a0dd3caf25926e43465718bf417a464c2fb36366 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Sun Aug 7 10:17:01 2011 +0200
+
+2011-08-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: 32 is too limited for
+
+ bigger tables; increase the max msg count to 128
+
+2011-08-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: make rollup and sync support
+
+ --rebase and change the default back to merge
+
+2011-08-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * README.win32: CHANGES: Win32: Documented how to use build.bat with
+
+ OpenSSL enabled
+
+2011-07-15  Bart Van Assche <bvanassche@acm.org>
+
+   * README.win32: CHANGES: Windows: Remove outdated instructions about
+
+ editing win32\libsnmp_dll\libsnmp.def from README.win32
+
+2011-07-15  Bart Van Assche <bvanassche@acm.org>
+
+   * README.win32: CHANGES: Win32: Document how to build 64-bit
+
+ executables for the x64/amd64 architecture
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit f5fe536e8fd6c48fe243decd31fac9cf1c92f4cc Merge: 7850ea1
+
+ 80928a8 Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Aug
+ 5 15:13:27 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 80928a8909cfab37f01b39a071a3e8ad85956222 Merge: f16a094
+
+ 0dbc869 Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Aug
+ 5 13:57:30 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0dbc869fec07d8e90dbd1c95493ee7cbc623c95c Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Aug 5 12:40:31 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Add
+
+ perl/agent/default_store/default_store.def and perl/SNMP/t
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 86c1e2b9679fec2cd799ba76005c3d60e9d47634 Merge: bcd8635
+
+ f16a094 Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Aug
+ 5 12:20:50 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 2f8d4f5796cbc1c7e967acdaa8019b24f1520a36 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Aug 5 12:02:51 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/parse.c: Unbreak the V5-4-patches - revert commit
+
+ d2c4768bd2efb48664434a831425c2dda85d7133 (CHANGES: libnetsnmp: PATCH
+ 3362233: from yaberauneya: Mute unnecessary cannot find module
+ noise).
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/mibII/snmp_mib.c, agent/mibgroup/mibII/snmp_mib.h: 
+
+ Unbreak the V5-4-patches branch - was broken by commit
+ bf7178b0b22587d43d1a80c269cd216bd5930214 (agent: change type of
+ snmp_enableauthentraps to long)
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/library/snmpusm.h: Unbreak the V5-4-patches
+
+ branch - was broken by commit
+ 0e6842fe080cec853b08cd2323015ababc381ce1 (CHANGES: snmptrapd: PATCH
+ 3383441: from sachinsurendran: Fix crash on 5.4.4 due to access of
+ freed memory).
+
+2011-08-05  Thomas Anders <tanders@users.sourceforge.net>
+
+   * NEWS: minor NEWS polish
+
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit bcd86350713822963d376eff582a92f43e426d6c Merge: 9c810a3
+
+ 7a20f71 Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Aug
+ 5 10:28:55 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 3aa949fbdfc1a94a8340ad8baf8b314756a0bb9d Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Aug 5 10:26:15 2011 +0200
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 9c810a3b37b68573c40337e246e2faf299b77d31 Merge: 71cb2e8
+
+ 610d63f Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 10:42:08 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 943930e1e124385fd94738b6dcda37d29dc7ac7f Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Thu Aug 4 10:41:41
+ 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 4edcb88dae8b2e59dc683e80d414fa7ecec36885 Merge: 65f3eef
+
+ 2dd9ed0 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 10:24:11 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-5-patches' into
+
+ V5-5-patches
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit bc5ca03a04ab19c634a34d060b0b16b7484cb520 Merge: 88fddb7
+
+ 90c0e75 Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 4 19:13:07 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/snmp_client.c, snmplib/snmpusm.c: snmpusm: Fix recently
+
+ introduced compiler warnings
+
+2011-08-04  Stuart Henderson <t0jw2fu0kmg@users.sourceforge.net>
+
+   * agent/mibgroup/hardware/memory/memory_netbsd.c: CHANGES: openbsd:
+
+ PATCH 3357932: from t0jw2fu0kmg: Cleaning in memory_netbsd.c Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Vladimir Kondratiev <wulf2001@users.sourceforge.net>
+
+   * agent/mibgroup/hardware/fsys/fsys_getfsstats.c: CHANGES: agent:
+
+ PATCH 3386147: from wulf2001: fix UCD-SNMP-MIB::dskUsed Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 473d7e5cd4d411bba20eb85359d8728063301cbd Merge: a4e8b62
+
+ 88fddb7 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 09:28:22 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 2101bb2d7ad6db038c755aa9193c8ace0dbd4f58 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Thu Aug 4 09:28:06
+ 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * .gitignore: ignore *.orig and *.rej
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: help output describes rebase vs
+
+ merge better
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit f126a17c6a3063455a511940b023047abd9b48ee Merge: ad765f4
+
+ 77a4784 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 09:25:16 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 452e1707f209ec45e7c7f2a3040ef595fb9d1af6 Merge: dc755a6
+
+ b372e5a Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 09:25:03 2011 -0700
+
+2011-08-04  Stuart Henderson <t0jw2fu0kmg@users.sourceforge.net>
+
+   *  Makefile.in, acconfig.h, agent/mibgroup/hardware/cpu.h, 
+      agent/mibgroup/hardware/memory.h, 
+      agent/mibgroup/if-mib/data_access/interface.h, 
+      include/net-snmp/net-snmp-config.h.in, 
+      include/net-snmp/system/openbsd.h, 
+      include/net-snmp/system/openbsd4.h, 
+      include/net-snmp/system/openbsd5.h: CHANGES: openbsd: PATCH
+      3357927:
+
+ from t0jw2fu0kmg: Recognise openbsd5 Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: fix where arguments are set
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: split nssfpatchapply into two
+
+ parts: apply and commiting
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: patch using -N
+
+
+2011-08-04  David Arnold <dja@users.sourceforge.net>
+
+   *  man/default_store.3.bot, man/encode_keychange.1.def, 
+      man/fixproc.1.def, man/mib2c.conf.5.in, man/net-snmp-config.1.def,
+       man/netsnmp_agent_api.3.def, man/netsnmp_mib_api.3.def, 
+      man/snmp.conf.5.def, man/snmpbulkget.1.def,
+      man/snmpbulkwalk.1.def,  man/snmpcmd.1.def, man/snmpconf.1.def,
+      man/snmpd.8.def,  man/snmpd.conf.5.def, man/snmpd.examples.5.def, 
+      man/snmpdelta.1.def, man/snmpdf.1.def, man/snmpget.1.def, 
+      man/snmpgetnext.1.def, man/snmpnetstat.1.def, man/snmpset.1.def, 
+      man/snmpstatus.1.def, man/snmptable.1.def, man/snmptest.1.def, 
+      man/snmptranslate.1.def, man/snmptrap.1.def, man/snmptrapd.8.def, 
+      man/snmptrapd.conf.5.def, man/snmpusm.1.def, man/snmpvacm.1.def, 
+      man/snmpwalk.1.def: CHANGES: man: PATCH 3312861: from dja: Man
+      pages
+
+ hyphen-vs-minus cleanup Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Detect (and reject) OpenSSL
+
+ 1.0.0
+
+2011-08-04  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Command-line options for silent
+
+ install
+
+2011-08-04  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Ensure Windows package
+
+ uninstalls completely.
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 81c63fb5c5e4abb9c29aca89bf9d694410086e97 Merge: 4a6920a
+
+ dc755a6 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 08:33:34 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_client.c: added spacing to match the later branches
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : manual merge
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_client.c: removed accidentially duplicated code
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : manual merge
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : manual merge
+
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * snmplib/parse.c: CHANGES: libnetsnmp: PATCH 3362233: from
+
+ yaberauneya: Mute unnecessary cannot find module noise Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/agent_read_config.c, agent/snmp_vars.c, 
+      configure.d/config_os_headers: CHANGES: freebsd: PATCH 3363308:
+      from
+
+ yaberauneya: Fix compilation on FreeBSD 9.x with recent header
+ shuffling Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: allow nsrollup to take a --merge
+
+ flag for merging instead of rebasing
+
+2011-08-04  Sachin Surendran <sachinsurendran@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpusm.h, snmplib/snmp_client.c, 
+      snmplib/snmpusm.c: CHANGES: snmptrapd: PATCH 3383441: from
+
+ sachinsurendran: Fix crash on 5.4.4 due to access of freed memory Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * Makefile.in: CHANGES: freebsd: PATCH 3363328: from yaberauneya:
+
+ Add FreeBSD 9.x to supported OSes list Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * snmplib/parse.c: CHANGES: libnetsnmp: PATCH 3362233: from
+
+ yaberauneya: Mute unnecessary cannot find module noise Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/agent_read_config.c, agent/snmp_vars.c, 
+      configure.d/config_os_headers: CHANGES: freebsd: PATCH 3363308:
+      from
+
+ yaberauneya: Fix compilation on FreeBSD 9.x with recent header
+ shuffling Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: allow nsrollup to take a --merge
+
+ flag for merging instead of rebasing
+
+2011-08-04  Sachin Surendran <sachinsurendran@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpusm.h, snmplib/snmp_client.c, 
+      snmplib/snmpusm.c: CHANGES: snmptrapd: PATCH 3383441: from
+
+ sachinsurendran: Fix crash on 5.4.4 due to access of freed memory Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * Makefile.in: CHANGES: freebsd: PATCH 3363328: from yaberauneya:
+
+ Add FreeBSD 9.x to supported OSes list Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * snmplib/parse.c: CHANGES: libnetsnmp: PATCH 3362233: from
+
+ yaberauneya: Mute unnecessary cannot find module noise Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/agent_read_config.c, agent/snmp_vars.c, 
+      configure.d/config_os_headers: CHANGES: freebsd: PATCH 3363308:
+      from
+
+ yaberauneya: Fix compilation on FreeBSD 9.x with recent header
+ shuffling Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: allow nsrollup to take a --merge
+
+ flag for merging instead of rebasing
+
+2011-08-04  Sachin Surendran <sachinsurendran@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpusm.h, snmplib/snmp_client.c, 
+      snmplib/snmpusm.c: CHANGES: snmptrapd: PATCH 3383441: from
+
+ sachinsurendran: Fix crash on 5.4.4 due to access of freed memory Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * snmplib/parse.c: CHANGES: libnetsnmp: PATCH 3362233: from
+
+ yaberauneya: Mute unnecessary cannot find module noise Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: allow nsrollup to take a --merge
+
+ flag for merging instead of rebasing
+
+2011-08-04  Sachin Surendran <sachinsurendran@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpusm.h, snmplib/snmp_client.c, 
+      snmplib/snmpusm.c: CHANGES: snmptrapd: PATCH 3383441: from
+
+ sachinsurendran: Fix crash on 5.4.4 due to access of freed memory Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/mibgroup/hardware/cpu/cpu_sysctl.c, 
+      agent/mibgroup/hardware/memory/memory_freebsd.c, 
+      agent/mibgroup/mibII/ipAddr.c, snmplib/keytools.c,
+      snmplib/scapi.c:
+
+ CHANGES: building: PATCH 3383951: from yaberauneya: Fix -Wunused
+ compile warnings with FreeBSD/NetBSD Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/mibgroup/hardware/cpu/cpu_sysctl.c, 
+      agent/mibgroup/hardware/memory/memory_freebsd.c, 
+      agent/mibgroup/mibII/ipAddr.c, snmplib/keytools.c,
+      snmplib/scapi.c:
+
+ CHANGES: building: PATCH 3383951: from yaberauneya: Fix -Wunused
+ compile warnings with FreeBSD/NetBSD Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit e878abbdb1808ef83e0a8074536fb54e13219a8b Merge: 403de42
+
+ 878fbf4 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 07:55:00 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 250afa06892fd897ac31e3836a7ffc9e2b4cf7b9 Merge: 2c14c1c
+
+ 3afc5e0 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 07:51:33 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 578cd7cce351ae8d904ec3d80be9ba6d1d48a712 Merge: 25988be
+
+ f3bc551 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 07:50:56 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : autoconf
+
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * configure.d/config_os_struct_members: CHANGES: building: PATCH
+
+ 3383949: from yaberauneya: Fix autoconf tests for sys/mbuf.h Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: prompt for patch and an area, and
+
+ use the proper CHANGES line format
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: Use fetch --all and rebase as
+
+ suggested by Bart for speed improvements
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit d6a1a89e6f648951a9b831932d3cc230821f2d37 Merge: dcb712f
+
+ 872e013 Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 4 12:06:18 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 44969b4e57c27194e5bd357bc45275feb8695d22 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Jul 8 20:52:25 2011 +0200
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/winExtDLL.c: CHANGES: Win32: winExtDLL: Invoke
+
+ SnmpUtilOidFree() before SnmpUtilOidCpy(). It's not clear yet why
+ the original code did not make snmpwalk trigger a memory leak.
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit dcb712ffc86b33583000ef4ae9a51ced25cd15bf Merge: e85cfa5
+
+ 98623ef Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 4 11:36:17 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 8a01ec6423d400c4a13ccac68a3791d0218a0885 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Aug 4 11:19:17 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit e85cfa599b23b76d97913c96b5d703bff6ba4944 Merge: b056ee6
+
+ e21eef2 Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 4 08:44:43 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/host/data_access/swinst_pkginfo.c: CHANGES: agent:
+
+ Avoid that a MIB walk on the host resources MIB triggers a crash on
+ Fedora 15
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit b056ee6eb53909ad04f16ec26d2690d7a083192a Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Aug 4 07:59:04 2011 +0200
+
+2011-08-03  Bart Van Assche <bvanassche@acm.org>
+
+   *  agent/agent_trap.c, agent/helpers/table_array.c, 
+      agent/mibgroup/agentx/master_admin.c, 
+      agent/mibgroup/agentx/protocol.c, 
+      agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_acc
+       ess.c, agent/mibgroup/host/data_access/swinst_pkginfo.c, 
+      agent/mibgroup/host/data_access/swrun_procfs_status.c, 
+      agent/mibgroup/if-mib/data_access/interface_linux.c, 
+      agent/mibgroup/ip-mib/data_access/systemstats_linux.c, 
+      agent/mibgroup/mibII/kernel_linux.c, 
+      agent/mibgroup/rmon-mib/data_access/etherstats_linux.c, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access
+       .c, agent/mibgroup/smux/smux.c, agent/mibgroup/snmpv3/usmUser.c, 
+      agent/mibgroup/ucd-snmp/versioninfo.c, agent/snmp_agent.c, 
+      apps/snmpbulkget.c, apps/snmptls.c, apps/snmptrapd_log.c, 
+      perl/SNMP/SNMP.xs, snmplib/container_iterator.c, 
+      snmplib/dir_utils.c, snmplib/snmp_api.c, snmplib/snmp_client.c, 
+      snmplib/snmp_enum.c, snmplib/snmp_openssl.c, snmplib/snmpusm.c, 
+      snmplib/transports/snmpTLSTCPDomain.c: CHANGES: snmplib, snmpd:
+
+ perl: Eliminate dead variables
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit ae8e3ecd2df4cf37625944aded1dfe4735d44eea Merge: 73187ce
+
+ 9335e19 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Wed Aug 3 14:37:36 2011 -0700
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 794f9a69d7eb642268200b0a4b199151def66ed0 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Wed Aug 3 14:36:25
+ 2011 -0700
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a comment
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: at end of nsrollup mention that
+
+ now would be a good time to run nssync
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: a new nssync() function for
+
+ push/pulling active branches
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a comment
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: at end of nsrollup mention that
+
+ now would be a good time to run nssync
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: a new nssync() function for
+
+ push/pulling active branches
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: at end of nsrollup mention that
+
+ now would be a good time to run nssync
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: a new nssync() function for
+
+ push/pulling active branches
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a comment
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: at end of nsrollup mention that
+
+ now would be a good time to run nssync
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: a new nssync() function for
+
+ push/pulling active branches
+
+2011-08-03  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-mib.h: Reenable IP-MIB::ipDefaultRouterTable
+      Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: A new function: nssfpatchapply
+
+ that auto-pulls git command line info from SF
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-ctx-get.m2i: added variables names to
+
+ the generated error messages.
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c: Wording changes to
+
+ help describe contexts better
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/Makefile.in, local/mib2c-conf.d/generic-get-U64.m2i: Added
+
+ the missing U64 m2i file
+
+2011-08-03  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-mib.h: Reenable IP-MIB::ipDefaultRouterTable
+      Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: A new function: nssfpatchapply
+
+ that auto-pulls git command line info from SF
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-ctx-get.m2i: added variables names to
+
+ the generated error messages.
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c: Wording changes to
+
+ help describe contexts better
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/Makefile.in, local/mib2c-conf.d/generic-get-U64.m2i: Added
+
+ the missing U64 m2i file
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: A new function: nssfpatchapply
+
+ that auto-pulls git command line info from SF
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-ctx-get.m2i: added variables names to
+
+ the generated error messages.
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c: Wording changes to
+
+ help describe contexts better
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/Makefile.in, local/mib2c-conf.d/generic-get-U64.m2i: Added
+
+ the missing U64 m2i file
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: A new function: nssfpatchapply
+
+ that auto-pulls git command line info from SF
+
+2011-07-18  Ilya Yanok <yanok@emcraft.com>
+
+   * agent/agent_trap.c, agent/mibgroup/mibII/snmp_mib.c: agent: change
+
+ type of snmp_enableauthentraps to long Type of snmp_enableauthentraps variable is changed from int to long.
+ This fixes the bug with writing to snmpEnableAuthenTraps if server
+ is compiled for 64bit (snmpset reports wrong length). This bug was
+ introduced a long time ago (by faeecd0 commit).  Actually this is a 'less effort' type of fix but I wonder why we
+ need a long to store an INTEGER in the first place? Signed-off-by: Ilya Yanok <yanok@emcraft.com> Signed-off-by: Wes
+ Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-ctx-get.m2i: added variables names to
+
+ the generated error messages.
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c: Wording changes to
+
+ help describe contexts better
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/Makefile.in, local/mib2c-conf.d/generic-get-U64.m2i: Added
+
+ the missing U64 m2i file
+
+2011-08-03  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 6ad7e28ff9e5e4ebc1358ee39cc9796a44a1bee7 Merge: f2832e3
+
+ 1e154ce Author: Bart Van Assche <bvanassche@acm.org> Date:   Wed Aug
+ 3 19:15:24 2011 +0200
+
+2011-08-03  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 61b178f1ee8952aa03aa3b1ba51f4a6655e47f01 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Wed Aug 3 18:09:47 2011 +0200
+
+2011-08-03  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/types.h: Whitespace-only change: fix indentation
+
+ of an #include directive
+
+2011-08-02  Bart Van Assche <bvanassche@acm.org>
+
+   * perl/NetSNMP.xs: CHANGES: Perl: Remove file perl/NetSNMP.xs
+
+ because it breaks the Windows build.  To Wes: if you can tell me how to reproduce the problem you observed
+ I'll try to find a portable fix.  This reverts commit d54871f5293675c8058ecce88fed5b646c836323 ("Added
+ a bogus empty .xs file for bundling on newer perl that wants
+ "something"").
+
+2011-08-02  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0f489b199adab48b1633ebcaf5ff5a7c22c4cb89 Merge: f4eaa02
+
+ 72a59bc Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Aug
+ 2 10:11:53 2011 +0200
+
+2011-08-02  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 7fcc0b8032f8da5b7bc30059af0ba656eae71091 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Mon Aug 1 14:11:28 2011 +0200
+
+2011-08-02  Bart Van Assche <bvanassche@acm.org>
+
+   *   * 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_dat
+       a_access.c: Fix a compiler warning in
+
+
+ agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c
+
+2011-08-01  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Add file names and patterns for output
+
+ files generated during the Windows build
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Sort alphabetically
+
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Add apps/sshtosnmp
+
+
+2011-08-01  Bart Van Assche <bvanassche@acm.org>
+
+   *  .gitignore, perl/TrapReceiver/const-c.inc, 
+      perl/TrapReceiver/const-xs.inc: Remove two generated Perl files.
+
+
+2011-08-02  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit f4eaa02d9b076a67d7272de7eef8e9dfbf189bbf Merge: 40125d8
+
+ adadcb9 Author: Thomas Anders <tanders@users.sourceforge.net> Date:
+ Tue Aug 2 00:57:51 2011 +0200
+
+2011-08-02  Thomas Anders <tanders@users.sourceforge.net>
+
+   * dist/nsb-functions: suppress "ok" test output in nsb
+
+
+2011-08-01  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit 40125d8539cd89f952fbc24588c5e81e9cd821fe Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Mon Aug 1
+ 13:58:33 2011 +0200
+
+2011-08-01  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 5acf0d2ceb3977964ed39f003073ba64138c2ebd Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Sun Jul 31 23:57:41
+ 2011 +0200
+
+2011-07-31  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit a7722a81f9cb7aa8670e7c238601362a31087acc Merge: 242e179
+
+ ae9ac6c Author: Bart Van Assche <bvanassche@acm.org> Date:   Sun Jul
+ 31 09:11:45 2011 +0200
+
+2011-07-31  Bart Van Assche <bvanassche@acm.org>
+
+   * apps/sshtosnmp.c: Fix an incorrect source code comment: there is
+
+ no requirement in the ANSI C standard that stack variables should be
+ initialized to zero.
+
+2011-07-31  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 242e1797b2694a0689856ae36d05d3413aaf8d77 Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Sun Jul 31 01:44:09
+ 2011 +0200
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   * snmplib/system.c: CHANGES: building: build fix for systems lacking
+
+ getaddrinfo() and EAI_FAIL (e.g. HP-UX 10.20/11.00)
+
+2011-07-30  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 18df759f19b975c449d010bb0a162119bb68360d Merge: 54a44cb
+
+ 7050718 Author: Bart Van Assche <bvanassche@acm.org> Date:   Sat Jul
+ 30 16:39:13 2011 +0200
+
+2011-07-30  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 82d73fb11be3ae31f39c9d618d5388dc9b1006d7 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Jul 29 20:51:27 2011 +0200
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  configure, include/net-snmp/net-snmp-config.h.in, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: autoreconf
+
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  configure, include/net-snmp/net-snmp-config.h.in, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: autoreconf
+
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 109f6694d788f48ebd9fc0a1e90c45abc37bea20 Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Sat Jul 30 14:22:19
+ 2011 +0200
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 7d8100eed459a1ff1a20c067364fa6cb47491309 Merge: 116c24f
+
+ 9e47ac4 Author: Thomas Anders <tanders@users.sourceforge.net> Date:
+ Sat Jul 30 00:20:01 2011 +0200
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   * dist/nsb-functions, dist/nsb-nightly, dist/nsb-package: minor nsb
+
+ fixes/enhancements from my old svn tree
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 116c24f0f7fb3f99ba646730f61c56d1ae23ba41 Merge: 982fb7f
+
+ 4fc0b8b Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Jul
+ 29 11:31:20 2011 +0200
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit c48173c06a9eaadbf81e6b4962d55ef0a54db251 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Jul 29 10:27:39 2011 +0200
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * configure, ltmain.sh, m4/libtool.m4: Rerun autoreconf
+
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Sort alphabetically
+
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Add apps/sshtosnmp
+
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   *  agent/mibgroup/host/hr_storage.h, 
+      agent/mibgroup/host/hrh_storage.c: Fix two filenames in host mib
+
+ source code comments.
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit 982fb7fd8bab25c4322aa62c50437036ce296e3e Merge: 1eda675
+
+ 3458128 Author: Jan Safranek <jsafranek@users.sourceforge.net> Date:
+ Thu Jul 28 16:24:03 2011 +0200
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: Fix potential
+
+ sigsegv when an ifTable entry is removed as result of both
+ interface_replace_old and interface_fadeout at the same time.
+
+2011-07-28  Bart Van Assche <bvanassche@acm.org>
+
+   * apps/sshtosnmp.c: Make apps/sshtosnmp.c build again (was broken by
+
+ commit 612247cdf14c1e745c384cefe1f3fde3e445b347 that changed
+ MSG_NOSIGNAL into NETSNMP_NOSIGNAL)
+
+2011-07-28  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 1eda6753b7fe7d3b3f217c09254ec02d0ee1d0ce Merge: db8b860
+
+ a2f9ece Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Jul
+ 28 15:32:28 2011 +0200
+
+2011-07-28  Niels Baggesen <nba@users.sourceforge.net>
+
+   * configure.d/config_os_functions, configure.d/config_os_libs1: 
+
+ CHANGES: snmpd: Restore storage tables on Linux
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: Document interface_replace_old option.
+
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: CHANGES:
+
+ snmpd: added 'interface_replace_old' option to remove old entries in
+ ifTable when an interface with the same name as already exising one
+ appears.  E.g. remove old ppp0 interface when new ppp0 shows up.
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: Document the interface_fadeout option.
+
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: Allow ifTable
+
+ entries to be deleted immediately when appropriate interface
+ disappears (i.e. interface_fadeout = 0 works as expected).
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: CHANGES:
+
+ snmpd: added 'interface_fadeout' configuration option to set
+ lifetime of ifTable entries of removed interfaces.  Previous lifetime was hardcoded 5 minutes, now it's configurable.
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit d62a0eb9070b4d8d9fe2bcfdb4d53d37ef814f9b Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Thu Jul 28
+ 14:49:08 2011 +0200
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: CHANGES:
+
+ snmpd: added 'interface_replace_old' option to remove old entries in
+ ifTable when an interface with the same name as already exising one
+ appears.  E.g. remove old ppp0 interface when new ppp0 shows up.
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: Document the interface_fadeout option.
+
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: Allow ifTable
+
+ entries to be deleted immediately when appropriate interface
+ disappears (i.e. interface_fadeout = 0 works as expected).
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: CHANGES:
+
+ snmpd: added 'interface_fadeout' configuration option to set
+ lifetime of ifTable entries of removed interfaces.  Previous lifetime was hardcoded 5 minutes, now it's configurable.
+
+2011-07-28  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  apps/sshtosnmp.c, include/net-snmp/library/snmpUDPBaseDomain.h, 
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h, 
+      snmplib/transports/snmpUDPBaseDomain.c: CHANGES: building: build
+      fix
+
+ for systems lacking MSG_DONTWAIT
+
+2011-07-27  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/mibII/tcp.c: CHANGES: snmpd: Make
+
+ TCP-MIB::tcpCurrEstab work again. Was broken in 5.7 by the
+ introduction of the "features" feature.
+
+2011-07-27  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit fb88074fbbc268c7f0509491535aec5fecb05684 Merge: a743ae5
+
+ 3821273 Author: Jan Safranek <jsafranek@users.sourceforge.net> Date:
+ Wed Jul 27 14:47:25 2011 +0200
+
+2011-07-27  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit 31fa07cd9ffde46d41d2b5838c3fc4d01548bfb5 Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Wed Jul 27
+ 14:45:47 2011 +0200
+
+2011-07-27  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/snmpd.c: CHANGES: snmpd: run signal handlers when select()
+
+ is interrupted.  This behavior is indicated in comment on line 1244, but it was not
+ actually done.
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 2e9466d7f59d65d050277735e4ed9d30719ff752 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Tue Jul 26 13:10:04 2011 +0200
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 7708296760eaf5a80d8540746c9c249826fd1bfe Merge: ea11e5e
+
+ cd6e382 Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Jul
+ 26 16:21:41 2011 +0200
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/snmpUDPIPv6Domain.c: Clarify an IPv6 source code comment
+
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/agent_handler.c, man/netsnmp_handler.3: Spelling fix:
+
+ definedy -> defined
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/helpers/stash_cache.c, man/netsnmp_stash_cache.3: Spelling
+
+ fix: aleviate -> alleviate
+
+2011-07-26  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit dd2c47133493d5a00de6b3cdbcfac7e9d44b6ffe Merge: f9ccbc7
+
+ ea11e5e Author: Jan Safranek <jsafranek@users.sourceforge.net> Date:
+ Tue Jul 26 14:25:28 2011 +0200
+
+2011-07-26  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit c5a8464c42a94c250ee2dfa2a473109a734203d8 Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Tue Jul 26
+ 14:24:55 2011 +0200
+
+2011-07-25  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit f9ccbc772666134d1d178b505af9ddcdd9ed4244 Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Mon Jul 25
+ 15:02:15 2011 +0200
+
+2011-07-20  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit b0c0a355d5f601a11be4914fbf713716abd30a29 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Tue Jul 19
+ 18:36:11 2011 -0700
+
+2011-07-20  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit c14fc38614baf10d517136f0480907b7f03d8d74 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Wed Jul 20
+ 13:44:59 2011 -0700
+
+2011-07-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/testhandler.c: remove broken whitespace lines that
+
+ leads to reading confusion
+
+2011-07-20  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit ebdd216c074bf41cd3a084bd14689cf01c887b31 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Tue Jul 19
+ 18:36:11 2011 -0700
+
+2011-07-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * .gitignore: updated gitignore to ignore a number of auto-generated
+
+ files
+
+2011-07-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/testhandler.c: remove broken whitespace lines that
+
+ leads to reading confusion
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit df5f70055cf9be33f05fb50abe2f5a81eac092ad Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Tue Jul 19 11:07:19 2011 +0200
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit f596f18242dcdfd6cf49c88da1d836c16e260cac Merge: 0f309b4
+
+ 70dee4b Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Jul
+ 19 11:33:28 2011 +0200
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   *  agent/agent_trap.c, agent/mibgroup/mibII/snmp_mib.c, 
+      agent/mibgroup/mibII/snmp_mib_5_5.c: CHANGES: snmpd: PATCH:
+      3369680:
+
+ from Ilya Yanok: change snmp_enableauthentraps from int to long such
+ that modifying the corresponding MIB object does not overwrite
+ memory in 64-bit builds.
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/agentx/subagent.c: CHANGES: snmpd: PATCH: 3370645:
+
+ from Bill Fenner: Fix AgentX subagent four byte leak
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test harness: do
+
+ not invoke ISRUNNING() on MinGW.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test harness:
+
+ cleanup - remove code that became superfluous.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: MinGW: Do not
+
+ assume that kill.exe reports via its exit status whether the
+ signalled process still exists.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ Remove the function WAITORDIE() from simple_eval_tools.sh since it
+ is never invoked.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ Simplify WAITFOR() in simple_eval_tools.sh. The code that handled
+ invocation of WAITFOR() with zero or one arguments has been dropped
+ since WAITFOR() is always invoked with two arguments.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test harness:
+
+ minor simplification.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/default/T059trapdtraphandle_simple: CHANGES:
+
+ testing: Skip test 59 if SIGHUP is not supported. Makes test 59 pass
+ on MinGW.
+
+2011-07-06  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: MinGW fix
+
+
+2011-07-06  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test framework
+
+ refactoring: Introduce WAITFORNOTCOND().
+
+2011-07-05  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ Make STOPPROG send SIGTERM repeatedly. This fixes a race where
+ SIGTERM could be sent before the SIGTERM signal handler was set up,
+ especially when running the regression tests under Valgrind.
+ CHANGES: testing: Make the SNMP_VERBOSE=1 output even more verbose.
+
+2011-07-05  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test harness
+
+ refactoring: introduce ECHOSENDSIGTERM() and ECHOSENDSIGKILL()
+
+2011-07-05  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Fix a bug in
+
+ testing/fulltests/support/simple_eval_tools.sh that was introduced
+ in commit 938d75c.
+
+2011-07-01  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Ignore *.exe files generated by the Win32
+
+ build
+
+2011-07-04  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ Test only once during a test whether the shell supports sub-second
+ sleeping instead of repeatedly.
+
+2011-07-04  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_run: CHANGES: testing: Changed
+
+ default timeout from 1s to 10s when the regression tests are run
+ under Valgrind
+
+2011-07-04  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ After having sent SIGTERM to snmpd or snmptrapd, wait until the
+ process has stopped before sending SIGKILL. This race condition was
+ hit most easily when running the regression tests under Valgrind.
+ CHANGES: testing: Check PID file existence after having read it
+ instead of before. This fixes the race condition where the PID file
+ disappeared after the existence check and before it was read.
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/agentx/protocol.c: Fix a bug in a debug statement
+
+ introduced by patch 3310250 / r20494: use %ld to print a value of
+ type oid instead of %d.  This patch is a combination of the following to V5.6 SVN patches: git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20511 06827809-a52a-0410-b366-d66718629dedgit-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20512 06827809-a52a-0410-b366-d66718629ded
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0f309b493c21d3c6914487514b41560754ffcdf9 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Tue Jul 19 08:37:50 2011 +0200
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 1b7454bc281568470a1300476d2edb4f411e6029 Merge: 8d9dcc8
+
+ 690ea7d Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Jul
+ 19 08:31:28 2011 +0200
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * apps/snmptrapd.c: CHANGES: snmptrapd: Add missing newline
+
+ character in a log message
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * apps/snmptrapd.c: CHANGES: snmptrapd: Invoke shutdown_perl() when
+
+ shutting down
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/snmpUDPIPv6Domain.c: Spelling fix: branket -> bracket
+
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   * configure, include/net-snmp/net-snmp-config.h.in: Run autoreconf.
+
+ Fixes build breakage caused by patch
+ d588ec853bd0531f212fcbf51b962b96c6828b59 (RPM 4.9 support)
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit d617d84f83fa69ed9fa9f98efc4afaf880d121f2 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Jul 14 16:43:47 2011 +0200
+
+2011-07-14  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/transports/snmpIPv6BaseDomain.c: CHANGES: snmplib: Make
+
+ netsnmp_ipv6_fmtaddr() show the IPv6 scope ID
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   *  configure, configure.d/config_os_functions, 
+      include/net-snmp/net-snmp-config.h.in, 
+      snmplib/transports/snmpIPv6BaseDomain.c, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: Add support
+      for
+
+ IPv6 address scope ID
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   * configure, include/net-snmp/net-snmp-config.h.in: Run autoreconf
+
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit a56721a3e7754e389daa7e8a3d5792899edc9de3 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Jul 14 16:18:32 2011 +0200
+
+2011-07-15  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 844d4ce867bf3abe7b7536c5dbfba401937a8d4a Merge: eed0198
+
+ 61036a8 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Fri Jul 15 15:33:10 2011 -0700
+
+2011-07-15  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 851bcf53fcd13cdf0ba9f12e5d603e73f8bb9611 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Fri Jul 15
+ 15:32:49 2011 -0700
+
+2011-07-14  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/cache_handler.c: fix a typo
+
+
+2011-07-13  Robert Story <rstory@localhost>
+
+   * snmplib/parse.c: CHANGES: snmplib:  tweak patch 3044888 to restore
+
+ proper non-error return during mib loading
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : added 5.7 patches to the branch list and fix the release file
+
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : added 5.7 patches to the branch list
+
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/release: a copy of the release file applied to the older
+
+ branches
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added 5.7 patches
+
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit c431231e8f0a39d1950bc72c32e3402f90fa8030 Merge: 56fee40
+
+ a2ac24d Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Jul 11 19:33:17 2011 -0700
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a copy of the
+
+ shell-functions to the older branch
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/release: a copy of the release file applied to the older
+
+ branches
+
+2011-07-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * ChangeLog: version update for 5.7
+
+
+2011-07-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7
+
+
+2011-07-01  Robert Story <rstory@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h, 
+      snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpIPv4BaseDomain.c, 
+      snmplib/transports/snmpTLSBaseDomain.c: Revert "fix dtlsudp
+
+ transport address format function" This reverts commit 2ab3a6e6f2fcc1ff3e5f0fb5dc5d05e498820d89.   - for some reason I saw 'rc' and my brain interpreted it as    'pre-release'. What can I say, it was late. :-/
+
+2011-07-01  Robert Story <rstory@localhost>
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h, 
+      snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpIPv4BaseDomain.c, 
+      snmplib/transports/snmpTLSBaseDomain.c: fix dtlsudp transport
+
+ address format function  - update ipv4 fmtaddr to handle sockaddr and to check    size before assuming data is addr pair  - move dtlsudp functions to extract addr(s) to tlsbase
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 56fee40118b21a9f4dc02a6f247f7da6fc69a005 Merge: d39194b
+
+ 9ff4714 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Wed Jun 29 23:18:13 2011 -0700
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: fix tag pushing
+
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: fix tag pushing
+
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: misc publication fixes found while
+
+ publishing
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * ChangeLog: version update for 5.7.rc3
+
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7.rc3
+
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: remove unneeded comment
+
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: misc publication fixes found while
+
+ publishing
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/net-snmp-config.h.in: ran autoheader to add the
+
+ missing template ifdefs
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * ChangeLog: version update for 5.7.rc2
+
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7.rc2
+
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 64b6c68a84930ab01e3e146c49f3ab5382efda3e Merge: 127eec2
+
+ d39194b Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Wed Jun 29 17:12:46 2011 -0700
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit df9cf9a1e293d05a24786694f68c05a2be13a9b3 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Wed Jun 29
+ 16:34:11 2011 -0700
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: use git2cl to generate the ChangeLog file;
+
+ needs much more work.
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: use the new run-autoconf script
+
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/run-autoconf: A script to invoke the correct version of the
+
+ autoconf tool
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: remaining command line changes for svn ->
+
+ git
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: make the branch echo output and svn update
+
+ converted to git equivalents
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: pull the branch info from git
+
+
+2011-06-29  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst_rpm.c, 
+      agent/mibgroup/host/hr_swinst.c, configure.d/config_os_headers, 
+      configure.d/config_os_libs1: Tweak RPM handling to work with
+      library
+
+ version 4.9
+
+2011-06-29  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit d588ec853bd0531f212fcbf51b962b96c6828b59 Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Wed Jun 29
+ 16:07:00 2011 +0200
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/release: noted that the master branch is in rc state
+
+
+2011-06-28  Wes Hardaker <opensource@hardakers.net>
+
+   * : commit 8b23b4c13923b8caf4d4aed32a450933934ff461 Merge: 153781d
+
+ 47f5048 Author: Wes Hardaker <opensource@hardakers.net> Date:   Tue
+ Jun 28 13:14:52 2011 -0700
+
+2011-06-28  Wes Hardaker <opensource@hardakers.net>
+
+   * : commit af8b235234f72944a649a76f0d30cff95ac2e895 Author: Wes
+
+ Hardaker <opensource@hardakers.net> Date:   Tue Jun 28 13:11:19 2011
+ -0700
+
+2011-06-28  Wes Hardaker <opensource@hardakers.net>
+
+   * local/gittools/shell-functions: use git merge with the --log
+
+ option
+
+2011-06-28  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 153781dbfb2afc0003ba4e58ffcca53001e486d6 Merge: b3e80de
+
+ 3c5a409 Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Jun
+ 28 19:43:13 2011 +0200
+
+2011-06-28  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 9bc82e4ca4837f00072dba86b9497a27186909f9 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Tue Jun 28 19:13:35 2011 +0200
+
+2011-06-28  Wes Hardaker <opensource@hardakers.net>
+
+   * FAQ: We're now using git!
+
+
+2011-06-27  Wes Hardaker <opensource@hardakers.net>
+
+   * : commit b3e80de9b07d282ff11af8b06a91d64279d3261d Merge: c4ad278
+
+ 6a5e5a6 Author: Wes Hardaker <opensource@hardakers.net> Date:   Mon
+ Jun 27 21:34:59 2011 -0700
+
+2011-06-27  Wes Hardaker <opensource@hardakers.net>
+
+   * : commit 38fe8177d533135a6cc682724f16a91113bcd7f3 Merge: 7d917cf
+
+ dd58baf Author: Wes Hardaker <opensource@hardakers.net> Date:   Mon
+ Jun 27 21:34:56 2011 -0700
+
+2011-06-27  Wes Hardaker <opensource@hardakers.net>
+
+   * : commit 5c177f517d16f05545b279d16f0e4fd5696be651 Merge: f0d6bf0
+
+ c2bcebc Author: Wes Hardaker <opensource@hardakers.net> Date:   Mon
+ Jun 27 21:34:55 2011 -0700
+
+2011-06-27  Wes Hardaker <opensource@hardakers.net>
+
+   * : commit 9c9769572eb8c03b69556c1c5aab9b4d56c6d1d3 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Mon Jun 27
+ 14:11:14 2011 +0000
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a feature to not roll
+
+ branches currenly in rc phase git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20532 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a nsrollup function for
+
+ rolling branches upward.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20531 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: created an nspatchapply function
+
+ to apply a previously tested patch git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20530 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a nstrypatch function to
+
+ test patch application against various branches git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20529 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added verbose output git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20528 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: more prefix changes and better
+
+ setting of default values git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20527 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: use ns prefixes instead of generic
+
+ snmp prefixes git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20526 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20524 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+   * configure, configure.in, include/net-snmp/net-snmp-config.h.in: 
+
+ Missing check for rpmts.h git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20523 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+   * configure: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20522 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_handler.3, man/netsnmp_instance.3, 
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3, 
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3, 
+      man/netsnmp_read_config.3, man/netsnmp_read_only.3, 
+      man/netsnmp_row_merge.3, man/netsnmp_scalar.3, 
+      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3, 
+      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3, 
+      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3, 
+      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3, 
+      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3, 
+      man/netsnmp_table.3, man/netsnmp_table_array.3, 
+      man/netsnmp_table_container.3, man/netsnmp_table_data.3, 
+      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3, 
+      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3, 
+      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3, 
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3, man/netsnmp_util.3,
+       man/netsnmp_utilities.3, man/netsnmp_variable_list.3, 
+      man/netsnmp_watcher.3: documentation update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20521 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.in, dist/net-snmp.spec, 
+      snmplib/snmp_version.c: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20520 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-23  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/mibgroup/host/hr_swinst.c, configure, configure.in, 
+      include/net-snmp/net-snmp-config.h.in: Tweak RPM handling to work
+
+ with library version 4.9 Based on a patch by Jan Safranek git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20519 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swinst.c: Provide a framework for reading
+
+ RPM package information from a cache directory (rather than querying
+ the RPMdb directly).  My apologies to Jeff Johnson for the delay in adding this
+ functionality.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20518 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20516 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * configure: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20515 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-22  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.in, dist/net-snmp.spec, 
+      snmplib/snmp_version.c: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20514 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-21  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst.h, 
+      agent/mibgroup/host/data_access/swinst_pkginfo.c: Provide a
+
+ framework for reading RPM package information from a cache directory
+ (rather than querying the RPMdb directly).  My apologies to Jeff Johnson for the delay in adding this
+ functionality.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20513 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-21  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst.h, 
+      agent/mibgroup/host/data_access/swinst_pkginfo.c: Provide a
+
+ framework for reading RPM package information from a cache directory
+ (rather than querying the RPMdb directly).  My apologies to Jeff Johnson for the delay in adding this
+ functionality.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20513 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-21  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst.h, 
+      agent/mibgroup/host/data_access/swinst_pkginfo.c: Provide a
+
+ framework for reading RPM package information from a cache directory
+ (rather than querying the RPMdb directly).  My apologies to Jeff Johnson for the delay in adding this
+ functionality.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20513 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-19  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/agentx/protocol.c: Follow-up for r20511: really use
+
+ the proper format specification.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20512 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-19  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/agentx/protocol.c: Follow-up for r20511: really use
+
+ the proper format specification.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20512 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/agentx/protocol.c: Fix a bug in a debug statement
+
+ introduced by patch 3310250 / r20494: use %ld to print a value of
+ type oid instead of %d.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20511 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/agentx/protocol.c: Fix a bug in a debug statement
+
+ introduced by patch 3310250 / r20494: use %ld to print a value of
+ type oid instead of %d.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20511 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/helpers/cache_handler.c: Use %p to print a pointer instead
+
+ of %ld git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20510 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/helpers/cache_handler.c: Use %p to print a pointer instead
+
+ of %ld git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20510 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-13  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * CHANGES: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20508 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-13  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20507 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-13  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure: run correct version of autoconf git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20506 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-13  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20505 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-13  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure: ran autoconf git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20504 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-10  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  snmplib/cert_util.c: Include stdlib.h to make dmalloc happy
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20502 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-10  Niels Baggesen <nba@users.sourceforge.net>
+
+   * configure.d/config_modules_security_modules: Fix build of snmpusm
+
+ when additional sec modules requested git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20501 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  snmplib/cert_util.c: Include std爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´õ€’‘b.h to make dmalloc happy
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20500 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-09  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/snmp_transport.c: CHANGES: BUG: 3151845: fix multiple
+
+ registrations of snmp transport handler git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20499 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-09  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/snmp_transport.c: CHANGES: BUG: 3151845: fix multiple
+
+ registrations of snmp transport handler git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20499 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-08  Robert Story <rstory@users.sourceforge.net>
+
+   *  include/net-snmp/library/default_store.h, snmplib/snmp_api.c, 
+      snmplib/system.c: more dnssec tweaks  - create an app-global
+      validator context for use with all    validation routines. mainly
+      useful for long-lived apps.   - use the apptype as the validator
+      'scope', allowing    for app-specific configuration of validation
+      via libval's    dnsval.conf git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20498 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-07  Robert Story <rstory@users.sourceforge.net>
+
+   * include/net-snmp/library/default_store.h: add a max define for
+
+ each default store type   not actually used, just a helpful reminder for those adding   new ids who might not think to check NETSNMP_DS_MAX_SUBIDS.    (the bool list is rapidly approaching the current limit.) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20497 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-07  Robert Story <rstory@users.sourceforge.net>
+
+   * testing/fulltests/support/simple_run: mention builddir when
+
+ complaining about not being run from source tree git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20496 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * perl/SNMP/SNMP.xs: Reverted r20362: that patch makes sense on the
+
+ trunk and the 5.6 branch but not on the 5.5 nor on the 5.4 branch.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20495 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/agentx/master.c, 
+      agent/mibgroup/agentx/master_admin.c, 
+      agent/mibgroup/agentx/protocol.c,
+      agent/mibgroup/agentx/subagent.c:
+
+ CHANGES: snmpd: patch 3310250: from fenner: misc fixes for debugging
+ output of agentx git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20494 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/agentx/master.c, 
+      agent/mibgroup/agentx/master_admin.c, 
+      agent/mibgroup/agentx/protocol.c,
+      agent/mibgroup/agentx/subagent.c:
+
+ CHANGES: snmpd: patch 3310250: from fenner: misc fixes for debugging
+ output of agentx git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20494 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/agentx/master.c, 
+      agent/mibgroup/agentx/master_admin.c, 
+      agent/mibgroup/agentx/protocol.c,
+      agent/mibgroup/agentx/subagent.c:
+
+ CHANGES: snmpd: patch 3310250: from fenner: misc fixes for debugging
+ output of agentx git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20494 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * CHANGES, NEWS: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20492 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/Makefile.depend: make depend git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20491 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure: fixed autoconf version git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20490 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20489 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   * CHANGES: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20487 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20486 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend, 
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend, 
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend: make
+
+ depend git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20485 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   * perl/SNMP/SNMP.xs: Reinstate an "unused" label that is actually
+
+ still required.  (referenced in line 2710) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20484 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/disk.c: Fix typo git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20483 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_handler.3, man/netsnmp_instance.3, 
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3, 
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3, 
+      man/netsnmp_read_config.3, man/netsnmp_read_only.3, 
+      man/netsnmp_row_merge.3, man/netsnmp_scalar.3, 
+      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3, 
+      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3, 
+      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3, 
+      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3, 
+      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3, 
+      man/netsnmp_table.3, man/netsnmp_table_array.3, 
+      man/netsnmp_table_container.3, man/netsnmp_table_data.3, 
+      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3, 
+      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3, 
+      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3, 
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3, man/netsnmp_util.3,
+       man/netsnmp_utilities.3, man/netsnmp_variable_list.3, 
+      man/netsnmp_watcher.3: documentation update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20482 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.in, dist/net-snmp.spec, 
+      snmplib/snmp_version.c: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20481 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   * CHANGES: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20479 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20478 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/helpers/Makefile.depend, agent/mibgroup/Makefile.depend, 
+      apps/Makefile.depend, apps/snmpnetstat/Makefile.depend, 
+      snmplib/Makefile.depend: make depend git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20477 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_handler.3, man/netsnmp_instance.3, 
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3, 
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3, 
+      man/netsnmp_read_config.3, man/netsnmp_read_only.3, 
+      man/netsnmp_row_merge.3, man/netsnmp_scalar.3, 
+      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3, 
+      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3, 
+      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3, 
+      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3, 
+      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3, 
+      man/netsnmp_table.3, man/netsnmp_table_array.3, 
+      man/netsnmp_table_container.3, man/netsnmp_table_data.3, 
+      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3, 
+      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3, 
+      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3, 
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3, man/netsnmp_util.3,
+       man/netsnmp_utilities.3, man/netsnmp_variable_list.3, 
+      man/netsnmp_watcher.3: documentation update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20476 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Dave Shield <dts12@users.sourceforge.net>
+
+   *  CHANGES, FAQ, README, configure, configure.in, 
+      dist/net-snmp.spec, snmplib/snmp_version.c: Version number update
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20475 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: fix xml quoting git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20474 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  snmplib/parse.c: fix non existent malloc macro to use calloc
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20473 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/library/parse.h, snmplib/parse.c: CHANGES:
+
+ snmplib: Applied the intent of patch 3044888 to allow applications
+ to read the error messages of a MIB parsing failure.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20472 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/agent/extend.c, agent/mibgroup/ucd-snmp/disk.c: 
+
+ CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for
+ comparing unsigned large indexes of the disk and extend tables.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20471 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/agent/extend.c, agent/mibgroup/ucd-snmp/disk.c: 
+
+ CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for
+ comparing unsigned large indexes of the disk and extend tables.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20471 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/agent/extend.c, agent/mibgroup/ucd-snmp/disk.c: 
+
+ CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for
+ comparing unsigned large indexes of the disk and extend tables.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20471 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/agent/extend.c, agent/mibgroup/ucd-snmp/disk.c: 
+
+ CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for
+ comparing unsigned large indexes of the disk and extend tables.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20471 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/agent/extend.c, agent/mibgroup/ucd-snmp/disk.c: 
+
+ CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for
+ comparing unsigned large indexes of the disk and extend tables.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20471 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swrun.c: CHANGES: snmpd: fixed hrSWRunPath
+
+ of swapped-out processes on Linux.  fgets() returns NULL both when /proc/PID/cmdline is empty (= swapped
+ out) and when the process exited after fopen(), so check
+ /proc/PID/status in both cases.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20470 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swrun.c: CHANGES: snmpd: fixed hrSWRunPath
+
+ of swapped-out processes on Linux.  fgets() returns NULL both when /proc/PID/cmdline is empty (= swapped
+ out) and when the process exited after fopen(), so check
+ /proc/PID/status in both cases.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20470 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swrun.c: CHANGES: snmpd: fixed hrSWRunPath
+
+ of swapped-out processes on Linux.  fgets() returns NULL both when /proc/PID/cmdline is empty (= swapped
+ out) and when the process exited after fopen(), so check
+ /proc/PID/status in both cases.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20470 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-31  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swrun.c: CHANGES: snmpd: fixed hrSWRunPath
+
+ of swapped-out processes on Linux.  fgets() returns NULL both when /proc/PID/cmdline is empty (= swapped
+ out) and when the process exited after fopen(), so check
+ /proc/PID/status in both cases.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20470 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: up the ante and run other test suites
+
+ besides just the default set git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20462 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmpusm.c: CHANGES: snmpd: patch 3299384: fix INFORMs so
+
+ they retry probing for an engineID.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20461 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmpusm.c: Applied (roughly) patch 3299370 to avoid
+
+ rewriting existing authkey/privkey/etcs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20460 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/header_complex.c, agent/mibgroup/header_complex.h, 
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c, 
+      agent/mibgroup/notification/snmpNotifyTable.c: Applied the intent
+      of
+
+ patch 3299386 which fixes duplicate entries on a SIGHUP.  To achieve
+ this some new header_complex functions needed to be created that
+ didn't change the behavior of the older ones.  The notification code
+ now calls these newer functions.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20459 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmpd: patch 3299384: fix INFORMs so
+
+ they retry probing for an engineID.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20458 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmpd: patch 3299384: fix INFORMs so
+
+ they retry probing for an engineID.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20458 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmpd: patch 3299384: fix INFORMs so
+
+ they retry probing for an engineID.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20458 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmpd: patch 3299384: fix INFORMs so
+
+ they retry probing for an engineID.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20458 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: Applied (roughly) patch 3299370 to avoid
+
+ rewriting existing authkey/privkey/etcs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20457 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: Applied (roughly) patch 3299370 to avoid
+
+ rewriting existing authkey/privkey/etcs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20457 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: Applied (roughly) patch 3299370 to avoid
+
+ rewriting existing authkey/privkey/etcs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20457 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: Applied (roughly) patch 3299370 to avoid
+
+ rewriting existing authkey/privkey/etcs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20457 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c, 
+      agent/mibgroup/util_funcs/get_pid_from_inode.c, 
+      agent/mibgroup/util_funcs/get_pid_from_inode.h, perl/Makefile.PL:
+
+ NEWS: snmpd: patch 3131397: from takevos: huge speedups of the
+ TCP/UDP Tables git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20456 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * perl/NetSNMP.xs: Added a bogus empty .xs file for bundling on
+
+ newer perl that wants "something" git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20455 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/host/data_access/swrun_procfs_status.c: CHANGES:
+
+ snmpd: patch 3306476: from tinypyramids: fix memory leak in the
+ swrun container loading git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20454 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/host/data_access/swrun_procfs_status.c: CHANGES:
+
+ snmpd: patch 3306476: from tinypyramids: fix memory leak in the
+ swrun container loading git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20454 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst.c, 
+      agent/mibgroup/tunnel/tunnel.c: Follow-up for r20449: use
+
+ NETSNMP_PRIo "u" for printing subids instead of only NETSNMP_PRIo.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20453 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst.c, 
+      agent/mibgroup/tunnel/tunnel.c: Follow-up for r20449: use
+
+ NETSNMP_PRIo "u" for printing subids instead of only NETSNMP_PRIo.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20453 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: Microsoft
+
+ Visual Studio: Link with gdi32.lib if OpenSSL has been enabled
+ because gdi32.lib is a dependency of OpenSSL.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20451 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: Microsoft
+
+ Visual Studio: Link with gdi32.lib if OpenSSL has been enabled
+ because gdi32.lib is a dependency of OpenSSL.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20451 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: Microsoft
+
+ Visual Studio: Link with gdi32.lib if OpenSSL has been enabled
+ because gdi32.lib is a dependency of OpenSSL.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20451 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * include/net-snmp/library/oid.h: Follow-up for r20448: since the
+
+ "oid" typedef has been changed back from uint32_t to u_long, change
+ NETSNMP_PRIo from NETSNMP_PRI32 into "l".  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20450 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * include/net-snmp/library/oid.h: Follow-up for r20448: since the
+
+ "oid" typedef has been changed back from uint32_t to u_long, change
+ NETSNMP_PRIo from NETSNMP_PRI32 into "l".  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20450 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/tunnel/tunnel.c: CHANGES: snmpd: Use proper format
+
+ specifier in debug statements for printing values of type 'oid'.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20449 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst.c, 
+      agent/mibgroup/tunnel/tunnel.c: CHANGES: snmpd: Use proper format
+
+ specifier in debug statements for printing values of type 'oid'.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20449 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst.c, 
+      agent/mibgroup/tunnel/tunnel.c: CHANGES: snmpd: Use proper format
+
+ specifier in debug statements for printing values of type 'oid'.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20449 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/mibgroup/host/data_access/swinst.c, 
+      agent/mibgroup/tunnel/tunnel.c: CHANGES: snmpd: Use proper format
+
+ specifier in debug statements for printing values of type 'oid'.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20449 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/library/oid.h: revert OID typedef to u_long as
+
+ agreed to on -coders and in the admin meeting git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20448 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/library/oid.h: revert OID typedef to u_long as
+
+ agreed to on -coders and in the admin meeting git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20448 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-24  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  snmplib/system.c: Remember to return info also without DNSSEC
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20447 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-24  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/arp_common.c: Added NULL-checks
+
+ after malloc git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20446 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-24  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/arp_common.c: Added NULL-checks
+
+ after malloc git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20446 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-24  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/arp_common.c: Added NULL-checks
+
+ after malloc git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20446 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-24  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/arp_common.c: Added NULL-checks
+
+ after malloc git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20446 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c: CHANGES:
+
+ agent: BUG: 3305157: Fix ipAddressPrefix handling of IPv6 addresses git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20445 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c: CHANGES:
+
+ agent: BUG: 3305157: Fix ipAddressPrefix handling of IPv6 addresses git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20445 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * python/netsnmp/client_intf.c: CHANGES: python: BUG: 3295407: Fix
+
+ handling of void pointer git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20444 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * python/netsnmp/client_intf.c: CHANGES: python: BUG: 3295407: Fix
+
+ handling of void pointer git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20444 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * python/netsnmp/client_intf.c: CHANGES: python: BUG: 3295407: Fix
+
+ handling of void pointer git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20444 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * python/netsnmp/client_intf.c: CHANGES: python: BUG: 3295407: Fix
+
+ handling of void pointer git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20444 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c: CHANGES:
+
+ snmplib: BUG: 3264852: Recognise missing report types
+ (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20443 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c: CHANGES:
+
+ snmplib: BUG: 3264852: Recognise missing report types
+ (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20443 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c: CHANGES:
+
+ snmplib: BUG: 3264852: Recognise missing report types
+ (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20443 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c: CHANGES:
+
+ snmplib: BUG: 3264852: Recognise missing report types
+ (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20443 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c: CHANGES:
+
+ snmplib: BUG: 3264852: Recognise missing report types
+ (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20443 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-20  Dave Shield <dts12@users.sourceforge.net>
+
+   *  snmplib/snmpAAL5PVCDomain.c, snmplib/snmpAliasDomain.c, 
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpIPXDomain.c, 
+      snmplib/snmpSSHDomain.c, snmplib/snmpSTDDomain.c, 
+      snmplib/snmpTCPDomain.c, snmplib/snmpTCPIPv6Domain.c, 
+      snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c, 
+      snmplib/snmpUnixDomain.c: CHANGES: snmplib: BUG: 3234754: Ensure
+      old
+
+ f_create_from_tstring hook is initialized to NULL git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20442 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-20  Dave Shield <dts12@users.sourceforge.net>
+
+   *  snmplib/transports/snmpAAL5PVCDomain.c, 
+      snmplib/transports/snmpAliasDomain.c, 
+      snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpIPXDomain.c, 
+      snmplib/transports/snmpSSHDomain.c, 
+      snmplib/transports/snmpSTDDomain.c, 
+      snmplib/transports/snmpTCPDomain.c, 
+      snmplib/transports/snmpTCPIPv6Domain.c, 
+      snmplib/transports/snmpTLSTCPDomain.c, 
+      snmplib/transports/snmpUDPDomain.c, 
+      snmplib/transports/snmpUDPIPv6Domain.c, 
+      snmplib/transports/snmpUnixDomain.c: CHANGES: snmplib: BUG:
+      3234754:
+
+ Ensure old f_create_from_tstring hook is initialized to NULL git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20442 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-20  Dave Shield <dts12@users.sourceforge.net>
+
+   *  snmplib/transports/snmpAAL5PVCDomain.c, 
+      snmplib/transports/snmpAliasDomain.c, 
+      snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpIPXDomain.c, 
+      snmplib/transports/snmpSSHDomain.c, 
+      snmplib/transports/snmpSTDDomain.c, 
+      snmplib/transports/snmpTCPDomain.c, 
+      snmplib/transports/snmpTCPIPv6Domain.c, 
+      snmplib/transports/snmpTLSTCPDomain.c, 
+      snmplib/transports/snmpUDPDomain.c, 
+      snmplib/transports/snmpUDPIPv6Domain.c, 
+      snmplib/transports/snmpUnixDomain.c: CHANGES: snmplib: BUG:
+      3234754:
+
+ Ensure old f_create_from_tstring hook is initialized to NULL git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20442 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-20  Dave Shield <dts12@users.sourceforge.net>
+
+   *  snmplib/snmpAAL5PVCDomain.c, snmplib/snmpIPXDomain.c, 
+      snmplib/snmpSTDDomain.c, snmplib/snmpTCPDomain.c, 
+      snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUDPDomain.c, 
+      snmplib/snmpUDPIPv6Domain.c, snmplib/snmpUnixDomain.c: CHANGES:
+
+ snmplib: BUG: 3234754: Ensure old f_create_from_tstring hook is
+ initialized to NULL git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20442 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in: use #ifdef
+
+ rather than #if for define checks.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20441 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in: use #ifdef
+
+ rather than #if for define checks.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20441 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in: use #ifdef
+
+ rather than #if for define checks.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20441 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in: use #ifdef
+
+ rather than #if for define checks.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20441 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in: use #ifdef
+
+ rather than #if for define checks.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20441 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Dave Shield <dts12@users.sourceforge.net>
+
+   * man/snmp_api.3.def, man/snmp_sess_api.3.def: CHANGES: man: BUG:
+
+ 3190725: Document snmp{,_sess}synch_response and snmp_async_send git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20440 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Dave Shield <dts12@users.sourceforge.net>
+
+   * man/session_api.3.def, man/snmp_sess_api.3.def: CHANGES: man: BUG:
+
+ 3190725: Document snmp{,_sess}synch_response and snmp_async_send git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20440 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Dave Shield <dts12@users.sourceforge.net>
+
+   * man/netsnmp_sess_api.3.def, man/netsnmp_session_api.3.def: 
+
+ CHANGES: man: BUG: 3190725: Document snmp{,_sess}synch_response and
+ snmp_async_send git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20440 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Dave Shield <dts12@users.sourceforge.net>
+
+   * man/netsnmp_sess_api.3.def, man/netsnmp_session_api.3.def: 
+
+ CHANGES: man: BUG: 3190725: Document snmp{,_sess}synch_response and
+ snmp_async_send git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20440 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Dave Shield <dts12@users.sourceforge.net>
+
+   * man/snmp_api.3.def, man/snmp_sess_api.3.def: CHANGES: man: BUG:
+
+ 3190725: Document snmp{,_sess}synch_response and snmp_async_send git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20440 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swrun.c: CHANGES: snmpd: fixed race
+
+ condition in hrSWRunTable Treat the reads from /proc/<pid>/*
+ carefuly, processes can exit in the middle of processing.  (already
+ fixed in V5-5-patches and V5-4-patches in SVN rev. 20115, dunno why
+ I did not patch trunk) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20438 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swrun.c: CHANGES: snmpd: fixed race
+
+ condition in hrSWRunTable Treat the reads from /proc/<pid>/*
+ carefuly, processes can exit in the middle of processing.  (already
+ fixed in V5-5-patches and V5-4-patches in SVN rev. 20115, dunno why
+ I did not patch trunk) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20438 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/keytools.c, snmplib/scapi.c: CHANGES: snmplib: BUG:
+
+ 3184697: Don't reference internal MD5 when it's explicitly disabled git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20437 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-19  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/keytools.c, snmplib/scapi.c: CHANGES: snmplib: BUG:
+
+ 3184697: Don't reference internal MD5 when it's explicitly disabled git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20437 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-16  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/system.c: make sure we get the hint git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20436 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-15  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * testing/RUNTESTS: Follow-up for r20432: testing/RUNTESTS without
+
+ arguments works again as it should.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20435 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-15  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * testing/RUNTESTS: Follow-up for r20432: testing/RUNTESTS without
+
+ arguments works again as it should.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20435 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-14  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/transports/snmpIPv6BaseDomain.c: Ran
+
+ snmplib/transports/snmpIPv6BaseDomain.c through dos2unix.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20434 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-14  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * testing/fulltests/default/T071com2sec6_simple: Fixed a typo in a
+
+ comment.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20433 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-14  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * testing/fulltests/default/T071com2sec6_simple: Fixed a typo in a
+
+ comment.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20433 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-14  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * testing/RUNTESTS: RUNTESTS works again for tests with a four-digit
+
+ number.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20432 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-14  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * testing/RUNTESTS: RUNTESTS works again for tests with a four-digit
+
+ number.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20432 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-14  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/system.c: Fixed a recently introduced bug in
+
+ netsnmp_getaddrinfo().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20431 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-14  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/diskio.c: Document that the ucd-snmp
+
+ diskio code still has to be modified such that diskio_free_config()
+ gets invoked upon SIGHUP.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20430 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-14  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/diskio.c: Document that the ucd-snmp
+
+ diskio code still has to be modified such that diskio_free_config()
+ gets invoked upon SIGHUP.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20430 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-13  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/system.c: fix cast git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20429 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-13  Robert Story <rstory@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_a
+       ccess.c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_acces
+       s.c: Revert 20420 "CHANGES: snmpd: Fixed memory leak in TCP-MIB
+
+ tables introduced by patch #3053436." Revert 19708 "CHANGES: snmpd:
+ PATCH: 3053436: from: takevos: fix: tcpConnectionTable_data_access
+ invalid memory access" the bug 3053436 is fixing was introduced in r17719, and fixed in
+ r17861.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20428 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-13  Robert Story <rstory@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      apps/snmpnetstat/inet.c, apps/snmpnetstat/route.c, 
+      apps/snmptrapd_log.c, configure, configure.d/config_os_functions, 
+      configure.d/config_os_libs2, include/net-snmp/library/system.h, 
+      include/net-snmp/net-snmp-config.h.in, snmplib/system.c, 
+      snmplib/transports/snmpIPv4BaseDomain.c, 
+      snmplib/transports/snmpIPv6BaseDomain.c, 
+      snmplib/transports/snmpUDPIPv6Domain.c: more dns related tweaks  -
+      add netsnmp_gethostbyaddr  - always define netsnmp_* versions;
+      logonce if underlying    function is not available  - use new
+      functions in disman mibs git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20427 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-13  Robert Story <rstory@users.sourceforge.net>
+
+   *  apps/snmpnetstat/inet6.c, snmplib/snmpv3.c, 
+      snmplib/transports/snmpIPv6BaseDomain.c, 
+      snmplib/transports/snmpUDPIPv6Domain.c: use new netsnmp dns
+
+ functions in apps/snmplib git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20426 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-13  Robert Story <rstory@users.sourceforge.net>
+
+   * include/net-snmp/library/system.h, snmplib/system.c: move DNSSEC
+
+ validation into resolver wrapper functions   - allows other code to benefit from validation   - new netsnmp_gethostbyname, netsnmp_getaddrinfo git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20425 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-13  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/mib.c: Follow-up for r20417: replaced a malloc()/free()
+
+ pair by a call to realloc().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20424 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-13  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/mib.c: Follow-up for r20417: replaced a malloc()/free()
+
+ pair by a call to realloc().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20424 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-13  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/mib.c: Follow-up for r20417: replaced a malloc()/free()
+
+ pair by a call to realloc().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20424 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-mib/data_access/arp_netlink.c: Fix for RHEL4
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20423 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmp_transport.h, 
+      snmplib/transports/snmpUDPBaseDomain.c: Header fiddling for the
+
+ benefit of RHEL4, Solaris, OpenBSD git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20422 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_a
+       ccess.c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_acces
+       s.c: CHANGES: snmpd: Fixed memory leak in TCP-MIB tables
+      introduced
+
+ by patch #3053436.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20421 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_a
+       ccess.c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_acces
+       s.c: CHANGES: snmpd: Fixed memory leak in TCP-MIB tables
+      introduced
+
+ by patch #3053436.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20420 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/net-snmp/net-snmp-config.h: Reverted accidentally committed
+
+ changes of r20412.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20419 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: Fixed a memory leak in
+
+ snmp_free_session().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20418 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: Fixed a memory leak in
+
+ snmp_free_session().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20418 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: Fixed a memory leak in
+
+ snmp_free_session().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20418 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: Fixed a memory leak in
+
+ snmp_free_session().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20418 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/mib.c: CHANGES: snmplib: _mibindex_add() no longer reads
+
+ past the end of the dynamically allocated array _mibindexes.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20417 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/mib.c: CHANGES: snmplib: _mibindex_add() no longer reads
+
+ past the end of the dynamically allocated array _mibindexes.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20417 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/mib.c: CHANGES: snmplib: _mibindex_add() no longer reads
+
+ past the end of the dynamically allocated array _mibindexes.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20417 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/lcd_time.c: Avoid that MSVC triggers a compiler warning on
+
+ the code in snmplib/lcd_time.c.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20416 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/notification/snmpNotifyFilterProfileTable.c: Avoid
+
+ reading an uninitialized variable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20415 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/at.c: CHANGES: Win32: Fixed a memory leak in
+
+ the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ipNetToMediaTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20414 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/at.c: CHANGES: Win32: Fixed a memory leak in
+
+ the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ipNetToMediaTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20414 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/at.c: CHANGES: Win32: Fixed a memory leak in
+
+ the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ipNetToMediaTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20414 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/at.c: CHANGES: Win32: Fixed a memory leak in
+
+ the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ipNetToMediaTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20414 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/interfaces.c: CHANGES: Win32: Fixed a memory
+
+ leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ifTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20413 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/interfaces.c: CHANGES: Win32: Fixed a memory
+
+ leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ifTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20413 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/interfaces.c: CHANGES: Win32: Fixed a memory
+
+ leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ifTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20413 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/interfaces.c: CHANGES: Win32: Fixed a memory
+
+ leak in the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ifTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20413 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/ipAddr.c: CHANGES: Win32: Fixed a memory leak
+
+ in the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ipAddrTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20412 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/ipAddr.c: CHANGES: Win32: Fixed a memory leak
+
+ in the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ipAddrTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20412 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/ipAddr.c: CHANGES: Win32: Fixed a memory leak
+
+ in the Net-SNMP (non-winExtDLL) implementation of the MIB-II
+ ipAddrTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20412 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/ipAddr.c, win32/net-snmp/net-snmp-config.h: 
+
+ CHANGES: Win32: Fixed a memory leak in the Net-SNMP (non-winExtDLL)
+ implementation of the MIB-II ipAddrTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20412 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * ChangeLog: Documentation / source code comment spelling fix:
+
+ exitent -> existent.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20411 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * ChangeLog, snmplib/mib.c: Documentation / source code comment
+
+ spelling fix: exitent -> existent.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20411 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * ChangeLog, snmplib/mib.c: Documentation / source code comment
+
+ spelling fix: exitent -> existent.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20411 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * ChangeLog, snmplib/mib.c: Documentation / source code comment
+
+ spelling fix: exitent -> existent.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20411 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-12  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/transports/snmpIPv6BaseDomain.c: CHANGES: Win32: Build
+
+ snmplib/transports/snmpIPv6BaseDomain.c only if NETSNMP_ENABLE_IPV6
+ has been defined.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20410 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  Makefile.in, Makefile.rules, configure, 
+      configure.d/config_project_with_enable: install the built feature
+
+ headers too git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20409 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-11  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  testing/fulltests/default/T025snmpv3getSHADES_simple, 
+      testing/fulltests/default/T026snmpv3getSHAAES_simple: CHANGES:
+
+ testing: Tests 025 and 026 pass on MinGW even if winExtDLL has been
+ enabled.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20408 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-11  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * testing/fulltests/default/T065agentextend_simple: T065 robustness
+
+ improvement.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20407 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-11  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/mibgroup/hardware/fsys.h, 
+      agent/mibgroup/hardware/fsys/fsys_void.c, 
+      agent/mibgroup/ucd-snmp/disk_hw.h: CHANGES: snmpd: ucd_snmp builds
+
+ again on MinGW and Cygwin.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20406 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * Makefile.in: install the net-snmp-features.h file git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20405 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * testing/fulltests/default/T0141snmpv2cset_simple: Improved test
+
+ robustness.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20404 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/schedule/schedCore.c, 
+      agent/mibgroup/smux/smux.c: Compiler warning fixes.  git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20403 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: MinGW: avoid that gcc complains about pasing
+
+ a (char *) argument while (unsigned char *) is expected.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20402 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: MinGW: avoid that gcc complains about pasing
+
+ a (char *) argument while (unsigned char *) is expected.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20402 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: MinGW: avoid that gcc complains about pasing
+
+ a (char *) argument while (unsigned char *) is expected.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20402 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: MinGW: avoid that gcc complains about pasing
+
+ a (char *) argument while (unsigned char *) is expected.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20402 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/tools.c: Avoid out-of-bounds array access if the last char
+
+ of time_string is in the range 0x80..0xfe and char is a signed type.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20401 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * include/net-snmp/library/oid.h: Reverted r20380 because it breaks
+
+ all statements that print an OID sub-ID on any 64-bit platform. The
+ effect of r20380 on big endian architectures was that a "0" would be
+ printed instead of the OID sub-ID (at least with the LP64 and the
+ ILP64 models).  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20400 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * CHANGES, NEWS: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20385 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20384 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend, 
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend, 
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend: make
+
+ depend git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20383 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c, 
+      agent/mibgroup/hardware/cpu/cpu_linux.c, 
+      agent/mibgroup/ip-mib/data_access/arp_linux.c: C++ -> C comments
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20382 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-10  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * NEWS: NEWS update for 5.7 git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20381 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/library/oid.h: revert the oid typedef resizing
+
+ from r17809 because it broke backwards compat, as pointed out by
+ users on the -coders list git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20380 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure: use proper autoconf version git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20379 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec, perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm,
+       perl/OID/OID.pm, perl/SNMP/SNMP.pm, 
+      perl/TrapReceiver/TrapReceiver.pm, perl/agent/Support/Support.pm, 
+      perl/agent/agent.pm, perl/agent/default_store/default_store.pm, 
+      perl/default_store/default_store.pm: Version number update
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20378 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * Makefile.top: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20377 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  mibs/UCD-SNMP-MIB.txt: added a missing 0 in the revision date
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20376 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/data_access/interface_ioctl.c: Use symbolic
+
+ named for ifType values git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20375 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/data_access/interface_ioctl.c: Use symbolic
+
+ named for ifType values git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20375 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/data_access/interface_ioctl.c: Use symbolic
+
+ named for ifType values git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20375 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/data_access/interface_ioctl.c: Use symbolic
+
+ named for ifType values git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20375 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/data_access/interface_ioctl.c: Use symbolic
+
+ named for ifType values git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20375 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/rfcmibs.diff: IANA has fixed the
+
+ IANA-IPPM-METRICS-REGISTRY-MIB git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20374 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/rfcmibs.diff: IANA has fixed the
+
+ IANA-IPPM-METRICS-REGISTRY-MIB git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20374 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * mibs/UCD-SNMP-MIB.txt: added a new REVISION clause to list the
+
+ changes in the the recent update git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20373 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * NEWS: added ping/traceroute mibs note git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20372 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/proxy.c: we actually want to use the base
+
+ OID as the starting point, not the reg OID.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20371 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/proxy.c: fixed the proxy support to do a
+
+ proper OID less than OID compare.  We actually don't care about the
+ length of the original request, only that it was before the
+ registered rebase git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20370 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/proxy.c: CHANGES: patch 3140833: from
+
+ jsafranek: fix proxy GETNEXT requests When OIDs requested are below
+ the proxy request remap, we need to not include any OIDs that might
+ be in the space between the original OID and the remapped OID.  This
+ patch fudges the request so that it fixes the request OID so it's
+ just before the remapped proxy range.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20369 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/hardware/cpu/cpu.c, 
+      agent/mibgroup/hardware/cpu/cpu_linux.c, 
+      agent/mibgroup/ucd-snmp/vmstat.c,
+      agent/mibgroup/ucd-snmp/vmstat.h, 
+      include/net-snmp/agent/hardware/cpu.h, mibs/UCD-SNMP-MIB.txt:
+      NEWS:
+
+ PATCH 3167325: from krisztoforo: UCD-SNMP/SystemStats: add variables
+ to report cpusteal, cpuguest, cpuguestnice git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20368 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/data_access/interface.c: CHANGES: patch
+
+ 3184026: from eivnaes: Avoid constant refresh of interface
+ statistics git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20367 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/snmp_agent.c, apps/snmpdelta.c, snmplib/scapi.c, 
+      snmplib/snmp_api.c, snmplib/system.c, snmplib/tools.c: Fixed
+      several
+
+ compiler warnings reported by the MSVC compiler.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20366 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  snmplib/gettimeofday.c: Win32/MSVC: Fixed a compiler warning. 
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20365 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-09  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/var_route.c: CHANGES: agent: Fixed a
+
+ year-2038 bug in the implementation of ipRouteTable.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20364 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-08  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/ping/pingProbeHistoryTable.c, 
+      agent/mibgroup/disman/ping/pingResultsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteHopsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c: Fix
+
+ warnings and data format for DateAndTime objects.  These modules
+ work, but: - They are Linux only - Rows must be created with rowStatus createAndWait before they are
+ populated - Agent must run as root - Agent is blocked while tests run - Data format for InetAddress objects is wrong. It is ASCII, not
+   binary (making it easier to use from the command line, but ...) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20363 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-08  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/ping/pingProbeHistoryTable.c, 
+      agent/mibgroup/disman/ping/pingResultsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteHopsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c: Fix
+
+ warnings and data format for DateAndTime objects.  These modules
+ work, but: - They are Linux only - Rows must be created with rowStatus createAndWait before they are
+ populated - Agent must run as root - Agent is blocked while tests run - Data format for InetAddress objects is wrong. It is ASCII, not
+   binary (making it easier to use from the command line, but ...) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20363 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-08  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/ping/pingProbeHistoryTable.c, 
+      agent/mibgroup/disman/ping/pingResultsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteHopsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c: Fix
+
+ warnings and data format for DateAndTime objects.  These modules
+ work, but: - They are Linux only - Rows must be created with rowStatus createAndWait before they are
+ populated - Agent must run as root - Agent is blocked while tests run - Data format for InetAddress objects is wrong. It is ASCII, not
+   binary (making it easier to use from the command line, but ...) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20363 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-08  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/ping/pingProbeHistoryTable.c, 
+      agent/mibgroup/disman/ping/pingResultsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteHopsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c: Fix
+
+ warnings and data format for DateAndTime objects.  These modules
+ work, but: - They are Linux only - Rows must be created with rowStatus createAndWait before they are
+ populated - Agent must run as root - Agent is blocked while tests run - Data format for InetAddress objects is wrong. It is ASCII, not
+   binary (making it easier to use from the command line, but ...) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20363 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-08  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/ping/pingProbeHistoryTable.c, 
+      agent/mibgroup/disman/ping/pingResultsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteHopsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c: Fix
+
+ warnings and data format for DateAndTime objects.  These modules
+ work, but: - They are Linux only - Rows must be created with rowStatus createAndWait before they are
+ populated - Agent must run as root - Agent is blocked while tests run - Data format for InetAddress objects is wrong. It is ASCII, not
+   binary (making it easier to use from the command line, but ...) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20363 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  perl/SNMP/SNMP.xs: Removed an unused label from perl/SNMP/SNMP.xs.
+       git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20362 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  perl/SNMP/SNMP.xs: Removed an unused label from perl/SNMP/SNMP.xs.
+       git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20362 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  perl/SNMP/SNMP.xs: Removed an unused label from perl/SNMP/SNMP.xs.
+       git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20362 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  perl/SNMP/SNMP.xs: Removed an unused label from perl/SNMP/SNMP.xs.
+       git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20362 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/agent_registry.c, agent/helpers/old_api.c, 
+      include/net-snmp/agent/agent_registry.h, 
+      include/net-snmp/agent/old_api.h: CHANGES: snmpd: Declare the OID
+
+ argument type of MIB registration functions as 'const oid *' instead
+ of 'oid *' since these functions do not modify the OID.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20361 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-mib/data_access/arp_linux.c, 
+      agent/mibgroup/ip-mib/data_access/arp_netlink.c, 
+      include/net-snmp/data_access/arp.h: Use the correct data type for
+
+ the 'cache expired' variable: char instead of int.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20360 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/dlmod.c: Fixed a compiler warning that was
+
+ introduced in r20151.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20359 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: Win32: improved source code consistency by
+
+ using LPCTSTR instead of LPCSTR. Note: this does not mean that
+ Unicode builds are supported.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20358 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: Win32: improved source code consistency by
+
+ using LPCTSTR instead of LPCSTR. Note: this does not mean that
+ Unicode builds are supported.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20358 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/arp_netlink.c: Add file
+
+ forgotten in r20353 git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20357 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/net-snmp/net-snmp-config.h: Reverted a change that was
+
+ committed accidentally in r20276.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20356 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: Fixed two compiler
+
+ warnings.  (Backported r20236 from the trunk.) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20355 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/diskio.c: Commented out an unused function
+
+ because the compiler complained about it.  (Backported r20237 from
+ the trunk.) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20354 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/cache_handler.c, 
+      agent/mibgroup/ip-mib/data_access/arp.h, 
+      agent/mibgroup/ip-mib/data_access/arp_common.c, 
+      agent/mibgroup/ip-mib/data_access/arp_linux.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_
+       access.c, include/net-snmp/agent/cache_handler.h, 
+      include/net-snmp/data_access/arp.h: CHANGES: snmpd: PATCH 312596:
+
+ from fabled80: listen for netlink change events for the arp-related
+ tables git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20353 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h: NEWS: PATCH
+
+ 3198781: from fenner: Get disman/ping and disman/traceroute to at
+ least compile git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20352 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h: NEWS: PATCH
+
+ 3198781: from fenner: Get disman/ping and disman/traceroute to at
+ least compile git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20352 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h: NEWS: PATCH
+
+ 3198781: from fenner: Get disman/ping and disman/traceroute to at
+ least compile git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20352 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h: NEWS: PATCH
+
+ 3198781: from fenner: Get disman/ping and disman/traceroute to at
+ least compile git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20352 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/system.c: NEWS: snmplib: add optional support for local
+
+ DNSSEC validation of hostnames  - optional at configure time: --with-local-dnssec-validation  - requires DNSSEC-Tool validation libraries  - initial support, for systems with getaddrinfo. support for
+    additional resolver interfaces coming soon.   - also TODO: flag for ignoring validatoin errors (log & continue) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20351 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Robert Story <rstory@users.sourceforge.net>
+
+   * include/net-snmp/library/parse.h: move unused (and too generic)
+
+ token within UCD_COMPATIBLE ifdef   - MAXLABEL conflicts with <arpa/nameser.h>   - added NETSNMP_MAXLABEL git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20350 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Robert Story <rstory@users.sourceforge.net>
+
+   *  agent/Makefile.in, apps/Makefile.in, 
+      apps/snmpnetstat/Makefile.in, configure, 
+      configure.d/config_os_misc2, 
+      configure.d/config_project_with_enable, 
+      include/net-snmp/net-snmp-config.h.in: update configure/Makefiles
+
+ for DNSSEC local validation option git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20349 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * CHANGES: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20347 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20346 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/mibgroup/Makefile.depend: make depend git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20345 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_handler.3, man/netsnmp_instance.3, 
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3, 
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3, 
+      man/netsnmp_read_config.3, man/netsnmp_read_only.3, 
+      man/netsnmp_row_merge.3, man/netsnmp_scalar.3, 
+      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3, 
+      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3, 
+      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3, 
+      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3, 
+      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3, 
+      man/netsnmp_table.3, man/netsnmp_table_array.3, 
+      man/netsnmp_table_container.3, man/netsnmp_table_data.3, 
+      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3, 
+      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3, 
+      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3, 
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3, man/netsnmp_util.3,
+       man/netsnmp_utilities.3, man/netsnmp_variable_list.3, 
+      man/netsnmp_watcher.3: documentation update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20344 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.in, dist/net-snmp.spec, 
+      snmplib/snmp_version.c: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20343 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/data_access/interface_sysctl.c: removed the
+
+ accidental broken feature require line that got half inserted git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20342 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * CHANGES: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20340 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20339 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/mibgroup/Makefile.depend: make depend git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20338 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_handler.3, man/netsnmp_instance.3, 
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3, 
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3, 
+      man/netsnmp_read_config.3, man/netsnmp_read_only.3, 
+      man/netsnmp_row_merge.3, man/netsnmp_scalar.3, 
+      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3, 
+      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3, 
+      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3, 
+      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3, 
+      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3, 
+      man/netsnmp_table.3, man/netsnmp_table_array.3, 
+      man/netsnmp_table_container.3, man/netsnmp_table_data.3, 
+      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3, 
+      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3, 
+      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3, 
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3, man/netsnmp_util.3,
+       man/netsnmp_utilities.3, man/netsnmp_variable_list.3, 
+      man/netsnmp_watcher.3: documentation update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20337 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.in, dist/net-snmp.spec, 
+      snmplib/snmp_version.c: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20336 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Fix incomplete uninstall
+
+ configuration: - broken removal of Microsoft DLL - remove assorted new MIBs and header files git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20335 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Fix incomplete uninstall
+
+ configuration: - broken removal of Microsoft DLL - remove assorted new MIBs and header files git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20335 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Fix incomplete uninstall
+
+ configuration: - broken removal of Microsoft DLL - remove assorted new MIBs and header files git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20335 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Fix incomplete uninstall
+
+ configuration: - broken removal of Microsoft DLL - remove assorted new MIBs and header files git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20335 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Fix incomplete uninstall
+
+ configuration: - broken removal of Microsoft DLL - remove assorted new MIBs and header files git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20335 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/build-binary.pl: Support Tar/GZip command paths
+
+ containing spaces git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20334 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/build-binary.pl: Support Tar/GZip command paths
+
+ containing spaces git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20334 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/build-binary.pl: Support Tar/GZip command paths
+
+ containing spaces git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20334 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   *  win32/dist/build-binary.pl: Report GZip command correctly
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20333 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   *  win32/dist/build-binary.pl: Report GZip command correctly
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20333 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-06  Dave Shield <dts12@users.sourceforge.net>
+
+   *  win32/dist/build-binary.pl: Report GZip command correctly
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20333 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  snmplib/transports/snmpUDPBaseDomain.c, 
+      snmplib/transports/snmpUDPDomain.c: Fix for DragonFly BSD (does
+      not
+
+ define IP_SENDSRCADDR) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20332 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  snmplib/transports/snmpUDPBaseDomain.c, 
+      snmplib/transports/snmpUDPDomain.c: Fix for DragonFly BSD (does
+      not
+
+ define IP_SENDSRCADDR) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20332 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h, 
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h: Fix spelling of
+
+ SO_RECVDSTADDR git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20331 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h, 
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h: Fix spelling of
+
+ SO_RECVDSTADDR git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20331 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Robert Story <rstory@users.sourceforge.net>
+
+   *  include/net-snmp/library/default_store.h, man/snmp.conf.5.def, 
+      snmplib/snmp_api.c: NEWS: apps: add snmp.conf tokens for timeouts
+
+ and retries git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20330 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/tools.c, testing/TESTCONF.sh: CHANGES: MinGW: Made
+
+ regression test output independent of the Net-SNMP variables defined
+ in the Windows registry. Some tests that failed previously after the
+ Net-SNMP binaries (MSVC build) had been installed do now pass.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20329 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/tools.c, testing/TESTCONF.sh: CHANGES: MinGW: Made
+
+ regression test output independent of the Net-SNMP variables defined
+ in the Windows registry. Some tests that failed previously after the
+ Net-SNMP binaries (MSVC build) had been installed do now pass.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20329 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/tools.c, testing/fulltests/support/simple_TESTCONF.sh: 
+
+ CHANGES: MinGW: Made regression test output independent of the
+ Net-SNMP variables defined in the Windows registry. Some tests that
+ failed previously after the Net-SNMP binaries (MSVC build) had been
+ installed do now pass.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20329 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/tools.c, testing/fulltests/support/simple_TESTCONF.sh: 
+
+ CHANGES: MinGW: Made regression test output independent of the
+ Net-SNMP variables defined in the Windows registry. Some tests that
+ failed previously after the Net-SNMP binaries (MSVC build) had been
+ installed do now pass.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20329 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-05  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/encode_keychange/encode_keychange.vcproj, 
+      win32/libagent/libagent.vcproj, 
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj, 
+      win32/libsnmp/libsnmp.vcproj,
+      win32/libsnmp_dll/libsnmp_dll.vcproj, 
+      win32/netsnmpmibs/netsnmpmibs.vcproj, 
+      win32/snmpbulkget/snmpbulkget.vcproj, 
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+      win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj, 
+      win32/snmpget/snmpget.vcproj,
+      win32/snmpgetnext/snmpgetnext.vcproj, 
+      win32/snmpnetstat/snmpnetstat.vcproj,
+      win32/snmpset/snmpset.vcproj,  win32/snmpstatus/snmpstatus.vcproj,
+       win32/snmptable/snmptable.vcproj, win32/snmptest/snmptest.vcproj,
+       win32/snmptranslate/snmptranslate.vcproj, 
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+      win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj, 
+      win32/snmpwalk/snmpwalk.vcproj, win32/win32.sln,
+      win32/win32dll.sln:
+
+ Removed Visual Studio 2005 solution and project files again since
+ Visual Studio 2010 refuses to load these.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20328 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * Makefile.in: clean the perl/python feature leftovers git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20327 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: fix mib module invocation git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20326 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c: fix ifdef
+
+ typo git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20325 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * Makefile.in: fix perl/python feature dependencies git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20324 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/auto_nlist.c: reverted auto_nlist macro usage; the function
+
+ is used in headers git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20323 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  local/minimalist/sizetests: Add a -T option to run 'make test'
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20322 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * apps/Makefile.in: fix the encode_keychange .ft filename git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20321 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * perl/TrapReceiver/netsnmp-feature-definitions.h, snmplib/tools.c: 
+
+ fix the features required by the TrapReceiver module git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20320 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  Makefile.in: Add the TrapReceiver to the list of perl modules
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20319 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * perl/SNMP/SNMP.xs: use the newer Net-SNMP APIs, rather than the
+
+ older UCD ones git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20318 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  perl/SNMP/SNMP.xs: remove SET code when under --read-only mode
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20317 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/disman/event/mteTriggerTable.c: require
+
+ check_vb_uint git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20316 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagen
+       t.c, agent/snmp_agent.c, local/mib2c-conf.d/subagent.m2c, 
+      python/netsnmp/netsnmp-feature-definitions.h, 
+      snmplib/snmp_logging.c: last of the perl-used feature functions
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20315 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/Rmon/event.c, agent/mibgroup/agentx/subagent.c, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagen
+       t.c, agent/mibgroup/smux/smux.c, apps/snmptrapd_handlers.c, 
+      local/mib2c-conf.d/subagent.m2c, snmplib/mib.c, snmplib/parse.c:
+
+ started the final set of function removals for features required by
+ perl/python git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20314 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-source-includes.m2i: added the
+
+ net-snmp-features.h header git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20313 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  perl/OID/netsnmp-feature-definitions.h, 
+      perl/SNMP/netsnmp-feature-definitions.h, 
+      perl/TrapReceiver/netsnmp-feature-definitions.h, 
+      perl/agent/netsnmp-feature-definitions.h: Added perl feature
+
+ requirements git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20312 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  Makefile.in, Makefile.rules, configure, 
+      configure.d/config_project_perl_python, 
+      perl/ASN/netsnmp-feature-definitions.h, 
+      perl/OID/netsnmp-feature-definitions.h, 
+      perl/SNMP/netsnmp-feature-definitions.h, 
+      perl/agent/netsnmp-feature-definitions.h, 
+      perl/default_store/netsnmp-feature-definitions.h: hopefully
+      working
+
+ rules to apply feature requirements to perl and python git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20311 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/if-mib/data_access/interface.c, 
+      agent/mibgroup/if-mib/data_access/interface_ioctl.c, 
+      agent/mibgroup/if-mib/data_access/interface_linux.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c, 
+      agent/snmp_agent.c: more changes to remove unneeded functions
+
+ primarily when write mode is turned off git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20310 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_logging.c: change the want invocation to only default
+
+ to exclude external hooks git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20309 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/find-unused-code: search through .xs files for
+
+ function invocations git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20308 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/auto_nlist.c: forgot a semicolon git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20307 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/Rmon/alarmTable.c, 
+      agent/mibgroup/disman/event/mteEventTable.c, 
+      agent/mibgroup/disman/event/mteTriggerTable.c, 
+      agent/mibgroup/disman/expr/expExpressionTable.c: iquery pdu
+      sessions
+
+ are only needed in write mode.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20306 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * apps/Makefile.in: fix feature detection of sometimes-built
+
+ applications git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20305 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/auto_nlist.c: use the feature_unused macro for making an
+
+ empty file for consistency git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20304 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/table_dataset.c, agent/mibgroup/Rmon/alarmTable.c, 
+      agent/mibgroup/disman/event/mteEventTable.c, 
+      agent/mibgroup/disman/schedule/schedTable.c, 
+      agent/mibgroup/hardware/fsys/hw_fsys.c, 
+      agent/mibgroup/host/data_access/swrun.c, 
+      agent/mibgroup/host/hr_network.c, 
+      agent/mibgroup/if-mib/data_access/interface.c, 
+      agent/mibgroup/if-mib/data_access/interface_linux.c, 
+      agent/mibgroup/if-mib/data_access/interface_openbsd.c, 
+      agent/mibgroup/if-mib/data_access/interface_solaris2.c, 
+      agent/mibgroup/if-mib/data_access/interface_sysctl.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_dat
+       a_access.c,
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c,
+       agent/mibgroup/mibII/interfaces.c, agent/mibgroup/mibII/ipAddr.c,
+       agent/mibgroup/mibII/var_route.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSN
+       Table.c, agent/mibgroup/ucd-snmp/proc.c, 
+      agent/mibgroup/utilities/iquery.c, apps/snmptls.c, 
+      snmplib/cert_util.c, snmplib/mib.c, snmplib/snmp_openssl.c, 
+      snmplib/transports/snmpDTLSUDPDomain.c: Another sweep for unused
+
+ functions when read_only mode is turned on git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20303 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/table_tdata.c, agent/mibgroup/Rmon/alarmTable.c, 
+      agent/mibgroup/agent/extend.c, agent/mibgroup/agent/nsLogging.c, 
+      agent/mibgroup/agent/nsVacmAccessTable.c, 
+      agent/mibgroup/disman/event/mteEvent.c, 
+      agent/mibgroup/disman/event/mteEventNotificationTable.c, 
+      agent/mibgroup/disman/event/mteEventSetTable.c, 
+      agent/mibgroup/disman/event/mteEventTable.c, 
+      agent/mibgroup/disman/event/mteObjectsTable.c, 
+      agent/mibgroup/disman/event/mteTrigger.c, 
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c, 
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c, 
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c, 
+      agent/mibgroup/disman/event/mteTriggerTable.c, 
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c, 
+      agent/mibgroup/disman/expr/expExpressionTable.c, 
+      agent/mibgroup/disman/expr/expObjectTable.c, 
+      agent/mibgroup/disman/expression/expExpressionTable.c, 
+      agent/mibgroup/disman/expression/expObjectTable.c, 
+      agent/mibgroup/disman/mteObjectsTable.c, 
+      agent/mibgroup/disman/mteTriggerTable.c, 
+      agent/mibgroup/disman/nslookup/lookupCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/schedule/schedTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/header_complex.c, 
+      agent/mibgroup/if-mib/data_access/interface.c, 
+      agent/mibgroup/if-mib/data_access/interface_sysctl.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c, 
+      agent/mibgroup/mibII/snmp_mib.c, 
+      agent/mibgroup/mibII/snmp_mib_5_5.c, 
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c, 
+      agent/mibgroup/notification/snmpNotifyTable.c, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c
+       , 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_interface.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSN
+       Table.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.
+       c, snmplib/check_varbind.c: mark a slew of functions as features
+
+ that are only needed with write_support git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20302 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/find-unused-code: run grep with -n git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20301 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_transport.c, snmplib/transports/snmpDTLSUDPDomain.c: 
+
+ featurize netsnmp_sockaddr_size git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20300 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_linux.c: remove a
+
+ feature_require not actually needed.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20299 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/cert_util.c, snmplib/container.c: mark SUBCONTAINER_FIND
+
+ as a feature git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20298 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_client.c, snmplib/snmptsm.c: the row creation API is
+
+ only used in the TSM implementation git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20297 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c, snmplib/snmptsm.c: the newer context engineID
+
+ probing is only needed iff TSM is in use git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20296 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/dir_utils.c: fix an ifdef typo git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20295 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_openssl.c: moved fetaure child_of statements to the
+
+ top of the file git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20294 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  snmplib/cert_util.c, snmplib/container.c, snmplib/dir_utils.c, 
+      snmplib/snmp_openssl.c: marked a couple of rarely used container
+
+ functions.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20293 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/if-mib/data_access/interface_linux.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c, 
+      agent/mibgroup/util_funcs.c: split out the prefix_info feature
+      into
+
+ sub-features git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20292 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_int
+       erface.c: mark the accessor functions as unneeded git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20291 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/host/data_access/swinst.c: fix a child_of statement
+
+ with a copy/paste error git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20290 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_tdata.c: the container row-remove is only
+
+ needed if the tdata remove_row is needed git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20289 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/table_tdata.c, agent/mibgroup/Rmon/alarmTable.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSN
+       Table.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.
+       c: feature marking of unused tdata functions    
+      table_tdata_delete_table     table_tdata_extract_table    
+      table_tdata_remove_row git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20288 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/table_dataset.c, 
+      agent/mibgroup/disman/mteEventNotificationTable.c, 
+      agent/mibgroup/disman/mteEventTable.c, 
+      agent/mibgroup/examples/data_set.c: removal of some rarely used
+
+ 	functions table_set_multi_add_default_row 	table_dataset_unregister_auto_data_table git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20287 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: Added a definition to incorporate
+
+ read_only/notify_only git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20286 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_data.c: added a missing feature definition
+
+ line git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20285 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/Makefile.in: added back in missing mibgroup feature
+
+ definition list git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20284 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: Include the original base flags to
+
+ ensure --with-defaults gets picked up git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20283 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: fix usage git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20282 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: Added a -b flag for base arguments to
+
+ start from git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20281 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: default to a linear seach of size
+
+ tests, rather than exponential git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20280 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * include/net-snmp/library/snmpUDPDomain.h, snmplib/snmpUDPDomain.c: 
+
+ CHANGES: snmplib: Guard netsnmp_udp_recvfrom() etc. declarations
+ consistently.  CHANGES: Win32: Builds with Visual Studio 2010.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20279 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h, 
+      include/net-snmp/library/snmpUDPDomain.h, 
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h, 
+      snmplib/transports/snmpUDPBaseDomain.c, 
+      snmplib/transports/snmpUDPDomain.c, 
+      snmplib/transports/snmpUDPIPv4BaseDomain.c: CHANGES: snmplib:
+      Guard
+
+ netsnmp_udp_recvfrom() etc. declarations consistently.  CHANGES:
+ Win32: Builds with Visual Studio 2010.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20278 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h, 
+      include/net-snmp/library/snmpUDPDomain.h, 
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h, 
+      snmplib/transports/snmpUDPBaseDomain.c, 
+      snmplib/transports/snmpUDPDomain.c, 
+      snmplib/transports/snmpUDPIPv4BaseDomain.c: CHANGES: snmplib:
+      Guard
+
+ netsnmp_udp_recvfrom() etc. declarations consistently.  CHANGES:
+ Win32: Builds with Visual Studio 2010.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20278 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: CHANGES: Win32: PATCH: 3293842: Eliminate
+
+ registry argument limit of 127 characters (this limitation was
+ reported by Sylvain Dery).  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20277 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: CHANGES: Win32: PATCH: 3293842: Eliminate
+
+ registry argument limit of 127 characters (this limitation was
+ reported by Sylvain Dery).  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20277 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: CHANGES: Win32: PATCH: 3293842: Eliminate
+
+ registry argument limit of 127 characters (this limitation was
+ reported by Sylvain Dery).  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20277 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: CHANGES: Win32: PATCH: 3293842: Eliminate
+
+ registry argument limit of 127 characters (this limitation was
+ reported by Sylvain Dery).  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20277 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: header file
+
+ <net-snmp/net-snmp-config.h> can now be used in the MinGW
+ environment.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20276 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: header file
+
+ <net-snmp/net-snmp-config.h> can now be used in the MinGW
+ environment.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20276 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: header file
+
+ <net-snmp/net-snmp-config.h> can now be used in the MinGW
+ environment.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20276 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: header file
+
+ <net-snmp/net-snmp-config.h> can now be used in the MinGW
+ environment.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20276 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  include/net-snmp/library/getopt.h, 
+      include/net-snmp/library/large_fd_set.h, 
+      include/net-snmp/net-snmp-includes.h: Win32 DLL build fixes.
+
+ (Backported r20184 from trunk.) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20275 06827809-a52a-0410-b366-d66718629ded
+
+2011-05-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  include/net-snmp/library/getopt.h, 
+      include/net-snmp/library/large_fd_set.h, 
+      include/net-snmp/net-snmp-includes.h: Win32 DLL build fixes.
+
+ (Backported r20184 from trunk.) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20275 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: Spelling and grammar fixes for the source
+
+ code comments in snmplib/winservice.c.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20274 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: Spelling and grammar fixes for the source
+
+ code comments in snmplib/winservice.c.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20274 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: Spelling and grammar fixes for the source
+
+ code comments in snmplib/winservice.c.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20274 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/winservice.c: Spelling and grammar fixes for the source
+
+ code comments in snmplib/winservice.c.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20274 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * NEWS: added note about the new timing function git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20273 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: Update the manual page to reflect the new
+
+ timing options git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20272 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/tools.c: better documentation git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20271 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/agentx/agentx_config.c, 
+      agent/mibgroup/disman/mteTriggerTable.c, 
+      agent/mibgroup/disman/schedule/schedConf.c: use the
+
+ netsnmp_string_time_to_secs() for parsing frequencies/time git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20270 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * testing/fulltests/unit-tests/T102pdu_build_clib.c: fix pdu
+
+ building tests under various disabled modes git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20269 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * testing/fulltests/unit-tests/T102pdu_build_clib.c: don't try to
+
+ build the GET pdu under notify_only git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20268 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/library/tools.h, snmplib/tools.c: fix a bug with
+
+ no-suffix strings and use a const input string git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20267 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *   * 
+      testing/fulltests/unit-tests/T010netsnmp_string_time_to_secs_clib.c:
+
+ A new unit test for the time conversion routine git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20266 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: use the
+
+ netsnmp_string_time_to_secs() function for computing interval
+ periods git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20265 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/library/tools.h, snmplib/tools.c: Added a
+
+ netsnmp_string_time_to_secs() functions to convert, e.g., 1h to 3600 git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20264 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: remove code to build/parse GET/etc requests
+
+ when NOTIFY_ONLY is turned on.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20263 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * NEWS: update the NEWS to reflect the new --enable-read-only and
+
+ --enable-notify-only git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20262 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/if-mib/ifTable/ifTable_interface.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c: minor
+
+ improvements for ronly vs rwrite handling git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20261 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_interface.c: still enable
+
+ RONLY when RWRITE isn't possible git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20260 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/cache_handler.c: fix GET support when no_write is
+
+ enabled git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20259 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: mark a future
+
+ modification need in a comment git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20258 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/old_api.c: fix handling of no_write support
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20257 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/agent_read_config.c, agent/snmp_agent.c, agent/snmpd.c: 
+
+ don't open any listening transports when notify-only is specified git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20256 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure, configure.d/config_project_with_enable: set the
+
+ no-listen and read-only flags when --enable-notify-only is set git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20255 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/net-snmp-config.h.in: ran autoheader git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20254 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  snmplib/transports/snmpAAL5PVCDomain.c, 
+      snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpIPXDomain.c, 
+      snmplib/transports/snmpSSHDomain.c, 
+      snmplib/transports/snmpTCPDomain.c, 
+      snmplib/transports/snmpTCPIPv6Domain.c, 
+      snmplib/transports/snmpTLSTCPDomain.c, 
+      snmplib/transports/snmpUDPIPv4BaseDomain.c, 
+      snmplib/transports/snmpUDPIPv6Domain.c, 
+      snmplib/transports/snmpUnixDomain.c: implement the
+
+ NETSNMP_NO_LISTEN_SUPPORT in these transports git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20253 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure: run autoconf git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20252 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure.d/config_project_with_enable: move the read-only flag
+
+ definition below the notify-only, since notify-only needs to imply
+ read-only git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20251 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure, configure.d/config_project_with_enable: Defined a new
+
+ --enable-notify-only flag for building a toolset that only allows
+ for notifications with no read/write support git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20250 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure, configure.d/config_project_with_enable: Defined a new
+
+ --no-listen flag to remove listening support git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20249 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/default_modules.h: the disman schedule mib is only
+
+ useful when SETs are turned on git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20248 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/disman.h: the disman schedule mib is only useful
+
+ when SETs are turned on git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20247 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _interface.c, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_int
+       erface.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_inter
+       face.c, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_int
+       erface.c, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interfa
+       ce.c, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_interface.c, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interf
+       ace.c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.
+       c, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.
+       c: finished no_write support for common included tables
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20246 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_dataset.c: Add back in
+
+ 'netsnmp_set_row_column' when no_write support is enabled This
+ function is a generic data manipulation function, not SET specific git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20245 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_dataset.c: don't use mark_row_column_writable
+
+ when read-only support is enabled git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20244 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/agent/nsCache.c, agent/mibgroup/agent/nsDebug.c, 
+      agent/mibgroup/agent/nsLogging.c, 
+      agent/mibgroup/ip-mib/ip_scalars.c, 
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udpTable.c, 
+      agent/mibgroup/notification-log-mib/notification_log.c, 
+      agent/mibgroup/ucd-snmp/proxy.c, 
+      agent/mibgroup/utilities/override.c: fix no_write support
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20243 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/agent/extend.c: fix no_write support git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20242 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c: Don't free
+
+ the ifXTable row found on load failure as we don't own it git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20241 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c: Don't free
+
+ the ifXTable row found on load failure as we don't own it git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20241 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c: Don't free
+
+ the ifXTable row found on load failure as we don't own it git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20241 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c: Don't free
+
+ the ifXTable row found on load failure as we don't own it git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20241 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c: Don't free
+
+ the ifXTable row found on load failure as we don't own it git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20241 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: git bash-shell functions to enable
+
+ branch switching and external building These local shell functions
+ (snmpconfigure and snmpmake) let you configure and build the
+ Net-SNMP source code in external directories that are
+ auto-calculated based on the existing branch name (with an optional
+ suffix).  This lets you run 'snmpmake' from within the source
+ directory and have it actually externally keep track of modified
+ files, etc, so building in multiple branches can be done from a
+ single git checkout.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20240 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c: clean up the iterators
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20239 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: free varbinds after
+
+ sending git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20238 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/diskio.c: Commented out an unused function
+
+ because the compiler complained about it.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20237 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-25  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: Fixed two compiler
+
+ warnings.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20236 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   *  agent/helpers/table_data.c: Remove unnecessary null check
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20235 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/helpers/table_container.c: Move pointer dereference to after
+
+ the check for successful allocation of the pointer git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20234 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/agent_registry.c: Reduce variable scope git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20233 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/agent_registry.c: Remove an unused variable git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20232 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/agent_registry.c: Reduce variable scope git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20231 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/agent_registry.c: Reduce variable scope git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20230 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/agent_trap.c: Reduce variable scope git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20229 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/agent_trap.c: Remove unused variable git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20228 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: mention which module is required when
+
+ building to get the deliver support git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20227 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: deleted an unneeded
+
+ debugging statement git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20226 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: properly update the max
+
+ count in the outgoing notifications git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20225 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: better packet estimation
+
+ to ensure we don't overrun.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20224 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: estimate the packet size
+
+ and break the notification up based on it git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20223 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: transform the
+
+ notification sending into a larger loop for later multi-notifs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20222 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  NEWS: further information about feature marking/selection
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20221 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * NEWS: mention the new delivery by notifications git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20220 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * NEWS: document the minimalist support git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20219 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: document the new deliverByNotify config
+
+ tokens git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20218 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: allow run time
+
+ modifications of the OIDs to use git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20217 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c, 
+      agent/mibgroup/deliver/deliverByNotify.h: add config flags to not
+
+ include the period config and msg count values git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20216 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: include the periodic
+
+ count, the message number and the max message number git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20215 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: deleted debugging
+
+ comment git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20214 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c, 
+      mibs/NET-SNMP-PERIODIC-NOTIFY-MIB.txt: Move the notification
+
+ definition to within the sub-mib git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20213 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: delete an unused
+
+ variable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20212 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.h: load the MIB into the
+
+ default set git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20211 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * mibs/NET-SNMP-PERIODIC-NOTIFY-MIB.txt: A new mib to hold the
+
+ periodic notify objects git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20210 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: fill out the config free
+
+ routine git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20209 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: properly monitor the
+
+ whole container git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20208 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c, 
+      agent/mibgroup/deliver/deliverByNotify.h: parse the conf files and
+
+ create and insert objects into the container git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20207 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: defined a container to
+
+ store a list of deliver objects in git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20206 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.h: added a next_run
+
+ timestamp git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20205 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: actually send a
+
+ notification with the results git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20204 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: make the walk on the
+
+ test object function.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20203 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: create a max packet size
+
+ config token and parse it git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20202 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c, 
+      agent/mibgroup/deliver/deliverByNotify.h: minimal starting test
+
+ object git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20201 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c, 
+      agent/mibgroup/deliver/deliverByNotify.h: added a function to
+
+ calculate the time until the next run git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20200 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: remove left in template
+
+ line git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20199 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c, 
+      agent/mibgroup/deliver/deliverByNotify.h: use an alarm callback
+
+ prototype for execute git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20198 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/deliver/deliverByNotify.c, 
+      agent/mibgroup/deliver/deliverByNotify.h: beginning template code
+
+ for delivery of data by notifications git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20197 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/snmp_agent.c: Reduce variable scope git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20196 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/snmp_agent.c: Reduce variable scopes git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20195 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-22  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/snmp_agent.c: Remove unused variable git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20194 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-19  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/libsnmp/libsnmp.vcproj, win32/win32.sln: Added Visual Studio
+
+ 2005 project and solution file for building the Net-SNMP library as
+ a static library. Both the Win32 and the x64 configurations are
+ included.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20193 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-19  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/encode_keychange/encode_keychange.vcproj, 
+      win32/libagent/libagent.vcproj, 
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj, 
+      win32/libsnmp_dll/libsnmp_dll.vcproj, 
+      win32/netsnmpmibs/netsnmpmibs.vcproj, 
+      win32/snmpbulkget/snmpbulkget.vcproj, 
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+      win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj, 
+      win32/snmpget/snmpget.vcproj,
+      win32/snmpgetnext/snmpgetnext.vcproj, 
+      win32/snmpnetstat/snmpnetstat.vcproj,
+      win32/snmpset/snmpset.vcproj,  win32/snmpstatus/snmpstatus.vcproj,
+       win32/snmptable/snmptable.vcproj, win32/snmptest/snmptest.vcproj,
+       win32/snmptranslate/snmptranslate.vcproj, 
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+      win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj, 
+      win32/snmpwalk/snmpwalk.vcproj: More Visual Studio 2005 project
+      file
+
+ cleanup.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20191 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-18  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/encode_keychange/encode_keychange.vcproj, 
+      win32/snmpbulkget/snmpbulkget.vcproj, 
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+      win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj, 
+      win32/snmpget/snmpget.vcproj,
+      win32/snmpgetnext/snmpgetnext.vcproj, 
+      win32/snmpnetstat/snmpnetstat.vcproj,
+      win32/snmpset/snmpset.vcproj,  win32/snmpstatus/snmpstatus.vcproj,
+       win32/snmptable/snmptable.vcproj, win32/snmptest/snmptest.vcproj,
+       win32/snmptranslate/snmptranslate.vcproj, 
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+      win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj, 
+      win32/snmpwalk/snmpwalk.vcproj: Cleaned up Win32 VS2005 project
+
+ files - removed superfluous library references.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20189 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-18  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/encode_keychange/encode_keychange.vcproj, 
+      win32/libagent/libagent.vcproj, 
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj, 
+      win32/libsnmp_dll/libsnmp_dll.vcproj, 
+      win32/netsnmpmibs/netsnmpmibs.vcproj, 
+      win32/snmpbulkget/snmpbulkget.vcproj, 
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+      win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj, 
+      win32/snmpget/snmpget.vcproj,
+      win32/snmpgetnext/snmpgetnext.vcproj, 
+      win32/snmpnetstat/snmpnetstat.vcproj,
+      win32/snmpset/snmpset.vcproj,  win32/snmpstatus/snmpstatus.vcproj,
+       win32/snmptable/snmptable.vcproj, win32/snmptest/snmptest.vcproj,
+       win32/snmptranslate/snmptranslate.vcproj, 
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+      win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj, 
+      win32/snmpwalk/snmpwalk.vcproj, win32/win32dll.sln: Added x64
+
+ configurations.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20188 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-18  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  win32/encode_keychange/encode_keychange.vcproj, 
+      win32/libagent/libagent.vcproj, 
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj, 
+      win32/libsnmp_dll/libsnmp_dll.vcproj, 
+      win32/netsnmpmibs/netsnmpmibs.vcproj, 
+      win32/snmpbulkget/snmpbulkget.vcproj, 
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+      win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj, 
+      win32/snmpget/snmpget.vcproj,
+      win32/snmpgetnext/snmpgetnext.vcproj, 
+      win32/snmpnetstat/snmpnetstat.vcproj,
+      win32/snmpset/snmpset.vcproj,  win32/snmpstatus/snmpstatus.vcproj,
+       win32/snmptable/snmptable.vcproj, win32/snmptest/snmptest.vcproj,
+       win32/snmptranslate/snmptranslate.vcproj, 
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+      win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj, 
+      win32/snmpwalk/snmpwalk.vcproj, win32/win32dll.sln: Added
+
+ win32dll-related Visual Studio 2005 project and solution files.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20186 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-18  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  include/net-snmp/library/getopt.h, 
+      include/net-snmp/library/large_fd_set.h, 
+      include/net-snmp/net-snmp-includes.h: Win32 DLL build fixes. 
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20184 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-17  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmpUDPDomain.c: CHANGES: snmpd: PATCHES: 3175640: Use
+
+ IP_RECVDSTADDR sockopt where available (*BSD) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20183 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-17  Dave Shield <dts12@users.sourceforge.net>
+
+   *  snmplib/transports/snmpUDPBaseDomain.c, 
+      snmplib/transports/snmpUDPDomain.c, 
+      snmplib/transports/snmpUDPIPv4BaseDomain.c: CHANGES: snmpd:
+      PATCHES:
+
+ 3175640: Use IP_RECVDSTADDR sockopt where available (*BSD) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20183 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-17  Dave Shield <dts12@users.sourceforge.net>
+
+   *  snmplib/transports/snmpUDPBaseDomain.c, 
+      snmplib/transports/snmpUDPDomain.c, 
+      snmplib/transports/snmpUDPIPv4BaseDomain.c: CHANGES: snmpd:
+      PATCHES:
+
+ 3175640: Use IP_RECVDSTADDR sockopt where available (*BSD) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20183 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-15  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: PATCHES: 3183000: Fix
+
+ calculation of common OID prefix length CHANGES: snmplib: BUGS:
+ 3182985: Fix calculation of common OID prefix length git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20182 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-15  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: PATCHES: 3183000: Fix
+
+ calculation of common OID prefix length CHANGES: snmplib: BUGS:
+ 3182985: Fix calculation of common OID prefix length git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20182 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-15  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: PATCHES: 3183000: Fix
+
+ calculation of common OID prefix length CHANGES: snmplib: BUGS:
+ 3182985: Fix calculation of common OID prefix length git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20182 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-15  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: PATCHES: 3183000: Fix
+
+ calculation of common OID prefix length CHANGES: snmplib: BUGS:
+ 3182985: Fix calculation of common OID prefix length git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20182 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-15  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp_api.c: CHANGES: snmplib: PATCHES: 3183000: Fix
+
+ calculation of common OID prefix length CHANGES: snmplib: BUGS:
+ 3182985: Fix calculation of common OID prefix length git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20182 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-15  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/mibgroup/ucd-snmp/diskio.c, apps/snmptrapd_ds.h, 
+      include/net-snmp/agent/ds_agent.h, man/snmpd.conf.5.def: CHANGES:
+
+ Linux: PATCHES: 3205811: Option to skip fd/loop/ram devices in
+ diskIOTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20181 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-15  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/mibgroup/ucd-snmp/diskio.c, apps/snmptrapd_ds.h, 
+      include/net-snmp/agent/ds_agent.h, man/snmpd.conf.5.def: CHANGES:
+
+ Linux: PATCHES: 3205811: Option to skip fd/loop/ram devices in
+ diskIOTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20181 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * python/netsnmp/client_intf.c: CHANGES: python: PATCHES: 3185085:
+
+ Fix segfault on 64-bit systems git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20180 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * python/netsnmp/client_intf.c: CHANGES: python: PATCHES: 3185085:
+
+ Fix segfault on 64-bit systems git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20180 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * python/netsnmp/client_intf.c: CHANGES: python: PATCHES: 3185085:
+
+ Fix segfault on 64-bit systems git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20180 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * python/netsnmp/client_intf.c: CHANGES: python: PATCHES: 3185085:
+
+ Fix segfault on 64-bit systems git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20180 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3175323: Fix handling of
+
+ 'while (false)' blocks git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20179 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3175323: Fix handling of
+
+ 'while (false)' blocks git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20179 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3175323: Fix handling of
+
+ 'while (false)' blocks git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20179 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3175323: Fix handling of
+
+ 'while (false)' blocks git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20179 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3175323: Fix handling of
+
+ 'while (false)' blocks git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20179 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3204883: Fix handling of
+
+ non-table objects named fooTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20178 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3204883: Fix handling of
+
+ non-table objects named fooTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20178 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3204883: Fix handling of
+
+ non-table objects named fooTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20178 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3204883: Fix handling of
+
+ non-table objects named fooTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20178 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3204883: Fix handling of
+
+ non-table objects named fooTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20178 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3211484: Support
+
+ enumerations in notification varbinds git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20177 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3211484: Support
+
+ enumerations in notification varbinds git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20177 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3211484: Support
+
+ enumerations in notification varbinds git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20177 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3211484: Support
+
+ enumerations in notification varbinds git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20177 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * local/mib2c: CHANGES: mib2c: PATCHES: 3211484: Support
+
+ enumerations in notification varbinds git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20177 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/UCD-SNMP-MIB.txt: Add missing system oids to mib git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20176 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/UCD-SNMP-MIB.txt: Add missing system oids to mib git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20176 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/UCD-SNMP-MIB.txt: Add missing system oids to mib git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20176 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/UCD-SNMP-MIB.txt: Add missing system oids to mib git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20176 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/UCD-SNMP-MIB.txt: Add missing system oids to mib git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20176 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix for garbage output when agent presents more
+
+ columns in bulk response than our local MIB file  specified.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20175 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix for garbage output when agent presents more
+
+ columns in bulk response than our local MIB file  specified.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20175 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix for garbage output when agent presents more
+
+ columns in bulk response than our local MIB file  specified.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20175 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix for garbage output when agent presents more
+
+ columns in bulk response than our local MIB file  specified.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20175 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix for garbage output when agent presents more
+
+ columns in bulk response than our local MIB file  specified.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20175 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * man/snmptrapd.8.def: Fix wrong name for config token
+
+ 'doNotRetainNotificationLogs' git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20174 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * man/snmptrapd.8.def: Fix wrong name for config token
+
+ 'doNotRetainNotificationLogs' git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20174 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * man/snmptrapd.8.def: Fix wrong name for config token
+
+ 'doNotRetainNotificationLogs' git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20174 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * man/snmptrapd.8.def: Fix wrong name for config token
+
+ 'doNotRetainNotificationLogs' git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20174 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-12  Niels Baggesen <nba@users.sourceforge.net>
+
+   * man/snmptrapd.8.def: Fix wrong name for config token
+
+ 'doNotRetainNotificationLogs' git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20174 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/sctp-mib/sctpScalars_freebsd.c: Remove bogus
+
+ (Linux) defines git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20173 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/sctp-mib/sctpScalars_freebsd.c: Remove bogus
+
+ (Linux) defines git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20173 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/sctp-mib/sctpScalars_freebsd.c: Remove bogus
+
+ (Linux) defines git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20173 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  snmplib/snmp-tc.c: HAVE_TM_TM_GMTOFF is HAVE_STRUCT_TM_TM_GMTOFF
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20172 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  snmplib/snmp-tc.c: HAVE_TM_TM_GMTOFF is HAVE_STRUCT_TM_TM_GMTOFF
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20172 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  snmplib/snmp-tc.c: HAVE_TM_TM_GMTOFF is HAVE_STRUCT_TM_TM_GMTOFF
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20172 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h, configure, 
+      include/net-snmp/net-snmp-config.h.in: Bill Fenners patch to make
+
+ DISMAN PING and TRACEROUTE MIBS compile under Linux git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20171 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/kernel_sunos5.c, agent/mibgroup/kernel_sunos5.h, 
+      agent/mibgroup/sctp-mib/sctpScalars.h, 
+      agent/mibgroup/sctp-mib/sctpScalars_solaris2.c, 
+      agent/mibgroup/sctp-mib/sctpTables.h, 
+      agent/mibgroup/sctp-mib/sctpTables_solaris2.c: Solaris support for
+
+ SCTP-MIB git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20170 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/kernel_sunos5.c, agent/mibgroup/kernel_sunos5.h, 
+      agent/mibgroup/sctp-mib/sctpScalars.h, 
+      agent/mibgroup/sctp-mib/sctpScalars_solaris2.c, 
+      agent/mibgroup/sctp-mib/sctpTables.h, 
+      agent/mibgroup/sctp-mib/sctpTables_solaris2.c: Solaris support for
+
+ SCTP-MIB git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20170 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/kernel_sunos5.c, agent/mibgroup/kernel_sunos5.h, 
+      agent/mibgroup/sctp-mib/sctpScalars.h, 
+      agent/mibgroup/sctp-mib/sctpScalars_solaris2.c, 
+      agent/mibgroup/sctp-mib/sctpTables.h, 
+      agent/mibgroup/sctp-mib/sctpTables_solaris2.c: Solaris support for
+
+ SCTP-MIB git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20170 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * snmplib/snmp-tc.c: TZ is one hour off if HAVE_TM_TM_GMTOFF and
+
+ SYSV (such is Linux) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20169 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * snmplib/snmp-tc.c: TZ is one hour off if HAVE_TM_TM_GMTOFF and
+
+ SYSV (such is Linux) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20169 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-09  Niels Baggesen <nba@users.sourceforge.net>
+
+   * snmplib/snmp-tc.c: TZ is one hour off if HAVE_TM_TM_GMTOFF and
+
+ SYSV (such is Linux) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20169 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-01  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: CHANGES: snmplib: dtls:
+
+ overhaul of debug   - drastic reduction in number of messages and msg complexity     for basic dtlsudp token   - previous level of detail available by adding 9:dtlsdup token git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20168 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-01  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: CHANGES: snmplib: dtls:
+
+ overhaul of debug   - drastic reduction in number of messages and msg complexity     for basic dtlsudp token   - previous level of detail available by adding 9:dtlsdup token git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20168 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-01  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: CHANGES: snmplib: dtls:
+
+ clean up close; catch 'connect'/'disconnect'   connect = we get successfully decoded snmp data   disconnect = 0 byte read, ssh shutdown flag set   add bio_cache flags for connected/disconnected   check for null ptr before dereferencing   close handling:   -  only send queued data if we got to connected state   -  seriously reduce timeout to wait for junk read. i think      we shouldn't even bother   - return early if cachep is NULL, so we don't have to test it     repeatedly   - use correct nfds value in select call git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20167 06827809-a52a-0410-b366-d66718629ded
+
+2011-04-01  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: CHANGES: snmplib: dtls:
+
+ clean up close; catch 'connect'/'disconnect'   connect = we get successfully decoded snmp data   disconnect = 0 byte read, ssh shutdown flag set   add bio_cache flags for connected/disconnected   check for null ptr before dereferencing   close handling:   -  only send queued data if we got to connected state   -  seriously reduce timeout to wait for junk read. i think      we shouldn't even bother   - return early if cachep is NULL, so we don't have to test it     repeatedly   - use correct nfds value in select call git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20167 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-31  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: make trunk and
+
+ v5-6-patches closely aligned   mostly changes in debug, cookie tracking git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20166 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-31  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: make trunk and
+
+ v5-6-patches closely aligned   mostly changes in debug, cookie tracking git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20166 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-31  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: add cookie handling;
+
+ remove ifdef'd code git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20165 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-27  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: Simplify array resizing somewhat
+
+ further git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20164 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-27  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: Do not assign new_data if the
+
+ value won't be used.  Reduce variable scopes.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20163 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-27  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: It is not necessary to clear a
+
+ chunk of memory if the next action on it is to fill it so use malloc
+ instead of calloc.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20162 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-27  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: ContainerBinaryArray really
+
+ can't hold anythng but pointers and that means the data_size field
+ is unnecessary so I removed it.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20161 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   *  agent/mibgroup/hardware/memory/hw_mem.c, 
+      agent/mibgroup/header_complex.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c, 
+      agent/mibgroup/mibII/interfaces.c, 
+      agent/mibgroup/mibII/sysORTable.c, apps/snmptrapd.c, 
+      snmplib/int64.c, snmplib/snmp_openssl.c, snmplib/snmp_secmod.c, 
+      snmplib/snmpv3.c: Add missing include git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20160 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: Use the right feature
+
+ macro in order to make builds with --enable-ipv6
+ --with-out-transports=UDPIPv6 succeed.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20159 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/transports/snmpDTLSUDPDomain.c: Remove duplicate copies of
+
+ functions git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20158 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-25  Robert Story <rstory@users.sourceforge.net>
+
+   * local/net-snmp-cert: tweak debug message git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20157 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-25  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpTLSBaseDomain.c: CHANGES: snmplib: update
+
+ cert token handling  - remove defX509 cert tokens (should have been removed before 5.6)  - warnings for our/their tokens, recommend using local/peer git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20156 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-25  Robert Story <rstory@users.sourceforge.net>
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpUDPBaseDomain.c: merge netsnmp_dtlsudp6
+      into
+
+ netsnmp_dtlsudp    use addr size to tell them apart git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20155 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-25  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/snmp_transport.c: log (once) warning when deprecated
+
+ f_create_from_tstring transport function used git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20154 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-25  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpTCPDomain.c: reduce casting; make sure to
+
+ free the right pointer git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20153 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-25  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpUDPBaseDomain.c: reduce casting git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20152 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-24  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/dlmod.c: Replace a variable with a
+
+ constant. Make one more oid const.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20151 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-18  Dave Shield <dts12@users.sourceforge.net>
+
+   * CHANGES: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20147 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-18  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20146 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-18  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend, 
+      agent/mibgroup/Makefile.depend, apps/snmpnetstat/Makefile.depend, 
+      snmplib/Makefile.depend: make depend git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20145 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-18  Dave Shield <dts12@users.sourceforge.net>
+
+   *  man/netsnmp_access_multiplexer.3, man/netsnmp_agent.3, 
+      man/netsnmp_agent_handler.h.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_container_iterator.3, 
+      man/netsnmp_container_iterator.h.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_handler.3, man/netsnmp_instance.3, 
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3, 
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_monitor_callback_header_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_null_container.3, man/netsnmp_oid_stash.3, 
+      man/netsnmp_old_api.3, man/netsnmp_read_config.3, 
+      man/netsnmp_read_only.3, man/netsnmp_row_merge.3, 
+      man/netsnmp_scalar.3, man/netsnmp_scalar_group_group.3, 
+      man/netsnmp_serialize.3, man/netsnmp_snmp_agent.3, 
+      man/netsnmp_snmp_alarm.3, man/netsnmp_snmp_client.3, 
+      man/netsnmp_snmp_logging.3, man/netsnmp_snmp_pdu.3, 
+      man/netsnmp_snmp_session.3, man/netsnmp_stash_cache.3, 
+      man/netsnmp_stash_to_next.3, man/netsnmp_table.3, 
+      man/netsnmp_table_array.3, man/netsnmp_table_container.3, 
+      man/netsnmp_table_data.3, man/netsnmp_table_dataset.3, 
+      man/netsnmp_table_generic.3, man/netsnmp_table_indexes.3, 
+      man/netsnmp_table_iterator.3, man/netsnmp_table_iterator.h.3, 
+      man/netsnmp_table_maintenance.3, man/netsnmp_table_row.3, 
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3, 
+      man/netsnmp_tools.h.3, man/netsnmp_util.3,
+      man/netsnmp_utilities.3,  man/netsnmp_variable_list.3,
+      man/netsnmp_watcher.3: documentation
+
+ update git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20144 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-18  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20143 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-17  Niels Baggesen <nba@users.sourceforge.net>
+
+   * man/snmpdelta.1.def: Formatting botch git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20142 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-17  Niels Baggesen <nba@users.sourceforge.net>
+
+   * man/snmpdelta.1.def: Formatting botch git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20142 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-17  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/Makefile.in: Install required mibs git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20141 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-17  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/Makefile.in: Install required mibs git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20141 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-17  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/rfclist: New RFC mibs git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20140 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-17  Niels Baggesen <nba@users.sourceforge.net>
+
+   * mibs/rfclist: New RFC mibs git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20140 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Dave Shield <dts12@users.sourceforge.net>
+
+   * CHANGES, NEWS: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20138 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20137 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend, 
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend, 
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend: make
+
+ depend git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20136 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.in, dist/net-snmp.spec, 
+      perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm, perl/OID/OID.pm, 
+      perl/SNMP/SNMP.pm, perl/TrapReceiver/TrapReceiver.pm, 
+      perl/agent/Support/Support.pm, perl/agent/agent.pm, 
+      perl/agent/default_store/default_store.pm, 
+      perl/default_store/default_store.pm, snmplib/snmp_version.c:
+      Version
+
+ number update git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20135 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Dave Shield <dts12@users.sourceforge.net>
+
+   * Makefile.top: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20134 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  snmplib/cert_util.c: Spelling fix: reginerated -> regenerated. 
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20133 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  snmplib/cert_util.c: Spelling fix: reginerated -> regenerated. 
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20133 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  snmplib/cert_util.c: Simplified r19594 (leak-at-exit fix). 
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20132 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/snmp_openssl.c: Fixed a compiler warning that was
+
+ introduced in r20113.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20131 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-15  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/snmp_openssl.c: Fixed a compiler warning that was
+
+ introduced in r20113.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20130 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * CHANGES, NEWS: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20128 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20127 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-14  Dave Shield <dts12@users.sourceforge.net>
+
+   *  agent/Makefile.depend, agent/helpers/Makefile.depend, 
+      agent/mibgroup/Makefile.depend, apps/Makefile.depend, 
+      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend: make
+
+ depend git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20126 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-14  Dave Shield <dts12@users.sourceforge.net>
+
+   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_handler.3, man/netsnmp_instance.3, 
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3, 
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3, 
+      man/netsnmp_read_config.3, man/netsnmp_read_only.3, 
+      man/netsnmp_row_merge.3, man/netsnmp_scalar.3, 
+      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3, 
+      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3, 
+      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3, 
+      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3, 
+      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3, 
+      man/netsnmp_table.3, man/netsnmp_table_array.3, 
+      man/netsnmp_table_container.3, man/netsnmp_table_data.3, 
+      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3, 
+      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3, 
+      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3, 
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3, man/netsnmp_util.3,
+       man/netsnmp_utilities.3, man/netsnmp_variable_list.3, 
+      man/netsnmp_watcher.3: documentation update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20125 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-14  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.in, dist/net-snmp.spec, 
+      perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm, perl/OID/OID.pm, 
+      perl/SNMP/SNMP.pm, perl/TrapReceiver/TrapReceiver.pm, 
+      perl/agent/agent.pm, perl/agent/default_store/default_store.pm, 
+      perl/default_store/default_store.pm, snmplib/snmp_version.c:
+      Version
+
+ number update git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20124 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * Makefile.top: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20123 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/snmpd.c: Fix main agent select call to use the renamed API
+
+ routine.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20122 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-14  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/snmpd.c: Fix main agent select call to use the renamed API
+
+ routine.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20122 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-13  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c: 
+
+ Bring the naming of the large_fd_set select call into line with the
+ rest of the API.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20121 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-13  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c: 
+
+ Bring the naming of the large_fd_set select call into line with the
+ rest of the API.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20121 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-13  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c: 
+
+ Bring the naming of the large_fd_set select call into line with the
+ rest of the API.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20121 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-13  Dave Shield <dts12@users.sourceforge.net>
+
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c: 
+
+ CHANGES: snmplib: PATCH: 3203806: Add the function
+ netsnmp_large_select() (plus tweaks to netsnmp_large_fd_set_resize) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20120 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-12  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: CHANGES: snmplib: realloc+init
+
+ instead of calloc  inspired by patch 3195532 from Stephen Hemminger git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20119 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-12  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: CHANGES: snmplib: realloc+init
+
+ instead of calloc  inspired by patch 3195532 from Stephen Hemminger git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20119 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-12  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: CHANGES: snmplib: realloc+init
+
+ instead of calloc  inspired by patch 3195532 from Stephen Hemminger git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20119 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-12  Robert Story <rstory@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-forward-mib/data_access/route_common.c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _interface.c, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_int
+       erface.c, include/net-snmp/library/container_binary_array.h:
+
+ CHANGES: snmpd: PATCH: optimizations for large route tables from
+ Stephen Hemminger  applied parts 1-3 of 4 from him (msgs to coders on 2/28/11; subject  ip-forward-mib performance improvements; part 4 needs more work git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20118 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-12  Robert Story <rstory@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-forward-mib/data_access/route_common.c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _interface.c, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_int
+       erface.c: CHANGES: snmpd: PATCH: optimizations for large route
+
+ tables from Stephen Hemminger  applied parts 1-3 of 4 from him (msgs to coders on 2/28/11; subject  ip-forward-mib performance improvements; part 4 needs more work git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20118 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-12  Robert Story <rstory@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-forward-mib/data_access/route_common.c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _interface.c, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_int
+       erface.c: CHANGES: snmpd: PATCH: optimizations for large route
+
+ tables from Stephen Hemminger  applied parts 1-3 of 4 from him (msgs to coders on 2/28/11; subject  ip-forward-mib performance improvements; part 4 needs more work git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20118 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpTLSBaseDomain.c: CHANGES: snmplib: add more
+
+ openssl error cases where we check for local cert git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20117 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/transports/snmpTLSBaseDomain.c: CHANGES: snmplib: add more
+
+ openssl error cases where we check for local cert git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20117 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/disk.c: MinGW: dskTable: Report zero for
+
+ unimplemented fields instead of random data.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20116 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/disk.c: MinGW: dskTable: Report zero for
+
+ unimplemented fields instead of random data.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20116 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swrun.c: CHANGES: snmpd: fixed race
+
+ condition in hrSWRunTable Treat the reads from /proc/<pid>/*
+ carefuly, processes can exit in the middle of processing.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20115 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swrun.c: CHANGES: snmpd: fixed race
+
+ condition in hrSWRunTable Treat the reads from /proc/<pid>/*
+ carefuly, processes can exit in the middle of processing.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20115 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/disman/schedule/schedCore.c: CHANGES: snmpd: Builds
+
+ with most recent MinGW (having #define localtime_r).  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20114 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/disman/schedule/schedCore.c: CHANGES: snmpd: Builds
+
+ with most recent MinGW (having #define localtime_r).  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20114 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/cert_util.c, snmplib/snmp_openssl.c: CHANGES: snmplib:
+
+ refine cert debugging; remove unused function git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20113 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-11  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/cert_util.c, snmplib/snmp_openssl.c: CHANGES: snmplib:
+
+ refine cert debugging; remove unused function git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20113 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/cert_util.c: CHANGES: snmpd: BUG: 3205765: handle reconfig
+
+ for certSecName token git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20112 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Robert Story <rstory@users.sourceforge.net>
+
+   * snmplib/cert_util.c: CHANGES: snmpd: BUG: 3205765: handle reconfig
+
+ for certSecName token git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20112 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/snmpd.c: Spelling fix in a source code comment: messges ->
+
+ messages.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20111 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/snmpd.c: Spelling fix in a source code comment: messges ->
+
+ messages.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20111 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/large_fd_set.c: CHANGES: snmplib: PATCH: 3203806: Minor
+
+ performance optimization of netsnmp_large_fd_set_resize().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20110 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/large_fd_set.c: CHANGES: snmplib: PATCH: 3203806: Minor
+
+ performance optimization of netsnmp_large_fd_set_resize().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20110 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/snmpd.c: CHANGES: snmpd: PATCH: 3203806: Avoid that the main
+
+ agent processing loop - when using more than FD_SETSIZE file
+ descriptors - can cause memory corruption by invoking select().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20109 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/snmpd.c: CHANGES: snmpd: PATCH: 3203806: Avoid that the main
+
+ agent processing loop - when using more than FD_SETSIZE file
+ descriptors - can cause memory corruption by invoking select().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20109 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c: 
+
+ CHANGES: snmplib: PATCH: 3203806: Add the function
+ netsnmp_large_select().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20108 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c: 
+
+ CHANGES: snmplib: PATCH: 3203806: Add the function
+ netsnmp_large_select().  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20108 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c: 
+
+ Fixed two compiler warnings (backported r20098 from the trunk).  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20107 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  testing/fulltests/support/clib_build, 
+      testing/fulltests/unit-tests/T009large_fd_set_clib.c: Added a
+
+ minimal unit test for netsnmp_large_fd_set.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20106 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  testing/fulltests/support/clib_build, 
+      testing/fulltests/unit-tests/T009large_fd_set_clib.c: Added a
+
+ minimal unit test for netsnmp_large_fd_set.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20106 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/large_fd_set.c: CHANGES: snmplib: PATCH: 3203806: Make
+
+ netsnmp_large_fd_set_resize() clear all relevant file descriptors.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20105 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/large_fd_set.c: CHANGES: snmplib: PATCH: 3203806: Make
+
+ netsnmp_large_fd_set_resize() clear all relevant file descriptors.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20105 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp-tc.c: CHANGES: snmpd: BUG: 3178389: Fix inconsistent
+
+ handling of TZ offsets git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20104 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp-tc.c: CHANGES: snmpd: BUG: 3178389: Fix inconsistent
+
+ handling of TZ offsets git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20104 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp-tc.c: CHANGES: snmpd: BUG: 3178389: Fix inconsistent
+
+ handling of TZ offsets git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20104 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp-tc.c: CHANGES: snmpd: BUG: 3178389: Fix inconsistent
+
+ handling of TZ offsets git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20104 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmp-tc.c: CHANGES: snmpd: BUG: 3178389: Fix inconsistent
+
+ handling of TZ offsets git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20104 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * apps/Makefile.in, configure, configure.d/config_os_libs2: make
+
+ variable names match git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20099 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c: 
+
+ Fixed two compiler warnings.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20098 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-10  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure, configure.d/config_os_libs2: fixed installation
+
+ variables for the optional SET programs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20097 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/remove-unneeded-modules: chmod a+x git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20096 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/removeifdefcode.pl: print an error if the end of
+
+ a file was reached and we're not back into the state we can write;
+ otherwise a closing #ifdef is missing.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20095 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/transports/snmpUnixDomain.c: fix endif comment to match
+
+ the opening ifdef git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20094 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/removeifdefcode.pl: reset the canwrite flag for
+
+ every file git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20093 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/remove-unneeded-modules: temporarily leave in
+
+ header files git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20092 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure, configure.ac: change the unique file check to one that
+
+ is not in the mibgroup directory git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20091 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * testing/fulltests/read-only/T0141snmpv2csetfail_simple: a test for
+
+ ensuring the agent rejects SET requests with --enable-read-only git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20090 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * testing/fulltests/default/T0141snmpv2cset_simple: add back in the
+
+ stopagent command git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20089 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  testing/fulltests/unit-tests/T101pdu_type_clib.c, 
+      testing/fulltests/unit-tests/T102pdu_build_clib.c, 
+      testing/fulltests/unit-tests/T103pdu_parse_clib.c: unit tests
+      writen
+
+ for the read-only support converted to work with or without
+ read-only git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20088 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * testing/fulltests/default/T0141snmpv2cset_simple: don't run the
+
+ set test if no_write_support is turned on git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20087 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * testing/fulltests/default/T030snmpv3usercreation_simple: skip if
+
+ no_write_support git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20086 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * testing/fulltests/default/T0141snmpv2cset_simple: A new test to
+
+ check whether SNMPv2c SETs to sysContact work as expected git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20085 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * testing/fulltests/default/Svanyconfig: allow for v2c SET support
+
+ testing git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20084 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/vacm_conf.c: Allow for single quotes for vacm
+
+ context name quoting too git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20083 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-07  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure: fix the configure tests to include the word test in the
+
+ test git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20082 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-07  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * configure.d/config_os_libs2: fix the configure tests to include
+
+ the word test in the test git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20081 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-07  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/remove-unneeded-modules: Added an annoyingly long
+
+ list of exceptions that needs to be automated git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20080 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-07  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/remove-unneeded-modules: A quick perl script to
+
+ remove unneeded code modules from the modules directory git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20079 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-07  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/mibgroup/target/target.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+      snmplib/cert_util.c, snmplib/snmpusm.c, snmplib/vacm.c: more
+
+ improvements (removements) for featurization and read-only support git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20078 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: CHANGES: snmplib: PATCH:
+
+ 3195537: Minor binary_array container sort optimization git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20077 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-07  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/container_binary_array.c: CHANGES: snmplib: PATCH:
+
+ 3195537: Minor binary_array container sort optimization git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20077 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-06  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c: Tabs to spaces
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20076 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-06  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c: Tabs to spaces
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20076 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-06  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c, 
+      configure.d/config_os_functions: Configure check for gethostname2
+
+ Use getaddrinfo if available. Now works for Solaris (and Windows?) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20075 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-06  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c, 
+      configure.d/config_os_functions: Configure check for gethostname2
+
+ Use getaddrinfo if available. Now works for Solaris (and Windows?) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20075 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-05  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * apps/snmptest.c: Add dropped ||'s from r20072 git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20074 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-05  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c, 
+      agent/mibgroup/disman/nslookup/lookupCtlTable.h, 
+      agent/mibgroup/disman/nslookup/lookupResultsTable.c: Clean up, and
+
+ cosolidate result table row creation into a new function.  Saves 200
+ lines of code, with (hopefully) no functionality change git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20073 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-05  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c, 
+      agent/mibgroup/disman/nslookup/lookupCtlTable.h, 
+      agent/mibgroup/disman/nslookup/lookupResultsTable.c: Clean up, and
+
+ cosolidate result table row creation into a new function.  Saves 200
+ lines of code, with (hopefully) no functionality change git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20073 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  apps/Makefile.in, apps/snmptest.c, configure, 
+      configure.d/config_os_libs2: don't build SET related apps with
+
+ --enable-read-only git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20072 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/baby_steps.c, 
+      agent/mibgroup/disman/event/mteEvent.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c, 
+      agent/mibgroup/mibII/snmp_mib.c, agent/mibgroup/mibII/updates.c, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_interface.c, agent/mibgroup/target/target.c, 
+      include/net-snmp/agent/baby_steps.h, 
+      include/net-snmp/agent/snmp_agent.h, snmplib/snmp_client.c: fix
+
+ issues with combining --enable-minimalist and --enable-read-only git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20071 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/find-unused-code: better output for finding
+
+ object symbols.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20070 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Mike Baer <baerm@susers.sourceforge.net>
+
+   * local/minimalist/removeifdefcode.pl: last commit: changes to allow
+
+ parsing of featuers files to get all minimalist tags which are then
+ processed for removal this commit: changed comments/white space git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20069 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Mike Baer <baerm@susers.sourceforge.net>
+
+   *  agent/mibgroup/agent/extend.c: added no_write support to extend.c
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20068 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Mike Baer <baerm@susers.sourceforge.net>
+
+   * agent/helpers/instance.c: Added missing #endif comment for remove
+
+ ifdef code support git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20067 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Mike Baer <baerm@susers.sourceforge.net>
+
+   * local/minimalist/removeifdefcode.pl: added changes to allow code
+
+ removal in-place (i.e. does not require creating a new file) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20066 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Mike Baer <baerm@susers.sourceforge.net>
+
+   * local/minimalist/ignore.regexp: adding a ignore.regexp file that
+
+ can be used with removeifdefcode.pl git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20065 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/feature-makedocs: add a outgoing link to the
+
+ parent marking page git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20064 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  local/minimalist/feature-makedocs: Added a wiki output mode
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20063 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/feature-makedocs: Note that the org output is the
+
+ default in the help output git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20062 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/vmstat_linux.c: CHANGES: snmpd: fixed
+
+ 'truncating integer value > 32 bits' in UCD-SNMP-MIB::systemStats on
+ Linux git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20061 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/vmstat_linux.c: CHANGES: snmpd: fixed
+
+ 'truncating integer value > 32 bits' in UCD-SNMP-MIB::systemStats on
+ Linux git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20061 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/vmstat_linux.c: CHANGES: snmpd: fixed
+
+ 'truncating integer value > 32 bits' in UCD-SNMP-MIB::systemStats on
+ Linux git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20061 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/vmstat_linux.c: CHANGES: snmpd: fixed
+
+ 'truncating integer value > 32 bits' in UCD-SNMP-MIB::systemStats on
+ Linux git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20061 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/agent_read_config.c, agent/helpers/watcher.c, 
+      agent/mibgroup/agentx/master.c, agent/mibgroup/agentx/subagent.c, 
+      agent/mibgroup/header_complex.c, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_dat
+       a_access.c, agent/mibgroup/mibII/kernel_linux.c, 
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/var_route.c,
+       agent/mibgroup/notification-log-mib/notification_log.c, 
+      agent/mibgroup/snmpv3/snmpEngine.c, 
+      agent/mibgroup/snmpv3/usmUser.c, agent/mibgroup/util_funcs.c, 
+      agent/mibgroup/utilities/iquery.c, snmplib/snmp_api.c:
+
+ reclassification of the remaining features into a hierarchy git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20060 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_openssl.c: don't double-declare cert_utils git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20059 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_linux.c: the
+
+ ipaddress_linux was incorrectly marked as needing cert_fingerprints git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20058 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/agent_registry.c: put the agent_registry feature in
+
+ libnetsnmpagent.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20057 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/libsnmp_dll/libsnmp.def: CHANGES: Win32: Deprecated
+
+ libsnmp.def - add NETSNMP_IMPORT to function declarations instead to
+ export a function from netsnmp.dll.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20056 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/libsnmp_dll/libsnmp.def: CHANGES: Win32: Deprecated
+
+ libsnmp.def - add NETSNMP_IMPORT to function declarations instead to
+ export a function from netsnmp.dll.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20056 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * include/net-snmp/library/snmp_debug.h: Moved a source code comment
+
+ such that it is again immediately above the function declarations it
+ applies to.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20055 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpIPv6BaseDomain.h, 
+      include/net-snmp/library/snmp_debug.h: Added missing
+      NETSNMP_IMPORT
+
+ declarations.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20054 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpIPv6BaseDomain.h, 
+      include/net-snmp/library/snmp_debug.h: Added missing
+      NETSNMP_IMPORT
+
+ declarations.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20054 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/libagent/libagent.def, win32/libucdmibs/libucdmibs.def: 
+
+ Removed two obsolete Win32 files.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20053 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/libagent/libagent.def, win32/libucdmibs/libucdmibs.def: 
+
+ Removed two obsolete Win32 files.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20053 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/transports/snmpIPv6BaseDomain.c: Trivial comment fix:
+
+ snmpIPv6BaseDomain.c contains IPv6 base transport support functions
+ instead of IPv4.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20052 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-03  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * snmplib/transports/snmpIPv6BaseDomain.c: Trivial comment fix:
+
+ snmpIPv6BaseDomain.c contains IPv6 base transport support functions
+ instead of IPv4.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20052 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/config.h: Removed an obsolete file.  git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20050 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmp_secmod.h, win32/snmpsm_shutdown.h, 
+      win32/snmpv3-security-includes.h: Builds again with Visual Studio
+
+ after the introduction of the "feature" feature.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20049 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * win32/snmpsm_init.h: Removed a misleading comment.  git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20048 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * configure, configure.d/config_os_libs2: Correct the check of
+
+ wether usm security is enabled.  Regenerate configure.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20047 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * include/net-snmp/net-snmp-config.h.in: Regenerate git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20046 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_dat
+       a_access.c: Add missing dependencies git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20045 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/snmpusm.c: Ignore the return value from
+
+ snmp_increment_statistic git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20044 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/container.c: Split the container_compare_functions feature
+
+ into container_compare_mem, container_compare_long,
+ container_compare_ulong, container_compare_int32 and
+ container_compare_uint32 Unify the structure of the compare
+ functions further.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20043 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/container.c: Change the spelling of the
+
+ container_compare_cstring feature to container_ncompare_cstring as
+ that is the function that is guarded by that attribute.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20042 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * include/net-snmp/library/snmp_api.h: Add the missing replacement
+
+ macro for snmp_init_statistics git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20041 06827809-a52a-0410-b366-d66718629ded
+
+2011-03-02  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * include/net-snmp/library/snmp_api.h: snmp_increment_statistic_by
+
+ takes two arguments so let the replacement macro take two arguments
+ as well.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20040 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-27  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/disman/nslookup/lookupCtlTable.c: Fix typo in
+
+ r19990 git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20039 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * local/minimalist/feature-check: Remove lines starting with #define
+
+ in the output of the preprocessor When gcc -E is called with -ggdb3
+ (or -dD) then all the macro definitions are passed through the
+ preprocessor and that messes up our processing.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20038 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * Makefile.rules: Put the generated file in the build tree, not the
+
+ source tree.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20037 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/agent_trap.c, agent/helpers/table_dataset.c, 
+      agent/mibgroup/disman/event/mteEvent.c, 
+      agent/mibgroup/disman/event/mteTrigger.c, 
+      agent/mibgroup/disman/schedule/schedCore.c, 
+      agent/mibgroup/hardware/cpu/cpu.c, 
+      agent/mibgroup/hardware/memory/hw_mem.c, 
+      agent/mibgroup/host/data_access/swinst.c, 
+      agent/mibgroup/host/data_access/swrun.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _interface.c, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_int
+       erface.c, agent/mibgroup/ip-mib/data_access/ipaddress_common.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_inter
+       face.c, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interfa
+       ce.c, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_interface.c, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_interface.c, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interf
+       ace.c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.
+       c, agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.
+       c: moved a bunch of features into the libnetsnmpmibs feature set.
+       git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20036 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/agent_handler.c, agent/agent_index.c, 
+      agent/agent_registry.c, agent/agent_trap.c, 
+      agent/helpers/all_helpers.c, agent/helpers/cache_handler.c, 
+      agent/helpers/table.c, agent/helpers/table_array.c, 
+      agent/helpers/table_data.c, agent/helpers/table_dataset.c, 
+      agent/helpers/table_iterator.c, agent/helpers/table_row.c, 
+      agent/snmp_agent.c, local/minimalist/sizetests, snmplib/mib.c:
+
+ classified libnetsnmpagent features git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20035 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: reverse the order of the libraries
+
+ (snmplib first) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20034 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: output cleanup and added agent-mibs
+
+ and logging options git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20033 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: add a default set of arguments
+
+ calculate resulting sizes git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20032 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/dir_utils.c: Added a missing ; git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20031 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: prefix the output files with a number
+
+ to indicate order git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20030 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: save the results of the system
+
+ executions git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20029 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: enable building of the resulting
+
+ combinations Add a -n flag for dry-runs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20028 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  local/minimalist/sizetests: enable the -t tag for limiting types
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20027 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: Added argument parsing and arguments
+
+ for selecting and listing types git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20026 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: generate configure script arguments
+
+ from specs git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20025 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: added a bunch of new feature options
+
+ and cleaned up a bit git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20024 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/sizetests: added a new (not yet working) script
+
+ to test sizing of various argument sets git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20023 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/dlmod.c: Simplify the code. Unify some
+
+ debug logs.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20022 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/dlmod.c: Reduce the scope of a few
+
+ variables git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20021 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   *  agent/mibgroup/ucd-snmp/dlmod.c: Remove some unused includes. 
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20020 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/dlmod.c: Make it possible to
+
+ initialize/uninitialize modules with 64 character names and not
+ suffer wild writes.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20019 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/dlmod.c: Code restructuring - put the
+
+ managed routines before the managment code.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20018 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/dlmod.c, agent/mibgroup/ucd-snmp/dlmod.h: 
+
+ CHANGES: libnetsnmpmibs: Make all functions in the dlmod module that
+ don't have to be public static git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20017 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-26  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/dlmod.c: Rename deinit_dlmod to
+
+ shutdown_dlmod as that is what it really is about.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20016 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Mike Baer <baerm@susers.sourceforge.net>
+
+   * agent/mibgroup/agent/nsVacmAccessTable.c: adding minimalist ifdefs
+
+ to net-snmp-vacm mib git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20015 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/feature-makedocs: properly handle twin children;
+
+ also sort the child list alphabetically.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20014 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_logging.c: I suppose logging should probably default
+
+ to being a wanted option :-) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20013 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/feature-makedocs: org-link the files in the
+
+ output git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20012 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  Makefile.rules, agent/Makefile.in, agent/mibgroup/Makefile.in, 
+      apps/Makefile.in, apps/snmpnetstat/Makefile.in, 
+      local/minimalist/feature-check, snmplib/Makefile.in: make the
+
+ features-check script track the full source path git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20011 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/feature-makedocs: change the function names to
+
+ match that it's printing to org-mode at the moment.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20010 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  snmplib/file_utils.c, snmplib/mib.c, snmplib/oid_stash.c, 
+      snmplib/snmp_api.c, snmplib/snmp_logging.c, snmplib/tools.c: last
+      of
+
+ the feature classification in libnetsnmp git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20009 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/keytools.c, snmplib/lcd_time.c, snmplib/scapi.c: make the
+
+ usm_support utilities self-declare themselves as children to make
+ sure they're properly included during dependency ordering git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20008 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  snmplib/callback.c, snmplib/cert_util.c, snmplib/check_varbind.c, 
+      snmplib/container.c, snmplib/data_list.c, snmplib/default_store.c,
+       snmplib/fd_event_manager.c, snmplib/file_utils.c, 
+      snmplib/keytools.c, snmplib/snmpusm.c: superstructuralizationizing
+
+ the features git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20007 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  snmplib/read_config.c, snmplib/snmp-tc.c, snmplib/snmp_client.c, 
+      snmplib/snmp_enum.c, snmplib/snmp_transport.c, snmplib/system.c, 
+      snmplib/text_utils.c, snmplib/tools.c, 
+      snmplib/transports/snmpUnixDomain.c, snmplib/ucd_compat.c:
+
+ significant parent/child feature classification git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20006 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_api.c, snmplib/snmpusm.c: classify a few components
+
+ into a top-level libnetsnmp component git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20005 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  snmplib/keytools.c, snmplib/lcd_time.c, snmplib/scapi.c, 
+      snmplib/snmpusm.c: structurize the usm features git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20004 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  snmplib/container.c, snmplib/container_iterator.c, 
+      snmplib/container_list_ssll.c, snmplib/container_null.c, 
+      snmplib/dir_utils.c: structure the container features into a
+
+ hierarchy git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20003 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_logging.c: group the logging handlers under a parent
+
+ feature git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20002 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  local/minimalist/feature-makedocs: fix the expect argument count
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20001 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/feature-makedocs: fix the name of the expected
+
+ input file git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20000 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/feature-makedocs: argument parsing and usage()
+
+ output git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19999 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/stash_cache.c, agent/helpers/stash_to_next.c, 
+      agent/helpers/table_dataset.c, agent/helpers/table_iterator.c, 
+      agent/mibgroup/examples/netSnmpHostsTable.c, 
+      agent/mibgroup/mibII/ipCidrRouteTable.c, snmplib/oid_stash.c: -
+      added two oid_stash functions as individual features - cleaned up
+      some warnings in the table_iterator code git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19998 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   *  dist/makerelease.xml: Fix the command to create a new SVN tag line
+      (Having brought the structure of the 5.5.x branch  into line with
+      the other branches, the previous  command is now wrong for *all*
+      branches, rather  than just most of them!) git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19997 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   *  dist/makerelease.xml: Fix the command to create a new SVN tag line
+      (Having brought the structure of the 5.5.x branch  into line with
+      the other branches, the previous  command is now wrong for *all*
+      branches, rather  than just most of them!) git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19997 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   *  dist/makerelease.xml: Fix the command to create a new SVN tag line
+      (Having brought the structure of the 5.5.x branch  into line with
+      the other branches, the previous  command is now wrong for *all*
+      branches, rather  than just most of them!) git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19997 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   *  dist/makerelease.xml: Fix the command to create a new SVN tag line
+      (Having brought the structure of the 5.5.x branch  into line with
+      the other branches, the previous  command is now wrong for *all*
+      branches, rather  than just most of them!) git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19997 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   *  man/netsnmp_access_multiplexer.3, man/netsnmp_agent.3, 
+      man/netsnmp_agent_handler.h.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_container_iterator.3, 
+      man/netsnmp_container_iterator.h.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_handler.3, man/netsnmp_instance.3, 
+      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3, 
+      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_monitor_callback_header_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_null_container.3, man/netsnmp_oid_stash.3, 
+      man/netsnmp_old_api.3, man/netsnmp_read_config.3, 
+      man/netsnmp_read_only.3, man/netsnmp_row_merge.3, 
+      man/netsnmp_scalar.3, man/netsnmp_scalar_group_group.3, 
+      man/netsnmp_serialize.3, man/netsnmp_snmp_agent.3, 
+      man/netsnmp_snmp_alarm.3, man/netsnmp_snmp_client.3, 
+      man/netsnmp_snmp_logging.3, man/netsnmp_snmp_pdu.3, 
+      man/netsnmp_snmp_session.3, man/netsnmp_stash_cache.3, 
+      man/netsnmp_stash_to_next.3, man/netsnmp_table.3, 
+      man/netsnmp_table_array.3, man/netsnmp_table_container.3, 
+      man/netsnmp_table_data.3, man/netsnmp_table_dataset.3, 
+      man/netsnmp_table_generic.3, man/netsnmp_table_indexes.3, 
+      man/netsnmp_table_iterator.3, man/netsnmp_table_iterator.h.3, 
+      man/netsnmp_table_maintenance.3, man/netsnmp_table_row.3, 
+      man/netsnmp_table_rows.3, man/netsnmp_tdata.3, 
+      man/netsnmp_tools.h.3, man/netsnmp_util.3,
+      man/netsnmp_utilities.3,  man/netsnmp_variable_list.3,
+      man/netsnmp_watcher.3: documentation
+
+ update git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19995 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec, perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm,
+       perl/OID/OID.pm, perl/SNMP/SNMP.pm, 
+      perl/TrapReceiver/TrapReceiver.pm, perl/agent/Support/Support.pm, 
+      perl/agent/agent.pm, perl/agent/default_store/default_store.pm, 
+      perl/default_store/default_store.pm: Version number update
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19994 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   * ChangeLog: version update git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19993 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec, perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm,
+       perl/OID/OID.pm, perl/SNMP/SNMP.pm, 
+      perl/TrapReceiver/TrapReceiver.pm, perl/agent/Support/Support.pm, 
+      perl/agent/agent.pm, perl/agent/default_store/default_store.pm, 
+      perl/default_store/default_store.pm: Version number update
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19992 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmpv3.c: Avoid a possible crash if the engineID is not
+
+ available or set.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19991 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmpv3.c: Avoid a possible crash if the engineID is not
+
+ available or set.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19991 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmpv3.c: Avoid a possible crash if the engineID is not
+
+ available or set.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19991 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmpv3.c: Avoid a possible crash if the engineID is not
+
+ available or set.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19991 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Dave Shield <dts12@users.sourceforge.net>
+
+   * snmplib/snmpv3.c: Avoid a possible crash if the engineID is not
+
+ available or set.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19991 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-25  Mike Baer <baerm@susers.sourceforge.net>
+
+   *  agent/mibgroup/disman/event/mteEventNotificationTable.c, 
+      agent/mibgroup/disman/event/mteEventSetTable.c, 
+      agent/mibgroup/disman/event/mteEventTable.c, 
+      agent/mibgroup/disman/event/mteObjectsTable.c, 
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c, 
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c, 
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c, 
+      agent/mibgroup/disman/event/mteTriggerTable.c, 
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c, 
+      agent/mibgroup/disman/mteEventNotificationTable.c, 
+      agent/mibgroup/disman/mteObjectsTable.c, 
+      agent/mibgroup/disman/mteObjectsTable.h, 
+      agent/mibgroup/disman/mteTriggerBooleanTable.c, 
+      agent/mibgroup/disman/mteTriggerBooleanTable.h, 
+      agent/mibgroup/disman/mteTriggerDeltaTable.c, 
+      agent/mibgroup/disman/mteTriggerDeltaTable.h, 
+      agent/mibgroup/disman/mteTriggerExistenceTable.c, 
+      agent/mibgroup/disman/mteTriggerExistenceTable.h, 
+      agent/mibgroup/disman/mteTriggerTable.c, 
+      agent/mibgroup/disman/mteTriggerTable.h, 
+      agent/mibgroup/disman/mteTriggerThresholdTable.c, 
+      agent/mibgroup/disman/mteTriggerThresholdTable.h, 
+      agent/mibgroup/disman/nslookup/lookupCtlTable.c, 
+      agent/mibgroup/disman/nslookup/lookupCtlTable.h: adding ifdef code
+
+ for minimalist support of diffman mib git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19990 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-24  Mike Baer <baerm@susers.sourceforge.net>
+
+   *  agent/mibgroup/host/hrSWRunTable.c, 
+      agent/mibgroup/host/hr_system.c, agent/mibgroup/host/hr_system.h:
+
+ Adding minimalist ifdefs to host resource mib git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19989 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_iterator.c, snmplib/data_list.c: mark the
+
+ data_list function that's only used in stach_caching as a feature git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19988 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_iterator.c: whoops.  git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19987 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  agent/helpers/table_iterator.c: more missing stash references
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19986 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_iterator.c: ifdefed/featured out a missing
+
+ stash_cache section git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19985 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/util_funcs.c: make the prefix_info more
+
+ hierarchical and sub-feature the unused one git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19984 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/minimalist/find-unused-code: do include the perl/python code
+
+ when searching for files git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19983 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-24  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/table_tdata.c: make the semi-used table_tdata
+
+ functions children of table_tdata_all instead of just table_tdata git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19982 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * agent/helpers/table_tdata.c: Correct typo git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19981 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Magnus Fromreide <magfr@users.sourceforge.net>
+
+   * snmplib/parse.c: Correct typo git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19980 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/snmp_vars.c: proper include of prototype git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19979 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  configure, configure.d/config_modules_agent, 
+      configure.d/config_modules_transports, 
+      configure.d/config_project_with_enable: compat some feature header
+
+ chicken and egg problems git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19978 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/snmp_vars.c: Include required prototype git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19977 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * snmplib/snmpusm.c: unsigned juggling to remove warnings git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19976 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c,
+      
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h,
+      
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_dat
+       a_access.c,
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c:
+
+ unsigned juggling to remove warnings git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19975 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c,
+      
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h,
+      
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_dat
+       a_access.c,
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c:
+
+ unsigned juggling to remove warnings git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19975 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib.h: Enable (probably forgotten)
+
+ ipAddressPrefixTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19974 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/ip-mib.h: Enable (probably forgotten)
+
+ ipAddressPrefixTable git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19974 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  local/minimalist/feature-check, 
+      local/minimalist/feature-makedocs,
+      local/minimalist/feature-remove, 
+      local/minimalist/find-unused-code, 
+      local/minimalist/removeifdefcode.pl: added other missing 'new'
+      files
+
+ not included in the minimalist patch file git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19973 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/tcp-mib/data_access/tcpConn_freebsd4.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_netbsd.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_openbsd.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_freebsd4.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_netbsd.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_openbsd.c: Loading
+
+ IPv6 data is a no-no when IPv6 not enabled git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19972 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/tcp-mib/data_access/tcpConn_freebsd4.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_netbsd.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_openbsd.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_freebsd4.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_netbsd.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_openbsd.c: Loading
+
+ IPv6 data is a no-no when IPv6 not enabled git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19972 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix bug 3118631: snmptable segfaults if index
+
+ contains : character git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@19971 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix bug 3118631: snmptable segfaults if index
+
+ contains : character git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19971 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix bug 3118631: snmptable segfaults if index
+
+ contains : character git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19971 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix bug 3118631: snmptable segfaults if index
+
+ contains : character git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19971 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * apps/snmptable.c: Fix bug 3118631: snmptable segfaults if index
+
+ contains : character git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19971 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * include/net-snmp/system/freebsd8.h: FreeBSD 8 support git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@19970 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * include/net-snmp/system/freebsd8.h: FreeBSD 8 support git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19970 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * include/net-snmp/system/freebsd8.h: FreeBSD 8 support git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19970 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Niels Baggesen <nba@users.sourceforge.net>
+
+   * include/net-snmp/system/freebsd8.h: FreeBSD 8 support git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19970 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * include/net-snmp/net-snmp-features.h: added missing
+
+ net-snmp-features.h git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19969 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-23  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  Makefile.in, Makefile.rules, Makefile.top, agent/Makefile.in, 
+      agent/agent_handler.c, agent/agent_index.c, 
+      agent/agent_read_config.c, agent/agent_registry.c, 
+      agent/agent_trap.c, agent/helpers/all_helpers.c, 
+      agent/helpers/baby_steps.c, agent/helpers/cache_handler.c, 
+      agent/helpers/instance.c, agent/helpers/mode_end_call.c, 
+      agent/helpers/multiplexer.c, agent/helpers/old_api.c, 
+      agent/helpers/read_only.c, agent/helpers/row_merge.c, 
+      agent/helpers/scalar.c, agent/helpers/scalar_group.c, 
+      agent/helpers/snmp_get_statistic.c, agent/helpers/stash_cache.c, 
+      agent/helpers/stash_to_next.c, agent/helpers/table.c, 
+      agent/helpers/table_array.c, agent/helpers/table_container.c, 
+      agent/helpers/table_data.c, agent/helpers/table_dataset.c, 
+      agent/helpers/table_iterator.c, agent/helpers/table_row.c, 
+      agent/helpers/table_tdata.c, agent/helpers/watcher.c, 
+      agent/mibgroup/Makefile.in, agent/mibgroup/Rmon/alarmTable.c, 
+      agent/mibgroup/agent/extend.c, agent/mibgroup/agent/nsCache.c, 
+      agent/mibgroup/agent/nsLogging.c, 
+      agent/mibgroup/agent/nsModuleTable.c, 
+      agent/mibgroup/agent/nsTransactionTable.c, 
+      agent/mibgroup/agent/nsVacmAccessTable.c, 
+      agent/mibgroup/agentx/agentx_config.c, 
+      agent/mibgroup/agentx/client.c, agent/mibgroup/agentx/master.c, 
+      agent/mibgroup/agentx/master_admin.c, 
+      agent/mibgroup/agentx/subagent.c, 
+      agent/mibgroup/disman/event/mteEvent.c, 
+      agent/mibgroup/disman/event/mteEventConf.c, 
+      agent/mibgroup/disman/event/mteEventNotificationTable.c, 
+      agent/mibgroup/disman/event/mteEventSetTable.c, 
+      agent/mibgroup/disman/event/mteEventTable.c, 
+      agent/mibgroup/disman/event/mteObjectsTable.c, 
+      agent/mibgroup/disman/event/mteTrigger.c, 
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c, 
+      agent/mibgroup/disman/event/mteTriggerConf.c, 
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c, 
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c, 
+      agent/mibgroup/disman/event/mteTriggerTable.c, 
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c, 
+      agent/mibgroup/disman/expr/expErrorTable.c, 
+      agent/mibgroup/disman/expr/expExpressionConf.c, 
+      agent/mibgroup/disman/expr/expExpressionTable.c, 
+      agent/mibgroup/disman/expr/expObjectConf.c, 
+      agent/mibgroup/disman/expr/expObjectTable.c, 
+      agent/mibgroup/disman/expression/expExpressionTable.c, 
+      agent/mibgroup/disman/mteEventNotificationTable.c, 
+      agent/mibgroup/disman/mteEventTable.c, 
+      agent/mibgroup/disman/mteTriggerTable.c, 
+      agent/mibgroup/disman/schedule/schedConf.c, 
+      agent/mibgroup/disman/schedule/schedCore.c, 
+      agent/mibgroup/disman/schedule/schedTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interfac
+       e.c, agent/mibgroup/examples/data_set.c, 
+      agent/mibgroup/examples/delayed_instance.c, 
+      agent/mibgroup/examples/netSnmpHostsTable.c, 
+      agent/mibgroup/examples/netSnmpHostsTable_checkfns.c, 
+      agent/mibgroup/examples/scalar_int.c, 
+      agent/mibgroup/hardware/cpu/cpu.c, 
+      agent/mibgroup/hardware/cpu/cpu_kinfo.c, 
+      agent/mibgroup/hardware/cpu/cpu_nlist.c, 
+      agent/mibgroup/hardware/cpu/cpu_perfstat.c, 
+      agent/mibgroup/hardware/cpu/cpu_sysctl.c, 
+      agent/mibgroup/hardware/memory/hw_mem.c, 
+      agent/mibgroup/header_complex.c, 
+      agent/mibgroup/host/data_access/swinst.c, 
+      agent/mibgroup/host/data_access/swinst_darwin.c, 
+      agent/mibgroup/host/data_access/swinst_pkginfo.c, 
+      agent/mibgroup/host/data_access/swinst_rpm.c, 
+      agent/mibgroup/host/data_access/swrun.c, 
+      agent/mibgroup/host/hr_filesys.c, agent/mibgroup/host/hr_swinst.c,
+       agent/mibgroup/host/hr_system.c,
+      agent/mibgroup/host/hrh_filesys.c, 
+      agent/mibgroup/if-mib/data_access/interface_linux.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable.h, 
+      agent/mibgroup/if-mib/ifTable/ifTable_data_access.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable.h, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_constants.h, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       .c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _interface.c, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_int
+       erface.c, agent/mibgroup/ip-mib/data_access/arp_common.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_
+       access.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_inter
+       face.c, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_dat
+       a_access.c, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_int
+       erface.c, agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c,
+       agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_dat
+       a_access.c, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_int
+       erface.c, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interfa
+       ce.c, agent/mibgroup/ip-mib/ip_scalars.c, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interfa
+       ce.c, 
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interfa
+       ce.c, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_interface.c, agent/mibgroup/mibII/icmp.c, 
+      agent/mibgroup/mibII/interfaces.c, agent/mibgroup/mibII/ip.c, 
+      agent/mibgroup/mibII/ipCidrRouteTable.c, 
+      agent/mibgroup/mibII/ipv6.c, agent/mibgroup/mibII/kernel_linux.c, 
+      agent/mibgroup/mibII/setSerialNo.c, 
+      agent/mibgroup/mibII/snmp_mib_5_5.c, 
+      agent/mibgroup/mibII/sysORTable.c, 
+      agent/mibgroup/mibII/system_mib.c, agent/mibgroup/mibII/tcp.c, 
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udp.c, 
+      agent/mibgroup/mibII/vacm_conf.c, 
+      agent/mibgroup/mibII/vacm_context.c, 
+      agent/mibgroup/mibII/vacm_vars.c,
+      agent/mibgroup/mibII/vacm_vars.h, 
+      agent/mibgroup/mibII/var_route.c, 
+      agent/mibgroup/notification-log-mib/notification_log.c, 
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c, 
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.h, 
+      agent/mibgroup/notification/snmpNotifyTable.c, 
+      agent/mibgroup/notification/snmpNotifyTable.h, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c
+       , agent/mibgroup/sctp-mib/sctpTables_common.c, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable.c, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_data_access.c, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_interface.c, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_interface.c, agent/mibgroup/snmpv3/snmpEngine.c, 
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.c, 
+      agent/mibgroup/snmpv3/usmStats.c, 
+      agent/mibgroup/snmpv3/usmStats_5_5.c, 
+      agent/mibgroup/snmpv3/usmUser.c, agent/mibgroup/snmpv3/usmUser.h, 
+      agent/mibgroup/snmpv3mibs.h, 
+      agent/mibgroup/target/snmpTargetAddrEntry.c, 
+      agent/mibgroup/target/snmpTargetAddrEntry.h, 
+      agent/mibgroup/target/snmpTargetParamsEntry.c, 
+      agent/mibgroup/target/snmpTargetParamsEntry.h, 
+      agent/mibgroup/target/target.c, 
+      agent/mibgroup/target/target_counters.c, 
+      agent/mibgroup/target/target_counters.h, 
+      agent/mibgroup/target/target_counters_5_5.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_common.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_solaris2.c, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interf
+       ace.c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.
+       c, agent/mibgroup/testhandler.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSN
+       Table.c, 
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.
+       c, agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c, 
+      agent/mibgroup/ucd-snmp/dlmod.c, 
+      agent/mibgroup/ucd-snmp/extensible.c, 
+      agent/mibgroup/ucd-snmp/lmSensors.c, 
+      agent/mibgroup/ucd-snmp/pass.c, 
+      agent/mibgroup/ucd-snmp/pass_persist.c, 
+      agent/mibgroup/ucd-snmp/proc.c, agent/mibgroup/ucd-snmp/proxy.c, 
+      agent/mibgroup/ucd-snmp/versioninfo.c, 
+      agent/mibgroup/ucd-snmp/vmstat_linux.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.
+       c, agent/mibgroup/util_funcs.c,
+      agent/mibgroup/utilities/iquery.c,  agent/mibgroup/winExtDLL.c,
+      agent/snmp_agent.c, agent/snmp_vars.c,  agent/snmpd.c,
+      apps/Makefile.in, apps/agentxtrap.c, 
+      apps/snmpnetstat/Makefile.in, apps/snmpnetstat/main.c, 
+      apps/snmpnetstat/netstat.h, apps/snmpnetstat/route.c, 
+      apps/snmptest.c, apps/snmptranslate.c, apps/snmptrapd.c, 
+      apps/snmptrapd_handlers.c, apps/snmptrapd_sql.c, configure, 
+      configure.ac, configure.d/config_modules_agent, 
+      configure.d/config_modules_lib, 
+      configure.d/config_modules_security_modules, 
+      configure.d/config_modules_transports,
+      configure.d/config_os_libs2, 
+      configure.d/config_project_perl_python, 
+      configure.d/config_project_with_enable, 
+      include/net-snmp/agent/snmp_agent.h, 
+      include/net-snmp/library/libsnmp.h, 
+      include/net-snmp/library/snmp.h, 
+      include/net-snmp/library/snmp_api.h, 
+      include/net-snmp/library/snmp_client.h, 
+      include/net-snmp/library/snmp_secmod.h, 
+      include/net-snmp/library/snmpksm.h, 
+      include/net-snmp/library/snmptsm.h, 
+      include/net-snmp/library/snmpusm.h, 
+      include/net-snmp/library/snmpv3.h, 
+      include/net-snmp/net-snmp-config.h.in, perl/OID/OID.xs, 
+      perl/SNMP/SNMP.xs, perl/agent/agent.xs, snmplib/Makefile.in, 
+      snmplib/callback.c, snmplib/cert_util.c, snmplib/check_varbind.c, 
+      snmplib/container.c, snmplib/container_iterator.c, 
+      snmplib/container_list_ssll.c, snmplib/container_null.c, 
+      snmplib/data_list.c, snmplib/default_store.c, snmplib/dir_utils.c,
+       snmplib/fd_event_manager.c, snmplib/file_utils.c,
+      snmplib/int64.c,  snmplib/keytools.c, snmplib/lcd_time.c,
+      snmplib/mib.c,  snmplib/oid_stash.c, snmplib/parse.c,
+      snmplib/read_config.c,  snmplib/scapi.c, snmplib/snmp-tc.c,
+      snmplib/snmp_api.c,  snmplib/snmp_client.c, snmplib/snmp_enum.c,
+      snmplib/snmp_logging.c,  snmplib/snmp_openssl.c,
+      snmplib/snmp_parse_args.c,  snmplib/snmp_secmod.c,
+      snmplib/snmp_transport.c, snmplib/snmpksm.c,  snmplib/snmptsm.c,
+      snmplib/snmpusm.c, snmplib/snmpv3.c,  snmplib/system.c,
+      snmplib/text_utils.c, snmplib/tools.c, 
+      snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpSSHDomain.c, 
+      snmplib/transports/snmpTLSBaseDomain.c, 
+      snmplib/transports/snmpTLSTCPDomain.c, 
+      snmplib/transports/snmpUnixDomain.c, snmplib/ucd_compat.c, 
+      testing/fulltests/default/Sv3config, 
+      testing/fulltests/default/Sv3usmconfigbase, 
+      testing/fulltests/default/Sv3vacmconfig, 
+      testing/fulltests/default/T049snmpv3inform_simple, 
+      testing/fulltests/default/T049snmpv3informauth_simple, 
+      testing/fulltests/default/T057trapdauthtest2_simple, 
+      testing/fulltests/default/T057trapdauthtest3_simple, 
+      testing/fulltests/default/T057trapdauthtest_simple, 
+      testing/fulltests/default/T060trapdperl_simple, 
+      testing/fulltests/default/T061agentperl_simple, 
+      testing/fulltests/default/T113agentxtrap_simple, 
+      testing/fulltests/default/T114agentxagentxtrap_simple: NEWS:
+
+ packaging: Enable micro-and-macro-feature management within
+ Net-SNMP; this adds a number of new flags to configure
+ (--enable-minimalist and --enable-read-only).  These changes are
+ designed to remove much of the inline code that isn't always
+ necessary or desired.  Scripts exist (and will be improved) to stip
+ out unused components from the code entirely to enable a shorter
+ review process for upgrading to new releases.  This work was done by
+ Wes Hardaker and Michael Baer from SPARTA, Inc. but is being checked
+ in as a large patch since converting the micro patches from git to
+ svn turend out to be impossible git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19968 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-22  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * FAQ: use the wiki URL instead of the tutorial-5 URL for the
+
+ snmptrap tutorial git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19967 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-22  Dave Shield <dts12@users.sourceforge.net>
+
+   * agent/mibgroup/host/hr_swinst.c: Revert a bogus change that crept
+
+ into the code.  git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19966 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-22  Dave Shield <dts12@users.sourceforge.net>
+
+   *  AGENT.txt, CHANGES, COPYING, ChangeLog, CodingStyle, 
+      EXAMPLE.conf.def, FAQ, INSTALL, Makefile.am, Makefile.in, 
+      Makefile.rules, Makefile.top, NEWS, PORTING, README, 
+      README.Panasonic_AM3X.txt, README.agent-mibs, README.agentx, 
+      README.aix, README.hpux11, README.irix, README.krb5, README.osX, 
+      README.snmpv3, README.solaris, README.sql, README.thread, 
+      README.tru64, README.win32, TODO, acconfig.h, aclocal.m4, 
+      agent/Makefile.depend, agent/Makefile.in, agent/agent_handler.c, 
+      agent/agent_index.c, agent/agent_read_config.c, 
+      agent/agent_registry.c, agent/agent_sysORTable.c, 
+      agent/agent_trap.c, agent/auto_nlist.c, agent/autonlist.h, 
+      agent/helpers/Makefile.depend, agent/helpers/Makefile.in, 
+      agent/helpers/all_helpers.c, agent/helpers/baby_steps.c, 
+      agent/helpers/bulk_to_next.c, agent/helpers/cache_handler.c, 
+      agent/helpers/debug_handler.c, agent/helpers/instance.c, 
+      agent/helpers/mode_end_call.c, agent/helpers/multiplexer.c, 
+      agent/helpers/null.c, agent/helpers/old_api.c, 
+      agent/helpers/read_only.c, agent/helpers/row_merge.c, 
+      agent/helpers/scalar.c, agent/helpers/scalar_group.c, 
+      agent/helpers/serialize.c, agent/helpers/stash_cache.c, 
+      agent/helpers/stash_to_next.c, agent/helpers/table.c, 
+      agent/helpers/table_array.c, agent/helpers/table_container.c, 
+      agent/helpers/table_data.c, agent/helpers/table_dataset.c, 
+      agent/helpers/table_generic.c, agent/helpers/table_iterator.c, 
+      agent/helpers/table_row.c, agent/helpers/table_tdata.c, 
+      agent/helpers/watcher.c, agent/kernel.c, agent/kernel.h, 
+      agent/m2m.h, agent/mib_modules.c, agent/mibgroup/Makefile.depend, 
+      agent/mibgroup/Makefile.in, agent/mibgroup/README, 
+      agent/mibgroup/README.smux, agent/mibgroup/Rmon.h, 
+      agent/mibgroup/Rmon/README, agent/mibgroup/Rmon/agutil.c, 
+      agent/mibgroup/Rmon/agutil.h, agent/mibgroup/Rmon/agutil_api.h, 
+      agent/mibgroup/Rmon/alarm.c, agent/mibgroup/Rmon/alarm.h, 
+      agent/mibgroup/Rmon/alarmTable.c,
+      agent/mibgroup/Rmon/alarmTable.h,  agent/mibgroup/Rmon/event.c,
+      agent/mibgroup/Rmon/event.h,  agent/mibgroup/Rmon/history.c,
+      agent/mibgroup/Rmon/history.h,  agent/mibgroup/Rmon/row_api.h,
+      agent/mibgroup/Rmon/rows.c,  agent/mibgroup/Rmon/rows.h,
+      agent/mibgroup/Rmon/statistics.c, 
+      agent/mibgroup/Rmon/statistics.h, 
+      agent/mibgroup/Rmon/test_alarm.sh, 
+      agent/mibgroup/Rmon/test_hist.sh, agent/mibgroup/agent/extend.c, 
+      agent/mibgroup/agent/extend.h, agent/mibgroup/agent/nsCache.c, 
+      agent/mibgroup/agent/nsCache.h, agent/mibgroup/agent/nsDebug.c, 
+      agent/mibgroup/agent/nsDebug.h, agent/mibgroup/agent/nsLogging.c, 
+      agent/mibgroup/agent/nsLogging.h, 
+      agent/mibgroup/agent/nsModuleTable.c, 
+      agent/mibgroup/agent/nsModuleTable.h, 
+      agent/mibgroup/agent/nsTransactionTable.c, 
+      agent/mibgroup/agent/nsTransactionTable.h, 
+      agent/mibgroup/agent/nsVacmAccessTable.c, 
+      agent/mibgroup/agent/nsVacmAccessTable.h, 
+      agent/mibgroup/agent_mibs.h, agent/mibgroup/agentx.h, 
+      agent/mibgroup/agentx/agentx_config.c, 
+      agent/mibgroup/agentx/agentx_config.h, 
+      agent/mibgroup/agentx/client.c, agent/mibgroup/agentx/client.h, 
+      agent/mibgroup/agentx/master.c, agent/mibgroup/agentx/master.h, 
+      agent/mibgroup/agentx/master_admin.c, 
+      agent/mibgroup/agentx/master_admin.h, 
+      agent/mibgroup/agentx/protocol.c,
+      agent/mibgroup/agentx/protocol.h, 
+      agent/mibgroup/agentx/subagent.c,
+      agent/mibgroup/agentx/subagent.h, 
+      agent/mibgroup/default_modules.h, agent/mibgroup/disman.h, 
+      agent/mibgroup/disman/event-mib.h, agent/mibgroup/disman/event.h, 
+      agent/mibgroup/disman/event/mteEvent.c, 
+      agent/mibgroup/disman/event/mteEvent.h, 
+      agent/mibgroup/disman/event/mteEventConf.c, 
+      agent/mibgroup/disman/event/mteEventConf.h, 
+      agent/mibgroup/disman/event/mteEventNotificationTable.c, 
+      agent/mibgroup/disman/event/mteEventNotificationTable.h, 
+      agent/mibgroup/disman/event/mteEventSetTable.c, 
+      agent/mibgroup/disman/event/mteEventSetTable.h, 
+      agent/mibgroup/disman/event/mteEventTable.c, 
+      agent/mibgroup/disman/event/mteEventTable.h, 
+      agent/mibgroup/disman/event/mteObjects.c, 
+      agent/mibgroup/disman/event/mteObjects.h, 
+      agent/mibgroup/disman/event/mteObjectsConf.c, 
+      agent/mibgroup/disman/event/mteObjectsConf.h, 
+      agent/mibgroup/disman/event/mteObjectsTable.c, 
+      agent/mibgroup/disman/event/mteObjectsTable.h, 
+      agent/mibgroup/disman/event/mteScalars.c, 
+      agent/mibgroup/disman/event/mteScalars.h, 
+      agent/mibgroup/disman/event/mteTrigger.c, 
+      agent/mibgroup/disman/event/mteTrigger.h, 
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c, 
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.h, 
+      agent/mibgroup/disman/event/mteTriggerConf.c, 
+      agent/mibgroup/disman/event/mteTriggerConf.h, 
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c, 
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.h, 
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c, 
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.h, 
+      agent/mibgroup/disman/event/mteTriggerTable.c, 
+      agent/mibgroup/disman/event/mteTriggerTable.h, 
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c, 
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.h, 
+      agent/mibgroup/disman/expr/expErrorTable.c, 
+      agent/mibgroup/disman/expr/expErrorTable.h, 
+      agent/mibgroup/disman/expr/expExpression.c, 
+      agent/mibgroup/disman/expr/expExpression.h, 
+      agent/mibgroup/disman/expr/expExpressionConf.c, 
+      agent/mibgroup/disman/expr/expExpressionConf.h, 
+      agent/mibgroup/disman/expr/expExpressionTable.c, 
+      agent/mibgroup/disman/expr/expExpressionTable.h, 
+      agent/mibgroup/disman/expr/expObject.c, 
+      agent/mibgroup/disman/expr/expObject.h, 
+      agent/mibgroup/disman/expr/expObjectConf.c, 
+      agent/mibgroup/disman/expr/expObjectConf.h, 
+      agent/mibgroup/disman/expr/expObjectTable.c, 
+      agent/mibgroup/disman/expr/expObjectTable.h, 
+      agent/mibgroup/disman/expr/expScalars.c, 
+      agent/mibgroup/disman/expr/expScalars.h, 
+      agent/mibgroup/disman/expr/expValue.c, 
+      agent/mibgroup/disman/expr/expValue.h, 
+      agent/mibgroup/disman/expr/expValueTable.c, 
+      agent/mibgroup/disman/expr/expValueTable.h, 
+      agent/mibgroup/disman/expr/exp_enum.h, 
+      agent/mibgroup/disman/expression-mib.h, 
+      agent/mibgroup/disman/expression.h, 
+      agent/mibgroup/disman/expression/expErrorTable.c, 
+      agent/mibgroup/disman/expression/expErrorTable.h, 
+      agent/mibgroup/disman/expression/expExpressionTable.c, 
+      agent/mibgroup/disman/expression/expExpressionTable.h, 
+      agent/mibgroup/disman/expression/expObjectTable.c, 
+      agent/mibgroup/disman/expression/expObjectTable.h, 
+      agent/mibgroup/disman/expression/expValueTable.c, 
+      agent/mibgroup/disman/expression/expValueTable.h, 
+      agent/mibgroup/disman/mteEventNotificationTable.c, 
+      agent/mibgroup/disman/mteEventNotificationTable.h, 
+      agent/mibgroup/disman/mteEventTable.c, 
+      agent/mibgroup/disman/mteEventTable.h, 
+      agent/mibgroup/disman/mteObjectsTable.c, 
+      agent/mibgroup/disman/mteObjectsTable.h, 
+      agent/mibgroup/disman/mteTriggerBooleanTable.c, 
+      agent/mibgroup/disman/mteTriggerBooleanTable.h, 
+      agent/mibgroup/disman/mteTriggerDeltaTable.c, 
+      agent/mibgroup/disman/mteTriggerDeltaTable.h, 
+      agent/mibgroup/disman/mteTriggerExistenceTable.c, 
+      agent/mibgroup/disman/mteTriggerExistenceTable.h, 
+      agent/mibgroup/disman/mteTriggerTable.c, 
+      agent/mibgroup/disman/mteTriggerTable.h, 
+      agent/mibgroup/disman/mteTriggerThresholdTable.c, 
+      agent/mibgroup/disman/mteTriggerThresholdTable.h, 
+      agent/mibgroup/disman/nslookup-mib.h, 
+      agent/mibgroup/disman/nslookup/lookupCtlTable.c, 
+      agent/mibgroup/disman/nslookup/lookupCtlTable.h, 
+      agent/mibgroup/disman/nslookup/lookupResultsTable.c, 
+      agent/mibgroup/disman/nslookup/lookupResultsTable.h, 
+      agent/mibgroup/disman/old-event-mib.h, 
+      agent/mibgroup/disman/ping-mib.h, 
+      agent/mibgroup/disman/ping/pingCtlTable.c, 
+      agent/mibgroup/disman/ping/pingCtlTable.h, 
+      agent/mibgroup/disman/ping/pingProbeHistoryTable.c, 
+      agent/mibgroup/disman/ping/pingProbeHistoryTable.h, 
+      agent/mibgroup/disman/ping/pingResultsTable.c, 
+      agent/mibgroup/disman/ping/pingResultsTable.h, 
+      agent/mibgroup/disman/schedule.h, 
+      agent/mibgroup/disman/schedule/schedConf.c, 
+      agent/mibgroup/disman/schedule/schedConf.h, 
+      agent/mibgroup/disman/schedule/schedCore.c, 
+      agent/mibgroup/disman/schedule/schedCore.h, 
+      agent/mibgroup/disman/schedule/schedTable.c, 
+      agent/mibgroup/disman/schedule/schedTable.h, 
+      agent/mibgroup/disman/traceroute-mib.h, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteHopsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteHopsTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.h, 
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c, 
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.h, 
+      agent/mibgroup/etherlike-mib.h, 
+      agent/mibgroup/etherlike-mib/data_access/dot3stats.h, 
+      agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable.h, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable.c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable.h, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_acc
+       ess.c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_acc
+       ess.h, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_get
+       .c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_get
+       .h, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_set
+       .c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_set
+       .h, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_enums.h,
+      
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interfac
+       e.c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interfac
+       e.h, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_oids.h,
+       agent/mibgroup/etherlike-mib/dot3StatsTable/ioctl_imp_common.h, 
+      agent/mibgroup/examples.h, agent/mibgroup/examples/Makefile.dlmod,
+       agent/mibgroup/examples/data_set.c, 
+      agent/mibgroup/examples/data_set.h, 
+      agent/mibgroup/examples/delayed_instance.c, 
+      agent/mibgroup/examples/delayed_instance.h, 
+      agent/mibgroup/examples/example.c, 
+      agent/mibgroup/examples/example.h, 
+      agent/mibgroup/examples/netSnmpHostsTable.c, 
+      agent/mibgroup/examples/netSnmpHostsTable.h, 
+      agent/mibgroup/examples/netSnmpHostsTable_access.c, 
+      agent/mibgroup/examples/netSnmpHostsTable_access.h, 
+      agent/mibgroup/examples/netSnmpHostsTable_checkfns.c, 
+      agent/mibgroup/examples/netSnmpHostsTable_checkfns.h, 
+      agent/mibgroup/examples/netSnmpHostsTable_checkfns_local.c, 
+      agent/mibgroup/examples/netSnmpHostsTable_checkfns_local.h, 
+      agent/mibgroup/examples/netSnmpHostsTable_columns.h, 
+      agent/mibgroup/examples/netSnmpHostsTable_enums.h, 
+      agent/mibgroup/examples/notification.c, 
+      agent/mibgroup/examples/notification.h, 
+      agent/mibgroup/examples/scalar_int.c, 
+      agent/mibgroup/examples/scalar_int.h, 
+      agent/mibgroup/examples/ucdDemoPublic.c, 
+      agent/mibgroup/examples/ucdDemoPublic.cmds, 
+      agent/mibgroup/examples/ucdDemoPublic.conf, 
+      agent/mibgroup/examples/ucdDemoPublic.h, 
+      agent/mibgroup/examples/watched.c, 
+      agent/mibgroup/examples/watched.h, agent/mibgroup/hardware/cpu.h, 
+      agent/mibgroup/hardware/cpu/cpu.c, 
+      agent/mibgroup/hardware/cpu/cpu.h, 
+      agent/mibgroup/hardware/cpu/cpu_kerndata.c, 
+      agent/mibgroup/hardware/cpu/cpu_kerndata.h, 
+      agent/mibgroup/hardware/cpu/cpu_kinfo.c, 
+      agent/mibgroup/hardware/cpu/cpu_kinfo.h, 
+      agent/mibgroup/hardware/cpu/cpu_kstat.c, 
+      agent/mibgroup/hardware/cpu/cpu_kstat.h, 
+      agent/mibgroup/hardware/cpu/cpu_linux.c, 
+      agent/mibgroup/hardware/cpu/cpu_linux.h, 
+      agent/mibgroup/hardware/cpu/cpu_mach.c, 
+      agent/mibgroup/hardware/cpu/cpu_mach.h, 
+      agent/mibgroup/hardware/cpu/cpu_nlist.c, 
+      agent/mibgroup/hardware/cpu/cpu_nlist.h, 
+      agent/mibgroup/hardware/cpu/cpu_null.c, 
+      agent/mibgroup/hardware/cpu/cpu_null.h, 
+      agent/mibgroup/hardware/cpu/cpu_pcp.c, 
+      agent/mibgroup/hardware/cpu/cpu_pcp.h, 
+      agent/mibgroup/hardware/cpu/cpu_perfstat.c, 
+      agent/mibgroup/hardware/cpu/cpu_perfstat.h, 
+      agent/mibgroup/hardware/cpu/cpu_pstat.c, 
+      agent/mibgroup/hardware/cpu/cpu_pstat.h, 
+      agent/mibgroup/hardware/cpu/cpu_sysctl.c, 
+      agent/mibgroup/hardware/cpu/cpu_sysctl.h, 
+      agent/mibgroup/hardware/cpu/cpu_sysinfo.c, 
+      agent/mibgroup/hardware/cpu/cpu_sysinfo.h, 
+      agent/mibgroup/hardware/fsys.h, 
+      agent/mibgroup/hardware/fsys/fsys_getfsstats.c, 
+      agent/mibgroup/hardware/fsys/fsys_mntctl.c, 
+      agent/mibgroup/hardware/fsys/fsys_mntent.c, 
+      agent/mibgroup/hardware/fsys/hw_fsys.c, 
+      agent/mibgroup/hardware/fsys/hw_fsys.h, 
+      agent/mibgroup/hardware/fsys/mnttypes.h, 
+      agent/mibgroup/hardware/fsys/mounts.h, 
+      agent/mibgroup/hardware/memory.h, 
+      agent/mibgroup/hardware/memory/hw_mem.c, 
+      agent/mibgroup/hardware/memory/hw_mem.h, 
+      agent/mibgroup/hardware/memory/memory_aix.c, 
+      agent/mibgroup/hardware/memory/memory_darwin.c, 
+      agent/mibgroup/hardware/memory/memory_dynix.c, 
+      agent/mibgroup/hardware/memory/memory_freebsd.c, 
+      agent/mibgroup/hardware/memory/memory_hpux.c, 
+      agent/mibgroup/hardware/memory/memory_irix.c, 
+      agent/mibgroup/hardware/memory/memory_linux.c, 
+      agent/mibgroup/hardware/memory/memory_linux.h, 
+      agent/mibgroup/hardware/memory/memory_netbsd.c, 
+      agent/mibgroup/hardware/memory/memory_null.c, 
+      agent/mibgroup/hardware/memory/memory_solaris.c, 
+      agent/mibgroup/hardware/memory/memory_win.c, 
+      agent/mibgroup/hardware/sensors.h, 
+      agent/mibgroup/hardware/sensors/dummy_sensors.c, 
+      agent/mibgroup/hardware/sensors/dummy_sensors.h, 
+      agent/mibgroup/hardware/sensors/hw_sensors.c, 
+      agent/mibgroup/hardware/sensors/hw_sensors.h, 
+      agent/mibgroup/hardware/sensors/kstat_sensors.c, 
+      agent/mibgroup/hardware/sensors/kstat_sensors.h, 
+      agent/mibgroup/hardware/sensors/lmsensors_v2.c, 
+      agent/mibgroup/hardware/sensors/lmsensors_v2.h, 
+      agent/mibgroup/hardware/sensors/lmsensors_v3.c, 
+      agent/mibgroup/hardware/sensors/lmsensors_v3.h, 
+      agent/mibgroup/hardware/sensors/picld_sensors.c, 
+      agent/mibgroup/hardware/sensors/picld_sensors.h, 
+      agent/mibgroup/header_complex.c, agent/mibgroup/header_complex.h, 
+      agent/mibgroup/host.h, agent/mibgroup/host/data_access/swinst.c, 
+      agent/mibgroup/host/data_access/swinst.h, 
+      agent/mibgroup/host/data_access/swinst_darwin.c, 
+      agent/mibgroup/host/data_access/swinst_null.c, 
+      agent/mibgroup/host/data_access/swinst_pkginfo.c, 
+      agent/mibgroup/host/data_access/swinst_rpm.c, 
+      agent/mibgroup/host/data_access/swrun.c, 
+      agent/mibgroup/host/data_access/swrun.h, 
+      agent/mibgroup/host/data_access/swrun_cygwin.c, 
+      agent/mibgroup/host/data_access/swrun_darwin.c, 
+      agent/mibgroup/host/data_access/swrun_kinfo.c, 
+      agent/mibgroup/host/data_access/swrun_kvm_proc.c, 
+      agent/mibgroup/host/data_access/swrun_nlist.c, 
+      agent/mibgroup/host/data_access/swrun_null.c, 
+      agent/mibgroup/host/data_access/swrun_procfs_psinfo.c, 
+      agent/mibgroup/host/data_access/swrun_procfs_status.c, 
+      agent/mibgroup/host/data_access/swrun_procinfo.c, 
+      agent/mibgroup/host/data_access/swrun_prpsinfo.c, 
+      agent/mibgroup/host/data_access/swrun_pstat.c, 
+      agent/mibgroup/host/hrSWInstalledTable.c, 
+      agent/mibgroup/host/hrSWInstalledTable.h, 
+      agent/mibgroup/host/hrSWRunPerfTable.c, 
+      agent/mibgroup/host/hrSWRunPerfTable.h, 
+      agent/mibgroup/host/hrSWRunTable.c, 
+      agent/mibgroup/host/hrSWRunTable.h, 
+      agent/mibgroup/host/hr_device.c, agent/mibgroup/host/hr_device.h, 
+      agent/mibgroup/host/hr_disk.c, agent/mibgroup/host/hr_disk.h, 
+      agent/mibgroup/host/hr_filesys.c,
+      agent/mibgroup/host/hr_filesys.h, 
+      agent/mibgroup/host/hr_network.c,
+      agent/mibgroup/host/hr_network.h,  agent/mibgroup/host/hr_other.c,
+      agent/mibgroup/host/hr_other.h, 
+      agent/mibgroup/host/hr_partition.c, 
+      agent/mibgroup/host/hr_partition.h,
+      agent/mibgroup/host/hr_print.c,  agent/mibgroup/host/hr_print.h,
+      agent/mibgroup/host/hr_proc.c,  agent/mibgroup/host/hr_proc.h,
+      agent/mibgroup/host/hr_storage.c, 
+      agent/mibgroup/host/hr_storage.h, agent/mibgroup/host/hr_swinst.c,
+       agent/mibgroup/host/hr_swinst.h, agent/mibgroup/host/hr_swrun.c, 
+      agent/mibgroup/host/hr_swrun.h, agent/mibgroup/host/hr_system.c, 
+      agent/mibgroup/host/hr_system.h,
+      agent/mibgroup/host/hrh_filesys.c, 
+      agent/mibgroup/host/hrh_filesys.h, 
+      agent/mibgroup/host/hrh_storage.c, 
+      agent/mibgroup/host/hrh_storage.h, agent/mibgroup/host_res.h, 
+      agent/mibgroup/if-mib.h, 
+      agent/mibgroup/if-mib/data_access/interface.c, 
+      agent/mibgroup/if-mib/data_access/interface.h, 
+      agent/mibgroup/if-mib/data_access/interface_ioctl.c, 
+      agent/mibgroup/if-mib/data_access/interface_ioctl.h, 
+      agent/mibgroup/if-mib/data_access/interface_linux.c, 
+      agent/mibgroup/if-mib/data_access/interface_openbsd.c, 
+      agent/mibgroup/if-mib/data_access/interface_solaris2.c, 
+      agent/mibgroup/if-mib/data_access/interface_sysctl.c, 
+      agent/mibgroup/if-mib/data_access/interface_sysctl.h, 
+      agent/mibgroup/if-mib/ifTable.h, 
+      agent/mibgroup/if-mib/ifTable/ifTable.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable.h, 
+      agent/mibgroup/if-mib/ifTable/ifTable_constants.h, 
+      agent/mibgroup/if-mib/ifTable/ifTable_data_access.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable_data_access.h, 
+      agent/mibgroup/if-mib/ifTable/ifTable_defs.h, 
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c, 
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.h, 
+      agent/mibgroup/if-mib/ifXTable.h, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable.h, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_constants.h, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_data_access.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_data_access.h, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c, 
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.h, 
+      agent/mibgroup/ip-forward-mib.h, 
+      agent/mibgroup/ip-forward-mib/data_access/route.h, 
+      agent/mibgroup/ip-forward-mib/data_access/route_common.c, 
+      agent/mibgroup/ip-forward-mib/data_access/route_ioctl.c, 
+      agent/mibgroup/ip-forward-mib/data_access/route_ioctl.h, 
+      agent/mibgroup/ip-forward-mib/data_access/route_linux.c, 
+      agent/mibgroup/ip-forward-mib/data_access/route_linux.h, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable.h, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       .c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       .h, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _constants.h, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _data_access.c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _data_access.h, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _interface.c, 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable
+       _interface.h, agent/mibgroup/ip-forward-mib/ipCidrRouteTable.h, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c,
+      
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.h,
+      
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_con
+       stants.h, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_dat
+       a_access.c, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_dat
+       a_access.h, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_int
+       erface.c, 
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_int
+       erface.h, agent/mibgroup/ip-mib.h, 
+      agent/mibgroup/ip-mib/data_access/arp.h, 
+      agent/mibgroup/ip-mib/data_access/arp_common.c, 
+      agent/mibgroup/ip-mib/data_access/arp_linux.c, 
+      agent/mibgroup/ip-mib/data_access/defaultrouter.h, 
+      agent/mibgroup/ip-mib/data_access/defaultrouter_common.c, 
+      agent/mibgroup/ip-mib/data_access/defaultrouter_linux.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress.h, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.h, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.h, 
+      agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c, 
+      agent/mibgroup/ip-mib/data_access/ipv6scopezone.h, 
+      agent/mibgroup/ip-mib/data_access/ipv6scopezone_common.c, 
+      agent/mibgroup/ip-mib/data_access/ipv6scopezone_linux.c, 
+      agent/mibgroup/ip-mib/data_access/scalars_common.h, 
+      agent/mibgroup/ip-mib/data_access/scalars_linux.c, 
+      agent/mibgroup/ip-mib/data_access/systemstats.h, 
+      agent/mibgroup/ip-mib/data_access/systemstats_common.c, 
+      agent/mibgroup/ip-mib/data_access/systemstats_linux.c, 
+      agent/mibgroup/ip-mib/data_access/systemstats_solaris2.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable.h, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_const
+       ants.h, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_
+       access.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_
+       access.h, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_inter
+       face.c, 
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_inter
+       face.h, agent/mibgroup/ip-mib/ipAddressPrefixTable.h, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c,
+      
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h,
+      
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_con
+       stants.h, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_dat
+       a_access.c, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_dat
+       a_access.h, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_int
+       erface.c, 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_int
+       erface.h, agent/mibgroup/ip-mib/ipAddressTable.h, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_constants.h, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c,
+      
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.h,
+       agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c, 
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.h, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable.h, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.c,
+      
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h,
+      
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_dat
+       a_access.c, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_dat
+       a_access.h, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_dat
+       a_get.c, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_dat
+       a_get.h, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_enu
+       ms.h, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_int
+       erface.c, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_int
+       erface.h, 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_oid
+       s.h, agent/mibgroup/ip-mib/ipIfStatsTable.h, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.c, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.h, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.c,
+      
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.h,
+       agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.c, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.h, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_enums.h, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.h, 
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_oids.h, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable.h, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_constan
+       ts.h, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_ac
+       cess.c, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_ac
+       cess.h, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interfa
+       ce.c, 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interfa
+       ce.h, agent/mibgroup/ip-mib/ip_scalars.c, 
+      agent/mibgroup/ip-mib/ip_scalars.h, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable.h, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.c, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.h, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_constan
+       ts.h, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_data_ac
+       cess.c, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_data_ac
+       cess.h, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interfa
+       ce.c, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interfa
+       ce.h, 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagen
+       t.c, agent/mibgroup/ip-mib/ipv6InterfaceTable.h, 
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.c, 
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.h, 
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_constan
+       ts.h, 
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_data_ac
+       cess.c, 
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_data_ac
+       cess.h, 
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interfa
+       ce.c, 
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interfa
+       ce.h, agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable.h, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le.c, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le.h, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_data_access.c, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_data_access.h, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_enums.h, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_interface.c, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_interface.h, 
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTab
+       le_oids.h, agent/mibgroup/ipfwchains/README, 
+      agent/mibgroup/kernel_sunos5.c, agent/mibgroup/kernel_sunos5.h, 
+      agent/mibgroup/mibII.h, agent/mibgroup/mibII/at.c, 
+      agent/mibgroup/mibII/at.h, agent/mibgroup/mibII/icmp.c, 
+      agent/mibgroup/mibII/icmp.h, agent/mibgroup/mibII/ifTable.h, 
+      agent/mibgroup/mibII/interfaces.c, 
+      agent/mibgroup/mibII/interfaces.h, agent/mibgroup/mibII/ip.c, 
+      agent/mibgroup/mibII/ip.h, agent/mibgroup/mibII/ipAddr.c, 
+      agent/mibgroup/mibII/ipAddr.h, 
+      agent/mibgroup/mibII/ipCidrRouteTable.c, 
+      agent/mibgroup/mibII/ipCidrRouteTable.h, 
+      agent/mibgroup/mibII/ipCidrRouteTable_access.c, 
+      agent/mibgroup/mibII/ipCidrRouteTable_access.h, 
+      agent/mibgroup/mibII/ipCidrRouteTable_checkfns.c, 
+      agent/mibgroup/mibII/ipCidrRouteTable_checkfns.h, 
+      agent/mibgroup/mibII/ipCidrRouteTable_columns.h, 
+      agent/mibgroup/mibII/ipCidrRouteTable_enums.h, 
+      agent/mibgroup/mibII/ipv6.c, agent/mibgroup/mibII/ipv6.h, 
+      agent/mibgroup/mibII/kernel_linux.c, 
+      agent/mibgroup/mibII/kernel_linux.h, 
+      agent/mibgroup/mibII/kernel_netbsd.c, 
+      agent/mibgroup/mibII/kernel_netbsd.h, 
+      agent/mibgroup/mibII/mibII_common.h, 
+      agent/mibgroup/mibII/mta_sendmail.c, 
+      agent/mibgroup/mibII/mta_sendmail.h, 
+      agent/mibgroup/mibII/route_headers.h, 
+      agent/mibgroup/mibII/route_write.c, 
+      agent/mibgroup/mibII/route_write.h, 
+      agent/mibgroup/mibII/setSerialNo.c, 
+      agent/mibgroup/mibII/setSerialNo.h, 
+      agent/mibgroup/mibII/snmp_mib.c, agent/mibgroup/mibII/snmp_mib.h, 
+      agent/mibgroup/mibII/snmp_mib_5_5.c, 
+      agent/mibgroup/mibII/snmp_mib_5_5.h, 
+      agent/mibgroup/mibII/sysORTable.c, 
+      agent/mibgroup/mibII/sysORTable.h, 
+      agent/mibgroup/mibII/system_mib.c, 
+      agent/mibgroup/mibII/system_mib.h, agent/mibgroup/mibII/tcp.c, 
+      agent/mibgroup/mibII/tcp.h, agent/mibgroup/mibII/tcpTable.c, 
+      agent/mibgroup/mibII/tcpTable.h, agent/mibgroup/mibII/udp.c, 
+      agent/mibgroup/mibII/udp.h, agent/mibgroup/mibII/udpTable.c, 
+      agent/mibgroup/mibII/udpTable.h, agent/mibgroup/mibII/updates.c, 
+      agent/mibgroup/mibII/updates.h, agent/mibgroup/mibII/vacm_conf.c, 
+      agent/mibgroup/mibII/vacm_conf.h, 
+      agent/mibgroup/mibII/vacm_context.c, 
+      agent/mibgroup/mibII/vacm_context.h, 
+      agent/mibgroup/mibII/vacm_vars.c,
+      agent/mibgroup/mibII/vacm_vars.h, 
+      agent/mibgroup/mibII/var_route.c,
+      agent/mibgroup/mibII/var_route.h,  agent/mibgroup/mibdefs.h,
+      agent/mibgroup/mibincl.h,  agent/mibgroup/misc/ipfwacc.c,
+      agent/mibgroup/misc/ipfwacc.h, 
+      agent/mibgroup/notification-log-mib.h, 
+      agent/mibgroup/notification-log-mib/notification_log.c, 
+      agent/mibgroup/notification-log-mib/notification_log.h, 
+      agent/mibgroup/notification.h, 
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c, 
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.h, 
+      agent/mibgroup/notification/snmpNotifyTable.c, 
+      agent/mibgroup/notification/snmpNotifyTable.h, 
+      agent/mibgroup/rmon-mib.h, 
+      agent/mibgroup/rmon-mib/data_access/etherstats.h, 
+      agent/mibgroup/rmon-mib/data_access/etherstats_linux.c, 
+      agent/mibgroup/rmon-mib/etherStatsTable.h, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable.c, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable.h, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access
+       .c, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access
+       .h, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_get.c,
+      
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_get.h,
+      
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_set.c,
+      
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_set.h,
+       agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_enums.h, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c
+       , 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.h
+       , agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_oids.h,
+       agent/mibgroup/rmon-mib/etherStatsTable/ioctl_imp_common.h, 
+      agent/mibgroup/sctp-mib.h, 
+      agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c, 
+      agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.h, 
+      agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c, 
+      agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.h, 
+      agent/mibgroup/sctp-mib/sctpAssocTable.c, 
+      agent/mibgroup/sctp-mib/sctpAssocTable.h, 
+      agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c, 
+      agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.h, 
+      agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c, 
+      agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.h, 
+      agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c, 
+      agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.h, 
+      agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c, 
+      agent/mibgroup/sctp-mib/sctpLookupRemPortTable.h, 
+      agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c, 
+      agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.h, 
+      agent/mibgroup/sctp-mib/sctpScalars.c, 
+      agent/mibgroup/sctp-mib/sctpScalars.h, 
+      agent/mibgroup/sctp-mib/sctpScalars_common.c, 
+      agent/mibgroup/sctp-mib/sctpScalars_common.h, 
+      agent/mibgroup/sctp-mib/sctpScalars_freebsd.c, 
+      agent/mibgroup/sctp-mib/sctpScalars_linux.c, 
+      agent/mibgroup/sctp-mib/sctpTables.h, 
+      agent/mibgroup/sctp-mib/sctpTables_common.c, 
+      agent/mibgroup/sctp-mib/sctpTables_common.h, 
+      agent/mibgroup/sctp-mib/sctpTables_freebsd.c, 
+      agent/mibgroup/sctp-mib/sctpTables_linux.c, agent/mibgroup/smux.h,
+       agent/mibgroup/smux/smux.c, agent/mibgroup/smux/smux.h, 
+      agent/mibgroup/smux/snmp_bgp.c, agent/mibgroup/smux/snmp_bgp.h, 
+      agent/mibgroup/smux/snmp_ospf.c, agent/mibgroup/smux/snmp_ospf.h, 
+      agent/mibgroup/smux/snmp_rip2.c, agent/mibgroup/smux/snmp_rip2.h, 
+      agent/mibgroup/smux_gated.h, 
+      agent/mibgroup/snmp-notification-mib.h, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable.h, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable.c, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable.h, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_constants.h, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_data_access.c, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_data_access.h, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_interface.c, 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNoti
+       fyFilterTable_interface.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHParameters.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHParameters/usmDHParamet
+       ers.c, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHParameters/usmDHParamet
+       ers.h,
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable.c, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_data_access.c, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_data_access.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_data_get.c, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_data_get.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_data_set.c, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_data_set.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_doxygen.conf, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_enums.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_interface.c, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_interface.h, 
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserK
+       eyTable_oids.h, agent/mibgroup/snmpv3/snmpEngine.c, 
+      agent/mibgroup/snmpv3/snmpEngine.h, 
+      agent/mibgroup/snmpv3/snmpMPDStats.c, 
+      agent/mibgroup/snmpv3/snmpMPDStats.h, 
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.c, 
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.h, 
+      agent/mibgroup/snmpv3/usmConf.c, agent/mibgroup/snmpv3/usmConf.h, 
+      agent/mibgroup/snmpv3/usmStats.c,
+      agent/mibgroup/snmpv3/usmStats.h, 
+      agent/mibgroup/snmpv3/usmStats_5_5.c, 
+      agent/mibgroup/snmpv3/usmStats_5_5.h, 
+      agent/mibgroup/snmpv3/usmUser.c, agent/mibgroup/snmpv3/usmUser.h, 
+      agent/mibgroup/snmpv3mibs.h, agent/mibgroup/struct.h, 
+      agent/mibgroup/target.h, 
+      agent/mibgroup/target/snmpTargetAddrEntry.c, 
+      agent/mibgroup/target/snmpTargetAddrEntry.h, 
+      agent/mibgroup/target/snmpTargetParamsEntry.c, 
+      agent/mibgroup/target/snmpTargetParamsEntry.h, 
+      agent/mibgroup/target/target.c, agent/mibgroup/target/target.h, 
+      agent/mibgroup/target/target_counters.c, 
+      agent/mibgroup/target/target_counters.h, 
+      agent/mibgroup/target/target_counters_5_5.c, 
+      agent/mibgroup/target/target_counters_5_5.h, 
+      agent/mibgroup/tcp-mib.h, 
+      agent/mibgroup/tcp-mib/data_access/Makefile, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn.h, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_common.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_private.h, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_solaris2.c, 
+      agent/mibgroup/tcp-mib/tcpConnTable.h, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable.h, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.h, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_consta
+       nts.h, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_a
+       ccess.c, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_a
+       ccess.h, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interf
+       ace.c, 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interf
+       ace.h, agent/mibgroup/tcp-mib/tcpListenerTable.h, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.h, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_constants.
+       h, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_acces
+       s.c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_acces
+       s.h, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.
+       c, 
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.
+       h, agent/mibgroup/testhandler.c, agent/mibgroup/testhandler.h, 
+      agent/mibgroup/tunnel.h, agent/mibgroup/tunnel/tunnel.c, 
+      agent/mibgroup/tunnel/tunnel.h, agent/mibgroup/ucd-snmp/disk.c, 
+      agent/mibgroup/ucd-snmp/disk.h, agent/mibgroup/ucd-snmp/diskio.c, 
+      agent/mibgroup/ucd-snmp/diskio.h, agent/mibgroup/ucd-snmp/dlmod.c,
+       agent/mibgroup/ucd-snmp/dlmod.h, 
+      agent/mibgroup/ucd-snmp/errormib.c, 
+      agent/mibgroup/ucd-snmp/errormib.h, 
+      agent/mibgroup/ucd-snmp/extensible.c, 
+      agent/mibgroup/ucd-snmp/extensible.h, 
+      agent/mibgroup/ucd-snmp/file.c, agent/mibgroup/ucd-snmp/file.h, 
+      agent/mibgroup/ucd-snmp/hpux.c, agent/mibgroup/ucd-snmp/hpux.h, 
+      agent/mibgroup/ucd-snmp/lmSensors.c, 
+      agent/mibgroup/ucd-snmp/lmSensors.h, 
+      agent/mibgroup/ucd-snmp/lmsensorsMib.c, 
+      agent/mibgroup/ucd-snmp/lmsensorsMib.h, 
+      agent/mibgroup/ucd-snmp/loadave.c, 
+      agent/mibgroup/ucd-snmp/loadave.h, 
+      agent/mibgroup/ucd-snmp/logmatch.c, 
+      agent/mibgroup/ucd-snmp/logmatch.h, 
+      agent/mibgroup/ucd-snmp/memory.c,
+      agent/mibgroup/ucd-snmp/memory.h, 
+      agent/mibgroup/ucd-snmp/memory_aix4.c, 
+      agent/mibgroup/ucd-snmp/memory_aix4.h, 
+      agent/mibgroup/ucd-snmp/memory_darwin7.c, 
+      agent/mibgroup/ucd-snmp/memory_darwin7.h, 
+      agent/mibgroup/ucd-snmp/memory_dynix.c, 
+      agent/mibgroup/ucd-snmp/memory_dynix.h, 
+      agent/mibgroup/ucd-snmp/memory_freebsd2.c, 
+      agent/mibgroup/ucd-snmp/memory_freebsd2.h, 
+      agent/mibgroup/ucd-snmp/memory_hpux.c, 
+      agent/mibgroup/ucd-snmp/memory_hpux.h, 
+      agent/mibgroup/ucd-snmp/memory_netbsd1.c, 
+      agent/mibgroup/ucd-snmp/memory_netbsd1.h, 
+      agent/mibgroup/ucd-snmp/memory_solaris2.c, 
+      agent/mibgroup/ucd-snmp/memory_solaris2.h, 
+      agent/mibgroup/ucd-snmp/pass.c, agent/mibgroup/ucd-snmp/pass.h, 
+      agent/mibgroup/ucd-snmp/pass_persist.c, 
+      agent/mibgroup/ucd-snmp/pass_persist.h, 
+      agent/mibgroup/ucd-snmp/proc.c, agent/mibgroup/ucd-snmp/proc.h, 
+      agent/mibgroup/ucd-snmp/proxy.c, agent/mibgroup/ucd-snmp/proxy.h, 
+      agent/mibgroup/ucd-snmp/versioninfo.c, 
+      agent/mibgroup/ucd-snmp/versioninfo.h, 
+      agent/mibgroup/ucd-snmp/vmstat.c,
+      agent/mibgroup/ucd-snmp/vmstat.h, 
+      agent/mibgroup/ucd-snmp/vmstat_aix4.c, 
+      agent/mibgroup/ucd-snmp/vmstat_aix4.h, 
+      agent/mibgroup/ucd-snmp/vmstat_bsdi4.c, 
+      agent/mibgroup/ucd-snmp/vmstat_bsdi4.h, 
+      agent/mibgroup/ucd-snmp/vmstat_darwin7.c, 
+      agent/mibgroup/ucd-snmp/vmstat_darwin7.h, 
+      agent/mibgroup/ucd-snmp/vmstat_dynix.c, 
+      agent/mibgroup/ucd-snmp/vmstat_dynix.h, 
+      agent/mibgroup/ucd-snmp/vmstat_freebsd2.c, 
+      agent/mibgroup/ucd-snmp/vmstat_freebsd2.h, 
+      agent/mibgroup/ucd-snmp/vmstat_hpux.c, 
+      agent/mibgroup/ucd-snmp/vmstat_hpux.h, 
+      agent/mibgroup/ucd-snmp/vmstat_linux.c, 
+      agent/mibgroup/ucd-snmp/vmstat_linux.h, 
+      agent/mibgroup/ucd-snmp/vmstat_netbsd1.c, 
+      agent/mibgroup/ucd-snmp/vmstat_netbsd1.h, 
+      agent/mibgroup/ucd-snmp/vmstat_solaris2.c, 
+      agent/mibgroup/ucd-snmp/vmstat_solaris2.h, 
+      agent/mibgroup/ucd_snmp.h, agent/mibgroup/udp-mib.h, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint.h, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_private.h, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c, 
+      agent/mibgroup/udp-mib/udpEndpointTable.h, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.c, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.h, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_constants.
+       h, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_acces
+       s.c, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_acces
+       s.h, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.
+       c, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.
+       h, agent/mibgroup/util_funcs.c, agent/mibgroup/util_funcs.h, 
+      agent/mibgroup/util_funcs/MIB_STATS_CACHE_TIMEOUT.h, 
+      agent/mibgroup/util_funcs/get_pid_from_inode.c, 
+      agent/mibgroup/util_funcs/get_pid_from_inode.h, 
+      agent/mibgroup/util_funcs/header_generic.c, 
+      agent/mibgroup/util_funcs/header_generic.h, 
+      agent/mibgroup/util_funcs/header_simple_table.c, 
+      agent/mibgroup/util_funcs/header_simple_table.h, 
+      agent/mibgroup/utilities.h, agent/mibgroup/utilities/execute.c, 
+      agent/mibgroup/utilities/execute.h, 
+      agent/mibgroup/utilities/iquery.c, 
+      agent/mibgroup/utilities/iquery.h, 
+      agent/mibgroup/utilities/override.c, 
+      agent/mibgroup/utilities/override.h, 
+      agent/mibgroup/utilities/snmp_get_statistic.c, 
+      agent/mibgroup/utilities/snmp_get_statistic.h, 
+      agent/mibgroup/versiontag, agent/mibgroup/winExtDLL.c, 
+      agent/mibgroup/winExtDLL.h, agent/object_monitor.c, 
+      agent/snmp_agent.c, agent/snmp_perl.c, agent/snmp_perl.h, 
+      agent/snmp_perl.pl, agent/snmp_vars.c, agent/snmpd.c, 
+      agent/snmpd.h, apps/Makefile.depend, apps/Makefile.in, 
+      apps/encode_keychange.c, apps/snmp_perl_trapd.pl, 
+      apps/snmpbulkget.c, apps/snmpbulkwalk.c, apps/snmpdelta.c, 
+      apps/snmpdf.c, apps/snmpget.c, apps/snmpgetnext.c, 
+      apps/snmpnetstat/Makefile.depend, apps/snmpnetstat/Makefile.in, 
+      apps/snmpnetstat/ffs.c, apps/snmpnetstat/if.c, 
+      apps/snmpnetstat/inet.c, apps/snmpnetstat/inet6.c, 
+      apps/snmpnetstat/main.c, apps/snmpnetstat/main.h, 
+      apps/snmpnetstat/netstat.h, apps/snmpnetstat/route.c, 
+      apps/snmpnetstat/winstub.c, apps/snmpnetstat/winstub.h, 
+      apps/snmpset.c, apps/snmpstatus.c, apps/snmptable.c, 
+      apps/snmptest.c, apps/snmptranslate.c, apps/snmptrap.c, 
+      apps/snmptrapd.c, apps/snmptrapd_auth.c, apps/snmptrapd_auth.h, 
+      apps/snmptrapd_ds.h, apps/snmptrapd_handlers.c, 
+      apps/snmptrapd_handlers.h, apps/snmptrapd_log.c, 
+      apps/snmptrapd_log.h, apps/snmptrapd_sql.c, apps/snmpusm.c, 
+      apps/snmpvacm.c, apps/snmpwalk.c, apps/sshtosnmp.c, config.guess, 
+      config.sub, configure, configure.ac, 
+      configure.d/config_modules_agent, configure.d/config_modules_lib, 
+      configure.d/config_os_functions, configure.d/config_os_headers, 
+      configure.d/config_os_libs1, configure.d/config_os_libs2, 
+      configure.d/config_os_misc1, configure.d/config_os_misc2, 
+      configure.d/config_os_misc3, configure.d/config_os_misc4, 
+      configure.d/config_os_progs, configure.d/config_os_struct_members,
+       configure.d/config_project_ipv6_types, 
+      configure.d/config_project_manual, 
+      configure.d/config_project_paths, 
+      configure.d/config_project_perl_python, 
+      configure.d/config_project_types, 
+      configure.d/config_project_with_enable, dist/Makefile, 
+      dist/README.build-scripts, dist/RELEASE-INSTRUCTIONS, 
+      dist/autoconf-version, dist/changelogfix, dist/check-api-change, 
+      dist/cvsshow, dist/cvsup, dist/extractnews, dist/find-requires, 
+      dist/makerelease.xml, dist/net-snmp-solaris-build/DEVENV, 
+      dist/net-snmp-solaris-build/README, 
+      dist/net-snmp-solaris-build/buildpackage-solaris, 
+      dist/net-snmp-solaris-build/elfdepend.sh, dist/net-snmp.spec, 
+      dist/nsb-config, dist/nsb-functions, dist/nsb-nightly, 
+      dist/nsb-package, dist/nsb-platform, dist/patme, 
+      dist/schema-snmptrapd.sql, dist/snmpd-init.d, 
+      dist/snmptrapd-init.d, dist/svnup, doc/rfc/agentx/rfc2741.txt, 
+      doc/rfc/misc/rfc3512.txt, doc/rfc/misc/rfc3584.txt, 
+      doc/rfc/smiV2/rfc2578.txt, doc/rfc/smiV2/rfc2579.errata, 
+      doc/rfc/smiV2/rfc2579.txt, doc/rfc/smiV2/rfc2580.txt, 
+      doc/rfc/snmpV1/rfc1155.txt, doc/rfc/snmpV1/rfc1157.txt, 
+      doc/rfc/snmpV1/rfc1212.txt, doc/rfc/snmpV1/rfc1213.txt, 
+      doc/rfc/snmpV2/rfc1901.txt, doc/rfc/snmpV2/rfc1902.txt, 
+      doc/rfc/snmpV2/rfc1903.txt, doc/rfc/snmpV2/rfc1904.txt, 
+      doc/rfc/snmpV2/rfc1905.txt, doc/rfc/snmpV2/rfc1906.txt, 
+      doc/rfc/snmpV2/rfc1907.txt, doc/rfc/snmpV2/rfc1908.txt, 
+      doc/rfc/snmpV2/rfc2089.txt, doc/rfc/snmpV3/rfc3410.errata, 
+      doc/rfc/snmpV3/rfc3410.txt, doc/rfc/snmpV3/rfc3411.txt, 
+      doc/rfc/snmpV3/rfc3412.txt, doc/rfc/snmpV3/rfc3413.errata, 
+      doc/rfc/snmpV3/rfc3413.txt, doc/rfc/snmpV3/rfc3414.errata, 
+      doc/rfc/snmpV3/rfc3414.txt, doc/rfc/snmpV3/rfc3415.errata, 
+      doc/rfc/snmpV3/rfc3415.txt, doc/rfc/snmpV3/rfc3416.txt, 
+      doc/rfc/snmpV3/rfc3417.txt, doc/rfc/snmpV3/rfc3418.errata, 
+      doc/rfc/snmpV3/rfc3418.txt, dotgdbinit, doxygen.conf, 
+      include/net-snmp/agent/agent_callbacks.h, 
+      include/net-snmp/agent/agent_handler.h, 
+      include/net-snmp/agent/agent_index.h, 
+      include/net-snmp/agent/agent_read_config.h, 
+      include/net-snmp/agent/agent_registry.h, 
+      include/net-snmp/agent/agent_sysORTable.h, 
+      include/net-snmp/agent/agent_trap.h, 
+      include/net-snmp/agent/all_helpers.h, 
+      include/net-snmp/agent/auto_nlist.h, 
+      include/net-snmp/agent/baby_steps.h, 
+      include/net-snmp/agent/bulk_to_next.h, 
+      include/net-snmp/agent/cache_handler.h, 
+      include/net-snmp/agent/debug_handler.h, 
+      include/net-snmp/agent/ds_agent.h, 
+      include/net-snmp/agent/hardware/cpu.h, 
+      include/net-snmp/agent/hardware/fsys.h, 
+      include/net-snmp/agent/hardware/memory.h, 
+      include/net-snmp/agent/hardware/sensors.h, 
+      include/net-snmp/agent/instance.h, include/net-snmp/agent/mfd.h, 
+      include/net-snmp/agent/mib_modules.h, 
+      include/net-snmp/agent/mode_end_call.h, 
+      include/net-snmp/agent/multiplexer.h, 
+      include/net-snmp/agent/net-snmp-agent-includes.h, 
+      include/net-snmp/agent/null.h, 
+      include/net-snmp/agent/object_monitor.h, 
+      include/net-snmp/agent/old_api.h, 
+      include/net-snmp/agent/read_only.h, 
+      include/net-snmp/agent/row_merge.h, 
+      include/net-snmp/agent/scalar.h, 
+      include/net-snmp/agent/scalar_group.h, 
+      include/net-snmp/agent/serialize.h, 
+      include/net-snmp/agent/set_helper.h, 
+      include/net-snmp/agent/snmp_agent.h, 
+      include/net-snmp/agent/snmp_vars.h, 
+      include/net-snmp/agent/stash_cache.h, 
+      include/net-snmp/agent/stash_to_next.h, 
+      include/net-snmp/agent/sysORTable.h, 
+      include/net-snmp/agent/table.h, 
+      include/net-snmp/agent/table_array.h, 
+      include/net-snmp/agent/table_container.h, 
+      include/net-snmp/agent/table_data.h, 
+      include/net-snmp/agent/table_dataset.h, 
+      include/net-snmp/agent/table_iterator.h, 
+      include/net-snmp/agent/table_tdata.h, 
+      include/net-snmp/agent/var_struct.h, 
+      include/net-snmp/agent/watcher.h, include/net-snmp/config_api.h, 
+      include/net-snmp/data_access/arp.h, 
+      include/net-snmp/data_access/defaultrouter.h, 
+      include/net-snmp/data_access/interface.h, 
+      include/net-snmp/data_access/ip_scalars.h, 
+      include/net-snmp/data_access/ipaddress.h, 
+      include/net-snmp/data_access/ipstats.h, 
+      include/net-snmp/data_access/net-snmp-data-access-includes.h, 
+      include/net-snmp/data_access/route.h, 
+      include/net-snmp/data_access/scopezone.h, 
+      include/net-snmp/data_access/swinst.h, 
+      include/net-snmp/data_access/swrun.h, 
+      include/net-snmp/data_access/systemstats.h, 
+      include/net-snmp/data_access/tcpConn.h, 
+      include/net-snmp/data_access/udp_endpoint.h, 
+      include/net-snmp/definitions.h, include/net-snmp/library/README, 
+      include/net-snmp/library/asn1.h, 
+      include/net-snmp/library/callback.h, 
+      include/net-snmp/library/check_varbind.h, 
+      include/net-snmp/library/cmu_compat.h, 
+      include/net-snmp/library/container.h, 
+      include/net-snmp/library/container_binary_array.h, 
+      include/net-snmp/library/container_iterator.h, 
+      include/net-snmp/library/container_list_ssll.h, 
+      include/net-snmp/library/container_null.h, 
+      include/net-snmp/library/data_list.h, 
+      include/net-snmp/library/default_store.h, 
+      include/net-snmp/library/dir_utils.h, 
+      include/net-snmp/library/factory.h, 
+      include/net-snmp/library/fd_event_manager.h, 
+      include/net-snmp/library/file_utils.h, 
+      include/net-snmp/library/getopt.h, 
+      include/net-snmp/library/int64.h, 
+      include/net-snmp/library/keytools.h, 
+      include/net-snmp/library/large_fd_set.h, 
+      include/net-snmp/library/lcd_time.h, 
+      include/net-snmp/library/libsnmp.h,
+      include/net-snmp/library/md5.h,  include/net-snmp/library/mib.h, 
+      include/net-snmp/library/mt_support.h, 
+      include/net-snmp/library/oid_stash.h, 
+      include/net-snmp/library/parse.h, 
+      include/net-snmp/library/read_config.h, 
+      include/net-snmp/library/scapi.h, 
+      include/net-snmp/library/snmp-tc.h, 
+      include/net-snmp/library/snmp.h, 
+      include/net-snmp/library/snmpAAL5PVCDomain.h, 
+      include/net-snmp/library/snmpAliasDomain.h, 
+      include/net-snmp/library/snmpCallbackDomain.h, 
+      include/net-snmp/library/snmpDTLSUDPDomain.h, 
+      include/net-snmp/library/snmpIPXDomain.h, 
+      include/net-snmp/library/snmpSSHDomain.h, 
+      include/net-snmp/library/snmpSTDDomain.h, 
+      include/net-snmp/library/snmpTCPDomain.h, 
+      include/net-snmp/library/snmpTCPIPv6Domain.h, 
+      include/net-snmp/library/snmpUDPDomain.h, 
+      include/net-snmp/library/snmpUDPIPv6Domain.h, 
+      include/net-snmp/library/snmpUnixDomain.h, 
+      include/net-snmp/library/snmp_alarm.h, 
+      include/net-snmp/library/snmp_api.h, 
+      include/net-snmp/library/snmp_assert.h, 
+      include/net-snmp/library/snmp_client.h, 
+      include/net-snmp/library/snmp_debug.h, 
+      include/net-snmp/library/snmp_enum.h, 
+      include/net-snmp/library/snmp_impl.h, 
+      include/net-snmp/library/snmp_logging.h, 
+      include/net-snmp/library/snmp_openssl.h, 
+      include/net-snmp/library/snmp_parse_args.h, 
+      include/net-snmp/library/snmp_secmod.h, 
+      include/net-snmp/library/snmp_service.h, 
+      include/net-snmp/library/snmp_transport.h, 
+      include/net-snmp/library/snmpksm.h, 
+      include/net-snmp/library/snmptsm.h, 
+      include/net-snmp/library/snmpusm.h, 
+      include/net-snmp/library/snmpv3.h, 
+      include/net-snmp/library/system.h, 
+      include/net-snmp/library/text_utils.h, 
+      include/net-snmp/library/tools.h, 
+      include/net-snmp/library/transform_oids.h, 
+      include/net-snmp/library/types.h, 
+      include/net-snmp/library/ucd_compat.h, 
+      include/net-snmp/library/vacm.h, 
+      include/net-snmp/library/winpipe.h, 
+      include/net-snmp/library/winservice.h, 
+      include/net-snmp/machine/generic.h, include/net-snmp/mib_api.h, 
+      include/net-snmp/net-snmp-config.h.in, 
+      include/net-snmp/net-snmp-includes.h, 
+      include/net-snmp/output_api.h, include/net-snmp/pdu_api.h, 
+      include/net-snmp/session_api.h, include/net-snmp/snmpv3_api.h, 
+      include/net-snmp/system/aix.h, include/net-snmp/system/bsd.h, 
+      include/net-snmp/system/bsdi.h, include/net-snmp/system/bsdi3.h, 
+      include/net-snmp/system/bsdi4.h, include/net-snmp/system/cygwin.h,
+       include/net-snmp/system/darwin.h, 
+      include/net-snmp/system/darwin7.h, 
+      include/net-snmp/system/darwin8.h, 
+      include/net-snmp/system/darwin9.h, 
+      include/net-snmp/system/dragonfly.h, 
+      include/net-snmp/system/dynix.h,
+      include/net-snmp/system/freebsd.h, 
+      include/net-snmp/system/freebsd2.h, 
+      include/net-snmp/system/freebsd3.h, 
+      include/net-snmp/system/freebsd4.h, 
+      include/net-snmp/system/freebsd5.h, 
+      include/net-snmp/system/freebsd6.h, 
+      include/net-snmp/system/freebsd7.h, 
+      include/net-snmp/system/generic.h, include/net-snmp/system/hpux.h,
+       include/net-snmp/system/irix.h,
+      include/net-snmp/system/kfreebsd.h, 
+      include/net-snmp/system/linux.h,
+      include/net-snmp/system/mingw32.h, 
+      include/net-snmp/system/mingw32msvc.h, 
+      include/net-snmp/system/mips.h, include/net-snmp/system/netbsd.h, 
+      include/net-snmp/system/openbsd.h, include/net-snmp/system/osf5.h,
+       include/net-snmp/system/solaris.h, 
+      include/net-snmp/system/solaris2.3.h, 
+      include/net-snmp/system/solaris2.4.h, 
+      include/net-snmp/system/solaris2.5.h, 
+      include/net-snmp/system/solaris2.6.h, 
+      include/net-snmp/system/sunos.h, include/net-snmp/system/svr5.h, 
+      include/net-snmp/system/sysv.h, include/net-snmp/system/ultrix4.h,
+       include/net-snmp/types.h, include/net-snmp/utilities.h, 
+      include/net-snmp/varbind_api.h, include/net-snmp/version.h, 
+      include/ucd-snmp/README, include/ucd-snmp/agent_index.h, 
+      include/ucd-snmp/agent_read_config.h, 
+      include/ucd-snmp/agent_registry.h, include/ucd-snmp/agent_trap.h, 
+      include/ucd-snmp/asn1.h, include/ucd-snmp/auto_nlist.h, 
+      include/ucd-snmp/callback.h, include/ucd-snmp/default_store.h, 
+      include/ucd-snmp/ds_agent.h, include/ucd-snmp/header_complex.h, 
+      include/ucd-snmp/int64.h, include/ucd-snmp/keytools.h, 
+      include/ucd-snmp/mib.h, include/ucd-snmp/mib_module_config.h, 
+      include/ucd-snmp/mibincl.h, include/ucd-snmp/parse.h, 
+      include/ucd-snmp/read_config.h, include/ucd-snmp/scapi.h, 
+      include/ucd-snmp/snmp-tc.h, include/ucd-snmp/snmp.h, 
+      include/ucd-snmp/snmp_agent.h, include/ucd-snmp/snmp_alarm.h, 
+      include/ucd-snmp/snmp_api.h, include/ucd-snmp/snmp_client.h, 
+      include/ucd-snmp/snmp_debug.h, include/ucd-snmp/snmp_impl.h, 
+      include/ucd-snmp/snmp_logging.h, 
+      include/ucd-snmp/snmp_parse_args.h, include/ucd-snmp/snmp_vars.h, 
+      include/ucd-snmp/snmpusm.h, include/ucd-snmp/snmpv3.h, 
+      include/ucd-snmp/struct.h, include/ucd-snmp/system.h, 
+      include/ucd-snmp/tools.h, include/ucd-snmp/transform_oids.h, 
+      include/ucd-snmp/ucd-snmp-agent-includes.h, 
+      include/ucd-snmp/ucd-snmp-config.h, 
+      include/ucd-snmp/ucd-snmp-includes.h, 
+      include/ucd-snmp/util_funcs.h, include/ucd-snmp/var_struct.h, 
+      include/ucd-snmp/version.h, install-sh, local/FAQ2HTML, 
+      local/Makefile.in, local/README.mib2c, local/Version-Munge.pl, 
+      local/convertcode, local/fixproc, local/html-add-header-footer.pl,
+       local/html-textfile-fix.pl, local/ipf-mod.pl, local/mib2c, 
+      local/mib2c-conf.d/default-mfd-top.m2c, 
+      local/mib2c-conf.d/details-enums.m2i, 
+      local/mib2c-conf.d/details-node.m2i, 
+      local/mib2c-conf.d/details-table.m2i, 
+      local/mib2c-conf.d/generic-ctx-copy.m2i, 
+      local/mib2c-conf.d/generic-ctx-get.m2i, 
+      local/mib2c-conf.d/generic-ctx-set.m2i, 
+      local/mib2c-conf.d/generic-data-allocate.m2i, 
+      local/mib2c-conf.d/generic-data-context.m2i, 
+      local/mib2c-conf.d/generic-get-char.m2i, 
+      local/mib2c-conf.d/generic-get-decl-bot.m2i, 
+      local/mib2c-conf.d/generic-get-decl.m2i, 
+      local/mib2c-conf.d/generic-get-long.m2i, 
+      local/mib2c-conf.d/generic-get-oid.m2i, 
+      local/mib2c-conf.d/generic-header-bottom.m2i, 
+      local/mib2c-conf.d/generic-header-top.m2i, 
+      local/mib2c-conf.d/generic-source-includes.m2i, 
+      local/mib2c-conf.d/generic-table-constants.m2c, 
+      local/mib2c-conf.d/generic-table-enums.m2c, 
+      local/mib2c-conf.d/generic-table-indexes-from-oid.m2i, 
+      local/mib2c-conf.d/generic-table-indexes-set.m2i, 
+      local/mib2c-conf.d/generic-table-indexes-to-oid.m2i, 
+      local/mib2c-conf.d/generic-table-indexes-varbind-setup.m2i, 
+      local/mib2c-conf.d/generic-table-indexes.m2i, 
+      local/mib2c-conf.d/generic-table-oids.m2c, 
+      local/mib2c-conf.d/generic-value-map-func.m2i, 
+      local/mib2c-conf.d/generic-value-map-reverse.m2i, 
+      local/mib2c-conf.d/generic-value-map.m2i, 
+      local/mib2c-conf.d/m2c-internal-warning.m2i, 
+      local/mib2c-conf.d/m2c_setup_enum.m2i, 
+      local/mib2c-conf.d/m2c_setup_node.m2i, 
+      local/mib2c-conf.d/m2c_setup_table.m2i, 
+      local/mib2c-conf.d/m2c_table_save_defaults.m2i, 
+      local/mib2c-conf.d/mfd-access-container-cached-defines.m2i, 
+      local/mib2c-conf.d/mfd-access-unsorted-external-defines.m2i, 
+      local/mib2c-conf.d/mfd-data-access.m2c, 
+      local/mib2c-conf.d/mfd-data-get.m2c, 
+      local/mib2c-conf.d/mfd-data-set.m2c, 
+      local/mib2c-conf.d/mfd-doxygen.m2c, 
+      local/mib2c-conf.d/mfd-interactive-setup.m2c, 
+      local/mib2c-conf.d/mfd-interface.m2c, 
+      local/mib2c-conf.d/mfd-makefile.m2m, 
+      local/mib2c-conf.d/mfd-persistence.m2i, 
+      local/mib2c-conf.d/mfd-readme.m2c, local/mib2c-conf.d/mfd-top.m2c,
+       local/mib2c-conf.d/node-get.m2i, local/mib2c-conf.d/node-set.m2i,
+       local/mib2c-conf.d/node-storage.m2i, 
+      local/mib2c-conf.d/node-validate.m2i, 
+      local/mib2c-conf.d/node-varbind-validate.m2i, 
+      local/mib2c-conf.d/parent-dependencies.m2i, 
+      local/mib2c-conf.d/parent-set.m2i,
+      local/mib2c-conf.d/subagent.m2c, 
+      local/mib2c-conf.d/syntax-COUNTER64-get.m2i, 
+      local/mib2c-conf.d/syntax-DateAndTime-get.m2d, 
+      local/mib2c-conf.d/syntax-DateAndTime-get.m2i, 
+      local/mib2c-conf.d/syntax-DateAndTime-readme.m2i, 
+      local/mib2c-conf.d/syntax-InetAddress-get.m2i, 
+      local/mib2c-conf.d/syntax-InetAddress-set.m2i, 
+      local/mib2c-conf.d/syntax-InetAddressType-get.m2i, 
+      local/mib2c-conf.d/syntax-InetAddressType-set.m2i, 
+      local/mib2c-conf.d/syntax-RowStatus-dependencies.m2i, 
+      local/mib2c-conf.d/syntax-RowStatus-get.m2i, 
+      local/mib2c-conf.d/syntax-RowStatus-varbind-validate.m2i, 
+      local/mib2c-conf.d/syntax-StorageType-dependencies.m2i, 
+      local/mib2c-conf.d/syntax-TestAndIncr-get.m2i, local/mib2c-update,
+       local/mib2c.access_functions.conf, local/mib2c.array-user.conf, 
+      local/mib2c.check_values.conf,
+      local/mib2c.check_values_local.conf, 
+      local/mib2c.column_defines.conf, local/mib2c.column_enums.conf, 
+      local/mib2c.column_storage.conf, local/mib2c.conf, 
+      local/mib2c.container.conf, local/mib2c.create-dataset.conf, 
+      local/mib2c.emulation.conf, local/mib2c.genhtml.conf, 
+      local/mib2c.int_watch.conf, local/mib2c.iterate.conf, 
+      local/mib2c.iterate_access.conf, local/mib2c.mfd.conf, 
+      local/mib2c.notify.conf, local/mib2c.old-api.conf, 
+      local/mib2c.perl.conf, local/mib2c.raw-table.conf, 
+      local/mib2c.row.conf, local/mib2c.scalar.conf, 
+      local/mib2c.table_data.conf, local/pass_persisttest, 
+      local/passtest, local/passtest.pl, local/snmp-ucd.sh, 
+      local/snmpcheck.def, local/snmpconf, 
+      local/snmpconf.dir/snmp-data/authopts, 
+      local/snmpconf.dir/snmp-data/debugging, 
+      local/snmpconf.dir/snmp-data/mibs, 
+      local/snmpconf.dir/snmp-data/output, 
+      local/snmpconf.dir/snmp-data/snmpconf-config, 
+      local/snmpconf.dir/snmpd-data/acl, 
+      local/snmpconf.dir/snmpd-data/basic_setup, 
+      local/snmpconf.dir/snmpd-data/extending, 
+      local/snmpconf.dir/snmpd-data/monitor, 
+      local/snmpconf.dir/snmpd-data/operation, 
+      local/snmpconf.dir/snmpd-data/snmpconf-config, 
+      local/snmpconf.dir/snmpd-data/system, 
+      local/snmpconf.dir/snmpd-data/trapsinks, 
+      local/snmpconf.dir/snmptrapd-data/authentication, 
+      local/snmpconf.dir/snmptrapd-data/formatting, 
+      local/snmpconf.dir/snmptrapd-data/logging, 
+      local/snmpconf.dir/snmptrapd-data/runtime, 
+      local/snmpconf.dir/snmptrapd-data/snmpconf-config, 
+      local/snmpconf.dir/snmptrapd-data/traphandle, local/snmpdump.pl, 
+      local/tkmib, local/traptoemail, ltmain.sh, 
+      m4/ac_add_search_path.m4, m4/ac_msg_cache.m4, 
+      m4/ac_msg_module_dbg.m4, m4/ac_prompt_user.m4, m4/libtool.m4, 
+      m4/ltoptions.m4, m4/ltsugar.m4, m4/ltversion.m4,
+      m4/lt~obsolete.m4,  m4/netsnmp_arg.m4, m4/netsnmp_search_libs.m4,
+      makedepend.in,  makefileindepend.pl, makenosysdepend.pl,
+      maketarget,  man/Makefile.in, man/add_mibdir.3,
+      man/add_module_replacement.3,  man/config_api.3.def,
+      man/default_store.3.bot,  man/default_store.3.top,
+      man/encode_keychange.1.def,  man/fixproc.1.def,
+      man/get_module_node.3, man/init_mib.3,  man/init_mib_internals.3,
+      man/make_index.pl, man/man_sections.txt,  man/mib2c-update.1.def,
+      man/mib2c.1.def, man/mib2c.conf.5.in,  man/mib2c.extract.pl,
+      man/mib_api.3.def, man/net-snmp-config.1.def, 
+      man/net-snmp-create-v3-user.1.def, 
+      man/netsnmp_access_multiplexer.3, man/netsnmp_agent.3, 
+      man/netsnmp_agent_handler.h.3, man/netsnmp_agent_registry.3, 
+      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3, 
+      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3, 
+      man/netsnmp_cache_handler.3, man/netsnmp_callback.3, 
+      man/netsnmp_container.3, man/netsnmp_container_iterator.3, 
+      man/netsnmp_container_iterator.h.3, man/netsnmp_data_list.3, 
+      man/netsnmp_debug.3, man/netsnmp_default_store.3, 
+      man/netsnmp_example_scalar_int.3, man/netsnmp_handler.3, 
+      man/netsnmp_instance.3, man/netsnmp_iterator_info_s.3, 
+      man/netsnmp_leaf.3, man/netsnmp_library.3, 
+      man/netsnmp_mib_handler_methods.3, man/netsnmp_mib_maintenance.3, 
+      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3, 
+      man/netsnmp_multiplexer.3, 
+      man/netsnmp_netsnmp_agent_request_info_s.3, 
+      man/netsnmp_netsnmp_column_info_t.3, 
+      man/netsnmp_netsnmp_data_list_s.3, 
+      man/netsnmp_netsnmp_handler_registration_s.3, 
+      man/netsnmp_netsnmp_iterator_info_s.3, 
+      man/netsnmp_netsnmp_mib_handler_access_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_methods.3, 
+      man/netsnmp_netsnmp_mib_handler_s.3, 
+      man/netsnmp_netsnmp_monitor_callback_header_s.3, 
+      man/netsnmp_netsnmp_request_info_s.3, 
+      man/netsnmp_netsnmp_table_registration_info_s.3, 
+      man/netsnmp_netsnmp_table_request_info_s.3, 
+      man/netsnmp_null_container.3, man/netsnmp_oid_stash.3, 
+      man/netsnmp_old_api.3, man/netsnmp_read_config.3, 
+      man/netsnmp_read_only.3, man/netsnmp_row_merge.3, 
+      man/netsnmp_scalar.3, man/netsnmp_scalar_group_group.3, 
+      man/netsnmp_serialize.3, man/netsnmp_set_data.3, 
+      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3, 
+      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3, 
+      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3, 
+      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3, 
+      man/netsnmp_table.3, man/netsnmp_table_array.3, 
+      man/netsnmp_table_container.3, man/netsnmp_table_data.3, 
+      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3, 
+      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3, 
+      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3, 
+      man/netsnmp_table_row.3, man/netsnmp_table_rows.3, 
+      man/netsnmp_tdata.3, man/netsnmp_tools.h.3, man/netsnmp_util.3, 
+      man/netsnmp_utilities.3, man/netsnmp_variable_list.3, 
+      man/netsnmp_watcher.3, man/pdu_api.3.def, man/print_description.3,
+       man/print_mib.3, man/print_objid.3, man/print_value.3, 
+      man/print_variable.3, man/read_all_mibs.3, man/read_mib.3, 
+      man/read_module.3, man/read_module_node.3, man/read_objid.3, 
+      man/session_api.3.def, man/shutdown_mib.3, man/snmp.conf.5.def, 
+      man/snmp_agent_api.3.def, man/snmp_alarm.3.def, 
+      man/snmp_api_errstring.3, man/snmp_close.3, man/snmp_config.5.def,
+       man/snmp_error.3, man/snmp_free_pdu.3, man/snmp_open.3, 
+      man/snmp_perror.3, man/snmp_read.3, man/snmp_select_info.3, 
+      man/snmp_send.3, man/snmp_sess_api.3.def, 
+      man/snmp_sess_async_send.3, man/snmp_sess_close.3, 
+      man/snmp_sess_error.3, man/snmp_sess_init.3, man/snmp_sess_open.3,
+       man/snmp_sess_perror.3, man/snmp_sess_read.3, 
+      man/snmp_sess_select_info.3, man/snmp_sess_send.3, 
+      man/snmp_sess_session.3, man/snmp_sess_timeout.3, 
+      man/snmp_set_mib_warnings.3, man/snmp_set_save_descriptions.3, 
+      man/snmp_timeout.3, man/snmp_trap_api.3.def,
+      man/snmpbulkget.1.def,  man/snmpbulkwalk.1.def, man/snmpcmd.1.def,
+      man/snmpconf.1.def,  man/snmpd.8.def, man/snmpd.conf.5.def,
+      man/snmpd.examples.5.def,  man/snmpd.internal.5.def,
+      man/snmpdelta.1.def, man/snmpdf.1.def,  man/snmpget.1.def,
+      man/snmpgetnext.1.def, man/snmpinform.1,  man/snmpnetstat.1.def,
+      man/snmpset.1.def, man/snmpstatus.1.def,  man/snmptable.1.def,
+      man/snmptest.1.def, man/snmptranslate.1.def,  man/snmptrap.1.def,
+      man/snmptrapd.8.def, man/snmptrapd.conf.5.def,  man/snmpusm.1.def,
+      man/snmpvacm.1.def, man/snmpwalk.1.def,  man/tkmib.1.def,
+      man/traptoemail.1.def, man/varbind_api.3.def, 
+      man/variables.5.def, mibs/AGENTX-MIB.txt, 
+      mibs/DISMAN-EVENT-MIB.txt, mibs/DISMAN-EXPRESSION-MIB.txt, 
+      mibs/DISMAN-NSLOOKUP-MIB.txt, mibs/DISMAN-PING-MIB.txt, 
+      mibs/DISMAN-SCHEDULE-MIB.txt, mibs/DISMAN-SCRIPT-MIB.txt, 
+      mibs/DISMAN-TRACEROUTE-MIB.txt, mibs/EtherLike-MIB.txt, 
+      mibs/HCNUM-TC.txt, mibs/HOST-RESOURCES-MIB.txt, 
+      mibs/HOST-RESOURCES-TYPES.txt, 
+      mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt, 
+      mibs/IANA-LANGUAGE-MIB.txt, mibs/IANA-RTPROTO-MIB.txt, 
+      mibs/IANAifType-MIB.txt, mibs/IF-INVERTED-STACK-MIB.txt, 
+      mibs/IF-MIB.txt, mibs/INET-ADDRESS-MIB.txt, 
+      mibs/IP-FORWARD-MIB.txt, mibs/IP-MIB.txt, 
+      mibs/IPV6-FLOW-LABEL-MIB.txt, mibs/IPV6-ICMP-MIB.txt, 
+      mibs/IPV6-MIB.txt, mibs/IPV6-TC.txt, mibs/IPV6-TCP-MIB.txt, 
+      mibs/IPV6-UDP-MIB.txt, mibs/LM-SENSORS-MIB.txt, mibs/MTA-MIB.txt, 
+      mibs/Makefile.in, mibs/Makefile.mib, mibs/NET-SNMP-AGENT-MIB.txt, 
+      mibs/NET-SNMP-EXAMPLES-MIB.txt, mibs/NET-SNMP-EXTEND-MIB.txt, 
+      mibs/NET-SNMP-MIB.txt, mibs/NET-SNMP-MONITOR-MIB.txt, 
+      mibs/NET-SNMP-PASS-MIB.txt, mibs/NET-SNMP-SYSTEM-MIB.txt, 
+      mibs/NET-SNMP-TC.txt, mibs/NET-SNMP-VACM-MIB.txt, 
+      mibs/NETWORK-SERVICES-MIB.txt, mibs/NOTIFICATION-LOG-MIB.txt, 
+      mibs/README.mibs, mibs/RFC-1215.txt, mibs/RFC1155-SMI.txt, 
+      mibs/RFC1213-MIB.txt, mibs/RMON-MIB.txt, mibs/SCTP-MIB.txt, 
+      mibs/SMUX-MIB.txt, mibs/SNMP-COMMUNITY-MIB.txt, 
+      mibs/SNMP-FRAMEWORK-MIB.txt, mibs/SNMP-MPD-MIB.txt, 
+      mibs/SNMP-NOTIFICATION-MIB.txt, mibs/SNMP-PROXY-MIB.txt, 
+      mibs/SNMP-TARGET-MIB.txt, mibs/SNMP-USER-BASED-SM-MIB.txt, 
+      mibs/SNMP-USM-AES-MIB.txt, mibs/SNMP-USM-DH-OBJECTS-MIB.txt, 
+      mibs/SNMP-VIEW-BASED-ACM-MIB.txt, mibs/SNMPv2-CONF.txt, 
+      mibs/SNMPv2-MIB.txt, mibs/SNMPv2-SMI.txt, mibs/SNMPv2-TC.txt, 
+      mibs/SNMPv2-TM.txt, mibs/TCP-MIB.txt, 
+      mibs/TRANSPORT-ADDRESS-MIB.txt, mibs/TUNNEL-MIB.txt, 
+      mibs/UCD-DEMO-MIB.inc, mibs/UCD-DEMO-MIB.txt, 
+      mibs/UCD-DISKIO-MIB.inc, mibs/UCD-DISKIO-MIB.txt, 
+      mibs/UCD-DLMOD-MIB.inc, mibs/UCD-DLMOD-MIB.txt, 
+      mibs/UCD-IPFILTER-MIB.inc, mibs/UCD-IPFILTER-MIB.txt, 
+      mibs/UCD-IPFWACC-MIB.inc, mibs/UCD-IPFWACC-MIB.txt, 
+      mibs/UCD-SNMP-MIB-OLD.txt, mibs/UCD-SNMP-MIB.inc, 
+      mibs/UCD-SNMP-MIB.txt, mibs/UDP-MIB.txt, mibs/ianalist, 
+      mibs/makehtml.pl, mibs/mibfetch, mibs/nodemap, mibs/rfclist, 
+      mibs/rfcmibs.diff, mibs/smistrip, mkinstalldirs, 
+      net-snmp-config.in, net-snmp-create-v3-user.in, ov/Makefile.in, 
+      ov/README, ov/UCD-Computer, ov/UCD-fields, ov/bitmaps/UCD.20.m, 
+      ov/bitmaps/UCD.20.p, ov/bitmaps/UCD.26.m, ov/bitmaps/UCD.26.p, 
+      ov/bitmaps/UCD.32.m, ov/bitmaps/UCD.32.p, ov/bitmaps/UCD.38.m, 
+      ov/bitmaps/UCD.38.p, ov/bitmaps/UCD.44.m, ov/bitmaps/UCD.44.p, 
+      ov/bitmaps/UCD.50.m, ov/bitmaps/UCD.50.p, ov/bitmaps/UCD.fields, 
+      ov/oid_to_sym.in, ov/oid_to_type.in, perl/ASN/ASN.pm, 
+      perl/ASN/ASN.xs, perl/ASN/Changes, perl/ASN/MANIFEST, 
+      perl/ASN/Makefile.PL, perl/ASN/test.pl, perl/AnyData_SNMP/Changes,
+       perl/AnyData_SNMP/DBD_AnyData.patch, perl/AnyData_SNMP/Format.pm,
+       perl/AnyData_SNMP/INSTALL, perl/AnyData_SNMP/MANIFEST, 
+      perl/AnyData_SNMP/Makefile.PL, perl/AnyData_SNMP/README, 
+      perl/AnyData_SNMP/Storage.pm, perl/AnyData_SNMP/configs/scli, 
+      perl/AnyData_SNMP/configs/unix, perl/AnyData_SNMP/netsh, 
+      perl/Makefile.PL, perl/Makefile.makefiles, perl/Makefile.subs.pl, 
+      perl/OID/Changes, perl/OID/MANIFEST, perl/OID/Makefile.PL, 
+      perl/OID/OID.pm, perl/OID/OID.xs, perl/OID/README, 
+      perl/OID/test.pl, perl/OID/typemap, perl/SNMP/BUG, 
+      perl/SNMP/MANIFEST, perl/SNMP/MANIFEST.SKIP,
+      perl/SNMP/Makefile.PL,  perl/SNMP/README, perl/SNMP/SNMP.pm,
+      perl/SNMP/SNMP.xs,  perl/SNMP/TODO, perl/SNMP/examples/async1.pl, 
+      perl/SNMP/examples/async2.pl, perl/SNMP/examples/bulkwalk.pl, 
+      perl/SNMP/examples/ipforward.pl, perl/SNMP/examples/mibtree.pl, 
+      perl/SNMP/examples/mibwalk.pl, perl/SNMP/examples/pingmib.pl, 
+      perl/SNMP/examples/tablewalk.pl, perl/SNMP/examples/testleak.pl, 
+      perl/SNMP/examples/trap-example.pl, perl/SNMP/hints/irix.pl, 
+      perl/SNMP/hints/solaris.pl, perl/SNMP/perlsnmp.h, 
+      perl/SNMP/t/README, perl/SNMP/t/async.t, perl/SNMP/t/bulkwalk.t, 
+      perl/SNMP/t/conf.t, perl/SNMP/t/conftest.conf, perl/SNMP/t/get.t, 
+      perl/SNMP/t/getnext.t, perl/SNMP/t/mib.t, perl/SNMP/t/mib.txt, 
+      perl/SNMP/t/mibload.t, perl/SNMP/t/notify.t,
+      perl/SNMP/t/session.t,  perl/SNMP/t/set.t,
+      perl/SNMP/t/snmptest.conf,  perl/SNMP/t/startagent.pl,
+      perl/SNMP/typemap,  perl/TrapReceiver/Changes,
+      perl/TrapReceiver/MANIFEST,  perl/TrapReceiver/Makefile.PL,
+      perl/TrapReceiver/README,  perl/TrapReceiver/TrapReceiver.pm, 
+      perl/TrapReceiver/TrapReceiver.xs, perl/TrapReceiver/const-c.inc, 
+      perl/TrapReceiver/const-xs.inc, 
+      perl/TrapReceiver/fallback/const-c.inc, 
+      perl/TrapReceiver/fallback/const-xs.inc, 
+      perl/TrapReceiver/perl_snmptrapd.h, perl/TrapReceiver/ppport.h, 
+      perl/TrapReceiver/t/1.t, perl/TrapReceiver/typemap, 
+      perl/agent/Changes, perl/agent/MANIFEST, perl/agent/Makefile.PL, 
+      perl/agent/Support/Makefile.PL, perl/agent/Support/Support.pm, 
+      perl/agent/agent.pm, perl/agent/agent.xs, 
+      perl/agent/default_store/Makefile.PL, 
+      perl/agent/default_store/default_store.pm, 
+      perl/agent/default_store/default_store.xs, 
+      perl/agent/default_store/gen, perl/agent/default_store/test.pl, 
+      perl/agent/netsnmp_request_infoPtr.pm, perl/agent/test.pl, 
+      perl/agent/typemap, perl/default_store/Changes, 
+      perl/default_store/MANIFEST, perl/default_store/Makefile.PL, 
+      perl/default_store/README, perl/default_store/default_store.pm, 
+      perl/default_store/default_store.xs, perl/default_store/gen, 
+      perl/default_store/test.pl, perl/default_store/typemap, 
+      perl/make-perl-makefiles, perl/manager/INSTALL, 
+      perl/manager/Makefile.PL, perl/manager/displaytable.pm, 
+      perl/manager/getValues.pm, perl/manager/manager.pm, 
+      perl/manager/setupauth, perl/manager/setupdb, 
+      perl/manager/setupuser, perl/manager/snmptosql, python/LICENSE, 
+      python/README, python/netsnmp/__init__.py, 
+      python/netsnmp/client.py, python/netsnmp/client_intf.c, 
+      python/netsnmp/tests/__init__.py, python/netsnmp/tests/snmpd.conf,
+       python/netsnmp/tests/test.py, python/setup.py, remove-files, 
+      sedscript.in, snmplib/Makefile.depend, snmplib/Makefile.in, 
+      snmplib/asn1.c, snmplib/callback.c, snmplib/check_varbind.c, 
+      snmplib/cmu_compat.c, snmplib/container.c, 
+      snmplib/container_binary_array.c, snmplib/container_iterator.c, 
+      snmplib/container_list_ssll.c, snmplib/container_null.c, 
+      snmplib/data_list.c, snmplib/default_store.c, snmplib/dir_utils.c,
+       snmplib/fd_event_manager.c, snmplib/file_utils.c,
+      snmplib/getopt.c,  snmplib/inet_ntop.c, snmplib/inet_pton.c,
+      snmplib/int64.c,  snmplib/keytools.c, snmplib/large_fd_set.c,
+      snmplib/lcd_time.c,  snmplib/md5.c, snmplib/mib.c,
+      snmplib/mt_support.c,  snmplib/oid_stash.c, snmplib/parse.c,
+      snmplib/pkcs.c,  snmplib/read_config.c, snmplib/scapi.c,
+      snmplib/snmp-tc.c,  snmplib/snmp.c, snmplib/snmpAAL5PVCDomain.c, 
+      snmplib/snmpAliasDomain.c, snmplib/snmpCallbackDomain.c, 
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpIPXDomain.c, 
+      snmplib/snmpSSHDomain.c, snmplib/snmpSTDDomain.c, 
+      snmplib/snmpTCPDomain.c, snmplib/snmpTCPIPv6Domain.c, 
+      snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c, 
+      snmplib/snmpUnixDomain.c, snmplib/snmp_alarm.c,
+      snmplib/snmp_api.c,  snmplib/snmp_auth.c, snmplib/snmp_client.c,
+      snmplib/snmp_debug.c,  snmplib/snmp_enum.c,
+      snmplib/snmp_logging.c,  snmplib/snmp_openssl.c,
+      snmplib/snmp_parse_args.c,  snmplib/snmp_secmod.c,
+      snmplib/snmp_service.c,  snmplib/snmp_transport.c,
+      snmplib/snmp_version.c,  snmplib/snmpksm.c, snmplib/snmptsm.c,
+      snmplib/snmpusm.c,  snmplib/snmpv3.c, snmplib/snprintf.c,
+      snmplib/strlcpy.c,  snmplib/strtok_r.c, snmplib/strtol.c,
+      snmplib/strtoul.c,  snmplib/strtoull.c, snmplib/system.c,
+      snmplib/test_binary_array.c,  snmplib/text_utils.c,
+      snmplib/tools.c, snmplib/ucd-snmp-includes.h, 
+      snmplib/ucd_compat.c, snmplib/vacm.c, snmplib/winpipe.c, 
+      snmplib/winservice.c, snmplib/winservice.mc,
+      snmplib/winservice.rc,  snmplib/winservicerc.rc, stamp-h,
+      stamp-h.in, testing/Makefile.in,  testing/README,
+      testing/RUNTESTS, testing/T.c, testing/T2.sh, 
+      testing/TESTCONF.sh, testing/data.keychange-md5, 
+      testing/data.keychange-sha1, testing/data.keychange-sha1-des, 
+      testing/data.kul-md5, testing/data.kul-sha1, testing/etimetest.c, 
+      testing/eval_oneprogram.sh, testing/eval_onescript.sh, 
+      testing/eval_suite.sh, testing/eval_testlist, 
+      testing/eval_tools.sh, testing/keymanagetest.c,
+      testing/misctest.c,  testing/rfc1213/README, testing/rfc1213/run, 
+      testing/rfc1213/snmpfun.sh, testing/rfc1213/test_fun, 
+      testing/rfc1213/testmib1.sh, testing/rfc1213/testmib2.sh, 
+      testing/rfc1213/testmib3.sh, testing/scapitest.c, 
+      testing/test_keychange.sh, testing/test_kul.sh, 
+      testing/tests/Stransport, testing/tests/Sv1config, 
+      testing/tests/Sv2cconfig, testing/tests/Sv3config, 
+      testing/tests/Sv3usmconfigagent, testing/tests/Sv3usmconfigbase, 
+      testing/tests/Sv3usmconfigtrapd, testing/tests/Sv3vacmconfig, 
+      testing/tests/Svacmconfig, testing/tests/Svanyconfig, 
+      testing/tests/T000configure, testing/tests/T001snmpv1get, 
+      testing/tests/T014snmpv2cget, testing/tests/T015snmpv2cgetnext, 
+      testing/tests/T0160snmpv2cbulkget, 
+      testing/tests/T016snmpv2cgetfail, 
+      testing/tests/T017snmpv2ctov1getfail, 
+      testing/tests/T018snmpv1tov2cgetfail, 
+      testing/tests/T019snmpv2cnosuch, testing/tests/T020snmpv3get, 
+      testing/tests/T021snmpv3getnext, testing/tests/T0220snmpv3bulkget,
+       testing/tests/T022snmpv3getMD5,
+      testing/tests/T023snmpv3getMD5AES, 
+      testing/tests/T023snmpv3getMD5DES,
+      testing/tests/T024snmpv3getSHA1, 
+      testing/tests/T025snmpv3getSHADES, 
+      testing/tests/T026snmpv3getSHAAES,
+      testing/tests/T028snmpv3getfail, 
+      testing/tests/T030snmpv3usercreation, 
+      testing/tests/T035snmpv3trapdusermgmt, 
+      testing/tests/T049snmpv3inform,
+      testing/tests/T049snmpv3informauth, 
+      testing/tests/T049snmpv3informpriv, testing/tests/T050snmpv3trap, 
+      testing/tests/T051snmpv2ctrap, testing/tests/T052snmpv2cinform, 
+      testing/tests/T053agentv1trap, testing/tests/T054agentv2ctrap, 
+      testing/tests/T055agentv1mintrap, 
+      testing/tests/T056agentv2cmintrap,
+      testing/tests/T057trapdauthtest, 
+      testing/tests/T057trapdauthtest2,
+      testing/tests/T057trapdauthtest3, 
+      testing/tests/T058agentauthtrap,
+      testing/tests/T059trapdtraphandle,  testing/tests/T060trapdperl,
+      testing/tests/T061agentperl,  testing/tests/T065agentextend,
+      testing/tests/T100agenthup,  testing/tests/T110agentxget,
+      testing/tests/T111agentxset,  testing/tests/T112agentxsetfail,
+      testing/tests/T113agentxtrap,  testing/tests/T115agentxperl,
+      testing/tests/T120proxyget,  testing/tests/T121proxyset,
+      testing/tests/T122proxysetfail,  testing/tests/T130snmpv1vacmget,
+      testing/tests/T131snmpv2cvacmget, 
+      testing/tests/T132snmpv3vacmget, 
+      testing/tests/T140snmpv1vacmgetfail, 
+      testing/tests/T141snmpv2cvacmgetfail, 
+      testing/tests/T142snmpv3vacmgetfail, 
+      testing/tests/T150solarishostcpu, 
+      testing/tests/T151solarishostdisk, testing/tests/T152hostuptime, 
+      testing/tests/T153solarisswap, testing/tests/T160snmpnetstat, 
+      testing/tests/T200snmpv2cwalkall, testing/tests/T300udp, 
+      testing/tests/T310tcp, testing/tests/T320udpv6, 
+      testing/tests/T330tcpv6, testing/tests/T350unix, 
+      testing/tests/T360dtlsudp, testing/tests/T399alias, 
+      testing/tests/test-localhost.cert, 
+      testing/tests/test-localhost.priv, testing/tests/test-user.cert, 
+      testing/tests/test-user.priv, win32/Configure, 
+      win32/EXAMPLE.conf.win32, win32/Makefile-apps.in, 
+      win32/Makefile.in, win32/MgmtApi-winExtDLL.h, 
+      win32/Snmp-winExtDLL.h, win32/agent_module_dot_conf.h, 
+      win32/agent_module_includes.h, win32/agent_module_inits.h, 
+      win32/build.bat, win32/build.pl, win32/config.h, 
+      win32/config.h.borland, win32/dist/README.build.win32.txt, 
+      win32/dist/README.txt, win32/dist/build-binary.bat, 
+      win32/dist/build-binary.pl, 
+      win32/dist/htmlhelp/Configuration_Overview.html, 
+      win32/dist/htmlhelp/Developer_FAQ.html, 
+      win32/dist/htmlhelp/FAQ.html, 
+      win32/dist/htmlhelp/Help_Caveats.html, 
+      win32/dist/htmlhelp/Introduction.html, 
+      win32/dist/htmlhelp/Net-SNMP.hhc,
+      win32/dist/htmlhelp/Net-SNMP.hhp, 
+      win32/dist/htmlhelp/snmp.conf.win32.html, 
+      win32/dist/htmlhelp/snmpd.conf.win32.html, 
+      win32/dist/htmlhelp/snmptrapd.conf.win32.html, 
+      win32/dist/installer/Add2Path.nsi, 
+      win32/dist/installer/SetEnVar.nsi, 
+      win32/dist/installer/net-snmp.nsi, win32/dist/scripts/create-toc, 
+      win32/dist/scripts/mandir2html, 
+      win32/dist/scripts/net-snmp-perl-test.pl, 
+      win32/dist/scripts/poddir2html, win32/dist/scripts/readme2html, 
+      win32/dist/scripts/txt2html, win32/dist/tosock1.sh, 
+      win32/encode_keychange/encode_keychange.dsp, 
+      win32/install-net-snmp.bat, win32/libagent/Makefile.in, 
+      win32/libagent/libagent.def, win32/libagent/libagent.dsp, 
+      win32/libhelpers/Makefile.in, win32/libhelpers/libhelpers.dsp, 
+      win32/libnetsnmptrapd/Makefile.in, 
+      win32/libnetsnmptrapd/libnetsnmptrapd.dsp, 
+      win32/libsnmp/Makefile.in, win32/libsnmp/libsnmp.dsp, 
+      win32/libsnmp_dll/Makefile.in, win32/libsnmp_dll/libsnmp.def, 
+      win32/libsnmp_dll/libsnmp_dll.dsp,
+      win32/libucdmibs/libucdmibs.def,  win32/local/Makefile.in,
+      win32/local/mib2c.bat,  win32/local/snmpconf.bat,
+      win32/local/traptoemail.bat,  win32/mib_module_dot_conf.h,
+      win32/mib_module_includes.h,  win32/mib_module_inits.h,
+      win32/mib_module_shutdown.h, 
+      win32/net-snmp/agent/agent_module_config.h, 
+      win32/net-snmp/agent/mib_module_config.h, 
+      win32/net-snmp/library/snmpv3-security-includes.h, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in,
+      win32/netsnmpmibs/Makefile.in,  win32/netsnmpmibs/netsnmpmibs.dsp,
+      win32/nmakeperl.bat,  win32/snmpbulkget/snmpbulkget.dsp, 
+      win32/snmpbulkwalk/snmpbulkwalk.dsp, win32/snmpd/Makefile.in, 
+      win32/snmpd/snmpd.dsp, win32/snmpdelta/snmpdelta.dsp, 
+      win32/snmpdf/snmpdf.dsp, win32/snmpget/snmpget.dsp, 
+      win32/snmpgetnext/snmpgetnext.dsp, win32/snmpnetstat/Makefile.in, 
+      win32/snmpnetstat/snmpnetstat.dsp, win32/snmpset/snmpset.dsp, 
+      win32/snmpsm_init.h, win32/snmpstatus/snmpstatus.dsp, 
+      win32/snmptable/snmptable.dsp, win32/snmptest/snmptest.dsp, 
+      win32/snmptranslate/snmptranslate.dsp,
+      win32/snmptrap/snmptrap.dsp,  win32/snmptrapd/Makefile.in,
+      win32/snmptrapd/snmptrapd.dsp,  win32/snmpusm/snmpusm.dsp,
+      win32/snmpvacm/snmpvacm.dsp,  win32/snmpwalk/snmpwalk.dsp,
+      win32/win32.dsw, win32/win32dll.dsw:
+
+ Fix 5.5.x branch structure (part 2) git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@19965 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/host/data_access/swrun_kinfo.c: proper process
+
+ status values for netbsd git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19962 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/host/data_access/swrun_kinfo.c: proper process
+
+ status values for netbsd git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19962 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * snmplib/scapi.c: conditionalize variable git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19961 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * snmplib/scapi.c: conditionalize variable git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19961 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/tcp-mib/data_access/tcpConn.h: tcp-mib/udp-mib
+
+ support for the *bsds git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19960 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/tcp-mib/data_access/tcpConn.h: tcp-mib/udp-mib
+
+ support for the *bsds git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19960 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/mibII.h, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_freebsd4.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_netbsd.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_openbsd.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint.h, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_freebsd4.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_netbsd.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_openbsd.c, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.
+       c: tcp-mib/udp-mib support for the *bsds git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19959 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/mibII.h, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_freebsd4.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_netbsd.c, 
+      agent/mibgroup/tcp-mib/data_access/tcpConn_openbsd.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint.h, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_freebsd4.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_netbsd.c, 
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_openbsd.c, 
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.
+       c: tcp-mib/udp-mib support for the *bsds git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19959 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_a
+       ccess.c: Properly end debug message with newline git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19958 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   *   * 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_a
+       ccess.c: Properly end debug message with newline git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19958 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c: remove var
+
+ that shadows the useful one git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19957 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c: remove var
+
+ that shadows the useful one git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19957 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/ipv6.c: major fiddling to get things working
+
+ for openbsd too. This should really be reworked to use the
+ tcp-mib/udp-mib/data_access git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19956 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   * agent/mibgroup/mibII/ipv6.c: major fiddling to get things working
+
+ for openbsd too. This should really be reworked to use the
+ tcp-mib/udp-mib/data_access git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19956 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/mibII/tcpTable.c: fix tcp states for dragonflybsd
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@19955 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/mibII/tcpTable.c: fix tcp states for dragonflybsd
+      git-svn-id:
+
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@19955 06827809-a52a-0410-b366-d66718629ded
+
+2011-02-21  Niels Baggesen <nba@users.sourceforge.net>
+
+   *  agent/mibgroup/mibII.h: enable new tcp/udp mibs for solaris
+      git-svn-id:
+
+
+
+----------------------------------------------------------------------
+
+Changes: V5.7 -> V5.7.1.pre1
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/snmpd.c: fix C++ comments
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec, perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm,
+       perl/OID/OID.pm, perl/SNMP/SNMP.pm, 
+      perl/TrapReceiver/TrapReceiver.pm, perl/agent/Support/Support.pm, 
+      perl/agent/agent.pm, perl/agent/default_store/default_store.pm, 
+      perl/default_store/default_store.pm: Version number update:
+
+ 5.7.1.pre1
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * Makefile.top: version update for 5.7.1.pre1
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit cf4cce4c189cf47f4c489db43b7fa510f8906a1a Merge: df91a9f
+
+ 93e97dc Author: Dave Shield <D.T.Shield@liverpool.ac.uk> Date:   Mon
+ Aug 8 22:15:28 2011 +0100
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : Merge remote-tracking branch 'origin/V5-6-patches' into
+
+ V5-6-patches
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   *  win32/Makefile-apps.in, win32/dist/README.build.win32.txt, 
+      win32/libagent/Makefile.in, win32/libnetsnmptrapd/Makefile.in, 
+      win32/libsnmp/Makefile.in, win32/libsnmp_dll/Makefile.in, 
+      win32/netsnmpmibs/Makefile.in, win32/snmpd/Makefile.in, 
+      win32/snmpnetstat/Makefile.in, win32/snmptrapd/Makefile.in: Define
+
+ _BIND_TO_CURRENT_VCLIBS_VERSION token (as per Alex' build
+ instructions)
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit df16dc2221e993dd3c66650d5e872577ffe6c01b Merge: 714bc82
+
+ 8e5a28d Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 13:56:43 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit ffa05b051ac3e2b197195a9989cc7a91fe8d9282 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Mon Aug 8 13:55:38
+ 2011 -0700
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : commit 714bc82fa01e21a3655824963fa54e9b8042ffb0 Merge: 6fe8fe5
+
+ 3ef1db5 Author: Dave Shield <D.T.Shield@liverpool.ac.uk> Date:   Mon
+ Aug 8 21:21:46 2011 +0100
+
+2011-08-08  Dave Shield <D.T.Shield@liverpool.ac.uk>
+
+   * : commit b451607dca015c111e96fdfeb2ddb0661fb4f724 Author: Dave
+
+ Shield <D.T.Shield@liverpool.ac.uk> Date:   Mon Aug 8 21:20:32 2011
+ +0100
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 6fe8fe5294a45bc7e4ea3751a1ad7aa47b5cabb2 Merge: 364f8ff
+
+ f69abe3 Author: Bart Van Assche <bvanassche@acm.org> Date:   Mon Aug
+ 8 22:02:38 2011 +0200
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit c94813044a4c4a608e98e80223075c6faf04ee11 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Mon Aug 8 21:56:15 2011 +0200
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 364f8ffaeb90b4eb0165fc855688cd0626632794 Merge: 3287295
+
+ 7abb926 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 11:24:26 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-6-patches' into
+
+ V5-6-patches
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: display the branch we'll commit to
+
+
+2011-08-08  Vladimir Kondratiev <wulf2001@users.sourceforge.net>
+
+   * agent/mibgroup/ucd-snmp/disk_hw.c: CHANGES: snmpd: PATCH 3386633:
+
+ from wulf2001: fix integer overflow in disk percent calculations Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 84a775d0557fea97570e41715a3164970b4c03a2 Merge: 6fff1c1
+
+ d373c4f Author: Bart Van Assche <bvanassche@acm.org> Date:   Mon Aug
+ 8 20:12:32 2011 +0200
+
+2011-08-08  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * agent/agent_trap.c: CHANGES: libnetsnmp: PATCH 3387139: from
+
+ yaberauneya: Avoid segfault if trapsess transport element cant be
+ parsed Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: nssfpatchapply: split the
+
+ displayed git commit command into multiple segments
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/helpers/scalar_group.c: CHANGES: snmplib: PATCH: 3386961:
+
+ Make SNMP GET work in an AgentX subagent if write support is
+ disabled via NETSNMP_NO_WRITE_SUPPORT (Mark Rusk).
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/mib.c: CHANGES: snmplib: Fix a crash that could be
+
+ triggered by calling _mibindex_add() with the second argument not
+ equal to -1.
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 6fff1c1ae51b06c9d80faf15373a963d173f14e8 Merge: 837c52e
+
+ 8cc9004 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 10:58:59 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 8ca7ff1e692caec4186b788c9ae2d27be213290f Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Mon Aug 8 10:33:56
+ 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit b8f529cba27c0114b4cb7340cfd449504fa07506 Merge: 0822f2d
+
+ 556e938 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 10:05:36 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: fix function name typo
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 29882a078a959a0f78b03e01968f1d17b7f6a299 Merge: 5e9bd2f
+
+ 0409c0a Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Aug 8 10:03:34 2011 -0700
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : manual merge of pull/push
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: make nspull/nspush check for a
+
+ clean repo
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: new function "nsmakeall" to test
+
+ building on every branch
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: default to merge
+
+
+2011-08-08  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-7-patches' into
+
+ V5-7-patches
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/library/tools.h: CHANGES: Windows: Avoid that if
+
+ the Net-SNMP Perl modules have been built with another version of
+ Microsoft Visual Studio than ActivePerl that using one of these Perl
+ modules triggers a "Free to wrong pool" crash. This regression was
+ caused by commit 3b14c59cf8278d410207ff42debda2636426a468 (the
+ netsnmp_free() into SNMP_FREE() changes in the *.xs files).
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit e109539930703cb3052d5241b18ac6fc062faaca Merge: 0c9b6cb
+
+ e46b170 Author: Bart Van Assche <bvanassche@acm.org> Date:   Mon Aug
+ 8 18:34:11 2011 +0200
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/mib.c: CHANGES: snmplib: Fix a crash that could be
+
+ triggered by calling _mibindex_add() with the second argument not
+ equal to -1.
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 7f42d0d93320484152271427cc9808cbda49bbd0 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Mon Aug 8 09:50:51 2011 +0200
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0c9b6cbe9dbe2ec5217a95b6781fd7dc1f6ebda7 Merge: fa6cef5
+
+ 963320f Author: Bart Van Assche <bvanassche@acm.org> Date:   Mon Aug
+ 8 18:14:36 2011 +0200
+
+2011-08-08  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit a3b8654a232c563bc97cc9925cd98590a30c5bc5 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Mon Aug 8 17:24:18 2011 +0200
+
+2011-08-07  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit fa6cef5ca91df3a0b03455b68559d2bee248101c Merge: f5fe536
+
+ 8add0da Author: Bart Van Assche <bvanassche@acm.org> Date:   Sun Aug
+ 7 10:18:54 2011 +0200
+
+2011-08-07  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit a0dd3caf25926e43465718bf417a464c2fb36366 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Sun Aug 7 10:17:01 2011 +0200
+
+2011-08-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/deliver/deliverByNotify.c: 32 is too limited for
+
+ bigger tables; increase the max msg count to 128
+
+2011-08-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: make rollup and sync support
+
+ --rebase and change the default back to merge
+
+2011-08-05  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * README.win32: CHANGES: Win32: Documented how to use build.bat with
+
+ OpenSSL enabled
+
+2011-07-15  Bart Van Assche <bvanassche@acm.org>
+
+   * README.win32: CHANGES: Windows: Remove outdated instructions about
+
+ editing win32\libsnmp_dll\libsnmp.def from README.win32
+
+2011-07-15  Bart Van Assche <bvanassche@acm.org>
+
+   * README.win32: CHANGES: Win32: Document how to build 64-bit
+
+ executables for the x64/amd64 architecture
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit f5fe536e8fd6c48fe243decd31fac9cf1c92f4cc Merge: 7850ea1
+
+ 80928a8 Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Aug
+ 5 15:13:27 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 80928a8909cfab37f01b39a071a3e8ad85956222 Merge: f16a094
+
+ 0dbc869 Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Aug
+ 5 13:57:30 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0dbc869fec07d8e90dbd1c95493ee7cbc623c95c Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Aug 5 12:40:31 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Add
+
+ perl/agent/default_store/default_store.def and perl/SNMP/t
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 86c1e2b9679fec2cd799ba76005c3d60e9d47634 Merge: bcd8635
+
+ f16a094 Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Aug
+ 5 12:20:50 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 2f8d4f5796cbc1c7e967acdaa8019b24f1520a36 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Aug 5 12:02:51 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/parse.c: Unbreak the V5-4-patches - revert commit
+
+ d2c4768bd2efb48664434a831425c2dda85d7133 (CHANGES: libnetsnmp: PATCH
+ 3362233: from yaberauneya: Mute unnecessary cannot find module
+ noise).
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/mibII/snmp_mib.c, agent/mibgroup/mibII/snmp_mib.h: 
+
+ Unbreak the V5-4-patches branch - was broken by commit
+ bf7178b0b22587d43d1a80c269cd216bd5930214 (agent: change type of
+ snmp_enableauthentraps to long)
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/library/snmpusm.h: Unbreak the V5-4-patches
+
+ branch - was broken by commit
+ 0e6842fe080cec853b08cd2323015ababc381ce1 (CHANGES: snmptrapd: PATCH
+ 3383441: from sachinsurendran: Fix crash on 5.4.4 due to access of
+ freed memory).
+
+2011-08-05  Thomas Anders <tanders@users.sourceforge.net>
+
+   * NEWS: minor NEWS polish
+
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit bcd86350713822963d376eff582a92f43e426d6c Merge: 9c810a3
+
+ 7a20f71 Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Aug
+ 5 10:28:55 2011 +0200
+
+2011-08-05  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 3aa949fbdfc1a94a8340ad8baf8b314756a0bb9d Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Aug 5 10:26:15 2011 +0200
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 9c810a3b37b68573c40337e246e2faf299b77d31 Merge: 71cb2e8
+
+ 610d63f Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 10:42:08 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 943930e1e124385fd94738b6dcda37d29dc7ac7f Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Thu Aug 4 10:41:41
+ 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-4-patches' into
+
+ V5-4-patches
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 4edcb88dae8b2e59dc683e80d414fa7ecec36885 Merge: 65f3eef
+
+ 2dd9ed0 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 10:24:11 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : Merge remote-tracking branch 'origin/V5-5-patches' into
+
+ V5-5-patches
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit bc5ca03a04ab19c634a34d060b0b16b7484cb520 Merge: 88fddb7
+
+ 90c0e75 Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 4 19:13:07 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/snmp_client.c, snmplib/snmpusm.c: snmpusm: Fix recently
+
+ introduced compiler warnings
+
+2011-08-04  Stuart Henderson <t0jw2fu0kmg@users.sourceforge.net>
+
+   * agent/mibgroup/hardware/memory/memory_netbsd.c: CHANGES: openbsd:
+
+ PATCH 3357932: from t0jw2fu0kmg: Cleaning in memory_netbsd.c Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Vladimir Kondratiev <wulf2001@users.sourceforge.net>
+
+   * agent/mibgroup/hardware/fsys/fsys_getfsstats.c: CHANGES: agent:
+
+ PATCH 3386147: from wulf2001: fix UCD-SNMP-MIB::dskUsed Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 473d7e5cd4d411bba20eb85359d8728063301cbd Merge: a4e8b62
+
+ 88fddb7 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 09:28:22 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 2101bb2d7ad6db038c755aa9193c8ace0dbd4f58 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Thu Aug 4 09:28:06
+ 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * .gitignore: ignore *.orig and *.rej
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: help output describes rebase vs
+
+ merge better
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit f126a17c6a3063455a511940b023047abd9b48ee Merge: ad765f4
+
+ 77a4784 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 09:25:16 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 452e1707f209ec45e7c7f2a3040ef595fb9d1af6 Merge: dc755a6
+
+ b372e5a Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 09:25:03 2011 -0700
+
+2011-08-04  Stuart Henderson <t0jw2fu0kmg@users.sourceforge.net>
+
+   *  Makefile.in, acconfig.h, agent/mibgroup/hardware/cpu.h, 
+      agent/mibgroup/hardware/memory.h, 
+      agent/mibgroup/if-mib/data_access/interface.h, 
+      include/net-snmp/net-snmp-config.h.in, 
+      include/net-snmp/system/openbsd.h, 
+      include/net-snmp/system/openbsd4.h, 
+      include/net-snmp/system/openbsd5.h: CHANGES: openbsd: PATCH
+      3357927:
+
+ from t0jw2fu0kmg: Recognise openbsd5 Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: fix where arguments are set
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: split nssfpatchapply into two
+
+ parts: apply and commiting
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: patch using -N
+
+
+2011-08-04  David Arnold <dja@users.sourceforge.net>
+
+   *  man/default_store.3.bot, man/encode_keychange.1.def, 
+      man/fixproc.1.def, man/mib2c.conf.5.in, man/net-snmp-config.1.def,
+       man/netsnmp_agent_api.3.def, man/netsnmp_mib_api.3.def, 
+      man/snmp.conf.5.def, man/snmpbulkget.1.def,
+      man/snmpbulkwalk.1.def,  man/snmpcmd.1.def, man/snmpconf.1.def,
+      man/snmpd.8.def,  man/snmpd.conf.5.def, man/snmpd.examples.5.def, 
+      man/snmpdelta.1.def, man/snmpdf.1.def, man/snmpget.1.def, 
+      man/snmpgetnext.1.def, man/snmpnetstat.1.def, man/snmpset.1.def, 
+      man/snmpstatus.1.def, man/snmptable.1.def, man/snmptest.1.def, 
+      man/snmptranslate.1.def, man/snmptrap.1.def, man/snmptrapd.8.def, 
+      man/snmptrapd.conf.5.def, man/snmpusm.1.def, man/snmpvacm.1.def, 
+      man/snmpwalk.1.def: CHANGES: man: PATCH 3312861: from dja: Man
+      pages
+
+ hyphen-vs-minus cleanup Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Detect (and reject) OpenSSL
+
+ 1.0.0
+
+2011-08-04  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Command-line options for silent
+
+ install
+
+2011-08-04  Dave Shield <dts12@users.sourceforge.net>
+
+   * win32/dist/installer/net-snmp.nsi: Ensure Windows package
+
+ uninstalls completely.
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 81c63fb5c5e4abb9c29aca89bf9d694410086e97 Merge: 4a6920a
+
+ dc755a6 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 08:33:34 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_client.c: added spacing to match the later branches
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : manual merge
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * snmplib/snmp_client.c: removed accidentially duplicated code
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : manual merge
+
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : manual merge
+
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * snmplib/parse.c: CHANGES: libnetsnmp: PATCH 3362233: from
+
+ yaberauneya: Mute unnecessary cannot find module noise Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/agent_read_config.c, agent/snmp_vars.c, 
+      configure.d/config_os_headers: CHANGES: freebsd: PATCH 3363308:
+      from
+
+ yaberauneya: Fix compilation on FreeBSD 9.x with recent header
+ shuffling Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: allow nsrollup to take a --merge
+
+ flag for merging instead of rebasing
+
+2011-08-04  Sachin Surendran <sachinsurendran@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpusm.h, snmplib/snmp_client.c, 
+      snmplib/snmpusm.c: CHANGES: snmptrapd: PATCH 3383441: from
+
+ sachinsurendran: Fix crash on 5.4.4 due to access of freed memory Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * Makefile.in: CHANGES: freebsd: PATCH 3363328: from yaberauneya:
+
+ Add FreeBSD 9.x to supported OSes list Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * snmplib/parse.c: CHANGES: libnetsnmp: PATCH 3362233: from
+
+ yaberauneya: Mute unnecessary cannot find module noise Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/agent_read_config.c, agent/snmp_vars.c, 
+      configure.d/config_os_headers: CHANGES: freebsd: PATCH 3363308:
+      from
+
+ yaberauneya: Fix compilation on FreeBSD 9.x with recent header
+ shuffling Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: allow nsrollup to take a --merge
+
+ flag for merging instead of rebasing
+
+2011-08-04  Sachin Surendran <sachinsurendran@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpusm.h, snmplib/snmp_client.c, 
+      snmplib/snmpusm.c: CHANGES: snmptrapd: PATCH 3383441: from
+
+ sachinsurendran: Fix crash on 5.4.4 due to access of freed memory Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * Makefile.in: CHANGES: freebsd: PATCH 3363328: from yaberauneya:
+
+ Add FreeBSD 9.x to supported OSes list Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * snmplib/parse.c: CHANGES: libnetsnmp: PATCH 3362233: from
+
+ yaberauneya: Mute unnecessary cannot find module noise Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/agent_read_config.c, agent/snmp_vars.c, 
+      configure.d/config_os_headers: CHANGES: freebsd: PATCH 3363308:
+      from
+
+ yaberauneya: Fix compilation on FreeBSD 9.x with recent header
+ shuffling Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: allow nsrollup to take a --merge
+
+ flag for merging instead of rebasing
+
+2011-08-04  Sachin Surendran <sachinsurendran@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpusm.h, snmplib/snmp_client.c, 
+      snmplib/snmpusm.c: CHANGES: snmptrapd: PATCH 3383441: from
+
+ sachinsurendran: Fix crash on 5.4.4 due to access of freed memory Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * snmplib/parse.c: CHANGES: libnetsnmp: PATCH 3362233: from
+
+ yaberauneya: Mute unnecessary cannot find module noise Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: allow nsrollup to take a --merge
+
+ flag for merging instead of rebasing
+
+2011-08-04  Sachin Surendran <sachinsurendran@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpusm.h, snmplib/snmp_client.c, 
+      snmplib/snmpusm.c: CHANGES: snmptrapd: PATCH 3383441: from
+
+ sachinsurendran: Fix crash on 5.4.4 due to access of freed memory Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/mibgroup/hardware/cpu/cpu_sysctl.c, 
+      agent/mibgroup/hardware/memory/memory_freebsd.c, 
+      agent/mibgroup/mibII/ipAddr.c, snmplib/keytools.c,
+      snmplib/scapi.c:
+
+ CHANGES: building: PATCH 3383951: from yaberauneya: Fix -Wunused
+ compile warnings with FreeBSD/NetBSD Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/mibgroup/hardware/cpu/cpu_sysctl.c, 
+      agent/mibgroup/hardware/memory/memory_freebsd.c, 
+      agent/mibgroup/mibII/ipAddr.c, snmplib/keytools.c,
+      snmplib/scapi.c:
+
+ CHANGES: building: PATCH 3383951: from yaberauneya: Fix -Wunused
+ compile warnings with FreeBSD/NetBSD Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit e878abbdb1808ef83e0a8074536fb54e13219a8b Merge: 403de42
+
+ 878fbf4 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 07:55:00 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 250afa06892fd897ac31e3836a7ffc9e2b4cf7b9 Merge: 2c14c1c
+
+ 3afc5e0 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 07:51:33 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 578cd7cce351ae8d904ec3d80be9ba6d1d48a712 Merge: 25988be
+
+ f3bc551 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Thu Aug 4 07:50:56 2011 -0700
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : autoconf
+
+
+2011-08-04  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   * configure.d/config_os_struct_members: CHANGES: building: PATCH
+
+ 3383949: from yaberauneya: Fix autoconf tests for sys/mbuf.h Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: prompt for patch and an area, and
+
+ use the proper CHANGES line format
+
+2011-08-04  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: Use fetch --all and rebase as
+
+ suggested by Bart for speed improvements
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit d6a1a89e6f648951a9b831932d3cc230821f2d37 Merge: dcb712f
+
+ 872e013 Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 4 12:06:18 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 44969b4e57c27194e5bd357bc45275feb8695d22 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Jul 8 20:52:25 2011 +0200
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/winExtDLL.c: CHANGES: Win32: winExtDLL: Invoke
+
+ SnmpUtilOidFree() before SnmpUtilOidCpy(). It's not clear yet why
+ the original code did not make snmpwalk trigger a memory leak.
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit dcb712ffc86b33583000ef4ae9a51ced25cd15bf Merge: e85cfa5
+
+ 98623ef Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 4 11:36:17 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 8a01ec6423d400c4a13ccac68a3791d0218a0885 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Aug 4 11:19:17 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit e85cfa599b23b76d97913c96b5d703bff6ba4944 Merge: b056ee6
+
+ e21eef2 Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Aug
+ 4 08:44:43 2011 +0200
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/host/data_access/swinst_pkginfo.c: CHANGES: agent:
+
+ Avoid that a MIB walk on the host resources MIB triggers a crash on
+ Fedora 15
+
+2011-08-04  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit b056ee6eb53909ad04f16ec26d2690d7a083192a Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Aug 4 07:59:04 2011 +0200
+
+2011-08-03  Bart Van Assche <bvanassche@acm.org>
+
+   *  agent/agent_trap.c, agent/helpers/table_array.c, 
+      agent/mibgroup/agentx/master_admin.c, 
+      agent/mibgroup/agentx/protocol.c, 
+      agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c, 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_acc
+       ess.c, agent/mibgroup/host/data_access/swinst_pkginfo.c, 
+      agent/mibgroup/host/data_access/swrun_procfs_status.c, 
+      agent/mibgroup/if-mib/data_access/interface_linux.c, 
+      agent/mibgroup/ip-mib/data_access/systemstats_linux.c, 
+      agent/mibgroup/mibII/kernel_linux.c, 
+      agent/mibgroup/rmon-mib/data_access/etherstats_linux.c, 
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access
+       .c, agent/mibgroup/smux/smux.c, agent/mibgroup/snmpv3/usmUser.c, 
+      agent/mibgroup/ucd-snmp/versioninfo.c, agent/snmp_agent.c, 
+      apps/snmpbulkget.c, apps/snmptls.c, apps/snmptrapd_log.c, 
+      perl/SNMP/SNMP.xs, snmplib/container_iterator.c, 
+      snmplib/dir_utils.c, snmplib/snmp_api.c, snmplib/snmp_client.c, 
+      snmplib/snmp_enum.c, snmplib/snmp_openssl.c, snmplib/snmpusm.c, 
+      snmplib/transports/snmpTLSTCPDomain.c: CHANGES: snmplib, snmpd:
+
+ perl: Eliminate dead variables
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit ae8e3ecd2df4cf37625944aded1dfe4735d44eea Merge: 73187ce
+
+ 9335e19 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Wed Aug 3 14:37:36 2011 -0700
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 794f9a69d7eb642268200b0a4b199151def66ed0 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Wed Aug 3 14:36:25
+ 2011 -0700
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a comment
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: at end of nsrollup mention that
+
+ now would be a good time to run nssync
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: a new nssync() function for
+
+ push/pulling active branches
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a comment
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: at end of nsrollup mention that
+
+ now would be a good time to run nssync
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: a new nssync() function for
+
+ push/pulling active branches
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: at end of nsrollup mention that
+
+ now would be a good time to run nssync
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: a new nssync() function for
+
+ push/pulling active branches
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a comment
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: at end of nsrollup mention that
+
+ now would be a good time to run nssync
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: a new nssync() function for
+
+ push/pulling active branches
+
+2011-08-03  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-mib.h: Reenable IP-MIB::ipDefaultRouterTable
+      Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: A new function: nssfpatchapply
+
+ that auto-pulls git command line info from SF
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-ctx-get.m2i: added variables names to
+
+ the generated error messages.
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c: Wording changes to
+
+ help describe contexts better
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/Makefile.in, local/mib2c-conf.d/generic-get-U64.m2i: Added
+
+ the missing U64 m2i file
+
+2011-08-03  Garrett Cooper <yaberauneya@users.sourceforge.net>
+
+   *  agent/mibgroup/ip-mib.h: Reenable IP-MIB::ipDefaultRouterTable
+      Signed-off-by: Wes Hardaker <hardaker@users.sourceforge.net>
+
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: A new function: nssfpatchapply
+
+ that auto-pulls git command line info from SF
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-ctx-get.m2i: added variables names to
+
+ the generated error messages.
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c: Wording changes to
+
+ help describe contexts better
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/Makefile.in, local/mib2c-conf.d/generic-get-U64.m2i: Added
+
+ the missing U64 m2i file
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: A new function: nssfpatchapply
+
+ that auto-pulls git command line info from SF
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-ctx-get.m2i: added variables names to
+
+ the generated error messages.
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c: Wording changes to
+
+ help describe contexts better
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/Makefile.in, local/mib2c-conf.d/generic-get-U64.m2i: Added
+
+ the missing U64 m2i file
+
+2011-08-03  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: A new function: nssfpatchapply
+
+ that auto-pulls git command line info from SF
+
+2011-07-18  Ilya Yanok <yanok@emcraft.com>
+
+   * agent/agent_trap.c, agent/mibgroup/mibII/snmp_mib.c: agent: change
+
+ type of snmp_enableauthentraps to long Type of snmp_enableauthentraps variable is changed from int to long.
+ This fixes the bug with writing to snmpEnableAuthenTraps if server
+ is compiled for 64bit (snmpset reports wrong length). This bug was
+ introduced a long time ago (by faeecd0 commit).  Actually this is a 'less effort' type of fix but I wonder why we
+ need a long to store an INTEGER in the first place? Signed-off-by: Ilya Yanok <yanok@emcraft.com> Signed-off-by: Wes
+ Hardaker <hardaker@users.sourceforge.net>
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/generic-ctx-get.m2i: added variables names to
+
+ the generated error messages.
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c: Wording changes to
+
+ help describe contexts better
+
+2011-08-02  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/Makefile.in, local/mib2c-conf.d/generic-get-U64.m2i: Added
+
+ the missing U64 m2i file
+
+2011-08-03  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 6ad7e28ff9e5e4ebc1358ee39cc9796a44a1bee7 Merge: f2832e3
+
+ 1e154ce Author: Bart Van Assche <bvanassche@acm.org> Date:   Wed Aug
+ 3 19:15:24 2011 +0200
+
+2011-08-03  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 61b178f1ee8952aa03aa3b1ba51f4a6655e47f01 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Wed Aug 3 18:09:47 2011 +0200
+
+2011-08-03  Bart Van Assche <bvanassche@acm.org>
+
+   * include/net-snmp/types.h: Whitespace-only change: fix indentation
+
+ of an #include directive
+
+2011-08-02  Bart Van Assche <bvanassche@acm.org>
+
+   * perl/NetSNMP.xs: CHANGES: Perl: Remove file perl/NetSNMP.xs
+
+ because it breaks the Windows build.  To Wes: if you can tell me how to reproduce the problem you observed
+ I'll try to find a portable fix.  This reverts commit d54871f5293675c8058ecce88fed5b646c836323 ("Added
+ a bogus empty .xs file for bundling on newer perl that wants
+ "something"").
+
+2011-08-02  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0f489b199adab48b1633ebcaf5ff5a7c22c4cb89 Merge: f4eaa02
+
+ 72a59bc Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Aug
+ 2 10:11:53 2011 +0200
+
+2011-08-02  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 7fcc0b8032f8da5b7bc30059af0ba656eae71091 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Mon Aug 1 14:11:28 2011 +0200
+
+2011-08-02  Bart Van Assche <bvanassche@acm.org>
+
+   *   * 
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_dat
+       a_access.c: Fix a compiler warning in
+
+
+ agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c
+
+2011-08-01  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Add file names and patterns for output
+
+ files generated during the Windows build
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Sort alphabetically
+
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Add apps/sshtosnmp
+
+
+2011-08-01  Bart Van Assche <bvanassche@acm.org>
+
+   *  .gitignore, perl/TrapReceiver/const-c.inc, 
+      perl/TrapReceiver/const-xs.inc: Remove two generated Perl files.
+
+
+2011-08-02  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit f4eaa02d9b076a67d7272de7eef8e9dfbf189bbf Merge: 40125d8
+
+ adadcb9 Author: Thomas Anders <tanders@users.sourceforge.net> Date:
+ Tue Aug 2 00:57:51 2011 +0200
+
+2011-08-02  Thomas Anders <tanders@users.sourceforge.net>
+
+   * dist/nsb-functions: suppress "ok" test output in nsb
+
+
+2011-08-01  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit 40125d8539cd89f952fbc24588c5e81e9cd821fe Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Mon Aug 1
+ 13:58:33 2011 +0200
+
+2011-08-01  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 5acf0d2ceb3977964ed39f003073ba64138c2ebd Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Sun Jul 31 23:57:41
+ 2011 +0200
+
+2011-07-31  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit a7722a81f9cb7aa8670e7c238601362a31087acc Merge: 242e179
+
+ ae9ac6c Author: Bart Van Assche <bvanassche@acm.org> Date:   Sun Jul
+ 31 09:11:45 2011 +0200
+
+2011-07-31  Bart Van Assche <bvanassche@acm.org>
+
+   * apps/sshtosnmp.c: Fix an incorrect source code comment: there is
+
+ no requirement in the ANSI C standard that stack variables should be
+ initialized to zero.
+
+2011-07-31  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 242e1797b2694a0689856ae36d05d3413aaf8d77 Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Sun Jul 31 01:44:09
+ 2011 +0200
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   * snmplib/system.c: CHANGES: building: build fix for systems lacking
+
+ getaddrinfo() and EAI_FAIL (e.g. HP-UX 10.20/11.00)
+
+2011-07-30  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 18df759f19b975c449d010bb0a162119bb68360d Merge: 54a44cb
+
+ 7050718 Author: Bart Van Assche <bvanassche@acm.org> Date:   Sat Jul
+ 30 16:39:13 2011 +0200
+
+2011-07-30  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 82d73fb11be3ae31f39c9d618d5388dc9b1006d7 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Jul 29 20:51:27 2011 +0200
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  configure, include/net-snmp/net-snmp-config.h.in, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: autoreconf
+
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  configure, include/net-snmp/net-snmp-config.h.in, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: autoreconf
+
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 109f6694d788f48ebd9fc0a1e90c45abc37bea20 Author: Thomas
+
+ Anders <tanders@users.sourceforge.net> Date:   Sat Jul 30 14:22:19
+ 2011 +0200
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   * : commit 7d8100eed459a1ff1a20c067364fa6cb47491309 Merge: 116c24f
+
+ 9e47ac4 Author: Thomas Anders <tanders@users.sourceforge.net> Date:
+ Sat Jul 30 00:20:01 2011 +0200
+
+2011-07-30  Thomas Anders <tanders@users.sourceforge.net>
+
+   * dist/nsb-functions, dist/nsb-nightly, dist/nsb-package: minor nsb
+
+ fixes/enhancements from my old svn tree
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 116c24f0f7fb3f99ba646730f61c56d1ae23ba41 Merge: 982fb7f
+
+ 4fc0b8b Author: Bart Van Assche <bvanassche@acm.org> Date:   Fri Jul
+ 29 11:31:20 2011 +0200
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit c48173c06a9eaadbf81e6b4962d55ef0a54db251 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Fri Jul 29 10:27:39 2011 +0200
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * configure, ltmain.sh, m4/libtool.m4: Rerun autoreconf
+
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Sort alphabetically
+
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Add apps/sshtosnmp
+
+
+2011-07-29  Bart Van Assche <bvanassche@acm.org>
+
+   *  agent/mibgroup/host/hr_storage.h, 
+      agent/mibgroup/host/hrh_storage.c: Fix two filenames in host mib
+
+ source code comments.
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit 982fb7fd8bab25c4322aa62c50437036ce296e3e Merge: 1eda675
+
+ 3458128 Author: Jan Safranek <jsafranek@users.sourceforge.net> Date:
+ Thu Jul 28 16:24:03 2011 +0200
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: Fix potential
+
+ sigsegv when an ifTable entry is removed as result of both
+ interface_replace_old and interface_fadeout at the same time.
+
+2011-07-28  Bart Van Assche <bvanassche@acm.org>
+
+   * apps/sshtosnmp.c: Make apps/sshtosnmp.c build again (was broken by
+
+ commit 612247cdf14c1e745c384cefe1f3fde3e445b347 that changed
+ MSG_NOSIGNAL into NETSNMP_NOSIGNAL)
+
+2011-07-28  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 1eda6753b7fe7d3b3f217c09254ec02d0ee1d0ce Merge: db8b860
+
+ a2f9ece Author: Bart Van Assche <bvanassche@acm.org> Date:   Thu Jul
+ 28 15:32:28 2011 +0200
+
+2011-07-28  Niels Baggesen <nba@users.sourceforge.net>
+
+   * configure.d/config_os_functions, configure.d/config_os_libs1: 
+
+ CHANGES: snmpd: Restore storage tables on Linux
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: Document interface_replace_old option.
+
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: CHANGES:
+
+ snmpd: added 'interface_replace_old' option to remove old entries in
+ ifTable when an interface with the same name as already exising one
+ appears.  E.g. remove old ppp0 interface when new ppp0 shows up.
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: Document the interface_fadeout option.
+
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: Allow ifTable
+
+ entries to be deleted immediately when appropriate interface
+ disappears (i.e. interface_fadeout = 0 works as expected).
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: CHANGES:
+
+ snmpd: added 'interface_fadeout' configuration option to set
+ lifetime of ifTable entries of removed interfaces.  Previous lifetime was hardcoded 5 minutes, now it's configurable.
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit d62a0eb9070b4d8d9fe2bcfdb4d53d37ef814f9b Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Thu Jul 28
+ 14:49:08 2011 +0200
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: CHANGES:
+
+ snmpd: added 'interface_replace_old' option to remove old entries in
+ ifTable when an interface with the same name as already exising one
+ appears.  E.g. remove old ppp0 interface when new ppp0 shows up.
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * man/snmpd.conf.5.def: Document the interface_fadeout option.
+
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: Allow ifTable
+
+ entries to be deleted immediately when appropriate interface
+ disappears (i.e. interface_fadeout = 0 works as expected).
+
+2011-07-28  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c: CHANGES:
+
+ snmpd: added 'interface_fadeout' configuration option to set
+ lifetime of ifTable entries of removed interfaces.  Previous lifetime was hardcoded 5 minutes, now it's configurable.
+
+2011-07-28  Thomas Anders <tanders@users.sourceforge.net>
+
+   *  apps/sshtosnmp.c, include/net-snmp/library/snmpUDPBaseDomain.h, 
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h, 
+      snmplib/transports/snmpUDPBaseDomain.c: CHANGES: building: build
+      fix
+
+ for systems lacking MSG_DONTWAIT
+
+2011-07-27  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/mibII/tcp.c: CHANGES: snmpd: Make
+
+ TCP-MIB::tcpCurrEstab work again. Was broken in 5.7 by the
+ introduction of the "features" feature.
+
+2011-07-27  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit fb88074fbbc268c7f0509491535aec5fecb05684 Merge: a743ae5
+
+ 3821273 Author: Jan Safranek <jsafranek@users.sourceforge.net> Date:
+ Wed Jul 27 14:47:25 2011 +0200
+
+2011-07-27  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit 31fa07cd9ffde46d41d2b5838c3fc4d01548bfb5 Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Wed Jul 27
+ 14:45:47 2011 +0200
+
+2011-07-27  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * agent/snmpd.c: CHANGES: snmpd: run signal handlers when select()
+
+ is interrupted.  This behavior is indicated in comment on line 1244, but it was not
+ actually done.
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 2e9466d7f59d65d050277735e4ed9d30719ff752 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Tue Jul 26 13:10:04 2011 +0200
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 7708296760eaf5a80d8540746c9c249826fd1bfe Merge: ea11e5e
+
+ cd6e382 Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Jul
+ 26 16:21:41 2011 +0200
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/snmpUDPIPv6Domain.c: Clarify an IPv6 source code comment
+
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/agent_handler.c, man/netsnmp_handler.3: Spelling fix:
+
+ definedy -> defined
+
+2011-07-26  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/helpers/stash_cache.c, man/netsnmp_stash_cache.3: Spelling
+
+ fix: aleviate -> alleviate
+
+2011-07-26  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit dd2c47133493d5a00de6b3cdbcfac7e9d44b6ffe Merge: f9ccbc7
+
+ ea11e5e Author: Jan Safranek <jsafranek@users.sourceforge.net> Date:
+ Tue Jul 26 14:25:28 2011 +0200
+
+2011-07-26  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit c5a8464c42a94c250ee2dfa2a473109a734203d8 Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Tue Jul 26
+ 14:24:55 2011 +0200
+
+2011-07-25  Jan Safranek <jsafranek@users.sourceforge.net>
+
+   * : commit f9ccbc772666134d1d178b505af9ddcdd9ed4244 Author: Jan
+
+ Safranek <jsafranek@users.sourceforge.net> Date:   Mon Jul 25
+ 15:02:15 2011 +0200
+
+2011-07-20  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit b0c0a355d5f601a11be4914fbf713716abd30a29 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Tue Jul 19
+ 18:36:11 2011 -0700
+
+2011-07-20  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit c14fc38614baf10d517136f0480907b7f03d8d74 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Wed Jul 20
+ 13:44:59 2011 -0700
+
+2011-07-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/testhandler.c: remove broken whitespace lines that
+
+ leads to reading confusion
+
+2011-07-20  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit ebdd216c074bf41cd3a084bd14689cf01c887b31 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Tue Jul 19
+ 18:36:11 2011 -0700
+
+2011-07-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * .gitignore: updated gitignore to ignore a number of auto-generated
+
+ files
+
+2011-07-19  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/mibgroup/testhandler.c: remove broken whitespace lines that
+
+ leads to reading confusion
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit df5f70055cf9be33f05fb50abe2f5a81eac092ad Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Tue Jul 19 11:07:19 2011 +0200
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit f596f18242dcdfd6cf49c88da1d836c16e260cac Merge: 0f309b4
+
+ 70dee4b Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Jul
+ 19 11:33:28 2011 +0200
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   *  agent/agent_trap.c, agent/mibgroup/mibII/snmp_mib.c, 
+      agent/mibgroup/mibII/snmp_mib_5_5.c: CHANGES: snmpd: PATCH:
+      3369680:
+
+ from Ilya Yanok: change snmp_enableauthentraps from int to long such
+ that modifying the corresponding MIB object does not overwrite
+ memory in 64-bit builds.
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * agent/mibgroup/agentx/subagent.c: CHANGES: snmpd: PATCH: 3370645:
+
+ from Bill Fenner: Fix AgentX subagent four byte leak
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test harness: do
+
+ not invoke ISRUNNING() on MinGW.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test harness:
+
+ cleanup - remove code that became superfluous.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: MinGW: Do not
+
+ assume that kill.exe reports via its exit status whether the
+ signalled process still exists.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ Remove the function WAITORDIE() from simple_eval_tools.sh since it
+ is never invoked.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ Simplify WAITFOR() in simple_eval_tools.sh. The code that handled
+ invocation of WAITFOR() with zero or one arguments has been dropped
+ since WAITFOR() is always invoked with two arguments.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test harness:
+
+ minor simplification.
+
+2011-07-08  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/default/T059trapdtraphandle_simple: CHANGES:
+
+ testing: Skip test 59 if SIGHUP is not supported. Makes test 59 pass
+ on MinGW.
+
+2011-07-06  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: MinGW fix
+
+
+2011-07-06  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test framework
+
+ refactoring: Introduce WAITFORNOTCOND().
+
+2011-07-05  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ Make STOPPROG send SIGTERM repeatedly. This fixes a race where
+ SIGTERM could be sent before the SIGTERM signal handler was set up,
+ especially when running the regression tests under Valgrind.
+ CHANGES: testing: Make the SNMP_VERBOSE=1 output even more verbose.
+
+2011-07-05  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Test harness
+
+ refactoring: introduce ECHOSENDSIGTERM() and ECHOSENDSIGKILL()
+
+2011-07-05  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: Fix a bug in
+
+ testing/fulltests/support/simple_eval_tools.sh that was introduced
+ in commit 938d75c.
+
+2011-07-01  Bart Van Assche <bvanassche@acm.org>
+
+   * .gitignore: .gitignore: Ignore *.exe files generated by the Win32
+
+ build
+
+2011-07-04  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ Test only once during a test whether the shell supports sub-second
+ sleeping instead of repeatedly.
+
+2011-07-04  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_run: CHANGES: testing: Changed
+
+ default timeout from 1s to 10s when the regression tests are run
+ under Valgrind
+
+2011-07-04  Bart Van Assche <bvanassche@acm.org>
+
+   * testing/fulltests/support/simple_eval_tools.sh: CHANGES: testing:
+
+ After having sent SIGTERM to snmpd or snmptrapd, wait until the
+ process has stopped before sending SIGKILL. This race condition was
+ hit most easily when running the regression tests under Valgrind.
+ CHANGES: testing: Check PID file existence after having read it
+ instead of before. This fixes the race condition where the PID file
+ disappeared after the existence check and before it was read.
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+   * agent/mibgroup/agentx/protocol.c: Fix a bug in a debug statement
+
+ introduced by patch 3310250 / r20494: use %ld to print a value of
+ type oid instead of %d.  This patch is a combination of the following to V5.6 SVN patches: git-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20511 06827809-a52a-0410-b366-d66718629dedgit-svn-id:
+
+ file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20512 06827809-a52a-0410-b366-d66718629ded
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 0f309b493c21d3c6914487514b41560754ffcdf9 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Tue Jul 19 08:37:50 2011 +0200
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit 1b7454bc281568470a1300476d2edb4f411e6029 Merge: 8d9dcc8
+
+ 690ea7d Author: Bart Van Assche <bvanassche@acm.org> Date:   Tue Jul
+ 19 08:31:28 2011 +0200
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * apps/snmptrapd.c: CHANGES: snmptrapd: Add missing newline
+
+ character in a log message
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * apps/snmptrapd.c: CHANGES: snmptrapd: Invoke shutdown_perl() when
+
+ shutting down
+
+2011-07-19  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/snmpUDPIPv6Domain.c: Spelling fix: branket -> bracket
+
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   * configure, include/net-snmp/net-snmp-config.h.in: Run autoreconf.
+
+ Fixes build breakage caused by patch
+ d588ec853bd0531f212fcbf51b962b96c6828b59 (RPM 4.9 support)
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit d617d84f83fa69ed9fa9f98efc4afaf880d121f2 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Jul 14 16:43:47 2011 +0200
+
+2011-07-14  Bart Van Assche <bvanassche@acm.org>
+
+   * snmplib/transports/snmpIPv6BaseDomain.c: CHANGES: snmplib: Make
+
+ netsnmp_ipv6_fmtaddr() show the IPv6 scope ID
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   *  configure, configure.d/config_os_functions, 
+      include/net-snmp/net-snmp-config.h.in, 
+      snmplib/transports/snmpIPv6BaseDomain.c, 
+      win32/net-snmp/net-snmp-config.h, 
+      win32/net-snmp/net-snmp-config.h.in: CHANGES: Win32: Add support
+      for
+
+ IPv6 address scope ID
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   * configure, include/net-snmp/net-snmp-config.h.in: Run autoreconf
+
+
+2011-07-17  Bart Van Assche <bvanassche@acm.org>
+
+   * : commit a56721a3e7754e389daa7e8a3d5792899edc9de3 Author: Bart Van
+
+ Assche <bvanassche@acm.org> Date:   Thu Jul 14 16:18:32 2011 +0200
+
+2011-07-15  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 844d4ce867bf3abe7b7536c5dbfba401937a8d4a Merge: eed0198
+
+ 61036a8 Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Fri Jul 15 15:33:10 2011 -0700
+
+2011-07-15  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit 851bcf53fcd13cdf0ba9f12e5d603e73f8bb9611 Author: Wes
+
+ Hardaker <hardaker@users.sourceforge.net> Date:   Fri Jul 15
+ 15:32:49 2011 -0700
+
+2011-07-14  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * agent/helpers/cache_handler.c: fix a typo
+
+
+2011-07-13  Robert Story <rstory@localhost>
+
+   * snmplib/parse.c: CHANGES: snmplib:  tweak patch 3044888 to restore
+
+ proper non-error return during mib loading
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : added 5.7 patches to the branch list and fix the release file
+
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : added 5.7 patches to the branch list
+
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/release: a copy of the release file applied to the older
+
+ branches
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added 5.7 patches
+
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * : commit c431231e8f0a39d1950bc72c32e3402f90fa8030 Merge: 56fee40
+
+ a2ac24d Author: Wes Hardaker <hardaker@users.sourceforge.net> Date:
+ Mon Jul 11 19:33:17 2011 -0700
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * local/gittools/shell-functions: added a copy of the
+
+ shell-functions to the older branch
+
+2011-07-11  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/release: a copy of the release file applied to the older
+
+ branches
+
+----------------------------------------------------------------------
+
+Changes: V5.7.rc3 -> V5.7
+
+2011-07-01  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile, 
+      dist/net-snmp.spec: Version number update: 5.7
+
+
+2011-07-01  Robert Story <rstory@users.sourceforge.net>
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h, 
+      snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpIPv4BaseDomain.c, 
+      snmplib/transports/snmpTLSBaseDomain.c: Revert "fix dtlsudp
+
+ transport address format function" This reverts commit 2ab3a6e6f2fcc1ff3e5f0fb5dc5d05e498820d89.   - for some reason I saw 'rc' and my brain interpreted it as    'pre-release'. What can I say, it was late. :-/
+
+2011-07-01  Robert Story <rstory@localhost>
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h, 
+      snmplib/transports/snmpDTLSUDPDomain.c, 
+      snmplib/transports/snmpIPv4BaseDomain.c, 
+      snmplib/transports/snmpTLSBaseDomain.c: fix dtlsudp transport
+
+ address format function  - update ipv4 fmtaddr to handle sockaddr and to check    size before assuming data is addr pair  - move dtlsudp functions to extract addr(s) to tlsbase
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+   * dist/makerelease.xml: fix tag pushing
+
+----------------------------------------------------------------------
+
+Changes: V5.7.rc2 -> V5.7.rc3
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* FAQ, README, configure, configure.ac, dist/Makefile,
+	dist/net-snmp.spec: Version number update: 5.7.rc3
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* dist/makerelease.xml: remove unneeded comment
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* dist/makerelease.xml: misc publication fixes found while
+	publishing
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* include/net-snmp/net-snmp-config.h.in: ran autoheader to add the
+	missing template ifdefs
+
+----------------------------------------------------------------------
+
+Changes: V5.7.rc1 -> V5.7.rc2
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* dist/makerelease.xml: use the new run-autoconf script
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* dist/run-autoconf: A script to invoke the correct version of the
+	autoconf tool
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* dist/makerelease.xml: remaining command line changes for svn ->
+	git
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* dist/makerelease.xml: make the branch echo output and svn update
+	converted to git equivalents
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* dist/makerelease.xml: pull the branch info from git
+
+2011-06-29  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* dist/release: noted that the master branch is in rc state
+
+2011-06-28  Wes Hardaker <opensource@hardakers.net>
+
+	* FAQ: Mention the Git wiki page
+
+2011-06-28  Wes Hardaker <opensource@hardakers.net>
+
+	* local/gittools/shell-functions: use git merge with the --log
+	option
+
+2011-06-28  Bart Van Assche <bvanassche@acm.org>
+
+	* .gitignore: Add .gitignore
+
+2011-06-28  Wes Hardaker <opensource@hardakers.net>
+
+	* FAQ: We're now using git!
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* local/gittools/shell-functions: use rebase to put local changes at
+	the top of the remote branches git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20533 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* local/gittools/shell-functions: added a feature to not roll
+	branches currenly in rc phase git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20532 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* local/gittools/shell-functions: added a nsrollup function for
+	rolling branches upward.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20531 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* local/gittools/shell-functions: created an nspatchapply function
+	to apply a previously tested patch git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20530 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* local/gittools/shell-functions: added a nstrypatch function to
+	test patch application against various branches git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20529 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* local/gittools/shell-functions: added verbose output git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20528 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* local/gittools/shell-functions: more prefix changes and better
+	setting of default values git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20527 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-27  Wes Hardaker <hardaker@users.sourceforge.net>
+
+	* local/gittools/shell-functions: use ns prefixes instead of generic
+	snmp prefixes git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20526 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+	* ChangeLog: version update git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20524 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+	* configure, configure.in, include/net-snmp/net-snmp-config.h.in: 
+	Missing check for rpmts.h git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20523 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+	* configure: Version number update git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20522 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+	* man/netsnmp_agent.3, man/netsnmp_agent_registry.3,
+	man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,
+	man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,
+	man/netsnmp_cache_handler.3, man/netsnmp_callback.3,
+	man/netsnmp_container.3, man/netsnmp_data_list.3,
+	man/netsnmp_debug.3, man/netsnmp_default_store.3,
+	man/netsnmp_handler.3, man/netsnmp_instance.3,
+	man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,
+	man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,
+	man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,
+	man/netsnmp_multiplexer.3,
+	man/netsnmp_netsnmp_agent_request_info_s.3,
+	man/netsnmp_netsnmp_column_info_t.3,
+	man/netsnmp_netsnmp_data_list_s.3,
+	man/netsnmp_netsnmp_handler_registration_s.3,
+	man/netsnmp_netsnmp_iterator_info_s.3,
+	man/netsnmp_netsnmp_mib_handler_access_methods.3,
+	man/netsnmp_netsnmp_mib_handler_methods.3,
+	man/netsnmp_netsnmp_mib_handler_s.3,
+	man/netsnmp_netsnmp_request_info_s.3,
+	man/netsnmp_netsnmp_table_registration_info_s.3,
+	man/netsnmp_netsnmp_table_request_info_s.3,
+	man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,
+	man/netsnmp_read_config.3, man/netsnmp_read_only.3,
+	man/netsnmp_row_merge.3, man/netsnmp_scalar.3,
+	man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,
+	man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,
+	man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,
+	man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,
+	man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,
+	man/netsnmp_table.3, man/netsnmp_table_array.3,
+	man/netsnmp_table_container.3, man/netsnmp_table_data.3,
+	man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,
+	man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,
+	man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,
+	man/netsnmp_table_rows.3, man/netsnmp_tdata.3, man/netsnmp_util.3,
+	man/netsnmp_utilities.3, man/netsnmp_variable_list.3,
+	man/netsnmp_watcher.3: documentation update git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20521 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-24  Dave Shield <dts12@users.sourceforge.net>
+
+	* FAQ, README, configure, configure.in, dist/net-snmp.spec,
+	snmplib/snmp_version.c: Version number update git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20520 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-23  Dave Shield <dts12@users.sourceforge.net>
+
+	* agent/mibgroup/host/hr_swinst.c, configure, configure.in,
+	include/net-snmp/net-snmp-config.h.in: Tweak RPM handling to work
+	with library version 4.9 Based on a patch by Jan Safranek git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20519 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-22  Dave Shield <dts12@users.sourceforge.net>
+
+	* agent/mibgroup/host/hr_swinst.c: Provide a framework for reading
+	RPM package information from a cache directory (rather than querying
+	the RPMdb directly).  My apologies to Jeff Johnson for the delay in adding this
+	functionality.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20518 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-22  Dave Shield <dts12@users.sourceforge.net>
+
+	* ChangeLog: version update git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20516 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-22  Dave Shield <dts12@users.sourceforge.net>
+
+	* configure: Version number update git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20515 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-22  Dave Shield <dts12@users.sourceforge.net>
+
+	* FAQ, README, configure, configure.in, dist/net-snmp.spec,
+	snmplib/snmp_version.c: Version number update git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-3-patches@20514 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-21  Dave Shield <dts12@users.sourceforge.net>
+
+	* agent/mibgroup/host/data_access/swinst.h,
+	agent/mibgroup/host/data_access/swinst_pkginfo.c: Provide a
+	framework for reading RPM package information from a cache directory
+	(rather than querying the RPMdb directly).  My apologies to Jeff Johnson for the delay in adding this
+	functionality.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20513 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-21  Dave Shield <dts12@users.sourceforge.net>
+
+	* agent/mibgroup/host/data_access/swinst.h,
+	agent/mibgroup/host/data_access/swinst_pkginfo.c: Provide a
+	framework for reading RPM package information from a cache directory
+	(rather than querying the RPMdb directly).  My apologies to Jeff Johnson for the delay in adding this
+	functionality.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20513 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-21  Dave Shield <dts12@users.sourceforge.net>
+
+	* agent/mibgroup/host/data_access/swinst.h,
+	agent/mibgroup/host/data_access/swinst_pkginfo.c: Provide a
+	framework for reading RPM package information from a cache directory
+	(rather than querying the RPMdb directly).  My apologies to Jeff Johnson for the delay in adding this
+	functionality.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/trunk@20513 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-19  Bart Van Assche <bvassche@users.sourceforge.net>
+
+	* agent/mibgroup/agentx/protocol.c: Follow-up for r20511: really use
+	the proper format specification.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20512 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-19  Bart Van Assche <bvassche@users.sourceforge.net>
+
+	* agent/mibgroup/agentx/protocol.c: Follow-up for r20511: really use
+	the proper format specification.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20512 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+	* agent/mibgroup/agentx/protocol.c: Fix a bug in a debug statement
+	introduced by patch 3310250 / r20494: use %ld to print a value of
+	type oid instead of %d.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-6-patches@20511 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+	* agent/mibgroup/agentx/protocol.c: Fix a bug in a debug statement
+	introduced by patch 3310250 / r20494: use %ld to print a value of
+	type oid instead of %d.  git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20511 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+	* agent/helpers/cache_handler.c: Use %p to print a pointer instead
+	of %ld git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-4-patches@20510 06827809-a52a-0410-b366-d66718629ded
+
+2011-06-17  Bart Van Assche <bvassche@users.sourceforge.net>
+
+	* agent/helpers/cache_handler.c: Use %p to print a pointer instead
+	of %ld git-svn-id:
+
+	file:///home/hardaker/lib/sf-bkups/net-snmp-convert-svnrepo/branches/V5-5-patches@20510 06827809-a52a-0410-b366-d66718629ded
+
+----------------------------------------------------------------------
+
+Changes: V5.7.pre2 -> V5.7.rc1
+
+2011-06-13 16:11  hardaker
 
    * configure:
 
-   Version number update
+   run correct version of autoconf
 
-2011-06-24 12:08  dts12
+2011-06-13 16:10  hardaker
 
-   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3,   
-      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,   
-      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,   
-      man/netsnmp_cache_handler.3, man/netsnmp_callback.3,   
-      man/netsnmp_container.3, man/netsnmp_data_list.3,   
-      man/netsnmp_debug.3, man/netsnmp_default_store.3,   
-      man/netsnmp_handler.3, man/netsnmp_instance.3,   
-      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,   
-      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,   
-      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,   
-      man/netsnmp_multiplexer.3,   
-      man/netsnmp_netsnmp_agent_request_info_s.3,   
-      man/netsnmp_netsnmp_column_info_t.3,   
-      man/netsnmp_netsnmp_data_list_s.3,   
-      man/netsnmp_netsnmp_handler_registration_s.3,   
-      man/netsnmp_netsnmp_iterator_info_s.3,   
-      man/netsnmp_netsnmp_mib_handler_access_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_s.3,   
-      man/netsnmp_netsnmp_request_info_s.3,   
-      man/netsnmp_netsnmp_table_registration_info_s.3,   
-      man/netsnmp_netsnmp_table_request_info_s.3,   
-      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,   
-      man/netsnmp_read_config.3, man/netsnmp_read_only.3,   
-      man/netsnmp_row_merge.3, man/netsnmp_scalar.3,   
-      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,   
-      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,   
-      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,   
-      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,   
-      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,   
-      man/netsnmp_table.3, man/netsnmp_table_array.3,   
-      man/netsnmp_table_container.3, man/netsnmp_table_data.3,   
-      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,   
-      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,   
-      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,  
-       man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
-      man/netsnmp_util.3, man/netsnmp_utilities.3,   
-      man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
-
-   documentation update
-
-2011-06-24 12:02  dts12
-
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      snmplib/snmp_version.c:
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
 
    Version number update
 
-2011-06-23 15:41  dts12
+2011-06-13 16:04  hardaker
 
-   *  agent/mibgroup/host/hr_swinst.c, configure, configure.in,   
-      include/net-snmp/net-snmp-config.h.in:
+   * configure:
 
-   Tweak RPM handling to work with library version 4.9
-   Based on a patch by Jan Safranek
+   ran autoconf
 
-2011-06-22 14:27  dts12
+2011-06-10 06:03  nba
 
-   * agent/mibgroup/host/hr_swinst.c:
+   * configure.d/config_modules_security_modules:
 
-   Provide a framework for reading RPM package information from
-   a cache directory (rather than querying the RPMdb directly).
+   Fix build of snmpusm when additional sec modules requested
+
+2011-06-09 21:13  nba
+
+   * snmplib/cert_util.c:
+
+   Include std爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´õ€’‘b.h to make dmalloc happy
+
+2011-06-09 14:35  rstory
+
+   * snmplib/snmp_transport.c:
+
+   CHANGES: BUG: 3151845: fix multiple registrations of snmp
+   transport handler
+
+2011-06-08 16:34  rstory
+
+   *  include/net-snmp/library/default_store.h, snmplib/snmp_api.c,   
+      snmplib/system.c:
+
+   more dnssec tweaks
    
-   My apologies to Jeff Johnson for the delay in adding this
-   functionality.
+   - create an app-global validator context for use with all
+   validation routines. mainly useful for long-lived apps.
+   - use the apptype as the validator 'scope', allowing
+   for app-specific configuration of validation via libval's
+   dnsval.conf
 
-2011-06-17 19:06  bvassche
+2011-06-07 16:48  rstory
 
-   * agent/helpers/cache_handler.c:
+   * include/net-snmp/library/default_store.h:
 
-   Use %p to print a pointer instead of %ld
+   add a max define for each default store type
+   
+   not actually used, just a helpful reminder for those adding
+   new ids who might not think to check NETSNMP_DS_MAX_SUBIDS.
+   (the bool list is rapidly approaching the current limit.)
 
-2011-06-01 15:57  dts12
+2011-06-07 16:46  rstory
 
-   * CHANGES:
+   * testing/fulltests/support/simple_run:
 
-   version update
+   mention builddir when complaining about not being run from source
+   tree
 
-2011-06-01 15:48  dts12
+2011-06-01 22:24  hardaker
 
-   * ChangeLog:
+   *  agent/mibgroup/agentx/master.c,   
+      agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/agentx/protocol.c,   
+      agent/mibgroup/agentx/subagent.c:
 
-   version update
+   CHANGES: snmpd: patch 3310250: from fenner: misc fixes for
+   debugging output of agentx
 
-2011-06-01 15:47  dts12
+
+
+----------------------------------------------------------------------
+
+Changes: V5.6 -> V5.7.pre2
+
+2011-05-10 00:20  hardaker
 
    *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
       agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
@@ -107,197 +30040,56 @@
 
    make depend
 
-2011-06-01 15:42  dts12
+2011-05-10 00:20  hardaker
 
-   * perl/SNMP/SNMP.xs:
+   *  agent/mibgroup/deliver/deliverByNotify.c,   
+      agent/mibgroup/hardware/cpu/cpu_linux.c,   
+      agent/mibgroup/ip-mib/data_access/arp_linux.c:
 
-   Reinstate an "unused" label that is actually still required.
-   (referenced in line 2710)
+   C++ -> C comments
 
-2011-06-01 15:32  dts12
+2011-05-10 00:17  hardaker
 
-   * agent/mibgroup/ucd-snmp/disk.c:
+   * NEWS:
 
-   Fix typo
+   NEWS update for 5.7
 
-2011-06-01 15:08  dts12
+2011-05-09 23:14  hardaker
 
-   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3,   
-      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,   
-      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,   
-      man/netsnmp_cache_handler.3, man/netsnmp_callback.3,   
-      man/netsnmp_container.3, man/netsnmp_data_list.3,   
-      man/netsnmp_debug.3, man/netsnmp_default_store.3,   
-      man/netsnmp_handler.3, man/netsnmp_instance.3,   
-      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,   
-      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,   
-      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,   
-      man/netsnmp_multiplexer.3,   
-      man/netsnmp_netsnmp_agent_request_info_s.3,   
-      man/netsnmp_netsnmp_column_info_t.3,   
-      man/netsnmp_netsnmp_data_list_s.3,   
-      man/netsnmp_netsnmp_handler_registration_s.3,   
-      man/netsnmp_netsnmp_iterator_info_s.3,   
-      man/netsnmp_netsnmp_mib_handler_access_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_s.3,   
-      man/netsnmp_netsnmp_request_info_s.3,   
-      man/netsnmp_netsnmp_table_registration_info_s.3,   
-      man/netsnmp_netsnmp_table_request_info_s.3,   
-      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,   
-      man/netsnmp_read_config.3, man/netsnmp_read_only.3,   
-      man/netsnmp_row_merge.3, man/netsnmp_scalar.3,   
-      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,   
-      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,   
-      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,   
-      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,   
-      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,   
-      man/netsnmp_table.3, man/netsnmp_table_array.3,   
-      man/netsnmp_table_container.3, man/netsnmp_table_data.3,   
-      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,   
-      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,   
-      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,  
-       man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
-      man/netsnmp_util.3, man/netsnmp_utilities.3,   
-      man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
+   * include/net-snmp/library/oid.h:
 
-   documentation update
+   revert the oid typedef resizing from r17809 because it broke
+   backwards compat, as pointed out by users on the -coders list
 
-2011-06-01 14:51  dts12
+2011-05-09 22:51  hardaker
 
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      snmplib/snmp_version.c:
+   * configure:
+
+   use proper autoconf version
+
+2011-05-09 22:38  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec, perl/ASN/ASN.pm,   
+      perl/AnyData_SNMP/Storage.pm, perl/OID/OID.pm, perl/SNMP/SNMP.pm, 
+        perl/TrapReceiver/TrapReceiver.pm,
+      perl/agent/Support/Support.pm,    perl/agent/agent.pm,
+      perl/agent/default_store/default_store.pm,   
+      perl/default_store/default_store.pm:
 
    Version number update
 
-2011-05-31 22:49  hardaker
+2011-05-09 22:38  hardaker
 
-   * agent/mibgroup/agent/extend.c, agent/mibgroup/ucd-snmp/disk.c:
+   * Makefile.top:
 
-   CHANGES: snmpd: PATCH 3066862: from fhew: fix the agent for
-   comparing unsigned large indexes of the disk and extend tables.
+   version update
 
-2011-05-31 12:30  jsafranek
+2011-05-09 22:10  hardaker
 
-   * agent/mibgroup/host/hr_swrun.c:
+   * mibs/UCD-SNMP-MIB.txt:
 
-   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.
-
-2011-05-26 16:12  hardaker
-
-   * snmplib/snmp_api.c:
-
-   CHANGES: snmpd: patch 3299384: fix INFORMs so they retry probing
-   for an engineID.
-
-2011-05-26 16:06  hardaker
-
-   * snmplib/snmp_api.c:
-
-   Applied (roughly) patch 3299370 to avoid rewriting existing
-   authkey/privkey/etcs
-
-2011-05-25 09:21  bvassche
-
-   * agent/mibgroup/tunnel/tunnel.c:
-
-   CHANGES: snmpd: Use proper format specifier in debug statements
-   for printing values of type 'oid'.
-
-2011-05-24 12:51  jsafranek
-
-   * agent/mibgroup/ip-mib/data_access/arp_common.c:
-
-   Added NULL-checks after malloc
-
-2011-05-22 19:34  dts12
-
-   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c:
-
-   CHANGES: agent: BUG: 3305157: Fix ipAddressPrefix handling of
-   IPv6 addresses
-
-2011-05-22 19:07  dts12
-
-   * python/netsnmp/client_intf.c:
-
-   CHANGES: python: BUG: 3295407: Fix handling of void pointer
-
-2011-05-22 18:57  dts12
-
-   * include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c:
-
-   CHANGES: snmplib: BUG: 3264852: Recognise missing report types
-   (snmp{Unavailable,Unknown}Contexts,snmpUnknownPDUHandlers)
-
-2011-05-20 15:41  dts12
-
-   *  snmplib/snmpAAL5PVCDomain.c, snmplib/snmpIPXDomain.c,   
-      snmplib/snmpSTDDomain.c, snmplib/snmpTCPDomain.c,   
-      snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUDPDomain.c,   
-      snmplib/snmpUDPIPv6Domain.c, snmplib/snmpUnixDomain.c:
-
-   CHANGES: snmplib: BUG: 3234754: Ensure old f_create_from_tstring
-   hook is initialized to NULL
-
-2011-05-19 19:46  hardaker
-
-   * acconfig.h, include/net-snmp/net-snmp-config.h.in:
-
-   use #ifdef rather than #if for define checks.
-
-2011-05-19 17:19  dts12
-
-   * man/snmp_api.3.def, man/snmp_sess_api.3.def:
-
-   CHANGES: man: BUG: 3190725: Document snmp{,_sess}synch_response
-   and snmp_async_send
-
-2011-05-12 09:03  bvassche
-
-   * snmplib/snmp_api.c:
-
-   CHANGES: snmplib: Fixed a memory leak in snmp_free_session().
-
-2011-05-12 08:12  bvassche
-
-   * agent/mibgroup/mibII/at.c:
-
-   CHANGES: Win32: Fixed a memory leak in the Net-SNMP
-   (non-winExtDLL) implementation of the MIB-II ipNetToMediaTable.
-
-2011-05-12 08:08  bvassche
-
-   * agent/mibgroup/mibII/interfaces.c:
-
-   CHANGES: Win32: Fixed a memory leak in the Net-SNMP
-   (non-winExtDLL) implementation of the MIB-II ifTable.
-
-2011-05-12 07:33  bvassche
-
-   * agent/mibgroup/mibII/ipAddr.c:
-
-   CHANGES: Win32: Fixed a memory leak in the Net-SNMP
-   (non-winExtDLL) implementation of the MIB-II ipAddrTable.
-
-2011-05-12 06:54  bvassche
-
-   * ChangeLog:
-
-   Documentation / source code comment spelling fix: exitent ->
-   existent.
-
-2011-05-10 15:02  bvassche
-
-   * snmplib/winservice.c:
-
-   MinGW: avoid that gcc complains about pasing a (char *) argument
-   while (unsigned char *) is expected.
+   added a missing 0 in the revision date
 
 2011-05-09 20:52  nba
 
@@ -305,6 +30097,94 @@
 
    Use symbolic named for ifType values
 
+2011-05-09 20:43  nba
+
+   * mibs/rfcmibs.diff:
+
+   IANA has fixed the IANA-IPPM-METRICS-REGISTRY-MIB
+
+2011-05-09 15:24  hardaker
+
+   * mibs/UCD-SNMP-MIB.txt:
+
+   added a new REVISION clause to list the changes in the the recent
+   update
+
+2011-05-09 14:19  hardaker
+
+   * NEWS:
+
+   added ping/traceroute mibs note
+
+2011-05-09 14:19  hardaker
+
+   * agent/mibgroup/ucd-snmp/proxy.c:
+
+   we actually want to use the base OID as the starting point, not
+   the reg OID.
+
+2011-05-09 14:18  hardaker
+
+   * agent/mibgroup/ucd-snmp/proxy.c:
+
+   fixed the proxy support to do a proper OID less than OID compare.
+   We actually don't care about the length of the original request,
+   only
+   that it was before the registered rebase
+
+2011-05-09 14:18  hardaker
+
+   * agent/mibgroup/ucd-snmp/proxy.c:
+
+   CHANGES: patch 3140833: from jsafranek: fix proxy GETNEXT
+   requests
+   When OIDs requested are below the proxy request remap, we need to
+   not
+   include any OIDs that might be in the space between the original
+   OID
+   and the remapped OID. This patch fudges the request so that it
+   fixes
+   the request OID so it's just before the remapped proxy range.
+
+2011-05-09 14:18  hardaker
+
+   *  agent/mibgroup/hardware/cpu/cpu.c,   
+      agent/mibgroup/hardware/cpu/cpu_linux.c,   
+      agent/mibgroup/ucd-snmp/vmstat.c,   
+      agent/mibgroup/ucd-snmp/vmstat.h,   
+      include/net-snmp/agent/hardware/cpu.h, mibs/UCD-SNMP-MIB.txt:
+
+   NEWS: PATCH 3167325: from krisztoforo: UCD-SNMP/SystemStats: add
+   variables
+   to report cpusteal, cpuguest, cpuguestnice
+
+2011-05-09 14:17  hardaker
+
+   * agent/mibgroup/if-mib/data_access/interface.c:
+
+   CHANGES: patch 3184026: from eivnaes: Avoid constant refresh of
+   interface statistics
+
+2011-05-09 10:44  bvassche
+
+   *  agent/snmp_agent.c, apps/snmpdelta.c, snmplib/scapi.c,   
+      snmplib/snmp_api.c, snmplib/system.c, snmplib/tools.c:
+
+   Fixed several compiler warnings reported by the MSVC compiler.
+
+2011-05-09 10:35  bvassche
+
+   * snmplib/gettimeofday.c:
+
+   Win32/MSVC: Fixed a compiler warning.
+
+2011-05-09 10:33  bvassche
+
+   * agent/mibgroup/mibII/var_route.c:
+
+   CHANGES: agent: Fixed a year-2038 bug in the implementation of
+   ipRouteTable.
+
 2011-05-08 20:01  nba
 
    *  agent/mibgroup/disman/ping/pingCtlTable.c,   
@@ -334,83 +30214,99 @@
 
    Removed an unused label from perl/SNMP/SNMP.xs.
 
-2011-05-06 21:32  hardaker
+2011-05-07 14:48  bvassche
 
-   *  agent/mibgroup/disman/ping/pingCtlTable.c,   
-      agent/mibgroup/disman/ping/pingCtlTable.h,   
-      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c,   
-      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h:
+   *  agent/agent_registry.c, agent/helpers/old_api.c,   
+      include/net-snmp/agent/agent_registry.h,   
+      include/net-snmp/agent/old_api.h:
 
-   NEWS: PATCH 3198781: from fenner: Get disman/ping and
-   disman/traceroute to at least compile
+   CHANGES: snmpd: Declare the OID argument type of MIB registration
+   functions as 'const oid *' instead of 'oid *' since these
+   functions do not modify the OID.
 
-2011-05-06 17:46  dts12
+2011-05-07 14:44  bvassche
 
-   * CHANGES:
+   *  agent/mibgroup/ip-mib/data_access/arp_linux.c,   
+      agent/mibgroup/ip-mib/data_access/arp_netlink.c,   
+      include/net-snmp/data_access/arp.h:
 
-   version update
+   Use the correct data type for the 'cache expired' variable: char
+   instead of int.
 
-2011-05-06 17:37  dts12
+2011-05-07 14:43  bvassche
 
-   * ChangeLog:
+   * agent/mibgroup/ucd-snmp/dlmod.c:
 
-   version update
+   Fixed a compiler warning that was introduced in r20151.
 
-2011-05-06 17:35  dts12
+2011-05-07 13:15  bvassche
 
-   * agent/mibgroup/Makefile.depend:
+   * snmplib/winservice.c:
 
-   make depend
+   Win32: improved source code consistency by using LPCTSTR instead
+   of LPCSTR. Note: this does not mean that Unicode builds are
+   supported.
 
-2011-05-06 17:22  dts12
+2011-05-07 13:14  nba
 
-   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3,   
-      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,   
-      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,   
-      man/netsnmp_cache_handler.3, man/netsnmp_callback.3,   
-      man/netsnmp_container.3, man/netsnmp_data_list.3,   
-      man/netsnmp_debug.3, man/netsnmp_default_store.3,   
-      man/netsnmp_handler.3, man/netsnmp_instance.3,   
-      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,   
-      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,   
-      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,   
-      man/netsnmp_multiplexer.3,   
-      man/netsnmp_netsnmp_agent_request_info_s.3,   
-      man/netsnmp_netsnmp_column_info_t.3,   
-      man/netsnmp_netsnmp_data_list_s.3,   
-      man/netsnmp_netsnmp_handler_registration_s.3,   
-      man/netsnmp_netsnmp_iterator_info_s.3,   
-      man/netsnmp_netsnmp_mib_handler_access_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_s.3,   
-      man/netsnmp_netsnmp_request_info_s.3,   
-      man/netsnmp_netsnmp_table_registration_info_s.3,   
-      man/netsnmp_netsnmp_table_request_info_s.3,   
-      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,   
-      man/netsnmp_read_config.3, man/netsnmp_read_only.3,   
-      man/netsnmp_row_merge.3, man/netsnmp_scalar.3,   
-      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,   
-      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,   
-      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,   
-      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,   
-      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,   
-      man/netsnmp_table.3, man/netsnmp_table_array.3,   
-      man/netsnmp_table_container.3, man/netsnmp_table_data.3,   
-      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,   
-      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,   
-      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,  
-       man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
-      man/netsnmp_util.3, man/netsnmp_utilities.3,   
-      man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
+   * agent/mibgroup/ip-mib/data_access/arp_netlink.c:
 
-   documentation update
+   Add file forgotten in r20353
 
-2011-05-06 17:17  dts12
+2011-05-06 23:32  hardaker
 
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      snmplib/snmp_version.c:
+   *  agent/helpers/cache_handler.c,   
+      agent/mibgroup/ip-mib/data_access/arp.h,   
+      agent/mibgroup/ip-mib/data_access/arp_common.c,   
+      agent/mibgroup/ip-mib/data_access/arp_linux.c,   
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h,  
+      
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c,
+         include/net-snmp/agent/cache_handler.h,   
+      include/net-snmp/data_access/arp.h:
 
-   Version number update
+   CHANGES: snmpd: PATCH 312596: from fabled80: listen for netlink
+   change events for the arp-related tables
+
+2011-05-06 18:36  rstory
+
+   * snmplib/system.c:
+
+   NEWS: snmplib: add optional support for local DNSSEC validation
+   of hostnames
+   
+   - optional at configure time: --with-local-dnssec-validation
+   - requires DNSSEC-Tool validation libraries
+   - initial support, for systems with getaddrinfo. support for
+   additional
+   resolver interfaces coming soon.
+   - also TODO: flag for ignoring validatoin errors (log & continue)
+
+2011-05-06 18:36  rstory
+
+   * include/net-snmp/library/parse.h:
+
+   move unused (and too generic) token within UCD_COMPATIBLE ifdef
+   
+   - MAXLABEL conflicts with <arpa/nameser.h>
+   - added NETSNMP_MAXLABEL
+
+2011-05-06 18:36  rstory
+
+   *  agent/Makefile.in, apps/Makefile.in,   
+      apps/snmpnetstat/Makefile.in, configure,   
+      configure.d/config_os_misc2,   
+      configure.d/config_project_with_enable,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   update configure/Makefiles for DNSSEC local validation option
+
+2011-05-06 14:38  hardaker
+
+   * agent/mibgroup/if-mib/data_access/interface_sysctl.c:
+
+   removed the accidental broken feature require line that got half
+   inserted
 
 2011-05-06 13:50  dts12
 
@@ -420,15 +30316,492 @@
    - broken removal of Microsoft DLL
    - remove assorted new MIBs and header files
 
+2011-05-06 12:58  dts12
+
+   * win32/dist/build-binary.pl:
+
+   Support Tar/GZip command paths containing spaces
+
+2011-05-06 12:57  dts12
+
+   * win32/dist/build-binary.pl:
+
+   Report GZip command correctly
+
+2011-05-05 21:48  nba
+
+   *  snmplib/transports/snmpUDPBaseDomain.c,   
+      snmplib/transports/snmpUDPDomain.c:
+
+   Fix for DragonFly BSD (does not define IP_SENDSRCADDR)
+
+2011-05-05 20:29  nba
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h:
+
+   Fix spelling of SO_RECVDSTADDR
+
+2011-05-05 18:54  rstory
+
+   *  include/net-snmp/library/default_store.h, man/snmp.conf.5.def,   
+      snmplib/snmp_api.c:
+
+   NEWS: apps: add snmp.conf tokens for timeouts and retries
+
 2011-05-05 06:07  bvassche
 
-   * snmplib/tools.c, testing/TESTCONF.sh:
+   * snmplib/tools.c, testing/fulltests/support/simple_TESTCONF.sh:
 
    CHANGES: MinGW: Made regression test output independent of the
    Net-SNMP variables defined in the Windows registry. Some tests
    that failed previously after the Net-SNMP binaries (MSVC build)
    had been installed do now pass.
 
+2011-05-05 05:57  bvassche
+
+   *  win32/encode_keychange/encode_keychange.vcproj,   
+      win32/libagent/libagent.vcproj,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj,   
+      win32/libsnmp/libsnmp.vcproj,   
+      win32/libsnmp_dll/libsnmp_dll.vcproj,   
+      win32/netsnmpmibs/netsnmpmibs.vcproj,   
+      win32/snmpbulkget/snmpbulkget.vcproj,   
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+        win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj,   
+      win32/snmpget/snmpget.vcproj,   
+      win32/snmpgetnext/snmpgetnext.vcproj,   
+      win32/snmpnetstat/snmpnetstat.vcproj,   
+      win32/snmpset/snmpset.vcproj, win32/snmpstatus/snmpstatus.vcproj, 
+        win32/snmptable/snmptable.vcproj,
+      win32/snmptest/snmptest.vcproj,   
+      win32/snmptranslate/snmptranslate.vcproj,   
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+        win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj,   
+      win32/snmpwalk/snmpwalk.vcproj, win32/win32.sln,   
+      win32/win32dll.sln:
+
+   Removed Visual Studio 2005 solution and project files again since
+   Visual Studio 2010 refuses to load these.
+
+2011-05-04 23:43  hardaker
+
+   * Makefile.in:
+
+   clean the perl/python feature leftovers
+
+2011-05-04 23:42  hardaker
+
+   * local/minimalist/sizetests:
+
+   fix mib module invocation
+
+2011-05-04 20:57  hardaker
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c:
+
+   fix ifdef typo
+
+2011-05-04 20:56  hardaker
+
+   * Makefile.in:
+
+   fix perl/python feature dependencies
+
+2011-05-04 20:56  hardaker
+
+   * agent/auto_nlist.c:
+
+   reverted auto_nlist macro usage; the function is used in headers
+
+2011-05-04 20:56  hardaker
+
+   * local/minimalist/sizetests:
+
+   Add a -T option to run 'make test'
+
+2011-05-04 20:56  hardaker
+
+   * apps/Makefile.in:
+
+   fix the encode_keychange .ft filename
+
+2011-05-04 16:20  hardaker
+
+   * perl/TrapReceiver/netsnmp-feature-definitions.h, snmplib/tools.c:
+
+   fix the features required by the TrapReceiver module
+
+2011-05-04 16:20  hardaker
+
+   * Makefile.in:
+
+   Add the TrapReceiver to the list of perl modules
+
+2011-05-04 14:42  hardaker
+
+   * perl/SNMP/SNMP.xs:
+
+   use the newer Net-SNMP APIs, rather than the older UCD ones
+
+2011-05-04 14:41  hardaker
+
+   * perl/SNMP/SNMP.xs:
+
+   remove SET code when under --read-only mode
+
+2011-05-04 14:41  hardaker
+
+   * agent/mibgroup/disman/event/mteTriggerTable.c:
+
+   require check_vb_uint
+
+2011-05-04 14:41  hardaker
+
+   * 
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagent.c,
+         agent/snmp_agent.c, local/mib2c-conf.d/subagent.m2c,   
+      python/netsnmp/netsnmp-feature-definitions.h,   
+      snmplib/snmp_logging.c:
+
+   last of the perl-used feature functions
+
+2011-05-04 14:40  hardaker
+
+   *  agent/mibgroup/Rmon/event.c, agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagent.c,
+         agent/mibgroup/smux/smux.c, apps/snmptrapd_handlers.c,   
+      local/mib2c-conf.d/subagent.m2c, snmplib/mib.c, snmplib/parse.c:
+
+   started the final set of function removals for features required
+   by perl/python
+
+2011-05-04 14:39  hardaker
+
+   * local/mib2c-conf.d/generic-source-includes.m2i:
+
+   added the net-snmp-features.h header
+
+2011-05-04 14:39  hardaker
+
+   *  perl/OID/netsnmp-feature-definitions.h,   
+      perl/SNMP/netsnmp-feature-definitions.h,   
+      perl/TrapReceiver/netsnmp-feature-definitions.h,   
+      perl/agent/netsnmp-feature-definitions.h:
+
+   Added perl feature requirements
+
+2011-05-04 14:39  hardaker
+
+   *  Makefile.in, Makefile.rules, configure,   
+      configure.d/config_project_perl_python,   
+      perl/ASN/netsnmp-feature-definitions.h,   
+      perl/OID/netsnmp-feature-definitions.h,   
+      perl/SNMP/netsnmp-feature-definitions.h,   
+      perl/agent/netsnmp-feature-definitions.h,   
+      perl/default_store/netsnmp-feature-definitions.h:
+
+   hopefully working rules to apply feature requirements to perl and
+   python
+
+2011-05-04 14:38  hardaker
+
+   *  agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/if-mib/data_access/interface_ioctl.c,   
+      agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c,   
+      agent/snmp_agent.c:
+
+   more changes to remove unneeded functions primarily when write
+   mode is turned off
+
+2011-05-04 14:37  hardaker
+
+   * snmplib/snmp_logging.c:
+
+   change the want invocation to only default to exclude external
+   hooks
+
+2011-05-04 14:37  hardaker
+
+   * local/minimalist/find-unused-code:
+
+   search through .xs files for function invocations
+
+2011-05-04 14:37  hardaker
+
+   * agent/auto_nlist.c:
+
+   forgot a semicolon
+
+2011-05-04 14:37  hardaker
+
+   *  agent/mibgroup/Rmon/alarmTable.c,   
+      agent/mibgroup/disman/event/mteEventTable.c,   
+      agent/mibgroup/disman/event/mteTriggerTable.c,   
+      agent/mibgroup/disman/expr/expExpressionTable.c:
+
+   iquery pdu sessions are only needed in write mode.
+
+2011-05-04 14:36  hardaker
+
+   * apps/Makefile.in:
+
+   fix feature detection of sometimes-built applications
+
+2011-05-04 14:36  hardaker
+
+   * agent/auto_nlist.c:
+
+   use the feature_unused macro for making an empty file for
+   consistency
+
+2011-05-04 14:36  hardaker
+
+   *  agent/helpers/table_dataset.c, agent/mibgroup/Rmon/alarmTable.c,  
+       agent/mibgroup/disman/event/mteEventTable.c,   
+      agent/mibgroup/disman/schedule/schedTable.c,   
+      agent/mibgroup/hardware/fsys/hw_fsys.c,   
+      agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/host/hr_network.c,   
+      agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/if-mib/data_access/interface_openbsd.c,   
+      agent/mibgroup/if-mib/data_access/interface_solaris2.c,   
+      agent/mibgroup/if-mib/data_access/interface_sysctl.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c,
+         agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c,
+         agent/mibgroup/mibII/interfaces.c,
+      agent/mibgroup/mibII/ipAddr.c,   
+      agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+         agent/mibgroup/ucd-snmp/proc.c,   
+      agent/mibgroup/utilities/iquery.c, apps/snmptls.c,   
+      snmplib/cert_util.c, snmplib/mib.c, snmplib/snmp_openssl.c,   
+      snmplib/transports/snmpDTLSUDPDomain.c:
+
+   Another sweep for unused functions when read_only mode is turned
+   on
+
+2011-05-04 14:34  hardaker
+
+   *  agent/helpers/table_tdata.c, agent/mibgroup/Rmon/alarmTable.c,   
+      agent/mibgroup/agent/extend.c, agent/mibgroup/agent/nsLogging.c,  
+       agent/mibgroup/agent/nsVacmAccessTable.c,   
+      agent/mibgroup/disman/event/mteEvent.c,   
+      agent/mibgroup/disman/event/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/event/mteEventSetTable.c,   
+      agent/mibgroup/disman/event/mteEventTable.c,   
+      agent/mibgroup/disman/event/mteObjectsTable.c,   
+      agent/mibgroup/disman/event/mteTrigger.c,   
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c,   
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c,   
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c,   
+      agent/mibgroup/disman/event/mteTriggerTable.c,   
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c,   
+      agent/mibgroup/disman/expr/expExpressionTable.c,   
+      agent/mibgroup/disman/expr/expObjectTable.c,   
+      agent/mibgroup/disman/expression/expExpressionTable.c,   
+      agent/mibgroup/disman/expression/expObjectTable.c,   
+      agent/mibgroup/disman/mteObjectsTable.c,   
+      agent/mibgroup/disman/mteTriggerTable.c,   
+      agent/mibgroup/disman/nslookup/lookupCtlTable.c,   
+      agent/mibgroup/disman/ping/pingCtlTable.c,   
+      agent/mibgroup/disman/schedule/schedTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c,   
+      agent/mibgroup/header_complex.c,   
+      agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/if-mib/data_access/interface_sysctl.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c,   
+      agent/mibgroup/mibII/snmp_mib.c,   
+      agent/mibgroup/mibII/snmp_mib_5_5.c,   
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c,
+        
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c,
+         snmplib/check_varbind.c:
+
+   mark a slew of functions as features that are only needed with
+   write_support
+
+2011-05-04 14:32  hardaker
+
+   * local/minimalist/find-unused-code:
+
+   run grep with -n
+
+2011-05-04 14:32  hardaker
+
+   * snmplib/snmp_transport.c, snmplib/transports/snmpDTLSUDPDomain.c:
+
+   featurize netsnmp_sockaddr_size
+
+2011-05-04 14:32  hardaker
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_linux.c:
+
+   remove a feature_require not actually needed.
+
+2011-05-04 14:31  hardaker
+
+   * snmplib/cert_util.c, snmplib/container.c:
+
+   mark SUBCONTAINER_FIND as a feature
+
+2011-05-04 14:31  hardaker
+
+   * snmplib/snmp_client.c, snmplib/snmptsm.c:
+
+   the row creation API is only used in the TSM implementation
+
+2011-05-04 14:31  hardaker
+
+   * snmplib/snmp_api.c, snmplib/snmptsm.c:
+
+   the newer context engineID probing is only needed iff TSM is in
+   use
+
+2011-05-04 14:30  hardaker
+
+   * snmplib/dir_utils.c:
+
+   fix an ifdef typo
+
+2011-05-04 14:30  hardaker
+
+   * snmplib/snmp_openssl.c:
+
+   moved fetaure child_of statements to the top of the file
+
+2011-05-04 14:30  hardaker
+
+   *  snmplib/cert_util.c, snmplib/container.c, snmplib/dir_utils.c,   
+      snmplib/snmp_openssl.c:
+
+   marked a couple of rarely used container functions.
+
+2011-05-04 14:29  hardaker
+
+   *  agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c,   
+      agent/mibgroup/util_funcs.c:
+
+   split out the prefix_info feature into sub-features
+
+2011-05-04 14:29  hardaker
+
+   * 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c:
+
+   mark the accessor functions as unneeded
+
+2011-05-04 14:29  hardaker
+
+   * agent/mibgroup/host/data_access/swinst.c:
+
+   fix a child_of statement with a copy/paste error
+
+2011-05-04 14:28  hardaker
+
+   * agent/helpers/table_tdata.c:
+
+   the container row-remove is only needed if the tdata remove_row
+   is needed
+
+2011-05-04 14:28  hardaker
+
+   *  agent/helpers/table_tdata.c, agent/mibgroup/Rmon/alarmTable.c,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c:
+
+   feature marking of unused tdata functions
+   table_tdata_delete_table
+   table_tdata_extract_table
+   table_tdata_remove_row
+
+2011-05-04 14:27  hardaker
+
+   *  agent/helpers/table_dataset.c,   
+      agent/mibgroup/disman/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/mteEventTable.c,   
+      agent/mibgroup/examples/data_set.c:
+
+   removal of some rarely used functions
+   table_set_multi_add_default_row
+   table_dataset_unregister_auto_data_table
+
+2011-05-04 14:27  hardaker
+
+   * local/minimalist/sizetests:
+
+   Added a definition to incorporate read_only/notify_only
+
+2011-05-04 14:27  hardaker
+
+   * agent/helpers/table_data.c:
+
+   added a missing feature definition line
+
+2011-05-04 14:26  hardaker
+
+   * agent/Makefile.in:
+
+   added back in missing mibgroup feature definition list
+
+2011-05-04 14:26  hardaker
+
+   * local/minimalist/sizetests:
+
+   Include the original base flags to ensure --with-defaults gets
+   picked up
+
+2011-05-04 14:26  hardaker
+
+   * local/minimalist/sizetests:
+
+   fix usage
+
+2011-05-04 14:26  hardaker
+
+   * local/minimalist/sizetests:
+
+   Added a -b flag for base arguments to start from
+
+2011-05-04 14:25  hardaker
+
+   * local/minimalist/sizetests:
+
+   default to a linear seach of size tests, rather than exponential
+
+2011-05-03 18:55  bvassche
+
+   *  include/net-snmp/library/snmpUDPBaseDomain.h,   
+      include/net-snmp/library/snmpUDPDomain.h,   
+      include/net-snmp/library/snmpUDPIPv4BaseDomain.h,   
+      snmplib/transports/snmpUDPBaseDomain.c,   
+      snmplib/transports/snmpUDPDomain.c,   
+      snmplib/transports/snmpUDPIPv4BaseDomain.c:
+
+   CHANGES: snmplib: Guard netsnmp_udp_recvfrom() etc. declarations
+   consistently.
+   CHANGES: Win32: Builds with Visual Studio 2010.
+
 2011-05-03 15:29  bvassche
 
    * snmplib/winservice.c:
@@ -451,6 +30824,248 @@
    Spelling and grammar fixes for the source code comments in
    snmplib/winservice.c.
 
+2011-04-29 00:23  hardaker
+
+   * NEWS:
+
+   added note about the new timing function
+
+2011-04-29 00:14  hardaker
+
+   * man/snmpd.conf.5.def:
+
+   Update the manual page to reflect the new timing options
+
+2011-04-29 00:14  hardaker
+
+   * snmplib/tools.c:
+
+   better documentation
+
+2011-04-29 00:14  hardaker
+
+   *  agent/mibgroup/agentx/agentx_config.c,   
+      agent/mibgroup/disman/mteTriggerTable.c,   
+      agent/mibgroup/disman/schedule/schedConf.c:
+
+   use the netsnmp_string_time_to_secs() for parsing
+   frequencies/time
+
+2011-04-29 00:13  hardaker
+
+   * testing/fulltests/unit-tests/T102pdu_build_clib.c:
+
+   fix pdu building tests under various disabled modes
+
+2011-04-29 00:13  hardaker
+
+   * testing/fulltests/unit-tests/T102pdu_build_clib.c:
+
+   don't try to build the GET pdu under notify_only
+
+2011-04-29 00:12  hardaker
+
+   * include/net-snmp/library/tools.h, snmplib/tools.c:
+
+   fix a bug with no-suffix strings and use a const input string
+
+2011-04-29 00:12  hardaker
+
+   * testing/fulltests/unit-tests/T010netsnmp_string_time_to_secs_clib.c:
+
+   A new unit test for the time conversion routine
+
+2011-04-29 00:12  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   use the netsnmp_string_time_to_secs() function for computing
+   interval periods
+
+2011-04-29 00:11  hardaker
+
+   * include/net-snmp/library/tools.h, snmplib/tools.c:
+
+   Added a netsnmp_string_time_to_secs() functions to convert, e.g.,
+   1h to 3600
+
+2011-04-29 00:11  hardaker
+
+   * snmplib/snmp_api.c:
+
+   remove code to build/parse GET/etc requests when NOTIFY_ONLY is
+   turned on.
+
+2011-04-27 21:33  hardaker
+
+   * NEWS:
+
+   update the NEWS to reflect the new --enable-read-only and
+   --enable-notify-only
+
+2011-04-27 21:33  hardaker
+
+   *  agent/mibgroup/if-mib/ifTable/ifTable_interface.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c:
+
+   minor improvements for ronly vs rwrite handling
+
+2011-04-27 21:32  hardaker
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_interface.c:
+
+   still enable RONLY when RWRITE isn't possible
+
+2011-04-27 21:32  hardaker
+
+   * agent/helpers/cache_handler.c:
+
+   fix GET support when no_write is enabled
+
+2011-04-27 21:32  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   mark a future modification need in a comment
+
+2011-04-27 21:31  hardaker
+
+   * agent/helpers/old_api.c:
+
+   fix handling of no_write support
+
+2011-04-27 21:31  hardaker
+
+   * agent/agent_read_config.c, agent/snmp_agent.c, agent/snmpd.c:
+
+   don't open any listening transports when notify-only is specified
+
+2011-04-27 21:31  hardaker
+
+   * configure, configure.d/config_project_with_enable:
+
+   set the no-listen and read-only flags when --enable-notify-only
+   is set
+
+2011-04-27 21:30  hardaker
+
+   * include/net-snmp/net-snmp-config.h.in:
+
+   ran autoheader
+
+2011-04-27 21:30  hardaker
+
+   *  snmplib/transports/snmpAAL5PVCDomain.c,   
+      snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpIPXDomain.c,   
+      snmplib/transports/snmpSSHDomain.c,   
+      snmplib/transports/snmpTCPDomain.c,   
+      snmplib/transports/snmpTCPIPv6Domain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c,   
+      snmplib/transports/snmpUDPIPv4BaseDomain.c,   
+      snmplib/transports/snmpUDPIPv6Domain.c,   
+      snmplib/transports/snmpUnixDomain.c:
+
+   implement the NETSNMP_NO_LISTEN_SUPPORT in these transports
+
+2011-04-27 21:30  hardaker
+
+   * configure:
+
+   run autoconf
+
+2011-04-27 21:29  hardaker
+
+   * configure.d/config_project_with_enable:
+
+   move the read-only flag definition below the notify-only, since
+   notify-only needs to imply read-only
+
+2011-04-27 21:29  hardaker
+
+   * configure, configure.d/config_project_with_enable:
+
+   Defined a new --enable-notify-only flag for building a toolset
+   that only allows for notifications with no read/write support
+
+2011-04-27 21:29  hardaker
+
+   * configure, configure.d/config_project_with_enable:
+
+   Defined a new --no-listen flag to remove listening support
+
+2011-04-27 21:28  hardaker
+
+   * agent/mibgroup/default_modules.h:
+
+   the disman schedule mib is only useful when SETs are turned on
+
+2011-04-27 21:28  hardaker
+
+   * agent/mibgroup/disman.h:
+
+   the disman schedule mib is only useful when SETs are turned on
+
+2011-04-27 21:28  hardaker
+
+   * 
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c,  
+       agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c, 
+       
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c,
+        
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c:
+
+   finished no_write support for common included tables
+
+2011-04-27 21:27  hardaker
+
+   * agent/helpers/table_dataset.c:
+
+   Add back in 'netsnmp_set_row_column' when no_write support is
+   enabled
+   This function is a generic data manipulation function, not SET
+   specific
+
+2011-04-27 21:27  hardaker
+
+   * agent/helpers/table_dataset.c:
+
+   don't use mark_row_column_writable when read-only support is
+   enabled
+
+2011-04-27 21:26  hardaker
+
+   *  agent/mibgroup/agent/nsCache.c, agent/mibgroup/agent/nsDebug.c,   
+      agent/mibgroup/agent/nsLogging.c,   
+      agent/mibgroup/ip-mib/ip_scalars.c,   
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udpTable.c, 
+        agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/ucd-snmp/proxy.c,   
+      agent/mibgroup/utilities/override.c:
+
+   fix no_write support
+
+2011-04-27 21:26  hardaker
+
+   * agent/mibgroup/agent/extend.c:
+
+   fix no_write support
+
 2011-04-27 21:16  hardaker
 
    * agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c:
@@ -458,6 +31073,463 @@
    Don't free the ifXTable row found on load failure as we don't own
    it
 
+2011-04-26 18:16  hardaker
+
+   * local/gittools, local/gittools/shell-functions:
+
+   git bash-shell functions to enable branch switching and external
+   building
+   These local shell functions (snmpconfigure and snmpmake) let you
+   configure and build the Net-SNMP source code in external
+   directories
+   that are auto-calculated based on the existing branch name (with
+   an
+   optional suffix). This lets you run 'snmpmake' from within the
+   source
+   directory and have it actually externally keep track of modified
+   files, etc, so building in multiple branches can be done from a
+   single
+   git checkout.
+
+2011-04-25 20:57  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   clean up the iterators
+
+2011-04-25 20:57  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   free varbinds after sending
+
+2011-04-25 18:48  bvassche
+
+   * agent/mibgroup/ucd-snmp/diskio.c:
+
+   Commented out an unused function because the compiler complained
+   about it.
+
+2011-04-25 18:46  bvassche
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   Fixed two compiler warnings.
+
+2011-04-23 14:31  magfr
+
+   * agent/helpers/table_data.c:
+
+   Remove unnecessary null check
+
+2011-04-23 14:05  magfr
+
+   * agent/helpers/table_container.c:
+
+   Move pointer dereference to after the check for successful
+   allocation of the pointer
+
+2011-04-23 08:20  magfr
+
+   * agent/agent_registry.c:
+
+   Reduce variable scope
+
+2011-04-23 08:16  magfr
+
+   * agent/agent_registry.c:
+
+   Remove an unused variable
+
+2011-04-23 08:06  magfr
+
+   * agent/agent_registry.c:
+
+   Reduce variable scope
+
+2011-04-23 07:55  magfr
+
+   * agent/agent_registry.c:
+
+   Reduce variable scope
+
+2011-04-22 19:35  magfr
+
+   * agent/agent_trap.c:
+
+   Reduce variable scope
+
+2011-04-22 19:30  magfr
+
+   * agent/agent_trap.c:
+
+   Remove unused variable
+
+2011-04-22 17:29  hardaker
+
+   * man/snmpd.conf.5.def:
+
+   mention which module is required when building to get the deliver
+   support
+
+2011-04-22 16:33  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   deleted an unneeded debugging statement
+
+2011-04-22 16:33  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   properly update the max count in the outgoing notifications
+
+2011-04-22 16:32  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   better packet estimation to ensure we don't overrun.
+
+2011-04-22 16:32  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   estimate the packet size and break the notification up based on
+   it
+
+2011-04-22 16:31  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   transform the notification sending into a larger loop for later
+   multi-notifs
+
+2011-04-22 16:31  hardaker
+
+   * NEWS:
+
+   further information about feature marking/selection
+
+2011-04-22 16:31  hardaker
+
+   * NEWS:
+
+   mention the new delivery by notifications
+
+2011-04-22 16:31  hardaker
+
+   * NEWS:
+
+   document the minimalist support
+
+2011-04-22 16:30  hardaker
+
+   * man/snmpd.conf.5.def:
+
+   document the new deliverByNotify config tokens
+
+2011-04-22 16:30  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   allow run time modifications of the OIDs to use
+
+2011-04-22 16:30  hardaker
+
+   *  agent/mibgroup/deliver/deliverByNotify.c,   
+      agent/mibgroup/deliver/deliverByNotify.h:
+
+   add config flags to not include the period config and msg count
+   values
+
+2011-04-22 16:29  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   include the periodic count, the message number and the max
+   message number
+
+2011-04-22 16:29  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   deleted debugging comment
+
+2011-04-22 16:29  hardaker
+
+   *  agent/mibgroup/deliver/deliverByNotify.c,   
+      mibs/NET-SNMP-PERIODIC-NOTIFY-MIB.txt:
+
+   Move the notification definition to within the sub-mib
+
+2011-04-22 16:28  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   delete an unused variable
+
+2011-04-22 16:28  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.h:
+
+   load the MIB into the default set
+
+2011-04-22 16:28  hardaker
+
+   * mibs/NET-SNMP-PERIODIC-NOTIFY-MIB.txt:
+
+   A new mib to hold the periodic notify objects
+
+2011-04-22 16:28  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   fill out the config free routine
+
+2011-04-22 16:27  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   properly monitor the whole container
+
+2011-04-22 16:27  hardaker
+
+   *  agent/mibgroup/deliver/deliverByNotify.c,   
+      agent/mibgroup/deliver/deliverByNotify.h:
+
+   parse the conf files and create and insert objects into the
+   container
+
+2011-04-22 16:27  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   defined a container to store a list of deliver objects in
+
+2011-04-22 16:27  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.h:
+
+   added a next_run timestamp
+
+2011-04-22 16:26  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   actually send a notification with the results
+
+2011-04-22 16:26  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   make the walk on the test object function.
+
+2011-04-22 16:26  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   create a max packet size config token and parse it
+
+2011-04-22 16:25  hardaker
+
+   *  agent/mibgroup/deliver/deliverByNotify.c,   
+      agent/mibgroup/deliver/deliverByNotify.h:
+
+   minimal starting test object
+
+2011-04-22 16:25  hardaker
+
+   *  agent/mibgroup/deliver/deliverByNotify.c,   
+      agent/mibgroup/deliver/deliverByNotify.h:
+
+   added a function to calculate the time until the next run
+
+2011-04-22 16:25  hardaker
+
+   * agent/mibgroup/deliver/deliverByNotify.c:
+
+   remove left in template line
+
+2011-04-22 16:25  hardaker
+
+   *  agent/mibgroup/deliver/deliverByNotify.c,   
+      agent/mibgroup/deliver/deliverByNotify.h:
+
+   use an alarm callback prototype for execute
+
+2011-04-22 16:24  hardaker
+
+   *  agent/mibgroup/deliver, agent/mibgroup/deliver/deliverByNotify.c, 
+        agent/mibgroup/deliver/deliverByNotify.h:
+
+   beginning template code for delivery of data by notifications
+
+2011-04-22 09:13  magfr
+
+   * agent/snmp_agent.c:
+
+   Reduce variable scope
+
+2011-04-22 09:07  magfr
+
+   * agent/snmp_agent.c:
+
+   Reduce variable scopes
+
+2011-04-22 09:03  magfr
+
+   * agent/snmp_agent.c:
+
+   Remove unused variable
+
+2011-04-19 08:38  bvassche
+
+   * win32/libsnmp/libsnmp.vcproj, win32/win32.sln:
+
+   Added Visual Studio 2005 project and solution file for building
+   the Net-SNMP library as a static library. Both the Win32 and the
+   x64 configurations are included.
+
+2011-04-19 07:57  bvassche
+
+   * win32/libsnmp:
+
+   Updated Subversion ignore list.
+
+2011-04-19 07:39  bvassche
+
+   *  win32/encode_keychange/encode_keychange.vcproj,   
+      win32/libagent/libagent.vcproj,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj,   
+      win32/libsnmp_dll/libsnmp_dll.vcproj,   
+      win32/netsnmpmibs/netsnmpmibs.vcproj,   
+      win32/snmpbulkget/snmpbulkget.vcproj,   
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+        win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj,   
+      win32/snmpget/snmpget.vcproj,   
+      win32/snmpgetnext/snmpgetnext.vcproj,   
+      win32/snmpnetstat/snmpnetstat.vcproj,   
+      win32/snmpset/snmpset.vcproj, win32/snmpstatus/snmpstatus.vcproj, 
+        win32/snmptable/snmptable.vcproj,
+      win32/snmptest/snmptest.vcproj,   
+      win32/snmptranslate/snmptranslate.vcproj,   
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+        win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj,   
+      win32/snmpwalk/snmpwalk.vcproj:
+
+   More Visual Studio 2005 project file cleanup.
+
+2011-04-19 06:57  bvassche
+
+   * win32/bin:
+
+   Updated Subversion ignore list.
+
+2011-04-18 15:34  bvassche
+
+   *  win32/encode_keychange/encode_keychange.vcproj,   
+      win32/snmpbulkget/snmpbulkget.vcproj,   
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+        win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj,   
+      win32/snmpget/snmpget.vcproj,   
+      win32/snmpgetnext/snmpgetnext.vcproj,   
+      win32/snmpnetstat/snmpnetstat.vcproj,   
+      win32/snmpset/snmpset.vcproj, win32/snmpstatus/snmpstatus.vcproj, 
+        win32/snmptable/snmptable.vcproj,
+      win32/snmptest/snmptest.vcproj,   
+      win32/snmptranslate/snmptranslate.vcproj,   
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+        win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj,   
+      win32/snmpwalk/snmpwalk.vcproj:
+
+   Cleaned up Win32 VS2005 project files - removed superfluous
+   library references.
+
+2011-04-18 15:25  bvassche
+
+   *  win32/encode_keychange/encode_keychange.vcproj,   
+      win32/libagent/libagent.vcproj,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj,   
+      win32/libsnmp_dll/libsnmp_dll.vcproj,   
+      win32/netsnmpmibs/netsnmpmibs.vcproj,   
+      win32/snmpbulkget/snmpbulkget.vcproj,   
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+        win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj,   
+      win32/snmpget/snmpget.vcproj,   
+      win32/snmpgetnext/snmpgetnext.vcproj,   
+      win32/snmpnetstat/snmpnetstat.vcproj,   
+      win32/snmpset/snmpset.vcproj, win32/snmpstatus/snmpstatus.vcproj, 
+        win32/snmptable/snmptable.vcproj,
+      win32/snmptest/snmptest.vcproj,   
+      win32/snmptranslate/snmptranslate.vcproj,   
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+        win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj,   
+      win32/snmpwalk/snmpwalk.vcproj, win32/win32dll.sln:
+
+   Added x64 configurations.
+
+2011-04-18 15:14  bvassche
+
+   * win32/lib:
+
+   Another Win32-related Subversion ignore list update.
+
+2011-04-18 15:13  bvassche
+
+   *  win32/encode_keychange/encode_keychange.vcproj,   
+      win32/libagent/libagent.vcproj,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.vcproj,   
+      win32/libsnmp_dll/libsnmp_dll.vcproj,   
+      win32/netsnmpmibs/netsnmpmibs.vcproj,   
+      win32/snmpbulkget/snmpbulkget.vcproj,   
+      win32/snmpbulkwalk/snmpbulkwalk.vcproj, win32/snmpd/snmpd.vcproj, 
+        win32/snmpdelta/snmpdelta.vcproj, win32/snmpdf/snmpdf.vcproj,   
+      win32/snmpget/snmpget.vcproj,   
+      win32/snmpgetnext/snmpgetnext.vcproj,   
+      win32/snmpnetstat/snmpnetstat.vcproj,   
+      win32/snmpset/snmpset.vcproj, win32/snmpstatus/snmpstatus.vcproj, 
+        win32/snmptable/snmptable.vcproj,
+      win32/snmptest/snmptest.vcproj,   
+      win32/snmptranslate/snmptranslate.vcproj,   
+      win32/snmptrap/snmptrap.vcproj, win32/snmptrapd/snmptrapd.vcproj, 
+        win32/snmpusm/snmpusm.vcproj, win32/snmpvacm/snmpvacm.vcproj,   
+      win32/snmpwalk/snmpwalk.vcproj, win32/win32dll.sln:
+
+   Added win32dll-related Visual Studio 2005 project and solution
+   files.
+
+2011-04-18 13:37  bvassche
+
+   *  win32, win32/encode_keychange, win32/lib, win32/libagent,   
+      win32/libnetsnmptrapd, win32/libsnmp, win32/libsnmp_dll,   
+      win32/libucdmibs, win32/net-snmp, win32/netsnmpmibs,   
+      win32/snmpbulkget, win32/snmpbulkwalk, win32/snmpd,   
+      win32/snmpdelta, win32/snmpdf, win32/snmpget, win32/snmpgetnext,  
+       win32/snmpnetstat, win32/snmpset, win32/snmpstatus,   
+      win32/snmptable, win32/snmptest, win32/snmptranslate,   
+      win32/snmptrap, win32/snmptrapd, win32/snmpusm, win32/snmpvacm,   
+      win32/snmpwalk:
+
+   Added *.vcproj.*.user and x64 to the win32 Subversion ignore
+   lists. Ran these through LC_ALL=C sort -fu too.
+
+2011-04-18 12:10  bvassche
+
+   *  include/net-snmp/library/getopt.h,   
+      include/net-snmp/library/large_fd_set.h,   
+      include/net-snmp/net-snmp-includes.h:
+
+   Win32 DLL build fixes.
+
+2011-04-17 20:56  dts12
+
+   *  snmplib/transports/snmpUDPBaseDomain.c,   
+      snmplib/transports/snmpUDPDomain.c,   
+      snmplib/transports/snmpUDPIPv4BaseDomain.c:
+
+   CHANGES: snmpd: PATCHES: 3175640: Use IP_RECVDSTADDR sockopt
+   where available (*BSD)
+
 2011-04-15 13:42  dts12
 
    * snmplib/snmp_api.c:
@@ -467,6 +31539,14 @@
    CHANGES: snmplib: BUGS: 3182985: Fix calculation of common OID
    prefix length
 
+2011-04-15 13:17  dts12
+
+   *  agent/mibgroup/ucd-snmp/diskio.c, apps/snmptrapd_ds.h,   
+      include/net-snmp/agent/ds_agent.h, man/snmpd.conf.5.def:
+
+   CHANGES: Linux: PATCHES: 3205811: Option to skip fd/loop/ram
+   devices in diskIOTable
+
 2011-04-14 21:31  dts12
 
    * python/netsnmp/client_intf.c:
@@ -513,42 +31593,234 @@
 
    Fix wrong name for config token 'doNotRetainNotificationLogs'
 
-2011-03-15 12:37  dts12
+2011-04-09 21:59  nba
 
-   * CHANGES, NEWS:
+   * agent/mibgroup/sctp-mib/sctpScalars_freebsd.c:
 
-   version update
+   Remove bogus (Linux) defines
 
-2011-03-15 10:57  dts12
+2011-04-09 21:56  nba
 
-   * ChangeLog:
+   * snmplib/snmp-tc.c:
 
-   version update
+   HAVE_TM_TM_GMTOFF is HAVE_STRUCT_TM_TM_GMTOFF
 
-2011-03-15 10:56  dts12
+2011-04-09 20:08  nba
 
-   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
-      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
-      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
+   *  agent/mibgroup/disman/ping/pingCtlTable.c,   
+      agent/mibgroup/disman/ping/pingCtlTable.h,   
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h, configure, 
+        include/net-snmp/net-snmp-config.h.in:
 
-   make depend
+   Bill Fenners patch to make DISMAN PING and TRACEROUTE MIBS
+   compile under Linux
 
-2011-03-15 10:42  dts12
+2011-04-09 20:04  nba
 
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm, perl/OID/OID.pm,   
-      perl/SNMP/SNMP.pm, perl/TrapReceiver/TrapReceiver.pm,   
-      perl/agent/Support/Support.pm, perl/agent/agent.pm,   
-      perl/agent/default_store/default_store.pm,   
-      perl/default_store/default_store.pm, snmplib/snmp_version.c:
+   *  agent/mibgroup/kernel_sunos5.c, agent/mibgroup/kernel_sunos5.h,   
+      agent/mibgroup/sctp-mib/sctpScalars.h,   
+      agent/mibgroup/sctp-mib/sctpScalars_solaris2.c,   
+      agent/mibgroup/sctp-mib/sctpTables.h,   
+      agent/mibgroup/sctp-mib/sctpTables_solaris2.c:
 
-   Version number update
+   Solaris support for SCTP-MIB
 
-2011-03-15 10:41  dts12
+2011-04-09 19:50  nba
 
-   * Makefile.top:
+   * snmplib/snmp-tc.c:
 
-   version update
+   TZ is one hour off if HAVE_TM_TM_GMTOFF and SYSV (such is Linux)
+
+2011-04-01 01:11  rstory
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   CHANGES: snmplib: dtls: overhaul of debug
+   
+   - drastic reduction in number of messages and msg complexity
+   for basic dtlsudp token
+   - previous level of detail available by adding 9:dtlsdup token
+
+2011-04-01 00:53  rstory
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   CHANGES: snmplib: dtls: clean up close; catch
+   'connect'/'disconnect'
+   
+   connect = we get successfully decoded snmp data
+   disconnect = 0 byte read, ssh shutdown flag set
+   add bio_cache flags for connected/disconnected
+   check for null ptr before dereferencing
+   close handling:
+   - only send queued data if we got to connected state
+   - seriously reduce timeout to wait for junk read. i think
+   we shouldn't even bother
+   - return early if cachep is NULL, so we don't have to test it
+   repeatedly
+   - use correct nfds value in select call
+
+2011-03-31 05:17  rstory
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   make trunk and v5-6-patches closely aligned
+   
+   mostly changes in debug, cookie tracking
+
+2011-03-27 11:08  magfr
+
+   * snmplib/container_binary_array.c:
+
+   Simplify array resizing somewhat further
+
+2011-03-27 10:21  magfr
+
+   * snmplib/container_binary_array.c:
+
+   Do not assign new_data if the value won't be used.
+   Reduce variable scopes.
+
+2011-03-27 10:14  magfr
+
+   * snmplib/container_binary_array.c:
+
+   It is not necessary to clear a chunk of memory if the next action
+   on it is to
+   fill it so use malloc instead of calloc.
+
+2011-03-27 10:09  magfr
+
+   * snmplib/container_binary_array.c:
+
+   ContainerBinaryArray really can't hold anythng but pointers and
+   that means the
+   data_size field is unnecessary so I removed it.
+
+2011-03-26 19:55  magfr
+
+   *  agent/mibgroup/hardware/memory/hw_mem.c,   
+      agent/mibgroup/header_complex.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/mibII/sysORTable.c, apps/snmptrapd.c,   
+      snmplib/int64.c, snmplib/snmp_openssl.c, snmplib/snmp_secmod.c,   
+      snmplib/snmpv3.c:
+
+   Add missing include
+
+2011-03-26 08:07  magfr
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   Use the right feature macro in order to make builds with
+   --enable-ipv6 --with-out-transports=UDPIPv6 succeed.
+
+2011-03-26 08:02  magfr
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   Remove duplicate copies of functions
+
+2011-03-25 20:35  rstory
+
+   * local/net-snmp-cert:
+
+   tweak debug message
+
+2011-03-25 20:32  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   CHANGES: snmplib: update cert token handling
+   
+   - remove defX509 cert tokens (should have been removed before
+   5.6)
+   - warnings for our/their tokens, recommend using local/peer
+
+2011-03-25 20:31  rstory
+
+   *  snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpUDPBaseDomain.c:
+
+   merge netsnmp_dtlsudp6 into netsnmp_dtlsudp
+   
+   use addr size to tell them apart
+
+2011-03-25 20:31  rstory
+
+   * snmplib/snmp_transport.c:
+
+   log (once) warning when deprecated f_create_from_tstring
+   transport function used
+
+2011-03-25 20:30  rstory
+
+   * snmplib/transports/snmpTCPDomain.c:
+
+   reduce casting; make sure to free the right pointer
+
+2011-03-25 20:29  rstory
+
+   * snmplib/transports/snmpUDPBaseDomain.c:
+
+   reduce casting
+
+2011-03-24 06:19  magfr
+
+   * agent/mibgroup/ucd-snmp/dlmod.c:
+
+   Replace a variable with a constant. Make one more oid const.
+
+2011-03-17 21:09  nba
+
+   * man/snmpdelta.1.def:
+
+   Formatting botch
+
+2011-03-17 21:07  nba
+
+   * mibs/Makefile.in:
+
+   Install required mibs
+
+2011-03-17 21:05  nba
+
+   * mibs/rfclist:
+
+   New RFC mibs
+
+2011-03-15 10:31  bvassche
+
+   * snmplib/cert_util.c:
+
+   Spelling fix: reginerated -> regenerated.
+
+2011-03-15 10:19  bvassche
+
+   * snmplib/cert_util.c:
+
+   Simplified r19594 (leak-at-exit fix).
+
+2011-03-15 09:59  bvassche
+
+   * snmplib/snmp_openssl.c:
+
+   Fixed a compiler warning that was introduced in r20113.
+
+2011-03-14 09:31  dts12
+
+   * agent/snmpd.c:
+
+   Fix main agent select call to use the renamed API routine.
+
+2011-03-13 20:09  dts12
+
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c:
+
+   Bring the naming of the large_fd_set select call into
+   line with the rest of the API.
 
 2011-03-12 06:59  rstory
 
@@ -563,8 +31835,7 @@
    *  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,
-         include/net-snmp/library/container_binary_array.h:
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c:
 
    CHANGES: snmpd: PATCH: optimizations for large route tables from
    Stephen Hemminger
@@ -573,13 +31844,82 @@
    subject
    ip-forward-mib performance improvements; part 4 needs more work
 
-2011-03-11 11:11  jsafranek
+2011-03-11 14:43  rstory
 
-   * agent/mibgroup/host/hr_swrun.c:
+   * snmplib/transports/snmpTLSBaseDomain.c:
 
-   CHANGES: snmpd: fixed race condition in hrSWRunTable
-   Treat the reads from /proc/<pid>/* carefuly, processes can exit
-   in the middle of processing.
+   CHANGES: snmplib: add more openssl error cases where we check for
+   local cert
+
+2011-03-11 12:01  bvassche
+
+   * agent/mibgroup/ucd-snmp/disk.c:
+
+   MinGW: dskTable: Report zero for unimplemented fields instead of
+   random data.
+
+2011-03-11 08:42  bvassche
+
+   * agent/mibgroup/disman/schedule/schedCore.c:
+
+   CHANGES: snmpd: Builds with most recent MinGW (having #define
+   localtime_r).
+
+2011-03-11 03:08  rstory
+
+   * snmplib/cert_util.c, snmplib/snmp_openssl.c:
+
+   CHANGES: snmplib: refine cert debugging; remove unused function
+
+2011-03-10 21:21  rstory
+
+   * snmplib/cert_util.c:
+
+   CHANGES: snmpd: BUG: 3205765: handle reconfig for certSecName
+   token
+
+2011-03-10 20:01  bvassche
+
+   * agent/snmpd.c:
+
+   Spelling fix in a source code comment: messges -> messages.
+
+2011-03-10 19:55  bvassche
+
+   * snmplib/large_fd_set.c:
+
+   CHANGES: snmplib: PATCH: 3203806: Minor performance optimization
+   of netsnmp_large_fd_set_resize().
+
+2011-03-10 19:48  bvassche
+
+   * agent/snmpd.c:
+
+   CHANGES: snmpd: PATCH: 3203806: Avoid that the main agent
+   processing loop - when using more than FD_SETSIZE file
+   descriptors - can cause memory corruption by invoking select().
+
+2011-03-10 19:43  bvassche
+
+   * include/net-snmp/library/large_fd_set.h, snmplib/large_fd_set.c:
+
+   CHANGES: snmplib: PATCH: 3203806: Add the function
+   netsnmp_large_select().
+
+2011-03-10 18:55  bvassche
+
+   *  testing/fulltests/support/clib_build,   
+      testing/fulltests/unit-tests/T009large_fd_set_clib.c:
+
+   Added a minimal unit test for netsnmp_large_fd_set.
+
+2011-03-10 18:52  bvassche
+
+   * snmplib/large_fd_set.c:
+
+   CHANGES: snmplib: PATCH: 3203806: Make
+   netsnmp_large_fd_set_resize() clear all relevant file
+   descriptors.
 
 2011-03-10 15:51  dts12
 
@@ -588,6 +31928,288 @@
    CHANGES: snmpd: BUG: 3178389: Fix inconsistent handling of TZ
    offsets
 
+2011-03-10 15:40  dts12
+
+   *  agent/mibgroup/hardware/fsys,   
+      agent/mibgroup/ip-mib/ipAddressPrefixTable,   
+      agent/mibgroup/ip-mib/ipIfStatsTable:
+
+   Ignore object files and libraries
+
+2011-03-10 15:05  dts12
+
+   * snmplib/transports:
+
+   Ignore object files and libraries
+
+2011-03-10 14:32  hardaker
+
+   * apps/Makefile.in, configure, configure.d/config_os_libs2:
+
+   make variable names match
+
+2011-03-10 14:28  bvassche
+
+   * agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c:
+
+   Fixed two compiler warnings.
+
+2011-03-10 14:24  hardaker
+
+   * configure, configure.d/config_os_libs2:
+
+   fixed installation variables for the optional SET programs
+
+2011-03-08 00:53  hardaker
+
+   * local/minimalist/remove-unneeded-modules:
+
+   chmod a+x
+
+2011-03-08 00:15  hardaker
+
+   * local/minimalist/removeifdefcode.pl:
+
+   print an error if the end of a file was reached and we're not
+   back
+   into the state we can write; otherwise a closing #ifdef is
+   missing.
+
+2011-03-08 00:15  hardaker
+
+   * snmplib/transports/snmpUnixDomain.c:
+
+   fix endif comment to match the opening ifdef
+
+2011-03-08 00:15  hardaker
+
+   * local/minimalist/removeifdefcode.pl:
+
+   reset the canwrite flag for every file
+
+2011-03-08 00:15  hardaker
+
+   * local/minimalist/remove-unneeded-modules:
+
+   temporarily leave in header files
+
+2011-03-08 00:14  hardaker
+
+   * configure, configure.ac:
+
+   change the unique file check to one that is not in the mibgroup
+   directory
+
+2011-03-08 00:14  hardaker
+
+   *  testing/fulltests/read-only,   
+      testing/fulltests/read-only/T0141snmpv2csetfail_simple:
+
+   a test for ensuring the agent rejects SET requests with
+   --enable-read-only
+
+2011-03-08 00:14  hardaker
+
+   * testing/fulltests/default/T0141snmpv2cset_simple:
+
+   add back in the stopagent command
+
+2011-03-08 00:14  hardaker
+
+   *  testing/fulltests/unit-tests/T101pdu_type_clib.c,   
+      testing/fulltests/unit-tests/T102pdu_build_clib.c,   
+      testing/fulltests/unit-tests/T103pdu_parse_clib.c:
+
+   unit tests writen for the read-only support converted to work
+   with or without read-only
+
+2011-03-08 00:13  hardaker
+
+   * testing/fulltests/default/T0141snmpv2cset_simple:
+
+   don't run the set test if no_write_support is turned on
+
+2011-03-08 00:13  hardaker
+
+   * testing/fulltests/default/T030snmpv3usercreation_simple:
+
+   skip if no_write_support
+
+2011-03-08 00:13  hardaker
+
+   * testing/fulltests/default/T0141snmpv2cset_simple:
+
+   A new test to check whether SNMPv2c SETs to sysContact work as
+   expected
+
+2011-03-08 00:13  hardaker
+
+   * testing/fulltests/default/Svanyconfig:
+
+   allow for v2c SET support testing
+
+2011-03-08 00:12  hardaker
+
+   * agent/mibgroup/mibII/vacm_conf.c:
+
+   Allow for single quotes for vacm context name quoting too
+
+2011-03-07 19:19  hardaker
+
+   * configure:
+
+   fix the configure tests to include the word test in the test
+
+2011-03-07 19:18  hardaker
+
+   * configure.d/config_os_libs2:
+
+   fix the configure tests to include the word test in the test
+
+2011-03-07 19:18  hardaker
+
+   * local/minimalist/remove-unneeded-modules:
+
+   Added an annoyingly long list of exceptions that needs to be
+   automated
+
+2011-03-07 19:18  hardaker
+
+   * local/minimalist/remove-unneeded-modules:
+
+   A quick perl script to remove unneeded code modules from the
+   modules directory
+
+2011-03-07 19:18  hardaker
+
+   *  agent/mibgroup/target/target.c,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+        snmplib/cert_util.c, snmplib/snmpusm.c, snmplib/vacm.c:
+
+   more improvements (removements) for featurization and read-only
+   support
+
+2011-03-07 17:19  bvassche
+
+   * snmplib/container_binary_array.c:
+
+   CHANGES: snmplib: PATCH: 3195537: Minor binary_array container
+   sort optimization
+
+2011-03-06 19:47  nba
+
+   * agent/mibgroup/disman/nslookup/lookupCtlTable.c:
+
+   Tabs to spaces
+
+2011-03-06 11:28  nba
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c,   
+      configure.d/config_os_functions:
+
+   Configure check for gethostname2
+   Use getaddrinfo if available. Now works for Solaris (and
+   Windows?)
+
+2011-03-05 19:16  magfr
+
+   * apps/snmptest.c:
+
+   Add dropped ||'s from r20072
+
+2011-03-05 12:50  nba
+
+   *  agent/mibgroup/disman/nslookup/lookupCtlTable.c,   
+      agent/mibgroup/disman/nslookup/lookupCtlTable.h,   
+      agent/mibgroup/disman/nslookup/lookupResultsTable.c:
+
+   Clean up, and cosolidate result table row creation into a new
+   function.
+   Saves 200 lines of code, with (hopefully) no functionality change
+
+2011-03-05 06:17  hardaker
+
+   *  apps/Makefile.in, apps/snmptest.c, configure,   
+      configure.d/config_os_libs2:
+
+   don't build SET related apps with --enable-read-only
+
+2011-03-05 06:16  hardaker
+
+   *  agent/helpers/baby_steps.c,   
+      agent/mibgroup/disman/event/mteEvent.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c,   
+      agent/mibgroup/mibII/snmp_mib.c, agent/mibgroup/mibII/updates.c,  
+      
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+         agent/mibgroup/target/target.c,   
+      include/net-snmp/agent/baby_steps.h,   
+      include/net-snmp/agent/snmp_agent.h, snmplib/snmp_client.c:
+
+   fix issues with combining --enable-minimalist and
+   --enable-read-only
+
+2011-03-05 06:16  hardaker
+
+   * local/minimalist/find-unused-code:
+
+   better output for finding object symbols.
+
+2011-03-04 21:56  baerm
+
+   * local/minimalist/removeifdefcode.pl:
+
+   last commit: changes to allow parsing of featuers files to get
+   all minimalist tags which are then processed for removal
+   
+   this commit: changed comments/white space
+
+2011-03-04 19:27  baerm
+
+   * agent/mibgroup/agent/extend.c:
+
+   added no_write support to extend.c
+
+2011-03-04 19:26  baerm
+
+   * agent/helpers/instance.c:
+
+   Added missing #endif comment for remove ifdef code support
+
+2011-03-04 19:24  baerm
+
+   * local/minimalist/removeifdefcode.pl:
+
+   added changes to allow code removal in-place
+   (i.e. does not require creating a new file)
+
+2011-03-04 19:23  baerm
+
+   * local/minimalist/ignore.regexp:
+
+   adding a ignore.regexp file that can be used with
+   removeifdefcode.pl
+
+2011-03-04 19:20  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   add a outgoing link to the parent marking page
+
+2011-03-04 19:19  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   Added a wiki output mode
+
+2011-03-04 19:19  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   Note that the org output is the default in the help output
+
 2011-03-04 15:09  jsafranek
 
    * agent/mibgroup/ucd-snmp/vmstat_linux.c:
@@ -595,6 +32217,480 @@
    CHANGES: snmpd: fixed 'truncating integer value > 32 bits' in
    UCD-SNMP-MIB::systemStats on Linux
 
+2011-03-04 14:49  hardaker
+
+   *  agent/agent_read_config.c, agent/helpers/watcher.c,   
+      agent/mibgroup/agentx/master.c, agent/mibgroup/agentx/subagent.c, 
+        agent/mibgroup/header_complex.c,   
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c,
+         agent/mibgroup/mibII/kernel_linux.c,   
+      agent/mibgroup/mibII/tcpTable.c,   
+      agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/snmpv3/snmpEngine.c,   
+      agent/mibgroup/snmpv3/usmUser.c, agent/mibgroup/util_funcs.c,   
+      agent/mibgroup/utilities/iquery.c, snmplib/snmp_api.c:
+
+   reclassification of the remaining features into a hierarchy
+
+2011-03-04 14:49  hardaker
+
+   * snmplib/snmp_openssl.c:
+
+   don't double-declare cert_utils
+
+2011-03-04 14:49  hardaker
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_linux.c:
+
+   the ipaddress_linux was incorrectly marked as needing
+   cert_fingerprints
+
+2011-03-04 14:48  hardaker
+
+   * agent/agent_registry.c:
+
+   put the agent_registry feature in libnetsnmpagent.
+
+2011-03-03 10:56  bvassche
+
+   * win32/libsnmp_dll/libsnmp.def:
+
+   CHANGES: Win32: Deprecated libsnmp.def - add NETSNMP_IMPORT to
+   function declarations instead to export a function from
+   netsnmp.dll.
+
+2011-03-03 10:48  bvassche
+
+   *  include/net-snmp/library/snmpIPv6BaseDomain.h,   
+      include/net-snmp/library/snmp_debug.h:
+
+   Added missing NETSNMP_IMPORT declarations.
+
+2011-03-03 10:24  bvassche
+
+   * win32/libagent/libagent.def, win32/libucdmibs/libucdmibs.def:
+
+   Removed two obsolete Win32 files.
+
+2011-03-03 10:09  bvassche
+
+   * snmplib/transports/snmpIPv6BaseDomain.c:
+
+   Trivial comment fix: snmpIPv6BaseDomain.c contains IPv6 base
+   transport support functions instead of IPv4.
+
+2011-03-02 19:10  bvassche
+
+   * snmplib:
+
+   Added snmpsm_shutdown.h to the Subversion ignore list because
+   it's a generated file.
+
+2011-03-02 15:58  bvassche
+
+   * win32/config.h:
+
+   Removed an obsolete file.
+
+2011-03-02 15:52  bvassche
+
+   *  include/net-snmp/library/snmp_secmod.h, win32/snmpsm_shutdown.h,  
+       win32/snmpv3-security-includes.h:
+
+   Builds again with Visual Studio after the introduction of the
+   "feature" feature.
+
+2011-03-02 15:48  bvassche
+
+   * win32/snmpsm_init.h:
+
+   Removed a misleading comment.
+
+2011-03-02 08:40  magfr
+
+   * configure, configure.d/config_os_libs2:
+
+   Correct the check of wether usm security is enabled.
+   Regenerate configure.
+
+2011-03-02 08:39  magfr
+
+   * include/net-snmp/net-snmp-config.h.in:
+
+   Regenerate
+
+2011-03-02 08:21  magfr
+
+   * 
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c:
+
+   Add missing dependencies
+
+2011-03-02 07:19  magfr
+
+   * snmplib/snmpusm.c:
+
+   Ignore the return value from snmp_increment_statistic
+
+2011-03-02 07:19  magfr
+
+   * snmplib/container.c:
+
+   Split the container_compare_functions feature into
+   container_compare_mem,
+   container_compare_long, container_compare_ulong,
+   container_compare_int32 and
+   container_compare_uint32
+   Unify the structure of the compare functions further.
+
+2011-03-02 07:19  magfr
+
+   * snmplib/container.c:
+
+   Change the spelling of the container_compare_cstring feature to
+   container_ncompare_cstring as that is the function that is
+   guarded by that
+   attribute.
+
+2011-03-02 07:17  magfr
+
+   * include/net-snmp/library/snmp_api.h:
+
+   Add the missing replacement macro for snmp_init_statistics
+
+2011-03-02 07:16  magfr
+
+   * include/net-snmp/library/snmp_api.h:
+
+   snmp_increment_statistic_by takes two arguments so let the
+   replacement macro
+   take two arguments as well.
+
+2011-02-27 13:55  nba
+
+   * agent/mibgroup/disman/nslookup/lookupCtlTable.c:
+
+   Fix typo in r19990
+
+2011-02-26 10:53  magfr
+
+   * local/minimalist/feature-check:
+
+   Remove lines starting with #define in the output of the
+   preprocessor
+   When gcc -E is called with -ggdb3 (or -dD) then all the macro
+   definitions are
+   passed through the preprocessor and that messes up our
+   processing.
+
+2011-02-26 10:52  magfr
+
+   * Makefile.rules:
+
+   Put the generated file in the build tree, not the source tree.
+
+2011-02-26 01:23  hardaker
+
+   *  agent/agent_trap.c, agent/helpers/table_dataset.c,   
+      agent/mibgroup/disman/event/mteEvent.c,   
+      agent/mibgroup/disman/event/mteTrigger.c,   
+      agent/mibgroup/disman/schedule/schedCore.c,   
+      agent/mibgroup/hardware/cpu/cpu.c,   
+      agent/mibgroup/hardware/memory/hw_mem.c,   
+      agent/mibgroup/host/data_access/swinst.c,   
+      agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c,
+         agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c,  
+       agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c, 
+       
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c,
+        
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c,
+         agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c,   
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c:
+
+   moved a bunch of features into the libnetsnmpmibs feature set.
+
+2011-02-26 01:22  hardaker
+
+   *  agent/agent_handler.c, agent/agent_index.c,   
+      agent/agent_registry.c, agent/agent_trap.c,   
+      agent/helpers/all_helpers.c, agent/helpers/cache_handler.c,   
+      agent/helpers/table.c, agent/helpers/table_array.c,   
+      agent/helpers/table_data.c, agent/helpers/table_dataset.c,   
+      agent/helpers/table_iterator.c, agent/helpers/table_row.c,   
+      agent/snmp_agent.c, local/minimalist/sizetests, snmplib/mib.c:
+
+   classified libnetsnmpagent features
+
+2011-02-26 01:21  hardaker
+
+   * local/minimalist/sizetests:
+
+   reverse the order of the libraries (snmplib first)
+
+2011-02-26 01:21  hardaker
+
+   * local/minimalist/sizetests:
+
+   output cleanup and added agent-mibs and logging options
+
+2011-02-26 01:21  hardaker
+
+   * local/minimalist/sizetests:
+
+   add a default set of arguments
+   calculate resulting sizes
+
+2011-02-26 01:21  hardaker
+
+   * snmplib/dir_utils.c:
+
+   Added a missing ;
+
+2011-02-26 01:20  hardaker
+
+   * local/minimalist/sizetests:
+
+   prefix the output files with a number to indicate order
+
+2011-02-26 01:20  hardaker
+
+   * local/minimalist/sizetests:
+
+   save the results of the system executions
+
+2011-02-26 01:20  hardaker
+
+   * local/minimalist/sizetests:
+
+   enable building of the resulting combinations
+   Add a -n flag for dry-runs
+
+2011-02-26 01:20  hardaker
+
+   * local/minimalist/sizetests:
+
+   enable the -t tag for limiting types
+
+2011-02-26 01:19  hardaker
+
+   * local/minimalist/sizetests:
+
+   Added argument parsing and arguments for selecting and listing
+   types
+
+2011-02-26 01:19  hardaker
+
+   * local/minimalist/sizetests:
+
+   generate configure script arguments from specs
+
+2011-02-26 01:19  hardaker
+
+   * local/minimalist/sizetests:
+
+   added a bunch of new feature options and cleaned up a bit
+
+2011-02-26 01:19  hardaker
+
+   * local/minimalist/sizetests:
+
+   added a new (not yet working) script to test sizing of various
+   argument sets
+
+2011-02-26 00:26  magfr
+
+   * agent/mibgroup/ucd-snmp/dlmod.c:
+
+   Simplify the code. Unify some debug logs.
+
+2011-02-26 00:19  magfr
+
+   * agent/mibgroup/ucd-snmp/dlmod.c:
+
+   Reduce the scope of a few variables
+
+2011-02-26 00:16  magfr
+
+   * agent/mibgroup/ucd-snmp/dlmod.c:
+
+   Remove some unused includes.
+
+2011-02-26 00:15  magfr
+
+   * agent/mibgroup/ucd-snmp/dlmod.c:
+
+   Make it possible to initialize/uninitialize modules with 64
+   character names and not suffer wild writes.
+
+2011-02-26 00:12  magfr
+
+   * agent/mibgroup/ucd-snmp/dlmod.c:
+
+   Code restructuring - put the managed routines before the
+   managment code.
+
+2011-02-26 00:11  magfr
+
+   * agent/mibgroup/ucd-snmp/dlmod.c, agent/mibgroup/ucd-snmp/dlmod.h:
+
+   CHANGES: libnetsnmpmibs: Make all functions in the dlmod module
+   that don't have to be public static
+
+2011-02-26 00:07  magfr
+
+   * agent/mibgroup/ucd-snmp/dlmod.c:
+
+   Rename deinit_dlmod to shutdown_dlmod as that is what it really
+   is about.
+
+2011-02-25 18:24  baerm
+
+   * agent/mibgroup/agent/nsVacmAccessTable.c:
+
+   adding minimalist ifdefs to net-snmp-vacm mib
+
+2011-02-25 16:09  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   properly handle twin children; also sort the child list
+   alphabetically.
+
+2011-02-25 16:09  hardaker
+
+   * snmplib/snmp_logging.c:
+
+   I suppose logging should probably default to being a wanted
+   option :-)
+
+2011-02-25 16:09  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   org-link the files in the output
+
+2011-02-25 16:08  hardaker
+
+   *  Makefile.rules, agent/Makefile.in, agent/mibgroup/Makefile.in,   
+      apps/Makefile.in, apps/snmpnetstat/Makefile.in,   
+      local/minimalist/feature-check, snmplib/Makefile.in:
+
+   make the features-check script track the full source path
+
+2011-02-25 16:08  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   change the function names to match that it's printing to org-mode
+   at the moment.
+
+2011-02-25 16:08  hardaker
+
+   *  snmplib/file_utils.c, snmplib/mib.c, snmplib/oid_stash.c,   
+      snmplib/snmp_api.c, snmplib/snmp_logging.c, snmplib/tools.c:
+
+   last of the feature classification in libnetsnmp
+
+2011-02-25 16:07  hardaker
+
+   * snmplib/keytools.c, snmplib/lcd_time.c, snmplib/scapi.c:
+
+   make the usm_support utilities self-declare themselves as
+   children to
+   make sure they're properly included during dependency ordering
+
+2011-02-25 16:07  hardaker
+
+   *  snmplib/callback.c, snmplib/cert_util.c, snmplib/check_varbind.c, 
+        snmplib/container.c, snmplib/data_list.c,   
+      snmplib/default_store.c, snmplib/fd_event_manager.c,   
+      snmplib/file_utils.c, snmplib/keytools.c, snmplib/snmpusm.c:
+
+   superstructuralizationizing the features
+
+2011-02-25 16:07  hardaker
+
+   *  snmplib/read_config.c, snmplib/snmp-tc.c, snmplib/snmp_client.c,  
+       snmplib/snmp_enum.c, snmplib/snmp_transport.c, snmplib/system.c, 
+        snmplib/text_utils.c, snmplib/tools.c,   
+      snmplib/transports/snmpUnixDomain.c, snmplib/ucd_compat.c:
+
+   significant parent/child feature classification
+
+2011-02-25 16:06  hardaker
+
+   * snmplib/snmp_api.c, snmplib/snmpusm.c:
+
+   classify a few components into a top-level libnetsnmp component
+
+2011-02-25 16:06  hardaker
+
+   *  snmplib/keytools.c, snmplib/lcd_time.c, snmplib/scapi.c,   
+      snmplib/snmpusm.c:
+
+   structurize the usm features
+
+2011-02-25 16:06  hardaker
+
+   *  snmplib/container.c, snmplib/container_iterator.c,   
+      snmplib/container_list_ssll.c, snmplib/container_null.c,   
+      snmplib/dir_utils.c:
+
+   structure the container features into a hierarchy
+
+2011-02-25 16:05  hardaker
+
+   * snmplib/snmp_logging.c:
+
+   group the logging handlers under a parent feature
+
+2011-02-25 16:05  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   fix the expect argument count
+
+2011-02-25 16:05  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   fix the name of the expected input file
+
+2011-02-25 16:05  hardaker
+
+   * local/minimalist/feature-makedocs:
+
+   argument parsing and usage() output
+
+2011-02-25 16:04  hardaker
+
+   *  agent/helpers/stash_cache.c, agent/helpers/stash_to_next.c,   
+      agent/helpers/table_dataset.c, agent/helpers/table_iterator.c,   
+      agent/mibgroup/examples/netSnmpHostsTable.c,   
+      agent/mibgroup/mibII/ipCidrRouteTable.c, snmplib/oid_stash.c:
+
+   - added two oid_stash functions as individual features
+   - cleaned up some warnings in the table_iterator code
+
 2011-02-25 12:55  dts12
 
    * dist/makerelease.xml:
@@ -612,6 +32708,161 @@
 
    Avoid a possible crash if the engineID is not available or set.
 
+2011-02-25 00:40  baerm
+
+   *  agent/mibgroup/disman/event/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/event/mteEventSetTable.c,   
+      agent/mibgroup/disman/event/mteEventTable.c,   
+      agent/mibgroup/disman/event/mteObjectsTable.c,   
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c,   
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c,   
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c,   
+      agent/mibgroup/disman/event/mteTriggerTable.c,   
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c,   
+      agent/mibgroup/disman/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/mteObjectsTable.c,   
+      agent/mibgroup/disman/mteObjectsTable.h,   
+      agent/mibgroup/disman/mteTriggerBooleanTable.c,   
+      agent/mibgroup/disman/mteTriggerBooleanTable.h,   
+      agent/mibgroup/disman/mteTriggerDeltaTable.c,   
+      agent/mibgroup/disman/mteTriggerDeltaTable.h,   
+      agent/mibgroup/disman/mteTriggerExistenceTable.c,   
+      agent/mibgroup/disman/mteTriggerExistenceTable.h,   
+      agent/mibgroup/disman/mteTriggerTable.c,   
+      agent/mibgroup/disman/mteTriggerTable.h,   
+      agent/mibgroup/disman/mteTriggerThresholdTable.c,   
+      agent/mibgroup/disman/mteTriggerThresholdTable.h,   
+      agent/mibgroup/disman/nslookup/lookupCtlTable.c,   
+      agent/mibgroup/disman/nslookup/lookupCtlTable.h:
+
+   adding ifdef code for minimalist support of diffman mib
+
+2011-02-24 19:21  baerm
+
+   *  agent/mibgroup/host/hrSWRunTable.c,   
+      agent/mibgroup/host/hr_system.c, agent/mibgroup/host/hr_system.h:
+
+   Adding minimalist ifdefs to host resource mib
+
+2011-02-24 05:46  hardaker
+
+   * agent/helpers/table_iterator.c, snmplib/data_list.c:
+
+   mark the data_list function that's only used in stach_caching as
+   a feature
+
+2011-02-24 05:46  hardaker
+
+   * agent/helpers/table_iterator.c:
+
+   whoops.
+
+2011-02-24 05:46  hardaker
+
+   * agent/helpers/table_iterator.c:
+
+   more missing stash references
+
+2011-02-24 05:45  hardaker
+
+   * agent/helpers/table_iterator.c:
+
+   ifdefed/featured out a missing stash_cache section
+
+2011-02-24 05:45  hardaker
+
+   * agent/mibgroup/util_funcs.c:
+
+   make the prefix_info more hierarchical and sub-feature the unused
+   one
+
+2011-02-24 05:45  hardaker
+
+   * local/minimalist/find-unused-code:
+
+   do include the perl/python code when searching for files
+
+2011-02-24 05:45  hardaker
+
+   * agent/helpers/table_tdata.c:
+
+   make the semi-used table_tdata functions children of
+   table_tdata_all
+   instead of just table_tdata
+
+2011-02-23 22:00  magfr
+
+   * agent/helpers/table_tdata.c:
+
+   Correct typo
+
+2011-02-23 21:54  magfr
+
+   * snmplib/parse.c:
+
+   Correct typo
+
+2011-02-23 21:10  nba
+
+   * agent/snmp_vars.c:
+
+   proper include of prototype
+
+2011-02-23 21:07  hardaker
+
+   *  configure, configure.d/config_modules_agent,   
+      configure.d/config_modules_transports,   
+      configure.d/config_project_with_enable:
+
+   compat some feature header chicken and egg problems
+
+2011-02-23 15:27  nba
+
+   * snmplib/snmpusm.c:
+
+   unsigned juggling to remove warnings
+
+2011-02-23 15:23  nba
+
+   *  agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c,
+         agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c:
+
+   unsigned juggling to remove warnings
+
+2011-02-23 15:20  nba
+
+   * agent/mibgroup/ip-mib.h:
+
+   Enable (probably forgotten) ipAddressPrefixTable
+
+2011-02-23 14:30  hardaker
+
+   *  local/minimalist, local/minimalist/feature-check,   
+      local/minimalist/feature-makedocs,   
+      local/minimalist/feature-remove,   
+      local/minimalist/find-unused-code,   
+      local/minimalist/removeifdefcode.pl:
+
+   added other missing 'new' files not included in the minimalist
+   patch file
+
+2011-02-23 09:54  nba
+
+   *  agent/mibgroup/tcp-mib/data_access/tcpConn_freebsd4.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_netbsd.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_openbsd.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_freebsd4.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_netbsd.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_openbsd.c:
+
+   Loading IPv6 data is a no-no when IPv6 not enabled
+
 2011-02-23 09:36  nba
 
    * apps/snmptable.c:
@@ -625,44 +32876,347 @@
 
    FreeBSD 8 support
 
+2011-02-23 01:48  hardaker
+
+   * include/net-snmp/net-snmp-features.h:
+
+   added missing net-snmp-features.h
+
+2011-02-23 00:01  hardaker
+
+   *  Makefile.in, Makefile.rules, Makefile.top, agent/Makefile.in,   
+      agent/agent_handler.c, agent/agent_index.c,   
+      agent/agent_read_config.c, agent/agent_registry.c,   
+      agent/agent_trap.c, agent/helpers/all_helpers.c,   
+      agent/helpers/baby_steps.c, agent/helpers/cache_handler.c,   
+      agent/helpers/instance.c, agent/helpers/mode_end_call.c,   
+      agent/helpers/multiplexer.c, agent/helpers/old_api.c,   
+      agent/helpers/read_only.c, agent/helpers/row_merge.c,   
+      agent/helpers/scalar.c, agent/helpers/scalar_group.c,   
+      agent/helpers/snmp_get_statistic.c, agent/helpers/stash_cache.c,  
+       agent/helpers/stash_to_next.c, agent/helpers/table.c,   
+      agent/helpers/table_array.c, agent/helpers/table_container.c,   
+      agent/helpers/table_data.c, agent/helpers/table_dataset.c,   
+      agent/helpers/table_iterator.c, agent/helpers/table_row.c,   
+      agent/helpers/table_tdata.c, agent/helpers/watcher.c,   
+      agent/mibgroup/Makefile.in, agent/mibgroup/Rmon/alarmTable.c,   
+      agent/mibgroup/agent/extend.c, agent/mibgroup/agent/nsCache.c,   
+      agent/mibgroup/agent/nsLogging.c,   
+      agent/mibgroup/agent/nsModuleTable.c,   
+      agent/mibgroup/agent/nsTransactionTable.c,   
+      agent/mibgroup/agent/nsVacmAccessTable.c,   
+      agent/mibgroup/agentx/agentx_config.c,   
+      agent/mibgroup/agentx/client.c, agent/mibgroup/agentx/master.c,   
+      agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/disman/event/mteEvent.c,   
+      agent/mibgroup/disman/event/mteEventConf.c,   
+      agent/mibgroup/disman/event/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/event/mteEventSetTable.c,   
+      agent/mibgroup/disman/event/mteEventTable.c,   
+      agent/mibgroup/disman/event/mteObjectsTable.c,   
+      agent/mibgroup/disman/event/mteTrigger.c,   
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c,   
+      agent/mibgroup/disman/event/mteTriggerConf.c,   
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c,   
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c,   
+      agent/mibgroup/disman/event/mteTriggerTable.c,   
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c,   
+      agent/mibgroup/disman/expr/expErrorTable.c,   
+      agent/mibgroup/disman/expr/expExpressionConf.c,   
+      agent/mibgroup/disman/expr/expExpressionTable.c,   
+      agent/mibgroup/disman/expr/expObjectConf.c,   
+      agent/mibgroup/disman/expr/expObjectTable.c,   
+      agent/mibgroup/disman/expression/expExpressionTable.c,   
+      agent/mibgroup/disman/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/mteEventTable.c,   
+      agent/mibgroup/disman/mteTriggerTable.c,   
+      agent/mibgroup/disman/schedule/schedConf.c,   
+      agent/mibgroup/disman/schedule/schedCore.c,   
+      agent/mibgroup/disman/schedule/schedTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c,   
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c,
+         agent/mibgroup/examples/data_set.c,   
+      agent/mibgroup/examples/delayed_instance.c,   
+      agent/mibgroup/examples/netSnmpHostsTable.c,   
+      agent/mibgroup/examples/netSnmpHostsTable_checkfns.c,   
+      agent/mibgroup/examples/scalar_int.c,   
+      agent/mibgroup/hardware/cpu/cpu.c,   
+      agent/mibgroup/hardware/cpu/cpu_kinfo.c,   
+      agent/mibgroup/hardware/cpu/cpu_nlist.c,   
+      agent/mibgroup/hardware/cpu/cpu_perfstat.c,   
+      agent/mibgroup/hardware/cpu/cpu_sysctl.c,   
+      agent/mibgroup/hardware/memory/hw_mem.c,   
+      agent/mibgroup/header_complex.c,   
+      agent/mibgroup/host/data_access/swinst.c,   
+      agent/mibgroup/host/data_access/swinst_darwin.c,   
+      agent/mibgroup/host/data_access/swinst_pkginfo.c,   
+      agent/mibgroup/host/data_access/swinst_rpm.c,   
+      agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/host/hr_filesys.c,   
+      agent/mibgroup/host/hr_swinst.c, agent/mibgroup/host/hr_system.c, 
+        agent/mibgroup/host/hrh_filesys.c,   
+      agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable.h,   
+      agent/mibgroup/if-mib/ifTable/ifTable_data_access.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable.h,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_constants.h,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c,
+        
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c,
+         agent/mibgroup/ip-mib/data_access/arp_common.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c,   
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c,
+         agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c,  
+      
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c,  
+      
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c,
+         agent/mibgroup/ip-mib/ip_scalars.c,   
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c,
+         agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/interfaces.c,
+         agent/mibgroup/mibII/ip.c,   
+      agent/mibgroup/mibII/ipCidrRouteTable.c,   
+      agent/mibgroup/mibII/ipv6.c, agent/mibgroup/mibII/kernel_linux.c, 
+        agent/mibgroup/mibII/setSerialNo.c,   
+      agent/mibgroup/mibII/snmp_mib_5_5.c,   
+      agent/mibgroup/mibII/sysORTable.c,   
+      agent/mibgroup/mibII/system_mib.c, agent/mibgroup/mibII/tcp.c,   
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udp.c,   
+      agent/mibgroup/mibII/vacm_conf.c,   
+      agent/mibgroup/mibII/vacm_context.c,   
+      agent/mibgroup/mibII/vacm_vars.c,   
+      agent/mibgroup/mibII/vacm_vars.h,   
+      agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c,   
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.h,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/notification/snmpNotifyTable.h,   
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c,
+         agent/mibgroup/sctp-mib/sctpTables_common.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c,
+        
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c,
+        
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+        
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c,
+         agent/mibgroup/snmpv3/snmpEngine.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.c,   
+      agent/mibgroup/snmpv3/usmStats.c,   
+      agent/mibgroup/snmpv3/usmStats_5_5.c,   
+      agent/mibgroup/snmpv3/usmUser.c, agent/mibgroup/snmpv3/usmUser.h, 
+        agent/mibgroup/snmpv3mibs.h,   
+      agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetAddrEntry.h,   
+      agent/mibgroup/target/snmpTargetParamsEntry.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.h,   
+      agent/mibgroup/target/target.c,   
+      agent/mibgroup/target/target_counters.c,   
+      agent/mibgroup/target/target_counters.h,   
+      agent/mibgroup/target/target_counters_5_5.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_common.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_solaris2.c,   
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c,
+         agent/mibgroup/testhandler.c,   
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c,
+         agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c,   
+      agent/mibgroup/ucd-snmp/dlmod.c,   
+      agent/mibgroup/ucd-snmp/extensible.c,   
+      agent/mibgroup/ucd-snmp/lmSensors.c,   
+      agent/mibgroup/ucd-snmp/pass.c,   
+      agent/mibgroup/ucd-snmp/pass_persist.c,   
+      agent/mibgroup/ucd-snmp/proc.c, agent/mibgroup/ucd-snmp/proxy.c,  
+       agent/mibgroup/ucd-snmp/versioninfo.c,   
+      agent/mibgroup/ucd-snmp/vmstat_linux.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c,   
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c,
+         agent/mibgroup/util_funcs.c, agent/mibgroup/utilities/iquery.c,
+         agent/mibgroup/winExtDLL.c, agent/snmp_agent.c,   
+      agent/snmp_vars.c, agent/snmpd.c, apps/Makefile.in,   
+      apps/agentxtrap.c, apps/snmpnetstat/Makefile.in,   
+      apps/snmpnetstat/main.c, apps/snmpnetstat/netstat.h,   
+      apps/snmpnetstat/route.c, apps/snmptest.c, apps/snmptranslate.c,  
+       apps/snmptrapd.c, apps/snmptrapd_handlers.c,   
+      apps/snmptrapd_sql.c, configure, configure.ac,   
+      configure.d/config_modules_agent, configure.d/config_modules_lib, 
+        configure.d/config_modules_security_modules,   
+      configure.d/config_modules_transports,   
+      configure.d/config_os_libs2,   
+      configure.d/config_project_perl_python,   
+      configure.d/config_project_with_enable,   
+      include/net-snmp/agent/snmp_agent.h,   
+      include/net-snmp/library/libsnmp.h,   
+      include/net-snmp/library/snmp.h,   
+      include/net-snmp/library/snmp_api.h,   
+      include/net-snmp/library/snmp_client.h,   
+      include/net-snmp/library/snmp_secmod.h,   
+      include/net-snmp/library/snmpksm.h,   
+      include/net-snmp/library/snmptsm.h,   
+      include/net-snmp/library/snmpusm.h,   
+      include/net-snmp/library/snmpv3.h,   
+      include/net-snmp/net-snmp-config.h.in, perl/OID/OID.xs,   
+      perl/SNMP/SNMP.xs, perl/agent/agent.xs, snmplib/Makefile.in,   
+      snmplib/callback.c, snmplib/cert_util.c, snmplib/check_varbind.c, 
+        snmplib/container.c, snmplib/container_iterator.c,   
+      snmplib/container_list_ssll.c, snmplib/container_null.c,   
+      snmplib/data_list.c, snmplib/default_store.c,   
+      snmplib/dir_utils.c, snmplib/fd_event_manager.c,   
+      snmplib/file_utils.c, snmplib/int64.c, snmplib/keytools.c,   
+      snmplib/lcd_time.c, snmplib/mib.c, snmplib/oid_stash.c,   
+      snmplib/parse.c, snmplib/read_config.c, snmplib/scapi.c,   
+      snmplib/snmp-tc.c, snmplib/snmp_api.c, snmplib/snmp_client.c,   
+      snmplib/snmp_enum.c, snmplib/snmp_logging.c,   
+      snmplib/snmp_openssl.c, snmplib/snmp_parse_args.c,   
+      snmplib/snmp_secmod.c, snmplib/snmp_transport.c,   
+      snmplib/snmpksm.c, snmplib/snmptsm.c, snmplib/snmpusm.c,   
+      snmplib/snmpv3.c, snmplib/system.c, snmplib/text_utils.c,   
+      snmplib/tools.c, snmplib/transports/snmpDTLSUDPDomain.c,   
+      snmplib/transports/snmpSSHDomain.c,   
+      snmplib/transports/snmpTLSBaseDomain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c,   
+      snmplib/transports/snmpUnixDomain.c, snmplib/ucd_compat.c,   
+      testing/fulltests/default/Sv3config,   
+      testing/fulltests/default/Sv3usmconfigbase,   
+      testing/fulltests/default/Sv3vacmconfig,   
+      testing/fulltests/default/T049snmpv3inform_simple,   
+      testing/fulltests/default/T049snmpv3informauth_simple,   
+      testing/fulltests/default/T057trapdauthtest2_simple,   
+      testing/fulltests/default/T057trapdauthtest3_simple,   
+      testing/fulltests/default/T057trapdauthtest_simple,   
+      testing/fulltests/default/T060trapdperl_simple,   
+      testing/fulltests/default/T061agentperl_simple,   
+      testing/fulltests/default/T113agentxtrap_simple,   
+      testing/fulltests/default/T114agentxagentxtrap_simple:
+
+   NEWS: packaging: Enable micro-and-macro-feature management within
+   Net-SNMP; this adds a number of new flags to configure
+   (--enable-minimalist and --enable-read-only). These changes are
+   designed to remove much of the inline code that isn't always
+   necessary or desired. Scripts exist (and will be improved) to
+   stip out unused components from the code entirely to enable a
+   shorter review process for upgrading to new releases. This work
+   was done by Wes Hardaker and Michael Baer from SPARTA, Inc. but
+   is being checked in as a large patch since converting the micro
+   patches from git to svn turend out to be impossible
+
+2011-02-22 23:55  hardaker
+
+   * FAQ:
+
+   use the wiki URL instead of the tutorial-5 URL for the snmptrap
+   tutorial
+
+2011-02-21 22:40  nba
+
+   * agent/mibgroup/host/data_access/swrun_kinfo.c:
+
+   proper process status values for netbsd
+
+2011-02-21 22:39  nba
+
+   * snmplib/scapi.c:
+
+   conditionalize variable
+
+2011-02-21 22:20  nba
+
+   * agent/mibgroup/tcp-mib/data_access/tcpConn.h:
+
+   tcp-mib/udp-mib support for the *bsds
+
+2011-02-21 22:16  nba
+
+   *  agent/mibgroup/mibII.h,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_freebsd4.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_netbsd.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_openbsd.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint.h,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_freebsd4.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_netbsd.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_openbsd.c,   
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c:
+
+   tcp-mib/udp-mib support for the *bsds
+
+2011-02-21 22:05  nba
+
+   * 
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c:
+
+   Properly end debug message with newline
+
+2011-02-21 22:04  nba
+
+   * agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c:
+
+   remove var that shadows the useful one
+
+2011-02-21 22:02  nba
+
+   * agent/mibgroup/mibII/ipv6.c:
+
+   major fiddling to get things working for openbsd too. This should
+   really be reworked to use the tcp-mib/udp-mib/data_access
+
+2011-02-21 21:59  nba
+
+   * agent/mibgroup/mibII/tcpTable.c:
+
+   fix tcp states for dragonflybsd
+
+2011-02-21 21:57  nba
+
+   * agent/mibgroup/mibII.h:
+
+   enable new tcp/udp mibs for solaris
+
+2011-02-21 21:53  magfr
+
+   * agent/mibgroup/hardware/sensors/lmsensors_v3.c:
+
+   Do not use c99
+
 2011-02-21 19:08  hardaker
 
    * dist/makerelease.xml:
 
    Updated comment about where makerelease comes from (now github)
 
-2011-02-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:
@@ -671,6 +33225,61 @@
    UDP socket
    (Fixes a bug introduced in r19511.)
 
+2011-02-18 14:43  jsafranek
+
+   *  agent/mibgroup/hardware/fsys/fsys_getfsstats.c,   
+      agent/mibgroup/hardware/fsys/fsys_mntctl.c,   
+      agent/mibgroup/hardware/fsys/fsys_mntent.c,   
+      agent/mibgroup/hardware/fsys/hw_fsys.c,   
+      agent/mibgroup/host/hrh_storage.c,   
+      include/net-snmp/agent/ds_agent.h,   
+      include/net-snmp/agent/hardware/fsys.h, man/snmpd.conf.5.def:
+
+   CHANGES: snmpd: reworked hrStorageTable to support large
+   filesystems.
+   
+   The hrStorageAllocationUnits does not report real allocation unit
+   size,
+   but some calculated value so hrStorageAllocationUnits *
+   hrStorageSize
+   gives real size of the filesystem.
+   
+   This calculation happens only when hrStorageSize is too small
+   (32bits)
+   for filesystem size, e.g. filesystems larger than 8TB with 4096
+   bytes
+   block size.
+   
+   This calculation can be turned off by 'realStorageUnits' config
+   option.
+
+2011-02-18 14:29  jsafranek
+
+   *  agent/mibgroup/hardware/fsys/fsys_mntent.c,   
+      agent/mibgroup/hardware/fsys/mnttypes.h:
+
+   Add JFS and XFS to list of known filesustems
+
+2011-02-17 11:28  jsafranek
+
+   * local/snmp-bridge-mib:
+
+   Fixed snmp-bridge-mib in standalone (agentx) version.
+   Don't declare local variables inside block. Patch provided by
+   Jens Osterkamp.
+
+2011-02-16 14:56  jsafranek
+
+   * local/snmp-bridge-mib:
+
+   Fixed snmp-bridge-mib when working in the embedded perl.
+
+2011-02-16 13:16  jsafranek
+
+   * local/snmp-bridge-mib:
+
+   Fixed GETNEXT processing in snmp-bridge-mib.
+
 2011-02-15 22:24  nba
 
    * agent/mibgroup/mibII/udpTable.c:
@@ -683,12 +33292,24 @@
 
    remove redundant includes
 
-2011-02-15 21:48  nba
+2011-02-15 21:46  nba
 
-   * configure, include/net-snmp/net-snmp-config.h.in:
+   * configure:
 
    rerun autoheader/autoconf
 
+2011-02-15 21:33  nba
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   include sys/types.h before sys/socket.h
+
+2011-02-15 21:26  nba
+
+   * m4/netsnmp_search_libs.m4:
+
+   Too much quoting is bad
+
 2011-02-15 21:11  nba
 
    *  agent/mibgroup/mibII.h, agent/mibgroup/mibII/ipv6.c,   
@@ -710,6 +33331,38 @@
 
    Filter IPv6 entries from IPv4 table
 
+2011-02-15 20:42  nba
+
+   *  agent/mibgroup/host/data_access/swrun.h,   
+      agent/mibgroup/host/data_access/swrun_kinfo.c:
+
+   Proper use of getproc2 and dragonfly support
+
+2011-02-15 20:41  nba
+
+   * agent/mibgroup/hardware/fsys/fsys_getfsstats.c:
+
+   getvfsstat is only for NetBSD
+
+2011-02-15 20:39  nba
+
+   * configure.d/config_os_libs1, configure.d/config_os_libs2:
+
+   Detect need for -lkvm in proper time
+
+2011-02-15 19:42  hardaker
+
+   * snmplib/snmp_logging.c:
+
+   remove the statement about enabling stderr by default.
+
+2011-02-15 19:42  hardaker
+
+   * agent/mibgroup/mibII/vacm_vars.c:
+
+   remove 3 functions that as far as I can tell have possibly never
+   been used
+
 2011-02-14 14:38  bvassche
 
    * agent/snmpd.c:
@@ -738,6 +33391,19 @@
    CHANGES: snmpd: PATCHES: 3152412: Handle (and report) problems
    reading /proc/vmstat
 
+2011-02-09 07:34  bvassche
+
+   * include/net-snmp/library/container.h:
+
+   Building DLL and Perl modules with win32/build.bat works again.
+
+2011-02-08 19:38  hardaker
+
+   * agent/helpers/instance.c, include/net-snmp/agent/instance.h:
+
+   Remove the functions marked as deprecated and safe for removal in
+   5.6.
+
 2011-02-08 17:41  hardaker
 
    * perl/SNMP/SNMP.xs, perl/agent/agent.pm:
@@ -753,6 +33419,31 @@
    CHANGES: snmpd: Fix a strlen calculation as pointed out by
    Konstantin Baydarov
 
+2011-02-07 20:07  hardaker
+
+   * man/snmp.conf.5.def:
+
+   document the 3 new SSH config tokens
+
+2011-02-07 20:07  hardaker
+
+   * snmplib/transports/snmpSSHDomain.c:
+
+   CHANGES: libnetsnmp: made the SSH transport configurable as it
+   should be.
+
+2011-02-07 20:07  hardaker
+
+   * include/net-snmp/library/default_store.h:
+
+   Added default_store strings for ssh: username, pubkey, privkey
+
+2011-02-06 06:34  magfr
+
+   * agent/mibgroup/mibII/system_mib.c:
+
+   Simplify the control flow to allow for more optimization.
+
 2011-02-03 22:42  tanders
 
    * snmplib/snmp_api.c:
@@ -760,6 +33451,20 @@
    CHANGES: snmplib: BUG: 3171878: Using SNMPv3 context does not
    work
 
+2011-02-02 07:09  magfr
+
+   * agent/snmpd.c:
+
+   Include the USING_ variables from the agent library as well, in
+   particular the
+   USING_AGENTX_* variables.
+
+2011-02-01 13:07  jsafranek
+
+   * agent/mibgroup/ip-mib/data_access/systemstats_common.c:
+
+   Don't check for 32/64bit wrap in calculated entries.
+
 2011-02-01 09:41  jsafranek
 
    * agent/mibgroup/ip-mib/data_access/systemstats_common.c:
@@ -775,6 +33480,12 @@
    long time of
    uptime and it is very hard to reproduce.
 
+2011-02-01 07:19  magfr
+
+   * agent/snmpd.c:
+
+   Remove some unused includes
+
 2011-01-31 22:39  nba
 
    * agent/mibgroup/disman/nslookup/lookupCtlTable.c:
@@ -804,6 +33515,18 @@
 
    properly name initalizer function for cpu_kinfo
 
+2011-01-30 15:21  magfr
+
+   * apps/agentxtrap.c:
+
+   Reduce the number of used include files.
+
+2011-01-30 09:35  magfr
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.h:
+
+   CHANGES: snmpd: Add missing function declaration
+
 2011-01-30 01:06  tanders
 
    * agent/mibgroup/ucd-snmp/diskio.c:
@@ -811,6 +33534,12 @@
    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:
@@ -825,6 +33554,18 @@
    CHANGES: mib2c: make the mib2c foreach ranges work as advertised
    in the comments.
 
+2011-01-26 16:49  hardaker
+
+   * testing/fulltests/default/T027snmpv3Defaults_simple:
+
+   a test to ensure v3/USM snmp.conf settings work
+
+2011-01-26 16:49  hardaker
+
+   * dist/makerelease.xml:
+
+   remove testopts
+
 2011-01-26 09:12  jsafranek
 
    * agent/mibgroup/ucd-snmp/proc.c:
@@ -836,11 +33577,54 @@
    fgets() from it. snmpd should continue with other processes and
    not to stop.
 
-2011-01-19 06:20  nba
+2011-01-19 13:57  jsafranek
+
+   * configure, configure.d/config_os_libs1:
+
+   Make us compatible with rpm-4.9, rpmGetFilesystemList does not
+   exist anymore, so the configure script should not check it.
+
+2011-01-19 06:31  nba
+
+   * configure.d/config_os_libs1:
+
+   diskIOLAx requires exp which may require -lm
+
+2011-01-18 22:39  nba
+
+   * include/net-snmp/net-snmp-config.h.in:
+
+   autoheader
+
+2011-01-18 22:37  nba
+
+   * agent/mibgroup/if-mib/data_access/interface.h:
+
+   Find proper if-mib interface for NetBSD
+
+2011-01-18 22:36  nba
+
+   * agent/mibgroup/host/hr_swrun.c:
+
+   typo
+
+2011-01-18 22:35  nba
 
    * acconfig.h:
 
-   Define DRAGONFLYID
+   define dragonflyid
+
+2011-01-14 13:24  jsafranek
+
+   *  agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.h,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c:
+
+   Add IPv6 support for creating rows in ipAddresstable.
+   
+   Using SNMP SET, it is now possible to create and destroy IPv6
+   addresses on an interface.
 
 2011-01-14 12:28  jsafranek
 
@@ -866,6 +33650,12 @@
 
    remove completely useless and nonsensical code
 
+2011-01-13 17:24  rstory
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   allocate space for array NULL termination
+
 2011-01-13 15:56  dts12
 
    * dist/makerelease.xml:
@@ -879,9 +33669,16 @@
 
    Remove C++ comments
 
+2011-01-13 13:17  dts12
+
+   * agent/auto_nlist.c:
+
+   Fix broken patch
+
 2011-01-13 12:14  dts12
 
-   * configure, configure.in:
+   *  configure, configure.d/config_os_headers,   
+      configure.d/config_os_libs1:
 
    Configure fixes for DragonFly support
 
@@ -900,6 +33697,30 @@
 
    Fix typo
 
+2011-01-12 21:23  rstory
+
+   * agent/mibgroup/notification/snmpNotifyTable.c:
+
+   merge duplicated shutdown functions
+
+2011-01-12 20:11  bvassche
+
+   *  agent/helpers/table_iterator.c,   
+      include/net-snmp/agent/table_iterator.h:
+
+   Reimplement netsnmp_register_table_iterator2() by adding the flag
+   NETSNMP_ITERATOR_OWNS_IINFO for
+   netsnmp_iterator_info. Remove
+   netsnmp_get_table_iterator_handler2() because it is now
+   superfluous.
+
+2011-01-12 19:22  bvassche
+
+   * agent/snmp_vars.c:
+
+   Avoid that the compiler complains about a missing declaration for
+   netsnmp_certs_agent_init().
+
 2011-01-12 19:20  bvassche
 
    * 
@@ -927,28 +33748,11 @@
    
    original patch fixed several issues, other parts applied earlier
 
-2011-01-12 14:37  rstory
+2011-01-11 17:27  rstory
 
-   *  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/ipSystemStatsTable/ipSystemStatsTable.c,   
-      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.c,   
-      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.c,   
-      agent/mibgroup/notification-log-mib/notification_log.c,   
-      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c,
-         agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.c:
+   * include/net-snmp/library/snmp_transport.h:
 
-   CHANGES: agent: MIB-specific leak-at-exit fixes.
-   
-   backport applicable parts of r19533 from trunk
+   do not include ipv6 struct if ipv6 is not enabled
 
 2011-01-11 16:04  dts12
 
@@ -993,24 +33797,22 @@
 
 2011-01-11 14:36  dts12
 
-   * configure, configure.in:
+   * 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
+2011-01-11 13:34  jsafranek
 
-   * 
-      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c,
-        
-      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c:
+   * snmplib/transports/snmpUDPBaseDomain.c:
 
-   revert PATCH 3053436: tcpConnectionTable_data_access invalid
-   memory access
+   CHANGES: snmplib: from Bill Fenner: fix sending of UDP responses
+   from multihomed agents.
    
-   the bug this is fixing was introduced in r17719, and fixed in
-   r17861.
+   Try to send the response as it was before Net-SNMP 5.6 (assuming
+   the appropriate request was unicast) and only if it fails try to
+   set if_index (the request must be broadcast).
 
 2011-01-11 13:22  dts12
 
@@ -1021,21 +33823,28 @@
 
 2011-01-11 12:24  dts12
 
-   * configure, configure.in:
+   * 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:
+   * snmplib/transports/snmpUDPIPv6Domain.c:
 
    Missing type under darwin
    [From NetBSD patch archive]
 
+2011-01-11 12:10  dts12
+
+   * agent/mibgroup/ucd-snmp/diskio.c:
+
+   NetBSD support for Disk I/O stats
+   [From NetBSD patch archive]
+
 2011-01-11 12:01  dts12
 
-   *  acconfig.h, configure, configure.in,   
+   *  configure, configure.d/config_os_struct_members,   
       include/net-snmp/net-snmp-config.h.in:
 
    Handle systems with 'struct timespec ifnet.if_lastchange' (rather
@@ -1061,6 +33870,12 @@
    CHANGES: NetBSD: Retrieve MIB-II network statistics via sysctl
    [From NetBSD patch archive]
 
+2011-01-11 07:04  nba
+
+   * agent/mibgroup/if-mib/data_access/interface_linux.c:
+
+   Fix for pci_lookup_name and RHEL4
+
 2011-01-10 16:56  dts12
 
    * agent/mibgroup/mibII/route_write.c:
@@ -1091,6 +33906,23 @@
    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:
@@ -1115,13 +33947,22 @@
 
    *  agent/mibgroup/hardware/cpu/cpu_nlist.c,   
       agent/mibgroup/hardware/cpu/cpu_sysctl.c,   
-      agent/mibgroup/hardware/memory/memory_netbsd.c:
+      agent/mibgroup/hardware/memory/memory_netbsd.c,   
+      agent/mibgroup/host/data_access/swrun_kinfo.c:
 
    sysctl takes a 'size_t' variable for the size parameter
 
+2011-01-08 08:30  magfr
+
+   * configure, configure.d/config_modules_security_modules:
+
+   CHANGES: building: Fix --with-security-modules handling
+   Allow repeated modules (tsm,tsm) as well as defailt modules (usm)
+   Move the generation of the files after the checking
+
 2011-01-08 00:47  magfr
 
-   * acconfig.h:
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in:
 
    Update acconfig.h with changes from r19819.
    Rerun autoheader.
@@ -1277,12 +34118,45 @@
    CHANGES: snmpd: PATCHES: 2941811: Handle successful requests with
    reqID 0
 
-2011-01-05 16:31  dts12
+2011-01-06 09:38  bvassche
 
-   * apps/snmptrapd_handlers.c:
+   *  agent/mibgroup/agent/nsModuleTable.c,   
+      agent/mibgroup/agent/nsTransactionTable.c:
 
-   Use the appropriate API call for reporting config errors.
-   ("Don't be so impatient, Dave....")
+   Spelling fix: Initialzies -> Initializes.
+
+2011-01-06 09:35  bvassche
+
+   *  agent/helpers/table_iterator.c, agent/mibgroup/agent/nsCache.c,   
+      agent/mibgroup/agent/nsDebug.c, agent/mibgroup/agent/nsLogging.c, 
+        agent/mibgroup/agent/nsModuleTable.c,   
+      agent/mibgroup/agent/nsTransactionTable.c,   
+      agent/mibgroup/agent/nsVacmAccessTable.c,   
+      agent/mibgroup/examples/netSnmpHostsTable.c,   
+      agent/mibgroup/mibII/icmp.c,   
+      agent/mibgroup/mibII/ipCidrRouteTable.c,   
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udpTable.c, 
+        agent/mibgroup/mibII/vacm_context.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/notification/snmpNotifyTable.h,   
+      agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetAddrEntry.h,   
+      include/net-snmp/agent/table_iterator.h:
+
+   CHANGES: agent: Added netsnmp_get_table_iterator2().
+   CHANGES: agent: Added netsnmp_register_table_iterator2().
+   CHANGES: agent: Added netsnmp_handler_owns_iterator_info().
+   CHANGES: agent: Fixed leak-at-exit triggered by snmpNotifyTable.
+   CHANGES: agent: Fixed leak-at-exit triggered by
+   snmpTargetAddrTable.
+   Also, restored backwards compatibility of
+   netsnmp_register_table_iterator().
+
+2011-01-06 04:45  rstory
+
+   * include/net-snmp/library/snmp_transport.h:
+
+   include sys/socket.h if available
 
 2011-01-05 14:06  dts12
 
@@ -1298,12 +34172,164 @@
    CHANGES: snmptrapd: BUGS: 3151254: Fix crash with invalid
    traphandle directive
 
+2011-01-05 09:55  dts12
+
+   * apps/snmpwalk.c:
+
+   Expand tab characters
+
+2011-01-04 22:06  magfr
+
+   * snmplib/snmp_transport.c:
+
+   CHANGES: snmplib: Check that the argument to
+   netsnmp_transport_copy is non-NULL
+
 2011-01-04 18:24  hardaker
 
    * COPYING:
 
    Copyright update for 2011
 
+2011-01-04 12:01  bvassche
+
+   * agent/mibgroup/mibII/var_route.c:
+
+   Fix compiler warnings triggered by the Win32 MIB-II
+   implementation.
+
+2011-01-03 19:48  bvassche
+
+   * agent/mibgroup/sctp-mib/sctpScalars.c:
+
+   Removed two unused variables.
+
+2011-01-03 19:47  bvassche
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   Fixed a recently introduced mismatch between format specification
+   and argument list.
+
+2011-01-03 19:47  bvassche
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   Get rid of recently introduced compiler warnings by adding two
+   #include directives and commenting out two unused functions.
+
+2011-01-02 05:48  rstory
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   don't free callers ptr
+
+2011-01-02 05:48  rstory
+
+   *  agent/agent_registry.c, agent/helpers/table.c,   
+      agent/helpers/table_data.c,   
+      agent/mibgroup/disman/event/mteEvent.c,   
+      agent/mibgroup/disman/event/mteObjects.c,   
+      agent/mibgroup/disman/nslookup/lookupCtlTable.c,   
+      agent/mibgroup/disman/ping/pingCtlTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c,   
+      agent/mibgroup/hardware/cpu/cpu.c,   
+      agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/ip-forward-mib/data_access/route_common.c,   
+      agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpAssocTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c,   
+      agent/mibgroup/snmpv3/usmUser.c, agent/snmp_agent.c,   
+      apps/snmpnetstat/if.c, snmplib/container_binary_array.c,   
+      snmplib/keytools.c, snmplib/mib.c, snmplib/snmp_api.c,   
+      snmplib/snmpv3.c, snmplib/tools.c,   
+      snmplib/transports/snmpCallbackDomain.c,   
+      testing/fulltests/snmpv3/T040keymanagetest_capp.c:
+
+   clean up SNMP_FREE usage
+
+2011-01-02 05:47  rstory
+
+   * snmplib/transports/snmpIPv6BaseDomain.c:
+
+   fix cut-n-paste error in debug token
+
+2011-01-02 05:47  rstory
+
+   * include/net-snmp/library/snmpUDPIPv6Domain.h:
+
+   fix function name in prototype
+
+2011-01-02 05:46  rstory
+
+   * agent/helpers/cache_handler.c:
+
+   fix compiler warning
+
+2011-01-02 05:46  rstory
+
+   * include/net-snmp/library/container.h, snmplib/container.c:
+
+   CHANGES: snmplib: remove inline versions of container funcs
+
+2011-01-02 05:46  rstory
+
+   * snmplib/cert_util.c:
+
+   CHANGES: snmplib: dont return empty array
+
+2011-01-02 05:46  rstory
+
+   * man/snmpd.conf.5.def, snmplib/transports/snmpUDPIPv6Domain.c:
+
+   fix typos/grammar in man pages/comments (no code changes)
+
+2011-01-02 05:45  rstory
+
+   *  agent/mibgroup/target/target.c, python/netsnmp/client_intf.c,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   NEWS: snmplib: add new transport config tokens
+   localCert/peerCert,
+   deprecate our_identity, their_identity
+
+2011-01-02 05:45  rstory
+
+   *  include/net-snmp/library/default_store.h, man/snmpcmd.1.def,   
+      man/snmpd.conf.5.def, snmplib/cert_util.c,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   NEWS: snmplib: introduce new localCert/peerCert, deprecate
+   serverCert, clientCert, defX509ServerPub, defX509ClientPub
+
+2011-01-02 05:44  rstory
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      include/net-snmp/library/snmp_transport.h,   
+      snmplib/snmp_transport.c, snmplib/transports/snmpDTLSUDPDomain.c, 
+        snmplib/transports/snmpIPv4BaseDomain.c,   
+      snmplib/transports/snmpTCPIPv6Domain.c,   
+      snmplib/transports/snmpTLSTCPDomain.c,   
+      snmplib/transports/snmpUDPBaseDomain.c,   
+      snmplib/transports/snmpUDPIPv6Domain.c:
+
+   NEWS: snmplib: add IPv6 support to DTLSUDP transport
+   CHANGES: snmplib: use new netsnmp_sockaddr_storage in
+   netsnmp_addr_pair
+   CHANGES: snmplib: add base_transport ptr for tunneled transports
+
+2011-01-02 05:42  rstory
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c:
+
+   CHANGES: snmpd: skip non-AF_INET interfaces when loading ipv4
+   addrs
+
 2010-12-29 01:37  hardaker
 
    * agent/mibgroup/agentx/protocol.c:
@@ -1323,6 +34349,26 @@
 
    Bring all versions of makerelease.xml into line
 
+2010-12-21 06:14  nba
+
+   * agent/mibgroup/agent_mibs.h:
+
+   fix configuring with --disable-debugging
+
+2010-12-20 23:27  hardaker
+
+   *  testing/fulltests/default/T200snmpv2cwalkall_simple,   
+      testing/fulltests/support/simple_eval_tools.sh,   
+      testing/fulltests/support/simple_run:
+
+   Patch from Magnus to fix if ! tests on solaris
+
+2010-12-14 20:10  rstory
+
+   * man/snmpcmd.1.def:
+
+   fix typo in man page
+
 2010-12-10 15:50  hardaker
 
    * agent/agent_trap.c, snmplib/snmpusm.c:
@@ -1343,6 +34389,27 @@
    the loading
    of the list a bit.
 
+2010-12-06 23:23  hardaker
+
+   * agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c:
+
+   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:
@@ -1350,12 +34417,31 @@
    fix contextEngineIDs for outgoing informs from snmpinform to be
    the local engineID
 
+2010-12-01 21:18  nba
+
+   * agent/mibgroup/if-mib/data_access/interface_linux.c:
+
+   Fix conflicting declarations
+
+2010-12-01 01:23  hardaker
+
+   * agent/snmp_vars.c:
+
+   Patch from magfr to fix building without openssl
+
 2010-12-01 01:06  hardaker
 
    * agent/snmpd.c:
 
    use netsnmp_assert instead of assert
 
+2010-11-30 23:43  hardaker
+
+   * snmplib/transports/snmpDTLSUDPDomain.c:
+
+   implement DTLS cookies semi-properly (state is still saved, which
+   still needs to change)
+
 2010-11-30 23:27  hardaker
 
    * perl/SNMP/SNMP.xs:
@@ -1379,6 +34465,57 @@
    CHANGES: snmpd: PATCH: 3053436: from: takevos: fix:
    tcpListenerTable_data_access invalid memory access
 
+2010-11-30 22:18  hardaker
+
+   *  agent/mibgroup/if-mib/data_access/interface_linux.c, configure,   
+      configure.d/config_os_struct_members,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   reverted 19701 (ethtool) as it broke things
+
+2010-11-30 21:08  nba
+
+   * apps/snmptls.c, apps/snmptrapd_sql.c:
+
+   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:58  hardaker
+
+   * apps/snmpwalk.c:
+
+   NEWS: apps: PATCH 3054817: from nightcoding: Adds per-variable
+   timed output support to snmpwalk using -CT
+
+2010-11-30 05:56  hardaker
+
+   *  agent/mibgroup/if-mib/data_access/interface_linux.c, configure,   
+      configure.d/config_os_struct_members,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: snmpd: PATCH: 3057090: from shemminger: make ethtool
+   support on linux use the high speed struct info for 100G+.
+
+2010-11-30 05:47  hardaker
+
+   *  agent/mibgroup/if-mib/data_access/interface_linux.c, configure,   
+      configure.d/config_os_libs2,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   NEWS: snmpd: PATCH 3057093: from shemminger: allow linux to use
+   libpci for creating useful ifDescr strings
+
 2010-11-30 04:58  hardaker
 
    * agent/mibgroup/ip-mib/data_access/systemstats_linux.c:
@@ -1386,7 +34523,37 @@
    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
+
+   * snmplib/cert_util.c:
+
+   CHANGES: snmpd: add debug for cert find hint as string/int
+
+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-29 22:20  rstory
+
+   * snmplib/transports/snmpTLSBaseDomain.c:
+
+   CHANGES: snmpd: add debug for ssl ciphers, clarify fingerprint
+   match debug
+
+2010-11-29 22:18  rstory
 
    * agent/helpers/cache_handler.c:
 
@@ -1394,6 +34561,22 @@
    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 11:04  bvassche
+
+   *  .,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c:
+
+   Applied r19688 on the trunk too (follow-up for r19685).
+
 2010-11-18 03:49  rstory
 
    *  agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/ip.c,   
@@ -1406,6 +34589,59 @@
    
    netsnmp_cache_is_valid() is not meant for mib modules
 
+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 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:
+
+   CHANGES: Linux: 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.
+
 2010-11-15 14:15  bvassche
 
    * snmplib/asn1.c:
@@ -1415,11 +34651,38 @@
    asn_build_signed_int64(). Most but not all of these bugs were
    specific to 64-bit systems. Fixes bug #3093199.
 
-2010-11-15 14:12  bvassche
+2010-11-15 13:32  bvassche
 
-   * agent/mibgroup/struct.h:
+   * testing/fulltests/unit-tests/T008asn1_clib.c:
 
-   Builds again.
+   Avoid triggering truncation warnings.
+
+2010-11-15 13:16  bvassche
+
+   * testing/fulltests/unit-tests/T008asn1_clib.c:
+
+   Restricted all constants to 32 bits.
+
+2010-11-15 12:35  bvassche
+
+   * snmplib/snmp_debug.c:
+
+   Follow-up for r19665.
+
+2010-11-15 12:33  bvassche
+
+   * include/net-snmp/output_api.h, snmplib/snmp_debug.c:
+
+   CHANGES: snmplib: Changed the argument type of
+   debug_register_tokens() from char * into const char *.
+
+2010-11-15 10:56  bvassche
+
+   * testing/fulltests/unit-tests/T008asn1_clib.c:
+
+   Added unit test for ASN.1 encoding and decoding (only 32-bit and
+   64-bit
+   integers so far).
 
 2010-11-11 22:48  nba
 
@@ -1428,9 +34691,41 @@
    Fix r19636: TrapOID is not the first varbind in the converted v2
    trap
 
+2010-11-11 08:38  bvassche
+
+   *  agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/util_funcs.c, agent/mibgroup/util_funcs.h:
+
+   Cleanup: Removed superfluous references to the POSIX threads
+   library.
+
+2010-11-11 08:20  bvassche
+
+   * agent/mibgroup/util_funcs.h:
+
+   Follow-up for r19660: Use pid_t consistently.
+
+2010-11-10 16:36  bvassche
+
+   *  agent/mibgroup/struct.h, agent/mibgroup/ucd-snmp/pass_persist.c,  
+       agent/mibgroup/util_funcs.c, agent/mibgroup/util_funcs.h,   
+      include/net-snmp/types.h:
+
+   CHANGES: agent: Introduced netsnmp_pid_t.
+   CHANGES: Win32: Eliminated casts between int and HANDLE in
+   agent/mibgroup/util_funcs.c and
+   agent/mibgroup/ucd-snmp/pass_persist.c.
+
+2010-11-10 15:49  bvassche
+
+   *  win32/libsnmp/Makefile.in, win32/libsnmp/libsnmp.dsp,   
+      win32/libsnmp_dll/Makefile.in, win32/libsnmp_dll/libsnmp_dll.dsp:
+
+   Follow-up for r19606: cmu_compat removal.
+
 2010-11-10 12:31  bvassche
 
-   * configure, configure.in:
+   * configure, configure.d/config_os_progs:
 
    CHANGES: BUG: 3102904: All Net-SNMP C source files are now
    compiled with -fno-st
@@ -1439,16 +34734,99 @@
 
 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:
+
+   Passes now on MinGW too.
+
+2010-11-09 11:31  bvassche
+
+   * configure, configure.d/config_os_functions:
+
+   Follow-up for r19646.
+
+2010-11-09 11:30  bvassche
+
+   * 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-09 10:02  bvassche
+
+   * snmplib/transports/snmpUDPIPv6Domain.c:
+
+   CHANGES: agent: com2sec6 directive: If configure has not found
+   getaddrinfo(), non-numeric IPv6 addresses do now trigger an error
+   message.
+
+2010-11-08 15:36  bvassche
+
+   * testing/fulltests/default/T071com2sec6_simple:
+
+   CHANGES: testing: Test 71 (com2sec6_simple) does now succeed even
+   if IPv6 DNS resolution is not available.
+
+2010-11-08 15:02  bvassche
+
+   * testing/fulltests/support/clib_build:
+
+   MinGW, testing: clib tests build again without warnings.
+
+2010-11-08 14:52  bvassche
+
+   *  configure, configure.d/config_os_functions,   
+      configure.d/config_os_progs:
+
+   CHANGES: MinGW: configure: Detection of the functions
+   gai_strerror(), getaddrinfo(), gethostbyname() and gethostname()
+   does now succeed.
+
+2010-11-08 14:48  bvassche
+
+   * testing/fulltests/unit-tests/T007inet_pton_clib.c:
+
+   CHANGES: testing: Added inet_ntop() and inet_pton() unit test.
+
+2010-11-08 14:47  bvassche
+
+   * testing/fulltests/support/clib_build:
+
+   testing: clib_build: Added #include directives (<arpa/inet.h> and
+   <netinet/ip6.h>).
+
 2010-11-08 08:46  bvassche
 
    * agent/mibgroup/struct.h, agent/mibgroup/util_funcs.c:
 
    Win32: agent: eliminated casts from/to int for thread handles.
 
+2010-11-08 07:58  bvassche
+
+   * agent/helpers/cache_handler.c:
+
+   Removed NETSNMP_STATIC_INLINE from the declaration of
+   _build_cache_name - at least gcc is better than a human at
+   deciding which functions should be inlined and which ones not.
+
+2010-11-08 07:56  bvassche
+
+   * agent/helpers/table_data.c:
+
+   netsnmp_table_data_clone_row(): Added missing free() statement in
+   an error path.
+
 2010-11-07 21:15  dts12
 
    * agent/mibgroup/host/hr_storage.c:
@@ -1484,19 +34862,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:
@@ -1504,12 +34869,62 @@
    CHANGES: snmplib: force a ; at the end of the static_assert
    macro.
 
-2010-11-07 16:21  dts12
+2010-11-05 15:41  bvassche
 
-   * agent/agent_trap.c:
+   * configure, configure.d/config_os_functions:
 
-   Backport of revision 17596
-   Trivial warning fixes
+   Made sure that rpmGetPath() can be found by configure.
+
+2010-11-05 14:50  bvassche
+
+   * configure, configure.d/config_os_libs1:
+
+   Removed superfluous -I/usr/include/rpm.
+
+2010-11-05 12:18  bvassche
+
+   *  Makefile.in, configure, configure.ac,   
+      configure.d/config_os_headers, configure.d/config_os_libs,   
+      configure.d/config_os_libs1, configure.d/config_os_libs2:
+
+   CHANGES: agent: Find out whether librpm is available before
+   configuring the agent modules because host/data/access/swinst
+   needs symbol HAVE_LIBRPM. As a result, configure has to be run
+   only once instead of twice to enable the hrSWInstalled table on
+   systems that have librpm.
+
+2010-11-05 12:11  bvassche
+
+   * agent/mibgroup/disman/expression/expErrorTable.c:
+
+   Suppress a compiler warning.
+
+2010-11-05 10:00  bvassche
+
+   * agent/mibgroup/host/data_access/swinst_rpm.c:
+
+   CHANGES: agent: host/data_access/swinst_rpm: Fixed a memory leak
+   in netsnm_swinst_arch_init().
+
+2010-11-05 09:23  bvassche
+
+   * agent/mibgroup/host/data_access/swinst_rpm.c:
+
+   CHANGES: agent: host/data_access/swinst_rpm: Pass correct path to
+   rpmdbOpen() such that opening the database succeeds.
+   CHANGES: agent: host/data_access/swinst_rpm: Log an error message
+   if rpmdbOpen() fails.
+
+2010-11-05 08:50  bvassche
+
+   *  agent/mibgroup/Rmon/alarmTable.c, agent/mibgroup/Rmon/event.c,   
+      agent/mibgroup/Rmon/history.c, agent/mibgroup/Rmon/row_api.h,   
+      agent/mibgroup/Rmon/rows.c, agent/mibgroup/Rmon/statistics.c,   
+      agent/mibgroup/disman/expression/expExpressionTable.c,   
+      agent/mibgroup/disman/expression/expObjectTable.c,   
+      agent/mibgroup/disman/expression/expValueTable.c:
+
+   Rmon / disman compiler warning fixes.
 
 2010-11-05 08:48  bvassche
 
@@ -1517,6 +34932,18 @@
 
    CHANGES: snmplib: Added macro netsnmp_static_assert().
 
+2010-11-05 08:40  bvassche
+
+   * agent/mibgroup/agentx/subagent.c:
+
+   Follow-up for r19566.
+
+2010-11-05 08:37  bvassche
+
+   * agent/mibgroup/host/data_access/swinst.h:
+
+   Removed a (harmless ?) circular reference.
+
 2010-11-04 13:09  dts12
 
    * dist/net-snmp.spec:
@@ -1524,25 +34951,23 @@
    CHANGES: Linux: PATCHES: 3083027: Fix RPM spec file to support
    CentOS
 
-2010-11-04 07:09  bvassche
+2010-11-03 13:22  rstory
 
-   * agent/helpers/table.c:
+   * testing/fulltests/tls/T200TlsIpv6_simple:
 
-   Backported r19602, which fixes the double free at exit that was
-   introduced by r19462.
+   skip tlsipv6 test if not tlstcp/tcpipv6 domains
 
-2010-11-03 14:59  bvassche
+2010-11-01 23:03  magfr
 
-   * configure, configure.in:
+   *  acconfig.h, include/net-snmp/library/cmu_compat.h,   
+      include/net-snmp/library/libsnmp.h,   
+      include/net-snmp/net-snmp-config.h.in,   
+      include/net-snmp/net-snmp-includes.h, snmplib/Makefile.in,   
+      snmplib/cmu_compat.c, snmplib/mib.c,   
+      win32/net-snmp/net-snmp-config.h:
 
-   CHANGES: building: VERSION is again a number instead of a C
-   expression, such that the Perl modules build again.
-
-2010-11-03 14:47  bvassche
-
-   * include/net-snmp/agent/instance.h:
-
-   Fixed an incorrect file header (a source code comment).
+   NEWS: snmplib: Remove the support for CMU compatibility since
+   there is no way to enable it and nobody have missed it.
 
 2010-11-01 16:50  dts12
 
@@ -1553,68 +34978,278 @@
 
 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
+2010-10-29 22:31  rstory
 
-   *  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:
+   * snmplib/transports/snmpDTLSUDPDomain.c:
 
-   Remove CMU copyright notice from man pages that
-   were not inherited from CMU-SNMP
-   (and qualify the copyright for those that were).
+   null out bio pointers after being freed; bail on connection
+   with no ssl pointer
 
-2010-11-01 13:55  dts12
+2010-10-29 14:35  bvassche
 
-   *  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/read_config.3.def,   
-      man/snmp.conf.5.def, man/snmp_agent_api.3.def,   
-      man/snmp_alarm.3.def, man/snmp_api.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/variables.5.def:
+   *  agent/mibgroup/host/hrSWInstalledTable.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c:
 
-   Suppress forcing of "Berkeley Distribution" footer
-   (Allows Net-SNMP version information to be displayed in the man
-   page)
+   Reverted incorrect changes from r19575.
 
-2010-11-01 13:42  dts12
+2010-10-29 14:21  bvassche
 
-   *  man/mib2c.1.def, man/mib_api.3.def, man/read_config.3.def,   
-      man/snmp.conf.5.def, man/snmp_agent_api.3.def,   
-      man/snmp_alarm.3.def, man/snmp_api.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:
+   * agent/helpers/cache_handler.c:
 
-   Update man page datestamps to match the latest (non-trivial)
-   content change.
+   Fixed a bug that was introduced in r19515.
+
+2010-10-29 14:00  bvassche
+
+   * 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c,
+         agent/mibgroup/host/data_access/swinst.c,   
+      agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c,  
+      
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c,  
+      
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c,
+        
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c,
+        
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+        
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c,
+        
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c:
+
+   Reverted the incorrect changes from r19593.
+
+2010-10-29 13:38  bvassche
+
+   * snmplib/cert_util.c:
+
+   Reduced number of leak-at-exit complaints triggered by
+   snmplib/cert_util.c.
+
+2010-10-29 13:37  bvassche
+
+   * 
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c,
+         agent/mibgroup/host/data_access/swinst.c,   
+      agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c,
+        
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c,  
+      
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c,  
+      
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c,
+        
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c,
+        
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+        
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c,
+         agent/mibgroup/target/snmpTargetParamsEntry.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.h,   
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c,
+        
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c,
+        
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c:
+
+   More leak-at-exit fixes.
+
+2010-10-29 13:35  bvassche
+
+   * agent/mibgroup/agent/extend.c, agent/mibgroup/agent/extend.h:
+
+   More leak-at-exit fixes.
 
 2010-10-29 12:18  bvassche
 
-   * snmplib/container_binary_array.c:
+   * snmplib/cert_util.c, snmplib/container_binary_array.c:
 
    Spelling fix in log texts: containter -> container.
 
+2010-10-29 09:58  bvassche
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   Ran fillup_entry_info() through indent.
+
+2010-10-29 09:56  bvassche
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   Netlink IPv6 prefix processing: Added more debug statements.
+
+2010-10-29 09:54  bvassche
+
+   * agent/helpers/table.c:
+
+   Made argument checking of netsnmp_handler_owns_table_info() more
+   strict.
+
+2010-10-29 09:52  bvassche
+
+   *  agent/mibgroup/agent/extend.c,   
+      agent/mibgroup/disman/event/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/event/mteEventNotificationTable.h,   
+      agent/mibgroup/disman/event/mteEventSetTable.c,   
+      agent/mibgroup/disman/event/mteEventSetTable.h,   
+      agent/mibgroup/disman/event/mteEventTable.c,   
+      agent/mibgroup/disman/event/mteEventTable.h,   
+      agent/mibgroup/disman/event/mteObjectsTable.c,   
+      agent/mibgroup/disman/event/mteObjectsTable.h,   
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c,   
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.h,   
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c,   
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c,   
+      agent/mibgroup/disman/event/mteTriggerTable.c,   
+      agent/mibgroup/disman/event/mteTriggerTable.h,   
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c,   
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.h,   
+      agent/mibgroup/disman/schedule/schedTable.c,   
+      agent/mibgroup/disman/schedule/schedTable.h,   
+      agent/mibgroup/host/hrSWRunPerfTable.c,   
+      agent/mibgroup/host/hrSWRunPerfTable.h,   
+      agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.h,   
+      agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.h,   
+      agent/mibgroup/sctp-mib/sctpAssocTable.c,   
+      agent/mibgroup/sctp-mib/sctpAssocTable.h,   
+      agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.h,   
+      agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.h,   
+      agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.h,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPortTable.h,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.h:
+
+   More MIB-specific leak-at-exit fixes.
+
+2010-10-29 07:56  bvassche
+
+   *  agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c,   
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.h,
+         agent/mibgroup/rmon-mib/data_access/etherstats_linux.c:
+
+   More compiler warning fixes.
+
+2010-10-28 18:31  nba
+
+   * snmplib/snmp_openssl.c:
+
+   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 15:15  bvassche
+
+   *  agent/helpers/instance.c, agent/mibgroup/agent/extend.c,   
+      agent/mibgroup/host/hrSWInstalledTable.c,   
+      agent/mibgroup/host/hrSWInstalledTable.h,   
+      agent/mibgroup/host/hrSWRunTable.c,   
+      agent/mibgroup/host/hrSWRunTable.h,   
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c,   
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c,  
+      
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c, 
+       
+      agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c,
+        
+      agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c:
+
+   More leak-at-exit fixes.
+
+2010-10-28 15:13  bvassche
+
+   * agent/helpers/watcher.c, include/net-snmp/agent/watcher.h:
+
+   CHANGES: agent: Added netsnmp_register_watched_instance2(),
+   netsnmp_register_watched_scalar2(), netsnmp_clone_watcher_info()
+   and netsnmp_owns_watcher_info(). See also the Doxygen comments
+   for more info.
+
 2010-10-28 14:02  dts12
 
    * local/mib2c.check_values.conf:
@@ -1622,6 +35257,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:
@@ -1629,6 +35271,19 @@
    Fixed a compiler warning (mismatch between format specification
    and argument) that was introduced in r6562.
 
+2010-10-28 11:43  bvassche
+
+   *  agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c:
+
+   Get rid of recently introduced memdup() compiler warnings.
+
+2010-10-28 11:41  bvassche
+
+   * agent/mibgroup/mibII/vacm_conf.c:
+
+   Fixed a compiler warning that was introduced in r19550.
+
 2010-10-28 11:32  bvassche
 
    * include/net-snmp/library/tools.h, snmplib/tools.c:
@@ -1636,6 +35291,23 @@
    Reverted r19565 because it caused gcc to report more warnings
    instead of less.
 
+2010-10-28 11:18  bvassche
+
+   * 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c:
+
+   Fixed a compiler warning that was introduced in r19566.
+
+2010-10-28 10:40  bvassche
+
+   *  agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+         include/net-snmp/library/callback.h, snmplib/callback.c:
+
+   Partially reverted r19515: removed the newly introduced functions
+   and data members again, but without reintroducing the
+   leak-at-exit.
+
 2010-10-28 10:32  bvassche
 
    * include/net-snmp/library/tools.h, snmplib/tools.c:
@@ -1644,11 +35316,82 @@
    longer necessary to cast these two arguments (has been reverted
    via r19568).
 
-2010-10-28 10:06  bvassche
+2010-10-28 09:47  bvassche
 
-   * testing/eval_tools.sh:
+   * agent/helpers/cache_handler.c:
 
-   Backported ISDEFINED from r18670.
+   Fixed yet another crash in netsnmp_cache_remove().
+
+2010-10-28 08:44  bvassche
+
+   * agent/snmpd.c:
+
+   Made it easier to enable the memory leak checker built-in in
+   MSVC's C runtime library.
+
+2010-10-27 20:37  nba
+
+   * agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c:
+
+   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
 
@@ -1664,6 +35407,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:
@@ -1679,17 +35430,299 @@
 
 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.
 
-2010-10-22 09:19  bvassche
+2010-10-25 08:06  bvassche
+
+   *  agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c,   
+      agent/mibgroup/util_funcs.c, agent/mibgroup/util_funcs.h,   
+      configure, configure.d/config_os_libs:
+
+   NEWS: Linux: snmpd is again single-threaded.
+   CHANGES: agent: PATCH: 2959811: from Jan Safranek: Reimplement
+   Linux Netlink IPv6 prefix listener.
+
+2010-10-25 07:15  bvassche
+
+   *  include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/transports/snmpTLSBaseDomain.c:
+
+   Avoid that the compiler complains about casting away the 'const'
+   attribute for the first argument of sslctx_client_setup() and
+   sslctx_server_setup().
+
+2010-10-25 06:28  nba
+
+   * 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:56  bvassche
+
+   * agent/helpers/cache_handler.c:
+
+   Reenabled cache removal and freeing / moved cache refcount
+   incrementing to netsnmp_cache_owns_cache() / converted tabs to
+   spaces.
+
+2010-10-23 11:04  bvassche
+
+   * agent/helpers/cache_handler.c:
+
+   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-23 10:57  bvassche
+
+   * 
+      testing/fulltests/unit-tests/T006snmp_handler_registration_cagentlib.c:
+
+   T006snmp_handler_registration_cagentlib: Introduced
+   netsnmp_cache_create().
+
+2010-10-22 15:24  bvassche
+
+   * agent/helpers/cache_handler.c:
+
+   Disabled cache deallocation because it makes two unit tests fail
+   - to be analyzed further.
+
+2010-10-22 15:03  bvassche
+
+   * 
+      testing/fulltests/unit-tests/T006snmp_handler_registration_cagentlib.c:
+
+   Builds again.
+
+2010-10-22 14:49  bvassche
+
+   *  agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable.c,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c,
+        
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.c,  
+      
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c,
+         agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c,   
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.c,
+         agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.c,   
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c,   
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.c,   
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.c,   
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.c,
+         agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable.c,   
+      agent/mibgroup/sctp-mib/sctpAssocTable.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c,
+         agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.c:
+
+   CHANGES: agent: MIB-specific leak-at-exit fixes.
+
+2010-10-22 14:42  bvassche
+
+   *  agent/mibgroup/examples/data_set.c,   
+      agent/mibgroup/examples/data_set.h:
+
+   CHANGES: agent: example MIB: Added shutdown function that frees
+   all memory owned by this MIB implementation.
+
+2010-10-22 14:40  bvassche
+
+   * agent/helpers/table_container.c:
+
+   CHANGES: agent: Automatically free the private data structure
+   allocated by netsnmp_container_table_handler_get().
+
+2010-10-22 14:38  bvassche
+
+   *  agent/helpers/cache_handler.c,   
+      include/net-snmp/agent/cache_handler.h:
+
+   CHANGES: agent: Count the number of users of a netsnmp_cache data
+   structure instead of duplicating it.
+
+2010-10-22 14:36  bvassche
+
+   * agent/helpers/baby_steps.c, include/net-snmp/agent/baby_steps.h:
+
+   CHANGES: agent: Added reference count in the
+   netsnmp_baby_steps_modes data structure and made sure that this
+   data structure is automatically freed when the handler that owns
+   it is unregistered.
+
+2010-10-22 14:34  bvassche
+
+   *  agent/helpers/table_dataset.c,   
+      include/net-snmp/agent/table_dataset.h:
+
+   CHANGES: agent: Added netsnmp_unregister_auto_data_table().
+
+2010-10-22 08:51  bvassche
 
    * agent/agent_registry.c:
 
-   Backported r19525: made sure that clean_subtree() deallocates all
-   context cache nodes.
+   Follow-up for r19511: made sure that clean_subtree() deallocates
+   all context cache nodes.
+
+2010-10-22 08:49  bvassche
+
+   * agent/helpers/cache_handler.c:
+
+   CHANGES: agent: netsnmp_cache_free(): A more detailed message is
+   now logged when attempting to free a cache that is still in the
+   cache list.
+
+2010-10-22 06:39  bvassche
+
+   * ltmain.sh:
+
+   Reverted ltmain.sh changes from r19522.
+
+2010-10-22 06:34  bvassche
+
+   * configure, include/net-snmp/net-snmp-config.h.in, ltmain.sh:
+
+   Regenerated autoconf/automake/libtool-generated files by running
+   autoreconf -f.
+
+2010-10-21 07:51  bvassche
+
+   * ltmain.sh:
+
+   Reapplied r18726+r18766: make libtool support -fstack-protector*.
+   See also
+   http://blog.gmane.org/gmane.comp.gnu.libtool.bugs/month=20100601
+   for the confirmation that this is a libtool bug.
+
+2010-10-20 20:16  bvassche
+
+   * snmplib/tools.c:
+
+   Avoid that netsnmp_check_definedness() triggers a build failure
+   when compiled against old Valgrind headers. Note: the introduced
+   check is stricter than necessary - VALGRIND_PRINTF_BACKTRACE()
+   was introduced in Valgrind 3.5.0 or before (not sure which
+   version).
+
+2010-10-20 17:13  hardaker
+
+   * snmplib/tools.c:
+
+   added a comment in code note that this requires a fairly recent
+   valgrind
+
+2010-10-20 17:00  hardaker
+
+   * configure:
+
+   reran autoconf after updating libtool
+
+2010-10-20 16:59  hardaker
+
+   *  config.guess, config.sub, install-sh, ltmain.sh, m4/libtool.m4,   
+      m4/ltoptions.m4, m4/ltversion.m4, m4/lt~obsolete.m4:
+
+   update to libtool 2.4
+
+2010-10-20 16:59  hardaker
+
+   * configure, dist/autoconf-version:
+
+   updated to autoconf 2.68
+
+2010-10-20 14:26  bvassche
+
+   *  agent/helpers/cache_handler.c, agent/helpers/old_api.c,   
+      agent/helpers/stash_cache.c, agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+         include/net-snmp/agent/cache_handler.h,   
+      include/net-snmp/agent/snmp_vars.h,   
+      include/net-snmp/library/callback.h, snmplib/callback.c,   
+      win32/mib_module_shutdown.h:
+
+   CHANGES: agent: Added the functions netsnmp_duplicate_variable()
+   and netsnmp_cache_handler_owns_cache().
+   CHANGES: agent: Memory allocated by netsnmp_register_old_api()
+   for storing SNMP variables is now freed when the associated
+   handler is unregistered.
+   CHANGES: agent: Callback function data deallocation does no
+   longer free the memory allocated for the AgentX session - the
+   memory that was allocated for AgentX sessions is now deallocated
+   just as that for any other session. This fixes a leak-at-exit.
+   CHANGES: agent: Notify filter table: Callback function data
+   deallocation does no longer free the data in
+   *     *snmpNotifyFilterTable_if_ctx.container - this is now done by  
+       shutdown_snmpNotifyFilterTable().    CHANGES: Win32:
+      shutdown_snmpNotifyFilterTable() and
+
+   shutdown_winExtDLL() are now invoked when the Net-SNMP service is
+   stopped.
+
+2010-10-20 13:47  bvassche
+
+   * testing/fulltests/unit-tests/T005table_dataset_cagentlib.c:
+
+   Unit-testing, T005table_dataset_cagentlib: added init_agent() and
+   shutdown_agent() calls.
+
+2010-10-20 13:12  nba
+
+   * agent/mibgroup/mibII/tcpTable.c:
+
+   Fix non-ANSI function heading
 
 2010-10-20 12:51  rstory
 
@@ -1701,7 +35734,7 @@
 
    *  agent/agent_handler.c, agent/agent_registry.c,   
       agent/snmp_agent.c, agent/snmpd.c,   
-      include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c:
+      include/net-snmp/session_api.h, snmplib/snmp_api.c:
 
    CHANGES: snmplib: Added snmp_sess_session_lookup().
    CHANGES: agent: Call shutdown_master_agent() and shutdown_agent()
@@ -1717,14 +35750,82 @@
    is for this change that it was necessary to introduce the new
    function snmp_sess_session_lookup().
 
-2010-10-20 07:54  bvassche
+2010-10-19 23:49  magfr
 
-   * testing/eval_tools.sh:
+   *  testing/fulltests/default/T016snmpv2cgetfail_simple,   
+      testing/fulltests/default/T051snmpv2ctrap_simple,   
+      testing/fulltests/default/T052snmpv2cinform_simple,   
+      testing/fulltests/default/T141snmpv2cvacmgetfail_simple:
 
-   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.)
+   CHANGES: testing: Add missing preconditions
+
+2010-10-19 22:11  hardaker
+
+   * dist/patme:
+
+   don't default to applying to 5.2
+
+2010-10-19 22:10  hardaker
+
+   * dist/patme:
+
+   added the 5.6 branch
+
+2010-10-19 21:13  nba
+
+   * snmplib/parse.c:
+
+   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
 
@@ -1734,6 +35835,66 @@
    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-19 07:04  magfr
+
+   * agent/mibgroup/default_modules.h:
+
+   CHANGES: agent: Factor out common config_add_mib statments
+
+2010-10-18 14:22  bvassche
+
+   * agent/helpers/table_dataset.c:
+
+   Mark the proper handler that owns the table registration
+   information.
+
+2010-10-18 10:54  bvassche
+
+   *  agent/helpers/table.c, agent/helpers/table_dataset.c,   
+      agent/helpers/table_iterator.c,   
+      agent/mibgroup/disman/event/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/event/mteEventSetTable.c,   
+      agent/mibgroup/disman/event/mteEventTable.c,   
+      agent/mibgroup/disman/event/mteObjectsTable.c,   
+      agent/mibgroup/disman/event/mteTriggerBooleanTable.c,   
+      agent/mibgroup/disman/event/mteTriggerDeltaTable.c,   
+      agent/mibgroup/disman/event/mteTriggerExistenceTable.c,   
+      agent/mibgroup/disman/event/mteTriggerTable.c,   
+      agent/mibgroup/disman/event/mteTriggerThresholdTable.c,   
+      agent/mibgroup/mibII/sysORTable.c,   
+      include/net-snmp/agent/table.h,   
+      include/net-snmp/agent/table_iterator.h:
+
+   CHANGES: agent: Added functions netsnmp_handler_owns_tabreq(),
+   netsnmp_registration_owns_tabreq(), netsnmp_iterator_clone().
+   Exported netsnmp_table_registration_info_clone().
+   CHANGES: agent: Modified netsnmp_iterator_delete_table() such
+   that it frees the table registration information stored in a
+   table iterator too.
+   CHANGES: agent: Modified netsnmp_get_table_iterator_handler()
+   such that the table iterator passed to this function is freed
+   when the associated handler is freed.
+   
+   Restored the behavior of netsnmp_get_table_handler() to that of
+   r19449, that is, not setting up the data_free pointer because not
+   all callers of netsnmp_get_table_handler() expect that table
+   registration information is freed when the associated handler is
+   freed.
+
+2010-10-18 10:34  bvassche
+
+   * snmplib/transports/snmpTLSTCPDomain.c:
+
+   Fixed a compiler warning about casting away constness.
+
 2010-10-18 08:52  bvassche
 
    * agent/snmpd.c:
@@ -1742,6 +35903,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:
@@ -1777,12 +35945,65 @@
 
 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,   
+      agent/mibgroup/host/data_access/swrun_procfs_status.c:
+
+   CHANGES: agent: Avoid that hrSWRunPath contains trailing garbage
+   characters on Linux systems.
+   Found this by analyzing a Valgrind complaint. For anyone who is
+   wondering why this patch makes sense, a quote from the glibc
+   snprintf() documentation
+   (http://www.gnu.org/software/libc/manual/html_node/Formatted-Output-Functions.html):
+   <quote>
+   The return value is the number of characters which would be
+   generated for the given input, excluding the trailing null. If
+   this value is greater or equal to size, not all characters from
+   the result have been stored in s.
+   </quote>
+   Please note that this differs from the standard behavior. A quote
+   from http://opengroup.org/onlinepubs/007908799/xsh/snprintf.html:
+   <quote>
+   RETURN VALUE
+   Upon successful completion, these functions return the number of
+   bytes transmitted excluding the terminating null in the case of
+   sprintf() or snprintf() or a negative value if an output error
+   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:28  bvassche
+
+   * include/net-snmp/library/tools.h, snmplib/tools.c:
+
+   CHANGES: snmplib: Added the function netsnmp_check_definedness(),
+   which helps to find the cause of undefined value errors as
+   reported by Valgrind.
+
 2010-10-17 14:24  bvassche
 
    * agent/mibgroup/agentx/protocol.h:
@@ -1790,29 +36011,158 @@
    Removed an obsolete declaration: the function agentx_build() has
    been removed a long time ago.
 
+2010-10-17 14:05  bvassche
+
+   *  configure, configure.d/config_os_headers,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   Added configure test for the Valgrind header files.
+
+2010-10-17 12:01  bvassche
+
+   * snmplib/snmp_openssl.c:
+
+   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
+
+   *  agent/helpers/scalar_group.c, agent/helpers/watcher.c,   
+      include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/snmp_openssl.c, snmplib/transports/snmpTLSBaseDomain.c:
+
+   Fixed a few compiler warnings by inserting appropriate casts.
+
+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-17 01:41  magfr
+
+   *  agent/mibgroup/default_modules.h, agent/mibgroup/util_funcs.h,   
+      agent/snmpd.c:
+
+   NEWS: snmpd: Remove util_funcs/Exit from the requirement sets of
+   util_funcs and default_modules.
+   NEWS: snmpd: Never use Exit to terminate the agent.
+
+2010-10-16 22:32  magfr
+
+   *  agent/mibgroup/default_modules.h,   
+      agent/mibgroup/ucd-snmp/versioninfo.c,   
+      agent/mibgroup/ucd-snmp/versioninfo.h,   
+      agent/mibgroup/util_funcs.h, agent/snmpd.c:
+
+   CHANGES: snmpd: Make the setting of the argvrestart* variables
+   optional on USING_UTIL_FUNCS_RESTART_MODULE.
+   NEWS: snmpd: Remove util_funcs/restart from the requirement sets
+   of util_funcs and default_modules.
+   CHANGES: snmpd: Add util_funcs/restart to the requirement set of
+   ucd-snmp/versioninfo.
+
+2010-10-16 22:05  magfr
+
+   * include/net-snmp/agent/agent_handler.h:
+
+   CHANGES: snmpd: Extend the documentation for data_clone and
+   data_free
+
+2010-10-16 22:03  magfr
+
+   * agent/helpers/watcher.c:
+
+   CHANGES: snmpd: Make it possible to copy watched data items
+   without memory leaks.
+
+2010-10-16 22:01  magfr
+
+   * agent/helpers/watcher.c:
+
+   CHANGES: snmpd: Remove unused variable cmp
+
+2010-10-16 19:44  magfr
+
+   * agent/helpers/scalar_group.c:
+
+   CHANGES: snmpd: Do not leak the limits of scalar_group objects on
+   shutdown.
+
 2010-10-16 08:37  bvassche
 
-   * configure, configure.in:
+   *  agent/agent_handler.c, configure,   
+      configure.d/config_modules_agent:
 
    Spelling fix: dulpicate -> duplicate.
 
-2010-10-15 12:53  bvassche
+2010-10-16 08:34  bvassche
 
-   *  agent/helpers/table.c, agent/helpers/table_data.c,   
-      agent/helpers/table_dataset.c,   
-      include/net-snmp/agent/table_data.h,   
-      include/net-snmp/agent/table_dataset.h:
+   * 
+      testing/fulltests/unit-tests/T006snmp_handler_registration_cagentlib.c:
 
-   CHANGES: snmplib: Added function netsnmp_delete_table_data_set().
-   CHANGES: snmplib: Added declaration for the function
-   netsnmp_table_data_delete_table() in a public agent header file.
-   CHANGES: snmplib: Fixed memory leak in
-   netsnmp_table_data_delete_table().
-   (Backported r19450 and r19454 from trunk.)
+   Added more test code.
+
+2010-10-16 08:33  bvassche
+
+   *  agent/agent_handler.c, agent/helpers/cache_handler.c,   
+      agent/helpers/table.c:
+
+   Follow-up for r19465: handle out-of-memory properly / removed a
+   duplicate function.
+
+2010-10-15 19:17  bvassche
+
+   *  testing/fulltests/support/cagentlib_build,   
+      testing/fulltests/support/cagentlib_run,   
+      testing/fulltests/support/clib_build,   
+      testing/fulltests/unit-tests/T005table_dataset_cagentlib.c,   
+      testing/fulltests/unit-tests/T005table_dataset_clib.c,   
+      testing/fulltests/unit-tests/T006snmp_handler_registration_cagentlib.c,
+        
+      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:56  bvassche
+
+   *  agent/agent_handler.c, agent/helpers/cache_handler.c,   
+      agent/helpers/stash_cache.c, agent/helpers/table.c,   
+      agent/mibgroup/mibII/sysORTable.c,   
+      include/net-snmp/agent/agent_handler.h,   
+      include/net-snmp/agent/cache_handler.h,   
+      testing/fulltests/unit-tests/T006snmp_handler_registration_clib.c:
+
+   NEWS: snmplib: Added netsnmp_mib_handler.data_clone, a function
+   pointer that defines how to clone netsnmp_mib_handler.myvoid.
+   Must be defined if and only if data_free is set. The function
+   netsnmp_handler_dup() does now clone MIB handler private data if
+   data_clone() is set. Previously after duplicating a MIB handler
+   and unregistering one of the two MIB handlers, the private data
+   pointer (myvoid) of the other became a dangling pointer. Note:
+   addition of netsnmp_mib_handler.data_clone is an ABI change.
+   CHANGES: testing: added more test cases to the handler
+   registration test.
+
+2010-10-15 18:32  bvassche
+
+   * agent/mibgroup/ucd-snmp/loadave.c:
+
+   Fixed a compiler warning.
 
 2010-10-15 12: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,
@@ -1828,17 +36178,108 @@
    handler no longer causes a crash (double free) when
    handler->myvoid of the original handler was non-NULL.
 
-2010-10-15 10:02  bvassche
+2010-10-15 11:32  bvassche
 
-   * agent/agent_handler.c, man/netsnmp_handler.3:
+   * testing/fulltests/unit-tests/T006snmp_handler_registration_clib.c:
 
-   Spelling fix: dulpicates -> duplicates.
+   Added a unit test for handler registration and deregistration.
 
-2010-10-15 09:53  bvassche
+2010-10-15 10:56  bvassche
 
-   * agent/agent_handler.c:
+   *  include/net-snmp/library/tools.h,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
 
-   Fixed a spelling error in a source code comment.
+   CHANGES: Win32: building: Builds now correctly with a 64-bit
+   compiler.
+
+2010-10-15 09:45  bvassche
+
+   * snmplib/snmp_api.c:
+
+   CHANGES: snmplib: snmp_shutdown(): added call to
+   netsnmp_certs_shutdown().
+
+2010-10-15 06:45  bvassche
+
+   * agent/helpers/table_dataset.c:
+
+   Follow-up for r19450: let netsnmp_delete_table_data_set() free
+   all table_dataset-related memory.
+
+2010-10-14 23:15  magfr
+
+   *  configure, configure.d/config_modules_agent,   
+      configure.d/config_modules_transports,   
+      configure.d/config_os_functions,   
+      configure.d/config_os_struct_members:
+
+   CHANGES: building: Make it possible to regenerate using autoconf
+   2.68.
+
+2010-10-14 23:01  magfr
+
+   *  snmplib/snmp_logging.c, snmplib/snmp_transport.c,   
+      snmplib/transports/snmpIPXDomain.c:
+
+   CHANGES: snmplib: Be const correct over calls to str* functions.
+
+2010-10-14 15:19  bvassche
+
+   *  agent/helpers/table.c, agent/helpers/table_data.c,   
+      agent/helpers/table_dataset.c,   
+      include/net-snmp/agent/table_data.h,   
+      include/net-snmp/agent/table_dataset.h,   
+      testing/fulltests/support/clib_build,   
+      testing/fulltests/unit-tests/T005table_dataset_clib.c:
+
+   CHANGES: snmplib: Added function netsnmp_delete_table_data_set().
+   CHANGES: snmplib: Added declaration for the function
+   netsnmp_table_data_delete_table() in a public agent header file.
+   CHANGES: snmplib: Fixed memory leak in
+   netsnmp_table_data_delete_table().
+   CHANGES: snmplib: Fixed memory leak triggered by unregistering a
+   table handler.
+   CHANGES: testing: Unit tests can now invoke functions from
+   libagent.
+   CHANGES: testing: Added unit test for table_dataset.
+
+2010-10-14 14:05  bvassche
+
+   * 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
 
@@ -1848,19 +36289,197 @@
    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 06:19  magfr
+
+   * configure, include/net-snmp/net-snmp-config.h.in:
+
+   Regenerated
+
+2010-10-14 05:36  nba
+
+   * agent/mibgroup/ucd-snmp/lmSensors.c:
+
+   Quell warnings
+
+2010-10-14 03:50  rstory
+
+   *  configure.d/config_os_libs,   
+      include/net-snmp/net-snmp-config.h.in,   
+      include/net-snmp/system/darwin.h,   
+      include/net-snmp/system/darwin10.h,   
+      include/net-snmp/system/darwin7.h,   
+      include/net-snmp/system/darwin8.h,   
+      include/net-snmp/system/darwin9.h, snmplib/snmp_openssl.c:
+
+   test for openssl sha 224/256/385/512 support instead of
+   hardcoding
+
+2010-10-14 03:50  rstory
+
+   * testing/fulltests/support/simple_eval_tools.sh:
+
+   add OUTPUTENVVARS to save important environment variables; when
+   SNMP_VERBOSE
+   is set, save env vars and command to individual invoked file for
+   each test;
+   save env vars and command for each STARTPROG
+
+2010-10-14 03:50  rstory
+
+   * testing/fulltests/support/simple_TESTCONF.sh:
+
+   CHANGES: testing: auto-create user specified SNMP_TMPDIR and
+   SNMP_TMP_PERSISTENTDIR too; default SNMP_TMP_PERSISTENDIR based
+   on SNMP_TMPDIR
+   for user specified SNMP_TMPDIR
+
+2010-10-14 03:49  rstory
+
+   *  acconfig.h, configure.d/config_os_misc4,   
+      include/net-snmp/system/darwin10.h,   
+      include/net-snmp/system/darwin8.h,   
+      include/net-snmp/system/darwin9.h:
+
+   CHANGES: building: check for /dev/kmem instead of assuming it
+   exists and hardcoding when it is not there
+
+2010-10-14 03:28  rstory
+
+   *  snmplib/snmptsm.c, snmplib/transports/snmpDTLSUDPDomain.c,   
+      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 20:12  magfr
+
+   * testing/fulltests/support/clib_build:
+
+   CHANGES: testing: Generate a normal #line directive as per C99
+   instead of the compiler-specific #<n>-directive.
+
 2010-10-13 16:53  hardaker
 
-   * dist/autoconf-version, testing/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/Makefile-apps.in, win32/libsnmp_dll/Makefile.in,   
+      win32/snmpd/Makefile.in, win32/snmpnetstat/Makefile.in,   
+      win32/snmptrapd/Makefile.in:
+
+   CHANGES: Win32: building: batch build with OpenSSL enabled and
+   with recent OpenSSL development files works again.
+
+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:
@@ -1879,13 +36498,189 @@
    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.
+
+----------------------------------------------------------------------
+
+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:
@@ -1893,20 +36688,311 @@
    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
    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.
 
+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:
@@ -1915,6 +37001,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:
@@ -1929,6 +37022,33 @@
    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:
@@ -1942,31 +37062,545 @@
    CHANGES: snmpd: PATCH: 2904900: Documentation plus assorted
    handler code fixes
 
-2010-08-13 12:22  dts12
+2010-08-14 09:28  dts12
 
-   * local/mib2c.table_data.conf:
+   *  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:
 
-   Fix handling of index values in cache load function.
+   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-10 04:59  magfr
+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:
+   *  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:
@@ -1981,6 +37615,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:
@@ -1989,13 +37704,39 @@
 
 2010-07-28 14:36  dts12
 
-   * agent/mibgroup/default_modules.h, configure, configure.in:
+   *  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:
@@ -2003,6 +37744,64 @@
    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:
@@ -2011,6 +37810,79 @@
    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:
@@ -2020,18 +37892,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:
@@ -2040,6 +38054,109 @@
    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:
@@ -2053,39 +38170,782 @@
    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,  
        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/snmpd.conf.5.def,   
-      man/snmptrapd.conf.5.def:
+      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-28 00:21  tanders
-
-   * agent/object_monitor.c:
-
-   fix cpp syntax error
-
 2010-06-27 23:29  tanders
 
-   *  agent/agent_read_config.c, apps/snmptrapd.c,   
-      apps/snmptrapd_auth.c:
+   * 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:
@@ -2099,6 +38959,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:
@@ -2111,18 +39049,1122 @@
    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:
+
+   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
+
+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:
@@ -2130,6 +40172,169 @@
    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,   
@@ -2138,6 +40343,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:
@@ -2152,6 +40424,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:
@@ -2159,150 +40882,1350 @@
    CHANGES: snmpd: BUG: 2972579: fixed checking of
    snmpTargetAddrRowStatus SET requests.
 
-2010-05-27 06:49  bvassche
+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: winExtDLL: convert assert() statements into
-   netsnmp_assert() statements.
+   CHANGES: Win32: winExtDLL: don't trigger a netsnmp_assert() when
+   no extension DLLs have been loaded.
 
-2010-05-23 21:07  dts12
+2010-05-15 17:31  tanders
 
-   * ChangeLog:
+   * testing/RUNFULLTESTS:
 
-   version update
+   stop-gap fix to unbreak "make test" for the nightly builds
 
--------------------------------------------------------------------------------
-Changes: V5.4.2 -> V5.4.3
+2010-05-15 10:59  bvassche
 
-2010-05-23 20:42  dts12
+   *  agent/Makefile.in, agent/helpers/Makefile.in,   
+      snmplib/Makefile.in:
 
-   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3,   
-      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,   
-      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,   
-      man/netsnmp_cache_handler.3, man/netsnmp_callback.3,   
-      man/netsnmp_container.3, man/netsnmp_data_list.3,   
-      man/netsnmp_debug.3, man/netsnmp_default_store.3,   
-      man/netsnmp_handler.3, man/netsnmp_instance.3,   
-      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,   
-      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,   
-      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,   
-      man/netsnmp_multiplexer.3,   
-      man/netsnmp_netsnmp_agent_request_info_s.3,   
-      man/netsnmp_netsnmp_column_info_t.3,   
-      man/netsnmp_netsnmp_data_list_s.3,   
-      man/netsnmp_netsnmp_handler_registration_s.3,   
-      man/netsnmp_netsnmp_iterator_info_s.3,   
-      man/netsnmp_netsnmp_mib_handler_access_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_s.3,   
-      man/netsnmp_netsnmp_request_info_s.3,   
-      man/netsnmp_netsnmp_table_registration_info_s.3,   
-      man/netsnmp_netsnmp_table_request_info_s.3,   
-      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,   
-      man/netsnmp_read_config.3, man/netsnmp_read_only.3,   
-      man/netsnmp_row_merge.3, man/netsnmp_scalar.3,   
-      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,   
-      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,   
-      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,   
-      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,   
-      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,   
-      man/netsnmp_table.3, man/netsnmp_table_array.3,   
-      man/netsnmp_table_container.3, man/netsnmp_table_data.3,   
-      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,   
-      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,   
-      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,  
-       man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
-      man/netsnmp_util.3, man/netsnmp_utilities.3,   
-      man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
+   Reverted r18727 because it caused build errors on Solaris, AIX
+   and HP-UX.
 
-   documentation update
+2010-05-15 00:42  hardaker
 
-2010-05-23 20:39  dts12
+   *  Makefile.in, configure, configure.d/config_modules_lib,   
+      snmplib/Makefile.depend, snmplib/snmp_transport.c,   
+      win32/build.pl:
 
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      snmplib/parse.c, snmplib/snmp_version.c:
+   revert r18738 since new transport require dynamicly built header
+   files
 
-   Version number update
+2010-05-15 00:40  hardaker
 
-2010-05-14 12:46  dts12
+   * testing/fulltests/support/olducd_eval_tools.sh:
 
-   * CHANGES, NEWS:
+   log env variables used to the invoked file
 
-   version update
+2010-05-14 21:29  hardaker
 
-2010-05-14 12:41  dts12
+   * testing/fulltests/support/run_olducd:
 
-   * ChangeLog:
+   fix script so it can be invoked outside the test environment
+   again
 
-   version update
+2010-05-14 21:28  hardaker
 
-2010-05-14 12:28  dts12
+   * mibs/SNMP-TLS-TM-MIB.txt:
 
-   * snmplib/Makefile.depend:
+   added the SNMP-TLS-TM-MIB with final IANA assignment slots
 
-   make depend
+2010-05-14 21:27  hardaker
 
-2010-05-14 12:19  dts12
+   * snmplib/snmptsm.c:
 
-   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3,   
-      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,   
-      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,   
-      man/netsnmp_cache_handler.3, man/netsnmp_callback.3,   
-      man/netsnmp_container.3, man/netsnmp_data_list.3,   
-      man/netsnmp_debug.3, man/netsnmp_default_store.3,   
-      man/netsnmp_handler.3, man/netsnmp_instance.3,   
-      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,   
-      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,   
-      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,   
-      man/netsnmp_multiplexer.3,   
-      man/netsnmp_netsnmp_agent_request_info_s.3,   
-      man/netsnmp_netsnmp_column_info_t.3,   
-      man/netsnmp_netsnmp_data_list_s.3,   
-      man/netsnmp_netsnmp_handler_registration_s.3,   
-      man/netsnmp_netsnmp_iterator_info_s.3,   
-      man/netsnmp_netsnmp_mib_handler_access_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_s.3,   
-      man/netsnmp_netsnmp_request_info_s.3,   
-      man/netsnmp_netsnmp_table_registration_info_s.3,   
-      man/netsnmp_netsnmp_table_request_info_s.3,   
-      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,   
-      man/netsnmp_read_config.3, man/netsnmp_read_only.3,   
-      man/netsnmp_row_merge.3, man/netsnmp_scalar.3,   
-      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,   
-      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,   
-      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,   
-      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,   
-      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,   
-      man/netsnmp_table.3, man/netsnmp_table_array.3,   
-      man/netsnmp_table_container.3, man/netsnmp_table_data.3,   
-      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,   
-      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,   
-      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,  
-       man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
-      man/netsnmp_util.3, man/netsnmp_utilities.3,   
-      man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
+   use final IANA assigned TSM prefixes
 
-   documentation update
+2010-05-14 21:26  hardaker
 
-2010-05-14 12:10  dts12
+   *  include/net-snmp/library/snmpDTLSUDPDomain.h,   
+      include/net-snmp/library/snmpTLSTCPDomain.h:
 
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      snmplib/snmp_version.c:
+   use final IANA assigned Domain numbers
 
-   Version number update
+2010-05-14 21:25  hardaker
 
-2010-05-11 17:26  bvassche
+   * 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:
 
-   Builds again with the Microsoft Visual C compilers, which do not
-   recognize the C99 ULL suffix.
+   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, win32/libsnmp_dll/libsnmp.def.in:
+   * win32/libsnmp_dll/libsnmp.def:
 
    Ensure 'netsnmp_read_module' is available for perl build.
 
@@ -2312,12 +42235,217 @@
 
    Fix perl build under Windows (strtoull not available)
 
-2010-05-09 16:34  bvassche
+2010-05-10 07:07  magfr
 
-   * include/net-snmp/system/cygwin.h:
+   *  include/net-snmp/library/snmpSSHDomain.h,   
+      snmplib/transports/snmpSSHDomain.c:
 
-   CHANGES: Cygwin: BUG: 2997492: byte order of udpLocalPort is now correct
-   (Backported r18074 from trunk.)
+   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
 
@@ -2326,76 +42454,675 @@
    Don't assume the presence of <string.h>
    (bring into line with all other occurances)
 
-2010-05-06 14:44  dts12
+2010-05-06 14:41  dts12
 
-   * win32/win32.dsw, win32/win32sdk.dsw:
-
-   Add project dependencies for MSVC builds.
-
-2010-05-06 06:33  bvassche
-
-   *  net-snmp-config.in, testing/TESTCONF.sh,   
-      testing/tests/T030snmpv3usercreation,   
-      testing/tests/T115agentxperl:
-
-   CHANGES: Cygwin: Detect free UDP ports correctly for use in test infrastructure.
-   (Backported trunk r18073 and r18080).
-
-2010-04-30 19:10  bvassche
-
-   *  agent/mibgroup/mibII/system_mib.c, apps/snmptrapd.c,   
-      apps/snmptrapd_log.c, snmplib/callback.c:
+   * apps/snmptrapd.c, apps/snmptrapd_log.c, snmplib/callback.c:
 
    CHANGES: Windows: Fix build under MinGW
+   back/forward port of revision 18631
 
-2010-04-30 18:44  bvassche
+2010-05-05 17:43  rstory
 
-   * configure:
+   * snmplib/transports/snmpTLSTCPDomain.c:
 
-   Should have been included in r18627.
+   fix type in log msg
 
-2010-04-30 18:27  bvassche
+2010-05-05 17:43  rstory
 
-   * configure.in:
+   * local/net-snmp-cert:
 
-   made sure that cross-compiling without specifying the endianness
-   does not trigger a syntax error in the configure script.
+   remove import for unused function
 
-2010-04-28 10:48  bvassche
+2010-05-04 07:12  magfr
 
-   * configure, configure.in:
+   * testing/fulltests/support/olducd_eval_tools.sh:
 
-   left out inet_ntop() and inet_pton() from libnetsnmp since these
-   functions are already present in Cygwins C library.
+   Negate reason given from SKIPIF
 
-2010-04-28 10:26  bvassche
+2010-05-03 22:38  rstory
 
-   * README.win32:
+   * snmplib/snmp_openssl.c:
 
-   Fixed a documentation bug with regard to the Cygwin build:
-   linking with ws2_32 is only necessary for really ancient Cygwin versions.
+   fix len in email cmp; more extract debugging
 
-2010-04-28 07:29  bvassche
+2010-05-03 22:38  rstory
 
-   *  snmplib/inet_ntop.c, snmplib/inet_pton.c,   
-      snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUDPIPv6Domain.c:
+   * snmplib/cert_util.c:
 
-   CHANGES: Cygwin: builds now with IPv6 support enabled.
+   copy ocert to addional maps
 
-2010-04-27 16:55  bvassche
+2010-05-03 14:20  marz
 
-   *  win32/net-snmp/net-snmp-config.h,   
-      win32/net-snmp/net-snmp-config.h.in:
+   * local/net-snmp-cert:
 
-   CHANGES: Win32: builds again with IPv6 support enabled.
+   remove dependency on perl module not present in CentOS
 
-2010-04-27 15:42  dts12
+2010-05-03 03:49  rstory
 
-   *  win32/net-snmp/agent/mib_module_config.h,   
-      win32/netsnmpmibssdk/Makefile.in:
+   * snmplib/snmp_openssl.c:
 
-   Re-instate Notification-Log MIB support when building with
-   Windows Platform SDK.
+   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
 
@@ -2403,34 +43130,403 @@
 
    Documentation update.
 
-2010-04-21 11:05  bvassche
-
-   * snmplib/strtoull.c:
-
-   Copied the source file snmplib/strtoull.c from the trunk to the
-   V5.4 branch.
-
-2010-04-18 13:40  bvassche
-
-   * snmplib/winpipe.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.
-
-2010-04-18 13:24  bvassche
+2010-04-25 15:21  bvassche
 
    *  win32/net-snmp/net-snmp-config.h,   
       win32/net-snmp/net-snmp-config.h.in:
 
-   Reverted another change that was introduced in r18495 and that's
-   obviously broken.
+   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/net-snmp-config.h:
+   * win32/net-snmp/agent/mib_module_config.h:
 
    Partially reverted r18496:
    - Commented out #define NETSNMP_USE_DLL again in file
@@ -2444,6 +43540,55 @@
    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,   
@@ -2452,101 +43597,172 @@
       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/netsnmpmibssdk, win32/snmpbulkget, win32/snmpbulkwalk,   
-      win32/snmpd, win32/snmpdelta, win32/snmpdf, win32/snmpdsdk,   
-      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:
+       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, win32/libsnmp_dll/libsnmp.def.in:
+   * 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:11  dts12
-
-   *  agent/mibgroup/mibII/interfaces.c,   
-      agent/mibgroup/mibII/interfaces.h:
-
-   Fix Windows batch build using Visual Studio 2008 with Platform
-   SDK enabled.
-
 2010-04-14 08:08  dts12
 
-   *  win32/build.pl, win32/net-snmp/agent/mib_module_config.h,   
-      win32/net-snmp/net-snmp-config.h,   
-      win32/net-snmp/net-snmp-config.h.in:
+   * win32/net-snmp/agent/mib_module_config.h:
 
-   CHANGES: Win32: Fix batch build using recent versions of Visual Studio.
+   CHANGES: Win32: Fix batch build using recent versions of Visual
+   Studio.
    Partial back port of SVN revisions 17573 and 17696.
 
-2010-04-07 14:37  dts12
+2010-04-14 01:47  marz
 
-   * CHANGES, NEWS:
+   * local/net-snmp-cert:
 
-   version update
+   fix perms on created files -rw-------, umask(077)
 
-2010-04-07 14:22  dts12
+2010-04-13 22:15  marz
 
-   * agent/Makefile.depend, agent/mibgroup/Makefile.depend:
+   * local/net-snmp-cert, local/net-snmp-cert.conf:
 
-   make depend
+   fix perms, add --cn/-c, better dates defaults, snmp-tls org_unit,
+   added initial dummy config file
 
-2010-04-07 14:12  dts12
+2010-04-13 14:21  marz
 
-   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3,   
-      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,   
-      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,   
-      man/netsnmp_cache_handler.3, man/netsnmp_callback.3,   
-      man/netsnmp_container.3, man/netsnmp_data_list.3,   
-      man/netsnmp_debug.3, man/netsnmp_default_store.3,   
-      man/netsnmp_handler.3, man/netsnmp_instance.3,   
-      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,   
-      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,   
-      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,   
-      man/netsnmp_multiplexer.3,   
-      man/netsnmp_netsnmp_agent_request_info_s.3,   
-      man/netsnmp_netsnmp_column_info_t.3,   
-      man/netsnmp_netsnmp_data_list_s.3,   
-      man/netsnmp_netsnmp_handler_registration_s.3,   
-      man/netsnmp_netsnmp_iterator_info_s.3,   
-      man/netsnmp_netsnmp_mib_handler_access_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_s.3,   
-      man/netsnmp_netsnmp_request_info_s.3,   
-      man/netsnmp_netsnmp_table_registration_info_s.3,   
-      man/netsnmp_netsnmp_table_request_info_s.3,   
-      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,   
-      man/netsnmp_read_config.3, man/netsnmp_read_only.3,   
-      man/netsnmp_row_merge.3, man/netsnmp_scalar.3,   
-      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,   
-      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,   
-      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,   
-      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,   
-      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,   
-      man/netsnmp_table.3, man/netsnmp_table_array.3,   
-      man/netsnmp_table_container.3, man/netsnmp_table_data.3,   
-      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,   
-      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,   
-      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,  
-       man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
-      man/netsnmp_util.3, man/netsnmp_utilities.3,   
-      man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
+   * local/net-snmp-cert:
 
-   documentation update
+   fixes for show cmds, cmdline, help
 
-2010-04-07 14:08  dts12
+2010-04-13 02:17  rstory
 
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      snmplib/snmp_version.c:
+   * snmplib/cert_util.c:
 
-   Version number update
+   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
 
@@ -2554,27 +43770,510 @@
 
    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 08:56  dts12
+2010-04-06 10:06  dts12
 
-   * agent/mibgroup/ucd-snmp/disk.c, mibs/UCD-SNMP-MIB.txt:
+   * agent/snmpd.c:
 
-   NEWS: snmpd: Latch large-disk statistics at 2Tb (rather than
-   wrapping.
+   Set supplementary groups before changing UID
+   (which probably involves giving up privileges)
 
-2010-03-29 15:26  dts12
+2010-04-06 08:57  dts12
 
-   * agent/mibgroup/mibII/vacm_conf.c, snmplib/parse.c:
+   * mibs/UCD-SNMP-MIB.txt:
 
-   Include MIB directory search path in reports of missing MIB
-   files.
-   Include config file search path in reports of missing access
-   control settings.
+   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
 
@@ -2586,6 +44285,19 @@
    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:
@@ -2594,6 +44306,147 @@
    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:
@@ -2604,6 +44457,117 @@
    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:
@@ -2611,6 +44575,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:
@@ -2618,6 +44592,23 @@
    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,   
@@ -2635,12 +44626,104 @@
    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,   
@@ -2659,18 +44742,94 @@
    by every request for which a response with non-zero error status
    is sent back.
 
-2010-03-19 11:41  bvassche
+2010-03-18 16:29  rstory
 
-   * agent/snmp_agent.c:
+   *  agent/mibgroup/agent/nsLogging.c,   
+      include/net-snmp/library/snmp_logging.h, snmplib/snmp_logging.c:
 
-   Reverted r18324 since the 5.4 branch is in RC stage and a
-   leak-at-exit is not a showstopper.
+   keep count of enabled logs; use this count to determine when to
+   log to stderr
 
-2010-03-17 13:41  bvassche
+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
 
@@ -2685,85 +44844,297 @@
    CHANGES: BUG: 2971257: Fixed winExtDLL handling of multi-varbind
    getNext requests with OIDs in reverse lexicographical order.
 
-2010-03-14 22:56  dts12
+2010-03-17 10:25  bvassche
 
-   * CHANGES, NEWS:
+   * agent/mibgroup/winExtDLL.c:
 
-   version update
+   More winExtDLL debug output tuning.
 
-2010-03-14 22:31  dts12
+2010-03-16 19:31  bvassche
 
-   * ChangeLog:
+   * mibs/NET-SNMP-AGENT-MIB.txt:
 
-   version update
+   Compiles now with MIB compilers that do not recognize a double
+   dash as the end of a MIB comment.
 
-2010-03-14 22:28  dts12
+2010-03-16 19:27  bvassche
 
-   * agent/Makefile.depend, agent/mibgroup/Makefile.depend:
+   * mibs/NET-SNMP-EXTEND-MIB.txt:
 
-   make depend
+   Fixed two syntax errors.
 
-2010-03-14 22:19  dts12
+2010-03-16 19:18  bvassche
 
-   * agent/Makefile.depend, agent/mibgroup/Makefile.depend:
+   * agent/mibgroup/winExtDLL.c:
 
-   make depend
+   CHANGES: Win32: winExtDLL: fixed a bug in getNext handling that
+   could cause the MIB output to be truncated.
 
-2010-03-14 22:19  dts12
+2010-03-16 18:50  bvassche
 
-   * agent/Makefile.depend, agent/mibgroup/Makefile.depend:
+   * agent/mibgroup/winExtDLL.c:
 
-   make depend
+   Made winExtDLL debug output more detailed.
 
-2010-03-14 22:10  dts12
+2010-03-16 15:24  bvassche
 
-   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3,   
-      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,   
-      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,   
-      man/netsnmp_cache_handler.3, man/netsnmp_callback.3,   
-      man/netsnmp_container.3, man/netsnmp_data_list.3,   
-      man/netsnmp_debug.3, man/netsnmp_default_store.3,   
-      man/netsnmp_handler.3, man/netsnmp_instance.3,   
-      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,   
-      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,   
-      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,   
-      man/netsnmp_multiplexer.3,   
-      man/netsnmp_netsnmp_agent_request_info_s.3,   
-      man/netsnmp_netsnmp_column_info_t.3,   
-      man/netsnmp_netsnmp_data_list_s.3,   
-      man/netsnmp_netsnmp_handler_registration_s.3,   
-      man/netsnmp_netsnmp_iterator_info_s.3,   
-      man/netsnmp_netsnmp_mib_handler_access_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_s.3,   
-      man/netsnmp_netsnmp_request_info_s.3,   
-      man/netsnmp_netsnmp_table_registration_info_s.3,   
-      man/netsnmp_netsnmp_table_request_info_s.3,   
-      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,   
-      man/netsnmp_read_config.3, man/netsnmp_read_only.3,   
-      man/netsnmp_row_merge.3, man/netsnmp_scalar.3,   
-      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,   
-      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,   
-      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,   
-      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,   
-      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,   
-      man/netsnmp_table.3, man/netsnmp_table_array.3,   
-      man/netsnmp_table_container.3, man/netsnmp_table_data.3,   
-      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,   
-      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,   
-      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,  
-       man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
-      man/netsnmp_util.3, man/netsnmp_utilities.3,   
-      man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
+   *  include/net-snmp/library/snmpSocketBaseDomain.h,   
+      include/net-snmp/library/snmpUDPBaseDomain.h:
 
-   documentation update
+   Made sure that C++ programs that include Net-SNMP header files
+   compile again.
 
-2010-03-14 22:07  dts12
+2010-03-15 07:20  magfr
 
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      snmplib/snmp_version.c:
+   * agent/helpers/instance.c:
 
-   Version number update
+   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
 
@@ -2773,6 +45144,13 @@
    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:
@@ -2785,12 +45163,24 @@
 
    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
 
@@ -2808,6 +45198,15 @@
    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:
@@ -2823,6 +45222,21 @@
    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:
@@ -2837,7 +45251,7 @@
 
 2010-03-11 11:57  dts12
 
-   * configure, configure.in:
+   * 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
@@ -2868,21 +45282,952 @@
    CHANGES: snmpd: PATCH: 2950845: Fix ifHighSpeed calculation
    Patch provided by Leonardo Chiquitto
 
-2010-03-03 16:11  jsafranek
+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:
 
-   Regerate configure script after rev. 18193 (automatic RPM version
-   detection).
-   Net-SNMP should compile with rpm-4.6 automatically.
+   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.in:
+   * 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:
@@ -2890,51 +46235,285 @@
    CHANGES: python: Support null-bytes in octet strings
    Patch supplied by Tommy Beadle
 
-2010-02-09 15:05  bvassche
+2010-02-10 00:59  hardaker
 
-   *  ., README.win32, agent/mibgroup/winExtDLL.c,   
-      agent/mibgroup/winExtDLL.h, win32/MgmtApi-winExtDLL.h,   
-      win32/Snmp-winExtDLL.h:
+   *  include/net-snmp/library/snmpDTLSUDPDomain.h,   
+      include/net-snmp/library/snmpTLSBaseDomain.h,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmpTLSBaseDomain.c:
 
-   CHANGES: Win32: winExtDLL: works now on Windows Vista, Windows 7
-   and Windows 2008 too.
-   CHANGES: Win32: simplified building Net-SNMP + winExtDLL with
-   MSVC.
-   CHANGES: MinGW: winExtDLL: builds now.
-   Note: all these changes have been backported from the trunk.
+   moved TLS infrastructure into a base domain file
 
-2010-02-09 14:29  bvassche
+2010-02-10 00:04  hardaker
 
-   * include/net-snmp/library/snmp_logging.h:
+   *  include/net-snmp/library/snmpIPv6BaseDomain.h,   
+      include/net-snmp/library/snmpTCPIPv6Domain.h,   
+      snmplib/snmpIPv6BaseDomain.c, snmplib/snmpUDPIPv6Domain.c:
 
-   CHANGES: Win32: added #include <stdio.h> in
-   include/net-snmp/library/snmp_logging.h such that Net-SNMP 5.5
-   builds again with Microsoft Visual Studio 6.
+   moved socket6 functions to the ipv6 base
 
-2010-02-08 19:47  bvassche
+2010-02-10 00:03  hardaker
 
-   *  ., agent/agent_handler.c, agent/helpers/table_dataset.c,   
-      include/net-snmp/agent/agent_handler.h,   
-      include/net-snmp/agent/snmp_agent.h,   
-      include/net-snmp/agent/table_data.h,   
-      include/net-snmp/agent/table_dataset.h,   
-      include/net-snmp/library/data_list.h:
+   * snmplib/snmpDTLSUDPDomain.c:
 
-   CHANGES: snmpd, snmplib: Remove the inline declarations for
-   functions that lack an inline definition.
-   
-   Backported r16926 from the trunk to the 5.4 branch because Mario
-   Gartner posted
-   patch 2945202 in which he reported that gcc printed several
-   warnings like the
-   following for the code on the 5.4 branch:
-   include/net-snmp/agent/agent_handler.h:241: warning: inline
-   function 'void*
-   netsnmp_request_get_list_data(netsnmp_request_info*, const
-   char*)' used but
-   never defined
+   white space formatting
 
-2010-02-05 09:48  jsafranek
+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,   
@@ -2945,26 +46524,64 @@
    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 01:42  tanders
+2010-01-31 08:02  bvassche
 
-   * man/Makefile.in:
+   * configure, configure.d/config_os_misc2:
 
-   Follow-up for r17710 / backport of r17712: remove an obsolete
-   manual
-   page from the set of files that should be installed
+   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
 
@@ -2979,6 +46596,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:
@@ -2995,12 +46734,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:
@@ -3011,97 +47366,418 @@
    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,   
-      agent/mibgroup/host/hr_swinst.c:
+   * agent/mibgroup/hardware/cpu/cpu_sysctl.c:
 
    Patch from Stephen Hemminger to fix a minor memleak in cpu
    sysctrl fetching
 
-2010-01-06 17:56  dts12
+2010-01-07 16:21  bvassche
 
-   * CHANGES:
+   *  include/net-snmp/library/read_config.h, snmplib/read_config.c,   
+      snmplib/snmpusm.c, snmplib/vacm.c:
 
-   version update
+   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-06 17:25  dts12
+2010-01-07 14:41  bvassche
 
-   * ChangeLog:
+   * snmplib/snmpusm.c:
 
-   version update
+   Removed three superfluous casts because these triggered a
+   compiler warning
+   when compiled with MSVC.
 
-2010-01-06 17:06  dts12
+2010-01-07 13:28  bvassche
 
-   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
-      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
-      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
+   * snmplib/read_config.c:
 
-   make depend
+   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-06 17:06  dts12
+2010-01-07 12:30  bvassche
 
-   *  agent/Makefile.depend, agent/helpers/Makefile.depend,   
-      agent/mibgroup/Makefile.depend, apps/Makefile.depend,   
-      apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
+   * 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c:
 
-   make depend
+   Fixed a format specification mismatch.
 
-2010-01-06 16:55  dts12
+2010-01-07 12:19  bvassche
 
-   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3,   
-      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,   
-      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,   
-      man/netsnmp_cache_handler.3, man/netsnmp_callback.3,   
-      man/netsnmp_container.3, man/netsnmp_data_list.3,   
-      man/netsnmp_debug.3, man/netsnmp_default_store.3,   
-      man/netsnmp_handler.3, man/netsnmp_instance.3,   
-      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,   
-      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,   
-      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,   
-      man/netsnmp_multiplexer.3,   
-      man/netsnmp_netsnmp_agent_request_info_s.3,   
-      man/netsnmp_netsnmp_column_info_t.3,   
-      man/netsnmp_netsnmp_data_list_s.3,   
-      man/netsnmp_netsnmp_handler_registration_s.3,   
-      man/netsnmp_netsnmp_iterator_info_s.3,   
-      man/netsnmp_netsnmp_mib_handler_access_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_s.3,   
-      man/netsnmp_netsnmp_request_info_s.3,   
-      man/netsnmp_netsnmp_table_registration_info_s.3,   
-      man/netsnmp_netsnmp_table_request_info_s.3,   
-      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,   
-      man/netsnmp_read_config.3, man/netsnmp_read_only.3,   
-      man/netsnmp_row_merge.3, man/netsnmp_scalar.3,   
-      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,   
-      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,   
-      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,   
-      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,   
-      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,   
-      man/netsnmp_table.3, man/netsnmp_table_array.3,   
-      man/netsnmp_table_container.3, man/netsnmp_table_data.3,   
-      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,   
-      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,   
-      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,  
-       man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
-      man/netsnmp_util.3, man/netsnmp_utilities.3,   
-      man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
+   * include/net-snmp/agent/sysORTable.h:
 
-   documentation update
+   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
 
-2010-01-06 16:43  dts12
 
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      snmplib/snmp_version.c:
+   * snmplib/snmpusm.c:
 
-   Version number update
+   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
 
@@ -3121,7 +47797,96 @@
 
    * snmplib/snmpUnixDomain.c:
 
-   CHANGES: snmplib: BUGS: 2922390: Fix test for missing contextName parameter
+   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
 
@@ -3147,9 +47912,175 @@
 
    * agent/mibgroup/agentx/protocol.c:
 
-   CHANGES: snmpd: PATCH: 2912584: Fix null OID handling in Agentx on 64bit
+   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:
@@ -3163,6 +48094,25 @@
    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:
@@ -3177,6 +48127,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:
@@ -3217,7 +48191,8 @@
    * 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
+   The
+   function log_notification() adds a row to the table
    nlmLogVarTable, but
    this function can be called before that table has been
    initialized. If
@@ -3242,11 +48217,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
 
@@ -3254,6 +48337,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:
@@ -3267,12 +48399,36 @@
    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
+   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
 
@@ -3287,21 +48443,294 @@
    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.
+   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
+   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
 
@@ -3310,18 +48739,46 @@
    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-05 17:19  tanders
-
-   * agent/mibgroup/disman/schedule/schedCore.c:
-
-   apply r17854 build fix to all affected branches
+   compile with
+   NETSNMP_CLEAN_NAMESPACE
 
 2009-12-02 15:39  jsafranek
 
@@ -3344,7 +48801,7 @@
 
 2009-12-01 12:36  dts12
 
-   * include/net-snmp/library/snmp_api.h:
+   * include/net-snmp/types.h:
 
    Update a redundant (and probably inaccurate) comment.
 
@@ -3352,19 +48809,52 @@
 
    * agent/helpers/table.c:
 
-   CHANGES: agent: BUGS: 2822360: Fix memory leak when building table OIDs
+   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
+   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
+   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
 
@@ -3377,52 +48867,92 @@
 
    * local/mib2c.old-api.conf:
 
-   CHANGES: mib2c: BUGS: 2888569: Fix generation of table columns array
+   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
+   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.
+   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()
+   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.
+   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
+   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.
+   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
+   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
 
@@ -3430,13 +48960,173 @@
 
    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
+   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:
@@ -3445,90 +49135,84 @@
    Return success/failure values from cache load routine.
    Problem identified by Xuan.
 
-2009-10-29 16:05  dts12
+2009-10-30 09:51  magfr
 
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm, perl/OID/OID.pm,   
-      perl/SNMP/SNMP.pm, perl/TrapReceiver/TrapReceiver.pm,   
-      perl/agent/Support/Support.pm, perl/agent/agent.pm,   
-      perl/agent/default_store/default_store.pm,   
-      perl/default_store/default_store.pm, sedscript.in,   
-      snmplib/snmp_version.c:
+   *  include/net-snmp/library/asn1.h, include/net-snmp/library/oid.h,  
+       include/net-snmp/types.h:
 
-   - version tag ( 5.4.3.pre1 )
+   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-29 14:24  dts12
+2009-10-30 08:28  magfr
 
-   * CHANGES, NEWS:
+   *  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:
 
-   version update
+   CHANGES: snmplib, snmpd, snmpnetstat: Add correct size prefixes
+   when printing variables of type oid.
 
-2009-10-29 11:46  dts12
+2009-10-30 08:07  magfr
 
-   * ChangeLog:
+   * include/net-snmp/types.h:
 
-   version update
+   CHANGES: snmplib: Change oid to be a 32-bit type on ILP64 and
+   LP64 platforms.
 
-2009-10-29 10:30  dts12
+2009-10-30 08:05  magfr
 
-   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3,   
-      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,   
-      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,   
-      man/netsnmp_cache_handler.3, man/netsnmp_callback.3,   
-      man/netsnmp_container.3, man/netsnmp_data_list.3,   
-      man/netsnmp_debug.3, man/netsnmp_default_store.3,   
-      man/netsnmp_handler.3, man/netsnmp_instance.3,   
-      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,   
-      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,   
-      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,   
-      man/netsnmp_multiplexer.3,   
-      man/netsnmp_netsnmp_agent_request_info_s.3,   
-      man/netsnmp_netsnmp_column_info_t.3,   
-      man/netsnmp_netsnmp_data_list_s.3,   
-      man/netsnmp_netsnmp_handler_registration_s.3,   
-      man/netsnmp_netsnmp_iterator_info_s.3,   
-      man/netsnmp_netsnmp_mib_handler_access_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_s.3,   
-      man/netsnmp_netsnmp_request_info_s.3,   
-      man/netsnmp_netsnmp_table_registration_info_s.3,   
-      man/netsnmp_netsnmp_table_request_info_s.3,   
-      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,   
-      man/netsnmp_read_config.3, man/netsnmp_read_only.3,   
-      man/netsnmp_row_merge.3, man/netsnmp_scalar.3,   
-      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,   
-      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,   
-      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,   
-      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,   
-      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,   
-      man/netsnmp_table.3, man/netsnmp_table_array.3,   
-      man/netsnmp_table_container.3, man/netsnmp_table_data.3,   
-      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,   
-      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,   
-      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,  
-       man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
-      man/netsnmp_util.3, man/netsnmp_utilities.3,   
-      man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
+   * include/net-snmp/library/asn1.h:
 
-   documentation update
+   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-29 10:28  dts12
+2009-10-28 16:48  hardaker
 
-   * doxygen.conf:
+   * agent/snmp_vars.c:
 
-   - version tag ( 5.4.3.pre1 )
+   don't require subagent_init() if not only building master agent
+   code
 
-2009-10-29 09:55  dts12
+2009-10-27 06:44  magfr
 
-   * Makefile.top:
+   *  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:
 
-   version update
+   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.
+   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.
 
@@ -3546,6 +49230,18 @@
    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:
@@ -3556,12 +49252,20 @@
 
 2009-10-05 19:19  magfr
 
-   *  include/net-snmp/library/file_utils.h,   
+   *  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:
@@ -3570,18 +49274,351 @@
    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.
+
+2009-09-24 00:08  hardaker
+
+   * NEWS:
+
+   version update
+
+2009-09-23 23:54  hardaker
+
+   * ChangeLog:
+
+   version update
+
+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
 
+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,   
+      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
+
+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:
@@ -3591,6 +49628,113 @@
    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
+
+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,   
@@ -3608,6 +49752,22 @@
    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
 
    * 
@@ -3642,32 +49802,192 @@
    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
+   CHANGES: snmpd: from "Marcus R爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´æž‹kert": fix possible crash when
    64-bit counters in ipSystemStatsTable get bigger than 2^32
 
-2009-07-27 12:13  hardaker
+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 outdate case-conflicting manual page
+   remove an obsolete manual page
 
-2009-07-27 12:06  hardaker
+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:
@@ -3686,12 +50006,52 @@
 
    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
 
    * 
@@ -3702,6 +50062,43 @@
    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,   
@@ -3719,23 +50116,13682 @@
    processing - u_long can make problems on bin endian 64 bit
    systems
 
-2009-06-16 15:19  rstory
+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.
 
-2009-06-14 22:01  tanders
 
-   * agent/mibgroup/host/hr_swrun.c:
 
-   portability fix (sync with 5.5)
+----------------------------------------------------------------------
+
+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爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´æž‹kert": 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,   
+      configure.d/config_os_libs,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: snmpd: PATCH: 2564552: from ahmake: provide libnetlink
+   support for loading the tcp table
+
+2009-06-12 19:02  rstory
+
+   *  agent/mibgroup/if-mib/ifTable/ifTable_data_access.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_data_access.h:
+
+   CHANGES: snmpd: BUG: 1400101: remove deleted interfaces from
+   ifTable
 
 2009-06-11 23:09  hardaker
 
@@ -3744,19 +63800,36 @@
       win32/net-snmp/agent/mib_module_config.h,   
       win32/netsnmpmibssdk/netsnmpmibssdk.dsp:
 
-   CHANGES: win32: PATCH: 2693746: from bvassche: improved socket startup support
+   CHANGES: win32: PATCH: 2693746: from bvassche: improved socket
+   startup support
 
 2009-06-11 22:57  hardaker
 
    * agent/mibgroup/kernel_sunos5.c:
 
-   CHANGES: snmpd: PATCH: 2012402: don't fail on failure to look up interface error counters.
+   CHANGES: snmpd: PATCH: 2012402: don't fail on failure to look up
+   interface error counters.
+
+2009-06-11 22:03  hardaker
+
+   * include/net-snmp/types.h:
+
+   revert previous commit to make circular dependencies back to
+   their regular insane ordering; I don't like this situation at all
+
+2009-06-11 21:42  hardaker
+
+   * include/net-snmp/types.h:
+
+   include large_fd_set.h before typedefing something based on the
+   structure
 
 2009-06-03 12:35  dts12
 
    * perl/SNMP/SNMP.xs:
 
-   CHANGES: perl: PATCHES: 2793857: Report failed asynchronous requests.
+   CHANGES: perl: PATCHES: 2793857: Report failed asynchronous
+   requests.
 
 2009-06-03 11:46  dts12
 
@@ -3769,7 +63842,8 @@
 
    * agent/mibgroup/agentx/master_admin.c:
 
-   PATCH: 2182592: Clean up vacmContextTable after unregistrations
+   CHANGES: snmpd: PATCH: 2182592: Clean up vacmContextTable after
+   unregistrations
    Patch supplied by John Forsyth
 
 2009-06-03 10:12  dts12
@@ -3780,18 +63854,21 @@
       include/net-snmp/agent/snmp_agent.h, snmplib/snmpUDPDomain.c,   
       snmplib/snmp_api.c, snmplib/snmpv3.c:
 
-   CHANGES: PATCH: 2797251: Support multiple initialisation and shutdown, fix memory leaks
+   CHANGES: PATCH: 2797251: Support multiple initialisation and
+   shutdown, fix memory leaks
    Patch supplied by Ivosh
 
 2009-06-01 15:53  dts12
 
    * man/snmpd.conf.5.def:
 
-   CHANGES: docs: PATCHES: 2788072: Document 'logmatch' functionality.
+   CHANEGS: docs: PATCHES: 2788072: Document 'logmatch'
+   functionality.
 
 2009-06-01 15:50  dts12
 
    *  agent/mibgroup/utilities/iquery.c, snmplib/mib.c,   
+      snmplib/parse.c, snmplib/snmp_api.c, snmplib/snmp_parse_args.c,   
       snmplib/system.c, win32/net-snmp/net-snmp-config.h,   
       win32/net-snmp/net-snmp-config.h.in:
 
@@ -3799,17 +63876,32 @@
 
 2009-06-01 15:37  dts12
 
-   *  aclocal.m4, configure, local/snmpconf.dir/snmpd-data/monitor,   
+   *  agent/mibgroup/host/data_access/swrun_kinfo.c,   
+      agent/mibgroup/host/data_access/swrun_kvm_proc.c,   
+      agent/mibgroup/host/data_access/swrun_procfs_psinfo.c,   
+      agent/mibgroup/host/data_access/swrun_procfs_status.c,   
+      agent/mibgroup/host/data_access/swrun_procinfo.c,   
+      agent/mibgroup/host/data_access/swrun_prpsinfo.c,   
+      agent/mibgroup/host/data_access/swrun_pstat.c, configure,   
+      local/snmpconf.dir/snmpd-data/monitor, m4/libtool.m4,   
       man/snmpd.conf.5.def, man/snmpd.examples.5.def:
 
-   CHANGES: docs: PATCH: 2795739: Fix incorrect disk/file size descriptions & unit specifiers
+   CHANGES: docs: PATCH: 2795739: Fix incorrect disk/file size
+   descriptions & unit specifiers
 
 2009-06-01 13:11  dts12
 
    * EXAMPLE.conf.def:
 
    Rework example configuration file to match current snmpd.conf(5)
-   structure, and more clearly illustrate current best practise.
+   structure,
+   and more clearly illustrate current best practise.
+
+2009-05-30 06:58  magfr
+
+   * agent/mib_modules.c:
+
+   Remove unused include.
 
 2009-05-29 09:14  dts12
 
@@ -3819,18 +63911,42 @@
 
 2009-05-29 09:08  dts12
 
-   * local/passtest.pl, mibs/Makefile.in, mibs/NET-SNMP-PASS-MIB.txt:
+   *  local/passtest, local/passtest.pl, mibs/Makefile.in,   
+      mibs/NET-SNMP-PASS-MIB.txt:
 
    Rework "passtest" examples to fully validate GETNEXT requests,
    and use a legitimate MIB structure for output.
    Add an example MIB to define that structure.
 
-2009-05-28 12:55  dts12
+2009-05-28 12:41  dts12
 
    * FAQ:
 
-   Synchronise with latest FAQ
-   (including 5.5 revisions up to MIBs section)
+   Updates to MIBs section
+
+2009-05-28 11:56  dts12
+
+   * FAQ:
+
+   Tweak phrasing of an (overlong) question in the Perl section
+
+2009-05-28 11:31  dts12
+
+   * FAQ:
+
+   New entry in the Applications section
+
+2009-05-28 10:41  dts12
+
+   * FAQ:
+
+   Updates to Applications section
+
+2009-05-27 15:26  dts12
+
+   * FAQ:
+
+   Updates to GENERAL section.
 
 2009-05-19 17:50  alex_b
 
@@ -3849,7 +63965,9 @@
 
    * snmplib/scapi.c:
 
-   CHANGES: build: BUG: 2782700: build failure when using --with-pkcs on Solaris
+   CHANGES: build: BUG: 2782700: build failure when using
+   --with-pkcs on
+   Solaris
 
 2009-05-15 14:59  jsafranek
 
@@ -3871,29 +63989,50 @@
 
    * agent/mibgroup/disman/event/mteTriggerConf.c:
 
-   CHANGES: snmpd: Allow "monitor" to handle negative threshold values.
+   CHANGES: snmpd: Allow "monitor" to handle negative threshold
+   values.
    Reported by Richard Gipps.
 
 2009-05-13 22:32  tanders
 
    * snmplib/vacm.c:
 
-   CHANGES: snmpd: PATCH: 2791417: fix snmpd segfault when run with -DALL
+   CHANGES: snmpd: PATCH: 2791417: fix snmpd segfault when run with
+   -DALL
    Patch supplied by Ron Roskens.
 
 2009-05-13 08:02  dts12
 
    * man/snmpd.conf.5.def:
 
-   Bring documentation of notificationEvent syntax into line with reality.
-   (Uses "-m" rather than "-n" to register standard MIB payload objects)
+   Bring documentation of notificationEvent syntax into line with
+   reality.
+   (Uses "-m" rather than "-n" to register standard MIB payload
+   objects)
    Inconsistency reported by Richard Gipps.
 
-2009-05-12 23:26  alex_b
+2009-05-10 21:12  alex_b
 
-   * include/net-snmp/data_access/interface.h, perl/agent/agent.xs:
+   *  win32/Makefile-apps.in, win32/Makefile.in,   
+      win32/libsnmp_dll/Makefile.in, win32/snmpd/Makefile.in,   
+      win32/snmpdsdk/Makefile.in, win32/snmpnetstat/Makefile.in,   
+      win32/snmptrapd/Makefile.in:
 
-   Win32: Build fixes - change unsigned long long to uint64_t.
+   Win32: Added automatic manifest merging with mt.exe for MSVC 2008
+   etc.
+
+2009-05-08 13:12  alex_b
+
+   * agent/mibgroup/winExtDLL.c:
+
+   Changes: Win32: Add support for Windows 7, Vista and 2008 for
+   winExtDLL.
+
+2009-05-08 02:07  alex_b
+
+   * win32/libsnmp_dll/libsnmp.def, win32/libsnmp_dll/libsnmp.def.in:
+
+   Win32: Build fixes for DLL.
 
 2009-05-07 23:00  tanders
 
@@ -3901,17 +64040,315 @@
 
    build fix for HP-UX: include <sys/param.h> for DEV_BSIZE
 
+2009-05-07 05:11  nba
+
+   * agent/snmp_perl.h:
+
+   Ups, missed a new prototype header
+
+2009-05-06 22:26  nba
+
+   * man/snmpd.conf.5.def:
+
+   A man line cannot start with a '
+
+2009-05-06 22:07  nba
+
+   * snmplib/snmpUDPIPv6Domain.c:
+
+   IPv6 adresses are a bit more complicated then 32bits
+
+2009-05-06 22:06  nba
+
+   *  agent/agent_sysORTable.c, agent/helpers/instance.c,   
+      agent/mibgroup/agentx/client.c, agent/mibgroup/agentx/client.h,   
+      agent/mibgroup/disman/event/mteObjects.c,   
+      agent/mibgroup/disman/event/mteObjects.h,   
+      agent/mibgroup/disman/event/mteTrigger.c,   
+      agent/mibgroup/disman/event/mteTrigger.h,   
+      agent/mibgroup/disman/event/mteTriggerConf.c,   
+      agent/mibgroup/mibII/vacm_conf.c,   
+      include/net-snmp/agent/instance.h,   
+      include/net-snmp/agent/sysORTable.h,   
+      include/net-snmp/library/oid_stash.h, snmplib/oid_stash.c:
+
+   Sprinkle some const-ness where relevant
+
+2009-05-06 22:02  nba
+
+   * snmplib/scapi.c, snmplib/snmpUDPDomain.c:
+
+   Trivial warning fixes
+
+2009-05-06 22:00  nba
+
+   * mibs/rfcmibs.diff:
+
+   Hmmm, IANA fixed their bug too
+
+2009-05-06 21:59  nba
+
+   * README:
+
+   Update email to current
+
+2009-05-06 21:59  nba
+
+   *  agent/agent_trap.c, agent/mibgroup/hardware/cpu/cpu_linux.c,   
+      agent/mibgroup/host/hr_swrun.c,   
+      agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/mibgroup/ip-mib/data_access/systemstats_linux.c,   
+      agent/mibgroup/mibII/sysORTable.c,   
+      agent/mibgroup/mibII/system_mib.c,   
+      agent/mibgroup/notification/snmpNotifyFilterProfileTable.c,   
+      agent/mibgroup/ucd-snmp/logmatch.c,   
+      agent/mibgroup/ucd-snmp/pass.c,   
+      agent/mibgroup/ucd-snmp/pass_persist.c,   
+      agent/mibgroup/util_funcs/get_pid_from_inode.c,   
+      agent/snmp_agent.c, agent/snmp_perl.c, agent/snmp_vars.c,   
+      agent/snmpd.c, perl/SNMP/SNMP.xs,   
+      perl/TrapReceiver/TrapReceiver.xs, snmplib/container_list_ssll.c, 
+        snmplib/snmp_service.c:
+
+   Trivial warning fixes
+
+2009-05-06 21:49  nba
+
+   * apps/snmptrapd_log.c:
+
+   contextEngineID is a hexstring, not an object identifier
+
+2009-05-06 21:45  nba
+
+   *  agent/agent_registry.c, agent/helpers/cache_handler.c,   
+      agent/helpers/table.c, agent/helpers/table_dataset.c,   
+      agent/mibgroup/agent/extend.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/event/mteObjectsConf.c,   
+      agent/mibgroup/disman/schedule/schedCore.c,   
+      agent/mibgroup/header_complex.c,   
+      agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/if-mib/data_access/interface_solaris2.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_data_access.c,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_data_access.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_data_access.c,
+         agent/mibgroup/ip-mib/data_access/ipaddress_common.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/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_data_access.c,
+         agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c,
+        
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+         agent/mibgroup/snmpv3/usmUser.c,   
+      agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.c,   
+      agent/mibgroup/target/target.c,   
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c,
+        
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c,
+         agent/mibgroup/ucd-snmp/proxy.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c,   
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c,
+         agent/mibgroup/utilities/execute.c, apps/encode_keychange.c,   
+      snmplib/asn1.c, snmplib/dir_utils.c, snmplib/int64.c,   
+      snmplib/mib.c, snmplib/read_config.c,   
+      snmplib/snmpCallbackDomain.c, snmplib/snmp_alarm.c,   
+      snmplib/snmp_api.c, snmplib/snmp_client.c, snmplib/snmpusm.c,   
+      snmplib/snmpv3.c:
+
+   Fix format warnings from debug output
+
+2009-05-06 20:45  nba
+
+   * mibs/smistrip:
+
+   Properly recognize message syntax modules (to be able to ignore
+   them)
+
+2009-05-06 20:36  nba
+
+   * mibs/rfclist:
+
+   RFC updates
+
+2009-05-06 20:35  nba
+
+   * mibs/rfcmibs.diff:
+
+   Syntax fix for current IANA-PRINTER-MIB
+
+2009-05-06 20:34  nba
+
+   * mibs/IANAifType-MIB.txt:
+
+   Update to current IANA version
+
+2009-05-04 13:47  alex_b
+
+   * win32/libsnmp_dll/libsnmp.def, win32/libsnmp_dll/libsnmp.def.in:
+
+   Win32: Build fixes for DLL.
+
+2009-05-01 15:43  magfr
+
+   * include/net-snmp/library/snmp_debug.h, snmplib/snmp_debug.c:
+
+   NEWS: snmplib: Stop using a fixed string for indentation. Remove
+   the DEBUGINDENT() macro (that did nothing). Change the meaning of
+   the internal __DBGINDENT() macro to return the number of spaces
+   to indent instead of a string that represent the indentation
+   level. Deprecate the debug_indent function.
+
+2009-04-30 06:57  magfr
+
+   *  agent/mibgroup/examples/watched.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, local/mib2c.int_watch.conf:
+
+   CHANGES: snmpd: Use static watcher_info for all watched variables
+   and in int_watch.
+
+2009-04-30 06:41  magfr
+
+   * agent/helpers/watcher.c, include/net-snmp/agent/watcher.h:
+
+   CHANGES: snmplib: Separate initialization from allocation for
+   netsnmp_watcher_info structures to make it possible to use
+   statically allocated data.
+
+2009-04-30 06:34  magfr
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   Add missing return value.
+
+2009-04-30 00:18  hardaker
+
+   * man/snmpd.conf.5.def:
+
+   document the DTLS support; semi document the SSH support and
+   document the -s switch to many VACM settings
+
+2009-04-29 23:54  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   protect against connection opening errors and free memory on
+   failures
+
+2009-04-29 12:19  alex_b
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Win32: Update defines for _WIN32_WINNT and NTDDI_VERSION to
+   support Windows 2000 and higher and add IPV6 define to allow IPV6
+   code to compile.
+
+2009-04-28 06:34  magfr
+
+   * agent/mibgroup/ip-mib/data_access/systemstats_linux.c:
+
+   snmpd, Linux: Remove some unused variables.
+
+2009-04-28 06:07  magfr
+
+   * agent/mibgroup/ip-mib/data_access/scalars_linux.c:
+
+   snmpd: Add missing argument to printf-like call.
+
+2009-04-28 05:53  magfr
+
+   * agent/mibgroup/mibII/system_mib.c:
+
+   snmpd: Mark more oids as const.
+
+2009-04-28 05:51  magfr
+
+   * snmplib/mib.c:
+
+   Return a value from sprint_realloc_value even if no subtree is
+   located.
+
+2009-04-28 01:12  alex_b
+
+   *  agent/mibgroup/winExtDLL.c, win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Win32: MSVC: Only use Windows API functions available on WinXP or
+   before (IPV6) or 2000 or before (no IPV6).
+
+2009-04-26 23:30  alex_b
+
+   *  win32/Makefile-apps.in, win32/libsnmp_dll/Makefile.in,   
+      win32/snmpd/Makefile.in, win32/snmpdsdk/Makefile.in,   
+      win32/snmpnetstat/Makefile.in, win32/snmptrapd/Makefile.in:
+
+   Win32: Remove machine type of I386 from LINK32_FLAGS to allow
+   compiling with MSVC 2008 as either 32 or 64-bit.
+
+2009-04-26 17:38  alex_b
+
+   *  win32/Makefile-apps.in, win32/Makefile.in,   
+      win32/libsnmp_dll/Makefile.in, win32/snmpd/Makefile.in,   
+      win32/snmpdsdk/Makefile.in, win32/snmpnetstat/Makefile.in,   
+      win32/snmptrapd/Makefile.in:
+
+   CHANGES: Win32: Build fixes for MSVC 2008. Copy and cleanup
+   manifest files.
+
+2009-04-26 15:21  alex_b
+
+   *  agent/mibgroup/ucd-snmp/pass.c,   
+      agent/mibgroup/ucd-snmp/pass_persist.c,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Win32: Re-enable pass and pass_persist Counter64 for MSVC.
+
+2009-04-26 14:34  alex_b
+
+   *  agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/mibII/interfaces.h, snmplib/snmpTCPIPv6Domain.c,   
+      snmplib/snmpUDPIPv6Domain.c, win32/build.pl,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: Win32: Build fixes for MSVC 2008. IFTYPE is defined by
+   MSVC 2008, so interfaces.c variables were changed to NETSNMP_.
+
 2009-04-26 13:06  alex_b
 
    * agent/mibgroup/winExtDLL.c:
 
    Win32: Update build instructions in comments.
 
+2009-04-24 13:28  hardaker
+
+   * perl/agent/agent.xs:
+
+   fix the ASN_OPAQUE patch that was commited without proper diff
+   context
+
 2009-04-24 07:31  tanders
 
-   * configure, configure.in:
+   * configure, configure.d/config_os_misc4:
 
-   CHANGES: HP-UX: BUG: 2779472: Filesystems missing in hrStorage table on HP-UX 11.31
+   CHANGES: HP-UX: BUG: 2779472: Filesystems missing in hrStorage
+   table on HP-UX 11.31
    (allow for mnttab that is a character special device)
 
 2009-04-24 01:36  alex_b
@@ -3921,18 +64358,78 @@
 
    CHANGES: Win32: BUG: 2779541 Fixed handle leak in pass_persist.
 
-2009-04-23 23:14  tanders
+-------------------------------------------------------------------------------
 
-   * agent/mibgroup/host/hr_storage.c:
-
-   CHANGES: AIX: BUG: 2712670: Agent crashes on AIX with hrStorage
+Changes: V5.5.pre1 -> V5.5.pre2
 
 2009-04-23 22:53  hardaker
 
-   * snmplib/snmp_alarm.c:
+   * agent/mibgroup/hardware/sensors.h, snmplib/snmp_alarm.c:
 
    fix C++ style comments
 
+2009-04-23 22:25  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-04-23 22:23  hardaker
+
+   *  man/config_api.3, man/pdu_api.3, man/session_api.3,   
+      man/varbind_api.3:
+
+   initial doxygen extracts for the new headers
+
+2009-04-23 22:19  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/net-snmp.spec:
+
+   Version number update
+
 2009-04-23 22:16  tanders
 
    * agent/mibgroup/host/hr_filesys.c:
@@ -3941,28 +64438,91 @@
 
 2009-04-23 22:10  tanders
 
-   * configure, configure.in:
+   * configure, configure.d/config_os_misc4:
 
-   CHANGES: HP-UX: BUG: 2779472: Filesystems missing in hrStorage table on HP-UX 11.31
+   CHANGES: HP-UX: BUG: 2779472: Filesystems missing in hrStorage
+   table on
+   HP-UX 11.31
 
 2009-04-23 21:48  tanders
 
    * agent/mibgroup/kernel_sunos5.c:
 
-   CHANGES: Solaris: PATCH: 2751588: Inconsistent data (e.g. UDP/TCP MIB scalar values of zero) can be reported on Solaris 10U4+
+   CHANGES: Solaris: PATCH: 2751588: Inconsistent data (e.g. UDP/TCP
+   MIB
+   scalar values of zero) can be reported on Solaris 10U4+
    Patch provided by Anders Persson
 
+2009-04-23 17:30  hardaker
+
+   *  agent/mibgroup/ucd-snmp/logmatch.c,   
+      agent/mibgroup/ucd-snmp/logmatch.h:
+
+   NEWS: snmpd: PATCH: 1901764: from krisztoforo for supporting
+   logwatch files that are date based
+
+2009-04-23 17:22  hardaker
+
+   * perl/SNMP/SNMP.pm, perl/SNMP/SNMP.xs:
+
+   NEWS: perl: PATCH 1956193: from cacoyle: beta threadable perl
+   module code for SNMPv1/SNMPv2c usage.
+
 2009-04-23 16:57  hardaker
 
    * agent/mibgroup/kernel_sunos5.c:
 
-   CHANGES: solaris: PATCH: 2012404: deal with more than 10 interfaces. New hardcoded limit is 50. A better scaling patch would be appreciated :-)
+   CHANGES: solaris: PATCH: 2012404: deal with more than 10
+   interfaces. New hardcoded limit is 50. A better scaling patch
+   would be appreciated :-)
+
+2009-04-23 16:47  hardaker
+
+   *  README.agent-mibs, configure,   
+      configure.d/config_project_with_enable:
+
+   document that the etherlike-mib has an implementation
+
+2009-04-23 16:40  hardaker
+
+   *  agent/mibgroup/etherlike-mib,   
+      agent/mibgroup/etherlike-mib/data_access,   
+      agent/mibgroup/etherlike-mib/data_access/dot3stats.h,   
+      agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c,   
+      agent/mibgroup/etherlike-mib/dot3StatsTable,   
+      agent/mibgroup/etherlike-mib/dot3StatsTable.h,   
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable.c,   
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable.h,   
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c,
+        
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.h,
+        
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_get.c,
+        
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_get.h,
+        
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_set.c,
+        
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_set.h,
+        
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_enums.h,
+        
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c,
+        
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.h,
+        
+      agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_oids.h,
+         agent/mibgroup/etherlike-mib/dot3StatsTable/ioctl_imp_common.h:
+
+   NEWS: snmpd: PATCH: 2053273: from narendra_k_dell to imlpement
+   the etherlike mib (at least on linux)
 
 2009-04-23 16:35  hardaker
 
    * local/mib2c-conf.d/generic-table-oids.m2c:
 
-   CHANGES: mib2c: PATCH: 2136437: make FLAG defines more 64bit friendly when huge tables are encountered
+   CHANGES: mib2c: PATCH: 2136437: make FLAG defines more 64bit
+   friendly when huge tables are encountered
 
 2009-04-23 16:27  hardaker
 
@@ -3975,13 +64535,15 @@
 
    * python/netsnmp/client.py:
 
-   CHANGES: python: PATCH: 2074817: from fenner to fix regexp engine CPU performance issues
+   CHANGES: python: PATCH: 2074817: from fenner to fix regexp engine
+   CPU performance issues
 
 2009-04-23 16:14  hardaker
 
    * agent/mibgroup/host/hr_storage.c:
 
-   CHANGES: snmpd: PATCH: 2162652: patch to fix simple hrfs checks when NFS is in use.
+   CHANGES: snmpd: PATCH: 2162652: patch to fix simple hrfs checks
+   when NFS is in use.
 
 2009-04-23 16:11  hardaker
 
@@ -4033,6 +64595,58 @@
 
    Fix memory leak in SCTP containers.
 
+2009-04-23 08:29  dts12
+
+   *  include/net-snmp/library/large_fd_set.h,   
+      include/net-snmp/types.h:
+
+   netsnmp_large_fd_set is probably best regarded as an "opaque"
+   data
+   structure, and isn't really intended for direct manipulation.
+   Move it back into the <library/large_fd_set.h> header file.
+   (Like it was before Dave stuck his oar in....)
+
+2009-04-23 08:19  dts12
+
+   *  include/net-snmp/library/large_fd_set.h,   
+      include/net-snmp/session_api.h, include/net-snmp/types.h,   
+      snmplib/fd_event_manager.c, snmplib/large_fd_set.c,   
+      snmplib/snmp_api.c:
+
+   Fuerther improvements to the large FD set support
+   (See patch #2772787)
+
+2009-04-23 06:45  magfr
+
+   * agent/mibgroup/sctp-mib/sctpTables.h:
+
+   building: Use config_error(...) instead of
+   config_require(non-existing) to get better error messages.
+
+2009-04-23 06:41  magfr
+
+   *  agent/mibgroup/sctp-mib/sctpTables.h,   
+      agent/mibgroup/sctp-mib/sctpTables_linux.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn.h,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint.h,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c,   
+      agent/mibgroup/util_funcs.c, agent/mibgroup/util_funcs.h,   
+      agent/mibgroup/util_funcs/get_pid_from_inode.c,   
+      agent/mibgroup/util_funcs/get_pid_from_inode.h:
+
+   snmplib, Linux: Move get_pid_from_inode to it's own file and only
+   compile it if needed, also rename it to
+   netsnmp_get_pid_from_inode.
+
+2009-04-23 04:33  hardaker
+
+   *  agent/mibgroup/mibII/sysORTable.h,   
+      agent/mibgroup/mibII/system_mib.h, agent/snmpd.h:
+
+   CHANGES: snmpd: PATCH: 2431353 from hnrose to make some C++
+   compilers happier
+
 2009-04-23 03:27  hardaker
 
    * snmplib/snmp_alarm.c:
@@ -4040,27 +64654,264 @@
    CHANGES: snmplib: PATCH: 2505488: from dabokey to fix alarms not
    being triggered at the right times due to large clock skews.
 
+2009-04-23 00:01  hardaker
+
+   *  apps/snmpnetstat/inet.c, apps/snmpnetstat/main.c,   
+      apps/snmpnetstat/netstat.h, man/snmpnetstat.1.def:
+
+   NEWS: snmpnetstat: PATCH: 2564538: from ahmake to support GETBULK
+   in v2c+ snmp versions
+
 2009-04-22 23:49  hardaker
 
    *  agent/mibgroup/agent/extend.c, apps/snmpnetstat/inet.c,   
-      apps/snmpnetstat/route.c, apps/snmptrapd_handlers.c,   
-      apps/snmptrapd_handlers.h, snmplib/system.c:
+      apps/snmpnetstat/route.c, snmplib/system.c:
 
    CHANGES: ports: PATCH: 2688342: from ahmake to fix various
    compiler warning
 
+2009-04-22 23:23  hardaker
+
+   * perl/agent/agent.xs:
+
+   CHANGES: perl: PATCH: 276371: from fhew to allow perl to use
+   OPAQUEs
+
+2009-04-22 23:17  hardaker
+
+   * python/netsnmp/client_intf.c:
+
+   CHANGES: python: PATCH: 2775800: from Adam Romanek to allow
+   python threading to continue when a request is sent
+
 2009-04-22 22:11  alex_b
 
    * README, README.win32:
 
    Update THANKS section.
 
+2009-04-22 21:21  magfr
+
+   * agent/mibgroup/util_funcs.c:
+
+   Fold the function extract_inode. with only one user, into it's
+   user.
+   Remove the #define FILE_DISP, with only one user, with the actual
+   value.
+
+2009-04-22 21:03  magfr
+
+   * agent/snmpd.c:
+
+   Make it possible to build with SMUX enabled.
+
+2009-04-22 13:43  jsafranek
+
+   * README.agent-mibs:
+
+   Add a note how the new RMON-MIB implementaion works
+
+2009-04-22 13:41  dts12
+
+   * man/varbind_api.3.def:
+
+   Fill out the documentation of the Varbind-related API calls.
+
+2009-04-22 13:37  jsafranek
+
+   *  README.agent-mibs, agent/mibgroup/rmon-mib,   
+      agent/mibgroup/rmon-mib.h, agent/mibgroup/rmon-mib/data_access,   
+      agent/mibgroup/rmon-mib/data_access/etherstats.h,   
+      agent/mibgroup/rmon-mib/data_access/etherstats_linux.c,   
+      agent/mibgroup/rmon-mib/etherStatsTable,   
+      agent/mibgroup/rmon-mib/etherStatsTable.h,   
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable.c,   
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable.h,   
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c,
+        
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.h,
+        
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_get.c,
+        
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_get.h,
+        
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_set.c,
+        
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_set.h,
+        
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_enums.h,  
+      
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c,
+        
+      agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.h,
+         agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_oids.h,
+         agent/mibgroup/rmon-mib/etherStatsTable/ioctl_imp_common.h:
+
+   NEWS: snmpd: PATCH: 2103492: implement
+   RMON-MIB::etherStatsJabbers
+   Patch from Narendra K., Sandeep K. Shandilya and Shyam Iyer
+
 2009-04-22 10:08  dts12
 
    * man/mib_api.3.def:
 
    Correct a seriously misleading (i.e. wrong) description of the
-   purpose and behaviour of the print_description family of calls.
+   purpose
+   and behaviour of the print_description family of calls.
+
+2009-04-22 09:32  dts12
+
+   * man/mib_api.3.def:
+
+   Further polishing of the descriptions of MIB-related API calls.
+
+2009-04-22 07:39  dts12
+
+   * snmplib/snmp_api.c:
+
+   Remove unnecessary range checks.
+   (These are handled within the large_fd_set routines themselves).
+
+2009-04-21 23:27  alex_b
+
+   *  win32/libsnmp/Makefile.in, win32/libsnmp/libsnmp.dsp,   
+      win32/libsnmp_dll/Makefile.in, win32/libsnmp_dll/libsnmp.def,   
+      win32/libsnmp_dll/libsnmp.def.in,   
+      win32/libsnmp_dll/libsnmp_dll.dsp:
+
+   win32: Fix Windows build environment to support patch 2772787.
+
+2009-04-21 15:33  dts12
+
+   *  agent/snmpd.c, include/net-snmp/library/fd_event_manager.h,   
+      include/net-snmp/library/large_fd_set.h,   
+      include/net-snmp/session_api.h, include/net-snmp/types.h,   
+      snmplib/Makefile.in, snmplib/fd_event_manager.c,   
+      snmplib/large_fd_set.c, snmplib/snmp_api.c:
+
+   Revised version of patch #2772787
+
+2009-04-21 15:15  dts12
+
+   *  include/net-snmp/library/large_fd_set.h,   
+      include/net-snmp/session_api.h, include/net-snmp/types.h,   
+      snmplib/Makefile.in, snmplib/large_fd_set.c, snmplib/snmp_api.c,  
+       win32/libsnmp/libsnmp.dsp:
+
+   Undo revision 17515
+   (broken/incomplete patch)
+
+2009-04-21 14:37  dts12
+
+   *  include/net-snmp/library/large_fd_set.h,   
+      include/net-snmp/session_api.h, include/net-snmp/types.h,   
+      snmplib/Makefile.in, snmplib/large_fd_set.c, snmplib/snmp_api.c,  
+       win32/libsnmp/libsnmp.dsp:
+
+   CHANGES: snmplib: PATCH: 2772787: Cleaner approach to handling
+   large fd_sets.
+   Based on patch supplied by Bart Van Assche.
+
+2009-04-21 14:34  dts12
+
+   * man/Makefile.in:
+
+   Properly generate new core API man pages.
+
+2009-04-21 09:38  dts12
+
+   *  include/net-snmp/config_api.h, include/net-snmp/library/mib.h,   
+      include/net-snmp/library/parse.h,   
+      include/net-snmp/library/read_config.h,   
+      include/net-snmp/library/snmp_api.h,   
+      include/net-snmp/library/snmp_client.h,   
+      include/net-snmp/mib_api.h, include/net-snmp/pdu_api.h,   
+      include/net-snmp/session_api.h, include/net-snmp/types.h,   
+      include/net-snmp/varbind_api.h:
+
+   First-cut at identifying the core Net-SNMP API calls.
+   Move these into the appropriate top-level header files.
+
+2009-04-21 09:36  dts12
+
+   *  man/Makefile.in, man/config_api.3.def, man/read_config.3.def,   
+      man/session_api.3.def, man/snmp_api.3.def:
+
+   Rename config/session API man pages, in line with other core API
+   structure.
+
+2009-04-21 09:32  dts12
+
+   *  man/Makefile.in, man/mib_api.3.def, man/pdu_api.3.def,   
+      man/read_config.3.def, man/snmp_api.3.def, man/varbind_api.3.def:
+
+   Document (or restructure) the core API elements.
+   Align this organisation with the first-cut restructuring
+   of the main header files.
+
+2009-04-20 10:23  dts12
+
+   * snmplib/snmp_api.c:
+
+   Skip file handles that are too large for fd_set to cope with.
+   A simple fix for the immediate problem addressed by patch
+   #1627049.
+
+2009-04-20 10:19  dts12
+
+   * include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c:
+
+   Revert patch #1627049 (extension to deal with large file
+   handlers).
+   See the discussion on that tracker entry for background as to
+   why.
+
+2009-04-20 00:59  alex_b
+
+   *  README.win32, agent/mibgroup/ucd-snmp/pass.c,   
+      agent/mibgroup/ucd-snmp/pass_persist.c,   
+      agent/mibgroup/util_funcs.h,   
+      include/net-snmp/data_access/interface.h,   
+      include/net-snmp/library/snmpUDPDomain.h, perl/agent/agent.xs,   
+      win32/Configure, win32/libagent/Makefile.in,   
+      win32/libagent/libagent.dsp, win32/libsnmp_dll/libsnmp.def.in,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in,   
+      win32/netsnmpmibs/Makefile.in, win32/netsnmpmibs/netsnmpmibs.dsp, 
+        win32/netsnmpmibssdk/Makefile.in,   
+      win32/netsnmpmibssdk/netsnmpmibssdk.dsp:
+
+   win32: Build fixes for Windows. pass and pass_persist still need
+   to be fixed to support Counter64 on Windows.
+
+2009-04-20 00:48  alex_b
+
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   win32: Sync net-snmp-config.h.in and net-snmp-config.h
+
+2009-04-17 21:21  magfr
+
+   *  configure, configure.d/config_os_progs, ltmain.sh, m4/libtool.m4, 
+        m4/ltoptions.m4, m4/ltsugar.m4, m4/ltversion.m4:
+
+   CHANGES: build: Upgrade libtool version to 2.2.6 in order to work
+   around a buglet that made autoreconf -vif erase config.sub and
+   config.guess.
+
+2009-04-14 21:59  magfr
+
+   * snmplib/parse.c:
+
+   CHANGES: snmplib: BUG: 1976772: Changed the mib parser to handle
+   long binary and hex strings.
+
+2009-04-11 12:52  rstory
+
+   * dist/makerelease.xml:
+
+   suggest truncation of ChangeLog.reallyadd
 
 2009-04-10 23:18  alex_b
 
@@ -4095,7 +64946,8 @@
 
 2009-04-10 21:45  alex_b
 
-   * win32/Configure:
+   *  win32/Configure, win32/dist/README.build.win32.txt,   
+      win32/dist/README.txt:
 
    Win32: Minor build and readme updates.
 
@@ -4107,24 +64959,27 @@
    NEWS: Win32: PATCH 2686248: Applied patch by Bart Van Assche
    which fixes several winExtDLL bugs.
 
-2009-04-10 20:14  rstory
+2009-04-10 20:17  rstory
 
    * agent/mibgroup/ucd-snmp/diskio.c:
 
-   restore annoying log message, but fix cause of it on !freebsd systems
+   restore annoying log message, but fix cause of it on !freebsd
+   systems
 
 2009-04-09 12:28  dts12
 
    * agent/helpers/table_iterator.c:
 
-   CHANGES: snmpd: PATCH: 1550730: Report errors from iterator-based handlers.
+   CHANGES: snmpd: PATCH: 1550730: Report errors from iterator-based
+   handlers.
    Based on a patch provided by Wayne Glantz
 
 2009-04-09 11:41  dts12
 
    * agent/mibgroup/snmpv3/usmUser.c:
 
-   CHANGES: snmpd: PATCH: 2124288: Fix setting of usmUserPrivProtocol at creation.
+   CHANGES: snmpd: PATCH: 2124288: Fix setting of
+   usmUserPrivProtocol at creation.
    Logic bug, reported by Ramesh Kotabagi
 
 2009-04-09 09:12  dts12
@@ -4141,47 +64996,98 @@
    CHANGES: python: PATCH: 2260828: Fix python snmpwalk memory leak
    Patch provided by Gabriele Messineo
 
+2009-04-09 08:58  dts12
+
+   * perl/SNMP/SNMP.pm, perl/SNMP/SNMP.xs:
+
+   CHANGES: perl: PATCH: 2272347: Implement "implied" in MIB hash
+   Patch provided by Bill Fenner
+
 2009-04-09 08:54  dts12
 
    * local/mib2c.iterate_access.conf:
 
-   CHANGES: mib2c: PATCH: 2316127: Fix bug in iterate_access generated code.
+   CHANGES: mib2c: PATCH: 2316127: Fix bug in iterate_access
+   generated code.
+
+2009-04-09 08:48  dts12
+
+   * include/net-snmp/system/netbsd.h:
+
+   CHANGES: snmpd: PATCH: 2435681: Enable if-mib rewrite (with
+   sysctl backend) on NetBSD
 
 2009-04-09 08:44  dts12
 
    * agent/mibgroup/if-mib/data_access/interface_sysctl.c:
 
-   CHANGES: snmpd: PATCH: 2435793: Support 64-bit IF-MIB counters on sysctl (*BSD) systems.
+   CHANGES: snmpd: PATCH: 2435793: Support 64-bit IF-MIB counters on
+   sysctl (*BSD) systems.
    Patch provided by Jan Andres
 
+2009-04-09 08:00  tanders
+
+   * perl/agent/agent.xs:
+
+   fix compilation warnings
+
+2009-04-08 23:17  tanders
+
+   * perl/agent/agent.xs:
+
+   move comments to a place where they are legal
+
+2009-04-08 23:03  tanders
+
+   * perl/agent/agent.pm, perl/agent/agent.xs:
+
+   - rename new getRequestorIp to getSourceIP and getTargetIp to
+   getDestIp
+   - remind that this is fully transport-specific, i.e. UDP/IPv4
+   only!
+
 2009-04-08 16:00  dts12
 
    * agent/snmp_agent.c:
 
-   CHANGES: snmpd: PATCH: 2384779: Fix handling of GetBulk with N>0,M==0
+   CHANGES: snmpd: PATCH: 2384779: Fix handling of GetBulk with
+   N>0,M==0
    Patch provided by Angus Salkeld
 
 2009-04-08 15:52  dts12
 
    * agent/mibgroup/host/hr_swrun.c:
 
-   CHANGES: snmpd: PATCH: 2406378: Fix hrSWRunPerfMem on 64-bit Solaris systems
+   CHANGES: snmpd: PATCH: 2406378: Fix hrSWRunPerfMem on 64-bit
+   Solaris systems
    Patch provided by NTwoO
 
 2009-04-08 15:48  dts12
 
    * snmplib/mib.c:
 
-   CHANGES: snmplib: PATCH: 2479700: Fix zoned IP address used as table indices
+   CHANGES: snmplib: PATCH: 2479700: Fix zoned IP address used as
+   table indices
    Patch provided by Brian Retford.
 
 2009-04-08 15:33  dts12
 
    * snmplib/snmp_logging.c:
 
-   CHANGES: snmplib: PATCH: 2492377: Fix typo/bug in snmp_enable_callback()
+   CHANGES: snmplib: PATCH: 2492377: Fix typo/bug in
+   snmp_enable_callback()
    Reported by joyceanmachine
 
+2009-04-08 15:29  dts12
+
+   *  agent/mibgroup/sctp-mib/sctpScalars.h,   
+      agent/mibgroup/sctp-mib/sctpScalars_freebsd.c,   
+      agent/mibgroup/sctp-mib/sctpTables.h,   
+      agent/mibgroup/sctp-mib/sctpTables_common.h,   
+      agent/mibgroup/sctp-mib/sctpTables_freebsd.c:
+
+   CHANGES: snmpd: PATCH: 2507249: sctp-mib support for FreeBSD.
+
 2009-04-08 15:16  dts12
 
    * snmplib/snmp_client.c:
@@ -4194,7 +65100,8 @@
 
    * python/netsnmp/client_intf.c:
 
-   CHANGES: python: PATCH: 2580979: Fix python session pointers on 64-bit systems.
+   CHANGES: python: PATCH: 2580979: Fix python session pointers on
+   64-bit systems.
    Patch provided by John Khvatov.
 
 2009-04-08 14:49  dts12
@@ -4208,8 +65115,7 @@
 2009-04-08 14:34  dts12
 
    *  perl/TrapReceiver/TrapReceiver.pm,   
-      perl/TrapReceiver/TrapReceiver.xs, perl/TrapReceiver/const-c.inc, 
-        perl/TrapReceiver/const-xs.inc:
+      perl/TrapReceiver/TrapReceiver.xs:
 
    CHANGES: snmptrapd: PATCH: 2726302: Pass results of Perl trap
    handlers to trap daemon
@@ -4223,6 +65129,14 @@
    high-ASCII chars
    Patch provided by Bart Van Assche
 
+2009-04-08 14:24  dts12
+
+   * perl/agent/agent.pm, perl/agent/agent.xs:
+
+   CHANGES: perl: PATCH: 2709705: Retrieve src/target IP address in
+   Perl-based agents
+   Patch provided by fhew
+
 2009-04-08 14:16  dts12
 
    * snmplib/snmpUDPIPv6Domain.c:
@@ -4249,6 +65163,28 @@
    Qn: Does this even qualify as an error? Wouldn't a warning be
    sufficient?
 
+2009-04-06 19:33  magfr
+
+   * include/net-snmp/library/parse.h, snmplib/parse.c:
+
+   snmplib: Make the node struct private. Hide the orhan_nodes
+   variable.
+
+2009-04-06 18:45  magfr
+
+   * agent/snmp_perl.c:
+
+   snmpd,perl: If my_perl is NULL when passed to perl_destruct then
+   that function crashes for some perl versions so check that it is
+   non-null before destroying it.
+
+2009-04-06 18:42  magfr
+
+   * perl/agent/agent.xs:
+
+   perl: Avoid surprises if the perl string contains printf escape
+   characters.
+
 2009-04-06 18:22  dts12
 
    * agent/mibgroup/host/hr_swrun.c:
@@ -4257,7 +65193,7 @@
    (Avoids truncated walk of hrSWRunPath on SuSE systems)
    Reported by Kamil Kisiel.
 
-2009-04-06 12:05  tanders
+2009-04-06 11:58  tanders
 
    * perl/agent/agent.xs, perl/agent/typemap:
 
@@ -4266,11 +65202,109 @@
    getRootOID works properly. Now passes "make test" and "make
    perltest".
 
-2009-04-06 12:02  dts12
+2009-04-05 10:05  magfr
 
-   * agent/mibgroup/hardware/memory/memory_linux.c:
+   *  agent/mibgroup/host/hr_storage.c,   
+      agent/mibgroup/ip-mib/data_access/systemstats_common.c,   
+      agent/mibgroup/ip-mib/data_access/systemstats_linux.c,   
+      agent/mibgroup/smux/smux.c:
 
-   Fix typo
+   Remove unused variables.
+
+2009-04-05 09:53  magfr
+
+   *  agent/helpers/table_dataset.c,   
+      agent/mibgroup/examples/netSnmpHostsTable.c,   
+      agent/mibgroup/mibII/ipCidrRouteTable.c,   
+      local/mib2c.iterate_access.conf, local/mib2c.notify.conf:
+
+   Make even more variables and templates const.
+
+2009-04-04 22:13  magfr
+
+   *  agent/mibgroup/agent/nsCache.c, agent/mibgroup/agent/nsDebug.c,   
+      agent/mibgroup/agent/nsLogging.c,   
+      agent/mibgroup/agent/nsModuleTable.c,   
+      agent/mibgroup/agent/nsTransactionTable.c,   
+      agent/mibgroup/agent/nsVacmAccessTable.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable.h,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable.c,   
+      agent/mibgroup/if-mib/ifXTable/ifXTable.h,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c,
+        
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.h,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c,
+        
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.h,
+        
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.c,  
+       agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h, 
+       
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h,
+         agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h,   
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.c,
+        
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h,
+         agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.c,   
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.h,   
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c,   
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h,   
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.c,   
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.h,   
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.c,   
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.h,   
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.h,
+         agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/snmp_mib.c,  
+       agent/mibgroup/mibII/sysORTable.c,   
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/updates.c,  
+       agent/mibgroup/mibII/updates.h,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c,
+        
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.h,
+        
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable.c,
+        
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable.h,
+         agent/mibgroup/target/target_counters.c,   
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c,   
+      agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.h,   
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.c,   
+      agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.h,   
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.c,   
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.h:
+
+   snmpd: Make more local variables const and local.
+
+2009-04-04 10:07  magfr
+
+   * agent/snmpd.c, apps/snmptrapd.c, net-snmp-config.in:
+
+   Mark the reconfig variable as static since it is private to the
+   module.
+
+2009-04-04 10:03  magfr
+
+   * agent/mibgroup/ucd-snmp/memory.c:
+
+   Mark the file scope private variable minimum_swap as static.
+
+2009-04-04 09:58  magfr
+
+   *  agent/mibgroup/if-mib/ifTable/ifTable.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_interface.c,   
+      agent/mibgroup/ucd-snmp/lmsensorsMib.c,   
+      agent/mibgroup/ucd-snmp/memory.c,   
+      agent/mibgroup/ucd-snmp/vmstat.c:
+
+   snmplib: Make more symbols const in order to move them to
+   readonly memory.
 
 2009-04-02 21:24  hardaker
 
@@ -4279,6 +65313,131 @@
    CHANGES: BUG 112694: Patch from Bill Fenner: don't open (and
    clobber) an agentx socket if the other transports fail to open
 
+2009-04-01 23:41  hardaker
+
+   * CHANGES, NEWS:
+
+   version update
+
+2009-04-01 23:19  hardaker
+
+   * ChangeLog:
+
+   version update
+
+2009-04-01 23:04  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-04-01 23:03  hardaker
+
+   * snmplib/parse.c, snmplib/snmpDTLSUDPDomain.c, snmplib/snmptsm.c:
+
+   convert comments to ANSI comments
+
+2009-04-01 22:21  hardaker
+
+   *  man/Makefile.in, 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-04-01 22:03  hardaker
+
+   *  FAQ, README, configure, configure.ac, dist/Makefile,   
+      dist/makerelease.xml, dist/net-snmp.spec:
+
+   Version number update
+
+-------------------------------------------------------------------------------
+
+Changes: V5.4 -> V5.5.pre1
+
+2009-04-01 21:58  hardaker
+
+   * man/snmp.conf.5.def, man/snmpd.8.def:
+
+   updates for SSH
+
+2009-04-01 19:39  magfr
+
+   * include/net-snmp/library/snmp_client.h, snmplib/snmp_client.c:
+
+   Make the src pointer of snmp_clone_mem a pointer to constant.
+
+2009-04-01 18:23  hardaker
+
+   * apps:
+
+   ignore 'sshtosnmp'
+
+2009-04-01 17:31  hardaker
+
+   *  apps/sshtosnmp.c, include/net-snmp/library/default_store.h,   
+      man/snmpd.8.def, snmplib/snmpSSHDomain.c:
+
+   Make ssh transport support use a unix socket with proper
+   credential passing
+
+2009-04-01 17:29  hardaker
+
+   * agent/mibgroup/util_funcs.c:
+
+   make the exec cache readable only by the user
+
+2009-04-01 17:28  hardaker
+
+   *  agent/mibgroup/agentx/agentx_config.c,   
+      include/net-snmp/library/system.h, snmplib/system.c:
+
+   move string to uid/gid functionality to snmplib for reuse
+
 2009-03-31 15:12  dts12
 
    * local/mib2c.table_data.conf:
@@ -4300,6 +65459,93 @@
 
    C comments use /* ... */, not #
 
+2009-03-31 08:05  jsafranek
+
+   * agent/mibgroup/mibII/icmp.c:
+
+   Fix compilation with glibc < 2.4, ICMPv6 message types starting
+   with MLD_* have different name there.
+
+2009-03-24 06:04  magfr
+
+   * snmplib/snmp_openssl.c:
+
+   Do not compile the parts that depend on libssl if libssl is
+   missing.
+
+2009-03-23 09:21  jsafranek
+
+   *  agent/mibgroup/ip-mib/data_access/arp_common.c,   
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.c,  
+       agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h, 
+       
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c,
+         include/net-snmp/data_access/arp.h:
+
+   NEWS: snmpd: ipNetToPhysicalLastUpdated OID implemented
+   
+   The value is estimated with every cache reload, which is once in
+   60 seconds by default.
+   That means the value reported by snmpd may differ from reality by
+   one minute.
+   If anybody needs better precision, the cache timeout can be
+   configured by setting
+   NET-SNMP-AGENT-MIB::nsCacheTimeout.1.3.6.1.2.1.4.35 to
+   appropriate value by snmpset.
+
+2009-03-20 19:38  hardaker
+
+   * dist/extractnews:
+
+   fix lack of wrapping lines problem
+
+2009-03-20 18:31  hardaker
+
+   * NEWS, configure, configure.d/config_project_with_enable:
+
+   config options, etc, for SSH and DTLS
+
+2009-03-20 18:24  hardaker
+
+   * man/snmpcmd.1.def, man/snmpd.8.def:
+
+   currently minimal documentation on dtls and ssh
+
+2009-03-20 16:50  hardaker
+
+   *  apps/Makefile.in, apps/sshtosnmp.c, configure,   
+      configure.d/config_os_libs,   
+      include/net-snmp/library/snmpSSHDomain.h,   
+      include/net-snmp/net-snmp-config.h.in, snmplib/snmpSSHDomain.c,   
+      snmplib/snmp_transport.c:
+
+   Added alpha snmp over ssh support
+
+2009-03-20 16:16  hardaker
+
+   * snmplib/snmpDTLSUDPDomain.c:
+
+   check the sec name length, not just the contents
+
+2009-03-20 16:01  hardaker
+
+   * snmplib/snmptsm.c:
+
+   sequence parsing fix
+
+2009-03-20 15:53  hardaker
+
+   * include/net-snmp/library/snmp_transport.h, snmplib/snmp_api.c:
+
+   added a new flag to allow for signalling of legal empty packets
+   from a transport
+
+2009-03-18 19:42  magfr
+
+   * agent/mibgroup/hardware/memory/memory_linux.c:
+
+   Make it possible to compile again.
+
 2009-03-18 10:52  dts12
 
    * agent/mibgroup/hardware/cpu/cpu_linux.c:
@@ -4329,6 +65575,20 @@
    Fix valgrind warning.
    Patch provided by Stephen Hemminger
 
+2009-03-17 22:57  magfr
+
+   * apps/snmptrapd_handlers.c, apps/snmptrapd_handlers.h:
+
+   PATCH: 2688342: from "Bart Van Assche": Use proper function
+   pointers
+
+2009-03-13 21:26  dts12
+
+   * agent/mibgroup/host/hr_storage.c:
+
+   Process hrMemorySize (scalar) separately from hrStorageTable.
+   This simplifies the handler code structure.
+
 2009-03-13 21:23  dts12
 
    *  agent/mibgroup/hardware/cpu/cpu.c,   
@@ -4353,6 +65613,27 @@
    (An alternative might be to create a new entry instead).
    Problem reported by Nick Hindley
 
+2009-03-10 15:25  jsafranek
+
+   * README.agent-mibs, agent/mibgroup/ip-mib/ip_scalars.c:
+
+   NEWS: snmpd: ipAddressSpinLock implemented
+
+2009-03-02 11:23  dts12
+
+   * COPYING:
+
+   Fix attribution of latest copyright notice.
+
+2009-02-28 18:21  magfr
+
+   *  acconfig.h, configure, configure.d/config_modules_agent,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   Move the #define config_*(...) from acconfig.h to the configure
+   script so that they are next to the code that handle the
+   corresponding config_* token.
+
 2009-02-27 13:20  jsafranek
 
    * agent/mibgroup/ucd-snmp/diskio.c:
@@ -4362,6 +65643,20 @@
    It's being written to log everytime someone queries
    UCD-SNMP-DISKIO MIB.
 
+2009-02-25 06:41  magfr
+
+   * apps/snmpnetstat/if.c:
+
+   Use the feature test macros to set what is needed.
+   Do not use the internal GNU libc macros that are set by setting
+   the feature test macros.
+
+2009-02-25 06:38  magfr
+
+   * snmplib/snmpUnixDomain.c:
+
+   Add missing include.
+
 2009-02-24 07:26  magfr
 
    * snmplib/snmp_logging.c:
@@ -4369,27 +65664,94 @@
    CHANGES: Make -LN stop dumping core. Make bad debug levels report
    the offending symbol.
 
-2009-02-18 15:27  jsafranek
+2009-02-24 06:50  magfr
 
-   *  agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c,   
-      agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c,   
-      agent/mibgroup/sctp-mib/sctpAssocTable.c,   
-      agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c,   
-      agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c,   
-      agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c,   
-      agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c,   
-      agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c,   
-      agent/mibgroup/sctp-mib/sctpTables_common.c,   
+   *  agent/mibgroup/agentx/master.c,   
+      include/net-snmp/library/snmpUnixDomain.h,   
+      snmplib/snmpUnixDomain.c:
+
+   Move the directory creation code to happen after the domain
+   selection code so that the directory creation code knows what
+   directory to create.
+
+2009-02-24 06:47  magfr
+
+   * configure, configure.d/config_project_with_enable:
+
+   Change the error checking option --enable-mysql to suggest that
+   that --with-mysql is used rather that --with-openssl.
+
+2009-02-24 06:44  magfr
+
+   * configure, include/net-snmp/net-snmp-config.h.in:
+
+   Regenerate autoconf artifacts.
+
+2009-02-23 18:43  rstory
+
+   * apps/snmptrapd_sql.c:
+
+   add forgotten file
+
+2009-02-20 04:41  hardaker
+
+   *  configure.d/config_modules_agent, configure.d/config_modules_lib, 
+        configure.d/config_os_functions, configure.d/config_os_libs,   
+      configure.d/config_os_misc1, configure.d/config_os_misc2,   
+      configure.d/config_os_misc3, configure.d/config_os_misc4,   
+      configure.d/config_os_progs,   
+      configure.d/config_os_struct_members,   
+      configure.d/config_project_ipv6_types,   
+      configure.d/config_project_manual,   
+      configure.d/config_project_paths,   
+      configure.d/config_project_perl_python,   
+      configure.d/config_project_types,   
+      configure.d/config_project_with_enable:
+
+   added emacs autoconf mode specifier
+
+2009-02-19 18:32  rstory
+
+   * README.sql, man/snmptrapd.conf.5.def:
+
+   document new sql trap logging
+
+2009-02-19 18:20  rstory
+
+   *  COPYING, NEWS, apps/Makefile.in, apps/snmptrapd.c,   
+      apps/snmptrapd_handlers.c, apps/snmptrapd_handlers.h, configure,  
+       configure.d/config_os_libs,   
+      configure.d/config_project_with_enable,   
+      dist/schema-snmptrapd.sql, include/net-snmp/net-snmp-config.h.in:
+
+   NEWS: snmptrapd: add trap handler for logging traps to a mysql
+   database
+
+2009-02-19 17:58  rstory
+
+   *  include/net-snmp/library/container.h, snmplib/container.c,   
+      snmplib/container_list_ssll.c:
+
+   NEWS: snmplib: added iterator for singly linked lists; add
+   container name in more error msgs
+
+2009-02-18 18:52  rstory
+
+   * apps/snmpusm.c, include/net-snmp/library/snmpv3.h:
+
+   CHANGES: snmplib: change MAX_ENGINEID_LENGTH to 32, per
+   SNMP-FRAMEWORK-MIB SnmpEngineID TC
+
+2009-02-18 14:41  jsafranek
+
+   *  agent/mibgroup/sctp-mib/sctpTables_common.c,   
       agent/mibgroup/sctp-mib/sctpTables_common.h,   
       agent/mibgroup/sctp-mib/sctpTables_linux.c:
 
-   Fix sctp-mib compilation problems
-
-2009-02-18 15:27  jsafranek
-
-   * agent/mibgroup/util_funcs.c, agent/mibgroup/util_funcs.h:
-
-   Backport get_pid_from_inode from trunk, it's needed by sctp-mib
+   Configure script does not like net-snmp-config.h being included
+   from header
+   files, which are added by --with-mib-modules=, let's remove it
+   from there.
 
 2009-02-16 21:24  hardaker
 
@@ -4398,6 +65760,101 @@
    CHANGES: perl: BUG 1554817: Patch from xanco: fix the class
    assigment so getRootOID works properly.
 
+2009-02-15 07:20  magfr
+
+   * acconfig.h:
+
+   Correct copy/paste mistake
+
+2009-02-12 00:25  hardaker
+
+   *  acconfig.h, include/net-snmp/library/default_store.h,   
+      include/net-snmp/library/snmpDTLSUDPDomain.h,   
+      include/net-snmp/library/snmp_transport.h,   
+      include/net-snmp/net-snmp-config.h.in, mibs/NET-SNMP-TC.txt,   
+      snmplib/snmpDTLSUDPDomain.c, snmplib/snmp_transport.c,   
+      snmplib/snmptsm.c:
+
+   An early experimental implementation of the DTLS over UDP
+   transport from the IETF ISMS working group
+
+2009-02-11 23:30  hardaker
+
+   * dist/RELEASE-INSTRUCTIONS:
+
+   updated release instructions
+
+2009-02-06 21:36  magfr
+
+   * snmplib/read_config.c:
+
+   Make it possible to build as C++ again.
+
+2009-02-05 22:56  magfr
+
+   *  acconfig.h, agent/mibgroup/disman/nslookup/lookupCtlTable.c,   
+      agent/mibgroup/disman/ping/pingCtlTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.h,   
+      agent/mibgroup/if-mib/data_access/interface_solaris2.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c,   
+      agent/mibgroup/ip-mib/data_access/systemstats_solaris2.c,   
+      agent/mibgroup/ucd-snmp/diskio.c, configure,   
+      configure.d/config_os_functions,   
+      include/net-snmp/net-snmp-config.h.in,   
+      include/net-snmp/system/svr5.h:
+
+   CHANGES: build: Assume that the target platform supports memcpy,
+   memmove, memset, strchr and strrchr.
+
+2009-02-04 06:57  magfr
+
+   *  agent/helpers/table.c, agent/helpers/table_dataset.c,   
+      agent/mibgroup/mibII/mta_sendmail.c, configure,   
+      configure.d/config_os_headers, include/net-snmp/agent/table.h,   
+      include/net-snmp/agent/table_dataset.h,   
+      include/net-snmp/library/read_config.h,   
+      include/net-snmp/library/snmp_debug.h,   
+      include/net-snmp/library/snmp_logging.h,   
+      include/net-snmp/net-snmp-config.h.in, snmplib/snmp_debug.c,   
+      snmplib/snmp_logging.c, snmplib/snprintf.c,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   NEWS: Remove support for use of varargs.h. Now assumes that
+   stdarg.h is available.
+
+2009-02-04 06:49  magfr
+
+   *  agent/agent_handler.c, agent/agent_trap.c,   
+      agent/mibgroup/agentx/agentx_config.c,   
+      agent/mibgroup/disman/mteTriggerTable.c,   
+      agent/mibgroup/host/hr_filesys.c,   
+      agent/mibgroup/mibII/mta_sendmail.c,   
+      agent/mibgroup/mibII/system_mib.c,   
+      agent/mibgroup/ucd-snmp/disk.c,   
+      agent/mibgroup/utilities/iquery.c, apps/snmptrapd_handlers.c,   
+      include/net-snmp/library/read_config.h, snmplib/read_config.c,   
+      snmplib/snmpv3.c:
+
+   NEWS: snmplib: Introduce printf-like versions of config_perror
+   and config_pwarn (netsnmp_config_error and netsnmp_config_warn).
+   Replace many instances of { tmpbuf[...]; sprintf(tmpbuf, ...);
+   config_p*(tmpbuf); } with netsnmp_config_*(...);
+
+2009-02-03 16:14  hardaker
+
+   * agent/agent_registry.c, include/net-snmp/agent/agent_registry.h:
+
+   add the reginfo and and session pointer to the REGISTER_OID
+   callback
+
+2009-02-03 00:18  hardaker
+
+   * configure, configure.d/config_os_libs:
+
+   fixed -lssl check
+
 2009-01-29 08:38  dts12
 
    * snmplib/snmp_api.c:
@@ -4409,14 +65866,14 @@
    * snmplib/snmpUDPDomain.c:
 
    Fix src/dst confusion
-   Patch provided by Krzysztof Ol¿dzki
+   Patch provided by Krzysztof Ol爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œ¶å›˜zki
 
 2009-01-28 09:29  dts12
 
    * agent/mibgroup/smux/smux.c:
 
    CHANGES: Fix two bugs with smux password support.
-   Patch supplied by Krzysztof Ol¿dzki
+   Patch supplied by Krzysztof Ol爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œ¶å›˜zki
 
 2009-01-23 14:53  jsafranek
 
@@ -4424,6 +65881,51 @@
 
    Fix parsing of level ranges in '-L<capital>'.
 
+2009-01-20 14:51  dts12
+
+   *  agent/mibgroup/host/hr_swinst.c, configure,   
+      configure.d/config_os_headers:
+
+   Check for the existence of <rpm/rpmfileutil.h> before including
+   it.
+
+2009-01-19 20:50  magfr
+
+   * agent/mibgroup/mibII/icmp.c:
+
+   Make it possible to build without IPv6 again.
+
+2009-01-19 15:01  jsafranek
+
+   *  agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/icmp.h,   
+      agent/mibgroup/mibII/kernel_linux.c,   
+      agent/mibgroup/mibII/kernel_linux.h, configure,   
+      configure.d/config_os_headers,   
+      include/net-snmp/net-snmp-config.h.in,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   NEWS: snmpd: PATCH: 1927751: from Mitsuru Chinen: implement
+   icmpMsgStatsTable on Linux
+
+2009-01-19 09:41  jsafranek
+
+   *  agent/mibgroup/ucd-snmp/disk.c, agent/mibgroup/ucd-snmp/disk.h,   
+      mibs/UCD-SNMP-MIB.txt:
+
+   NEWS: snmpd: PATCH: 2449210: add 64-bit disk usage statistics to
+   UCD-SNMP-MIB::dskTable
+
+2009-01-18 07:40  magfr
+
+   * configure, configure.d/config_project_with_enable:
+
+   CHANGES: BUG: 2168180: Changed --disable-reentrant to not
+   activate the reentrant code and made --enable-reentrant accept no
+   values other than yes and no. Did the same for
+   --enable-mib-config-checks, --enable-mib-config-debug,
+   --with-defaults, --enable-developer and --enable-testing-code as
+   well.
+
 2009-01-13 09:17  jsafranek
 
    * snmplib/asn1.c:
@@ -4434,6 +65936,63 @@
    each subidentifier. This is now checked and parsing of OID fails,
    if this condition is not met.
 
+2009-01-11 21:54  magfr
+
+   * configure, configure.d/config_project_with_enable:
+
+   CHANGES: building: Check that the temp-file-pattern ends in 6 X's
+   as mkstemp and mktemp require that.
+
+2009-01-11 21:38  magfr
+
+   *  acconfig.h, configure, configure.d/config_project_with_enable,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: building: Be a lot more strict on the values that are
+   acceptable for --with-persistent-mask (only allow three octal
+   digits)
+
+2009-01-11 20:42  magfr
+
+   *  aclocal.m4, configure, configure.d/config_project_with_enable,   
+      m4/netsnmp_arg.m4:
+
+   CHANGES: building: We are currently using the practice of adding
+   a mirroring AC_ARG_WITH/ENABLE to each AC_ARG_ENABLE/WITH. This
+   patch adds NETSNMP_ARG_WITH/ENABLE macros that automatically adds
+   the mirror variable and then converts the configure machinery to
+   use them.
+
+2009-01-11 20:36  magfr
+
+   * configure, configure.d/config_project_with_enable:
+
+   Move AC_DEFINES in config_project_with_enable to be located next
+   to the AC_ARG_... they depend on.
+
+2009-01-11 20:34  magfr
+
+   *  configure, configure.d/config_project_manual,   
+      configure.d/config_project_with_enable:
+
+   Change the default version number checking to be easier to read
+
+2009-01-11 19:19  magfr
+
+   *  configure, configure.d/config_os_libs,   
+      configure.d/config_os_misc4,   
+      configure.d/config_project_with_enable:
+
+   Move the last AC_ARG_...'s to config_project_with_enable.
+
+2009-01-11 19:08  magfr
+
+   * configure, configure.d/config_project_with_enable:
+
+   CHANGES: building: Change the macro for --with-features-of from
+   AC_ARG_ENABLE to AC_ARG_WITH in order to make the option be
+   --with-features-of.
+
 2009-01-08 10:45  jsafranek
 
    * snmplib/snmp_logging.c:
@@ -4448,12 +66007,209 @@
    in stable
    branches. We now support both of them.
 
+2009-01-08 03:51  magfr
+
+   * Makefile.top:
+
+   Do not depend on the existance of /bin/sh. Also follow the advice
+   of the autoconf manual and finally allow for libtool that adopts
+   the generated script after the capabilities of SHELL.
+
+2009-01-07 16:02  jsafranek
+
+   * configure, configure.d/config_os_headers:
+
+   Reorder the netinet/icmp_var.h and netinet/ip_icmp.h, the later
+   one must be checked first on FreeBSD 7
+
 2009-01-06 22:23  hardaker
 
    * COPYING:
 
    update SPARTA for 2009
 
+2009-01-03 20:23  magfr
+
+   * configure, m4/ac_prompt_user.m4:
+
+   Upgrade the AC_PROMPT_USER macros to autoconf 2.63 where
+   AC_FD_MSG is deprecated and AS_MESSAGE_FD is recommended.
+
+2009-01-03 14:20  magfr
+
+   *  acinclude.m4, aclocal.m4, configure, m4/ac_add_search_path.m4,   
+      m4/ac_msg_cache.m4, m4/ac_msg_module_dbg.m4,   
+      m4/ac_prompt_user.m4, m4/netsnmp_search_libs.m4:
+
+   Split acinclude.m4 into smaller parts by function.
+
+2009-01-03 14:15  magfr
+
+   * Makefile.am:
+
+   Make autoreconf work again.
+
+2009-01-03 14:11  magfr
+
+   *  aclocal.m4, config.guess, configure, configure.ac,   
+      configure.d/config_os_progs,   
+      include/net-snmp/net-snmp-config.h.in, install-sh, ltmain.sh, m4, 
+        m4/libtool.m4, m4/ltoptions.m4, m4/ltsugar.m4, m4/ltversion.m4, 
+        m4/lt~obsolete.m4:
+
+   Update to libtool-2.2.4
+
+2009-01-03 13:28  magfr
+
+   * configure, configure.d/config_os_libs:
+
+   configure.d/config_os_libs: Check for a function, not a macro.
+   configure: Regenerate
+
+2009-01-03 01:03  hardaker
+
+   * configure.d/config_os_libs:
+
+   require -lssl; will be changed later to do 'if needed'
+
+2009-01-03 00:19  magfr
+
+   *  README.agent-mibs, agent/mibgroup/mibII.h,   
+      agent/mibgroup/mibII/snmp_mib.h,   
+      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.h,   
+      agent/mibgroup/target/target_counters.h,   
+      agent/mibgroup/target/target_counters_5_5.c,   
+      agent/mibgroup/target/target_counters_5_5.h,   
+      agent/mibgroup/utilities/snmp_get_statistic.c,   
+      agent/mibgroup/utilities/snmp_get_statistic.h:
+
+   CHANGES: snmpd: Unify all snmpd statistic variables and make the
+   handlers instances of a common handler.
+
+2009-01-01 17:26  hardaker
+
+   * snmplib/snmptsm.c:
+
+   clean up a few comments and remove unused function
+
+2009-01-01 17:25  hardaker
+
+   * snmplib/snmptsm.c:
+
+   fix various minor memory leak issues
+
+2009-01-01 14:28  magfr
+
+   *  agent/agent_handler.c, agent/helpers/cache_handler.c,   
+      agent/helpers/instance.c, agent/helpers/watcher.c,   
+      include/net-snmp/agent/agent_handler.h,   
+      include/net-snmp/agent/cache_handler.h,   
+      include/net-snmp/agent/instance.h,   
+      include/net-snmp/agent/watcher.h, local/mib2c-conf.d/mfd-top.m2c, 
+        local/mib2c.array-user.conf, local/mib2c.container.conf,   
+      local/mib2c.create-dataset.conf, local/mib2c.int_watch.conf,   
+      local/mib2c.iterate.conf, local/mib2c.iterate_access.conf,   
+      local/mib2c.row.conf, local/mib2c.scalar.conf,   
+      local/mib2c.table_data.conf:
+
+   NEWS: snmplib: Change the type of the oid arguments from oid* to
+   const oid*. Update mib2c to take advantage of the change.
+
+2009-01-01 13:56  magfr
+
+   * agent/agent_handler.c:
+
+   Check return values and free allocated resources on error.
+
+2009-01-01 12:54  magfr
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c:
+
+   Do not leak alias_list on return from _next_alias.
+
+2009-01-01 11:26  magfr
+
+   * agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c:
+
+   Make variable const as it never is changed.
+
+2009-01-01 11:25  magfr
+
+   * agent/mibgroup/if-mib/ifXTable/ifXTable.c:
+
+   Remove an unused variable.
+
+2008-12-31 21:41  hardaker
+
+   * snmplib/snmp_openssl.c:
+
+   don't use the functions if we're not linked with openssl
+
+2008-12-31 20:56  hardaker
+
+   * perl/TrapReceiver/const-c.inc, perl/TrapReceiver/const-xs.inc:
+
+   newer perl generated updates
+
+2008-12-31 18:02  hardaker
+
+   * snmplib/snmp_api.c:
+
+   added a few more recv/send debugging statements
+
+2008-12-31 18:02  hardaker
+
+   * agent/mibgroup/mibII/vacm_conf.c:
+
+   Allow quoted security names for ones containing spaces
+
+2008-12-31 18:01  hardaker
+
+   *  include/net-snmp/library/snmp_openssl.h, snmplib/Makefile.in,   
+      snmplib/snmp_openssl.c:
+
+   an openssl initialization wrapper
+
+2008-12-30 00:03  magfr
+
+   * apps/snmptest.c, python/netsnmp/client_intf.c:
+
+   Use snmp_duplicate_objid instead of various malloc+memcpy
+   variants in order to make clearer code.
+
+2008-12-29 23:34  magfr
+
+   *  agent/mibgroup/examples/example.c,   
+      agent/mibgroup/host/hr_filesys.c,   
+      agent/mibgroup/host/hr_swinst.c,   
+      agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.c,   
+      agent/mibgroup/ucd-snmp/versioninfo.c,   
+      include/net-snmp/library/snmp_debug.h, snmplib/asn1.c:
+
+   Use format strings for printf-like functions.
+   Prefer strcpy over sprintf(dest, "%s", src)
+   Prefer DEBUGMSGTL((format, args)) over sprintf(local, format,
+   args); DEBUGMSGTL(("%s", local))
+
+2008-12-18 17:04  hardaker
+
+   *  include/net-snmp/library/snmpUDPDomain.h,   
+      snmplib/snmpUDPDomain.c:
+
+   export out of the file some helpful generic udp functions
+
+2008-12-16 00:13  hardaker
+
+   * include/net-snmp/library/snmp_secmod.h:
+
+   change localsm security model to tsm (and add 1)
+
 2008-12-15 23:25  hardaker
 
    * agent/mibgroup/disman/expression/expValueTable.c:
@@ -4461,12 +66217,61 @@
    Patch to change a typedef name from link to nodelink to avoid
    naming conflict issues.
 
-2008-12-09 01:01  hardaker
+2008-12-09 01:41  hardaker
 
-   * include/net-snmp/library/snmplocalsm.h, snmplib/snmplocalsm.c:
+   * agent/mibgroup/host/hr_swinst.c:
 
-   As agreed in the admin meeting, remove the older snmplocalsm
-   security model
+   use int32_t instead of int_32 which doesn't work at all on F10
+
+2008-12-09 01:07  hardaker
+
+   * NEWS:
+
+   remove the note that we moved to svn... obsolete at this point,
+   to say the least
+
+2008-12-09 01:05  hardaker
+
+   * NEWS:
+
+   mention the TSM implementation
+
+2008-12-09 00:58  hardaker
+
+   * dist/makerelease.xml:
+
+   flag some steps and mandatory
+
+2008-12-09 00:57  hardaker
+
+   * include/net-snmp/library/default_store.h:
+
+   remove accidential new defines that aren't needed yet
+
+2008-12-09 00:56  hardaker
+
+   *  include/net-snmp/library/default_store.h,   
+      include/net-snmp/library/snmp_transport.h,   
+      include/net-snmp/library/snmplocalsm.h,   
+      include/net-snmp/library/snmptsm.h, snmplib/snmplocalsm.c,   
+      snmplib/snmptsm.c:
+
+   remove older localsm security model and replace with a newer TSM
+   based on the upcoming IETF spec
+
+2008-12-09 00:50  hardaker
+
+   * snmplib/snmp_api.c:
+
+   fix issue with context probing
+
+2008-12-04 12:33  jsafranek
+
+   * agent/snmpd.c, apps/snmptrapd.c:
+
+   Daemonize after transports are created and listening sockets are
+   bound to appropriate ports. This allows to exit with nozero exit
+   code when the binding fails.
 
 2008-12-04 11:44  jsafranek
 
@@ -4475,6 +66280,40 @@
 
    Print ports as unsigned numbers.
 
+2008-11-24 19:09  tanders
+
+   * include/net-snmp/system/solaris.h:
+
+   __EXTENSIONS__ is now handled by configure
+
+2008-11-22 18:36  magfr
+
+   * configure, configure.d/config_modules_agent:
+
+   Do not try to use the module list as a file that should be
+   included in the build, thus making it possible to build on
+   Solaris.
+
+2008-11-20 22:30  magfr
+
+   *  agent/agent_handler.c, agent/agent_trap.c,   
+      agent/helpers/table_data.c, agent/helpers/table_row.c,   
+      agent/helpers/table_tdata.c, agent/mibgroup/utilities/override.c, 
+        apps/snmptrapd_handlers.c:
+
+   Replace memdup((u_char**)&x, (u_char*)y, z * sizeof(oid)) with x
+   = snmp_duplicat
+   e_objid(y, z) since the later is easier to read and expresses the
+   intention of t
+   he code clearer.
+
+2008-11-20 22:01  magfr
+
+   * snmplib/snmp_api.c:
+
+   Use memcpy instead of memmove to copy oids as it is known that
+   the areas are nonoverlapping.
+
 2008-11-20 20:51  magfr
 
    * snmplib/snmpSTDDomain.c:
@@ -4488,6 +66327,35 @@
    CHANGES: Do not use %m in printf-formatted strings since %m in
    printf is a glibc extension.
 
+2008-11-16 22:01  magfr
+
+   * configure.ac:
+
+   Bump the required autoconf version to 2.63 as per 17301.
+
+2008-11-16 21:55  magfr
+
+   * configure, configure.d/config_os_functions:
+
+   Remove an unused function from the configure test for __func__.
+
+2008-11-16 21:51  magfr
+
+   *  configure, configure.d/config_os_functions,   
+      configure.d/config_os_headers, configure.d/config_os_misc4,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   M4 uses dnl, not \ for line concatenation.
+   \ introduced a spurious define in net-snmp-config.h.in, thus this
+   change.
+   Reran autoconf and autoheader.
+
+2008-11-13 22:14  tanders
+
+   * configure:
+
+   NEWS: build: update to autoconf 2.63
+
 2008-11-13 00:30  tanders
 
    * python/netsnmp/client_intf.c:
@@ -4497,11 +66365,17 @@
 
 2008-11-13 00:26  tanders
 
-   * configure.in:
+   * configure.d/config_modules_agent:
 
    fix typo
 
-2008-11-13 00:24  tanders
+2008-11-13 00:26  tanders
+
+   * configure.d/config_modules_agent:
+
+   fix typo
+
+2008-11-13 00:19  tanders
 
    * dist/extractnews:
 
@@ -4527,12 +66401,117 @@
    NEWS: snmpd: Applying patch from Magnus Fromreide to fix the
    getbulk issue reported by Oscar Mira-Sanchez
 
+2008-10-30 22:34  hardaker
+
+   * dist/makerelease:
+
+   remove the older (obsolete) makerelease script
+
+2008-10-22 17:24  magfr
+
+   * snmplib/snmp_api.c, snmplib/snmp_client.c:
+
+   Make it possible to build the lib using a C++ compiler once more.
+
 2008-10-22 07:29  dts12
 
    * snmplib/snmp_client.c:
 
    Don't clear session flags when testing one bit.
 
+2008-10-21 21:10  magfr
+
+   *  AGENT.txt, agent/mibgroup/Rmon/alarm.c,   
+      agent/mibgroup/Rmon/event.c, agent/mibgroup/Rmon/history.c,   
+      agent/mibgroup/Rmon/statistics.c, agent/mibgroup/agent/extend.c,  
+       agent/mibgroup/disman/expression/expErrorTable.c,   
+      agent/mibgroup/disman/expression/expExpressionTable.c,   
+      agent/mibgroup/disman/expression/expObjectTable.c,   
+      agent/mibgroup/disman/expression/expValueTable.c,   
+      agent/mibgroup/disman/mteObjectsTable.c,   
+      agent/mibgroup/disman/mteTriggerBooleanTable.c,   
+      agent/mibgroup/disman/mteTriggerDeltaTable.c,   
+      agent/mibgroup/disman/mteTriggerExistenceTable.c,   
+      agent/mibgroup/disman/mteTriggerTable.c,   
+      agent/mibgroup/disman/mteTriggerThresholdTable.c,   
+      agent/mibgroup/disman/nslookup/lookupCtlTable.c,   
+      agent/mibgroup/disman/nslookup/lookupResultsTable.c,   
+      agent/mibgroup/disman/ping/pingCtlTable.c,   
+      agent/mibgroup/disman/ping/pingProbeHistoryTable.c,   
+      agent/mibgroup/disman/ping/pingResultsTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteCtlTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteHopsTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c,   
+      agent/mibgroup/disman/traceroute/traceRouteResultsTable.c,   
+      agent/mibgroup/examples/example.c,   
+      agent/mibgroup/examples/ucdDemoPublic.c,   
+      agent/mibgroup/host/hr_device.c, agent/mibgroup/host/hr_disk.c,   
+      agent/mibgroup/host/hr_filesys.c,   
+      agent/mibgroup/host/hr_network.c,   
+      agent/mibgroup/host/hr_partition.c,   
+      agent/mibgroup/host/hr_print.c, agent/mibgroup/host/hr_proc.c,   
+      agent/mibgroup/host/hr_storage.c,   
+      agent/mibgroup/host/hr_swinst.c, agent/mibgroup/host/hr_swrun.c,  
+       agent/mibgroup/host/hr_system.c,   
+      agent/mibgroup/host/hrh_filesys.c, agent/mibgroup/mibII/at.c,   
+      agent/mibgroup/mibII/interfaces.c, agent/mibgroup/mibII/ip.c,   
+      agent/mibgroup/mibII/ipv6.c, agent/mibgroup/mibII/mta_sendmail.c, 
+        agent/mibgroup/mibII/vacm_vars.c, agent/mibgroup/misc/ipfwacc.c,
+         agent/mibgroup/notification/snmpNotifyFilterProfileTable.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/smux/smux.c, agent/mibgroup/smux/snmp_bgp.c,   
+      agent/mibgroup/smux/snmp_ospf.c, agent/mibgroup/smux/snmp_rip2.c, 
+        agent/mibgroup/snmpv3/snmpEngine.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats.c,   
+      agent/mibgroup/snmpv3/usmStats.c,   
+      agent/mibgroup/snmpv3/usmUser.c,   
+      agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.c,   
+      agent/mibgroup/tunnel/tunnel.c, agent/mibgroup/ucd-snmp/disk.c,   
+      agent/mibgroup/ucd-snmp/diskio.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/hpux.c,   
+      agent/mibgroup/ucd-snmp/lmSensors.c,   
+      agent/mibgroup/ucd-snmp/loadave.c,   
+      agent/mibgroup/ucd-snmp/logmatch.c,   
+      agent/mibgroup/ucd-snmp/memory_aix4.c,   
+      agent/mibgroup/ucd-snmp/memory_darwin7.c,   
+      agent/mibgroup/ucd-snmp/memory_dynix.c,   
+      agent/mibgroup/ucd-snmp/memory_freebsd2.c,   
+      agent/mibgroup/ucd-snmp/memory_hpux.c,   
+      agent/mibgroup/ucd-snmp/memory_netbsd1.c,   
+      agent/mibgroup/ucd-snmp/memory_solaris2.c,   
+      agent/mibgroup/ucd-snmp/pass.c,   
+      agent/mibgroup/ucd-snmp/pass_persist.c,   
+      agent/mibgroup/ucd-snmp/proc.c,   
+      agent/mibgroup/ucd-snmp/versioninfo.c,   
+      agent/mibgroup/ucd-snmp/vmstat_aix4.c,   
+      agent/mibgroup/ucd-snmp/vmstat_bsdi4.c,   
+      agent/mibgroup/ucd-snmp/vmstat_darwin7.c,   
+      agent/mibgroup/ucd-snmp/vmstat_dynix.c,   
+      agent/mibgroup/ucd-snmp/vmstat_freebsd2.c,   
+      agent/mibgroup/ucd-snmp/vmstat_hpux.c,   
+      agent/mibgroup/ucd-snmp/vmstat_linux.c,   
+      agent/mibgroup/ucd-snmp/vmstat_netbsd1.c,   
+      agent/mibgroup/ucd-snmp/vmstat_solaris2.c,   
+      include/net-snmp/library/snmp_impl.h, local/mib2c.old-api.conf,   
+      win32/dist/htmlhelp/FAQ.html:
+
+   NEWS: misc: PATCH: 1737727: from joyceanmachine: Add a
+   NETSNMP_OLDAPI_ prefix to the access macros that are used in the
+   old-api helper.
+   I did add the prefix to all users in our code.
+
+2008-10-21 21:00  magfr
+
+   *  include/net-snmp/library/mib.h, include/net-snmp/library/parse.h, 
+        snmplib/mib.c, snmplib/parse.c:
+
+   NEWS: misc: PATCH: 1737727: from joyceanmachine: Replace all uses
+   of NETSNMP_CLEAN_NAMESPACE with NETSNMP_NO_LEGACY_DEFINITIONS
+
 2008-10-16 09:56  jsafranek
 
    *  agent/mibgroup/if-mib/data_access/interface.c,   
@@ -4542,6 +66521,51 @@
    CHANGES: snmpd: PATCH: 2082726: correctly report NIC speeds
    higher than 4Gbit/s
 
+2008-10-16 08:00  jsafranek
+
+   * man:
+
+   Scratch previous commit, net-snmp-create-v3-user.1 to be ignored.
+
+2008-10-16 07:37  jsafranek
+
+   * man:
+
+   Add compiled net-snmp-config.1 to svn:ignore list
+
+2008-10-15 12:57  jsafranek
+
+   *  README.agent-mibs, agent/mibgroup/ip-mib.h,   
+      agent/mibgroup/ip-mib/data_access/systemstats_common.c,   
+      agent/mibgroup/ip-mib/data_access/systemstats_linux.c,   
+      agent/mibgroup/ip-mib/data_access/systemstats_solaris2.c,   
+      agent/mibgroup/ip-mib/ipIfStatsTable,   
+      agent/mibgroup/ip-mib/ipIfStatsTable.h,   
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.c,   
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.h,   
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.h,
+         agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.c,
+         agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.h,
+         agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_enums.h,   
+      agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c,  
+       agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.h, 
+        agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_oids.h,   
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c,   
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c,
+         include/net-snmp/data_access/ipstats.h,   
+      include/net-snmp/data_access/systemstats.h:
+
+   CHANGES: snmpd: PATCH 1797111: implement IP-MIB::ipIfStatsTable
+
+2008-10-15 09:27  tanders
+
+   * snmplib/snmp_api.c:
+
+   portability fix: avoid variable declarations in the middle of
+   code
+
 2008-10-14 18:55  dts12
 
    * snmplib/snmpUDPDomain.c:
@@ -4570,6 +66594,23 @@
    CHANGES: snmpd: PATCH: 1977439: Fix pass/_persist bug with SET
    oid value
 
+2008-10-12 17:24  magfr
+
+   *  README.agent-mibs, agent/mibgroup/snmpv3/snmpMPDStats.h,   
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats_5_5.h,   
+      agent/mibgroup/snmpv3mibs.h:
+
+   CHANGES: snmpd: Reimplementation of snmpMPDStats.
+
+2008-10-10 21:13  dts12
+
+   *  configure, configure.d/config_os_functions,   
+      configure.d/config_os_misc1, configure.d/config_os_misc2,   
+      configure.d/config_os_misc3, configure.d/config_os_misc4:
+
+   Consolidate checks on general O/S characteristics
+
 2008-10-07 08:50  jsafranek
 
    * dist/find-requires:
@@ -4577,18 +66618,78 @@
    CHANGES: building: BUG: 2095983: fix syntax error in
    find-requires helper script and make it executable
 
+2008-10-06 19:31  hardaker
+
+   * include/net-snmp/library/snmp_api.h:
+
+   ifdef sys/poll
+
+2008-10-03 14:16  hardaker
+
+   * configure, configure.ac:
+
+   patch from Shachar Schemesh to fix a quote escaping
+
+2008-09-30 22:19  hardaker
+
+   * apps/snmptrapd.c:
+
+   added a needed trailing newline
+
 2008-09-30 22:11  dts12
 
    * perl/agent/agent.xs:
 
    CHANGES: perl: PATCH: 2022948: Fix for Counter64 in perl subagent
 
+2008-09-30 21:40  hardaker
+
+   *  include/net-snmp/library/default_store.h,   
+      include/net-snmp/library/snmp_api.h, snmplib/snmp_api.c:
+
+   - NEWS: snmplib: Implemented RFC5343 contextEngineID probing.
+   This allows for probing of the contextEngineID without requiring
+   the USM security model.
+   - implemented entirely within the library for both clients and
+   servers.
+
+2008-09-30 21:33  hardaker
+
+   * include/net-snmp/library/snmp_secmod.h:
+
+   Add a local definition for having security models define their
+   own
+   contextEngineID probe
+
+2008-09-30 21:31  hardaker
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in:
+
+   Add a definition for the SSH domain
+
 2008-09-30 21:08  dts12
 
    * agent/snmp_agent.c:
 
    CHANGES: agent: PATCH: 1257347: Non-fixed size connection buffer
 
+2008-09-30 07:32  jsafranek
+
+   * agent/Makefile.in:
+
+   NEWS: building: PATCH: 2091156: correctly declare dependencies in
+   Makefile.
+   'make -j <N>' should work now.
+
+2008-09-24 20:58  dts12
+
+   *  configure, configure.d/config_os_functions,   
+      configure.d/config_os_headers, configure.d/config_os_libs,   
+      configure.d/config_os_struct_members:
+
+   Identify where particular checks are actually used
+   (library, agent, applications or not at all)
+
 2008-09-24 12:53  jsafranek
 
    *  agent/mibgroup/sctp-mib/sctpScalars_linux.c,   
@@ -4597,77 +66698,132 @@
    Use the longest integer for inode numbers and (possibly 64 bit)
    counters.
 
-2008-09-05 09:27  dts12
+2008-09-20 09:01  magfr
 
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      sedscript.in, snmplib/snmp_version.c:
+   * configure, configure.d/config_os_misc3:
 
-   - version tag ( 5.4.2 )
+   NEWS: build: Do not require use of --with-endianness when
+   cross-compiling.
 
-2008-09-05 09:27  dts12
+2008-09-19 15:19  dts12
 
-   * CHANGES:
+   * dist/RELEASE-INSTRUCTIONS:
 
-   version update
+   Correct location of documentation files.
 
-2008-09-05 09:25  dts12
+2008-09-19 05:28  magfr
 
-   * ChangeLog:
+   *  configure, configure.d/config_os_misc2,   
+      include/net-snmp/net-snmp-config.h.in:
 
-   version update
+   And add the chunk that I lost.
 
-2008-09-05 09:20  dts12
+2008-09-19 05:23  magfr
 
-   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3,   
-      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,   
-      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,   
-      man/netsnmp_cache_handler.3, man/netsnmp_callback.3,   
-      man/netsnmp_container.3, man/netsnmp_data_list.3,   
-      man/netsnmp_debug.3, man/netsnmp_default_store.3,   
-      man/netsnmp_handler.3, man/netsnmp_instance.3,   
-      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,   
-      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,   
-      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,   
-      man/netsnmp_multiplexer.3,   
-      man/netsnmp_netsnmp_agent_request_info_s.3,   
-      man/netsnmp_netsnmp_column_info_t.3,   
-      man/netsnmp_netsnmp_data_list_s.3,   
-      man/netsnmp_netsnmp_handler_registration_s.3,   
-      man/netsnmp_netsnmp_iterator_info_s.3,   
-      man/netsnmp_netsnmp_mib_handler_access_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_s.3,   
-      man/netsnmp_netsnmp_request_info_s.3,   
-      man/netsnmp_netsnmp_table_registration_info_s.3,   
-      man/netsnmp_netsnmp_table_request_info_s.3,   
-      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,   
-      man/netsnmp_read_config.3, man/netsnmp_read_only.3,   
-      man/netsnmp_row_merge.3, man/netsnmp_scalar.3,   
-      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,   
-      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,   
-      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,   
-      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,   
-      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,   
-      man/netsnmp_table.3, man/netsnmp_table_array.3,   
-      man/netsnmp_table_container.3, man/netsnmp_table_data.3,   
-      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,   
-      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,   
-      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,  
-       man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
-      man/netsnmp_util.3, man/netsnmp_utilities.3,   
-      man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
+   *  acconfig.h, configure, configure.ac,   
+      configure.d/config_modules_lib, configure.d/config_os_libs,   
+      configure.d/config_os_misc1,   
+      configure.d/config_project_perl_python,   
+      configure.d/config_project_with_enable,   
+      include/net-snmp/net-snmp-config.h.in:
 
-   documentation update
+   Move more things from acconfig.h to the templates in the
+   configure input files.
 
-2008-09-05 09:16  dts12
+2008-09-17 13:31  jsafranek
 
-   * doxygen.conf:
+   * dist/find-requires:
 
-   - version tag ( 5.4.2 )
+   make find-requires executable so it's actually usable by the
+   net-snmp.spec
 
--------------------------------------------------------------------------------
+2008-09-17 12:08  jsafranek
 
-Changes: V5.4.1 -> V5.4.2
+   * man/Makefile.in, man/net-snmp-create-v3-user.1.def:
+
+   add man page for net-snmp-create-v3-user
+
+2008-09-16 18:02  magfr
+
+   *  acconfig.h, configure, configure.d/config_os_functions,   
+      configure.d/config_os_libs, configure.d/config_os_misc1,   
+      configure.d/config_os_misc2, configure.d/config_os_misc4,   
+      configure.d/config_project_with_enable,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   Further minimization of acconfig.h
+
+2008-09-11 22:28  magfr
+
+   *  acconfig.h, configure, configure.d/config_os_misc3,   
+      configure.d/config_os_progs,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   Move a few more variables out of acconfig.h
+
+2008-09-11 20:37  hardaker
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c:
+
+   NEWS: snmpd: PATCH: 1737439: from emiy: automatic link up/down
+   traps on a walk; still need a better interface for manually doing
+   things on an occasional basis
+
+2008-09-11 20:25  hardaker
+
+   *  include/net-snmp/library/snmp_api.h, snmplib/snmpUDPDomain.c,   
+      snmplib/snmp_api.c:
+
+   NEWS: snmplib: PATCH: 700681: limited support for UDPv4 broadcast
+   addresses
+
+2008-09-10 06:39  magfr
+
+   *  acconfig.h, configure, configure.d/config_project_types,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: building: Use AC_CHECK_TYPES instead of a homegrown
+   alternative to check for types
+
+2008-09-09 20:27  magfr
+
+   * Makefile.in:
+
+   Add all the parts of configure.ac to the dependency list
+
+2008-09-09 18:13  hardaker
+
+   * Makefile.in:
+
+   update to reflect configure.in -> configure.ac change
+
+2008-09-09 16:15  hardaker
+
+   * dist/patme:
+
+   default to -p0
+
+2008-09-08 23:41  hardaker
+
+   * snmplib/snmplocalsm.c:
+
+   check for a session tunneled flag before returning an
+   authentication failure
+
+2008-09-08 23:39  hardaker
+
+   * snmplib/snmp_api.c:
+
+   Set the tunneled flag when dealing with a tunnel-based transport;
+   don't require a securityEngineID if the security model doesn't
+   have one (just USM needs it)
+
+2008-09-08 20:24  magfr
+
+   * include/net-snmp/library/snmp-tc.h, snmplib/snmp-tc.c:
+
+   CHANGES: snmplib: BUG: 2099985: Added const qualifiers to time
+   conversion routins
 
 2008-09-05 07:51  dts12
 
@@ -4680,76 +66836,75 @@
 
    * python/netsnmp/client_intf.c:
 
-   CHANGES: python: BUG: 1868278: Python segfault (introduced by r16962)
+   CHANGES: python: BUG: 1868278: Python segfault (introduced by
+   r16962)
 
-2008-08-29 21:19  dts12
+2008-09-03 13:43  dts12
 
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      sedscript.in, snmplib/snmp_version.c:
+   *  configure, configure.d/config_modules_lib,   
+      configure.d/config_project_with_enable:
 
-   - version tag ( 5.4.2.rc3 )
+   CHANGES: build: PATCH: 2000874: Cleanup transport selection.
 
-2008-08-29 21:18  dts12
+2008-09-03 13:29  dts12
 
-   * CHANGES, NEWS:
+   *  configure, configure.d/config_os_struct_members,   
+      configure.d/config_project_perl_python:
 
-   version update
+   Tidy up perl/python and O/S data structure tests.
 
-2008-08-29 21:15  dts12
+2008-08-31 18:14  dts12
 
-   * ChangeLog:
+   *  configure, configure.d/config_os_functions,   
+      configure.d/config_os_headers, configure.d/config_os_libs,   
+      configure.d/config_os_misc1, configure.d/config_os_misc2,   
+      configure.d/config_os_misc3, configure.d/config_os_misc4,   
+      configure.d/config_os_progs,   
+      configure.d/config_project_ipv6_types,   
+      configure.d/config_project_paths,   
+      configure.d/config_project_types,   
+      configure.d/config_project_with_enable:
 
-   version update
+   Tidy up (most of) the individual components of the configure
+   framework.
+   This is mostly re-indentation, re-commenting, and a certain
+   amount
+   of judicious re-ordering of the tests within individual
+   sub-script.
 
-2008-08-29 21:08  dts12
+2008-08-31 17:30  dts12
 
-   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3,   
-      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,   
-      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,   
-      man/netsnmp_cache_handler.3, man/netsnmp_callback.3,   
-      man/netsnmp_container.3, man/netsnmp_data_list.3,   
-      man/netsnmp_debug.3, man/netsnmp_default_store.3,   
-      man/netsnmp_handler.3, man/netsnmp_instance.3,   
-      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,   
-      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,   
-      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,   
-      man/netsnmp_multiplexer.3,   
-      man/netsnmp_netsnmp_agent_request_info_s.3,   
-      man/netsnmp_netsnmp_column_info_t.3,   
-      man/netsnmp_netsnmp_data_list_s.3,   
-      man/netsnmp_netsnmp_handler_registration_s.3,   
-      man/netsnmp_netsnmp_iterator_info_s.3,   
-      man/netsnmp_netsnmp_mib_handler_access_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_s.3,   
-      man/netsnmp_netsnmp_request_info_s.3,   
-      man/netsnmp_netsnmp_table_registration_info_s.3,   
-      man/netsnmp_netsnmp_table_request_info_s.3,   
-      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,   
-      man/netsnmp_read_config.3, man/netsnmp_read_only.3,   
-      man/netsnmp_row_merge.3, man/netsnmp_scalar.3,   
-      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,   
-      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,   
-      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,   
-      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,   
-      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,   
-      man/netsnmp_table.3, man/netsnmp_table_array.3,   
-      man/netsnmp_table_container.3, man/netsnmp_table_data.3,   
-      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,   
-      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,   
-      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,  
-       man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
-      man/netsnmp_util.3, man/netsnmp_utilities.3,   
-      man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
+   * configure, configure.ac:
 
-   documentation update
+   Annotate configure template with suggested best practice
+   structure.
+   Note that none of these changes has altered the code within
+   'configure' itself (other than affecting line numbers)
 
-2008-08-29 21:04  dts12
+2008-08-31 17:26  dts12
 
-   * doxygen.conf:
+   *  configure, configure.ac, configure.d,   
+      configure.d/config_modules_agent, configure.d/config_modules_lib, 
+        configure.d/config_os_functions, configure.d/config_os_headers, 
+        configure.d/config_os_libs, configure.d/config_os_misc1,   
+      configure.d/config_os_misc2, configure.d/config_os_misc3,   
+      configure.d/config_os_misc4, configure.d/config_os_progs,   
+      configure.d/config_os_struct_members,   
+      configure.d/config_project_ipv6_types,   
+      configure.d/config_project_manual,   
+      configure.d/config_project_paths,   
+      configure.d/config_project_perl_python,   
+      configure.d/config_project_types,   
+      configure.d/config_project_with_enable:
 
-   - version tag ( 5.4.2.rc3 )
+   NEWS: build: split configure template into separate pieces.
+   (Mostly) self-contained, and significantly less confusing!
 
+2008-08-31 17:23  dts12
+
+   * configure.ac, configure.in:
+
+   Rename configure template in line with current best practice.
 
 2008-08-29 19:54  dts12
 
@@ -4757,12 +66912,20 @@
 
    Retain filenames which don't include the expected prefix.
 
+2008-08-27 21:55  tanders
+
+   *  agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable,   
+      agent/mibgroup/util_funcs:
+
+   ignore .libs directories
+
 2008-08-27 13:39  jsafranek
 
    * agent/mibgroup/hardware/cpu/cpu_linux.c:
 
    S/390 uses slightly different format of the /proc/cpuinfo file:
-   processor 0: version = FF, identification = 060AFE, machine = 2094
+   processor 0: version = FF, identification = 060AFE, machine =
+   2094
 
 2008-08-22 23:47  tanders
 
@@ -4776,14 +66939,18 @@
 
    NEWS: build: BUG: 2023803: Compilation problems on HP-UX 11.31
    CHANGES: build: Limit the use of _KERNEL definitions in configure
-   tests to match the use of _KERNEL in our codebase
+   tests to match the use
+   of _KERNEL in our codebase
 
 2008-08-22 00:18  tanders
 
-   * agent/mibgroup/host/hr_swrun.c:
+   *  agent/mibgroup/host/data_access/swrun_pstat.c,   
+      agent/mibgroup/host/hr_swrun.c:
 
-   Fix build failure on HP-UX 11.31: use getpagesize() instead of PGSHIFT.
-   Successfully tested on HP-UX 10.20, 11.00, 11.11, 11.23 and 11.31.
+   Fix build failure on HP-UX 11.31: use getpagesize() instead of
+   PGSHIFT.
+   Successfully tested on HP-UX 10.20, 11.00, 11.11, 11.23 and
+   11.31.
 
 2008-08-21 10:03  jsafranek
 
@@ -4791,3547 +66958,5328 @@
 
    add SCTP-MIB
 
+2008-08-20 17:37  magfr
+
+   * agent/mibgroup/smux/smux.c:
+
+   Have only one variable named passwd in smux_auth_peer.
+
 2008-08-19 23:22  tanders
 
    * README.tru64:
 
    update README for Tru64 after the sendto/recvfrom fixes
 
-2008-08-19 20:36  dts12
+2008-08-19 20:27  tanders
 
-   *  FAQ, README, configure, configure.in, dist/net-snmp.spec,   
-      sedscript.in, snmplib/snmp_version.c:
+   * agent/mibgroup/host/data_access/swrun.h:
 
-   - version tag ( 5.4.2.rc2 )
+   fix significant typo
 
-2008-08-19 20:36  dts12
+2008-08-19 13:25  dts12
 
-   * CHANGES, NEWS:
+   * agent/mibgroup/host/data_access/swrun.h:
 
-   version update
+   Force use of /proc/%d/psinfo interface on Solaris.
+   Temporary hack while we investigate the issues with
+   the kvm_proc() code.
+   
+   The 'config_require' processing doesn't currently
+   pick up the full #ifdef environment, so defaults
+   to using kvm_proc(). I'm not convinced this was
+   working before anyway,
 
-2008-08-19 20:26  dts12
+2008-08-19 13:17  dts12
 
-   * ChangeLog:
+   * agent/mibgroup/host/data_access/swrun_procfs_psinfo.c:
 
-   version update
+   Fix problems in /proc/%d/psinfo interface processing.
 
-2008-08-19 20:08  dts12
+2008-08-19 08:47  dts12
 
-   * agent/mibgroup/Makefile.depend:
+   * agent/mibgroup/hardware/sensors, agent/mibgroup/host/data_access:
 
-   make depend
+   Ignore library and object files
 
-2008-08-19 20:03  dts12
+2008-08-19 08:36  dts12
 
-   *  man/netsnmp_agent.3, man/netsnmp_agent_registry.3,   
-      man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,   
-      man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,   
-      man/netsnmp_cache_handler.3, man/netsnmp_callback.3,   
-      man/netsnmp_container.3, man/netsnmp_data_list.3,   
-      man/netsnmp_debug.3, man/netsnmp_default_store.3,   
-      man/netsnmp_handler.3, man/netsnmp_instance.3,   
-      man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,   
-      man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,   
-      man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,   
-      man/netsnmp_multiplexer.3,   
-      man/netsnmp_netsnmp_agent_request_info_s.3,   
-      man/netsnmp_netsnmp_column_info_t.3,   
-      man/netsnmp_netsnmp_data_list_s.3,   
-      man/netsnmp_netsnmp_handler_registration_s.3,   
-      man/netsnmp_netsnmp_iterator_info_s.3,   
-      man/netsnmp_netsnmp_mib_handler_access_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_methods.3,   
-      man/netsnmp_netsnmp_mib_handler_s.3,   
-      man/netsnmp_netsnmp_request_info_s.3,   
-      man/netsnmp_netsnmp_table_registration_info_s.3,   
-      man/netsnmp_netsnmp_table_request_info_s.3,   
-      man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,   
-      man/netsnmp_read_config.3, man/netsnmp_read_only.3,   
-      man/netsnmp_row_merge.3, man/netsnmp_scalar.3,   
-      man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,   
-      man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,   
-      man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,   
-      man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,   
-      man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,   
-      man/netsnmp_table.3, man/netsnmp_table_array.3,   
-      man/netsnmp_table_container.3, man/netsnmp_table_data.3,   
-      man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,   
-      man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,   
-      man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,  
-       man/netsnmp_table_rows.3, man/netsnmp_tdata.3,   
-      man/netsnmp_util.3, man/netsnmp_utilities.3,   
-      man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
+   * 
+      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c:
 
-   documentation update
+   Activate statistics that are supported on Solaris and/or Linux
+   IPv6
 
-2008-08-19 19:55  dts12
+2008-08-19 08:11  dts12
 
-   * doxygen.conf:
+   * agent/mibgroup/smux/smux.c:
 
-   - version tag ( 5.4.2.rc2 )
-
+   Improved tracing of SMUX authentication problems.
 
 2008-08-19 08:08  dts12
 
    * agent/mibgroup/disman/event/mteObjects.c:
-     Better tracing of DisMan object processing.
+
+   Better tracing of DisMan object processing.
 
 2008-08-18 22:43  tanders
 
    * agent/mibgroup/sctp-mib/sctpScalars.h:
-     remove bogus white space
 
-2008-08-18 22:38  tanders
-
-   * README.agent-mibs:
-     document SCTP-MIB addition
+   remove bogus white space
 
 2008-08-18 22:01  dts12
 
    * perl/SNMP/SNMP.pm:
-     CHANGES: perl: PATCH: 2021444: Support SNMPv2c in gettable processing
+
+   CHANGES: perl: PATCH: 2021444: Support SNMPv2c in gettable
+   processing
 
 2008-08-18 21:44  dts12
 
    * snmplib/snmpksm.c:
-     CHANGES: snmplib: PATCH: 2003450: Fix a couple of 64-bit problems.
 
-2008-08-18 19:05  tanders
+   CHANGES: snmplib: PATCH: 2003450: Fix a couple of 64-bit
+   problems.
 
-   * mibs/Makefile.in:
-     fix SCTP-MIB install
+2008-08-18 14:30  hardaker
 
-2008-08-17 21:29  dts12
+   * apps/snmpusm.c:
 
-   * agent/mibgroup/sctp-mib, agent/mibgroup/sctp-mib.h,
-     agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c,
-     agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.h,
-     agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c,
-     agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.h,
-     agent/mibgroup/sctp-mib/sctpAssocTable.c,
-     agent/mibgroup/sctp-mib/sctpAssocTable.h,
-     agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c,
-     agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.h,
-     agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c,
-     agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.h,
-     agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c,
-     agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.h,
-     agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c,
-     agent/mibgroup/sctp-mib/sctpLookupRemPortTable.h,
-     agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c,
-     agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.h,
-     agent/mibgroup/sctp-mib/sctpScalars.c,
-     agent/mibgroup/sctp-mib/sctpScalars.h,
-     agent/mibgroup/sctp-mib/sctpScalars_common.c,
-     agent/mibgroup/sctp-mib/sctpScalars_common.h,
-     agent/mibgroup/sctp-mib/sctpScalars_linux.c,
-     agent/mibgroup/sctp-mib/sctpTables.h,
-     agent/mibgroup/sctp-mib/sctpTables_common.c,
-     agent/mibgroup/sctp-mib/sctpTables_common.h,
-     agent/mibgroup/sctp-mib/sctpTables_linux.c, mibs/Makefile.in,
-     mibs/Makefile.mib, mibs/SCTP-MIB.txt:
-     NEWS: snmpd: PATCH: 2023633: add SCTP-MIB implementation (Linux only)
+   revert 17157 since it broke something
+
+2008-08-18 07:06  jsafranek
+
+   * README.agent-mibs:
+
+   add SCTP-MIB implementation (Linux only)
 
 2008-08-17 21:08  dts12
 
    * agent/mibgroup/agentx/protocol.c:
-     CHANGES: snmpd: PATCH: 2022936: Fix AgentX Counter64 decoding on
-     64-bit architectures
+
+   CHANGES: snmpd: PATCH: 2022936: Fix AgentX Counter64 decoding on
+   64-bit architectures
 
 2008-08-17 20:50  dts12
 
    * agent/snmpd.c:
-     CHANGES: snmpd: PATCH: 2014204: Support -g {groupname}
+
+   CHANGES: snmpd: PATCH: 2014204: Support -g {groupname}
+
+2008-08-15 13:45  hardaker
+
+   * apps/snmpusm.c:
+
+   NEWS: snmpusm: PATCH: 1591355: from ppassera: Allow cloning to
+   engineIDs that are different from the agent's engineID
+
+2008-08-14 15:54  dts12
+
+   * agent/mibgroup/host/data_access/swrun_kvm_proc.c:
+
+   SWRun processing needs access to the internals of 'struct user'
+   (Solaris)
 
 2008-08-13 13:02  jsafranek
 
-   * agent/mibgroup/ip-mib/data_access/ipaddress_linux.c:
-     Correctly parse interface indexes higher than 0xff.
+   *  agent/mibgroup/ip-mib/data_access/ipaddress_linux.c,   
+      agent/mibgroup/ip-mib/data_access/ipv6scopezone_linux.c:
+
+   Correctly parse interface indexes higher than 0xff.
 
 2008-08-12 08:27  jsafranek
 
    * agent/mibgroup/host/hr_swrun.c:
-     Close file when parsing of /proc/XXX/status fails.
+
+   Close file when parsing of /proc/XXX/status fails.
+
+2008-08-12 07:27  jsafranek
+
+   *  agent/mibgroup/sctp-mib, agent/mibgroup/sctp-mib.h,   
+      agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.h,   
+      agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.h,   
+      agent/mibgroup/sctp-mib/sctpAssocTable.c,   
+      agent/mibgroup/sctp-mib/sctpAssocTable.h,   
+      agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.h,   
+      agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.h,   
+      agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.h,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPortTable.h,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c,   
+      agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.h,   
+      agent/mibgroup/sctp-mib/sctpScalars.c,   
+      agent/mibgroup/sctp-mib/sctpScalars.h,   
+      agent/mibgroup/sctp-mib/sctpScalars_common.c,   
+      agent/mibgroup/sctp-mib/sctpScalars_common.h,   
+      agent/mibgroup/sctp-mib/sctpScalars_linux.c,   
+      agent/mibgroup/sctp-mib/sctpTables.h,   
+      agent/mibgroup/sctp-mib/sctpTables_common.c,   
+      agent/mibgroup/sctp-mib/sctpTables_common.h,   
+      agent/mibgroup/sctp-mib/sctpTables_linux.c, mibs/Makefile.in,   
+      mibs/Makefile.mib, mibs/SCTP-MIB.txt:
+
+   NEWS: snmpd: PATCH: 2023633: add SCTP-MIB implementation (Linux
+   only)
+
+2008-08-07 10:03  jsafranek
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   Fix inetNetToMediaTable table processing - continue with next
+   entry when fillup_entry_info() fails.
 
 2008-08-07 09:00  jsafranek
 
    * man/snmpd.conf.5.def:
-     Fix documentation of exec statament - it does not cache results anymore.
-     Related to bug 883134
 
-2008-07-31 16:48  dts12
+   Fix documentation of exec statament - it does not cache results
+   anymore. Related to bug 883134
 
-   * FAQ, README, configure, configure.in, dist/net-snmp.spec,
-     sedscript.in, snmplib/snmp_version.c:
-     - version tag ( 5.4.2.rc1 )
+2008-07-31 23:39  dts12
 
-2008-07-31 16:47  dts12
+   * agent/mibgroup/host/data_access/swrun_procinfo.c:
 
-   * CHANGES:
-     version update
+   Fix a typo, and a bogus field name in the AIX procinfo structure.
 
-2008-07-31 16:14  dts12
+2008-07-31 23:35  dts12
 
-   * ChangeLog:
-     version update
+   * agent/mibgroup/host/data_access/swrun_kvm_proc.c:
 
-2008-07-31 16:05  dts12
-
-   * agent/Makefile.depend, agent/helpers/Makefile.depend,
-     agent/mibgroup/Makefile.depend, apps/snmpnetstat/Makefile.depend,
-     snmplib/Makefile.depend:
-     make depend
-
-2008-07-31 16:03  dts12
-
-   * man/netsnmp_agent.3, man/netsnmp_agent_registry.3,
-     man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,
-     man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,
-     man/netsnmp_cache_handler.3, man/netsnmp_callback.3,
-     man/netsnmp_container.3, man/netsnmp_data_list.3,
-     man/netsnmp_debug.3, man/netsnmp_default_store.3,
-     man/netsnmp_handler.3, man/netsnmp_instance.3,
-     man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,
-     man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,
-     man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,
-     man/netsnmp_multiplexer.3,
-     man/netsnmp_netsnmp_agent_request_info_s.3,
-     man/netsnmp_netsnmp_column_info_t.3,
-     man/netsnmp_netsnmp_data_list_s.3,
-     man/netsnmp_netsnmp_handler_registration_s.3,
-     man/netsnmp_netsnmp_iterator_info_s.3,
-     man/netsnmp_netsnmp_mib_handler_access_methods.3,
-     man/netsnmp_netsnmp_mib_handler_methods.3,
-     man/netsnmp_netsnmp_mib_handler_s.3,
-     man/netsnmp_netsnmp_request_info_s.3,
-     man/netsnmp_netsnmp_table_registration_info_s.3,
-     man/netsnmp_netsnmp_table_request_info_s.3,
-     man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,
-     man/netsnmp_read_config.3, man/netsnmp_read_only.3,
-     man/netsnmp_row_merge.3, man/netsnmp_scalar.3,
-     man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,
-     man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,
-     man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,
-     man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,
-     man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,
-     man/netsnmp_table.3, man/netsnmp_table_array.3,
-     man/netsnmp_table_container.3, man/netsnmp_table_data.3,
-     man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,
-     man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,
-     man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,
-     man/netsnmp_table_rows.3, man/netsnmp_tdata.3,
-     man/netsnmp_util.3, man/netsnmp_utilities.3,
-     man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
-     documentation update
+   Include missing headers, and fix one bogus field name in Solaris
+   proc structure.
 
 2008-07-30 17:40  dts12
 
    * agent/mibgroup/agentx/protocol.c:
-     CHANGES: agent: BUG: 2003144: Increase size of AgentX packet build buffer
 
-2008-07-30 17:28  dts12
-
-   * net-snmp-config.in:
-     CHANGES: build: PATCH: 1681035: from magfr: improve net-snmp-config /bin/sh compatibility
-     Back-port of SVN revision 15961
-
-2008-07-30 09:58  dts12
-
-   * agent/mibgroup/host/hr_filesys.c:
-     CHANGES: agent: BUG: 1557372: Realign hrFSStorageIndex with hrStorageTable
+   CHANGES: agent: BUG: 2003144: Increase size of AgentX packet
+   build buffer
 
 2008-07-30 07:57  dts12
 
    * snmplib/mib.c:
-     CHANGES: snmplib: BUG: 2027834: Extend string print buffer by the minimum necessary.
+
+   CHANGES: snmplib: BUG: 2027834: Extend string print buffer by the
+   minimum necessary.
+
+2008-07-29 23:34  dts12
+
+   *  agent/mibgroup/host/data_access/swrun_cygwin.c,   
+      agent/mibgroup/host/data_access/swrun_kvm_proc.c,   
+      agent/mibgroup/host/data_access/swrun_nlist.c,   
+      agent/mibgroup/host/data_access/swrun_procfs_psinfo.c,   
+      agent/mibgroup/host/data_access/swrun_procinfo.c,   
+      agent/mibgroup/host/data_access/swrun_prpsinfo.c,   
+      agent/mibgroup/host/data_access/swrun_pstat.c:
+
+   Fix assorted silly typos - unbalanced parentheses
+   and the wrong type enumeration value names.
+
+2008-07-29 23:31  dts12
+
+   * agent/mibgroup/host/data_access/swrun.c:
+
+   Ensure swrun data is available for the prTable calls,
+   rather than relying on hrSWRunTable to trigger this.
 
 2008-07-29 16:19  dts12
 
    * agent/mibgroup/agentx/protocol.c:
-     a) Fix the size of the buffer in just one place
-     (makes it easier to change if necessary)
-     b) Fix various unfortunate line-breaks (within "pdu->flags")
+
+   a) Fix the size of the buffer in just one place
+   (makes it easier to change if necessary)
+   b) Fix various unfortunate line-breaks (within "pdu->flags")
+
+2008-07-29 16:05  dts12
+
+   *  agent/mibgroup/ucd-snmp/proc.c,   
+      include/net-snmp/data_access/swrun.h:
+
+   If the re-written SWRun module if available, then use it for
+   the UCD-specific prTable as well as the hrSWRunTable.
+   Consistency is good....
+
+2008-07-29 15:23  dts12
+
+   * agent/mibgroup/host/data_access/swrun_procfs_status.c:
+
+   Suppress junk in hrSWRunName & hrSWRunParameters values
+
+2008-07-29 10:27  dts12
+
+   *  agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/host/data_access/swrun.h,   
+      agent/mibgroup/host/hrSWRunPerfTable.c,   
+      agent/mibgroup/host/hrSWRunTable.c:
+
+   The cache/container relate to the data itself, so should
+   more naturally be handled by the data_access module,
+   rather than a particular MIB table module.
+
+2008-07-28 21:18  dts12
+
+   * agent/mibgroup/hardware/fsys/fsys_mntent.c:
+
+   'used' and 'free' are not the same thing, Dave. Pay attention at
+   the back....
 
 2008-07-28 14:39  dts12
 
    * agent/mibgroup/mibII/var_route.c:
-     CHANGES: agent: BUG: 2023803: Ensure compilation is not dependent
-     on an irrelevant configure characteristic for HP-UX 11
 
-2008-07-28 11:41  dts12
-
-   * configure, configure.in, include/net-snmp/net-snmp-config.h.in:
-     NEWS: building: add --with-temp-file-pattern configure option
-     Backport of SVN revision 17121
+   CHANGES: agent: BUG: 2023803: Ensure compilation is not dependent
+   on an irrelevant configure characteristic for HP-UX 11
 
 2008-07-28 10:56  dts12
 
    * apps/snmpset.c:
-     CHANGES: apps: BUG: 1964136: Drop NULL type from snmpset usage message.
+
+   CHANGES: apps: BUG: 1964136: Drop NULL type from snmpset usage
+   message.
+
+2008-07-25 14:19  dts12
+
+   * agent/mibgroup/host.h, agent/mibgroup/host/hrSWRunTable.h:
+
+   Use '--enable-new-features' mechanism to include hrSW* re-writes
+
+2008-07-25 14:13  dts12
+
+   *  agent/mibgroup/host/data_access/swinst.h,   
+      agent/mibgroup/host/data_access/swinst_null.c,   
+      agent/mibgroup/host/data_access/swinst_pkginfo.c,   
+      agent/mibgroup/host/data_access/swinst_rpm.c,   
+      agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/host/data_access/swrun.h,   
+      agent/mibgroup/host/data_access/swrun_cygwin.c,   
+      agent/mibgroup/host/data_access/swrun_darwin.c,   
+      agent/mibgroup/host/data_access/swrun_kinfo.c,   
+      agent/mibgroup/host/data_access/swrun_kvm_proc.c,   
+      agent/mibgroup/host/data_access/swrun_nlist.c,   
+      agent/mibgroup/host/data_access/swrun_null.c,   
+      agent/mibgroup/host/data_access/swrun_procfs_psinfo.c,   
+      agent/mibgroup/host/data_access/swrun_procfs_status.c,   
+      agent/mibgroup/host/data_access/swrun_procinfo.c,   
+      agent/mibgroup/host/data_access/swrun_prpsinfo.c,   
+      agent/mibgroup/host/data_access/swrun_pstat.c:
+
+   Preliminary OS-specific implementations of Running and Installed
+   Software data access.
 
 2008-07-24 23:22  tanders
 
    * man/snmpcmd.1.def:
-     CHANGES: documentation: BUG: 2027129: fix typo in snmpcmd.1
+
+   CHANGES: documentation: BUG: 2027129: fix typo in snmpcmd.1
+
+2008-07-24 10:00  jsafranek
+
+   * man/snmp.conf.5.def, sedscript.in:
+
+   reflect default temp file pattern in man page if it's modified by
+   ./configure script
+
+2008-07-24 08:36  jsafranek
+
+   * configure, configure.in, include/net-snmp/net-snmp-config.h.in:
+
+   NEWS: building: add --with-temp-file-pattern configure option
 
 2008-07-24 06:53  jsafranek
 
    * agent/agent_read_config.c:
-     CHANGES: snmpd: PATCH: 1823800: release and reload all trap destinations on SIGHUP
+
+   CHANGES: snmpd: PATCH: 1823800: release and reload all trap
+   destinations on SIGHUP
+
+2008-07-22 14:33  jsafranek
+
+   * net-snmp-create-v3-user.in:
+
+   fix net-snmp-create-v3-user to run without arguments
+
+2008-07-22 14:21  jsafranek
+
+   *  ., Makefile.in, configure, configure.in, net-snmp-config.in,   
+      net-snmp-create-v3-user.in:
+
+   NEWS: misc: separate user management from net-snmp-config into
+   new net-snmp-create-v3-user script
 
 2008-07-21 13:44  dts12
 
    * agent/helpers/old_api.c:
-     CHANGES: agent: PATCH 1944581: Protect against core dumps with long string index values.
 
-2008-07-17 15:07  dts12
+   CHANGES: agent: PATCH 1944581: Protect against core dumps with
+   long string index values.
 
-   * agent/Makefile.depend, agent/helpers/Makefile.depend,
-     agent/mibgroup/Makefile.depend, apps/Makefile.depend,
-     apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
-     make depend
+2008-07-18 15:19  hardaker
 
-2008-07-17 14:42  dts12
+   * dist/makerelease.xml:
 
-   * doxygen.conf:
-     - version tag ( 5.4.2.rc1 )
+   new signing key
 
 2008-07-17 10:05  jsafranek
 
    * agent/mibgroup/utilities/iquery.c:
-     CHANGES: snmpd: BUG: 2018031: Don't probe engineID in internal monitor sessions.
+
+   CHANGES: snmpd: BUG: 2018031: Don't probe engineID in internal
+   monitor sessions.
+
+2008-07-10 19:33  hardaker
+
+   * dist/makerelease.xml:
+
+   fix a regexp quote
+
+2008-07-10 14:12  tanders
+
+   * snmplib/system.c:
+
+   build fix for systems that don't have getaddrinfo (e.g. HP-UX
+   11.0 and earlier, Solaris 7 and earlier)
 
 2008-07-10 13:50  alex_b
 
    * win32/Makefile.in:
-     CHANGES: building: BUG: 2014526: Win32: snmpv3-security-includes.h not installed
+
+   CHANGES: building: BUG: 2014526: Win32:
+   snmpv3-security-includes.h not installed
 
 2008-07-06 15:05  alex_b
 
-   * README.win32, win32/Configure, win32/build.pl,
-     win32/netsnmpmibssdk/Makefile.in:
-     CHANGES: bulding: Add support for winExtDLL to build.bat (win32)
+   *  README.win32, win32/Configure, win32/build.pl,   
+      win32/dist/README.build.win32.txt,   
+      win32/netsnmpmibssdk/Makefile.in:
+
+   CHANGES: bulding: Add support for winExtDLL to build.bat (win32)
 
 2008-07-06 12:38  alex_b
 
    * win32/libsnmp_dll/libsnmp.def, win32/libsnmp_dll/libsnmp.def.in:
-     Win32 build fixes - add missing function for DLL build.
+
+   Win32 build fixes - add missing function for DLL build.
 
 2008-07-02 12:39  jsafranek
 
    * agent/mibgroup/ip-forward-mib/data_access/route_linux.c:
-     CHANGES: snmpd: BUG: 2006786: Interface name can have more than 8 characters.
+
+   CHANGES: snmpd: BUG: 2006786: Interface name can have more than 8
+   characters.
+
+2008-06-25 17:39  tanders
+
+   *  agent/agent_read_config.c, agent/agent_trap.c, apps/snmptrap.c,   
+      include/net-snmp/agent/ds_agent.h,   
+      include/net-snmp/library/system.h, man/snmpd.conf.5.def,   
+      perl/SNMP/SNMP.xs, python/netsnmp/client_intf.c,   
+      snmplib/snmpUDPDomain.c, snmplib/system.c:
+
+   NEWS: snmpd: PATCH: 1916840: new config option to set SNMPv1 trap
+   agent address
+   CHANGES: snmplib: PATCH: 1916840: introduce
+   netsnmp_gethostbyname_v4
 
 2008-06-25 15:16  jsafranek
 
    * perl/SNMP/SNMP.xs:
-     fix assertion when used with perl 5.10
 
-2008-06-24 22:36  tanders
+   fix assertion when used with perl 5.10
 
-   * 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:
-     CHANGES: building: Disable tests if the agent is built without the mib module they depend on.
-     Backport of r17087.
+2008-06-24 05:01  magfr
+
+   *  agent/mibgroup/snmpv3/usmUser.c,   
+      include/net-snmp/library/snmpusm.h, snmplib/snmpusm.c:
+
+   CHANGES: snmplib, snmpd: BUG: 2001124: Allow embedded NUL
+   characters in usmUserPublic
+
+2008-06-23 19:57  magfr
+
+   * snmplib/snmp_client.c:
+
+   Only reserve space for the extra \0 after the data for OCTET
+   STRING valued entities
+
+2008-06-23 19:13  magfr
+
+   *  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:
+
+   CHANGES: building: Disable tests if the agent is built without
+   the mib module they depend on.
+
+2008-06-21 12:14  magfr
+
+   * configure, configure.in:
+
+   Remove spurious AC_MSG_RESULT inside an AC_CACHE_CHECK
+
+2008-06-18 05:07  magfr
+
+   * configure, configure.in:
+
+   Handle solaris awk as well.
+
+2008-06-17 16:01  tanders
+
+   * agent/auto_nlist.c:
+
+   CHANGES: snmpd: PATCH: 1995753: from volkov_peter: minor cleanup
+   agent/auto_nlist.c
 
 2008-06-17 08:57  dts12
 
    * snmplib/snmpTCPIPv6Domain.c:
-     Fix potential buffer overflow in sprintf for TCP/IPv6
-     Cross-port of revision 16668
+
+   Fix potential buffer overflow in sprintf for TCP/IPv6
+   Cross-port of revision 16668
 
 2008-06-16 23:55  tanders
 
    * configure.in:
-     CHANGES: build: BUG: 1995172: fix --without-elf configure usage message
 
-2008-06-15 22:15  dts12
+   CHANGES: build: BUG: 1995172: fix --without-elf configure usage
+   message
 
-   * FAQ, README, configure, configure.in, dist/net-snmp.spec,
-     sedscript.in, snmplib/snmp_version.c:
-     - version tag ( 5.4.2.pre2 )
-
-2008-06-15 22:14  dts12
-
-   * CHANGES, NEWS:
-     version update
-
-2008-06-15 21:55  dts12
-
-   * ChangeLog:
-     Version update
-     
-     Also fix all ChangeLog entries since the CVS->SVN move,
-     which have been omitting information about what files
-     were affected by any given change.
-
-2008-06-15 21:32  dts12
-
-   * agent/Makefile.depend, agent/helpers/Makefile.depend,
-     agent/mibgroup/Makefile.depend, apps/Makefile.depend,
-     apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
-     make depend
-
-2008-06-15 21:06  dts12
-
-   * doxygen.conf:
-     - version tag ( 5.4.2.pre2 )
 2008-06-13 22:16  dts12
 
    * dist/find-requires, dist/net-snmp.spec:
-     CHANGES: build: Improved RPM spec files, for better consistency with vendor-provided packages.
-     Provided by Jan Safranek
 
-2008-06-13 21:54  dts12
-
-   * configure, configure.in:
-     Restore embedded perl to default Mac OS/X build.
-     (reversing revision 16988)
+   CHANGES: build: Improved RPM spec files, for better consistency
+   with vendor-provided packages.
+   Provided by Jan Safranek
 
 2008-06-13 21:03  dts12
 
    * configure, configure.in:
-     CHANGES: build: PATCH: 1899762: Tweak embedded_perl configure checks.
+
+   CHANGES: build: PATCH: 1899762: Tweak embedded_perl configure
+   checks.
+
+2008-06-13 05:43  magfr
+
+   *  acconfig.h, agent/mibgroup/snmpv3mibs.h, configure, configure.in, 
+        include/net-snmp/net-snmp-config.h.in:
+
+   NEWS: building: Retire the config_old/new_require feature and
+   replace it with config_version_require that compares version
+   numbers to achieve a similar thing
 
 2008-06-12 12:50  dts12
 
    * dist/makerelease:
-     Only add non-default MIB modules to the test builds.
-     Specifying the host module is not needed on Linux systems,
-     and may break on other O/Ss. Specifying the disman/event
-     MIB is unnecessary on any system.
 
-2008-06-12 12:45  dts12
-
-   * dist/makerelease:
-     Missing MD5 signature file for zip release
-
-2008-06-12 12:44  dts12
-
-   * dist/makerelease:
-     Basic documentation and help/usage messages.
+   Only add non-default MIB modules to the test builds.
+   Specifying the host module is not needed on Linux systems,
+   and may break on other O/Ss. Specifying the disman/event
+   MIB is unnecessary on any system.
 
 2008-06-11 10:16  dts12
 
    * dist/makerelease:
-     Only enable IPX transport on Linux systems
+
+   Only enable IPX transport on Linux systems
 
 2008-06-10 14:37  dts12
 
-   * agent/mibgroup/utilities/iquery.c,
-     include/net-snmp/library/snmp_api.h, snmplib/snmp_client.c:
-     snmpd: PATCH: 1918383: Fix DisMan monitoring of AgentX subagents
-     Note that this doesn't actually use the code submitted in that
-     patch.
-     Instead it inserts a callback hook into the
-     snmp_synch_response_cb
-     routine (using the myvoid pointer and a new session flag), which
-     has
-     the same effect without needing to duplicate any code.
+   *  agent/mibgroup/utilities/iquery.c,   
+      include/net-snmp/library/snmp_api.h, snmplib/snmp_client.c:
+
+   snmpd: PATCH: 1918383: Fix DisMan monitoring of AgentX subagents
+   Note that this doesn't actually use the code submitted in that
+   patch.
+   Instead it inserts a callback hook into the
+   snmp_synch_response_cb
+   routine (using the myvoid pointer and a new session flag), which
+   has
+   the same effect without needing to duplicate any code.
 
 2008-06-10 12:52  dts12
 
    * agent/mibgroup/disman/event/mteTrigger.c:
-     Fix logic errors in handling of old/current varbind lists.
-     Reported by Fred Gao in patch #1918383
 
-2008-06-10 10:51  dts12
+   Fix logic errors in handling of old/current varbind lists.
+   Reported by Fred Gao in patch #1918383
+
+2008-06-09 19:08  hardaker
 
    * snmplib/scapi.c:
-     update to match published release
+
+   update to match published release
+
+2008-06-09 16:58  hardaker
+
+   * dist/makerelease.xml:
+
+   added snmp_version.c
 
 2008-06-09 09:05  dts12
 
    * apps/snmptrap.c, apps/snmpusm.c:
-     A couple more missing error checks.
-     Based on those reported by Boya Sun
+
+   A couple more missing error checks.
+   Based on those reported by Boya Sun
 
 2008-06-06 12:02  dts12
 
    * configure, configure.in:
-     Better handling of embedded perl on Mac OS/X
-     (nearly working on Leopard now)
 
-2008-06-05 23:07  tanders
+   Better handling of embedded perl on Mac OS/X
+   (nearly working on Leopard now)
 
-   * dist/net-snmp.spec:
-     sync with trunk
+2008-06-03 23:14  tanders
 
-2008-06-05 21:12  tanders
+   *  acconfig.h, agent/auto_nlist.c, agent/mibgroup/hardware/cpu.h,   
+      agent/mibgroup/hardware/memory.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.in,   
+      include/net-snmp/net-snmp-config.h.in, snmplib/system.c:
 
-   * configure:
-     run autoconf
+   NEWS: aix: Add support for AIX 6.x
 
-2008-06-05 21:11  tanders
-
-   * acconfig.h, agent/auto_nlist.c, agent/mibgroup/hardware/cpu.h,
-     agent/mibgroup/hardware/memory.h,
-     agent/mibgroup/host/hr_filesys.c,
-     agent/mibgroup/host/hr_storage.c, agent/mibgroup/host/hr_swrun.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.in,
-     include/net-snmp/net-snmp-config.h.in, snmplib/system.c:
-     NEWS: AIX: Add support for AIX 6.x.
-     Successfully tested on trunk (passed extensive regression
-     testing).
-
-2008-06-05 21:04  tanders
+2008-06-03 22:46  tanders
 
    * aclocal.m4, config.guess, config.sub, configure, ltmain.sh:
-     NEWS: build: Update to libtool 1.5.26 (from 1.5.24), e.g. to
-     better support AIX 6.1 and Mac OS X Leopard.
-     Successfully tested on trunk (passed extensive regression
-     testing).
 
-2008-06-03 09:37  dts12
+   NEWS: build: Update to libtool 1.5.26 (from 1.5.24), e.g. to
+   better support AIX 6.1 and Mac OS X Leopard
 
-   * README.osX:
-     Document why embedded perl was disabled.
+2008-06-03 22:39  tanders
 
-2008-06-03 08:57  dts12
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in:
+
+   why add legacy definitions for new stuff?
+
+2008-06-03 09:03  dts12
 
    * agent/mibgroup/utilities/iquery.c:
-     Ensure the default internal query session has a valid engineID,
-     to avoid having to probe for it on the first use.
 
-2008-06-02 15:18  dts12
+   Ensure the default internal query session has a valid engineID,
+   to avoid having to probe for it on the first use.
 
-   * configure, configure.in:
-     Drop embedded perl from the default build on Mac OS/X
-     Th dual-architecture nature of the default perl binary
-     confuses the configure script sufficiently that the
-     code won't actually compile.
+2008-06-02 22:17  magfr
 
-2008-06-02 13:27  dts12
+   *  include/net-snmp/library/snmp_api.h,   
+      include/net-snmp/library/snmp_client.h,   
+      include/net-snmp/library/tools.h, snmplib/snmp_api.c,   
+      snmplib/snmp_client.c, snmplib/tools.c:
+
+   NEWS: snmplib: Convert generic source arguments from const
+   u_char* to const void* for snmp_pdu_add_variable,
+   snmp_varlist_add_variable, snmp_set_var_value,
+   snmp_set_var_typed_value and memdup.
+
+2008-06-02 13:28  dts12
 
    * agent/mibgroup/disman/event/mteTrigger.c:
-     Ensure that the "trigger armed" flag is cleared whenever the
-     matching
-     expression is found to hold - even if the trigger doesn't
-     actually fire.
-     This affects the behaviour of initially-true expressions, when
-     this
-     initial firing is suppressed using the mteTrigger*Startup object.
-     Without this tweak, the trigger will fire on the second sampling
-     (as if the expression had evaluated false first time round).
+
+   Ensure that the "trigger armed" flag is cleared whenever the
+   matching
+   expression is found to hold - even if the trigger doesn't
+   actually fire.
+   This affects the behaviour of initially-true expressions, when
+   this
+   initial firing is suppressed using the mteTrigger*Startup object.
+   Without this tweak, the trigger will fire on the second sampling
+   (as if the expression had evaluated false first time round).
 
 2008-06-01 20:02  dts12
 
-   * agent/mibgroup/disman/event/mteEvent.c,
-     agent/mibgroup/disman/event/mteObjects.c,
-     agent/mibgroup/disman/event/mteObjects.h:
-     Handle varbind payload for internal linkUp/Down notifications.
+   *  agent/mibgroup/disman/event/mteEvent.c,   
+      agent/mibgroup/disman/event/mteObjects.c,   
+      agent/mibgroup/disman/event/mteObjects.h:
+
+   Handle varbind payload for internal linkUp/Down notifications.
 
 2008-06-01 06:45  tanders
 
    * perl/TrapReceiver/TrapReceiver.xs:
-     NEWS: snmptrapd: BUG: 1955227: Memory leak for embedded Perl on
-     x86_64
 
-2008-05-29 16:11  dts12
+   NEWS: snmptrapd: BUG: 1955227: Memory leak for embedded Perl on
+   x86_64
 
-   * agent/mibgroup/hardware/memory/memory_linux.c:
-     Silly typo
+2008-05-31 12:08  magfr
+
+   * agent/helpers/scalar_group.c:
+
+   CHANGES: snmpd: The scalar helper that was called from the
+   scalar_group helper did nothing save adding a trailing 0 to the
+   argument. Remove the use of the scalar helper from the
+   scalar_group and add the trailing 0 in the scalar_group helper.
+
+2008-05-30 13:56  dts12
+
+   * dist/RELEASE-INSTRUCTIONS:
+
+   Tweak list of on-line software directories to be updated.
 
 2008-05-29 09:59  dts12
 
-   * agent/agent_registry.c, agent/helpers/stash_cache.c,
-     agent/mibgroup/agent/extend.c, agent/mibgroup/agentx/client.c,
-     agent/mibgroup/disman/event/mteTrigger.c, apps/snmptest.c,
-     apps/snmptrap.c, apps/snmpusm.c, snmplib/snmpusm.c:
-     Various missing error checks, etc.
-     Reported by Boya Sun.
+   *  agent/agent_registry.c, agent/helpers/stash_cache.c,   
+      agent/mibgroup/agent/extend.c, agent/mibgroup/agentx/client.c,   
+      agent/mibgroup/disman/event/mteTrigger.c, apps/snmptest.c,   
+      apps/snmptrap.c, apps/snmpusm.c, snmplib/snmpusm.c:
+
+   Various missing error checks, etc.
+   Reported by Boya Sun.
 
 2008-05-28 11:48  dts12
 
-   * agent/mibgroup/hardware/memory/memory_freebsd.c,
-     agent/mibgroup/ucd-snmp/memory.c:
-     Report cached memory size/usage properly (particularly on
-     FreeBSD).
+   *  agent/mibgroup/hardware/memory/memory_freebsd.c,   
+      agent/mibgroup/ucd-snmp/memory.c:
+
+   Report cached memory size/usage properly (particularly on
+   FreeBSD).
 
 2008-05-28 11:21  dts12
 
    * agent/mibgroup/ucd-snmp/memory.c:
-     Bring memBuffer code into line with revision 16975.
+
+   Bring memBuffer code into line with revision 16975.
 
 2008-05-28 11:10  dts12
 
    * agent/mibgroup/hardware/memory/memory_linux.c:
-     Linux 2.6 kernel does not report shared memory information.
+
+   Linux 2.6 kernel does not report shared memory information.
 
 2008-05-28 09:18  dts12
 
    * agent/mibgroup/hardware/memory/memory_linux.c:
-     CHANGES: snmpd: BUG: 1931391: Fix reporting of Memory buffers and
-     cached memory.
-     Problem reported by doconeill.
+
+   CHANGES: snmpd: BUG: 1931391: Fix reporting of Memory buffers and
+   cached memory.
+   Problem reported by doconeill.
+
+2008-05-28 08:30  dts12
+
+   * agent/mibgroup/agentx/subagent.c:
+
+   Tweak the fix for bug #1912647
 
 2008-05-28 06:56  magfr
 
    * agent/helpers/scalar_group.c:
-     CHANGES: snmpd: Enforce the lower limit on scalar_groups
-     This fixes the case of getnext icmp.0 returning icmp.0.0 instead
-     of the
-     expected icmpInMsgs.0
+
+   CHANGES: snmpd: Enforce the lower limit on scalar_groups
+   This fixes the case of getnext icmp.0 returning icmp.0.0 instead
+   of the
+   expected icmpInMsgs.0
 
 2008-05-27 22:03  dts12
 
    * agent/mibgroup/agentx/master.c, agent/mibgroup/agentx/subagent.c:
-     CHANGES: snmpd: BUG: 1912647: Fix memory leak following failed
-     requests.
-     Fix provided by Anton Pak
+
+   CHANGES: snmpd: BUG: 1912647: Fix memory leak following failed
+   requests.
+   Fix provided by Anton Pak
 
 2008-05-27 21:22  dts12
 
    * snmplib/snmp_api.c:
-     CHANGES: snmplib: BUG: 1958041: Ensure IDs are not truncated.
+
+   CHANGES: snmplib: BUG: 1958041: Ensure IDs are not truncated.
 
 2008-05-27 14:18  dts12
 
    * agent/mibgroup/hardware/memory/memory_freebsd.c:
-     Monitor memory buffers on FreeBSD systems.
-     API suggested by Chris
+
+   Monitor memory buffers on FreeBSD systems.
+   API suggested by Chris
 
 2008-05-27 12:47  dts12
 
    * agent/mibgroup/hardware/cpu/cpu_sysctl.c:
-     Fix careless typo when applying Maxim's patch.
+
+   Fix careless typo when applying Maxim's patch.
+
+2008-05-25 21:37  magfr
+
+   *  README.agent-mibs, agent/mibgroup/snmpv3/usmStats.h,   
+      agent/mibgroup/snmpv3/usmStats_5_5.c,   
+      agent/mibgroup/snmpv3/usmStats_5_5.h,   
+      agent/mibgroup/snmpv3mibs.h:
+
+   CHANGES: snmpd: Reimplementation of usmStats.
 
 2008-05-25 07:24  magfr
 
    * agent/mibgroup/disman/event/mteEventConf.c:
-     Remove a local variable only used to track a local string
-     constant and replace t with a direct reference to the string
-     constant.
-     Mark two local functions static as well.
+
+   Remove a local variable only used to track a local string
+   constant and replace t with a direct reference to the string
+   constant.
+   Mark two local functions static as well.
 
 2008-05-25 07:17  magfr
 
    * agent/mibgroup/utilities/iquery.c:
-     Reorder to avoid one strlen call.
-     Add missing cast.
+
+   Reorder to avoid one strlen call.
+   Add missing cast.
 
 2008-05-25 07:14  magfr
 
    * agent/mibgroup/ip-mib/data_access/scalars_linux.c:
-     Make ipfw_name a static array instead of a pointer as it is
-     private to this module.
+
+   Make ipfw_name a static array instead of a pointer as it is
+   private to this module.
 
 2008-05-25 07:05  magfr
 
    * agent/helpers/instance.c:
-     When casting, cast to the right type.
+
+   When casting, cast to the right type.
+
+2008-05-25 06:08  magfr
+
+   *  agent/helpers/cache_handler.c, agent/helpers/read_only.c,   
+      agent/helpers/stash_cache.c, agent/mibgroup/agent/extend.c,   
+      agent/mibgroup/agent/nsCache.c, agent/mibgroup/agent/nsLogging.c, 
+        agent/mibgroup/host/hr_print.c, agent/mibgroup/host/hr_swinst.c,
+         agent/snmp_agent.c, apps/snmptest.c, snmplib/read_config.c,   
+      snmplib/snmp_client.c:
+
+   Remove warnings about unreachable code on solaris.
 
 2008-05-24 20:30  dts12
 
    * python/netsnmp/client_intf.c:
-     CHANGES: python: BUG: 1826174: Check for buffer overflow when
-     printing values.
-     Addresses CVE-2008-2292
+
+   CHANGES: python: BUG: 1826174: Check for buffer overflow when
+   printing values.
+   Addresses CVE-2008-2292
+
+2008-05-24 13:11  magfr
+
+   * configure, configure.in:
+
+   On AIX netinet/in_pcb.h depends on net/route.h. Add the include
+   for configure.
+
+2008-05-24 09:06  magfr
+
+   *  acconfig.h, configure, configure.in,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   Make the checks for netinet/in_pcb.h and sys/disklabel.h use the
+   normal
+   machinery.
+   Add a netsnmp prefix to the cache variable
+   cv_sys_ioctl_h_has_SIOCGIFADDR to
+   pacify aclocal.
 
 2008-05-23 20:27  dts12
 
-   * agent/mibgroup/hardware/cpu.h,
-     agent/mibgroup/hardware/cpu/cpu_sysctl.c:
-     CHANGES: snmpd: PATCH: Fix for CPU stats on FreeBSD
-     Provided by Maxim Sobolev
+   *  agent/mibgroup/hardware/cpu.h,   
+      agent/mibgroup/hardware/cpu/cpu_sysctl.c:
+
+   CHANGES: snmpd: PATCH: Fix for CPU stats on FreeBSD
+   Provided by Maxim Sobolev
 
 2008-05-23 20:12  dts12
 
    * dist/snmpd-init.d, dist/snmptrapd-init.d:
-     CHANGES: install: PATCH: 1969627: Handle empty
-     /etc/sysconfig/network file
-     Fix provided by Josh Wilmes
+
+   CHANGES: install: PATCH: 1969627: Handle empty
+   /etc/sysconfig/network file
+   Fix provided by Josh Wilmes
 
 2008-05-23 20:07  dts12
 
    * agent/mibgroup/host/hr_filesys.c:
-     CHANGES: snmpd: PATCH: 1967194: Recognise NFS4 mounts
-     Submitted by Fabrice Bacchella
+
+   CHANGES: snmpd: PATCH: 1967194: Recognise NFS4 mounts
+   Submitted by Fabrice Bacchella
 
 2008-05-22 20:55  dts12
 
    * snmplib/asn1.c:
-     Don't change length of OID buffer if parsing the OID fails.
-     Reported by saifulla Mohd Abdul.
+
+   Don't change length of OID buffer if parsing the OID fails.
+   Reported by saifulla Mohd Abdul.
+
+2008-05-22 13:34  hardaker
+
+   * dist/makerelease.xml:
+
+   update the advertising section and change note about how to
+   upload files (adding an automatted rsync command)
+
+2008-05-22 04:08  magfr
+
+   * agent/mibgroup/util_funcs/header_simple_table.c:
+
+   Add missing include.
+
+2008-05-21 20:27  magfr
+
+   * snmplib/snmpAliasDomain.c:
+
+   Make it possible to build the alias module with a C++ compiler.
+
+2008-05-21 13:40  hardaker
+
+   * dist/makerelease.xml:
+
+   added FSF directory info
+
+2008-05-21 09:21  dts12
+
+   * dist/RELEASE-INSTRUCTIONS:
+
+   Add Free Software Directory to the list of places to be updated.
+
+2008-05-20 23:00  magfr
+
+   *  agent/mibgroup/agent/extend.c, agent/mibgroup/agent/extend.h,   
+      agent/mibgroup/examples/example.c,   
+      agent/mibgroup/examples/example.h,   
+      agent/mibgroup/examples/ucdDemoPublic.c,   
+      agent/mibgroup/examples/ucdDemoPublic.h,   
+      agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/interfaces.c,   
+      agent/mibgroup/mibII/interfaces.h, agent/mibgroup/mibII/ip.c,   
+      agent/mibgroup/mibII/tcp.c, agent/mibgroup/mibII/udp.c,   
+      agent/mibgroup/mibII/vacm_vars.c,   
+      agent/mibgroup/mibII/vacm_vars.h, agent/mibgroup/misc/ipfwacc.c,  
+       agent/mibgroup/misc/ipfwacc.h,   
+      agent/mibgroup/snmpv3/snmpEngine.c,   
+      agent/mibgroup/snmpv3/snmpEngine.h,   
+      agent/mibgroup/snmpv3/snmpMPDStats.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats.h,   
+      agent/mibgroup/snmpv3/usmStats.c,   
+      agent/mibgroup/snmpv3/usmStats.h,   
+      agent/mibgroup/snmpv3/usmUser.c, agent/mibgroup/snmpv3/usmUser.h, 
+        agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetAddrEntry.h,   
+      agent/mibgroup/ucd-snmp/disk.c, agent/mibgroup/ucd-snmp/disk.h,   
+      agent/mibgroup/ucd-snmp/diskio.c,   
+      agent/mibgroup/ucd-snmp/diskio.h,   
+      agent/mibgroup/ucd-snmp/errormib.c,   
+      agent/mibgroup/ucd-snmp/errormib.h,   
+      agent/mibgroup/ucd-snmp/extensible.c,   
+      agent/mibgroup/ucd-snmp/extensible.h,   
+      agent/mibgroup/ucd-snmp/file.c, agent/mibgroup/ucd-snmp/file.h,   
+      agent/mibgroup/ucd-snmp/lmSensors.c,   
+      agent/mibgroup/ucd-snmp/lmSensors.h,   
+      agent/mibgroup/ucd-snmp/loadave.c,   
+      agent/mibgroup/ucd-snmp/loadave.h,   
+      agent/mibgroup/ucd-snmp/logmatch.c,   
+      agent/mibgroup/ucd-snmp/logmatch.h,   
+      agent/mibgroup/ucd-snmp/memory_aix4.c,   
+      agent/mibgroup/ucd-snmp/memory_aix4.h,   
+      agent/mibgroup/ucd-snmp/memory_darwin7.c,   
+      agent/mibgroup/ucd-snmp/memory_darwin7.h,   
+      agent/mibgroup/ucd-snmp/memory_dynix.c,   
+      agent/mibgroup/ucd-snmp/memory_dynix.h,   
+      agent/mibgroup/ucd-snmp/memory_netbsd1.c,   
+      agent/mibgroup/ucd-snmp/memory_netbsd1.h,   
+      agent/mibgroup/ucd-snmp/memory_solaris2.c,   
+      agent/mibgroup/ucd-snmp/memory_solaris2.h,   
+      agent/mibgroup/ucd-snmp/vmstat_aix4.c,   
+      agent/mibgroup/ucd-snmp/vmstat_aix4.h,   
+      agent/mibgroup/ucd-snmp/vmstat_bsdi4.c,   
+      agent/mibgroup/ucd-snmp/vmstat_bsdi4.h,   
+      agent/mibgroup/ucd-snmp/vmstat_darwin7.c,   
+      agent/mibgroup/ucd-snmp/vmstat_darwin7.h,   
+      agent/mibgroup/ucd-snmp/vmstat_dynix.c,   
+      agent/mibgroup/ucd-snmp/vmstat_dynix.h,   
+      agent/mibgroup/ucd-snmp/vmstat_freebsd2.c,   
+      agent/mibgroup/ucd-snmp/vmstat_freebsd2.h,   
+      agent/mibgroup/ucd-snmp/vmstat_hpux.c,   
+      agent/mibgroup/ucd-snmp/vmstat_hpux.h,   
+      agent/mibgroup/ucd-snmp/vmstat_linux.c,   
+      agent/mibgroup/ucd-snmp/vmstat_linux.h,   
+      agent/mibgroup/ucd-snmp/vmstat_netbsd1.c,   
+      agent/mibgroup/ucd-snmp/vmstat_netbsd1.h,   
+      agent/mibgroup/ucd-snmp/vmstat_solaris2.c,   
+      agent/mibgroup/ucd-snmp/vmstat_solaris2.h,   
+      agent/mibgroup/util_funcs, agent/mibgroup/util_funcs.c,   
+      agent/mibgroup/util_funcs.h,   
+      agent/mibgroup/util_funcs/MIB_STATS_CACHE_TIMEOUT.h,   
+      agent/mibgroup/util_funcs/header_generic.c,   
+      agent/mibgroup/util_funcs/header_generic.h,   
+      agent/mibgroup/util_funcs/header_simple_table.c,   
+      agent/mibgroup/util_funcs/header_simple_table.h:
+
+   CHANGES: snmpd: The majority of the dependencies on util_funcs is
+   for the header_* functions. Factor out the header_* functions and
+   adjust the requirements.
+
+2008-05-20 22:40  magfr
+
+   *  agent/mibgroup/Rmon/agutil.c, agent/mibgroup/Rmon/alarm.c,   
+      agent/mibgroup/Rmon/alarm.h, agent/mibgroup/Rmon/event.c,   
+      agent/mibgroup/Rmon/event.h, agent/mibgroup/Rmon/history.c,   
+      agent/mibgroup/Rmon/history.h, agent/mibgroup/Rmon/rows.c,   
+      agent/mibgroup/Rmon/statistics.c,   
+      agent/mibgroup/Rmon/statistics.h, agent/mibgroup/agent/nsCache.c, 
+        agent/mibgroup/agent/nsDebug.c,
+      agent/mibgroup/agent/nsLogging.c,   
+      agent/mibgroup/hardware/sensors/kstat_sensors.c,   
+      agent/mibgroup/hardware/sensors/lmsensors_v2.c,   
+      agent/mibgroup/hardware/sensors/lmsensors_v3.c,   
+      agent/mibgroup/hardware/sensors/picld_sensors.c,   
+      agent/mibgroup/mibII/ipAddr.h, agent/mibgroup/mibII/ipv6.c,   
+      agent/mibgroup/mibII/kernel_linux.c,   
+      agent/mibgroup/mibII/route_headers.h,   
+      agent/mibgroup/mibII/snmp_mib.c, agent/mibgroup/mibII/tcp.h,   
+      agent/mibgroup/mibII/tcpTable.h, agent/mibgroup/mibII/udp.h,   
+      agent/mibgroup/mibII/udpTable.h,   
+      agent/mibgroup/mibII/vacm_conf.c,   
+      agent/mibgroup/mibII/vacm_conf.h,   
+      agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/mibII/var_route.h, agent/mibgroup/smux/smux.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.h,   
+      agent/mibgroup/tunnel/tunnel.c,   
+      agent/mibgroup/utilities/override.c, agent/mibgroup/winExtDLL.c,  
+       agent/mibgroup/winExtDLL.h, agent/snmp_agent.c:
+
+   CHANGES: Do not config_require(util_funcs) if nothing from
+   util_funcs is used
 
 2008-05-14 13:35  tanders
 
    * agent/mibgroup/if-mib/data_access/interface_linux.c:
-     fix build failures with earlier Linux kernels (e.g. with RH7.1)
-     introduced by r16909
 
-2008-05-09 19:04  dts12
+   fix build failures with earlier Linux kernels (e.g. with RH7.1)
+   introduced by r16909
 
-   * FAQ, README, configure, configure.in, dist/net-snmp.spec,
-     perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm, perl/OID/OID.pm,
-     perl/SNMP/SNMP.pm, perl/TrapReceiver/TrapReceiver.pm,
-     perl/agent/Support/Support.pm, perl/agent/agent.pm,
-     perl/agent/default_store/default_store.pm,
-     perl/default_store/default_store.pm, sedscript.in,
-     snmplib/snmp_version.c:
-     - version tag ( 5.4.2.pre1 )
+2008-05-13 18:56  hardaker
 
-2008-05-09 19:04  dts12
+   * include/net-snmp/net-snmp-config.h.in:
 
-   * CHANGES, NEWS:
-     version update
+   fix comment typo
 
-2008-05-09 18:47  dts12
+2008-05-13 15:46  hardaker
 
-   * ChangeLog:
-     version update
+   * NEWS:
 
-2008-05-09 15:24  dts12
+   document the -t switch change
 
-   * agent/Makefile.depend, agent/helpers/Makefile.depend,
-     agent/mibgroup/Makefile.depend, apps/Makefile.depend,
-     apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
-     make depend
+2008-05-13 15:45  hardaker
 
-2008-05-09 15:14  dts12
+   * man/snmpcmd.1.def:
 
-   * doxygen.conf:
-     - version tag ( 5.4.2.pre1 )
+   document the alias keyword
 
-2008-05-09 14:51  dts12
+2008-05-13 15:41  hardaker
 
-   * man/netsnmp_agent.3, man/netsnmp_agent_registry.3,
-     man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,
-     man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,
-     man/netsnmp_cache_handler.3, man/netsnmp_callback.3,
-     man/netsnmp_container.3, man/netsnmp_data_list.3,
-     man/netsnmp_debug.3, man/netsnmp_default_store.3,
-     man/netsnmp_handler.3, man/netsnmp_instance.3,
-     man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,
-     man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,
-     man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,
-     man/netsnmp_multiplexer.3,
-     man/netsnmp_netsnmp_agent_request_info_s.3,
-     man/netsnmp_netsnmp_column_info_t.3,
-     man/netsnmp_netsnmp_data_list_s.3,
-     man/netsnmp_netsnmp_handler_registration_s.3,
-     man/netsnmp_netsnmp_iterator_info_s.3,
-     man/netsnmp_netsnmp_mib_handler_access_methods.3,
-     man/netsnmp_netsnmp_mib_handler_methods.3,
-     man/netsnmp_netsnmp_mib_handler_s.3,
-     man/netsnmp_netsnmp_request_info_s.3,
-     man/netsnmp_netsnmp_table_registration_info_s.3,
-     man/netsnmp_netsnmp_table_request_info_s.3,
-     man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,
-     man/netsnmp_read_config.3, man/netsnmp_read_only.3,
-     man/netsnmp_row_merge.3, man/netsnmp_scalar.3,
-     man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,
-     man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,
-     man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,
-     man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,
-     man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,
-     man/netsnmp_table.3, man/netsnmp_table_array.3,
-     man/netsnmp_table_container.3, man/netsnmp_table_data.3,
-     man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,
-     man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,
-     man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,
-     man/netsnmp_table_rows.3, man/netsnmp_tdata.3,
-     man/netsnmp_util.3, man/netsnmp_utilities.3,
-     man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
-     documentation update
+   * man/snmpcmd.1.def, snmplib/snmp_parse_args.c:
 
-2008-05-09 14:47  dts12
+   allow floating point numbers to be used for timeout values
 
-   * doxygen.conf:
-     - version tag ( 5.4.2 )
+2008-05-12 21:11  hardaker
 
-2008-05-09 14:23  dts12
+   * mibs/NET-SNMP-TC.txt, snmplib/snmpAliasDomain.c:
 
-   * Makefile.top:
-     version update
+   Added a real snmpAliasDomain OID definition
 
-2008-05-09 13:58  dts12
+2008-05-12 21:07  hardaker
 
-   * agent/mibgroup/host/hr_filesys.c:
-     Debugging messages.
+   * NEWS:
+
+   updated NEWS with new alias blurb
+
+2008-05-12 21:07  hardaker
+
+   *  acconfig.h, configure, configure.in,   
+      include/net-snmp/library/snmpAliasDomain.h,   
+      include/net-snmp/net-snmp-config.h.in, man/snmp.conf.5.def,   
+      snmplib/snmpAliasDomain.c, snmplib/snmp_transport.c:
+
+   NEWS: snmplib: Added a alias transport for mapping complex
+   transport strings to simple name definitions
+
+2008-05-12 19:38  hardaker
+
+   * dist/makerelease.xml:
+
+   strip off trailing module name
+
+2008-05-12 06:03  magfr
+
+   * agent/mibgroup/mibII/snmp_mib.c:
+
+   Make mibII/snmp work again.
+
+2008-05-10 21:47  magfr
+
+   *  agent/mibgroup/ip-mib/ip_scalars.c,   
+      agent/mibgroup/ucd-snmp/diskio.c:
+
+   CHANGES: snmpd: Remove unused variables.
+
+2008-05-10 09:55  magfr
+
+   *  agent/agent_index.c, agent/mibgroup/agentx/master.c,   
+      agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/ucd-snmp/proxy.c, agent/snmp_agent.c,   
+      snmplib/asn1.c:
+
+   CHANGES: snmpd, snmplib: Replace the invalid %08p format
+   specifier with the correct %8p.
+
+2008-05-10 09:51  magfr
+
+   *  agent/mibgroup/disman/schedule/schedCore.c,   
+      agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/mibII/at.c, agent/mibgroup/mibII/icmp.c,   
+      agent/mibgroup/mibII/ipAddr.c, agent/mibgroup/mibII/ipv6.c,   
+      agent/mibgroup/mibII/route_write.c,   
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udpTable.c, 
+        agent/mibgroup/mibII/vacm_vars.c,   
+      agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/snmpv3/snmpEngine.c,   
+      agent/mibgroup/snmpv3/usmUser.c,   
+      agent/mibgroup/target/snmpTargetAddrEntry.c,   
+      agent/mibgroup/target/snmpTargetParamsEntry.c,   
+      agent/mibgroup/ucd-snmp/disk.c,   
+      agent/mibgroup/ucd-snmp/loadave.c,   
+      agent/mibgroup/ucd-snmp/pass.c,   
+      agent/mibgroup/ucd-snmp/pass_persist.c, apps/snmpdelta.c,   
+      apps/snmpnetstat/inet.c, apps/snmpnetstat/inet6.c,   
+      apps/snmpnetstat/main.c, apps/snmptrapd.c,   
+      apps/snmptrapd_handlers.c:
+
+   CHANGES: snmpd, snmpnetstat, snmptrapd, snmpdelta: Use NULL
+   instead of 0 for NULL pointers. Use casted 0's instead of 0 for
+   NULL function pointers.
+
+2008-05-10 09:40  magfr
+
+   *  agent/mibgroup/host/hr_disk.h,   
+      include/net-snmp/agent/agent_sysORTable.h,   
+      include/net-snmp/agent/stash_cache.h:
+
+   CHANGES: snmpd: Add missing function declarations.
+
+2008-05-10 09:39  magfr
+
+   *  agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/disman/expr/expExpressionConf.c,   
+      agent/mibgroup/ucd-snmp/diskio.c, agent/snmp_vars.c:
+
+   CHANGES: snmpd: Add missing include files.
+
+2008-05-10 09:33  magfr
+
+   *  agent/agent_registry.c, agent/helpers/table_data.c,   
+      agent/helpers/table_dataset.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/ipAddressTable/ipAddressTable_interface.c,  
+      
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c,
+         agent/snmp_agent.c, local/mib2c-conf.d/mfd-interface.m2c,   
+      snmplib/data_list.c:
+
+   CHANGES: snmpd, snmplib, mib2c: Move the definition of inline
+   functions so that the compiler sees them before it sees uses of
+   them.
+
+2008-05-10 09:30  magfr
+
+   *  agent/agent_handler.c, agent/helpers/table_dataset.c,   
+      include/net-snmp/agent/agent_handler.h,   
+      include/net-snmp/agent/snmp_agent.h,   
+      include/net-snmp/agent/table_data.h,   
+      include/net-snmp/agent/table_dataset.h,   
+      include/net-snmp/library/data_list.h:
+
+   CHANGES: snmpd, snmplib: Remove the inline declarations for
+   functions that lack an inline definition.
+
+2008-05-09 21:35  magfr
+
+   *  agent/agent_index.c, agent/agent_registry.c, agent/agent_trap.c,  
+       agent/helpers/table.c, agent/mibgroup/Rmon/rows.c,   
+      agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/disman/expr/expValueTable.c,   
+      agent/mibgroup/host/hr_device.c, agent/mibgroup/host/hr_disk.c,   
+      agent/mibgroup/host/hr_filesys.c,   
+      agent/mibgroup/host/hr_network.c,   
+      agent/mibgroup/host/hr_partition.c,   
+      agent/mibgroup/host/hr_print.c, agent/mibgroup/host/hr_proc.c,   
+      agent/mibgroup/host/hr_storage.c,   
+      agent/mibgroup/host/hr_swinst.c, agent/mibgroup/host/hr_swrun.c,  
+       agent/mibgroup/host/hr_system.c,   
+      agent/mibgroup/mibII/vacm_conf.c, agent/mibgroup/smux/smux.c,   
+      agent/mibgroup/util_funcs.c, agent/mibgroup/utilities/execute.c,  
+       agent/snmp_agent.c, snmplib/container_binary_array.c,   
+      snmplib/container_null.c, snmplib/lcd_time.c, snmplib/md5.c,   
+      snmplib/mib.c, snmplib/parse.c, snmplib/snmpAAL5PVCDomain.c,   
+      snmplib/snmpTCPDomain.c, snmplib/snmpTCPIPv6Domain.c,   
+      snmplib/snmpUnixDomain.c, snmplib/snmp_alarm.c,   
+      snmplib/snmp_api.c, snmplib/snmp_client.c, snmplib/snmp_debug.c,  
+       snmplib/snmp_logging.c, snmplib/snmpusm.c, snmplib/tools.c:
+
+   CHANGES: snmpd, snmplib: Use NULL instead of 0 for NULL pointers.
+   Use casted 0's instead of 0 for NULL function pointers.
+
+2008-05-09 21:27  magfr
+
+   *  agent/helpers/old_api.c, agent/mibgroup/mibII/ipv6.c,   
+      agent/mibgroup/smux/smux.c, agent/snmp_agent.c,   
+      snmplib/default_store.c, snmplib/parse.c, snmplib/read_config.c,  
+       snmplib/snmp_version.c:
+
+   CHANGES: snmpd, snmplib: fixups for prototype [(void) replacing
+   ()].
+
+2008-05-09 21:23  magfr
+
+   * agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c:
+
+   Remove dead code.
+
+2008-05-09 19:16  dts12
+
+   * dist/makerelease:
+
+   Missing MD5 signature file for zip release
+
+2008-05-09 19:15  dts12
+
+   * dist/makerelease:
+
+   Basic documentation and help/usage messages.
 
 2008-05-08 14:00  dts12
 
    * agent/mibgroup/if-mib/data_access/interface_linux.c:
-     Drop support for the interim SIOCDEVPRIVATE-based ioctl calls.
-     SIOCGMIIPHY/SIOCGMIIREG have been defined since at least Sept
-     2001 (kernel 2.4.10),
-     so the risk of calling an inappropriate private ioctl is probably
-     greater than
-     that of missing information from an ancient system.
+
+   Drop support for the interim SIOCDEVPRIVATE-based ioctl calls.
+   SIOCGMIIPHY/SIOCGMIIREG have been defined since at least Sept
+   2001 (kernel 2.4.10),
+   so the risk of calling an inappropriate private ioctl is probably
+   greater than
+   that of missing information from an ancient system.
 
 2008-05-08 09:02  dts12
 
    * snmplib/snmp_api.c:
-     Don't try to automatically create anonymous users.
-     (An invalid trapsess directive may crash the agent)
+
+   Don't try to automatically create anonymous users.
+   (An invalid trapsess directive may crash the agent)
+
+2008-05-06 08:38  jsafranek
+
+   * dist/net-snmp.spec:
+
+   - remove %{libcurrent}
+   - add openssl-devel to build requirements
+   - don't use Provides: unless necessary, let rpmbuild compute the
+   provided libraries
+   - don't specify PREFIX for perl
+
+2008-05-06 08:38  jsafranek
+
+   * agent/agent_read_config.c, agent/agent_trap.c:
+
+   reverting accidentaly commited files
+
+2008-05-06 08:34  jsafranek
+
+   * agent/agent_read_config.c, agent/agent_trap.c:
+
+   - remove %{libcurrent}
+   - add openssl-devel to build requirements
+   - don't use Provides: unless necessary, let rpmbuild compute the
+   provided libraries
+   - don't specify PREFIX for perl
+
+2008-05-05 21:43  dts12
+
+   * configure, configure.in:
+
+   Mechanism to select upcoming module re-writes and/or
+   recently-deprecated modules.
 
 2008-05-02 10:19  dts12
 
    * include/net-snmp/system/darwin9.h:
-     Handle udpTable indexing on both PPC and Intel hardware.
+
+   Handle udpTable indexing on both PPC and Intel hardware.
+
+2008-04-30 19:45  magfr
+
+   * snmplib/snmp_debug.c:
+
+   CHANGES: snmplib: Remove the support for generation of statistics
+   of how often a certain debug log level is triggered.
+
+2008-04-30 19:41  magfr
+
+   * snmplib/snmp_debug.c:
+
+   NEWS: snmplib: Remove the variable debug_num_excluded.
+   There is nothing that sets debug_num_excluded and there is no way
+   to for it
+   to affect the result of any function.
 
 2008-04-30 05:28  magfr
 
    * snmplib/snmp_debug.c:
-     Remove unncessary prototypes
+
+   Remove unncessary prototypes
+
+2008-04-23 16:39  hardaker
+
+   * dist/makerelease.xml:
+
+   actually use the branch path, don't just say you're going to
 
 2008-04-19 22:20  tanders
 
    * agent/mibgroup/disman/event/mteTriggerConf.c:
-     don't depend on OID resolution for disman linkUpDownNotifications
+
+   don't depend on OID resolution for disman linkUpDownNotifications
+
+2008-04-08 20:43  magfr
+
+   * include/net-snmp/agent/sysORTable.h:
+
+   Accept that people will try to compile this code with pre-ANSI
+   compilers and change it to handle that case.
 
 2008-04-08 20:38  hardaker
 
    * perl/agent/agent.pm:
-     CHANGES: perl: fixed an extra brace in the docs pointed out by
-     Jason Martin
+
+   CHANGES: perl: fixed an extra brace in the docs pointed out by
+   Jason Martin
+
+2008-04-08 20:34  hardaker
+
+   * dist/makerelease.xml:
+
+   update and restructure a bit to fix a few problems
+
+2008-04-07 20:06  magfr
+
+   * agent/helpers/null.c:
+
+   CHANGES: snmpd: As the null handler is perfectly capable of
+   handling GET_BULK requests it is now marked as such in the
+   registration.
 
 2008-04-07 14:00  dts12
 
    * snmplib/parse.c:
-     Another over-short DESCRIPTION buffer.
+
+   Another over-short DESCRIPTION buffer.
 
 2008-04-07 13:57  dts12
 
    * snmplib/parse.c:
-     Handle longer DESCRIPTION/REFERENCE strings in Capabilities
-     statements.
-     (Consistent processing with other MIB definition macros).
-     Fix provided by Aleksandr Lomanov.
+
+   Handle longer DESCRIPTION/REFERENCE strings in Capabilities
+   statements.
+   (Consistent processing with other MIB definition macros).
+   Fix provided by Aleksandr Lomanov.
+
+2008-04-02 19:35  hardaker
+
+   * FAQ:
+
+   mention libelf package rename
+
+2008-03-29 09:29  magfr
+
+   *  README.agent-mibs, agent/Makefile.in, agent/agent_sysORTable.c,   
+      agent/mibgroup/agentx/master.h,   
+      agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/agentx/subagent.c, agent/mibgroup/mibII/icmp.c,   
+      agent/mibgroup/mibII/interfaces.c, agent/mibgroup/mibII/ip.c,   
+      agent/mibgroup/mibII/ipAddr.c, agent/mibgroup/mibII/snmp_mib.c,   
+      agent/mibgroup/mibII/sysORTable.c,   
+      agent/mibgroup/mibII/sysORTable.h,   
+      agent/mibgroup/mibII/system_mib.c, agent/mibgroup/mibII/tcp.c,   
+      agent/mibgroup/mibII/tcpTable.c, agent/mibgroup/mibII/udp.c,   
+      agent/mibgroup/mibII/udpTable.c,   
+      agent/mibgroup/mibII/vacm_conf.c,   
+      agent/mibgroup/mibII/vacm_vars.c,   
+      agent/mibgroup/snmpv3/snmpEngine.c,   
+      agent/mibgroup/snmpv3/snmpMPDStats.c,   
+      agent/mibgroup/snmpv3/usmStats.c, agent/mibgroup/tunnel/tunnel.c, 
+        agent/snmp_vars.c, include/net-snmp/agent/agent_sysORTable.h,   
+      include/net-snmp/agent/sysORTable.h:
+
+   NEWS: snmpd: Enable automatic reregistering of sysORTable entries
+   from AgentX subagents. Add the sysORTable interface to the
+   include directory. Rewrite the sysORTable module to use the
+   table_container handler.
+
+2008-03-27 03:21  hardaker
+
+   * dist/makerelease, dist/net-snmp.spec, dist/patme:
+
+   uncommit 3 accidental multiple file commits
+
+2008-03-27 03:18  hardaker
+
+   *  dist/makerelease, dist/makerelease.xml, dist/net-snmp.spec,   
+      dist/patme:
+
+   various rewording, restructuring and proper file replacement
+   scheme
 
 2008-03-26 07:52  magfr
 
    * snmplib/read_config.c:
-     NEWS: snmplib: from "Aleksandr Lomanov": Corrected registering of
-     multiple premib config handlers so that all of them get
-     registered as premib handlers as opposed to the earlier behaviour
-     where they always got registered as normal config items.
+
+   NEWS: snmplib: from "Aleksandr Lomanov": Corrected registering of
+   multiple premib config handlers so that all of them get
+   registered as premib handlers as opposed to the earlier behaviour
+   where they always got registered as normal config items.
+
+2008-03-26 07:16  magfr
+
+   * agent/helpers/table_container.c:
+
+   CHANGES: snmpd: Get the table_container data from the right
+   handler when unregistering a table_container.
 
 2008-03-25 06:07  magfr
 
    * agent/agent_registry.c:
-     Remove spurious printf from unregister_mib_context
+
+   Remove spurious printf from unregister_mib_context
 
 2008-03-24 17:54  dts12
 
    * local/mib2c:
-     CHANGES: mib2c: BUG: 1874059,1737068: Handle MIB objects with
-     embedded hyphens
+
+   CHANGES: mib2c: BUG: 1874059,1737068: Handle MIB objects with
+   embedded hyphens
 
 2008-03-24 17:29  dts12
 
    * snmplib/asn1.c:
-     CHANGES: snmplib: BUG: 1866655: Handle parsing invalid OID
-     subidentifiers
+
+   CHANGES: snmplib: BUG: 1866655: Handle parsing invalid OID
+   subidentifiers
 
 2008-03-24 16:53  dts12
 
    * snmplib/asn1.c:
-     CHANGES: library: PATCH: 1921861: Avoid endless loop after
-     truncating 64bit int
+
+   CHANGES: library: PATCH: 1921861: Avoid endless loop after
+   truncating 64bit int
 
 2008-03-24 15:00  dts12
 
    * configure, configure.in:
-     CHANGES: build: BUG: 1823381: Valid MIB directory search path on
-     Windows
+
+   CHANGES: build: BUG: 1823381: Valid MIB directory search path on
+   Windows
+
+2008-03-22 08:42  magfr
+
+   * apps/snmptrapd.c:
+
+   Make it possible to build snmptrapd without embedded perl again.
 
 2008-03-21 17:55  hardaker
 
-   * agent/mibgroup/smux/smux.c, snmplib/snmpAAL5PVCDomain.c,
-     snmplib/snmpCallbackDomain.c, snmplib/snmpTCPDomain.c,
-     snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUnixDomain.c,
-     snmplib/winpipe.c:
-     NEWS: libsnmp: PATCH: 1895927: from jhum8111: change obsolete
-     recv/send to recvfrom/sendto
+   *  agent/mibgroup/smux/smux.c, snmplib/snmpAAL5PVCDomain.c,   
+      snmplib/snmpCallbackDomain.c, snmplib/snmpTCPDomain.c,   
+      snmplib/snmpTCPIPv6Domain.c, snmplib/snmpUnixDomain.c,   
+      snmplib/winpipe.c:
+
+   NEWS: libsnmp: PATCH: 1895927: from jhum8111: change obsolete
+   recv/send to recvfrom/sendto
 
 2008-03-21 17:49  hardaker
 
    * python/netsnmp/client_intf.c:
-     CHANGES: python: PATCH: 1862177: from wafflesouffle: made code
-     more windows/cygwin compiler friendl
+
+   CHANGES: python: PATCH: 1862177: from wafflesouffle: made code
+   more windows/cygwin compiler friendl
 
 2008-03-21 17:45  hardaker
 
    * python/netsnmp/client.py:
-     CHANGES: python: PATCH: 1877840: fix MIB label and indexing due
-     to slightly broken regexp
+
+   CHANGES: python: PATCH: 1877840: fix MIB label and indexing due
+   to slightly broken regexp
 
 2008-03-21 17:39  hardaker
 
    * perl/agent/Support/Support.pm:
-     CHANGES: perl: PATCH: 1920390: from wilmesj: fix registration of
-     tables with .0 as IIDs
+
+   CHANGES: perl: PATCH: 1920390: from wilmesj: fix registration of
+   tables with .0 as IIDs
 
 2008-03-21 17:32  hardaker
 
    * perl/agent/Support/Support.pm:
-     CHANGES: perl: PATCH: 1914645: from wilmesj: better end of mib
-     support
+
+   CHANGES: perl: PATCH: 1914645: from wilmesj: better end of mib
+   support
 
 2008-03-21 17:28  hardaker
 
    * perl/agent/agent.xs:
-     CHANGES: perl: PATCH: 1914643: from wilmesj: fix issues with
-     embedded perl returning 0 being reclassified as a wrong data type
-     when an int works.
+
+   CHANGES: perl: PATCH: 1914643: from wilmesj: fix issues with
+   embedded perl returning 0 being reclassified as a wrong data type
+   when an int works.
 
 2008-03-21 17:22  hardaker
 
    * local/Makefile.in:
-     CHANGES: mib2c: PATCH 1914398: from wilmesj: install
-     mib2c.perl.conf
+
+   CHANGES: mib2c: PATCH 1914398: from wilmesj: install
+   mib2c.perl.conf
 
 2008-03-21 17:02  hardaker
 
    * perl/agent/Support/Support.pm:
-     CHANGES: perl: PATCH: 1914393: from wilmesj: registerAgent can
-     now be run multiple times
+
+   CHANGES: perl: PATCH: 1914393: from wilmesj: registerAgent can
+   now be run multiple times
 
 2008-03-21 16:35  hardaker
 
    * agent/helpers/table_iterator.c:
-     NEWS: snmpd: PATCH: 1909813: fix table_iterator hint to get_first
-     when SORTED flag is set
+
+   NEWS: snmpd: PATCH: 1909813: fix table_iterator hint to get_first
+   when SORTED flag is set
+
+2008-03-21 16:24  hardaker
+
+   * agent/snmp_perl.c, apps/snmptrapd.c:
+
+   NEWS: snmptrapd: PATCH: 1908288: from anedel: If snmptrapd -f
+   interrupted with ctrl-C run perl END block
+
+2008-03-21 16:16  hardaker
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   CHANGES: PATCH: 1902113: from jsafranek: fix error log in
+   inetNetToMediatable
+
+2008-03-21 16:12  hardaker
+
+   *  agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c,   
+      agent/mibgroup/util_funcs.c:
+
+   CHANGES: PATCH: 1902105: from jsafranek: hide and improve debug
+   log messages created by patch 1705594
+
+2008-03-07 15:42  dts12
+
+   *  agent/mibgroup/host/hr_storage.h,   
+      agent/mibgroup/host/hrh_filesys.c,   
+      agent/mibgroup/host/hrh_filesys.h:
+
+   HAL-based implementation of the hrFSTable.
+
+2008-03-07 15:40  dts12
+
+   *  agent/mibgroup/hardware/fsys, agent/mibgroup/hardware/fsys.h,   
+      agent/mibgroup/hardware/fsys/fsys_getfsstats.c,   
+      agent/mibgroup/hardware/fsys/fsys_mntent.c,   
+      agent/mibgroup/hardware/fsys/hw_fsys.c,   
+      agent/mibgroup/hardware/fsys/hw_fsys.h,   
+      agent/mibgroup/hardware/fsys/mnttypes.h,   
+      agent/mibgroup/hardware/fsys/mounts.h:
+
+   Initial HAL implementation of FileSystem information
+
+2008-03-07 15:35  dts12
+
+   * configure, configure.in, include/net-snmp/net-snmp-config.h.in:
+
+   Check for getvfsstat()
+
+2008-03-07 15:34  dts12
+
+   * configure, configure.in:
+
+   CHANGES: build: BUG: 1823381: Use a sensible default MIBDIR path
+   on Cygwin/MinGW
+   (Should this be applied to other branches? If so, which?)
 
 2008-02-27 22:12  hardaker
 
    * agent/mibgroup/host/hr_swinst.c:
-     Fix C++ style comment
+
+   Fix C++ style comment
+
+2008-02-27 07:49  magfr
+
+   * agent/mibgroup/host/hr_disk.c:
+
+   The LVM disk patch introduced a memory leak. This removes the
+   leak.
+
+2008-02-26 23:27  hardaker
+
+   * dist/makerelease.xml:
+
+   make the script more hierarchial/structured
+
+2008-02-26 21:36  nba
+
+   * apps/snmptranslate.c:
+
+   CHANGES: Initalize log subsystem
+
+2008-02-26 21:34  nba
+
+   * snmplib/parse.c:
+
+   CHANGES: Fix for refs to OBJECT-GROUP in another MIB
+
+2008-02-26 21:23  nba
+
+   *  mibs/DISMAN-EVENT-MIB.txt, mibs/DISMAN-EXPRESSION-MIB.txt,   
+      mibs/IP-FORWARD-MIB.txt, mibs/IP-MIB.txt,   
+      mibs/IPV6-FLOW-LABEL-MIB.txt, mibs/NOTIFICATION-LOG-MIB.txt,   
+      mibs/SNMP-USM-AES-MIB.txt, mibs/SNMP-USM-DH-OBJECTS-MIB.txt,   
+      mibs/TRANSPORT-ADDRESS-MIB.txt, mibs/TUNNEL-MIB.txt:
+
+   Update to autoextracted mib files (blank line chanmges)
+
+2008-02-26 20:46  nba
+
+   * mibs/Makefile.mib, mibs/ianalist, mibs/rfclist:
+
+   Update for currently released RFC MIBS
+
+2008-02-26 20:45  nba
+
+   *  mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt,   
+      mibs/IANA-LANGUAGE-MIB.txt, mibs/IANA-RTPROTO-MIB.txt,   
+      mibs/IANAifType-MIB.txt:
+
+   Update IANA MIBS to current version
+
+2008-02-25 22:21  tanders
+
+   * agent/mibgroup/util_funcs.h:
+
+   add missing #include<pthread.h> for pthread_mutex_t
+
+2008-02-25 22:06  tanders
+
+   * agent/mibgroup/Rmon/alarmTable.c:
+
+   a better portability fix
+
+2008-02-23 00:59  hardaker
+
+   *  agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c,   
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_constants.h,
+        
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c,
+         agent/mibgroup/util_funcs.c, agent/mibgroup/util_funcs.h,   
+      include/net-snmp/data_access/ipaddress.h:
+
+   NEWS: snmpd: PATCH: 1705594: from c_varun: Fix various aspects of
+   linux ipAddressPrefixTable reporting.
 
 2008-02-22 23:52  hardaker
 
    * agent/mibgroup/if-mib/data_access/interface.c:
-     CHANGES: snmpd: PATCH: 1896118: patch from jsafranek: fix ifTable
-     32bit counters on linux
+
+   CHANGES: snmpd: PATCH: 1896118: patch from jsafranek: fix ifTable
+   32bit counters on linux
+
+2008-02-22 23:49  hardaker
+
+   * agent/mibgroup/ip-mib/data_access/ipv6scopezone_linux.c:
+
+   patch from jsafranek: Create ipv6ScopeZoneEntry only for
+   link-local addresses and only once per interface.
 
 2008-02-22 23:44  hardaker
 
    * snmplib/parse.c:
-     CHANGES: libsnmp: PATCH: 1898204: from Mike Wescott: fix bug
-     1898198 in parse.c to avoid a segfault when parsing broken mibs.
+
+   CHANGES: libsnmp: PATCH: 1898204: from Mike Wescott: fix bug
+   1898198 in parse.c to avoid a segfault when parsing broken mibs.
 
 2008-02-18 12:11  dts12
 
    * man/mib_api.3.def:
-     Clarify the need to reset buffer length when calling 'read_objid'
-     repeatedly.
+
+   Clarify the need to reset buffer length when calling 'read_objid'
+   repeatedly.
+
+2008-02-18 10:32  tanders
+
+   * agent/mibgroup/Rmon/alarmTable.c:
+
+   portability fix
+
+2008-02-18 07:39  tanders
+
+   * agent/mibgroup/Rmon/alarmTable.c:
+
+   make sure that netsnmp_iquery_user_session et al. are properly
+   declared
 
 2008-02-17 18:01  tanders
 
    * agent/mibgroup/mibII/var_route.c:
-     fix typo in variable name
+
+   fix typo in variable name
 
 2008-02-17 08:38  tanders
 
    * agent/agent_registry.c:
-     portability fix
+
+   portability fix
+
+2008-02-15 17:45  hardaker
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   lowered failure message to insert to debug; removed CVS ID from
+   top of line
+
+2008-02-15 17:39  hardaker
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   don't insert empty entries
+
+2008-02-15 17:31  hardaker
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   patch from jsafrane on irc: make ipv6 entries work on 64 bit
+   machines
+
+2008-02-15 16:24  hardaker
+
+   * dist/makerelease.xml:
+
+   pass 1 at a new makerelease script; currently just converted code
+   mostly
+
+2008-02-15 16:22  hardaker
+
+   * agent/mibgroup/host/hr_disk.c:
+
+   remove linux checks
+
+2008-02-15 15:45  hardaker
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   remove references to RDA_RTA
+
+2008-02-15 15:37  hardaker
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   don't compile in the ipv6 code if NDA_RTA isn't defined
 
 2008-02-15 13:00  tanders
 
    * agent/mibgroup/host/hr_swinst.c:
-     portability fix
+
+   portability fix
+
+2008-02-15 06:19  hardaker
+
+   * agent/mibgroup/ip-mib/data_access/arp_linux.c:
+
+   minor bug update from c_varun
+
+2008-02-15 05:13  hardaker
+
+   *  agent/mibgroup/ip-mib/data_access/arp_linux.c,   
+      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c,
+         configure, configure.in:
+
+   NEWS: snmpd: PATCH: 1704105: from c_varun: Add IPv6 support to
+   the inetNetToMediaTable for linux
+
+2008-02-15 05:12  hardaker
+
+   * agent/mibgroup/ip-mib.h:
+
+   require new ipv6ScopeZoneIndexTable table
+
+2008-02-15 05:00  hardaker
+
+   *  agent/mibgroup/ip-mib/data_access/ipv6scopezone.h,   
+      agent/mibgroup/ip-mib/data_access/ipv6scopezone_common.c,   
+      agent/mibgroup/ip-mib/data_access/ipv6scopezone_linux.c,   
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable,   
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable.h,   
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.h,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_data_access.h,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_enums.h,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.h,
+        
+      agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_oids.h,
+         include/net-snmp/data_access/scopezone.h:
+
+   NEWS: snmpd: PATCH: 1715405: from c_varun: Implement the
+   ipv6ScopeZoneIndexTable on linux
 
 2008-02-15 04:39  hardaker
 
    * agent/snmpd.c:
-     CHANGES: snmpd: PATCH: 1716548: from myamato: Fix help output so
-     no space is printed between -D and arguments.
+
+   CHANGES: snmpd: PATCH: 1716548: from myamato: Fix help output so
+   no space is printed between -D and arguments.
+
+2008-02-15 04:27  hardaker
+
+   *  agent/mibgroup/Rmon.h, agent/mibgroup/Rmon/alarmTable.c,   
+      agent/mibgroup/Rmon/alarmTable.h:
+
+   NEWS: snmpd: PATCH: 1723611: from Emi Yanagi: New implementation
+   of the rmon alarmTable
 
 2008-02-15 03:44  hardaker
 
    * agent/agent_registry.c:
-     NEWS: snmpd: PATCH: 1893468: from gkoenig: fixed registration of
-     OIDs with ranges
+
+   NEWS: snmpd: PATCH: 1893468: from gkoenig: fixed registration of
+   OIDs with ranges
 
 2008-02-14 21:40  tanders
 
    * agent/mibgroup/mibII/var_route.c:
-     fix typo in variable declaration (unbreaks the build on a few
-     systems)
+
+   fix typo in variable declaration (unbreaks the build on a few
+   systems)
 
 2008-02-14 00:29  hardaker
 
    * COPYING:
-     year update for sparta
+
+   year update for sparta
 
 2008-02-13 23:37  magfr
 
    * include/net-snmp/library/container.h, snmplib/container.c:
-     NEWS: snmplib: Change CONTAINER_INSERT to not do partial inserts
-     in containers with multiple indices when one insert fails.
+
+   NEWS: snmplib: Change CONTAINER_INSERT to not do partial inserts
+   in containers with multiple indices when one insert fails.
 
 2008-02-13 23:11  hardaker
 
    * snmplib/snmpusm.c:
-     Fixed the createUser line to specify the -e flag (responding to a
-     complaint about it be missing)
+
+   Fixed the createUser line to specify the -e flag (responding to a
+   complaint about it be missing)
+
+2008-02-13 17:42  hardaker
+
+   * agent/mibgroup/ucd-snmp/diskio.c:
+
+   NEWS: snmpd: PATCH: 1779558: from brumbs: Implement the
+   diskIOLA1,5,10 objections in the diskio-mib under linux
 
 2008-02-13 17:15  hardaker
 
    * agent/mibgroup/host/hr_swinst.c:
-     CHANGES: snmpd: PATCH: 1783733: Put the package version number
-     into the hrSWInst table for solaris.
+
+   CHANGES: snmpd: PATCH: 1783733: Put the package version number
+   into the hrSWInst table for solaris.
+
+2008-02-13 16:58  hardaker
+
+   * agent/mibgroup/if-mib/data_access/interface_linux.c:
+
+   CHANGES: snmpd: PATCH: 1783423: from jsafranek: return a correct
+   ipv6InterfaceIdentifier of loopback on linux
 
 2008-02-13 16:12  hardaker
 
-   * agent/mibgroup/mibII/at.c, agent/mibgroup/mibII/ipAddr.c,
-     agent/mibgroup/mibII/udpTable.c,
-     agent/mibgroup/mibII/var_route.c:
-     CHANGES: snmpd: PATCH: 1784747: from jsafranek: Fix long usage
-     for ip adresses on 64 bit systems in various MIB-II tables.
+   *  agent/mibgroup/mibII/at.c, agent/mibgroup/mibII/ipAddr.c,   
+      agent/mibgroup/mibII/udpTable.c,   
+      agent/mibgroup/mibII/var_route.c:
+
+   CHANGES: snmpd: PATCH: 1784747: from jsafranek: Fix long usage
+   for ip adresses on 64 bit systems in various MIB-II tables.
+
+2008-02-13 16:07  hardaker
+
+   *  agent/agent_trap.c, agent/mibgroup/agentx/master_admin.c,   
+      agent/mibgroup/agentx/protocol.c,   
+      include/net-snmp/agent/agent_trap.h:
+
+   NEWS: snmpd: PATCH: 1806501: from jmagder: Add a snmp_v3trap
+   function for sending traps with a snmpv3 context
 
 2008-02-13 16:02  hardaker
 
-   * agent/mibgroup/ip-mib/data_access/ipaddress_linux.c,
-     include/net-snmp/library/tools.h:
-     CHANGES: snmpd: PATCH: 1826102: from jsafranek: support longer
-     interface names on linux
+   *  agent/mibgroup/ip-mib/data_access/ipaddress_linux.c,   
+      include/net-snmp/library/tools.h:
 
-2008-02-13 09:22  tanders
-
-   * configure:
-     revert to autoconf 2.59 per existing policy
+   CHANGES: snmpd: PATCH: 1826102: from jsafranek: support longer
+   interface names on linux
 
 2008-02-12 23:23  hardaker
 
    * snmplib/mib.c:
-     CHANGES: libsnmp: PATCH: 1807489: fix ignoring of display hints.
+
+   CHANGES: libsnmp: PATCH: 1807489: fix ignoring of display hints.
+
+2008-02-12 23:19  hardaker
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c:
+
+   
+
+2008-02-12 23:16  hardaker
+
+   * agent/mibgroup/mibII/icmp.c:
+
+   CHANGES: snmpd: patch 1823465 from jsafranek: fix icmp cache
+   registration
+
+2008-02-12 22:16  hardaker
+
+   *  README.agent-mibs,   
+      agent/mibgroup/ip-mib/data_access/scalars_linux.c,   
+      agent/mibgroup/ip-mib/ip_scalars.c:
+
+   NEWS: snmpd: PATCH: 1828602: from tgohad: Support ipDefaultTTL
+   and ipForwarding SETs on linux
 
 2008-02-12 22:09  hardaker
 
    * agent/mibgroup/ucd-snmp/diskio.c:
-     CHANGES: snmpd: PATCH: 1866823: from jsafranek: truncate 32 bit
-     counter values on 64 bit machines to avoid bogus warnings.
+
+   CHANGES: snmpd: PATCH: 1866823: from jsafranek: truncate 32 bit
+   counter values on 64 bit machines to avoid bogus warnings.
 
 2008-02-12 19:05  hardaker
 
-   * agent/mibgroup/if-mib/data_access/interface.c,
-     agent/mibgroup/if-mib/ifTable/ifTable_data_access.c:
-     CHANGES: snmpd: PATCH: 1849903: from jsafranek: do not spam log
-     with asserts when XEN is used
+   *  agent/mibgroup/if-mib/data_access/interface.c,   
+      agent/mibgroup/if-mib/ifTable/ifTable_data_access.c:
+
+   CHANGES: snmpd: PATCH: 1849903: from jsafranek: do not spam log
+   with asserts when XEN is used
 
 2008-02-12 18:50  hardaker
 
    * snmplib/callback.c:
-     CHANGES: libsnmp: PATCH: 1875022: from sem_prg: improve callback
-     locking mechanisms
+
+   CHANGES: libsnmp: PATCH: 1875022: from sem_prg: improve callback
+   locking mechanisms
 
 2008-02-12 17:40  hardaker
 
    * agent/mibgroup/ucd-snmp/memory_freebsd2.c:
-     CHANGES: snmpd: PATCH: 1879261: from amesbury: Add in inactive
-     memory to the cached report for freebsd
 
-2008-02-12 15:22  hardaker
+   CHANGES: snmpd: PATCH: 1879261: from amesbury: Add in inactive
+   memory to the cached report for freebsd
+
+2008-02-12 15:32  hardaker
+
+   * include/net-snmp/library/snmpv3.h, snmplib/snmpv3.c:
+
+   NEWS: libsnmp: Patch: 1882069: from nschrenk: Add a exactEngineID
+   token for specifying an exact SNMPv3 engineID to use
+
+2008-02-12 15:18  hardaker
 
    * agent/mibgroup/host/hr_disk.c:
-     Change snprintf print lengths to len-1 to leave 0 in final
-     position for printing
+
+   minor cleanups from reviewing parts of the code
+
+2008-02-12 15:17  hardaker
+
+   * agent/mibgroup/host/hr_disk.c:
+
+   NEWS: snmpd: PATCH: 1882621: from jsafranek: Add LVM support to
+   the partition table
 
 2008-02-11 22:26  hardaker
 
    * configure, configure.in:
-     fix quoted strings in help output
+
+   fix quoted strings in help output
 
 2008-01-30 17:29  hardaker
 
    * configure, configure.in:
-     added vacm_conf to existing configure files (for trapd too)
+
+   added vacm_conf to existing configure files (for trapd too)
 
 2008-01-20 07:55  tanders
 
    * configure, configure.in:
-     CHANGES: build: BUG: 1872266: PERLCC check fails for CC with
-     options
+
+   CHANGES: build: BUG: 1872266: PERLCC check fails for CC with
+   options
 
 2008-01-17 01:13  hardaker
 
    * agent/mibgroup/default_modules.h:
-     fix default mibs to include vacm_conf too
+
+   fix default mibs to include vacm_conf too
 
 2008-01-17 00:09  magfr
 
    * agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c:
-     CHANGES: snmpd: PATCH: 1826088: from Jan Safranek: Use the right
-     interface t read the netmask
+
+   CHANGES: snmpd: PATCH: 1826088: from Jan Safranek: Use the right
+   interface t read the netmask
 
 2008-01-16 21:54  magfr
 
    * agent/mibgroup/ucd-snmp/disk.c:
-     CHANGES: Handle device names with embedded spaces in
-     UCD-SNMP-MIB::dskDevice
+
+   CHANGES: Handle device names with embedded spaces in
+   UCD-SNMP-MIB::dskDevice
 
 2008-01-16 00:47  magfr
 
    * agent/mibgroup/ucd-snmp/disk.c:
-     CHANGES: snmpd: PATCH: 1828839: from jsafranek to provide better
-     handling of disks mounted on paths with embedded spaces
+
+   CHANGES: snmpd: PATCH: 1828839: from jsafranek to provide better
+   handling of disks mounted on paths with embedded spaces
 
 2008-01-15 16:47  hardaker
 
    * snmplib/default_store.c:
-     coverity bug 205: double check pointer that should never be null
+
+   coverity bug 205: double check pointer that should never be null
+
+2008-01-14 23:55  magfr
+
+   *  README.agent-mibs, agent/mibgroup/mibII/snmp_mib.c,   
+      agent/mibgroup/mibII/snmp_mib.h,   
+      agent/mibgroup/mibII/system_mib.c,   
+      agent/mibgroup/mibII/system_mib.h,   
+      agent/mibgroup/mibII/updates.c, agent/mibgroup/mibII/updates.h:
+
+   Update the snmp and system mibs to be handler based
+
+2008-01-13 00:00  magfr
+
+   *  Makefile.in, configure, configure.in, dist/RELEASE-INSTRUCTIONS,  
+       doxygen.conf, local/Version-Munge.pl, sedscript.in,   
+      snmplib/snmp_version.c:
+
+   Lessen the number of places that need to be changed in order to
+   do a release.
+   Change to use the configure version number as the package version
+   number.
 
 2008-01-09 21:58  magfr
 
    * snmplib/container_binary_array.c:
-     Delete unused static functions
+
+   Delete unused static functions
 
 2008-01-06 13:01  magfr
 
    * snmplib/snmp_client.c:
-     Make error_string private and readonly
+
+   Make error_string private and readonly
 
 2007-12-22 19:22  dts12
 
    * perl/SNMP/SNMP.xs:
-     CHANGES: perl: BUG: 1826174: Check for buffer overflow when
-     printing values.
+
+   CHANGES: perl: BUG: 1826174: Check for buffer overflow when
+   printing values.
 
 2007-12-21 23:19  dts12
 
    * perl/SNMP/SNMP.pm:
-     CHANGES: perl: BUG: 1747733: More robust handling of undefined
-     values.
-     Patch supplied by Matti Linnanvuori
+
+   CHANGES: perl: BUG: 1747733: More robust handling of undefined
+   values.
+   Patch supplied by Matti Linnanvuori
 
 2007-12-21 21:33  dts12
 
    * agent/mibgroup/host/hr_filesys.c, agent/mibgroup/ucd-snmp/disk.c:
-     CHANGES: snmpd: BUG: 1748206: Protect against failures to open
-     /etc/mtab (or equiv)
+
+   CHANGES: snmpd: BUG: 1748206: Protect against failures to open
+   /etc/mtab (or equiv)
 
 2007-12-21 18:42  dts12
 
    * net-snmp-config.in:
-     Bring order of agent library linking into line with agent
-     Makefile.
-     Problem reported by Steve McCarthy.
-     Qn: Should 5.2.x and 5.3.x also use the same order?
-     (for both agent Makefile and net-snmp-config)
+
+   Bring order of agent library linking into line with agent
+   Makefile.
+   Problem reported by Steve McCarthy.
+   Qn: Should 5.2.x and 5.3.x also use the same order?
+   (for both agent Makefile and net-snmp-config)
 
 2007-12-21 13:11  dts12
 
    * apps/snmptrapd_log.c:
-     CHANGES: build: BUG: 1802833: Ensure snmptrapd builds with
-     --disable-snmpv1/2c
+
+   CHANGES: build: BUG: 1802833: Ensure snmptrapd builds with
+   --disable-snmpv1/2c
 
 2007-12-20 16:26  dts12
 
    * perl/SNMP/SNMP.xs:
-     CHANGES: perl: BUG: 1834539: Consistent handling of OID parsing.
-     Applies patch #1834983, provided by Dmitry Karasik
+
+   CHANGES: perl: BUG: 1834539: Consistent handling of OID parsing.
+   Applies patch #1834983, provided by Dmitry Karasik
+
+2007-12-20 16:05  dts12
+
+   * snmplib/snmp_client.c:
+
+   More internal query debugging output.
 
 2007-12-20 14:20  dts12
 
    * agent/helpers/watcher.c:
-     CHANGES: snmpd: BUG: 1822360: Fix spinlock helper error handling.
+
+   CHANGES: snmpd: BUG: 1822360: Fix spinlock helper error handling.
 
 2007-12-20 14:18  dts12
 
    * snmplib/asn1.c:
-     CHANGES: snmplib: BUG: 1795840: Signed 32-bit truncation logged
-     as debug message rather then error.
+
+   CHANGES: snmplib: BUG: 1795840: Signed 32-bit truncation logged
+   as debug message rather then error.
 
 2007-12-20 14:14  dts12
 
    * agent/mibgroup/host/hr_filesys.c:
-     CHANGES: snmpd: BUG: 1792890: include CIFS mounts when skipping
-     remote filesystems
+
+   CHANGES: snmpd: BUG: 1792890: include CIFS mounts when skipping
+   remote filesystems
 
 2007-12-20 14:12  dts12
 
    * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c:
-     CHANGES: snmpd: BUG: 1771221: Retain ifLastChange information on
-     data reload.
+
+   CHANGES: snmpd: BUG: 1771221: Retain ifLastChange information on
+   data reload.
 
 2007-12-20 14:08  dts12
 
    * agent/mibgroup/notification-log-mib/notification_log.c:
-     CHANGES: snmpd: BUG: 1758212: Handling missing variable types
-     (IpAddress,Counter,Opaque)
+
+   CHANGES: snmpd: BUG: 1758212: Handling missing variable types
+   (IpAddress,Counter,Opaque)
 
 2007-12-19 22:39  magfr
 
-   * snmplib/container.c, snmplib/container_iterator.c,
-     snmplib/container_null.c, snmplib/data_list.c,
-     snmplib/read_config.c:
-     Correct doxygen warnings
+   *  snmplib/container.c, snmplib/container_iterator.c,   
+      snmplib/container_null.c, snmplib/data_list.c,   
+      snmplib/read_config.c:
+
+   Correct doxygen warnings
 
 2007-12-19 22:31  magfr
 
-   * testing/tests/Sv3vacmconfig, 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/T022snmpv3getMD5,
-     testing/tests/T023snmpv3getMD5AES,
-     testing/tests/T023snmpv3getMD5DES,
-     testing/tests/T025snmpv3getSHADES,
-     testing/tests/T030snmpv3usercreation,
-     testing/tests/T051snmpv2ctrap, testing/tests/T052snmpv2cinform,
-     testing/tests/T058agentauthtrap,
-     testing/tests/T059trapdtraphandle, testing/tests/T060trapdperl,
-     testing/tests/T061agentperl, testing/tests/T065agentextend,
-     testing/tests/T100agenthup, testing/tests/T115agentxperl,
-     testing/tests/T120proxyget, testing/tests/T121proxyset,
-     testing/tests/T122proxysetfail, testing/tests/T130snmpv1vacmget,
-     testing/tests/T131snmpv2cvacmget,
-     testing/tests/T140snmpv1vacmgetfail,
-     testing/tests/T141snmpv2cvacmgetfail,
-     testing/tests/T150solarishostcpu,
-     testing/tests/T151solarishostdisk, testing/tests/T152hostuptime,
-     testing/tests/T153solarisswap, testing/tests/T160snmpnetstat,
-     testing/tests/T200snmpv2cwalkall:
-     Use NETSNMP_-prefixed symbols when deciding what tests to run as
-     the compat symbols aren't defined.
+   *  testing/tests/Sv3vacmconfig, 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/T022snmpv3getMD5,  
+       testing/tests/T023snmpv3getMD5AES,   
+      testing/tests/T023snmpv3getMD5DES,   
+      testing/tests/T025snmpv3getSHADES,   
+      testing/tests/T030snmpv3usercreation,   
+      testing/tests/T051snmpv2ctrap, testing/tests/T052snmpv2cinform,   
+      testing/tests/T058agentauthtrap,   
+      testing/tests/T059trapdtraphandle, testing/tests/T060trapdperl,   
+      testing/tests/T061agentperl, testing/tests/T065agentextend,   
+      testing/tests/T100agenthup, testing/tests/T115agentxperl,   
+      testing/tests/T120proxyget, testing/tests/T121proxyset,   
+      testing/tests/T122proxysetfail, testing/tests/T130snmpv1vacmget,  
+       testing/tests/T131snmpv2cvacmget,   
+      testing/tests/T140snmpv1vacmgetfail,   
+      testing/tests/T141snmpv2cvacmgetfail,   
+      testing/tests/T150solarishostcpu,   
+      testing/tests/T151solarishostdisk, testing/tests/T152hostuptime,  
+       testing/tests/T153solarisswap, testing/tests/T160snmpnetstat,   
+      testing/tests/T200snmpv2cwalkall:
+
+   Use NETSNMP_-prefixed symbols when deciding what tests to run as
+   the compat symbols aren't defined.
 
 2007-12-19 22:06  magfr
 
    * snmplib/snmp_api.c:
-     BUG 1831568: strdup might fail and return NULL - take care of it
-     in this case at least.
+
+   BUG 1831568: strdup might fail and return NULL - take care of it
+   in this case at least.
 
 2007-12-19 21:49  magfr
 
    * agent/mibgroup/utilities/override.c, snmplib/snmp_api.c:
-     BUG 1824883: Remove memory leak
+
+   BUG 1824883: Remove memory leak
 
 2007-12-19 20:46  magfr
 
    * agent/helpers/watcher.c:
-     CHANGES: BUG: 1851047: Do not try to do more handling of a value
-     once it is found to be corrupt by the watcher helper, thus
-     avoiding code that counts on getting the right type. This bug was
-     found by Charlie Miller, Independent Security Evaluators.
+
+   CHANGES: BUG: 1851047: Do not try to do more handling of a value
+   once it is found to be corrupt by the watcher helper, thus
+   avoiding code that counts on getting the right type. This bug was
+   found by Charlie Miller, Independent Security Evaluators.
 
 2007-11-27 09:56  dts12
 
    * man/snmptrapd.8.def:
-     Clarify use of the -A (log append) option.
+
+   Clarify use of the -A (log append) option.
 
 2007-11-22 15:42  rstory
 
    * agent/mibgroup/agent/nsCache.c, agent/mibgroup/agent/nsDebug.c:
-     check request, not requests. reported by ulim on irc
 
-2007-11-22 15:16  rstory
+   check request, not requests. reported by ulim on irc
+
+2007-11-22 15:17  rstory
 
    * agent/mibgroup/agent/nsLogging.c:
-     check request, not requests. reported by ulim on irc
+
+   check request, not requests. reported by ulim on irc
 
 2007-11-19 21:34  tanders
 
    * agent/mibgroup/kernel_sunos5.c:
-     CHANGES: Solaris: PATCH: 1834699: from apersson: Fix 1833294:
-     DLPI problems on Solaris 2.6
+
+   CHANGES: Solaris: PATCH: 1834699: from apersson: Fix 1833294:
+   DLPI problems on Solaris 2.6
+
+2007-11-17 16:26  magfr
+
+   *  agent/helpers/instance.c, configure, configure.in,   
+      include/net-snmp/agent/instance.h,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: snmpd: Use the worker helpers from the
+   register_*_instance helpers and schedule the instance helpers for
+   removal in 5.6
+
+2007-11-14 12:21  dts12
+
+   *  agent/mibgroup/hardware/sensors/lmsensors_v3.c,   
+      agent/mibgroup/hardware/sensors/lmsensors_v3.h:
+
+   Support v3 lmsensors API.
+
+2007-11-14 12:19  dts12
+
+   * agent/mibgroup/hardware/sensors/hw_sensors.c:
+
+   Fix misleading debug output message.
+
+2007-11-13 13:59  dts12
+
+   *  agent/mibgroup/hardware/sensors,   
+      agent/mibgroup/hardware/sensors.h,   
+      agent/mibgroup/hardware/sensors/dummy_sensors.c,   
+      agent/mibgroup/hardware/sensors/dummy_sensors.h,   
+      agent/mibgroup/hardware/sensors/hw_sensors.c,   
+      agent/mibgroup/hardware/sensors/hw_sensors.h,   
+      agent/mibgroup/hardware/sensors/kstat_sensors.c,   
+      agent/mibgroup/hardware/sensors/kstat_sensors.h,   
+      agent/mibgroup/hardware/sensors/lmsensors_v2.c,   
+      agent/mibgroup/hardware/sensors/lmsensors_v2.h,   
+      agent/mibgroup/hardware/sensors/picld_sensors.c,   
+      agent/mibgroup/hardware/sensors/picld_sensors.h,   
+      agent/mibgroup/ucd-snmp/lmsensorsMib.c,   
+      agent/mibgroup/ucd-snmp/lmsensorsMib.h, configure, configure.in,  
+       include/net-snmp/agent/hardware/sensors.h:
+
+   Preliminary re-working of the LM-SENSORS-MIB, to separate out
+   the sensor hardware processing from the MIB tables themselves.
 
 2007-11-08 23:17  tanders
 
-   * agent/mibgroup/if-mib/data_access/interface_solaris2.c,
-     agent/mibgroup/kernel_sunos5.c, agent/mibgroup/kernel_sunos5.h,
-     agent/mibgroup/mibII/interfaces.c:
-     CHANGES: Solaris: PATCH: 1824196: {ifOperStatus,ipAdEntIfIndex}
-     reported incorrectly
-     Patch supplied by Anders Persson. Fixes Bugs 1822275 and 1819189.
+   *  agent/mibgroup/if-mib/data_access/interface_solaris2.c,   
+      agent/mibgroup/kernel_sunos5.c, agent/mibgroup/kernel_sunos5.h,   
+      agent/mibgroup/mibII/interfaces.c:
+
+   CHANGES: Solaris: PATCH: 1824196: {ifOperStatus,ipAdEntIfIndex}
+   reported incorrectly
+   Patch supplied by Anders Persson. Fixes Bugs 1822275 and 1819189.
+
+2007-10-26 21:22  magfr
+
+   *  agent/helpers/watcher.c, agent/mibgroup/examples/watched.c,   
+      include/net-snmp/agent/watcher.h:
+
+   NEWS: snmpd: Added support for a user provided length variable
+   and C string values to the watcher helper.
+
+2007-10-16 22:39  magfr
+
+   *  agent/agent_trap.c, agent/helpers/debug_handler.c,   
+      agent/helpers/table_iterator.c, agent/helpers/table_tdata.c,   
+      agent/mibgroup/agentx/subagent.c,   
+      agent/mibgroup/disman/event/mteEvent.c,   
+      agent/mibgroup/disman/event/mteEventNotificationTable.c,   
+      agent/mibgroup/disman/event/mteEventSetTable.c,   
+      agent/mibgroup/disman/event/mteEventTable.c,   
+      agent/mibgroup/disman/event/mteTrigger.c,   
+      agent/mibgroup/disman/expr/expErrorTable.c,   
+      agent/mibgroup/disman/expr/expExpression.c,   
+      agent/mibgroup/disman/expr/expExpressionTable.c,   
+      agent/mibgroup/disman/expr/expObject.c,   
+      agent/mibgroup/disman/expr/expObjectTable.c,   
+      agent/mibgroup/disman/expr/expValueTable.c,   
+      agent/mibgroup/disman/schedule/schedCore.c,   
+      agent/mibgroup/host/hr_storage.c,   
+      agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/ip-forward-mib/data_access/route_linux.c,   
+      agent/mibgroup/ip-mib/data_access/systemstats_linux.c,   
+      agent/mibgroup/notification/snmpNotifyTable.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c,   
+      apps/snmptrapd_handlers.c, snmplib/default_store.c,   
+      snmplib/snmpSTDDomain.c, snmplib/snmpUDPDomain.c,   
+      snmplib/snmp_client.c:
+
+   Use %p to print pointers. Do not use %p to print numbers.
+
+2007-10-16 07:31  magfr
+
+   * snmplib/snmp_api.c:
+
+   Make the library buildable as C again.
 
 2007-10-16 07:17  magfr
 
-   * agent/helpers/instance.c, agent/helpers/scalar.c,
-     agent/helpers/watcher.c, agent/mibgroup/examples/example.c,
-     agent/mibgroup/smux/smux.c:
-     CHANGES: misc: avoid calling debug macros with too many
-     arguments.
+   *  agent/helpers/instance.c, agent/helpers/scalar.c,   
+      agent/helpers/watcher.c, agent/mibgroup/examples/example.c,   
+      agent/mibgroup/smux/smux.c:
+
+   CHANGES: misc: avoid calling debug macros with too many
+   arguments.
 
 2007-10-16 06:18  magfr
 
-   * snmplib/snmp_service.c, snmplib/snmp_transport.c:
-     Make the library buildable as C++ again.
+   *  snmplib/snmp_api.c, snmplib/snmp_service.c,   
+      snmplib/snmp_transport.c:
+
+   Make the library buildable as C++ again.
+
+2007-10-15 20:52  rstory
+
+   *  include/net-snmp/library/container_binary_array.h,   
+      snmplib/dir_utils.c:
+
+   declare netsnmp_binary_array_options_set; include header for it
+   as needed
 
 2007-10-15 20:39  magfr
 
    * agent/mibgroup/disman/expr/expValueTable.c:
-     Convert an infinite loop to a finite one.
-     Remove an unused variable.
+
+   Convert an infinite loop to a finite one.
+   Remove an unused variable.
 
 2007-10-14 22:10  magfr
 
-   * agent/mibgroup/ip-mib/data_access/ipaddress_common.c,
-     agent/mibgroup/ip-mib/data_access/scalars_linux.c,
-     agent/mibgroup/smux/smux.c,
-     agent/mibgroup/tcp-mib/data_access/tcpConn_common.c:
-     CHANGES: misc: Avoid calling debug macros with too few arguments.
+   *  agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/ip-mib/data_access/scalars_linux.c,   
+      agent/mibgroup/smux/smux.c,   
+      agent/mibgroup/tcp-mib/data_access/tcpConn_common.c:
+
+   CHANGES: misc: Avoid calling debug macros with too few arguments.
 
 2007-10-14 20:51  tanders
 
    * snmplib/read_config.c:
-     CHANGES: snmplib: PATCH: 1811469: read_config_files_in_path()
-     reads past malloc'd buffer
+
+   CHANGES: snmplib: PATCH: 1811469: read_config_files_in_path()
+   reads past malloc'd buffer
 
 2007-10-14 20:41  tanders
 
    * perl/SNMP/SNMP.xs:
-     CHANGES: perl: PATCH: 1811463: perl async callback coredump
-     CHANGES: perl: BUG: 1606062: perl bulkwalk (async) coredump
+
+   CHANGES: perl: PATCH: 1811463: perl async callback coredump
+   CHANGES: perl: BUG: 1606062: perl bulkwalk (async) coredump
 
 2007-10-14 19:07  tanders
 
    * snmplib/snmp_logging.c:
-     CHANGES: snmplib: PATCH: 1806336: fix -LS option parsing
+
+   CHANGES: snmplib: PATCH: 1806336: fix -LS option parsing
 
 2007-10-14 12:12  tanders
 
    * agent/mibgroup/mibII/tcpTable.c:
-     fix comment
+
+   fix comment
 
 2007-10-13 23:28  tanders
 
    * testing/tests/T160snmpnetstat:
-     CHANGES: test: enhance snmpnetstat test to check tcpTable in TCP
-     mode
+
+   CHANGES: test: enhance snmpnetstat test to check tcpTable in TCP
+   mode
 
 2007-10-13 22:28  tanders
 
-   * agent/mibgroup/mibII/tcpTable.c,
-     include/net-snmp/system/solaris.h:
-     CHANGES: Solaris: BUG: 1810814: tcpTable missing entries and
-     wrong ports
+   *  agent/mibgroup/mibII/tcpTable.c,   
+      include/net-snmp/system/solaris.h:
+
+   CHANGES: Solaris: BUG: 1810814: tcpTable missing entries and
+   wrong ports
 
 2007-10-12 21:46  tanders
 
    * include/net-snmp/system/solaris.h:
-     CHANGES: Solaris: #define NEW_MIB_COMPLIANT to support Solaris
-     10U4+
+
+   CHANGES: Solaris: #define NEW_MIB_COMPLIANT to support Solaris
+   10U4+
 
 2007-10-11 20:46  magfr
 
    * snmplib/snmpUDPDomain.c:
-     CHANGES: snmplib: Do not leak memory whenever an udp address is
-     formatted.
+
+   CHANGES: snmplib: Do not leak memory whenever an udp address is
+   formatted.
+
+2007-10-03 01:02  alex_b
+
+   *  win32/dist/README.build.win32.txt, win32/dist/README.txt,   
+      win32/dist/installer/Add2Path.nsi,   
+      win32/dist/installer/net-snmp.nsi:
+
+   -Fix for bug 1768797. NSIS Installer script now warns the user if
+   the PATH
+   is > 1024 as NSIS can not handle variables larger than 1024.
+   -Updates to build instructions.
 
 2007-09-30 20:59  magfr
 
-   * agent/mibgroup/agentx/agentx_config.c,
-     include/net-snmp/library/snmp_service.h, snmplib/snmp_api.c,
-     snmplib/snmp_service.c, snmplib/snmp_transport.c:
-     CHANGES: BUG: 1801835: Added the ability to have multiple default
-     transports for an application. On open the different transports
-     will be tried in order. As a consequence snmp and snmptrap now
-     will try first udp and then udp6 and agentx wil try first unix
-     and then tcp.
+   *  agent/mibgroup/agentx/agentx_config.c,   
+      include/net-snmp/library/snmp_service.h, snmplib/snmp_api.c,   
+      snmplib/snmp_service.c, snmplib/snmp_transport.c:
+
+   CHANGES: BUG: 1801835: Added the ability to have multiple default
+   transports for an application. On open the different transports
+   will be tried in order. As a consequence snmp and snmptrap now
+   will try first udp and then udp6 and agentx wil try first unix
+   and then tcp.
 
 2007-09-29 13:10  magfr
 
    * snmplib/snmpUDPIPv6Domain.c:
-     CHANGES: snmplib: Do not try to look up empty strings as
-     hostnames for IPv6
-     Additinally, print what string filed to resolve using getaddrinfo
-     for IPv6
+
+   CHANGES: snmplib: Do not try to look up empty strings as
+   hostnames for IPv6
+   Additinally, print what string filed to resolve using getaddrinfo
+   for IPv6
+
+2007-09-29 06:26  tanders
+
+   * agent/mibgroup/ip-mib/data_access/systemstats_solaris2.c:
+
+   CHANGES: snmpd: PATCH: 1804445: from apersson: High order bits of
+   HCInOctets not set on Solaris
 
 2007-09-24 20:43  hardaker
 
    * COPYING:
-     year update
+
+   year update
+
+2007-09-23 06:03  tanders
+
+   * snmplib/dir_utils.c:
+
+   fix #elif
+
+2007-09-21 22:04  tanders
+
+   *  configure, configure.in, include/net-snmp/net-snmp-config.h.in,   
+      snmplib/dir_utils.c:
+
+   CHANGES: snmplib: attempt to fix build for Solaris/AIX/HP-UX
+   broken by r16684
 
 2007-09-20 21:55  tanders
 
    * agent/mibgroup/ucd-snmp/proc.c:
-     CHANGES: snmpd: PATCH: 1746831: from cunnijd: fix process
-     checking race
-     condition under Linux and platform #ifdefs
+
+   CHANGES: snmpd: PATCH: 1746831: from cunnijd: fix process
+   checking race
+   condition under Linux and platform #ifdefs
 
 2007-09-19 21:09  tanders
 
    * snmplib/snmpUDPDomain.c:
-     CHANGES: snmplib: BUG: Coverity #183: fix memory leak if
-     IP_PKTINFO fails
+
+   CHANGES: snmplib: BUG: Coverity #183: fix memory leak if
+   IP_PKTINFO fails
+
+2007-09-19 19:57  dts12
+
+   * dist/RELEASE-INSTRUCTIONS:
+
+   Fix misnumberings of steps.
+   It is *so* difficult to find properly numerate staff these
+   days....
 
 2007-09-16 09:51  magfr
 
    * local/mib2c-update:
-     Remove bashisms. This is netbsd patch-et from bug 1745404.
+
+   Remove bashisms. This is netbsd patch-et from bug 1745404.
 
 2007-09-16 09:45  magfr
 
    * agent/mibgroup/host/hr_device.c:
-     Use const char* for temporary constant string variable. This is
-     netbsd patch-ea from bug 1745404.
+
+   Use const char* for temporary constant string variable. This is
+   netbsd patch-ea from bug 1745404.
 
 2007-09-16 09:40  magfr
 
    * snmplib/snmp_api.c:
-     Use the natural type of in_addr_t's for comparisions. This is
-     netbsd patch-ea from bug 1745404.
+
+   Use the natural type of in_addr_t's for comparisions. This is
+   netbsd patch-ea from bug 1745404.
 
 2007-09-16 07:06  magfr
 
    * agent/mibgroup/agentx/master.c:
-     CHANGES: BUG: 1793545: Take the name from the sockaddr_un in
-     order to avoid transport specifiers and other decorations.
 
-2007-09-14 14:44  dts12
+   CHANGES: BUG: 1793545: Take the name from the sockaddr_un in
+   order to avoid transport specifiers and other decorations.
+
+2007-09-14 13:18  rstory
+
+   * include/net-snmp/data_access/swrun.h:
+
+   Apple patches
+   - header for swrun rewrite
+
+2007-09-14 13:16  rstory
+
+   * include/net-snmp/system/darwin9.h:
+
+   Apple patches
+   - add utility macro
+   - activate new host resource rewrites
+
+2007-09-14 13:13  rstory
+
+   * agent/mibgroup/host.h:
+
+   Apple patches
+   - config_require for new rewrites, if enabled
+
+2007-09-14 13:11  rstory
+
+   *  agent/mibgroup/host/hr_disk.c, agent/mibgroup/host/hr_filesys.c,  
+       agent/mibgroup/host/hr_partition.c:
+
+   Apple patches
+   - add/fix disk/partition tables on darwin
+
+2007-09-14 13:09  rstory
+
+   *  agent/mibgroup/host/data_access/swinst.c,   
+      agent/mibgroup/host/data_access/swinst.h,   
+      agent/mibgroup/host/data_access/swinst_darwin.c,   
+      agent/mibgroup/host/hrSWInstalledTable.c,   
+      agent/mibgroup/host/hrSWInstalledTable.h,   
+      include/net-snmp/data_access/swinst.h:
+
+   Apple patches
+   - add hrSWInstalledTable for darwin
+
+2007-09-14 08:44  dts12
 
    * dist/makerelease:
-     Synch with main trunk release script.
+
+   Protect against unexpected command arguments.
+
+2007-09-14 08:00  dts12
+
+   * dist/RELEASE-INSTRUCTIONS:
+
+   Document use of "svn export" rather than "svn checkout".
+   Cover generation of the zip archive as well as the tarball.
 
 2007-09-13 21:25  tanders
 
    * README:
-     drop obsolete mirrors
+
+   drop obsolete mirrors
+
+2007-09-13 17:29  rstory
+
+   *  agent/mibgroup/host/data_access,   
+      agent/mibgroup/host/data_access/swrun.c,   
+      agent/mibgroup/host/data_access/swrun.h,   
+      agent/mibgroup/host/data_access/swrun_darwin.c,   
+      agent/mibgroup/host/hrSWRunPerfTable.c,   
+      agent/mibgroup/host/hrSWRunPerfTable.h,   
+      agent/mibgroup/host/hrSWRunTable.c,   
+      agent/mibgroup/host/hrSWRunTable.h:
+
+   Apple patches
+   - host resources SWRun and SWRunPerf Table for darwin9
+
+2007-09-13 17:22  rstory
+
+   * agent/helpers/table.c, include/net-snmp/agent/table.h:
+
+   Apple patches
+   - improve error handling and cleanup in registration functions
+
+2007-09-13 17:19  rstory
+
+   * snmplib/system.c:
+
+   Apple patches
+   - for darwin9, rexec after fork to avoid problems with some mach
+   calls
+
+2007-09-12 18:51  rstory
+
+   *  include/net-snmp/library/dir_utils.h, snmplib/Makefile.in,   
+      snmplib/dir_utils.c:
+
+   Apple patches
+   - new utility function to read a directory hierarcy into a
+   container
+
+2007-09-12 17:55  rstory
+
+   * include/net-snmp/library/container.h, snmplib/container.c:
+
+   Apple patches
+   - new string compare callback
+
+2007-09-12 17:53  rstory
+
+   *  agent/helpers/cache_handler.c,   
+      include/net-snmp/agent/cache_handler.h:
+
+   Apple patches
+   - new netsnmp_cache_free function
+
+2007-09-12 17:46  rstory
+
+   * snmplib/snmpUDPDomain.c:
+
+   add missing newline in debug msg
+
+2007-09-12 17:42  rstory
+
+   * local/mib2c.container.conf:
+
+   Patches from Apple
+   - add optional cache
+   - check/handle errors for all functions in init func
+   - typedef generated struct
+   - skip processed requests
+   - check for null when extracting row
+
+2007-09-12 17:35  rstory
+
+   * COPYING:
+
+   add new copyright/contributor
+
+2007-09-05 20:12  magfr
+
+   * agent/mibgroup/mibII/system_mib.c:
+
+   Combine system_parse_config_sys{loc,con,name} into one function
+   since they all do the same thing
 
 2007-08-25 14:24  magfr
 
-   * agent/mibgroup/notification-log-mib/notification_log.c,
-     agent/mibgroup/notification-log-mib/notification_log.h:
-     Make most of notification_log static. Minimize the header file.
+   *  agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/notification-log-mib/notification_log.h:
+
+   Make most of notification_log static. Minimize the header file.
 
 2007-08-22 21:56  tanders
 
    * agent/agent_registry.c:
-     NEWS: agent: suppress annoying "registration != duplicate"
-     warning for root oids
-     (otherwise, you'll get this message on almost every startup)
+
+   NEWS: agent: suppress annoying "registration != duplicate"
+   warning for root oids
+   (otherwise, you'll get this message on almost every startup)
 
 2007-08-20 08:06  tanders
 
    * snmplib/snmpUDPIPv6Domain.c:
-     NEWS: snmplib: fix potential buffer overflow in sprintf for
-     UDP/IPv6
 
-2007-08-17 09:08  dts12
+   NEWS: snmplib: fix potential buffer overflow in sprintf for
+   UDP/IPv6
+
+2007-08-17 09:10  dts12
 
    * FAQ:
-     Synch with main development (and on-line) FAQ text.
+
+   Subversion, not CVS.
 
 2007-08-17 08:59  dts12
 
    * FAQ:
-     Clarify handling of unknown communities
+
+   Clarify handling of unknown communities
 
 2007-08-16 15:36  dts12
 
    * agent/mibgroup/agent/extend.c:
-     Don't just report the problem - it might be sensible to avoid
-     crashing the agent as well!
+
+   Don't just report the problem - it might be sensible to avoid
+   crashing the agent as well!
 
 2007-08-16 15:35  dts12
 
    * agent/mibgroup/agent/extend.c:
-     CHANGES: snmpd: PATCH: 1744157: Report duplicate "extend/exec"
-     identifiers.
+
+   CHANGES: snmpd: PATCH: 1744157: Report duplicate "extend/exec"
+   identifiers.
 
 2007-08-16 15:24  dts12
 
    * agent/mibgroup/mibII/vacm_conf.c, apps/snmptrapd_ds.h:
-     CHANGES: snmptrapd: PATCH: 1746992: Improve snmptrapd
-     access-control error messages.
+
+   CHANGES: snmptrapd: PATCH: 1746992: Improve snmptrapd
+   access-control error messages.
 
 2007-08-16 14:12  dts12
 
    * agent/mibgroup/util_funcs.c:
-     CHANGES: snmpd: PATCH: 1752934: Fix off-by-one qsort error in
-     table utilities.
+
+   CHANGES: snmpd: PATCH: 1752934: Fix off-by-one qsort error in
+   table utilities.
 
 2007-08-16 13:31  dts12
 
    * agent/snmp_agent.c:
-     CHANGES: snmpd: PATCH: 1753437: Fix error index on failing SET
-     requests
+
+   CHANGES: snmpd: PATCH: 1753437: Fix error index on failing SET
+   requests
 
 2007-08-16 13:25  dts12
 
    * agent/mibgroup/agentx/master.c:
-     CHANGES: snmpd: PATCH: 1753449: Fix AgentX error propagation
+
+   CHANGES: snmpd: PATCH: 1753449: Fix AgentX error propagation
 
 2007-08-16 12:34  dts12
 
    * agent/mibgroup/agentx/subagent.c:
-     CHANGES: snmpd: PATCH: 1753463: Fix AgentX subagent ping alarm
-     handling
+
+   CHANGES: snmpd: PATCH: 1753463: Fix AgentX subagent ping alarm
+   handling
 
 2007-08-16 12:13  dts12
 
    * agent/mibgroup/notification-log-mib/notification_log.c:
-     CHANGES: snmpd: PATCH: 1758208: Fix memory leak
+
+   CHANGES: snmpd: PATCH: 1758208: Fix memory leak
 
 2007-08-16 12:03  dts12
 
    * agent/mibgroup/host/hr_swrun.c:
-     CHANGES: snmpd: PATCH: 1774612: More resilient process status
-     handling
+
+   CHANGES: snmpd: PATCH: 1774612: More resilient process status
+   handling
 
 2007-08-16 11:58  dts12
 
    * snmplib/snmpUDPDomain.c:
-     CHANGES: snmplib: PATCH: 1775124: Fix clientaddr functionality
+
+   CHANGES: snmplib: PATCH: 1775124: Fix clientaddr functionality
 
 2007-08-16 09:38  dts12
 
    * snmplib/parse.c:
-     CHANGES: snmplib: PATCH: 1768285: Count MIB files correctly in
-     add_mibdir()
+
+   CHANGES: snmplib: PATCH: 1768285: Count MIB files correctly in
+   add_mibdir()
 
 2007-08-16 09:35  dts12
 
    * apps/snmptrapd.c:
-     CHANGES: snmptrapd: PATCH: 1767725: Close all non standard file
-     handles
+
+   CHANGES: snmptrapd: PATCH: 1767725: Close all non standard file
+   handles
 
 2007-08-16 09:00  dts12
 
    * agent/mibgroup/disman/expr/expValue.c:
-     Declare initialisation routine correctly, and omit unused
-     variables.
-     Patch from Magnus Fromreide.
+
+   Declare initialisation routine correctly, and omit unused
+   variables.
+   Patch from Magnus Fromreide.
 
 2007-08-16 08:55  dts12
 
    * include/net-snmp/agent/net-snmp-agent-includes.h:
-     Read in agent configuration settings *before* the header
-     files that might rely on them.
+
+   Read in agent configuration settings *before* the header
+   files that might rely on them.
+
+2007-08-05 16:16  alex_b
+
+   * win32/dist/README.build.win32.txt, win32/dist/README.txt:
+
+   Change win32 build readme files to CRLF.
+
+2007-08-05 14:16  alex_b
+
+   * win32/dist/README.build.win32.txt:
+
+   Win32: Change build docs to use dynamic (DLL) instead of static.
 
 2007-08-02 13:46  dts12
 
    * mibs/NET-SNMP-EXAMPLES-MIB.txt:
-     It might be slightly less confusing if the netSnmpExampleString
-     MIB object did actually take string values. Picky, I know....
 
--------------------------------------------------------------------------------
+   It might be slightly less confusing if the netSnmpExampleString
+   MIB object did actually take string values. Picky, I know....
 
-Changes: V5-4-patches branch created -> V5.4.1
+2007-07-28 13:02  rstory
 
-2007-07-27 17:02  hardaker
+   * dist/svnup:
 
-   * FAQ, README, configure, configure.in, dist/net-snmp.spec,
-     sedscript.in, snmplib/snmp_version.c:
-     - version tag ( 5.4.1 )
-
-2007-07-27 17:01  hardaker
-
-   * CHANGES, NEWS:
-     version update
-
-2007-07-27 16:58  hardaker
-
-   * ChangeLog:
-     remove bogus empty * lines from the ChangeLog
-
-2007-07-27 16:54  hardaker
-
-   * ChangeLog:
-     fix version numbers in ChangeLog
-
-2007-07-27 16:54  hardaker
-
-   * ChangeLog:
-     version update
-
-2007-07-27 16:15  hardaker
-
-   * man/netsnmp_agent.3, man/netsnmp_agent_registry.3,
-     man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,
-     man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,
-     man/netsnmp_cache_handler.3, man/netsnmp_callback.3,
-     man/netsnmp_container.3, man/netsnmp_data_list.3,
-     man/netsnmp_debug.3, man/netsnmp_default_store.3,
-     man/netsnmp_handler.3, man/netsnmp_instance.3,
-     man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,
-     man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,
-     man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,
-     man/netsnmp_multiplexer.3,
-     man/netsnmp_netsnmp_agent_request_info_s.3,
-     man/netsnmp_netsnmp_column_info_t.3,
-     man/netsnmp_netsnmp_data_list_s.3,
-     man/netsnmp_netsnmp_handler_registration_s.3,
-     man/netsnmp_netsnmp_iterator_info_s.3,
-     man/netsnmp_netsnmp_mib_handler_access_methods.3,
-     man/netsnmp_netsnmp_mib_handler_methods.3,
-     man/netsnmp_netsnmp_mib_handler_s.3,
-     man/netsnmp_netsnmp_request_info_s.3,
-     man/netsnmp_netsnmp_table_registration_info_s.3,
-     man/netsnmp_netsnmp_table_request_info_s.3,
-     man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,
-     man/netsnmp_read_config.3, man/netsnmp_read_only.3,
-     man/netsnmp_row_merge.3, man/netsnmp_scalar.3,
-     man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,
-     man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,
-     man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,
-     man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,
-     man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,
-     man/netsnmp_table.3, man/netsnmp_table_array.3,
-     man/netsnmp_table_container.3, man/netsnmp_table_data.3,
-     man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,
-     man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,
-     man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,
-     man/netsnmp_table_rows.3, man/netsnmp_tdata.3,
-     man/netsnmp_util.3, man/netsnmp_utilities.3,
-     man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
-     documentation update
-
-2007-07-27 16:13  hardaker
-
-   * doxygen.conf:
-     - version tag ( 5.4.1 )
+   fix tag extraction; check for empty tag earlier
 
 2007-07-25 22:41  tanders
 
    * agent/mibgroup/agentx/subagent.c:
-     CHANGES: snmpd: BUG: 1760633: fix typo in debug message
 
-2007-07-22 00:55  tanders
+   CHANGES: snmpd: BUG: 1760633: fix typo in debug message
 
-   * NEWS:
-     remove duplicate entry
-
-2007-07-22 00:52  tanders
-
-   * NEWS:
-     improve NEWS section for 5.4.1
-
-2007-07-21 16:17  hardaker
-
-   * FAQ, README, configure, configure.in, dist/net-snmp.spec,
-     sedscript.in, snmplib/snmp_version.c:
-     - version tag ( 5.4.1.rc4 )
-
-2007-07-21 16:16  hardaker
-
-   * CHANGES, NEWS:
-     version update
-
-2007-07-21 16:13  hardaker
-
-   * ChangeLog:
-     version update
-
-2007-07-21 15:07  hardaker
-
-   * man/netsnmp_agent.3, man/netsnmp_agent_registry.3,
-     man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,
-     man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,
-     man/netsnmp_cache_handler.3, man/netsnmp_callback.3,
-     man/netsnmp_container.3, man/netsnmp_data_list.3,
-     man/netsnmp_debug.3, man/netsnmp_default_store.3,
-     man/netsnmp_handler.3, man/netsnmp_instance.3,
-     man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,
-     man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,
-     man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,
-     man/netsnmp_multiplexer.3,
-     man/netsnmp_netsnmp_agent_request_info_s.3,
-     man/netsnmp_netsnmp_column_info_t.3,
-     man/netsnmp_netsnmp_data_list_s.3,
-     man/netsnmp_netsnmp_handler_registration_s.3,
-     man/netsnmp_netsnmp_iterator_info_s.3,
-     man/netsnmp_netsnmp_mib_handler_access_methods.3,
-     man/netsnmp_netsnmp_mib_handler_methods.3,
-     man/netsnmp_netsnmp_mib_handler_s.3,
-     man/netsnmp_netsnmp_request_info_s.3,
-     man/netsnmp_netsnmp_table_registration_info_s.3,
-     man/netsnmp_netsnmp_table_request_info_s.3,
-     man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,
-     man/netsnmp_read_config.3, man/netsnmp_read_only.3,
-     man/netsnmp_row_merge.3, man/netsnmp_scalar.3,
-     man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,
-     man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,
-     man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,
-     man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,
-     man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,
-     man/netsnmp_table.3, man/netsnmp_table_array.3,
-     man/netsnmp_table_container.3, man/netsnmp_table_data.3,
-     man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,
-     man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,
-     man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,
-     man/netsnmp_table_rows.3, man/netsnmp_tdata.3,
-     man/netsnmp_util.3, man/netsnmp_utilities.3,
-     man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
-     documentation update
-
-2007-07-21 15:06  hardaker
-
-   * doxygen.conf:
-     - version tag ( 5.4.1.rc4 )
-
-2007-07-21 14:51  hardaker
+2007-07-21 21:36  tanders
 
    * snmplib/snmp_api.c:
-     patch to fix forwarding encoding
+
+   CHANGES: snmplib: fix forwarding encoding
 
 2007-07-20 08:21  dts12
 
    * agent/mibgroup/ucd-snmp/extensible.c:
-     Tweak warning message for (old-style, invalid format) "exec OID"
-     directives.
 
-2007-07-19 21:16  tanders
-
-   * aclocal.m4, config.guess, config.sub, configure, ltmain.sh:
-     NEWS: build: update to libtool 1.5.24 (from 1.5.22)
-     CHANGES: HP-UX: BUG: 1742278: compile error on HP-UX 11.23 (IA64)
-
-2007-07-19 21:01  dts12
-
-   * agent/mibgroup/disman/schedule/schedCore.c, agent/snmpd.c:
-     Check for presence of 'chown' and 'localtime_r' routines before
-     using them.
-
-2007-07-19 21:00  dts12
-
-   * configure, configure.in, include/net-snmp/net-snmp-config.h.in,
-     win32/net-snmp/net-snmp-config.h,
-     win32/net-snmp/net-snmp-config.h.in:
-     Configure checks for 'chown' and 'localtime_r' functions
-
-2007-07-17 00:20  hardaker
-
-   * FAQ, README, configure, configure.in, dist/net-snmp.spec,
-     sedscript.in, snmplib/snmp_version.c:
-     - version tag ( 5.4.1.rc3 )
-
-2007-07-17 00:19  hardaker
-
-   * ChangeLog:
-     version update
-
-2007-07-17 00:17  hardaker
-
-   * man/netsnmp_agent.3, man/netsnmp_agent_registry.3,
-     man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,
-     man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,
-     man/netsnmp_cache_handler.3, man/netsnmp_callback.3,
-     man/netsnmp_container.3, man/netsnmp_data_list.3,
-     man/netsnmp_debug.3, man/netsnmp_default_store.3,
-     man/netsnmp_handler.3, man/netsnmp_instance.3,
-     man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,
-     man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,
-     man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,
-     man/netsnmp_multiplexer.3,
-     man/netsnmp_netsnmp_agent_request_info_s.3,
-     man/netsnmp_netsnmp_column_info_t.3,
-     man/netsnmp_netsnmp_data_list_s.3,
-     man/netsnmp_netsnmp_handler_registration_s.3,
-     man/netsnmp_netsnmp_iterator_info_s.3,
-     man/netsnmp_netsnmp_mib_handler_access_methods.3,
-     man/netsnmp_netsnmp_mib_handler_methods.3,
-     man/netsnmp_netsnmp_mib_handler_s.3,
-     man/netsnmp_netsnmp_request_info_s.3,
-     man/netsnmp_netsnmp_table_registration_info_s.3,
-     man/netsnmp_netsnmp_table_request_info_s.3,
-     man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,
-     man/netsnmp_read_config.3, man/netsnmp_read_only.3,
-     man/netsnmp_row_merge.3, man/netsnmp_scalar.3,
-     man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,
-     man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,
-     man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,
-     man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,
-     man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,
-     man/netsnmp_table.3, man/netsnmp_table_array.3,
-     man/netsnmp_table_container.3, man/netsnmp_table_data.3,
-     man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,
-     man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,
-     man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,
-     man/netsnmp_table_rows.3, man/netsnmp_tdata.3,
-     man/netsnmp_util.3, man/netsnmp_utilities.3,
-     man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
-     documentation update
-
-2007-07-17 00:16  hardaker
-
-   * doxygen.conf:
-     - version tag ( 5.4.1.rc3 )
+   Tweak warning message for (old-style, invalid format) "exec OID"
+   directives.
 
 2007-07-16 23:59  hardaker
 
-   * agent/agent_registry.c,
-     agent/mibgroup/ip-forward-mib/data_access/route_common.c,
-     agent/mibgroup/ip-mib/data_access/ipaddress_common.c,
-     agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/ip.c,
-     agent/mibgroup/mibII/tcp.c, agent/mibgroup/mibII/udp.c,
-     snmplib/data_list.c:
-     Apply (correct) patch from Marcus Rueckert to remove asserts
-     using sort-o-illegal C string compares
+   *  agent/agent_registry.c,   
+      agent/mibgroup/ip-forward-mib/data_access/route_common.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/ip.c,   
+      agent/mibgroup/mibII/tcp.c, agent/mibgroup/mibII/udp.c,   
+      snmplib/data_list.c:
+
+   Apply (correct) patch from Marcus Rueckert to remove asserts
+   using sort-o-illegal C string compares
 
 2007-07-16 23:59  hardaker
 
-   * agent/agent_registry.c,
-     agent/mibgroup/ip-forward-mib/data_access/route_common.c,
-     agent/mibgroup/ip-mib/data_access/ipaddress_common.c,
-     agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/ip.c,
-     agent/mibgroup/mibII/tcp.c, agent/mibgroup/mibII/udp.c,
-     snmplib/data_list.c:
-     Remove previous patch which was the wrong version
+   *  agent/agent_registry.c,   
+      agent/mibgroup/ip-forward-mib/data_access/route_common.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/ip.c,   
+      agent/mibgroup/mibII/tcp.c, agent/mibgroup/mibII/udp.c,   
+      snmplib/data_list.c:
+
+   Remove previous patch which was the wrong version
 
 2007-07-16 23:57  hardaker
 
-   * agent/agent_registry.c,
-     agent/mibgroup/ip-forward-mib/data_access/route_common.c,
-     agent/mibgroup/ip-mib/data_access/ipaddress_common.c,
-     agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/ip.c,
-     agent/mibgroup/mibII/tcp.c, agent/mibgroup/mibII/udp.c,
-     snmplib/data_list.c:
-     Apply patch from Marcus Rueckert to remove asserts using
-     sort-o-illegal C string compares
+   *  agent/agent_registry.c,   
+      agent/mibgroup/ip-forward-mib/data_access/route_common.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_common.c,   
+      agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/ip.c,   
+      agent/mibgroup/mibII/tcp.c, agent/mibgroup/mibII/udp.c,   
+      snmplib/data_list.c:
+
+   Apply patch from Marcus Rueckert to remove asserts using
+   sort-o-illegal C string compares
+
+2007-07-13 19:27  hardaker
+
+   * dist/makerelease:
+
+   generate zip files
 
 2007-07-12 21:51  tanders
 
    * perl/agent/agent.pm:
-     fix subagent example (documentation)
+
+   fix subagent example (documentation)
 
 2007-07-12 21:27  tanders
 
    * man/snmp_sess_api.3.def:
-     snmp_sess_read returns int, not void
 
-2007-07-07 00:17  hardaker
-
-   * FAQ, README, configure, configure.in, dist/net-snmp.spec,
-     sedscript.in, snmplib/snmp_version.c:
-     - version tag ( 5.4.1.rc2 )
-
-2007-07-07 00:17  hardaker
-
-   * CHANGES:
-     version update
-
-2007-07-07 00:13  hardaker
-
-   * ChangeLog:
-     version update
-
-2007-07-07 00:11  hardaker
-
-   * man/netsnmp_agent.3, man/netsnmp_agent_registry.3,
-     man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,
-     man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,
-     man/netsnmp_cache_handler.3, man/netsnmp_callback.3,
-     man/netsnmp_container.3, man/netsnmp_data_list.3,
-     man/netsnmp_debug.3, man/netsnmp_default_store.3,
-     man/netsnmp_handler.3, man/netsnmp_instance.3,
-     man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,
-     man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,
-     man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,
-     man/netsnmp_multiplexer.3,
-     man/netsnmp_netsnmp_agent_request_info_s.3,
-     man/netsnmp_netsnmp_column_info_t.3,
-     man/netsnmp_netsnmp_data_list_s.3,
-     man/netsnmp_netsnmp_handler_registration_s.3,
-     man/netsnmp_netsnmp_iterator_info_s.3,
-     man/netsnmp_netsnmp_mib_handler_access_methods.3,
-     man/netsnmp_netsnmp_mib_handler_methods.3,
-     man/netsnmp_netsnmp_mib_handler_s.3,
-     man/netsnmp_netsnmp_request_info_s.3,
-     man/netsnmp_netsnmp_table_registration_info_s.3,
-     man/netsnmp_netsnmp_table_request_info_s.3,
-     man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,
-     man/netsnmp_read_config.3, man/netsnmp_read_only.3,
-     man/netsnmp_row_merge.3, man/netsnmp_scalar.3,
-     man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,
-     man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,
-     man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,
-     man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,
-     man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,
-     man/netsnmp_table.3, man/netsnmp_table_array.3,
-     man/netsnmp_table_container.3, man/netsnmp_table_data.3,
-     man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,
-     man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,
-     man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,
-     man/netsnmp_table_rows.3, man/netsnmp_tdata.3,
-     man/netsnmp_util.3, man/netsnmp_utilities.3,
-     man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
-     documentation update
-
-2007-07-07 00:10  hardaker
-
-   * doxygen.conf:
-     - version tag ( 5.4.1.rc2 )
+   snmp_sess_read returns int, not void
 
 2007-07-06 23:39  hardaker
 
    * Makefile.rules, Makefile.top:
-     CHANGES: build: use libtool clean for removing files to ensure we
-     delete all libtool temporary files.
+
+   CHANGES: build: use libtool clean for removing files to ensure we
+   delete all libtool temporary files.
+
+2007-07-06 23:34  hardaker
+
+   * dist/patme:
+
+   use a recursive revert instead of rm/update; remove double / from
+   editing calls
 
 2007-07-06 21:22  rstory
 
    * snmplib/read_config.c:
-     stop searching paths when done
+
+   stop searching paths when done
 
 2007-07-06 21:14  rstory
 
    * agent/mibgroup/if-mib/data_access/interface_linux.c:
-     do not free interface entry just because we can not get stats for
-     it
+
+   do not free interface entry just because we can not get stats for
+   it
 
 2007-07-06 15:32  dts12
 
    * agent/mibgroup/agent/extend.c:
-     CHANGES: snmpd: BUG 1745113: Handle single-line (and zero-line)
-     output in UCD compatability mode.
+
+   CHANGES: snmpd: BUG 1745113: Handle single-line (and zero-line)
+   output in UCD compatability mode.
+
+2007-07-06 09:08  dts12
+
+   *  configure, configure.in, snmplib/snmp_client.c,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: library: PATCH 1728247: from Mitsuru Chinen: cleans up
+   the int64 type checking and usage for building packets especially
+   under MSVC.
 
 2007-07-05 14:45  rstory
 
    * ., README.osX:
-     r20044@dhcp211: rstory | 2007-07-05 10:44:01 -0400
-     remove disable-static from recommended options
+
+   r20044@dhcp211: rstory | 2007-07-05 10:44:01 -0400
+   remove disable-static from recommended options
 
 2007-07-05 11:05  rstory
 
    * agent/mibgroup/if-mib/data_access/interface_linux.c:
-     skip stats parsing on interfaces with no statistics
+
+   skip stats parsing on interfaces with no statistics
+
+2007-07-05 11:01  rstory
+
+   * dist/check-api-change:
+
+   check for dir existence
 
 2007-07-04 23:26  tanders
 
    * agent/Makefile.in, apps/Makefile.in:
-     CHANGES: perl: install embedded perl init files for
-     snmpd/snmptrapd with mode 644 instead of 755
+
+   CHANGES: perl: install embedded perl init files for
+   snmpd/snmptrapd with mode 644 instead of 755
 
 2007-07-04 21:42  tanders
 
    * README.osX:
-     Perl problems (believed to be) fixed
 
-2007-07-03 22:36  hardaker
-
-   * configure, configure.in, include/net-snmp/net-snmp-config.h.in,
-     include/net-snmp/types.h, snmplib/snmp_client.c,
-     win32/net-snmp/net-snmp-config.h,
-     win32/net-snmp/net-snmp-config.h.in:
-     CHANGES: library: Patch from "Mitsuru Chinen": cleans up the
-     int64 type checking and usage for building packets especially
-     under MSVC.
+   Perl problems (believed to be) fixed
 
 2007-07-03 12:56  tanders
 
    * perl/agent/Support/Support.pm:
-     remove executable flag from SVN properties
+
+   remove executable flag from SVN properties
+
+2007-07-02 06:53  magfr
+
+   * apps/snmptrapd.c, apps/snmpvacm.c:
+
+   Remove unused oid declarations
 
 2007-07-02 06:02  magfr
 
    * agent/mibgroup/disman/event/mteEvent.c:
-     Add missing return value to _mteEvent_fire_notify.
+
+   Add missing return value to _mteEvent_fire_notify.
 
 2007-07-02 05:31  magfr
 
    * agent/mibgroup/tcp-mib/data_access/tcpConn_common.c:
-     Remove the declaration of an undefined static function.
 
-2007-07-01 19:59  tanders
+   Remove the declaration of an undefined static function.
 
-   * configure, configure.in:
-     minor help text formatting fix
+2007-07-01 20:32  tanders
 
-2007-06-30 05:34  tanders
+   * dist/nsb-nightly, dist/nsb-package:
 
-   * dist/net-snmp.spec:
-     add --enable-as-needed if building with embedded Perl support
+   make getopts work on Tru64 by respawning in Posix mode
 
-2007-06-30 04:37  hardaker
+2007-07-01 19:56  tanders
 
-   * FAQ, README, configure, configure.in, dist/net-snmp.spec,
-     sedscript.in, snmplib/snmp_version.c:
-     - version tag ( 5.4.1.rc1 )
+   *  agent/Makefile.in, apps/Makefile.in, configure, configure.in,   
+      net-snmp-config.in:
 
-2007-06-30 04:37  hardaker
+   CHANGES: build: --disable-as-needed now allows to revert to the
+   former default behaviour of linking libperl to applications
+   rather than Net-SNMP Libraries (in case of any problems)
 
-   * CHANGES, NEWS:
-     version update
+2007-06-30 06:17  hardaker
 
-2007-06-30 04:36  hardaker
+   * dist/makerelease:
 
-   * ChangeLog:
-     version update
+   actually call removefiles
 
-2007-06-30 04:34  hardaker
+2007-06-28 23:50  magfr
 
-   * man/netsnmp_agent.3, man/netsnmp_agent_registry.3,
-     man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,
-     man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,
-     man/netsnmp_cache_handler.3, man/netsnmp_callback.3,
-     man/netsnmp_container.3, man/netsnmp_data_list.3,
-     man/netsnmp_debug.3, man/netsnmp_default_store.3,
-     man/netsnmp_handler.3, man/netsnmp_instance.3,
-     man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,
-     man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,
-     man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,
-     man/netsnmp_multiplexer.3,
-     man/netsnmp_netsnmp_agent_request_info_s.3,
-     man/netsnmp_netsnmp_column_info_t.3,
-     man/netsnmp_netsnmp_data_list_s.3,
-     man/netsnmp_netsnmp_handler_registration_s.3,
-     man/netsnmp_netsnmp_iterator_info_s.3,
-     man/netsnmp_netsnmp_mib_handler_access_methods.3,
-     man/netsnmp_netsnmp_mib_handler_methods.3,
-     man/netsnmp_netsnmp_mib_handler_s.3,
-     man/netsnmp_netsnmp_request_info_s.3,
-     man/netsnmp_netsnmp_table_registration_info_s.3,
-     man/netsnmp_netsnmp_table_request_info_s.3,
-     man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,
-     man/netsnmp_read_config.3, man/netsnmp_read_only.3,
-     man/netsnmp_row_merge.3, man/netsnmp_scalar.3,
-     man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,
-     man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,
-     man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,
-     man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,
-     man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,
-     man/netsnmp_table.3, man/netsnmp_table_array.3,
-     man/netsnmp_table_container.3, man/netsnmp_table_data.3,
-     man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,
-     man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,
-     man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,
-     man/netsnmp_table_rows.3, man/netsnmp_tdata.3,
-     man/netsnmp_util.3, man/netsnmp_utilities.3,
-     man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
-     documentation update
+   * include/net-snmp/library/snmp_debug.h:
 
-2007-06-30 04:32  hardaker
+   NEWS: snmplib: Added GCC format checking attributes to the debug
+   functions.
 
-   * doxygen.conf:
-     - version tag ( 5.4.1.rc1 )
+2007-06-28 23:37  magfr
 
-2007-06-29 22:18  tanders
+   * agent/mibgroup/host/hr_disk.c, agent/mibgroup/host/hr_system.c:
 
-   * README.aix, README.irix, README.solaris, agent/Makefile.in,
-     apps/Makefile.in, configure, configure.in, net-snmp-config.in:
-     NEWS: perl: BUG: 1619827: link libnetsnmpagent/libnetsnmptrapd
-     (rather than snmpd/snmptrapd) against libperl when configured
-     with --enable-as-needed
+   Remove casts of unused values
+
+2007-06-28 23:36  magfr
+
+   *  agent/mibgroup/agentx/protocol.c,   
+      agent/mibgroup/host/hr_storage.c:
+
+   Remove unused variables
 
 2007-06-28 22:09  tanders
 
    * net-snmp-config.in:
-     rename last occurence of DEFAULT_MIB[DIR]S to
-     NETSNMP_DEFAULT_MIB[DIR]S
+
+   rename last occurence of DEFAULT_MIB[DIR]S to
+   NETSNMP_DEFAULT_MIB[DIR]S
+
+2007-06-28 08:15  magfr
+
+   * apps/snmptrapd_handlers.c:
+
+   Do not transform the ignored result of realloc_format_trap
 
 2007-06-26 22:12  tanders
 
    * apps/Makefile.in:
-     CHANGES: build: work around libnetsnmpagent/libnetsnmphelpers
-     dependency issues when linking snmptrapd
+
+   CHANGES: build: work around libnetsnmpagent/libnetsnmphelpers
+   dependency issues when linking snmptrapd
 
 2007-06-26 21:45  tanders
 
    * agent/Makefile.in, agent/helpers/Makefile.in:
-     CHANGES: build: use LDFLAGS when building agent, helpers and mib
-     lib to be consistent with libnetnmp
+
+   CHANGES: build: use LDFLAGS when building agent, helpers and mib
+   lib to be consistent with libnetnmp
 
 2007-06-26 21:28  tanders
 
    * INSTALL:
-     minor updates
+
+   minor updates
+
+2007-06-26 15:10  rstory
+
+   * apps/snmptrapd.c, apps/snmptrapd_handlers.c:
+
+   don't initialize var in extern decl; instead, initialize actual
+   var
+
+2007-06-25 21:29  tanders
+
+   * aclocal.m4, config.guess, config.sub, configure, ltmain.sh:
+
+   NEWS: build: update to libtool 1.5.24 (from 1.5.22)
 
 2007-06-24 12:57  tanders
 
-   * acconfig.h, configure, configure.in,
-     include/net-snmp/net-snmp-config.h.in:
-     HAVE_SSIZE_T cleanup
+   *  acconfig.h, configure, configure.in,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   HAVE_SSIZE_T cleanup
 
 2007-06-23 22:56  tanders
 
    * README.hpux11:
-     don't suggest --with-libs=-lnm
 
-2007-06-22 15:09  dts12
+   don't suggest --with-libs=-lnm
 
-   * win32/encode_keychange/encode_keychange.dsp,
-     win32/libagent/libagent.dsp, win32/libhelpers/libhelpers.dsp,
-     win32/libnetsnmptrapd/libnetsnmptrapd.dsp, win32/libsdll.dsw,
-     win32/libsnmp/libsnmp.dsp, win32/libsnmp_dll/libsnmp_dll.dsp,
-     win32/netsnmpmibs/netsnmpmibs.dsp,
-     win32/netsnmpmibssdk/netsnmpmibssdk.dsp,
-     win32/snmpbulkget/snmpbulkget.dsp,
-     win32/snmpbulkwalk/snmpbulkwalk.dsp, win32/snmpd/snmpd.dsp,
-     win32/snmpdelta/snmpdelta.dsp, win32/snmpdf/snmpdf.dsp,
-     win32/snmpdsdk/snmpd.dsp, win32/snmpget/snmpget.dsp,
-     win32/snmpgetnext/snmpgetnext.dsp,
-     win32/snmpnetstat/snmpnetstat.dsp, win32/snmpset/snmpset.dsp,
-     win32/snmpstatus/snmpstatus.dsp, win32/snmptable/snmptable.dsp,
-     win32/snmptest/snmptest.dsp,
-     win32/snmptranslate/snmptranslate.dsp,
-     win32/snmptrap/snmptrap.dsp, win32/snmptrapd/snmptrapd.dsp,
-     win32/snmpusm/snmpusm.dsp, win32/snmpvacm/snmpvacm.dsp,
-     win32/snmpwalk/snmpwalk.dsp, win32/win32.dsw, win32/win32sdk.dsw:
-     Enforce DOS-style line endings, to keep Visual Studio happy.
+2007-06-22 15:05  dts12
+
+   *  win32/encode_keychange/encode_keychange.dsp,   
+      win32/libagent/libagent.dsp, win32/libhelpers/libhelpers.dsp,   
+      win32/libnetsnmptrapd/libnetsnmptrapd.dsp, win32/libsdll.dsw,   
+      win32/libsnmp/libsnmp.dsp, win32/libsnmp_dll/libsnmp_dll.dsp,   
+      win32/netsnmpmibs/netsnmpmibs.dsp,   
+      win32/netsnmpmibssdk/netsnmpmibssdk.dsp,   
+      win32/snmpbulkget/snmpbulkget.dsp,   
+      win32/snmpbulkwalk/snmpbulkwalk.dsp, win32/snmpd/snmpd.dsp,   
+      win32/snmpdelta/snmpdelta.dsp, win32/snmpdf/snmpdf.dsp,   
+      win32/snmpdsdk/snmpd.dsp, win32/snmpget/snmpget.dsp,   
+      win32/snmpgetnext/snmpgetnext.dsp,   
+      win32/snmpnetstat/snmpnetstat.dsp, win32/snmpset/snmpset.dsp,   
+      win32/snmpstatus/snmpstatus.dsp, win32/snmptable/snmptable.dsp,   
+      win32/snmptest/snmptest.dsp,   
+      win32/snmptranslate/snmptranslate.dsp,   
+      win32/snmptrap/snmptrap.dsp, win32/snmptrapd/snmptrapd.dsp,   
+      win32/snmpusm/snmpusm.dsp, win32/snmpvacm/snmpvacm.dsp,   
+      win32/snmpwalk/snmpwalk.dsp, win32/win32.dsw, win32/win32sdk.dsw:
+
+   Enforce DOS-style line endings, to keep Visual Studio happy.
+
+2007-06-21 14:01  rstory
+
+   *  include/net-snmp/system/freebsd.h,   
+      include/net-snmp/system/openbsd.h,   
+      include/net-snmp/system/solaris.h:
+
+   default to using ifTable rewrites
 
 2007-06-20 21:34  tanders
 
-   * agent/mibgroup/if-mib/data_access/interface_sysctl.c:
-     fix typo
+   *  agent/mibgroup/if-mib/data_access/interface_openbsd.c,   
+      agent/mibgroup/if-mib/data_access/interface_sysctl.c:
+
+   fix typo
 
 2007-06-19 22:23  tanders
 
    * configure, configure.in:
-     fix Perl-related autoconf messages
+
+   fix Perl-related autoconf messages
 
 2007-06-19 15:08  tanders
 
    * dist/net-snmp.spec:
-     CHANGES: build: add "BuildRequires: perl-ExtUtils-Embed" to the
-     spec file, e.g. for Fedora 7
+
+   CHANGES: build: add "BuildRequires: perl-ExtUtils-Embed" to the
+   spec file, e.g. for Fedora 7
 
 2007-06-18 22:28  hardaker
 
    * perl/SNMP/SNMP.xs:
-     fix broken comment.
 
-2007-06-18 22:04  hardaker
-
-   * FAQ, README, configure, configure.in, dist/net-snmp.spec,
-     sedscript.in, snmplib/snmp_version.c:
-     - version tag ( 5.4.1.pre3 )
-
-2007-06-18 22:03  hardaker
-
-   * CHANGES, NEWS:
-     version update
-
-2007-06-18 21:57  hardaker
-
-   * ChangeLog:
-     version update
+   fix broken comment.
 
 2007-06-18 21:54  hardaker
 
    * agent/helpers/Makefile.in:
-     revert double linking of libnetsmnp part of patch that was
-     supposed to be pulled bofer applying in r16538 (thanks tanders
-     for catching it)
 
-2007-06-18 21:48  hardaker
-
-   * agent/mibgroup/Makefile.depend:
-     make depend
-
-2007-06-18 21:47  hardaker
-
-   * man/netsnmp_agent.3, man/netsnmp_agent_registry.3,
-     man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,
-     man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,
-     man/netsnmp_cache_handler.3, man/netsnmp_callback.3,
-     man/netsnmp_container.3, man/netsnmp_data_list.3,
-     man/netsnmp_debug.3, man/netsnmp_default_store.3,
-     man/netsnmp_handler.3, man/netsnmp_instance.3,
-     man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,
-     man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,
-     man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,
-     man/netsnmp_multiplexer.3,
-     man/netsnmp_netsnmp_agent_request_info_s.3,
-     man/netsnmp_netsnmp_column_info_t.3,
-     man/netsnmp_netsnmp_data_list_s.3,
-     man/netsnmp_netsnmp_handler_registration_s.3,
-     man/netsnmp_netsnmp_iterator_info_s.3,
-     man/netsnmp_netsnmp_mib_handler_access_methods.3,
-     man/netsnmp_netsnmp_mib_handler_methods.3,
-     man/netsnmp_netsnmp_mib_handler_s.3,
-     man/netsnmp_netsnmp_request_info_s.3,
-     man/netsnmp_netsnmp_table_registration_info_s.3,
-     man/netsnmp_netsnmp_table_request_info_s.3,
-     man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,
-     man/netsnmp_read_config.3, man/netsnmp_read_only.3,
-     man/netsnmp_row_merge.3, man/netsnmp_scalar.3,
-     man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,
-     man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,
-     man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,
-     man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,
-     man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,
-     man/netsnmp_table.3, man/netsnmp_table_array.3,
-     man/netsnmp_table_container.3, man/netsnmp_table_data.3,
-     man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,
-     man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,
-     man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,
-     man/netsnmp_table_rows.3, man/netsnmp_tdata.3,
-     man/netsnmp_util.3, man/netsnmp_utilities.3,
-     man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
-     documentation update
-
-2007-06-18 21:46  hardaker
-
-   * doxygen.conf:
-     - version tag ( 5.4.1.pre3 )
+   revert double linking of libnetsmnp part of patch that was
+   supposed to be pulled bofer applying in r16538 (thanks tanders
+   for catching it)
 
 2007-06-18 21:34  hardaker
 
    * agent/helpers/Makefile.in, apps/Makefile.in, snmplib/Makefile.in:
-     CHANGES: build: patch from apple to simplify makefile target
-     references in some rules.
+
+   CHANGES: build: patch from apple to simplify makefile target
+   references in some rules.
 
 2007-06-18 21:17  hardaker
 
    * man/snmp_config.5.def, man/snmpget.1.def:
-     CHANGES: patch from apple to fix minor documentation bugs.
+
+   CHANGES: patch from apple to fix minor documentation bugs.
 
 2007-06-18 21:13  hardaker
 
-   * agent/mibgroup/if-mib/data_access/interface.h,
-     include/net-snmp/system/darwin9.h:
-     
+   *  agent/mibgroup/if-mib/data_access/interface.h,   
+      include/net-snmp/system/darwin9.h:
+
+   
 
 2007-06-18 21:12  hardaker
 
    * agent/mibgroup/hardware/memory/memory_darwin.c:
-     CHANGES: patch from apple to improve memory reporting
+
+   CHANGES: patch from apple to improve memory reporting
 
 2007-06-18 21:09  hardaker
 
    * include/net-snmp/system/darwin9.h:
-     CHANGES: patch from apple to fix cross-compile builds in apples
-     build environment.
+
+   CHANGES: patch from apple to fix cross-compile builds in apples
+   build environment.
 
 2007-06-18 20:54  hardaker
 
    * snmplib/snmp_parse_args.c:
-     CHANGES: patch: 1737085: from jsafranek: fix the -M switch for
-     mib parsing by loading defaults first before performing the set
-     so it does not get overwritten by the defaults later.
+
+   CHANGES: patch: 1737085: from jsafranek: fix the -M switch for
+   mib parsing by loading defaults first before performing the set
+   so it does not get overwritten by the defaults later.
 
 2007-06-18 20:50  hardaker
 
    * perl/SNMP/SNMP.xs:
-     NEWS: perl: patch: 1725049: fix bulkwalk in cases of non-repeater
-     usage.
+
+   NEWS: perl: patch: 1725049: fix bulkwalk in cases of non-repeater
+   usage.
 
 2007-06-18 14:10  tanders
 
    * perl/TrapReceiver/Makefile.PL:
-     CHANGES: perl: fix prerequisites for NetSNMP::TrapReceiver
+
+   CHANGES: perl: fix prerequisites for NetSNMP::TrapReceiver
 
 2007-06-18 13:39  tanders
 
    * perl/agent/Support/Support.pm:
-     CHANGES: perl: fix syntax error in NetSNMP::agent::Support
+
+   CHANGES: perl: fix syntax error in NetSNMP::agent::Support
+
+2007-06-16 23:01  tanders
+
+   *  agent/Makefile.in, apps/Makefile.in, configure, configure.in,   
+      net-snmp-config.in:
+
+   NEWS: perl: BUG: 1619827: link libnetsnmpagent/libnetsnmptrapd
+   (rather than snmpd/snmptrapd) against libperl.
 
 2007-06-14 15:41  rstory
 
    * local/mib2c.conf:
-     fix typo in user output, as noted on coders
+
+   fix typo in user output, as noted on coders
+
+2007-06-14 15:36  rstory
+
+   * dist/cvsshow:
+
+   use 'svn info' to query for url
 
 2007-06-14 04:37  magfr
 
    * agent/mibgroup/smux/smux.h:
-     Add missing argument type in order to silence a gcc warning
+
+   Add missing argument type in order to silence a gcc warning
+
+2007-06-13 06:37  magfr
+
+   * configure, configure.in:
+
+   Do not try to be clever in the handing of -lkvm in LAGENTLIBS.
+   Include it if any sought function is in it.
 
 2007-06-11 10:11  tanders
 
    * README.aix:
-     document xlc<->cc_r compiler issues with Perl on AIX (see bug
-     #1600099)
+
+   document xlc<->cc_r compiler issues with Perl on AIX (see bug
+   #1600099)
 
 2007-06-10 22:29  tanders
 
-   * configure, configure.in, include/net-snmp/net-snmp-config.h.in,
-     include/net-snmp/types.h:
-     CHANGES: build: PATCH: 1728247: from mitsuru_chinen: Add type
-     check for int??_t and uint??_t
+   *  configure, configure.in, include/net-snmp/net-snmp-config.h.in,   
+      include/net-snmp/types.h:
+
+   CHANGES: build: PATCH: 1728247: from mitsuru_chinen: Add type
+   check for int??_t and uint??_t
 
 2007-06-10 22:22  tanders
 
-   * configure, configure.in, include/net-snmp/net-snmp-config.h.in,
-     snmplib/snmpUDPIPv6Domain.c:
-     CHANGES: build: PATCH: 1728244: from mitsuru_chinen: Add
-     configure check for sin6_scope_id
+   *  configure, configure.in, include/net-snmp/net-snmp-config.h.in,   
+      snmplib/snmpUDPIPv6Domain.c:
+
+   CHANGES: build: PATCH: 1728244: from mitsuru_chinen: Add
+   configure check for sin6_scope_id
 
 2007-06-10 22:15  tanders
 
-   * configure, configure.in, include/net-snmp/net-snmp-config.h.in,
-     snmplib/snmpUDPDomain.c:
-     CHANGES: PATCH: 1728241: from mitsuru_chinen: add configure check
-     for <sys/uio.h> (make sure iov structure is declared)
+   *  configure, configure.in, include/net-snmp/net-snmp-config.h.in,   
+      snmplib/snmpUDPDomain.c:
+
+   CHANGES: PATCH: 1728241: from mitsuru_chinen: add configure check
+   for <sys/uio.h> (make sure iov structure is declared)
+
+2007-06-10 06:33  magfr
+
+   *  acconfig.h, configure, configure.in,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   Use NETSNMP_SEARCH_LIBS to simplify searching for system specific
+   libraries
+
+2007-06-10 06:26  magfr
+
+   * configure, configure.in:
+
+   Use NETSNMP_SEARCH_LIBS to simplify searching for -lsensors
+
+2007-06-10 06:18  magfr
+
+   *  acconfig.h, configure, configure.in,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   Use NETSNMP_SEARCH_LIBS to simplify searching for -ldevstat
+
+2007-06-10 06:13  magfr
+
+   *  agent/mibgroup/ucd-snmp/dlmod.c, configure, configure.in,   
+      include/net-snmp/net-snmp-config.h.in,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Use NETSNMP_SEARCH_LIBS to simplify searching for -ldl
+
+2007-06-09 08:58  magfr
+
+   *  configure, configure.in, include/net-snmp/net-snmp-config.h.in,   
+      win32/config.h.borland, win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Use NETSNMP_SEARCH_LIBS to simplify searching for -lkvm
 
 2007-06-08 20:32  tanders
 
-   * Makefile.in:
-     Fix regression introduced by r16479: 'make test TESTOPTS="-T
-     tcp"' now
-     works again. makerelease now uses the right option.
+   * Makefile.in, dist/makerelease:
+
+   Fix regression introduced by r16479: 'make test TESTOPTS="-T
+   tcp"' now
+   works again. makerelease now uses the right option.
+
+2007-06-08 10:46  dts12
+
+   * apps/snmptrapd.c, apps/snmptrapd_handlers.c:
+
+   CHANGES: snmptrapd: FEATURE: 741375: Extend -F flag to cover
+   syslog/execute format strings.
 
 2007-06-08 10:44  dts12
 
-   * apps/snmptrapd.c, apps/snmptrapd_handlers.c:
-     Improve memory handling of style-specific format strings.
+   * apps/snmptrapd_handlers.c:
+
+   Improve memory handling of style-specific format strings.
 
 2007-06-08 10:33  dts12
 
    * agent/mibgroup/host/hr_storage.c:
-     Default to reporting NFS mounts as NetworkDisk.
+
+   Default to reporting NFS mounts as NetworkDisk.
+
+2007-06-08 06:02  magfr
+
+   *  configure, configure.in, include/net-snmp/net-snmp-config.h.in,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Use NETSNMP_SEARCH_LIBS to simplify searching for -lrpm and
+   things it depends
+   on
+
+2007-06-08 05:59  magfr
+
+   * agent/helpers/Makefile.in:
+
+   Add missing \
+
+2007-06-08 05:31  magfr
+
+   * configure, configure.in:
+
+   Use NETSNMP_SEARCH_LIBS to simplify searching for -lkstat
+
+2007-06-08 05:28  magfr
+
+   * acinclude.m4:
+
+   CHANGES: building: Add a variation of AC_SEARCH_LIBS where the
+   result variable is settable.
 
 2007-06-08 05:16  magfr
 
-   * acconfig.h, include/net-snmp/net-snmp-config.h.in,
-     win32/net-snmp/net-snmp-config.h,
-     win32/net-snmp/net-snmp-config.h.in:
-     Remove the unused undef HAVE_PERL_EVAL_PV.
-     The Perl_eval_pv functions are handled by the
-     HAVE_PERL_EVAL_PV_[UL]C defines,
-     this one is never set by our configure script.
+   *  win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   Remove the unused undef HAVE_PERL_EVAL_PV.
+   The Perl_eval_pv functions are handled by the
+   HAVE_PERL_EVAL_PV_[UL]C defines,
+   this one is never set by our configure script.
 
 2007-06-07 16:02  dts12
 
-   * .cvsignore, agent/.cvsignore, agent/helpers/.cvsignore,
-     agent/mibgroup/.cvsignore, agent/mibgroup/Rmon/.cvsignore,
-     agent/mibgroup/agent/.cvsignore,
-     agent/mibgroup/agentx/.cvsignore,
-     agent/mibgroup/disman/.cvsignore,
-     agent/mibgroup/disman/event/.cvsignore,
-     agent/mibgroup/disman/expr/.cvsignore,
-     agent/mibgroup/disman/schedule/.cvsignore,
-     agent/mibgroup/examples/.cvsignore,
-     agent/mibgroup/hardware/cpu/.cvsignore,
-     agent/mibgroup/hardware/memory/.cvsignore,
-     agent/mibgroup/host/.cvsignore,
-     agent/mibgroup/if-mib/data_access/.cvsignore,
-     agent/mibgroup/if-mib/ifTable/.cvsignore,
-     agent/mibgroup/if-mib/ifXTable/.cvsignore,
-     agent/mibgroup/ip-forward-mib/data_access/.cvsignore,
-     agent/mibgroup/ip-forward-mib/inetCidrRouteTable/.cvsignore,
-     agent/mibgroup/ip-forward-mib/ipCidrRouteTable/.cvsignore,
-     agent/mibgroup/ip-mib/.cvsignore,
-     agent/mibgroup/ip-mib/data_access/.cvsignore,
-     agent/mibgroup/ip-mib/inetNetToMediaTable/.cvsignore,
-     agent/mibgroup/ip-mib/ipAddressPrefixTable/.cvsignore,
-     agent/mibgroup/ip-mib/ipAddressTable/.cvsignore,
-     agent/mibgroup/ip-mib/ipSystemStatsTable/.cvsignore,
-     agent/mibgroup/ip-mib/ipv4InterfaceTable/.cvsignore,
-     agent/mibgroup/ip-mib/ipv6InterfaceTable/.cvsignore,
-     agent/mibgroup/ipfwchains/.cvsignore,
-     agent/mibgroup/mibII/.cvsignore, agent/mibgroup/misc/.cvsignore,
-     agent/mibgroup/notification-log-mib/.cvsignore,
-     agent/mibgroup/notification/.cvsignore,
-     agent/mibgroup/smux/.cvsignore,
-     agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/.cvsignore,
-     agent/mibgroup/snmp-usm-dh-objects-mib/usmDHParameters/.cvsignore,
-     agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/.cvsignore,
-     agent/mibgroup/snmpv3/.cvsignore,
-     agent/mibgroup/target/.cvsignore,
-     agent/mibgroup/tcp-mib/data_access/.cvsignore,
-     agent/mibgroup/tcp-mib/tcpConnectionTable/.cvsignore,
-     agent/mibgroup/tcp-mib/tcpListenerTable/.cvsignore,
-     agent/mibgroup/ucd-snmp/.cvsignore,
-     agent/mibgroup/udp-mib/data_access/.cvsignore,
-     agent/mibgroup/udp-mib/udpEndpointTable/.cvsignore,
-     agent/mibgroup/utilities/.cvsignore, apps/.cvsignore,
-     apps/snmpnetstat/.cvsignore, dist/.cvsignore,
-     include/net-snmp/.cvsignore, include/net-snmp/agent/.cvsignore,
-     include/net-snmp/library/.cvsignore, include/ucd-snmp/.cvsignore,
-     local/.cvsignore, man/.cvsignore, mibs/.cvsignore, ov/.cvsignore,
-     perl/.cvsignore, perl/ASN/.cvsignore,
-     perl/AnyData_SNMP/.cvsignore, perl/OID/.cvsignore,
-     perl/SNMP/.cvsignore, perl/SNMP/t/.cvsignore,
-     perl/TrapReceiver/.cvsignore, perl/agent/.cvsignore,
-     perl/agent/Support/.cvsignore,
-     perl/agent/default_store/.cvsignore,
-     perl/default_store/.cvsignore, perl/manager/.cvsignore,
-     snmplib/.cvsignore, testing/.cvsignore, win32/.cvsignore,
-     win32/bin/.cvsignore, win32/encode_keychange/.cvsignore,
-     win32/lib/.cvsignore, win32/libagent/.cvsignore,
-     win32/libhelpers/.cvsignore, win32/libnetsnmptrapd/.cvsignore,
-     win32/libsnmp/.cvsignore, win32/libsnmp_dll/.cvsignore,
-     win32/libucdmibs/.cvsignore, win32/net-snmp/.cvsignore,
-     win32/net-snmp/agent/.cvsignore,
-     win32/net-snmp/library/.cvsignore, win32/netsnmpmibs/.cvsignore,
-     win32/netsnmpmibssdk/.cvsignore, win32/snmpbulkget/.cvsignore,
-     win32/snmpbulkwalk/.cvsignore, win32/snmpd/.cvsignore,
-     win32/snmpdelta/.cvsignore, win32/snmpdf/.cvsignore,
-     win32/snmpdsdk/.cvsignore, win32/snmpget/.cvsignore,
-     win32/snmpgetnext/.cvsignore, win32/snmpnetstat/.cvsignore,
-     win32/snmpset/.cvsignore, win32/snmpstatus/.cvsignore,
-     win32/snmptable/.cvsignore, win32/snmptest/.cvsignore,
-     win32/snmptranslate/.cvsignore, win32/snmptrap/.cvsignore,
-     win32/snmptrapd/.cvsignore, win32/snmpusm/.cvsignore,
-     win32/snmpvacm/.cvsignore, win32/snmpwalk/.cvsignore:
-     Remove redundant CVS-admin files.
+   *  .cvsignore, agent/.cvsignore, agent/helpers/.cvsignore,   
+      agent/mibgroup/.cvsignore, agent/mibgroup/Rmon/.cvsignore,   
+      agent/mibgroup/agent/.cvsignore,   
+      agent/mibgroup/agentx/.cvsignore,   
+      agent/mibgroup/disman/.cvsignore,   
+      agent/mibgroup/disman/event/.cvsignore,   
+      agent/mibgroup/disman/expr/.cvsignore,   
+      agent/mibgroup/disman/schedule/.cvsignore,   
+      agent/mibgroup/examples/.cvsignore,   
+      agent/mibgroup/hardware/cpu/.cvsignore,   
+      agent/mibgroup/hardware/memory/.cvsignore,   
+      agent/mibgroup/host/.cvsignore,   
+      agent/mibgroup/if-mib/data_access/.cvsignore,   
+      agent/mibgroup/if-mib/ifTable/.cvsignore,   
+      agent/mibgroup/if-mib/ifXTable/.cvsignore,   
+      agent/mibgroup/ip-forward-mib/data_access/.cvsignore,   
+      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/.cvsignore,   
+      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/.cvsignore,   
+      agent/mibgroup/ip-mib/.cvsignore,   
+      agent/mibgroup/ip-mib/data_access/.cvsignore,   
+      agent/mibgroup/ip-mib/inetNetToMediaTable/.cvsignore,   
+      agent/mibgroup/ip-mib/ipAddressPrefixTable/.cvsignore,   
+      agent/mibgroup/ip-mib/ipAddressTable/.cvsignore,   
+      agent/mibgroup/ip-mib/ipSystemStatsTable/.cvsignore,   
+      agent/mibgroup/ip-mib/ipv4InterfaceTable/.cvsignore,   
+      agent/mibgroup/ip-mib/ipv6InterfaceTable/.cvsignore,   
+      agent/mibgroup/ipfwchains/.cvsignore,   
+      agent/mibgroup/mibII/.cvsignore, agent/mibgroup/misc/.cvsignore,  
+       agent/mibgroup/notification-log-mib/.cvsignore,   
+      agent/mibgroup/notification/.cvsignore,   
+      agent/mibgroup/smux/.cvsignore,   
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/.cvsignore,
+        
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHParameters/.cvsignore,
+        
+      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/.cvsignore,
+         agent/mibgroup/snmpv3/.cvsignore,   
+      agent/mibgroup/target/.cvsignore,   
+      agent/mibgroup/tcp-mib/data_access/.cvsignore,   
+      agent/mibgroup/tcp-mib/tcpConnectionTable/.cvsignore,   
+      agent/mibgroup/tcp-mib/tcpListenerTable/.cvsignore,   
+      agent/mibgroup/ucd-snmp/.cvsignore,   
+      agent/mibgroup/udp-mib/data_access/.cvsignore,   
+      agent/mibgroup/udp-mib/udpEndpointTable/.cvsignore,   
+      agent/mibgroup/utilities/.cvsignore, apps/.cvsignore,   
+      apps/snmpnetstat/.cvsignore, dist/.cvsignore,   
+      include/net-snmp/.cvsignore, include/net-snmp/agent/.cvsignore,   
+      include/net-snmp/library/.cvsignore, include/ucd-snmp/.cvsignore, 
+        local/.cvsignore, man/.cvsignore, mibs/.cvsignore,
+      ov/.cvsignore,    perl/.cvsignore, perl/ASN/.cvsignore,   
+      perl/AnyData_SNMP/.cvsignore, perl/OID/.cvsignore,   
+      perl/SNMP/.cvsignore, perl/SNMP/t/.cvsignore,   
+      perl/TrapReceiver/.cvsignore, perl/agent/.cvsignore,   
+      perl/agent/Support/.cvsignore,   
+      perl/agent/default_store/.cvsignore,   
+      perl/default_store/.cvsignore, perl/manager/.cvsignore,   
+      snmplib/.cvsignore, testing/.cvsignore, win32/.cvsignore,   
+      win32/bin/.cvsignore, win32/encode_keychange/.cvsignore,   
+      win32/lib/.cvsignore, win32/libagent/.cvsignore,   
+      win32/libhelpers/.cvsignore, win32/libnetsnmptrapd/.cvsignore,   
+      win32/libsnmp/.cvsignore, win32/libsnmp_dll/.cvsignore,   
+      win32/libucdmibs/.cvsignore, win32/net-snmp/.cvsignore,   
+      win32/net-snmp/agent/.cvsignore,   
+      win32/net-snmp/library/.cvsignore, win32/netsnmpmibs/.cvsignore,  
+       win32/netsnmpmibssdk/.cvsignore, win32/snmpbulkget/.cvsignore,   
+      win32/snmpbulkwalk/.cvsignore, win32/snmpd/.cvsignore,   
+      win32/snmpdelta/.cvsignore, win32/snmpdf/.cvsignore,   
+      win32/snmpdsdk/.cvsignore, win32/snmpget/.cvsignore,   
+      win32/snmpgetnext/.cvsignore, win32/snmpnetstat/.cvsignore,   
+      win32/snmpset/.cvsignore, win32/snmpstatus/.cvsignore,   
+      win32/snmptable/.cvsignore, win32/snmptest/.cvsignore,   
+      win32/snmptranslate/.cvsignore, win32/snmptrap/.cvsignore,   
+      win32/snmptrapd/.cvsignore, win32/snmpusm/.cvsignore,   
+      win32/snmpvacm/.cvsignore, win32/snmpwalk/.cvsignore:
+
+   Remove redundant CVS-admin files.
 
 2007-06-07 12:56  dts12
 
    * snmplib/snmp_secmod.c:
-     Handle unregistering the first Security Model in the list.
-     Reported by Aleksandr Lomanov.
+
+   Handle unregistering the first Security Model in the list.
+   Reported by Aleksandr Lomanov.
 
 2007-06-07 09:13  dts12
 
    * agent/helpers/Makefile.in:
-     Install header files for stash_cache and stash_to_next helpers.
+
+   Install header files for stash_cache and stash_to_next helpers.
 
 2007-06-07 09:07  dts12
 
    * agent/helpers/Makefile.in:
-     Separate out header files that don't have a corresponding C
-     source file.
+
+   Separate out header files that don't have a corresponding C
+   source file.
 
 2007-06-07 08:59  dts12
 
    * agent/helpers/Makefile.in:
-     Sort lists of helpers (source code, object files and headers).
-     This should make it easier to spot files that have been omitted.
+
+   Sort lists of helpers (source code, object files and headers).
+   This should make it easier to spot files that have been omitted.
 
 2007-06-07 08:42  dts12
 
    * snmplib/read_config.c:
-     Protect against systems without S_ISDIR.
+
+   Protect against systems without S_ISDIR.
+
+2007-06-06 22:36  magfr
+
+   * configure, configure.in:
+
+   We aren't using libtools dlopen support, so there is no need to
+   configure for it
 
 2007-06-06 12:37  tanders
 
    * configure, configure.in:
-     CHANGES: AIX: use "-Wl,-brtl" when compiling with gcc
+
+   CHANGES: AIX: use "-Wl,-brtl" when compiling with gcc
+
+2007-06-06 10:26  magfr
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in:
+
+   Remove the unused undef HAVE_PERL_EVAL_PV.
+   The Perl_eval_pv functions are handled by the
+   HAVE_PERL_EVAL_PV_[UL]C defines,
+   this one is never set by our configure script.
 
 2007-06-06 10:20  dts12
 
    * apps/snmptrapd.c:
-     Ensure output is properly directed to syslog.
-     Otherwise, problems in the config environment can trigger
-     errors being directed to stderr, and subsequent logging
-     output gets lost.
+
+   Ensure output is properly directed to syslog.
+   Otherwise, problems in the config environment can trigger
+   errors being directed to stderr, and subsequent logging
+   output gets lost.
 
 2007-06-06 10:13  dts12
 
    * snmplib/snmp_client.c:
-     More helpful debugging output.
+
+   More helpful debugging output.
 
 2007-06-06 05:53  magfr
 
-   * apps/snmptrapd.c, apps/snmptrapd_handlers.c,
-     testing/tests/T035snmpv3trapdusermgmt:
-     CHANGES: misc: Don't use the legacy symbol
-     SNMPTRAPD_DISABLE_AGENTX
+   *  apps/snmptrapd.c, apps/snmptrapd_handlers.c,   
+      testing/tests/T035snmpv3trapdusermgmt:
+
+   CHANGES: misc: Don't use the legacy symbol
+   SNMPTRAPD_DISABLE_AGENTX
+
+2007-06-05 17:49  magfr
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: building: Remove explicit definitions of items that
+   autoheader also defines
 
 2007-06-05 15:59  dts12
 
    * agent/mibgroup/disman/event/mteEvent.c:
-     CHANGES: snmpd: PATCHES: 1729629: Fix memory leak in disman
-     agent.
+
+   CHANGES: snmpd: PATCHES: 1729629: Fix memory leak in disman
+   agent.
+
+2007-06-05 14:52  dts12
+
+   * apps/snmptrapd_handlers.c:
+
+   CHANGES: snmptrapd: Support per-trap format specifications
+
+2007-06-05 06:57  magfr
+
+   * net-snmp-config.in:
+
+   NEWS: misc: Add config rereading support to the subagent
+   generated by net-snmp-config --compile-subagent
+
+2007-06-04 22:29  magfr
+
+   *  acconfig.h, configure, configure.in,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: building: Simplify the detection of libraries needed for
+   gethostbyname
 
 2007-06-04 22:06  magfr
 
    * snmplib/snmp_api.c:
-     NEWS: snmplib: Change snmp_sess_add_ex to consistently close and
-     delete the transport argument on failure, earlier the liveness of
-     the transport argument was undecided.
 
-2007-06-04 15:50  hardaker
-
-   * FAQ, README, configure, configure.in, dist/net-snmp.spec,
-     sedscript.in, snmplib/snmp_version.c:
-     - version tag ( 5.4.1.pre2 )
-
-2007-06-04 15:50  hardaker
-
-   * CHANGES, NEWS:
-     version update
-
-2007-06-04 15:44  hardaker
-
-   * ChangeLog:
-     version update
-
-2007-06-04 15:42  hardaker
-
-   * agent/Makefile.depend:
-     make depend
-
-2007-06-04 15:41  hardaker
-
-   * man/netsnmp_agent.3, man/netsnmp_agent_registry.3,
-     man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,
-     man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,
-     man/netsnmp_cache_handler.3, man/netsnmp_callback.3,
-     man/netsnmp_container.3, man/netsnmp_data_list.3,
-     man/netsnmp_debug.3, man/netsnmp_default_store.3,
-     man/netsnmp_handler.3, man/netsnmp_instance.3,
-     man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,
-     man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,
-     man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,
-     man/netsnmp_multiplexer.3,
-     man/netsnmp_netsnmp_agent_request_info_s.3,
-     man/netsnmp_netsnmp_column_info_t.3,
-     man/netsnmp_netsnmp_data_list_s.3,
-     man/netsnmp_netsnmp_handler_registration_s.3,
-     man/netsnmp_netsnmp_iterator_info_s.3,
-     man/netsnmp_netsnmp_mib_handler_access_methods.3,
-     man/netsnmp_netsnmp_mib_handler_methods.3,
-     man/netsnmp_netsnmp_mib_handler_s.3,
-     man/netsnmp_netsnmp_request_info_s.3,
-     man/netsnmp_netsnmp_table_registration_info_s.3,
-     man/netsnmp_netsnmp_table_request_info_s.3,
-     man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,
-     man/netsnmp_read_config.3, man/netsnmp_read_only.3,
-     man/netsnmp_row_merge.3, man/netsnmp_scalar.3,
-     man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,
-     man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,
-     man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,
-     man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,
-     man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,
-     man/netsnmp_table.3, man/netsnmp_table_array.3,
-     man/netsnmp_table_container.3, man/netsnmp_table_data.3,
-     man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,
-     man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,
-     man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,
-     man/netsnmp_table_rows.3, man/netsnmp_tdata.3,
-     man/netsnmp_util.3, man/netsnmp_utilities.3,
-     man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
-     documentation update
-
-2007-06-04 15:39  hardaker
-
-   * doxygen.conf:
-     - version tag ( 5.4.1.pre2 )
+   NEWS: snmplib: Change snmp_sess_add_ex to consistently close and
+   delete the transport argument on failure, earlier the liveness of
+   the transport argument was undecided.
 
 2007-06-04 14:36  hardaker
 
-   * Makefile.in, testing/RUNTESTS:
-     CHANGES: test: support a -n flag to RUNTESTS to print the test
-     number found in the test file as opposed to the numerical count
+   * Makefile.in, dist/makerelease, testing/RUNTESTS:
+
+   CHANGES: test: support a -n flag to RUNTESTS to print the test
+   number found in the test file as opposed to the numerical count
 
 2007-06-04 13:09  tanders
 
    * snmplib/snmpUDPDomain.c:
-     CHANGES: build: PATCH: 1728237: from mitsuru_chinen: Move
-     variable declaration at the top of netsnmp_udp_sendto
+
+   CHANGES: build: PATCH: 1728237: from mitsuru_chinen: Move
+   variable declaration at the top of netsnmp_udp_sendto
+
+2007-06-04 12:52  tanders
+
+   *  configure, configure.in, include/net-snmp/net-snmp-config.h.in,   
+      include/net-snmp/types.h:
+
+   CHANGES: build: PATCH: 1728233: from mitsuru_chinen: make sure
+   type nfds_t is defined
 
 2007-06-04 12:13  tanders
 
-   * agent/mibgroup/disman/ping/pingCtlTable.c, configure,
-     configure.in, include/net-snmp/net-snmp-config.h.in,
-     snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c:
-     CHANGES: build: PATCH: 1728230: from mitsuru_chinen: add
-     configure check for gai_strerror()
+   *  agent/mibgroup/disman/ping/pingCtlTable.c, configure,   
+      configure.in, include/net-snmp/net-snmp-config.h.in,   
+      snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c:
+
+   CHANGES: build: PATCH: 1728230: from mitsuru_chinen: add
+   configure check for gai_strerror()
 
 2007-06-04 10:35  tanders
 
    * agent/mibgroup/if-mib/data_access/interface_linux.c:
-     CHANGES: build: PATCH: 1728226: from mitsuru_chinen: make sure
-     IF_NAMESIZE is defined
+
+   CHANGES: build: PATCH: 1728226: from mitsuru_chinen: make sure
+   IF_NAMESIZE is defined
+
+2007-06-04 10:28  tanders
+
+   *  agent/mibgroup/ip-mib/data_access/defaultrouter_linux.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c, configure,   
+      configure.in, include/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: build: PATCH: 1728223: from mitsuru_chinen: add
+   configure check for netlink socket
 
 2007-06-04 09:47  tanders
 
    * testing/tests/T160snmpnetstat:
-     also skip this test on IRIX64
+
+   also skip this test on IRIX64
+
+2007-06-02 16:13  magfr
+
+   * configure, configure.in:
+
+   CHANGES: building: Fix compilation on IRIX
 
 2007-06-02 08:24  magfr
 
-   * acconfig.h, configure, configure.in,
-     include/net-snmp/net-snmp-config.h.in,
-     include/net-snmp/system/dynix.h,
-     include/net-snmp/system/mingw32.h, snmplib/snmp_api.c,
-     win32/config.h.borland, win32/net-snmp/net-snmp-config.h,
-     win32/net-snmp/net-snmp-config.h.in:
-     CHANGES: snmpapi: Do not use getservbyname to find default port
-     numbers, just hardcode them and let the user override them if
-     needed.
+   *  acconfig.h, configure, configure.in,   
+      include/net-snmp/net-snmp-config.h.in,   
+      include/net-snmp/system/dynix.h,   
+      include/net-snmp/system/mingw32.h, snmplib/snmp_api.c,   
+      win32/config.h.borland, win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: snmpapi: Do not use getservbyname to find default port
+   numbers, just hardcode them and let the user override them if
+   needed.
 
 2007-06-01 22:55  tanders
 
    * configure, configure.in:
-     CHANGES: build: Link libdl against libnetsnmpmibs instead of
-     snmpd.
-     Fixes the build on (some) Solaris systems.
 
-2007-06-01 21:36  dts12
+   CHANGES: build: Link libdl against libnetsnmpmibs instead of
+   snmpd.
+   Fixes the build on (some) Solaris systems.
 
-   * snmplib/read_config.c:
-     CHANGES: snmplib: FEATURES: 1041888: Check directory paths for
-     config files.
-     Backport from main development trunk of bug fix.
+2007-06-01 22:34  tanders
 
-2007-06-01 21:23  dts12
+   * configure, configure.in:
 
-   * snmplib/snmp_api.c:
-     CHANGES: snmplib: FEATURES: 851887: Report range information for
-     invalid SET requests.
-     Backport from main trunk of bug fix.
+   fix NETSNMP_IFNET_NEEDS_KERNEL configure check on IRIX
+   (regression from r16451)
+
+2007-06-01 14:33  dts12
+
+   * apps/snmptrapd.c:
+
+   NEWS: snmptrapd: Withdraw deprecated options.
+   (Three and a half years' warning should be enough for anyone!)
 
 2007-05-31 23:51  tanders
 
-   * agent/Makefile.in, apps/Makefile.in, configure, configure.in,
-     net-snmp-config.in:
-     CHANGES: build: Link libkvm and libwrap to libnetsnmpagent
-     instead of snmpd.
-     Fixes test #44 (Perl subagent) on systems using one of those
-     libraries.
+   *  agent/Makefile.in, apps/Makefile.in, configure, configure.in,   
+      net-snmp-config.in:
+
+   CHANGES: build: Link libkvm and libwrap to libnetsnmpagent
+   instead of snmpd.
+   Fixes test #44 (Perl subagent) on systems using one of those
+   libraries.
+
+2007-05-31 23:42  magfr
+
+   *  README.agent-mibs, agent/mibgroup/mibII/sysORTable.c,   
+      agent/mibgroup/mibII/system_mib.c,   
+      agent/mibgroup/mibII/system_mib.h:
+
+   CHANGES: snmpd: Move sysORLastChange from mibII/system_mib to
+   mibII/sysORTable in order to keep the data and the use together.
 
 2007-05-31 14:39  dts12
 
    * apps/snmptrapd_log.c:
-     Fix logging of authentication information.
+
+   Fix logging of authentication information.
 
 2007-05-31 10:10  dts12
 
    * apps/snmptrapd_log.c:
-     Remove bogus debug output.
+
+   Remove bogus debug output.
+
+2007-05-31 09:48  dts12
+
+   * apps/snmptrapd_handlers.c:
+
+   Remove redundant code.
+
+2007-05-31 09:43  dts12
+
+   * apps/snmptrapd_handlers.c:
+
+   CHANGES: snmptrapd: FEATURE: 1159947: Allow control of traphandle
+   data format
 
 2007-05-30 22:53  tanders
 
-   * configure, configure.in, perl/ASN/Makefile.PL,
-     perl/OID/Makefile.PL, perl/SNMP/Makefile.PL,
-     perl/TrapReceiver/Makefile.PL, perl/agent/Makefile.PL,
-     perl/default_store/Makefile.PL:
-     CHANGES: AIX: build fixes for embedded Perl
+   *  configure, configure.in, perl/ASN/Makefile.PL,   
+      perl/OID/Makefile.PL, perl/SNMP/Makefile.PL,   
+      perl/TrapReceiver/Makefile.PL, perl/agent/Makefile.PL,   
+      perl/default_store/Makefile.PL:
+
+   CHANGES: AIX: build fixes for embedded Perl
+
+2007-05-30 22:34  tanders
+
+   * configure, configure.in:
+
+   HP-UX 11.x and IRIX 6.5 build fix (regression introduced by
+   r16451)
+
+2007-05-29 23:04  tanders
+
+   * configure, configure.in:
+
+   CHANGES: build: make use of AC_PROG_SED/AC_PROG_GREP and / to
+   further minimize sed/grep problems
 
 2007-05-29 22:42  magfr
 
    * snmplib/snmpUDPIPv6Domain.c:
-     CHANGES: snmplib: Use the default_target argument if it is
-     non-NULL, not if it is NULL.
+
+   CHANGES: snmplib: Use the default_target argument if it is
+   non-NULL, not if it is NULL.
+
+2007-05-29 10:30  tanders
+
+   * win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: building: Remove more net-snmp specials in the configure
+   scripts to ease maintenance.
+   Also change recently added STRUCT_SOCKADDR_STORAGE_HAS_SS_FAMILY.
 
 2007-05-29 10:27  tanders
 
    * README.agent-mibs:
-     add recent mfd rewrites
+
+   add recent mfd rewrites
+
+2007-05-29 10:22  tanders
+
+   * win32/net-snmp/net-snmp-config.h:
+
+   CHANGES: building: Remove more net-snmp specials in the configure
+   scripts to ease maintenance.
+   Also change win32/net-snmp/net-snmp-config.h for consistency.
+
+2007-05-28 23:30  magfr
+
+   *  PORTING, acconfig.h, acinclude.m4,   
+      agent/mibgroup/host/hr_filesys.c,   
+      agent/mibgroup/host/hr_storage.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/ipv6.c,   
+      agent/mibgroup/mibII/mibII_common.h,   
+      agent/mibgroup/mibII/route_headers.h,   
+      agent/mibgroup/mibII/route_write.c, agent/mibgroup/mibII/tcp.c,   
+      agent/mibgroup/mibII/udp.c, agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/ucd-snmp/disk.c,   
+      agent/mibgroup/ucd-snmp/pass_persist.c, configure, configure.in,  
+       include/net-snmp/net-snmp-config.h.in,   
+      include/net-snmp/system/freebsd5.h,   
+      include/net-snmp/system/irix.h, include/net-snmp/system/svr5.h,   
+      snmplib/scapi.c, snmplib/snmp-tc.c, snmplib/snmpUDPIPv6Domain.c,  
+       snmplib/system.c:
+
+   CHANGES: building: Remove more net-snmp specials in the configure
+   scripts to ease maintenance.
+
+2007-05-28 16:31  dts12
+
+   * man/snmp.conf.5.def, man/snmpcmd.1.def, snmplib/mib.c:
+
+   CHANGES: library: FEATURES: 1407476: Rename 'strictCommentTerm'
+   to reflect the actual behaviour.
+
+2007-05-28 15:25  dts12
+
+   * snmplib/read_config.c:
+
+   CHANGES: library: FEATURES: 1041888: Check directory paths for
+   config files.
+
+2007-05-28 13:13  dts12
+
+   * snmplib/snmp_api.c:
+
+   CHANGES: library: FEATURES: 851887: Report range information for
+   invalid SET requests.
+
+2007-05-28 12:08  tanders
+
+   *  agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c,   
+      agent/mibgroup/ip-mib/data_access/systemstats_solaris2.c:
+
+   NEWS: Solaris: PATCH: 1719730: from apersson: support for
+   ipSystemStatsTable and ipAddressTable
+   Part 2 (Solaris-specific new files)
+
+2007-05-28 12:02  tanders
+
+   * include/net-snmp/data_access/defaultrouter.h:
+
+   NEWS: Linux: PATCH: 1724602: from mitsuru_chinen: mfd-based
+   ipDefaultRouterTable implementation
+
+2007-05-28 12:00  tanders
+
+   *  agent/mibgroup/ip-mib/data_access/defaultrouter.h,   
+      agent/mibgroup/ip-mib/data_access/defaultrouter_common.c,   
+      agent/mibgroup/ip-mib/data_access/defaultrouter_linux.c,   
+      agent/mibgroup/ip-mib/ipDefaultRouterTable,   
+      agent/mibgroup/ip-mib/ipDefaultRouterTable.h,   
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.c,
+        
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h,
+        
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c,
+        
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.h,
+        
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_get.c,
+        
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_get.h,
+        
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_enums.h,
+        
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c,
+        
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.h,
+        
+      agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_oids.h:
+
+   NEWS: Linux: PATCH: 1724602: from mitsuru_chinen: mfd-based
+   ipDefaultRouterTable implementation
+
+2007-05-28 11:59  tanders
+
+   *  agent/mibgroup/mibII/ip.c, agent/mibgroup/mibII/ip.h,   
+      agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/mibII/var_route.h:
+
+   NEWS: Linux: PATCH: 1724602: from mitsuru_chinen: mfd-based
+   ipDefaultRouterTable implementation
+
+2007-05-28 10:09  dts12
+
+   * apps/snmpwalk.c, man/snmpwalk.1.def:
+
+   Document the -CE option.
 
 2007-05-27 21:42  tanders
 
    * perl/TrapReceiver/Makefile.PL, perl/agent/Makefile.PL:
-     Some lame linkers (e.g. on HP-UX 11.23/IA64) need quite a bit of
-     help to successfully link the Perl modules.
+
+   Some lame linkers (e.g. on HP-UX 11.23/IA64) need quite a bit of
+   help to successfully link the Perl modules.
+
+2007-05-27 21:33  dts12
+
+   * apps/snmpwalk.c:
+
+   CHANGES: snmpwalk: PATCH: 1723620: Specify an explicit end-point
+   for the walk.
+   An alternative (more flexible) approach to the proposed patch,
+   but one that
+   provides equivalent functionality. Also addresses Feature Request
+   #722784.
 
 2007-05-27 20:52  tanders
 
    * configure, configure.in, include/net-snmp/net-snmp-config.h.in:
-     Add descriptions to AC_DEFINE; drop obsolete AC_CHECK_LIB(m,
-     asin).
 
-2007-05-27 19:54  dts12
+   Add descriptions to AC_DEFINE; drop obsolete AC_CHECK_LIB(m,
+   asin).
 
-   * snmplib/parse.c:
-     CHANGES: library: FEATURES: 454028: Detect and handle empty MIB
-     index files.
+2007-05-27 19:28  dts12
+
+   * snmplib/mib.c:
+
+   CHANGES: library: FEATURES: 454028: Detect empty MIB index files.
+
+2007-05-27 19:06  dts12
+
+   *  agent/snmpd.c, configure, configure.in,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: snmpd: FEATURES: 1019429: Set supplementary groups via
+   initgroups(3)
+
+2007-05-27 06:27  tanders
+
+   *  agent/mibgroup/if-mib/data_access/interface_solaris2.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress.h,   
+      agent/mibgroup/ip-mib/data_access/systemstats.h,   
+      agent/mibgroup/kernel_sunos5.c, agent/mibgroup/kernel_sunos5.h,   
+      agent/mibgroup/mibII.h, configure, configure.in,   
+      include/net-snmp/system/solaris.h:
+
+   NEWS: Solaris: PATCH: 1719730: from apersson: support for
+   ipSystemStatsTable and ipAddressTable
 
 2007-05-27 06:20  tanders
 
    * README.aix:
-     grammar fix
+
+   grammar fix
 
 2007-05-26 16:41  alex_b
 
-   * README.win32, win32/Configure, win32/build.pl,
-     win32/net-snmp/net-snmp-config.h,
-     win32/net-snmp/net-snmp-config.h.in:
-     Win32 IPv6 build fixes. IPv6 now requires PSDK.
+   *  README.win32, win32/Configure, win32/build.pl,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
 
-2007-05-26 15:14  alex_b
+   Win32 IPv6 build fixes. IPv6 now requires PSDK.
 
-   * README.win32, win32/net-snmp/net-snmp-config.h,
-     win32/net-snmp/net-snmp-config.h.in:
-     IPv6 build fixes for build.bat, Configure and README.win32.
+2007-05-26 15:16  alex_b
+
+   *  README.win32, win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   IPv6 build fixes for build.bat, Configure and README.win32.
 
 2007-05-25 23:03  tanders
 
    * README.aix, README.solaris, README.tru64:
-     Documentation update w.r.t. recent changes (mibII/ipv6 and AIX
-     shared library building).
+
+   Documentation update w.r.t. recent changes (mibII/ipv6 and AIX
+   shared library building).
+
+2007-05-25 18:54  rstory
+
+   * dist/cvsshow:
+
+   update for new url format in svn entries
 
 2007-05-25 15:28  tanders
 
    * perl/default_store/Makefile.PL:
-     Some systems (e.g. HP-UX 11.23/IA64) currently still need
-     "net-snmp-config --libs" (instead of just --netsnmp-libs) for
-     linking
-     libnetsnmp to a Perl module.
+
+   Some systems (e.g. HP-UX 11.23/IA64) currently still need
+   "net-snmp-config --libs" (instead of just --netsnmp-libs) for
+   linking
+   libnetsnmp to a Perl module.
 
 2007-05-24 23:55  tanders
 
    * agent/mibgroup/mibII.h, configure, configure.in:
-     CHANGES: build: only enable mibII/ipv6 through --enable-ipv6 on
-     systems it builds properly on (Linux and *BSD)
+
+   CHANGES: build: only enable mibII/ipv6 through --enable-ipv6 on
+   systems it builds properly on (Linux and *BSD)
 
 2007-05-24 23:15  tanders
 
    * perl/agent/default_store/Makefile.PL:
-     Some systems (e.g. HP-UX 11.23/IA64) currently still need
-     "net-snmp-config --libs" (instead of just --netsnmp-libs) for
-     linking libsnmpagent to a Perl module.
+
+   Some systems (e.g. HP-UX 11.23/IA64) currently still need
+   "net-snmp-config --libs" (instead of just --netsnmp-libs) for
+   linking libsnmpagent to a Perl module.
 
 2007-05-24 22:01  magfr
 
    * agent/mibgroup/mibII/ipv6.c:
-     Correct obviously broken use of the KLOOKUP macro to be
-     consistent at least
+
+   Correct obviously broken use of the KLOOKUP macro to be
+   consistent at least
 
 2007-05-24 20:51  tanders
 
    * include/net-snmp/system/freebsd7.h:
-     CHANGES: FreeBSD: add initial support for upcoming FreeBSD 7
+
+   CHANGES: FreeBSD: add initial support for upcoming FreeBSD 7
+
+2007-05-24 14:06  rstory
+
+   * Makefile.top:
+
+   bump libcurrent to 20 to leave space for 5.4.x releases
 
 2007-05-24 12:48  tanders
 
    * agent/Makefile.in, apps/Makefile.in:
-     fix library linking on HP-UX 11.23/IA64
 
-2007-05-24 08:36  tanders
-
-   * Makefile.top:
-     CHANGES: snmplib: increment "current" and "age" according to
-     libtool
-     versioning policy, since interfaces have been added since 5.4.
-     We now build libnetsnmp.so.15.1.0.
-     5.4.1.pre1 was broken in this regard.
+   fix library linking on HP-UX 11.23/IA64
 
 2007-05-23 19:05  tanders
 
-   * Makefile.in, Makefile.rules, agent/Makefile.in,
-     agent/helpers/Makefile.in, apps/Makefile.in, configure,
-     configure.in, perl/TrapReceiver/Makefile.PL,
-     perl/agent/Makefile.PL, perl/agent/default_store/Makefile.PL,
-     perl/default_store/Makefile.PL, snmplib/Makefile.in:
-     NEWS: snmplib: BUG: 1619827: link net-snmp libraries and binaries
-     against the net-snmp libraries they really depend on
-     - reflect library interdependencies at link time
-     - fix dependencies on libcrypto, libpkcs11 and libkstat
-     - install libraries in correct order (important for libtool
-     relinking)
-     NEWS: Perl: link Perl modules against the exact set of libraries
-     they depend on
+   *  Makefile.in, Makefile.rules, agent/Makefile.in,   
+      agent/helpers/Makefile.in, apps/Makefile.in, configure,   
+      configure.in, perl/TrapReceiver/Makefile.PL,   
+      perl/agent/Makefile.PL, perl/agent/default_store/Makefile.PL,   
+      perl/default_store/Makefile.PL, snmplib/Makefile.in:
 
-2007-05-22 14:40  hardaker
+   NEWS: snmplib: BUG: 1619827: link net-snmp libraries and binaries
+   against the net-snmp libraries they really depend on
+   - reflect library interdependencies at link time
+   - fix dependencies on libcrypto, libpkcs11 and libkstat
+   - install libraries in correct order (important for libtool
+   relinking)
+   NEWS: Perl: link Perl modules against the exact set of libraries
+   they depend on
 
-   * FAQ, README, configure, configure.in, dist/net-snmp.spec,
-     perl/ASN/ASN.pm, perl/AnyData_SNMP/Storage.pm, perl/OID/OID.pm,
-     perl/SNMP/SNMP.pm, perl/TrapReceiver/TrapReceiver.pm,
-     perl/agent/Support/Support.pm, perl/agent/agent.pm,
-     perl/agent/default_store/default_store.pm,
-     perl/default_store/default_store.pm, sedscript.in,
-     snmplib/snmp_version.c:
-     version stamp 5.4.1.pre1
+2007-05-22 16:26  hardaker
 
-2007-05-22 00:24  hardaker
+   * dist/makerelease:
 
-   * CHANGES, NEWS:
-     version update
-
-2007-05-22 00:19  hardaker
-
-   * ChangeLog:
-     version update
-
-2007-05-22 00:01  hardaker
-
-   * agent/Makefile.depend, agent/helpers/Makefile.depend,
-     agent/mibgroup/Makefile.depend, apps/Makefile.depend,
-     apps/snmpnetstat/Makefile.depend, snmplib/Makefile.depend:
-     make depend
+   use svn export instead of checkout
 
 2007-05-22 00:00  hardaker
 
    * Makefile.in:
-     ignore winExtDLL in comment check
+
+   ignore winExtDLL in comment check
 
 2007-05-21 23:54  hardaker
 
    * agent/mibgroup/hardware/cpu/cpu_sysinfo.c:
-     // -> C comment
 
-2007-05-21 23:51  hardaker
+   // -> C comment
 
-   * man/netsnmp_agent.3, man/netsnmp_agent_registry.3,
-     man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3,
-     man/netsnmp_baby_steps.3, man/netsnmp_bulk_to_next.3,
-     man/netsnmp_cache_handler.3, man/netsnmp_callback.3,
-     man/netsnmp_container.3, man/netsnmp_data_list.3,
-     man/netsnmp_debug.3, man/netsnmp_default_store.3,
-     man/netsnmp_handler.3, man/netsnmp_instance.3,
-     man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,
-     man/netsnmp_library.3, man/netsnmp_mib_maintenance.3,
-     man/netsnmp_mib_utilities.3, man/netsnmp_mode_end_call.3,
-     man/netsnmp_multiplexer.3,
-     man/netsnmp_netsnmp_agent_request_info_s.3,
-     man/netsnmp_netsnmp_column_info_t.3,
-     man/netsnmp_netsnmp_data_list_s.3,
-     man/netsnmp_netsnmp_handler_registration_s.3,
-     man/netsnmp_netsnmp_iterator_info_s.3,
-     man/netsnmp_netsnmp_mib_handler_access_methods.3,
-     man/netsnmp_netsnmp_mib_handler_methods.3,
-     man/netsnmp_netsnmp_mib_handler_s.3,
-     man/netsnmp_netsnmp_request_info_s.3,
-     man/netsnmp_netsnmp_table_registration_info_s.3,
-     man/netsnmp_netsnmp_table_request_info_s.3,
-     man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,
-     man/netsnmp_read_config.3, man/netsnmp_read_only.3,
-     man/netsnmp_row_merge.3, man/netsnmp_scalar.3,
-     man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3,
-     man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3,
-     man/netsnmp_snmp_client.3, man/netsnmp_snmp_logging.3,
-     man/netsnmp_snmp_pdu.3, man/netsnmp_snmp_session.3,
-     man/netsnmp_stash_cache.3, man/netsnmp_stash_to_next.3,
-     man/netsnmp_table.3, man/netsnmp_table_array.3,
-     man/netsnmp_table_container.3, man/netsnmp_table_data.3,
-     man/netsnmp_table_dataset.3, man/netsnmp_table_generic.3,
-     man/netsnmp_table_indexes.3, man/netsnmp_table_iterator.3,
-     man/netsnmp_table_iterator.h.3, man/netsnmp_table_maintenance.3,
-     man/netsnmp_table_rows.3, man/netsnmp_tdata.3,
-     man/netsnmp_util.3, man/netsnmp_utilities.3,
-     man/netsnmp_variable_list.3, man/netsnmp_watcher.3:
-     documentation update
+2007-05-21 23:33  tanders
+
+   *  include/net-snmp/system/solaris2.10.h,   
+      include/net-snmp/system/solaris2.7.h,   
+      include/net-snmp/system/solaris2.8.h,   
+      include/net-snmp/system/solaris2.9.h:
+
+   sync with 5.4, these are obsolete now
 
 2007-05-21 23:11  magfr
 
    * configure, configure.in:
-     CHANGES: building: Disable inlining on solaris as there are some
-     linking errors that show up if the inline support is left
-     enabled.
-
-2007-05-21 22:46  hardaker
-
-   * doxygen.conf:
-     - version tag ( 5.4.1.pre1 )
-
-2007-05-21 22:22  hardaker
-
-   * Makefile.top:
-     version update
-
-2007-05-21 23:51  hardaker
-
-   documentation update
-
-2007-05-21 23:11  magfr
 
    CHANGES: building: Disable inlining on solaris as there are some
    linking errors that show up if the inline support is left
    enabled.
 
-2007-05-21 22:46  hardaker
+2007-05-21 06:05  magfr
 
-   - version tag ( 5.4.1.pre1 )
+   * configure, configure.in:
 
-2007-05-21 22:22  hardaker
-
-   version update
+   CHANGES: building: At least Sun C 5.7 fails if one tries to
+   access __func__ in a extern inline function, so test for that
+   case.
 
 2007-05-20 21:34  tanders
 
-	* agent/Makefile.in, configure, configure.in:
-	  NEWS: snmplib: BUG: 1619827: link against needed external
-	  libraries at library link time (where they are referenced),
-	  rather than application link time.
-	  Already covers most of libnetsnmpmibs' external dependencies.
-	  Fixes build issues on some platforms (e.g. building with shared
-	  libraries on AIX). Tested on different versions of Linux,
-	  Solaris, HP-UX, AIX and IRIX.
+   * agent/Makefile.in, configure, configure.in:
+
+   NEWS: snmplib: BUG: 1619827: link against needed external
+   libraries at library link time (where they are referenced),
+   rather than application link time.
+   Already covers most of libnetsnmpmibs' external dependencies.
+   Fixes build issues on some platforms (e.g. building with shared
+   libraries on AIX). Tested on different versions of Linux,
+   Solaris, HP-UX, AIX and IRIX.
 
 2007-05-19 15:27  magfr
 
-	* acconfig.h, configure, configure.in,
-	  include/net-snmp/net-snmp-config.h.in:
-	  CHANGES: building: Check for support of static inline functions
-	  instead of nested static inline functions when determining if
-	  static inline functions work
+   *  acconfig.h, configure, configure.in,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: building: Check for support of static inline functions
+   instead of nested static inline functions when determining if
+   static inline functions work
+
+2007-05-19 08:40  magfr
+
+   *  acconfig.h, configure, configure.in,   
+      include/net-snmp/library/snmp_assert.h,   
+      include/net-snmp/library/snmp_debug.h,   
+      include/net-snmp/net-snmp-config.h.in, win32/config.h.borland,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: snmplib: Make use of the C99 predefined variable
+   __func__ in addition to the GCC symbol __FUNCTION__ to get the
+   name of the current function
+
+2007-05-18 18:12  hardaker
+
+   * agent/mibgroup/mibII/kernel_linux.h:
+
+   CHANGES: snmpd: patch: 1721096: from mitsuru_chinen: remove
+   unused variable stats from kernel extraction for better
+   portability.
 
 2007-05-18 18:08  hardaker
 
-	* agent/mibgroup/host/hr_filesys.c:
-	  CHANGES: snmpd: patch: 1719254: from "Christan Jung": update
-	  HRFS_ignore list to current linux likelyhoods
+   * agent/mibgroup/host/hr_filesys.c:
+
+   CHANGES: snmpd: patch: 1719254: from "Christan Jung": update
+   HRFS_ignore list to current linux likelyhoods
 
 2007-05-18 18:02  hardaker
 
-	* agent/mibgroup/host/hr_storage.c:
-	  NEWS: snmpd: patch: 1719253: from "Christian Jung": fix
-	  skipNFSInHostResources so it does not break on the second walk of
-	  the table.
+   * agent/mibgroup/host/hr_storage.c:
+
+   NEWS: snmpd: patch: 1719253: from "Christian Jung": fix
+   skipNFSInHostResources so it does not break on the second walk of
+   the table.
+
+2007-05-18 17:55  magfr
+
+   * acconfig.h, include/net-snmp/net-snmp-config.h.in:
+
+   Reran autoheader and adjusted acconfig.h after changes in r16387
+
+2007-05-18 17:54  hardaker
+
+   * agent/mibgroup/mibII/icmp.c:
+
+   CHANGES: snmpd: patch: 1715406: from mitsuru_chinen: registration
+   ordering fixes for icmpStatsTable
+
+2007-05-18 17:46  hardaker
+
+   * agent/mibgroup/mibII/icmp.c:
+
+   CHANGES: snmpd: patch: 1715395: fix icmp table errors in new icmp
+   code
+
+2007-05-18 17:45  hardaker
+
+   * agent/mibgroup/mibII/icmp.c:
+
+   
 
 2007-05-18 15:05  tanders
 
-	* configure, configure.in:
-	  NEWS: AIX: fix default shared library building instead of forcing
-	  static
+   * configure, configure.in:
+
+   NEWS: AIX: fix default shared library building instead of forcing
+   static
+
+2007-05-18 14:18  magfr
+
+   *  acconfig.h, agent/mibgroup/mibII/ip.c, configure, configure.in,   
+      include/net-snmp/net-snmp-config.h.in,   
+      win32/net-snmp/net-snmp-config.h,   
+      win32/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: building: Use AC_CHECK_MEMBERS instead of
+   AC_CHECK_STRUCT_FOR when checking for struct ipstat members in
+   order to make configure.in smaller
 
 2007-05-18 10:22  magfr
 
-	* agent/mibgroup/host/hr_storage.h:
-	  CHANGES: snmpd: Correct the dependency information for
-	  host/hr_storage
+   * agent/mibgroup/host/hr_storage.h:
+
+   CHANGES: snmpd: Correct the dependency information for
+   host/hr_storage
+
+2007-05-18 09:57  magfr
+
+   * testing/RUNTESTS:
+
+   CHANGES: testing: Do not terminate on SIGCHLD since dash and
+   soume bourne shells will exit the main shell when a subshell
+   terminates in that case.
+
+2007-05-18 09:22  tanders
+
+   * apps/snmpusm.c:
+
+   Undoing accidental change committed in r16373.
+
+2007-05-17 23:21  magfr
+
+   * snmplib/snmp_api.c:
+
+   CHANGES: snmplib: PATCH: 1687337: Implement _sess_open in terms
+   of snmp_sess_add
 
 2007-05-17 22:16  magfr
 
-	* agent/agent_trap.c, apps/snmptrap.c, apps/snmptrapd.c,
-	  snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c,
-	  snmplib/snmp_api.c:
-	  CHANGES: snmpd: PATCH: 1620424: Fix notification sending so that
-	  explicit specification of port 162 should be unnecessary
-	  CHANGES: snmptrapd: PATCH: 1620424: Fix notification reception so
-	  that explicit specification of port 162 should be unnecessary
-	  CHANGES: apps: PATCH: 1620424: Fix notification sending so that
-	  explicit specification of port 162 should be unnecessary
-	  CHANGES: snmplib: PATCH: 1620424: Honor
-	  NETSNMP_DS_LIB_DEFAULT_PORT over the default system
+   *  agent/agent_trap.c, apps/snmptrap.c, apps/snmptrapd.c,   
+      snmplib/snmpUDPDomain.c, snmplib/snmpUDPIPv6Domain.c,   
+      snmplib/snmp_api.c:
+
+   CHANGES: snmpd: PATCH: 1620424: Fix notification sending so that
+   explicit specification of port 162 should be unnecessary
+   CHANGES: snmptrapd: PATCH: 1620424: Fix notification reception so
+   that explicit specification of port 162 should be unnecessary
+   CHANGES: apps: PATCH: 1620424: Fix notification sending so that
+   explicit specification of port 162 should be unnecessary
+   CHANGES: snmplib: PATCH: 1620424: Honor
+   NETSNMP_DS_LIB_DEFAULT_PORT over the default system
 
 2007-05-17 21:53  hardaker
 
-	* 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/ipaddress_ioctl.c,
-	  agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c:
-	  CHANGES: snmpd: patch: 1710632: from mavarley: fix memory leak on
-	  broken container insertions for the ipAddressTable
+   *  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/ipaddress_ioctl.c,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c:
+
+   CHANGES: snmpd: patch: 1710632: from mavarley: fix memory leak on
+   broken container insertions for the ipAddressTable
 
 2007-05-17 18:06  rstory
 
-	* local/mib2c-conf.d/mfd-interactive-setup.m2c:
-	  CHANGES: PATCH: 1719244: fix mfd generating map function
+   * local/mib2c-conf.d/mfd-interactive-setup.m2c:
+
+   CHANGES: PATCH: 1719244: fix mfd generating map function
+
+2007-05-17 17:46  hardaker
+
+   *  agent/mibgroup/mibII/ip.c, agent/mibgroup/mibII/ip.h,   
+      agent/mibgroup/mibII/var_route.c,   
+      agent/mibgroup/mibII/var_route.h:
+
+   NEWS: snmpd: patch: 1708243: from nhorman: implement the
+   ipDefaultRouteTable on linux
 
 2007-05-17 16:31  hardaker
 
-	* configure.in:
-	  NEWS: ports: patch: 1706344: from naylor: fix compilation with
-	  cygwin
+   * configure.in:
+
+   NEWS: ports: patch: 1706344: from naylor: fix compilation with
+   cygwin
 
 2007-05-17 16:22  hardaker
 
-	* agent/mibgroup/ucd-snmp/extensible.c:
-	  NEWS: snmpd: patch: 1700157: from afrika: fixes ordering of exec
-	  tokens in the resulting mib tree
+   * agent/mibgroup/ucd-snmp/extensible.c:
+
+   NEWS: snmpd: patch: 1700157: from afrika: fixes ordering of exec
+   tokens in the resulting mib tree
 
 2007-05-17 15:53  hardaker
 
-	* agent/mibgroup/host/hr_disk.c:
-	  CHANGES: snmpd: patch: 1617255: fix length of the history array
-	  to match code.
+   * agent/mibgroup/host/hr_disk.c:
+
+   CHANGES: snmpd: patch: 1617255: fix length of the history array
+   to match code.
 
 2007-05-17 13:53  hardaker
 
-	* agent/snmpd.c, apps/snmptrapd.c:
-	  CHANGES: snmpd: patch: 1225440: Apply intent of patch: to delay
-	  sighup till it is safe.
-	  CHANGES: snmptrapd: patch: 1225440: Apply intent of patch: to
-	  delay sighup till it is safe.
+   * agent/snmpd.c, apps/snmptrapd.c:
+
+   CHANGES: snmpd: patch: 1225440: Apply intent of patch: to delay
+   sighup till it is safe.
+   CHANGES: snmptrapd: patch: 1225440: Apply intent of patch: to
+   delay sighup till it is safe.
+
+2007-05-17 13:35  magfr
+
+   *  agent/mibgroup/ip-forward-mib/data_access/route.h,   
+      agent/mibgroup/ip-mib/data_access/arp.h,   
+      agent/mibgroup/ip-mib/data_access/ipaddress.h,   
+      agent/mibgroup/ip-mib/data_access/systemstats.h:
+
+   CHANGES: building: Use config_error instead of config_require of
+   a bogus file/#error to generate error messages at configure time.
 
 2007-05-17 04:39  hardaker
 
-	* snmplib/asn1.c:
-	  CHANGES: snmplib: patch: 1645698: fix 64-bit signed integer
-	  encoding
+   * apps/snmpusm.c, snmplib/asn1.c:
+
+   CHANGES: snmplib: patch: 1645698: fix 64-bit signed integer
+   encoding
 
 2007-05-16 23:53  tanders
 
-	* include/net-snmp/system/hpux.h:
-	  CHANGES: HP-UX: HP-UX needs _REENTRANT defined to pick up
-	  strtok_r.
-	  Otherwise, at least for 64-bit code, strtok_r will not work
-	  and will make net-snmp segfault.
+   * include/net-snmp/system/hpux.h:
+
+   CHANGES: HP-UX: HP-UX needs _REENTRANT defined to pick up
+   strtok_r.
+   Otherwise, at least for 64-bit code, strtok_r will not work
+   and will make net-snmp segfault.
+
+2007-05-16 23:39  tanders
+
+   *  agent/mibgroup/mibII/route_headers.h, configure, configure.in,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   fix patch 1625069 (r16365) to not break the build on Solaris
+   2.6/7
+
+2007-05-15 17:33  rstory
+
+   * dist/svnup:
+
+   - add warning if star not available
+   - fix pattern to exclude .svn dirs from tarballs
+
+2007-05-15 15:55  rstory
+
+   * dist/cvsup:
+
+   warn if star not available
 
 2007-05-15 14:36  tanders
 
-	* agent/mibgroup/hardware/memory/memory_solaris.c:
-	  fix typo
+   * agent/mibgroup/hardware/memory/memory_solaris.c:
+
+   fix typo
 
 2007-05-14 21:49  tanders
 
-	* apps/Makefile.in:
-	  add missing CFLAGS to link line
+   * apps/Makefile.in:
+
+   add missing CFLAGS to link line
 
 2007-05-14 21:48  tanders
 
-	* apps/snmpnetstat/Makefile.in:
-	  add missing CFLAGS to link line
+   * apps/snmpnetstat/Makefile.in:
+
+   add missing CFLAGS to link line
+
+2007-05-14 15:57  hardaker
+
+   *  agent/mibgroup/kernel_sunos5.c,   
+      agent/mibgroup/mibII/route_headers.h,   
+      agent/mibgroup/mibII/var_route.c, configure, configure.in,   
+      include/net-snmp/net-snmp-config.h.in:
+
+   CHANGES: snmpd: patch: 1625069: speed improvements for solaris
+   routing table access
 
 2007-05-14 14:50  hardaker
 
-	* agent/snmp_agent.c:
-	  CHANGES: snmpd: patch: 1595568: from cyril_margaria: fix
-	  delegated SET requests from agentx subagents
+   * agent/snmp_agent.c:
+
+   CHANGES: snmpd: patch: 1595568: from cyril_margaria: fix
+   delegated SET requests from agentx subagents
+
+2007-05-14 14:04  hardaker
+
+   * dist/RELEASE-INSTRUCTIONS:
+
+   update to point to wiki and a few more cvs -> svn changes
 
 2007-05-13 14:27  magfr
 
-	* snmplib/snmp_service.c:
-	  CHANGES: snmplib: Read the config parameters defTarget and
-	  defDomain from snmp.conf as well as from <application>.conf
+   * snmplib/snmp_service.c:
+
+   CHANGES: snmplib: Read the config parameters defTarget and
+   defDomain from snmp.conf as well as from <application>.conf
+
+2007-05-12 11:17  magfr
+
+   * snmplib/mib.c:
+
+   CHANGES: snmplib: Deallocate the _mibindexes cache in
+   shutdown_mib to make for a cleaner exit of the library
 
 2007-05-12 11:14  magfr
 
-	* snmplib/mib.c:
-	  CHANGES: snmplib: Deallocate the confmibs and confmibdirs
-	  variables in shutdown_mib to make for a cleaner exit of the
-	  library
+   * snmplib/mib.c:
+
+   CHANGES: snmplib: Deallocate the confmibs and confmibdirs
+   variables in shutdown_mib to make for a cleaner exit of the
+   library
 
 2007-05-11 21:06  magfr
 
-	* agent/mibgroup/agentx/agentx_config.c:
-	  CHANGES: snmpd: PATCH: 1687336: Start using the enhanced
-	  read_config interface
+   * agent/mibgroup/agentx/agentx_config.c:
+
+   CHANGES: snmpd: PATCH: 1687336: Start using the enhanced
+   read_config interface
 
 2007-05-11 20:33  magfr
 
-	* snmplib/read_config.c:
-	  PATCH 1687329: Applied part 2 of the patch - When registering
-	  multiple premib handlers only the last one was registered premib,
-	  the others were registerd at the normal time. This patch puts all
-	  registration in one function that takes the problematic value as
-	  an argument and makes the old functions thin wrappers of the new
-	  one
+   * snmplib/read_config.c:
+
+   PATCH 1687329: Applied part 2 of the patch - When registering
+   multiple premib handlers only the last one was registered premib,
+   the others were registerd at the normal time. This patch puts all
+   registration in one function that takes the problematic value as
+   an argument and makes the old functions thin wrappers of the new
+   one
 
 2007-05-11 20:24  magfr
 
-	* snmplib/read_config.c:
-	  CHANGE: snmplib: PATCH 1687329: Applied part 3 of the patch - use
-	  the same algorithm to determine what to unregister as is used to
-	  determine what to regster
+   * snmplib/read_config.c:
+
+   CHANGE: snmplib: PATCH 1687329: Applied part 3 of the patch - use
+   the same algorithm to determine what to unregister as is used to
+   determine what to regster
 
 2007-05-11 16:32  magfr
 
-	* agent/mibgroup/host/hr_proc.c:
-	  Don't log host/hr_proc events in the snmpd domain
+   * agent/mibgroup/host/hr_proc.c:
+
+   Don't log host/hr_proc events in the snmpd domain
 
 2007-05-11 16:27  magfr
 
-	* agent/helpers/cache_handler.c:
-	  Decorate more debug lines with the tag that controls the log
+   * agent/helpers/cache_handler.c:
+
+   Decorate more debug lines with the tag that controls the log
 
 2007-05-11 15:07  dts12
 
-	* agent/mibgroup/hardware/memory/memory_solaris.c:
-	  CHANGES: snmpd: BUG: 1628613: Restore memTotalFree.0 on Solaris
+   * agent/mibgroup/hardware/memory/memory_solaris.c:
+
+   CHANGES: snmpd: BUG: 1628613: Restore memTotalFree.0 on Solaris
 
 2007-05-10 21:52  tanders
 
-	* Makefile.in, python/setup.py:
-	  NEWS: python: PATCH: 1716114: Let python build in source tree
-	  Patch provided by Jochen Friedrich (Debian patch #38).
+   * Makefile.in, python/setup.py:
+
+   NEWS: python: PATCH: 1716114: Let python build in source tree
+   Patch provided by Jochen Friedrich (Debian patch #38).
 
 2007-05-10 05:18  magfr
 
-	* snmplib/read_config.c:
-	  PATCH 1687329: Applied part 1 of the patch - lessens the scope of
-	  the ltmp2 variable
+   * snmplib/read_config.c:
+
+   PATCH 1687329: Applied part 1 of the patch - lessens the scope of
+   the ltmp2 variable
 
 2007-05-09 23:57  tanders
 
-	* README.irix:
-	  document optimized IRIX cpu stats
+   * README.irix:
+
+   document optimized IRIX cpu stats
 
 2007-05-09 23:49  tanders
 
-	* agent/mibgroup/hardware/cpu.h,
-	  agent/mibgroup/hardware/cpu/cpu_sysinfo.c,
-	  agent/mibgroup/hardware/cpu/cpu_sysinfo.h:
-	  NEWS: irix: PATCH: 1709748: Optimized IRIX cpu stats
+   *  agent/mibgroup/hardware/cpu.h,   
+      agent/mibgroup/hardware/cpu/cpu_sysinfo.c,   
+      agent/mibgroup/hardware/cpu/cpu_sysinfo.h:
 
-2007-05-09 22:16  tanders
+   NEWS: irix: PATCH: 1709748: Optimized IRIX cpu stats
 
-	* agent/mibgroup/agent/extend.c:
-	  Fix problems with single-line extend scripts.
-	  (fix typo in r16332 for 5.4.x)
+2007-05-09 21:23  rstory
 
-2007-05-09 01:10  alex_b
+   * dist/cvsshow:
 
-	* win32/libsnmp_dll/libsnmp.def, win32/libsnmp_dll/libsnmp.def.in:
-	  Win32 build fixes.
+   update to show svn repo too
+
+2007-05-09 15:39  tanders
+
+   * agent/mibgroup/mibII/icmp.c:
+
+   icmpStatsTable is only implemented for Linux
 
 2007-05-08 19:48  magfr
 
-	* agent/snmp_agent.c:
-	  Revert mistakenly committed extra trace logs
+   * agent/snmp_agent.c:
+
+   Revert mistakenly committed extra trace logs
 
 2007-05-07 20:46  hardaker
 
-	* perl/agent/default_store/default_store.pm,
-	  perl/agent/default_store/default_store.xs,
-	  perl/agent/default_store/test.pl:
-	  update agent::default_store perl module for new defs
+   *  perl/agent/default_store/default_store.pm,   
+      perl/agent/default_store/default_store.xs,   
+      perl/agent/default_store/test.pl:
+
+   update agent::default_store perl module for new defs
+
+2007-05-07 20:24  hardaker
+
+   * dist/patme:
+
+   more svn conversion fixes
 
 2007-05-07 20:23  hardaker
 
-	* agent/agent_read_config.c, agent/snmp_agent.c,
-	  include/net-snmp/agent/ds_agent.h, man/snmpd.conf.5.def:
-	  NEWS: snmpd: BUG: 1712988: default and configurable maximum
-	  number of varbinds returnable to a GETBULK request
+   *  agent/agent_read_config.c, agent/snmp_agent.c,   
+      include/net-snmp/agent/ds_agent.h, man/snmpd.conf.5.def:
+
+   NEWS: snmpd: BUG: 1712988: default and configurable maximum
+   number of varbinds returnable to a GETBULK request
+
+2007-05-07 20:05  hardaker
+
+   * dist/patme:
+
+   rename of branch dirs
+
+2007-05-07 16:14  hardaker
+
+   * dist/patme:
+
+   attempted (untested) update
+
+2007-05-07 13:55  rstory
+
+   * dist/svnup:
+
+   don't delete tarball if scp fails
 
 2007-05-04 20:27  tanders
 
-	* perl/SNMP/SNMP.xs:
-	  CHANGES: perl: fix SNMP SET for IP addresses on 64-bit
+   * perl/SNMP/SNMP.xs:
+
+   CHANGES: perl: fix SNMP SET for IP addresses on 64-bit
 
 2007-05-04 10:22  tanders
 
-	* Makefile.in:
-	  install dragonfly.h
+   * Makefile.in:
+
+   install dragonfly.h
 
 2007-05-03 23:01  tanders
 
-	* include/net-snmp/system/dragonfly.h:
-	  CHANGES: BUG: 1710910: initial support for DragonFly BSD
+   * include/net-snmp/system/dragonfly.h:
+
+   CHANGES: BUG: 1710910: initial support for DragonFly BSD
 
 2007-05-03 22:10  tanders
 
-	* perl/SNMP/SNMP.xs:
-	  CHANGES: perl: fix SNMP SET for IP addresses on 64-bit
-	  Patch proposed by Jeff Lange.
+   * perl/SNMP/SNMP.xs:
+
+   CHANGES: perl: fix SNMP SET for IP addresses on 64-bit
+   Patch proposed by Jeff Lange.
+
+2007-05-03 16:00  tanders
+
+   * agent/mibgroup/mibII/icmp.c:
+
+   build fix (e.g. for early AIX): use uint32_t i.s.o. __uint32_t
 
 2007-05-02 13:13  dts12
 
-	* agent/mibgroup/agent/extend.c:
-	  Fix problems with single-line extend scripts.
+   * agent/mibgroup/agent/extend.c:
+
+   Fix problems with single-line extend scripts.
+
+2007-05-01 19:51  rstory
+
+   * agent/mibgroup/ip-mib/data_access/ipaddress_linux.c:
+
+   - test for IFA_F_TEMPORARY before using
+   - remove redundant ifdef
 
 2007-05-01 11:34  dts12
 
-	* apps/snmptrapd_handlers.c:
-	  CHANGES: snmptrapd: Support for forwarding traps by OID subtree.
-	  (Consistent with subtree-based script processing).
+   * apps/snmptrapd_handlers.c:
+
+   CHANGES: snmptrapd: Support for forwarding traps by OID subtree.
+   (Consistent with subtree-based script processing).
+
+2007-04-30 14:51  dts12
+
+   * agent/mibgroup/mibII/kernel_linux.c:
+
+   CHANGES: snmpd: PATCH: 1703004: Consolidate snmp6 handling.
+   Patch supplied by Neil Horman, plus some extra tidying up.
+
+2007-04-30 14:33  dts12
+
+   * agent/mibgroup/mibII/icmp.c, agent/mibgroup/mibII/icmp.h:
+
+   CHANGES: snmpd: PATCH: 1702366: Support for icmpStatsTable
+   Patch provided by Neil Horman
+
+2007-04-30 14:31  dts12
+
+   *  agent/mibgroup/mibII/ipv6.c, agent/mibgroup/mibII/kernel_linux.c, 
+        agent/mibgroup/mibII/kernel_linux.h:
+
+   CHANGES: snmpd: PATCH: 1702361: Read stats from /proc/net/snmp6
+
+2007-04-30 14:14  dts12
+
+   *  agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c:
+
+   Fix compilation problems when IPv6 support is not enabled.
 
 2007-04-30 13:26  dts12
 
-	* README.agent-mibs, agent/mibgroup/mibII/setSerialNo.c,
-	  agent/mibgroup/mibII/setSerialNo.h:
-	  CHANGES: snmpd: PATCH: 1700737: Tidy up setSerialNo
-	  implementations.
+   *  README.agent-mibs, agent/mibgroup/mibII/setSerialNo.c,   
+      agent/mibgroup/mibII/setSerialNo.h:
+
+   CHANGES: snmpd: PATCH: 1700737: Tidy up setSerialNo
+   implementations.
 
 2007-04-30 13:06  dts12
 
-	* agent/helpers/cache_handler.c:
-	  CHANGES: snmpd: PATCH: 1700732: Fix debug output statements.
+   * agent/helpers/cache_handler.c:
+
+   CHANGES: snmpd: PATCH: 1700732: Fix debug output statements.
 
 2007-04-30 13:02  dts12
 
-	* agent/mibgroup/ucd-snmp/extensible.c:
-	  CHANGES: snmpd: PATCH: 1700730: Remove unused extern declaration.
+   * agent/mibgroup/ucd-snmp/extensible.c:
+
+   CHANGES: snmpd: PATCH: 1700730: Remove unused extern declaration.
 
 2007-04-30 11:32  dts12
 
-	* agent/helpers/instance.c:
-	  CHANGES: snmpd: PATCH: 1698184: Register non-default context
-	  integers as writable.
-	  Patch provided by Mark Naylor.
+   * agent/helpers/instance.c:
+
+   CHANGES: snmpd: PATCH: 1698184: Register non-default context
+   integers as writable.
+   Patch provided by Mark Naylor.
+
+2007-04-30 11:26  dts12
+
+   *  agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.h,   
+      agent/mibgroup/ip-mib/data_access/ipaddress_linux.c,   
+      agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c:
+
+   CHANGES: snmpd: PATCH: 169817: Improved RFC 4293 support.
+   Includes non-unicast and randomly chosen IP addresses.
+   Patch provided by Varun Chandramohan
 
 2007-04-30 11:04  dts12
 
-	* agent/mibgroup/ip-mib/data_access/ipaddress_common.c:
-	  CHANGES: snmpd: PATCH: 1692768: Fix copying of non-octet-aligned
-	  IP address prefixes.
+   * agent/mibgroup/ip-mib/data_access/ipaddress_common.c:
+
+   CHANGES: snmpd: PATCH: 1692768: Fix copying of non-octet-aligned
+   IP address prefixes.
+
+2007-04-30 10:50  dts12
+
+   *  agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c,   
+      agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c,   
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.c,   
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.h,   
+      agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c,
+         agent/mibgroup/util_funcs.c, agent/mibgroup/util_funcs.h,   
+      include/net-snmp/data_access/udp_endpoint.h:
+
+   CHANGES: snmpd: PATCH: 1670511: Implement network connection
+   process ID objects.
+   Patch provided by Varun Chandramohan
+
+2007-04-30 10:46  dts12
+
+   * include/net-snmp/library/snmp_api.h:
+
+   Fix declaration of snmp_sess_read_extd()
 
 2007-04-30 10:25  dts12
 
-	* snmplib/fd_event_manager.c:
-	  CHANGES: snmplib: PATCH: 1687325: Fix problem with operator
-	  precedence.
+   * snmplib/fd_event_manager.c:
+
+   CHANGES: snmplib: PATCH: 1687325: Fix problem with operator
+   precedence.
+
+2007-04-30 10:21  dts12
+
+   * include/net-snmp/library/snmp_api.h:
+
+   CHANGES: snmplib: PATCH: 1687319: Declare snmp_sess_read_extd()
+
+2007-04-30 10:14  dts12
+
+   * snmplib/snmp_api.c:
+
+   CHANGES: snmplib: PATCH: 1687318: Make _sess_selpol_info static.
+
+2007-04-30 10:09  dts12
+
+   * snmplib/snmp_api.c:
+
+   CHANGES: snmplib: PATCH: 1687317: Remove an unused local variable
 
 2007-04-30 10:07  dts12
 
-	* snmplib/snmpUnixDomain.c, snmplib/snmp_api.c:
-	  CHANGES: snmplib: PATCH: 1687316: Don't drop const from casts.
+   * snmplib/snmpUnixDomain.c, snmplib/snmp_api.c:
+
+   CHANGES: snmplib: PATCH: 1687316: Don't drop const from casts.
+
+2007-04-27 10:21  dts12
+
+   * agent/mibgroup/ucd-snmp/dlmod.c:
+
+   Bring dynamic module unload processing more into line with
+   "normal" MIB modules. Suggested by Magnus Fromreide.
+   See coders thread "shutdown_foo or deinit_foo".
+
+2007-04-27 10:17  dts12
+
+   * dist/RELEASE-INSTRUCTIONS:
+
+   Update post-release announcement instructions.
 
 2007-04-24 12:35  dts12
 
-	* agent/mibgroup/agent/extend.c:
-	  Fix incomplete OID handling of single-line extend scripts.
-	  Reported by Max on coders list, 7th April. See thread
-	  "... segfault .. when attempting SNMP GET on extend or exec item"
+   * agent/mibgroup/agent/extend.c:
+
+   Fix incomplete OID handling of single-line extend scripts.
+   Reported by Max on coders list, 7th April. See thread
+   "... segfault .. when attempting SNMP GET on extend or exec item"
 
 2007-04-20 08:30  dts12
 
-	* man/snmpd.conf.5.def:
-	  Document the behaviour of a load threshold of 0.
-	  Reported by Fong Tsui.
+   * man/snmpd.conf.5.def:
+
+   Document the behaviour of a load threshold of 0.
+   Reported by Fong Tsui.
 
 2007-04-20 08:21  dts12
 
-	* mibs/UCD-SNMP-MIB.txt:
-	  Long-term load average is calculated over 15 minutes, not 10.
-	  Reported by Fong Tsui
+   * mibs/UCD-SNMP-MIB.txt:
+
+   Long-term load average is calculated over 15 minutes, not 10.
+   Reported by Fong Tsui
+
+2007-04-19 12:53  dts12
+
+   * dist/RELEASE-INSTRUCTIONS:
+
+   Tweak ChangeLog instructions for SVN
 
 2007-04-10 14:16  dts12
 
-	* perl/SNMP/SNMP.xs:
-	  Detect OID retracking (as well as simple repetitions) when
-	  bulkwalking an OID tree.
-	  See users thread "missing indices in bulkwalk result".
+   * perl/SNMP/SNMP.xs:
+
+   Detect OID retracking (as well as simple repetitions) when
+   bulkwalking an OID tree.
+   See users thread "missing indices in bulkwalk result".
 
 2007-04-10 11:49  dts12
 
-	* include/net-snmp/system/mingw32.h:
-	  Clarify copyright status of Win32 API definitions.
+   * include/net-snmp/system/mingw32.h:
+
+   Clarify copyright status of Win32 API definitions.
 
 2007-04-10 11:27  dts12
 
-	* include/net-snmp/system/dynix.h:
-	  Clarify copyright status of BSD-derived TCPTV* definitions.
+   * include/net-snmp/system/dynix.h:
 
-2007-04-03 08:59  tanders
+   Clarify copyright status of BSD-derived TCPTV* definitions.
 
-	* agent/mibgroup/smux/smux.c:
-	  fix syntax error introduced by last patch
+2007-04-09 14:02  rstory
+
+   * dist/svnup:
+
+   - remove debugging
+   - check rc for tar, gzip and scp steps
+
+2007-04-06 18:38  rstory
+
+   * dist/svnup:
+
+   svn equivalent of cvsup
 
 2007-04-03 08:54  dts12
 
-	* man/snmpd.conf.5.def:
-	  Emphasise the use of SNMPv3 in DisMan monitoring.
-	  Fix the syntax of non-existance/value-change tests.
+   * man/snmpd.conf.5.def:
+
+   Emphasise the use of SNMPv3 in DisMan monitoring.
+   Fix the syntax of non-existance/value-change tests.
 
 2007-04-02 14:55  dts12
 
-	* agent/mibgroup/ucd-snmp/disk.c:
-	  CHANGES: snmpd: BUG: 1046327: Reset "includeAllDisks" flag when
-	  reloading.
+   * agent/mibgroup/ucd-snmp/disk.c:
+
+   CHANGES: snmpd: BUG: 1046327: Reset "includeAllDisks" flag when
+   reloading.
 
 2007-04-02 14:45  dts12
 
-	* agent/mibgroup/ucd-snmp/disk.c:
-	  CHANGES: snmpd: BUG: 1602286: Don't let table holes block later
-	  rows.
+   * agent/mibgroup/ucd-snmp/disk.c:
+
+   CHANGES: snmpd: BUG: 1602286: Don't let table holes block later
+   rows.
 
 2007-04-02 13:51  dts12
 
-	* agent/mibgroup/host/hr_swrun.c:
-	  CHANGES: snmpd: BUG: 1073782: Restore PerfStat values for FreeBSD
-	  5.x systems.
-	  It's unclear why the "new" calculation was a) proposed, b)
-	  withdrawn,
-	  and c) what was wrong with the previous calculation (which seems
-	  to
-	  match the output of 'ps')
+   * agent/mibgroup/host/hr_swrun.c:
+
+   CHANGES: snmpd: BUG: 1073782: Restore PerfStat values for FreeBSD
+   5.x systems.
+   It's unclear why the "new" calculation was a) proposed, b)
+   withdrawn,
+   and c) what was wrong with the previous calculation (which seems
+   to
+   match the output of 'ps')
 
 2007-04-02 13:06  dts12
 
-	* agent/mibgroup/smux/smux.c:
-	  CHANGES: snmpd: BUG: 902610: Don't discard pending data following
-	  a TRAP.
+   * agent/mibgroup/smux/smux.c:
+
+   CHANGES: snmpd: BUG: 902610: Don't discard pending data following
+   a TRAP.
 
 2007-04-02 12:56  dts12
 
-	* agent/mibgroup/smux/smux.c:
-	  CHANGES: snmpd: BUG: 902801: Fix ordering of SMUX-registered
-	  subtrees.
+   * agent/mibgroup/smux/smux.c:
+
+   CHANGES: snmpd: BUG: 902801: Fix ordering of SMUX-registered
+   subtrees.
 
 2007-04-02 12:35  dts12
 
-	* agent/mibgroup/mibII/vacm_vars.c:
-	  CHANGES: snmpd: BUG: 1685067: More precise handling of
-	  SNMPv3-admin MIB tables.
-	  This actually fixes three separate problems:
-	  * A GET request for 'vacmGroupName.{group}.0.{anything}' will
-	  succeed
-	  (since the 0 subid acts as a null-terminator for the group name).
-	  * A GET request for 'vacmViewTreeFamilyType."_none".1' will
-	  succeed
-	  (implicitly adding the subid 0 to the incomplete OID index value)
-	  * A GET request for 'vacmAccessStatus."group"."".3.4' will
-	  succeed
-	  (since VACM checks accept the given security level *or*higher*)
+   * agent/mibgroup/mibII/vacm_vars.c:
 
-2007-04-02 12:26  dts12
+   CHANGES: snmpd: BUG: 1685067: More precise handling of
+   SNMPv3-admin MIB tables.
+   This actually fixes three separate problems:
+   *  A GET request for 'vacmAccessStatus."group"."".3.4' will   
+      succeed    (since VACM checks accept the given security level
+      *or*higher*)  2007-04-02 12:26  dts12
 
-	* agent/mibgroup/host/hr_storage.c:
-	  Check that GET requests match a valid OID.
-	  (Otherwise a request for hrStorage{Column}.{index}.{anything}
-	  will ignore the extra subids, and return success)
+
+   * agent/mibgroup/host/hr_storage.c:
+
+   Check that GET requests match a valid OID.
+   (Otherwise a request for hrStorage{Column}.{index}.{anything}
+   will ignore the extra subids, and return success)
 
 2007-04-02 12:21  dts12
 
-	* agent/mibgroup/disman/event/mteObjectsTable.c:
-	  Prevent crash when walking (invalid?) Event-MIB Objects Table.
+   * agent/mibgroup/disman/event/mteObjectsTable.c:
+
+   Prevent crash when walking (invalid?) Event-MIB Objects Table.
 
 2007-04-02 11:30  dts12
 
-	* dist/makerelease:
-	  Fix a couple of typos in the re-worked makerelease script.
+   * dist/makerelease:
+
+   Fix a couple of typos in the re-worked makerelease script.
 
 2007-03-29 12:14  tanders
 
-	* configure, configure.in:
-	  fix syntax error ("==" is bad)
+   * configure, configure.in:
+
+   fix syntax error ("==" is bad)
+
+2007-03-27 08:55  dts12
+
+   * acinclude.m4, configure, configure.in:
+
+   Read user-prompted values from original stdin (not /dev/null)
 
 2007-03-27 08:38  dts12
 
-	* configure, configure.in:
-	  Accept '2c' as a valid response when choosing the default version
+   * configure, configure.in:
+
+   Accept '2c' as a valid response when choosing the default version
 
 2007-03-27 08:29  dts12
 
-	* configure, configure.in:
-	  CHANGES: configure: BUG: 1567324: Clarify prompting for
-	  user-supplied values.
-	  Now only remembers (and uses) previous values when explicitly
-	  told to do so,
-	  e.g. configure -C
+   * configure, configure.in:
 
-2007-03-25 22:32  dts12
+   CHANGES: configure: BUG: 1567324: Clarify prompting for
+   user-supplied values.
+   Now only remembers (and uses) previous values when explicitly
+   told to do so,
+   e.g. configure -C
 
-	* local/mib2c.container.conf, local/mib2c.iterate.conf,
-	  local/mib2c.table_data.conf:
-	  Variable-length string values are more likely than fixed length.
+2007-03-27 08:23  dts12
+
+   * configure, configure.in:
+
+   Fix inconsistency in patch #1627049 - <poll.h> vs <sys/poll.h>
+
+2007-03-25 22:31  dts12
+
+   *  local/mib2c.container.conf, local/mib2c.iterate.conf,   
+      local/mib2c.table_data.conf:
+
+   Variable-length string values are more likely than fixed length.
 
 2007-03-25 22:28  dts12
 
-	* local/mib2c.array-user.conf:
-	  CHANGES: mib2c: BUG: 833673: More focused size checks.
+   * local/mib2c.array-user.conf:
+
+   CHANGES: mib2c: BUG: 833673: More focused size checks.
 
 2007-03-25 21:25  dts12
 
-	* agent/snmp_agent.c:
-	  CHANGES: snmpd: BUG: 1677063: Check for failed malloc calls.
+   * agent/snmp_agent.c:
+
+   CHANGES: snmpd: BUG: 1677063: Check for failed malloc calls.
 
 2007-03-25 19:03  dts12
 
-	* agent/mibgroup/mibII/route_write.c:
-	  Check SET requests against the correct type (IP Address != Octet
-	  Str)
+   * agent/mibgroup/mibII/route_write.c:
 
-2007-03-25 18:58  dts12
+   Check SET requests against the correct type (IP Address != Octet
+   Str)
 
-	* agent/mibgroup/snmpv3/usmUser.c:
-	  CHANGES: snmpd: BUG: 1685081: Check for valid OID on Free/Undo
-	  passes.
+2007-03-25 18:55  dts12
+
+   * agent/mibgroup/snmpv3/usmUser.c:
+
+   CHANGES: snmpd: BUG: 1685081: Check for valid OID on Free/Undo
+   passes.
 
 2007-03-23 09:44  dts12
 
-	* include/net-snmp/library/snmp_api.h:
-	  CHANEGS: snmplib: BUG: 1686384: Document non-use of 'remote_port'
-	  field.
+   * include/net-snmp/library/snmp_api.h:
+
+   CHANEGS: snmplib: BUG: 1686384: Document non-use of 'remote_port'
+   field.
 
 2007-03-23 09:19  dts12
 
-	* local/mib2c-conf.d/mfd-persistence.m2i:
-	  Allow space for external indexes when saving table entries.
-	  (See patch #1642255)
+   * local/mib2c-conf.d/mfd-persistence.m2i:
 
-2007-03-23 09:15  dts12
+   Allow space for external indexes when saving table entries.
+   (See patch #1642255)
 
-	* agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c:
-	  CHANGES: snmpd: PATCH: 1642255: Handle saving long
-	  snmpNotifyFilterTable entries.
+2007-03-23 09:14  dts12
+
+   * 
+      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c:
+
+   CHANGES: snmpd: PATCH: 1642255: Handle saving long
+   snmpNotifyFilterTable entries.
+
+2007-03-23 09:09  dts12
+
+   *  agent/agent_read_config.c, agent/mibgroup/mibII/vacm_conf.c,   
+      include/net-snmp/library/callback.h, snmplib/read_config.c:
+
+   CHANGES: snmplib: PATCH: 1681977: Add callbacks prior to reading
+   config.
 
 2007-03-23 09:06  dts12
 
-	* agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c:
-	  CHANGES: snmpd: PATCH: 1676478: fix udpEndpointRemoteAddress
-	  CHANGES: snmpd: BUG: 1676476: fix udpEndpointRemoteAddress
+   * agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c:
+
+   CHANGES: snmpd: PATCH: 1676478: fix udpEndpointRemoteAddress
+   CHANGES: snmpd: BUG: 1676476: fix udpEndpointRemoteAddress
 
 2007-03-23 09:01  dts12
 
-	* snmplib/snmp_api.c:
-	  CHANGES: snmplib: PATCH: 1653670: Consistent SNMPv3 behaviour
-	  when opening sessions.
+   * snmplib/snmp_api.c:
+
+   CHANGES: snmplib: PATCH: 1653670: Consistent SNMPv3 behaviour
+   when opening sessions.
+
+2007-03-23 08:57  dts12
+
+   *  configure, configure.in, include/net-snmp/library/snmp_api.h,   
+      include/net-snmp/net-snmp-config.h.in, snmplib/snmp_api.c:
+
+   CHANGES: snmplib: PATCH: 1627049: New API to handle large numbers
+   of file descriptors.
 
 2007-03-22 19:14  dts12
 
-	* snmplib/read_config.c:
-	  CHANGES: snmplib: PATCH: 1681030: Better handling of empty
-	  apptype configs.
+   * snmplib/read_config.c:
+
+   CHANGES: snmplib: PATCH: 1681030: Better handling of empty
+   apptype configs.
 
 2007-03-22 19:12  dts12
 
-	* agent/mibgroup/smux/smux.c, agent/mibgroup/smux/smux.h,
-	  agent/snmpd.c:
-	  CHANGES: snmpd: PATCH: 1678788: Better handling of SMUX socket
-	  descriptors.
+   *  agent/mibgroup/smux/smux.c, agent/mibgroup/smux/smux.h,   
+      agent/snmpd.c:
+
+   CHANGES: snmpd: PATCH: 1678788: Better handling of SMUX socket
+   descriptors.
 
 2007-03-22 19:09  dts12
 
-	* agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c:
-	  CHANGES: snmpd: PATCH: 1683054: set udpEndpointInstance to
-	  identify different processes.
+   * agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c:
+
+   CHANGES: snmpd: PATCH: 1683054: set udpEndpointInstance to
+   identify different processes.
 
 2007-03-21 12:35  dts12
 
-	* win32/libsnmp_dll/libsnmp.def, win32/libsnmp_dll/libsnmp.def.in:
-	  Declare OID constants as such (rather than API calls).
-	  Proposed by Alex Burger
+   * win32/libsnmp_dll/libsnmp.def, win32/libsnmp_dll/libsnmp.def.in:
 
-2007-03-20 20:08  rstory
+   Declare OID constants as such (rather than API calls).
+   Proposed by Alex Burger
 
-	* agent/mibgroup/mibII/kernel_linux.c:
-	  NEWS: snmpd: PATCH: 1666737: include ipv6 counts in
-	  udpInDatagrams, udpNoPorts, udpInErrors, udpOutDatagrams
+2007-03-20 20:07  rstory
+
+   * agent/mibgroup/mibII/kernel_linux.c:
+
+   NEWS: snmpd: PATCH: 1666737: include ipv6 counts in
+   udpInDatagrams, udpNoPorts, udpInErrors, udpOutDatagrams
 
 2007-03-19 22:09  tanders
 
-	* agent/mibgroup/hardware/cpu/cpu_pcp.c:
-	  use pmFreeResult() instead of free()
+   * agent/mibgroup/hardware/cpu/cpu_pcp.c:
 
-2007-03-17 00:25  tanders
+   use pmFreeResult() instead of free()
 
-	* agent/mibgroup/agentx/subagent.h,
-	  agent/mibgroup/disman/mteTriggerTable.h,
-	  agent/mibgroup/utilities/iquery.h, configure, configure.in:
-	  CHANGES: build: PATCH: 1681073: #ifdef based config_error instead
-	  of special cases in configure
-	  Backport from MAIN.
+2007-03-19 09:39  tanders
+
+   * agent/mibgroup/ucd-snmp/pass_persist.c:
+
+   get rid of C++ comments
 
 2007-03-16 14:04  dts12
 
-	* dist/changelogfix, dist/makerelease, local/Version-Munge.pl:
-	  Convert build system to SVN version.
+   *  dist/RELEASE-INSTRUCTIONS, dist/changelogfix, dist/makerelease,   
+      local/Version-Munge.pl:
+
+   Convert build system to SVN version.
+
+2007-03-15 10:59  tanders
+
+   *  agent/mibgroup/agentx/subagent.h,   
+      agent/mibgroup/disman/mteTriggerTable.h,   
+      agent/mibgroup/utilities/iquery.h, configure, configure.in:
+
+   CHANGES: build: PATCH: 1681073: #ifdef based config_error instead
+   of special cases in configure
+
+2007-03-15 10:47  tanders
+
+   * agent/mibgroup/ucd-snmp/pass.c:
+
+   get rid of C++ comments
 
 2007-03-14 23:31  tanders
 
-	* README.irix, agent/mibgroup/hardware/cpu.h,
-	  agent/mibgroup/hardware/cpu/cpu_pcp.c,
-	  agent/mibgroup/hardware/cpu/cpu_pcp.h:
-	  NEWS: IRIX: PATCH: 1675869: from bbice: CPU statistics for IRIX
-	  based on PCP
+   *  README.irix, agent/mibgroup/hardware/cpu.h,   
+      agent/mibgroup/hardware/cpu/cpu_pcp.c,   
+      agent/mibgroup/hardware/cpu/cpu_pcp.h:
+
+   NEWS: IRIX: PATCH: 1675869: from bbice: CPU statistics for IRIX
+   based on PCP
+
+2007-03-14 22:09  tanders
+
+   *  agent/helpers/all_helpers.c, agent/helpers/bulk_to_next.c,   
+      agent/helpers/cache_handler.c, agent/helpers/debug_handler.c,   
+      agent/helpers/instance.c, agent/helpers/null.c,   
+      agent/helpers/old_api.c, agent/helpers/read_only.c,   
+      agent/helpers/row_merge.c, agent/helpers/scalar.c,   
+      agent/helpers/scalar_group.c, agent/helpers/serialize.c,   
+      agent/helpers/stash_cache.c, agent/helpers/stash_to_next.c,   
+      agent/helpers/table.c, agent/helpers/table_array.c,   
+      agent/helpers/table_container.c, agent/helpers/table_data.c,   
+      agent/helpers/table_dataset.c, agent/helpers/table_iterator.c,   
+      agent/helpers/table_tdata.c, agent/helpers/watcher.c:
+
+   CHANGES: snmpd: PATCH: 1681043: from magfr: clean up helper
+   includes
+
+2007-03-14 21:54  tanders
+
+   * net-snmp-config.in:
+
+   CHANGES: PATCH: 1681035: from magfr: improve net-snmp-config
+   /bin/sh compatibility
+
+2007-03-14 18:31  tanders
+
+   * net-snmp-config.in:
+
+   CHANGES: build: PATCH: 1678300: from magfr: compile-subagent
+   doesn't call shutdown_ methods
 
 2007-03-14 16:12  dts12
 
-	* agent/mibgroup/target/target.c:
-	  CHANGES: snmpd: PATCHES: 1644280: Don't automatically probe for
-	  v3 EngineIDs.
+   * agent/mibgroup/target/target.c:
+
+   CHANGES: snmpd: PATCHES: 1644280: Don't automatically probe for
+   v3 EngineIDs.
 
 2007-03-13 10:26  dts12
 
-	* agent/mibgroup/ucd-snmp/disk.c:
-	  Check for zero-size pseudo-filesystems. Report them as empty
-	  rather than full, so they won't be treated as an error.
+   * agent/mibgroup/ucd-snmp/disk.c:
 
-2007-03-13 09:11  tanders
-
-	* snmplib/mib.c:
-	  Back out changes to branches done in SVN 15953 (patch 1678302)
-	  because they are only appropriate for MAIN
+   Check for zero-size pseudo-filesystems. Report them as empty
+   rather than full, so they won't be treated as an error.
 
 2007-03-13 05:59  tanders
 
-	* agent/mibgroup/hardware/cpu/cpu.h:
-	  CHANGES: PATCH: 1678305: from magfr: Deallocate the cache in
-	  hardware/cpu/cpu on shutdown (header part)
+   * agent/mibgroup/hardware/cpu/cpu.h:
+
+   CHANGES: PATCH: 1678305: from magfr: Deallocate the cache in
+   hardware/cpu/cpu on shutdown (header part)
 
 2007-03-12 23:09  tanders
 
-	* agent/mibgroup/notification-log-mib/notification_log.c,
-	  agent/mibgroup/notification-log-mib/notification_log.h:
-	  CHANGES: PATCH: 1678306: from magfr: Deallocate the log in
-	  notification-log-mib/notification_log
+   *  agent/mibgroup/notification-log-mib/notification_log.c,   
+      agent/mibgroup/notification-log-mib/notification_log.h:
+
+   CHANGES: PATCH: 1678306: from magfr: Deallocate the log in
+   notification-log-mib/notification_log
 
 2007-03-12 23:04  tanders
 
-	* agent/mibgroup/hardware/cpu/cpu.c:
-	  CHANGES: PATCH: 1678305: from magfr: Deallocate the cache in
-	  hardware/cpu/cpu on shutdown
+   * agent/mibgroup/hardware/cpu/cpu.c:
+
+   CHANGES: PATCH: 1678305: from magfr: Deallocate the cache in
+   hardware/cpu/cpu on shutdown
 
 2007-03-12 22:57  tanders
 
-	* snmplib/mib.c:
-	  CHANGES: PATCH: 1678302: from magfr: netsnmp_mibindex_load leaks
-	  memory
+   * snmplib/mib.c:
+
+   CHANGES: PATCH: 1678302: from magfr: netsnmp_mibindex_load leaks
+   memory
 
 2007-03-12 22:50  tanders
 
-	* snmplib/snmp_api.c:
-	  CHANGES: PATCH: 1678301: from magfr: deallocate domain registry
-	  at shutdown
+   * snmplib/snmp_api.c:
+
+   CHANGES: PATCH: 1678301: from magfr: deallocate domain registry
+   at shutdown
 
 2007-03-12 22:31  tanders
 
-	* net-snmp-config.in:
-	  CHANGES: PATCH: 1678298: from magfr: compile-subagent checks for
-	  bad HAVE_SIGNAL_H
+   * net-snmp-config.in:
+
+   CHANGES: PATCH: 1678298: from magfr: compile-subagent checks for
+   bad HAVE_SIGNAL_H
+
+2007-03-12 21:47  dts12
+
+   * agent/mibgroup/if-mib/data_access/interface_linux.c:
+
+   CHANGES: snmpd: PATCHES: 1669048: Add support for
+   ipv6InterfaceIdentifier
 
 2007-03-12 21:37  dts12
 
-	* agent/helpers/table.c:
-	  CHANGES: snmpd: BUG: 1413728: Reference index values in debug
-	  output correctly.
+   * agent/helpers/table.c:
+
+   CHANGES: snmpd: BUG: 1413728: Reference index values in debug
+   output correctly.
 
 2007-03-12 21:34  dts12
 
-	* agent/mibgroup/ucd-snmp/disk.c:
-	  CHANGES: snmpd: BUG: 1102058: Skip non-mounted disks (e.g. swap
-	  partitions)
+   * agent/mibgroup/ucd-snmp/disk.c:
+
+   CHANGES: snmpd: BUG: 1102058: Skip non-mounted disks (e.g. swap
+   partitions)
 
 2007-03-12 21:30  dts12
 
-	* agent/mibgroup/if-mib/data_access/interface_linux.c,
-	  agent/mibgroup/if-mib/data_access/interface_solaris2.c,
-	  agent/mibgroup/if-mib/data_access/interface_sysctl.c:
-	  CHANGES: snmpd: PATCHES: 1668193: Update registration of
-	  ReasmMaxSize support.
+   *  agent/mibgroup/if-mib/data_access/interface_linux.c,   
+      agent/mibgroup/if-mib/data_access/interface_solaris2.c,   
+      agent/mibgroup/if-mib/data_access/interface_sysctl.c:
+
+   CHANGES: snmpd: PATCHES: 1668193: Update registration of
+   ReasmMaxSize support.
 
 2007-03-12 21:28  dts12
 
-	* agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.c:
-	  CHANGES: snmpd: PATCHES: 1668193: Fix check for v6 ReasmMaxSize
-	  support.
+   * agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.c:
+
+   CHANGES: snmpd: PATCHES: 1668193: Fix check for v6 ReasmMaxSize
+   support.
 
 2007-03-12 19:56  dts12
 
-	* agent/mibgroup/ucd-snmp/proc.c:
-	  CHANGES: snmpd: PATCHES: 1668952: Ignore zombie processes.
+   * agent/mibgroup/ucd-snmp/proc.c:
+
+   CHANGES: snmpd: PATCHES: 1668952: Ignore zombie processes.
 
 2007-03-12 19:54  dts12
 
-	* agent/mibgroup/ip-mib/ip_scalars.c:
-	  CHANGES: snmpd: PATCHES: 1665985: Implement ipReasmTimeout
-	  Though this registers an instance, rather than the full scalar
-	  object
+   * agent/mibgroup/ip-mib/ip_scalars.c:
+
+   CHANGES: snmpd: PATCHES: 1665985: Implement ipReasmTimeout
+   Though this registers an instance, rather than the full scalar
+   object
 
 2007-03-12 19:51  dts12
 
-	* agent/mibgroup/mibII/vacm_vars.c, snmplib/vacm.c:
-	  CHANGES: library: PATCHES: 1665543: Handle VACM checks correctly.
-	  CHANGES: snmpd: PATCHES: 1665549: Handle creating VACM entries
-	  correctly.
-	  [Both patches are required for correct operation]
+   * agent/mibgroup/mibII/vacm_vars.c, snmplib/vacm.c:
+
+   CHANGES: library: PATCHES: 1665543: Handle VACM checks correctly.
+   CHANGES: snmpd: PATCHES: 1665549: Handle creating VACM entries
+   correctly.
+   [Both patches are required for correct operation]
 
 2007-03-12 19:47  dts12
 
-	* agent/mibgroup/smux/smux.c:
-	  CHANGES: snmpd: PATCHES: 1659623: Handle SMUX peers with an empty
-	  password.
+   * agent/mibgroup/smux/smux.c:
+
+   CHANGES: snmpd: PATCHES: 1659623: Handle SMUX peers with an empty
+   password.
+
+2007-03-12 19:44  dts12
+
+   *  agent/mibgroup/ucd-snmp/pass.c,   
+      agent/mibgroup/ucd-snmp/pass_persist.c:
+
+   CHANGES: snmpd: PATCHES: 1657741: Handle 64-bit types via pass
+   mechanism.
 
 2007-03-12 19:40  dts12
 
-	* agent/agent_trap.c:
-	  CHANGES: snmpd: PATCHES: 1644280: Use the correct engineID when
-	  sending v3 traps.
+   * agent/agent_trap.c:
+
+   CHANGES: snmpd: PATCHES: 1644280: Use the correct engineID when
+   sending v3 traps.
 
 2007-03-12 19:32  dts12
 
-	* snmplib/snmp_api.c:
-	  CHANGES: library: PATCHES: 1642071: Don't fiddle with the storage
-	  of pre-existing users.
+   * snmplib/snmp_api.c:
+
+   CHANGES: library: PATCHES: 1642071: Don't fiddle with the storage
+   of pre-existing users.
 
 2007-03-12 19:30  dts12
 
-	* agent/mibgroup/notification/snmpNotifyTable.c:
-	  CHANGES: snmpd: PATCHES: 1641865: Don't double check snmpTrapOID
-	  in the filter table.
+   * agent/mibgroup/notification/snmpNotifyTable.c:
+
+   CHANGES: snmpd: PATCHES: 1641865: Don't double check snmpTrapOID
+   in the filter table.
 
 2007-03-12 19:25  dts12
 
-	* agent/mibgroup/ucd-snmp/memory_freebsd2.c,
-	  agent/mibgroup/ucd-snmp/memory_netbsd1.c:
-	  CHANGES: snmpd: PATCHES: 1639726: Report physical memory
-	  correctly on *BSD
+   *  agent/mibgroup/ucd-snmp/memory_freebsd2.c,   
+      agent/mibgroup/ucd-snmp/memory_netbsd1.c:
+
+   CHANGES: snmpd: PATCHES: 1639726: Report physical memory
+   correctly on *BSD
+
+2007-03-09 21:31  tanders
+
+   * snmplib/mib.c:
+
+   CHANGES: PATCH: 1674299: from magfr: Lessen the scope of the zone
+   variable in dump_realloc_oid_to_inetaddress
+
+2007-03-09 21:29  tanders
+
+   * agent/agent_trap.c:
+
+   CHANGES: PATCH: 1674302: from magfr: Lessen the scope of the len
+   variable in convert_v2pdu_to_v1
 
 2007-03-08 15:52  dts12
 
-	* include/net-snmp/system/netbsd.h,
-	  include/net-snmp/system/openbsd.h:
-	  Include Host Resources MIB on NetBSD and OpenBSD
+   *  include/net-snmp/system/netbsd.h,   
+      include/net-snmp/system/openbsd.h:
+
+   Include Host Resources MIB on NetBSD and OpenBSD
+
+2007-03-07 09:43  tanders
+
+   * agent/agent_trap.c:
+
+   CHANGES: PATCH: 1674298: from magfr: Remove unused sinkport
+   variable
 
 2007-03-06 13:51  dts12
 
-	* agent/snmp_agent.c:
-	  CHANGES: snmpd: BUG: 1159908: Fix memory leak
+   * agent/snmp_agent.c:
 
-2007-03-02 22:58  tanders
+   CHANGES: snmpd: BUG: 1159908: Fix memory leak
 
-	* snmplib/MSG00001.bin:
-	  de-mange binary file
+2007-03-02 22:40  tanders
+
+   * snmplib/MSG00001.bin:
+
+   no eol-style for binary files
+
+2007-03-02 22:26  tanders
+
+   * doc/rfc/smiV2/rfc2579.errata~:
+
+   don't ship editor backup copies
+
+2007-03-02 16:20  tanders
+
+   * snmplib/MSG00001.bin:
+
+   flag as binary
 
 2007-03-02 12:44  tanders
 
-	* CodingStyle:
-	  fix typo
+   * CodingStyle:
+
+   fix typo
+
+2007-03-02 09:57  dts12
+
+   * TODO:
+
+   Minor tweak - playing with SVN as much as anything....
+
+2007-03-01 23:57  hardaker
+
+   * NEWS:
+
+   mention that we moved to SVN
 
 2007-02-28 15:27  dts12
 
-	* CHANGES, ChangeLog, NEWS:
-	  Checkpoint summary of CVS changes, preparatory for the SVN
-	  switch.
+   * CHANGES, ChangeLog, NEWS:
 
--------------------------------------------------------------------------------
-
-Changes: V5.4 -> SVN checkpoint (V5-4-patches branch)
+   Checkpoint summary of CVS changes, preparatory for the SVN
+   switch.
 
 2007-02-27 13:36  rstory
 
@@ -8351,17 +72299,12 @@
 
    add header for easier configure --with-mib-module
 
-2007-02-27 12:34  rstory
-
-   * agent/mibgroup/ip-mib/ipAddressPrefixTable.h:
-
-   file ipAddressPrefixTable.h was added on branch V5-4-patches on 2007-02-27 12:34:59 +0000
-
-2007-02-26 14:55  dts12
+2007-02-26 14:54  dts12
 
    * agent/mibgroup/agentx/protocol.c:
 
    Re-correct interpretation of "null OID" in the AgentX specs.
+   (for the last time, I trust!)
 
 2007-02-26 14:37  dts12
 
@@ -8373,15 +72316,15 @@
 
    * perl/: ASN/Makefile.PL, OID/Makefile.PL,
      SNMP/Makefile.PL, TrapReceiver/Makefile.PL,
-     agent/Makefile.PL, agent/default_store/Makefile.PL
-, default_store/Makefile.PL:
+     agent/Makefile.PL, agent/default_store/Makefile.PL,
+     default_store/Makefile.PL:
 
    Prompting for a single directory, not an array.
 
 2007-02-26 11:32  dts12
 
-   * local/: mib2c.container.conf, mib2c.iterate.conf
-, mib2c.table_data.conf:
+   * local/: mib2c.container.conf, mib2c.iterate.conf,
+     mib2c.table_data.conf:
 
    CHANGES: mib2c: BUG: 1429472: Protect against missing instances (and invalid objects)
 
@@ -8399,15 +72342,15 @@
 
 2007-02-23 21:53  tanders
 
-   * configure, configure.in:
+   * configure.in, configure:
 
    add quotes to fix shell syntax error when empty
 
-2007-02-22 22:47  tanders
+2007-02-22 22:35  tanders
 
    * configure, configure.in:
 
-   Last commit broke the build. Now escape backslashes properly. Please remember to use autoconf 2.59 for the patches branches!
+   Last commit broke the build. Now escape backslashes properly.
 
 2007-02-22 15:38  dts12
 
@@ -8452,20 +72395,17 @@
 
    CHANGES: build: BUG: 1096166: Handle --without-logfile correctly.
 
-2007-02-19 16:36  dts12
-
-   * dist/: Makefile, nsb-config, nsb-functions
-, nsb-nightly, nsb-package,
-     nsb-platform, patme, README.build-scripts
-:
-
-   removed dist files only to be distributed in the main CVS branch
-
-2007-02-19 16:30  dts12
+2007-02-19 16:34  dts12
 
    * dist/RELEASE-INSTRUCTIONS:
 
-   Release Instructions only to be distributed in the main CVS branch
+   Mention removal from CVS of deleted files
+
+2007-02-19 15:56  dts12
+
+   * dist/RELEASE-INSTRUCTIONS:
+
+   Rework release instructions to take account of "makerelease" script
 
 2007-02-19 10:49  dts12
 
@@ -8484,7 +72424,7 @@
    * Makefile.in:
 
    Don't invoke 'versiontag' for tagging the CVS tree.
-   It doesn't handle this any more. (Use 'makerelease' instead)
+   It doesn't handle this any more.  (Use 'makerelease' instead)
 
 2007-02-19 10:02  dts12
 
@@ -8545,11 +72485,48 @@
 
    added the flow lable mib, which the tunnel-mib refers to
 
-2007-02-07 17:17  hardaker
+2007-02-05 23:02  tanders
 
-   * mibs/IPV6-FLOW-LABEL-MIB.txt:
+   * dist/nsb-functions:
 
-   file IPV6-FLOW-LABEL-MIB.txt was added on branch V5-4-patches on 2007-02-07 17:19:10 +0000
+   more portability fixes
+
+2007-02-05 22:50  tanders
+
+   * dist/check-api-change:
+
+   use /bin/sh unless bash features are really needed
+
+2007-02-05 21:52  rstory
+
+   * Makefile.top:
+
+   note that current should be bumped by 5 when bumped
+
+2007-02-05 21:49  rstory
+
+   * dist/RELEASE-INSTRUCTIONS:
+
+   - note that current should be bumped by 5 when updated
+   - add pointer to new check-api-changes script
+
+2007-02-05 21:46  rstory
+
+   * dist/check-api-change:
+
+   simplistic new script to help check for api changes between releases
+
+2007-02-05 21:38  rstory
+
+   * agent/mibgroup/struct.h:
+
+   make new struct member conditional, since use is conditional
+
+2007-02-05 21:20  tanders
+
+   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c:
+
+   move function call out of assert
 
 2007-02-05 15:16  dts12
 
@@ -8558,16 +72535,9 @@
    CHANGES: snmplib: PATCH: 1641895: Extend short view masks (as per RFC specs)
    Patch supplied by Michael Kirkham.
 
-2007-02-05 15:10  rstory
+2007-02-05 14:31  dts12
 
-   * agent/mibgroup/if-mib/ifTable/ifTable_data_access.c:
-
-   move function call out of assert
-
-2007-02-05 14:38  dts12
-
-   * agent/mibgroup/notification/snmpNotifyFilterProfileTable.c
-:
+   * agent/mibgroup/notification/snmpNotifyFilterProfileTable.c:
 
    CHANGES: snmpd: PATCH: 1639360: Fix snmpNotifyFilterProfileTable row creation.
    Patch supplied by Michael Kirkham.
@@ -8579,26 +72549,83 @@
    Fix compilation if LOCK_PER_CALLBACK_SUBID not defined.
    Reported by Emi Yanagi
 
+2007-02-05 09:48  dts12
+
+   * FAQ:
+
+   Spelling correction: 'superceded' -> 'superseded'
+   (Oh, the shame of it!)
+
 2007-01-31 13:51  tanders
 
    * Makefile.top:
 
    CHANGES: build: BUG: 1647976: Cygwin/MinGW Windows build fails due to libtool error
 
-2007-01-30 13:43  tanders
+2007-01-30 13:39  tanders
 
    * agent/mibgroup/if-mib/data_access/interface_linux.c:
 
    CHANGES: build: yet another fix to address build issues with ethtool (on RH9).
    Patch provided by Magnus Fromreide.
 
+2007-01-30 09:10  dts12
+
+   * FAQ:
+
+   Clarify when symlink fix is/isn't appropriate.  Synch with Wiki.
+
+2007-01-29 11:12  dts12
+
+   * FAQ:
+
+   Authenticated SNMPv3 requests still need a username.  (Synch with Wiki)
+
 2007-01-29 11:03  tanders
 
-   * python/netsnmp/client_intf.c:
+   * python/netsnmp/client_intf.c, agent/helpers/table.c
+:
 
    get rid of C++ comments
 
-2007-01-25 22:45  tanders
+2007-01-28 13:36  tanders
+
+   * dist/nsb-functions:
+
+   fix bad test
+
+2007-01-28 13:06  tanders
+
+   * dist/nsb-functions:
+
+   rename variable to resolve name clash and to unbreak nightly builds on Solaris
+
+2007-01-28 12:52  tanders
+
+   * agent/helpers/table_tdata.c:
+
+   get rid of C++ comments
+
+2007-01-27 14:40  tanders
+
+   * dist/nsb-nightly:
+
+   fix typo
+
+2007-01-27 14:23  tanders
+
+   * agent/helpers/table_data.c:
+
+   get rid of C++ comments
+
+2007-01-26 11:15  tanders
+
+   * dist/: nsb-config, nsb-functions, nsb-nightly
+, nsb-package:
+
+   more Bourne shell compatibility fixes
+
+2007-01-25 22:41  tanders
 
    * configure, configure.in:
 
@@ -8612,6 +72639,7 @@
 
 2007-01-25 22:05  tanders
 
+   *
      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagent.c
 , local/mib2c-conf.d/subagent.m2c:
 
@@ -8629,12 +72657,70 @@
 
    CHANGES: snmpd: PATCH: 1644714: from "Leland Wallace": replace last remaining instance of deprecated copy_word by copy_nword
 
+2007-01-25 15:30  tanders
+
+   * dist/: nsb-config, nsb-functions, nsb-nightly
+, nsb-package, nsb-platform:
+
+   many Bourne shell portability fixes
+
+2007-01-24 16:39  dts12
+
+   * dist/: nsb-config, nsb-functions, nsb-nightly
+, nsb-package, nsb-platform:
+
+   Pre-Posix Bourne shell compatability.
+
 2007-01-24 14:02  dts12
 
    * agent/mibgroup/ucd-snmp/disk.c:
 
    Tweak debug output
 
+2007-01-24 13:58  dts12
+
+   * local/mib2c-update:
+
+   Shellscript portability.  (Everything has /bin/sh)
+
+2007-01-24 13:49  dts12
+
+   * dist/: cvsshow, cvsup, nsb-config,
+     nsb-functions, nsb-nightly, nsb-package,
+     nsb-platform:
+
+   Improve shell-script portability. (Everything has /bin/sh!)
+
+2007-01-24 13:40  dts12
+
+   * snmplib/: snmpUDPDomain.c, snmp_client.c:
+
+   Extra debugging output
+
+2007-01-24 13:38  dts12
+
+   * agent/helpers/table.c, agent/helpers/table_container.c
+, agent/helpers/table_data.c,
+     agent/helpers/table_tdata.c, include/net-snmp/agent/table.h
+, include/net-snmp/agent/table_container.h,
+     include/net-snmp/agent/table_tdata.h:
+
+   Preliminary table unregistration API.
+
+2007-01-24 13:11  dts12
+
+   * apps/snmptrapd_log.c:
+
+   Move hostname translation into the transport-specific library routines.
+   (Where it belongs!)
+
+2007-01-24 13:04  dts12
+
+   * include/net-snmp/library/snmp_transport.h,
+     snmplib/snmpUDPDomain.c:
+
+   Basic framework for transport-specific translation of hostnames.
+
 2007-01-24 12:27  dts12
 
    * apps/snmptrapd_log.c:
@@ -8651,8 +72737,7 @@
 
    * agent/mibgroup/:
      ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
-, ip-mib/ipAddressTable/ipAddressTable_interface.c
-,
+, ip-mib/ipAddressTable/ipAddressTable_interface.c,
      ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c
 ,
      ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c
@@ -8702,6 +72787,7 @@
 
    CHANGES: snmptrapd: BUG: 1638225: Fix interpretation of transport address data.
    (Keep this consistent with snmpUDPDomain.c)
+   This does not feel the right way to handle this!
 
 2007-01-23 14:10  dts12
 
@@ -8730,8 +72816,7 @@
 
 2007-01-22 16:16  dts12
 
-   * agent/mibgroup/agentx/: master_admin.c, master.c
-:
+   * agent/mibgroup/agentx/: master.c, master_admin.c:
 
    CHANGES: snmpd: PATCH: 1641685: Handle unresponsive AgentX subagents more reliably.
    Fix provided by Josef Moellers
@@ -8758,7 +72843,14 @@
    CHANGES: FreeBSD: BUG: 1633483: Support CPU HAL on FreeBSD4.x
    (before CPU definitions were moved to <sys/resource.h>)
 
-2007-01-19 14:22  tanders
+2007-01-19 16:15  dts12
+
+   * apps/snmptrapd.c:
+
+   library layering improvements: *move* (rather than copy) global variables
+   from snmptrapd to libnetsnmptrapd
+
+2007-01-19 14:18  tanders
 
    * configure, configure.in,
      agent/mibgroup/if-mib/data_access/interface_linux.c:
@@ -8768,13 +72860,26 @@
 
 2007-01-19 11:25  tanders
 
-   * configure, configure.in,
+   * configure.in, configure,
      include/net-snmp/net-snmp-config.h.in,
      agent/mibgroup/host/hr_filesys.c,
      agent/mibgroup/host/hr_storage.c:
 
    CHANGES: build: add configure check for hasmntopt to fix the build on systems that lack it
 
+2007-01-18 12:50  tanders
+
+   * apps/snmptrapd_handlers.c:
+
+   library layering improvements: move global variables from snmptrapd to libnetsnmptrapd
+
+2007-01-18 11:13  tanders
+
+   * apps/snmptrapd.c, apps/snmptrapd_handlers.c,
+     man/snmptrapd.8.def, man/snmptrapd.conf.5.def:
+
+   drop "-e"/printEventNumbers support for snmptrapd (obsolete, deprecated and breaks library layering)
+
 2007-01-16 10:04  dts12
 
    * agent/mibgroup/notification/snmpNotifyTable.c:
@@ -8795,6 +72900,12 @@
 
    Don't hardcode the size of counter64 structure (may be wrong on 64-bit boxes)
 
+2007-01-16 09:00  dts12
+
+   * agent/agent_trap.c:
+
+   Extra debugging output.
+
 2007-01-11 22:13  tanders
 
    * agent/mibgroup/util_funcs.c,
@@ -8804,10 +72915,16 @@
 
    CHANGES: snmplib: library layering improvements: introduce netsnmp_mktemp to prevent libnetsnmpagent from depending on libnetsnmpmibs
 
+2007-01-11 21:35  hardaker
+
+   * configure.in:
+
+   changed autoconf req to 2.61
+
 2007-01-11 21:28  hardaker
 
-   * snmplib/: snmpAAL5PVCDomain.c, snmpIPXDomain.c
-, snmpSTDDomain.c, snmpTCPDomain.c,
+   * snmplib/: snmpAAL5PVCDomain.c, snmpIPXDomain.c,
+     snmpSTDDomain.c, snmpTCPDomain.c,
      snmpTCPIPv6Domain.c, snmpUDPDomain.c,
      snmpUDPIPv6Domain.c, snmp_service.c,
      snmp_transport.c:
@@ -8832,6 +72949,12 @@
 
    CHANGES: Solaris: IF-MIB fix: add missing return at end of get_if_stats
 
+2007-01-08 08:30  tanders
+
+   * agent/Makefile.in:
+
+   CHANGES: build: library layering improvements: build libraries in the correct order (libnetsnmpagent before libnetsnmphelpers before libnetsnmpmibs)
+
 2007-01-07 19:47  tanders
 
    * include/net-snmp/library/snmp_service.h:
@@ -8845,7 +72968,7 @@
    CHANGES: Solaris: BUG: 1626153: no hrSWRun informations on Solaris zones
    Patch provided by Klaus Muehlfeld
 
-2007-01-06 00:34  tanders
+2007-01-06 00:30  tanders
 
    * perl/agent/agent.xs:
 
@@ -8857,12 +72980,17 @@
 
    get rid of C++ comments
 
-2007-01-03 22:23  tanders
+2007-01-02 23:33  tanders
 
-   * perl/SNMP/: SNMP.xs, t/conf.t:
+   * agent/agent_registry.c:
 
-   clean up compile and fix tests.
-   Backport from 5.5.dev
+   BUG: Coverity #173: remove superfluous NULL check (already dereferenced earlier anyway)
+
+2007-01-02 23:08  tanders
+
+   * snmplib/system.c:
+
+   only log a message when the mib_indexes directory is *really* created
 
 2007-01-02 22:53  tanders
 
@@ -8876,6 +73004,62 @@
 
    BUG: Coverity #193: properly initialize session pointer before use
 
+2007-01-02 20:13  tanders
+
+   * agent/agent_registry.c:
+
+   back out previous bad change to agent registry
+
+2007-01-02 19:52  tanders
+
+   * agent/snmp_agent.c:
+
+   CHANGES: snmpd: PATCH: 1601453: from "Robert Wilcox": Dynamic Memory failure handling improvements
+
+2007-01-02 19:52  tanders
+
+   * snmplib/default_store.c, snmplib/read_config.c,
+     agent/agent_registry.c, agent/helpers/null.c,
+     agent/helpers/old_api.c, agent/helpers/stash_cache.c
+, agent/helpers/table.c, agent/helpers/table_array.c
+, agent/helpers/table_dataset.c,
+     snmplib/snmpCallbackDomain.c, snmplib/snmpusm.c,
+     agent/helpers/table_iterator.c, agent/helpers/watcher.c
+, agent/mibgroup/header_complex.c,
+     agent/mibgroup/testhandler.c,
+     agent/mibgroup/disman/mteObjectsTable.c,
+     agent/mibgroup/mibII/interfaces.c,
+     agent/mibgroup/notification/snmpNotifyFilterProfileTable.c,
+     agent/mibgroup/notification/snmpNotifyTable.c,
+     agent/mibgroup/utilities/override.c:
+
+   CHANGES: PATCH: 1601453: from "Robert Wilcox": Dynamic Memory failure handling improvements
+
+2007-01-02 17:56  tanders
+
+   * Makefile.in:
+
+   remove LD_RUN_PATH comment for python
+
+2007-01-02 17:38  tanders
+
+   * Makefile.top, configure, net-snmp-config.in
+:
+
+   CHANGES: build: update to autoconf 2.61
+
+2007-01-02 17:23  tanders
+
+   * Makefile.in, include/net-snmp/system/kfreebsd.h:
+
+   NEWS: Ports: PATCH: 1623874: from "Petr Salinger": add GNU/kFreeBSD support
+
+2007-01-02 17:17  tanders
+
+   * agent/mibgroup/ucd-snmp/disk.c:
+
+   CHANGES: build: add workaround for AC_FUNC_GETMNTENT() bug in autoconf 2.60b and 2.61 (see Debian bugs #403243, #403079)
+
 2007-01-02 16:48  dts12
 
    * local/mib2c:
@@ -8885,8 +73069,8 @@
 
 2007-01-02 16:00  dts12
 
-   * snmplib/: snmpUDPDomain.c, snmpUDPIPv6Domain.c
-, snmpUnixDomain.c:
+   * snmplib/: snmpUDPDomain.c, snmpUDPIPv6Domain.c,
+     snmpUnixDomain.c:
 
    CHANGES: snmplib: BUG: 1600171: Support longer community strings in VACM config.
    Patch provided by Robert Wilcox
@@ -8898,20 +73082,27 @@
    CHANGES: snmpd: BUG: 1546817: Fix snmpEnterprise varbind when forwarding v1 traps.
    Patch provided by Pablo Passera.
 
-2007-01-02 10:38  dts12
+2007-01-02 10:34  dts12
 
    * configure, configure.in:
 
    CHANGES: build: PATCH: 1625135: configure location of python interpreter
    Provided by Andrew Langmead
 
-2007-01-02 10:38  dts12
+2007-01-02 10:34  dts12
 
    * Makefile.in, Makefile.top:
 
    NEWS: configure: PATCH 1625135: configure location of python interpreter
    Provided by Andrew Langmead
 
+2007-01-02 10:22  dts12
+
+   * configure.in, configure:
+
+   CHANGES: build: PATCH: 1624406: option to hardcode location of mount table
+   Submitted by Jochen
+
 2007-01-01 17:44  dts12
 
    * agent/mibgroup/util_funcs.c:
@@ -8919,12 +73110,33 @@
    CHANGES: snmpd: PATCH: 1601188, BUG: 1600432: Handle signals properly when restarting the agent.
    Fix provided by Loic Domaigne.
 
-2007-01-01 16:12  dts12
+2007-01-01 17:35  dts12
 
-   * snmplib/snmp_client.c:
+   * snmplib/mib.c:
+
+   Handle non-writable MIB indexes (e.g. run as non-privileged user)
+
+2007-01-01 16:09  dts12
+
+   * include/net-snmp/library/snmp_api.h, snmplib/snmp_client.c
+:
 
    NEWS: snmplib: PATCHES 1592706: Fix memory leak when cloning varbinds.
-   Patch by Steven Dorigotti.
+   Based on a suggestion by Steven Dorigotti.
+
+2007-01-01 16:09  dts12
+
+   * snmplib/snmp_api.c:
+
+   CHANGES: snmplib: PATCH: 1592706: Fix memory leak when cloning varbinds.
+   Based on a suggestion by Steven Dorigotti.
+
+2007-01-01 15:48  dts12
+
+   * agent/mibgroup/ucd-snmp/: pass.c, pass_persist.c:
+
+   NEWS: agent: PATCH 1585146: Extend range of available error codes
+   Submitted by Anthony Novatsis.
 
 2007-01-01 15:29  dts12
 
@@ -8935,8 +73147,8 @@
 
 2007-01-01 15:16  dts12
 
-   * apps/: snmpdf.c, snmpget.c, snmpgetnext.c
-, snmpset.c:
+   * apps/: snmpdf.c, snmpget.c, snmpgetnext.c,
+     snmpset.c:
 
    Move global 'failures' variable closer to where it is used.
    CHANGES: apps: PATCH: 1529523: Close SNMP session on failure.
@@ -8948,6 +73160,16 @@
    Protect against potential double delete.
    Patch provided by Magnus Fromreide.
 
+2007-01-01 14:22  dts12
+
+   * include/net-snmp/library/mib.h, snmplib/mib.c,
+     snmplib/parse.c:
+
+   Maintain MIB directory index files under /var/net-snmp
+   (in line with File Hierarchy Standard specifications)
+   See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=389434
+   and discussion "MIBs in net-snmp" on coders list (Oct 2006)
+
 2007-01-01 11:28  dts12
 
    * agent/mibgroup/agentx/master_admin.c:
@@ -8955,6 +73177,12 @@
    Ensure sysORDescriptions are null-terminated, so they can be
    safely passed to 'strdup()'.  Reported by Wolfgang Pedot.
 
+2006-12-29 17:25  dts12
+
+   * FAQ:
+
+   Synchronise with Wiki version.
+
 2006-12-28 23:29  tanders
 
    * snmplib/snmpUDPDomain.c:
@@ -8984,10 +73212,9 @@
 
 2006-12-17 18:01  alex_b
 
-   * win32/: Makefile-apps.in, libsnmp_dll/Makefile.in
-, snmpd/Makefile.in, snmpdsdk/Makefile.in
-, snmpnetstat/Makefile.in,
-     snmptrapd/Makefile.in:
+   * win32/: Makefile-apps.in, libsnmp_dll/Makefile.in,
+     snmpd/Makefile.in, snmpdsdk/Makefile.in,
+     snmpnetstat/Makefile.in, snmptrapd/Makefile.in:
 
    Add gdi32.lib to fix linking problem when using the static version of the
    SSL libraries.  Thanks to Simon Edwards for the fix.
@@ -9000,15 +73227,15 @@
 
 2006-12-12 23:53  tanders
 
-   * agent/mibgroup/host/: hr_filesys.c, hr_storage.c
-, hr_swinst.c:
+   * agent/mibgroup/host/: hr_filesys.c, hr_storage.c,
+     hr_swinst.c:
 
    CHANGES: Linux: PATCH: 1581294: from "Michael Tatarinov": host-resources improvements
 
 2006-12-12 21:27  tanders
 
-   * win32/net-snmp/: net-snmp-config.h,
-     net-snmp-config.h.in:
+   * win32/net-snmp/: net-snmp-config.h, net-snmp-config.h.in
+:
 
    re-add UDP_ADDRESSES_IN_HOST_ORDER
 
@@ -9024,7 +73251,7 @@
 
    CHANGES: Win32: fix win32/Configure --with-ipv6
 
-2006-12-12 18:21  tanders
+2006-12-12 18:10  tanders
 
    * win32/net-snmp/net-snmp-config.h:
 
@@ -9036,13 +73263,88 @@
 
    Add version to FAQ.html.
 
-2006-12-09 00:16  tanders
+2006-12-09 17:11  alex_b
 
-   * include/net-snmp/system/: darwin8.h, darwin9.h
+   * man/: Makefile.in, make_index.pl, man_sections.txt
 :
 
+   -Create html pages for ALL man pages.
+   -Improve error message when creating the index.html file.
+
+2006-12-09 17:06  alex_b
+
+   * local/: html-add-header-footer.pl, html-textfile-fix.pl
+:
+
+   Add tidy command line option and add missing README files.
+
+2006-12-09 00:16  tanders
+
+   * include/net-snmp/system/: darwin8.h, darwin9.h:
+
    CHANGES: MacOSX: PATCH: 1600453: from "Chris Jalbert": OS X compile-time endian determination
 
+2006-12-08 22:47  tanders
+
+   * dist/RELEASE-INSTRUCTIONS:
+
+   document some more post-release tasks
+
+2006-12-08 22:26  tanders
+
+   * man/netsnmp_agent.3, man/netsnmp_agent_registry.3,
+     man/netsnmp_agent_trap.3, man/netsnmp_asn1_packet_parse.3
+, man/netsnmp_baby_steps.3,
+     man/netsnmp_bulk_to_next.3, man/netsnmp_cache_handler.3
+, man/netsnmp_callback.3, man/netsnmp_container.3
+, man/netsnmp_data_list.3, man/netsnmp_debug.3
+, man/netsnmp_default_store.3, man/netsnmp_handler.3
+, man/netsnmp_instance.3,
+     man/netsnmp_iterator_info_s.3, man/netsnmp_leaf.3,
+     man/netsnmp_library.3, man/netsnmp_mib_maintenance.3
+, man/netsnmp_mib_utilities.3,
+     man/netsnmp_mode_end_call.3, man/netsnmp_multiplexer.3
+, man/netsnmp_netsnmp_agent_request_info_s.3,
+     man/netsnmp_netsnmp_column_info_t.3,
+     man/netsnmp_netsnmp_data_list_s.3,
+     man/netsnmp_netsnmp_handler_registration_s.3,
+     man/netsnmp_netsnmp_iterator_info_s.3,
+     man/netsnmp_netsnmp_mib_handler_access_methods.3,
+     man/netsnmp_netsnmp_mib_handler_methods.3,
+     man/netsnmp_netsnmp_mib_handler_s.3,
+     man/netsnmp_netsnmp_request_info_s.3,
+     man/netsnmp_netsnmp_table_registration_info_s.3,
+     man/netsnmp_netsnmp_table_request_info_s.3,
+     man/netsnmp_oid_stash.3, man/netsnmp_old_api.3,
+     man/netsnmp_read_config.3, man/netsnmp_read_only.3,
+     man/netsnmp_row_merge.3, man/netsnmp_scalar.3,
+     man/netsnmp_scalar_group_group.3, man/netsnmp_serialize.3
+, man/netsnmp_snmp_agent.3, man/netsnmp_snmp_alarm.3
+, man/netsnmp_snmp_client.3,
+     man/netsnmp_snmp_logging.3, man/netsnmp_snmp_pdu.3,
+     man/netsnmp_snmp_session.3, man/netsnmp_stash_cache.3
+, man/netsnmp_stash_to_next.3, man/netsnmp_table.3
+, man/netsnmp_table_array.3,
+     man/netsnmp_table_container.3, man/netsnmp_table_data.3
+, man/netsnmp_table_dataset.3,
+     man/netsnmp_table_generic.3, man/netsnmp_table_indexes.3
+, man/netsnmp_table_iterator.3,
+     man/netsnmp_table_iterator.h.3,
+     man/netsnmp_table_maintenance.3, man/netsnmp_table_rows.3
+, man/netsnmp_tdata.3, man/netsnmp_util.3,
+     man/netsnmp_utilities.3, man/netsnmp_variable_list.3
+, man/netsnmp_watcher.3, perl/ASN/ASN.pm,
+     perl/AnyData_SNMP/Storage.pm, perl/OID/OID.pm,
+     perl/SNMP/SNMP.pm, perl/TrapReceiver/TrapReceiver.pm
+, perl/agent/agent.pm, perl/agent/Support/Support.pm
+, perl/agent/default_store/default_store.pm,
+     perl/default_store/default_store.pm, configure,
+     configure.in, doxygen.conf, sedscript.in,
+     dist/Makefile, dist/net-snmp.spec,
+     snmplib/snmp_version.c, FAQ, README:
+
+   - version tag ( 5.5.dev )
+
 2006-12-08 22:20  tanders
 
    * local/Version-Munge.pl:
@@ -9055,31 +73357,44 @@
 
    NEWS: BUG: 1611524: fix tcp connection table fd leak
 
-2006-12-07 15:56  tanders
+2006-12-08 13:17  marz
 
-   * agent/mibgroup/hardware/: cpu.h, cpu/cpu_mach.c
-, cpu/cpu_mach.h:
+   * perl/SNMP/: Makefile.PL, SNMP.pm:
+
+   revert uninformed version change
+
+2006-12-07 21:50  uid39039
+
+   * perl/SNMP/: Makefile.PL, SNMP.pm, SNMP.xs,
+     t/conf.t:
+
+   clean up compile and fix tests
+
+2006-12-07 16:48  marz
+
+   * perl/SNMP/SNMP.pm:
+
+   comment fix
+
+2006-12-07 15:52  tanders
+
+   * agent/mibgroup/hardware/: cpu.h, cpu/cpu_mach.c,
+     cpu/cpu_mach.h:
 
    NEWS: MacOSX: PATCH: 1600522: from "Bill Fenner": CPU HAL implementation for mach/darwin
 
-2006-12-07 15:54  tanders
-
-   * agent/mibgroup/hardware/cpu/cpu_mach.c:
-
-   file cpu_mach.c was added on branch V5-4-patches on 2006-12-07 15:56:38 +0000
-
-2006-12-07 15:54  tanders
-
-   * agent/mibgroup/hardware/cpu/cpu_mach.h:
-
-   file cpu_mach.h was added on branch V5-4-patches on 2006-12-07 15:56:38 +0000
-
 2006-12-07 13:10  tanders
 
    * perl/SNMP/SNMP.pm:
 
    CHANGES: documentation: PATCH: 1604580: SNMP(3) manual page corrections (spotted by tek-ops)
 
+2006-12-06 20:30  hardaker
+
+   * dist/RELEASE-INSTRUCTIONS:
+
+   document various aspects of post-release things to do
+
 2006-12-06 15:34  rstory
 
    * agent/mibgroup/tunnel/tunnel.c:
@@ -9118,6 +73433,39 @@
 
    CHANGES: BUG: 1600093: autoconf 2.60 breaks the build
 
+2006-12-04 17:49  hardaker
+
+   * COPYING:
+
+   change top text to remove history section which was out of date
+
+2006-12-03 23:20  alex_b
+
+   * win32/: dist/README.build.win32.txt,
+     netsnmpmibssdk/netsnmpmibssdk.dsp:
+
+   Win32:  Workspace compile fix, build instructions update.
+
+2006-11-24 17:53  hardaker
+
+   * FAQ, README, configure, configure.in
+, sedscript.in, snmplib/snmp_version.c,
+     dist/net-snmp.spec:
+
+   - version tag ( 5.4 )
+
+2006-11-24 17:52  hardaker
+
+   * CHANGES, NEWS:
+
+   version update
+
+2006-11-24 17:48  hardaker
+
+   * ChangeLog:
+
+   version update
+
 -------------------------------------------------------------------------------
 
 Changes: V5.4.rc3 -> V5.4
@@ -12943,6 +77291,7 @@
 
 2006-08-17 07:50  rstory
 
+   *
      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
 , local/mib2c-conf.d/mfd-interface.m2c:
 
@@ -13945,6 +78294,7 @@
 
 2006-06-12 13:05  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
 :
 
@@ -15436,7 +79786,7 @@
 
    * agent/mibgroup/ip-mib/data_access/ipaddress_linux.c:
 
-   Handle full-length IPv6 addresses.  Fix supplied by Radek Vokál
+   Handle full-length IPv6 addresses.  Fix supplied by Radek Vok爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´ã€•
 
 2006-01-30 01:52  dts12
 
@@ -15483,7 +79833,7 @@
 , snmplib/snmp_api.c, perl/SNMP/SNMP.pm:
 
    Handle non-increasing OIDs during a (perl) bulkwalk.
-   Patch #1364650 from Ole Bjørn Hessen
+   Patch #1364650 from Ole Bj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´å—·n Hessen
 
 2006-01-27 03:07  dts12
 
@@ -15937,6 +80287,7 @@
 
 2006-01-10 03:07  tanders
 
+   *
      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c
 :
 
@@ -15944,6 +80295,7 @@
 
 2006-01-09 17:41  tanders
 
+   *
      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c
 :
 
@@ -16955,6 +81307,7 @@
 
 2005-12-09 20:58  rstory
 
+   *
      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_data_access.c
 :
 
@@ -16977,6 +81330,7 @@
 
 2005-12-09 20:57  rstory
 
+   *
      agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c
 :
 
@@ -18257,6 +82611,7 @@
 
 2005-11-16 15:18  rstory
 
+   *
      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
 :
 
@@ -18396,6 +82751,7 @@
 
 2005-11-15 21:14  rstory
 
+   *
      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c
 :
 
@@ -18409,6 +82765,7 @@
 
 2005-11-15 21:08  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
 :
 
@@ -18438,6 +82795,7 @@
 
 2005-11-15 19:24  rstory
 
+   *
      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c
 :
 
@@ -18554,6 +82912,7 @@
 
 2005-11-14 17:28  rstory
 
+   *
      agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c
 :
 
@@ -19835,6 +84194,7 @@
 
 2005-10-28 23:27  rstory
 
+   *
      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.h
 :
 
@@ -19842,6 +84202,7 @@
 
 2005-10-28 23:26  rstory
 
+   *
      agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c
 :
 
@@ -21910,6 +86271,7 @@
 
 2005-09-27 19:25  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
 :
 
@@ -22622,6 +86984,7 @@
 
 2005-09-06 19:17  tanders
 
+   *
      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/.cvsignore
 :
 
@@ -22734,6 +87097,7 @@
 
 2005-08-30 08:06  rstory
 
+   *
      agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_constants.h
 :
 
@@ -25570,6 +89934,7 @@
 
 2005-03-28 14:29  rstory
 
+   *
      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c
 :
 
@@ -25599,7 +89964,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
@@ -25610,6 +89975,7 @@
 
 2005-03-24 16:48  rstory
 
+   *
      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_access.c
 :
 
@@ -26347,6 +90713,7 @@
 
 2005-01-27 22:52  rstory
 
+   *
      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_access.c
 :
 
@@ -28102,6 +92469,7 @@
 
 2004-10-17 20:56  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_data_access.c
 :
 
@@ -28522,6 +92890,7 @@
 
 2004-10-14 18:15  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.h
 :
 
@@ -28870,6 +93239,7 @@
 
 2004-10-08 19:27  rstory
 
+   *
      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c
 :
 
@@ -28877,6 +93247,7 @@
 
 2004-10-08 19:25  rstory
 
+   *
      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c
 :
 
@@ -29930,6 +94301,7 @@
 
 2004-09-24 09:15  rstory
 
+   *
      agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c
 :
 
@@ -29989,6 +94361,7 @@
 
 2004-09-23 13:24  rstory
 
+   *
      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_set.c
 :
 
@@ -30165,6 +94538,7 @@
 
 2004-09-21 06:43  hardaker
 
+   *
      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_get.c
 :
 
@@ -31198,7 +95572,7 @@
 
    * agent/mibgroup/ucd-snmp/disk.c:
 
-   fix float calc in var_extensible_disk per Harald Straßberger <hs@syslog.at>
+   fix float calc in var_extensible_disk per Harald Stra爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµãƒƒerger <hs@syslog.at>
 
 2004-08-31 14:02  hardaker
 
@@ -31357,6 +95731,7 @@
 
 2004-08-27 23:22  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_data_access.c
 :
 
@@ -32217,6 +96592,7 @@
 
 2004-07-10 19:51  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_data_access.c
 :
 
@@ -32301,6 +96677,7 @@
 
 2004-07-09 22:58  hardaker
 
+   *
      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_data_set.c
 :
 
@@ -32379,6 +96756,7 @@
 
 2004-07-09 09:57  hardaker
 
+   *
      agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/.cvsignore
 :
 
@@ -32522,6 +96900,7 @@
 
 2004-07-07 13:41  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c
 :
 
@@ -33349,6 +97728,7 @@
 
 2004-06-28 15:11  rstory
 
+   *
      agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_constants.h
 :
 
@@ -33779,7 +98159,7 @@
    * configure.in, configure:
 
    Fix handling of --enable-local-smux option
-   (Patch #949808 from Erik Änggård)
+   (Patch #949808 from Erik 爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œ´çˆ­õ€‘‹ï½¤õ€Œ¶ngg爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµè„šd)
 
 2004-06-18 06:46  dts12
 
@@ -36019,6 +100399,7 @@
 
 2004-04-13 11:44  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c
 :
 
@@ -36026,6 +100407,7 @@
 
 2004-04-13 11:43  rstory
 
+   *
      agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
 :
 
@@ -64743,7 +129125,7 @@
    * agent/mibgroup/host/: hr_swrun.c (V4-2-patches.5), hr_swrun.c
 :
 
-   Fix Linux file descriptor leak (reported by Oliver Fänger)
+   Fix Linux file descriptor leak (reported by Oliver F爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµç©«ger)
    
 2001-03-14 05:22  jbpn
 
@@ -69268,7 +133650,7 @@
 
    * agent/mibgroup/ucd-snmp/memory.c:
 
-   - (memory.c): Patch from Ragnar Kjørstad:
+   - (memory.c): Patch from Ragnar Kj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€Œ¿rstad:
      - fixed linux problem: wrong params getting returned.
    
 2000-05-25 05:38  mslifcak
@@ -71048,7 +135430,7 @@
 
    - (configure* ucd-snmp/vmstat_solaris2.c):
      - Provide missing 'getpagesize' routine for Solaris 2.4
-       (Thanks to Ragnar Kjørstad)
+       (Thanks to Ragnar Kj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€Œ¿rstad)
    
 2000-02-16 20:17  mslifcak
 
@@ -78376,7 +142758,7 @@
      loadave.c, memory_solaris2.c, pass.c, pass_persist.c, proc.c,
      versioninfo.c, alarm.c, event.c, Makefile.in, parse.c, snmp.c,
      snmp_debug.c, snmp_logging.c, snmp_logging.h): Patch from Ragnar
-     Kjørstad:
+     Kj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€Œ¿rstad:
      - do file, stderr, and syslog support.
    
 1999-07-15 08:45  hardaker
@@ -78519,7 +142901,7 @@
 
    * agent/snmpd.c:
 
-   - (snmpd.c): Patch from Ragnar Kjørstad:
+   - (snmpd.c): Patch from Ragnar Kj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€Œ¿rstad:
      - Add options for switching to a given uid and gid.
    
 1999-07-08 15:16  hardaker
@@ -95288,7 +159670,7 @@
 
    * snmplib/mib.c:
 
-   Fix a C precedence botch-up, thanks to Fabrício Las Casas <Fabricio@atan.com.br>
+   Fix a C precedence botch-up, thanks to Fabr爭õ€‘‹ï½¤õ€‘‹ï½¤æ­»â€²cio Las Casas <Fabricio@atan.com.br>
    
 2003-02-26 14:14  nba
 
@@ -112071,7 +176453,7 @@
 
    * agent/mibgroup/host/: hr_swrun.c (V4-2-patches.5), hr_swrun.c:
 
-   Fix Linux file descriptor leak (reported by Oliver Fänger)
+   Fix Linux file descriptor leak (reported by Oliver F爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµç©«ger)
    
 2001-03-14 05:22  jbpn
 
@@ -116316,7 +180698,7 @@
 
    * agent/mibgroup/host/hr_swrun.c:
 
-   Fix Linux file descriptor leak (reported by Oliver Fänger)
+   Fix Linux file descriptor leak (reported by Oliver F爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµç©«ger)
    
 2001-03-13 13:20  hardaker
 
@@ -119562,7 +183944,7 @@
 	
 2000-05-25 10:07  hardaker
 
-	- (memory.c): Patch from Ragnar Kjørstad:
+	- (memory.c): Patch from Ragnar Kj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€Œ¿rstad:
 	  - fixed linux problem: wrong params getting returned.
 	
 2000-05-25 05:38  mslifcak
@@ -120751,7 +185133,7 @@
 
 	- (configure* ucd-snmp/vmstat_solaris2.c):
 	  - Provide missing 'getpagesize' routine for Solaris 2.4
-	    (Thanks to Ragnar Kjørstad)
+	    (Thanks to Ragnar Kj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€Œ¿rstad)
 	
 2000-02-16 20:17  mslifcak
 
@@ -126085,7 +190467,7 @@
     - (snmpdelta.c, int64.c, int64.h): minimal c64 support for snmpdelta. Untested.
 
 hardaker  8 Jul 99 16:02:58
-    - (snmpd.c): Patch from Ragnar Kjørstad:
+    - (snmpd.c): Patch from Ragnar Kj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€Œ¿rstad:
       - Add options for switching to a given uid and gid.
 
 daves  9 Jul 99 01:49:49
@@ -126132,7 +190514,7 @@
       loadave.c, memory_solaris2.c, pass.c, pass_persist.c, proc.c,
       versioninfo.c, alarm.c, event.c, Makefile.in, parse.c, snmp.c,
       snmp_debug.c, snmp_logging.c, snmp_logging.h): Patch from Ragnar
-      Kjørstad:
+      Kj爭õ€‘‹ï½¤õ€±çˆ­õ€‘‹ï½¤õ€Œµçˆ­õ€‘‹ï½¤õ€Œ¿rstad:
       - do file, stderr, and syslog support.
 
 hardaker 20 Jul 99 17:06:53
diff --git a/FAQ b/FAQ
index f4f7755..4fccea2 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.4.4 SVN branch
+			Net-SNMP Version: 5.7.3.rc1
 	    Net-SNMP/UCD-SNMP Project Leader: Wes Hardaker
 	     Email: net-snmp-coders@lists.sourceforge.net
 
@@ -1314,7 +1314,7 @@
   covered in the AGENT and CODING sections.
 
   You should also read the snmptrap tutorial at
-	http://www.net-snmp.org/tutorial-5/commands/snmptrap.html
+        http://www.net-snmp.org/wiki/index.php/TUT:snmptrap
   which will help you understand everything you need to know about traps.
 
 
@@ -1351,7 +1351,7 @@
         forward default                  10.0.0.2
 
   There's a tutorial with more details on the web site at
-	http://www.net-snmp.org/tutorial-5/commands/snmptrap.html
+        http://www.net-snmp.org/wiki/index.php/TUT:snmptrap
 
 
 
@@ -2158,6 +2158,15 @@
   output is returned in a fixed format, and it is up to the receiving
   application to interpret this appropriately.
 
+  Note that the "relocatable" form of the 'exec' directive ('exec OID ....')
+  produces MIB output that is not strictly valid. For this reason, support
+  for this has been deprecated in favour of 'extend OID ...', which produces
+  well-formed MIB results (as well as providing fuller functionality).
+  The most recent releases of the agent don't include support for "relocatable
+  exec" by default. This needs to be explicitly included when the agent is
+  first compiled, by including the module 'ucd-snmp/extensible' instead of
+  'agent/extend'.
+
 
   'pass' is a more general mechanism for implementing arbitrary MIB
   objects.  The specified command will be invoked for any request within
@@ -2594,7 +2603,7 @@
 
 
 Why does the agent complain about 'no access control information'?
-------------------------------------------------------------------
+-----------------------------------------------------------------
 
   Although an SNMP agent may support a wide range of management
   information, it is not necessarily appropriate to report the whole
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..cd8c1fa
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1 @@
+ACLOCAL_AMFLAGS = -I m4
diff --git a/Makefile.in b/Makefile.in
index 0ea41aa..cfcdf73 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,3 +1,4 @@
+
 #
 # Makefile.in (at the root of net-snmp)
 #
@@ -6,6 +7,7 @@
 VPATH		= @srcdir@
 
 SUBDIRS		= snmplib @MAINSUBS@
+FTSUBDIRS	= @FTMAINSUBS@ snmplib
 TESTDIRS	= testing
 
 CPP		= @CPP@ 					        \
@@ -13,22 +15,23 @@
 		-DDONT_INC_STRUCTS -DBINDIR=$(bindir) 		        \
 		$(EXTRACPPFLAGS)
 
-INSTALLHEADERS=version.h
+INSTALLHEADERS=version.h net-snmp-features.h
 INCLUDESUBDIR=system
 INCLUDESUBDIRHEADERS= aix.h bsd.h bsdi3.h bsdi4.h bsdi.h cygwin.h \
-	darwin.h darwin7.h darwin8.h darwin9.h 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 \
-        generic.h hpux.h \
-	irix.h linux.h mingw32.h mips.h netbsd.h osf5.h \
+        generic.h \
+	hpux.h irix.h linux.h mingw32.h mips.h netbsd.h osf5.h \
 	openbsd.h openbsd5.h openbsd4.h \
 	solaris2.3.h solaris2.4.h solaris2.5.h solaris2.6.h \
-	solaris.h sunos.h svr5.h sysv.h ultrix4.h dragonfly.h
+	solaris.h sunos.h svr5.h sysv.h ultrix4.h
 INCLUDESUBDIR2=machine
 INCLUDESUBDIRHEADERS2=generic.h
 INSTALLBUILTHEADERS=include/net-snmp/net-snmp-config.h
-INSTALLBINSCRIPTS=net-snmp-config
+INSTALLBUILTINCLUDEHEADERS=@FEATUREHEADERS@
+INSTALLBINSCRIPTS=net-snmp-config net-snmp-create-v3-user
 INSTALLUCDHEADERS=ucd-snmp-config.h version.h mib_module_config.h
 
 #
@@ -44,13 +47,20 @@
 # perl specific
 #
 # yes, order matters here.  default_store must occur before anything else
-PERLMODULES=default_store SNMP ASN OID agent
+PERLMODULES=default_store SNMP ASN OID agent TrapReceiver
+PERLMODULEFTS=perl/default_store/netsnmp-feature-definitions.ft \
+	perl/SNMP/netsnmp-feature-definitions.ft \
+	perl/ASN/netsnmp-feature-definitions.ft \
+	perl/OID/netsnmp-feature-definitions.ft \
+	perl/agent/netsnmp-feature-definitions.ft \
+	perl/TrapReceiver/netsnmp-feature-definitions.ft
 PERLARGS=@PERLARGS@
 
 #
 # python specific
 #
 PYTHONARGS=@PYTHONARGS@
+PYTHONMODULEFTS=python/netsnmp/netsnmp-feature-definitions.ft
 
 #
 # libtool
@@ -58,9 +68,14 @@
 LIBTOOL_DEPS = @LIBTOOL_DEPS@
 
 #
+# feature checks for optional components
+#
+FTOTHERTARGS=@PERLFEATURES@ @PYTHONFEATURES@
+
+#
 # targets
 #
-all:    sedscript EXAMPLE.conf standardall net-snmp-config-x @PERLTARGS@ @PYTHONTARGS@
+all:    sedscript EXAMPLE.conf  @FEATURETARGS@ standardall net-snmp-config-x net-snmp-create-v3-user @PERLTARGS@ @PYTHONTARGS@
 
 start-flag:
 	@touch build-in-progress-flag
@@ -72,23 +87,23 @@
 	$(SHELL) ./config.status --recheck
 
 
-snmplib:
+snmplib: @FEATURETARGS@
 	@(cd snmplib; $(MAKE) )
 
-agent:
+agent: @FEATURETARGS@
 	@(cd snmplib; $(MAKE) )
 	@(cd agent; $(MAKE) )
 
-apps:
+apps: @FEATURETARGS@
 	@(cd snmplib; $(MAKE) )
 	@(cd agent; $(MAKE) libs)
 	@(cd apps; $(MAKE) )
 
-snmpget snmpbulkget snmpwalk snmpbulkwalk snmptranslate snmpstatus snmpdelta snmptable snmptest snmpset snmpusm snmpvacm snmpgetnext encode_keychange snmpdf snmptrap:
+snmpget snmpbulkget snmpwalk snmpbulkwalk snmptranslate snmpstatus snmpdelta snmptable snmptest snmpset snmpusm snmpvacm snmpgetnext encode_keychange snmpdf snmptrap snmptls: @FEATURETARGS@
 	@(cd snmplib; $(MAKE) )
 	@(cd apps; $(MAKE) $@ )
 
-snmptrapd:
+agentxtrap snmptrapd: @FEATURETARGS@
 	@(cd snmplib; $(MAKE) )
 	@(cd agent; $(MAKE) libs)
 	@(cd apps; $(MAKE) $@ )
@@ -98,6 +113,7 @@
 #
 sedscript: sedscript.in include/net-snmp/net-snmp-config.h $(srcdir)/agent/mibgroup/mibdefs.h
 	$(CPP) $(srcdir)/sedscript.in | egrep '^s[/#]' | sed 's/REMOVEME//g;s# */#/#g;s/ *#/#/g;s#/ *#/#g;s/# g/#g/;' > sedscript
+	echo 's/VERSIONINFO/$(VERSION)/g' >> sedscript
 	echo 's#DATADIR#$(datadir)#g' >> sedscript
 	echo 's#LIBDIR#$(libdir)#g' >> sedscript
 	echo 's#BINDIR#$(bindir)#g' >> sedscript
@@ -107,24 +123,21 @@
 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) 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
+	srcdir=$(srcdir) VERSION=$(VERSION) doxygen $(srcdir)/doxygen.conf
 
 net-snmp-config-x: net-snmp-config
 	chmod a+x net-snmp-config
 	touch net-snmp-config-x
 
+net-snmp-create-v3-user-x: net-snmp-create-v3-user
+	chmod a+x net-snmp-create-v3-user
+	touch net-snmp-create-v3-user-x
+
 #
 # extra install rules
 #
@@ -137,11 +150,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	\
@@ -154,7 +164,7 @@
 distall: ${srcdir}/configure ${srcdir}/include/net-snmp/net-snmp-config.h 
 
 OTHERCLEANTARGETS=EXAMPLE.conf sedscript
-OTHERCLEANTODOS=perlclean @PYTHONCLEANTARGS@
+OTHERCLEANTODOS=perlclean @PYTHONCLEANTARGS@ cleanfeatures perlcleanfeatures pythoncleanfeatures
 
 #
 # perl specific build rules
@@ -195,13 +205,21 @@
 	@if test -f perl/Makefile; then \
 	   ( cd perl ; $(MAKE) clean ) ; \
 	fi
+
 perlrealclean:
 	@if test -f perl/Makefile; then \
 	   ( cd perl ; $(MAKE) realclean ) ; \
 	fi
 
+.h.ft:
+	$(FEATURECHECK) --feature-global $(top_builddir)/include/net-snmp/feature-details.h `dirname $<` $< $@ $(CC) -I $(top_builddir)/include -I $(top_srcdir)/include -E $(CPPFLAGS) $(CFLAGS) -c
 
-#
+perlfeatures: $(PERLMODULEFTS)
+
+perlcleanfeatures:
+	$(RM) $(PERLMODULEFTS)
+
+
 # python specific build rules
 #
 PYMAKE=$(PYTHON) setup.py $(PYTHONARGS)
@@ -229,6 +247,10 @@
 pythonclean:
 	@(dir=`pwd`; cd python; $(PYMAKE) clean --basedir=$$dir)
 
+pythonfeatures: $(PYTHONMODULEFTS)
+
+pythoncleanfeatures:
+	$(RM) $(PYTHONMODULEFTS)
 
 #
 # make distclean completely removes all traces of building including
@@ -247,12 +269,15 @@
 configclean: makefileclean
 	rm -f config.cache config.status config.log \
 		libtool include/net-snmp/net-snmp-config.h \
-		net-snmp-config net-snmp-config-x configure-summary
+		net-snmp-config net-snmp-config-x configure-summary \
+		net-snmp-create-v3-user net-snmp-create-v3-user-x
 	rm -f mibs/.index
 	rm -f include/net-snmp/agent/mib_module_config.h		\
 		include/net-snmp/agent/agent_module_config.h		\
 		include/net-snmp/library/snmpv3-security-includes.h \
-		snmplib/snmpsm_init.h                   \
+		include/net-snmp/feature-details.h                  \
+		snmplib/snmpsm_init.h snmplib/snmpsm_shutdown.h     \
+                snmplib/transports/snmp_transport_inits.h           \
 		agent/mibgroup/agent_module_includes.h 	\
 		agent/mibgroup/agent_module_inits.h 	\
 		agent/mibgroup/agent_module_shutdown.h 	\
@@ -260,7 +285,8 @@
 		agent/mibgroup/mib_module_includes.h 	\
 		agent/mibgroup/mib_module_inits.h 	\
 		agent/mibgroup/mib_module_shutdown.h 	\
-		agent/mibgroup/mib_module_dot_conf.h
+		agent/mibgroup/mib_module_dot_conf.h    \
+		local/snmpconf
 	rm -rf mk
 	rm -f *.core
 
@@ -281,8 +307,28 @@
 	    echo "WARNING: not running config.status"; \
 	fi
 
+configure_ac = configure.ac \
+	configure.d/config_modules_agent \
+	configure.d/config_modules_lib \
+	configure.d/config_os_functions \
+	configure.d/config_os_headers \
+	configure.d/config_os_libs1 \
+	configure.d/config_os_libs2 \
+	configure.d/config_os_misc1 \
+	configure.d/config_os_misc2 \
+	configure.d/config_os_misc3 \
+	configure.d/config_os_misc4 \
+	configure.d/config_os_progs \
+	configure.d/config_os_struct_members \
+	configure.d/config_project_ipv6_types \
+	configure.d/config_project_manual \
+	configure.d/config_project_paths \
+	configure.d/config_project_perl_python \
+	configure.d/config_project_types \
+	configure.d/config_project_with_enable
+
 $(srcdir)/include/net-snmp/net-snmp-config.h.in: stamp-h.in
-$(srcdir)/stamp-h.in: configure.in acconfig.h
+$(srcdir)/stamp-h.in: $(configure_ac) acconfig.h
 	@if test "x$(NOAUTODEPS)" = "x" -a "x$(AUTOHEADER)" != "x:"; then \
 	    cd ${srcdir} && LC_COLLATE=C $(AUTOHEADER); \
 	    echo timestamp > ${srcdir}/stamp-h.in; \
@@ -301,7 +347,7 @@
 	    echo "WARNING: not running config.status"; \
 	fi
 
-$(srcdir)/configure: configure.in aclocal.m4
+$(srcdir)/configure: $(configure_ac) aclocal.m4
 	@if test "x$(NOAUTODEPS)" = "x" -a "x$(AUTOCONF)" != "x:"; then \
 	    cd ${srcdir} && $(AUTOCONF); \
 	    echo "Please run configure now."; \
@@ -310,6 +356,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"; \
@@ -347,25 +417,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
 
@@ -378,3 +458,4 @@
 	snmpget snmpbulkget snmpwalk snmpbulkwalk snmptranslate snmpstatus \
 	snmpdelta snmptable snmptest snmpset snmpusm snmpvacm snmpgetnext \
 	encode_keychange snmpdf snmptrap snmptrapd
+.PHONY: perlfeatures pythonfeatures
diff --git a/Makefile.rules b/Makefile.rules
index 65687ef..9e9e900 100644
--- a/Makefile.rules
+++ b/Makefile.rules
@@ -14,6 +14,62 @@
 
 objs: ${OBJS} ${LOBJS}
 
+# features require that subdirs be made *first* to get dependency
+# collection processed in the right order
+.PHONY: features ftobjs ftsubdirs
+features: $(FTOTHERTARGS) ftsubdirs ftobjs $(FEATUREFILE)
+ftobjs: $(FTOBJS)
+$(FEATUREFILE): $(FTOBJS) $(top_builddir)/include/net-snmp/feature-details.h
+	cat $(FTOBJS) > $(FEATUREFILE).in
+	$(FEATUREPROCESS) $(FEATUREFILE) $(top_builddir)/include/net-snmp/feature-details.h @FEATURE_REMOVE_FLAGS@ @FEATURE_ADD_FLAGS@
+ftsubdirs:
+	@if test "$(FTSUBDIRS)" != ""; then \
+	    SUBDIRS="$(FTSUBDIRS)" ;        \
+        else 			 	    \
+            SUBDIRS="$(SUBDIRS)" ;          \
+        fi ;                                \
+	if test "$$SUBDIRS" != ""; then \
+		it="$$SUBDIRS" ; \
+		for i in $$it ; do \
+			echo "making features in `pwd`/$$i"; \
+			( cd $$i ; $(MAKE) features ) ; \
+			if test $$? != 0 ; then \
+				exit 1 ; \
+			fi  \
+		done \
+	fi
+
+.PHONY: cleanfeatures cleanfeaturessubdirs
+cleanfeatures: cleanfeaturessubdirs
+	       rm -f $(FTOBJS)
+	       rm -f $(FEATUREFILE)
+	       rm -f $(top_builddir)/include/net-snmp/feature-details.h
+
+cleanfeaturessubdirs:
+	@if test "$(FTSUBDIRS)" != ""; then \
+	    SUBDIRS="$(FTSUBDIRS)" ;        \
+        else 			 	    \
+            SUBDIRS="$(SUBDIRS)" ;          \
+        fi ;                                \
+	if test "$$SUBDIRS" != ""; then \
+		it="$$SUBDIRS" ; \
+		for i in $$it ; do \
+			echo "making cleanfeatures in `pwd`/$$i"; \
+			( cd $$i ; $(MAKE) cleanfeatures ) ; \
+			if test $$? != 0 ; then \
+				exit 1 ; \
+			fi  \
+		done \
+	fi
+
+# feature-check definitions
+.SUFFIXES: .ft
+.c.ft:
+	@test -f $(top_builddir)/include/net-snmp/feature-details.h || \
+	    echo "/* Generated by make. Do not modify directly */" \
+		> $(top_builddir)/include/net-snmp/feature-details.h
+	$(FEATURECHECK) --feature-global $(top_builddir)/include/net-snmp/feature-details.h $(mysubdir) $< $@ $(CC) -E $(CPPFLAGS) $(CFLAGS) -c
+
 subdirs:
 	@if test "$(SUBDIRS)" != ""; then \
 		it="$(SUBDIRS)" ; \
@@ -42,6 +98,7 @@
 # headers
 #
 # set INSTALLHEADERS to a list of things to install in each makefile.
+# set INSTALLBUILTINCLUDEHEADERS a list built and placed into include/net-snmp/
 # set INSTALLBUILTHEADERS to a list of things to install from builddir
 # set INSTALLSUBDIRHEADERS and INSTALLSUBDIR to subdirectory headers
 # set INSTALLSUBDIRHEADERS2 and INSTALLSUBDIR2 to more subdirectory headers
@@ -50,6 +107,16 @@
 installheaders: installlocalheaders @installucdheaders@ installsubdirheaders
 
 installlocalheaders:
+	@if test "$(INSTALLBUILTINCLUDEHEADERS)" != "" ; then \
+		echo creating directory $(INSTALL_PREFIX)$(includedir) ; \
+		it="$(INSTALLBUILTINCLUDEHEADERS)" ; \
+		$(SHELL) $(top_srcdir)/mkinstalldirs $(INSTALL_PREFIX)$(includedir)/library ; \
+		$(SHELL) $(top_srcdir)/mkinstalldirs $(INSTALL_PREFIX)$(includedir)/agent ; \
+		for i in $$it ; do \
+			$(INSTALL_DATA) include/net-snmp/$$i $(INSTALL_PREFIX)$(includedir)/$$i ; \
+			echo "installing $$i in $(INSTALL_PREFIX)$(includedir)/$$i" ; \
+		done \
+	fi
 	@if test "$(INSTALLHEADERS)" != "" ; then \
 		echo creating directory $(INSTALL_PREFIX)$(includedir) ; \
 		it="$(INSTALLHEADERS)" ; \
@@ -327,7 +394,7 @@
 # cleaning targets
 #
 clean: cleansubdirs $(OTHERCLEANTODOS)
-	$(LIBTOOLCLEAN) ${OBJS} ${LOBJS} core $(STANDARDCLEANTARGETS) $(OTHERCLEANTARGETS)
+	$(LIBTOOLCLEAN) ${OBJS} ${LOBJS}  ${FTOBJS} core $(STANDARDCLEANTARGETS) $(OTHERCLEANTARGETS)
 
 cleansubdirs:
 	@if test "$(SUBDIRS)" != ""; then \
@@ -404,5 +471,5 @@
 .PHONY: clean cleansubdirs lint \
 	install installprogs installheaders installlibs \
 	installbin installsbin installsubdirs \
-	all subdirs standardall objs \
+	all subdirs standardall objs features \
 	depend nosysdepend distdepend dependdirs nosysdependdirs distdependdirs
diff --git a/Makefile.top b/Makefile.top
index c4c44ee..503f61e 100644
--- a/Makefile.top
+++ b/Makefile.top
@@ -1,7 +1,7 @@
 #
 # Minimum environment and virtual path setup
 #
-SHELL		= /bin/sh
+SHELL		= @SHELL@
 srcdir		= @srcdir@
 top_srcdir	= @top_srcdir@
 VERSION		= @VERSION@
@@ -15,6 +15,7 @@
 bindir		= @bindir@
 sbindir		= @sbindir@
 libdir		= @libdir@
+datarootdir	= @datarootdir@
 datadir		= @datadir@
 includedir	= @includedir@/net-snmp
 ucdincludedir	= @includedir@/ucd-snmp
@@ -35,6 +36,8 @@
 INSTALL		= $(LIBTOOL) --mode=install @INSTALL@
 UNINSTALL	= $(LIBTOOL) --mode=uninstall rm -f
 LIBTOOLCLEAN	= $(LIBTOOL) --mode=clean rm -f
+FEATURECHECK	= $(top_srcdir)/local/minimalist/feature-check
+FEATUREPROCESS	= $(top_srcdir)/local/minimalist/feature-remove
 INSTALL_DATA    = @INSTALL_DATA@
 SED		= @SED@
 LN_S		= @LN_S@
@@ -43,6 +46,7 @@
 PERL            = @PERLPROG@
 PYTHON          = @PYTHONPROG@
 FIND            = @FIND@
+EGREP           = @EGREP@
 
 #
 # Compiler arguments
@@ -61,7 +65,7 @@
 # The (slightly clarified) rules:
 #
 # - If any interfaces/structures have been removed or changed since the
-#   last update, increment current, and set age and revision to 0. Stop.
+#   last update, increment current (+5), and set age and revision to 0. Stop.
 #
 # - If any interfaces have been added since the last public release, then
 #   increment current and age, and set revision to 0. Stop.
@@ -75,15 +79,15 @@
 # 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  = 16
-LIBAGE      = 1
+#
+LIBCURRENT  = 30
+LIBAGE      = 0
 LIBREVISION = 3
 
 LIB_LD_CMD      = $(LIBTOOL) --mode=link $(LINKCC) $(CFLAGS) -rpath $(libdir) -version-info $(LIBCURRENT):$(LIBREVISION):$(LIBAGE) -o
 LIB_EXTENSION   = la
 LIB_VERSION     =
-LIB_LDCONFIG_CMD = $(LIBTOOL) --mode=finish $(libdir)
+LIB_LDCONFIG_CMD = $(LIBTOOL) --mode=finish $(INSTALL_PREFIX)$(libdir)
 LINK		= $(LIBTOOL) --mode=link $(LINKCC)
 # RANLIB 	= @RANLIB@
 RANLIB		= :
@@ -113,5 +117,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 38b62cf..9396aee 100644
--- a/NEWS
+++ b/NEWS
@@ -3,106 +3,334 @@
 that have been fixed/applied, and the ChangeLog file for a comprehensive
 listing of all changes made to the code.
 
-*5.4.4*
+*5.7.3*
+    Many many bug fixes and minor improvements
 
-    snmplib:
-      - [BUG 3171878]: Using SNMPv3 context does not work
-
-    snmpd:
-      - Various 64-bit fixes
-
-    FreeBSD,NetBSD,OpenBSD:
-        Incorporate fixes from these O/S patch archives
-
-
-*5.4.3*
-
-    snmpd:
-      - Change default AgentX target from 0.0.0.0:705 to localhost:705
-      - Fix CVE-2008-4309 (GETBULK issue reported by Oscar Mira-Sanchez)
-      - 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.
-      - Latch large-disk statistics at 2Tb (rather than wrapping)
-
-    Linux:
-      - Fix build on modern distributions (using rpm-4.6)
-
-    Windows:
-      - Fix various builds (recent MSVC, MinGW, IPv6, winExtDLL)
-
-
-*5.4.2*
-
-    snmplib:
-      - [PATCH 1921861]: Avoid endless loop after truncating 64bit int
-      - Better handling of CONTAINER_INSERT failures with multiple indices
-
-    snmpd:
-      - [PATCH 2023633]: add SCTP-MIB implementation (Linux only)
-      - suppress annoying "registration != duplicate" warning for root oids
-
-    build:
-      - [BUG 2023803]: Compilation problems on HP-UX 11.31
-      - Update to libtool 1.5.26
-
-    AIX:
-      - Add support for AIX 6.x.
-
-
-*5.4.1*
-
-    snmplib:
-      - [BUG 1619827]: link libraries against needed external libraries
-      - [PATCH 1616912]: fix memory leak in UDP transport code
-      - [PATCH 1592706]: fix memory leak when cloning varbinds
-      - Change snmp_sess_add_ex to consistently close and delete the
-        transport argument on failure, earlier the liveness of the
-        transport argument was undecided.
-
-    snmpd:
-      - [BUG 1558823]: fix ipAddressTable memory leak
-      - [BUG 1596638]: fix memory leak in ipCidrRouteTable, inetCidrRouteTable
-      - [BUG 1611524]: fix tcp connection table file descriptor leak
-      - handle row deletion issues in dataset tables
-      - [BUG 1712988]: default and configurable maximum number of
-        varbinds returnable to a GETBULK request.
-      - [PATCH 1666737]: include ipv6 counts in
-	udpInDatagrams, udpNoPorts, udpInErrors, udpOutDatagrams
-      - [PATCH 1700157]: fixes ordering of exec tokens in the resulting mib tree
-      - [PATCH 1719253]: fix skipNFSInHostResources so it does not break on the
-	second walk of the table.
+    snmpd, snmptrapd and apps:
+      - Patch 2525: from Ryan Steinmetz: Fix argument length parsing of the
+	host resources mib
+      - Make ENV_SEPARATOR_CHAR configurable
+      - SECURITY: a denial of service attack vector was discovered on
+        the linux implementation of the ICMP-MIB.  This release fixes
+        this bug and all users are encouraged to update their SNMP
+        agent if they make use of the ICMP-MIB table objects.
 
     perl:
-      - link Perl modules against the exact set of libraries needed
-      - [BUG 1619827]: properly link against libperl when configured with
-	--enable-as-needed
-      - [PATCH 1725049]: fix bulkwalk in cases of non-repeater
+      - BUG: 2402: Add support for SNMPv3 traps
 
-    build:
-      - update to libtool 1.5.24 (from 1.5.22)
+    Windows:
+      - Port batch build infrastructure to Visual Studio 2010 and later
+	From Visual Studio 2010 on it is no longer possible to specify
+	include or library directories globally - these have to be
+	specified per project. Hence two additional menu entries in
+	build.bat that allow to specify these directories.
+
+*5.7.2*
+    snmp:
+      - BUG: 3526549: CVE-2012-2141 Array index error leading to crash
+
+    snmpd:
+      - BUG: 3532090: Fix high ifIndex values crashing hrDeviceDescr
+
+    building:
+      - PATCH: 2091156: correctly declare dependencies in Makefile. 'make
+        -j <N>' should work now. Backport this to V5-4 as it is needed for
+        correct operation in the single threaded case of make miblib as
+        well.
+
+    Many other miscellaneous minor bug fixes
+
+*5.7.1*
+
+  libnetsnmp:
+      - Fixed the mib-parsing-bug introduced shortly before 5.7
+
+  agent:
+      - fixed rounding errors for disk percentage calculations
+
+  openbsd:
+      - better support for recent openbsd releases
+
+  features:
+      - bug fixes with minimalist support after additional user feedback
+
+  Many other miscellaneous minor bug fixes
+
+*5.7*
+
+  snmpd:
+      - Delivery of data via regularily scheduled notifications.
+        (see "Data Delivery via Notfications" in snmpd.conf)
+      - Many time-based config options can take (m)ins, (h)ours, ... arguments
+        (see the snmpd.conf manual page)
+      - The PING and TRACEROUTE MIBs now compile and work-ish on linux
+        http://www.net-snmp.org/wiki/index.php/DISMAN
+      - Mib handlers can now implement a data_clone function for
+        cloning the myvoid structure variable to avoid dangling pointers
+      - Fixed persistent storage of VACM MIB configuration
+      - Multi-homed agents send UDP responses from the proper IP address
+      - The hrStorageTable implementation now supports large filesystems better
+      - optimizations for large route tables
+      - Added a deliveryByNotify config token for regular data delivery
+        (see the snmpd.conf manual page and the NET-SNMP-PERIODIC-NOTIFY-MIB)
+      - [PATCH 3141462]: fix agentx subagent issues with multiple-object requests
+      - [PATCH 3057093]: linux uses libpci for creating useful ifDescr strings
+      - [PATCH 3131397]: huge speedups of the TCP/UDP Tables
+
+  libnetsnmp:
+      - Removed the older CMU compatibility support
+      - The SSH transport is now configurable
+
+  TLS/DTLS support:
+      - The SNMP over DTLS transport now properly supports IPv6
+      - Introduced new configuration tokens: localCert/peerCert
+        (deprecating serverCert, clientCert, defX509ServerPub, defX509ClientPub)
+      - Various fixes for the TLS/DTLS transports
+
+  apps:
+      - Added a per-variable timed output support to snmpwalk using -CT
+      - snmpinform now correctly uses the local engineID for informs
+      - A number of mib2c bug fixes
+      - New snmp.conf tokens for timeouts and retries
+
+  building:
+      - New flags to reduce the amount of compiled code to bare minimums.
+        This is provided by a new generic feature marking/selection mechanism.
+        http://www.net-snmp.org/wiki/index.php/Feature_Marking_and_Selection
+      - It's now possible to build without SNMPv3/USM
+        (e.g., if you only want TLS/DTLS with SNMPv3/TSM)
+      - It's possible to build the suite with no SET support
+        configure using --enable-read-only
+      - It's possible to build the agent as a notify-only agent
+        configure using --enable-notify-only
+      - Added a script to test memory usage with various config options
+        (see the local/minimalist/sizetests script)
+      - Net-SNMP can now be built to perform local DNSSEC validation
+        (install DNSSEC-Tools' libval and use --with-local-dnssec-validation)
+
+  testing:
+      - a number of new API unit-tests have been added to the suite
+        (to run the tests: cd testing && ./RUNFULLTESTS -g unit-tests)
+      - The unit tests can be more easily run under valgrind
+        (See http://bit.ly/jsgRnv for details)
+
+  openbsd:
+      - Support for updating the routing table via SNMP
+
+  win32:
+      - The testing suite works better under win32 environments
+      - Many building fixes for the win32 environment(s)
+
+  solaris:
+      - Net-SNMP now supports the SCTP-MIB
+
+  DragonFlyBSD, FreeBSD8:
+      - Net-SNMP should now work on DragonFlyBSD and FreeBSD8
+
+  And of course:
+      - Many other bug fixes.  See the CHANGES and ChangeLog for details.
+
+*5.6*
+
+    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:
-      - [PATCH 1716114]: Let python build in the Net-SNMP source tree
+      - walking broken agents won't cause an infinite loop
 
-    MacOSX:
-      - [PATCH 1600522]: CPU Hardware Abstraction Layer (HAL)
-        implementation for mach/darwin
-      - IF-MIB rewrite now enabled by default
+    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
 
-    Win32:
-      - fix AES support
-      - [PATCH 1706344]: fix compilation with cygwin
+    qnx6:
+      - [PATCH 2836895]: support for QNX6
 
-    IRIX:
-      - [PATCH 1709748]: Optimized IRIX cpu stats
+*5.5*
+
+    All applications:
+      - Added the ability to "alias" transports to a more simple name
+         (see the "alias" keyword in the snmp.conf manual page)
+      - The -t (timeout) switch will accept floating point numbers (eg: .1)
+
+    snmpd:
+      - [BUG 1712988]: default/configurable max # varbinds returned by GETBULK
+      - [PATCH 1585146]: Extend range of available error codes
+      - [PATCH 1654424]: Handle row deletion issues in dataset tables
+      - [PATCH 1666737]: Include IPv6 traffic in various UDP counters
+      - [PATCH 1700157]: Fix ordering of exec tokens in MIB output
+      - [PATCH 1719253]: fix skipNFSInHostResources for multiple walks
+      - [PATCH 1723611]: New implementation of the RMON alarmTable
+      - [PATCH 1737439]: automatic link up/down traps on a walk
+      - [PATCH 1806501]: Add API for sending traps with a snmpv3 context
+      - [PATCH 1882621]: Add LVM support to the partition table
+      - [PATCH 1893468]: fixed registration of OIDs with ranges
+      - [PATCH 1901764]: Support date-based logwatch files
+      - [PATCH 1909813]: fix table_iterator handling of SORTED hint
+      - [PATCH 1916840]: new config option to set SNMPv1 trap agent address
+      - [PATCH 2103492]: implement RMON-MIB::etherStatsJabbers
+      - [PATCH 2449210]: add 64-bit usage statistics to UCD-SNMP-MIB::dskTable
+      - Add support for a user provided length variable
+	   and C string values to the watcher helper.
+      - Automatically reregister sysORTable entries from AgentX subagents.
+      - Fix various memory leaks
+      - Implement ipAddressSpinLock
+      - Implement ipNetToPhysicalLastUpdated
+      - Suppress annoying "registration != duplicate" warning for root oids
+
+    snmptrapd:
+      - [PATCH 1908288]: Run perl END block on termination
+      - Add trap handler for logging traps to a mysql database
+      - Withdraw deprecated options.
+
+    snmpnetstat:
+      - [PATCH 2564538]: Support GETBULK in v2c+ snmp versions
+
+    snmpusm:
+      - [PATCH 1591355]: Allow cloning to arbitrary engineIDs
+
+    snmplib:
+      - [BUG 1619827]: Improve handling of link dependencies
+      - [PATCH  700681]: limited support for UDPv4 broadcast addresses
+      - [PATCH 1882069]: Add token for specifying an exact SNMPv3 engineID
+      - Fix assorted memory leaks
+      - Implemented RFC5343 contextEngineID probing.
+      - Support for the TSM security model for use with tunneling
+
+    misc:
+      - Add config reread support to "net-snmp-config --compile-subagent" code
+      - Preliminary (alpha) support for SNMP over SSH and DTLS/UDP.
+      - Preliminary (alpha) support for the TSM security model
+      - Separate user management into new net-snmp-create-v3-user script
+
+    building:
+      - Improved cross-compilation support
+      - Improved library layering & dependency handling when linking apps
+      - Improved RPM spec files, for consistency with vendor-provided packages.
+      - Mechanism for selecting build environment based on version
+      - New test scripts to test Net-SNMP transport functionality
+      - Restructure configure template
+      - Update to autoconf 2.63 & libtool 2.2.6
+
+    perl:
+      - [BUG 1619827]: improve handling of link dependencies
+      - [PATCH 1956193]: beta threadable perl module code for SNMPv1/2c usage.
+
+    python:
+      - [PATCH 1716114]: Let python build in source tree (Debian patch #38)
+
+    Linux:
+      - [PATCH 1704105]: Add IPv6 support to the inetNetToMediaTable
+      - [PATCH 1705594]: Various fixes to ipAddressPrefixTable reporting
+      - [PATCH 1708243]: Implement ipDefaultRouteTable
+      - [PATCH 1715405]: Implement ipv6ScopeZoneIndexTable
+      - [PATCH 1724602]: MfD-based ipDefaultRouterTable implementation
+      - [PATCH 1828602]: Support ipDefaultTTL and ipForwarding SETs
+      - [PATCH 1927751]: Implement icmpMsgStatsTable
+      - [PATCH 2023633]: Implement SCTP-MIB
+      - [PATCH 2053273]: Implement EtherLike MIB
 
     AIX:
-      - Fix default shared library building instead of forcing static use
+      - Add support for AIX 6.x
+      - Fix default shared library building instead of forcing static
 
     FreeBSD:
       - [BUG 1633483]: Support CPU HAL on FreeBSD4.x
+      - [PATCH 1623874]: add GNU/kFreeBSD support
+
+    IRIX:
+      - [PATCH 1709748]: Optimized IRIX cpu stats
+      - [PATCH 1675869]: CPU statistics for IRIX based on PCP
+
+    MacOSX:
+      - [PATCH 1600522]: CPU HAL implementation for mach/darwin
+
+    Solaris:
+      - [PATCH 1719730]: support for ipSystemStatsTable and ipAddressTable
+
+    Win32:
+      - [PATCH 2686248]: Fix several winExtDLL bugs.
+      - [PATCH 1706344]: Fix compilation with cygwin
+      - Fix AES support
 
 
 *5.4*
@@ -429,7 +657,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
@@ -463,7 +691,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
@@ -656,7 +884,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
@@ -926,7 +1154,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.
@@ -1103,7 +1331,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.
@@ -1259,7 +1487,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 dacb15a..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.
 
@@ -75,17 +75,13 @@
 --- STRUCTURE MEMBER CHECKS
 
 In configure.in:
-  AC_CHECK_STRUCT_FOR([
+  AC_CHECK_MEMBERS([struct STRUCTURE.MEMBER],,,[[
 #include lines
-], STRUCTURE, MEMBER)
-   ^^^^^^^^^  ^^^^^^  (change)
-
-In acconfig.h:
-  #undef STRUCT_STRUCTURE_HAS_MEMBER
-                ^^^^^^^^^     ^^^^^^  (change)
+]])
+                           ^^^^^^^^^ ^^^^^^  (change)
 
 In source code:
-  #ifdef STRUCT_STRUCTURE_HAS_MEMBER
+  #ifdef HAVE_STRUCT_STRUCTURE_MEMBER
     /* use it */
   #endif
 
diff --git a/README b/README
index 629af31..9699836 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-	       README file for net-snmp Version: 5.4.4
+	       README file for net-snmp Version: 5.7.3.rc1
 
 DISCLAIMER
 
@@ -256,7 +256,7 @@
     Dan A. Dickey <ddickey@transition.com>
     Dave Shield <D.T.Shield@csc.liv.ac.uk>
     Giovanni S. Marzot <gmarzot@nortelnetworks.com>
-    Niels Baggesen <recnba@mediator.uni-c.dk>
+    Niels Baggesen <nba@users.sourceforge.net>
     Simon Leinen <simon@limmat.switch.ch>
     David T. Perkins <dperkins@dsperkins.com>
     Mike Perik <mikep@crt.com>
@@ -349,7 +349,12 @@
     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>
+    Pablo Carboni <pcarboni@users.sourceforge.net>
+    Bill Fenner <fenner@gmail.com>
+    Brian Sipos <bsiposrkf@users.sourceforge.net>
 
   We've probably forgotten people on this list.  Let us know if you've
   contributed code and we've left you out.
diff --git a/README.agent-mibs b/README.agent-mibs
index 8716f8d..53f1caa 100644
--- a/README.agent-mibs
+++ b/README.agent-mibs
@@ -40,6 +40,7 @@
   G  scalar group helper
   W  watched scalar 
   M  mfd
+  C  container table
 
 Platform Keys
 ------------------
@@ -63,9 +64,10 @@
  table/object group           OS       Rel   Styl File
 ==============================================================================
 SNMPv2-MIB
- system.*.0                   A         3.2     O mibII/system_mib.c
- sysORTable                   A         3.4     O mibII/sysORTable.c
- snmp.*.0                     A         3.2     O mibII/snmp_mib.c
+ system.?.0                   A         5.5     W mibII/system_mib.c
+ .sysORLastChange.0           A         5.5     W mibII/sysORTable.c
+ sysORTable                   A         5.5     C mibII/sysORTable.c
+ snmp.*.0                     A         5.5     G mibII/snmp_mib_5_5.c
  setSerialNo.0                A         5.0     W mibII/setSerialNo.c
 
 ------------------------------------------------------------------------------
@@ -74,15 +76,15 @@
 
 ------------------------------------------------------------------------------
 SNMP-MPD-MIB
- snmpMPDStats.*.0             A         ~4.0?   O snmpv3/snmpMPDStats.c
+ snmpMPDStats.*.0             A         ~4.0?   G snmpv3/snmpMPDStats_5_5.c
 
 ------------------------------------------------------------------------------
 SNMP-TARGET-MIB
  snmpTargetSpinLock.0         A         3.6     O target/snmpTargetAddrEntry.c
  snmpTargetAddrTable          A         3.6     O target/snmpTargetAddrEntry.c
  snmpTargetParamsTable        A         3.6     O target/snmpTargetParamsEntry.c
- snmpUnavailableContexts.0    A         5.0     O target/target_counters.c
- snmpUnknownContexts.0        A         5.0     O target/target_counters.c
+ snmpUnavailableContexts.0    A         5.5     G target/target_counters_5_5.c
+ snmpUnknownContexts.0        A         5.5     G target/target_counters_5_5.c
 
 ------------------------------------------------------------------------------
 SNMP-NOTIFICATION-MIB
@@ -103,6 +105,7 @@
 ------------------------------------------------------------------------------
 SNMP-USER-BASED-SM-MIB
  usmStats.*.0                 A         ~4.0    O snmpv3/usmStats.c
+ usmStats.*.0                 A         5.5     G snmpv3/usmStats_5_5.c
  usmUserTable                 A         ~4.0?   O snmpv3/usmUser.c
 
 ------------------------------------------------------------------------------
@@ -151,19 +154,21 @@
  icmp.*.0                     U $2      ~3.2    G mibII/icmp.c
 
  ipSystemStatsTable           L         5.2     M ip-mib/=/*
+ ipSystemStatsTable            S        5.5     M ip-mib/=/*
  ipIfStatsTableLastChange.0   ---
- ipIfStatsTable               ---
+ ipIfStatsTable               L--       5.5     M ip-mib/=/*
 
  ipAddrTable (D)              U $2      4.2     O mibII/ipAddr.c
- ipAddressSpinLock.0          ---
+ ipAddressSpinLock.0          A         5.5     O mibII/ipAddr.c
  ipAddressTable               L         5.2     M ip-mib/=/*
+ ipAddressTable                S        5.5     M ip-mib/=/*
  ipAddressPrefixTable         L         5.3     M ip-mib/=/*
 
  ipRouteTable (D)             U $2      ~3.5    O mibII/*route*.c
  ipNetToMediaTable (D)        U $2      ~3.5    O mibII/at.c
  ipNetToPhysicalTable         (implemented as inetNetToMediaTable)
  inetNetToMediaTable          L         5.2     M ip-mib/=/*
- ipDefaultRouterTable         ---
+ ipDefaultRouterTable         L         5.5     M ip-mib/=/*
 
  icmpStatsTable               ---
  icmpMsgStatsTable            ---
@@ -179,6 +184,9 @@
  ipv6RouterAdvertSpinLock.0   ---
  ipv6ScopeZoneIndexTable      ---
 
+ ipForwarding.0               L          5.4    S ip-mib/ip_scalars.c
+ ipDefaultTTL.0               L          5.4    S ip-mib/ip_scalars.c
+
 ------------------------------------------------------------------------------
 IPV6-MIB
  ipv6MIBObjects.?.0           U         4.1     O mibII/ipv6.c
@@ -236,6 +244,7 @@
 ------------------------------------------------------------------------------
 RMON-MIB
  etherStatsTable              U         5.0     O Rmon/statistics.c
+ .etherStatsJabbers           L3        5.5     M rmon-mib/=/*
  etherHistoryControlTable     U         5.0     O Rmon/history.c
  etherHistoryTable            U         5.0     O Rmon/history.c
  alarmTable                   U         3.2     O Rmon/alarm.c
@@ -323,7 +332,7 @@
 
 ------------------------------------------------------------------------------
 EtherLike-MIB
- *                            ---
+ dot3StatsTable               L        5.5      M etherlike-mib/=
 
 ------------------------------------------------------------------------------
 AGENTX-MIB
@@ -408,16 +417,29 @@
 
 ------------------------------------------------------------------------------
 SCTP-MIB
- sctpStats                    L         5.4.2   S sctp-mib/sctpScalars*
- sctpParameters               L         5.4.2   S sctp-mib/sctpScalars*
- sctpAssocTable               L         5.4.2   C sctp-mib/=
- sctpAssocLocalAddrTable      L         5.4.2   C sctp-mib/=
- sctpAssocRemAddrTable        L         5.4.2   C sctp-mib/=
- sctpLookupLocalPortTable     L         5.4.2   C sctp-mib/=
- sctpLookupRemPortTable       L         5.4.2   C sctp-mib/=
- sctpLookupRemHostNameTable   L         5.4.2   C sctp-mib/=
- sctpLookupRemPrimIPAddrTable L         5.4.2   C sctp-mib/=
- sctpLookupRemIPAddrTable     L         5.4.2   C sctp-mib/=
+ sctpStats                    L         5.5     S sctp-mib/sctpScalars*
+ sctpParameters               L         5.5     S sctp-mib/sctpScalars*
+ sctpAssocTable               L         5.5     C sctp-mib/=
+ sctpAssocLocalAddrTable      L         5.5     C sctp-mib/=
+ sctpAssocRemAddrTable        L         5.5     C sctp-mib/=
+ sctpLookupLocalPortTable     L         5.5     C sctp-mib/=
+ sctpLookupRemPortTable       L         5.5     C sctp-mib/=
+ sctpLookupRemHostNameTable   L         5.5     C sctp-mib/=
+ 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/=/*
 
 ==============================================================================
 
@@ -425,6 +447,7 @@
 ----------
  1: available for systems using KAME ipv6
  2: with platform SDK. See README.win32
+ 3: works only with Intel and Broadcom network cards and must run as root only
 
 Other feature info
 ------------------
@@ -435,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.aix b/README.aix
index 16f725e..e25e9b6 100644
--- a/README.aix
+++ b/README.aix
@@ -6,7 +6,6 @@
 
 There are the following known problems on AIX:
 
-
 1) Shared libraries / embedded perl
 
 Up to (and including) net-snmp 5.4, configure forced a static build
@@ -14,11 +13,10 @@
 
 Starting with net-snmp 5.4.1, we build shared libraries by default on AIX
 (like on any other platform) using run-time linking. configure forces the
-use of the required "-brtl" linker flag. We also recommend
+use of the required "-brtl" linker flag.
 
-   ./configure --enable-as-needed ...
-
-for proper libperl linking.
+With net-snmp 5.5 the shared library build is broken again but the there is
+no forced static build - use --disable-shared when building.
 
 2) "grep: capacity exceeded" or "sed: Command line is too long" during configure
 
diff --git a/README.irix b/README.irix
index 79bf7ec..c7977e9 100644
--- a/README.irix
+++ b/README.irix
@@ -34,17 +34,7 @@
   http://sf.net/support/tracker.php?aid=1675869
 
 
-3. Perl
--------
-
-When compiling with Perl support, it's recommended to specify
-
-  ./configure --enable-as-needed
-
-for proper libperl linking.
-
-
-4. Known Issues
+3. Known Issues
 ---------------
 
 Accessing certain MIB objects on IRIX64 machines (i.e. when running a 64-bit 
@@ -56,7 +46,7 @@
    ./configure --without-kmem-usage ...
 
 
-5. Feedback
+3. Feedback
 -----------
 
 Please also see README and PORTING.
diff --git a/README.osX b/README.osX
index b15afa7..49b58e7 100644
--- a/README.osX
+++ b/README.osX
@@ -7,10 +7,6 @@
 
   - ALL
 
-    - Test 44 (Perl AgentX Subagent) fails.
-
-       - configure with --enable-as-needed for proper libperl linking
-
     - nlist doesn't support icmpstat
 
        - disable the icmp module during configure by specifying
@@ -19,7 +15,7 @@
 
 
   - 10.4.7 (Universal) and Leopard with 5.4 sources:
-        [Supplied by Chris Jalbert, slightly updated]
+        [Supplied by Chris Jalbert]
 
        - build using gcc 4.0 (see below) and configure using:
                         --with-persistent-directory=/var/db/net-snmp \
@@ -27,7 +23,6 @@
                         --without-rpm \
                         --with-mib-modules="host ucd-snmp/diskio" \
                         --with-out-mib-modules="mibII/icmp host/hr_swrun" \
-                        --enable-as-needed \
                         --without-kmem-usage
 
        The first line sets up persistent storage in the OS X standard location.
@@ -64,20 +59,3 @@
                    --prefix=/usr --with-persistent-directory=/var/db/ucd-snmp
                    --with-mib-modules=host
 
--------------------------------------
-
-With Mac OS X 10.5.2, and Net-SNMP 5.4.2, the default configuration
-seems to build and run successfully.   The main tweak needed to get
-things working was to disable "embedded perl" (which is active by
-default in 5.4 and above).
-
-  The issue here is that enabling embedded perl will try to use the
-same CFLAGS used for compiling perl, when compiling the Net-SNMP code
-(which is probably reasonable).  Unfortunately, the default perl binary
-that comes with Mac OS/X 10.5 (at least) is a "universal binary",
-so the CFLAGS that it uses include "-arch i386 -arch ppc".  This
-dual-architecture option confuses the configure script, and means
-that it cannot detect the characteristics of the host system correctly.
-
-Dave
-June 2008
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.solaris b/README.solaris
index aebce6f..625aae2 100644
--- a/README.solaris
+++ b/README.solaris
@@ -994,10 +994,8 @@
 
    ./configure -enable-embedded-perl ...
 
-It's recommended to add --enable-as-needed for proper libperl linking.
-
-Enabling Perl support should only be done if you are sure you really 
-need Perl, for the following reasons:
+This should only be done if you are sure you really need Perl, 
+for the following reasons:
 
 Solaris 8 and later ship with a version of Perl compiled using Sun's cc. 
 
diff --git a/README.sql b/README.sql
new file mode 100644
index 0000000..e2f7038
--- /dev/null
+++ b/README.sql
@@ -0,0 +1,29 @@
+snmptrapd MySQL Logging
+-----------------------
+
+A trap handler for logging traps to a MySQL database was added
+in release 5.5.0.
+
+The MySQL database location and password must be configured in
+/root/.my.cnf:
+
+	[snmptrapd]
+	host=localhost
+	password=sql
+
+User may also be configured, if using a MySQL user besides root.
+
+snmptrapd.conf must be configured to for the queue size and
+periodic flush interval:
+
+	# maximum number of traps to queue before forced flush
+	sqlMaxQueue 140
+
+	# seconds between periodic queue flushes
+	sqlSaveInterval 9
+
+A value of 0 for sqlSaveInterval will completely disable MySQL
+logging of traps.
+
+The schema must be loaded into MySQL before running snmptrapd.
+The schema can be found in dist/schema-snmptrapd.sql
diff --git a/README.win32 b/README.win32
index d942b8a..e49243b 100644
--- a/README.win32
+++ b/README.win32
@@ -4,14 +4,13 @@
 *
 ***************************************************************************
 
-This guide describes building with Microsoft Visual C++ 6.0 and higher, with
-the gcc compiler from MinGW / MSYS, and with the gcc compiler from Cygwin.
-As developers build with other Win32 environments, their notes will be 
-included here.
+This guide describes how to build Net-SNMP with Microsoft Visual C++, the
+MinGW gcc compiler or the Cygwin gcc compiler.  As developers build with other
+Win32 environments, their notes will be included here.
 
-The remainder of this guide has the following sections :
+The sections in this guide are:
 
-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,32 +38,32 @@
 
 ***************************************************************************
 *
-* Status as of 14-Oct-2006 for Win32 platforms
+* Net-SNMP status for Win32 platforms
 *
 ***************************************************************************
 
 All applications build with Microsoft Visual C++ 6.0, Microsoft Development
-Environment 2003 (MSVC 7.0/7.1), gcc under Cygwin, and gcc under MinGW.  
+Environment 2003 (MSVC 7.0/7.1), Microsoft Visual Studio 2005, Microsoft
+Visual Studio 2008, Microsoft Visual Studio 2010, gcc under Cygwin and gcc
+under MinGW.
 
-  -  All of the applications work
-     (snmpwalk, snmpget, snmpset, snmptrap, etc...).
-  -  The system, snmp, ip, tcp, udp, icmp mibgroups function
-         (when agent is built using the snmpdsdk project).
+  -  All of the applications work (snmpwalk, snmpget, snmpset, snmptrap, ...).
+  -  The system, snmp, ip, tcp, udp and icmp MIB-groups work (requires the
+     Platform SDK).
   -  The Net-SNMP agent runs as an AgentX master agent or as subagent.
   -  smux is working.
   -  The target, notification, disman/mte groups compile but are not tested.
   -  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
 
@@ -78,8 +77,13 @@
   -  All Debug and Release targets linked with libsnmp project targets
      build without errors, and are fully functional.
 
-  -  Both the Workspace graphical environment and command line nmake is 
-     supported for building under MSVC.
+  -  Both building via the interactive development environment and via the
+     command line (nmake) is supported.
+
+  -  With Visual Studio 2005 and later, the Net-SNMP source code can be
+     compiled into either 32-bit or 64-bit executables (the amd64/x64
+     architecture). Previous Visual Studio versions support 32-bit executables
+     only.
 
 
 ***************************************************************************
@@ -101,9 +105,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
@@ -163,9 +167,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.
 
@@ -235,7 +239,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:
 
@@ -405,33 +412,18 @@
 *
 ***************************************************************************
 
-If you are compiling using Microsoft Visual C++ 6.0, it is recommended that
-you install the Core Platform SDK (PSDK).  Without the PSDK, some functionality
-will be disabled such as the core elements of the mibII group of the agent 
-which use the "IP Helper API" (IPHLPAPI).
+If you are using Microsoft Visual Studio 6.0, you will have to install the
+Platform SDK (PSDK) first.
 
-To determine what code is disabled when the PSDK is not used, search the
-source code for HAVE_WIN32_PLATFORM_SDK.
+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.
 
-The PSDK can be downloaded from the MSDN site.  Go to http://msdn.microsoft.com 
-and do a search for 'psdk download' (without the quotes).  You should find both
-a web install and a full install.  
-
-When installing the SDK, all that is required is the 'Core'.
-
-Once this package has installed, from the Start Menu run 
-  "Programs ->Microsoft Platform SDK... -> 
-   Visual Studio Registration ->
-   Register PSDK Directories with Visual Studio"
-
-If you are compiling using any of the following systems, the PSDK download
-is not necessary, as the required parts of the PSDK are included with the 
-installation of the compiler:
-
-    - Microsoft Development Environment 2002 (MSVC 7.0)
-    - Microsoft Development Environment 2003 (MSVC 7.1)
-    - Cygwin (gcc)
-    - MinGW (gcc)
+If you are using any of the following environments, the PSDK download is not
+necessary as the required parts of the PSDK are included:
+    - Microsoft Visual Studio 2002 or later.
+    - Cygwin.
+    - MinGW.
 
 In order for the process part of the host resources MIB to work under Windows
 NT you will need to obtain PSAPI.DLL. This is available under the download 
@@ -451,12 +443,13 @@
 
 There are two ways to build Net-SNMP using Microsoft Visual C++.  The first
 and easiest method is using Configure and nmake on the command line, and the 
-second is using the Workspace files with the graphical interface.
+second is using the Workspace files inside the interactive development
+environment.
 
 To use nmake on the command line, the Configure script is run first to create
-the various make files.  Once they are created, nmake is used to build the 
-applications.  Perl is required to use this method, as the Configure script
-is written in Perl.  ActiveState ActivePerl is available at:
+the various makefiles.  Once these have been created, nmake is used to build
+the applications.  Perl is required to use this method, as the Configure
+script is written in Perl.  ActiveState ActivePerl is available at:
 
         http://www.activestate.com/Products/ActivePerl/
 
@@ -465,52 +458,41 @@
 recommended that you read and understand how the workspaces are configured
 even if you will only be using the command line Configure / nmake system.
 
-For the graphical interface, there are two main Win32 workspaces 
-('win32.dsw' and 'win32sdk.dsw'), containing more or less the same set 
-of projects, plus 'libdll.dsw' which contains a minimal set of projects 
-for use with the Perl module only.  
-
-Win32.dsw is for developers who have not installed the Platform SDK from 
-Microsoft's MSDN SDK Update site when using Microsoft Visual Studio 6.0.
-Win32sdk.dsw is for those who have or who are using the Microsoft Development 
-Environment 2002/2003 (MSVC 7.0/7.1), Cygwin (gcc) or MinGW (gcc).
-
-Libdll.dsw compiles a DLL version of snmplib (netsnmp.dll).
+For building via the interactive development environment, there are the Win32
+workspaces win32.dsw and libdll.dsw. The last workspace allows to build a DLL
+version of snmplib (netsnmp.dll).
 
 There is one core development library ('libsnmp'), together with a number 
 of utility projects for the individual executable commands ('snmpget', 
 '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 either 'netsnmpmibs' or 'netsnmpmibssdk' 
-depending on which workspace is being used) together with the main agent 
-project (either 'snmpd' or 'snmpdsdk').
+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.
+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), 9.0 (2008) and 10.0 (2010) 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.
 
 Since the MSVC build environment does not natively use "configure" nor "make"
 to generate the various pathnames that the programs require, the header files 
-need to be manually modified when using the graphical build system, and an 
-install script is provided.  When using the Perl Configure / nmake system, 
-the header files are automatically modified and require no manual editing.
+need to be manually modified when using the IDE, and an install script is
+provided.  When using the Perl Configure / nmake system, the header files are
+automatically modified and require no manual editing.
 
 The projects are arranged so that ALL of the usable products, the .exe files,
 are written to the win32\bin directory.  The win32\lib directory is used only 
@@ -555,12 +537,22 @@
 
 1.  Open a command prompt
 
-2.  Initialize the Visual Studio build environment by running VCVARS32.bat
+2.  When building with OpenSSL, set the environment variables INCLUDE and LIB
+    such that these point at the proper OpenSSL directories. An example:
+
+    set INCLUDE=C:\OpenSSL-Win32\include
+    set LIB=C:\OpenSSL-Win32\lib\VC\static
+
+3.  Initialize the Visual Studio build environment by running vcvarsall.bat
     which can be found in the bin folder of your Visual Studio install folder.
+    If you want to generate 64-bit binaries instead of 32-bit binaries, run
+    vcvarsall.bat with the amd64 argument. See also "How to: Enable a 64-Bit
+    Visual C++ Toolset at the Command Line" for more information
+    (http://msdn.microsoft.com/en-us/library/x4d2c09s%28v=vs.80%29.aspx).
 
-3.  Run win32\build.bat
+4.  Run win32\build.bat
 
-4.  The following screen will appear:
+5.  The following screen will appear:
 
     Net-SNMP build and install options
     ==================================
@@ -589,7 +581,7 @@
 
     Select option to set / toggle:  
 
-5.  Toggle the options on and off as desired by typing the line number 
+6.  Toggle the options on and off as desired by typing the line number 
     followed by <enter>.  
 
     To compile with OpenSSL, the OpenSSL library and header files must 
@@ -599,7 +591,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.
@@ -609,7 +601,7 @@
 
     When you are ready to build, type f <enter>
 
-6.  Building will begin.  Following is a sample screen shot of a quiet build:
+7.  Building will begin.  Following is a sample screen shot of a quiet build:
 
     Building...
     
@@ -631,7 +623,7 @@
     
     Done!
 
-7.  If the folder that Net-SNMP was installed to is ever changed, modify the 
+8.  If the folder that Net-SNMP was installed to is ever changed, modify the 
     system environment variables or registry keys as explained in the 
     'Configuration_Overview.html' file located in win32/dist/htmlhelp.
 
@@ -715,19 +707,19 @@
 *
 ***************************************************************************
 
-The win32sdk.dsw workspace will build the agent that provides mib-II objects
-for network interface layers, and the IP, ICMP, TCP and UDP tables.  This
-workspace requires the Platform SDK to be installed.  Use the win32.dsw 
-workspace if you don't have or don't need these features.  Note:  Other 
-features may be disabled if the Platform SDK is not used.  See the section
-'Installing Platform SDK' for more information.
+The win32.dsw and win32dll.dsw workspaces allow to build the agent and the
+applications. Proceed as follows:
 
-1. If SNMPv3 encryption capabilities or SHA authentication is required,
+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. If SNMPv3 encryption capabilities or SHA authentication is required,
    install the OpenSSL DLL and library file as described in the section 
    'Microsoft Visual C++ - Building with OpenSSL" and then continue with 
    step 2.
 
-2. The default installation path is c:\usr.  This folder will contain all
+3. The default installation path is c:\usr.  This folder will contain all
    the binaries, MIB files, configuration files etc.  To change the location,
    the win32\net-snmp\net-snmp-config.h file needs to be modified by changing
    the INSTALL_BASE variable. 
@@ -739,118 +731,8 @@
 
      For example: #define INSTALL_BASE "c:/usr".  
 
-3. If you are using win32sdk, the Platform SDK must be enabled.  Edit the 
-   the win32\net-snmp\net-snmp-config.h file and *change*:
-
-        /* #undef HAVE_WIN32_PLATFORM_SDK */
-
-   to:
-
-        #define HAVE_WIN32_PLATFORM_SDK 1
-
-4. Build the applications
-
-   Static build (does not use NetSNMP.DLL)
-   =======================================
-
-   MS VC++ 6.0:
-   ------------
-   a. Open win32.dsw or win32sdk.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 or win32sdk.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 or win32sdk.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 or win32sdk.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".
-  
-5.  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.  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.
-
-2.  Open win32\net-snmp\net-snmp-config.h using a text editor.
-
-3.  *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 */
 
@@ -858,38 +740,22 @@
 
         #define NETSNMP_USE_DLL 1
 
-4.  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.
-
-5. Build the DLL
-
-   MS VC++ 6.0:
-   ------------
-   a. Open libsdll.dsw.
-   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
+   a. Open win32.dsw (static build) or win32dll.dsw (dynamic build).
+   b. If you want to generate 64-bit binaries instead of 32-bit binaries,
+      select "Build/Configuration Manager" and add the "x64" platform.
+   c. Select "Build/Batch Build..."  
+   d. Select the projects and configurations you want to build.
+   e. Click "ReBuild All".
+   f. When building is done, View the Output window, clip and
       save to a text file if there is some information to share.
-   h. Click "File->Close Workspace".
 
-   MS VC++ 7.0+:
-   -------------
-   a. Open libsdll.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'
 
 
 ***************************************************************************
@@ -903,21 +769,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.
 
 
@@ -1038,26 +899,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
 ============================
@@ -1068,23 +912,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
 ===============
@@ -1093,38 +920,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"
 
@@ -1136,16 +935,10 @@
 ***************************************************************************
 
 The default build configuration supports SNMP over IPv4-based transports.
-However, Windows XP and Windows 2000 include an IPv6-capable stack, which
+However Windows 2000 and later include an IPv6-capable stack which
 can be used to provide SNMP over IPv6.  To enable IPv6, the Microsoft PSDK 
-is required and the following changes to the Net-SNMP win32 Visual C++ 
-configuration are needed:
-
-Project changes
-===============
-
- 1. Edit the win32\net-snmp\net-snmp-config.h header file.  Change
-    the single INET6 line from:
+is required and NETSNMP_ENABLE_IPV6 has to be enabled in
+win32\net-snmp\net-snmp-config.h. Change the following single line from:
 
         /* #undef NETSNMP_ENABLE_IPV6 */
 
@@ -1153,20 +946,7 @@
 
        	#define NETSNMP_ENABLE_IPV6 1
 
- 2. Edit the win32\libsnmp_dll\libsnmp.def file.  All the IPv6 functions will
-    be commented out and will need to be enabled by removing ';IPv6' from the
-    beginning of each line.  
-
-    For example, change:
-
-
-        ;IPv6        netsnmp_udp6_parse_security
-
-    to:
-
-                netsnmp_udp6_parse_security
-
- 3. Continue with the section 'Microsoft Visual C++ - Building"
+Next, continue with the section 'Microsoft Visual C++ - Building"
 
 
 ***************************************************************************
@@ -1245,9 +1025,7 @@
 for Windows based systems. The cygwin1.dll provides a POSIX emulation layer 
 that simplifies porting Unix / Linux applications to Windows. The Cygwin dlls
 are required if an application is to be distributed. The dependency on the 
-Cygwin dlls can be eliminated with the --mno-cygwin compiler flag, which uses
-MinGW to compile a native Windows binary, but the benefit of the POSIX emulation
-is lost. The Cygwin tool chain and documentation can be found at:
+The Cygwin tool chain and documentation can be found at:
 
 http://sources.redhat.com/cygwin/
 
@@ -1269,41 +1047,33 @@
 *
 ***************************************************************************
 
-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:
 
+ENV_SEPARATOR=":" \
 ./configure \
 	--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 use SNMPv3 auth and privacy features, add:
-	--with-openssl="/usr" \
+If you want to disable SNMPv3 auth and privacy features, add:
+	--without-openssl \
 
 If you want to use IPv6 transports, add:
-	--enable-ipv6 --with-transports="TCPIPv6 UDPIPv6"
+	--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 
@@ -1320,17 +1090,16 @@
 MinGW tools with the MSyS environment. MinGW, MSyS and the associated
 documentation can be downloaded from: http://www.mingw.org.
 
-Compiling net-snmp with MinGW requires GNU regex. A GNU regex package that
-builds under MinGW with MSyS is available at: 
+Compiling net-snmp with MinGW requires GNU regex and libintl. Binaries and
+developer header files for these libraries are available at: 
 
-        http://www.boedog.com/net-snmp/gnu_regex/regex-0-12-mingw-r2.tar.gz
+        http://gnuwin32.sourceforge.net/packages/regex.htm
+        http://gnuwin32.sourceforge.net/packages/libintl.htm
 
-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.
-       
-1.  Build and install GNU regex following the instructions in the 
-    regex-0-12-mingw-r2 README.
+Proceed as follows to build Net-SNMP:
+
+1.  Install GNU regex and GNU libintl binaries and developer files in the
+    MinGW tree.
 
 2.  If SNMPv3 encryption capabilities or SHA authentication is required,
     install the OpenSSL DLL and library file as described in the section 
@@ -1357,7 +1126,7 @@
 
 	./configure --prefix="$BASEDIR" \
 		--with-mibdirs="$BASEDIR/share/snmp/mibs" \
-	--with-mib-modules="agentx disman/event-mib examples/example" \
+	--with-mib-modules="agentx disman/event-mib winExtDLL examples/example"\
         --disable-embedded-perl --without-perl-modules \
 
     Note: while the Net-SNMP implementation of the host resources MIB is not
diff --git a/TODO b/TODO
index 2210b6e..49d913e 100644
--- a/TODO
+++ b/TODO
@@ -24,8 +24,8 @@
   Tunnel
   WWW-MIB
   Hardware Abstraction Layer:
-    HostRes	(convert to use HAL and clean up)
-    UCDavis	(convert to use HAL and update structures)
+    HostRes	(convert to use HAL and clean up - in progress)
+    UCDavis	(convert to use HAL and update structures - in progress)
 
 Extensibility:
   AgentX	(reasonably stable now)
diff --git a/acconfig.h b/acconfig.h
index 0ed06b9..12f85c6 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
@@ -23,294 +27,15 @@
  */
 #ifndef NETSNMP_NO_AUTOCONF_DEFINITIONS
 
-/* define if you have type int32_t */
-#undef HAVE_INT32_T
-
-/* define if you have type uint32_t */
-#undef HAVE_UINT32_T
-
-/* define if you have type u_int32_t */
-#undef HAVE_U_INT32_T
-
-/* define if you have type int64_t */
-#undef HAVE_INT64_T
-
-/* define if you have type uint64_t */
-#undef HAVE_UINT64_T
-
-/* define if you have type u_int64_t */
-#undef HAVE_U_INT64_T
-
-/* define if you have type intptr_t */
-#undef HAVE_INTPTR_T
-
-/* define if you have type uintptr_t */
-#undef HAVE_UINTPTR_T
-
-/* got socklen_t? */
-#undef HAVE_SOCKLEN_T
-
-/* got in_addr_t? */
-#undef HAVE_IN_ADDR_T
-
-/* define if you have getdevs() */
-#undef HAVE_GETDEVS
-
-/* define if you have devstat_getdevs() */
-#undef HAVE_DEVSTAT_GETDEVS
-
-/* define if you have <netinet/in_pcb.h> */
-#undef HAVE_NETINET_IN_PCB_H
-
-/* define if you have <sys/disklabel.h> */
-#undef HAVE_SYS_DISKLABEL_H
-
-/* define if your compiler (processor) defines __FUNCTION__ for you */
-#undef HAVE_CPP_UNDERBAR_FUNCTION_DEFINED
-
-/* on aix, if you have perfstat */
-#undef HAVE_PERFSTAT
-
-/* define if you have libdb, libnm or librpm, respectively */
-#undef HAVE_LIBDB
-#undef HAVE_LIBNM
-#undef HAVE_LIBRPM
-
-/* define if you have pkginfo */
-#undef HAVE_PKGINFO
-
-/* define if you have gethostbyname */
-#undef HAVE_GETHOSTBYNAME
-
-/* define if you have the perl_eval_pv() function */
-#undef HAVE_PERL_EVAL_PV_LC
-
-/* define if you have the Perl_eval_pv() function */
-#undef HAVE_PERL_EVAL_PV_UC
-
-/* printing system */
-#undef HAVE_LPSTAT
-#undef LPSTAT_PATH
-#undef HAVE_PRINTCAP
-/* Use dmalloc to do malloc debugging? */
-#undef HAVE_DMALLOC_H
-
-/* location of UNIX kernel */
-#define KERNEL_LOC "/vmunix"
-
-/* location of mount table list */
-#define ETC_MNTTAB "/etc/mnttab"
-
-/* location of swap device (ok if not found) */
-#undef DMEM_LOC
-
-/* Command to generate ps output, the final column must be the process
-   name withOUT arguments */
-#define PSCMD "/bin/ps"
-
-/* Where is the uname command */
-#define UNAMEPROG "/bin/uname"
-
-/* define if you are using linux and /proc/net/dev has the compressed
-   field, which exists in linux kernels 2.2 and greater. */
-#undef PROC_NET_DEV_HAS_COMPRESSED
-
-/* define rtentry to ortentry on SYSV machines (alphas) */
-#undef RTENTRY
-
-/* Use BSD 4.4 routing table entries? */
-#undef RTENTRY_4_4
-
-/* Does struct sigaction have a sa_sigaction field? */
-#undef STRUCT_SIGACTION_HAS_SA_SIGACTION
-
-/* Does struct tm have a tm_gmtoff field? */
-#undef STRUCT_TM_HAS_TM_GMTOFFF
-
-/* Does struct sockaddr have a sa_len field? */
-#undef STRUCT_SOCKADDR_HAS_SA_LEN
-
-/* Does struct sockaddr have a sa_family2 field? */
-#undef STRUCT_SOCKADDR_HAS_SA_UNION_SA_GENERIC_SA_FAMILY2
-
-/* Does struct sockaddr_storage have a ss_family field? */
-#undef STRUCT_SOCKADDR_STORAGE_HAS_SS_FAMILY
-
-/* Does struct sockaddr_storage have a __ss_family field? */
-#undef STRUCT_SOCKADDR_STORAGE_HAS___SS_FAMILY
-
-/* Does struct in6_addr have a s6_un.sa6_ladd field? */
-#undef STRUCT_IN6_ADDR_HAS_S6_UN_SA6_LADDR
-
-/* rtentry structure tests */
-#undef RTENTRY_RT_NEXT
-#undef STRUCT_RTENTRY_HAS_RT_DST
-#undef STRUCT_RTENTRY_HAS_RT_UNIT
-#undef STRUCT_RTENTRY_HAS_RT_USE
-#undef STRUCT_RTENTRY_HAS_RT_REFCNT
-#undef STRUCT_RTENTRY_HAS_RT_HASH
-
-/* ifnet structure tests */
-#undef STRUCT_IFNET_HAS_IF_BAUDRATE
-#undef STRUCT_IFNET_HAS_IF_BAUDRATE_IFS_VALUE
-#undef STRUCT_IFNET_HAS_IF_SPEED
-#undef STRUCT_IFNET_HAS_IF_TYPE
-#undef STRUCT_IFNET_HAS_IF_IMCASTS
-#undef STRUCT_IFNET_HAS_IF_IQDROPS
-#undef STRUCT_IFNET_HAS_IF_LASTCHANGE_TV_SEC
-#undef STRUCT_IFNET_HAS_IF_LASTCHANGE_TV_NSEC
-#undef STRUCT_IFNET_HAS_IF_NOPROTO
-#undef STRUCT_IFNET_HAS_IF_OMCASTS
-#undef STRUCT_IFNET_HAS_IF_XNAME
-#undef STRUCT_IFNET_HAS_IF_OBYTES
-#undef STRUCT_IFNET_HAS_IF_IBYTES
-#undef STRUCT_IFNET_HAS_IF_ADDRLIST
-
-/* tcpstat.tcps_rcvmemdrop */
-#undef STRUCT_TCPSTAT_HAS_TCPS_RCVMEMDROP
-
-/* udpstat.udps_discard */
-#undef STRUCT_UDPSTAT_HAS_UDPS_DISCARD
-
-/* udpstat.udps_discard */
-#undef STRUCT_UDPSTAT_HAS_UDPS_NOPORT
-
-/* udpstat.udps_discard */
-#undef STRUCT_UDPSTAT_HAS_UDPS_NOPORTBCAST
-
-/* udpstat.udps_discard */
-#undef STRUCT_UDPSTAT_HAS_UDPS_FULLSOCK
-
-/* arphd.at_next */
-#undef STRUCT_ARPHD_HAS_AT_NEXT
-
-/* ifaddr.ifa_next */
-#undef STRUCT_IFADDR_HAS_IFA_NEXT
-
-/* ifnet.if_mtu */
-#undef STRUCT_IFNET_HAS_IF_MTU
-
-/* swdevt.sw_nblksenabled */
-#undef STRUCT_SWDEVT_HAS_SW_NBLKSENABLED
-
-/* nlist.n_value */
-#undef STRUCT_NLIST_HAS_N_VALUE
-
-/* nlist64.n_value */
-#undef STRUCT_NLIST64_HAS_N_VALUE
-
-/* ipstat structure tests */
-#undef STRUCT_IPSTAT_HAS_IPS_CANTFORWARD
-#undef STRUCT_IPSTAT_HAS_IPS_CANTFRAG
-#undef STRUCT_IPSTAT_HAS_IPS_DELIVERED
-#undef STRUCT_IPSTAT_HAS_IPS_FRAGDROPPED
-#undef STRUCT_IPSTAT_HAS_IPS_FRAGTIMEOUT
-#undef STRUCT_IPSTAT_HAS_IPS_LOCALOUT
-#undef STRUCT_IPSTAT_HAS_IPS_NOPROTO
-#undef STRUCT_IPSTAT_HAS_IPS_NOROUTE
-#undef STRUCT_IPSTAT_HAS_IPS_ODROPPED
-#undef STRUCT_IPSTAT_HAS_IPS_OFRAGMENTS
-#undef STRUCT_IPSTAT_HAS_IPS_REASSEMBLED
-
-/* vfsstat.f_frsize */
-#undef STRUCT_STATVFS_HAS_F_FRSIZE
-
-/* vfsstat.f_files */
-#undef STRUCT_STATVFS_HAS_F_FILES
-
-/* statfs inode structure tests*/
-#undef STRUCT_STATFS_HAS_F_FILES
-#undef STRUCT_STATFS_HAS_F_FFREE
-#undef STRUCT_STATFS_HAS_F_FAVAIL
-
-/* des_ks_struct.weak_key */
-#undef STRUCT_DES_KS_STRUCT_HAS_WEAK_KEY
-
-/* ifnet needs to have _KERNEL defined */
-#undef IFNET_NEEDS_KERNEL
-
-/* sysctl works to get boottime, etc... */
-#undef NETSNMP_CAN_USE_SYSCTL
-
-/* define if SIOCGIFADDR exists in sys/ioctl.h */
-#undef SYS_IOCTL_H_HAS_SIOCGIFADDR
-
-/* Define if statfs takes 2 args and the second argument has
-   type struct fs_data. [Ultrix] */
-#undef STAT_STATFS_FS_DATA
-
-/* Define if the TCP timer constants in <netinet/tcp_timer.h>
-   depend on the integer variable `hz'.  [FreeBSD 4.x] */
-#undef TCPTV_NEEDS_HZ
-
-/* Not-to-be-compiled macros for use by configure only */
-#define config_require(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)
-#define config_error(x)
-#define config_warning(x)
-  
-#if defined (WIN32) || defined (mingw32) || defined (cygwin)
-#define ENV_SEPARATOR ";"
-#define ENV_SEPARATOR_CHAR ';'
-#else
-#define ENV_SEPARATOR ":"
-#define ENV_SEPARATOR_CHAR ':'
-#endif
-
 /* definitions added by configure on-the-fly */
 @TOP@
 @BOTTOM@
 
 /* end of definitions added by configure on-the-fly */
 
-#ifndef HAVE_STRCHR
-#ifdef HAVE_INDEX
-# define strchr index
-# define strrchr rindex
-#endif
-#endif
-
-#ifndef HAVE_INDEX
-#ifdef HAVE_STRCHR
-#ifdef mingw32
-# define index(a,b) strchr(a,b)
-# define rindex(a,b) strrchr(a,b)
-#else
-# define index strchr
-# define rindex strrchr
-#endif
-#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
-
 /* 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
 
@@ -364,27 +89,6 @@
 /* default list of mibs to load */
 #define NETSNMP_DEFAULT_MIBS "IP-MIB:IF-MIB:TCP-MIB:UDP-MIB:SNMPv2-MIB:RFC1213-MIB"
 
-/* default location to look for mibs to load using the above tokens
-   and/or those in the MIBS envrionment variable*/
-#undef NETSNMP_DEFAULT_MIBDIRS
-
-/* default mib files to load, specified by path. */
-#undef NETSNMP_DEFAULT_MIBFILES
-
-/* should we compile to use special opaque types: float, double,
-   counter64, i64, ui64, union? */
-#undef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
-
-/* define if you want to compile support for both authentication and
-   privacy support. */
-#undef NETSNMP_ENABLE_SCAPI_AUTHPRIV
-
-/* define if you are using the MD5 code ...*/
-#undef NETSNMP_USE_INTERNAL_MD5
-
-/* define if you are using the codeS11 library ...*/
-#undef NETSNMP_USE_PKCS11
-
 /* debugging stuff */
 /* if defined, we optimize the code to exclude all debugging calls. */
 #undef NETSNMP_NO_DEBUGGING
@@ -400,9 +104,6 @@
    lines: PERSISTENT_DIRECTORY/NAME.persistent.conf */
 #define NETSNMP_PERSISTENT_DIRECTORY "/var/snmp"
 
-/* PERSISTENT_MASK: the umask permissions to set up persistent files with */
-#define NETSNMP_PERSISTENT_MASK 077
-
 /* AGENT_DIRECTORY_MODE: the mode the agents should use to create
    directories with. Since the data stored here is probably sensitive, it
    probably should be read-only by root/administrator. */
@@ -447,19 +148,6 @@
 /* Use libwrap to handle allow/deny hosts? */
 #undef NETSNMP_USE_LIBWRAP
 
-/* testing code sections. */
-#undef NETSNMP_ENABLE_TESTING_CODE 
-
-/* If you don't have root access don't exit upon kmem errors */
-#undef NETSNMP_NO_ROOT_ACCESS
-
-/* If we don't want to use kmem. */
-#undef NETSNMP_NO_KMEM_USAGE
-
-/* If you don't want the agent to report on variables it doesn't have data for */
-#undef NETSNMP_NO_DUMMY_VALUES
-
-
 /* Mib-2 tree Info */
 /* These are the system information variables. */
 
@@ -563,7 +251,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)
@@ -654,9 +342,6 @@
 /* internal define */
 #define NETSNMP_LASTFIELD -1
 
-/* configure options specified */
-#define NETSNMP_CONFIGURE_OPTIONS ""
-
 /*  Pluggable transports.  */
 
 /*  This is defined if support for the UDP/IP transport domain is
@@ -691,13 +376,32 @@
     available.  */
 #undef NETSNMP_TRANSPORT_TCPIPV6_DOMAIN
 
-/*  This is defined if support for the UDP/IP transport domain is
+/*  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.   */
+#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.   */
+#undef NETSNMP_TRANSPORT_IPV4BASE_DOMAIN
+
 /* define this if the USM security module is available */
 #undef NETSNMP_SECMOD_USM
 
@@ -707,18 +411,9 @@
 /* define this if the local security module is available */
 #undef NETSNMP_SECMOD_LOCALSM
 
-/* define if you want to build with reentrant/threaded code (incomplete)*/
-#undef NETSNMP_REENTRANT
-
 /* define if configured as a "mini-agent" */
 #undef NETSNMP_MINI_AGENT
 
-/* define if you are embedding perl in the main agent */
-#undef NETSNMP_EMBEDDED_PERL
-
-/* define if you want to build MFD module rewrites*/
-#undef NETSNMP_ENABLE_MFD_REWRITES
-
 /* this is the location of the net-snmp mib tree.  It shouldn't be
    changed, as the places it is used are expected to be constant
    values or are directly tied to the UCD-SNMP-MIB. */
@@ -786,33 +481,12 @@
 #  define NETSNMP_IMPORT extern
 #endif
 
-/* define if you want to enable IPv6 support */
-#undef NETSNMP_ENABLE_IPV6
-
-/* define if you want to restrict SMUX connections to localhost by default */
-#undef NETSNMP_ENABLE_LOCAL_SMUX
-
-/* define if agentx transport is to use domain sockets only */
-#undef NETSNMP_AGENTX_DOM_SOCK_ONLY
-
-/* define if you do not want snmptrapd to register as an AgentX subagent */
-#undef NETSNMP_SNMPTRAPD_DISABLE_AGENTX
-
-/* define this if we're using the new MIT crypto API */
-#undef NETSNMP_USE_KERBEROS_MIT
-
-/* define this if you're using Heimdal Kerberos */
-#undef NETSNMP_USE_KERBEROS_HEIMDAL
-
 /* comment the next line if you are compiling with libsnmp.h 
    and are not using the UC-Davis SNMP library. */
 #define UCD_SNMP_LIBRARY 1
 
-/* add in recent CMU library extensions (not complete) */
-#undef CMU_COMPATIBLE
-
 /* final conclusion on nlist usage */
-#if defined(HAVE_NLIST) && defined(STRUCT_NLIST_HAS_N_VALUE) && !defined(NETSNMP_DONT_USE_NLIST) && !defined(NETSNMP_NO_KMEM_USAGE)
+#if defined(HAVE_NLIST) && defined(HAVE_STRUCT_NLIST_N_VALUE) && !defined(NETSNMP_DONT_USE_NLIST) && defined(HAVE_KMEM) && !defined(NETSNMP_NO_KMEM_USAGE)
 #define NETSNMP_CAN_USE_NLIST
 #endif
 
diff --git a/acinclude.m4 b/acinclude.m4
deleted file mode 100644
index 5c12980..0000000
--- a/acinclude.m4
+++ /dev/null
@@ -1,200 +0,0 @@
-dnl @synopsis AC_PROMPT_USER_NO_DEFINE(VARIABLENAME,QUESTION,[DEFAULT])
-dnl
-dnl Asks a QUESTION and puts the results in VARIABLENAME with an optional
-dnl DEFAULT value if the user merely hits return.
-dnl
-dnl @version 1.15
-dnl @author Wes Hardaker <hardaker@users.sourceforge.net>
-dnl
-AC_DEFUN([AC_PROMPT_USER_NO_DEFINE],
-dnl changequote(<<, >>) dnl
-dnl <<
-[
-if test "x$defaults" = "xno"; then
-echo $ECHO_N "$2 ($3): $ECHO_C"
-read tmpinput
-if test "$tmpinput" = "" -a "$3" != ""; then
-  tmpinput="$3"
-fi
-eval $1=\"$tmpinput\"
-else
-tmpinput="$3"
-eval $1=\"$tmpinput\"
-fi
-]
-dnl >>
-dnl changequote([, ])
-) dnl done AC_PROMPT_USER
-
-dnl @synopsis AC_PROMPT_USER(VARIABLENAME,QUESTION,[DEFAULT],QUOTED)
-dnl
-dnl Asks a QUESTION and puts the results in VARIABLENAME with an optional
-dnl DEFAULT value if the user merely hits return.  Also calls 
-dnl AC_DEFINE_UNQUOTED() on the VARIABLENAME for VARIABLENAMEs that should
-dnl be entered into the config.h file as well.  If QUOTED is "quoted" then
-dnl the result will be defined within quotes.
-dnl
-dnl @version 1.15
-dnl @author Wes Hardaker <hardaker@users.sourceforge.net>
-dnl
-AC_DEFUN([AC_PROMPT_USER],
-[
-MSG_CHECK=`echo "$2" | tail -1`
-AC_CACHE_CHECK($MSG_CHECK, ac_cv_user_prompt_$1,
-[echo "" >&AC_FD_MSG
-AC_PROMPT_USER_NO_DEFINE($1,[$2],$3)
-eval ac_cv_user_prompt_$1=\$$1
-echo $ECHO_N "setting $MSG_CHECK to...  $ECHO_C" >&AC_FD_MSG
-])
-if test "$ac_cv_user_prompt_$1" != "none"; then
-  if test "x$4" = "xquoted" -o "x$4" = "xQUOTED"; then
-    AC_DEFINE_UNQUOTED($1,"$ac_cv_user_prompt_$1")
-  else
-    AC_DEFINE_UNQUOTED($1,$ac_cv_user_prompt_$1)
-  fi
-fi
-]) dnl
-
-dnl @synopsis AC_CHECK_STRUCT_FOR(INCLUDES,STRUCT,MEMBER,DEFINE,[no])
-dnl
-dnl Checks STRUCT for MEMBER and defines DEFINE if found.
-dnl
-dnl @version 1.15
-dnl @author Wes Hardaker <hardaker@users.sourceforge.net>
-dnl
-AC_DEFUN([AC_CHECK_STRUCT_FOR],[
-
-ac_safe_struct=`echo "$2" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "$3" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-changequote(, )dnl
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-changequote([, ])dnl
-
-AC_MSG_CHECKING([for $2.$3])
-AC_CACHE_VAL($ac_safe_all,
-[
-if test "x$4" = "x"; then
-  defineit="= 0"
-elif test "x$4" = "xno"; then
-  defineit=""
-else
-  defineit="$4"
-fi
-AC_TRY_COMPILE([
-$1
-],[
-struct $2 testit; 
-testit.$3 $defineit;
-], eval "${ac_safe_all}=yes", eval "${ac_safe_all}=no" )
-])
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  AC_MSG_RESULT(yes)
-  AC_DEFINE_UNQUOTED($ac_uc_define)
-else
-  AC_MSG_RESULT(no)
-fi
-
-])
-
-dnl AC_CHECK_IFNET_FOR(SUBSTRUCT,[no])
-AC_DEFUN([AC_CHECK_IFNET_FOR],[
-dnl check for $1 in struct ifnet
-AC_CHECK_STRUCT_FOR([
-#ifdef IFNET_NEEDS_KERNEL
-#define _KERNEL 1
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-#ifdef HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#ifdef linux
-struct ifnet {
-	char	*if_name;		/* name, e.g. "en" or "lo" */
-	short	if_unit;		/* sub-unit for lower level driver */
-	short	if_mtu;			/* maximum transmission unit */
-	short	if_flags;		/* up/down, broadcast, etc. */
-	int	if_metric;		/* routing metric (external only) */
-	char    if_hwaddr [6];		/* ethernet address */
-	int	if_type;		/* interface type: 1=generic,
-					   28=slip, ether=6, loopback=24 */
-	int	if_speed;		/* interface speed: in bits/sec */
-
-	struct sockaddr if_addr;	/* interface's address */
-	struct sockaddr ifu_broadaddr;	/* broadcast address */
-	struct sockaddr ia_subnetmask; 	/* interface's mask */
-
-	struct	ifqueue {
-		int	ifq_len;
-		int	ifq_drops;
-	} if_snd;			/* output queue */
-	int	if_ibytes;		/* octets received on interface */
-	int	if_ipackets;		/* packets received on interface */
-	int	if_ierrors;		/* input errors on interface */
-        int     if_iqdrops;             /* input queue overruns */
-	int	if_obytes;		/* octets sent on interface */
-	int	if_opackets;		/* packets sent on interface */
-	int	if_oerrors;		/* output errors on interface */
-	int	if_collisions;		/* collisions on csma interfaces */
-/* end statistics */
-	struct	ifnet *if_next;
-};
-#endif
-], ifnet, $1, $2)
-])
-
-dnl
-dnl Add a search path to the LIBS and CFLAGS variables
-dnl
-AC_DEFUN([AC_ADD_SEARCH_PATH],[
-  if test "x$1" != x -a -d $1; then
-     if test -d $1/lib; then
-       LDFLAGS="-L$1/lib $LDFLAGS"
-     fi
-     if test -d $1/include; then
-	CPPFLAGS="-I$1/include $CPPFLAGS"
-     fi
-  fi
-])
-
-dnl
-dnl Store information for displaying later.
-dnl
-AC_DEFUN([AC_MSG_CACHE_INIT],[
-  rm -f configure-summary
-])
-
-AC_DEFUN([AC_MSG_CACHE_ADD],[
-  cat >> configure-summary << EOF
-  $1
-EOF
-])
-
-AC_DEFUN([AC_MSG_CACHE_DISPLAY],[
-  echo ""
-  echo "---------------------------------------------------------"
-  echo "            Net-SNMP configuration summary:"
-  echo "---------------------------------------------------------"
-  echo ""
-  cat configure-summary
-  echo ""
-  echo "---------------------------------------------------------"
-  echo ""
-])
-
-AC_DEFUN([AC_MSG_MODULE_DBG],
-[
-  if test $module_debug = 1; then
-    echo $1 $2 $3 $4
-  fi
-]
-)
diff --git a/aclocal.m4 b/aclocal.m4
index 441c752..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.
@@ -11,6640 +11,14 @@
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-
-# serial 52 AC_PROG_LIBTOOL
-
-
-# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
-# -----------------------------------------------------------
-# If this macro is not defined by Autoconf, define it here.
-m4_ifdef([AC_PROVIDE_IFELSE],
-         [],
-         [m4_define([AC_PROVIDE_IFELSE],
-	         [m4_ifdef([AC_PROVIDE_$1],
-		           [$2], [$3])])])
-
-
-# AC_PROG_LIBTOOL
-# ---------------
-AC_DEFUN([AC_PROG_LIBTOOL],
-[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
-dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
-dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
-  AC_PROVIDE_IFELSE([AC_PROG_CXX],
-    [AC_LIBTOOL_CXX],
-    [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
-  ])])
-dnl And a similar setup for Fortran 77 support
-  AC_PROVIDE_IFELSE([AC_PROG_F77],
-    [AC_LIBTOOL_F77],
-    [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
-])])
-
-dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
-dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
-dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
-  AC_PROVIDE_IFELSE([AC_PROG_GCJ],
-    [AC_LIBTOOL_GCJ],
-    [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
-      [AC_LIBTOOL_GCJ],
-      [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
-	[AC_LIBTOOL_GCJ],
-      [ifdef([AC_PROG_GCJ],
-	     [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
-       ifdef([A][M_PROG_GCJ],
-	     [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
-       ifdef([LT_AC_PROG_GCJ],
-	     [define([LT_AC_PROG_GCJ],
-		defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
-])])# AC_PROG_LIBTOOL
-
-
-# _AC_PROG_LIBTOOL
-# ----------------
-AC_DEFUN([_AC_PROG_LIBTOOL],
-[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
-AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
-AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
-AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-# Prevent multiple expansion
-define([AC_PROG_LIBTOOL], [])
-])# _AC_PROG_LIBTOOL
-
-
-# AC_LIBTOOL_SETUP
-# ----------------
-AC_DEFUN([AC_LIBTOOL_SETUP],
-[AC_PREREQ(2.50)dnl
-AC_REQUIRE([AC_ENABLE_SHARED])dnl
-AC_REQUIRE([AC_ENABLE_STATIC])dnl
-AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_LD])dnl
-AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
-AC_REQUIRE([AC_PROG_NM])dnl
-
-AC_REQUIRE([AC_PROG_LN_S])dnl
-AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
-# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
-AC_REQUIRE([AC_OBJEXT])dnl
-AC_REQUIRE([AC_EXEEXT])dnl
-dnl
-AC_LIBTOOL_SYS_MAX_CMD_LEN
-AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
-AC_LIBTOOL_OBJDIR
-
-AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
-_LT_AC_PROG_ECHO_BACKSLASH
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed='sed -e 1s/^X//'
-[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
-
-# Same as above, but do not quote variable references.
-[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-# Constants:
-rm="rm -f"
-
-# Global variables:
-default_ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
-ltmain="$ac_aux_dir/ltmain.sh"
-ofile="$default_ofile"
-with_gnu_ld="$lt_cv_prog_gnu_ld"
-
-AC_CHECK_TOOL(AR, ar, false)
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-AC_CHECK_TOOL(STRIP, strip, :)
-
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
-
-# Set sane defaults for various variables
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-test -z "$AS" && AS=as
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-test -z "$LD" && LD=ld
-test -z "$LN_S" && LN_S="ln -s"
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-test -z "$NM" && NM=nm
-test -z "$SED" && SED=sed
-test -z "$OBJDUMP" && OBJDUMP=objdump
-test -z "$RANLIB" && RANLIB=:
-test -z "$STRIP" && STRIP=:
-test -z "$ac_objext" && ac_objext=o
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-fi
-
-_LT_CC_BASENAME([$compiler])
-
-# Only perform the check for file, if the check method requires it
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    AC_PATH_MAGIC
-  fi
-  ;;
-esac
-
-_LT_REQUIRED_DARWIN_CHECKS
-
-AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
-AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
-enable_win32_dll=yes, enable_win32_dll=no)
-
-AC_ARG_ENABLE([libtool-lock],
-    [AC_HELP_STRING([--disable-libtool-lock],
-	[avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-AC_ARG_WITH([pic],
-    [AC_HELP_STRING([--with-pic],
-	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [pic_mode="$withval"],
-    [pic_mode=default])
-test -z "$pic_mode" && pic_mode=default
-
-# Use C for the default configuration in the libtool script
-tagname=
-AC_LIBTOOL_LANG_C_CONFIG
-_LT_AC_TAGCONFIG
-])# AC_LIBTOOL_SETUP
-
-
-# _LT_AC_SYS_COMPILER
-# -------------------
-AC_DEFUN([_LT_AC_SYS_COMPILER],
-[AC_REQUIRE([AC_PROG_CC])dnl
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-])# _LT_AC_SYS_COMPILER
-
-
-# _LT_CC_BASENAME(CC)
-# -------------------
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-AC_DEFUN([_LT_CC_BASENAME],
-[for cc_temp in $1""; do
-  case $cc_temp in
-    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-])
-
-
-# _LT_COMPILER_BOILERPLATE
-# ------------------------
-# Check for compiler boilerplate output or warnings with
-# the simple compiler test code.
-AC_DEFUN([_LT_COMPILER_BOILERPLATE],
-[AC_REQUIRE([LT_AC_PROG_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$rm conftest*
-])# _LT_COMPILER_BOILERPLATE
-
-
-# _LT_LINKER_BOILERPLATE
-# ----------------------
-# Check for linker boilerplate output or warnings with
-# the simple link test code.
-AC_DEFUN([_LT_LINKER_BOILERPLATE],
-[AC_REQUIRE([LT_AC_PROG_SED])dnl
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$rm -r conftest*
-])# _LT_LINKER_BOILERPLATE
-
-# _LT_REQUIRED_DARWIN_CHECKS
-# --------------------------
-# Check for some things on darwin
-AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS],[
-  case $host_os in
-    rhapsody* | darwin*)
-    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
-    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
-
-    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
-      [lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-   # By default we will add the -single_module flag. You can override
-   # by either setting the environment variable LT_MULTI_MODULE
-   # non-empty at configure time, or by adding -multi_module to the
-   # link flags.
-   echo "int foo(void){return 1;}" > conftest.c
-   $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-     -dynamiclib ${wl}-single_module conftest.c
-   if test -f libconftest.dylib; then
-     lt_cv_apple_cc_single_mod=yes
-     rm -rf libconftest.dylib*
-   fi
-   rm conftest.c
-      fi])
-    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
-      [lt_cv_ld_exported_symbols_list],
-      [lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
-   [lt_cv_ld_exported_symbols_list=yes],
-   [lt_cv_ld_exported_symbols_list=no])
-   LDFLAGS="$save_LDFLAGS"
-    ])
-    case $host_os in
-    rhapsody* | darwin1.[[0123]])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-     _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*)
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-   10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
-     _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-   10.[[012]]*)
-     _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-   10.*)
-     _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}"
-    fi
-    if test "$DSYMUTIL" != ":"; then
-      _lt_dsymutil="~$DSYMUTIL \$lib || :"
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-])
-
-# _LT_AC_SYS_LIBPATH_AIX
-# ----------------------
-# Links a minimal program and checks the executable
-# for the system default hardcoded library path. In most cases,
-# this is /usr/lib:/lib, but when the MPI compilers are used
-# the location of the communication and MPI libs are included too.
-# If we don't find anything, use the default library path according
-# to the aix ld manual.
-AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
-[AC_REQUIRE([LT_AC_PROG_SED])dnl
-AC_LINK_IFELSE(AC_LANG_PROGRAM,[
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi],[])
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-])# _LT_AC_SYS_LIBPATH_AIX
-
-
-# _LT_AC_SHELL_INIT(ARG)
-# ----------------------
-AC_DEFUN([_LT_AC_SHELL_INIT],
-[ifdef([AC_DIVERSION_NOTICE],
-	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
-	 [AC_DIVERT_PUSH(NOTICE)])
-$1
-AC_DIVERT_POP
-])# _LT_AC_SHELL_INIT
-
-
-# _LT_AC_PROG_ECHO_BACKSLASH
-# --------------------------
-# Add some code to the start of the generated configure script which
-# will find an echo command which doesn't interpret backslashes.
-AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
-[_LT_AC_SHELL_INIT([
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$ECHO in
-X*--fallback-echo)
-  # Remove one level of quotation (which was required for Make).
-  ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
-  ;;
-esac
-
-echo=${ECHO-echo}
-if test "X[$]1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X[$]1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
-  # Yippee, $echo works!
-  :
-else
-  # Restart under the correct shell.
-  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
-fi
-
-if test "X[$]1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<EOF
-[$]*
-EOF
-  exit 0
-fi
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test -z "$ECHO"; then
-if test "X${echo_test_string+set}" != Xset; then
-# find a string as large as possible, as long as the shell can cope with it
-  for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
-    # expected sizes: less than 2kB, 1kB, 512 bytes, 16 bytes, ...
-    if (echo_test_string=`eval $cmd`) 2>/dev/null &&
-       echo_test_string=`eval $cmd` &&
-       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
-    then
-      break
-    fi
-  done
-fi
-
-if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
-   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
-   test "X$echo_testing_string" = "X$echo_test_string"; then
-  :
-else
-  # The Solaris, AIX, and Digital Unix default echo programs unquote
-  # backslashes.  This makes it impossible to quote backslashes using
-  #   echo "$something" | sed 's/\\/\\\\/g'
-  #
-  # So, first we look for a working echo in the user's PATH.
-
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for dir in $PATH /usr/ucb; do
-    IFS="$lt_save_ifs"
-    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-       test "X$echo_testing_string" = "X$echo_test_string"; then
-      echo="$dir/echo"
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-
-  if test "X$echo" = Xecho; then
-    # We didn't find a better echo, so look for alternatives.
-    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
-       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
-       test "X$echo_testing_string" = "X$echo_test_string"; then
-      # This shell has a builtin print -r that does the trick.
-      echo='print -r'
-    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
-	 test "X$CONFIG_SHELL" != X/bin/ksh; then
-      # If we have ksh, try running configure again with it.
-      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-      export ORIGINAL_CONFIG_SHELL
-      CONFIG_SHELL=/bin/ksh
-      export CONFIG_SHELL
-      exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
-    else
-      # Try using printf.
-      echo='printf %s\n'
-      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
-	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
-	 test "X$echo_testing_string" = "X$echo_test_string"; then
-	# Cool, printf works
-	:
-      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-	   test "X$echo_testing_string" = 'X\t' &&
-	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	   test "X$echo_testing_string" = "X$echo_test_string"; then
-	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-	export CONFIG_SHELL
-	SHELL="$CONFIG_SHELL"
-	export SHELL
-	echo="$CONFIG_SHELL [$]0 --fallback-echo"
-      elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-	   test "X$echo_testing_string" = 'X\t' &&
-	   echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	   test "X$echo_testing_string" = "X$echo_test_string"; then
-	echo="$CONFIG_SHELL [$]0 --fallback-echo"
-      else
-	# maybe with a smaller string...
-	prev=:
-
-	for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
-	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
-	  then
-	    break
-	  fi
-	  prev="$cmd"
-	done
-
-	if test "$prev" != 'sed 50q "[$]0"'; then
-	  echo_test_string=`eval $prev`
-	  export echo_test_string
-	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
-	else
-	  # Oops.  We lost completely, so just stick with echo.
-	  echo=echo
-	fi
-      fi
-    fi
-  fi
-fi
-fi
-
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-ECHO=$echo
-if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
-   ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
-fi
-
-AC_SUBST(ECHO)
-])])# _LT_AC_PROG_ECHO_BACKSLASH
-
-
-# _LT_AC_LOCK
-# -----------
-AC_DEFUN([_LT_AC_LOCK],
-[AC_ARG_ENABLE([libtool-lock],
-    [AC_HELP_STRING([--disable-libtool-lock],
-	[avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.$ac_objext` in
-    *ELF-32*)
-      HPUX_IA64_MODE="32"
-      ;;
-    *ELF-64*)
-      HPUX_IA64_MODE="64"
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-   if test "$lt_cv_prog_gnu_ld" = yes; then
-    case `/usr/bin/file conftest.$ac_objext` in
-    *32-bit*)
-      LD="${LD-ld} -melf32bsmip"
-      ;;
-    *N32*)
-      LD="${LD-ld} -melf32bmipn32"
-      ;;
-    *64-bit*)
-      LD="${LD-ld} -melf64bmip"
-      ;;
-    esac
-   else
-    case `/usr/bin/file conftest.$ac_objext` in
-    *32-bit*)
-      LD="${LD-ld} -32"
-      ;;
-    *N32*)
-      LD="${LD-ld} -n32"
-      ;;
-    *64-bit*)
-      LD="${LD-ld} -64"
-      ;;
-    esac
-   fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-    *32-bit*)
-      case $host in
-        x86_64-*kfreebsd*-gnu)
-          LD="${LD-ld} -m elf_i386_fbsd"
-          ;;
-        x86_64-*linux*)
-          LD="${LD-ld} -m elf_i386"
-          ;;
-        ppc64-*linux*|powerpc64-*linux*)
-          LD="${LD-ld} -m elf32ppclinux"
-          ;;
-        s390x-*linux*)
-          LD="${LD-ld} -m elf_s390"
-          ;;
-        sparc64-*linux*)
-          LD="${LD-ld} -m elf32_sparc"
-          ;;
-      esac
-      ;;
-    *64-bit*)
-      case $host in
-        x86_64-*kfreebsd*-gnu)
-          LD="${LD-ld} -m elf_x86_64_fbsd"
-          ;;
-        x86_64-*linux*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        ppc*-*linux*|powerpc*-*linux*)
-          LD="${LD-ld} -m elf64ppc"
-          ;;
-        s390*-*linux*)
-          LD="${LD-ld} -m elf64_s390"
-          ;;
-        sparc*-*linux*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-    [AC_LANG_PUSH(C)
-     AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-     AC_LANG_POP])
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-sparc*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)
-        if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
-[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
-  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
-  AC_CHECK_TOOL(AS, as, false)
-  AC_CHECK_TOOL(OBJDUMP, objdump, false)
-  ;;
-  ])
-esac
-
-need_locks="$enable_libtool_lock"
-
-])# _LT_AC_LOCK
-
-
-# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
-# ----------------------------------------------------------------
-# Check whether the given compiler option works
-AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
-[AC_REQUIRE([LT_AC_PROG_SED])
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-  ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$3"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       $2=yes
-     fi
-   fi
-   $rm conftest*
-])
-
-if test x"[$]$2" = xyes; then
-    ifelse([$5], , :, [$5])
-else
-    ifelse([$6], , :, [$6])
-fi
-])# AC_LIBTOOL_COMPILER_OPTION
-
-
-# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
-#                          [ACTION-SUCCESS], [ACTION-FAILURE])
-# ------------------------------------------------------------
-# Check whether the given compiler option works
-AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
-[AC_REQUIRE([LT_AC_PROG_SED])dnl
-AC_CACHE_CHECK([$1], [$2],
-  [$2=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $3"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         $2=yes
-       fi
-     else
-       $2=yes
-     fi
-   fi
-   $rm -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-])
-
-if test x"[$]$2" = xyes; then
-    ifelse([$4], , :, [$4])
-else
-    ifelse([$5], , :, [$5])
-fi
-])# AC_LIBTOOL_LINKER_OPTION
-
-
-# AC_LIBTOOL_SYS_MAX_CMD_LEN
-# --------------------------
-AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
-[# find the maximum length of command line arguments
-AC_MSG_CHECKING([the maximum length of command line arguments])
-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
-  i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ 	]]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
-	       = "XX$teststring") >/dev/null 2>&1 &&
-	      new_result=`expr "X$teststring" : ".*" 2>&1` &&
-	      lt_cv_sys_max_cmd_len=$new_result &&
-	      test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on massive
-      # amounts of additional arguments before passing them to the linker.
-      # It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
-    ;;
-  esac
-])
-if test -n $lt_cv_sys_max_cmd_len ; then
-  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
-else
-  AC_MSG_RESULT(none)
-fi
-])# AC_LIBTOOL_SYS_MAX_CMD_LEN
-
-
-# _LT_AC_CHECK_DLFCN
-# ------------------
-AC_DEFUN([_LT_AC_CHECK_DLFCN],
-[AC_CHECK_HEADERS(dlfcn.h)dnl
-])# _LT_AC_CHECK_DLFCN
-
-
-# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-#                           ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-# ---------------------------------------------------------------------
-AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
-[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
-if test "$cross_compiling" = yes; then :
-  [$4]
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<EOF
-[#line __oline__ "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-#ifdef __cplusplus
-extern "C" void exit (int);
-#endif
-
-void fnord() { int i=42;}
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-    exit (status);
-}]
-EOF
-  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) $1 ;;
-      x$lt_dlneed_uscore) $2 ;;
-      x$lt_dlunknown|x*) $3 ;;
-    esac
-  else :
-    # compilation failed
-    $3
-  fi
-fi
-rm -fr conftest*
-])# _LT_AC_TRY_DLOPEN_SELF
-
-
-# AC_LIBTOOL_DLOPEN_SELF
-# ----------------------
-AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
-[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
-if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-   ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-   ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ])
-   ;;
-
-  *)
-    AC_CHECK_FUNC([shl_load],
-	  [lt_cv_dlopen="shl_load"],
-      [AC_CHECK_LIB([dld], [shl_load],
-	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
-	[AC_CHECK_FUNC([dlopen],
-	      [lt_cv_dlopen="dlopen"],
-	  [AC_CHECK_LIB([dl], [dlopen],
-		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
-	    [AC_CHECK_LIB([svld], [dlopen],
-		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
-	      [AC_CHECK_LIB([dld], [dld_link],
-		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
-	      ])
-	    ])
-	  ])
-	])
-      ])
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    AC_CACHE_CHECK([whether a program can dlopen itself],
-	  lt_cv_dlopen_self, [dnl
-	  _LT_AC_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
-	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
-    ])
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
-    	  lt_cv_dlopen_self_static, [dnl
-	  _LT_AC_TRY_DLOPEN_SELF(
-	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
-	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
-      ])
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-])# AC_LIBTOOL_DLOPEN_SELF
-
-
-# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
-# ---------------------------------
-# Check to see if options -c and -o are simultaneously supported by compiler
-AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
-[AC_REQUIRE([LT_AC_PROG_SED])dnl
-AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
-  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
-  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
-   $rm -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-     fi
-   fi
-   chmod u+w . 2>&AS_MESSAGE_LOG_FD
-   $rm conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-   $rm out/* && rmdir out
-   cd ..
-   rmdir conftest
-   $rm conftest*
-])
-])# AC_LIBTOOL_PROG_CC_C_O
-
-
-# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
-# -----------------------------------------
-# Check to see if we can do hard links to lock some files if needed
-AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
-[AC_REQUIRE([_LT_AC_LOCK])dnl
-
-hard_links="nottested"
-if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  AC_MSG_CHECKING([if we can lock with hard links])
-  hard_links=yes
-  $rm conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  AC_MSG_RESULT([$hard_links])
-  if test "$hard_links" = no; then
-    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
-
-
-# AC_LIBTOOL_OBJDIR
-# -----------------
-AC_DEFUN([AC_LIBTOOL_OBJDIR],
-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
-[rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null])
-objdir=$lt_cv_objdir
-])# AC_LIBTOOL_OBJDIR
-
-
-# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
-# ----------------------------------------------
-# Check hardcoding attributes.
-AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
-[AC_MSG_CHECKING([how to hardcode library paths into programs])
-_LT_AC_TAGVAR(hardcode_action, $1)=
-if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
-   test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
-   test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
-
-  # We can hardcode non-existant directories.
-  if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
-     test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
-    # Linking always hardcodes the temporary library directory.
-    _LT_AC_TAGVAR(hardcode_action, $1)=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    _LT_AC_TAGVAR(hardcode_action, $1)=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
-fi
-AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
-
-if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
-
-
-# AC_LIBTOOL_SYS_LIB_STRIP
-# ------------------------
-AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
-[striplib=
-old_striplib=
-AC_MSG_CHECKING([whether stripping libraries is possible])
-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  AC_MSG_RESULT([yes])
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-   darwin*)
-       if test -n "$STRIP" ; then
-         striplib="$STRIP -x"
-         old_striplib="$STRIP -S"
-         AC_MSG_RESULT([yes])
-       else
-  AC_MSG_RESULT([no])
-fi
-       ;;
-   *)
-  AC_MSG_RESULT([no])
-    ;;
-  esac
-fi
-])# AC_LIBTOOL_SYS_LIB_STRIP
-
-
-# AC_LIBTOOL_SYS_DYNAMIC_LINKER
-# -----------------------------
-# PORTME Fill in your ld.so characteristics
-AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
-[AC_REQUIRE([LT_AC_PROG_SED])dnl
-AC_MSG_CHECKING([dynamic linker characteristics])
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-m4_if($1,[],[
-if test "$GCC" = yes; then
-  case $host_os in
-    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
-    *) lt_awk_arg="/^libraries:/" ;;
-  esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    lt_search_path_spec=`echo "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
-  # Ok, now we have the path, separated by spaces, we can step through it
-  # and add multilib dir if necessary.
-  lt_tmp_lt_search_path_spec=
-  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
-  for lt_sys_path in $lt_search_path_spec; do
-    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
-      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
-    else
-      test -d "$lt_sys_path" && \
-	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
-    fi
-  done
-  lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk '
-BEGIN {RS=" "; FS="/|\n";} {
-  lt_foo="";
-  lt_count=0;
-  for (lt_i = NF; lt_i > 0; lt_i--) {
-    if ($lt_i != "" && $lt_i != ".") {
-      if ($lt_i == "..") {
-        lt_count++;
-      } else {
-        if (lt_count == 0) {
-          lt_foo="/" $lt_i lt_foo;
-        } else {
-          lt_count--;
-        }
-      }
-    }
-  }
-  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
-  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
-}'`
-  sys_lib_search_path_spec=`echo $lt_search_path_spec`
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi])
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[[4-9]]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[[01]] | aix4.[[01]].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  library_names_spec='$libname.ixlibrary $libname.a'
-  # Create ${libname}_ixlibrary.a entries in /sys/libs.
-  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[[45]]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32*)
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $rm \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-      ;;
-    mingw*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    ;;
-
-  *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    ;;
-  esac
-  dynamic_linker='Win32 ld.exe'
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-  m4_if([$1], [],[
-  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) 
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[[123]]*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
-  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-   hppa*64*)
-     shrext_cmds='.sl'
-     hardcode_into_libs=yes
-     dynamic_linker="$host_os dld.sl"
-     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-     soname_spec='${libname}${release}${shared_ext}$major'
-     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-     ;;
-   *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
-  postinstall_cmds='chmod 555 $lib'
-  ;;
-
-interix[[3-9]]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ 	]*hwcap[ 	]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-nto-qnx*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-    *)                         need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[[89]] | openbsd2.[[89]].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      export_dynamic_flag_spec='${wl}-Blargedynsym'
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-    shlibpath_overrides_runpath=no
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    shlibpath_overrides_runpath=yes
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-AC_MSG_RESULT([$dynamic_linker])
-test "$dynamic_linker" = no && can_build_shared=no
-
-AC_CACHE_VAL([lt_cv_sys_lib_search_path_spec],
-[lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"])
-sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-AC_CACHE_VAL([lt_cv_sys_lib_dlsearch_path_spec],
-[lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"])
-sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
-
-
-# _LT_AC_TAGCONFIG
-# ----------------
-AC_DEFUN([_LT_AC_TAGCONFIG],
-[AC_REQUIRE([LT_AC_PROG_SED])dnl
-AC_ARG_WITH([tags],
-    [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
-        [include additional configurations @<:@automatic@:>@])],
-    [tagnames="$withval"])
-
-if test -f "$ltmain" && test -n "$tagnames"; then
-  if test ! -f "${ofile}"; then
-    AC_MSG_WARN([output file `$ofile' does not exist])
-  fi
-
-  if test -z "$LTCC"; then
-    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
-    if test -z "$LTCC"; then
-      AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
-    else
-      AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
-    fi
-  fi
-  if test -z "$LTCFLAGS"; then
-    eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
-  fi
-
-  # Extract list of available tagged configurations in $ofile.
-  # Note that this assumes the entire list is on one line.
-  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
-
-  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-  for tagname in $tagnames; do
-    IFS="$lt_save_ifs"
-    # Check whether tagname contains only valid characters
-    case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
-    "") ;;
-    *)  AC_MSG_ERROR([invalid tag name: $tagname])
-	;;
-    esac
-
-    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
-    then
-      AC_MSG_ERROR([tag name \"$tagname\" already exists])
-    fi
-
-    # Update the list of available tags.
-    if test -n "$tagname"; then
-      echo appending configuration tag \"$tagname\" to $ofile
-
-      case $tagname in
-      CXX)
-	if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-	    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-	    (test "X$CXX" != "Xg++"))) ; then
-	  AC_LIBTOOL_LANG_CXX_CONFIG
-	else
-	  tagname=""
-	fi
-	;;
-
-      F77)
-	if test -n "$F77" && test "X$F77" != "Xno"; then
-	  AC_LIBTOOL_LANG_F77_CONFIG
-	else
-	  tagname=""
-	fi
-	;;
-
-      GCJ)
-	if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
-	  AC_LIBTOOL_LANG_GCJ_CONFIG
-	else
-	  tagname=""
-	fi
-	;;
-
-      RC)
-	AC_LIBTOOL_LANG_RC_CONFIG
-	;;
-
-      *)
-	AC_MSG_ERROR([Unsupported tag name: $tagname])
-	;;
-      esac
-
-      # Append the new tag name to the list of available tags.
-      if test -n "$tagname" ; then
-      available_tags="$available_tags $tagname"
-    fi
-    fi
-  done
-  IFS="$lt_save_ifs"
-
-  # Now substitute the updated list of available tags.
-  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
-    mv "${ofile}T" "$ofile"
-    chmod +x "$ofile"
-  else
-    rm -f "${ofile}T"
-    AC_MSG_ERROR([unable to update list of available tagged configurations.])
-  fi
-fi
-])# _LT_AC_TAGCONFIG
-
-
-# AC_LIBTOOL_DLOPEN
-# -----------------
-# enable checks for dlopen support
-AC_DEFUN([AC_LIBTOOL_DLOPEN],
- [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
-])# AC_LIBTOOL_DLOPEN
-
-
-# AC_LIBTOOL_WIN32_DLL
-# --------------------
-# declare package support for building win32 DLLs
-AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
-[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
-])# AC_LIBTOOL_WIN32_DLL
-
-
-# AC_ENABLE_SHARED([DEFAULT])
-# ---------------------------
-# implement the --enable-shared flag
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-AC_DEFUN([AC_ENABLE_SHARED],
-[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE([shared],
-    [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
-	[build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_shared=]AC_ENABLE_SHARED_DEFAULT)
-])# AC_ENABLE_SHARED
-
-
-# AC_DISABLE_SHARED
-# -----------------
-# set the default shared flag to --disable-shared
-AC_DEFUN([AC_DISABLE_SHARED],
-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_SHARED(no)
-])# AC_DISABLE_SHARED
-
-
-# AC_ENABLE_STATIC([DEFAULT])
-# ---------------------------
-# implement the --enable-static flag
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-AC_DEFUN([AC_ENABLE_STATIC],
-[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE([static],
-    [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
-	[build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_static=]AC_ENABLE_STATIC_DEFAULT)
-])# AC_ENABLE_STATIC
-
-
-# AC_DISABLE_STATIC
-# -----------------
-# set the default static flag to --disable-static
-AC_DEFUN([AC_DISABLE_STATIC],
-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_STATIC(no)
-])# AC_DISABLE_STATIC
-
-
-# AC_ENABLE_FAST_INSTALL([DEFAULT])
-# ---------------------------------
-# implement the --enable-fast-install flag
-# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
-AC_DEFUN([AC_ENABLE_FAST_INSTALL],
-[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE([fast-install],
-    [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
-    [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
-    [p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac],
-    [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT)
-])# AC_ENABLE_FAST_INSTALL
-
-
-# AC_DISABLE_FAST_INSTALL
-# -----------------------
-# set the default to --disable-fast-install
-AC_DEFUN([AC_DISABLE_FAST_INSTALL],
-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_FAST_INSTALL(no)
-])# AC_DISABLE_FAST_INSTALL
-
-
-# AC_LIBTOOL_PICMODE([MODE])
-# --------------------------
-# implement the --with-pic flag
-# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
-AC_DEFUN([AC_LIBTOOL_PICMODE],
-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-pic_mode=ifelse($#,1,$1,default)
-])# AC_LIBTOOL_PICMODE
-
-
-# AC_PROG_EGREP
-# -------------
-# This is predefined starting with Autoconf 2.54, so this conditional
-# definition can be removed once we require Autoconf 2.54 or later.
-m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
-[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
-   [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
-    then ac_cv_prog_egrep='grep -E'
-    else ac_cv_prog_egrep='egrep'
-    fi])
- EGREP=$ac_cv_prog_egrep
- AC_SUBST([EGREP])
-])])
-
-
-# AC_PATH_TOOL_PREFIX
-# -------------------
-# find a file program which can recognize shared library
-AC_DEFUN([AC_PATH_TOOL_PREFIX],
-[AC_REQUIRE([AC_PROG_EGREP])dnl
-AC_MSG_CHECKING([for $1])
-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
-[case $MAGIC_CMD in
-[[\\/*] |  ?:[\\/]*])
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-dnl $ac_dummy forces splitting on constant user-supplied paths.
-dnl POSIX.2 word splitting is done only on the output of word expansions,
-dnl not every word.  This closes a longstanding sh security hole.
-  ac_dummy="ifelse([$2], , $PATH, [$2])"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$1; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
-      if test -n "$file_magic_test_file"; then
-	case $deplibs_check_method in
-	"file_magic "*)
-	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-	    $EGREP "$file_magic_regex" > /dev/null; then
-	    :
-	  else
-	    cat <<EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac])
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  AC_MSG_RESULT($MAGIC_CMD)
-else
-  AC_MSG_RESULT(no)
-fi
-])# AC_PATH_TOOL_PREFIX
-
-
-# AC_PATH_MAGIC
-# -------------
-# find a file program which can recognize a shared library
-AC_DEFUN([AC_PATH_MAGIC],
-[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
-  else
-    MAGIC_CMD=:
-  fi
-fi
-])# AC_PATH_MAGIC
-
-
-# AC_PROG_LD
-# ----------
-# find the pathname to the GNU or non-GNU linker
-AC_DEFUN([AC_PROG_LD],
-[AC_ARG_WITH([gnu-ld],
-    [AC_HELP_STRING([--with-gnu-ld],
-	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
-    [test "$withval" = no || with_gnu_ld=yes],
-    [with_gnu_ld=no])
-AC_REQUIRE([LT_AC_PROG_SED])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  AC_MSG_CHECKING([for ld used by $CC])
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [[\\/]]* | ?:[[\\/]]*)
-      re_direlt='/[[^/]][[^/]]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
-      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  AC_MSG_CHECKING([for GNU ld])
-else
-  AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(lt_cv_path_LD,
-[if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  AC_MSG_RESULT($LD)
-else
-  AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_PROG_LD_GNU
-])# AC_PROG_LD
-
-
-# AC_PROG_LD_GNU
-# --------------
-AC_DEFUN([AC_PROG_LD_GNU],
-[AC_REQUIRE([AC_PROG_EGREP])dnl
-AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac])
-with_gnu_ld=$lt_cv_prog_gnu_ld
-])# AC_PROG_LD_GNU
-
-
-# AC_PROG_LD_RELOAD_FLAG
-# ----------------------
-# find reload flag for linker
-#   -- PORTME Some linkers may need a different reload flag.
-AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
-[AC_CACHE_CHECK([for $LD option to reload object files],
-  lt_cv_ld_reload_flag,
-  [lt_cv_ld_reload_flag='-r'])
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-])# AC_PROG_LD_RELOAD_FLAG
-
-
-# AC_DEPLIBS_CHECK_METHOD
-# -----------------------
-# how to check for library dependencies
-#  -- PORTME fill in with the dynamic library characteristics
-AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
-[AC_CACHE_CHECK([how to recognize dependent libraries],
-lt_cv_deplibs_check_method,
-[lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[[4-9]]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[[45]]*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  if ( file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[[3-9]]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd*)
-  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-nto-qnx*)
-  lt_cv_deplibs_check_method=unknown
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-])
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-])# AC_DEPLIBS_CHECK_METHOD
-
-
-# AC_PROG_NM
-# ----------
-# find the pathname to a BSD-compatible name lister
-AC_DEFUN([AC_PROG_NM],
-[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
-[if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
-fi])
-NM="$lt_cv_path_NM"
-])# AC_PROG_NM
-
-
-# AC_CHECK_LIBM
-# -------------
-# check for math library
-AC_DEFUN([AC_CHECK_LIBM],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case $host in
-*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
-  # These system don't have libm, or don't need it
-  ;;
-*-ncr-sysv4.3*)
-  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
-  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
-  ;;
-*)
-  AC_CHECK_LIB(m, cos, LIBM="-lm")
-  ;;
-esac
-])# AC_CHECK_LIBM
-
-
-# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
-# -----------------------------------
-# sets LIBLTDL to the link flags for the libltdl convenience library and
-# LTDLINCL to the include flags for the libltdl header and adds
-# --enable-ltdl-convenience to the configure arguments.  Note that
-# AC_CONFIG_SUBDIRS is not called here.  If DIRECTORY is not provided,
-# it is assumed to be `libltdl'.  LIBLTDL will be prefixed with
-# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
-# (note the single quotes!).  If your package is not flat and you're not
-# using automake, define top_builddir and top_srcdir appropriately in
-# the Makefiles.
-AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-  case $enable_ltdl_convenience in
-  no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
-  "") enable_ltdl_convenience=yes
-      ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
-  esac
-  LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
-  LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
-  # For backwards non-gettext consistent compatibility...
-  INCLTDL="$LTDLINCL"
-])# AC_LIBLTDL_CONVENIENCE
-
-
-# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
-# -----------------------------------
-# sets LIBLTDL to the link flags for the libltdl installable library and
-# LTDLINCL to the include flags for the libltdl header and adds
-# --enable-ltdl-install to the configure arguments.  Note that
-# AC_CONFIG_SUBDIRS is not called here.  If DIRECTORY is not provided,
-# and an installed libltdl is not found, it is assumed to be `libltdl'.
-# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with
-# '${top_srcdir}/' (note the single quotes!).  If your package is not
-# flat and you're not using automake, define top_builddir and top_srcdir
-# appropriately in the Makefiles.
-# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
-AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-  AC_CHECK_LIB(ltdl, lt_dlinit,
-  [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
-  [if test x"$enable_ltdl_install" = xno; then
-     AC_MSG_WARN([libltdl not installed, but installation disabled])
-   else
-     enable_ltdl_install=yes
-   fi
-  ])
-  if test x"$enable_ltdl_install" = x"yes"; then
-    ac_configure_args="$ac_configure_args --enable-ltdl-install"
-    LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
-    LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
-  else
-    ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
-    LIBLTDL="-lltdl"
-    LTDLINCL=
-  fi
-  # For backwards non-gettext consistent compatibility...
-  INCLTDL="$LTDLINCL"
-])# AC_LIBLTDL_INSTALLABLE
-
-
-# AC_LIBTOOL_CXX
-# --------------
-# enable support for C++ libraries
-AC_DEFUN([AC_LIBTOOL_CXX],
-[AC_REQUIRE([_LT_AC_LANG_CXX])
-])# AC_LIBTOOL_CXX
-
-
-# _LT_AC_LANG_CXX
-# ---------------
-AC_DEFUN([_LT_AC_LANG_CXX],
-[AC_REQUIRE([AC_PROG_CXX])
-AC_REQUIRE([_LT_AC_PROG_CXXCPP])
-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
-])# _LT_AC_LANG_CXX
-
-# _LT_AC_PROG_CXXCPP
-# ------------------
-AC_DEFUN([_LT_AC_PROG_CXXCPP],
-[
-AC_REQUIRE([AC_PROG_CXX])
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  AC_PROG_CXXCPP
-fi
-])# _LT_AC_PROG_CXXCPP
-
-# AC_LIBTOOL_F77
-# --------------
-# enable support for Fortran 77 libraries
-AC_DEFUN([AC_LIBTOOL_F77],
-[AC_REQUIRE([_LT_AC_LANG_F77])
-])# AC_LIBTOOL_F77
-
-
-# _LT_AC_LANG_F77
-# ---------------
-AC_DEFUN([_LT_AC_LANG_F77],
-[AC_REQUIRE([AC_PROG_F77])
-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
-])# _LT_AC_LANG_F77
-
-
-# AC_LIBTOOL_GCJ
-# --------------
-# enable support for GCJ libraries
-AC_DEFUN([AC_LIBTOOL_GCJ],
-[AC_REQUIRE([_LT_AC_LANG_GCJ])
-])# AC_LIBTOOL_GCJ
-
-
-# _LT_AC_LANG_GCJ
-# ---------------
-AC_DEFUN([_LT_AC_LANG_GCJ],
-[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
-  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
-    [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
-      [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
-	 [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
-	   [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
-])# _LT_AC_LANG_GCJ
-
-
-# AC_LIBTOOL_RC
-# -------------
-# enable support for Windows resource files
-AC_DEFUN([AC_LIBTOOL_RC],
-[AC_REQUIRE([LT_AC_PROG_RC])
-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
-])# AC_LIBTOOL_RC
-
-
-# AC_LIBTOOL_LANG_C_CONFIG
-# ------------------------
-# Ensure that the configuration vars for the C compiler are
-# suitably defined.  Those variables are subsequently used by
-# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
-AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
-AC_DEFUN([_LT_AC_LANG_C_CONFIG],
-[lt_save_CC="$CC"
-AC_LANG_PUSH(C)
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-_LT_AC_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}'
-
-_LT_AC_SYS_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
-AC_LIBTOOL_PROG_COMPILER_PIC($1)
-AC_LIBTOOL_PROG_CC_C_O($1)
-AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
-AC_LIBTOOL_PROG_LD_SHLIBS($1)
-AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
-AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
-AC_LIBTOOL_SYS_LIB_STRIP
-AC_LIBTOOL_DLOPEN_SELF
-
-# Report which library types will actually be built
-AC_MSG_CHECKING([if libtool supports shared libraries])
-AC_MSG_RESULT([$can_build_shared])
-
-AC_MSG_CHECKING([whether to build shared libraries])
-test "$can_build_shared" = "no" && enable_shared=no
-
-# On AIX, shared libraries and static libraries use the same namespace, and
-# are all built from PIC.
-case $host_os in
-aix3*)
-  test "$enable_shared" = yes && enable_static=no
-  if test -n "$RANLIB"; then
-    archive_cmds="$archive_cmds~\$RANLIB \$lib"
-    postinstall_cmds='$RANLIB $lib'
-  fi
-  ;;
-
-aix[[4-9]]*)
-  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-    test "$enable_shared" = yes && enable_static=no
-  fi
-    ;;
-esac
-AC_MSG_RESULT([$enable_shared])
-
-AC_MSG_CHECKING([whether to build static libraries])
-# Make sure either enable_shared or enable_static is yes.
-test "$enable_shared" = yes || enable_static=yes
-AC_MSG_RESULT([$enable_static])
-
-AC_LIBTOOL_CONFIG($1)
-
-AC_LANG_POP
-CC="$lt_save_CC"
-])# AC_LIBTOOL_LANG_C_CONFIG
-
-
-# AC_LIBTOOL_LANG_CXX_CONFIG
-# --------------------------
-# Ensure that the configuration vars for the C compiler are
-# suitably defined.  Those variables are subsequently used by
-# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
-AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
-AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
-[AC_LANG_PUSH(C++)
-AC_REQUIRE([AC_PROG_CXX])
-AC_REQUIRE([_LT_AC_PROG_CXXCPP])
-
-_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_AC_TAGVAR(allow_undefined_flag, $1)=
-_LT_AC_TAGVAR(always_export_symbols, $1)=no
-_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
-_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_AC_TAGVAR(hardcode_direct, $1)=no
-_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
-_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-_LT_AC_TAGVAR(hardcode_automatic, $1)=no
-_LT_AC_TAGVAR(module_cmds, $1)=
-_LT_AC_TAGVAR(module_expsym_cmds, $1)=
-_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_AC_TAGVAR(no_undefined_flag, $1)=
-_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Dependencies to place before and after the object being linked:
-_LT_AC_TAGVAR(predep_objects, $1)=
-_LT_AC_TAGVAR(postdep_objects, $1)=
-_LT_AC_TAGVAR(predeps, $1)=
-_LT_AC_TAGVAR(postdeps, $1)=
-_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
-_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)=
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-_LT_AC_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_AC_SYS_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_LD=$LD
-lt_save_GCC=$GCC
-GCC=$GXX
-lt_save_with_gnu_ld=$with_gnu_ld
-lt_save_path_LD=$lt_cv_path_LD
-if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-else
-  $as_unset lt_cv_prog_gnu_ld
-fi
-if test -n "${lt_cv_path_LDCXX+set}"; then
-  lt_cv_path_LD=$lt_cv_path_LDCXX
-else
-  $as_unset lt_cv_path_LD
-fi
-test -z "${LDCXX+set}" || LD=$LDCXX
-CC=${CXX-"c++"}
-compiler=$CC
-_LT_AC_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-
-# We don't want -fno-exception wen compiling C++ code, so set the
-# no_builtin_flag separately
-if test "$GXX" = yes; then
-  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-else
-  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-fi
-
-if test "$GXX" = yes; then
-  # Set up default GNU C++ configuration
-
-  AC_PROG_LD
-
-  # Check if GNU C++ uses GNU ld as the underlying linker, since the
-  # archiving commands below assume that GNU ld is being used.
-  if test "$with_gnu_ld" = yes; then
-    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-    #     investigate it a little bit more. (MM)
-    wlarc='${wl}'
-
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
-	grep 'no-whole-archive' > /dev/null; then
-      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-  else
-    with_gnu_ld=no
-    wlarc=
-
-    # A generic and very simple default shared library creation
-    # command for GNU C++ for the case where it uses the native
-    # linker, instead of GNU ld.  If possible, this setting should
-    # overridden to take advantage of the native linker features on
-    # the platform it is being used on.
-    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-  fi
-
-  # Commands to make compiler produce verbose output that lists
-  # what "hidden" libraries, object files and flags are used when
-  # linking a shared library.
-  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-
-else
-  GXX=no
-  with_gnu_ld=no
-  wlarc=
-fi
-
-# PORTME: fill in a description of your system's C++ link characteristics
-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-_LT_AC_TAGVAR(ld_shlibs, $1)=yes
-case $host_os in
-  aix3*)
-    # FIXME: insert proper C++ library support
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    ;;
-  aix[[4-9]]*)
-    if test "$host_cpu" = ia64; then
-      # On IA64, the linker does run time linking by default, so we don't
-      # have to do anything special.
-      aix_use_runtimelinking=no
-      exp_sym_flag='-Bexport'
-      no_entry_flag=""
-    else
-      aix_use_runtimelinking=no
-
-      # Test if we are trying to use run time linking or normal
-      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-      # need to do runtime linking.
-      case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-	for ld_flag in $LDFLAGS; do
-	  case $ld_flag in
-	  *-brtl*)
-	    aix_use_runtimelinking=yes
-	    break
-	    ;;
-	  esac
-	done
-	;;
-      esac
-
-      exp_sym_flag='-bexport'
-      no_entry_flag='-bnoentry'
-    fi
-
-    # When large executables or shared objects are built, AIX ld can
-    # have problems creating the table of contents.  If linking a library
-    # or program results in "error TOC overflow" add -mminimal-toc to
-    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-    _LT_AC_TAGVAR(archive_cmds, $1)=''
-    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
-    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-
-    if test "$GXX" = yes; then
-      case $host_os in aix4.[[012]]|aix4.[[012]].*)
-      # We only want to do this on AIX 4.2 and lower, the check
-      # below for broken collect2 doesn't work under 4.3+
-	collect2name=`${CC} -print-prog-name=collect2`
-	if test -f "$collect2name" && \
-	   strings "$collect2name" | grep resolve_lib_name >/dev/null
-	then
-	  # We have reworked collect2
-	  :
-	else
-	  # We have old collect2
-	  _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-	fi
-	;;
-      esac
-      shared_flag='-shared'
-      if test "$aix_use_runtimelinking" = yes; then
-	shared_flag="$shared_flag "'${wl}-G'
-      fi
-    else
-      # not using gcc
-      if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	shared_flag='-G'
-      else
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag='${wl}-G'
-	else
-	  shared_flag='${wl}-bM:SRE'
-	fi
-      fi
-    fi
-
-    # It seems that -bexpall does not export symbols beginning with
-    # underscore (_), so it is better to generate a list of symbols to export.
-    _LT_AC_TAGVAR(always_export_symbols, $1)=yes
-    if test "$aix_use_runtimelinking" = yes; then
-      # Warning - without using the other runtime loading flags (-brtl),
-      # -berok will link without error, but may produce a broken library.
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
-      # Determine the default libpath from the value encoded in an empty executable.
-      _LT_AC_SYS_LIBPATH_AIX
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-     else
-      if test "$host_cpu" = ia64; then
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-	_LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-      else
-	# Determine the default libpath from the value encoded in an empty executable.
-	_LT_AC_SYS_LIBPATH_AIX
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	# Warning - without using the other run time loading flags,
-	# -berok will link without error, but may produce a broken library.
-	_LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	# Exported symbols can be pulled into shared objects from archives
-	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
-	# This is similar to how AIX traditionally builds its shared libraries.
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-      fi
-    fi
-    ;;
-
-  beos*)
-    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-      # support --undefined.  This deserves some investigation.  FIXME
-      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-    else
-      _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    fi
-    ;;
-
-  chorus*)
-    case $cc_basename in
-      *)
-	# FIXME: insert proper C++ library support
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	;;
-    esac
-    ;;
-
-  cygwin* | mingw* | pw32*)
-    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-    # as there is no search path for DLLs.
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-    _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-    _LT_AC_TAGVAR(always_export_symbols, $1)=no
-    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-
-    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      # If the export-symbols file already is a .def file (1st line
-      # is EXPORTS), use it as is; otherwise, prepend...
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	cp $export_symbols $output_objdir/$soname.def;
-      else
-	echo EXPORTS > $output_objdir/$soname.def;
-	cat $export_symbols >> $output_objdir/$soname.def;
-      fi~
-      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-    else
-      _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    fi
-  ;;
-      darwin* | rhapsody*)
-      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_AC_TAGVAR(hardcode_direct, $1)=no
-      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
-      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
-      if test "$GXX" = yes ; then
-      output_verbose_link_cmd='echo'
-      _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-      _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-      _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-      if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-        _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-        _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
-      fi
-      else
-      case $cc_basename in
-        xlc*)
-         output_verbose_link_cmd='echo'
-          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
-          _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          ;;
-       *)
-         _LT_AC_TAGVAR(ld_shlibs, $1)=no
-          ;;
-      esac
-      fi
-        ;;
-
-  dgux*)
-    case $cc_basename in
-      ec++*)
-	# FIXME: insert proper C++ library support
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	;;
-      ghcx*)
-	# Green Hills C++ Compiler
-	# FIXME: insert proper C++ library support
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	;;
-      *)
-	# FIXME: insert proper C++ library support
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	;;
-    esac
-    ;;
-  freebsd[[12]]*)
-    # C++ shared libraries reported to be fairly broken before switch to ELF
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    ;;
-  freebsd-elf*)
-    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-    ;;
-  freebsd* | dragonfly*)
-    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-    # conventions
-    _LT_AC_TAGVAR(ld_shlibs, $1)=yes
-    ;;
-  gnu*)
-    ;;
-  hpux9*)
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-    _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-				# but as the default
-				# location of the library.
-
-    case $cc_basename in
-    CC*)
-      # FIXME: insert proper C++ library support
-      _LT_AC_TAGVAR(ld_shlibs, $1)=no
-      ;;
-    aCC*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      #
-      # There doesn't appear to be a way to prevent this compiler from
-      # explicitly linking system object files so we need to strip them
-      # from the output so that they don't get included in the library
-      # dependencies.
-      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-      ;;
-    *)
-      if test "$GXX" = yes; then
-        _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-        # FIXME: insert proper C++ library support
-        _LT_AC_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-    esac
-    ;;
-  hpux10*|hpux11*)
-    if test $with_gnu_ld = no; then
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-      case $host_cpu in
-      hppa*64*|ia64*) ;;
-      *)
-	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-        ;;
-      esac
-    fi
-    case $host_cpu in
-    hppa*64*|ia64*)
-      _LT_AC_TAGVAR(hardcode_direct, $1)=no
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-    *)
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-					      # but as the default
-					      # location of the library.
-      ;;
-    esac
-
-    case $cc_basename in
-      CC*)
-	# FIXME: insert proper C++ library support
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	;;
-      aCC*)
-	case $host_cpu in
-	hppa*64*)
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	  ;;
-	*)
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	  ;;
-	esac
-	# Commands to make compiler produce verbose output that lists
-	# what "hidden" libraries, object files and flags are used when
-	# linking a shared library.
-	#
-	# There doesn't appear to be a way to prevent this compiler from
-	# explicitly linking system object files so we need to strip them
-	# from the output so that they don't get included in the library
-	# dependencies.
-	output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-	;;
-      *)
-	if test "$GXX" = yes; then
-	  if test $with_gnu_ld = no; then
-	    case $host_cpu in
-	    hppa*64*)
-	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      ;;
-	    ia64*)
-	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      ;;
-	    *)
-	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      ;;
-	    esac
-	  fi
-	else
-	  # FIXME: insert proper C++ library support
-	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-    esac
-    ;;
-  interix[[3-9]]*)
-    _LT_AC_TAGVAR(hardcode_direct, $1)=no
-    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-    # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-    # Instead, shared libraries are loaded at an image base (0x10000000 by
-    # default) and relocated if they conflict, which is a slow very memory
-    # consuming and fragmenting process.  To avoid this, we pick a random,
-    # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-    # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-    ;;
-  irix5* | irix6*)
-    case $cc_basename in
-      CC*)
-	# SGI C++
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-
-	# Archives containing C++ object files must be created using
-	# "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-	# necessary to make sure instantiated templates are included
-	# in the archive.
-	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
-	;;
-      *)
-	if test "$GXX" = yes; then
-	  if test "$with_gnu_ld" = no; then
-	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	  else
-	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
-	  fi
-	fi
-	_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-	;;
-    esac
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-    ;;
-  linux* | k*bsd*-gnu)
-    case $cc_basename in
-      KCC*)
-	# Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	# KCC will only create a shared library if the output file
-	# ends with ".so" (or ".sl" for HP-UX), so rename the library
-	# to its proper name (with version) after linking.
-	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-	# Commands to make compiler produce verbose output that lists
-	# what "hidden" libraries, object files and flags are used when
-	# linking a shared library.
-	#
-	# There doesn't appear to be a way to prevent this compiler from
-	# explicitly linking system object files so we need to strip them
-	# from the output so that they don't get included in the library
-	# dependencies.
-	output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
-	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-	# Archives containing C++ object files must be created using
-	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
-	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-	;;
-      icpc*)
-	# Intel C++
-	with_gnu_ld=yes
-	# version 8.0 and above of icpc choke on multiply defined symbols
-	# if we add $predep_objects and $postdep_objects, however 7.1 and
-	# earlier do not add the objects themselves.
-	case `$CC -V 2>&1` in
-	*"Version 7."*)
-  	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-  	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  ;;
-	*)  # Version 8.0 or newer
-	  tmp_idyn=
-	  case $host_cpu in
-	    ia64*) tmp_idyn=' -i_dynamic';;
-	  esac
-  	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  ;;
-	esac
-	_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	;;
-      pgCC* | pgcpp*)
-        # Portland Group C++ compiler
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-  	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-        ;;
-      cxx*)
-	# Compaq C++
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
-	runpath_var=LD_RUN_PATH
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	# Commands to make compiler produce verbose output that lists
-	# what "hidden" libraries, object files and flags are used when
-	# linking a shared library.
-	#
-	# There doesn't appear to be a way to prevent this compiler from
-	# explicitly linking system object files so we need to strip them
-	# from the output so that they don't get included in the library
-	# dependencies.
-	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)
-	  # Sun C++ 5.9
-	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
-	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-
-	  # Not sure whether something based on
-	  # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
-	  # would be better.
-	  output_verbose_link_cmd='echo'
-
-	  # Archives containing C++ object files must be created using
-	  # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	  # necessary to make sure instantiated templates are included
-	  # in the archive.
-	  _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-	  ;;
-	esac
-	;;
-    esac
-    ;;
-  lynxos*)
-    # FIXME: insert proper C++ library support
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    ;;
-  m88k*)
-    # FIXME: insert proper C++ library support
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    ;;
-  mvs*)
-    case $cc_basename in
-      cxx*)
-	# FIXME: insert proper C++ library support
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	;;
-      *)
-	# FIXME: insert proper C++ library support
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	;;
-    esac
-    ;;
-  netbsd*)
-    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-      wlarc=
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-    fi
-    # Workaround some broken pre-1.5 toolchains
-    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-    ;;
-  openbsd2*)
-    # C++ shared libraries are fairly broken
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    ;;
-  openbsd*)
-    if test -f /usr/libexec/ld.so; then
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-      fi
-      output_verbose_link_cmd='echo'
-    else
-      _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    fi
-    ;;
-  osf3*)
-    case $cc_basename in
-      KCC*)
-	# Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	# KCC will only create a shared library if the output file
-	# ends with ".so" (or ".sl" for HP-UX), so rename the library
-	# to its proper name (with version) after linking.
-	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	# Archives containing C++ object files must be created using
-	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
-	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-
-	;;
-      RCC*)
-	# Rational C++ 2.4.1
-	# FIXME: insert proper C++ library support
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	;;
-      cxx*)
-	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	# Commands to make compiler produce verbose output that lists
-	# what "hidden" libraries, object files and flags are used when
-	# linking a shared library.
-	#
-	# There doesn't appear to be a way to prevent this compiler from
-	# explicitly linking system object files so we need to strip them
-	# from the output so that they don't get included in the library
-	# dependencies.
-	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-	;;
-      *)
-	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-
-	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	  # Commands to make compiler produce verbose output that lists
-	  # what "hidden" libraries, object files and flags are used when
-	  # linking a shared library.
-	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-
-	else
-	  # FIXME: insert proper C++ library support
-	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-    esac
-    ;;
-  osf4* | osf5*)
-    case $cc_basename in
-      KCC*)
-	# Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	# KCC will only create a shared library if the output file
-	# ends with ".so" (or ".sl" for HP-UX), so rename the library
-	# to its proper name (with version) after linking.
-	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	# Archives containing C++ object files must be created using
-	# the KAI C++ compiler.
-	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
-	;;
-      RCC*)
-	# Rational C++ 2.4.1
-	# FIXME: insert proper C++ library support
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	;;
-      cxx*)
-	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	  echo "-hidden">> $lib.exp~
-	  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version	$verstring` -update_registry ${output_objdir}/so_locations -o $lib~
-	  $rm $lib.exp'
-
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	# Commands to make compiler produce verbose output that lists
-	# what "hidden" libraries, object files and flags are used when
-	# linking a shared library.
-	#
-	# There doesn't appear to be a way to prevent this compiler from
-	# explicitly linking system object files so we need to strip them
-	# from the output so that they don't get included in the library
-	# dependencies.
-	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-	;;
-      *)
-	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	 _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-
-	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	  # Commands to make compiler produce verbose output that lists
-	  # what "hidden" libraries, object files and flags are used when
-	  # linking a shared library.
-	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-
-	else
-	  # FIXME: insert proper C++ library support
-	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
-	fi
-	;;
-    esac
-    ;;
-  psos*)
-    # FIXME: insert proper C++ library support
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    ;;
-  sunos4*)
-    case $cc_basename in
-      CC*)
-	# Sun C++ 4.x
-	# FIXME: insert proper C++ library support
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	;;
-      lcc*)
-	# Lucid
-	# FIXME: insert proper C++ library support
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	;;
-      *)
-	# FIXME: insert proper C++ library support
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	;;
-    esac
-    ;;
-  solaris*)
-    case $cc_basename in
-      CC*)
-	# Sun C++ 4.2, 5.x and Centerline C++
-        _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
-	_LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-	$CC -G${allow_undefined_flag}  ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-	case $host_os in
-	  solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-	  *)
-	    # The compiler driver will combine and reorder linker options,
-	    # but understands `-z linker_flag'.
-	    # Supported since Solaris 2.6 (maybe 2.5.1?)
-	    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-	    ;;
-	esac
-	_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-
-	output_verbose_link_cmd='echo'
-
-	# Archives containing C++ object files must be created using
-	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	# necessary to make sure instantiated templates are included
-	# in the archive.
-	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-	;;
-      gcx*)
-	# Green Hills C++ Compiler
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
-	# The C++ compiler must be used to create the archive.
-	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-	;;
-      *)
-	# GNU C++ compiler with Solaris linker
-	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
-	  if $CC --version | grep -v '^2\.7' > /dev/null; then
-	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-		$CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
-	  else
-	    # g++ 2.7 appears to require `-G' NOT `-shared' on this
-	    # platform.
-	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-		$CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
-	  fi
-
-	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
-	  case $host_os in
-	  solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-	  *)
-	    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	    ;;
-	  esac
-	fi
-	;;
-    esac
-    ;;
-  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-    _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-    runpath_var='LD_RUN_PATH'
-
-    case $cc_basename in
-      CC*)
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	;;
-      *)
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	;;
-    esac
-    ;;
-  sysv5* | sco3.2v5* | sco5v6*)
-    # Note: We can NOT use -z defs as we might desire, because we do not
-    # link with -lc, and that would cause any symbols used from libc to
-    # always be unresolved, which means just about no library would
-    # ever link correctly.  If we're not using GNU ld we use -z text
-    # though, which does catch some bad symbols but isn't as heavy-handed
-    # as -z defs.
-    # For security reasons, it is highly recommended that you always
-    # use absolute paths for naming shared libraries, and exclude the
-    # DT_RUNPATH tag from executables and libraries.  But doing so
-    # requires that you compile everything twice, which is a pain.
-    # So that behaviour is only enabled if SCOABSPATH is set to a
-    # non-empty value in the environment.  Most likely only useful for
-    # creating official distributions of packages.
-    # This is a hack until libtool officially supports absolute path
-    # names for shared libraries.
-    _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-    _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
-    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
-    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-    runpath_var='LD_RUN_PATH'
-
-    case $cc_basename in
-      CC*)
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	;;
-      *)
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	;;
-    esac
-    ;;
-  tandem*)
-    case $cc_basename in
-      NCC*)
-	# NonStop-UX NCC 3.20
-	# FIXME: insert proper C++ library support
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	;;
-      *)
-	# FIXME: insert proper C++ library support
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	;;
-    esac
-    ;;
-  vxworks*)
-    # FIXME: insert proper C++ library support
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    ;;
-  *)
-    # FIXME: insert proper C++ library support
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    ;;
-esac
-AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
-test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-_LT_AC_TAGVAR(GCC, $1)="$GXX"
-_LT_AC_TAGVAR(LD, $1)="$LD"
-
-AC_LIBTOOL_POSTDEP_PREDEP($1)
-AC_LIBTOOL_PROG_COMPILER_PIC($1)
-AC_LIBTOOL_PROG_CC_C_O($1)
-AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
-AC_LIBTOOL_PROG_LD_SHLIBS($1)
-AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
-AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
-
-AC_LIBTOOL_CONFIG($1)
-
-AC_LANG_POP
-CC=$lt_save_CC
-LDCXX=$LD
-LD=$lt_save_LD
-GCC=$lt_save_GCC
-with_gnu_ldcxx=$with_gnu_ld
-with_gnu_ld=$lt_save_with_gnu_ld
-lt_cv_path_LDCXX=$lt_cv_path_LD
-lt_cv_path_LD=$lt_save_path_LD
-lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-])# AC_LIBTOOL_LANG_CXX_CONFIG
-
-# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
-# ------------------------------------
-# Figure out "hidden" library dependencies from verbose
-# compiler output when linking a shared library.
-# Parse the compiler output and extract the necessary
-# objects, libraries and library flags.
-AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],
-[AC_REQUIRE([LT_AC_PROG_SED])dnl
-dnl we can't use the lt_simple_compile_test_code here,
-dnl because it contains code intended for an executable,
-dnl not a library.  It's possible we should let each
-dnl tag define a new lt_????_link_test_code variable,
-dnl but it's only used here...
-ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
-int a;
-void foo (void) { a = 0; }
-EOF
-],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-EOF
-],[$1],[F77],[cat > conftest.$ac_ext <<EOF
-      subroutine foo
-      implicit none
-      integer*4 a
-      a=0
-      return
-      end
-EOF
-],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
-public class foo {
-  private int a;
-  public void bar (void) {
-    a = 0;
-  }
-};
-EOF
-])
-dnl Parse the compiler output and extract the necessary
-dnl objects, libraries and library flags.
-if AC_TRY_EVAL(ac_compile); then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  # The `*' in the case matches for architectures that use `case' in
-  # $output_verbose_cmd can trigger glob expansion during the loop
-  # eval without this substitution.
-  output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
-
-  for p in `eval $output_verbose_link_cmd`; do
-    case $p in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" \
-	  || test $p = "-R"; then
-	 prev=$p
-	 continue
-       else
-	 prev=
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 case $p in
-	 -L* | -R*)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
-	     _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
-	   else
-	     _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
-	   _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
-	 else
-	   _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
-	 fi
-       fi
-       ;;
-
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
-	   _LT_AC_TAGVAR(predep_objects, $1)="$p"
-	 else
-	   _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
-	 fi
-       else
-	 if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
-	   _LT_AC_TAGVAR(postdep_objects, $1)="$p"
-	 else
-	   _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling $1 test program"
-fi
-
-$rm -f confest.$objext
-
-_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)=
-if test -n "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
-  _LT_AC_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_AC_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-
-# PORTME: override above test on systems where it is broken
-ifelse([$1],[CXX],
-[case $host_os in
-interix[[3-9]]*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  _LT_AC_TAGVAR(predep_objects,$1)=
-  _LT_AC_TAGVAR(postdep_objects,$1)=
-  _LT_AC_TAGVAR(postdeps,$1)=
-  ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-    #
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-esac
-])
-case " $_LT_AC_TAGVAR(postdeps, $1) " in
-*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
-esac
-])# AC_LIBTOOL_POSTDEP_PREDEP
-
-# AC_LIBTOOL_LANG_F77_CONFIG
-# --------------------------
-# Ensure that the configuration vars for the C compiler are
-# suitably defined.  Those variables are subsequently used by
-# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
-AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
-AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
-[AC_REQUIRE([AC_PROG_F77])
-AC_LANG_PUSH(Fortran 77)
-
-_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_AC_TAGVAR(allow_undefined_flag, $1)=
-_LT_AC_TAGVAR(always_export_symbols, $1)=no
-_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
-_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_AC_TAGVAR(hardcode_direct, $1)=no
-_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
-_LT_AC_TAGVAR(hardcode_automatic, $1)=no
-_LT_AC_TAGVAR(module_cmds, $1)=
-_LT_AC_TAGVAR(module_expsym_cmds, $1)=
-_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
-_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-_LT_AC_TAGVAR(no_undefined_flag, $1)=
-_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-_LT_AC_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="\
-      program t
-      end
-"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_AC_SYS_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-CC=${F77-"f77"}
-compiler=$CC
-_LT_AC_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-
-AC_MSG_CHECKING([if libtool supports shared libraries])
-AC_MSG_RESULT([$can_build_shared])
-
-AC_MSG_CHECKING([whether to build shared libraries])
-test "$can_build_shared" = "no" && enable_shared=no
-
-# On AIX, shared libraries and static libraries use the same namespace, and
-# are all built from PIC.
-case $host_os in
-aix3*)
-  test "$enable_shared" = yes && enable_static=no
-  if test -n "$RANLIB"; then
-    archive_cmds="$archive_cmds~\$RANLIB \$lib"
-    postinstall_cmds='$RANLIB $lib'
-  fi
-  ;;
-aix[[4-9]]*)
-  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-    test "$enable_shared" = yes && enable_static=no
-  fi
-  ;;
-esac
-AC_MSG_RESULT([$enable_shared])
-
-AC_MSG_CHECKING([whether to build static libraries])
-# Make sure either enable_shared or enable_static is yes.
-test "$enable_shared" = yes || enable_static=yes
-AC_MSG_RESULT([$enable_static])
-
-_LT_AC_TAGVAR(GCC, $1)="$G77"
-_LT_AC_TAGVAR(LD, $1)="$LD"
-
-AC_LIBTOOL_PROG_COMPILER_PIC($1)
-AC_LIBTOOL_PROG_CC_C_O($1)
-AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
-AC_LIBTOOL_PROG_LD_SHLIBS($1)
-AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
-AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
-
-AC_LIBTOOL_CONFIG($1)
-
-AC_LANG_POP
-CC="$lt_save_CC"
-])# AC_LIBTOOL_LANG_F77_CONFIG
-
-
-# AC_LIBTOOL_LANG_GCJ_CONFIG
-# --------------------------
-# Ensure that the configuration vars for the C compiler are
-# suitably defined.  Those variables are subsequently used by
-# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
-AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
-AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
-[AC_LANG_SAVE
-
-# Source file extension for Java test sources.
-ac_ext=java
-
-# Object file extension for compiled Java test sources.
-objext=o
-_LT_AC_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_AC_SYS_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-CC=${GCJ-"gcj"}
-compiler=$CC
-_LT_AC_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-
-# GCJ did not exist at the time GCC didn't implicitly link libc in.
-_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-
-AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
-AC_LIBTOOL_PROG_COMPILER_PIC($1)
-AC_LIBTOOL_PROG_CC_C_O($1)
-AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
-AC_LIBTOOL_PROG_LD_SHLIBS($1)
-AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
-AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
-
-AC_LIBTOOL_CONFIG($1)
-
-AC_LANG_RESTORE
-CC="$lt_save_CC"
-])# AC_LIBTOOL_LANG_GCJ_CONFIG
-
-
-# AC_LIBTOOL_LANG_RC_CONFIG
-# -------------------------
-# Ensure that the configuration vars for the Windows resource compiler are
-# suitably defined.  Those variables are subsequently used by
-# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
-AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
-AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
-[AC_LANG_SAVE
-
-# Source file extension for RC test sources.
-ac_ext=rc
-
-# Object file extension for compiled RC test sources.
-objext=o
-_LT_AC_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_AC_SYS_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-CC=${RC-"windres"}
-compiler=$CC
-_LT_AC_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-
-AC_LIBTOOL_CONFIG($1)
-
-AC_LANG_RESTORE
-CC="$lt_save_CC"
-])# AC_LIBTOOL_LANG_RC_CONFIG
-
-
-# AC_LIBTOOL_CONFIG([TAGNAME])
-# ----------------------------
-# If TAGNAME is not passed, then create an initial libtool script
-# with a default configuration from the untagged config vars.  Otherwise
-# add code to config.status for appending the configuration named by
-# TAGNAME from the matching tagged config vars.
-AC_DEFUN([AC_LIBTOOL_CONFIG],
-[# The else clause should only fire when bootstrapping the
-# libtool distribution, otherwise you forgot to ship ltmain.sh
-# with your package, and you will get complaints that there are
-# no rules to generate ltmain.sh.
-if test -f "$ltmain"; then
-  # See if we are running on zsh, and set the options which allow our commands through
-  # without removal of \ escapes.
-  if test -n "${ZSH_VERSION+set}" ; then
-    setopt NO_GLOB_SUBST
-  fi
-  # Now quote all the things that may contain metacharacters while being
-  # careful not to overquote the AC_SUBSTed values.  We take copies of the
-  # variables and quote the copies for generation of the libtool script.
-  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
-    SED SHELL STRIP \
-    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-    deplibs_check_method reload_flag reload_cmds need_locks \
-    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-    lt_cv_sys_global_symbol_to_c_name_address \
-    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-    old_postinstall_cmds old_postuninstall_cmds \
-    _LT_AC_TAGVAR(compiler, $1) \
-    _LT_AC_TAGVAR(CC, $1) \
-    _LT_AC_TAGVAR(LD, $1) \
-    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
-    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
-    _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
-    _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
-    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
-    _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
-    _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
-    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
-    _LT_AC_TAGVAR(old_archive_cmds, $1) \
-    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
-    _LT_AC_TAGVAR(predep_objects, $1) \
-    _LT_AC_TAGVAR(postdep_objects, $1) \
-    _LT_AC_TAGVAR(predeps, $1) \
-    _LT_AC_TAGVAR(postdeps, $1) \
-    _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
-    _LT_AC_TAGVAR(compiler_lib_search_dirs, $1) \
-    _LT_AC_TAGVAR(archive_cmds, $1) \
-    _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
-    _LT_AC_TAGVAR(postinstall_cmds, $1) \
-    _LT_AC_TAGVAR(postuninstall_cmds, $1) \
-    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
-    _LT_AC_TAGVAR(allow_undefined_flag, $1) \
-    _LT_AC_TAGVAR(no_undefined_flag, $1) \
-    _LT_AC_TAGVAR(export_symbols_cmds, $1) \
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
-    _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
-    _LT_AC_TAGVAR(hardcode_automatic, $1) \
-    _LT_AC_TAGVAR(module_cmds, $1) \
-    _LT_AC_TAGVAR(module_expsym_cmds, $1) \
-    _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
-    _LT_AC_TAGVAR(fix_srcfile_path, $1) \
-    _LT_AC_TAGVAR(exclude_expsyms, $1) \
-    _LT_AC_TAGVAR(include_expsyms, $1); do
-
-    case $var in
-    _LT_AC_TAGVAR(old_archive_cmds, $1) | \
-    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
-    _LT_AC_TAGVAR(archive_cmds, $1) | \
-    _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
-    _LT_AC_TAGVAR(module_cmds, $1) | \
-    _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
-    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
-    _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
-    extract_expsyms_cmds | reload_cmds | finish_cmds | \
-    postinstall_cmds | postuninstall_cmds | \
-    old_postinstall_cmds | old_postuninstall_cmds | \
-    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-      # Double-quote double-evaled strings.
-      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-      ;;
-    *)
-      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-      ;;
-    esac
-  done
-
-  case $lt_echo in
-  *'\[$]0 --fallback-echo"')
-    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
-    ;;
-  esac
-
-ifelse([$1], [],
-  [cfgfile="${ofile}T"
-  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
-  $rm -f "$cfgfile"
-  AC_MSG_NOTICE([creating $ofile])],
-  [cfgfile="$ofile"])
-
-  cat <<__EOF__ >> "$cfgfile"
-ifelse([$1], [],
-[#! $SHELL
-
-# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
-# Free Software Foundation, Inc.
-#
-# This file is part of GNU Libtool:
-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="$SED -e 1s/^X//"
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# The names of the tagged configurations supported by this script.
-available_tags=
-
-# ### BEGIN LIBTOOL CONFIG],
-[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
-
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
-
-# Whether or not to disallow shared libs when runtime libs are static
-allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# An echo program that does not interpret backslashes.
-echo=$lt_echo
-
-# The archiver.
-AR=$lt_AR
-AR_FLAGS=$lt_AR_FLAGS
-
-# A C compiler.
-LTCC=$lt_LTCC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_LTCFLAGS
-
-# A language-specific compiler.
-CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
-
-# Is the compiler the GNU C compiler?
-with_gcc=$_LT_AC_TAGVAR(GCC, $1)
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# The linker used to build libraries.
-LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
-
-# Whether we need hard or soft links.
-LN_S=$lt_LN_S
-
-# A BSD-compatible nm program.
-NM=$lt_NM
-
-# A symbol stripping program
-STRIP=$lt_STRIP
-
-# Used to examine libraries when file_magic_cmd begins "file"
-MAGIC_CMD=$MAGIC_CMD
-
-# Used on cygwin: DLL creation program.
-DLLTOOL="$DLLTOOL"
-
-# Used on cygwin: object dumper.
-OBJDUMP="$OBJDUMP"
-
-# Used on cygwin: assembler.
-AS="$AS"
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# How to pass a linker flag through the compiler.
-wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
-
-# Object file suffix (normally "o").
-objext="$ac_objext"
-
-# Old archive suffix (normally "a").
-libext="$libext"
-
-# Shared library suffix (normally ".so").
-shrext_cmds='$shrext_cmds'
-
-# Executable file suffix (normally "").
-exeext="$exeext"
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
-pic_mode=$pic_mode
-
-# What is the maximum length of a command?
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Do we need the lib prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
-
-# Compiler flag to generate thread-safe objects.
-thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
-
-# Library versioning type.
-version_type=$version_type
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME.
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Commands used to build and install an old-style archive.
-RANLIB=$lt_RANLIB
-old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
-
-# Commands used to build and install a shared archive.
-archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
-archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
-postinstall_cmds=$lt_postinstall_cmds
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to build a loadable module (assumed same as above if empty)
-module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
-module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
-
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
-
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
-
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
-
-# The directories searched by this compiler when creating a shared
-# library
-compiler_lib_search_dirs=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method == file_magic.
-file_magic_cmd=$lt_file_magic_cmd
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
-
-# Flag that forces no undefined symbols.
-no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# Same as above, but a single script fragment to be evaled but not shown.
-finish_eval=$lt_finish_eval
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# This is the shared library runtime path variable.
-runpath_var=$runpath_var
-
-# This is the shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
-
-# If ld is used when linking, flag to hardcode \$libdir into
-# a binary during linking. This must work even if \$libdir does
-# not exist.
-hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
-
-# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
-
-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
-# resulting binary.
-hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
-
-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-# resulting binary.
-hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
-
-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-# the resulting binary.
-hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
-
-# Set to yes if building a shared library automatically hardcodes DIR into the library
-# and all subsequent libraries and executables linked against it.
-hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at relink time.
-variables_saved_for_relink="$variables_saved_for_relink"
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
-
-# Compile-time system search path for libraries
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path
-
-# Set to yes if exported symbols are required.
-always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
-
-# Symbols that must always be exported.
-include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
-
-ifelse([$1],[],
-[# ### END LIBTOOL CONFIG],
-[# ### END LIBTOOL TAG CONFIG: $tagname])
-
-__EOF__
-
-ifelse([$1],[], [
-  case $host_os in
-  aix3*)
-    cat <<\EOF >> "$cfgfile"
-
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-EOF
-    ;;
-  esac
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
-
-  mv -f "$cfgfile" "$ofile" || \
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-])
-else
-  # If there is no Makefile yet, we rely on a make rule to execute
-  # `config.status --recheck' to rerun these tests and create the
-  # libtool script then.
-  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-  if test -f "$ltmain_in"; then
-    test -f Makefile && make "$ltmain"
-  fi
-fi
-])# AC_LIBTOOL_CONFIG
-
-
-# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
-# -------------------------------------------
-AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
-[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
-
-_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-
-if test "$GCC" = yes; then
-  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-
-  AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
-    lt_cv_prog_compiler_rtti_exceptions,
-    [-fno-rtti -fno-exceptions], [],
-    [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
-fi
-])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
-
-
-# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
-# ---------------------------------
-AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
-[AC_REQUIRE([AC_CANONICAL_HOST])
-AC_REQUIRE([LT_AC_PROG_SED])
-AC_REQUIRE([AC_PROG_NM])
-AC_REQUIRE([AC_OBJEXT])
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-AC_MSG_CHECKING([command to parse $NM output from $compiler object])
-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
-[
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[[BCDEGRST]]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-
-# Transform an extracted symbol line into a proper C declaration
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[[BCDT]]'
-  ;;
-cygwin* | mingw* | pw32*)
-  symcode='[[ABCDGISTW]]'
-  ;;
-hpux*) # Its linker distinguishes data from code symbols
-  if test "$host_cpu" = ia64; then
-    symcode='[[ABCDEGRST]]'
-  fi
-  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
-  ;;
-linux* | k*bsd*-gnu)
-  if test "$host_cpu" = ia64; then
-    symcode='[[ABCDGIRSTW]]'
-    lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-    lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[[BCDEGRST]]'
-  ;;
-osf*)
-  symcode='[[BCDEGQRST]]'
-  ;;
-solaris*)
-  symcode='[[BDRT]]'
-  ;;
-sco3.2v5*)
-  symcode='[[DT]]'
-  ;;
-sysv4.2uw2*)
-  symcode='[[DT]]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[[ABDT]]'
-  ;;
-sysv4)
-  symcode='[[DFNSTU]]'
-  ;;
-esac
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[[ABCDGIRSTW]]' ;;
-esac
-
-# Try without a prefix undercore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ 	]]\($symcode$symcode*\)[[ 	]][[ 	]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-EOF
-
-  if AC_TRY_EVAL(ac_compile); then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-	mv -f "$nlist"T "$nlist"
-      else
-	rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if grep ' nm_test_var$' "$nlist" >/dev/null; then
-	if grep ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<EOF > conftest.$ac_ext
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-EOF
-	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
-
-	  cat <<EOF >> conftest.$ac_ext
-#if defined (__STDC__) && __STDC__
-# define lt_ptr_t void *
-#else
-# define lt_ptr_t char *
-# define const
-#endif
-
-/* The mapping between symbol names and symbols. */
-const struct {
-  const char *name;
-  lt_ptr_t address;
-}
-lt_preloaded_symbols[[]] =
-{
-EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
-	  cat <<\EOF >> conftest.$ac_ext
-  {0, (lt_ptr_t) 0}
-};
-
-#ifdef __cplusplus
-}
-#endif
-EOF
-	  # Now try linking the two files.
-	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_save_LIBS="$LIBS"
-	  lt_save_CFLAGS="$CFLAGS"
-	  LIBS="conftstm.$ac_objext"
-	  CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
-	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
-	    pipe_works=yes
-	  fi
-	  LIBS="$lt_save_LIBS"
-	  CFLAGS="$lt_save_CFLAGS"
-	else
-	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
-	fi
-      else
-	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
-      fi
-    else
-      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
-    fi
-  else
-    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
-    cat conftest.$ac_ext >&5
-  fi
-  rm -rf conftest* conftst*
-
-  # Do not use the global_symbol_pipe unless it works.
-  if test "$pipe_works" = yes; then
-    break
-  else
-    lt_cv_sys_global_symbol_pipe=
-  fi
-done
-])
-if test -z "$lt_cv_sys_global_symbol_pipe"; then
-  lt_cv_sys_global_symbol_to_cdecl=
-fi
-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  AC_MSG_RESULT(failed)
-else
-  AC_MSG_RESULT(ok)
-fi
-]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
-
-
-# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
-# ---------------------------------------
-AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
-[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
-_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
-
-AC_MSG_CHECKING([for $compiler option to produce PIC])
- ifelse([$1],[CXX],[
-  # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
-    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-    amigaos*)
-      # FIXME: we need at least 68020 code to build shared libraries, but
-      # adding the `-m68020' flag to GCC prevents building anything better,
-      # like `-m68040'.
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-      ;;
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | cygwin* | os2* | pw32*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-	[_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-      ;;
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	;;
-      *)
-	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	;;
-      esac
-      ;;
-    *)
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix[[4-9]]*)
-	# All AIX code is PIC.
-	if test "$host_cpu" = ia64; then
-	  # AIX 5 now supports IA64 processor
-	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	else
-	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-	fi
-	;;
-      chorus*)
-	case $cc_basename in
-	cxch68*)
-	  # Green Hills C++ Compiler
-	  # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-	  ;;
-	esac
-	;;
-       darwin*)
-         # PIC is the default on this platform
-         # Common symbols not allowed in MH_DYLIB files
-         case $cc_basename in
-           xlc*)
-           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
-           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           ;;
-         esac
-       ;;
-      dgux*)
-	case $cc_basename in
-	  ec++*)
-	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    ;;
-	  ghcx*)
-	    # Green Hills C++ Compiler
-	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      freebsd* | dragonfly*)
-	# FreeBSD uses GNU C++
-	;;
-      hpux9* | hpux10* | hpux11*)
-	case $cc_basename in
-	  CC*)
-	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
-	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	    fi
-	    ;;
-	  aCC*)
-	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-	    case $host_cpu in
-	    hppa*64*|ia64*)
-	      # +Z the default
-	      ;;
-	    *)
-	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	      ;;
-	    esac
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      interix*)
-	# This is c89, which is MS Visual C++ (no shared libs)
-	# Anyone wants to do a port?
-	;;
-      irix5* | irix6* | nonstopux*)
-	case $cc_basename in
-	  CC*)
-	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    # CC pic flag -KPIC is the default.
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      linux* | k*bsd*-gnu)
-	case $cc_basename in
-	  KCC*)
-	    # KAI C++ Compiler
-	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	    ;;
-	  icpc* | ecpc*)
-	    # Intel C++
-	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-	    ;;
-	  pgCC* | pgcpp*)
-	    # Portland Group C++ compiler.
-	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	  cxx*)
-	    # Compaq C++
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-      lynxos*)
-	;;
-      m88k*)
-	;;
-      mvs*)
-	case $cc_basename in
-	  cxx*)
-	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      netbsd*)
-	;;
-      osf3* | osf4* | osf5*)
-	case $cc_basename in
-	  KCC*)
-	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-	    ;;
-	  RCC*)
-	    # Rational C++ 2.4.1
-	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  cxx*)
-	    # Digital/Compaq C++
-	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      psos*)
-	;;
-      solaris*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-	    ;;
-	  gcx*)
-	    # Green Hills C++ Compiler
-	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sunos4*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.x
-	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	  lcc*)
-	    # Lucid
-	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      tandem*)
-	case $cc_basename in
-	  NCC*)
-	    # NonStop-UX NCC 3.20
-	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-	case $cc_basename in
-	  CC*)
-	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	    ;;
-	esac
-	;;
-      vxworks*)
-	;;
-      *)
-	_LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-	;;
-    esac
-  fi
-],
-[
-  if test "$GCC" = yes; then
-    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      # FIXME: we need at least 68020 code to build shared libraries, but
-      # adding the `-m68020' flag to GCC prevents building anything better,
-      # like `-m68040'.
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      m4_if([$1], [GCJ], [],
-	[_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
-      ;;
-
-    interix[[3-9]]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      enable_shared=no
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-
-    hpux*)
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	;;
-      esac
-      ;;
-
-    *)
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      else
-	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-      darwin*)
-        # PIC is the default on this platform
-        # Common symbols not allowed in MH_DYLIB files
-       case $cc_basename in
-         xlc*)
-         _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
-         _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-         ;;
-       esac
-       ;;
-
-    mingw* | cygwin* | pw32* | os2*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      m4_if([$1], [GCJ], [],
-	[_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC (with -KPIC) is the default.
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    newsos6)
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    linux* | k*bsd*-gnu)
-      case $cc_basename in
-      icc* | ecc*)
-	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-        ;;
-      ccc*)
-        _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-        # All Alpha code is PIC.
-        _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-        ;;
-      *)
-        case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)
-	  # Sun C 5.9
-	  _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	  ;;
-	*Sun\ F*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-	  _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=''
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    osf3* | osf4* | osf5*)
-      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # All OSF/1 code is PIC.
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    rdos*)
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    solaris*)
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95*)
-	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
-      *)
-	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
-	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    unicos*)
-      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-
-    uts4*)
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *)
-      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-    esac
-  fi
-])
-AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
-  AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
-    _LT_AC_TAGVAR(lt_cv_prog_compiler_pic_works, $1),
-    [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
-    [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
-     "" | " "*) ;;
-     *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
-     esac],
-    [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-     _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
-fi
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-    ;;
-  *)
-    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
-    ;;
-esac
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
-AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
-  _LT_AC_TAGVAR(lt_cv_prog_compiler_static_works, $1),
-  $lt_tmp_static_flag,
-  [],
-  [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
-])
-
-
-# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
-# ------------------------------------
-# See if the linker supports building shared libraries.
-AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
-[AC_REQUIRE([LT_AC_PROG_SED])dnl
-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-ifelse([$1],[CXX],[
-  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  case $host_os in
-  aix[[4-9]]*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
-    else
-      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
-  ;;
-  cygwin* | mingw*)
-    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-  ;;
-  *)
-    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
-  esac
-  _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-],[
-  runpath_var=
-  _LT_AC_TAGVAR(allow_undefined_flag, $1)=
-  _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-  _LT_AC_TAGVAR(archive_cmds, $1)=
-  _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
-  _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
-  _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
-  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
-  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-  _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
-  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-  _LT_AC_TAGVAR(hardcode_direct, $1)=no
-  _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
-  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
-  _LT_AC_TAGVAR(hardcode_automatic, $1)=no
-  _LT_AC_TAGVAR(module_cmds, $1)=
-  _LT_AC_TAGVAR(module_expsym_cmds, $1)=
-  _LT_AC_TAGVAR(always_export_symbols, $1)=no
-  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  _LT_AC_TAGVAR(include_expsyms, $1)=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-dnl Note also adjust exclude_expsyms for C++ above.
-  extract_expsyms_cmds=
-  # Just being paranoid about ensuring that cc_basename is set.
-  _LT_CC_BASENAME([$compiler])
-  case $host_os in
-  cygwin* | mingw* | pw32*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  _LT_AC_TAGVAR(ld_shlibs, $1)=yes
-  if test "$with_gnu_ld" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
-	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-      else
-  	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>/dev/null` in
-      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[[3-9]]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	cat <<EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-EOF
-      fi
-      ;;
-
-    amigaos*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-
-      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-      # that the semantics of dynamic libraries on AmigaOS, at least up
-      # to version 4, is to share data among multiple programs linked
-      # with the same dynamic library.  Since this doesn't match the
-      # behavior of shared libraries on other platforms, we can't use
-      # them.
-      _LT_AC_TAGVAR(ld_shlibs, $1)=no
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	_LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32*)
-      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-      # as there is no search path for DLLs.
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_AC_TAGVAR(always_export_symbols, $1)=no
-      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
-
-      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    interix[[3-9]]*)
-      _LT_AC_TAGVAR(hardcode_direct, $1)=no
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | k*bsd*-gnu)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	tmp_addflag=
-	case $cc_basename,$host_cpu in
-	pgcc*)				# Portland Group C compiler
-	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
-	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	*)
-	  tmp_sharedflag='-shared' ;;
-	esac
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-	if test $supports_anon_versioning = yes; then
-	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
-  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-  $echo "local: *; };" >> $output_objdir/$libname.ver~
-	  $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-	fi
-      else
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	cat <<EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-EOF
-      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
-	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
-	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
-	  else
-	    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-    esac
-
-    if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
-      runpath_var=
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
-      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
-      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	_LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
-      fi
-      ;;
-
-    aix[[4-9]]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-	  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
-	else
-	  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
-	  for ld_flag in $LDFLAGS; do
-  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-  	    aix_use_runtimelinking=yes
-  	    break
-  	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      _LT_AC_TAGVAR(archive_cmds, $1)=''
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[[012]]|aix4.[[012]].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" && \
-  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
-	  then
-  	  # We have reworked collect2
-  	  :
-	  else
-  	  # We have old collect2
-  	  _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
-  	  # It fails to find uninstalled libraries when the uninstalled
-  	  # path is not listed in the libpath.  Setting hardcode_minus_L
-  	  # to unsupported forces relinking
-  	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-  	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-  	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-  	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	_LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
-       # Determine the default libpath from the value encoded in an empty executable.
-       _LT_AC_SYS_LIBPATH_AIX
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-       else
-	if test "$host_cpu" = ia64; then
-	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-	  _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an empty executable.
-	 _LT_AC_SYS_LIBPATH_AIX
-	 _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	  # Exported symbols can be pulled into shared objects from archives
-	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-      # see comment about different semantics on the GNU ld section
-      _LT_AC_TAGVAR(ld_shlibs, $1)=no
-      ;;
-
-    bsdi[[45]]*)
-      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
-      # FIXME: Should let the user specify the lib program.
-      _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
-      _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
-      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      ;;
-
-    darwin* | rhapsody*)
-      case $host_os in
-        rhapsody* | darwin1.[[012]])
-         _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
-         ;;
-       *) # Darwin 1.3 on
-         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-           _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-         else
-           case ${MACOSX_DEPLOYMENT_TARGET} in
-             10.[[012]])
-               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-               ;;
-             10.*)
-               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
-               ;;
-           esac
-         fi
-         ;;
-      esac
-      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_AC_TAGVAR(hardcode_direct, $1)=no
-      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
-      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-    if test "$GCC" = yes ; then
-    	output_verbose_link_cmd='echo'
-        _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-        _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-        _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-        _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    else
-      case $cc_basename in
-        xlc*)
-         output_verbose_link_cmd='echo'
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
-         _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          ;;
-       *)
-         _LT_AC_TAGVAR(ld_shlibs, $1)=no
-          ;;
-      esac
-    fi
-      ;;
-
-    dgux*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    freebsd1*)
-      _LT_AC_TAGVAR(ld_shlibs, $1)=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	_LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	_LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	_LT_AC_TAGVAR(hardcode_direct, $1)=yes
-	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	_LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
-	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
-	  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-	  ;;
-	*)
-	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-	  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
-      fi
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    newsos6)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	_LT_AC_TAGVAR(hardcode_direct, $1)=yes
-	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-	if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-	     _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-	     ;;
-	   *)
-	     _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-        fi
-      else
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    os2*)
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      else
-	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-      fi
-      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    solaris*)
-      _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
-      else
-	wlarc=''
-	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-      fi
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      case $host_os in
-      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
- 	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
-	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
-        ;;
-	motorola)
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4.3*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	_LT_AC_TAGVAR(ld_shlibs, $1)=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
-      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      _LT_AC_TAGVAR(ld_shlibs, $1)=no
-      ;;
-    esac
-  fi
-])
-AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
-test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
-x|xyes)
-  # Assume -lc should be added
-  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $_LT_AC_TAGVAR(archive_cmds, $1) in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
-      $rm conftest*
-      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
-	pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
-        _LT_AC_TAGVAR(allow_undefined_flag, $1)=
-        if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
-        then
-	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-        else
-	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
-        fi
-        _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $rm conftest*
-      AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
-      ;;
-    esac
-  fi
-  ;;
-esac
-])# AC_LIBTOOL_PROG_LD_SHLIBS
-
-
-# _LT_AC_FILE_LTDLL_C
-# -------------------
-# Be careful that the start marker always follows a newline.
-AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
-# /* ltdll.c starts here */
-# #define WIN32_LEAN_AND_MEAN
-# #include <windows.h>
-# #undef WIN32_LEAN_AND_MEAN
-# #include <stdio.h>
-#
-# #ifndef __CYGWIN__
-# #  ifdef __CYGWIN32__
-# #    define __CYGWIN__ __CYGWIN32__
-# #  endif
-# #endif
-#
-# #ifdef __cplusplus
-# extern "C" {
-# #endif
-# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
-# #ifdef __cplusplus
-# }
-# #endif
-#
-# #ifdef __CYGWIN__
-# #include <cygwin/cygwin_dll.h>
-# DECLARE_CYGWIN_DLL( DllMain );
-# #endif
-# HINSTANCE __hDllInstance_base;
-#
-# BOOL APIENTRY
-# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
-# {
-#   __hDllInstance_base = hInst;
-#   return TRUE;
-# }
-# /* ltdll.c ends here */
-])# _LT_AC_FILE_LTDLL_C
-
-
-# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
-# ---------------------------------
-AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
-
-
-# old names
-AC_DEFUN([AM_PROG_LIBTOOL],   [AC_PROG_LIBTOOL])
-AC_DEFUN([AM_ENABLE_SHARED],  [AC_ENABLE_SHARED($@)])
-AC_DEFUN([AM_ENABLE_STATIC],  [AC_ENABLE_STATIC($@)])
-AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
-AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
-AC_DEFUN([AM_PROG_LD],        [AC_PROG_LD])
-AC_DEFUN([AM_PROG_NM],        [AC_PROG_NM])
-
-# This is just to silence aclocal about the macro not being used
-ifelse([AC_DISABLE_FAST_INSTALL])
-
-AC_DEFUN([LT_AC_PROG_GCJ],
-[AC_CHECK_TOOL(GCJ, gcj, no)
-  test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
-  AC_SUBST(GCJFLAGS)
-])
-
-AC_DEFUN([LT_AC_PROG_RC],
-[AC_CHECK_TOOL(RC, windres, no)
-])
-
-
-# Cheap backport of AS_EXECUTABLE_P and required macros
-# from Autoconf 2.59; we should not use $as_executable_p directly.
-
-# _AS_TEST_PREPARE
-# ----------------
-m4_ifndef([_AS_TEST_PREPARE],
-[m4_defun([_AS_TEST_PREPARE],
-[if test -x / >/dev/null 2>&1; then
-  as_executable_p='test -x'
-else
-  as_executable_p='test -f'
-fi
-])])# _AS_TEST_PREPARE
-
-# AS_EXECUTABLE_P
-# ---------------
-# Check whether a file is executable.
-m4_ifndef([AS_EXECUTABLE_P],
-[m4_defun([AS_EXECUTABLE_P],
-[AS_REQUIRE([_AS_TEST_PREPARE])dnl
-$as_executable_p $1[]dnl
-])])# AS_EXECUTABLE_P
-
-# NOTE: This macro has been submitted for inclusion into   #
-#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
-#  a released version of Autoconf we should remove this    #
-#  macro and use it instead.                               #
-# LT_AC_PROG_SED
-# --------------
-# Check for a fully-functional sed program, that truncates
-# as few characters as possible.  Prefer GNU sed if found.
-AC_DEFUN([LT_AC_PROG_SED],
-[AC_MSG_CHECKING([for a sed that does not truncate output])
-AC_CACHE_VAL(lt_cv_path_SED,
-[# Loop through the user's path and test for sed and gsed.
-# Then use that list of sed's as ones to test for truncation.
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for lt_ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then
-        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
-      fi
-    done
-  done
-done
-IFS=$as_save_IFS
-lt_ac_max=0
-lt_ac_count=0
-# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-# along with /bin/sed that truncates output.
-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-  test ! -f $lt_ac_sed && continue
-  cat /dev/null > conftest.in
-  lt_ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
-  # Check for GNU sed and select it if it is found.
-  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
-    lt_cv_path_SED=$lt_ac_sed
-    break
-  fi
-  while true; do
-    cat conftest.in conftest.in >conftest.tmp
-    mv conftest.tmp conftest.in
-    cp conftest.in conftest.nl
-    echo >>conftest.nl
-    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
-    cmp -s conftest.out conftest.nl || break
-    # 10000 chars as input seems more than enough
-    test $lt_ac_count -gt 10 && break
-    lt_ac_count=`expr $lt_ac_count + 1`
-    if test $lt_ac_count -gt $lt_ac_max; then
-      lt_ac_max=$lt_ac_count
-      lt_cv_path_SED=$lt_ac_sed
-    fi
-  done
-done
-])
-SED=$lt_cv_path_SED
-AC_SUBST([SED])
-AC_MSG_RESULT([$SED])
-])
-
-m4_include([acinclude.m4])
+m4_include([m4/ac_add_search_path.m4])
+m4_include([m4/ac_msg_cache.m4])
+m4_include([m4/ac_msg_module_dbg.m4])
+m4_include([m4/ac_prompt_user.m4])
+m4_include([m4/libtool.m4])
+m4_include([m4/ltoptions.m4])
+m4_include([m4/ltsugar.m4])
+m4_include([m4/ltversion.m4])
+m4_include([m4/lt~obsolete.m4])
+m4_include([m4/netsnmp_arg.m4])
+m4_include([m4/netsnmp_search_libs.m4])
diff --git a/agent/Makefile.depend b/agent/Makefile.depend
index ed6125c..b523fa3 100644
--- a/agent/Makefile.depend
+++ b/agent/Makefile.depend
@@ -5,58 +5,64 @@
 ./agent_handler.lo: ../include/net-snmp/system/sysv.h
 ./agent_handler.lo: ../include/net-snmp/system/generic.h
 ./agent_handler.lo: ../include/net-snmp/machine/generic.h
+./agent_handler.lo: ../include/net-snmp/net-snmp-features.h
 ./agent_handler.lo: ../include/net-snmp/net-snmp-includes.h
 ./agent_handler.lo: ../include/net-snmp/definitions.h
 ./agent_handler.lo: ../include/net-snmp/types.h
+./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
+./agent_handler.lo: ../include/net-snmp/library/snmp_service.h
+./agent_handler.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./agent_handler.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./agent_handler.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./agent_handler.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agent_handler.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agent_handler.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./agent_handler.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./agent_handler.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./agent_handler.lo: ../include/net-snmp/library/ucd_compat.h
+./agent_handler.lo: ../include/net-snmp/library/mib.h
+./agent_handler.lo: ../include/net-snmp/mib_api.h
+./agent_handler.lo: ../include/net-snmp/library/parse.h
+./agent_handler.lo: ../include/net-snmp/library/oid_stash.h
 ./agent_handler.lo: ../include/net-snmp/library/snmp_impl.h
 ./agent_handler.lo: ../include/net-snmp/library/snmp.h
 ./agent_handler.lo: ../include/net-snmp/library/snmp-tc.h
+./agent_handler.lo: ../include/net-snmp/library/getopt.h
 ./agent_handler.lo: ../include/net-snmp/utilities.h
-./agent_handler.lo: ../include/net-snmp/library/snmp_client.h
 ./agent_handler.lo: ../include/net-snmp/library/system.h
 ./agent_handler.lo: ../include/net-snmp/library/tools.h
 ./agent_handler.lo: ../include/net-snmp/library/int64.h
 ./agent_handler.lo: ../include/net-snmp/library/mt_support.h
 ./agent_handler.lo: ../include/net-snmp/library/snmp_alarm.h
-./agent_handler.lo: ../include/net-snmp/library/callback.h
 ./agent_handler.lo: ../include/net-snmp/library/data_list.h
-./agent_handler.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./agent_handler.lo: ../include/net-snmp/library/container.h
 ./agent_handler.lo: ../include/net-snmp/library/snmp_assert.h
 ./agent_handler.lo: ../include/net-snmp/version.h
-./agent_handler.lo: ../include/net-snmp/session_api.h
-./agent_handler.lo: ../include/net-snmp/library/snmp_transport.h
-./agent_handler.lo: ../include/net-snmp/library/snmp_service.h
-./agent_handler.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./agent_handler.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./agent_handler.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./agent_handler.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./agent_handler.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agent_handler.lo: ../include/net-snmp/pdu_api.h
-./agent_handler.lo: ../include/net-snmp/mib_api.h
-./agent_handler.lo: ../include/net-snmp/library/mib.h
-./agent_handler.lo: ../include/net-snmp/library/parse.h
-./agent_handler.lo: ../include/net-snmp/varbind_api.h
 ./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
@@ -65,6 +71,7 @@
 ./agent_handler.lo: ../include/net-snmp/library/lcd_time.h
 ./agent_handler.lo: ../include/net-snmp/library/snmp_secmod.h
 ./agent_handler.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./agent_handler.lo: ../include/net-snmp/library/snmptsm.h
 ./agent_handler.lo: ../include/net-snmp/library/snmpusm.h
 ./agent_handler.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent_handler.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -102,62 +109,65 @@
 ./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-features.h
 ./agent_index.lo: ../include/net-snmp/net-snmp-includes.h
 ./agent_index.lo: ../include/net-snmp/definitions.h
 ./agent_index.lo: ../include/net-snmp/types.h
+./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
+./agent_index.lo: ../include/net-snmp/library/snmp_service.h
+./agent_index.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./agent_index.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./agent_index.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./agent_index.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agent_index.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agent_index.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./agent_index.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./agent_index.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./agent_index.lo: ../include/net-snmp/library/ucd_compat.h
+./agent_index.lo: ../include/net-snmp/library/mib.h
+./agent_index.lo: ../include/net-snmp/mib_api.h
+./agent_index.lo: ../include/net-snmp/library/parse.h
+./agent_index.lo: ../include/net-snmp/library/oid_stash.h
 ./agent_index.lo: ../include/net-snmp/library/snmp_impl.h
 ./agent_index.lo: ../include/net-snmp/library/snmp.h
 ./agent_index.lo: ../include/net-snmp/library/snmp-tc.h
+./agent_index.lo: ../include/net-snmp/library/getopt.h
 ./agent_index.lo: ../include/net-snmp/utilities.h
-./agent_index.lo: ../include/net-snmp/library/snmp_client.h
 ./agent_index.lo: ../include/net-snmp/library/system.h
 ./agent_index.lo: ../include/net-snmp/library/tools.h
 ./agent_index.lo: ../include/net-snmp/library/int64.h
 ./agent_index.lo: ../include/net-snmp/library/mt_support.h
 ./agent_index.lo: ../include/net-snmp/library/snmp_alarm.h
-./agent_index.lo: ../include/net-snmp/library/callback.h
 ./agent_index.lo: ../include/net-snmp/library/data_list.h
-./agent_index.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./agent_index.lo: ../include/net-snmp/library/container.h
 ./agent_index.lo: ../include/net-snmp/library/snmp_assert.h
 ./agent_index.lo: ../include/net-snmp/version.h
-./agent_index.lo: ../include/net-snmp/session_api.h
-./agent_index.lo: ../include/net-snmp/library/snmp_transport.h
-./agent_index.lo: ../include/net-snmp/library/snmp_service.h
-./agent_index.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./agent_index.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./agent_index.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./agent_index.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./agent_index.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agent_index.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./agent_index.lo: ../include/net-snmp/library/mib.h
-./agent_index.lo: ../include/net-snmp/library/parse.h
-./agent_index.lo: ../include/net-snmp/varbind_api.h
 ./agent_index.lo: ../include/net-snmp/config_api.h
 ./agent_index.lo: ../include/net-snmp/library/read_config.h
 ./agent_index.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -166,6 +176,7 @@
 ./agent_index.lo: ../include/net-snmp/library/lcd_time.h
 ./agent_index.lo: ../include/net-snmp/library/snmp_secmod.h
 ./agent_index.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./agent_index.lo: ../include/net-snmp/library/snmptsm.h
 ./agent_index.lo: ../include/net-snmp/library/snmpusm.h
 ./agent_index.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent_index.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -203,67 +214,69 @@
 ./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-features.h
 ./agent_read_config.lo: ../include/net-snmp/net-snmp-includes.h
 ./agent_read_config.lo: ../include/net-snmp/definitions.h
 ./agent_read_config.lo: ../include/net-snmp/types.h
+./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
+./agent_read_config.lo: ../include/net-snmp/library/snmp_service.h
+./agent_read_config.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./agent_read_config.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./agent_read_config.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./agent_read_config.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agent_read_config.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agent_read_config.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./agent_read_config.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./agent_read_config.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./agent_read_config.lo: ../include/net-snmp/library/ucd_compat.h
+./agent_read_config.lo: ../include/net-snmp/library/mib.h
+./agent_read_config.lo: ../include/net-snmp/mib_api.h
+./agent_read_config.lo: ../include/net-snmp/library/parse.h
+./agent_read_config.lo: ../include/net-snmp/library/oid_stash.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmp_impl.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmp.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmp-tc.h
+./agent_read_config.lo: ../include/net-snmp/library/getopt.h
 ./agent_read_config.lo: ../include/net-snmp/utilities.h
-./agent_read_config.lo: ../include/net-snmp/library/snmp_client.h
 ./agent_read_config.lo: ../include/net-snmp/library/system.h
 ./agent_read_config.lo: ../include/net-snmp/library/tools.h
 ./agent_read_config.lo: ../include/net-snmp/library/int64.h
 ./agent_read_config.lo: ../include/net-snmp/library/mt_support.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmp_alarm.h
-./agent_read_config.lo: ../include/net-snmp/library/callback.h
 ./agent_read_config.lo: ../include/net-snmp/library/data_list.h
-./agent_read_config.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./agent_read_config.lo: ../include/net-snmp/library/container.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmp_assert.h
 ./agent_read_config.lo: ../include/net-snmp/version.h
-./agent_read_config.lo: ../include/net-snmp/session_api.h
-./agent_read_config.lo: ../include/net-snmp/library/snmp_transport.h
-./agent_read_config.lo: ../include/net-snmp/library/snmp_service.h
-./agent_read_config.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./agent_read_config.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./agent_read_config.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./agent_read_config.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./agent_read_config.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agent_read_config.lo: ../include/net-snmp/pdu_api.h
-./agent_read_config.lo: ../include/net-snmp/mib_api.h
-./agent_read_config.lo: ../include/net-snmp/library/mib.h
-./agent_read_config.lo: ../include/net-snmp/library/parse.h
-./agent_read_config.lo: ../include/net-snmp/varbind_api.h
 ./agent_read_config.lo: ../include/net-snmp/config_api.h
 ./agent_read_config.lo: ../include/net-snmp/library/read_config.h
 ./agent_read_config.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -272,6 +285,7 @@
 ./agent_read_config.lo: ../include/net-snmp/library/lcd_time.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmp_secmod.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./agent_read_config.lo: ../include/net-snmp/library/snmptsm.h
 ./agent_read_config.lo: ../include/net-snmp/library/snmpusm.h
 ./agent_read_config.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent_read_config.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -308,28 +322,64 @@
 ./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/snmpv3/usmConf.h
-./agent_read_config.lo: mibgroup/utilities/iquery.h
-./agent_read_config.lo: mibgroup/mibII/vacm_conf.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_system.h mibgroup/host/hr_storage.h
-./agent_read_config.lo: mibgroup/host/hr_device.h mibgroup/host/hr_other.h
-./agent_read_config.lo: mibgroup/host/hr_proc.h mibgroup/host/hr_network.h
-./agent_read_config.lo: mibgroup/host/hr_print.h mibgroup/host/hr_disk.h
-./agent_read_config.lo: mibgroup/host/hr_partition.h
-./agent_read_config.lo: mibgroup/host/hr_filesys.h mibgroup/host/hr_swrun.h
-./agent_read_config.lo: mibgroup/host/hr_swinst.h
+./agent_read_config.lo: mibgroup/Rmon/rows.h mibgroup/Rmon/agutil.h
+./agent_read_config.lo: mibgroup/Rmon/statistics.h mibgroup/Rmon/alarmTable.h
+./agent_read_config.lo: mibgroup/Rmon/history.h mibgroup/Rmon/event.h
 ./agent_read_config.lo: mibgroup/examples/scalar_int.h
 ./agent_read_config.lo: mibgroup/examples/watched.h
 ./agent_read_config.lo: mibgroup/examples/data_set.h
 ./agent_read_config.lo: mibgroup/examples/delayed_instance.h
-./agent_read_config.lo: mibgroup/Rmon/rows.h mibgroup/Rmon/agutil.h
-./agent_read_config.lo: mibgroup/Rmon/statistics.h mibgroup/Rmon/alarm.h
-./agent_read_config.lo: mibgroup/Rmon/history.h mibgroup/Rmon/event.h
+./agent_read_config.lo: mibgroup/host/hrh_storage.h
+./agent_read_config.lo: mibgroup/host/hrh_filesys.h
+./agent_read_config.lo: mibgroup/host/hrSWInstalledTable.h
+./agent_read_config.lo: mibgroup/host/hrSWRunTable.h
+./agent_read_config.lo: mibgroup/host/hr_system.h mibgroup/host/hr_device.h
+./agent_read_config.lo: mibgroup/host/hr_other.h mibgroup/host/hr_proc.h
+./agent_read_config.lo: mibgroup/host/hr_network.h mibgroup/host/hr_print.h
+./agent_read_config.lo: mibgroup/host/hr_disk.h mibgroup/host/hr_partition.h
+./agent_read_config.lo: mibgroup/tsm-mib/snmpTsmConfigurationUsePrefix.h
+./agent_read_config.lo: mibgroup/snmpv3/snmpMPDStats_5_5.h
+./agent_read_config.lo: mibgroup/snmpv3/usmStats_5_5.h
+./agent_read_config.lo: mibgroup/snmpv3/snmpEngine.h
+./agent_read_config.lo: mibgroup/snmpv3/usmUser.h
+./agent_read_config.lo: mibgroup/mibII/snmp_mib_5_5.h
+./agent_read_config.lo: mibgroup/mibII/system_mib.h
+./agent_read_config.lo: mibgroup/mibII/sysORTable.h mibgroup/mibII/at.h
+./agent_read_config.lo: mibgroup/mibII/ip.h mibgroup/mibII/var_route.h
+./agent_read_config.lo: mibgroup/mibII/route_write.h mibgroup/mibII/at.h
+./agent_read_config.lo: mibgroup/mibII/tcp.h mibgroup/mibII/icmp.h
+./agent_read_config.lo: mibgroup/mibII/udp.h mibgroup/mibII/vacm_vars.h
+./agent_read_config.lo: mibgroup/mibII/setSerialNo.h mibgroup/mibII/ipv6.h
+./agent_read_config.lo: mibgroup/ucd-snmp/disk_hw.h
+./agent_read_config.lo: ../agent/mibgroup/mibdefs.h mibgroup/ucd-snmp/proc.h
+./agent_read_config.lo: mibgroup/ucd-snmp/versioninfo.h
+./agent_read_config.lo: mibgroup/ucd-snmp/pass.h
+./agent_read_config.lo: mibgroup/ucd-snmp/pass_persist.h
+./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
+./agent_read_config.lo: mibgroup/notification/snmpNotifyFilterProfileTable.h
+./agent_read_config.lo: mibgroup/notification-log-mib/notification_log.h
+./agent_read_config.lo: mibgroup/target/target_counters_5_5.h
+./agent_read_config.lo: mibgroup/target/snmpTargetAddrEntry.h
+./agent_read_config.lo: mibgroup/target/snmpTargetParamsEntry.h
+./agent_read_config.lo: mibgroup/agent/nsTransactionTable.h
+./agent_read_config.lo: mibgroup/agent/nsModuleTable.h
+./agent_read_config.lo: mibgroup/agent/nsDebug.h mibgroup/agent/nsCache.h
+./agent_read_config.lo: mibgroup/agent/nsLogging.h
+./agent_read_config.lo: mibgroup/agent/nsVacmAccessTable.h
 ./agent_read_config.lo: mibgroup/disman/event/mteScalars.h
 ./agent_read_config.lo: mibgroup/disman/event/mteTrigger.h
 ./agent_read_config.lo: mibgroup/disman/event/mteTriggerTable.h
@@ -347,45 +397,18 @@
 ./agent_read_config.lo: mibgroup/disman/event/mteObjects.h
 ./agent_read_config.lo: mibgroup/disman/event/mteObjectsTable.h
 ./agent_read_config.lo: mibgroup/disman/event/mteObjectsConf.h
-./agent_read_config.lo: mibgroup/snmpv3/snmpEngine.h
-./agent_read_config.lo: mibgroup/snmpv3/snmpMPDStats.h
-./agent_read_config.lo: mibgroup/snmpv3/usmStats.h mibgroup/snmpv3/usmUser.h
-./agent_read_config.lo: mibgroup/mibII/system_mib.h
-./agent_read_config.lo: mibgroup/mibII/sysORTable.h mibgroup/mibII/at.h
-./agent_read_config.lo: mibgroup/mibII/ip.h mibgroup/mibII/var_route.h
-./agent_read_config.lo: mibgroup/mibII/route_write.h mibgroup/mibII/at.h
-./agent_read_config.lo: mibgroup/mibII/snmp_mib.h mibgroup/mibII/tcp.h
-./agent_read_config.lo: mibgroup/mibII/icmp.h mibgroup/mibII/udp.h
-./agent_read_config.lo: 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/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/logmatch.h
-./agent_read_config.lo: mibgroup/ucd-snmp/memory.h mibgroup/ucd-snmp/vmstat.h
-./agent_read_config.lo: mibgroup/notification/snmpNotifyTable.h
-./agent_read_config.lo: mibgroup/notification/snmpNotifyFilterProfileTable.h
-./agent_read_config.lo: mibgroup/notification-log-mib/notification_log.h
-./agent_read_config.lo: mibgroup/target/snmpTargetAddrEntry.h
-./agent_read_config.lo: mibgroup/target/snmpTargetParamsEntry.h
-./agent_read_config.lo: mibgroup/target/target_counters.h
-./agent_read_config.lo: mibgroup/agent/nsTransactionTable.h
-./agent_read_config.lo: mibgroup/agent/nsModuleTable.h
-./agent_read_config.lo: mibgroup/agent/nsDebug.h mibgroup/agent/nsCache.h
-./agent_read_config.lo: mibgroup/agent/nsLogging.h
-./agent_read_config.lo: mibgroup/agent/nsVacmAccessTable.h
 ./agent_read_config.lo: mibgroup/disman/schedule/schedCore.h
 ./agent_read_config.lo: mibgroup/disman/schedule/schedConf.h
 ./agent_read_config.lo: mibgroup/disman/schedule/schedTable.h
 ./agent_read_config.lo: mibgroup/utilities/override.h
-./agent_read_config.lo: mibgroup/hardware/memory/hw_mem.h
-./agent_read_config.lo: mibgroup/hardware/cpu/cpu.h
-./agent_read_config.lo: mibgroup/hardware/cpu/cpu_linux.h
+./agent_read_config.lo: mibgroup/host/data_access/swinst.h
+./agent_read_config.lo: mibgroup/host/data_access/swrun.h
+./agent_read_config.lo: mibgroup/host/hrSWRunPerfTable.h
+./agent_read_config.lo: mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.h
+./agent_read_config.lo: mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.h
+./agent_read_config.lo: mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h
+./agent_read_config.lo: mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.h
+./agent_read_config.lo: mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.h
 ./agent_read_config.lo: mibgroup/mibII/var_route.h mibgroup/mibII/tcpTable.h
 ./agent_read_config.lo: mibgroup/mibII/udpTable.h
 ./agent_read_config.lo: mibgroup/mibII/vacm_context.h
@@ -395,6 +418,10 @@
 ./agent_read_config.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.h
 ./agent_read_config.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.h
 ./agent_read_config.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.h
+./agent_read_config.lo: mibgroup/hardware/memory/hw_mem.h
+./agent_read_config.lo: mibgroup/hardware/fsys/hw_fsys.h
+./agent_read_config.lo: mibgroup/hardware/cpu/cpu.h
+./agent_read_config.lo: mibgroup/hardware/cpu/cpu_linux.h
 ./agent_read_config.lo: mibgroup/if-mib/ifTable/ifTable.h
 ./agent_read_config.lo: ../include/net-snmp/data_access/interface.h
 ./agent_read_config.lo: mibgroup/if-mib/ifTable/ifTable_constants.h
@@ -413,6 +440,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
@@ -426,6 +466,20 @@
 ./agent_read_config.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.h
 ./agent_read_config.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h
 ./agent_read_config.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.h
+./agent_read_config.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.h
+./agent_read_config.lo: ../include/net-snmp/data_access/scopezone.h
+./agent_read_config.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_oids.h
+./agent_read_config.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_enums.h
+./agent_read_config.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.h
+./agent_read_config.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.h
+./agent_read_config.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_data_access.h
+./agent_read_config.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.h
+./agent_read_config.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_oids.h
+./agent_read_config.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_enums.h
+./agent_read_config.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.h
+./agent_read_config.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.h
+./agent_read_config.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.h
+./agent_read_config.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.h
 ./agent_read_config.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.h
 ./agent_read_config.lo: ../include/net-snmp/data_access/route.h
 ./agent_read_config.lo: ../agent/mibgroup/mibII/route_headers.h
@@ -458,62 +512,63 @@
 ./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-features.h
 ./agent_registry.lo: ../include/net-snmp/net-snmp-includes.h
 ./agent_registry.lo: ../include/net-snmp/definitions.h
 ./agent_registry.lo: ../include/net-snmp/types.h
+./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
+./agent_registry.lo: ../include/net-snmp/library/snmp_service.h
+./agent_registry.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./agent_registry.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./agent_registry.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./agent_registry.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agent_registry.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agent_registry.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./agent_registry.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./agent_registry.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./agent_registry.lo: ../include/net-snmp/library/ucd_compat.h
+./agent_registry.lo: ../include/net-snmp/library/mib.h
+./agent_registry.lo: ../include/net-snmp/mib_api.h
+./agent_registry.lo: ../include/net-snmp/library/parse.h
+./agent_registry.lo: ../include/net-snmp/library/oid_stash.h
 ./agent_registry.lo: ../include/net-snmp/library/snmp_impl.h
 ./agent_registry.lo: ../include/net-snmp/library/snmp.h
 ./agent_registry.lo: ../include/net-snmp/library/snmp-tc.h
+./agent_registry.lo: ../include/net-snmp/library/getopt.h
 ./agent_registry.lo: ../include/net-snmp/utilities.h
-./agent_registry.lo: ../include/net-snmp/library/snmp_client.h
 ./agent_registry.lo: ../include/net-snmp/library/system.h
 ./agent_registry.lo: ../include/net-snmp/library/tools.h
 ./agent_registry.lo: ../include/net-snmp/library/int64.h
 ./agent_registry.lo: ../include/net-snmp/library/mt_support.h
 ./agent_registry.lo: ../include/net-snmp/library/snmp_alarm.h
-./agent_registry.lo: ../include/net-snmp/library/callback.h
 ./agent_registry.lo: ../include/net-snmp/library/data_list.h
-./agent_registry.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./agent_registry.lo: ../include/net-snmp/library/container.h
 ./agent_registry.lo: ../include/net-snmp/library/snmp_assert.h
 ./agent_registry.lo: ../include/net-snmp/version.h
-./agent_registry.lo: ../include/net-snmp/session_api.h
-./agent_registry.lo: ../include/net-snmp/library/snmp_transport.h
-./agent_registry.lo: ../include/net-snmp/library/snmp_service.h
-./agent_registry.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./agent_registry.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./agent_registry.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./agent_registry.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./agent_registry.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agent_registry.lo: ../include/net-snmp/pdu_api.h
-./agent_registry.lo: ../include/net-snmp/mib_api.h
-./agent_registry.lo: ../include/net-snmp/library/mib.h
-./agent_registry.lo: ../include/net-snmp/library/parse.h
-./agent_registry.lo: ../include/net-snmp/varbind_api.h
 ./agent_registry.lo: ../include/net-snmp/config_api.h
 ./agent_registry.lo: ../include/net-snmp/library/read_config.h
 ./agent_registry.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -522,6 +577,7 @@
 ./agent_registry.lo: ../include/net-snmp/library/lcd_time.h
 ./agent_registry.lo: ../include/net-snmp/library/snmp_secmod.h
 ./agent_registry.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./agent_registry.lo: ../include/net-snmp/library/snmptsm.h
 ./agent_registry.lo: ../include/net-snmp/library/snmpusm.h
 ./agent_registry.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent_registry.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -559,34 +615,161 @@
 ./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/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
+./agent_sysORTable.lo: ../include/net-snmp/library/snmp_service.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./agent_sysORTable.lo: ../include/net-snmp/library/ucd_compat.h
+./agent_sysORTable.lo: ../include/net-snmp/library/mib.h
+./agent_sysORTable.lo: ../include/net-snmp/mib_api.h
+./agent_sysORTable.lo: ../include/net-snmp/library/parse.h
+./agent_sysORTable.lo: ../include/net-snmp/library/oid_stash.h
+./agent_sysORTable.lo: ../include/net-snmp/net-snmp-features.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmp_impl.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmp.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmp-tc.h
+./agent_sysORTable.lo: ../include/net-snmp/library/getopt.h
+./agent_sysORTable.lo: ../include/net-snmp/utilities.h
+./agent_sysORTable.lo: ../include/net-snmp/library/system.h
+./agent_sysORTable.lo: ../include/net-snmp/library/tools.h
+./agent_sysORTable.lo: ../include/net-snmp/library/int64.h
+./agent_sysORTable.lo: ../include/net-snmp/library/mt_support.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmp_alarm.h
+./agent_sysORTable.lo: ../include/net-snmp/library/data_list.h
+./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/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
+./agent_sysORTable.lo: ../include/net-snmp/library/container.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmp_assert.h
+./agent_sysORTable.lo: ../include/net-snmp/version.h
+./agent_sysORTable.lo: ../include/net-snmp/config_api.h
+./agent_sysORTable.lo: ../include/net-snmp/library/read_config.h
+./agent_sysORTable.lo: ../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmpv3.h
+./agent_sysORTable.lo: ../include/net-snmp/library/transform_oids.h
+./agent_sysORTable.lo: ../include/net-snmp/library/keytools.h
+./agent_sysORTable.lo: ../include/net-snmp/library/scapi.h
+./agent_sysORTable.lo: ../include/net-snmp/library/lcd_time.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmp_secmod.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmptsm.h
+./agent_sysORTable.lo: ../include/net-snmp/library/snmpusm.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/mib_module_config.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/agent_module_config.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/snmp_agent.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/snmp_vars.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/agent_handler.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/var_struct.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/agent_registry.h
+./agent_sysORTable.lo: ../include/net-snmp/library/fd_event_manager.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/ds_agent.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/agent_read_config.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/agent_trap.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/all_helpers.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/instance.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/baby_steps.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/scalar.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/scalar_group.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/watcher.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/multiplexer.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/null.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/debug_handler.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/cache_handler.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/old_api.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/read_only.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/row_merge.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/serialize.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/bulk_to_next.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/mode_end_call.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/table.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/table_data.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/table_dataset.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/table_tdata.h
+./agent_sysORTable.lo: ../include/net-snmp/agent/table_iterator.h
+./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/net-snmp-features.h
 ./agent_trap.lo: ../include/net-snmp/utilities.h ../include/net-snmp/types.h
+./agent_trap.lo: ../include/net-snmp/library/oid.h
+./agent_trap.lo: ../include/net-snmp/library/types.h
 ./agent_trap.lo: ../include/net-snmp/definitions.h
 ./agent_trap.lo: ../include/net-snmp/library/snmp_api.h
+./agent_trap.lo: ../include/net-snmp/varbind_api.h
+./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
+./agent_trap.lo: ../include/net-snmp/library/snmp_service.h
+./agent_trap.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./agent_trap.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./agent_trap.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./agent_trap.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agent_trap.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agent_trap.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./agent_trap.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./agent_trap.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./agent_trap.lo: ../include/net-snmp/library/ucd_compat.h
+./agent_trap.lo: ../include/net-snmp/library/mib.h
+./agent_trap.lo: ../include/net-snmp/mib_api.h
+./agent_trap.lo: ../include/net-snmp/library/parse.h
+./agent_trap.lo: ../include/net-snmp/library/oid_stash.h
 ./agent_trap.lo: ../include/net-snmp/library/snmp_impl.h
 ./agent_trap.lo: ../include/net-snmp/library/snmp.h
 ./agent_trap.lo: ../include/net-snmp/library/snmp-tc.h
-./agent_trap.lo: ../include/net-snmp/library/snmp_client.h
 ./agent_trap.lo: ../include/net-snmp/library/system.h
 ./agent_trap.lo: ../include/net-snmp/library/tools.h
 ./agent_trap.lo: ../include/net-snmp/library/int64.h
 ./agent_trap.lo: ../include/net-snmp/library/mt_support.h
 ./agent_trap.lo: ../include/net-snmp/library/snmp_alarm.h
-./agent_trap.lo: ../include/net-snmp/library/callback.h
 ./agent_trap.lo: ../include/net-snmp/library/data_list.h
-./agent_trap.lo: ../include/net-snmp/library/oid_stash.h
 ./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
@@ -594,29 +777,13 @@
 ./agent_trap.lo: ../include/net-snmp/library/snmp_assert.h
 ./agent_trap.lo: ../include/net-snmp/version.h
 ./agent_trap.lo: ../include/net-snmp/net-snmp-includes.h
-./agent_trap.lo: ../include/net-snmp/session_api.h
-./agent_trap.lo: ../include/net-snmp/library/snmp_transport.h
-./agent_trap.lo: ../include/net-snmp/library/snmp_service.h
-./agent_trap.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./agent_trap.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./agent_trap.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./agent_trap.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./agent_trap.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agent_trap.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./agent_trap.lo: ../include/net-snmp/library/mib.h
-./agent_trap.lo: ../include/net-snmp/library/parse.h
-./agent_trap.lo: ../include/net-snmp/varbind_api.h
+./agent_trap.lo: ../include/net-snmp/library/getopt.h
 ./agent_trap.lo: ../include/net-snmp/config_api.h
 ./agent_trap.lo: ../include/net-snmp/library/read_config.h
 ./agent_trap.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -625,81 +792,108 @@
 ./agent_trap.lo: ../include/net-snmp/library/lcd_time.h
 ./agent_trap.lo: ../include/net-snmp/library/snmp_secmod.h
 ./agent_trap.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./agent_trap.lo: ../include/net-snmp/library/snmptsm.h
 ./agent_trap.lo: ../include/net-snmp/library/snmpusm.h
-./agent_trap.lo: ../include/net-snmp/agent/agent_trap.h
-./agent_trap.lo: ../include/net-snmp/agent/snmp_agent.h
-./agent_trap.lo: ../include/net-snmp/agent/agent_callbacks.h
-./agent_trap.lo: ../include/net-snmp/agent/agent_module_config.h
+./agent_trap.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent_trap.lo: ../include/net-snmp/agent/mib_module_config.h
-./agent_trap.lo: ../agent/mibgroup/agentx/protocol.h
+./agent_trap.lo: ../include/net-snmp/agent/agent_module_config.h
+./agent_trap.lo: ../include/net-snmp/agent/snmp_agent.h
+./agent_trap.lo: ../include/net-snmp/agent/snmp_vars.h
+./agent_trap.lo: ../include/net-snmp/agent/agent_handler.h
+./agent_trap.lo: ../include/net-snmp/agent/var_struct.h
+./agent_trap.lo: ../include/net-snmp/agent/agent_registry.h
+./agent_trap.lo: ../include/net-snmp/library/fd_event_manager.h
+./agent_trap.lo: ../include/net-snmp/agent/ds_agent.h
+./agent_trap.lo: ../include/net-snmp/agent/agent_read_config.h
+./agent_trap.lo: ../include/net-snmp/agent/agent_trap.h
+./agent_trap.lo: ../include/net-snmp/agent/all_helpers.h
+./agent_trap.lo: ../include/net-snmp/agent/instance.h
+./agent_trap.lo: ../include/net-snmp/agent/baby_steps.h
+./agent_trap.lo: ../include/net-snmp/agent/scalar.h
+./agent_trap.lo: ../include/net-snmp/agent/scalar_group.h
+./agent_trap.lo: ../include/net-snmp/agent/watcher.h
+./agent_trap.lo: ../include/net-snmp/agent/multiplexer.h
+./agent_trap.lo: ../include/net-snmp/agent/null.h
+./agent_trap.lo: ../include/net-snmp/agent/debug_handler.h
+./agent_trap.lo: ../include/net-snmp/agent/cache_handler.h
+./agent_trap.lo: ../include/net-snmp/agent/old_api.h
+./agent_trap.lo: ../include/net-snmp/agent/read_only.h
+./agent_trap.lo: ../include/net-snmp/agent/row_merge.h
+./agent_trap.lo: ../include/net-snmp/agent/serialize.h
+./agent_trap.lo: ../include/net-snmp/agent/bulk_to_next.h
+./agent_trap.lo: ../include/net-snmp/agent/mode_end_call.h
+./agent_trap.lo: ../include/net-snmp/agent/table.h
+./agent_trap.lo: ../include/net-snmp/agent/table_data.h
+./agent_trap.lo: ../include/net-snmp/agent/table_dataset.h
+./agent_trap.lo: ../include/net-snmp/agent/table_tdata.h
+./agent_trap.lo: ../include/net-snmp/agent/table_iterator.h
+./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
 ./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
+./mib_modules.lo: ../include/net-snmp/library/snmp_service.h
+./mib_modules.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./mib_modules.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./mib_modules.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./mib_modules.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mib_modules.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mib_modules.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./mib_modules.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./mib_modules.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./mib_modules.lo: ../include/net-snmp/library/ucd_compat.h
+./mib_modules.lo: ../include/net-snmp/library/mib.h
+./mib_modules.lo: ../include/net-snmp/mib_api.h
+./mib_modules.lo: ../include/net-snmp/library/parse.h
+./mib_modules.lo: ../include/net-snmp/library/oid_stash.h
+./mib_modules.lo: ../include/net-snmp/net-snmp-features.h
 ./mib_modules.lo: ../include/net-snmp/library/snmp_impl.h
 ./mib_modules.lo: ../include/net-snmp/library/snmp.h
 ./mib_modules.lo: ../include/net-snmp/library/snmp-tc.h
+./mib_modules.lo: ../include/net-snmp/library/getopt.h
 ./mib_modules.lo: ../include/net-snmp/utilities.h
-./mib_modules.lo: ../include/net-snmp/library/snmp_client.h
 ./mib_modules.lo: ../include/net-snmp/library/system.h
 ./mib_modules.lo: ../include/net-snmp/library/tools.h
 ./mib_modules.lo: ../include/net-snmp/library/int64.h
 ./mib_modules.lo: ../include/net-snmp/library/mt_support.h
 ./mib_modules.lo: ../include/net-snmp/library/snmp_alarm.h
-./mib_modules.lo: ../include/net-snmp/library/callback.h
 ./mib_modules.lo: ../include/net-snmp/library/data_list.h
-./mib_modules.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./mib_modules.lo: ../include/net-snmp/library/container.h
 ./mib_modules.lo: ../include/net-snmp/library/snmp_assert.h
 ./mib_modules.lo: ../include/net-snmp/version.h
-./mib_modules.lo: ../include/net-snmp/session_api.h
-./mib_modules.lo: ../include/net-snmp/library/snmp_transport.h
-./mib_modules.lo: ../include/net-snmp/library/snmp_service.h
-./mib_modules.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./mib_modules.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./mib_modules.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./mib_modules.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./mib_modules.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mib_modules.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./mib_modules.lo: ../include/net-snmp/library/mib.h
-./mib_modules.lo: ../include/net-snmp/library/parse.h
-./mib_modules.lo: ../include/net-snmp/varbind_api.h
 ./mib_modules.lo: ../include/net-snmp/config_api.h
 ./mib_modules.lo: ../include/net-snmp/library/read_config.h
 ./mib_modules.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -708,6 +902,7 @@
 ./mib_modules.lo: ../include/net-snmp/library/lcd_time.h
 ./mib_modules.lo: ../include/net-snmp/library/snmp_secmod.h
 ./mib_modules.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./mib_modules.lo: ../include/net-snmp/library/snmptsm.h
 ./mib_modules.lo: ../include/net-snmp/library/snmpusm.h
 ./mib_modules.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mib_modules.lo: ../include/net-snmp/agent/agent_module_config.h
@@ -743,23 +938,54 @@
 ./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/data_access/interface.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: 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_system.h mibgroup/host/hr_storage.h
+./mib_modules.lo: mibgroup/Rmon/rows.h mibgroup/Rmon/agutil.h
+./mib_modules.lo: mibgroup/Rmon/statistics.h mibgroup/Rmon/alarmTable.h
+./mib_modules.lo: mibgroup/Rmon/history.h mibgroup/Rmon/event.h
+./mib_modules.lo: mibgroup/examples/scalar_int.h mibgroup/examples/watched.h
+./mib_modules.lo: mibgroup/examples/data_set.h
+./mib_modules.lo: mibgroup/examples/delayed_instance.h
+./mib_modules.lo: mibgroup/host/hrh_storage.h mibgroup/host/hrh_filesys.h
+./mib_modules.lo: mibgroup/host/hrSWInstalledTable.h
+./mib_modules.lo: mibgroup/host/hrSWRunTable.h mibgroup/host/hr_system.h
 ./mib_modules.lo: mibgroup/host/hr_device.h mibgroup/host/hr_other.h
 ./mib_modules.lo: mibgroup/host/hr_proc.h mibgroup/host/hr_network.h
 ./mib_modules.lo: mibgroup/host/hr_print.h mibgroup/host/hr_disk.h
-./mib_modules.lo: mibgroup/host/hr_partition.h mibgroup/host/hr_filesys.h
-./mib_modules.lo: mibgroup/host/hr_swrun.h mibgroup/host/hr_swinst.h
-./mib_modules.lo: mibgroup/examples/scalar_int.h mibgroup/examples/watched.h
-./mib_modules.lo: mibgroup/examples/data_set.h
-./mib_modules.lo: mibgroup/examples/delayed_instance.h mibgroup/Rmon/rows.h
-./mib_modules.lo: mibgroup/Rmon/agutil.h mibgroup/Rmon/statistics.h
-./mib_modules.lo: mibgroup/Rmon/alarm.h mibgroup/Rmon/history.h
-./mib_modules.lo: mibgroup/Rmon/event.h mibgroup/disman/event/mteScalars.h
+./mib_modules.lo: mibgroup/host/hr_partition.h
+./mib_modules.lo: mibgroup/tsm-mib/snmpTsmConfigurationUsePrefix.h
+./mib_modules.lo: mibgroup/snmpv3/snmpMPDStats_5_5.h
+./mib_modules.lo: mibgroup/snmpv3/usmStats_5_5.h mibgroup/snmpv3/snmpEngine.h
+./mib_modules.lo: mibgroup/snmpv3/usmUser.h mibgroup/mibII/snmp_mib_5_5.h
+./mib_modules.lo: mibgroup/mibII/system_mib.h mibgroup/mibII/sysORTable.h
+./mib_modules.lo: mibgroup/mibII/at.h mibgroup/mibII/ip.h
+./mib_modules.lo: mibgroup/mibII/var_route.h mibgroup/mibII/route_write.h
+./mib_modules.lo: mibgroup/mibII/at.h mibgroup/mibII/tcp.h
+./mib_modules.lo: mibgroup/mibII/icmp.h mibgroup/mibII/udp.h
+./mib_modules.lo: mibgroup/mibII/vacm_vars.h mibgroup/mibII/setSerialNo.h
+./mib_modules.lo: mibgroup/mibII/ipv6.h mibgroup/ucd-snmp/disk_hw.h
+./mib_modules.lo: ../agent/mibgroup/mibdefs.h mibgroup/ucd-snmp/proc.h
+./mib_modules.lo: mibgroup/ucd-snmp/versioninfo.h mibgroup/ucd-snmp/pass.h
+./mib_modules.lo: mibgroup/ucd-snmp/pass_persist.h
+./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
+./mib_modules.lo: mibgroup/target/target_counters_5_5.h
+./mib_modules.lo: mibgroup/target/snmpTargetAddrEntry.h
+./mib_modules.lo: mibgroup/target/snmpTargetParamsEntry.h
+./mib_modules.lo: mibgroup/agent/nsTransactionTable.h
+./mib_modules.lo: mibgroup/agent/nsModuleTable.h mibgroup/agent/nsDebug.h
+./mib_modules.lo: mibgroup/agent/nsCache.h mibgroup/agent/nsLogging.h
+./mib_modules.lo: mibgroup/agent/nsVacmAccessTable.h
+./mib_modules.lo: mibgroup/disman/event/mteScalars.h
 ./mib_modules.lo: mibgroup/disman/event/mteTrigger.h
 ./mib_modules.lo: mibgroup/disman/event/mteTriggerTable.h
 ./mib_modules.lo: mibgroup/disman/event/mteTriggerDeltaTable.h
@@ -776,41 +1002,18 @@
 ./mib_modules.lo: mibgroup/disman/event/mteObjects.h
 ./mib_modules.lo: mibgroup/disman/event/mteObjectsTable.h
 ./mib_modules.lo: mibgroup/disman/event/mteObjectsConf.h
-./mib_modules.lo: mibgroup/snmpv3/snmpEngine.h mibgroup/snmpv3/snmpMPDStats.h
-./mib_modules.lo: mibgroup/snmpv3/usmStats.h mibgroup/snmpv3/usmUser.h
-./mib_modules.lo: mibgroup/mibII/system_mib.h mibgroup/mibII/sysORTable.h
-./mib_modules.lo: mibgroup/mibII/at.h mibgroup/mibII/ip.h
-./mib_modules.lo: mibgroup/mibII/var_route.h mibgroup/mibII/route_write.h
-./mib_modules.lo: mibgroup/mibII/at.h mibgroup/mibII/snmp_mib.h
-./mib_modules.lo: mibgroup/mibII/tcp.h mibgroup/mibII/icmp.h
-./mib_modules.lo: mibgroup/mibII/udp.h mibgroup/mibII/vacm_vars.h
-./mib_modules.lo: mibgroup/mibII/setSerialNo.h mibgroup/mibII/ipv6.h
-./mib_modules.lo: mibgroup/ucd-snmp/proc.h ../agent/mibgroup/mibdefs.h
-./mib_modules.lo: mibgroup/ucd-snmp/versioninfo.h mibgroup/ucd-snmp/pass.h
-./mib_modules.lo: mibgroup/ucd-snmp/pass_persist.h mibgroup/ucd-snmp/disk.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
-./mib_modules.lo: 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
-./mib_modules.lo: mibgroup/target/snmpTargetAddrEntry.h
-./mib_modules.lo: mibgroup/target/snmpTargetParamsEntry.h
-./mib_modules.lo: mibgroup/target/target_counters.h
-./mib_modules.lo: mibgroup/agent/nsTransactionTable.h
-./mib_modules.lo: mibgroup/agent/nsModuleTable.h mibgroup/agent/nsDebug.h
-./mib_modules.lo: mibgroup/agent/nsCache.h mibgroup/agent/nsLogging.h
-./mib_modules.lo: mibgroup/agent/nsVacmAccessTable.h
 ./mib_modules.lo: mibgroup/disman/schedule/schedCore.h
 ./mib_modules.lo: mibgroup/disman/schedule/schedConf.h
 ./mib_modules.lo: mibgroup/disman/schedule/schedTable.h
 ./mib_modules.lo: mibgroup/utilities/override.h
-./mib_modules.lo: mibgroup/hardware/memory/hw_mem.h
-./mib_modules.lo: mibgroup/hardware/cpu/cpu.h
-./mib_modules.lo: mibgroup/hardware/cpu/cpu_linux.h
+./mib_modules.lo: mibgroup/host/data_access/swinst.h
+./mib_modules.lo: mibgroup/host/data_access/swrun.h
+./mib_modules.lo: mibgroup/host/hrSWRunPerfTable.h
+./mib_modules.lo: mibgroup/tlstm-mib/snmpTlstmSession/snmpTlstmSession.h
+./mib_modules.lo: mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.h
+./mib_modules.lo: mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.h
+./mib_modules.lo: mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.h
+./mib_modules.lo: mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.h
 ./mib_modules.lo: mibgroup/mibII/var_route.h mibgroup/mibII/tcpTable.h
 ./mib_modules.lo: mibgroup/mibII/udpTable.h mibgroup/mibII/vacm_context.h
 ./mib_modules.lo: mibgroup/ip-mib/ip_scalars.h
@@ -819,7 +1022,12 @@
 ./mib_modules.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.h
 ./mib_modules.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.h
 ./mib_modules.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.h
+./mib_modules.lo: mibgroup/hardware/memory/hw_mem.h
+./mib_modules.lo: mibgroup/hardware/fsys/hw_fsys.h
+./mib_modules.lo: mibgroup/hardware/cpu/cpu.h
+./mib_modules.lo: mibgroup/hardware/cpu/cpu_linux.h
 ./mib_modules.lo: mibgroup/if-mib/ifTable/ifTable.h
+./mib_modules.lo: ../include/net-snmp/data_access/interface.h
 ./mib_modules.lo: mibgroup/if-mib/ifTable/ifTable_constants.h
 ./mib_modules.lo: mibgroup/if-mib/ifTable/ifTable_interface.h
 ./mib_modules.lo: mibgroup/if-mib/ifTable/ifTable.h
@@ -836,6 +1044,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
@@ -849,6 +1070,20 @@
 ./mib_modules.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.h
 ./mib_modules.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h
 ./mib_modules.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.h
+./mib_modules.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.h
+./mib_modules.lo: ../include/net-snmp/data_access/scopezone.h
+./mib_modules.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_oids.h
+./mib_modules.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_enums.h
+./mib_modules.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.h
+./mib_modules.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.h
+./mib_modules.lo: mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_data_access.h
+./mib_modules.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.h
+./mib_modules.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_oids.h
+./mib_modules.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_enums.h
+./mib_modules.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.h
+./mib_modules.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.h
+./mib_modules.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.h
+./mib_modules.lo: mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.h
 ./mib_modules.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.h
 ./mib_modules.lo: ../include/net-snmp/data_access/route.h
 ./mib_modules.lo: ../agent/mibgroup/mibII/route_headers.h
@@ -878,66 +1113,66 @@
 ./mib_modules.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.h
 ./mib_modules.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.h
 ./mib_modules.lo: mibgroup/if-mib/data_access/interface.h
-./mib_modules.lo: mibgroup/agentx/subagent.h
 ./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
+./object_monitor.lo: ../include/net-snmp/library/snmp_service.h
+./object_monitor.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./object_monitor.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./object_monitor.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./object_monitor.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./object_monitor.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./object_monitor.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./object_monitor.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./object_monitor.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./object_monitor.lo: ../include/net-snmp/library/ucd_compat.h
+./object_monitor.lo: ../include/net-snmp/library/mib.h
+./object_monitor.lo: ../include/net-snmp/mib_api.h
+./object_monitor.lo: ../include/net-snmp/library/parse.h
+./object_monitor.lo: ../include/net-snmp/library/oid_stash.h
+./object_monitor.lo: ../include/net-snmp/net-snmp-features.h
 ./object_monitor.lo: ../include/net-snmp/library/snmp_impl.h
 ./object_monitor.lo: ../include/net-snmp/library/snmp.h
 ./object_monitor.lo: ../include/net-snmp/library/snmp-tc.h
+./object_monitor.lo: ../include/net-snmp/library/getopt.h
 ./object_monitor.lo: ../include/net-snmp/utilities.h
-./object_monitor.lo: ../include/net-snmp/library/snmp_client.h
 ./object_monitor.lo: ../include/net-snmp/library/system.h
 ./object_monitor.lo: ../include/net-snmp/library/tools.h
 ./object_monitor.lo: ../include/net-snmp/library/int64.h
 ./object_monitor.lo: ../include/net-snmp/library/mt_support.h
 ./object_monitor.lo: ../include/net-snmp/library/snmp_alarm.h
-./object_monitor.lo: ../include/net-snmp/library/callback.h
 ./object_monitor.lo: ../include/net-snmp/library/data_list.h
-./object_monitor.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./object_monitor.lo: ../include/net-snmp/library/container.h
 ./object_monitor.lo: ../include/net-snmp/library/snmp_assert.h
 ./object_monitor.lo: ../include/net-snmp/version.h
-./object_monitor.lo: ../include/net-snmp/session_api.h
-./object_monitor.lo: ../include/net-snmp/library/snmp_transport.h
-./object_monitor.lo: ../include/net-snmp/library/snmp_service.h
-./object_monitor.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./object_monitor.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./object_monitor.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./object_monitor.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./object_monitor.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./object_monitor.lo: ../include/net-snmp/pdu_api.h
-./object_monitor.lo: ../include/net-snmp/mib_api.h
-./object_monitor.lo: ../include/net-snmp/library/mib.h
-./object_monitor.lo: ../include/net-snmp/library/parse.h
-./object_monitor.lo: ../include/net-snmp/varbind_api.h
 ./object_monitor.lo: ../include/net-snmp/config_api.h
 ./object_monitor.lo: ../include/net-snmp/library/read_config.h
 ./object_monitor.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -946,6 +1181,7 @@
 ./object_monitor.lo: ../include/net-snmp/library/lcd_time.h
 ./object_monitor.lo: ../include/net-snmp/library/snmp_secmod.h
 ./object_monitor.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./object_monitor.lo: ../include/net-snmp/library/snmptsm.h
 ./object_monitor.lo: ../include/net-snmp/library/snmpusm.h
 ./object_monitor.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./object_monitor.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -983,63 +1219,66 @@
 ./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-features.h
 ./snmp_agent.lo: ../include/net-snmp/net-snmp-includes.h
 ./snmp_agent.lo: ../include/net-snmp/definitions.h
 ./snmp_agent.lo: ../include/net-snmp/types.h
+./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
+./snmp_agent.lo: ../include/net-snmp/library/snmp_service.h
+./snmp_agent.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp_agent.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp_agent.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_agent.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp_agent.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_agent.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp_agent.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp_agent.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp_agent.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp_agent.lo: ../include/net-snmp/library/mib.h
+./snmp_agent.lo: ../include/net-snmp/mib_api.h
+./snmp_agent.lo: ../include/net-snmp/library/parse.h
+./snmp_agent.lo: ../include/net-snmp/library/oid_stash.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmp.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmp-tc.h
+./snmp_agent.lo: ../include/net-snmp/library/getopt.h
 ./snmp_agent.lo: ../include/net-snmp/utilities.h
-./snmp_agent.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_agent.lo: ../include/net-snmp/library/system.h
 ./snmp_agent.lo: ../include/net-snmp/library/tools.h
 ./snmp_agent.lo: ../include/net-snmp/library/int64.h
 ./snmp_agent.lo: ../include/net-snmp/library/mt_support.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmp_agent.lo: ../include/net-snmp/library/callback.h
 ./snmp_agent.lo: ../include/net-snmp/library/data_list.h
-./snmp_agent.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmp_agent.lo: ../include/net-snmp/library/container.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmp_agent.lo: ../include/net-snmp/version.h
-./snmp_agent.lo: ../include/net-snmp/session_api.h
-./snmp_agent.lo: ../include/net-snmp/library/snmp_transport.h
-./snmp_agent.lo: ../include/net-snmp/library/snmp_service.h
-./snmp_agent.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmp_agent.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_agent.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_agent.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmp_agent.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmp_agent.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmp_agent.lo: ../include/net-snmp/library/mib.h
-./snmp_agent.lo: ../include/net-snmp/library/parse.h
-./snmp_agent.lo: ../include/net-snmp/varbind_api.h
 ./snmp_agent.lo: ../include/net-snmp/config_api.h
 ./snmp_agent.lo: ../include/net-snmp/library/read_config.h
 ./snmp_agent.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -1048,6 +1287,7 @@
 ./snmp_agent.lo: ../include/net-snmp/library/lcd_time.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmp_agent.lo: ../include/net-snmp/library/snmptsm.h
 ./snmp_agent.lo: ../include/net-snmp/library/snmpusm.h
 ./snmp_agent.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmp_agent.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -1084,67 +1324,171 @@
 ./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 mibgroup/struct.h
-./snmp_agent.lo: mibgroup/util_funcs.h mibgroup/struct.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/net-snmp-features.h
+./snmpd.lo: ../include/net-snmp/types.h
+./snmpd.lo: ../include/net-snmp/library/oid.h
+./snmpd.lo: ../include/net-snmp/library/types.h
+./snmpd.lo: ../include/net-snmp/definitions.h
+./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
+./snmpd.lo: ../include/net-snmp/library/snmp_service.h
+./snmpd.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpd.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpd.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpd.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpd.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpd.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpd.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpd.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpd.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpd.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./snmpd.lo: ../include/net-snmp/library/parse.h
+./snmpd.lo: ../include/net-snmp/library/oid_stash.h
+./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
+./snmpd.lo: ../include/net-snmp/library/tools.h
+./snmpd.lo: ../include/net-snmp/library/int64.h
+./snmpd.lo: ../include/net-snmp/library/mt_support.h
+./snmpd.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmpd.lo: ../include/net-snmp/library/data_list.h
+./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/container_binary_array.h
+./snmpd.lo: ../include/net-snmp/library/container_list_ssll.h
+./snmpd.lo: ../include/net-snmp/library/container_iterator.h
+./snmpd.lo: ../include/net-snmp/library/container.h
+./snmpd.lo: ../include/net-snmp/library/snmp_assert.h
+./snmpd.lo: ../include/net-snmp/version.h ../include/net-snmp/config_api.h
+./snmpd.lo: ../include/net-snmp/library/read_config.h
+./snmpd.lo: ../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./snmpd.lo: ../include/net-snmp/library/snmpv3.h
+./snmpd.lo: ../include/net-snmp/library/transform_oids.h
+./snmpd.lo: ../include/net-snmp/library/keytools.h
+./snmpd.lo: ../include/net-snmp/library/scapi.h
+./snmpd.lo: ../include/net-snmp/library/lcd_time.h
+./snmpd.lo: ../include/net-snmp/library/snmp_secmod.h
+./snmpd.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpd.lo: ../include/net-snmp/library/snmptsm.h
+./snmpd.lo: ../include/net-snmp/library/snmpusm.h
+./snmpd.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
+./snmpd.lo: ../include/net-snmp/agent/mib_module_config.h
+./snmpd.lo: ../include/net-snmp/agent/agent_module_config.h
+./snmpd.lo: ../include/net-snmp/agent/snmp_agent.h
+./snmpd.lo: ../include/net-snmp/agent/snmp_vars.h
+./snmpd.lo: ../include/net-snmp/agent/agent_handler.h
+./snmpd.lo: ../include/net-snmp/agent/var_struct.h
+./snmpd.lo: ../include/net-snmp/agent/agent_registry.h
+./snmpd.lo: ../include/net-snmp/library/fd_event_manager.h
+./snmpd.lo: ../include/net-snmp/agent/ds_agent.h
+./snmpd.lo: ../include/net-snmp/agent/agent_read_config.h
+./snmpd.lo: ../include/net-snmp/agent/agent_trap.h
+./snmpd.lo: ../include/net-snmp/agent/all_helpers.h
+./snmpd.lo: ../include/net-snmp/agent/instance.h
+./snmpd.lo: ../include/net-snmp/agent/baby_steps.h
+./snmpd.lo: ../include/net-snmp/agent/scalar.h
+./snmpd.lo: ../include/net-snmp/agent/scalar_group.h
+./snmpd.lo: ../include/net-snmp/agent/watcher.h
+./snmpd.lo: ../include/net-snmp/agent/multiplexer.h
+./snmpd.lo: ../include/net-snmp/agent/null.h
+./snmpd.lo: ../include/net-snmp/agent/debug_handler.h
+./snmpd.lo: ../include/net-snmp/agent/cache_handler.h
+./snmpd.lo: ../include/net-snmp/agent/old_api.h
+./snmpd.lo: ../include/net-snmp/agent/read_only.h
+./snmpd.lo: ../include/net-snmp/agent/row_merge.h
+./snmpd.lo: ../include/net-snmp/agent/serialize.h
+./snmpd.lo: ../include/net-snmp/agent/bulk_to_next.h
+./snmpd.lo: ../include/net-snmp/agent/mode_end_call.h
+./snmpd.lo: ../include/net-snmp/agent/table.h
+./snmpd.lo: ../include/net-snmp/agent/table_data.h
+./snmpd.lo: ../include/net-snmp/agent/table_dataset.h
+./snmpd.lo: ../include/net-snmp/agent/table_tdata.h
+./snmpd.lo: ../include/net-snmp/agent/table_iterator.h
+./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/agent/snmp_get_statistic.h
+./snmpd.lo: ../include/net-snmp/library/large_fd_set.h m2m.h snmpd.h
+./snmpd.lo: ../include/net-snmp/agent/mib_modules.h mibgroup/smux/smux.h
 ./snmp_perl.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_perl.lo: ../include/net-snmp/system/linux.h
-./snmp_perl.lo: ../include/net-snmp/system/sysv.h
-./snmp_perl.lo: ../include/net-snmp/system/generic.h
-./snmp_perl.lo: ../include/net-snmp/machine/generic.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
+./snmp_perl.lo: ../include/net-snmp/library/snmp_service.h
+./snmp_perl.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp_perl.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp_perl.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_perl.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp_perl.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_perl.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp_perl.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp_perl.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp_perl.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp_perl.lo: ../include/net-snmp/library/mib.h
+./snmp_perl.lo: ../include/net-snmp/mib_api.h
+./snmp_perl.lo: ../include/net-snmp/library/parse.h
+./snmp_perl.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_perl.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmp.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmp-tc.h
+./snmp_perl.lo: ../include/net-snmp/library/getopt.h
 ./snmp_perl.lo: ../include/net-snmp/utilities.h
-./snmp_perl.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_perl.lo: ../include/net-snmp/library/system.h
 ./snmp_perl.lo: ../include/net-snmp/library/tools.h
 ./snmp_perl.lo: ../include/net-snmp/library/int64.h
 ./snmp_perl.lo: ../include/net-snmp/library/mt_support.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmp_perl.lo: ../include/net-snmp/library/callback.h
 ./snmp_perl.lo: ../include/net-snmp/library/data_list.h
-./snmp_perl.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmp_perl.lo: ../include/net-snmp/library/container.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmp_perl.lo: ../include/net-snmp/version.h
-./snmp_perl.lo: ../include/net-snmp/session_api.h
-./snmp_perl.lo: ../include/net-snmp/library/snmp_transport.h
-./snmp_perl.lo: ../include/net-snmp/library/snmp_service.h
-./snmp_perl.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmp_perl.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_perl.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_perl.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmp_perl.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmp_perl.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmp_perl.lo: ../include/net-snmp/library/mib.h
-./snmp_perl.lo: ../include/net-snmp/library/parse.h
-./snmp_perl.lo: ../include/net-snmp/varbind_api.h
 ./snmp_perl.lo: ../include/net-snmp/config_api.h
 ./snmp_perl.lo: ../include/net-snmp/library/read_config.h
 ./snmp_perl.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -1153,6 +1497,7 @@
 ./snmp_perl.lo: ../include/net-snmp/library/lcd_time.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmp_perl.lo: ../include/net-snmp/library/snmptsm.h
 ./snmp_perl.lo: ../include/net-snmp/library/snmpusm.h
 ./snmp_perl.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmp_perl.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -1189,63 +1534,66 @@
 ./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/system/linux.h
-./snmp_vars.lo: ../include/net-snmp/system/sysv.h
-./snmp_vars.lo: ../include/net-snmp/system/generic.h
-./snmp_vars.lo: ../include/net-snmp/machine/generic.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
+./snmp_vars.lo: ../include/net-snmp/library/snmp_service.h
+./snmp_vars.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp_vars.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp_vars.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_vars.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp_vars.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_vars.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp_vars.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp_vars.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp_vars.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp_vars.lo: ../include/net-snmp/library/mib.h
+./snmp_vars.lo: ../include/net-snmp/mib_api.h
+./snmp_vars.lo: ../include/net-snmp/library/parse.h
+./snmp_vars.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_vars.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmp.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmp-tc.h
+./snmp_vars.lo: ../include/net-snmp/library/getopt.h
 ./snmp_vars.lo: ../include/net-snmp/utilities.h
-./snmp_vars.lo: ../include/net-snmp/library/snmp_client.h
 ./snmp_vars.lo: ../include/net-snmp/library/system.h
 ./snmp_vars.lo: ../include/net-snmp/library/tools.h
 ./snmp_vars.lo: ../include/net-snmp/library/int64.h
 ./snmp_vars.lo: ../include/net-snmp/library/mt_support.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmp_vars.lo: ../include/net-snmp/library/callback.h
 ./snmp_vars.lo: ../include/net-snmp/library/data_list.h
-./snmp_vars.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmp_vars.lo: ../include/net-snmp/library/container.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmp_vars.lo: ../include/net-snmp/version.h
-./snmp_vars.lo: ../include/net-snmp/session_api.h
-./snmp_vars.lo: ../include/net-snmp/library/snmp_transport.h
-./snmp_vars.lo: ../include/net-snmp/library/snmp_service.h
-./snmp_vars.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmp_vars.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_vars.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_vars.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmp_vars.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmp_vars.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmp_vars.lo: ../include/net-snmp/library/mib.h
-./snmp_vars.lo: ../include/net-snmp/library/parse.h
-./snmp_vars.lo: ../include/net-snmp/varbind_api.h
 ./snmp_vars.lo: ../include/net-snmp/config_api.h
 ./snmp_vars.lo: ../include/net-snmp/library/read_config.h
 ./snmp_vars.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -1254,6 +1602,7 @@
 ./snmp_vars.lo: ../include/net-snmp/library/lcd_time.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmp_vars.lo: ../include/net-snmp/library/snmptsm.h
 ./snmp_vars.lo: ../include/net-snmp/library/snmpusm.h
 ./snmp_vars.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmp_vars.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -1291,300 +1640,74 @@
 ./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/mib_modules.h kernel.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
 ./snmp_vars.lo: ../agent/mibgroup/agentx/agentx_config.h
 ./snmp_vars.lo: ../agent/mibgroup/agentx/subagent.h
 ./snmp_vars.lo: ../agent/mibgroup/agent_module_includes.h
-./snmp_vars.lo: mibgroup/smux/smux.h mibgroup/snmpv3/usmConf.h
-./snmp_vars.lo: mibgroup/utilities/iquery.h mibgroup/mibII/vacm_conf.h
+./snmp_vars.lo: mibgroup/smux/smux.h mibgroup/utilities/iquery.h
+./snmp_vars.lo: mibgroup/snmpv3/usmConf.h mibgroup/mibII/vacm_conf.h
 ./snmp_vars.lo: snmp_perl.h ../agent/mibgroup/agent_module_inits.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/library/snmp_api.h
-./snmpd.lo: ../include/net-snmp/library/asn1.h
-./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/utilities.h
-./snmpd.lo: ../include/net-snmp/library/snmp_client.h
-./snmpd.lo: ../include/net-snmp/library/system.h
-./snmpd.lo: ../include/net-snmp/library/tools.h
-./snmpd.lo: ../include/net-snmp/library/int64.h
-./snmpd.lo: ../include/net-snmp/library/mt_support.h
-./snmpd.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpd.lo: ../include/net-snmp/library/callback.h
-./snmpd.lo: ../include/net-snmp/library/data_list.h
-./snmpd.lo: ../include/net-snmp/library/oid_stash.h
-./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
-./snmpd.lo: ../include/net-snmp/library/container.h
-./snmpd.lo: ../include/net-snmp/library/snmp_assert.h
-./snmpd.lo: ../include/net-snmp/version.h ../include/net-snmp/session_api.h
-./snmpd.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpd.lo: ../include/net-snmp/library/snmp_service.h
-./snmpd.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpd.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpd.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpd.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpd.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpd.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmpd.lo: ../include/net-snmp/library/mib.h
-./snmpd.lo: ../include/net-snmp/library/parse.h
-./snmpd.lo: ../include/net-snmp/varbind_api.h
-./snmpd.lo: ../include/net-snmp/config_api.h
-./snmpd.lo: ../include/net-snmp/library/read_config.h
-./snmpd.lo: ../include/net-snmp/library/default_store.h
-./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
-./snmpd.lo: ../include/net-snmp/library/keytools.h
-./snmpd.lo: ../include/net-snmp/library/scapi.h
-./snmpd.lo: ../include/net-snmp/library/lcd_time.h
-./snmpd.lo: ../include/net-snmp/library/snmp_secmod.h
-./snmpd.lo: ../include/net-snmp/library/snmpv3-security-includes.h
-./snmpd.lo: ../include/net-snmp/library/snmpusm.h
-./snmpd.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
-./snmpd.lo: ../include/net-snmp/agent/mib_module_config.h
-./snmpd.lo: ../include/net-snmp/agent/agent_module_config.h
-./snmpd.lo: ../include/net-snmp/agent/snmp_agent.h
-./snmpd.lo: ../include/net-snmp/agent/snmp_vars.h
-./snmpd.lo: ../include/net-snmp/agent/agent_handler.h
-./snmpd.lo: ../include/net-snmp/agent/var_struct.h
-./snmpd.lo: ../include/net-snmp/agent/agent_registry.h
-./snmpd.lo: ../include/net-snmp/library/fd_event_manager.h
-./snmpd.lo: ../include/net-snmp/agent/ds_agent.h
-./snmpd.lo: ../include/net-snmp/agent/agent_read_config.h
-./snmpd.lo: ../include/net-snmp/agent/agent_trap.h
-./snmpd.lo: ../include/net-snmp/agent/all_helpers.h
-./snmpd.lo: ../include/net-snmp/agent/instance.h
-./snmpd.lo: ../include/net-snmp/agent/baby_steps.h
-./snmpd.lo: ../include/net-snmp/agent/scalar.h
-./snmpd.lo: ../include/net-snmp/agent/scalar_group.h
-./snmpd.lo: ../include/net-snmp/agent/watcher.h
-./snmpd.lo: ../include/net-snmp/agent/multiplexer.h
-./snmpd.lo: ../include/net-snmp/agent/null.h
-./snmpd.lo: ../include/net-snmp/agent/debug_handler.h
-./snmpd.lo: ../include/net-snmp/agent/cache_handler.h
-./snmpd.lo: ../include/net-snmp/agent/old_api.h
-./snmpd.lo: ../include/net-snmp/agent/read_only.h
-./snmpd.lo: ../include/net-snmp/agent/row_merge.h
-./snmpd.lo: ../include/net-snmp/agent/serialize.h
-./snmpd.lo: ../include/net-snmp/agent/bulk_to_next.h
-./snmpd.lo: ../include/net-snmp/agent/mode_end_call.h
-./snmpd.lo: ../include/net-snmp/agent/table.h
-./snmpd.lo: ../include/net-snmp/agent/table_data.h
-./snmpd.lo: ../include/net-snmp/agent/table_dataset.h
-./snmpd.lo: ../include/net-snmp/agent/table_tdata.h
-./snmpd.lo: ../include/net-snmp/agent/table_iterator.h
-./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 m2m.h snmpd.h mibgroup/struct.h
-./snmpd.lo: ../include/net-snmp/agent/mib_modules.h mibgroup/util_funcs.h
-./snmpd.lo: mibgroup/struct.h ../agent/mibgroup/mib_module_includes.h
-./snmpd.lo: mibgroup/examples/example.h mibgroup/testhandler.h
-./snmpd.lo: mibgroup/host/hr_system.h mibgroup/host/hr_storage.h
-./snmpd.lo: mibgroup/host/hr_device.h mibgroup/host/hr_other.h
-./snmpd.lo: mibgroup/host/hr_proc.h mibgroup/host/hr_network.h
-./snmpd.lo: mibgroup/host/hr_print.h mibgroup/host/hr_disk.h
-./snmpd.lo: mibgroup/host/hr_partition.h mibgroup/host/hr_filesys.h
-./snmpd.lo: mibgroup/host/hr_swrun.h mibgroup/host/hr_swinst.h
-./snmpd.lo: mibgroup/examples/scalar_int.h mibgroup/examples/watched.h
-./snmpd.lo: mibgroup/examples/data_set.h mibgroup/examples/delayed_instance.h
-./snmpd.lo: mibgroup/Rmon/rows.h mibgroup/Rmon/agutil.h
-./snmpd.lo: mibgroup/Rmon/statistics.h mibgroup/Rmon/alarm.h
-./snmpd.lo: mibgroup/Rmon/history.h mibgroup/Rmon/event.h
-./snmpd.lo: mibgroup/disman/event/mteScalars.h
-./snmpd.lo: mibgroup/disman/event/mteTrigger.h
-./snmpd.lo: mibgroup/disman/event/mteTriggerTable.h
-./snmpd.lo: mibgroup/disman/event/mteTriggerDeltaTable.h
-./snmpd.lo: mibgroup/disman/event/mteTriggerExistenceTable.h
-./snmpd.lo: mibgroup/disman/event/mteTriggerBooleanTable.h
-./snmpd.lo: mibgroup/disman/event/mteTriggerThresholdTable.h
-./snmpd.lo: mibgroup/disman/event/mteTriggerConf.h
-./snmpd.lo: mibgroup/disman/event/mteEvent.h
-./snmpd.lo: ../agent/mibgroup/disman/event/mteTrigger.h
-./snmpd.lo: mibgroup/disman/event/mteEventTable.h
-./snmpd.lo: mibgroup/disman/event/mteEventSetTable.h
-./snmpd.lo: mibgroup/disman/event/mteEventNotificationTable.h
-./snmpd.lo: mibgroup/disman/event/mteEventConf.h
-./snmpd.lo: mibgroup/disman/event/mteObjects.h
-./snmpd.lo: mibgroup/disman/event/mteObjectsTable.h
-./snmpd.lo: mibgroup/disman/event/mteObjectsConf.h
-./snmpd.lo: mibgroup/snmpv3/snmpEngine.h mibgroup/snmpv3/snmpMPDStats.h
-./snmpd.lo: mibgroup/snmpv3/usmStats.h mibgroup/snmpv3/usmUser.h
-./snmpd.lo: mibgroup/mibII/system_mib.h mibgroup/mibII/sysORTable.h
-./snmpd.lo: mibgroup/mibII/at.h mibgroup/mibII/ip.h
-./snmpd.lo: mibgroup/mibII/var_route.h mibgroup/mibII/route_write.h
-./snmpd.lo: mibgroup/mibII/at.h mibgroup/mibII/snmp_mib.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/agent/extend.h mibgroup/ucd-snmp/errormib.h
-./snmpd.lo: mibgroup/ucd-snmp/file.h mibgroup/ucd-snmp/dlmod.h
-./snmpd.lo: mibgroup/ucd-snmp/proxy.h mibgroup/ucd-snmp/logmatch.h
-./snmpd.lo: mibgroup/ucd-snmp/memory.h mibgroup/ucd-snmp/vmstat.h
-./snmpd.lo: mibgroup/notification/snmpNotifyTable.h
-./snmpd.lo: mibgroup/notification/snmpNotifyFilterProfileTable.h
-./snmpd.lo: mibgroup/notification-log-mib/notification_log.h
-./snmpd.lo: mibgroup/target/snmpTargetAddrEntry.h
-./snmpd.lo: mibgroup/target/snmpTargetParamsEntry.h
-./snmpd.lo: mibgroup/target/target_counters.h
-./snmpd.lo: mibgroup/agent/nsTransactionTable.h
-./snmpd.lo: mibgroup/agent/nsModuleTable.h mibgroup/agent/nsDebug.h
-./snmpd.lo: mibgroup/agent/nsCache.h mibgroup/agent/nsLogging.h
-./snmpd.lo: mibgroup/agent/nsVacmAccessTable.h
-./snmpd.lo: mibgroup/disman/schedule/schedCore.h
-./snmpd.lo: mibgroup/disman/schedule/schedConf.h
-./snmpd.lo: mibgroup/disman/schedule/schedTable.h
-./snmpd.lo: mibgroup/utilities/override.h mibgroup/hardware/memory/hw_mem.h
-./snmpd.lo: mibgroup/hardware/cpu/cpu.h mibgroup/hardware/cpu/cpu_linux.h
-./snmpd.lo: mibgroup/mibII/var_route.h mibgroup/mibII/tcpTable.h
-./snmpd.lo: mibgroup/mibII/udpTable.h mibgroup/mibII/vacm_context.h
-./snmpd.lo: mibgroup/ip-mib/ip_scalars.h
-./snmpd.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.h
-./snmpd.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_constants.h
-./snmpd.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.h
-./snmpd.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.h
-./snmpd.lo: mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.h
-./snmpd.lo: mibgroup/if-mib/ifTable/ifTable.h
-./snmpd.lo: ../include/net-snmp/data_access/interface.h
-./snmpd.lo: mibgroup/if-mib/ifTable/ifTable_constants.h
-./snmpd.lo: mibgroup/if-mib/ifTable/ifTable_interface.h
-./snmpd.lo: mibgroup/if-mib/ifTable/ifTable.h
-./snmpd.lo: mibgroup/if-mib/ifTable/ifTable_data_access.h
-./snmpd.lo: mibgroup/if-mib/ifXTable/ifXTable.h
-./snmpd.lo: ../agent/mibgroup/if-mib/ifTable/ifTable.h
-./snmpd.lo: mibgroup/if-mib/ifXTable/ifXTable_constants.h
-./snmpd.lo: mibgroup/if-mib/ifXTable/ifXTable_interface.h
-./snmpd.lo: mibgroup/if-mib/ifXTable/ifXTable.h
-./snmpd.lo: mibgroup/if-mib/ifXTable/ifXTable_data_access.h
-./snmpd.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable.h
-./snmpd.lo: ../include/net-snmp/data_access/ipaddress.h
-./snmpd.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable_constants.h
-./snmpd.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.h
-./snmpd.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable.h
-./snmpd.lo: mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.h
-./snmpd.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
-./snmpd.lo: ../include/net-snmp/data_access/arp.h
-./snmpd.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_constants.h
-./snmpd.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.h
-./snmpd.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
-./snmpd.lo: mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.h
-./snmpd.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h
-./snmpd.lo: ../include/net-snmp/data_access/ipstats.h
-./snmpd.lo: ../include/net-snmp/data_access/systemstats.h
-./snmpd.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_constants.h
-./snmpd.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.h
-./snmpd.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h
-./snmpd.lo: mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.h
-./snmpd.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.h
-./snmpd.lo: ../include/net-snmp/data_access/route.h
-./snmpd.lo: ../agent/mibgroup/mibII/route_headers.h
-./snmpd.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_constants.h
-./snmpd.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.h
-./snmpd.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.h
-./snmpd.lo: mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_data_access.h
-./snmpd.lo: mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.h
-./snmpd.lo: mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_constants.h
-./snmpd.lo: mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.h
-./snmpd.lo: mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.h
-./snmpd.lo: mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_data_access.h
-./snmpd.lo: mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.h
-./snmpd.lo: ../include/net-snmp/data_access/tcpConn.h
-./snmpd.lo: mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_constants.h
-./snmpd.lo: mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.h
-./snmpd.lo: mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.h
-./snmpd.lo: mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.h
-./snmpd.lo: mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.h
-./snmpd.lo: mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_constants.h
-./snmpd.lo: mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.h
-./snmpd.lo: mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.h
-./snmpd.lo: mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.h
-./snmpd.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.h
-./snmpd.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_constants.h
-./snmpd.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.h
-./snmpd.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.h
-./snmpd.lo: mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.h
-./snmpd.lo: mibgroup/if-mib/data_access/interface.h mibgroup/smux/smux.h
 ./helpers/all_helpers.lo: ../include/net-snmp/net-snmp-config.h
-./helpers/all_helpers.lo: ../include/net-snmp/system/linux.h
-./helpers/all_helpers.lo: ../include/net-snmp/system/sysv.h
-./helpers/all_helpers.lo: ../include/net-snmp/system/generic.h
-./helpers/all_helpers.lo: ../include/net-snmp/machine/generic.h
+./helpers/all_helpers.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/all_helpers.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/all_helpers.lo: ../include/net-snmp/definitions.h
 ./helpers/all_helpers.lo: ../include/net-snmp/types.h
+./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
+./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/mib.h
+./helpers/all_helpers.lo: ../include/net-snmp/mib_api.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/parse.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/oid_stash.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmp.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/getopt.h
 ./helpers/all_helpers.lo: ../include/net-snmp/utilities.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/system.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/tools.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/int64.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/callback.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/data_list.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/all_helpers.lo: ../include/net-snmp/library/container.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/all_helpers.lo: ../include/net-snmp/version.h
-./helpers/all_helpers.lo: ../include/net-snmp/session_api.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/all_helpers.lo: ../include/net-snmp/pdu_api.h
-./helpers/all_helpers.lo: ../include/net-snmp/mib_api.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/mib.h
-./helpers/all_helpers.lo: ../include/net-snmp/library/parse.h
-./helpers/all_helpers.lo: ../include/net-snmp/varbind_api.h
 ./helpers/all_helpers.lo: ../include/net-snmp/config_api.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/read_config.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -1593,6 +1716,7 @@
 ./helpers/all_helpers.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/all_helpers.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/all_helpers.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/all_helpers.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/all_helpers.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -1630,63 +1754,66 @@
 ./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/system/linux.h
-./helpers/baby_steps.lo: ../include/net-snmp/system/sysv.h
-./helpers/baby_steps.lo: ../include/net-snmp/system/generic.h
-./helpers/baby_steps.lo: ../include/net-snmp/machine/generic.h
+./helpers/baby_steps.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/baby_steps.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/baby_steps.lo: ../include/net-snmp/definitions.h
 ./helpers/baby_steps.lo: ../include/net-snmp/types.h
+./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
+./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/mib.h
+./helpers/baby_steps.lo: ../include/net-snmp/mib_api.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/parse.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/oid_stash.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmp.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/getopt.h
 ./helpers/baby_steps.lo: ../include/net-snmp/utilities.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/system.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/tools.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/int64.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/callback.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/data_list.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/baby_steps.lo: ../include/net-snmp/library/container.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/baby_steps.lo: ../include/net-snmp/version.h
-./helpers/baby_steps.lo: ../include/net-snmp/session_api.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/baby_steps.lo: ../include/net-snmp/pdu_api.h
-./helpers/baby_steps.lo: ../include/net-snmp/mib_api.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/mib.h
-./helpers/baby_steps.lo: ../include/net-snmp/library/parse.h
-./helpers/baby_steps.lo: ../include/net-snmp/varbind_api.h
 ./helpers/baby_steps.lo: ../include/net-snmp/config_api.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/read_config.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -1695,6 +1822,7 @@
 ./helpers/baby_steps.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/baby_steps.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/baby_steps.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/baby_steps.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/baby_steps.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -1732,63 +1860,65 @@
 ./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/system/linux.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/system/sysv.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/system/generic.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/machine/generic.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
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/mib.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/mib_api.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/parse.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/getopt.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/utilities.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/system.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/tools.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/int64.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/callback.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/data_list.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/container.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/version.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/session_api.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/bulk_to_next.lo: ../include/net-snmp/pdu_api.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/mib_api.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/mib.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/library/parse.h
-./helpers/bulk_to_next.lo: ../include/net-snmp/varbind_api.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/config_api.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/read_config.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -1797,6 +1927,7 @@
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/bulk_to_next.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -1834,63 +1965,65 @@
 ./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/system/linux.h
-./helpers/cache_handler.lo: ../include/net-snmp/system/sysv.h
-./helpers/cache_handler.lo: ../include/net-snmp/system/generic.h
-./helpers/cache_handler.lo: ../include/net-snmp/machine/generic.h
+./helpers/cache_handler.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/cache_handler.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/cache_handler.lo: ../include/net-snmp/definitions.h
 ./helpers/cache_handler.lo: ../include/net-snmp/types.h
+./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
+./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/mib.h
+./helpers/cache_handler.lo: ../include/net-snmp/mib_api.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/parse.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/oid_stash.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmp.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/getopt.h
 ./helpers/cache_handler.lo: ../include/net-snmp/utilities.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/system.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/tools.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/int64.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/callback.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/data_list.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/cache_handler.lo: ../include/net-snmp/library/container.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/cache_handler.lo: ../include/net-snmp/version.h
-./helpers/cache_handler.lo: ../include/net-snmp/session_api.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/cache_handler.lo: ../include/net-snmp/pdu_api.h
-./helpers/cache_handler.lo: ../include/net-snmp/mib_api.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/mib.h
-./helpers/cache_handler.lo: ../include/net-snmp/library/parse.h
-./helpers/cache_handler.lo: ../include/net-snmp/varbind_api.h
 ./helpers/cache_handler.lo: ../include/net-snmp/config_api.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/read_config.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -1899,6 +2032,7 @@
 ./helpers/cache_handler.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/cache_handler.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/cache_handler.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/cache_handler.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/cache_handler.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -1936,63 +2070,65 @@
 ./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/system/linux.h
-./helpers/debug_handler.lo: ../include/net-snmp/system/sysv.h
-./helpers/debug_handler.lo: ../include/net-snmp/system/generic.h
-./helpers/debug_handler.lo: ../include/net-snmp/machine/generic.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
+./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/mib.h
+./helpers/debug_handler.lo: ../include/net-snmp/mib_api.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/parse.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/debug_handler.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/getopt.h
 ./helpers/debug_handler.lo: ../include/net-snmp/utilities.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/system.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/tools.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/int64.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/callback.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/data_list.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/debug_handler.lo: ../include/net-snmp/library/container.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/debug_handler.lo: ../include/net-snmp/version.h
-./helpers/debug_handler.lo: ../include/net-snmp/session_api.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/debug_handler.lo: ../include/net-snmp/pdu_api.h
-./helpers/debug_handler.lo: ../include/net-snmp/mib_api.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/mib.h
-./helpers/debug_handler.lo: ../include/net-snmp/library/parse.h
-./helpers/debug_handler.lo: ../include/net-snmp/varbind_api.h
 ./helpers/debug_handler.lo: ../include/net-snmp/config_api.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/read_config.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -2001,6 +2137,7 @@
 ./helpers/debug_handler.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/debug_handler.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/debug_handler.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/debug_handler.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/debug_handler.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2038,63 +2175,65 @@
 ./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/system/linux.h
-./helpers/instance.lo: ../include/net-snmp/system/sysv.h
-./helpers/instance.lo: ../include/net-snmp/system/generic.h
-./helpers/instance.lo: ../include/net-snmp/machine/generic.h
+./helpers/instance.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/instance.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/instance.lo: ../include/net-snmp/definitions.h
 ./helpers/instance.lo: ../include/net-snmp/types.h
+./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
+./helpers/instance.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/instance.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/instance.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/instance.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/instance.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/instance.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/instance.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/instance.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/instance.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/instance.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/instance.lo: ../include/net-snmp/library/mib.h
+./helpers/instance.lo: ../include/net-snmp/mib_api.h
+./helpers/instance.lo: ../include/net-snmp/library/parse.h
+./helpers/instance.lo: ../include/net-snmp/library/oid_stash.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmp.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/instance.lo: ../include/net-snmp/library/getopt.h
 ./helpers/instance.lo: ../include/net-snmp/utilities.h
-./helpers/instance.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/instance.lo: ../include/net-snmp/library/system.h
 ./helpers/instance.lo: ../include/net-snmp/library/tools.h
 ./helpers/instance.lo: ../include/net-snmp/library/int64.h
 ./helpers/instance.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/instance.lo: ../include/net-snmp/library/callback.h
 ./helpers/instance.lo: ../include/net-snmp/library/data_list.h
-./helpers/instance.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/instance.lo: ../include/net-snmp/library/container.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/instance.lo: ../include/net-snmp/version.h
-./helpers/instance.lo: ../include/net-snmp/session_api.h
-./helpers/instance.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/instance.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/instance.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/instance.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/instance.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/instance.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/instance.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/instance.lo: ../include/net-snmp/pdu_api.h
-./helpers/instance.lo: ../include/net-snmp/mib_api.h
-./helpers/instance.lo: ../include/net-snmp/library/mib.h
-./helpers/instance.lo: ../include/net-snmp/library/parse.h
-./helpers/instance.lo: ../include/net-snmp/varbind_api.h
 ./helpers/instance.lo: ../include/net-snmp/config_api.h
 ./helpers/instance.lo: ../include/net-snmp/library/read_config.h
 ./helpers/instance.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -2103,6 +2242,7 @@
 ./helpers/instance.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/instance.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/instance.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/instance.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/instance.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2140,63 +2280,65 @@
 ./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/system/linux.h
-./helpers/mode_end_call.lo: ../include/net-snmp/system/sysv.h
-./helpers/mode_end_call.lo: ../include/net-snmp/system/generic.h
-./helpers/mode_end_call.lo: ../include/net-snmp/machine/generic.h
+./helpers/mode_end_call.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/definitions.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/types.h
+./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
+./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/mib.h
+./helpers/mode_end_call.lo: ../include/net-snmp/mib_api.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/parse.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/oid_stash.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/getopt.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/utilities.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/system.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/tools.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/int64.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/callback.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/data_list.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/container.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/version.h
-./helpers/mode_end_call.lo: ../include/net-snmp/session_api.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/mode_end_call.lo: ../include/net-snmp/pdu_api.h
-./helpers/mode_end_call.lo: ../include/net-snmp/mib_api.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/mib.h
-./helpers/mode_end_call.lo: ../include/net-snmp/library/parse.h
-./helpers/mode_end_call.lo: ../include/net-snmp/varbind_api.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/config_api.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/read_config.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -2205,6 +2347,7 @@
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/mode_end_call.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/mode_end_call.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2242,63 +2385,65 @@
 ./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/system/linux.h
-./helpers/multiplexer.lo: ../include/net-snmp/system/sysv.h
-./helpers/multiplexer.lo: ../include/net-snmp/system/generic.h
-./helpers/multiplexer.lo: ../include/net-snmp/machine/generic.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
+./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/mib.h
+./helpers/multiplexer.lo: ../include/net-snmp/mib_api.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/parse.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/multiplexer.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/getopt.h
 ./helpers/multiplexer.lo: ../include/net-snmp/utilities.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/system.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/tools.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/int64.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/callback.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/data_list.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/multiplexer.lo: ../include/net-snmp/library/container.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/multiplexer.lo: ../include/net-snmp/version.h
-./helpers/multiplexer.lo: ../include/net-snmp/session_api.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/multiplexer.lo: ../include/net-snmp/pdu_api.h
-./helpers/multiplexer.lo: ../include/net-snmp/mib_api.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/mib.h
-./helpers/multiplexer.lo: ../include/net-snmp/library/parse.h
-./helpers/multiplexer.lo: ../include/net-snmp/varbind_api.h
 ./helpers/multiplexer.lo: ../include/net-snmp/config_api.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/read_config.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -2307,6 +2452,7 @@
 ./helpers/multiplexer.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/multiplexer.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/multiplexer.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/multiplexer.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/multiplexer.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2344,63 +2490,65 @@
 ./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/system/linux.h
-./helpers/null.lo: ../include/net-snmp/system/sysv.h
-./helpers/null.lo: ../include/net-snmp/system/generic.h
-./helpers/null.lo: ../include/net-snmp/machine/generic.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
+./helpers/null.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/null.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/null.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/null.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/null.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/null.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/null.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/null.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/null.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/null.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/null.lo: ../include/net-snmp/library/mib.h
+./helpers/null.lo: ../include/net-snmp/mib_api.h
+./helpers/null.lo: ../include/net-snmp/library/parse.h
+./helpers/null.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/null.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/null.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/null.lo: ../include/net-snmp/library/snmp.h
 ./helpers/null.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/null.lo: ../include/net-snmp/library/getopt.h
 ./helpers/null.lo: ../include/net-snmp/utilities.h
-./helpers/null.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/null.lo: ../include/net-snmp/library/system.h
 ./helpers/null.lo: ../include/net-snmp/library/tools.h
 ./helpers/null.lo: ../include/net-snmp/library/int64.h
 ./helpers/null.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/null.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/null.lo: ../include/net-snmp/library/callback.h
 ./helpers/null.lo: ../include/net-snmp/library/data_list.h
-./helpers/null.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/null.lo: ../include/net-snmp/library/container.h
 ./helpers/null.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/null.lo: ../include/net-snmp/version.h
-./helpers/null.lo: ../include/net-snmp/session_api.h
-./helpers/null.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/null.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/null.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/null.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/null.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/null.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/null.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/null.lo: ../include/net-snmp/pdu_api.h
-./helpers/null.lo: ../include/net-snmp/mib_api.h
-./helpers/null.lo: ../include/net-snmp/library/mib.h
-./helpers/null.lo: ../include/net-snmp/library/parse.h
-./helpers/null.lo: ../include/net-snmp/varbind_api.h
 ./helpers/null.lo: ../include/net-snmp/config_api.h
 ./helpers/null.lo: ../include/net-snmp/library/read_config.h
 ./helpers/null.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -2409,6 +2557,7 @@
 ./helpers/null.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/null.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/null.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/null.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/null.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/null.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/null.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2446,63 +2595,65 @@
 ./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/system/linux.h
-./helpers/old_api.lo: ../include/net-snmp/system/sysv.h
-./helpers/old_api.lo: ../include/net-snmp/system/generic.h
-./helpers/old_api.lo: ../include/net-snmp/machine/generic.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
+./helpers/old_api.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/old_api.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/old_api.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/old_api.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/old_api.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/old_api.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/old_api.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/old_api.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/old_api.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/old_api.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/old_api.lo: ../include/net-snmp/library/mib.h
+./helpers/old_api.lo: ../include/net-snmp/mib_api.h
+./helpers/old_api.lo: ../include/net-snmp/library/parse.h
+./helpers/old_api.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/old_api.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/old_api.lo: ../include/net-snmp/library/getopt.h
 ./helpers/old_api.lo: ../include/net-snmp/utilities.h
-./helpers/old_api.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/old_api.lo: ../include/net-snmp/library/system.h
 ./helpers/old_api.lo: ../include/net-snmp/library/tools.h
 ./helpers/old_api.lo: ../include/net-snmp/library/int64.h
 ./helpers/old_api.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/old_api.lo: ../include/net-snmp/library/callback.h
 ./helpers/old_api.lo: ../include/net-snmp/library/data_list.h
-./helpers/old_api.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/old_api.lo: ../include/net-snmp/library/container.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/old_api.lo: ../include/net-snmp/version.h
-./helpers/old_api.lo: ../include/net-snmp/session_api.h
-./helpers/old_api.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/old_api.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/old_api.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/old_api.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/old_api.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/old_api.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/old_api.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/old_api.lo: ../include/net-snmp/pdu_api.h
-./helpers/old_api.lo: ../include/net-snmp/mib_api.h
-./helpers/old_api.lo: ../include/net-snmp/library/mib.h
-./helpers/old_api.lo: ../include/net-snmp/library/parse.h
-./helpers/old_api.lo: ../include/net-snmp/varbind_api.h
 ./helpers/old_api.lo: ../include/net-snmp/config_api.h
 ./helpers/old_api.lo: ../include/net-snmp/library/read_config.h
 ./helpers/old_api.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -2511,6 +2662,7 @@
 ./helpers/old_api.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/old_api.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/old_api.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/old_api.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/old_api.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2548,64 +2700,66 @@
 ./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/system/linux.h
-./helpers/read_only.lo: ../include/net-snmp/system/sysv.h
-./helpers/read_only.lo: ../include/net-snmp/system/generic.h
-./helpers/read_only.lo: ../include/net-snmp/machine/generic.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
+./helpers/read_only.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/read_only.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/read_only.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/read_only.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/read_only.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/read_only.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/read_only.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/read_only.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/read_only.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/read_only.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/read_only.lo: ../include/net-snmp/library/mib.h
+./helpers/read_only.lo: ../include/net-snmp/mib_api.h
+./helpers/read_only.lo: ../include/net-snmp/library/parse.h
+./helpers/read_only.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/read_only.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/read_only.lo: ../include/net-snmp/library/getopt.h
 ./helpers/read_only.lo: ../include/net-snmp/utilities.h
-./helpers/read_only.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/read_only.lo: ../include/net-snmp/library/system.h
 ./helpers/read_only.lo: ../include/net-snmp/library/tools.h
 ./helpers/read_only.lo: ../include/net-snmp/library/int64.h
 ./helpers/read_only.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/read_only.lo: ../include/net-snmp/library/callback.h
 ./helpers/read_only.lo: ../include/net-snmp/library/data_list.h
-./helpers/read_only.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/read_only.lo: ../include/net-snmp/library/container.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/read_only.lo: ../include/net-snmp/version.h
-./helpers/read_only.lo: ../include/net-snmp/session_api.h
-./helpers/read_only.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/read_only.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/read_only.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/read_only.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/read_only.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/read_only.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/read_only.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/read_only.lo: ../include/net-snmp/pdu_api.h
-./helpers/read_only.lo: ../include/net-snmp/mib_api.h
-./helpers/read_only.lo: ../include/net-snmp/library/mib.h
-./helpers/read_only.lo: ../include/net-snmp/library/parse.h
-./helpers/read_only.lo: ../include/net-snmp/varbind_api.h
 ./helpers/read_only.lo: ../include/net-snmp/config_api.h
 ./helpers/read_only.lo: ../include/net-snmp/library/read_config.h
 ./helpers/read_only.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -2614,6 +2768,7 @@
 ./helpers/read_only.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/read_only.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/read_only.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/read_only.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/read_only.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2651,63 +2806,65 @@
 ./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/system/linux.h
-./helpers/row_merge.lo: ../include/net-snmp/system/sysv.h
-./helpers/row_merge.lo: ../include/net-snmp/system/generic.h
-./helpers/row_merge.lo: ../include/net-snmp/machine/generic.h
+./helpers/row_merge.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/row_merge.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/row_merge.lo: ../include/net-snmp/definitions.h
 ./helpers/row_merge.lo: ../include/net-snmp/types.h
+./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
+./helpers/row_merge.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/row_merge.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/row_merge.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/row_merge.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/row_merge.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/row_merge.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/row_merge.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/row_merge.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/row_merge.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/row_merge.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/row_merge.lo: ../include/net-snmp/library/mib.h
+./helpers/row_merge.lo: ../include/net-snmp/mib_api.h
+./helpers/row_merge.lo: ../include/net-snmp/library/parse.h
+./helpers/row_merge.lo: ../include/net-snmp/library/oid_stash.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmp.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/row_merge.lo: ../include/net-snmp/library/getopt.h
 ./helpers/row_merge.lo: ../include/net-snmp/utilities.h
-./helpers/row_merge.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/system.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/tools.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/int64.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/row_merge.lo: ../include/net-snmp/library/callback.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/data_list.h
-./helpers/row_merge.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/row_merge.lo: ../include/net-snmp/library/container.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/row_merge.lo: ../include/net-snmp/version.h
-./helpers/row_merge.lo: ../include/net-snmp/session_api.h
-./helpers/row_merge.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/row_merge.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/row_merge.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/row_merge.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/row_merge.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/row_merge.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/row_merge.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/row_merge.lo: ../include/net-snmp/pdu_api.h
-./helpers/row_merge.lo: ../include/net-snmp/mib_api.h
-./helpers/row_merge.lo: ../include/net-snmp/library/mib.h
-./helpers/row_merge.lo: ../include/net-snmp/library/parse.h
-./helpers/row_merge.lo: ../include/net-snmp/varbind_api.h
 ./helpers/row_merge.lo: ../include/net-snmp/config_api.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/read_config.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -2716,6 +2873,7 @@
 ./helpers/row_merge.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/row_merge.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/row_merge.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/row_merge.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/row_merge.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2753,63 +2911,65 @@
 ./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/system/linux.h
-./helpers/scalar.lo: ../include/net-snmp/system/sysv.h
-./helpers/scalar.lo: ../include/net-snmp/system/generic.h
-./helpers/scalar.lo: ../include/net-snmp/machine/generic.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
+./helpers/scalar.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/scalar.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/scalar.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/scalar.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/scalar.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/scalar.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/scalar.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/scalar.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/scalar.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/scalar.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/scalar.lo: ../include/net-snmp/library/mib.h
+./helpers/scalar.lo: ../include/net-snmp/mib_api.h
+./helpers/scalar.lo: ../include/net-snmp/library/parse.h
+./helpers/scalar.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/scalar.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/scalar.lo: ../include/net-snmp/library/getopt.h
 ./helpers/scalar.lo: ../include/net-snmp/utilities.h
-./helpers/scalar.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/scalar.lo: ../include/net-snmp/library/system.h
 ./helpers/scalar.lo: ../include/net-snmp/library/tools.h
 ./helpers/scalar.lo: ../include/net-snmp/library/int64.h
 ./helpers/scalar.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/scalar.lo: ../include/net-snmp/library/callback.h
 ./helpers/scalar.lo: ../include/net-snmp/library/data_list.h
-./helpers/scalar.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/scalar.lo: ../include/net-snmp/library/container.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/scalar.lo: ../include/net-snmp/version.h
-./helpers/scalar.lo: ../include/net-snmp/session_api.h
-./helpers/scalar.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/scalar.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/scalar.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/scalar.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/scalar.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/scalar.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/scalar.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/scalar.lo: ../include/net-snmp/pdu_api.h
-./helpers/scalar.lo: ../include/net-snmp/mib_api.h
-./helpers/scalar.lo: ../include/net-snmp/library/mib.h
-./helpers/scalar.lo: ../include/net-snmp/library/parse.h
-./helpers/scalar.lo: ../include/net-snmp/varbind_api.h
 ./helpers/scalar.lo: ../include/net-snmp/config_api.h
 ./helpers/scalar.lo: ../include/net-snmp/library/read_config.h
 ./helpers/scalar.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -2818,6 +2978,7 @@
 ./helpers/scalar.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/scalar.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/scalar.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/scalar.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/scalar.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2855,63 +3016,65 @@
 ./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/system/linux.h
-./helpers/scalar_group.lo: ../include/net-snmp/system/sysv.h
-./helpers/scalar_group.lo: ../include/net-snmp/system/generic.h
-./helpers/scalar_group.lo: ../include/net-snmp/machine/generic.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
+./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/mib.h
+./helpers/scalar_group.lo: ../include/net-snmp/mib_api.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/parse.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/scalar_group.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/getopt.h
 ./helpers/scalar_group.lo: ../include/net-snmp/utilities.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/system.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/tools.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/int64.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/callback.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/data_list.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/scalar_group.lo: ../include/net-snmp/library/container.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/scalar_group.lo: ../include/net-snmp/version.h
-./helpers/scalar_group.lo: ../include/net-snmp/session_api.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/scalar_group.lo: ../include/net-snmp/pdu_api.h
-./helpers/scalar_group.lo: ../include/net-snmp/mib_api.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/mib.h
-./helpers/scalar_group.lo: ../include/net-snmp/library/parse.h
-./helpers/scalar_group.lo: ../include/net-snmp/varbind_api.h
 ./helpers/scalar_group.lo: ../include/net-snmp/config_api.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/read_config.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -2920,6 +3083,7 @@
 ./helpers/scalar_group.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/scalar_group.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/scalar_group.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/scalar_group.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/scalar_group.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -2957,63 +3121,65 @@
 ./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/system/linux.h
-./helpers/serialize.lo: ../include/net-snmp/system/sysv.h
-./helpers/serialize.lo: ../include/net-snmp/system/generic.h
-./helpers/serialize.lo: ../include/net-snmp/machine/generic.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
+./helpers/serialize.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/serialize.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/serialize.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/serialize.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/serialize.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/serialize.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/serialize.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/serialize.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/serialize.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/serialize.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/serialize.lo: ../include/net-snmp/library/mib.h
+./helpers/serialize.lo: ../include/net-snmp/mib_api.h
+./helpers/serialize.lo: ../include/net-snmp/library/parse.h
+./helpers/serialize.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/serialize.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/serialize.lo: ../include/net-snmp/library/getopt.h
 ./helpers/serialize.lo: ../include/net-snmp/utilities.h
-./helpers/serialize.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/serialize.lo: ../include/net-snmp/library/system.h
 ./helpers/serialize.lo: ../include/net-snmp/library/tools.h
 ./helpers/serialize.lo: ../include/net-snmp/library/int64.h
 ./helpers/serialize.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/serialize.lo: ../include/net-snmp/library/callback.h
 ./helpers/serialize.lo: ../include/net-snmp/library/data_list.h
-./helpers/serialize.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/serialize.lo: ../include/net-snmp/library/container.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/serialize.lo: ../include/net-snmp/version.h
-./helpers/serialize.lo: ../include/net-snmp/session_api.h
-./helpers/serialize.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/serialize.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/serialize.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/serialize.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/serialize.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/serialize.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/serialize.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/serialize.lo: ../include/net-snmp/pdu_api.h
-./helpers/serialize.lo: ../include/net-snmp/mib_api.h
-./helpers/serialize.lo: ../include/net-snmp/library/mib.h
-./helpers/serialize.lo: ../include/net-snmp/library/parse.h
-./helpers/serialize.lo: ../include/net-snmp/varbind_api.h
 ./helpers/serialize.lo: ../include/net-snmp/config_api.h
 ./helpers/serialize.lo: ../include/net-snmp/library/read_config.h
 ./helpers/serialize.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -3022,6 +3188,7 @@
 ./helpers/serialize.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/serialize.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/serialize.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/serialize.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/serialize.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3059,63 +3226,170 @@
 ./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-features.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/net-snmp-includes.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/definitions.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/types.h
+./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/snmpTCPDomain.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/snmptsm.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/library/snmpusm.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
+./helpers/snmp_get_statistic.lo: ../include/net-snmp/agent/mib_module_config.h
+./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/system/linux.h
-./helpers/stash_cache.lo: ../include/net-snmp/system/sysv.h
-./helpers/stash_cache.lo: ../include/net-snmp/system/generic.h
-./helpers/stash_cache.lo: ../include/net-snmp/machine/generic.h
+./helpers/stash_cache.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/stash_cache.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/stash_cache.lo: ../include/net-snmp/definitions.h
 ./helpers/stash_cache.lo: ../include/net-snmp/types.h
+./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
+./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/mib.h
+./helpers/stash_cache.lo: ../include/net-snmp/mib_api.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/parse.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/oid_stash.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmp.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/getopt.h
 ./helpers/stash_cache.lo: ../include/net-snmp/utilities.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/system.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/tools.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/int64.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/callback.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/data_list.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/stash_cache.lo: ../include/net-snmp/library/container.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/stash_cache.lo: ../include/net-snmp/version.h
-./helpers/stash_cache.lo: ../include/net-snmp/session_api.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/stash_cache.lo: ../include/net-snmp/pdu_api.h
-./helpers/stash_cache.lo: ../include/net-snmp/mib_api.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/mib.h
-./helpers/stash_cache.lo: ../include/net-snmp/library/parse.h
-./helpers/stash_cache.lo: ../include/net-snmp/varbind_api.h
 ./helpers/stash_cache.lo: ../include/net-snmp/config_api.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/read_config.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -3124,6 +3398,7 @@
 ./helpers/stash_cache.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/stash_cache.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/stash_cache.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/stash_cache.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/stash_cache.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3161,65 +3436,67 @@
 ./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/stash_cache.h
+./helpers/stash_cache.lo: ../include/net-snmp/agent/snmp_get_statistic.h
 ./helpers/stash_cache.lo: ../include/net-snmp/agent/stash_to_next.h
+./helpers/stash_cache.lo: ../include/net-snmp/agent/stash_cache.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/net-snmp-config.h
-./helpers/stash_to_next.lo: ../include/net-snmp/system/linux.h
-./helpers/stash_to_next.lo: ../include/net-snmp/system/sysv.h
-./helpers/stash_to_next.lo: ../include/net-snmp/system/generic.h
-./helpers/stash_to_next.lo: ../include/net-snmp/machine/generic.h
+./helpers/stash_to_next.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/definitions.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/types.h
+./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
+./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/mib.h
+./helpers/stash_to_next.lo: ../include/net-snmp/mib_api.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/parse.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/oid_stash.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/getopt.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/utilities.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/system.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/tools.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/int64.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/callback.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/data_list.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/container.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/version.h
-./helpers/stash_to_next.lo: ../include/net-snmp/session_api.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/stash_to_next.lo: ../include/net-snmp/pdu_api.h
-./helpers/stash_to_next.lo: ../include/net-snmp/mib_api.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/mib.h
-./helpers/stash_to_next.lo: ../include/net-snmp/library/parse.h
-./helpers/stash_to_next.lo: ../include/net-snmp/varbind_api.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/config_api.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/read_config.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -3228,6 +3505,7 @@
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/stash_to_next.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/stash_to_next.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3265,167 +3543,67 @@
 ./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/stash_cache.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/table.lo: ../include/net-snmp/net-snmp-config.h
-./helpers/table.lo: ../include/net-snmp/system/linux.h
-./helpers/table.lo: ../include/net-snmp/system/sysv.h
-./helpers/table.lo: ../include/net-snmp/system/generic.h
-./helpers/table.lo: ../include/net-snmp/machine/generic.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/snmp_api.h
-./helpers/table.lo: ../include/net-snmp/library/asn1.h
-./helpers/table.lo: ../include/net-snmp/library/snmp_impl.h
-./helpers/table.lo: ../include/net-snmp/library/snmp.h
-./helpers/table.lo: ../include/net-snmp/library/snmp-tc.h
-./helpers/table.lo: ../include/net-snmp/utilities.h
-./helpers/table.lo: ../include/net-snmp/library/snmp_client.h
-./helpers/table.lo: ../include/net-snmp/library/system.h
-./helpers/table.lo: ../include/net-snmp/library/tools.h
-./helpers/table.lo: ../include/net-snmp/library/int64.h
-./helpers/table.lo: ../include/net-snmp/library/mt_support.h
-./helpers/table.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/table.lo: ../include/net-snmp/library/callback.h
-./helpers/table.lo: ../include/net-snmp/library/data_list.h
-./helpers/table.lo: ../include/net-snmp/library/oid_stash.h
-./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
-./helpers/table.lo: ../include/net-snmp/library/container.h
-./helpers/table.lo: ../include/net-snmp/library/snmp_assert.h
-./helpers/table.lo: ../include/net-snmp/version.h
-./helpers/table.lo: ../include/net-snmp/session_api.h
-./helpers/table.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/table.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/table.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/table.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/table.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/table.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/table.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/table.lo: ../include/net-snmp/pdu_api.h
-./helpers/table.lo: ../include/net-snmp/mib_api.h
-./helpers/table.lo: ../include/net-snmp/library/mib.h
-./helpers/table.lo: ../include/net-snmp/library/parse.h
-./helpers/table.lo: ../include/net-snmp/varbind_api.h
-./helpers/table.lo: ../include/net-snmp/config_api.h
-./helpers/table.lo: ../include/net-snmp/library/read_config.h
-./helpers/table.lo: ../include/net-snmp/library/default_store.h
-./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
-./helpers/table.lo: ../include/net-snmp/library/keytools.h
-./helpers/table.lo: ../include/net-snmp/library/scapi.h
-./helpers/table.lo: ../include/net-snmp/library/lcd_time.h
-./helpers/table.lo: ../include/net-snmp/library/snmp_secmod.h
-./helpers/table.lo: ../include/net-snmp/library/snmpv3-security-includes.h
-./helpers/table.lo: ../include/net-snmp/library/snmpusm.h
-./helpers/table.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
-./helpers/table.lo: ../include/net-snmp/agent/mib_module_config.h
-./helpers/table.lo: ../include/net-snmp/agent/agent_module_config.h
-./helpers/table.lo: ../include/net-snmp/agent/snmp_agent.h
-./helpers/table.lo: ../include/net-snmp/agent/snmp_vars.h
-./helpers/table.lo: ../include/net-snmp/agent/agent_handler.h
-./helpers/table.lo: ../include/net-snmp/agent/var_struct.h
-./helpers/table.lo: ../include/net-snmp/agent/agent_registry.h
-./helpers/table.lo: ../include/net-snmp/library/fd_event_manager.h
-./helpers/table.lo: ../include/net-snmp/agent/ds_agent.h
-./helpers/table.lo: ../include/net-snmp/agent/agent_read_config.h
-./helpers/table.lo: ../include/net-snmp/agent/agent_trap.h
-./helpers/table.lo: ../include/net-snmp/agent/all_helpers.h
-./helpers/table.lo: ../include/net-snmp/agent/instance.h
-./helpers/table.lo: ../include/net-snmp/agent/baby_steps.h
-./helpers/table.lo: ../include/net-snmp/agent/scalar.h
-./helpers/table.lo: ../include/net-snmp/agent/scalar_group.h
-./helpers/table.lo: ../include/net-snmp/agent/watcher.h
-./helpers/table.lo: ../include/net-snmp/agent/multiplexer.h
-./helpers/table.lo: ../include/net-snmp/agent/null.h
-./helpers/table.lo: ../include/net-snmp/agent/debug_handler.h
-./helpers/table.lo: ../include/net-snmp/agent/cache_handler.h
-./helpers/table.lo: ../include/net-snmp/agent/old_api.h
-./helpers/table.lo: ../include/net-snmp/agent/read_only.h
-./helpers/table.lo: ../include/net-snmp/agent/row_merge.h
-./helpers/table.lo: ../include/net-snmp/agent/serialize.h
-./helpers/table.lo: ../include/net-snmp/agent/bulk_to_next.h
-./helpers/table.lo: ../include/net-snmp/agent/mode_end_call.h
-./helpers/table.lo: ../include/net-snmp/agent/table.h
-./helpers/table.lo: ../include/net-snmp/agent/table_data.h
-./helpers/table.lo: ../include/net-snmp/agent/table_dataset.h
-./helpers/table.lo: ../include/net-snmp/agent/table_tdata.h
-./helpers/table.lo: ../include/net-snmp/agent/table_iterator.h
-./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/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/system/linux.h
-./helpers/table_array.lo: ../include/net-snmp/system/sysv.h
-./helpers/table_array.lo: ../include/net-snmp/system/generic.h
-./helpers/table_array.lo: ../include/net-snmp/machine/generic.h
+./helpers/table_array.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/table_array.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/table_array.lo: ../include/net-snmp/definitions.h
 ./helpers/table_array.lo: ../include/net-snmp/types.h
+./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
+./helpers/table_array.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/table_array.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/table_array.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/table_array.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/table_array.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/table_array.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/table_array.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/table_array.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/table_array.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/table_array.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/table_array.lo: ../include/net-snmp/library/mib.h
+./helpers/table_array.lo: ../include/net-snmp/mib_api.h
+./helpers/table_array.lo: ../include/net-snmp/library/parse.h
+./helpers/table_array.lo: ../include/net-snmp/library/oid_stash.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmp.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/table_array.lo: ../include/net-snmp/library/getopt.h
 ./helpers/table_array.lo: ../include/net-snmp/utilities.h
-./helpers/table_array.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/table_array.lo: ../include/net-snmp/library/system.h
 ./helpers/table_array.lo: ../include/net-snmp/library/tools.h
 ./helpers/table_array.lo: ../include/net-snmp/library/int64.h
 ./helpers/table_array.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/table_array.lo: ../include/net-snmp/library/callback.h
 ./helpers/table_array.lo: ../include/net-snmp/library/data_list.h
-./helpers/table_array.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/table_array.lo: ../include/net-snmp/library/container.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/table_array.lo: ../include/net-snmp/version.h
-./helpers/table_array.lo: ../include/net-snmp/session_api.h
-./helpers/table_array.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/table_array.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/table_array.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/table_array.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/table_array.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/table_array.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/table_array.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/table_array.lo: ../include/net-snmp/pdu_api.h
-./helpers/table_array.lo: ../include/net-snmp/mib_api.h
-./helpers/table_array.lo: ../include/net-snmp/library/mib.h
-./helpers/table_array.lo: ../include/net-snmp/library/parse.h
-./helpers/table_array.lo: ../include/net-snmp/varbind_api.h
 ./helpers/table_array.lo: ../include/net-snmp/config_api.h
 ./helpers/table_array.lo: ../include/net-snmp/library/read_config.h
 ./helpers/table_array.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -3434,6 +3612,7 @@
 ./helpers/table_array.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/table_array.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/table_array.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/table_array.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/table_array.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3471,63 +3650,170 @@
 ./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-features.h
+./helpers/table.lo: ../include/net-snmp/net-snmp-includes.h
+./helpers/table.lo: ../include/net-snmp/definitions.h
+./helpers/table.lo: ../include/net-snmp/types.h
+./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
+./helpers/table.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/table.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/table.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/table.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/table.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/table.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/table.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/table.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/table.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/table.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/table.lo: ../include/net-snmp/library/mib.h
+./helpers/table.lo: ../include/net-snmp/mib_api.h
+./helpers/table.lo: ../include/net-snmp/library/parse.h
+./helpers/table.lo: ../include/net-snmp/library/oid_stash.h
+./helpers/table.lo: ../include/net-snmp/library/snmp_impl.h
+./helpers/table.lo: ../include/net-snmp/library/snmp.h
+./helpers/table.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/table.lo: ../include/net-snmp/library/getopt.h
+./helpers/table.lo: ../include/net-snmp/utilities.h
+./helpers/table.lo: ../include/net-snmp/library/system.h
+./helpers/table.lo: ../include/net-snmp/library/tools.h
+./helpers/table.lo: ../include/net-snmp/library/int64.h
+./helpers/table.lo: ../include/net-snmp/library/mt_support.h
+./helpers/table.lo: ../include/net-snmp/library/snmp_alarm.h
+./helpers/table.lo: ../include/net-snmp/library/data_list.h
+./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/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
+./helpers/table.lo: ../include/net-snmp/library/container.h
+./helpers/table.lo: ../include/net-snmp/library/snmp_assert.h
+./helpers/table.lo: ../include/net-snmp/version.h
+./helpers/table.lo: ../include/net-snmp/config_api.h
+./helpers/table.lo: ../include/net-snmp/library/read_config.h
+./helpers/table.lo: ../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./helpers/table.lo: ../include/net-snmp/library/snmpv3.h
+./helpers/table.lo: ../include/net-snmp/library/transform_oids.h
+./helpers/table.lo: ../include/net-snmp/library/keytools.h
+./helpers/table.lo: ../include/net-snmp/library/scapi.h
+./helpers/table.lo: ../include/net-snmp/library/lcd_time.h
+./helpers/table.lo: ../include/net-snmp/library/snmp_secmod.h
+./helpers/table.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/table.lo: ../include/net-snmp/library/snmptsm.h
+./helpers/table.lo: ../include/net-snmp/library/snmpusm.h
+./helpers/table.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
+./helpers/table.lo: ../include/net-snmp/agent/mib_module_config.h
+./helpers/table.lo: ../include/net-snmp/agent/agent_module_config.h
+./helpers/table.lo: ../include/net-snmp/agent/snmp_agent.h
+./helpers/table.lo: ../include/net-snmp/agent/snmp_vars.h
+./helpers/table.lo: ../include/net-snmp/agent/agent_handler.h
+./helpers/table.lo: ../include/net-snmp/agent/var_struct.h
+./helpers/table.lo: ../include/net-snmp/agent/agent_registry.h
+./helpers/table.lo: ../include/net-snmp/library/fd_event_manager.h
+./helpers/table.lo: ../include/net-snmp/agent/ds_agent.h
+./helpers/table.lo: ../include/net-snmp/agent/agent_read_config.h
+./helpers/table.lo: ../include/net-snmp/agent/agent_trap.h
+./helpers/table.lo: ../include/net-snmp/agent/all_helpers.h
+./helpers/table.lo: ../include/net-snmp/agent/instance.h
+./helpers/table.lo: ../include/net-snmp/agent/baby_steps.h
+./helpers/table.lo: ../include/net-snmp/agent/scalar.h
+./helpers/table.lo: ../include/net-snmp/agent/scalar_group.h
+./helpers/table.lo: ../include/net-snmp/agent/watcher.h
+./helpers/table.lo: ../include/net-snmp/agent/multiplexer.h
+./helpers/table.lo: ../include/net-snmp/agent/null.h
+./helpers/table.lo: ../include/net-snmp/agent/debug_handler.h
+./helpers/table.lo: ../include/net-snmp/agent/cache_handler.h
+./helpers/table.lo: ../include/net-snmp/agent/old_api.h
+./helpers/table.lo: ../include/net-snmp/agent/read_only.h
+./helpers/table.lo: ../include/net-snmp/agent/row_merge.h
+./helpers/table.lo: ../include/net-snmp/agent/serialize.h
+./helpers/table.lo: ../include/net-snmp/agent/bulk_to_next.h
+./helpers/table.lo: ../include/net-snmp/agent/mode_end_call.h
+./helpers/table.lo: ../include/net-snmp/agent/table.h
+./helpers/table.lo: ../include/net-snmp/agent/table_data.h
+./helpers/table.lo: ../include/net-snmp/agent/table_dataset.h
+./helpers/table.lo: ../include/net-snmp/agent/table_tdata.h
+./helpers/table.lo: ../include/net-snmp/agent/table_iterator.h
+./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/system/linux.h
-./helpers/table_container.lo: ../include/net-snmp/system/sysv.h
-./helpers/table_container.lo: ../include/net-snmp/system/generic.h
-./helpers/table_container.lo: ../include/net-snmp/machine/generic.h
+./helpers/table_container.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/table_container.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/table_container.lo: ../include/net-snmp/definitions.h
 ./helpers/table_container.lo: ../include/net-snmp/types.h
+./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
+./helpers/table_container.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/table_container.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/table_container.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/table_container.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/table_container.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/table_container.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/table_container.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/table_container.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/table_container.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/table_container.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/table_container.lo: ../include/net-snmp/library/mib.h
+./helpers/table_container.lo: ../include/net-snmp/mib_api.h
+./helpers/table_container.lo: ../include/net-snmp/library/parse.h
+./helpers/table_container.lo: ../include/net-snmp/library/oid_stash.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmp.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/table_container.lo: ../include/net-snmp/library/getopt.h
 ./helpers/table_container.lo: ../include/net-snmp/utilities.h
-./helpers/table_container.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/table_container.lo: ../include/net-snmp/library/system.h
 ./helpers/table_container.lo: ../include/net-snmp/library/tools.h
 ./helpers/table_container.lo: ../include/net-snmp/library/int64.h
 ./helpers/table_container.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/table_container.lo: ../include/net-snmp/library/callback.h
 ./helpers/table_container.lo: ../include/net-snmp/library/data_list.h
-./helpers/table_container.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/table_container.lo: ../include/net-snmp/library/container.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/table_container.lo: ../include/net-snmp/version.h
-./helpers/table_container.lo: ../include/net-snmp/session_api.h
-./helpers/table_container.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/table_container.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/table_container.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/table_container.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/table_container.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/table_container.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/table_container.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/table_container.lo: ../include/net-snmp/pdu_api.h
-./helpers/table_container.lo: ../include/net-snmp/mib_api.h
-./helpers/table_container.lo: ../include/net-snmp/library/mib.h
-./helpers/table_container.lo: ../include/net-snmp/library/parse.h
-./helpers/table_container.lo: ../include/net-snmp/varbind_api.h
 ./helpers/table_container.lo: ../include/net-snmp/config_api.h
 ./helpers/table_container.lo: ../include/net-snmp/library/read_config.h
 ./helpers/table_container.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -3536,6 +3822,7 @@
 ./helpers/table_container.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/table_container.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/table_container.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/table_container.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/table_container.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3573,63 +3860,65 @@
 ./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/system/linux.h
-./helpers/table_data.lo: ../include/net-snmp/system/sysv.h
-./helpers/table_data.lo: ../include/net-snmp/system/generic.h
-./helpers/table_data.lo: ../include/net-snmp/machine/generic.h
+./helpers/table_data.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/table_data.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/table_data.lo: ../include/net-snmp/definitions.h
 ./helpers/table_data.lo: ../include/net-snmp/types.h
+./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
+./helpers/table_data.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/table_data.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/table_data.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/table_data.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/table_data.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/table_data.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/table_data.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/table_data.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/table_data.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/table_data.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/table_data.lo: ../include/net-snmp/library/mib.h
+./helpers/table_data.lo: ../include/net-snmp/mib_api.h
+./helpers/table_data.lo: ../include/net-snmp/library/parse.h
+./helpers/table_data.lo: ../include/net-snmp/library/oid_stash.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmp.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/table_data.lo: ../include/net-snmp/library/getopt.h
 ./helpers/table_data.lo: ../include/net-snmp/utilities.h
-./helpers/table_data.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/table_data.lo: ../include/net-snmp/library/system.h
 ./helpers/table_data.lo: ../include/net-snmp/library/tools.h
 ./helpers/table_data.lo: ../include/net-snmp/library/int64.h
 ./helpers/table_data.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/table_data.lo: ../include/net-snmp/library/callback.h
 ./helpers/table_data.lo: ../include/net-snmp/library/data_list.h
-./helpers/table_data.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/table_data.lo: ../include/net-snmp/library/container.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/table_data.lo: ../include/net-snmp/version.h
-./helpers/table_data.lo: ../include/net-snmp/session_api.h
-./helpers/table_data.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/table_data.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/table_data.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/table_data.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/table_data.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/table_data.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/table_data.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/table_data.lo: ../include/net-snmp/pdu_api.h
-./helpers/table_data.lo: ../include/net-snmp/mib_api.h
-./helpers/table_data.lo: ../include/net-snmp/library/mib.h
-./helpers/table_data.lo: ../include/net-snmp/library/parse.h
-./helpers/table_data.lo: ../include/net-snmp/varbind_api.h
 ./helpers/table_data.lo: ../include/net-snmp/config_api.h
 ./helpers/table_data.lo: ../include/net-snmp/library/read_config.h
 ./helpers/table_data.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -3638,6 +3927,7 @@
 ./helpers/table_data.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/table_data.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/table_data.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/table_data.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/table_data.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3675,63 +3965,65 @@
 ./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/system/linux.h
-./helpers/table_dataset.lo: ../include/net-snmp/system/sysv.h
-./helpers/table_dataset.lo: ../include/net-snmp/system/generic.h
-./helpers/table_dataset.lo: ../include/net-snmp/machine/generic.h
+./helpers/table_dataset.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/table_dataset.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/table_dataset.lo: ../include/net-snmp/definitions.h
 ./helpers/table_dataset.lo: ../include/net-snmp/types.h
+./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
+./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/mib.h
+./helpers/table_dataset.lo: ../include/net-snmp/mib_api.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/parse.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/oid_stash.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmp.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/getopt.h
 ./helpers/table_dataset.lo: ../include/net-snmp/utilities.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/system.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/tools.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/int64.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/callback.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/data_list.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/table_dataset.lo: ../include/net-snmp/library/container.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/table_dataset.lo: ../include/net-snmp/version.h
-./helpers/table_dataset.lo: ../include/net-snmp/session_api.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/table_dataset.lo: ../include/net-snmp/pdu_api.h
-./helpers/table_dataset.lo: ../include/net-snmp/mib_api.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/mib.h
-./helpers/table_dataset.lo: ../include/net-snmp/library/parse.h
-./helpers/table_dataset.lo: ../include/net-snmp/varbind_api.h
 ./helpers/table_dataset.lo: ../include/net-snmp/config_api.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/read_config.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -3740,6 +4032,7 @@
 ./helpers/table_dataset.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/table_dataset.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/table_dataset.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/table_dataset.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/table_dataset.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3777,63 +4070,65 @@
 ./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/system/linux.h
-./helpers/table_iterator.lo: ../include/net-snmp/system/sysv.h
-./helpers/table_iterator.lo: ../include/net-snmp/system/generic.h
-./helpers/table_iterator.lo: ../include/net-snmp/machine/generic.h
+./helpers/table_iterator.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/table_iterator.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/table_iterator.lo: ../include/net-snmp/definitions.h
 ./helpers/table_iterator.lo: ../include/net-snmp/types.h
+./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
+./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/mib.h
+./helpers/table_iterator.lo: ../include/net-snmp/mib_api.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/parse.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/oid_stash.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmp.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/getopt.h
 ./helpers/table_iterator.lo: ../include/net-snmp/utilities.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/system.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/tools.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/int64.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/callback.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/data_list.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/table_iterator.lo: ../include/net-snmp/library/container.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/table_iterator.lo: ../include/net-snmp/version.h
-./helpers/table_iterator.lo: ../include/net-snmp/session_api.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/table_iterator.lo: ../include/net-snmp/pdu_api.h
-./helpers/table_iterator.lo: ../include/net-snmp/mib_api.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/mib.h
-./helpers/table_iterator.lo: ../include/net-snmp/library/parse.h
-./helpers/table_iterator.lo: ../include/net-snmp/varbind_api.h
 ./helpers/table_iterator.lo: ../include/net-snmp/config_api.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/read_config.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -3842,6 +4137,7 @@
 ./helpers/table_iterator.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/table_iterator.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/table_iterator.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/table_iterator.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/table_iterator.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3879,64 +4175,66 @@
 ./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/system/linux.h
-./helpers/table_row.lo: ../include/net-snmp/system/sysv.h
-./helpers/table_row.lo: ../include/net-snmp/system/generic.h
-./helpers/table_row.lo: ../include/net-snmp/machine/generic.h
+./helpers/table_row.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/table_row.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/table_row.lo: ../include/net-snmp/definitions.h
 ./helpers/table_row.lo: ../include/net-snmp/types.h
+./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
+./helpers/table_row.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/table_row.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/table_row.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/table_row.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/table_row.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/table_row.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/table_row.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/table_row.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/table_row.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/table_row.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/table_row.lo: ../include/net-snmp/library/mib.h
+./helpers/table_row.lo: ../include/net-snmp/mib_api.h
+./helpers/table_row.lo: ../include/net-snmp/library/parse.h
+./helpers/table_row.lo: ../include/net-snmp/library/oid_stash.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmp.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/table_row.lo: ../include/net-snmp/library/getopt.h
 ./helpers/table_row.lo: ../include/net-snmp/utilities.h
-./helpers/table_row.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/table_row.lo: ../include/net-snmp/library/system.h
 ./helpers/table_row.lo: ../include/net-snmp/library/tools.h
 ./helpers/table_row.lo: ../include/net-snmp/library/int64.h
 ./helpers/table_row.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/table_row.lo: ../include/net-snmp/library/callback.h
 ./helpers/table_row.lo: ../include/net-snmp/library/data_list.h
-./helpers/table_row.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/table_row.lo: ../include/net-snmp/library/container.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/table_row.lo: ../include/net-snmp/version.h
-./helpers/table_row.lo: ../include/net-snmp/session_api.h
-./helpers/table_row.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/table_row.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/table_row.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/table_row.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/table_row.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/table_row.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/table_row.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/table_row.lo: ../include/net-snmp/pdu_api.h
-./helpers/table_row.lo: ../include/net-snmp/mib_api.h
-./helpers/table_row.lo: ../include/net-snmp/library/mib.h
-./helpers/table_row.lo: ../include/net-snmp/library/parse.h
-./helpers/table_row.lo: ../include/net-snmp/varbind_api.h
 ./helpers/table_row.lo: ../include/net-snmp/config_api.h
 ./helpers/table_row.lo: ../include/net-snmp/library/read_config.h
 ./helpers/table_row.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -3945,6 +4243,7 @@
 ./helpers/table_row.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/table_row.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/table_row.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/table_row.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/table_row.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -3982,63 +4281,65 @@
 ./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/system/linux.h
-./helpers/table_tdata.lo: ../include/net-snmp/system/sysv.h
-./helpers/table_tdata.lo: ../include/net-snmp/system/generic.h
-./helpers/table_tdata.lo: ../include/net-snmp/machine/generic.h
+./helpers/table_tdata.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/table_tdata.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/table_tdata.lo: ../include/net-snmp/definitions.h
 ./helpers/table_tdata.lo: ../include/net-snmp/types.h
+./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
+./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/mib.h
+./helpers/table_tdata.lo: ../include/net-snmp/mib_api.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/parse.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/oid_stash.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmp.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/getopt.h
 ./helpers/table_tdata.lo: ../include/net-snmp/utilities.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/system.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/tools.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/int64.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/callback.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/data_list.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/table_tdata.lo: ../include/net-snmp/library/container.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/table_tdata.lo: ../include/net-snmp/version.h
-./helpers/table_tdata.lo: ../include/net-snmp/session_api.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/table_tdata.lo: ../include/net-snmp/pdu_api.h
-./helpers/table_tdata.lo: ../include/net-snmp/mib_api.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/mib.h
-./helpers/table_tdata.lo: ../include/net-snmp/library/parse.h
-./helpers/table_tdata.lo: ../include/net-snmp/varbind_api.h
 ./helpers/table_tdata.lo: ../include/net-snmp/config_api.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/read_config.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -4047,6 +4348,7 @@
 ./helpers/table_tdata.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/table_tdata.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/table_tdata.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/table_tdata.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/table_tdata.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -4084,63 +4386,65 @@
 ./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/system/linux.h
-./helpers/watcher.lo: ../include/net-snmp/system/sysv.h
-./helpers/watcher.lo: ../include/net-snmp/system/generic.h
-./helpers/watcher.lo: ../include/net-snmp/machine/generic.h
+./helpers/watcher.lo: ../include/net-snmp/net-snmp-features.h
 ./helpers/watcher.lo: ../include/net-snmp/net-snmp-includes.h
 ./helpers/watcher.lo: ../include/net-snmp/definitions.h
 ./helpers/watcher.lo: ../include/net-snmp/types.h
+./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
+./helpers/watcher.lo: ../include/net-snmp/library/snmp_service.h
+./helpers/watcher.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./helpers/watcher.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./helpers/watcher.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./helpers/watcher.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./helpers/watcher.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./helpers/watcher.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./helpers/watcher.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./helpers/watcher.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./helpers/watcher.lo: ../include/net-snmp/library/ucd_compat.h
+./helpers/watcher.lo: ../include/net-snmp/library/mib.h
+./helpers/watcher.lo: ../include/net-snmp/mib_api.h
+./helpers/watcher.lo: ../include/net-snmp/library/parse.h
+./helpers/watcher.lo: ../include/net-snmp/library/oid_stash.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmp_impl.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmp.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmp-tc.h
+./helpers/watcher.lo: ../include/net-snmp/library/getopt.h
 ./helpers/watcher.lo: ../include/net-snmp/utilities.h
-./helpers/watcher.lo: ../include/net-snmp/library/snmp_client.h
 ./helpers/watcher.lo: ../include/net-snmp/library/system.h
 ./helpers/watcher.lo: ../include/net-snmp/library/tools.h
 ./helpers/watcher.lo: ../include/net-snmp/library/int64.h
 ./helpers/watcher.lo: ../include/net-snmp/library/mt_support.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmp_alarm.h
-./helpers/watcher.lo: ../include/net-snmp/library/callback.h
 ./helpers/watcher.lo: ../include/net-snmp/library/data_list.h
-./helpers/watcher.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./helpers/watcher.lo: ../include/net-snmp/library/container.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmp_assert.h
 ./helpers/watcher.lo: ../include/net-snmp/version.h
-./helpers/watcher.lo: ../include/net-snmp/session_api.h
-./helpers/watcher.lo: ../include/net-snmp/library/snmp_transport.h
-./helpers/watcher.lo: ../include/net-snmp/library/snmp_service.h
-./helpers/watcher.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./helpers/watcher.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./helpers/watcher.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./helpers/watcher.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./helpers/watcher.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./helpers/watcher.lo: ../include/net-snmp/pdu_api.h
-./helpers/watcher.lo: ../include/net-snmp/mib_api.h
-./helpers/watcher.lo: ../include/net-snmp/library/mib.h
-./helpers/watcher.lo: ../include/net-snmp/library/parse.h
-./helpers/watcher.lo: ../include/net-snmp/varbind_api.h
 ./helpers/watcher.lo: ../include/net-snmp/config_api.h
 ./helpers/watcher.lo: ../include/net-snmp/library/read_config.h
 ./helpers/watcher.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -4149,6 +4453,7 @@
 ./helpers/watcher.lo: ../include/net-snmp/library/lcd_time.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmp_secmod.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./helpers/watcher.lo: ../include/net-snmp/library/snmptsm.h
 ./helpers/watcher.lo: ../include/net-snmp/library/snmpusm.h
 ./helpers/watcher.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./helpers/watcher.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -4186,63 +4491,65 @@
 ./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/system/linux.h
-./mibgroup/header_complex.lo: ../include/net-snmp/system/sysv.h
-./mibgroup/header_complex.lo: ../include/net-snmp/system/generic.h
-./mibgroup/header_complex.lo: ../include/net-snmp/machine/generic.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
+./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_service.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/ucd_compat.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/mib.h
+./mibgroup/header_complex.lo: ../include/net-snmp/mib_api.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/parse.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/oid_stash.h
+./mibgroup/header_complex.lo: ../include/net-snmp/net-snmp-features.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_impl.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp-tc.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/getopt.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/utilities.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_client.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/system.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/tools.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/int64.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/mt_support.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_alarm.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/callback.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/data_list.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/container.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_assert.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/version.h
-./mibgroup/header_complex.lo: ../include/net-snmp/session_api.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_transport.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_service.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibgroup/header_complex.lo: ../include/net-snmp/pdu_api.h
-./mibgroup/header_complex.lo: ../include/net-snmp/mib_api.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/mib.h
-./mibgroup/header_complex.lo: ../include/net-snmp/library/parse.h
-./mibgroup/header_complex.lo: ../include/net-snmp/varbind_api.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/config_api.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/read_config.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -4251,6 +4558,7 @@
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/lcd_time.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmp_secmod.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./mibgroup/header_complex.lo: ../include/net-snmp/library/snmptsm.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/library/snmpusm.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibgroup/header_complex.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -4288,69 +4596,67 @@
 ./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/kernel_sunos5.lo: ../include/net-snmp/system/linux.h
-./mibgroup/kernel_sunos5.lo: ../include/net-snmp/system/sysv.h
-./mibgroup/kernel_sunos5.lo: ../include/net-snmp/system/generic.h
-./mibgroup/kernel_sunos5.lo: ../include/net-snmp/machine/generic.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/net-snmp-config.h
-./mibgroup/testhandler.lo: ../include/net-snmp/system/linux.h
-./mibgroup/testhandler.lo: ../include/net-snmp/system/sysv.h
-./mibgroup/testhandler.lo: ../include/net-snmp/system/generic.h
-./mibgroup/testhandler.lo: ../include/net-snmp/machine/generic.h
+./mibgroup/testhandler.lo: ../include/net-snmp/net-snmp-features.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/net-snmp-includes.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/definitions.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/types.h
+./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
+./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_service.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/ucd_compat.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/mib.h
+./mibgroup/testhandler.lo: ../include/net-snmp/mib_api.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/parse.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/oid_stash.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_impl.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp-tc.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/getopt.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/utilities.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_client.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/system.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/tools.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/int64.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/mt_support.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_alarm.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/callback.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/data_list.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/container.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_assert.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/version.h
-./mibgroup/testhandler.lo: ../include/net-snmp/session_api.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_transport.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_service.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibgroup/testhandler.lo: ../include/net-snmp/pdu_api.h
-./mibgroup/testhandler.lo: ../include/net-snmp/mib_api.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/mib.h
-./mibgroup/testhandler.lo: ../include/net-snmp/library/parse.h
-./mibgroup/testhandler.lo: ../include/net-snmp/varbind_api.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/config_api.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/read_config.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -4359,6 +4665,7 @@
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/lcd_time.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmp_secmod.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./mibgroup/testhandler.lo: ../include/net-snmp/library/snmptsm.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/library/snmpusm.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibgroup/testhandler.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -4396,64 +4703,66 @@
 ./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/system/linux.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/system/sysv.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/system/generic.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/machine/generic.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/net-snmp-features.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/net-snmp-includes.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/definitions.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/types.h
+./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
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_service.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/ucd_compat.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/mib.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/mib_api.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/parse.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/oid_stash.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_impl.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp-tc.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/getopt.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/utilities.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_client.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/system.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/tools.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/int64.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/mt_support.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_alarm.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/callback.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/data_list.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/container.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_assert.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/version.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/session_api.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_transport.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_service.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibgroup/util_funcs.lo: ../include/net-snmp/pdu_api.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/mib_api.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/mib.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/library/parse.h
-./mibgroup/util_funcs.lo: ../include/net-snmp/varbind_api.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/config_api.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/read_config.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -4462,6 +4771,7 @@
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/lcd_time.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmp_secmod.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmptsm.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/library/snmpusm.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibgroup/util_funcs.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -4498,14 +4808,15 @@
 ./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/header_generic.h
+./mibgroup/util_funcs.lo: ./mibgroup/util_funcs/header_simple_table.h
+./mibgroup/util_funcs.lo: ./mibgroup/util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./mibgroup/util_funcs.lo: ./mibgroup/utilities/execute.h
 ./mibgroup/util_funcs.lo: ./mibgroup/ucd-snmp/errormib.h
 ./mibgroup/util_funcs.lo: ../agent/mibgroup/mibdefs.h
 ./mibgroup/winExtDLL.lo: ../include/net-snmp/net-snmp-config.h
-./mibgroup/winExtDLL.lo: ../include/net-snmp/system/linux.h
-./mibgroup/winExtDLL.lo: ../include/net-snmp/system/sysv.h
-./mibgroup/winExtDLL.lo: ../include/net-snmp/system/generic.h
-./mibgroup/winExtDLL.lo: ../include/net-snmp/machine/generic.h
+./mibgroup/winExtDLL.lo: ../include/net-snmp/net-snmp-features.h
 ./mibgroup/winExtDLL.lo: ../include/net-snmp/agent/mib_module_config.h
diff --git a/agent/Makefile.in b/agent/Makefile.in
index a6448f8..748b01c 100644
--- a/agent/Makefile.in
+++ b/agent/Makefile.in
@@ -3,6 +3,7 @@
 #
 
 top_builddir	= ..
+mysubdir=agent
 
 # use GNU vpath, if available, to only set a path for source and headers
 # VPATH will pick up objects too, which is bad if you are sharing a
@@ -16,15 +17,18 @@
 # what to install
 #
 SUBDIRS=helpers mibgroup
+FTSUBDIRS=mibgroup helpers
 
 INSTALLSBINPROGS= @SNMPD@
 INSTALLLIBS	= libnetsnmpagent.$(LIB_EXTENSION)$(LIB_VERSION)
 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 \
 	agent_trap.h \
 	auto_nlist.h \
 	ds_agent.h \
@@ -34,7 +38,38 @@
 	agent_handler.h \
 	net-snmp-agent-includes.h \
 	mib_modules.h \
-	agent_callbacks.h
+	agent_callbacks.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 \
@@ -42,7 +77,8 @@
 INSTALLBUILTSUBDIR=agent
 
 INCLUDEMIBGROUPDIR=agent/mibgroup
-INCLUDEMIBGROUPDIRHEADERS=util_funcs.h
+INCLUDEMIBGROUPDIRHEADERS=struct.h util_funcs.h util_funcs/header_generic.h \
+	util_funcs/header_simple_table.h util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 
 OTHERINSTALL=installmibgroupheaders @EMBEDPERLINSTALL@
 OTHERUNINSTALL=@EMBEDPERLUNINSTALL@
@@ -60,6 +96,7 @@
 	agent_index.h	\
 	agent_read_config.h \
 	agent_registry.h \
+	agent_sysORTable.h \
 	agent_trap.h	\
 	auto_nlist.h	\
 	ds_agent.h	\
@@ -75,16 +112,16 @@
 # 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)
 
 LAGENTLIBS	= @LAGENTLIBS@
 LMIBLIBS	= @LMIBLIBS@
+VAL_LIBS	= @VAL_LIBS@
 PERLLDOPTS_FOR_APPS = @PERLLDOPTS_FOR_APPS@
 PERLLDOPTS_FOR_LIBS = @PERLLDOPTS_FOR_LIBS@
-LIBS		= $(USELIBS) @AGENTLIBS@ $(PERLLDOPTS_FOR_APPS)
-OUR_AGENT_LIBS	= $(AGENTLIB) $(HELPERLIB) $(MIBLIB) $(LIBS) @DLLIBS@
+LIBS		= $(USELIBS) @AGENTLIBS@ $(PERLLDOPTS_FOR_APPS) $(VAL_LIBS)
+OUR_AGENT_LIBS	= $(AGENTLIB) $(MIBLIB) $(LIBS) @DLLIBS@
 CPPFLAGS	= $(TOP_INCLUDES) -I. $(AGENT_INCLUDES) $(MIBGROUP_INCLUDES) \
 		  $(SNMPLIB_INCLUDES) @CPPFLAGS@ 
 
@@ -95,30 +132,149 @@
 
 # libnetsnmpmibs objects.
 @mibgroup_list_lo@
+@mibgroup_list_ft@
 @mibgroup_list_o@
 @agentgroup_list_lo@
+@agentgroup_list_ft@
 @agentgroup_list_o@
+FTMIBOBJS	= $(mibgroup_list_ft) mib_modules.ft auto_nlist.ft
 LMIBOBJS	= $(mibgroup_list_lo) mib_modules.lo auto_nlist.lo
 MIBOBJS		= $(mibgroup_list_o) mib_modules.o auto_nlist.o
 
 # libnetsnmpagent objects
-LIBAGENTOBJS=snmp_agent.o snmp_vars.o agent_read_config.o \
-	agent_registry.o agent_index.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_trap.lo kernel.lo \
-	agent_handler.lo $(agentgroup_list_lo) @OTHERAGENTLIBLOBJS@
+LIBAGENTOBJS= \
+	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 \
+	agent_handler.o \
+	agent_index.o \
+	agent_read_config.o \
+	agent_registry.o \
+	agent_sysORTable.o \
+	agent_trap.o \
+	kernel.o \
+	snmp_agent.o \
+	snmp_vars.o \
+	$(agentgroup_list_o) \
+	@OTHERAGENTLIBOBJS@
+
+LLIBAGENTOBJS= \
+	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 \
+	agent_handler.lo \
+	agent_index.lo \
+	agent_read_config.lo \
+	agent_registry.lo \
+	agent_sysORTable.lo \
+	agent_trap.lo \
+	kernel.lo \
+	snmp_agent.lo \
+	snmp_vars.lo \
+	$(agentgroup_list_lo) \
+	@OTHERAGENTLIBLOBJS@
+
+LLIBAGENTFTS= \
+	helpers/all_helpers.ft \
+	helpers/baby_steps.ft \
+	helpers/bulk_to_next.ft \
+	helpers/cache_handler.ft \
+	helpers/debug_handler.ft \
+	helpers/instance.ft \
+	helpers/mode_end_call.ft \
+	helpers/multiplexer.ft \
+	helpers/null.ft \
+	helpers/old_api.ft \
+	helpers/read_only.ft \
+	helpers/row_merge.ft \
+	helpers/scalar.ft \
+	helpers/scalar_group.ft \
+	helpers/serialize.ft \
+	helpers/snmp_get_statistic.ft \
+	helpers/stash_cache.ft \
+	helpers/stash_to_next.ft \
+	helpers/table.ft \
+	helpers/table_array.ft \
+	helpers/table_container.ft \
+	helpers/table_data.ft \
+	helpers/table_dataset.ft \
+	helpers/table_iterator.ft \
+	helpers/table_row.ft \
+	helpers/table_tdata.ft \
+	helpers/watcher.ft \
+	agent_handler.ft \
+	agent_index.ft \
+	agent_read_config.ft \
+	agent_registry.ft \
+	agent_sysORTable.ft \
+	agent_trap.ft \
+	kernel.ft \
+	snmp_agent.ft \
+	snmp_vars.ft \
+	$(agentgroup_list_ft) \
+	@OTHERAGENTLIBLFTS@
 
 # The agent objects.
 AGENTOBJS=snmpd.o @other_agentobjs@
 LAGENTOBJS=snmpd.lo @other_lagentobjs@
+FTAGENTOBJS=snmpd.ft @other_ftagentobjs@
 
 #
 # Define OBJS and LOBJS for clean target (just this directory)
 #
 OBJS		= $(LIBAGENTOBJS)  $(AGENTOBJS)  mib_modules.o  auto_nlist.o
 LOBJS		= $(LLIBAGENTOBJS) $(LAGENTOBJS) mib_modules.lo auto_nlist.lo
+FTOBJS		= $(LLIBAGENTFTS) $(FTAGENTOBJS) mib_modules.ft auto_nlist.ft
 
+FEATUREFILE     = $(top_builddir)/include/net-snmp/agent/features.h
 
 all: agentlib subdirs miblib $(INSTALLBINPROGS) $(INSTALLSBINPROGS)
 
@@ -140,13 +296,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) ${LMIBLIBS} $(LDFLAGS) $(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)
@@ -165,15 +320,16 @@
 	  @echo "removed snmp_perl.pl from $(INSTALL_PREFIX)$(snmplibdir)"
 
 installmibgroupheaders:
-	@if test "$(INCLUDEMIBGROUPDIRHEADERS)" != "" ; then \
-                echo creating directory $(INSTALL_PREFIX)$(includedir)/agent ; \
-                it="$(INCLUDEMIBGROUPDIRHEADERS)" ; \
-                $(SHELL) $(top_srcdir)/mkinstalldirs $(INSTALL_PREFIX)$(includedir)/agent ; \
-                for i in $$it ; do \
-                        $(INSTALL_DATA) $(top_srcdir)/$(INCLUDEMIBGROUPDIR)/$$i $(INSTALL_PREFIX)$(includedir)/agent ; \
-                        echo "installing $$i in $(INSTALL_PREFIX)$(includedir)/agent" ; \
-                done \
-        fi
+	@for it in $(INCLUDEMIBGROUPDIRHEADERS) ; do \
+		itd=`dirname "$(INSTALL_PREFIX)$(includedir)/agent/$$it"` ; \
+		if [ ! -d "$$itd" ] ; then \
+			echo "creating directory $$itd" ; \
+			$(SHELL) "$(top_srcdir)/mkinstalldirs" "$$itd" ; \
+		fi ; \
+		$(INSTALL_DATA) "$(top_srcdir)/$(INCLUDEMIBGROUPDIR)/$$it" \
+			"$$itd" ; \
+		echo "installing $$it in $$itd" ; \
+	done
 
 @module_list_deps@
 @agent_module_list_deps@
@@ -184,10 +340,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 fcbc6dd..59e9613 100644
--- a/agent/agent_handler.c
+++ b/agent/agent_handler.c
@@ -9,6 +9,7 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 
@@ -21,6 +22,9 @@
 
 #include <net-snmp/agent/bulk_to_next.h>
 
+netsnmp_feature_child_of(agent_handler, libnetsnmpagent)
+
+netsnmp_feature_child_of(handler_mark_requests_as_delegated, agent_handler)
 
 static netsnmp_mib_handler *_clone_handler(netsnmp_mib_handler *it);
 
@@ -84,9 +88,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 +123,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 +140,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, 
@@ -162,7 +169,7 @@
 netsnmp_handler_registration *
 netsnmp_handler_registration_create(const char *name,
                                     netsnmp_mib_handler *handler,
-                                    oid * reg_oid, size_t reg_oid_len,
+                                    const oid * reg_oid, size_t reg_oid_len,
                                     int modes)
 {
     netsnmp_handler_registration *the_reg;
@@ -179,24 +186,68 @@
     the_reg->priority = DEFAULT_MIB_PRIORITY;
     if (name)
         the_reg->handlerName = strdup(name);
-    the_reg->rootoid = netsnmp_memdup(reg_oid, reg_oid_len * sizeof(oid));
+    the_reg->rootoid = snmp_duplicate_objid(reg_oid, reg_oid_len);
     the_reg->rootoid_len = reg_oid_len;
     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 *
-                                    handler_access_method, oid * reg_oid,
+                                    handler_access_method, const oid * reg_oid,
                                     size_t reg_oid_len, int modes)
 {
-    return
-        netsnmp_handler_registration_create(name,
-                                            netsnmp_create_handler(name, handler_access_method),
-                                            reg_oid, reg_oid_len, modes);
+    netsnmp_handler_registration *rv = NULL;
+    netsnmp_mib_handler *handler =
+        netsnmp_create_handler(name, handler_access_method);
+    if (handler) {
+        rv = netsnmp_handler_registration_create(
+            name, handler, reg_oid, reg_oid_len, modes);
+        if (!rv)
+            netsnmp_handler_free(handler);
+    }
+    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)
 {
@@ -261,7 +312,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)
 {
@@ -271,7 +333,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)
 {
@@ -319,11 +395,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,
@@ -377,10 +458,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)
@@ -388,7 +474,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,
@@ -409,53 +501,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,
@@ -486,6 +580,7 @@
             return SNMP_ERR_NOERROR;    /* legal */
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
@@ -500,6 +595,7 @@
             return SNMP_ERR_NOERROR;
         }
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     default:
         snmp_log(LOG_ERR, "unknown mode in netsnmp_call_handlers! bug!\n");
@@ -517,8 +613,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,
@@ -539,8 +640,15 @@
     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_feature_child_of(netsnmp_call_next_handler_one_request,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_CALL_NEXT_HANDLER_ONE_REQUEST
 NETSNMP_INLINE int
 netsnmp_call_next_handler_one_request(netsnmp_mib_handler *current,
                                       netsnmp_handler_registration *reginfo,
@@ -562,8 +670,15 @@
     requests->next = request;
     return ret;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_CALL_NEXT_HANDLER_ONE_REQUEST */
 
-/** 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)
 {
@@ -583,39 +698,66 @@
     }
 }
 
-/** 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)
 {
     netsnmp_mib_handler *h = NULL;
 
-    if (handler == NULL) {
-        return NULL;
-    }
+    if (!handler)
+        goto err;
 
     h = _clone_handler(handler);
+    if (!h)
+        goto err;
 
-    if (h != NULL) {
+    /*
+     * Providing a clone function without a free function is asking for
+     * memory leaks, and providing a free function without clone function
+     * is asking for memory corruption. Hence the log statement below.
+     */
+    if (!!handler->data_clone != !!handler->data_free)
+        snmp_log(LOG_ERR, "data_clone / data_free inconsistent (%s)\n",
+                 handler->handler_name);
+    if (handler->myvoid && handler->data_clone) {
+        h->myvoid = handler->data_clone(handler->myvoid);
+        if (!h->myvoid)
+            goto err;
+    } else
         h->myvoid = handler->myvoid;
-        h->data_free = handler->data_free;
+    h->data_clone = handler->data_clone;
+    h->data_free = handler->data_free;
 
-        if (handler->next != NULL) {
-            h->next = netsnmp_handler_dup(handler->next);
-            if (h->next == NULL) {
-                netsnmp_handler_free(h);
-                return NULL;
-            }
-            h->next->prev = h;
-        }
-        h->prev = NULL;
-        return h;
+    if (handler->next != NULL) {
+        h->next = netsnmp_handler_dup(handler->next);
+        if (!h->next)
+            goto err;
+        h->next->prev = h;
     }
+    h->prev = NULL;
+    return h;
+
+err:
+    netsnmp_handler_free(h);
     return NULL;
 }
 
-/** 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)
 {
@@ -629,7 +771,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)
 {
@@ -669,8 +820,8 @@
         }
 
         if (reginfo->rootoid != NULL) {
-            r->rootoid = netsnmp_memdup(reginfo->rootoid,
-                                        reginfo->rootoid_len * sizeof(oid));
+            r->rootoid =
+                snmp_duplicate_objid(reginfo->rootoid, reginfo->rootoid_len);
             if (r->rootoid == NULL) {
                 netsnmp_handler_registration_free(r);
                 return NULL;
@@ -688,9 +839,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,
@@ -712,9 +870,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)
 {
@@ -728,7 +894,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)
 {
@@ -742,7 +917,14 @@
 }
 
 
-/** marks a list of requests as delegated (or not if isdelegaded = 0) */
+#ifndef NETSNMP_FEATURE_REMOVE_HANDLER_MARK_REQUESTS_AS_DELEGATED
+/** Sets a list of requests as delegated or not delegated.
+ *  Sweeps through given chain of requests and sets 'delegated'
+ *  flag accordingly to the isdelegaded 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)
@@ -752,16 +934,18 @@
         requests = requests->next;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_HANDLER_MARK_REQUESTS_AS_DELEGATED */
 
-/** 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,
@@ -775,7 +959,7 @@
     }
 }
 
-/** remove data from a request
+/** Removes all data from a request.
  *
  * @param request the netsnmp request info structure
  *
@@ -783,6 +967,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,
@@ -794,16 +980,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,
@@ -814,7 +1004,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)
 {
@@ -822,7 +1020,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)
 {
@@ -832,7 +1037,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)
@@ -848,10 +1063,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)
@@ -862,8 +1089,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)
@@ -888,7 +1119,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,
@@ -900,7 +1139,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)
@@ -910,8 +1155,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
@@ -958,8 +1203,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)
@@ -975,9 +1220,10 @@
         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) {
-        config_perror("no such \"%s\" handler registered.");
+	netsnmp_config_error("no \"%s\" handler registered.",
+			     handler_to_insert);
         return;
     }
 
@@ -995,8 +1241,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
@@ -1007,8 +1253,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)
@@ -1023,6 +1272,7 @@
     se_add_pair_to_slist("agent_mode", strdup("GET"), MODE_GET);
     se_add_pair_to_slist("agent_mode", strdup("GETNEXT"), MODE_GETNEXT);
     se_add_pair_to_slist("agent_mode", strdup("GETBULK"), MODE_GETBULK);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     se_add_pair_to_slist("agent_mode", strdup("SET_BEGIN"),
                          MODE_SET_BEGIN);
     se_add_pair_to_slist("agent_mode", strdup("SET_RESERVE1"),
@@ -1063,6 +1313,7 @@
     se_add_pair_to_slist("babystep_mode", strdup("post_request"),
                          MODE_BSTEP_POST_REQUEST);
     se_add_pair_to_slist("babystep_mode", strdup("original"), 0xffff);
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     /*
      * xxx-rks: hmmm.. will this work for modes which are or'd together?
diff --git a/agent/agent_index.c b/agent/agent_index.c
index ed9ba14..0129217 100644
--- a/agent/agent_index.c
+++ b/agent/agent_index.c
@@ -8,6 +8,7 @@
 
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <signal.h>
 #if HAVE_STRING_H
 #include <string.h>
@@ -18,15 +19,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
@@ -54,6 +48,10 @@
 #include "agentx/client.h"
 #endif
 
+netsnmp_feature_child_of(agent_index_all, libnetsnmpagent)
+
+netsnmp_feature_child_of(remove_index, agent_index_all)
+
         /*
          * Initial support for index allocation
          */
@@ -92,7 +90,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;
     }
@@ -163,7 +165,7 @@
 
     DEBUGMSGTL(("register_index", "register "));
     DEBUGMSGVAR(("register_index", varbind));
-    DEBUGMSG(("register_index", "for session %08p\n", ss));
+    DEBUGMSG(("register_index", "for session %8p\n", ss));
 
 #if defined(USING_AGENTX_SUBAGENT_MODULE) && !defined(TESTING)
     if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
@@ -301,12 +303,12 @@
     if (new_index == NULL)
         return NULL;
 
-    if (0 == snmp_varlist_add_variable(&new_index->varbind,
-                                       varbind->name,
-                                       varbind->name_length,
-                                       varbind->type,
-                                       varbind->val.string,
-                                       varbind->val_len)) {
+    if (NULL == snmp_varlist_add_variable(&new_index->varbind,
+                                          varbind->name,
+                                          varbind->name_length,
+                                          varbind->type,
+                                          varbind->val.string,
+                                          varbind->val_len)) {
         /*
          * if (snmp_clone_var( varbind, new_index->varbind ) != 0 ) 
          */
@@ -453,12 +455,16 @@
          * Release an allocated index,
          *   to allow it to be used elsewhere
          */
+netsnmp_feature_child_of(release_index,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_RELEASE_INDEX
 int
 release_index(netsnmp_variable_list * varbind)
 {
     return (unregister_index(varbind, TRUE, NULL));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_RELEASE_INDEX */
 
+#ifndef NETSNMP_FEATURE_REMOVE_REMOVE_INDEX
         /*
          * Completely remove an allocated index,
          *   due to errors in the registration process.
@@ -468,6 +474,7 @@
 {
     return (unregister_index(varbind, FALSE, ss));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REMOVE_INDEX */
 
 void
 unregister_index_by_session(netsnmp_session * ss)
@@ -591,6 +598,8 @@
     return SNMP_ERR_NOERROR;
 }
 
+netsnmp_feature_child_of(unregister_indexes,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_UNREGISTER_INDEXES
 int
 unregister_string_index(oid * name, size_t name_len, char *cp)
 {
@@ -630,6 +639,7 @@
                        value_len * sizeof(oid));
     return (unregister_index(&varbind, FALSE, main_session));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UNREGISTER_INDEXES */
 
 void
 dump_idx_registry(void)
@@ -695,6 +705,8 @@
     }
 }
 
+netsnmp_feature_child_of(count_indexes, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_UNUSED
 unsigned long
 count_indexes(oid * name, size_t namelen, int include_unallocated)
 {
@@ -714,7 +726,7 @@
     }
     return n;
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_UNUSED */
 
 #ifdef TESTING
 netsnmp_variable_list varbind;
diff --git a/agent/agent_read_config.c b/agent/agent_read_config.c
index 533042a..f9ef1af 100644
--- a/agent/agent_read_config.c
+++ b/agent/agent_read_config.c
@@ -3,6 +3,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_SYS_PARAM_H
 #include <sys/param.h>
@@ -22,11 +23,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 +58,6 @@
 #include <sys/param.h>
 #endif
 #endif
-#elif HAVE_WINSOCK_H
-#include <winsock.h>
 #endif
 #if HAVE_SYS_STREAM_H
 #   ifdef sysv5UnixWare7
@@ -112,17 +107,18 @@
 #include "agent_module_includes.h"
 #include "mib_module_includes.h"
 
+netsnmp_feature_child_of(agent_read_config_all, libnetsnmpagent)
+
+netsnmp_feature_child_of(snmpd_unregister_config_handler, agent_read_config_all)
+
 #ifdef HAVE_UNISTD_H
 void
 snmpd_set_agent_user(const char *token, char *cptr)
 {
-#if defined(HAVE_GETPWNAM) && defined(HAVE_PWD_H)
-    struct passwd  *info;
-#endif
-
     if (cptr[0] == '#') {
         char           *ecp;
         int             uid;
+
         uid = strtoul(cptr + 1, &ecp, 10);
         if (*ecp != 0) {
             config_perror("Bad number");
@@ -130,47 +126,51 @@
 	    netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
 			       NETSNMP_DS_AGENT_USERID, uid);
 	}
-    }
 #if defined(HAVE_GETPWNAM) && defined(HAVE_PWD_H)
-    else if ((info = getpwnam(cptr)) != NULL) {
-        netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
-			   NETSNMP_DS_AGENT_USERID, info->pw_uid);
     } else {
-        config_perror("User not found in passwd database");
-    }
-    endpwent();
+        struct passwd  *info;
+
+        info = getpwnam(cptr);
+        if (info)
+            netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
+                               NETSNMP_DS_AGENT_USERID, info->pw_uid);
+        else
+            config_perror("User not found in passwd database");
+        endpwent();
 #endif
+    }
 }
 
 void
 snmpd_set_agent_group(const char *token, char *cptr)
 {
-#if defined(HAVE_GETGRNAM) && defined(HAVE_GRP_H)
-    struct group   *info;
-#endif
-
     if (cptr[0] == '#') {
         char           *ecp;
         int             gid = strtoul(cptr + 1, &ecp, 10);
+
         if (*ecp != 0) {
             config_perror("Bad number");
 	} else {
             netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
 			       NETSNMP_DS_AGENT_GROUPID, gid);
 	}
-    }
 #if defined(HAVE_GETGRNAM) && defined(HAVE_GRP_H)
-    else if ((info = getgrnam(cptr)) != NULL) {
-        netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
-			   NETSNMP_DS_AGENT_GROUPID, info->gr_gid);
     } else {
-        config_perror("Group not found in group database");
-    }
-    endpwent();
+        struct group   *info;
+
+        info = getgrnam(cptr);
+        if (info)
+            netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
+                               NETSNMP_DS_AGENT_GROUPID, info->gr_gid);
+        else
+            config_perror("Group not found in group database");
+        endgrent();
 #endif
+    }
 }
 #endif
 
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
 void
 snmpd_set_agent_address(const char *token, char *cptr)
 {
@@ -197,6 +197,7 @@
     netsnmp_ds_set_string(NETSNMP_DS_APPLICATION_ID, 
 			  NETSNMP_DS_AGENT_PORTS, buf);
 }
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
 
 void
 init_agent_read_config(const char *app)
@@ -245,15 +246,20 @@
                                 snmpd_free_trapcommunity,
                                 "community-string");
 #endif /* support for community based SNMP */
+    netsnmp_ds_register_config(ASN_OCTET_STR, app, "v1trapaddress", 
+                               NETSNMP_DS_APPLICATION_ID, 
+                               NETSNMP_DS_AGENT_TRAP_ADDR);
 #ifdef HAVE_UNISTD_H
     register_app_config_handler("agentuser",
                                 snmpd_set_agent_user, NULL, "userid");
     register_app_config_handler("agentgroup",
                                 snmpd_set_agent_group, NULL, "groupid");
 #endif
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
     register_app_config_handler("agentaddress",
                                 snmpd_set_agent_address, NULL,
                                 "SNMP bind address");
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
     netsnmp_ds_register_config(ASN_BOOLEAN, app, "quit", 
 			       NETSNMP_DS_APPLICATION_ID,
 			       NETSNMP_DS_AGENT_QUIT_IMMEDIATELY);
@@ -284,9 +290,6 @@
     snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,
                         SNMPD_CALLBACK_PRE_UPDATE_CONFIG, NULL);
     free_config();
-#ifdef USING_MIBII_VACM_CONF_MODULE
-    vacm_standard_views(0,0,NULL,NULL);
-#endif
     read_configs();
 }
 
@@ -302,10 +305,27 @@
 }
 
 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);
+}
+
+#ifdef NETSNMP_FEATURE_REQUIRE_SNMPD_UNREGISTER_CONFIG_HANDLER
+netsnmp_feature_require(unregister_app_config_handler)
+#endif /* NETSNMP_FEATURE_REQUIRE_SNMPD_UNREGISTER_CONFIG_HANDLER */
+
+#ifndef NETSNMP_FEATURE_REMOVE_SNMPD_UNREGISTER_CONFIG_HANDLER
+void
 snmpd_unregister_config_handler(const char *token)
 {
     unregister_app_config_handler(token);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMPD_UNREGISTER_CONFIG_HANDLER */
 
 /*
  * this function is intended for use by mib-modules to store permenant
diff --git a/agent/agent_registry.c b/agent/agent_registry.c
index d0d35b7..0dd6c42 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
  *
  * @{
@@ -20,6 +22,8 @@
 #define IN_SNMP_VARS_C
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
 #include <signal.h>
 #if HAVE_STRING_H
 #include <string.h>
@@ -30,15 +34,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 +49,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,13 +66,395 @@
 #include "agentx/client.h"
 #endif
 
-static void register_mib_detach_node(netsnmp_subtree *s);
-NETSNMP_STATIC_INLINE void invalidate_lookup_cache(const char *context);
-void netsnmp_set_lookup_cache_size(int newsize);
-int netsnmp_get_lookup_cache_size(void);
+netsnmp_feature_child_of(agent_registry_all, libnetsnmpagent)
 
+netsnmp_feature_child_of(unregister_mib_table_row, agent_registry_all)
+
+/** @defgroup agent_lookup_cache Lookup cache, storing the registered OIDs.
+ *     Maintain the cache used for locating sub-trees and OIDs.
+ *   @ingroup agent_registry
+ *
+ * @{
+ */
+
+/**  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 */
+
+typedef struct lookup_cache_s {
+   netsnmp_subtree *next;
+   netsnmp_subtree *previous;
+} lookup_cache;
+
+typedef struct lookup_cache_context_s {
+   char *context;
+   struct lookup_cache_context_s *next;
+   int thecachecount;
+   int currentpos;
+   lookup_cache cache[SUBTREE_MAX_CACHE_SIZE];
+} lookup_cache_context;
+
+static lookup_cache_context *thecontextcache = NULL;
+
+/** 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) {
+    if (newsize < 0)
+        lookup_cache_size = SUBTREE_DEFAULT_CACHE_SIZE;
+    else if (newsize < SUBTREE_MAX_CACHE_SIZE)
+        lookup_cache_size = newsize;
+    else
+        lookup_cache_size = SUBTREE_MAX_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
+netsnmp_get_lookup_cache_size(void) {
+    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;
+    if (!context)
+        context = "";
+
+    for(ptr = thecontextcache; ptr; ptr = ptr->next) {
+        if (strcmp(ptr->context, context) == 0)
+            break;
+    }
+    if (!ptr) {
+        if (netsnmp_subtree_find_first(context)) {
+            ptr = SNMP_MALLOC_TYPEDEF(lookup_cache_context);
+            ptr->next = thecontextcache;
+            ptr->context = strdup(context);
+            thecontextcache = ptr;
+        } else {
+            return NULL;
+        }
+    }
+    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) {
+    lookup_cache_context *cptr;
+
+    if ((cptr = get_context_lookup_cache(context)) == NULL)
+        return;
+
+    if (cptr->thecachecount < lookup_cache_size)
+        cptr->thecachecount++;
+
+    cptr->cache[cptr->currentpos].next = next;
+    cptr->cache[cptr->currentpos].previous = previous;
+
+    if (++cptr->currentpos >= lookup_cache_size)
+        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) {
+
+    ptr->next = next;
+    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, const oid *name, size_t name_len,
+                  int *retcmp) {
+    lookup_cache_context *cptr;
+    lookup_cache *ret = NULL;
+    int cmp;
+    int i;
+
+    if ((cptr = get_context_lookup_cache(context)) == NULL)
+        return NULL;
+
+    for(i = 0; i < cptr->thecachecount && i < lookup_cache_size; i++) {
+        if (cptr->cache[i].previous->start_a)
+            cmp = snmp_oid_compare(name, name_len,
+                                   cptr->cache[i].previous->start_a,
+                                   cptr->cache[i].previous->start_len);
+        else
+            cmp = 1;
+        if (cmp >= 0) {
+            *retcmp = cmp;
+            ret = &(cptr->cache[i]);
+        }
+    }
+    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;
+    if ((cptr = get_context_lookup_cache(context)) != NULL) {
+        cptr->thecachecount = 0;
+        cptr->currentpos = 0;
+    }
+}
+
+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 */
+
+/** @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)
 {
@@ -96,6 +476,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)
 {
@@ -136,78 +524,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;
@@ -219,7 +539,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;
@@ -231,12 +554,29 @@
                                &ptr->oid_off);
 }
 
+netsnmp_feature_child_of(netsnmp_subtree_compare,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_SUBTREE_COMPARE
+/** Compares OIDs of given subtrees.
+ *
+ *  @param ap,bp Pointers to the subtrees to be compared.
+ *
+ *  @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);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_SUBTREE_COMPARE */
 
+/** Joins the given subtree with the current tree.
+ *  Trees are joined and the one supplied as parameter is freed.
+ *
+ *  @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)
 {
@@ -283,10 +623,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)
 {
@@ -320,9 +668,7 @@
 	return NULL;
     }
 
-    if (current->end_a != NULL) {
-	SNMP_FREE(current->end_a);
-    }
+    SNMP_FREE(current->end_a);
     current->end_a = tmp_a;
     current->end_len = name_len;
     if (new_sub->start_a != NULL) {
@@ -393,12 +739,19 @@
     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)
 {
-    netsnmp_subtree *tree1, *tree2, *new2;
+    netsnmp_subtree *tree1, *tree2;
     netsnmp_subtree *prev, *next;
-    int             res, rc = 0;
 
     if (new_sub == NULL) {
         return MIB_REGISTERED_OK;       /* Degenerate case */
@@ -440,7 +793,7 @@
     /*  Handle new subtrees that start in virgin territory.  */
 
     if (tree1 == NULL) {
-	new2 = NULL;
+        netsnmp_subtree *new2 = NULL;
 	/*  Is there any overlap with later subtrees?  */
 	if (tree2 && snmp_oid_compare(new_sub->end_a, new_sub->end_len,
 				      tree2->start_a, tree2->start_len) > 0) {
@@ -499,10 +852,8 @@
 	    If the new subtree extends beyond this existing region,
 	            split it, and recurse to merge the two parts.  */
 
-	rc = snmp_oid_compare(new_sub->end_a, new_sub->end_len, 
-			      tree1->end_a, tree1->end_len);
-
-        switch (rc) {
+	switch (snmp_oid_compare(new_sub->end_a, new_sub->end_len,
+                                 tree1->end_a, tree1->end_len)) {
 
 	case -1:
 	    /*  Existing subtree contains new one.  */
@@ -531,8 +882,23 @@
 	
 	    if (next && (next->namelen  == new_sub->namelen) &&
 		(next->priority == new_sub->priority)) {
-                if (new_sub->namelen != 1) /* ignore root OID dups */
-                    snmp_log(LOG_ERR, "duplicate registration (%s, %s)", next->label_a, new_sub->label_a);
+                if (new_sub->namelen != 1) {    /* ignore root OID dups */
+                    size_t          out_len = 0;
+                    size_t          buf_len = 0;
+                    char           *buf = NULL;
+                    int             buf_overflow = 0;
+
+                    netsnmp_sprint_realloc_objid((u_char **) &buf, &buf_len, &out_len,
+                                                 1, &buf_overflow,
+                                                 new_sub->start_a,
+                                                 new_sub->start_len);
+                    snmp_log(LOG_ERR,
+                             "duplicate registration: MIB modules %s and %s (oid %s%s).\n",
+                             next->label_a, new_sub->label_a,
+                             buf ? buf : "",
+                             buf_overflow ? " [TRUNCATED]" : "");
+                    free(buf);
+                }
 		return MIB_DUPLICATE_REGISTRATION;
 	    }
 
@@ -558,20 +924,188 @@
 
 	case  1:
 	    /*  New subtree contains the existing one.  */
-	    new2 = netsnmp_subtree_split(new_sub, tree1->end_a,tree1->end_len);
-	    res = netsnmp_subtree_load(new_sub, context_name);
-	    if (res != MIB_REGISTERED_OK) {
-		netsnmp_subtree_free(new2);
-		return res;
-	    }
-	    return netsnmp_subtree_load(new2, context_name);
-	}
+            {
+                netsnmp_subtree *new2 =
+                    netsnmp_subtree_split(new_sub, tree1->end_a,tree1->end_len);
+                int res = netsnmp_subtree_load(new_sub, context_name);
+                if (res != MIB_REGISTERED_OK) {
+                    netsnmp_remove_subtree(new2);
+                    netsnmp_subtree_free(new2);
+                    return res;
+                }
+                return netsnmp_subtree_load(new2, context_name);
+            }
+        }
     }
     return 0;
 }
 
-/*
- * 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(const 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(const 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(const 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,
@@ -591,7 +1125,7 @@
                      int perform_callback)
 {
     netsnmp_subtree *subtree, *sub2;
-    int             res, i;
+    int             res;
     struct register_parameters reg_parms;
     int old_lookup_cache_val = netsnmp_get_lookup_cache_size();
 
@@ -672,6 +1206,7 @@
 	rest of the range.  */
 
     if (res == MIB_REGISTERED_OK && range_subid != 0) {
+        int i;
 	for (i = mibloc[range_subid - 1] + 1; i <= (int)range_ubound; i++) {
 	    sub2 = netsnmp_subtree_deepcopy(subtree);
 
@@ -698,6 +1233,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);
@@ -733,6 +1269,9 @@
         reg_parms.timeout = timeout;
         reg_parms.flags = (u_char) flags;
         reg_parms.contextName = context;
+        reg_parms.session = ss;
+        reg_parms.reginfo = reginfo;
+        reg_parms.contextName = context;
         snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,
                             SNMPD_CALLBACK_REGISTER_OID, &reg_parms);
     }
@@ -742,10 +1281,9 @@
     return res;
 }
 
-/*
- * Reattach a particular node.  
+/** @private
+ *  Reattach a particular node.  
  */
-
 static void
 register_mib_reattach_node(netsnmp_subtree *s)
 {
@@ -766,6 +1304,9 @@
         reg_parms.range_ubound = s->range_ubound;
         reg_parms.timeout = s->timeout;
         reg_parms.flags = s->flags;
+        reg_parms.session = s->session;
+        reg_parms.reginfo = s->reginfo;
+        /* XXX: missing in subtree: reg_parms.contextName = s->context; */
         if ((NULL != s->reginfo) && (NULL != s->reginfo->contextName))
             reg_parms.contextName = s->reginfo->contextName;
         snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,
@@ -774,10 +1315,8 @@
     }
 }
 
-/*
- * Call callbacks to reattach all our nodes.  
+/** Call callbacks to reattach all our nodes.  
  */
-
 void
 register_mib_reattach(void)
 {
@@ -794,10 +1333,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)
 {
@@ -806,12 +1346,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)
 {
@@ -827,12 +1365,60 @@
     }
 }
 
+/** 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,
+                     const struct variable *var,
                      size_t varsize,
                      size_t numvars,
-                     oid * mibloc,
+                     const oid * mibloc,
                      size_t mibloclen,
                      int priority,
                      int range_subid,
@@ -846,12 +1432,58 @@
                                     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,
+                   const struct variable *var,
                    size_t varsize,
                    size_t numvars,
-                   oid * mibloc,
+                   const oid * mibloc,
                    size_t mibloclen,
                    int priority,
                    int range_subid, oid range_ubound, netsnmp_session * ss)
@@ -861,27 +1493,101 @@
                                 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,
+                      const struct variable *var,
                       size_t varsize,
                       size_t numvars,
-                      oid * mibloc, size_t mibloclen, int priority)
+                      const oid * mibloc, size_t mibloclen, int priority)
 {
     return register_mib_range(moduleName, var, varsize, numvars,
                               mibloc, mibloclen, priority, 0, 0, NULL);
 }
 
+/** 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,
+             const struct variable *var,
              size_t varsize,
-             size_t numvars, oid * mibloc, size_t mibloclen)
+             size_t numvars, const oid * mibloc, size_t mibloclen)
 {
     return register_mib_priority(moduleName, var, varsize, numvars,
                                  mibloc, mibloclen, DEFAULT_MIB_PRIORITY);
 }
 
+/** @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)
 {
@@ -937,10 +1643,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.
@@ -962,8 +1668,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,
@@ -979,7 +1688,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){
@@ -1064,6 +1773,7 @@
     return MIB_UNREGISTERED_OK;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_UNREGISTER_MIB_TABLE_ROW
 int
 netsnmp_unregister_mib_table_row(oid * name, size_t len, int priority,
                                  int var_subid, oid range_ubound,
@@ -1142,7 +1852,38 @@
 
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UNREGISTER_MIB_TABLE_ROW */
 
+/**
+ * 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)
@@ -1151,18 +1892,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)
 {
@@ -1224,15 +2008,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)
 {
@@ -1277,17 +2067,22 @@
     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)
 {                               /* IN - pdu being checked */
     struct view_parameters view_parms;
     view_parms.pdu = pdu;
-    view_parms.name = 0;
+    view_parms.name = NULL;
     view_parms.namelen = 0;
     view_parms.errorcode = 0;
     view_parms.check_subtree = 0;
@@ -1312,12 +2107,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)
@@ -1349,249 +2151,10 @@
     return 1;
 }
 
-#define SUBTREE_DEFAULT_CACHE_SIZE 8
-#define SUBTREE_MAX_CACHE_SIZE     32
-int lookup_cache_size = 0; /*enabled later after registrations are loaded */
-
-typedef struct lookup_cache_s {
-   netsnmp_subtree *next;
-   netsnmp_subtree *previous;
-} lookup_cache;
-
-typedef struct lookup_cache_context_s {
-   char *context;
-   struct lookup_cache_context_s *next;
-   int thecachecount;
-   int currentpos;
-   lookup_cache cache[SUBTREE_MAX_CACHE_SIZE];
-} lookup_cache_context;
-
-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%
- * (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.
- */
-void
-netsnmp_set_lookup_cache_size(int newsize) {
-    if (newsize < 0)
-        lookup_cache_size = SUBTREE_DEFAULT_CACHE_SIZE;
-    else if (newsize < SUBTREE_MAX_CACHE_SIZE)
-        lookup_cache_size = newsize;
-    else
-        lookup_cache_size = SUBTREE_MAX_CACHE_SIZE;
-}
-
-/** retrieves the current value of the lookup cache size
- *  @return the current lookup cache size
- */
-int
-netsnmp_get_lookup_cache_size(void) {
-    return lookup_cache_size;
-}
-
-NETSNMP_STATIC_INLINE lookup_cache_context *
-get_context_lookup_cache(const char *context) {
-    lookup_cache_context *ptr;
-    if (!context)
-        context = "";
-
-    for(ptr = thecontextcache; ptr; ptr = ptr->next) {
-        if (strcmp(ptr->context, context) == 0)
-            break;
-    }
-    if (!ptr) {
-        if (netsnmp_subtree_find_first(context)) {
-            ptr = SNMP_MALLOC_TYPEDEF(lookup_cache_context);
-            ptr->next = thecontextcache;
-            ptr->context = strdup(context);
-            thecontextcache = ptr;
-        } else {
-            return NULL;
-        }
-    }
-    return ptr;
-}
-
-NETSNMP_STATIC_INLINE void
-lookup_cache_add(const char *context,
-                 netsnmp_subtree *next, netsnmp_subtree *previous) {
-    lookup_cache_context *cptr;
-
-    if ((cptr = get_context_lookup_cache(context)) == NULL)
-        return;
-    
-    if (cptr->thecachecount < lookup_cache_size)
-        cptr->thecachecount++;
-
-    cptr->cache[cptr->currentpos].next = next;
-    cptr->cache[cptr->currentpos].previous = previous;
-
-    if (++cptr->currentpos >= lookup_cache_size)
-        cptr->currentpos = 0;
-}
-
-NETSNMP_STATIC_INLINE void
-lookup_cache_replace(lookup_cache *ptr,
-                     netsnmp_subtree *next, netsnmp_subtree *previous) {
-
-    ptr->next = next;
-    ptr->previous = previous;
-}
-
-NETSNMP_STATIC_INLINE lookup_cache *
-lookup_cache_find(const char *context, oid *name, size_t name_len,
-                  int *retcmp) {
-    lookup_cache_context *cptr;
-    lookup_cache *ret = NULL;
-    int cmp;
-    int i;
-
-    if ((cptr = get_context_lookup_cache(context)) == NULL)
-        return NULL;
-
-    for(i = 0; i < cptr->thecachecount && i < lookup_cache_size; i++) {
-        if (cptr->cache[i].previous->start_a)
-            cmp = snmp_oid_compare(name, name_len,
-                                   cptr->cache[i].previous->start_a,
-                                   cptr->cache[i].previous->start_len);
-        else
-            cmp = 1;
-        if (cmp >= 0) {
-            *retcmp = cmp;
-            ret = &(cptr->cache[i]);
-        }
-    }
-    return ret;
-}
-
-NETSNMP_STATIC_INLINE void
-invalidate_lookup_cache(const char *context) {
-    lookup_cache_context *cptr;
-    if ((cptr = get_context_lookup_cache(context)) != NULL) {
-        cptr->thecachecount = 0;
-        cptr->currentpos = 0;
-    }
-}
-
-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 = %d, in off = %d test = %d\n",
-                  myptr->oid_off, 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_feature_child_of(get_session_for_oid,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_GET_SESSION_FOR_OID
 netsnmp_session *
-get_session_for_oid(oid *name, size_t len, const char *context_name)
+get_session_for_oid(const oid *name, size_t len, const char *context_name)
 {
     netsnmp_subtree *myptr;
 
@@ -1609,6 +2172,7 @@
         return myptr->session;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_GET_SESSION_FOR_OID */
 
 void
 setup_tree(void)
@@ -1668,63 +2232,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)
@@ -1779,7 +2286,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)) {
@@ -1801,19 +2308,27 @@
         }
     }
 
-    if (s != NULL) {
-        SNMP_FREE(s);
-    }
-    if (e != NULL) {
-        SNMP_FREE(e);
-    }
-    if (v != NULL) {
-        SNMP_FREE(v);
-    }
+    SNMP_FREE(s);
+    SNMP_FREE(e);
+    SNMP_FREE(v);
 
     dump_idx_registry();
 }
 
+/**  @} */
+/* End of MIB registration code */
+
+
+netsnmp_feature_child_of(register_signal, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_SIGNAL
+
+/** @defgroup agent_signals POSIX signals support for agents.
+ *     Registering and unregistering signal handlers.
+ *   @ingroup agent_registry
+ *
+ * @{
+ */
+
 int             external_signal_scheduled[NUM_EXTERNAL_SIGS];
 void            (*external_signal_handler[NUM_EXTERNAL_SIGS]) (int);
 
@@ -1838,6 +2353,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))
 {
@@ -1871,6 +2400,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)
 {
@@ -1882,3 +2417,9 @@
 #endif                          /* !WIN32 */
 
 /**  @} */
+/* End of signals support code */
+
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_SIGNAL */
+
+/**  @} */
+
diff --git a/agent/agent_sysORTable.c b/agent/agent_sysORTable.c
new file mode 100644
index 0000000..f628060
--- /dev/null
+++ b/agent/agent_sysORTable.c
@@ -0,0 +1,236 @@
+#include <net-snmp/net-snmp-config.h>
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#include <stddef.h>
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/agent_callbacks.h>
+#include <net-snmp/agent/agent_sysORTable.h>
+#include <net-snmp/agent/sysORTable.h>
+
+typedef struct data_node_s {
+    struct sysORTable data;
+    struct data_node_s* next;
+    struct data_node_s* prev;
+}* data_node;
+
+static data_node table = NULL;
+
+static void
+erase(data_node entry)
+{
+    entry->data.OR_uptime = netsnmp_get_agent_uptime();
+    DEBUGMSGTL(("agent/sysORTable", "UNREG_SYSOR %p\n", &entry->data));
+    snmp_call_callbacks(SNMP_CALLBACK_APPLICATION, SNMPD_CALLBACK_UNREG_SYSOR,
+                        &entry->data);
+    free(entry->data.OR_oid);
+    free(entry->data.OR_descr);
+    if (entry->next == entry)
+        table = NULL;
+    else {
+        entry->next->prev = entry->prev;
+        entry->prev->next = entry->next;
+        if (entry == table)
+            table = entry->next;
+    }
+    free(entry);
+}
+
+void
+netsnmp_sysORTable_foreach(void (*f)(const struct sysORTable*, void*), void* c)
+{
+    DEBUGMSGTL(("agent/sysORTable", "foreach(%p, %p)\n", f, c));
+    if(table) {
+        data_node run = table;
+        do {
+            data_node tmp = run;
+            run = run->next;
+            f(&tmp->data, c);
+        } while(table && run != table);
+    }
+}
+
+int
+register_sysORTable_sess(oid * oidin,
+                         size_t oidlen,
+                         const char *descr, netsnmp_session * ss)
+{
+    data_node entry;
+
+    DEBUGMSGTL(("agent/sysORTable", "registering: "));
+    DEBUGMSGOID(("agent/sysORTable", oidin, oidlen));
+    DEBUGMSG(("agent/sysORTable", ", session %p\n", ss));
+
+    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;
+    }
+
+    entry->data.OR_descr = strdup(descr);
+    if (entry->data.OR_descr == NULL) {
+        DEBUGMSGTL(("agent/sysORTable", "Failed to allocate new sysORDescr\n"));
+        free(entry);
+        return SYS_ORTABLE_REGISTRATION_FAILED;
+    }
+
+    entry->data.OR_oid = (oid *) malloc(sizeof(oid) * oidlen);
+    if (entry->data.OR_oid == NULL) {
+        DEBUGMSGTL(("agent/sysORTable", "Failed to allocate new sysORID\n"));
+        free(entry->data.OR_descr);
+        free(entry);
+        return SYS_ORTABLE_REGISTRATION_FAILED;
+    }
+
+    memcpy(entry->data.OR_oid, oidin, sizeof(oid) * oidlen);
+    entry->data.OR_oidlen = oidlen;
+    entry->data.OR_sess = ss;
+
+    if(table) {
+        entry->next = table;
+        entry->prev = table->prev;
+        table->prev->next = entry;
+        table->prev = entry;
+    } else
+        table = entry->next = entry->prev = entry;
+
+    entry->data.OR_uptime = netsnmp_get_agent_uptime();
+
+    snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,
+                        SNMPD_CALLBACK_REG_SYSOR, &entry->data);
+
+    return SYS_ORTABLE_REGISTERED_OK;
+}
+
+int
+register_sysORTable(oid * oidin, size_t oidlen, const char *descr)
+{
+    return register_sysORTable_sess(oidin, oidlen, descr, NULL);
+}
+
+int
+unregister_sysORTable_sess(oid * oidin,
+                           size_t oidlen, netsnmp_session * ss)
+{
+    int any_unregistered = 0;
+
+    DEBUGMSGTL(("agent/sysORTable", "sysORTable unregistering: "));
+    DEBUGMSGOID(("agent/sysORTable", oidin, oidlen));
+    DEBUGMSG(("agent/sysORTable", ", session %p\n", ss));
+
+    if(table) {
+        data_node run = table;
+        do {
+            data_node tmp = run;
+            run = run->next;
+            if (tmp->data.OR_sess == ss &&
+                snmp_oid_compare(oidin, oidlen,
+                                 tmp->data.OR_oid, tmp->data.OR_oidlen) == 0) {
+                erase(tmp);
+                any_unregistered = 1;
+            }
+        } while(table && run != table);
+    }
+
+    if (any_unregistered) {
+        DEBUGMSGTL(("agent/sysORTable", "unregistering successfull\n"));
+        return SYS_ORTABLE_UNREGISTERED_OK;
+    } else {
+        DEBUGMSGTL(("agent/sysORTable", "unregistering failed\n"));
+        return SYS_ORTABLE_NO_SUCH_REGISTRATION;
+    }
+}
+
+
+int
+unregister_sysORTable(oid * oidin, size_t oidlen)
+{
+    return unregister_sysORTable_sess(oidin, oidlen, NULL);
+}
+
+
+void
+unregister_sysORTable_by_session(netsnmp_session * ss)
+{
+    DEBUGMSGTL(("agent/sysORTable",
+                "sysORTable unregistering session %p\n", ss));
+
+   if(table) {
+        data_node run = table;
+        do {
+            data_node tmp = run;
+            run = run->next;
+            if (((ss->flags & SNMP_FLAGS_SUBSESSION) &&
+                 tmp->data.OR_sess == ss) ||
+                (!(ss->flags & SNMP_FLAGS_SUBSESSION) && tmp->data.OR_sess &&
+                 tmp->data.OR_sess->subsession == ss))
+                erase(tmp);
+        } while(table && run != table);
+    }
+
+    DEBUGMSGTL(("agent/sysORTable",
+                "sysORTable unregistering session %p done\n", ss));
+}
+
+static int
+register_sysOR_callback(int majorID, int minorID, void *serverarg,
+                        void *clientarg)
+{
+    struct sysORTable *parms = (struct sysORTable *) serverarg;
+
+    return register_sysORTable_sess(parms->OR_oid, parms->OR_oidlen,
+                                    parms->OR_descr, parms->OR_sess);
+}
+
+static int
+unregister_sysOR_by_session_callback(int majorID, int minorID,
+                                     void *serverarg, void *clientarg)
+{
+    netsnmp_session *session = (netsnmp_session *) serverarg;
+
+    unregister_sysORTable_by_session(session);
+
+    return 0;
+}
+
+static int
+unregister_sysOR_callback(int majorID, int minorID, void *serverarg,
+                          void *clientarg)
+{
+    struct sysORTable *parms = (struct sysORTable *) serverarg;
+
+    return unregister_sysORTable_sess(parms->OR_oid,
+                                      parms->OR_oidlen,
+                                      parms->OR_sess);
+}
+
+void
+init_agent_sysORTable(void)
+{
+    DEBUGMSGTL(("agent/sysORTable", "init_agent_sysORTable\n"));
+
+    snmp_register_callback(SNMP_CALLBACK_APPLICATION,
+                           SNMPD_CALLBACK_REQ_REG_SYSOR,
+                           register_sysOR_callback, NULL);
+    snmp_register_callback(SNMP_CALLBACK_APPLICATION,
+                           SNMPD_CALLBACK_REQ_UNREG_SYSOR,
+                           unregister_sysOR_callback, NULL);
+    snmp_register_callback(SNMP_CALLBACK_APPLICATION,
+                           SNMPD_CALLBACK_REQ_UNREG_SYSOR_SESS,
+                           unregister_sysOR_by_session_callback, NULL);
+}
+
+void
+shutdown_agent_sysORTable(void)
+{
+    DEBUGMSGTL(("agent/sysORTable", "shutdown_sysORTable\n"));
+    while(table)
+        erase(table);
+}
diff --git a/agent/agent_trap.c b/agent/agent_trap.c
index 1359c90..080b8bf 100644
--- a/agent/agent_trap.c
+++ b/agent/agent_trap.c
@@ -18,6 +18,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_UNISTD_H
 #include <unistd.h>
@@ -34,11 +35,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 +46,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>
@@ -58,6 +53,7 @@
 #include <net-snmp/utilities.h>
 
 #include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/agent_trap.h>
 #include <net-snmp/agent/snmp_agent.h>
 #include <net-snmp/agent/agent_callbacks.h>
@@ -69,6 +65,14 @@
 #include "agentx/protocol.h"
 #endif
 
+netsnmp_feature_child_of(agent_trap_all, libnetsnmpagent)
+
+netsnmp_feature_child_of(trap_vars_with_context, agent_trap_all)
+netsnmp_feature_child_of(remove_trap_session, agent_trap_all)
+
+netsnmp_feature_child_of(send_v3trap,netsnmp_unused)
+netsnmp_feature_child_of(send_trap_pdu,netsnmp_unused)
+
 struct trap_sink {
     netsnmp_session *sesp;
     struct trap_sink *next;
@@ -78,36 +82,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
@@ -141,18 +137,12 @@
 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
 free_trap_session(struct trap_sink *sp)
 {
+    DEBUGMSGTL(("trap", "freeing callback trap session (%p, %p)\n", sp, sp->sesp));
     snmp_close(sp->sesp);
     free(sp);
 }
@@ -168,7 +158,7 @@
          * something else wants to handle notification registrations 
          */
         struct agent_add_trap_args args;
-        DEBUGMSGTL(("trap", "adding callback trap sink\n"));
+        DEBUGMSGTL(("trap", "adding callback trap sink (%p)\n", ss));
         args.ss = ss;
         args.confirm = confirm;
         snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,
@@ -194,11 +184,13 @@
     return 1;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_REMOVE_TRAP_SESSION
 int
 remove_trap_session(netsnmp_session * ss)
 {
-    struct trap_sink *sp = sinks, *prev = 0;
+    struct trap_sink *sp = sinks, *prev = NULL;
 
+    DEBUGMSGTL(("trap", "removing trap sessions\n"));
     while (sp) {
         if (sp->sesp == ss) {
             if (prev) {
@@ -216,6 +208,7 @@
             /*
              * free_trap_session(sp);  
              */
+            DEBUGMSGTL(("trap", "removing trap session (%p, %p)\n", sp, sp->sesp));
             free(sp);
             return 1;
         }
@@ -224,6 +217,7 @@
     }
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REMOVE_TRAP_SESSION */
 
 #if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
 static int
@@ -318,6 +312,7 @@
 snmpd_free_trapsinks(void)
 {
     struct trap_sink *sp = sinks;
+    DEBUGMSGTL(("trap", "freeing trap sessions\n"));
     while (sp) {
         sinks = sinks->next;
         free_trap_session(sp);
@@ -338,7 +333,6 @@
     netsnmp_pdu           *template_v1pdu;
     netsnmp_variable_list *first_vb, *vblist;
     netsnmp_variable_list *var;
-    size_t                 len;
 
     /*
      * Make a copy of the v2 Trap PDU
@@ -418,9 +412,10 @@
                              snmptrapenterprise_oid,
                              snmptrapenterprise_oid_len);
         if (var) {
-            template_v1pdu->enterprise =
-                netsnmp_memdup(var->val.objid, var->val_len);
             template_v1pdu->enterprise_length = var->val_len/sizeof(oid);
+            template_v1pdu->enterprise =
+                snmp_duplicate_objid(var->val.objid,
+                                     template_v1pdu->enterprise_length);
         } else {
             template_v1pdu->enterprise        = NULL;
             template_v1pdu->enterprise_length = 0;		/* XXX ??? */
@@ -430,7 +425,7 @@
          * For enterprise-specific traps, split the snmpTrapOID value
          *   into enterprise and specific trap
          */
-        len = vblist->val_len / sizeof(oid);
+        size_t len = vblist->val_len / sizeof(oid);
         if ( len <= 2 ) {
             snmp_log(LOG_WARNING,
                      "send_trap: v2 trapOID too short (%d)\n", (int)len);
@@ -444,7 +439,7 @@
             len--;
         SNMP_FREE(template_v1pdu->enterprise);
         template_v1pdu->enterprise =
-            netsnmp_memdup(vblist->val.objid, len*sizeof(oid));
+            snmp_duplicate_objid(vblist->val.objid, len);
         template_v1pdu->enterprise_length = len;
     }
     var = find_varbind_in_list( vblist, agentaddr_oid,
@@ -625,9 +620,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;
@@ -637,6 +632,8 @@
     in_addr_t             *pdu_in_addr_t;
     u_long                 uptime;
     struct trap_sink *sink;
+    const char            *v1trapaddress;
+    int                    res = 0;
 
     DEBUGMSGTL(( "trap", "send_trap %d %d ", trap, specific));
     DEBUGMSGOID(("trap", enterprise, enterprise_length));
@@ -718,7 +715,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);
@@ -790,9 +787,29 @@
      * Ensure that the v1 trap PDU includes the local IP address
      */
        pdu_in_addr_t = (in_addr_t *) template_v1pdu->agent_addr;
-      *pdu_in_addr_t = get_myaddr();
+       v1trapaddress = netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID,
+                                             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);
+       }
+       if (v1trapaddress == NULL || res < 0) {
+           /* "v1trapaddress" was not specified in config or the resolution failed,
+            * try any local address */
+           *pdu_in_addr_t = get_myaddr();
+       }
+
     }
 
+    if (template_v2pdu) {
+	/* A context name was provided, so copy it and its length to the v2 pdu
+	 * template. */
+	if (context != NULL)
+	{
+		template_v2pdu->contextName    = strdup(context);
+		template_v2pdu->contextNameLen = strlen(context);
+	}
+    }
 
     /*
      *  Now loop through the list of trap sinks
@@ -830,7 +847,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,
@@ -887,9 +904,6 @@
 {
     netsnmp_pdu    *pdu;
     int            result;
-    char           tmp[SPRINT_MAX_LEN];
-    int            len;
-
 
     if (!sess || !template_pdu)
         return;
@@ -921,7 +935,9 @@
         if ((sess->version == SNMP_VERSION_3) &&
                 (pdu->command == SNMP_MSG_TRAP2) &&
                 (sess->securityEngineIDLen == 0)) {
-            len = snmpv3_get_engineID(tmp, sizeof(tmp));
+            u_char          tmp[SPRINT_MAX_LEN];
+
+            int len = snmpv3_get_engineID(tmp, sizeof(tmp));
             pdu->securityEngineID = netsnmp_memdup(tmp, len);
             pdu->securityEngineIDLen = len;
         }
@@ -949,6 +965,23 @@
                                   OID_LENGTH(trap_version_id), vars);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TRAP_VARS_WITH_CONTEXT
+/* Send a trap under a context */
+void send_trap_vars_with_context(int trap, int specific, 
+              netsnmp_variable_list *vars, const char *context)
+{
+    if (trap == SNMP_TRAP_ENTERPRISESPECIFIC)
+        netsnmp_send_traps(trap, specific, objid_enterprisetrap,
+                                  OID_LENGTH(objid_enterprisetrap), vars,
+								  context, 0);
+    else
+        netsnmp_send_traps(trap, specific, trap_version_id,
+                                  OID_LENGTH(trap_version_id), vars, 
+								  context, 0);
+    	
+}
+#endif /* NETSNMP_FEATURE_REMOVE_TRAP_VARS_WITH_CONTEXT */
+
 /**
  * Sends an SNMPv1 trap (or the SNMPv2 equivalent) to the list of  
  * configured trap destinations (or "sinks"), using the provided 
@@ -1007,11 +1040,34 @@
     send_trap_vars(-1, -1, vars);
 }
 
+/**
+ * Similar to send_v2trap(), with the added ability to specify a context.  If
+ * the last parameter is NULL, then this call is equivalent to send_v2trap().
+ *
+ * @param vars is used to supply the list of variable bindings for the trap.
+ * 
+ * @param context is used to specify the context of the trap.
+ *
+ * @return void
+ *
+ * @see send_v2trap
+ */
+#ifndef NETSNMP_FEATURE_REMOVE_SEND_V3TRAP
+void send_v3trap(netsnmp_variable_list *vars, const char *context)
+{
+    netsnmp_send_traps(-1, -1, 
+                       trap_version_id, OID_LENGTH(trap_version_id),
+                       vars, context, 0);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_SEND_V3TRAP */
+
+#ifndef NETSNMP_FEATURE_REMOVE_SEND_TRAP_PDU
 void
 send_trap_pdu(netsnmp_pdu *pdu)
 {
     send_trap_vars(-1, -1, pdu->variables);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SEND_TRAP_PDU */
 
 
 
@@ -1073,7 +1129,6 @@
 void
 snmpd_parse_config_trapsink(const char *token, char *cptr)
 {
-    char            tmpbuf[1024];
     char           *sp, *cp, *pp = NULL;
     char            *st;
 
@@ -1086,9 +1141,7 @@
     if (pp)
 	config_pwarn("The separate port argument to trapsink is deprecated");
     if (create_v1_trap_session(sp, pp, cp ? cp : snmp_trapcommunity) == 0) {
-        snprintf(tmpbuf, sizeof(tmpbuf), "cannot create trapsink: %s", cptr);
-        tmpbuf[sizeof(tmpbuf)-1] = '\0';
-        config_perror(tmpbuf);
+	netsnmp_config_error("cannot create trapsink: %s", cptr);
     }
 }
 #endif
@@ -1097,9 +1150,7 @@
 void
 snmpd_parse_config_trap2sink(const char *word, char *cptr)
 {
-    char            tmpbuf[1024];
-    char           *sp, *cp, *pp = NULL;
-    char            *st;
+    char           *st, *sp, *cp, *pp = NULL;
 
     if (!snmp_trapcommunity)
         snmp_trapcommunity = strdup("public");
@@ -1110,18 +1161,14 @@
     if (pp)
 	config_pwarn("The separate port argument to trapsink2 is deprecated");
     if (create_v2_trap_session(sp, pp, cp ? cp : snmp_trapcommunity) == 0) {
-        snprintf(tmpbuf, sizeof(tmpbuf), "cannot create trap2sink: %s", cptr);
-        tmpbuf[sizeof(tmpbuf)-1] = '\0';
-        config_perror(tmpbuf);
+	netsnmp_config_error("cannot create trap2sink: %s", cptr);
     }
 }
 
 void
 snmpd_parse_config_informsink(const char *word, char *cptr)
 {
-    char            tmpbuf[1024];
-    char           *sp, *cp, *pp = NULL;
-    char            *st;
+    char           *st, *sp, *cp, *pp = NULL;
 
     if (!snmp_trapcommunity)
         snmp_trapcommunity = strdup("public");
@@ -1132,9 +1179,7 @@
     if (pp)
 	config_pwarn("The separate port argument to informsink is deprecated");
     if (create_v2_inform_session(sp, pp, cp ? cp : snmp_trapcommunity) == 0) {
-        snprintf(tmpbuf, sizeof(tmpbuf), "cannot create informsink: %s", cptr);
-        tmpbuf[sizeof(tmpbuf)-1] = '\0';
-        config_perror(tmpbuf);
+	netsnmp_config_error("cannot create informsink: %s", cptr);
     }
 }
 #endif
@@ -1169,9 +1214,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;
 
     /*
@@ -1184,15 +1230,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]);
     }
@@ -1211,21 +1270,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 dff1f2b..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)
@@ -149,7 +149,6 @@
 static void
 init_nlist(struct nlist nl[])
 {
-#ifdef NETSNMP_CAN_USE_NLIST
     int             ret;
 #if HAVE_KVM_OPENFILES
     kvm_t          *kernel;
@@ -177,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));
@@ -207,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
@@ -222,7 +221,6 @@
                         (unsigned int) nl[ret].n_value));
         }
     }
-#endif                          /* NETSNMP_CAN_USE_NLIST */
 }
 
 int
diff --git a/agent/helpers/Makefile.depend b/agent/helpers/Makefile.depend
index 83fe54e..d20e125 100644
--- a/agent/helpers/Makefile.depend
+++ b/agent/helpers/Makefile.depend
@@ -5,58 +5,67 @@
 ./all_helpers.lo: ../../include/net-snmp/system/sysv.h
 ./all_helpers.lo: ../../include/net-snmp/system/generic.h
 ./all_helpers.lo: ../../include/net-snmp/machine/generic.h
+./all_helpers.lo: ../../include/net-snmp/net-snmp-features.h
 ./all_helpers.lo: ../../include/net-snmp/net-snmp-includes.h
 ./all_helpers.lo: ../../include/net-snmp/definitions.h
 ./all_helpers.lo: ../../include/net-snmp/types.h
+./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
+./all_helpers.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./all_helpers.lo: ../../include/net-snmp/library/mib.h
+./all_helpers.lo: ../../include/net-snmp/mib_api.h
+./all_helpers.lo: ../../include/net-snmp/library/parse.h
+./all_helpers.lo: ../../include/net-snmp/library/oid_stash.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmp_impl.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmp.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmp-tc.h
+./all_helpers.lo: ../../include/net-snmp/library/getopt.h
 ./all_helpers.lo: ../../include/net-snmp/utilities.h
-./all_helpers.lo: ../../include/net-snmp/library/snmp_client.h
 ./all_helpers.lo: ../../include/net-snmp/library/system.h
 ./all_helpers.lo: ../../include/net-snmp/library/tools.h
 ./all_helpers.lo: ../../include/net-snmp/library/int64.h
 ./all_helpers.lo: ../../include/net-snmp/library/mt_support.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmp_alarm.h
-./all_helpers.lo: ../../include/net-snmp/library/callback.h
 ./all_helpers.lo: ../../include/net-snmp/library/data_list.h
-./all_helpers.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./all_helpers.lo: ../../include/net-snmp/library/container.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmp_assert.h
 ./all_helpers.lo: ../../include/net-snmp/version.h
-./all_helpers.lo: ../../include/net-snmp/session_api.h
-./all_helpers.lo: ../../include/net-snmp/library/snmp_transport.h
-./all_helpers.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./all_helpers.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./all_helpers.lo: ../../include/net-snmp/pdu_api.h
-./all_helpers.lo: ../../include/net-snmp/mib_api.h
-./all_helpers.lo: ../../include/net-snmp/library/mib.h
-./all_helpers.lo: ../../include/net-snmp/library/parse.h
-./all_helpers.lo: ../../include/net-snmp/varbind_api.h
 ./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
@@ -65,6 +74,7 @@
 ./all_helpers.lo: ../../include/net-snmp/library/lcd_time.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./all_helpers.lo: ../../include/net-snmp/library/snmptsm.h
 ./all_helpers.lo: ../../include/net-snmp/library/snmpusm.h
 ./all_helpers.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./all_helpers.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -102,63 +112,69 @@
 ./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-features.h
 ./baby_steps.lo: ../../include/net-snmp/net-snmp-includes.h
 ./baby_steps.lo: ../../include/net-snmp/definitions.h
 ./baby_steps.lo: ../../include/net-snmp/types.h
+./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
+./baby_steps.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./baby_steps.lo: ../../include/net-snmp/library/mib.h
+./baby_steps.lo: ../../include/net-snmp/mib_api.h
+./baby_steps.lo: ../../include/net-snmp/library/parse.h
+./baby_steps.lo: ../../include/net-snmp/library/oid_stash.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmp_impl.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmp.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmp-tc.h
+./baby_steps.lo: ../../include/net-snmp/library/getopt.h
 ./baby_steps.lo: ../../include/net-snmp/utilities.h
-./baby_steps.lo: ../../include/net-snmp/library/snmp_client.h
 ./baby_steps.lo: ../../include/net-snmp/library/system.h
 ./baby_steps.lo: ../../include/net-snmp/library/tools.h
 ./baby_steps.lo: ../../include/net-snmp/library/int64.h
 ./baby_steps.lo: ../../include/net-snmp/library/mt_support.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmp_alarm.h
-./baby_steps.lo: ../../include/net-snmp/library/callback.h
 ./baby_steps.lo: ../../include/net-snmp/library/data_list.h
-./baby_steps.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./baby_steps.lo: ../../include/net-snmp/library/container.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmp_assert.h
 ./baby_steps.lo: ../../include/net-snmp/version.h
-./baby_steps.lo: ../../include/net-snmp/session_api.h
-./baby_steps.lo: ../../include/net-snmp/library/snmp_transport.h
-./baby_steps.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./baby_steps.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./baby_steps.lo: ../../include/net-snmp/pdu_api.h
-./baby_steps.lo: ../../include/net-snmp/mib_api.h
-./baby_steps.lo: ../../include/net-snmp/library/mib.h
-./baby_steps.lo: ../../include/net-snmp/library/parse.h
-./baby_steps.lo: ../../include/net-snmp/varbind_api.h
 ./baby_steps.lo: ../../include/net-snmp/config_api.h
 ./baby_steps.lo: ../../include/net-snmp/library/read_config.h
 ./baby_steps.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -167,6 +183,7 @@
 ./baby_steps.lo: ../../include/net-snmp/library/lcd_time.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./baby_steps.lo: ../../include/net-snmp/library/snmptsm.h
 ./baby_steps.lo: ../../include/net-snmp/library/snmpusm.h
 ./baby_steps.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./baby_steps.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -204,63 +221,68 @@
 ./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
+./bulk_to_next.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./bulk_to_next.lo: ../../include/net-snmp/library/mib.h
+./bulk_to_next.lo: ../../include/net-snmp/mib_api.h
+./bulk_to_next.lo: ../../include/net-snmp/library/parse.h
+./bulk_to_next.lo: ../../include/net-snmp/library/oid_stash.h
+./bulk_to_next.lo: ../../include/net-snmp/net-snmp-features.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmp_impl.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmp.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmp-tc.h
+./bulk_to_next.lo: ../../include/net-snmp/library/getopt.h
 ./bulk_to_next.lo: ../../include/net-snmp/utilities.h
-./bulk_to_next.lo: ../../include/net-snmp/library/snmp_client.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/system.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/tools.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/int64.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/mt_support.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmp_alarm.h
-./bulk_to_next.lo: ../../include/net-snmp/library/callback.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/data_list.h
-./bulk_to_next.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./bulk_to_next.lo: ../../include/net-snmp/library/container.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmp_assert.h
 ./bulk_to_next.lo: ../../include/net-snmp/version.h
-./bulk_to_next.lo: ../../include/net-snmp/session_api.h
-./bulk_to_next.lo: ../../include/net-snmp/library/snmp_transport.h
-./bulk_to_next.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./bulk_to_next.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./bulk_to_next.lo: ../../include/net-snmp/pdu_api.h
-./bulk_to_next.lo: ../../include/net-snmp/mib_api.h
-./bulk_to_next.lo: ../../include/net-snmp/library/mib.h
-./bulk_to_next.lo: ../../include/net-snmp/library/parse.h
-./bulk_to_next.lo: ../../include/net-snmp/varbind_api.h
 ./bulk_to_next.lo: ../../include/net-snmp/config_api.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/read_config.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -269,6 +291,7 @@
 ./bulk_to_next.lo: ../../include/net-snmp/library/lcd_time.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./bulk_to_next.lo: ../../include/net-snmp/library/snmptsm.h
 ./bulk_to_next.lo: ../../include/net-snmp/library/snmpusm.h
 ./bulk_to_next.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./bulk_to_next.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -306,63 +329,68 @@
 ./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-features.h
 ./cache_handler.lo: ../../include/net-snmp/net-snmp-includes.h
 ./cache_handler.lo: ../../include/net-snmp/definitions.h
 ./cache_handler.lo: ../../include/net-snmp/types.h
+./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
+./cache_handler.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./cache_handler.lo: ../../include/net-snmp/library/mib.h
+./cache_handler.lo: ../../include/net-snmp/mib_api.h
+./cache_handler.lo: ../../include/net-snmp/library/parse.h
+./cache_handler.lo: ../../include/net-snmp/library/oid_stash.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmp_impl.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmp.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmp-tc.h
+./cache_handler.lo: ../../include/net-snmp/library/getopt.h
 ./cache_handler.lo: ../../include/net-snmp/utilities.h
-./cache_handler.lo: ../../include/net-snmp/library/snmp_client.h
 ./cache_handler.lo: ../../include/net-snmp/library/system.h
 ./cache_handler.lo: ../../include/net-snmp/library/tools.h
 ./cache_handler.lo: ../../include/net-snmp/library/int64.h
 ./cache_handler.lo: ../../include/net-snmp/library/mt_support.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmp_alarm.h
-./cache_handler.lo: ../../include/net-snmp/library/callback.h
 ./cache_handler.lo: ../../include/net-snmp/library/data_list.h
-./cache_handler.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./cache_handler.lo: ../../include/net-snmp/library/container.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmp_assert.h
 ./cache_handler.lo: ../../include/net-snmp/version.h
-./cache_handler.lo: ../../include/net-snmp/session_api.h
-./cache_handler.lo: ../../include/net-snmp/library/snmp_transport.h
-./cache_handler.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./cache_handler.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./cache_handler.lo: ../../include/net-snmp/pdu_api.h
-./cache_handler.lo: ../../include/net-snmp/mib_api.h
-./cache_handler.lo: ../../include/net-snmp/library/mib.h
-./cache_handler.lo: ../../include/net-snmp/library/parse.h
-./cache_handler.lo: ../../include/net-snmp/varbind_api.h
 ./cache_handler.lo: ../../include/net-snmp/config_api.h
 ./cache_handler.lo: ../../include/net-snmp/library/read_config.h
 ./cache_handler.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -371,6 +399,7 @@
 ./cache_handler.lo: ../../include/net-snmp/library/lcd_time.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./cache_handler.lo: ../../include/net-snmp/library/snmptsm.h
 ./cache_handler.lo: ../../include/net-snmp/library/snmpusm.h
 ./cache_handler.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./cache_handler.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -408,63 +437,68 @@
 ./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
+./debug_handler.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./debug_handler.lo: ../../include/net-snmp/library/mib.h
+./debug_handler.lo: ../../include/net-snmp/mib_api.h
+./debug_handler.lo: ../../include/net-snmp/library/parse.h
+./debug_handler.lo: ../../include/net-snmp/library/oid_stash.h
+./debug_handler.lo: ../../include/net-snmp/net-snmp-features.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmp_impl.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmp.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmp-tc.h
+./debug_handler.lo: ../../include/net-snmp/library/getopt.h
 ./debug_handler.lo: ../../include/net-snmp/utilities.h
-./debug_handler.lo: ../../include/net-snmp/library/snmp_client.h
 ./debug_handler.lo: ../../include/net-snmp/library/system.h
 ./debug_handler.lo: ../../include/net-snmp/library/tools.h
 ./debug_handler.lo: ../../include/net-snmp/library/int64.h
 ./debug_handler.lo: ../../include/net-snmp/library/mt_support.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmp_alarm.h
-./debug_handler.lo: ../../include/net-snmp/library/callback.h
 ./debug_handler.lo: ../../include/net-snmp/library/data_list.h
-./debug_handler.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./debug_handler.lo: ../../include/net-snmp/library/container.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmp_assert.h
 ./debug_handler.lo: ../../include/net-snmp/version.h
-./debug_handler.lo: ../../include/net-snmp/session_api.h
-./debug_handler.lo: ../../include/net-snmp/library/snmp_transport.h
-./debug_handler.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./debug_handler.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./debug_handler.lo: ../../include/net-snmp/pdu_api.h
-./debug_handler.lo: ../../include/net-snmp/mib_api.h
-./debug_handler.lo: ../../include/net-snmp/library/mib.h
-./debug_handler.lo: ../../include/net-snmp/library/parse.h
-./debug_handler.lo: ../../include/net-snmp/varbind_api.h
 ./debug_handler.lo: ../../include/net-snmp/config_api.h
 ./debug_handler.lo: ../../include/net-snmp/library/read_config.h
 ./debug_handler.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -473,6 +507,7 @@
 ./debug_handler.lo: ../../include/net-snmp/library/lcd_time.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./debug_handler.lo: ../../include/net-snmp/library/snmptsm.h
 ./debug_handler.lo: ../../include/net-snmp/library/snmpusm.h
 ./debug_handler.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./debug_handler.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -510,63 +545,68 @@
 ./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-features.h
 ./instance.lo: ../../include/net-snmp/net-snmp-includes.h
 ./instance.lo: ../../include/net-snmp/definitions.h
 ./instance.lo: ../../include/net-snmp/types.h
+./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
+./instance.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./instance.lo: ../../include/net-snmp/library/mib.h
+./instance.lo: ../../include/net-snmp/mib_api.h
+./instance.lo: ../../include/net-snmp/library/parse.h
+./instance.lo: ../../include/net-snmp/library/oid_stash.h
 ./instance.lo: ../../include/net-snmp/library/snmp_impl.h
 ./instance.lo: ../../include/net-snmp/library/snmp.h
 ./instance.lo: ../../include/net-snmp/library/snmp-tc.h
+./instance.lo: ../../include/net-snmp/library/getopt.h
 ./instance.lo: ../../include/net-snmp/utilities.h
-./instance.lo: ../../include/net-snmp/library/snmp_client.h
 ./instance.lo: ../../include/net-snmp/library/system.h
 ./instance.lo: ../../include/net-snmp/library/tools.h
 ./instance.lo: ../../include/net-snmp/library/int64.h
 ./instance.lo: ../../include/net-snmp/library/mt_support.h
 ./instance.lo: ../../include/net-snmp/library/snmp_alarm.h
-./instance.lo: ../../include/net-snmp/library/callback.h
 ./instance.lo: ../../include/net-snmp/library/data_list.h
-./instance.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./instance.lo: ../../include/net-snmp/library/container.h
 ./instance.lo: ../../include/net-snmp/library/snmp_assert.h
 ./instance.lo: ../../include/net-snmp/version.h
-./instance.lo: ../../include/net-snmp/session_api.h
-./instance.lo: ../../include/net-snmp/library/snmp_transport.h
-./instance.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./instance.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./instance.lo: ../../include/net-snmp/pdu_api.h
-./instance.lo: ../../include/net-snmp/mib_api.h
-./instance.lo: ../../include/net-snmp/library/mib.h
-./instance.lo: ../../include/net-snmp/library/parse.h
-./instance.lo: ../../include/net-snmp/varbind_api.h
 ./instance.lo: ../../include/net-snmp/config_api.h
 ./instance.lo: ../../include/net-snmp/library/read_config.h
 ./instance.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -575,6 +615,7 @@
 ./instance.lo: ../../include/net-snmp/library/lcd_time.h
 ./instance.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./instance.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./instance.lo: ../../include/net-snmp/library/snmptsm.h
 ./instance.lo: ../../include/net-snmp/library/snmpusm.h
 ./instance.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./instance.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -612,63 +653,68 @@
 ./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-features.h
 ./mode_end_call.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mode_end_call.lo: ../../include/net-snmp/definitions.h
 ./mode_end_call.lo: ../../include/net-snmp/types.h
+./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
+./mode_end_call.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mode_end_call.lo: ../../include/net-snmp/library/mib.h
+./mode_end_call.lo: ../../include/net-snmp/mib_api.h
+./mode_end_call.lo: ../../include/net-snmp/library/parse.h
+./mode_end_call.lo: ../../include/net-snmp/library/oid_stash.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmp.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmp-tc.h
+./mode_end_call.lo: ../../include/net-snmp/library/getopt.h
 ./mode_end_call.lo: ../../include/net-snmp/utilities.h
-./mode_end_call.lo: ../../include/net-snmp/library/snmp_client.h
 ./mode_end_call.lo: ../../include/net-snmp/library/system.h
 ./mode_end_call.lo: ../../include/net-snmp/library/tools.h
 ./mode_end_call.lo: ../../include/net-snmp/library/int64.h
 ./mode_end_call.lo: ../../include/net-snmp/library/mt_support.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mode_end_call.lo: ../../include/net-snmp/library/callback.h
 ./mode_end_call.lo: ../../include/net-snmp/library/data_list.h
-./mode_end_call.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mode_end_call.lo: ../../include/net-snmp/library/container.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mode_end_call.lo: ../../include/net-snmp/version.h
-./mode_end_call.lo: ../../include/net-snmp/session_api.h
-./mode_end_call.lo: ../../include/net-snmp/library/snmp_transport.h
-./mode_end_call.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mode_end_call.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mode_end_call.lo: ../../include/net-snmp/pdu_api.h
-./mode_end_call.lo: ../../include/net-snmp/mib_api.h
-./mode_end_call.lo: ../../include/net-snmp/library/mib.h
-./mode_end_call.lo: ../../include/net-snmp/library/parse.h
-./mode_end_call.lo: ../../include/net-snmp/varbind_api.h
 ./mode_end_call.lo: ../../include/net-snmp/config_api.h
 ./mode_end_call.lo: ../../include/net-snmp/library/read_config.h
 ./mode_end_call.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -677,6 +723,7 @@
 ./mode_end_call.lo: ../../include/net-snmp/library/lcd_time.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mode_end_call.lo: ../../include/net-snmp/library/snmptsm.h
 ./mode_end_call.lo: ../../include/net-snmp/library/snmpusm.h
 ./mode_end_call.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mode_end_call.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -714,63 +761,68 @@
 ./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
+./multiplexer.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./multiplexer.lo: ../../include/net-snmp/library/mib.h
+./multiplexer.lo: ../../include/net-snmp/mib_api.h
+./multiplexer.lo: ../../include/net-snmp/library/parse.h
+./multiplexer.lo: ../../include/net-snmp/library/oid_stash.h
+./multiplexer.lo: ../../include/net-snmp/net-snmp-features.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmp_impl.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmp.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmp-tc.h
+./multiplexer.lo: ../../include/net-snmp/library/getopt.h
 ./multiplexer.lo: ../../include/net-snmp/utilities.h
-./multiplexer.lo: ../../include/net-snmp/library/snmp_client.h
 ./multiplexer.lo: ../../include/net-snmp/library/system.h
 ./multiplexer.lo: ../../include/net-snmp/library/tools.h
 ./multiplexer.lo: ../../include/net-snmp/library/int64.h
 ./multiplexer.lo: ../../include/net-snmp/library/mt_support.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmp_alarm.h
-./multiplexer.lo: ../../include/net-snmp/library/callback.h
 ./multiplexer.lo: ../../include/net-snmp/library/data_list.h
-./multiplexer.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./multiplexer.lo: ../../include/net-snmp/library/container.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmp_assert.h
 ./multiplexer.lo: ../../include/net-snmp/version.h
-./multiplexer.lo: ../../include/net-snmp/session_api.h
-./multiplexer.lo: ../../include/net-snmp/library/snmp_transport.h
-./multiplexer.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./multiplexer.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./multiplexer.lo: ../../include/net-snmp/pdu_api.h
-./multiplexer.lo: ../../include/net-snmp/mib_api.h
-./multiplexer.lo: ../../include/net-snmp/library/mib.h
-./multiplexer.lo: ../../include/net-snmp/library/parse.h
-./multiplexer.lo: ../../include/net-snmp/varbind_api.h
 ./multiplexer.lo: ../../include/net-snmp/config_api.h
 ./multiplexer.lo: ../../include/net-snmp/library/read_config.h
 ./multiplexer.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -779,6 +831,7 @@
 ./multiplexer.lo: ../../include/net-snmp/library/lcd_time.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./multiplexer.lo: ../../include/net-snmp/library/snmptsm.h
 ./multiplexer.lo: ../../include/net-snmp/library/snmpusm.h
 ./multiplexer.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./multiplexer.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -816,62 +869,68 @@
 ./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
+./null.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./null.lo: ../../include/net-snmp/library/mib.h
+./null.lo: ../../include/net-snmp/mib_api.h
+./null.lo: ../../include/net-snmp/library/parse.h
+./null.lo: ../../include/net-snmp/library/oid_stash.h
+./null.lo: ../../include/net-snmp/net-snmp-features.h
 ./null.lo: ../../include/net-snmp/library/snmp_impl.h
 ./null.lo: ../../include/net-snmp/library/snmp.h
 ./null.lo: ../../include/net-snmp/library/snmp-tc.h
+./null.lo: ../../include/net-snmp/library/getopt.h
 ./null.lo: ../../include/net-snmp/utilities.h
-./null.lo: ../../include/net-snmp/library/snmp_client.h
 ./null.lo: ../../include/net-snmp/library/system.h
 ./null.lo: ../../include/net-snmp/library/tools.h
 ./null.lo: ../../include/net-snmp/library/int64.h
 ./null.lo: ../../include/net-snmp/library/mt_support.h
 ./null.lo: ../../include/net-snmp/library/snmp_alarm.h
-./null.lo: ../../include/net-snmp/library/callback.h
 ./null.lo: ../../include/net-snmp/library/data_list.h
-./null.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./null.lo: ../../include/net-snmp/library/container.h
 ./null.lo: ../../include/net-snmp/library/snmp_assert.h
 ./null.lo: ../../include/net-snmp/version.h
-./null.lo: ../../include/net-snmp/session_api.h
-./null.lo: ../../include/net-snmp/library/snmp_transport.h
-./null.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./null.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./null.lo: ../../include/net-snmp/pdu_api.h ../../include/net-snmp/mib_api.h
-./null.lo: ../../include/net-snmp/library/mib.h
-./null.lo: ../../include/net-snmp/library/parse.h
-./null.lo: ../../include/net-snmp/varbind_api.h
 ./null.lo: ../../include/net-snmp/config_api.h
 ./null.lo: ../../include/net-snmp/library/read_config.h
 ./null.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -880,6 +939,7 @@
 ./null.lo: ../../include/net-snmp/library/lcd_time.h
 ./null.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./null.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./null.lo: ../../include/net-snmp/library/snmptsm.h
 ./null.lo: ../../include/net-snmp/library/snmpusm.h
 ./null.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./null.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -917,63 +977,68 @@
 ./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
+./old_api.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./old_api.lo: ../../include/net-snmp/library/mib.h
+./old_api.lo: ../../include/net-snmp/mib_api.h
+./old_api.lo: ../../include/net-snmp/library/parse.h
+./old_api.lo: ../../include/net-snmp/library/oid_stash.h
+./old_api.lo: ../../include/net-snmp/net-snmp-features.h
 ./old_api.lo: ../../include/net-snmp/library/snmp_impl.h
 ./old_api.lo: ../../include/net-snmp/library/snmp.h
 ./old_api.lo: ../../include/net-snmp/library/snmp-tc.h
+./old_api.lo: ../../include/net-snmp/library/getopt.h
 ./old_api.lo: ../../include/net-snmp/utilities.h
-./old_api.lo: ../../include/net-snmp/library/snmp_client.h
 ./old_api.lo: ../../include/net-snmp/library/system.h
 ./old_api.lo: ../../include/net-snmp/library/tools.h
 ./old_api.lo: ../../include/net-snmp/library/int64.h
 ./old_api.lo: ../../include/net-snmp/library/mt_support.h
 ./old_api.lo: ../../include/net-snmp/library/snmp_alarm.h
-./old_api.lo: ../../include/net-snmp/library/callback.h
 ./old_api.lo: ../../include/net-snmp/library/data_list.h
-./old_api.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./old_api.lo: ../../include/net-snmp/library/container.h
 ./old_api.lo: ../../include/net-snmp/library/snmp_assert.h
 ./old_api.lo: ../../include/net-snmp/version.h
-./old_api.lo: ../../include/net-snmp/session_api.h
-./old_api.lo: ../../include/net-snmp/library/snmp_transport.h
-./old_api.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./old_api.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./old_api.lo: ../../include/net-snmp/pdu_api.h
-./old_api.lo: ../../include/net-snmp/mib_api.h
-./old_api.lo: ../../include/net-snmp/library/mib.h
-./old_api.lo: ../../include/net-snmp/library/parse.h
-./old_api.lo: ../../include/net-snmp/varbind_api.h
 ./old_api.lo: ../../include/net-snmp/config_api.h
 ./old_api.lo: ../../include/net-snmp/library/read_config.h
 ./old_api.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -982,6 +1047,7 @@
 ./old_api.lo: ../../include/net-snmp/library/lcd_time.h
 ./old_api.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./old_api.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./old_api.lo: ../../include/net-snmp/library/snmptsm.h
 ./old_api.lo: ../../include/net-snmp/library/snmpusm.h
 ./old_api.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./old_api.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1019,64 +1085,69 @@
 ./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
+./read_only.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./read_only.lo: ../../include/net-snmp/library/mib.h
+./read_only.lo: ../../include/net-snmp/mib_api.h
+./read_only.lo: ../../include/net-snmp/library/parse.h
+./read_only.lo: ../../include/net-snmp/library/oid_stash.h
+./read_only.lo: ../../include/net-snmp/net-snmp-features.h
 ./read_only.lo: ../../include/net-snmp/library/snmp_impl.h
 ./read_only.lo: ../../include/net-snmp/library/snmp.h
 ./read_only.lo: ../../include/net-snmp/library/snmp-tc.h
+./read_only.lo: ../../include/net-snmp/library/getopt.h
 ./read_only.lo: ../../include/net-snmp/utilities.h
-./read_only.lo: ../../include/net-snmp/library/snmp_client.h
 ./read_only.lo: ../../include/net-snmp/library/system.h
 ./read_only.lo: ../../include/net-snmp/library/tools.h
 ./read_only.lo: ../../include/net-snmp/library/int64.h
 ./read_only.lo: ../../include/net-snmp/library/mt_support.h
 ./read_only.lo: ../../include/net-snmp/library/snmp_alarm.h
-./read_only.lo: ../../include/net-snmp/library/callback.h
 ./read_only.lo: ../../include/net-snmp/library/data_list.h
-./read_only.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./read_only.lo: ../../include/net-snmp/library/container.h
 ./read_only.lo: ../../include/net-snmp/library/snmp_assert.h
 ./read_only.lo: ../../include/net-snmp/version.h
-./read_only.lo: ../../include/net-snmp/session_api.h
-./read_only.lo: ../../include/net-snmp/library/snmp_transport.h
-./read_only.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./read_only.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./read_only.lo: ../../include/net-snmp/pdu_api.h
-./read_only.lo: ../../include/net-snmp/mib_api.h
-./read_only.lo: ../../include/net-snmp/library/mib.h
-./read_only.lo: ../../include/net-snmp/library/parse.h
-./read_only.lo: ../../include/net-snmp/varbind_api.h
 ./read_only.lo: ../../include/net-snmp/config_api.h
 ./read_only.lo: ../../include/net-snmp/library/read_config.h
 ./read_only.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1085,6 +1156,7 @@
 ./read_only.lo: ../../include/net-snmp/library/lcd_time.h
 ./read_only.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./read_only.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./read_only.lo: ../../include/net-snmp/library/snmptsm.h
 ./read_only.lo: ../../include/net-snmp/library/snmpusm.h
 ./read_only.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./read_only.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1122,63 +1194,68 @@
 ./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-features.h
 ./row_merge.lo: ../../include/net-snmp/net-snmp-includes.h
 ./row_merge.lo: ../../include/net-snmp/definitions.h
 ./row_merge.lo: ../../include/net-snmp/types.h
+./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
+./row_merge.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./row_merge.lo: ../../include/net-snmp/library/mib.h
+./row_merge.lo: ../../include/net-snmp/mib_api.h
+./row_merge.lo: ../../include/net-snmp/library/parse.h
+./row_merge.lo: ../../include/net-snmp/library/oid_stash.h
 ./row_merge.lo: ../../include/net-snmp/library/snmp_impl.h
 ./row_merge.lo: ../../include/net-snmp/library/snmp.h
 ./row_merge.lo: ../../include/net-snmp/library/snmp-tc.h
+./row_merge.lo: ../../include/net-snmp/library/getopt.h
 ./row_merge.lo: ../../include/net-snmp/utilities.h
-./row_merge.lo: ../../include/net-snmp/library/snmp_client.h
 ./row_merge.lo: ../../include/net-snmp/library/system.h
 ./row_merge.lo: ../../include/net-snmp/library/tools.h
 ./row_merge.lo: ../../include/net-snmp/library/int64.h
 ./row_merge.lo: ../../include/net-snmp/library/mt_support.h
 ./row_merge.lo: ../../include/net-snmp/library/snmp_alarm.h
-./row_merge.lo: ../../include/net-snmp/library/callback.h
 ./row_merge.lo: ../../include/net-snmp/library/data_list.h
-./row_merge.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./row_merge.lo: ../../include/net-snmp/library/container.h
 ./row_merge.lo: ../../include/net-snmp/library/snmp_assert.h
 ./row_merge.lo: ../../include/net-snmp/version.h
-./row_merge.lo: ../../include/net-snmp/session_api.h
-./row_merge.lo: ../../include/net-snmp/library/snmp_transport.h
-./row_merge.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./row_merge.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./row_merge.lo: ../../include/net-snmp/pdu_api.h
-./row_merge.lo: ../../include/net-snmp/mib_api.h
-./row_merge.lo: ../../include/net-snmp/library/mib.h
-./row_merge.lo: ../../include/net-snmp/library/parse.h
-./row_merge.lo: ../../include/net-snmp/varbind_api.h
 ./row_merge.lo: ../../include/net-snmp/config_api.h
 ./row_merge.lo: ../../include/net-snmp/library/read_config.h
 ./row_merge.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1187,6 +1264,7 @@
 ./row_merge.lo: ../../include/net-snmp/library/lcd_time.h
 ./row_merge.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./row_merge.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./row_merge.lo: ../../include/net-snmp/library/snmptsm.h
 ./row_merge.lo: ../../include/net-snmp/library/snmpusm.h
 ./row_merge.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./row_merge.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1224,63 +1302,68 @@
 ./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
+./scalar.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./scalar.lo: ../../include/net-snmp/library/mib.h
+./scalar.lo: ../../include/net-snmp/mib_api.h
+./scalar.lo: ../../include/net-snmp/library/parse.h
+./scalar.lo: ../../include/net-snmp/library/oid_stash.h
+./scalar.lo: ../../include/net-snmp/net-snmp-features.h
 ./scalar.lo: ../../include/net-snmp/library/snmp_impl.h
 ./scalar.lo: ../../include/net-snmp/library/snmp.h
 ./scalar.lo: ../../include/net-snmp/library/snmp-tc.h
+./scalar.lo: ../../include/net-snmp/library/getopt.h
 ./scalar.lo: ../../include/net-snmp/utilities.h
-./scalar.lo: ../../include/net-snmp/library/snmp_client.h
 ./scalar.lo: ../../include/net-snmp/library/system.h
 ./scalar.lo: ../../include/net-snmp/library/tools.h
 ./scalar.lo: ../../include/net-snmp/library/int64.h
 ./scalar.lo: ../../include/net-snmp/library/mt_support.h
 ./scalar.lo: ../../include/net-snmp/library/snmp_alarm.h
-./scalar.lo: ../../include/net-snmp/library/callback.h
 ./scalar.lo: ../../include/net-snmp/library/data_list.h
-./scalar.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./scalar.lo: ../../include/net-snmp/library/container.h
 ./scalar.lo: ../../include/net-snmp/library/snmp_assert.h
 ./scalar.lo: ../../include/net-snmp/version.h
-./scalar.lo: ../../include/net-snmp/session_api.h
-./scalar.lo: ../../include/net-snmp/library/snmp_transport.h
-./scalar.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./scalar.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./scalar.lo: ../../include/net-snmp/pdu_api.h
-./scalar.lo: ../../include/net-snmp/mib_api.h
-./scalar.lo: ../../include/net-snmp/library/mib.h
-./scalar.lo: ../../include/net-snmp/library/parse.h
-./scalar.lo: ../../include/net-snmp/varbind_api.h
 ./scalar.lo: ../../include/net-snmp/config_api.h
 ./scalar.lo: ../../include/net-snmp/library/read_config.h
 ./scalar.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1289,6 +1372,7 @@
 ./scalar.lo: ../../include/net-snmp/library/lcd_time.h
 ./scalar.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./scalar.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./scalar.lo: ../../include/net-snmp/library/snmptsm.h
 ./scalar.lo: ../../include/net-snmp/library/snmpusm.h
 ./scalar.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./scalar.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1326,63 +1410,68 @@
 ./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
+./scalar_group.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./scalar_group.lo: ../../include/net-snmp/library/mib.h
+./scalar_group.lo: ../../include/net-snmp/mib_api.h
+./scalar_group.lo: ../../include/net-snmp/library/parse.h
+./scalar_group.lo: ../../include/net-snmp/library/oid_stash.h
+./scalar_group.lo: ../../include/net-snmp/net-snmp-features.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmp_impl.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmp.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmp-tc.h
+./scalar_group.lo: ../../include/net-snmp/library/getopt.h
 ./scalar_group.lo: ../../include/net-snmp/utilities.h
-./scalar_group.lo: ../../include/net-snmp/library/snmp_client.h
 ./scalar_group.lo: ../../include/net-snmp/library/system.h
 ./scalar_group.lo: ../../include/net-snmp/library/tools.h
 ./scalar_group.lo: ../../include/net-snmp/library/int64.h
 ./scalar_group.lo: ../../include/net-snmp/library/mt_support.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmp_alarm.h
-./scalar_group.lo: ../../include/net-snmp/library/callback.h
 ./scalar_group.lo: ../../include/net-snmp/library/data_list.h
-./scalar_group.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./scalar_group.lo: ../../include/net-snmp/library/container.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmp_assert.h
 ./scalar_group.lo: ../../include/net-snmp/version.h
-./scalar_group.lo: ../../include/net-snmp/session_api.h
-./scalar_group.lo: ../../include/net-snmp/library/snmp_transport.h
-./scalar_group.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./scalar_group.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./scalar_group.lo: ../../include/net-snmp/pdu_api.h
-./scalar_group.lo: ../../include/net-snmp/mib_api.h
-./scalar_group.lo: ../../include/net-snmp/library/mib.h
-./scalar_group.lo: ../../include/net-snmp/library/parse.h
-./scalar_group.lo: ../../include/net-snmp/varbind_api.h
 ./scalar_group.lo: ../../include/net-snmp/config_api.h
 ./scalar_group.lo: ../../include/net-snmp/library/read_config.h
 ./scalar_group.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1391,6 +1480,7 @@
 ./scalar_group.lo: ../../include/net-snmp/library/lcd_time.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./scalar_group.lo: ../../include/net-snmp/library/snmptsm.h
 ./scalar_group.lo: ../../include/net-snmp/library/snmpusm.h
 ./scalar_group.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./scalar_group.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1428,63 +1518,68 @@
 ./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
+./serialize.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./serialize.lo: ../../include/net-snmp/library/mib.h
+./serialize.lo: ../../include/net-snmp/mib_api.h
+./serialize.lo: ../../include/net-snmp/library/parse.h
+./serialize.lo: ../../include/net-snmp/library/oid_stash.h
+./serialize.lo: ../../include/net-snmp/net-snmp-features.h
 ./serialize.lo: ../../include/net-snmp/library/snmp_impl.h
 ./serialize.lo: ../../include/net-snmp/library/snmp.h
 ./serialize.lo: ../../include/net-snmp/library/snmp-tc.h
+./serialize.lo: ../../include/net-snmp/library/getopt.h
 ./serialize.lo: ../../include/net-snmp/utilities.h
-./serialize.lo: ../../include/net-snmp/library/snmp_client.h
 ./serialize.lo: ../../include/net-snmp/library/system.h
 ./serialize.lo: ../../include/net-snmp/library/tools.h
 ./serialize.lo: ../../include/net-snmp/library/int64.h
 ./serialize.lo: ../../include/net-snmp/library/mt_support.h
 ./serialize.lo: ../../include/net-snmp/library/snmp_alarm.h
-./serialize.lo: ../../include/net-snmp/library/callback.h
 ./serialize.lo: ../../include/net-snmp/library/data_list.h
-./serialize.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./serialize.lo: ../../include/net-snmp/library/container.h
 ./serialize.lo: ../../include/net-snmp/library/snmp_assert.h
 ./serialize.lo: ../../include/net-snmp/version.h
-./serialize.lo: ../../include/net-snmp/session_api.h
-./serialize.lo: ../../include/net-snmp/library/snmp_transport.h
-./serialize.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./serialize.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./serialize.lo: ../../include/net-snmp/pdu_api.h
-./serialize.lo: ../../include/net-snmp/mib_api.h
-./serialize.lo: ../../include/net-snmp/library/mib.h
-./serialize.lo: ../../include/net-snmp/library/parse.h
-./serialize.lo: ../../include/net-snmp/varbind_api.h
 ./serialize.lo: ../../include/net-snmp/config_api.h
 ./serialize.lo: ../../include/net-snmp/library/read_config.h
 ./serialize.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1493,6 +1588,7 @@
 ./serialize.lo: ../../include/net-snmp/library/lcd_time.h
 ./serialize.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./serialize.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./serialize.lo: ../../include/net-snmp/library/snmptsm.h
 ./serialize.lo: ../../include/net-snmp/library/snmpusm.h
 ./serialize.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./serialize.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1530,63 +1626,176 @@
 ./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-features.h
+./snmp_get_statistic.lo: ../../include/net-snmp/net-snmp-includes.h
+./snmp_get_statistic.lo: ../../include/net-snmp/definitions.h
+./snmp_get_statistic.lo: ../../include/net-snmp/types.h
+./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/snmptsm.h
+./snmp_get_statistic.lo: ../../include/net-snmp/library/snmpusm.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./snmp_get_statistic.lo: ../../include/net-snmp/agent/mib_module_config.h
+./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-features.h
 ./stash_cache.lo: ../../include/net-snmp/net-snmp-includes.h
 ./stash_cache.lo: ../../include/net-snmp/definitions.h
 ./stash_cache.lo: ../../include/net-snmp/types.h
+./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
+./stash_cache.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./stash_cache.lo: ../../include/net-snmp/library/mib.h
+./stash_cache.lo: ../../include/net-snmp/mib_api.h
+./stash_cache.lo: ../../include/net-snmp/library/parse.h
+./stash_cache.lo: ../../include/net-snmp/library/oid_stash.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmp_impl.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmp.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmp-tc.h
+./stash_cache.lo: ../../include/net-snmp/library/getopt.h
 ./stash_cache.lo: ../../include/net-snmp/utilities.h
-./stash_cache.lo: ../../include/net-snmp/library/snmp_client.h
 ./stash_cache.lo: ../../include/net-snmp/library/system.h
 ./stash_cache.lo: ../../include/net-snmp/library/tools.h
 ./stash_cache.lo: ../../include/net-snmp/library/int64.h
 ./stash_cache.lo: ../../include/net-snmp/library/mt_support.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmp_alarm.h
-./stash_cache.lo: ../../include/net-snmp/library/callback.h
 ./stash_cache.lo: ../../include/net-snmp/library/data_list.h
-./stash_cache.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./stash_cache.lo: ../../include/net-snmp/library/container.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmp_assert.h
 ./stash_cache.lo: ../../include/net-snmp/version.h
-./stash_cache.lo: ../../include/net-snmp/session_api.h
-./stash_cache.lo: ../../include/net-snmp/library/snmp_transport.h
-./stash_cache.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./stash_cache.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./stash_cache.lo: ../../include/net-snmp/pdu_api.h
-./stash_cache.lo: ../../include/net-snmp/mib_api.h
-./stash_cache.lo: ../../include/net-snmp/library/mib.h
-./stash_cache.lo: ../../include/net-snmp/library/parse.h
-./stash_cache.lo: ../../include/net-snmp/varbind_api.h
 ./stash_cache.lo: ../../include/net-snmp/config_api.h
 ./stash_cache.lo: ../../include/net-snmp/library/read_config.h
 ./stash_cache.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1595,6 +1804,7 @@
 ./stash_cache.lo: ../../include/net-snmp/library/lcd_time.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./stash_cache.lo: ../../include/net-snmp/library/snmptsm.h
 ./stash_cache.lo: ../../include/net-snmp/library/snmpusm.h
 ./stash_cache.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./stash_cache.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1632,65 +1842,70 @@
 ./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/stash_cache.h
+./stash_cache.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
 ./stash_cache.lo: ../../include/net-snmp/agent/stash_to_next.h
+./stash_cache.lo: ../../include/net-snmp/agent/stash_cache.h
 ./stash_to_next.lo: ../../include/net-snmp/net-snmp-config.h
-./stash_to_next.lo: ../../include/net-snmp/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-features.h
 ./stash_to_next.lo: ../../include/net-snmp/net-snmp-includes.h
 ./stash_to_next.lo: ../../include/net-snmp/definitions.h
 ./stash_to_next.lo: ../../include/net-snmp/types.h
+./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
+./stash_to_next.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./stash_to_next.lo: ../../include/net-snmp/library/mib.h
+./stash_to_next.lo: ../../include/net-snmp/mib_api.h
+./stash_to_next.lo: ../../include/net-snmp/library/parse.h
+./stash_to_next.lo: ../../include/net-snmp/library/oid_stash.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmp_impl.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmp.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmp-tc.h
+./stash_to_next.lo: ../../include/net-snmp/library/getopt.h
 ./stash_to_next.lo: ../../include/net-snmp/utilities.h
-./stash_to_next.lo: ../../include/net-snmp/library/snmp_client.h
 ./stash_to_next.lo: ../../include/net-snmp/library/system.h
 ./stash_to_next.lo: ../../include/net-snmp/library/tools.h
 ./stash_to_next.lo: ../../include/net-snmp/library/int64.h
 ./stash_to_next.lo: ../../include/net-snmp/library/mt_support.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmp_alarm.h
-./stash_to_next.lo: ../../include/net-snmp/library/callback.h
 ./stash_to_next.lo: ../../include/net-snmp/library/data_list.h
-./stash_to_next.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./stash_to_next.lo: ../../include/net-snmp/library/container.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmp_assert.h
 ./stash_to_next.lo: ../../include/net-snmp/version.h
-./stash_to_next.lo: ../../include/net-snmp/session_api.h
-./stash_to_next.lo: ../../include/net-snmp/library/snmp_transport.h
-./stash_to_next.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./stash_to_next.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./stash_to_next.lo: ../../include/net-snmp/pdu_api.h
-./stash_to_next.lo: ../../include/net-snmp/mib_api.h
-./stash_to_next.lo: ../../include/net-snmp/library/mib.h
-./stash_to_next.lo: ../../include/net-snmp/library/parse.h
-./stash_to_next.lo: ../../include/net-snmp/varbind_api.h
 ./stash_to_next.lo: ../../include/net-snmp/config_api.h
 ./stash_to_next.lo: ../../include/net-snmp/library/read_config.h
 ./stash_to_next.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1699,6 +1914,7 @@
 ./stash_to_next.lo: ../../include/net-snmp/library/lcd_time.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./stash_to_next.lo: ../../include/net-snmp/library/snmptsm.h
 ./stash_to_next.lo: ../../include/net-snmp/library/snmpusm.h
 ./stash_to_next.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./stash_to_next.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1736,166 +1952,70 @@
 ./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/stash_cache.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
-./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/snmp_api.h
-./table.lo: ../../include/net-snmp/library/asn1.h
-./table.lo: ../../include/net-snmp/library/snmp_impl.h
-./table.lo: ../../include/net-snmp/library/snmp.h
-./table.lo: ../../include/net-snmp/library/snmp-tc.h
-./table.lo: ../../include/net-snmp/utilities.h
-./table.lo: ../../include/net-snmp/library/snmp_client.h
-./table.lo: ../../include/net-snmp/library/system.h
-./table.lo: ../../include/net-snmp/library/tools.h
-./table.lo: ../../include/net-snmp/library/int64.h
-./table.lo: ../../include/net-snmp/library/mt_support.h
-./table.lo: ../../include/net-snmp/library/snmp_alarm.h
-./table.lo: ../../include/net-snmp/library/callback.h
-./table.lo: ../../include/net-snmp/library/data_list.h
-./table.lo: ../../include/net-snmp/library/oid_stash.h
-./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
-./table.lo: ../../include/net-snmp/library/container.h
-./table.lo: ../../include/net-snmp/library/snmp_assert.h
-./table.lo: ../../include/net-snmp/version.h
-./table.lo: ../../include/net-snmp/session_api.h
-./table.lo: ../../include/net-snmp/library/snmp_transport.h
-./table.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./table.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./table.lo: ../../include/net-snmp/pdu_api.h ../../include/net-snmp/mib_api.h
-./table.lo: ../../include/net-snmp/library/mib.h
-./table.lo: ../../include/net-snmp/library/parse.h
-./table.lo: ../../include/net-snmp/varbind_api.h
-./table.lo: ../../include/net-snmp/config_api.h
-./table.lo: ../../include/net-snmp/library/read_config.h
-./table.lo: ../../include/net-snmp/library/default_store.h
-./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
-./table.lo: ../../include/net-snmp/library/keytools.h
-./table.lo: ../../include/net-snmp/library/scapi.h
-./table.lo: ../../include/net-snmp/library/lcd_time.h
-./table.lo: ../../include/net-snmp/library/snmp_secmod.h
-./table.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
-./table.lo: ../../include/net-snmp/library/snmpusm.h
-./table.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
-./table.lo: ../../include/net-snmp/agent/mib_module_config.h
-./table.lo: ../../include/net-snmp/agent/agent_module_config.h
-./table.lo: ../../include/net-snmp/agent/snmp_agent.h
-./table.lo: ../../include/net-snmp/agent/snmp_vars.h
-./table.lo: ../../include/net-snmp/agent/agent_handler.h
-./table.lo: ../../include/net-snmp/agent/var_struct.h
-./table.lo: ../../include/net-snmp/agent/agent_registry.h
-./table.lo: ../../include/net-snmp/library/fd_event_manager.h
-./table.lo: ../../include/net-snmp/agent/ds_agent.h
-./table.lo: ../../include/net-snmp/agent/agent_read_config.h
-./table.lo: ../../include/net-snmp/agent/agent_trap.h
-./table.lo: ../../include/net-snmp/agent/all_helpers.h
-./table.lo: ../../include/net-snmp/agent/instance.h
-./table.lo: ../../include/net-snmp/agent/baby_steps.h
-./table.lo: ../../include/net-snmp/agent/scalar.h
-./table.lo: ../../include/net-snmp/agent/scalar_group.h
-./table.lo: ../../include/net-snmp/agent/watcher.h
-./table.lo: ../../include/net-snmp/agent/multiplexer.h
-./table.lo: ../../include/net-snmp/agent/null.h
-./table.lo: ../../include/net-snmp/agent/debug_handler.h
-./table.lo: ../../include/net-snmp/agent/cache_handler.h
-./table.lo: ../../include/net-snmp/agent/old_api.h
-./table.lo: ../../include/net-snmp/agent/read_only.h
-./table.lo: ../../include/net-snmp/agent/row_merge.h
-./table.lo: ../../include/net-snmp/agent/serialize.h
-./table.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./table.lo: ../../include/net-snmp/agent/mode_end_call.h
-./table.lo: ../../include/net-snmp/agent/table.h
-./table.lo: ../../include/net-snmp/agent/table_data.h
-./table.lo: ../../include/net-snmp/agent/table_dataset.h
-./table.lo: ../../include/net-snmp/agent/table_tdata.h
-./table.lo: ../../include/net-snmp/agent/table_iterator.h
-./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
+./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-features.h
 ./table_array.lo: ../../include/net-snmp/net-snmp-includes.h
 ./table_array.lo: ../../include/net-snmp/definitions.h
 ./table_array.lo: ../../include/net-snmp/types.h
+./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
+./table_array.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./table_array.lo: ../../include/net-snmp/library/mib.h
+./table_array.lo: ../../include/net-snmp/mib_api.h
+./table_array.lo: ../../include/net-snmp/library/parse.h
+./table_array.lo: ../../include/net-snmp/library/oid_stash.h
 ./table_array.lo: ../../include/net-snmp/library/snmp_impl.h
 ./table_array.lo: ../../include/net-snmp/library/snmp.h
 ./table_array.lo: ../../include/net-snmp/library/snmp-tc.h
+./table_array.lo: ../../include/net-snmp/library/getopt.h
 ./table_array.lo: ../../include/net-snmp/utilities.h
-./table_array.lo: ../../include/net-snmp/library/snmp_client.h
 ./table_array.lo: ../../include/net-snmp/library/system.h
 ./table_array.lo: ../../include/net-snmp/library/tools.h
 ./table_array.lo: ../../include/net-snmp/library/int64.h
 ./table_array.lo: ../../include/net-snmp/library/mt_support.h
 ./table_array.lo: ../../include/net-snmp/library/snmp_alarm.h
-./table_array.lo: ../../include/net-snmp/library/callback.h
 ./table_array.lo: ../../include/net-snmp/library/data_list.h
-./table_array.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./table_array.lo: ../../include/net-snmp/library/container.h
 ./table_array.lo: ../../include/net-snmp/library/snmp_assert.h
 ./table_array.lo: ../../include/net-snmp/version.h
-./table_array.lo: ../../include/net-snmp/session_api.h
-./table_array.lo: ../../include/net-snmp/library/snmp_transport.h
-./table_array.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./table_array.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./table_array.lo: ../../include/net-snmp/pdu_api.h
-./table_array.lo: ../../include/net-snmp/mib_api.h
-./table_array.lo: ../../include/net-snmp/library/mib.h
-./table_array.lo: ../../include/net-snmp/library/parse.h
-./table_array.lo: ../../include/net-snmp/varbind_api.h
 ./table_array.lo: ../../include/net-snmp/config_api.h
 ./table_array.lo: ../../include/net-snmp/library/read_config.h
 ./table_array.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1904,6 +2024,7 @@
 ./table_array.lo: ../../include/net-snmp/library/lcd_time.h
 ./table_array.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./table_array.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./table_array.lo: ../../include/net-snmp/library/snmptsm.h
 ./table_array.lo: ../../include/net-snmp/library/snmpusm.h
 ./table_array.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./table_array.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1941,63 +2062,176 @@
 ./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/net-snmp-features.h
+./table.lo: ../../include/net-snmp/net-snmp-includes.h
+./table.lo: ../../include/net-snmp/definitions.h
+./table.lo: ../../include/net-snmp/types.h
+./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
+./table.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./table.lo: ../../include/net-snmp/library/mib.h
+./table.lo: ../../include/net-snmp/mib_api.h
+./table.lo: ../../include/net-snmp/library/parse.h
+./table.lo: ../../include/net-snmp/library/oid_stash.h
+./table.lo: ../../include/net-snmp/library/snmp_impl.h
+./table.lo: ../../include/net-snmp/library/snmp.h
+./table.lo: ../../include/net-snmp/library/snmp-tc.h
+./table.lo: ../../include/net-snmp/library/getopt.h
+./table.lo: ../../include/net-snmp/utilities.h
+./table.lo: ../../include/net-snmp/library/system.h
+./table.lo: ../../include/net-snmp/library/tools.h
+./table.lo: ../../include/net-snmp/library/int64.h
+./table.lo: ../../include/net-snmp/library/mt_support.h
+./table.lo: ../../include/net-snmp/library/snmp_alarm.h
+./table.lo: ../../include/net-snmp/library/data_list.h
+./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/container_binary_array.h
+./table.lo: ../../include/net-snmp/library/container_list_ssll.h
+./table.lo: ../../include/net-snmp/library/container_iterator.h
+./table.lo: ../../include/net-snmp/library/container.h
+./table.lo: ../../include/net-snmp/library/snmp_assert.h
+./table.lo: ../../include/net-snmp/version.h
+./table.lo: ../../include/net-snmp/config_api.h
+./table.lo: ../../include/net-snmp/library/read_config.h
+./table.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./table.lo: ../../include/net-snmp/library/snmpv3.h
+./table.lo: ../../include/net-snmp/library/transform_oids.h
+./table.lo: ../../include/net-snmp/library/keytools.h
+./table.lo: ../../include/net-snmp/library/scapi.h
+./table.lo: ../../include/net-snmp/library/lcd_time.h
+./table.lo: ../../include/net-snmp/library/snmp_secmod.h
+./table.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./table.lo: ../../include/net-snmp/library/snmptsm.h
+./table.lo: ../../include/net-snmp/library/snmpusm.h
+./table.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./table.lo: ../../include/net-snmp/agent/mib_module_config.h
+./table.lo: ../../include/net-snmp/agent/agent_module_config.h
+./table.lo: ../../include/net-snmp/agent/snmp_agent.h
+./table.lo: ../../include/net-snmp/agent/snmp_vars.h
+./table.lo: ../../include/net-snmp/agent/agent_handler.h
+./table.lo: ../../include/net-snmp/agent/var_struct.h
+./table.lo: ../../include/net-snmp/agent/agent_registry.h
+./table.lo: ../../include/net-snmp/library/fd_event_manager.h
+./table.lo: ../../include/net-snmp/agent/ds_agent.h
+./table.lo: ../../include/net-snmp/agent/agent_read_config.h
+./table.lo: ../../include/net-snmp/agent/agent_trap.h
+./table.lo: ../../include/net-snmp/agent/all_helpers.h
+./table.lo: ../../include/net-snmp/agent/instance.h
+./table.lo: ../../include/net-snmp/agent/baby_steps.h
+./table.lo: ../../include/net-snmp/agent/scalar.h
+./table.lo: ../../include/net-snmp/agent/scalar_group.h
+./table.lo: ../../include/net-snmp/agent/watcher.h
+./table.lo: ../../include/net-snmp/agent/multiplexer.h
+./table.lo: ../../include/net-snmp/agent/null.h
+./table.lo: ../../include/net-snmp/agent/debug_handler.h
+./table.lo: ../../include/net-snmp/agent/cache_handler.h
+./table.lo: ../../include/net-snmp/agent/old_api.h
+./table.lo: ../../include/net-snmp/agent/read_only.h
+./table.lo: ../../include/net-snmp/agent/row_merge.h
+./table.lo: ../../include/net-snmp/agent/serialize.h
+./table.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./table.lo: ../../include/net-snmp/agent/mode_end_call.h
+./table.lo: ../../include/net-snmp/agent/table.h
+./table.lo: ../../include/net-snmp/agent/table_data.h
+./table.lo: ../../include/net-snmp/agent/table_dataset.h
+./table.lo: ../../include/net-snmp/agent/table_tdata.h
+./table.lo: ../../include/net-snmp/agent/table_iterator.h
+./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-features.h
 ./table_container.lo: ../../include/net-snmp/net-snmp-includes.h
 ./table_container.lo: ../../include/net-snmp/definitions.h
 ./table_container.lo: ../../include/net-snmp/types.h
+./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
+./table_container.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./table_container.lo: ../../include/net-snmp/library/mib.h
+./table_container.lo: ../../include/net-snmp/mib_api.h
+./table_container.lo: ../../include/net-snmp/library/parse.h
+./table_container.lo: ../../include/net-snmp/library/oid_stash.h
 ./table_container.lo: ../../include/net-snmp/library/snmp_impl.h
 ./table_container.lo: ../../include/net-snmp/library/snmp.h
 ./table_container.lo: ../../include/net-snmp/library/snmp-tc.h
+./table_container.lo: ../../include/net-snmp/library/getopt.h
 ./table_container.lo: ../../include/net-snmp/utilities.h
-./table_container.lo: ../../include/net-snmp/library/snmp_client.h
 ./table_container.lo: ../../include/net-snmp/library/system.h
 ./table_container.lo: ../../include/net-snmp/library/tools.h
 ./table_container.lo: ../../include/net-snmp/library/int64.h
 ./table_container.lo: ../../include/net-snmp/library/mt_support.h
 ./table_container.lo: ../../include/net-snmp/library/snmp_alarm.h
-./table_container.lo: ../../include/net-snmp/library/callback.h
 ./table_container.lo: ../../include/net-snmp/library/data_list.h
-./table_container.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./table_container.lo: ../../include/net-snmp/library/container.h
 ./table_container.lo: ../../include/net-snmp/library/snmp_assert.h
 ./table_container.lo: ../../include/net-snmp/version.h
-./table_container.lo: ../../include/net-snmp/session_api.h
-./table_container.lo: ../../include/net-snmp/library/snmp_transport.h
-./table_container.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./table_container.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./table_container.lo: ../../include/net-snmp/pdu_api.h
-./table_container.lo: ../../include/net-snmp/mib_api.h
-./table_container.lo: ../../include/net-snmp/library/mib.h
-./table_container.lo: ../../include/net-snmp/library/parse.h
-./table_container.lo: ../../include/net-snmp/varbind_api.h
 ./table_container.lo: ../../include/net-snmp/config_api.h
 ./table_container.lo: ../../include/net-snmp/library/read_config.h
 ./table_container.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2006,6 +2240,7 @@
 ./table_container.lo: ../../include/net-snmp/library/lcd_time.h
 ./table_container.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./table_container.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./table_container.lo: ../../include/net-snmp/library/snmptsm.h
 ./table_container.lo: ../../include/net-snmp/library/snmpusm.h
 ./table_container.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./table_container.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2043,63 +2278,68 @@
 ./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-features.h
 ./table_data.lo: ../../include/net-snmp/net-snmp-includes.h
 ./table_data.lo: ../../include/net-snmp/definitions.h
 ./table_data.lo: ../../include/net-snmp/types.h
+./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
+./table_data.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./table_data.lo: ../../include/net-snmp/library/mib.h
+./table_data.lo: ../../include/net-snmp/mib_api.h
+./table_data.lo: ../../include/net-snmp/library/parse.h
+./table_data.lo: ../../include/net-snmp/library/oid_stash.h
 ./table_data.lo: ../../include/net-snmp/library/snmp_impl.h
 ./table_data.lo: ../../include/net-snmp/library/snmp.h
 ./table_data.lo: ../../include/net-snmp/library/snmp-tc.h
+./table_data.lo: ../../include/net-snmp/library/getopt.h
 ./table_data.lo: ../../include/net-snmp/utilities.h
-./table_data.lo: ../../include/net-snmp/library/snmp_client.h
 ./table_data.lo: ../../include/net-snmp/library/system.h
 ./table_data.lo: ../../include/net-snmp/library/tools.h
 ./table_data.lo: ../../include/net-snmp/library/int64.h
 ./table_data.lo: ../../include/net-snmp/library/mt_support.h
 ./table_data.lo: ../../include/net-snmp/library/snmp_alarm.h
-./table_data.lo: ../../include/net-snmp/library/callback.h
 ./table_data.lo: ../../include/net-snmp/library/data_list.h
-./table_data.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./table_data.lo: ../../include/net-snmp/library/container.h
 ./table_data.lo: ../../include/net-snmp/library/snmp_assert.h
 ./table_data.lo: ../../include/net-snmp/version.h
-./table_data.lo: ../../include/net-snmp/session_api.h
-./table_data.lo: ../../include/net-snmp/library/snmp_transport.h
-./table_data.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./table_data.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./table_data.lo: ../../include/net-snmp/pdu_api.h
-./table_data.lo: ../../include/net-snmp/mib_api.h
-./table_data.lo: ../../include/net-snmp/library/mib.h
-./table_data.lo: ../../include/net-snmp/library/parse.h
-./table_data.lo: ../../include/net-snmp/varbind_api.h
 ./table_data.lo: ../../include/net-snmp/config_api.h
 ./table_data.lo: ../../include/net-snmp/library/read_config.h
 ./table_data.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2108,6 +2348,7 @@
 ./table_data.lo: ../../include/net-snmp/library/lcd_time.h
 ./table_data.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./table_data.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./table_data.lo: ../../include/net-snmp/library/snmptsm.h
 ./table_data.lo: ../../include/net-snmp/library/snmpusm.h
 ./table_data.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./table_data.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2145,63 +2386,68 @@
 ./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-features.h
 ./table_dataset.lo: ../../include/net-snmp/net-snmp-includes.h
 ./table_dataset.lo: ../../include/net-snmp/definitions.h
 ./table_dataset.lo: ../../include/net-snmp/types.h
+./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
+./table_dataset.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./table_dataset.lo: ../../include/net-snmp/library/mib.h
+./table_dataset.lo: ../../include/net-snmp/mib_api.h
+./table_dataset.lo: ../../include/net-snmp/library/parse.h
+./table_dataset.lo: ../../include/net-snmp/library/oid_stash.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmp_impl.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmp.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmp-tc.h
+./table_dataset.lo: ../../include/net-snmp/library/getopt.h
 ./table_dataset.lo: ../../include/net-snmp/utilities.h
-./table_dataset.lo: ../../include/net-snmp/library/snmp_client.h
 ./table_dataset.lo: ../../include/net-snmp/library/system.h
 ./table_dataset.lo: ../../include/net-snmp/library/tools.h
 ./table_dataset.lo: ../../include/net-snmp/library/int64.h
 ./table_dataset.lo: ../../include/net-snmp/library/mt_support.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmp_alarm.h
-./table_dataset.lo: ../../include/net-snmp/library/callback.h
 ./table_dataset.lo: ../../include/net-snmp/library/data_list.h
-./table_dataset.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./table_dataset.lo: ../../include/net-snmp/library/container.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmp_assert.h
 ./table_dataset.lo: ../../include/net-snmp/version.h
-./table_dataset.lo: ../../include/net-snmp/session_api.h
-./table_dataset.lo: ../../include/net-snmp/library/snmp_transport.h
-./table_dataset.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./table_dataset.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./table_dataset.lo: ../../include/net-snmp/pdu_api.h
-./table_dataset.lo: ../../include/net-snmp/mib_api.h
-./table_dataset.lo: ../../include/net-snmp/library/mib.h
-./table_dataset.lo: ../../include/net-snmp/library/parse.h
-./table_dataset.lo: ../../include/net-snmp/varbind_api.h
 ./table_dataset.lo: ../../include/net-snmp/config_api.h
 ./table_dataset.lo: ../../include/net-snmp/library/read_config.h
 ./table_dataset.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2210,6 +2456,7 @@
 ./table_dataset.lo: ../../include/net-snmp/library/lcd_time.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./table_dataset.lo: ../../include/net-snmp/library/snmptsm.h
 ./table_dataset.lo: ../../include/net-snmp/library/snmpusm.h
 ./table_dataset.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./table_dataset.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2247,63 +2494,68 @@
 ./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-features.h
 ./table_iterator.lo: ../../include/net-snmp/net-snmp-includes.h
 ./table_iterator.lo: ../../include/net-snmp/definitions.h
 ./table_iterator.lo: ../../include/net-snmp/types.h
+./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
+./table_iterator.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./table_iterator.lo: ../../include/net-snmp/library/mib.h
+./table_iterator.lo: ../../include/net-snmp/mib_api.h
+./table_iterator.lo: ../../include/net-snmp/library/parse.h
+./table_iterator.lo: ../../include/net-snmp/library/oid_stash.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmp_impl.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmp.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmp-tc.h
+./table_iterator.lo: ../../include/net-snmp/library/getopt.h
 ./table_iterator.lo: ../../include/net-snmp/utilities.h
-./table_iterator.lo: ../../include/net-snmp/library/snmp_client.h
 ./table_iterator.lo: ../../include/net-snmp/library/system.h
 ./table_iterator.lo: ../../include/net-snmp/library/tools.h
 ./table_iterator.lo: ../../include/net-snmp/library/int64.h
 ./table_iterator.lo: ../../include/net-snmp/library/mt_support.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmp_alarm.h
-./table_iterator.lo: ../../include/net-snmp/library/callback.h
 ./table_iterator.lo: ../../include/net-snmp/library/data_list.h
-./table_iterator.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./table_iterator.lo: ../../include/net-snmp/library/container.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmp_assert.h
 ./table_iterator.lo: ../../include/net-snmp/version.h
-./table_iterator.lo: ../../include/net-snmp/session_api.h
-./table_iterator.lo: ../../include/net-snmp/library/snmp_transport.h
-./table_iterator.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./table_iterator.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./table_iterator.lo: ../../include/net-snmp/pdu_api.h
-./table_iterator.lo: ../../include/net-snmp/mib_api.h
-./table_iterator.lo: ../../include/net-snmp/library/mib.h
-./table_iterator.lo: ../../include/net-snmp/library/parse.h
-./table_iterator.lo: ../../include/net-snmp/varbind_api.h
 ./table_iterator.lo: ../../include/net-snmp/config_api.h
 ./table_iterator.lo: ../../include/net-snmp/library/read_config.h
 ./table_iterator.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2312,6 +2564,7 @@
 ./table_iterator.lo: ../../include/net-snmp/library/lcd_time.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./table_iterator.lo: ../../include/net-snmp/library/snmptsm.h
 ./table_iterator.lo: ../../include/net-snmp/library/snmpusm.h
 ./table_iterator.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./table_iterator.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2349,64 +2602,69 @@
 ./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-features.h
 ./table_row.lo: ../../include/net-snmp/net-snmp-includes.h
 ./table_row.lo: ../../include/net-snmp/definitions.h
 ./table_row.lo: ../../include/net-snmp/types.h
+./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
+./table_row.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./table_row.lo: ../../include/net-snmp/library/mib.h
+./table_row.lo: ../../include/net-snmp/mib_api.h
+./table_row.lo: ../../include/net-snmp/library/parse.h
+./table_row.lo: ../../include/net-snmp/library/oid_stash.h
 ./table_row.lo: ../../include/net-snmp/library/snmp_impl.h
 ./table_row.lo: ../../include/net-snmp/library/snmp.h
 ./table_row.lo: ../../include/net-snmp/library/snmp-tc.h
+./table_row.lo: ../../include/net-snmp/library/getopt.h
 ./table_row.lo: ../../include/net-snmp/utilities.h
-./table_row.lo: ../../include/net-snmp/library/snmp_client.h
 ./table_row.lo: ../../include/net-snmp/library/system.h
 ./table_row.lo: ../../include/net-snmp/library/tools.h
 ./table_row.lo: ../../include/net-snmp/library/int64.h
 ./table_row.lo: ../../include/net-snmp/library/mt_support.h
 ./table_row.lo: ../../include/net-snmp/library/snmp_alarm.h
-./table_row.lo: ../../include/net-snmp/library/callback.h
 ./table_row.lo: ../../include/net-snmp/library/data_list.h
-./table_row.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./table_row.lo: ../../include/net-snmp/library/container.h
 ./table_row.lo: ../../include/net-snmp/library/snmp_assert.h
 ./table_row.lo: ../../include/net-snmp/version.h
-./table_row.lo: ../../include/net-snmp/session_api.h
-./table_row.lo: ../../include/net-snmp/library/snmp_transport.h
-./table_row.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./table_row.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./table_row.lo: ../../include/net-snmp/pdu_api.h
-./table_row.lo: ../../include/net-snmp/mib_api.h
-./table_row.lo: ../../include/net-snmp/library/mib.h
-./table_row.lo: ../../include/net-snmp/library/parse.h
-./table_row.lo: ../../include/net-snmp/varbind_api.h
 ./table_row.lo: ../../include/net-snmp/config_api.h
 ./table_row.lo: ../../include/net-snmp/library/read_config.h
 ./table_row.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2415,6 +2673,7 @@
 ./table_row.lo: ../../include/net-snmp/library/lcd_time.h
 ./table_row.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./table_row.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./table_row.lo: ../../include/net-snmp/library/snmptsm.h
 ./table_row.lo: ../../include/net-snmp/library/snmpusm.h
 ./table_row.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./table_row.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2452,63 +2711,68 @@
 ./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-features.h
 ./table_tdata.lo: ../../include/net-snmp/net-snmp-includes.h
 ./table_tdata.lo: ../../include/net-snmp/definitions.h
 ./table_tdata.lo: ../../include/net-snmp/types.h
+./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
+./table_tdata.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./table_tdata.lo: ../../include/net-snmp/library/mib.h
+./table_tdata.lo: ../../include/net-snmp/mib_api.h
+./table_tdata.lo: ../../include/net-snmp/library/parse.h
+./table_tdata.lo: ../../include/net-snmp/library/oid_stash.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmp_impl.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmp.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmp-tc.h
+./table_tdata.lo: ../../include/net-snmp/library/getopt.h
 ./table_tdata.lo: ../../include/net-snmp/utilities.h
-./table_tdata.lo: ../../include/net-snmp/library/snmp_client.h
 ./table_tdata.lo: ../../include/net-snmp/library/system.h
 ./table_tdata.lo: ../../include/net-snmp/library/tools.h
 ./table_tdata.lo: ../../include/net-snmp/library/int64.h
 ./table_tdata.lo: ../../include/net-snmp/library/mt_support.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmp_alarm.h
-./table_tdata.lo: ../../include/net-snmp/library/callback.h
 ./table_tdata.lo: ../../include/net-snmp/library/data_list.h
-./table_tdata.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./table_tdata.lo: ../../include/net-snmp/library/container.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmp_assert.h
 ./table_tdata.lo: ../../include/net-snmp/version.h
-./table_tdata.lo: ../../include/net-snmp/session_api.h
-./table_tdata.lo: ../../include/net-snmp/library/snmp_transport.h
-./table_tdata.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./table_tdata.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./table_tdata.lo: ../../include/net-snmp/pdu_api.h
-./table_tdata.lo: ../../include/net-snmp/mib_api.h
-./table_tdata.lo: ../../include/net-snmp/library/mib.h
-./table_tdata.lo: ../../include/net-snmp/library/parse.h
-./table_tdata.lo: ../../include/net-snmp/varbind_api.h
 ./table_tdata.lo: ../../include/net-snmp/config_api.h
 ./table_tdata.lo: ../../include/net-snmp/library/read_config.h
 ./table_tdata.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2517,6 +2781,7 @@
 ./table_tdata.lo: ../../include/net-snmp/library/lcd_time.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./table_tdata.lo: ../../include/net-snmp/library/snmptsm.h
 ./table_tdata.lo: ../../include/net-snmp/library/snmpusm.h
 ./table_tdata.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./table_tdata.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2554,63 +2819,68 @@
 ./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-features.h
 ./watcher.lo: ../../include/net-snmp/net-snmp-includes.h
 ./watcher.lo: ../../include/net-snmp/definitions.h
 ./watcher.lo: ../../include/net-snmp/types.h
+./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
+./watcher.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./watcher.lo: ../../include/net-snmp/library/mib.h
+./watcher.lo: ../../include/net-snmp/mib_api.h
+./watcher.lo: ../../include/net-snmp/library/parse.h
+./watcher.lo: ../../include/net-snmp/library/oid_stash.h
 ./watcher.lo: ../../include/net-snmp/library/snmp_impl.h
 ./watcher.lo: ../../include/net-snmp/library/snmp.h
 ./watcher.lo: ../../include/net-snmp/library/snmp-tc.h
+./watcher.lo: ../../include/net-snmp/library/getopt.h
 ./watcher.lo: ../../include/net-snmp/utilities.h
-./watcher.lo: ../../include/net-snmp/library/snmp_client.h
 ./watcher.lo: ../../include/net-snmp/library/system.h
 ./watcher.lo: ../../include/net-snmp/library/tools.h
 ./watcher.lo: ../../include/net-snmp/library/int64.h
 ./watcher.lo: ../../include/net-snmp/library/mt_support.h
 ./watcher.lo: ../../include/net-snmp/library/snmp_alarm.h
-./watcher.lo: ../../include/net-snmp/library/callback.h
 ./watcher.lo: ../../include/net-snmp/library/data_list.h
-./watcher.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./watcher.lo: ../../include/net-snmp/library/container.h
 ./watcher.lo: ../../include/net-snmp/library/snmp_assert.h
 ./watcher.lo: ../../include/net-snmp/version.h
-./watcher.lo: ../../include/net-snmp/session_api.h
-./watcher.lo: ../../include/net-snmp/library/snmp_transport.h
-./watcher.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./watcher.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./watcher.lo: ../../include/net-snmp/pdu_api.h
-./watcher.lo: ../../include/net-snmp/mib_api.h
-./watcher.lo: ../../include/net-snmp/library/mib.h
-./watcher.lo: ../../include/net-snmp/library/parse.h
-./watcher.lo: ../../include/net-snmp/varbind_api.h
 ./watcher.lo: ../../include/net-snmp/config_api.h
 ./watcher.lo: ../../include/net-snmp/library/read_config.h
 ./watcher.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2619,6 +2889,7 @@
 ./watcher.lo: ../../include/net-snmp/library/lcd_time.h
 ./watcher.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./watcher.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./watcher.lo: ../../include/net-snmp/library/snmptsm.h
 ./watcher.lo: ../../include/net-snmp/library/snmpusm.h
 ./watcher.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./watcher.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2656,3 +2927,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 b83af89..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.h \
-	table_array.h \
-	table_container.h \
-        table_data.h \
-        table_dataset.h \
-        table_iterator.h \
-        table_tdata.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/all_helpers.c b/agent/helpers/all_helpers.c
index 02bc8af..e1e1b78 100644
--- a/agent/helpers/all_helpers.c
+++ b/agent/helpers/all_helpers.c
@@ -2,18 +2,10 @@
  *  @{ */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
-#ifdef STILL_TO_DO
-        /*
-         * It ought to be possible to just #include these files,
-         *   but they rely on various other types being defined first.
-         *
-         * I really can't face tracking down the dependency chain
-         *   just at the moment.
-         * So we'll just have to live with the warnings....
-         */
 #include <net-snmp/agent/debug_handler.h>
 #include <net-snmp/agent/serialize.h>
 #include <net-snmp/agent/read_only.h>
@@ -21,15 +13,8 @@
 #include <net-snmp/agent/table_dataset.h>
 #include <net-snmp/agent/stash_cache.h>
 
-#else
+netsnmp_feature_child_of(mib_helpers, libnetsnmpagent)
 
-void  netsnmp_init_debug_helper(void);
-void  netsnmp_init_serialize(void);
-void  netsnmp_init_read_only_helper(void);
-void  netsnmp_init_bulk_to_next_helper(void);
-void  netsnmp_init_table_dataset(void);
-void  netsnmp_init_stash_cache_helper(void);
-#endif
 
 /** call the initialization sequence for all handlers with init_ routines. */
 void
@@ -39,8 +24,16 @@
     netsnmp_init_serialize();
     netsnmp_init_read_only_helper();
     netsnmp_init_bulk_to_next_helper();
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATASET
     netsnmp_init_table_dataset();
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATASET */
+
+#ifndef NETSNMP_FEATURE_REMOVE_ROW_MERGE
+    netsnmp_init_row_merge();
+#endif /* NETSNMP_FEATURE_REMOVE_ROW_MERGE */
+#ifndef NETSNMP_FEATURE_REMOVE_STASH_CACHE
     netsnmp_init_stash_cache_helper();
+#endif /* NETSNMP_FEATURE_REMOVE_STASH_CACHE */
 }
 
 /** @defgroup utilities utility_handlers
diff --git a/agent/helpers/baby_steps.c b/agent/helpers/baby_steps.c
index 64bba89..d79acbc 100644
--- a/agent/helpers/baby_steps.c
+++ b/agent/helpers/baby_steps.c
@@ -3,9 +3,19 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+netsnmp_feature_provide(baby_steps)
+netsnmp_feature_child_of(baby_steps, mib_helpers)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_BABY_STEPS
+netsnmp_feature_require(check_requests_error)
+#endif
+
+#ifndef NETSNMP_FEATURE_REMOVE_BABY_STEPS
+
 #include <net-snmp/agent/baby_steps.h>
 
 #define BABY_STEPS_PER_MODE_MAX     4
@@ -14,6 +24,7 @@
 static u_short get_mode_map[BABY_STEPS_PER_MODE_MAX] = {
     MODE_BSTEP_PRE_REQUEST, MODE_BSTEP_OBJECT_LOOKUP, BSTEP_USE_ORIGINAL, MODE_BSTEP_POST_REQUEST };
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 static u_short set_mode_map[SNMP_MSG_INTERNAL_SET_MAX][BABY_STEPS_PER_MODE_MAX] = {
     /*R1*/
     { MODE_BSTEP_PRE_REQUEST, MODE_BSTEP_OBJECT_LOOKUP, MODE_BSTEP_ROW_CREATE,
@@ -33,6 +44,7 @@
     { MODE_BSTEP_UNDO_COMMIT, MODE_BSTEP_UNDO_SET, MODE_BSTEP_UNDO_CLEANUP,
       MODE_BSTEP_POST_REQUEST}
 };
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 static int
 _baby_steps_helper(netsnmp_mib_handler *handler,
@@ -51,6 +63,20 @@
  *  @{
  */
 
+static netsnmp_baby_steps_modes *
+netsnmp_baby_steps_modes_ref(netsnmp_baby_steps_modes *md)
+{
+    md->refcnt++;
+    return md;
+}
+
+static void
+netsnmp_baby_steps_modes_deref(netsnmp_baby_steps_modes *md)
+{
+    if (--md->refcnt == 0)
+	free(md);
+}
+
 /** returns a baby_steps handler that can be injected into a given
  *  handler chain.
  */
@@ -71,7 +97,10 @@
         mh = NULL;
     }
     else {
+	md->refcnt = 1;
         mh->myvoid = md;
+	mh->data_clone = (void *(*)(void *))netsnmp_baby_steps_modes_ref;
+	mh->data_free = (void (*)(void *))netsnmp_baby_steps_modes_deref;
         if (0 == modes)
             modes = BABY_STEP_ALL;
         md->registered = modes;
@@ -99,11 +128,12 @@
     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) {
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         /*
          * clear completed modes
@@ -121,6 +151,7 @@
     case MODE_SET_UNDO:
         mode_map_ptr = set_mode_map[reqinfo->mode];
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
             
     default:
         /*
@@ -222,6 +253,7 @@
         if (BSTEP_USE_ORIGINAL != mode_map_ptr[i]) {
             u_int    mode_flag;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             /*
              * skip undo commit if commit wasn't hit, and
              * undo_cleanup if undo_setup wasn't hit.
@@ -240,6 +272,7 @@
                             "   skipping undo cleanup (no undo setup)\n"));
                 continue;
             }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
             reqinfo->mode = mode_map_ptr[i];
             mode_flag = netsnmp_baby_step_mode2flag( mode_map_ptr[i] );
@@ -293,7 +326,10 @@
          * in commit, free or undo.)
          */
         if (MODE_IS_GET(save_mode)
-            || (save_mode < SNMP_MSG_INTERNAL_SET_COMMIT)) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+            || (save_mode < SNMP_MSG_INTERNAL_SET_COMMIT)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+            ) {
             rc = netsnmp_check_requests_error(requests);
             if(rc) {
                 DEBUGMSGTL(("baby_steps", "   ERROR:request error\n"));
@@ -315,12 +351,15 @@
  *  handler as a run-time injectable handler for configuration file
  *  use.
  */
+netsnmp_feature_child_of(netsnmp_baby_steps_handler_init,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_BABY_STEPS_HANDLER_INIT
 void
 netsnmp_baby_steps_handler_init(void)
 {
     netsnmp_register_handler_by_name("baby_steps",
                                      netsnmp_baby_steps_handler_get(BABY_STEP_ALL));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_BABY_STEPS_HANDLER_INIT */
 
 /** @} */
 
@@ -391,6 +430,7 @@
             method = access_methods->get_values;
         break;
         
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_BSTEP_CHECK_VALUE:
         if( access_methods->object_syntax_checks )
             method = access_methods->object_syntax_checks;
@@ -440,6 +480,7 @@
         if( access_methods->undo_cleanup )
             method = access_methods->undo_cleanup;
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
         
     case MODE_BSTEP_POST_REQUEST:
         if( access_methods->post_request )
@@ -484,6 +525,7 @@
     switch( mode ) {
         case MODE_BSTEP_OBJECT_LOOKUP:
             return BABY_STEP_OBJECT_LOOKUP;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case MODE_BSTEP_SET_VALUE:
             return BABY_STEP_SET_VALUE;
         case MODE_BSTEP_IRREVERSIBLE_COMMIT:
@@ -508,6 +550,7 @@
             return BABY_STEP_COMMIT;
         case MODE_BSTEP_UNDO_COMMIT:
             return BABY_STEP_UNDO_COMMIT;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
         default:
             netsnmp_assert("unknown flag");
             break;
@@ -516,3 +559,7 @@
 }
 /**  @} */
 
+#else  /* NETSNMP_FEATURE_REMOVE_BABY_STEPS */
+netsnmp_feature_unused(baby_steps);
+#endif /* NETSNMP_FEATURE_REMOVE_BABY_STEPS */
+
diff --git a/agent/helpers/bulk_to_next.c b/agent/helpers/bulk_to_next.c
index 4dd1914..e607eda 100644
--- a/agent/helpers/bulk_to_next.c
+++ b/agent/helpers/bulk_to_next.c
@@ -1,11 +1,5 @@
 #include <net-snmp/net-snmp-config.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>
 
diff --git a/agent/helpers/cache_handler.c b/agent/helpers/cache_handler.c
index 520d463..520a4cf 100644
--- a/agent/helpers/cache_handler.c
+++ b/agent/helpers/cache_handler.c
@@ -1,4 +1,15 @@
+/* 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.
+ */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_STRING_H
 #include <string.h>
@@ -11,6 +22,11 @@
 
 #include <net-snmp/agent/cache_handler.h>
 
+netsnmp_feature_child_of(cache_handler, mib_helpers)
+
+netsnmp_feature_child_of(cache_find_by_oid, cache_handler)
+netsnmp_feature_child_of(cache_get_head, cache_handler)
+
 static netsnmp_cache  *cache_head = NULL;
 static int             cache_outstanding_valid = 0;
 static int             _cache_load( netsnmp_cache *cache );
@@ -69,6 +85,14 @@
  *  the cache when it expires. This is useful for keeping the cache fresh,
  *  even in the absence of incoming snmp requests.
  *
+ *  If NETSNMP_CACHE_RESET_TIMER_ON_USE is set, the expiry timer will be
+ *  reset on each cache access. In practice the 'timeout' becomes a timer
+ *  which triggers when the cache is no longer needed. This is useful
+ *  if the cache is automatically kept synchronized: e.g. by receiving
+ *  change notifications from Netlink, inotify or similar. This should
+ *  not be used if cache is not synchronized automatically as it would
+ *  result in stale cache information when if polling happens too fast.
+ *
  *
  *  Here are some suggestions for some common situations.
  *
@@ -100,9 +124,20 @@
  *          NETSNMP_CACHE_DONT_AUTO_RELEASE
  *          NETSNMP_CACHE_AUTO_RELOAD
  *
+ *  Dynamically updated, unloaded after timeout:
+ *      If the cache is kept up to date dynamically by listening for
+ *      change notifications somehow, but it should not be in memory
+ *      if it's not needed. Set the following flag:
+ *
+ *          NETSNMP_CACHE_RESET_TIMER_ON_USE
+ *
  *  @{
  */
 
+static void
+_cache_free( netsnmp_cache *cache );
+
+#ifndef NETSNMP_FEATURE_REMOVE_CACHE_GET_HEAD
 /** get cache head
  * @internal
  * unadvertised function to get cache head. You really should not
@@ -113,11 +148,13 @@
 {
     return cache_head;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CACHE_GET_HEAD */
 
+#ifndef NETSNMP_FEATURE_REMOVE_CACHE_FIND_BY_OID
 /** find existing cache
  */
 netsnmp_cache *
-netsnmp_cache_find_by_oid(oid * rootoid, int rootoid_len)
+netsnmp_cache_find_by_oid(const oid * rootoid, int rootoid_len)
 {
     netsnmp_cache  *cache;
 
@@ -129,13 +166,14 @@
     
     return NULL;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CACHE_FIND_BY_OID */
 
 /** returns a cache
  */
 netsnmp_cache *
 netsnmp_cache_create(int timeout, NetsnmpCacheLoad * load_hook,
                      NetsnmpCacheFree * free_hook,
-                     oid * rootoid, int rootoid_len)
+                     const oid * rootoid, int rootoid_len)
 {
     netsnmp_cache  *cache = NULL;
 
@@ -173,6 +211,95 @@
     return cache;
 }
 
+static netsnmp_cache *
+netsnmp_cache_ref(netsnmp_cache *cache)
+{
+    cache->refcnt++;
+    return cache;
+}
+
+static void
+netsnmp_cache_deref(netsnmp_cache *cache)
+{
+    if (--cache->refcnt == 0) {
+        netsnmp_cache_remove(cache);
+        netsnmp_cache_free(cache);
+    }
+}
+
+/** frees a cache
+ */
+int
+netsnmp_cache_free(netsnmp_cache *cache)
+{
+    netsnmp_cache  *pos;
+
+    if (NULL == cache)
+        return SNMPERR_SUCCESS;
+
+    for (pos = cache_head; pos; pos = pos->next) {
+        if (pos == cache) {
+            size_t          out_len = 0;
+            size_t          buf_len = 0;
+            char           *buf = NULL;
+
+            sprint_realloc_objid((u_char **) &buf, &buf_len, &out_len,
+                                 1, pos->rootoid, pos->rootoid_len);
+            snmp_log(LOG_WARNING,
+                     "not freeing cache with root OID %s (still in list)\n",
+                     buf);
+            free(buf);
+            return SNMP_ERR_GENERR;
+        }
+    }
+
+    if(0 != cache->timer_id)
+        netsnmp_cache_timer_stop(cache);
+
+    if (cache->valid)
+        _cache_free(cache);
+
+    if (cache->timestampM)
+	free(cache->timestampM);
+
+    if (cache->rootoid)
+        free(cache->rootoid);
+
+    free(cache);
+
+    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)
@@ -217,7 +344,7 @@
 
     cache->flags &= ~NETSNMP_CACHE_AUTO_RELOAD;
     DEBUGMSGT(("cache_timer:start",
-               "starting timer %d for cache %p\n", cache->timer_id, cache));
+               "starting timer %lu for cache %p\n", cache->timer_id, cache));
     return cache->timer_id;
 }
 
@@ -234,7 +361,7 @@
     }
 
     DEBUGMSGT(("cache_timer:stop",
-               "stopping timer %d for cache %p\n", cache->timer_id, cache));
+               "stopping timer %lu for cache %p\n", cache->timer_id, cache));
 
     snmp_alarm_unregister(cache->timer_id);
     cache->flags |= NETSNMP_CACHE_AUTO_RELOAD;
@@ -270,12 +397,23 @@
     return ret;
 }
 
+/** Makes sure that memory allocated for the cache is freed when the handler
+ *  is unregistered.
+ */
+void netsnmp_cache_handler_owns_cache(netsnmp_mib_handler *handler)
+{
+    netsnmp_assert(handler->myvoid);
+    ((netsnmp_cache *)handler->myvoid)->refcnt++;
+    handler->data_clone = (void *(*)(void *))netsnmp_cache_ref;
+    handler->data_free = (void(*)(void*))netsnmp_cache_deref;
+}
+
 /** returns a cache handler that can be injected into a given handler chain.  
  */
 netsnmp_mib_handler *
 netsnmp_get_cache_handler(int timeout, NetsnmpCacheLoad * load_hook,
                           NetsnmpCacheFree * free_hook,
-                          oid * rootoid, int rootoid_len)
+                          const oid * rootoid, int rootoid_len)
 {
     netsnmp_mib_handler *ret = NULL;
     netsnmp_cache  *cache = NULL;
@@ -285,12 +423,15 @@
         cache = netsnmp_cache_create(timeout, load_hook, free_hook,
                                      rootoid, rootoid_len);
         ret->myvoid = (void *) cache;
+        netsnmp_cache_handler_owns_cache(ret);
     }
     return ret;
 }
 
 /** functionally the same as calling netsnmp_register_handler() but also
  * injects a cache handler at the same time for you. */
+netsnmp_feature_child_of(netsnmp_cache_handler_register,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_CACHE_HANDLER_REGISTER
 int
 netsnmp_cache_handler_register(netsnmp_handler_registration * reginfo,
                                netsnmp_cache* cache)
@@ -301,9 +442,12 @@
     netsnmp_inject_handler(reginfo, handler);
     return netsnmp_register_handler(reginfo);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_CACHE_HANDLER_REGISTER */
 
 /** functionally the same as calling netsnmp_register_handler() but also
  * injects a cache handler at the same time for you. */
+netsnmp_feature_child_of(netsnmp_register_cache_handler,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_REGISTER_CACHE_HANDLER
 int
 netsnmp_register_cache_handler(netsnmp_handler_registration * reginfo,
                                int timeout, NetsnmpCacheLoad * load_hook,
@@ -317,11 +461,12 @@
     netsnmp_inject_handler(reginfo, handler);
     return netsnmp_register_handler(reginfo);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_REGISTER_CACHE_HANDLER */
 
-NETSNMP_STATIC_INLINE char *
+static char *
 _build_cache_name(const char *name)
 {
-    char *dup = 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);
@@ -352,17 +497,20 @@
 {
     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;
 }
 
 /** Extract the cache information for a given request (PDU) */
+netsnmp_feature_child_of(netsnmp_extract_cache_info,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_EXTRACT_CACHE_INFO
 netsnmp_cache  *
 netsnmp_extract_cache_info(netsnmp_agent_request_info * reqinfo)
 {
     return netsnmp_cache_reqinfo_extract(reqinfo, CACHE_NAME);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_EXTRACT_CACHE_INFO */
 
 
 /** Check if the cache timeout has passed. Sets and return the expired flag. */
@@ -371,11 +519,13 @@
 {
     if(NULL == cache)
         return 0;
-    
-    if(!cache->valid || (NULL == cache->timestamp) || (-1 == cache->timeout))
+    if (cache->expired)
+        return 1;
+    if(!cache->valid || (NULL == cache->timestampM) || (-1 == cache->timeout))
         cache->expired = 1;
     else
-        cache->expired = atime_ready(cache->timestamp, 1000 * cache->timeout);
+        cache->expired = netsnmp_ready_monotonic(cache->timestampM,
+                                                 1000 * cache->timeout);
     
     return cache->expired;
 }
@@ -409,11 +559,14 @@
 /** Is the cache valid for a given request?
  * for backwards compatability. netsnmp_cache_is_valid() is preferred.
  */
+netsnmp_feature_child_of(netsnmp_is_cache_valid,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_IS_CACHE_VALID
 int
 netsnmp_is_cache_valid(netsnmp_agent_request_info * reqinfo)
 {
     return netsnmp_cache_is_valid(reqinfo, CACHE_NAME);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_IS_CACHE_VALID */
 
 /** Implements the cache handler */
 int
@@ -443,7 +596,7 @@
                    "cache not found, disabled or had no load method\n"));
         return SNMP_ERR_NOERROR;
     }
-    snprintf(addrstr,sizeof(addrstr), "%p", cache);
+    snprintf(addrstr,sizeof(addrstr), "%ld", (long int)cache);
     DEBUGMSGTL(("helper:cache_handler", "using cache %s: ", addrstr));
     DEBUGMSGOID(("helper:cache_handler", cache->rootoid, cache->rootoid_len));
     DEBUGMSG(("helper:cache_handler", "\n"));
@@ -463,7 +616,9 @@
     case MODE_GET:
     case MODE_GETNEXT:
     case MODE_GETBULK:
-    case MODE_SET_RESERVE1: {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+    case MODE_SET_RESERVE1:
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
         /*
          * only touch cache once per pdu request, to prevent a cache
@@ -474,7 +629,7 @@
          * maybe use a reference counter?
          */
         if (netsnmp_cache_is_valid(reqinfo, addrstr))
-            return SNMP_ERR_NOERROR;
+            break;
 
         /*
          * call the load hook, and update the cache timestamp.
@@ -483,16 +638,16 @@
         netsnmp_cache_check_and_reload(cache);
         netsnmp_cache_reqinfo_insert(cache, reqinfo, addrstr);
         /** next handler called automatically - 'AUTO_NEXT' */
-        }
-        return SNMP_ERR_NOERROR;
+        break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE2:
     case MODE_SET_FREE:
     case MODE_SET_ACTION:
     case MODE_SET_UNDO:
         netsnmp_assert(netsnmp_cache_is_valid(reqinfo, addrstr));
         /** next handler called automatically - 'AUTO_NEXT' */
-        return SNMP_ERR_NOERROR;
+        break;
 
         /*
          * A (successful) SET request wouldn't typically trigger a reload of
@@ -506,7 +661,8 @@
             cache->valid = 0;
         }
         /** next handler called automatically - 'AUTO_NEXT' */
-        return SNMP_ERR_NOERROR;
+        break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     default:
         snmp_log(LOG_WARNING, "cache_handler: Unrecognised mode (%d)\n",
@@ -514,8 +670,9 @@
         netsnmp_request_set_error_all(requests, SNMP_ERR_GENERR);
         return SNMP_ERR_GENERR;
     }
-    netsnmp_request_set_error_all(requests, SNMP_ERR_GENERR);
-    return SNMP_ERR_GENERR;     /* should never get here */
+    if (cache->flags & NETSNMP_CACHE_RESET_TIMER_ON_USE)
+        netsnmp_set_monotonic_marker(&cache->timestampM);
+    return SNMP_ERR_NOERROR;
 }
 
 static void
@@ -559,10 +716,7 @@
                             0, release_cached_resources, NULL);
         cache_outstanding_valid = 1;
     }
-    if (cache->timestamp)
-        atime_setMarker(cache->timestamp);
-    else
-        cache->timestamp = atime_newMarker();
+    netsnmp_set_monotonic_marker(&cache->timestampM);
     DEBUGMSGT(("helper:cache_handler", " loaded (%d)\n", cache->timeout));
 
     return ret;
diff --git a/agent/helpers/debug_handler.c b/agent/helpers/debug_handler.c
index 4e35695..e4a8438 100644
--- a/agent/helpers/debug_handler.c
+++ b/agent/helpers/debug_handler.c
@@ -9,13 +9,6 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.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>
 
@@ -53,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;
@@ -82,6 +81,7 @@
     }
 }
 
+#endif /* NETSNMP_NO_DEBUGGING */
 
 /** @internal Implements the debug handler */
 int
@@ -90,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 = %x]", 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;
 }
 
@@ -157,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 5c9e16d..a5ee841 100644
--- a/agent/helpers/instance.c
+++ b/agent/helpers/instance.c
@@ -9,6 +9,12 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <net-snmp/agent/instance.h>
 
 #include <stdlib.h>
 #if HAVE_STRING_H
@@ -18,16 +24,17 @@
 #endif
 
 #include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/agent/net-snmp-agent-includes.h>
-
-#include <net-snmp/agent/instance.h>
 #include <net-snmp/agent/serialize.h>
 #include <net-snmp/agent/read_only.h>
 
+netsnmp_feature_provide(instance)
+netsnmp_feature_child_of(instance, mib_helpers)
+
 typedef struct netsnmp_num_file_instance_s {
+    int   refcnt;
     char *file_name;
     FILE *filep;
-    int   type;
+    u_char type;
     int   flags;
 } netsnmp_num_file_instance;
 
@@ -37,6 +44,22 @@
  *  @{
  */
 
+static netsnmp_num_file_instance *
+netsnmp_num_file_instance_ref(netsnmp_num_file_instance *nfi)
+{
+    nfi->refcnt++;
+    return nfi;
+}
+
+static void
+netsnmp_num_file_instance_deref(netsnmp_num_file_instance *nfi)
+{
+    if (--nfi->refcnt == 0) {
+	free(nfi->file_name);
+	free(nfi);
+    }
+}
+
 /**
  * Creates an instance helper handler, calls netsnmp_create_handler, which
  * then could be registered, using netsnmp_register_handler().
@@ -108,8 +131,8 @@
 netsnmp_handler_registration *
 get_reg(const char *name,
         const char *ourname,
-        oid * reg_oid, size_t reg_oid_len,
-        void *it,
+        const oid * reg_oid, size_t reg_oid_len,
+        netsnmp_num_file_instance *it,
         int modes,
         Netsnmp_Node_Handler * scalarh, Netsnmp_Node_Handler * subhandler,
         const char *contextName)
@@ -124,7 +147,9 @@
                                                 reg_oid, reg_oid_len,
                                                 modes);
         myhandler = netsnmp_create_handler(ourname, scalarh);
-        myhandler->myvoid = (void *) it;
+        myhandler->myvoid = it;
+	myhandler->data_clone = (void*(*)(void*))netsnmp_num_file_instance_ref;
+	myhandler->data_free = (void(*)(void*))netsnmp_num_file_instance_deref;
         netsnmp_inject_handler(myreg, myhandler);
     } else {
         myreg =
@@ -132,7 +157,11 @@
                                                 scalarh,
                                                 reg_oid, reg_oid_len,
                                                 modes);
-        myreg->handler->myvoid = (void *) it;
+        myreg->handler->myvoid = it;
+	myreg->handler->data_clone
+	    = (void *(*)(void *))netsnmp_num_file_instance_ref;
+	myreg->handler->data_free
+	    = (void (*)(void *))netsnmp_num_file_instance_deref;
     }
     if (contextName)
         myreg->contextName = strdup(contextName);
@@ -140,255 +169,318 @@
 }
 
 /* Watched 'long' instances are writable on both 32-bit and 64-bit systems  */
+netsnmp_feature_child_of(read_only_ulong_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_ULONG_INSTANCE
 int
 netsnmp_register_read_only_ulong_instance(const char *name,
-                                          oid * reg_oid,
+                                          const oid * reg_oid,
                                           size_t reg_oid_len, u_long * it,
                                           Netsnmp_Node_Handler *
                                           subhandler)
 {
-    netsnmp_handler_registration *myreg;
-
-    myreg = get_reg(name, "ulong_handler", reg_oid, reg_oid_len, it,
-                    HANDLER_CAN_RONLY, netsnmp_instance_ulong_handler,
-                    subhandler, NULL);
-    return netsnmp_register_read_only_instance(myreg);
+    return netsnmp_register_watched_instance2(
+               netsnmp_create_handler_registration(
+                   name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY),
+               netsnmp_create_watcher_info(
+                   (void *)it, sizeof(u_long),
+                   ASN_UNSIGNED, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_ULONG_INSTANCE */
 
+netsnmp_feature_child_of(ulong_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_ULONG_INSTANCE
 int
 netsnmp_register_ulong_instance(const char *name,
-                                oid * reg_oid, size_t reg_oid_len,
+                                const oid * reg_oid, size_t reg_oid_len,
                                 u_long * it,
                                 Netsnmp_Node_Handler * subhandler)
 {
-    netsnmp_handler_registration *myreg;
-
-    myreg = get_reg(name, "ulong_handler", reg_oid, reg_oid_len, it,
-                    HANDLER_CAN_RWRITE, netsnmp_instance_ulong_handler,
-                    subhandler, NULL);
-    return netsnmp_register_instance(myreg);
+    return netsnmp_register_watched_instance2(
+               netsnmp_create_handler_registration(
+                   name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RWRITE),
+               netsnmp_create_watcher_info(
+                   (void *)it, sizeof(u_long),
+                   ASN_UNSIGNED, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_ULONG_INSTANCE */
 
+netsnmp_feature_child_of(read_only_counter32_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_COUNTER32_INSTANCE
 int
 netsnmp_register_read_only_counter32_instance(const char *name,
-                                              oid * reg_oid,
+                                              const oid * reg_oid,
                                               size_t reg_oid_len,
                                               u_long * it,
                                               Netsnmp_Node_Handler *
                                               subhandler)
 {
-    netsnmp_handler_registration *myreg;
-
-    myreg = get_reg(name, "counter32_handler", reg_oid, reg_oid_len, it,
-                    HANDLER_CAN_RONLY, netsnmp_instance_counter32_handler,
-                    subhandler, NULL);
-    return netsnmp_register_read_only_instance(myreg);
+    return netsnmp_register_watched_instance2(
+               netsnmp_create_handler_registration(
+                   name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY),
+               netsnmp_create_watcher_info(
+                   (void *)it, sizeof(u_long),
+                   ASN_COUNTER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_COUNTER32_INSTANCE */
 
+netsnmp_feature_child_of(read_only_long_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_LONG_INSTANCE
 int
 netsnmp_register_read_only_long_instance(const char *name,
-                                         oid * reg_oid, size_t reg_oid_len,
+                                         const oid * reg_oid,
+                                         size_t reg_oid_len,
                                          long *it,
                                          Netsnmp_Node_Handler * subhandler)
 {
-    netsnmp_handler_registration *myreg;
-
-    myreg = get_reg(name, "long_handler", reg_oid, reg_oid_len, it,
-                    HANDLER_CAN_RONLY, netsnmp_instance_long_handler,
-                    subhandler, NULL);
-    return netsnmp_register_read_only_instance(myreg);
+    return netsnmp_register_watched_instance2(
+               netsnmp_create_handler_registration(
+                   name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY),
+               netsnmp_create_watcher_info(
+                   (void *)it, sizeof(long), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_LONG_INSTANCE */
 
+netsnmp_feature_child_of(long_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_LONG_INSTANCE
 int
 netsnmp_register_long_instance(const char *name,
-                               oid * reg_oid, size_t reg_oid_len,
+                               const oid * reg_oid, size_t reg_oid_len,
                                long *it, Netsnmp_Node_Handler * subhandler)
 {
-    netsnmp_handler_registration *myreg;
-
-    myreg = get_reg(name, "long_handler", reg_oid, reg_oid_len, it,
-                    HANDLER_CAN_RWRITE, netsnmp_instance_long_handler,
-                    subhandler, NULL);
-    return netsnmp_register_instance(myreg);
+    return netsnmp_register_watched_instance2(
+               netsnmp_create_handler_registration(
+                   name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RWRITE),
+               netsnmp_create_watcher_info(
+                   (void *)it, sizeof(long), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LONG_INSTANCE */
 
 /* Watched 'int' instances are only writable on 32-bit systems  */
+netsnmp_feature_child_of(read_only_uint_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_UINT_INSTANCE
 int
 netsnmp_register_read_only_uint_instance(const char *name,
-                                         oid * reg_oid, size_t reg_oid_len,
+                                         const oid * reg_oid,
+                                         size_t reg_oid_len,
                                          unsigned int *it,
                                          Netsnmp_Node_Handler * subhandler)
 {
-    netsnmp_handler_registration *myreg;
-
-    myreg = get_reg(name, "uint_handler", reg_oid, reg_oid_len, it,
-                    HANDLER_CAN_RONLY, netsnmp_instance_uint_handler,
-                    subhandler, NULL);
-    return netsnmp_register_read_only_instance(myreg);
+    return netsnmp_register_watched_instance2(
+               netsnmp_create_handler_registration(
+                   name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY),
+               netsnmp_create_watcher_info(
+                   (void *)it, sizeof(unsigned int),
+                   ASN_UNSIGNED, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_UINT_INSTANCE */
 
+netsnmp_feature_child_of(uint_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_UINT_INSTANCE
 int
 netsnmp_register_uint_instance(const char *name,
-                               oid * reg_oid, size_t reg_oid_len,
+                               const oid * reg_oid, size_t reg_oid_len,
                                unsigned int *it, Netsnmp_Node_Handler * subhandler)
 {
-    netsnmp_handler_registration *myreg;
-
-    myreg = get_reg(name, "uint_handler", reg_oid, reg_oid_len, it,
-                    HANDLER_CAN_RWRITE, netsnmp_instance_uint_handler,
-                    subhandler, NULL);
-    return netsnmp_register_instance(myreg);
+    return netsnmp_register_watched_instance2(
+               netsnmp_create_handler_registration(
+                   name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RWRITE),
+               netsnmp_create_watcher_info(
+                   (void *)it, sizeof(unsigned int),
+                   ASN_UNSIGNED, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UINT_INSTANCE */
 
+netsnmp_feature_child_of(read_only_int_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_INT_INSTANCE
 int
 netsnmp_register_read_only_int_instance(const char *name,
-                                oid * reg_oid, size_t reg_oid_len,
+                                const oid * reg_oid, size_t reg_oid_len,
                                 int *it, Netsnmp_Node_Handler * subhandler)
 {
-    netsnmp_handler_registration *myreg;
-
-    myreg = get_reg(name, "int_handler", reg_oid, reg_oid_len, it,
-                    HANDLER_CAN_RONLY, netsnmp_instance_int_handler,
-                    subhandler, NULL);
-    return netsnmp_register_read_only_instance(myreg);
+    return netsnmp_register_watched_instance2(
+               netsnmp_create_handler_registration(
+                   name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY),
+               netsnmp_create_watcher_info(
+                   (void *)it, sizeof(int), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_INT_INSTANCE */
 
   /*
    * Compatibility with earlier (inconsistently named) routine
    */
+netsnmp_feature_child_of(register_read_only_int_instance,netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_INT_INSTANCE
 int
 register_read_only_int_instance(const char *name,
-                                oid * reg_oid, size_t reg_oid_len,
+                                const oid * reg_oid, size_t reg_oid_len,
                                 int *it, Netsnmp_Node_Handler * subhandler)
 {
   return netsnmp_register_read_only_int_instance(name,
                                 reg_oid, reg_oid_len,
                                 it, subhandler);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_INT_INSTANCE */
 
 /*
  * Context registrations
  */
 
+netsnmp_feature_child_of(register_read_only_ulong_instance_context,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_ULONG_INSTANCE_CONTEXT
 int
 netsnmp_register_read_only_ulong_instance_context(const char *name,
-                                                  oid * reg_oid,
+                                                  const oid * reg_oid,
                                                   size_t reg_oid_len,
                                                   u_long * it,
                                                   Netsnmp_Node_Handler *
                                                   subhandler,
                                                   const char *contextName)
 {
-    netsnmp_handler_registration *myreg;
-
-    myreg = get_reg(name, "ulong_handler", reg_oid, reg_oid_len, it,
-                    HANDLER_CAN_RONLY, netsnmp_instance_ulong_handler,
-                    subhandler, contextName);
-    return netsnmp_register_read_only_instance(myreg);
+    netsnmp_handler_registration *myreg =
+      netsnmp_create_handler_registration(
+          name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY);
+    if (myreg && contextName)
+      myreg->contextName = strdup(contextName);
+    return netsnmp_register_watched_instance2(
+        myreg, netsnmp_create_watcher_info(
+            (void *)it, sizeof(u_long), ASN_UNSIGNED, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_ULONG_INSTANCE_CONTEXT */
 
+netsnmp_feature_child_of(register_ulong_instance_context,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_ULONG_INSTANCE_CONTEXT
 int
 netsnmp_register_ulong_instance_context(const char *name,
-                                        oid * reg_oid, size_t reg_oid_len,
+                                        const oid * reg_oid, size_t reg_oid_len,
                                         u_long * it,
                                         Netsnmp_Node_Handler * subhandler,
                                         const char *contextName)
 {
-    netsnmp_handler_registration *myreg;
-
-    myreg = get_reg(name, "ulong_handler", reg_oid, reg_oid_len, it,
-                    HANDLER_CAN_RWRITE, netsnmp_instance_ulong_handler,
-                    subhandler, contextName);
-    return netsnmp_register_instance(myreg);
+    netsnmp_handler_registration *myreg =
+      netsnmp_create_handler_registration(
+          name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RWRITE);
+    if (myreg && contextName)
+      myreg->contextName = strdup(contextName);
+    return netsnmp_register_watched_instance2(
+        myreg, netsnmp_create_watcher_info(
+            (void *)it, sizeof(u_long), ASN_UNSIGNED, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_ULONG_INSTANCE_CONTEXT */
 
+netsnmp_feature_child_of(register_read_only_counter32_instance_context,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_COUNTER32_INSTANCE_CONTEXT
 int
 netsnmp_register_read_only_counter32_instance_context(const char *name,
-                                                      oid * reg_oid,
+                                                      const oid * reg_oid,
                                                       size_t reg_oid_len,
                                                       u_long * it,
                                                       Netsnmp_Node_Handler *
                                                       subhandler,
                                                       const char *contextName)
 {
-    netsnmp_handler_registration *myreg;
-
-    myreg = get_reg(name, "counter32_handler", reg_oid, reg_oid_len, it,
-                    HANDLER_CAN_RONLY, netsnmp_instance_counter32_handler,
-                    subhandler, contextName);
-    return netsnmp_register_read_only_instance(myreg);
+    netsnmp_handler_registration *myreg =
+      netsnmp_create_handler_registration(
+          name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY);
+    if (myreg && contextName)
+      myreg->contextName = strdup(contextName);
+    return netsnmp_register_watched_instance2(
+        myreg, netsnmp_create_watcher_info(
+            (void *)it, sizeof(u_long), ASN_COUNTER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_COUNTER32_INSTANCE_CONTEXT */
 
+netsnmp_feature_child_of(register_read_only_long_instance_context,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_LONG_INSTANCE_CONTEXT
 int
 netsnmp_register_read_only_long_instance_context(const char *name,
-                                                 oid * reg_oid,
+                                                 const oid * reg_oid,
                                                  size_t reg_oid_len,
                                                  long *it,
                                                  Netsnmp_Node_Handler
                                                  *subhandler,
                                                  const char *contextName)
 {
-    netsnmp_handler_registration *myreg;
-
-    myreg = get_reg(name, "long_handler", reg_oid, reg_oid_len, it,
-                    HANDLER_CAN_RONLY, netsnmp_instance_long_handler,
-                    subhandler, contextName);
-    return netsnmp_register_read_only_instance(myreg);
+    netsnmp_handler_registration *myreg =
+      netsnmp_create_handler_registration(
+          name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY);
+    if (myreg && contextName)
+      myreg->contextName = strdup(contextName);
+    return netsnmp_register_watched_instance2(
+        myreg, netsnmp_create_watcher_info(
+            (void *)it, sizeof(long), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_LONG_INSTANCE_CONTEXT */
 
+netsnmp_feature_child_of(register_long_instance_context,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_LONG_INSTANCE_CONTEXT
 int
 netsnmp_register_long_instance_context(const char *name,
-                                       oid * reg_oid, size_t reg_oid_len,
+                                       const oid * reg_oid, size_t reg_oid_len,
                                        long *it,
                                        Netsnmp_Node_Handler * subhandler,
                                        const char *contextName)
 {
-    netsnmp_handler_registration *myreg;
-
-    myreg = get_reg(name, "long_handler", reg_oid, reg_oid_len, it,
-                    HANDLER_CAN_RWRITE, netsnmp_instance_long_handler,
-                    subhandler, contextName);
-    return netsnmp_register_instance(myreg);
+    netsnmp_handler_registration *myreg =
+      netsnmp_create_handler_registration(
+          name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RWRITE);
+    if (myreg && contextName)
+      myreg->contextName = strdup(contextName);
+    return netsnmp_register_watched_instance2(
+        myreg, netsnmp_create_watcher_info(
+            (void *)it, sizeof(long), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_LONG_INSTANCE_CONTEXT */
 
+netsnmp_feature_child_of(register_int_instance_context,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_INT_INSTANCE_CONTEXT
 int
 netsnmp_register_int_instance_context(const char *name,
-                                      oid * reg_oid,
+                                      const oid * reg_oid,
                                       size_t reg_oid_len,
                                       int *it,
                                       Netsnmp_Node_Handler * subhandler,
                                       const char *contextName)
 {
-    netsnmp_handler_registration *myreg;
-
-    myreg = get_reg(name, "int_handler", reg_oid, reg_oid_len, it,
-                    HANDLER_CAN_RWRITE, netsnmp_instance_int_handler,
-                    subhandler, contextName);
-    return netsnmp_register_instance(myreg);
+    netsnmp_handler_registration *myreg =
+      netsnmp_create_handler_registration(
+          name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RWRITE);
+    if (myreg && contextName)
+      myreg->contextName = strdup(contextName);
+    return netsnmp_register_watched_instance2(
+        myreg, netsnmp_create_watcher_info(
+            (void *)it, sizeof(int), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_INT_INSTANCE_CONTEXT */
 
+netsnmp_feature_child_of(register_read_only_int_instance_context,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_INT_INSTANCE_CONTEXT
 int
 netsnmp_register_read_only_int_instance_context(const char *name,
-                                                oid * reg_oid,
+                                                const oid * reg_oid,
                                                 size_t reg_oid_len,
                                                 int *it,
                                                 Netsnmp_Node_Handler * subhandler,
                                                 const char *contextName)
 {
-    netsnmp_handler_registration *myreg;
-
-    myreg = get_reg(name, "int_handler", reg_oid, reg_oid_len, it,
-                    HANDLER_CAN_RONLY, netsnmp_instance_int_handler,
-                    subhandler, contextName);
-    return netsnmp_register_read_only_instance(myreg);
+    netsnmp_handler_registration *myreg =
+      netsnmp_create_handler_registration(
+          name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RONLY);
+    if (myreg && contextName)
+      myreg->contextName = strdup(contextName);
+    return netsnmp_register_watched_instance2(
+        myreg, netsnmp_create_watcher_info(
+            (void *)it, sizeof(int), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_INT_INSTANCE_CONTEXT */
 
 /*
  * Compatibility with earlier (inconsistently named) routine
  */
+netsnmp_feature_child_of(read_only_int_instance_context,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_INT_INSTANCE_CONTEXT
 int
 register_read_only_int_instance_context(const char *name,
-                                        oid * reg_oid, size_t reg_oid_len,
+                                        const oid * reg_oid, size_t reg_oid_len,
                                         int *it,
                                         Netsnmp_Node_Handler * subhandler,
                                         const char *contextName)
@@ -398,7 +490,10 @@
                                                            it, subhandler,
                                                            contextName);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_INT_INSTANCE_CONTEXT */
 
+netsnmp_feature_child_of(register_num_file_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_NUM_FILE_INSTANCE
 int
 netsnmp_register_num_file_instance(const char *name,
                                    const oid * reg_oid, size_t reg_oid_len,
@@ -423,11 +518,12 @@
         return MIB_REGISTRATION_FAILED;
     }
 
+    nfi->refcnt = 1;
     myreg = get_reg(name, "file_num_handler", reg_oid, reg_oid_len, nfi,
                     mode, netsnmp_instance_num_file_handler,
                     subhandler, contextName);
     if (NULL == myreg) {
-        free(nfi); /* SNMP_FREE overkill on local var */
+        netsnmp_num_file_instance_deref(nfi);
         return MIB_REGISTRATION_FAILED;
     }
 
@@ -438,7 +534,10 @@
 
     return netsnmp_register_instance(myreg);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_NUM_FILE_INSTANCE */
 
+netsnmp_feature_child_of(register_int_instance,instance)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_INT_INSTANCE
 /**
  * This function registers an int helper handler to a specified OID.
  *
@@ -459,284 +558,25 @@
  */
 int
 netsnmp_register_int_instance(const char *name,
-                              oid * reg_oid, size_t reg_oid_len,
+                              const oid * reg_oid, size_t reg_oid_len,
                               int *it, Netsnmp_Node_Handler * subhandler)
 {
-    netsnmp_handler_registration *myreg;
-
-    myreg = get_reg(name, "int_handler", reg_oid, reg_oid_len, it,
-                    HANDLER_CAN_RWRITE, netsnmp_instance_int_handler,
-                    subhandler, NULL);
-    return netsnmp_register_instance(myreg);
+    return netsnmp_register_watched_instance2(
+               netsnmp_create_handler_registration(
+                   name, subhandler, reg_oid, reg_oid_len, HANDLER_CAN_RWRITE),
+               netsnmp_create_watcher_info(
+                   (void *)it, sizeof(int), ASN_INTEGER, WATCHER_FIXED_SIZE));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_INT_INSTANCE */
 
-int
-netsnmp_instance_ulong_handler(netsnmp_mib_handler *handler,
-                               netsnmp_handler_registration *reginfo,
-                               netsnmp_agent_request_info *reqinfo,
-                               netsnmp_request_info *requests)
+#ifdef HAVE_DMALLOC_H
+static void free_wrapper(void * p)
 {
-
-    u_long         *it = (u_long *) handler->myvoid;
-    u_long         *it_save;
-
-    DEBUGMSGTL(("netsnmp_instance_ulong_handler", "Got request:  %d\n",
-                reqinfo->mode));
-
-    switch (reqinfo->mode) {
-        /*
-         * data requests 
-         */
-    case MODE_GET:
-        snmp_set_var_typed_value(requests->requestvb, ASN_UNSIGNED,
-                                 (u_char *) it, sizeof(*it));
-        break;
-
-        /*
-         * SET requests.  Should only get here if registered RWRITE 
-         */
-    case MODE_SET_RESERVE1:
-        if (requests->requestvb->type != ASN_UNSIGNED)
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_WRONGTYPE);
-        break;
-
-    case MODE_SET_RESERVE2:
-        /*
-         * store old info for undo later 
-         */
-        it_save = netsnmp_memdup(it, sizeof(u_long));
-        if (it_save == NULL) {
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_RESOURCEUNAVAILABLE);
-            return SNMP_ERR_NOERROR;
-        }
-        netsnmp_request_add_list_data(requests,
-                                      netsnmp_create_data_list
-                                      (INSTANCE_HANDLER_NAME, it_save,
-                                       free));
-        break;
-
-    case MODE_SET_ACTION:
-        /*
-         * update current 
-         */
-        DEBUGMSGTL(("testhandler", "updated u_long %lu -> %lu\n", *it,
-                    *(requests->requestvb->val.integer)));
-        *it = *(requests->requestvb->val.integer);
-        break;
-
-    case MODE_SET_UNDO:
-        *it =
-            *((u_long *) netsnmp_request_get_list_data(requests,
-                                                       INSTANCE_HANDLER_NAME));
-        break;
-
-    case MODE_SET_COMMIT:
-    case MODE_SET_FREE:
-        /*
-         * nothing to do 
-         */
-        break;
-    }
-
-    if (handler->next && handler->next->access_method)
-        return netsnmp_call_next_handler(handler, reginfo, reqinfo,
-                                         requests);
-
-    return SNMP_ERR_NOERROR;
+    free(p);
 }
-
-int
-netsnmp_instance_counter32_handler(netsnmp_mib_handler *handler,
-                                   netsnmp_handler_registration *reginfo,
-                                   netsnmp_agent_request_info *reqinfo,
-                                   netsnmp_request_info *requests)
-{
-
-    u_long         *it = (u_long *) handler->myvoid;
-
-    DEBUGMSGTL(("netsnmp_instance_counter32_handler",
-                "Got request:  %d\n", reqinfo->mode));
-
-    switch (reqinfo->mode) {
-        /*
-         * data requests 
-         */
-    case MODE_GET:
-        snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER,
-                                 (u_char *) it, sizeof(*it));
-        break;
-
-        /*
-         * SET requests.  Should only get here if registered RWRITE 
-         */
-    default:
-        snmp_log(LOG_ERR,
-                 "netsnmp_instance_counter32_handler: illegal mode\n");
-        netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_GENERR);
-        return SNMP_ERR_NOERROR;
-    }
-    if (handler->next && handler->next->access_method)
-        return netsnmp_call_next_handler(handler, reginfo, reqinfo,
-                                         requests);
-    return SNMP_ERR_NOERROR;
-}
-
-int
-netsnmp_instance_long_handler(netsnmp_mib_handler *handler,
-                              netsnmp_handler_registration *reginfo,
-                              netsnmp_agent_request_info *reqinfo,
-                              netsnmp_request_info *requests)
-{
-
-    long           *it = (long *) handler->myvoid;
-    long           *it_save;
-
-    DEBUGMSGTL(("netsnmp_instance_long_handler", "Got request:  %d\n",
-                reqinfo->mode));
-
-    switch (reqinfo->mode) {
-        /*
-         * data requests 
-         */
-    case MODE_GET:
-        snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,
-                                 (u_char *) it, sizeof(*it));
-        break;
-
-        /*
-         * SET requests.  Should only get here if registered RWRITE 
-         */
-    case MODE_SET_RESERVE1:
-        if (requests->requestvb->type != ASN_INTEGER)
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_WRONGTYPE);
-        break;
-
-    case MODE_SET_RESERVE2:
-        /*
-         * store old info for undo later 
-         */
-        it_save = netsnmp_memdup(it, sizeof(long));
-        if (it_save == NULL) {
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_RESOURCEUNAVAILABLE);
-            return SNMP_ERR_NOERROR;
-        }
-        netsnmp_request_add_list_data(requests,
-                                      netsnmp_create_data_list
-                                      (INSTANCE_HANDLER_NAME, it_save,
-                                       free));
-        break;
-
-    case MODE_SET_ACTION:
-        /*
-         * update current 
-         */
-        DEBUGMSGTL(("testhandler", "updated u_long %lu -> %lu\n", *it,
-                    *(requests->requestvb->val.integer)));
-        *it = *(requests->requestvb->val.integer);
-        break;
-
-    case MODE_SET_UNDO:
-        *it =
-            *((u_long *) netsnmp_request_get_list_data(requests,
-                                                       INSTANCE_HANDLER_NAME));
-        break;
-
-    case MODE_SET_COMMIT:
-    case MODE_SET_FREE:
-        /*
-         * nothing to do 
-         */
-        break;
-    }
-    if (handler->next && handler->next->access_method)
-        return netsnmp_call_next_handler(handler, reginfo, reqinfo,
-                                         requests);
-    return SNMP_ERR_NOERROR;
-}
-
-int
-netsnmp_instance_int_handler(netsnmp_mib_handler *handler,
-                             netsnmp_handler_registration *reginfo,
-                             netsnmp_agent_request_info *reqinfo,
-                             netsnmp_request_info *requests)
-{
-
-    int *it = (int *) handler->myvoid;
-    int *it_save;
-    long tmp_it;
-    
-    DEBUGMSGTL(("netsnmp_instance_int_handler", "Got request:  %d\n",
-                reqinfo->mode));
-
-    switch (reqinfo->mode) {
-        /*
-         * data requests 
-         */
-    case MODE_GET:
-	/*
-	 * Use a long here, otherwise on 64 bit use of an int would fail
-	 */
-	tmp_it = *it;
-        snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,
-                                 (u_char *) &tmp_it, sizeof(tmp_it));
-        break;
-
-        /*
-         * SET requests.  Should only get here if registered RWRITE 
-         */
-    case MODE_SET_RESERVE1:
-        if (requests->requestvb->type != ASN_INTEGER)
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_WRONGTYPE);
-        break;
-
-    case MODE_SET_RESERVE2:
-        /*
-         * store old info for undo later 
-         */
-        it_save = netsnmp_memdup(it, sizeof(int));
-        if (it_save == NULL) {
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_RESOURCEUNAVAILABLE);
-            return SNMP_ERR_NOERROR;
-        }
-        netsnmp_request_add_list_data(requests,
-                                      netsnmp_create_data_list
-                                      (INSTANCE_HANDLER_NAME, it_save,
-                                       free));
-        break;
-
-    case MODE_SET_ACTION:
-        /*
-         * update current 
-         */
-        DEBUGMSGTL(("testhandler", "updated int %d -> %ld\n", *it,
-                    *(requests->requestvb->val.integer)));
-        *it = (int) *(requests->requestvb->val.integer);
-        break;
-
-    case MODE_SET_UNDO:
-        *it =
-            *((u_int *) netsnmp_request_get_list_data(requests,
-                                                      INSTANCE_HANDLER_NAME));
-        break;
-
-    case MODE_SET_COMMIT:
-    case MODE_SET_FREE:
-        /*
-         * nothing to do 
-         */
-        break;
-    }
-    if (handler->next && handler->next->access_method)
-        return netsnmp_call_next_handler(handler, reginfo, reqinfo,
-                                         requests);
-    return SNMP_ERR_NOERROR;
-}
+#else
+#define free_wrapper free
+#endif
 
 int
 netsnmp_instance_num_file_handler(netsnmp_mib_handler *handler,
@@ -745,7 +585,10 @@
                                   netsnmp_request_info *requests)
 {
     netsnmp_num_file_instance *nfi;
-    u_long it, *it_save;
+    u_long it;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+    u_long *it_save;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     int rc;
 
     netsnmp_assert(NULL != handler);
@@ -787,6 +630,7 @@
         /*
          * SET requests.  Should only get here if registered RWRITE 
          */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         netsnmp_assert(NULL == nfi->filep);
         if (requests->requestvb->type != nfi->type)
@@ -821,7 +665,7 @@
         netsnmp_request_add_list_data(requests,
                                       netsnmp_create_data_list
                                       (INSTANCE_HANDLER_NAME, it_save,
-                                       free));
+                                       &free_wrapper));
         break;
 
     case MODE_SET_ACTION:
@@ -859,6 +703,12 @@
             nfi->filep = NULL;
         }
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+    default:
+        snmp_log(LOG_ERR,
+                 "netsnmp_instance_num_file_handler: illegal mode\n");
+        netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_GENERR);
+        return SNMP_ERR_NOERROR;
     }
 
     if (handler->next && handler->next->access_method)
@@ -868,86 +718,6 @@
 }
 
 int
-netsnmp_instance_uint_handler(netsnmp_mib_handler *handler,
-                              netsnmp_handler_registration *reginfo,
-                              netsnmp_agent_request_info *reqinfo,
-                              netsnmp_request_info *requests)
-{
-
-    unsigned int *it = (unsigned int *) handler->myvoid;
-    unsigned int *it_save;
-    unsigned long tmp_it;
-    
-    DEBUGMSGTL(("netsnmp_instance_uint_handler", "Got request:  %d\n",
-                reqinfo->mode));
-
-    switch (reqinfo->mode) {
-        /*
-         * data requests 
-         */
-    case MODE_GET:
-	/*
-	 * Use a long here, otherwise on 64 bit use of an int would fail
-	 */
-	tmp_it = *it;
-        snmp_set_var_typed_value(requests->requestvb, ASN_UNSIGNED,
-                                 (u_char *) &tmp_it, sizeof(unsigned long));
-        break;
-
-        /*
-         * SET requests.  Should only get here if registered RWRITE 
-         */
-    case MODE_SET_RESERVE1:
-        if (requests->requestvb->type != ASN_UNSIGNED)
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_WRONGTYPE);
-        break;
-
-    case MODE_SET_RESERVE2:
-        /*
-         * store old info for undo later 
-         */
-        it_save = netsnmp_memdup(it, sizeof(u_int));
-        if (it_save == NULL) {
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_RESOURCEUNAVAILABLE);
-            return SNMP_ERR_NOERROR;
-        }
-        netsnmp_request_add_list_data(requests,
-                                      netsnmp_create_data_list
-                                      (INSTANCE_HANDLER_NAME, it_save,
-                                       free));
-        break;
-
-    case MODE_SET_ACTION:
-        /*
-         * update current 
-         */
-        DEBUGMSGTL(("testhandler", "updated uint %d -> %ld\n", *it,
-                    *(requests->requestvb->val.integer)));
-        *it = (unsigned int) *(requests->requestvb->val.integer);
-        break;
-
-    case MODE_SET_UNDO:
-        *it =
-            *((u_int *) netsnmp_request_get_list_data(requests,
-                                                      INSTANCE_HANDLER_NAME));
-        break;
-
-    case MODE_SET_COMMIT:
-    case MODE_SET_FREE:
-        /*
-         * nothing to do 
-         */
-        break;
-    }
-    if (handler->next && handler->next->access_method)
-        return netsnmp_call_next_handler(handler, reginfo, reqinfo,
-                                         requests);
-    return SNMP_ERR_NOERROR;
-}
-
-int
 netsnmp_instance_helper_handler(netsnmp_mib_handler *handler,
                                 netsnmp_handler_registration *reginfo,
                                 netsnmp_agent_request_info *reqinfo,
@@ -979,6 +749,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
@@ -994,6 +765,7 @@
                                              requests);
         }
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     case MODE_GETNEXT:
         if (cmp < 0 || (cmp == 0 && requests->inclusive)) {
@@ -1019,6 +791,11 @@
             return SNMP_ERR_NOERROR;
         }
         break;
+    default:
+        snmp_log(LOG_ERR,
+                 "netsnmp_instance_helper_handler: illegal mode\n");
+        netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_GENERR);
+        return SNMP_ERR_NOERROR;
     }
     /*
      * got here only if illegal mode found 
diff --git a/agent/helpers/mode_end_call.c b/agent/helpers/mode_end_call.c
index 912f58c..0bfcc69 100644
--- a/agent/helpers/mode_end_call.c
+++ b/agent/helpers/mode_end_call.c
@@ -9,12 +9,17 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 #include <net-snmp/agent/mode_end_call.h>
 
+netsnmp_feature_provide(mode_end_call)
+netsnmp_feature_child_of(mode_end_call, mib_helpers)
+
+#ifndef NETSNMP_FEATURE_REMOVE_MODE_END_CALL
 /** @defgroup mode_end_call mode_end_call
  *  At the end of a series of requests, call another handler hook.
  *  Handlers that want to loop through a series of requests and then
@@ -101,7 +106,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,
@@ -113,5 +118,10 @@
     
     return ret2;
 }
+#else
+netsnmp_feature_unused(mode_end_call);
+#endif /* NETSNMP_FEATURE_REMOVE_MODE_END_CALL */
+
+
 /**  @} */
 
diff --git a/agent/helpers/multiplexer.c b/agent/helpers/multiplexer.c
index e543f57..2a7a664 100644
--- a/agent/helpers/multiplexer.c
+++ b/agent/helpers/multiplexer.c
@@ -84,6 +84,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
@@ -100,6 +101,7 @@
         /*
          * XXX: process SETs specially, and possibly others 
          */
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     default:
         snmp_log(LOG_ERR, "unsupported mode for multiplexer: %d\n",
                  reqinfo->mode);
diff --git a/agent/helpers/null.c b/agent/helpers/null.c
index d110eb8..97dfc92 100644
--- a/agent/helpers/null.c
+++ b/agent/helpers/null.c
@@ -1,16 +1,16 @@
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <net-snmp/agent/null.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/null.h>
-
 int
 netsnmp_register_null(oid * loc, size_t loc_len)
 {
@@ -23,14 +23,16 @@
 {
     netsnmp_handler_registration *reginfo;
     reginfo = SNMP_MALLOC_TYPEDEF(netsnmp_handler_registration);
-    reginfo->handlerName = strdup("");
-    reginfo->rootoid = loc;
-    reginfo->rootoid_len = loc_len;
-    reginfo->handler =
-        netsnmp_create_handler("null", netsnmp_null_handler);
-    if (contextName)
-        reginfo->contextName = strdup(contextName);
-    reginfo->modes = HANDLER_CAN_DEFAULT;
+    if (reginfo != NULL) {
+        reginfo->handlerName = strdup("");
+        reginfo->rootoid = loc;
+        reginfo->rootoid_len = loc_len;
+        reginfo->handler =
+            netsnmp_create_handler("null", netsnmp_null_handler);
+        if (contextName)
+            reginfo->contextName = strdup(contextName);
+        reginfo->modes = HANDLER_CAN_DEFAULT | HANDLER_CAN_GETBULK;
+    }
     return netsnmp_register_handler(reginfo);
 }
 
diff --git a/agent/helpers/old_api.c b/agent/helpers/old_api.c
index 6e36776..d2b99d9 100644
--- a/agent/helpers/old_api.c
+++ b/agent/helpers/old_api.c
@@ -1,19 +1,31 @@
 #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/old_api.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/old_api.h>
 #include <net-snmp/agent/agent_callbacks.h>
 
+#include <stddef.h>
+
 #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! 
  */
@@ -39,6 +51,19 @@
     return netsnmp_create_handler("old_api", netsnmp_old_api_helper);
 }
 
+struct variable *
+netsnmp_duplicate_variable(const struct variable *var)
+{
+    struct variable *var2 = NULL;
+    
+    if (var) {
+        const int varsize = offsetof(struct variable, name) + var->namelen * sizeof(var->name[0]);
+        var2 = malloc(varsize);
+        if (var2)
+            memcpy(var2, var, varsize);
+    }
+    return var2;
+}
 
 /** Registers an old API set into the mib tree.  Functionally this
  * mimics the old register_mib_context() function (and in fact the new
@@ -46,10 +71,10 @@
  */
 int
 netsnmp_register_old_api(const char *moduleName,
-                         struct variable *var,
+                         const struct variable *var,
                          size_t varsize,
                          size_t numvars,
-                         oid * mibloc,
+                         const oid * mibloc,
                          size_t mibloclen,
                          int priority,
                          int range_subid,
@@ -67,21 +92,31 @@
         struct variable *vp;
         netsnmp_handler_registration *reginfo =
             SNMP_MALLOC_TYPEDEF(netsnmp_handler_registration);
+        if (reginfo == NULL)
+            return SNMP_ERR_GENERR;
 
-        vp = netsnmp_memdup((const struct variable *)
-                            ((const char *) var + varsize * i),
-                            varsize);
+	vp = netsnmp_duplicate_variable((const struct variable *)
+					((const char *) var + varsize * i));
 
         reginfo->handler = get_old_api_handler();
         reginfo->handlerName = strdup(moduleName);
         reginfo->rootoid_len = (mibloclen + vp->namelen);
         reginfo->rootoid =
             (oid *) malloc(reginfo->rootoid_len * sizeof(oid));
+        if (reginfo->rootoid == NULL) {
+            SNMP_FREE(vp);
+            SNMP_FREE(reginfo->handlerName);
+            SNMP_FREE(reginfo);
+            return SNMP_ERR_GENERR;
+        }
 
         memcpy(reginfo->rootoid, mibloc, mibloclen * sizeof(oid));
         memcpy(reginfo->rootoid + mibloclen, vp->name, vp->namelen
                * sizeof(oid));
         reginfo->handler->myvoid = (void *) vp;
+        reginfo->handler->data_clone
+	    = (void *(*)(void *))netsnmp_duplicate_variable;
+        reginfo->handler->data_free = free;
 
         reginfo->priority = priority;
         reginfo->range_subid = range_subid;
@@ -89,14 +124,15 @@
         reginfo->range_ubound = range_ubound;
         reginfo->timeout = timeout;
         reginfo->contextName = (context) ? strdup(context) : NULL;
-        reginfo->modes = HANDLER_CAN_RWRITE;
+        reginfo->modes = vp->acl == NETSNMP_OLDAPI_RONLY ? HANDLER_CAN_RONLY :
+                         HANDLER_CAN_RWRITE;
 
         /*
          * register ourselves in the mib tree 
          */
         if (netsnmp_register_handler(reginfo) != MIB_REGISTERED_OK) {
             /** netsnmp_handler_registration_free(reginfo); already freed */
-            SNMP_FREE(vp);
+            /* SNMP_FREE(vp); already freed */
         }
     }
     return SNMPERR_SUCCESS;
@@ -105,7 +141,7 @@
 /** registers a row within a mib table */
 int
 netsnmp_register_mib_table_row(const char *moduleName,
-                               struct variable *var,
+                               const struct variable *var,
                                size_t varsize,
                                size_t numvars,
                                oid * mibloc,
@@ -119,8 +155,8 @@
     oid             ubound = 0;
 
     for (i = 0; i < numvars; i++) {
-        struct variable *vr =
-            (struct variable *) ((char *) var + (i * varsize));
+        const struct variable *vr =
+            (const struct variable *) ((const char *) var + (i * varsize));
         netsnmp_handler_registration *r;
         if ( var_subid > (int)mibloclen ) {
             break;    /* doesn't make sense */
@@ -161,14 +197,15 @@
                      r->rootoid_len));
         DEBUGMSG(("netsnmp_register_mib_table_row", "(%d)\n",
                      (var_subid - vr->namelen)));
-        r->handler->myvoid = (void *) malloc(varsize);
+        r->handler->myvoid = netsnmp_duplicate_variable(vr);
+        r->handler->data_clone = (void *(*)(void *))netsnmp_duplicate_variable;
+        r->handler->data_free = free;
 
         if (r->handler->myvoid == NULL) {
             netsnmp_handler_registration_free(r);
             rc = MIB_REGISTRATION_FAILED;
             break;
         }
-        memcpy((char *) r->handler->myvoid, vr, varsize);
 
         r->contextName = (context) ? strdup(context) : NULL;
 
@@ -238,13 +275,13 @@
     int             status;
 
     struct variable *vp;
-    WriteMethod    *write_method = NULL;
-    size_t          len;
-    u_char         *access = NULL;
     netsnmp_old_api_cache *cacheptr;
     netsnmp_agent_session *oldasp = NULL;
-    oid             tmp_name[MAX_OID_LEN];
+    u_char         *access = NULL;
+    WriteMethod    *write_method = NULL;
+    size_t          len;
     size_t          tmp_len;
+    oid             tmp_name[MAX_OID_LEN];
 
     vp = (struct variable *) handler->myvoid;
 
@@ -275,7 +312,9 @@
         switch (reqinfo->mode) {
         case MODE_GET:
         case MODE_GETNEXT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case MODE_SET_RESERVE1:
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
             /*
              * Actually call the old mib-module function 
              */
@@ -306,7 +345,9 @@
                 /*
                  * result returned 
                  */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
                 if (reqinfo->mode != MODE_SET_RESERVE1)
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
                     snmp_set_var_typed_value(requests->requestvb,
                                              cvp->type, access, len);
             } else {
@@ -331,7 +372,9 @@
             /*
              * AAA: fall through for everything that is a set (see BBB) 
              */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             if (reqinfo->mode != MODE_SET_RESERVE1)
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
                 break;
 
             cacheptr = SNMP_MALLOC_TYPEDEF(netsnmp_old_api_cache);
@@ -343,7 +386,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) 
              */
@@ -403,7 +447,7 @@
  */
 static netsnmp_agent_session *current_agent_session = NULL;
 netsnmp_agent_session *
-netsnmp_get_current_agent_session()
+netsnmp_get_current_agent_session(void)
 {
     return current_agent_session;
 }
diff --git a/agent/helpers/read_only.c b/agent/helpers/read_only.c
index 512f94b..0b06d4f 100644
--- a/agent/helpers/read_only.c
+++ b/agent/helpers/read_only.c
@@ -1,11 +1,5 @@
 #include <net-snmp/net-snmp-config.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>
 
@@ -50,6 +44,7 @@
 
     switch (reqinfo->mode) {
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
@@ -58,19 +53,17 @@
     case MODE_SET_UNDO:
         netsnmp_request_set_error_all(requests, SNMP_ERR_NOTWRITABLE);
         return SNMP_ERR_NOTWRITABLE;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     case MODE_GET:
     case MODE_GETNEXT:
     case MODE_GETBULK:
         /* next handler called automatically - 'AUTO_NEXT' */
         return SNMP_ERR_NOERROR;
-
-    default:
-        netsnmp_request_set_error_all(requests, SNMP_ERR_GENERR);
-        return SNMP_ERR_GENERR;
     }
+
     netsnmp_request_set_error_all(requests, SNMP_ERR_GENERR);
-    return SNMP_ERR_GENERR;     /* should never get here */
+    return SNMP_ERR_GENERR;
 }
 
 /** initializes the read_only helper which then registers a read_only
diff --git a/agent/helpers/row_merge.c b/agent/helpers/row_merge.c
index 6b64430..4a8e476 100644
--- a/agent/helpers/row_merge.c
+++ b/agent/helpers/row_merge.c
@@ -1,4 +1,10 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <net-snmp/agent/row_merge.h>
 
 #if HAVE_STRING_H
 #include <string.h>
@@ -6,11 +12,12 @@
 #include <strings.h>
 #endif
 
-#include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/agent/net-snmp-agent-includes.h>
+netsnmp_feature_provide(row_merge)
+netsnmp_feature_child_of(row_merge, row_merge_all)
+netsnmp_feature_child_of(row_merge_all, mib_helpers)
 
-#include <net-snmp/agent/row_merge.h>
 
+#ifndef NETSNMP_FEATURE_REMOVE_ROW_MERGE
 /** @defgroup row_merge row_merge
  *  Calls sub handlers with request for one row at a time.
  *  @ingroup utilities
@@ -38,6 +45,8 @@
 
 /** functionally the same as calling netsnmp_register_handler() but also
  * injects a row_merge handler at the same time for you. */
+netsnmp_feature_child_of(register_row_merge, row_merge_all)
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_ROW_MERGE
 int
 netsnmp_register_row_merge(netsnmp_handler_registration *reginfo)
 {
@@ -45,6 +54,7 @@
 		    netsnmp_get_row_merge_handler(reginfo->rootoid_len+1));
     return netsnmp_register_handler(reginfo);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_ROW_MERGE */
 
 static void
 _rm_status_free(void *mem)
@@ -76,14 +86,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) {
@@ -362,5 +372,10 @@
     netsnmp_register_handler_by_name("row_merge",
                                      netsnmp_get_row_merge_handler(-1));
 }
+#else /* NETSNMP_FEATURE_REMOVE_ROW_MERGE */
+netsnmp_feature_unused(row_merge);
+#endif /* NETSNMP_FEATURE_REMOVE_ROW_MERGE */
+
+
 /**  @} */
 
diff --git a/agent/helpers/scalar.c b/agent/helpers/scalar.c
index 42c66b4..7a4c9e0 100644
--- a/agent/helpers/scalar.c
+++ b/agent/helpers/scalar.c
@@ -10,6 +10,11 @@
  */
 #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/scalar.h>
+
 #include <stdlib.h>
 #if HAVE_STRING_H
 #include <string.h>
@@ -17,10 +22,6 @@
 #include <strings.h>
 #endif
 
-#include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/agent/net-snmp-agent-includes.h>
-
-#include <net-snmp/agent/scalar.h>
 #include <net-snmp/agent/instance.h>
 #include <net-snmp/agent/serialize.h>
 #include <net-snmp/agent/read_only.h>
@@ -77,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());
@@ -112,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());
@@ -161,6 +162,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
@@ -179,6 +181,7 @@
             return ret;
         }
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     case MODE_GETNEXT:
         reginfo->rootoid[reginfo->rootoid_len++] = 0;
diff --git a/agent/helpers/scalar_group.c b/agent/helpers/scalar_group.c
index a5d119e..6b7f098 100644
--- a/agent/helpers/scalar_group.c
+++ b/agent/helpers/scalar_group.c
@@ -1,5 +1,10 @@
 #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/scalar_group.h>
+
 #include <stdlib.h>
 #if HAVE_STRING_H
 #include <string.h>
@@ -7,13 +12,19 @@
 #include <strings.h>
 #endif
 
-#include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/agent/net-snmp-agent-includes.h>
-
-#include <net-snmp/agent/scalar_group.h>
-#include <net-snmp/agent/scalar.h>
+#include <net-snmp/agent/instance.h>
 #include <net-snmp/agent/serialize.h>
-#include <net-snmp/agent/read_only.h>
+
+static netsnmp_scalar_group*
+clone_scalar_group(netsnmp_scalar_group* src)
+{
+  netsnmp_scalar_group *t = SNMP_MALLOC_TYPEDEF(netsnmp_scalar_group);
+  if(t != NULL) {
+    t->lbound = src->lbound;
+    t->ubound = src->ubound;
+  }
+  return t;
+}
 
 /** @defgroup scalar_group_group scalar_group
  *  Process groups of scalars.
@@ -38,6 +49,8 @@
 	    sgroup->lbound = first;
 	    sgroup->ubound = last;
             ret->myvoid = (void *)sgroup;
+            ret->data_free = free;
+            ret->data_clone = (void *(*)(void *))clone_scalar_group;
 	}
     }
     return ret;
@@ -48,7 +61,6 @@
                               oid first, oid last)
 {
     netsnmp_inject_handler(reginfo, netsnmp_get_instance_handler());
-    netsnmp_inject_handler(reginfo, netsnmp_get_scalar_handler());
     netsnmp_inject_handler(reginfo, netsnmp_get_scalar_group_handler(first, last));
     return netsnmp_register_serialize(reginfo);
 }
@@ -97,12 +109,14 @@
         ret = SNMP_NOSUCHOBJECT;
         /* Fallthrough */
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
     case MODE_SET_COMMIT:
     case MODE_SET_UNDO:
     case MODE_SET_FREE:
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
         if (cmp != 0 ||
             requests->requestvb->name_length <= reginfo->rootoid_len) {
 	    /*
@@ -128,12 +142,13 @@
                 netsnmp_set_request_error(reqinfo, requests, ret);
                 return SNMP_ERR_NOERROR;
 	    }
-            root_tmp[reginfo->rootoid_len++] = subid;
+            root_tmp[reginfo->rootoid_len] = subid;
+            reginfo->rootoid_len += 2;
             reginfo->rootoid = root_tmp;
             ret = netsnmp_call_next_handler(handler, reginfo, reqinfo,
                                             requests);
             reginfo->rootoid = root_save;
-            reginfo->rootoid_len--;
+            reginfo->rootoid_len -= 2;
             return ret;
         }
         break;
@@ -162,7 +177,8 @@
 	else if (subid > sgroup->ubound)
             return SNMP_ERR_NOERROR;
         
-        root_tmp[reginfo->rootoid_len++] = subid;
+        root_tmp[reginfo->rootoid_len] = subid;
+        reginfo->rootoid_len += 2;
         reginfo->rootoid = root_tmp;
         ret = netsnmp_call_next_handler(handler, reginfo, reqinfo,
                                             requests);
@@ -175,12 +191,12 @@
              requests->requestvb->type == SNMP_NOSUCHOBJECT ||
              requests->requestvb->type == SNMP_NOSUCHINSTANCE)) {
             snmp_set_var_objid(requests->requestvb,
-                               reginfo->rootoid, reginfo->rootoid_len);
-            requests->requestvb->name[reginfo->rootoid_len-1] = ++subid;
+                               reginfo->rootoid, reginfo->rootoid_len - 1);
+            requests->requestvb->name[reginfo->rootoid_len - 2] = ++subid;
             requests->requestvb->type = ASN_PRIV_RETRY;
         }
         reginfo->rootoid = root_save;
-        reginfo->rootoid_len--;
+        reginfo->rootoid_len -= 2;
         return ret;
     }
     /*
diff --git a/agent/helpers/serialize.c b/agent/helpers/serialize.c
index 892f9b3..eec66b4 100644
--- a/agent/helpers/serialize.c
+++ b/agent/helpers/serialize.c
@@ -1,11 +1,5 @@
 #include <net-snmp/net-snmp-config.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>
 
diff --git a/agent/helpers/snmp_get_statistic.c b/agent/helpers/snmp_get_statistic.c
new file mode 100644
index 0000000..efac2ac
--- /dev/null
+++ b/agent/helpers/snmp_get_statistic.c
@@ -0,0 +1,61 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <net-snmp/agent/snmp_get_statistic.h>
+
+netsnmp_feature_provide(helper_statistics)
+netsnmp_feature_child_of(helper_statistics, mib_helpers)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_HELPER_STATISTICS
+/* if we're not needed, then neither is this */
+netsnmp_feature_require(statistics)
+#endif
+
+#ifndef NETSNMP_FEATURE_REMOVE_HELPER_STATISTICS
+static int
+netsnmp_get_statistic_helper_handler(netsnmp_mib_handler *handler,
+                                     netsnmp_handler_registration *reginfo,
+                                     netsnmp_agent_request_info *reqinfo,
+                                     netsnmp_request_info *requests)
+{
+    if (reqinfo->mode == MODE_GET) {
+        const oid idx = requests->requestvb->name[reginfo->rootoid_len - 2] +
+            (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;
+    }
+    return SNMP_ERR_GENERR;
+}
+
+static netsnmp_mib_handler *
+netsnmp_get_statistic_handler(int offset)
+{
+    netsnmp_mib_handler *ret =
+        netsnmp_create_handler("get_statistic",
+                               netsnmp_get_statistic_helper_handler);
+    if (ret) {
+        ret->flags |= MIB_HANDLER_AUTO_NEXT;
+        ret->myvoid = (void*)(uintptr_t)offset;
+    }
+    return ret;
+}
+
+int
+netsnmp_register_statistic_handler(netsnmp_handler_registration *reginfo,
+                                   oid start, int begin, int end)
+{
+    netsnmp_inject_handler(reginfo,
+                           netsnmp_get_statistic_handler(begin - start));
+    return netsnmp_register_scalar_group(reginfo, start, start + (end - begin));
+}
+#else /* !NETSNMP_FEATURE_REMOVE_HELPER_GET_STATISTICS */
+netsnmp_feature_unused(helper_statistics);
+#endif /* !NETSNMP_FEATURE_REMOVE_HELPER_GET_STATISTICS */
diff --git a/agent/helpers/stash_cache.c b/agent/helpers/stash_cache.c
index efb1eb4..5da1796 100644
--- a/agent/helpers/stash_cache.c
+++ b/agent/helpers/stash_cache.c
@@ -1,17 +1,22 @@
 #include <net-snmp/net-snmp-config.h>
 
-#if HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
-#include <net-snmp/agent/stash_cache.h>
+netsnmp_feature_provide(stash_cache)
+netsnmp_feature_child_of(stash_cache, mib_helpers)
+#ifdef NETSNMP_FEATURE_REQUIRE_STASH_CACHE
+netsnmp_feature_require(oid_stash)
+netsnmp_feature_require(oid_stash_iterate)
+netsnmp_feature_require(oid_stash_get_data)
+#endif
+
+#ifndef NETSNMP_FEATURE_REMOVE_STASH_CACHE
 #include <net-snmp/agent/stash_to_next.h>
 
+#include <net-snmp/agent/stash_cache.h>
+
 extern NetsnmpCacheLoad _netsnmp_stash_cache_load;
 extern NetsnmpCacheFree _netsnmp_stash_cache_free;
  
@@ -32,7 +37,8 @@
     netsnmp_stash_cache_info *cinfo;
 
     cinfo = SNMP_MALLOC_TYPEDEF(netsnmp_stash_cache_info);
-    cinfo->cache_length = 30;
+    if (cinfo != NULL)
+        cinfo->cache_length = 30;
     return cinfo;
 }
 
@@ -66,7 +72,7 @@
     }
 
     handler->myvoid = cinfo;
-    handler->data_free = free;
+    netsnmp_cache_handler_owns_cache(handler);
 
     return handler;
 }
@@ -112,7 +118,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);
 }
 
 
@@ -143,7 +149,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);
@@ -155,7 +161,6 @@
                                          cdata->val.string, cdata->val_len);
             }
         }
-        return SNMP_ERR_NOERROR;
         break;
 
     case MODE_GETNEXT:
@@ -166,7 +171,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));
@@ -178,7 +183,6 @@
                 }
             }
         }
-        return SNMP_ERR_NOERROR;
         break;
 
     default:
@@ -186,7 +190,8 @@
         return netsnmp_call_next_handler(handler, reginfo, reqinfo,
                                          requests);
     }
-    return SNMP_ERR_GENERR;     /* should never get here */
+
+    return SNMP_ERR_NOERROR;
 }
 
 /** updates a given cache depending on whether it needs to or not.
@@ -242,3 +247,6 @@
 }
 /**  @} */
 
+#else /* NETSNMP_FEATURE_REMOVE_STASH_CACHE */
+netsnmp_feature_unused(stash_cache);
+#endif /* NETSNMP_FEATURE_REMOVE_STASH_CACHE */
diff --git a/agent/helpers/stash_to_next.c b/agent/helpers/stash_to_next.c
index aabaaa8..d7baffd 100644
--- a/agent/helpers/stash_to_next.c
+++ b/agent/helpers/stash_to_next.c
@@ -1,17 +1,22 @@
 #include <net-snmp/net-snmp-config.h>
 
-#if HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
-#include <net-snmp/agent/stash_cache.h>
+netsnmp_feature_provide(stash_to_next)
+netsnmp_feature_child_of(stash_to_next, mib_helpers)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_STASH_TO_NEXT
+netsnmp_feature_require(oid_stash)
+netsnmp_feature_require(oid_stash_add_data)
+#endif
+
+#ifndef NETSNMP_FEATURE_REMOVE_STASH_TO_NEXT
 #include <net-snmp/agent/stash_to_next.h>
 
+#include <net-snmp/agent/stash_cache.h>
+
 /** @defgroup stash_to_next stash_to_next
  *  Convert GET_STASH requests into GETNEXT requests for the handler.
  *  The purpose of this handler is to convert a GET_STASH auto-cache request
@@ -119,3 +124,6 @@
 }
 /**  @} */
 
+#else  /* ! NETSNMP_FEATURE_REMOVE_STASH_TO_NEXT */
+netsnmp_feature_unused(stash_to_next);
+#endif /* ! NETSNMP_FEATURE_REMOVE_STASH_TO_NEXT */
diff --git a/agent/helpers/table.c b/agent/helpers/table.c
index 32a0803..882e84c 100644
--- a/agent/helpers/table.c
+++ b/agent/helpers/table.c
@@ -12,22 +12,40 @@
  * Use is subject to license terms specified in the COPYING file
  * distributed with the Net-SNMP package.
  */
+/*
+ * 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.
+ */
 
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <net-snmp/agent/table.h>
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(oid_stash)
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 #if HAVE_STRING_H
 #include <string.h>
 #else
 #include <strings.h>
 #endif
 
-
-#include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/agent/net-snmp-agent-includes.h>
-
-#include <net-snmp/agent/table.h>
 #include <net-snmp/library/snmp_assert.h>
 
+netsnmp_feature_child_of(table_all, mib_helpers)
+
+netsnmp_feature_child_of(table_build_result, table_all)
+netsnmp_feature_child_of(table_get_or_create_row_stash, table_all)
+netsnmp_feature_child_of(registration_owns_table_info, table_all)
+netsnmp_feature_child_of(table_sparse, table_all)
+
 static void     table_helper_cleanup(netsnmp_agent_request_info *reqinfo,
                                      netsnmp_request_info *request,
                                      int status);
@@ -99,6 +117,31 @@
     return ret;
 }
 
+/** Configures a handler such that table registration information is freed by
+ *  netsnmp_handler_free(). Should only be called if handler->myvoid points to
+ *  an object of type netsnmp_table_registration_info.
+ */
+void netsnmp_handler_owns_table_info(netsnmp_mib_handler *handler)
+{
+    netsnmp_assert(handler);
+    netsnmp_assert(handler->myvoid);
+    handler->data_clone
+	= (void *(*)(void *)) netsnmp_table_registration_info_clone;
+    handler->data_free
+	= (void (*)(void *)) netsnmp_table_registration_info_free;
+}
+
+/** Configures a handler such that table registration information is freed by
+ *  netsnmp_handler_free(). Should only be called if reg->handler->myvoid
+ *  points to an object of type netsnmp_table_registration_info.
+ */
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTRATION_OWNS_TABLE_INFO
+void netsnmp_registration_owns_table_info(netsnmp_handler_registration *reg)
+{
+    if (reg)
+        netsnmp_handler_owns_table_info(reg->handler);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTRATION_OWNS_TABLE_INFO */
 
 /** creates a table handler given the netsnmp_table_registration_info object,
  *  inserts it into the request chain and then calls
@@ -108,10 +151,21 @@
 netsnmp_register_table(netsnmp_handler_registration *reginfo,
                        netsnmp_table_registration_info *tabreq)
 {
-    netsnmp_inject_handler(reginfo, netsnmp_get_table_handler(tabreq));
+    int rc = netsnmp_inject_handler(reginfo, netsnmp_get_table_handler(tabreq));
+    if (SNMPERR_SUCCESS != rc)
+        return rc;
+
     return netsnmp_register_handler(reginfo);
 }
 
+int
+netsnmp_unregister_table(netsnmp_handler_registration *reginfo)
+{
+    /* Locate "this" reginfo */
+    /* SNMP_FREE(reginfo->myvoid); */
+    return netsnmp_unregister_handler(reginfo);
+}
+
 /** 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
@@ -150,8 +204,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;
@@ -177,8 +231,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"));
@@ -193,15 +248,20 @@
      * in the netsnmp_agent_request_info. 
      */
     if (netsnmp_agent_get_list_data(reqinfo, handler->next->handler_name)) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if (MODE_IS_SET(reqinfo->mode)) {
             return netsnmp_call_next_handler(handler, reginfo, reqinfo,
                                              requests);
         } else {
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 /** XXX-rks: memory leak. add cleanup handler? */
             netsnmp_free_agent_data_sets(reqinfo);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     if ( MODE_IS_SET(reqinfo->mode) &&
          (reqinfo->mode != MODE_SET_RESERVE1)) {
         /*
@@ -211,15 +271,16 @@
          * 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 {
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
         /*
-         * 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.
          */
            
     /*
@@ -252,6 +313,7 @@
             continue;
         }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if (reqinfo->mode == MODE_SET_RESERVE1) {
             DEBUGIF("helper:table:set") {
                 u_char         *buf = NULL;
@@ -260,7 +322,7 @@
                 DEBUGMSGOID(("helper:table:set", var->name, var->name_length));
                 out_len = 0;
                 if (sprint_realloc_by_type(&buf, &buf_len, &out_len, 1,
-                                           var, 0, 0, 0)) {
+                                           var, NULL, NULL, NULL)) {
                     DEBUGMSG(("helper:table:set"," type=%d(%02x), value=%s\n",
                               var->type, var->type, buf));
                 } else {
@@ -279,6 +341,7 @@
                 }
             }
         }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         /*
          * check to make sure its in table range 
@@ -334,10 +397,13 @@
             /*
              *  Reject requests of the form 'myTable.N'   (N != 1)
              */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             if (reqinfo->mode == MODE_SET_RESERVE1)
                 table_helper_cleanup(reqinfo, request,
                                      SNMP_ERR_NOTWRITABLE);
-            else if (reqinfo->mode == MODE_GET)
+            else
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+            if (reqinfo->mode == MODE_GET)
                 table_helper_cleanup(reqinfo, request,
                                      SNMP_NOSUCHOBJECT);
             continue;
@@ -352,6 +418,11 @@
         tbl_req_info = netsnmp_extract_table_info(request);
         if (NULL == tbl_req_info) {
             tbl_req_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_request_info);
+            if (tbl_req_info == NULL) {
+                table_helper_cleanup(reqinfo, request,
+                                     SNMP_ERR_GENERR);
+                continue;
+            }
             tbl_req_info->reg_info = tbl_info;
             tbl_req_info->indexes = snmp_clone_varbind(tbl_info->indexes);
             tbl_req_info->number_indexes = 0;       /* none yet */
@@ -371,7 +442,8 @@
             /*
              * oid is long enough to contain COLUMN info
              */
-            DEBUGMSGTL(("helper:table:col", "  have at least a column (%d)\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",
@@ -403,10 +475,12 @@
                 /*
                  *  Reject requests of the form 'myEntry.N'   (invalid N)
                  */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
                 if (reqinfo->mode == MODE_SET_RESERVE1)
                     table_helper_cleanup(reqinfo, request,
                                          SNMP_ERR_NOTWRITABLE);
                 else if (reqinfo->mode == MODE_GET)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
                     table_helper_cleanup(reqinfo, request,
                                          SNMP_NOSUCHOBJECT);
                 continue;
@@ -427,8 +501,9 @@
                     continue;
                 if (tbl_req_info->colnum != var->name[oid_column_pos]) {
                     DEBUGMSGTL(("helper:table:col",
-                                "    which doesn't match req %d - 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 
                      */
@@ -447,8 +522,8 @@
                  */
                 tbl_req_info->index_oid_len =
                     var->name_length - oid_index_pos;
-                DEBUGMSGTL(("helper:table", "    have %d bytes of index\n",
-                            tbl_req_info->index_oid_len));
+                DEBUGMSGTL(("helper:table", "    have %lu bytes of index\n",
+                            (unsigned long)tbl_req_info->index_oid_len));
                 netsnmp_assert(tbl_req_info->index_oid_len < MAX_OID_LEN);
                 memcpy(tbl_req_info->index_oid, &var->name[oid_index_pos],
                        tbl_req_info->index_oid_len * sizeof(oid));
@@ -473,8 +548,10 @@
              */
             if (reqinfo->mode == MODE_GET ) {
                 table_helper_cleanup(reqinfo, request, SNMP_NOSUCHOBJECT);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             } else if (reqinfo->mode == MODE_SET_RESERVE1 ) {
                 table_helper_cleanup(reqinfo, request, SNMP_ERR_NOTWRITABLE);
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
             }
             continue;
         }
@@ -500,6 +577,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 
@@ -514,29 +593,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 */
@@ -549,12 +626,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,
@@ -564,7 +640,7 @@
                      count++, vb = vb->next_variable) {
                     out_len = 0;
                     if (sprint_realloc_by_type(&buf, &buf_len, &out_len, 1,
-                                               vb, 0, 0, 0)) {
+                                               vb, NULL, NULL, NULL)) {
                         DEBUGMSG(("helper:table:results",
                                   "   index: type=%d(%02x), value=%s",
                                   vb->type, vb->type, buf));
@@ -584,7 +660,6 @@
                     free(buf);
                 }
                 DEBUGMSG(("helper:table:results", "\n"));
-            }
         }
 
 
@@ -595,8 +670,24 @@
         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"));
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+            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;
+            }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
             table_helper_cleanup(reqinfo, request, SNMP_NOSUCHINSTANCE);
             continue;
         }
@@ -605,7 +696,9 @@
         ++need_processing;
 
     }                           /* for each request */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     /*
      * bail if there is nothing for our child handlers
@@ -718,6 +811,7 @@
 
 /** create sparse table handler
  */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_SPARSE
 netsnmp_mib_handler *
 netsnmp_sparse_table_handler_get(void)
 {
@@ -733,14 +827,41 @@
 netsnmp_sparse_table_register(netsnmp_handler_registration *reginfo,
                        netsnmp_table_registration_info *tabreq)
 {
-    netsnmp_inject_handler(reginfo,
-        netsnmp_create_handler(SPARSE_TABLE_HANDLER_NAME,
-                               sparse_table_helper_handler));
-    netsnmp_inject_handler(reginfo, netsnmp_get_table_handler(tabreq));
+    netsnmp_mib_handler *handler1, *handler2;
+    int rc;
+
+    handler1 = netsnmp_create_handler(SPARSE_TABLE_HANDLER_NAME,
+                                     sparse_table_helper_handler);
+    if (NULL == handler1)
+        return SNMP_ERR_GENERR;
+
+    handler2 = netsnmp_get_table_handler(tabreq);
+    if (NULL == handler2 ) {
+        netsnmp_handler_free(handler1);
+        return SNMP_ERR_GENERR;
+    }
+
+    rc = netsnmp_inject_handler(reginfo, handler1);
+    if (SNMPERR_SUCCESS != rc) {
+        netsnmp_handler_free(handler1);
+        netsnmp_handler_free(handler2);
+        return rc;
+    }
+
+    rc = netsnmp_inject_handler(reginfo, handler2);
+    if (SNMPERR_SUCCESS != rc) {
+        /** handler1 is in reginfo... remove and free?? */
+        netsnmp_handler_free(handler2);
+        return rc;
+    }
+
+    /** both handlers now in reginfo, so nothing to do on error */
     return netsnmp_register_handler(reginfo);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_SPARSE */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_BUILD_RESULT
 /** Builds the result to be returned to the agent given the table information.
  *  Use this function to return results from lowel level handlers to
  *  the agent.  It takes care of building the proper resulting oid
@@ -774,7 +895,6 @@
     return SNMPERR_SUCCESS;
 }
 
-
 /** given a registration info object, a request object and the table
  *  info object it builds the request->requestvb->name oid from the
  *  index values and column information found in the table_info
@@ -811,6 +931,7 @@
 
     return SNMPERR_SUCCESS;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_BUILD_RESULT */
 
 /** given a registration info object, a request object and the table
  *  info object it builds the request->requestvb->name oid from the
@@ -929,6 +1050,42 @@
     return 0;
 }
 
+netsnmp_table_registration_info *
+netsnmp_table_registration_info_clone(netsnmp_table_registration_info *tri)
+{
+    netsnmp_table_registration_info *copy;
+    copy = malloc(sizeof(*copy));
+    if (copy) {
+        *copy = *tri;
+        copy->indexes = snmp_clone_varbind(tri->indexes);
+        if (!copy->indexes) {
+            free(copy);
+            copy = NULL;
+        }
+    }
+    return copy;
+}
+
+void
+netsnmp_table_registration_info_free(netsnmp_table_registration_info *tri)
+{
+    if (NULL == tri)
+        return;
+
+    if (NULL != tri->indexes)
+        snmp_free_varbind(tri->indexes);
+
+#if 0
+    /*
+     * sigh... example use of valid_columns points to static memory,
+     * so freeing it would be bad... we'll just have to live with any
+     * leaks, for now...
+     */
+#endif
+
+    free(tri);
+}
+
 /** @} */
 
 /*
@@ -1054,33 +1211,20 @@
  *
  */
 void
-#if HAVE_STDARG_H
 netsnmp_table_helper_add_indexes(netsnmp_table_registration_info *tinfo,
                                  ...)
-#else
-netsnmp_table_helper_add_indexes(va_alist)
-     va_dcl
-#endif
 {
     va_list         debugargs;
     int             type;
 
-#if HAVE_STDARG_H
     va_start(debugargs, tinfo);
-#else
-    netsnmp_table_registration_info *tinfo;
-
-    va_start(debugargs);
-    tinfo = va_arg(debugargs, netsnmp_table_registration_info *);
-#endif
-
     while ((type = va_arg(debugargs, int)) != 0) {
         netsnmp_table_helper_add_index(tinfo, type);
     }
-
     va_end(debugargs);
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 static void
 _row_stash_data_list_free(void *ptr) {
     netsnmp_oid_stash_node **tmp = (netsnmp_oid_stash_node **)ptr;
@@ -1088,6 +1232,7 @@
     free(ptr);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_GET_OR_CREATE_ROW_STASH
 /** returns a row-wide place to store data in.
     @todo This function will likely change to add free pointer functions. */
 netsnmp_oid_stash_node **
@@ -1096,7 +1241,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) {
         /*
@@ -1108,12 +1253,14 @@
             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));
     }
     return stashp;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_GET_OR_CREATE_ROW_STASH */
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * advance the table info colnum to the next column, or 0 if there are no more
diff --git a/agent/helpers/table_array.c b/agent/helpers/table_array.c
index 19b9c5c..7c98aae 100644
--- a/agent/helpers/table_array.c
+++ b/agent/helpers/table_array.c
@@ -4,6 +4,12 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <net-snmp/agent/table_array.h>
 
 #if HAVE_STRING_H
 #include <string.h>
@@ -11,14 +17,19 @@
 #include <strings.h>
 #endif
 
-#include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/agent/net-snmp-agent-includes.h>
-
 #include <net-snmp/agent/table.h>
-#include <net-snmp/agent/table_array.h>
 #include <net-snmp/library/container.h>
 #include <net-snmp/library/snmp_assert.h>
 
+netsnmp_feature_child_of(table_array_all, mib_helpers)
+
+netsnmp_feature_child_of(table_array_register,table_array_all)
+netsnmp_feature_child_of(table_array_find_table_array_handler,table_array_all)
+netsnmp_feature_child_of(table_array_extract_array_context,table_array_all)
+netsnmp_feature_child_of(table_array_check_row_status,table_array_all)
+
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER
+
 /*
  * snmp.h:#define SNMP_MSG_INTERNAL_SET_BEGIN        -1 
  * snmp.h:#define SNMP_MSG_INTERNAL_SET_RESERVE1     0 
@@ -193,6 +204,7 @@
     return netsnmp_register_table(reginfo, tabreg);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ARRAY_REGISTER
 int
 netsnmp_table_array_register(netsnmp_handler_registration *reginfo,
                              netsnmp_table_registration_info *tabreg,
@@ -206,8 +218,10 @@
     return netsnmp_table_container_register(reginfo, tabreg, cb,
                                             container, group_rows);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ARRAY_REGISTER */
 
 /** find the handler for the table_array helper. */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ARRAY_FIND_TABLE_ARRAY_HANDLER
 netsnmp_mib_handler *
 netsnmp_find_table_array_handler(netsnmp_handler_registration *reginfo)
 {
@@ -223,15 +237,19 @@
 
     return mh;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ARRAY_FIND_TABLE_ARRAY_HANDLER */
 
 /** find the context data used by the table_array helper */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ARRAY_EXTRACT_ARRAY_CONTEXT
 netsnmp_container      *
 netsnmp_extract_array_context(netsnmp_request_info *request)
 {
-    return netsnmp_request_get_list_data(request, TABLE_ARRAY_NAME);
+    return (netsnmp_container*)netsnmp_request_get_list_data(request, TABLE_ARRAY_NAME);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ARRAY_EXTRACT_ARRAY_CONTEXT */
 
 /** this function is called to validate RowStatus transitions. */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ARRAY_CHECK_ROW_STATUS
 int
 netsnmp_table_array_check_row_status(netsnmp_table_array_callbacks *cb,
                                      netsnmp_request_group *ag,
@@ -310,6 +328,7 @@
 
     return SNMP_ERR_NOERROR;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ARRAY_CHECK_ROW_STATUS */
 
 /** @} */
 
@@ -344,37 +363,13 @@
 /*
  * context info for SET requests
  */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 typedef struct set_context_s {
     netsnmp_agent_request_info *agtreq_info;
     table_container_data *tad;
     int             status;
 } set_context;
-
-static void
-release_netsnmp_request_group(netsnmp_index *g, void *v)
-{
-    netsnmp_request_group_item *tmp;
-    netsnmp_request_group *group = (netsnmp_request_group *) g;
-
-    if (!g)
-        return;
-    while (group->list) {
-        tmp = group->list;
-        group->list = tmp->next;
-        free(tmp);
-    }
-
-    free(group);
-}
-
-static void
-release_netsnmp_request_groups(void *vp)
-{
-    netsnmp_container *c = (netsnmp_container*)vp;
-    CONTAINER_FOR_EACH(c, (netsnmp_container_obj_func*)
-                       release_netsnmp_request_group, NULL);
-    CONTAINER_FREE(c);
-}
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 void
 build_new_oid(netsnmp_handler_registration *reginfo,
@@ -488,7 +483,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,
@@ -555,7 +550,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:"));
@@ -564,6 +559,8 @@
             DEBUGMSG(("table_array:group", "\n"));
             g = (netsnmp_request_group *) tmp;
             i = SNMP_MALLOC_TYPEDEF(netsnmp_request_group_item);
+            if (i == NULL)
+                return;
             i->ri = current;
             i->tri = tblreq_info;
             i->next = g->list;
@@ -579,6 +576,11 @@
         DEBUGMSG(("table_array:group", "\n"));
         g = SNMP_MALLOC_TYPEDEF(netsnmp_request_group);
         i = SNMP_MALLOC_TYPEDEF(netsnmp_request_group_item);
+        if (i == NULL || g == NULL) {
+            SNMP_FREE(i);
+            SNMP_FREE(g);
+            return;
+        }
         g->list = i;
         g->table = tad->table;
         i->ri = current;
@@ -589,13 +591,15 @@
          * 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) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
                 if(MODE_IS_SET(agtreq_info->mode))
                     netsnmp_set_request_error(agtreq_info, current,
                                               SNMP_ERR_NOTWRITABLE);
                 else
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
                     netsnmp_set_request_error(agtreq_info, current,
                                               SNMP_NOSUCHINSTANCE);
                 free(g);
@@ -624,6 +628,33 @@
     } /** for( current ... ) */
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+static void
+release_netsnmp_request_group(netsnmp_index *g, void *v)
+{
+    netsnmp_request_group_item *tmp;
+    netsnmp_request_group *group = (netsnmp_request_group *) g;
+
+    if (!g)
+        return;
+    while (group->list) {
+        tmp = group->list;
+        group->list = tmp->next;
+        free(tmp);
+    }
+
+    free(group);
+}
+
+static void
+release_netsnmp_request_groups(void *vp)
+{
+    netsnmp_container *c = (netsnmp_container*)vp;
+    CONTAINER_FOR_EACH(c, (netsnmp_container_obj_func*)
+                       release_netsnmp_request_group, NULL);
+    CONTAINER_FREE(c);
+}
+
 static void
 process_set_group(netsnmp_index *o, void *c)
 {
@@ -817,6 +848,7 @@
 
     return context.status;
 }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 
 /**********************************************************************
@@ -852,6 +884,7 @@
                     mode_name[agtreq_info->mode]));
     }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     if (MODE_IS_SET(agtreq_info->mode)) {
         /*
          * netsnmp_mutex_lock(&tad->lock);
@@ -862,6 +895,7 @@
          * netsnmp_mutex_unlock(&tad->lock);
          */
     } else
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
         rc = process_get_requests(reginfo, agtreq_info, requests, tad);
 
     if (rc != SNMP_ERR_NOERROR) {
@@ -881,4 +915,5 @@
     
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER */
 /** @endcond */
diff --git a/agent/helpers/table_container.c b/agent/helpers/table_container.c
index d08bff2..08e9741 100644
--- a/agent/helpers/table_container.c
+++ b/agent/helpers/table_container.c
@@ -4,6 +4,12 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <net-snmp/agent/table_container.h>
 
 #if HAVE_STRING_H
 #include <string.h>
@@ -11,14 +17,21 @@
 #include <strings.h>
 #endif
 
-#include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/agent/net-snmp-agent-includes.h>
-
 #include <net-snmp/agent/table.h>
-#include <net-snmp/agent/table_container.h>
 #include <net-snmp/library/container.h>
 #include <net-snmp/library/snmp_assert.h>
 
+netsnmp_feature_provide(table_container)
+netsnmp_feature_child_of(table_container, table_container_all)
+netsnmp_feature_child_of(table_container_replace_row, table_container_all)
+netsnmp_feature_child_of(table_container_extract, table_container_all)
+netsnmp_feature_child_of(table_container_management, table_container_all)
+netsnmp_feature_child_of(table_container_row_remove, table_container_all)
+netsnmp_feature_child_of(table_container_row_insert, table_container_all)
+netsnmp_feature_child_of(table_container_all, mib_helpers)
+
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER
+
 /*
  * snmp.h:#define SNMP_MSG_INTERNAL_SET_BEGIN        -1 
  * snmp.h:#define SNMP_MSG_INTERNAL_SET_RESERVE1     0 
@@ -34,6 +47,9 @@
  */
 typedef struct container_table_data_s {
 
+    /** Number of handlers whose myvoid pointer points to this structure. */
+    int refcnt;
+
    /** registration info for the table */
     netsnmp_table_registration_info *tblreg_info;
 
@@ -159,6 +175,7 @@
  *
  * ================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_MANAGEMENT
 container_table_data *
 netsnmp_tcontainer_create_table( const char *name,
                                  netsnmp_container *container, long flags )
@@ -179,7 +196,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;
 
@@ -203,6 +220,7 @@
     SNMP_FREE(table);
     return;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_MANAGEMENT */
 
     /*
      * The various standalone row operation routines
@@ -229,6 +247,7 @@
     return NULL;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_REPLACE_ROW
 int
 netsnmp_tcontainer_replace_row( container_table_data *table,
                                 netsnmp_index *old_row, netsnmp_index *new_row )
@@ -239,6 +258,7 @@
     netsnmp_tcontainer_add_row(    table, new_row );
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_REPLACE_ROW */
 
     /* netsnmp_tcontainer_remove_delete_row() will be table-specific too */
 
@@ -249,6 +269,20 @@
  *
  * ================================== */
 
+static container_table_data *
+netsnmp_container_table_data_clone(container_table_data *tad)
+{
+    ++tad->refcnt;
+    return tad;
+}
+
+static void
+netsnmp_container_table_data_free(container_table_data *tad)
+{
+    if (--tad->refcnt == 0)
+	free(tad);
+}
+
 /** returns a netsnmp_mib_handler object for the table_container helper */
 netsnmp_mib_handler *
 netsnmp_container_table_handler_get(netsnmp_table_registration_info *tabreg,
@@ -273,6 +307,7 @@
         return NULL;
     }
 
+    tad->refcnt = 1;
     tad->tblreg_info = tabreg;  /* we need it too, but it really is not ours */
     if(key_type)
         tad->key_type = key_type;
@@ -289,6 +324,8 @@
         container->ncompare = netsnmp_ncompare_netsnmp_index;
     
     handler->myvoid = (void*)tad;
+    handler->data_clone = (void *(*)(void *))netsnmp_container_table_data_clone;
+    handler->data_free = (void (*)(void *))netsnmp_container_table_data_free;
     handler->flags |= MIB_HANDLER_AUTO_NEXT;
     
     return handler;
@@ -315,13 +352,35 @@
     return netsnmp_register_table(reginfo, tabreg);
 }
 
+int
+netsnmp_container_table_unregister(netsnmp_handler_registration *reginfo)
+{
+    container_table_data *tad;
+
+    if (!reginfo)
+        return MIB_UNREGISTRATION_FAILED;
+    tad = (container_table_data *)
+        netsnmp_find_handler_data_by_name(reginfo, "table_container");
+    if (tad) {
+        CONTAINER_FREE( tad->table );
+        tad->table = NULL;
+	/*
+	 * Note: don't free the memory tad points at here - that is done
+	 * by netsnmp_container_table_data_free().
+	 */
+    }
+    return netsnmp_unregister_table( reginfo );
+}
+
 /** retrieve the container used by the table_container helper */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_EXTRACT
 netsnmp_container*
 netsnmp_container_table_container_extract(netsnmp_request_info *request)
 {
     return (netsnmp_container *)
          netsnmp_request_get_list_data(request, TABLE_CONTAINER_CONTAINER);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_EXTRACT */
 
 #ifndef NETSNMP_USE_INLINE
 /** find the context data used by the table_container helper */
@@ -346,6 +405,7 @@
 }
 #endif /* inline */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_ROW_INSERT
 /** inserts a newly created table_container entry into a request list */
 void
 netsnmp_container_table_row_insert(netsnmp_request_info *request,
@@ -413,6 +473,76 @@
         }
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_ROW_INSERT */
+
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_ROW_REMOVE
+/** removes a table_container entry from a request list */
+void
+netsnmp_container_table_row_remove(netsnmp_request_info *request,
+                                   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);
+        }
+    }
+}
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER_ROW_REMOVE */
 
 /** @cond */
 /**********************************************************************
@@ -482,7 +612,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),
@@ -518,17 +648,21 @@
     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
              */
             DEBUGMSGTL(("table_container", "no row found\n"));
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             if((agtreq_info->mode != MODE_SET_RESERVE1) || /* get */
                (reginfo->modes & HANDLER_CAN_NOT_CREATE)) { /* no create */
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
                 netsnmp_set_request_error(agtreq_info, request,
                                           SNMP_NOSUCHINSTANCE);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
         }
     } /** GET/SET */
     
@@ -590,7 +724,11 @@
      * registration.
      */
     oldmode = agtreq_info->mode;
-    if(MODE_IS_GET(oldmode) || (MODE_SET_RESERVE1 == oldmode)) {
+    if(MODE_IS_GET(oldmode)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+       || (MODE_SET_RESERVE1 == oldmode)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+        ) {
         netsnmp_request_info *curr_request;
         /*
          * Loop through each of the requests, and
@@ -721,7 +859,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 );
 }
 
 /* ==================================
@@ -730,4 +868,9 @@
  *
  * ================================== */
 
+#else /* NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER */
+netsnmp_feature_unused(table_container);
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_CONTAINER */
 /** @} */
+
+
diff --git a/agent/helpers/table_data.c b/agent/helpers/table_data.c
index 317331a..659d903 100644
--- a/agent/helpers/table_data.c
+++ b/agent/helpers/table_data.c
@@ -1,4 +1,10 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <net-snmp/agent/table_data.h>
 
 #if HAVE_STRING_H
 #include <string.h>
@@ -6,13 +12,30 @@
 #include <strings.h>
 #endif
 
-#include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/agent/net-snmp-agent-includes.h>
-
 #include <net-snmp/agent/table.h>
-#include <net-snmp/agent/table_data.h>
 #include <net-snmp/agent/read_only.h>
 
+netsnmp_feature_child_of(table_data_all, mib_helpers)
+
+netsnmp_feature_child_of(table_data, table_data_all)
+netsnmp_feature_child_of(register_read_only_table_data, table_data_all)
+netsnmp_feature_child_of(extract_table_row_data, table_data_all)
+netsnmp_feature_child_of(insert_table_row, table_data_all)
+netsnmp_feature_child_of(table_data_delete_table, table_data_all)
+
+netsnmp_feature_child_of(table_data_extras, table_data_all)
+
+netsnmp_feature_child_of(table_data_create_table, table_data_extras)
+netsnmp_feature_child_of(table_data_create_row, table_data_extras)
+netsnmp_feature_child_of(table_data_copy_row, table_data_extras)
+netsnmp_feature_child_of(table_data_remove_delete_row, table_data_extras)
+netsnmp_feature_child_of(table_data_unregister, table_data_extras)
+netsnmp_feature_child_of(table_data_row_count, table_data_extras)
+netsnmp_feature_child_of(table_data_row_operations, table_data_extras)
+netsnmp_feature_child_of(table_data_row_first, table_data_extras)
+
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA
+
 /** @defgroup table_data table_data
  *  Helps you implement a table with datamatted storage.
  *  @ingroup table
@@ -80,16 +103,17 @@
     if (row->indexes) {
         newrow->indexes = snmp_clone_varbind(newrow->indexes);
         if (!newrow->indexes) {
-            free (newrow);
+            free(newrow);
             return NULL;
         }
     }
 
     if (row->index_oid) {
-        newrow->index_oid = netsnmp_memdup(row->index_oid,
-                                           row->index_oid_len * sizeof(oid));
+        newrow->index_oid =
+            snmp_duplicate_objid(row->index_oid, row->index_oid_len);
         if (!newrow->index_oid) {
-            free (newrow);
+            free(newrow->indexes);
+            free(newrow);
             return NULL;
         }
     }
@@ -227,7 +251,7 @@
 }
 
 /** swaps out origrow with newrow.  This does *not* delete/free anything! */
-NETSNMP_INLINE void
+void
 netsnmp_table_data_replace_row(netsnmp_table_data *table,
                                netsnmp_table_row *origrow,
                                netsnmp_table_row *newrow)
@@ -286,12 +310,15 @@
      * Generic API - mostly renamed wrappers
      * ===================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_CREATE_TABLE
 netsnmp_table_data *
 netsnmp_table_data_create_table(const char *name, long flags)
 {
     return netsnmp_create_table_data( name );
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_CREATE_TABLE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_DELETE_TABLE
 void
 netsnmp_table_data_delete_table( netsnmp_table_data *table )
 {
@@ -311,14 +338,13 @@
     }
     table->first_row = NULL;
 
-    if (table->name) {
-        SNMP_FREE(table->name);
-        table->name = NULL;
-    }
+    SNMP_FREE(table->name);
     SNMP_FREE(table);
     return;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_DELETE_TABLE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_CREATE_ROW
 netsnmp_table_row *
 netsnmp_table_data_create_row( void* entry )
 {
@@ -327,9 +353,11 @@
         row->data = entry;
     return row;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_CREATE_ROW */
 
     /* netsnmp_table_data_clone_row() defined above */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_COPY_ROW
 int
 netsnmp_table_data_copy_row( netsnmp_table_row  *old_row,
                              netsnmp_table_row  *new_row )
@@ -342,11 +370,12 @@
     if (old_row->indexes)
         new_row->indexes = snmp_clone_varbind(old_row->indexes);
     if (old_row->index_oid)
-        new_row->index_oid = netsnmp_memdup(old_row->index_oid,
-                                         old_row->index_oid_len * sizeof(oid));
+        new_row->index_oid =
+            snmp_duplicate_objid(old_row->index_oid, old_row->index_oid_len);
     /* XXX - Doesn't copy table-specific row structure */
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_COPY_ROW */
 
     /*
      * netsnmp_table_data_delete_row()
@@ -356,12 +385,14 @@
      *     all defined above
      */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_REMOVE_DELETE_ROW
 void *
 netsnmp_table_data_remove_delete_row(netsnmp_table_data *table,
                                      netsnmp_table_row *row)
 {
     return netsnmp_table_data_remove_and_delete_row(table, row);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_REMOVE_DELETE_ROW */
 
 
 /* ==================================
@@ -403,6 +434,8 @@
     return netsnmp_register_table(reginfo, table_info);
 }
 
+
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_TABLE_DATA
 /** registers a handler as a read-only data table
  *  If table_info != NULL, it registers it as a normal table too. */
 int
@@ -413,6 +446,16 @@
     netsnmp_inject_handler(reginfo, netsnmp_get_read_only_handler());
     return netsnmp_register_table_data(reginfo, table, table_info);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_READ_ONLY_TABLE_DATA */
+
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_UNREGISTER
+int
+netsnmp_unregister_table_data(netsnmp_handler_registration *reginfo)
+{
+    /* free table; */
+    return netsnmp_unregister_table(reginfo);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_UNREGISTER */
 
 /*
  * The helper handler that takes care of passing a specific row of
@@ -445,7 +488,9 @@
         switch (reqinfo->mode) {
         case MODE_GET:
         case MODE_GETNEXT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case MODE_SET_RESERVE1:
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
             netsnmp_request_add_list_data(request,
                                       netsnmp_create_data_list(
                                           TABLE_DATA_TABLE, table, NULL));
@@ -519,9 +564,7 @@
                         /*
                          * equal match, return the next row 
                          */
-                        if (row) {
-                            row = row->next;
-                        }
+                        row = row->next;
                         break;
                     } else if (result > 0) {
                         /*
@@ -598,6 +641,7 @@
             }
             break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case MODE_SET_RESERVE1:
             valid_request = 1;
             if (NULL !=
@@ -622,6 +666,7 @@
         case MODE_SET_FREE:
         case MODE_SET_UNDO:
             valid_request = 1;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         }
     }
@@ -664,6 +709,7 @@
                                                                TABLE_DATA_ROW);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_EXTRACT_TABLE_ROW_DATA
 /** extracts the data from the row being accessed passed from the
  * table_data helper */
 void           *
@@ -676,9 +722,11 @@
     else
         return NULL;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_EXTRACT_TABLE_ROW_DATA */
 
+#ifndef NETSNMP_FEATURE_REMOVE_INSERT_TABLE_ROW
 /** inserts a newly created table_data row into a request */
-NETSNMP_INLINE void
+void
 netsnmp_insert_table_row(netsnmp_request_info *request,
                          netsnmp_table_row *row)
 {
@@ -741,6 +789,7 @@
         }
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INSERT_TABLE_ROW */
 
 /* builds a result given a row, a varbind to set and the data */
 int
@@ -852,11 +901,13 @@
      * Generic API - mostly renamed wrappers
      * ===================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_ROW_FIRST
 netsnmp_table_row *
 netsnmp_table_data_row_first(netsnmp_table_data *table)
 {
     return netsnmp_table_data_get_first_row(table);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_ROW_FIRST */
 
 netsnmp_table_row *
 netsnmp_table_data_row_get(  netsnmp_table_data *table,
@@ -921,11 +972,13 @@
     return netsnmp_table_data_row_next_byoid(table, instance, len);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_ROW_COUNT
 int
 netsnmp_table_data_row_count(netsnmp_table_data *table)
 {
     return netsnmp_table_data_num_rows(table);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_ROW_COUNT */
 
 
 /* ==================================
@@ -935,6 +988,7 @@
  *
  * ================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_ROW_OPERATIONS
 void *
 netsnmp_table_data_entry_first(netsnmp_table_data *table)
 {
@@ -994,6 +1048,7 @@
         netsnmp_table_data_row_next_byoid(table, instance, len);
     return (row ? row->data : NULL );
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_ROW_OPERATIONS */
 
     /* =====================================
      * Generic API - mostly renamed wrappers
@@ -1005,5 +1060,9 @@
  *
  * ================================== */
 
+#else /* NETSNMP_FEATURE_REMOVE_TABLE_DATA */
+netsnmp_feature_unused(table_data);
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA */
+
 /** @} 
  */
diff --git a/agent/helpers/table_dataset.c b/agent/helpers/table_dataset.c
index f92e3e1..931c27a 100644
--- a/agent/helpers/table_dataset.c
+++ b/agent/helpers/table_dataset.c
@@ -1,4 +1,11 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <net-snmp/agent/table_dataset.h>
 
 #if HAVE_STRING_H
 #include <string.h>
@@ -6,8 +13,33 @@
 #include <strings.h>
 #endif
 
-#include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/agent/net-snmp-agent-includes.h>
+netsnmp_feature_child_of(table_dataset_all, mib_helpers)
+netsnmp_feature_child_of(table_dataset, table_dataset_all)
+netsnmp_feature_child_of(table_dataset_remove_row, table_dataset_all)
+netsnmp_feature_child_of(table_data_set_column, table_dataset_all)
+netsnmp_feature_child_of(table_dataset_get_newrow, table_dataset_all)
+netsnmp_feature_child_of(table_set_add_indexes, table_dataset_all)
+netsnmp_feature_child_of(delete_table_data_set, table_dataset_all)
+netsnmp_feature_child_of(table_set_multi_add_default_row, table_dataset_all)
+netsnmp_feature_child_of(table_dataset_unregister_auto_data_table, table_dataset_all)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_TABLE_DATASET
+netsnmp_feature_require(table_get_or_create_row_stash)
+netsnmp_feature_require(table_data_delete_table)
+netsnmp_feature_require(table_data)
+netsnmp_feature_require(oid_stash_get_data)
+netsnmp_feature_require(oid_stash_add_data)
+#endif /* NETSNMP_FEATURE_REQUIRE_TABLE_DATASET */
+
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATASET
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(oid_stash)
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+#ifndef NETSNMP_DISABLE_MIB_LOADING
+netsnmp_feature_require(mib_to_asn_type)
+#endif /* NETSNMP_DISABLE_MIB_LOADING */
 
 static netsnmp_data_list *auto_tables;
 
@@ -72,82 +104,10 @@
  *
  * ================================== */
 
-/** Create a netsnmp_table_data_set structure given a table_data definition */
-netsnmp_table_data_set *
-netsnmp_create_table_data_set(const char *table_name)
-{
-    netsnmp_table_data_set *table_set =
-        SNMP_MALLOC_TYPEDEF(netsnmp_table_data_set);
-    if (!table_set)
-        return NULL;
-    table_set->table = netsnmp_create_table_data(table_name);
-    return table_set;
-}
-
-void netsnmp_delete_table_data_set(netsnmp_table_data_set *table_set)
-{
-    netsnmp_table_data_set_storage *ptr, *next;
-    netsnmp_table_row *prow, *pnextrow;
-
-    for (ptr = table_set->default_row; ptr; ptr = next) {
-        next = ptr->next;
-        free(ptr);
-    }
-    table_set->default_row = NULL;
-    for (prow = table_set->table->first_row; prow; prow = pnextrow) {
-        pnextrow = prow->next;
-        netsnmp_table_dataset_remove_and_delete_row(table_set, prow);
-    }
-    table_set->table->first_row = NULL;
-    netsnmp_table_data_delete_table(table_set->table);
-    free(table_set);
-}
-
-/** clones a dataset row, including all data. */
-netsnmp_table_row *
-netsnmp_table_data_set_clone_row(netsnmp_table_row *row)
-{
-    netsnmp_table_data_set_storage *data, **newrowdata;
-    netsnmp_table_row *newrow;
-
-    if (!row)
-        return NULL;
-
-    newrow = netsnmp_table_data_clone_row(row);
-    if (!newrow)
-        return NULL;
-
-    data = (netsnmp_table_data_set_storage *) row->data;
-
-    if (data) {
-        for (newrowdata =
-             (netsnmp_table_data_set_storage **) &(newrow->data); data;
-             newrowdata = &((*newrowdata)->next), data = data->next) {
-
-            *newrowdata = netsnmp_memdup(data,
-                   sizeof(netsnmp_table_data_set_storage));
-            if (!*newrowdata) {
-                netsnmp_table_dataset_delete_row(newrow);
-                return NULL;
-            }
-
-            if (data->data.voidp) {
-                (*newrowdata)->data.voidp = netsnmp_memdup(data->data.voidp,
-                                                           data->data_len);
-                if (!(*newrowdata)->data.voidp) {
-                    netsnmp_table_dataset_delete_row(newrow);
-                    return NULL;
-                }
-            }
-        }
-    }
-    return newrow;
-}
-
 /** 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;
@@ -178,7 +138,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);
 }
 
@@ -204,6 +164,7 @@
 }
 
 /** removes a row from the table, but doesn't delete/free the column values */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATASET_REMOVE_ROW
 NETSNMP_INLINE void
 netsnmp_table_dataset_remove_row(netsnmp_table_data_set *table,
                                  netsnmp_table_row *row)
@@ -213,6 +174,7 @@
 
     netsnmp_table_data_remove_and_delete_row(table->table, row);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATASET_REMOVE_ROW */
 
 /** removes a row from the table and then deletes it (and all its data) */
 NETSNMP_INLINE void
@@ -230,6 +192,80 @@
     netsnmp_table_dataset_delete_all_data(data);
 }
 
+/** Create a netsnmp_table_data_set structure given a table_data definition */
+netsnmp_table_data_set *
+netsnmp_create_table_data_set(const char *table_name)
+{
+    netsnmp_table_data_set *table_set =
+        SNMP_MALLOC_TYPEDEF(netsnmp_table_data_set);
+    if (!table_set)
+        return NULL;
+    table_set->table = netsnmp_create_table_data(table_name);
+    return table_set;
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_DELETE_TABLE_DATA_SET
+void netsnmp_delete_table_data_set(netsnmp_table_data_set *table_set)
+{
+    netsnmp_table_data_set_storage *ptr, *next;
+    netsnmp_table_row *prow, *pnextrow;
+
+    for (ptr = table_set->default_row; ptr; ptr = next) {
+        next = ptr->next;
+        free(ptr);
+    }
+    table_set->default_row = NULL;
+    for (prow = table_set->table->first_row; prow; prow = pnextrow) {
+        pnextrow = prow->next;
+        netsnmp_table_dataset_remove_and_delete_row(table_set, prow);
+    }
+    table_set->table->first_row = NULL;
+    netsnmp_table_data_delete_table(table_set->table);
+    free(table_set);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_DELETE_TABLE_DATA_SET */
+
+/** clones a dataset row, including all data. */
+netsnmp_table_row *
+netsnmp_table_data_set_clone_row(netsnmp_table_row *row)
+{
+    netsnmp_table_data_set_storage *data, **newrowdata;
+    netsnmp_table_row *newrow;
+
+    if (!row)
+        return NULL;
+
+    newrow = netsnmp_table_data_clone_row(row);
+    if (!newrow)
+        return NULL;
+
+    data = (netsnmp_table_data_set_storage *) row->data;
+
+    if (data) {
+        for (newrowdata =
+             (netsnmp_table_data_set_storage **) &(newrow->data); data;
+             newrowdata = &((*newrowdata)->next), data = data->next) {
+
+            *newrowdata = netsnmp_memdup(data,
+                sizeof(netsnmp_table_data_set_storage));
+            if (!*newrowdata) {
+                netsnmp_table_dataset_delete_row(newrow);
+                return NULL;
+            }
+
+            if (data->data.voidp) {
+                (*newrowdata)->data.voidp =
+                    netsnmp_memdup(data->data.voidp, data->data_len);
+                if (!(*newrowdata)->data.voidp) {
+                    netsnmp_table_dataset_delete_row(newrow);
+                    return NULL;
+                }
+            }
+        }
+    }
+    return newrow;
+}
+
 /* ==================================
  *
  * Data Set API: Default row operations
@@ -248,9 +284,10 @@
     for (; defrow; defrow = defrow->next) {
         netsnmp_set_row_column(row, defrow->column, defrow->type,
                                defrow->data.voidp, defrow->data_len);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if (defrow->writable)
             netsnmp_mark_row_column_writable(row, defrow->column, 1);
-
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     return row;
 }
@@ -288,6 +325,8 @@
     }
 
     new_col = SNMP_MALLOC_TYPEDEF(netsnmp_table_data_set_storage);
+    if (new_col == NULL)
+        return SNMPERR_GENERR;
     new_col->type = type;
     new_col->writable = writable;
     new_col->column = column;
@@ -323,14 +362,9 @@
  *  this is a wrapper around calling netsnmp_table_set_add_default_row
  *  repeatedly for you.
  */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_SET_MULTI_ADD_DEFAULT_ROW
 void
-#if HAVE_STDARG_H
 netsnmp_table_set_multi_add_default_row(netsnmp_table_data_set *tset, ...)
-#else
-netsnmp_table_set_multi_add_default_row(va_dcl
-    )
-     va_dcl
-#endif
 {
     va_list         debugargs;
     unsigned int    column;
@@ -338,14 +372,7 @@
     void           *data;
     size_t          data_len;
 
-#if HAVE_STDARG_H
     va_start(debugargs, tset);
-#else
-    netsnmp_table_data_set *tset;
-
-    va_start(debugargs);
-    tset = va_arg(debugargs, netsnmp_table_data_set *);
-#endif
 
     while ((column = va_arg(debugargs, unsigned int)) != 0) {
         type = va_arg(debugargs, int);
@@ -358,7 +385,7 @@
 
     va_end(debugargs);
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_SET_MULTI_ADD_DEFAULT_ROW */
 
 /* ==================================
  *
@@ -398,11 +425,15 @@
                                 netsnmp_table_data_set *data_set,
                                 netsnmp_table_registration_info *table_info)
 {
+    int ret;
+
     if (NULL == table_info) {
         /*
          * allocate the table if one wasn't allocated 
          */
         table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
+        if (table_info == NULL)
+            return SNMP_ERR_GENERR;
     }
 
     if (NULL == table_info->indexes && data_set->table->indexes_template) {
@@ -433,8 +464,11 @@
 
     netsnmp_inject_handler(reginfo,
                            netsnmp_get_table_data_set_handler(data_set));
-    return netsnmp_register_table_data(reginfo, data_set->table,
+    ret = netsnmp_register_table_data(reginfo, data_set->table,
                                        table_info);
+    if (ret == SNMPERR_SUCCESS && reginfo->handler)
+        netsnmp_handler_owns_table_info(reginfo->handler->next);
+    return ret;
 }
 
 newrow_stash   *
@@ -446,11 +480,14 @@
     netsnmp_table_row *newrow   = NULL;
 
     newrowstash = SNMP_MALLOC_TYPEDEF(newrow_stash);
-    newrowstash->created = 1;
-    newrow = netsnmp_table_data_set_create_row_from_defaults
-                        (datatable->default_row);
-    newrow->indexes = snmp_clone_varbind(table_info->indexes);
-    newrowstash->newrow = newrow;
+
+    if (newrowstash != NULL) {
+        newrowstash->created = 1;
+        newrow = netsnmp_table_data_set_create_row_from_defaults
+            (datatable->default_row);
+        newrow->indexes = snmp_clone_varbind(table_info->indexes);
+        newrowstash->newrow = newrow;
+    }
 
     return newrowstash;
 }
@@ -469,8 +506,6 @@
     netsnmp_table_row *row, *newrow = NULL;
     netsnmp_table_request_info *table_info;
     netsnmp_request_info *request;
-    oid            *suffix;
-    size_t          suffix_len;
     netsnmp_oid_stash_node **stashp = NULL;
 
     if (!handler)
@@ -480,6 +515,11 @@
     for (request = requests; request; request = request->next) {
         netsnmp_table_data_set *datatable =
             (netsnmp_table_data_set *) handler->myvoid;
+        const oid * const suffix =
+            requests->requestvb->name + reginfo->rootoid_len + 2;
+        const size_t suffix_len =
+            requests->requestvb->name_length - (reginfo->rootoid_len + 2);
+
         if (request->processed)
             continue;
 
@@ -488,16 +528,10 @@
          */
         row = netsnmp_extract_table_row(request);
         table_info = netsnmp_extract_table_info(request);
-        suffix = requests->requestvb->name + reginfo->rootoid_len + 2;
-        suffix_len = requests->requestvb->name_length -
-            (reginfo->rootoid_len + 2);
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         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 
              */
@@ -506,30 +540,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) {
@@ -557,6 +577,11 @@
                      * existing row that needs to be modified 
                      */
                     newrowstash = SNMP_MALLOC_TYPEDEF(newrow_stash);
+                    if (newrowstash == NULL) {
+                        netsnmp_set_request_error(reqinfo, request,
+                                                  SNMP_ERR_GENERR);
+                        continue;
+                    }
                     newrow = netsnmp_table_data_set_clone_row(row);
                     newrowstash->newrow = newrow;
                 }
@@ -573,12 +598,17 @@
                 reqinfo->mode == MODE_SET_RESERVE2)
                 row = newrow;
         }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         if (row)
             data = (netsnmp_table_data_set_storage *) row->data;
 
         if (!row || !table_info || !data) {
-            if (!MODE_IS_SET(reqinfo->mode) || !table_info) {
+            if (!table_info
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+                || !MODE_IS_SET(reqinfo->mode)
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+                ) {
                 netsnmp_set_request_error(reqinfo, request,
                                           SNMP_NOSUCHINSTANCE);
                 continue;
@@ -592,9 +622,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.
@@ -603,10 +634,12 @@
                                                 row,
                                                 table_info->colnum,
                                                 data->type,
-                                                data->data.voidp,
+                                       (u_char*)data->data.voidp,
                                                 data->data_len);
+            }
             break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case MODE_SET_RESERVE1:
             if (data) {
                 /*
@@ -797,9 +830,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,
@@ -823,6 +856,12 @@
 		newrow = NULL;
             }
             break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+        default:
+            snmp_log(LOG_ERR,
+                     "table_dataset: unknown mode passed into the handler\n");
+            return SNMP_ERR_GENERR;
         }
     }
 
@@ -843,18 +882,19 @@
 /**
  * extracts a netsnmp_table_data_set pointer from a given request
  */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATA_SET_COLUMN
 netsnmp_table_data_set_storage *
 netsnmp_extract_table_data_set_column(netsnmp_request_info *request,
                                      unsigned int column)
 {
     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);
     }
     return data;
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATA_SET_COLUMN */
 
 /* ==================================
  *
@@ -882,9 +922,23 @@
     if (!registration_name) {
         registration_name = table_set->table->name;
     }
-    netsnmp_add_list_data(&auto_tables, netsnmp_create_data_list(registration_name, tables, NULL));     /* XXX */
+    netsnmp_add_list_data(&auto_tables,
+                          netsnmp_create_data_list(registration_name,
+                                                   tables, free));     /* XXX */
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATASET_UNREGISTER_AUTO_DATA_TABLE
+/** Undo the effect of netsnmp_register_auto_data_table().
+ */
+void
+netsnmp_unregister_auto_data_table(netsnmp_table_data_set *table_set,
+				   char *registration_name)
+{
+    netsnmp_remove_list_node(&auto_tables, registration_name
+			     ? registration_name : table_set->table->name);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATASET_UNREGISTER_AUTO_DATA_TABLE */
+
 #ifndef NETSNMP_DISABLE_MIB_LOADING
 static void
 _table_set_add_indexes(netsnmp_table_data_set *table_set, struct tree *tp)
@@ -1012,7 +1066,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;
@@ -1044,7 +1098,7 @@
         }
 
         DEBUGMSGTL(("table_set_add_table",
-                    "adding column %s(%d) of type %d (access %d)\n",
+                    "adding column %s(%ld) of type %d (access %d)\n",
                     tp->label, tp->subid, type, tp->access));
 
         switch (tp->access) {
@@ -1057,7 +1111,7 @@
             /* fallthrough */
         case MIB_ACCESS_READONLY:
             DEBUGMSGTL(("table_set_add_table",
-                        "adding column %d of type %d\n", tp->subid, type));
+                        "adding column %ld of type %d\n", tp->subid, type));
             netsnmp_table_set_add_default_row(table_set, tp->subid, type,
                                               canwrite, NULL, 0);
             mincol = SNMP_MIN(mincol, tp->subid);
@@ -1100,7 +1154,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) {
@@ -1123,7 +1177,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);
     }
@@ -1141,14 +1195,16 @@
             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,
                     dr->type));
         netsnmp_set_row_column(row, dr->column, dr->type, buf, buf_size);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if (dr->writable)
             netsnmp_mark_row_column_writable(row, dr->column, 1);       /* make writable */
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     rc = netsnmp_table_data_add_row(tables->table_set->table, row);
     if (SNMPERR_SUCCESS != rc) {
@@ -1161,6 +1217,64 @@
 }
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_oid_stash_node **
+netsnmp_table_dataset_get_or_create_stash(netsnmp_agent_request_info *reqinfo,
+                                          netsnmp_table_data_set *datatable,
+                                          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;
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_DATASET_GET_NEWROW
+netsnmp_table_row *
+netsnmp_table_dataset_get_newrow(netsnmp_request_info *request,
+                                 netsnmp_agent_request_info *reqinfo,
+                                 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;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATASET_GET_NEWROW */
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 /* ==================================
  *
  * Data Set API: Row operations
@@ -1208,6 +1322,7 @@
     return start;
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 /**
  * marks a given column in a row as writable or not.
  */
@@ -1234,17 +1349,34 @@
         }
         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;
     }
     return SNMPERR_SUCCESS;
 }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /**
- * 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,
@@ -1270,29 +1402,36 @@
 
         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;
 }
 
+
 /* ==================================
  *
  * Data Set API: Index operations
@@ -1310,33 +1449,26 @@
 
 /** adds multiple indexes to a table_dataset helper object.
  *  To end the list, use a 0 after the list of ASN index types. */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_SET_ADD_INDEXES
 void
-#if HAVE_STDARG_H
 netsnmp_table_set_add_indexes(netsnmp_table_data_set *tset,
                               ...)
-#else
-netsnmp_table_set_add_indexes(va_alist)
-     va_dcl
-#endif
 {
     va_list         debugargs;
     int             type;
 
-#if HAVE_STDARG_H
     va_start(debugargs, tset);
-#else
-    netsnmp_table_data_set *tset;
-
-    va_start(debugargs);
-    tset = va_arg(debugargs, netsnmp_table_data_set *);
-#endif
 
     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);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_SET_ADD_INDEXES */
 
+#else /* NETSNMP_FEATURE_REMOVE_TABLE_DATASET */
+netsnmp_feature_unused(table_dataset);
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_DATASET */
 /** @} 
  */
diff --git a/agent/helpers/table_iterator.c b/agent/helpers/table_iterator.c
index e7742ed..8ed5cd0 100644
--- a/agent/helpers/table_iterator.c
+++ b/agent/helpers/table_iterator.c
@@ -84,20 +84,34 @@
 
 #include <net-snmp/net-snmp-config.h>
 
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <net-snmp/agent/table_iterator.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/table.h>
 #include <net-snmp/agent/serialize.h>
-#include <net-snmp/agent/table_iterator.h>
 #include <net-snmp/agent/stash_cache.h>
 
+netsnmp_feature_child_of(table_iterator_all, mib_helpers)
+
+netsnmp_feature_child_of(table_iterator_insert_context, table_iterator_all)
+netsnmp_feature_child_of(table_iterator_create_table, table_iterator_all)
+netsnmp_feature_child_of(table_iterator_row_first, table_iterator_all)
+netsnmp_feature_child_of(table_iterator_row_count, table_iterator_all)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_STASH_CACHE
+netsnmp_feature_require(data_list_get_list_node)
+netsnmp_feature_require(oid_stash_add_data)
+#endif /* NETSNMP_FEATURE_REQUIRE_STASH_CACHE */
+
 /* ==================================
  *
  * Iterator API: Table maintenance
@@ -116,6 +130,7 @@
      *
      * Time will show whether this is a sensible approach or not.
      */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ITERATOR_CREATE_TABLE
 netsnmp_iterator_info *
 netsnmp_iterator_create_table( Netsnmp_First_Data_Point *firstDP,
                                Netsnmp_Next_Data_Point  *nextDP,
@@ -136,7 +151,9 @@
 
     return iinfo;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ITERATOR_CREATE_TABLE */
 
+/** Free the memory that was allocated for a table iterator. */
 void
 netsnmp_iterator_delete_table( netsnmp_iterator_info *iinfo )
 {
@@ -147,6 +164,7 @@
         snmp_free_varbind( iinfo->indexes );
         iinfo->indexes = NULL;
     }
+    netsnmp_table_registration_info_free(iinfo->table_reginfo);
     SNMP_FREE( iinfo );
 }
 
@@ -164,7 +182,37 @@
  *
  * ================================== */
 
-/** returns a netsnmp_mib_handler object for the table_iterator helper */
+static netsnmp_iterator_info *
+netsnmp_iterator_ref(netsnmp_iterator_info *iinfo)
+{
+    iinfo->refcnt++;
+    return iinfo;
+}
+
+static void
+netsnmp_iterator_deref(netsnmp_iterator_info *iinfo)
+{
+    if (--iinfo->refcnt == 0)
+        netsnmp_iterator_delete_table(iinfo);
+}
+
+void netsnmp_handler_owns_iterator_info(netsnmp_mib_handler *h)
+{
+    netsnmp_assert(h);
+    netsnmp_assert(h->myvoid);
+    ((netsnmp_iterator_info *)(h->myvoid))->refcnt++;
+    h->data_clone = (void *(*)(void *))netsnmp_iterator_ref;
+    h->data_free  = (void(*)(void *))netsnmp_iterator_deref;
+}
+
+/**
+ * Returns a netsnmp_mib_handler object for the table_iterator helper.
+ *
+ * The caller remains the owner of the iterator information object if
+ * the flag NETSNMP_HANDLER_OWNS_IINFO has not been set, and the created
+ * handler becomes the owner of the iterator information if the flag
+ * NETSNMP_HANDLER_OWNS_IINFO has been set.
+ */
 netsnmp_mib_handler *
 netsnmp_get_table_iterator_handler(netsnmp_iterator_info *iinfo)
 {
@@ -181,6 +229,8 @@
         return NULL;
 
     me->myvoid = iinfo;
+    if (iinfo->flags & NETSNMP_HANDLER_OWNS_IINFO)
+        netsnmp_handler_owns_iterator_info(me);
     return me;
 }
 
@@ -194,7 +244,11 @@
  *
  * @param reginfo is a pointer to a netsnmp_handler_registration struct
  *
- * @param iinfo is a pointer to a netsnmp_iterator_info struct
+ * @param iinfo A pointer to a netsnmp_iterator_info struct. If the flag
+ * NETSNMP_HANDLER_OWNS_IINFO is not set in iinfo->flags, the caller remains
+ * the owner of this structure. And if the flag NETSNMP_HANDLER_OWNS_IINFO is
+ * set in iinfo->flags, ownership of this data structure is passed to the
+ * handler.
  *
  * @return MIB_REGISTERED_OK is returned if the registration was a success.
  *	Failures are MIB_REGISTRATION_FAILED, MIB_DUPLICATE_REGISTRATION.
@@ -205,7 +259,9 @@
 netsnmp_register_table_iterator(netsnmp_handler_registration *reginfo,
                                 netsnmp_iterator_info *iinfo)
 {
+#ifndef NETSNMP_FEATURE_REMOVE_STASH_CACHE
     reginfo->modes |= HANDLER_CAN_STASH;
+#endif  /* NETSNMP_FEATURE_REMOVE_STASH_CACHE */
     netsnmp_inject_handler(reginfo,
                            netsnmp_get_table_iterator_handler(iinfo));
     if (!iinfo)
@@ -236,6 +292,7 @@
     return netsnmp_request_get_list_data(request, TABLE_ITERATOR_NAME);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ITERATOR_INSERT_CONTEXT
 /** inserts table_iterator specific data for a newly
  *  created row into a request */
 NETSNMP_INLINE void
@@ -300,6 +357,7 @@
         }
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ITERATOR_INSERT_CONTEXT */
 
 #define TI_REQUEST_CACHE "ti_cache"
 
@@ -314,7 +372,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);
@@ -340,11 +398,13 @@
         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) {
         ti_info = SNMP_MALLOC_TYPEDEF(ti_cache_info);
+        if (ti_info == NULL)
+            return NULL;
         netsnmp_request_add_list_data(request,
                                       netsnmp_create_data_list
                                       (TI_REQUEST_CACHE,
@@ -400,15 +460,17 @@
     void           *callback_data_context = NULL;
     ti_cache_info  *ti_info = NULL;
     int             request_count = 0;
+#ifndef NETSNMP_FEATURE_REMOVE_STASH_CACHE
     netsnmp_oid_stash_node **cinfo = NULL;
     netsnmp_variable_list *old_indexes = NULL, *vb;
     netsnmp_table_registration_info *table_reg_info = NULL;
     int i;
     netsnmp_data_list    *ldata = NULL;
-    
+#endif /* NETSNMP_FEATURE_REMOVE_STASH_CACHE */
+
     iinfo = (netsnmp_iterator_info *) handler->myvoid;
     if (!iinfo || !reginfo || !reqinfo)
-        return SNMPERR_GENERR;
+        return SNMP_ERR_GENERR;
 
     tbl_info = iinfo->table_reginfo;
 
@@ -431,12 +493,15 @@
 
     /* preliminary analysis */
     switch (reqinfo->mode) {
+#ifndef NETSNMP_FEATURE_REMOVE_STASH_CACHE
     case MODE_GET_STASH:
         cinfo = netsnmp_extract_stash_cache(reqinfo);
         table_reg_info = netsnmp_find_table_registration_info(reginfo);
 
         /* XXX: move this malloc to stash_cache handler? */
         reqtmp = SNMP_MALLOC_TYPEDEF(netsnmp_request_info);
+        if (reqtmp == NULL)
+            return SNMP_ERR_GENERR;
         reqtmp->subtree = requests->subtree;
         table_info = netsnmp_extract_table_info(requests);
         netsnmp_request_add_list_data(reqtmp,
@@ -447,12 +512,21 @@
         /* remember the indexes that were originally parsed. */
         old_indexes = table_info->indexes;
         break;
+#endif /* NETSNMP_FEATURE_REMOVE_STASH_CACHE */
 
     case MODE_GETNEXT:
         for(request = requests ; request; request = request->next) {
             if (request->processed)
                 continue;
             table_info = netsnmp_extract_table_info(request);
+            if (table_info == NULL) {
+                /*
+                 * Cleanup 
+                 */
+                if (free_this_index_search)
+                    snmp_free_varbind(free_this_index_search);
+                return SNMP_ERR_GENERR;
+            }
             if (table_info->colnum < tbl_info->min_column - 1) {
                 /* XXX: optimize better than this */
                 /* for now, just increase to colnum-1 */
@@ -463,10 +537,18 @@
                 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);
+                if (ti_info == NULL) {
+                    /*
+                     * Cleanup 
+                     */
+                    if (free_this_index_search)
+                        snmp_free_varbind(free_this_index_search);
+                    return SNMP_ERR_GENERR;
+                }
                 netsnmp_request_add_list_data(request,
                                               netsnmp_create_data_list
                                               (TI_REQUEST_CACHE,
@@ -484,8 +566,11 @@
      */
     if (reqinfo->mode == MODE_GET ||
         reqinfo->mode == MODE_GETNEXT ||
-        reqinfo->mode == MODE_GET_STASH ||
-        reqinfo->mode == MODE_SET_RESERVE1) {
+        reqinfo->mode == MODE_GET_STASH
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        || reqinfo->mode == MODE_SET_RESERVE1
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+        ) {
         /*
          * Count the number of request in the list,
          *   so that we'll know when we're finished
@@ -555,27 +640,53 @@
                     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) {
+                        /*
+                         * Cleanup 
+                         */
+                        if (free_this_index_search)
+                            snmp_free_varbind(free_this_index_search);
+                        netsnmp_free_request_data_sets(reqtmp);
+                        SNMP_FREE(reqtmp);
+                        return SNMP_ERR_GENERR;
+                    }
                     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) {
                     case MODE_GET:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
                     case MODE_SET_RESERVE1:
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
                         /* looking for exact matches */
                         build_oid_noalloc(myname, MAX_OID_LEN, &myname_len,
                                           coloid, coloid_len, index_search);
                         if (snmp_oid_compare(myname, myname_len,
                                              request->requestvb->name,
                                              request->requestvb->name_length) == 0) {
-                            /* keep this */
-                            netsnmp_iterator_remember(request,
-                                                      myname, myname_len,
-                                                      callback_data_context,
-                                                      callback_loop_context, iinfo);
+                            /* 
+                             * keep this
+                             */
+                            if (netsnmp_iterator_remember(request,
+                                                          myname,
+                                                          myname_len,
+                                                          callback_data_context,
+                                                          callback_loop_context,
+                                                          iinfo) == NULL) {
+                                /*
+                                 * Cleanup 
+                                 */
+                                if (free_this_index_search)
+                                    snmp_free_varbind
+                                        (free_this_index_search);
+                                netsnmp_free_request_data_sets(reqtmp);
+                                SNMP_FREE(reqtmp);
+                                return SNMP_ERR_GENERR;
+                            }
                             request_count--;   /* One less to look for */
                         } else {
                             if (iinfo->free_data_context && callback_data_context) {
@@ -585,6 +696,7 @@
                         }
                         break;
 
+#ifndef NETSNMP_FEATURE_REMOVE_STASH_CACHE
                     case MODE_GET_STASH:
                         /* collect data for each column for every row */
                         build_oid_noalloc(myname, MAX_OID_LEN, &myname_len,
@@ -612,6 +724,15 @@
                             table_info->colnum = i;
                             vb = reqtmp->requestvb =
                                 SNMP_MALLOC_TYPEDEF(netsnmp_variable_list);
+                            if (vb == NULL) {
+                                /*
+                                 * Cleanup 
+                                 */
+                                if (free_this_index_search)
+                                    snmp_free_varbind
+                                        (free_this_index_search);
+                                return SNMP_ERR_GENERR;
+                            }
                             vb->type = ASN_NULL;
                             snmp_set_var_objid(vb, myname, myname_len);
                             netsnmp_call_next_handler(handler, reginfo,
@@ -627,17 +748,30 @@
                         }
                         reqinfo->mode = MODE_GET_STASH;
                         break;
+#endif  /* NETSNMP_FEATURE_REMOVE_STASH_CACHE */
 
                     case MODE_GETNEXT:
                         /* looking for "next" matches */
                         if (netsnmp_check_getnext_reply
                             (request, coloid, coloid_len, index_search,
                              &ti_info->results)) {
-                            netsnmp_iterator_remember(request,
-                                                      ti_info->results->name,
-                                                      ti_info->results->name_length,
-                                                      callback_data_context,
-                                                      callback_loop_context, iinfo);
+                            if (netsnmp_iterator_remember(request,
+                                                          ti_info->
+                                                          results->name,
+                                                          ti_info->
+                                                          results->
+                                                          name_length,
+                                                          callback_data_context,
+                                                          callback_loop_context,
+                                                          iinfo) == NULL) {
+                                /*
+                                 * Cleanup 
+                                 */
+                                if (free_this_index_search)
+                                    snmp_free_varbind
+                                        (free_this_index_search);
+                                return SNMP_ERR_GENERR;
+                            }
                             /*
                              *  If we've been told that the rows are sorted,
                              *   then the first valid one we find
@@ -654,12 +788,14 @@
                         }
                         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
                     case MODE_SET_RESERVE2:
                     case MODE_SET_FREE:
                     case MODE_SET_UNDO:
                     case MODE_SET_COMMIT:
                         /* needed processing already done in RESERVE1 */
                         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
                     default:
                         snmp_log(LOG_ERR,
@@ -697,7 +833,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) {
@@ -722,13 +858,16 @@
     }
 
     if (reqinfo->mode == MODE_GET ||
-        reqinfo->mode == MODE_GETNEXT ||
-        reqinfo->mode == MODE_SET_RESERVE1) {
+        reqinfo->mode == MODE_GETNEXT
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        || reqinfo->mode == MODE_SET_RESERVE1
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+        ) {
         /* per request last minute processing */
         for(request = requests ; request; request = request->next) {
             if (request->processed)
                 continue;
-            ti_info =
+            ti_info = (ti_cache_info*)
                 netsnmp_request_get_list_data(request, TI_REQUEST_CACHE);
             table_info =
                 netsnmp_extract_table_info(request);
@@ -759,7 +898,9 @@
                 /* FALL THROUGH */
 
             case MODE_GET:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             case MODE_SET_RESERVE1:
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
                 if (ti_info->data_context)
                     /* we don't add a free pointer, since it's in the
                        TI_REQUEST_CACHE instead */
@@ -782,10 +923,12 @@
         if (reqinfo->mode == MODE_GETNEXT) {
             reqinfo->mode = MODE_GET;
         }
+#ifndef NETSNMP_FEATURE_REMOVE_STASH_CACHE
     } else if (reqinfo->mode == MODE_GET_STASH) {
         netsnmp_free_request_data_sets(reqtmp);
         SNMP_FREE(reqtmp);
         table_info->indexes = old_indexes;
+#endif  /* NETSNMP_FEATURE_REMOVE_STASH_CACHE */
     }
 
 
@@ -816,6 +959,7 @@
  *
  * ================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ITERATOR_ROW_FIRST
 void *
 netsnmp_iterator_row_first( netsnmp_iterator_info *iinfo ) {
     netsnmp_variable_list *vp1, *vp2;
@@ -834,6 +978,7 @@
     snmp_free_varbind( vp1 );
     return ctx2;  /* or *ctx2 ?? */
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ITERATOR_ROW_FIRST */
 
 void *
 netsnmp_iterator_row_get( netsnmp_iterator_info *iinfo, void *row )
@@ -945,7 +1090,7 @@
 
     vp1 = snmp_clone_varbind(iinfo->indexes);
     vp2 = iinfo->get_first_data_point( &ctx1, &ctx2, vp1, iinfo );
-    DEBUGMSGTL(("table:iterator:get", "first DP: %x %x %x\n",
+    DEBUGMSGTL(("table:iterator:get", "first DP: %p %p %p\n",
                                        ctx1, ctx2, vp2));
 
     /* XXX - free context ? */
@@ -964,7 +1109,7 @@
         }
         
         vp2 = iinfo->get_next_data_point( &ctx1, &ctx2, vp2, iinfo );
-        DEBUGMSGTL(("table:iterator:get", "next DP: %x %x %x\n",
+        DEBUGMSGTL(("table:iterator:get", "next DP: %p %p %p\n",
                                            ctx1, ctx2, vp2));
         /* XXX - free context ? */
     }
@@ -994,7 +1139,7 @@
 
     vp1 = snmp_clone_varbind(iinfo->indexes);
     vp2 = iinfo->get_first_data_point( &ctx1, &ctx2, vp1, iinfo );
-    DEBUGMSGTL(("table:iterator:get", "first DP: %x %x %x\n",
+    DEBUGMSGTL(("table:iterator:get", "first DP: %p %p %p\n",
                                        ctx1, ctx2, vp2));
 
     if ( !instance || !len ) {
@@ -1031,7 +1176,7 @@
         }
         
         vp2 = iinfo->get_next_data_point( &ctx1, &ctx2, vp2, iinfo );
-        DEBUGMSGTL(("table:iterator:get", "next DP: %x %x %x\n",
+        DEBUGMSGTL(("table:iterator:get", "next DP: %p %p %p\n",
                                            ctx1, ctx2, vp2));
         /* XXX - free context ? */
     }
@@ -1042,6 +1187,7 @@
     return ( vp2 ? ctx2 : NULL );
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ITERATOR_ROW_COUNT
 int
 netsnmp_iterator_row_count( netsnmp_iterator_info *iinfo )
 {
@@ -1060,7 +1206,7 @@
         return 0;
     }
     
-    DEBUGMSGTL(("table:iterator:count", "first DP: %x %x %x\n",
+    DEBUGMSGTL(("table:iterator:count", "first DP: %p %p %p\n",
                                          ctx1, ctx2, vp2));
 
     /* XXX - free context ? */
@@ -1068,7 +1214,7 @@
     while (vp2) {
         i++;
         vp2 = iinfo->get_next_data_point( &ctx1, &ctx2, vp2, iinfo );
-        DEBUGMSGTL(("table:iterator:count", "next DP: %x %x %x (%d)\n",
+        DEBUGMSGTL(("table:iterator:count", "next DP: %p %p %p (%d)\n",
                                              ctx1, ctx2, vp2, i));
         /* XXX - free context ? */
     }
@@ -1077,6 +1223,7 @@
     snmp_free_varbind( vp1 );
     return i;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ITERATOR_ROW_COUNT */
 
 
 /* ==================================
diff --git a/agent/helpers/table_row.c b/agent/helpers/table_row.c
index 7c8a4c4..2a33f23 100644
--- a/agent/helpers/table_row.c
+++ b/agent/helpers/table_row.c
@@ -8,6 +8,7 @@
 #define TABLE_ROW_DATA  "table_row"
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_STRING_H
 #include <string.h>
@@ -23,6 +24,11 @@
 #include <net-snmp/library/container.h>
 #include <net-snmp/library/snmp_assert.h>
 
+netsnmp_feature_child_of(table_row_all, mib_helpers)
+
+netsnmp_feature_child_of(table_row_extract, table_row_all)
+
+
 /*
  * snmp.h:#define SNMP_MSG_INTERNAL_SET_BEGIN        -1 
  * snmp.h:#define SNMP_MSG_INTERNAL_SET_RESERVE1     0 
@@ -136,7 +142,7 @@
                       MAX_OID_LEN-row_oid_len, &len, NULL, 0, index);
     row_oid_len += len;
     free(reginfo->rootoid);
-    reginfo->rootoid = netsnmp_memdup(row_oid, row_oid_len * sizeof(oid));
+    reginfo->rootoid = snmp_duplicate_objid(row_oid, row_oid_len);
     reginfo->rootoid_len = row_oid_len;
 
      
@@ -154,11 +160,13 @@
 
 
 /** return the row data structure supplied to the table_row helper */
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_ROW_EXTRACT
 void *
 netsnmp_table_row_extract(netsnmp_request_info *request)
 {
     return netsnmp_request_get_list_data(request, TABLE_ROW_DATA);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_ROW_EXTRACT */
 /** @cond */
 
 /**********************************************************************
diff --git a/agent/helpers/table_tdata.c b/agent/helpers/table_tdata.c
index 46d3e18..8865084 100644
--- a/agent/helpers/table_tdata.c
+++ b/agent/helpers/table_tdata.c
@@ -1,4 +1,10 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <net-snmp/agent/table_tdata.h>
 
 #if HAVE_STRING_H
 #include <string.h>
@@ -6,11 +12,7 @@
 #include <strings.h>
 #endif
 
-#include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/agent/net-snmp-agent-includes.h>
-
 #include <net-snmp/agent/table.h>
-#include <net-snmp/agent/table_tdata.h>
 #include <net-snmp/agent/table_container.h>
 #include <net-snmp/agent/read_only.h>
 
@@ -18,6 +20,22 @@
 #include <dmalloc.h>
 #endif
 
+netsnmp_feature_child_of(table_tdata_all, mib_helpers)
+netsnmp_feature_child_of(table_tdata, table_tdata_all)
+netsnmp_feature_child_of(table_tdata_delete_table, table_tdata_all)
+netsnmp_feature_child_of(table_tdata_extract_table, table_tdata_all)
+netsnmp_feature_child_of(table_tdata_remove_row, table_tdata_all)
+netsnmp_feature_child_of(table_tdata_insert_row, table_tdata_all)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_TABLE_TDATA
+netsnmp_feature_require(table_container_row_insert)
+#ifdef NETSNMP_FEATURE_REQUIRE_TABLE_TDATA_REMOVE_ROW
+netsnmp_feature_require(table_container_row_remove)
+#endif /* NETSNMP_FEATURE_REQUIRE_TABLE_TDATA_REMOVE_ROW */
+#endif /* NETSNMP_FEATURE_REQUIRE_TABLE_TDATA */
+
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_TDATA
+
 /** @defgroup tdata tdata
  *  Implement a table with datamatted storage.
  *  @ingroup table
@@ -57,12 +75,21 @@
     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;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_TDATA_DELETE_TABLE
 /** creates and returns a 'tdata' table data structure */
 void
 netsnmp_tdata_delete_table(netsnmp_tdata *table)
@@ -78,6 +105,7 @@
     SNMP_FREE(table);
     return;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_TDATA_DELETE_TABLE */
 
 /** creates and returns a pointer to new row data structure */
 netsnmp_tdata_row *
@@ -88,6 +116,8 @@
 }
 
 /** clones a 'tdata' row. DOES NOT CLONE THE TABLE-SPECIFIC ENTRY DATA. */
+netsnmp_feature_child_of(tdata_clone_row, table_tdata_all)
+#ifndef NETSNMP_FEATURE_REMOVE_TDATA_CLONE_ROW
 netsnmp_tdata_row *
 netsnmp_tdata_clone_row(netsnmp_tdata_row *row)
 {
@@ -108,8 +138,8 @@
     }
 
     if (row->oid_index.oids) {
-        newrow->oid_index.oids = netsnmp_memdup(row->oid_index.oids,
-                                              row->oid_index.len * sizeof(oid));
+        newrow->oid_index.oids =
+            snmp_duplicate_objid(row->oid_index.oids, row->oid_index.len);
         if (!newrow->oid_index.oids) {
             if (newrow->indexes)
                 snmp_free_varbind(newrow->indexes);
@@ -120,9 +150,12 @@
 
     return newrow;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDATA_CLONE_ROW */
 
 /** copy the contents of a 'tdata' row.
     DOES NOT COPY THE TABLE-SPECIFIC ENTRY DATA. */
+netsnmp_feature_child_of(tdata_copy_row, table_tdata_all)
+#ifndef NETSNMP_FEATURE_REMOVE_TDATA_COPY_ROW
 int
 netsnmp_tdata_copy_row(netsnmp_tdata_row *dst_row, netsnmp_tdata_row *src_row)
 {
@@ -138,14 +171,15 @@
     }
 
     if (src_row->oid_index.oids) {
-        dst_row->oid_index.oids = netsnmp_memdup(src_row->oid_index.oids,
-                                          src_row->oid_index.len * sizeof(oid));
+        dst_row->oid_index.oids = snmp_duplicate_objid(src_row->oid_index.oids,
+                                                       src_row->oid_index.len);
         if (!dst_row->oid_index.oids)
             return -1;
     }
 
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDATA_COPY_ROW */
 
 /** deletes the memory used by the specified row
  *  returns the table-specific entry data
@@ -213,13 +247,17 @@
     /*
      * add this row to the stored table
      */
-    CONTAINER_INSERT( table->container, row );
-    DEBUGMSGTL(("tdata_add_row", "added row (%x)\n", row));
+    if (CONTAINER_INSERT( table->container, row ) != 0)
+        return SNMPERR_GENERR;
+
+    DEBUGMSGTL(("tdata_add_row", "added row (%p)\n", row));
 
     return SNMPERR_SUCCESS;
 }
 
 /** swaps out origrow with newrow.  This does *not* delete/free anything! */
+netsnmp_feature_child_of(tdata_replace_row, table_tdata_all)
+#ifndef NETSNMP_FEATURE_REMOVE_TDATA_REPLACE_ROW
 void
 netsnmp_tdata_replace_row(netsnmp_tdata *table,
                                netsnmp_tdata_row *origrow,
@@ -228,6 +266,7 @@
     netsnmp_tdata_remove_row(table, origrow);
     netsnmp_tdata_add_row(table, newrow);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDATA_REPLACE_ROW */
 
 /**
  * removes a row from the given table and returns it (no free's called)
@@ -315,20 +354,34 @@
     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 */
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         for (request = requests; request; request = request->next) {
             if (request->processed)
                 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));
@@ -336,6 +389,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' */
@@ -354,6 +410,17 @@
                   table->container, TABLE_CONTAINER_KEY_NETSNMP_INDEX);
 }
 
+netsnmp_feature_child_of(tdata_unregister, table_tdata_all)
+#ifndef NETSNMP_FEATURE_REMOVE_TDATA_UNREGISTER
+int
+netsnmp_tdata_unregister(netsnmp_handler_registration    *reginfo)
+{
+    /* free table; */
+    return netsnmp_container_table_unregister(reginfo);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_TDATA_UNREGISTER */
+
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_TDATA_EXTRACT_TABLE
 /** extracts the tdata table from the request structure */
 netsnmp_tdata *
 netsnmp_tdata_extract_table(netsnmp_request_info *request)
@@ -361,15 +428,19 @@
     return (netsnmp_tdata *) netsnmp_request_get_list_data(request,
                                                            TABLE_TDATA_TABLE);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_TDATA_EXTRACT_TABLE */
 
 /** extracts the tdata container from the request structure */
+netsnmp_feature_child_of(tdata_extract_container, table_tdata_all)
+#ifndef NETSNMP_FEATURE_REMOVE_TDATA_EXTRACT_CONTAINER
 netsnmp_container *
 netsnmp_tdata_extract_container(netsnmp_request_info *request)
 {
-    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 );
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDATA_EXTRACT_CONTAINER */
 
 /** extracts the tdata row being accessed from the request structure */
 netsnmp_tdata_row *
@@ -391,6 +462,7 @@
         return NULL;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_TDATA_INSERT_ROW
 /** inserts a newly created tdata row into a request */
 NETSNMP_INLINE void
 netsnmp_insert_tdata_row(netsnmp_request_info *request,
@@ -398,6 +470,17 @@
 {
     netsnmp_container_table_row_insert(request, (netsnmp_index *)row);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_TDATA_INSERT_ROW */
+
+#ifndef NETSNMP_FEATURE_REMOVE_TABLE_TDATA_REMOVE_ROW
+/** inserts a newly created tdata row into a request */
+NETSNMP_INLINE void
+netsnmp_remove_tdata_row(netsnmp_request_info *request,
+                         netsnmp_tdata_row *row)
+{
+    netsnmp_container_table_row_remove(request, (netsnmp_index *)row);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_TDATA_REMOVE_ROW */
 
 
 /* ==================================
@@ -428,7 +511,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 */
@@ -463,7 +546,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
@@ -492,9 +575,11 @@
 
     index.oids = searchfor;
     index.len  = searchfor_len;
-    return CONTAINER_NEXT( table->container, &index );
+    return (netsnmp_tdata_row*)CONTAINER_NEXT( table->container, &index );
 }
 
+netsnmp_feature_child_of(tdata_row_count, table_tdata_all)
+#ifndef NETSNMP_FEATURE_REMOVE_TDATA_ROW_COUNT
 int
 netsnmp_tdata_row_count(netsnmp_tdata *table)
 {
@@ -502,6 +587,7 @@
         return 0;
     return CONTAINER_SIZE( table->container );
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDATA_ROW_COUNT */
 
 /* ==================================
  *
@@ -511,6 +597,8 @@
 
 
 /** compare a row with the given index values */
+netsnmp_feature_child_of(tdata_compare_idx, table_tdata_all)
+#ifndef NETSNMP_FEATURE_REMOVE_TDATA_COMPARE_IDX
 int
 netsnmp_tdata_compare_idx(netsnmp_tdata_row     *row,
                           netsnmp_variable_list *indexes)
@@ -522,6 +610,7 @@
                       indexes);
     return netsnmp_tdata_compare_oid(row, searchfor, searchfor_len);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDATA_COMPARE_IDX */
 
 /** compare a row with the given index OID */
 int
@@ -553,6 +642,10 @@
     return snmp_oidtree_compare( index->oids, index->len,
                                  compareto,   compareto_len);
 }
+#else /* NETSNMP_FEATURE_REMOVE_TABLE_TDATA */
+netsnmp_feature_unused(table_tdata);
+#endif /* NETSNMP_FEATURE_REMOVE_TABLE_TDATA */
+
 
 /** @} 
  */
diff --git a/agent/helpers/watcher.c b/agent/helpers/watcher.c
index 9cbb4d3..9b3933b 100644
--- a/agent/helpers/watcher.c
+++ b/agent/helpers/watcher.c
@@ -1,19 +1,38 @@
 #include <net-snmp/net-snmp-config.h>
-
-#include <stdlib.h>
-#if HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
+#include <net-snmp/net-snmp-features.h>
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 #include <net-snmp/agent/watcher.h>
+
 #include <net-snmp/agent/instance.h>
 #include <net-snmp/agent/scalar.h>
 
+#include <string.h>
+
+#ifdef HAVE_DMALLOC_H
+static void free_wrapper(void * p)
+{
+    free(p);
+}
+#else
+#define free_wrapper free
+#endif
+
+netsnmp_feature_provide(watcher_all)
+netsnmp_feature_child_of(watcher_all, mib_helpers)
+netsnmp_feature_child_of(watcher_create_info6, watcher_all)
+netsnmp_feature_child_of(watcher_register_timestamp, watcher_all)
+netsnmp_feature_child_of(watcher_ulong_scalar, watcher_all)
+netsnmp_feature_child_of(watcher_read_only_ulong_scalar, watcher_all)
+netsnmp_feature_child_of(watcher_read_only_int_scalar, watcher_all)
+netsnmp_feature_child_of(watcher_long_scalar, watcher_all)
+netsnmp_feature_child_of(watcher_read_only_long_scalar, watcher_all)
+netsnmp_feature_child_of(watcher_int_scalar, watcher_all)
+netsnmp_feature_child_of(read_only_counter32_scalar, watcher_all)
+netsnmp_feature_child_of(watcher_spinlock, watcher_all)
+
 /** @defgroup watcher watcher
  *  Watch a specified variable and process it as an instance or scalar object
  *  @ingroup leaf
@@ -33,22 +52,57 @@
 }
 
 netsnmp_watcher_info *
-netsnmp_create_watcher_info(void *data, size_t size, u_char type, int flags)
+netsnmp_init_watcher_info6(netsnmp_watcher_info *winfo,
+                           void *data, size_t size, u_char type,
+                           int flags, size_t max_size, size_t* size_p)
 {
-    netsnmp_watcher_info *winfo = SNMP_MALLOC_TYPEDEF(netsnmp_watcher_info);
-
-    winfo->data      = data;
+    winfo->data = data;
     winfo->data_size = size;
-    winfo->max_size  = size;	/* Probably wrong for non-fixed size data */
-    winfo->type      = type;
-    if (flags)
-        winfo->flags = flags;
-    else
-        winfo->flags = WATCHER_FIXED_SIZE;
-
+    winfo->max_size = max_size;
+    winfo->type = type;
+    winfo->flags = flags;
+    winfo->data_size_p = size_p;
     return winfo;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_CREATE_INFO6
+netsnmp_watcher_info *
+netsnmp_create_watcher_info6(void *data, size_t size, u_char type,
+                             int flags, size_t max_size, size_t* size_p)
+{
+    netsnmp_watcher_info *winfo = SNMP_MALLOC_TYPEDEF(netsnmp_watcher_info);
+    if (winfo)
+        netsnmp_init_watcher_info6(winfo, data, size, type, flags, max_size,
+                                   size_p);
+    return winfo;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_CREATE_INFO6 */
+
+netsnmp_watcher_info *
+netsnmp_init_watcher_info(netsnmp_watcher_info *winfo,
+                          void *data, size_t size, u_char type, int flags)
+{
+  return netsnmp_init_watcher_info6(winfo, data, size,
+				    type, (flags ? flags : WATCHER_FIXED_SIZE),
+				    size,  /* Probably wrong for non-fixed
+					    * size data */
+				    NULL);
+}
+
+netsnmp_watcher_info *
+netsnmp_create_watcher_info(void *data, size_t size, u_char type, int flags)
+{
+    netsnmp_watcher_info *winfo = SNMP_MALLOC_TYPEDEF(netsnmp_watcher_info);
+    if (winfo)
+        netsnmp_init_watcher_info(winfo, data, size, type, flags);
+    return winfo;
+}
+
+/**
+ * Register a watched scalar. The caller remains the owner of watchinfo.
+ *
+ * @see netsnmp_register_watched_instance2()
+ */
 int
 netsnmp_register_watched_instance(netsnmp_handler_registration *reginfo,
                                   netsnmp_watcher_info         *watchinfo)
@@ -62,6 +116,30 @@
     return netsnmp_register_instance(reginfo);
 }
 
+/**
+ * Register a watched scalar. Ownership of watchinfo is transferred to the handler.
+ *
+ * @see netsnmp_register_watched_instance()
+ */
+int
+netsnmp_register_watched_instance2(netsnmp_handler_registration *reginfo,
+				   netsnmp_watcher_info         *watchinfo)
+{
+    netsnmp_mib_handler *whandler;
+
+    whandler         = netsnmp_get_watcher_handler();
+    whandler->myvoid = (void *)watchinfo;
+    netsnmp_owns_watcher_info(whandler);
+
+    netsnmp_inject_handler(reginfo, whandler);
+    return netsnmp_register_instance(reginfo);
+}
+
+/**
+ * Register a watched scalar. The caller remains the owner of watchinfo.
+ *
+ * @see netsnmp_register_watched_scalar2()
+ */
 int
 netsnmp_register_watched_scalar(netsnmp_handler_registration *reginfo,
                                   netsnmp_watcher_info         *watchinfo)
@@ -75,7 +153,87 @@
     return netsnmp_register_scalar(reginfo);
 }
 
+/**
+ * Register a watched scalar. Ownership of watchinfo is transferred to the handler.
+ *
+ * @see netsnmp_register_watched_scalar()
+ */
+int
+netsnmp_register_watched_scalar2(netsnmp_handler_registration *reginfo,
+                                  netsnmp_watcher_info         *watchinfo)
+{
+    netsnmp_mib_handler *whandler;
 
+    whandler         = netsnmp_get_watcher_handler();
+    whandler->myvoid = (void *)watchinfo;
+    netsnmp_owns_watcher_info(whandler);
+
+    netsnmp_inject_handler(reginfo, whandler);
+    return netsnmp_register_scalar(reginfo);
+}
+
+void
+netsnmp_owns_watcher_info(netsnmp_mib_handler *handler)
+{
+    netsnmp_assert(handler);
+    netsnmp_assert(handler->myvoid);
+    handler->data_clone = (void *(*)(void *))netsnmp_clone_watcher_info;
+    handler->data_free = free;
+}
+
+/** @cond */
+
+NETSNMP_STATIC_INLINE size_t
+get_data_size(const netsnmp_watcher_info* winfo)
+{
+    if (winfo->flags & WATCHER_SIZE_STRLEN)
+        return strlen((const char*)winfo->data);
+    else {
+        size_t res;
+        if (winfo->flags & WATCHER_SIZE_IS_PTR)
+            res = *winfo->data_size_p;
+        else
+            res = winfo->data_size;
+        if (winfo->flags & WATCHER_SIZE_UNIT_OIDS)
+          res *= sizeof(oid);
+        return res;
+    }
+}
+
+NETSNMP_STATIC_INLINE void
+set_data(netsnmp_watcher_info* winfo, void* data, size_t size)
+{
+    memcpy(winfo->data, data, size);
+    if (winfo->flags & WATCHER_SIZE_STRLEN)
+        ((char*)winfo->data)[size] = '\0';
+    else {
+        if (winfo->flags & WATCHER_SIZE_UNIT_OIDS)
+          size /= sizeof(oid);
+        if (winfo->flags & WATCHER_SIZE_IS_PTR)
+            *winfo->data_size_p = size;
+        else
+            winfo->data_size = size;
+    }
+}
+
+typedef struct {
+    size_t size;
+    char data[1];
+} netsnmp_watcher_cache;
+
+NETSNMP_STATIC_INLINE netsnmp_watcher_cache*
+netsnmp_watcher_cache_create(const void* data, size_t size)
+{
+    netsnmp_watcher_cache *res = (netsnmp_watcher_cache*)
+        malloc(sizeof(netsnmp_watcher_cache) + size - 1);
+    if (res) {
+        res->size = size;
+        memcpy(res->data, data, size);
+    }
+    return res;
+}
+
+/** @endcond */
 
 int
 netsnmp_watcher_helper_handler(netsnmp_mib_handler *handler,
@@ -83,8 +241,8 @@
                                netsnmp_agent_request_info *reqinfo,
                                netsnmp_request_info *requests)
 {
-    netsnmp_watcher_info *winfo = (netsnmp_watcher_info *) handler->myvoid;
-    u_char              *old_data;
+    netsnmp_watcher_info  *winfo = (netsnmp_watcher_info *) handler->myvoid;
+    netsnmp_watcher_cache *old_data;
 
     DEBUGMSGTL(("helper:watcher", "Got request:  %d\n", reqinfo->mode));
     DEBUGMSGTL(( "helper:watcher", "  oid:"));
@@ -100,26 +258,28 @@
         snmp_set_var_typed_value(requests->requestvb,
                                  winfo->type,
                                  winfo->data,
-                                 winfo->data_size);
+                                 get_data_size(winfo));
         break;
 
         /*
          * SET requests.  Should only get here if registered RWRITE 
          */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         if (requests->requestvb->type != winfo->type) {
-            netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_WRONGTYPE);
+            netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);
             handler->flags |= MIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE;
-        }
-
-        if (((winfo->flags & WATCHER_MAX_SIZE) &&
-               requests->requestvb->val_len >  winfo->max_size) ||
+        } else if (((winfo->flags & WATCHER_MAX_SIZE) &&
+                     requests->requestvb->val_len > winfo->max_size) ||
             ((winfo->flags & WATCHER_FIXED_SIZE) &&
-               requests->requestvb->val_len != winfo->data_size)) {
-             netsnmp_set_request_error(reqinfo, requests,
-                                      SNMP_ERR_WRONGLENGTH);
-             handler->flags |= MIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE;
+                requests->requestvb->val_len != get_data_size(winfo))) {
+            netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGLENGTH);
+            handler->flags |= MIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE;
+        } else if ((winfo->flags & WATCHER_SIZE_STRLEN) &&
+            (memchr(requests->requestvb->val.string, '\0',
+                requests->requestvb->val_len) != NULL)) {
+            netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGVALUE);
+            handler->flags |= MIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE;
         }
         break;
 
@@ -127,16 +287,16 @@
         /*
          * store old info for undo later 
          */
-        old_data = netsnmp_memdup(winfo->data, winfo->data_size);
+        old_data =
+            netsnmp_watcher_cache_create(winfo->data, get_data_size(winfo));
         if (old_data == NULL) {
             netsnmp_set_request_error(reqinfo, requests,
                                       SNMP_ERR_RESOURCEUNAVAILABLE);
             handler->flags |= MIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE;
-            return SNMP_ERR_NOERROR;
-        }
-        netsnmp_request_add_list_data(requests,
-                                      netsnmp_create_data_list
-                                      ("watcher", old_data, free));
+        } else
+            netsnmp_request_add_list_data(requests,
+                                          netsnmp_create_data_list
+                                          ("watcher", old_data, &free_wrapper));
         break;
 
     case MODE_SET_FREE:
@@ -149,19 +309,23 @@
         /*
          * update current 
          */
-        memcpy(winfo->data, (void *)requests->requestvb->val.string,
-                                    requests->requestvb->val_len);
+        set_data(winfo, (void *)requests->requestvb->val.string,
+                                requests->requestvb->val_len);
         break;
 
     case MODE_SET_UNDO:
-        memcpy(winfo->data,
-               netsnmp_request_get_list_data(requests, "watcher"),
-               winfo->data_size);
+        old_data = (netsnmp_watcher_cache*)netsnmp_request_get_list_data(requests, "watcher");
+        set_data(winfo, old_data->data, old_data->size);
         break;
 
     case MODE_SET_COMMIT:
-        winfo->data_size = requests->requestvb->val_len;
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+    default:
+        snmp_log(LOG_ERR, "watcher handler called with an unknown mode: %d\n",
+                 reqinfo->mode);
+        return SNMP_ERR_GENERR;
 
     }
 
@@ -200,6 +364,7 @@
     return netsnmp_register_scalar(reginfo);   /* XXX - or instance? */
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_REGISTER_TIMESTAMP
 int
 netsnmp_register_watched_timestamp(netsnmp_handler_registration *reginfo,
                                    marker_t timestamp)
@@ -210,6 +375,7 @@
 
     return netsnmp_watched_timestamp_register(whandler, reginfo, timestamp);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_REGISTER_TIMESTAMP */
 
 
 int
@@ -247,11 +413,13 @@
          * Timestamps are inherently Read-Only,
          *  so don't need to support SET requests.
          */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         netsnmp_set_request_error(reqinfo, requests,
                                   SNMP_ERR_NOTWRITABLE);
         handler->flags |= MIB_HANDLER_AUTO_NEXT_OVERRIDE_ONCE;
         return SNMP_ERR_NOTWRITABLE;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     }
 
     /* next handler called automatically - 'AUTO_NEXT' */
@@ -265,6 +433,8 @@
      *
      ***************************/
 
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_SPINLOCK
+
 netsnmp_mib_handler *
 netsnmp_get_watched_spinlock_handler(void)
 {
@@ -290,7 +460,7 @@
     winfo            = netsnmp_create_watcher_info((void *)spinlock,
 		           sizeof(int), ASN_INTEGER, WATCHER_FIXED_SIZE);
     netsnmp_inject_handler(reginfo, whandler);
-    return netsnmp_register_watched_scalar(reginfo, winfo);
+    return netsnmp_register_watched_scalar2(reginfo, winfo);
 }
 
 
@@ -314,6 +484,7 @@
         /*
          * Ensure the assigned value matches the current one
          */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         for (request=requests; request; request=request->next) {
             if (request->processed)
@@ -334,11 +505,13 @@
     case MODE_SET_COMMIT:
 	(*spinlock)++;
 	break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     }
 
     /* next handler called automatically - 'AUTO_NEXT' */
     return SNMP_ERR_NOERROR;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_SPINLOCK */
 
     /***************************
      *
@@ -347,118 +520,142 @@
      *
      ***************************/
 
+netsnmp_watcher_info *
+netsnmp_clone_watcher_info(netsnmp_watcher_info *winfo)
+{
+    netsnmp_watcher_info *copy = malloc(sizeof(*copy));
+    if (copy)
+	*copy = *winfo;
+    return copy;
+}
+
+static int
+register_scalar_watcher(const char* name,
+                        const oid* reg_oid, size_t reg_oid_len,
+                        void *data, size_t size, u_char type,
+                        Netsnmp_Node_Handler * subhandler, int mode)
+{
+    netsnmp_handler_registration *reginfo = NULL;
+    netsnmp_mib_handler *whandler = NULL;
+    netsnmp_watcher_info* watchinfo =
+        netsnmp_create_watcher_info(data, size, type, WATCHER_FIXED_SIZE);
+    if (watchinfo)
+        whandler = netsnmp_get_watcher_handler();
+    if (watchinfo && whandler) {
+        whandler->myvoid = watchinfo;
+	netsnmp_owns_watcher_info(whandler);
+        reginfo =
+            netsnmp_create_handler_registration(
+                name, subhandler, reg_oid, reg_oid_len, mode);
+    }
+    if (watchinfo && whandler && reginfo) {
+        netsnmp_inject_handler(reginfo, whandler);
+        return netsnmp_register_scalar(reginfo);
+    }
+    if (whandler)
+        netsnmp_handler_free(whandler);
+    else if (watchinfo)
+        free(watchinfo);
+    return SNMP_ERR_RESOURCEUNAVAILABLE;
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_ULONG_SCALAR
 int
 netsnmp_register_ulong_scalar(const char *name,
-                              oid * reg_oid, size_t reg_oid_len,
+                              const oid * reg_oid, size_t reg_oid_len,
                               u_long * it,
                               Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_scalar(
-               netsnmp_create_handler_registration(
-                   name, subhandler,
-                   reg_oid, reg_oid_len,
-                   HANDLER_CAN_RWRITE ),
-               netsnmp_create_watcher_info(
-                   (void *)it, sizeof( u_long ),
-                   ASN_UNSIGNED, WATCHER_FIXED_SIZE ));
+    return register_scalar_watcher(
+        name, reg_oid, reg_oid_len,
+        (void *)it, sizeof( u_long ),
+        ASN_UNSIGNED, subhandler, HANDLER_CAN_RWRITE);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_ULONG_SCALAR */
 
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_READ_ONLY_ULONG_SCALAR
 int
 netsnmp_register_read_only_ulong_scalar(const char *name,
-                              oid * reg_oid, size_t reg_oid_len,
+                              const oid * reg_oid, size_t reg_oid_len,
                               u_long * it,
                               Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_scalar(
-               netsnmp_create_handler_registration(
-                   name, subhandler,
-                   reg_oid, reg_oid_len,
-                   HANDLER_CAN_RONLY ),
-               netsnmp_create_watcher_info(
-                   (void *)it, sizeof( u_long ),
-                   ASN_UNSIGNED, WATCHER_FIXED_SIZE ));
+    return register_scalar_watcher(
+        name, reg_oid, reg_oid_len,
+        (void *)it, sizeof( u_long ),
+        ASN_UNSIGNED, subhandler, HANDLER_CAN_RONLY);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_READ_ONLY_ULONG_SCALAR */
 
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_LONG_SCALAR
 int
 netsnmp_register_long_scalar(const char *name,
-                              oid * reg_oid, size_t reg_oid_len,
+                              const oid * reg_oid, size_t reg_oid_len,
                               long * it,
                               Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_scalar(
-               netsnmp_create_handler_registration(
-                   name, subhandler,
-                   reg_oid, reg_oid_len,
-                   HANDLER_CAN_RWRITE ),
-               netsnmp_create_watcher_info(
-                   (void *)it, sizeof( long ),
-                   ASN_INTEGER, WATCHER_FIXED_SIZE ));
+    return register_scalar_watcher(
+        name, reg_oid, reg_oid_len,
+        (void *)it, sizeof( long ),
+        ASN_INTEGER, subhandler, HANDLER_CAN_RWRITE);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_LONG_SCALAR */
 
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_READ_ONLY_LONG_SCALAR
 int
 netsnmp_register_read_only_long_scalar(const char *name,
-                              oid * reg_oid, size_t reg_oid_len,
+                              const oid * reg_oid, size_t reg_oid_len,
                               long * it,
                               Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_scalar(
-               netsnmp_create_handler_registration(
-                   name, subhandler,
-                   reg_oid, reg_oid_len,
-                   HANDLER_CAN_RONLY ),
-               netsnmp_create_watcher_info(
-                   (void *)it, sizeof( long ),
-                   ASN_INTEGER, WATCHER_FIXED_SIZE ));
+    return register_scalar_watcher(
+        name, reg_oid, reg_oid_len,
+        (void *)it, sizeof( long ),
+        ASN_INTEGER, subhandler, HANDLER_CAN_RONLY);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_READ_ONLY_LONG_SCALAR */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_INT_SCALAR
 int
 netsnmp_register_int_scalar(const char *name,
-                              oid * reg_oid, size_t reg_oid_len,
+                              const oid * reg_oid, size_t reg_oid_len,
                               int * it,
                               Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_scalar(
-               netsnmp_create_handler_registration(
-                   name, subhandler,
-                   reg_oid, reg_oid_len,
-                   HANDLER_CAN_RWRITE ),
-               netsnmp_create_watcher_info(
-                   (void *)it, sizeof( int ),
-                   ASN_INTEGER, WATCHER_FIXED_SIZE ));
+    return register_scalar_watcher(
+        name, reg_oid, reg_oid_len,
+        (void *)it, sizeof( int ),
+        ASN_INTEGER, subhandler, HANDLER_CAN_RWRITE);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_INT_SCALAR */
 
+#ifndef NETSNMP_FEATURE_REMOVE_WATCHER_READ_ONLY_INT_SCALAR
 int
 netsnmp_register_read_only_int_scalar(const char *name,
-                              oid * reg_oid, size_t reg_oid_len,
+                              const oid * reg_oid, size_t reg_oid_len,
                               int * it,
                               Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_scalar(
-               netsnmp_create_handler_registration(
-                   name, subhandler,
-                   reg_oid, reg_oid_len,
-                   HANDLER_CAN_RONLY ),
-               netsnmp_create_watcher_info(
-                   (void *)it, sizeof( int ),
-                   ASN_INTEGER, WATCHER_FIXED_SIZE ));
+    return register_scalar_watcher(
+        name, reg_oid, reg_oid_len,
+        (void *)it, sizeof( int ),
+        ASN_INTEGER, subhandler, HANDLER_CAN_RONLY);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_WATCHER_READ_ONLY_INT_SCALAR */
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_READ_ONLY_COUNTER32_SCALAR
 int
 netsnmp_register_read_only_counter32_scalar(const char *name,
-                              oid * reg_oid, size_t reg_oid_len,
+                              const oid * reg_oid, size_t reg_oid_len,
                               u_long * it,
                               Netsnmp_Node_Handler * subhandler)
 {
-    return netsnmp_register_watched_scalar(
-               netsnmp_create_handler_registration(
-                   name, subhandler,
-                   reg_oid, reg_oid_len,
-                   HANDLER_CAN_RONLY ),
-               netsnmp_create_watcher_info(
-                   (void *)it, sizeof( u_long ),
-                   ASN_COUNTER, WATCHER_FIXED_SIZE ));
+    return register_scalar_watcher(
+        name, reg_oid, reg_oid_len,
+        (void *)it, sizeof( u_long ),
+        ASN_COUNTER, subhandler, HANDLER_CAN_RONLY);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_ONLY_COUNTER32_SCALAR */
 /**  @} */
 
diff --git a/agent/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 95e4695..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>
@@ -49,9 +42,6 @@
 #include <net-snmp/agent/table.h>
 #include <net-snmp/agent/table_iterator.h>
 #include "mib_module_includes.h"
-#ifdef USING_AGENTX_SUBAGENT_MODULE
-#include "mibgroup/agentx/subagent.h"
-#endif
 
 static int need_shutdown = 0;
 
diff --git a/agent/mibgroup/Makefile.depend b/agent/mibgroup/Makefile.depend
index deabf02..a4e9711 100644
--- a/agent/mibgroup/Makefile.depend
+++ b/agent/mibgroup/Makefile.depend
@@ -8,55 +8,64 @@
 ./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
+./header_complex.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./header_complex.lo: ../../include/net-snmp/library/mib.h
+./header_complex.lo: ../../include/net-snmp/mib_api.h
+./header_complex.lo: ../../include/net-snmp/library/parse.h
+./header_complex.lo: ../../include/net-snmp/library/oid_stash.h
+./header_complex.lo: ../../include/net-snmp/net-snmp-features.h
 ./header_complex.lo: ../../include/net-snmp/library/snmp_impl.h
 ./header_complex.lo: ../../include/net-snmp/library/snmp.h
 ./header_complex.lo: ../../include/net-snmp/library/snmp-tc.h
+./header_complex.lo: ../../include/net-snmp/library/getopt.h
 ./header_complex.lo: ../../include/net-snmp/utilities.h
-./header_complex.lo: ../../include/net-snmp/library/snmp_client.h
 ./header_complex.lo: ../../include/net-snmp/library/system.h
 ./header_complex.lo: ../../include/net-snmp/library/tools.h
 ./header_complex.lo: ../../include/net-snmp/library/int64.h
 ./header_complex.lo: ../../include/net-snmp/library/mt_support.h
 ./header_complex.lo: ../../include/net-snmp/library/snmp_alarm.h
-./header_complex.lo: ../../include/net-snmp/library/callback.h
 ./header_complex.lo: ../../include/net-snmp/library/data_list.h
-./header_complex.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./header_complex.lo: ../../include/net-snmp/library/container.h
 ./header_complex.lo: ../../include/net-snmp/library/snmp_assert.h
 ./header_complex.lo: ../../include/net-snmp/version.h
-./header_complex.lo: ../../include/net-snmp/session_api.h
-./header_complex.lo: ../../include/net-snmp/library/snmp_transport.h
-./header_complex.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./header_complex.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./header_complex.lo: ../../include/net-snmp/pdu_api.h
-./header_complex.lo: ../../include/net-snmp/mib_api.h
-./header_complex.lo: ../../include/net-snmp/library/mib.h
-./header_complex.lo: ../../include/net-snmp/library/parse.h
-./header_complex.lo: ../../include/net-snmp/varbind_api.h
 ./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
@@ -65,6 +74,7 @@
 ./header_complex.lo: ../../include/net-snmp/library/lcd_time.h
 ./header_complex.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./header_complex.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./header_complex.lo: ../../include/net-snmp/library/snmptsm.h
 ./header_complex.lo: ../../include/net-snmp/library/snmpusm.h
 ./header_complex.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./header_complex.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -101,69 +111,71 @@
 ./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-features.h
 ./testhandler.lo: ../../include/net-snmp/net-snmp-includes.h
 ./testhandler.lo: ../../include/net-snmp/definitions.h
 ./testhandler.lo: ../../include/net-snmp/types.h
+./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
+./testhandler.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./testhandler.lo: ../../include/net-snmp/library/mib.h
+./testhandler.lo: ../../include/net-snmp/mib_api.h
+./testhandler.lo: ../../include/net-snmp/library/parse.h
+./testhandler.lo: ../../include/net-snmp/library/oid_stash.h
 ./testhandler.lo: ../../include/net-snmp/library/snmp_impl.h
 ./testhandler.lo: ../../include/net-snmp/library/snmp.h
 ./testhandler.lo: ../../include/net-snmp/library/snmp-tc.h
+./testhandler.lo: ../../include/net-snmp/library/getopt.h
 ./testhandler.lo: ../../include/net-snmp/utilities.h
-./testhandler.lo: ../../include/net-snmp/library/snmp_client.h
 ./testhandler.lo: ../../include/net-snmp/library/system.h
 ./testhandler.lo: ../../include/net-snmp/library/tools.h
 ./testhandler.lo: ../../include/net-snmp/library/int64.h
 ./testhandler.lo: ../../include/net-snmp/library/mt_support.h
 ./testhandler.lo: ../../include/net-snmp/library/snmp_alarm.h
-./testhandler.lo: ../../include/net-snmp/library/callback.h
 ./testhandler.lo: ../../include/net-snmp/library/data_list.h
-./testhandler.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./testhandler.lo: ../../include/net-snmp/library/container.h
 ./testhandler.lo: ../../include/net-snmp/library/snmp_assert.h
 ./testhandler.lo: ../../include/net-snmp/version.h
-./testhandler.lo: ../../include/net-snmp/session_api.h
-./testhandler.lo: ../../include/net-snmp/library/snmp_transport.h
-./testhandler.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./testhandler.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./testhandler.lo: ../../include/net-snmp/pdu_api.h
-./testhandler.lo: ../../include/net-snmp/mib_api.h
-./testhandler.lo: ../../include/net-snmp/library/mib.h
-./testhandler.lo: ../../include/net-snmp/library/parse.h
-./testhandler.lo: ../../include/net-snmp/varbind_api.h
 ./testhandler.lo: ../../include/net-snmp/config_api.h
 ./testhandler.lo: ../../include/net-snmp/library/read_config.h
 ./testhandler.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -172,6 +184,7 @@
 ./testhandler.lo: ../../include/net-snmp/library/lcd_time.h
 ./testhandler.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./testhandler.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./testhandler.lo: ../../include/net-snmp/library/snmptsm.h
 ./testhandler.lo: ../../include/net-snmp/library/snmpusm.h
 ./testhandler.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./testhandler.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -208,64 +221,70 @@
 ./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-features.h
 ./util_funcs.lo: ../../include/net-snmp/net-snmp-includes.h
 ./util_funcs.lo: ../../include/net-snmp/definitions.h
 ./util_funcs.lo: ../../include/net-snmp/types.h
+./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
+./util_funcs.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./util_funcs.lo: ../../include/net-snmp/library/mib.h
+./util_funcs.lo: ../../include/net-snmp/mib_api.h
+./util_funcs.lo: ../../include/net-snmp/library/parse.h
+./util_funcs.lo: ../../include/net-snmp/library/oid_stash.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmp_impl.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmp.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmp-tc.h
+./util_funcs.lo: ../../include/net-snmp/library/getopt.h
 ./util_funcs.lo: ../../include/net-snmp/utilities.h
-./util_funcs.lo: ../../include/net-snmp/library/snmp_client.h
 ./util_funcs.lo: ../../include/net-snmp/library/system.h
 ./util_funcs.lo: ../../include/net-snmp/library/tools.h
 ./util_funcs.lo: ../../include/net-snmp/library/int64.h
 ./util_funcs.lo: ../../include/net-snmp/library/mt_support.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmp_alarm.h
-./util_funcs.lo: ../../include/net-snmp/library/callback.h
 ./util_funcs.lo: ../../include/net-snmp/library/data_list.h
-./util_funcs.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./util_funcs.lo: ../../include/net-snmp/library/container.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmp_assert.h
 ./util_funcs.lo: ../../include/net-snmp/version.h
-./util_funcs.lo: ../../include/net-snmp/session_api.h
-./util_funcs.lo: ../../include/net-snmp/library/snmp_transport.h
-./util_funcs.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./util_funcs.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./util_funcs.lo: ../../include/net-snmp/pdu_api.h
-./util_funcs.lo: ../../include/net-snmp/mib_api.h
-./util_funcs.lo: ../../include/net-snmp/library/mib.h
-./util_funcs.lo: ../../include/net-snmp/library/parse.h
-./util_funcs.lo: ../../include/net-snmp/varbind_api.h
 ./util_funcs.lo: ../../include/net-snmp/config_api.h
 ./util_funcs.lo: ../../include/net-snmp/library/read_config.h
 ./util_funcs.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -274,6 +293,7 @@
 ./util_funcs.lo: ../../include/net-snmp/library/lcd_time.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./util_funcs.lo: ../../include/net-snmp/library/snmptsm.h
 ./util_funcs.lo: ../../include/net-snmp/library/snmpusm.h
 ./util_funcs.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./util_funcs.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -310,691 +330,76 @@
 ./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: utilities/execute.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/header_generic.h
+./util_funcs.lo: util_funcs/header_simple_table.h
+./util_funcs.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h utilities/execute.h
 ./util_funcs.lo: ucd-snmp/errormib.h mibdefs.h
 ./winExtDLL.lo: ../../include/net-snmp/net-snmp-config.h
-./winExtDLL.lo: ../../include/net-snmp/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/net-snmp-features.h
 ./winExtDLL.lo: ../../include/net-snmp/agent/mib_module_config.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/snmp_api.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/asn1.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_impl.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/snmp.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/snmp-tc.h
-./Rmon/agutil.lo: ../../include/net-snmp/utilities.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_client.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/system.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/tools.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/int64.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/mt_support.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_alarm.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/callback.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/data_list.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/oid_stash.h
-./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
-./Rmon/agutil.lo: ../../include/net-snmp/library/container.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_assert.h
-./Rmon/agutil.lo: ../../include/net-snmp/version.h
-./Rmon/agutil.lo: ../../include/net-snmp/session_api.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_transport.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./Rmon/agutil.lo: ../../include/net-snmp/pdu_api.h
-./Rmon/agutil.lo: ../../include/net-snmp/mib_api.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/mib.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/parse.h
-./Rmon/agutil.lo: ../../include/net-snmp/varbind_api.h
-./Rmon/agutil.lo: ../../include/net-snmp/config_api.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/read_config.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/default_store.h
-./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
-./Rmon/agutil.lo: ../../include/net-snmp/library/keytools.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/scapi.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/lcd_time.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_secmod.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/snmpusm.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/mib_module_config.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/agent_module_config.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/snmp_agent.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/snmp_vars.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/agent_handler.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/var_struct.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/agent_registry.h
-./Rmon/agutil.lo: ../../include/net-snmp/library/fd_event_manager.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/ds_agent.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/agent_read_config.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/agent_trap.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/all_helpers.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/instance.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/baby_steps.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/scalar.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/scalar_group.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/watcher.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/multiplexer.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/null.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/debug_handler.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/cache_handler.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/old_api.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/read_only.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/row_merge.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/serialize.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/mode_end_call.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/table.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/table_data.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/table_dataset.h
-./Rmon/agutil.lo: ../../include/net-snmp/agent/table_tdata.h
-./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 util_funcs.h struct.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/snmp_api.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/asn1.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_impl.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/snmp.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/snmp-tc.h
-./Rmon/alarm.lo: ../../include/net-snmp/utilities.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_client.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/system.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/tools.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/int64.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/mt_support.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_alarm.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/callback.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/data_list.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/oid_stash.h
-./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
-./Rmon/alarm.lo: ../../include/net-snmp/library/container.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_assert.h
-./Rmon/alarm.lo: ../../include/net-snmp/version.h
-./Rmon/alarm.lo: ../../include/net-snmp/session_api.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_transport.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./Rmon/alarm.lo: ../../include/net-snmp/pdu_api.h
-./Rmon/alarm.lo: ../../include/net-snmp/mib_api.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/mib.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/parse.h
-./Rmon/alarm.lo: ../../include/net-snmp/varbind_api.h
-./Rmon/alarm.lo: ../../include/net-snmp/config_api.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/read_config.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/default_store.h
-./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
-./Rmon/alarm.lo: ../../include/net-snmp/library/keytools.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/scapi.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/lcd_time.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_secmod.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/snmpusm.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/mib_module_config.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/agent_module_config.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/snmp_agent.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/snmp_vars.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/agent_handler.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/var_struct.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/agent_registry.h
-./Rmon/alarm.lo: ../../include/net-snmp/library/fd_event_manager.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/ds_agent.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/agent_read_config.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/agent_trap.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/all_helpers.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/instance.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/baby_steps.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/scalar.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/scalar_group.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/watcher.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/multiplexer.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/null.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/debug_handler.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/cache_handler.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/old_api.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/read_only.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/row_merge.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/serialize.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/mode_end_call.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/table.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/table_data.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/table_dataset.h
-./Rmon/alarm.lo: ../../include/net-snmp/agent/table_tdata.h
-./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 util_funcs.h struct.h
-./Rmon/alarm.lo: ./Rmon/alarm.h ./Rmon/agutil_api.h ./Rmon/row_api.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/snmp_api.h
-./Rmon/event.lo: ../../include/net-snmp/library/asn1.h
-./Rmon/event.lo: ../../include/net-snmp/library/snmp_impl.h
-./Rmon/event.lo: ../../include/net-snmp/library/snmp.h
-./Rmon/event.lo: ../../include/net-snmp/library/snmp-tc.h
-./Rmon/event.lo: ../../include/net-snmp/utilities.h
-./Rmon/event.lo: ../../include/net-snmp/library/snmp_client.h
-./Rmon/event.lo: ../../include/net-snmp/library/system.h
-./Rmon/event.lo: ../../include/net-snmp/library/tools.h
-./Rmon/event.lo: ../../include/net-snmp/library/int64.h
-./Rmon/event.lo: ../../include/net-snmp/library/mt_support.h
-./Rmon/event.lo: ../../include/net-snmp/library/snmp_alarm.h
-./Rmon/event.lo: ../../include/net-snmp/library/callback.h
-./Rmon/event.lo: ../../include/net-snmp/library/data_list.h
-./Rmon/event.lo: ../../include/net-snmp/library/oid_stash.h
-./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
-./Rmon/event.lo: ../../include/net-snmp/library/container.h
-./Rmon/event.lo: ../../include/net-snmp/library/snmp_assert.h
-./Rmon/event.lo: ../../include/net-snmp/version.h
-./Rmon/event.lo: ../../include/net-snmp/session_api.h
-./Rmon/event.lo: ../../include/net-snmp/library/snmp_transport.h
-./Rmon/event.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./Rmon/event.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./Rmon/event.lo: ../../include/net-snmp/pdu_api.h
-./Rmon/event.lo: ../../include/net-snmp/mib_api.h
-./Rmon/event.lo: ../../include/net-snmp/library/mib.h
-./Rmon/event.lo: ../../include/net-snmp/library/parse.h
-./Rmon/event.lo: ../../include/net-snmp/varbind_api.h
-./Rmon/event.lo: ../../include/net-snmp/config_api.h
-./Rmon/event.lo: ../../include/net-snmp/library/read_config.h
-./Rmon/event.lo: ../../include/net-snmp/library/default_store.h
-./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
-./Rmon/event.lo: ../../include/net-snmp/library/keytools.h
-./Rmon/event.lo: ../../include/net-snmp/library/scapi.h
-./Rmon/event.lo: ../../include/net-snmp/library/lcd_time.h
-./Rmon/event.lo: ../../include/net-snmp/library/snmp_secmod.h
-./Rmon/event.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
-./Rmon/event.lo: ../../include/net-snmp/library/snmpusm.h
-./Rmon/event.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
-./Rmon/event.lo: ../../include/net-snmp/agent/mib_module_config.h
-./Rmon/event.lo: ../../include/net-snmp/agent/agent_module_config.h
-./Rmon/event.lo: ../../include/net-snmp/agent/snmp_agent.h
-./Rmon/event.lo: ../../include/net-snmp/agent/snmp_vars.h
-./Rmon/event.lo: ../../include/net-snmp/agent/agent_handler.h
-./Rmon/event.lo: ../../include/net-snmp/agent/var_struct.h
-./Rmon/event.lo: ../../include/net-snmp/agent/agent_registry.h
-./Rmon/event.lo: ../../include/net-snmp/library/fd_event_manager.h
-./Rmon/event.lo: ../../include/net-snmp/agent/ds_agent.h
-./Rmon/event.lo: ../../include/net-snmp/agent/agent_read_config.h
-./Rmon/event.lo: ../../include/net-snmp/agent/agent_trap.h
-./Rmon/event.lo: ../../include/net-snmp/agent/all_helpers.h
-./Rmon/event.lo: ../../include/net-snmp/agent/instance.h
-./Rmon/event.lo: ../../include/net-snmp/agent/baby_steps.h
-./Rmon/event.lo: ../../include/net-snmp/agent/scalar.h
-./Rmon/event.lo: ../../include/net-snmp/agent/scalar_group.h
-./Rmon/event.lo: ../../include/net-snmp/agent/watcher.h
-./Rmon/event.lo: ../../include/net-snmp/agent/multiplexer.h
-./Rmon/event.lo: ../../include/net-snmp/agent/null.h
-./Rmon/event.lo: ../../include/net-snmp/agent/debug_handler.h
-./Rmon/event.lo: ../../include/net-snmp/agent/cache_handler.h
-./Rmon/event.lo: ../../include/net-snmp/agent/old_api.h
-./Rmon/event.lo: ../../include/net-snmp/agent/read_only.h
-./Rmon/event.lo: ../../include/net-snmp/agent/row_merge.h
-./Rmon/event.lo: ../../include/net-snmp/agent/serialize.h
-./Rmon/event.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./Rmon/event.lo: ../../include/net-snmp/agent/mode_end_call.h
-./Rmon/event.lo: ../../include/net-snmp/agent/table.h
-./Rmon/event.lo: ../../include/net-snmp/agent/table_data.h
-./Rmon/event.lo: ../../include/net-snmp/agent/table_dataset.h
-./Rmon/event.lo: ../../include/net-snmp/agent/table_tdata.h
-./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 util_funcs.h struct.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/snmp_api.h
-./Rmon/history.lo: ../../include/net-snmp/library/asn1.h
-./Rmon/history.lo: ../../include/net-snmp/library/snmp_impl.h
-./Rmon/history.lo: ../../include/net-snmp/library/snmp.h
-./Rmon/history.lo: ../../include/net-snmp/library/snmp-tc.h
-./Rmon/history.lo: ../../include/net-snmp/utilities.h
-./Rmon/history.lo: ../../include/net-snmp/library/snmp_client.h
-./Rmon/history.lo: ../../include/net-snmp/library/system.h
-./Rmon/history.lo: ../../include/net-snmp/library/tools.h
-./Rmon/history.lo: ../../include/net-snmp/library/int64.h
-./Rmon/history.lo: ../../include/net-snmp/library/mt_support.h
-./Rmon/history.lo: ../../include/net-snmp/library/snmp_alarm.h
-./Rmon/history.lo: ../../include/net-snmp/library/callback.h
-./Rmon/history.lo: ../../include/net-snmp/library/data_list.h
-./Rmon/history.lo: ../../include/net-snmp/library/oid_stash.h
-./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
-./Rmon/history.lo: ../../include/net-snmp/library/container.h
-./Rmon/history.lo: ../../include/net-snmp/library/snmp_assert.h
-./Rmon/history.lo: ../../include/net-snmp/version.h
-./Rmon/history.lo: ../../include/net-snmp/session_api.h
-./Rmon/history.lo: ../../include/net-snmp/library/snmp_transport.h
-./Rmon/history.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./Rmon/history.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./Rmon/history.lo: ../../include/net-snmp/pdu_api.h
-./Rmon/history.lo: ../../include/net-snmp/mib_api.h
-./Rmon/history.lo: ../../include/net-snmp/library/mib.h
-./Rmon/history.lo: ../../include/net-snmp/library/parse.h
-./Rmon/history.lo: ../../include/net-snmp/varbind_api.h
-./Rmon/history.lo: ../../include/net-snmp/config_api.h
-./Rmon/history.lo: ../../include/net-snmp/library/read_config.h
-./Rmon/history.lo: ../../include/net-snmp/library/default_store.h
-./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
-./Rmon/history.lo: ../../include/net-snmp/library/keytools.h
-./Rmon/history.lo: ../../include/net-snmp/library/scapi.h
-./Rmon/history.lo: ../../include/net-snmp/library/lcd_time.h
-./Rmon/history.lo: ../../include/net-snmp/library/snmp_secmod.h
-./Rmon/history.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
-./Rmon/history.lo: ../../include/net-snmp/library/snmpusm.h
-./Rmon/history.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
-./Rmon/history.lo: ../../include/net-snmp/agent/mib_module_config.h
-./Rmon/history.lo: ../../include/net-snmp/agent/agent_module_config.h
-./Rmon/history.lo: ../../include/net-snmp/agent/snmp_agent.h
-./Rmon/history.lo: ../../include/net-snmp/agent/snmp_vars.h
-./Rmon/history.lo: ../../include/net-snmp/agent/agent_handler.h
-./Rmon/history.lo: ../../include/net-snmp/agent/var_struct.h
-./Rmon/history.lo: ../../include/net-snmp/agent/agent_registry.h
-./Rmon/history.lo: ../../include/net-snmp/library/fd_event_manager.h
-./Rmon/history.lo: ../../include/net-snmp/agent/ds_agent.h
-./Rmon/history.lo: ../../include/net-snmp/agent/agent_read_config.h
-./Rmon/history.lo: ../../include/net-snmp/agent/agent_trap.h
-./Rmon/history.lo: ../../include/net-snmp/agent/all_helpers.h
-./Rmon/history.lo: ../../include/net-snmp/agent/instance.h
-./Rmon/history.lo: ../../include/net-snmp/agent/baby_steps.h
-./Rmon/history.lo: ../../include/net-snmp/agent/scalar.h
-./Rmon/history.lo: ../../include/net-snmp/agent/scalar_group.h
-./Rmon/history.lo: ../../include/net-snmp/agent/watcher.h
-./Rmon/history.lo: ../../include/net-snmp/agent/multiplexer.h
-./Rmon/history.lo: ../../include/net-snmp/agent/null.h
-./Rmon/history.lo: ../../include/net-snmp/agent/debug_handler.h
-./Rmon/history.lo: ../../include/net-snmp/agent/cache_handler.h
-./Rmon/history.lo: ../../include/net-snmp/agent/old_api.h
-./Rmon/history.lo: ../../include/net-snmp/agent/read_only.h
-./Rmon/history.lo: ../../include/net-snmp/agent/row_merge.h
-./Rmon/history.lo: ../../include/net-snmp/agent/serialize.h
-./Rmon/history.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./Rmon/history.lo: ../../include/net-snmp/agent/mode_end_call.h
-./Rmon/history.lo: ../../include/net-snmp/agent/table.h
-./Rmon/history.lo: ../../include/net-snmp/agent/table_data.h
-./Rmon/history.lo: ../../include/net-snmp/agent/table_dataset.h
-./Rmon/history.lo: ../../include/net-snmp/agent/table_tdata.h
-./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 util_funcs.h struct.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/snmp_api.h
-./Rmon/rows.lo: ../../include/net-snmp/library/asn1.h
-./Rmon/rows.lo: ../../include/net-snmp/library/snmp_impl.h
-./Rmon/rows.lo: ../../include/net-snmp/library/snmp.h
-./Rmon/rows.lo: ../../include/net-snmp/library/snmp-tc.h
-./Rmon/rows.lo: ../../include/net-snmp/utilities.h
-./Rmon/rows.lo: ../../include/net-snmp/library/snmp_client.h
-./Rmon/rows.lo: ../../include/net-snmp/library/system.h
-./Rmon/rows.lo: ../../include/net-snmp/library/tools.h
-./Rmon/rows.lo: ../../include/net-snmp/library/int64.h
-./Rmon/rows.lo: ../../include/net-snmp/library/mt_support.h
-./Rmon/rows.lo: ../../include/net-snmp/library/snmp_alarm.h
-./Rmon/rows.lo: ../../include/net-snmp/library/callback.h
-./Rmon/rows.lo: ../../include/net-snmp/library/data_list.h
-./Rmon/rows.lo: ../../include/net-snmp/library/oid_stash.h
-./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
-./Rmon/rows.lo: ../../include/net-snmp/library/container.h
-./Rmon/rows.lo: ../../include/net-snmp/library/snmp_assert.h
-./Rmon/rows.lo: ../../include/net-snmp/version.h
-./Rmon/rows.lo: ../../include/net-snmp/session_api.h
-./Rmon/rows.lo: ../../include/net-snmp/library/snmp_transport.h
-./Rmon/rows.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./Rmon/rows.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./Rmon/rows.lo: ../../include/net-snmp/pdu_api.h
-./Rmon/rows.lo: ../../include/net-snmp/mib_api.h
-./Rmon/rows.lo: ../../include/net-snmp/library/mib.h
-./Rmon/rows.lo: ../../include/net-snmp/library/parse.h
-./Rmon/rows.lo: ../../include/net-snmp/varbind_api.h
-./Rmon/rows.lo: ../../include/net-snmp/config_api.h
-./Rmon/rows.lo: ../../include/net-snmp/library/read_config.h
-./Rmon/rows.lo: ../../include/net-snmp/library/default_store.h
-./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
-./Rmon/rows.lo: ../../include/net-snmp/library/keytools.h
-./Rmon/rows.lo: ../../include/net-snmp/library/scapi.h
-./Rmon/rows.lo: ../../include/net-snmp/library/lcd_time.h
-./Rmon/rows.lo: ../../include/net-snmp/library/snmp_secmod.h
-./Rmon/rows.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
-./Rmon/rows.lo: ../../include/net-snmp/library/snmpusm.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/mib_module_config.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/agent_module_config.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/snmp_agent.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/snmp_vars.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/agent_handler.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/var_struct.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/agent_registry.h
-./Rmon/rows.lo: ../../include/net-snmp/library/fd_event_manager.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/ds_agent.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/agent_read_config.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/agent_trap.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/all_helpers.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/instance.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/baby_steps.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/scalar.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/scalar_group.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/watcher.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/multiplexer.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/null.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/debug_handler.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/cache_handler.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/old_api.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/read_only.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/row_merge.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/serialize.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/mode_end_call.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/table.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/table_data.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/table_dataset.h
-./Rmon/rows.lo: ../../include/net-snmp/agent/table_tdata.h
-./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 util_funcs.h struct.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/snmp_api.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/asn1.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_impl.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/snmp.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/snmp-tc.h
-./Rmon/statistics.lo: ../../include/net-snmp/utilities.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_client.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/system.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/tools.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/int64.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/mt_support.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_alarm.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/callback.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/data_list.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/oid_stash.h
-./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
-./Rmon/statistics.lo: ../../include/net-snmp/library/container.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_assert.h
-./Rmon/statistics.lo: ../../include/net-snmp/version.h
-./Rmon/statistics.lo: ../../include/net-snmp/session_api.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_transport.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./Rmon/statistics.lo: ../../include/net-snmp/pdu_api.h
-./Rmon/statistics.lo: ../../include/net-snmp/mib_api.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/mib.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/parse.h
-./Rmon/statistics.lo: ../../include/net-snmp/varbind_api.h
-./Rmon/statistics.lo: ../../include/net-snmp/config_api.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/read_config.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/default_store.h
-./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
-./Rmon/statistics.lo: ../../include/net-snmp/library/keytools.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/scapi.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/lcd_time.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_secmod.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/snmpusm.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/mib_module_config.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/agent_module_config.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/snmp_agent.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/snmp_vars.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/agent_handler.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/var_struct.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/agent_registry.h
-./Rmon/statistics.lo: ../../include/net-snmp/library/fd_event_manager.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/ds_agent.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/agent_read_config.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/agent_trap.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/all_helpers.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/instance.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/baby_steps.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/scalar.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/scalar_group.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/watcher.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/multiplexer.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/null.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/debug_handler.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/cache_handler.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/old_api.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/read_only.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/row_merge.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/serialize.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/mode_end_call.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/table.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/table_data.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/table_dataset.h
-./Rmon/statistics.lo: ../../include/net-snmp/agent/table_tdata.h
-./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 util_funcs.h
-./Rmon/statistics.lo: struct.h ./Rmon/statistics.h ./Rmon/agutil_api.h
-./Rmon/statistics.lo: ./Rmon/row_api.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-features.h
 ./agent/extend.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agent/extend.lo: ../../include/net-snmp/definitions.h
 ./agent/extend.lo: ../../include/net-snmp/types.h
+./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
+./agent/extend.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./agent/extend.lo: ../../include/net-snmp/library/mib.h
+./agent/extend.lo: ../../include/net-snmp/mib_api.h
+./agent/extend.lo: ../../include/net-snmp/library/parse.h
+./agent/extend.lo: ../../include/net-snmp/library/oid_stash.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmp_impl.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmp.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmp-tc.h
+./agent/extend.lo: ../../include/net-snmp/library/getopt.h
 ./agent/extend.lo: ../../include/net-snmp/utilities.h
-./agent/extend.lo: ../../include/net-snmp/library/snmp_client.h
 ./agent/extend.lo: ../../include/net-snmp/library/system.h
 ./agent/extend.lo: ../../include/net-snmp/library/tools.h
 ./agent/extend.lo: ../../include/net-snmp/library/int64.h
 ./agent/extend.lo: ../../include/net-snmp/library/mt_support.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmp_alarm.h
-./agent/extend.lo: ../../include/net-snmp/library/callback.h
 ./agent/extend.lo: ../../include/net-snmp/library/data_list.h
-./agent/extend.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./agent/extend.lo: ../../include/net-snmp/library/container.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmp_assert.h
 ./agent/extend.lo: ../../include/net-snmp/version.h
-./agent/extend.lo: ../../include/net-snmp/session_api.h
-./agent/extend.lo: ../../include/net-snmp/library/snmp_transport.h
-./agent/extend.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./agent/extend.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agent/extend.lo: ../../include/net-snmp/pdu_api.h
-./agent/extend.lo: ../../include/net-snmp/mib_api.h
-./agent/extend.lo: ../../include/net-snmp/library/mib.h
-./agent/extend.lo: ../../include/net-snmp/library/parse.h
-./agent/extend.lo: ../../include/net-snmp/varbind_api.h
 ./agent/extend.lo: ../../include/net-snmp/config_api.h
 ./agent/extend.lo: ../../include/net-snmp/library/read_config.h
 ./agent/extend.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1003,6 +408,7 @@
 ./agent/extend.lo: ../../include/net-snmp/library/lcd_time.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agent/extend.lo: ../../include/net-snmp/library/snmptsm.h
 ./agent/extend.lo: ../../include/net-snmp/library/snmpusm.h
 ./agent/extend.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent/extend.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1040,66 +446,71 @@
 ./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 util_funcs.h
-./agent/extend.lo: mibdefs.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-features.h
 ./agent/nsCache.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agent/nsCache.lo: ../../include/net-snmp/definitions.h
 ./agent/nsCache.lo: ../../include/net-snmp/types.h
+./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
+./agent/nsCache.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./agent/nsCache.lo: ../../include/net-snmp/library/mib.h
+./agent/nsCache.lo: ../../include/net-snmp/mib_api.h
+./agent/nsCache.lo: ../../include/net-snmp/library/parse.h
+./agent/nsCache.lo: ../../include/net-snmp/library/oid_stash.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmp_impl.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmp.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmp-tc.h
+./agent/nsCache.lo: ../../include/net-snmp/library/getopt.h
 ./agent/nsCache.lo: ../../include/net-snmp/utilities.h
-./agent/nsCache.lo: ../../include/net-snmp/library/snmp_client.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/system.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/tools.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/int64.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/mt_support.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmp_alarm.h
-./agent/nsCache.lo: ../../include/net-snmp/library/callback.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/data_list.h
-./agent/nsCache.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./agent/nsCache.lo: ../../include/net-snmp/library/container.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmp_assert.h
 ./agent/nsCache.lo: ../../include/net-snmp/version.h
-./agent/nsCache.lo: ../../include/net-snmp/session_api.h
-./agent/nsCache.lo: ../../include/net-snmp/library/snmp_transport.h
-./agent/nsCache.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./agent/nsCache.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agent/nsCache.lo: ../../include/net-snmp/pdu_api.h
-./agent/nsCache.lo: ../../include/net-snmp/mib_api.h
-./agent/nsCache.lo: ../../include/net-snmp/library/mib.h
-./agent/nsCache.lo: ../../include/net-snmp/library/parse.h
-./agent/nsCache.lo: ../../include/net-snmp/varbind_api.h
 ./agent/nsCache.lo: ../../include/net-snmp/config_api.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/read_config.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1108,6 +519,7 @@
 ./agent/nsCache.lo: ../../include/net-snmp/library/lcd_time.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agent/nsCache.lo: ../../include/net-snmp/library/snmptsm.h
 ./agent/nsCache.lo: ../../include/net-snmp/library/snmpusm.h
 ./agent/nsCache.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent/nsCache.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1144,65 +556,70 @@
 ./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: util_funcs.h struct.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
+./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./agent/nsDebug.lo: ../../include/net-snmp/library/mib.h
+./agent/nsDebug.lo: ../../include/net-snmp/mib_api.h
+./agent/nsDebug.lo: ../../include/net-snmp/library/parse.h
+./agent/nsDebug.lo: ../../include/net-snmp/library/oid_stash.h
+./agent/nsDebug.lo: ../../include/net-snmp/net-snmp-features.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_impl.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmp.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmp-tc.h
+./agent/nsDebug.lo: ../../include/net-snmp/library/getopt.h
 ./agent/nsDebug.lo: ../../include/net-snmp/utilities.h
-./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_client.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/system.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/tools.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/int64.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/mt_support.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_alarm.h
-./agent/nsDebug.lo: ../../include/net-snmp/library/callback.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/data_list.h
-./agent/nsDebug.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./agent/nsDebug.lo: ../../include/net-snmp/library/container.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_assert.h
 ./agent/nsDebug.lo: ../../include/net-snmp/version.h
-./agent/nsDebug.lo: ../../include/net-snmp/session_api.h
-./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_transport.h
-./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./agent/nsDebug.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agent/nsDebug.lo: ../../include/net-snmp/pdu_api.h
-./agent/nsDebug.lo: ../../include/net-snmp/mib_api.h
-./agent/nsDebug.lo: ../../include/net-snmp/library/mib.h
-./agent/nsDebug.lo: ../../include/net-snmp/library/parse.h
-./agent/nsDebug.lo: ../../include/net-snmp/varbind_api.h
 ./agent/nsDebug.lo: ../../include/net-snmp/config_api.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/read_config.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1211,6 +628,7 @@
 ./agent/nsDebug.lo: ../../include/net-snmp/library/lcd_time.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agent/nsDebug.lo: ../../include/net-snmp/library/snmptsm.h
 ./agent/nsDebug.lo: ../../include/net-snmp/library/snmpusm.h
 ./agent/nsDebug.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent/nsDebug.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1247,65 +665,70 @@
 ./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: util_funcs.h struct.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-features.h
 ./agent/nsLogging.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agent/nsLogging.lo: ../../include/net-snmp/definitions.h
 ./agent/nsLogging.lo: ../../include/net-snmp/types.h
+./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
+./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./agent/nsLogging.lo: ../../include/net-snmp/library/mib.h
+./agent/nsLogging.lo: ../../include/net-snmp/mib_api.h
+./agent/nsLogging.lo: ../../include/net-snmp/library/parse.h
+./agent/nsLogging.lo: ../../include/net-snmp/library/oid_stash.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_impl.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmp.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmp-tc.h
+./agent/nsLogging.lo: ../../include/net-snmp/library/getopt.h
 ./agent/nsLogging.lo: ../../include/net-snmp/utilities.h
-./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_client.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/system.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/tools.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/int64.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/mt_support.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_alarm.h
-./agent/nsLogging.lo: ../../include/net-snmp/library/callback.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/data_list.h
-./agent/nsLogging.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./agent/nsLogging.lo: ../../include/net-snmp/library/container.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_assert.h
 ./agent/nsLogging.lo: ../../include/net-snmp/version.h
-./agent/nsLogging.lo: ../../include/net-snmp/session_api.h
-./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_transport.h
-./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./agent/nsLogging.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agent/nsLogging.lo: ../../include/net-snmp/pdu_api.h
-./agent/nsLogging.lo: ../../include/net-snmp/mib_api.h
-./agent/nsLogging.lo: ../../include/net-snmp/library/mib.h
-./agent/nsLogging.lo: ../../include/net-snmp/library/parse.h
-./agent/nsLogging.lo: ../../include/net-snmp/varbind_api.h
 ./agent/nsLogging.lo: ../../include/net-snmp/config_api.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/read_config.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1314,6 +737,7 @@
 ./agent/nsLogging.lo: ../../include/net-snmp/library/lcd_time.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agent/nsLogging.lo: ../../include/net-snmp/library/snmptsm.h
 ./agent/nsLogging.lo: ../../include/net-snmp/library/snmpusm.h
 ./agent/nsLogging.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent/nsLogging.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1350,65 +774,70 @@
 ./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: util_funcs.h struct.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-features.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/definitions.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/types.h
+./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
+./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./agent/nsModuleTable.lo: ../../include/net-snmp/library/mib.h
+./agent/nsModuleTable.lo: ../../include/net-snmp/mib_api.h
+./agent/nsModuleTable.lo: ../../include/net-snmp/library/parse.h
+./agent/nsModuleTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./agent/nsModuleTable.lo: ../../include/net-snmp/library/getopt.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/utilities.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/system.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/tools.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/int64.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/mt_support.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/library/callback.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/data_list.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/container.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/version.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/session_api.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agent/nsModuleTable.lo: ../../include/net-snmp/pdu_api.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/mib_api.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/library/mib.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/library/parse.h
-./agent/nsModuleTable.lo: ../../include/net-snmp/varbind_api.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/config_api.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/read_config.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1417,6 +846,7 @@
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent/nsModuleTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1454,64 +884,69 @@
 ./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-features.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/definitions.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/types.h
+./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
+./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./agent/nsTransactionTable.lo: ../../include/net-snmp/library/mib.h
+./agent/nsTransactionTable.lo: ../../include/net-snmp/mib_api.h
+./agent/nsTransactionTable.lo: ../../include/net-snmp/library/parse.h
+./agent/nsTransactionTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./agent/nsTransactionTable.lo: ../../include/net-snmp/library/getopt.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/utilities.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/system.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/tools.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/int64.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/mt_support.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/library/callback.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/data_list.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/container.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/version.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/session_api.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agent/nsTransactionTable.lo: ../../include/net-snmp/pdu_api.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/mib_api.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/library/mib.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/library/parse.h
-./agent/nsTransactionTable.lo: ../../include/net-snmp/varbind_api.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/config_api.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/read_config.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1520,6 +955,7 @@
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent/nsTransactionTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1557,64 +993,69 @@
 ./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-features.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/definitions.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/types.h
+./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
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/mib.h
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/mib_api.h
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/parse.h
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/getopt.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/utilities.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/system.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/tools.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/int64.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/mt_support.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/callback.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/data_list.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/container.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/version.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/session_api.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/pdu_api.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/mib_api.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/mib.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/parse.h
-./agent/nsVacmAccessTable.lo: ../../include/net-snmp/varbind_api.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/config_api.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/read_config.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1623,6 +1064,7 @@
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agent/nsVacmAccessTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1660,64 +1102,69 @@
 ./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-features.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/definitions.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/types.h
+./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
+./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./agentx/agentx_config.lo: ../../include/net-snmp/library/mib.h
+./agentx/agentx_config.lo: ../../include/net-snmp/mib_api.h
+./agentx/agentx_config.lo: ../../include/net-snmp/library/parse.h
+./agentx/agentx_config.lo: ../../include/net-snmp/library/oid_stash.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_impl.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp-tc.h
+./agentx/agentx_config.lo: ../../include/net-snmp/library/getopt.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/utilities.h
-./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_client.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/system.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/tools.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/int64.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/mt_support.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_alarm.h
-./agentx/agentx_config.lo: ../../include/net-snmp/library/callback.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/data_list.h
-./agentx/agentx_config.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/container.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_assert.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/version.h
-./agentx/agentx_config.lo: ../../include/net-snmp/session_api.h
-./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_transport.h
-./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agentx/agentx_config.lo: ../../include/net-snmp/pdu_api.h
-./agentx/agentx_config.lo: ../../include/net-snmp/mib_api.h
-./agentx/agentx_config.lo: ../../include/net-snmp/library/mib.h
-./agentx/agentx_config.lo: ../../include/net-snmp/library/parse.h
-./agentx/agentx_config.lo: ../../include/net-snmp/varbind_api.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/config_api.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/read_config.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1726,6 +1173,7 @@
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/lcd_time.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agentx/agentx_config.lo: ../../include/net-snmp/library/snmptsm.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/library/snmpusm.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agentx/agentx_config.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1763,65 +1211,70 @@
 ./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-features.h
 ./agentx/client.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agentx/client.lo: ../../include/net-snmp/definitions.h
 ./agentx/client.lo: ../../include/net-snmp/types.h
+./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
+./agentx/client.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./agentx/client.lo: ../../include/net-snmp/library/mib.h
+./agentx/client.lo: ../../include/net-snmp/mib_api.h
+./agentx/client.lo: ../../include/net-snmp/library/parse.h
+./agentx/client.lo: ../../include/net-snmp/library/oid_stash.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmp_impl.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmp.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmp-tc.h
+./agentx/client.lo: ../../include/net-snmp/library/getopt.h
 ./agentx/client.lo: ../../include/net-snmp/utilities.h
-./agentx/client.lo: ../../include/net-snmp/library/snmp_client.h
 ./agentx/client.lo: ../../include/net-snmp/library/system.h
 ./agentx/client.lo: ../../include/net-snmp/library/tools.h
 ./agentx/client.lo: ../../include/net-snmp/library/int64.h
 ./agentx/client.lo: ../../include/net-snmp/library/mt_support.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmp_alarm.h
-./agentx/client.lo: ../../include/net-snmp/library/callback.h
 ./agentx/client.lo: ../../include/net-snmp/library/data_list.h
-./agentx/client.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./agentx/client.lo: ../../include/net-snmp/library/container.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmp_assert.h
 ./agentx/client.lo: ../../include/net-snmp/version.h
-./agentx/client.lo: ../../include/net-snmp/session_api.h
-./agentx/client.lo: ../../include/net-snmp/library/snmp_transport.h
-./agentx/client.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./agentx/client.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agentx/client.lo: ../../include/net-snmp/pdu_api.h
-./agentx/client.lo: ../../include/net-snmp/mib_api.h
-./agentx/client.lo: ../../include/net-snmp/library/mib.h
-./agentx/client.lo: ../../include/net-snmp/library/parse.h
-./agentx/client.lo: ../../include/net-snmp/varbind_api.h
 ./agentx/client.lo: ../../include/net-snmp/config_api.h
 ./agentx/client.lo: ../../include/net-snmp/library/read_config.h
 ./agentx/client.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -1830,6 +1283,7 @@
 ./agentx/client.lo: ../../include/net-snmp/library/lcd_time.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agentx/client.lo: ../../include/net-snmp/library/snmptsm.h
 ./agentx/client.lo: ../../include/net-snmp/library/snmpusm.h
 ./agentx/client.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agentx/client.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -1867,168 +1321,70 @@
 ./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.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/snmp_api.h
-./agentx/master.lo: ../../include/net-snmp/library/asn1.h
-./agentx/master.lo: ../../include/net-snmp/library/snmp_impl.h
-./agentx/master.lo: ../../include/net-snmp/library/snmp.h
-./agentx/master.lo: ../../include/net-snmp/library/snmp-tc.h
-./agentx/master.lo: ../../include/net-snmp/utilities.h
-./agentx/master.lo: ../../include/net-snmp/library/snmp_client.h
-./agentx/master.lo: ../../include/net-snmp/library/system.h
-./agentx/master.lo: ../../include/net-snmp/library/tools.h
-./agentx/master.lo: ../../include/net-snmp/library/int64.h
-./agentx/master.lo: ../../include/net-snmp/library/mt_support.h
-./agentx/master.lo: ../../include/net-snmp/library/snmp_alarm.h
-./agentx/master.lo: ../../include/net-snmp/library/callback.h
-./agentx/master.lo: ../../include/net-snmp/library/data_list.h
-./agentx/master.lo: ../../include/net-snmp/library/oid_stash.h
-./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
-./agentx/master.lo: ../../include/net-snmp/library/container.h
-./agentx/master.lo: ../../include/net-snmp/library/snmp_assert.h
-./agentx/master.lo: ../../include/net-snmp/version.h
-./agentx/master.lo: ../../include/net-snmp/session_api.h
-./agentx/master.lo: ../../include/net-snmp/library/snmp_transport.h
-./agentx/master.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./agentx/master.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agentx/master.lo: ../../include/net-snmp/pdu_api.h
-./agentx/master.lo: ../../include/net-snmp/mib_api.h
-./agentx/master.lo: ../../include/net-snmp/library/mib.h
-./agentx/master.lo: ../../include/net-snmp/library/parse.h
-./agentx/master.lo: ../../include/net-snmp/varbind_api.h
-./agentx/master.lo: ../../include/net-snmp/config_api.h
-./agentx/master.lo: ../../include/net-snmp/library/read_config.h
-./agentx/master.lo: ../../include/net-snmp/library/default_store.h
-./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
-./agentx/master.lo: ../../include/net-snmp/library/keytools.h
-./agentx/master.lo: ../../include/net-snmp/library/scapi.h
-./agentx/master.lo: ../../include/net-snmp/library/lcd_time.h
-./agentx/master.lo: ../../include/net-snmp/library/snmp_secmod.h
-./agentx/master.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
-./agentx/master.lo: ../../include/net-snmp/library/snmpusm.h
-./agentx/master.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
-./agentx/master.lo: ../../include/net-snmp/agent/mib_module_config.h
-./agentx/master.lo: ../../include/net-snmp/agent/agent_module_config.h
-./agentx/master.lo: ../../include/net-snmp/agent/snmp_agent.h
-./agentx/master.lo: ../../include/net-snmp/agent/snmp_vars.h
-./agentx/master.lo: ../../include/net-snmp/agent/agent_handler.h
-./agentx/master.lo: ../../include/net-snmp/agent/var_struct.h
-./agentx/master.lo: ../../include/net-snmp/agent/agent_registry.h
-./agentx/master.lo: ../../include/net-snmp/library/fd_event_manager.h
-./agentx/master.lo: ../../include/net-snmp/agent/ds_agent.h
-./agentx/master.lo: ../../include/net-snmp/agent/agent_read_config.h
-./agentx/master.lo: ../../include/net-snmp/agent/agent_trap.h
-./agentx/master.lo: ../../include/net-snmp/agent/all_helpers.h
-./agentx/master.lo: ../../include/net-snmp/agent/instance.h
-./agentx/master.lo: ../../include/net-snmp/agent/baby_steps.h
-./agentx/master.lo: ../../include/net-snmp/agent/scalar.h
-./agentx/master.lo: ../../include/net-snmp/agent/scalar_group.h
-./agentx/master.lo: ../../include/net-snmp/agent/watcher.h
-./agentx/master.lo: ../../include/net-snmp/agent/multiplexer.h
-./agentx/master.lo: ../../include/net-snmp/agent/null.h
-./agentx/master.lo: ../../include/net-snmp/agent/debug_handler.h
-./agentx/master.lo: ../../include/net-snmp/agent/cache_handler.h
-./agentx/master.lo: ../../include/net-snmp/agent/old_api.h
-./agentx/master.lo: ../../include/net-snmp/agent/read_only.h
-./agentx/master.lo: ../../include/net-snmp/agent/row_merge.h
-./agentx/master.lo: ../../include/net-snmp/agent/serialize.h
-./agentx/master.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./agentx/master.lo: ../../include/net-snmp/agent/mode_end_call.h
-./agentx/master.lo: ../../include/net-snmp/agent/table.h
-./agentx/master.lo: ../../include/net-snmp/agent/table_data.h
-./agentx/master.lo: ../../include/net-snmp/agent/table_dataset.h
-./agentx/master.lo: ../../include/net-snmp/agent/table_tdata.h
-./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_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-features.h
 ./agentx/master_admin.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agentx/master_admin.lo: ../../include/net-snmp/definitions.h
 ./agentx/master_admin.lo: ../../include/net-snmp/types.h
+./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
+./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./agentx/master_admin.lo: ../../include/net-snmp/library/mib.h
+./agentx/master_admin.lo: ../../include/net-snmp/mib_api.h
+./agentx/master_admin.lo: ../../include/net-snmp/library/parse.h
+./agentx/master_admin.lo: ../../include/net-snmp/library/oid_stash.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_impl.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmp.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmp-tc.h
+./agentx/master_admin.lo: ../../include/net-snmp/library/getopt.h
 ./agentx/master_admin.lo: ../../include/net-snmp/utilities.h
-./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_client.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/system.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/tools.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/int64.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/mt_support.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_alarm.h
-./agentx/master_admin.lo: ../../include/net-snmp/library/callback.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/data_list.h
-./agentx/master_admin.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./agentx/master_admin.lo: ../../include/net-snmp/library/container.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_assert.h
 ./agentx/master_admin.lo: ../../include/net-snmp/version.h
-./agentx/master_admin.lo: ../../include/net-snmp/session_api.h
-./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_transport.h
-./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./agentx/master_admin.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agentx/master_admin.lo: ../../include/net-snmp/pdu_api.h
-./agentx/master_admin.lo: ../../include/net-snmp/mib_api.h
-./agentx/master_admin.lo: ../../include/net-snmp/library/mib.h
-./agentx/master_admin.lo: ../../include/net-snmp/library/parse.h
-./agentx/master_admin.lo: ../../include/net-snmp/varbind_api.h
 ./agentx/master_admin.lo: ../../include/net-snmp/config_api.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/read_config.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2037,6 +1393,7 @@
 ./agentx/master_admin.lo: ../../include/net-snmp/library/lcd_time.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agentx/master_admin.lo: ../../include/net-snmp/library/snmptsm.h
 ./agentx/master_admin.lo: ../../include/net-snmp/library/snmpusm.h
 ./agentx/master_admin.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agentx/master_admin.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2074,67 +1431,183 @@
 ./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: mibII/sysORTable.h ./agentx/master.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/net-snmp-features.h
+./agentx/master.lo: ../../include/net-snmp/net-snmp-includes.h
+./agentx/master.lo: ../../include/net-snmp/definitions.h
+./agentx/master.lo: ../../include/net-snmp/types.h
+./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
+./agentx/master.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./agentx/master.lo: ../../include/net-snmp/library/mib.h
+./agentx/master.lo: ../../include/net-snmp/mib_api.h
+./agentx/master.lo: ../../include/net-snmp/library/parse.h
+./agentx/master.lo: ../../include/net-snmp/library/oid_stash.h
+./agentx/master.lo: ../../include/net-snmp/library/snmp_impl.h
+./agentx/master.lo: ../../include/net-snmp/library/snmp.h
+./agentx/master.lo: ../../include/net-snmp/library/snmp-tc.h
+./agentx/master.lo: ../../include/net-snmp/library/getopt.h
+./agentx/master.lo: ../../include/net-snmp/utilities.h
+./agentx/master.lo: ../../include/net-snmp/library/system.h
+./agentx/master.lo: ../../include/net-snmp/library/tools.h
+./agentx/master.lo: ../../include/net-snmp/library/int64.h
+./agentx/master.lo: ../../include/net-snmp/library/mt_support.h
+./agentx/master.lo: ../../include/net-snmp/library/snmp_alarm.h
+./agentx/master.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./agentx/master.lo: ../../include/net-snmp/library/container.h
+./agentx/master.lo: ../../include/net-snmp/library/snmp_assert.h
+./agentx/master.lo: ../../include/net-snmp/version.h
+./agentx/master.lo: ../../include/net-snmp/config_api.h
+./agentx/master.lo: ../../include/net-snmp/library/read_config.h
+./agentx/master.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./agentx/master.lo: ../../include/net-snmp/library/snmpv3.h
+./agentx/master.lo: ../../include/net-snmp/library/transform_oids.h
+./agentx/master.lo: ../../include/net-snmp/library/keytools.h
+./agentx/master.lo: ../../include/net-snmp/library/scapi.h
+./agentx/master.lo: ../../include/net-snmp/library/lcd_time.h
+./agentx/master.lo: ../../include/net-snmp/library/snmp_secmod.h
+./agentx/master.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agentx/master.lo: ../../include/net-snmp/library/snmptsm.h
+./agentx/master.lo: ../../include/net-snmp/library/snmpusm.h
+./agentx/master.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./agentx/master.lo: ../../include/net-snmp/agent/mib_module_config.h
+./agentx/master.lo: ../../include/net-snmp/agent/agent_module_config.h
+./agentx/master.lo: ../../include/net-snmp/agent/snmp_agent.h
+./agentx/master.lo: ../../include/net-snmp/agent/snmp_vars.h
+./agentx/master.lo: ../../include/net-snmp/agent/agent_handler.h
+./agentx/master.lo: ../../include/net-snmp/agent/var_struct.h
+./agentx/master.lo: ../../include/net-snmp/agent/agent_registry.h
+./agentx/master.lo: ../../include/net-snmp/library/fd_event_manager.h
+./agentx/master.lo: ../../include/net-snmp/agent/ds_agent.h
+./agentx/master.lo: ../../include/net-snmp/agent/agent_read_config.h
+./agentx/master.lo: ../../include/net-snmp/agent/agent_trap.h
+./agentx/master.lo: ../../include/net-snmp/agent/all_helpers.h
+./agentx/master.lo: ../../include/net-snmp/agent/instance.h
+./agentx/master.lo: ../../include/net-snmp/agent/baby_steps.h
+./agentx/master.lo: ../../include/net-snmp/agent/scalar.h
+./agentx/master.lo: ../../include/net-snmp/agent/scalar_group.h
+./agentx/master.lo: ../../include/net-snmp/agent/watcher.h
+./agentx/master.lo: ../../include/net-snmp/agent/multiplexer.h
+./agentx/master.lo: ../../include/net-snmp/agent/null.h
+./agentx/master.lo: ../../include/net-snmp/agent/debug_handler.h
+./agentx/master.lo: ../../include/net-snmp/agent/cache_handler.h
+./agentx/master.lo: ../../include/net-snmp/agent/old_api.h
+./agentx/master.lo: ../../include/net-snmp/agent/read_only.h
+./agentx/master.lo: ../../include/net-snmp/agent/row_merge.h
+./agentx/master.lo: ../../include/net-snmp/agent/serialize.h
+./agentx/master.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./agentx/master.lo: ../../include/net-snmp/agent/mode_end_call.h
+./agentx/master.lo: ../../include/net-snmp/agent/table.h
+./agentx/master.lo: ../../include/net-snmp/agent/table_data.h
+./agentx/master.lo: ../../include/net-snmp/agent/table_dataset.h
+./agentx/master.lo: ../../include/net-snmp/agent/table_tdata.h
+./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
+./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
+./agentx/protocol.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./agentx/protocol.lo: ../../include/net-snmp/library/mib.h
+./agentx/protocol.lo: ../../include/net-snmp/mib_api.h
+./agentx/protocol.lo: ../../include/net-snmp/library/parse.h
+./agentx/protocol.lo: ../../include/net-snmp/library/oid_stash.h
+./agentx/protocol.lo: ../../include/net-snmp/net-snmp-features.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmp_impl.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmp.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmp-tc.h
+./agentx/protocol.lo: ../../include/net-snmp/library/getopt.h
 ./agentx/protocol.lo: ../../include/net-snmp/utilities.h
-./agentx/protocol.lo: ../../include/net-snmp/library/snmp_client.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/system.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/tools.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/int64.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/mt_support.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmp_alarm.h
-./agentx/protocol.lo: ../../include/net-snmp/library/callback.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/data_list.h
-./agentx/protocol.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./agentx/protocol.lo: ../../include/net-snmp/library/container.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmp_assert.h
 ./agentx/protocol.lo: ../../include/net-snmp/version.h
-./agentx/protocol.lo: ../../include/net-snmp/session_api.h
-./agentx/protocol.lo: ../../include/net-snmp/library/snmp_transport.h
-./agentx/protocol.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./agentx/protocol.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agentx/protocol.lo: ../../include/net-snmp/pdu_api.h
-./agentx/protocol.lo: ../../include/net-snmp/mib_api.h
-./agentx/protocol.lo: ../../include/net-snmp/library/mib.h
-./agentx/protocol.lo: ../../include/net-snmp/library/parse.h
-./agentx/protocol.lo: ../../include/net-snmp/varbind_api.h
 ./agentx/protocol.lo: ../../include/net-snmp/config_api.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/read_config.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2143,65 +1616,70 @@
 ./agentx/protocol.lo: ../../include/net-snmp/library/lcd_time.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agentx/protocol.lo: ../../include/net-snmp/library/snmptsm.h
 ./agentx/protocol.lo: ../../include/net-snmp/library/snmpusm.h
 ./agentx/protocol.lo: agentx/protocol.h
 ./agentx/subagent.lo: ../../include/net-snmp/net-snmp-config.h
-./agentx/subagent.lo: ../../include/net-snmp/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-features.h
 ./agentx/subagent.lo: ../../include/net-snmp/net-snmp-includes.h
 ./agentx/subagent.lo: ../../include/net-snmp/definitions.h
 ./agentx/subagent.lo: ../../include/net-snmp/types.h
+./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
+./agentx/subagent.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./agentx/subagent.lo: ../../include/net-snmp/library/mib.h
+./agentx/subagent.lo: ../../include/net-snmp/mib_api.h
+./agentx/subagent.lo: ../../include/net-snmp/library/parse.h
+./agentx/subagent.lo: ../../include/net-snmp/library/oid_stash.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmp_impl.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmp.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmp-tc.h
+./agentx/subagent.lo: ../../include/net-snmp/library/getopt.h
 ./agentx/subagent.lo: ../../include/net-snmp/utilities.h
-./agentx/subagent.lo: ../../include/net-snmp/library/snmp_client.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/system.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/tools.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/int64.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/mt_support.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmp_alarm.h
-./agentx/subagent.lo: ../../include/net-snmp/library/callback.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/data_list.h
-./agentx/subagent.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./agentx/subagent.lo: ../../include/net-snmp/library/container.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmp_assert.h
 ./agentx/subagent.lo: ../../include/net-snmp/version.h
-./agentx/subagent.lo: ../../include/net-snmp/session_api.h
-./agentx/subagent.lo: ../../include/net-snmp/library/snmp_transport.h
-./agentx/subagent.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./agentx/subagent.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./agentx/subagent.lo: ../../include/net-snmp/pdu_api.h
-./agentx/subagent.lo: ../../include/net-snmp/mib_api.h
-./agentx/subagent.lo: ../../include/net-snmp/library/mib.h
-./agentx/subagent.lo: ../../include/net-snmp/library/parse.h
-./agentx/subagent.lo: ../../include/net-snmp/varbind_api.h
 ./agentx/subagent.lo: ../../include/net-snmp/config_api.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/read_config.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2210,6 +1688,7 @@
 ./agentx/subagent.lo: ../../include/net-snmp/library/lcd_time.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./agentx/subagent.lo: ../../include/net-snmp/library/snmptsm.h
 ./agentx/subagent.lo: ../../include/net-snmp/library/snmpusm.h
 ./agentx/subagent.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./agentx/subagent.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2246,68 +1725,184 @@
 ./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: mibII/sysORTable.h ./agentx/subagent.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
+./deliver/deliverByNotify.lo: ../../include/net-snmp/net-snmp-config.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/net-snmp-features.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/net-snmp-includes.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/definitions.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/types.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/oid.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/types.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/varbind_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_client.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/pdu_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/asn1.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/output_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_debug.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_logging.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/session_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/callback.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_transport.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_service.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpUnixDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpTCPDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpIPXDomain.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/ucd_compat.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/mib.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/mib_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/parse.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/oid_stash.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_impl.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp-tc.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/getopt.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/utilities.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/system.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/tools.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/int64.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/mt_support.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_alarm.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/data_list.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/check_varbind.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/container.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/factory.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/container_binary_array.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/container_list_ssll.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/container_iterator.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/container.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_assert.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/version.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/config_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/read_config.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/default_store.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_parse_args.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_enum.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/vacm.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/snmpv3_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpv3.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/transform_oids.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/keytools.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/scapi.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/lcd_time.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmp_secmod.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmptsm.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/snmpusm.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/mib_module_config.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/agent_module_config.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/snmp_agent.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/snmp_vars.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/agent_handler.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/var_struct.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/agent_registry.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/library/fd_event_manager.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/ds_agent.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/agent_read_config.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/agent_trap.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/all_helpers.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/instance.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/baby_steps.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/scalar.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/scalar_group.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/watcher.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/multiplexer.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/null.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/debug_handler.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/cache_handler.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/old_api.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/read_only.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/row_merge.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/serialize.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/mode_end_call.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/table.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/table_data.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/table_dataset.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/table_tdata.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/table_iterator.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/table_container.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/table_array.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/mfd.h
+./deliver/deliverByNotify.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./deliver/deliverByNotify.lo: ./deliver/deliverByNotify.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/net-snmp-config.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/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-features.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/definitions.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/types.h
+./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
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/mib.h
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/mib_api.h
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/parse.h
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/getopt.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/utilities.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/system.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/tools.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/int64.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/mt_support.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/callback.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/data_list.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/container.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/version.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/session_api.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/pdu_api.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/mib_api.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/mib.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/parse.h
-./disman/mteEventNotificationTable.lo: ../../include/net-snmp/varbind_api.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/config_api.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/read_config.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2316,6 +1911,7 @@
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./disman/mteEventNotificationTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2353,64 +1949,69 @@
 ./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-features.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/definitions.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/types.h
+./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
+./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./disman/mteEventTable.lo: ../../include/net-snmp/library/mib.h
+./disman/mteEventTable.lo: ../../include/net-snmp/mib_api.h
+./disman/mteEventTable.lo: ../../include/net-snmp/library/parse.h
+./disman/mteEventTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./disman/mteEventTable.lo: ../../include/net-snmp/library/getopt.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/utilities.h
-./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/system.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/tools.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/int64.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/mt_support.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./disman/mteEventTable.lo: ../../include/net-snmp/library/callback.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/data_list.h
-./disman/mteEventTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/container.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/version.h
-./disman/mteEventTable.lo: ../../include/net-snmp/session_api.h
-./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./disman/mteEventTable.lo: ../../include/net-snmp/pdu_api.h
-./disman/mteEventTable.lo: ../../include/net-snmp/mib_api.h
-./disman/mteEventTable.lo: ../../include/net-snmp/library/mib.h
-./disman/mteEventTable.lo: ../../include/net-snmp/library/parse.h
-./disman/mteEventTable.lo: ../../include/net-snmp/varbind_api.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/config_api.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/read_config.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2419,6 +2020,7 @@
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./disman/mteEventTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./disman/mteEventTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2456,67 +2058,72 @@
 ./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-features.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/definitions.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/types.h
+./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
+./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./disman/mteObjectsTable.lo: ../../include/net-snmp/library/mib.h
+./disman/mteObjectsTable.lo: ../../include/net-snmp/mib_api.h
+./disman/mteObjectsTable.lo: ../../include/net-snmp/library/parse.h
+./disman/mteObjectsTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./disman/mteObjectsTable.lo: ../../include/net-snmp/library/getopt.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/utilities.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/system.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/tools.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/int64.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/mt_support.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/library/callback.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/data_list.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/container.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/version.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/session_api.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./disman/mteObjectsTable.lo: ../../include/net-snmp/pdu_api.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/mib_api.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/library/mib.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/library/parse.h
-./disman/mteObjectsTable.lo: ../../include/net-snmp/varbind_api.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/config_api.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/read_config.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2525,6 +2132,7 @@
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./disman/mteObjectsTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2562,65 +2170,70 @@
 ./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
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/mib.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/mib_api.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/parse.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/oid_stash.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/getopt.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/utilities.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/system.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/tools.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/int64.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/mt_support.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/callback.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/data_list.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/container.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/version.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/session_api.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/pdu_api.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/mib_api.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/mib.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/parse.h
-./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/varbind_api.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/config_api.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/read_config.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2629,6 +2242,7 @@
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./disman/mteTriggerBooleanTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2666,66 +2280,71 @@
 ./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
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/mib.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/mib_api.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/parse.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/oid_stash.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/getopt.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/utilities.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/system.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/tools.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/int64.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/mt_support.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/callback.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/data_list.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/container.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/version.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/session_api.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/pdu_api.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/mib_api.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/mib.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/parse.h
-./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/varbind_api.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/config_api.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/read_config.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2734,6 +2353,7 @@
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./disman/mteTriggerDeltaTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2771,66 +2391,71 @@
 ./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
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/mib.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/mib_api.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/parse.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/oid_stash.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/getopt.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/utilities.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/system.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/tools.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/int64.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/mt_support.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/callback.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/data_list.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/container.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/version.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/session_api.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/pdu_api.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/mib_api.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/mib.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/parse.h
-./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/varbind_api.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/config_api.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/read_config.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2839,6 +2464,7 @@
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./disman/mteTriggerExistenceTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2876,66 +2502,71 @@
 ./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-features.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/definitions.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/types.h
+./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
+./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./disman/mteTriggerTable.lo: ../../include/net-snmp/library/mib.h
+./disman/mteTriggerTable.lo: ../../include/net-snmp/mib_api.h
+./disman/mteTriggerTable.lo: ../../include/net-snmp/library/parse.h
+./disman/mteTriggerTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./disman/mteTriggerTable.lo: ../../include/net-snmp/library/getopt.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/utilities.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/system.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/tools.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/int64.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/mt_support.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/library/callback.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/data_list.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/container.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/version.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/session_api.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./disman/mteTriggerTable.lo: ../../include/net-snmp/pdu_api.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/mib_api.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/library/mib.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/library/parse.h
-./disman/mteTriggerTable.lo: ../../include/net-snmp/varbind_api.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/config_api.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/read_config.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -2944,6 +2575,7 @@
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./disman/mteTriggerTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -2981,6 +2613,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
@@ -2989,62 +2622,66 @@
 ./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
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/mib.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/mib_api.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/parse.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/oid_stash.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/getopt.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/utilities.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/system.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/tools.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/int64.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/mt_support.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/callback.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/data_list.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/container.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/version.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/session_api.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/pdu_api.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/mib_api.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/mib.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/parse.h
-./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/varbind_api.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/config_api.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/read_config.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -3053,6 +2690,7 @@
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./disman/mteTriggerThresholdTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -3090,66 +2728,71 @@
 ./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
+./examples/data_set.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./examples/data_set.lo: ../../include/net-snmp/library/mib.h
+./examples/data_set.lo: ../../include/net-snmp/mib_api.h
+./examples/data_set.lo: ../../include/net-snmp/library/parse.h
+./examples/data_set.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/data_set.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmp.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmp-tc.h
+./examples/data_set.lo: ../../include/net-snmp/library/getopt.h
 ./examples/data_set.lo: ../../include/net-snmp/utilities.h
-./examples/data_set.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/data_set.lo: ../../include/net-snmp/library/system.h
 ./examples/data_set.lo: ../../include/net-snmp/library/tools.h
 ./examples/data_set.lo: ../../include/net-snmp/library/int64.h
 ./examples/data_set.lo: ../../include/net-snmp/library/mt_support.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmp_alarm.h
-./examples/data_set.lo: ../../include/net-snmp/library/callback.h
 ./examples/data_set.lo: ../../include/net-snmp/library/data_list.h
-./examples/data_set.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./examples/data_set.lo: ../../include/net-snmp/library/container.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmp_assert.h
 ./examples/data_set.lo: ../../include/net-snmp/version.h
-./examples/data_set.lo: ../../include/net-snmp/session_api.h
-./examples/data_set.lo: ../../include/net-snmp/library/snmp_transport.h
-./examples/data_set.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./examples/data_set.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./examples/data_set.lo: ../../include/net-snmp/pdu_api.h
-./examples/data_set.lo: ../../include/net-snmp/mib_api.h
-./examples/data_set.lo: ../../include/net-snmp/library/mib.h
-./examples/data_set.lo: ../../include/net-snmp/library/parse.h
-./examples/data_set.lo: ../../include/net-snmp/varbind_api.h
 ./examples/data_set.lo: ../../include/net-snmp/config_api.h
 ./examples/data_set.lo: ../../include/net-snmp/library/read_config.h
 ./examples/data_set.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -3158,6 +2801,7 @@
 ./examples/data_set.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/data_set.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/data_set.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/data_set.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/data_set.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -3195,63 +2839,68 @@
 ./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
+./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./examples/delayed_instance.lo: ../../include/net-snmp/library/mib.h
+./examples/delayed_instance.lo: ../../include/net-snmp/mib_api.h
+./examples/delayed_instance.lo: ../../include/net-snmp/library/parse.h
+./examples/delayed_instance.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/delayed_instance.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp-tc.h
+./examples/delayed_instance.lo: ../../include/net-snmp/library/getopt.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/utilities.h
-./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/system.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/tools.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/int64.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/mt_support.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_alarm.h
-./examples/delayed_instance.lo: ../../include/net-snmp/library/callback.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/data_list.h
-./examples/delayed_instance.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/container.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_assert.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/version.h
-./examples/delayed_instance.lo: ../../include/net-snmp/session_api.h
-./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_transport.h
-./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./examples/delayed_instance.lo: ../../include/net-snmp/pdu_api.h
-./examples/delayed_instance.lo: ../../include/net-snmp/mib_api.h
-./examples/delayed_instance.lo: ../../include/net-snmp/library/mib.h
-./examples/delayed_instance.lo: ../../include/net-snmp/library/parse.h
-./examples/delayed_instance.lo: ../../include/net-snmp/varbind_api.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/config_api.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/read_config.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -3260,6 +2909,7 @@
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/delayed_instance.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/delayed_instance.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -3297,64 +2947,69 @@
 ./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
+./examples/example.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./examples/example.lo: ../../include/net-snmp/library/mib.h
+./examples/example.lo: ../../include/net-snmp/mib_api.h
+./examples/example.lo: ../../include/net-snmp/library/parse.h
+./examples/example.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/example.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/example.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/example.lo: ../../include/net-snmp/library/snmp.h
 ./examples/example.lo: ../../include/net-snmp/library/snmp-tc.h
+./examples/example.lo: ../../include/net-snmp/library/getopt.h
 ./examples/example.lo: ../../include/net-snmp/utilities.h
-./examples/example.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/example.lo: ../../include/net-snmp/library/system.h
 ./examples/example.lo: ../../include/net-snmp/library/tools.h
 ./examples/example.lo: ../../include/net-snmp/library/int64.h
 ./examples/example.lo: ../../include/net-snmp/library/mt_support.h
 ./examples/example.lo: ../../include/net-snmp/library/snmp_alarm.h
-./examples/example.lo: ../../include/net-snmp/library/callback.h
 ./examples/example.lo: ../../include/net-snmp/library/data_list.h
-./examples/example.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./examples/example.lo: ../../include/net-snmp/library/container.h
 ./examples/example.lo: ../../include/net-snmp/library/snmp_assert.h
 ./examples/example.lo: ../../include/net-snmp/version.h
-./examples/example.lo: ../../include/net-snmp/session_api.h
-./examples/example.lo: ../../include/net-snmp/library/snmp_transport.h
-./examples/example.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./examples/example.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./examples/example.lo: ../../include/net-snmp/pdu_api.h
-./examples/example.lo: ../../include/net-snmp/mib_api.h
-./examples/example.lo: ../../include/net-snmp/library/mib.h
-./examples/example.lo: ../../include/net-snmp/library/parse.h
-./examples/example.lo: ../../include/net-snmp/varbind_api.h
 ./examples/example.lo: ../../include/net-snmp/config_api.h
 ./examples/example.lo: ../../include/net-snmp/library/read_config.h
 ./examples/example.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -3363,6 +3018,7 @@
 ./examples/example.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/example.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/example.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/example.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/example.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/example.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/example.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -3399,172 +3055,70 @@
 ./examples/example.lo: ../../include/net-snmp/agent/table_iterator.h
 ./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 util_funcs.h
-./examples/example.lo: struct.h ./examples/example.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/snmp_api.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/asn1.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_impl.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp-tc.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/utilities.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_client.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/system.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/tools.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/int64.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/mt_support.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/callback.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/data_list.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/oid_stash.h
-./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
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/container.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_assert.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/version.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/session_api.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/pdu_api.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/mib_api.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/mib.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/parse.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/varbind_api.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/config_api.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/read_config.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/default_store.h
-./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
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/keytools.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/scapi.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/lcd_time.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_secmod.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpusm.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/mib_module_config.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/agent_module_config.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/snmp_agent.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/snmp_vars.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/agent_handler.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/var_struct.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/agent_registry.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/fd_event_manager.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/ds_agent.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/agent_read_config.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/agent_trap.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/all_helpers.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/instance.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/baby_steps.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/scalar.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/scalar_group.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/watcher.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/multiplexer.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/null.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/debug_handler.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/cache_handler.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/old_api.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/read_only.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/row_merge.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/serialize.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/mode_end_call.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/table.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/table_data.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/table_dataset.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/table_tdata.h
-./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/table_iterator.h
-./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: ./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/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
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/mib.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/mib_api.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/parse.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp-tc.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/getopt.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/utilities.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/system.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/tools.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/int64.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/mt_support.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_alarm.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/callback.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/data_list.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/container.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_assert.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/version.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/session_api.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_transport.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/pdu_api.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/mib_api.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/mib.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/parse.h
-./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/varbind_api.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/config_api.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/read_config.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -3573,6 +3127,7 @@
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/netSnmpHostsTable_access.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -3610,65 +3165,183 @@
 ./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/net-snmp-features.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/net-snmp-includes.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/definitions.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/types.h
+./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
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/mib.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/mib_api.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/parse.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_impl.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/getopt.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/utilities.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/system.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/tools.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/int64.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/mt_support.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_alarm.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/container.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_assert.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/version.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/config_api.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/read_config.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpv3.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/transform_oids.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/keytools.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/scapi.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/lcd_time.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmp_secmod.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmptsm.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/snmpusm.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/mib_module_config.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/agent_module_config.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/snmp_agent.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/snmp_vars.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/agent_handler.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/var_struct.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/agent_registry.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/library/fd_event_manager.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/ds_agent.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/agent_read_config.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/agent_trap.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/all_helpers.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/instance.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/baby_steps.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/scalar.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/scalar_group.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/watcher.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/multiplexer.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/null.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/debug_handler.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/cache_handler.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/old_api.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/read_only.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/row_merge.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/serialize.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/mode_end_call.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/table.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/table_data.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/table_dataset.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/table_tdata.h
+./examples/netSnmpHostsTable.lo: ../../include/net-snmp/agent/table_iterator.h
+./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-features.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/net-snmp-includes.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/definitions.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/types.h
+./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
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/mib.h
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/mib_api.h
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/parse.h
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/oid_stash.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp-tc.h
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/getopt.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/utilities.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/system.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/tools.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/int64.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/mt_support.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_alarm.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/callback.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/data_list.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/container.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_assert.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/version.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/session_api.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_transport.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/pdu_api.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/mib_api.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/mib.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/parse.h
-./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/varbind_api.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/config_api.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/read_config.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -3677,67 +3350,72 @@
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/netSnmpHostsTable_checkfns.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/netSnmpHostsTable_checkfns.lo: ./examples/netSnmpHostsTable_checkfns.h
 ./examples/netSnmpHostsTable_checkfns.lo: ./examples/netSnmpHostsTable_checkfns_local.h
 ./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
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/mib.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/mib_api.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/parse.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp-tc.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/getopt.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/utilities.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/system.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/tools.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/int64.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/mt_support.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_alarm.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/callback.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/data_list.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/container.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_assert.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/version.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/session_api.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_transport.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/pdu_api.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/mib_api.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/mib.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/parse.h
-./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/varbind_api.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/config_api.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/read_config.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -3746,66 +3424,71 @@
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ./examples/netSnmpHostsTable_checkfns.h
 ./examples/netSnmpHostsTable_checkfns_local.lo: ./examples/netSnmpHostsTable_enums.h
 ./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
+./examples/notification.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./examples/notification.lo: ../../include/net-snmp/library/mib.h
+./examples/notification.lo: ../../include/net-snmp/mib_api.h
+./examples/notification.lo: ../../include/net-snmp/library/parse.h
+./examples/notification.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/notification.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmp.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmp-tc.h
+./examples/notification.lo: ../../include/net-snmp/library/getopt.h
 ./examples/notification.lo: ../../include/net-snmp/utilities.h
-./examples/notification.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/notification.lo: ../../include/net-snmp/library/system.h
 ./examples/notification.lo: ../../include/net-snmp/library/tools.h
 ./examples/notification.lo: ../../include/net-snmp/library/int64.h
 ./examples/notification.lo: ../../include/net-snmp/library/mt_support.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmp_alarm.h
-./examples/notification.lo: ../../include/net-snmp/library/callback.h
 ./examples/notification.lo: ../../include/net-snmp/library/data_list.h
-./examples/notification.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./examples/notification.lo: ../../include/net-snmp/library/container.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmp_assert.h
 ./examples/notification.lo: ../../include/net-snmp/version.h
-./examples/notification.lo: ../../include/net-snmp/session_api.h
-./examples/notification.lo: ../../include/net-snmp/library/snmp_transport.h
-./examples/notification.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./examples/notification.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./examples/notification.lo: ../../include/net-snmp/pdu_api.h
-./examples/notification.lo: ../../include/net-snmp/mib_api.h
-./examples/notification.lo: ../../include/net-snmp/library/mib.h
-./examples/notification.lo: ../../include/net-snmp/library/parse.h
-./examples/notification.lo: ../../include/net-snmp/varbind_api.h
 ./examples/notification.lo: ../../include/net-snmp/config_api.h
 ./examples/notification.lo: ../../include/net-snmp/library/read_config.h
 ./examples/notification.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -3814,6 +3497,7 @@
 ./examples/notification.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/notification.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/notification.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/notification.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/notification.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -3850,64 +3534,70 @@
 ./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-features.h
 ./examples/scalar_int.lo: ../../include/net-snmp/net-snmp-includes.h
 ./examples/scalar_int.lo: ../../include/net-snmp/definitions.h
 ./examples/scalar_int.lo: ../../include/net-snmp/types.h
+./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
+./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./examples/scalar_int.lo: ../../include/net-snmp/library/mib.h
+./examples/scalar_int.lo: ../../include/net-snmp/mib_api.h
+./examples/scalar_int.lo: ../../include/net-snmp/library/parse.h
+./examples/scalar_int.lo: ../../include/net-snmp/library/oid_stash.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmp.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmp-tc.h
+./examples/scalar_int.lo: ../../include/net-snmp/library/getopt.h
 ./examples/scalar_int.lo: ../../include/net-snmp/utilities.h
-./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/system.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/tools.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/int64.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/mt_support.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_alarm.h
-./examples/scalar_int.lo: ../../include/net-snmp/library/callback.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/data_list.h
-./examples/scalar_int.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./examples/scalar_int.lo: ../../include/net-snmp/library/container.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_assert.h
 ./examples/scalar_int.lo: ../../include/net-snmp/version.h
-./examples/scalar_int.lo: ../../include/net-snmp/session_api.h
-./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_transport.h
-./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./examples/scalar_int.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./examples/scalar_int.lo: ../../include/net-snmp/pdu_api.h
-./examples/scalar_int.lo: ../../include/net-snmp/mib_api.h
-./examples/scalar_int.lo: ../../include/net-snmp/library/mib.h
-./examples/scalar_int.lo: ../../include/net-snmp/library/parse.h
-./examples/scalar_int.lo: ../../include/net-snmp/varbind_api.h
 ./examples/scalar_int.lo: ../../include/net-snmp/config_api.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/read_config.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -3916,6 +3606,7 @@
 ./examples/scalar_int.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/scalar_int.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/scalar_int.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/scalar_int.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/scalar_int.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -3953,63 +3644,68 @@
 ./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
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/mib.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/mib_api.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/parse.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp-tc.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/getopt.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/utilities.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/system.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/tools.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/int64.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/mt_support.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_alarm.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/callback.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/data_list.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/container.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_assert.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/version.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/session_api.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_transport.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/pdu_api.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/mib_api.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/mib.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/parse.h
-./examples/ucdDemoPublic.lo: ../../include/net-snmp/varbind_api.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/config_api.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/read_config.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -4018,6 +3714,7 @@
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -4054,65 +3751,71 @@
 ./examples/ucdDemoPublic.lo: ../../include/net-snmp/agent/table_iterator.h
 ./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 util_funcs.h
-./examples/ucdDemoPublic.lo: struct.h ./examples/ucdDemoPublic.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
+./examples/watched.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./examples/watched.lo: ../../include/net-snmp/library/mib.h
+./examples/watched.lo: ../../include/net-snmp/mib_api.h
+./examples/watched.lo: ../../include/net-snmp/library/parse.h
+./examples/watched.lo: ../../include/net-snmp/library/oid_stash.h
+./examples/watched.lo: ../../include/net-snmp/net-snmp-features.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmp_impl.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmp.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmp-tc.h
+./examples/watched.lo: ../../include/net-snmp/library/getopt.h
 ./examples/watched.lo: ../../include/net-snmp/utilities.h
-./examples/watched.lo: ../../include/net-snmp/library/snmp_client.h
 ./examples/watched.lo: ../../include/net-snmp/library/system.h
 ./examples/watched.lo: ../../include/net-snmp/library/tools.h
 ./examples/watched.lo: ../../include/net-snmp/library/int64.h
 ./examples/watched.lo: ../../include/net-snmp/library/mt_support.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmp_alarm.h
-./examples/watched.lo: ../../include/net-snmp/library/callback.h
 ./examples/watched.lo: ../../include/net-snmp/library/data_list.h
-./examples/watched.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./examples/watched.lo: ../../include/net-snmp/library/container.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmp_assert.h
 ./examples/watched.lo: ../../include/net-snmp/version.h
-./examples/watched.lo: ../../include/net-snmp/session_api.h
-./examples/watched.lo: ../../include/net-snmp/library/snmp_transport.h
-./examples/watched.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./examples/watched.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./examples/watched.lo: ../../include/net-snmp/pdu_api.h
-./examples/watched.lo: ../../include/net-snmp/mib_api.h
-./examples/watched.lo: ../../include/net-snmp/library/mib.h
-./examples/watched.lo: ../../include/net-snmp/library/parse.h
-./examples/watched.lo: ../../include/net-snmp/varbind_api.h
 ./examples/watched.lo: ../../include/net-snmp/config_api.h
 ./examples/watched.lo: ../../include/net-snmp/library/read_config.h
 ./examples/watched.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -4121,6 +3824,7 @@
 ./examples/watched.lo: ../../include/net-snmp/library/lcd_time.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./examples/watched.lo: ../../include/net-snmp/library/snmptsm.h
 ./examples/watched.lo: ../../include/net-snmp/library/snmpusm.h
 ./examples/watched.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./examples/watched.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -4158,64 +3862,69 @@
 ./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
+./host/hr_device.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hr_device.lo: ../../include/net-snmp/library/mib.h
+./host/hr_device.lo: ../../include/net-snmp/mib_api.h
+./host/hr_device.lo: ../../include/net-snmp/library/parse.h
+./host/hr_device.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hr_device.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmp-tc.h
+./host/hr_device.lo: ../../include/net-snmp/library/getopt.h
 ./host/hr_device.lo: ../../include/net-snmp/utilities.h
-./host/hr_device.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_device.lo: ../../include/net-snmp/library/system.h
 ./host/hr_device.lo: ../../include/net-snmp/library/tools.h
 ./host/hr_device.lo: ../../include/net-snmp/library/int64.h
 ./host/hr_device.lo: ../../include/net-snmp/library/mt_support.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmp_alarm.h
-./host/hr_device.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_device.lo: ../../include/net-snmp/library/data_list.h
-./host/hr_device.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./host/hr_device.lo: ../../include/net-snmp/library/container.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmp_assert.h
 ./host/hr_device.lo: ../../include/net-snmp/version.h
-./host/hr_device.lo: ../../include/net-snmp/session_api.h
-./host/hr_device.lo: ../../include/net-snmp/library/snmp_transport.h
-./host/hr_device.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./host/hr_device.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./host/hr_device.lo: ../../include/net-snmp/pdu_api.h
-./host/hr_device.lo: ../../include/net-snmp/mib_api.h
-./host/hr_device.lo: ../../include/net-snmp/library/mib.h
-./host/hr_device.lo: ../../include/net-snmp/library/parse.h
-./host/hr_device.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_device.lo: ../../include/net-snmp/config_api.h
 ./host/hr_device.lo: ../../include/net-snmp/library/read_config.h
 ./host/hr_device.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -4224,6 +3933,7 @@
 ./host/hr_device.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_device.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_device.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_device.lo: ../../include/net-snmp/agent/snmp_agent.h
 ./host/hr_device.lo: ../../include/net-snmp/agent/agent_handler.h
@@ -4232,63 +3942,67 @@
 ./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
+./host/hr_disk.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hr_disk.lo: ../../include/net-snmp/library/mib.h
+./host/hr_disk.lo: ../../include/net-snmp/mib_api.h
+./host/hr_disk.lo: ../../include/net-snmp/library/parse.h
+./host/hr_disk.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hr_disk.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmp-tc.h
+./host/hr_disk.lo: ../../include/net-snmp/library/getopt.h
 ./host/hr_disk.lo: ../../include/net-snmp/utilities.h
-./host/hr_disk.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/system.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/tools.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/int64.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/mt_support.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmp_alarm.h
-./host/hr_disk.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/data_list.h
-./host/hr_disk.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./host/hr_disk.lo: ../../include/net-snmp/library/container.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmp_assert.h
 ./host/hr_disk.lo: ../../include/net-snmp/version.h
-./host/hr_disk.lo: ../../include/net-snmp/session_api.h
-./host/hr_disk.lo: ../../include/net-snmp/library/snmp_transport.h
-./host/hr_disk.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./host/hr_disk.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./host/hr_disk.lo: ../../include/net-snmp/pdu_api.h
-./host/hr_disk.lo: ../../include/net-snmp/mib_api.h
-./host/hr_disk.lo: ../../include/net-snmp/library/mib.h
-./host/hr_disk.lo: ../../include/net-snmp/library/parse.h
-./host/hr_disk.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_disk.lo: ../../include/net-snmp/config_api.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/read_config.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -4297,6 +4011,7 @@
 ./host/hr_disk.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_disk.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_disk.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_disk.lo: ../../include/net-snmp/agent/snmp_agent.h
 ./host/hr_disk.lo: ../../include/net-snmp/agent/agent_handler.h
@@ -4307,62 +4022,66 @@
 ./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-features.h
 ./host/hr_filesys.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hr_filesys.lo: ../../include/net-snmp/definitions.h
 ./host/hr_filesys.lo: ../../include/net-snmp/types.h
+./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
+./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hr_filesys.lo: ../../include/net-snmp/library/mib.h
+./host/hr_filesys.lo: ../../include/net-snmp/mib_api.h
+./host/hr_filesys.lo: ../../include/net-snmp/library/parse.h
+./host/hr_filesys.lo: ../../include/net-snmp/library/oid_stash.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmp-tc.h
+./host/hr_filesys.lo: ../../include/net-snmp/library/getopt.h
 ./host/hr_filesys.lo: ../../include/net-snmp/utilities.h
-./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/system.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/tools.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/int64.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/mt_support.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_alarm.h
-./host/hr_filesys.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/data_list.h
-./host/hr_filesys.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./host/hr_filesys.lo: ../../include/net-snmp/library/container.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_assert.h
 ./host/hr_filesys.lo: ../../include/net-snmp/version.h
-./host/hr_filesys.lo: ../../include/net-snmp/session_api.h
-./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_transport.h
-./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./host/hr_filesys.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./host/hr_filesys.lo: ../../include/net-snmp/pdu_api.h
-./host/hr_filesys.lo: ../../include/net-snmp/mib_api.h
-./host/hr_filesys.lo: ../../include/net-snmp/library/mib.h
-./host/hr_filesys.lo: ../../include/net-snmp/library/parse.h
-./host/hr_filesys.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_filesys.lo: ../../include/net-snmp/config_api.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/read_config.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -4371,6 +4090,7 @@
 ./host/hr_filesys.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_filesys.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_filesys.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_filesys.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./host/hr_filesys.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -4408,66 +4128,295 @@
 ./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_filesys.lo: host_res.h ./host/hr_filesys.h ./host/hr_storage.h
+./host/hr_filesys.lo: ./host/hr_disk.h
+./host/hrh_filesys.lo: ../../include/net-snmp/net-snmp-config.h
+./host/hrh_filesys.lo: ../../include/net-snmp/net-snmp-features.h
+./host/hrh_filesys.lo: ../../include/net-snmp/net-snmp-includes.h
+./host/hrh_filesys.lo: ../../include/net-snmp/definitions.h
+./host/hrh_filesys.lo: ../../include/net-snmp/types.h
+./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
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hrh_filesys.lo: ../../include/net-snmp/library/mib.h
+./host/hrh_filesys.lo: ../../include/net-snmp/mib_api.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/parse.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp_impl.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp-tc.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/getopt.h
+./host/hrh_filesys.lo: ../../include/net-snmp/utilities.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/system.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/tools.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/int64.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/mt_support.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp_alarm.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./host/hrh_filesys.lo: ../../include/net-snmp/library/container.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp_assert.h
+./host/hrh_filesys.lo: ../../include/net-snmp/version.h
+./host/hrh_filesys.lo: ../../include/net-snmp/config_api.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/read_config.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpv3.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/transform_oids.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/keytools.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/scapi.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/lcd_time.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmp_secmod.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmptsm.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/snmpusm.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/mib_module_config.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/agent_module_config.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/snmp_agent.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/snmp_vars.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/agent_handler.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/var_struct.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/agent_registry.h
+./host/hrh_filesys.lo: ../../include/net-snmp/library/fd_event_manager.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/ds_agent.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/agent_read_config.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/agent_trap.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/all_helpers.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/instance.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/baby_steps.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/scalar.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/scalar_group.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/watcher.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/multiplexer.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/null.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/debug_handler.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/cache_handler.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/old_api.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/read_only.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/row_merge.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/serialize.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/mode_end_call.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/table.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/table_data.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/table_dataset.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/table_tdata.h
+./host/hrh_filesys.lo: ../../include/net-snmp/agent/table_iterator.h
+./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_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/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
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hrh_storage.lo: ../../include/net-snmp/library/mib.h
+./host/hrh_storage.lo: ../../include/net-snmp/mib_api.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/parse.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hrh_storage.lo: ../../include/net-snmp/net-snmp-features.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_impl.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmp.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmp-tc.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/getopt.h
+./host/hrh_storage.lo: ../../include/net-snmp/utilities.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/system.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/tools.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/int64.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/mt_support.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_alarm.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./host/hrh_storage.lo: ../../include/net-snmp/library/container.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_assert.h
+./host/hrh_storage.lo: ../../include/net-snmp/version.h
+./host/hrh_storage.lo: ../../include/net-snmp/config_api.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/read_config.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmpv3.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/transform_oids.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/keytools.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/scapi.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/lcd_time.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmp_secmod.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmptsm.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/snmpusm.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/mib_module_config.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/agent_module_config.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/snmp_agent.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/snmp_vars.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/agent_handler.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/var_struct.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/agent_registry.h
+./host/hrh_storage.lo: ../../include/net-snmp/library/fd_event_manager.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/ds_agent.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/agent_read_config.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/agent_trap.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/all_helpers.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/instance.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/baby_steps.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/scalar.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/scalar_group.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/watcher.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/multiplexer.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/null.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/debug_handler.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/cache_handler.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/old_api.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/read_only.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/row_merge.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/serialize.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/mode_end_call.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/table.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/table_data.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/table_dataset.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/table_tdata.h
+./host/hrh_storage.lo: ../../include/net-snmp/agent/table_iterator.h
+./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.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-features.h
 ./host/hr_network.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hr_network.lo: ../../include/net-snmp/definitions.h
 ./host/hr_network.lo: ../../include/net-snmp/types.h
+./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
+./host/hr_network.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hr_network.lo: ../../include/net-snmp/library/mib.h
+./host/hr_network.lo: ../../include/net-snmp/mib_api.h
+./host/hr_network.lo: ../../include/net-snmp/library/parse.h
+./host/hr_network.lo: ../../include/net-snmp/library/oid_stash.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmp-tc.h
+./host/hr_network.lo: ../../include/net-snmp/library/getopt.h
 ./host/hr_network.lo: ../../include/net-snmp/utilities.h
-./host/hr_network.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_network.lo: ../../include/net-snmp/library/system.h
 ./host/hr_network.lo: ../../include/net-snmp/library/tools.h
 ./host/hr_network.lo: ../../include/net-snmp/library/int64.h
 ./host/hr_network.lo: ../../include/net-snmp/library/mt_support.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmp_alarm.h
-./host/hr_network.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_network.lo: ../../include/net-snmp/library/data_list.h
-./host/hr_network.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./host/hr_network.lo: ../../include/net-snmp/library/container.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmp_assert.h
 ./host/hr_network.lo: ../../include/net-snmp/version.h
-./host/hr_network.lo: ../../include/net-snmp/session_api.h
-./host/hr_network.lo: ../../include/net-snmp/library/snmp_transport.h
-./host/hr_network.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./host/hr_network.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./host/hr_network.lo: ../../include/net-snmp/pdu_api.h
-./host/hr_network.lo: ../../include/net-snmp/mib_api.h
-./host/hr_network.lo: ../../include/net-snmp/library/mib.h
-./host/hr_network.lo: ../../include/net-snmp/library/parse.h
-./host/hr_network.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_network.lo: ../../include/net-snmp/config_api.h
 ./host/hr_network.lo: ../../include/net-snmp/library/read_config.h
 ./host/hr_network.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -4476,6 +4425,7 @@
 ./host/hr_network.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_network.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_network.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_network.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./host/hr_network.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -4513,66 +4463,71 @@
 ./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
+./host/hr_other.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hr_other.lo: ../../include/net-snmp/library/mib.h
+./host/hr_other.lo: ../../include/net-snmp/mib_api.h
+./host/hr_other.lo: ../../include/net-snmp/library/parse.h
+./host/hr_other.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hr_other.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmp-tc.h
+./host/hr_other.lo: ../../include/net-snmp/library/getopt.h
 ./host/hr_other.lo: ../../include/net-snmp/utilities.h
-./host/hr_other.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_other.lo: ../../include/net-snmp/library/system.h
 ./host/hr_other.lo: ../../include/net-snmp/library/tools.h
 ./host/hr_other.lo: ../../include/net-snmp/library/int64.h
 ./host/hr_other.lo: ../../include/net-snmp/library/mt_support.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmp_alarm.h
-./host/hr_other.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_other.lo: ../../include/net-snmp/library/data_list.h
-./host/hr_other.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./host/hr_other.lo: ../../include/net-snmp/library/container.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmp_assert.h
 ./host/hr_other.lo: ../../include/net-snmp/version.h
-./host/hr_other.lo: ../../include/net-snmp/session_api.h
-./host/hr_other.lo: ../../include/net-snmp/library/snmp_transport.h
-./host/hr_other.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./host/hr_other.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./host/hr_other.lo: ../../include/net-snmp/pdu_api.h
-./host/hr_other.lo: ../../include/net-snmp/mib_api.h
-./host/hr_other.lo: ../../include/net-snmp/library/mib.h
-./host/hr_other.lo: ../../include/net-snmp/library/parse.h
-./host/hr_other.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_other.lo: ../../include/net-snmp/config_api.h
 ./host/hr_other.lo: ../../include/net-snmp/library/read_config.h
 ./host/hr_other.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -4581,6 +4536,7 @@
 ./host/hr_other.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_other.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_other.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_other.lo: ../../include/net-snmp/agent/snmp_agent.h
 ./host/hr_other.lo: ../../include/net-snmp/agent/agent_handler.h
@@ -4590,63 +4546,67 @@
 ./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
+./host/hr_partition.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hr_partition.lo: ../../include/net-snmp/library/mib.h
+./host/hr_partition.lo: ../../include/net-snmp/mib_api.h
+./host/hr_partition.lo: ../../include/net-snmp/library/parse.h
+./host/hr_partition.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hr_partition.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmp-tc.h
+./host/hr_partition.lo: ../../include/net-snmp/library/getopt.h
 ./host/hr_partition.lo: ../../include/net-snmp/utilities.h
-./host/hr_partition.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/system.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/tools.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/int64.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/mt_support.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmp_alarm.h
-./host/hr_partition.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/data_list.h
-./host/hr_partition.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./host/hr_partition.lo: ../../include/net-snmp/library/container.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmp_assert.h
 ./host/hr_partition.lo: ../../include/net-snmp/version.h
-./host/hr_partition.lo: ../../include/net-snmp/session_api.h
-./host/hr_partition.lo: ../../include/net-snmp/library/snmp_transport.h
-./host/hr_partition.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./host/hr_partition.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./host/hr_partition.lo: ../../include/net-snmp/pdu_api.h
-./host/hr_partition.lo: ../../include/net-snmp/mib_api.h
-./host/hr_partition.lo: ../../include/net-snmp/library/mib.h
-./host/hr_partition.lo: ../../include/net-snmp/library/parse.h
-./host/hr_partition.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_partition.lo: ../../include/net-snmp/config_api.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/read_config.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -4655,6 +4615,7 @@
 ./host/hr_partition.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_partition.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_partition.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_partition.lo: ../../include/net-snmp/agent/snmp_agent.h
 ./host/hr_partition.lo: ../../include/net-snmp/agent/agent_handler.h
@@ -4662,66 +4623,70 @@
 ./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
+./host/hr_print.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hr_print.lo: ../../include/net-snmp/library/mib.h
+./host/hr_print.lo: ../../include/net-snmp/mib_api.h
+./host/hr_print.lo: ../../include/net-snmp/library/parse.h
+./host/hr_print.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hr_print.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmp-tc.h
+./host/hr_print.lo: ../../include/net-snmp/library/getopt.h
 ./host/hr_print.lo: ../../include/net-snmp/utilities.h
-./host/hr_print.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_print.lo: ../../include/net-snmp/library/system.h
 ./host/hr_print.lo: ../../include/net-snmp/library/tools.h
 ./host/hr_print.lo: ../../include/net-snmp/library/int64.h
 ./host/hr_print.lo: ../../include/net-snmp/library/mt_support.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmp_alarm.h
-./host/hr_print.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_print.lo: ../../include/net-snmp/library/data_list.h
-./host/hr_print.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./host/hr_print.lo: ../../include/net-snmp/library/container.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmp_assert.h
 ./host/hr_print.lo: ../../include/net-snmp/version.h
-./host/hr_print.lo: ../../include/net-snmp/session_api.h
-./host/hr_print.lo: ../../include/net-snmp/library/snmp_transport.h
-./host/hr_print.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./host/hr_print.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./host/hr_print.lo: ../../include/net-snmp/pdu_api.h
-./host/hr_print.lo: ../../include/net-snmp/mib_api.h
-./host/hr_print.lo: ../../include/net-snmp/library/mib.h
-./host/hr_print.lo: ../../include/net-snmp/library/parse.h
-./host/hr_print.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_print.lo: ../../include/net-snmp/config_api.h
 ./host/hr_print.lo: ../../include/net-snmp/library/read_config.h
 ./host/hr_print.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -4730,6 +4695,7 @@
 ./host/hr_print.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_print.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_print.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_print.lo: ../../include/net-snmp/agent/snmp_agent.h
 ./host/hr_print.lo: ../../include/net-snmp/agent/agent_handler.h
@@ -4737,65 +4703,71 @@
 ./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
+./host/hr_print.lo: ./host/hr_print.h struct.h util_funcs.h
+./host/hr_print.lo: util_funcs/header_generic.h
+./host/hr_print.lo: util_funcs/header_simple_table.h
+./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
+./host/hr_proc.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hr_proc.lo: ../../include/net-snmp/library/mib.h
+./host/hr_proc.lo: ../../include/net-snmp/mib_api.h
+./host/hr_proc.lo: ../../include/net-snmp/library/parse.h
+./host/hr_proc.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hr_proc.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmp-tc.h
+./host/hr_proc.lo: ../../include/net-snmp/library/getopt.h
 ./host/hr_proc.lo: ../../include/net-snmp/utilities.h
-./host/hr_proc.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/system.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/tools.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/int64.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/mt_support.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmp_alarm.h
-./host/hr_proc.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/data_list.h
-./host/hr_proc.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./host/hr_proc.lo: ../../include/net-snmp/library/container.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmp_assert.h
 ./host/hr_proc.lo: ../../include/net-snmp/version.h
-./host/hr_proc.lo: ../../include/net-snmp/session_api.h
-./host/hr_proc.lo: ../../include/net-snmp/library/snmp_transport.h
-./host/hr_proc.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./host/hr_proc.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./host/hr_proc.lo: ../../include/net-snmp/pdu_api.h
-./host/hr_proc.lo: ../../include/net-snmp/mib_api.h
-./host/hr_proc.lo: ../../include/net-snmp/library/mib.h
-./host/hr_proc.lo: ../../include/net-snmp/library/parse.h
-./host/hr_proc.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_proc.lo: ../../include/net-snmp/config_api.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/read_config.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -4804,6 +4776,7 @@
 ./host/hr_proc.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_proc.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_proc.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_proc.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./host/hr_proc.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -4841,68 +4814,73 @@
 ./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
+./host/hr_storage.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hr_storage.lo: ../../include/net-snmp/library/mib.h
+./host/hr_storage.lo: ../../include/net-snmp/mib_api.h
+./host/hr_storage.lo: ../../include/net-snmp/library/parse.h
+./host/hr_storage.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hr_storage.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmp-tc.h
+./host/hr_storage.lo: ../../include/net-snmp/library/getopt.h
 ./host/hr_storage.lo: ../../include/net-snmp/utilities.h
-./host/hr_storage.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/system.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/tools.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/int64.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/mt_support.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmp_alarm.h
-./host/hr_storage.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/data_list.h
-./host/hr_storage.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./host/hr_storage.lo: ../../include/net-snmp/library/container.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmp_assert.h
 ./host/hr_storage.lo: ../../include/net-snmp/version.h
-./host/hr_storage.lo: ../../include/net-snmp/session_api.h
-./host/hr_storage.lo: ../../include/net-snmp/library/snmp_transport.h
-./host/hr_storage.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./host/hr_storage.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./host/hr_storage.lo: ../../include/net-snmp/pdu_api.h
-./host/hr_storage.lo: ../../include/net-snmp/mib_api.h
-./host/hr_storage.lo: ../../include/net-snmp/library/mib.h
-./host/hr_storage.lo: ../../include/net-snmp/library/parse.h
-./host/hr_storage.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_storage.lo: ../../include/net-snmp/config_api.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/read_config.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -4911,6 +4889,7 @@
 ./host/hr_storage.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_storage.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_storage.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_storage.lo: ../../include/net-snmp/agent/snmp_agent.h
 ./host/hr_storage.lo: ../../include/net-snmp/agent/agent_handler.h
@@ -4918,8 +4897,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
@@ -4951,65 +4929,180 @@
 ./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/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
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/mib.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/mib_api.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/parse.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/net-snmp-features.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_impl.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/getopt.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/utilities.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/system.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/tools.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/int64.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/mt_support.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_alarm.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/container.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_assert.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/version.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/config_api.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/read_config.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpv3.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/transform_oids.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/keytools.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/scapi.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/lcd_time.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmp_secmod.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmptsm.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/snmpusm.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/mib_module_config.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/agent_module_config.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/snmp_agent.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/snmp_vars.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/agent_handler.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/var_struct.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/agent_registry.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/library/fd_event_manager.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/ds_agent.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/agent_read_config.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/agent_trap.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/all_helpers.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/instance.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/baby_steps.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/scalar.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/scalar_group.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/watcher.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/multiplexer.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/null.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/debug_handler.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/cache_handler.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/old_api.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/read_only.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/row_merge.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/serialize.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/mode_end_call.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/table.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/table_data.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/table_dataset.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/table_tdata.h
+./host/hrSWInstalledTable.lo: ../../include/net-snmp/agent/table_iterator.h
+./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: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_swinst.lo: host_res.h
 ./host/hr_swinst.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hr_swinst.lo: ../../include/net-snmp/definitions.h
 ./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
+./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hr_swinst.lo: ../../include/net-snmp/library/mib.h
+./host/hr_swinst.lo: ../../include/net-snmp/mib_api.h
+./host/hr_swinst.lo: ../../include/net-snmp/library/parse.h
+./host/hr_swinst.lo: ../../include/net-snmp/library/oid_stash.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmp-tc.h
+./host/hr_swinst.lo: ../../include/net-snmp/library/getopt.h
 ./host/hr_swinst.lo: ../../include/net-snmp/utilities.h
-./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/system.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/tools.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/int64.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/mt_support.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_alarm.h
-./host/hr_swinst.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/data_list.h
-./host/hr_swinst.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./host/hr_swinst.lo: ../../include/net-snmp/library/container.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_assert.h
 ./host/hr_swinst.lo: ../../include/net-snmp/version.h
-./host/hr_swinst.lo: ../../include/net-snmp/session_api.h
-./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_transport.h
-./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./host/hr_swinst.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./host/hr_swinst.lo: ../../include/net-snmp/pdu_api.h
-./host/hr_swinst.lo: ../../include/net-snmp/mib_api.h
-./host/hr_swinst.lo: ../../include/net-snmp/library/mib.h
-./host/hr_swinst.lo: ../../include/net-snmp/library/parse.h
-./host/hr_swinst.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_swinst.lo: ../../include/net-snmp/config_api.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/read_config.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -5018,6 +5111,7 @@
 ./host/hr_swinst.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_swinst.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_swinst.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_swinst.lo: ../../include/net-snmp/agent/snmp_agent.h
 ./host/hr_swinst.lo: ../../include/net-snmp/agent/agent_handler.h
@@ -5027,32 +5121,52 @@
 ./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
+./host/hr_swrun.lo: ../../include/net-snmp/varbind_api.h
+./host/hr_swrun.lo: ../../include/net-snmp/library/snmp_client.h
+./host/hr_swrun.lo: ../../include/net-snmp/pdu_api.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/asn1.h
+./host/hr_swrun.lo: ../../include/net-snmp/session_api.h
+./host/hr_swrun.lo: ../../include/net-snmp/library/callback.h
+./host/hr_swrun.lo: ../../include/net-snmp/library/snmp_transport.h
+./host/hr_swrun.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hr_swrun.lo: ../../include/net-snmp/library/mib.h
+./host/hr_swrun.lo: ../../include/net-snmp/mib_api.h
+./host/hr_swrun.lo: ../../include/net-snmp/library/parse.h
+./host/hr_swrun.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hr_swrun.lo: ../../include/net-snmp/net-snmp-features.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmp-tc.h
-./host/hr_swrun.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmp_debug.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmp_logging.h
 ./host/hr_swrun.lo: host_res.h
 ./host/hr_swrun.lo: ../../include/net-snmp/net-snmp-includes.h
+./host/hr_swrun.lo: ../../include/net-snmp/library/getopt.h
 ./host/hr_swrun.lo: ../../include/net-snmp/utilities.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/system.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/tools.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/int64.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/mt_support.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmp_alarm.h
-./host/hr_swrun.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/data_list.h
-./host/hr_swrun.lo: ../../include/net-snmp/library/oid_stash.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/check_varbind.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/container.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/factory.h
@@ -5062,22 +5176,6 @@
 ./host/hr_swrun.lo: ../../include/net-snmp/library/container.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmp_assert.h
 ./host/hr_swrun.lo: ../../include/net-snmp/version.h
-./host/hr_swrun.lo: ../../include/net-snmp/session_api.h
-./host/hr_swrun.lo: ../../include/net-snmp/library/snmp_transport.h
-./host/hr_swrun.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./host/hr_swrun.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./host/hr_swrun.lo: ../../include/net-snmp/pdu_api.h
-./host/hr_swrun.lo: ../../include/net-snmp/mib_api.h
-./host/hr_swrun.lo: ../../include/net-snmp/library/mib.h
-./host/hr_swrun.lo: ../../include/net-snmp/library/parse.h
-./host/hr_swrun.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_swrun.lo: ../../include/net-snmp/config_api.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/read_config.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/default_store.h
@@ -5092,6 +5190,7 @@
 ./host/hr_swrun.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_swrun.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_swrun.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_swrun.lo: ../../include/net-snmp/agent/snmp_agent.h
 ./host/hr_swrun.lo: ../../include/net-snmp/agent/agent_handler.h
@@ -5102,63 +5201,288 @@
 ./host/hr_swrun.lo: ./host/hr_swrun.h
 ./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/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
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/mib.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/mib_api.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/parse.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/net-snmp-features.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_impl.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/getopt.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/utilities.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/system.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/tools.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/int64.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/mt_support.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_alarm.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/container.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_assert.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/version.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/config_api.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/read_config.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpv3.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/transform_oids.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/keytools.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/scapi.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/lcd_time.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmp_secmod.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmptsm.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/snmpusm.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/mib_module_config.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/agent_module_config.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/snmp_agent.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/snmp_vars.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/agent_handler.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/var_struct.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/agent_registry.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/library/fd_event_manager.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/ds_agent.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/agent_read_config.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/agent_trap.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/all_helpers.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/instance.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/baby_steps.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/scalar.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/scalar_group.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/watcher.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/multiplexer.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/null.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/debug_handler.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/cache_handler.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/old_api.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/read_only.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/row_merge.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/serialize.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/mode_end_call.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/table.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/table_data.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/table_dataset.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/table_tdata.h
+./host/hrSWRunPerfTable.lo: ../../include/net-snmp/agent/table_iterator.h
+./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/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
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/mib.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/mib_api.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/parse.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/oid_stash.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/net-snmp-features.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_impl.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/getopt.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/utilities.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/system.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/tools.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/int64.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/mt_support.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_alarm.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/container.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_assert.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/version.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/config_api.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/read_config.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpv3.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/transform_oids.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/keytools.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/scapi.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/lcd_time.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmp_secmod.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmptsm.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/snmpusm.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/mib_module_config.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/agent_module_config.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/snmp_agent.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/snmp_vars.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/agent_handler.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/var_struct.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/agent_registry.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/library/fd_event_manager.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/ds_agent.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/agent_read_config.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/agent_trap.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/all_helpers.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/instance.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/baby_steps.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/scalar.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/scalar_group.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/watcher.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/multiplexer.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/null.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/debug_handler.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/cache_handler.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/old_api.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/read_only.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/row_merge.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/serialize.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/mode_end_call.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/table.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/table_data.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/table_dataset.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/table_tdata.h
+./host/hrSWRunTable.lo: ../../include/net-snmp/agent/table_iterator.h
+./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/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-features.h
 ./host/hr_system.lo: ../../include/net-snmp/net-snmp-includes.h
 ./host/hr_system.lo: ../../include/net-snmp/definitions.h
 ./host/hr_system.lo: ../../include/net-snmp/types.h
+./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
+./host/hr_system.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./host/hr_system.lo: ../../include/net-snmp/library/mib.h
+./host/hr_system.lo: ../../include/net-snmp/mib_api.h
+./host/hr_system.lo: ../../include/net-snmp/library/parse.h
+./host/hr_system.lo: ../../include/net-snmp/library/oid_stash.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmp_impl.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmp.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmp-tc.h
+./host/hr_system.lo: ../../include/net-snmp/library/getopt.h
 ./host/hr_system.lo: ../../include/net-snmp/utilities.h
-./host/hr_system.lo: ../../include/net-snmp/library/snmp_client.h
 ./host/hr_system.lo: ../../include/net-snmp/library/system.h
 ./host/hr_system.lo: ../../include/net-snmp/library/tools.h
 ./host/hr_system.lo: ../../include/net-snmp/library/int64.h
 ./host/hr_system.lo: ../../include/net-snmp/library/mt_support.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmp_alarm.h
-./host/hr_system.lo: ../../include/net-snmp/library/callback.h
 ./host/hr_system.lo: ../../include/net-snmp/library/data_list.h
-./host/hr_system.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./host/hr_system.lo: ../../include/net-snmp/library/container.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmp_assert.h
 ./host/hr_system.lo: ../../include/net-snmp/version.h
-./host/hr_system.lo: ../../include/net-snmp/session_api.h
-./host/hr_system.lo: ../../include/net-snmp/library/snmp_transport.h
-./host/hr_system.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./host/hr_system.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./host/hr_system.lo: ../../include/net-snmp/pdu_api.h
-./host/hr_system.lo: ../../include/net-snmp/mib_api.h
-./host/hr_system.lo: ../../include/net-snmp/library/mib.h
-./host/hr_system.lo: ../../include/net-snmp/library/parse.h
-./host/hr_system.lo: ../../include/net-snmp/varbind_api.h
 ./host/hr_system.lo: ../../include/net-snmp/config_api.h
 ./host/hr_system.lo: ../../include/net-snmp/library/read_config.h
 ./host/hr_system.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -5167,6 +5491,7 @@
 ./host/hr_system.lo: ../../include/net-snmp/library/lcd_time.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./host/hr_system.lo: ../../include/net-snmp/library/snmptsm.h
 ./host/hr_system.lo: ../../include/net-snmp/library/snmpusm.h
 ./host/hr_system.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./host/hr_system.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -5203,66 +5528,71 @@
 ./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-features.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/definitions.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/types.h
+./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
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/mib.h
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/mib_api.h
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/parse.h
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/oid_stash.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp-tc.h
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/getopt.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/utilities.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_client.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/system.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/tools.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/int64.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/mt_support.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/callback.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/data_list.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/container.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/version.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/session_api.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_transport.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/pdu_api.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/mib_api.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/mib.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/parse.h
-./ip-mib/ip_scalars.lo: ../../include/net-snmp/varbind_api.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/config_api.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/read_config.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -5271,6 +5601,7 @@
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/lcd_time.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmptsm.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/library/snmpusm.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ip-mib/ip_scalars.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -5308,67 +5639,72 @@
 ./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
+./mibII/at.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/at.lo: ../../include/net-snmp/library/mib.h
+./mibII/at.lo: ../../include/net-snmp/mib_api.h
+./mibII/at.lo: ../../include/net-snmp/library/parse.h
+./mibII/at.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/at.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/at.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/at.lo: ../../include/net-snmp/utilities.h
-./mibII/at.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/at.lo: ../../include/net-snmp/library/system.h
 ./mibII/at.lo: ../../include/net-snmp/library/tools.h
 ./mibII/at.lo: ../../include/net-snmp/library/int64.h
 ./mibII/at.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/at.lo: ../../include/net-snmp/library/callback.h
 ./mibII/at.lo: ../../include/net-snmp/library/data_list.h
-./mibII/at.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/at.lo: ../../include/net-snmp/library/container.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/at.lo: ../../include/net-snmp/version.h
-./mibII/at.lo: ../../include/net-snmp/session_api.h
-./mibII/at.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/at.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/at.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/at.lo: ../../include/net-snmp/pdu_api.h
-./mibII/at.lo: ../../include/net-snmp/mib_api.h
-./mibII/at.lo: ../../include/net-snmp/library/mib.h
-./mibII/at.lo: ../../include/net-snmp/library/parse.h
-./mibII/at.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/at.lo: ../../include/net-snmp/config_api.h
 ./mibII/at.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/at.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -5377,6 +5713,7 @@
 ./mibII/at.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/at.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/at.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/at.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/at.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -5414,68 +5751,73 @@
 ./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
+./mibII/icmp.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/icmp.lo: ../../include/net-snmp/library/mib.h
+./mibII/icmp.lo: ../../include/net-snmp/mib_api.h
+./mibII/icmp.lo: ../../include/net-snmp/library/parse.h
+./mibII/icmp.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/icmp.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/icmp.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/icmp.lo: ../../include/net-snmp/utilities.h
-./mibII/icmp.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/system.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/tools.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/int64.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/icmp.lo: ../../include/net-snmp/library/callback.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/data_list.h
-./mibII/icmp.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/icmp.lo: ../../include/net-snmp/library/container.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/icmp.lo: ../../include/net-snmp/version.h
-./mibII/icmp.lo: ../../include/net-snmp/session_api.h
-./mibII/icmp.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/icmp.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/icmp.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/icmp.lo: ../../include/net-snmp/pdu_api.h
-./mibII/icmp.lo: ../../include/net-snmp/mib_api.h
-./mibII/icmp.lo: ../../include/net-snmp/library/mib.h
-./mibII/icmp.lo: ../../include/net-snmp/library/parse.h
-./mibII/icmp.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/icmp.lo: ../../include/net-snmp/config_api.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -5484,6 +5826,7 @@
 ./mibII/icmp.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/icmp.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/icmp.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/icmp.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/icmp.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -5521,66 +5864,73 @@
 ./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/auto_nlist.h util_funcs.h
-./mibII/icmp.lo: struct.h ./mibII/icmp.h ./mibII/sysORTable.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: ../../include/net-snmp/net-snmp-features.h
 ./mibII/interfaces.lo: ../../agent/kernel.h
 ./mibII/interfaces.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/interfaces.lo: ../../include/net-snmp/definitions.h
 ./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
+./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/interfaces.lo: ../../include/net-snmp/library/mib.h
+./mibII/interfaces.lo: ../../include/net-snmp/mib_api.h
+./mibII/interfaces.lo: ../../include/net-snmp/library/parse.h
+./mibII/interfaces.lo: ../../include/net-snmp/library/oid_stash.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/interfaces.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/interfaces.lo: ../../include/net-snmp/utilities.h
-./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/system.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/tools.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/int64.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/interfaces.lo: ../../include/net-snmp/library/callback.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/data_list.h
-./mibII/interfaces.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/interfaces.lo: ../../include/net-snmp/library/container.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/interfaces.lo: ../../include/net-snmp/version.h
-./mibII/interfaces.lo: ../../include/net-snmp/session_api.h
-./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/interfaces.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/interfaces.lo: ../../include/net-snmp/pdu_api.h
-./mibII/interfaces.lo: ../../include/net-snmp/mib_api.h
-./mibII/interfaces.lo: ../../include/net-snmp/library/mib.h
-./mibII/interfaces.lo: ../../include/net-snmp/library/parse.h
-./mibII/interfaces.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/interfaces.lo: ../../include/net-snmp/config_api.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -5589,6 +5939,7 @@
 ./mibII/interfaces.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/interfaces.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/interfaces.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/interfaces.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/interfaces.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -5626,176 +5977,77 @@
 ./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
 ./mibII/interfaces.lo: ../../include/net-snmp/data_access/interface.h
 ./mibII/interfaces.lo: ./mibII/interfaces.h struct.h util_funcs.h
-./mibII/interfaces.lo: ./mibII/sysORTable.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/snmp_api.h
-./mibII/ip.lo: ../../include/net-snmp/library/asn1.h
-./mibII/ip.lo: ../../include/net-snmp/library/snmp_impl.h
-./mibII/ip.lo: ../../include/net-snmp/library/snmp.h
-./mibII/ip.lo: ../../include/net-snmp/library/snmp-tc.h
-./mibII/ip.lo: ../../include/net-snmp/utilities.h
-./mibII/ip.lo: ../../include/net-snmp/library/snmp_client.h
-./mibII/ip.lo: ../../include/net-snmp/library/system.h
-./mibII/ip.lo: ../../include/net-snmp/library/tools.h
-./mibII/ip.lo: ../../include/net-snmp/library/int64.h
-./mibII/ip.lo: ../../include/net-snmp/library/mt_support.h
-./mibII/ip.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/ip.lo: ../../include/net-snmp/library/callback.h
-./mibII/ip.lo: ../../include/net-snmp/library/data_list.h
-./mibII/ip.lo: ../../include/net-snmp/library/oid_stash.h
-./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
-./mibII/ip.lo: ../../include/net-snmp/library/container.h
-./mibII/ip.lo: ../../include/net-snmp/library/snmp_assert.h
-./mibII/ip.lo: ../../include/net-snmp/version.h
-./mibII/ip.lo: ../../include/net-snmp/session_api.h
-./mibII/ip.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/ip.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/ip.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/ip.lo: ../../include/net-snmp/pdu_api.h
-./mibII/ip.lo: ../../include/net-snmp/mib_api.h
-./mibII/ip.lo: ../../include/net-snmp/library/mib.h
-./mibII/ip.lo: ../../include/net-snmp/library/parse.h
-./mibII/ip.lo: ../../include/net-snmp/varbind_api.h
-./mibII/ip.lo: ../../include/net-snmp/config_api.h
-./mibII/ip.lo: ../../include/net-snmp/library/read_config.h
-./mibII/ip.lo: ../../include/net-snmp/library/default_store.h
-./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
-./mibII/ip.lo: ../../include/net-snmp/library/keytools.h
-./mibII/ip.lo: ../../include/net-snmp/library/scapi.h
-./mibII/ip.lo: ../../include/net-snmp/library/lcd_time.h
-./mibII/ip.lo: ../../include/net-snmp/library/snmp_secmod.h
-./mibII/ip.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
-./mibII/ip.lo: ../../include/net-snmp/library/snmpusm.h
-./mibII/ip.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
-./mibII/ip.lo: ../../include/net-snmp/agent/mib_module_config.h
-./mibII/ip.lo: ../../include/net-snmp/agent/agent_module_config.h
-./mibII/ip.lo: ../../include/net-snmp/agent/snmp_agent.h
-./mibII/ip.lo: ../../include/net-snmp/agent/snmp_vars.h
-./mibII/ip.lo: ../../include/net-snmp/agent/agent_handler.h
-./mibII/ip.lo: ../../include/net-snmp/agent/var_struct.h
-./mibII/ip.lo: ../../include/net-snmp/agent/agent_registry.h
-./mibII/ip.lo: ../../include/net-snmp/library/fd_event_manager.h
-./mibII/ip.lo: ../../include/net-snmp/agent/ds_agent.h
-./mibII/ip.lo: ../../include/net-snmp/agent/agent_read_config.h
-./mibII/ip.lo: ../../include/net-snmp/agent/agent_trap.h
-./mibII/ip.lo: ../../include/net-snmp/agent/all_helpers.h
-./mibII/ip.lo: ../../include/net-snmp/agent/instance.h
-./mibII/ip.lo: ../../include/net-snmp/agent/baby_steps.h
-./mibII/ip.lo: ../../include/net-snmp/agent/scalar.h
-./mibII/ip.lo: ../../include/net-snmp/agent/scalar_group.h
-./mibII/ip.lo: ../../include/net-snmp/agent/watcher.h
-./mibII/ip.lo: ../../include/net-snmp/agent/multiplexer.h
-./mibII/ip.lo: ../../include/net-snmp/agent/null.h
-./mibII/ip.lo: ../../include/net-snmp/agent/debug_handler.h
-./mibII/ip.lo: ../../include/net-snmp/agent/cache_handler.h
-./mibII/ip.lo: ../../include/net-snmp/agent/old_api.h
-./mibII/ip.lo: ../../include/net-snmp/agent/read_only.h
-./mibII/ip.lo: ../../include/net-snmp/agent/row_merge.h
-./mibII/ip.lo: ../../include/net-snmp/agent/serialize.h
-./mibII/ip.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./mibII/ip.lo: ../../include/net-snmp/agent/mode_end_call.h
-./mibII/ip.lo: ../../include/net-snmp/agent/table.h
-./mibII/ip.lo: ../../include/net-snmp/agent/table_data.h
-./mibII/ip.lo: ../../include/net-snmp/agent/table_dataset.h
-./mibII/ip.lo: ../../include/net-snmp/agent/table_tdata.h
-./mibII/ip.lo: ../../include/net-snmp/agent/table_iterator.h
-./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/auto_nlist.h util_funcs.h
-./mibII/ip.lo: struct.h ./mibII/ip.h ./mibII/var_route.h
-./mibII/ip.lo: ./mibII/route_write.h ./mibII/at.h ./mibII/ipAddr.h
-./mibII/ip.lo: ./mibII/interfaces.h ./mibII/sysORTable.h
+./mibII/interfaces.lo: util_funcs/header_generic.h
+./mibII/interfaces.lo: util_funcs/header_simple_table.h
+./mibII/interfaces.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/ipAddr.lo: ../../include/net-snmp/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: ../../include/net-snmp/net-snmp-features.h
 ./mibII/ipAddr.lo: ../../agent/kernel.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/definitions.h
 ./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
+./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/ipAddr.lo: ../../include/net-snmp/library/mib.h
+./mibII/ipAddr.lo: ../../include/net-snmp/mib_api.h
+./mibII/ipAddr.lo: ../../include/net-snmp/library/parse.h
+./mibII/ipAddr.lo: ../../include/net-snmp/library/oid_stash.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/ipAddr.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/utilities.h
-./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/system.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/tools.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/int64.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/ipAddr.lo: ../../include/net-snmp/library/callback.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/data_list.h
-./mibII/ipAddr.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/container.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/version.h
-./mibII/ipAddr.lo: ../../include/net-snmp/session_api.h
-./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/ipAddr.lo: ../../include/net-snmp/pdu_api.h
-./mibII/ipAddr.lo: ../../include/net-snmp/mib_api.h
-./mibII/ipAddr.lo: ../../include/net-snmp/library/mib.h
-./mibII/ipAddr.lo: ../../include/net-snmp/library/parse.h
-./mibII/ipAddr.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/config_api.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -5804,6 +6056,7 @@
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/ipAddr.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/ipAddr.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -5841,177 +6094,189 @@
 ./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/sysORTable.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/snmp_api.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/asn1.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_impl.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp-tc.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/utilities.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_client.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/system.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/tools.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/int64.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/mt_support.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/callback.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/data_list.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/oid_stash.h
-./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
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/container.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_assert.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/version.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/session_api.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/pdu_api.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/mib_api.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/mib.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/parse.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/varbind_api.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/config_api.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/read_config.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/default_store.h
-./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
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/keytools.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/scapi.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/lcd_time.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_secmod.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpusm.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/mib_module_config.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/agent_module_config.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/snmp_agent.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/snmp_vars.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/agent_handler.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/var_struct.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/agent_registry.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/fd_event_manager.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/ds_agent.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/agent_read_config.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/agent_trap.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/all_helpers.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/instance.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/baby_steps.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/scalar.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/scalar_group.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/watcher.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/multiplexer.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/null.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/debug_handler.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/cache_handler.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/old_api.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/read_only.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/row_merge.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/serialize.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/mode_end_call.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/table.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/table_data.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/table_dataset.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/table_tdata.h
-./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/table_iterator.h
-./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: ./mibII/ipCidrRouteTable.h
-./mibII/ipCidrRouteTable.lo: ./mibII/ipCidrRouteTable_columns.h
-./mibII/ipCidrRouteTable.lo: ./mibII/ipCidrRouteTable_enums.h
-./mibII/ipCidrRouteTable.lo: ./mibII/ipCidrRouteTable_checkfns.h
-./mibII/ipCidrRouteTable.lo: ./mibII/ipCidrRouteTable_access.h
-./mibII/ipCidrRouteTable.lo: ./mibII/var_route.h
+./mibII/ipAddr.lo: ./mibII/at.h ./mibII/interfaces.h
+./mibII/ip.lo: ../../include/net-snmp/net-snmp-config.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
+./mibII/ip.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/ip.lo: ../../include/net-snmp/library/mib.h
+./mibII/ip.lo: ../../include/net-snmp/mib_api.h
+./mibII/ip.lo: ../../include/net-snmp/library/parse.h
+./mibII/ip.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/ip.lo: ../../include/net-snmp/net-snmp-features.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmp_impl.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmp.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/ip.lo: ../../include/net-snmp/library/getopt.h
+./mibII/ip.lo: ../../include/net-snmp/utilities.h
+./mibII/ip.lo: ../../include/net-snmp/library/system.h
+./mibII/ip.lo: ../../include/net-snmp/library/tools.h
+./mibII/ip.lo: ../../include/net-snmp/library/int64.h
+./mibII/ip.lo: ../../include/net-snmp/library/mt_support.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmp_alarm.h
+./mibII/ip.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./mibII/ip.lo: ../../include/net-snmp/library/container.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmp_assert.h
+./mibII/ip.lo: ../../include/net-snmp/version.h
+./mibII/ip.lo: ../../include/net-snmp/config_api.h
+./mibII/ip.lo: ../../include/net-snmp/library/read_config.h
+./mibII/ip.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmpv3.h
+./mibII/ip.lo: ../../include/net-snmp/library/transform_oids.h
+./mibII/ip.lo: ../../include/net-snmp/library/keytools.h
+./mibII/ip.lo: ../../include/net-snmp/library/scapi.h
+./mibII/ip.lo: ../../include/net-snmp/library/lcd_time.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmp_secmod.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmptsm.h
+./mibII/ip.lo: ../../include/net-snmp/library/snmpusm.h
+./mibII/ip.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./mibII/ip.lo: ../../include/net-snmp/agent/mib_module_config.h
+./mibII/ip.lo: ../../include/net-snmp/agent/agent_module_config.h
+./mibII/ip.lo: ../../include/net-snmp/agent/snmp_agent.h
+./mibII/ip.lo: ../../include/net-snmp/agent/snmp_vars.h
+./mibII/ip.lo: ../../include/net-snmp/agent/agent_handler.h
+./mibII/ip.lo: ../../include/net-snmp/agent/var_struct.h
+./mibII/ip.lo: ../../include/net-snmp/agent/agent_registry.h
+./mibII/ip.lo: ../../include/net-snmp/library/fd_event_manager.h
+./mibII/ip.lo: ../../include/net-snmp/agent/ds_agent.h
+./mibII/ip.lo: ../../include/net-snmp/agent/agent_read_config.h
+./mibII/ip.lo: ../../include/net-snmp/agent/agent_trap.h
+./mibII/ip.lo: ../../include/net-snmp/agent/all_helpers.h
+./mibII/ip.lo: ../../include/net-snmp/agent/instance.h
+./mibII/ip.lo: ../../include/net-snmp/agent/baby_steps.h
+./mibII/ip.lo: ../../include/net-snmp/agent/scalar.h
+./mibII/ip.lo: ../../include/net-snmp/agent/scalar_group.h
+./mibII/ip.lo: ../../include/net-snmp/agent/watcher.h
+./mibII/ip.lo: ../../include/net-snmp/agent/multiplexer.h
+./mibII/ip.lo: ../../include/net-snmp/agent/null.h
+./mibII/ip.lo: ../../include/net-snmp/agent/debug_handler.h
+./mibII/ip.lo: ../../include/net-snmp/agent/cache_handler.h
+./mibII/ip.lo: ../../include/net-snmp/agent/old_api.h
+./mibII/ip.lo: ../../include/net-snmp/agent/read_only.h
+./mibII/ip.lo: ../../include/net-snmp/agent/row_merge.h
+./mibII/ip.lo: ../../include/net-snmp/agent/serialize.h
+./mibII/ip.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./mibII/ip.lo: ../../include/net-snmp/agent/mode_end_call.h
+./mibII/ip.lo: ../../include/net-snmp/agent/table.h
+./mibII/ip.lo: ../../include/net-snmp/agent/table_data.h
+./mibII/ip.lo: ../../include/net-snmp/agent/table_dataset.h
+./mibII/ip.lo: ../../include/net-snmp/agent/table_tdata.h
+./mibII/ip.lo: ../../include/net-snmp/agent/table_iterator.h
+./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
+./mibII/ip.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h ./mibII/ip.h
+./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
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/mib.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/mib_api.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/parse.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/utilities.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/system.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/tools.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/int64.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/callback.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/data_list.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/container.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/version.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/session_api.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/pdu_api.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/mib_api.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/mib.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/parse.h
-./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/config_api.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -6020,6 +6285,7 @@
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/ipCidrRouteTable_access.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6057,65 +6323,185 @@
 ./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/net-snmp-features.h
+./mibII/ipCidrRouteTable.lo: ./mibII/route_headers.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/net-snmp-includes.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/definitions.h
+./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
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/mib.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/mib_api.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/parse.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_impl.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/getopt.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/utilities.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/system.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/tools.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/int64.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/mt_support.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_alarm.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/container.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_assert.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/version.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/config_api.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/read_config.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpv3.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/transform_oids.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/keytools.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/scapi.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/lcd_time.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmp_secmod.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmptsm.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/snmpusm.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/mib_module_config.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/agent_module_config.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/snmp_agent.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/snmp_vars.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/agent_handler.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/var_struct.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/agent_registry.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/library/fd_event_manager.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/ds_agent.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/agent_read_config.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/agent_trap.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/all_helpers.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/instance.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/baby_steps.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/scalar.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/scalar_group.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/watcher.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/multiplexer.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/null.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/debug_handler.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/cache_handler.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/old_api.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/read_only.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/row_merge.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/serialize.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/mode_end_call.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/table.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/table_data.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/table_dataset.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/table_tdata.h
+./mibII/ipCidrRouteTable.lo: ../../include/net-snmp/agent/table_iterator.h
+./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
+./mibII/ipCidrRouteTable.lo: ./mibII/ipCidrRouteTable_checkfns.h
+./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
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/mib.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/mib_api.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/parse.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/utilities.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/system.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/tools.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/int64.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/callback.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/data_list.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/container.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/version.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/session_api.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/pdu_api.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/mib_api.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/mib.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/parse.h
-./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/config_api.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -6124,66 +6510,71 @@
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ./mibII/ipCidrRouteTable_checkfns.h
 ./mibII/ipCidrRouteTable_checkfns.lo: ./mibII/ipCidrRouteTable_enums.h
 ./mibII/ipv6.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/ipv6.lo: ../../include/net-snmp/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-features.h
 ./mibII/ipv6.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/ipv6.lo: ../../include/net-snmp/definitions.h
 ./mibII/ipv6.lo: ../../include/net-snmp/types.h
+./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
+./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/ipv6.lo: ../../include/net-snmp/library/mib.h
+./mibII/ipv6.lo: ../../include/net-snmp/mib_api.h
+./mibII/ipv6.lo: ../../include/net-snmp/library/parse.h
+./mibII/ipv6.lo: ../../include/net-snmp/library/oid_stash.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/ipv6.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/ipv6.lo: ../../include/net-snmp/utilities.h
-./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/system.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/tools.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/int64.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/ipv6.lo: ../../include/net-snmp/library/callback.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/data_list.h
-./mibII/ipv6.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/ipv6.lo: ../../include/net-snmp/library/container.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/ipv6.lo: ../../include/net-snmp/version.h
-./mibII/ipv6.lo: ../../include/net-snmp/session_api.h
-./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/ipv6.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/ipv6.lo: ../../include/net-snmp/pdu_api.h
-./mibII/ipv6.lo: ../../include/net-snmp/mib_api.h
-./mibII/ipv6.lo: ../../include/net-snmp/library/mib.h
-./mibII/ipv6.lo: ../../include/net-snmp/library/parse.h
-./mibII/ipv6.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/ipv6.lo: ../../include/net-snmp/config_api.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -6192,6 +6583,7 @@
 ./mibII/ipv6.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/ipv6.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/ipv6.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/ipv6.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/ipv6.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6229,67 +6621,71 @@
 ./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 util_funcs.h struct.h ./mibII/ipv6.h
-./mibII/ipv6.lo: ./mibII/var_route.h ./mibII/route_write.h ./mibII/at.h
-./mibII/ipv6.lo: ./mibII/interfaces.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-features.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/definitions.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/types.h
+./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
+./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/kernel_linux.lo: ../../include/net-snmp/library/mib.h
+./mibII/kernel_linux.lo: ../../include/net-snmp/mib_api.h
+./mibII/kernel_linux.lo: ../../include/net-snmp/library/parse.h
+./mibII/kernel_linux.lo: ../../include/net-snmp/library/oid_stash.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/kernel_linux.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/utilities.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/system.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/tools.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/int64.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/library/callback.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/data_list.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/container.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/version.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/session_api.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/kernel_linux.lo: ../../include/net-snmp/pdu_api.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/mib_api.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/library/mib.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/library/parse.h
-./mibII/kernel_linux.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/config_api.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -6298,6 +6694,7 @@
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/kernel_linux.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6334,66 +6731,70 @@
 ./mibII/kernel_linux.lo: ../../include/net-snmp/agent/table_iterator.h
 ./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 util_funcs.h
-./mibII/kernel_linux.lo: struct.h
-./mibII/kernel_linux.lo: ./mibII/kernel_linux.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_mib.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
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/mib.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/mib_api.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/parse.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/utilities.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/system.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/tools.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/int64.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/callback.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/data_list.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/container.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/version.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/session_api.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/pdu_api.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/mib_api.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/mib.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/parse.h
-./mibII/kernel_netbsd.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/config_api.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -6402,6 +6803,7 @@
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/kernel_netbsd.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6439,64 +6841,178 @@
 ./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/kernel_sysctl.lo: ../../include/net-snmp/net-snmp-config.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/net-snmp-includes.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/definitions.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/types.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/oid.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/types.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/varbind_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_client.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/pdu_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/asn1.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/output_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_debug.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_logging.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/session_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/callback.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_transport.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_service.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpUnixDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpTCPDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpIPXDomain.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/ucd_compat.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/mib.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/mib_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/parse.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/net-snmp-features.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_impl.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/getopt.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/utilities.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/system.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/tools.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/int64.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/mt_support.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_alarm.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/data_list.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/check_varbind.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/container.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/factory.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/container_binary_array.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/container_list_ssll.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/container_iterator.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/container.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_assert.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/version.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/config_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/read_config.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/default_store.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_parse_args.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_enum.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/vacm.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/snmpv3_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpv3.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/transform_oids.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/keytools.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/scapi.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/lcd_time.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmp_secmod.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmptsm.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/snmpusm.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/mib_module_config.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/agent_module_config.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/snmp_agent.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/snmp_vars.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/agent_handler.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/var_struct.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/agent_registry.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/library/fd_event_manager.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/ds_agent.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/agent_read_config.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/agent_trap.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/all_helpers.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/instance.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/baby_steps.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/scalar.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/scalar_group.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/watcher.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/multiplexer.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/null.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/debug_handler.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/cache_handler.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/old_api.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/read_only.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/row_merge.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/serialize.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/mode_end_call.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/table.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/table_data.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/table_dataset.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/table_tdata.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/table_iterator.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/table_container.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/table_array.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/mfd.h
+./mibII/kernel_sysctl.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./mibII/kernel_sysctl.lo: ./mibII/kernel_sysctl.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/net-snmp-config.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/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
+./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/mta_sendmail.lo: ../../include/net-snmp/library/mib.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/mib_api.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/library/parse.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/utilities.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/system.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/tools.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/int64.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/library/callback.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/data_list.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/container.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/version.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/session_api.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/mta_sendmail.lo: ../../include/net-snmp/pdu_api.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/mib_api.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/library/mib.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/library/parse.h
-./mibII/mta_sendmail.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/config_api.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -6505,6 +7021,7 @@
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/mta_sendmail.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6542,64 +7059,69 @@
 ./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
+./mibII/route_write.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/route_write.lo: ../../include/net-snmp/library/mib.h
+./mibII/route_write.lo: ../../include/net-snmp/mib_api.h
+./mibII/route_write.lo: ../../include/net-snmp/library/parse.h
+./mibII/route_write.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/route_write.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/route_write.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/route_write.lo: ../../include/net-snmp/utilities.h
-./mibII/route_write.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/system.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/tools.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/int64.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/route_write.lo: ../../include/net-snmp/library/callback.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/data_list.h
-./mibII/route_write.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/route_write.lo: ../../include/net-snmp/library/container.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/route_write.lo: ../../include/net-snmp/version.h
-./mibII/route_write.lo: ../../include/net-snmp/session_api.h
-./mibII/route_write.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/route_write.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/route_write.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/route_write.lo: ../../include/net-snmp/pdu_api.h
-./mibII/route_write.lo: ../../include/net-snmp/mib_api.h
-./mibII/route_write.lo: ../../include/net-snmp/library/mib.h
-./mibII/route_write.lo: ../../include/net-snmp/library/parse.h
-./mibII/route_write.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/route_write.lo: ../../include/net-snmp/config_api.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -6608,6 +7130,7 @@
 ./mibII/route_write.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/route_write.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/route_write.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/route_write.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/route_write.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6644,66 +7167,71 @@
 ./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-features.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/definitions.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/types.h
+./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
+./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/setSerialNo.lo: ../../include/net-snmp/library/mib.h
+./mibII/setSerialNo.lo: ../../include/net-snmp/mib_api.h
+./mibII/setSerialNo.lo: ../../include/net-snmp/library/parse.h
+./mibII/setSerialNo.lo: ../../include/net-snmp/library/oid_stash.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/setSerialNo.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/utilities.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/system.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/tools.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/int64.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/library/callback.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/data_list.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/container.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/version.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/session_api.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/setSerialNo.lo: ../../include/net-snmp/pdu_api.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/mib_api.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/library/mib.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/library/parse.h
-./mibII/setSerialNo.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/config_api.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -6712,6 +7240,7 @@
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/setSerialNo.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6749,64 +7278,180 @@
 ./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/net-snmp-features.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/net-snmp-includes.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/definitions.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/types.h
+./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
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/mib.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/mib_api.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/parse.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp_impl.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/getopt.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/utilities.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/system.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/tools.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/int64.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/mt_support.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp_alarm.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/container.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp_assert.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/version.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/config_api.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/read_config.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/default_store.h
+./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/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
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/keytools.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/scapi.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/lcd_time.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmp_secmod.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmptsm.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/snmpusm.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/mib_module_config.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/agent_module_config.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/snmp_agent.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/snmp_vars.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/agent_handler.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/var_struct.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/agent_registry.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/library/fd_event_manager.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/ds_agent.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/agent_read_config.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/agent_trap.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/all_helpers.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/instance.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/baby_steps.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/scalar.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/scalar_group.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/watcher.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/multiplexer.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/null.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/debug_handler.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/cache_handler.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/old_api.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/read_only.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/row_merge.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/serialize.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/mode_end_call.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/table.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/table_data.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/table_dataset.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/table_tdata.h
+./mibII/snmp_mib_5_5.lo: ../../include/net-snmp/agent/table_iterator.h
+./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: ./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-features.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/definitions.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/types.h
+./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
+./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/snmp_mib.lo: ../../include/net-snmp/library/mib.h
+./mibII/snmp_mib.lo: ../../include/net-snmp/mib_api.h
+./mibII/snmp_mib.lo: ../../include/net-snmp/library/parse.h
+./mibII/snmp_mib.lo: ../../include/net-snmp/library/oid_stash.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/snmp_mib.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/utilities.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/system.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/tools.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/int64.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/library/callback.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/data_list.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/container.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/version.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/session_api.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/snmp_mib.lo: ../../include/net-snmp/pdu_api.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/mib_api.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/library/mib.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/library/parse.h
-./mibII/snmp_mib.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/config_api.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -6815,6 +7460,7 @@
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/snmp_mib.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6851,65 +7497,72 @@
 ./mibII/snmp_mib.lo: ../../include/net-snmp/agent/table_iterator.h
 ./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 util_funcs.h struct.h
-./mibII/snmp_mib.lo: ./mibII/snmp_mib.h ./mibII/sysORTable.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
+./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/sysORTable.lo: ../../include/net-snmp/library/mib.h
+./mibII/sysORTable.lo: ../../include/net-snmp/mib_api.h
+./mibII/sysORTable.lo: ../../include/net-snmp/library/parse.h
+./mibII/sysORTable.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/sysORTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/sysORTable.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/utilities.h
-./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/system.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/tools.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/int64.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/sysORTable.lo: ../../include/net-snmp/library/callback.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/data_list.h
-./mibII/sysORTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/container.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/version.h
-./mibII/sysORTable.lo: ../../include/net-snmp/session_api.h
-./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/sysORTable.lo: ../../include/net-snmp/pdu_api.h
-./mibII/sysORTable.lo: ../../include/net-snmp/mib_api.h
-./mibII/sysORTable.lo: ../../include/net-snmp/library/mib.h
-./mibII/sysORTable.lo: ../../include/net-snmp/library/parse.h
-./mibII/sysORTable.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/config_api.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -6918,6 +7571,7 @@
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/sysORTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/sysORTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -6955,66 +7609,72 @@
 ./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: struct.h util_funcs.h ./mibII/sysORTable.h
-./mibII/sysORTable.lo: ../../agent/snmpd.h agentx/subagent.h agentx/client.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-features.h
 ./mibII/system_mib.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/system_mib.lo: ../../include/net-snmp/definitions.h
 ./mibII/system_mib.lo: ../../include/net-snmp/types.h
+./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
+./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/system_mib.lo: ../../include/net-snmp/library/mib.h
+./mibII/system_mib.lo: ../../include/net-snmp/mib_api.h
+./mibII/system_mib.lo: ../../include/net-snmp/library/parse.h
+./mibII/system_mib.lo: ../../include/net-snmp/library/oid_stash.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/system_mib.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/system_mib.lo: ../../include/net-snmp/utilities.h
-./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/system.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/tools.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/int64.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/system_mib.lo: ../../include/net-snmp/library/callback.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/data_list.h
-./mibII/system_mib.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/system_mib.lo: ../../include/net-snmp/library/container.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/system_mib.lo: ../../include/net-snmp/version.h
-./mibII/system_mib.lo: ../../include/net-snmp/session_api.h
-./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/system_mib.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/system_mib.lo: ../../include/net-snmp/pdu_api.h
-./mibII/system_mib.lo: ../../include/net-snmp/mib_api.h
-./mibII/system_mib.lo: ../../include/net-snmp/library/mib.h
-./mibII/system_mib.lo: ../../include/net-snmp/library/parse.h
-./mibII/system_mib.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/system_mib.lo: ../../include/net-snmp/config_api.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -7023,6 +7683,7 @@
 ./mibII/system_mib.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/system_mib.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/system_mib.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/system_mib.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/system_mib.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7059,67 +7720,77 @@
 ./mibII/system_mib.lo: ../../include/net-snmp/agent/table_iterator.h
 ./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 util_funcs.h
-./mibII/system_mib.lo: struct.h ./mibII/system_mib.h ./mibII/sysORTable.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: ./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: ../../include/net-snmp/net-snmp-features.h
 ./mibII/tcp.lo: ./mibII/mibII_common.h
 ./mibII/tcp.lo: ../../agent/kernel.h
 ./mibII/tcp.lo: ../../include/net-snmp/net-snmp-includes.h
 ./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
+./mibII/tcp.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/tcp.lo: ../../include/net-snmp/library/mib.h
+./mibII/tcp.lo: ../../include/net-snmp/mib_api.h
+./mibII/tcp.lo: ../../include/net-snmp/library/parse.h
+./mibII/tcp.lo: ../../include/net-snmp/library/oid_stash.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/tcp.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/tcp.lo: ../../include/net-snmp/utilities.h
-./mibII/tcp.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/system.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/tools.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/int64.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/tcp.lo: ../../include/net-snmp/library/callback.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/data_list.h
-./mibII/tcp.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/tcp.lo: ../../include/net-snmp/library/container.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/tcp.lo: ../../include/net-snmp/version.h
-./mibII/tcp.lo: ../../include/net-snmp/session_api.h
-./mibII/tcp.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/tcp.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/tcp.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/tcp.lo: ../../include/net-snmp/pdu_api.h
-./mibII/tcp.lo: ../../include/net-snmp/mib_api.h
-./mibII/tcp.lo: ../../include/net-snmp/library/mib.h
-./mibII/tcp.lo: ../../include/net-snmp/library/parse.h
-./mibII/tcp.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/tcp.lo: ../../include/net-snmp/config_api.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -7128,6 +7799,7 @@
 ./mibII/tcp.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/tcp.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/tcp.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/tcp.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/tcp.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7165,68 +7837,75 @@
 ./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/auto_nlist.h util_funcs.h
-./mibII/tcp.lo: struct.h ./mibII/tcp.h ./mibII/tcpTable.h
-./mibII/tcp.lo: ./mibII/sysORTable.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: ../../include/net-snmp/net-snmp-features.h
 ./mibII/tcpTable.lo: ./mibII/mibII_common.h
 ./mibII/tcpTable.lo: ../../agent/kernel.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./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
+./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/tcpTable.lo: ../../include/net-snmp/library/mib.h
+./mibII/tcpTable.lo: ../../include/net-snmp/mib_api.h
+./mibII/tcpTable.lo: ../../include/net-snmp/library/parse.h
+./mibII/tcpTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/tcpTable.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/utilities.h
-./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/system.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/tools.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/int64.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/tcpTable.lo: ../../include/net-snmp/library/callback.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/data_list.h
-./mibII/tcpTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/container.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/version.h
-./mibII/tcpTable.lo: ../../include/net-snmp/session_api.h
-./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/tcpTable.lo: ../../include/net-snmp/pdu_api.h
-./mibII/tcpTable.lo: ../../include/net-snmp/mib_api.h
-./mibII/tcpTable.lo: ../../include/net-snmp/library/mib.h
-./mibII/tcpTable.lo: ../../include/net-snmp/library/parse.h
-./mibII/tcpTable.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/config_api.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -7235,6 +7914,7 @@
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/tcpTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/tcpTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7272,67 +7952,72 @@
 ./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/sysORTable.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
+./mibII/udp.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/udp.lo: ../../include/net-snmp/library/mib.h
+./mibII/udp.lo: ../../include/net-snmp/mib_api.h
+./mibII/udp.lo: ../../include/net-snmp/library/parse.h
+./mibII/udp.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/udp.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/udp.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/udp.lo: ../../include/net-snmp/utilities.h
-./mibII/udp.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/udp.lo: ../../include/net-snmp/library/system.h
 ./mibII/udp.lo: ../../include/net-snmp/library/tools.h
 ./mibII/udp.lo: ../../include/net-snmp/library/int64.h
 ./mibII/udp.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/udp.lo: ../../include/net-snmp/library/callback.h
 ./mibII/udp.lo: ../../include/net-snmp/library/data_list.h
-./mibII/udp.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/udp.lo: ../../include/net-snmp/library/container.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/udp.lo: ../../include/net-snmp/version.h
-./mibII/udp.lo: ../../include/net-snmp/session_api.h
-./mibII/udp.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/udp.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/udp.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/udp.lo: ../../include/net-snmp/pdu_api.h
-./mibII/udp.lo: ../../include/net-snmp/mib_api.h
-./mibII/udp.lo: ../../include/net-snmp/library/mib.h
-./mibII/udp.lo: ../../include/net-snmp/library/parse.h
-./mibII/udp.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/udp.lo: ../../include/net-snmp/config_api.h
 ./mibII/udp.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/udp.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -7341,6 +8026,7 @@
 ./mibII/udp.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/udp.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/udp.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/udp.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/udp.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7378,68 +8064,75 @@
 ./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/auto_nlist.h util_funcs.h
-./mibII/udp.lo: struct.h ./mibII/udp.h ./mibII/udpTable.h
-./mibII/udp.lo: ./mibII/sysORTable.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
+./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/udpTable.lo: ../../include/net-snmp/library/mib.h
+./mibII/udpTable.lo: ../../include/net-snmp/mib_api.h
+./mibII/udpTable.lo: ../../include/net-snmp/library/parse.h
+./mibII/udpTable.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/udpTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/udpTable.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/udpTable.lo: ../../include/net-snmp/utilities.h
-./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/system.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/tools.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/int64.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/udpTable.lo: ../../include/net-snmp/library/callback.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/data_list.h
-./mibII/udpTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/udpTable.lo: ../../include/net-snmp/library/container.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/udpTable.lo: ../../include/net-snmp/version.h
-./mibII/udpTable.lo: ../../include/net-snmp/session_api.h
-./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/udpTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/udpTable.lo: ../../include/net-snmp/pdu_api.h
-./mibII/udpTable.lo: ../../include/net-snmp/mib_api.h
-./mibII/udpTable.lo: ../../include/net-snmp/library/mib.h
-./mibII/udpTable.lo: ../../include/net-snmp/library/parse.h
-./mibII/udpTable.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/udpTable.lo: ../../include/net-snmp/config_api.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -7448,6 +8141,7 @@
 ./mibII/udpTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/udpTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/udpTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/udpTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/udpTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7485,65 +8179,178 @@
 ./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/sysORTable.h
+./mibII/udpTable.lo: ./mibII/udpTable.h
+./mibII/updates.lo: ../../include/net-snmp/net-snmp-config.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
+./mibII/updates.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/updates.lo: ../../include/net-snmp/library/mib.h
+./mibII/updates.lo: ../../include/net-snmp/mib_api.h
+./mibII/updates.lo: ../../include/net-snmp/library/parse.h
+./mibII/updates.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/updates.lo: ../../include/net-snmp/net-snmp-features.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmp_impl.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmp.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/updates.lo: ../../include/net-snmp/library/getopt.h
+./mibII/updates.lo: ../../include/net-snmp/utilities.h
+./mibII/updates.lo: ../../include/net-snmp/library/system.h
+./mibII/updates.lo: ../../include/net-snmp/library/tools.h
+./mibII/updates.lo: ../../include/net-snmp/library/int64.h
+./mibII/updates.lo: ../../include/net-snmp/library/mt_support.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmp_alarm.h
+./mibII/updates.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./mibII/updates.lo: ../../include/net-snmp/library/container.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmp_assert.h
+./mibII/updates.lo: ../../include/net-snmp/version.h
+./mibII/updates.lo: ../../include/net-snmp/config_api.h
+./mibII/updates.lo: ../../include/net-snmp/library/read_config.h
+./mibII/updates.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmpv3.h
+./mibII/updates.lo: ../../include/net-snmp/library/transform_oids.h
+./mibII/updates.lo: ../../include/net-snmp/library/keytools.h
+./mibII/updates.lo: ../../include/net-snmp/library/scapi.h
+./mibII/updates.lo: ../../include/net-snmp/library/lcd_time.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmp_secmod.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmptsm.h
+./mibII/updates.lo: ../../include/net-snmp/library/snmpusm.h
+./mibII/updates.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./mibII/updates.lo: ../../include/net-snmp/agent/mib_module_config.h
+./mibII/updates.lo: ../../include/net-snmp/agent/agent_module_config.h
+./mibII/updates.lo: ../../include/net-snmp/agent/snmp_agent.h
+./mibII/updates.lo: ../../include/net-snmp/agent/snmp_vars.h
+./mibII/updates.lo: ../../include/net-snmp/agent/agent_handler.h
+./mibII/updates.lo: ../../include/net-snmp/agent/var_struct.h
+./mibII/updates.lo: ../../include/net-snmp/agent/agent_registry.h
+./mibII/updates.lo: ../../include/net-snmp/library/fd_event_manager.h
+./mibII/updates.lo: ../../include/net-snmp/agent/ds_agent.h
+./mibII/updates.lo: ../../include/net-snmp/agent/agent_read_config.h
+./mibII/updates.lo: ../../include/net-snmp/agent/agent_trap.h
+./mibII/updates.lo: ../../include/net-snmp/agent/all_helpers.h
+./mibII/updates.lo: ../../include/net-snmp/agent/instance.h
+./mibII/updates.lo: ../../include/net-snmp/agent/baby_steps.h
+./mibII/updates.lo: ../../include/net-snmp/agent/scalar.h
+./mibII/updates.lo: ../../include/net-snmp/agent/scalar_group.h
+./mibII/updates.lo: ../../include/net-snmp/agent/watcher.h
+./mibII/updates.lo: ../../include/net-snmp/agent/multiplexer.h
+./mibII/updates.lo: ../../include/net-snmp/agent/null.h
+./mibII/updates.lo: ../../include/net-snmp/agent/debug_handler.h
+./mibII/updates.lo: ../../include/net-snmp/agent/cache_handler.h
+./mibII/updates.lo: ../../include/net-snmp/agent/old_api.h
+./mibII/updates.lo: ../../include/net-snmp/agent/read_only.h
+./mibII/updates.lo: ../../include/net-snmp/agent/row_merge.h
+./mibII/updates.lo: ../../include/net-snmp/agent/serialize.h
+./mibII/updates.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./mibII/updates.lo: ../../include/net-snmp/agent/mode_end_call.h
+./mibII/updates.lo: ../../include/net-snmp/agent/table.h
+./mibII/updates.lo: ../../include/net-snmp/agent/table_data.h
+./mibII/updates.lo: ../../include/net-snmp/agent/table_dataset.h
+./mibII/updates.lo: ../../include/net-snmp/agent/table_tdata.h
+./mibII/updates.lo: ../../include/net-snmp/agent/table_iterator.h
+./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
+./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/vacm_conf.lo: ../../include/net-snmp/library/mib.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/mib_api.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/library/parse.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/utilities.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/system.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/tools.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/int64.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/library/callback.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/data_list.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/container.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/version.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/session_api.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/vacm_conf.lo: ../../include/net-snmp/pdu_api.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/mib_api.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/library/mib.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/library/parse.h
-./mibII/vacm_conf.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/config_api.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -7552,6 +8359,7 @@
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/vacm_conf.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7589,66 +8397,70 @@
 ./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 util_funcs.h struct.h
-./mibII/vacm_conf.lo: ./mibII/sysORTable.h ../../agent/snmpd.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
+./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/vacm_context.lo: ../../include/net-snmp/library/mib.h
+./mibII/vacm_context.lo: ../../include/net-snmp/mib_api.h
+./mibII/vacm_context.lo: ../../include/net-snmp/library/parse.h
+./mibII/vacm_context.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/vacm_context.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/vacm_context.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/utilities.h
-./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/system.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/tools.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/int64.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/vacm_context.lo: ../../include/net-snmp/library/callback.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/data_list.h
-./mibII/vacm_context.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/container.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/version.h
-./mibII/vacm_context.lo: ../../include/net-snmp/session_api.h
-./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/vacm_context.lo: ../../include/net-snmp/pdu_api.h
-./mibII/vacm_context.lo: ../../include/net-snmp/mib_api.h
-./mibII/vacm_context.lo: ../../include/net-snmp/library/mib.h
-./mibII/vacm_context.lo: ../../include/net-snmp/library/parse.h
-./mibII/vacm_context.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/config_api.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -7657,6 +8469,7 @@
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/vacm_context.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/vacm_context.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7694,64 +8507,69 @@
 ./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
+./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/vacm_vars.lo: ../../include/net-snmp/library/mib.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/mib_api.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/library/parse.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/library/oid_stash.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/net-snmp-features.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/utilities.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/system.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/tools.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/int64.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/library/callback.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/data_list.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/container.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/version.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/session_api.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/vacm_vars.lo: ../../include/net-snmp/pdu_api.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/mib_api.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/library/mib.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/library/parse.h
-./mibII/vacm_vars.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/config_api.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -7760,6 +8578,7 @@
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/vacm_vars.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7797,67 +8616,72 @@
 ./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: ./mibII/vacm_vars.h util_funcs.h struct.h
-./mibII/vacm_vars.lo: ./mibII/sysORTable.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: ../../include/net-snmp/net-snmp-features.h
 ./mibII/var_route.lo: ./mibII/route_headers.h
 ./mibII/var_route.lo: ../../include/net-snmp/net-snmp-includes.h
 ./mibII/var_route.lo: ../../include/net-snmp/definitions.h
 ./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
+./mibII/var_route.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./mibII/var_route.lo: ../../include/net-snmp/library/mib.h
+./mibII/var_route.lo: ../../include/net-snmp/mib_api.h
+./mibII/var_route.lo: ../../include/net-snmp/library/parse.h
+./mibII/var_route.lo: ../../include/net-snmp/library/oid_stash.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmp_impl.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmp.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmp-tc.h
+./mibII/var_route.lo: ../../include/net-snmp/library/getopt.h
 ./mibII/var_route.lo: ../../include/net-snmp/utilities.h
-./mibII/var_route.lo: ../../include/net-snmp/library/snmp_client.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/system.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/tools.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/int64.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/mt_support.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmp_alarm.h
-./mibII/var_route.lo: ../../include/net-snmp/library/callback.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/data_list.h
-./mibII/var_route.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./mibII/var_route.lo: ../../include/net-snmp/library/container.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmp_assert.h
 ./mibII/var_route.lo: ../../include/net-snmp/version.h
-./mibII/var_route.lo: ../../include/net-snmp/session_api.h
-./mibII/var_route.lo: ../../include/net-snmp/library/snmp_transport.h
-./mibII/var_route.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./mibII/var_route.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./mibII/var_route.lo: ../../include/net-snmp/pdu_api.h
-./mibII/var_route.lo: ../../include/net-snmp/mib_api.h
-./mibII/var_route.lo: ../../include/net-snmp/library/mib.h
-./mibII/var_route.lo: ../../include/net-snmp/library/parse.h
-./mibII/var_route.lo: ../../include/net-snmp/varbind_api.h
 ./mibII/var_route.lo: ../../include/net-snmp/config_api.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/read_config.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -7866,6 +8690,7 @@
 ./mibII/var_route.lo: ../../include/net-snmp/library/lcd_time.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./mibII/var_route.lo: ../../include/net-snmp/library/snmptsm.h
 ./mibII/var_route.lo: ../../include/net-snmp/library/snmpusm.h
 ./mibII/var_route.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./mibII/var_route.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -7903,68 +8728,75 @@
 ./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 util_funcs.h
+./mibII/var_route.lo: struct.h util_funcs.h util_funcs/header_generic.h
+./mibII/var_route.lo: util_funcs/header_simple_table.h
+./mibII/var_route.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/net-snmp-config.h
-./misc/ipfwacc.lo: ../../include/net-snmp/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
+./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./misc/ipfwacc.lo: ../../include/net-snmp/library/mib.h
+./misc/ipfwacc.lo: ../../include/net-snmp/mib_api.h
+./misc/ipfwacc.lo: ../../include/net-snmp/library/parse.h
+./misc/ipfwacc.lo: ../../include/net-snmp/library/oid_stash.h
+./misc/ipfwacc.lo: ../../include/net-snmp/net-snmp-features.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_impl.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp-tc.h
+./misc/ipfwacc.lo: ../../include/net-snmp/library/getopt.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/utilities.h
-./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_client.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/system.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/tools.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/int64.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/mt_support.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_alarm.h
-./misc/ipfwacc.lo: ../../include/net-snmp/library/callback.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/data_list.h
-./misc/ipfwacc.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/container.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_assert.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/version.h
-./misc/ipfwacc.lo: ../../include/net-snmp/session_api.h
-./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_transport.h
-./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./misc/ipfwacc.lo: ../../include/net-snmp/pdu_api.h
-./misc/ipfwacc.lo: ../../include/net-snmp/mib_api.h
-./misc/ipfwacc.lo: ../../include/net-snmp/library/mib.h
-./misc/ipfwacc.lo: ../../include/net-snmp/library/parse.h
-./misc/ipfwacc.lo: ../../include/net-snmp/varbind_api.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/config_api.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/read_config.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -7973,6 +8805,7 @@
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/lcd_time.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./misc/ipfwacc.lo: ../../include/net-snmp/library/snmptsm.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/library/snmpusm.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./misc/ipfwacc.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8009,65 +8842,70 @@
 ./misc/ipfwacc.lo: ../../include/net-snmp/agent/table_iterator.h
 ./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 util_funcs.h struct.h
-./misc/ipfwacc.lo: ./misc/ipfwacc.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-features.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/net-snmp-includes.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/definitions.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/types.h
+./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
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/mib.h
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/mib_api.h
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/parse.h
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/oid_stash.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_impl.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp-tc.h
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/getopt.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/utilities.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_client.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/system.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/tools.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/int64.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/mt_support.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_alarm.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/callback.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/data_list.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/container.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_assert.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/version.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/session_api.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_transport.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/pdu_api.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/mib_api.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/mib.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/parse.h
-./notification-log-mib/notification_log.lo: ../../include/net-snmp/varbind_api.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/config_api.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/read_config.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -8076,6 +8914,7 @@
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/lcd_time.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmptsm.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/library/snmpusm.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./notification-log-mib/notification_log.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8113,65 +8952,71 @@
 ./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: ../../agent/mibgroup/mibII/sysORTable.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-features.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/definitions.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/types.h
+./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
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/mib.h
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/mib_api.h
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/parse.h
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/getopt.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/utilities.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/system.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/tools.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/int64.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/mt_support.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/callback.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/data_list.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/container.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/version.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/session_api.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/pdu_api.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/mib_api.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/mib.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/parse.h
-./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/varbind_api.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/config_api.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/read_config.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -8180,6 +9025,7 @@
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./notification/snmpNotifyFilterProfileTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8217,65 +9063,70 @@
 ./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-features.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/net-snmp-includes.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/definitions.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/types.h
+./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
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/mib.h
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/mib_api.h
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/parse.h
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/getopt.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/utilities.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/system.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/tools.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/int64.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/mt_support.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/callback.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/data_list.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/container.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/version.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/session_api.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/pdu_api.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/mib_api.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/mib.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/parse.h
-./notification/snmpNotifyTable.lo: ../../include/net-snmp/varbind_api.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/config_api.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/read_config.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -8284,6 +9135,7 @@
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8321,6 +9173,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
@@ -8333,65 +9186,833 @@
 ./notification/snmpNotifyTable.lo: snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.h
 ./notification/snmpNotifyTable.lo: snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.h
 ./notification/snmpNotifyTable.lo: ../../include/net-snmp/agent/agent_callbacks.h
-./notification/snmpNotifyTable.lo: ../../agent/mibgroup/mibII/sysORTable.h
+./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/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
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./Rmon/agutil.lo: ../../include/net-snmp/library/mib.h
+./Rmon/agutil.lo: ../../include/net-snmp/mib_api.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/parse.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/oid_stash.h
+./Rmon/agutil.lo: ../../include/net-snmp/net-snmp-features.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_impl.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmp.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmp-tc.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/getopt.h
+./Rmon/agutil.lo: ../../include/net-snmp/utilities.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/system.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/tools.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/int64.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/mt_support.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_alarm.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./Rmon/agutil.lo: ../../include/net-snmp/library/container.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_assert.h
+./Rmon/agutil.lo: ../../include/net-snmp/version.h
+./Rmon/agutil.lo: ../../include/net-snmp/config_api.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/read_config.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmpv3.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/transform_oids.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/keytools.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/scapi.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/lcd_time.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmp_secmod.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmptsm.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/snmpusm.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/mib_module_config.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/agent_module_config.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/snmp_agent.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/snmp_vars.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/agent_handler.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/var_struct.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/agent_registry.h
+./Rmon/agutil.lo: ../../include/net-snmp/library/fd_event_manager.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/ds_agent.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/agent_read_config.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/agent_trap.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/all_helpers.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/instance.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/baby_steps.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/scalar.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/scalar_group.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/watcher.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/multiplexer.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/null.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/debug_handler.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/cache_handler.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/old_api.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/read_only.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/row_merge.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/serialize.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/mode_end_call.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/table.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/table_data.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/table_dataset.h
+./Rmon/agutil.lo: ../../include/net-snmp/agent/table_tdata.h
+./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.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/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
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./Rmon/alarm.lo: ../../include/net-snmp/library/mib.h
+./Rmon/alarm.lo: ../../include/net-snmp/mib_api.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/parse.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/oid_stash.h
+./Rmon/alarm.lo: ../../include/net-snmp/net-snmp-features.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_impl.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmp.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmp-tc.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/getopt.h
+./Rmon/alarm.lo: ../../include/net-snmp/utilities.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/system.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/tools.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/int64.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/mt_support.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_alarm.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./Rmon/alarm.lo: ../../include/net-snmp/library/container.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_assert.h
+./Rmon/alarm.lo: ../../include/net-snmp/version.h
+./Rmon/alarm.lo: ../../include/net-snmp/config_api.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/read_config.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmpv3.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/transform_oids.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/keytools.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/scapi.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/lcd_time.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmp_secmod.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmptsm.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/snmpusm.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/mib_module_config.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/agent_module_config.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/snmp_agent.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/snmp_vars.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/agent_handler.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/var_struct.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/agent_registry.h
+./Rmon/alarm.lo: ../../include/net-snmp/library/fd_event_manager.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/ds_agent.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/agent_read_config.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/agent_trap.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/all_helpers.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/instance.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/baby_steps.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/scalar.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/scalar_group.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/watcher.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/multiplexer.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/null.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/debug_handler.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/cache_handler.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/old_api.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/read_only.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/row_merge.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/serialize.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/mode_end_call.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/table.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/table_data.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/table_dataset.h
+./Rmon/alarm.lo: ../../include/net-snmp/agent/table_tdata.h
+./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.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./Rmon/alarm.lo: ./Rmon/alarm.h ./Rmon/agutil_api.h ./Rmon/row_api.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/net-snmp-config.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/net-snmp-features.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/net-snmp-includes.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/definitions.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/types.h
+./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
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/mib.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/mib_api.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/parse.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/oid_stash.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp_impl.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/getopt.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/utilities.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/system.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/tools.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/int64.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/mt_support.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp_alarm.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/container.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp_assert.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/version.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/config_api.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/read_config.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpv3.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/transform_oids.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/keytools.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/scapi.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/lcd_time.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmp_secmod.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmptsm.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/snmpusm.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/mib_module_config.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/agent_module_config.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/snmp_agent.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/snmp_vars.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/agent_handler.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/var_struct.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/agent_registry.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/library/fd_event_manager.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/ds_agent.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/agent_read_config.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/agent_trap.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/all_helpers.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/instance.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/baby_steps.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/scalar.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/scalar_group.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/watcher.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/multiplexer.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/null.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/debug_handler.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/cache_handler.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/old_api.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/read_only.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/row_merge.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/serialize.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/mode_end_call.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/table.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/table_data.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/table_dataset.h
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/table_tdata.h
+./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
+./Rmon/alarmTable.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
+./Rmon/alarmTable.lo: utilities/iquery.h ./Rmon/alarmTable.h
+./Rmon/event.lo: ../../include/net-snmp/net-snmp-config.h
+./Rmon/event.lo: ../../include/net-snmp/net-snmp-features.h
+./Rmon/event.lo: ../../include/net-snmp/net-snmp-includes.h
+./Rmon/event.lo: ../../include/net-snmp/definitions.h
+./Rmon/event.lo: ../../include/net-snmp/types.h
+./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
+./Rmon/event.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./Rmon/event.lo: ../../include/net-snmp/library/mib.h
+./Rmon/event.lo: ../../include/net-snmp/mib_api.h
+./Rmon/event.lo: ../../include/net-snmp/library/parse.h
+./Rmon/event.lo: ../../include/net-snmp/library/oid_stash.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmp_impl.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmp.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmp-tc.h
+./Rmon/event.lo: ../../include/net-snmp/library/getopt.h
+./Rmon/event.lo: ../../include/net-snmp/utilities.h
+./Rmon/event.lo: ../../include/net-snmp/library/system.h
+./Rmon/event.lo: ../../include/net-snmp/library/tools.h
+./Rmon/event.lo: ../../include/net-snmp/library/int64.h
+./Rmon/event.lo: ../../include/net-snmp/library/mt_support.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmp_alarm.h
+./Rmon/event.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./Rmon/event.lo: ../../include/net-snmp/library/container.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmp_assert.h
+./Rmon/event.lo: ../../include/net-snmp/version.h
+./Rmon/event.lo: ../../include/net-snmp/config_api.h
+./Rmon/event.lo: ../../include/net-snmp/library/read_config.h
+./Rmon/event.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmpv3.h
+./Rmon/event.lo: ../../include/net-snmp/library/transform_oids.h
+./Rmon/event.lo: ../../include/net-snmp/library/keytools.h
+./Rmon/event.lo: ../../include/net-snmp/library/scapi.h
+./Rmon/event.lo: ../../include/net-snmp/library/lcd_time.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmp_secmod.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmptsm.h
+./Rmon/event.lo: ../../include/net-snmp/library/snmpusm.h
+./Rmon/event.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./Rmon/event.lo: ../../include/net-snmp/agent/mib_module_config.h
+./Rmon/event.lo: ../../include/net-snmp/agent/agent_module_config.h
+./Rmon/event.lo: ../../include/net-snmp/agent/snmp_agent.h
+./Rmon/event.lo: ../../include/net-snmp/agent/snmp_vars.h
+./Rmon/event.lo: ../../include/net-snmp/agent/agent_handler.h
+./Rmon/event.lo: ../../include/net-snmp/agent/var_struct.h
+./Rmon/event.lo: ../../include/net-snmp/agent/agent_registry.h
+./Rmon/event.lo: ../../include/net-snmp/library/fd_event_manager.h
+./Rmon/event.lo: ../../include/net-snmp/agent/ds_agent.h
+./Rmon/event.lo: ../../include/net-snmp/agent/agent_read_config.h
+./Rmon/event.lo: ../../include/net-snmp/agent/agent_trap.h
+./Rmon/event.lo: ../../include/net-snmp/agent/all_helpers.h
+./Rmon/event.lo: ../../include/net-snmp/agent/instance.h
+./Rmon/event.lo: ../../include/net-snmp/agent/baby_steps.h
+./Rmon/event.lo: ../../include/net-snmp/agent/scalar.h
+./Rmon/event.lo: ../../include/net-snmp/agent/scalar_group.h
+./Rmon/event.lo: ../../include/net-snmp/agent/watcher.h
+./Rmon/event.lo: ../../include/net-snmp/agent/multiplexer.h
+./Rmon/event.lo: ../../include/net-snmp/agent/null.h
+./Rmon/event.lo: ../../include/net-snmp/agent/debug_handler.h
+./Rmon/event.lo: ../../include/net-snmp/agent/cache_handler.h
+./Rmon/event.lo: ../../include/net-snmp/agent/old_api.h
+./Rmon/event.lo: ../../include/net-snmp/agent/read_only.h
+./Rmon/event.lo: ../../include/net-snmp/agent/row_merge.h
+./Rmon/event.lo: ../../include/net-snmp/agent/serialize.h
+./Rmon/event.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./Rmon/event.lo: ../../include/net-snmp/agent/mode_end_call.h
+./Rmon/event.lo: ../../include/net-snmp/agent/table.h
+./Rmon/event.lo: ../../include/net-snmp/agent/table_data.h
+./Rmon/event.lo: ../../include/net-snmp/agent/table_dataset.h
+./Rmon/event.lo: ../../include/net-snmp/agent/table_tdata.h
+./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.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/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
+./Rmon/history.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./Rmon/history.lo: ../../include/net-snmp/library/mib.h
+./Rmon/history.lo: ../../include/net-snmp/mib_api.h
+./Rmon/history.lo: ../../include/net-snmp/library/parse.h
+./Rmon/history.lo: ../../include/net-snmp/library/oid_stash.h
+./Rmon/history.lo: ../../include/net-snmp/net-snmp-features.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmp_impl.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmp.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmp-tc.h
+./Rmon/history.lo: ../../include/net-snmp/library/getopt.h
+./Rmon/history.lo: ../../include/net-snmp/utilities.h
+./Rmon/history.lo: ../../include/net-snmp/library/system.h
+./Rmon/history.lo: ../../include/net-snmp/library/tools.h
+./Rmon/history.lo: ../../include/net-snmp/library/int64.h
+./Rmon/history.lo: ../../include/net-snmp/library/mt_support.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmp_alarm.h
+./Rmon/history.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./Rmon/history.lo: ../../include/net-snmp/library/container.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmp_assert.h
+./Rmon/history.lo: ../../include/net-snmp/version.h
+./Rmon/history.lo: ../../include/net-snmp/config_api.h
+./Rmon/history.lo: ../../include/net-snmp/library/read_config.h
+./Rmon/history.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmpv3.h
+./Rmon/history.lo: ../../include/net-snmp/library/transform_oids.h
+./Rmon/history.lo: ../../include/net-snmp/library/keytools.h
+./Rmon/history.lo: ../../include/net-snmp/library/scapi.h
+./Rmon/history.lo: ../../include/net-snmp/library/lcd_time.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmp_secmod.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmptsm.h
+./Rmon/history.lo: ../../include/net-snmp/library/snmpusm.h
+./Rmon/history.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./Rmon/history.lo: ../../include/net-snmp/agent/mib_module_config.h
+./Rmon/history.lo: ../../include/net-snmp/agent/agent_module_config.h
+./Rmon/history.lo: ../../include/net-snmp/agent/snmp_agent.h
+./Rmon/history.lo: ../../include/net-snmp/agent/snmp_vars.h
+./Rmon/history.lo: ../../include/net-snmp/agent/agent_handler.h
+./Rmon/history.lo: ../../include/net-snmp/agent/var_struct.h
+./Rmon/history.lo: ../../include/net-snmp/agent/agent_registry.h
+./Rmon/history.lo: ../../include/net-snmp/library/fd_event_manager.h
+./Rmon/history.lo: ../../include/net-snmp/agent/ds_agent.h
+./Rmon/history.lo: ../../include/net-snmp/agent/agent_read_config.h
+./Rmon/history.lo: ../../include/net-snmp/agent/agent_trap.h
+./Rmon/history.lo: ../../include/net-snmp/agent/all_helpers.h
+./Rmon/history.lo: ../../include/net-snmp/agent/instance.h
+./Rmon/history.lo: ../../include/net-snmp/agent/baby_steps.h
+./Rmon/history.lo: ../../include/net-snmp/agent/scalar.h
+./Rmon/history.lo: ../../include/net-snmp/agent/scalar_group.h
+./Rmon/history.lo: ../../include/net-snmp/agent/watcher.h
+./Rmon/history.lo: ../../include/net-snmp/agent/multiplexer.h
+./Rmon/history.lo: ../../include/net-snmp/agent/null.h
+./Rmon/history.lo: ../../include/net-snmp/agent/debug_handler.h
+./Rmon/history.lo: ../../include/net-snmp/agent/cache_handler.h
+./Rmon/history.lo: ../../include/net-snmp/agent/old_api.h
+./Rmon/history.lo: ../../include/net-snmp/agent/read_only.h
+./Rmon/history.lo: ../../include/net-snmp/agent/row_merge.h
+./Rmon/history.lo: ../../include/net-snmp/agent/serialize.h
+./Rmon/history.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./Rmon/history.lo: ../../include/net-snmp/agent/mode_end_call.h
+./Rmon/history.lo: ../../include/net-snmp/agent/table.h
+./Rmon/history.lo: ../../include/net-snmp/agent/table_data.h
+./Rmon/history.lo: ../../include/net-snmp/agent/table_dataset.h
+./Rmon/history.lo: ../../include/net-snmp/agent/table_tdata.h
+./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.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/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
+./Rmon/rows.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./Rmon/rows.lo: ../../include/net-snmp/library/mib.h
+./Rmon/rows.lo: ../../include/net-snmp/mib_api.h
+./Rmon/rows.lo: ../../include/net-snmp/library/parse.h
+./Rmon/rows.lo: ../../include/net-snmp/library/oid_stash.h
+./Rmon/rows.lo: ../../include/net-snmp/net-snmp-features.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmp_impl.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmp.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmp-tc.h
+./Rmon/rows.lo: ../../include/net-snmp/library/getopt.h
+./Rmon/rows.lo: ../../include/net-snmp/utilities.h
+./Rmon/rows.lo: ../../include/net-snmp/library/system.h
+./Rmon/rows.lo: ../../include/net-snmp/library/tools.h
+./Rmon/rows.lo: ../../include/net-snmp/library/int64.h
+./Rmon/rows.lo: ../../include/net-snmp/library/mt_support.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmp_alarm.h
+./Rmon/rows.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./Rmon/rows.lo: ../../include/net-snmp/library/container.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmp_assert.h
+./Rmon/rows.lo: ../../include/net-snmp/version.h
+./Rmon/rows.lo: ../../include/net-snmp/config_api.h
+./Rmon/rows.lo: ../../include/net-snmp/library/read_config.h
+./Rmon/rows.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmpv3.h
+./Rmon/rows.lo: ../../include/net-snmp/library/transform_oids.h
+./Rmon/rows.lo: ../../include/net-snmp/library/keytools.h
+./Rmon/rows.lo: ../../include/net-snmp/library/scapi.h
+./Rmon/rows.lo: ../../include/net-snmp/library/lcd_time.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmp_secmod.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmptsm.h
+./Rmon/rows.lo: ../../include/net-snmp/library/snmpusm.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/mib_module_config.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/agent_module_config.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/snmp_agent.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/snmp_vars.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/agent_handler.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/var_struct.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/agent_registry.h
+./Rmon/rows.lo: ../../include/net-snmp/library/fd_event_manager.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/ds_agent.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/agent_read_config.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/agent_trap.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/all_helpers.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/instance.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/baby_steps.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/scalar.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/scalar_group.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/watcher.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/multiplexer.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/null.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/debug_handler.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/cache_handler.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/old_api.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/read_only.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/row_merge.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/serialize.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/mode_end_call.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/table.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/table_data.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/table_dataset.h
+./Rmon/rows.lo: ../../include/net-snmp/agent/table_tdata.h
+./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/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/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
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./Rmon/statistics.lo: ../../include/net-snmp/library/mib.h
+./Rmon/statistics.lo: ../../include/net-snmp/mib_api.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/parse.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/oid_stash.h
+./Rmon/statistics.lo: ../../include/net-snmp/net-snmp-features.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_impl.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmp.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmp-tc.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/getopt.h
+./Rmon/statistics.lo: ../../include/net-snmp/utilities.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/system.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/tools.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/int64.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/mt_support.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_alarm.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./Rmon/statistics.lo: ../../include/net-snmp/library/container.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_assert.h
+./Rmon/statistics.lo: ../../include/net-snmp/version.h
+./Rmon/statistics.lo: ../../include/net-snmp/config_api.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/read_config.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmpv3.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/transform_oids.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/keytools.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/scapi.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/lcd_time.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmp_secmod.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmptsm.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/snmpusm.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/mib_module_config.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/agent_module_config.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/snmp_agent.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/snmp_vars.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/agent_handler.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/var_struct.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/agent_registry.h
+./Rmon/statistics.lo: ../../include/net-snmp/library/fd_event_manager.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/ds_agent.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/agent_read_config.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/agent_trap.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/all_helpers.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/instance.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/baby_steps.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/scalar.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/scalar_group.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/watcher.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/multiplexer.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/null.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/debug_handler.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/cache_handler.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/old_api.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/read_only.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/row_merge.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/serialize.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/mode_end_call.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/table.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/table_data.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/table_dataset.h
+./Rmon/statistics.lo: ../../include/net-snmp/agent/table_tdata.h
+./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.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
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/getopt.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/utilities.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/system.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/tools.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/int64.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/mt_support.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/data_list.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/version.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/session_api.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/pdu_api.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/mib_api.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/mib.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/parse.h
-./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/config_api.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/read_config.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -8400,6 +10021,7 @@
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpAssocLocalAddrTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8437,65 +10059,70 @@
 ./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
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/getopt.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/utilities.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/system.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/tools.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/int64.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/mt_support.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/data_list.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/version.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/session_api.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/pdu_api.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/mib_api.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/mib.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/parse.h
-./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/config_api.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/read_config.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -8504,6 +10131,7 @@
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpAssocRemAddrTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8541,65 +10169,70 @@
 ./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
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/getopt.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/utilities.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/system.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/tools.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/int64.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/mt_support.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/data_list.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/version.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/session_api.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/pdu_api.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/mib_api.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/mib.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/parse.h
-./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/config_api.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/read_config.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -8608,6 +10241,7 @@
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpAssocTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8645,65 +10279,70 @@
 ./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
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/getopt.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/utilities.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/system.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/tools.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/int64.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/mt_support.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/data_list.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/version.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/session_api.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/pdu_api.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/mib_api.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/mib.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/parse.h
-./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/config_api.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/read_config.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -8712,6 +10351,7 @@
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpLookupLocalPortTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8749,65 +10389,70 @@
 ./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
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/getopt.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/utilities.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/system.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/tools.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/int64.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/mt_support.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/data_list.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/version.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/session_api.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/pdu_api.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/mib_api.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/mib.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/parse.h
-./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/config_api.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/read_config.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -8816,6 +10461,7 @@
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpLookupRemHostNameTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8853,65 +10499,70 @@
 ./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
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/getopt.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/utilities.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/system.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/tools.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/int64.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/mt_support.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/data_list.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/version.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/session_api.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/pdu_api.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/mib_api.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/mib.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/parse.h
-./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/config_api.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/read_config.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -8920,6 +10571,7 @@
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpLookupRemIPAddrTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -8957,65 +10609,70 @@
 ./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
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/getopt.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/utilities.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/system.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/tools.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/int64.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/mt_support.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/data_list.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/version.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/session_api.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/pdu_api.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/mib_api.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/mib.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/parse.h
-./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/config_api.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/read_config.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -9024,6 +10681,7 @@
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpLookupRemPortTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9061,65 +10719,70 @@
 ./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
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/getopt.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/utilities.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/system.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/tools.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/int64.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/mt_support.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_alarm.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/data_list.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_assert.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/version.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/session_api.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_transport.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/pdu_api.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/mib_api.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/mib.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/parse.h
-./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/config_api.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/read_config.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -9128,6 +10791,7 @@
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpLookupRemPrimIPAddrTable.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9165,65 +10829,70 @@
 ./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
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/getopt.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/utilities.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/system.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/tools.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/int64.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/mt_support.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_alarm.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/data_list.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_assert.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/version.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/session_api.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_transport.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/pdu_api.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/mib_api.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/mib.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/parse.h
-./sctp-mib/sctpScalars.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/config_api.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/read_config.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -9232,6 +10901,7 @@
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpScalars.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9269,65 +10939,70 @@
 ./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
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/getopt.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/utilities.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/system.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/tools.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/int64.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/mt_support.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_alarm.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/data_list.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_assert.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/version.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/session_api.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_transport.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/pdu_api.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/mib_api.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/mib.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/parse.h
-./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/config_api.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/read_config.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -9336,6 +11011,7 @@
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpScalars_common.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9373,64 +11049,178 @@
 ./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/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
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/net-snmp-features.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_impl.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/getopt.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/utilities.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/system.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/tools.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/int64.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/mt_support.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_alarm.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/container.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_assert.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/version.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/config_api.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/read_config.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/default_store.h
+./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/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
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/keytools.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/scapi.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/lcd_time.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmp_secmod.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmptsm.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/snmpusm.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/mib_module_config.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/agent_module_config.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/snmp_agent.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/snmp_vars.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/agent_handler.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/var_struct.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/agent_registry.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/library/fd_event_manager.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/ds_agent.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/agent_read_config.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/agent_trap.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/all_helpers.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/instance.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/baby_steps.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/scalar.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/scalar_group.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/watcher.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/multiplexer.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/null.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/debug_handler.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/cache_handler.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/old_api.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/read_only.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/row_merge.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/serialize.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/mode_end_call.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/table.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/table_data.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/table_dataset.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/table_tdata.h
+./sctp-mib/sctpScalars_freebsd.lo: ../../include/net-snmp/agent/table_iterator.h
+./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
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/getopt.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/utilities.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/system.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/tools.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/int64.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/mt_support.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_alarm.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/data_list.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_assert.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/version.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/session_api.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_transport.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/pdu_api.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/mib_api.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/mib.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/parse.h
-./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/config_api.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/read_config.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -9439,6 +11229,7 @@
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpScalars_linux.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9476,64 +11267,179 @@
 ./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/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
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/net-snmp-features.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_impl.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/getopt.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/utilities.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/system.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/tools.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/int64.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/mt_support.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_alarm.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/container.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_assert.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/version.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/config_api.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/read_config.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/default_store.h
+./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/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
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/keytools.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/scapi.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/lcd_time.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmp_secmod.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmptsm.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/snmpusm.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/mib_module_config.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/agent_module_config.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/snmp_agent.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/snmp_vars.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/agent_handler.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/var_struct.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/agent_registry.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/library/fd_event_manager.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/ds_agent.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/agent_read_config.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/agent_trap.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/all_helpers.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/instance.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/baby_steps.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/scalar.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/scalar_group.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/watcher.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/multiplexer.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/null.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/debug_handler.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/cache_handler.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/old_api.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/read_only.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/row_merge.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/serialize.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/mode_end_call.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/table.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/table_data.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/table_dataset.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/table_tdata.h
+./sctp-mib/sctpScalars_solaris2.lo: ../../include/net-snmp/agent/table_iterator.h
+./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-features.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/net-snmp-includes.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/definitions.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/types.h
+./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
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/oid_stash.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/getopt.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/utilities.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/system.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/tools.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/int64.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/mt_support.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_alarm.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/data_list.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_assert.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/version.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/session_api.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_transport.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/pdu_api.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/mib_api.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/mib.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/parse.h
-./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/config_api.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/read_config.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -9542,6 +11448,7 @@
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpTables_common.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9579,6 +11486,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
@@ -9588,63 +11496,182 @@
 ./sctp-mib/sctpTables_common.lo: ./sctp-mib/sctpLookupRemHostNameTable.h
 ./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/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
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/net-snmp-features.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_impl.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/getopt.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/utilities.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/system.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/tools.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/int64.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/mt_support.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_alarm.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/container.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_assert.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/version.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/config_api.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/read_config.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/default_store.h
+./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/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
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/keytools.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/scapi.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/lcd_time.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmp_secmod.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmptsm.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/snmpusm.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/mib_module_config.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/agent_module_config.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/snmp_agent.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/snmp_vars.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/agent_handler.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/var_struct.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/agent_registry.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/library/fd_event_manager.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/ds_agent.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/agent_read_config.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/agent_trap.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/all_helpers.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/instance.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/baby_steps.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/scalar.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/scalar_group.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/watcher.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/multiplexer.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/null.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/debug_handler.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/cache_handler.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/old_api.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/read_only.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/row_merge.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/serialize.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/mode_end_call.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/table.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/table_data.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/table_dataset.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/table_tdata.h
+./sctp-mib/sctpTables_freebsd.lo: ../../include/net-snmp/agent/table_iterator.h
+./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/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
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/net-snmp-features.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_impl.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/getopt.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/utilities.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_client.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/system.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/tools.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/int64.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/mt_support.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_alarm.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/callback.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/data_list.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/container.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_assert.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/version.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/session_api.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_transport.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/pdu_api.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/mib_api.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/mib.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/parse.h
-./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/varbind_api.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/config_api.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/read_config.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -9653,6 +11680,7 @@
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/lcd_time.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmptsm.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/library/snmpusm.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./sctp-mib/sctpTables_linux.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9690,68 +11718,189 @@
 ./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: util_funcs.h struct.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/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
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/mib.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/mib_api.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/parse.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/oid_stash.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/net-snmp-features.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_impl.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp-tc.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/getopt.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/utilities.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/system.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/tools.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/int64.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/mt_support.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_alarm.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/container.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_assert.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/version.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/config_api.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/read_config.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/default_store.h
+./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/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
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/keytools.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/scapi.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/lcd_time.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmp_secmod.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmptsm.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/snmpusm.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/mib_module_config.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/agent_module_config.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/snmp_agent.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/snmp_vars.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/agent_handler.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/var_struct.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/agent_registry.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/library/fd_event_manager.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/ds_agent.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/agent_read_config.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/agent_trap.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/all_helpers.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/instance.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/baby_steps.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/scalar.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/scalar_group.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/watcher.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/multiplexer.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/null.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/debug_handler.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/cache_handler.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/old_api.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/read_only.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/row_merge.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/serialize.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/mode_end_call.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/table.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/table_data.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/table_dataset.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/table_tdata.h
+./sctp-mib/sctpTables_solaris2.lo: ../../include/net-snmp/agent/table_iterator.h
+./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/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-features.h
 ./smux/smux.lo: ../../include/net-snmp/net-snmp-includes.h
 ./smux/smux.lo: ../../include/net-snmp/definitions.h
 ./smux/smux.lo: ../../include/net-snmp/types.h
+./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
+./smux/smux.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./smux/smux.lo: ../../include/net-snmp/library/mib.h
+./smux/smux.lo: ../../include/net-snmp/mib_api.h
+./smux/smux.lo: ../../include/net-snmp/library/parse.h
+./smux/smux.lo: ../../include/net-snmp/library/oid_stash.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmp_impl.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmp.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmp-tc.h
+./smux/smux.lo: ../../include/net-snmp/library/getopt.h
 ./smux/smux.lo: ../../include/net-snmp/utilities.h
-./smux/smux.lo: ../../include/net-snmp/library/snmp_client.h
 ./smux/smux.lo: ../../include/net-snmp/library/system.h
 ./smux/smux.lo: ../../include/net-snmp/library/tools.h
 ./smux/smux.lo: ../../include/net-snmp/library/int64.h
 ./smux/smux.lo: ../../include/net-snmp/library/mt_support.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmp_alarm.h
-./smux/smux.lo: ../../include/net-snmp/library/callback.h
 ./smux/smux.lo: ../../include/net-snmp/library/data_list.h
-./smux/smux.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./smux/smux.lo: ../../include/net-snmp/library/container.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmp_assert.h
 ./smux/smux.lo: ../../include/net-snmp/version.h
-./smux/smux.lo: ../../include/net-snmp/session_api.h
-./smux/smux.lo: ../../include/net-snmp/library/snmp_transport.h
-./smux/smux.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./smux/smux.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./smux/smux.lo: ../../include/net-snmp/pdu_api.h
-./smux/smux.lo: ../../include/net-snmp/mib_api.h
-./smux/smux.lo: ../../include/net-snmp/library/mib.h
-./smux/smux.lo: ../../include/net-snmp/library/parse.h
-./smux/smux.lo: ../../include/net-snmp/varbind_api.h
 ./smux/smux.lo: ../../include/net-snmp/config_api.h
 ./smux/smux.lo: ../../include/net-snmp/library/read_config.h
 ./smux/smux.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -9760,6 +11909,7 @@
 ./smux/smux.lo: ../../include/net-snmp/library/lcd_time.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./smux/smux.lo: ../../include/net-snmp/library/snmptsm.h
 ./smux/smux.lo: ../../include/net-snmp/library/snmpusm.h
 ./smux/smux.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./smux/smux.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9796,65 +11946,70 @@
 ./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 util_funcs.h
-./smux/smux.lo: struct.h mibdefs.h ../../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
+./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./smux/snmp_bgp.lo: ../../include/net-snmp/library/mib.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/mib_api.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/library/parse.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/library/oid_stash.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/net-snmp-features.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_impl.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp-tc.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/library/getopt.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/utilities.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_client.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/system.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/tools.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/int64.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/mt_support.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_alarm.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/library/callback.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/data_list.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/container.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_assert.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/version.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/session_api.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_transport.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./smux/snmp_bgp.lo: ../../include/net-snmp/pdu_api.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/mib_api.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/library/mib.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/library/parse.h
-./smux/snmp_bgp.lo: ../../include/net-snmp/varbind_api.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/config_api.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/read_config.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -9863,6 +12018,7 @@
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/lcd_time.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmptsm.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/library/snmpusm.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./smux/snmp_bgp.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -9899,65 +12055,70 @@
 ./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
+./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./smux/snmp_ospf.lo: ../../include/net-snmp/library/mib.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/mib_api.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/library/parse.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/library/oid_stash.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/net-snmp-features.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_impl.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp-tc.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/library/getopt.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/utilities.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_client.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/system.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/tools.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/int64.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/mt_support.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_alarm.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/library/callback.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/data_list.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/container.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_assert.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/version.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/session_api.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_transport.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./smux/snmp_ospf.lo: ../../include/net-snmp/pdu_api.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/mib_api.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/library/mib.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/library/parse.h
-./smux/snmp_ospf.lo: ../../include/net-snmp/varbind_api.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/config_api.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/read_config.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -9966,6 +12127,7 @@
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/lcd_time.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmptsm.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/library/snmpusm.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./smux/snmp_ospf.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10002,65 +12164,70 @@
 ./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
+./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./smux/snmp_rip2.lo: ../../include/net-snmp/library/mib.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/mib_api.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/library/parse.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/library/oid_stash.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/net-snmp-features.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_impl.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp-tc.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/library/getopt.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/utilities.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_client.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/system.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/tools.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/int64.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/mt_support.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_alarm.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/library/callback.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/data_list.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/container.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_assert.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/version.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/session_api.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_transport.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./smux/snmp_rip2.lo: ../../include/net-snmp/pdu_api.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/mib_api.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/library/mib.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/library/parse.h
-./smux/snmp_rip2.lo: ../../include/net-snmp/varbind_api.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/config_api.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/read_config.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -10069,6 +12236,7 @@
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/lcd_time.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmptsm.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/library/snmpusm.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./smux/snmp_rip2.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10105,65 +12273,70 @@
 ./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-features.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/net-snmp-includes.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/definitions.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/types.h
+./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
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/mib.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/mib_api.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/parse.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/oid_stash.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_impl.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp-tc.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/getopt.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/utilities.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_client.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/system.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/tools.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/int64.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/mt_support.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_alarm.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/callback.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/data_list.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/container.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_assert.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/version.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/session_api.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_transport.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/pdu_api.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/mib_api.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/mib.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/parse.h
-./snmpv3/snmpEngine.lo: ../../include/net-snmp/varbind_api.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/config_api.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/read_config.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -10172,6 +12345,7 @@
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/lcd_time.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmptsm.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/library/snmpusm.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10208,65 +12382,183 @@
 ./snmpv3/snmpEngine.lo: ../../include/net-snmp/agent/table_iterator.h
 ./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 util_funcs.h
-./snmpv3/snmpEngine.lo: struct.h mibII/sysORTable.h ./snmpv3/snmpEngine.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/net-snmp-features.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/net-snmp-includes.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/definitions.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/types.h
+./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
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/mib.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/mib_api.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/parse.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/oid_stash.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp_impl.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp-tc.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/getopt.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/utilities.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/system.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/tools.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/int64.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/mt_support.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp_alarm.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/container.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp_assert.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/version.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/config_api.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/read_config.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/default_store.h
+./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/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
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/keytools.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/scapi.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/lcd_time.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmp_secmod.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmptsm.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/snmpusm.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/mib_module_config.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/agent_module_config.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/snmp_agent.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/snmp_vars.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/agent_handler.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/var_struct.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/agent_registry.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/library/fd_event_manager.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/ds_agent.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/agent_read_config.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/agent_trap.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/all_helpers.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/instance.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/baby_steps.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/scalar.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/scalar_group.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/watcher.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/multiplexer.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/null.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/debug_handler.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/cache_handler.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/old_api.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/read_only.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/row_merge.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/serialize.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/mode_end_call.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/table.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/table_data.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/table_dataset.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/table_tdata.h
+./snmpv3/snmpMPDStats_5_5.lo: ../../include/net-snmp/agent/table_iterator.h
+./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.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
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/mib.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/mib_api.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/parse.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/oid_stash.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/net-snmp-features.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_impl.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp-tc.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/getopt.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/utilities.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_client.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/system.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/tools.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/int64.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/mt_support.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_alarm.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/callback.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/data_list.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/container.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_assert.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/version.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/session_api.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_transport.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/pdu_api.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/mib_api.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/mib.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/parse.h
-./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/varbind_api.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/config_api.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/read_config.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -10275,6 +12567,7 @@
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/lcd_time.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmptsm.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/library/snmpusm.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmpv3/snmpMPDStats.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10312,65 +12605,71 @@
 ./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: mibII/sysORTable.h ./snmpv3/snmpMPDStats.h
-./snmpv3/snmpMPDStats.lo: util_funcs.h struct.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
+./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./snmpv3/usmConf.lo: ../../include/net-snmp/library/mib.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/mib_api.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/library/parse.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/library/oid_stash.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/net-snmp-features.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_impl.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp-tc.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/library/getopt.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/utilities.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_client.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/system.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/tools.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/int64.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/mt_support.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_alarm.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/library/callback.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/data_list.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/container.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_assert.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/version.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/session_api.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_transport.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpv3/usmConf.lo: ../../include/net-snmp/pdu_api.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/mib_api.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/library/mib.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/library/parse.h
-./snmpv3/usmConf.lo: ../../include/net-snmp/varbind_api.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/config_api.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/read_config.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -10379,6 +12678,7 @@
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/lcd_time.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmptsm.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/library/snmpusm.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmpv3/usmConf.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10416,63 +12716,179 @@
 ./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/net-snmp-features.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/net-snmp-includes.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/definitions.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/types.h
+./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
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/mib.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/mib_api.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/parse.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/oid_stash.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp_impl.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp-tc.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/getopt.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/utilities.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/system.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/tools.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/int64.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/mt_support.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp_alarm.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/container.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp_assert.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/version.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/config_api.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/read_config.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/default_store.h
+./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/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
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/keytools.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/scapi.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/lcd_time.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmp_secmod.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmptsm.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/snmpusm.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/mib_module_config.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/agent_module_config.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/snmp_agent.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/snmp_vars.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/agent_handler.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/var_struct.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/agent_registry.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/library/fd_event_manager.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/ds_agent.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/agent_read_config.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/agent_trap.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/all_helpers.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/instance.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/baby_steps.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/scalar.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/scalar_group.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/watcher.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/multiplexer.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/null.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/debug_handler.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/cache_handler.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/old_api.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/read_only.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/row_merge.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/serialize.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/mode_end_call.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/table.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/table_data.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/table_dataset.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/table_tdata.h
+./snmpv3/usmStats_5_5.lo: ../../include/net-snmp/agent/table_iterator.h
+./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.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
+./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./snmpv3/usmStats.lo: ../../include/net-snmp/library/mib.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/mib_api.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/library/parse.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/library/oid_stash.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/net-snmp-features.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_impl.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp-tc.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/library/getopt.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/utilities.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_client.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/system.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/tools.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/int64.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/mt_support.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_alarm.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/library/callback.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/data_list.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/container.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_assert.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/version.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/session_api.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_transport.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpv3/usmStats.lo: ../../include/net-snmp/pdu_api.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/mib_api.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/library/mib.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/library/parse.h
-./snmpv3/usmStats.lo: ../../include/net-snmp/varbind_api.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/config_api.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/read_config.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -10481,6 +12897,7 @@
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/lcd_time.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmptsm.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/library/snmpusm.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmpv3/usmStats.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10517,65 +12934,72 @@
 ./snmpv3/usmStats.lo: ../../include/net-snmp/agent/table_iterator.h
 ./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 util_funcs.h
-./snmpv3/usmStats.lo: struct.h mibII/sysORTable.h ./snmpv3/usmStats.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-features.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/net-snmp-includes.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/definitions.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/types.h
+./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
+./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./snmpv3/usmUser.lo: ../../include/net-snmp/library/mib.h
+./snmpv3/usmUser.lo: ../../include/net-snmp/mib_api.h
+./snmpv3/usmUser.lo: ../../include/net-snmp/library/parse.h
+./snmpv3/usmUser.lo: ../../include/net-snmp/library/oid_stash.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_impl.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp-tc.h
+./snmpv3/usmUser.lo: ../../include/net-snmp/library/getopt.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/utilities.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_client.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/system.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/tools.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/int64.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/mt_support.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_alarm.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/library/callback.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/data_list.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/container.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_assert.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/version.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/session_api.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_transport.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpv3/usmUser.lo: ../../include/net-snmp/pdu_api.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/mib_api.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/library/mib.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/library/parse.h
-./snmpv3/usmUser.lo: ../../include/net-snmp/varbind_api.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/config_api.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/read_config.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -10584,6 +13008,7 @@
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/lcd_time.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmptsm.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/library/snmpusm.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmpv3/usmUser.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10620,65 +13045,70 @@
 ./snmpv3/usmUser.lo: ../../include/net-snmp/agent/table_iterator.h
 ./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 util_funcs.h struct.h
-./snmpv3/usmUser.lo: ./snmpv3/usmUser.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
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/mib.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/mib_api.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/parse.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/oid_stash.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/net-snmp-features.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_impl.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp-tc.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/getopt.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/utilities.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_client.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/system.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/tools.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/int64.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/mt_support.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_alarm.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/callback.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/data_list.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/container.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_assert.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/version.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/session_api.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_transport.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/pdu_api.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/mib_api.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/mib.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/parse.h
-./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/varbind_api.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/config_api.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/read_config.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -10687,6 +13117,7 @@
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/lcd_time.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmptsm.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/library/snmpusm.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./target/snmpTargetAddrEntry.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10724,65 +13155,70 @@
 ./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: ./target/snmpTargetAddrEntry.h util_funcs.h
-./target/snmpTargetAddrEntry.lo: struct.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
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/mib.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/mib_api.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/parse.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/oid_stash.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/net-snmp-features.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_impl.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp-tc.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/getopt.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/utilities.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_client.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/system.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/tools.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/int64.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/mt_support.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_alarm.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/callback.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/data_list.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/container.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_assert.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/version.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/session_api.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_transport.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/pdu_api.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/mib_api.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/mib.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/parse.h
-./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/varbind_api.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/config_api.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/read_config.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -10791,6 +13227,7 @@
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/lcd_time.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmptsm.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/library/snmpusm.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./target/snmpTargetParamsEntry.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10828,64 +13265,69 @@
 ./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-features.h
 ./target/target.lo: ../../include/net-snmp/net-snmp-includes.h
 ./target/target.lo: ../../include/net-snmp/definitions.h
 ./target/target.lo: ../../include/net-snmp/types.h
+./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
+./target/target.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./target/target.lo: ../../include/net-snmp/library/mib.h
+./target/target.lo: ../../include/net-snmp/mib_api.h
+./target/target.lo: ../../include/net-snmp/library/parse.h
+./target/target.lo: ../../include/net-snmp/library/oid_stash.h
 ./target/target.lo: ../../include/net-snmp/library/snmp_impl.h
 ./target/target.lo: ../../include/net-snmp/library/snmp.h
 ./target/target.lo: ../../include/net-snmp/library/snmp-tc.h
+./target/target.lo: ../../include/net-snmp/library/getopt.h
 ./target/target.lo: ../../include/net-snmp/utilities.h
-./target/target.lo: ../../include/net-snmp/library/snmp_client.h
 ./target/target.lo: ../../include/net-snmp/library/system.h
 ./target/target.lo: ../../include/net-snmp/library/tools.h
 ./target/target.lo: ../../include/net-snmp/library/int64.h
 ./target/target.lo: ../../include/net-snmp/library/mt_support.h
 ./target/target.lo: ../../include/net-snmp/library/snmp_alarm.h
-./target/target.lo: ../../include/net-snmp/library/callback.h
 ./target/target.lo: ../../include/net-snmp/library/data_list.h
-./target/target.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./target/target.lo: ../../include/net-snmp/library/container.h
 ./target/target.lo: ../../include/net-snmp/library/snmp_assert.h
 ./target/target.lo: ../../include/net-snmp/version.h
-./target/target.lo: ../../include/net-snmp/session_api.h
-./target/target.lo: ../../include/net-snmp/library/snmp_transport.h
-./target/target.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./target/target.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./target/target.lo: ../../include/net-snmp/pdu_api.h
-./target/target.lo: ../../include/net-snmp/mib_api.h
-./target/target.lo: ../../include/net-snmp/library/mib.h
-./target/target.lo: ../../include/net-snmp/library/parse.h
-./target/target.lo: ../../include/net-snmp/varbind_api.h
 ./target/target.lo: ../../include/net-snmp/config_api.h
 ./target/target.lo: ../../include/net-snmp/library/read_config.h
 ./target/target.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -10894,6 +13336,7 @@
 ./target/target.lo: ../../include/net-snmp/library/lcd_time.h
 ./target/target.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./target/target.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./target/target.lo: ../../include/net-snmp/library/snmptsm.h
 ./target/target.lo: ../../include/net-snmp/library/snmpusm.h
 ./target/target.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./target/target.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -10931,65 +13374,179 @@
 ./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/net-snmp-features.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/net-snmp-includes.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/definitions.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/types.h
+./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
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/mib.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/mib_api.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/parse.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/oid_stash.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp_impl.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp-tc.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/getopt.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/utilities.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/system.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/tools.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/int64.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/mt_support.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp_alarm.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/container.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp_assert.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/version.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/config_api.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/read_config.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/default_store.h
+./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/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
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/keytools.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/scapi.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/lcd_time.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmp_secmod.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmptsm.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/snmpusm.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/mib_module_config.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/agent_module_config.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/snmp_agent.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/snmp_vars.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/agent_handler.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/var_struct.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/agent_registry.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/library/fd_event_manager.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/ds_agent.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/agent_read_config.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/agent_trap.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/all_helpers.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/instance.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/baby_steps.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/scalar.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/scalar_group.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/watcher.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/multiplexer.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/null.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/debug_handler.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/cache_handler.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/old_api.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/read_only.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/row_merge.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/serialize.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/mode_end_call.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/table.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/table_data.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/table_dataset.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/table_tdata.h
+./target/target_counters_5_5.lo: ../../include/net-snmp/agent/table_iterator.h
+./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.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
+./target/target_counters.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./target/target_counters.lo: ../../include/net-snmp/library/mib.h
+./target/target_counters.lo: ../../include/net-snmp/mib_api.h
+./target/target_counters.lo: ../../include/net-snmp/library/parse.h
+./target/target_counters.lo: ../../include/net-snmp/library/oid_stash.h
+./target/target_counters.lo: ../../include/net-snmp/net-snmp-features.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmp_impl.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmp.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmp-tc.h
+./target/target_counters.lo: ../../include/net-snmp/library/getopt.h
 ./target/target_counters.lo: ../../include/net-snmp/utilities.h
-./target/target_counters.lo: ../../include/net-snmp/library/snmp_client.h
 ./target/target_counters.lo: ../../include/net-snmp/library/system.h
 ./target/target_counters.lo: ../../include/net-snmp/library/tools.h
 ./target/target_counters.lo: ../../include/net-snmp/library/int64.h
 ./target/target_counters.lo: ../../include/net-snmp/library/mt_support.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmp_alarm.h
-./target/target_counters.lo: ../../include/net-snmp/library/callback.h
 ./target/target_counters.lo: ../../include/net-snmp/library/data_list.h
-./target/target_counters.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./target/target_counters.lo: ../../include/net-snmp/library/container.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmp_assert.h
 ./target/target_counters.lo: ../../include/net-snmp/version.h
-./target/target_counters.lo: ../../include/net-snmp/session_api.h
-./target/target_counters.lo: ../../include/net-snmp/library/snmp_transport.h
-./target/target_counters.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./target/target_counters.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./target/target_counters.lo: ../../include/net-snmp/pdu_api.h
-./target/target_counters.lo: ../../include/net-snmp/mib_api.h
-./target/target_counters.lo: ../../include/net-snmp/library/mib.h
-./target/target_counters.lo: ../../include/net-snmp/library/parse.h
-./target/target_counters.lo: ../../include/net-snmp/varbind_api.h
 ./target/target_counters.lo: ../../include/net-snmp/config_api.h
 ./target/target_counters.lo: ../../include/net-snmp/library/read_config.h
 ./target/target_counters.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -10998,6 +13555,7 @@
 ./target/target_counters.lo: ../../include/net-snmp/library/lcd_time.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./target/target_counters.lo: ../../include/net-snmp/library/snmptsm.h
 ./target/target_counters.lo: ../../include/net-snmp/library/snmpusm.h
 ./target/target_counters.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./target/target_counters.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11035,64 +13593,178 @@
 ./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/net-snmp-features.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp_impl.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmp-tc.h
+./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/snmptsm.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/library/snmpusm.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./tsm-mib/snmpTsmConfigurationUsePrefix.lo: ../../include/net-snmp/agent/mib_module_config.h
+./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
+./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./tunnel/tunnel.lo: ../../include/net-snmp/library/mib.h
+./tunnel/tunnel.lo: ../../include/net-snmp/mib_api.h
+./tunnel/tunnel.lo: ../../include/net-snmp/library/parse.h
+./tunnel/tunnel.lo: ../../include/net-snmp/library/oid_stash.h
+./tunnel/tunnel.lo: ../../include/net-snmp/net-snmp-features.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_impl.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp-tc.h
+./tunnel/tunnel.lo: ../../include/net-snmp/library/getopt.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/utilities.h
-./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_client.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/system.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/tools.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/int64.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/mt_support.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_alarm.h
-./tunnel/tunnel.lo: ../../include/net-snmp/library/callback.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/data_list.h
-./tunnel/tunnel.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/container.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_assert.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/version.h
-./tunnel/tunnel.lo: ../../include/net-snmp/session_api.h
-./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_transport.h
-./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./tunnel/tunnel.lo: ../../include/net-snmp/pdu_api.h
-./tunnel/tunnel.lo: ../../include/net-snmp/mib_api.h
-./tunnel/tunnel.lo: ../../include/net-snmp/library/mib.h
-./tunnel/tunnel.lo: ../../include/net-snmp/library/parse.h
-./tunnel/tunnel.lo: ../../include/net-snmp/varbind_api.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/config_api.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/read_config.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -11101,6 +13773,7 @@
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/lcd_time.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./tunnel/tunnel.lo: ../../include/net-snmp/library/snmptsm.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/library/snmpusm.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./tunnel/tunnel.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11137,8 +13810,11 @@
 ./tunnel/tunnel.lo: ../../include/net-snmp/agent/table_iterator.h
 ./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 util_funcs.h struct.h
-./tunnel/tunnel.lo: tunnel.h if-mib/ifTable/ifTable.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
 ./tunnel/tunnel.lo: ../../include/net-snmp/data_access/interface.h
 ./tunnel/tunnel.lo: if-mib/ifTable/ifTable_constants.h
 ./tunnel/tunnel.lo: if-mib/ifTable/ifTable_interface.h
@@ -11146,62 +13822,66 @@
 ./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
+./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/disk.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/version.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/disk.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/disk.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -11210,6 +13890,7 @@
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/disk.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11247,66 +13928,182 @@
 ./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 util_funcs.h
-./ucd-snmp/disk.lo: ./ucd-snmp/errormib.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/net-snmp-features.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp_impl.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmp-tc.h
+./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/snmptsm.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/library/snmpusm.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./ucd-snmp/disk_hw.lo: ../../include/net-snmp/agent/mib_module_config.h
+./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
+./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/diskio.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/version.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/diskio.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/diskio.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -11315,6 +14112,7 @@
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11351,65 +14149,71 @@
 ./ucd-snmp/diskio.lo: ../../include/net-snmp/agent/table_iterator.h
 ./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 util_funcs.h
-./ucd-snmp/diskio.lo: struct.h ./ucd-snmp/diskio.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-features.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/types.h
+./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
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/oid_stash.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/version.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/dlmod.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -11418,6 +14222,7 @@
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/dlmod.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11454,65 +14259,70 @@
 ./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: ./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
+./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/errormib.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/version.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/errormib.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/errormib.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -11521,6 +14331,7 @@
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/errormib.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11558,65 +14369,71 @@
 ./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 util_funcs.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-features.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/types.h
+./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
+./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/extensible.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/extensible.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/extensible.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/extensible.lo: ../../include/net-snmp/library/oid_stash.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/extensible.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/version.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/extensible.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/extensible.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -11625,6 +14442,7 @@
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/extensible.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11662,67 +14480,76 @@
 ./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 util_funcs.h
+./ucd-snmp/extensible.lo: ../../agent/mibgroup/util_funcs.h
+./ucd-snmp/extensible.lo: util_funcs/header_generic.h
+./ucd-snmp/extensible.lo: util_funcs/header_simple_table.h
+./ucd-snmp/extensible.lo: util_funcs/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
+./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/file.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/file.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/file.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/file.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/file.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/file.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/file.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/file.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/version.h
-./ucd-snmp/file.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/file.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/file.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/file.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/file.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/file.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -11731,6 +14558,7 @@
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/file.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/file.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11767,65 +14595,71 @@
 ./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 util_funcs.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
+./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/hpux.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/version.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/hpux.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/hpux.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -11834,6 +14668,7 @@
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/hpux.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11870,65 +14705,70 @@
 ./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-features.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/types.h
+./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
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/oid_stash.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/version.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/lmSensors.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -11937,6 +14777,7 @@
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -11973,66 +14814,182 @@
 ./ucd-snmp/lmSensors.lo: ../../include/net-snmp/agent/table_iterator.h
 ./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 util_funcs.h
-./ucd-snmp/lmSensors.lo: struct.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/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
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/net-snmp-features.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_impl.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/getopt.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/utilities.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/system.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/tools.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/int64.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/mt_support.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_alarm.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/container.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_assert.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/version.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/config_api.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/read_config.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpv3.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/transform_oids.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/keytools.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/scapi.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/lcd_time.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmp_secmod.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmptsm.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/snmpusm.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/mib_module_config.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/agent_module_config.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/snmp_agent.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/snmp_vars.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/agent_handler.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/var_struct.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/agent_registry.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/library/fd_event_manager.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/ds_agent.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/agent_read_config.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/agent_trap.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/all_helpers.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/instance.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/baby_steps.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/scalar.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/scalar_group.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/watcher.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/multiplexer.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/null.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/debug_handler.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/cache_handler.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/old_api.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/read_only.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/row_merge.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/serialize.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/mode_end_call.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/table.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/table_data.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/table_dataset.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/table_tdata.h
+./ucd-snmp/lmsensorsMib.lo: ../../include/net-snmp/agent/table_iterator.h
+./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
+./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/loadave.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/version.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/loadave.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/loadave.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -12041,6 +14998,7 @@
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/loadave.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -12078,273 +15036,73 @@
 ./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 util_funcs.h
-./ucd-snmp/loadave.lo: ../../agent/kernel.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/snmp_api.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/asn1.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/utilities.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/snmp_client.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/callback.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/oid_stash.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/session_api.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/pdu_api.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/logmatch.lo: ../../include/net-snmp/varbind_api.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: util_funcs.h ./ucd-snmp/logmatch.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/snmp_api.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/asn1.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_impl.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp-tc.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_client.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/system.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/tools.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/int64.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/mt_support.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/callback.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/oid_stash.h
-./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
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/container.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_assert.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/version.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/memory.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/varbind_api.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/config_api.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/read_config.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/default_store.h
-./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
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/keytools.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/scapi.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/lcd_time.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_secmod.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpusm.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/mib_module_config.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/agent_module_config.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/snmp_agent.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/snmp_vars.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/agent_handler.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/var_struct.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/agent_registry.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/library/fd_event_manager.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/ds_agent.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/agent_read_config.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/agent_trap.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/all_helpers.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/instance.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/baby_steps.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/scalar.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/scalar_group.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/watcher.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/multiplexer.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/null.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/debug_handler.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/cache_handler.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/old_api.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/read_only.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/row_merge.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/serialize.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/mode_end_call.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/table.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/table_data.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/table_dataset.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/table_tdata.h
-./ucd-snmp/memory.lo: ../../include/net-snmp/agent/table_iterator.h
-./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/hardware/memory.h
-./ucd-snmp/memory.lo: ./ucd-snmp/memory.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
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/version.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -12353,6 +15111,7 @@
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/memory_aix4.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -12390,66 +15149,181 @@
 ./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.h struct.h ./ucd-snmp/memory.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/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
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/net-snmp-features.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_impl.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/getopt.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/utilities.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/system.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/tools.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/int64.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/mt_support.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_alarm.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/container.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_assert.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/version.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/config_api.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/read_config.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpv3.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/transform_oids.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/keytools.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/scapi.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/lcd_time.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmp_secmod.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmptsm.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/snmpusm.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/mib_module_config.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/agent_module_config.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/snmp_agent.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/snmp_vars.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/agent_handler.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/var_struct.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/agent_registry.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/library/fd_event_manager.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/ds_agent.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/agent_read_config.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/agent_trap.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/all_helpers.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/instance.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/baby_steps.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/scalar.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/scalar_group.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/watcher.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/multiplexer.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/null.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/debug_handler.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/cache_handler.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/old_api.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/read_only.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/row_merge.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/serialize.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/mode_end_call.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/table.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/table_data.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/table_dataset.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/table_tdata.h
+./ucd-snmp/memory.lo: ../../include/net-snmp/agent/table_iterator.h
+./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
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/version.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -12458,6 +15332,7 @@
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/memory_darwin7.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -12495,66 +15370,71 @@
 ./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.h struct.h ./ucd-snmp/memory.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
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/version.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -12563,6 +15443,7 @@
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/memory_dynix.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -12600,66 +15481,71 @@
 ./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.h struct.h ./ucd-snmp/memory.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
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/version.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -12668,6 +15554,7 @@
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/memory_freebsd2.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -12705,66 +15592,74 @@
 ./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 struct.h ./ucd-snmp/memory.h
+./ucd-snmp/memory_freebsd2.lo: util_funcs.h util_funcs/header_generic.h
+./ucd-snmp/memory_freebsd2.lo: util_funcs/header_simple_table.h struct.h
+./ucd-snmp/memory_freebsd2.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
+./ucd-snmp/memory_freebsd2.lo: ./ucd-snmp/memory.h
 ./ucd-snmp/memory_freebsd2.lo: ./ucd-snmp/memory_freebsd2.h mibdefs.h
 ./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
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/version.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -12773,6 +15668,7 @@
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/memory_hpux.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -12810,66 +15706,71 @@
 ./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
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/version.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -12878,6 +15779,7 @@
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/memory_netbsd1.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -12915,66 +15817,71 @@
 ./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.h struct.h ./ucd-snmp/memory.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
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/version.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -12983,6 +15890,7 @@
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/memory_solaris2.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13020,66 +15928,72 @@
 ./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.h struct.h ./ucd-snmp/memory.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-features.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/types.h
+./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
+./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/pass.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/pass.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/pass.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/pass.lo: ../../include/net-snmp/library/oid_stash.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/pass.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/version.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/pass.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/pass.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -13088,6 +16002,7 @@
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/pass.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13124,66 +16039,74 @@
 ./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/header_generic.h
+./ucd-snmp/pass.lo: util_funcs/header_simple_table.h
+./ucd-snmp/pass.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/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
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/version.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/pass_common.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -13192,6 +16115,7 @@
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/pass_common.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13229,65 +16153,73 @@
 ./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: ../../agent/mibgroup/util_funcs.h struct.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/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-features.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/types.h
+./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
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/oid_stash.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/version.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/pass_persist.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -13296,6 +16228,7 @@
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/pass_persist.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13332,67 +16265,74 @@
 ./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
+./ucd-snmp/pass_persist.lo: util_funcs.h util_funcs/header_generic.h
+./ucd-snmp/pass_persist.lo: util_funcs/header_simple_table.h
+./ucd-snmp/pass_persist.lo: util_funcs/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-features.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/types.h
+./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
+./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/proc.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/proc.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/proc.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/proc.lo: ../../include/net-snmp/library/oid_stash.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/proc.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/version.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/proc.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/proc.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -13401,6 +16341,7 @@
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/proc.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13437,66 +16378,75 @@
 ./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 ../../agent/kernel.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
+./ucd-snmp/proc.lo: util_funcs/header_generic.h
+./ucd-snmp/proc.lo: util_funcs/header_simple_table.h
+./ucd-snmp/proc.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h ../../agent/kernel.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/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-features.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/types.h
+./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
+./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/proxy.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/proxy.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/proxy.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/proxy.lo: ../../include/net-snmp/library/oid_stash.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/proxy.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/version.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/proxy.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/proxy.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -13505,6 +16455,7 @@
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/proxy.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13541,64 +16492,70 @@
 ./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-features.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/types.h
+./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
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/oid_stash.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/version.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/versioninfo.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -13607,6 +16564,7 @@
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/versioninfo.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13643,170 +16601,73 @@
 ./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/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/snmp_api.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/asn1.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_impl.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp-tc.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_client.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/system.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/tools.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/int64.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/mt_support.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/callback.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/oid_stash.h
-./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
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/container.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_assert.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/version.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/varbind_api.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/config_api.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/read_config.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/default_store.h
-./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
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/keytools.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/scapi.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/lcd_time.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_secmod.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpusm.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/mib_module_config.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/agent_module_config.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/snmp_agent.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/snmp_vars.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/agent_handler.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/var_struct.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/agent_registry.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/fd_event_manager.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/ds_agent.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/agent_read_config.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/agent_trap.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/all_helpers.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/instance.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/baby_steps.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/scalar.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/scalar_group.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/watcher.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/multiplexer.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/null.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/debug_handler.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/cache_handler.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/old_api.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/read_only.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/row_merge.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/serialize.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/bulk_to_next.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/mode_end_call.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/table.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/table_data.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/table_dataset.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/table_tdata.h
-./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/table_iterator.h
-./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/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/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/header_generic.h util_funcs/restart.h
+./ucd-snmp/versioninfo.lo: util_funcs.h util_funcs/header_simple_table.h
+./ucd-snmp/versioninfo.lo: util_funcs/MIB_STATS_CACHE_TIMEOUT.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/net-snmp-config.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/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
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/version.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -13815,6 +16676,7 @@
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_aix4.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13851,66 +16713,71 @@
 ./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.h struct.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
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/version.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -13919,6 +16786,7 @@
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_bsdi4.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -13956,66 +16824,182 @@
 ./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.h struct.h ./ucd-snmp/vmstat.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/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
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/net-snmp-features.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_impl.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/getopt.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/utilities.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/system.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/tools.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/int64.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/mt_support.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_alarm.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/container.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_assert.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/version.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/config_api.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/read_config.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpv3.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/transform_oids.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/keytools.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/scapi.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/lcd_time.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmp_secmod.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmptsm.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/snmpusm.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/mib_module_config.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/agent_module_config.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/snmp_agent.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/snmp_vars.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/agent_handler.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/var_struct.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/agent_registry.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/library/fd_event_manager.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/ds_agent.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/agent_read_config.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/agent_trap.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/all_helpers.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/instance.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/baby_steps.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/scalar.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/scalar_group.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/watcher.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/multiplexer.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/null.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/debug_handler.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/cache_handler.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/old_api.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/read_only.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/row_merge.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/serialize.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/mode_end_call.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/table.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/table_data.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/table_dataset.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/table_tdata.h
+./ucd-snmp/vmstat.lo: ../../include/net-snmp/agent/table_iterator.h
+./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
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/version.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -14024,6 +17008,7 @@
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_darwin7.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14061,66 +17046,71 @@
 ./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.h struct.h ./ucd-snmp/vmstat.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
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/version.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -14129,6 +17119,7 @@
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_dynix.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14165,66 +17156,71 @@
 ./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.h struct.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
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/version.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -14233,6 +17229,7 @@
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_freebsd2.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14270,66 +17267,72 @@
 ./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.h struct.h ./ucd-snmp/vmstat.h
-./ucd-snmp/vmstat_freebsd2.lo: mibdefs.h ./ucd-snmp/vmstat_freebsd2.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
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/version.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -14338,6 +17341,7 @@
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_hpux.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14374,66 +17378,71 @@
 ./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.h struct.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-features.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/net-snmp-includes.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/definitions.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/types.h
+./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
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/oid_stash.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/version.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -14442,6 +17451,7 @@
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_linux.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14479,67 +17489,72 @@
 ./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.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
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/version.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -14548,6 +17563,7 @@
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_netbsd1.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14585,66 +17601,71 @@
 ./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.h struct.h ./ucd-snmp/vmstat.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
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/mib.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/mib_api.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/parse.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/oid_stash.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/net-snmp-features.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_impl.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp-tc.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/getopt.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/utilities.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_client.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/system.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/tools.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/int64.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/mt_support.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_alarm.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/callback.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/data_list.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/container.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_assert.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/version.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/session_api.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_transport.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/pdu_api.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/mib_api.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/mib.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/parse.h
-./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/varbind_api.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/config_api.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/read_config.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -14653,6 +17674,7 @@
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/lcd_time.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmptsm.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/library/snmpusm.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./ucd-snmp/vmstat_solaris2.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14689,66 +17711,437 @@
 ./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.h struct.h ./ucd-snmp/vmstat.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/net-snmp-features.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmp_impl.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmp.h
+./util_funcs/Exit.lo: ../../include/net-snmp/library/snmp-tc.h
+./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: ./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
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/varbind_api.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmp_client.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/pdu_api.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/asn1.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/session_api.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/callback.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmp_transport.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/mib.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/mib_api.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/parse.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/oid_stash.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/net-snmp-features.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmp_impl.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmp.h
+./util_funcs/get_pid_from_inode.lo: ../../include/net-snmp/library/snmp-tc.h
+./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/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
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/mib.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/mib_api.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/parse.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/oid_stash.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/net-snmp-features.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_impl.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp-tc.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/getopt.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/utilities.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/system.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/tools.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/int64.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/mt_support.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_alarm.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/container.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_assert.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/version.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/config_api.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/read_config.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/default_store.h
+./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/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
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/keytools.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/scapi.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/lcd_time.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmp_secmod.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmptsm.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/snmpusm.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/mib_module_config.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/agent_module_config.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/snmp_agent.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/snmp_vars.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/agent_handler.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/var_struct.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/agent_registry.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/library/fd_event_manager.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/ds_agent.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/agent_read_config.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/agent_trap.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/all_helpers.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/instance.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/baby_steps.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/scalar.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/scalar_group.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/watcher.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/multiplexer.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/null.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/debug_handler.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/cache_handler.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/old_api.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/read_only.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/row_merge.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/serialize.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/mode_end_call.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/table.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/table_data.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/table_dataset.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/table_tdata.h
+./util_funcs/header_generic.lo: ../../include/net-snmp/agent/table_iterator.h
+./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/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
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/mib.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/mib_api.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/parse.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/oid_stash.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/net-snmp-features.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_impl.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp-tc.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/getopt.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/utilities.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/system.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/tools.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/int64.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/mt_support.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_alarm.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/data_list.h
+./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/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
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/container.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_assert.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/version.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/config_api.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/read_config.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/default_store.h
+./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/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
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/keytools.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/scapi.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/lcd_time.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmp_secmod.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmptsm.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/snmpusm.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/mib_module_config.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/agent_module_config.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/snmp_agent.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/snmp_vars.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/agent_handler.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/var_struct.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/agent_registry.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/library/fd_event_manager.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/ds_agent.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/agent_read_config.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/agent_trap.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/all_helpers.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/instance.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/baby_steps.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/scalar.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/scalar_group.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/watcher.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/multiplexer.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/null.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/debug_handler.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/cache_handler.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/old_api.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/read_only.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/row_merge.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/serialize.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/bulk_to_next.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/mode_end_call.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/table.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/table_data.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/table_dataset.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/table_tdata.h
+./util_funcs/header_simple_table.lo: ../../include/net-snmp/agent/table_iterator.h
+./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/net-snmp-features.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmp_impl.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmp.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmp-tc.h
+./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/snmptsm.h
+./util_funcs/restart.lo: ../../include/net-snmp/library/snmpusm.h
 ./utilities/execute.lo: ../../include/net-snmp/net-snmp-config.h
-./utilities/execute.lo: ../../include/net-snmp/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
+./utilities/execute.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./utilities/execute.lo: ../../include/net-snmp/library/mib.h
+./utilities/execute.lo: ../../include/net-snmp/mib_api.h
+./utilities/execute.lo: ../../include/net-snmp/library/parse.h
+./utilities/execute.lo: ../../include/net-snmp/library/oid_stash.h
+./utilities/execute.lo: ../../include/net-snmp/net-snmp-features.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmp_impl.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmp.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmp-tc.h
+./utilities/execute.lo: ../../include/net-snmp/library/getopt.h
 ./utilities/execute.lo: ../../include/net-snmp/utilities.h
-./utilities/execute.lo: ../../include/net-snmp/library/snmp_client.h
 ./utilities/execute.lo: ../../include/net-snmp/library/system.h
 ./utilities/execute.lo: ../../include/net-snmp/library/tools.h
 ./utilities/execute.lo: ../../include/net-snmp/library/int64.h
 ./utilities/execute.lo: ../../include/net-snmp/library/mt_support.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmp_alarm.h
-./utilities/execute.lo: ../../include/net-snmp/library/callback.h
 ./utilities/execute.lo: ../../include/net-snmp/library/data_list.h
-./utilities/execute.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./utilities/execute.lo: ../../include/net-snmp/library/container.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmp_assert.h
 ./utilities/execute.lo: ../../include/net-snmp/version.h
-./utilities/execute.lo: ../../include/net-snmp/session_api.h
-./utilities/execute.lo: ../../include/net-snmp/library/snmp_transport.h
-./utilities/execute.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./utilities/execute.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./utilities/execute.lo: ../../include/net-snmp/pdu_api.h
-./utilities/execute.lo: ../../include/net-snmp/mib_api.h
-./utilities/execute.lo: ../../include/net-snmp/library/mib.h
-./utilities/execute.lo: ../../include/net-snmp/library/parse.h
-./utilities/execute.lo: ../../include/net-snmp/varbind_api.h
 ./utilities/execute.lo: ../../include/net-snmp/config_api.h
 ./utilities/execute.lo: ../../include/net-snmp/library/read_config.h
 ./utilities/execute.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -14757,6 +18150,7 @@
 ./utilities/execute.lo: ../../include/net-snmp/library/lcd_time.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./utilities/execute.lo: ../../include/net-snmp/library/snmptsm.h
 ./utilities/execute.lo: ../../include/net-snmp/library/snmpusm.h
 ./utilities/execute.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./utilities/execute.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14794,65 +18188,70 @@
 ./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 struct.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-features.h
 ./utilities/iquery.lo: ../../include/net-snmp/net-snmp-includes.h
 ./utilities/iquery.lo: ../../include/net-snmp/definitions.h
 ./utilities/iquery.lo: ../../include/net-snmp/types.h
+./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
+./utilities/iquery.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./utilities/iquery.lo: ../../include/net-snmp/library/mib.h
+./utilities/iquery.lo: ../../include/net-snmp/mib_api.h
+./utilities/iquery.lo: ../../include/net-snmp/library/parse.h
+./utilities/iquery.lo: ../../include/net-snmp/library/oid_stash.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmp_impl.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmp.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmp-tc.h
+./utilities/iquery.lo: ../../include/net-snmp/library/getopt.h
 ./utilities/iquery.lo: ../../include/net-snmp/utilities.h
-./utilities/iquery.lo: ../../include/net-snmp/library/snmp_client.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/system.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/tools.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/int64.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/mt_support.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmp_alarm.h
-./utilities/iquery.lo: ../../include/net-snmp/library/callback.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/data_list.h
-./utilities/iquery.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./utilities/iquery.lo: ../../include/net-snmp/library/container.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmp_assert.h
 ./utilities/iquery.lo: ../../include/net-snmp/version.h
-./utilities/iquery.lo: ../../include/net-snmp/session_api.h
-./utilities/iquery.lo: ../../include/net-snmp/library/snmp_transport.h
-./utilities/iquery.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./utilities/iquery.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./utilities/iquery.lo: ../../include/net-snmp/pdu_api.h
-./utilities/iquery.lo: ../../include/net-snmp/mib_api.h
-./utilities/iquery.lo: ../../include/net-snmp/library/mib.h
-./utilities/iquery.lo: ../../include/net-snmp/library/parse.h
-./utilities/iquery.lo: ../../include/net-snmp/varbind_api.h
 ./utilities/iquery.lo: ../../include/net-snmp/config_api.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/read_config.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -14861,6 +18260,7 @@
 ./utilities/iquery.lo: ../../include/net-snmp/library/lcd_time.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./utilities/iquery.lo: ../../include/net-snmp/library/snmptsm.h
 ./utilities/iquery.lo: ../../include/net-snmp/library/snmpusm.h
 ./utilities/iquery.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./utilities/iquery.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14897,64 +18297,70 @@
 ./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
+./utilities/override.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./utilities/override.lo: ../../include/net-snmp/library/mib.h
+./utilities/override.lo: ../../include/net-snmp/mib_api.h
+./utilities/override.lo: ../../include/net-snmp/library/parse.h
+./utilities/override.lo: ../../include/net-snmp/library/oid_stash.h
+./utilities/override.lo: ../../include/net-snmp/net-snmp-features.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmp_impl.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmp.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmp-tc.h
+./utilities/override.lo: ../../include/net-snmp/library/getopt.h
 ./utilities/override.lo: ../../include/net-snmp/utilities.h
-./utilities/override.lo: ../../include/net-snmp/library/snmp_client.h
 ./utilities/override.lo: ../../include/net-snmp/library/system.h
 ./utilities/override.lo: ../../include/net-snmp/library/tools.h
 ./utilities/override.lo: ../../include/net-snmp/library/int64.h
 ./utilities/override.lo: ../../include/net-snmp/library/mt_support.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmp_alarm.h
-./utilities/override.lo: ../../include/net-snmp/library/callback.h
 ./utilities/override.lo: ../../include/net-snmp/library/data_list.h
-./utilities/override.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./utilities/override.lo: ../../include/net-snmp/library/container.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmp_assert.h
 ./utilities/override.lo: ../../include/net-snmp/version.h
-./utilities/override.lo: ../../include/net-snmp/session_api.h
-./utilities/override.lo: ../../include/net-snmp/library/snmp_transport.h
-./utilities/override.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./utilities/override.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./utilities/override.lo: ../../include/net-snmp/pdu_api.h
-./utilities/override.lo: ../../include/net-snmp/mib_api.h
-./utilities/override.lo: ../../include/net-snmp/library/mib.h
-./utilities/override.lo: ../../include/net-snmp/library/parse.h
-./utilities/override.lo: ../../include/net-snmp/varbind_api.h
 ./utilities/override.lo: ../../include/net-snmp/config_api.h
 ./utilities/override.lo: ../../include/net-snmp/library/read_config.h
 ./utilities/override.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -14963,6 +18369,7 @@
 ./utilities/override.lo: ../../include/net-snmp/library/lcd_time.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./utilities/override.lo: ../../include/net-snmp/library/snmptsm.h
 ./utilities/override.lo: ../../include/net-snmp/library/snmpusm.h
 ./utilities/override.lo: ../../include/net-snmp/agent/net-snmp-agent-includes.h
 ./utilities/override.lo: ../../include/net-snmp/agent/mib_module_config.h
@@ -14999,5 +18406,5 @@
 ./utilities/override.lo: ../../include/net-snmp/agent/table_iterator.h
 ./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 util_funcs.h
-./utilities/override.lo: struct.h
+./utilities/override.lo: ../../include/net-snmp/agent/mfd.h
+./utilities/override.lo: ../../include/net-snmp/agent/snmp_get_statistic.h
diff --git a/agent/mibgroup/Makefile.in b/agent/mibgroup/Makefile.in
index f641ab7..2341ab4 100644
--- a/agent/mibgroup/Makefile.in
+++ b/agent/mibgroup/Makefile.in
@@ -1,4 +1,6 @@
 top_builddir=../..
+mysubdir=agent/mibgroup
+
 # currently assumes gcc:    (XXX: fix via configure tests)
 DLFLAGS=-fPIC -shared
 
@@ -16,6 +18,8 @@
 
 OTHERCLEANTARGETS=@dllcleans@
 
+FEATUREFILE=../../include/net-snmp/agent/features-mibgroups.h
+
 # Need a special .c -> .o definition here to make sure we place the
 # object files in the sub directory.
 
@@ -25,10 +29,12 @@
 @mib_module_list_o@
 @mib_module_list_lo@
 @mib_module_list_c@
+@mib_module_list_ft@
 
-OBJS  = $(mib_module_list_o)
-LOBJS = $(mib_module_list_lo)
-SRCS  = $(mib_module_list_c)
+OBJS   = $(mib_module_list_o)
+LOBJS  = $(mib_module_list_lo)
+SRCS   = $(mib_module_list_c)
+FTOBJS = $(mib_module_list_ft)
 
 all: standardall $(LOBJS)
 
diff --git a/agent/mibgroup/Rmon.h b/agent/mibgroup/Rmon.h
index 847eaa9..3a7d3a4 100644
--- a/agent/mibgroup/Rmon.h
+++ b/agent/mibgroup/Rmon.h
@@ -47,7 +47,9 @@
 config_require(Rmon/rows)
 config_require(Rmon/agutil)
 config_require(Rmon/statistics)
-config_require(Rmon/alarm)
+/* older implementation: */
+/* config_require(Rmon/alarm) */
+config_require(Rmon/alarmTable)
 config_require(Rmon/history)
 config_require(Rmon/event)
 config_add_mib(RMON-MIB)
diff --git a/agent/mibgroup/Rmon/agutil.c b/agent/mibgroup/Rmon/agutil.c
index 3b0c87a..12c6342 100644
--- a/agent/mibgroup/Rmon/agutil.c
+++ b/agent/mibgroup/Rmon/agutil.c
@@ -22,8 +22,6 @@
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
-#include "util_funcs.h"
-
 #include "agutil.h"
 #include "agutil_api.h"
 
@@ -202,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 a04d415..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
@@ -43,7 +39,6 @@
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
-#include "util_funcs.h"
 #include "alarm.h"
     /*
      * Implementation headers 
@@ -684,23 +679,30 @@
 oid             oidalarmVariablesOid[] = { 1, 3, 6, 1, 2, 1, 16, 3 };
 
 struct variable7 oidalarmVariables[] = {
-    {IDalarmIndex, ASN_INTEGER, RONLY, var_alarmEntry, 3, {1, 1, 1}},
-    {IDalarmInterval, ASN_INTEGER, RWRITE, var_alarmEntry, 3, {1, 1, 2}},
-    {IDalarmVariable, ASN_OBJECT_ID, RWRITE, var_alarmEntry, 3, {1, 1, 3}},
-    {IDalarmSampleType, ASN_INTEGER, RWRITE, var_alarmEntry, 3, {1, 1, 4}},
-    {IDalarmValue, ASN_INTEGER, RONLY, var_alarmEntry, 3, {1, 1, 5}},
-    {IDalarmStartupAlarm, ASN_INTEGER, RWRITE, var_alarmEntry, 3,
-     {1, 1, 6}},
-    {IDalarmRisingThreshold, ASN_INTEGER, RWRITE, var_alarmEntry, 3,
-     {1, 1, 7}},
-    {IDalarmFallingThreshold, ASN_INTEGER, RWRITE, var_alarmEntry, 3,
-     {1, 1, 8}},
-    {IDalarmRisingEventIndex, ASN_INTEGER, RWRITE, var_alarmEntry, 3,
-     {1, 1, 9}},
-    {IDalarmFallingEventIndex, ASN_INTEGER, RWRITE, var_alarmEntry, 3,
-     {1, 1, 10}},
-    {IDalarmOwner, ASN_OCTET_STR, RWRITE, var_alarmEntry, 3, {1, 1, 11}},
-    {IDalarmStatus, ASN_INTEGER, RWRITE, var_alarmEntry, 3, {1, 1, 12}}
+    {IDalarmIndex, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_alarmEntry, 3, {1, 1, 1}},
+    {IDalarmInterval, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_alarmEntry, 3, {1, 1, 2}},
+    {IDalarmVariable, ASN_OBJECT_ID, NETSNMP_OLDAPI_RWRITE,
+     var_alarmEntry, 3, {1, 1, 3}},
+    {IDalarmSampleType, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_alarmEntry, 3, {1, 1, 4}},
+    {IDalarmValue, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_alarmEntry, 3, {1, 1, 5}},
+    {IDalarmStartupAlarm, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_alarmEntry, 3, {1, 1, 6}},
+    {IDalarmRisingThreshold, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_alarmEntry, 3, {1, 1, 7}},
+    {IDalarmFallingThreshold, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_alarmEntry, 3, {1, 1, 8}},
+    {IDalarmRisingEventIndex, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_alarmEntry, 3, {1, 1, 9}},
+    {IDalarmFallingEventIndex, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_alarmEntry, 3, {1, 1, 10}},
+    {IDalarmOwner, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_alarmEntry, 3, {1, 1, 11}},
+    {IDalarmStatus, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_alarmEntry, 3, {1, 1, 12}}
 };
 
 void
diff --git a/agent/mibgroup/Rmon/alarm.h b/agent/mibgroup/Rmon/alarm.h
index ae48c2d..05f2152 100644
--- a/agent/mibgroup/Rmon/alarm.h
+++ b/agent/mibgroup/Rmon/alarm.h
@@ -21,8 +21,6 @@
 #ifndef _MIBGROUP_ALARM_H
 #define _MIBGROUP_ALARM_H
 
-config_require(util_funcs)
-
     /*
      * function prototypes 
      */
diff --git a/agent/mibgroup/Rmon/alarmTable.c b/agent/mibgroup/Rmon/alarmTable.c
new file mode 100644
index 0000000..6181628
--- /dev/null
+++ b/agent/mibgroup/Rmon/alarmTable.c
@@ -0,0 +1,842 @@
+/*--------------------------------------------------------------------------+
+| Edition History:                                                          |
+| #   Date     Comments                                                 By  |
+| --- -------- -------------------------------------------------------- --- |
+|   1 07/05/18 Created.                                                 emi |
++--------------------------------------------------------------------------*/
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : mib2c.table_data.conf,v 1.11.2.1 2006/01/11 15:17:47 dts12 Exp $
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include "utilities/iquery.h"
+#include "alarmTable.h"
+
+netsnmp_feature_require(iquery)
+netsnmp_feature_require(query_set_default_session)
+netsnmp_feature_require(table_tdata)
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(table_tdata_extract_table)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(table_tdata_insert_row)
+netsnmp_feature_require(iquery_pdu_session)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+/** Initializes the alarmTable module */
+void
+init_alarmTable(void)
+{
+    /*
+     * here we initialize all the tables we're planning on supporting 
+     */
+    initialize_table_alarmTable();
+}
+
+/** Initialize the alarmTable table by defining its contents and how it's structured */
+void
+initialize_table_alarmTable(void)
+{
+    static oid      alarmTable_oid[] = { 1, 3, 6, 1, 2, 1, 16, 3, 1 };
+    size_t          alarmTable_oid_len = OID_LENGTH(alarmTable_oid);
+    netsnmp_handler_registration *reg;
+    netsnmp_tdata  *table_data;
+    netsnmp_table_registration_info *table_info;
+
+    DEBUGMSGTL(( "rmon:alarmTable", "initialize_table_alarmTable called.\n"));
+    reg =
+        netsnmp_create_handler_registration("alarmTable",
+                                            alarmTable_handler,
+                                            alarmTable_oid,
+                                            alarmTable_oid_len,
+                                            HANDLER_CAN_RWRITE);
+
+    table_data = netsnmp_tdata_create_table("alarmTable", 0);
+    table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
+    netsnmp_table_helper_add_indexes(table_info, ASN_INTEGER,   /* index: alarmIndex */
+                                     0);
+
+    table_info->min_column = COLUMN_ALARMINDEX;
+    table_info->max_column = COLUMN_ALARMSTATUS;
+
+    netsnmp_tdata_register(reg, table_data, table_info);
+
+    /*
+     * Initialise the contents of the table here 
+     */
+}
+
+extern int
+event_api_send_alarm(u_char is_rising,
+                     u_long alarm_index,
+                     u_long event_index,
+                     oid * alarmed_var,
+                     size_t alarmed_var_length,
+                     u_long sample_type,
+                     u_long value,
+                     u_long the_threshold, const char *alarm_descr);
+
+#define ALARM_STR1_LEN	32
+typedef enum {
+    RMON1_ENTRY_VALID = 1,
+    RMON1_ENTRY_CREATE_REQUEST,
+    RMON1_ENTRY_UNDER_CREATION,
+    RMON1_ENTRY_INVALID
+} RMON1_ENTRY_STATUS_T;
+
+typedef enum {
+    SAMPLE_TYPE_ABSOLUTE =
+    1,
+    SAMPLE_TYPE_DELTE
+} SAMPLE_TYPE_T;
+
+typedef enum {
+    ALARM_NOTHING =
+    0,
+    ALARM_RISING,
+    ALARM_FALLING,
+    ALARM_BOTH
+} ALARM_TYPE_T;
+    /*
+     * Typical data structure for a row entry 
+     */
+struct alarmTable_entry {
+    /*
+     * Index values 
+     */
+    long            alarmIndex;
+
+    /*
+     * Column values 
+     */
+    long            alarmInterval;
+    long            old_alarmInterval;
+    oid             alarmVariable[ALARM_STR1_LEN];
+    size_t          alarmVariable_len;
+    oid             old_alarmVariable[ALARM_STR1_LEN];
+    size_t          old_alarmVariable_len;
+    long            alarmSampleType;
+    long            old_alarmSampleType;
+    long            alarmValue;
+    long            alarmStartupAlarm;
+    long            old_alarmStartupAlarm;
+    long            alarmRisingThreshold;
+    long            old_alarmRisingThreshold;
+    long            alarmFallingThreshold;
+    long            old_alarmFallingThreshold;
+    long            alarmRisingEventIndex;
+    long            old_alarmRisingEventIndex;
+    long            alarmFallingEventIndex;
+    long            old_alarmFallingEventIndex;
+    char            alarmOwner[ALARM_STR1_LEN];
+    size_t          alarmOwner_len;
+    char            old_alarmOwner[ALARM_STR1_LEN];
+    size_t          old_alarmOwner_len;
+    long            alarmStatus;
+    long            old_alarmStatus;
+
+    int             valid;
+    unsigned int    alarm_reg;
+    netsnmp_session *session;
+    u_long          last_abs_value;
+    ALARM_TYPE_T    prev_alarm;        /* NOTHING | RISING | FALLING */
+};
+
+
+void
+alarmTable_run( unsigned int reg, void *clientarg)
+{
+    struct alarmTable_entry *entry = (struct alarmTable_entry *)clientarg;
+    netsnmp_variable_list *var;
+    u_long new_value;
+    int rc;
+
+    if (!entry) {
+        snmp_alarm_unregister( reg );
+        return;
+    }
+    /*
+     * Retrieve the requested MIB value(s)...
+     */
+    DEBUGMSGTL(( "rmon:alarmTable", "alarmTable_run called\n"));
+    var = (netsnmp_variable_list *)SNMP_MALLOC_TYPEDEF( netsnmp_variable_list );
+    if (!var) {
+        snmp_log(LOG_ERR,"failed to create alarmTable query varbind");
+        return;
+    }
+    snmp_set_var_objid( var, entry->alarmVariable,
+                             entry->alarmVariable_len );
+    
+    rc = netsnmp_query_get(  var, entry->session );
+    if ( rc != SNMP_ERR_NOERROR ) {
+        DEBUGMSGTL(( "rmon:alarmTable", "alarmVariable query failed (%d)\n", rc));
+        snmp_free_varbind(var);
+        return;
+    }
+
+	switch (var->type) {
+    case ASN_INTEGER:
+    case ASN_COUNTER:
+    case ASN_TIMETICKS:
+    case ASN_GAUGE:
+    case ASN_COUNTER64:
+        new_value = *var->val.integer;
+        break;
+    default:
+        DEBUGMSGTL(("rmon:alarmTable", "invalid type (%d)\n", var->type));
+        snmp_free_varbind(var);
+        return ;
+    }
+
+    DEBUGMSGTL(("rmon:alarmTable", "alarmIndex.%ld last value (%ld)\n", entry->alarmIndex, entry->last_abs_value));
+    DEBUGMSGTL(("rmon:alarmTable", "alarmIndex.%ld new_value (%ld)\n", entry->alarmIndex, new_value));
+
+    entry->alarmValue = (SAMPLE_TYPE_ABSOLUTE == entry->alarmSampleType) ?
+        new_value : new_value - entry->last_abs_value;
+    entry->last_abs_value = new_value;
+
+    if (ALARM_RISING != entry->prev_alarm &&
+        entry->alarmValue >= entry->alarmRisingThreshold) {
+        if (SNMP_ERR_NOERROR == event_api_send_alarm(1, entry->alarmIndex,
+                                                 entry->alarmRisingEventIndex,
+                                                 entry->alarmVariable,
+                                                 entry->alarmVariable_len,
+                                                 entry->alarmSampleType, 
+                                                 entry->alarmValue,
+                                                 entry->alarmRisingThreshold,
+                                                 "Rising"))
+            entry->prev_alarm = ALARM_RISING;
+        else 
+            snmp_log(LOG_ERR,"failed to send rising alarm\n");
+    }
+    else if (ALARM_FALLING != entry->prev_alarm &&
+             entry->alarmValue <= entry->alarmFallingThreshold) {
+        if (SNMP_ERR_NOERROR == event_api_send_alarm(0, entry->alarmIndex,
+                                                      entry->alarmFallingEventIndex,
+                                                      entry->alarmVariable,
+                                                      entry->alarmVariable_len, 
+                                                      entry->alarmSampleType,
+                                                      entry->alarmValue,
+                                                      entry->alarmFallingThreshold,
+                                                      "Falling"))
+            entry->prev_alarm = ALARM_FALLING;
+        else 
+            snmp_log(LOG_ERR,"failed to send falling alarm\n");
+    }
+    else
+        DEBUGMSGTL(("rmon:alarmTable", "no alarm sent\n"));
+
+    snmp_free_varbind(var);
+}
+
+void
+alarmTable_enable( struct alarmTable_entry *entry )
+{
+    if (!entry)
+        return;
+
+    DEBUGMSGTL(( "rmon:alarmTable", "alarmTable_enable called.\n"));
+    if (entry->alarm_reg) {
+        snmp_alarm_unregister( entry->alarm_reg );
+        entry->alarm_reg = 0;
+    }
+
+    if (entry->alarmInterval) {
+        /*
+         * register once to run ASAP, and another to run
+         * at the trigger frequency
+         */
+        snmp_alarm_register(0, 0, alarmTable_run, entry );
+        entry->alarm_reg = snmp_alarm_register(
+                           entry->alarmInterval, SA_REPEAT,
+                           alarmTable_run, entry );
+    }
+}
+
+void
+alarmTable_disable( struct alarmTable_entry *entry )
+{
+    if (!entry)
+        return;
+
+    DEBUGMSGTL(( "rmon:alarmTable", "alarmTable_disable called.\n"));
+    if (entry->alarm_reg) {
+        snmp_alarm_unregister( entry->alarm_reg );
+        entry->alarm_reg = 0;
+        /* XXX - perhaps release any previous results */
+    }
+}
+
+/*
+ * create a new row in the table 
+ */
+netsnmp_tdata_row *
+alarmTable_createEntry(netsnmp_tdata * table_data, long alarmIndex)
+{
+    struct alarmTable_entry *entry;
+    netsnmp_tdata_row *row;
+
+    DEBUGMSGTL(( "rmon:alarmTable", "alarmTable_createEntry called.\n"));
+    entry = SNMP_MALLOC_TYPEDEF(struct alarmTable_entry);
+    if (!entry)
+        return NULL;
+
+    row = netsnmp_tdata_create_row();
+    if (!row) {
+        SNMP_FREE(entry);
+        return NULL;
+    }
+    row->data = entry;
+    entry->alarmIndex = alarmIndex;
+    entry->alarmInterval = 1;
+    entry->alarmSampleType = SAMPLE_TYPE_ABSOLUTE;
+    entry->alarmStartupAlarm = ALARM_BOTH;
+    entry->alarmRisingThreshold = 10;
+    entry->alarmFallingThreshold = 5;
+    entry->alarmRisingEventIndex = alarmIndex;
+    entry->alarmFallingEventIndex = alarmIndex;
+    entry->prev_alarm = ALARM_NOTHING;
+    netsnmp_tdata_row_add_index(row, ASN_INTEGER,
+                                &(entry->alarmIndex),
+                                sizeof(entry->alarmIndex));
+    netsnmp_tdata_add_row(table_data, row);
+    return row;
+}
+
+/*
+ * remove a row from the table 
+ */
+void
+alarmTable_removeEntry(netsnmp_tdata * table_data, netsnmp_tdata_row * row)
+{
+    struct alarmTable_entry *entry;
+
+    DEBUGMSGTL(( "rmon:alarmTable", "alarmTable_removeEntry called.\n"));
+    if (!row)
+        return;                 /* Nothing to remove */
+    entry = (struct alarmTable_entry *)
+        netsnmp_tdata_remove_and_delete_row(table_data, row);
+    if (entry) {
+        alarmTable_disable(entry);
+        SNMP_FREE(entry);       /* XXX - release any other internal resources */
+    }
+}
+
+
+/** handles requests for the alarmTable table */
+int
+alarmTable_handler(netsnmp_mib_handler *handler,
+                   netsnmp_handler_registration *reginfo,
+                   netsnmp_agent_request_info *reqinfo,
+                   netsnmp_request_info *requests)
+{
+    netsnmp_request_info *request;
+    netsnmp_table_request_info *table_info;
+    netsnmp_tdata  *table_data;
+    netsnmp_tdata_row *table_row;
+    struct alarmTable_entry *table_entry;
+    int             ret;
+    netsnmp_session *sess = NULL;
+    char           *secName;
+
+    DEBUGMSGTL(( "rmon:alarmTable", "alarmTable_handler called.\n"));
+    switch (reqinfo->mode) {
+        /*
+         * Read-support (also covers GetNext requests)
+         */
+    case MODE_GET:
+        for (request = requests; request; request = request->next) {
+            table_entry = (struct alarmTable_entry *)
+                netsnmp_tdata_extract_entry(request);
+            table_info = netsnmp_extract_table_info(request);
+
+            switch (table_info->colnum) {
+            case COLUMN_ALARMINDEX:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->alarmIndex);
+                break;
+            case COLUMN_ALARMINTERVAL:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->alarmInterval);
+                break;
+            case COLUMN_ALARMVARIABLE:
+                snmp_set_var_typed_value(request->requestvb, ASN_OBJECT_ID,
+                                         (u_char *) table_entry->
+                                         alarmVariable,
+                                         table_entry->alarmVariable_len *
+                                         sizeof(oid));
+                break;
+            case COLUMN_ALARMSAMPLETYPE:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->alarmSampleType);
+                break;
+            case COLUMN_ALARMVALUE:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->alarmValue);
+                break;
+            case COLUMN_ALARMSTARTUPALARM:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->alarmStartupAlarm);
+                break;
+            case COLUMN_ALARMRISINGTHRESHOLD:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->
+                                           alarmRisingThreshold);
+                break;
+            case COLUMN_ALARMFALLINGTHRESHOLD:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->
+                                           alarmFallingThreshold);
+                break;
+            case COLUMN_ALARMRISINGEVENTINDEX:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->
+                                           alarmRisingEventIndex);
+                break;
+            case COLUMN_ALARMFALLINGEVENTINDEX:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->
+                                           alarmFallingEventIndex);
+                break;
+            case COLUMN_ALARMOWNER:
+                snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR,
+                                         (u_char *) table_entry->
+                                         alarmOwner,
+                                         table_entry->alarmOwner_len);
+                break;
+            case COLUMN_ALARMSTATUS:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->alarmStatus);
+                break;
+            }
+        }
+        break;
+
+        /*
+         * Write-support
+         */
+    case MODE_SET_RESERVE1:
+        for (request = requests; request; request = request->next) {
+            table_entry = (struct alarmTable_entry *)
+                netsnmp_tdata_extract_entry(request);
+            table_info = netsnmp_extract_table_info(request);
+
+            switch (table_info->colnum) {
+            case COLUMN_ALARMINTERVAL:
+                /*
+                 * or possibly 'netsnmp_check_vb_int_range' 
+                 */
+                ret = netsnmp_check_vb_int(request->requestvb);
+                if (ret != SNMP_ERR_NOERROR) {
+                    netsnmp_set_request_error(reqinfo, request, ret);
+                    return SNMP_ERR_NOERROR;
+                }
+                break;
+            case COLUMN_ALARMVARIABLE:
+                /*
+                 * or possibly 'netsnmp_check_vb_type_and_max_size' 
+                 */
+                break;
+            case COLUMN_ALARMSAMPLETYPE:
+                /*
+                 * or possibly 'netsnmp_check_vb_int_range' 
+                 */
+                ret = netsnmp_check_vb_int(request->requestvb);
+                if (ret != SNMP_ERR_NOERROR) {
+                    netsnmp_set_request_error(reqinfo, request, ret);
+                    return SNMP_ERR_NOERROR;
+                }
+                break;
+            case COLUMN_ALARMSTARTUPALARM:
+                /*
+                 * or possibly 'netsnmp_check_vb_int_range' 
+                 */
+                ret = netsnmp_check_vb_int(request->requestvb);
+                if (ret != SNMP_ERR_NOERROR) {
+                    netsnmp_set_request_error(reqinfo, request, ret);
+                    return SNMP_ERR_NOERROR;
+                }
+                break;
+            case COLUMN_ALARMRISINGTHRESHOLD:
+                /*
+                 * or possibly 'netsnmp_check_vb_int_range' 
+                 */
+                ret = netsnmp_check_vb_int(request->requestvb);
+                if (ret != SNMP_ERR_NOERROR) {
+                    netsnmp_set_request_error(reqinfo, request, ret);
+                    return SNMP_ERR_NOERROR;
+                }
+                break;
+            case COLUMN_ALARMFALLINGTHRESHOLD:
+                /*
+                 * or possibly 'netsnmp_check_vb_int_range' 
+                 */
+                ret = netsnmp_check_vb_int(request->requestvb);
+                if (ret != SNMP_ERR_NOERROR) {
+                    netsnmp_set_request_error(reqinfo, request, ret);
+                    return SNMP_ERR_NOERROR;
+                }
+                break;
+            case COLUMN_ALARMRISINGEVENTINDEX:
+                /*
+                 * or possibly 'netsnmp_check_vb_int_range' 
+                 */
+                ret = netsnmp_check_vb_int(request->requestvb);
+                if (ret != SNMP_ERR_NOERROR) {
+                    netsnmp_set_request_error(reqinfo, request, ret);
+                    return SNMP_ERR_NOERROR;
+                }
+                break;
+            case COLUMN_ALARMFALLINGEVENTINDEX:
+                /*
+                 * or possibly 'netsnmp_check_vb_int_range' 
+                 */
+                ret = netsnmp_check_vb_int(request->requestvb);
+                if (ret != SNMP_ERR_NOERROR) {
+                    netsnmp_set_request_error(reqinfo, request, ret);
+                    return SNMP_ERR_NOERROR;
+                }
+                break;
+            case COLUMN_ALARMOWNER:
+                /*
+                 * or possibly 'netsnmp_check_vb_type_and_max_size' 
+                 */
+                break;
+            case COLUMN_ALARMSTATUS:
+                /*
+                 * or possibly 'netsnmp_check_vb_int_range' 
+                 */
+                ret = netsnmp_check_vb_int(request->requestvb);
+                if (ret != SNMP_ERR_NOERROR) {
+                    netsnmp_set_request_error(reqinfo, request, ret);
+                    return SNMP_ERR_NOERROR;
+                }
+                break;
+            default:
+                netsnmp_set_request_error(reqinfo, request,
+                                          SNMP_ERR_NOTWRITABLE);
+                return SNMP_ERR_NOERROR;
+            }
+        }
+        break;
+
+    case MODE_SET_RESERVE2:
+        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);
+
+            switch (table_info->colnum) {
+            case COLUMN_ALARMINTERVAL:
+            case COLUMN_ALARMVARIABLE:
+            case COLUMN_ALARMSAMPLETYPE:
+            case COLUMN_ALARMSTARTUPALARM:
+            case COLUMN_ALARMRISINGTHRESHOLD:
+            case COLUMN_ALARMFALLINGTHRESHOLD:
+            case COLUMN_ALARMRISINGEVENTINDEX:
+            case COLUMN_ALARMFALLINGEVENTINDEX:
+            case COLUMN_ALARMOWNER:
+            case COLUMN_ALARMSTATUS:
+                if (!table_row) {
+                    table_row =
+                        alarmTable_createEntry(table_data,
+                                               *table_info->indexes->val.
+                                               integer);
+                    if (table_row) {
+                        netsnmp_insert_tdata_row(request, table_row);
+                    } else {
+                        netsnmp_set_request_error(reqinfo, request,
+                                                  SNMP_ERR_RESOURCEUNAVAILABLE);
+                        return SNMP_ERR_NOERROR;
+                    }
+                }
+                break;
+            }
+        }
+        break;
+
+    case MODE_SET_FREE:
+        for (request = requests; request; request = request->next) {
+            table_entry = (struct alarmTable_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_ALARMINTERVAL:
+            case COLUMN_ALARMVARIABLE:
+            case COLUMN_ALARMSAMPLETYPE:
+            case COLUMN_ALARMSTARTUPALARM:
+            case COLUMN_ALARMRISINGTHRESHOLD:
+            case COLUMN_ALARMFALLINGTHRESHOLD:
+            case COLUMN_ALARMRISINGEVENTINDEX:
+            case COLUMN_ALARMFALLINGEVENTINDEX:
+            case COLUMN_ALARMOWNER:
+            case COLUMN_ALARMSTATUS:
+                if (table_entry && !table_entry->valid) {
+                    alarmTable_removeEntry(table_data, table_row);
+                }
+                break;
+            }
+        }
+        break;
+
+    case MODE_SET_ACTION:
+        for (request = requests; request; request = request->next) {
+            table_entry = (struct alarmTable_entry *)
+                netsnmp_tdata_extract_entry(request);
+            table_info = netsnmp_extract_table_info(request);
+
+            switch (table_info->colnum) {
+            case COLUMN_ALARMINTERVAL:
+                table_entry->old_alarmInterval =
+                    table_entry->alarmInterval;
+                table_entry->alarmInterval =
+                    *request->requestvb->val.integer;
+                break;
+            case COLUMN_ALARMVARIABLE:
+                table_entry->alarmVariable_len =
+                    request->requestvb->val_len / sizeof(oid);
+                memset(table_entry->alarmVariable, 0,
+                       sizeof(table_entry->alarmVariable));
+                memcpy(table_entry->alarmVariable,
+                       request->requestvb->val.objid,
+                       request->requestvb->val_len);
+                break;
+            case COLUMN_ALARMSAMPLETYPE:
+                table_entry->old_alarmSampleType =
+                    table_entry->alarmSampleType;
+                table_entry->alarmSampleType =
+                    *request->requestvb->val.integer;
+                break;
+            case COLUMN_ALARMSTARTUPALARM:
+                table_entry->old_alarmStartupAlarm =
+                    table_entry->alarmStartupAlarm;
+                table_entry->alarmStartupAlarm =
+                    *request->requestvb->val.integer;
+                break;
+            case COLUMN_ALARMRISINGTHRESHOLD:
+                table_entry->old_alarmRisingThreshold =
+                    table_entry->alarmRisingThreshold;
+                table_entry->alarmRisingThreshold =
+                    *request->requestvb->val.integer;
+                break;
+            case COLUMN_ALARMFALLINGTHRESHOLD:
+                table_entry->old_alarmFallingThreshold =
+                    table_entry->alarmFallingThreshold;
+                table_entry->alarmFallingThreshold =
+                    *request->requestvb->val.integer;
+                break;
+            case COLUMN_ALARMRISINGEVENTINDEX:
+                table_entry->old_alarmRisingEventIndex =
+                    table_entry->alarmRisingEventIndex;
+                table_entry->alarmRisingEventIndex =
+                    *request->requestvb->val.integer;
+                break;
+            case COLUMN_ALARMFALLINGEVENTINDEX:
+                table_entry->old_alarmFallingEventIndex =
+                    table_entry->alarmFallingEventIndex;
+                table_entry->alarmFallingEventIndex =
+                    *request->requestvb->val.integer;
+                break;
+            case COLUMN_ALARMOWNER:
+                memcpy(table_entry->old_alarmOwner,
+                       table_entry->alarmOwner,
+                       sizeof(table_entry->alarmOwner));
+                table_entry->old_alarmOwner_len =
+                    table_entry->alarmOwner_len;
+                memset(table_entry->alarmOwner, 0,
+                       sizeof(table_entry->alarmOwner));
+                memcpy(table_entry->alarmOwner,
+                       request->requestvb->val.string,
+                       request->requestvb->val_len);
+                table_entry->alarmOwner_len = request->requestvb->val_len;
+                break;
+            case COLUMN_ALARMSTATUS:
+                table_entry->old_alarmStatus = table_entry->alarmStatus;
+                table_entry->alarmStatus =
+                    *request->requestvb->val.integer;
+                break;
+            }
+        }
+        break;
+
+    case MODE_SET_UNDO:
+        for (request = requests; request; request = request->next) {
+            table_entry = (struct alarmTable_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_ALARMINTERVAL:
+                if (table_entry && !table_entry->valid) {
+                    alarmTable_removeEntry(table_data, table_row);
+                } else {
+                    table_entry->alarmInterval =
+                        table_entry->old_alarmInterval;
+                    table_entry->old_alarmInterval = 0;
+                }
+                break;
+            case COLUMN_ALARMVARIABLE:
+                if (table_entry && !table_entry->valid) {
+                    alarmTable_removeEntry(table_data, table_row);
+                } else {
+                    memcpy(table_entry->alarmVariable,
+                           table_entry->old_alarmVariable,
+                           sizeof(table_entry->alarmVariable));
+                    memset(table_entry->old_alarmVariable, 0,
+                           sizeof(table_entry->alarmVariable));
+                    table_entry->alarmVariable_len =
+                        table_entry->old_alarmVariable_len;
+                }
+                break;
+            case COLUMN_ALARMSAMPLETYPE:
+                if (table_entry && !table_entry->valid) {
+                    alarmTable_removeEntry(table_data, table_row);
+                } else {
+                    table_entry->alarmSampleType =
+                        table_entry->old_alarmSampleType;
+                    table_entry->old_alarmSampleType = 0;
+                }
+                break;
+            case COLUMN_ALARMSTARTUPALARM:
+                if (table_entry && !table_entry->valid) {
+                    alarmTable_removeEntry(table_data, table_row);
+                } else {
+                    table_entry->alarmStartupAlarm =
+                        table_entry->old_alarmStartupAlarm;
+                    table_entry->old_alarmStartupAlarm = 0;
+                }
+                break;
+            case COLUMN_ALARMRISINGTHRESHOLD:
+                if (table_entry && !table_entry->valid) {
+                    alarmTable_removeEntry(table_data, table_row);
+                } else {
+                    table_entry->alarmRisingThreshold =
+                        table_entry->old_alarmRisingThreshold;
+                    table_entry->old_alarmRisingThreshold = 0;
+                }
+                break;
+            case COLUMN_ALARMFALLINGTHRESHOLD:
+                if (table_entry && !table_entry->valid) {
+                    alarmTable_removeEntry(table_data, table_row);
+                } else {
+                    table_entry->alarmFallingThreshold =
+                        table_entry->old_alarmFallingThreshold;
+                    table_entry->old_alarmFallingThreshold = 0;
+                }
+                break;
+            case COLUMN_ALARMRISINGEVENTINDEX:
+                if (table_entry && !table_entry->valid) {
+                    alarmTable_removeEntry(table_data, table_row);
+                } else {
+                    table_entry->alarmRisingEventIndex =
+                        table_entry->old_alarmRisingEventIndex;
+                    table_entry->old_alarmRisingEventIndex = 0;
+                }
+                break;
+            case COLUMN_ALARMFALLINGEVENTINDEX:
+                if (table_entry && !table_entry->valid) {
+                    alarmTable_removeEntry(table_data, table_row);
+                } else {
+                    table_entry->alarmFallingEventIndex =
+                        table_entry->old_alarmFallingEventIndex;
+                    table_entry->old_alarmFallingEventIndex = 0;
+                }
+                break;
+            case COLUMN_ALARMOWNER:
+                if (table_entry && !table_entry->valid) {
+                    alarmTable_removeEntry(table_data, table_row);
+                } else {
+                    memcpy(table_entry->alarmOwner,
+                           table_entry->old_alarmOwner,
+                           sizeof(table_entry->alarmOwner));
+                    memset(table_entry->old_alarmOwner, 0,
+                           sizeof(table_entry->alarmOwner));
+                    table_entry->alarmOwner_len =
+                        table_entry->old_alarmOwner_len;
+                }
+                break;
+            case COLUMN_ALARMSTATUS:
+                if (table_entry && !table_entry->valid) {
+                    alarmTable_removeEntry(table_data, table_row);
+                } else {
+                    table_entry->alarmStatus =
+                        table_entry->old_alarmStatus;
+                    table_entry->old_alarmStatus = 0;
+                }
+                break;
+            }
+        }
+        break;
+
+    case MODE_SET_COMMIT:
+        for (request = requests; request; request = request->next) {
+            table_entry = (struct alarmTable_entry *)
+                netsnmp_tdata_extract_entry(request);
+            table_info = netsnmp_extract_table_info(request);
+
+            switch (table_info->colnum) {
+            case COLUMN_ALARMINTERVAL:
+            case COLUMN_ALARMVARIABLE:
+            case COLUMN_ALARMSAMPLETYPE:
+            case COLUMN_ALARMSTARTUPALARM:
+            case COLUMN_ALARMRISINGTHRESHOLD:
+            case COLUMN_ALARMFALLINGTHRESHOLD:
+            case COLUMN_ALARMRISINGEVENTINDEX:
+            case COLUMN_ALARMFALLINGEVENTINDEX:
+            case COLUMN_ALARMOWNER:
+                if (table_entry && !table_entry->valid) {
+                    table_entry->valid = 1;
+                }
+                break;
+            case COLUMN_ALARMSTATUS:
+                switch (*request->requestvb->val.integer) {
+                case RMON1_ENTRY_VALID:
+                    alarmTable_enable( table_entry );
+                    break;
+                case RMON1_ENTRY_UNDER_CREATION:
+                    alarmTable_disable( table_entry );
+#if 0
+                    table_entry->session = (netsnmp_session *)
+                        netsnmp_iquery_pdu_session(reqinfo->asp->pdu);
+#else
+                    secName = netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID,
+                                                    NETSNMP_DS_AGENT_INTERNAL_SECNAME);
+                    if (secName) {
+                        sess   = netsnmp_iquery_user_session(secName);
+                        netsnmp_query_set_default_session(sess);
+                        DEBUGMSGTL(("rmon:alarmTable", "user name %s\n", secName));
+                    } else { 
+                        snmp_log(LOG_ERR, "user name %s not found\n", secName);
+                        config_perror("Unknown user name\n");
+                    }
+
+                    if (NULL == sess) {
+                        sess = netsnmp_query_get_default_session();
+                        if (NULL == sess) {
+                            config_perror
+                                ("You must specify a default user name using the agentSecName token\n");
+                            return SNMP_ERR_NOERROR;
+                        }
+                    }
+#endif
+                    break;
+                case RMON1_ENTRY_INVALID:
+                    table_row = netsnmp_tdata_extract_row(request);
+                    table_data = netsnmp_tdata_extract_table(request);
+                    alarmTable_removeEntry(table_data, table_row);
+                }
+                break;
+            }
+        }
+        break;
+    }
+    return SNMP_ERR_NOERROR;
+}
diff --git a/agent/mibgroup/Rmon/alarmTable.h b/agent/mibgroup/Rmon/alarmTable.h
new file mode 100644
index 0000000..1a070b2
--- /dev/null
+++ b/agent/mibgroup/Rmon/alarmTable.h
@@ -0,0 +1,41 @@
+/*--------------------------------------------------------------------------+
+| Edition History:                                                          |
+| #   Date     Comments                                                 By  |
+| --- -------- -------------------------------------------------------- --- |
+|   1 07/05/18 Created.                                                 emi |
++--------------------------------------------------------------------------*/
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : mib2c.table_data.conf,v 1.11.2.1 2006/01/11 15:17:47 dts12 Exp $
+ */
+#ifndef ALARMTABLE_H
+#define ALARMTABLE_H
+
+config_require(utilities/iquery)
+config_require(Rmon/agutil)
+config_require(Rmon/rows)
+config_require(Rmon/event)
+
+/*
+ * function declarations 
+ */
+void            init_alarmTable(void);
+void            initialize_table_alarmTable(void);
+Netsnmp_Node_Handler alarmTable_handler;
+
+/*
+ * column number definitions for table alarmTable 
+ */
+#define COLUMN_ALARMINDEX		1
+#define COLUMN_ALARMINTERVAL		2
+#define COLUMN_ALARMVARIABLE		3
+#define COLUMN_ALARMSAMPLETYPE		4
+#define COLUMN_ALARMVALUE		5
+#define COLUMN_ALARMSTARTUPALARM		6
+#define COLUMN_ALARMRISINGTHRESHOLD		7
+#define COLUMN_ALARMFALLINGTHRESHOLD		8
+#define COLUMN_ALARMRISINGEVENTINDEX		9
+#define COLUMN_ALARMFALLINGEVENTINDEX		10
+#define COLUMN_ALARMOWNER		11
+#define COLUMN_ALARMSTATUS		12
+#endif                          /* ALARMTABLE_H */
diff --git a/agent/mibgroup/Rmon/event.c b/agent/mibgroup/Rmon/event.c
index cab1d8b..bb87bfe 100644
--- a/agent/mibgroup/Rmon/event.c
+++ b/agent/mibgroup/Rmon/event.c
@@ -19,16 +19,13 @@
  ******************************************************************/
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if 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
@@ -45,8 +42,6 @@
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
-#include "util_funcs.h"
-
 #include "event.h"
 
 /*
@@ -55,6 +50,8 @@
 #include "agutil_api.h"
 #include "row_api.h"
 
+netsnmp_feature_require(snprint_objid)
+
 /*
  * File scope definitions section 
  */
@@ -772,23 +769,34 @@
     /*
      * magic number        , variable type, ro/rw , callback fn  ,           L, oidsuffix 
      */
-    {EVENTINDEX, ASN_INTEGER, RONLY, var_eventTable, 2, {1, 1}},
-    {EVENTDESCRIPTION, ASN_OCTET_STR, RWRITE, var_eventTable, 2, {1, 2}},
-    {EVENTTYPE, ASN_INTEGER, RWRITE, var_eventTable, 2, {1, 3}},
-    {EVENTCOMMUNITY, ASN_OCTET_STR, RWRITE, var_eventTable, 2, {1, 4}},
-    {EVENTLASTTIMESENT, ASN_TIMETICKS, RONLY, var_eventTable, 2, {1, 5}},
-    {EVENTOWNER, ASN_OCTET_STR, RWRITE, var_eventTable, 2, {1, 6}},
-    {EVENTSTATUS, ASN_INTEGER, RWRITE, var_eventTable, 2, {1, 7}}
+    {EVENTINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_eventTable, 2, {1, 1}},
+    {EVENTDESCRIPTION, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_eventTable, 2, {1, 2}},
+    {EVENTTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_eventTable, 2, {1, 3}},
+    {EVENTCOMMUNITY, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_eventTable, 2, {1, 4}},
+    {EVENTLASTTIMESENT, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
+     var_eventTable, 2, {1, 5}},
+    {EVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_eventTable, 2, {1, 6}},
+    {EVENTSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_eventTable, 2, {1, 7}}
 };
 
 struct variable2 logTable_variables[] = {
     /*
      * magic number        , variable type, ro/rw , callback fn  ,           L, oidsuffix 
      */
-    {LOGEVENTINDEX, ASN_INTEGER, RONLY, var_logTable, 2, {1, 1}},
-    {LOGINDEX, ASN_INTEGER, RONLY, var_logTable, 2, {1, 2}},
-    {LOGTIME, ASN_TIMETICKS, RONLY, var_logTable, 2, {1, 3}},
-    {LOGDESCRIPTION, ASN_OCTET_STR, RONLY, var_logTable, 2, {1, 4}}
+    {LOGEVENTINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_logTable, 2, {1, 1}},
+    {LOGINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_logTable, 2, {1, 2}},
+    {LOGTIME, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
+     var_logTable, 2, {1, 3}},
+    {LOGDESCRIPTION, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_logTable, 2, {1, 4}}
 
 };
 
diff --git a/agent/mibgroup/Rmon/event.h b/agent/mibgroup/Rmon/event.h
index dfcace7..b03e162 100644
--- a/agent/mibgroup/Rmon/event.h
+++ b/agent/mibgroup/Rmon/event.h
@@ -21,14 +21,13 @@
 #ifndef _MIBGROUP_EVENT_H
 #define _MIBGROUP_EVENT_H
 
-config_require(util_funcs)
-
-config_require(Rmon/agutil)
-config_require(Rmon/rows)
-
     /*
      * function prototypes 
      */
      void            init_event(void);
 
+config_require(util_funcs)
+
+config_require(Rmon/agutil)
+config_require(Rmon/rows)
 #endif                          /* _MIBGROUP_EVENT_H */
diff --git a/agent/mibgroup/Rmon/history.c b/agent/mibgroup/Rmon/history.c
index 9c6856f..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
@@ -44,8 +40,6 @@
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
-#include "util_funcs.h"
-
 #include "history.h"
 
 /*
@@ -656,18 +650,20 @@
     /*
      * magic number        , variable type, ro/rw , callback fn  ,           L, oidsuffix 
      */
-    {CTRL_INDEX, ASN_INTEGER, RONLY, var_historyControlTable, 2, {1, 1}},
-    {CTRL_DATASOURCE, ASN_OBJECT_ID, RWRITE, var_historyControlTable, 2,
-     {1, 2}},
-    {CTRL_BUCKETSREQUESTED, ASN_INTEGER, RWRITE, var_historyControlTable,
-     2, {1, 3}},
-    {CTRL_BUCKETSGRANTED, ASN_INTEGER, RONLY, var_historyControlTable, 2,
-     {1, 4}},
-    {CTRL_INTERVAL, ASN_INTEGER, RWRITE, var_historyControlTable, 2,
-     {1, 5}},
-    {CTRL_OWNER, ASN_OCTET_STR, RWRITE, var_historyControlTable, 2,
-     {1, 6}},
-    {CTRL_STATUS, ASN_INTEGER, RWRITE, var_historyControlTable, 2, {1, 7}},
+    {CTRL_INDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_historyControlTable, 2, {1, 1}},
+    {CTRL_DATASOURCE, ASN_OBJECT_ID, NETSNMP_OLDAPI_RWRITE,
+     var_historyControlTable, 2, {1, 2}},
+    {CTRL_BUCKETSREQUESTED, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_historyControlTable, 2, {1, 3}},
+    {CTRL_BUCKETSGRANTED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_historyControlTable, 2, {1, 4}},
+    {CTRL_INTERVAL, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_historyControlTable, 2, {1, 5}},
+    {CTRL_OWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_historyControlTable, 2, {1, 6}},
+    {CTRL_STATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_historyControlTable, 2, {1, 7}},
 
 };
 
@@ -678,32 +674,36 @@
     /*
      * magic number     , variable type , ro/rw , callback fn  ,        L, oidsuffix 
      */
-    {DATA_INDEX, ASN_INTEGER, RONLY, var_etherHistoryTable, 2, {1, 1}},
-    {DATA_SAMPLEINDEX, ASN_INTEGER, RONLY, var_etherHistoryTable, 2,
-     {1, 2}},
-    {DATA_INTERVALSTART, ASN_TIMETICKS, RONLY, var_etherHistoryTable, 2,
-     {1, 3}},
-    {DATA_DROPEVENTS, ASN_COUNTER, RONLY, var_etherHistoryTable, 2,
-     {1, 4}},
-    {DATA_OCTETS, ASN_COUNTER, RONLY, var_etherHistoryTable, 2, {1, 5}},
-    {DATA_PKTS, ASN_COUNTER, RONLY, var_etherHistoryTable, 2, {1, 6}},
-    {DATA_BROADCASTPKTS, ASN_COUNTER, RONLY, var_etherHistoryTable, 2,
-     {1, 7}},
-    {DATA_MULTICASTPKTS, ASN_COUNTER, RONLY, var_etherHistoryTable, 2,
-     {1, 8}},
-    {DATA_CRCALIGNERRORS, ASN_COUNTER, RONLY, var_etherHistoryTable, 2,
-     {1, 9}},
-    {DATA_UNDERSIZEPKTS, ASN_COUNTER, RONLY, var_etherHistoryTable, 2,
-     {1, 10}},
-    {DATA_OVERSIZEPKTS, ASN_COUNTER, RONLY, var_etherHistoryTable, 2,
-     {1, 11}},
-    {DATA_FRAGMENTS, ASN_COUNTER, RONLY, var_etherHistoryTable, 2,
-     {1, 12}},
-    {DATA_JABBERS, ASN_COUNTER, RONLY, var_etherHistoryTable, 2, {1, 13}},
-    {DATA_COLLISIONS, ASN_COUNTER, RONLY, var_etherHistoryTable, 2,
-     {1, 14}},
-    {DATA_UTILIZATION, ASN_INTEGER, RONLY, var_etherHistoryTable, 2,
-     {1, 15}},
+    {DATA_INDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_etherHistoryTable, 2, {1, 1}},
+    {DATA_SAMPLEINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_etherHistoryTable, 2, {1, 2}},
+    {DATA_INTERVALSTART, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
+     var_etherHistoryTable, 2, {1, 3}},
+    {DATA_DROPEVENTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherHistoryTable, 2, {1, 4}},
+    {DATA_OCTETS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherHistoryTable, 2, {1, 5}},
+    {DATA_PKTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherHistoryTable, 2, {1, 6}},
+    {DATA_BROADCASTPKTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherHistoryTable, 2, {1, 7}},
+    {DATA_MULTICASTPKTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherHistoryTable, 2, {1, 8}},
+    {DATA_CRCALIGNERRORS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherHistoryTable, 2, {1, 9}},
+    {DATA_UNDERSIZEPKTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherHistoryTable, 2, {1, 10}},
+    {DATA_OVERSIZEPKTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherHistoryTable, 2, {1, 11}},
+    {DATA_FRAGMENTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherHistoryTable, 2, {1, 12}},
+    {DATA_JABBERS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherHistoryTable, 2, {1, 13}},
+    {DATA_COLLISIONS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherHistoryTable, 2, {1, 14}},
+    {DATA_UTILIZATION, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_etherHistoryTable, 2, {1, 15}},
 
 };
 
diff --git a/agent/mibgroup/Rmon/history.h b/agent/mibgroup/Rmon/history.h
index 094bee4..d2c401d 100644
--- a/agent/mibgroup/Rmon/history.h
+++ b/agent/mibgroup/Rmon/history.h
@@ -21,8 +21,6 @@
 #ifndef _MIBGROUP_HISTORY_H
 #define _MIBGROUP_HISTORY_H
 
-config_require(util_funcs)
-
     /*
      * function prototypes 
      */
diff --git a/agent/mibgroup/Rmon/row_api.h b/agent/mibgroup/Rmon/row_api.h
index 2d3c832..9f576be 100644
--- a/agent/mibgroup/Rmon/row_api.h
+++ b/agent/mibgroup/Rmon/row_api.h
@@ -79,7 +79,7 @@
  * Api prototypes 
  */
 void            ROWAPI_init_table(TABLE_DEFINTION_T * table_ptr,
-                                  char *name,
+                                  const char *name,
                                   u_long max_number_of_entries,
                                   ENTRY_CALLBACK_T * ClbkCreate,
                                   ENTRY_CALLBACK_T * ClbkClone,
diff --git a/agent/mibgroup/Rmon/rows.c b/agent/mibgroup/Rmon/rows.c
index d8c3cc1..ac26e30 100644
--- a/agent/mibgroup/Rmon/rows.c
+++ b/agent/mibgroup/Rmon/rows.c
@@ -26,8 +26,6 @@
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
-#include "util_funcs.h"
-
 #include "agutil_api.h"
 #include "rows.h"
 #include "row_api.h"
@@ -257,7 +255,7 @@
 
 void
 ROWAPI_init_table(TABLE_DEFINTION_T * table_ptr,
-                  char *name,
+                  const char *name,
                   u_long max_number_of_entries,
                   ENTRY_CALLBACK_T * ClbkCreate,
                   ENTRY_CALLBACK_T * ClbkClone,
@@ -269,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;
@@ -756,7 +754,7 @@
         scrlr->first_data_ptr = bptr->next;
         scrlr->last_data_ptr->next = bptr;
         scrlr->last_data_ptr = (NEXTED_PTR_T *) bptr;
-        bptr->next = 0;
+        bptr->next = NULL;
     } else {
         bptr = scrlr->current_data_ptr;
         scrlr->current_data_ptr = bptr->next;
diff --git a/agent/mibgroup/Rmon/statistics.c b/agent/mibgroup/Rmon/statistics.c
index fb4f5f5..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
@@ -43,7 +39,6 @@
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
-#include "util_funcs.h"
 #include "statistics.h"
         /*
          * Implementation headers 
@@ -468,52 +463,52 @@
 oid             oidstatisticsVariablesOid[] = { 1, 3, 6, 1, 2, 1, 16, 1 };
 
 struct variable7 oidstatisticsVariables[] = {
-    {IDetherStatsIndex, ASN_INTEGER, RONLY, var_etherStatsEntry, 3,
-     {1, 1, 1}},
-    {IDetherStatsDataSource, ASN_OBJECT_ID, RWRITE, var_etherStatsEntry, 3,
-     {1, 1, 2}},
-    {IDetherStatsDropEvents, ASN_COUNTER, RONLY, var_etherStatsEntry, 3,
-     {1, 1, 3}},
-    {IDetherStatsOctets, ASN_COUNTER, RONLY, var_etherStatsEntry, 3,
-     {1, 1, 4}},
-    {IDetherStatsPkts, ASN_COUNTER, RONLY, var_etherStatsEntry, 3,
-     {1, 1, 5}},
-    {IDetherStatsBroadcastPkts, ASN_COUNTER, RONLY, var_etherStatsEntry, 3,
-     {1, 1, 6}},
-    {IDetherStatsMulticastPkts, ASN_COUNTER, RONLY, var_etherStatsEntry, 3,
-     {1, 1, 7}},
-    {IDetherStatsCRCAlignErrors, ASN_COUNTER, RONLY, var_etherStatsEntry,
-     3, {1, 1, 8}},
-    {IDetherStatsUndersizePkts, ASN_COUNTER, RONLY, var_etherStatsEntry, 3,
-     {1, 1, 9}},
-    {IDetherStatsOversizePkts, ASN_COUNTER, RONLY, var_etherStatsEntry, 3,
-     {1, 1, 10}},
-    {IDetherStatsFragments, ASN_COUNTER, RONLY, var_etherStatsEntry, 3,
-     {1, 1, 11}},
-    {IDetherStatsJabbers, ASN_COUNTER, RONLY, var_etherStatsEntry, 3,
-     {1, 1, 12}},
-    {IDetherStatsCollisions, ASN_COUNTER, RONLY, var_etherStatsEntry, 3,
-     {1, 1, 13}},
-    {IDetherStatsPkts64Octets, ASN_COUNTER, RONLY, var_etherStatsEntry, 3,
-     {1, 1, 14}},
-    {IDetherStatsPkts65to127Octets, ASN_COUNTER, RONLY,
+    {IDetherStatsIndex, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_etherStatsEntry, 3, {1, 1, 1}},
+    {IDetherStatsDataSource, ASN_OBJECT_ID, NETSNMP_OLDAPI_RWRITE,
+     var_etherStatsEntry, 3, {1, 1, 2}},
+    {IDetherStatsDropEvents, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherStatsEntry, 3, {1, 1, 3}},
+    {IDetherStatsOctets, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherStatsEntry, 3, {1, 1, 4}},
+    {IDetherStatsPkts, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherStatsEntry, 3, {1, 1, 5}},
+    {IDetherStatsBroadcastPkts, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherStatsEntry, 3, {1, 1, 6}},
+    {IDetherStatsMulticastPkts, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherStatsEntry, 3, {1, 1, 7}},
+    {IDetherStatsCRCAlignErrors, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherStatsEntry, 3, {1, 1, 8}},
+    {IDetherStatsUndersizePkts, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherStatsEntry, 3, {1, 1, 9}},
+    {IDetherStatsOversizePkts, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherStatsEntry, 3, {1, 1, 10}},
+    {IDetherStatsFragments, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherStatsEntry, 3, {1, 1, 11}},
+    {IDetherStatsJabbers, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherStatsEntry, 3, {1, 1, 12}},
+    {IDetherStatsCollisions, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherStatsEntry, 3, {1, 1, 13}},
+    {IDetherStatsPkts64Octets, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherStatsEntry, 3, {1, 1, 14}},
+    {IDetherStatsPkts65to127Octets, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
      var_etherStatsEntry, 3, {1, 1, 15}},
-    {IDetherStatsPkts128to255Octets, ASN_COUNTER, RONLY,
+    {IDetherStatsPkts128to255Octets, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
      var_etherStatsEntry, 3, {1, 1, 16}},
-    {IDetherStatsPkts256to511Octets, ASN_COUNTER, RONLY,
+    {IDetherStatsPkts256to511Octets, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
      var_etherStatsEntry, 3, {1, 1, 17}},
-    {IDetherStatsPkts512to1023Octets, ASN_COUNTER, RONLY,
+    {IDetherStatsPkts512to1023Octets, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
      var_etherStatsEntry, 3, {1, 1, 18}},
-    {IDetherStatsPkts1024to1518Octets, ASN_COUNTER, RONLY,
+    {IDetherStatsPkts1024to1518Octets, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
      var_etherStatsEntry, 3, {1, 1, 19}},
-    {IDetherStatsOwner, ASN_OCTET_STR, RWRITE, var_etherStatsEntry, 3,
-     {1, 1, 20}},
-    {IDetherStatsStatus, ASN_INTEGER, RWRITE, var_etherStatsEntry, 3,
-     {1, 1, 21}},
-    {IDetherStatsDroppedFrames, ASN_COUNTER, RONLY, var_etherStats2Entry,
-     3, {4, 1, 1}},
-    {IDetherStatsCreateTime, ASN_TIMETICKS, RONLY, var_etherStats2Entry, 3,
-     {4, 1, 2}},
+    {IDetherStatsOwner, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_etherStatsEntry, 3, {1, 1, 20}},
+    {IDetherStatsStatus, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_etherStatsEntry, 3, {1, 1, 21}},
+    {IDetherStatsDroppedFrames, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_etherStats2Entry, 3, {4, 1, 1}},
+    {IDetherStatsCreateTime, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
+     var_etherStats2Entry, 3, {4, 1, 2}},
 };
 
 /***************************************************
diff --git a/agent/mibgroup/Rmon/statistics.h b/agent/mibgroup/Rmon/statistics.h
index 8c6d91d..9b622a7 100644
--- a/agent/mibgroup/Rmon/statistics.h
+++ b/agent/mibgroup/Rmon/statistics.h
@@ -21,7 +21,6 @@
 #ifndef _statistics_h_included__
 #define _statistics_h_included__
 
-config_require(util_funcs)
      void            init_statistics(void);
 
 #endif                          /* _statistics_h_included__ */
diff --git a/agent/mibgroup/agent/extend.c b/agent/mibgroup/agent/extend.c
index 1f8586a..48379a2 100644
--- a/agent/mibgroup/agent/extend.c
+++ b/agent/mibgroup/agent/extend.c
@@ -1,5 +1,6 @@
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/watcher.h>
@@ -10,11 +11,17 @@
 #include "struct.h"
 
 #ifndef USING_UCD_SNMP_EXTENSIBLE_MODULE
-#include "util_funcs.h"
+#include "util_funcs/header_simple_table.h"
 #include "mibdefs.h"
 #define SHELLCOMMAND 3
 #endif
 
+netsnmp_feature_require(extract_table_row_data)
+netsnmp_feature_require(table_data_delete_table)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(insert_table_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 oid  ns_extend_oid[]    = { 1, 3, 6, 1, 4, 1, 8072, 1, 3, 2 };
 oid  extend_count_oid[] = { 1, 3, 6, 1, 4, 1, 8072, 1, 3, 2, 1 };
 oid  extend_config_oid[] = { 1, 3, 6, 1, 4, 1, 8072, 1, 3, 2, 2 };
@@ -27,7 +34,7 @@
     size_t              oid_len;
     long                num_entries;
     netsnmp_extend     *ehead;
-    netsnmp_handler_registration       *reg[3];
+    netsnmp_handler_registration       *reg[4];
     struct extend_registration_block_s *next;
 } extend_registration_block;
 extend_registration_block *ereg_head = NULL;
@@ -44,18 +51,47 @@
 unsigned int             max_compatability_entries = 50;
 netsnmp_old_extend *compatability_entries;
 
+char           *cmdlinebuf;
+size_t          cmdlinesize;
+
 WriteMethod fixExec2Error;
 FindVarMethod var_extensible_old;
 oid  old_extensible_variables_oid[] = { NETSNMP_UCDAVIS_MIB, NETSNMP_SHELLMIBNUM, 1 };
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 old_extensible_variables[] = {
-    {MIBINDEX,     ASN_INTEGER,   RONLY, var_extensible_old, 1, {MIBINDEX}},
-    {ERRORNAME,    ASN_OCTET_STR, RONLY, var_extensible_old, 1, {ERRORNAME}},
-    {SHELLCOMMAND, ASN_OCTET_STR, RONLY, var_extensible_old, 1, {SHELLCOMMAND}},
-    {ERRORFLAG,    ASN_INTEGER,   RONLY, var_extensible_old, 1, {ERRORFLAG}},
-    {ERRORMSG,     ASN_OCTET_STR, RONLY, var_extensible_old, 1, {ERRORMSG}},
-    {ERRORFIX,     ASN_INTEGER,  RWRITE, var_extensible_old, 1, {ERRORFIX}},
-    {ERRORFIXCMD,  ASN_OCTET_STR, RONLY, var_extensible_old, 1, {ERRORFIXCMD}}
+    {MIBINDEX,     ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {MIBINDEX}},
+    {ERRORNAME,    ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {ERRORNAME}},
+    {SHELLCOMMAND, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {SHELLCOMMAND}},
+    {ERRORFLAG,    ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {ERRORFLAG}},
+    {ERRORMSG,     ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {ERRORMSG}},
+    {ERRORFIX,     ASN_INTEGER,  NETSNMP_OLDAPI_RWRITE,
+     var_extensible_old, 1, {ERRORFIX}},
+    {ERRORFIXCMD,  ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {ERRORFIXCMD}}
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 old_extensible_variables[] = {
+    {MIBINDEX,     ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {MIBINDEX}},
+    {ERRORNAME,    ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {ERRORNAME}},
+    {SHELLCOMMAND, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {SHELLCOMMAND}},
+    {ERRORFLAG,    ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {ERRORFLAG}},
+    {ERRORMSG,     ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {ERRORMSG}},
+    {ERRORFIX,     ASN_INTEGER,  NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {ERRORFIX}},
+    {ERRORFIXCMD,  ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_extensible_old, 1, {ERRORFIXCMD}}
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 #endif
 
 
@@ -87,7 +123,8 @@
     netsnmp_table_data                *dinfo;
     netsnmp_table_registration_info   *tinfo;
     netsnmp_watcher_info              *winfo;
-    netsnmp_handler_registration      *reg;
+    netsnmp_handler_registration      *reg = NULL;
+    int                                rc;
 
     for ( eptr=ereg_head; eptr; eptr=eptr->next ) {
         if (!snmp_oid_compare( base, len, eptr->root_oid, eptr->oid_len))
@@ -95,6 +132,8 @@
     }
     if (!eptr) {
         eptr = SNMP_MALLOC_TYPEDEF( extend_registration_block );
+        if (!eptr)
+            return NULL;
         eptr->root_oid = snmp_duplicate_objid( base, len );
         eptr->oid_len  = len;
         eptr->num_entries = 0;
@@ -115,10 +154,20 @@
     tinfo->min_column = COLUMN_EXTCFG_FIRST_COLUMN;
     tinfo->max_column = COLUMN_EXTCFG_LAST_COLUMN;
     oid_buf[len] = 2;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg   = netsnmp_create_handler_registration(
                 "nsExtendConfigTable", handle_nsExtendConfigTable, 
                 oid_buf, len+1, HANDLER_CAN_RWRITE);
-    netsnmp_register_table_data( reg, dinfo, tinfo );
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg   = netsnmp_create_handler_registration(
+                "nsExtendConfigTable", handle_nsExtendConfigTable, 
+                oid_buf, len+1, HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+    rc = netsnmp_register_table_data( reg, dinfo, tinfo );
+    if (rc != SNMPERR_SUCCESS) {
+        goto bail;
+    }
+    netsnmp_handler_owns_table_info(reg->handler->next);
     eptr->reg[0] = reg;
 
         /*
@@ -135,7 +184,10 @@
     reg   = netsnmp_create_handler_registration(
                 "nsExtendOut1Table", handle_nsExtendOutput1Table, 
                 oid_buf, len+1, HANDLER_CAN_RONLY);
-    netsnmp_register_table_data( reg, dinfo, tinfo );
+    rc = netsnmp_register_table_data( reg, dinfo, tinfo );
+    if (rc != SNMPERR_SUCCESS)
+        goto bail;
+    netsnmp_handler_owns_table_info(reg->handler->next);
     eptr->reg[1] = reg;
 
         /*
@@ -154,7 +206,10 @@
     reg   = netsnmp_create_handler_registration(
                 "nsExtendOut2Table", handle_nsExtendOutput2Table, 
                 oid_buf, len+1, HANDLER_CAN_RONLY);
-    netsnmp_register_table( reg, tinfo );
+    rc = netsnmp_register_table( reg, tinfo );
+    if (rc != SNMPERR_SUCCESS)
+        goto bail;
+    netsnmp_handler_owns_table_info(reg->handler->next);
     eptr->reg[2] = reg;
 
         /*
@@ -167,9 +222,44 @@
     winfo = netsnmp_create_watcher_info(
                 &(eptr->num_entries), sizeof(eptr->num_entries),
                 ASN_INTEGER, WATCHER_FIXED_SIZE);
-    netsnmp_register_watched_scalar( reg, winfo );
+    rc = netsnmp_register_watched_scalar2( reg, winfo );
+    if (rc != SNMPERR_SUCCESS)
+        goto bail;
+    eptr->reg[3] = reg;
 
     return eptr;
+
+bail:
+    if (eptr->reg[3])
+        netsnmp_unregister_handler(eptr->reg[3]);
+    if (eptr->reg[2])
+        netsnmp_unregister_handler(eptr->reg[2]);
+    if (eptr->reg[1])
+        netsnmp_unregister_handler(eptr->reg[1]);
+    if (eptr->reg[0])
+        netsnmp_unregister_handler(eptr->reg[0]);
+    return NULL;
+}
+
+static void
+_unregister_extend(extend_registration_block *eptr)
+{
+    extend_registration_block *prev;
+
+    netsnmp_assert(eptr);
+    for (prev = ereg_head; prev && prev->next != eptr; prev = prev->next)
+	;
+    if (prev) {
+        netsnmp_assert(eptr == prev->next);
+	prev->next = eptr->next;
+    } else {
+        netsnmp_assert(eptr == ereg_head);
+	ereg_head = eptr->next;
+    }
+
+    netsnmp_table_data_delete_table(eptr->dinfo);
+    free(eptr->root_oid);
+    free(eptr);
 }
 
 int
@@ -183,6 +273,7 @@
         netsnmp_unregister_handler( eptr->reg[0] );
         netsnmp_unregister_handler( eptr->reg[1] );
         netsnmp_unregister_handler( eptr->reg[2] );
+        netsnmp_unregister_handler( eptr->reg[3] );
         SNMP_FREE(eptr);
     }
     ereg_head = NULL;
@@ -203,8 +294,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
@@ -214,6 +305,17 @@
                            extend_clear_callback, NULL);
 }
 
+void
+shutdown_extend(void)
+{
+#ifndef USING_UCD_SNMP_EXTENSIBLE_MODULE
+    free(compatability_entries);
+    compatability_entries = NULL;
+#endif
+    while (ereg_head)
+	_unregister_extend(ereg_head);
+}
+
         /*************************
          *
          *  Cached-data hooks
@@ -224,6 +326,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 */
@@ -263,7 +369,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 {
@@ -272,6 +378,7 @@
     }
     extension->result = ret;
     return ret;
+#endif /* !defined(USING_UTILITIES_EXECUTE_MODULE) */
 }
 
 void
@@ -450,6 +557,10 @@
     }
 
     eptr      = _register_extend( oid_buf, oid_len );
+    if (!eptr) {
+        snmp_log(LOG_ERR, "Failed to register extend entry '%s' - possibly duplicate name.\n", exec_name );
+        return;
+    }
     extension = _new_extension( exec_name, flags, eptr );
     if (extension) {
         extension->command  = strdup( exec_command );
@@ -478,10 +589,21 @@
             
     } else if (!strcmp( token, "sh"   ) ||
                !strcmp( token, "exec" )) {
-        if ( num_compatability_entries == max_compatability_entries )
+        if ( num_compatability_entries == max_compatability_entries ) {
             /* XXX - should really use dynamic allocation */
-            config_perror("No further UCD-compatible entries" );
-        else
+            netsnmp_old_extend *new_compatability_entries;
+            new_compatability_entries = realloc(compatability_entries,
+                             max_compatability_entries*2*sizeof(netsnmp_old_extend));
+            if (!new_compatability_entries)
+                config_perror("No further UCD-compatible entries" );
+            else {
+                memset(new_compatability_entries+num_compatability_entries, 0,
+                        sizeof(netsnmp_old_extend)*max_compatability_entries);
+                max_compatability_entries *= 2;
+                compatability_entries = new_compatability_entries;
+            }
+        }
+        if (num_compatability_entries != max_compatability_entries)
             compatability_entries[
                 num_compatability_entries++ ].exec_entry = extension;
     }
@@ -601,6 +723,7 @@
          *
          **********/
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case MODE_SET_RESERVE1:
             /*
              * Validate the new assignments
@@ -926,6 +1049,7 @@
                 }
             }
             break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
 
         default:
             netsnmp_set_request_error(reqinfo, request, SNMP_ERR_GENERR);
@@ -933,6 +1057,7 @@
         }
     }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     /*
      * If we're marking a given row as active,
      *  then we need to check that it's ready.
@@ -957,7 +1082,8 @@
             }
         }
     }
-
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+    
     return SNMP_ERR_NOERROR;
 }
 
@@ -1090,8 +1216,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) {
@@ -1106,7 +1232,7 @@
      *  GET handling - find the exact entry being requested
      ***/
     if ( mode == MODE_GET ) {
-        DEBUGMSGTL(( "nsExtendTable:output2", "GET: %s / %d\n ",
+        DEBUGMSGTL(( "nsExtendTable:output2", "GET: %s / %ld\n ",
                       table_info->indexes->val.string,
                      *table_info->indexes->next_variable->val.integer));
         for ( eptr = ereg->ehead; eptr; eptr = eptr->next ) {
@@ -1129,7 +1255,6 @@
             if (line_idx < 1 || line_idx > eptr->numlines)
                 return NULL;
         }
-        return eptr;
     }
 
         /***
@@ -1246,9 +1371,8 @@
             snmp_set_var_value( table_info->indexes->next_variable,
                                 (const u_char*)&line_idx, sizeof(line_idx));
         }
-        return eptr;  /* Finally, signal success */
     }
-    return NULL;
+    return eptr;  /* Finally, signal success */
 }
 
 /*
@@ -1338,6 +1462,32 @@
          *
          *************************/
 
+char * _get_cmdline(netsnmp_extend *extend)
+{
+    size_t          size;
+    char           *newbuf;
+    const char     *args = extend->args;
+
+    if (args == NULL)
+        /* Use empty string for processes without arguments. */
+        args = "";
+
+    size = strlen(extend->command) + strlen(args) + 2;
+    if (size > cmdlinesize) {
+        newbuf = realloc(cmdlinebuf, size);
+        if (!newbuf) {
+            free(cmdlinebuf);
+            cmdlinebuf = NULL;
+            cmdlinesize = 0;
+            return NULL;
+        }
+        cmdlinebuf = newbuf;
+        cmdlinesize = size;
+    }
+    sprintf(cmdlinebuf, "%s %s", extend->command, args);
+    return cmdlinebuf;
+}
+
 u_char *
 var_extensible_old(struct variable * vp,
                      oid * name,
@@ -1348,6 +1498,7 @@
     netsnmp_old_extend *exten = NULL;
     static long     long_ret;
     unsigned int idx;
+    char         *cmdline;
 
     if (header_simple_table
         (vp, name, length, exact, var_len, write_method, num_compatability_entries))
@@ -1366,8 +1517,10 @@
             *var_len = strlen(exten->exec_entry->token);
             return ((u_char *) (exten->exec_entry->token));
         case SHELLCOMMAND:
-            *var_len = strlen(exten->exec_entry->command);
-            return ((u_char *) (exten->exec_entry->command));
+            cmdline = _get_cmdline(exten->exec_entry);
+            if (cmdline)
+                *var_len = strlen(cmdline);
+            return ((u_char *) cmdline);
         case ERRORFLAG:        /* return code from the process */
             netsnmp_cache_check_and_reload( exten->exec_entry->cache );
             long_ret = exten->exec_entry->result;
@@ -1390,8 +1543,10 @@
 
         case ERRORFIXCMD:
             if (exten->efix_entry) {
-                *var_len = strlen(exten->efix_entry->command);
-                return ((u_char *) exten->efix_entry->command);
+                cmdline = _get_cmdline(exten->efix_entry);
+		if (cmdline)
+                    *var_len = strlen(cmdline);
+                return ((u_char *) cmdline);
             } else {
                 *var_len = 0;
                 return ((u_char *) &long_return);  /* Just needs to be non-null! */
@@ -1416,6 +1571,7 @@
     idx = name[name_len-1] -1;
     exten = &compatability_entries[ idx ];
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     switch (action) {
     case MODE_SET_RESERVE1:
         if (var_val_type != ASN_INTEGER) {
@@ -1436,6 +1592,7 @@
     case MODE_SET_COMMIT:
         netsnmp_cache_check_and_reload( exten->efix_entry->cache );
     }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     return SNMP_ERR_NOERROR;
 }
-#endif
+#endif /* USING_UCD_SNMP_EXTENSIBLE_MODULE */
diff --git a/agent/mibgroup/agent/extend.h b/agent/mibgroup/agent/extend.h
index 8f19db3..8b76cd4 100644
--- a/agent/mibgroup/agent/extend.h
+++ b/agent/mibgroup/agent/extend.h
@@ -1,7 +1,7 @@
 #ifndef NETSNMP_EXTEND_H
 #define NETSNMP_EXTEND_H
 
-config_require( util_funcs )
+config_require( util_funcs/header_simple_table )
 config_require( utilities/execute )
 config_add_mib(NET-SNMP-EXTEND-MIB)
 
@@ -28,6 +28,7 @@
 } netsnmp_extend;
 
 void                 init_extend(void);
+void                 shutdown_extend(void);
 Netsnmp_Node_Handler handle_nsExtendConfigTable;
 Netsnmp_Node_Handler handle_nsExtendOutput1Table;
 Netsnmp_Node_Handler handle_nsExtendOutput2Table;
diff --git a/agent/mibgroup/agent/nsCache.c b/agent/mibgroup/agent/nsCache.c
index f8e73f0..d32263b 100644
--- a/agent/mibgroup/agent/nsCache.c
+++ b/agent/mibgroup/agent/nsCache.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/scalar.h>
@@ -11,7 +12,8 @@
 
 #include <net-snmp/agent/cache_handler.h>
 #include "agent/nsCache.h"
-#include "util_funcs.h"
+
+netsnmp_feature_require(cache_get_head)
 
 
 /*
@@ -21,6 +23,8 @@
 extern netsnmp_cache *netsnmp_cache_get_head(void);
 
 
+#define nsCache 1, 3, 6, 1, 4, 1, 8072, 1, 5
+
 /*
  * OIDs for the cacheging control scalar objects
  *
@@ -28,8 +32,6 @@
  *  than the (sole) valid instance in each case, in order
  *  to handle requests for invalid instances properly.
  */
-oid nsCacheTimeout_oid[]    = { 1, 3, 6, 1, 4, 1, 8072, 1, 5, 1};
-oid nsCacheEnabled_oid[]    = { 1, 3, 6, 1, 4, 1, 8072, 1, 5, 2};
 
 /*
  * ... and for the cache table.
@@ -44,15 +46,17 @@
 #define NSCACHE_STATUS_ACTIVE   4
 #define NSCACHE_STATUS_EXPIRED  5
 
-oid nsCacheTable_oid[]      = { 1, 3, 6, 1, 4, 1, 8072, 1, 5, 3};
-
-extern struct snmp_alarm *
+NETSNMP_IMPORT struct snmp_alarm *
 sa_find_specific(unsigned int clientreg);
 
 
 void
 init_nsCache(void)
 {
+    const oid nsCacheTimeout_oid[]    = { nsCache, 1 };
+    const oid nsCacheEnabled_oid[]    = { nsCache, 2 };
+    const oid nsCacheTable_oid[]      = { nsCache, 3 };
+
     netsnmp_table_registration_info *table_info;
     netsnmp_iterator_info           *iinfo;
 
@@ -102,7 +106,7 @@
     /*
      * .... and register the table with the agent.
      */
-    netsnmp_register_table_iterator(
+    netsnmp_register_table_iterator2(
         netsnmp_create_handler_registration(
             "tzCacheTable", handle_nsCacheTable,
             nsCacheTable_oid, OID_LENGTH(nsCacheTable_oid),
@@ -137,6 +141,7 @@
 	break;
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
 	for (request = requests; request; request=request->next) {
             if ( request->status != 0 ) {
@@ -158,6 +163,7 @@
                            NETSNMP_DS_AGENT_CACHE_TIMEOUT,
                            *requests->requestvb->val.integer);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
@@ -187,6 +193,7 @@
 	break;
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
 	for (request = requests; request; request=request->next) {
             if ( request->status != 0 ) {
@@ -211,6 +218,7 @@
 	netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
                                NETSNMP_DS_AGENT_NO_CACHING, enabled);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
@@ -295,9 +303,10 @@
                     continue;
 		}
 		status = (cache_entry->enabled ?
-	                   (cache_entry->timestamp ?
-                             (!atime_ready(cache_entry->timestamp,
-                                          1000*cache_entry->timeout) ?
+	                   (cache_entry->timestampM ?
+                             (cache_entry->timeout >= 0 &&
+                              !netsnmp_ready_monotonic(cache_entry->timestampM,
+                                                       1000*cache_entry->timeout) ?
 	                        NSCACHE_STATUS_ACTIVE:
 	                        NSCACHE_STATUS_EXPIRED) :
 	                      NSCACHE_STATUS_EMPTY) :
@@ -314,6 +323,7 @@
 	break;
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         for (request=requests; request; request=request->next) {
             if (request->processed != 0)
@@ -361,7 +371,6 @@
             default:
                 netsnmp_set_request_error(reqinfo, request, SNMP_ERR_NOCREATION);
                 return SNMP_ERR_NOCREATION;	/* XXX - is this right ? */
-                continue;
 	    }
 	}
 	break;
@@ -405,14 +414,15 @@
                         break;
 		    case NSCACHE_STATUS_EMPTY:
                         cache_entry->free_cache(cache_entry, cache_entry->magic);
-                        free(cache_entry->timestamp);
-                        cache_entry->timestamp = NULL;
+                        free(cache_entry->timestampM);
+                        cache_entry->timestampM = NULL;
                         break;
 		}
 	        break;
 	    }
 	}
 	break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/agent/nsDebug.c b/agent/mibgroup/agent/nsDebug.c
index 40d55d4..89a90b0 100644
--- a/agent/mibgroup/agent/nsDebug.c
+++ b/agent/mibgroup/agent/nsDebug.c
@@ -10,34 +10,32 @@
 #endif
 
 #include "agent/nsDebug.h"
-#include "util_funcs.h"
 
-
-
-/*
- * OIDs for the debugging control scalar objects
- *
- * Note that these we're registering the full object rather
- *  than the (sole) valid instance in each case, in order
- *  to handle requests for invalid instances properly.
- */
-oid nsDebugEnabled_oid[]    = { 1, 3, 6, 1, 4, 1, 8072, 1, 7, 1, 1};
-oid nsDebugOutputAll_oid[]  = { 1, 3, 6, 1, 4, 1, 8072, 1, 7, 1, 2};
-oid nsDebugDumpPdu_oid[]    = { 1, 3, 6, 1, 4, 1, 8072, 1, 7, 1, 3};
-
-/*
- * ... and for the token table.
- */
-
-#define  DBGTOKEN_PREFIX	2
-#define  DBGTOKEN_ENABLED	3
-#define  DBGTOKEN_STATUS	4
-oid nsDebugTokenTable_oid[] = { 1, 3, 6, 1, 4, 1, 8072, 1, 7, 1, 4};
-
+#define nsConfigDebug 1, 3, 6, 1, 4, 1, 8072, 1, 7, 1
 
 void
 init_nsDebug(void)
 {
+    /*
+     * OIDs for the debugging control scalar objects
+     *
+     * Note that these we're registering the full object rather
+     *  than the (sole) valid instance in each case, in order
+     *  to handle requests for invalid instances properly.
+     */
+    const oid nsDebugEnabled_oid[]    = { nsConfigDebug, 1};
+    const oid nsDebugOutputAll_oid[]  = { nsConfigDebug, 2};
+    const oid nsDebugDumpPdu_oid[]    = { nsConfigDebug, 3};
+
+    /*
+     * ... and for the token table.
+     */
+
+#define  DBGTOKEN_PREFIX	2
+#define  DBGTOKEN_ENABLED	3
+#define  DBGTOKEN_STATUS	4
+    const oid nsDebugTokenTable_oid[] = { nsConfigDebug, 4};
+
     netsnmp_table_registration_info *table_info;
     netsnmp_iterator_info           *iinfo;
 
@@ -93,7 +91,7 @@
     /*
      * .... and register the table with the agent.
      */
-    netsnmp_register_table_iterator(
+    netsnmp_register_table_iterator2(
         netsnmp_create_handler_registration(
             "tzDebugTable", handle_nsDebugTable,
             nsDebugTokenTable_oid, OID_LENGTH(nsDebugTokenTable_oid),
@@ -126,6 +124,7 @@
 	break;
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
 	for (request = requests; request; request=request->next) {
             if (request->processed != 0)
@@ -151,6 +150,7 @@
 	    enabled = 0;
 	snmp_set_do_debugging( enabled );
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
@@ -181,6 +181,7 @@
 	break;
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
 	for (request = requests; request; request=request->next) {
             if (request->processed != 0)
@@ -206,6 +207,7 @@
 	    enabled = 0;
 	snmp_set_do_debugging( enabled );
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
@@ -237,6 +239,7 @@
 	break;
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
 	for (request = requests; request; request=request->next) {
             if (request->processed != 0)
@@ -263,6 +266,7 @@
 	netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
 	                       NETSNMP_DS_LIB_DUMP_PACKET, enabled);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
@@ -347,6 +351,7 @@
 	break;
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
 	for (request = requests; request; request=request->next) {
             if (request->processed != 0)
@@ -453,6 +458,7 @@
 	    }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/agent/nsLogging.c b/agent/mibgroup/agent/nsLogging.c
index 3e5b02f..7f20bdb 100644
--- a/agent/mibgroup/agent/nsLogging.c
+++ b/agent/mibgroup/agent/nsLogging.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/scalar.h>
@@ -11,9 +12,11 @@
 
 #include <net-snmp/library/snmp_logging.h>
 #include "agent/nsLogging.h"
-#include "util_funcs.h"
 
-
+netsnmp_feature_require(logging_external)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(table_iterator_insert_context)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * OID and columns for the logging table.
@@ -23,15 +26,14 @@
 #define  NSLOGGING_MAXLEVEL	4
 #define  NSLOGGING_STATUS	5
 
-oid nsLoggingTable_oid[]      = { 1, 3, 6, 1, 4, 1, 8072, 1, 7, 2, 1};
-
-
 void
 init_nsLogging(void)
 {
     netsnmp_table_registration_info *table_info;
     netsnmp_iterator_info           *iinfo;
 
+    const oid nsLoggingTable_oid[] = { 1, 3, 6, 1, 4, 1, 8072, 1, 7, 2, 1};
+
     /*
      * Register the table.
      * We need to define the column structure and indexing....
@@ -62,7 +64,7 @@
     /*
      * .... and register the table with the agent.
      */
-    netsnmp_register_table_iterator(
+    netsnmp_register_table_iterator2(
         netsnmp_create_handler_registration(
             "tzLoggingTable", handle_nsLoggingTable,
             nsLoggingTable_oid, OID_LENGTH(nsLoggingTable_oid),
@@ -190,6 +192,7 @@
 	break;
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         for (request=requests; request; request=request->next) {
             if ( request->status != 0 ) {
@@ -308,7 +311,6 @@
             default:
                 netsnmp_set_request_error(reqinfo, request, SNMP_NOSUCHOBJECT);
                 return SNMP_NOSUCHOBJECT;
-                continue;
 	    }
 	}
 	break;
@@ -449,11 +451,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 );
@@ -463,6 +465,7 @@
 	    }
 	}
 	break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/agent/nsModuleTable.c b/agent/mibgroup/agent/nsModuleTable.c
index 4f4ea00..84bd8fa 100644
--- a/agent/mibgroup/agent/nsModuleTable.c
+++ b/agent/mibgroup/agent/nsModuleTable.c
@@ -4,10 +4,13 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "nsModuleTable.h"
 
+netsnmp_feature_require(table_dataset)
+
 void
 nsModuleTable_free(void *context, netsnmp_iterator_info *dont_care)
 {
@@ -18,8 +21,7 @@
 void
 initialize_table_nsModuleTable(void)
 {
-    static oid      nsModuleTable_oid[] =
-        { 1, 3, 6, 1, 4, 1, 8072, 1, 2, 1 };
+    const oid nsModuleTable_oid[] = { 1, 3, 6, 1, 4, 1, 8072, 1, 2, 1 };
     netsnmp_table_registration_info *table_info;
     netsnmp_handler_registration *my_handler;
     netsnmp_iterator_info *iinfo;
@@ -73,10 +75,10 @@
      */
     DEBUGMSGTL(("initialize_table_nsModuleTable",
                 "Registering table nsModuleTable as a table iterator\n"));
-    netsnmp_register_table_iterator(my_handler, iinfo);
+    netsnmp_register_table_iterator2(my_handler, iinfo);
 }
 
-/** Initialzies the nsModuleTable module */
+/** Initializes the nsModuleTable module */
 void
 init_nsModuleTable(void)
 {
@@ -137,18 +139,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;
 }
@@ -185,16 +187,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/nsTransactionTable.c b/agent/mibgroup/agent/nsTransactionTable.c
index 31b9fe5..d7d3ce9 100644
--- a/agent/mibgroup/agent/nsTransactionTable.c
+++ b/agent/mibgroup/agent/nsTransactionTable.c
@@ -3,6 +3,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -10,15 +11,14 @@
 #include <net-snmp/agent/table_iterator.h>
 #include "nsTransactionTable.h"
 
+netsnmp_feature_require(table_dataset)
+
 /** Initialize the nsTransactionTable table by defining it's contents
    and how it's structured */
 void
 initialize_table_nsTransactionTable(void)
 {
-    static oid      nsTransactionTable_oid[] =
-        { 1, 3, 6, 1, 4, 1, 8072, 1, 8, 1 };
-    size_t          nsTransactionTable_oid_len =
-        OID_LENGTH(nsTransactionTable_oid);
+    const oid nsTransactionTable_oid[] = { 1, 3, 6, 1, 4, 1, 8072, 1, 8, 1 };
     netsnmp_table_registration_info *table_info;
     netsnmp_handler_registration *my_handler;
     netsnmp_iterator_info *iinfo;
@@ -33,11 +33,10 @@
      * if your table is read only, it's easiest to change the
      * HANDLER_CAN_RWRITE definition below to HANDLER_CAN_RONLY 
      */
-    my_handler = netsnmp_create_handler_registration("nsTransactionTable",
-                                                     nsTransactionTable_handler,
-                                                     nsTransactionTable_oid,
-                                                     nsTransactionTable_oid_len,
-                                                     HANDLER_CAN_RONLY);
+    my_handler = netsnmp_create_handler_registration(
+        "nsTransactionTable", nsTransactionTable_handler,
+        nsTransactionTable_oid, OID_LENGTH(nsTransactionTable_oid),
+        HANDLER_CAN_RONLY);
 
     if (!my_handler || !table_info || !iinfo) {
         if (my_handler)
@@ -65,10 +64,10 @@
      */
     DEBUGMSGTL(("initialize_table_nsTransactionTable",
                 "Registering table nsTransactionTable as a table iterator\n"));
-    netsnmp_register_table_iterator(my_handler, iinfo);
+    netsnmp_register_table_iterator2(my_handler, iinfo);
 }
 
-/** Initialzies the nsTransactionTable module */
+/** Initializes the nsTransactionTable module */
 void
 init_nsTransactionTable(void)
 {
diff --git a/agent/mibgroup/agent/nsVacmAccessTable.c b/agent/mibgroup/agent/nsVacmAccessTable.c
index d2cee35..79fa97d 100644
--- a/agent/mibgroup/agent/nsVacmAccessTable.c
+++ b/agent/mibgroup/agent/nsVacmAccessTable.c
@@ -4,11 +4,18 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/library/vacm.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "nsVacmAccessTable.h"
 
+netsnmp_feature_require(check_vb_storagetype)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(table_iterator_insert_context)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 /** Initializes the nsVacmAccessTable module */
 void
 init_register_nsVacm_context(const char *context)
@@ -17,17 +24,22 @@
      * Initialize the nsVacmAccessTable table by defining its
      *   contents and how it's structured
      */
-    static oid nsVacmAccessTable_oid[]   = { 1,3,6,1,4,1,8072,1,9,1 };
-    size_t     nsVacmAccessTable_oid_len = OID_LENGTH(nsVacmAccessTable_oid);
+    const oid nsVacmAccessTable_oid[]   = { 1,3,6,1,4,1,8072,1,9,1 };
     netsnmp_handler_registration    *reg;
     netsnmp_iterator_info           *iinfo;
     netsnmp_table_registration_info *table_info;
 
-    reg = netsnmp_create_handler_registration("nsVacmAccessTable",
-                                            nsVacmAccessTable_handler,
-                                            nsVacmAccessTable_oid,
-                                            nsVacmAccessTable_oid_len,
-                                            HANDLER_CAN_RWRITE);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+    reg = netsnmp_create_handler_registration(
+        "nsVacmAccessTable", nsVacmAccessTable_handler,
+        nsVacmAccessTable_oid, OID_LENGTH(nsVacmAccessTable_oid),
+        HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration(
+        "nsVacmAccessTable", nsVacmAccessTable_handler,
+        nsVacmAccessTable_oid, OID_LENGTH(nsVacmAccessTable_oid),
+        HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -48,7 +60,7 @@
     if ( context && context[0] )
         reg->contextName = strdup(context);
 
-    netsnmp_register_table_iterator(reg, iinfo);
+    netsnmp_register_table_iterator2(reg, iinfo);
 }
 
 void
@@ -191,6 +203,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -336,6 +349,7 @@
             }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     return SNMP_ERR_NOERROR;
 }
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/agentx_config.c b/agent/mibgroup/agentx/agentx_config.c
index d156d47..b590c7a 100644
--- a/agent/mibgroup/agentx/agentx_config.c
+++ b/agent/mibgroup/agentx/agentx_config.c
@@ -2,6 +2,7 @@
  *  AgentX Configuration
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #include <sys/types.h>
@@ -14,19 +15,15 @@
 #include <strings.h>
 #endif
 
-#if HAVE_PWD_H
-#include <pwd.h>
-#endif
-#if HAVE_GRP_H
-#include <grp.h>
-#endif
-
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "snmpd.h"
 #include "agentx/agentx_config.h"
 #include "agentx/protocol.h"
 
+netsnmp_feature_require(user_information)
+netsnmp_feature_require(string_time_to_secs)
+
 /* ---------------------------------------------------------------------
  *
  * Common master and sub-agent
@@ -47,7 +44,6 @@
 agentx_parse_master(const char *token, char *cptr)
 {
     int             i = -1;
-    char            buf[BUFSIZ];
 
     if (!strcmp(cptr, "agentx") ||
         !strcmp(cptr, "all") ||
@@ -60,8 +56,7 @@
         i = atoi(cptr);
 
     if (i < 0 || i > 1) {
-        sprintf(buf, "master '%s' unrecognised", cptr);
-        config_perror(buf);
+	netsnmp_config_error("master '%s' unrecognised", cptr);
     } else
         netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_AGENTX_MASTER, i);
 }
@@ -75,12 +70,6 @@
     int s_perm = -1;
     int d_perm = -1;
     char *st;
-#if HAVE_GETPWNAM && HAVE_PWD_H
-    struct passwd *pwd;
-#endif
-#if HAVE_GETGRNAM && HAVE_GRP_H
-    struct group  *grp;
-#endif
 
     DEBUGMSGTL(("agentx/config", "port permissions: %s\n", cptr));
     socket_perm = strtok_r(cptr, " \t", &st);
@@ -107,16 +96,7 @@
      * Try to handle numeric UIDs or user names for the socket owner
      */
     if (socket_user) {
-        uid = atoi(socket_user);
-        if ( uid == 0 ) {
-#if HAVE_GETPWNAM && HAVE_PWD_H
-            pwd = getpwnam( socket_user );
-            if (pwd)
-                uid = pwd->pw_uid;
-            else
-#endif
-                snmp_log(LOG_WARNING, "Can't identify AgentX socket user (%s).\n", socket_user);
-        }
+        uid = netsnmp_str_to_uid(socket_user);
         if ( uid != 0 )
             netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
                                NETSNMP_DS_AGENT_X_SOCK_USER, uid);
@@ -128,16 +108,7 @@
      * and similarly for the socket group ownership
      */
     if (socket_group) {
-        gid = atoi(socket_group);
-        if ( gid == 0 ) {
-#if HAVE_GETGRNAM && HAVE_GRP_H
-            grp = getgrnam( socket_group );
-            if (grp)
-                gid = grp->gr_gid;
-            else
-#endif
-                snmp_log(LOG_WARNING, "Can't identify AgentX socket group (%s).\n", socket_group);
-        }
+        gid = netsnmp_str_to_gid(socket_group);
         if ( gid != 0 )
             netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
                                NETSNMP_DS_AGENT_X_SOCK_GROUP, gid);
@@ -149,8 +120,12 @@
 void
 agentx_parse_agentx_timeout(const char *token, char *cptr)
 {
-    int x = atoi(cptr);
+    int x = netsnmp_string_time_to_secs(cptr);
     DEBUGMSGTL(("agentx/config/timeout", "%s\n", cptr));
+    if (x == -1) {
+        config_perror("Invalid timeout value");
+        return;
+    }
     netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
                        NETSNMP_DS_AGENT_AGENTX_TIMEOUT, x * ONE_SEC);
 }
@@ -185,11 +160,14 @@
     register_config_handler(":agentx", token, parser, releaser, help);
 }
 
+netsnmp_feature_child_of(agentx_unregister_config_handler, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_AGENTX_UNREGISTER_CONFIG_HANDLER
 void
 agentx_unregister_config_handler(const char *token)
 {
     unregister_config_handler(":agentx", token);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_AGENTX_UNREGISTER_CONFIG_HANDLER */
 
 void
 agentx_config_init(void)
diff --git a/agent/mibgroup/agentx/client.c b/agent/mibgroup/agentx/client.c
index 1dbdd2b..d36fe2d 100644
--- a/agent/mibgroup/agentx/client.c
+++ b/agent/mibgroup/agentx/client.c
@@ -3,6 +3,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #include <errno.h>
@@ -19,11 +20,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 +33,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,7 +42,7 @@
 #include "agentx/client.h"
 #include "agentx/subagent.h"
 
-extern struct timeval starttime;
+netsnmp_feature_require(set_agent_uptime)
 
         /*
          * AgentX handling utility routines
@@ -63,7 +57,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 +73,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 +195,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 +252,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 6b0f65e..c42a42a 100644
--- a/agent/mibgroup/agentx/master.c
+++ b/agent/mibgroup/agentx/master.c
@@ -14,6 +14,7 @@
 
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #if HAVE_IO_H
 #include <io.h>
 #endif
@@ -31,9 +32,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
@@ -53,6 +51,10 @@
 #include "agentx/protocol.h"
 #include "agentx/master_admin.h"
 
+netsnmp_feature_require(handler_mark_requests_as_delegated)
+netsnmp_feature_require(unix_socket_paths)
+netsnmp_feature_require(free_agent_snmp_session_by_session)
+
 void
 real_init_master(void)
 {
@@ -60,13 +62,6 @@
     char *agentx_sockets;
     char *cp1;
 
-#ifdef NETSNMP_TRANSPORT_UNIX_DOMAIN
-    int agentx_dir_perm;
-    int agentx_sock_perm;
-    int agentx_sock_user;
-    int agentx_sock_group;
-#endif
-
     if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE) != MASTER_AGENT)
         return;
 
@@ -98,6 +93,18 @@
                                       NETSNMP_DS_AGENT_AGENTX_TIMEOUT);
     sess.retries = netsnmp_ds_get_int(NETSNMP_DS_APPLICATION_ID,
                                       NETSNMP_DS_AGENT_AGENTX_RETRIES);
+
+#ifdef NETSNMP_TRANSPORT_UNIX_DOMAIN
+    {
+	int agentx_dir_perm =
+	    netsnmp_ds_get_int(NETSNMP_DS_APPLICATION_ID,
+			       NETSNMP_DS_AGENT_X_DIR_PERM);
+	if (agentx_dir_perm == 0)
+	    agentx_dir_perm = NETSNMP_AGENT_DIRECTORY_MODE;
+	netsnmp_unix_create_path_with_mode(agentx_dir_perm);
+    }
+#endif
+
     cp1 = agentx_sockets;
     while (cp1) {
         netsnmp_transport *t;
@@ -111,44 +118,15 @@
         if (cp1 != NULL) {
             *cp1++ = '\0';
 	}
-    
-        if (sess.peername[0] == '/') {
-#ifdef NETSNMP_TRANSPORT_UNIX_DOMAIN
-            /*
-             *  If this is a Unix pathname,
-             *  try and create the directory first.
-             */
-            agentx_dir_perm = netsnmp_ds_get_int(NETSNMP_DS_APPLICATION_ID, 
-                                                 NETSNMP_DS_AGENT_X_DIR_PERM);
-            if (agentx_dir_perm == 0)
-                agentx_dir_perm = NETSNMP_AGENT_DIRECTORY_MODE;
-            if (mkdirhier(sess.peername, (mode_t)agentx_dir_perm, 1)) {
-                snmp_log(LOG_ERR,
-                         "Failed to create the directory for the agentX socket: %s\n",
-                         sess.peername);
-            }
-#else
-            netsnmp_sess_log_error(LOG_WARNING,
-                                   "unix domain support not available\n",
-                                   &sess);
-#endif
-        }
-    
+
         /*
-         *  Otherwise, let 'snmp_open' interpret the string.
+         *  Let 'snmp_open' interpret the descriptor.
          */
         sess.local_port = AGENTX_PORT;      /* Indicate server & set default port */
         sess.remote_port = 0;
         sess.callback = handle_master_agentx_packet;
         errno = 0;
         t = netsnmp_transport_open_server("agentx", sess.peername);
-        if (t == NULL && errno == EADDRINUSE) {
-            /*
-             * Could be a left-over socket (now deleted)
-             * Try again
-             */
-            t = netsnmp_transport_open_server("agentx", sess.peername);
-        }
         if (t == NULL) {
             /*
              * diagnose snmp_open errors with the input netsnmp_session
@@ -171,23 +149,24 @@
         } else {
 #ifdef NETSNMP_TRANSPORT_UNIX_DOMAIN
             if (t->domain == netsnmp_UnixDomain && t->local != NULL) {
-                char name[sizeof(struct sockaddr_un) + 1];
-                memcpy(name, t->local, t->local_length);
-                name[t->local_length] = '\0';
                 /*
                  * Apply any settings to the ownership/permissions of the
                  * AgentX socket
                  */
-                agentx_sock_perm =
+                int agentx_sock_perm =
                     netsnmp_ds_get_int(NETSNMP_DS_APPLICATION_ID,
                                        NETSNMP_DS_AGENT_X_SOCK_PERM);
-                agentx_sock_user =
+                int agentx_sock_user =
                     netsnmp_ds_get_int(NETSNMP_DS_APPLICATION_ID,
                                        NETSNMP_DS_AGENT_X_SOCK_USER);
-                agentx_sock_group =
+                int agentx_sock_group =
                     netsnmp_ds_get_int(NETSNMP_DS_APPLICATION_ID,
                                        NETSNMP_DS_AGENT_X_SOCK_GROUP);
 
+                char name[sizeof(struct sockaddr_un) + 1];
+                memcpy(name, t->local, t->local_length);
+                name[t->local_length] = '\0';
+
                 if (agentx_sock_perm != 0)
                     chmod(name, agentx_sock_perm);
 
@@ -213,6 +192,10 @@
         }
     }
 
+#ifdef NETSNMP_TRANSPORT_UNIX_DOMAIN
+    netsnmp_unix_dont_create_path();
+#endif
+
     SNMP_FREE(agentx_sockets);
     DEBUGMSGTL(("agentx/master", "initializing...   DONE\n"));
 }
@@ -234,7 +217,7 @@
 
     cache = netsnmp_handler_check_cache(cache);
     if (!cache) {
-        DEBUGMSGTL(("agentx/master", "response too late on session %08p\n",
+        DEBUGMSGTL(("agentx/master", "response too late on session %8p\n",
                     session));
         return 0;
     }
@@ -243,8 +226,8 @@
     switch (operation) {
     case NETSNMP_CALLBACK_OP_TIMED_OUT:{
             void           *s = snmp_sess_pointer(session);
-            DEBUGMSGTL(("agentx/master", "timeout on session %08p\n",
-                        session));
+            DEBUGMSGTL(("agentx/master", "timeout on session %8p req=0x%x\n",
+                        session, (unsigned)reqid));
 
             netsnmp_handler_mark_requests_as_delegated(requests,
                                        REQUEST_IS_NOT_DELEGATED);
@@ -281,10 +264,10 @@
     case NETSNMP_CALLBACK_OP_DISCONNECT:
     case NETSNMP_CALLBACK_OP_SEND_FAILED:
         if (operation == NETSNMP_CALLBACK_OP_DISCONNECT) {
-            DEBUGMSGTL(("agentx/master", "disconnect on session %08p\n",
+            DEBUGMSGTL(("agentx/master", "disconnect on session %8p\n",
                         session));
         } else {
-            DEBUGMSGTL(("agentx/master", "send failed on session %08p\n",
+            DEBUGMSGTL(("agentx/master", "send failed on session %8p\n",
                         session));
         }
         close_agentx_session(session, -1);
@@ -308,9 +291,10 @@
         return 0;
     }
 
-    DEBUGMSGTL(("agentx/master", "got response errstat=%d, (req=0x%x,trans="
+    DEBUGMSGTL(("agentx/master", "got response errstat=%ld, (req=0x%x,trans="
                 "0x%x,sess=0x%x)\n",
-                pdu->errstat,pdu->reqid,pdu->transid, pdu->sessid));
+                pdu->errstat, (unsigned)pdu->reqid, (unsigned)pdu->transid,
+		(unsigned)pdu->sessid));
 
     if (pdu->errstat != AGENTX_ERR_NOERROR) {
         /* [RFC 2471 - 7.2.5.2.]
@@ -387,9 +371,9 @@
             DEBUGMSGOID(("agentx/master", var->name, var->name_length));
             DEBUGMSG(("agentx/master", "\n"));
             if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_VERBOSE)) {
-                DEBUGMSGTL(("snmp_agent", "    >> "));
-                DEBUGMSGVAR(("snmp_agent", var));
-                DEBUGMSG(("snmp_agent", "\n"));
+                DEBUGMSGTL(("agentx/master", "    >> "));
+                DEBUGMSGVAR(("agentx/master", var));
+                DEBUGMSG(("agentx/master", "\n"));
             }
 
             /*
@@ -481,6 +465,7 @@
         pdu = snmp_pdu_create(AGENTX_MSG_GETNEXT);
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         pdu = snmp_pdu_create(AGENTX_MSG_TESTSET);
         break;
@@ -504,6 +489,7 @@
     case MODE_SET_FREE:
         pdu = snmp_pdu_create(AGENTX_MSG_CLEANUPSET);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     default:
         snmp_log(LOG_WARNING,
@@ -615,12 +601,11 @@
     /*
      * send the requests out.
      */
-    DEBUGMSGTL(("agentx", "sending pdu (req=0x%x,trans=0x%x,sess=0x%x)\n",
-                pdu->reqid,pdu->transid, pdu->sessid));
+    DEBUGMSGTL(("agentx/master", "sending pdu (req=0x%x,trans=0x%x,sess=0x%x)\n",
+                (unsigned)pdu->reqid, (unsigned)pdu->transid, (unsigned)pdu->sessid));
     result = snmp_async_send(ax_session, pdu, agentx_got_response, cb_data);
-
-    if (result == 0 ) {
-        snmp_free_pdu( pdu );
+    if (result == 0) {
+        snmp_free_pdu(pdu);
     }
 
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/agentx/master.h b/agent/mibgroup/agentx/master.h
index b6a7f6b..a5dbfad 100644
--- a/agent/mibgroup/agentx/master.h
+++ b/agent/mibgroup/agentx/master.h
@@ -7,7 +7,6 @@
 config_require(agentx/client)
 config_require(agentx/master_admin)
 config_require(agentx/agentx_config)
-config_require(mibII/sysORTable)
 
      void            init_master(void);
      void            real_init_master(void);
diff --git a/agent/mibgroup/agentx/master_admin.c b/agent/mibgroup/agentx/master_admin.c
index 12ddb5d..4eaeab6 100644
--- a/agent/mibgroup/agentx/master_admin.c
+++ b/agent/mibgroup/agentx/master_admin.c
@@ -2,6 +2,7 @@
  *  AgentX Administrative request handling
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #ifdef HAVE_STRING_H
@@ -13,11 +14,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 +26,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
@@ -45,12 +39,14 @@
 #include <net-snmp/agent/agent_index.h>
 #include <net-snmp/agent/agent_trap.h>
 #include <net-snmp/agent/agent_callbacks.h>
-#include "mibII/sysORTable.h"
+#include <net-snmp/agent/agent_sysORTable.h>
 #include "master.h"
 
-extern struct timeval starttime;
-
-
+netsnmp_feature_require(unregister_mib_table_row)
+netsnmp_feature_require(trap_vars_with_context)
+netsnmp_feature_require(calculate_sectime_diff)
+netsnmp_feature_require(allocate_globalcacheid)
+netsnmp_feature_require(remove_index)
 
 netsnmp_session *
 find_agentx_session(netsnmp_session * session, int sessid)
@@ -68,9 +64,8 @@
 open_agentx_session(netsnmp_session * session, netsnmp_pdu *pdu)
 {
     netsnmp_session *sp;
-    struct timeval  now;
 
-    DEBUGMSGTL(("agentx/master", "open %08p\n", session));
+    DEBUGMSGTL(("agentx/master", "open %8p\n", session));
     sp = (netsnmp_session *) malloc(sizeof(netsnmp_session));
     if (sp == NULL) {
         session->s_snmp_errno = AGENTX_ERR_OPEN_FAILED;
@@ -108,8 +103,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 = (uint32_t)((netsnmp_get_agent_runtime() + 50) / 100) & 0x7fffffffL;
 
     sp->subsession = session;   /* link back to head */
     sp->flags |= SNMP_FLAGS_SUBSESSION;
@@ -117,7 +111,7 @@
     sp->flags |= (pdu->flags & AGENTX_MSG_FLAG_NETWORK_BYTE_ORDER);
     sp->next = session->subsession;
     session->subsession = sp;
-    DEBUGMSGTL(("agentx/master", "opened %08p = %d with flags = %02x\n",
+    DEBUGMSGTL(("agentx/master", "opened %8p = %ld with flags = %02lx\n",
                 sp, sp->sessid, sp->flags & AGENTX_MSG_FLAGS_MASK));
 
     return sp->sessid;
@@ -131,7 +125,7 @@
     if (!session)
         return AGENTX_ERR_NOT_OPEN;
 
-    DEBUGMSGTL(("agentx/master", "close %08p, %d\n", session, sessid));
+    DEBUGMSGTL(("agentx/master", "close %8p, %d\n", session, sessid));
     if (sessid == -1) {
         /*
          * The following is necessary to avoid locking up the agent when
@@ -149,9 +143,7 @@
                 
         unregister_mibs_by_session(session);
         unregister_index_by_session(session);
-        snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,
-                            SNMPD_CALLBACK_REQ_UNREG_SYSOR_SESS,
-                            (void*)session);
+        unregister_sysORTable_by_session(session);
 	SNMP_FREE(session->myvoid);
         return AGENTX_ERR_NOERROR;
     }
@@ -163,9 +155,7 @@
         if (sp->sessid == sessid) {
             unregister_mibs_by_session(sp);
             unregister_index_by_session(sp);
-            snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,
-                                SNMPD_CALLBACK_REQ_UNREG_SYSOR_SESS,
-                                (void*)sp);
+            unregister_sysORTable_by_session(sp);
 
             *prevNext = sp->next;
 
@@ -178,7 +168,7 @@
             free(sp);
             sp = NULL;
 
-            DEBUGMSGTL(("agentx/master", "closed %08p, %d okay\n",
+            DEBUGMSGTL(("agentx/master", "closed %8p, %d okay\n",
                         session, sessid));
             return AGENTX_ERR_NOERROR;
         }
@@ -233,7 +223,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
@@ -380,20 +370,17 @@
 add_agent_caps_list(netsnmp_session * session, netsnmp_pdu *pdu)
 {
     netsnmp_session *sp;
-    struct sysORTable parms;
+    char* description;
 
     sp = find_agentx_session(session, pdu->sessid);
     if (sp == NULL)
         return AGENTX_ERR_NOT_OPEN;
 
-    parms.OR_oid = pdu->variables->name;
-    parms.OR_oidlen = pdu->variables->name_length;
-    parms.OR_descr  = netsnmp_strdup_and_null(pdu->variables->val.string,
-                                              pdu->variables->val_len);
-    parms.OR_sess = sp;
-    snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,
-                        SNMPD_CALLBACK_REQ_REG_SYSOR, (void*)&parms);
-    free(parms.OR_descr);
+    description = netsnmp_strdup_and_null(pdu->variables->val.string,
+                                          pdu->variables->val_len);
+    register_sysORTable_sess(pdu->variables->name, pdu->variables->name_length,
+                             description, sp);
+    free(description);
     return AGENTX_ERR_NOERROR;
 }
 
@@ -401,32 +388,28 @@
 remove_agent_caps_list(netsnmp_session * session, netsnmp_pdu *pdu)
 {
     netsnmp_session *sp;
-    struct sysORTable parms;
+    int rc;
 
     sp = find_agentx_session(session, pdu->sessid);
     if (sp == NULL)
         return AGENTX_ERR_NOT_OPEN;
 
-    parms.OR_oid = pdu->variables->name;
-    parms.OR_oidlen = pdu->variables->name_length;
-    parms.OR_sess = sp;
-    snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,
-                        SNMPD_CALLBACK_REQ_UNREG_SYSOR, (void*)&parms);
-    /*
-     * no easy way to get an error code...
-     * if (rc < 0)
-     *   return AGENTX_ERR_UNKNOWN_AGENTCAPS;
-     */
+    rc = unregister_sysORTable_sess(pdu->variables->name,
+                                    pdu->variables->name_length, sp);
+
+    if (rc < 0)
+      return AGENTX_ERR_UNKNOWN_AGENTCAPS;
+
     return AGENTX_ERR_NOERROR;
 }
 
 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)
@@ -454,7 +437,18 @@
      *     as this is valid AgentX syntax.
      */
 
-    send_trap_vars(-1, -1, pdu->variables);
+	/* If a context name was specified, send the trap using that context.
+	 * Otherwise, send the trap without the context using the old method */
+	if (pdu->contextName != NULL)
+	{
+        send_trap_vars_with_context(-1, -1, pdu->variables, 
+                       pdu->contextName);
+	}
+	else
+	{
+        send_trap_vars(-1, -1, pdu->variables);
+	}
+
     return AGENTX_ERR_NOERROR;
 }
 
@@ -477,16 +471,19 @@
                             int reqid, netsnmp_pdu *pdu, void *magic)
 {
     netsnmp_agent_session *asp;
-    struct timeval  now;
 
     if (operation == NETSNMP_CALLBACK_OP_DISCONNECT) {
         DEBUGMSGTL(("agentx/master",
-                    "transport disconnect on session %08p\n", session));
+                    "transport disconnect on session %8p\n", session));
         /*
          * Shut this session down gracefully.  
          */
         close_agentx_session(session, -1);
         return 1;
+    } else if (operation == NETSNMP_CALLBACK_OP_CONNECT) {
+        DEBUGMSGTL(("agentx/master",
+                    "transport connect on session %8p\n", session));
+        return 1;
     } else if (operation != NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE) {
         DEBUGMSGTL(("agentx/master", "unexpected callback op %d\n",
                     operation));
@@ -503,8 +500,9 @@
         asp = init_agent_snmp_session(session, pdu);
     }
 
-    DEBUGMSGTL(("agentx/master", "handle pdu (req=0x%x,trans=0x%x,sess=0x%x)\n",
-                pdu->reqid,pdu->transid, pdu->sessid));
+    DEBUGMSGTL(("agentx/master", "handle pdu (req=0x%lx,trans=0x%lx,sess=0x%lx)\n",
+                (unsigned long)pdu->reqid, (unsigned long)pdu->transid,
+		(unsigned long)pdu->sessid));
     
     switch (pdu->command) {
     case AGENTX_MSG_OPEN:
@@ -575,13 +573,13 @@
         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%x,trans="
-                "0x%x,sess=0x%x)\n",
-                asp->status, pdu->reqid,pdu->transid, pdu->sessid));
+    DEBUGMSGTL(("agentx/master", "send response, stat %d (req=0x%lx,trans="
+                "0x%lx,sess=0x%lx)\n",
+                asp->status, (unsigned long)pdu->reqid,
+		(unsigned long)pdu->transid, (unsigned long)pdu->sessid));
     if (!snmp_send(asp->session, asp->pdu)) {
         char           *eb = NULL;
         int             pe, pse;
diff --git a/agent/mibgroup/agentx/protocol.c b/agent/mibgroup/agentx/protocol.c
index a482770..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"
@@ -135,7 +127,7 @@
 #endif
     }
     DEBUGDUMPSETUP("send", (*buf + ilen), 4);
-    DEBUGMSG(("dumpv_send", "  Integer:\t%lu (0x%.2lX)\n", ivalue,
+    DEBUGMSG(("dumpv_send", "  Integer:\t%u (0x%.2X)\n", ivalue,
               ivalue));
     return 1;
 }
@@ -168,7 +160,7 @@
 #endif
     }
     DEBUGDUMPSETUP("send", orig_bufp, 4);
-    DEBUGMSG(("dumpv_send", "  Integer:\t%ld (0x%.2X)\n", orig_val,
+    DEBUGMSG(("dumpv_send", "  Integer:\t%u (0x%.2X)\n", orig_val,
               orig_val));
 }
 
@@ -264,8 +256,8 @@
 
     DEBUGDUMPHEADER("send", "OID Header");
     DEBUGDUMPSETUP("send", (*buf + ilen), 4);
-    DEBUGMSG(("dumpv_send", "  # subids:\t%d (0x%.2X)\n", name_len,
-              name_len));
+    DEBUGMSG(("dumpv_send", "  # subids:\t%d (0x%.2X)\n", (int)name_len,
+              (unsigned int)name_len));
     DEBUGPRINTINDENT("dumpv_send");
     DEBUGMSG(("dumpv_send", "  prefix:\t%d (0x%.2X)\n", prefix, prefix));
     DEBUGPRINTINDENT("dumpv_send");
@@ -449,6 +441,7 @@
                                   vp->name, vp->name_length,
                                   network_order)) {
         DEBUGINDENTLESS();
+        DEBUGINDENTLESS();
         return 0;
     }
     DEBUGINDENTLESS();
@@ -488,7 +481,7 @@
     case ASN_OPAQUE_DOUBLE:
         DEBUGDUMPHEADER("send", "Build Opaque Double");
         DEBUGPRINTINDENT("dumpv_send");
-        DEBUGMSG(("dumpv_send", "  Double:\t%lf\n", *(vp->val.doubleVal)));
+        DEBUGMSG(("dumpv_send", "  Double:\t%f\n", *(vp->val.doubleVal)));
         if (!agentx_realloc_build_double
             (buf, buf_len, out_len, allow_realloc, *(vp->val.doubleVal),
              network_order)) {
@@ -548,6 +541,7 @@
                 DEBUGINDENTLESS();
                 return 0;
             }
+            DEBUGINDENTLESS();
         } else {
             DEBUGDUMPHEADER("send", "Build Counter64 (low, high)");
             if (!agentx_realloc_build_int
@@ -562,6 +556,7 @@
                 DEBUGINDENTLESS();
                 return 0;
             }
+            DEBUGINDENTLESS();
         }
         break;
 
@@ -699,6 +694,17 @@
         pdu->flags &= ~(AGENTX_MSG_FLAG_NON_DEFAULT_CONTEXT);
     }
 
+	/* We've received a PDU that has specified a context.  NetSNMP however, uses
+	 * the pdu->community field to specify context when using the AgentX
+	 * protocol.  Therefore we need to copy the context name and length into the
+	 * pdu->community and pdu->community_len fields, respectively. */
+	if (pdu->contextName != NULL && pdu->community == NULL)
+	{	
+		pdu->community     = (u_char *) strdup(pdu->contextName);
+		pdu->community_len = pdu->contextNameLen;
+		pdu->flags |= AGENTX_MSG_FLAG_NON_DEFAULT_CONTEXT;
+	}
+
     /*
      * Build the header (and context if appropriate).  
      */
@@ -902,7 +908,7 @@
         }
         DEBUGDUMPHEADER("send", "Response");
         DEBUGDUMPSETUP("send", (*buf + *out_len - 4), 4);
-        DEBUGMSG(("dumpv_send", "  sysUpTime:\t%d\n", pdu->time));
+        DEBUGMSG(("dumpv_send", "  sysUpTime:\t%lu\n", pdu->time));
         DEBUGINDENTLESS();
 
         if (!agentx_realloc_build_short
@@ -918,9 +924,9 @@
         }
         DEBUGDUMPHEADER("send", "Response errors");
         DEBUGDUMPSETUP("send", (*buf + *out_len - 4), 4);
-        DEBUGMSG(("dumpv_send", "  errstat:\t%d\n", pdu->errstat));
+        DEBUGMSG(("dumpv_send", "  errstat:\t%ld\n", pdu->errstat));
         DEBUGPRINTINDENT("dumpv_send");
-        DEBUGMSG(("dumpv_send", "  errindex:\t%d\n", pdu->errindex));
+        DEBUGMSG(("dumpv_send", "  errindex:\t%ld\n", pdu->errindex));
         DEBUGINDENTLESS();
 
         /*
@@ -1063,7 +1069,7 @@
         value += data[0];
 #endif
     }
-    DEBUGMSG(("dumpv_recv", "  Integer:\t%ld (0x%.2X)\n", value, value));
+    DEBUGMSG(("dumpv_recv", "  Integer:\t%u (0x%.2X)\n", value, value));
 
     return value;
 }
@@ -1094,7 +1100,7 @@
     }
 
     DEBUGDUMPSETUP("recv", data, 2);
-    DEBUGMSG(("dumpv_recv", "  Short:\t%ld (0x%.2X)\n", value, value));
+    DEBUGMSG(("dumpv_recv", "  Short:\t%hu (0x%.2X)\n", value, value));
     return value;
 }
 
@@ -1140,7 +1146,7 @@
     *length -= 4;
 
     DEBUGMSG(("djp", "  parse_oid\n"));
-    DEBUGMSG(("djp", "  sizeof(oid) = %d\n", sizeof(oid)));
+    DEBUGMSG(("djp", "  sizeof(oid) = %d\n", (int)sizeof(oid)));
     if (n_subid == 0 && prefix == 0) {
         /*
          * Null OID 
@@ -1158,7 +1164,9 @@
      */
     tmp_oid_len = (prefix ? n_subid + 5 : n_subid);
     if (*oid_len < tmp_oid_len) {
-        DEBUGMSGTL(("agentx", "Oversized Object ID\n"));
+        DEBUGMSGTL(("agentx", "Oversized Object ID (buf=%" NETSNMP_PRIz "d"
+		    " pdu=%d)\n", *oid_len, tmp_oid_len));
+        DEBUGINDENTLESS();
         return NULL;
     }
 
@@ -1169,6 +1177,7 @@
 #endif
     if (*length < 4 * n_subid) {
         DEBUGMSGTL(("agentx", "Incomplete Object ID\n"));
+        DEBUGINDENTLESS();
         return NULL;
     }
 
@@ -1227,14 +1236,14 @@
 
     if (*length < 4) {
         DEBUGMSGTL(("agentx", "Incomplete string (too short: %d)\n",
-                    *length));
+                    (int)*length));
         return NULL;
     }
 
     len = agentx_parse_int(data, network_byte_order);
     if (*length < len + 4) {
         DEBUGMSGTL(("agentx", "Incomplete string (still too short: %d)\n",
-                    *length));
+                    (int)*length));
         return NULL;
     }
     if (len > *str_len) {
@@ -1322,7 +1331,7 @@
         *opaque_len = sizeof(double);
         memcpy(opaque_buf, &fu.c[0], sizeof(double));
         *type = ASN_OPAQUE_DOUBLE;
-        DEBUGMSG(("dumpv_recv", "Double: %lf\n", fu.doubleVal));
+        DEBUGMSG(("dumpv_recv", "Double: %f\n", fu.doubleVal));
         return cp;
 
     case ASN_OPAQUE_I64:
@@ -1345,8 +1354,6 @@
 {
     u_char         *bufp = data;
     u_int           int_val;
-    int            int_offset;
-    u_int          *int_ptr = (u_int *) data_buf;
     struct counter64 tmp64;
 
     DEBUGDUMPHEADER("recv", "VarBind:");
@@ -1401,16 +1408,16 @@
 
     case ASN_COUNTER64:
         memset(&tmp64, 0, sizeof(tmp64));
-        if (network_byte_order) {
-            tmp64.high = agentx_parse_int(bufp,   network_byte_order);
-            tmp64.low  = agentx_parse_int(bufp+4, network_byte_order);
-        } else {
-            tmp64.high = agentx_parse_int(bufp+4, network_byte_order);
-            tmp64.low  = agentx_parse_int(bufp,   network_byte_order);
-        }
+	if (network_byte_order) {
+	    tmp64.high = agentx_parse_int(bufp,   network_byte_order);
+	    tmp64.low  = agentx_parse_int(bufp+4, network_byte_order);
+	} else {
+	    tmp64.high = agentx_parse_int(bufp+4, network_byte_order);
+	    tmp64.low  = agentx_parse_int(bufp,   network_byte_order);
+	}
 
         memcpy(data_buf, &tmp64, sizeof(tmp64));
-        *data_len = sizeof(tmp64);
+	*data_len = sizeof(tmp64);
 	bufp    += 8;
 	*length -= 8;
         break;
@@ -1529,6 +1536,7 @@
     DEBUGINDENTLESS();
     bufp += 4;
 
+    DEBUGINDENTLESS();
     *length -= 20;
     if (*length != payload) {   /* Short payload */
         return NULL;
@@ -1604,11 +1612,21 @@
         pdu->community_len = buf_len;
         snmp_clone_mem((void **) &pdu->community,
                        (void *) buffer, (unsigned) buf_len);
+		
+		/* The NetSNMP API stuffs the context into the PDU's community string
+		 * field, when using the AgentX Protocol.  The rest of the code however,
+		 * expects to find the context in the PDU's context field.  Therefore we
+		 * need to copy the context into the PDU's context fields.  */
+		if (pdu->community_len > 0 && pdu->contextName == NULL)
+		{
+			pdu->contextName    = strdup((char *) pdu->community);
+			pdu->contextNameLen = pdu->community_len;
+		}
+
         buf_len = sizeof(buffer);
     }
 
     DEBUGDUMPHEADER("recv", "PDU");
-    DEBUGINDENTMORE();
     switch (pdu->command) {
     case AGENTX_MSG_OPEN:
         pdu->time = *bufp;      /* Timeout */
@@ -1621,7 +1639,8 @@
         DEBUGDUMPHEADER("recv", "Subagent OID");
         bufp = agentx_parse_oid(bufp, length, NULL,
                                 oid_buffer, &oid_buf_len,
-                                pdu->flags & AGENTX_FLAGS_NETWORK_BYTE_ORDER);
+                                pdu->
+                                flags & AGENTX_FLAGS_NETWORK_BYTE_ORDER);
         DEBUGINDENTLESS();
         if (bufp == NULL) {
             DEBUGINDENTLESS();
@@ -1629,7 +1648,8 @@
         }
         DEBUGDUMPHEADER("recv", "Subagent Description");
         bufp = agentx_parse_string(bufp, length, buffer, &buf_len,
-                                   pdu->flags &
+                                   pdu->
+                                   flags &
                                    AGENTX_FLAGS_NETWORK_BYTE_ORDER);
         DEBUGINDENTLESS();
         if (bufp == NULL) {
@@ -1872,14 +1892,11 @@
 
     default:
         DEBUGINDENTLESS();
-        DEBUGINDENTLESS();
         DEBUGMSGTL(("agentx", "Unrecognised PDU type: %d\n",
                     pdu->command));
         return SNMPERR_UNKNOWN_PDU;
     }
     DEBUGINDENTLESS();
-    DEBUGINDENTLESS();
-    DEBUGINDENTLESS();
     return SNMP_ERR_NOERROR;
 }
 
diff --git a/agent/mibgroup/agentx/subagent.c b/agent/mibgroup/agentx/subagent.c
index 312d8da..1f9d31c 100644
--- a/agent/mibgroup/agentx/subagent.c
+++ b/agent/mibgroup/agentx/subagent.c
@@ -2,17 +2,14 @@
  *  AgentX sub-agent
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #ifdef HAVE_STDLIB_H
 #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 +18,6 @@
 #  include <time.h>
 # endif
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
@@ -46,12 +40,16 @@
 #include "agentx/agentx_config.h"
 #include <net-snmp/agent/agent_callbacks.h>
 #include <net-snmp/agent/agent_trap.h>
-#ifdef USING_MIBII_SYSORTABLE_MODULE
-#include "mibII/sysORTable.h"
-#endif
+#include <net-snmp/agent/sysORTable.h>
+#include <net-snmp/agent/agent_sysORTable.h>
 
 #include "subagent.h"
 
+netsnmp_feature_child_of(agentx_subagent, agentx_all)
+netsnmp_feature_child_of(agentx_enable_subagent, agentx_subagent)
+
+netsnmp_feature_require(remove_trap_session)
+
 #ifdef USING_AGENTX_SUBAGENT_MODULE
 
 static SNMPCallback subagent_register_ping_alarm;
@@ -61,10 +59,12 @@
 int             handle_subagent_response(int op, netsnmp_session * session,
                                          int reqid, netsnmp_pdu *pdu,
                                          void *magic);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int             handle_subagent_set_response(int op,
                                              netsnmp_session * session,
                                              int reqid, netsnmp_pdu *pdu,
                                              void *magic);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 void            subagent_startup_callback(unsigned int clientreg,
                                           void *clientarg);
 int             subagent_open_master_session(void);
@@ -164,18 +164,19 @@
     return rc;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_AGENTX_ENABLE_SUBAGENT
 void
 netsnmp_enable_subagent(void) {
     netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE,
                            SUB_AGENT);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_AGENTX_ENABLE_SUBAGENT */
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct agent_netsnmp_set_info *
 save_set_vars(netsnmp_session * ss, netsnmp_pdu *pdu)
 {
     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));
@@ -188,8 +189,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) {
@@ -241,6 +241,7 @@
         prev = ptr;
     }
 }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 static void
 send_agentx_error(netsnmp_session *session, netsnmp_pdu *pdu, int errstat, int errindex)
@@ -331,8 +332,9 @@
      * ok, we have a pdu from the net. Modify as needed 
      */
 
-    DEBUGMSGTL(("agentx/subagent", "handling agentx request (req=0x%x,trans="
-                "0x%x,sess=0x%x)\n", pdu->reqid,pdu->transid, pdu->sessid));
+    DEBUGMSGTL(("agentx/subagent", "handling AgentX request (req=0x%x,trans="
+                "0x%x,sess=0x%x)\n", (unsigned)pdu->reqid,
+		(unsigned)pdu->transid, (unsigned)pdu->sessid));
     pdu->version = AGENTX_VERSION_1;
     pdu->flags |= UCD_MSG_FLAG_ALWAYS_IN_VIEW;
 
@@ -403,6 +405,7 @@
         DEBUGMSGTL(("agentx/subagent", "  -> response\n"));
         return 1;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case AGENTX_MSG_TESTSET:
         /*
          * XXXWWW we have to map this twice to both RESERVE1 and RESERVE2 
@@ -480,6 +483,7 @@
         mycallback = handle_subagent_set_response;
         retmagic = asi;
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
 
     default:
         SNMP_FREE(smagic);
@@ -499,14 +503,14 @@
      */
 
     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;
     result = snmp_async_send(agentx_callback_sess, internal_pdu, mycallback,
                     retmagic);
     if (result == 0) {
-        snmp_free_pdu(internal_pdu);
+        snmp_free_pdu( internal_pdu );
     }
     return 1;
 }
@@ -545,14 +549,19 @@
 
     pdu = snmp_clone_pdu(pdu);
     DEBUGMSGTL(("agentx/subagent",
-                "handling AgentX response (cmd 0x%02x orig_cmd 0x%02x)\n",
-                pdu->command, smagic->original_command));
+                "handling AgentX response (cmd 0x%02x orig_cmd 0x%02x)"
+                " (req=0x%x,trans=0x%x,sess=0x%x)\n",
+                pdu->command, smagic->original_command,
+                (unsigned)pdu->reqid, (unsigned)pdu->transid,
+                (unsigned)pdu->sessid));
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     if (pdu->command == SNMP_MSG_INTERNAL_SET_FREE ||
         pdu->command == SNMP_MSG_INTERNAL_SET_UNDO ||
         pdu->command == SNMP_MSG_INTERNAL_SET_COMMIT) {
         free_set_vars(smagic->session, pdu);
     }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     if (smagic->original_command == AGENTX_MSG_GETNEXT) {
         DEBUGMSGTL(("agentx/subagent",
@@ -584,7 +593,7 @@
                      * set to `endOfMibView'".  
                      */
                     snmp_set_var_objid(v, u->name, u->name_length);
-                    snmp_set_var_typed_value(v, SNMP_ENDOFMIBVIEW, 0, 0);
+                    snmp_set_var_typed_value(v, SNMP_ENDOFMIBVIEW, NULL, 0);
                     DEBUGMSGTL(("agentx/subagent",
                                 "scope violation -- return endOfMibView\n"));
                 }
@@ -614,13 +623,14 @@
     return 1;
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 handle_subagent_set_response(int op, netsnmp_session * session, int reqid,
                              netsnmp_pdu *pdu, void *magic)
 {
     netsnmp_session *retsess;
     struct agent_netsnmp_set_info *asi;
-    int    result;
+    int result;
 
     if (op != NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE || magic == NULL) {
         return 1;
@@ -629,7 +639,8 @@
     DEBUGMSGTL(("agentx/subagent",
                 "handling agentx subagent set response (mode=%d,req=0x%x,"
                 "trans=0x%x,sess=0x%x)\n",
-                pdu->command, pdu->reqid,pdu->transid, pdu->sessid));
+                (unsigned)pdu->command, (unsigned)pdu->reqid,
+		(unsigned)pdu->transid, (unsigned)pdu->sessid));
     pdu = snmp_clone_pdu(pdu);
 
     asi = (struct agent_netsnmp_set_info *) magic;
@@ -648,7 +659,7 @@
             result = snmp_async_send(agentx_callback_sess, pdu,
                             handle_subagent_set_response, asi);
             if (result == 0) {
-                snmp_free_pdu(pdu);
+                snmp_free_pdu( pdu );
             }
             DEBUGMSGTL(("agentx/subagent",
                         "  going from RESERVE1 -> RESERVE2\n"));
@@ -674,7 +685,7 @@
     DEBUGMSGTL(("agentx/subagent", "  FINISHED\n"));
     return 1;
 }
-
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 
 int
@@ -683,7 +694,7 @@
 {
     struct register_parameters *reg_parms =
         (struct register_parameters *) serverarg;
-    netsnmp_session *agentx_ss = (netsnmp_session *) clientarg;
+    netsnmp_session *agentx_ss = *(netsnmp_session **)clientarg;
 
     if (minorID == SNMPD_CALLBACK_REGISTER_OID)
         return agentx_register(agentx_ss,
@@ -703,14 +714,13 @@
 }
 
 
-#ifdef USING_MIBII_SYSORTABLE_MODULE
-int
+static int
 agentx_sysOR_callback(int majorID, int minorID, void *serverarg,
                       void *clientarg)
 {
-    struct register_sysOR_parameters *reg_parms =
-        (struct register_sysOR_parameters *) serverarg;
-    netsnmp_session *agentx_ss = (netsnmp_session *) clientarg;
+    const struct register_sysOR_parameters *reg_parms =
+        (const struct register_sysOR_parameters *) serverarg;
+    netsnmp_session *agentx_ss = *(netsnmp_session **)clientarg;
 
     if (minorID == SNMPD_CALLBACK_REG_SYSOR)
         return agentx_add_agentcaps(agentx_ss,
@@ -721,13 +731,12 @@
                                        reg_parms->name,
                                        reg_parms->namelen);
 }
-#endif
 
 
 static int
 subagent_shutdown(int majorID, int minorID, void *serverarg, void *clientarg)
 {
-    netsnmp_session *thesession = (netsnmp_session *)clientarg;
+    netsnmp_session *thesession = *(netsnmp_session **)clientarg;
     DEBUGMSGTL(("agentx/subagent", "shutting down session....\n"));
     if (thesession == NULL) {
 	DEBUGMSGTL(("agentx/subagent", "Empty session to shutdown\n"));
@@ -755,24 +764,29 @@
 void
 agentx_register_callbacks(netsnmp_session * s)
 {
+    netsnmp_session *sess_p;
+
     DEBUGMSGTL(("agentx/subagent",
                 "registering callbacks for session %p\n", s));
+    sess_p = netsnmp_memdup(&s, sizeof(s));
+    netsnmp_assert(sess_p);
+    s->myvoid = sess_p;
+    if (!sess_p)
+        return;
     snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_SHUTDOWN,
-                           subagent_shutdown, s);
+                           subagent_shutdown, sess_p);
     snmp_register_callback(SNMP_CALLBACK_APPLICATION,
                            SNMPD_CALLBACK_REGISTER_OID,
-                           agentx_registration_callback, s);
+                           agentx_registration_callback, sess_p);
     snmp_register_callback(SNMP_CALLBACK_APPLICATION,
                            SNMPD_CALLBACK_UNREGISTER_OID,
-                           agentx_registration_callback, s);
-#ifdef USING_MIBII_SYSORTABLE_MODULE
+                           agentx_registration_callback, sess_p);
     snmp_register_callback(SNMP_CALLBACK_APPLICATION,
                            SNMPD_CALLBACK_REG_SYSOR,
-                           agentx_sysOR_callback, s);
+                           agentx_sysOR_callback, sess_p);
     snmp_register_callback(SNMP_CALLBACK_APPLICATION,
                            SNMPD_CALLBACK_UNREG_SYSOR,
-                           agentx_sysOR_callback, s);
-#endif
+                           agentx_sysOR_callback, sess_p);
 }
 
 /*
@@ -785,22 +799,20 @@
     DEBUGMSGTL(("agentx/subagent",
                 "unregistering callbacks for session %p\n", ss));
     snmp_unregister_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_SHUTDOWN,
-                             subagent_shutdown, ss, 1);
+                             subagent_shutdown, ss->myvoid, 1);
     snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
                              SNMPD_CALLBACK_REGISTER_OID,
-                             agentx_registration_callback, ss, 1);
+                             agentx_registration_callback, ss->myvoid, 1);
     snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
                              SNMPD_CALLBACK_UNREGISTER_OID,
-                             agentx_registration_callback, ss, 1);
-#ifdef USING_MIBII_SYSORTABLE_MODULE
+                             agentx_registration_callback, ss->myvoid, 1);
     snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
                              SNMPD_CALLBACK_REG_SYSOR,
-                             agentx_sysOR_callback, ss, 1);
+                             agentx_sysOR_callback, ss->myvoid, 1);
     snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
                              SNMPD_CALLBACK_UNREG_SYSOR,
-                             agentx_sysOR_callback, ss, 1);
-#endif
-
+                             agentx_sysOR_callback, ss->myvoid, 1);
+    SNMP_FREE(ss->myvoid);
 }
 
 /*
@@ -914,6 +926,14 @@
     return 0;
 }
 
+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);
+}
 
 /*
  * Alarm callback function to open a session to the master agent.  If a
@@ -942,15 +962,20 @@
         register_mib_reattach();
 
         /*
+         * Reregister all our sysOREntries
+         */
+        netsnmp_sysORTable_foreach(&agentx_reopen_sysORTable, main_session);
+
+        /*
          * Register a ping alarm (if need be).  
          */
-        subagent_register_ping_alarm(0, 0, 0, main_session);
+        subagent_register_ping_alarm(0, 0, NULL, main_session);
     } else {
         if (clientreg == 0) {
             /*
              * Register a reattach alarm for later 
              */
-            subagent_register_ping_alarm(0, 0, 0, main_session);
+            subagent_register_ping_alarm(0, 0, NULL, main_session);
         }
     }
 }
diff --git a/agent/mibgroup/default_modules.h b/agent/mibgroup/default_modules.h
index 7f953d3..fc5f26a 100644
--- a/agent/mibgroup/default_modules.h
+++ b/agent/mibgroup/default_modules.h
@@ -5,6 +5,13 @@
 /* these go into both the mini agent and the full agent */
 config_require(snmpv3mibs)
 
+/* very few default mibs */
+config_add_mib(SNMPv2-MIB)
+config_add_mib(IF-MIB)
+config_add_mib(IP-MIB)
+config_add_mib(TCP-MIB)
+config_add_mib(UDP-MIB)
+
 #ifdef NETSNMP_MINI_AGENT
 
 /* limit the mibII modules to the bare minimum */
@@ -13,14 +20,6 @@
 config_require(mibII/sysORTable)
 config_require(mibII/vacm_vars)
 config_require(mibII/vacm_conf)
-config_require(utilities/execute)
-
-/* very few default mibs */
-config_add_mib(SNMPv2-MIB)
-config_add_mib(IF-MIB)
-config_add_mib(IP-MIB)
-config_add_mib(TCP-MIB)
-config_add_mib(UDP-MIB)
 
 #else /* !NETSNMP_MINI_AGENT == the full shabang */
 
@@ -32,22 +31,21 @@
 config_require(agent_mibs)
 config_require(agentx)
 config_require(disman/event)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 config_require(disman/schedule)
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 config_require(utilities)
 
 /* default MIBs to auto-include for parsing */
 /* NOTE: we consider these MIBs users will likely want to load by
    default, even if they're not supporting it in the agent (ie, the
    command line tools need to load them anyway) */
-config_add_mib(SNMPv2-MIB)
-config_add_mib(IF-MIB)
-config_add_mib(IP-MIB)
-config_add_mib(TCP-MIB)
-config_add_mib(UDP-MIB)
 config_add_mib(HOST-RESOURCES-MIB)
 config_add_mib(NOTIFICATION-LOG-MIB)
 config_add_mib(DISMAN-EVENT-MIB)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 config_add_mib(DISMAN-SCHEDULE-MIB)
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 /* architecture specific extra modules */
 /* these symbols are set in the host specific net-snmp/system/<os>.h files */
diff --git a/agent/mibgroup/deliver/deliverByNotify.c b/agent/mibgroup/deliver/deliverByNotify.c
new file mode 100644
index 0000000..c89879a
--- /dev/null
+++ b/agent/mibgroup/deliver/deliverByNotify.c
@@ -0,0 +1,475 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <limits.h>
+
+netsnmp_feature_require(container_fifo)
+
+#include "deliverByNotify.h"
+
+/* we should never split beyond this */
+#define MAX_MESSAGE_COUNT 128
+#define BASE_PACKET_SIZE 100 /* should be enough to store SNMPv3 msg headers */
+
+/* if v is !NULL, then estimate it's likely size */
+#define ESTIMATE_VAR_SIZE(v) (v?(v->name_length + v->val_len + 8):0)
+
+void parse_deliver_config(const char *, char *);
+void parse_deliver_maxsize_config(const char *, char *);
+void parse_data_notification_oid_config(const char *, char *);
+void parse_periodic_time_oid_config(const char *, char *);
+void parse_message_number_oid_config(const char *, char *);
+void parse_max_message_number_oid_config(const char *, char *);
+void free_deliver_config(void);
+
+static void _schedule_next_execute_time(void);
+
+oid    data_notification_oid[MAX_OID_LEN]
+       = { 1, 3, 6, 1, 4, 1, 8072, 3, 1, 5, 4, 0, 1 };
+size_t data_notification_oid_len = 13;
+
+oid    netsnmp_periodic_time_oid[MAX_OID_LEN]
+       = { 1, 3, 6, 1, 4, 1, 8072, 3, 1, 5, 3, 1, 0 };
+size_t netsnmp_periodic_time_oid_len = 13;
+
+oid    netsnmp_message_number_oid[MAX_OID_LEN]
+       = { 1, 3, 6, 1, 4, 1, 8072, 3, 1, 5, 3, 2, 0 };
+size_t netsnmp_message_number_oid_len = 13;
+
+oid    netsnmp_max_message_number_oid[MAX_OID_LEN]
+       = { 1, 3, 6, 1, 4, 1, 8072, 3, 1, 5, 3, 3, 0 };
+size_t netsnmp_max_message_number_oid_len = 13;
+
+oid objid_snmptrap[] = { 1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0 };
+
+#define DEFAULT_MAX_DELIVER_SIZE -1;
+static int default_max_size;
+unsigned int alarm_reg;
+static netsnmp_container *deliver_container;
+
+static int
+_deliver_compare(deliver_by_notify *lhs, deliver_by_notify *rhs) {
+    /* sort by the next_run time */
+    if (lhs->next_run < rhs->next_run)
+        return -1;
+    else
+        return 1;
+}
+
+/** Initializes the mteTrigger module */
+void
+init_deliverByNotify(void)
+{
+    /* register the config tokens */
+    snmpd_register_config_handler("deliverByNotify",
+                                  &parse_deliver_config, &free_deliver_config,
+                                  "[-p] [-m] [-s maxsize] FREQUENCY OID");
+
+    snmpd_register_config_handler("deliverByNotifyMaxPacketSize",
+                                  &parse_deliver_maxsize_config, NULL,
+                                  "sizeInBytes");
+
+    snmpd_register_config_handler("deliverByNotifyOid",
+                                  &parse_data_notification_oid_config,
+                                  NULL, /* XXX: reset to default */
+                                  "OID");
+
+    snmpd_register_config_handler("deliverByNotifyFrequencyOid",
+                                  &parse_periodic_time_oid_config,
+                                  NULL, /* XXX: reset to default */
+                                  "OID");
+
+    snmpd_register_config_handler("deliverByNotifyMessageNumberOid",
+                                  &parse_message_number_oid_config,
+                                  NULL, /* XXX: reset to default */
+                                  "OID");
+
+    snmpd_register_config_handler("deliverByNotifyMaxMessageNumberOid",
+                                  &parse_max_message_number_oid_config,
+                                  NULL, /* XXX: reset to default */
+                                  "OID");
+
+    /* create the container to store the config objects*/
+    deliver_container = netsnmp_container_find("deliverByNotify:fifo");
+    if (NULL == deliver_container) {
+        snmp_log(LOG_ERR,
+                 "deliverByNotify: failed to initialize our data container\n");
+        return;
+    }
+    deliver_container->container_name = strdup("deliverByNotify");
+    deliver_container->compare = (netsnmp_container_compare *) _deliver_compare;
+
+    /* set the defaults */
+    default_max_size = DEFAULT_MAX_DELIVER_SIZE;
+
+    alarm_reg = 0;
+}
+
+void
+_parse_config_oid(const char *token, char *line,
+                  oid *oid_store, size_t *oid_store_len) {
+    size_t tmp_len = MAX_OID_LEN;
+    /* parse the OID given */
+
+    if (!snmp_parse_oid(line, oid_store, &tmp_len)) {
+        char buf[SPRINT_MAX_LEN];
+        snprintf(buf, SPRINT_MAX_LEN-1, "unknown %s OID: %s", token, line);
+        config_perror(buf);
+        return;
+    }
+
+    *oid_store_len = tmp_len;
+}
+
+void
+parse_data_notification_oid_config(const char *token, char *line) {
+    _parse_config_oid(token, line,
+                      data_notification_oid, &data_notification_oid_len);
+}
+
+void
+parse_periodic_time_oid_config(const char *token, char *line) {
+    _parse_config_oid(token, line,
+                      netsnmp_periodic_time_oid, &netsnmp_periodic_time_oid_len);
+}
+
+void
+parse_message_number_oid_config(const char *token, char *line) {
+    _parse_config_oid(token, line,
+                      netsnmp_message_number_oid,
+                      &netsnmp_message_number_oid_len);
+}
+
+void
+parse_max_message_number_oid_config(const char *token, char *line) {
+    _parse_config_oid(token, line,
+                      netsnmp_max_message_number_oid,
+                      &netsnmp_max_message_number_oid_len);
+}
+
+void
+parse_deliver_config(const char *token, char *line) {
+    const char *cp = line;
+    char buf[SPRINT_MAX_LEN];
+    size_t buf_len = SPRINT_MAX_LEN;
+    int max_size = DEFAULT_MAX_DELIVER_SIZE;
+    int frequency;
+    oid target_oid[MAX_OID_LEN];
+    size_t target_oid_len = MAX_OID_LEN;
+    deliver_by_notify *new_notify = NULL;
+    int flags = 0;
+
+    while(cp && *cp == '-') {
+        switch (*(cp+1)) {
+        case 's':
+            cp = skip_token_const(cp);
+            if (!cp) {
+                config_perror("no argument given to -s");
+                return;
+            }
+            max_size = atoi(cp);
+            break;
+
+        case 'p':
+            flags = flags | NETSNMP_DELIVER_NO_PERIOD_OID;
+            break;
+
+        case 'm':
+            flags = flags | NETSNMP_DELIVER_NO_MSG_COUNTS;
+            break;
+
+        default:
+            config_perror("unknown flag");
+            return;
+        }
+        cp = skip_token_const(cp);
+    }
+
+    if (!cp) {
+        config_perror("no frequency given");
+        return;
+    }
+    copy_nword(cp, buf, buf_len);
+    frequency = netsnmp_string_time_to_secs(buf);
+    cp = skip_token_const(cp);
+
+    if (frequency <= 0) {
+        config_perror("illegal frequency given");
+        return;
+    }
+
+    if (!cp) {
+        config_perror("no OID given");
+        return;
+    }
+
+    /* parse the OID given */
+    if (!snmp_parse_oid(cp, target_oid, &target_oid_len)) {
+        config_perror("unknown deliverByNotify OID");
+        DEBUGMSGTL(("deliverByNotify", "The OID with the problem: %s\n", cp));
+        return;
+    }
+
+    /* set up the object to store all the data */
+    new_notify = SNMP_MALLOC_TYPEDEF(deliver_by_notify);
+    new_notify->frequency = frequency;
+    new_notify->max_packet_size = max_size;
+    new_notify->last_run = time(NULL);
+    new_notify->next_run = new_notify->last_run + frequency;
+    new_notify->flags = flags;
+
+    new_notify->target = malloc(target_oid_len * sizeof(oid));
+    new_notify->target_len = target_oid_len;
+    memcpy(new_notify->target, target_oid, target_oid_len*sizeof(oid));
+
+    /* XXX: need to do the whole container */
+    snmp_alarm_register(calculate_time_until_next_run(new_notify, NULL), 0, 
+                        &deliver_execute, NULL);
+
+    /* add it to the container */
+    CONTAINER_INSERT(deliver_container, new_notify);
+    _schedule_next_execute_time();
+}
+
+void
+parse_deliver_maxsize_config(const char *token, char *line) {
+    default_max_size = atoi(line);
+}
+
+static void
+_free_deliver_obj(deliver_by_notify *obj, void *context) {
+    netsnmp_assert_or_return(obj != NULL, );
+    SNMP_FREE(obj->target);
+    SNMP_FREE(obj);
+}
+
+void
+free_deliver_config(void) {
+    default_max_size = DEFAULT_MAX_DELIVER_SIZE;
+    CONTAINER_CLEAR(deliver_container,
+                    (netsnmp_container_obj_func *) _free_deliver_obj, NULL);
+    if (alarm_reg) {
+        snmp_alarm_unregister(alarm_reg);
+        alarm_reg = 0;
+    }
+}
+
+void
+deliver_execute(unsigned int clientreg, void *clientarg) {
+    netsnmp_variable_list *vars, *walker, *deliver_notification, *vartmp;
+    netsnmp_variable_list *ready_for_delivery[MAX_MESSAGE_COUNT];
+    netsnmp_session *sess;
+    int rc, i;
+    deliver_by_notify *obj;
+    netsnmp_iterator *iterator;
+    time_t            now = time(NULL);
+    u_long            message_count, max_message_count, tmp_long;
+    u_long           *max_message_count_ptrs[MAX_MESSAGE_COUNT];
+    size_t            estimated_pkt_size;
+
+    DEBUGMSGTL(("deliverByNotify", "Starting the execute routine\n"));
+
+    /* XXX: need to do the whole container */
+    iterator = CONTAINER_ITERATOR(deliver_container);
+    netsnmp_assert_or_return(iterator != NULL,);
+
+    sess = netsnmp_query_get_default_session();
+
+    for(obj = ITERATOR_FIRST(iterator); obj;
+        obj = ITERATOR_NEXT(iterator)) {
+
+        /* check if we need to run this one yet */
+        if (obj->next_run > now)
+            continue;
+
+        max_message_count = 1;
+        message_count = 0;
+
+        /* fill the varbind list with the target object */
+        vars = SNMP_MALLOC_TYPEDEF( netsnmp_variable_list );
+        snmp_set_var_objid( vars, obj->target, obj->target_len );
+        vars->type = ASN_NULL;
+
+        /* walk the OID tree for the data */
+        rc = netsnmp_query_walk(vars, sess);
+        if (rc != SNMP_ERR_NOERROR) {
+            /* XXX: disable? and reset the next query time point! */
+            snmp_log(LOG_ERR, "deliverByNotify: failed to issue the query");
+            ITERATOR_RELEASE(iterator);
+            return;
+        }
+
+        walker = vars;
+
+        while (walker) {
+
+            /* Set up the notification itself */
+            deliver_notification = NULL;
+            estimated_pkt_size = BASE_PACKET_SIZE;
+
+            /* add in the notification type */
+            snmp_varlist_add_variable(&deliver_notification,
+                                      objid_snmptrap, OID_LENGTH(objid_snmptrap),
+                                      ASN_OBJECT_ID,
+                                      data_notification_oid,
+                                      data_notification_oid_len * sizeof(oid));
+            estimated_pkt_size += ESTIMATE_VAR_SIZE(deliver_notification);
+
+            /* add in the current message number in this sequence */
+            if (!(obj->flags & NETSNMP_DELIVER_NO_PERIOD_OID)) {
+                tmp_long = obj->frequency;
+                snmp_varlist_add_variable(&deliver_notification,
+                                          netsnmp_periodic_time_oid,
+                                          netsnmp_periodic_time_oid_len,
+                                          ASN_UNSIGNED,
+                                          (const void *) &tmp_long,
+                                          sizeof(tmp_long));
+                estimated_pkt_size += ESTIMATE_VAR_SIZE(deliver_notification);
+            }
+
+            /* add in the current message number in this sequence */
+            message_count++;
+            if (message_count > MAX_MESSAGE_COUNT) {
+                snmp_log(LOG_ERR, "delivery construct grew too large...  giving up\n");
+                /* XXX: disable it */
+                /* XXX: send a notification about it? */
+                ITERATOR_RELEASE(iterator);
+                return;
+            }
+
+            /* store this for later updating and sending */
+            ready_for_delivery[message_count-1] = deliver_notification;
+
+            if (!(obj->flags & NETSNMP_DELIVER_NO_MSG_COUNTS)) {
+                snmp_varlist_add_variable(&deliver_notification,
+                                          netsnmp_message_number_oid,
+                                          netsnmp_message_number_oid_len,
+                                          ASN_UNSIGNED,
+                                          (const void *) &message_count,
+                                          sizeof(message_count));
+                estimated_pkt_size += ESTIMATE_VAR_SIZE(deliver_notification);
+
+                /* add in the max message number count for this sequence */
+                vartmp = snmp_varlist_add_variable(&deliver_notification,
+                                                   netsnmp_max_message_number_oid,
+                                                   netsnmp_max_message_number_oid_len,
+                                                   ASN_UNSIGNED,
+                                                   (const void *) &max_message_count,
+                                                   sizeof(max_message_count));
+                estimated_pkt_size += ESTIMATE_VAR_SIZE(deliver_notification);
+
+                /* we'll need to update this counter later */
+                max_message_count_ptrs[message_count-1] =
+                    (u_long *) vartmp->val.integer;
+            } else {
+                /* just to be sure */
+                max_message_count_ptrs[message_count-1] = NULL;
+            }
+            
+            /* copy in the collected data */
+            while(walker) {
+                snmp_varlist_add_variable(&deliver_notification,
+                                          walker->name, walker->name_length,
+                                          walker->type,
+                                          walker->val.string, walker->val_len);
+
+                /* 8 byte padding for ASN encodings an a few extra OID bytes */
+                estimated_pkt_size += ESTIMATE_VAR_SIZE(walker);
+
+                walker = walker->next_variable;
+
+                /* if the current size PLUS the next one (which is now
+                   in 'walker') is greater than the limet then we stop here */
+                if (obj->max_packet_size > 0 &&
+                    estimated_pkt_size +
+                    ESTIMATE_VAR_SIZE(walker) >=
+                    obj->max_packet_size) {
+                    break;
+                }
+            }
+
+            /* send out the notification */
+            send_v2trap(deliver_notification);
+        }
+
+        for(i = 0; i < message_count; i++) {
+            /* update the max count pointer */
+            if (max_message_count_ptrs[i])
+                *(max_message_count_ptrs[i]) = message_count;
+            
+            send_v2trap(ready_for_delivery[i]);
+            snmp_free_varbind(ready_for_delivery[i]);
+        }
+
+        snmp_free_varbind(vars);
+
+        /* record this as the time processed */
+        /* XXX: this may creep by a few seconds when processing and maybe we want
+           to do the time stamp at the beginning? */
+        obj->last_run = time(NULL);
+    }
+    ITERATOR_RELEASE(iterator);
+
+    /* calculate the next time to sleep for */
+    _schedule_next_execute_time();
+}
+
+int
+calculate_time_until_next_run(deliver_by_notify *it, time_t *now) {
+    time_t          local_now;
+
+    /* if we weren't passed a valid time, fake it */
+    if (NULL == now) {
+        now = &local_now;
+        time(&local_now);
+    }
+
+    netsnmp_assert_or_return(it->last_run != 0, -1);
+
+    /* set the timestamp for the next run */
+    it->next_run = it->last_run + it->frequency;
+
+    /* how long until the next run? */
+    return it->next_run - *now;
+}
+
+static void
+_schedule_next_execute_time(void) {
+    time_t             local_now = time(NULL);
+    int                sleep_for = INT_MAX;
+    int                next_time;
+    netsnmp_iterator  *iterator;
+    deliver_by_notify *obj;
+
+    DEBUGMSGTL(("deliverByNotify", "Calculating scheduling needed\n"));
+
+    if (alarm_reg) {
+        snmp_alarm_unregister(alarm_reg);
+        alarm_reg = 0;
+    }
+
+    iterator = CONTAINER_ITERATOR(deliver_container);
+    if (NULL == iterator)
+        return;
+
+    for(obj = ITERATOR_FIRST(iterator); obj;
+        obj = ITERATOR_NEXT(iterator)) {
+        next_time = calculate_time_until_next_run(obj, &local_now);
+        DEBUGMSGTL(("deliverByNotify", "  obj: %d (last=%d, next_run=%d)\n", next_time, obj->last_run, obj->next_run));
+        if (next_time < sleep_for)
+            sleep_for = next_time;
+    }
+
+    if (sleep_for != INT_MAX) {
+        if (sleep_for < 1)
+            sleep_for = 1; /* give at least a small pause */
+        DEBUGMSGTL(("deliverByNotify", "Next execution in %d (max = %d) seconds\n",
+                    sleep_for, INT_MAX));
+        alarm_reg = snmp_alarm_register(sleep_for, 0, &deliver_execute, NULL);
+    }
+
+    ITERATOR_RELEASE(iterator);
+}
+
diff --git a/agent/mibgroup/deliver/deliverByNotify.h b/agent/mibgroup/deliver/deliverByNotify.h
new file mode 100644
index 0000000..292c366
--- /dev/null
+++ b/agent/mibgroup/deliver/deliverByNotify.h
@@ -0,0 +1,40 @@
+#ifndef DELIVERBYNOTIFY_H
+#define DELIVERBYNOTIFY_H 1
+
+#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+#  include <sys/time.h>
+# else
+#  include <time.h>
+# endif
+#endif
+
+config_add_mib(NET-SNMP-PERIODIC-NOTIFY-MIB)
+
+void init_deliverByNotify(void);
+
+void parse_deliver_config(const char *, char *);
+void free_deliver_config(void);
+
+SNMPAlarmCallback deliver_execute;
+
+#define NETSNMP_DELIVER_NO_PERIOD_OID   0x01
+#define NETSNMP_DELIVER_NO_MSG_COUNTS   0x02
+
+/* implementation details */
+typedef struct deliver_by_notify_s {
+   int     frequency;
+   int     last_run;
+   int     next_run;
+   oid    *target;
+   size_t  target_len;
+   int     max_packet_size;
+   int     flags;
+} deliver_by_notify;
+
+int calculate_time_until_next_run(deliver_by_notify *it, time_t *now);
+
+#endif /* deliverByNotify_h */
diff --git a/agent/mibgroup/disman.h b/agent/mibgroup/disman.h
index 80f3e1f..6b7cdd5 100644
--- a/agent/mibgroup/disman.h
+++ b/agent/mibgroup/disman.h
@@ -3,7 +3,10 @@
  */
 config_require(disman/event-mib)
 config_require(disman/expression-mib)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+/* the schedule mib is all about writing (SETs) */ 
 config_require(disman/schedule)
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 /* config_require(disman/nslookup-mib)   */
 /* config_require(disman/ping-mib)       */
 /* config_require(disman/traceroute-mib) */
diff --git a/agent/mibgroup/disman/event/mteEvent.c b/agent/mibgroup/disman/event/mteEvent.c
index 327f8ba..bc4ff0b 100644
--- a/agent/mibgroup/disman/event/mteEvent.c
+++ b/agent/mibgroup/disman/event/mteEvent.c
@@ -4,12 +4,17 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteEvent.h"
 #include "disman/event/mteTrigger.h"
 #include "disman/event/mteObjects.h"
 
+netsnmp_feature_child_of(disman_debugging, libnetsnmpmibs)
+netsnmp_feature_child_of(mteevent, libnetsnmpmibs)
+netsnmp_feature_child_of(mteevent_removeentry, mteevent)
+
 netsnmp_tdata *event_table_data;
 
     /*
@@ -23,7 +28,7 @@
     DEBUGMSGTL(("disman:event:init", "init event container\n"));
     if (!event_table_data) {
         event_table_data = netsnmp_tdata_create_table("mteEventTable", 0);
-        DEBUGMSGTL(("disman:event:init", "create event container (%x)\n",
+        DEBUGMSGTL(("disman:event:init", "create event container (%p)\n",
                                       event_table_data));
     }
 }
@@ -43,12 +48,12 @@
 
     /*
      * Insert fixed events for the default trigger notifications
-     *
+     * 
      * NB: internal events (with an owner of "_snmpd") will not in
      * fact refer to the mteObjectsTable for the payload varbinds.
-     * The routine mteObjects_internal_vblist() hardcodes the
+     * The routine mteObjects_internal_vblist() hardcodes the 
      * appropriate varbinds for these internal events.
-     *   This routine will need to be updated whenever a new
+     *   This routine will need to be updated whenever a new 
      * internal event is added.
      */
     if ( _defaults_init)
@@ -119,6 +124,7 @@
      *
      * =================================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_DISMAN_DEBUGGING
 void
 _mteEvent_dump(void)
 {
@@ -135,12 +141,12 @@
         DEBUGMSG(("disman:event:dump", "(%s, %s)",
                                          row->indexes->val.string,
                                          row->indexes->next_variable->val.string));
-        DEBUGMSG(("disman:event:dump", ": %x, %x\n", row, entry));
+        DEBUGMSG(("disman:event:dump", ": %p, %p\n", row, entry));
         i++;
     }
     DEBUGMSGTL(("disman:event:dump", "EventTable %d entries\n", i));
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_DISMAN_DEBUGGING */
 
 /*
  * Create a new row in the event table 
@@ -196,6 +202,7 @@
 }
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_MTEEVENT_REMOVEENTRY
 /*
  * Remove a row from the event table 
  */
@@ -208,9 +215,9 @@
         return;                 /* Nothing to remove */
     entry = (struct mteEvent *)
         netsnmp_tdata_remove_and_delete_row(event_table_data, row);
-    if (entry)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_MTEEVENT_REMOVEENTRY */
 
     /* ===================================================
      *
@@ -222,10 +229,12 @@
 _mteEvent_fire_notify( struct mteEvent    *event,
                        struct mteTrigger  *trigger,
                        oid *suffix, size_t sfx_len );
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 _mteEvent_fire_set(    struct mteEvent    *event,
                        struct mteTrigger  *trigger,
                        oid *suffix, size_t sfx_len );
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 int
 mteEvent_fire( char *owner, char *event,      /* Event to invoke    */
@@ -261,11 +270,13 @@
         _mteEvent_fire_notify( entry, trigger, suffix, s_len );
         fired = 1;
     }
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     if (entry->mteEventActions & MTE_EVENT_SET) {
         DEBUGMSGTL(("disman:event:fire", "Firing set event\n"));
         _mteEvent_fire_set( entry, trigger, suffix, s_len );
         fired = 1;
     }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     if (!fired)
         DEBUGMSGTL(("disman:event:fire", "Matched event is empty\n"));
@@ -330,7 +341,7 @@
     vp->next_variable     = vblist->next_variable;
     vblist->next_variable = var;
 }
-#endif
+#endif /* __NOT_NEEDED */
 
 int
 _mteEvent_fire_notify( struct mteEvent   *entry,     /* The event to fire  */
@@ -338,9 +349,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
@@ -421,7 +432,7 @@
         } else {
             for (v2 = var; v2 && v2->next_variable; v2=v2->next_variable)
                 ;
-            mteObjects_internal_vblist(v2,  entry->mteNotifyObjects, trigger, s);
+            mteObjects_internal_vblist(v2, entry->mteNotifyObjects, trigger, s);
         }
     }
 
@@ -434,6 +445,7 @@
 }
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 _mteEvent_fire_set( struct mteEvent   *entry,      /* The event to fire */
                     struct mteTrigger *trigger,    /* Trigger that fired */
@@ -477,4 +489,4 @@
 
     /* XXX - Need to check result */
 }
-
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
diff --git a/agent/mibgroup/disman/event/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..24192a6 100644
--- a/agent/mibgroup/disman/event/mteEventConf.c
+++ b/agent/mibgroup/disman/event/mteEventConf.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/agent_callbacks.h>
@@ -11,6 +12,7 @@
 #include "disman/event/mteEvent.h"
 #include "disman/event/mteEventConf.h"
 
+netsnmp_feature_require(iquery)
 
 /** Initializes the mteEventsConf module */
 void
@@ -469,7 +471,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 +501,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 +522,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 +541,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/mteEventNotificationTable.c b/agent/mibgroup/disman/event/mteEventNotificationTable.c
index 5892fb7..7d2c94a 100644
--- a/agent/mibgroup/disman/event/mteEventNotificationTable.c
+++ b/agent/mibgroup/disman/event/mteEventNotificationTable.c
@@ -7,11 +7,19 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteEvent.h"
 #include "disman/event/mteEventNotificationTable.h"
 
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(check_vb_oid)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
 
 /* Initializes the mteEventNotificationTable module */
 void
@@ -20,7 +28,6 @@
     static oid  mteEventNotificationTable_oid[]   = { 1, 3, 6, 1, 2, 1, 88, 1, 4, 3 };
     size_t      mteEventNotificationTable_oid_len = OID_LENGTH(mteEventNotificationTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
 
     /*
      * Ensure the (combined) table container is available...
@@ -30,11 +37,19 @@
     /*
      * ... then set up the MIB interface to the mteEventNotificationTable slice
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteEventNotificationTable",
                                             mteEventNotificationTable_handler,
                                             mteEventNotificationTable_oid,
                                             mteEventNotificationTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteEventNotificationTable",
+                                            mteEventNotificationTable_handler,
+                                            mteEventNotificationTable_oid,
+                                            mteEventNotificationTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -48,10 +63,18 @@
 
     /* Register this using the (common) event_table_data container */
     netsnmp_tdata_register(reg, event_table_data, table_info);
-    DEBUGMSGTL(("disman:event:init", "Event Notify Table container (%x)\n",
+    DEBUGMSGTL(("disman:event:init", "Event Notify Table container (%p)\n",
                                       event_table_data));
 }
 
+void
+shutdown_mteEventNotificationTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
 
 
 /** handles requests for the mteEventNotificationTable table */
@@ -109,6 +132,8 @@
         }
         break;
 
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -235,6 +260,7 @@
             }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/disman/event/mteEventNotificationTable.h b/agent/mibgroup/disman/event/mteEventNotificationTable.h
index be2bcc6..abd6110 100644
--- a/agent/mibgroup/disman/event/mteEventNotificationTable.h
+++ b/agent/mibgroup/disman/event/mteEventNotificationTable.h
@@ -9,6 +9,7 @@
  * function declarations 
  */
 void            init_mteEventNotificationTable(void);
+void            shutdown_mteEventNotificationTable(void);
 Netsnmp_Node_Handler mteEventNotificationTable_handler;
 
 /*
diff --git a/agent/mibgroup/disman/event/mteEventSetTable.c b/agent/mibgroup/disman/event/mteEventSetTable.c
index 3646144..ee696f1 100644
--- a/agent/mibgroup/disman/event/mteEventSetTable.c
+++ b/agent/mibgroup/disman/event/mteEventSetTable.c
@@ -7,11 +7,20 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteEvent.h"
 #include "disman/event/mteEventSetTable.h"
 
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(check_vb_oid)
+netsnmp_feature_require(check_vb_truthvalue)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
 
 /* Initializes the mteEventSetTable module */
 void
@@ -20,7 +29,6 @@
     static oid  mteEventSetTable_oid[]   = { 1, 3, 6, 1, 2, 1, 88, 1, 4, 4 };
     size_t      mteEventSetTable_oid_len = OID_LENGTH(mteEventSetTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
 
     /*
      * Ensure the (combined) table container is available...
@@ -30,11 +38,19 @@
     /*
      * ... then set up the MIB interface to the mteEventSetTable slice
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteEventSetTable",
                                             mteEventSetTable_handler,
                                             mteEventSetTable_oid,
                                             mteEventSetTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteEventSetTable",
+                                            mteEventSetTable_handler,
+                                            mteEventSetTable_oid,
+                                            mteEventSetTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -48,10 +64,19 @@
 
     /* Register this using the (common) event_table_data container */
     netsnmp_tdata_register(reg, event_table_data, table_info);
-    DEBUGMSGTL(("disman:event:init", "Event Set Table container (%x)\n",
+    DEBUGMSGTL(("disman:event:init", "Event Set Table container (%p)\n",
                                       event_table_data));
 }
 
+void
+shutdown_mteEventSetTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
+
 
 /** handles requests for the mteEventSetTable table */
 int
@@ -123,6 +148,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -278,6 +304,7 @@
             }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/disman/event/mteEventSetTable.h b/agent/mibgroup/disman/event/mteEventSetTable.h
index b8cb124..71ec09a 100644
--- a/agent/mibgroup/disman/event/mteEventSetTable.h
+++ b/agent/mibgroup/disman/event/mteEventSetTable.h
@@ -9,6 +9,7 @@
  * function declarations 
  */
 void            init_mteEventSetTable(void);
+void            shutdown_mteEventSetTable(void);
 Netsnmp_Node_Handler mteEventSetTable_handler;
 
 /*
diff --git a/agent/mibgroup/disman/event/mteEventTable.c b/agent/mibgroup/disman/event/mteEventTable.c
index 19fe0a1..c5b534e 100644
--- a/agent/mibgroup/disman/event/mteEventTable.c
+++ b/agent/mibgroup/disman/event/mteEventTable.c
@@ -7,12 +7,24 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "utilities/iquery.h"
 #include "disman/event/mteEvent.h"
 #include "disman/event/mteEventTable.h"
 
+netsnmp_feature_require(iquery)
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(iquery_pdu_session)
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(mteevent_removeentry)
+netsnmp_feature_require(check_vb_truthvalue)
+netsnmp_feature_require(table_tdata_insert_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
 
 /* Initializes the mteEventTable module */
 void
@@ -21,7 +33,6 @@
     static oid  mteEventTable_oid[]   = { 1, 3, 6, 1, 2, 1, 88, 1, 4, 2 };
     size_t      mteEventTable_oid_len = OID_LENGTH(mteEventTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
 
     /*
      * Ensure the (combined) table container is available...
@@ -31,11 +42,19 @@
     /*
      * ... then set up the MIB interface to the mteEventTable slice
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteEventTable",
                                             mteEventTable_handler,
                                             mteEventTable_oid,
                                             mteEventTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteEventTable",
+                                            mteEventTable_handler,
+                                            mteEventTable_oid,
+                                            mteEventTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -49,10 +68,18 @@
 
     /* Register this using the (common) event_table_data container */
     netsnmp_tdata_register(reg, event_table_data, table_info);
-    DEBUGMSGTL(("disman:event:init", "Event Table container (%x)\n",
+    DEBUGMSGTL(("disman:event:init", "Event Table container (%p)\n",
                                       event_table_data));
 }
 
+void
+shutdown_mteEventTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
 
 /** handles requests for the mteEventTable table */
 int
@@ -111,6 +138,8 @@
         }
         break;
 
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -338,6 +367,8 @@
             }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
     }
     DEBUGMSGTL(("disman:event:mib", "Table handler, done\n"));
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/disman/event/mteEventTable.h b/agent/mibgroup/disman/event/mteEventTable.h
index a7d7560..adc1c30 100644
--- a/agent/mibgroup/disman/event/mteEventTable.h
+++ b/agent/mibgroup/disman/event/mteEventTable.h
@@ -9,6 +9,7 @@
  * function declarations 
  */
 void            init_mteEventTable(void);
+void            shutdown_mteEventTable(void);
 Netsnmp_Node_Handler mteEventTable_handler;
 
 /*
diff --git a/agent/mibgroup/disman/event/mteObjects.c b/agent/mibgroup/disman/event/mteObjects.c
index 123af7f..cf950c1 100644
--- a/agent/mibgroup/disman/event/mteObjects.c
+++ b/agent/mibgroup/disman/event/mteObjects.c
@@ -236,8 +236,7 @@
         return;                 /* Nothing to remove */
     entry = (struct mteObject *)
         netsnmp_tdata_remove_and_delete_row(objects_table_data, row);
-    if (entry)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 
diff --git a/agent/mibgroup/disman/event/mteObjectsConf.c b/agent/mibgroup/disman/event/mteObjectsConf.c
index 3f9293c..7679865 100644
--- a/agent/mibgroup/disman/event/mteObjectsConf.c
+++ b/agent/mibgroup/disman/event/mteObjectsConf.c
@@ -62,7 +62,7 @@
     line  = read_config_read_data(ASN_OCTET_STR, line, &vp,    &len);
     line  = read_config_read_data(ASN_UNSIGNED,  line, &index, &len);
 
-    DEBUGMSG(("disman:event:conf", "(%s, %s, %d) ", owner, oname, index));
+    DEBUGMSG(("disman:event:conf", "(%s, %s, %lu) ", owner, oname, index));
 
     row   = mteObjects_createEntry( owner, oname, index, 0 );
     /* entry = (struct mteObject *)netsnmp_tdata_row_entry( row ); */
@@ -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;
@@ -131,16 +131,16 @@
         if ( entry->flags & MTE_OBJECT_FLAG_FIXED )
             continue;
 
-        DEBUGMSGTL(("disman:event:conf", "  Storing (%s %s %d)\n",
+        DEBUGMSGTL(("disman:event:conf", "  Storing (%s %s %ld)\n",
                          entry->mteOwner, entry->mteOName, entry->mteOIndex));
         memset(line, 0, sizeof(line));
         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..f7f6e02 100644
--- a/agent/mibgroup/disman/event/mteObjectsTable.c
+++ b/agent/mibgroup/disman/event/mteObjectsTable.c
@@ -7,11 +7,21 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteObjects.h"
 #include "disman/event/mteObjectsTable.h"
 
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_oid)
+netsnmp_feature_require(check_vb_truthvalue)
+netsnmp_feature_require(table_tdata_insert_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
+
 /** Initializes the mteObjectsTable module */
 void
 init_mteObjectsTable(void)
@@ -20,7 +30,6 @@
     static oid mteObjectsTable_oid[] = { 1, 3, 6, 1, 2, 1, 88, 1, 3, 1 };
     size_t     mteObjectsTable_oid_len = OID_LENGTH(mteObjectsTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
 
     /*
      * Ensure the object table container is available...
@@ -30,11 +39,19 @@
     /*
      * ... then set up the MIB interface to this table
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteObjectsTable",
                                             mteObjectsTable_handler,
                                             mteObjectsTable_oid,
                                             mteObjectsTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteObjectsTable",
+                                            mteObjectsTable_handler,
+                                            mteObjectsTable_oid,
+                                            mteObjectsTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -50,6 +67,15 @@
     netsnmp_tdata_register(reg, objects_table_data, table_info);
 }
 
+void
+shutdown_mteObjectsTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
+
 
 /** handles requests for the mteObjectsTable table */
 int
@@ -105,6 +131,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -309,7 +336,12 @@
                 }
             }
         }
+
+        /** set up to save persistent store */
+        snmp_store_needed(NULL);
+
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/disman/event/mteObjectsTable.h b/agent/mibgroup/disman/event/mteObjectsTable.h
index 14bfb26..f5cd7bc 100644
--- a/agent/mibgroup/disman/event/mteObjectsTable.h
+++ b/agent/mibgroup/disman/event/mteObjectsTable.h
@@ -9,6 +9,7 @@
  * function declarations 
  */
 void            init_mteObjectsTable(void);
+void            shutdown_mteObjectsTable(void);
 Netsnmp_Node_Handler mteObjectsTable_handler;
 
 /*
diff --git a/agent/mibgroup/disman/event/mteTrigger.c b/agent/mibgroup/disman/event/mteTrigger.c
index 11cb5b7..5a0dcba 100644
--- a/agent/mibgroup/disman/event/mteTrigger.c
+++ b/agent/mibgroup/disman/event/mteTrigger.c
@@ -4,11 +4,16 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteTrigger.h"
 #include "disman/event/mteEvent.h"
 
+netsnmp_feature_child_of(disman_debugging, libnetsnmpmibs)
+netsnmp_feature_child_of(mtetrigger, libnetsnmpmibs)
+netsnmp_feature_child_of(mtetrigger_removeentry, mtetrigger)
+
 netsnmp_tdata *trigger_table_data;
 
 oid    _sysUpTime_instance[] = { 1, 3, 6, 1, 2, 1, 1, 3, 0 };
@@ -31,7 +36,7 @@
             snmp_log(LOG_ERR, "failed to create mteTriggerTable");
             return;
         }
-        DEBUGMSGTL(("disman:event:init", "create trigger container (%x)\n",
+        DEBUGMSGTL(("disman:event:init", "create trigger container (%p)\n",
                                           trigger_table_data));
     }
     mteTriggerFailures = 0;
@@ -53,6 +58,7 @@
      *
      * =================================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_DISMAN_DEBUGGING
 void
 _mteTrigger_dump(void)
 {
@@ -69,12 +75,12 @@
         DEBUGMSG(("disman:event:dump", "(%s, %s)",
                                          row->indexes->val.string,
                                          row->indexes->next_variable->val.string));
-        DEBUGMSG(("disman:event:dump", ": %x, %x\n", row, entry));
+        DEBUGMSG(("disman:event:dump", ": %p, %p\n", row, entry));
         i++;
     }
     DEBUGMSGTL(("disman:event:dump", "TriggerTable %d entries\n", i));
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_DISMAN_DEBUGGING */
 
 /*
  * Create a new row in the trigger table 
@@ -142,6 +148,7 @@
     return row;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_MTETRIGGER_REMOVEENTRY
 /*
  * Remove a row from the trigger table 
  */
@@ -159,6 +166,7 @@
         SNMP_FREE(entry);
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_MTETRIGGER_REMOVEENTRY */
 
     /* ===================================================
      *
diff --git a/agent/mibgroup/disman/event/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/mteTriggerBooleanTable.c b/agent/mibgroup/disman/event/mteTriggerBooleanTable.c
index ad469d7..ed1ec30 100644
--- a/agent/mibgroup/disman/event/mteTriggerBooleanTable.c
+++ b/agent/mibgroup/disman/event/mteTriggerBooleanTable.c
@@ -7,11 +7,19 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteTrigger.h"
 #include "disman/event/mteTriggerBooleanTable.h"
 
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(check_vb_truthvalue)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the mteTriggerBooleanTable module */
 void
@@ -20,7 +28,6 @@
     static oid mteTBoolTable_oid[]    = { 1, 3, 6, 1, 2, 1, 88, 1, 2, 5 };
     size_t     mteTBoolTable_oid_len  = OID_LENGTH(mteTBoolTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
 
     /*
      * Ensure the (combined) table container is available...
@@ -30,11 +37,19 @@
     /*
      * ... then set up the MIB interface to the mteTriggerBooleanTable slice
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteTriggerBooleanTable",
                                             mteTriggerBooleanTable_handler,
                                             mteTBoolTable_oid,
                                             mteTBoolTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteTriggerBooleanTable",
+                                            mteTriggerBooleanTable_handler,
+                                            mteTBoolTable_oid,
+                                            mteTBoolTable_oid_len,
+                                            HANDLER_CAN_RWRITE);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -51,6 +66,14 @@
     DEBUGMSGTL(("disman:event:init", "Trigger Bool Table\n"));
 }
 
+void
+shutdown_mteTriggerBooleanTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
 
 /** handles requests for the mteTriggerBooleanTable table */
 int
@@ -128,6 +151,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -285,6 +309,7 @@
             }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/disman/event/mteTriggerBooleanTable.h b/agent/mibgroup/disman/event/mteTriggerBooleanTable.h
index d2d2dcb..f2ddd77 100644
--- a/agent/mibgroup/disman/event/mteTriggerBooleanTable.h
+++ b/agent/mibgroup/disman/event/mteTriggerBooleanTable.h
@@ -9,6 +9,7 @@
  * function declarations 
  */
 void            init_mteTriggerBooleanTable(void);
+void            shutdown_mteTriggerBooleanTable(void);
 Netsnmp_Node_Handler mteTriggerBooleanTable_handler;
 
 /*
diff --git a/agent/mibgroup/disman/event/mteTriggerConf.c b/agent/mibgroup/disman/event/mteTriggerConf.c
index c015e24..e7bb69b 100644
--- a/agent/mibgroup/disman/event/mteTriggerConf.c
+++ b/agent/mibgroup/disman/event/mteTriggerConf.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/agent_callbacks.h>
@@ -14,6 +15,7 @@
 
 #include <ctype.h>
 
+netsnmp_feature_require(iquery)
 
 /** Initializes the mteTriggerConf module */
 void
@@ -24,13 +26,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 +145,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 +168,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 +188,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 +203,7 @@
             case 'r':
             case 'u':
                 /* skip option parameter */
-                cp = skip_token( cp );
+                cp = skip_token_const( cp );
                 break;
             case 'D':
             case 'I':
@@ -212,7 +217,7 @@
                  *      Handle either case.
                  */
                 if (cp && *cp != '-')
-                    cp = skip_token( cp );
+                    cp = skip_token_const( cp );
                 break;
             case '0':
             case '1':
@@ -276,7 +281,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 +289,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 +320,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 +337,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 +351,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 +372,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 +384,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 +395,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 +411,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 +452,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 +460,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 +470,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 +492,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 +506,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 +694,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 +734,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 +753,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 +1273,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 +1303,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 +1316,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 +1342,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 +1367,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 +1393,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 +1404,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 +1421,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 +1437,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/mteTriggerDeltaTable.c b/agent/mibgroup/disman/event/mteTriggerDeltaTable.c
index e092982..c2c2e8e 100644
--- a/agent/mibgroup/disman/event/mteTriggerDeltaTable.c
+++ b/agent/mibgroup/disman/event/mteTriggerDeltaTable.c
@@ -7,11 +7,17 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteTrigger.h"
 #include "disman/event/mteTriggerDeltaTable.h"
 
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_oid)
+netsnmp_feature_require(check_vb_truthvalue)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /** Initializes the mteTriggerDeltaTable module */
 void
@@ -21,6 +27,7 @@
     size_t      mteTDeltaTable_oid_len = OID_LENGTH(mteTDeltaTable_oid);
     netsnmp_handler_registration    *reg;
     netsnmp_table_registration_info *table_info;
+    int         rc;
 
     /*
      * Ensure the (combined) table container is available...
@@ -30,11 +37,19 @@
     /*
      * ... then set up the MIB interface to the mteTriggerDeltaTable slice
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteTriggerDeltaTable",
                                             mteTriggerDeltaTable_handler,
                                             mteTDeltaTable_oid,
                                             mteTDeltaTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteTriggerDeltaTable",
+                                            mteTriggerDeltaTable_handler,
+                                            mteTDeltaTable_oid,
+                                            mteTDeltaTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -47,7 +62,10 @@
     table_info->max_column = COLUMN_MTETRIGGERDELTADISCONTINUITYIDTYPE;
 
     /* Register this using the (common) trigger_table_data container */
-    netsnmp_tdata_register(reg, trigger_table_data, table_info);
+    rc = netsnmp_tdata_register(reg, trigger_table_data, table_info);
+    if (rc != SNMPERR_SUCCESS)
+        return;
+    netsnmp_handler_owns_table_info(reg->handler->next);
     DEBUGMSGTL(("disman:event:init", "Trigger Delta Table\n"));
 }
 
@@ -109,6 +127,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -248,6 +267,7 @@
             }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/disman/event/mteTriggerExistenceTable.c b/agent/mibgroup/disman/event/mteTriggerExistenceTable.c
index 25026ee..22b683e 100644
--- a/agent/mibgroup/disman/event/mteTriggerExistenceTable.c
+++ b/agent/mibgroup/disman/event/mteTriggerExistenceTable.c
@@ -7,11 +7,18 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteTrigger.h"
 #include "disman/event/mteTriggerExistenceTable.h"
 
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
 
 /* Initializes the mteTriggerExistenceTable module */
 void
@@ -20,7 +27,7 @@
     static oid mteTExistTable_oid[]   = { 1, 3, 6, 1, 2, 1, 88, 1, 2, 4 };
     size_t     mteTExistTable_oid_len = OID_LENGTH(mteTExistTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
+    int        rc;
 
     /*
      * Ensure the (combined) table container is available...
@@ -30,11 +37,19 @@
     /*
      * ... then set up the MIB interface to the mteTriggerExistenceTable slice
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteTriggerExistenceTable",
                                             mteTriggerExistenceTable_handler,
                                             mteTExistTable_oid,
                                             mteTExistTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteTriggerExistenceTable",
+                                            mteTriggerExistenceTable_handler,
+                                            mteTExistTable_oid,
+                                            mteTExistTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -47,7 +62,11 @@
     table_info->max_column = COLUMN_MTETRIGGEREXISTENCEEVENT;
 
     /* Register this using the (common) trigger_table_data container */
-    netsnmp_tdata_register(reg, trigger_table_data, table_info);
+    rc = netsnmp_tdata_register(reg, trigger_table_data, table_info);
+    if (rc != SNMPERR_SUCCESS)
+        return;
+
+    netsnmp_handler_owns_table_info(reg->handler->next);
     DEBUGMSGTL(("disman:event:init", "Trigger Exist Table\n"));
 }
 
@@ -123,6 +142,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -264,6 +284,7 @@
             }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/disman/event/mteTriggerTable.c b/agent/mibgroup/disman/event/mteTriggerTable.c
index 6239612..88c2f8b 100644
--- a/agent/mibgroup/disman/event/mteTriggerTable.c
+++ b/agent/mibgroup/disman/event/mteTriggerTable.c
@@ -7,12 +7,27 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "utilities/iquery.h"
 #include "disman/event/mteTrigger.h"
 #include "disman/event/mteTriggerTable.h"
 
+netsnmp_feature_require(iquery)
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(iquery_pdu_session)
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(check_vb_oid)
+netsnmp_feature_require(check_vb_uint)
+netsnmp_feature_require(mtetrigger_removeentry)
+netsnmp_feature_require(check_vb_truthvalue)
+netsnmp_feature_require(table_tdata_insert_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the mteTriggerTable module */
 void
@@ -21,7 +36,6 @@
     static oid  mteTriggerTable_oid[]   = { 1, 3, 6, 1, 2, 1, 88, 1, 2, 2 };
     size_t      mteTriggerTable_oid_len = OID_LENGTH(mteTriggerTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
 
     /*
      * Ensure the (combined) table container is available...
@@ -31,11 +45,19 @@
     /*
      * ... then set up the MIB interface to the mteTriggerTable slice
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteTriggerTable",
                                             mteTriggerTable_handler,
                                             mteTriggerTable_oid,
                                             mteTriggerTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteTriggerTable",
+                                            mteTriggerTable_handler,
+                                            mteTriggerTable_oid,
+                                            mteTriggerTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -52,6 +74,15 @@
     DEBUGMSGTL(("disman:event:init", "Trigger Table\n"));
 }
 
+void
+shutdown_mteTriggerTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
+
 
 /** handles requests for the mteTriggerTable table */
 int
@@ -152,6 +183,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -463,7 +495,14 @@
                 break;
             }
         }
+
+        /** set up to save persistent store */
+        snmp_store_needed(NULL);
+
         break;
+
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/disman/event/mteTriggerTable.h b/agent/mibgroup/disman/event/mteTriggerTable.h
index e382612..c5c393a 100644
--- a/agent/mibgroup/disman/event/mteTriggerTable.h
+++ b/agent/mibgroup/disman/event/mteTriggerTable.h
@@ -11,6 +11,7 @@
  * function declarations 
  */
 void            init_mteTriggerTable(void);
+void            shutdown_mteTriggerTable(void);
 Netsnmp_Node_Handler mteTriggerTable_handler;
 
 /*
diff --git a/agent/mibgroup/disman/event/mteTriggerThresholdTable.c b/agent/mibgroup/disman/event/mteTriggerThresholdTable.c
index 1f6649e..5aed0c8 100644
--- a/agent/mibgroup/disman/event/mteTriggerThresholdTable.c
+++ b/agent/mibgroup/disman/event/mteTriggerThresholdTable.c
@@ -7,11 +7,18 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/event/mteTrigger.h"
 #include "disman/event/mteTriggerThresholdTable.h"
 
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the mteTriggerThresholdTable module */
 void
@@ -20,7 +27,6 @@
     static oid mteTThreshTable_oid[]   = { 1, 3, 6, 1, 2, 1, 88, 1, 2, 6 };
     size_t     mteTThreshTable_oid_len = OID_LENGTH(mteTThreshTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
 
     /*
      * Ensure the (combined) table container is available...
@@ -30,11 +36,19 @@
     /*
      * ... then set up the MIB interface to the mteTriggerThresholdTable slice
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     reg = netsnmp_create_handler_registration("mteTriggerThresholdTable",
                                             mteTriggerThresholdTable_handler,
                                             mteTThreshTable_oid,
                                             mteTThreshTable_oid_len,
                                             HANDLER_CAN_RWRITE);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg = netsnmp_create_handler_registration("mteTriggerThresholdTable",
+                                            mteTriggerThresholdTable_handler,
+                                            mteTThreshTable_oid,
+                                            mteTThreshTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     netsnmp_table_helper_add_indexes(table_info,
@@ -51,6 +65,15 @@
     DEBUGMSGTL(("disman:event:init", "Trigger Threshold Table\n"));
 }
 
+void
+shutdown_mteTriggerThresholdTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
+
 
 /** handles requests for the mteTriggerThresholdTable table */
 int
@@ -165,6 +188,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * Write-support
          */
@@ -358,6 +382,8 @@
             }
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
     }
     return SNMP_ERR_NOERROR;
 }
diff --git a/agent/mibgroup/disman/event/mteTriggerThresholdTable.h b/agent/mibgroup/disman/event/mteTriggerThresholdTable.h
index 282cc67..80f5f2a 100644
--- a/agent/mibgroup/disman/event/mteTriggerThresholdTable.h
+++ b/agent/mibgroup/disman/event/mteTriggerThresholdTable.h
@@ -9,6 +9,7 @@
  * function declarations 
  */
 void            init_mteTriggerThresholdTable(void);
+void            shutdown_mteTriggerThresholdTable(void);
 Netsnmp_Node_Handler mteTriggerThresholdTable_handler;
 
 /*
diff --git a/agent/mibgroup/disman/expr/expErrorTable.c b/agent/mibgroup/disman/expr/expErrorTable.c
index 41bbe29..a759e2d 100644
--- a/agent/mibgroup/disman/expr/expErrorTable.c
+++ b/agent/mibgroup/disman/expr/expErrorTable.c
@@ -7,11 +7,14 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/expr/expExpression.h"
 #include "disman/expr/expErrorTable.h"
 
+netsnmp_feature_require(table_tdata)
+
 /* Initializes the expExpressionErrorTable module */
 void
 init_expErrorTable(void)
@@ -48,7 +51,7 @@
 
     /* Register this using the (common) expr_table_data container */
     netsnmp_tdata_register(reg, expr_table_data, table_info);
-    DEBUGMSGTL(("disman:expr:init", "Expression Error Table container (%x)\n",
+    DEBUGMSGTL(("disman:expr:init", "Expression Error Table container (%p)\n",
                                      expr_table_data));
 }
 
diff --git a/agent/mibgroup/disman/expr/expExpression.c b/agent/mibgroup/disman/expr/expExpression.c
index 1c24b78..c924141 100644
--- a/agent/mibgroup/disman/expr/expExpression.c
+++ b/agent/mibgroup/disman/expr/expExpression.c
@@ -21,7 +21,7 @@
     DEBUGMSGTL(("disman:expr:init", "init expression container\n"));
     if (!expr_table_data) {
          expr_table_data = netsnmp_tdata_create_table("expExpressionTable", 0);
-         DEBUGMSGTL(("disman:expr:init", "create expression container (%x)\n",
+         DEBUGMSGTL(("disman:expr:init", "create expression container (%p)\n",
                                           expr_table_data));
     }
 }
@@ -57,7 +57,7 @@
         DEBUGMSG(("disman:expr:dump", "(%s, %s)",
                                          row->indexes->val.string,
                                          row->indexes->next_variable->val.string));
-        DEBUGMSG(("disman:expr:dump", ": %x, %x\n", row, entry));
+        DEBUGMSG(("disman:expr:dump", ": %p, %p\n", row, entry));
         i++;
     }
     DEBUGMSGTL(("disman:expr:dump", "ExpressionTable %d entries\n", i));
diff --git a/agent/mibgroup/disman/expr/expExpressionConf.c b/agent/mibgroup/disman/expr/expExpressionConf.c
index 61744e1..826d679 100644
--- a/agent/mibgroup/disman/expr/expExpressionConf.c
+++ b/agent/mibgroup/disman/expr/expExpressionConf.c
@@ -4,13 +4,19 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <ctype.h>
+
 #include "utilities/iquery.h"
 #include "disman/expr/expExpression.h"
 #include "disman/expr/expObject.h"
 #include "disman/expr/expExpressionConf.h"
 
+netsnmp_feature_require(iquery)
+
 /* Initializes the expExpressionConf module */
 void
 init_expExpressionConf(void)
@@ -226,7 +232,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;
@@ -256,17 +262,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/expExpressionTable.c b/agent/mibgroup/disman/expr/expExpressionTable.c
index c07e5fc..79aa715 100644
--- a/agent/mibgroup/disman/expr/expExpressionTable.c
+++ b/agent/mibgroup/disman/expr/expExpressionTable.c
@@ -7,12 +7,21 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "utilities/iquery.h"
 #include "disman/expr/expExpression.h"
 #include "disman/expr/expExpressionTable.h"
 
+netsnmp_feature_require(iquery)
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(table_tdata_insert_row)
+netsnmp_feature_require(iquery_pdu_session)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 /* Initializes the expExpressionTable module */
 void
 init_expExpressionTable(void)
@@ -49,7 +58,7 @@
 
     /* Register this using the (common) expr_table_data container */
     netsnmp_tdata_register(reg, expr_table_data, table_info);
-    DEBUGMSGTL(("disman:expr:init", "Expression Table container (%x)\n",
+    DEBUGMSGTL(("disman:expr:init", "Expression Table container (%p)\n",
                                      expr_table_data));
 }
 
diff --git a/agent/mibgroup/disman/expr/expObject.c b/agent/mibgroup/disman/expr/expObject.c
index dffe4e4..c27437b 100644
--- a/agent/mibgroup/disman/expr/expObject.c
+++ b/agent/mibgroup/disman/expr/expObject.c
@@ -21,7 +21,7 @@
     DEBUGMSGTL(("disman:expr:init", "init expObject container\n"));
     if (!expObject_table_data) {
          expObject_table_data = netsnmp_tdata_create_table("expObjectTable", 0);
-         DEBUGMSGTL(("disman:expr:init", "create expObject container (%x)\n",
+         DEBUGMSGTL(("disman:expr:init", "create expObject container (%p)\n",
                                           expObject_table_data));
     }
 }
diff --git a/agent/mibgroup/disman/expr/expObjectConf.c b/agent/mibgroup/disman/expr/expObjectConf.c
index 6e18c22..64069d9 100644
--- a/agent/mibgroup/disman/expr/expObjectConf.c
+++ b/agent/mibgroup/disman/expr/expObjectConf.c
@@ -4,12 +4,15 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "utilities/iquery.h"
 #include "disman/expr/expObject.h"
 #include "disman/expr/expObjectConf.h"
 
+netsnmp_feature_require(iquery)
+
 /* Initializes the expObjectConf module */
 void
 init_expObjectConf(void)
@@ -115,7 +118,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 +148,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/expObjectTable.c b/agent/mibgroup/disman/expr/expObjectTable.c
index 6e60b81..adda438 100644
--- a/agent/mibgroup/disman/expr/expObjectTable.c
+++ b/agent/mibgroup/disman/expr/expObjectTable.c
@@ -7,11 +7,18 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/expr/expObject.h"
 #include "disman/expr/expObjectTable.h"
 
+netsnmp_feature_require(table_tdata)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_oid)
+netsnmp_feature_require(check_vb_truthvalue)
+netsnmp_feature_require(table_tdata_insert_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /* Initializes the expObjectTable module */
 void
@@ -51,7 +58,7 @@
 
     /* Register this using the common expObject_table_data container */
     netsnmp_tdata_register(reg, expObject_table_data, table_info);
-    DEBUGMSGTL(("disman:expr:init", "Expression Object Table container (%x)\n",
+    DEBUGMSGTL(("disman:expr:init", "Expression Object Table container (%p)\n",
                                      expObject_table_data));
 }
 
diff --git a/agent/mibgroup/disman/expr/expValueTable.c b/agent/mibgroup/disman/expr/expValueTable.c
index 97bcbab..d74dbd1 100644
--- a/agent/mibgroup/disman/expr/expValueTable.c
+++ b/agent/mibgroup/disman/expr/expValueTable.c
@@ -59,7 +59,7 @@
     if (!indexes || !indexes->next_variable ||
         !indexes->next_variable->next_variable ) {
         /* XXX - Shouldn't happen! */
-        return 0;
+        return NULL;
     }
 
     DEBUGMSGTL(( "disman:expr:val", "get (%d) entry (%s, %s, ", mode,
@@ -78,7 +78,7 @@
          */
         if (mode == MODE_GETNEXT || mode == MODE_GETBULK) {
             exp = expExpression_getFirstEntry();
-            DEBUGMSGTL(( "disman:expr:val", "first entry (%x)\n", exp ));
+            DEBUGMSGTL(( "disman:expr:val", "first entry (%p)\n", exp ));
         } else {
             DEBUGMSGTL(( "disman:expr:val", "incomplete request\n" ));
             return NULL;        /* No match */
@@ -86,7 +86,7 @@
     } else {
         exp = expExpression_getEntry( (char*)indexes->val.string,
                                       (char*)indexes->next_variable->val.string);
-        DEBUGMSGTL(( "disman:expr:val", "using entry (%x)\n", exp ));
+        DEBUGMSGTL(( "disman:expr:val", "using entry (%p)\n", exp ));
     }
 
     /*
@@ -101,7 +101,7 @@
         }
 NEXT_EXP:
         exp = expExpression_getNextEntry( exp->expOwner, exp->expName );
-        DEBUGMSGTL(( "disman:expr:val", "using next entry (%x)\n", exp ));
+        DEBUGMSGTL(( "disman:expr:val", "using next entry (%p)\n", exp ));
     }
     if (!exp) {
         DEBUGMSGTL(( "disman:expr:val", "no more entries\n"));
@@ -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 */
         }
 
@@ -140,7 +140,7 @@
                 return NULL;
             }
             res = expValue_evaluateExpression( exp, NULL, 0 );
-            DEBUGMSGTL(( "disman:expr:val", "scalar get returned (%x)\n", res));
+            DEBUGMSGTL(( "disman:expr:val", "scalar get returned (%p)\n", res));
         } else {
             /*
              * Otherwise, skip the leading '.0' and use
@@ -148,7 +148,7 @@
              */
             res = expValue_evaluateExpression( exp, vp->val.objid+1,
                                            vp->val_len/sizeof(oid)-1);
-            DEBUGMSGTL(( "disman:expr:val", "w/card get returned (%x)\n", res));
+            DEBUGMSGTL(( "disman:expr:val", "w/card get returned (%p)\n", res));
         }
     } else {
         /*
@@ -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;
@@ -187,7 +187,7 @@
             snmp_set_var_typed_value( vp, ASN_PRIV_IMPLIED_OBJECT_ID,
                        (u_char*)nullInstance, 3*sizeof(oid));
             res = expValue_evaluateExpression( exp, NULL, 0 );
-            DEBUGMSGTL(( "disman:expr:val", "scalar next returned (%x)\n", res));
+            DEBUGMSGTL(( "disman:expr:val", "scalar next returned (%p)\n", res));
         } else {
             /*
              * Now comes the interesting case - finding the
@@ -235,7 +235,7 @@
                 len = 1;
             }
             res = expValue_evaluateExpression( exp, vp->val.objid+1, len-1);
-            DEBUGMSGTL(( "disman:expr:val", "w/card next returned (%x)\n", res));
+            DEBUGMSGTL(( "disman:expr:val", "w/card next returned (%p)\n", res));
         }
     }
     return res;
diff --git a/agent/mibgroup/disman/expression/expErrorTable.c b/agent/mibgroup/disman/expression/expErrorTable.c
index b7b257e..1feb3ee 100644
--- a/agent/mibgroup/disman/expression/expErrorTable.c
+++ b/agent/mibgroup/disman/expression/expErrorTable.c
@@ -66,13 +66,17 @@
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
      */
 #define	EXPERRORTIME  1
-    {EXPERRORTIME,  ASN_UNSIGNED, RONLY, var_expErrorTable, 2, {1, 1}},
+    {EXPERRORTIME,  ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_expErrorTable, 2, {1, 1}},
 #define	EXPERRORINDEX 2
-    {EXPERRORINDEX, ASN_INTEGER,  RONLY, var_expErrorTable, 2, {1, 2}},
+    {EXPERRORINDEX, ASN_INTEGER,  NETSNMP_OLDAPI_RONLY,
+     var_expErrorTable, 2, {1, 2}},
 #define	EXPERRORCODE 3
-    {EXPERRORCODE,  ASN_INTEGER,  RONLY, var_expErrorTable, 2, {1, 3}},
+    {EXPERRORCODE,  ASN_INTEGER,  NETSNMP_OLDAPI_RONLY,
+     var_expErrorTable, 2, {1, 3}},
 #define	EXPERRORINSTANCE 4
-    {EXPERRORINSTANCE, ASN_OBJECT_ID, RONLY, var_expErrorTable, 2, {1, 4}}
+    {EXPERRORINSTANCE, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_expErrorTable, 2, {1, 4}}
 };
 
 extern struct header_complex_index *expExpressionTableStorage;
@@ -135,4 +139,6 @@
         *var_len = StorageTmp->expErrorInstanceLen * sizeof(oid);
         return (u_char *) StorageTmp->expErrorInstance;
     }
+
+    return NULL;
 }
diff --git a/agent/mibgroup/disman/expression/expExpressionTable.c b/agent/mibgroup/disman/expression/expExpressionTable.c
index da0e19a..212952d 100644
--- a/agent/mibgroup/disman/expression/expExpressionTable.c
+++ b/agent/mibgroup/disman/expression/expExpressionTable.c
@@ -21,6 +21,7 @@
  * This should always be included first before anything else 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -45,6 +46,10 @@
 #include "expObjectTable.h"
 #include "expValueTable.h"
 
+netsnmp_feature_require(tdomain_support)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(header_complex_find_entry)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * expExpressionTable_variables_oid:
@@ -65,19 +70,26 @@
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
      */
 #define	EXPEXPRESSION  3
-    {EXPEXPRESSION,          ASN_OCTET_STR, RWRITE, var_expExpressionTable, 2, {1, 3}},
+    {EXPEXPRESSION,          ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_expExpressionTable, 2, {1, 3}},
 #define	EXPEXPRESSIONVALUETYPE 4
-    {EXPEXPRESSIONVALUETYPE, ASN_INTEGER,   RWRITE, var_expExpressionTable, 2, {1, 4}},
+    {EXPEXPRESSIONVALUETYPE, ASN_INTEGER,   NETSNMP_OLDAPI_RWRITE,
+     var_expExpressionTable, 2, {1, 4}},
 #define	EXPEXPRESSIONCOMMENT 5
-    {EXPEXPRESSIONCOMMENT,   ASN_OCTET_STR, RWRITE, var_expExpressionTable, 2, {1, 5}},
+    {EXPEXPRESSIONCOMMENT,   ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_expExpressionTable, 2, {1, 5}},
 #define	EXPEXPRESSIONDELTALNTERVAL 6
-    {EXPEXPRESSIONDELTALNTERVAL, ASN_INTEGER, RWRITE, var_expExpressionTable, 2, {1, 6}},
+    {EXPEXPRESSIONDELTALNTERVAL, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_expExpressionTable, 2, {1, 6}},
 #define	EXPEXPRESSIONPREFIX 7
-    {EXPEXPRESSIONPREFIX,    ASN_OBJECT_ID, RONLY,  var_expExpressionTable, 2, {1, 7}},
+    {EXPEXPRESSIONPREFIX,    ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_expExpressionTable, 2, {1, 7}},
 #define	EXPEXPRESSIONERRORS 8
-    {EXPEXPRESSIONERRORS,    ASN_UNSIGNED,  RONLY,  var_expExpressionTable, 2, {1, 8}},
+    {EXPEXPRESSIONERRORS,    ASN_UNSIGNED,  NETSNMP_OLDAPI_RONLY,
+     var_expExpressionTable, 2, {1, 8}},
 #define	EXPEXPRESSIONENTRYSTATUS  9
-    {EXPEXPRESSIONENTRYSTATUS, ASN_INTEGER, RWRITE, var_expExpressionTable, 2, {1, 9}}
+    {EXPEXPRESSIONENTRYSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_expExpressionTable, 2, {1, 9}}
 };
 
 /*
@@ -311,9 +323,7 @@
     char           *cptr;
     size_t          tmpint;
     struct expExpressionTable_data *StorageTmp;
-    struct expObjectTable_data *ObjectStorageTmp;
-    struct expValueTable_data *ValueStorageTmp;
-    struct header_complex_index *hcindex, *hc_object, *hc_value;
+    struct header_complex_index *hcindex;
 
     DEBUGMSGTL(("expExpressionTable", "storing data...  "));
 
@@ -574,6 +584,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -658,6 +669,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;
@@ -746,6 +758,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -830,6 +843,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;
@@ -1154,6 +1168,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 8d1855d..e057f56 100644
--- a/agent/mibgroup/disman/expression/expObjectTable.c
+++ b/agent/mibgroup/disman/expression/expObjectTable.c
@@ -22,6 +22,7 @@
  * This should always be included first before anything else 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -34,6 +35,9 @@
 #include <limits.h>
 #endif
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(header_complex_find_entry)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * minimal include directives 
@@ -66,23 +70,32 @@
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
      */
 #define	EXPOBJECTID  2
-    {EXPOBJECTID,         ASN_OBJECT_ID, RWRITE, var_expObjectTable, 2, {1, 2}},
+    {EXPOBJECTID,         ASN_OBJECT_ID, NETSNMP_OLDAPI_RWRITE,
+     var_expObjectTable, 2, {1, 2}},
 #define	EXPOBJECTIDWILDCARD 3
-    {EXPOBJECTIDWILDCARD, ASN_INTEGER,   RWRITE, var_expObjectTable, 2, {1, 3}},
+    {EXPOBJECTIDWILDCARD, ASN_INTEGER,   NETSNMP_OLDAPI_RWRITE,
+     var_expObjectTable, 2, {1, 3}},
 #define	EXPOBJECTSAMPLETYPE 4
-    {EXPOBJECTSAMPLETYPE, ASN_INTEGER,   RWRITE, var_expObjectTable, 2, {1, 4}},
+    {EXPOBJECTSAMPLETYPE, ASN_INTEGER,   NETSNMP_OLDAPI_RWRITE,
+     var_expObjectTable, 2, {1, 4}},
 #define	EXPOBJECTDELTADISCONTINUITYID 5
-    {EXPOBJECTDELTADISCONTINUITYID,  ASN_OBJECT_ID, RWRITE, var_expObjectTable, 2, {1, 5}},
+    {EXPOBJECTDELTADISCONTINUITYID,  ASN_OBJECT_ID, NETSNMP_OLDAPI_RWRITE,
+     var_expObjectTable, 2, {1, 5}},
 #define	EXPOBJECTDISCONTINUITYIDWILDCARD 6
-    {EXPOBJECTDISCONTINUITYIDWILDCARD, ASN_INTEGER, RWRITE, var_expObjectTable, 2, {1, 6}},
+    {EXPOBJECTDISCONTINUITYIDWILDCARD, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_expObjectTable, 2, {1, 6}},
 #define	EXPOBJECTDISCONTINUITYIDTYPE 7
-    {EXPOBJECTDISCONTINUITYIDTYPE,     ASN_INTEGER, RWRITE, var_expObjectTable, 2, {1, 7}},
+    {EXPOBJECTDISCONTINUITYIDTYPE,     ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_expObjectTable, 2, {1, 7}},
 #define	EXPOBJECTCONDITIONAL  8
-    {EXPOBJECTCONDITIONAL, ASN_OBJECT_ID, RWRITE, var_expObjectTable, 2, {1, 8}},
+    {EXPOBJECTCONDITIONAL, ASN_OBJECT_ID, NETSNMP_OLDAPI_RWRITE,
+     var_expObjectTable, 2, {1, 8}},
 #define	EXPOBJECTCONDITIONALWILDCARD  9
-    {EXPOBJECTCONDITIONALWILDCARD,     ASN_INTEGER, RWRITE, var_expObjectTable, 2, {1, 9}},
+    {EXPOBJECTCONDITIONALWILDCARD,     ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_expObjectTable, 2, {1, 9}},
 #define	EXPOBJECTENTRYSTATUS  10
-    {EXPOBJECTENTRYSTATUS, ASN_INTEGER, RWRITE, var_expObjectTable, 2, {1, 10}}
+    {EXPOBJECTENTRYSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_expObjectTable, 2, {1, 10}}
 };
 
 
@@ -207,7 +220,6 @@
 parse_expObjectTable(const char *token, char *line)
 {
     size_t          tmpint;
-    oid            *tmpoid = NULL;
     struct expObjectTable_data *StorageTmp =
         SNMP_MALLOC_STRUCT(expObjectTable_data);
 
@@ -394,6 +406,7 @@
         }
     }
     DEBUGMSGTL(("expObjectTable", "storage done\n"));
+    return 0;
 }
 
 
@@ -564,6 +577,7 @@
          * previous values, as these are from a different object?  
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -644,6 +658,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;
@@ -725,7 +740,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;
@@ -822,6 +837,7 @@
          * previous values, as these are from a different object?  
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -905,7 +921,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;
@@ -989,7 +1005,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;
@@ -1083,6 +1099,7 @@
          * previous values, as these are from a different object?  
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -1167,7 +1184,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;
@@ -1438,6 +1455,7 @@
                 StorageTmp->expObjectEntryStatus = RS_NOTINSERVICE;
             }
         }
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/disman/expression/expValueTable.c b/agent/mibgroup/disman/expression/expValueTable.c
index 0f5e0b6..6b315c6 100644
--- a/agent/mibgroup/disman/expression/expValueTable.c
+++ b/agent/mibgroup/disman/expression/expValueTable.c
@@ -76,21 +76,29 @@
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
      */
 #define	EXPVALUECOUNTER32VAL 2
-    {EXPVALUECOUNTER32VAL,  ASN_COUNTER,  RONLY, var_expValueTable, 2, {1, 2}},
+    {EXPVALUECOUNTER32VAL,  ASN_COUNTER,  NETSNMP_OLDAPI_RONLY,
+     var_expValueTable, 2, {1, 2}},
 #define	EXPVALUEUNSIGNED32VAL 3
-    {EXPVALUEUNSIGNED32VAL, ASN_UNSIGNED, RONLY, var_expValueTable, 2, {1, 3}},
+    {EXPVALUEUNSIGNED32VAL, ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_expValueTable, 2, {1, 3}},
 #define	EXPVALUETIMETICKSVAL 4
-    {EXPVALUETIMETICKSVAL,  ASN_UNSIGNED, RONLY, var_expValueTable, 2, {1, 4}},
+    {EXPVALUETIMETICKSVAL,  ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_expValueTable, 2, {1, 4}},
 #define	EXPVALUEINTEGER32VAL 5
-    {EXPVALUEINTEGER32VAL,  ASN_INTEGER,  RONLY, var_expValueTable, 2, {1, 5}},
+    {EXPVALUEINTEGER32VAL,  ASN_INTEGER,  NETSNMP_OLDAPI_RONLY,
+     var_expValueTable, 2, {1, 5}},
 #define	EXPVALUEIPADDRESSVAL 6
-    {EXPVALUEIPADDRESSVAL, ASN_IPADDRESS, RONLY, var_expValueTable, 2, {1, 6}},
+    {EXPVALUEIPADDRESSVAL, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_expValueTable, 2, {1, 6}},
 #define	EXPVALUEOCTETSTRINGVAL 7
-    {EXPVALUEOCTETSTRINGVAL, ASN_OCTET_STR, RONLY, var_expValueTable, 2, {1, 7}},
+    {EXPVALUEOCTETSTRINGVAL, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_expValueTable, 2, {1, 7}},
 #define	EXPVALUEOIDVAL  8
-    {EXPVALUEOIDVAL,       ASN_OBJECT_ID, RONLY, var_expValueTable, 2, {1, 8}},
+    {EXPVALUEOIDVAL,       ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_expValueTable, 2, {1, 8}},
 #define	EXPVALUECOUNTER64VAL  9
-    {EXPVALUECOUNTER64VAL, ASN_INTEGER,   RONLY, var_expValueTable, 2, {1, 9}}
+    {EXPVALUECOUNTER64VAL, ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_expValueTable, 2, {1, 9}}
 };
 
 
@@ -237,7 +245,6 @@
     char           *result, *resultbak;
     char           *temp, *tempbak;
     char            intchar[10];
-    int             dollar1, dollar2;
     int             i = 0, j, k, l;
     long            value;
     unsigned long   result_u_long;
@@ -314,7 +321,6 @@
             }
             struct variable_list *vars;
             int             status;
-            int             count = 1;
 
             /*
              * Initialize the SNMP library
@@ -361,7 +367,7 @@
 
                 vars = response->variables;
                 value = *(vars->val.integer);
-                sprintf(intchar, "%u", value);
+                sprintf(intchar, "%lu", value);
                 for (k = 1; k <= strlen(intchar); k++) {
                     *result = intchar[k - 1];
                     result++;
@@ -425,15 +431,11 @@
 
 
 void
-build_valuetable()
+build_valuetable(void)
 {
     struct expExpressionTable_data *expstorage;
     struct expObjectTable_data *objstorage, *objfound = NULL;
     struct header_complex_index *hcindex, *object_hcindex;
-    char           *owner;
-    size_t          owner_len;
-    char           *name;
-    size_t          name_len;
     char           *expression;
     oid            *index;
     int             i = 0, j, l;
@@ -517,9 +519,7 @@
             oid            *next_OID;
             size_t          next_OID_len;
             taggetOID_len = objfound->expObjectIDLen;
-            struct variable_list *vars;
             int             status;
-            int             count = 1;
             struct snmp_session *ss;
             /*
              * Initialize the SNMP library
@@ -631,12 +631,7 @@
                   int exact, size_t *var_len, WriteMethod ** write_method)
 {
 
-    static netsnmp_variable_list *vars;
-    size_t          newlen =
-        *length - (sizeof(expValueTable_variables_oid) / sizeof(oid) +
-                   3 - 1);
     struct expValueTable_data *StorageTmp = NULL;
-    unsigned int    counter32;
 
 
 
@@ -711,6 +706,7 @@
         return NULL;
     default:
         ERROR_MSG("");
+	return NULL;
     }
 }
 
@@ -780,6 +776,7 @@
         } else
             return (a / b);
     }
+    return 0;
 }
 
 unsigned long
diff --git a/agent/mibgroup/disman/mteEventNotificationTable.c b/agent/mibgroup/disman/mteEventNotificationTable.c
index 3e0786f..48add68 100644
--- a/agent/mibgroup/disman/mteEventNotificationTable.c
+++ b/agent/mibgroup/disman/mteEventNotificationTable.c
@@ -4,10 +4,14 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "mteEventNotificationTable.h"
 
+netsnmp_feature_require(table_dataset)
+netsnmp_feature_require(table_set_multi_add_default_row)
+
 netsnmp_table_data_set *mteEventNotif_table_set;
 
 
@@ -61,12 +65,21 @@
      * note: if you don't need a subhandler to deal with any aspects
      * of the request, change mteEventNotificationTable_handler to "NULL" 
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     netsnmp_register_table_data_set(netsnmp_create_handler_registration
                                     ("mteEventNotificationTable",
                                      mteEventNotificationTable_handler,
                                      mteEventNotificationTable_oid,
                                      mteEventNotificationTable_oid_len,
                                      HANDLER_CAN_RWRITE), mteEventNotif_table_set, NULL);
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+    netsnmp_register_table_data_set(netsnmp_create_handler_registration
+                                    ("mteEventNotificationTable",
+                                     mteEventNotificationTable_handler,
+                                     mteEventNotificationTable_oid,
+                                     mteEventNotificationTable_oid_len,
+                                     HANDLER_CAN_RONLY), mteEventNotif_table_set, NULL);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 }
 
 /** Initializes the mteEventNotificationTable module */
diff --git a/agent/mibgroup/disman/mteEventTable.c b/agent/mibgroup/disman/mteEventTable.c
index b4bd7a1..22bad73 100644
--- a/agent/mibgroup/disman/mteEventTable.c
+++ b/agent/mibgroup/disman/mteEventTable.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "mteTriggerTable.h"
@@ -11,6 +12,9 @@
 #include "mteEventNotificationTable.h"
 #include "mteObjectsTable.h"
 
+netsnmp_feature_require(table_dataset)
+netsnmp_feature_require(table_set_multi_add_default_row)
+
 static netsnmp_table_data_set *table_set = NULL;
 
 /** Initialize the mteEventTable table by defining its contents and how it's structured */
diff --git a/agent/mibgroup/disman/mteObjectsTable.c b/agent/mibgroup/disman/mteObjectsTable.c
index 4f7e95f..09ceb2a 100644
--- a/agent/mibgroup/disman/mteObjectsTable.c
+++ b/agent/mibgroup/disman/mteObjectsTable.c
@@ -8,6 +8,7 @@
  * This should always be included first before anything else 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -17,6 +18,9 @@
 #include <strings.h>
 #endif
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(header_complex_find_entry)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * minimal include directives 
@@ -48,20 +52,40 @@
  */
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 mteObjectsTable_variables[] = {
     /*
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
      */
 #define   MTEOBJECTSID          5
-    {MTEOBJECTSID, ASN_OBJECT_ID, RWRITE, var_mteObjectsTable, 2, {1, 3}},
+    {MTEOBJECTSID, ASN_OBJECT_ID, NETSNMP_OLDAPI_RWRITE,
+     var_mteObjectsTable, 2, {1, 3}},
 #define   MTEOBJECTSIDWILDCARD  6
-    {MTEOBJECTSIDWILDCARD, ASN_INTEGER, RWRITE, var_mteObjectsTable, 2,
-     {1, 4}},
+    {MTEOBJECTSIDWILDCARD, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_mteObjectsTable, 2, {1, 4}},
 #define   MTEOBJECTSENTRYSTATUS  7
-    {MTEOBJECTSENTRYSTATUS, ASN_INTEGER, RWRITE, var_mteObjectsTable, 2,
-     {1, 5}},
+    {MTEOBJECTSENTRYSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_mteObjectsTable, 2, {1, 5}},
 
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 mteObjectsTable_variables[] = {
+    /*
+     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
+     */
+#define   MTEOBJECTSID          5
+    {MTEOBJECTSID, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_mteObjectsTable, 2, {1, 3}},
+#define   MTEOBJECTSIDWILDCARD  6
+    {MTEOBJECTSIDWILDCARD, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteObjectsTable, 2, {1, 4}},
+#define   MTEOBJECTSENTRYSTATUS  7
+    {MTEOBJECTSENTRYSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteObjectsTable, 2, {1, 5}},
+
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 /*
  * (L = length of the oidsuffix) 
  */
@@ -301,6 +325,10 @@
 
     DEBUGMSGTL(("mteObjectsTable",
                 "var_mteObjectsTable: Entering...  \n"));
+
+	/* set default value */
+	*write_method = NULL;
+
     /*
      * this assumes you have registered all your data properly
      */
@@ -319,17 +347,23 @@
 
 
     case MTEOBJECTSID:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteObjectsID;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = (StorageTmp->mteObjectsIDLen) * sizeof(oid);
         return (u_char *) StorageTmp->mteObjectsID;
 
     case MTEOBJECTSIDWILDCARD:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteObjectsIDWildcard;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteObjectsIDWildcard);
         return (u_char *) & StorageTmp->mteObjectsIDWildcard;
 
     case MTEOBJECTSENTRYSTATUS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteObjectsEntryStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteObjectsEntryStatus);
         return (u_char *) & StorageTmp->mteObjectsEntryStatus;
 
@@ -342,6 +376,7 @@
 
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 
 int
 write_mteObjectsID(int action,
@@ -423,6 +458,9 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+
+        snmp_store_needed(NULL);
+
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -507,6 +545,8 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
 
+        snmp_store_needed(NULL);
+
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -641,6 +681,8 @@
 
 
             StorageNew = SNMP_MALLOC_STRUCT(mteObjectsTable_data);
+            if (StorageNew == NULL)
+                return SNMP_ERR_GENERR;
             StorageNew->mteOwner = netsnmp_strdup_and_null(vp->val.string,
                                                            vp->val_len);
             StorageNew->mteOwnerLen = vp->val_len;
@@ -773,11 +815,16 @@
                 StorageTmp->mteObjectsEntryStatus = RS_NOTINSERVICE;
             }
         }
+        snmp_store_needed(NULL);
+
         break;
     }
     return SNMP_ERR_NOERROR;
 }
 
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+
 void
 mte_add_objects(netsnmp_variable_list * vars,
                 struct mteTriggerTable_data *item, const char *owner,
@@ -888,6 +935,8 @@
      * malloc initial struct 
      */
     StorageNew = SNMP_MALLOC_STRUCT(mteObjectsTable_data);
+    if (StorageNew == NULL)
+        return SNMP_ERR_GENERR;
     StorageNew->mteOwner = netsnmp_strdup_and_null(owner, strlen(owner));
     StorageNew->mteOwnerLen = strlen(owner);
     StorageNew->mteObjectsName = netsnmp_strdup_and_null(objname,
diff --git a/agent/mibgroup/disman/mteObjectsTable.h b/agent/mibgroup/disman/mteObjectsTable.h
index d3c3c50..4d44c87 100644
--- a/agent/mibgroup/disman/mteObjectsTable.h
+++ b/agent/mibgroup/disman/mteObjectsTable.h
@@ -59,11 +59,12 @@
                                              oid * oidname,
                                              size_t oidname_len,
                                              int iswild);
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_mteObjectsID;
      WriteMethod     write_mteObjectsIDWildcard;
      WriteMethod     write_mteObjectsEntryStatus;
-
-     WriteMethod     write_mteObjectsEntryStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 
 
diff --git a/agent/mibgroup/disman/mteTriggerBooleanTable.c b/agent/mibgroup/disman/mteTriggerBooleanTable.c
index 49ceb5f..5b17927 100644
--- a/agent/mibgroup/disman/mteTriggerBooleanTable.c
+++ b/agent/mibgroup/disman/mteTriggerBooleanTable.c
@@ -48,33 +48,62 @@
  */
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 mteTriggerBooleanTable_variables[] = {
     /*
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
      */
 #define   MTETRIGGERBOOLEANCOMPARISON  3
-    {MTETRIGGERBOOLEANCOMPARISON, ASN_INTEGER, RWRITE,
+    {MTETRIGGERBOOLEANCOMPARISON, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerBooleanTable, 2, {1, 1}},
 #define   MTETRIGGERBOOLEANVALUE  4
-    {MTETRIGGERBOOLEANVALUE, ASN_INTEGER, RWRITE,
+    {MTETRIGGERBOOLEANVALUE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerBooleanTable, 2, {1, 2}},
 #define   MTETRIGGERBOOLEANSTARTUP  5
-    {MTETRIGGERBOOLEANSTARTUP, ASN_INTEGER, RWRITE,
+    {MTETRIGGERBOOLEANSTARTUP, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerBooleanTable, 2, {1, 3}},
 #define   MTETRIGGERBOOLEANOBJECTSOWNER  6
-    {MTETRIGGERBOOLEANOBJECTSOWNER, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGERBOOLEANOBJECTSOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerBooleanTable, 2, {1, 4}},
 #define   MTETRIGGERBOOLEANOBJECTS  7
-    {MTETRIGGERBOOLEANOBJECTS, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGERBOOLEANOBJECTS, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerBooleanTable, 2, {1, 5}},
 #define   MTETRIGGERBOOLEANEVENTOWNER  8
-    {MTETRIGGERBOOLEANEVENTOWNER, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGERBOOLEANEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerBooleanTable, 2, {1, 6}},
 #define   MTETRIGGERBOOLEANEVENT  9
-    {MTETRIGGERBOOLEANEVENT, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGERBOOLEANEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerBooleanTable, 2, {1, 7}},
-
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 mteTriggerBooleanTable_variables[] = {
+    /*
+     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
+     */
+#define   MTETRIGGERBOOLEANCOMPARISON  3
+    {MTETRIGGERBOOLEANCOMPARISON, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerBooleanTable, 2, {1, 1}},
+#define   MTETRIGGERBOOLEANVALUE  4
+    {MTETRIGGERBOOLEANVALUE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerBooleanTable, 2, {1, 2}},
+#define   MTETRIGGERBOOLEANSTARTUP  5
+    {MTETRIGGERBOOLEANSTARTUP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerBooleanTable, 2, {1, 3}},
+#define   MTETRIGGERBOOLEANOBJECTSOWNER  6
+    {MTETRIGGERBOOLEANOBJECTSOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerBooleanTable, 2, {1, 4}},
+#define   MTETRIGGERBOOLEANOBJECTS  7
+    {MTETRIGGERBOOLEANOBJECTS, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerBooleanTable, 2, {1, 5}},
+#define   MTETRIGGERBOOLEANEVENTOWNER  8
+    {MTETRIGGERBOOLEANEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerBooleanTable, 2, {1, 6}},
+#define   MTETRIGGERBOOLEANEVENT  9
+    {MTETRIGGERBOOLEANEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerBooleanTable, 2, {1, 7}},
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 /*
  * (L = length of the oidsuffix) 
  */
@@ -126,6 +155,10 @@
 
     DEBUGMSGTL(("mteTriggerBooleanTable",
                 "var_mteTriggerBooleanTable: Entering...  \n"));
+
+	/* set default value */
+	*write_method = NULL;
+
     /*
      * this assumes you have registered all your data properly
      */
@@ -144,37 +177,51 @@
 
 
     case MTETRIGGERBOOLEANCOMPARISON:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerBooleanComparison;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerBooleanComparison);
         return (u_char *) & StorageTmp->mteTriggerBooleanComparison;
 
     case MTETRIGGERBOOLEANVALUE:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerBooleanValue;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerBooleanValue);
         return (u_char *) & StorageTmp->mteTriggerBooleanValue;
 
     case MTETRIGGERBOOLEANSTARTUP:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerBooleanStartup;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerBooleanStartup);
         return (u_char *) & StorageTmp->mteTriggerBooleanStartup;
 
     case MTETRIGGERBOOLEANOBJECTSOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerBooleanObjectsOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerBooleanObjectsOwnerLen;
         return (u_char *) StorageTmp->mteTriggerBooleanObjectsOwner;
 
     case MTETRIGGERBOOLEANOBJECTS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerBooleanObjects;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerBooleanObjectsLen;
         return (u_char *) StorageTmp->mteTriggerBooleanObjects;
 
     case MTETRIGGERBOOLEANEVENTOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerBooleanEventOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerBooleanEventOwnerLen;
         return (u_char *) StorageTmp->mteTriggerBooleanEventOwner;
 
     case MTETRIGGERBOOLEANEVENT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerBooleanEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerBooleanEventLen;
         return (u_char *) StorageTmp->mteTriggerBooleanEvent;
 
@@ -187,6 +234,7 @@
 
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 
 int
 write_mteTriggerBooleanComparison(int action,
@@ -800,3 +848,5 @@
     }
     return SNMP_ERR_NOERROR;
 }
+
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
diff --git a/agent/mibgroup/disman/mteTriggerBooleanTable.h b/agent/mibgroup/disman/mteTriggerBooleanTable.h
index f685586..6413da5 100644
--- a/agent/mibgroup/disman/mteTriggerBooleanTable.h
+++ b/agent/mibgroup/disman/mteTriggerBooleanTable.h
@@ -31,6 +31,7 @@
      void            init_mteTriggerBooleanTable(void);
      FindVarMethod   var_mteTriggerBooleanTable;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_mteTriggerBooleanComparison;
      WriteMethod     write_mteTriggerBooleanValue;
      WriteMethod     write_mteTriggerBooleanStartup;
@@ -38,6 +39,7 @@
      WriteMethod     write_mteTriggerBooleanObjects;
      WriteMethod     write_mteTriggerBooleanEventOwner;
      WriteMethod     write_mteTriggerBooleanEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 
 
diff --git a/agent/mibgroup/disman/mteTriggerDeltaTable.c b/agent/mibgroup/disman/mteTriggerDeltaTable.c
index 3edb935..c829e6a 100644
--- a/agent/mibgroup/disman/mteTriggerDeltaTable.c
+++ b/agent/mibgroup/disman/mteTriggerDeltaTable.c
@@ -48,21 +48,38 @@
  */
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 mteTriggerDeltaTable_variables[] = {
     /*
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
      */
 #define   MTETRIGGERDELTADISCONTINUITYID  3
-    {MTETRIGGERDELTADISCONTINUITYID, ASN_OBJECT_ID, RWRITE,
+    {MTETRIGGERDELTADISCONTINUITYID, ASN_OBJECT_ID, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerDeltaTable, 2, {1, 1}},
 #define   MTETRIGGERDELTADISCONTINUITYIDWILDCARD  4
-    {MTETRIGGERDELTADISCONTINUITYIDWILDCARD, ASN_INTEGER, RWRITE,
+    {MTETRIGGERDELTADISCONTINUITYIDWILDCARD, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerDeltaTable, 2, {1, 2}},
 #define   MTETRIGGERDELTADISCONTINUITYIDTYPE  5
-    {MTETRIGGERDELTADISCONTINUITYIDTYPE, ASN_INTEGER, RWRITE,
+    {MTETRIGGERDELTADISCONTINUITYIDTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerDeltaTable, 2, {1, 3}},
-
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 mteTriggerDeltaTable_variables[] = {
+    /*
+     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
+     */
+#define   MTETRIGGERDELTADISCONTINUITYID  3
+    {MTETRIGGERDELTADISCONTINUITYID, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerDeltaTable, 2, {1, 1}},
+#define   MTETRIGGERDELTADISCONTINUITYIDWILDCARD  4
+    {MTETRIGGERDELTADISCONTINUITYIDWILDCARD, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerDeltaTable, 2, {1, 2}},
+#define   MTETRIGGERDELTADISCONTINUITYIDTYPE  5
+    {MTETRIGGERDELTADISCONTINUITYIDTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerDeltaTable, 2, {1, 3}},
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 /*
  * (L = length of the oidsuffix) 
  */
@@ -114,6 +131,10 @@
 
     DEBUGMSGTL(("mteTriggerDeltaTable",
                 "var_mteTriggerDeltaTable: Entering...  \n"));
+
+    /* set default value */
+	*write_method = NULL;
+
     /*
      * this assumes you have registered all your data properly
      */
@@ -129,24 +150,29 @@
 
 
     case MTETRIGGERDELTADISCONTINUITYID:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerDeltaDiscontinuityID;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len =
             StorageTmp->mteTriggerDeltaDiscontinuityIDLen * sizeof(oid);
         return (u_char *) StorageTmp->mteTriggerDeltaDiscontinuityID;
 
     case MTETRIGGERDELTADISCONTINUITYIDWILDCARD:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerDeltaDiscontinuityIDWildcard;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len =
             sizeof(StorageTmp->mteTriggerDeltaDiscontinuityIDWildcard);
         return (u_char *) & StorageTmp->
             mteTriggerDeltaDiscontinuityIDWildcard;
 
     case MTETRIGGERDELTADISCONTINUITYIDTYPE:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerDeltaDiscontinuityIDType;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerDeltaDiscontinuityIDType);
         return (u_char *) & StorageTmp->mteTriggerDeltaDiscontinuityIDType;
 
-
     default:
         ERROR_MSG("");
     }
@@ -155,7 +181,7 @@
 
 
 
-
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 write_mteTriggerDeltaDiscontinuityID(int action,
                                      u_char * var_val,
@@ -414,3 +440,4 @@
     }
     return SNMP_ERR_NOERROR;
 }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
diff --git a/agent/mibgroup/disman/mteTriggerDeltaTable.h b/agent/mibgroup/disman/mteTriggerDeltaTable.h
index 0e8a17e..fa4872a 100644
--- a/agent/mibgroup/disman/mteTriggerDeltaTable.h
+++ b/agent/mibgroup/disman/mteTriggerDeltaTable.h
@@ -30,8 +30,10 @@
      void            init_mteTriggerDeltaTable(void);
      FindVarMethod   var_mteTriggerDeltaTable;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_mteTriggerDeltaDiscontinuityID;
      WriteMethod     write_mteTriggerDeltaDiscontinuityIDWildcard;
      WriteMethod     write_mteTriggerDeltaDiscontinuityIDType;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 #endif                          /* _MIBGROUP_MTETRIGGERDELTATABLE_H */
diff --git a/agent/mibgroup/disman/mteTriggerExistenceTable.c b/agent/mibgroup/disman/mteTriggerExistenceTable.c
index 1ad0a74..4e6b64b 100644
--- a/agent/mibgroup/disman/mteTriggerExistenceTable.c
+++ b/agent/mibgroup/disman/mteTriggerExistenceTable.c
@@ -48,30 +48,56 @@
  */
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 mteTriggerExistenceTable_variables[] = {
     /*
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
      */
 #define   MTETRIGGEREXISTENCETEST  3
-    {MTETRIGGEREXISTENCETEST, ASN_BIT_STR, RWRITE,
+    {MTETRIGGEREXISTENCETEST, ASN_BIT_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerExistenceTable, 2, {1, 1}},
 #define   MTETRIGGEREXISTENCESTARTUP  4
-    {MTETRIGGEREXISTENCESTARTUP, ASN_BIT_STR, RWRITE,
+    {MTETRIGGEREXISTENCESTARTUP, ASN_BIT_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerExistenceTable, 2, {1, 2}},
 #define   MTETRIGGEREXISTENCEOBJECTSOWNER  5
-    {MTETRIGGEREXISTENCEOBJECTSOWNER, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGEREXISTENCEOBJECTSOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerExistenceTable, 2, {1, 3}},
 #define   MTETRIGGEREXISTENCEOBJECTS  6
-    {MTETRIGGEREXISTENCEOBJECTS, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGEREXISTENCEOBJECTS, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerExistenceTable, 2, {1, 4}},
 #define   MTETRIGGEREXISTENCEEVENTOWNER  7
-    {MTETRIGGEREXISTENCEEVENTOWNER, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGEREXISTENCEEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerExistenceTable, 2, {1, 5}},
 #define   MTETRIGGEREXISTENCEEVENT  8
-    {MTETRIGGEREXISTENCEEVENT, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGEREXISTENCEEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerExistenceTable, 2, {1, 6}},
-
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 mteTriggerExistenceTable_variables[] = {
+    /*
+     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
+     */
+#define   MTETRIGGEREXISTENCETEST  3
+    {MTETRIGGEREXISTENCETEST, ASN_BIT_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerExistenceTable, 2, {1, 1}},
+#define   MTETRIGGEREXISTENCESTARTUP  4
+    {MTETRIGGEREXISTENCESTARTUP, ASN_BIT_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerExistenceTable, 2, {1, 2}},
+#define   MTETRIGGEREXISTENCEOBJECTSOWNER  5
+    {MTETRIGGEREXISTENCEOBJECTSOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerExistenceTable, 2, {1, 3}},
+#define   MTETRIGGEREXISTENCEOBJECTS  6
+    {MTETRIGGEREXISTENCEOBJECTS, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerExistenceTable, 2, {1, 4}},
+#define   MTETRIGGEREXISTENCEEVENTOWNER  7
+    {MTETRIGGEREXISTENCEEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerExistenceTable, 2, {1, 5}},
+#define   MTETRIGGEREXISTENCEEVENT  8
+    {MTETRIGGEREXISTENCEEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerExistenceTable, 2, {1, 6}},
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 /*
  * (L = length of the oidsuffix) 
  */
@@ -131,6 +157,10 @@
 
     DEBUGMSGTL(("mteTriggerExistenceTable",
                 "var_mteTriggerExistenceTable: Entering...  \n"));
+
+	/* set default value */
+	*write_method = NULL;
+
     /*
      * this assumes you have registered all your data properly
      */
@@ -149,32 +179,44 @@
 
 
     case MTETRIGGEREXISTENCETEST:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerExistenceTest;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerExistenceTestLen;
         return (u_char *) StorageTmp->mteTriggerExistenceTest;
 
     case MTETRIGGEREXISTENCESTARTUP:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerExistenceStartup;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerExistenceStartupLen;
         return (u_char *) StorageTmp->mteTriggerExistenceStartup;
 
     case MTETRIGGEREXISTENCEOBJECTSOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerExistenceObjectsOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerExistenceObjectsOwnerLen;
         return (u_char *) StorageTmp->mteTriggerExistenceObjectsOwner;
 
     case MTETRIGGEREXISTENCEOBJECTS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerExistenceObjects;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerExistenceObjectsLen;
         return (u_char *) StorageTmp->mteTriggerExistenceObjects;
 
     case MTETRIGGEREXISTENCEEVENTOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerExistenceEventOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerExistenceEventOwnerLen;
         return (u_char *) StorageTmp->mteTriggerExistenceEventOwner;
 
     case MTETRIGGEREXISTENCEEVENT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerExistenceEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerExistenceEventLen;
         return (u_char *) StorageTmp->mteTriggerExistenceEvent;
 
@@ -187,6 +229,7 @@
 
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 
 int
 write_mteTriggerExistenceTest(int action,
@@ -735,3 +778,5 @@
     }
     return SNMP_ERR_NOERROR;
 }
+
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
diff --git a/agent/mibgroup/disman/mteTriggerExistenceTable.h b/agent/mibgroup/disman/mteTriggerExistenceTable.h
index 40dbd4e..75c6427 100644
--- a/agent/mibgroup/disman/mteTriggerExistenceTable.h
+++ b/agent/mibgroup/disman/mteTriggerExistenceTable.h
@@ -29,11 +29,13 @@
      void            init_mteTriggerExistenceTable(void);
      FindVarMethod   var_mteTriggerExistenceTable;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_mteTriggerExistenceTest;
      WriteMethod     write_mteTriggerExistenceStartup;
      WriteMethod     write_mteTriggerExistenceObjectsOwner;
      WriteMethod     write_mteTriggerExistenceObjects;
      WriteMethod     write_mteTriggerExistenceEventOwner;
      WriteMethod     write_mteTriggerExistenceEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 #endif                          /* _MIBGROUP_MTETRIGGEREXISTENCETABLE_H */
diff --git a/agent/mibgroup/disman/mteTriggerTable.c b/agent/mibgroup/disman/mteTriggerTable.c
index 4a4408c..80a45a3 100644
--- a/agent/mibgroup/disman/mteTriggerTable.c
+++ b/agent/mibgroup/disman/mteTriggerTable.c
@@ -8,6 +8,7 @@
  * This should always be included first before anything else 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -20,6 +21,13 @@
 #include <limits.h>
 #endif
 
+netsnmp_feature_require(mib_snprint_variable)
+netsnmp_feature_require(tdomain_support)
+netsnmp_feature_require(check_vb_uint)
+netsnmp_feature_require(string_time_to_secs)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(header_complex_find_entry)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * minimal include directives 
@@ -78,50 +86,98 @@
  */
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 mteTriggerTable_variables[] = {
     /*
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
      */
 #define   MTETRIGGERCOMMENT     5
-    {MTETRIGGERCOMMENT, ASN_OCTET_STR, RWRITE, var_mteTriggerTable, 2,
-     {1, 3}},
+    {MTETRIGGERCOMMENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_mteTriggerTable, 2, {1, 3}},
 #define   MTETRIGGERTEST        6
-    {MTETRIGGERTEST, ASN_OCTET_STR, RWRITE, var_mteTriggerTable, 2, {1, 4}},
+    {MTETRIGGERTEST, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_mteTriggerTable, 2, {1, 4}},
 #define   MTETRIGGERSAMPLETYPE  7
-    {MTETRIGGERSAMPLETYPE, ASN_INTEGER, RWRITE, var_mteTriggerTable, 2,
-     {1, 5}},
+    {MTETRIGGERSAMPLETYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_mteTriggerTable, 2, {1, 5}},
 #define   MTETRIGGERVALUEID     8
-    {MTETRIGGERVALUEID, ASN_OBJECT_ID, RWRITE, var_mteTriggerTable, 2,
-     {1, 6}},
+    {MTETRIGGERVALUEID, ASN_OBJECT_ID, NETSNMP_OLDAPI_RWRITE,
+     var_mteTriggerTable, 2, {1, 6}},
 #define   MTETRIGGERVALUEIDWILDCARD  9
-    {MTETRIGGERVALUEIDWILDCARD, ASN_INTEGER, RWRITE, var_mteTriggerTable,
-     2, {1, 7}},
+    {MTETRIGGERVALUEIDWILDCARD, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_mteTriggerTable, 2, {1, 7}},
 #define   MTETRIGGERTARGETTAG   10
-    {MTETRIGGERTARGETTAG, ASN_OCTET_STR, RWRITE, var_mteTriggerTable, 2,
-     {1, 8}},
+    {MTETRIGGERTARGETTAG, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_mteTriggerTable, 2, {1, 8}},
 #define   MTETRIGGERCONTEXTNAME  11
-    {MTETRIGGERCONTEXTNAME, ASN_OCTET_STR, RWRITE, var_mteTriggerTable, 2,
-     {1, 9}},
+    {MTETRIGGERCONTEXTNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_mteTriggerTable, 2, {1, 9}},
 #define   MTETRIGGERCONTEXTNAMEWILDCARD  12
-    {MTETRIGGERCONTEXTNAMEWILDCARD, ASN_INTEGER, RWRITE,
+    {MTETRIGGERCONTEXTNAMEWILDCARD, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerTable, 2, {1, 10}},
 #define   MTETRIGGERFREQUENCY   13
-    {MTETRIGGERFREQUENCY, ASN_UNSIGNED, RWRITE, var_mteTriggerTable, 2,
-     {1, 11}},
+    {MTETRIGGERFREQUENCY, ASN_UNSIGNED, NETSNMP_OLDAPI_RWRITE,
+     var_mteTriggerTable, 2, {1, 11}},
 #define   MTETRIGGEROBJECTSOWNER  14
-    {MTETRIGGEROBJECTSOWNER, ASN_OCTET_STR, RWRITE, var_mteTriggerTable, 2,
-     {1, 12}},
+    {MTETRIGGEROBJECTSOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_mteTriggerTable, 2, {1, 12}},
 #define   MTETRIGGEROBJECTS     15
-    {MTETRIGGEROBJECTS, ASN_OCTET_STR, RWRITE, var_mteTriggerTable, 2,
-     {1, 13}},
+    {MTETRIGGEROBJECTS, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_mteTriggerTable, 2, {1, 13}},
 #define   MTETRIGGERENABLED     16
-    {MTETRIGGERENABLED, ASN_INTEGER, RWRITE, var_mteTriggerTable, 2,
-     {1, 14}},
+    {MTETRIGGERENABLED, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_mteTriggerTable, 2, {1, 14}},
 #define   MTETRIGGERENTRYSTATUS  17
-    {MTETRIGGERENTRYSTATUS, ASN_INTEGER, RWRITE, var_mteTriggerTable, 2,
-     {1, 15}},
-
+    {MTETRIGGERENTRYSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_mteTriggerTable, 2, {1, 15}},
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 mteTriggerTable_variables[] = {
+    /*
+     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
+     */
+#define   MTETRIGGERCOMMENT     5
+    {MTETRIGGERCOMMENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 3}},
+#define   MTETRIGGERTEST        6
+    {MTETRIGGERTEST, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 4}},
+#define   MTETRIGGERSAMPLETYPE  7
+    {MTETRIGGERSAMPLETYPE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 5}},
+#define   MTETRIGGERVALUEID     8
+    {MTETRIGGERVALUEID, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 6}},
+#define   MTETRIGGERVALUEIDWILDCARD  9
+    {MTETRIGGERVALUEIDWILDCARD, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 7}},
+#define   MTETRIGGERTARGETTAG   10
+    {MTETRIGGERTARGETTAG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 8}},
+#define   MTETRIGGERCONTEXTNAME  11
+    {MTETRIGGERCONTEXTNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 9}},
+#define   MTETRIGGERCONTEXTNAMEWILDCARD  12
+    {MTETRIGGERCONTEXTNAMEWILDCARD, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 10}},
+#define   MTETRIGGERFREQUENCY   13
+    {MTETRIGGERFREQUENCY, ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 11}},
+#define   MTETRIGGEROBJECTSOWNER  14
+    {MTETRIGGEROBJECTSOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 12}},
+#define   MTETRIGGEROBJECTS     15
+    {MTETRIGGEROBJECTS, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 13}},
+#define   MTETRIGGERENABLED     16
+    {MTETRIGGERENABLED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 14}},
+#define   MTETRIGGERENTRYSTATUS  17
+    {MTETRIGGERENTRYSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerTable, 2, {1, 15}},
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 /*
  * (L = length of the oidsuffix) 
  */
@@ -356,8 +412,7 @@
 void
 parse_simple_monitor(const char *token, char *line)
 {
-    char            buf[SPRINT_MAX_LEN], *cp, ebuf[SPRINT_MAX_LEN],
-                    eventname[64];
+    char            buf[SPRINT_MAX_LEN], *cp, eventname[64];
     oid             obuf[MAX_OID_LEN];
     size_t          obufLen;
     struct mteTriggerTable_data *StorageNew;
@@ -403,8 +458,17 @@
            break;
         case 'r':
             if (cp) {
+                int freq;
                 cp = copy_nword(cp, buf, sizeof(buf));
-                StorageNew->mteTriggerFrequency = strtoul(buf, NULL, 0);
+                freq = netsnmp_string_time_to_secs(buf);
+                if (freq == -1) {
+                    config_perror("Invalid -r value\n");
+                    /*
+                     * XXX: free StorageNew 
+                     */
+                    return;
+                }
+                StorageNew->mteTriggerFrequency = (unsigend long) freq;
             } else {
                 config_perror("No parameter after -r given\n");
                 /*
@@ -444,8 +508,7 @@
             cp = copy_nword(cp, buf, sizeof(buf));
             obufLen = MAX_OID_LEN;
             if (!snmp_parse_oid(buf, obuf, &obufLen)) {
-                sprintf(ebuf, "unable to parse oid: %s", buf);
-                config_perror(ebuf);
+		netsnmp_config_error("unable to parse oid: %s", buf);
                 /*
                  * XXX: free StorageNew 
                  */
@@ -506,8 +569,7 @@
     cp = copy_nword(cp, buf, sizeof(buf));
     obufLen = MAX_OID_LEN;
     if (!snmp_parse_oid(buf, obuf, &obufLen)) {
-        sprintf(ebuf, "unable to parse oid: %s", buf);
-        config_perror(ebuf);
+	netsnmp_config_error("unable to parse oid: %s", buf);
         /*
          * XXX: free StorageNew 
          */
@@ -595,7 +657,7 @@
 
     DEBUGMSGTL(("mteTriggerTable", "added simple monitor: %s\n",
                 StorageNew->mteTriggerName));
-}
+} /* parse_simple_monitor */
 
 
 /*
@@ -1078,9 +1140,7 @@
         mte_enable_trigger(StorageTmp);
 
     DEBUGMSGTL(("mteTriggerTable", "done.\n"));
-}
-
-
+} /* parse_mteTriggerTable */
 
 
 /*
@@ -1431,14 +1491,20 @@
 
     DEBUGMSGTL(("mteTriggerTable",
                 "var_mteTriggerTable: Entering...  \n"));
+
+	/* set default value */
+	*write_method = NULL;
+
     /*
      * this assumes you have registered all your data properly
      */
     if ((StorageTmp =
          header_complex(mteTriggerTableStorage, vp, name, length, exact,
                         var_len, write_method)) == NULL) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if (vp->magic == MTETRIGGERENTRYSTATUS)
             *write_method = write_mteTriggerEntryStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         return NULL;
     }
 
@@ -1450,67 +1516,93 @@
 
 
     case MTETRIGGERCOMMENT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerComment;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerCommentLen;
         return (u_char *) StorageTmp->mteTriggerComment;
 
     case MTETRIGGERTEST:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerTest;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerTestLen;
         return (u_char *) StorageTmp->mteTriggerTest;
 
     case MTETRIGGERSAMPLETYPE:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerSampleType;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerSampleType);
         return (u_char *) & StorageTmp->mteTriggerSampleType;
 
     case MTETRIGGERVALUEID:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerValueID;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerValueIDLen * sizeof(oid);
         return (u_char *) StorageTmp->mteTriggerValueID;
 
     case MTETRIGGERVALUEIDWILDCARD:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerValueIDWildcard;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerValueIDWildcard);
         return (u_char *) & StorageTmp->mteTriggerValueIDWildcard;
 
     case MTETRIGGERTARGETTAG:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerTargetTag;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerTargetTagLen;
         return (u_char *) StorageTmp->mteTriggerTargetTag;
 
     case MTETRIGGERCONTEXTNAME:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerContextName;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerContextNameLen;
         return (u_char *) StorageTmp->mteTriggerContextName;
 
     case MTETRIGGERCONTEXTNAMEWILDCARD:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerContextNameWildcard;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerContextNameWildcard);
         return (u_char *) & StorageTmp->mteTriggerContextNameWildcard;
 
     case MTETRIGGERFREQUENCY:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerFrequency;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerFrequency);
         return (u_char *) & StorageTmp->mteTriggerFrequency;
 
     case MTETRIGGEROBJECTSOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerObjectsOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerObjectsOwnerLen;
         return (u_char *) StorageTmp->mteTriggerObjectsOwner;
 
     case MTETRIGGEROBJECTS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerObjects;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerObjectsLen;
         return (u_char *) StorageTmp->mteTriggerObjects;
 
     case MTETRIGGERENABLED:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerEnabled;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerEnabled);
         return (u_char *) & StorageTmp->mteTriggerEnabled;
 
     case MTETRIGGERENTRYSTATUS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerEntryStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerEntryStatus);
         return (u_char *) & StorageTmp->mteTriggerEntryStatus;
 
@@ -1523,7 +1615,7 @@
 
 
 
-
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 write_mteTriggerComment(int action,
                         u_char * var_val,
@@ -1606,10 +1698,11 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerComment */
 
 
 
@@ -1692,10 +1785,11 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerTest */
 
 
 
@@ -1774,11 +1868,11 @@
          * 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;
-}
+} /* write_mteTriggerSampleType */
 
 
 
@@ -1868,10 +1962,11 @@
          * previous values, as these are from a different object?  
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerValueID */
 
 
 
@@ -1951,11 +2046,11 @@
          * 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;
-}
+} /* write_mteTriggerValueIDWildcard */
 
 
 
@@ -2040,10 +2135,11 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerTargetTag */
 
 
 
@@ -2129,10 +2225,11 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerContextName */
 
 
 
@@ -2212,11 +2309,11 @@
          * 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;
-}
+} /* write_mteTriggerContextNameWildcard */
 
 
 
@@ -2299,10 +2396,11 @@
             StorageTmp->mteTriggerEntryStatus == RS_ACTIVE)
             mte_enable_trigger(StorageTmp);
 
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerFrequency */
 
 
 
@@ -2388,10 +2486,11 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerObjectsOwner */
 
 
 
@@ -2476,10 +2575,11 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerObjects */
 
 
 
@@ -2564,14 +2664,11 @@
         else if (StorageTmp->mteTriggerEnabled == MTETRIGGERENABLED_FALSE)
             mte_disable_trigger(StorageTmp);
 
-
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
-}
-
-
-
+} /* write_mteTriggerEnabled */
 
 
 
@@ -2895,10 +2992,15 @@
             StorageTmp->mteTriggerEnabled == MTETRIGGERENABLED_TRUE &&
             StorageTmp->mteTriggerEntryStatus == RS_ACTIVE)
             mte_enable_trigger(StorageTmp);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
-}
+} /* write_mteTriggerEntryStatus */
+
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+
 
 /*
  * send trap 
@@ -2993,7 +3095,8 @@
 
     send_v2trap(var_list);
     snmp_free_varbind(var_list);
-}
+} /* send_mte_trap */
+
 
 void
 last_state_clean(void *data)
@@ -3003,6 +3106,7 @@
     SNMP_FREE(cleanme);
 }
 
+
 /*
  * retrieves requested info in pdu from the current target 
  */
@@ -3094,7 +3198,7 @@
     buf[sizeof(buf) - 1] = '\0';
     DEBUGMSGTL(("mteTriggerTable", "got a variables: %s\n", buf));
     return response;
-}
+} /* mte_get_response */
 
 
 /*
@@ -3125,7 +3229,6 @@
 }
 
 
-
 /*
  * Return 0 if the discontinuity object was checked and no discontinuity has
  * occurred, 1 if the discontinuity object was checked and a discontinuity
@@ -3256,7 +3359,7 @@
      */
     DEBUGMSGTL(("mte_disco", "no discontinuity\n"));
     return 0;
-}
+} /* mte_discontinuity_occurred */
 
 
 void
@@ -3663,7 +3766,8 @@
     }
 
     item->started = MTE_STARTED;
-}
+} /* mte_run_trigger */
+
 
 
 /*
diff --git a/agent/mibgroup/disman/mteTriggerTable.h b/agent/mibgroup/disman/mteTriggerTable.h
index 18914dd..c427602 100644
--- a/agent/mibgroup/disman/mteTriggerTable.h
+++ b/agent/mibgroup/disman/mteTriggerTable.h
@@ -229,7 +229,7 @@
      netsnmp_pdu    *mte_get_response(struct mteTriggerTable_data *,
                                       netsnmp_pdu *);
 
-
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_mteTriggerComment;
      WriteMethod     write_mteTriggerTest;
      WriteMethod     write_mteTriggerSampleType;
@@ -243,8 +243,7 @@
      WriteMethod     write_mteTriggerObjects;
      WriteMethod     write_mteTriggerEnabled;
      WriteMethod     write_mteTriggerEntryStatus;
-
-     WriteMethod     write_mteTriggerEntryStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
      void            mte_enable_trigger(struct mteTriggerTable_data *item);
      void            mte_disable_trigger(struct mteTriggerTable_data
diff --git a/agent/mibgroup/disman/mteTriggerThresholdTable.c b/agent/mibgroup/disman/mteTriggerThresholdTable.c
index 038a2fb..be963c1 100644
--- a/agent/mibgroup/disman/mteTriggerThresholdTable.c
+++ b/agent/mibgroup/disman/mteTriggerThresholdTable.c
@@ -48,62 +48,115 @@
  */
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 mteTriggerThresholdTable_variables[] = {
     /*
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
      */
 #define   MTETRIGGERTHRESHOLDSTARTUP  3
-    {MTETRIGGERTHRESHOLDSTARTUP, ASN_INTEGER, RWRITE,
+    {MTETRIGGERTHRESHOLDSTARTUP, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerThresholdTable, 2, {1, 1}},
 #define   MTETRIGGERTHRESHOLDRISING  4
-    {MTETRIGGERTHRESHOLDRISING, ASN_INTEGER, RWRITE,
+    {MTETRIGGERTHRESHOLDRISING, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerThresholdTable, 2, {1, 2}},
 #define   MTETRIGGERTHRESHOLDFALLING  5
-    {MTETRIGGERTHRESHOLDFALLING, ASN_INTEGER, RWRITE,
+    {MTETRIGGERTHRESHOLDFALLING, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerThresholdTable, 2, {1, 3}},
 #define   MTETRIGGERTHRESHOLDDELTARISING  6
-    {MTETRIGGERTHRESHOLDDELTARISING, ASN_INTEGER, RWRITE,
+    {MTETRIGGERTHRESHOLDDELTARISING, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerThresholdTable, 2, {1, 4}},
 #define   MTETRIGGERTHRESHOLDDELTAFALLING  7
-    {MTETRIGGERTHRESHOLDDELTAFALLING, ASN_INTEGER, RWRITE,
+    {MTETRIGGERTHRESHOLDDELTAFALLING, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerThresholdTable, 2, {1, 5}},
 #define   MTETRIGGERTHRESHOLDOBJECTSOWNER  8
-    {MTETRIGGERTHRESHOLDOBJECTSOWNER, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGERTHRESHOLDOBJECTSOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerThresholdTable, 2, {1, 6}},
 #define   MTETRIGGERTHRESHOLDOBJECTS  9
-    {MTETRIGGERTHRESHOLDOBJECTS, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGERTHRESHOLDOBJECTS, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerThresholdTable, 2, {1, 7}},
 #define   MTETRIGGERTHRESHOLDRISINGEVENTOWNER  10
-    {MTETRIGGERTHRESHOLDRISINGEVENTOWNER, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGERTHRESHOLDRISINGEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerThresholdTable, 2, {1, 8}},
 #define   MTETRIGGERTHRESHOLDRISINGEVENT  11
-    {MTETRIGGERTHRESHOLDRISINGEVENT, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGERTHRESHOLDRISINGEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerThresholdTable, 2, {1, 9}},
 #define   MTETRIGGERTHRESHOLDFALLINGEVENTOWNER  12
-    {MTETRIGGERTHRESHOLDFALLINGEVENTOWNER, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGERTHRESHOLDFALLINGEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerThresholdTable, 2, {1, 10}},
 #define   MTETRIGGERTHRESHOLDFALLINGEVENT  13
-    {MTETRIGGERTHRESHOLDFALLINGEVENT, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGERTHRESHOLDFALLINGEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerThresholdTable, 2, {1, 11}},
 #define   MTETRIGGERTHRESHOLDDELTARISINGEVENTOWNER  14
-    {MTETRIGGERTHRESHOLDDELTARISINGEVENTOWNER, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGERTHRESHOLDDELTARISINGEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerThresholdTable, 2, {1, 12}},
 #define   MTETRIGGERTHRESHOLDDELTARISINGEVENT  15
-    {MTETRIGGERTHRESHOLDDELTARISINGEVENT, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGERTHRESHOLDDELTARISINGEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerThresholdTable, 2, {1, 13}},
 #define   MTETRIGGERTHRESHOLDDELTAFALLINGEVENTOWNER  16
-    {MTETRIGGERTHRESHOLDDELTAFALLINGEVENTOWNER, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGERTHRESHOLDDELTAFALLINGEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerThresholdTable, 2, {1, 14}},
 #define   MTETRIGGERTHRESHOLDDELTAFALLINGEVENT  17
-    {MTETRIGGERTHRESHOLDDELTAFALLINGEVENT, ASN_OCTET_STR, RWRITE,
+    {MTETRIGGERTHRESHOLDDELTAFALLINGEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_mteTriggerThresholdTable, 2, {1, 15}},
-
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 mteTriggerThresholdTable_variables[] = {
+    /*
+     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
+     */
+#define   MTETRIGGERTHRESHOLDSTARTUP  3
+    {MTETRIGGERTHRESHOLDSTARTUP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 1}},
+#define   MTETRIGGERTHRESHOLDRISING  4
+    {MTETRIGGERTHRESHOLDRISING, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 2}},
+#define   MTETRIGGERTHRESHOLDFALLING  5
+    {MTETRIGGERTHRESHOLDFALLING, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 3}},
+#define   MTETRIGGERTHRESHOLDDELTARISING  6
+    {MTETRIGGERTHRESHOLDDELTARISING, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 4}},
+#define   MTETRIGGERTHRESHOLDDELTAFALLING  7
+    {MTETRIGGERTHRESHOLDDELTAFALLING, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 5}},
+#define   MTETRIGGERTHRESHOLDOBJECTSOWNER  8
+    {MTETRIGGERTHRESHOLDOBJECTSOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 6}},
+#define   MTETRIGGERTHRESHOLDOBJECTS  9
+    {MTETRIGGERTHRESHOLDOBJECTS, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 7}},
+#define   MTETRIGGERTHRESHOLDRISINGEVENTOWNER  10
+    {MTETRIGGERTHRESHOLDRISINGEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 8}},
+#define   MTETRIGGERTHRESHOLDRISINGEVENT  11
+    {MTETRIGGERTHRESHOLDRISINGEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 9}},
+#define   MTETRIGGERTHRESHOLDFALLINGEVENTOWNER  12
+    {MTETRIGGERTHRESHOLDFALLINGEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 10}},
+#define   MTETRIGGERTHRESHOLDFALLINGEVENT  13
+    {MTETRIGGERTHRESHOLDFALLINGEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 11}},
+#define   MTETRIGGERTHRESHOLDDELTARISINGEVENTOWNER  14
+    {MTETRIGGERTHRESHOLDDELTARISINGEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 12}},
+#define   MTETRIGGERTHRESHOLDDELTARISINGEVENT  15
+    {MTETRIGGERTHRESHOLDDELTARISINGEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 13}},
+#define   MTETRIGGERTHRESHOLDDELTAFALLINGEVENTOWNER  16
+    {MTETRIGGERTHRESHOLDDELTAFALLINGEVENTOWNER, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 14}},
+#define   MTETRIGGERTHRESHOLDDELTAFALLINGEVENT  17
+    {MTETRIGGERTHRESHOLDDELTAFALLINGEVENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mteTriggerThresholdTable, 2, {1, 15}},
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+
 /*
  * (L = length of the oidsuffix) 
  */
 
-
 /*
  * global storage of our data, saved in and configured by header_complex() 
  */
@@ -151,6 +204,10 @@
 
     DEBUGMSGTL(("mteTriggerThresholdTable",
                 "var_mteTriggerThresholdTable: Entering...  \n"));
+
+	/* set default value */
+	*write_method = NULL;
+
     /*
      * this assumes you have registered all your data properly
      */
@@ -170,80 +227,110 @@
 
 
     case MTETRIGGERTHRESHOLDSTARTUP:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdStartup;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerThresholdStartup);
         return (u_char *) & StorageTmp->mteTriggerThresholdStartup;
 
     case MTETRIGGERTHRESHOLDRISING:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdRising;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerThresholdRising);
         return (u_char *) & StorageTmp->mteTriggerThresholdRising;
 
     case MTETRIGGERTHRESHOLDFALLING:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdFalling;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerThresholdFalling);
         return (u_char *) & StorageTmp->mteTriggerThresholdFalling;
 
     case MTETRIGGERTHRESHOLDDELTARISING:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdDeltaRising;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerThresholdDeltaRising);
         return (u_char *) & StorageTmp->mteTriggerThresholdDeltaRising;
 
     case MTETRIGGERTHRESHOLDDELTAFALLING:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdDeltaFalling;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->mteTriggerThresholdDeltaFalling);
         return (u_char *) & StorageTmp->mteTriggerThresholdDeltaFalling;
 
     case MTETRIGGERTHRESHOLDOBJECTSOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdObjectsOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdObjectsOwnerLen;
         return (u_char *) StorageTmp->mteTriggerThresholdObjectsOwner;
 
     case MTETRIGGERTHRESHOLDOBJECTS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdObjects;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdObjectsLen;
         return (u_char *) StorageTmp->mteTriggerThresholdObjects;
 
     case MTETRIGGERTHRESHOLDRISINGEVENTOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdRisingEventOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdRisingEventOwnerLen;
         return (u_char *) StorageTmp->mteTriggerThresholdRisingEventOwner;
 
     case MTETRIGGERTHRESHOLDRISINGEVENT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdRisingEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdRisingEventLen;
         return (u_char *) StorageTmp->mteTriggerThresholdRisingEvent;
 
     case MTETRIGGERTHRESHOLDFALLINGEVENTOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdFallingEventOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdFallingEventOwnerLen;
         return (u_char *) StorageTmp->mteTriggerThresholdFallingEventOwner;
 
     case MTETRIGGERTHRESHOLDFALLINGEVENT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdFallingEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdFallingEventLen;
         return (u_char *) StorageTmp->mteTriggerThresholdFallingEvent;
 
     case MTETRIGGERTHRESHOLDDELTARISINGEVENTOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdDeltaRisingEventOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdDeltaRisingEventOwnerLen;
         return (u_char *) StorageTmp->
             mteTriggerThresholdDeltaRisingEventOwner;
 
     case MTETRIGGERTHRESHOLDDELTARISINGEVENT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdDeltaRisingEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdDeltaRisingEventLen;
         return (u_char *) StorageTmp->mteTriggerThresholdDeltaRisingEvent;
 
     case MTETRIGGERTHRESHOLDDELTAFALLINGEVENTOWNER:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdDeltaFallingEventOwner;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len =
             StorageTmp->mteTriggerThresholdDeltaFallingEventOwnerLen;
         return (u_char *) StorageTmp->
             mteTriggerThresholdDeltaFallingEventOwner;
 
     case MTETRIGGERTHRESHOLDDELTAFALLINGEVENT:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_mteTriggerThresholdDeltaFallingEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = StorageTmp->mteTriggerThresholdDeltaFallingEventLen;
         return (u_char *) StorageTmp->mteTriggerThresholdDeltaFallingEvent;
 
@@ -256,7 +343,7 @@
 
 
 
-
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
 int
 write_mteTriggerThresholdStartup(int action,
                                  u_char * var_val,
@@ -1607,3 +1694,5 @@
     }
     return SNMP_ERR_NOERROR;
 }
+
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
diff --git a/agent/mibgroup/disman/mteTriggerThresholdTable.h b/agent/mibgroup/disman/mteTriggerThresholdTable.h
index 7aa6cec..8f33011 100644
--- a/agent/mibgroup/disman/mteTriggerThresholdTable.h
+++ b/agent/mibgroup/disman/mteTriggerThresholdTable.h
@@ -27,6 +27,7 @@
      void            init_mteTriggerThresholdTable(void);
      FindVarMethod   var_mteTriggerThresholdTable;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_mteTriggerThresholdStartup;
      WriteMethod     write_mteTriggerThresholdRising;
      WriteMethod     write_mteTriggerThresholdFalling;
@@ -42,5 +43,6 @@
      WriteMethod     write_mteTriggerThresholdDeltaRisingEvent;
      WriteMethod     write_mteTriggerThresholdDeltaFallingEventOwner;
      WriteMethod     write_mteTriggerThresholdDeltaFallingEvent;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 #endif                          /* _MIBGROUP_MTETRIGGERTHRESHOLDTABLE_H */
diff --git a/agent/mibgroup/disman/nslookup/lookupCtlTable.c b/agent/mibgroup/disman/nslookup/lookupCtlTable.c
index bcedd07..0f71da6 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,34 @@
 /*
  * 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-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(header_complex_find_entry)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+#include <arpa/inet.h>
+#include <netdb.h>
+
 #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.
  */
@@ -51,24 +51,49 @@
     { 1, 3, 6, 1, 2, 1, 82, 1, 3 };
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 lookupCtlTable_variables[] = {
     /*
-     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
+     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix
      */
-    {COLUMN_LOOKUPCTLTARGETADDRESSTYPE, ASN_INTEGER, RWRITE, var_lookupCtlTable, 2, {1, 3}},
-    {COLUMN_LOOKUPCTLTARGETADDRESS,   ASN_OCTET_STR, RWRITE, var_lookupCtlTable, 2, {1, 4}},
-    {COLUMN_LOOKUPCTLOPERSTATUS, ASN_INTEGER, RONLY, var_lookupCtlTable, 2, {1, 5}},
-    {COLUMN_LOOKUPCTLTIME,      ASN_UNSIGNED, RONLY, var_lookupCtlTable, 2, {1, 6}},
-    {COLUMN_LOOKUPCTLRC,         ASN_INTEGER, RONLY, var_lookupCtlTable, 2, {1, 7}},
-    {COLUMN_LOOKUPCTLROWSTATUS, ASN_INTEGER, RWRITE, var_lookupCtlTable, 2, {1, 8}}
+    {COLUMN_LOOKUPCTLTARGETADDRESSTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_lookupCtlTable, 2, {1, 3}},
+    {COLUMN_LOOKUPCTLTARGETADDRESS,   ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_lookupCtlTable, 2, {1, 4}},
+    {COLUMN_LOOKUPCTLOPERSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_lookupCtlTable, 2, {1, 5}},
+    {COLUMN_LOOKUPCTLTIME,      ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_lookupCtlTable, 2, {1, 6}},
+    {COLUMN_LOOKUPCTLRC,         ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_lookupCtlTable, 2, {1, 7}},
+    {COLUMN_LOOKUPCTLROWSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_lookupCtlTable, 2, {1, 8}}
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 lookupCtlTable_variables[] = {
+    /*
+     * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix
+     */
+    {COLUMN_LOOKUPCTLTARGETADDRESSTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_lookupCtlTable, 2, {1, 3}},
+    {COLUMN_LOOKUPCTLTARGETADDRESS,   ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_lookupCtlTable, 2, {1, 4}},
+    {COLUMN_LOOKUPCTLOPERSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_lookupCtlTable, 2, {1, 5}},
+    {COLUMN_LOOKUPCTLTIME,      ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_lookupCtlTable, 2, {1, 6}},
+    {COLUMN_LOOKUPCTLRC,         ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_lookupCtlTable, 2, {1, 7}},
+    {COLUMN_LOOKUPCTLROWSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_lookupCtlTable, 2, {1, 8}}
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 
 /*
  * global storage of our data, saved in and configured by header_complex() 
  */
 
-
 struct header_complex_index *lookupCtlTableStorage = NULL;
 struct header_complex_index *lookupResultsTableStorage = NULL;
 
@@ -76,7 +101,6 @@
 int modify_lookupCtlOperStatus(struct lookupTable_data *thedata, long val);
 int modify_lookupCtlRc(struct lookupTable_data *thedata, long val);
 
-
 void
 init_lookupCtlTable(void)
 {
@@ -109,11 +133,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;
@@ -127,16 +152,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) ==
@@ -158,10 +184,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...  "));
             /*
@@ -179,7 +210,6 @@
             p = p->next;
         } while (p != NULL);
 
-
     DEBUGMSGTL(("lookupResultsTable", "done.\n"));
     return SNMPERR_SUCCESS;
 }
@@ -216,8 +246,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...  "));
 
@@ -300,10 +329,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;
@@ -313,7 +340,6 @@
             strcat(line, "lookupCtlTable ");
             cptr = line + strlen(line);
 
-
             cptr =
                 read_config_store_data(ASN_OCTET_STR, cptr,
                                        &StorageTmp->lookupCtlOwnerIndex,
@@ -350,9 +376,6 @@
                 read_config_store_data(ASN_INTEGER, cptr,
                                        &StorageTmp->lookupCtlRowStatus,
                                        &tmpint);
-
-
-
             snmpd_store_config(line);
         }
     }
@@ -374,9 +397,8 @@
                    size_t *length,
                    int exact, size_t *var_len, WriteMethod ** write_method)
 {
-
-
     struct lookupTable_data *StorageTmp = NULL;
+        *write_method = NULL;
 
     /*
      * this assumes you have registered all your data properly
@@ -393,38 +415,37 @@
      * this is where we do the value assignments for the mib results.
      */
     switch (vp->magic) {
-
-
     case COLUMN_LOOKUPCTLTARGETADDRESSTYPE:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_lookupCtlTargetAddressType;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->lookupCtlTargetAddressType);
         return (u_char *) & StorageTmp->lookupCtlTargetAddressType;
 
     case COLUMN_LOOKUPCTLTARGETADDRESS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_lookupCtlTargetAddress;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = (StorageTmp->lookupCtlTargetAddressLen);
-
         return (u_char *) StorageTmp->lookupCtlTargetAddress;
 
     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:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_lookupCtlRowStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         *var_len = sizeof(StorageTmp->lookupCtlRowStatus);
-
         return (u_char *) & StorageTmp->lookupCtlRowStatus;
 
     default:
@@ -434,28 +455,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;
@@ -466,454 +526,275 @@
     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);
-        gettimeofday(&tpend, NULL);
+        netsnmp_get_monotonic_clock(&tpstart);
+        lookup = netsnmp_gethostbyaddr(&addr_in, sizeof(addr_in), AF_INET);
+        netsnmp_get_monotonic_clock(&tpend);
         timeuse = 1000000 * (tpend.tv_sec - tpstart.tv_sec) +
             tpend.tv_usec - tpstart.tv_usec;
         timeuse /= 1000;
         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);
+        netsnmp_get_monotonic_clock(&tpstart);
+        lookup = netsnmp_gethostbyname(address);
+        netsnmp_get_monotonic_clock(&tpend);
         timeuse4 = 1000000 * (tpend.tv_sec - tpstart.tv_sec) +
             tpend.tv_usec - tpstart.tv_usec;
-        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) {
-                bcopy(*lookup->h_addr_list++, (char *) &a, sizeof(a));
+            while (lookup->h_addr_list[i]) {
+                char buf[64];
+                int buflen;
 
-                temp = SNMP_MALLOC_STRUCT(lookupResultsTable_data);
-                if (temp == 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;
                 }
-                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 = 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;
-
-        gettimeofday(&tpstart, NULL);
-        hp = gethostbyname2(address, AF_INET6);
-        gettimeofday(&tpend, NULL);
+#if HAVE_GETADDRINFO
+        netsnmp_get_monotonic_clock(&tpstart);
+        res = netsnmp_getaddrinfo(address, NULL, &hints, &ais);
+        netsnmp_get_monotonic_clock(&tpend);
         timeuse6 = 1000000 * (tpend.tv_sec - tpstart.tv_sec) +
             tpend.tv_usec - tpstart.tv_usec;
-        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
+        netsnmp_get_monotonic_clock(&tpstart);
+        lookup = gethostbyname2(address, AF_INET6);
+        netsnmp_get_monotonic_clock(&tpend);
+        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);
-        gettimeofday(&tpend, NULL);
+        netsnmp_get_monotonic_clock(&tpstart);
+        lookup = netsnmp_gethostbyaddr(&addr_in6, sizeof(addr_in6), AF_INET6);
+        netsnmp_get_monotonic_clock(&tpend);
         timeuse = 1000000 * (tpend.tv_sec - tpstart.tv_sec) +
             tpend.tv_usec - tpstart.tv_usec;
         timeuse /= 1000;
         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;
     }
 }
@@ -925,8 +806,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 =
@@ -950,8 +834,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 =
@@ -975,8 +862,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 =
@@ -1003,9 +893,12 @@
     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 */
-    bzero(newoid, MAX_OID_LEN * sizeof(oid));
+    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);
 
 
@@ -1032,6 +925,7 @@
 }
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 write_lookupCtlTargetAddressType(int action,
                                  u_char * var_val,
@@ -1069,32 +963,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 
@@ -1102,12 +992,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;
@@ -1150,37 +1043,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);
@@ -1189,7 +1077,6 @@
 
         break;
 
-
     case UNDO:
         /*
          * Back out any changes made in the ACTION case 
@@ -1201,7 +1088,6 @@
 
         break;
 
-
     case COMMIT:
         /*
          * Things are working well, so it's now safe to make the change
@@ -1211,6 +1097,9 @@
         free(tmpvar);
         tmpvar = NULL;
 
+        /** set up to save persistent store */
+        snmp_store_needed(NULL);
+
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -1218,9 +1107,6 @@
 
 
 
-
-
-
 int
 write_lookupCtlRowStatus(int action,
                          u_char * var_val,
@@ -1229,7 +1115,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);
@@ -1276,7 +1162,6 @@
              * ditch illegal values now 
              */
             if (set_value == RS_ACTIVE || set_value == RS_NOTINSERVICE) {
-
                 return SNMP_ERR_INCONSISTENTVALUE;
             }
 
@@ -1378,7 +1263,7 @@
              * XXX: fill in default row values here into StorageNew 
              */
 
-            StorageNew->lookupCtlTargetAddressType = 1; /* ipv4 */
+            StorageNew->lookupCtlTargetAddressType = INETADDRESSTYPE_IPV4;
 
             StorageNew->lookupCtlRowStatus = set_value;
 
@@ -1389,13 +1274,8 @@
              * XXX: free, zero vars, no longer needed? 
              */
         }
-
-
         break;
 
-
-
-
     case FREE:
         /*
          * XXX: free, zero vars 
@@ -1405,9 +1285,6 @@
          */
         break;
 
-
-
-
     case ACTION:
         /*
          * The variable has been stored in set_value for you to
@@ -1415,8 +1292,6 @@
          * it.  Note that anything done here must be reversable in
          * the UNDO case 
          */
-
-
         if (StorageTmp == NULL) {
             /*
              * row creation, so add it 
@@ -1425,11 +1300,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? 
@@ -1461,9 +1334,6 @@
         }
         break;
 
-
-
-
     case UNDO:
         /*
          * Back out any changes made in the ACTION case 
@@ -1495,9 +1365,6 @@
         }
         break;
 
-
-
-
     case COMMIT:
         /*
          * Things are working well, so it's now safe to make the change
@@ -1511,15 +1378,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 
              */
@@ -1535,18 +1396,20 @@
             }
         }
         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;
 }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
diff --git a/agent/mibgroup/disman/nslookup/lookupCtlTable.h b/agent/mibgroup/disman/nslookup/lookupCtlTable.h
index f73b062..085b25b 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 
@@ -65,23 +64,24 @@
 void            parse_lookupCtlTable(const char *, char *);
 SNMPCallback    store_lookupCtlTable;
 
-
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
 WriteMethod     write_lookupCtlTargetAddressType;
 WriteMethod     write_lookupCtlTargetAddress;
 WriteMethod     write_lookupCtlRowStatus;
 
 WriteMethod     write_lookupCtlRowStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * column number definitions for table lookupCtlTable 
  */
 #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 c5fd2b7..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>
@@ -42,8 +28,10 @@
     { 1, 3, 6, 1, 2, 1, 82, 1, 4 };
 
 struct variable2 lookupResultsTable_variables[] = {
-    {COLUMN_LOOKUPRESULTSADDRESSTYPE, ASN_INTEGER, RONLY, var_lookupResultsTable, 2, {1, 2}},
-    {COLUMN_LOOKUPRESULTSADDRESS,   ASN_OCTET_STR, RONLY, var_lookupResultsTable, 2, {1, 3}}
+    {COLUMN_LOOKUPRESULTSADDRESSTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_lookupResultsTable, 2, {1, 2}},
+    {COLUMN_LOOKUPRESULTSADDRESS,   ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_lookupResultsTable, 2, {1, 3}}
 };
 
 /*
@@ -237,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 1e102a0..87b09ef 100644
--- a/agent/mibgroup/disman/ping/pingCtlTable.c
+++ b/agent/mibgroup/disman/ping/pingCtlTable.c
@@ -55,6 +55,7 @@
 static __inline__ int ipv6_addr_any(struct in6_addr *);
 static char    *pr_addr(struct in6_addr *, int);
 static char    *pr_addr_n(struct in6_addr *);
+void pingCtlTable_cleaner(struct header_complex_index *thestuff);
 
 /*
  *pingCtlTable_variables_oid:
@@ -64,6 +65,7 @@
 
 oid             pingCtlTable_variables_oid[] =
     { 1, 3, 6, 1, 2, 1, 80, 1, 2 };
+static const int pingCtlTable_variables_oid_len = sizeof(pingCtlTable_variables_oid)/sizeof(pingCtlTable_variables_oid[0]);
 
 /* trap */
 oid             pingProbeFailed[] = { 1, 3, 6, 1, 2, 1, 80, 0, 1 };
@@ -75,27 +77,48 @@
     /*
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
      */
-    {COLUMN_PINGCTLTARGETADDRESSTYPE, ASN_INTEGER, RWRITE, var_pingCtlTable, 2, {1, 3}},
-    {COLUMN_PINGCTLTARGETADDRESS,   ASN_OCTET_STR, RWRITE, var_pingCtlTable, 2, {1, 4}},
-    {COLUMN_PINGCTLDATASIZE,         ASN_UNSIGNED, RONLY, var_pingCtlTable, 2, {1, 5}},
-    {COLUMN_PINGCTLTIMEOUT,          ASN_UNSIGNED, RONLY, var_pingCtlTable, 2, {1, 6}},
-    {COLUMN_PINGCTLPROBECOUNT,       ASN_UNSIGNED, RONLY, var_pingCtlTable, 2, {1, 7}},
-    {COLUMN_PINGCTLADMINSTATUS,       ASN_INTEGER, RWRITE, var_pingCtlTable, 2, {1, 8}},
-    {COLUMN_PINGCTLDATAFILL,        ASN_OCTET_STR, RWRITE, var_pingCtlTable, 2, {1, 9}},
-    {COLUMN_PINGCTLFREQUENCY,        ASN_UNSIGNED, RWRITE, var_pingCtlTable, 2, {1, 10}},
-    {COLUMN_PINGCTLMAXROWS,          ASN_UNSIGNED, RWRITE, var_pingCtlTable, 2, {1, 11}},
-    {COLUMN_PINGCTLSTORAGETYPE,       ASN_INTEGER, RWRITE, var_pingCtlTable, 2, {1, 12}},
-    {COLUMN_PINGCTLTRAPGENERATION,  ASN_OCTET_STR, RWRITE, var_pingCtlTable, 2, {1, 13}},
-    {COLUMN_PINGCTLTRAPPROBEFAILUREFILTER, ASN_UNSIGNED, RWRITE, var_pingCtlTable, 2, {1, 14}},
-    {COLUMN_PINGCTLTRAPTESTFAILUREFILTER,  ASN_UNSIGNED, RWRITE, var_pingCtlTable, 2, {1, 15}},
-    {COLUMN_PINGCTLTYPE,            ASN_OBJECT_ID, RWRITE, var_pingCtlTable, 2, {1, 16}},
-    {COLUMN_PINGCTLDESCR,           ASN_OCTET_STR, RWRITE, var_pingCtlTable, 2, {1, 17}},
-    {COLUMN_PINGCTLSOURCEADDRESSTYPE, ASN_INTEGER, RWRITE, var_pingCtlTable, 2, {1, 18}},
-    {COLUMN_PINGCTLSOURCEADDRESS,   ASN_OCTET_STR, RWRITE, var_pingCtlTable, 2, {1, 19}},
-    {COLUMN_PINGCTLIFINDEX,           ASN_INTEGER, RWRITE, var_pingCtlTable, 2, {1, 20}},
-    {COLUMN_PINGCTLBYPASSROUTETABLE,  ASN_INTEGER, RWRITE, var_pingCtlTable, 2, {1, 21}},
-    {COLUMN_PINGCTLDSFIELD,          ASN_UNSIGNED, RWRITE, var_pingCtlTable, 2, {1, 22}},
-    {COLUMN_PINGCTLROWSTATUS,         ASN_INTEGER, RWRITE, var_pingCtlTable, 2, {1, 23}}
+    {COLUMN_PINGCTLTARGETADDRESSTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 3}},
+    {COLUMN_PINGCTLTARGETADDRESS,   ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 4}},
+    {COLUMN_PINGCTLDATASIZE,         ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_pingCtlTable, 2, {1, 5}},
+    {COLUMN_PINGCTLTIMEOUT,          ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_pingCtlTable, 2, {1, 6}},
+    {COLUMN_PINGCTLPROBECOUNT,       ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_pingCtlTable, 2, {1, 7}},
+    {COLUMN_PINGCTLADMINSTATUS,       ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 8}},
+    {COLUMN_PINGCTLDATAFILL,        ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 9}},
+    {COLUMN_PINGCTLFREQUENCY,        ASN_UNSIGNED, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 10}},
+    {COLUMN_PINGCTLMAXROWS,          ASN_UNSIGNED, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 11}},
+    {COLUMN_PINGCTLSTORAGETYPE,       ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 12}},
+    {COLUMN_PINGCTLTRAPGENERATION,  ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 13}},
+    {COLUMN_PINGCTLTRAPPROBEFAILUREFILTER, ASN_UNSIGNED, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 14}},
+    {COLUMN_PINGCTLTRAPTESTFAILUREFILTER,  ASN_UNSIGNED, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 15}},
+    {COLUMN_PINGCTLTYPE,            ASN_OBJECT_ID, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 16}},
+    {COLUMN_PINGCTLDESCR,           ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 17}},
+    {COLUMN_PINGCTLSOURCEADDRESSTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 18}},
+    {COLUMN_PINGCTLSOURCEADDRESS,   ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 19}},
+    {COLUMN_PINGCTLIFINDEX,           ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 20}},
+    {COLUMN_PINGCTLBYPASSROUTETABLE,  ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 21}},
+    {COLUMN_PINGCTLDSFIELD,          ASN_UNSIGNED, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 22}},
+    {COLUMN_PINGCTLROWSTATUS,         ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_pingCtlTable, 2, {1, 23}}
 };
 
 
@@ -136,14 +159,24 @@
     DEBUGMSGTL(("pingCtlTable", "done.\n"));
 }
 
+void shutdown_pingCtlTable(void)
+{
+    snmp_unregister_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA,
+                             store_pingCtlTable, NULL, 1);
+    snmpd_unregister_config_handler("pingCtlTable");
+    unregister_mib(pingCtlTable_variables_oid, pingCtlTable_variables_oid_len);
+    pingCtlTable_cleaner(pingCtlTableStorage);
+    pingCtlTableStorage = NULL;
+}
+
 struct pingCtlTable_data *
 create_pingCtlTable_data(void)
 {
     struct pingCtlTable_data *StorageNew = NULL;
+
     StorageNew = SNMP_MALLOC_STRUCT(pingCtlTable_data);
-    if (StorageNew == NULL) {
-        exit(1);
-    }
+    if (StorageNew == NULL)
+        return NULL;
     StorageNew->pingCtlTargetAddressType = 1;
     StorageNew->pingCtlTargetAddress = strdup("");
     StorageNew->pingCtlTargetAddressLen = 0;
@@ -151,19 +184,17 @@
     StorageNew->pingCtlTimeOut = 3;
     StorageNew->pingCtlProbeCount = 1;
     StorageNew->pingCtlAdminStatus = 2;
-    StorageNew->pingCtlDataFill = (char *) malloc(strlen("00") + 1);
+    StorageNew->pingCtlDataFill = strdup("00");
     if (StorageNew->pingCtlDataFill == NULL) {
-        exit(1);
+        free(StorageNew);
+        return NULL;
     }
-    memcpy(StorageNew->pingCtlDataFill, "00", strlen("00") + 1);
-    StorageNew->pingCtlDataFill[strlen("00")] = '\0';
     StorageNew->pingCtlDataFillLen = strlen(StorageNew->pingCtlDataFill);
     StorageNew->pingCtlFrequency = 0;
     StorageNew->pingCtlMaxRows = 50;
     StorageNew->pingCtlStorageType = 1;
     StorageNew->pingCtlTrapGeneration = strdup("");
     StorageNew->pingCtlTrapGenerationLen = 0;
-    StorageNew->pingCtlTrapGenerationLen = 0;
     StorageNew->pingCtlTrapProbeFailureFilter = 1;
     StorageNew->pingCtlTrapTestFailureFilter = 1;
     StorageNew->pingCtlType = calloc(1, sizeof(oid) * sizeof(2));       /* 0.0 */
@@ -184,6 +215,20 @@
     return StorageNew;
 }
 
+static void free_pingCtlTable_data(struct pingCtlTable_data *StorageDel)
+{
+    netsnmp_assert(StorageDel);
+    free(StorageDel->pingCtlOwnerIndex);
+    free(StorageDel->pingCtlTestName);
+    free(StorageDel->pingCtlTargetAddress);
+    free(StorageDel->pingCtlDataFill);
+    free(StorageDel->pingCtlTrapGeneration);
+    free(StorageDel->pingCtlType);
+    free(StorageDel->pingCtlDescr);
+    free(StorageDel->pingCtlSourceAddress);
+    free(StorageDel);
+}
+
 /*
  * pingCtlTable_add(): adds a structure node to our data set 
  */
@@ -200,15 +245,16 @@
      */
 
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlOwnerIndex, thedata->pingCtlOwnerIndexLen);       /* pingCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlTestName, thedata->pingCtlTestNameLen);   /* pingCtlOperationName */
-
-
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlOwnerIndex,
+                              thedata->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlTestName,
+                              thedata->pingCtlTestNameLen);
     header_complex_add_data(&pingCtlTableStorage, vars, thedata);
 
     DEBUGMSGTL(("pingCtlTable", "registered an entry\n"));
-    vars = NULL;
-    DEBUGMSGTL(("pingCtlTable", "done.\n"));
+
     return SNMPERR_SUCCESS;
 }
 
@@ -216,12 +262,16 @@
 pingResultsTable_add(struct pingCtlTable_data *thedata)
 {
     netsnmp_variable_list *vars_list = NULL;
-    struct pingResultsTable_data *p = NULL;
+    struct pingResultsTable_data *p;
+
     p = thedata->pingResults;
     if (thedata->pingResults != NULL) {
 
-        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR, (char *) p->pingCtlOwnerIndex, p->pingCtlOwnerIndexLen);  /* pingCtlOwnerIndex */
-        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR, (char *) p->pingCtlTestName, p->pingCtlTestNameLen);      /* pingCtlOperationName */
+        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR,
+                                  p->pingCtlOwnerIndex,
+                                  p->pingCtlOwnerIndexLen);
+        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR,
+                                  p->pingCtlTestName, p->pingCtlTestNameLen);
 
         /*
          * XXX: fill in default row values here into StorageNew 
@@ -241,8 +291,6 @@
 
     }
 
-    DEBUGMSGTL(("pingResultsTable", "done.\n"));
-    vars_list = NULL;
     return SNMPERR_SUCCESS;
 }
 
@@ -251,11 +299,18 @@
 pingProbeHistoryTable_add(struct pingProbeHistoryTable_data *thedata)
 {
     netsnmp_variable_list *vars_list;
+
     vars_list = NULL;
     if (thedata != NULL) {
-        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlOwnerIndex, thedata->pingCtlOwnerIndexLen);      /* pingCtlOwnerIndex */
-        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlTestName, thedata->pingCtlTestNameLen);  /* pingCtlTestName */
-        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_UNSIGNED, (char *) &thedata->pingProbeHistoryIndex, sizeof(thedata->pingProbeHistoryIndex)); /* pingProbeHistoryIndex */
+        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR,
+                                  thedata->pingCtlOwnerIndex,
+                                  thedata->pingCtlOwnerIndexLen);
+        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR,
+                                  thedata->pingCtlTestName,
+                                  thedata->pingCtlTestNameLen);
+        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_UNSIGNED,
+                                  &thedata->pingProbeHistoryIndex,
+                                  sizeof(thedata->pingProbeHistoryIndex));
 
         /*
          * XXX: fill in default row values here into StorageNew 
@@ -274,56 +329,43 @@
         DEBUGMSGTL(("pingProbeHistoryTable", "out finished\n"));
     }
     
-    vars_list = NULL;
-    DEBUGMSGTL(("pingProbeHistoryTable", "done.\n"));
     return SNMPERR_SUCCESS;
 }
 
 int
 pingProbeHistoryTable_addall(struct pingCtlTable_data *thedata)
 {
-    netsnmp_variable_list *vars_list = NULL;
-    struct pingProbeHistoryTable_data *p = NULL;
-    p = thedata->pingProbeHis;
-    if (thedata->pingProbeHis != NULL)
-        do {
-            snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR, (char *) p->pingCtlOwnerIndex, p->pingCtlOwnerIndexLen);      /* pingCtlOwnerIndex */
-            snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR, (char *) p->pingCtlTestName, p->pingCtlTestNameLen);  /* pingCtlTestName */
-            snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_UNSIGNED, (char *) &p->pingProbeHistoryIndex, sizeof(p->pingProbeHistoryIndex)); /* pingProbeHistoryIndex */
+    netsnmp_variable_list *vars_list;
+    struct pingProbeHistoryTable_data *p;
 
-            /*
-             * XXX: fill in default row values here into StorageNew 
-             * 
-             */
+    for (p = thedata->pingProbeHis; p; p = p->next) {
+        vars_list = NULL;
+        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR,
+                                  p->pingCtlOwnerIndex,
+                                  p->pingCtlOwnerIndexLen);
+        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_OCTET_STR,
+                                  p->pingCtlTestName,
+                                  p->pingCtlTestNameLen);
+        snmp_varlist_add_variable(&vars_list, NULL, 0, ASN_UNSIGNED,
+                                  &p->pingProbeHistoryIndex,
+                                  sizeof(p->pingProbeHistoryIndex));
+        header_complex_add_data(&pingProbeHistoryTableStorage, vars_list, p);
+    }
 
-
-            DEBUGMSGTL(("pingProbeHistoryTable", "adding data...  "));
-            /*
-             * add the index variables to the varbind list, which is 
-             * used by header_complex to index the data 
-             */
-
-            header_complex_add_data(&pingProbeHistoryTableStorage,
-                                    vars_list, p);
-
-
-            DEBUGMSGTL(("pingProbeHistoryTable", "out finished\n"));
-            vars_list = NULL;
-            p = p->next;
-        } while (p != NULL);
-
-    DEBUGMSGTL(("pingProbeHistoryTable", "done.\n"));
     return SNMPERR_SUCCESS;
 }
 
 void
 pingCtlTable_cleaner(struct header_complex_index *thestuff)
 {
-    struct header_complex_index *hciptr;
+    struct header_complex_index *hciptr, *next;
+    struct pingCtlTable_data *StorageDel;
 
     DEBUGMSGTL(("pingProbeHistoryTable", "cleanerout  "));
-    for (hciptr = thestuff; hciptr != NULL; hciptr = hciptr->next) {
-        header_complex_extract_entry(&pingCtlTableStorage, hciptr);
+    for (hciptr = thestuff; hciptr; hciptr = next) {
+        next = hciptr->next;
+        StorageDel = header_complex_extract_entry(&pingCtlTableStorage, hciptr);
+        free_pingCtlTable_data(StorageDel);
         DEBUGMSGTL(("pingProbeHistoryTable", "cleaner  "));
     }
 }
@@ -821,10 +863,15 @@
     size_t          newoid_len;
     unsigned long   count = 0;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlOwnerIndex, thedata->pingCtlOwnerIndexLen);       /* pingCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlTestName, thedata->pingCtlTestNameLen);   /* pingCtlOperationName */
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlOwnerIndex,
+                              thedata->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlTestName,
+                              thedata->pingCtlTestNameLen);
 
     header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars);
+    snmp_free_varbind(vars);
 
     for (hciptr2 = pingProbeHistoryTableStorage; hciptr2 != NULL;
          hciptr2 = hciptr2->next) {
@@ -842,17 +889,21 @@
 {
     struct header_complex_index *hciptr2 = NULL;
     struct header_complex_index *hcilast = NULL;
-    struct pingProbeHistoryTable_data *StorageTmp = NULL;
+    struct pingProbeHistoryTable_data *StorageTmp, *StorageDel;
     netsnmp_variable_list *vars = NULL;
     oid             newoid[MAX_OID_LEN];
     size_t          newoid_len;
     time_t          last_time = 2147483647;
     time_t          tp;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlOwnerIndex, thedata->pingCtlOwnerIndexLen);       /* pingCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlTestName, thedata->pingCtlTestNameLen);   /* pingCtlOperationName */
-
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlOwnerIndex,
+                              thedata->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlTestName,
+                              thedata->pingCtlTestNameLen);
     header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars);
+    snmp_free_varbind(vars);
 
     for (hcilast = hciptr2 = pingProbeHistoryTableStorage; hciptr2 != NULL;
          hciptr2 = hciptr2->next) {
@@ -872,7 +923,25 @@
 
         }
     }
-    header_complex_extract_entry(&pingProbeHistoryTableStorage, hcilast);
+    StorageDel =
+        header_complex_extract_entry(&pingProbeHistoryTableStorage, hcilast);
+    for (hciptr2 = pingCtlTableStorage; hciptr2; hciptr2 = hciptr2->next) {
+        struct pingCtlTable_data *tmp;
+
+        tmp = hciptr2->data;
+        if (tmp->pingProbeHis == StorageDel) {
+            tmp->pingProbeHis = tmp->pingProbeHis->next;
+            DEBUGMSGTL(("pingProbeHistoryTable",
+                        "deleting the last one succeeded!\n"));
+            break;
+    	}
+    }
+    if (StorageDel) {
+        free(StorageDel->pingProbeHistoryTime);
+        free(StorageDel->pingCtlTestName);
+        free(StorageDel->pingCtlOwnerIndex);
+        free(StorageDel);
+    }
     DEBUGMSGTL(("pingProbeHistoryTable",
                 "delete the last one success!\n"));
 }
@@ -948,8 +1017,10 @@
 {
     char           *ptr;
 
-    if ((ptr = sock_ntop_host(sa, salen)) == NULL)
-        printf("sock_ntop_host error"); /* inet_ntop() sets errno */
+    if ((ptr = sock_ntop_host(sa, salen)) == NULL) {
+        /* inet_ntop() sets errno */
+        snmp_log_perror("pingCtlTable: sock_ntop_host()");
+    }
     return (ptr);
 }
 
@@ -1002,7 +1073,7 @@
     hints.ai_family = family;   /* AF_UNSPEC, AF_INET, AF_INET6, etc. */
     hints.ai_socktype = socktype;       /* 0, SOCK_STREAM, SOCK_DGRAM, etc. */
 
-    if ((n = getaddrinfo(host, serv, &hints, &res)) != 0)
+    if ((n = netsnmp_getaddrinfo(host, serv, &hints, &res)) != 0)
         return (NULL);
 
     return (res);               /* return pointer to first on linked list */
@@ -1030,17 +1101,18 @@
     hints.ai_family = family;   /* 0, AF_INET, AF_INET6, etc. */
     hints.ai_socktype = socktype;       /* 0, SOCK_STREAM, SOCK_DGRAM, etc. */
 
-    if ((n = getaddrinfo(host, serv, &hints, &res)) != 0)
+    if ((n = netsnmp_getaddrinfo(host, serv, &hints, &res)) != 0) {
 #if HAVE_GAI_STRERROR
-        printf("host_serv error for %s, %s: %s",
-               (host == NULL) ? "(no hostname)" : host,
-               (serv == NULL) ? "(no service name)" : serv,
-               gai_strerror(n));
+        snmp_log(LOG_ERR, "host_serv error for %s, %s: %s",
+                 (host == NULL) ? "(no hostname)" : host,
+                 (serv == NULL) ? "(no service name)" : serv,
+                 gai_strerror(n));
 #else
-        printf("host_serv error for %s, %s",
-               (host == NULL) ? "(no hostname)" : host,
-               (serv == NULL) ? "(no service name)" : serv);
+        snmp_log(LOG_ERR, "host_serv error for %s, %s",
+                 (host == NULL) ? "(no hostname)" : host,
+                 (serv == NULL) ? "(no service name)" : serv);
 #endif
+    }
 
     return (res);               /* return pointer to first on linked list */
 }
@@ -1084,13 +1156,16 @@
     oid             pingResultsSendProbes[] =
         { 1, 3, 6, 1, 2, 1, 80, 1, 3, 1, 8 };
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlOwnerIndex, item->pingCtlOwnerIndexLen);     /* pingCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlTestName, item->pingCtlTestNameLen); /* pingCtlOperationName */
-    StorageTmp = SNMP_MALLOC_STRUCT(pingResultsTable_data);
-    if ((StorageTmp =
-         (struct pingResultsTable_data *)
-         header_complex_get(pingResultsTableStorage, vars)) == NULL)
-        return ;
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              item->pingCtlOwnerIndex,
+                              item->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              item->pingCtlTestName,
+                              item->pingCtlTestNameLen);
+    StorageTmp = header_complex_get(pingResultsTableStorage, vars);
+    snmp_free_varbind(vars);
+    if (!StorageTmp)
+        return;
 
     /*
      * snmpTrap oid 
@@ -1216,14 +1291,16 @@
     /* struct pingProbeHistoryTable_data * current=NULL; */
     struct pingProbeHistoryTable_data current_var;
     int             sockfd;
+    int             select_result;
     int             current_probe_temp;
     int             success_probe = 0;
     int             fail_probe = 0;
     int             flag;
-    unsigned long  *sumrtt;
+    unsigned long   sumrtt;
     struct timeval  tv;
 
-    sumrtt = (unsigned long *) malloc(sizeof(unsigned long));
+    memset(sendbuf, 0, sizeof(sendbuf));
+
     sockfd = socket(pr->sasend->sa_family, SOCK_RAW, pr->icmpproto);
     if (sockfd < 0) {
 	snmp_log_perror("pingCtlTable: failed to create socket");
@@ -1242,29 +1319,29 @@
         (*pr->fsend) (datalen, pid, nsent, sockfd, sendbuf);
         nsent++;
         len = pr->salen;
-        if (readable_timeo(sockfd, item->pingCtlTimeOut) == 0) {
-            /* printf("socket timeout!\n"); */
-            n = -1;
-            fail_probe = fail_probe + 1;
-            flag = 1;
-        } else {
-            n = recvfrom(sockfd, recvbuf, sizeof(recvbuf), 0, pr->sarecv,
-                         &len);
-            success_probe = success_probe + 1;
-            flag = 0;
-        }
+        select_result = readable_timeo(sockfd, item->pingCtlTimeOut);
+        do {
+            if (select_result == 0) {
+                DEBUGMSGTL(("pingCtlTable", "socket timeout\n"));
+                n = -1;
+                fail_probe = fail_probe + 1;
+                flag = 1;
+            } else {
+                n = recvfrom(sockfd, recvbuf, sizeof(recvbuf), 0, pr->sarecv,
+                             &len);
+                success_probe = success_probe + 1;
+                flag = 0;
+            }
 
-        gettimeofday(&tval, NULL);
+            netsnmp_get_monotonic_clock(&tval);
 
-        time(&timep);
+            time(&timep);
 
-        (*pr->fproc) (recvbuf, n, &tval, timep, item, ai, datalen, minrtt,
-                      maxrtt, sumrtt, averagertt, current_probe_temp,
-                      success_probe, fail_probe, flag, &current_var, pid);
-        if (current_probe_temp >= item->pingCtlProbeCount) {
-            SNMP_FREE(sumrtt);
-            return;
-        }
+            (*pr->fproc) (recvbuf, n, &tval, timep, item, ai, datalen, minrtt,
+                          maxrtt, &sumrtt, averagertt, current_probe_temp,
+                          success_probe, fail_probe, flag, &current_var, pid);
+            select_result = readable_timeo(sockfd, 0);
+        } while (select_result > 0);
     }
     close(sockfd);
 }
@@ -1299,9 +1376,11 @@
     static int      probeFailed = 0;
     static int      testFailed = 0;
     static int      series = 0;
-
     netsnmp_variable_list *vars = NULL;
     struct pingResultsTable_data *StorageNew = NULL;
+
+    DEBUGMSGTL(("pingCtlTable", "proc_v4(flag = %d)\n", flag));
+
     if (flag == 0) {
         series = 0;
         ip = (struct ip *) ptr; /* start of IP header */
@@ -1309,14 +1388,20 @@
 
         icmp = (struct icmp *) (ptr + hlen1);   /* start of ICMP header */
         if ((icmplen = len - hlen1) < 8)
-            printf("icmplen (%d) < 8", icmplen);
+            DEBUGMSGTL(("pingCtlTable", "icmplen (%d) < 8", icmplen));
+
+        DEBUGMSGTL(("pingCtlTable", "ICMP type = %d (%sa reply)\n",
+                    icmp->icmp_type,
+                    icmp->icmp_type == ICMP_ECHOREPLY ? "" : "not a "));
 
         if (icmp->icmp_type == ICMP_ECHOREPLY) {
-            if (icmp->icmp_id != pid)
-                return SNMP_ERR_NOERROR;         /* not a response to our ECHO_REQUEST */
-            if (icmplen < 16)
-                printf("icmplen (%d) < 16", icmplen);
+            if (icmp->icmp_id != pid) {
+                DEBUGMSGTL(("pingCtlTable", "not a response to our ECHO_REQUEST\n"));
+                return SNMP_ERR_NOERROR;
+            }
 
+            if (icmplen < 16)
+                DEBUGMSGTL(("pingCtlTable", "icmplen (%d) < 16", icmplen));
 
             tvsend = (struct timeval *) icmp->icmp_data;
 
@@ -1324,14 +1409,19 @@
                 round_double((1000000 * (tvrecv->tv_sec - tvsend->tv_sec) +
                               tvrecv->tv_usec - tvsend->tv_usec) / 1000);
 
-            snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlOwnerIndex, item->pingCtlOwnerIndexLen);     /* pingCtlOwnerIndex */
-            snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlTestName, item->pingCtlTestNameLen); /* pingCtlTestName */
+            snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                                      item->pingCtlOwnerIndex,
+                                      item->pingCtlOwnerIndexLen);
+            snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                                      item->pingCtlTestName,
+                                      item->pingCtlTestNameLen);
 
-
-            if ((StorageNew =
-                 header_complex_get(pingResultsTableStorage,
-                                    vars)) == NULL)
+            StorageNew = header_complex_get(pingResultsTableStorage, vars);
+            snmp_free_varbind(vars);
+            if (!StorageNew) {
+                DEBUGMSGTL(("pingCtlTable", "StorageNew == NULL\n"));
                 return SNMP_ERR_NOSUCHNAME;
+            }
 
             if (current_probe == 1) {
                 *averagertt = rtt;
@@ -1339,7 +1429,6 @@
                 *maxrtt = rtt;
                 *sumrtt = rtt;
             } else {
-                printf("else\n");
                 if (rtt < *minrtt)
                     *minrtt = rtt;
                 if (rtt > *maxrtt)
@@ -1363,6 +1452,7 @@
                 StorageNew->pingResultsRttSumOfSquares + rtt * rtt;
 
 	    StorageNew->pingResultsLastGoodProbe_time = timep;
+            free(StorageNew->pingResultsLastGoodProbe);
             StorageNew->pingResultsLastGoodProbe =
                 netsnmp_memdup(date_n_time(&timep,
                                       &StorageNew->pingResultsLastGoodProbeLen),
@@ -1407,52 +1497,39 @@
 
             if (StorageNew->pingResultsSendProbes == 1)
                 item->pingProbeHis = temp;
-            else {
+            else
                 (current_temp)->next = temp;
-            }
 
             current_temp = temp;
 
-            if (StorageNew->pingResultsSendProbes >=
-                item->pingCtlProbeCount) {
+            if (StorageNew->pingResultsSendProbes >= item->pingCtlProbeCount)
                 current_temp->next = NULL;
-            }
 
             if (item->pingProbeHis != NULL) {
-                if (pingProbeHistoryTable_count(item) <
-                    item->pingCtlMaxRows) {
-                    if (pingProbeHistoryTable_add(current_temp) !=
-                        SNMPERR_SUCCESS)
-                        DEBUGMSGTL(("pingProbeHistoryTable",
-                                    "registered an entry error\n"));
-                } else {
+                if (pingProbeHistoryTable_count(item) >= item->pingCtlMaxRows)
                     pingProbeHistoryTable_delLast(item);
-                    if (pingProbeHistoryTable_add(current_temp) !=
-                        SNMPERR_SUCCESS)
-                        DEBUGMSGTL(("pingProbeHistoryTable",
-                                    "registered an entry error\n"));
-
-                }
+                if (pingProbeHistoryTable_add(current_temp) != SNMPERR_SUCCESS)
+                    DEBUGMSGTL(("pingProbeHistoryTable",
+                                "failed to add a row\n"));
 	    }
         }
-    }
-
-    else if (flag == 1)
-    {
-
-
+    } else if (flag == 1) {
         if (series == 0)
             probeFailed = 1;
         else
             probeFailed = probeFailed + 1;
         series = 1;
         testFailed = testFailed + 1;
-        snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlOwnerIndex, item->pingCtlOwnerIndexLen); /*  pingCtlOwnerIndex */
-        snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlTestName, item->pingCtlTestNameLen);     /* pingCtlTestName */
+        snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                                  item->pingCtlOwnerIndex,
+                                  item->pingCtlOwnerIndexLen);
+        snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                                  item->pingCtlTestName,
+                                  item->pingCtlTestNameLen);
 
-
-        if ((StorageNew =
-             header_complex_get(pingResultsTableStorage, vars)) == NULL)
+        StorageNew = header_complex_get(pingResultsTableStorage, vars);
+        snmp_free_varbind(vars);
+        if (!StorageNew)
             return SNMP_ERR_NOSUCHNAME;
 
         if (current_probe == 1) {
@@ -1582,7 +1659,7 @@
     icmp->icmp_code = 0;
     icmp->icmp_id = pid;
     icmp->icmp_seq = nsent;
-    gettimeofday((struct timeval *) icmp->icmp_data, NULL);
+    netsnmp_get_monotonic_clock((struct timeval *) icmp->icmp_data);
 
     len = 8 + datalen;          /* checksum ICMP header and data */
     icmp->icmp_cksum = 0;
@@ -1600,12 +1677,15 @@
     netsnmp_variable_list *vars = NULL;
     struct pingResultsTable_data *StorageNew = NULL;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlOwnerIndex, item->pingCtlOwnerIndexLen);     /* pingCtlOwnerIndex  */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlTestName, item->pingCtlTestNameLen); /* pingCtlTestName  */
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              item->pingCtlOwnerIndex,
+                              item->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              item->pingCtlTestName, item->pingCtlTestNameLen);
 
-
-    if ((StorageNew =
-         header_complex_get(pingResultsTableStorage, vars)) == NULL)
+    StorageNew = header_complex_get(pingResultsTableStorage, vars);
+    snmp_free_varbind(vars);
+    if (!StorageNew)
         return;
 
     StorageNew->pingResultsSendProbes = 0;
@@ -1633,34 +1713,41 @@
 
         ai = host_serv(host, NULL, 0, 0);
 
-        printf("PING %s (%s): %d data bytes\n", ai->ai_canonname,
-               sock_ntop_host(ai->ai_addr, ai->ai_addrlen), datalen);
+        if (ai) {
+            DEBUGMSGTL(("pingCtlTable", "PING %s (%s): %d data bytes\n",
+                        ai->ai_canonname,
+                        sock_ntop_host(ai->ai_addr, ai->ai_addrlen), datalen));
 
-        /*
-         * 4initialize according to protocol 
-         */
-        if (ai->ai_family == AF_INET) {
-            pr = &proto_v4;
+            /*
+             * 4initialize according to protocol 
+             */
+            if (ai->ai_family == AF_INET) {
+                pr = &proto_v4;
 #ifdef	IPV6
-        } else if (ai->ai_family == AF_INET6) {
-            pr = &proto_v6;
+            } else if (ai->ai_family == AF_INET6) {
+                pr = &proto_v6;
 
-            if (IN6_IS_ADDR_V4MAPPED(&(((struct sockaddr_in6 *)
-                                        ai->ai_addr)->sin6_addr)))
-                printf("cannot ping IPv4-mapped IPv6 address");
+                if (IN6_IS_ADDR_V4MAPPED(&(((struct sockaddr_in6 *)
+                                            ai->ai_addr)->sin6_addr)))
+                    snmp_log(LOG_ERR, "cannot ping IPv4-mapped IPv6 address");
 #endif
-        } else
-            printf("unknown address family %d", ai->ai_family);
+            } else {
+                snmp_log(LOG_ERR, "unknown address family %d", ai->ai_family);
+            }
 
-        pr->sasend = ai->ai_addr;
-        pr->sarecv = calloc(1, ai->ai_addrlen);
-        pr->salen = ai->ai_addrlen;
-        readloop(item, ai, datalen, minrtt, maxrtt, averagertt, pid);
+            pr->sasend = ai->ai_addr;
+            pr->sarecv = calloc(1, ai->ai_addrlen);
+            pr->salen = ai->ai_addrlen;
+            readloop(item, ai, datalen, minrtt, maxrtt, averagertt, pid);
+            free(pr->sarecv);
+        } else {
+            snmp_log(LOG_ERR, "PING: name resolution for %s failed.\n", host);
+        }
 
         SNMP_FREE(minrtt);
         SNMP_FREE(maxrtt);
         SNMP_FREE(averagertt);
-        SNMP_FREE(ai);
+        freeaddrinfo(ai);
     }
 
     else if (item->pingCtlTargetAddressType == 2) {
@@ -1736,13 +1823,11 @@
         hostname = target;
 
         if (ipv6_addr_any(&source.sin6_addr)) {
-
             socklen_t       alen;
             int             probe_fd = socket(AF_INET6, SOCK_DGRAM, 0);
 
             if (probe_fd < 0) {
-                printf("error!\n");
-                perror("socket");
+                snmp_log_perror("pingCtlTable: IPv6 datagram socket creation");
                 return;
             }
             if (device) {
@@ -1761,6 +1846,7 @@
                         if (ioctl(probe_fd, SIOCGIFINDEX, &ifr) < 0) {
                             fprintf(stderr, "ping: unknown iface %s\n",
                                     device);
+                            close(probe_fd);
                             return;
                         }
                         firsthop.sin6_scope_id = ifr.ifr_ifindex;
@@ -1773,12 +1859,14 @@
                 (probe_fd, (struct sockaddr *) &firsthop,
                  sizeof(firsthop)) == -1) {
                 perror("connect");
+                close(probe_fd);
                 return;
             }
             alen = sizeof(source);
             if (getsockname(probe_fd, (struct sockaddr *) &source, &alen)
                 == -1) {
                 perror("getsockname");
+                close(probe_fd);
                 return;
             }
             source.sin6_port = 0;
@@ -1891,15 +1979,16 @@
             }
         }
 
-        printf("PING %s(%s) ", hostname,
-               pr_addr(&whereto.sin6_addr, options));
+        DEBUGMSGTL(("pingCtlTable", "PING %s(%s) ", hostname,
+                    pr_addr(&whereto.sin6_addr, options)));
         if (flowlabel)
-            printf(", flow 0x%05x, ", (unsigned) ntohl(flowlabel));
+            DEBUGMSGTL(("pingCtlTable", ", flow 0x%05x, ",
+                        (unsigned) ntohl(flowlabel)));
         if (device || (options & F_NUMERIC)) {
-            printf("from %s %s: ",
-                   pr_addr_n(&source.sin6_addr), device ? : "");
+            DEBUGMSGTL(("pingCtlTable", "from %s %s: ",
+                        pr_addr_n(&source.sin6_addr), device ? : ""));
         }
-        printf("%d data bytes\n", datalen);
+        DEBUGMSGTL(("pingCtlTable", "%d data bytes\n", datalen));
 
         setup(icmp_sock, options, uid, timeout, preload, interval, datalen,
               (char *) outpack, &ident, &start_time, &screen_width,
@@ -1925,18 +2014,20 @@
     char           *host = NULL;
     netsnmp_variable_list *vars = NULL;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlOwnerIndex, item->pingCtlOwnerIndexLen);     /* pingCtlOwnerIndex  */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlTestName, item->pingCtlTestNameLen); /* pingCtlTestName  */
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              item->pingCtlOwnerIndex,
+                              item->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              item->pingCtlTestName, item->pingCtlTestNameLen);
 
-
-    if ((StorageNew =
-         header_complex_get(pingResultsTableStorage, vars)) != NULL) {
+    StorageNew = header_complex_get(pingResultsTableStorage, vars);
+    snmp_free_varbind(vars);
+    if (StorageNew) {
         StorageNew->pingResultsSendProbes = 0;
         StorageNew->pingResultsProbeResponses = 0;
         return;
-
     }
-    ai = malloc(sizeof(struct addrinfo));
+
     host = item->pingCtlTargetAddress;
     ai = host_serv(host, NULL, 0, 0);
     StorageTmp = SNMP_MALLOC_STRUCT(pingResultsTable_data);
@@ -1959,26 +2050,14 @@
 
     if (item->pingCtlTargetAddressType == 1
         || item->pingCtlTargetAddressType == 16) {
-        if (ai == NULL) {
-            StorageTmp->pingResultsIpTargetAddressType = 0;
-            StorageTmp->pingResultsIpTargetAddress = strdup("");
-            StorageTmp->pingResultsIpTargetAddressLen = 0;
-        } else {
-            StorageTmp->pingResultsIpTargetAddressType = 1;
-            StorageTmp->pingResultsIpTargetAddress =
-                (char *)
-                malloc(strlen(sock_ntop_host(ai->ai_addr, ai->ai_addrlen))
-                       + 1);
-            StorageTmp->pingResultsIpTargetAddress =
-                strdup(sock_ntop_host(ai->ai_addr, ai->ai_addrlen));
-            StorageTmp->
-                pingResultsIpTargetAddress[strlen
-                                           (sock_ntop_host
-                                            (ai->ai_addr,
-                                             ai->ai_addrlen))] = '\0';
-            StorageTmp->pingResultsIpTargetAddressLen =
-                strlen(sock_ntop_host(ai->ai_addr, ai->ai_addrlen));
-        }
+        const char* str;
+
+        StorageTmp->pingResultsIpTargetAddressType = ai ? 1 : 0;
+        str = ai ? sock_ntop_host(ai->ai_addr, ai->ai_addrlen) : NULL;
+        if (!str)
+            str = "";
+        StorageTmp->pingResultsIpTargetAddress = strdup(str);
+        StorageTmp->pingResultsIpTargetAddressLen = strlen(str);
     }
     if (item->pingCtlTargetAddressType == 2) {
 
@@ -1993,10 +2072,7 @@
 
         if (inet_pton(AF_INET6, host, &to->sin6_addr) > 0) {
             StorageTmp->pingResultsIpTargetAddressType = 2;
-            StorageTmp->pingResultsIpTargetAddress =
-                (char *) malloc(strlen(host) + 1);
             StorageTmp->pingResultsIpTargetAddress = strdup(host);
-            StorageTmp->pingResultsIpTargetAddress[strlen(host)] = '\0';
             StorageTmp->pingResultsIpTargetAddressLen = strlen(host);
         } else {
             hp = gethostbyname2(host, AF_INET6);
@@ -2005,13 +2081,8 @@
                 memmove((caddr_t) & to->sin6_addr, hp->h_addr, 16);
                 hostname = inet_ntop(AF_INET6, &to->sin6_addr, pa, 64);
                 StorageTmp->pingResultsIpTargetAddressType = 2;
-                StorageTmp->pingResultsIpTargetAddress =
-                    (char *) malloc(strlen(hostname) + 1);
                 StorageTmp->pingResultsIpTargetAddress = strdup(hostname);
-                StorageTmp->pingResultsIpTargetAddress[strlen(hostname)] =
-                    '\0';
-                StorageTmp->pingResultsIpTargetAddressLen =
-                    strlen(hostname);
+                StorageTmp->pingResultsIpTargetAddressLen = strlen(hostname);
             } else {
                 (void) fprintf(stderr,
                                "traceroute: unknown host %s\n", host);
@@ -2040,8 +2111,7 @@
             }
         }
     }
-    SNMP_FREE(ai);
-
+    freeaddrinfo(ai);
 }
 
 
@@ -2051,12 +2121,16 @@
     netsnmp_variable_list *vars = NULL;
     struct pingResultsTable_data *StorageTmp = NULL;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlOwnerIndex, thedata->pingCtlOwnerIndexLen);       /* pingCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlTestName, thedata->pingCtlTestNameLen);   /* pingCtlTestName */
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlOwnerIndex,
+                              thedata->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlTestName,
+                              thedata->pingCtlTestNameLen);
 
-
-    if ((StorageTmp =
-         header_complex_get(pingResultsTableStorage, vars)) == NULL)
+    StorageTmp = header_complex_get(pingResultsTableStorage, vars);
+    snmp_free_varbind(vars);
+    if (!StorageTmp)
         return SNMP_ERR_NOSUCHNAME;
     StorageTmp->pingResultsOperStatus = val;
 
@@ -2068,19 +2142,23 @@
 int
 pingResultsTable_del(struct pingCtlTable_data *thedata)
 {
-    struct header_complex_index *hciptr2 = NULL;
+    struct header_complex_index *hciptr2, *next;
     struct pingResultsTable_data *StorageDel = NULL;
     netsnmp_variable_list *vars = NULL;
     oid             newoid[MAX_OID_LEN];
     size_t          newoid_len;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlOwnerIndex, thedata->pingCtlOwnerIndexLen);       /* pingCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlTestName, thedata->pingCtlTestNameLen);   /* pingCtlOperationName */
-
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlOwnerIndex,
+                              thedata->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlTestName,
+                              thedata->pingCtlTestNameLen);
     header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars);
+    snmp_free_varbind(vars);
 
-    for (hciptr2 = pingResultsTableStorage; hciptr2 != NULL;
-         hciptr2 = hciptr2->next) {
+    for (hciptr2 = pingResultsTableStorage; hciptr2; hciptr2 = next) {
+        next = hciptr2->next;
         if (snmp_oid_compare(newoid, newoid_len, hciptr2->name, newoid_len)
             == 0) {
             StorageDel =
@@ -2104,19 +2182,23 @@
 int
 pingProbeHistoryTable_del(struct pingCtlTable_data *thedata)
 {
-    struct header_complex_index *hciptr2 = NULL;
+    struct header_complex_index *hciptr2, *next;
     struct pingProbeHistoryTable_data *StorageDel = NULL;
     netsnmp_variable_list *vars = NULL;
     oid             newoid[MAX_OID_LEN];
     size_t          newoid_len;
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlOwnerIndex, thedata->pingCtlOwnerIndexLen);       /* pingCtlOwnerIndex */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->pingCtlTestName, thedata->pingCtlTestNameLen);   /* pingCtlOperationName */
-
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlOwnerIndex,
+                              thedata->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              thedata->pingCtlTestName,
+                              thedata->pingCtlTestNameLen);
     header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars);
+    snmp_free_varbind(vars);
 
-    for (hciptr2 = pingProbeHistoryTableStorage; hciptr2 != NULL;
-         hciptr2 = hciptr2->next) {
+    for (hciptr2 = pingProbeHistoryTableStorage; hciptr2; hciptr2 = next) {
+        next = hciptr2->next;
         if (snmp_oid_compare(newoid, newoid_len, hciptr2->name, newoid_len)
             == 0) {
             StorageDel =
@@ -2216,6 +2298,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;
@@ -2313,6 +2396,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2402,6 +2486,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;
@@ -2492,6 +2577,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;
@@ -2584,6 +2670,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;
@@ -2686,6 +2773,7 @@
             modify_ResultsOper(StorageTmp, 2);
         }
 
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2782,6 +2870,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -2867,6 +2956,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;
@@ -2952,6 +3042,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;
@@ -3039,6 +3130,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;
@@ -3137,6 +3229,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3228,6 +3321,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;
@@ -3319,6 +3413,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;
@@ -3416,6 +3511,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3512,6 +3608,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3598,6 +3695,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;
@@ -3696,6 +3794,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3781,6 +3880,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;
@@ -3869,6 +3969,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;
@@ -3957,6 +4058,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;
@@ -3970,14 +4072,13 @@
                        size_t var_val_len,
                        u_char * statP, oid * name, size_t name_len)
 {
-    struct pingCtlTable_data *StorageTmp = NULL;
+    struct pingCtlTable_data *StorageTmp;
     static struct pingCtlTable_data *StorageNew, *StorageDel;
     size_t          newlen =
         name_len - (sizeof(pingCtlTable_variables_oid) / sizeof(oid) +
                     3 - 1);
     static int      old_value;
     int             set_value;
-    static netsnmp_variable_list *vars, *vp;
     struct header_complex_index *hciptr = NULL;
 
     DEBUGMSGTL(("pingCtlTable",
@@ -4076,6 +4177,8 @@
          * memory reseveration, final preparation... 
          */
         if (StorageTmp == NULL) {
+            netsnmp_variable_list *vars, *vp;
+
             if (set_value == RS_DESTROY) {
                 return SNMP_ERR_NOERROR;
             }
@@ -4095,15 +4198,14 @@
                  (name
                   [sizeof(pingCtlTable_variables_oid) / sizeof(oid) +
                    2]), newlen, vars) != SNMPERR_SUCCESS) {
-                /*
-                 * XXX: free, zero vars 
-                 */
-                /* snmp_free_varbind(vars); */
+                snmp_free_varbind(vars);
                 return SNMP_ERR_INCONSISTENTNAME;
             }
             vp = vars;
 
             StorageNew = create_pingCtlTable_data();
+            if (!StorageNew)
+                return SNMP_ERR_GENERR;
             if (vp->val_len <= 32) {
                 StorageNew->pingCtlOwnerIndex = malloc(vp->val_len + 1);
                 memcpy(StorageNew->pingCtlOwnerIndex, vp->val.string,
@@ -4140,10 +4242,7 @@
             StorageNew->pingCtlRowStatus = set_value;
 
 
-            /*
-             * XXX: free, zero vars, no longer needed? 
-             */
-            /* snmp_free_varbind(vars); */
+            snmp_free_varbind(vars);
         }
 
 
@@ -4154,12 +4253,17 @@
 
     case FREE:
         /*
-         * XXX: free, zero vars 
-         */
-
-        /*
          * Release any resources that have been allocated 
          */
+
+        if (set_value == RS_DESTROY && StorageNew)
+            free_pingCtlTable_data(StorageNew);
+        StorageNew = NULL;
+
+        if (StorageDel) {
+            free_pingCtlTable_data(StorageDel);
+            StorageDel = NULL;
+        }
         break;
 
 
@@ -4230,10 +4334,8 @@
                 header_complex_find_entry(pingCtlTableStorage, StorageNew);
             StorageDel =
                 header_complex_extract_entry(&pingCtlTableStorage, hciptr);
-
-            /*
-             * XXX: free it 
-             */
+            free_pingCtlTable_data(StorageDel);
+            StorageDel = NULL;
         } else if (StorageDel != NULL) {
             /*
              * row deletion, so add it again 
@@ -4241,6 +4343,7 @@
             pingCtlTable_add(StorageDel);
             pingResultsTable_add(StorageDel);
             pingProbeHistoryTable_addall(StorageDel);
+            StorageDel = NULL;
         } else {
             StorageTmp->pingCtlRowStatus = old_value;
         }
@@ -4262,37 +4365,8 @@
         }
 
         if (StorageDel != NULL) {
-            /*
-             * if(strlen(StorageDel->pingCtlOwnerIndex)!=0)
-             * SNMP_FREE(StorageDel->pingCtlOwnerIndex);
-             * printf("COMMIT1 \n");
-             * if(strlen(StorageDel->pingCtlTestName)!=0)
-             * SNMP_FREE(StorageDel->pingCtlTestName);
-             * printf("COMMIT2 \n");
-             * if(strlen(StorageDel->pingCtlTargetAddress)!=0)
-             * SNMP_FREE(StorageDel->pingCtlTargetAddress);
-             * printf("COMMIT3 \n");
-             * if(strlen(StorageDel->pingCtlDataFill)!=0)
-             * SNMP_FREE(StorageDel->pingCtlDataFill);
-             * printf("COMMIT4 \n");
-             * if(strlen(StorageDel->pingCtlTrapGeneration)!=0)
-             * SNMP_FREE(StorageDel->pingCtlTrapGeneration);
-             * printf("COMMIT5 \n");
-             * if(StorageDel->pingCtlTypeLen!=0)
-             * SNMP_FREE(StorageDel->pingCtlType);
-             * printf("COMMIT6 \n");
-             * if(strlen(StorageDel->pingCtlDescr)!=0)
-             * SNMP_FREE(StorageDel->pingCtlDescr);
-             * printf("COMMIT7 \n");
-             * if(strlen(StorageDel->pingCtlSourceAddress)!=0)
-             * SNMP_FREE(StorageDel->pingCtlSourceAddress);
-             * printf("COMMIT8 \n");
-             */
+            free_pingCtlTable_data(StorageDel);
             StorageDel = NULL;
-            /* StorageDel = 0; */
-            /*
-             * XXX: free it, its dead 
-             */
         } else {
             if (StorageTmp
                 && StorageTmp->pingCtlRowStatus == RS_CREATEANDGO) {
@@ -4327,6 +4401,7 @@
             }
 
         }
+        snmp_store_needed(NULL);
 
         break;
     }
@@ -4464,14 +4539,13 @@
      * Check that packets < rate*time + preload 
      */
     if ((*cur_time).tv_sec == 0) {
-
-        gettimeofday(cur_time, NULL);
+        netsnmp_get_monotonic_clock(cur_time);
         tokens = interval * (preload - 1);
     } else {
         long            ntokens;
         struct timeval  tv;
 
-        gettimeofday(&tv, NULL);
+        netsnmp_get_monotonic_clock(&tv);
         ntokens = (tv.tv_sec - (*cur_time).tv_sec) * 1000 +
             (tv.tv_usec - (*cur_time).tv_usec) / 1000;
         if (!interval) {
@@ -4696,7 +4770,7 @@
 
     *ident = getpid() & 0xFFFF;
 
-    gettimeofday(start_time, NULL);
+    netsnmp_get_monotonic_clock(start_time);
 
 #if 0
     if (*deadline) {
@@ -4780,11 +4854,11 @@
             break;
         }
         if (npackets && nreceived >= npackets) {
-            printf("npackets,nreceived=%ld\n", nreceived);
+            DEBUGMSGTL(("pingCtlTable", "npackets,nreceived=%ld\n", nreceived));
             break;
         }
         if (deadline && nerrors) {
-            printf("deadline\n");
+            DEBUGMSGTL(("pingCtlTable", "deadline\n"));
             break;
         }
 
@@ -4799,7 +4873,7 @@
          * Send probes scheduled to this time. 
          */
         do {
-            printf("pinger\n");
+            DEBUGMSGTL(("pingCtlTable", "pinger\n"));
             next =
                 pinger(icmp_sock, preload, cmsglen, cmsgbuf, whereto,
                        &rtt_addend, uid, options, interval, datalen,
@@ -4807,11 +4881,11 @@
                        deadline, &acked, &npackets, &nreceived,
                        &ntransmitted, &nerrors, &confirm_flag, &confirm,
                        &pipesize, &cur_time);
-            printf("1:next=%d\n", next);
+            DEBUGMSGTL(("pingCtlTable", "1:next=%d\n", next));
             next =
                 schedule_exit(next, deadline, &npackets, &nreceived,
                               &ntransmitted, &tmax);
-            printf("2:next=%d\n", next);
+            DEBUGMSGTL(("pingCtlTable", "2:next=%d\n", next));
         } while (next <= 0);
 
         /*
@@ -4900,8 +4974,6 @@
                     struct pingProbeHistoryTable_data *temp = NULL;
                     netsnmp_variable_list *vars = NULL;
 
-
-
                     if (series == 0)
                         probeFailed = 1;
                     else
@@ -4909,13 +4981,17 @@
                     series = 1;
                     testFailed = testFailed + 1;
 
-                    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlOwnerIndex, item->pingCtlOwnerIndexLen);     /*  pingCtlOwnerIndex  */
-                    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlTestName, item->pingCtlTestNameLen); /*  pingCtlTestName  */
+                    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                                              item->pingCtlOwnerIndex,
+                                              item->pingCtlOwnerIndexLen);
+                    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                                              item->pingCtlTestName,
+                                              item->pingCtlTestNameLen);
 
-
-                    if ((StorageNew =
-                         header_complex_get(pingResultsTableStorage,
-                                            vars)) == NULL)
+                    StorageNew = header_complex_get(pingResultsTableStorage,
+                                                    vars);
+                    snmp_free_varbind(vars);
+                    if (!StorageNew)
                         return;
 
                     StorageNew->pingResultsSendProbes =
@@ -5010,7 +5086,7 @@
                     not_ours = 1;
                 }
             } else {
-                printf("cc>=0,else\n");
+                DEBUGMSGTL(("pingCtlTable", "cc>=0,else\n"));
 #ifdef SO_TIMESTAMP
                 for (c = CMSG_FIRSTHDR(&msg); c; c = CMSG_NXTHDR(&msg, c)) {
                     if (c->cmsg_level != SOL_SOCKET ||
@@ -5025,7 +5101,7 @@
                 if ((options & F_LATENCY) || recv_timep == NULL) {
                     if ((options & F_LATENCY) ||
                         ioctl(icmp_sock, SIOCGSTAMP, &recv_time))
-                        gettimeofday(&recv_time, NULL);
+                        netsnmp_get_monotonic_clock(&recv_time);
                     recv_timep = &recv_time;
                 }
 
@@ -5125,19 +5201,14 @@
         struct timeval  tmp_tv;
         memcpy(&tmp_tv, ptr, sizeof(tmp_tv));
 
-      restamp:
         tvsub(tv, &tmp_tv);
         triptime = tv->tv_sec * 1000000 + tv->tv_usec;
         if (triptime < 0) {
-            fprintf(stderr,
-                    "Warning: time of day goes back (%ldus), taking countermeasures.\n",
-                    triptime);
+            snmp_log(LOG_INFO,
+                     "Warning: invalid timestamp in ICMP response.\n");
             triptime = 0;
-            if (!(options & F_LATENCY)) {
-                gettimeofday(tv, NULL);
+            if (!(options & F_LATENCY))
                 options |= F_LATENCY;
-                goto restamp;
-            }
         }
         if (!csfailed) {
             (*tsum) += triptime;
@@ -5179,32 +5250,34 @@
     } else {
         int             i;
         __u8           *cp, *dp;
-        printf("%d bytes from %s: icmp_seq=%u", cc, from, seq);
+
+        DEBUGMSGTL(("pingCtlTable", "%d bytes from %s: icmp_seq=%u", cc, from,
+                    seq));
 
         if (hops >= 0)
-            printf(" ttl=%d", hops);
+            DEBUGMSGTL(("pingCtlTable", " ttl=%d", hops));
 
         if (cc < datalen + 8) {
-            printf(" (truncated)\n");
+            DEBUGMSGTL(("pingCtlTable", " (truncated)\n"));
             return 1;
         }
         if (timing) {
             if (triptime >= 100000)
-                printf(" time=%ld ms", triptime / 1000);
+                DEBUGMSGTL(("pingCtlTable", " time=%ld ms", triptime / 1000));
             else if (triptime >= 10000)
-                printf(" time=%ld.%01ld ms", triptime / 1000,
-                       (triptime % 1000) / 100);
+                DEBUGMSGTL(("pingCtlTable", " time=%ld.%01ld ms",
+                            triptime / 1000, (triptime % 1000) / 100));
             else if (triptime >= 1000)
-                printf(" time=%ld.%02ld ms", triptime / 1000,
-                       (triptime % 1000) / 10);
+                DEBUGMSGTL(("pingCtlTable", " time=%ld.%02ld ms",
+                            triptime / 1000, (triptime % 1000) / 10));
             else
-                printf(" time=%ld.%03ld ms", triptime / 1000,
-                       triptime % 1000);
+                DEBUGMSGTL(("pingCtlTable", " time=%ld.%03ld ms",
+                            triptime / 1000, triptime % 1000));
         }
         if (dupflag)
-            printf(" (DUP!)");
+            DEBUGMSGTL(("pingCtlTable", " (DUP!)"));
         if (csfailed)
-            printf(" (BAD CHECKSUM!)");
+            DEBUGMSGTL(("pingCtlTable", " (BAD CHECKSUM!)"));
 
         /*
          * check the data 
@@ -5213,13 +5286,14 @@
         dp = (u_char *)&outpack[8 + sizeof(struct timeval)];
         for (i = sizeof(struct timeval); i < datalen; ++i, ++cp, ++dp) {
             if (*cp != *dp) {
-                printf("\nwrong data byte #%d should be 0x%x but was 0x%x",
-                       i, *dp, *cp);
+                DEBUGMSGTL(("pingCtlTable",
+                            "\nwrong data byte #%d should be 0x%x but was 0x%x",
+                            i, *dp, *cp));
                 cp = (u_char *) ptr + sizeof(struct timeval);
                 for (i = sizeof(struct timeval); i < datalen; ++i, ++cp) {
                     if ((i % 32) == sizeof(struct timeval))
-                        printf("\n#%d\t", i);
-                    printf("%x ", *cp);
+                        DEBUGMSGTL(("pingCtlTable", "\n#%d\t", i));
+                    DEBUGMSGTL(("pingCtlTable", "%x ", *cp));
                 }
                 break;
             }
@@ -5227,12 +5301,16 @@
     }
 
 
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlOwnerIndex, item->pingCtlOwnerIndexLen);     /*  pingCtlOwnerIndex  */
-    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) item->pingCtlTestName, item->pingCtlTestNameLen); /*  pingCtlTestName  */
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              item->pingCtlOwnerIndex,
+                              item->pingCtlOwnerIndexLen);
+    snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR,
+                              item->pingCtlTestName,
+                              item->pingCtlTestNameLen);
 
-
-    if ((StorageNew =
-         header_complex_get(pingResultsTableStorage, vars)) == NULL)
+    StorageNew = header_complex_get(pingResultsTableStorage, vars);
+    snmp_free_varbind(vars);
+    if (!StorageNew)
         return SNMP_ERR_NOSUCHNAME;
 
 
@@ -5247,6 +5325,7 @@
     StorageNew->pingResultsRttSumOfSquares = *tsum2;
 
     StorageNew->pingResultsLastGoodProbe_time = timep;
+    free(StorageNew->pingResultsLastGoodProbe);
     StorageNew->pingResultsLastGoodProbe =
         netsnmp_memdup(date_n_time(&timep,
                                    &StorageNew->pingResultsLastGoodProbeLen),
@@ -5357,20 +5436,21 @@
 
     putchar('\n');
     fflush(stdout);
-    printf("--- %s ping statistics ---\n", hostname);
+    DEBUGMSGTL(("pingCtlTable", "--- %s ping statistics ---\n", hostname));
 
     if (*nrepeats)
-        printf(", +%ld duplicates", *nrepeats);
+        DEBUGMSGTL(("pingCtlTable", ", +%ld duplicates", *nrepeats));
     if (*nchecksum)
-        printf(", +%ld corrupted", *nchecksum);
+        DEBUGMSGTL(("pingCtlTable", ", +%ld corrupted", *nchecksum));
     if (*nerrors)
-        printf(", +%ld errors", *nerrors);
+        DEBUGMSGTL(("pingCtlTable", ", +%ld errors", *nerrors));
     if (*ntransmitted) {
-        printf(", %d%% loss",
-               (int) ((((long long) ((*ntransmitted) -
-                                     (*nreceived))) * 100) /
-                      (*ntransmitted)));
-        printf(", time %ldms", 1000 * tv.tv_sec + tv.tv_usec / 1000);
+        DEBUGMSGTL(("pingCtlTable", ", %d%% loss",
+                    (int) ((((long long) ((*ntransmitted) -
+                                          (*nreceived))) * 100) /
+                           (*ntransmitted))));
+        DEBUGMSGTL(("pingCtlTable", ", time %ldms",
+                    1000 * tv.tv_sec + tv.tv_usec / 1000));
     }
     putchar('\n');
 
@@ -5381,21 +5461,23 @@
         (*tsum2) /= (*nreceived) + (*nrepeats);
         tmdev = llsqrt((*tsum2) - (*tsum) * (*tsum));
 
-        printf
-            ("rtt min/avg/max/mdev = %ld.%03ld/%lu.%03ld/%ld.%03ld/%ld.%03ld ms",
-             (*tmin) / 1000, (*tmin) % 1000,
-             (unsigned long) ((*tsum) / 1000), (long) ((*tsum) % 1000),
-             (*tmax) / 1000, (*tmax) % 1000, tmdev / 1000, tmdev % 1000);
+        DEBUGMSGTL(("pingCtlTable", "rtt min/avg/max/mdev = %ld.%03ld/%lu.%03ld"
+                    "/%ld.%03ld/%ld.%03ld ms",
+                    (*tmin) / 1000, (*tmin) % 1000,
+                    (unsigned long) ((*tsum) / 1000), (long) ((*tsum) % 1000),
+                    (*tmax) / 1000, (*tmax) % 1000, tmdev / 1000,
+                    tmdev % 1000));
     }
     if ((*pipesize) > 1)
-        printf(", pipe %d", *pipesize);
+        DEBUGMSGTL(("pingCtlTable", ", pipe %d", *pipesize));
     if ((*ntransmitted) > 1
         && (!interval || (options & (F_FLOOD | F_ADAPTIVE)))) {
         int             ipg =
             (1000000 * (long long) tv.tv_sec +
              tv.tv_usec) / ((*ntransmitted) - 1);
-        printf(", ipg/ewma %d.%03d/%d.%03d ms", ipg / 1000, ipg % 1000,
-               (*rtt) / 8000, ((*rtt) / 8) % 1000);
+        DEBUGMSGTL(("pingCtlTable", ", ipg/ewma %d.%03d/%d.%03d ms",
+                    ipg / 1000, ipg % 1000,
+                    (*rtt) / 8000, ((*rtt) / 8) % 1000));
     }
     putchar('\n');
     return;
@@ -5418,19 +5500,19 @@
             (((long long) ((*ntransmitted) -
                            (*nreceived))) * 100) / (*ntransmitted);
 
-    fprintf(stderr, "\r%ld/%ld packets, %d%% loss", *ntransmitted,
-            *nreceived, loss);
+    DEBUGMSGTL(("pingCtlTable", "\n%ld/%ld packets, %d%% loss", *ntransmitted,
+                *nreceived, loss));
 
     if ((*nreceived) && timing) {
         tavg = (*tsum) / ((*nreceived) + (*nrepeats));
 
-        fprintf(stderr,
-                ", min/avg/ewma/max = %ld.%03ld/%lu.%03ld/%d.%03d/%ld.%03ld ms",
-                (*tmin) / 1000, (*tmin) % 1000, tavg / 1000, tavg % 1000,
-                (*rtt) / 8000, ((*rtt) / 8) % 1000, (*tmax) / 1000,
-                (*tmax) % 1000);
+        DEBUGMSGTL(("pingCtlTable", ", min/avg/ewma/max = %ld.%03ld/%lu.%03ld"
+                    "/%d.%03d/%ld.%03ld ms",
+                    (*tmin) / 1000, (*tmin) % 1000, tavg / 1000, tavg % 1000,
+                    (*rtt) / 8000, ((*rtt) / 8) % 1000, (*tmax) / 1000,
+                    (*tmax) % 1000));
     }
-    fprintf(stderr, "\n");
+    DEBUGMSGTL(("pingCtlTable", "\n"));
 }
 
 
@@ -5488,12 +5570,10 @@
         if (options & F_FLOOD)
             write(STDOUT_FILENO, "E", 1);
         else if (e->ee_errno != EMSGSIZE)
-            fprintf(stderr, "ping: local error: %s\n",
-                    strerror(e->ee_errno));
+            snmp_log(LOG_ERR, "ping: local error: %s\n", strerror(e->ee_errno));
         else
-            fprintf(stderr,
-                    "ping: local error: Message too long, mtu=%u\n",
-                    e->ee_info);
+            snmp_log(LOG_ERR, "ping: local error: Message too long, mtu=%u\n",
+                     e->ee_info);
         (*nerrors)++;
     } else if (e->ee_origin == SO_EE_ORIGIN_ICMP6) {
         if (res < sizeof(icmph) ||
@@ -5615,7 +5695,7 @@
     icmph = (struct icmp6_hdr *) buf;
     if (cc < 8) {
         if (options & F_VERBOSE)
-            fprintf(stderr, "ping: packet too short (%d bytes)\n", cc);
+            snmp_log(LOG_ERR, "ping: packet too short (%d bytes)\n", cc);
         return 1;
     }
     if (icmph->icmp6_type == ICMP6_ECHO_REPLY) {
@@ -5668,16 +5748,17 @@
                 write(STDOUT_FILENO, "\bE", 2);
                 return 0;
             }
-            printf("From %s: icmp_seq=%u ",
-                   pr_addr(&from->sin6_addr, options),
-                   icmph1->icmp6_seq);
+            DEBUGMSGTL(("pingCtlTable", "From %s: icmp_seq=%u ",
+                        pr_addr(&from->sin6_addr, options),
+                        icmph1->icmp6_seq));
         } else {
             /*
              * We've got something other than an ECHOREPLY 
              */
             if (!(options & F_VERBOSE) || uid)
                 return 1;
-            printf("From %s: ", pr_addr(&from->sin6_addr, options));
+            DEBUGMSGTL(("pingCtlTable", "From %s: ",
+                        pr_addr(&from->sin6_addr, options)));
         }
         /* pr_icmph(icmph->icmp6_type, icmph->icmp6_code, ntohl(icmph->icmp6_mtu)); */
     }
@@ -5742,8 +5823,8 @@
     struct hostent *hp = NULL;
 
     if (!(options & F_NUMERIC))
-        hp = gethostbyaddr((__u8 *) addr, sizeof(struct in6_addr),
-                           AF_INET6);
+        hp = netsnmp_gethostbyaddr((__u8 *) addr, sizeof(struct in6_addr),
+                                   AF_INET6);
 
     return hp ? hp->h_name : pr_addr_n(addr);
 }
diff --git a/agent/mibgroup/disman/ping/pingCtlTable.h b/agent/mibgroup/disman/ping/pingCtlTable.h
index ea8da31..ca69d13 100644
--- a/agent/mibgroup/disman/ping/pingCtlTable.h
+++ b/agent/mibgroup/disman/ping/pingCtlTable.h
@@ -206,6 +206,7 @@
  * function declarations 
  */
 void            init_pingCtlTable(void);
+void            shutdown_pingCtlTable(void);
 FindVarMethod   var_pingCtlTable;
 void            parse_pingCtlTable(const char *, char *);
 SNMPCallback    store_pingCtlTable;
diff --git a/agent/mibgroup/disman/ping/pingProbeHistoryTable.c b/agent/mibgroup/disman/ping/pingProbeHistoryTable.c
index 31fa0b8..78c75be 100644
--- a/agent/mibgroup/disman/ping/pingProbeHistoryTable.c
+++ b/agent/mibgroup/disman/ping/pingProbeHistoryTable.c
@@ -50,10 +50,14 @@
     { 1, 3, 6, 1, 2, 1, 80, 1, 4 };
 
 struct variable2 pingProbeHistoryTable_variables[] = {
-    {COLUMN_PINGPROBEHISTORYRESPONSE, ASN_UNSIGNED, RONLY, var_pingProbeHistoryTable, 2, {1, 2}},
-    {COLUMN_PINGPROBEHISTORYSTATUS,    ASN_INTEGER, RONLY, var_pingProbeHistoryTable, 2, {1, 3}},
-    {COLUMN_PINGPROBEHISTORYLASTRC,    ASN_INTEGER, RONLY, var_pingProbeHistoryTable, 2, {1, 4}},
-    {COLUMN_PINGPROBEHISTORYTIME,    ASN_OCTET_STR, RONLY, var_pingProbeHistoryTable, 2, {1, 5}}
+    {COLUMN_PINGPROBEHISTORYRESPONSE, ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_pingProbeHistoryTable, 2, {1, 2}},
+    {COLUMN_PINGPROBEHISTORYSTATUS,    ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_pingProbeHistoryTable, 2, {1, 3}},
+    {COLUMN_PINGPROBEHISTORYLASTRC,    ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_pingProbeHistoryTable, 2, {1, 4}},
+    {COLUMN_PINGPROBEHISTORYTIME,    ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_pingProbeHistoryTable, 2, {1, 5}}
 };
 
 
diff --git a/agent/mibgroup/disman/ping/pingResultsTable.c b/agent/mibgroup/disman/ping/pingResultsTable.c
index 1f71fd5..1445d86 100644
--- a/agent/mibgroup/disman/ping/pingResultsTable.c
+++ b/agent/mibgroup/disman/ping/pingResultsTable.c
@@ -49,16 +49,26 @@
     { 1, 3, 6, 1, 2, 1, 80, 1, 3 };
 
 struct variable2 pingResultsTable_variables[] = {
-    {COLUMN_PINGRESULTSOPERSTATUS,       ASN_INTEGER, RONLY, var_pingResultsTable, 2, {1, 1}},
-    {COLUMN_PINGRESULTSIPTARGETADDRESSTYPE, ASN_INTEGER, RONLY, var_pingResultsTable, 2, {1, 2}},
-    {COLUMN_PINGRESULTSIPTARGETADDRESS, ASN_OCTET_STR, RONLY, var_pingResultsTable, 2, {1, 3}},
-    {COLUMN_PINGRESULTSMINRTT,          ASN_UNSIGNED, RONLY, var_pingResultsTable, 2, {1, 4}},
-    {COLUMN_PINGRESULTSMAXRTT,          ASN_UNSIGNED, RONLY, var_pingResultsTable, 2, {1, 5}},
-    {COLUMN_PINGRESULTSAVERAGERTT,      ASN_UNSIGNED, RONLY, var_pingResultsTable, 2, {1, 6}},
-    {COLUMN_PINGRESULTSPROBERESPONSES,  ASN_UNSIGNED, RONLY, var_pingResultsTable, 2, {1, 7}},
-    {COLUMN_PINGRESULTSSENTPROBES,      ASN_UNSIGNED, RONLY, var_pingResultsTable, 2, {1, 8}},
-    {COLUMN_PINGRESULTSRTTSUMOFSQUARES, ASN_UNSIGNED, RONLY, var_pingResultsTable, 2, {1, 9}},
-    {COLUMN_PINGRESULTSLASTGOODPROBE,  ASN_OCTET_STR, RONLY, var_pingResultsTable, 2, {1, 10}}
+    {COLUMN_PINGRESULTSOPERSTATUS,       ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_pingResultsTable, 2, {1, 1}},
+    {COLUMN_PINGRESULTSIPTARGETADDRESSTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_pingResultsTable, 2, {1, 2}},
+    {COLUMN_PINGRESULTSIPTARGETADDRESS, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_pingResultsTable, 2, {1, 3}},
+    {COLUMN_PINGRESULTSMINRTT,          ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_pingResultsTable, 2, {1, 4}},
+    {COLUMN_PINGRESULTSMAXRTT,          ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_pingResultsTable, 2, {1, 5}},
+    {COLUMN_PINGRESULTSAVERAGERTT,      ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_pingResultsTable, 2, {1, 6}},
+    {COLUMN_PINGRESULTSPROBERESPONSES,  ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_pingResultsTable, 2, {1, 7}},
+    {COLUMN_PINGRESULTSSENTPROBES,      ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_pingResultsTable, 2, {1, 8}},
+    {COLUMN_PINGRESULTSRTTSUMOFSQUARES, ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_pingResultsTable, 2, {1, 9}},
+    {COLUMN_PINGRESULTSLASTGOODPROBE,  ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_pingResultsTable, 2, {1, 10}}
 };
 
 
diff --git a/agent/mibgroup/disman/schedule/schedConf.c b/agent/mibgroup/disman/schedule/schedConf.c
index 2e67b73..0cbdbc6 100644
--- a/agent/mibgroup/disman/schedule/schedConf.c
+++ b/agent/mibgroup/disman/schedule/schedConf.c
@@ -4,12 +4,16 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <ctype.h>
 #include "disman/schedule/schedCore.h"
 #include "disman/schedule/schedConf.h"
 
+netsnmp_feature_require(iquery)
+netsnmp_feature_require(string_time_to_secs)
+
 static int schedEntries;
 
 /** Initializes the schedConf module */
@@ -51,7 +55,7 @@
 {
     netsnmp_tdata_row       *row;
     struct schedTable_entry *entry;
-    char   buf[24];
+    char   buf[24], tmpbuf[SPRINT_MAX_LEN];
     long   frequency;
     long   value;
     size_t tmpint;
@@ -65,7 +69,13 @@
     /*
      *  Parse the configure directive line
      */
-    line = read_config_read_data(ASN_INTEGER,   line, &frequency, &tmpint);
+    line = copy_nword(line, tmpbuf, sizeof(tmpbuf));
+    frequency = netsnmp_string_time_to_secs(tmpbuf);
+    if (frequency == -1) {
+        config_perror("Illegal frequency specified");
+        return;
+    }
+
     line = read_config_read_data(ASN_OBJECT_ID, line, &var_ptr,   &var_len);
     if (var_len == 0) {
         config_perror("invalid specification for schedVariable");
@@ -74,11 +84,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 +129,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 +229,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 +367,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 +397,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 +418,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 4055d46..c3db34f 100644
--- a/agent/mibgroup/disman/schedule/schedCore.c
+++ b/agent/mibgroup/disman/schedule/schedCore.c
@@ -4,13 +4,37 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "disman/schedule/schedCore.h"
 #include "utilities/iquery.h"
 
+netsnmp_feature_require(iquery)
+
+netsnmp_feature_child_of(sched_nextrowtime, netsnmp_unused)
+
 netsnmp_tdata *schedule_table;
 
+
+#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.
@@ -22,7 +46,7 @@
     if (!schedule_table) {
         schedule_table = netsnmp_tdata_create_table("schedTable", 0);
         DEBUGMSGTL(("disman:schedule:init",
-                        "create schedule container(%x)\n", schedule_table));
+                        "create schedule container(%p)\n", schedule_table));
     }
 }
 
@@ -53,13 +77,13 @@
         DEBUGMSGTL(("disman:schedule:callback", "missing entry\n"));
         return;
     }
-    entry->schedLastRun = time(0);
+    entry->schedLastRun = time(NULL);
     entry->schedTriggers++;
 
     DEBUGMSGTL(( "disman:schedule:callback", "assignment "));
     DEBUGMSGOID(("disman:schedule:callback", entry->schedVariable,
                                              entry->schedVariable_len));
-    DEBUGMSG((   "disman:schedule:callback", " = %d\n", entry->schedValue));
+    DEBUGMSG((   "disman:schedule:callback", " = %ld\n", entry->schedValue));
 
     memset(&assign, 0, sizeof(netsnmp_variable_list));
     snmp_set_var_objid(&assign, entry->schedVariable, entry->schedVariable_len);
@@ -84,10 +108,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 +170,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 +188,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?
@@ -239,20 +263,6 @@
 }
 
 
-#ifndef HAVE_LOCALTIME_R
-struct tm *
-localtime_r(const time_t *timep, struct tm *result) {
-    struct tm *tmp;
-
-    tmp = localtime( timep );
-    if ( tmp && result ) {
-        memcpy( result, tmp, sizeof(struct tm));
-    }
-
-    return (tmp ? result : NULL );
-}
-#endif
-
 /*
  * determine the time for the next scheduled action of a given entry
  */
@@ -291,16 +301,15 @@
         } else {
              entry->schedNextRun = now + entry->schedInterval;
         }
-        DEBUGMSGTL(("disman:schedule:time", "periodic: (%d) %s",
-                                  entry->schedNextRun,
-                           ctime(&entry->schedNextRun)));
+        DEBUGMSGTL(("disman:schedule:time", "periodic: (%ld) %s",
+                    (long) entry->schedNextRun, ctime(&entry->schedNextRun)));
         break;
 
     case SCHED_TYPE_ONESHOT:
         if ( entry->schedLastRun ) {
-            DEBUGMSGTL(("disman:schedule:time", "one-shot: expired (%d) %s",
-                                  entry->schedNextRun,
-                           ctime(&entry->schedNextRun)));
+            DEBUGMSGTL(("disman:schedule:time", "one-shot: expired (%ld) %s",
+                        (long) entry->schedNextRun,
+                        ctime(&entry->schedNextRun)));
             return;
         }
         /* Fallthrough */
@@ -337,8 +346,8 @@
          *    the first specified day (in that month)
          */
 
-        localtime_r( &now, &now_tm );
-        localtime_r( &now, &next_tm );
+        (void) localtime_r( &now, &now_tm );
+        (void) localtime_r( &now, &next_tm );
 
         next_tm.tm_mon=-1;
         next_tm.tm_mday=-1;
@@ -414,13 +423,12 @@
          * 'next_tm' now contains the time for the next scheduled run
          */
         entry->schedNextRun = mktime( &next_tm );
-        DEBUGMSGTL(("disman:schedule:time", "calendar: (%d) %s",
-                                  entry->schedNextRun,
-                           ctime(&entry->schedNextRun)));
+        DEBUGMSGTL(("disman:schedule:time", "calendar: (%ld) %s",
+                    (long) entry->schedNextRun, ctime(&entry->schedNextRun)));
         return;
 
     default:
-        DEBUGMSGTL(("disman:schedule:time", "unknown type (%d)\n",
+        DEBUGMSGTL(("disman:schedule:time", "unknown type (%ld)\n",
                                              entry->schedType));
         return;
     }
@@ -430,11 +438,13 @@
     return;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SCHED_NEXTROWTIME
 void
 sched_nextRowTime( netsnmp_tdata_row *row )
 {
     sched_nextTime((struct schedTable_entry *) row->data );
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SCHED_NEXTROWTIME */
 
 /*
  * create a new row in the table 
diff --git a/agent/mibgroup/disman/schedule/schedTable.c b/agent/mibgroup/disman/schedule/schedTable.c
index b8e36d7..bba48fd 100644
--- a/agent/mibgroup/disman/schedule/schedTable.c
+++ b/agent/mibgroup/disman/schedule/schedTable.c
@@ -7,12 +7,27 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "utilities/iquery.h"
 #include "disman/schedule/schedCore.h"
 #include "disman/schedule/schedTable.h"
 
+netsnmp_feature_require(iquery)
+netsnmp_feature_require(iquery_pdu_session)
+netsnmp_feature_require(table_tdata)
+netsnmp_feature_require(date_n_time)
+netsnmp_feature_require(check_vb_uint)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(check_vb_oid)
+netsnmp_feature_require(check_vb_truthvalue)
+netsnmp_feature_require(table_tdata_insert_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+static netsnmp_table_registration_info *table_info;
+
 /** Initializes the schedTable module */
 void
 init_schedTable(void)
@@ -20,7 +35,6 @@
     static oid      schedTable_oid[] = { 1, 3, 6, 1, 2, 1, 63, 1, 2 };
     size_t          schedTable_oid_len = OID_LENGTH(schedTable_oid);
     netsnmp_handler_registration    *reg;
-    netsnmp_table_registration_info *table_info;
 
     DEBUGMSGTL(("disman:schedule:init", "Initializing table\n"));
     /*
@@ -48,6 +62,14 @@
     netsnmp_tdata_register(reg, schedule_table, table_info);
 }
 
+void
+shutdown_schedTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
 
 /** handles requests for the schedTable table */
 int
@@ -165,7 +187,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/schedule/schedTable.h b/agent/mibgroup/disman/schedule/schedTable.h
index efd1f2e..52033ba 100644
--- a/agent/mibgroup/disman/schedule/schedTable.h
+++ b/agent/mibgroup/disman/schedule/schedTable.h
@@ -8,6 +8,7 @@
  * function declarations 
  */
 void            init_schedTable(void);
+void            shutdown_schedTable(void);
 Netsnmp_Node_Handler schedTable_handler;
 
 /*
diff --git a/agent/mibgroup/disman/traceroute/traceRouteCtlTable.c b/agent/mibgroup/disman/traceroute/traceRouteCtlTable.c
index 42f24dc..b925c5e 100644
--- a/agent/mibgroup/disman/traceroute/traceRouteCtlTable.c
+++ b/agent/mibgroup/disman/traceroute/traceRouteCtlTable.c
@@ -18,10 +18,15 @@
 
 #include <net-snmp/net-snmp-config.h>
 #include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <pthread.h>
 #include <math.h>
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(header_complex_find_entry)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 #include "traceRouteCtlTable.h"
 #include "traceRouteResultsTable.h"
 #include "traceRouteProbeHistoryTable.h"
@@ -41,31 +46,56 @@
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
      */
 
-    {COLUMN_TRACEROUTECTLTARGETADDRESSTYPE, ASN_INTEGER, RWRITE, var_traceRouteCtlTable, 2, {1, 3}},
-    {COLUMN_TRACEROUTECTLTARGETADDRESS,   ASN_OCTET_STR, RWRITE, var_traceRouteCtlTable, 2, {1, 4}},
-    {COLUMN_TRACEROUTECTLBYPASSROUTETABLE,  ASN_INTEGER, RWRITE, var_traceRouteCtlTable, 2, {1, 5}},
-    {COLUMN_TRACEROUTECTLDATASIZE,     ASN_UNSIGNED, RWRITE, var_traceRouteCtlTable, 2, {1, 6}},
-    {COLUMN_TRACEROUTECTLTIMEOUT,      ASN_UNSIGNED, RWRITE, var_traceRouteCtlTable, 2, {1, 7}},
-    {COLUMN_TRACEROUTECTLPROBESPERHOP, ASN_UNSIGNED, RWRITE, var_traceRouteCtlTable, 2, {1, 8}},
-    {COLUMN_TRACEROUTECTLPORT,         ASN_UNSIGNED, RWRITE, var_traceRouteCtlTable, 2, {1, 9}},
-    {COLUMN_TRACEROUTECTLMAXTTL,       ASN_UNSIGNED, RWRITE, var_traceRouteCtlTable, 2, {1, 10}},
-    {COLUMN_TRACEROUTECTLDSFIELD,      ASN_UNSIGNED, RWRITE, var_traceRouteCtlTable, 2, {1, 11}},
-    {COLUMN_TRACEROUTECTLSOURCEADDRESSTYPE, ASN_INTEGER, RWRITE, var_traceRouteCtlTable, 2, {1, 12}},
-    {COLUMN_TRACEROUTECTLSOURCEADDRESS,   ASN_OCTET_STR, RWRITE, var_traceRouteCtlTable, 2, {1, 13}},
-    {COLUMN_TRACEROUTECTLIFINDEX,       ASN_INTEGER, RWRITE, var_traceRouteCtlTable, 2, {1, 14}},
-    {COLUMN_TRACEROUTECTLMISCOPTIONS, ASN_OCTET_STR, RWRITE, var_traceRouteCtlTable, 2, {1, 15}},
-    {COLUMN_TRACEROUTECTLMAXFAILURES,  ASN_UNSIGNED, RWRITE, var_traceRouteCtlTable, 2, {1, 16}},
-    {COLUMN_TRACEROUTECTLDONTFRAGMENT,  ASN_INTEGER, RWRITE, var_traceRouteCtlTable, 2, {1, 17}},
-    {COLUMN_TRACEROUTECTLINITIALTTL,   ASN_UNSIGNED, RWRITE, var_traceRouteCtlTable, 2, {1, 18}},
-    {COLUMN_TRACEROUTECTLFREQUENCY,    ASN_UNSIGNED, RWRITE, var_traceRouteCtlTable, 2, {1, 19}},
-    {COLUMN_TRACEROUTECTLSTORAGETYPE,   ASN_INTEGER, RWRITE, var_traceRouteCtlTable, 2, {1, 20}},
-    {COLUMN_TRACEROUTECTLADMINSTATUS,   ASN_INTEGER, RWRITE, var_traceRouteCtlTable, 2, {1, 21}},
-    {COLUMN_TRACEROUTECTLDESCR,       ASN_OCTET_STR, RWRITE, var_traceRouteCtlTable, 2, {1, 22}},
-    {COLUMN_TRACEROUTECTLMAXROWS,      ASN_UNSIGNED, RWRITE, var_traceRouteCtlTable, 2, {1, 23}},
-    {COLUMN_TRACEROUTECTLTRAPGENERATION,  ASN_OCTET_STR, RWRITE, var_traceRouteCtlTable, 2, {1, 24}},
-    {COLUMN_TRACEROUTECTLCREATEHOPSENTRIES, ASN_INTEGER, RWRITE, var_traceRouteCtlTable, 2, {1, 25}},
-    {COLUMN_TRACEROUTECTLTYPE,        ASN_OBJECT_ID, RWRITE, var_traceRouteCtlTable, 2, {1, 26}},
-    {COLUMN_TRACEROUTECTLROWSTATUS,     ASN_INTEGER, RWRITE, var_traceRouteCtlTable, 2, {1, 27}}
+    {COLUMN_TRACEROUTECTLTARGETADDRESSTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 3}},
+    {COLUMN_TRACEROUTECTLTARGETADDRESS,   ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 4}},
+    {COLUMN_TRACEROUTECTLBYPASSROUTETABLE,  ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 5}},
+    {COLUMN_TRACEROUTECTLDATASIZE,     ASN_UNSIGNED, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 6}},
+    {COLUMN_TRACEROUTECTLTIMEOUT,      ASN_UNSIGNED, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 7}},
+    {COLUMN_TRACEROUTECTLPROBESPERHOP, ASN_UNSIGNED, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 8}},
+    {COLUMN_TRACEROUTECTLPORT,         ASN_UNSIGNED, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 9}},
+    {COLUMN_TRACEROUTECTLMAXTTL,       ASN_UNSIGNED, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 10}},
+    {COLUMN_TRACEROUTECTLDSFIELD,      ASN_UNSIGNED, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 11}},
+    {COLUMN_TRACEROUTECTLSOURCEADDRESSTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 12}},
+    {COLUMN_TRACEROUTECTLSOURCEADDRESS,   ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 13}},
+    {COLUMN_TRACEROUTECTLIFINDEX,       ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 14}},
+    {COLUMN_TRACEROUTECTLMISCOPTIONS, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 15}},
+    {COLUMN_TRACEROUTECTLMAXFAILURES,  ASN_UNSIGNED, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 16}},
+    {COLUMN_TRACEROUTECTLDONTFRAGMENT,  ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 17}},
+    {COLUMN_TRACEROUTECTLINITIALTTL,   ASN_UNSIGNED, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 18}},
+    {COLUMN_TRACEROUTECTLFREQUENCY,    ASN_UNSIGNED, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 19}},
+    {COLUMN_TRACEROUTECTLSTORAGETYPE,   ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 20}},
+    {COLUMN_TRACEROUTECTLADMINSTATUS,   ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 21}},
+    {COLUMN_TRACEROUTECTLDESCR,       ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 22}},
+    {COLUMN_TRACEROUTECTLMAXROWS,      ASN_UNSIGNED, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 23}},
+    {COLUMN_TRACEROUTECTLTRAPGENERATION,  ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 24}},
+    {COLUMN_TRACEROUTECTLCREATEHOPSENTRIES, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 25}},
+    {COLUMN_TRACEROUTECTLTYPE,        ASN_OBJECT_ID, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 26}},
+    {COLUMN_TRACEROUTECTLROWSTATUS,     ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_traceRouteCtlTable, 2, {1, 27}}
 
 };
 
@@ -126,7 +156,8 @@
         exit(1);
     }
 
-    bzero(host, sizeof(char) * (item->traceRouteCtlTargetAddressLen + 1));
+    memset(host, '\0',
+	   sizeof(char) * (item->traceRouteCtlTargetAddressLen + 1));
     strcpy(host, item->traceRouteCtlTargetAddress);
     host[item->traceRouteCtlTargetAddressLen] = '\0';
 
@@ -219,7 +250,7 @@
         struct hostent *hp = NULL;
         /* struct hostenv hp; */
         char            pa[64];
-        bzero(pa, 64);
+        memset(pa, '\0', 64);
 
         to->sin6_family = AF_INET6;
         to->sin6_port = htons(33434);
@@ -234,7 +265,7 @@
                             strerror(errno)));
                 exit(1);
             }
-            bzero(StorageTmp->traceRouteResultsIpTgtAddr,
+            memset(StorageTmp->traceRouteResultsIpTgtAddr, '\0',
                   sizeof(char) * (strlen(host) + 1));
             memcpy(StorageTmp->traceRouteResultsIpTgtAddr, host,
                    strlen(host) + 1);
@@ -255,7 +286,7 @@
                                 strerror(errno)));
                     exit(1);
                 }
-                bzero(StorageTmp->traceRouteResultsIpTgtAddr,
+                memset(StorageTmp->traceRouteResultsIpTgtAddr, '\0',
                       sizeof(char) * (strlen(host) + 1));
                 memcpy(StorageTmp->traceRouteResultsIpTgtAddr, hostname,
                        strlen(hostname) + 1);
@@ -692,7 +723,7 @@
     snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->traceRouteCtlOwnerIndex, thedata->traceRouteCtlOwnerIndexLen);   /* traceRouteCtlOwnerIndex */
     snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->traceRouteCtlTestName, thedata->traceRouteCtlTestNameLen);       /* traceRouteCtlOperationName */
 
-    bzero(newoid, sizeof(oid) * MAX_OID_LEN);
+    memset(newoid, '\0', sizeof(oid) * MAX_OID_LEN);
     header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars);
 
     for (hcilast = hciptr2 = traceRouteProbeHistoryTableStorage;
@@ -1326,7 +1357,7 @@
     snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->traceRouteCtlOwnerIndex, thedata->traceRouteCtlOwnerIndexLen);   /* traceRouteCtlOwnerIndex */
     snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->traceRouteCtlTestName, thedata->traceRouteCtlTestNameLen);       /* traceRouteCtlTestName */
 
-    bzero(newoid, sizeof(oid) * MAX_OID_LEN);
+    memset(newoid, '\0', sizeof(oid) * MAX_OID_LEN);
     header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars);
 
     for (hciptr2 = traceRouteResultsTableStorage; hciptr2 != NULL;
@@ -1357,7 +1388,7 @@
     snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->traceRouteCtlOwnerIndex, thedata->traceRouteCtlOwnerIndexLen);   /* traceRouteCtlOwnerIndex */
     snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->traceRouteCtlTestName, thedata->traceRouteCtlTestNameLen);       /* traceRouteCtlOperationName */
 
-    bzero(newoid, sizeof(oid) * MAX_OID_LEN);
+    memset(newoid, '\0', sizeof(oid) * MAX_OID_LEN);
 
     header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars);
 
@@ -1388,7 +1419,7 @@
     snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->traceRouteCtlOwnerIndex, thedata->traceRouteCtlOwnerIndexLen);   /* traceRouteCtlOwnerIndex */
     snmp_varlist_add_variable(&vars, NULL, 0, ASN_OCTET_STR, (char *) thedata->traceRouteCtlTestName, thedata->traceRouteCtlTestNameLen);       /* traceRouteCtlTestName */
 
-    bzero(newoid, sizeof(oid) * MAX_OID_LEN);
+    memset(newoid, '\0', sizeof(oid) * MAX_OID_LEN);
 
     header_complex_generate_oid(newoid, &newoid_len, NULL, 0, vars);
 
@@ -1447,7 +1478,7 @@
     /*
      * traceRouteCtlTargetAddress 
      */
-    bzero(newoid, MAX_OID_LEN * sizeof(oid));
+    memset(newoid, '\0', MAX_OID_LEN * sizeof(oid));
     header_complex_generate_oid(newoid, &newoid_len,
                                 traceRouteCtlTargetAddress,
                                 sizeof(traceRouteCtlTargetAddress) /
@@ -1461,7 +1492,7 @@
 
     for (hciptr = traceRouteHopsTableStorage; hciptr != NULL;
          hciptr = hciptr->next) {
-        bzero(indexoid, MAX_OID_LEN * sizeof(oid));
+	memset(indexoid, '\0', MAX_OID_LEN * sizeof(oid));
         header_complex_generate_oid(indexoid, &indexoid_len, NULL, 0,
                                     vars);
         if (snmp_oid_compare
@@ -1470,13 +1501,13 @@
                 (struct traceRouteHopsTable_data *)
                 header_complex_get_from_oid(traceRouteHopsTableStorage,
                                             hciptr->name, hciptr->namelen);
-            bzero(tempoid, MAX_OID_LEN * sizeof(oid));
+            memset(tempoid, '\0', MAX_OID_LEN * sizeof(oid));
             header_complex_generate_oid(tempoid, &tempoid_len,
                                         traceRouteHopsIpTgAddress,
                                         sizeof(traceRouteHopsIpTgAddress) /
                                         sizeof(oid), vars);
             snmp_varlist_add_variable(&var_hops, NULL, 0, ASN_UNSIGNED, (char *) &StorageHops->traceRouteHopsHopIndex, sizeof(StorageHops->traceRouteHopsHopIndex));    /* traceRouteCtlTestName */
-            bzero(newoid, MAX_OID_LEN * sizeof(oid));
+            memset(newoid, '\0', MAX_OID_LEN * sizeof(oid));
             header_complex_generate_oid(newoid, &newoid_len, tempoid,
                                         tempoid_len, var_hops);
             snmp_varlist_add_variable(&var_list, newoid, newoid_len,
@@ -1580,6 +1611,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;
@@ -1668,8 +1700,6 @@
          * Back out any changes made in the ACTION case 
          */
         SNMP_FREE(StorageTmp->traceRouteCtlTargetAddress);
-        StorageTmp->traceRouteCtlTargetAddress = NULL;
-
         StorageTmp->traceRouteCtlTargetAddress = tmpvar;
         StorageTmp->traceRouteCtlTargetAddressLen = tmplen;
         break;
@@ -1681,7 +1711,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;
@@ -1763,6 +1793,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;
@@ -1847,6 +1878,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;
@@ -1934,6 +1966,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;
@@ -2023,6 +2056,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;
@@ -2102,7 +2136,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;
@@ -2189,6 +2223,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;
@@ -2270,6 +2305,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;
@@ -2351,6 +2387,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;
@@ -2435,7 +2472,6 @@
          * Back out any changes made in the ACTION case 
          */
         SNMP_FREE(StorageTmp->traceRouteCtlSourceAddress);
-        StorageTmp->traceRouteCtlSourceAddress = NULL;
         StorageTmp->traceRouteCtlSourceAddress = tmpvar;
         StorageTmp->traceRouteCtlSourceAddressLen = tmplen;
         break;
@@ -2447,7 +2483,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;
@@ -2531,6 +2567,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;
@@ -2616,7 +2653,6 @@
          * Back out any changes made in the ACTION case 
          */
         SNMP_FREE(StorageTmp->traceRouteCtlMiscOptions);
-        StorageTmp->traceRouteCtlMiscOptions = NULL;
         StorageTmp->traceRouteCtlMiscOptions = tmpvar;
         StorageTmp->traceRouteCtlMiscOptionsLen = tmplen;
         break;
@@ -2628,7 +2664,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;
@@ -2712,6 +2748,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;
@@ -2797,6 +2834,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;
@@ -2883,6 +2921,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;
@@ -2964,6 +3003,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;
@@ -3057,6 +3097,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;
@@ -3173,6 +3214,7 @@
                 modify_trResultsOper(StorageTmp, 2);
             }
         }
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -3260,7 +3302,6 @@
          * Back out any changes made in the ACTION case 
          */
         SNMP_FREE(StorageTmp->traceRouteCtlDescr);
-        StorageTmp->traceRouteCtlDescr = NULL;
         StorageTmp->traceRouteCtlDescr = tmpvar;
         StorageTmp->traceRouteCtlDescrLen = tmplen;
         break;
@@ -3272,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;
@@ -3357,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;
@@ -3442,7 +3484,6 @@
          * Back out any changes made in the ACTION case 
          */
         SNMP_FREE(StorageTmp->traceRouteCtlTrapGeneration);
-        StorageTmp->traceRouteCtlTrapGeneration = NULL;
         StorageTmp->traceRouteCtlTrapGeneration = tmpvar;
         StorageTmp->traceRouteCtlTrapGenerationLen = tmplen;
         break;
@@ -3454,7 +3495,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;
@@ -3536,6 +3577,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;
@@ -3617,7 +3659,6 @@
          * Back out any changes made in the ACTION case 
          */
         SNMP_FREE(StorageTmp->traceRouteCtlType);
-        StorageTmp->traceRouteCtlType = NULL;
         StorageTmp->traceRouteCtlType = tmpvar;
         StorageTmp->traceRouteCtlTypeLen = tmplen;
         break;
@@ -3629,7 +3670,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;
@@ -3994,6 +4035,7 @@
             }
 
         }
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
@@ -4093,11 +4135,7 @@
         freehostinfo(hi);
 
 
-#ifdef HAVE_SETLINEBUF
-        setlinebuf(stdout);
-#else
-        setvbuf(stdout, NULL, _IOLBF, 0);
-#endif
+        netsnmp_set_line_buffering(stdout);
 
         outip = (struct ip *) malloc(packlen);
         if (outip == NULL) {
@@ -4939,7 +4977,7 @@
 
         setlinebuf(stdout);
 
-        (void) bzero((char *) &whereto, sizeof(struct sockaddr_in6));
+        memset(&whereto, '\0', sizeof(struct sockaddr_in6));
 
         to->sin6_family = AF_INET6;
         to->sin6_port = htons(port);
@@ -5036,7 +5074,7 @@
             saddr.sin6_port = 0;
             close(probe_fd);
         } else {
-            (void) bzero((char *) &saddr, sizeof(struct sockaddr_in6));
+            memset(&saddr, '\0', sizeof(struct sockaddr_in6));
             saddr.sin6_family = AF_INET6;
             if (inet_pton(AF_INET6, source, &saddr.sin6_addr) < 0) {
                 Printf("traceroute: unknown addr %s\n", source);
@@ -5941,7 +5979,7 @@
         return (hi);
     }
 
-    hp = gethostbyname(hostname);
+    hp = netsnmp_gethostbyname(hostname);
     if (hp == NULL) {
         Fprintf(stderr, "%s: unknown host %s\n", "traceroute", hostname);
         printf("hp=NULL\n");
diff --git a/agent/mibgroup/disman/traceroute/traceRouteCtlTable.h b/agent/mibgroup/disman/traceroute/traceRouteCtlTable.h
index 0be8dc4..0711978 100644
--- a/agent/mibgroup/disman/traceroute/traceRouteCtlTable.h
+++ b/agent/mibgroup/disman/traceroute/traceRouteCtlTable.h
@@ -525,7 +525,7 @@
 #define FD_SET(n, p)    ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
 #define FD_CLR(n, p)    ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
 #define FD_ISSET(n, p)  ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
-#define FD_ZERO(p)      bzero((char *)(p), sizeof(*(p)))
+#define FD_ZERO(p)      memset((p), '\0', sizeof(*(p)))
 #endif
 
 #define Fprintf (void)fprintf
diff --git a/agent/mibgroup/disman/traceroute/traceRouteHopsTable.c b/agent/mibgroup/disman/traceroute/traceRouteHopsTable.c
index 296dd53..763757d 100644
--- a/agent/mibgroup/disman/traceroute/traceRouteHopsTable.c
+++ b/agent/mibgroup/disman/traceroute/traceRouteHopsTable.c
@@ -40,15 +40,24 @@
     { 1, 3, 6, 1, 2, 1, 81, 1, 5 };
 
 struct variable2 traceRouteHopsTable_variables[] = {
-    {COLUMN_TRACEROUTEHOPSIPTGTADDRESSTYPE, ASN_INTEGER, RONLY, var_traceRouteHopsTable, 2, {1, 2}},
-    {COLUMN_TRACEROUTEHOPSIPTGTADDRESS,   ASN_OCTET_STR, RONLY, var_traceRouteHopsTable, 2, {1, 3}},
-    {COLUMN_TRACEROUTEHOPSMINRTT,          ASN_UNSIGNED, RONLY, var_traceRouteHopsTable, 2, {1, 4}},
-    {COLUMN_TRACEROUTEHOPSMAXRTT,          ASN_UNSIGNED, RONLY, var_traceRouteHopsTable, 2, {1, 5}},
-    {COLUMN_TRACEROUTEHOPSAVERAGERTT,      ASN_UNSIGNED, RONLY, var_traceRouteHopsTable, 2, {1, 6}},
-    {COLUMN_TRACEROUTEHOPSRTTSUMOFSQUARES, ASN_UNSIGNED, RONLY, var_traceRouteHopsTable, 2, {1, 7}},
-    {COLUMN_TRACEROUTEHOPSSENTPROBES,      ASN_UNSIGNED, RONLY, var_traceRouteHopsTable, 2, {1, 8}},
-    {COLUMN_TRACEROUTEHOPSPROBERESPONSES,  ASN_UNSIGNED, RONLY, var_traceRouteHopsTable, 2, {1, 9}},
-    {COLUMN_TRACEROUTEHOPSLASTGOODPROBE,  ASN_OCTET_STR, RONLY, var_traceRouteHopsTable, 2, {1, 10}}
+    {COLUMN_TRACEROUTEHOPSIPTGTADDRESSTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteHopsTable, 2, {1, 2}},
+    {COLUMN_TRACEROUTEHOPSIPTGTADDRESS,   ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteHopsTable, 2, {1, 3}},
+    {COLUMN_TRACEROUTEHOPSMINRTT,          ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteHopsTable, 2, {1, 4}},
+    {COLUMN_TRACEROUTEHOPSMAXRTT,          ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteHopsTable, 2, {1, 5}},
+    {COLUMN_TRACEROUTEHOPSAVERAGERTT,      ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteHopsTable, 2, {1, 6}},
+    {COLUMN_TRACEROUTEHOPSRTTSUMOFSQUARES, ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteHopsTable, 2, {1, 7}},
+    {COLUMN_TRACEROUTEHOPSSENTPROBES,      ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteHopsTable, 2, {1, 8}},
+    {COLUMN_TRACEROUTEHOPSPROBERESPONSES,  ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteHopsTable, 2, {1, 9}},
+    {COLUMN_TRACEROUTEHOPSLASTGOODPROBE,  ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteHopsTable, 2, {1, 10}}
 };
 
 
diff --git a/agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c b/agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c
index f3b7ce6..0b410c5 100644
--- a/agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c
+++ b/agent/mibgroup/disman/traceroute/traceRouteProbeHistoryTable.c
@@ -39,12 +39,18 @@
     { 1, 3, 6, 1, 2, 1, 81, 1, 4 };
 
 struct variable2 traceRouteProbeHistoryTable_variables[] = {
-    {COLUMN_TRACEROUTEPROBEHISTORYHADDRTYPE, ASN_INTEGER, RONLY, var_traceRouteProbeHistoryTable, 2, {1, 4}},
-    {COLUMN_TRACEROUTEPROBEHISTORYHADDR,   ASN_OCTET_STR, RONLY, var_traceRouteProbeHistoryTable, 2, {1, 5}},
-    {COLUMN_TRACEROUTEPROBEHISTORYRESPONSE, ASN_UNSIGNED, RONLY, var_traceRouteProbeHistoryTable, 2, {1, 6}},
-    {COLUMN_TRACEROUTEPROBEHISTORYSTATUS,    ASN_INTEGER, RONLY, var_traceRouteProbeHistoryTable, 2, {1, 7}},
-    {COLUMN_TRACEROUTEPROBEHISTORYLASTRC,    ASN_INTEGER, RONLY, var_traceRouteProbeHistoryTable, 2, {1, 8}},
-    {COLUMN_TRACEROUTEPROBEHISTORYTIME,    ASN_OCTET_STR, RONLY, var_traceRouteProbeHistoryTable, 2, {1, 9}}
+    {COLUMN_TRACEROUTEPROBEHISTORYHADDRTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteProbeHistoryTable, 2, {1, 4}},
+    {COLUMN_TRACEROUTEPROBEHISTORYHADDR,   ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteProbeHistoryTable, 2, {1, 5}},
+    {COLUMN_TRACEROUTEPROBEHISTORYRESPONSE, ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteProbeHistoryTable, 2, {1, 6}},
+    {COLUMN_TRACEROUTEPROBEHISTORYSTATUS,    ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteProbeHistoryTable, 2, {1, 7}},
+    {COLUMN_TRACEROUTEPROBEHISTORYLASTRC,    ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteProbeHistoryTable, 2, {1, 8}},
+    {COLUMN_TRACEROUTEPROBEHISTORYTIME,    ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteProbeHistoryTable, 2, {1, 9}}
 };
 
 
diff --git a/agent/mibgroup/disman/traceroute/traceRouteResultsTable.c b/agent/mibgroup/disman/traceroute/traceRouteResultsTable.c
index d562adc..aba6cf1 100644
--- a/agent/mibgroup/disman/traceroute/traceRouteResultsTable.c
+++ b/agent/mibgroup/disman/traceroute/traceRouteResultsTable.c
@@ -18,6 +18,8 @@
 
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -40,6 +42,8 @@
 #include "traceRouteHopsTable.h"
 #include "header_complex.h"
 
+netsnmp_feature_require(table_dataset)
+
 /*
  *traceRouteResultsTable_variables_oid:
  *
@@ -48,14 +52,22 @@
     { 1, 3, 6, 1, 2, 1, 81, 1, 3 };
 
 struct variable2 traceRouteResultsTable_variables[] = {
-    {COLUMN_TRACEROUTERESULTSOPERSTATUS,     ASN_INTEGER, RONLY, var_traceRouteResultsTable, 2, {1, 1}},
-    {COLUMN_TRACEROUTERESULTSCURHOPCOUNT,      ASN_GAUGE, RONLY, var_traceRouteResultsTable, 2, {1, 2}},
-    {COLUMN_TRACEROUTERESULTSCURPROBECOUNT,    ASN_GAUGE, RONLY, var_traceRouteResultsTable, 2, {1, 3}},
-    {COLUMN_TRACEROUTERESULTSIPTGTADDRTYPE,  ASN_INTEGER, RONLY, var_traceRouteResultsTable, 2, {1, 4}},
-    {COLUMN_TRACEROUTERESULTSIPTGTADDR,    ASN_OCTET_STR, RONLY, var_traceRouteResultsTable, 2, {1, 5}},
-    {COLUMN_TRACEROUTERESULTSTESTATTEMPTS,  ASN_UNSIGNED, RONLY, var_traceRouteResultsTable, 2, {1, 6}},
-    {COLUMN_TRACEROUTERESULTSTESTSUCCESSES, ASN_UNSIGNED, RONLY, var_traceRouteResultsTable, 2, {1, 7}},
-    {COLUMN_TRACEROUTERESULTSLASTGOODPATH, ASN_OCTET_STR, RONLY, var_traceRouteResultsTable, 2, {1, 8}}
+    {COLUMN_TRACEROUTERESULTSOPERSTATUS,     ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteResultsTable, 2, {1, 1}},
+    {COLUMN_TRACEROUTERESULTSCURHOPCOUNT,      ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteResultsTable, 2, {1, 2}},
+    {COLUMN_TRACEROUTERESULTSCURPROBECOUNT,    ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteResultsTable, 2, {1, 3}},
+    {COLUMN_TRACEROUTERESULTSIPTGTADDRTYPE,  ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteResultsTable, 2, {1, 4}},
+    {COLUMN_TRACEROUTERESULTSIPTGTADDR,    ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteResultsTable, 2, {1, 5}},
+    {COLUMN_TRACEROUTERESULTSTESTATTEMPTS,  ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteResultsTable, 2, {1, 6}},
+    {COLUMN_TRACEROUTERESULTSTESTSUCCESSES, ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteResultsTable, 2, {1, 7}},
+    {COLUMN_TRACEROUTERESULTSLASTGOODPATH, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_traceRouteResultsTable, 2, {1, 8}}
 };
 
 
diff --git a/agent/mibgroup/etherlike-mib.h b/agent/mibgroup/etherlike-mib.h
new file mode 100644
index 0000000..224e254
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib.h
@@ -0,0 +1,7 @@
+/*
+ * module to include the modules
+ */
+
+config_require(etherlike-mib/dot3StatsTable)
+config_add_mib(EtherLike-MIB)
+
diff --git a/agent/mibgroup/etherlike-mib/data_access/dot3stats.h b/agent/mibgroup/etherlike-mib/data_access/dot3stats.h
new file mode 100644
index 0000000..7d2b44f
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/data_access/dot3stats.h
@@ -0,0 +1,7 @@
+/*
+ * module to include the modules
+ */
+
+#if defined(linux)
+config_require(etherlike-mib/data_access/dot3stats_linux)
+#endif
diff --git a/agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c b/agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c
new file mode 100644
index 0000000..6eb69f7
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/data_access/dot3stats_linux.c
@@ -0,0 +1,930 @@
+/*
+ * standard Net-SNMP includes 
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "etherlike-mib/dot3StatsTable/dot3StatsTable.h"
+#include "etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.h"
+#include "etherlike-mib/dot3StatsTable/ioctl_imp_common.h"
+
+/*
+ * @retval  0 success
+ * @retval -1 getifaddrs failed 
+ * @retval -2 memory allocation failed
+ */
+
+struct ifname *
+dot3stats_interface_name_list_get (struct ifname *list_head, int *retval)
+{
+    struct ifaddrs *addrs = NULL, *p = NULL;
+    struct ifname *nameptr1=NULL, *nameptr2 = NULL;
+
+    DEBUGMSGTL(("access:dot3StatsTable:interface_name_list_get",
+                "called\n"));
+
+    if ((getifaddrs(&addrs)) < 0) {
+        DEBUGMSGTL(("access:dot3StatsTable:interface_name_list_get",
+                    "getifaddrs failed\n"));
+        snmp_log (LOG_ERR, "access:dot3StatsTable,interface_name_list_get, getifaddrs failed\n");
+        *retval = -1;
+        return NULL;
+    }
+
+    for (p = addrs; p; p = p->ifa_next) {
+
+        if (!list_head) {
+            list_head = malloc(sizeof(struct ifname));
+            if (!list_head) {
+                DEBUGMSGTL(("access:dot3StatsTable:interface_name_list_get",
+                            "memory allocation failed\n"));
+                snmp_log (LOG_ERR, "access:dot3StatsTable,interface_name_list_get, memory allocation failed\n");
+                freeifaddrs(addrs);
+                *retval = -2;
+                return NULL;
+            }
+            memset(list_head, 0, sizeof (struct ifname));
+            strlcpy(list_head->name, p->ifa_name, IF_NAMESIZE);
+            continue;
+        }
+
+         for (nameptr1 = list_head; nameptr1; nameptr2 = nameptr1, nameptr1 = nameptr1->ifn_next)
+            if (!strncmp(p->ifa_name, nameptr1->name, IF_NAMESIZE))
+                break;
+
+        if (nameptr1)
+            continue;
+
+        nameptr2->ifn_next = malloc(sizeof(struct ifname));
+        if (!nameptr2->ifn_next) {
+            DEBUGMSGTL(("access:dot3StatsTable:interface_name_list_get",
+                        "memory allocation failed\n"));
+            snmp_log (LOG_ERR, "access:dot3StatsTable,interface_name_list_get, memory allocation failed\n");
+            dot3stats_interface_name_list_free (list_head);
+            freeifaddrs(addrs);
+            *retval = -2;
+            return NULL;
+        }
+        nameptr2 = nameptr2->ifn_next;
+        memset(nameptr2, 0, sizeof (struct ifname));
+        strlcpy(nameptr2->name, p->ifa_name, IF_NAMESIZE);
+        continue;
+
+    }
+
+    freeifaddrs(addrs);
+    return list_head;
+}
+
+/*
+ * @retval 0 success
+ * @retval -1 invalid pointer
+ */
+
+int
+dot3stats_interface_name_list_free (struct ifname *list_head)
+{
+    struct ifname *nameptr1 = NULL, *nameptr2 = NULL;
+
+    DEBUGMSGTL(("access:dot3StatsTable:interface_name_list_free",
+                "called\n"));
+
+    if (!list_head) {
+        snmp_log (LOG_ERR, "access:dot3StatsTable:interface_name_list_free: invalid pointer list_head");
+        DEBUGMSGTL(("access:dot3StatsTable:interface_name_list_free",
+                    "invalid pointer list_head\n"));
+        return -1;
+    }
+
+    for (nameptr1 = list_head; nameptr1; nameptr1 = nameptr2) {
+            nameptr2 = nameptr1->ifn_next;
+            free (nameptr1);
+    }
+
+    return 0;
+}
+
+/*
+ * @retval  0 : not found
+ * @retval !0 : ifIndex
+ */
+
+int 
+dot3stats_interface_ioctl_ifindex_get (int fd, const char *name) {
+#ifndef SIOCGIFINDEX
+    return 0;
+#else
+    struct ifreq    ifrq;
+    int rc = 0;
+
+    DEBUGMSGTL(("access:dot3StatsTable:interface_ioctl_ifindex_get", "called\n"));
+                 
+    rc = _dot3Stats_ioctl_get(fd, SIOCGIFINDEX, &ifrq, name);
+    if (rc < 0) {
+        DEBUGMSGTL(("access:dot3StatsTable:interface_ioctl_ifindex_get",
+                    "error on interface '%s'\n", name));
+        snmp_log (LOG_ERR, "access:dot3StatsTable:interface_ioctl_ifindex_get, error on interface '%s'\n", name);
+        return 0;
+
+    }
+
+    return ifrq.ifr_ifindex;
+#endif /* SIOCGIFINDEX */
+}
+
+# if HAVE_LINUX_RTNETLINK_H /* { NETLINK */
+/*
+ * The following code is based upon code I got from Stephen Hemminger
+ */
+#include <linux/rtnetlink.h>
+#include <errno.h>
+
+struct rtnl_handle {
+    int                     fd;
+    struct sockaddr_nl      local;
+    struct sockaddr_nl      peer;
+    __u32                   seq;
+    __u32                   dump;
+};
+
+struct ifstat_ent {
+    struct ifstat_ent *next;
+    const char *name;
+    int ifindex;
+    struct rtnl_link_stats stats;
+};
+
+typedef int (*rtnl_filter_t)(const struct sockaddr_nl *, struct nlmsghdr *n, void *);
+
+struct rtnl_dump_filter_arg
+{
+    rtnl_filter_t filter;
+    void *arg1;
+    rtnl_filter_t junk;
+    void *arg2;
+};
+
+static struct ifstat_ent *kern_db;
+static const int rcvbuf_size = 1024 * 1024;
+
+static int
+rtnl_open_byproto(struct rtnl_handle *rth, unsigned subscriptions, int protocol)
+{
+    socklen_t addr_len;
+    int sndbuf = 32768;
+
+    memset(rth, 0, sizeof(*rth));
+
+    rth->fd = socket(AF_NETLINK, SOCK_RAW, protocol);
+    if (rth->fd < 0) {
+        snmp_log(LOG_ERR, "Cannot open netlink socket");
+        return -1;
+    }
+
+    if (setsockopt(rth->fd,SOL_SOCKET,SO_SNDBUF,&sndbuf,sizeof(sndbuf)) < 0) {
+        snmp_log(LOG_ERR, "SO_SNDBUF");
+        return -1;
+    }
+
+    if (setsockopt(rth->fd,SOL_SOCKET,SO_RCVBUF,&rcvbuf_size,sizeof(rcvbuf_size)) < 0) {
+        snmp_log(LOG_ERR, "SO_RCVBUF");
+        return -1;
+    }
+
+    memset(&rth->local, 0, sizeof(rth->local));
+    rth->local.nl_family = AF_NETLINK;
+    rth->local.nl_groups = subscriptions;
+
+    if (bind(rth->fd, (struct sockaddr*)&rth->local, sizeof(rth->local)) < 0) {
+        snmp_log(LOG_ERR, "Cannot bind netlink socket");
+        return -1;
+    }
+    addr_len = sizeof(rth->local);
+    if (getsockname(rth->fd, (struct sockaddr*)&rth->local, &addr_len) < 0) {
+        snmp_log(LOG_ERR, "Cannot getsockname");
+        return -1;
+    }
+    if (addr_len != sizeof(rth->local)) {
+        snmp_log(LOG_ERR, "Wrong address length %d\n", addr_len);
+        return -1;
+    }
+    if (rth->local.nl_family != AF_NETLINK) {
+        snmp_log(LOG_ERR, "Wrong address family %d\n", rth->local.nl_family);
+        return -1;
+    }
+    rth->seq = time(NULL);
+    return 0;
+}
+
+static int
+rtnl_open(struct rtnl_handle *rth, unsigned subscriptions)
+{
+    return rtnl_open_byproto(rth, subscriptions, NETLINK_ROUTE);
+}
+
+static void
+rtnl_close(struct rtnl_handle *rth)
+{
+    if (rth->fd != -1)
+        close(rth->fd);
+    rth->fd = -1;
+
+    return;
+}
+
+static int
+rtnl_wilddump_request(struct rtnl_handle *rth, int family, int type)
+{
+    struct {
+        struct nlmsghdr nlh;
+        struct rtgenmsg g;
+    } req;
+
+    memset(&req, 0, sizeof(req));
+    req.nlh.nlmsg_len = sizeof(req);
+    req.nlh.nlmsg_type = type;
+    req.nlh.nlmsg_flags = NLM_F_ROOT|NLM_F_MATCH|NLM_F_REQUEST;
+    req.nlh.nlmsg_pid = 0;
+    req.nlh.nlmsg_seq = rth->dump = ++rth->seq;
+    req.g.rtgen_family = family;
+
+    return send(rth->fd, (void*)&req, sizeof(req), 0);
+}
+
+static int
+parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len)
+{
+    memset(tb, 0, sizeof(struct rtattr *) * (max + 1));
+    while (RTA_OK(rta, len))
+    {
+        if (rta->rta_type <= max)
+            tb[rta->rta_type] = rta;
+        rta = RTA_NEXT(rta,len);
+    }
+
+    if (len)
+        snmp_log(LOG_ERR, "parse_rtattr: !!!Deficit %d, rta_len=%d\n", len, rta->rta_len);
+
+    return 0;
+}
+
+static int
+get_nlmsg(const struct sockaddr_nl *who, struct nlmsghdr *m, void *arg)
+{
+    struct ifinfomsg *ifi = NLMSG_DATA(m);
+    struct rtattr * tb[IFLA_MAX+1];
+    int len = m->nlmsg_len;
+    struct ifstat_ent *n;
+
+    if (m->nlmsg_type != RTM_NEWLINK)
+        return 0;
+
+    len -= NLMSG_LENGTH(sizeof(*ifi));
+    if (len < 0)
+        return -1;
+
+    parse_rtattr(tb, IFLA_MAX, IFLA_RTA(ifi), len);
+    if (tb[IFLA_IFNAME] == NULL || tb[IFLA_STATS] == NULL)
+        return 0;
+
+    n = malloc(sizeof(*n));
+    memset(n, 0, sizeof(*n));
+
+    n->ifindex = ifi->ifi_index;
+    n->name = strdup(RTA_DATA(tb[IFLA_IFNAME]));
+    memcpy(&n->stats, RTA_DATA(tb[IFLA_STATS]), sizeof(n->stats));
+    n->next = kern_db;
+    kern_db = n;
+    return 0;
+}
+
+static int
+rtnl_dump_filter_l(struct rtnl_handle *rth,
+                   const struct rtnl_dump_filter_arg *arg)
+{
+    struct sockaddr_nl nladdr;
+    struct iovec iov;
+    struct msghdr msg = {
+        .msg_name = &nladdr,
+        .msg_namelen = sizeof(nladdr),
+        .msg_iov = &iov,
+        .msg_iovlen = 1,
+    };
+    char buf[16384];
+
+    iov.iov_base = buf;
+    while (1) {
+        int status;
+        const struct rtnl_dump_filter_arg *a;
+
+        iov.iov_len = sizeof(buf);
+        status = recvmsg(rth->fd, &msg, 0);
+
+        if (status < 0) {
+            if (errno == EINTR || errno == EAGAIN)
+                continue;
+            fprintf(stderr, "netlink receive error %s (%d)\n",
+                            strerror(errno), errno);
+            return -1;
+        }
+
+        if (status == 0) {
+            fprintf(stderr, "EOF on netlink\n");
+            return -1;
+        }
+
+        for (a = arg; a->filter; a++) {
+            struct nlmsghdr *h = (struct nlmsghdr*)buf;
+
+            while (NLMSG_OK(h, status)) {
+                int err;
+
+                if (nladdr.nl_pid != 0 ||
+                     h->nlmsg_pid != rth->local.nl_pid ||
+                     h->nlmsg_seq != rth->dump) {
+                    if (a->junk) {
+                        err = a->junk(&nladdr, h, a->arg2);
+                        if (err < 0)
+                            return err;
+                    }
+                    goto skip_it;
+                }
+
+                if (h->nlmsg_type == NLMSG_DONE)
+                    return 0;
+                if (h->nlmsg_type == NLMSG_ERROR) {
+                    struct nlmsgerr *err = (struct nlmsgerr*)NLMSG_DATA(h);
+                    if (h->nlmsg_len < NLMSG_LENGTH(sizeof(struct nlmsgerr))) {
+                        fprintf(stderr, "ERROR truncated\n");
+                    } else {
+                        errno = -err->error;
+                        perror("RTNETLINK answers");
+                    }
+                    return -1;
+                }
+                err = a->filter(&nladdr, h, a->arg1);
+                if (err < 0)
+                    return err;
+
+skip_it:
+                h = NLMSG_NEXT(h, status);
+            }
+        } while (0);
+        if (msg.msg_flags & MSG_TRUNC) {
+            fprintf(stderr, "Message truncated\n");
+            continue;
+        }
+        if (status) {
+            fprintf(stderr, "!!!Remnant of size %d\n", status);
+            exit(1);
+        }
+    }
+}
+
+static int
+rtnl_dump_filter(struct rtnl_handle *rth,
+                 rtnl_filter_t filter,
+                 void *arg1,
+                 rtnl_filter_t junk,
+                 void *arg2)
+{
+    const struct rtnl_dump_filter_arg a[2] = {
+        { .filter = filter, .arg1 = arg1, .junk = junk, .arg2 = arg2 },
+        { .filter = NULL,   .arg1 = NULL, .junk = NULL, .arg2 = NULL }
+    };
+
+    return rtnl_dump_filter_l(rth, a);
+}
+
+int
+_dot3Stats_netlink_get_errorcntrs(dot3StatsTable_rowreq_ctx *rowreq_ctx, const char *name)
+{
+    struct rtnl_handle rth;
+    struct ifstat_ent *ke;
+    int done;
+
+    if (rtnl_open(&rth, 0) < 0)
+    {
+        snmp_log(LOG_ERR, "_dot3Stats_netlink_get_errorcntrs: rtnl_open() failed\n");
+        return 1;
+    }
+
+    if (rtnl_wilddump_request(&rth, AF_INET, RTM_GETLINK) < 0)
+    {
+        snmp_log(LOG_ERR, "_dot3Stats_netlink_get_errorcntrs: Cannot send dump request");
+        rtnl_close(&rth);
+        return 1;
+    }
+
+    if (rtnl_dump_filter(&rth, get_nlmsg, NULL, NULL, NULL) < 0)
+    {
+        snmp_log(LOG_ERR, "_dot3Stats_netlink_get_errorcntrs: Dump terminated\n");
+        rtnl_close(&rth);
+        return 1;
+    }
+
+    rtnl_close(&rth);
+
+    /*
+     * Now scan kern_db for this if's data
+     * While doing so, we'll throw away the kern db.
+     */
+    done = 0;
+
+    while ((ke = kern_db) != NULL)
+    {
+        if (strcmp(ke->name, name) == 0)
+        {
+            dot3StatsTable_data *data = &rowreq_ctx->data;
+
+            DEBUGMSGTL(("access:dot3StatsTable", "IFLA_STATS for %s\n", name));
+
+            data->dot3StatsFCSErrors = ke->stats.rx_crc_errors;
+            rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSFCSERRORS_FLAG;
+
+            data->dot3StatsDeferredTransmissions = ke->stats.tx_dropped;
+            rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSDEFERREDTRANSMISSIONS_FLAG;
+
+            data->dot3StatsInternalMacTransmitErrors = ke->stats.tx_fifo_errors;
+            rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSINTERNALMACTRANSMITERRORS_FLAG;
+
+            data->dot3StatsCarrierSenseErrors = ke->stats.tx_carrier_errors;
+            rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSCARRIERSENSEERRORS_FLAG;
+
+            data->dot3StatsFrameTooLongs = ke->stats.rx_frame_errors;
+            rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSFRAMETOOLONGS_FLAG;
+
+            data->dot3StatsInternalMacReceiveErrors = ke->stats.rx_fifo_errors;
+            rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSINTERNALMACRECEIVEERRORS_FLAG;
+
+            done = 1;
+        }
+        kern_db = ke->next;
+        free(ke);
+    }
+
+    return !done;
+}
+# else /* }{ */
+int
+_dot3Stats_netlink_get_errorcntrs(dot3StatsTable_rowreq_ctx *rowreq_ctx, const char *name)
+{
+    return 1;
+}
+# endif /* } */
+
+
+/*
+ * NAME: getulongfromsysclassnetstatistics
+ * PURPOSE: To get a single statistics value from /sys/class/net/<ifname>/statistics/<ctrname>
+ * ARGUMENTS: ifname: interface name
+ *      ctrname: counter name
+ *      valuep: where to store value
+ * RETURNS: 0 if value not available
+ *      non-0 if value available
+ */
+static int
+getulongfromsysclassnetstatistics(const char *ifname, const char *ctrname, u_long *valuep)
+{
+    char path[256];
+    FILE *fp;
+    int rv;
+
+    if (ifname == NULL || ctrname == NULL || valuep == NULL)
+        return 0;
+
+    snprintf(path, sizeof(path), "/sys/class/net/%s/statistics/%s", ifname, ctrname);
+    fp = fopen(path, "rt");
+    if (fp == NULL)
+        return 0;
+
+    rv = 1;
+    if (fscanf(fp, "%lu", valuep) != 1)
+        rv = 0;
+
+    fclose(fp);
+
+    return rv;
+}
+
+/*
+ * NAME: interface_dot3stats_get_errorcounters
+ * PURPOSE: To get ethernet error statistics
+ * ARGUMENTS: rowreq_ctx: where to store the value(s)
+ *      name: interface name
+ * RETURNS: nothing. fields not set if data not available
+ */
+void
+interface_dot3stats_get_errorcounters (dot3StatsTable_rowreq_ctx *rowreq_ctx, const char *name)
+{
+    u_long value;
+    dot3StatsTable_data *data = &rowreq_ctx->data;
+    FILE *dev;
+    const char NETDEV_FILE[] = "/proc/net/dev";
+
+    if (_dot3Stats_netlink_get_errorcntrs(rowreq_ctx, name) == 0)
+    {
+        DEBUGMSGTL(("access:dot3StatsTable", "interface_dot3stats_get_errorcounters: got data from IFLA_STATS\n"));
+        return;
+    }
+
+    if ((dev = fopen(NETDEV_FILE, "r")) != NULL)
+    {
+        char line[256], *lp, *next;
+        size_t namelen = strlen(name);
+        unsigned int value;
+        unsigned int column;
+
+        while (fgets(line, sizeof(line), dev) != NULL)
+        {
+            /*    br0:68395635 1038214    0    0    0     0          0    939411 25626606   90708    0    0    0     0       0          0 */
+            lp = line;
+            while (*lp == ' ' || *lp == '\t')
+                lp++;
+            if (strncmp(lp, name, namelen) != 0 || lp[namelen] != ':')
+                continue;
+            lp += namelen + 1;         /* Skip name and colon */
+
+            column = 1;
+            while (1)
+            {
+                value = strtoul(lp, &next, 10);
+                if (next == lp)
+                    break;             /* no more data */
+                switch (column)
+                {
+                case 3: 
+                    data->dot3StatsFCSErrors = value;
+                    rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSFCSERRORS_FLAG;
+                    break;
+                case 12:
+                    data->dot3StatsDeferredTransmissions = value;
+                    rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSDEFERREDTRANSMISSIONS_FLAG;
+                    break;
+                case 13:
+                    data->dot3StatsInternalMacTransmitErrors = value;
+                    rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSINTERNALMACTRANSMITERRORS_FLAG;
+                    break;
+                case 15:
+                    data->dot3StatsCarrierSenseErrors = value;
+                    rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSCARRIERSENSEERRORS_FLAG;
+                    break;
+                case 6:
+                    data->dot3StatsFrameTooLongs = value;
+                    rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSFRAMETOOLONGS_FLAG;
+                    break;
+                case 5:
+                    data->dot3StatsInternalMacReceiveErrors = value;
+                    rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSINTERNALMACRECEIVEERRORS_FLAG;
+                    break;
+                case 14:
+                    data->dot3StatsSingleCollisionFrames = value;
+                    rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSSINGLECOLLISIONFRAMES_FLAG;
+                    break;
+                }
+                column++;
+                lp = next;
+            }
+            break;
+        }
+
+        fclose(dev);
+    }
+
+    if (!(rowreq_ctx->column_exists_flags & COLUMN_DOT3STATSFCSERRORS_FLAG) &&
+          getulongfromsysclassnetstatistics(name, "rx_errors", &value)) {
+        data->dot3StatsFCSErrors = value;
+        rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSFCSERRORS_FLAG;
+    }
+    if (!(rowreq_ctx->column_exists_flags & COLUMN_DOT3STATSDEFERREDTRANSMISSIONS_FLAG) &&
+          getulongfromsysclassnetstatistics(name, "tx_dropped", &value)) {
+        data->dot3StatsDeferredTransmissions = value;
+        rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSDEFERREDTRANSMISSIONS_FLAG;
+    }
+    if (!(rowreq_ctx->column_exists_flags & COLUMN_DOT3STATSINTERNALMACTRANSMITERRORS_FLAG) &&
+          getulongfromsysclassnetstatistics(name, "tx_fifo_errors", &value)) {
+        data->dot3StatsInternalMacTransmitErrors = value;
+        rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSINTERNALMACTRANSMITERRORS_FLAG;
+    }
+    if (!(rowreq_ctx->column_exists_flags & COLUMN_DOT3STATSCARRIERSENSEERRORS_FLAG) &&
+          getulongfromsysclassnetstatistics(name, "tx_carrier_errors", &value)) {
+        data->dot3StatsCarrierSenseErrors = value;
+        rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSCARRIERSENSEERRORS_FLAG;
+    }
+    if (!(rowreq_ctx->column_exists_flags & COLUMN_DOT3STATSFRAMETOOLONGS_FLAG) &&
+          getulongfromsysclassnetstatistics(name, "rx_frame_errors", &value)) {
+        data->dot3StatsFrameTooLongs = value;
+        rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSFRAMETOOLONGS_FLAG;
+    }
+    if (!(rowreq_ctx->column_exists_flags & COLUMN_DOT3STATSINTERNALMACRECEIVEERRORS_FLAG) &&
+          getulongfromsysclassnetstatistics(name, "rx_fifo_errors", &value)) {
+        data->dot3StatsInternalMacReceiveErrors = value;
+        rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSINTERNALMACRECEIVEERRORS_FLAG;
+    }
+
+    return;
+}
+
+/*
+ * @retval  0 success
+ * @retval -1 cannot get ETHTOOL_DRVINFO failed 
+ * @retval -2 nstats zero - no statistcs available
+ * @retval -3 memory allocation for holding the statistics failed
+ * @retval -4 cannot get ETHTOOL_GSTRINGS information
+ * @retval -5 cannot get ETHTOOL_GSTATS information
+ * @retval -6 function not supported if HAVE_LINUX_ETHTOOL_H not defined
+ */
+
+
+int 
+interface_ioctl_dot3stats_get (dot3StatsTable_rowreq_ctx *rowreq_ctx, int fd, const char *name) {
+
+#ifdef HAVE_LINUX_ETHTOOL_H
+    dot3StatsTable_data *data = &rowreq_ctx->data;
+    struct ethtool_drvinfo driver_info;
+    struct ethtool_gstrings *eth_strings;
+    struct ethtool_stats *eth_stats;
+    struct ifreq ifr; 
+    unsigned int nstats, size_str, i;
+    int err;
+
+    DEBUGMSGTL(("access:dot3StatsTable:interface_ioctl_dot3Stats_get",
+                "called\n"));
+
+    memset(&ifr, 0, sizeof(ifr));
+    strlcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
+
+    memset(&driver_info, 0, sizeof (driver_info));
+    driver_info.cmd = ETHTOOL_GDRVINFO;
+    ifr.ifr_data = (char *)&driver_info;
+
+    err = _dot3Stats_ioctl_get(fd, SIOCETHTOOL, &ifr, name);
+    if (err < 0) {
+        DEBUGMSGTL(("access:dot3StatsTable:interface_ioctl_dot3Stats_get",
+                    "ETHTOOL_GETDRVINFO failed for interface |%s| \n", name));
+        return -1;
+    }
+
+    nstats = driver_info.n_stats;
+    if (nstats < 1) {
+        DEBUGMSGTL(("access:dot3StatsTable:interface_ioctl_dot3Stats_get",
+                    "no stats available for interface |%s| \n", name));
+        return -2;
+    }
+
+    size_str = nstats * ETH_GSTRING_LEN;
+
+    eth_strings = malloc(size_str + sizeof (struct ethtool_gstrings));
+    if (!eth_strings) {
+        DEBUGMSGTL(("access:dot3StatsTable:interface_ioctl_dot3Stats_get",
+                    "no memory available\n"));
+        snmp_log (LOG_ERR, "access:dot3StatsTable,interface_ioctl_dot3Stats_get, no memory available\n");
+
+        return -3;
+    }
+    memset (eth_strings, 0, (size_str + sizeof (struct ethtool_gstrings)));
+
+    eth_stats = malloc (size_str + sizeof (struct ethtool_stats));
+    if (!eth_stats) {
+        free (eth_strings);
+        DEBUGMSGTL(("access:dot3StatsTable:interface_ioctl_dot3Stats_get",
+                    "no memory available\n"));
+        snmp_log (LOG_ERR, "access:dot3StatsTable,interface_ioctl_dot3Stats_get, no memory available\n");
+
+        return -3;
+    }
+     memset (eth_stats, 0, (size_str + sizeof (struct ethtool_stats)));
+
+    eth_strings->cmd = ETHTOOL_GSTRINGS;
+    eth_strings->string_set = ETH_SS_STATS;
+    eth_strings->len = nstats;
+    ifr.ifr_data = (char *) eth_strings;
+    err = _dot3Stats_ioctl_get(fd, SIOCETHTOOL, &ifr, name);
+    if (err < 0) {
+        DEBUGMSGTL(("access:dot3StatsTable:interface_ioctl_dot3Stats_get",
+                    "cannot get stats strings information for interface |%s| \n", name));
+        snmp_log (LOG_ERR, "access:dot3StatsTable,interface_ioctl_dot3Stats_get, cannot get stats strings information for interface |%s| \n", name);
+
+        free(eth_strings);
+        free(eth_stats);
+        return -4;
+    }
+
+    eth_stats->cmd = ETHTOOL_GSTATS;
+    eth_stats->n_stats = nstats;
+    ifr.ifr_data = (char *) eth_stats;
+    err = _dot3Stats_ioctl_get(fd, SIOCETHTOOL, &ifr, name);
+    if (err < 0) {
+        DEBUGMSGTL(("access:dot3StatsTable:interface_ioctl_dot3Stats_get",
+                    "cannot get stats strings information for interface |%s| \n", name));
+        snmp_log (LOG_ERR, "access:dot3StatsTable,interface_ioctl_dot3Stats_get, cannot get stats information for interface |%s| \n", name);
+
+        free(eth_strings);
+        free(eth_stats);
+        return -5;
+    }
+
+    for (i = 0; i < nstats; i++) {
+        char s[ETH_GSTRING_LEN];
+
+        strlcpy(s, (const char *) &eth_strings->data[i * ETH_GSTRING_LEN],
+                sizeof(s));
+    
+        if (DOT3STATSALIGNMENTERRORS(s)) {
+            data->dot3StatsAlignmentErrors = (u_long)eth_stats->data[i];
+            rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSALIGNMENTERRORS_FLAG;
+        }
+
+        if (DOT3STATSMULTIPLECOLLISIONFRAMES(s)) {
+            data->dot3StatsMultipleCollisionFrames = (u_long)eth_stats->data[i];
+            rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSMULTIPLECOLLISIONFRAMES_FLAG;
+        }
+            
+        if (DOT3STATSLATECOLLISIONS(s)) {
+            data->dot3StatsLateCollisions = (u_long)eth_stats->data[i];
+            rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSLATECOLLISIONS_FLAG;
+        }
+
+        if (DOT3STATSSINGLECOLLISIONFRAMES(s)) {
+            data->dot3StatsSingleCollisionFrames = (u_long)eth_stats->data[i];
+            rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSSINGLECOLLISIONFRAMES_FLAG;
+        }
+
+        if (DOT3STATSEXCESSIVECOLLISIONS(s)) {
+            data->dot3StatsExcessiveCollisions = (u_long)eth_stats->data[i];
+            rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSEXCESSIVECOLLISIONS_FLAG;
+        }
+    }
+
+    free(eth_strings);
+    free(eth_stats);
+
+    return 0;
+#else
+    return -6;
+#endif
+}
+
+
+/*
+ * @retval  0 success
+ * @retval -1 ETHTOOL_GSET failed
+ * @retval -2 function not supported if HAVE_LINUX_ETHTOOL_H not defined
+ */
+
+int
+interface_ioctl_dot3stats_duplex_get(dot3StatsTable_rowreq_ctx *rowreq_ctx, int fd, const char* name) {
+
+#ifdef HAVE_LINUX_ETHTOOL_H
+    dot3StatsTable_data *data = &rowreq_ctx->data;
+    struct ethtool_cmd edata;
+    struct ifreq ifr;
+    int err;
+
+    DEBUGMSGTL(("access:dot3StatsTable:interface_ioctl_dot3Stats_duplex_get",
+                "called\n"));
+
+    memset(&edata, 0, sizeof (edata));
+    memset(&ifr, 0, sizeof (ifr));
+    edata.cmd = ETHTOOL_GSET;
+    ifr.ifr_data = (char *)&edata;
+
+    err = _dot3Stats_ioctl_get (fd, SIOCETHTOOL, &ifr, name);
+    if (err < 0) {
+        DEBUGMSGTL(("access:dot3StatsTable:interface_ioctl_dot3Stats_duplex_get",
+                    "ETHTOOL_GSET failed\n"));
+
+        return -1;
+    }
+    
+    if (err == 0) {
+        rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSDUPLEXSTATUS_FLAG;
+        switch (edata.duplex) {
+        case DUPLEX_HALF:
+            data->dot3StatsDuplexStatus = (u_long) DOT3STATSDUPLEXSTATUS_HALFDUPLEX;
+            break;
+        case DUPLEX_FULL:
+            data->dot3StatsDuplexStatus = (u_long) DOT3STATSDUPLEXSTATUS_FULLDUPLEX;
+            break;
+        default:
+            data->dot3StatsDuplexStatus = (u_long) DOT3STATSDUPLEXSTATUS_UNKNOWN;
+            break;
+        };
+    }
+
+    DEBUGMSGTL(("access:dot3StatsTable:interface_ioctl_dot3Stats_duplex_get",
+                "ETHTOOL_GSET processed\n"));
+    return err;
+#else
+    return -2;
+#endif
+}
+
+
+/*
+ * NAME: interface_sysclassnet_dot3stats_get
+ * PURPOSE: To get ethernet statistics from /sys/class/net/...
+ * ARGUMENTS: rowreq_ctx: where to store the value(s)
+ *	name: interface name
+ * RETURNS: nothing. fields not set if data not available
+ */
+void
+interface_sysclassnet_dot3stats_get (dot3StatsTable_rowreq_ctx *rowreq_ctx, const char *name)
+{
+    u_long value;
+    dot3StatsTable_data *data = &rowreq_ctx->data;
+
+    if (getulongfromsysclassnetstatistics(name, "rx_errors", &value)) {
+	data->dot3StatsFCSErrors = value;
+	rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSFCSERRORS_FLAG;
+    }
+    if (getulongfromsysclassnetstatistics(name, "tx_dropped", &value)) {
+	data->dot3StatsDeferredTransmissions = value;
+	rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSDEFERREDTRANSMISSIONS_FLAG;
+    }
+    if (getulongfromsysclassnetstatistics(name, "tx_fifo_errors", &value)) {
+	data->dot3StatsInternalMacTransmitErrors = value;
+	rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSINTERNALMACTRANSMITERRORS_FLAG;
+    }
+    if (getulongfromsysclassnetstatistics(name, "tx_carrier_errors", &value)) {
+	data->dot3StatsCarrierSenseErrors = value;
+	rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSCARRIERSENSEERRORS_FLAG;
+    }
+    if (getulongfromsysclassnetstatistics(name, "rx_frame_errors", &value)) {
+	data->dot3StatsFrameTooLongs = value;
+	rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSFRAMETOOLONGS_FLAG;
+    }
+    if (getulongfromsysclassnetstatistics(name, "rx_fifo_errors", &value)) {
+	data->dot3StatsInternalMacReceiveErrors = value;
+	rowreq_ctx->column_exists_flags |= COLUMN_DOT3STATSINTERNALMACRECEIVEERRORS_FLAG;
+    }
+
+    return;
+}
+
+
+
+/* ioctl wrapper
+ *
+ * @param      fd : socket fd to use w/ioctl, or -1 to open/close one
+ * @param  which
+ * @param ifrq
+ * param ifentry : ifentry to update
+ * @param name
+ *
+ * @retval  0 : success
+ * @retval -1 : invalid parameters
+ * @retval -2 : couldn't create socket
+ * @retval -3 : ioctl call failed
+ */
+int
+_dot3Stats_ioctl_get(int fd, int which, struct ifreq *ifrq, const char* name)
+{
+    int ourfd = -1, rc = 0;
+
+    DEBUGMSGTL(("access:dot3StatsTable:ioctl", "_dot3Stats_ioctl_get\n"));
+
+    /*
+     * sanity checks
+     */
+    if(NULL == name) {
+        DEBUGMSGTL(("access:dot3StatsTable:ioctl",
+                    "_dot3Stats_ioctl_get invalid ifname '%s'\n", name));
+        snmp_log (LOG_ERR, "access:dot3StatsTable:ioctl, _dot3Stats_ioctl_get error on interface '%s'\n", name);
+        return -1;
+    }
+
+    /*
+     * create socket for ioctls
+     */
+    if(fd < 0) {
+        fd = ourfd = socket(AF_INET, SOCK_DGRAM, 0);
+        if(ourfd < 0) {
+            DEBUGMSGTL(("access:dot3StatsTable:ioctl",
+                        "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;
+        }
+    }
+
+    strlcpy(ifrq->ifr_name, name, sizeof(ifrq->ifr_name));
+    rc = ioctl(fd, which, ifrq);
+    if (rc < 0) {
+        DEBUGMSGTL(("access:dot3StatsTable:ioctl",
+                    "dot3Stats_ioctl_get ioctl %d returned %d\n", which, rc));
+        rc = -3;
+    }
+
+    if(ourfd >= 0)
+        close(ourfd);
+
+    return rc;
+}
+
+
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable.h b/agent/mibgroup/etherlike-mib/dot3StatsTable.h
new file mode 100644
index 0000000..b04f7bf
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable.h
@@ -0,0 +1,11 @@
+/*
+ * module to include the modules
+ */
+
+config_require(etherlike-mib/data_access/dot3stats)
+config_require(etherlike-mib/dot3StatsTable/dot3StatsTable)
+config_require(etherlike-mib/dot3StatsTable/dot3StatsTable_data_get)
+config_require(etherlike-mib/dot3StatsTable/dot3StatsTable_data_set)
+config_require(etherlike-mib/dot3StatsTable/dot3StatsTable_data_access)
+config_require(etherlike-mib/dot3StatsTable/dot3StatsTable_interface)
+
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable.c b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable.c
new file mode 100644
index 0000000..b86380a
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable.c
@@ -0,0 +1,215 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $ 
+ *
+ * $Id:$
+ */
+/** \page MFD helper for dot3StatsTable
+ *
+ * \section intro Introduction
+ * Introductory text.
+ *
+ */
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "dot3StatsTable.h"
+
+#include <net-snmp/agent/mib_modules.h>
+
+#include "dot3StatsTable_interface.h"
+
+oid             dot3StatsTable_oid[] = { DOT3STATSTABLE_OID };
+int             dot3StatsTable_oid_size = OID_LENGTH(dot3StatsTable_oid);
+
+dot3StatsTable_registration dot3StatsTable_user_context;
+static dot3StatsTable_registration *dot3StatsTable_user_context_p;
+
+void            initialize_table_dot3StatsTable(void);
+void            shutdown_table_dot3StatsTable(void);
+
+
+/**
+ * Initializes the dot3StatsTable module
+ */
+void
+init_dot3StatsTable(void)
+{
+    DEBUGMSGTL(("verbose:dot3StatsTable:init_dot3StatsTable", "called\n"));
+
+    /*
+     * TODO:300:o: Perform dot3StatsTable one-time module initialization.
+     */
+
+    /*
+     * here we initialize all the tables we're planning on supporting
+     */
+    if (should_init("dot3StatsTable"))
+        initialize_table_dot3StatsTable();
+
+}                               /* init_dot3StatsTable */
+
+/**
+ * Shut-down the dot3StatsTable module (agent is exiting)
+ */
+void
+shutdown_dot3StatsTable(void)
+{
+    if (should_init("dot3StatsTable"))
+        shutdown_table_dot3StatsTable();
+
+}
+
+/**
+ * Initialize the table dot3StatsTable 
+ *    (Define its contents and how it's structured)
+ */
+void
+initialize_table_dot3StatsTable(void)
+{
+    u_long          flags;
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:initialize_table_dot3StatsTable",
+                "called\n"));
+
+    /*
+     * TODO:301:o: Perform dot3StatsTable one-time table initialization.
+     */
+
+    /*
+     * TODO:302:o: |->Initialize dot3StatsTable user context
+     * if you'd like to pass in a pointer to some data for this
+     * table, allocate or set it up here.
+     */
+    /*
+     * a netsnmp_data_list is a simple way to store void pointers. A simple
+     * string token is used to add, find or remove pointers.
+     */
+    dot3StatsTable_user_context_p
+	= netsnmp_create_data_list("dot3StatsTable", NULL, NULL);
+
+    /*
+     * No support for any flags yet, but in the future you would
+     * set any flags here.
+     */
+    flags = 0;
+
+    /*
+     * call interface initialization code
+     */
+    _dot3StatsTable_initialize_interface(dot3StatsTable_user_context_p, flags);
+}                               /* initialize_table_dot3StatsTable */
+
+/**
+ * Shutdown the table dot3StatsTable 
+ */
+void
+shutdown_table_dot3StatsTable(void)
+{
+    /*
+     * call interface shutdown code
+     */
+    _dot3StatsTable_shutdown_interface(dot3StatsTable_user_context_p);
+    netsnmp_free_all_list_data(dot3StatsTable_user_context_p);
+    dot3StatsTable_user_context_p = NULL;
+}
+
+/**
+ * extra context initialization (eg default values)
+ *
+ * @param rowreq_ctx    : row request context
+ * @param user_init_ctx : void pointer for user (parameter to rowreq_ctx_allocate)
+ *
+ * @retval MFD_SUCCESS  : no errors
+ * @retval MFD_ERROR    : error (context allocate will fail)
+ */
+int
+dot3StatsTable_rowreq_ctx_init(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                               void *user_init_ctx)
+{
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsTable_rowreq_ctx_init",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:210:o: |-> Perform extra dot3StatsTable rowreq initialization. (eg DEFVALS)
+     */
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsTable_rowreq_ctx_init */
+
+/**
+ * extra context cleanup
+ *
+ */
+void
+dot3StatsTable_rowreq_ctx_cleanup(dot3StatsTable_rowreq_ctx * rowreq_ctx)
+{
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsTable_rowreq_ctx_cleanup",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:211:o: |-> Perform extra dot3StatsTable rowreq cleanup.
+     */
+}                               /* dot3StatsTable_rowreq_ctx_cleanup */
+
+/**
+ * pre-request callback
+ *
+ *
+ * @retval MFD_SUCCESS              : success.
+ * @retval MFD_ERROR                : other error
+ */
+int
+dot3StatsTable_pre_request(dot3StatsTable_registration * user_context)
+{
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsTable_pre_request",
+                "called\n"));
+
+    /*
+     * TODO:510:o: Perform dot3StatsTable pre-request actions.
+     */
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsTable_pre_request */
+
+/**
+ * post-request callback
+ *
+ * Note:
+ *   New rows have been inserted into the container, and
+ *   deleted rows have been removed from the container and
+ *   released.
+ *
+ * @param user_context
+ * @param rc : MFD_SUCCESS if all requests succeeded
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR   : other error (ignored)
+ */
+int
+dot3StatsTable_post_request(dot3StatsTable_registration * user_context,
+                            int rc)
+{
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsTable_post_request",
+                "called\n"));
+
+    /*
+     * TODO:511:o: Perform dot3StatsTable post-request actions.
+     */
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsTable_post_request */
+
+
+/** @{ */
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable.h b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable.h
new file mode 100644
index 0000000..c4713fc
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable.h
@@ -0,0 +1,271 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $
+ *
+ * $Id:$
+ */
+#ifndef DOT3STATSTABLE_H
+#define DOT3STATSTABLE_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+/** @addtogroup misc misc: Miscellaneous routines
+ *
+ * @{
+ */
+#include <net-snmp/library/asn1.h>
+
+    /*
+     * OID and column number definitions for dot3StatsTable 
+     */
+#include "dot3StatsTable_oids.h"
+
+    /*
+     * enum definions 
+     */
+#include "dot3StatsTable_enums.h"
+
+    /*
+     *********************************************************************
+     * function declarations
+     */
+    void            init_dot3StatsTable(void);
+    void            shutdown_dot3StatsTable(void);
+
+    /*
+     *********************************************************************
+     * Table declarations
+     */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table dot3StatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+    /*
+     * EtherLike-MIB::dot3StatsTable is subid 2 of dot3.
+     * Its status is Current.
+     * OID: .1.3.6.1.2.1.10.7.2, length: 9
+     */
+    /*
+     *********************************************************************
+     * When you register your mib, you get to provide a generic
+     * pointer that will be passed back to you for most of the
+     * functions calls.
+     *
+     * TODO:100:r: Review all context structures
+     */
+    /*
+     * TODO:101:o: |-> Review dot3StatsTable registration context.
+     */
+    typedef netsnmp_data_list dot3StatsTable_registration;
+
+/**********************************************************************/
+    /*
+     * TODO:110:r: |-> Review dot3StatsTable data context structure.
+     * This structure is used to represent the data for dot3StatsTable.
+     */
+    /*
+     * This structure contains storage for all the columns defined in the
+     * dot3StatsTable.
+     */
+    typedef struct dot3StatsTable_data_s {
+
+        /*
+         * dot3StatsAlignmentErrors(2)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          dot3StatsAlignmentErrors;
+
+        /*
+         * dot3StatsFCSErrors(3)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          dot3StatsFCSErrors;
+
+        /*
+         * dot3StatsSingleCollisionFrames(4)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          dot3StatsSingleCollisionFrames;
+
+        /*
+         * dot3StatsMultipleCollisionFrames(5)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          dot3StatsMultipleCollisionFrames;
+
+        /*
+         * dot3StatsSQETestErrors(6)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          dot3StatsSQETestErrors;
+
+        /*
+         * dot3StatsDeferredTransmissions(7)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          dot3StatsDeferredTransmissions;
+
+        /*
+         * dot3StatsLateCollisions(8)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          dot3StatsLateCollisions;
+
+        /*
+         * dot3StatsExcessiveCollisions(9)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          dot3StatsExcessiveCollisions;
+
+        /*
+         * dot3StatsInternalMacTransmitErrors(10)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          dot3StatsInternalMacTransmitErrors;
+
+        /*
+         * dot3StatsCarrierSenseErrors(11)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          dot3StatsCarrierSenseErrors;
+
+        /*
+         * dot3StatsFrameTooLongs(13)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          dot3StatsFrameTooLongs;
+
+        /*
+         * dot3StatsInternalMacReceiveErrors(16)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          dot3StatsInternalMacReceiveErrors;
+
+        /*
+         * dot3StatsEtherChipSet(17)/OBJECTID/ASN_OBJECT_ID/oid(oid)//L/A/w/e/r/d/h
+         */
+        oid             dot3StatsEtherChipSet[128];
+        size_t          dot3StatsEtherChipSet_len;      /* # of oid elements, not bytes */
+
+        /*
+         * dot3StatsSymbolErrors(18)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          dot3StatsSymbolErrors;
+
+        /*
+         * dot3StatsDuplexStatus(19)/INTEGER/ASN_INTEGER/long(u_long)//l/A/w/E/r/d/h
+         */
+        u_long          dot3StatsDuplexStatus;
+
+        /*
+         * dot3StatsRateControlAbility(20)/TruthValue/ASN_INTEGER/long(u_long)//l/A/w/E/r/d/h
+         */
+        u_long          dot3StatsRateControlAbility;
+
+        /*
+         * dot3StatsRateControlStatus(21)/INTEGER/ASN_INTEGER/long(u_long)//l/A/w/E/r/d/h
+         */
+        u_long          dot3StatsRateControlStatus;
+
+    } dot3StatsTable_data;
+
+
+    /*
+     * TODO:120:r: |-> Review dot3StatsTable mib index.
+     * This structure is used to represent the index for dot3StatsTable.
+     */
+    typedef struct dot3StatsTable_mib_index_s {
+
+        /*
+         * dot3StatsIndex(1)/InterfaceIndex/ASN_INTEGER/long(long)//l/A/w/e/R/d/H
+         */
+        long            dot3StatsIndex;
+
+
+    } dot3StatsTable_mib_index;
+
+    /*
+     * TODO:121:r: |   |-> Review dot3StatsTable max index length.
+     * If you KNOW that your indexes will never exceed a certain
+     * length, update this macro to that length.
+     */
+#define MAX_dot3StatsTable_IDX_LEN     255
+
+
+    /*
+     *********************************************************************
+     * TODO:130:o: |-> Review dot3StatsTable Row request (rowreq) context.
+     * When your functions are called, you will be passed a
+     * dot3StatsTable_rowreq_ctx pointer.
+     */
+    typedef struct dot3StatsTable_rowreq_ctx_s {
+
+    /** this must be first for container compare to work */
+        netsnmp_index   oid_idx;
+        oid             oid_tmp[MAX_dot3StatsTable_IDX_LEN];
+
+        dot3StatsTable_mib_index tbl_idx;
+
+        dot3StatsTable_data data;
+        unsigned int    column_exists_flags;    /* flags for existence */
+
+        /*
+         * flags per row. Currently, the first (lower) 8 bits are reserved
+         * for the user. See mfd.h for other flags.
+         */
+        u_int           rowreq_flags;
+
+        /*
+         * TODO:131:o: |   |-> Add useful data to dot3StatsTable rowreq context.
+         */
+
+        /*
+         * storage for future expansion
+         */
+        netsnmp_data_list *dot3StatsTable_data_list;
+
+    } dot3StatsTable_rowreq_ctx;
+
+    typedef struct dot3StatsTable_ref_rowreq_ctx_s {
+        dot3StatsTable_rowreq_ctx *rowreq_ctx;
+    } dot3StatsTable_ref_rowreq_ctx;
+
+    /*
+     *********************************************************************
+     * function prototypes
+     */
+    int             dot3StatsTable_pre_request(dot3StatsTable_registration
+                                               * user_context);
+    int             dot3StatsTable_post_request(dot3StatsTable_registration
+                                                * user_context, int rc);
+
+    int            
+        dot3StatsTable_rowreq_ctx_init(dot3StatsTable_rowreq_ctx *
+                                       rowreq_ctx, void *user_init_ctx);
+    void           
+        dot3StatsTable_rowreq_ctx_cleanup(dot3StatsTable_rowreq_ctx *
+                                          rowreq_ctx);
+
+
+    dot3StatsTable_rowreq_ctx
+        *dot3StatsTable_row_find_by_mib_index(dot3StatsTable_mib_index *
+                                              mib_idx);
+
+    extern oid      dot3StatsTable_oid[];
+    extern int      dot3StatsTable_oid_size;
+
+
+#include "dot3StatsTable_interface.h"
+#include "dot3StatsTable_data_access.h"
+#include "dot3StatsTable_data_get.h"
+#include "dot3StatsTable_data_set.h"
+
+    /*
+     * DUMMY markers, ignore
+     *
+     * TODO:099:x: *************************************************************
+     * TODO:199:x: *************************************************************
+     * TODO:299:x: *************************************************************
+     * TODO:399:x: *************************************************************
+     * TODO:499:x: *************************************************************
+     */
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* DOT3STATSTABLE_H */
+/** @} */
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c
new file mode 100644
index 0000000..74f33bf
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.c
@@ -0,0 +1,418 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $ 
+ *
+ * $Id:$
+ */
+/*
+ * standard Net-SNMP includes 
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "dot3StatsTable.h"
+#include "dot3StatsTable_data_access.h"
+
+#if defined(linux)
+#include "ioctl_imp_common.h"
+#endif
+
+/** @ingroup interface
+ * @addtogroup data_access data_access: Routines to access data
+ *
+ * These routines are used to locate the data used to satisfy
+ * requests.
+ * 
+ * @{
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table dot3StatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * EtherLike-MIB::dot3StatsTable is subid 2 of dot3.
+ * Its status is Current.
+ * OID: .1.3.6.1.2.1.10.7.2, length: 9
+ */
+
+/**
+ * initialization for dot3StatsTable data access
+ *
+ * This function is called during startup to allow you to
+ * allocate any resources you need for the data table.
+ *
+ * @param dot3StatsTable_reg
+ *        Pointer to dot3StatsTable_registration
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR   : unrecoverable error.
+ */
+int
+dot3StatsTable_init_data(dot3StatsTable_registration * dot3StatsTable_reg)
+{
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsTable_init_data",
+                "called\n"));
+
+    /*
+     * TODO:303:o: Initialize dot3StatsTable data.
+     */
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsTable_init_data */
+
+/**
+ * container overview
+ *
+ */
+
+/**
+ * container initialization
+ *
+ * @param container_ptr_ptr A pointer to a container pointer. If you
+ *        create a custom container, use this parameter to return it
+ *        to the MFD helper. If set to NULL, the MFD helper will
+ *        allocate a container for you.
+ * @param  cache A pointer to a cache structure. You can set the timeout
+ *         and other cache flags using this pointer.
+ *
+ *  This function is called at startup to allow you to customize certain
+ *  aspects of the access method. For the most part, it is for advanced
+ *  users. The default code should suffice for most cases. If no custom
+ *  container is allocated, the MFD code will create one for your.
+ *
+ *  This is also the place to set up cache behavior. The default, to
+ *  simply set the cache timeout, will work well with the default
+ *  container. If you are using a custom container, you may want to
+ *  look at the cache helper documentation to see if there are any
+ *  flags you want to set.
+ *
+ * @remark
+ *  This would also be a good place to do any initialization needed
+ *  for you data source. For example, opening a connection to another
+ *  process that will supply the data, opening a database, etc.
+ */
+void
+dot3StatsTable_container_init(netsnmp_container ** container_ptr_ptr,
+                              netsnmp_cache * cache)
+{
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsTable_container_init",
+                "called\n"));
+
+    if (NULL == container_ptr_ptr) {
+        snmp_log(LOG_ERR,
+                 "bad container param to dot3StatsTable_container_init\n");
+        return;
+    }
+
+    /*
+     * For advanced users, you can use a custom container. If you
+     * do not create one, one will be created for you.
+     */
+    *container_ptr_ptr = NULL;
+
+    if (NULL == cache) {
+        snmp_log(LOG_ERR,
+                 "bad cache param to dot3StatsTable_container_init\n");
+        return;
+    }
+
+    /*
+     * TODO:345:A: Set up dot3StatsTable cache properties.
+     *
+     * Also for advanced users, you can set parameters for the
+     * cache. Do not change the magic pointer, as it is used
+     * by the MFD helper. To completely disable caching, set
+     * cache->enabled to 0.
+     */
+    cache->timeout = DOT3STATSTABLE_CACHE_TIMEOUT;      /* seconds */
+}                               /* dot3StatsTable_container_init */
+
+/**
+ * container shutdown
+ *
+ * @param container_ptr A pointer to the container.
+ *
+ *  This function is called at shutdown to allow you to customize certain
+ *  aspects of the access method. For the most part, it is for advanced
+ *  users. The default code should suffice for most cases.
+ *
+ *  This function is called before dot3StatsTable_container_free().
+ *
+ * @remark
+ *  This would also be a good place to do any cleanup needed
+ *  for you data source. For example, closing a connection to another
+ *  process that supplied the data, closing a database, etc.
+ */
+void
+dot3StatsTable_container_shutdown(netsnmp_container * container_ptr)
+{
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsTable_container_shutdown",
+                "called\n"));
+
+    if (NULL == container_ptr) {
+        snmp_log(LOG_ERR,
+                 "bad params to dot3StatsTable_container_shutdown\n");
+        return;
+    }
+
+}                               /* dot3StatsTable_container_shutdown */
+
+/**
+ * load initial data
+ *
+ * TODO:350:M: Implement dot3StatsTable data load
+ * This function will also be called by the cache helper to load
+ * the container again (after the container free function has been
+ * called to free the previous contents).
+ *
+ * @param container container to which items should be inserted
+ *
+ * @retval MFD_SUCCESS              : success.
+ * @retval MFD_RESOURCE_UNAVAILABLE : Can't access data source
+ * @retval MFD_ERROR                : other error.
+ *
+ *  This function is called to load the index(es) (and data, optionally)
+ *  for the every row in the data set.
+ *
+ * @remark
+ *  While loading the data, the only important thing is the indexes.
+ *  If access to your data is cheap/fast (e.g. you have a pointer to a
+ *  structure in memory), it would make sense to update the data here.
+ *  If, however, the accessing the data invovles more work (e.g. parsing
+ *  some other existing data, or peforming calculations to derive the data),
+ *  then you can limit yourself to setting the indexes and saving any
+ *  information you will need later. Then use the saved information in
+ *  dot3StatsTable_row_prep() for populating data.
+ *
+ * @note
+ *  If you need consistency between rows (like you want statistics
+ *  for each row to be from the same time frame), you should set all
+ *  data here.
+ *
+ */
+
+/*
+ *
+ * @retval  MFD_SUCCESS success
+ * @retval  MFD_ERROR could not get the interface names 
+ * @retval  MFD_RESOURCE_UNAVAILABLE failed to allocate memory
+ * @retval  -2 could not open a socket
+ */
+
+
+int
+dot3StatsTable_container_load(netsnmp_container * container)
+{
+    size_t          count = 0;
+    int             fd;
+#if defined(linux)
+    long            dot3StatsIndex;
+    int             rc = 0, retval = 0;
+    struct ifname *list_head = NULL, *p = NULL;
+#endif
+    
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsTable_container_load",
+                "called\n"));
+      
+    /*
+     * TODO:352:M: |   |-> set indexes in new dot3StatsTable rowreq context.
+     * data context will be set from the param (unless NULL,
+     * in which case a new data context will be allocated)
+     */
+    
+    /*
+     * temporary storage for index values
+     */
+
+    /*
+     * dot3StatsIndex(1)/InterfaceIndex/ASN_INTEGER/long(long)//l/A/w/e/R/d/H
+     */
+
+
+
+    /*
+     * create socket for ioctls
+     */
+    
+    fd = socket(AF_INET, SOCK_DGRAM, 0);
+    if(fd < 0) {
+        snmp_log(LOG_ERR, "could not create socket\n");
+        return -2;
+    }
+
+    /*
+     * get the interface names of the devices present in the system, in case of failure retval suggests the reson for failure
+     * and list_head contains null
+     */
+
+#if defined(linux)
+    list_head = dot3stats_interface_name_list_get (list_head, &retval);
+
+    if (!list_head) {
+        snmp_log (LOG_ERR, "access:dot3StatsTable, error getting the interface names present in the system\n");
+        DEBUGMSGTL(("access:dot3StatsTable", "error getting the interface names present in the system"));
+        close(fd);
+        return MFD_ERROR;
+    }
+    
+    /*
+     * Walk over the list of interface names present in the system and retreive the statistics 
+     */
+
+    for (p = list_head; p; p = p->ifn_next) {
+        dot3StatsTable_rowreq_ctx *rowreq_ctx;
+
+        DEBUGMSGTL(("access:dot3StatsTable", "processing '%s'\n", p->name));
+
+        /*
+         * get index via ioctl.
+         */
+
+        dot3StatsIndex = (long) dot3stats_interface_ioctl_ifindex_get(-1, p->name);
+
+        /* 
+         *    get the dot3stats contents populated, if the device is not an ethernet device
+         *    the operation will not be supported and an error message will be logged
+         */
+        
+        rowreq_ctx = dot3StatsTable_allocate_rowreq_ctx(NULL);
+        if (NULL == rowreq_ctx) {
+            snmp_log(LOG_ERR, "memory allocation for dot3StatsTable failed\n");
+            close(fd);
+            return MFD_RESOURCE_UNAVAILABLE;
+        }
+        
+        if (MFD_SUCCESS !=
+            dot3StatsTable_indexes_set(rowreq_ctx, dot3StatsIndex)) {
+            snmp_log(LOG_ERR,
+                     "error setting index while loading "
+                     "dot3StatsTable data.\n");
+            dot3StatsTable_release_rowreq_ctx(rowreq_ctx);
+            continue;
+        }
+
+        /*
+         * TODO:352:r: |   |-> populate dot3StatsTable data context.
+         * Populate data context here. (optionally, delay until row prep)
+         */
+        /*
+         * non-TRANSIENT data: no need to copy. set pointer to data 
+         */
+
+        memset (&rowreq_ctx->data, 0, sizeof (rowreq_ctx->data));
+        rc = interface_ioctl_dot3stats_get (rowreq_ctx, fd, p->name);
+
+        if (rc < 0) {
+            DEBUGMSGTL(("access:dot3StatsTable", "error getting the statistics for interface |%s| "
+                        "dot3StatsTable data, operation might not be supported\n", p->name));
+            dot3StatsTable_release_rowreq_ctx(rowreq_ctx);
+            continue;
+        }
+
+        rc = interface_ioctl_dot3stats_duplex_get(rowreq_ctx, fd, p->name);
+        if (rc < 0) {
+            DEBUGMSGTL(("access:dot3StatsTable", "error getting the duplex status for |%s| "
+                        "dot3StatsTable data, operation might not be supported\n", p->name));
+            dot3StatsTable_release_rowreq_ctx(rowreq_ctx);
+            continue;
+        }
+
+	interface_sysclassnet_dot3stats_get(rowreq_ctx, p->name);
+
+	interface_dot3stats_get_errorcounters(rowreq_ctx, p->name);
+
+        /*
+         * insert into table container
+         */
+        rc = CONTAINER_INSERT(container, rowreq_ctx);
+        if (rc < 0) {
+            DEBUGMSGTL(("access:dot3StatsTable", "error inserting |%s|", p->name));
+            dot3StatsTable_release_rowreq_ctx(rowreq_ctx);
+            continue;
+        }
+
+        ++count;
+    }
+
+    close(fd);
+
+    /*
+     * free the interface names list 
+     */
+
+    if ( (dot3stats_interface_name_list_free(list_head)) < 0) {
+        snmp_log(LOG_ERR, "access:dot3StatsTable, error freeing the interface name list \n");
+        DEBUGMSGTL(("access:dot3StatsTable", "error freeing the interface name list\n"));
+        return MFD_ERROR;
+    }
+#endif
+
+    DEBUGMSGT(("verbose:dot3StatsTable:dot3StatsTable_container_load",
+               "inserted %" NETSNMP_PRIz "d records\n", count));
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsTable_container_load */
+
+/**
+ * container clean up
+ *
+ * @param container container with all current items
+ *
+ *  This optional callback is called prior to all
+ *  item's being removed from the container. If you
+ *  need to do any processing before that, do it here.
+ *
+ * @note
+ *  The MFD helper will take care of releasing all the row contexts.
+ *
+ */
+void
+dot3StatsTable_container_free(netsnmp_container * container)
+{
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsTable_container_free",
+                "called\n"));
+
+    /*
+     * TODO:380:M: Free dot3StatsTable container data.
+     */
+}                               /* dot3StatsTable_container_free */
+
+/**
+ * prepare row for processing.
+ *
+ *  When the agent has located the row for a request, this function is
+ *  called to prepare the row for processing. If you fully populated
+ *  the data context during the index setup phase, you may not need to
+ *  do anything.
+ *
+ * @param rowreq_ctx pointer to a context.
+ *
+ * @retval MFD_SUCCESS     : success.
+ * @retval MFD_ERROR       : other error.
+ */
+int
+dot3StatsTable_row_prep(dot3StatsTable_rowreq_ctx * rowreq_ctx)
+{
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsTable_row_prep",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:390:o: Prepare row for request.
+     * If populating row data was delayed, this is the place to
+     * fill in the row for this request.
+     */
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsTable_row_prep */
+
+/** @} */
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.h b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.h
new file mode 100644
index 0000000..f4b39a9
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_access.h
@@ -0,0 +1,79 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $
+ *
+ * $Id:$
+ */
+#ifndef DOT3STATSTABLE_DATA_ACCESS_H
+#define DOT3STATSTABLE_DATA_ACCESS_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+    /*
+     *********************************************************************
+     * function declarations
+     */
+
+    /*
+     *********************************************************************
+     * Table declarations
+     */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table dot3StatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+    /*
+     * EtherLike-MIB::dot3StatsTable is subid 2 of dot3.
+     * Its status is Current.
+     * OID: .1.3.6.1.2.1.10.7.2, length: 9
+     */
+
+
+    int             dot3StatsTable_init_data(dot3StatsTable_registration *
+                                             dot3StatsTable_reg);
+
+
+    /*
+     * TODO:180:o: Review dot3StatsTable cache timeout.
+     * The number of seconds before the cache times out
+     */
+#define DOT3STATSTABLE_CACHE_TIMEOUT   60
+
+    void            dot3StatsTable_container_init(netsnmp_container **
+                                                  container_ptr_ptr,
+                                                  netsnmp_cache * cache);
+    void            dot3StatsTable_container_shutdown(netsnmp_container *
+                                                      container_ptr);
+
+    int             dot3StatsTable_container_load(netsnmp_container *
+                                                  container);
+    void            dot3StatsTable_container_free(netsnmp_container *
+                                                  container);
+
+    int             dot3StatsTable_cache_load(netsnmp_container *
+                                              container);
+    void            dot3StatsTable_cache_free(netsnmp_container *
+                                              container);
+
+#define MAX_LINE_SIZE 256
+
+    int             dot3StatsTable_row_prep(dot3StatsTable_rowreq_ctx *
+                                            rowreq_ctx);
+
+    void            interface_sysclassnet_dot3stats_get
+        (dot3StatsTable_rowreq_ctx * rowreq_ctx, const char *name);
+    void            interface_dot3stats_get_errorcounters
+        (dot3StatsTable_rowreq_ctx * rowreq_ctx, const char *name);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* DOT3STATSTABLE_DATA_ACCESS_H */
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_get.c b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_get.c
new file mode 100644
index 0000000..42646e0
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_get.c
@@ -0,0 +1,1450 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 12088 $ of $ 
+ *
+ * $Id:$
+ */
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "dot3StatsTable.h"
+
+
+/** @defgroup data_get data_get: Routines to get data
+ *
+ * TODO:230:M: Implement dot3StatsTable get routines.
+ * TODO:240:M: Implement dot3StatsTable mapping routines (if any).
+ *
+ * These routine are used to get the value for individual objects. The
+ * row context is passed, along with a pointer to the memory where the
+ * value should be copied.
+ *
+ * @{
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table dot3StatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * EtherLike-MIB::dot3StatsTable is subid 2 of dot3.
+ * Its status is Current.
+ * OID: .1.3.6.1.2.1.10.7.2, length: 9
+ */
+
+/*
+ * ---------------------------------------------------------------------
+ * * TODO:200:r: Implement dot3StatsTable data context functions.
+ */
+
+
+/**
+ * set mib index(es)
+ *
+ * @param tbl_idx mib index structure
+ * @param dot3StatsIndex_val
+ *
+ * @retval MFD_SUCCESS     : success.
+ * @retval MFD_ERROR       : other error.
+ *
+ * @remark
+ *  This convenience function is useful for setting all the MIB index
+ *  components with a single function call. It is assume that the C values
+ *  have already been mapped from their native/rawformat to the MIB format.
+ */
+int
+dot3StatsTable_indexes_set_tbl_idx(dot3StatsTable_mib_index * tbl_idx,
+                                   long dot3StatsIndex_val)
+{
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsTable_indexes_set_tbl_idx", "called\n"));
+
+    /*
+     * dot3StatsIndex(1)/InterfaceIndex/ASN_INTEGER/long(long)//l/A/w/e/R/d/H 
+     */
+    tbl_idx->dot3StatsIndex = dot3StatsIndex_val;
+
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsTable_indexes_set_tbl_idx */
+
+/**
+ * @internal
+ * set row context indexes
+ *
+ * @param reqreq_ctx the row context that needs updated indexes
+ *
+ * @retval MFD_SUCCESS     : success.
+ * @retval MFD_ERROR       : other error.
+ *
+ * @remark
+ *  This function sets the mib indexs, then updates the oid indexs
+ *  from the mib index.
+ */
+int
+dot3StatsTable_indexes_set(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                           long dot3StatsIndex_val)
+{
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsTable_indexes_set",
+                "called\n"));
+
+    if (MFD_SUCCESS !=
+        dot3StatsTable_indexes_set_tbl_idx(&rowreq_ctx->tbl_idx,
+                                           dot3StatsIndex_val))
+        return MFD_ERROR;
+
+    /*
+     * convert mib index to oid index
+     */
+    rowreq_ctx->oid_idx.len = sizeof(rowreq_ctx->oid_tmp) / sizeof(oid);
+    if (0 != dot3StatsTable_index_to_oid(&rowreq_ctx->oid_idx,
+                                         &rowreq_ctx->tbl_idx)) {
+        return MFD_ERROR;
+    }
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsTable_indexes_set */
+
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsAlignmentErrors
+ * dot3StatsAlignmentErrors is subid 2 of dot3StatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.2
+ * Description:
+A count of frames received on a particular
+                    interface that are not an integral number of
+                    octets in length and do not pass the FCS check.
+
+                    The count represented by an instance of this
+                    object is incremented when the alignmentError
+                    status is returned by the MAC service to the
+                    LLC (or other MAC user). Received frames for
+                    which multiple error conditions pertain are,
+                    according to the conventions of IEEE 802.3
+                    Layer Management, counted exclusively according
+
+                    to the error status presented to the LLC.
+
+                    This counter does not increment for group
+                    encoding schemes greater than 4 bits per group.
+
+                    For interfaces operating at 10 Gb/s, this
+                    counter can roll over in less than 5 minutes if
+                    it is incrementing at its maximum rate.  Since
+                    that amount of time could be less than a
+                    management station's poll cycle time, in order
+                    to avoid a loss of information, a management
+                    station is advised to poll the
+                    dot3HCStatsAlignmentErrors object for 10 Gb/s
+                    or faster interfaces.
+
+                    Discontinuities in the value of this counter can
+                    occur at re-initialization of the management
+                    system, and at other times as indicated by the
+                    value of ifCounterDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the dot3StatsAlignmentErrors data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsAlignmentErrors_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+dot3StatsAlignmentErrors_get(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                             u_long * dot3StatsAlignmentErrors_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != dot3StatsAlignmentErrors_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsAlignmentErrors_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsAlignmentErrors data.
+     * copy (* dot3StatsAlignmentErrors_val_ptr ) from rowreq_ctx->data
+     */
+    (*dot3StatsAlignmentErrors_val_ptr) =
+        rowreq_ctx->data.dot3StatsAlignmentErrors;
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsAlignmentErrors_get */
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsFCSErrors
+ * dot3StatsFCSErrors is subid 3 of dot3StatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.3
+ * Description:
+A count of frames received on a particular
+                    interface that are an integral number of octets
+                    in length but do not pass the FCS check.  This
+                    count does not include frames received with
+                    frame-too-long or frame-too-short error.
+
+                    The count represented by an instance of this
+                    object is incremented when the frameCheckError
+                    status is returned by the MAC service to the
+                    LLC (or other MAC user). Received frames for
+                    which multiple error conditions pertain are,
+                    according to the conventions of IEEE 802.3
+                    Layer Management, counted exclusively according
+                    to the error status presented to the LLC.
+
+                    Note:  Coding errors detected by the physical
+                    layer for speeds above 10 Mb/s will cause the
+                    frame to fail the FCS check.
+
+                    For interfaces operating at 10 Gb/s, this
+                    counter can roll over in less than 5 minutes if
+
+                    it is incrementing at its maximum rate.  Since
+                    that amount of time could be less than a
+                    management station's poll cycle time, in order
+                    to avoid a loss of information, a management
+                    station is advised to poll the
+                    dot3HCStatsFCSErrors object for 10 Gb/s or
+                    faster interfaces.
+
+                    Discontinuities in the value of this counter can
+                    occur at re-initialization of the management
+                    system, and at other times as indicated by the
+                    value of ifCounterDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the dot3StatsFCSErrors data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsFCSErrors_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+dot3StatsFCSErrors_get(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                       u_long * dot3StatsFCSErrors_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != dot3StatsFCSErrors_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsFCSErrors_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsFCSErrors data.
+     * copy (* dot3StatsFCSErrors_val_ptr ) from rowreq_ctx->data
+     */
+    (*dot3StatsFCSErrors_val_ptr) = rowreq_ctx->data.dot3StatsFCSErrors;
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsFCSErrors_get */
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsSingleCollisionFrames
+ * dot3StatsSingleCollisionFrames is subid 4 of dot3StatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.4
+ * Description:
+A count of frames that are involved in a single
+                    collision, and are subsequently transmitted
+                    successfully.
+
+                    A frame that is counted by an instance of this
+                    object is also counted by the corresponding
+                    instance of either the ifOutUcastPkts,
+                    ifOutMulticastPkts, or ifOutBroadcastPkts,
+                    and is not counted by the corresponding
+                    instance of the dot3StatsMultipleCollisionFrames
+                    object.
+
+                    This counter does not increment when the
+                    interface is operating in full-duplex mode.
+
+                    Discontinuities in the value of this counter can
+                    occur at re-initialization of the management
+                    system, and at other times as indicated by the
+                    value of ifCounterDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the dot3StatsSingleCollisionFrames data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsSingleCollisionFrames_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+dot3StatsSingleCollisionFrames_get(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                                   u_long *
+                                   dot3StatsSingleCollisionFrames_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != dot3StatsSingleCollisionFrames_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsSingleCollisionFrames_get", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsSingleCollisionFrames data.
+     * copy (* dot3StatsSingleCollisionFrames_val_ptr ) from rowreq_ctx->data
+     */
+    (*dot3StatsSingleCollisionFrames_val_ptr) =
+        rowreq_ctx->data.dot3StatsSingleCollisionFrames;
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsSingleCollisionFrames_get */
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsMultipleCollisionFrames
+ * dot3StatsMultipleCollisionFrames is subid 5 of dot3StatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.5
+ * Description:
+A count of frames that are involved in more
+
+                    than one collision and are subsequently
+                    transmitted successfully.
+
+                    A frame that is counted by an instance of this
+                    object is also counted by the corresponding
+                    instance of either the ifOutUcastPkts,
+                    ifOutMulticastPkts, or ifOutBroadcastPkts,
+                    and is not counted by the corresponding
+                    instance of the dot3StatsSingleCollisionFrames
+                    object.
+
+                    This counter does not increment when the
+                    interface is operating in full-duplex mode.
+
+                    Discontinuities in the value of this counter can
+                    occur at re-initialization of the management
+                    system, and at other times as indicated by the
+                    value of ifCounterDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the dot3StatsMultipleCollisionFrames data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsMultipleCollisionFrames_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+dot3StatsMultipleCollisionFrames_get(dot3StatsTable_rowreq_ctx *
+                                     rowreq_ctx,
+                                     u_long *
+                                     dot3StatsMultipleCollisionFrames_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != dot3StatsMultipleCollisionFrames_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsMultipleCollisionFrames_get", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsMultipleCollisionFrames data.
+     * copy (* dot3StatsMultipleCollisionFrames_val_ptr ) from rowreq_ctx->data
+     */
+    (*dot3StatsMultipleCollisionFrames_val_ptr) =
+        rowreq_ctx->data.dot3StatsMultipleCollisionFrames;
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsMultipleCollisionFrames_get */
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsSQETestErrors
+ * dot3StatsSQETestErrors is subid 6 of dot3StatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.6
+ * Description:
+A count of times that the SQE TEST ERROR
+                    is received on a particular interface. The
+                    SQE TEST ERROR is set in accordance with the
+                    rules for verification of the SQE detection
+                    mechanism in the PLS Carrier Sense Function as
+                    described in IEEE Std. 802.3, 2000 Edition,
+                    section 7.2.4.6.
+
+                    This counter does not increment on interfaces
+                    operating at speeds greater than 10 Mb/s, or on
+                    interfaces operating in full-duplex mode.
+
+                    Discontinuities in the value of this counter can
+                    occur at re-initialization of the management
+                    system, and at other times as indicated by the
+                    value of ifCounterDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the dot3StatsSQETestErrors data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsSQETestErrors_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+dot3StatsSQETestErrors_get(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                           u_long * dot3StatsSQETestErrors_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != dot3StatsSQETestErrors_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsSQETestErrors_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsSQETestErrors data.
+     * copy (* dot3StatsSQETestErrors_val_ptr ) from rowreq_ctx->data
+     */
+    (*dot3StatsSQETestErrors_val_ptr) =
+        rowreq_ctx->data.dot3StatsSQETestErrors;
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsSQETestErrors_get */
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsDeferredTransmissions
+ * dot3StatsDeferredTransmissions is subid 7 of dot3StatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.7
+ * Description:
+A count of frames for which the first
+                    transmission attempt on a particular interface
+                    is delayed because the medium is busy.
+
+                    The count represented by an instance of this
+                    object does not include frames involved in
+                    collisions.
+
+                    This counter does not increment when the
+                    interface is operating in full-duplex mode.
+
+                    Discontinuities in the value of this counter can
+                    occur at re-initialization of the management
+                    system, and at other times as indicated by the
+                    value of ifCounterDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the dot3StatsDeferredTransmissions data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsDeferredTransmissions_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+dot3StatsDeferredTransmissions_get(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                                   u_long *
+                                   dot3StatsDeferredTransmissions_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != dot3StatsDeferredTransmissions_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsDeferredTransmissions_get", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsDeferredTransmissions data.
+     * copy (* dot3StatsDeferredTransmissions_val_ptr ) from rowreq_ctx->data
+     */
+    (*dot3StatsDeferredTransmissions_val_ptr) =
+        rowreq_ctx->data.dot3StatsDeferredTransmissions;
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsDeferredTransmissions_get */
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsLateCollisions
+ * dot3StatsLateCollisions is subid 8 of dot3StatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.8
+ * Description:
+The number of times that a collision is
+                    detected on a particular interface later than
+                    one slotTime into the transmission of a packet.
+
+                    A (late) collision included in a count
+                    represented by an instance of this object is
+                    also considered as a (generic) collision for
+                    purposes of other collision-related
+                    statistics.
+
+                    This counter does not increment when the
+                    interface is operating in full-duplex mode.
+
+                    Discontinuities in the value of this counter can
+                    occur at re-initialization of the management
+                    system, and at other times as indicated by the
+                    value of ifCounterDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the dot3StatsLateCollisions data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsLateCollisions_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+dot3StatsLateCollisions_get(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                            u_long * dot3StatsLateCollisions_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != dot3StatsLateCollisions_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsLateCollisions_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsLateCollisions data.
+     * copy (* dot3StatsLateCollisions_val_ptr ) from rowreq_ctx->data
+     */
+    (*dot3StatsLateCollisions_val_ptr) =
+        rowreq_ctx->data.dot3StatsLateCollisions;
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsLateCollisions_get */
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsExcessiveCollisions
+ * dot3StatsExcessiveCollisions is subid 9 of dot3StatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.9
+ * Description:
+A count of frames for which transmission on a
+                    particular interface fails due to excessive
+                    collisions.
+
+                    This counter does not increment when the
+                    interface is operating in full-duplex mode.
+
+                    Discontinuities in the value of this counter can
+                    occur at re-initialization of the management
+                    system, and at other times as indicated by the
+                    value of ifCounterDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the dot3StatsExcessiveCollisions data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsExcessiveCollisions_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+dot3StatsExcessiveCollisions_get(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                                 u_long *
+                                 dot3StatsExcessiveCollisions_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != dot3StatsExcessiveCollisions_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsExcessiveCollisions_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsExcessiveCollisions data.
+     * copy (* dot3StatsExcessiveCollisions_val_ptr ) from rowreq_ctx->data
+     */
+    (*dot3StatsExcessiveCollisions_val_ptr) =
+        rowreq_ctx->data.dot3StatsExcessiveCollisions;
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsExcessiveCollisions_get */
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsInternalMacTransmitErrors
+ * dot3StatsInternalMacTransmitErrors is subid 10 of dot3StatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.10
+ * Description:
+A count of frames for which transmission on a
+                    particular interface fails due to an internal
+                    MAC sublayer transmit error. A frame is only
+                    counted by an instance of this object if it is
+                    not counted by the corresponding instance of
+                    either the dot3StatsLateCollisions object, the
+                    dot3StatsExcessiveCollisions object, or the
+                    dot3StatsCarrierSenseErrors object.
+
+                    The precise meaning of the count represented by
+                    an instance of this object is implementation-
+                    specific.  In particular, an instance of this
+                    object may represent a count of transmission
+                    errors on a particular interface that are not
+                    otherwise counted.
+
+                    For interfaces operating at 10 Gb/s, this
+                    counter can roll over in less than 5 minutes if
+                    it is incrementing at its maximum rate.  Since
+                    that amount of time could be less than a
+                    management station's poll cycle time, in order
+                    to avoid a loss of information, a management
+                    station is advised to poll the
+                    dot3HCStatsInternalMacTransmitErrors object for
+                    10 Gb/s or faster interfaces.
+
+                    Discontinuities in the value of this counter can
+
+                    occur at re-initialization of the management
+                    system, and at other times as indicated by the
+                    value of ifCounterDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the dot3StatsInternalMacTransmitErrors data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsInternalMacTransmitErrors_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+dot3StatsInternalMacTransmitErrors_get(dot3StatsTable_rowreq_ctx *
+                                       rowreq_ctx,
+                                       u_long *
+                                       dot3StatsInternalMacTransmitErrors_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != dot3StatsInternalMacTransmitErrors_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsInternalMacTransmitErrors_get", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsInternalMacTransmitErrors data.
+     * copy (* dot3StatsInternalMacTransmitErrors_val_ptr ) from rowreq_ctx->data
+     */
+    (*dot3StatsInternalMacTransmitErrors_val_ptr) =
+        rowreq_ctx->data.dot3StatsInternalMacTransmitErrors;
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsInternalMacTransmitErrors_get */
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsCarrierSenseErrors
+ * dot3StatsCarrierSenseErrors is subid 11 of dot3StatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.11
+ * Description:
+The number of times that the carrier sense
+                    condition was lost or never asserted when
+                    attempting to transmit a frame on a particular
+                    interface.
+
+                    The count represented by an instance of this
+                    object is incremented at most once per
+                    transmission attempt, even if the carrier sense
+                    condition fluctuates during a transmission
+                    attempt.
+
+                    This counter does not increment when the
+                    interface is operating in full-duplex mode.
+
+                    Discontinuities in the value of this counter can
+                    occur at re-initialization of the management
+                    system, and at other times as indicated by the
+                    value of ifCounterDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the dot3StatsCarrierSenseErrors data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsCarrierSenseErrors_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+dot3StatsCarrierSenseErrors_get(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                                u_long *
+                                dot3StatsCarrierSenseErrors_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != dot3StatsCarrierSenseErrors_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsCarrierSenseErrors_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsCarrierSenseErrors data.
+     * copy (* dot3StatsCarrierSenseErrors_val_ptr ) from rowreq_ctx->data
+     */
+    (*dot3StatsCarrierSenseErrors_val_ptr) =
+        rowreq_ctx->data.dot3StatsCarrierSenseErrors;
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsCarrierSenseErrors_get */
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsFrameTooLongs
+ * dot3StatsFrameTooLongs is subid 13 of dot3StatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.13
+ * Description:
+A count of frames received on a particular
+                    interface that exceed the maximum permitted
+                    frame size.
+
+                    The count represented by an instance of this
+                    object is incremented when the frameTooLong
+                    status is returned by the MAC service to the
+                    LLC (or other MAC user). Received frames for
+                    which multiple error conditions pertain are,
+                    according to the conventions of IEEE 802.3
+                    Layer Management, counted exclusively according
+                    to the error status presented to the LLC.
+
+                    For interfaces operating at 10 Gb/s, this
+                    counter can roll over in less than 80 minutes if
+                    it is incrementing at its maximum rate.  Since
+                    that amount of time could be less than a
+                    management station's poll cycle time, in order
+                    to avoid a loss of information, a management
+                    station is advised to poll the
+                    dot3HCStatsFrameTooLongs object for 10 Gb/s
+                    or faster interfaces.
+
+                    Discontinuities in the value of this counter can
+                    occur at re-initialization of the management
+                    system, and at other times as indicated by the
+                    value of ifCounterDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the dot3StatsFrameTooLongs data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsFrameTooLongs_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+dot3StatsFrameTooLongs_get(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                           u_long * dot3StatsFrameTooLongs_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != dot3StatsFrameTooLongs_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsFrameTooLongs_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsFrameTooLongs data.
+     * copy (* dot3StatsFrameTooLongs_val_ptr ) from rowreq_ctx->data
+     */
+    (*dot3StatsFrameTooLongs_val_ptr) =
+        rowreq_ctx->data.dot3StatsFrameTooLongs;
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsFrameTooLongs_get */
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsInternalMacReceiveErrors
+ * dot3StatsInternalMacReceiveErrors is subid 16 of dot3StatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.16
+ * Description:
+A count of frames for which reception on a
+                    particular interface fails due to an internal
+                    MAC sublayer receive error. A frame is only
+                    counted by an instance of this object if it is
+                    not counted by the corresponding instance of
+                    either the dot3StatsFrameTooLongs object, the
+                    dot3StatsAlignmentErrors object, or the
+                    dot3StatsFCSErrors object.
+
+                    The precise meaning of the count represented by
+                    an instance of this object is implementation-
+                    specific.  In particular, an instance of this
+                    object may represent a count of receive errors
+                    on a particular interface that are not
+                    otherwise counted.
+
+                    For interfaces operating at 10 Gb/s, this
+                    counter can roll over in less than 5 minutes if
+
+                    it is incrementing at its maximum rate.  Since
+                    that amount of time could be less than a
+                    management station's poll cycle time, in order
+                    to avoid a loss of information, a management
+                    station is advised to poll the
+                    dot3HCStatsInternalMacReceiveErrors object for
+                    10 Gb/s or faster interfaces.
+
+                    Discontinuities in the value of this counter can
+                    occur at re-initialization of the management
+                    system, and at other times as indicated by the
+                    value of ifCounterDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the dot3StatsInternalMacReceiveErrors data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsInternalMacReceiveErrors_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+dot3StatsInternalMacReceiveErrors_get(dot3StatsTable_rowreq_ctx *
+                                      rowreq_ctx,
+                                      u_long *
+                                      dot3StatsInternalMacReceiveErrors_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != dot3StatsInternalMacReceiveErrors_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsInternalMacReceiveErrors_get", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsInternalMacReceiveErrors data.
+     * copy (* dot3StatsInternalMacReceiveErrors_val_ptr ) from rowreq_ctx->data
+     */
+    (*dot3StatsInternalMacReceiveErrors_val_ptr) =
+        rowreq_ctx->data.dot3StatsInternalMacReceiveErrors;
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsInternalMacReceiveErrors_get */
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsEtherChipSet
+ * dot3StatsEtherChipSet is subid 17 of dot3StatsEntry.
+ * Its status is Deprecated, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.17
+ * Description:
+******** THIS OBJECT IS DEPRECATED ********
+
+                    This object contains an OBJECT IDENTIFIER
+                    which identifies the chipset used to
+                    realize the interface. Ethernet-like
+                    interfaces are typically built out of
+                    several different chips. The MIB implementor
+                    is presented with a decision of which chip
+                    to identify via this object. The implementor
+                    should identify the chip which is usually
+                    called the Medium Access Control chip.
+                    If no such chip is easily identifiable,
+                    the implementor should identify the chip
+                    which actually gathers the transmit
+                    and receive statistics and error
+                    indications. This would allow a
+                    manager station to correlate the
+                    statistics and the chip generating
+                    them, giving it the ability to take
+                    into account any known anomalies
+                    in the chip.
+
+                    This object has been deprecated.  Implementation
+                    feedback indicates that it is of limited use for
+                    debugging network problems in the field, and
+                    the administrative overhead involved in
+                    maintaining a registry of chipset OIDs is not
+                    justified.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is OBJECTID (based on perltype OBJECTID)
+ * The net-snmp type is ASN_OBJECT_ID. The C type decl is oid (oid)
+ * This data type requires a length.
+ */
+/**
+ * Extract the current value of the dot3StatsEtherChipSet data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsEtherChipSet_val_ptr_ptr
+ *        Pointer to storage for a oid variable
+ * @param dot3StatsEtherChipSet_val_ptr_len_ptr
+ *        Pointer to a size_t. On entry, it will contain the size (in bytes)
+ *        pointed to by dot3StatsEtherChipSet.
+ *        On exit, this value should contain the data size (in bytes).
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+*
+ * @note If you need more than (*dot3StatsEtherChipSet_val_ptr_len_ptr) bytes of memory,
+ *       allocate it using malloc() and update dot3StatsEtherChipSet_val_ptr_ptr.
+ *       <b>DO NOT</b> free the previous pointer.
+ *       The MFD helper will release the memory you allocate.
+ *
+ * @remark If you call this function yourself, you are responsible
+ *         for checking if the pointer changed, and freeing any
+ *         previously allocated memory. (Not necessary if you pass
+ *         in a pointer to static memory, obviously.)
+ */
+int
+dot3StatsEtherChipSet_get(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                          oid ** dot3StatsEtherChipSet_val_ptr_ptr,
+                          size_t *dot3StatsEtherChipSet_val_ptr_len_ptr)
+{
+   /** we should have a non-NULL pointer and enough storage */
+    netsnmp_assert((NULL != dot3StatsEtherChipSet_val_ptr_ptr)
+                   && (NULL != *dot3StatsEtherChipSet_val_ptr_ptr));
+    netsnmp_assert(NULL != dot3StatsEtherChipSet_val_ptr_len_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsEtherChipSet_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsEtherChipSet data.
+     * copy (* dot3StatsEtherChipSet_val_ptr_ptr ) data and (* dot3StatsEtherChipSet_val_ptr_len_ptr ) from rowreq_ctx->data
+     */
+    /*
+     * make sure there is enough space for dot3StatsEtherChipSet data
+     */
+    if ((NULL == (*dot3StatsEtherChipSet_val_ptr_ptr)) ||
+        ((*dot3StatsEtherChipSet_val_ptr_len_ptr) <
+         (rowreq_ctx->data.dot3StatsEtherChipSet_len *
+          sizeof(rowreq_ctx->data.dot3StatsEtherChipSet[0])))) {
+        /*
+         * allocate space for dot3StatsEtherChipSet data
+         */
+        (*dot3StatsEtherChipSet_val_ptr_ptr) =
+            malloc(rowreq_ctx->data.dot3StatsEtherChipSet_len *
+                   sizeof(rowreq_ctx->data.dot3StatsEtherChipSet[0]));
+        if (NULL == (*dot3StatsEtherChipSet_val_ptr_ptr)) {
+            snmp_log(LOG_ERR, "could not allocate memory\n");
+            return MFD_ERROR;
+        }
+    }
+    (*dot3StatsEtherChipSet_val_ptr_len_ptr) =
+        rowreq_ctx->data.dot3StatsEtherChipSet_len *
+        sizeof(rowreq_ctx->data.dot3StatsEtherChipSet[0]);
+    memcpy((*dot3StatsEtherChipSet_val_ptr_ptr),
+           rowreq_ctx->data.dot3StatsEtherChipSet,
+           rowreq_ctx->data.dot3StatsEtherChipSet_len *
+           sizeof(rowreq_ctx->data.dot3StatsEtherChipSet[0]));
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsEtherChipSet_get */
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsSymbolErrors
+ * dot3StatsSymbolErrors is subid 18 of dot3StatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.18
+ * Description:
+For an interface operating at 100 Mb/s, the
+                    number of times there was an invalid data symbol
+                    when a valid carrier was present.
+
+                    For an interface operating in half-duplex mode
+                    at 1000 Mb/s, the number of times the receiving
+                    media is non-idle (a carrier event) for a period
+                    of time equal to or greater than slotTime, and
+                    during which there was at least one occurrence
+                    of an event that causes the PHY to indicate
+                    'Data reception error' or 'carrier extend error'
+                    on the GMII.
+
+                    For an interface operating in full-duplex mode
+                    at 1000 Mb/s, the number of times the receiving
+                    media is non-idle (a carrier event) for a period
+                    of time equal to or greater than minFrameSize,
+                    and during which there was at least one
+                    occurrence of an event that causes the PHY to
+                    indicate 'Data reception error' on the GMII.
+
+                    For an interface operating at 10 Gb/s, the
+                    number of times the receiving media is non-idle
+                    (a carrier event) for a period of time equal to
+                    or greater than minFrameSize, and during which
+                    there was at least one occurrence of an event
+                    that causes the PHY to indicate 'Receive Error'
+                    on the XGMII.
+
+                    The count represented by an instance of this
+                    object is incremented at most once per carrier
+                    event, even if multiple symbol errors occur
+                    during the carrier event.  This count does
+                    not increment if a collision is present.
+
+                    This counter does not increment when the
+                    interface is operating at 10 Mb/s.
+
+                    For interfaces operating at 10 Gb/s, this
+                    counter can roll over in less than 5 minutes if
+                    it is incrementing at its maximum rate.  Since
+                    that amount of time could be less than a
+
+                    management station's poll cycle time, in order
+                    to avoid a loss of information, a management
+                    station is advised to poll the
+                    dot3HCStatsSymbolErrors object for 10 Gb/s
+                    or faster interfaces.
+
+                    Discontinuities in the value of this counter can
+                    occur at re-initialization of the management
+                    system, and at other times as indicated by the
+                    value of ifCounterDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the dot3StatsSymbolErrors data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsSymbolErrors_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+dot3StatsSymbolErrors_get(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                          u_long * dot3StatsSymbolErrors_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != dot3StatsSymbolErrors_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsSymbolErrors_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsSymbolErrors data.
+     * copy (* dot3StatsSymbolErrors_val_ptr ) from rowreq_ctx->data
+     */
+    (*dot3StatsSymbolErrors_val_ptr) =
+        rowreq_ctx->data.dot3StatsSymbolErrors;
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsSymbolErrors_get */
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsDuplexStatus
+ * dot3StatsDuplexStatus is subid 19 of dot3StatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.19
+ * Description:
+The current mode of operation of the MAC
+                    entity.  'unknown' indicates that the current
+                    duplex mode could not be determined.
+
+                    Management control of the duplex mode is
+                    accomplished through the MAU MIB.  When
+                    an interface does not support autonegotiation,
+                    or when autonegotiation is not enabled, the
+                    duplex mode is controlled using
+                    ifMauDefaultType.  When autonegotiation is
+                    supported and enabled, duplex mode is controlled
+                    using ifMauAutoNegAdvertisedBits.  In either
+                    case, the currently operating duplex mode is
+                    reflected both in this object and in ifMauType.
+
+                    Note that this object provides redundant
+                    information with ifMauType.  Normally, redundant
+                    objects are discouraged.  However, in this
+                    instance, it allows a management application to
+                    determine the duplex status of an interface
+                    without having to know every possible value of
+                    ifMauType.  This was felt to be sufficiently
+                    valuable to justify the redundancy.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  1      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ * Enum range: 3/8. Values:  unknown(1), halfDuplex(2), fullDuplex(3)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/**
+ * Extract the current value of the dot3StatsDuplexStatus data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsDuplexStatus_val_ptr
+ *        Pointer to storage for a long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+dot3StatsDuplexStatus_get(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                          u_long * dot3StatsDuplexStatus_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != dot3StatsDuplexStatus_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsDuplexStatus_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsDuplexStatus data.
+     * copy (* dot3StatsDuplexStatus_val_ptr ) from rowreq_ctx->data
+     */
+    (*dot3StatsDuplexStatus_val_ptr) =
+        rowreq_ctx->data.dot3StatsDuplexStatus;
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsDuplexStatus_get */
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsRateControlAbility
+ * dot3StatsRateControlAbility is subid 20 of dot3StatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.20
+ * Description:
+'true' for interfaces operating at speeds above
+                    1000 Mb/s that support Rate Control through
+                    lowering the average data rate of the MAC
+                    sublayer, with frame granularity, and 'false'
+                    otherwise.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  1      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ * Enum range: 2/8. Values:  true(1), false(2)
+ *
+ * Its syntax is TruthValue (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/**
+ * Extract the current value of the dot3StatsRateControlAbility data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsRateControlAbility_val_ptr
+ *        Pointer to storage for a long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+dot3StatsRateControlAbility_get(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                                u_long *
+                                dot3StatsRateControlAbility_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != dot3StatsRateControlAbility_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsRateControlAbility_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsRateControlAbility data.
+     * copy (* dot3StatsRateControlAbility_val_ptr ) from rowreq_ctx->data
+     */
+    (*dot3StatsRateControlAbility_val_ptr) =
+        rowreq_ctx->data.dot3StatsRateControlAbility;
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsRateControlAbility_get */
+
+/*---------------------------------------------------------------------
+ * EtherLike-MIB::dot3StatsEntry.dot3StatsRateControlStatus
+ * dot3StatsRateControlStatus is subid 21 of dot3StatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.10.7.2.1.21
+ * Description:
+The current Rate Control mode of operation of
+                    the MAC sublayer of this interface.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  1      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ * Enum range: 3/8. Values:  rateControlOff(1), rateControlOn(2), unknown(3)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/**
+ * Extract the current value of the dot3StatsRateControlStatus data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param dot3StatsRateControlStatus_val_ptr
+ *        Pointer to storage for a long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+dot3StatsRateControlStatus_get(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                               u_long * dot3StatsRateControlStatus_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != dot3StatsRateControlStatus_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsRateControlStatus_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the dot3StatsRateControlStatus data.
+     * copy (* dot3StatsRateControlStatus_val_ptr ) from rowreq_ctx->data
+     */
+    (*dot3StatsRateControlStatus_val_ptr) =
+        rowreq_ctx->data.dot3StatsRateControlStatus;
+
+    return MFD_SUCCESS;
+}                               /* dot3StatsRateControlStatus_get */
+
+
+
+/** @} */
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_get.h b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_get.h
new file mode 100644
index 0000000..e543cd3
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_get.h
@@ -0,0 +1,143 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 12088 $ of $
+ *
+ * $Id:$
+ *
+ * @file dot3StatsTable_data_get.h
+ *
+ * @addtogroup get
+ *
+ * Prototypes for get functions
+ *
+ * @{
+ */
+#ifndef DOT3STATSTABLE_DATA_GET_H
+#define DOT3STATSTABLE_DATA_GET_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    /*
+     *********************************************************************
+     * GET function declarations
+     */
+
+    /*
+     *********************************************************************
+     * GET Table declarations
+     */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table dot3StatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+    /*
+     * EtherLike-MIB::dot3StatsTable is subid 2 of dot3.
+     * Its status is Current.
+     * OID: .1.3.6.1.2.1.10.7.2, length: 9
+     */
+    /*
+     * indexes
+     */
+
+    int             dot3StatsAlignmentErrors_get(dot3StatsTable_rowreq_ctx
+                                                 * rowreq_ctx,
+                                                 u_long *
+                                                 dot3StatsAlignmentErrors_val_ptr);
+    int             dot3StatsFCSErrors_get(dot3StatsTable_rowreq_ctx *
+                                           rowreq_ctx,
+                                           u_long *
+                                           dot3StatsFCSErrors_val_ptr);
+    int            
+        dot3StatsSingleCollisionFrames_get(dot3StatsTable_rowreq_ctx *
+                                           rowreq_ctx,
+                                           u_long *
+                                           dot3StatsSingleCollisionFrames_val_ptr);
+    int            
+        dot3StatsMultipleCollisionFrames_get(dot3StatsTable_rowreq_ctx *
+                                             rowreq_ctx,
+                                             u_long *
+                                             dot3StatsMultipleCollisionFrames_val_ptr);
+    int             dot3StatsSQETestErrors_get(dot3StatsTable_rowreq_ctx *
+                                               rowreq_ctx,
+                                               u_long *
+                                               dot3StatsSQETestErrors_val_ptr);
+    int            
+        dot3StatsDeferredTransmissions_get(dot3StatsTable_rowreq_ctx *
+                                           rowreq_ctx,
+                                           u_long *
+                                           dot3StatsDeferredTransmissions_val_ptr);
+    int             dot3StatsLateCollisions_get(dot3StatsTable_rowreq_ctx *
+                                                rowreq_ctx,
+                                                u_long *
+                                                dot3StatsLateCollisions_val_ptr);
+    int            
+        dot3StatsExcessiveCollisions_get(dot3StatsTable_rowreq_ctx *
+                                         rowreq_ctx,
+                                         u_long *
+                                         dot3StatsExcessiveCollisions_val_ptr);
+    int            
+        dot3StatsInternalMacTransmitErrors_get(dot3StatsTable_rowreq_ctx *
+                                               rowreq_ctx,
+                                               u_long *
+                                               dot3StatsInternalMacTransmitErrors_val_ptr);
+    int            
+        dot3StatsCarrierSenseErrors_get(dot3StatsTable_rowreq_ctx *
+                                        rowreq_ctx,
+                                        u_long *
+                                        dot3StatsCarrierSenseErrors_val_ptr);
+    int             dot3StatsFrameTooLongs_get(dot3StatsTable_rowreq_ctx *
+                                               rowreq_ctx,
+                                               u_long *
+                                               dot3StatsFrameTooLongs_val_ptr);
+    int            
+        dot3StatsInternalMacReceiveErrors_get(dot3StatsTable_rowreq_ctx *
+                                              rowreq_ctx,
+                                              u_long *
+                                              dot3StatsInternalMacReceiveErrors_val_ptr);
+    int             dot3StatsEtherChipSet_get(dot3StatsTable_rowreq_ctx *
+                                              rowreq_ctx,
+                                              oid **
+                                              dot3StatsEtherChipSet_val_ptr_ptr,
+                                              size_t
+                                              *dot3StatsEtherChipSet_val_ptr_len_ptr);
+    int             dot3StatsSymbolErrors_get(dot3StatsTable_rowreq_ctx *
+                                              rowreq_ctx,
+                                              u_long *
+                                              dot3StatsSymbolErrors_val_ptr);
+    int             dot3StatsDuplexStatus_get(dot3StatsTable_rowreq_ctx *
+                                              rowreq_ctx,
+                                              u_long *
+                                              dot3StatsDuplexStatus_val_ptr);
+    int            
+        dot3StatsRateControlAbility_get(dot3StatsTable_rowreq_ctx *
+                                        rowreq_ctx,
+                                        u_long *
+                                        dot3StatsRateControlAbility_val_ptr);
+    int            
+        dot3StatsRateControlStatus_get(dot3StatsTable_rowreq_ctx *
+                                       rowreq_ctx,
+                                       u_long *
+                                       dot3StatsRateControlStatus_val_ptr);
+
+
+    int            
+        dot3StatsTable_indexes_set_tbl_idx(dot3StatsTable_mib_index *
+                                           tbl_idx,
+                                           long dot3StatsIndex_val);
+    int             dot3StatsTable_indexes_set(dot3StatsTable_rowreq_ctx *
+                                               rowreq_ctx,
+                                               long dot3StatsIndex_val);
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* DOT3STATSTABLE_DATA_GET_H */
+/** @} */
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_set.c b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_set.c
new file mode 100644
index 0000000..44c2da2
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_set.c
@@ -0,0 +1,28 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 12077 $ of $
+ *
+ * $Id:$
+ *
+ */
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "dot3StatsTable.h"
+
+
+/** @defgroup data_set data_set: Routines to set data
+ *
+ * These routines are used to set the value for individual objects. The
+ * row context is passed, along with the new value.
+ * 
+ * @{
+ */
+/** @} */
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_set.h b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_set.h
new file mode 100644
index 0000000..6a03356
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_data_set.h
@@ -0,0 +1,28 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 12077 $ of $ 
+ *
+ * $Id:$
+ */
+#ifndef DOT3STATSTABLE_DATA_SET_H
+#define DOT3STATSTABLE_DATA_SET_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    /*
+     *********************************************************************
+     * SET function declarations
+     */
+
+    /*
+     *********************************************************************
+     * SET Table declarations
+     */
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* DOT3STATSTABLE_DATA_SET_H */
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_enums.h b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_enums.h
new file mode 100644
index 0000000..88a72e4
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_enums.h
@@ -0,0 +1,89 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : generic-table-enums.m2c 12526 2005-07-15 22:41:16Z rstory $
+ *
+ * $Id:$
+ */
+#ifndef DOT3STATSTABLE_ENUMS_H
+#define DOT3STATSTABLE_ENUMS_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    /*
+     * NOTES on enums
+     * ==============
+     *
+     * Value Mapping
+     * -------------
+     * If the values for your data type don't exactly match the
+     * possible values defined by the mib, you should map them
+     * below. For example, a boolean flag (1/0) is usually represented
+     * as a TruthValue in a MIB, which maps to the values (1/2).
+     *
+     */
+/*************************************************************************
+ *************************************************************************
+ *
+ * enum definitions for table dot3StatsTable
+ *
+ *************************************************************************
+ *************************************************************************/
+
+/*************************************************************
+ * constants for enums for the MIB node
+ * dot3StatsDuplexStatus (INTEGER / ASN_INTEGER)
+ *
+ * since a Textual Convention may be referenced more than once in a
+ * MIB, protect againt redefinitions of the enum values.
+ */
+#ifndef DOT3STATSDUPLEXSTATUS_ENUMS
+#define DOT3STATSDUPLEXSTATUS_ENUMS
+
+#define DOT3STATSDUPLEXSTATUS_UNKNOWN  1
+#define DOT3STATSDUPLEXSTATUS_HALFDUPLEX  2
+#define DOT3STATSDUPLEXSTATUS_FULLDUPLEX  3
+
+#endif                          /* DOT3STATSDUPLEXSTATUS_ENUMS */
+
+
+/*************************************************************
+ * constants for enums for the MIB node
+ * dot3StatsRateControlAbility (TruthValue / ASN_INTEGER)
+ *
+ * since a Textual Convention may be referenced more than once in a
+ * MIB, protect againt redefinitions of the enum values.
+ */
+#ifndef TRUTHVALUE_ENUMS
+#define TRUTHVALUE_ENUMS
+
+#define TRUTHVALUE_TRUE  1
+#define TRUTHVALUE_FALSE  2
+
+#endif                          /* TRUTHVALUE_ENUMS */
+
+
+/*************************************************************
+ * constants for enums for the MIB node
+ * dot3StatsRateControlStatus (INTEGER / ASN_INTEGER)
+ *
+ * since a Textual Convention may be referenced more than once in a
+ * MIB, protect againt redefinitions of the enum values.
+ */
+#ifndef DOT3STATSRATECONTROLSTATUS_ENUMS
+#define DOT3STATSRATECONTROLSTATUS_ENUMS
+
+#define DOT3STATSRATECONTROLSTATUS_RATECONTROLOFF  1
+#define DOT3STATSRATECONTROLSTATUS_RATECONTROLON  2
+#define DOT3STATSRATECONTROLSTATUS_UNKNOWN  3
+
+#endif                          /* DOT3STATSRATECONTROLSTATUS_ENUMS */
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* DOT3STATSTABLE_ENUMS_H */
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c
new file mode 100644
index 0000000..e0741f3
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.c
@@ -0,0 +1,1187 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 15899 $ of $ 
+ *
+ * $Id:$
+ */
+/*
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ * ***                                                               ***
+ * ***  NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE  ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THIS FILE DOES NOT CONTAIN ANY USER EDITABLE CODE.      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THE GENERATED CODE IS INTERNAL IMPLEMENTATION, AND      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***    IS SUBJECT TO CHANGE WITHOUT WARNING IN FUTURE RELEASES.   ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ */
+
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "dot3StatsTable.h"
+
+
+#include <net-snmp/agent/table_container.h>
+#include <net-snmp/library/container.h>
+
+#include "dot3StatsTable_interface.h"
+
+#include <ctype.h>
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table dot3StatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * EtherLike-MIB::dot3StatsTable is subid 2 of dot3.
+ * Its status is Current.
+ * OID: .1.3.6.1.2.1.10.7.2, length: 9
+ */
+typedef struct dot3StatsTable_interface_ctx_s {
+
+    netsnmp_container *container;
+    netsnmp_cache  *cache;
+
+    dot3StatsTable_registration *user_ctx;
+
+    netsnmp_table_registration_info tbl_info;
+
+    netsnmp_baby_steps_access_methods access_multiplexer;
+
+} dot3StatsTable_interface_ctx;
+
+static dot3StatsTable_interface_ctx dot3StatsTable_if_ctx;
+
+static void     _dot3StatsTable_container_init(dot3StatsTable_interface_ctx
+                                               * if_ctx);
+static void    
+_dot3StatsTable_container_shutdown(dot3StatsTable_interface_ctx * if_ctx);
+
+
+netsnmp_container *
+dot3StatsTable_container_get(void)
+{
+    return dot3StatsTable_if_ctx.container;
+}
+
+dot3StatsTable_registration *
+dot3StatsTable_registration_get(void)
+{
+    return dot3StatsTable_if_ctx.user_ctx;
+}
+
+dot3StatsTable_registration *
+dot3StatsTable_registration_set(dot3StatsTable_registration * newreg)
+{
+    dot3StatsTable_registration *old = dot3StatsTable_if_ctx.user_ctx;
+    dot3StatsTable_if_ctx.user_ctx = newreg;
+    return old;
+}
+
+int
+dot3StatsTable_container_size(void)
+{
+    return CONTAINER_SIZE(dot3StatsTable_if_ctx.container);
+}
+
+/*
+ * mfd multiplexer modes
+ */
+static Netsnmp_Node_Handler _mfd_dot3StatsTable_pre_request;
+static Netsnmp_Node_Handler _mfd_dot3StatsTable_post_request;
+static Netsnmp_Node_Handler _mfd_dot3StatsTable_object_lookup;
+static Netsnmp_Node_Handler _mfd_dot3StatsTable_get_values;
+/**
+ * @internal
+ * Initialize the table dot3StatsTable 
+ *    (Define its contents and how it's structured)
+ */
+void
+_dot3StatsTable_initialize_interface(dot3StatsTable_registration * reg_ptr,
+                                     u_long flags)
+{
+    netsnmp_baby_steps_access_methods *access_multiplexer =
+        &dot3StatsTable_if_ctx.access_multiplexer;
+    netsnmp_table_registration_info *tbl_info =
+        &dot3StatsTable_if_ctx.tbl_info;
+    netsnmp_handler_registration *reginfo;
+    netsnmp_mib_handler *handler;
+    int             mfd_modes = 0;
+
+    DEBUGMSGTL(("internal:dot3StatsTable:_dot3StatsTable_initialize_interface", "called\n"));
+
+
+    /*************************************************
+     *
+     * save interface context for dot3StatsTable
+     */
+    /*
+     * Setting up the table's definition
+     */
+    netsnmp_table_helper_add_indexes(tbl_info, ASN_INTEGER,
+                                               /** index: dot3StatsIndex */
+                                     0);
+
+    /*
+     * Define the minimum and maximum accessible columns.  This
+     * optimizes retrieval. 
+     */
+    tbl_info->min_column = DOT3STATSTABLE_MIN_COL;
+    tbl_info->max_column = DOT3STATSTABLE_MAX_COL;
+
+    /*
+     * save users context
+     */
+    dot3StatsTable_if_ctx.user_ctx = reg_ptr;
+
+    /*
+     * call data access initialization code
+     */
+    dot3StatsTable_init_data(reg_ptr);
+
+    /*
+     * set up the container
+     */
+    _dot3StatsTable_container_init(&dot3StatsTable_if_ctx);
+    if (NULL == dot3StatsTable_if_ctx.container) {
+        snmp_log(LOG_ERR,
+                 "could not initialize container for dot3StatsTable\n");
+        return;
+    }
+
+    /*
+     * access_multiplexer: REQUIRED wrapper for get request handling
+     */
+    access_multiplexer->object_lookup = _mfd_dot3StatsTable_object_lookup;
+    access_multiplexer->get_values = _mfd_dot3StatsTable_get_values;
+
+    /*
+     * no wrappers yet
+     */
+    access_multiplexer->pre_request = _mfd_dot3StatsTable_pre_request;
+    access_multiplexer->post_request = _mfd_dot3StatsTable_post_request;
+
+
+    /*************************************************
+     *
+     * Create a registration, save our reg data, register table.
+     */
+    DEBUGMSGTL(("dot3StatsTable:init_dot3StatsTable",
+                "Registering dot3StatsTable as a mibs-for-dummies table.\n"));
+    handler =
+        netsnmp_baby_steps_access_multiplexer_get(access_multiplexer);
+    reginfo =
+        netsnmp_handler_registration_create("dot3StatsTable", handler,
+                                            dot3StatsTable_oid,
+                                            dot3StatsTable_oid_size,
+                                            HANDLER_CAN_BABY_STEP |
+                                            HANDLER_CAN_RONLY);
+    if (NULL == reginfo) {
+        snmp_log(LOG_ERR, "error registering table dot3StatsTable\n");
+        return;
+    }
+    reginfo->my_reg_void = &dot3StatsTable_if_ctx;
+
+    /*************************************************
+     *
+     * set up baby steps handler, create it and inject it
+     */
+    if (access_multiplexer->object_lookup)
+        mfd_modes |= BABY_STEP_OBJECT_LOOKUP;
+    if (access_multiplexer->set_values)
+        mfd_modes |= BABY_STEP_SET_VALUES;
+    if (access_multiplexer->irreversible_commit)
+        mfd_modes |= BABY_STEP_IRREVERSIBLE_COMMIT;
+    if (access_multiplexer->object_syntax_checks)
+        mfd_modes |= BABY_STEP_CHECK_OBJECT;
+
+    if (access_multiplexer->pre_request)
+        mfd_modes |= BABY_STEP_PRE_REQUEST;
+    if (access_multiplexer->post_request)
+        mfd_modes |= BABY_STEP_POST_REQUEST;
+
+    if (access_multiplexer->undo_setup)
+        mfd_modes |= BABY_STEP_UNDO_SETUP;
+    if (access_multiplexer->undo_cleanup)
+        mfd_modes |= BABY_STEP_UNDO_CLEANUP;
+    if (access_multiplexer->undo_sets)
+        mfd_modes |= BABY_STEP_UNDO_SETS;
+
+    if (access_multiplexer->row_creation)
+        mfd_modes |= BABY_STEP_ROW_CREATE;
+    if (access_multiplexer->consistency_checks)
+        mfd_modes |= BABY_STEP_CHECK_CONSISTENCY;
+    if (access_multiplexer->commit)
+        mfd_modes |= BABY_STEP_COMMIT;
+    if (access_multiplexer->undo_commit)
+        mfd_modes |= BABY_STEP_UNDO_COMMIT;
+
+    handler = netsnmp_baby_steps_handler_get(mfd_modes);
+    netsnmp_inject_handler(reginfo, handler);
+
+    /*************************************************
+     *
+     * inject row_merge helper with prefix rootoid_len + 2 (entry.col)
+     */
+    handler = netsnmp_get_row_merge_handler(reginfo->rootoid_len + 2);
+    netsnmp_inject_handler(reginfo, handler);
+
+    /*************************************************
+     *
+     * inject container_table helper
+     */
+    handler =
+        netsnmp_container_table_handler_get(tbl_info,
+                                            dot3StatsTable_if_ctx.
+                                            container,
+                                            TABLE_CONTAINER_KEY_NETSNMP_INDEX);
+    netsnmp_inject_handler(reginfo, handler);
+
+    /*************************************************
+     *
+     * inject cache helper
+     */
+    if (NULL != dot3StatsTable_if_ctx.cache) {
+        handler = netsnmp_cache_handler_get(dot3StatsTable_if_ctx.cache);
+        netsnmp_inject_handler(reginfo, handler);
+    }
+
+    /*
+     * register table
+     */
+    netsnmp_register_table(reginfo, tbl_info);
+
+}                               /* _dot3StatsTable_initialize_interface */
+
+/**
+ * @internal
+ * Shutdown the table dot3StatsTable
+ */
+void
+_dot3StatsTable_shutdown_interface(dot3StatsTable_registration * reg_ptr)
+{
+    /*
+     * shutdown the container
+     */
+    _dot3StatsTable_container_shutdown(&dot3StatsTable_if_ctx);
+}
+
+void
+dot3StatsTable_valid_columns_set(netsnmp_column_info *vc)
+{
+    dot3StatsTable_if_ctx.tbl_info.valid_columns = vc;
+}                               /* dot3StatsTable_valid_columns_set */
+
+/**
+ * @internal
+ * convert the index component stored in the context to an oid
+ */
+int
+dot3StatsTable_index_to_oid(netsnmp_index * oid_idx,
+                            dot3StatsTable_mib_index * mib_idx)
+{
+    int             err = SNMP_ERR_NOERROR;
+
+    /*
+     * temp storage for parsing indexes
+     */
+    /*
+     * dot3StatsIndex(1)/InterfaceIndex/ASN_INTEGER/long(long)//l/A/w/e/R/d/H
+     */
+    netsnmp_variable_list var_dot3StatsIndex;
+
+    /*
+     * set up varbinds
+     */
+    memset(&var_dot3StatsIndex, 0x00, sizeof(var_dot3StatsIndex));
+    var_dot3StatsIndex.type = ASN_INTEGER;
+
+    /*
+     * chain temp index varbinds together
+     */
+    var_dot3StatsIndex.next_variable = NULL;
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsTable_index_to_oid",
+                "called\n"));
+
+    /*
+     * dot3StatsIndex(1)/InterfaceIndex/ASN_INTEGER/long(long)//l/A/w/e/R/d/H 
+     */
+    snmp_set_var_value(&var_dot3StatsIndex,
+                       (u_char *) & mib_idx->dot3StatsIndex,
+                       sizeof(mib_idx->dot3StatsIndex));
+
+
+    err = build_oid_noalloc(oid_idx->oids, oid_idx->len, &oid_idx->len,
+                            NULL, 0, &var_dot3StatsIndex);
+    if (err)
+        snmp_log(LOG_ERR, "error %d converting index to oid\n", err);
+
+    /*
+     * parsing may have allocated memory. free it.
+     */
+    snmp_reset_var_buffers(&var_dot3StatsIndex);
+
+    return err;
+}                               /* dot3StatsTable_index_to_oid */
+
+/**
+ * extract dot3StatsTable indexes from a netsnmp_index
+ *
+ * @retval SNMP_ERR_NOERROR  : no error
+ * @retval SNMP_ERR_GENERR   : error
+ */
+int
+dot3StatsTable_index_from_oid(netsnmp_index * oid_idx,
+                              dot3StatsTable_mib_index * mib_idx)
+{
+    int             err = SNMP_ERR_NOERROR;
+
+    /*
+     * temp storage for parsing indexes
+     */
+    /*
+     * dot3StatsIndex(1)/InterfaceIndex/ASN_INTEGER/long(long)//l/A/w/e/R/d/H
+     */
+    netsnmp_variable_list var_dot3StatsIndex;
+
+    /*
+     * set up varbinds
+     */
+    memset(&var_dot3StatsIndex, 0x00, sizeof(var_dot3StatsIndex));
+    var_dot3StatsIndex.type = ASN_INTEGER;
+
+    /*
+     * chain temp index varbinds together
+     */
+    var_dot3StatsIndex.next_variable = NULL;
+
+
+    DEBUGMSGTL(("verbose:dot3StatsTable:dot3StatsTable_index_from_oid",
+                "called\n"));
+
+    /*
+     * parse the oid into the individual index components
+     */
+    err = parse_oid_indexes(oid_idx->oids, oid_idx->len,
+                            &var_dot3StatsIndex);
+    if (err == SNMP_ERR_NOERROR) {
+        /*
+         * copy out values
+         */
+        mib_idx->dot3StatsIndex =
+            *((long *) var_dot3StatsIndex.val.string);
+
+
+    }
+
+    /*
+     * parsing may have allocated memory. free it.
+     */
+    snmp_reset_var_buffers(&var_dot3StatsIndex);
+
+    return err;
+}                               /* dot3StatsTable_index_from_oid */
+
+
+/*
+ *********************************************************************
+ * @internal
+ * allocate resources for a dot3StatsTable_rowreq_ctx
+ */
+dot3StatsTable_rowreq_ctx *
+dot3StatsTable_allocate_rowreq_ctx(void *user_init_ctx)
+{
+    dot3StatsTable_rowreq_ctx *rowreq_ctx =
+        SNMP_MALLOC_TYPEDEF(dot3StatsTable_rowreq_ctx);
+
+    DEBUGMSGTL(("internal:dot3StatsTable:dot3StatsTable_allocate_rowreq_ctx", "called\n"));
+
+    if (NULL == rowreq_ctx) {
+        snmp_log(LOG_ERR, "Couldn't allocate memory for a "
+                 "dot3StatsTable_rowreq_ctx.\n");
+        return NULL;
+    }
+
+    rowreq_ctx->oid_idx.oids = rowreq_ctx->oid_tmp;
+
+    rowreq_ctx->dot3StatsTable_data_list = NULL;
+
+    /*
+     * if we allocated data, call init routine
+     */
+    if (!(rowreq_ctx->rowreq_flags & MFD_ROW_DATA_FROM_USER)) {
+        if (SNMPERR_SUCCESS !=
+            dot3StatsTable_rowreq_ctx_init(rowreq_ctx, user_init_ctx)) {
+            dot3StatsTable_release_rowreq_ctx(rowreq_ctx);
+            rowreq_ctx = NULL;
+        }
+    }
+
+    return rowreq_ctx;
+}                               /* dot3StatsTable_allocate_rowreq_ctx */
+
+/*
+ * @internal
+ * release resources for a dot3StatsTable_rowreq_ctx
+ */
+void
+dot3StatsTable_release_rowreq_ctx(dot3StatsTable_rowreq_ctx * rowreq_ctx)
+{
+    DEBUGMSGTL(("internal:dot3StatsTable:dot3StatsTable_release_rowreq_ctx", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    dot3StatsTable_rowreq_ctx_cleanup(rowreq_ctx);
+
+    /*
+     * free index oid pointer
+     */
+    if (rowreq_ctx->oid_idx.oids != rowreq_ctx->oid_tmp)
+        free(rowreq_ctx->oid_idx.oids);
+
+    SNMP_FREE(rowreq_ctx);
+}                               /* dot3StatsTable_release_rowreq_ctx */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_dot3StatsTable_pre_request(netsnmp_mib_handler *handler,
+                                netsnmp_handler_registration *reginfo,
+                                netsnmp_agent_request_info *agtreq_info,
+                                netsnmp_request_info *requests)
+{
+    int             rc;
+
+    DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_pre_request",
+                "called\n"));
+
+    if (1 != netsnmp_row_merge_status_first(reginfo, agtreq_info)) {
+        DEBUGMSGTL(("internal:dot3StatsTable",
+                    "skipping additional pre_request\n"));
+        return SNMP_ERR_NOERROR;
+    }
+
+    rc = dot3StatsTable_pre_request(dot3StatsTable_if_ctx.user_ctx);
+    if (MFD_SUCCESS != rc) {
+        /*
+         * nothing we can do about it but log it
+         */
+        DEBUGMSGTL(("dot3StatsTable", "error %d from "
+                    "dot3StatsTable_pre_request\n", rc));
+        netsnmp_request_set_error_all(requests, SNMP_VALIDATE_ERR(rc));
+    }
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_dot3StatsTable_pre_request */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_dot3StatsTable_post_request(netsnmp_mib_handler *handler,
+                                 netsnmp_handler_registration *reginfo,
+                                 netsnmp_agent_request_info *agtreq_info,
+                                 netsnmp_request_info *requests)
+{
+    dot3StatsTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+    int             rc, packet_rc;
+
+    DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_post_request",
+                "called\n"));
+
+    /*
+     * release row context, if deleted
+     */
+    if (rowreq_ctx && (rowreq_ctx->rowreq_flags & MFD_ROW_DELETED))
+        dot3StatsTable_release_rowreq_ctx(rowreq_ctx);
+
+    /*
+     * wait for last call before calling user
+     */
+    if (1 != netsnmp_row_merge_status_last(reginfo, agtreq_info)) {
+        DEBUGMSGTL(("internal:dot3StatsTable",
+                    "waiting for last post_request\n"));
+        return SNMP_ERR_NOERROR;
+    }
+
+    packet_rc = netsnmp_check_all_requests_error(agtreq_info->asp, 0);
+    rc = dot3StatsTable_post_request(dot3StatsTable_if_ctx.user_ctx,
+                                     packet_rc);
+    if (MFD_SUCCESS != rc) {
+        /*
+         * nothing we can do about it but log it
+         */
+        DEBUGMSGTL(("dot3StatsTable", "error %d from "
+                    "dot3StatsTable_post_request\n", rc));
+    }
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_dot3StatsTable_post_request */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_dot3StatsTable_object_lookup(netsnmp_mib_handler *handler,
+                                  netsnmp_handler_registration *reginfo,
+                                  netsnmp_agent_request_info *agtreq_info,
+                                  netsnmp_request_info *requests)
+{
+    int             rc = SNMP_ERR_NOERROR;
+    dot3StatsTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+
+    DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_object_lookup", "called\n"));
+
+    /*
+     * get our context from mfd
+     * dot3StatsTable_interface_ctx *if_ctx =
+     *             (dot3StatsTable_interface_ctx *)reginfo->my_reg_void;
+     */
+
+    if (NULL == rowreq_ctx) {
+        rc = SNMP_ERR_NOCREATION;
+    }
+
+    if (MFD_SUCCESS != rc)
+        netsnmp_request_set_error_all(requests, rc);
+    else
+        dot3StatsTable_row_prep(rowreq_ctx);
+
+    return SNMP_VALIDATE_ERR(rc);
+}                               /* _mfd_dot3StatsTable_object_lookup */
+
+/***********************************************************************
+ *
+ * GET processing
+ *
+ ***********************************************************************/
+/*
+ * @internal
+ * Retrieve the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_dot3StatsTable_get_column(dot3StatsTable_rowreq_ctx * rowreq_ctx,
+                           netsnmp_variable_list * var, int column)
+{
+    int             rc = SNMPERR_SUCCESS;
+
+    DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column",
+                "called for %d\n", column));
+
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    switch (column) {
+
+        /*
+         * (INDEX) dot3StatsIndex(1)/InterfaceIndex/ASN_INTEGER/long(long)//l/A/w/e/R/d/H 
+         */
+    case COLUMN_DOT3STATSINDEX:
+        var->type = ASN_INTEGER;
+        var->val_len = sizeof(long);
+        (*var->val.integer) = rowreq_ctx->tbl_idx.dot3StatsIndex;
+        break;
+
+        /*
+         * dot3StatsAlignmentErrors(2)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_DOT3STATSALIGNMENTERRORS:
+        if (!
+            (COLUMN_DOT3STATSALIGNMENTERRORS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsAlignmentErrors) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = dot3StatsAlignmentErrors_get(rowreq_ctx,
+                                          (u_long *) var->val.string);
+        break;
+
+        /*
+         * dot3StatsFCSErrors(3)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_DOT3STATSFCSERRORS:
+        if (!
+            (COLUMN_DOT3STATSFCSERRORS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsFCSErrors) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = dot3StatsFCSErrors_get(rowreq_ctx,
+                                    (u_long *) var->val.string);
+        break;
+
+        /*
+         * dot3StatsSingleCollisionFrames(4)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_DOT3STATSSINGLECOLLISIONFRAMES:
+        if (!
+            (COLUMN_DOT3STATSSINGLECOLLISIONFRAMES_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsSingleCollisionFrames) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = dot3StatsSingleCollisionFrames_get(rowreq_ctx,
+                                                (u_long *) var->val.
+                                                string);
+        break;
+
+        /*
+         * dot3StatsMultipleCollisionFrames(5)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_DOT3STATSMULTIPLECOLLISIONFRAMES:
+        if (!
+            (COLUMN_DOT3STATSMULTIPLECOLLISIONFRAMES_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsMultipleCollisionFrames) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = dot3StatsMultipleCollisionFrames_get(rowreq_ctx,
+                                                  (u_long *) var->val.
+                                                  string);
+        break;
+
+        /*
+         * dot3StatsSQETestErrors(6)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_DOT3STATSSQETESTERRORS:
+        if (!
+            (COLUMN_DOT3STATSSQETESTERRORS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsSQETestErrors) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = dot3StatsSQETestErrors_get(rowreq_ctx,
+                                        (u_long *) var->val.string);
+        break;
+
+        /*
+         * dot3StatsDeferredTransmissions(7)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_DOT3STATSDEFERREDTRANSMISSIONS:
+        if (!
+            (COLUMN_DOT3STATSDEFERREDTRANSMISSIONS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsDeferredTransmissions) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = dot3StatsDeferredTransmissions_get(rowreq_ctx,
+                                                (u_long *) var->val.
+                                                string);
+        break;
+
+        /*
+         * dot3StatsLateCollisions(8)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_DOT3STATSLATECOLLISIONS:
+        if (!
+            (COLUMN_DOT3STATSLATECOLLISIONS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsLateCollisions) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = dot3StatsLateCollisions_get(rowreq_ctx,
+                                         (u_long *) var->val.string);
+        break;
+
+        /*
+         * dot3StatsExcessiveCollisions(9)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_DOT3STATSEXCESSIVECOLLISIONS:
+        if (!
+            (COLUMN_DOT3STATSEXCESSIVECOLLISIONS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsExcessiveCollisions) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = dot3StatsExcessiveCollisions_get(rowreq_ctx,
+                                              (u_long *) var->val.string);
+        break;
+
+        /*
+         * dot3StatsInternalMacTransmitErrors(10)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_DOT3STATSINTERNALMACTRANSMITERRORS:
+        if (!
+            (COLUMN_DOT3STATSINTERNALMACTRANSMITERRORS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsInternalMacTransmitErrors) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = dot3StatsInternalMacTransmitErrors_get(rowreq_ctx,
+                                                    (u_long *) var->val.
+                                                    string);
+        break;
+
+        /*
+         * dot3StatsCarrierSenseErrors(11)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_DOT3STATSCARRIERSENSEERRORS:
+        if (!
+            (COLUMN_DOT3STATSCARRIERSENSEERRORS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsCarrierSenseErrors) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = dot3StatsCarrierSenseErrors_get(rowreq_ctx,
+                                             (u_long *) var->val.string);
+        break;
+
+        /*
+         * dot3StatsFrameTooLongs(13)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_DOT3STATSFRAMETOOLONGS:
+        if (!
+            (COLUMN_DOT3STATSFRAMETOOLONGS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsFrameTooLongs) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = dot3StatsFrameTooLongs_get(rowreq_ctx,
+                                        (u_long *) var->val.string);
+        break;
+
+        /*
+         * dot3StatsInternalMacReceiveErrors(16)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_DOT3STATSINTERNALMACRECEIVEERRORS:
+        if (!
+            (COLUMN_DOT3STATSINTERNALMACRECEIVEERRORS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsInternalMacReceiveErrors) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = dot3StatsInternalMacReceiveErrors_get(rowreq_ctx,
+                                                   (u_long *) var->val.
+                                                   string);
+        break;
+
+        /*
+         * dot3StatsEtherChipSet(17)/OBJECTID/ASN_OBJECT_ID/oid(oid)//L/A/w/e/r/d/h 
+         */
+    case COLUMN_DOT3STATSETHERCHIPSET:
+        if (!
+            (COLUMN_DOT3STATSETHERCHIPSET_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsEtherChipSet) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->type = ASN_OBJECT_ID;
+        rc = dot3StatsEtherChipSet_get(rowreq_ctx,
+                                       (oid **) & var->val.string,
+                                       &var->val_len);
+        break;
+
+        /*
+         * dot3StatsSymbolErrors(18)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_DOT3STATSSYMBOLERRORS:
+        if (!
+            (COLUMN_DOT3STATSSYMBOLERRORS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsSymbolErrors) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = dot3StatsSymbolErrors_get(rowreq_ctx,
+                                       (u_long *) var->val.string);
+        break;
+
+        /*
+         * dot3StatsDuplexStatus(19)/INTEGER/ASN_INTEGER/long(u_long)//l/A/w/E/r/d/h 
+         */
+    case COLUMN_DOT3STATSDUPLEXSTATUS:
+        if (!
+            (COLUMN_DOT3STATSDUPLEXSTATUS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsDuplexStatus) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_INTEGER;
+        rc = dot3StatsDuplexStatus_get(rowreq_ctx,
+                                       (u_long *) var->val.string);
+        break;
+
+        /*
+         * dot3StatsRateControlAbility(20)/TruthValue/ASN_INTEGER/long(u_long)//l/A/w/E/r/d/h 
+         */
+    case COLUMN_DOT3STATSRATECONTROLABILITY:
+        if (!
+            (COLUMN_DOT3STATSRATECONTROLABILITY_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsRateControlAbility) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_INTEGER;
+        rc = dot3StatsRateControlAbility_get(rowreq_ctx,
+                                             (u_long *) var->val.string);
+        break;
+
+        /*
+         * dot3StatsRateControlStatus(21)/INTEGER/ASN_INTEGER/long(u_long)//l/A/w/E/r/d/h 
+         */
+    case COLUMN_DOT3STATSRATECONTROLSTATUS:
+        if (!
+            (COLUMN_DOT3STATSRATECONTROLSTATUS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "column %d (dot3StatsRateControlStatus) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_INTEGER;
+        rc = dot3StatsRateControlStatus_get(rowreq_ctx,
+                                            (u_long *) var->val.string);
+        break;
+
+    default:
+        if (DOT3STATSTABLE_MIN_COL <= column
+            && column <= DOT3STATSTABLE_MAX_COL) {
+            DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_column", "assume column %d is reserved\n", column));
+            rc = MFD_SKIP;
+        } else {
+            snmp_log(LOG_ERR,
+                     "unknown column %d in _dot3StatsTable_get_column\n",
+                     column);
+        }
+        break;
+    }
+
+    return rc;
+}                               /* _dot3StatsTable_get_column */
+
+int
+_mfd_dot3StatsTable_get_values(netsnmp_mib_handler *handler,
+                               netsnmp_handler_registration *reginfo,
+                               netsnmp_agent_request_info *agtreq_info,
+                               netsnmp_request_info *requests)
+{
+    dot3StatsTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+    netsnmp_table_request_info *tri;
+    u_char         *old_string;
+    void            (*dataFreeHook) (void *);
+    int             rc;
+
+    DEBUGMSGTL(("internal:dot3StatsTable:_mfd_dot3StatsTable_get_values",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    DEBUGMSGTL(("9:dot3StatsTable:_mfd_dot3StatsTable_get_values",
+                "exists %u\n", rowreq_ctx->column_exists_flags));
+
+    for (; requests; requests = requests->next) {
+        /*
+         * save old pointer, so we can free it if replaced
+         */
+        old_string = requests->requestvb->val.string;
+        dataFreeHook = requests->requestvb->dataFreeHook;
+        if (NULL == requests->requestvb->val.string) {
+            requests->requestvb->val.string = requests->requestvb->buf;
+            requests->requestvb->val_len =
+                sizeof(requests->requestvb->buf);
+        } else if (requests->requestvb->buf ==
+                   requests->requestvb->val.string) {
+            if (requests->requestvb->val_len !=
+                sizeof(requests->requestvb->buf))
+                requests->requestvb->val_len =
+                    sizeof(requests->requestvb->buf);
+        }
+
+        /*
+         * get column data
+         */
+        tri = netsnmp_extract_table_info(requests);
+        if (NULL == tri)
+            continue;
+
+        rc = _dot3StatsTable_get_column(rowreq_ctx, requests->requestvb,
+                                        tri->colnum);
+        if (rc) {
+            if (MFD_SKIP == rc) {
+                requests->requestvb->type = SNMP_NOSUCHINSTANCE;
+                rc = SNMP_ERR_NOERROR;
+            }
+        } else if (NULL == requests->requestvb->val.string) {
+            snmp_log(LOG_ERR, "NULL varbind data pointer!\n");
+            rc = SNMP_ERR_GENERR;
+        }
+        if (rc)
+            netsnmp_request_set_error(requests, SNMP_VALIDATE_ERR(rc));
+
+        /*
+         * if the buffer wasn't used previously for the old data (i.e. it
+         * was allcoated memory)  and the get routine replaced the pointer,
+         * we need to free the previous pointer.
+         */
+        if (old_string && (old_string != requests->requestvb->buf) &&
+            (requests->requestvb->val.string != old_string)) {
+            if (dataFreeHook)
+                (*dataFreeHook) (old_string);
+            else
+                free(old_string);
+        }
+    }                           /* for results */
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_dot3StatsTable_get_values */
+
+
+/***********************************************************************
+ *
+ * SET processing
+ *
+ ***********************************************************************/
+
+/*
+ * SET PROCESSING NOT APPLICABLE (per MIB or user setting)
+ */
+/***********************************************************************
+ *
+ * DATA ACCESS
+ *
+ ***********************************************************************/
+static void     _container_free(netsnmp_container * container);
+
+/**
+ * @internal
+ */
+static int
+_cache_load(netsnmp_cache * cache, void *vmagic)
+{
+    DEBUGMSGTL(("internal:dot3StatsTable:_cache_load", "called\n"));
+
+    if ((NULL == cache) || (NULL == cache->magic)) {
+        snmp_log(LOG_ERR, "invalid cache for dot3StatsTable_cache_load\n");
+        return -1;
+    }
+
+    /** should only be called for an invalid or expired cache */
+    netsnmp_assert((0 == cache->valid) || (1 == cache->expired));
+
+    /*
+     * call user code
+     */
+    return dot3StatsTable_container_load((netsnmp_container *) cache->
+                                         magic);
+}                               /* _cache_load */
+
+/**
+ * @internal
+ */
+static void
+_cache_free(netsnmp_cache * cache, void *magic)
+{
+    netsnmp_container *container;
+
+    DEBUGMSGTL(("internal:dot3StatsTable:_cache_free", "called\n"));
+
+    if ((NULL == cache) || (NULL == cache->magic)) {
+        snmp_log(LOG_ERR, "invalid cache in dot3StatsTable_cache_free\n");
+        return;
+    }
+
+    container = (netsnmp_container *) cache->magic;
+
+    _container_free(container);
+}                               /* _cache_free */
+
+/**
+ * @internal
+ */
+static void
+_container_item_free(dot3StatsTable_rowreq_ctx * rowreq_ctx, void *context)
+{
+    DEBUGMSGTL(("internal:dot3StatsTable:_container_item_free",
+                "called\n"));
+
+    if (NULL == rowreq_ctx)
+        return;
+
+    dot3StatsTable_release_rowreq_ctx(rowreq_ctx);
+}                               /* _container_item_free */
+
+/**
+ * @internal
+ */
+static void
+_container_free(netsnmp_container * container)
+{
+    DEBUGMSGTL(("internal:dot3StatsTable:_container_free", "called\n"));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR,
+                 "invalid container in dot3StatsTable_container_free\n");
+        return;
+    }
+
+    /*
+     * call user code
+     */
+    dot3StatsTable_container_free(container);
+
+    /*
+     * free all items. inefficient, but easy.
+     */
+    CONTAINER_CLEAR(container,
+                    (netsnmp_container_obj_func *) _container_item_free,
+                    NULL);
+}                               /* _container_free */
+
+/**
+ * @internal
+ * initialize the container with functions or wrappers
+ */
+void
+_dot3StatsTable_container_init(dot3StatsTable_interface_ctx * if_ctx)
+{
+    DEBUGMSGTL(("internal:dot3StatsTable:_dot3StatsTable_container_init",
+                "called\n"));
+
+    /*
+     * cache init
+     */
+    if_ctx->cache = netsnmp_cache_create(30,    /* timeout in seconds */
+                                         _cache_load, _cache_free,
+                                         dot3StatsTable_oid,
+                                         dot3StatsTable_oid_size);
+
+    if (NULL == if_ctx->cache) {
+        snmp_log(LOG_ERR, "error creating cache for dot3StatsTable\n");
+        return;
+    }
+
+    if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+
+    dot3StatsTable_container_init(&if_ctx->container, if_ctx->cache);
+    if (NULL == if_ctx->container)
+        if_ctx->container =
+            netsnmp_container_find("dot3StatsTable:table_container");
+    if (NULL == if_ctx->container) {
+        snmp_log(LOG_ERR, "error creating container in "
+                 "dot3StatsTable_container_init\n");
+        return;
+    }
+
+    if (NULL != if_ctx->cache)
+        if_ctx->cache->magic = (void *) if_ctx->container;
+}                               /* _dot3StatsTable_container_init */
+
+/**
+ * @internal
+ * shutdown the container with functions or wrappers
+ */
+void
+_dot3StatsTable_container_shutdown(dot3StatsTable_interface_ctx * if_ctx)
+{
+    DEBUGMSGTL(("internal:dot3StatsTable:_dot3StatsTable_container_shutdown", "called\n"));
+
+    dot3StatsTable_container_shutdown(if_ctx->container);
+
+    _container_free(if_ctx->container);
+
+}                               /* _dot3StatsTable_container_shutdown */
+
+
+dot3StatsTable_rowreq_ctx *
+dot3StatsTable_row_find_by_mib_index(dot3StatsTable_mib_index * mib_idx)
+{
+    dot3StatsTable_rowreq_ctx *rowreq_ctx;
+    oid             oid_tmp[MAX_OID_LEN];
+    netsnmp_index   oid_idx;
+    int             rc;
+
+    /*
+     * set up storage for OID
+     */
+    oid_idx.oids = oid_tmp;
+    oid_idx.len = sizeof(oid_tmp) / sizeof(oid);
+
+    /*
+     * convert
+     */
+    rc = dot3StatsTable_index_to_oid(&oid_idx, mib_idx);
+    if (MFD_SUCCESS != rc)
+        return NULL;
+
+    rowreq_ctx = CONTAINER_FIND(dot3StatsTable_if_ctx.container, &oid_idx);
+
+    return rowreq_ctx;
+}
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.h b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.h
new file mode 100644
index 0000000..ac2b5a6
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_interface.h
@@ -0,0 +1,94 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 15899 $ of $
+ *
+ * $Id:$
+ */
+/** @ingroup interface: Routines to interface to Net-SNMP
+ *
+ * \warning This code should not be modified, called directly,
+ *          or used to interpret functionality. It is subject to
+ *          change at any time.
+ * 
+ * @{
+ */
+/*
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ * ***                                                               ***
+ * ***  NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE  ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THIS FILE DOES NOT CONTAIN ANY USER EDITABLE CODE.      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THE GENERATED CODE IS INTERNAL IMPLEMENTATION, AND      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***    IS SUBJECT TO CHANGE WITHOUT WARNING IN FUTURE RELEASES.   ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ */
+#ifndef DOT3STATSTABLE_INTERFACE_H
+#define DOT3STATSTABLE_INTERFACE_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+#include "dot3StatsTable.h"
+
+
+    /*
+     ********************************************************************
+     * Table declarations
+     */
+
+    /*
+     * PUBLIC interface initialization routine 
+     */
+    void           
+        _dot3StatsTable_initialize_interface(dot3StatsTable_registration *
+                                             user_ctx, u_long flags);
+    void           
+        _dot3StatsTable_shutdown_interface(dot3StatsTable_registration *
+                                           user_ctx);
+
+    dot3StatsTable_registration *dot3StatsTable_registration_get(void);
+
+    dot3StatsTable_registration
+        *dot3StatsTable_registration_set(dot3StatsTable_registration *
+                                         newreg);
+
+    netsnmp_container *dot3StatsTable_container_get(void);
+    int             dot3StatsTable_container_size(void);
+
+    dot3StatsTable_rowreq_ctx *dot3StatsTable_allocate_rowreq_ctx(void *);
+    void           
+        dot3StatsTable_release_rowreq_ctx(dot3StatsTable_rowreq_ctx *
+                                          rowreq_ctx);
+
+    int             dot3StatsTable_index_to_oid(netsnmp_index * oid_idx,
+                                                dot3StatsTable_mib_index *
+                                                mib_idx);
+    int             dot3StatsTable_index_from_oid(netsnmp_index * oid_idx,
+                                                  dot3StatsTable_mib_index
+                                                  * mib_idx);
+
+    /*
+     * access to certain internals. use with caution!
+     */
+    void            dot3StatsTable_valid_columns_set(netsnmp_column_info
+                                                     *vc);
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* DOT3STATSTABLE_INTERFACE_H */
+/** @} */
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_oids.h b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_oids.h
new file mode 100644
index 0000000..79b16ce
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/dot3StatsTable_oids.h
@@ -0,0 +1,82 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : generic-table-oids.m2c 12855 2005-09-27 15:56:08Z rstory $
+ *
+ * $Id:$
+ */
+#ifndef DOT3STATSTABLE_OIDS_H
+#define DOT3STATSTABLE_OIDS_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+    /*
+     * column number definitions for table dot3StatsTable 
+     */
+#define DOT3STATSTABLE_OID              1,3,6,1,2,1,10,7,2
+
+#define COLUMN_DOT3STATSINDEX         1
+#define COLUMN_DOT3STATSINDEX_FLAG    (0x1 << 0)
+
+#define COLUMN_DOT3STATSALIGNMENTERRORS         2
+#define COLUMN_DOT3STATSALIGNMENTERRORS_FLAG    (0x1 << 1)
+
+#define COLUMN_DOT3STATSFCSERRORS         3
+#define COLUMN_DOT3STATSFCSERRORS_FLAG    (0x1 << 2)
+
+#define COLUMN_DOT3STATSSINGLECOLLISIONFRAMES         4
+#define COLUMN_DOT3STATSSINGLECOLLISIONFRAMES_FLAG    (0x1 << 3)
+
+#define COLUMN_DOT3STATSMULTIPLECOLLISIONFRAMES         5
+#define COLUMN_DOT3STATSMULTIPLECOLLISIONFRAMES_FLAG    (0x1 << 4)
+
+#define COLUMN_DOT3STATSSQETESTERRORS         6
+#define COLUMN_DOT3STATSSQETESTERRORS_FLAG    (0x1 << 5)
+
+#define COLUMN_DOT3STATSDEFERREDTRANSMISSIONS         7
+#define COLUMN_DOT3STATSDEFERREDTRANSMISSIONS_FLAG    (0x1 << 6)
+
+#define COLUMN_DOT3STATSLATECOLLISIONS         8
+#define COLUMN_DOT3STATSLATECOLLISIONS_FLAG    (0x1 << 7)
+
+#define COLUMN_DOT3STATSEXCESSIVECOLLISIONS         9
+#define COLUMN_DOT3STATSEXCESSIVECOLLISIONS_FLAG    (0x1 << 8)
+
+#define COLUMN_DOT3STATSINTERNALMACTRANSMITERRORS         10
+#define COLUMN_DOT3STATSINTERNALMACTRANSMITERRORS_FLAG    (0x1 << 9)
+
+#define COLUMN_DOT3STATSCARRIERSENSEERRORS         11
+#define COLUMN_DOT3STATSCARRIERSENSEERRORS_FLAG    (0x1 << 10)
+
+#define COLUMN_DOT3STATSFRAMETOOLONGS         13
+#define COLUMN_DOT3STATSFRAMETOOLONGS_FLAG    (0x1 << 12)
+
+#define COLUMN_DOT3STATSINTERNALMACRECEIVEERRORS         16
+#define COLUMN_DOT3STATSINTERNALMACRECEIVEERRORS_FLAG    (0x1 << 15)
+
+#define COLUMN_DOT3STATSETHERCHIPSET         17
+#define COLUMN_DOT3STATSETHERCHIPSET_FLAG    (0x1 << 16)
+
+#define COLUMN_DOT3STATSSYMBOLERRORS         18
+#define COLUMN_DOT3STATSSYMBOLERRORS_FLAG    (0x1 << 17)
+
+#define COLUMN_DOT3STATSDUPLEXSTATUS         19
+#define COLUMN_DOT3STATSDUPLEXSTATUS_FLAG    (0x1 << 18)
+
+#define COLUMN_DOT3STATSRATECONTROLABILITY         20
+#define COLUMN_DOT3STATSRATECONTROLABILITY_FLAG    (0x1 << 19)
+
+#define COLUMN_DOT3STATSRATECONTROLSTATUS         21
+#define COLUMN_DOT3STATSRATECONTROLSTATUS_FLAG    (0x1 << 20)
+
+
+#define DOT3STATSTABLE_MIN_COL   COLUMN_DOT3STATSINDEX
+#define DOT3STATSTABLE_MAX_COL   COLUMN_DOT3STATSRATECONTROLSTATUS
+
+	
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* DOT3STATSTABLE_OIDS_H */
diff --git a/agent/mibgroup/etherlike-mib/dot3StatsTable/ioctl_imp_common.h b/agent/mibgroup/etherlike-mib/dot3StatsTable/ioctl_imp_common.h
new file mode 100644
index 0000000..ef9232a
--- /dev/null
+++ b/agent/mibgroup/etherlike-mib/dot3StatsTable/ioctl_imp_common.h
@@ -0,0 +1,65 @@
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <net/if.h>
+#include <linux/sockios.h>
+#include <ifaddrs.h>
+
+/* use kernel's ethtool.h  */
+
+#include <linux/types.h>
+typedef __u64 u64;
+typedef __u32 u32;
+typedef __u16 u16;
+typedef __u8 u8;
+#include <linux/ethtool.h>
+
+/* structure for storing the interface names in the system */
+
+struct ifname {
+    struct ifname *ifn_next;
+    char name [IF_NAMESIZE];
+};
+
+struct ifname *dot3stats_interface_name_list_get (struct ifname *, int *);
+int dot3stats_interface_name_list_free (struct ifname *list_head);
+int dot3stats_interface_ioctl_ifindex_get (int fd, const char *name);
+int _dot3Stats_ioctl_get(int fd, int which, struct ifreq *ifrq, const char* name);
+int interface_ioctl_dot3stats_get(dot3StatsTable_rowreq_ctx *rowreq_ctx, int fd, const char* name);
+int interface_ioctl_dot3stats_duplex_get(dot3StatsTable_rowreq_ctx *rowreq_ctx, int fd, const char* name);
+
+
+/* for maintainability */
+
+#define INTEL_RECEIVE_ALIGN_ERRORS                      "rx_align_errors"
+#define BROADCOM_RECEIVE_ALIGN_ERRORS                   INTEL_RECEIVE_ALIGN_ERRORS
+
+#define INTEL_TRANSMIT_MULTIPLE_COLLISIONS              "tx_multi_coll_ok"
+#define BROADCOM_TRANSMIT_MULTIPLE_COLLISIONS_BNX2      "tx_multi_collisions"
+#define BROADCOM_TRANSMIT_MULTIPLE_COLLISIONS_TG3       "tx_mult_collisions"
+
+#define INTEL_TRANSMIT_LATE_COLLISIONS                  "tx_abort_late_coll"
+#define BROADCOM_TRANSMIT_LATE_COLLISIONS               "tx_late_collisions"
+
+#define INTEL_TRANSMIT_SINGLE_COLLISIONS                "tx_single_coll_ok"
+#define BROADCOM_TRANSMIT_SINGLE_COLLISIONS             "tx_single_collisions"
+
+#define BROADCOM_TRANSMIT_EXCESS_COLLISIONS_BNX2        "tx_excess_collisions"
+#define BROADCOM_TRANSMIT_EXCESS_COLLISIONS_TG3         "tx_excessive_collisions"
+
+
+#define DOT3STATSALIGNMENTERRORS(x)            strstr(x, INTEL_RECEIVE_ALIGN_ERRORS)
+
+#define DOT3STATSMULTIPLECOLLISIONFRAMES(x)    (strstr(x, INTEL_TRANSMIT_MULTIPLE_COLLISIONS)) || \
+                                               (strstr(x, BROADCOM_TRANSMIT_MULTIPLE_COLLISIONS_BNX2)) || \
+                                               (strstr(x, BROADCOM_TRANSMIT_MULTIPLE_COLLISIONS_TG3))
+
+#define DOT3STATSLATECOLLISIONS(x)             (strstr(x, INTEL_TRANSMIT_LATE_COLLISIONS)) || \
+                                               (strstr(x, BROADCOM_TRANSMIT_LATE_COLLISIONS))
+
+#define DOT3STATSSINGLECOLLISIONFRAMES(x)      (strstr(x, INTEL_TRANSMIT_SINGLE_COLLISIONS)) || \
+                                               (strstr(x, BROADCOM_TRANSMIT_SINGLE_COLLISIONS))
+
+#define DOT3STATSEXCESSIVECOLLISIONS(x)        (strstr(x, BROADCOM_TRANSMIT_EXCESS_COLLISIONS_BNX2)) || \
+                                               (strstr(x, BROADCOM_TRANSMIT_EXCESS_COLLISIONS_TG3))
+
diff --git a/agent/mibgroup/examples/data_set.c b/agent/mibgroup/examples/data_set.c
index daed8f3..cc6a04a 100644
--- a/agent/mibgroup/examples/data_set.c
+++ b/agent/mibgroup/examples/data_set.c
@@ -65,8 +65,18 @@
  */
 #include <net-snmp/net-snmp-config.h>
 #include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+netsnmp_feature_require(table_set_multi_add_default_row)
+netsnmp_feature_require(unregister_auto_data_table)
+netsnmp_feature_require(delete_table_data_set)
+netsnmp_feature_require(table_dataset)
+netsnmp_feature_require(table_set_multi_add_default_row)
+netsnmp_feature_require(table_dataset_unregister_auto_data_table)
+
+static netsnmp_table_data_set *table_set;
+
 /*
  * our initialization routine, automatically called by the agent 
  */
@@ -76,7 +86,6 @@
 void
 init_data_set(void)
 {
-    netsnmp_table_data_set *table_set;
     netsnmp_table_row *row;
 
     /*
@@ -204,3 +213,11 @@
 
     DEBUGMSGTL(("example_data_set", "Done initializing.\n"));
 }
+
+void
+shutdown_data_set(void)
+{
+    netsnmp_unregister_auto_data_table(table_set, NULL);
+    netsnmp_delete_table_data_set(table_set);
+    table_set = NULL;
+}
diff --git a/agent/mibgroup/examples/data_set.h b/agent/mibgroup/examples/data_set.h
index e56f600..c9cf8b2 100644
--- a/agent/mibgroup/examples/data_set.h
+++ b/agent/mibgroup/examples/data_set.h
@@ -6,6 +6,7 @@
 #endif
 
 void            init_data_set(void);
+void            shutdown_data_set(void);
 
 
 #ifdef __cplusplus
diff --git a/agent/mibgroup/examples/delayed_instance.c b/agent/mibgroup/examples/delayed_instance.c
index 4895390..5d54569 100644
--- a/agent/mibgroup/examples/delayed_instance.c
+++ b/agent/mibgroup/examples/delayed_instance.c
@@ -172,6 +172,7 @@
                                  sizeof(delay_time));
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         /*
          * check type 
@@ -223,7 +224,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;
 
@@ -246,6 +247,7 @@
          * we don't have anything to actually do here 
          */
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     }
 
     /*
diff --git a/agent/mibgroup/examples/example.c b/agent/mibgroup/examples/example.c
index 0ce817b..dd97daf 100644
--- a/agent/mibgroup/examples/example.c
+++ b/agent/mibgroup/examples/example.c
@@ -16,38 +16,13 @@
 #include <strings.h>
 #endif
 
-/*
- * needed by util_funcs.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
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 /*
  * header_generic() comes from here 
  */
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 
 /*
  * include our .h file 
@@ -106,7 +81,7 @@
      *      2: ASN_OCTET_STR:
      *          The type of the object.
      *          Valid types are listed in <snmp_impl.h>
-     *      3: RONLY (or RWRITE):
+     *      3: NETSNMP_OLDAPI_RONLY (or NETSNMP_OLDAPI_RWRITE):
      *          Whether this object can be SET or not.
      *      4: var_example:
      *          The callback routine, used when the object is queried.
@@ -122,15 +97,24 @@
      *            to obtain the full OID of each entry.
      */
 struct variable2 example_variables[] = {
-    {EXAMPLESTRING, ASN_OCTET_STR, RONLY, var_example, 1, {1}},
-    {EXAMPLEINTEGER, ASN_INTEGER, RWRITE, var_example, 2, {2, 1}},
-    {EXAMPLEOBJECTID, ASN_OBJECT_ID, RONLY, var_example, 2, {2, 2}},
-    {EXAMPLETIMETICKS, ASN_TIMETICKS, RONLY, var_example, 1, {3}},
-    {EXAMPLEIPADDRESS, ASN_IPADDRESS, RONLY, var_example, 1, {4}},
-    {EXAMPLECOUNTER, ASN_COUNTER, RONLY, var_example, 1, {5}},
-    {EXAMPLEGAUGE, ASN_GAUGE, RONLY, var_example, 1, {6}},
-    {EXAMPLETRIGGERTRAP, ASN_INTEGER, RWRITE, var_example, 1, {7}},
-    {EXAMPLETRIGGERTRAP2, ASN_INTEGER, RWRITE, var_example, 1, {8}}
+    {EXAMPLESTRING, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_example, 1, {1}},
+    {EXAMPLEINTEGER, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_example, 2, {2, 1}},
+    {EXAMPLEOBJECTID, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_example, 2, {2, 2}},
+    {EXAMPLETIMETICKS, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
+     var_example, 1, {3}},
+    {EXAMPLEIPADDRESS, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_example, 1, {4}},
+    {EXAMPLECOUNTER, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_example, 1, {5}},
+    {EXAMPLEGAUGE, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_example, 1, {6}},
+    {EXAMPLETRIGGERTRAP, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_example, 1, {7}},
+    {EXAMPLETRIGGERTRAP2, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_example, 1, {8}}
 };
 
     /*
@@ -339,7 +323,7 @@
      */
     switch (vp->magic) {
     case EXAMPLESTRING:
-        sprintf(string, example_str);
+        strcpy(string, example_str);
         /*
          * Note that the assumption that the answer will be an
          *  integer does not hold true in this case, so the length
@@ -468,13 +452,14 @@
             return SNMP_ERR_WRONGTYPE;
         }
         if (var_val_len > sizeof(long)) {
-            DEBUGMSGTL(("example", "wrong length %x", var_val_len));
+            DEBUGMSGTL(("example", "wrong length %" NETSNMP_PRIz "u",
+                        var_val_len));
             return SNMP_ERR_WRONGLENGTH;
         }
 
         intval = *((long *) var_val);
         if (intval > MAX_EXAMPLE_INT) {
-            DEBUGMSGTL(("example", "wrong value %x", intval));
+            DEBUGMSGTL(("example", "wrong value %lx", intval));
             return SNMP_ERR_WRONGVALUE;
         }
         break;
@@ -553,13 +538,14 @@
             return SNMP_ERR_WRONGTYPE;
         }
         if (var_val_len > sizeof(long)) {
-            DEBUGMSGTL(("example", "wrong length %x", var_val_len));
+            DEBUGMSGTL(("example", "wrong length %" NETSNMP_PRIz "u",
+                        var_val_len));
             return SNMP_ERR_WRONGLENGTH;
         }
 
         intval = *((long *) var_val);
         if (intval != 1) {
-            DEBUGMSGTL(("example", "wrong value %x", intval));
+            DEBUGMSGTL(("example", "wrong value %lx", intval));
             return SNMP_ERR_WRONGVALUE;
         }
         break;
@@ -620,10 +606,10 @@
  * second since the netwok management portion of system was last
  * reinitialized.  - snmpTrapOID.0 which is part of the trap group SNMPv2
  * MIB whose value is the object-id of the specific trap you have defined
- * in your own MIB.  Other variables can be added to caracterize the
+ * in your own MIB.  Other variables can be added to characterize the
  * trap.
  * 
- * The function send_v2trap adds automaticallys the two objects but the
+ * The function send_v2trap adds automatically the two objects but the
  * value of snmpTrapOID.0 is 0.0 by default. If you want to add your trap
  * name, you have to reconstruct this object and to add your own
  * variable.
@@ -663,13 +649,14 @@
             return SNMP_ERR_WRONGTYPE;
         }
         if (var_val_len > sizeof(long)) {
-            DEBUGMSGTL(("example", "wrong length %x", var_val_len));
+            DEBUGMSGTL(("example", "wrong length %" NETSNMP_PRIz "u",
+                        var_val_len));
             return SNMP_ERR_WRONGLENGTH;
         }
 
         intval = *((long *) var_val);
         if (intval != 1) {
-            DEBUGMSGTL(("example", "wrong value %x", intval));
+            DEBUGMSGTL(("example", "wrong value %lx", intval));
             return SNMP_ERR_WRONGVALUE;
         }
         break;
@@ -732,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/example.h b/agent/mibgroup/examples/example.h
index 9de5748..04b73e0 100644
--- a/agent/mibgroup/examples/example.h
+++ b/agent/mibgroup/examples/example.h
@@ -14,10 +14,10 @@
 #endif
 
     /*
-     * We use 'header_generic' from the util_funcs module,
+     * We use 'header_generic' from the util_funcs/header_generic module,
      *  so make sure this module is included in the agent.
      */
-config_require(util_funcs)
+config_require(util_funcs/header_generic)
 
 
     /*
diff --git a/agent/mibgroup/examples/netSnmpHostsTable.c b/agent/mibgroup/examples/netSnmpHostsTable.c
index 36ab7e3..8ea2d03 100644
--- a/agent/mibgroup/examples/netSnmpHostsTable.c
+++ b/agent/mibgroup/examples/netSnmpHostsTable.c
@@ -4,12 +4,17 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "netSnmpHostsTable.h"
 #include "netSnmpHostsTable_checkfns.h"
 #include "netSnmpHostsTable_access.h"
 
+netsnmp_feature_require(oid_stash)
+netsnmp_feature_require(oid_stash_get_data)
+netsnmp_feature_require(oid_stash_add_data)
+
 static netsnmp_oid_stash_node *undoStorage = NULL;
 static netsnmp_oid_stash_node *commitStorage = NULL;
 
@@ -71,7 +76,7 @@
                                      0);
 
     /** Define the minimum and maximum accessible columns.  This
-        optimizes retrival. */
+        optimizes retrieval. */
     table_info->min_column = 2;
     table_info->max_column = 5;
 
@@ -92,7 +97,7 @@
      */
     DEBUGMSGTL(("initialize_table_netSnmpHostsTable",
                 "Registering table netSnmpHostsTable as a table iterator\n"));
-    netsnmp_register_table_iterator(my_handler, iinfo);
+    netsnmp_register_table_iterator2(my_handler, iinfo);
 }
 
 /** Initializes the netSnmpHostsTable module */
@@ -114,19 +119,15 @@
 
     netsnmp_request_info *request;
     netsnmp_table_request_info *table_info;
-    netsnmp_variable_list *var;
     struct commitInfo *ci = NULL;
 
     void           *data_context = NULL;
 
-    oid            *suffix;
-    size_t          suffix_len;
-
     for (request = requests; request; request = request->next) {
         /* column and row index encoded portion */
-        var = request->requestvb;
-        suffix     = var->name + reginfo->rootoid_len + 1;
-        suffix_len = var->name_length - (reginfo->rootoid_len + 1);
+        netsnmp_variable_list *var = request->requestvb;
+        const oid * const suffix = var->name + reginfo->rootoid_len + 1;
+        const size_t suffix_len = var->name_length - (reginfo->rootoid_len + 1);
 
         if (request->processed != 0)
             continue;
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/netSnmpHostsTable_checkfns.c b/agent/mibgroup/examples/netSnmpHostsTable_checkfns.c
index 4cb9339..25a7330 100644
--- a/agent/mibgroup/examples/netSnmpHostsTable_checkfns.c
+++ b/agent/mibgroup/examples/netSnmpHostsTable_checkfns.c
@@ -14,11 +14,14 @@
  * standard headers 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include "netSnmpHostsTable_checkfns.h"
 #include "netSnmpHostsTable_checkfns_local.h"
 #include "netSnmpHostsTable_enums.h"
 
+netsnmp_feature_require(check_storage_transition)
+
 /** Decides if an incoming value for the netSnmpHostAddressType mib node is legal.
  *  @param type    The incoming data type.
  *  @param val     The value to be checked.
diff --git a/agent/mibgroup/examples/scalar_int.c b/agent/mibgroup/examples/scalar_int.c
index 503bdd4..db4d295 100644
--- a/agent/mibgroup/examples/scalar_int.c
+++ b/agent/mibgroup/examples/scalar_int.c
@@ -23,10 +23,17 @@
  * start be including the appropriate header files 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 /*
+ * if --enable-minimalist has been turned on, we need to register
+ * the support we need so the needed functions aren't removed at compile time
+ */
+netsnmp_feature_require(long_instance)
+
+/*
  * Then, we declare the variables we want to be accessed 
  */
 static long     example1 = 42;  /* default value */
diff --git a/agent/mibgroup/examples/ucdDemoPublic.c b/agent/mibgroup/examples/ucdDemoPublic.c
index 97a8f47..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,15 +23,11 @@
 # 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>
 
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 #include "ucdDemoPublic.h"
 
 #define MYMAX 1024
@@ -73,11 +65,14 @@
  */
 
 struct variable2 ucdDemoPublic_variables[] = {
-    {UCDDEMORESETKEYS, ASN_INTEGER, RWRITE, var_ucdDemoPublic, 1, {1}},
-    {UCDDEMOPUBLICSTRING, ASN_OCTET_STR, RWRITE, var_ucdDemoPublic, 1,
-     {2}},
-    {UCDDEMOUSERLIST, ASN_OCTET_STR, RWRITE, var_ucdDemoPublic, 1, {3}},
-    {UCDDEMOPASSPHRASE, ASN_OCTET_STR, RWRITE, var_ucdDemoPublic, 1, {4}},
+    {UCDDEMORESETKEYS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ucdDemoPublic, 1, {1}},
+    {UCDDEMOPUBLICSTRING, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_ucdDemoPublic, 1, {2}},
+    {UCDDEMOUSERLIST, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_ucdDemoPublic, 1, {3}},
+    {UCDDEMOPASSPHRASE, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_ucdDemoPublic, 1, {4}},
 
 };
 
@@ -130,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/examples/ucdDemoPublic.h b/agent/mibgroup/examples/ucdDemoPublic.h
index fd9f12f..253f4ff 100644
--- a/agent/mibgroup/examples/ucdDemoPublic.h
+++ b/agent/mibgroup/examples/ucdDemoPublic.h
@@ -6,10 +6,10 @@
 #define _MIBGROUP_UCDDEMOPUBLIC_H
 
 /*
- * we use header_generic and checkmib from the util_funcs module 
+ * we use header_generic from the util_funcs module
  */
 
-config_require(util_funcs)
+config_require(util_funcs/header_generic)
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/agent/mibgroup/examples/watched.c b/agent/mibgroup/examples/watched.c
index 58122c4..b486bac 100644
--- a/agent/mibgroup/examples/watched.c
+++ b/agent/mibgroup/examples/watched.c
@@ -45,7 +45,7 @@
      * variables needed for registration
      */
     netsnmp_handler_registration *reginfo;
-    netsnmp_watcher_info *watcher_info;
+    static netsnmp_watcher_info watcher_info;
     int watcher_flags;
 
     /*
@@ -57,8 +57,6 @@
                 my_string));
 
     /*
-     * create the registration info for our string. If you want to
-     *
      * If we wanted a callback when the value was retrieved or set
      * (even though the details of doing this are handled for you),
      * you could change the NULL pointer below to a valid handler
@@ -72,32 +70,28 @@
                                                   HANDLER_CAN_RWRITE);
                                                   
     /*
-     * the two options for a string watcher are:
+     * the three options for a string watcher are:
      *   fixed size string (length never changes)
      *   variable size (length can be 0 - MAX, for some MAX)
+     *   c string (length can be 0 - MAX-1 for some max, \0 is not a valid
+     *     character in the string, the length is provided by strlen)
      *
      * we'll use a variable length string.
      */
     watcher_flags = WATCHER_MAX_SIZE;
 
     /*
-     * create the watcher info for our string, and set the max size.
+     * create the watcher info for our string.
      */
-    watcher_info =
-        netsnmp_create_watcher_info(my_string, strlen(my_string),
-                                    ASN_OCTET_STR, watcher_flags);
-    watcher_info->max_size = sizeof(my_string);
+    netsnmp_init_watcher_info6(&watcher_info, my_string, strlen(my_string),
+			       ASN_OCTET_STR, watcher_flags,
+			       sizeof(my_string), NULL);
 
     /*
      * the line below registers our "my_string" variable above as
      * accessible and makes it writable. 
-     * 
-     * If we wanted a callback when the value was retrieved or set
-     * (even though the details of doing this are handled for you),
-     * you could change the NULL pointer below to a valid handler
-     * function. 
      */
-    netsnmp_register_watched_instance(reginfo, watcher_info);
+    netsnmp_register_watched_instance(reginfo, &watcher_info);
 
     DEBUGMSGTL(("example_string_instance",
                 "Done initalizing example string instance\n"));
diff --git a/agent/mibgroup/hardware/cpu.h b/agent/mibgroup/hardware/cpu.h
index edd3387..3956679 100644
--- a/agent/mibgroup/hardware/cpu.h
+++ b/agent/mibgroup/hardware/cpu.h
@@ -15,13 +15,13 @@
 #elif defined(dragonfly)
 config_require(hardware/cpu/cpu_kinfo)
 
-#elif (defined(netbsd) || defined(netbsd1) || defined(netbsdelf) || defined(netbsdelf2)|| defined(netbsdelf3) || defined(openbsd) || defined(freebsd4)  || defined(freebsd5) || defined(freebsd6))
+#elif (defined(netbsd) || defined(netbsd1) || defined(netbsdelf) || defined(netbsdelf2)|| defined(netbsdelf3) || defined(openbsd) || defined(freebsd4) || defined(freebsd5) || defined(freebsd6))
 config_require(hardware/cpu/cpu_sysctl)
 
 #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..2772001 100644
--- a/agent/mibgroup/hardware/cpu/cpu.c
+++ b/agent/mibgroup/hardware/cpu/cpu.c
@@ -1,8 +1,16 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/cpu.h>
 
+netsnmp_feature_child_of(hardware_cpu, libnetsnmpmibs)
+
+netsnmp_feature_child_of(hardware_cpu_copy_stats, hardware_cpu)
+netsnmp_feature_child_of(hardware_cpu_load, hardware_cpu)
+netsnmp_feature_child_of(hardware_cpu_get_cache, hardware_cpu)
+netsnmp_feature_child_of(hardware_cpu_get_byName, hardware_cpu)
+
 extern NetsnmpCacheLoad netsnmp_cpu_arch_load;
 static void _cpu_update_stats( unsigned int, void* );
 
@@ -84,8 +92,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;
@@ -107,14 +115,14 @@
             return cpu;
         }
     }
-    if (cpu)
-        SNMP_FREE(cpu); /* just in case */
+    SNMP_FREE(cpu); /* just in case */
     return NULL;  /* Shouldn't happen! */
 }
 
     /*
      * Work with a list of CPU entries, indexed by name
      */
+#ifndef NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_GET_BYNAME
 netsnmp_cpu_info *netsnmp_cpu_get_byName( char *name, int create ) {
     netsnmp_cpu_info *cpu;
 
@@ -152,11 +160,15 @@
     }
     return cpu;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_GET_BYNAME */
 
+#ifndef NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_GET_CACHE
 netsnmp_cache *netsnmp_cpu_get_cache( void ) {
     return _cpu_cache;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_GET_CACHE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_LOAD
 int netsnmp_cpu_load( void ) {
         /*
          * If we're automatically updating the stats regularly,
@@ -165,6 +177,7 @@
     return ( _cpuAutoUpdate ? 1
                             : netsnmp_cache_check_and_reload( _cpu_cache ));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_LOAD */
 
     /*
      * Call the system-specific load routine regularly,
@@ -181,7 +194,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
@@ -220,10 +233,14 @@
                            cpu->wait_ticks +
                            cpu->kern_ticks +
                            cpu->intrpt_ticks +
-                           cpu->sirq_ticks;
+                           cpu->sirq_ticks +
+                           cpu->steal_ticks +
+                           cpu->guest_ticks +
+                           cpu->guestnice_ticks;
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_COPY_STATS
 void _cpu_copy_stats( netsnmp_cpu_info *cpu )
 {
     netsnmp_cpu_info *cpu2;
@@ -243,6 +260,9 @@
     cpu2->kern_ticks = cpu->kern_ticks;
     cpu2->intrpt_ticks = cpu->intrpt_ticks;
     cpu2->sirq_ticks = cpu->sirq_ticks;
+    cpu2->steal_ticks = cpu->steal_ticks;
+    cpu2->guest_ticks = cpu->guest_ticks;
+    cpu2->guestnice_ticks = cpu->guestnice_ticks;
 
     cpu2->nInterrupts  = cpu->nInterrupts;
     cpu2->nCtxSwitches = cpu->nCtxSwitches;
@@ -251,3 +271,4 @@
     cpu2->pageIn     = cpu->pageIn;
     cpu2->pageOut    = cpu->pageOut;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_HARDWARE_CPU_COPY_STATS */
diff --git a/agent/mibgroup/hardware/cpu/cpu_kinfo.c b/agent/mibgroup/hardware/cpu/cpu_kinfo.c
index facbc7b..37cf847 100644
--- a/agent/mibgroup/hardware/cpu/cpu_kinfo.c
+++ b/agent/mibgroup/hardware/cpu/cpu_kinfo.c
@@ -2,6 +2,7 @@
  *  DragonFly kinfo interface
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/cpu.h>
@@ -13,6 +14,7 @@
 #include <unistd.h>
 #include <sys/sysctl.h>
 
+netsnmp_feature_require(hardware_cpu_copy_stats)
 void _cpu_copy_stats( netsnmp_cpu_info *cpu );
 
     /*
diff --git a/agent/mibgroup/hardware/cpu/cpu_kstat.c b/agent/mibgroup/hardware/cpu/cpu_kstat.c
index e16afb7..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;
@@ -101,7 +101,7 @@
             i    = ksp->ks_instance;
             cpu2 = netsnmp_cpu_get_byIdx( i, 0 );
             if ( !cpu2 )  
-                break;   /* or continue ? */    /* Skip new CPUs */
+                break;   /* or continue ? */  /* Skip new CPUs */
             if ((ksp->ks_type != KSTAT_TYPE_RAW) ||
                 (ksp->ks_data_size != sizeof(cs))||
                 (kstat_read(kstat_fd, ksp, &cs) == -1)) {
diff --git a/agent/mibgroup/hardware/cpu/cpu_linux.c b/agent/mibgroup/hardware/cpu/cpu_linux.c
index e27e12e..b1dc308 100644
--- a/agent/mibgroup/hardware/cpu/cpu_linux.c
+++ b/agent/mibgroup/hardware/cpu/cpu_linux.c
@@ -57,7 +57,7 @@
 #endif
         }
 #if defined(__s390__) || defined(__s390x__)
-	/* s390 may different format of CPU_FILE */
+	/* s390 may have different format of CPU_FILE */
         else {
             if (sscanf( buf, "processor %d:", &i ) == 1)  {
                 n++;
@@ -99,11 +99,12 @@
     static char *buff  = NULL;
     static int   bsize = 0;
     static int   first = 1;
-    static int   has_cpu_26 = 1;
+    static int   num_cpuline_elem = 0;
     int          bytes_read, statfd, i;
     char        *b1, *b2;
     unsigned long long cusell = 0, cicell = 0, csysll = 0, cidell = 0,
-                       ciowll = 0, cirqll = 0, csoftll = 0;
+                       ciowll = 0, cirqll = 0, csoftll = 0, cstealll = 0,
+                       cguestll = 0, cguest_nicell = 0;
     netsnmp_cpu_info* cpu;
 
     if ((statfd = open(STAT_FILE, O_RDONLY, 0)) == -1) {
@@ -112,11 +113,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);
@@ -158,22 +159,33 @@
             b1++;
         }
 
-	if (!has_cpu_26 ||
-            sscanf(b1, "%llu %llu %llu %llu %llu %llu %llu", &cusell,
-                   &cicell, &csysll, &cidell, &ciowll, &cirqll, &csoftll) != 7) {
-	    has_cpu_26 = 0;
-	    sscanf(b1, "%llu %llu %llu %llu", &cusell, &cicell, &csysll,
-                   &cidell);
+        num_cpuline_elem = sscanf(b1, "%llu %llu %llu %llu %llu %llu %llu %llu %llu %llu",
+         &cusell, &cicell, &csysll, &cidell, &ciowll, &cirqll, &csoftll, &cstealll, &cguestll, &cguest_nicell);
+        DEBUGMSGTL(("cpu", "/proc/stat cpu line number of elements: %i\n", num_cpuline_elem));
 
-	} else {
-            cpu->wait_ticks   = (unsigned long long)ciowll;
-            cpu->intrpt_ticks = (unsigned long long)cirqll;
-            cpu->sirq_ticks   = (unsigned long long)csoftll;
- 	}
-        cpu->user_ticks = (unsigned long long)cusell;
-        cpu->nice_ticks = (unsigned long long)cicell;
-        cpu->sys_ticks  = (unsigned long long)csysll;
-        cpu->idle_ticks = (unsigned long long)cidell;
+        /* kernel 2.6.33 and above */
+        if (num_cpuline_elem == 10) {
+            cpu->guestnice_ticks = cguest_nicell;
+        }
+        /* kernel 2.6.24 and above */
+        if (num_cpuline_elem >= 9) {
+            cpu->guest_ticks = cguestll;
+        }
+        /* kernel 2.6.11 and above */
+        if (num_cpuline_elem >= 8) {
+            cpu->steal_ticks = cstealll;
+        }
+        /* kernel 2.6 */
+        if (num_cpuline_elem >= 5) {
+            cpu->wait_ticks   = ciowll;
+            cpu->intrpt_ticks = cirqll;
+            cpu->sirq_ticks   = csoftll;
+        }
+        /* rest */
+        cpu->user_ticks = cusell;
+        cpu->nice_ticks = cicell;
+        cpu->sys_ticks  = csysll;
+        cpu->idle_ticks = cidell;
     }
     if ( b1 == buff ) {
 	if (first)
@@ -219,11 +231,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) {
@@ -232,7 +244,6 @@
 	    }
         }
         close(vmstatfd);
-
         if ( bytes_read < 0 ) {
             snmp_log_perror(VMSTAT_FILE "read error");
             return;
diff --git a/agent/mibgroup/hardware/cpu/cpu_mach.c b/agent/mibgroup/hardware/cpu/cpu_mach.c
index d527b3d..7f090c9 100644
--- a/agent/mibgroup/hardware/cpu/cpu_mach.c
+++ b/agent/mibgroup/hardware/cpu/cpu_mach.c
@@ -108,6 +108,7 @@
     cpu0->pageIn = vmstat.pageins;
     cpu0->pageOut = vmstat.pageouts;
 	/* not implemented: swapIn, swapOut, nInterrupts, nCtxSwitches */
+    return 1;
 }
 
  	  	 
diff --git a/agent/mibgroup/hardware/cpu/cpu_nlist.c b/agent/mibgroup/hardware/cpu/cpu_nlist.c
index a9eb1e2..974028a 100644
--- a/agent/mibgroup/hardware/cpu/cpu_nlist.c
+++ b/agent/mibgroup/hardware/cpu/cpu_nlist.c
@@ -3,6 +3,7 @@
  *     e.g. FreeBSD
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/cpu.h>
@@ -31,6 +32,7 @@
 #define CPU_SYMBOL  "cp_time"
 #define MEM_SYMBOL  "cnt"
 
+netsnmp_feature_require(hardware_cpu_copy_stats)
 void _cpu_copy_stats( netsnmp_cpu_info *cpu );
 
     /*
diff --git a/agent/mibgroup/hardware/cpu/cpu_perfstat.c b/agent/mibgroup/hardware/cpu/cpu_perfstat.c
index f44f295..5fdd531 100644
--- a/agent/mibgroup/hardware/cpu/cpu_perfstat.c
+++ b/agent/mibgroup/hardware/cpu/cpu_perfstat.c
@@ -3,6 +3,7 @@
  *     e.g. AIX
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/cpu.h>
@@ -11,8 +12,10 @@
 #include <unistd.h>
 #include <sys/types.h>
 
+#include <sys/protosw.h>
 #include <libperfstat.h>
 
+netsnmp_feature_require(hardware_cpu_copy_stats)
 void _cpu_copy_stats( netsnmp_cpu_info *cpu );
 
     /*
@@ -27,7 +30,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 +86,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 c610269..5ecb68e 100644
--- a/agent/mibgroup/hardware/cpu/cpu_sysctl.c
+++ b/agent/mibgroup/hardware/cpu/cpu_sysctl.c
@@ -3,6 +3,7 @@
  *     e.g. BSD/OS, NetBSD, OpenBSD, later Darwin releases
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/cpu.h>
@@ -30,6 +31,8 @@
 #include <vm/vm_extern.h>
 #endif
 
+netsnmp_feature_require(hardware_cpu_copy_stats)
+
 void _cpu_copy_stats( netsnmp_cpu_info *cpu );
 
     /*
@@ -75,13 +78,20 @@
 
 #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 */
+#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
 
 #else
 #error "No CPU statistics sysctl token"
@@ -103,8 +113,13 @@
     #define NS_VM_SWTCH		swtch
     #define NS_VM_PAGEIN	pageins
     #define NS_VM_PAGEOUT	pdpageouts
+#ifdef HAVE_STRUCT_UVMEXP_PGSWAPIN
+    #define NS_VM_SWAPIN	pgswapin
+    #define NS_VM_SWAPOUT	pgswapout
+#else
     #define NS_VM_SWAPIN	swapins
     #define NS_VM_SWAPOUT	swapouts
+#endif
 
 #if defined(VM_UVMEXP2)                   /* NetBSD 1.6+ */
 #define NETSNMP_VM_STATS       VM_UVMEXP2
@@ -144,7 +159,6 @@
      * Load the latest CPU usage statistics
      */
 int netsnmp_cpu_arch_load( netsnmp_cache *cache, void *magic ) {
-    int                     i;
 
     /*
      * Strictly speaking, BSDi ought to use
@@ -154,11 +168,20 @@
      * Don't fight it, Dave - go with the flow....
      */
     NETSNMP_CPU_STATS cpu_stats[CPUSTATES];
-    int            cpu_mib[] = { CTL_KERN, NETSNMP_KERN_CPU };
     size_t         cpu_size  = sizeof(cpu_stats);
+#if !defined(__FreeBSD__) && !defined(__NetBSD__)
+    int            cpu_mib[] = { CTL_KERN, NETSNMP_KERN_CPU };
+#endif
+#ifdef __FreeBSD__
+    static int     cp_times = -1;
+#endif
+#ifdef KERN_CPTIME2
+    int            mcpu_mib[] = { CTL_KERN, KERN_CPTIME2, 0 };
+#endif
 #ifdef NETSNMP_KERN_MCPU 
+    int            i;
+    int            act_cpu = cpu_num;
     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;
@@ -166,17 +189,17 @@
     size_t         mem_size  = sizeof(NETSNMP_VM_STATS_TYPE);
     netsnmp_cpu_info *cpu = netsnmp_cpu_get_byIdx( -1, 0 );
 
-#if (defined(__FreeBSD__) || defined(__NetBSD__))
+#if defined(__FreeBSD__) || defined(__NetBSD__)
     sysctlbyname("kern.cp_time", cpu_stats, &cpu_size, NULL, 0);
 #else
     sysctl(cpu_mib, 2,  cpu_stats, &cpu_size, NULL, 0);
 #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 */
     
         /*
@@ -184,30 +207,83 @@
          *   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(KERN_CPTIME2)
+    mcpu_size  = cpu_num*sizeof(cpu_stats);
     mcpu_stats = malloc(mcpu_size);
-    sysctl(mcpu_mib, 2, mcpu_stats, &mcpu_size, NULL, 0);
-    for ( i = 0; i < cpu_num; i++ ) {
+#elif defined(__NetBSD__)
+    mcpu_size  = cpu_num*sizeof(cpu_stats);
+    mcpu_stats = malloc(mcpu_size);
+    sysctlbyname("kern.cp_time", mcpu_stats, &mcpu_size, NULL, 0);
+#elif defined(__FreeBSD__)
+    if (cp_times == -1) {
+	int ret = sysctlbyname("kern.cp_times", NULL, &mcpu_size, NULL, 0);
+	cp_times = ret == -1 ? 0 : 1;
+    }
+    if (cp_times) {
+	sysctlbyname("kern.cp_times", NULL, &mcpu_size, NULL, 0);
+	mcpu_stats = malloc(mcpu_size);
+	sysctlbyname("kern.cp_times", mcpu_stats, &mcpu_size, NULL, 0);
+    }
+    else {
+	mcpu_size  = sizeof(cpu_stats);
+	mcpu_stats = malloc(mcpu_size);
+	sysctlbyname("kern.cp_time", mcpu_stats, &mcpu_size, NULL, 0);
+	act_cpu = 1;
+    }
+#endif
+    for ( i = 0; i < act_cpu; i++ ) {
         cpu = netsnmp_cpu_get_byIdx( i, 0 );
         /* XXX - per-CPU statistics - mcpu_mib[i].??? */
+#ifdef KERN_CPTIME2
+	mcpu_mib[2] = i;
+	sysctl(mcpu_mib, 3, mcpu_stats+i*CPUSTATES, &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 real 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
+#else	/* NETSNMP_KERN_MCPU */
         /* Copy "overall" figures to cpu0 entry */
     _cpu_copy_stats( cpu );
-#endif
+#endif  /* NETSNMP_KERN_MCPU */
 
     return 0;
 }
diff --git a/agent/mibgroup/hardware/fsys.h b/agent/mibgroup/hardware/fsys.h
new file mode 100644
index 0000000..8cbf439
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys.h
@@ -0,0 +1,10 @@
+config_require(hardware/fsys/hw_fsys)
+#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)
+#elif defined(HAVE_GETMNTENT) && !defined(irix6)
+config_require(hardware/fsys/fsys_mntent)
+#else
+config_require(hardware/fsys/fsys_void)
+#endif
diff --git a/agent/mibgroup/hardware/fsys/fsys_getfsstats.c b/agent/mibgroup/hardware/fsys/fsys_getfsstats.c
new file mode 100644
index 0000000..05027f4
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys/fsys_getfsstats.c
@@ -0,0 +1,168 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/hardware/fsys.h>
+#include "hardware/fsys/hw_fsys.h"
+
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#if HAVE_SYS_STATVFS_H
+#include <sys/statvfs.h>
+#endif
+
+
+    /*
+     * Handle minor naming differences between statfs/statvfs
+     */
+#if defined(_VFS_NAMELEN)
+#define NSFS_NAMELEN  _VFS_NAMELEN
+#else
+#define NSFS_NAMELEN  MNAMELEN
+#endif
+
+#if defined(HAVE_GETVFSSTAT) && defined(__NetBSD__)
+#define NSFS_GETFSSTAT  getvfsstat
+#define NSFS_STATFS     statvfs
+#define NSFS_FLAGS      f_flag
+#else
+#define NSFS_GETFSSTAT  getfsstat
+#define NSFS_STATFS     statfs
+#define NSFS_FLAGS      f_flags
+#endif
+
+int
+_fs_type( char *typename )
+{
+    DEBUGMSGTL(("fsys:type", "Classifying %s\n", typename));
+
+    if ( !typename || *typename=='\0' )
+       return NETSNMP_FS_TYPE_UNKNOWN;
+
+#include "mounts.h"
+
+       /*
+        * List of mount types from <sys/mount.h>
+        */
+    else if ( !strcmp(typename, MOUNT_FFS) ||
+              !strcmp(typename, MOUNT_UFS) )
+       return NETSNMP_FS_TYPE_BERKELEY;
+    else if ( !strcmp(typename, MOUNT_NFS) )
+       return NETSNMP_FS_TYPE_NFS;
+    else if ( !strcmp(typename, MOUNT_MFS) )
+       return NETSNMP_FS_TYPE_MFS;
+    else if ( !strcmp(typename, MOUNT_MSDOS) ||
+              !strcmp(typename, MOUNT_MSDOSFS) )
+       return NETSNMP_FS_TYPE_FAT;
+    else if ( !strcmp(typename, MOUNT_AFS) )
+       return NETSNMP_FS_TYPE_AFS;
+    else if ( !strcmp(typename, MOUNT_CD9660) )
+       return NETSNMP_FS_TYPE_ISO9660;
+    else if ( !strcmp(typename, MOUNT_EXT2FS) )
+       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:
+        *     MOUNT_NULL
+        *     MOUNT_OVERLAY
+        *     MOUNT_UMAP
+        *     MOUNT_UNION
+        *     MOUNT_CFS/CODA
+        *     MOUNT_FILECORE
+        *     MOUNT_SMBFS
+        *     MOUNT_PTYFS
+        * OpenBSD also recognises the following filesystem types:
+        *     MOUNT_LOFS
+        *     MOUNT_NCPFS
+        *     MOUNT_XFS
+        *     MOUNT_UDF
+        * Both of them recognise the following filesystem types:
+        *     MOUNT_LFS
+        *     MOUNT_FDESC
+        *     MOUNT_PORTAL
+        *     MOUNT_KERNFS
+        *     MOUNT_PROCFS
+        *     MOUNT_ADOSFS
+        *
+        * All of these filesystems are mapped to NETSNMP_FS_TYPE_OTHER
+        *   so will be picked up by the following default branch.
+        */
+    else
+       return NETSNMP_FS_TYPE_OTHER;
+}
+
+void
+netsnmp_fsys_arch_init( void )
+{
+    return;
+}
+
+void
+netsnmp_fsys_arch_load( void )
+{
+    int n, i;
+    struct NSFS_STATFS *stats;
+    netsnmp_fsys_info *entry;
+
+    /*
+     * Retrieve information about the currently mounted filesystems...
+     */
+    n = NSFS_GETFSSTAT( NULL, 0, 0 );
+    if ( n==0 )
+        return;
+    stats = (struct NSFS_STATFS *)malloc( n * sizeof( struct NSFS_STATFS ));
+    n = NSFS_GETFSSTAT( stats, n * sizeof( struct NSFS_STATFS ), MNT_NOWAIT );
+
+    /*
+     * ... and insert this into the filesystem container.
+     */
+    for ( i=0; i<n; i++ ) {
+        entry = netsnmp_fsys_by_path( stats[i].f_mntonname,
+                                      NETSNMP_FS_FIND_CREATE );
+        if (!entry)
+            continue;
+
+        strlcpy( entry->path,   stats[i].f_mntonname,   sizeof(entry->path));
+        entry->path[sizeof(entry->path)-1] = '\0';
+        strlcpy( entry->device, stats[i].f_mntfromname, sizeof(entry->device));
+        entry->device[sizeof(entry->device)-1] = '\0';
+        entry->units = stats[i].f_bsize;    /* or f_frsize */
+        entry->size  = stats[i].f_blocks;
+        entry->used  = (stats[i].f_blocks - stats[i].f_bfree);
+        /* entry->avail is currently unsigned, so protect against negative
+         * values!
+         * This should be changed to a signed field.
+         */
+        if (stats[i].f_bavail < 0)
+            entry->avail = 0;
+        else
+            entry->avail = stats[i].f_bavail;
+        entry->inums_total = stats[i].f_files;
+        entry->inums_avail = stats[i].f_ffree;
+
+        entry->type = _fs_type( stats[i].f_fstypename );
+        entry->flags |= NETSNMP_FS_FLAG_ACTIVE;
+
+        if (! (stats[i].NSFS_FLAGS & MNT_LOCAL )) {
+            entry->flags |= NETSNMP_FS_FLAG_REMOTE;
+        }
+        if (  stats[i].NSFS_FLAGS & MNT_RDONLY ) {
+            entry->flags |= NETSNMP_FS_FLAG_RONLY;
+        }
+        if (  stats[i].NSFS_FLAGS & MNT_ROOTFS ) {
+            entry->flags |= NETSNMP_FS_FLAG_BOOTABLE;
+        }
+        netsnmp_fsys_calculate32(entry);
+    }
+
+    free(stats);
+}
diff --git a/agent/mibgroup/hardware/fsys/fsys_mntctl.c b/agent/mibgroup/hardware/fsys/fsys_mntctl.c
new file mode 100644
index 0000000..9fbb068
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys/fsys_mntctl.c
@@ -0,0 +1,182 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/hardware/fsys.h>
+
+#include <stdio.h>
+#if HAVE_SYS_MNTCTL_H
+#include <sys/mntctl.h>
+#endif
+#if HAVE_SYS_VMOUNT_H
+#include <sys/vmount.h>
+#endif
+#if HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#if HAVE_SYS_STATVFS_H
+#include <sys/statvfs.h>
+#endif
+
+
+int
+_fsys_remote( char *device, int type, char *host )
+{
+    if (( type == NETSNMP_FS_TYPE_NFS) ||
+        ( type == NETSNMP_FS_TYPE_AFS))
+        return 1;
+    else
+        return 0;
+}
+
+int
+_fsys_type( int type)
+{
+    DEBUGMSGTL(("fsys:type", "Classifying %d\n", type));
+
+    switch ( type ) {
+        case  MNT_AIX:
+        case  MNT_JFS:
+            return NETSNMP_FS_TYPE_BERKELEY;
+
+        case  MNT_CDROM:
+            return NETSNMP_FS_TYPE_ISO9660;
+
+        case  MNT_NFS:
+        case  MNT_NFS3:
+        case  MNT_AUTOFS:
+            return NETSNMP_FS_TYPE_NFS;
+
+    /*
+     *  The following code covers selected filesystems
+     *    which are not covered by the HR-TYPES enumerations,
+     *    but should still be monitored.
+     *  These are all mapped into type "other"
+     *
+     */    
+#ifdef MNT_NAMEFS
+        case MNT_NAMEFS:
+#endif
+#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;
+
+    /*    
+     *  All other types are silently skipped
+     */
+        default:
+            return NETSNMP_FS_TYPE_IGNORE;
+    }
+    return NETSNMP_FS_TYPE_IGNORE;  /* Not reached */
+}
+
+void
+netsnmp_fsys_arch_init( void )
+{
+    return;
+}
+
+void
+netsnmp_fsys_arch_load( void )
+{
+    int  ret  = 0, i = 0;
+    uint size = 0;
+
+    struct vmount *aixmnt, *aixcurr;
+    char          *path;
+    struct statfs  stat_buf;
+    netsnmp_fsys_info *entry;
+    char               tmpbuf[1024];
+
+    /*
+     * Retrieve information about the currently mounted filesystems...
+     */
+    ret = mntctl(MCTL_QUERY, sizeof(uint), (void *) &size);
+    if ( ret != 0 || size<=0 ) {
+        snmp_log_perror( "initial mntctl failed" );
+        return;
+    }
+
+    aixmnt = (struct vmount *)malloc( size );
+    if ( aixmnt == NULL ) {
+        snmp_log_perror( "cannot allocate memory for mntctl data" );
+        return;
+    }
+
+    ret = mntctl(MCTL_QUERY, size, (void *) aixmnt);
+    if ( ret <= 0 ) {
+        free(aixmnt);
+        snmp_log_perror( "main mntctl failed" );
+        return;
+    }
+    aixcurr = aixmnt;
+
+
+    /*
+     * ... and insert this into the filesystem container.
+     */
+
+    for (i = 0;
+         i < ret;
+         i++, aixcurr = (struct vmount *) ((char*)aixcurr + aixcurr->vmt_length) ) {
+
+        path = vmt2dataptr( aixcurr, VMT_STUB );
+        entry = netsnmp_fsys_by_path( path, NETSNMP_FS_FIND_CREATE );
+        if (!entry) {
+            continue;
+        }
+
+        strlcpy(entry->path, path, sizeof(entry->path));
+        strlcpy(entry->device, vmt2dataptr(aixcurr, VMT_OBJECT),
+                sizeof(entry->device));
+        entry->type   = _fsys_type( aixcurr->vmt_gfstype );
+
+        if (!(entry->type & _NETSNMP_FS_TYPE_SKIP_BIT))
+            entry->flags |= NETSNMP_FS_FLAG_ACTIVE;
+
+        if ( _fsys_remote( entry->device, entry->type, vmt2dataptr( aixcurr, VMT_HOST) ))
+            entry->flags |= NETSNMP_FS_FLAG_REMOTE;
+        if ( aixcurr->vmt_flags & MNT_READONLY )
+            entry->flags |= NETSNMP_FS_FLAG_RONLY;
+        /*
+         *  The root device is presumably bootable.
+         *  Other partitions probably aren't!
+         */
+        if ((entry->path[0] == '/') && (entry->path[1] == '\0'))
+            entry->flags |= NETSNMP_FS_FLAG_BOOTABLE;
+
+        /*
+         *  XXX - identify removeable disks
+         */
+
+        /*
+         *  Optionally skip retrieving statistics for remote mounts
+         */
+        if ( (entry->flags & NETSNMP_FS_FLAG_REMOTE) &&
+            netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+                                   NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES))
+            continue;
+
+        if ( statfs( entry->path, &stat_buf ) < 0 ) {
+            snprintf( tmpbuf, sizeof(tmpbuf), "Cannot statfs %s", entry->path );
+            snmp_log_perror( tmpbuf );
+            continue;
+        }
+        entry->units =  stat_buf.f_bsize;
+        entry->size  =  stat_buf.f_blocks;
+        entry->used  = (stat_buf.f_blocks - stat_buf.f_bfree);
+        entry->avail =  stat_buf.f_bavail;
+        entry->inums_total = stat_buf.f_files;
+        entry->inums_avail = stat_buf.f_ffree;
+        netsnmp_fsys_calculate32(entry);
+    }
+    free(aixmnt);
+    aixmnt  = NULL;
+    aixcurr = NULL;
+}
+
diff --git a/agent/mibgroup/hardware/fsys/fsys_mntent.c b/agent/mibgroup/hardware/fsys/fsys_mntent.c
new file mode 100644
index 0000000..94d23db
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys/fsys_mntent.c
@@ -0,0 +1,262 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/hardware/fsys.h>
+
+#include <stdio.h>
+#if HAVE_MNTENT_H
+#include <mntent.h>
+#endif
+#if HAVE_SYS_MNTTAB_H
+#include <sys/mnttab.h>
+#endif
+#if HAVE_SYS_VFS_H
+#include <sys/vfs.h>
+#endif
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#if HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#if HAVE_SYS_STATVFS_H
+#include <sys/statvfs.h>
+#endif
+
+#ifdef solaris2
+#define _NETSNMP_GETMNTENT_TWO_ARGS 1
+#else
+#undef  _NETSNMP_GETMNTENT_TWO_ARGS 
+#endif
+
+    /*
+     * Handle naming differences between getmntent() APIs
+     */
+#ifdef _NETSNMP_GETMNTENT_TWO_ARGS
+    /* Two-argument form (Solaris) */
+#define NSFS_MNTENT   struct mnttab
+#define NSFS_PATH     mnt_mountp
+#define NSFS_DEV      mnt_special
+#define NSFS_TYPE     mnt_fstype
+
+#define NSFS_STATFS   statvfs
+#define NSFS_SIZE     f_frsize
+
+#else
+    /* One-argument form (everything else?) */
+#define NSFS_MNTENT   struct mntent
+#define NSFS_PATH     mnt_dir
+#define NSFS_DEV      mnt_fsname
+#define NSFS_TYPE     mnt_type
+
+#define NSFS_STATFS   statfs
+#define NSFS_SIZE     f_bsize
+
+#endif
+
+int
+_fsys_remote( char *device, int type )
+{
+    if (( type == NETSNMP_FS_TYPE_NFS) ||
+        ( type == NETSNMP_FS_TYPE_AFS))
+        return 1;
+    else
+        return 0;
+}
+
+int
+_fsys_type( char *typename )
+{
+    DEBUGMSGTL(("fsys:type", "Classifying %s\n", typename));
+
+    if ( !typename || *typename=='\0' )
+       return NETSNMP_FS_TYPE_UNKNOWN;
+
+#include "mnttypes.h"
+
+    else if ( !strcmp(typename, MNTTYPE_FFS) )
+       return NETSNMP_FS_TYPE_BERKELEY;
+    else if ( !strcmp(typename, MNTTYPE_UFS) )
+       return _NETSNMP_FS_TYPE_UFS;   /* either N_FS_TYPE_BERKELEY or N_FS_TYPE_SYSV */
+    else if ( !strcmp(typename, MNTTYPE_SYSV) )
+       return NETSNMP_FS_TYPE_SYSV;
+    else if ( !strcmp(typename, MNTTYPE_PC) ||
+              !strcmp(typename, MNTTYPE_MSDOS) )
+       return NETSNMP_FS_TYPE_FAT;
+    else if ( !strcmp(typename, MNTTYPE_HFS) )
+       return NETSNMP_FS_TYPE_HFS;
+    else if ( !strcmp(typename, MNTTYPE_MFS) )
+       return NETSNMP_FS_TYPE_MFS;
+    else if ( !strcmp(typename, MNTTYPE_NTFS) )
+       return NETSNMP_FS_TYPE_NTFS;
+    else if ( !strcmp(typename, MNTTYPE_ISO9660) ||
+              !strcmp(typename, MNTTYPE_CD9660) )
+       return NETSNMP_FS_TYPE_ISO9660;
+    else if ( !strcmp(typename, MNTTYPE_CDFS) )
+       return _NETSNMP_FS_TYPE_CDFS;   /* either N_FS_TYPE_ISO9660 or N_FS_TYPE_ROCKRIDGE */
+    else if ( !strcmp(typename, MNTTYPE_HSFS) )
+       return NETSNMP_FS_TYPE_ROCKRIDGE;
+    else if ( !strcmp(typename, MNTTYPE_NFS)  ||
+              !strcmp(typename, MNTTYPE_NFS3) ||
+              !strcmp(typename, MNTTYPE_NFS4) ||
+              !strcmp(typename, MNTTYPE_CIFS) ||  /* i.e. SMB - ?? */
+              !strcmp(typename, MNTTYPE_SMBFS)    /* ?? */ )
+       return NETSNMP_FS_TYPE_NFS;
+    else if ( !strcmp(typename, MNTTYPE_NCPFS) )
+       return NETSNMP_FS_TYPE_NETWARE;
+    else if ( !strcmp(typename, MNTTYPE_AFS) )
+       return NETSNMP_FS_TYPE_AFS;
+    else if ( !strcmp(typename, MNTTYPE_EXT2) ||
+              !strcmp(typename, MNTTYPE_EXT3) ||
+              !strcmp(typename, MNTTYPE_EXT4) ||
+              !strcmp(typename, MNTTYPE_EXT2FS) ||
+              !strcmp(typename, MNTTYPE_EXT3FS) ||
+              !strcmp(typename, MNTTYPE_EXT4FS) )
+       return NETSNMP_FS_TYPE_EXT2;
+    else if ( !strcmp(typename, MNTTYPE_FAT32) ||
+              !strcmp(typename, MNTTYPE_VFAT) )
+       return NETSNMP_FS_TYPE_FAT32;
+
+    /*
+     *  The following code covers selected filesystems
+     *    which are not covered by the HR-TYPES enumerations,
+     *    but should still be monitored.
+     *  These are all mapped into type "other"
+     *
+     *    (The systems listed are not fixed in stone,
+     *     but are simply here to illustrate the principle!)
+     */    
+    else if ( !strcmp(typename, MNTTYPE_MVFS) ||
+              !strcmp(typename, MNTTYPE_TMPFS) ||
+              !strcmp(typename, MNTTYPE_GFS) ||
+              !strcmp(typename, MNTTYPE_GFS2) ||
+              !strcmp(typename, MNTTYPE_XFS) ||
+              !strcmp(typename, MNTTYPE_JFS) ||
+              !strcmp(typename, MNTTYPE_VXFS) ||
+              !strcmp(typename, MNTTYPE_REISERFS) ||
+              !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;
+
+    /*    
+     *  All other types are silently skipped
+     */
+    else
+       return NETSNMP_FS_TYPE_IGNORE;
+}
+
+void
+netsnmp_fsys_arch_init( void )
+{
+    return;
+}
+
+void
+netsnmp_fsys_arch_load( void )
+{
+    FILE              *fp=NULL;
+#ifdef _NETSNMP_GETMNTENT_TWO_ARGS
+    struct mnttab      mtmp;
+    struct mnttab     *m = &mtmp;
+#else
+    struct mntent     *m;
+#endif
+    struct NSFS_STATFS stat_buf;
+    netsnmp_fsys_info *entry;
+    char               tmpbuf[1024];
+
+    /*
+     * Retrieve information about the currently mounted filesystems...
+     */
+    fp = fopen( ETC_MNTTAB, "r" );   /* OR setmntent()?? */
+    if ( !fp ) {
+        snprintf( tmpbuf, sizeof(tmpbuf), "Cannot open %s", ETC_MNTTAB );
+        snmp_log_perror( tmpbuf );
+        return;
+    }
+
+    /*
+     * ... and insert this into the filesystem container.
+     */
+    while 
+#ifdef _NETSNMP_GETMNTENT_TWO_ARGS
+          ((getmntent(fp, m)) == 0 )
+#else
+          ((m = getmntent(fp)) != NULL )
+#endif
+    {
+        entry = netsnmp_fsys_by_path( m->NSFS_PATH, NETSNMP_FS_FIND_CREATE );
+        if (!entry) {
+            continue;
+        }
+
+        strlcpy(entry->path, m->NSFS_PATH, sizeof(entry->path));
+        strlcpy(entry->device, m->NSFS_DEV, sizeof(entry->device));
+        entry->type = _fsys_type(m->NSFS_TYPE);
+        if (!(entry->type & _NETSNMP_FS_TYPE_SKIP_BIT))
+            entry->flags |= NETSNMP_FS_FLAG_ACTIVE;
+
+        if ( _fsys_remote( entry->device, entry->type ))
+            entry->flags |= NETSNMP_FS_FLAG_REMOTE;
+#if HAVE_HASMNTOPT
+        if (hasmntopt( m, "ro" ))
+            entry->flags |= NETSNMP_FS_FLAG_RONLY;
+#endif
+        /*
+         *  The root device is presumably bootable.
+         *  Other partitions probably aren't!
+         *
+         *  XXX - what about /boot ??
+         */
+        if ((entry->path[0] == '/') &&
+            (entry->path[1] == '\0'))
+            entry->flags |= NETSNMP_FS_FLAG_BOOTABLE;
+
+        /*
+         *  XXX - identify removeable disks
+         */
+
+        /*
+         *  Optionally skip retrieving statistics for remote mounts
+         */
+        if ( (entry->flags & NETSNMP_FS_FLAG_REMOTE) &&
+            netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+                                   NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES))
+            continue;
+
+#ifdef irix6
+        if ( NSFS_STATFS( entry->path, &stat_buf, sizeof(struct statfs), 0) < 0 )
+#else
+        if ( NSFS_STATFS( entry->path, &stat_buf ) < 0 )
+#endif
+        {
+            snprintf( tmpbuf, sizeof(tmpbuf), "Cannot statfs %s", entry->path );
+            snmp_log_perror( tmpbuf );
+            continue;
+        }
+        entry->units =  stat_buf.NSFS_SIZE;
+        entry->size  =  stat_buf.f_blocks;
+        entry->used  = (stat_buf.f_blocks - stat_buf.f_bfree);
+        /* entry->avail is currently unsigned, so protect against negative
+         * values!
+         * This should be changed to a signed field.
+         */
+        if (stat_buf.f_bavail < 0)
+            entry->avail = 0;
+        else
+            entry->avail =  stat_buf.f_bavail;
+        entry->inums_total = stat_buf.f_files;
+        entry->inums_avail = stat_buf.f_ffree;
+        netsnmp_fsys_calculate32(entry);
+    }
+    fclose( fp );
+}
+
diff --git a/agent/mibgroup/hardware/fsys/fsys_void.c b/agent/mibgroup/hardware/fsys/fsys_void.c
new file mode 100644
index 0000000..7edc344
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys/fsys_void.c
@@ -0,0 +1,24 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/hardware/fsys.h>
+
+int
+_fsys_remote( char *device, int type )
+{
+    return 0;
+}
+
+int
+_fsys_type( char *typename )
+{
+    return NETSNMP_FS_TYPE_UNKNOWN;
+}
+
+void
+netsnmp_fsys_arch_init( void )
+{ }
+
+void
+netsnmp_fsys_arch_load( void )
+{ }
diff --git a/agent/mibgroup/hardware/fsys/hw_fsys.c b/agent/mibgroup/hardware/fsys/hw_fsys.c
new file mode 100644
index 0000000..a6cd94d
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys/hw_fsys.c
@@ -0,0 +1,349 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/hardware/fsys.h>
+#ifdef HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+
+netsnmp_feature_child_of(hw_fsys_get_container, netsnmp_unused)
+
+extern void             netsnmp_fsys_arch_load( void );
+extern void             netsnmp_fsys_arch_init( void );
+static int  _fsys_load( void );
+static void _fsys_free( void );
+
+static int _fsysAutoUpdate = 0;   /* 0 means on-demand caching */
+static void _fsys_update_stats( unsigned int, void* );
+
+netsnmp_cache     *_fsys_cache     = NULL;
+netsnmp_container *_fsys_container = NULL;
+static int         _fsys_idx       = 0;
+static netsnmp_fsys_info * _fsys_create_entry( void );
+
+void init_hw_fsys( void ) {
+
+    if ( _fsys_container )
+        return;   /* Already initialised */
+
+    DEBUGMSGTL(("fsys", "Initialise Hardware FileSystem module\n"));
+
+    /*
+     * Define a container to hold the list of filesystems
+     */
+    _fsys_container = netsnmp_container_find("fsysTable:table_container");
+    if ( NULL == _fsys_container ) {
+        snmp_log( LOG_ERR, "failed to create container for fsysTable");
+        return;
+    }
+    netsnmp_fsys_arch_init( );
+
+    /*
+     * If we're sampling the file system information automatically,
+     *   then arrange for this to be triggered regularly.
+     *
+     * If we're not sampling these values regularly,
+     *   create a suitable cache handler instead.
+     */
+    if ( _fsysAutoUpdate ) {
+        DEBUGMSGTL(("fsys", "Reloading Hardware FileSystems automatically (%d)\n",
+                               _fsysAutoUpdate));
+        snmp_alarm_register( _fsysAutoUpdate, SA_REPEAT,
+                             _fsys_update_stats, NULL );
+    }
+    else {
+        _fsys_cache = netsnmp_cache_create( 5, netsnmp_fsys_load,
+                                               netsnmp_fsys_free, NULL, 0 );
+        DEBUGMSGTL(("fsys", "Reloading Hardware FileSystems on-demand (%p)\n",
+                               _fsys_cache));
+    }
+}
+
+void shutdown_hw_fsys( void ) {
+    _fsys_free();
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_HW_FSYS_GET_CONTAINER
+/*
+ *  Return the main fsys container
+ */
+netsnmp_container *netsnmp_fsys_get_container( void ) { return _fsys_container; }
+#endif /* NETSNMP_FEATURE_REMOVE_HW_FSYS_GET_CONTAINER */
+
+/*
+ *  Return the main fsys cache control structure (if defined)
+ */
+netsnmp_cache *netsnmp_fsys_get_cache( void ) { return _fsys_cache; }
+
+
+/*
+ * Wrapper routine for automatically updating fsys information
+ */
+void
+_fsys_update_stats( unsigned int clientreg, void *data )
+{
+    _fsys_free();
+    _fsys_load();
+}
+
+/*
+ * Wrapper routine for re-loading filesystem statistics on demand
+ */
+int
+netsnmp_fsys_load( netsnmp_cache *cache, void *data )
+{
+    /* XXX - check cache timeliness */
+    return _fsys_load();
+}
+
+/*
+ * Wrapper routine for releasing expired filesystem statistics
+ */
+void
+netsnmp_fsys_free( netsnmp_cache *cache, void *data )
+{
+    _fsys_free();
+}
+
+
+/*
+ * Architecture-independent processing of loading filesystem statistics
+ */
+static int
+_fsys_load( void )
+{
+    netsnmp_fsys_arch_load();
+    /* XXX - update cache timestamp */
+    return 0;
+}
+
+/*
+ * Architecture-independent release of filesystem statistics
+ */
+static void
+_fsys_free( void )
+{
+    netsnmp_fsys_info *sp;
+
+    for (sp = CONTAINER_FIRST( _fsys_container );
+         sp;
+         sp = CONTAINER_NEXT(  _fsys_container, sp )) {
+
+         sp->flags &= ~NETSNMP_FS_FLAG_ACTIVE;
+    }
+}
+
+
+netsnmp_fsys_info *netsnmp_fsys_get_first( void ) {
+    return CONTAINER_FIRST( _fsys_container );
+}
+netsnmp_fsys_info *netsnmp_fsys_get_next( netsnmp_fsys_info *this_ptr ) {
+    return CONTAINER_NEXT( _fsys_container, this_ptr );
+}
+
+/*
+ * Retrieve a filesystem entry based on the path where it is mounted,
+ *  or (optionally) insert a new one into the container
+ */
+netsnmp_fsys_info *
+netsnmp_fsys_by_path( char *path, int create_type )
+{
+    netsnmp_fsys_info *sp;
+
+    DEBUGMSGTL(("fsys:path", "Get filesystem entry (%s)\n", path));
+
+    /*
+     *  Look through the list for a matching entry
+     */
+        /* .. or use a secondary index container ?? */
+    for (sp = CONTAINER_FIRST( _fsys_container );
+         sp;
+         sp = CONTAINER_NEXT(  _fsys_container, sp )) {
+
+        if ( !strcmp( path, sp->path ))
+            return sp;
+    }
+
+    /*
+     * Not found...
+     */
+    if ( create_type == NETSNMP_FS_FIND_EXIST ) {
+        DEBUGMSGTL(("fsys:path", "No such filesystem entry\n"));
+        return NULL;
+    }
+
+    /*
+     * ... so let's create a new one
+     */
+    sp = _fsys_create_entry();
+    if (sp)
+        strlcpy(sp->path, path, sizeof(sp->path));
+    return sp;
+}
+
+
+/*
+ * Retrieve a filesystem entry based on the hardware device,
+ *   (or exported path for remote mounts).
+ * (Optionally) insert a new one into the container.
+ */
+netsnmp_fsys_info *
+netsnmp_fsys_by_device( char *device, int create_type )
+{
+    netsnmp_fsys_info *sp;
+
+    DEBUGMSGTL(("fsys:device", "Get filesystem entry (%s)\n", device));
+
+    /*
+     *  Look through the list for a matching entry
+     */
+        /* .. or use a secondary index container ?? */
+    for (sp = CONTAINER_FIRST( _fsys_container );
+         sp;
+         sp = CONTAINER_NEXT(  _fsys_container, sp )) {
+
+        if ( !strcmp( device, sp->device ))
+            return sp;
+    }
+
+    /*
+     * Not found...
+     */
+    if ( create_type == NETSNMP_FS_FIND_EXIST ) {
+        DEBUGMSGTL(("fsys:device", "No such filesystem entry\n"));
+        return NULL;
+    }
+
+    /*
+     * ... so let's create a new one
+     */
+    sp = _fsys_create_entry();
+    if (sp)
+        strlcpy(sp->device, device, sizeof(sp->device));
+    return sp;
+}
+
+
+netsnmp_fsys_info *
+_fsys_create_entry( void )
+{
+    netsnmp_fsys_info *sp;
+
+    sp = SNMP_MALLOC_TYPEDEF( netsnmp_fsys_info );
+    if ( sp ) {
+        /*
+         * Set up the index value.
+         *  
+         * All this trouble, just for a simple integer.
+         * Surely there must be a better way?
+         */
+        sp->idx.len  = 1;
+        sp->idx.oids = SNMP_MALLOC_TYPEDEF( oid );
+        sp->idx.oids[0] = ++_fsys_idx;
+    }
+
+    DEBUGMSGTL(("fsys:new", "Create filesystem entry (index = %d)\n", _fsys_idx));
+    CONTAINER_INSERT( _fsys_container, sp );
+    return sp;
+}
+
+
+/*
+ *  Convert fsys size information to 1K units
+ *    (attempting to avoid 32-bit overflow!)
+ */
+unsigned long long
+_fsys_to_K( unsigned long long size, unsigned long long units )
+{
+    int factor = 1;
+
+    if ( units == 0 ) {
+        return 0;    /* XXX */
+    } else if ( units == 1024 ) {
+        return size;
+    } else if ( units == 512 ) {      /* To avoid unnecessary division */
+        return size/2;
+    } else if ( units < 1024 ) {
+        factor = 1024 / units;   /* Assuming power of two */
+        return (size / factor);
+    } else {
+        factor = units / 1024;   /* Assuming multiple of 1K */
+        return (size * factor);
+    }
+}
+
+unsigned long long
+netsnmp_fsys_size_ull( netsnmp_fsys_info *f) {
+    if ( !f ) {
+        return 0;
+    }
+    return _fsys_to_K( f->size, f->units );
+}
+
+unsigned long long
+netsnmp_fsys_used_ull( netsnmp_fsys_info *f) {
+    if ( !f ) {
+        return 0;
+    }
+    return _fsys_to_K( f->used, f->units );
+}
+
+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;
+}
+
+#ifndef INT32_MAX
+#define INT32_MAX 0x7fffffff
+#endif
+
+#ifndef PRIu64
+#define PRIu64 "llu"
+#endif
+
+/* recalculate f->size_32, used_32, avail_32 and units_32 from f->size & comp.*/
+void
+netsnmp_fsys_calculate32(netsnmp_fsys_info *f)
+{
+    unsigned long long s = f->size;
+    unsigned shift = 0;
+
+    while (s > INT32_MAX) {
+        s = s >> 1;
+        shift++;
+    }
+
+    f->size_32 = s;
+    f->units_32 = f->units << shift;
+    f->avail_32 = f->avail >> shift;
+    f->used_32 = f->used >> shift;
+
+    DEBUGMSGTL(("fsys", "Results of 32-bit conversion: size %" PRIu64 " -> %lu;"
+		" units %" PRIu64 " -> %lu; avail %" PRIu64 " -> %lu;"
+                " used %" PRIu64 " -> %lu\n",
+		(uint64_t)f->size, f->size_32, (uint64_t)f->units, f->units_32,
+		(uint64_t)f->avail, f->avail_32, (uint64_t)f->used, f->used_32));
+}
diff --git a/agent/mibgroup/hardware/fsys/hw_fsys.h b/agent/mibgroup/hardware/fsys/hw_fsys.h
new file mode 100644
index 0000000..31f90ef
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys/hw_fsys.h
@@ -0,0 +1,2 @@
+void init_hw_fsys(void);
+void shutdown_hw_fsys( void );
diff --git a/agent/mibgroup/hardware/fsys/mnttypes.h b/agent/mibgroup/hardware/fsys/mnttypes.h
new file mode 100644
index 0000000..37ed4fb
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys/mnttypes.h
@@ -0,0 +1,187 @@
+#ifndef _NETSNMP_FSYS_MNTTYPES_H
+#define _NETSNMP_FSYS_MNTTYPES_H
+/*
+ *  Some mounts can map to one of two hrFS types
+ *    (depending on other characteristics of the system)
+ *  Note which should be used *before* defining any
+ *    type tokens which may be missing.
+ */
+
+#if (defined(BerkelyFS) && !defined(MNTTYPE_HFS)) || defined(solaris2)
+#define  _NETSNMP_FS_TYPE_UFS  NETSNMP_FS_TYPE_BERKELEY
+#else
+#define  _NETSNMP_FS_TYPE_UFS  NETSNMP_FS_TYPE_SYSV
+#endif
+
+#ifdef RockRidge
+#define  _NETSNMP_FS_TYPE_CDFS  NETSNMP_FS_TYPE_ROCKRIDGE
+#else
+#define  _NETSNMP_FS_TYPE_CDFS  NETSNMP_FS_TYPE_ISO9660
+#endif
+
+
+/*
+ *  Ensure all recognised filesystem mount type tokens are
+ *    available (even on systems where they're not used)
+ */
+#ifndef MNTTYPE_AFS
+#define MNTTYPE_AFS      "afs"
+#endif
+#ifndef MNTTYPE_CDFS
+#define MNTTYPE_CDFS     "cdfs"
+#endif
+#ifndef MNTTYPE_CD9660
+#define MNTTYPE_CD9660   "cd9660"
+#endif
+#ifndef MNTTYPE_EXT2
+#define MNTTYPE_EXT2     "ext2"
+#endif
+#ifndef MNTTYPE_EXT3
+#define MNTTYPE_EXT3     "ext3"
+#endif
+#ifndef MNTTYPE_EXT4
+#define MNTTYPE_EXT4     "ext4"
+#endif
+#ifndef MNTTYPE_EXT2FS
+#define MNTTYPE_EXT2FS   "ext2fs"
+#endif
+#ifndef MNTTYPE_EXT3FS
+#define MNTTYPE_EXT3FS   "ext3fs"
+#endif
+#ifndef MNTTYPE_EXT4FS
+#define MNTTYPE_EXT4FS   "ext4fs"
+#endif
+#ifndef MNTTYPE_FAT32
+#define MNTTYPE_FAT32    "fat32"
+#endif
+#ifndef MNTTYPE_FFS
+#define MNTTYPE_FFS      "ffs"
+#endif
+#ifndef MNTTYPE_HFS
+#define MNTTYPE_HFS      "hfs"
+#endif
+#ifndef MNTTYPE_HSFS
+#define MNTTYPE_HSFS     "hsfs"
+#endif
+#ifndef MNTTYPE_ISO9660
+#define MNTTYPE_ISO9660  "iso9660"
+#endif
+#ifndef MNTTYPE_MFS
+#define MNTTYPE_MFS      "mfs"
+#endif
+#ifndef MNTTYPE_MSDOS
+#define MNTTYPE_MSDOS    "msdos"
+#endif
+#ifndef MNTTYPE_NCPFS
+#define MNTTYPE_NCPFS    "ncpfs"
+#endif
+#ifndef MNTTYPE_NFS
+#define MNTTYPE_NFS      "nfs"
+#endif
+#ifndef MNTTYPE_NFS3
+#define MNTTYPE_NFS3     "nfs3"
+#endif
+#ifndef MNTTYPE_NFS4
+#define MNTTYPE_NFS4     "nfs4"
+#endif
+#ifndef MNTTYPE_NTFS
+#define MNTTYPE_NTFS     "ntfs"
+#endif
+#ifndef MNTTYPE_PC
+#define MNTTYPE_PC       "pc"
+#endif
+#ifndef MNTTYPE_SMBFS
+#define MNTTYPE_SMBFS    "smbfs"
+#endif
+#ifndef MNTTYPE_CIFS
+#define MNTTYPE_CIFS     "cifs"
+#endif
+#ifndef MNTTYPE_SYSV
+#define MNTTYPE_SYSV     "sysv"
+#endif
+#ifndef MNTTYPE_UFS
+#define MNTTYPE_UFS      "ufs"
+#endif
+#ifndef MNTTYPE_VFAT
+#define MNTTYPE_VFAT     "vfat"
+#endif
+
+/*
+ *  File systems to monitor, but not covered by HR-TYPES enumerations
+ */
+#ifndef MNTTYPE_MVFS
+#define MNTTYPE_MVFS     "mvfs"
+#endif
+#ifndef MNTTYPE_TMPFS
+#define MNTTYPE_TMPFS    "tmpfs"
+#endif
+#ifndef MNTTYPE_GFS
+#define MNTTYPE_GFS      "gfs"
+#endif
+#ifndef MNTTYPE_GFS2
+#define MNTTYPE_GFS2     "gfs2"
+#endif
+#ifndef MNTTYPE_XFS
+#define MNTTYPE_XFS      "xfs"
+#endif
+#ifndef MNTTYPE_JFS
+#define MNTTYPE_JFS      "jfs"
+#endif
+#ifndef MNTTYPE_VXFS
+#define MNTTYPE_VXFS      "vxfs"
+#endif
+#ifndef MNTTYPE_REISERFS
+#define MNTTYPE_REISERFS "reiserfs"
+#endif
+#ifndef MNTTYPE_LOFS
+#define MNTTYPE_LOFS     "lofs"
+#endif
+#ifndef MNTTYPE_OCFS2
+#define MNTTYPE_OCFS2    "ocfs2"
+#endif
+#ifndef MNTTYPE_CVFS
+#define MNTTYPE_CVFS     "cvfs"
+#endif
+#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
+ *    (Probably not strictly needed)
+ */
+#ifndef MNTTYPE_APP
+#define MNTTYPE_APP      "app"
+#endif
+#ifndef MNTTYPE_DEVPTS
+#define MNTTYPE_DEVPTS   "devpts"
+#endif
+#ifndef MNTTYPE_IGNORE
+#define MNTTYPE_IGNORE   "ignore"
+#endif
+#ifndef MNTTYPE_PROC
+#define MNTTYPE_PROC     "proc"
+#endif
+#ifndef MNTTYPE_SYSFS
+#define MNTTYPE_SYSFS    "sysfs"
+#endif
+#ifndef MNTTYPE_USBFS
+#define MNTTYPE_USBFS    "usbfs"
+#endif
+#ifndef MNTTYPE_BINFMT
+#define MNTTYPE_BINFMT   "binfmt_misc"
+#endif
+#ifndef MNTTYPE_RPCPIPE
+#define MNTTYPE_RPCPIPE  "rpc_pipefs"
+#endif
+
+#endif /* _NETSNMP_FSYS_MNTTYPES_H */
diff --git a/agent/mibgroup/hardware/fsys/mounts.h b/agent/mibgroup/hardware/fsys/mounts.h
new file mode 100644
index 0000000..eab65da
--- /dev/null
+++ b/agent/mibgroup/hardware/fsys/mounts.h
@@ -0,0 +1,165 @@
+#ifndef _NETSNMP_FSYS_MOUNTS_H
+#define _NETSNMP_FSYS_MOUNTS_H
+/*
+ *  Some mounts can map to one of two hrFS types
+ *    (depending on other characteristics of the system)
+ *  Note which should be used *before* defining any
+ *    type tokens which may be missing.
+ */
+
+/*
+#if (defined(BerkelyFS) && !defined(MNTTYPE_HFS)) || defined(solaris2)
+#define  _NETSNMP_FS_TYPE_UFS  NETSNMP_FS_TYPE_BERKELEY
+#else
+#define  _NETSNMP_FS_TYPE_UFS  NETSNMP_FS_TYPE_SYSV
+#endif
+
+#ifdef RockRidge
+#define  _NETSNMP_FS_TYPE_CDFS  NETSNMP_FS_TYPE_ROCKRIDGE
+#else
+#define  _NETSNMP_FS_TYPE_CDFS  NETSNMP_FS_TYPE_ISO9660
+#endif
+ */
+
+
+/*
+ *  Ensure all recognised filesystem mount type tokens are
+ *    available (even on systems where they're not used)
+ */
+#ifndef MOUNT_FFS
+#define MOUNT_FFS    "ffs"
+#endif
+#ifndef MOUNT_NFS
+#define MOUNT_NFS    "nfs"
+#endif
+#ifndef MOUNT_MFS
+#define MOUNT_MFS    "mfs"
+#endif
+#ifndef MOUNT_MSDOS
+#define MOUNT_MSDOS  "msdos"
+#endif
+#ifndef MOUNT_MSDOSFS
+#define MOUNT_MSDOSFS "msdosfs"
+#endif
+#ifndef MOUNT_AFS
+#define MOUNT_AFS    "afs"
+#endif
+#ifndef MOUNT_CD9660
+#define MOUNT_CD9660 "cd9660"
+#endif
+#ifndef MOUNT_EXT2FS
+#define MOUNT_EXT2FS "ext2fs"
+#endif
+#ifndef MOUNT_NTFS
+#define MOUNT_NTFS   "ntfs"
+#endif
+#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
+#define MNTTYPE_AFS      "afs"
+#endif
+#ifndef MNTTYPE_CDFS
+#define MNTTYPE_CDFS     "cdfs"
+#endif
+#ifndef MNTTYPE_CD9660
+#define MNTTYPE_CD9660   "cd9660"
+#endif
+#ifndef MNTTYPE_EXT2
+#define MNTTYPE_EXT2     "ext2"
+#endif
+#ifndef MNTTYPE_EXT3
+#define MNTTYPE_EXT3     "ext3"
+#endif
+#ifndef MNTTYPE_EXT2FS
+#define MNTTYPE_EXT2FS   "ext2fs"
+#endif
+#ifndef MNTTYPE_EXT3FS
+#define MNTTYPE_EXT3FS   "ext3fs"
+#endif
+#ifndef MNTTYPE_FAT32
+#define MNTTYPE_FAT32    "fat32"
+#endif
+#ifndef MNTTYPE_FFS
+#define MNTTYPE_FFS      "ffs"
+#endif
+#ifndef MNTTYPE_HFS
+#define MNTTYPE_HFS      "hfs"
+#endif
+#ifndef MNTTYPE_HSFS
+#define MNTTYPE_HSFS     "hsfs"
+#endif
+#ifndef MNTTYPE_ISO9660
+#define MNTTYPE_ISO9660  "iso9660"
+#endif
+#ifndef MNTTYPE_MFS
+#define MNTTYPE_MFS      "mfs"
+#endif
+#ifndef MNTTYPE_MSDOS
+#define MNTTYPE_MSDOS    "msdos"
+#endif
+#ifndef MNTTYPE_NCPFS
+#define MNTTYPE_NCPFS    "ncpfs"
+#endif
+#ifndef MNTTYPE_NFS
+#define MNTTYPE_NFS      "nfs"
+#endif
+#ifndef MNTTYPE_NFS3
+#define MNTTYPE_NFS3     "nfs3"
+#endif
+#ifndef MNTTYPE_NTFS
+#define MNTTYPE_NTFS     "ntfs"
+#endif
+#ifndef MNTTYPE_PC
+#define MNTTYPE_PC       "pc"
+#endif
+#ifndef MNTTYPE_REISERFS
+#define MNTTYPE_REISERFS "reiserfs"
+#endif
+#ifndef MNTTYPE_SMBFS
+#define MNTTYPE_SMBFS    "smbfs"
+#endif
+#ifndef MNTTYPE_SYSV
+#define MNTTYPE_SYSV     "sysv"
+#endif
+#ifndef MNTTYPE_UFS
+#define MNTTYPE_UFS      "ufs"
+#endif
+#ifndef MNTTYPE_VFAT
+#define MNTTYPE_VFAT     "vfat"
+#endif
+*/
+
+/*
+ *  File systems to skip
+ */
+/*
+#ifndef MNTTYPE_DEVPTS
+#define MNTTYPE_DEVPTS   "devpts"
+#endif
+#ifndef MNTTYPE_IGNORE
+#define MNTTYPE_IGNORE   "ignore"
+#endif
+#ifndef MNTTYPE_PROC
+#define MNTTYPE_PROC     "proc"
+#endif
+#ifndef MNTTYPE_SYSFS
+#define MNTTYPE_SYSFS    "sysfs"
+#endif
+#ifndef MNTTYPE_TMPFS
+#define MNTTYPE_TMPFS    "tmpfs"
+#endif
+#ifndef MNTTYPE_USBFS
+#define MNTTYPE_USBFS    "usbfs"
+#endif
+*/
+
+#endif /* _NETSNMP_FSYS_MOUNTS_H */
diff --git a/agent/mibgroup/hardware/memory.h b/agent/mibgroup/hardware/memory.h
index c0670e4..7e4e88e 100644
--- a/agent/mibgroup/hardware/memory.h
+++ b/agent/mibgroup/hardware/memory.h
@@ -3,7 +3,7 @@
 #if defined(linux)
 config_require(hardware/memory/memory_linux)
 
-#elif (defined(darwin7) || defined(darwin8) || defined(darwin9))
+#elif (defined(darwin))
 config_require(hardware/memory/memory_darwin)
 
 #elif (defined(freebsd2) || defined(freebsd3) || defined(freebsd4)  || defined(freebsd5)|| defined(freebsd6))
@@ -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/hw_mem.c b/agent/mibgroup/hardware/memory/hw_mem.c
index b18a9b8..1f4474f 100644
--- a/agent/mibgroup/hardware/memory/hw_mem.c
+++ b/agent/mibgroup/hardware/memory/hw_mem.c
@@ -3,14 +3,27 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/memory.h>
 
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_child_of(hardware_memory, netsnmp_unused)
+
+netsnmp_feature_child_of(memory_get_cache, hardware_memory)
+
 extern NetsnmpCacheLoad netsnmp_mem_arch_load;
 
 netsnmp_memory_info *_mem_head  = NULL;
 netsnmp_cache       *_mem_cache = NULL;
 
+#ifdef darwin
+/* the code in memory_darwin.c is *very* expensive */
+#define	MEMORY_CACHE_SECONDS	300
+#else
+#define	MEMORY_CACHE_SECONDS	5
+#endif
+
 void init_hw_mem( void ) {
     oid nsMemory[] = { 1, 3, 6, 1, 4, 1, 8072, 1, 31 };
-    _mem_cache = netsnmp_cache_create( 5, netsnmp_mem_arch_load, NULL,
+    _mem_cache = netsnmp_cache_create( MEMORY_CACHE_SECONDS, netsnmp_mem_arch_load, NULL,
                                           nsMemory, OID_LENGTH(nsMemory));
 }
 
@@ -87,9 +100,11 @@
 
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_MEMORY_GET_CACHE
 netsnmp_cache *netsnmp_memory_get_cache( void ) {
     return _mem_cache;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_MEMORY_GET_CACHE */
 
 int netsnmp_memory_load( void ) {
      return netsnmp_cache_check_and_reload( _mem_cache );
diff --git a/agent/mibgroup/hardware/memory/memory_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_darwin.c b/agent/mibgroup/hardware/memory/memory_darwin.c
index 4914f0c..4462c45 100644
--- a/agent/mibgroup/hardware/memory/memory_darwin.c
+++ b/agent/mibgroup/hardware/memory/memory_darwin.c
@@ -5,10 +5,14 @@
 
 #include <dirent.h>
 #include <unistd.h>
-#include <mach/mach_host.h>
+
 #include <sys/stat.h>
 #include <sys/sysctl.h>
 
+#include <mach/mach.h>
+#include <mach/mach_time.h>
+#include <CoreFoundation/CoreFoundation.h>
+#include <IOKit/ps/IOPowerSources.h>
 
 /*
  * Retained from UCD implementation
@@ -44,8 +48,7 @@
      mach_port = mach_host_self();
      error = host_processor_sets(mach_port, &psets, &pcnt);
      if (error != KERN_SUCCESS) {
-        snprintf(errmsg, sizeof(errmsg), "Error in host_processor_sets(): %s\n", mach_error_string(error));
-        snmp_log_perror(errmsg);
+        snmp_log(LOG_ERR, "Error in host_processor_sets(): %s\n", mach_error_string(error));
         return(0);
      }
 
@@ -75,7 +78,11 @@
             for (address = 0;; address += size) {
                 /* Get memory region. */
                 count = VM_REGION_EXTENDED_INFO_COUNT; 
-                if (vm_region(tasks[j], &address, &size, VM_REGION_EXTENDED_INFO, (vm_region_extended_info_t)&info, &count, &object_name) != KERN_SUCCESS) {
+#if defined(__ppc64__) || defined(__x86_64__)
+                if (vm_region_64(tasks[j], &address, &size, VM_REGION_EXTENDED_INFO, &info, &count, &object_name) != KERN_SUCCESS) {
+#else
+                if (vm_region(tasks[j], &address, &size, VM_REGION_EXTENDED_INFO, &info, &count, &object_name) != KERN_SUCCESS) {
+#endif
                     /* No more memory regions. */
                     break;
                 }
diff --git a/agent/mibgroup/hardware/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
new file mode 100644
index 0000000..b88d915
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors.h
@@ -0,0 +1,17 @@
+config_require(hardware/sensors/hw_sensors)
+
+#if defined(solaris2)
+# if defined(HAVE_PICL_H)
+config_require(hardware/sensors/picld_sensors)
+# else
+config_require(hardware/sensors/kstat_sensors)
+# endif
+#else
+#  if defined(NETSNMP_USE_SENSORS_V3)
+config_require(hardware/sensors/lmsensors_v3)
+#  else
+config_require(hardware/sensors/lmsensors_v2)
+#  endif
+#endif
+
+/* config_require(hardware/sensors/dummy_sensors) */
diff --git a/agent/mibgroup/hardware/sensors/dummy_sensors.c b/agent/mibgroup/hardware/sensors/dummy_sensors.c
new file mode 100644
index 0000000..8d2555d
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors/dummy_sensors.c
@@ -0,0 +1,60 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/hardware/sensors.h>
+
+
+void netsnmp_sensor_arch_init( void ) {
+    /* Nothing to do */
+    DEBUGMSGTL(("sensors:arch", "Initialise Dummy Sensors module\n"));
+}
+
+int
+netsnmp_sensor_arch_load(netsnmp_cache *cache, void *vp) {
+    time_t now;
+    struct tm                  *tm;
+    netsnmp_sensor_info        *sp;
+
+    time(&now);
+    tm = localtime(&now);
+
+    DEBUGMSGTL(("sensors:arch", "Reload Dummy Sensors module\n"));
+
+    /* First pseudo-sensor - slowly-rising temperature */
+    sp = sensor_by_name( "minute", NETSNMP_SENSOR_TYPE_TEMPERATURE );
+    sp->value = tm->tm_min;
+    snprintf( sp->descr, 256, "Minute-based pseudo-sensor - slowly-rising temperature" );
+    sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+
+    /* Second pseudo-sensor - quickly-rising temperature */
+    sp = sensor_by_name( "second", NETSNMP_SENSOR_TYPE_TEMPERATURE );
+    sp->value = tm->tm_sec;
+    snprintf( sp->descr, 256, "Second-based pseudo-sensor - quickly-rising temperature" );
+    sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+
+    /* Third pseudo-sensor - annual fan speed */
+    sp = sensor_by_name( "year", NETSNMP_SENSOR_TYPE_RPM );
+    sp->value = tm->tm_year + 1900;
+    snprintf( sp->descr, 256, "RPM pseudo-sensor - annual fan speed" );
+    sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+
+    /* Fourth pseudo-sensor - daily voltage */
+    sp = sensor_by_name( "day", NETSNMP_SENSOR_TYPE_VOLTAGE_DC );
+    sp->value = tm->tm_mday-20;
+    snprintf( sp->descr, 256, "Day-based pseudo-sensor - positive or negative voltage" );
+    sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+
+    /* Fifth pseudo-sensor - monthly voltage */
+    sp = sensor_by_name( "month", NETSNMP_SENSOR_TYPE_VOLTAGE_DC );
+    sp->value = tm->tm_mon;
+    snprintf( sp->descr, 256, "Month-based pseudo-sensor - positive voltage" );
+    sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+
+    /* Sixth pseudo-sensor - annual daily something */
+    sp = sensor_by_name( "yday", NETSNMP_SENSOR_TYPE_OTHER );
+    sp->value = tm->tm_yday;
+    snprintf( sp->descr, 256, "Day-based pseudo-sensor - annual something" );
+    sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+
+    return 0;
+}
diff --git a/agent/mibgroup/hardware/sensors/dummy_sensors.h b/agent/mibgroup/hardware/sensors/dummy_sensors.h
new file mode 100644
index 0000000..b5ffb4d
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors/dummy_sensors.h
@@ -0,0 +1 @@
+config_require(hardware/sensors/hw_sensors)
diff --git a/agent/mibgroup/hardware/sensors/hw_sensors.c b/agent/mibgroup/hardware/sensors/hw_sensors.c
new file mode 100644
index 0000000..1a01645
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors/hw_sensors.c
@@ -0,0 +1,189 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/hardware/sensors.h>
+
+
+extern NetsnmpCacheLoad netsnmp_sensor_arch_load;
+extern void             netsnmp_sensor_arch_init( void );
+static int  _sensor_load( void );
+static void _sensor_free( void );
+
+static int _sensorAutoUpdate = 0;   /* 0 means on-demand caching */
+static void _sensor_update_stats( unsigned int, void* );
+
+netsnmp_cache     *_sensor_cache     = NULL;
+netsnmp_container *_sensor_container = NULL;
+static int         _sensor_idx       = 0;
+
+void init_hw_sensors( void ) {
+
+    if ( _sensor_container )
+        return;   /* Already initialised */
+
+    DEBUGMSGTL(("sensors", "Initialise Hardware Sensors module\n"));
+
+    /*
+     * Define a container to hold the basic list of sensors
+     * The four LM-SENSOR-MIB containers will be created in
+     *  the relevant initialisation routine(s)
+     */
+    _sensor_container = netsnmp_container_find("sensorTable:table_container");
+    if ( NULL == _sensor_container ) {
+        snmp_log( LOG_ERR, "failed to create container for sensorTable");
+        return;
+    }
+    netsnmp_sensor_arch_init( );
+
+    /*
+     * If we're sampling the sensor information automatically,
+     *   then arrange for this to be triggered regularly.
+     *
+     * If we're not sampling these values regularly,
+     *   create a suitable cache handler instead.
+     */
+    if ( _sensorAutoUpdate ) {
+        DEBUGMSGTL(("sensors", "Reloading Hardware Sensors automatically (%d)\n",
+                               _sensorAutoUpdate));
+        snmp_alarm_register( _sensorAutoUpdate, SA_REPEAT,
+                             _sensor_update_stats, NULL );
+    }
+    else {
+        _sensor_cache = netsnmp_cache_create( 5, netsnmp_sensor_load,
+                                                 netsnmp_sensor_free, NULL, 0 );
+        DEBUGMSGTL(("sensors", "Reloading Hardware Sensors on-demand (%p)\n",
+                               _sensor_cache));
+    }
+}
+
+void shutdown_hw_sensors( void ) {
+    _sensor_free();
+}
+
+/*
+ *  Return the main sensor container
+ */
+netsnmp_container *get_sensor_container( void ) { return _sensor_container; }
+
+/*
+ *  Return the main sensor cache control structure (if defined)
+ */
+netsnmp_cache *get_sensor_cache( void ) { return _sensor_cache; }
+
+
+/*
+ * Wrapper routine for automatically updating sensor statistics
+ */
+void
+_sensor_update_stats( unsigned int clientreg, void *data )
+{
+    _sensor_free();
+    _sensor_load();
+}
+
+/*
+ * Wrapper routine for re-loading sensor statistics on demand
+ */
+int
+netsnmp_sensor_load( netsnmp_cache *cache, void *data )
+{
+    return _sensor_load();
+}
+
+/*
+ * Wrapper routine for releasing expired sensor statistics
+ */
+void
+netsnmp_sensor_free( netsnmp_cache *cache, void *data )
+{
+    _sensor_free();
+}
+
+
+/*
+ * Architecture-independent processing of loading sensor statistics
+ */
+static int
+_sensor_load( void )
+{
+    netsnmp_sensor_arch_load( NULL, NULL );
+    return 0;
+}
+
+/*
+ * Architecture-independent release of sensor statistics
+ */
+static void
+_sensor_free( void )
+{
+    netsnmp_sensor_info *sp;
+
+    for (sp = CONTAINER_FIRST( _sensor_container );
+         sp;
+         sp = CONTAINER_NEXT(  _sensor_container, sp )) {
+
+         sp->flags &= ~ NETSNMP_SENSOR_FLAG_ACTIVE;
+    }
+}
+
+
+/*
+ * Retrieve a sensor entry by name,
+ *  or (optionally) insert a new one into the container
+ */
+netsnmp_sensor_info *
+sensor_by_name( const char *name, int create_type )
+{
+    netsnmp_sensor_info *sp;
+
+    DEBUGMSGTL(("sensors:name", "Get sensor entry (%s)\n", name));
+
+    /*
+     *  Look through the list for a matching entry
+     */
+        /* .. or use a secondary index container ?? */
+    for (sp = CONTAINER_FIRST( _sensor_container );
+         sp;
+         sp = CONTAINER_NEXT(  _sensor_container, sp )) {
+
+        if ( !strcmp( name, sp->name ))
+            return sp;
+    }
+
+    /*
+     * Not found...
+     */
+    if ( create_type == NETSNMP_SENSOR_FIND_EXIST ) {
+        DEBUGMSGTL(("sensors:name", "No such sensor entry\n"));
+        return NULL;
+    }
+
+    /*
+     * ... so let's create a new one, using the type supplied
+     */
+    sp = SNMP_MALLOC_TYPEDEF( netsnmp_sensor_info );
+    if ( sp ) {
+        if (strlen(name) >= sizeof(sp->name)) {
+            snmp_log(LOG_ERR, "Sensor name is too large: %s\n", name);
+            free(sp);
+            return NULL;
+        }
+        strcpy( sp->name, name );
+        sp->type = create_type;
+        /*
+         * Set up the index value.
+         *  
+         * All this trouble, just for a simple integer.
+         * Surely there must be a better way?
+         */
+        sp->idx.len  = 1;
+        sp->idx.oids = SNMP_MALLOC_TYPEDEF( oid );
+        sp->idx.oids[0] = ++_sensor_idx;
+    }
+
+    DEBUGMSGTL(("sensors:name", "Create sensor entry (type = %d, index = %d\n",
+                                 create_type, _sensor_idx));
+    CONTAINER_INSERT( _sensor_container, sp );
+    return sp;
+}
+
diff --git a/agent/mibgroup/hardware/sensors/hw_sensors.h b/agent/mibgroup/hardware/sensors/hw_sensors.h
new file mode 100644
index 0000000..17eccf5
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors/hw_sensors.h
@@ -0,0 +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
new file mode 100644
index 0000000..62bbb10
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors/kstat_sensors.c
@@ -0,0 +1,161 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/hardware/sensors.h>
+
+#include <time.h>
+
+#include <kstat.h>
+#include </usr/platform/sun4u/include/sys/envctrl.h>
+
+void netsnmp_sensor_arch_init( void ) {
+    DEBUGMSGTL(("sensors:arch", "Initialise KStat Sensors module\n"));
+}
+
+
+int
+netsnmp_sensor_arch_load(netsnmp_cache *cache, void *vp) {
+    netsnmp_sensor_info        *sp;
+
+    int         i;
+    const char *fantypes[]={"CPU","PWR","AFB"};
+    char        name[ 256 ];
+
+    kstat_ctl_t    *kc;
+    kstat_t        *kp;
+    envctrl_fan_t  *fan_info;
+    envctrl_ps_t   *power_info;
+    envctrl_encl_t *enc_info;
+
+
+    DEBUGMSGTL(("sensors:arch", "Reload KStat Sensors module\n"));
+
+    kc = kstat_open();
+    if ( kc == 0) {
+        DEBUGMSGTL(("sensors:arch", "Couldn't open kstat\n"));
+        return 1;
+    }
+    
+
+    /*
+     * Retrieve fan information
+     */
+    kp = kstat_lookup( kc, ENVCTRL_MODULE_NAME, 0, ENVCTRL_KSTAT_FANSTAT);
+    if (( kp == 0 ) || (kstat_read( kc, kp, 0 ) == -1 )) {
+        DEBUGMSGTL(("sensors:arch", "No fan information\n"));
+    } else {
+        fan_info = (envctrl_fan_t *)kp->ks_data;        
+        for (i=0; i<kp->ks_ndata; i++) {
+            memset( name, 0, 256 );
+            snprintf( name, 255, "%s%d", fantypes[fan_info->type], fan_info->instance );
+
+            sp = sensor_by_name( name, NETSNMP_SENSOR_TYPE_RPM );
+            if ( sp ) {
+                sp->value = fan_info->fanspeed;
+                sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+                snprintf( sp->descr, 255, "fan type %s number %d",
+                          fantypes[fan_info->type], fan_info->instance );
+            }
+    
+            fan_info++;
+        }
+    }
+
+
+    /*
+     * Retrieve Power Supply information
+     */
+    kp = kstat_lookup( kc, ENVCTRL_MODULE_NAME, 0, ENVCTRL_KSTAT_PSNAME);
+    if (( kp == 0 ) || (kstat_read( kc, kp, 0 ) == -1 )) {
+        DEBUGMSGTL(("sensors:arch", "No PSU information\n"));
+    } else {
+        power_info = (envctrl_ps_t *)kp->ks_data;        
+        for (i=0; i<kp->ks_ndata; i++) {
+            memset( name, 0, 256 );
+            snprintf( name, 255, "PSU%d", power_info->instance );
+
+            sp = sensor_by_name( name, NETSNMP_SENSOR_TYPE_TEMPERATURE);
+            if ( sp ) {
+                sp->value = power_info->ps_tempr;
+                sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+                snprintf( sp->descr, 255, "power supply %d", power_info->instance );
+            }
+    
+            power_info++;
+        }
+    }
+
+
+    /*
+     * Retrieve Enclosure information
+     */
+    kp = kstat_lookup( kc, ENVCTRL_MODULE_NAME, 0, ENVCTRL_KSTAT_ENCL);
+    if (( kp == 0 ) || (kstat_read( kc, kp, 0 ) == -1 )) {
+        DEBUGMSGTL(("sensors:arch", "No enclosure information\n"));
+    } else {
+        enc_info = (envctrl_encl_t *)kp->ks_data;        
+        for (i=0; i<kp->ks_ndata; i++) {
+            /*
+             * The enclosure information covers several different types of sensor
+             */
+            switch ( enc_info->type ) {
+            case ENVCTRL_ENCL_FSP:
+                DEBUGMSGTL(("sensors:arch:detail", "Enclosure Front Panel\n"));
+                sp = sensor_by_name( "FSP", NETSNMP_SENSOR_TYPE_OTHER);
+                if ( sp ) {
+                    sp->value = enc_info->value;
+                    sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+                }
+                break;
+                
+            case ENVCTRL_ENCL_AMBTEMPR:
+                DEBUGMSGTL(("sensors:arch:detail", "Enclosure Ambient Temperature\n"));
+                sp = sensor_by_name( "Ambient", NETSNMP_SENSOR_TYPE_TEMPERATURE);
+                if ( sp ) {
+                    sp->value = enc_info->value;
+                    sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+                }
+                break;
+
+            case ENVCTRL_ENCL_CPUTEMPR:
+                DEBUGMSGTL(("sensors:arch:detail", "Enclosure CPU Temperature\n"));
+                memset( name, 0, 256 );
+                snprintf( name, 255, "CPU%d", enc_info->instance );
+                sp = sensor_by_name( name, NETSNMP_SENSOR_TYPE_TEMPERATURE);
+                if ( sp ) {
+                    sp->value = enc_info->value;
+                    sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+                    snprintf( sp->descr, 255, "CPU%d temperature", enc_info->instance );
+                }
+                break;
+
+            case ENVCTRL_ENCL_BACKPLANE4:
+                DEBUGMSGTL(("sensors:arch:detail", "Enclosure Backplane4\n"));
+                sp = sensor_by_name( "Backplane4", NETSNMP_SENSOR_TYPE_OTHER);
+                if ( sp ) {
+                    sp->value = enc_info->value;
+                    sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+                }
+                break;
+                
+            case ENVCTRL_ENCL_BACKPLANE8:
+                DEBUGMSGTL(("sensors:arch:detail", "Enclosure Backplane4\n"));
+                sp = sensor_by_name( "Backplane4", NETSNMP_SENSOR_TYPE_OTHER);
+                if ( sp ) {
+                    sp->value = enc_info->value;
+                    sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+                }
+                break;
+
+            default:    
+                DEBUGMSGTL(("sensors:arch:detail", "Unrecognised Enclosure entry (%d)n",
+                                                    enc_info->type));
+            }
+
+            enc_info++;
+        }
+    }
+
+    kstat_close(kc);
+    return 0;
+}
diff --git a/agent/mibgroup/hardware/sensors/kstat_sensors.h b/agent/mibgroup/hardware/sensors/kstat_sensors.h
new file mode 100644
index 0000000..b5ffb4d
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors/kstat_sensors.h
@@ -0,0 +1 @@
+config_require(hardware/sensors/hw_sensors)
diff --git a/agent/mibgroup/hardware/sensors/lmsensors_v2.c b/agent/mibgroup/hardware/sensors/lmsensors_v2.c
new file mode 100644
index 0000000..a63f140
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors/lmsensors_v2.c
@@ -0,0 +1,74 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/hardware/sensors.h>
+
+#include <time.h>
+#include <sensors/sensors.h>
+
+void netsnmp_sensor_arch_init( void ) {
+    FILE *fp = fopen("/etc/sensors.conf", "r");
+    DEBUGMSGTL(("sensors:arch", "Initialise LM Sensors module\n"));
+    sensors_init( fp );
+}
+
+int
+netsnmp_sensor_arch_load(netsnmp_cache *cache, void *vp) {
+    netsnmp_sensor_info        *sp;
+    const sensors_chip_name    *chip;
+    const sensors_feature_data *data;
+    int             chip_nr = 0;
+
+    DEBUGMSGTL(("sensors:arch", "Reload LM Sensors module\n"));
+    while ((chip = sensors_get_detected_chips(&chip_nr))) {
+	int             a = 0;
+	int             b = 0;
+
+        while ((data = sensors_get_all_features(*chip, &a, &b))) {
+            DEBUGMSGTL(("sensors:arch:detail", "get_all_features (%d, %d)\n", a, b));
+            char           *label = NULL;
+            double          val;
+            int             type = NETSNMP_SENSOR_TYPE_OTHER;
+
+            if ((data->mode & SENSORS_MODE_R) &&
+                (data->mapping == SENSORS_NO_MAPPING) &&
+                !sensors_get_label(*chip, data->number, &label) &&
+                !sensors_get_feature(*chip, data->number, &val)) {
+
+                DEBUGMSGTL(("sensors:arch:detail", "%s = %f\n", label, val));
+                /*
+                 * Determine the type of sensor from the description.
+                 *
+                 * If the text being looked for below is not in the label of a
+                 * given sensor (e.g., the temp1 sensor has been labeled 'CPU'
+                 * rather than 'CPU temp') it will be categorised as OTHER.
+                 */
+                if (strstr(label, "V")) {
+                    type = NETSNMP_SENSOR_TYPE_VOLTAGE_DC;
+                }
+                if (strstr(label, "fan") || strstr(label, "Fan")) {
+                    type = NETSNMP_SENSOR_TYPE_RPM;
+                }
+                if (strstr(label, "temp") || strstr(label, "Temp")) {
+                    type = NETSNMP_SENSOR_TYPE_TEMPERATURE;
+                }
+
+                /*
+                 * Use this type to create a new sensor entry
+                 *  (inserting it in the appropriate sub-containers)
+                 */
+                sp = sensor_by_name( label, type );
+                if ( sp ) {
+                    sp->value = val;
+                    sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+                }
+            }
+	    if (label) {
+		free(label);
+		label = NULL;
+	    }
+        } /* end while data */
+    } /* end while chip */
+
+    return 0;
+}
diff --git a/agent/mibgroup/hardware/sensors/lmsensors_v2.h b/agent/mibgroup/hardware/sensors/lmsensors_v2.h
new file mode 100644
index 0000000..b5ffb4d
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors/lmsensors_v2.h
@@ -0,0 +1 @@
+config_require(hardware/sensors/hw_sensors)
diff --git a/agent/mibgroup/hardware/sensors/lmsensors_v3.c b/agent/mibgroup/hardware/sensors/lmsensors_v3.c
new file mode 100644
index 0000000..e34da19
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors/lmsensors_v3.c
@@ -0,0 +1,102 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/hardware/sensors.h>
+
+#include <time.h>
+#include <sensors/sensors.h>
+
+
+void netsnmp_sensor_arch_init( void ) {
+    FILE *fp = fopen("/etc/sensors.conf", "r");
+    DEBUGMSGTL(("sensors:arch", "Initialise v3 LM Sensors module\n"));
+    sensors_init( fp );
+}
+
+int
+netsnmp_sensor_arch_load(netsnmp_cache *cache, void *vp) {
+    netsnmp_sensor_info        *sp;
+    const sensors_chip_name    *chip;
+    const sensors_feature      *data;
+    const sensors_subfeature   *data2;
+    int             chip_nr = 0;
+
+    DEBUGMSGTL(("sensors:arch", "Reload v3 LM Sensors module\n"));
+    while ((chip = sensors_get_detected_chips( NULL, &chip_nr))) {
+	int             a = 0;
+
+        while ((data = sensors_get_features( chip, &a))) {
+	    int             b = 0;
+
+            DEBUGMSGTL(("sensors:arch:detail", "get_features (%s, %d)\n", data->name, data->number));
+
+            while ((data2 = sensors_get_all_subfeatures( chip, data, &b))) {
+                char           *label = NULL;
+                double          val = 0;
+                int             type = NETSNMP_SENSOR_TYPE_OTHER;
+
+                DEBUGMSGTL(("sensors:arch:detail", "  get_subfeatures (%s, %d)\n", data2->name, data2->number));
+                /*
+                 * Check the type of this subfeature,
+                 *   concentrating on the main "input" measurements.
+                 */
+                switch ( data2->type ) {
+                case SENSORS_SUBFEATURE_IN_INPUT:
+                    type = NETSNMP_SENSOR_TYPE_VOLTAGE_DC;
+                    break;
+                case SENSORS_SUBFEATURE_FAN_INPUT:
+                    type = NETSNMP_SENSOR_TYPE_RPM;
+                    break;
+                case SENSORS_SUBFEATURE_TEMP_INPUT:
+                    type = NETSNMP_SENSOR_TYPE_TEMPERATURE;
+                    break;
+                case SENSORS_SUBFEATURE_VID:
+                    type = NETSNMP_SENSOR_TYPE_VOLTAGE_DC;
+                    break;
+                default:
+                    /* Skip everything other than these basic sensor features - ??? */
+                    DEBUGMSGTL(("sensors:arch:detail", "  Skip type %x\n", data2->type));
+                    continue;
+                }
+            
+                /*
+                 * Get the name and value of this subfeature
+                 */
+/*
+                if (!(label = sensors_get_label(chip, data))) {
+                    DEBUGMSGTL(("sensors:arch:detail", "  Can't get name (%s)\n", label));
+                    continue;
+                }
+                if (sensors_get_value(chip, data2->number, &val) < 0) {
+                    DEBUGMSGTL(("sensors:arch:detail", "  Can't get value (%f)\n", val));
+                    continue;
+                }
+*/
+                if (!(label = sensors_get_label(chip, data)) ||
+                     (sensors_get_value(chip, data2->number, &val) < 0)) {
+                    DEBUGMSGTL(("sensors:arch:detail", "  Can't get name/value (%s, %f)\n", label, val));
+                    free(label);
+                    label = NULL;
+                    continue;
+                }
+                DEBUGMSGTL(("sensors:arch:detail", "%s = %f\n", label, val));
+
+                /*
+                 * Use this type to create a new sensor entry
+                 *  (inserting it in the appropriate sub-containers)
+                 */
+                sp = sensor_by_name( label, type );
+                if ( sp ) {
+                    sp->value = val;
+                    sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+                }
+	        if (label) {
+		    free(label);
+		    label = NULL;
+	        }
+            } /* end while data2 */
+        } /* end while data */
+    } /* end while chip */
+
+    return 0;
+}
diff --git a/agent/mibgroup/hardware/sensors/lmsensors_v3.h b/agent/mibgroup/hardware/sensors/lmsensors_v3.h
new file mode 100644
index 0000000..b5ffb4d
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors/lmsensors_v3.h
@@ -0,0 +1 @@
+config_require(hardware/sensors/hw_sensors)
diff --git a/agent/mibgroup/hardware/sensors/picld_sensors.c b/agent/mibgroup/hardware/sensors/picld_sensors.c
new file mode 100644
index 0000000..a4617b2
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors/picld_sensors.c
@@ -0,0 +1,334 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/hardware/sensors.h>
+
+#include <time.h>
+
+#include <picl.h>
+
+void netsnmp_sensor_arch_init( void ) {
+    DEBUGMSGTL(("sensors:arch", "Initialise PICLd Sensors module\n"));
+    picl_initialize();
+}
+
+
+/*
+ * Handle a numeric-valued sensor
+ */
+static int
+read_num_sensor( picl_nodehdl_t childh, const char *propval, float *value )
+{
+    picl_nodehdl_t  sensorh;
+    picl_propinfo_t sensor_info;
+    picl_errno_t    error_code;
+
+    union valu {
+        char buf[PICL_PROPSIZE_MAX];
+        uint32_t us4;
+        uint16_t us2;
+        int32_t is4;
+        int16_t is2;
+        float f;
+    } val;
+
+    /*
+     *  Retrieve the specified sensor information and value
+     */
+    error_code = picl_get_propinfo_by_name(childh, propval, &sensor_info, &sensorh);
+    if ( error_code != PICL_SUCCESS ) {
+        DEBUGMSGTL(("sensors:arch:detail", "sensor info lookup failed (%d)\n",
+                                            error_code));
+        return( error_code );
+    }
+
+    error_code = picl_get_propval(sensorh, &val.buf, sensor_info.size);
+    if ( error_code != PICL_SUCCESS ) {
+        DEBUGMSGTL(("sensors:arch:detail", "sensor value lookup failed (%d)\n",
+                                            error_code));
+        return( error_code );
+    }
+
+    /*
+     *  Check the validity (type and size) of this value
+     */
+    if ( sensor_info.type == PICL_PTYPE_FLOAT ) {
+        *value = val.f;
+    } else if ( sensor_info.type == PICL_PTYPE_UNSIGNED_INT ) {
+        /* 16-bit or 32-bit unsigned integers */
+        if ( sensor_info.size == 2 ) {
+            *value = val.us2;
+        } else if ( sensor_info.size == 4 ) { 
+            *value = val.us4;
+        } else {
+            DEBUGMSGTL(("sensors:arch:detail", "unsigned integer (%d bit)\n",
+                                                sensor_info.size * 8));
+            return PICL_FAILURE;
+        }
+    } else if ( sensor_info.type == PICL_PTYPE_INT ) {
+        /* 16-bit or 32-bit signed integers */
+        if ( sensor_info.size == 2 ) {
+            *value = val.is2;
+        } else if ( sensor_info.size == 4 ) { 
+            *value = val.is4;
+        } else {
+            DEBUGMSGTL(("sensors:arch:detail", "signed integer (%d bit)\n",
+                                                sensor_info.size * 8));
+            return PICL_FAILURE;
+        }
+    } else {
+        DEBUGMSGTL(("sensors:arch:detail", "unrecognised type (%d)\n",
+                                            sensor_info.type));
+        return PICL_FAILURE;
+    }
+
+    return error_code;
+}
+
+static int
+process_num_sensor( picl_nodehdl_t childh, const char *propname, const char *propval, int typ )
+{
+    netsnmp_sensor_info        *sp;
+    float                       value;
+    picl_errno_t    error_code;
+
+    sp = sensor_by_name( propname, typ );
+    if ( !sp ) {
+         return -1;
+    }
+
+    error_code = read_num_sensor( childh, propval, &value );
+    if ( error_code == PICL_SUCCESS ) {
+        sp->value = value;
+        sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+    } else {
+        DEBUGMSGTL(("sensors:arch:detail", "Failed to read %s sensor value (%d)\n",
+                                            propname, error_code));
+        return -1;
+    }
+    return 0;
+}
+
+
+
+/*
+ *    Handle an enumeration-valued sensor
+ */
+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, const char **options )
+{
+    picl_nodehdl_t  sensorh;
+    picl_propinfo_t sensor_info;
+    picl_errno_t    error_code;
+    char            state[PICL_PROPSIZE_MAX];
+    int             i;
+
+    /*
+     *  Retrieve the specified sensor information and value
+     */
+    error_code = picl_get_propinfo_by_name(childh, "State", &sensor_info, &sensorh);
+    if ( error_code != PICL_SUCCESS ) {
+        DEBUGMSGTL(("sensors:arch:detail", "sensor info lookup failed (%d)\n",
+                                            error_code));
+        return( error_code );
+    }
+
+    error_code = picl_get_propval(sensorh, state, sensor_info.size);
+    if ( error_code != PICL_SUCCESS ) {
+        DEBUGMSGTL(("sensors:arch:detail", "sensor value lookup failed (%d)\n",
+                                            error_code));
+        return( error_code );
+    }
+
+    /*
+     * Try to find a matching entry in the list of options.
+     * Note that some platforms may use upper or lower case
+     *   versions of these enumeration values
+     *  (so the checks are case insensitive)
+     */
+    *value = 99;    /* Dummy value */
+    for ( i=0;  options[i] != NULL; i++ ) {
+        if (strncasecmp(state, options[i], strlen(options[i])) == 0) {
+            *value = i;
+            return 0;
+        }
+    }
+    
+    DEBUGMSGTL(("sensors:arch:detail", "Enumeration state %s not matched\n",
+                                        state));
+    return 0;  /* Or an error ? */
+}
+
+static int
+process_enum_sensor( picl_nodehdl_t childh, const char *propname, int typ, const char **options )
+{
+    netsnmp_sensor_info        *sp;
+    float                       value;
+    picl_errno_t    error_code;
+
+    sp = sensor_by_name( propname, typ );
+    if ( !sp ) {
+         return -1;
+    }
+
+    error_code = read_enum_sensor( childh, &value, options );
+    if ( error_code == PICL_SUCCESS ) {
+        sp->value = value;
+        sp->flags|= NETSNMP_SENSOR_FLAG_ACTIVE;
+    } else {
+        DEBUGMSGTL(("sensors:arch:detail", "Failed to read %s sensor value (%d)\n",
+                                            propname, error_code));
+        return -1;
+    }
+    return 0;
+}
+
+
+
+/*
+ *  Recursively walk through the tree of sensors
+ */
+static int
+process_sensors( int level, picl_nodehdl_t nodeh ) {
+    picl_nodehdl_t childh, nexth;
+    char           propname[  PICL_PROPNAMELEN_MAX  ];
+    char           propclass[ PICL_CLASSNAMELEN_MAX ];
+    picl_errno_t   error_code;
+
+    level++;
+    DEBUGMSGTL(("sensors:arch:detail", "process_sensors - level %d\n", level));
+
+    /* Look up the first child node at this level */
+    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",
+                                            error_code));
+        return( error_code );
+    }
+
+    /* Step through the child nodes, retrieving the name and class of each one */
+    while ( error_code == PICL_SUCCESS ) {
+        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 */
+            DEBUGMSGTL(("sensors:arch:detail", "get property name failed (%d)\n",
+                                                error_code));
+            return( error_code );
+        }
+
+        error_code = picl_get_propval_by_name( childh, PICL_PROP_CLASSNAME,
+                                               propclass, sizeof(propclass)-1);
+        if ( error_code != PICL_SUCCESS ) {
+            /* The Classless Society */
+            DEBUGMSGTL(("sensors:arch:detail", "get property class failed (%d)\n",
+                                                error_code));
+            return( error_code );
+        }
+
+        DEBUGMSGTL(("sensors:arch:detail", "Name: %s, Class %s\n",
+                                            propname, propclass ));
+
+
+        /*
+         *  Three classes represent further groups of sensors, etc.
+         *  Call 'process_sensors' recursively to handle this next level
+         */
+        if (( strstr( propclass, "picl"    )) ||
+            ( strstr( propclass, "frutree" )) ||
+            ( strstr( propclass, "obp"     ))) {
+            process_sensors( level, childh );
+        }
+        /*
+         *  Otherwise retrieve the value appropriately based on the
+         *     class of the sensor.
+         *
+         *  We need to specify the name of the PICL property to retrieve
+         *     for this class of sensor, and the Net-SNMP sensor type.
+         */
+        else if ( strstr( propclass, "fan-tachometer" )) {
+            process_num_sensor( childh, propname, "AtoDSensorValue",
+                                                   NETSNMP_SENSOR_TYPE_RPM );
+        } else if ( strstr( propclass, "fan" )) {
+            process_num_sensor( childh, propname, "Speed",
+                                                   NETSNMP_SENSOR_TYPE_RPM );
+        } else if ( strstr( propclass, "temperature-sensor" )) {
+            process_num_sensor( childh, propname, "Temperature",
+                                                   NETSNMP_SENSOR_TYPE_TEMPERATURE );
+        } else if ( strstr( propclass, "voltage-sensor" )) {
+            process_num_sensor( childh, propname, "Voltage",
+                                          /* ?? */ NETSNMP_SENSOR_TYPE_VOLTAGE_DC );
+        } else if ( strstr( propclass, "digital-sensor" )) {
+            process_num_sensor( childh, propname, "AtoDSensorValue",
+                                          /* ?? */ NETSNMP_SENSOR_TYPE_VOLTAGE_DC );
+            /*
+             * Enumeration-valued sensors use a fixed PICL property ("State"),
+             *   but take a list of the values appropriate for that sensor,
+             *   as well as the Net-SNMP sensor type.
+             */
+        } else if ( strstr( propclass, "switch" )) {
+            process_enum_sensor( childh, propname, NETSNMP_SENSOR_TYPE_OTHER,
+                                                   switch_settings );
+        } else if ( strstr( propclass, "led" )) {
+            process_enum_sensor( childh, propname, NETSNMP_SENSOR_TYPE_OTHER,
+                                                   led_settings );
+        } else if ( strstr( propclass, "i2c" )) {
+            process_enum_sensor( childh, propname, NETSNMP_SENSOR_TYPE_BOOLEAN, /* ?? */
+                                                   i2c_settings );
+        } else {
+            /* Skip other classes of sensor */
+            DEBUGMSGTL(("sensors:arch:detail", "Skipping class %s\n", propclass ));
+        }
+
+        /*
+         *  Move on to the next child node at the current level (if any)
+         */
+        error_code = picl_get_propval_by_name( childh, PICL_PROP_PEER,
+                                               &nexth, sizeof(nexth));
+        if ( error_code != PICL_SUCCESS ) {
+            /* That's All Folks! */
+            return (( error_code == PICL_PROPNOTFOUND )
+                          ? PICL_SUCCESS : error_code );
+        }
+        childh = nexth;
+    }
+    
+    return error_code;
+}
+
+
+int
+netsnmp_sensor_arch_load(netsnmp_cache *cache, void *vp) {
+    int               error_code;
+    picl_nodehdl_t    rooth;
+
+    DEBUGMSGTL(("sensors:arch", "Reload PICLd Sensors module\n"));
+
+    error_code = picl_get_root(&rooth);
+    if ( error_code != PICL_SUCCESS) {
+        DEBUGMSGTL(("sensors:arch", "Couldn't get root node (error %d)\n", error_code));
+        return 1;
+    }
+
+    error_code = process_sensors(0, rooth);
+    if ( error_code != 255 )
+        if ( error_code != 7 )  /* ignore PICL_PROPNOTFOUND error */
+            DEBUGMSGTL(("sensors:arch", "Internal PICLd problem (error %d)\n", error_code));
+
+    return 0;
+}
+
+void netsnmp_sensor_arch_shutdown( void ) {
+    DEBUGMSGTL(("sensors:arch", "Shutdown PicLD Sensors module\n"));
+    picl_shutdown();
+}
+
diff --git a/agent/mibgroup/hardware/sensors/picld_sensors.h b/agent/mibgroup/hardware/sensors/picld_sensors.h
new file mode 100644
index 0000000..b5ffb4d
--- /dev/null
+++ b/agent/mibgroup/hardware/sensors/picld_sensors.h
@@ -0,0 +1 @@
+config_require(hardware/sensors/hw_sensors)
diff --git a/agent/mibgroup/header_complex.c b/agent/mibgroup/header_complex.c
index c385ede..d34d906 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
@@ -21,6 +18,13 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "header_complex.h"
 
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_child_of(header_complex_all, libnetsnmpmibs)
+
+netsnmp_feature_child_of(header_complex_free_all, header_complex_all)
+netsnmp_feature_child_of(header_complex_find_entry, header_complex_all)
+
 int
 header_complex_generate_varoid(netsnmp_variable_list * var)
 {
@@ -94,7 +98,7 @@
     if (var->name_length > MAX_OID_LEN) {
         DEBUGMSGTL(("header_complex_generate_varoid",
                     "Something terribly wrong, namelen = %d\n",
-                    var->name_length));
+                    (int)var->name_length));
         return SNMPERR_GENERR;
     }
 
@@ -130,7 +134,7 @@
             var->val_len = sizeof(long);
             oidLen--;
             DEBUGMSGTL(("header_complex_parse_oid",
-                        "Parsed int(%d): %d\n", var->type,
+                        "Parsed int(%d): %ld\n", var->type,
                         *var->val.integer));
             break;
 
@@ -340,8 +344,9 @@
 }
 
 struct header_complex_index *
-header_complex_add_data(struct header_complex_index **thedata,
-                        netsnmp_variable_list * var, void *data)
+header_complex_maybe_add_data(struct header_complex_index **thedata,
+                              netsnmp_variable_list * var, void *data,
+                              int dont_allow_duplicates)
 {
     oid             newoid[MAX_OID_LEN];
     size_t          newoid_len;
@@ -352,7 +357,8 @@
 
     header_complex_generate_oid(newoid, &newoid_len, NULL, 0, var);
     ret =
-        header_complex_add_data_by_oid(thedata, newoid, newoid_len, data);
+        header_complex_maybe_add_data_by_oid(thedata, newoid, newoid_len, data,
+                                             dont_allow_duplicates);
     /*
      * free the variable list, but not the enclosed data!  it's not ours! 
      */
@@ -361,34 +367,21 @@
 }
 
 struct header_complex_index *
-header_complex_add_data_by_oid(struct header_complex_index **thedata,
-                               oid * newoid, size_t newoid_len, void *data)
+header_complex_add_data(struct header_complex_index **thedata,
+                        netsnmp_variable_list * var, void *data)
 {
-    struct header_complex_index *hciptrn, *hciptrp, *ourself;
-    int rc;
+    return
+        header_complex_maybe_add_data(thedata, var, data, 0);
+}
 
-    if (thedata == NULL || newoid == NULL || data == NULL)
-        return NULL;
 
-    for (hciptrn = *thedata, hciptrp = NULL;
-         hciptrn != NULL; hciptrp = hciptrn, hciptrn = hciptrn->next) {
-        /*
-         * XXX: check for == and error (overlapping table entries) 
-         * 8/2005 rks Ok, I added duplicate entry check, but only log
-         *            warning and continue, because it seems that nobody
-         *            that calls this fucntion does error checking!.
-         */
-        rc = snmp_oid_compare(hciptrn->name, hciptrn->namelen,
-                              newoid, newoid_len);
-        if (rc > 0)
-            break;
-        else if (0 == rc) {
-            snmp_log(LOG_WARNING, "header_complex_add_data_by_oid with "
-                     "duplicate index.\n");
-            /** uncomment null return when callers do error checking */
-            /** return NULL; */
-        }
-    }
+struct header_complex_index *
+_header_complex_add_between(struct header_complex_index **thedata,
+                            struct header_complex_index *hciptrp,
+                            struct header_complex_index *hciptrn,
+                            oid * newoid, size_t newoid_len, void *data)
+{
+    struct header_complex_index *ourself;
 
     /*
      * nptr should now point to the spot that we need to add ourselves
@@ -400,6 +393,8 @@
      */
     ourself = (struct header_complex_index *)
         SNMP_MALLOC_STRUCT(header_complex_index);
+    if (ourself == NULL)
+        return NULL;
 
     /*
      * change our pointers 
@@ -430,6 +425,50 @@
     return hciptrp;
 }
 
+
+struct header_complex_index *
+header_complex_maybe_add_data_by_oid(struct header_complex_index **thedata,
+                                     oid * newoid, size_t newoid_len, void *data,
+                                     int dont_allow_duplicates)
+{
+    struct header_complex_index *hciptrn, *hciptrp;
+    int rc;
+
+    if (thedata == NULL || newoid == NULL || data == NULL)
+        return NULL;
+
+    for (hciptrn = *thedata, hciptrp = NULL;
+         hciptrn != NULL; hciptrp = hciptrn, hciptrn = hciptrn->next) {
+        /*
+         * XXX: check for == and error (overlapping table entries) 
+         * 8/2005 rks Ok, I added duplicate entry check, but only log
+         *            warning and continue, because it seems that nobody
+         *            that calls this fucntion does error checking!.
+         */
+        rc = snmp_oid_compare(hciptrn->name, hciptrn->namelen,
+                              newoid, newoid_len);
+        if (rc > 0)
+            break;
+        else if (0 == rc) {
+            snmp_log(LOG_WARNING, "header_complex_add_data_by_oid with "
+                     "duplicate index.\n");
+            if (dont_allow_duplicates)
+                return NULL;
+        }
+    }
+
+    return _header_complex_add_between(thedata, hciptrp, hciptrn,
+                                       newoid, newoid_len, data);
+}
+
+struct header_complex_index *
+header_complex_add_data_by_oid(struct header_complex_index **thedata,
+                               oid * newoid, size_t newoid_len, void *data)
+{
+    return header_complex_maybe_add_data_by_oid(thedata, newoid, newoid_len,
+                                                data, 0);
+}
+
 /*
  * extracts an entry from the storage space (removing it from future
  * accesses) and returns the data stored there
@@ -486,6 +525,7 @@
 /*
  * completely wipe out all entries in our data store 
  */
+#ifndef NETSNMP_FEATURE_REMOVE_HEADER_COMPLEX_FREE_ALL
 void
 header_complex_free_all(struct header_complex_index *thestuff,
                         HeaderComplexCleaner * cleaner)
@@ -497,7 +537,9 @@
         header_complex_free_entry(hciptr, cleaner);
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_HEADER_COMPLEX_FREE_ALL */
 
+#ifndef NETSNMP_FEATURE_REMOVE_HEADER_COMPLEX_FIND_ENTRY
 struct header_complex_index *
 header_complex_find_entry(struct header_complex_index *thestuff,
                           void *theentry)
@@ -508,6 +550,7 @@
          hciptr = hciptr->next);
     return hciptr;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_HEADER_COMPLEX_FIND_ENTRY */
 
 #ifdef TESTING
 
diff --git a/agent/mibgroup/header_complex.h b/agent/mibgroup/header_complex.h
index 2028cee..2a1728a 100644
--- a/agent/mibgroup/header_complex.h
+++ b/agent/mibgroup/header_complex.h
@@ -57,6 +57,10 @@
                                                      **thedata,
                                                      netsnmp_variable_list
                                                      * var, void *data);
+struct header_complex_index *header_complex_maybe_add_data(struct header_complex_index **thedata,
+                                                           netsnmp_variable_list * var,
+                                                           void *data,
+                                                           int dont_allow_duplicates);
 
 /*
  * Note: newoid is copied/cloned for you 
@@ -68,5 +72,10 @@
                                                             size_t
                                                             newoid_len,
                                                             void *data);
+struct header_complex_index *header_complex_maybe_add_data_by_oid(struct header_complex_index **thedata,
+                                                                  oid * newoid,
+                                                                  size_t newoid_len,
+                                                                  void *data,
+                                                                  int dont_allow_duplicates);
 
 #endif                          /* _MIBGROUP_HEADER_COMPLEX_H */
diff --git a/agent/mibgroup/host.h b/agent/mibgroup/host.h
index 4b78706..e8e6558 100644
--- a/agent/mibgroup/host.h
+++ b/agent/mibgroup/host.h
@@ -2,9 +2,18 @@
  *  Host Resources 'wrapper' interface
  *	calls the per-group interfaces from 'hr_*.h'
  */
+/* 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.
+ */
 
 	config_require(host/hr_system)
-	config_require(host/hr_storage)
 	config_require(host/hr_device)
 	config_require(host/hr_other)
 	config_require(host/hr_proc)
@@ -12,9 +21,12 @@
 	config_require(host/hr_print)
 	config_require(host/hr_disk)
 	config_require(host/hr_partition)
-	config_require(host/hr_filesys)
-	config_require(host/hr_swrun)
-	config_require(host/hr_swinst)
+
+	config_version_require((host/hr_storage, 5.7, host/hrh_storage))
+	config_version_require((host/hr_filesys, 5.7, host/hrh_filesys))
+
+	config_version_require((host/hr_swinst,  5.6, host/hrSWInstalledTable))
+	config_version_require((host/hr_swrun,   5.6, host/hrSWRunTable))
 
 /* add the host resources mib to the default mibs to load */
 config_add_mib(HOST-RESOURCES-MIB)
diff --git a/agent/mibgroup/host/data_access/swinst.c b/agent/mibgroup/host/data_access/swinst.c
new file mode 100644
index 0000000..3ef05e9
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swinst.c
@@ -0,0 +1,224 @@
+/*
+ * swinst.c : hrSWInstalledTable data access
+ */
+/*
+ * 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.
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/swinst.h>
+
+#include <stdlib.h>
+#include <unistd.h>
+
+netsnmp_feature_child_of(software_installed, libnetsnmpmibs)
+
+netsnmp_feature_child_of(swinst_entry_remove, netsnmp_unused)
+
+/* ---------------------------------------------------------------------
+ */
+
+static void netsnmp_swinst_entry_free_cb(netsnmp_swinst_entry *, void *);
+
+extern void netsnmp_swinst_arch_init(void);
+extern void netsnmp_swinst_arch_shutdown(void);
+extern int netsnmp_swinst_arch_load(netsnmp_container *, u_int);
+
+void init_swinst( void )
+{
+    static int initialized = 0;
+
+    DEBUGMSGTL(("swinst", "init called\n"));
+
+    if (initialized)
+        return; /* already initialized */
+
+
+    /*
+     * call arch init code
+     */
+    netsnmp_swinst_arch_init();
+}
+
+void shutdown_swinst( void )
+{
+    DEBUGMSGTL(("swinst", "shutdown called\n"));
+
+    netsnmp_swinst_arch_shutdown();
+}
+
+/* ---------------------------------------------------------------------
+ */
+
+/*
+ * load a container with installed software. If user_container is NULL,
+ * a new container will be allocated and returned, and the caller
+ * is responsible for releasing the allocated memory when done.
+ *
+ * if flags contains NETSNMP_SWINST_ALL_OR_NONE and any error occurs,
+ * the container will be completely cleared.
+ */
+netsnmp_container *
+netsnmp_swinst_container_load( netsnmp_container *user_container, int flags )
+{
+    netsnmp_container *container = user_container;
+    int arch_rc;
+
+    DEBUGMSGTL(("swinst:container", "load\n"));
+
+    /*
+     * create the container, if needed
+     */
+    if (NULL == container) {
+        container = netsnmp_container_find("swinst:table_container");
+        if (NULL == container)
+            return NULL;
+    }
+    if (NULL == container->container_name)
+        container->container_name = strdup("swinst container");
+
+    /*
+     * call the arch specific code to load the container
+     */
+    arch_rc = netsnmp_swinst_arch_load( container, flags );
+    if (arch_rc && (flags & NETSNMP_SWINST_ALL_OR_NONE)) {
+        /*
+         * caller does not want a partial load, so empty the container.
+         * if we created the container, destroy it.
+         */
+        netsnmp_swinst_container_free_items(container);
+        if (container != user_container) {
+            netsnmp_swinst_container_free(container, flags);
+        }
+    }
+    
+    return container;
+}
+
+void
+netsnmp_swinst_container_free(netsnmp_container *container, u_int free_flags)
+{
+    DEBUGMSGTL(("swinst:container", "free\n"));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR,
+                 "invalid container for netsnmp_swinst_container_free\n");
+        return;
+    }
+
+    if(! (free_flags & NETSNMP_SWINST_DONT_FREE_ITEMS))
+        netsnmp_swinst_container_free_items(container);
+
+    CONTAINER_FREE(container);
+}
+
+/*
+ * free a swinst container
+ */
+void netsnmp_swinst_container_free_items(netsnmp_container *container)
+{
+    DEBUGMSGTL(("swinst:container", "free_items\n"));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR,
+                 "invalid container for netsnmp_swinst_container_free_items\n");
+        return;
+    }
+
+    /*
+     * free all items.
+     */
+    CONTAINER_CLEAR(container,
+                    (netsnmp_container_obj_func*)netsnmp_swinst_entry_free_cb,
+                    NULL);
+}
+
+
+/* ---------------------------------------------------------------------
+ */
+
+/*
+ * create a new row in the table 
+ */
+netsnmp_swinst_entry *
+netsnmp_swinst_entry_create(int32_t swIndex)
+{
+    netsnmp_swinst_entry *entry;
+
+    entry = SNMP_MALLOC_TYPEDEF(netsnmp_swinst_entry);
+    if (!entry)
+        return NULL;
+
+    entry->swIndex = swIndex;
+    entry->oid_index.len = 1;
+    entry->oid_index.oids = &entry->swIndex;
+
+    entry->swType = HRSWINSTALLEDTYPE_APPLICATION;
+
+    return entry;
+}
+
+/*
+ * free a row
+ */
+void
+netsnmp_swinst_entry_free(netsnmp_swinst_entry *entry)
+{
+    DEBUGMSGTL(("swinst:entry:free", "index %" NETSNMP_PRIo "u\n",
+                entry->swIndex));
+
+    free(entry);
+}
+
+/*
+ * free a row
+ */
+static void
+netsnmp_swinst_entry_free_cb(netsnmp_swinst_entry *entry, void *context)
+{
+    free(entry);
+}
+
+/*
+ * remove a row from the table 
+ */
+#ifndef NETSNMP_FEATURE_REMOVE_SWINST_ENTRY_REMOVE
+void
+netsnmp_swinst_entry_remove(netsnmp_container * container,
+                            netsnmp_swinst_entry *entry)
+{
+    DEBUGMSGTL(("swinst:container", "remove\n"));
+    if (!entry)
+        return;                 /* Nothing to remove */
+    CONTAINER_REMOVE(container, entry);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_SWINST_ENTRY_REMOVE */
+
+/* ---------------------------------------------------------------------
+ */
+
+#ifdef TEST
+int main(int argc, char *argv[])
+{
+    const char *tokens = getenv("SNMP_DEBUG");
+
+    netsnmp_container_init_list();
+
+    /** swinst,verbose:swinst */
+    if (tokens)
+        debug_register_tokens(tokens);
+    else
+        debug_register_tokens("swinst");
+    snmp_set_do_debugging(1);
+
+    init_swinst();
+    netsnmp_swinst_container_load(NULL, 0);
+    shutdown_swinst();
+
+    return 0;
+}
+#endif
diff --git a/agent/mibgroup/host/data_access/swinst.h b/agent/mibgroup/host/data_access/swinst.h
new file mode 100644
index 0000000..bda3e47
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swinst.h
@@ -0,0 +1,38 @@
+/*
+ * swinst data access header
+ *
+ * $Id: swinst.h 15346 2006-09-26 23:34:50Z rstory $
+ */
+/*
+ * 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.
+ */
+#ifndef NETSNMP_ACCESS_SWINST_CONFIG_H
+#define NETSNMP_ACCESS_SWINST_CONFIG_H
+
+/*
+ * all platforms use this generic code
+ */
+config_exclude(host/hr_swinst)
+
+/*
+ * select the appropriate architecture-specific interface code
+ */
+#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 )
+    config_require(host/data_access/swinst_pkginfo)
+#else
+    config_warning(This platform does not yet support hrSWInstalledTable rewrites)
+    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
new file mode 100644
index 0000000..7a47372
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swinst_darwin.c
@@ -0,0 +1,399 @@
+/*
+ * swinst.c : hrSWInstalledTable data access
+ */
+/*
+ * 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.
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/library/container.h>
+#include <net-snmp/library/dir_utils.h>
+#include <net-snmp/library/snmp_debug.h>
+#include <net-snmp/data_access/swinst.h>
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <dirent.h>
+#include <sys/stat.h>
+
+#define __APPLE_API_EVOLVING 1
+#include <sys/acl.h> /* or else CoreFoundation.h barfs */
+#undef __APPLE_API_EVOLVING 
+
+#include <CoreFoundation/CoreFoundation.h>
+#include <ApplicationServices/ApplicationServices.h>
+
+netsnmp_feature_require(container_directory)
+netsnmp_feature_require(date_n_time)
+
+/* ---------------------------------------------------------------------
+ */
+static int _add_applications_in_dir(netsnmp_container *, const char* path);
+static int32_t _index;
+static int _check_bundled_app(CFURLRef currentURL, CFStringRef *name,
+                              CFStringRef *info, const char* path);
+static int _check_classic_app(CFURLRef currentURL, CFStringRef *name,
+                              CFStringRef *info, const char* path);
+static netsnmp_container *dirs = NULL;
+
+/* ---------------------------------------------------------------------
+ */
+void
+netsnmp_swinst_arch_init( void )
+{
+    struct stat stat_buf;
+    const char *default_dirs[] = {
+        "/Applications",
+        "/Applications (Mac OS 9)",
+        "/System/Library/CoreServices",
+        "/System/Library/Extensions",
+        "/System/Library/Services"
+#ifdef TEST
+        , "/Developer/Applications"
+        , "/Volumes/audX/Applications (Mac OS 9)"
+#endif
+    };
+    int i, count = sizeof(default_dirs)/sizeof(default_dirs[0]);
+
+    /*
+     * create the container, if needed
+     */
+    if (NULL == dirs) {
+        dirs = netsnmp_container_find("directory_container:cstring");
+        if (NULL == dirs) {
+            snmp_log(LOG_ERR, "couldn't allocate container for dir list\n");
+            return;
+        }
+        dirs->container_name = strdup("directory search list");
+        netsnmp_binary_array_options_set(dirs, 1, CONTAINER_KEY_UNSORTED);
+    }
+
+    /*
+     * add dirs
+     */
+    for(i = 0; i < count; ++i) {
+        char *      tmp;
+        /** xxx: get/save the last mod date? */
+        if(-1 == stat(default_dirs[i], &stat_buf)) {
+            DEBUGMSGTL(("swinst:arch:darwin", "skipping dir %s\n",
+                        default_dirs[i]));
+            continue;
+        }
+        DEBUGMSGTL(("swinst:arch:darwin", "adding dir %s\n",
+                        default_dirs[i]));
+        tmp = strdup(default_dirs[i]);
+        if (NULL == tmp) {
+            snmp_log(LOG_ERR,"strdup failed\n");
+            break;
+        }
+        CONTAINER_INSERT(dirs, tmp);
+    }
+}
+
+void
+netsnmp_swinst_arch_shutdown( void )
+{
+    netsnmp_directory_container_free(dirs);
+}
+
+/* ---------------------------------------------------------------------
+ */
+
+int
+netsnmp_swinst_arch_load( netsnmp_container *container, u_int flags )
+{
+    netsnmp_iterator   *it;
+    const char         *dir;
+    int                 rc;
+
+    DEBUGMSGTL(("swinst:arch:darwin", "load\n"));
+
+    if (NULL == dirs) {
+        DEBUGMSGTL(("swinst:arch:darwin", "no dirs to scan!\n"));
+        return -1;
+    }
+
+    _index = 0;
+    
+    it = CONTAINER_ITERATOR(dirs);
+    for (dir = ITERATOR_FIRST(it); dir; dir = ITERATOR_NEXT(it)) {
+        rc = _add_applications_in_dir(container, dir);
+    }
+    ITERATOR_RELEASE(it);
+    DEBUGMSGTL(("swinst:arch:darwin", "loaded %d apps\n",_index));
+
+    return 0;
+}
+
+static void
+_dump_flags(u_long flags)
+{
+    static struct {
+        const char*name;
+        u_long bits;
+    } names[] = {
+        { "kLSItemInfoIsPlainFile", 0x00000001 },
+        { "kLSItemInfoIsPackage", 0x00000002 },
+        { "kLSItemInfoIsApplication", 0x00000004 },
+        { "kLSItemInfoIsContainer", 0x00000008 },
+        { "kLSItemInfoIsAliasFile", 0x00000010 },
+        { "kLSItemInfoIsSymlink", 0x00000020 },
+        { "kLSItemInfoIsInvisible", 0x00000040 },
+        { "kLSItemInfoIsNativeApp", 0x00000080 },
+        { "kLSItemInfoIsClassicApp", 0x00000100 },
+        { "kLSItemInfoAppPrefersNative", 0x00000200 },
+        { "kLSItemInfoAppPrefersClassic", 0x00000400 },
+        { "kLSItemInfoAppIsScriptable", 0x00000800 },
+        { "kLSItemInfoIsVolume", 0x00001000 },
+        { "kLSItemInfoExtensionIsHidden", 0x00100000 }
+    };
+    int i, count = sizeof(names)/sizeof(names[0]);
+
+    for(i = 0; i < count; ++i) {
+        if (flags & names[i].bits) {
+            DEBUGMSGTL(("swinst:arch:darwin:flags", "\t%s\n",
+                       names[i].name));
+        }
+    }
+}
+
+static int
+_add_applications_in_dir(netsnmp_container *container, const char* path)
+{
+    netsnmp_container  *files;
+    netsnmp_iterator   *it;
+    const char         *file;
+    netsnmp_swinst_entry *entry = NULL;
+    struct stat	        stat_buf;
+    size_t              date_len;
+    u_char             *date_buf;
+    int                 rc = 0;
+
+    CFStringRef         currentPath = NULL;
+    CFURLRef            currentURL = NULL;
+    LSItemInfoRecord    itemInfoRecord;
+    CFStringRef         prodName = NULL;
+    CFStringRef         version = NULL;
+    
+    DEBUGMSGTL(("swinst:arch:darwin", " adding files from %s\n", path));
+    files = netsnmp_directory_container_read(NULL, path, 0);
+    if (NULL == files) {
+        snmp_log(LOG_ERR, "swinst: could not read directory %s\n", path);
+        return -1;
+    }
+
+    it = CONTAINER_ITERATOR(files);
+    if (NULL == it) {
+        snmp_log(LOG_ERR, "could not get iterator\n");
+        netsnmp_directory_container_free(files);
+        return -1;
+    }
+    for (file = ITERATOR_FIRST(it);
+         file;
+         file = ITERATOR_NEXT(it),
+             CFRelease(currentPath),
+             CFRelease(currentURL)) {
+
+        int                 rc2 = 0;
+        
+        currentPath =
+            CFStringCreateWithCStringNoCopy(kCFAllocatorDefault, file,
+                                            kCFStringEncodingUTF8,
+                                            kCFAllocatorNull);
+        currentURL =
+            CFURLCreateWithFileSystemPath(kCFAllocatorDefault, currentPath,
+                                          kCFURLPOSIXPathStyle, true); 
+        LSCopyItemInfoForURL(currentURL,
+                             kLSRequestBasicFlagsOnly|kLSRequestAppTypeFlags,
+                             &itemInfoRecord); 
+        if((0 == itemInfoRecord.flags) ||
+           (kLSItemInfoIsPlainFile == itemInfoRecord.flags) ||
+           (itemInfoRecord.flags & kLSItemInfoIsInvisible) ||
+           (itemInfoRecord.flags & kLSItemInfoIsAliasFile)) {
+            continue;
+        }
+        /** recurse on non-application containers (i.e. directory) */
+        if ((itemInfoRecord.flags & kLSItemInfoIsContainer) &&
+            (!(itemInfoRecord.flags & kLSItemInfoIsApplication))) {
+            netsnmp_directory_container_read(files, file, 0);
+            continue;
+       }
+
+        /** skip any other non-application files */
+        if (!(itemInfoRecord.flags & kLSItemInfoIsApplication)) {
+            continue;
+       }
+
+        if ((itemInfoRecord.flags & kLSItemInfoIsPackage) ||           
+            (itemInfoRecord.flags & kLSItemInfoIsContainer)) {
+            rc2 = _check_bundled_app(currentURL, &prodName, &version, file);
+        } 
+        else if ((itemInfoRecord.flags & kLSItemInfoIsClassicApp) ||
+                 (itemInfoRecord.flags & kLSItemInfoIsPlainFile)) {
+            rc2 = _check_classic_app(currentURL, &prodName, &version, file);
+        } else {
+            snmp_log(LOG_ERR,"swinst shouldn't get here: %s\n", file);
+            _dump_flags(itemInfoRecord.flags);
+            continue;
+        }
+        if (rc2) { /* not an app. if directory, recurse; else continue */
+            _dump_flags(itemInfoRecord.flags);
+            if (1 == rc2)
+                netsnmp_directory_container_read(files, file, 0);
+            continue;
+        }
+        
+        /*
+         * allocate entry
+         */
+        entry = netsnmp_swinst_entry_create(++_index);
+        if (NULL == entry) {
+            snmp_log(LOG_ERR, "error creating swinst entry\n");
+            rc = -1;
+            SNMP_CFRelease(prodName);
+            SNMP_CFRelease(version);
+            CFRelease(currentPath);
+            CFRelease(currentURL);
+            break;
+        }
+
+        entry->swName_len =
+            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));
+
+        /** get the last mod date */
+        if(stat(file, &stat_buf) != -1) {
+            date_buf = date_n_time(&stat_buf.st_mtime, &date_len);
+            entry->swDate_len = date_len;
+            memcpy(entry->swDate, date_buf, entry->swDate_len);
+        }
+        
+        CONTAINER_INSERT(container, entry);
+        entry = NULL;
+        SNMP_CFRelease(prodName);
+        SNMP_CFRelease(version);
+    }
+    ITERATOR_RELEASE(it);
+    netsnmp_directory_container_free(files);
+
+    return rc;
+}
+
+static int
+_check_bundled_app(CFURLRef currentURL, CFStringRef *prodName,
+                   CFStringRef *version, const char* file)
+{
+    CFBundleRef         theBundle = NULL;
+    CFDictionaryRef     infoDict = NULL;
+            
+    if ((NULL == prodName) || (NULL == version))
+       return -1;
+
+    theBundle = CFBundleCreate (kCFAllocatorDefault, currentURL);
+    if(theBundle == NULL)
+        return -1; /* not a bundle */
+
+    infoDict = CFBundleGetInfoDictionary(theBundle);
+    if(0 == CFDictionaryGetCount(infoDict)) {
+        SNMP_CFRelease(theBundle);
+        return 1; /* directory */
+    }
+
+    *prodName = (CFStringRef)
+        CFDictionaryGetValue (infoDict, CFSTR("CFBundleName"));
+    if (NULL == *prodName) {
+        *prodName = (CFStringRef)
+            CFDictionaryGetValue (infoDict, CFSTR("CFBundleDisplayName"));
+        if (NULL == *prodName) {
+            *prodName = (CFStringRef) CFDictionaryGetValue (infoDict,
+                                      CFSTR("CFBundleExecutable"));
+        }
+    }
+    if(NULL == *prodName) {
+        DEBUGMSGTL(("swinst:arch:darwin", "\tmissing name: %s\n",file));
+        /*CFShow(infoDict);*/
+        SNMP_CFRelease(theBundle);
+        return -1;
+    }
+
+    *version = (CFStringRef)
+        CFDictionaryGetValue (infoDict, CFSTR("CFBundleShortVersionString"));
+    if(NULL == *version) {
+        *version = (CFStringRef)
+            CFDictionaryGetValue (infoDict, CFSTR("CFBundleVersion"));
+        if (*version == NULL) 
+            *version = (CFStringRef) CFDictionaryGetValue (infoDict,
+                                      CFSTR("CFBundleGetInfoString"));
+    }
+    if(NULL == *version) {
+        DEBUGMSGTL(("swinst:arch:darwin", "\tmissing version: %s\n",file));
+        /*CFShow(infoDict);*/
+        SNMP_CFRelease(theBundle);
+        return -1;
+    }
+    
+    if(theBundle != NULL) {
+        CFRetain(*prodName);
+        CFRetain(*version);
+        SNMP_CFRelease(theBundle);
+    }
+    return 0;
+}
+
+static int
+_check_classic_app(CFURLRef currentURL, CFStringRef *prodName,
+                   CFStringRef *version, const char* file)
+{
+    /*
+     * get info for classic or single-file apps
+     */
+    FSRef theFSRef;
+    int theResFile;
+
+    if ((NULL == prodName) || (NULL == version))
+       return -1;
+
+    *prodName = CFURLCopyLastPathComponent(currentURL);
+    if (! CFURLGetFSRef(currentURL, &theFSRef)) {
+        DEBUGMSGTL(("swinst:arch:darwin", "GetFSRef failed: %s\n", file));
+        SNMP_CFRelease(*prodName);
+        return -1;
+    }
+    theResFile = FSOpenResFile(&theFSRef, fsRdPerm);
+    if (ResError() != noErr) {
+        DEBUGMSGTL(("swinst:arch:darwin", "FSOpenResFile failed: %s\n", file));
+        SNMP_CFRelease(*prodName);
+        return -1;
+    }
+    VersRecHndl versHandle = (VersRecHndl)Get1IndResource('vers', 1);
+    if (versHandle != NULL) {
+        *version = CFStringCreateWithPascalString(kCFAllocatorDefault,
+                       (**versHandle).shortVersion, kCFStringEncodingMacRoman);
+        if (*version == NULL) {
+            StringPtr longVersionPtr = (**versHandle).shortVersion;
+            longVersionPtr = (StringPtr)(((Ptr) longVersionPtr) +
+                              1 + ((unsigned char) *longVersionPtr));
+            *version = CFStringCreateWithPascalString(kCFAllocatorDefault,
+                          longVersionPtr,  kCFStringEncodingMacRoman);
+        }
+        ReleaseResource((Handle)versHandle);
+    }
+    CloseResFile(theResFile);
+    if(*version == NULL) {
+        DEBUGMSGTL(("swinst:arch:darwin",
+                    "\tmissing classic/file version: %s\n", file));
+        SNMP_CFRelease(*prodName);
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/agent/mibgroup/host/data_access/swinst_null.c b/agent/mibgroup/host/data_access/swinst_null.c
new file mode 100644
index 0000000..e4f9158
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swinst_null.c
@@ -0,0 +1,51 @@
+/*
+ * swinst_null.c:
+ *     hrSWInstalledTable data access:
+ *     dummy interface for non-supported systems
+ */
+#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
+
+#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>
+
+/* ---------------------------------------------------------------------
+ */
+void
+netsnmp_swinst_arch_init(void)
+{
+    /* Nothing to do */
+    return;
+}
+
+void
+netsnmp_swinst_arch_shutdown(void)
+{
+    /* Nothing to do */
+    return;
+}
+
+/* ---------------------------------------------------------------------
+ */
+int
+netsnmp_swinst_arch_load( netsnmp_container *container, u_int flags)
+{
+    /* Nothing to do */
+    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
new file mode 100644
index 0000000..a122cb1
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swinst_pkginfo.c
@@ -0,0 +1,219 @@
+/*
+ * swinst_pkginfo.c:
+ *     hrSWInstalledTable data access:
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+#include <stdio.h>
+#include <sys/stat.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_DIRENT_H
+#include <dirent.h>
+#endif
+
+#ifdef HAVE_PKGLOCS_H
+#include <pkglocs.h>
+#endif
+#ifdef HAVE_PKGINFO_H
+#include <pkginfo.h>
+#endif
+
+#ifdef HAVE_PKG_H
+#define restrict
+#include <pkg.h>
+#endif
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/library/container.h>
+#include <net-snmp/library/snmp_debug.h>
+#include <net-snmp/data_access/swinst.h>
+
+netsnmp_feature_require(date_n_time)
+
+   /*
+    * Location of package directory.
+    * Used for:
+    *    - reporting hrSWInstalledLast* objects
+    *    - detecting when the cached contents are out of date.
+    */
+char pkg_directory[SNMP_MAXPATH];
+
+/* ---------------------------------------------------------------------
+ */
+void
+netsnmp_swinst_arch_init(void)
+{
+#if defined(PKGLOC)
+    snprintf( pkg_directory, SNMP_MAXPATH, "%s", PKGLOC );
+#elif defined(hpux9)
+    snprintf( pkg_directory, SNMP_MAXPATH, "/system" );
+#elif defined(hpux10) ||  defined(hpux11) 
+    snprintf( pkg_directory, SNMP_MAXPATH, "/var/adm/sw/products" );
+#elif defined(freebsd2) || defined(openbsd)
+    snprintf( pkg_directory, SNMP_MAXPATH, "/var/db/pkg" );
+#elif defined(linux)
+    snprintf( pkg_directory, SNMP_MAXPATH, "/var/cache/hrmib" );
+#else
+    pkg_directory[0] = '\0';
+    snmp_log( LOG_ERR, "SWInst: No package directory\n" );
+#endif
+
+    DEBUGMSGTL(("swinst:init:arch"," package directory = %s\n",
+                                         pkg_directory));
+    return;
+}
+
+void
+netsnmp_swinst_arch_shutdown(void)
+{
+    pkg_directory[0] = '\0';
+    return;
+}
+
+/* ---------------------------------------------------------------------
+ */
+int
+netsnmp_swinst_arch_load( netsnmp_container *container, u_int flags)
+{
+    DIR                  *d;
+    struct dirent        *dp;
+    struct stat           stat_buf;
+#ifdef HAVE_PKGINFO
+    char                 *v, *c;
+#endif
+    char                  buf[ BUFSIZ ];
+    unsigned char        *cp;
+    time_t                install_time;
+    size_t                date_len;
+    int                   i = 1;
+    netsnmp_swinst_entry *entry;
+#ifdef HAVE_LIBPKG
+    struct pkgdb *db = NULL;
+    struct pkgdb_it *it = NULL;
+    struct pkg *pkg = NULL;
+    char pkgname[ SNMP_MAXPATH ];
+    char pkgdate[ BUFSIZ ];
+    int pkgng = 0;
+
+    if (pkg_init(NULL, NULL)) {
+        snmp_log( LOG_ERR, "SWInst: error initializing pkgng db\n" );
+        return 1;
+    }
+
+    if (pkgdb_open(&db, PKGDB_DEFAULT) != EPKG_OK) {
+	snmp_log( LOG_ERR, "SWInst: error opening pkgng db\n" );
+	return 1;
+    }
+
+    if (pkg_status(NULL) == PKG_STATUS_ACTIVE) {
+	pkgng = 1;
+    } else {
+	snmp_log( LOG_INFO, "SWInst: not a pkgng system\n" );
+    }
+
+    /* if we are using FreeBSD's pkgng */
+    if (pkgng) {
+        if ((it = pkgdb_query(db, NULL, MATCH_ALL)) == NULL) {
+            snmp_log( LOG_ERR, "SWInst: error querying pkgng db\n" );
+            return 1;
+        }
+
+        while (pkgdb_it_next(it, &pkg, PKG_LOAD_BASIC) == EPKG_OK) {
+            pkg_snprintf(pkgname, sizeof(pkgname), "%n-%v", pkg, pkg);
+            pkg_snprintf(pkgdate, sizeof(pkgdate), "%t", pkg);
+
+            entry = netsnmp_swinst_entry_create( i++ );
+
+            if (NULL == entry)
+                continue;   /* error already logged by function */
+
+            CONTAINER_INSERT(container, entry);
+
+            entry->swName_len = snprintf( entry->swName, sizeof(entry->swName),
+                                          "%s", pkgname );
+            if (entry->swName_len >= sizeof(entry->swName))
+                entry->swName_len = sizeof(entry->swName)-1;
+
+            install_time = atoi(pkgdate);
+            cp = date_n_time( &install_time, &date_len );
+            memcpy( entry->swDate, cp, date_len );
+            entry->swDate_len = date_len;
+        }
+
+        pkgdb_it_free(it);
+        pkgdb_close(db);
+        pkg_shutdown();
+    } else {
+#endif /* HAVE_LIBPKG */
+        if ( !pkg_directory[0] ) {
+            return 1;    /* Can't report installed packages
+                         if there isn't a list of them! */
+        }
+
+        d = opendir( pkg_directory );
+        if (!d)
+            return 1;
+
+        while ((dp = readdir(d)) != NULL) {
+            if ( '.' == dp->d_name[0] )
+                continue;
+            snprintf( buf, BUFSIZ, "%s/%s", pkg_directory, dp->d_name );
+            if (stat( buf, &stat_buf ) < 0)
+                continue;
+            entry = netsnmp_swinst_entry_create( i++ );
+            if (NULL == entry)
+                continue;   /* error already logged by function */
+            CONTAINER_INSERT(container, entry);
+
+#ifdef HAVE_PKGINFO
+	    v = pkgparam( dp->d_name, "VERSION" );
+	    c = pkgparam( dp->d_name, "CATEGORY" );
+
+	    entry->swName_len = snprintf( entry->swName, sizeof(entry->swName),
+					  "%s-%s", dp->d_name, v );
+	    if (entry->swName_len >= sizeof(entry->swName))
+		entry->swName_len = sizeof(entry->swName)-1;
+	    entry->swType = (NULL != strstr( c, "system"))
+			    ? 2      /* operatingSystem */
+			    : 4;     /*  application    */
+
+	    /* Do we need to free 'v' & 'c' ??? */
+#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
+
+	    install_time = stat_buf.st_mtime;
+	    cp = date_n_time( &install_time, &date_len );
+	    memcpy( entry->swDate, cp, date_len );
+	    entry->swDate_len = date_len;
+	}
+	closedir( d );
+#ifdef HAVE_LIBPKG
+    }
+#endif
+
+    DEBUGMSGTL(("swinst:load:arch"," loaded %d entries\n",
+                (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
new file mode 100644
index 0000000..71595be
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swinst_rpm.c
@@ -0,0 +1,156 @@
+/*
+ * swinst_rpm.c:
+ *     hrSWInstalledTable data access:
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.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
+
+#ifdef HAVE_RPM_RPMLIB_H
+#include <rpm/rpmlib.h>
+#endif
+#ifdef HAVE_RPM_RPMLIB_H
+#include <rpm/header.h>
+#endif
+#ifdef HAVE_RPMGETPATH		/* HAVE_RPM_RPMMACRO_H */
+#include <rpm/rpmmacro.h>
+#endif
+#ifdef HAVE_RPM_RPMTS_H
+#include <rpm/rpmts.h>
+#include <rpm/rpmdb.h>
+#endif
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/library/container.h>
+#include <net-snmp/library/snmp_debug.h>
+#include <net-snmp/data_access/swinst.h>
+
+netsnmp_feature_require(date_n_time)
+
+   /*
+    * Location of RPM package directory.
+    * Used for:
+    *    - reporting hrSWInstalledLast* objects
+    *    - detecting when the cached contents are out of date.
+    */
+char pkg_directory[SNMP_MAXPATH];
+
+/* ---------------------------------------------------------------------
+ */
+void
+netsnmp_swinst_arch_init(void)
+{
+    char        *rpmdbpath = NULL;
+    const char  *dbpath;
+    struct stat  stat_buf;
+
+#ifdef HAVE_RPMGETPATH
+    rpmReadConfigFiles( NULL, NULL );
+    rpmdbpath = rpmGetPath( "%{_dbpath}", NULL );
+    dbpath = rpmdbpath;
+#else
+    dbpath = "/var/lib/rpm";   /* Most likely */
+#endif
+
+    snprintf( pkg_directory, SNMP_MAXPATH, "%s/Packages", dbpath );
+    SNMP_FREE(rpmdbpath);
+    dbpath = NULL;
+    if (-1 == stat( pkg_directory, &stat_buf )) {
+        snmp_log(LOG_ERR, "Can't find directory of RPM packages");
+        pkg_directory[0] = '\0';
+    }
+}
+
+void
+netsnmp_swinst_arch_shutdown(void)
+{
+     /* Nothing to do */
+     return;
+}
+
+/* ---------------------------------------------------------------------
+ */
+int
+netsnmp_swinst_arch_load( netsnmp_container *container, u_int flags)
+{
+    rpmts                 ts;
+
+    rpmdbMatchIterator    mi;
+    Header                h;
+    char                 *n, *v, *r, *g;
+    int32_t              *t;
+    time_t                install_time;
+    size_t                date_len;
+    int                   i = 1;
+    netsnmp_swinst_entry *entry;
+
+    ts = rpmtsCreate();
+    rpmtsSetVSFlags( ts, (_RPMVSF_NOSIGNATURES|_RPMVSF_NODIGESTS));
+
+    mi = rpmtsInitIterator( ts, RPMDBI_PACKAGES, NULL, 0);
+    if (mi == NULL)
+	NETSNMP_LOGONCE((LOG_ERR, "rpmdbOpen() failed\n"));
+
+    while (NULL != (h = rpmdbNextIterator( mi )))
+    {
+        const u_char *dt;
+        entry = netsnmp_swinst_entry_create( i++ );
+        if (NULL == entry)
+            continue;   /* error already logged by function */
+        CONTAINER_INSERT(container, entry);
+
+        h = headerLink( h );
+        headerGetEntry( h, RPMTAG_NAME,        NULL, (void**)&n, NULL);
+        headerGetEntry( h, RPMTAG_VERSION,     NULL, (void**)&v, NULL);
+        headerGetEntry( h, RPMTAG_RELEASE,     NULL, (void**)&r, NULL);
+        headerGetEntry( h, RPMTAG_GROUP,       NULL, (void**)&g, NULL);
+        headerGetEntry( h, RPMTAG_INSTALLTIME, NULL, (void**)&t, NULL);
+
+        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    */
+
+        install_time = *t;
+        dt = date_n_time( &install_time, &date_len );
+        if (date_len != 8 && date_len != 11) {
+            snmp_log(LOG_ERR, "Bogus length from date_n_time for %s", entry->swName);
+            entry->swDate_len = 0;
+        }
+        else {
+            entry->swDate_len = date_len;
+            memcpy(entry->swDate, dt, entry->swDate_len);
+        }
+
+        headerFree( h );
+    }
+    rpmdbFreeIterator( mi );
+    rpmtsFree( ts );
+
+    DEBUGMSGTL(("swinst:load:arch", "loaded %d entries\n",
+                (int)CONTAINER_SIZE(container)));
+
+    return 0;
+}
diff --git a/agent/mibgroup/host/data_access/swrun.c b/agent/mibgroup/host/data_access/swrun.c
new file mode 100644
index 0000000..d18ea5f
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun.c
@@ -0,0 +1,353 @@
+/*
+ *  Swrun MIB architecture support
+ *
+ * $Id: swrun.c 15768 2007-01-22 16:18:29Z rstory $
+ */
+/*
+ * 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.
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/swrun.h>
+
+netsnmp_feature_child_of(software_running, libnetsnmpmibs)
+
+netsnmp_feature_child_of(swrun_max_processes, software_running)
+netsnmp_feature_child_of(swrun_count_processes_by_name, software_running)
+
+/**---------------------------------------------------------------------*/
+/*
+ * local static vars
+ */
+static int _swrun_init = 0;
+       int _swrun_max  = 0;
+static netsnmp_cache     *swrun_cache     = NULL;
+static netsnmp_container *swrun_container = NULL;
+
+netsnmp_container * netsnmp_swrun_container(void);
+netsnmp_cache     * netsnmp_swrun_cache    (void);
+
+/*
+ * local static prototypes
+ */
+static void _swrun_entry_release(netsnmp_swrun_entry * entry,
+                                            void *unused);
+
+/**---------------------------------------------------------------------*/
+/*
+ * external per-architecture functions prototypes
+ *
+ * These shouldn't be called by the general public, so they aren't in
+ * the header file.
+ */
+extern void netsnmp_arch_swrun_init(void);
+extern int netsnmp_arch_swrun_container_load(netsnmp_container* container,
+                                             u_int load_flags);
+
+/**
+ * initialization
+ */
+void
+init_swrun(void)
+{
+    DEBUGMSGTL(("swrun:access", "init\n"));
+
+    if (1 == _swrun_init)
+        return;
+
+    _swrun_init = 1;
+
+    (void)netsnmp_swrun_container();
+    netsnmp_arch_swrun_init();
+    (void) netsnmp_swrun_cache();
+}
+
+void
+shutdown_swrun(void)
+{
+    DEBUGMSGTL(("swrun:access", "shutdown\n"));
+
+}
+
+int
+swrun_count_processes( void )
+{
+    netsnmp_cache_check_and_reload(swrun_cache);
+    return ( swrun_container ? CONTAINER_SIZE(swrun_container) : 0 );
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_SWRUN_MAX_PROCESSES
+int
+swrun_max_processes( void )
+{
+    return _swrun_max;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_SWRUN_MAX_PROCESSES */
+
+#ifndef NETSNMP_FEATURE_REMOVE_SWRUN_COUNT_PROCESSES_BY_NAME
+int
+swrun_count_processes_by_name( char *name )
+{
+    netsnmp_swrun_entry *entry;
+    netsnmp_iterator  *it;
+    int i = 0;
+
+    netsnmp_cache_check_and_reload(swrun_cache);
+    if ( !swrun_container || !name )
+        return 0;    /* or -1 */
+
+    it = CONTAINER_ITERATOR( swrun_container );
+    while ((entry = (netsnmp_swrun_entry*)ITERATOR_NEXT( it )) != NULL) {
+        if (0 == strcmp( entry->hrSWRunName, name ))
+            i++;
+    }
+    ITERATOR_RELEASE( it );
+
+    return i;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_SWRUN_COUNT_PROCESSES_BY_NAME */
+
+/**---------------------------------------------------------------------*/
+/*
+ * cache functions
+ */
+
+static int
+_cache_load( netsnmp_cache *cache,  void *magic )
+{
+    netsnmp_swrun_container_load( swrun_container, 0 );
+    return 0;
+}
+
+static void
+_cache_free( netsnmp_cache *cache,  void *magic )
+{
+    netsnmp_swrun_container_free_items( swrun_container );
+    return;
+}
+
+/**
+ * create swrun cache
+ */
+netsnmp_cache *
+netsnmp_swrun_cache(void)
+{
+    oid    hrSWRunTable_oid[]   = { 1, 3, 6, 1, 2, 1, 25, 4, 2 };
+    size_t hrSWRunTable_oid_len = OID_LENGTH(hrSWRunTable_oid);
+
+    if ( !swrun_cache ) {
+        swrun_cache = netsnmp_cache_create(30,   /* timeout in seconds */
+                           _cache_load,  _cache_free,
+                           hrSWRunTable_oid, hrSWRunTable_oid_len);
+        if (swrun_cache)
+            swrun_cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+    }
+    return swrun_cache;
+}
+
+
+/**---------------------------------------------------------------------*/
+/*
+ * container functions
+ */
+/**
+ * create swrun container
+ */
+netsnmp_container *
+netsnmp_swrun_container(void)
+{
+    DEBUGMSGTL(("swrun:container", "init\n"));
+
+    /*
+     * create the container.
+     */
+  if (!swrun_container) {
+    swrun_container = netsnmp_container_find("swrun:table_container");
+    if (NULL == swrun_container)
+        return NULL;
+
+    swrun_container->container_name = strdup("swrun container");
+  }
+
+    return swrun_container;
+}
+
+/**
+ * load swrun information in specified container
+ *
+ * @param container empty container to be filled.
+ *                  pass NULL to have the function create one.
+ * @param load_flags flags to modify behaviour. Examples:
+ *                   NETSNMP_SWRUN_ALL_OR_NONE
+ *
+ * @retval NULL  error
+ * @retval !NULL pointer to container
+ */
+netsnmp_container*
+netsnmp_swrun_container_load(netsnmp_container* user_container, u_int load_flags)
+{
+    netsnmp_container* container = user_container;
+    int rc;
+
+    DEBUGMSGTL(("swrun:container:load", "load\n"));
+    netsnmp_assert(1 == _swrun_init);
+
+    if (NULL == container)
+        container = netsnmp_swrun_container();
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "no container specified/found for swrun\n");
+        return NULL;
+    }
+
+    rc =  netsnmp_arch_swrun_container_load(container, load_flags);
+    if (0 != rc) {
+        if (NULL == user_container) {
+            netsnmp_swrun_container_free(container, NETSNMP_SWRUN_NOFLAGS);
+            container = NULL;
+        }
+        else if (load_flags & NETSNMP_SWRUN_ALL_OR_NONE) {
+            DEBUGMSGTL(("swrun:container:load",
+                        " discarding partial results\n"));
+            netsnmp_swrun_container_free_items(container);
+        }
+    }
+
+    return container;
+}
+
+void
+netsnmp_swrun_container_free(netsnmp_container *container, u_int free_flags)
+{
+    DEBUGMSGTL(("swrun:container", "free\n"));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "invalid container for netsnmp_swrun_container_free\n");
+        return;
+    }
+
+    if(! (free_flags & NETSNMP_SWRUN_DONT_FREE_ITEMS))
+        netsnmp_swrun_container_free_items(container);
+
+    CONTAINER_FREE(container);
+}
+
+void
+netsnmp_swrun_container_free_items(netsnmp_container *container)
+{
+    DEBUGMSGTL(("swrun:container", "free_items\n"));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "invalid container for netsnmp_swrun_container_free_items\n");
+        return;
+    }
+
+    /*
+     * free all items.
+     */
+    CONTAINER_CLEAR(container,
+                    (netsnmp_container_obj_func*)_swrun_entry_release,
+                    NULL);
+}
+
+/**---------------------------------------------------------------------*/
+/*
+ * swrun_entry functions
+ */
+/**
+ */
+netsnmp_swrun_entry *
+netsnmp_swrun_entry_get_by_index(netsnmp_container *container, oid index)
+{
+    netsnmp_index   tmp;
+
+    DEBUGMSGTL(("swrun:entry", "by_index\n"));
+    netsnmp_assert(1 == _swrun_init);
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR,
+                 "invalid container for netsnmp_swrun_entry_get_by_index\n");
+        return NULL;
+    }
+
+    tmp.len = 1;
+    tmp.oids = &index;
+
+    return (netsnmp_swrun_entry *) CONTAINER_FIND(container, &tmp);
+}
+
+/**
+ */
+netsnmp_swrun_entry *
+netsnmp_swrun_entry_create(int32_t index)
+{
+    netsnmp_swrun_entry *entry =
+        SNMP_MALLOC_TYPEDEF(netsnmp_swrun_entry);
+
+    if(NULL == entry)
+        return NULL;
+
+    entry->hrSWRunIndex = index;
+    entry->hrSWRunType = 1; /* unknown */
+    entry->hrSWRunStatus = 2; /* runnable */
+
+    entry->oid_index.len = 1;
+    entry->oid_index.oids = (oid *) & entry->hrSWRunIndex;
+
+    return entry;
+}
+
+/**
+ */
+NETSNMP_INLINE void
+netsnmp_swrun_entry_free(netsnmp_swrun_entry * entry)
+{
+    if (NULL == entry)
+        return;
+
+    /*
+     * SNMP_FREE not needed, for any of these, 
+     * since the whole entry is about to be freed
+     */
+    free(entry);
+}
+
+/**---------------------------------------------------------------------*/
+/*
+ * Utility routines
+ */
+
+/**
+ */
+static void
+_swrun_entry_release(netsnmp_swrun_entry * entry, void *context)
+{
+    netsnmp_swrun_entry_free(entry);
+}
+
+
+#ifdef TEST
+int main(int argc, char *argv[])
+{
+    const char *tokens = getenv("SNMP_DEBUG");
+
+    netsnmp_container_init_list();
+
+    /** swrun,verbose:swrun,9:swrun,8:swrun,5:swrun */
+    if (tokens)
+        debug_register_tokens(tokens);
+    else
+        debug_register_tokens("swrun");
+    snmp_set_do_debugging(1);
+
+    init_swrun();
+    netsnmp_swrun_container_load(NULL, 0);
+    shutdown_swrun();
+
+    return 0;
+}
+#endif
diff --git a/agent/mibgroup/host/data_access/swrun.h b/agent/mibgroup/host/data_access/swrun.h
new file mode 100644
index 0000000..2ae53f5
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun.h
@@ -0,0 +1,54 @@
+/*
+ * swrun data access header
+ *
+ * $Id: swrun.h 15346 2006-09-26 23:34:50Z rstory $
+ */
+/*
+ * 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.
+ */
+#ifndef NETSNMP_ACCESS_SWRUN_CONFIG_H
+#define NETSNMP_ACCESS_SWRUN_CONFIG_H
+
+/*
+ * all platforms use this generic code
+ */
+config_require(host/data_access/swrun)
+config_exclude(host/hr_swrun)
+
+/*
+ * select the appropriate architecture-specific interface code
+ */
+#if   defined( darwin )
+    config_require(host/data_access/swrun_darwin)
+#elif defined( HAVE_SYS_PSTAT_H )
+    config_require(host/data_access/swrun_pstat)
+#elif defined( dynix )
+    config_require(host/data_access/swrun_prpsinfo)
+#elif defined( solaris2 )
+# if _SLASH_PROC_METHOD_
+    config_require(host/data_access/swrun_procfs_psinfo)
+# else
+    config_require(host/data_access/swrun_kvm_proc)
+# endif
+#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)
+#elif defined( linux )
+    config_require(host/data_access/swrun_procfs_status)
+#elif defined( cygwin )
+    config_require(host/data_access/swrun_cygwin)
+#else
+    config_warning(This platform does not yet support hrSWRunTable rewrites)
+    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);
+
+#endif /* NETSNMP_ACCESS_SWRUN_CONFIG_H */
diff --git a/agent/mibgroup/host/data_access/swrun_cygwin.c b/agent/mibgroup/host/data_access/swrun_cygwin.c
new file mode 100644
index 0000000..a1e1475
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun_cygwin.c
@@ -0,0 +1,281 @@
+/*
+ * swrun_cygwin.c:
+ *     hrSWRunTable data access:
+ *     Cygwin interface 
+ */
+#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
+
+#include <windows.h>
+#include <sys/cygwin.h>
+#include <tlhelp32.h>
+#include <psapi.h>
+
+#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/swrun.h>
+#include <net-snmp/data_access/swrun.h>
+
+/*
+ * a lot of this is "stolen" from cygwin ps.cc
+ */
+
+typedef         BOOL(WINAPI * ENUMPROCESSMODULES) (HANDLE hProcess,
+                                                   HMODULE * lphModule,
+                                                   DWORD cb,
+                                                   LPDWORD lpcbNeeded);
+
+typedef         DWORD(WINAPI * GETMODULEFILENAME) (HANDLE hProcess,
+                                                   HMODULE hModule,
+                                                   LPTSTR lpstrFIleName,
+                                                   DWORD nSize);
+
+typedef         DWORD(WINAPI * GETPROCESSMEMORYINFO) (HANDLE hProcess,
+                                                      PPROCESS_MEMORY_COUNTERS
+                                                      pmc, DWORD nSize);
+
+typedef         HANDLE(WINAPI * CREATESNAPSHOT) (DWORD dwFlags,
+                                                 DWORD th32ProcessID);
+
+typedef         BOOL(WINAPI * PROCESSWALK) (HANDLE hSnapshot,
+                                            LPPROCESSENTRY32 lppe);
+
+ENUMPROCESSMODULES myEnumProcessModules;
+GETMODULEFILENAME myGetModuleFileNameEx;
+CREATESNAPSHOT  myCreateToolhelp32Snapshot;
+PROCESSWALK     myProcess32First;
+PROCESSWALK     myProcess32Next;
+GETPROCESSMEMORYINFO myGetProcessMemoryInfo = NULL;
+cygwin_getinfo_types query = CW_GETPINFO;
+
+static BOOL WINAPI
+dummyprocessmodules(HANDLE hProcess,
+                    HMODULE * lphModule, DWORD cb, LPDWORD lpcbNeeded)
+{
+    lphModule[0] = (HMODULE) * lpcbNeeded;
+    *lpcbNeeded = 1;
+    return 1;
+}
+
+static DWORD WINAPI
+GetModuleFileNameEx95(HANDLE hProcess,
+                      HMODULE hModule, LPTSTR lpstrFileName, DWORD n)
+{
+    HANDLE          h;
+    DWORD           pid = (DWORD) hModule;
+    PROCESSENTRY32  proc;
+
+    h = myCreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
+    if (!h)
+        return 0;
+    proc.dwSize = sizeof(proc);
+    if (myProcess32First(h, &proc))
+        do
+            if (proc.th32ProcessID == pid) {
+                CloseHandle(h);
+                strcpy(lpstrFileName, proc.szExeFile);
+                return 1;
+            }
+        while (myProcess32Next(h, &proc));
+    CloseHandle(h);
+    return 0;
+}
+
+#define FACTOR (0x19db1ded53ea710LL)
+#define NSPERSEC 10000000LL
+#define NSPERMSEC 10000LL
+
+static time_t   __stdcall
+to_time_t(PFILETIME ptr)
+{
+    long            rem;
+    long long       x =
+        ((long long) ptr->dwHighDateTime << 32) +
+        ((unsigned) ptr->dwLowDateTime);
+    x -= FACTOR;
+    rem = x % NSPERSEC;
+    rem += NSPERSEC / 2;
+    x /= NSPERSEC;
+    x += rem / NSPERSEC;
+    return x;
+}
+
+static long
+to_msec(PFILETIME ptr)
+{
+    long long       x =
+        ((long long) ptr->dwHighDateTime << 32) +
+        (unsigned) ptr->dwLowDateTime;
+    x /= NSPERMSEC;
+    return x;
+}
+
+OSVERSIONINFO   ver;
+HMODULE         h;
+
+/* ---------------------------------------------------------------------
+ */
+void
+netsnmp_arch_swrun_init(void)
+{
+    memset(&ver, 0, sizeof ver);
+    ver.dwOSVersionInfoSize = sizeof ver;
+    GetVersionEx(&ver);
+
+    if (ver.dwPlatformId == VER_PLATFORM_WIN32_NT) {
+        h = LoadLibrary("psapi.dll");
+        if (h) {
+            myEnumProcessModules   = (ENUMPROCESSMODULES)
+                       GetProcAddress(h, "EnumProcessModules");
+            myGetModuleFileNameEx  = (GETMODULEFILENAME)
+                       GetProcAddress(h, "GetModuleFileNameExA");
+            myGetProcessMemoryInfo = (GETPROCESSMEMORYINFO)
+                       GetProcAddress(h, "GetProcessMemoryInfo");
+            if (myEnumProcessModules && myGetModuleFileNameEx)
+                query = CW_GETPINFO_FULL;
+            else
+                snmp_log(LOG_ERR, "hr_swrun failed NT init\n");
+        } else
+            snmp_log(LOG_ERR, "hr_swrun failed to load psapi.dll\n");
+    } else {
+        h = GetModuleHandle("KERNEL32.DLL");
+        myCreateToolhelp32Snapshot = (CREATESNAPSHOT)
+                       GetProcAddress(h, "CreateToolhelp32Snapshot");
+        myProcess32First = (PROCESSWALK) GetProcAddress(h, "Process32First");
+        myProcess32Next  = (PROCESSWALK) GetProcAddress(h, "Process32Next");
+        myEnumProcessModules  = dummyprocessmodules;
+        myGetModuleFileNameEx = GetModuleFileNameEx95;
+        if (myCreateToolhelp32Snapshot && myProcess32First
+            && myProcess32Next)
+#if 0
+            /*
+             * This doesn't work after all on Win98 SE 
+             */
+            query = CW_GETPINFO_FULL;
+#else
+            query = CW_GETPINFO;
+#endif
+        else
+            snmp_log(LOG_ERR, "hr_swrun failed non-NT init\n");
+    }
+    return;
+}
+
+/* ---------------------------------------------------------------------
+ */
+int
+netsnmp_arch_swrun_container_load( netsnmp_container *container, u_int flags)
+{
+    struct external_pinfo  *curproc;
+    pid_t                   curpid = 0;
+    DWORD                   n;
+    HANDLE                  h;
+    FILETIME                ct, et, kt, ut;
+    PROCESS_MEMORY_COUNTERS pmc;
+    char                   *cp1, *cp2;
+    netsnmp_swrun_entry    *entry;
+
+    cygwin_internal(CW_LOCK_PINFO, 1000);
+    while (curproc = (struct external_pinfo *)
+               cygwin_internal(query, curpid | CW_NEXTPID)) {
+
+        curpid = curproc->pid;
+        if (( PID_EXITED & curproc.process_state ) ||
+               ( ~0xffff & curproc.exitcode ))
+            continue;
+        entry = netsnmp_swrun_entry_create(curpid);
+        if (NULL == entry)
+            continue;   /* error already logged by function */
+        rc = CONTAINER_INSERT(container, entry);
+
+
+        n = lowproc.dwProcessId & 0xffff;
+        h = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, n);
+
+        if (curproc.ppid) {
+            entry->hrSWRunPath_len =
+                sprintf(entry->hrSWRunPath, "%.*s",
+                        (int)sizeof(entry->hrSWRunPath) - 1,
+                        cygwin_conv_to_posix_path(curproc.progname));
+        } else if (query == CW_GETPINFO_FULL) {
+
+            if (h) {
+                HMODULE         hm[1000];
+                if (!myEnumProcessModules(h, hm, sizeof hm, &n))
+                    n = 0;
+                if (n && myGetModuleFileNameEx(h, hm[0], string,
+                                                  sizeof string)) {
+                   entry->hrSWRunPath_len =
+                       sprintf(entry->hrSWRunPath, "%.*s",
+                               (int)sizeof(entry->hrSWRunPath) - 1, string);
+                }
+            }
+        }
+        /*
+         * Set hrSWRunName to be the last component of hrSWRunPath,
+         *    but without any file extension
+         */
+        if ( entry->hrSWRunPath_len ) {
+            cp1 = strrchr( entry->hrSWRunPath, '.' );
+            if ( cp1 )
+                *cp1 = '\0';    /* Mask the file extension */
+
+            cp2  = strrchr( entry->hrSWRunPath, '/' );
+            if (cp2) 
+                cp2++;           /* Find the final component ... */
+            else
+                cp2 = entry->hrSWRunPath;          /* ... if any */
+            entry->hrSWRunName_len =
+                sprintf(entry->hrSWRunName, "%.*s",
+                        (int)sizeof(entry->hrSWRunName) - 1, cp2);
+
+            if ( cp1 )
+                *cp1 = '.';     /* Restore the file extension */
+        }
+
+        /*
+         * XXX - No information regarding process arguments
+         * XXX - No information regarding system processes vs applications
+         */
+
+        if (PID_STOPPED & curproc.process_state ) {
+            entry->hrSWRunStatus = HRSWRUNSTATUS_NOTRUNNABLE;
+        }
+      /*  else if (PID_ZOMBIE & curproc.process_state )  */
+          else if (   ~0xffff & curproc.exitcode )
+        {
+            entry->hrSWRunStatus = HRSWRUNSTATUS_INVALID;
+        } else {
+        /*  entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNABLE;  ?? */
+            entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNING;
+        }
+
+        if (h) {
+            if (GetProcessTimes(h, &ct, &et, &kt, &ut))
+                entry->hrSWRunPerfCPU = (to_msec(&kt) + to_msec(&ut)) / 10;
+            if (myGetProcessMemoryInfo
+                && myGetProcessMemoryInfo(h, &pmc, sizeof pmc))
+                entry->hrSWRunPerfMem = pmc.WorkingSetSize / 1024;
+
+            CloseHandle(h);
+        }
+    }
+    cygwin_internal(CW_UNLOCK_PINFO);
+
+    DEBUGMSGTL(("swrun:load:arch"," loaded %d entries\n",
+                CONTAINER_SIZE(container)));
+
+    return 0;
+}
diff --git a/agent/mibgroup/host/data_access/swrun_darwin.c b/agent/mibgroup/host/data_access/swrun_darwin.c
new file mode 100644
index 0000000..3b00fe3
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun_darwin.c
@@ -0,0 +1,495 @@
+/*
+ * swrun_darwin.c:
+ *     hrSWRunTable data access:
+ *     Darwin
+ */
+/*
+ * 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.
+ */
+#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/container.h>
+#include <net-snmp/library/snmp_debug.h>
+#include <net-snmp/data_access/swrun.h>
+
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <libproc.h>
+#include <sys/proc_info.h>
+#include <sys/sysctl.h>	/* for sysctl() and struct kinfo_proc */
+
+#define __APPLE_API_EVOLVING 1
+#include <sys/acl.h> /* or else CoreFoundation.h barfs */
+#undef __APPLE_API_EVOLVING 
+
+#include <CoreFoundation/CFBase.h>
+#include <CoreFoundation/CFNumber.h>
+#include <CoreFoundation/CFBundle.h>
+#include <CoreServices/CoreServices.h>
+#include <IOKit/IOCFBundle.h>
+#include <mach/mach.h>
+#include <mach/mach_time.h>
+
+/** sigh... can't find Processes.h */
+#ifndef kProcessDictionaryIncludeAllInformationMask 
+#define kProcessDictionaryIncludeAllInformationMask (long)0xFFFFFFFF
+#endif
+#ifndef procNotFound
+#define procNotFound -600
+#endif
+
+/* ---------------------------------------------------------------------
+ */
+static int _kern_argmax;
+static int _set_command_name(netsnmp_swrun_entry *entry);
+
+/** avoid kernel bug in 10.2. 8192 oughta be enough anyways, right? */
+#define MAX_KERN_ARGMAX 8192
+
+/* ---------------------------------------------------------------------
+ */
+void
+netsnmp_arch_swrun_init(void)
+{
+    int    mib[2] = { CTL_KERN, KERN_ARGMAX };
+    size_t size, mib_size = sizeof(mib)/sizeof(mib[0]);
+    
+    DEBUGMSGTL(("swrun:load:arch","init\n"));
+
+    size = sizeof(_kern_argmax);
+    if (sysctl(mib, mib_size, &_kern_argmax, &size, NULL, 0) == -1) {
+        snmp_log(LOG_ERR, "Error in ARGMAX sysctl(): %s", strerror(errno));
+        _kern_argmax = MAX_KERN_ARGMAX;
+    }
+    else if (_kern_argmax > MAX_KERN_ARGMAX) {
+        DEBUGMSGTL(("swrun:load:arch",
+                    "artificially limiting ARGMAX to %d (from %d)\n",
+                    MAX_KERN_ARGMAX, _kern_argmax));
+        _kern_argmax = MAX_KERN_ARGMAX;
+    }
+
+
+}
+
+/* ---------------------------------------------------------------------
+ */
+#define SWRUNINDENT "           "
+int
+netsnmp_arch_swrun_container_load( netsnmp_container *container, u_int flags)
+{
+    int	                 mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL};
+    size_t               buf_size, mib_size = sizeof(mib)/sizeof(mib[0]);
+    struct kinfo_proc   *processes = NULL;
+    struct proc_taskallinfo taskinfo;
+    netsnmp_swrun_entry *entry;
+    int                  rc, num_entries, i;
+
+    DEBUGMSGTL(("swrun:load:arch"," load\n"));
+
+    /*
+     * get size to allocate. This introduces a bit of a race condition,
+     * as the size could change between this call and the next...
+     */
+    rc = sysctl(mib, mib_size, NULL, &buf_size, NULL, 0);
+    if (rc < 0) {
+        snmp_log(LOG_ERR, "KERN_PROC_ALL size sysctl failed: %d\n", rc);
+        return -1;
+    }
+
+    processes = (struct kinfo_proc*) malloc(buf_size);
+    if (NULL == processes) {
+        snmp_log(LOG_ERR, "malloc failed\n");
+        return -1;
+    }
+
+    rc = sysctl(mib, mib_size, processes, &buf_size, NULL, 0);
+    if (rc < 0) {
+        snmp_log(LOG_ERR, "KERN_PROC_ALL sysctl failed: %d\n", rc);
+        free(processes);
+        return -1;
+    }
+    
+    num_entries = buf_size / sizeof(struct kinfo_proc);
+    
+    for (i = 0; i < num_entries; i++) {
+        /*
+         * skip empty names.
+         * p_stat = (SIDL|SRUN|SSLEEP|SSTOP|SZOMB)
+         */
+        if (('\0' == processes[i].kp_proc.p_comm[0]) ||
+            (0 == processes[i].kp_proc.p_pid)) {
+            DEBUGMSGTL(("swrun:load:arch",
+                        " skipping p_comm '%s', pid %5d, p_pstat %d\n",
+                        processes[i].kp_proc.p_comm ? 
+                        processes[i].kp_proc.p_comm : "NULL",
+                        processes[i].kp_proc.p_pid,
+                        processes[i].kp_proc.p_stat));
+            continue;
+        }
+
+        DEBUGMSGTL(("swrun:load:arch"," %s pid %5d\n",
+                    processes[i].kp_proc.p_comm,
+                    processes[i].kp_proc.p_pid));
+
+        entry = netsnmp_swrun_entry_create(processes[i].kp_proc.p_pid);
+        if (NULL == entry)
+            continue; /* error already logged by function */
+        rc = CONTAINER_INSERT(container, entry);
+
+        /*
+         * p_comm is a partial name, but it is all we have at this point.
+         */
+        entry->hrSWRunName_len = snprintf(entry->hrSWRunName,
+                                          sizeof(entry->hrSWRunName)-1,
+                                          "%s", processes[i].kp_proc.p_comm);
+
+        /** sysctl for name, path, params */
+        rc = _set_command_name(entry);
+
+        /*
+         * map p_stat to RunStatus. Odd that there is no 'running' status.
+         */
+        switch(processes[i].kp_proc.p_stat) {
+            case SRUN:
+                entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNABLE;
+                break;
+            case SSLEEP:
+            case SSTOP:
+                entry->hrSWRunStatus = HRSWRUNSTATUS_NOTRUNNABLE;
+                break;
+            case SIDL:
+            case SZOMB:
+            default:
+                entry->hrSWRunStatus = HRSWRUNSTATUS_INVALID;
+                break;
+        } 
+
+        /*
+         * check for system processes
+         */
+        if (P_SYSTEM & processes[i].kp_proc.p_flag) {
+            entry->hrSWRunType = HRSWRUNTYPE_OPERATINGSYSTEM;
+            DEBUGMSGTL(("swrun:load:arch", SWRUNINDENT "SYSTEM\n"));
+        }
+        else entry->hrSWRunType = HRSWRUNTYPE_APPLICATION;
+
+        /*
+         * get mem size, run time
+         */
+        rc = proc_pidinfo( processes[i].kp_proc.p_pid, PROC_PIDTASKALLINFO, 0,
+                           &taskinfo, sizeof(taskinfo));
+        if (sizeof(taskinfo) != rc) {
+            DEBUGMSGTL(("swrun:load:arch", " proc_pidinfo returned %d\n", rc));
+        }
+        else {
+            uint64_t task_mem = taskinfo.ptinfo.pti_resident_size / 1024;
+            union {
+                u_quad_t     uq; /* u_int64_t */
+                UnsignedWide uw; /* struct u_int32_t hi/lo */
+            } at, ns;
+            at.uq = taskinfo.ptinfo.pti_total_user +
+                    taskinfo.ptinfo.pti_total_system;
+            ns = at;
+            ns.uq = ns.uq / 10000000LL; /* nano to deci */
+            if (task_mem > INT32_MAX) {
+                DEBUGMSGTL(("swrun:load:arch", SWRUNINDENT "mem overflow\n"));
+                task_mem = INT32_MAX;
+            }
+            if (ns.uq > INT32_MAX) {
+                DEBUGMSGTL(("swrun:load:arch", SWRUNINDENT "time overflow\n"));
+                ns.uq = INT32_MAX;
+            }
+            entry->hrSWRunPerfMem = task_mem;
+            entry->hrSWRunPerfCPU = ns.uq;
+        }
+    }
+    free(processes);
+
+    DEBUGMSGTL(("swrun:load:arch"," loaded %d entries\n",
+                (int)CONTAINER_SIZE(container)));
+
+    return 0;
+}
+
+/* ---------------------------------------------------------------------
+ * The following code was snagged from Darwin code, and the original
+ * file had the following licences:
+ */
+
+/*
+ * Copyright (c) 2002-2004 Apple Computer, Inc.  All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * The contents of this file constitute Original Code as defined in and
+ * are subject to the Apple Public Source License Version 1.1 (the
+ * "License").  You may not use this file except in compliance with the
+ * License.  Please obtain a copy of the License at
+ * http://www.apple.com/publicsource and read it before using this file.
+ * 
+ * This Original Code and all software distributed under the License are
+ * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ * 
+ * @APPLE_LICENSE_HEADER_END@
+ */
+#ifdef JAGUAR /* xxx configure test? */
+static int
+_set_command_name_jaguar(netsnmp_swrun_entry *entry)
+{
+    int	        mib[3] = {CTL_KERN, KERN_PROCARGS, 0};
+    size_t      procargssize, mib_size = sizeof(mib)/sizeof(mib[0]);
+    char       *arg_end, *exec_path;
+    int        *ip;
+    int         len;
+    char       *command_beg, *command, *command_end;
+    char        arg_buf[MAX_KERN_ARGMAX]; /* max to avoid kernel bug */
+
+    DEBUGMSGTL(("swrun:load:arch:_cn"," pid %d\n", entry->hrSWRunIndex));
+
+    mib[2] = entry->hrSWRunIndex;
+
+    memset(arg_buf, 0x0, sizeof(arg_buf));
+    procargssize = _kern_argmax;
+    if (sysctl(mib, mib_size, arg_buf, &procargssize, NULL, 0) == -1) {
+        snmp_log(LOG_ERR, "Error in PROCARGS sysctl() for %s: %s\n",
+                 entry->hrSWRunName, strerror(errno));
+        entry->hrSWRunPath_len = 0;
+        return -1;
+    }
+
+    /* Set ip just above the end of arg_buf. */
+    arg_end = &arg_buf[procargssize];
+    ip = (int *)arg_end;
+    
+    /*
+     * Skip the last 2 words, since the last is a 0 word, and
+     * the second to last may be as well, if there are no
+     * arguments.
+     */
+    ip -= 3;
+    
+    /* Iterate down the arguments until a 0 word is found. */
+    for (; *ip != 0; ip--) {
+        if (ip == (int *)arg_buf) {
+            DEBUGMSGTL(("swrun:load:arch:_cn"," unexpected toparg\n"));
+            return -1;
+        }
+    }
+    
+    /* The saved exec_path is just above the 0 word. */
+    ip++;
+    exec_path = (char *)ip;
+    DEBUGMSGTL(("swrun:load:arch:_cn"," exec_path %s\n", exec_path));
+    len = strlen(exec_path);
+    strlcpy(entry->hrSWRunPath, exec_path, sizeof(entry->hrSWRunPath));
+    if (len > sizeof(entry->hrSWRunPath)-1) {
+        DEBUGMSGTL(("swrun:load:arch:_cn"," truncating long run path\n"));
+        entry->hrSWRunPath[sizeof(entry->hrSWRunPath)-2] = '$';
+        entry->hrSWRunPath_len = sizeof(entry->hrSWRunPath)-1;
+        DEBUGMSGTL(("swrun:load:arch:_cn"," exec_path %s\n",
+                    entry->hrSWRunPath));
+    }
+    else
+        entry->hrSWRunPath_len = len;
+    
+    /*
+     * Get the beginning of the first argument.  It is word-aligned,
+     * so skip padding '\0' bytes.
+     */
+    command_beg = exec_path + strlen(exec_path);
+    DEBUGMSGTL(("swrun:load:arch:_cn"," command_beg '%s'\n", command_beg));
+    for (; *command_beg == '\0'; command_beg++) {
+        if (command_beg >= arg_end)
+            return -1;
+    }
+    DEBUGMSGTL(("swrun:load:arch:_cn"," command_beg '%s'\n", command_beg));
+    
+    /* Get the basename of command. */
+    command = command_end = command_beg + strlen(command_beg) + 1;
+    for (command--; command >= command_beg; command--) {
+        if (*command == '/')
+            break;
+    }
+    command++;
+    DEBUGMSGTL(("swrun:load:arch:_cn"," command '%s'\n", command));
+    
+    /* Allocate space for the command and copy. */
+    DEBUGMSGTL(("swrun:load:arch:_cn",
+                SWRUNINDENT "kernel name %s\n", command));
+    if (strncmp(command, entry->hrSWRunName, sizeof(entry->hrSWRunName)-1)) {
+        strlcpy(entry->hrSWRunName, command, sizeof(entry->hrSWRunName));
+        entry->hrSWRunName_len = strlen(entry->hrSWRunName);
+        DEBUGMSGTL(("swrun:load:arch:_cn", "**"
+                    SWRUNINDENT "updated name to %s\n", entry->hrSWRunName));
+        return 0;
+    }
+
+    /** no error, no change */
+    return 1;
+}
+#else
+static int
+_set_command_name(netsnmp_swrun_entry *entry)
+{
+    int	        mib[3] = {CTL_KERN, 0, 0};
+    size_t      procargssize, mib_size = sizeof(mib)/sizeof(mib[0]);
+    char       *cp;
+    int         len, nargs;
+    char       *command_beg, *command, *command_end, *exec_path, *argN;
+    char        arg_buf[MAX_KERN_ARGMAX]; /* max to avoid kernel bug */
+
+    /*
+     * arguments
+     */
+    mib[1] = KERN_PROCARGS2;
+    mib[2] = entry->hrSWRunIndex;
+
+    memset(arg_buf, 0x0, sizeof(arg_buf));
+    procargssize = _kern_argmax;
+    if (sysctl(mib, mib_size, arg_buf, &procargssize, NULL, 0) == -1) {
+        snmp_log(LOG_ERR, "Error in PROCARGS2 sysctl() for %s: %s\n",
+                 entry->hrSWRunName, strerror(errno));
+        entry->hrSWRunPath_len = 0;
+        entry->hrSWRunParameters_len = 0;
+        return -1;
+    }
+    else {
+        memcpy(&nargs,arg_buf, sizeof(nargs));
+    }
+
+    exec_path = arg_buf + sizeof(nargs);
+    len = strlen(exec_path);
+    strlcpy(entry->hrSWRunPath, exec_path, sizeof(entry->hrSWRunPath));
+    if (len > sizeof(entry->hrSWRunPath)-1) {
+        DEBUGMSGTL(("swrun:load:arch:_cn"," truncating long run path\n"));
+        entry->hrSWRunPath[sizeof(entry->hrSWRunPath)-2] = '$';
+        entry->hrSWRunPath_len = sizeof(entry->hrSWRunPath)-1;
+    }
+    else
+        entry->hrSWRunPath_len = len;
+
+    /** Skip the saved exec_path. */
+#if 0
+    cp = exec_path + len;
+#else
+    for (cp = exec_path; cp < &arg_buf[procargssize]; cp++) {
+        if (*cp == '\0') 
+            break; /* End of exec_path reached. */
+    }
+    if (cp != exec_path + len) {
+        DEBUGMSGTL(("swrun:load:arch:_cn", " OFF BY %d\n",
+                    (int)((exec_path + len) - cp)));
+        netsnmp_assert( cp == exec_path + len );
+    }
+#endif
+    if (cp == &arg_buf[procargssize]) {
+        DEBUGMSGTL(("swrun:load:arch:_cn"," unexpected end of buffer\n"));
+        return -1;
+    }
+
+    /** Skip trailing '\0' characters. */
+    for (; cp < &arg_buf[procargssize]; cp++) {
+        if (*cp != '\0')
+            break; /* Beginning of first argument reached. */
+    }
+    if (cp == &arg_buf[procargssize]) {
+        DEBUGMSGTL(("swrun:load:arch:_cn"," unexpected end of buffer\n"));
+        return -1;
+    }
+    command_beg = cp;
+
+    /*
+     * Make sure that the command is '\0'-terminated.  This protects
+     * against malicious programs; under normal operation this never
+     * ends up being a problem..
+     */
+    for (; cp < &arg_buf[procargssize]; cp++) {
+        if (*cp == '\0')
+            break; /* End of first argument reached. */
+    }
+    if (cp == &arg_buf[procargssize]) {
+        DEBUGMSGTL(("swrun:load:arch:_cn"," unexpected end of buffer\n"));
+        return -1;
+    }
+    command_end = command = cp;
+    --nargs;
+
+    /*
+     * save arguments
+     */
+    while( nargs && cp < &arg_buf[procargssize] ) {
+        /** Skip trailing '\0' characters from prev arg. */
+        for (; (cp < &arg_buf[procargssize]) && (*cp == 0); cp++) 
+            ; /* noop */
+        if (cp == &arg_buf[procargssize])
+            continue; /* effectively a break */
+    
+        /** save argN start */
+        argN = cp;
+        --nargs;
+        if (0 == nargs)
+            continue; /* effectively a break */
+
+        /** Skip to end of arg */
+        for (; (cp < &arg_buf[procargssize]) && (*cp != 0); cp++) 
+            ;  /* noop */
+        if (cp == &arg_buf[procargssize])
+            continue; /* effectively a break */
+
+        /*
+         * check for overrun into env
+         */
+        if ((*argN != '-') && strchr(argN,'='))  {
+            DEBUGMSGTL(("swrun:load:arch:_cn", " *** OVERRUN INTO ENV %d\n",nargs));
+            continue;
+        }
+
+        /*
+         * save arg
+         */
+        if(entry->hrSWRunParameters_len < sizeof(entry->hrSWRunParameters)-1) {
+            strlcat(&entry->hrSWRunParameters[entry->hrSWRunParameters_len],
+                    argN, sizeof(entry->hrSWRunParameters)-entry->hrSWRunParameters_len-1);
+            entry->hrSWRunParameters_len = strlen(entry->hrSWRunParameters);
+            if ((entry->hrSWRunParameters_len+2 < sizeof(entry->hrSWRunParameters)-1) && (0 != nargs)) {
+                /* add space between params */
+                entry->hrSWRunParameters[entry->hrSWRunParameters_len++] = ' ';
+                entry->hrSWRunParameters[entry->hrSWRunParameters_len] = 0;
+            } else {
+                DEBUGMSGTL(("swrun:load:arch:_cn"," truncating long arg list\n"));
+                entry->hrSWRunParameters[entry->hrSWRunParameters_len++] = '$';
+                entry->hrSWRunParameters[entry->hrSWRunParameters_len] = '0';
+            }
+        }
+    }
+    if (' ' == entry->hrSWRunParameters[entry->hrSWRunParameters_len])
+        entry->hrSWRunParameters[entry->hrSWRunParameters_len--] = 0;
+
+    
+    /* Get the basename of command. */
+    for (command--; command >= command_beg; command--) {
+        if (*command == '/')
+            break;
+    }
+    command++;
+    
+    /* Allocate space for the command and copy. */
+    if (strncmp(command, entry->hrSWRunName, sizeof(entry->hrSWRunName)-1)) {
+        strlcpy(entry->hrSWRunName, command, sizeof(entry->hrSWRunName));
+        entry->hrSWRunName_len = strlen(entry->hrSWRunName);
+        DEBUGMSGTL(("swrun:load:arch:_cn",
+                    " **updated name to %s\n", entry->hrSWRunName));
+    }
+
+    return 0;
+}
+#endif
diff --git a/agent/mibgroup/host/data_access/swrun_kinfo.c b/agent/mibgroup/host/data_access/swrun_kinfo.c
new file mode 100644
index 0000000..7cce6e7
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun_kinfo.c
@@ -0,0 +1,370 @@
+/*
+ * swrun_kinfo.c:
+ *     hrSWRunTable data access:
+ *     kvm_getprocs() interface - FreeBSD, NetBSD, OpenBSD
+ *
+ * NB: later FreeBSD and OpenBSD use different kinfo_proc structures
+ */
+#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_KVM_H
+#include <kvm.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SYSCTL_H
+#include <sys/sysctl.h>
+#endif
+#ifdef HAVE_SYS_PROC_H
+#include <sys/proc.h>
+#endif
+#ifdef HAVE_SYS_USER_H
+#include <sys/user.h>
+#endif
+#ifdef HAVE_UVM_UVM_EXTERNAL_H
+#include <uvm/uvm_external.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/swrun.h>
+
+extern kvm_t *kd;
+
+
+#if defined(freebsd5) && __FreeBSD_version >= 500014
+    /*
+     * later FreeBSD kinfo_proc field names
+     */
+#define SWRUN_TABLE	kinfo_proc
+#define SWRUN_K_STAT	ki_stat
+#define SWRUN_K_PID	ki_pid
+#define SWRUN_K_PPID	ki_ppid
+#define SWRUN_K_TID	ki_tid
+#define SWRUN_K_COMM	ki_comm
+#define SWRUN_K_FLAG	ki_flag
+#define SWRUN_K_CLASS	ki_pri.pri_class
+
+#elif HAVE_KVM_GETPROC2 || defined(openbsd5)
+    /*
+     * newer NetBSD, OpenBSD kinfo_proc2 field names
+     */
+#if defined(openbsd5)
+#define SWRUN_TABLE	kinfo_proc
+#else
+#define SWRUN_TABLE	kinfo_proc2
+#endif
+#define SWRUN_K_STAT	p_stat
+#define SWRUN_K_PID	p_pid
+#define SWRUN_K_COMM	p_comm
+#define SWRUN_K_FLAG	p_flag
+/*      SWRUN_K_CLASS	not defined     */
+
+#elif defined(dragonfly)
+    /*
+     * DragonFly is different ...
+     */
+#define SWRUN_TABLE	kinfo_proc
+#define SWRUN_K_STAT	kp_stat
+#define SWRUN_K_PID 	kp_pid
+#define SWRUN_K_COMM	kp_comm
+#define SWRUN_K_FLAG	kp_flags
+/*      SWRUN_K_CLASS	not defined     */
+
+#else
+    /*
+     * early FreeBSD, NetBSD, OpenBSD kinfo_proc field names
+     */
+#define SWRUN_TABLE	kinfo_proc
+#define SWRUN_K_STAT	kp_proc.p_stat
+#define SWRUN_K_PID	kp_proc.p_pid
+#define SWRUN_K_COMM	kp_proc.p_comm
+#define SWRUN_K_FLAG	kp_proc.p_flag
+/*      SWRUN_K_CLASS	not defined     */
+#endif
+
+/*
+ *  Define dummy values if not already provided by the system
+ */
+
+#ifdef dragonfly
+
+/*
+ * DragonFly is special. p_stat is an enum!
+ */
+
+#define SRUN	200
+#define SSLEEP	202
+#define SWAIT	203
+#define SLOCK	205
+#define SDEAD	208
+#define SONPROC	209
+
+
+#else
+
+#ifndef SRUN
+#define SRUN	200	/* Defined by FreeBSD/OpenBSD, missing in  NetBSD */
+#endif
+#ifndef SACTIVE
+#define SACTIVE	201	/* Defined by  NetBSD, missing in FreeBSD/OpenBSD */
+#endif
+#ifndef SSLEEP
+#define SSLEEP	202	/* Defined by FreeBSD/OpenBSD, missing in  NetBSD */
+#endif
+#ifndef SWAIT
+#define SWAIT	203	/* Defined by FreeBSD, missing in  NetBSD/OpenBSD */
+#endif
+#ifndef SSTOP
+#define SSTOP	204	/* Defined by FreeBSD/NetBSD/OpenBSD */
+#endif
+#ifndef SLOCK
+#define SLOCK	205	/* Defined by FreeBSD, missing in NetBSD/OpenBSD */
+#endif
+#ifndef SIDL
+#define SIDL	206	/* Defined by FreeBSD/NetBSD/OpenBSD */
+#endif
+#ifndef SZOMB
+#define SZOMB	207	/* Defined by FreeBSD/NetBSD/OpenBSD */
+#endif
+#ifndef SDEAD
+#define SDEAD	208	/* Defined by OpenBSD, missing in FreeBSD/NetBSD */
+#endif
+#ifndef SONPROC
+#define SONPROC	209	/* Defined by OpenBSD, missing in FreeBSD/NetBSD */
+#endif
+
+#endif
+
+/* ---------------------------------------------------------------------
+ */
+void
+netsnmp_arch_swrun_init(void)
+{
+#if NETSNMP_CAN_USE_SYSCTL && defined(CTL_KERN) && defined(KERN_MAXPROC)
+    extern int _swrun_max;
+    size_t max_size = sizeof(_swrun_max);
+    int maxproc_mib[] = { CTL_KERN, KERN_MAXPROC };
+    sysctl(maxproc_mib, 2, &_swrun_max, &max_size, NULL, 0);
+#endif
+    
+    return;
+}
+
+/* ---------------------------------------------------------------------
+ */
+int
+netsnmp_arch_swrun_container_load( netsnmp_container *container, u_int flags)
+{
+    struct SWRUN_TABLE  *proc_table;
+    int                  nprocs, i, rc;
+    char                 buf[BUFSIZ+1], **argv;
+    netsnmp_swrun_entry *entry;
+
+    if ( 0 == kd ) {
+        DEBUGMSGTL(("swrun:load:arch"," Can't query kvm info\n"));
+        return 1;     /* No handle for retrieving process table */
+    }
+#if defined(openbsd5)
+    proc_table = kvm_getprocs(kd, KERN_PROC_KTHREAD, 0, sizeof(struct kinfo_proc), &nprocs );
+#elif defined(HAVE_KVM_GETPROC2)
+    proc_table = kvm_getproc2(kd, KERN_PROC_ALL, 0, sizeof(struct kinfo_proc2), &nprocs );
+#else
+    proc_table = kvm_getprocs(kd, KERN_PROC_ALL, 0, &nprocs );
+#endif
+    for ( i=0 ; i<nprocs; i++ ) {
+        if ( 0 == proc_table[i].SWRUN_K_STAT )
+            continue;
+        if ( -1 == proc_table[i].SWRUN_K_PID )
+            continue;
+#ifdef SWRUN_K_TID
+	if ( 0 == proc_table[i].SWRUN_K_PPID )
+	    proc_table[i].SWRUN_K_PID = proc_table[i].SWRUN_K_TID;
+#endif
+        entry = netsnmp_swrun_entry_create(proc_table[i].SWRUN_K_PID);
+        if (NULL == entry)
+            continue;   /* error already logged by function */
+        rc = CONTAINER_INSERT(container, entry);
+
+        /*
+         * There are two possible sources for the command being run:
+         *   - SWRUN_K_COMM  (from the proc_table entry directly)
+         *   - running kvm_getargv on the process entry.
+         *
+         * We'll use argv[0] (if set) for hrSWRunPath,
+         *   since that might potentially contain the
+         *   absolute path to the running binary.
+         * We'll use SWRUN_K_COMM for hrSWRunName,
+         *   and as an alternative for hrSWRunPath
+         */
+#if HAVE_KVM_GETPROC2
+        argv = kvm_getargv2( kd, &(proc_table[i]), 0);
+#else
+        argv = kvm_getargv(  kd, &(proc_table[i]), BUFSIZ);
+#endif
+
+        entry->hrSWRunName_len = sprintf(entry->hrSWRunName, "%.*s",
+                                         (int)sizeof(entry->hrSWRunName) - 1,
+                                         proc_table[i].SWRUN_K_COMM);
+
+        if (argv && *argv) {
+            entry->hrSWRunPath_len = sprintf(entry->hrSWRunPath, "%.*s",
+                                             (int)sizeof(entry->hrSWRunPath)-1,
+                                             argv[0]);
+        } else {
+            memcpy( entry->hrSWRunPath, entry->hrSWRunName,
+                                        entry->hrSWRunName_len );
+            entry->hrSWRunPath_len = entry->hrSWRunName_len;
+        }
+
+        /*
+         * Stitch together the rest of argv[] to build hrSWRunParameters
+         *
+         * Note:
+         *   We add a separating space before each argv[] parameter,
+         *   *including* the first one.  So we need to skip this
+         *   leading space (buf[0]) when setting hrSWRunParameters.
+         * This is also why we cleared the first *two* characters
+         *   in the buffer initially. If there were no command-line
+         *   arguments, then buf[1] would still be a null string.
+         */
+        buf[0] = '\0';
+        buf[1] = '\0';
+        if (argv)
+            argv++;    /* Skip argv[0] */
+        while ( argv && *argv ) {
+            strlcat(buf, " ", sizeof(buf));
+            strlcat(buf, *argv, sizeof(buf));
+            argv++;
+        }
+        if (strlen(buf) >= BUFSIZ-10)
+            snmp_log(LOG_ERR, "params %lu/%d %s\n", strlen(buf), BUFSIZ, buf);
+        entry->hrSWRunParameters_len =
+            sprintf(entry->hrSWRunParameters, "%.*s",
+                    (int)sizeof(entry->hrSWRunParameters) - 1, buf+1);
+
+        entry->hrSWRunType = (P_SYSTEM & proc_table[i].SWRUN_K_FLAG) 
+#ifdef SWRUN_K_CLASS
+                             ? ((PRI_ITHD == proc_table[i].SWRUN_K_CLASS)
+                                ? 3  /* device driver    */
+                                : 2  /* operating system */
+                               )
+                             : 4  /*  application     */
+#else
+                             ? 2  /* operating system */
+                             : 4  /*  application     */
+#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:
+	case SACTIVE:
+        case SWAIT:   entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNABLE;
+                      break;
+        case SIDL:
+        case SSTOP:
+        case SLOCK:   entry->hrSWRunStatus = HRSWRUNSTATUS_NOTRUNNABLE;
+                      break;
+
+        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;
+	 entry->hrSWRunPerfCPU += (proc_table[i].ki_rusage.ru_stime.tv_sec*1000000 + proc_table[i].ki_rusage.ru_stime.tv_usec) / 10000;
+	 entry->hrSWRunPerfCPU += (proc_table[i].ki_rusage_ch.ru_utime.tv_sec*1000000 + proc_table[i].ki_rusage_ch.ru_utime.tv_usec) / 10000;
+	 entry->hrSWRunPerfCPU += (proc_table[i].ki_rusage_ch.ru_stime.tv_sec*1000000 + proc_table[i].ki_rusage_ch.ru_stime.tv_usec) / 10000;
+	 entry->hrSWRunPerfMem  = proc_table[i].ki_rssize * (getpagesize()/1024);  /* in kB */
+#elif defined(HAVE_KVM_GETPROC2) || defined(openbsd5)
+        /*
+         * newer NetBSD, OpenBSD
+         */
+	entry->hrSWRunPerfCPU = proc_table[i].p_rtime_sec*100;
+	entry->hrSWRunPerfCPU += proc_table[i].p_rtime_usec / 10000;
+
+        entry->hrSWRunPerfMem  = proc_table[i].p_vm_rssize;
+        entry->hrSWRunPerfMem *= (getpagesize() / 1024);
+#elif defined(dragonfly) && __DragonFly_version >= 190000
+	entry->hrSWRunPerfCPU  = proc_table[i].kp_lwp.kl_uticks;
+	entry->hrSWRunPerfCPU += proc_table[i].kp_lwp.kl_sticks;
+	entry->hrSWRunPerfCPU += proc_table[i].kp_lwp.kl_iticks;
+	entry->hrSWRunPerfCPU = entry->hrSWRunPerfCPU / 10000;
+
+	entry->hrSWRunPerfMem  = proc_table[i].kp_vm_map_size / 1024;
+#elif defined(dragonfly)
+	entry->hrSWRunPerfCPU  = proc_table[i].kp_eproc.e_uticks;
+	entry->hrSWRunPerfCPU += proc_table[i].kp_eproc.e_sticks;
+	entry->hrSWRunPerfCPU += proc_table[i].kp_eproc.e_iticks;
+
+	entry->hrSWRunPerfMem  = proc_table[i].kp_vm_map_size / 1024;
+
+#else
+        /*
+         * early FreeBSD, NetBSD, OpenBSD
+         */
+        entry->hrSWRunPerfCPU  = proc_table[i].kp_proc.p_uticks;
+        entry->hrSWRunPerfCPU += proc_table[i].kp_proc.p_sticks;
+        entry->hrSWRunPerfCPU += proc_table[i].kp_proc.p_iticks;
+        entry->hrSWRunPerfMem  = proc_table[i].kp_eproc.e_vm.vm_rssize;
+        entry->hrSWRunPerfMem *= (getpagesize() / 1024);
+#endif
+    }
+    /*
+     * 'proc_table' is owned by the kvm library,
+     *   so shouldn't be freed here.
+     */
+
+    DEBUGMSGTL(("swrun:load:arch","loaded %d entries\n",
+                (int)CONTAINER_SIZE(container)));
+
+    return 0;
+}
diff --git a/agent/mibgroup/host/data_access/swrun_kvm_proc.c b/agent/mibgroup/host/data_access/swrun_kvm_proc.c
new file mode 100644
index 0000000..7156cf9
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun_kvm_proc.c
@@ -0,0 +1,164 @@
+/*
+ * swrun_kvm_proc.c:
+ *     hrSWRunTable data access:
+ *     kvm_getproc() interface - Solaris
+ */
+#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_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_SYS_USER_H
+#define _KMEMUSER
+#include <sys/user.h>
+#endif
+#ifdef HAVE_SYS_PROC_H
+#include <sys/proc.h>
+#endif
+    /* XXX - should really be protected */
+#include <sys/var.h>
+
+#ifdef HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+#ifdef HAVE_KVM_H
+#include <kvm.h>
+#endif
+#ifdef HAVE_KSTAT_H
+#include <kstat.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/swrun.h>
+#include "kernel.h"
+#include "kernel_sunos5.h"
+
+/* ---------------------------------------------------------------------
+ */
+void
+netsnmp_arch_swrun_init(void)
+{
+    extern int _swrun_max;
+    kstat_ctl_t *ksc;
+    kstat_t     *ks;
+    struct var   v;
+
+    if (NULL != (ksc = kstat_open())) {
+        if ((NULL != (ks  = kstat_lookup(ksc, "unix", 0, "var"))) &&
+            ( -1  != kstat_read(ksc, ks, &v ))) {
+            _swrun_max = v.v_proc;
+        }
+        kstat_close(ksc);
+    }
+    return;
+}
+
+/* ---------------------------------------------------------------------
+ */
+int
+netsnmp_arch_swrun_container_load( netsnmp_container *container, u_int flags)
+{
+    DIR                 *procdir = NULL;
+    struct dirent       *procentry_p;
+    struct proc         *proc_buf;
+    int                  pid, rc, i;
+    char                *cp;
+    netsnmp_swrun_entry *entry;
+    
+    /*
+     * Even if we're using kvm_proc() to retrieve information
+     *   about a particular process, we seem to use /proc to get
+     *   the initial list of processes to report on.
+     */
+    procdir = opendir("/proc");
+    if ( NULL == procdir ) {
+        snmp_log( LOG_ERR, "Failed to open /proc" );
+        return -1;
+    }
+
+    /*
+     * Walk through the list of processes in the /proc tree
+     */
+    while ( NULL != (procentry_p = readdir( procdir ))) {
+        pid = atoi( procentry_p->d_name );
+        if ( 0 == pid )
+            continue;   /* Presumably '.' or '..' */
+
+        entry = netsnmp_swrun_entry_create(pid);
+        if (NULL == entry)
+            continue;   /* error already logged by function */
+        if (NULL == (proc_buf = kvm_getproc( kd, pid))) {
+            /* release entry */
+            continue;
+        }
+        rc = CONTAINER_INSERT(container, entry);
+
+        entry->hrSWRunName_len = sprintf(entry->hrSWRunName, "%.*s",
+                                         (int)sizeof(entry->hrSWRunName)-1,
+                                         proc_buf->p_user.u_comm);
+        /*
+         *  Split u_psargs into two:
+         *     argv[0]   is hrSWRunPath
+         *     argv[1..] is hrSWRunParameters
+         */
+        for ( cp = proc_buf->p_user.u_psargs; ' ' == *cp; cp++ )
+            ;
+        *cp = '\0';    /* End of argv[0] */
+        entry->hrSWRunPath_len = sprintf(entry->hrSWRunPath, "%.*s",
+                                          (int)sizeof(entry->hrSWRunPath)-1,
+                                          proc_buf->p_user.u_psargs);
+        entry->hrSWRunParameters_len =
+            sprintf(entry->hrSWRunParameters, "%.*s",
+                    (int)sizeof(entry->hrSWRunParameters) - 1, cp + 1);
+        *cp = ' ';     /* Restore u_psargs value */
+
+        /*
+         * check for system processes
+         */
+        entry->hrSWRunType = (SSYS & proc_buf->p_flag)
+                              ? 2   /* kernel process */
+                              : 4   /*  application   */
+                              ;
+
+        switch (proc_buf->p_stat) {
+        case SRUN:
+        case SONPROC: entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNING;
+                      break;
+        case SSLEEP:  entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNABLE;
+                      break;
+        case SSTOP:   entry->hrSWRunStatus = HRSWRUNSTATUS_NOTRUNNABLE;
+                      break;
+        case SIDL:
+        case SZOMB:
+        default:      entry->hrSWRunStatus = HRSWRUNSTATUS_INVALID;
+                      break;
+        }
+        
+        entry->hrSWRunPerfCPU  = (proc_buf->p_utime * 100);
+        entry->hrSWRunPerfCPU += (proc_buf->p_stime * 100);
+        entry->hrSWRunPerfMem  =  proc_buf->p_swrss;
+		/* XXX - is this reported in kB? */
+    }
+    closedir( procdir );
+
+    DEBUGMSGTL(("swrun:load:arch"," loaded %d entries\n",
+                CONTAINER_SIZE(container)));
+
+    return 0;
+}
diff --git a/agent/mibgroup/host/data_access/swrun_nlist.c b/agent/mibgroup/host/data_access/swrun_nlist.c
new file mode 100644
index 0000000..5db6c9c
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun_nlist.c
@@ -0,0 +1,114 @@
+/*
+ * swrun_nlist.c:
+ *     hrSWRunTable data access:
+ *     nlist() interface
+ */
+#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
+
+#include <net-snmp/agent/auto_nlist.h>
+
+#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/swrun.h>
+
+/* ---------------------------------------------------------------------
+ */
+void
+netsnmp_arch_swrun_init(void)
+{
+    extern int _swrun_max;
+
+    auto_nlist(  PROC_SYMBOL, 0, 0);
+    auto_nlist( NPROC_SYMBOL, (char *)&_swrun_max, sizeof(int));
+    return;
+}
+
+/* ---------------------------------------------------------------------
+ */
+int
+netsnmp_arch_swrun_container_load( netsnmp_container *container, u_int flags)
+{
+    struct proc         *proc_table;
+    int                  proc_type_base;
+    int                  nproc, i, rc;
+    netsnmp_swrun_entry *entry;
+
+    auto_nlist( NPROC_SYMBOL, (char *)&nproc, sizeof(int));
+    proc_table = (struct proc *) malloc(nproc*(sizeof(struct proc)));
+
+    auto_nlist(  PROC_SYMBOL, (char *)&proc_table_base, sizeof(int));
+    NETSNMP_KLOOKUP(proc_table_base, (char *)proc_table, 
+                                        nproc*(sizeof(struct proc)));
+
+    for ( i=0 ; i<nproc; i++ ) {
+        if (0 == proc_table[i].p_stat)
+            continue;	/* Skip unused entries */
+        entry = netsnmp_swrun_entry_create(proc_table[i].p_pid);
+        if (NULL == entry)
+            continue;   /* error already logged by function */
+        rc = CONTAINER_INSERT(container, entry);
+
+        /*
+         * XXX - What information does 'struct proc' contain?
+         */
+        
+/*
+ Apparently no process name/argument information
+        entry->hrSWRunName_len = snprintf(entry->hrSWRunName,
+                                   sizeof(entry->hrSWRunName)-1,
+                                          "%s", proc_table[i].???);
+        entry->hrSWRunPath_len = snprintf(entry->hrSWRunPath,
+                                   sizeof(entry->hrSWRunPath)-1,
+                                          "%s", proc_table[i].???);
+        entry->hrSWRunParameters_len = snprintf(entry->hrSWRunParameters,
+                                         sizeof(entry->hrSWRunParameters)-1,
+                                          "%s", ???);
+ */
+
+        switch (proc_table[i].p_stat) {
+/* XXX - which names to use ?? */
+        case SACTIVE:
+        case SRUN:
+        case SONPROC: entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNING;
+                      break;
+        case SSWAP:
+        case SSLEEP:
+        case SWAIT:   entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNABLE;
+                      break;
+        case SSTOP:   entry->hrSWRunStatus = HRSWRUNSTATUS_NOTRUNNABLE;
+                      break;
+        case SIDL:
+        case SZOMB:
+        default:      entry->hrSWRunStatus = HRSWRUNSTATUS_INVALID;
+                      break;
+        }
+
+
+        entry->hrSWRunPerfCPU  = (proc_table[i].p_utime.tv_sec  * 100);
+        entry->hrSWRunPerfCPU += (proc_table[i].p_utime.tv_usec / 10000);
+        entry->hrSWRunPerfCPU += (proc_table[i].p_stime.tv_sec  * 100);
+        entry->hrSWRunPerfCPU += (proc_table[i].p_stime.tv_usec / 10000);
+    /*
+     or entry->hrSWRunPerfCPU  = proc_table[i].p_time;
+     */
+    }
+    free(proc_table);
+
+    DEBUGMSGTL(("swrun:load:arch"," loaded %d entries\n",
+                CONTAINER_SIZE(container)));
+
+    return 0;
+}
diff --git a/agent/mibgroup/host/data_access/swrun_null.c b/agent/mibgroup/host/data_access/swrun_null.c
new file mode 100644
index 0000000..343d40e
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun_null.c
@@ -0,0 +1,44 @@
+/*
+ * swrun_null.c:
+ *     hrSWRunTable data access:
+ *     dummy interface for non-supported systems
+ */
+#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
+
+#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/swrun.h>
+
+/* ---------------------------------------------------------------------
+ */
+void
+netsnmp_arch_swrun_init(void)
+{
+    /* Nothing to do */
+    return;
+}
+
+/* ---------------------------------------------------------------------
+ */
+int
+netsnmp_arch_swrun_container_load( netsnmp_container *container, u_int flags)
+{
+    /* Nothing to do */
+    DEBUGMSGTL(("swrun:load:arch"," loaded %d entries\n",
+                CONTAINER_SIZE(container)));
+
+    return 0;
+}
diff --git a/agent/mibgroup/host/data_access/swrun_procfs_psinfo.c b/agent/mibgroup/host/data_access/swrun_procfs_psinfo.c
new file mode 100644
index 0000000..ed961ee
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun_procfs_psinfo.c
@@ -0,0 +1,147 @@
+/*
+ * swrun_procfs_psinfo.c:
+ *     hrSWRunTable data access:
+ *     /proc/{pid}/psinfo interface - Solaris
+ */
+#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_DIRENT_H
+#include <dirent.h>
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+#define HAVE_SYS_PROCFS_H    /* XXX - Needs a configure check! */
+#ifdef HAVE_SYS_PROCFS_H
+#define _KERNEL              /* For psinfo_t */
+#include <sys/procfs.h>
+#undef _KERNEL
+#endif
+#ifdef HAVE_SYS_PROC_H
+#include <sys/proc.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/swrun.h>
+
+/* ---------------------------------------------------------------------
+ */
+void
+netsnmp_arch_swrun_init(void)
+{
+    /* Nothing to do */
+    return;
+}
+
+/* ---------------------------------------------------------------------
+ */
+int
+netsnmp_arch_swrun_container_load( netsnmp_container *container, u_int flags)
+{
+    DIR                 *procdir = NULL;
+    struct dirent       *procentry_p;
+    psinfo_t             psinfo;
+    int                  pid, rc, fd;
+    char                *cp, buf[512];
+    netsnmp_swrun_entry *entry;
+
+    procdir = opendir("/proc");
+    if ( NULL == procdir ) {
+        snmp_log( LOG_ERR, "Failed to open /proc" );
+        return -1;
+    }
+
+    /*
+     * Walk through the list of processes in the /proc tree
+     */
+    while ( NULL != (procentry_p = readdir( procdir ))) {
+        pid = atoi( procentry_p->d_name );
+        if ( 0 == pid )
+            continue;   /* Presumably '.' or '..' */
+
+        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
+         *   from the various /proc{PID}/ interface files
+         */
+
+        snprintf( buf, sizeof(buf), "/proc/%d/psinfo", pid );
+        fd = open( buf, O_RDONLY );
+        read( fd, &psinfo, sizeof(psinfo));
+        close(fd);
+
+        entry->hrSWRunName_len
+            = sprintf(entry->hrSWRunName, "%.*s",
+                      (int)sizeof(entry->hrSWRunName) - 1,
+                      psinfo.pr_fname);
+        /*
+         *  Split pr_psargs into two:
+         *     argv[0]   is hrSWRunPath
+         *     argv[1..] is hrSWRunParameters
+         */
+        for ( cp = psinfo.pr_psargs; ' ' == *cp; cp++ )
+            ;
+        *cp = '\0';    /* End of argv[0] */
+        entry->hrSWRunPath_len
+            = sprintf(entry->hrSWRunPath, "%.*s",
+                      (int)sizeof(entry->hrSWRunPath) - 1,
+                      psinfo.pr_psargs);
+
+        entry->hrSWRunParameters_len
+            = sprintf(entry->hrSWRunParameters, "%.*s",
+                      (int)sizeof(entry->hrSWRunParameters) - 1, cp+1);
+        *cp = ' ';     /* Restore pr_psargs value */
+
+        /*
+         * check for system processes
+         */
+        entry->hrSWRunType = (PR_ISSYS & psinfo.pr_flag)
+                              ? 2   /* kernel process */
+                              : 4   /*  application   */
+                              ;
+
+        switch (psinfo.pr_lwp.pr_state) {
+        case SRUN:
+        case SONPROC: entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNING;
+                      break;
+        case SSLEEP:  entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNABLE;
+                      break;
+        case SSTOP:   entry->hrSWRunStatus = HRSWRUNSTATUS_NOTRUNNABLE;
+                      break;
+        case SIDL:
+        case SZOMB:
+        default:      entry->hrSWRunStatus = HRSWRUNSTATUS_INVALID;
+                      break;
+        }
+        
+        entry->hrSWRunPerfCPU  = (psinfo.pr_time.tv_sec * 100);
+        entry->hrSWRunPerfCPU += (psinfo.pr_time.tv_nsec / 10000000);
+        entry->hrSWRunPerfMem  =  psinfo.pr_rssize;
+		/* XXX - is this reported in kB? */
+    }
+    closedir( procdir );
+
+    DEBUGMSGTL(("swrun:load:arch"," loaded %d entries\n",
+                (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
new file mode 100644
index 0000000..ef9e269
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun_procfs_status.c
@@ -0,0 +1,220 @@
+/*
+ * swrun_procfs_linux.c:
+ *     hrSWRunTable data access:
+ *     /proc/{pid}/status interface - Linux
+ */
+#include <net-snmp/net-snmp-config.h>
+
+#include <stdio.h>
+#include <ctype.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_DIRENT_H
+#include <dirent.h>
+#endif
+#ifdef HAVE_LINUX_TASKS_H
+#include <linux/tasks.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/swrun.h>
+
+static long pagesize;
+static long sc_clk_tck;
+
+/* ---------------------------------------------------------------------
+ */
+void
+netsnmp_arch_swrun_init(void)
+{
+#ifdef HAVE_LINUX_TASKS_H
+    extern int _swrun_max = NR_TASKS;   /* from <linux/tasks.h> */
+#endif
+    
+    pagesize = getpagesize();
+    sc_clk_tck = sysconf(_SC_CLK_TCK);
+    return;
+}
+
+/* ---------------------------------------------------------------------
+ */
+int
+netsnmp_arch_swrun_container_load( netsnmp_container *container, u_int flags)
+{
+    DIR                 *procdir = NULL;
+    struct dirent       *procentry_p;
+    FILE                *fp;
+    int                  pid, i;
+    unsigned long long   cpu;
+    char                 buf[BUFSIZ], buf2[BUFSIZ], *cp, *cp1;
+    netsnmp_swrun_entry *entry;
+    
+    procdir = opendir("/proc");
+    if ( NULL == procdir ) {
+        snmp_log( LOG_ERR, "Failed to open /proc" );
+        return -1;
+    }
+
+    /*
+     * Walk through the list of processes in the /proc tree
+     */
+    while ( NULL != (procentry_p = readdir( procdir ))) {
+        pid = atoi( procentry_p->d_name );
+        if ( 0 == pid )
+            continue;   /* Presumably '.' or '..' */
+
+        entry = netsnmp_swrun_entry_create(pid);
+        if (NULL == entry)
+            continue;   /* error already logged by function */
+
+        /*
+         * Now extract the interesting information
+         *   from the various /proc{PID}/ interface files
+         */
+
+        /*
+         *   Name:  process name
+         */
+        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));
+        if (fgets( buf, BUFSIZ-1, fp ) == NULL) {
+            fclose(fp);
+            netsnmp_swrun_entry_free(entry);
+            continue;
+        }
+        fclose(fp);
+
+        for ( cp = buf; *cp != ':'; cp++ )
+            ;
+        while (isspace(*(++cp)))	/* Skip ':' and following spaces */
+            ;
+        entry->hrSWRunName_len = snprintf(entry->hrSWRunName,
+                                   sizeof(entry->hrSWRunName)-1, "%s", cp);
+        if ( '\n' == entry->hrSWRunName[ entry->hrSWRunName_len-1 ]) {
+            entry->hrSWRunName[ entry->hrSWRunName_len-1 ] = '\0';
+            entry->hrSWRunName_len--;           /* Stamp on trailing newline */
+        }
+
+        /*
+         *  Command Line:
+         *     argv[0] '\0' argv[1] '\0' ....
+         */
+        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 != NULL) {
+            /*
+             *     argv[0]   is hrSWRunPath
+             */ 
+            entry->hrSWRunPath_len = snprintf(entry->hrSWRunPath,
+                                       sizeof(entry->hrSWRunPath)-1, "%s", buf);
+            /*
+             * Stitch together argv[1..] to construct hrSWRunParameters
+             */
+            cp = buf + entry->hrSWRunPath_len+1;
+            while ( 1 ) {
+                while (*cp)
+                    cp++;
+                if ( '\0' == *(cp+1))
+                    break;      /* '\0''\0' => End of command line */
+                *cp = ' ';
+            }
+            entry->hrSWRunParameters_len
+                = sprintf(entry->hrSWRunParameters, "%.*s",
+                          (int)sizeof(entry->hrSWRunParameters) - 1,
+                          buf + entry->hrSWRunPath_len + 1);
+        } else {
+            /* empty /proc/PID/cmdline, it's probably a kernel thread */
+            entry->hrSWRunPath_len = 0;
+            entry->hrSWRunParameters_len = 0;
+            entry->hrSWRunType = HRSWRUNTYPE_OPERATINGSYSTEM;
+        }
+
+        /*
+         *   {xxx} {xxx} STATUS  {xxx}*10  UTIME STIME  {xxx}*8 RSS
+         */
+        snprintf( buf, BUFSIZ, "/proc/%d/stat", pid );
+        fp = fopen( buf, "r" );
+        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;
+        while ( ' ' != *(cp++))    /* Skip first field */
+            ;
+        cp1 = cp;                  /* Skip second field */
+        while (*cp1) {
+            if (*cp1 == ')') cp = cp1;
+            cp1++;
+        }
+        cp += 2;
+        
+        switch (*cp) {
+        case 'R':  entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNING;
+                   break;
+        case 'S':  entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNABLE;
+                   break;
+        case 'D':
+        case 'T':  entry->hrSWRunStatus = HRSWRUNSTATUS_NOTRUNNABLE;
+                   break;
+        case 'Z':
+        default:   entry->hrSWRunStatus = HRSWRUNSTATUS_INVALID;
+                   break;
+        }
+        for (i=11; i; i--) {   /* Skip STATUS + 10 fields */
+            while (' ' != *(++cp))
+                ;
+            cp++;
+        }
+        cpu  = atol( cp );                     /*  utime */
+        while ( ' ' != *(++cp))
+            ;
+        cpu += atol( cp );                     /* +stime */
+        entry->hrSWRunPerfCPU  = cpu * 100 / sc_clk_tck;
+
+        for (i=9; i; i--) {   /* Skip stime + 8 fields */
+            while (' ' != *(++cp))
+                ;
+            cp++;
+        }
+        entry->hrSWRunPerfMem  = atol( cp );       /* rss   */
+        entry->hrSWRunPerfMem *= (pagesize/1024);  /* in kB */
+        CONTAINER_INSERT(container, entry);
+    }
+    closedir( procdir );
+
+    DEBUGMSGTL(("swrun:load:arch"," loaded %" NETSNMP_PRIz "d entries\n",
+                CONTAINER_SIZE(container)));
+
+    return 0;
+}
diff --git a/agent/mibgroup/host/data_access/swrun_procinfo.c b/agent/mibgroup/host/data_access/swrun_procinfo.c
new file mode 100644
index 0000000..14640e1
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun_procinfo.c
@@ -0,0 +1,130 @@
+/*
+ * swrun_procinfo.c:
+ *     hrSWRunTable data access:
+ *     getprocs() interface - AIX
+ */
+#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
+
+#include <procinfo.h>
+
+#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/swrun.h>
+
+int avail = 1024;    /* Size of table to allocate */
+
+/* ---------------------------------------------------------------------
+ */
+void
+netsnmp_arch_swrun_init(void)
+{
+    /* Nothing to do */
+    return;
+}
+
+/* ---------------------------------------------------------------------
+ */
+int
+netsnmp_arch_swrun_container_load( netsnmp_container *container, u_int flags)
+{
+    struct procsinfo    *proc_table;
+    pid_t                proc_index = 0;
+    int                  nprocs, i;
+    char                 pentry[128], *ppentry, fullpath[128];
+    netsnmp_swrun_entry *entry;
+
+    /*
+     * Create a buffer for the process table, based on the size of
+     *   the table the last time we loaded this information.
+     * If this isn't big enough, keep increasing the size of the
+     *   table until we can retrieve the whole thing.
+     */
+    proc_table = (struct procsinfo *) malloc(avail*(sizeof(struct procsinfo)));
+    while ( avail == (nprocs = getprocs(proc_table, sizeof(struct procsinfo),
+                                                 0, sizeof(struct fdsinfo),
+                                                 &proc_index, avail))) {
+        avail += 1024;
+        free( proc_table );
+        proc_table = (struct procsinfo *) malloc(avail*(sizeof(struct procsinfo)));
+    }
+
+    for ( i=0 ; i<nprocs; i++ ) {
+        if (0 == proc_table[i].pi_state)
+            continue;	/* Skip unused entries */
+        entry = netsnmp_swrun_entry_create(proc_table[i].pi_pid);
+        if (NULL == entry)
+            continue;   /* error already logged by function */
+        CONTAINER_INSERT(container, entry);
+
+	memset(pentry, 0, sizeof(pentry));								/* Empty each time */
+	if(!(SKPROC & proc_table[i].pi_flags)) {							/* Remove kernel processes */
+		getargs(&proc_table[i], sizeof(struct procsinfo), pentry, sizeof(pentry));              /* Call getargs() */
+		for(ppentry = pentry; !((*ppentry == '\0') && (*(ppentry+1) == '\0')); ppentry++) {     /* Process until 0x00 0x00 */
+			if((*ppentry == '\0') && (!(*(ppentry+1) == '\0')))                             /* if 0x00 !0x00 */
+				*ppentry = ' ';                                                         /* change to 0x20 !0x00 */
+		}
+		snprintf(fullpath, sizeof(fullpath)-1, "%.*s", (int)(strchr(pentry, ' ')-pentry), pentry);
+
+		entry->hrSWRunPath_len = snprintf(entry->hrSWRunPath,
+			sizeof(entry->hrSWRunPath), "%s", fullpath);
+		ppentry = strrchr(fullpath, '/');
+		if(ppentry == NULL) {
+			entry->hrSWRunName_len = snprintf(entry->hrSWRunName,
+				sizeof(entry->hrSWRunName), "%s", fullpath);
+		}
+		else {
+			entry->hrSWRunName_len = snprintf(entry->hrSWRunName,
+				sizeof(entry->hrSWRunName), "%s", ppentry + 1);
+		}
+
+		ppentry = strchr(pentry, ' ');
+		entry->hrSWRunParameters_len = snprintf(entry->hrSWRunParameters,
+			sizeof(entry->hrSWRunParameters), "%.*s", (int)(pentry - ppentry), ppentry + 1);
+	}
+
+        entry->hrSWRunType = (SKPROC & proc_table[i].pi_flags)
+                              ? 2   /* kernel process */
+                              : 4   /*  application   */
+                              ;
+
+        switch (proc_table[i].pi_state) {
+        case SACTIVE:
+        case SRUN:    entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNING;
+                      break;
+        case SSLEEP:  entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNABLE;
+                      break;
+        case SSTOP:   entry->hrSWRunStatus = HRSWRUNSTATUS_NOTRUNNABLE;
+                      break;
+        case SIDL:
+        case SZOMB:
+        default:      entry->hrSWRunStatus = HRSWRUNSTATUS_INVALID;
+                      break;
+        }
+
+        entry->hrSWRunPerfCPU  = (proc_table[i].pi_ru.ru_utime.tv_sec * 100);
+        entry->hrSWRunPerfCPU += (proc_table[i].pi_ru.ru_utime.tv_usec / 10000000);
+        entry->hrSWRunPerfCPU += (proc_table[i].pi_ru.ru_stime.tv_sec * 100);
+        entry->hrSWRunPerfCPU += (proc_table[i].pi_ru.ru_stime.tv_usec / 10000000);
+        entry->hrSWRunPerfMem  =  proc_table[i].pi_size;
+        entry->hrSWRunPerfMem *= (getpagesize()/1024);  /* in kB */
+    }
+    free(proc_table);
+
+    DEBUGMSGTL(("swrun:load:arch"," loaded %d entries\n",
+                (int) CONTAINER_SIZE(container)));
+
+    return 0;
+}
diff --git a/agent/mibgroup/host/data_access/swrun_prpsinfo.c b/agent/mibgroup/host/data_access/swrun_prpsinfo.c
new file mode 100644
index 0000000..6cbbb23
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun_prpsinfo.c
@@ -0,0 +1,107 @@
+/*
+ * swrun_prpsinfo.c:
+ *     hrSWRunTable data access:
+ *     getprpsinfo() interface - Dynix
+ */
+#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_?????_H
+#include <?????.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/swrun.h>
+
+/* ---------------------------------------------------------------------
+ */
+void
+netsnmp_arch_swrun_init(void)
+{
+    /* Nothing to do */
+    return;
+}
+
+/* ---------------------------------------------------------------------
+ */
+int
+netsnmp_arch_swrun_container_load( netsnmp_container *container, u_int flags)
+{
+    pid_t                nextproc = 0;
+    getprpsinfo_t       *select   = 0;
+    prpsinfo_t           mypsinfo;
+    int                  rc;
+    char                *cp;
+    netsnmp_swrun_entry *entry;
+
+    while ( 0 <= ( nextproc = getprpsinfo( nextproc, select, &mypsinfo ))) {
+        entry = netsnmp_swrun_entry_create(mypsinfo.pr_pid);
+        if (NULL == entry)
+            continue;   /* error already logged by function */
+        rc = CONTAINER_INSERT(container, entry);
+
+        entry->hrSWRunName_len = snprintf(entry->hrSWRunName,
+                                   sizeof(entry->hrSWRunName)-1,
+                                          "%s", mypsinfo.pr_fname);
+        /*
+         *  Split pr_psargs into two:
+         *     argv[0]   is hrSWRunPath
+         *     argv[1..] is hrSWRunParameters
+         */
+        for ( cp = mypsinfo.pr_psargs; ' ' == *cp; cp++ )
+            ;
+        *cp = '\0';    /* End of argv[0] */
+        entry->hrSWRunPath_len = snprintf(entry->hrSWRunPath,
+                                   sizeof(entry->hrSWRunPath)-1,
+                                          "%s", mypsinfo.pr_psargs);
+        entry->hrSWRunParameters_len = snprintf(entry->hrSWRunParameters,
+                                         sizeof(entry->hrSWRunParameters)-1,
+                                          "%s", cp+1);
+        *cp = ' ';     /* Restore pr_psargs value */
+
+        /*
+         * XXX - No information regarding system processes vs applications
+         */
+
+        switch (mypsinfo.pr_state) {
+/* XXX - which names to use ?? */
+        case SACTIVE:
+        case SRUN:
+        case SONPROC: entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNING;
+                      break;
+        case SSWAP:
+        case SSLEEP:
+        case SWAIT:   entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNABLE;
+                      break;
+        case SSTOP:   entry->hrSWRunStatus = HRSWRUNSTATUS_NOTRUNNABLE;
+                      break;
+        case SIDL:
+        case SZOMB:
+        default:      entry->hrSWRunStatus = HRSWRUNSTATUS_INVALID;
+                      break;
+        }
+
+        entry->hrSWRunPerfCPU  = (mypsinfo.pr_time.tv_sec  * 100);
+        entry->hrSWRunPerfCPU += (mypsinfo.pr_time.tv_nsec / 10000000);
+        entry->hrSWRunPerfMem  = (mypsinfo.pr_rssize);
+        entry->hrSWRunPerfMem *= (MU_PAGESIZE/1024);  /* in kB */
+    }
+
+    DEBUGMSGTL(("swrun:load:arch"," loaded %d entries\n",
+                CONTAINER_SIZE(container)));
+
+    return 0;
+}
diff --git a/agent/mibgroup/host/data_access/swrun_pstat.c b/agent/mibgroup/host/data_access/swrun_pstat.c
new file mode 100644
index 0000000..b85ce77
--- /dev/null
+++ b/agent/mibgroup/host/data_access/swrun_pstat.c
@@ -0,0 +1,117 @@
+/*
+ * swrun_pstat.c:
+ *     hrSWRunTable data access:
+ *     pstat_getdynamic() interface - HPUX
+ */
+#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_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_PSTAT_H
+#define _PSTAT64
+#include <sys/pstat.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/swrun.h>
+
+/* ---------------------------------------------------------------------
+ */
+void
+netsnmp_arch_swrun_init(void)
+{
+    extern int _swrun_max;
+    struct pst_static pst_buf;
+
+    pstat_getstatic( &pst_buf, sizeof(struct pst_static), 1, 0);
+    _swrun_max = pst_buf.max_proc;
+    return;
+}
+
+/* ---------------------------------------------------------------------
+ */
+int
+netsnmp_arch_swrun_container_load( netsnmp_container *container, u_int flags)
+{
+    struct pst_status   *proc_table;
+    struct pst_dynamic   pst_dyn;
+    int                  nproc, i, rc;
+    char                *cp1, *cp2;
+    netsnmp_swrun_entry *entry;
+
+    pstat_getdynamic( &pst_dyn, sizeof(struct pst_dynamic), 1, 0);
+    nproc = pst_dyn.psd_activeprocs;
+    proc_table = (struct pst_status *) malloc(nproc*(sizeof(struct pst_status)));
+    pstat_getproc(proc_table, sizeof(struct pst_status), nproc, 0);
+
+    for ( i=0 ; i<nproc; i++ ) {
+        entry = netsnmp_swrun_entry_create(proc_table[i].pst_pid);
+        if (NULL == entry)
+            continue;   /* error already logged by function */
+        rc = CONTAINER_INSERT(container, entry);
+
+        entry->hrSWRunName_len = snprintf(entry->hrSWRunName,
+                                   sizeof(entry->hrSWRunName)-1,
+                                          "%s", proc_table[i].pst_ucomm);
+        /*
+         *  Split pst_cmd into two:
+         *     argv[0]   is hrSWRunPath
+         *     argv[1..] is hrSWRunParameters
+         */
+        for ( cp1 = proc_table[i].pst_cmd; ' ' == *cp1; cp1++ )
+            ;
+        *cp1 = '\0';    /* End of argv[0] */
+        entry->hrSWRunPath_len = snprintf(entry->hrSWRunPath,
+                                   sizeof(entry->hrSWRunPath)-1,
+                                          "%s", proc_table[i].pst_cmd);
+        entry->hrSWRunParameters_len = snprintf(entry->hrSWRunParameters,
+                                         sizeof(entry->hrSWRunParameters)-1,
+                                          "%s", cp1+1);
+        *cp1 = ' ';     /* Restore pst_cmd value */
+
+        entry->hrSWRunType = (PS_SYS & proc_table[i].pst_flag)
+                              ? 2   /* kernel process */
+                              : 4   /*  application   */
+                              ;
+
+        switch (proc_table[i].pst_stat) {
+        case PS_RUN:   entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNING;
+                       break;
+        case PS_SLEEP: entry->hrSWRunStatus = HRSWRUNSTATUS_RUNNABLE;
+                       break;
+        case PS_STOP:  entry->hrSWRunStatus = HRSWRUNSTATUS_NOTRUNNABLE;
+                       break;
+        case PS_IDLE:
+        case PS_ZOMBIE:
+        case PS_OTHER:
+        default:       entry->hrSWRunStatus = HRSWRUNSTATUS_INVALID;
+                       break;
+        }
+
+        entry->hrSWRunPerfCPU  = proc_table[i].pst_cptickstotal;
+        entry->hrSWRunPerfMem  = proc_table[i].pst_rssize;
+        entry->hrSWRunPerfMem *= getpagesize() / 1024;  /* in kB */
+		/* XXX - Check this last calculation */
+    }
+    free(proc_table);
+
+    DEBUGMSGTL(("swrun:load:arch"," loaded %d entries\n",
+                CONTAINER_SIZE(container)));
+
+    return 0;
+}
diff --git a/agent/mibgroup/host/hrSWInstalledTable.c b/agent/mibgroup/host/hrSWInstalledTable.c
new file mode 100644
index 0000000..ad8aee3
--- /dev/null
+++ b/agent/mibgroup/host/hrSWInstalledTable.c
@@ -0,0 +1,282 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : mib2c.container.conf,v 1.8 2006/07/26 15:58:26 dts12 Exp $
+ */
+/* 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.
+ */
+
+#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/table_container.h>
+#include <net-snmp/data_access/swinst.h>
+#include <net-snmp/agent/cache_handler.h>
+#include "hrSWInstalledTable.h"
+
+#define MYTABLE "hrSWInstalledTable"
+
+static netsnmp_table_registration_info *table_info;
+
+static void _cache_free(netsnmp_cache * cache, void *magic);
+static int _cache_load(netsnmp_cache * cache, void *magic);
+
+/** Initializes the hrSWInstalledTable module */
+void
+init_hrSWInstalledTable(void)
+{
+    /*
+     * here we initialize all the tables we're planning on supporting 
+     */
+    initialize_table_hrSWInstalledTable();
+}
+
+void
+shutdown_hrSWInstalledTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
+
+/** Initialize the hrSWInstalledTable table by defining its contents and how it's structured */
+void
+initialize_table_hrSWInstalledTable(void)
+{
+    static oid      hrSWInstalledTable_oid[] =
+        { 1, 3, 6, 1, 2, 1, 25, 6, 3 };
+    size_t          hrSWInstalledTable_oid_len =
+        OID_LENGTH(hrSWInstalledTable_oid);
+    netsnmp_handler_registration *reg;
+    netsnmp_mib_handler *handler = NULL;
+    netsnmp_container *container = NULL;
+    netsnmp_cache *cache = NULL;
+
+    DEBUGMSGTL(("hrSWInstalled", "initialize\n"));
+
+    reg =
+        netsnmp_create_handler_registration("hrSWInstalledTable",
+                                            hrSWInstalledTable_handler,
+                                            hrSWInstalledTable_oid,
+                                            hrSWInstalledTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+    if (NULL == reg) {
+        snmp_log(LOG_ERR,"error creating handler registration for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+
+    container = netsnmp_container_find("hrSWInstalledTable:table_container");
+    if (NULL == container) {
+        snmp_log(LOG_ERR,"error creating container for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+
+    table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
+    if (NULL == table_info) {
+        snmp_log(LOG_ERR,"error allocating table registration for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+
+    netsnmp_table_helper_add_indexes(table_info, ASN_INTEGER,   /* index: hrSWInstalledIndex */
+                                     0);
+    table_info->min_column = COLUMN_HRSWINSTALLEDINDEX;
+    table_info->max_column = COLUMN_HRSWINSTALLEDDATE;
+
+    /*************************************************
+     *
+     * inject container_table helper
+     */
+    handler = netsnmp_container_table_handler_get(table_info, container,
+                                                  TABLE_CONTAINER_KEY_NETSNMP_INDEX);
+    if (NULL == handler) {
+        snmp_log(LOG_ERR,"error allocating table registration for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+    if (SNMPERR_SUCCESS != netsnmp_inject_handler(reg, handler)) {
+        snmp_log(LOG_ERR,"error injecting container_table handler for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+    handler = NULL; /* reg has it, will reuse below */
+
+    /*************************************************
+     *
+     * inject cache helper
+     */
+    cache = netsnmp_cache_create(30,    /* timeout in seconds */
+                                 _cache_load, _cache_free,
+                                 hrSWInstalledTable_oid,
+                                 hrSWInstalledTable_oid_len);
+
+    if (NULL == cache) {
+        snmp_log(LOG_ERR, "error creating cache for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+    cache->magic = container;
+
+    handler = netsnmp_cache_handler_get(cache);
+    if (NULL == handler) {
+        snmp_log(LOG_ERR, "error creating cache handler for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+    if (SNMPERR_SUCCESS != netsnmp_inject_handler(reg, handler)) {
+        snmp_log(LOG_ERR,"error injecting cache handler for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+    handler = NULL; /* reg has it*/
+
+    if (SNMPERR_SUCCESS != netsnmp_register_table(reg, table_info)) {
+        snmp_log(LOG_ERR,"error registering table handler for "
+                 MYTABLE "\n");
+        reg = NULL; /* it was freed inside netsnmp_register_table */
+        goto bail;
+    }
+
+    return; /* ok */
+
+
+  bail: /* not ok */
+    
+    if (handler)
+        netsnmp_handler_free(handler);
+
+    if (cache)
+        netsnmp_cache_free(cache);
+
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
+
+    if (container)
+        CONTAINER_FREE(container);
+
+    if (reg) 
+        netsnmp_handler_registration_free(reg);
+
+}
+
+/** handles requests for the hrSWInstalledTable table */
+int
+hrSWInstalledTable_handler(netsnmp_mib_handler *handler,
+                           netsnmp_handler_registration *reginfo,
+                           netsnmp_agent_request_info *reqinfo,
+                           netsnmp_request_info *requests)
+{
+
+    netsnmp_request_info *request;
+    netsnmp_table_request_info *table_info;
+    netsnmp_swinst_entry *table_entry;
+
+    switch (reqinfo->mode) {
+        /*
+         * Read-support (also covers GetNext requests)
+         */
+    case MODE_GET:
+        for (request = requests; request; request = request->next) {
+            if (request->processed)
+               continue;
+            table_entry = (netsnmp_swinst_entry *)
+                netsnmp_container_table_extract_context(request);
+            table_info = netsnmp_extract_table_info(request);
+            if ((NULL == table_entry) || (NULL == table_info)) {
+                snmp_log(LOG_ERR, "could not extract table entry or info for "
+                 MYTABLE "\n");
+                snmp_set_var_typed_value(request->requestvb,
+                                         SNMP_ERR_GENERR, NULL, 0);
+                continue;
+            }
+
+            switch (table_info->colnum) {
+            case COLUMN_HRSWINSTALLEDINDEX:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->swIndex);
+                break;
+            case COLUMN_HRSWINSTALLEDNAME: {
+                snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR,
+                                         (u_char *) table_entry->swName,
+                                         table_entry->swName_len);
+                } break;
+            case COLUMN_HRSWINSTALLEDID:
+                snmp_set_var_typed_value(request->requestvb, ASN_OBJECT_ID,
+                                         (u_char *) &nullOid, nullOidLen);
+                break;
+            case COLUMN_HRSWINSTALLEDTYPE:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->swType);
+                break;
+            case COLUMN_HRSWINSTALLEDDATE:
+                snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR,
+                                         (u_char *) table_entry->swDate, 
+                                         table_entry->swDate_len);
+                break;
+            default:
+                /*
+                 * An unsupported/unreadable column (if applicable) 
+                 */
+                snmp_set_var_typed_value(request->requestvb,
+                                         SNMP_NOSUCHOBJECT, NULL, 0);
+            }
+        }
+        break;
+
+    }
+    return SNMP_ERR_NOERROR;
+}
+
+/***********************************************************************
+ *
+ * DATA ACCESS
+ *
+ * The data access mechanism here is rather simple: let newsnmp_swinst_*
+ * take care of it.
+ ***********************************************************************/
+/**
+ * @internal
+ */
+static int
+_cache_load(netsnmp_cache * cache, void *vmagic)
+{
+    DEBUGMSGTL(("hrSWInstalledTable:cache", "load\n"));
+
+    if ((NULL == cache) || (NULL == cache->magic)) {
+        snmp_log(LOG_ERR, "invalid cache for hrSWInstalledTable_cache_load\n");
+        return -1;
+    }
+
+    /** should only be called for an invalid or expired cache */
+    netsnmp_assert((0 == cache->valid) || (1 == cache->expired));
+
+    cache->magic =
+        netsnmp_swinst_container_load((netsnmp_container *) cache->magic, 0);
+
+    return 0;
+}                               /* _cache_load */
+
+/**
+ * @internal
+ */
+static void
+_cache_free(netsnmp_cache * cache, void *magic)
+{
+    if ((NULL == cache) || (NULL == cache->magic)) {
+        snmp_log(LOG_ERR, "invalid cache in hrSWInstalledTable_cache_free\n");
+        return;
+    }
+    DEBUGMSGTL(("hrSWInstalledTable:cache", "free\n"));
+
+    netsnmp_swinst_container_free_items((netsnmp_container *) cache->magic);
+}                               /* _cache_free */
diff --git a/agent/mibgroup/host/hrSWInstalledTable.h b/agent/mibgroup/host/hrSWInstalledTable.h
new file mode 100644
index 0000000..48f17e8
--- /dev/null
+++ b/agent/mibgroup/host/hrSWInstalledTable.h
@@ -0,0 +1,26 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : mib2c.container.conf,v 1.8 2006/07/26 15:58:26 dts12 Exp $
+ */
+#ifndef HRSWINSTALLEDTABLE_H
+#define HRSWINSTALLEDTABLE_H
+
+config_require(host/data_access/swinst)
+
+/*
+ * function declarations 
+ */
+void            init_hrSWInstalledTable(void);
+void            shutdown_hrSWInstalledTable(void);
+void            initialize_table_hrSWInstalledTable(void);
+Netsnmp_Node_Handler hrSWInstalledTable_handler;
+
+/*
+ * column number definitions for table hrSWInstalledTable 
+ */
+#define COLUMN_HRSWINSTALLEDINDEX		1
+#define COLUMN_HRSWINSTALLEDNAME		2
+#define COLUMN_HRSWINSTALLEDID		3
+#define COLUMN_HRSWINSTALLEDTYPE		4
+#define COLUMN_HRSWINSTALLEDDATE		5
+#endif                          /* HRSWINSTALLEDTABLE_H */
diff --git a/agent/mibgroup/host/hrSWRunPerfTable.c b/agent/mibgroup/host/hrSWRunPerfTable.c
new file mode 100644
index 0000000..43b44d1
--- /dev/null
+++ b/agent/mibgroup/host/hrSWRunPerfTable.c
@@ -0,0 +1,198 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : mib2c.container.conf,v 1.8 2006/07/26 15:58:26 dts12 Exp $
+ */
+/* 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.
+ */
+
+#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/swrun.h>
+#include "hrSWRunPerfTable.h"
+#include "data_access/swrun.h"
+
+#define MYTABLE "hrSWRunPerfTable"
+
+/** Initializes the hrSWRunPerfTable module */
+void
+init_hrSWRunPerfTable(void)
+{
+    /*
+     * here we initialize all the tables we're planning on supporting 
+     */
+    initialize_table_hrSWRunPerfTable();
+}
+
+void
+shutdown_hrSWRunPerfTable(void)
+{
+    shutdown_table_hrSWRunPerfTable();
+}
+
+extern oid      hrSWRunTable_oid[];
+extern size_t   hrSWRunTable_oid_len;
+static netsnmp_table_registration_info *table_info;
+
+/** Initialize the hrSWRunPerfTable table by defining its contents and how it's structured */
+void
+initialize_table_hrSWRunPerfTable(void)
+{
+    static oid      hrSWRunPerfTable_oid[] =
+        { 1, 3, 6, 1, 2, 1, 25, 5, 1 };
+    size_t          hrSWRunPerfTable_oid_len =
+        OID_LENGTH(hrSWRunPerfTable_oid);
+    netsnmp_handler_registration *reg;
+    netsnmp_mib_handler *handler = NULL;
+
+    reg =
+        netsnmp_create_handler_registration("hrSWRunPerfTable",
+                                            hrSWRunPerfTable_handler,
+                                            hrSWRunPerfTable_oid,
+                                            hrSWRunPerfTable_oid_len,
+                                            HANDLER_CAN_RONLY);
+    if (NULL == reg) {
+        snmp_log(LOG_ERR,"error creating handler registration for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+
+    table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
+    if (NULL == table_info) {
+        snmp_log(LOG_ERR,"error allocating table registration for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+    netsnmp_table_helper_add_indexes(table_info, ASN_INTEGER,   /* index: hrSWRunIndex */
+                                     0);
+    table_info->min_column = COLUMN_HRSWRUNPERFCPU;
+    table_info->max_column = COLUMN_HRSWRUNPERFMEM;
+
+    /*************************************************
+     *
+     * inject container_table helper
+     */
+    handler = netsnmp_container_table_handler_get(table_info, netsnmp_swrun_container(),
+                                                  TABLE_CONTAINER_KEY_NETSNMP_INDEX);
+    if (NULL == handler) {
+        snmp_log(LOG_ERR,"error allocating table registration for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+    if (SNMPERR_SUCCESS != netsnmp_inject_handler(reg, handler)) {
+        snmp_log(LOG_ERR,"error injecting container_table handler for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+    handler = NULL; /* reg has it, will reuse below */
+
+    /*************************************************
+     *
+     * inject cache helper
+     */
+
+    handler = netsnmp_cache_handler_get(netsnmp_swrun_cache());
+    if (NULL == handler) {
+        snmp_log(LOG_ERR, "error creating cache handler for " MYTABLE "\n");
+        goto bail;
+    }
+
+    if (SNMPERR_SUCCESS != netsnmp_inject_handler(reg, handler)) {
+        snmp_log(LOG_ERR,"error injecting cache handler for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+    handler = NULL; /* reg has it*/
+
+    if (SNMPERR_SUCCESS != netsnmp_register_table(reg, table_info)) {
+        snmp_log(LOG_ERR,"error registering table handler for "
+                 MYTABLE "\n");
+        reg = NULL; /* it was freed inside netsnmp_register_table */
+        goto bail;
+    }
+
+    return; /* ok */
+
+
+  bail: /* not ok */
+    
+    if (handler)
+        netsnmp_handler_free(handler);
+
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
+
+    if (reg) 
+        netsnmp_handler_registration_free(reg);
+}
+
+void
+shutdown_table_hrSWRunPerfTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
+
+/** handles requests for the hrSWRunPerfTable table */
+int
+hrSWRunPerfTable_handler(netsnmp_mib_handler *handler,
+                         netsnmp_handler_registration *reginfo,
+                         netsnmp_agent_request_info *reqinfo,
+                         netsnmp_request_info *requests)
+{
+
+    netsnmp_request_info *request;
+    netsnmp_table_request_info *table_info;
+    netsnmp_swrun_entry *table_entry;
+
+    switch (reqinfo->mode) {
+        /*
+         * Read-support (also covers GetNext requests)
+         */
+    case MODE_GET:
+        for (request = requests; request; request = request->next) {
+            if (request->processed)
+               continue;
+            table_entry = (netsnmp_swrun_entry *)
+                netsnmp_container_table_extract_context(request);
+            table_info = netsnmp_extract_table_info(request);
+            if ((NULL == table_entry) || (NULL == table_info)) {
+                snmp_log(LOG_ERR, "could not extract table entry or info for "
+                 MYTABLE "\n");
+                snmp_set_var_typed_value(request->requestvb,
+                                         SNMP_ERR_GENERR, NULL, 0);
+                continue;
+            }
+
+            switch (table_info->colnum) {
+            case COLUMN_HRSWRUNPERFCPU:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->hrSWRunPerfCPU);
+                break;
+            case COLUMN_HRSWRUNPERFMEM:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->hrSWRunPerfMem);
+                break;
+            default:
+                /*
+                 * An unsupported/unreadable column (if applicable) 
+                 */
+                snmp_set_var_typed_value(request->requestvb,
+                                         SNMP_NOSUCHOBJECT, NULL, 0);
+            }
+        }
+        break;
+
+    }
+    return SNMP_ERR_NOERROR;
+}
diff --git a/agent/mibgroup/host/hrSWRunPerfTable.h b/agent/mibgroup/host/hrSWRunPerfTable.h
new file mode 100644
index 0000000..453fda3
--- /dev/null
+++ b/agent/mibgroup/host/hrSWRunPerfTable.h
@@ -0,0 +1,34 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : mib2c.container.conf,v 1.8 2006/07/26 15:58:26 dts12 Exp $
+ */
+/* 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.
+ */
+#ifndef HRSWRUNPERFTABLE_H
+#define HRSWRUNPERFTABLE_H
+
+config_require(host/hrSWRunTable)
+
+/*
+ * function declarations 
+ */
+void            init_hrSWRunPerfTable(void);
+void            shutdown_hrSWRunPerfTable(void);
+void            initialize_table_hrSWRunPerfTable(void);
+void            shutdown_table_hrSWRunPerfTable(void);
+Netsnmp_Node_Handler hrSWRunPerfTable_handler;
+
+/*
+ * column number definitions for table hrSWRunPerfTable 
+ */
+#define COLUMN_HRSWRUNPERFCPU		1
+#define COLUMN_HRSWRUNPERFMEM		2
+#endif                          /* HRSWRUNPERFTABLE_H */
diff --git a/agent/mibgroup/host/hrSWRunTable.c b/agent/mibgroup/host/hrSWRunTable.c
new file mode 100644
index 0000000..03ad256
--- /dev/null
+++ b/agent/mibgroup/host/hrSWRunTable.c
@@ -0,0 +1,350 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : mib2c.container.conf,v 1.8 2006/07/26 15:58:26 dts12 Exp $
+ */
+/* 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.
+ */
+
+#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/table_container.h>
+#include <net-snmp/data_access/swrun.h>
+#include <net-snmp/agent/cache_handler.h>
+#include "data_access/swrun.h"
+#include "hrSWRunTable.h"
+
+#include <signal.h>
+
+#define MYTABLE "hrSWRunTable"
+
+static netsnmp_table_registration_info *table_info;
+
+/** Initializes the hrSWRunTable module */
+void
+init_hrSWRunTable(void)
+{
+    /*
+     * here we initialize all the tables we're planning on supporting 
+     */
+    initialize_table_hrSWRunTable();
+}
+
+void
+shutdown_hrSWRunTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+}
+
+oid      hrSWRunTable_oid[] = { 1, 3, 6, 1, 2, 1, 25, 4, 2 };
+size_t   hrSWRunTable_oid_len = OID_LENGTH(hrSWRunTable_oid);
+
+/** Initialize the hrSWRunTable table by defining its contents and how it's structured */
+void
+initialize_table_hrSWRunTable(void)
+{
+    netsnmp_handler_registration *reg;
+    netsnmp_mib_handler *handler = NULL;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+#ifdef NETSNMP_INCLUDE_HRSWRUN_WRITE_SUPPORT
+#  define SWRUN_ACCESS_LEVEL HANDLER_CAN_RWRITE
+#else
+#  define SWRUN_ACCESS_LEVEL HANDLER_CAN_RONLY
+#endif
+#else /* !NETSNMP_NO_WRITE_SUPPORT */ 
+#  define SWRUN_ACCESS_LEVEL HANDLER_CAN_RONLY
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+    reg =
+        netsnmp_create_handler_registration(MYTABLE,
+                                            hrSWRunTable_handler,
+                                            hrSWRunTable_oid,
+                                            hrSWRunTable_oid_len,
+                                            SWRUN_ACCESS_LEVEL);
+    if (NULL == reg) {
+        snmp_log(LOG_ERR,"error creating handler registration for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+    reg->modes |= HANDLER_CAN_NOT_CREATE;
+
+    table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
+    if (NULL == table_info) {
+        snmp_log(LOG_ERR,"error allocating table registration for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+
+    netsnmp_table_helper_add_indexes(table_info, ASN_INTEGER,   /* index: hrSWRunIndex */
+                                     0);
+    table_info->min_column = COLUMN_HRSWRUNINDEX;
+    table_info->max_column = COLUMN_HRSWRUNSTATUS;
+
+    /*************************************************
+     *
+     * inject container_table helper
+     */
+    handler = netsnmp_container_table_handler_get(table_info, netsnmp_swrun_container(),
+                                                  TABLE_CONTAINER_KEY_NETSNMP_INDEX);
+    if (NULL == handler) {
+        snmp_log(LOG_ERR,"error allocating table registration for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+    if (SNMPERR_SUCCESS != netsnmp_inject_handler(reg, handler)) {
+        snmp_log(LOG_ERR,"error injecting container_table handler for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+    handler = NULL; /* reg has it, will reuse below */
+
+    /*************************************************
+     *
+     * inject cache helper
+     */
+    handler = netsnmp_cache_handler_get(netsnmp_swrun_cache());
+    if (NULL == handler) {
+        snmp_log(LOG_ERR, "error creating cache handler for " MYTABLE "\n");
+        goto bail;
+    }
+
+    if (SNMPERR_SUCCESS != netsnmp_inject_handler(reg, handler)) {
+        snmp_log(LOG_ERR,"error injecting cache handler for "
+                 MYTABLE "\n");
+        goto bail;
+    }
+    handler = NULL; /* reg has it*/
+
+    if (SNMPERR_SUCCESS != netsnmp_register_table(reg, table_info)) {
+        snmp_log(LOG_ERR,"error registering table handler for "
+                 MYTABLE "\n");
+        reg = NULL; /* it was freed inside netsnmp_register_table */
+        goto bail;
+    }
+
+    return; /* ok */
+
+
+  bail: /* not ok */
+    
+    if (handler)
+        netsnmp_handler_free(handler);
+
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
+
+    if (reg) 
+        netsnmp_handler_registration_free(reg);
+
+}
+
+/** handles requests for the hrSWRunTable table */
+int
+hrSWRunTable_handler(netsnmp_mib_handler *handler,
+                     netsnmp_handler_registration *reginfo,
+                     netsnmp_agent_request_info *reqinfo,
+                     netsnmp_request_info *requests)
+{
+    netsnmp_request_info *request;
+    netsnmp_table_request_info *table_info;
+    netsnmp_swrun_entry *table_entry;
+
+    switch (reqinfo->mode) {
+        /*
+         * Read-support (also covers GetNext requests)
+         */
+    case MODE_GET:
+        for (request = requests; request; request = request->next) {
+            if (request->processed)
+               continue;
+            table_entry = (netsnmp_swrun_entry *)
+                netsnmp_container_table_extract_context(request);
+            table_info = netsnmp_extract_table_info(request);
+            if ((NULL == table_entry) || (NULL == table_info)) {
+                snmp_log(LOG_ERR, "could not extract table entry or info for "
+                 MYTABLE "\n");
+                snmp_set_var_typed_value(request->requestvb,
+                                         SNMP_ERR_GENERR, NULL, 0);
+                continue;
+            }
+
+            switch (table_info->colnum) {
+            case COLUMN_HRSWRUNINDEX:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->hrSWRunIndex);
+                break;
+            case COLUMN_HRSWRUNNAME:
+                snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR,
+                                         (u_char *) table_entry->
+                                         hrSWRunName,
+                                         table_entry->hrSWRunName_len);
+                break;
+            case COLUMN_HRSWRUNID:
+                snmp_set_var_typed_value(request->requestvb, ASN_OBJECT_ID,
+#ifdef NETSNMP_SWRUN_HAVE_ID
+                                         (u_char *) table_entry->hrSWRunID,
+                                         table_entry->hrSWRunID_len
+#else
+                                         (u_char *) &nullOid, nullOidLen
+#endif
+                    );
+                break;
+            case COLUMN_HRSWRUNPATH:
+                snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR,
+                                         (u_char *) table_entry->
+                                         hrSWRunPath,
+                                         table_entry->hrSWRunPath_len);
+                break;
+            case COLUMN_HRSWRUNPARAMETERS:
+                snmp_set_var_typed_value(request->requestvb, ASN_OCTET_STR,
+                                         (u_char *) table_entry->
+                                         hrSWRunParameters,
+                                         table_entry->
+                                         hrSWRunParameters_len);
+                break;
+            case COLUMN_HRSWRUNTYPE:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->hrSWRunType);
+                break;
+            case COLUMN_HRSWRUNSTATUS:
+                snmp_set_var_typed_integer(request->requestvb, ASN_INTEGER,
+                                           table_entry->hrSWRunStatus);
+                break;
+            default:
+                /*
+                 * An unsupported/unreadable column (if applicable) 
+                 */
+                snmp_set_var_typed_value(request->requestvb,
+                                         SNMP_NOSUCHOBJECT, NULL, 0);
+            }
+        }
+        break;
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+#ifdef NETSNMP_INCLUDE_HRSWRUN_WRITE_SUPPORT
+        /*
+         * Write-support
+         */
+    case MODE_SET_RESERVE1:
+        for (request = requests; request; request = request->next) {
+            int pid;
+            if (request->processed)
+               continue;
+            table_entry = (netsnmp_swrun_entry *)
+                netsnmp_container_table_extract_context(request);
+            table_info = netsnmp_extract_table_info(request);
+            if ((NULL == table_entry) || (NULL == table_info)) {
+                snmp_log(LOG_ERR, "could not extract table entry or info for "
+                 MYTABLE "\n");
+                snmp_set_var_typed_value(request->requestvb,
+                                         SNMP_ERR_GENERR, NULL, 0);
+                continue;
+            }
+
+            switch (table_info->colnum) {
+            case COLUMN_HRSWRUNSTATUS:
+                if (*request->requestvb->val.integer != HRSWRUNSTATUS_INVALID) {
+                    netsnmp_set_request_error(reqinfo, request,
+                                              SNMP_ERR_WRONGVALUE);
+                    return SNMP_ERR_NOERROR;
+                }
+                pid = request->requestvb->name[request->requestvb->name_length-1];
+                if (1 == pid) {
+                    snmp_log(LOG_WARNING,"refusing to kill pid 1\n");
+                    netsnmp_set_request_error(reqinfo, request,
+                                              SNMP_ERR_NOACCESS);
+                    return SNMP_ERR_NOERROR;
+                }
+                break;
+            default:
+                netsnmp_set_request_error(reqinfo, request,
+                                          SNMP_ERR_NOTWRITABLE);
+                return SNMP_ERR_NOERROR;
+            }
+        }
+        break;
+
+    case MODE_SET_RESERVE2:
+        break;
+
+    case MODE_SET_FREE:
+        break;
+
+    case MODE_SET_ACTION:
+        for (request = requests; request; request = request->next) {
+            if (request->processed)
+               continue;
+            table_entry = (netsnmp_swrun_entry *)
+                netsnmp_container_table_extract_context(request);
+            table_info = netsnmp_extract_table_info(request);
+            if ((NULL == table_entry) || (NULL == table_info)) {
+                snmp_log(LOG_ERR, "could not extract table entry or info for "
+                 MYTABLE "\n");
+                snmp_set_var_typed_value(request->requestvb,
+                                         SNMP_ERR_GENERR, NULL, 0);
+                continue;
+            }
+
+            switch (table_info->colnum) {
+            case COLUMN_HRSWRUNSTATUS:
+                table_entry->old_hrSWRunStatus =
+                    table_entry->hrSWRunStatus;
+                table_entry->hrSWRunStatus =
+                    *request->requestvb->val.integer;
+                break;
+            }
+        }
+        break;
+
+    case MODE_SET_UNDO:
+        for (request = requests; request; request = request->next) {
+            if (request->processed)
+               continue;
+            container = netsnmp_container_table_extract_context(request);
+            table_entry = (netsnmp_swrun_entry *)
+                netsnmp_container_table_extract_context(request);
+            table_info = netsnmp_extract_table_info(request);
+            if ((NULL == table_entry) || (NULL == table_info)) {
+                snmp_log(LOG_ERR, "could not extract table entry or info for "
+                 MYTABLE "\n");
+                snmp_set_var_typed_value(request->requestvb,
+                                         SNMP_ERR_GENERR, NULL, 0);
+                continue;
+            }
+
+            switch (table_info->colnum) {
+            case COLUMN_HRSWRUNSTATUS:
+                table_entry->hrSWRunStatus =
+                    table_entry->old_hrSWRunStatus;
+                table_entry->old_hrSWRunStatus = 0;
+                break;
+            }
+        }
+        break;
+
+    case MODE_SET_COMMIT:
+        for (request = requests; request; request = request->next) {
+            int pid;
+            if (request->processed)
+               continue;
+            pid = request->requestvb->name[request->requestvb->name_length-1];
+            DEBUGMSGTL(("hrSWRunTable:commit", "kill(%d,TERM)\n", pid));
+            kill(pid, SIGTERM);
+        }
+        break;
+#endif /* NETSNMP_INCLUDE_HRSWRUN_WRITE_SUPPORT */
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+    }
+    return SNMP_ERR_NOERROR;
+}
+
diff --git a/agent/mibgroup/host/hrSWRunTable.h b/agent/mibgroup/host/hrSWRunTable.h
new file mode 100644
index 0000000..de80fc0
--- /dev/null
+++ b/agent/mibgroup/host/hrSWRunTable.h
@@ -0,0 +1,39 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : mib2c.container.conf,v 1.8 2006/07/26 15:58:26 dts12 Exp $
+ */
+/* 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.
+ */
+#ifndef HRSWRUNTABLE_H
+#define HRSWRUNTABLE_H
+
+config_require(host/data_access/swrun)
+config_require(host/hrSWRunPerfTable)
+
+/*
+ * function declarations 
+ */
+void            init_hrSWRunTable(void);
+void            shutdown_hrSWRunTable(void);
+void            initialize_table_hrSWRunTable(void);
+Netsnmp_Node_Handler hrSWRunTable_handler;
+
+/*
+ * column number definitions for table hrSWRunTable 
+ */
+#define COLUMN_HRSWRUNINDEX		1
+#define COLUMN_HRSWRUNNAME		2
+#define COLUMN_HRSWRUNID		3
+#define COLUMN_HRSWRUNPATH		4
+#define COLUMN_HRSWRUNPARAMETERS		5
+#define COLUMN_HRSWRUNTYPE		6
+#define COLUMN_HRSWRUNSTATUS		7
+#endif                          /* HRSWRUNTABLE_H */
diff --git a/agent/mibgroup/host/hr_device.c b/agent/mibgroup/host/hr_device.c
index 7b1364d..24031bf 100644
--- a/agent/mibgroup/host/hr_device.c
+++ b/agent/mibgroup/host/hr_device.c
@@ -63,12 +63,18 @@
 #define	HRDEV_ERRORS		6
 
 struct variable4 hrdevice_variables[] = {
-    {HRDEV_INDEX, ASN_INTEGER, RONLY, var_hrdevice, 2, {1, 1}},
-    {HRDEV_TYPE, ASN_OBJECT_ID, RONLY, var_hrdevice, 2, {1, 2}},
-    {HRDEV_DESCR, ASN_OCTET_STR, RONLY, var_hrdevice, 2, {1, 3}},
-    {HRDEV_ID, ASN_OBJECT_ID, RONLY, var_hrdevice, 2, {1, 4}},
-    {HRDEV_STATUS, ASN_INTEGER, RONLY, var_hrdevice, 2, {1, 5}},
-    {HRDEV_ERRORS, ASN_COUNTER, RONLY, var_hrdevice, 2, {1, 6}}
+    {HRDEV_INDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrdevice, 2, {1, 1}},
+    {HRDEV_TYPE, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_hrdevice, 2, {1, 2}},
+    {HRDEV_DESCR, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrdevice, 2, {1, 3}},
+    {HRDEV_ID, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_hrdevice, 2, {1, 4}},
+    {HRDEV_STATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrdevice, 2, {1, 5}},
+    {HRDEV_ERRORS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_hrdevice, 2, {1, 6}}
 };
 oid             hrdevice_variables_oid[] = { 1, 3, 6, 1, 2, 1, 25, 3, 2 };
 
@@ -191,7 +197,7 @@
     memcpy((char *) name, (char *) newname,
            ((int) vp->namelen + 1) * sizeof(oid));
     *length = vp->namelen + 1;
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long);    /* default to 'long' results */
 
     DEBUGMSGTL(("host/hr_device", "... get device stats "));
diff --git a/agent/mibgroup/host/hr_disk.c b/agent/mibgroup/host/hr_disk.c
index f3679b5..c4ac52f 100644
--- a/agent/mibgroup/host/hr_disk.c
+++ b/agent/mibgroup/host/hr_disk.c
@@ -2,6 +2,16 @@
  *  Host Resources MIB - disk device group implementation - hr_disk.c
  *
  */
+/* 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.
+ */
 
 #include <net-snmp/net-snmp-config.h>
 #include "host_res.h"
@@ -61,10 +71,23 @@
 # endif
 #endif
 
+#if defined(HAVE_REGEX_H) && defined(HAVE_REGCOMP)
+#include <regex.h>
+#endif
+
 #if HAVE_LIMITS_H
 #include <limits.h>
 #endif
 
+#ifdef darwin
+#include <CoreFoundation/CoreFoundation.h>
+#include <IOKit/IOKitLib.h>
+#include <IOKit/storage/IOBlockStorageDriver.h>
+#include <IOKit/storage/IOMedia.h>
+#include <IOKit/IOBSD.h>
+#include <DiskArbitration/DADisk.h>
+#endif
+
 #ifdef linux
 /*
  * define BLKGETSIZE from <linux/fs.h>:
@@ -79,6 +102,27 @@
 
 #define HRD_MONOTONICALLY_INCREASING
 
+/*************************************************************
+ * constants for enums for the MIB node
+ * hrDiskStorageAccess (INTEGER / ASN_INTEGER)
+ */
+#define HRDISKSTORAGEACCESS_READWRITE  1
+#define HRDISKSTORAGEACCESS_READONLY  2
+
+
+/*************************************************************
+ * constants for enums for the MIB node
+ * hrDiskStorageMedia (INTEGER / ASN_INTEGER)
+ */
+#define HRDISKSTORAGEMEDIA_OTHER  1
+#define HRDISKSTORAGEMEDIA_UNKNOWN  2
+#define HRDISKSTORAGEMEDIA_HARDDISK  3
+#define HRDISKSTORAGEMEDIA_FLOPPYDISK  4
+#define HRDISKSTORAGEMEDIA_OPTICALDISKROM  5
+#define HRDISKSTORAGEMEDIA_OPTICALDISKWORM  6
+#define HRDISKSTORAGEMEDIA_OPTICALDISKRW  7
+#define HRDISKSTORAGEMEDIA_RAMDISK  8
+
         /*********************
 	 *
 	 *  Kernel & interface information,
@@ -89,8 +133,10 @@
 void            Init_HR_Disk(void);
 int             Get_Next_HR_Disk(void);
 int             Get_Next_HR_Disk_Partition(char *, size_t, int);
+#if !(defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7))
 static void     Add_HR_Disk_entry(const char *, int, int, int, int,
                                   const char *, int, int);
+#endif
 static void     Save_HR_Disk_General(void);
 static void     Save_HR_Disk_Specific(void);
 static int      Query_Disk(int, const char *);
@@ -106,7 +152,9 @@
 static int      HRD_index;
 static char     HRD_savedModel[40];
 static long     HRD_savedCapacity = 1044;
+#if defined(DIOC_DESCRIBE) || defined(DKIOCINFO) || defined(HAVE_LINUX_HDREG_H)
 static int      HRD_savedFlags;
+#endif
 static time_t   HRD_history[HRDEV_TYPE_MASK + 1];
 
 #ifdef DIOC_DESCRIBE
@@ -132,9 +180,27 @@
 static struct disklabel HRD_info;
 #endif
 
+#ifdef darwin
+static int64_t  HRD_cap;
+static int      HRD_access;
+static int      HRD_type;
+static int      HRD_removeble;
+static char     HRD_model[40];
+static int      HRD_saved_access;
+static int      HRD_saved_type;
+static int      HRD_saved_removeble;
+static int _get_type_from_protocol( const char *prot );
+static int _get_type_value( const char *str_type );
+#endif
+
 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
+
         /*********************
 	 *
 	 *  Initialisation & common implementation functions
@@ -147,10 +213,14 @@
 #define	HRDISK_CAPACITY		4
 
 struct variable4 hrdisk_variables[] = {
-    {HRDISK_ACCESS, ASN_INTEGER, RONLY, var_hrdisk, 2, {1, 1}},
-    {HRDISK_MEDIA, ASN_INTEGER, RONLY, var_hrdisk, 2, {1, 2}},
-    {HRDISK_REMOVEABLE, ASN_INTEGER, RONLY, var_hrdisk, 2, {1, 3}},
-    {HRDISK_CAPACITY, ASN_INTEGER, RONLY, var_hrdisk, 2, {1, 4}}
+    {HRDISK_ACCESS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrdisk, 2, {1, 1}},
+    {HRDISK_MEDIA, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrdisk, 2, {1, 2}},
+    {HRDISK_REMOVEABLE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrdisk, 2, {1, 3}},
+    {HRDISK_CAPACITY, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrdisk, 2, {1, 4}}
 };
 oid             hrdisk_variables_oid[] = { 1, 3, 6, 1, 2, 1, 25, 3, 6 };
 
@@ -172,6 +242,9 @@
     Add_HR_Disk_entry("/dev/sd%c%d", -1, -1, 'a', 'p', "/dev/sd%c", 1, 15);
     Add_HR_Disk_entry("/dev/md%d", -1, -1, 0, 3, "/dev/md%d", 0, 0);
     Add_HR_Disk_entry("/dev/fd%d", -1, -1, 0, 1, "/dev/fd%d", 0, 0);
+
+    Add_LVM_Disks();
+
 #elif defined(hpux)
 #if defined(hpux10) || defined(hpux11)
     Add_HR_Disk_entry("/dev/rdsk/c%dt%xd%d", 0, 1, 0, 15,
@@ -185,6 +258,8 @@
                       "/dev/rdsk/c%dt%dd0s0", 0, 7);
     Add_HR_Disk_entry("/dev/rdsk/c%dd%ds%d", 0, 7, 0, 15,
                       "/dev/rdsk/c%dd%ds0", 0, 7);
+#elif defined(darwin)
+    Add_HR_Disk_entry("/dev/disk%ds%d", -1, -1, 0, 32, "/dev/disk%d", 1, 32);
 #elif defined(freebsd4) || defined(freebsd5)
     Add_HR_Disk_entry("/dev/ad%ds%d%c", 0, 1, 1, 4, "/dev/ad%ds%d", 'a', 'h');
     Add_HR_Disk_entry("/dev/da%ds%d%c", 0, 1, 1, 4, "/dev/da%ds%d", 'a', 'h');
@@ -215,6 +290,14 @@
                                   free_disk_config, "name");
 }
 
+void
+shutdown_hr_disk(void)
+{
+#ifdef linux
+    Remove_LVM_Disks();
+#endif
+}
+
 #define ITEM_STRING	1
 #define ITEM_SET	2
 #define ITEM_STAR	3
@@ -240,12 +323,12 @@
 static void
 parse_disk_config(const char *token, char *cptr)
 {
-    conf_disk_list *d_new = 0;
-    conf_disk_item *di_curr = 0;
-    details_set    *d_set = 0;
-    char           *name = 0, *p = 0, *d_str = 0, c;
+    conf_disk_list *d_new = NULL;
+    conf_disk_item *di_curr = NULL;
+    details_set    *d_set = NULL;
+    char           *name = NULL, *p = NULL, *d_str = NULL, c;
     unsigned int    i, neg, c1, c2;
-    char           *st = 0;
+    char           *st = NULL;
 
     name = strtok_r(cptr, " \t", &st);
     if (!name) {
@@ -482,6 +565,7 @@
     Init_HR_Disk();
     for (;;) {
         disk_idx = Get_Next_HR_Disk();
+        DEBUGMSGTL(("host/hr_disk", "... index %d\n", disk_idx));
         if (disk_idx == -1)
             break;
         newname[HRDISK_ENTRY_NAME_LENGTH] = disk_idx;
@@ -512,7 +596,7 @@
     memcpy((char *) name, (char *) newname,
            ((int) vp->namelen + 1) * sizeof(oid));
     *length = vp->namelen + 1;
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long);    /* default to 'long' results */
 
     DEBUGMSGTL(("host/hr_disk", "... get disk stats "));
@@ -588,6 +672,7 @@
 static HRD_disk_t disk_devices[MAX_NUMBER_DISK_TYPES];
 static int      HR_number_disk_types = 0;
 
+#if !(defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7))
 static void
 Add_HR_Disk_entry(const char *devpart_string,
                   int first_ctl,
@@ -601,7 +686,7 @@
 
     while (first_ctl <= last_ctl) {
       for (lodev = first_dev;
-           lodev < last_dev && MAX_NUMBER_DISK_TYPES > HR_number_disk_types;
+           lodev <= last_dev && MAX_NUMBER_DISK_TYPES > HR_number_disk_types;
            lodev += (1+MAX_DISKS_PER_TYPE), HR_number_disk_types++)
       {
         nbr_created++;
@@ -644,6 +729,7 @@
                     devpart_string, nbr_created));
 #endif
 }
+#endif
 
 void
 Init_HR_Disk(void)
@@ -656,14 +742,14 @@
 int
 Get_Next_HR_Disk(void)
 {
-    char            string[1024];
+    char            string[PATH_MAX+1];
     int             fd, result;
     int             iindex;
     int             max_disks;
     time_t          now;
 
     HRD_index++;
-    (void *) time(&now);
+    time(&now);
     DEBUGMSGTL(("host/hr_disk", "Next_Disk type %d of %d\n",
                 HRD_type_index, HR_number_disk_types));
     while (HRD_type_index < HR_number_disk_types) {
@@ -697,6 +783,9 @@
                         disk_devices[HRD_type_index].disk_controller,
                         disk_devices[HRD_type_index].disk_device_first +
                         HRD_index);
+	    } else if (disk_devices[HRD_type_index].disk_device_first == disk_devices[HRD_type_index].disk_device_last) {
+		/* exact device name */
+		snprintf(string, sizeof(string)-1, "%s", disk_devices[HRD_type_index].disk_devfull_string);
             } else {
                 snprintf(string, sizeof(string)-1,
                         disk_devices[HRD_type_index].disk_devfull_string,
@@ -747,6 +836,12 @@
                     HRD_history[iindex] = 0;
                     return ((HRDEV_DISK << HRDEV_TYPE_SHIFT) + iindex);
                 }
+                DEBUGMSGTL(("host/hr_disk",
+                            "Get_Next_HR_Disk: can't query %s\n", string));
+            }
+            else {
+                DEBUGMSGTL(("host/hr_disk",
+                            "Get_Next_HR_Disk: can't open %s\n", string));
             }
             HRD_history[iindex] = now;
             HRD_index++;
@@ -799,6 +894,62 @@
     return 0;
 }
 
+#ifdef darwin
+int
+Get_HR_Disk_Label(char *string, size_t str_len, const char *devfull)
+{
+    DASessionRef        sess_ref;
+    DADiskRef           disk;
+    CFDictionaryRef     desc;
+    CFStringRef         str_ref;
+    CFStringEncoding    sys_encoding = CFStringGetSystemEncoding();
+
+    DEBUGMSGTL(("host/hr_disk", "Disk Label type %s\n", devfull));
+
+    sess_ref = DASessionCreate( NULL );
+    if (NULL == sess_ref) {
+        strlcpy(string, devfull, str_len);
+        return -1;
+    }
+
+    disk = DADiskCreateFromBSDName( NULL, sess_ref, devfull );
+    if (NULL == disk) {
+        CFRelease(sess_ref);
+        strlcpy(string, devfull, str_len);
+        return -1;
+    }
+
+    desc = DADiskCopyDescription( disk );
+    if (NULL == desc) {
+        snmp_log(LOG_ERR,
+                 "diskmgr: couldn't get disk description for %s, skipping\n",
+                 devfull);
+        CFRelease(disk);
+        CFRelease(sess_ref);
+        strlcpy(string, devfull, str_len);
+        return -1;
+    }
+
+    /** model */
+    str_ref = (CFStringRef)
+        CFDictionaryGetValue(desc, kDADiskDescriptionMediaNameKey);
+    if (str_ref) {
+        strlcpy(string, CFStringGetCStringPtr(str_ref, sys_encoding),
+                str_len);
+        DEBUGMSGTL(("verbose:diskmgr:darwin", " name %s\n", string));
+    }
+    else {
+        strlcpy(string, devfull, str_len);
+    }
+    
+    CFRelease(disk);
+    CFRelease(desc);
+    CFRelease(sess_ref);
+    
+    return 0;
+}
+#endif
+
 static void
 Save_HR_Disk_Specific(void)
 {
@@ -820,6 +971,13 @@
 #ifdef DIOCGDINFO
     HRD_savedCapacity = HRD_info.d_secperunit / 2;
 #endif
+#ifdef darwin
+    HRD_savedCapacity = HRD_cap / 1024;
+    HRD_saved_access = HRD_access;
+    HRD_saved_type = HRD_type;
+    HRD_saved_removeble = HRD_removeble;
+#endif
+
 }
 
 static void
@@ -839,6 +997,9 @@
     strlcpy(HRD_savedModel, dktypenames[HRD_info.d_type],
             sizeof(HRD_savedModel));
 #endif
+#ifdef darwin
+    strlcpy(HRD_savedModel, HRD_model, sizeof(HRD_savedModel));
+#endif
 }
 
 static const char *
@@ -871,7 +1032,7 @@
 #ifdef HAVE_LINUX_HDREG_H
     if (HRD_type_index == 0)    /* IDE hard disk */
         result = ioctl(fd, HDIO_GET_IDENTITY, &HRD_info);
-    else if (HRD_type_index <= 2) {     /* SCSI hard disk and md devices */
+    else if (HRD_type_index != 3) {     /* SCSI hard disk, md and LVM devices */
         long            h;
         result = ioctl(fd, BLKGETSIZE, &h);
         if (result != -1 && HRD_type_index == 2 && h == 0L)
@@ -879,10 +1040,13 @@
         if (result != -1) {
             HRD_info.lba_capacity = h;
             if (HRD_type_index == 1)
-                snprintf( HRD_info.model, sizeof(HRD_info.model)-1,
+                snprintf( (char *) HRD_info.model, sizeof(HRD_info.model)-1,
                          "SCSI disk (%s)", devfull);
+	    else if (HRD_type_index >= 4)
+		snprintf( (char *) HRD_info.model, sizeof(HRD_info.model)-1,
+			 "LVM volume (%s)", devfull + strlen("/dev/mapper/"));
             else
-                snprintf( HRD_info.model, sizeof(HRD_info.model)-1,
+                snprintf( (char *) HRD_info.model, sizeof(HRD_info.model)-1,
                         "RAID disk (%s)", devfull);
             HRD_info.model[ sizeof(HRD_info.model)-1 ] = 0;
             HRD_info.config = 0;
@@ -894,6 +1058,103 @@
     result = ioctl(fd, DIOCGDINFO, &HRD_info);
 #endif
 
+#ifdef darwin
+    DASessionRef        sess_ref;
+    DADiskRef           disk;
+    CFDictionaryRef     desc;
+    CFStringRef         str_ref;
+    CFNumberRef         number_ref;
+    CFBooleanRef        bool_ref;
+    CFStringEncoding    sys_encoding = CFStringGetSystemEncoding();
+
+    sess_ref = DASessionCreate( NULL );
+    if (NULL == sess_ref)
+        return -1;
+
+    disk = DADiskCreateFromBSDName( NULL, sess_ref, devfull );
+    if (NULL == disk) {
+        CFRelease(sess_ref);
+        return -1;
+    }
+
+    desc = DADiskCopyDescription( disk );
+    if (NULL == desc) {
+        CFRelease(disk);
+        CFRelease(sess_ref);
+        return -1;
+    }
+
+    number_ref = (CFNumberRef)
+        CFDictionaryGetValue(desc, kDADiskDescriptionMediaSizeKey);
+    if (number_ref)
+        CFNumberGetValue(number_ref, kCFNumberSInt64Type, &HRD_cap);
+    else
+        HRD_cap = 0;
+    DEBUGMSGTL(("verbose:diskmgr:darwin", " size %lld\n", HRD_cap));
+
+    /** writable?  */
+    bool_ref = (CFBooleanRef)
+        CFDictionaryGetValue(desc, kDADiskDescriptionMediaWritableKey);
+    if (bool_ref) {
+        HRD_access = CFBooleanGetValue(bool_ref);
+    }
+    else
+        HRD_access = 0;
+    DEBUGMSGTL(("verbose:diskmgr:darwin", " writable %d\n",
+                HRD_access));
+
+    /** removable?  */
+    bool_ref = (CFBooleanRef)
+        CFDictionaryGetValue(desc, kDADiskDescriptionMediaRemovableKey);
+    if (bool_ref) {
+        HRD_removeble = CFBooleanGetValue(bool_ref);
+    }
+    else
+        HRD_removeble = 0;
+    DEBUGMSGTL(("verbose:diskmgr:darwin", " removable %d\n",
+                HRD_removeble));
+
+    /** get type */
+    str_ref = (CFStringRef)
+        CFDictionaryGetValue(desc, kDADiskDescriptionMediaTypeKey);
+    if (str_ref) {
+        HRD_type = _get_type_value(CFStringGetCStringPtr(str_ref,
+                                                         sys_encoding));
+        DEBUGMSGTL(("verbose:diskmgr:darwin", " type %s / %d\n",
+                    CFStringGetCStringPtr(str_ref, sys_encoding),
+                    HRD_type));
+    }
+    else {
+        str_ref = (CFStringRef)
+            CFDictionaryGetValue(desc, kDADiskDescriptionDeviceProtocolKey);
+        if (str_ref) {
+            HRD_type = 
+                _get_type_from_protocol(CFStringGetCStringPtr(str_ref,
+                                                              sys_encoding));
+            DEBUGMSGTL(("verbose:diskmgr:darwin", " type %s / %d\n",
+                        CFStringGetCStringPtr(str_ref, sys_encoding),
+                        HRD_type));
+        }
+        else
+            HRD_type = HRDISKSTORAGEMEDIA_UNKNOWN;
+    }
+
+    /** model */
+    str_ref = (CFStringRef)
+        CFDictionaryGetValue(desc, kDADiskDescriptionDeviceModelKey);
+    if (str_ref) {
+        strlcpy(HRD_model, CFStringGetCStringPtr(str_ref, sys_encoding),
+                sizeof(HRD_model));
+        DEBUGMSGTL(("verbose:diskmgr:darwin", " model %s\n", HRD_model));
+    }
+    else
+        HRD_model[0] = 0;
+    CFRelease(disk);
+    CFRelease(desc);
+    CFRelease(sess_ref);
+    result = 0;
+#endif
+
     return (result);
 }
 
@@ -912,6 +1173,11 @@
         return (2);             /* read only */
 #endif
 
+#ifdef darwin
+    if (!HRD_access)
+        return (2);
+#endif
+
     return (1);                 /* read-write */
 }
 
@@ -984,6 +1250,9 @@
     }
 #endif
 
+#ifdef darwin
+    return HRD_type;
+#endif
 
     return (2);                 /* Unknown */
 }
@@ -1014,5 +1283,150 @@
         return (1);             /* true */
 #endif
 
+#ifdef darwin
+    if (HRD_removeble)
+        return (1);
+#endif
+
     return (2);                 /* false */
 }
+
+#ifdef darwin
+typedef struct type_value_map_s {
+     const char *type;
+     uint32_t    value;
+} type_value_map;
+
+static type_value_map media_type_map[] = {
+    { "CD-ROM", HRDISKSTORAGEMEDIA_OPTICALDISKROM},
+    { "DVD-R", HRDISKSTORAGEMEDIA_OPTICALDISKWORM},
+    { "DVD+R", HRDISKSTORAGEMEDIA_OPTICALDISKWORM},
+};  
+static int media_types = sizeof(media_type_map)/sizeof(media_type_map[0]);
+
+static int
+_get_type_value( const char *str_type )
+{
+    int           i, len;
+    
+    if (NULL == str_type)
+        return HRDISKSTORAGEMEDIA_UNKNOWN;
+
+    len = strlen(str_type);
+    for(i=0; i < media_types; ++i) {
+        if (0 == strcmp(media_type_map[i].type, str_type))
+            return media_type_map[i].value;
+    }
+
+    return HRDISKSTORAGEMEDIA_UNKNOWN;
+}
+
+static type_value_map proto_map[] = {
+    { "ATA", HRDISKSTORAGEMEDIA_HARDDISK},
+    { "ATAPI", HRDISKSTORAGEMEDIA_OPTICALDISKROM}
+};
+static int proto_maps = sizeof(proto_map)/sizeof(proto_map[0]);
+
+static int _get_type_from_protocol( const char *prot )
+{   
+    int           i, len;
+
+    if (NULL == prot)
+        return TV_FALSE;
+
+    len = strlen(prot);
+    for(i=0; i < proto_maps; ++i) {
+        if (0 == strcmp(proto_map[i].type, prot))
+            return proto_map[i].value;
+    }
+
+    return HRDISKSTORAGEMEDIA_UNKNOWN;
+}
+#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;
+#endif
+
+static void
+Add_LVM_Disks(void)
+{
+#if defined(HAVE_REGEX_H) && defined(HAVE_REGCOMP)
+    /*
+     * LVM devices are harder because their name can be almost anything (see 
+     * regexp below). Each logical volume is interpreted as its own device with
+     * one partition, even if two logical volumes share common volume group. 
+     */
+    regex_t         lvol;
+    int             res;
+    DIR            *dir;
+    struct dirent  *d;
+
+    res =
+        regcomp(&lvol, "[0-9a-zA-Z+_\\.-]+-[0-9a-zA-Z+_\\.-]+",
+                REG_EXTENDED | REG_NOSUB);
+    if (res != 0) {
+        char            error[200];
+        regerror(res, &lvol, error, sizeof(error)-1);
+        DEBUGMSGTL(("host/hr_disk",
+                    "Add_LVM_Disks: cannot compile regexp: %s", error));
+        return;
+    }
+
+    dir = opendir("/dev/mapper/");
+    if (dir == NULL) {
+        DEBUGMSGTL(("host/hr_disk",
+                    "Add_LVM_Disks: cannot open /dev/mapper"));
+        regfree(&lvol);
+        return;
+    }
+
+    while ((d = readdir(dir)) != NULL) {
+        res = regexec(&lvol, d->d_name, 0, NULL, 0);
+        if (res == 0) {
+            char *path = (char*)malloc(PATH_MAX + 1);
+            if (path == NULL) {
+                DEBUGMSGTL(("host/hr_disk",
+                            "Add_LVM_Disks: cannot allocate memory for device %s",
+                            d->d_name));
+                break;
+            }
+            snprintf(path, PATH_MAX-1, "/dev/mapper/%s", d->d_name);
+            Add_HR_Disk_entry(path, -1, -1, 0, 0, path, 0, 0);
+
+            /*
+             * store the device name so we can free it in Remove_LVM_Disks 
+             */
+            lvm_device_names[lvm_device_count] = path;
+            ++lvm_device_count;
+            if (lvm_device_count >= MAX_NUMBER_DISK_TYPES) {
+                DEBUGMSGTL(("host/hr_disk",
+                            "Add_LVM_Disks: maximum count of LVM devices reached"));
+                break;
+            }
+        }
+    }
+    closedir(dir);
+    regfree(&lvol);
+#endif
+}
+
+static void
+Remove_LVM_Disks(void)
+{
+#if defined(HAVE_REGEX_H) && defined(HAVE_REGCOMP)
+    /*
+     * just free the device names allocated in add_lvm_disks 
+     */
+    int             i;
+    for (i = 0; i < lvm_device_count; i++) {
+        free(lvm_device_names[i]);
+        lvm_device_names[i] = NULL;
+    }
+    lvm_device_count = 0;
+#endif
+}
+#endif
diff --git a/agent/mibgroup/host/hr_disk.h b/agent/mibgroup/host/hr_disk.h
index eff2a67..b3c439c 100644
--- a/agent/mibgroup/host/hr_disk.h
+++ b/agent/mibgroup/host/hr_disk.h
@@ -8,6 +8,8 @@
 config_require(host/hr_device)
 
 extern void     init_hr_disk(void);
+extern void     shutdown_hr_disk(void);
+
 extern void     Init_HR_Disk(void);
 extern int      Get_Next_HR_Disk(void);
 extern int      Get_Next_HR_Disk_Partition(char *, size_t, int);
diff --git a/agent/mibgroup/host/hr_filesys.c b/agent/mibgroup/host/hr_filesys.c
index 7fa2058..b23d322 100644
--- a/agent/mibgroup/host/hr_filesys.c
+++ b/agent/mibgroup/host/hr_filesys.c
@@ -2,14 +2,26 @@
  *  Host Resources MIB - File System device group implementation - hr_filesys.c
  *
  */
+/* 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.
+ */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/hardware/memory.h>
 #include "host_res.h"
 #include "hr_filesys.h"
 #include "hr_storage.h"
+#include "hr_disk.h"
 #include <net-snmp/utilities.h>
 
 #if HAVE_MNTENT_H
@@ -42,12 +54,20 @@
 #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>
 #endif
 
+netsnmp_feature_require(se_find_free_value_in_slist)
+netsnmp_feature_require(date_n_time)
+netsnmp_feature_require(ctime_to_timet)
+
 #if defined(bsdi4) || defined(freebsd3) || defined(freebsd4) || defined(freebsd5) || defined(darwin)
 #if HAVE_GETFSSTAT && defined(MFSNAMELEN)
 #define MOUNT_NFS	"nfs"
@@ -109,6 +129,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;
@@ -137,7 +167,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 {
@@ -195,15 +225,24 @@
 #define HRFSYS_PARTDUMP		9
 
 struct variable4 hrfsys_variables[] = {
-    {HRFSYS_INDEX, ASN_INTEGER, RONLY, var_hrfilesys, 2, {1, 1}},
-    {HRFSYS_MOUNT, ASN_OCTET_STR, RONLY, var_hrfilesys, 2, {1, 2}},
-    {HRFSYS_RMOUNT, ASN_OCTET_STR, RONLY, var_hrfilesys, 2, {1, 3}},
-    {HRFSYS_TYPE, ASN_OBJECT_ID, RONLY, var_hrfilesys, 2, {1, 4}},
-    {HRFSYS_ACCESS, ASN_INTEGER, RONLY, var_hrfilesys, 2, {1, 5}},
-    {HRFSYS_BOOT, ASN_INTEGER, RONLY, var_hrfilesys, 2, {1, 6}},
-    {HRFSYS_STOREIDX, ASN_INTEGER, RONLY, var_hrfilesys, 2, {1, 7}},
-    {HRFSYS_FULLDUMP, ASN_OCTET_STR, RONLY, var_hrfilesys, 2, {1, 8}},
-    {HRFSYS_PARTDUMP, ASN_OCTET_STR, RONLY, var_hrfilesys, 2, {1, 9}},
+    {HRFSYS_INDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrfilesys, 2, {1, 1}},
+    {HRFSYS_MOUNT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrfilesys, 2, {1, 2}},
+    {HRFSYS_RMOUNT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrfilesys, 2, {1, 3}},
+    {HRFSYS_TYPE, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_hrfilesys, 2, {1, 4}},
+    {HRFSYS_ACCESS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrfilesys, 2, {1, 5}},
+    {HRFSYS_BOOT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrfilesys, 2, {1, 6}},
+    {HRFSYS_STOREIDX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrfilesys, 2, {1, 7}},
+    {HRFSYS_FULLDUMP, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrfilesys, 2, {1, 8}},
+    {HRFSYS_PARTDUMP, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrfilesys, 2, {1, 9}},
 };
 oid             hrfsys_variables_oid[] = { 1, 3, 6, 1, 2, 1, 25, 3, 8 };
 
@@ -212,7 +251,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;
@@ -279,7 +318,7 @@
     memcpy((char *) name, (char *) newname,
            (vp->namelen + 1) * sizeof(oid));
     *length = vp->namelen + 1;
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long);    /* default to 'long' results */
 
     DEBUGMSGTL(("host/hr_filesys", "... get filesys stats "));
@@ -405,7 +444,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:
@@ -526,10 +565,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
@@ -592,7 +635,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;
@@ -621,9 +664,7 @@
         fclose(fp);
     fp = fopen(ETC_MNTTAB, "r");
     if (!fp) {
-      char tmpbuf[STRINGMAX];
-      snprintf( tmpbuf, sizeof(tmpbuf), "Can't open mnttab %s\n", ETC_MNTTAB );
-      config_perror(tmpbuf);
+      netsnmp_config_error("Can't open mnttab %s\n", ETC_MNTTAB);
     }
 #endif
 }
@@ -678,7 +719,7 @@
     "proc",
     "fd",
 #endif
-    0
+    NULL
 };
 
 int
@@ -689,7 +730,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;
@@ -729,13 +770,9 @@
         return -1;
 #endif                          /* solaris2 */
 
-    DEBUGMSGTL(("host/hr_filesys", "Get_Next_HRFS %s\n", HRFS_entry->HRFS_name));
-
     for (cpp = HRFS_ignores; *cpp != NULL; ++cpp)
-        if (!strcmp(HRFS_entry->HRFS_type, *cpp)) {
-            DEBUGMSGTL(("host/hr_filesys", "Get_Next_HRFS: skipping %s (%s)\n", HRFS_entry->HRFS_type, *cpp));
+        if (!strcmp(HRFS_entry->HRFS_type, *cpp))
             return Get_Next_HR_FileSys();
-        }
 
     /*
      * Try and ensure that index values are persistent
@@ -765,7 +802,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 && (
@@ -809,7 +846,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;
@@ -866,13 +903,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);
@@ -881,7 +918,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);
@@ -955,7 +992,7 @@
   		 * in case of 512 (f_blocks/2) is returned
   		 * otherwise (f_blocks*(f_bsize/1024)) is returned
   		 */
-#if defined(solaris2) && defined(STRUCT_STATVFS_HAS_F_FRSIZE)
+#if defined(solaris2) && defined(HAVE_STRUCT_STATVFS_F_FRSIZE)
                 return (statfs_buf.f_blocks*(statfs_buf.f_frsize/1024));
 #else
   		if (statfs_buf.f_bsize == 512)
diff --git a/agent/mibgroup/host/hr_network.c b/agent/mibgroup/host/hr_network.c
index 4f85f96..6cce58c 100644
--- a/agent/mibgroup/host/hr_network.c
+++ b/agent/mibgroup/host/hr_network.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/data_access/interface.h>
@@ -22,6 +23,9 @@
 #include "mibII/interfaces.h"
 #include "hr_network.h"
 
+#if !defined( solaris2 )
+netsnmp_feature_require(interface_legacy)
+#endif /* !solaris2 */
 
         /*********************
 	 *
@@ -51,7 +55,8 @@
 #define	HRNET_IFINDEX		1
 
 struct variable4 hrnet_variables[] = {
-    {HRNET_IFINDEX, ASN_INTEGER, RONLY, var_hrnet, 2, {1, 1}}
+    {HRNET_IFINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrnet, 2, {1, 1}}
 };
 oid             hrnet_variables_oid[] = { 1, 3, 6, 1, 2, 1, 25, 3, 4 };
 
@@ -136,7 +141,7 @@
     memcpy((char *) name, (char *) newname,
            (vp->namelen + 1) * sizeof(oid));
     *length = vp->namelen + 1;
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long);    /* default to 'long' results */
 
     DEBUGMSGTL(("host/hr_network", "... get net stats "));
diff --git a/agent/mibgroup/host/hr_partition.c b/agent/mibgroup/host/hr_partition.c
index ae0bd8e..3b9abd6 100644
--- a/agent/mibgroup/host/hr_partition.c
+++ b/agent/mibgroup/host/hr_partition.c
@@ -1,8 +1,17 @@
-
 /*
  *  Host Resources MIB - partition device group implementation - hr_partition.c
  *
  */
+/* 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.
+ */
 
 #include <net-snmp/net-snmp-config.h>
 #include <fcntl.h>
@@ -35,6 +44,13 @@
 static int      HRP_savedDiskIndex;
 static int      HRP_savedPartIndex;
 static char     HRP_savedName[1024];
+#ifdef NETSNMP_CAN_GET_DISK_LABEL
+static char     HRP_savedLabel[1024];
+#endif
+#ifdef darwin
+extern int
+Get_HR_Disk_Label(char *string, size_t str_len, const char *devfull);
+#endif
 
 static int      HRP_DiskIndex;
 
@@ -60,11 +76,16 @@
 #define	HRPART_FSIDX		5
 
 struct variable4 hrpartition_variables[] = {
-    {HRPART_INDEX, ASN_INTEGER, RONLY, var_hrpartition, 2, {1, 1}},
-    {HRPART_LABEL, ASN_OCTET_STR, RONLY, var_hrpartition, 2, {1, 2}},
-    {HRPART_ID, ASN_OCTET_STR, RONLY, var_hrpartition, 2, {1, 3}},
-    {HRPART_SIZE, ASN_INTEGER, RONLY, var_hrpartition, 2, {1, 4}},
-    {HRPART_FSIDX, ASN_INTEGER, RONLY, var_hrpartition, 2, {1, 5}}
+    {HRPART_INDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrpartition, 2, {1, 1}},
+    {HRPART_LABEL, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrpartition, 2, {1, 2}},
+    {HRPART_ID, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrpartition, 2, {1, 3}},
+    {HRPART_SIZE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrpartition, 2, {1, 4}},
+    {HRPART_FSIDX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrpartition, 2, {1, 5}}
 };
 oid             hrpartition_variables_oid[] =
     { 1, 3, 6, 1, 2, 1, 25, 3, 7 };
@@ -135,6 +156,7 @@
             (name[HRPART_DISK_NAME_LENGTH] &
              ((1 << HRDEV_TYPE_SHIFT) - 1));
 
+        DEBUGMSGTL(("host/hr_partition", "... low index %d\n", LowDiskIndex));
         while (HRP_DiskIndex < LowDiskIndex) {
             Init_HR_Partition();        /* moves to next disk */
             if (HRP_DiskIndex == -1)
@@ -144,6 +166,7 @@
 
     for (;;) {
         part_idx = Get_Next_HR_Partition();
+        DEBUGMSGTL(("host/hr_partition", "... part index %d\n", part_idx));
         if (part_idx == 0)
             break;
         newname[HRPART_DISK_NAME_LENGTH] =
@@ -185,7 +208,7 @@
     memcpy((char *) name, (char *) newname,
            ((int) vp->namelen + 2) * sizeof(oid));
     *length = vp->namelen + 2;
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long);    /* default to 'long' results */
 
     DEBUGMSGTL(("host/hr_partition", "... get partition stats "));
@@ -225,8 +248,13 @@
         long_return = part_idx;
         return (u_char *) & long_return;
     case HRPART_LABEL:
+#ifdef NETSNMP_CAN_GET_DISK_LABEL
+        *var_len = strlen(HRP_savedLabel);
+        return (u_char *) HRP_savedLabel;
+#else
         *var_len = strlen(HRP_savedName);
         return (u_char *) HRP_savedName;
+#endif
     case HRPART_ID:            /* Use the device number */
         sprintf(string, "0x%x", (int) stat_buf.st_rdev);
         *var_len = strlen(string);
@@ -259,9 +287,11 @@
 static void
 Init_HR_Partition(void)
 {
+    DEBUGMSGTL(("host/hr_partition", "Init_HR_Partition\n"));
     HRP_DiskIndex = Get_Next_HR_Disk();
     if (HRP_DiskIndex != -1)
         HRP_DiskIndex &= ((1 << HRDEV_TYPE_SHIFT) - 1);
+    DEBUGMSGTL(("host/hr_partition", "...  %d\n",HRP_DiskIndex));
 
     HRP_index = -1;
 }
@@ -272,6 +302,7 @@
     char            string[1024];
     int             fd;
 
+    DEBUGMSGTL(("host/hr_partition", "Get_Next_HR_Partition %d\n",HRP_DiskIndex));
     if (HRP_DiskIndex == -1) {
         return 0;
     }
@@ -309,4 +340,7 @@
     HRP_savedDiskIndex = disk_idx;
     HRP_savedPartIndex = part_idx;
     (void) Get_Next_HR_Disk_Partition(HRP_savedName, sizeof(HRP_savedName), HRP_index);
+#ifdef NETSNMP_CAN_GET_DISK_LABEL
+    (void) Get_HR_Disk_Label(HRP_savedLabel, sizeof(HRP_savedLabel), HRP_savedName);
+#endif
 }
diff --git a/agent/mibgroup/host/hr_print.c b/agent/mibgroup/host/hr_print.c
index 1d1f2ef..4cfa25b 100644
--- a/agent/mibgroup/host/hr_print.c
+++ b/agent/mibgroup/host/hr_print.c
@@ -48,8 +48,10 @@
 #define	HRPRINT_ERROR		2
 
 struct variable4 hrprint_variables[] = {
-    {HRPRINT_STATUS, ASN_INTEGER, RONLY, var_hrprint, 2, {1, 1}},
-    {HRPRINT_ERROR, ASN_OCTET_STR, RONLY, var_hrprint, 2, {1, 2}}
+    {HRPRINT_STATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrprint, 2, {1, 1}},
+    {HRPRINT_ERROR, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrprint, 2, {1, 2}}
 };
 oid             hrprint_variables_oid[] = { 1, 3, 6, 1, 2, 1, 25, 3, 5 };
 
@@ -139,7 +141,7 @@
     memcpy((char *) name, (char *) newname,
            (vp->namelen + 1) * sizeof(oid));
     *length = vp->namelen + 1;
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long);    /* default to 'long' results */
 
     DEBUGMSGTL(("host/hr_print", "... get print stats "));
@@ -177,9 +179,10 @@
     case HRPRINT_ERROR:
 #if NETSNMP_NO_DUMMY_VALUES
         return NULL;
-#endif
+#else
         long_return = 0;        /* Null string */
         return (u_char *) & long_return;
+#endif
     default:
         DEBUGMSGTL(("host/hr_print", "unknown sub-id %d in var_hrprint\n",
                     vp->magic));
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_proc.c b/agent/mibgroup/host/hr_proc.c
index ece338d..6f93079 100644
--- a/agent/mibgroup/host/hr_proc.c
+++ b/agent/mibgroup/host/hr_proc.c
@@ -51,8 +51,10 @@
 #define	HRPROC_LOAD		2
 
 struct variable4 hrproc_variables[] = {
-    {HRPROC_ID, ASN_OBJECT_ID, RONLY, var_hrproc, 2, {1, 1}},
-    {HRPROC_LOAD, ASN_INTEGER, RONLY, var_hrproc, 2, {1, 2}}
+    {HRPROC_ID, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_hrproc, 2, {1, 1}},
+    {HRPROC_LOAD, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrproc, 2, {1, 2}}
 };
 oid             hrproc_variables_oid[] = { 1, 3, 6, 1, 2, 1, 25, 3, 3 };
 
@@ -138,7 +140,7 @@
     memcpy((char *) name, (char *) newname,
            (vp->namelen + 1) * sizeof(oid));
     *length = vp->namelen + 1;
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long);    /* default to 'long' results */
 
     DEBUGMSGTL(("host/hr_proc", "... get proc stats "));
diff --git a/agent/mibgroup/host/hr_storage.c b/agent/mibgroup/host/hr_storage.c
index 25ff3db..264fecc 100644
--- a/agent/mibgroup/host/hr_storage.c
+++ b/agent/mibgroup/host/hr_storage.c
@@ -8,7 +8,7 @@
 #if defined(freebsd5)
 /* undefine these in order to use getfsstat */
 #undef HAVE_STATVFS
-#undef STRUCT_STATVFS_HAS_F_FRSIZE
+#undef HAVE_STRUCT_STATVFS_F_FRSIZE
 #endif
 
 #include <sys/types.h>
@@ -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>
@@ -189,7 +189,7 @@
 extern struct mnttab *HRFS_entry;
 #define HRFS_mount	mnt_mountp
 #define HRFS_statfs	statvfs
-#define HRFS_HAS_FRSIZE STRUCT_STATVFS_HAS_F_FRSIZE
+#define HRFS_HAS_FRSIZE HAVE_STRUCT_STATVFS_F_FRSIZE
 
 #elif defined(WIN32)
 /* fake block size */
@@ -205,14 +205,22 @@
 extern int      fscount;
 #define HRFS_statfs	statvfs
 #define HRFS_mount	f_mntonname
-#define HRFS_HAS_FRSIZE STRUCT_STATVFS_HAS_F_FRSIZE
+#define HRFS_HAS_FRSIZE HAVE_STRUCT_STATVFS_F_FRSIZE
 
-#elif defined(HAVE_STATVFS)  && defined(STRUCT_STATVFS_HAS_MNT_DIR)
+#elif defined(HAVE_STATVFS)  && defined(HAVE_STRUCT_STATVFS_MNT_DIR)
 
 extern struct mntent *HRFS_entry;
 extern int      fscount;
 #define HRFS_statfs	statvfs
 #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)
@@ -221,14 +229,14 @@
 extern int      fscount;
 #define HRFS_statfs	statfs
 #define HRFS_mount	f_mntonname
-#define HRFS_HAS_FRSIZE STRUCT_STATFS_HAS_F_FRSIZE
+#define HRFS_HAS_FRSIZE HAVE_STRUCT_STATFS_F_FRSIZE
 
 #else
 
 extern struct mntent *HRFS_entry;
 #define HRFS_mount	mnt_dir
 #define HRFS_statfs	statfs
-#define HRFS_HAS_FRSIZE STRUCT_STATFS_HAS_F_FRSIZE
+#define HRFS_HAS_FRSIZE HAVE_STRUCT_STATFS_F_FRSIZE
 
 #endif
 	
@@ -249,6 +257,7 @@
                                size_t *, WriteMethod **);
 void*           header_hrstoreEntry(struct variable *, oid *, size_t *,
                                     int, size_t *, WriteMethod **);
+Netsnmp_Node_Handler handle_memsize;
 
 #ifdef solaris2
 void            sol_get_swapinfo(int *, int *);
@@ -263,17 +272,25 @@
 #define	HRSTORE_USED		7
 #define	HRSTORE_FAILS		8
 
-struct variable4 hrstore_variables[] = {
-    {HRSTORE_MEMSIZE, ASN_INTEGER, RONLY, var_hrstore, 1, {2}},
-    {HRSTORE_INDEX, ASN_INTEGER, RONLY, var_hrstore, 3, {3, 1, 1}},
-    {HRSTORE_TYPE, ASN_OBJECT_ID, RONLY, var_hrstore, 3, {3, 1, 2}},
-    {HRSTORE_DESCR, ASN_OCTET_STR, RONLY, var_hrstore, 3, {3, 1, 3}},
-    {HRSTORE_UNITS, ASN_INTEGER, RONLY, var_hrstore, 3, {3, 1, 4}},
-    {HRSTORE_SIZE, ASN_INTEGER, RONLY, var_hrstore, 3, {3, 1, 5}},
-    {HRSTORE_USED, ASN_INTEGER, RONLY, var_hrstore, 3, {3, 1, 6}},
-    {HRSTORE_FAILS, ASN_COUNTER, RONLY, var_hrstore, 3, {3, 1, 7}}
+struct variable2 hrstore_variables[] = {
+    {HRSTORE_INDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrstore, 1, {1}},
+    {HRSTORE_TYPE, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_hrstore, 1, {2}},
+    {HRSTORE_DESCR, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrstore, 1, {3}},
+    {HRSTORE_UNITS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrstore, 1, {4}},
+    {HRSTORE_SIZE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrstore, 1, {5}},
+    {HRSTORE_USED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrstore, 1, {6}},
+    {HRSTORE_FAILS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_hrstore, 1, {7}}
 };
 oid             hrstore_variables_oid[] = { 1, 3, 6, 1, 2, 1, 25, 2 };
+oid             hrMemorySize_oid[]   = { 1, 3, 6, 1, 2, 1, 25, 2, 2 };
+oid             hrStorageTable_oid[] = { 1, 3, 6, 1, 2, 1, 25, 2, 3, 1 };
 
 
 void
@@ -281,8 +298,12 @@
 {
     char *appname;
 
-    REGISTER_MIB("host/hr_storage", hrstore_variables, variable4,
-                 hrstore_variables_oid);
+    netsnmp_register_scalar(
+        netsnmp_create_handler_registration("host/hrMemorySize", handle_memsize,
+                           hrMemorySize_oid, OID_LENGTH(hrMemorySize_oid),
+                                             HANDLER_CAN_RONLY));
+    REGISTER_MIB("host/hr_storage", hrstore_variables, variable2,
+                 hrStorageTable_oid);
 
     appname = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
                                     NETSNMP_DS_LIB_APPTYPE);
@@ -317,7 +338,7 @@
 }
 
 /*
- * header_hrstore(...
+ * header_hrstoreEntry(...
  * Arguments:
  * vp     IN      - pointer to variable entry that points here
  * name    IN/OUT  - IN/name requested, OUT/name found
@@ -328,34 +349,6 @@
  * 
  */
 
-int
-header_hrstore(struct variable *vp,
-               oid * name,
-               size_t * length,
-               int exact, size_t * var_len, WriteMethod ** write_method)
-{
-#define HRSTORE_NAME_LENGTH	9
-    oid             newname[MAX_OID_LEN];
-    int             result;
-
-    DEBUGMSGTL(("host/hr_storage", "var_hrstore: "));
-    DEBUGMSGOID(("host/hr_storage", name, *length));
-    DEBUGMSG(("host/hr_storage", " %d\n", exact));
-
-    memcpy((char *) newname, (char *) vp->name, vp->namelen * sizeof(oid));
-    newname[HRSTORE_NAME_LENGTH] = 0;
-    result = snmp_oid_compare(name, *length, newname, vp->namelen + 1);
-    if ((exact && (result != 0)) || (!exact && (result >= 0)))
-        return (MATCH_FAILED);
-    memcpy((char *) name, (char *) newname,
-           (vp->namelen + 1) * sizeof(oid));
-    *length = vp->namelen + 1;
-
-    *write_method = 0;
-    *var_len = sizeof(long);    /* default to 'long' results */
-    return (MATCH_SUCCEEDED);
-}
-
 void *
 header_hrstoreEntry(struct variable *vp,
                     oid * name,
@@ -467,7 +460,7 @@
         }
     }
 
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long);    /* default to 'long' results */
 
     /*
@@ -475,7 +468,7 @@
      */
     DEBUGMSGTL(("host/hr_storage", "var_hrstoreEntry: process "));
     DEBUGMSGOID(("host/hr_storage", name, *length));
-    DEBUGMSG(("host/hr_storage", " (%x)\n", mem));
+    DEBUGMSG(("host/hr_storage", " (%p)\n", mem));
     return (void*)mem;
 }
 
@@ -489,13 +482,47 @@
 	 *
 	 *********************/
 
-static const char *hrs_descr[] = {
-    NULL,
-    "Memory Buffers",           /* HRS_TYPE_MBUF */
-    "Real Memory",              /* HRS_TYPE_MEM */
-    "Swap Space"                /* HRS_TYPE_SWAP */
-};
+int
+handle_memsize(netsnmp_mib_handler *handler,
+                netsnmp_handler_registration *reginfo,
+                netsnmp_agent_request_info *reqinfo,
+                netsnmp_request_info *requests)
+{
+    netsnmp_memory_info *mem_info;
+    int val;
 
+    /*
+     * We just need to handle valid GET requests, as invalid instances
+     *   are rejected automatically, and (valid) GETNEXT requests are
+     *   converted into the appropriate GET request.
+     *
+     * We also only ever receive one request at a time.
+     */
+    switch (reqinfo->mode) {
+    case MODE_GET:
+        netsnmp_memory_load();
+        mem_info = netsnmp_memory_get_byIdx( NETSNMP_MEM_TYPE_PHYSMEM, 0 );
+        if ( !mem_info || mem_info->size == -1 || mem_info->units == -1 )
+            netsnmp_set_request_error( reqinfo, requests, SNMP_NOSUCHOBJECT );
+	else {
+            val  =  mem_info->size;     /* memtotal */
+            val *= (mem_info->units/1024);
+            snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,
+                                     (u_char *)&val, sizeof(val));
+        }
+        return SNMP_ERR_NOERROR;
+
+    default:
+        /*
+         * we should never get here, so this is a really bad error 
+         */
+        snmp_log(LOG_ERR, "unknown mode (%d) in handle_memsize\n",
+                 reqinfo->mode);
+        return SNMP_ERR_GENERR;
+    }
+
+    return SNMP_ERR_NOERROR;
+}
 
 
 u_char         *
@@ -510,12 +537,6 @@
     void                *ptr;
     netsnmp_memory_info *mem = NULL;
 
-    if (vp->magic == HRSTORE_MEMSIZE) {
-        if (header_hrstore(vp, name, length, exact, var_len, write_method)
-            == MATCH_FAILED)
-            return NULL;
-    } else {
-
 really_try_next:
 	ptr = header_hrstoreEntry(vp, name, length, exact, var_len,
 					write_method);
@@ -535,19 +556,10 @@
 	} else {
 	    mem = (netsnmp_memory_info*)ptr;
         }
-    }
 
 
 
     switch (vp->magic) {
-    case HRSTORE_MEMSIZE:
-        netsnmp_memory_load();
-        mem = netsnmp_memory_get_byIdx( NETSNMP_MEM_TYPE_PHYSMEM, 0 );
-        if ( !mem || mem->size == -1 || mem->units == -1 )
-	    return NULL;
-	long_return = mem->size * (mem->units / 1024);
-        return (u_char *) & long_return;
-
     case HRSTORE_INDEX:
         long_return = store_idx;
         return (u_char *) & long_return;
@@ -555,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
@@ -656,7 +668,6 @@
 	 *
 	 *********************/
 
-static int      FS_storage;
 static int      HRS_index;
 
 void
diff --git a/agent/mibgroup/host/hr_storage.h b/agent/mibgroup/host/hr_storage.h
index ffa1f52..2007c32 100644
--- a/agent/mibgroup/host/hr_storage.h
+++ b/agent/mibgroup/host/hr_storage.h
@@ -1,12 +1,12 @@
 /*
- *  Host Resources MIB - storage group interface - hr_system.h
+ *  Host Resources MIB - storage group interface - hr_storage.h
  *
  */
 #ifndef _MIBGROUP_HRSTORAGE_H
 #define _MIBGROUP_HRSTORAGE_H
 
 config_require(hardware/memory)
-config_require(host/hr_filesys)
+/* config_require(host/hr_filesys) */
 
 extern void     init_hr_storage(void);
 extern FindVarMethod var_hrstore;
diff --git a/agent/mibgroup/host/hr_swinst.c b/agent/mibgroup/host/hr_swinst.c
index cf90df2..25582bd 100644
--- a/agent/mibgroup/host/hr_swinst.c
+++ b/agent/mibgroup/host/hr_swinst.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_SYS_PARAM_H
 #include <sys/param.h>
@@ -45,6 +46,10 @@
 #include <rpm/header.h>
 #include <fcntl.h>
 
+#ifdef HAVE_RPM_RPMFILEUTIL_H
+#include <rpm/rpmfileutil.h>
+#endif
+
 #ifdef HAVE_RPMGETPATH
 #include <rpm/rpmmacro.h>
 #endif
@@ -67,6 +72,8 @@
 
 #define HRSWINST_MONOTONICALLY_INCREASING
 
+netsnmp_feature_require(date_n_time)
+
         /*********************
 	 *
 	 *  Kernel & interface information,
@@ -127,7 +134,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())
 
         /*********************
 	 *
@@ -157,13 +164,20 @@
 #define	HRSWINST_DATE		7
 
 struct variable4 hrswinst_variables[] = {
-    {HRSWINST_CHANGE, ASN_TIMETICKS, RONLY, var_hrswinst, 1, {1}},
-    {HRSWINST_UPDATE, ASN_TIMETICKS, RONLY, var_hrswinst, 1, {2}},
-    {HRSWINST_INDEX, ASN_INTEGER, RONLY, var_hrswinst, 3, {3, 1, 1}},
-    {HRSWINST_NAME, ASN_OCTET_STR, RONLY, var_hrswinst, 3, {3, 1, 2}},
-    {HRSWINST_ID, ASN_OBJECT_ID, RONLY, var_hrswinst, 3, {3, 1, 3}},
-    {HRSWINST_TYPE, ASN_INTEGER, RONLY, var_hrswinst, 3, {3, 1, 4}},
-    {HRSWINST_DATE, ASN_OCTET_STR, RONLY, var_hrswinst, 3, {3, 1, 5}}
+    {HRSWINST_CHANGE, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
+     var_hrswinst, 1, {1}},
+    {HRSWINST_UPDATE, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
+     var_hrswinst, 1, {2}},
+    {HRSWINST_INDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrswinst, 3, {3, 1, 1}},
+    {HRSWINST_NAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrswinst, 3, {3, 1, 2}},
+    {HRSWINST_ID, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_hrswinst, 3, {3, 1, 3}},
+    {HRSWINST_TYPE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrswinst, 3, {3, 1, 4}},
+    {HRSWINST_DATE, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrswinst, 3, {3, 1, 5}}
 };
 oid             hrswinst_variables_oid[] = { 1, 3, 6, 1, 2, 1, 25, 6 };
 
@@ -186,9 +200,6 @@
 #if defined(linux) && !defined(HAVE_LIBRPM)
 #define	_PATH_HRSW_directory	"/var/cache/hrmib"
 #endif
-#if defined(linux) && !defined(HAVE_LIBRPM)
-#define	_PATH_HRSW_directory	"/var/cache/hrmib"
-#endif
 
 void
 init_hr_swinst(void)
@@ -278,7 +289,7 @@
            (vp->namelen + 1) * sizeof(oid));
     *length = vp->namelen + 1;
 
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long);    /* default to 'long' results */
     return (MATCH_SUCCEEDED);
 }
@@ -348,7 +359,7 @@
     memcpy((char *) name, (char *) newname,
            (vp->namelen + 1) * sizeof(oid));
     *length = vp->namelen + 1;
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long);    /* default to 'long' results */
 
     DEBUGMSGTL(("host/hr_inst", "... get installed S/W stats "));
@@ -431,7 +442,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);
@@ -492,27 +503,31 @@
     case HRSWINST_DATE:
         {
 #ifdef HAVE_LIBRPM
-            int         *rpm_data;
+            int32_t         *rpm_data;
             if ( headerGetEntry(swi->swi_h, RPMTAG_INSTALLTIME, NULL, (void **) &rpm_data, NULL) ) {
                 time_t          installTime = *rpm_data;
                 ret = date_n_time(&installTime, var_len);
             } else {
-                ret = date_n_time(0, var_len);
+                ret = date_n_time(NULL, var_len);
             }
 #else
             if (swi->swi_directory != NULL) {
                 snprintf(string, sizeof(string), "%s/%s",
                          swi->swi_directory, swi->swi_name);
                 string[ sizeof(string)-1 ] = 0;
-                stat(string, &stat_buf);
-                ret = date_n_time(&stat_buf.st_mtime, var_len);
+                if (stat(string, &stat_buf) >= 0)
+                    ret = date_n_time(&stat_buf.st_mtime, var_len);
+                else
+                    goto err;
             } else {
+err:
 #if NETSNMP_NO_DUMMY_VALUES
-                return NULL;
-#endif
+                ret = NULL;
+#else
                 sprintf(string, "back in the mists of time");
                 *var_len = strlen(string);
                 ret = (u_char *) string;
+#endif
             }
 #endif
         }
@@ -684,7 +699,7 @@
         swi->swi_name[ sizeof(swi->swi_name)-1 ] = 0;
     }
 #else
-    snprintf(swi->swi_name, sizeof(swi->swi_name), swi->swi_dep->d_name);
+    snprintf(swi->swi_name, sizeof(swi->swi_name), "%s", swi->swi_dep->d_name);
     swi->swi_name[ sizeof(swi->swi_name)-1 ] = 0;
 #endif
     return 0;
diff --git a/agent/mibgroup/host/hr_swrun.c b/agent/mibgroup/host/hr_swrun.c
index 134b27f..f40e997 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
@@ -122,11 +122,13 @@
 #if defined(hpux10) || defined(hpux11)
 struct pst_status *proc_table;
 struct pst_dynamic pst_dyn;
+#elif HAVE_KVM_GETPROC2
+struct kinfo_proc2 *proc_table;
 #elif HAVE_KVM_GETPROCS
 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;
@@ -150,19 +152,29 @@
 #define	HRSWRUNPERF_MEM		10
 
 struct variable4 hrswrun_variables[] = {
-    {HRSWRUN_OSINDEX, ASN_INTEGER, RONLY, var_hrswrun, 1, {1}},
-    {HRSWRUN_INDEX, ASN_INTEGER, RONLY, var_hrswrun, 3, {2, 1, 1}},
-    {HRSWRUN_NAME, ASN_OCTET_STR, RONLY, var_hrswrun, 3, {2, 1, 2}},
-    {HRSWRUN_ID, ASN_OBJECT_ID, RONLY, var_hrswrun, 3, {2, 1, 3}},
-    {HRSWRUN_PATH, ASN_OCTET_STR, RONLY, var_hrswrun, 3, {2, 1, 4}},
-    {HRSWRUN_PARAMS, ASN_OCTET_STR, RONLY, var_hrswrun, 3, {2, 1, 5}},
-    {HRSWRUN_TYPE, ASN_INTEGER, RONLY, var_hrswrun, 3, {2, 1, 6}},
-    {HRSWRUN_STATUS, ASN_INTEGER, RONLY, var_hrswrun, 3, {2, 1, 7}}
+    {HRSWRUN_OSINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrswrun, 1, {1}},
+    {HRSWRUN_INDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrswrun, 3, {2, 1, 1}},
+    {HRSWRUN_NAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrswrun, 3, {2, 1, 2}},
+    {HRSWRUN_ID, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_hrswrun, 3, {2, 1, 3}},
+    {HRSWRUN_PATH, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrswrun, 3, {2, 1, 4}},
+    {HRSWRUN_PARAMS, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrswrun, 3, {2, 1, 5}},
+    {HRSWRUN_TYPE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrswrun, 3, {2, 1, 6}},
+    {HRSWRUN_STATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrswrun, 3, {2, 1, 7}}
 };
 
 struct variable4 hrswrunperf_variables[] = {
-    {HRSWRUNPERF_CPU, ASN_INTEGER, RONLY, var_hrswrun, 3, {1, 1, 1}},
-    {HRSWRUNPERF_MEM, ASN_INTEGER, RONLY, var_hrswrun, 3, {1, 1, 2}}
+    {HRSWRUNPERF_CPU, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrswrun, 3, {1, 1, 1}},
+    {HRSWRUNPERF_MEM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrswrun, 3, {1, 1, 2}}
 };
 
 oid             hrswrun_variables_oid[] = { 1, 3, 6, 1, 2, 1, 25, 4 };
@@ -326,7 +338,7 @@
     auto_nlist(NPROC_SYMBOL, 0, 0);
 #endif
 
-    proc_table = 0;
+    proc_table = NULL;
 
     REGISTER_MIB("host/hr_swrun", hrswrun_variables, variable4,
                  hrswrun_variables_oid);
@@ -369,7 +381,7 @@
            (vp->namelen + 1) * sizeof(oid));
     *length = vp->namelen + 1;
 
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long);    /* default to 'long' results */
     return (MATCH_SUCCEEDED);
 }
@@ -453,7 +465,7 @@
     memcpy((char *) name, (char *) newname,
            (vp->namelen + 1) * sizeof(oid));
     *length = vp->namelen + 1;
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long);    /* default to 'long' results */
 
     DEBUGMSGTL(("host/hr_swrun", "... get process stats "));
@@ -512,6 +524,12 @@
     if ((cp = get_proc_file_line("/proc/%d/stat", pid, buf, buflen)) == NULL )
 	return NULL;
     for (i = 0; *cp && i < skip; ++i) {
+        /*
+         * The second field is 'comm' and can contain spaces. Hence skip to
+         * the closing parenthesis.
+         */
+        if (i == 1 && *cp == '(')
+            cp = strrchr(cp, ')');
 	cp = skip_to_next_field(cp);
     }
     return cp;
@@ -570,7 +588,7 @@
     time_t          now;
     static int      oldpid = -1;
 #endif
-#if HAVE_KVM_GETPROCS
+#if (defined(HAVE_KVM_GETPROCS) || defined(HAVE_KVM_GETPROC2))
     char          **argv;
 #endif
 #ifdef linux
@@ -667,11 +685,17 @@
 #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)
             *cp = '\0';
+#elif HAVE_KVM_GETPROC2
+        strlcpy(string, proc_table[LowProcIndex].p_comm, sizeof(string));
+        /* process name: truncate the string at the first space */
+        cp = strchr(string, ' ');
+        if (cp != NULL)
+            *cp = '\0';
 #elif HAVE_KVM_GETPROCS
     #if defined(freebsd5) && __FreeBSD_version >= 500014
         strcpy(string, proc_table[LowProcIndex].ki_comm);
@@ -784,11 +808,17 @@
             *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)
             *cp = '\0';
+#elif HAVE_KVM_GETPROC2
+        /* Should be path, but this is not available, just use argv[0] again */
+        strlcpy(string, proc_table[LowProcIndex].p_comm, sizeof(string));
+        cp = strchr(string, ' ');
+        if (cp != NULL)
+            *cp = '\0';
 #elif HAVE_KVM_GETPROCS
     #if defined(freebsd5) && __FreeBSD_version >= 500014
         strcpy(string, proc_table[LowProcIndex].ki_comm);
@@ -883,13 +913,24 @@
             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++;
             sprintf(string, "%s", cp);
         } else
             string[0] = '\0';
+#elif HAVE_KVM_GETPROC2
+        string[0] = 0;
+        argv = kvm_getargv2(kd, proc_table + LowProcIndex, sizeof(string));
+        if (argv)
+            argv++;
+        while (argv && *argv) {
+            if (string[0] != 0)
+                strcat(string, " ");
+            strcat(string, *argv);
+            argv++;
+        }
 #elif HAVE_KVM_GETPROCS
         string[0] = 0;
         argv = kvm_getargv(kd, proc_table + LowProcIndex, sizeof(string));
@@ -903,7 +944,7 @@
         }
 #elif defined(linux)
         memset(buf, 0, sizeof(buf));
-        if( (cp=get_proc_name_from_cmdline(pid,buf,sizeof(buf)-2)) == NULL ) {
+	if( (cp=get_proc_name_from_cmdline(pid,buf,sizeof(buf)-2)) == NULL ) {
             strcpy(string, "");
             *var_len = 0;
             return (u_char *) string;
@@ -952,11 +993,16 @@
             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
 			long_return = 4;	/* application */
+#elif HAVE_KVM_GETPROC2
+        if (proc_table[LowProcIndex].p_flag & P_SYSTEM)
+	    long_return = 2;	/* operatingSystem */
+	else
+	    long_return = 4;	/* application */
 #elif HAVE_KVM_GETPROCS
     #if defined(freebsd5) && __FreeBSD_version >= 500014
 	if (proc_table[LowProcIndex].ki_flag & P_SYSTEM) {
@@ -1014,7 +1060,9 @@
             break;
         }
 #else
-#if HAVE_KVM_GETPROCS
+#if HAVE_KVM_GETPROC2
+        switch (proc_table[LowProcIndex].p_stat) {
+#elif HAVE_KVM_GETPROCS
     #if defined(freebsd5) && __FreeBSD_version >= 500014
         switch (proc_table[LowProcIndex].ki_stat) {
     #elif defined(dragonfly) && __DragonFly_version >= 190000
@@ -1032,7 +1080,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) {
@@ -1109,6 +1157,10 @@
 #else
         long_return = proc_buf->p_utime * 100 + proc_buf->p_stime * 100;
 #endif
+#elif HAVE_KVM_GETPROC2
+        long_return = proc_table[LowProcIndex].p_uticks +
+            proc_table[LowProcIndex].p_sticks +
+            proc_table[LowProcIndex].p_iticks;
 #elif HAVE_KVM_GETPROCS
     #if defined(NOT_DEFINED) && defined(freebsd5) && __FreeBSD_version >= 500014
         /* XXX: Accessing ki_paddr causes sig10 ...
@@ -1171,7 +1223,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 +
@@ -1223,8 +1275,13 @@
 #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 +
+            proc_table[LowProcIndex].p_vm_ssize +
+            proc_table[LowProcIndex].p_vm_dsize;
+        long_return = long_return * (getpagesize() / 1024);
 #elif HAVE_KVM_GETPROCS && !defined(darwin8)
   #if defined(NOT_DEFINED) && defined(freebsd5) && __FreeBSD_version >= 500014
 	    /* XXX
@@ -1468,7 +1525,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;
@@ -1495,6 +1552,14 @@
 			proc_table = realloc(proc_table, avail * sizeof(proc_table[0]));
 		}
     }
+#elif HAVE_KVM_GETPROC2
+    {
+        if (kd == NULL) {
+            nproc = 0;
+            return;
+        }
+        proc_table = kvm_getproc2(kd, KERN_PROC_ALL, 0, sizeof (struct kinfo_proc2), &nproc);
+    }
 #elif HAVE_KVM_GETPROCS
     {
         if (kd == NULL) {
@@ -1555,6 +1620,9 @@
         return proc_table[current_proc_entry++].pst_pid;
 #elif defined(solaris2)
         return proc_table[current_proc_entry++];
+#elif HAVE_KVM_GETPROC2
+        if (proc_table[current_proc_entry].p_stat != 0)
+            return proc_table[current_proc_entry++].p_pid;
 #elif HAVE_KVM_GETPROCS
     #if defined(freebsd5) && __FreeBSD_version >= 500014
         if (proc_table[current_proc_entry].ki_stat != 0)
@@ -1569,7 +1637,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
@@ -1595,16 +1663,16 @@
 int
 count_processes(void)
 {
-#if !(defined(linux) || defined(cygwin) || defined(hpux10) || defined(hpux11) || defined(solaris2) || HAVE_KVM_GETPROCS || defined(dynix))
+#if !(defined(linux) || defined(cygwin) || defined(hpux10) || defined(hpux11) || defined(solaris2) || HAVE_KVM_GETPROCS || HAVE_KVM_GETPROC2 || defined(dynix))
     int             i;
 #endif
     int             total = 0;
 
     Init_HR_SWRun();
-#if defined(hpux10) || defined(hpux11) || HAVE_KVM_GETPROCS || defined(solaris2)
+#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)
@@ -1615,7 +1683,7 @@
 #endif
         ++total;
     }
-#endif                          /* !hpux10 && !hpux11 && !HAVE_KVM_GETPROCS && !solaris2 */
+#endif                          /* !hpux10 && !hpux11 && !HAVE_KVM_GETPROCS && !HAVE_KVM_GETPROC2 && !solaris2 */
     End_HR_SWRun();
     return total;
 }
diff --git a/agent/mibgroup/host/hr_system.c b/agent/mibgroup/host/hr_system.c
index cbc8fc8..d99cc7d 100644
--- a/agent/mibgroup/host/hr_system.c
+++ b/agent/mibgroup/host/hr_system.c
@@ -15,6 +15,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #if HAVE_STRING_H
 #include <string.h>
 #else
@@ -77,6 +78,8 @@
 #include <sys/sysctl.h>
 #endif
 
+netsnmp_feature_require(date_n_time)
+
 #if !defined(UTMP_FILE) && defined(_PATH_UTMP)
 #define UTMP_FILE _PATH_UTMP
 #endif
@@ -98,15 +101,20 @@
 #if defined(solaris2)
 static struct openpromio * op_malloc(size_t size);
 static void op_free(struct openpromio *op);
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 static int set_solaris_bootcommand_parameter(int action, u_char * var_val, u_char var_val_type, size_t var_val_len, u_char * statP, oid * name, size_t name_len);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 static int set_solaris_eeprom_parameter(const char *key, const char *value, size_t value_len);
 static int get_solaris_eeprom_parameter(const char *parameter, char *output);
 static long     get_max_solaris_processes(void);
 #endif
+
 static int      get_load_dev(void);
 static int      count_users(void);
 extern int      count_processes(void);
-
+extern int      swrun_count_processes(void);
 
         /*********************
 	 *
@@ -123,26 +131,60 @@
 #define	HRSYS_MAXPROCS		7
 
 #if defined(solaris2)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 struct variable2 hrsystem_variables[] = {
-    {HRSYS_UPTIME, ASN_TIMETICKS, RONLY, var_hrsys, 1, {1}},
-    {HRSYS_DATE, ASN_OCTET_STR, RWRITE, var_hrsys, 1, {2}},
-    {HRSYS_LOAD_DEV, ASN_INTEGER, RONLY, var_hrsys, 1, {3}},
-    {HRSYS_LOAD_PARAM, ASN_OCTET_STR, RWRITE, var_hrsys, 1, {4}},
-    {HRSYS_USERS, ASN_GAUGE, RONLY, var_hrsys, 1, {5}},
-    {HRSYS_PROCS, ASN_GAUGE, RONLY, var_hrsys, 1, {6}},
-    {HRSYS_MAXPROCS, ASN_INTEGER, RONLY, var_hrsys, 1, {7}}
+    {HRSYS_UPTIME, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {1}},
+    {HRSYS_DATE, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_hrsys, 1, {2}},
+    {HRSYS_LOAD_DEV, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {3}},
+    {HRSYS_LOAD_PARAM, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_hrsys, 1, {4}},
+    {HRSYS_USERS, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {5}},
+    {HRSYS_PROCS, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {6}},
+    {HRSYS_MAXPROCS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {7}}
 };
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+struct variable2 hrsystem_variables[] = {
+    {HRSYS_UPTIME, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {1}},
+    {HRSYS_DATE, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {2}},
+    {HRSYS_LOAD_DEV, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {3}},
+    {HRSYS_LOAD_PARAM, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {4}},
+    {HRSYS_USERS, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {5}},
+    {HRSYS_PROCS, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {6}},
+    {HRSYS_MAXPROCS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {7}}
+};
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 #else
 struct variable2 hrsystem_variables[] = {
-    {HRSYS_UPTIME, ASN_TIMETICKS, RONLY, var_hrsys, 1, {1}},
-    {HRSYS_DATE, ASN_OCTET_STR, RONLY, var_hrsys, 1, {2}},
-    {HRSYS_LOAD_DEV, ASN_INTEGER, RONLY, var_hrsys, 1, {3}},
-    {HRSYS_LOAD_PARAM, ASN_OCTET_STR, RONLY, var_hrsys, 1, {4}},
-    {HRSYS_USERS, ASN_GAUGE, RONLY, var_hrsys, 1, {5}},
-    {HRSYS_PROCS, ASN_GAUGE, RONLY, var_hrsys, 1, {6}},
-    {HRSYS_MAXPROCS, ASN_INTEGER, RONLY, var_hrsys, 1, {7}}
+    {HRSYS_UPTIME, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {1}},
+    {HRSYS_DATE, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {2}},
+    {HRSYS_LOAD_DEV, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {3}},
+    {HRSYS_LOAD_PARAM, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {4}},
+    {HRSYS_USERS, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {5}},
+    {HRSYS_PROCS, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {6}},
+    {HRSYS_MAXPROCS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrsys, 1, {7}}
 };
 #endif
+
 oid             hrsystem_variables_oid[] = { 1, 3, 6, 1, 2, 1, 25, 1 };
 
 
@@ -191,7 +233,7 @@
            (vp->namelen + 1) * sizeof(oid));
     *length = vp->namelen + 1;
 
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long);    /* default to 'long' results */
     return (MATCH_SUCCEEDED);
 } /* end header_hrsys */
@@ -236,9 +278,11 @@
         return (u_char *) & long_return;
     case HRSYS_DATE:
 #if defined(HAVE_MKTIME) && defined(HAVE_STIME)
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
         *write_method=ns_set_time;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 #endif
-        (void *) time(&now);
+        time(&now);
         return (u_char *) date_n_time(&now, var_len);
     case HRSYS_LOAD_DEV:
         long_return = get_load_dev();
@@ -252,7 +296,9 @@
             return NULL;
         }
 #elif defined(solaris2)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method=set_solaris_bootcommand_parameter;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         if ( get_solaris_eeprom_parameter("boot-command",bootparam) ) {
             snmp_log(LOG_ERR,"unable to lookup boot-command from eeprom\n");
             return NULL;
@@ -270,7 +316,9 @@
         long_return = count_users();
         return (u_char *) & long_return;
     case HRSYS_PROCS:
-#if USING_HOST_HR_SWRUN_MODULE
+#if USING_HOST_DATA_ACCESS_SWRUN_MODULE
+        long_return = swrun_count_processes();
+#elif USING_HOST_HR_SWRUN_MODULE
         long_return = count_processes();
 #else
 #if NETSNMP_NO_DUMMY_VALUES
@@ -349,6 +397,7 @@
     free(op);
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 static int
 set_solaris_bootcommand_parameter(int action,
             u_char * var_val,
@@ -413,6 +462,7 @@
     }
     return SNMP_ERR_NOERROR;
 }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 static int set_solaris_eeprom_parameter(const char *key, const char *value,
                                         size_t var_val_len) {
@@ -492,6 +542,7 @@
 #endif
 
 #if defined(HAVE_MKTIME) && defined(HAVE_STIME)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 ns_set_time(int action,
             u_char * var_val,
@@ -585,6 +636,7 @@
     }
     return SNMP_ERR_NOERROR;
 }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 #endif
 
                 /*
diff --git a/agent/mibgroup/host/hr_system.h b/agent/mibgroup/host/hr_system.h
index 5e12c0d..feffa60 100644
--- a/agent/mibgroup/host/hr_system.h
+++ b/agent/mibgroup/host/hr_system.h
@@ -9,7 +9,9 @@
 extern FindVarMethod var_hrsys;
 
 #if defined(HAVE_MKTIME) && defined(HAVE_STIME)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int ns_set_time(int action, u_char * var_val, u_char var_val_type, size_t var_val_len, u_char * statP, oid * name, size_t name_len);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 #endif
 
 #endif                          /* _MIBGROUP_HRSYSTEM_H */
diff --git a/agent/mibgroup/host/hrh_filesys.c b/agent/mibgroup/host/hrh_filesys.c
new file mode 100644
index 0000000..4aab6a0
--- /dev/null
+++ b/agent/mibgroup/host/hrh_filesys.c
@@ -0,0 +1,429 @@
+/*
+ *  Host Resources MIB - File System device group implementation (HAL rewrite) - hrh_filesys.c
+ *
+ */
+/* 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.
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/hardware/memory.h>
+#include <net-snmp/agent/hardware/fsys.h>
+#include "host_res.h"
+#include "hrh_filesys.h"
+#include "hrh_storage.h"
+#include "hr_disk.h"
+#include <net-snmp/utilities.h>
+
+#if HAVE_MNTENT_H
+#include <mntent.h>
+#endif
+#if HAVE_SYS_MNTENT_H
+#include <sys/mntent.h>
+#endif
+#if HAVE_SYS_MNTTAB_H
+#include <sys/mnttab.h>
+#endif
+#if HAVE_SYS_STATVFS_H
+#include <sys/statvfs.h>
+#endif
+#if HAVE_SYS_VFS_H
+#include <sys/vfs.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+
+#include <ctype.h>
+#if HAVE_STRING_H
+#include <string.h>
+#endif
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
+#include <sys/mntctl.h>
+#include <sys/vmount.h>
+#include <sys/statfs.h>
+#endif
+
+netsnmp_feature_require(date_n_time)
+netsnmp_feature_require(ctime_to_timet)
+
+#define HRFS_MONOTONICALLY_INCREASING
+
+        /*********************
+	 *
+	 *  Kernel & interface information,
+	 *   and internal forward declarations
+	 *
+	 *********************/
+netsnmp_fsys_info *HRFS_entry;
+
+#define	FULL_DUMP	0
+#define	PART_DUMP	1
+
+extern void     Init_HR_FileSys(void);
+extern int      Get_Next_HR_FileSys(void);
+char           *cook_device(char *);
+static u_char  *when_dumped(char *filesys, int level, size_t * length);
+int             header_hrhfilesys(struct variable *, oid *, size_t *, int,
+                                 size_t *, WriteMethod **);
+
+        /*********************
+	 *
+	 *  Initialisation & common implementation functions
+	 *
+	 *********************/
+
+#define HRFSYS_INDEX		1
+#define HRFSYS_MOUNT		2
+#define HRFSYS_RMOUNT		3
+#define HRFSYS_TYPE		4
+#define HRFSYS_ACCESS		5
+#define HRFSYS_BOOT		6
+#define HRFSYS_STOREIDX		7
+#define HRFSYS_FULLDUMP		8
+#define HRFSYS_PARTDUMP		9
+
+struct variable4 hrfsys_variables[] = {
+    {HRFSYS_INDEX,    ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_hrhfilesys, 2, {1, 1}},
+    {HRFSYS_MOUNT,    ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrhfilesys, 2, {1, 2}},
+    {HRFSYS_RMOUNT,   ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrhfilesys, 2, {1, 3}},
+    {HRFSYS_TYPE,     ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_hrhfilesys, 2, {1, 4}},
+    {HRFSYS_ACCESS,   ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_hrhfilesys, 2, {1, 5}},
+    {HRFSYS_BOOT,     ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_hrhfilesys, 2, {1, 6}},
+    {HRFSYS_STOREIDX, ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_hrhfilesys, 2, {1, 7}},
+    {HRFSYS_FULLDUMP, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrhfilesys, 2, {1, 8}},
+    {HRFSYS_PARTDUMP, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrhfilesys, 2, {1, 9}},
+};
+oid             hrfsys_variables_oid[] = { 1, 3, 6, 1, 2, 1, 25, 3, 8 };
+
+void
+init_hrh_filesys(void)
+{
+    REGISTER_MIB("host/hr_filesys", hrfsys_variables, variable4,
+                 hrfsys_variables_oid);
+}
+
+/*
+ * header_hrhfilesys(...
+ * 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
+ * 
+ */
+
+int
+header_hrhfilesys(struct variable *vp,
+                 oid * name,
+                 size_t * length,
+                 int exact, size_t * var_len, WriteMethod ** write_method)
+{
+#define HRFSYS_ENTRY_NAME_LENGTH	11
+    oid             newname[MAX_OID_LEN];
+    int             fsys_idx, LowIndex = -1;
+    int             result;
+
+    DEBUGMSGTL(("host/hr_filesys", "var_hrhfilesys: "));
+    DEBUGMSGOID(("host/hr_filesys", name, *length));
+    DEBUGMSG(("host/hr_filesys", " %d\n", exact));
+
+    memcpy((char *) newname, (char *) vp->name, vp->namelen * sizeof(oid));
+    /*
+     * Find "next" file system entry 
+     */
+
+    Init_HR_FileSys();
+    for (;;) {
+        fsys_idx = Get_Next_HR_FileSys();
+        if (fsys_idx == -1)
+            break;
+        newname[HRFSYS_ENTRY_NAME_LENGTH] = fsys_idx;
+        result = snmp_oid_compare(name, *length, newname, vp->namelen + 1);
+        if (exact && (result == 0)) {
+            LowIndex = fsys_idx;
+            break;
+        }
+        if ((!exact && (result < 0)) &&
+            (LowIndex == -1 || fsys_idx < LowIndex)) {
+            LowIndex = fsys_idx;
+#ifdef HRFS_MONOTONICALLY_INCREASING
+            break;
+#endif
+        }
+    }
+
+    if (LowIndex == -1) {
+        DEBUGMSGTL(("host/hr_filesys", "... index out of range\n"));
+        return (MATCH_FAILED);
+    }
+
+    memcpy((char *) name, (char *) newname,
+           (vp->namelen + 1) * sizeof(oid));
+    *length = vp->namelen + 1;
+    *write_method = 0;
+    *var_len = sizeof(long);    /* default to 'long' results */
+
+    DEBUGMSGTL(("host/hr_filesys", "... get filesys stats "));
+    DEBUGMSGOID(("host/hr_filesys", name, *length));
+    DEBUGMSG(("host/hr_filesys", "\n"));
+
+    return LowIndex;
+}
+
+
+oid             fsys_type_id[] = { 1, 3, 6, 1, 2, 1, 25, 3, 9, 1 };     /* hrFSOther */
+int             fsys_type_len =
+    sizeof(fsys_type_id) / sizeof(fsys_type_id[0]);
+
+
+
+        /*********************
+	 *
+	 *  System specific implementation functions
+	 *
+	 *********************/
+
+
+u_char         *
+var_hrhfilesys(struct variable *vp,
+              oid * name,
+              size_t * length,
+              int exact, size_t * var_len, WriteMethod ** write_method)
+{
+    int             fsys_idx;
+    static char     string[1024];
+
+    fsys_idx =
+        header_hrhfilesys(vp, name, length, exact, var_len, write_method);
+    if (fsys_idx == MATCH_FAILED)
+        return NULL;
+
+    switch (vp->magic) {
+    case HRFSYS_INDEX:
+        long_return = fsys_idx;
+        return (u_char *) & long_return;
+    case HRFSYS_MOUNT:
+        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), "%s", HRFS_entry->device);
+            string[ sizeof(string)-1 ] = 0;
+        } else
+            string[0] = '\0';
+        *var_len = strlen(string);
+        return (u_char *) string;
+
+    case HRFSYS_TYPE:
+        fsys_type_id[fsys_type_len - 1] = 
+            (HRFS_entry->type > _NETSNMP_FS_TYPE_LOCAL ?
+                                 NETSNMP_FS_TYPE_OTHER : HRFS_entry->type);
+        *var_len = sizeof(fsys_type_id);
+        return (u_char *) fsys_type_id;
+
+    case HRFSYS_ACCESS:
+	long_return = HRFS_entry->flags & NETSNMP_FS_FLAG_RONLY ? 2 : 1;
+        return (u_char *) & long_return;
+    case HRFSYS_BOOT:
+	long_return = HRFS_entry->flags & NETSNMP_FS_FLAG_BOOTABLE ? 1 : 2;
+        return (u_char *) & long_return;
+    case HRFSYS_STOREIDX:
+        long_return = fsys_idx + NETSNMP_MEM_TYPE_MAX;
+        return (u_char *) & long_return;
+    case HRFSYS_FULLDUMP:
+        return when_dumped(HRFS_entry->path, FULL_DUMP, var_len);
+    case HRFSYS_PARTDUMP:
+        return when_dumped(HRFS_entry->path, PART_DUMP, var_len);
+    default:
+        DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_hrhfilesys\n",
+                    vp->magic));
+    }
+    return NULL;
+}
+
+
+        /*********************
+	 *
+	 *  Internal implementation functions
+	 *
+	 *********************/
+static int      HRFS_index;
+
+void
+Init_HR_FileSys(void)
+{
+    netsnmp_cache *c = netsnmp_fsys_get_cache();
+    netsnmp_cache_check_and_reload( c );
+
+    HRFS_entry = NULL;
+    HRFS_index = 0;
+}
+
+int
+Get_Next_HR_FileSys(void)
+{
+    if ( HRFS_entry ) {
+        HRFS_entry = netsnmp_fsys_get_next( HRFS_entry );
+    } else {     
+        HRFS_entry = netsnmp_fsys_get_first();
+    }
+    /* Skip "inactive" entries */
+    while ( HRFS_entry && !(HRFS_entry->flags & NETSNMP_FS_FLAG_ACTIVE))
+        HRFS_entry = netsnmp_fsys_get_next( HRFS_entry );
+
+    HRFS_index = (HRFS_entry ? HRFS_entry->idx.oids[0] : -1 );
+    return HRFS_index;
+}
+
+
+
+static u_char  *
+when_dumped(char *filesys, int level, size_t * length)
+{
+    time_t          dumpdate = 0, tmp;
+    FILE           *dump_fp;
+    char            line[1024];
+    char           *cp1, *cp2, *cp3;
+
+    /*
+     * Look for the relevent entries in /etc/dumpdates
+     *
+     * This is complicated by the fact that disks are
+     *   mounted using block devices, but dumps are
+     *   done via the raw character devices.
+     * Thus the device names in /etc/dumpdates and
+     *   /etc/mnttab don't match.
+     *   These comparisons are therefore made using the
+     *   final portion of the device name only.
+     */
+
+    if (*filesys == '\0')       /* No filesystem name? */
+        return date_n_time(NULL, length);
+    cp1 = strrchr(filesys, '/');        /* Find the last element of the current FS */
+
+    if (cp1 == NULL)
+        cp1 = filesys;
+
+    if ((dump_fp = fopen("/etc/dumpdates", "r")) == NULL)
+        return date_n_time(NULL, length);
+
+    while (fgets(line, sizeof(line), dump_fp) != NULL) {
+        cp2 = strchr(line, ' ');        /* Start by looking at the device name only */
+        if (cp2 != NULL) {
+            *cp2 = '\0';
+            cp3 = strrchr(line, '/');   /* and find the last element */
+            if (cp3 == NULL)
+                cp3 = line;
+
+            if (strcmp(cp1, cp3) != 0)  /* Wrong FS */
+                continue;
+
+            ++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(0xFF & *cp2))
+                    ++cp2;
+
+                dumpdate = ctime_to_timet(cp2);
+                fclose(dump_fp);
+                return date_n_time(&dumpdate, length);
+            } else {            /* Partial Dump */
+                if (*(cp2++) == '0')
+                    continue;   /* Not interested in full dumps */
+                while (isspace(0xFF & *cp2))
+                    ++cp2;
+
+                tmp = ctime_to_timet(cp2);
+                if (tmp > dumpdate)
+                    dumpdate = tmp;     /* Remember the 'latest' partial dump */
+            }
+        }
+    }
+
+    fclose(dump_fp);
+
+    return date_n_time(&dumpdate, length);
+}
+
+
+#define RAW_DEVICE_PREFIX	"/dev/rdsk"
+#define COOKED_DEVICE_PREFIX	"/dev/dsk"
+
+char           *
+cook_device(char *dev)
+{
+    static char     cooked_dev[SNMP_MAXPATH+1];
+
+    if (!strncmp(dev, RAW_DEVICE_PREFIX, strlen(RAW_DEVICE_PREFIX))) {
+        strlcpy(cooked_dev, COOKED_DEVICE_PREFIX, sizeof(cooked_dev));
+        strlcat(cooked_dev, dev + strlen(RAW_DEVICE_PREFIX),
+                sizeof(cooked_dev));
+    } else {
+        strlcpy(cooked_dev, dev, sizeof(cooked_dev));
+    }
+
+    return cooked_dev;
+}
+
+
+int
+Get_FSIndex(char *dev)
+{
+    netsnmp_fsys_info *fsys;
+
+    fsys = netsnmp_fsys_by_device( dev, NETSNMP_FS_FIND_EXIST );
+    return (fsys ? fsys->idx.oids[0] : -1 );
+}
+
+long
+Get_FSSize(char *dev)
+{
+    netsnmp_fsys_info *fsys;
+
+    fsys = netsnmp_fsys_by_device( dev, NETSNMP_FS_FIND_EXIST );
+    if ( fsys )       
+        return netsnmp_fsys_size( fsys );
+    else
+        return -1;
+}
+
+int
+Check_HR_FileSys_NFS (void)
+{
+    return (HRFS_entry->flags & NETSNMP_FS_FLAG_REMOTE) ? 1 : 0;
+}
diff --git a/agent/mibgroup/host/hrh_filesys.h b/agent/mibgroup/host/hrh_filesys.h
new file mode 100644
index 0000000..568917e
--- /dev/null
+++ b/agent/mibgroup/host/hrh_filesys.h
@@ -0,0 +1,19 @@
+/*
+ *  Host Resources MIB - file system device group interface (HAL rewrite) - hrh_filesys.h
+ *
+ */
+#ifndef _MIBGROUP_HRFSYS_H
+#define _MIBGROUP_HRFSYS_H
+
+extern void     init_hrh_filesys(void);
+extern void     Init_HR_FileSys(void);
+extern FindVarMethod var_hrhfilesys;
+extern int      Get_Next_HR_FileSys(void);
+extern int      Check_HR_FileSys_NFS(void);
+
+extern int      Get_FSIndex(char *);
+extern long     Get_FSSize(char *);     /* Temporary */
+
+config_exclude( host/hr_filesys )
+
+#endif                          /* _MIBGROUP_HRFSYS_H */
diff --git a/agent/mibgroup/host/hrh_storage.c b/agent/mibgroup/host/hrh_storage.c
new file mode 100644
index 0000000..ca2f854
--- /dev/null
+++ b/agent/mibgroup/host/hrh_storage.c
@@ -0,0 +1,520 @@
+/*
+ *  Host Resources MIB - storage group implementation - hrh_storage.c
+ *
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/hardware/memory.h>
+#include <net-snmp/agent/hardware/fsys.h>
+#include "host_res.h"
+#include "hrh_filesys.h"
+#include "hrh_storage.h"
+#include "hr_disk.h"
+#include <net-snmp/utilities.h>
+
+
+#include <sys/types.h>
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_UNISTD_H
+#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 <time.h>
+#else
+# if HAVE_SYS_TIME_H
+#  include <sys/time.h>
+# else
+#  include <time.h>
+# endif
+#endif
+
+#if HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+#if HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+
+#include <net-snmp/output_api.h>
+
+#include <net-snmp/agent/agent_read_config.h>
+#include <net-snmp/library/read_config.h>
+
+#define HRSTORE_MONOTONICALLY_INCREASING
+
+        /*********************
+	 *
+	 *  Kernel & interface information,
+	 *   and internal forward declarations
+	 *
+	 *********************/
+
+
+extern netsnmp_fsys_info *HRFS_entry;
+
+static void parse_storage_config(const char *, char *);
+
+        /*********************
+	 *
+	 *  Initialisation & common implementation functions
+	 *
+	 *********************/
+int             Get_Next_HR_Store(void);
+void            Init_HR_Store(void);
+int             header_hrstore(struct variable *, oid *, size_t *, int,
+                               size_t *, WriteMethod **);
+void*           header_hrstoreEntry(struct variable *, oid *, size_t *,
+                                    int, size_t *, WriteMethod **);
+Netsnmp_Node_Handler handle_memsize;
+
+
+#define	HRSTORE_MEMSIZE		1
+#define	HRSTORE_INDEX		2
+#define	HRSTORE_TYPE		3
+#define	HRSTORE_DESCR		4
+#define	HRSTORE_UNITS		5
+#define	HRSTORE_SIZE		6
+#define	HRSTORE_USED		7
+#define	HRSTORE_FAILS		8
+
+struct variable2 hrstore_variables[] = {
+    {HRSTORE_INDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrstore, 1, {1}},
+    {HRSTORE_TYPE, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_hrstore, 1, {2}},
+    {HRSTORE_DESCR, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_hrstore, 1, {3}},
+    {HRSTORE_UNITS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrstore, 1, {4}},
+    {HRSTORE_SIZE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrstore, 1, {5}},
+    {HRSTORE_USED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_hrstore, 1, {6}},
+    {HRSTORE_FAILS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_hrstore, 1, {7}}
+};
+oid             hrstore_variables_oid[] = { 1, 3, 6, 1, 2, 1, 25, 2 };
+oid             hrMemorySize_oid[]   = { 1, 3, 6, 1, 2, 1, 25, 2, 2 };
+oid             hrStorageTable_oid[] = { 1, 3, 6, 1, 2, 1, 25, 2, 3, 1 };
+
+
+void
+init_hrh_storage(void)
+{
+    char *appname;
+
+    netsnmp_register_scalar(
+        netsnmp_create_handler_registration("host/hrMemorySize", handle_memsize,
+                           hrMemorySize_oid, OID_LENGTH(hrMemorySize_oid),
+                                             HANDLER_CAN_RONLY));
+    REGISTER_MIB("host/hr_storage", hrstore_variables, variable2,
+                 hrStorageTable_oid);
+
+    appname = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                    NETSNMP_DS_LIB_APPTYPE);
+    netsnmp_ds_register_config(ASN_BOOLEAN, appname, "skipNFSInHostResources", 
+			       NETSNMP_DS_APPLICATION_ID,
+			       NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES);
+
+    netsnmp_ds_register_config(ASN_BOOLEAN, appname, "realStorageUnits",
+                   NETSNMP_DS_APPLICATION_ID,
+                   NETSNMP_DS_AGENT_REALSTORAGEUNITS);
+
+    snmpd_register_config_handler("storageUseNFS", parse_storage_config, NULL,
+	"1 | 2\t\t(1 = enable, 2 = disable)");
+}
+
+static int storageUseNFS = 1;	/* Default to reporting NFS mounts as NetworkDisk */
+
+static void
+parse_storage_config(const char *token, char *cptr)
+{
+    char *val;
+    int ival;
+    char *st;
+
+    val = strtok_r(cptr, " \t", &st);
+    if (!val) {
+        config_perror("Missing FLAG parameter in storageUseNFS");
+        return;
+    }
+    ival = atoi(val);
+    if (ival < 1 || ival > 2) {
+        config_perror("storageUseNFS must be 1 or 2");
+        return;
+    }
+    storageUseNFS = (ival == 1) ? 1 : 0;
+}
+
+/*
+ * header_hrstoreEntry(...
+ * 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
+ * 
+ */
+
+void *
+header_hrstoreEntry(struct variable *vp,
+                    oid * name,
+                    size_t * length,
+                    int exact,
+                    size_t * var_len, WriteMethod ** write_method)
+{
+#define HRSTORE_ENTRY_NAME_LENGTH	11
+    oid             newname[MAX_OID_LEN];
+    int             storage_idx, LowIndex = -1;
+    int             result;
+    int                  idx = -1;
+    netsnmp_memory_info *mem  = NULL;
+
+    DEBUGMSGTL(("host/hr_storage", "var_hrstoreEntry: request "));
+    DEBUGMSGOID(("host/hr_storage", name, *length));
+    DEBUGMSG(("host/hr_storage", " exact=%d\n", exact));
+
+    memcpy((char *) newname, (char *) vp->name,
+           (int) vp->namelen * sizeof(oid));
+    result = snmp_oid_compare(name, *length, vp->name, vp->namelen);
+
+    DEBUGMSGTL(("host/hr_storage", "var_hrstoreEntry: compare "));
+    DEBUGMSGOID(("host/hr_storage", vp->name, vp->namelen));
+    DEBUGMSG(("host/hr_storage", " => %d\n", result));
+
+
+    if (result < 0 ||
+        *length <= HRSTORE_ENTRY_NAME_LENGTH ) {
+       /*
+        * Requested OID too early or too short to refer
+        *   to a valid row (for the current column object).
+        * GET requests should fail, GETNEXT requests
+        *   should use the first row.
+        */
+        if ( exact )
+            return NULL;
+        netsnmp_memory_load();
+        mem = netsnmp_memory_get_first( 0 );
+    }
+    else {
+        /*
+         * Otherwise, retrieve the requested
+         *  (or following) row as appropriate.
+         */
+        if ( exact && *length > HRSTORE_ENTRY_NAME_LENGTH+1 )
+            return NULL;   /* Too long for a valid instance */
+        idx = name[ HRSTORE_ENTRY_NAME_LENGTH ];
+        if ( idx < NETSNMP_MEM_TYPE_MAX ) {
+            netsnmp_memory_load();
+            mem = ( exact ? netsnmp_memory_get_byIdx( idx, 0 ) :
+                       netsnmp_memory_get_next_byIdx( idx, 0 ));
+        }
+    }
+
+    /*
+     * If this matched a memory-based entry, then
+     *    update the OID parameter(s) for GETNEXT requests.
+     */
+    if ( mem ) {
+        if ( !exact ) {
+            newname[ HRSTORE_ENTRY_NAME_LENGTH ] = mem->idx;
+            memcpy((char *) name, (char *) newname,
+                   ((int) vp->namelen + 1) * sizeof(oid));
+            *length = vp->namelen + 1;
+        }
+    }
+    /*
+     * If this didn't match a memory-based entry,
+     *   then consider the disk-based storage.
+     */
+    else {
+        Init_HR_Store();
+        for (;;) {
+            storage_idx = Get_Next_HR_Store();
+            DEBUGMSG(("host/hr_storage", "(index %d ....", storage_idx));
+            if (storage_idx == -1)
+                break;
+            newname[HRSTORE_ENTRY_NAME_LENGTH] = storage_idx;
+            DEBUGMSGOID(("host/hr_storage", newname, *length));
+            DEBUGMSG(("host/hr_storage", "\n"));
+            result = snmp_oid_compare(name, *length, newname, vp->namelen + 1);
+            if (exact && (result == 0)) {
+                LowIndex = storage_idx;
+                /*
+                 * Save storage status information 
+                 */
+                break;
+            }
+            if ((!exact && (result < 0)) &&
+                (LowIndex == -1 || storage_idx < LowIndex)) {
+                LowIndex = storage_idx;
+                /*
+                 * Save storage status information 
+                 */
+#ifdef HRSTORE_MONOTONICALLY_INCREASING
+                break;
+#endif
+            }
+        }
+        if ( LowIndex != -1 ) {
+            if ( !exact ) {
+                newname[ HRSTORE_ENTRY_NAME_LENGTH ] = LowIndex;
+                memcpy((char *) name, (char *) newname,
+                       ((int) vp->namelen + 1) * sizeof(oid));
+                *length = vp->namelen + 1;
+            }
+            mem = (netsnmp_memory_info*)0xffffffff;   /* To indicate 'success' */
+        }
+    }
+
+    *write_method = (WriteMethod*)0;
+    *var_len = sizeof(long);    /* default to 'long' results */
+
+    /*
+     *  ... and return the appropriate row
+     */
+    DEBUGMSGTL(("host/hr_storage", "var_hrstoreEntry: process "));
+    DEBUGMSGOID(("host/hr_storage", name, *length));
+    DEBUGMSG(("host/hr_storage", " (%p)\n", mem));
+    return (void*)mem;
+}
+
+oid             storage_type_id[] = { 1, 3, 6, 1, 2, 1, 25, 2, 1, 1 };  /* hrStorageOther */
+int             storage_type_len =
+    sizeof(storage_type_id) / sizeof(storage_type_id[0]);
+
+        /*********************
+	 *
+	 *  System specific implementation functions
+	 *
+	 *********************/
+
+int
+handle_memsize(netsnmp_mib_handler *handler,
+                netsnmp_handler_registration *reginfo,
+                netsnmp_agent_request_info *reqinfo,
+                netsnmp_request_info *requests)
+{
+    netsnmp_memory_info *mem_info;
+    int val;
+
+    /*
+     * We just need to handle valid GET requests, as invalid instances
+     *   are rejected automatically, and (valid) GETNEXT requests are
+     *   converted into the appropriate GET request.
+     *
+     * We also only ever receive one request at a time.
+     */
+    switch (reqinfo->mode) {
+    case MODE_GET:
+        netsnmp_memory_load();
+        mem_info = netsnmp_memory_get_byIdx( NETSNMP_MEM_TYPE_PHYSMEM, 0 );
+        if ( !mem_info || mem_info->size == -1 || mem_info->units == -1 )
+            netsnmp_set_request_error( reqinfo, requests, SNMP_NOSUCHOBJECT );
+	else {
+            val  =  mem_info->size;     /* memtotal */
+            val *= (mem_info->units/1024);
+            snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,
+                                     (u_char *)&val, sizeof(val));
+        }
+        return SNMP_ERR_NOERROR;
+
+    default:
+        /*
+         * we should never get here, so this is a really bad error 
+         */
+        snmp_log(LOG_ERR, "unknown mode (%d) in handle_memsize\n",
+                 reqinfo->mode);
+        return SNMP_ERR_GENERR;
+    }
+
+    return SNMP_ERR_NOERROR;
+}
+
+
+u_char         *
+var_hrstore(struct variable *vp,
+            oid * name,
+            size_t * length,
+            int exact, size_t * var_len, WriteMethod ** write_method)
+{
+    int             store_idx = 0;
+    static char     string[1024];
+    void                *ptr;
+    netsnmp_memory_info *mem = NULL;
+
+really_try_next:
+	ptr = header_hrstoreEntry(vp, name, length, exact, var_len,
+					write_method);
+	if (ptr == NULL)
+	    return NULL;
+
+        store_idx = name[ HRSTORE_ENTRY_NAME_LENGTH ];
+        if (HRFS_entry &&
+	    store_idx > NETSNMP_MEM_TYPE_MAX &&
+            netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+                                   NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES) &&
+            Check_HR_FileSys_NFS())
+            return NULL;
+        if (store_idx <= NETSNMP_MEM_TYPE_MAX ) {
+	    mem = (netsnmp_memory_info*)ptr;
+        }
+
+
+
+    switch (vp->magic) {
+    case HRSTORE_INDEX:
+        long_return = store_idx;
+        return (u_char *) & long_return;
+    case HRSTORE_TYPE:
+        if (store_idx > NETSNMP_MEM_TYPE_MAX)
+            if (HRFS_entry->flags & NETSNMP_FS_FLAG_REMOTE )
+                storage_type_id[storage_type_len - 1] = 10;     /* Network Disk */
+            else if (HRFS_entry->flags & NETSNMP_FS_FLAG_REMOVE )
+                storage_type_id[storage_type_len - 1] = 5;      /* Removable Disk */
+            else
+                storage_type_id[storage_type_len - 1] = 4;      /* Assume fixed */
+        else
+            switch (store_idx) {
+            case NETSNMP_MEM_TYPE_PHYSMEM:
+            case NETSNMP_MEM_TYPE_USERMEM:
+                storage_type_id[storage_type_len - 1] = 2;      /* RAM */
+                break;
+            case NETSNMP_MEM_TYPE_VIRTMEM:
+            case NETSNMP_MEM_TYPE_SWAP:
+                storage_type_id[storage_type_len - 1] = 3;      /* Virtual Mem */
+                break;
+            default:
+                storage_type_id[storage_type_len - 1] = 1;      /* Other */
+                break;
+            }
+        *var_len = sizeof(storage_type_id);
+        return (u_char *) storage_type_id;
+    case HRSTORE_DESCR:
+        if (store_idx > NETSNMP_MEM_TYPE_MAX) {
+            strlcpy(string, HRFS_entry->path, sizeof(string));
+            *var_len = strlen(string);
+            return (u_char *) string;
+        } else {
+            if ( !mem || !mem->descr )
+                goto try_next;
+            *var_len = strlen(mem->descr);
+            return (u_char *) mem->descr;
+        }
+    case HRSTORE_UNITS:
+        if (store_idx > NETSNMP_MEM_TYPE_MAX) {
+            if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+                    NETSNMP_DS_AGENT_REALSTORAGEUNITS))
+                long_return = HRFS_entry->units & 0xffffffff;
+            else
+                long_return = HRFS_entry->units_32;
+        } else {
+            if ( !mem || mem->units == -1 )
+                goto try_next;
+            long_return = mem->units;
+        }
+        return (u_char *) & long_return;
+    case HRSTORE_SIZE:
+        if (store_idx > NETSNMP_MEM_TYPE_MAX) {
+            if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+                    NETSNMP_DS_AGENT_REALSTORAGEUNITS))
+                long_return = HRFS_entry->size & 0xffffffff;
+            else
+                long_return = HRFS_entry->size_32;
+        } else {
+            if ( !mem || mem->size == -1 )
+                goto try_next;
+            long_return = mem->size;
+        }
+        return (u_char *) & long_return;
+    case HRSTORE_USED:
+        if (store_idx > NETSNMP_MEM_TYPE_MAX) {
+            if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+                    NETSNMP_DS_AGENT_REALSTORAGEUNITS))
+                long_return = HRFS_entry->used & 0xffffffff;
+            else
+                long_return = HRFS_entry->used_32;
+        } else {
+            if ( !mem || mem->size == -1 || mem->free == -1 )
+                goto try_next;
+            long_return = mem->size - mem->free;
+        }
+        return (u_char *) & long_return;
+    case HRSTORE_FAILS:
+        if (store_idx > NETSNMP_MEM_TYPE_MAX)
+#if NETSNMP_NO_DUMMY_VALUES
+	    goto try_next;
+#else
+            long_return = 0;
+#endif
+        else {
+            if ( !mem || mem->other == -1 )
+                goto try_next;
+            long_return = mem->other;
+        }
+        return (u_char *) & long_return;
+    default:
+        DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_hrstore\n",
+                    vp->magic));
+    }
+    return NULL;
+
+  try_next:
+    if (!exact)
+        goto really_try_next;
+
+    return NULL;
+}
+
+
+        /*********************
+	 *
+	 *  Internal implementation functions
+	 *
+	 *********************/
+
+static int      HRS_index;
+
+void
+Init_HR_Store(void)
+{
+    HRS_index = 0;
+    Init_HR_FileSys();
+}
+
+int
+Get_Next_HR_Store(void)
+{
+    /*
+     * File-based storage 
+     */
+	for (;;) {
+    	HRS_index = Get_Next_HR_FileSys();
+		if (HRS_index >= 0) {
+			if (!(netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
+							NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES) && 
+						Check_HR_FileSys_NFS())) {
+				return HRS_index + NETSNMP_MEM_TYPE_MAX;	
+			}
+		} else {
+			return -1;
+		}	
+	}
+}
+
diff --git a/agent/mibgroup/host/hrh_storage.h b/agent/mibgroup/host/hrh_storage.h
new file mode 100644
index 0000000..e872345
--- /dev/null
+++ b/agent/mibgroup/host/hrh_storage.h
@@ -0,0 +1,23 @@
+/*
+ *  Host Resources MIB - storage group interface (HAL rewrite) - hrh_storage.h
+ *
+ */
+#ifndef _MIBGROUP_HRSTORAGE_H
+#define _MIBGROUP_HRSTORAGE_H
+
+config_require(hardware/memory)
+config_require(hardware/fsys)
+config_require(host/hrh_filesys)
+
+config_exclude( host/hr_storage )
+
+extern void     init_hrh_storage(void);
+extern FindVarMethod var_hrstore;
+
+
+#define	HRS_TYPE_MBUF		1
+#define	HRS_TYPE_MEM		2
+#define	HRS_TYPE_SWAP		3
+#define	HRS_TYPE_FIXED_MAX	3     /* the largest fixed type */
+
+#endif                          /* _MIBGROUP_HRSTORAGE_H */
diff --git a/agent/mibgroup/host_res.h b/agent/mibgroup/host_res.h
index 8c95090..1dba388 100644
--- a/agent/mibgroup/host_res.h
+++ b/agent/mibgroup/host_res.h
@@ -17,16 +17,16 @@
 #include <net-snmp/agent/snmp_vars.h>
 #include <net-snmp/agent/var_struct.h>
 
-#if defined(IFNET_NEEDS_KERNEL) && !defined(_KERNEL)
+#if defined(NETSNMP_IFNET_NEEDS_KERNEL) && !defined(_KERNEL)
 #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 d65fad0..26e31fc 100644
--- a/agent/mibgroup/if-mib/data_access/interface.c
+++ b/agent/mibgroup/if-mib/data_access/interface.c
@@ -4,15 +4,25 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
-#include "mibII/mibII_common.h"
-#include "if-mib/ifTable/ifTable_constants.h"
-#include "if-mib/data_access/interface.h"
 
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/library/snmp_enum.h>
 #include <net-snmp/data_access/interface.h>
 
+#include "mibII/mibII_common.h"
+#include "if-mib/ifTable/ifTable.h"
+#include "if-mib/data_access/interface.h"
+
+netsnmp_feature_child_of(interface_all, libnetsnmpmibs)
+netsnmp_feature_child_of(interface, interface_all)
+netsnmp_feature_child_of(interface_access_entry_set_admin_status, interface_all)
+netsnmp_feature_child_of(interface_legacy, interface_all)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_INTERFACE_ACCESS_ENTRY_SET_ADMIN_STATUS
+netsnmp_feature_require(interface_arch_set_admin_status)
+#endif /* NETSNMP_FEATURE_REQUIRE_INTERFACE_ACCESS_ENTRY_SET_ADMIN_STATUS */
 
 /**---------------------------------------------------------------------*/
 /*
@@ -250,8 +260,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);
 }
 
 /**
@@ -337,6 +347,7 @@
     free(entry);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_INTERFACE_LEGACY
 /*
  * Blech - backwards compatible mibII/interfaces style interface
  * functions, so we don't have to update older modules to use
@@ -346,33 +357,33 @@
     ! defined( NETSNMP_NO_BACKWARDS_COMPATABILITY )
 
 static netsnmp_iterator *it = NULL;
-static netsnmp_container *c = NULL;
-static netsnmp_interface_entry *e = NULL;
+static ifTable_rowreq_ctx *row = NULL;
 
 /**
- * 
+ * Setup an iterator for scanning the interfaces using the cached entry
+ * from if-mib/ifTable.
  */
 void
 Interface_Scan_Init(void)
 {
-    /*
-     * ifTable container shouldn't change, so we shouldn' have to
-     * re-fetch it every time.
-     */
-    if (NULL != c)
-        netsnmp_access_interface_container_free(c, 0);
-
-    c = netsnmp_access_interface_container_load(NULL, 0);
+    netsnmp_container *cont = NULL;
+    netsnmp_cache *cache    = NULL; 
     
-    if (NULL != c) {
+    cache = netsnmp_cache_find_by_oid(ifTable_oid, ifTable_oid_size);
+    if (NULL != cache) {
+        netsnmp_cache_check_and_reload(cache);
+        cont = (netsnmp_container*) cache->magic;
+    }
+    
+    if (NULL != cont) {
         if (NULL != it)
             ITERATOR_RELEASE(it);
     
-        it = CONTAINER_ITERATOR(c);
+        it = CONTAINER_ITERATOR(cont);
     }
    
     if (NULL != it)
-        e = ITERATOR_FIRST(it);
+        row = (ifTable_rowreq_ctx*)ITERATOR_FIRST(it);
 }
 
 int
@@ -394,9 +405,12 @@
 Interface_Scan_NextInt(int *index, char *name, netsnmp_interface_entry **entry,
                     void *dc)
 {
-    if (NULL == e)
-        return 0;
+    netsnmp_interface_entry* e = NULL;
 
+    if (NULL == row)
+        return 0;
+    
+    e = row->data.ifentry;
     if(index)
         *index = e->index;
 
@@ -406,13 +420,14 @@
     if (entry)
         *entry = e;
 
-    e = ITERATOR_NEXT(it);
+    row = (ifTable_rowreq_ctx*) ITERATOR_NEXT(it);
 
     return 1;
 }
 #endif /* NETSNMP_NO_BACKWARDS_COMPATABILITY */
+#endif /* NETSNMP_FEATURE_REMOVE_INTERFACE_LEGACY */
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_INTERFACE_ACCESS_ENTRY_SET_ADMIN_STATUS
 /**
  *
  * @retval 0   : success
@@ -441,6 +456,7 @@
     return rc;
 }
 #endif
+#endif /* NETSNMP_FEATURE_REMOVE_INTERFACE_ACCESS_ENTRY_SET_ADMIN_STATUS */
 
 /**---------------------------------------------------------------------*/
 /*
@@ -456,6 +472,7 @@
                   ((const netsnmp_interface_entry *) rhs)->name);
 }
 
+#ifndef NETSNMP_ACCESS_INTERFACE_NOARCH
 /**
  */
 static void
@@ -463,13 +480,14 @@
 {
     netsnmp_access_interface_entry_free(entry);
 }
+#endif
 
 /**
  */
 static void
 _access_interface_entry_save_name(const char *name, oid index)
 {
-    oid tmp;
+    int tmp;
 
     if(NULL == name)
         return;
@@ -477,19 +495,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 %d 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 %d != 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,39 +548,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);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.iucast,
+                                       &need_wrap_check))
+            DEBUGMSGTL(("access:interface",
+                    "Error expanding ifHCInOctets to 64bits\n"));
+
+        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))
+                DEBUGMSGTL(("access:interface",
+                        "Error expanding packet count to 64bits\n"));
+        } else {
+            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.iucast,
                                        &new_vals->stats.iucast,
                                        &prev_vals->old_stats->iucast,
-                                       &need_wrap_check);
-        netsnmp_c64_check32_and_update(&prev_vals->stats.imcast,
+                                       &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
      */
@@ -596,6 +651,23 @@
 }
 
 /**
+ * Calculate stats
+ *
+ * @retval  0 : success
+ * @retval -1 : error
+ */
+int
+netsnmp_access_interface_entry_calculate_stats(netsnmp_interface_entry *entry)
+{
+    DEBUGMSGTL(("access:interface", "calculate_stats\n"));
+    if (entry->ns_flags & NETSNMP_INTERFACE_FLAGS_CALCULATE_UCAST) {
+        u64Subtract(&entry->stats.iall, &entry->stats.imcast,
+                &entry->stats.iucast);
+    }
+    return 0;
+}
+
+/**
  * copy interface entry data (after checking for counter wraps)
  *
  * @retval -2 : malloc failed
@@ -617,6 +689,7 @@
      * update stats
      */
     netsnmp_access_interface_entry_update_stats(lhs, rhs);
+    netsnmp_access_interface_entry_calculate_stats(lhs);
 
     /*
      * update data
@@ -626,8 +699,7 @@
        (0 == strcmp(lhs->descr, rhs->descr)))
         ;
     else {
-        if (NULL != lhs->descr)
-            SNMP_FREE(lhs->descr);
+        SNMP_FREE(lhs->descr);
         if (rhs->descr) {
             lhs->descr = strdup(rhs->descr);
             if(NULL == lhs->descr)
@@ -655,10 +727,9 @@
         if(rhs->paddr_len)
             memcpy(lhs->paddr,rhs->paddr,rhs->paddr_len);
     } else {
-        if (NULL != lhs->paddr)
-            SNMP_FREE(lhs->paddr);
+        SNMP_FREE(lhs->paddr);
         if (rhs->paddr) {
-            lhs->paddr = 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);
@@ -796,7 +867,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 256d047..353b254 100644
--- a/agent/mibgroup/if-mib/data_access/interface.h
+++ b/agent/mibgroup/if-mib/data_access/interface.h
@@ -32,12 +32,13 @@
 
 #   if defined( linux )
 
+    config_require(util_funcs)
     config_require(if-mib/data_access/interface_linux)
     config_require(if-mib/data_access/interface_ioctl)
 
 #   elif defined( openbsd3 ) || \
          defined( freebsd4 ) || defined( freebsd5 ) || defined( freebsd6 ) || \
-         defined (darwin)    || defined( dragonfly )
+         defined( darwin )   || defined( dragonfly ) || defined( netbsd1 )
 
     config_require(if-mib/data_access/interface_sysctl)
 
diff --git a/agent/mibgroup/if-mib/data_access/interface_ioctl.c b/agent/mibgroup/if-mib/data_access/interface_ioctl.c
index 5708c64..db2c245 100644
--- a/agent/mibgroup/if-mib/data_access/interface_ioctl.c
+++ b/agent/mibgroup/if-mib/data_access/interface_ioctl.c
@@ -4,6 +4,7 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include "mibII/mibII_common.h"
 #include "if-mib/ifTable/ifTable_constants.h"
@@ -13,6 +14,8 @@
 #include <net-snmp/data_access/ipaddress.h>
 #include "if-mib/data_access/interface.h"
 
+netsnmp_feature_child_of(interface_ioctl_flags_set, interface_all)
+
 #ifdef HAVE_NET_IF_H
 #include <net/if.h>
 #endif
@@ -107,7 +110,7 @@
         SNMP_FREE(ifentry->paddr);
     }
     if(NULL == ifentry->paddr) 
-        ifentry->paddr = malloc(IFHWADDRLEN);
+        ifentry->paddr = (char*)malloc(IFHWADDRLEN);
 
     if(NULL == ifentry->paddr) {
             rc = -4;
@@ -282,6 +285,7 @@
     return rc;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_INTERFACE_IOCTL_FLAGS_SET
 /**
  * interface entry flags ioctl wrapper
  *
@@ -349,6 +353,7 @@
 
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INTERFACE_IOCTL_FLAGS_SET */
 #endif /* SIOCGIFFLAGS */
 
 #ifdef SIOCGIFMTU
@@ -479,8 +484,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 94bd983..f196fc8 100644
--- a/agent/mibgroup/if-mib/data_access/interface_linux.c
+++ b/agent/mibgroup/if-mib/data_access/interface_linux.c
@@ -4,14 +4,56 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
+netsnmp_feature_require(fd_event_manager)
+netsnmp_feature_require(delete_prefix_info)
+netsnmp_feature_require(create_prefix_info)
+netsnmp_feature_child_of(interface_arch_set_admin_status, interface_all)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_INTERFACE_ARCH_SET_ADMIN_STATUS
+netsnmp_feature_require(interface_ioctl_flags_set)
+#endif /* NETSNMP_FEATURE_REQUIRE_INTERFACE_ARCH_SET_ADMIN_STATUS */
+
+#ifdef HAVE_PCI_LOOKUP_NAME
+#include <pci/pci.h>
+#include <setjmp.h>
+static struct pci_access *pci_access;
+
+/* Avoid letting libpci call exit(1) when no PCI bus is available. */
+static int do_longjmp =0;
+static jmp_buf err_buf;
+static void
+netsnmp_pci_error(char *msg, ...)
+{
+    va_list args;
+    char *buf;
+    int buflen;
+
+    va_start(args, msg);
+    buflen = strlen("pcilib: ")+strlen(msg)+2;
+    buf = malloc(buflen);
+    snprintf(buf, buflen, "pcilib: %s\n", msg);
+    snmp_vlog(LOG_ERR, buf, args);
+    free(buf);
+    va_end(args);
+    if (do_longjmp)
+	longjmp(err_buf, 1);
+    else
+	exit(1);
+}
+#endif
+
 #ifdef HAVE_LINUX_ETHTOOL_H
 #include <linux/types.h>
+#ifndef HAVE_PCI_LOOKUP_NAME
 typedef __u64 u64;         /* hack, so we may include kernel's ethtool.h */
 typedef __u32 u32;         /* ditto */
 typedef __u16 u16;         /* ditto */
 typedef __u8 u8;           /* ditto */
+#endif
+
 #include <linux/ethtool.h>
 #endif /* HAVE_LINUX_ETHTOOL_H */
 
@@ -29,18 +71,37 @@
 #include <net-snmp/data_access/interface.h>
 #include <net-snmp/data_access/ipaddress.h>
 #include "if-mib/data_access/interface.h"
+#include "mibgroup/util_funcs.h"
 #include "interface_ioctl.h"
 
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
+#include <errno.h>
 
 #include <linux/sockios.h>
+#include <linux/if_ether.h>
 
 #ifndef IF_NAMESIZE
 #define IF_NAMESIZE 16
 #endif
 
+#ifndef SIOCGMIIPHY
+#define SIOCGMIIPHY 0x8947
+#endif
+
+#ifndef SIOCGMIIREG
+#define SIOCGMIIREG 0x8948
+#endif
+
+#ifdef NETSNMP_ENABLE_IPV6
+#if defined(HAVE_LINUX_RTNETLINK_H)
+#include <linux/rtnetlink.h>
+#ifdef RTMGRP_IPV6_PREFIX
+#define SUPPORT_PREFIX_FLAGS 1
+#endif  /* RTMGRP_IPV6_PREFIX */
+#endif  /* HAVE_LINUX_RTNETLINK_H */
+#endif  /* NETSNMP_ENABLE_IPV6 */
 unsigned long long
 netsnmp_linux_interface_get_if_speed(int fd, const char *name,
         unsigned long long defaultspeed);
@@ -60,6 +121,16 @@
 #define PROC_SYS_NET_IPVx_BASE_REACHABLE_TIME "/proc/sys/net/ipv%d/neigh/%s/base_reachable_time"
 static const char *proc_sys_basereachable_time;
 static unsigned short basereachable_time_ms = 0;
+#ifdef SUPPORT_PREFIX_FLAGS
+prefix_cbx *prefix_head_list = NULL;
+netsnmp_prefix_listen_info list_info;
+#define IF_PREFIX_ONLINK        0x01
+#define IF_PREFIX_AUTOCONF      0x02
+ 
+int netsnmp_prefix_listen(void);
+#endif
+
+
 void
 netsnmp_arch_interface_init(void)
 {
@@ -92,6 +163,31 @@
     else {
         proc_sys_basereachable_time = PROC_SYS_NET_IPVx_BASE_REACHABLE_TIME;
     }
+
+#ifdef SUPPORT_PREFIX_FLAGS
+    list_info.list_head = &prefix_head_list;
+    netsnmp_prefix_listen();
+#endif
+
+#ifdef HAVE_PCI_LOOKUP_NAME
+    pci_access = pci_alloc();
+    if (!pci_access) {
+	snmp_log(LOG_ERR, "pcilib: pci_alloc failed\n");
+	return;
+    }
+
+    pci_access->error = netsnmp_pci_error;
+
+    do_longjmp = 1;
+    if (setjmp(err_buf)) {
+        pci_cleanup(pci_access);
+	snmp_log(LOG_ERR, "pcilib: pci_init failed\n");
+        pci_access = NULL;
+    }
+    else if (pci_access)
+	pci_init(pci_access);
+    do_longjmp = 0;
+#endif
 }
 
 /*
@@ -128,14 +224,6 @@
 
     *flags &= ~NETSNMP_INTERFACE_FLAGS_HAS_IPV6;
 
-#ifndef SIOCGMIIPHY
-#define SIOCGMIIPHY 0x8947
-#endif
-
-#ifndef SIOCGMIIREG
-#define SIOCGMIIREG 0x8948
-#endif
-
 #ifdef NETSNMP_ENABLE_IPV6
     /*
      * get ipv6 addresses
@@ -229,6 +317,69 @@
     }
 }
 
+#ifdef HAVE_PCI_LOOKUP_NAME
+
+/* Get value from sysfs file */
+static int sysfs_get_id(const char *path, unsigned short *id)
+{
+    FILE *fin;
+    int n;
+
+    if (!(fin = fopen(path, "r"))) {
+        DEBUGMSGTL(("access:interface",
+                    "Failed to open %s\n", path));
+	return 0;
+    }
+
+    n = fscanf(fin, "%hx", id);
+    fclose(fin);
+
+    return n == 1;
+}
+
+/* Get interface description for PCI device
+ * by using sysfs to find vendor and device
+ * then lookup name (-lpci)
+ *
+ * For software interfaces there is no PCI information
+ * so description will not be set.
+ */
+static void
+_arch_interface_description_get(netsnmp_interface_entry *entry)
+{
+    const char *descr;
+    char buf[256];
+    unsigned short vendor_id, device_id;
+
+    if (!pci_access)
+	return;
+
+    snprintf(buf, sizeof(buf),
+	     "/sys/class/net/%s/device/vendor", entry->name);
+
+    if (!sysfs_get_id(buf, &vendor_id))
+	return;
+
+    snprintf(buf, sizeof(buf),
+	     "/sys/class/net/%s/device/device", entry->name);
+
+    if (!sysfs_get_id(buf, &device_id))
+	return;
+
+    descr = pci_lookup_name(pci_access, buf, sizeof(buf),
+			    PCI_LOOKUP_VENDOR | PCI_LOOKUP_DEVICE,
+			    vendor_id, device_id, 0, 0);
+    if (descr) {
+	free(entry->descr);
+	entry->descr = strdup(descr);
+    } else {
+        DEBUGMSGTL(("access:interface",
+                    "Failed pci_lookup_name vendor=%#hx device=%#hx\n",
+		    vendor_id, device_id));
+    }
+}
+#endif
+
 
 #ifdef NETSNMP_ENABLE_IPV6
 /**
@@ -402,16 +553,15 @@
      * subtract out multicast packets from rec_pkt before
      * we store it as unicast counter.
      */
-    rec_pkt -= rec_mcast;
-
+    entry->ns_flags |= NETSNMP_INTERFACE_FLAGS_CALCULATE_UCAST;
     entry->stats.ibytes.low = rec_oct & 0xffffffff;
-    entry->stats.iucast.low = rec_pkt & 0xffffffff;
+    entry->stats.iall.low = rec_pkt & 0xffffffff;
     entry->stats.imcast.low = rec_mcast & 0xffffffff;
     entry->stats.obytes.low = snd_oct & 0xffffffff;
     entry->stats.oucast.low = snd_pkt & 0xffffffff;
 #ifdef SCNuMAX   /* XXX - should be flag for 64-bit variables */
     entry->stats.ibytes.high = rec_oct >> 32;
-    entry->stats.iucast.high = rec_pkt >> 32;
+    entry->stats.iall.high = rec_pkt >> 32;
     entry->stats.imcast.high = rec_mcast >> 32;
     entry->stats.obytes.high = snd_oct >> 32;
     entry->stats.oucast.high = snd_pkt >> 32;
@@ -455,7 +605,7 @@
     netsnmp_container *addr_container;
 #endif
 
-    DEBUGMSGTL(("access:interface:container:arch", "load (flags %p)\n",
+    DEBUGMSGTL(("access:interface:container:arch", "load (flags %x)\n",
                 load_flags));
 
     if (NULL == container) {
@@ -466,7 +616,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;
     }
 
@@ -587,9 +737,9 @@
         }
         entry->ns_flags = flags; /* initial flags; we'll set more later */
 
-        /*
-         * xxx-rks: get descr by linking mem from /proc/pci and /proc/iomem
-         */
+#ifdef HAVE_PCI_LOOKUP_NAME
+	_arch_interface_description_get(entry);
+#endif
 
 
         /*
@@ -622,7 +772,7 @@
                 {IANAIFTYPE_BASICISDN, "ippp"},
                 {IANAIFTYPE_PROPVIRTUAL, "bond"}, /* Bonding driver find fastest slave */
                 {IANAIFTYPE_PROPVIRTUAL, "vad"},  /* ANS driver - ?speed? */
-                {0, 0}                  /* end of list */
+                {0, NULL}                  /* end of list */
             };
 
             int             len;
@@ -639,6 +789,36 @@
                 entry->type = IANAIFTYPE_OTHER;
         }
 
+        /*
+         * interface identifier is specified based on physaddr and type
+         */
+        switch (entry->type) {
+        case IANAIFTYPE_ETHERNETCSMACD:
+        case IANAIFTYPE_ETHERNET3MBIT:
+        case IANAIFTYPE_FASTETHER:
+        case IANAIFTYPE_FASTETHERFX:
+        case IANAIFTYPE_GIGABITETHERNET:
+        case IANAIFTYPE_FDDI:
+        case IANAIFTYPE_ISO88025TOKENRING:
+            if (NULL != entry->paddr && ETH_ALEN != entry->paddr_len)
+                break;
+
+            entry->v6_if_id_len = entry->paddr_len + 2;
+            memcpy(entry->v6_if_id, entry->paddr, 3);
+            memcpy(entry->v6_if_id + 5, entry->paddr + 3, 3);
+            entry->v6_if_id[0] ^= 2;
+            entry->v6_if_id[3] = 0xFF;
+            entry->v6_if_id[4] = 0xFE;
+
+            entry->ns_flags |= NETSNMP_INTERFACE_FLAGS_HAS_V6_IFID;
+            break;
+
+        case IANAIFTYPE_SOFTWARELOOPBACK:
+            entry->v6_if_id_len = 0;
+            entry->ns_flags |= NETSNMP_INTERFACE_FLAGS_HAS_V6_IFID;
+            break;
+        }
+
         if (IANAIFTYPE_ETHERNETCSMACD == entry->type) {
             unsigned long long speed;
             unsigned long long defaultspeed = NOMINAL_LINK_SPEED;
@@ -723,6 +903,7 @@
     return 0;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_INTERFACE_ARCH_SET_ADMIN_STATUS
 int
 netsnmp_arch_set_admin_status(netsnmp_interface_entry * entry,
                               int ifAdminStatus_val)
@@ -739,6 +920,7 @@
     return netsnmp_access_interface_ioctl_flags_set(-1, entry,
                                                     IFF_UP, and_complement);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INTERFACE_ARCH_SET_ADMIN_STATUS */
 
 #ifdef HAVE_LINUX_ETHTOOL_H
 /**
@@ -878,3 +1060,190 @@
     }
     return retspeed;
 }
+#ifdef SUPPORT_PREFIX_FLAGS
+void netsnmp_prefix_process(int fd, void *data);
+
+/* Open netlink socket to watch new ipv6 addresses and prefixes. */
+int netsnmp_prefix_listen()
+{
+    struct {
+                struct nlmsghdr n;
+                struct ifinfomsg r;
+                char   buf[1024];
+    } req;
+
+    struct rtattr      *rta;
+    int                status;
+    struct sockaddr_nl localaddrinfo;
+    unsigned           groups = 0;
+
+    int fd = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);
+    if (fd < 0) {
+        snmp_log(LOG_ERR, "netsnmp_prefix_listen: Cannot create socket.\n");
+        return -1;
+    }
+
+    memset(&localaddrinfo, 0, sizeof(struct sockaddr_nl));
+
+    groups |= RTMGRP_IPV6_IFADDR;
+    groups |= RTMGRP_IPV6_PREFIX;
+    localaddrinfo.nl_family = AF_NETLINK;
+    localaddrinfo.nl_groups = groups;
+
+    if (bind(fd, (struct sockaddr*)&localaddrinfo, sizeof(localaddrinfo)) < 0) {
+        snmp_log(LOG_ERR,"netsnmp_prefix_listen: Bind failed.\n");
+        close(fd);
+        return -1;
+    }
+
+    memset(&req, 0, sizeof(req));
+    req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct rtgenmsg));
+    req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_ROOT;
+    req.n.nlmsg_type = RTM_GETLINK;
+    req.r.ifi_family = AF_INET6;
+    rta = (struct rtattr *)(((char *)&req) + NLMSG_ALIGN(req.n.nlmsg_len));
+    rta->rta_len = RTA_LENGTH(16);
+
+    status = send(fd, &req, req.n.nlmsg_len, 0);
+    if (status < 0) {
+        snmp_log(LOG_ERR,"netsnmp_prefix_listen: send failed\n");
+        close(fd);
+        return -1;
+    }
+
+    if (register_readfd(fd, netsnmp_prefix_process, NULL) != 0) {
+        snmp_log(LOG_ERR,"netsnmp_prefix_listen: error registering netlink socket\n");
+        close(fd);
+        return -1;
+    }
+    return 0;
+}
+
+/* Process one incoming netlink packets.
+ * RTM_NEWADDR and RTM_NEWPREFIX usually arrive in separate packets
+ * -> information from these packets must be stored locally and
+ * new prefix is added when information from both packets is complete.
+ */
+void netsnmp_prefix_process(int fd, void *data)
+{
+    int                status;
+    char               buf[16384];
+    struct nlmsghdr    *nlmp;
+    struct rtattr      *rtatp;
+    struct ifaddrmsg   *ifa;
+    struct prefixmsg   *prefix;
+    struct in6_addr    *in6p;
+
+    /* these values must persist between calls */
+    static char               in6pAddr[40];
+    static int                have_addr = 0,have_prefix = 0;
+    static int                onlink = 2,autonomous = 2; /*Assume as false*/
+
+    int                iret;
+    prefix_cbx         *new;
+    int                len, req_len, length; 
+
+    status = recv(fd, buf, sizeof(buf), 0);
+    if (status < 0) {
+        if (errno == EINTR)
+            return;
+        snmp_log(LOG_ERR,"netsnmp_prefix_listen: Receive failed.\n");
+        return;
+    }
+
+    if(status == 0){
+        DEBUGMSGTL(("access:interface:prefix", "End of File\n"));
+        return;
+    }
+
+    for(nlmp = (struct nlmsghdr *)buf; status > sizeof(*nlmp);){
+        len = nlmp->nlmsg_len;
+        req_len = len - sizeof(*nlmp);
+
+        if (req_len < 0 || len > status) {
+            snmp_log(LOG_ERR,"netsnmp_prefix_listen: Error in length.\n");
+            return;
+        }
+
+        if (!NLMSG_OK(nlmp, status)) {
+            DEBUGMSGTL(("access:interface:prefix", "NLMSG not OK\n"));
+            continue;
+        }
+
+        if (nlmp->nlmsg_type == RTM_NEWADDR || nlmp->nlmsg_type == RTM_DELADDR) {
+            ifa = NLMSG_DATA(nlmp);
+            length = nlmp->nlmsg_len;
+            length -= NLMSG_LENGTH(sizeof(*ifa));
+
+            if (length < 0) {
+                DEBUGMSGTL(("access:interface:prefix", "wrong nlmsg length %d\n", length));
+                continue;
+            }
+
+            if(!ifa->ifa_flags) {
+                rtatp = IFA_RTA(ifa);
+                while (RTA_OK(rtatp, length)) {
+                    if (rtatp->rta_type == IFA_ADDRESS){
+                        in6p = (struct in6_addr *) RTA_DATA(rtatp);
+                        if(nlmp->nlmsg_type == RTM_DELADDR) {
+                            snprintf(in6pAddr, sizeof(in6pAddr), "%04x%04x%04x%04x%04x%04x%04x%04x", NIP6(*in6p));
+                            have_addr = -1;
+                            break;
+                        } else {
+                            snprintf(in6pAddr, sizeof(in6pAddr), "%04x%04x%04x%04x%04x%04x%04x%04x", NIP6(*in6p));
+                            have_addr = 1;
+                            break;
+                        }
+                    }
+                    rtatp = RTA_NEXT(rtatp,length);
+                }
+            }
+        }
+
+        if(nlmp->nlmsg_type == RTM_NEWPREFIX) {
+            prefix = NLMSG_DATA(nlmp);
+            length = nlmp->nlmsg_len;
+            length -= NLMSG_LENGTH(sizeof(*prefix));
+
+            if (length < 0) {
+                DEBUGMSGTL(("access:interface:prefix", "wrong nlmsg length %d\n", length));
+                continue;
+            }
+            have_prefix = 1;
+            if (prefix->prefix_flags & IF_PREFIX_ONLINK) {
+                onlink = 1; 
+            }
+            if (prefix->prefix_flags & IF_PREFIX_AUTOCONF) {
+                autonomous = 1;
+            }
+        }
+        status -= NLMSG_ALIGN(len);
+        nlmp = (struct nlmsghdr*)((char*)nlmp + NLMSG_ALIGN(len));
+    }
+
+    if((have_addr == 1) && (have_prefix == 1)){
+        if(!(new = net_snmp_create_prefix_info (onlink, autonomous, in6pAddr)))
+            DEBUGMSGTL(("access:interface:prefix", "Unable to create prefix info\n"));
+        else {
+
+            iret = net_snmp_search_update_prefix_info (list_info.list_head, new, 0);
+            if(iret < 0) {
+                DEBUGMSGTL(("access:interface:prefix", "Unable to add/update prefix info\n"));
+                free(new);
+            }
+            if(iret == 2) /*Only when enrty already exists and we are only updating*/
+                free(new);
+        }
+        have_addr = have_prefix = 0;
+        onlink = autonomous = 2; /*Set to defaults again*/
+    } else if (have_addr == -1) {
+        iret = net_snmp_delete_prefix_info (list_info.list_head, in6pAddr);
+        if(iret < 0)
+            DEBUGMSGTL(("access:interface:prefix", "Unable to delete the prefix info\n"));
+            if(!iret)
+                DEBUGMSGTL(("access:interface:prefix", "Unable to find the node to delete\n"));
+            have_addr = 0;
+    }
+}
+#endif
+
diff --git a/agent/mibgroup/if-mib/data_access/interface_openbsd.c b/agent/mibgroup/if-mib/data_access/interface_openbsd.c
new file mode 100644
index 0000000..8340dc6
--- /dev/null
+++ b/agent/mibgroup/if-mib/data_access/interface_openbsd.c
@@ -0,0 +1,407 @@
+/*
+ *  Interface MIB architecture support
+ *
+ * $Id$
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include "mibII/mibII_common.h"
+#include "if-mib/ifTable/ifTable_constants.h"
+
+netsnmp_feature_child_of(interface_arch_set_admin_status, interface_all)
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#if HAVE_SYS_IOCTL_H
+#include <sys/ioctl.h>
+#else
+#error "linux should have sys/ioctl header"
+#endif
+
+#include <net-snmp/data_access/interface.h>
+#include <net-snmp/data_access/ipaddress.h>
+#include "if-mib/data_access/interface.h"
+
+#include <sys/types.h>
+#include <sys/time.h>
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <net/if_types.h>
+#include <net/if_media.h>
+
+#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);
+
+void
+netsnmp_arch_interface_init(void)
+{
+    /*
+     * nothing to do
+     */
+}
+
+/*
+ * find the ifIndex for an interface name
+ *
+ * @retval 0 : no index found
+ * @retval >0: ifIndex for interface
+ */
+oid
+netsnmp_arch_interface_index_find(const char *name)
+{
+    return if_nametoindex(name);
+}
+
+/* sa_len roundup macro. */
+#define ROUNDUP(a) \
+  ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
+
+/*
+ *
+ * @retval  0 success
+ * @retval -1 no container specified
+ * @retval -2 could not get interface info
+ * @retval -3 could not create entry (probably malloc)
+ */
+int
+netsnmp_arch_interface_container_load(netsnmp_container* container,
+                                      u_int load_flags)
+{
+    netsnmp_interface_entry *entry = NULL;
+    u_char *if_list = NULL, *cp;
+    size_t if_list_size = 0;
+    struct if_msghdr *ifp;
+    int sysctl_oid[] = { CTL_NET, PF_ROUTE, 0, 0, NET_RT_IFLIST, 0 };
+    struct ifa_msghdr *ifa;
+    struct sockaddr *a;
+    struct sockaddr_dl *adl;
+    int amask;
+    char *if_name;
+    int flags;
+
+    DEBUGMSGTL(("access:interface:container:arch",
+                "load (flags %p)\n", load_flags));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "no container specified/found for interface\n");
+        return -1;
+    }
+
+    if (sysctl(sysctl_oid, sizeof(sysctl_oid) / sizeof(int), 0, &if_list_size, 0, 0) == -1) {
+        snmp_log(LOG_ERR, "could not get interface info (size)\n");
+        return -2;
+    }
+
+    if_list = (u_char*)malloc(if_list_size);
+    if (if_list == NULL) {
+        snmp_log(LOG_ERR, "could not allocate memory for interface info (%u bytes)\n", if_list_size);
+        return -3;
+    } else {
+        DEBUGMSGTL(("access:interface:container:arch",
+                    "allocated %u bytes for if_list\n", if_list_size));
+    }
+
+    if (sysctl(sysctl_oid, sizeof(sysctl_oid) / sizeof(int), if_list, &if_list_size, 0, 0) == -1) {
+        snmp_log(LOG_ERR, "could not get interface info\n");
+        free(if_list);
+        return -2;
+    }
+
+    /* 1st pass: create interface entries */
+    for (cp = if_list; cp < if_list + if_list_size; cp += ifp->ifm_msglen) {
+
+        ifp = (struct if_msghdr *) cp;
+        if_name = NULL;
+        flags = 0;
+        adl = NULL;
+
+        if (ifp->ifm_type != RTM_IFINFO)
+            continue;
+
+        if (ifp->ifm_addrs & RTA_IFP) {
+            a = (struct sockaddr *) (ifp + 1);
+            /* if_msghdr is followed by one or more sockaddrs, of which we need only RTA_IFP */
+            /* most of the time RTA_IFP is the first address we get, hence the shortcut */
+            if ((ifp->ifm_addrs & (~RTA_IFP - 1)) != 0) {
+                /* skip all addresses up to RTA_IFP. */
+                for (amask = (RTA_IFP >> 1); amask != 0; amask >>= 1) {
+                    if (ifp->ifm_addrs & amask) { a = (struct sockaddr *) ( ((char *) a) + ROUNDUP(a->sa_len) ); }
+                }
+            }
+            adl = (struct sockaddr_dl *) a;
+            if_name = (char *) adl->sdl_data;
+            if_name[adl->sdl_nlen] = '\0';
+        }
+        if (!(ifp->ifm_addrs & RTA_IFP) || if_name == NULL) {
+            snmp_log(LOG_ERR, "ifm_index %u: no interface name in message, skipping\n", ifp->ifm_index);
+            continue;
+        }
+
+        entry = netsnmp_access_interface_entry_create(if_name, ifp->ifm_index);
+        if(NULL == entry) {
+            netsnmp_access_interface_container_free(container,
+                                                    NETSNMP_ACCESS_INTERFACE_FREE_NOFLAGS);
+            free(if_list);
+            return -3;
+        }
+
+        /* get physical address */
+        if (adl != NULL && adl->sdl_alen > 0) {
+            entry->paddr_len = adl->sdl_alen;
+            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",
+                        if_name, entry->paddr_len,
+                        entry->paddr[0], entry->paddr[1], entry->paddr[2],
+                        entry->paddr[3], entry->paddr[4], entry->paddr[5]));
+        } else {
+            entry->paddr = (char*)malloc(6);
+            entry->paddr_len = 6;
+            memset(entry->paddr, 0, 6);
+        }
+
+        entry->mtu = ifp->ifm_data.ifi_mtu;
+        entry->type = ifp->ifm_data.ifi_type;
+
+
+        entry->ns_flags |= NETSNMP_INTERFACE_FLAGS_HAS_IF_FLAGS;
+        entry->os_flags = ifp->ifm_flags;
+                
+        if (ifp->ifm_flags & IFF_UP) {
+            entry->admin_status = IFADMINSTATUS_UP;
+#if defined( LINK_STATE_UP ) && defined( LINK_STATE_DOWN )
+            if (ifp->ifm_data.ifi_link_state == LINK_STATE_UP) {
+                entry->oper_status = IFOPERSTATUS_UP;
+            } else if (ifp->ifm_data.ifi_link_state == LINK_STATE_DOWN) {
+                entry->oper_status = IFOPERSTATUS_DOWN;
+            } else {
+                entry->oper_status = IFOPERSTATUS_UNKNOWN;
+            }
+#else
+            entry->oper_status = IFOPERSTATUS_UP;
+#endif
+        } else {
+            entry->admin_status = IFADMINSTATUS_DOWN;
+            /* IF-MIB specifically says that ifOperStatus should be down in this case */ 
+            entry->oper_status = IFOPERSTATUS_DOWN;
+        }
+
+        entry->ns_flags |= NETSNMP_INTERFACE_FLAGS_HAS_V4_REASMMAX;
+        entry->reasm_max = IP_MAXPACKET;
+
+        /* get counters */
+        entry->stats.ibytes.low = ifp->ifm_data.ifi_ibytes; entry->stats.ibytes.high = 0;
+        entry->stats.iucast.low = ifp->ifm_data.ifi_ipackets; entry->stats.iucast.high = 0;
+        entry->stats.imcast.low = ifp->ifm_data.ifi_imcasts; entry->stats.imcast.high = 0;
+        entry->stats.ierrors = ifp->ifm_data.ifi_ierrors;
+        entry->stats.idiscards = ifp->ifm_data.ifi_iqdrops;
+        entry->stats.iunknown_protos = ifp->ifm_data.ifi_noproto;
+
+        entry->stats.obytes.low = ifp->ifm_data.ifi_obytes; entry->stats.obytes.high = 0;
+        entry->stats.oucast.low = ifp->ifm_data.ifi_opackets; entry->stats.oucast.high = 0;
+        entry->stats.omcast.low = ifp->ifm_data.ifi_omcasts; entry->stats.omcast.high = 0;
+        entry->stats.oerrors = ifp->ifm_data.ifi_oerrors;
+        entry->ns_flags |=  NETSNMP_INTERFACE_FLAGS_HAS_BYTES |
+                            NETSNMP_INTERFACE_FLAGS_HAS_DROPS |
+                            NETSNMP_INTERFACE_FLAGS_HAS_MCAST_PKTS;
+
+        if (timercmp(&ifp->ifm_data.ifi_lastchange, &starttime, >)) {
+            entry->lastchange = (ifp->ifm_data.ifi_lastchange.tv_sec - starttime.tv_sec) * 100;
+            entry->ns_flags |= NETSNMP_INTERFACE_FLAGS_HAS_LASTCHANGE;
+        } else {
+            entry->lastchange = 0;
+        }
+
+        if (ifp->ifm_flags & IFF_PROMISC) entry->promiscuous = 1;
+
+        /* try to guess the speed from media type */
+        netsnmp_openbsd_interface_get_if_speed(entry->name, &entry->speed, &entry->speed_high);
+        if (entry->speed_high != 0) {
+            entry->ns_flags |= NETSNMP_INTERFACE_FLAGS_HAS_HIGH_SPEED;
+        } else {
+            /* or resort to ifi_baudrate */
+            entry->speed = ifp->ifm_data.ifi_baudrate;
+        }
+        
+        netsnmp_access_interface_entry_overrides(entry);
+
+        CONTAINER_INSERT(container, entry);
+        DEBUGMSGTL(("access:interface:container:arch",
+                    "created entry %u for %s\n", entry->index, entry->name));
+    } /* for (each interface entry) */
+
+    /* pass 2: walk addresses */
+    for (cp = if_list; cp < if_list + if_list_size; cp += ifa->ifam_msglen) {
+
+        ifa = (struct ifa_msghdr *) cp;
+
+        if (ifa->ifam_type != RTM_NEWADDR)
+            continue;
+
+        DEBUGMSGTL(("access:interface:container:arch",
+                    "received 0x%x in RTM_NEWADDR for ifindex %u\n",
+                    ifa->ifam_addrs, ifa->ifam_index));
+
+        entry = netsnmp_access_interface_entry_get_by_index(container, ifa->ifam_index);
+        if (entry == NULL) {
+            snmp_log(LOG_ERR, "address for a nonexistent interface? index=%d", ifa->ifam_index);
+            continue;
+        }
+
+        /* walk the list of addresses received.
+           we do not use actual addresses, the sole purpose of this is to set flags */
+        a = (struct sockaddr *) (ifa + 1);
+        for (amask = ifa->ifam_addrs; amask != 0; amask >>= 1) {
+            if ((amask & 1) != 0) {
+                DEBUGMSGTL(("access:interface:container:arch",
+                            "%s: a=%p, sa_len=%d, sa_family=0x%x\n",
+                            entry->name, a, a->sa_len, a->sa_family));
+
+                if (a->sa_family == AF_INET)
+                    entry->ns_flags |= NETSNMP_INTERFACE_FLAGS_HAS_IPV4;
+                else if (a->sa_family == AF_INET6)
+                    entry->ns_flags |= NETSNMP_INTERFACE_FLAGS_HAS_IPV6;
+
+                a = (struct sockaddr *) ( ((char *) a) + ROUNDUP(a->sa_len) );
+            }
+        }
+        DEBUGMSGTL(("access:interface:container:arch",
+                    "%s: flags=0x%x\n", entry->name, entry->ns_flags));
+    }
+
+    if (if_list != NULL)
+        free(if_list);
+
+    return 0;
+}
+
+/*
+ * subroutine to translate known media typed to speed.
+ * see /usr/include/net/if_media.h for definitions
+ */
+
+void
+_openbsd_interface_ifmedia_to_speed(int media, u_int *speed, u_int *speed_high)
+{
+    *speed = 0; *speed_high = 0;
+
+    switch (IFM_TYPE(media)) {
+        case IFM_ETHER:
+            switch (IFM_SUBTYPE(media)) {
+                case IFM_10_T:
+                case IFM_10_2:
+                case IFM_10_5:
+                case IFM_10_STP:
+                case IFM_10_FL:
+                    *speed = 10000000; *speed_high = 10; break;
+                case IFM_100_TX:
+                case IFM_100_FX:
+                case IFM_100_T4:
+                case IFM_100_VG:
+                case IFM_100_T2:
+                    *speed = 100000000; *speed_high = 100; break;
+                case IFM_1000_LX:
+		case IFM_1000_SX:
+                case IFM_1000_CX:
+#ifdef IFM_1000_T
+                case IFM_1000_T:
+#endif
+                    *speed = 1000000000; *speed_high = 1000; break;
+#ifdef IFM_10GBASE_SR
+                case IFM_10GBASE_SR:
+                case IFM_10GBASE_LR:
+                    *speed = (u_int) -1; /* 4294967295; */ *speed_high = 10000; break;
+#endif
+            }
+            break;
+    }
+    return;
+}
+
+/*
+ * @retval  0 speed could not be determined (error, unknown media)
+ * @retval >0 speed, equal to *speed.
+ *            sets *speed=2^31 and returns *speed_high=speed/10^6 as required by ifSpeed/ifHighSpeed.
+ */
+
+int
+netsnmp_openbsd_interface_get_if_speed(char *name, u_int *speed, u_int *speed_high)
+{
+    int s;
+    struct ifmediareq ifmr;
+    int *media_list, i;
+    u_int t_speed, t_speed_high; 
+    u_int m_speed, m_speed_high;
+
+    *speed = 0; *speed_high = 0;
+
+    if ((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
+        return 0;
+    }
+
+    memset(&ifmr, 0, sizeof(ifmr));
+    strlcpy(ifmr.ifm_name, name, sizeof(ifmr.ifm_name));
+
+    if (ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0 || ifmr.ifm_count == 0) {
+        close(s);
+        return 0;
+    }
+
+    /*
+     * try to get speed from current media.
+     * if unsuccessful (e.g., interface is down), get a list of capabilities,
+     * try each and return maximum speed the interface is capable of.
+     */
+
+    _openbsd_interface_ifmedia_to_speed(ifmr.ifm_current, speed, speed_high);
+
+    if (*speed == 0 &&
+        (media_list = (int *) malloc(ifmr.ifm_count * sizeof(int))) != NULL ) {
+
+        ifmr.ifm_ulist = media_list;
+
+        if (ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) == 0) {
+            m_speed = 0; m_speed_high = 0;
+            for (i = 0; i < ifmr.ifm_count; i++) {
+
+                _openbsd_interface_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)) {
+                    m_speed_high = t_speed_high; m_speed = t_speed;
+                }
+            }
+            *speed = m_speed; *speed_high = m_speed_high;
+        }
+        free(media_list);
+    }
+
+    close(s);
+
+    DEBUGMSGTL(("access:interface:container:arch",
+                "%s: speed: %u, speed_high: %u\n",
+                name, *speed, *speed_high));
+
+    return *speed;
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_INTERFACE_ARCH_SET_ADMIN_STATUS
+int
+netsnmp_arch_set_admin_status(netsnmp_interface_entry * entry,
+                              int ifAdminStatus_val)
+{
+    DEBUGMSGTL(("access:interface:arch", "set_admin_status\n"));
+
+    /* TODO: implement this call */
+
+    /* not implemented */
+    snmp_log(LOG_ERR, "netsnmp_arch_set_admin_status is not (yet) implemented for FreeBSD.\n");
+
+    return -4;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_INTERFACE_ARCH_SET_ADMIN_STATUS */
+
diff --git a/agent/mibgroup/if-mib/data_access/interface_solaris2.c b/agent/mibgroup/if-mib/data_access/interface_solaris2.c
index 66fb22f..8aa47f8 100644
--- a/agent/mibgroup/if-mib/data_access/interface_solaris2.c
+++ b/agent/mibgroup/if-mib/data_access/interface_solaris2.c
@@ -2,10 +2,11 @@
  *  Interface MIB architecture support for Solaris
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
-#include "mibII/mibII_common.h"
 #include "if-mib/ifTable/ifTable_constants.h"
 #include "kernel_sunos5.h"
+#include "mibII/mibII_common.h"
 
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -16,6 +17,8 @@
 #include <strings.h>
 #include <string.h>
 
+netsnmp_feature_child_of(interface_arch_set_admin_status, interface_all)
+
 static int _set_ip_flags_v4(netsnmp_interface_entry *, mib2_ifEntry_t *);
 static int _match_ifname_v4addr(void *ifname, void *ipaddr);
 static int _get_v4addr(mib2_ifEntry_t *ife, mib2_ipAddrEntry_t *e);
@@ -63,7 +66,7 @@
     req_e                   req = GET_FIRST;
     int                     error = 0;
 
-    DEBUGMSGTL(("access:interface:container:arch", "load (flags %p)\n",
+    DEBUGMSGTL(("access:interface:container:arch", "load (flags %u)\n",
                 l_flags));
 
     if (container == NULL) {
@@ -104,7 +107,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;
@@ -306,7 +309,7 @@
     if ((rc = getMibstat(MIB_IP_ADDR, ipv4e, sizeof(*ipv4e), GET_EXACT, 
         &_match_ifname_v4addr, &ife->ifDescr.o_bytes)) == 0)
         return (1);
-    bzero((void *)ipv4e, sizeof(*ipv4e));
+    memset(ipv4e, '\0', sizeof(*ipv4e));
     return (0);
 }
 
@@ -340,11 +343,12 @@
         &_match_ifname_v6addr, &ife->ifDescr.o_bytes)) == 0) {
         return (1);
     } 
-    bzero((void *)ipv6e, sizeof(*ipv6e));
+    memset(ipv6e, '\0', sizeof(*ipv6e));
     return (0);
 }
 #endif /* SOLARIS_HAVE_IPV6_MIB_SUPPORT */
 
+#ifndef NETSNMP_FEATURE_REMOVE_INTERFACE_ARCH_SET_ADMIN_STATUS
 int
 netsnmp_arch_set_admin_status(netsnmp_interface_entry * entry,
                               int ifAdminStatus_val)
@@ -356,3 +360,4 @@
      */
     return (-1);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INTERFACE_ARCH_SET_ADMIN_STATUS */
diff --git a/agent/mibgroup/if-mib/data_access/interface_sysctl.c b/agent/mibgroup/if-mib/data_access/interface_sysctl.c
index 06cfefe..6076d19 100644
--- a/agent/mibgroup/if-mib/data_access/interface_sysctl.c
+++ b/agent/mibgroup/if-mib/data_access/interface_sysctl.c
@@ -6,6 +6,7 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include "mibII/mibII_common.h"
 #include "if-mib/ifTable/ifTable_constants.h"
@@ -29,6 +30,8 @@
 #include <net/if_types.h>
 #include <net/if_media.h>
 
+netsnmp_feature_child_of(interface_arch_set_admin_status, interface_all)
+
 /*
  * account for minor differences between FreeBSD and OpenBSD.
  * If this gets unruly, split stuff out into the respective
@@ -49,7 +52,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 +284,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 +352,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 +417,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 +425,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);
         }
@@ -561,6 +564,7 @@
     return 0;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_INTERFACE_ARCH_SET_ADMIN_STATUS
 int
 netsnmp_arch_set_admin_status(netsnmp_interface_entry * entry,
                               int ifAdminStatus_val)
@@ -575,3 +579,4 @@
 
     return -4;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INTERFACE_ARCH_SET_ADMIN_STATUS */
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable.c b/agent/mibgroup/if-mib/ifTable/ifTable.c
index 69400fc..d9b7252 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable.c
+++ b/agent/mibgroup/if-mib/ifTable/ifTable.c
@@ -14,9 +14,14 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(interface_access_entry_set_admin_status)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 /*
  * include our parent header 
  */
@@ -31,14 +36,14 @@
 #   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"
 #endif
 
-oid             ifTable_oid[] = { IFTABLE_OID };
-int             ifTable_oid_size = OID_LENGTH(ifTable_oid);
+const oid       ifTable_oid[] = { IFTABLE_OID };
+const int       ifTable_oid_size = OID_LENGTH(ifTable_oid);
 
 ifTable_registration ifTable_user_context;
 static ifTable_registration *ifTable_user_context_p;
@@ -147,8 +152,7 @@
      * register scalar for ifNumber
      */
     {
-        oid             reg_oid[] =
-            { IFTABLE_NUMBER };
+        const oid       reg_oid[] = { IFTABLE_NUMBER };
         netsnmp_handler_registration *myreg;
 
         myreg =
@@ -279,9 +283,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));
         }
 
@@ -474,7 +478,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;
@@ -752,7 +756,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");
@@ -1773,9 +1777,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;
@@ -1784,6 +1788,9 @@
 
 
 /** @} */
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -2330,6 +2337,8 @@
 }                               /* ifTable_check_dependencies */
 
 
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 static int
 _if_number_handler(netsnmp_mib_handler *handler,
                       netsnmp_handler_registration *reginfo,
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable.h b/agent/mibgroup/if-mib/ifTable/ifTable.h
index 6a6f0e5..e90634f 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 *
@@ -361,8 +364,8 @@
     ifTable_rowreq_ctx *ifTable_row_find_by_mib_index(ifTable_mib_index *
                                                       mib_idx);
 
-    extern oid      ifTable_oid[];
-    extern int      ifTable_oid_size;
+    extern const oid ifTable_oid[];
+    extern const int ifTable_oid_size;
 
 
 #include "ifTable_interface.h"
@@ -448,6 +451,7 @@
 
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     /*
      *********************************************************************
      * SET function declarations
@@ -663,7 +667,7 @@
 
 
     int             ifTable_check_dependencies(ifTable_rowreq_ctx * ctx);
-
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     /*
      * DUMMY markers, ignore
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable_data_access.c b/agent/mibgroup/if-mib/ifTable/ifTable_data_access.c
index 05191e7..fb838ef 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable_data_access.c
+++ b/agent/mibgroup/if-mib/ifTable/ifTable_data_access.c
@@ -8,9 +8,12 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+netsnmp_feature_require(container_linked_list)
+
 /*
  * include our parent header 
  */
@@ -23,12 +26,34 @@
 #   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;
+} cd_container;
+
 /*
  * flag so we know not to set row/table last change times
  * during startup.
  */
 static int      _first_load = 1;
 
+/*
+ * Value of interface_fadeout config option
+ */
+static int fadeout = IFTABLE_REMOVE_MISSING_AFTER;
+/*
+ * Value of interface_replace_old config option
+ */
+static int replace_old = 0;
+
+static void
+_delete_missing_interface(ifTable_rowreq_ctx *rowreq_ctx,
+                          netsnmp_container *container);
+
 /** @ingroup interface 
  * @defgroup data_access data_access: Routines to access data
  *
@@ -50,6 +75,32 @@
  * OID: .1.3.6.1.2.1.2.2, length: 8
  */
 
+static void
+parse_interface_fadeout(const char *token, char *line)
+{
+    fadeout = atoi(line);
+}
+static void
+parse_interface_replace_old(const char *token, char *line)
+{
+    if (strcmp(line, "yes") == 0
+            || strcmp(line, "y") == 0
+            || strcmp(line, "true") == 0
+            || strcmp(line, "1") == 0) {
+        replace_old = 1;
+        return;
+    }
+    if (strcmp(line, "no") == 0
+            || strcmp(line, "n") == 0
+            || strcmp(line, "false") == 0
+            || strcmp(line, "0") == 0) {
+        replace_old = 0;
+        return;
+    }
+    snmp_log(LOG_ERR, "Invalid value of interface_replace_old parameter: '%s'\n",
+            line);
+}
+
 /**
  * initialization for ifTable data access
  *
@@ -70,6 +121,10 @@
     /*
      * TODO:303:o: Initialize ifTable data.
      */
+    snmpd_register_config_handler("interface_fadeout", parse_interface_fadeout, NULL,
+            "interface_fadeout seconds");
+    snmpd_register_config_handler("interface_replace_old",
+            parse_interface_replace_old, NULL, "interface_replace_old yes|no");
 
     return MFD_SUCCESS;
 }                               /* ifTable_init_data */
@@ -152,23 +207,122 @@
          NETSNMP_CACHE_AUTO_RELOAD | NETSNMP_CACHE_DONT_INVALIDATE_ON_SET);
 }                               /* ifTable_container_init */
 
+void
+send_linkUpDownNotifications(oid *notification_oid, size_t notification_oid_len, int if_index, int if_admin_status, int if_oper_status)
+{
+    /*
+     * In the notification, we have to assign our notification OID to
+     * the snmpTrapOID.0 object. Here is it's definition. 
+     */
+    oid             objid_snmptrap[] = { 1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0 };
+    size_t          objid_snmptrap_len = OID_LENGTH(objid_snmptrap);
+
+    /*
+     * define the OIDs for the varbinds we're going to include
+     *  with the notification -
+     * IF-MIB::ifIndex,
+     * IF-MIB::ifAdminStatus, and
+     * IF-MIB::ifOperStatus
+     */
+    oid      if_index_oid[]   = { 1, 3, 6, 1, 2, 1, 2, 2, 1, 1, 0 };
+    size_t   if_index_oid_len = OID_LENGTH(if_index_oid);
+    oid      if_admin_status_oid[]   = { 1, 3, 6, 1, 2, 1, 2, 2, 1, 7, 0 };
+    size_t   if_admin_status_oid_len = OID_LENGTH(if_admin_status_oid);
+    oid      if_oper_status_oid[]   = { 1, 3, 6, 1, 2, 1, 2, 2, 1, 8, 0 };
+    size_t   if_oper_status_oid_len = OID_LENGTH(if_oper_status_oid);
+
+    /*
+     * here is where we store the variables to be sent in the trap 
+     */
+    netsnmp_variable_list *notification_vars = NULL;
+
+    DEBUGMSGTL(("rsys:linkUpDownNotifications", "defining the trap\n"));
+
+    /*
+     * update the instance for each variable to be sent in the trap
+     */
+    if_index_oid[10] = if_index;
+    if_admin_status_oid[10] = if_index;
+    if_oper_status_oid[10] = if_index;
+
+    /*
+     * add in the trap definition object 
+     */
+    snmp_varlist_add_variable(&notification_vars,
+                              /*
+                               * the snmpTrapOID.0 variable 
+                               */
+                              objid_snmptrap, objid_snmptrap_len,
+                              /*
+                               * value type is an OID 
+                               */
+                              ASN_OBJECT_ID,
+                              /*
+                               * value contents is our notification OID 
+                               */
+                              (u_char *) notification_oid,
+                              /*
+                               * size in bytes = oid length * sizeof(oid) 
+                               */
+                              notification_oid_len * sizeof(oid));
+
+    /*
+     * add in the additional objects defined as part of the trap
+     */
+    snmp_varlist_add_variable(&notification_vars,
+                               if_index_oid, if_index_oid_len,
+                               ASN_INTEGER,
+                              (u_char *)&if_index,
+                                  sizeof(if_index));
+
+    /*
+     * if we want to insert additional objects, we do it here 
+     */
+    snmp_varlist_add_variable(&notification_vars,
+                               if_admin_status_oid, if_admin_status_oid_len,
+                               ASN_INTEGER,
+                              (u_char *)&if_admin_status,
+                                  sizeof(if_admin_status));
+
+    snmp_varlist_add_variable(&notification_vars,
+                               if_oper_status_oid, if_oper_status_oid_len,
+                               ASN_INTEGER,
+                              (u_char *)&if_oper_status,
+                                  sizeof(if_oper_status));
+
+    /*
+     * send the trap out.  This will send it to all registered
+     * receivers (see the "SETTING UP TRAP AND/OR INFORM DESTINATIONS"
+     * section of the snmpd.conf manual page. 
+     */
+    DEBUGMSGTL(("rsys:linkUpDownNotifications", "sending the trap\n"));
+    send_v2trap(notification_vars);
+
+    /*
+     * free the created notification variable list 
+     */
+    DEBUGMSGTL(("rsys:linkUpDownNotifications", "cleaning up\n"));
+    snmp_free_varbind(notification_vars);
+}
+
 /**
  * check entry for update
  *
  */
 static void
 _check_interface_entry_for_updates(ifTable_rowreq_ctx * rowreq_ctx,
-                                   netsnmp_container *ifcontainer)
+                                   cd_container *cdc)
 {
     char            oper_changed = 0;
-    u_long lastchange = rowreq_ctx->data.ifLastChange;
+    int lastchanged = rowreq_ctx->data.ifLastChange;
+    netsnmp_container *ifcontainer = cdc->current;
 
     /*
      * check for matching entry. We can do this directly, since
      * 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
     /*
@@ -193,28 +347,40 @@
          * deleted (and thus need to update ifTableLastChanged)?
          */
         if (!rowreq_ctx->known_missing) {
-            DEBUGMSGTL(("ifTable:access", "updating missing entry\n"));
             rowreq_ctx->known_missing = 1;
+            DEBUGMSGTL(("ifTable:access", "updating missing entry %s\n",rowreq_ctx->data.ifName));
             rowreq_ctx->data.ifAdminStatus = IFADMINSTATUS_DOWN;
-            if ((!(rowreq_ctx->data.ifentry->ns_flags & NETSNMP_INTERFACE_FLAGS_HAS_LASTCHANGE))
-                && (rowreq_ctx->data.ifOperStatus != IFOPERSTATUS_DOWN))
-                oper_changed = 1;
             rowreq_ctx->data.ifOperStatus = IFOPERSTATUS_DOWN;
+            oper_changed = 1;
+        }
+        if (rowreq_ctx->known_missing) {
+            time_t now = netsnmp_get_agent_uptime();
+            u_long diff = (now - rowreq_ctx->data.ifLastChange) / 100;
+            DEBUGMSGTL(("verbose:ifTable:access", "missing entry for %ld seconds\n", diff));
+            if (diff >= fadeout) {
+                DEBUGMSGTL(("ifTable:access", "marking missing entry %s for "
+                            "removal after %d seconds\n", rowreq_ctx->data.ifName,
+                            fadeout));
+                if (NULL == cdc->deleted)
+                   cdc->deleted = netsnmp_container_find("ifTable_deleted:linked_list");
+                if (NULL == cdc->deleted)
+                   snmp_log(LOG_ERR, "couldn't create container for deleted interface\n");
+                else {
+                   CONTAINER_INSERT(cdc->deleted, rowreq_ctx);
+                }
+            }
         }
     } else {
-        DEBUGMSGTL(("ifTable:access", "updating existing entry\n"));
+        DEBUGMSGTL(("ifTable:access", "updating existing entry %s\n",
+                    rowreq_ctx->data.ifName));
 
 #ifdef USING_IF_MIB_IFXTABLE_IFXTABLE_MODULE
         {
             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));
             }
@@ -253,10 +419,63 @@
     /*
      * if ifOperStatus changed, update ifLastChange
      */
-    if (oper_changed)
+    if (oper_changed) {
         rowreq_ctx->data.ifLastChange = netsnmp_get_agent_uptime();
+#ifdef USING_IF_MIB_IFXTABLE_IFXTABLE_MODULE
+        if (rowreq_ctx->data.ifLinkUpDownTrapEnable == 1) {
+            if (rowreq_ctx->data.ifOperStatus == IFOPERSTATUS_UP) {
+                oid notification_oid[] = { 1, 3, 6, 1, 6, 3, 1, 1, 5, 4 };
+                send_linkUpDownNotifications(notification_oid, OID_LENGTH(notification_oid),
+                                             rowreq_ctx->tbl_idx.ifIndex,
+                                             rowreq_ctx->data.ifAdminStatus,
+                                             rowreq_ctx->data.ifOperStatus);
+            } else if (rowreq_ctx->data.ifOperStatus == IFOPERSTATUS_DOWN) {
+                oid notification_oid[] = { 1, 3, 6, 1, 6, 3, 1, 1, 5, 3 };
+                send_linkUpDownNotifications(notification_oid, OID_LENGTH(notification_oid),
+                                             rowreq_ctx->tbl_idx.ifIndex,
+                                             rowreq_ctx->data.ifAdminStatus,
+                                             rowreq_ctx->data.ifOperStatus);
+            }
+        }
+#endif
+    }
+
     else
-        rowreq_ctx->data.ifLastChange = lastchange;
+        rowreq_ctx->data.ifLastChange = lastchanged;
+}
+
+/**
+ * Remove all old interfaces with the same name as the newly added one.
+ */
+static void
+_check_and_replace_old(netsnmp_interface_entry *ifentry,
+                   netsnmp_container *container)
+{
+    netsnmp_iterator *it;
+    ifTable_rowreq_ctx * rowreq_ctx;
+    netsnmp_container *to_delete;
+
+    to_delete = netsnmp_container_find("ifTable_deleted:linked_list");
+    if (NULL == to_delete) {
+       snmp_log(LOG_ERR, "couldn't create container for deleted interface\n");
+       return;
+    }
+
+    it = CONTAINER_ITERATOR(container);
+    for (rowreq_ctx = ITERATOR_FIRST(it); rowreq_ctx; rowreq_ctx = ITERATOR_NEXT(it)) {
+        if (strcmp(ifentry->name, rowreq_ctx->data.ifentry->name) == 0) {
+            DEBUGMSGTL(("ifTable:access",
+                    "removing interface %ld due to new %s\n",
+                    (long) rowreq_ctx->data.ifentry->index, ifentry->name));
+            CONTAINER_INSERT(to_delete, rowreq_ctx);
+        }
+    }
+    ITERATOR_RELEASE(it);
+
+    CONTAINER_FOR_EACH(to_delete,
+                       (netsnmp_container_obj_func *) _delete_missing_interface,
+                       container);
+    CONTAINER_FREE(to_delete);
 }
 
 /**
@@ -277,6 +496,9 @@
     rowreq_ctx = ifTable_allocate_rowreq_ctx(ifentry);
     if ((NULL != rowreq_ctx) &&
         (MFD_SUCCESS == ifTable_indexes_set(rowreq_ctx, ifentry->index))) {
+        if (replace_old)
+                _check_and_replace_old(ifentry, container);
+
         CONTAINER_INSERT(container, rowreq_ctx);
         if (0 == _first_load) {
             rowreq_ctx->data.ifLastChange = netsnmp_get_agent_uptime();
@@ -308,6 +530,21 @@
 }
 
 /**
+ * add new entry
+ */
+static void
+_delete_missing_interface(ifTable_rowreq_ctx *rowreq_ctx,
+                          netsnmp_container *container)
+{
+    DEBUGMSGTL(("ifTable:access", "removing missing entry %s\n",
+                rowreq_ctx->data.ifName));
+
+    CONTAINER_REMOVE(container, rowreq_ctx);
+
+    ifTable_release_rowreq_ctx(rowreq_ctx);
+}
+
+/**
  * container shutdown
  *
  * @param container_ptr A pointer to the container.
@@ -371,7 +608,7 @@
 int
 ifTable_container_load(netsnmp_container *container)
 {
-    netsnmp_container *ifcontainer;
+    cd_container cdc;
 
     DEBUGMSGTL(("verbose:ifTable:ifTable_container_load", "called\n"));
 
@@ -384,23 +621,35 @@
     /*
      * ifTable gets its data from the netsnmp_interface API.
      */
-    ifcontainer =
+    cdc.current =
         netsnmp_access_interface_container_load(NULL,
                                                 NETSNMP_ACCESS_INTERFACE_INIT_NOFLAGS);
-    if (NULL == ifcontainer)
+    if (NULL == cdc.current)
         return MFD_RESOURCE_UNAVAILABLE;        /* msg already logged */
 
+    cdc.deleted = NULL; /* created as needed */
+
     /*
      * we just got a fresh copy of interface data. compare it to
      * what we've already got, and make any adjustements...
      */
     CONTAINER_FOR_EACH(container, (netsnmp_container_obj_func *)
-                       _check_interface_entry_for_updates, ifcontainer);
+                       _check_interface_entry_for_updates, &cdc);
+
+    /*
+     * now remove any missing interfaces
+     */
+    if (NULL != cdc.deleted) {
+       CONTAINER_FOR_EACH(cdc.deleted,
+                          (netsnmp_container_obj_func *) _delete_missing_interface,
+                          container);
+       CONTAINER_FREE(cdc.deleted);
+    }
 
     /*
      * now add any new interfaces
      */
-    CONTAINER_FOR_EACH(ifcontainer,
+    CONTAINER_FOR_EACH(cdc.current,
                        (netsnmp_container_obj_func *) _add_new_interface,
                        container);
 
@@ -408,11 +657,11 @@
      * free the container. we've either claimed each ifentry, or released it,
      * so the dal function doesn't need to clear the container.
      */
-    netsnmp_access_interface_container_free(ifcontainer,
+    netsnmp_access_interface_container_free(cdc.current,
                                             NETSNMP_ACCESS_INTERFACE_FREE_DONT_CLEAR);
 
     DEBUGMSGT(("verbose:ifTable:ifTable_cache_load",
-               "%d records\n", CONTAINER_SIZE(container)));
+               "%lu records\n", (unsigned long)CONTAINER_SIZE(container)));
 
     if (_first_load)
         _first_load = 0;
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable_data_access.h b/agent/mibgroup/if-mib/ifTable/ifTable_data_access.h
index 9aaa42e..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,9 @@
      * 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 */
 
     void            ifTable_container_init(netsnmp_container
                                            **container_ptr_ptr,
diff --git a/agent/mibgroup/if-mib/ifTable/ifTable_interface.c b/agent/mibgroup/if-mib/ifTable/ifTable_interface.c
index 25749e3..41d38ee 100644
--- a/agent/mibgroup/if-mib/ifTable/ifTable_interface.c
+++ b/agent/mibgroup/if-mib/ifTable/ifTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -47,6 +48,21 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(ifTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+netsnmp_feature_child_of(iftable_container_get, ifTable_external_access)
+netsnmp_feature_child_of(ifxtable_shutdown_interface, netsnmp_unused)
+netsnmp_feature_child_of(ifXTable_container_size, ifXTable_external_access)
+netsnmp_feature_child_of(ifXTable_registration_set, ifXTable_external_access)
+netsnmp_feature_child_of(ifXTable_registration_get, ifXTable_external_access)
+netsnmp_feature_child_of(ifXTable_container_get, ifXTable_external_access)
+netsnmp_feature_child_of(iftable_container_size, ifTable_external_access)
+netsnmp_feature_child_of(iftable_registration_set, ifTable_external_access)
+netsnmp_feature_child_of(iftable_registration_get, ifTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -82,19 +98,23 @@
 static void     _ifTable_container_shutdown(ifTable_interface_ctx *
                                             if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_IFTABLE_CONTAINER_GET
 netsnmp_container *
 ifTable_container_get(void)
 {
     return ifTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IFTABLE_REGISTRATION_GET
 ifTable_registration *
 ifTable_registration_get(void)
 {
     return ifTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IFTABLE_REGISTRATION_SET
 ifTable_registration *
 ifTable_registration_set(ifTable_registration * newreg)
 {
@@ -102,12 +122,15 @@
     ifTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IFTABLE_CONTAINER_SIZE
 int
 ifTable_container_size(void)
 {
     return CONTAINER_SIZE(ifTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFTABLE_CONTAINER_SIZE */
 
 u_int
 ifTable_dirty_get(void)
@@ -145,7 +168,7 @@
 static Netsnmp_Node_Handler _mfd_ifTable_post_request;
 static Netsnmp_Node_Handler _mfd_ifTable_object_lookup;
 static Netsnmp_Node_Handler _mfd_ifTable_get_values;
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 static Netsnmp_Node_Handler _mfd_ifTable_check_objects;
 static Netsnmp_Node_Handler _mfd_ifTable_undo_setup;
 static Netsnmp_Node_Handler _mfd_ifTable_set_values;
@@ -160,7 +183,7 @@
                                                rowreq_ctx,
                                                netsnmp_variable_list * var,
                                                int column);
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 ifTable_data   *ifTable_allocate_data(void);
 
@@ -222,7 +245,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;
@@ -250,7 +273,7 @@
     access_multiplexer->post_request = _mfd_ifTable_post_request;
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /*
      * REQUIRED wrappers for set request handling
      */
@@ -273,7 +296,7 @@
      */
     access_multiplexer->consistency_checks =
         _mfd_ifTable_check_dependencies;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     /*************************************************
      *
@@ -286,11 +309,14 @@
     reginfo =
         netsnmp_handler_registration_create("ifTable", handler,
                                             ifTable_oid, ifTable_oid_size,
-                                            HANDLER_CAN_BABY_STEP
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
-                                          | HANDLER_CAN_RWRITE
-#endif
-                                          );
+                                            HANDLER_CAN_BABY_STEP |
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
+                                            HANDLER_CAN_RWRITE
+#else
+                                            HANDLER_CAN_RONLY
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
+            );
+
     if (NULL == reginfo) {
         snmp_log(LOG_ERR, "error registering table ifTable\n");
         return;
@@ -308,7 +334,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -331,7 +357,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -372,8 +398,8 @@
      * register ifTableLastChanged
      */
     {
-        oid             iftlc_oid[] = { IFTABLE_LAST_CHANGE };
-        netsnmp_register_watched_scalar(netsnmp_create_handler_registration
+        const oid       iftlc_oid[] = { IFTABLE_LAST_CHANGE };
+        netsnmp_register_watched_scalar2(netsnmp_create_handler_registration
                                         ("ifTableLastChanged", NULL,
                                          iftlc_oid, OID_LENGTH(iftlc_oid),
                                          HANDLER_CAN_RONLY),
@@ -656,7 +682,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 +736,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 +996,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;
@@ -1039,8 +1065,8 @@
 
 
 
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
 /***********************************************************************
  *
  * SET processing
@@ -1265,7 +1291,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 +1338,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 +1449,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 +1523,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 +1602,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 +1649,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 +1691,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 +1769,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 +1822,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",
@@ -1818,7 +1844,7 @@
 
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_ifTable_irreversible_commit */
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /***********************************************************************
  *
@@ -1964,6 +1990,7 @@
 }                               /* _ifTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_IFTABLE_EXTERNAL_ACCESS
 ifTable_rowreq_ctx *
 ifTable_row_find_by_mib_index(ifTable_mib_index * mib_idx)
 {
@@ -1985,7 +2012,8 @@
     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;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/if-mib/ifXTable/ifXTable.c b/agent/mibgroup/if-mib/ifXTable/ifXTable.c
index 8b9b7ce..bb3e736 100644
--- a/agent/mibgroup/if-mib/ifXTable/ifXTable.c
+++ b/agent/mibgroup/if-mib/ifXTable/ifXTable.c
@@ -14,6 +14,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -29,6 +30,9 @@
 
 #include "ifXTable_interface.h"
 
+netsnmp_feature_require(ifTable_container_get)
+netsnmp_feature_require(ifTable_container_size)
+
 /*
  * not sure if we want to support set for promiscuous mode, because
  * 1) careful thought should go into any settable object that performs
@@ -38,9 +42,8 @@
  */
 #undef NETSNMP_ENABLE_PROMISCUOUSMODE_SET
 
-oid             ifXTable_oid[] = { IFXTABLE_OID };
-int             ifXTable_oid_size = OID_LENGTH(ifXTable_oid);
-const char     *row_token = "ifXTable";
+const oid       ifXTable_oid[] = { IFXTABLE_OID };
+const int       ifXTable_oid_size = OID_LENGTH(ifXTable_oid);
 
 ifXTable_registration ifXTable_user_context;
 static ifXTable_registration *ifXTable_user_context_p;
@@ -236,9 +239,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));
         }
 
@@ -400,7 +403,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)
@@ -425,7 +428,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;
@@ -1493,7 +1496,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)) {
@@ -1573,6 +1576,7 @@
 }                               /* ifCounterDiscontinuityTime_get */
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 
 /** @} */
 /**********************************************************************
@@ -2531,5 +2535,7 @@
     return rc;
 }                               /* ifXTable_check_dependencies */
 
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
 /** @} */
 /** @{ */
diff --git a/agent/mibgroup/if-mib/ifXTable/ifXTable.h b/agent/mibgroup/if-mib/ifXTable/ifXTable.h
index e32acc8..ba22f97 100644
--- a/agent/mibgroup/if-mib/ifXTable/ifXTable.h
+++ b/agent/mibgroup/if-mib/ifXTable/ifXTable.h
@@ -94,8 +94,8 @@
     ifXTable_rowreq_ctx *ifXTable_row_find_by_mib_index(ifXTable_mib_index
                                                         * mib_idx);
 
-    extern oid      ifXTable_oid[];
-    extern int      ifXTable_oid_size;
+    extern const oid      ifXTable_oid[];
+    extern const int      ifXTable_oid_size;
 
 
 #include "ifXTable_interface.h"
@@ -218,7 +218,7 @@
      * OID: .1.3.6.1.2.1.31.1.1, length: 9
      */
 
-
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     int             ifXTable_undo_setup(ifXTable_rowreq_ctx * rowreq_ctx);
     int             ifXTable_undo_cleanup(ifXTable_rowreq_ctx *
                                           rowreq_ctx);
@@ -438,7 +438,7 @@
 
 
     int             ifXTable_check_dependencies(ifXTable_rowreq_ctx * ctx);
-
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     /*
      * DUMMY markers, ignore
diff --git a/agent/mibgroup/if-mib/ifXTable/ifXTable_constants.h b/agent/mibgroup/if-mib/ifXTable/ifXTable_constants.h
index 728ef57..67e1996 100644
--- a/agent/mibgroup/if-mib/ifXTable/ifXTable_constants.h
+++ b/agent/mibgroup/if-mib/ifXTable/ifXTable_constants.h
@@ -67,7 +67,11 @@
      * TODO:405:r: Review IFXTABLE_SETTABLE_COLS macro.
      * OR together all the writable cols.
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #define IFXTABLE_SETTABLE_COLS (COLUMN_IFLINKUPDOWNTRAPENABLE_FLAG | COLUMN_IFALIAS_FLAG)
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
+#define IFXTABLE_SETTABLE_COLS 0
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
     /*
      * NOTES on enums
      * ==============
diff --git a/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c b/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c
index d9b1847..23b50d0 100644
--- a/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c
+++ b/agent/mibgroup/if-mib/ifXTable/ifXTable_interface.c
@@ -30,6 +30,8 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -48,6 +50,16 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(ifXTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(cache_find_by_oid)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -81,19 +93,23 @@
 static void     _ifXTable_container_shutdown(ifXTable_interface_ctx *
                                              if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_IFXTABLE_CONTAINER_GET
 netsnmp_container *
 ifXTable_container_get(void)
 {
     return ifXTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFXTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IFXTABLE_REGISTRATION_GET
 ifXTable_registration *
 ifXTable_registration_get(void)
 {
     return ifXTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFXTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IFXTABLE_REGISTRATION_SET
 ifXTable_registration *
 ifXTable_registration_set(ifXTable_registration * newreg)
 {
@@ -101,12 +117,15 @@
     ifXTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFXTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IFXTABLE_CONTAINER_SIZE
 int
 ifXTable_container_size(void)
 {
     return CONTAINER_SIZE(ifXTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFXTABLE_CONTAINER_SIZE */
 
 u_int
 ifXTable_dirty_get(void)
@@ -130,7 +149,7 @@
 static Netsnmp_Node_Handler _mfd_ifXTable_post_request;
 static Netsnmp_Node_Handler _mfd_ifXTable_object_lookup;
 static Netsnmp_Node_Handler _mfd_ifXTable_get_values;
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 static Netsnmp_Node_Handler _mfd_ifXTable_check_objects;
 static Netsnmp_Node_Handler _mfd_ifXTable_undo_setup;
 static Netsnmp_Node_Handler _mfd_ifXTable_set_values;
@@ -145,7 +164,7 @@
                                                 rowreq_ctx,
                                                 netsnmp_variable_list *
                                                 var, int column);
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 ifXTable_data  *ifXTable_allocate_data(void);
 
@@ -188,7 +207,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;
@@ -223,7 +242,7 @@
     access_multiplexer->post_request = _mfd_ifXTable_post_request;
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /*
      * REQUIRED wrappers for set request handling
      */
@@ -246,7 +265,7 @@
      */
     access_multiplexer->consistency_checks =
         _mfd_ifXTable_check_dependencies;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     /*************************************************
      *
@@ -260,11 +279,14 @@
         netsnmp_handler_registration_create("ifXTable", handler,
                                             ifXTable_oid,
                                             ifXTable_oid_size,
-                                            HANDLER_CAN_BABY_STEP
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
-                                          | HANDLER_CAN_RWRITE
-#endif
-                                          );
+                                            HANDLER_CAN_BABY_STEP |
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
+                                            HANDLER_CAN_RWRITE
+#else
+                                            HANDLER_CAN_RONLY
+#endif     /* NETSNMP_NO_WRITE_SUPPORT  || NETSNMP_DISABLE_SET_SUPPORT */
+            );
+
     if (NULL == reginfo) {
         snmp_log(LOG_ERR, "error registering table ifXTable\n");
         return;
@@ -282,7 +304,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -305,7 +327,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -352,6 +374,7 @@
  * @internal
  * Shutdown the table ifXTable
  */
+#ifndef NETSNMP_FEATURE_REMOVE_IFXTABLE_SHUTDOWN_INTERFACE
 void
 _ifXTable_shutdown_interface(ifXTable_registration * reg_ptr)
 {
@@ -360,6 +383,7 @@
      */
     _ifXTable_container_shutdown(&ifXTable_if_ctx);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFXTABLE_SHUTDOWN_INTERFACE */
 
 void
 ifXTable_valid_columns_set(netsnmp_column_info *vc)
@@ -552,7 +576,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 +631,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 +869,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;
@@ -912,7 +936,7 @@
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_ifXTable_get_values */
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -1162,7 +1186,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;
@@ -1193,7 +1217,6 @@
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_ifXTable_check_objects */
 
-
 /*----------------------------------------------------------------------
  *
  * SET: check dependencies
@@ -1210,7 +1233,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 +1317,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 +1380,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 +1482,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 +1529,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 +1562,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 +1655,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 +1710,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",
@@ -1709,7 +1732,8 @@
 
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_ifXTable_irreversible_commit */
-#endif
+
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /***********************************************************************
  *
@@ -1784,7 +1808,7 @@
                                              rowreq_ctx, u_int col,
                                              char *buf);
 
-static char     row_token[] = "ifXTable";
+static const char row_token[] = "ifXTable";
 
 /************************************************************
  * *_init_persistence should be called from the main table
@@ -1798,13 +1822,17 @@
 void
 ifXTable_container_init_persistence(netsnmp_container *container)
 {
+    netsnmp_container **container_p;
     int             rc;
 
     register_config_handler(NULL, row_token,
                             _ifXTable_container_row_restore, NULL, NULL);
+    netsnmp_assert(container);
+    container_p = netsnmp_memdup(&container, sizeof(container));
+    netsnmp_assert(container_p);
     rc = snmp_register_callback(SNMP_CALLBACK_LIBRARY,
                                 SNMP_CALLBACK_STORE_DATA,
-                                _ifXTable_container_save_rows, container);
+                                _ifXTable_container_save_rows, container_p);
 
     if (rc != SNMP_ERR_NOERROR)
         snmp_log(LOG_ERR, "error registering for STORE_DATA callback "
@@ -1827,7 +1855,7 @@
     /*
      * save all rows
      */
-    CONTAINER_FOR_EACH((netsnmp_container *) clientarg,
+    CONTAINER_FOR_EACH(*(netsnmp_container **)clientarg,
                        (netsnmp_container_obj_func *)
                        _ifXTable_container_row_save, type);
 
@@ -1870,7 +1898,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 +2019,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 +2030,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 +2109,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;
 
@@ -2143,6 +2172,7 @@
 }
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_IFXTABLE_EXTERNAL_ACCESS
 ifXTable_rowreq_ctx *
 ifXTable_row_find_by_mib_index(ifXTable_mib_index * mib_idx)
 {
@@ -2164,7 +2194,8 @@
     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;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IFXTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/ip-forward-mib/data_access/route.h b/agent/mibgroup/ip-forward-mib/data_access/route.h
index dac70ce..2c731a6 100644
--- a/agent/mibgroup/ip-forward-mib/data_access/route.h
+++ b/agent/mibgroup/ip-forward-mib/data_access/route.h
@@ -22,8 +22,12 @@
 #if defined( linux )
 config_require(ip-forward-mib/data_access/route_linux)
 config_require(ip-forward-mib/data_access/route_ioctl)
+#elif defined( freebsd7 ) || defined( netbsd5 ) || defined( openbsd4 ) || defined( dragonfly ) || defined( darwin )
+config_require(ip-forward-mib/data_access/route_sysctl)
+#elif defined(solaris2) && defined( HAVE_MIB2_IPIFSTATSENTRY_T )
+config_require(ip-forward-mib/data_access/route_solaris)
 #else
-#error "the route data access library is not available for this platform."
+config_error(the route data access library is not available in this environment.)
 #endif
 
 /** need interface for ifIndex */
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 99b3de4..84c1810 100644
--- a/agent/mibgroup/ip-forward-mib/data_access/route_common.c
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_common.c
@@ -55,6 +55,8 @@
         }
     }
 
+    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);
@@ -240,8 +242,7 @@
     lhs->rt_proto = rhs->rt_proto;
 
 #ifdef USING_IP_FORWARD_MIB_IPCIDRROUTETABLE_IPCIDRROUTETABLE_MODULE
-    if (NULL != lhs->rt_info)
-        SNMP_FREE(lhs->rt_info);
+    SNMP_FREE(lhs->rt_info);
     if (NULL != rhs->rt_info)
         snmp_clone_mem((void **) &lhs->rt_info, rhs->rt_info,
                        rhs->rt_info_len * sizeof(oid));
diff --git a/agent/mibgroup/ip-forward-mib/data_access/route_ioctl.c b/agent/mibgroup/ip-forward-mib/data_access/route_ioctl.c
index de42920..ff89161 100644
--- a/agent/mibgroup/ip-forward-mib/data_access/route_ioctl.c
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_ioctl.c
@@ -54,12 +54,9 @@
 #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/ipaddress.h>
 #include <net-snmp/data_access/route.h>
 
 #include "ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.h"
@@ -69,10 +66,10 @@
 #include <windows.h>
 #endif
 
-#ifndef STRUCT_RTENTRY_HAS_RT_DST
+#ifndef HAVE_STRUCT_RTENTRY_RT_DST
 #   define rt_dst rt_nodes->rn_key
 #endif
-#ifndef STRUCT_RTENTRY_HAS_RT_HASH
+#ifndef HAVE_STRUCT_RTENTRY_RT_HASH
 #   define rt_hash rt_pad1
 #endif
 
@@ -101,7 +98,7 @@
 
     s = socket(AF_INET, SOCK_RAW, NETSNMP_ROUTE_WRITE_PROTOCOL);
     if (s < 0) {
-        snmp_log_perror("socket");
+        snmp_log_perror("netsnmp_ioctl_route_set_v4: socket");
         return -3;
     }
 
@@ -110,7 +107,7 @@
     dst.sin_family = AF_INET;
     memcpy(&dst.sin_addr.s_addr, entry->rt_dest, 4);
     DEBUGSTR = inet_ntoa(dst.sin_addr);
-    DEBUGMSGTL(("access:route","*** route to %s\n", DEBUGSTR));
+    DEBUGMSGTL(("access:route","add route to %s\n", DEBUGSTR));
 
     gateway.sin_family = AF_INET;
     memcpy(&gateway.sin_addr.s_addr, entry->rt_nexthop, 4);
@@ -118,7 +115,10 @@
     DEBUGMSGTL(("access:route","    via %s\n", DEBUGSTR));
 
     mask.sin_family = AF_INET;
-    mask.sin_addr.s_addr = htonl(0);
+    if (entry->rt_pfx_len != 0)
+	mask.sin_addr.s_addr = netsnmp_ipaddress_ipv4_mask(entry->rt_pfx_len);
+    else
+	mask.sin_addr.s_addr = entry->rt_mask;
     DEBUGSTR = inet_ntoa(mask.sin_addr);
     DEBUGMSGTL(("access:route","    mask %s\n", DEBUGSTR));
 
@@ -137,30 +137,31 @@
 #endif
 
     rc = ioctl(s, SIOCADDRT, (caddr_t) & route);
-    close(s);
     if (rc < 0) {
-        snmp_log_perror("ioctl");
-        return -4;
+        snmp_log_perror("netsnmp_ioctl_route_set_v4: ioctl");
+        rc = -4;
     }
+    close(s);
 
-    return 0;
+    return rc;
 }
 #endif
 
 #if defined SIOCDELRT && !defined(irix6)
 int _netsnmp_ioctl_route_delete_v4(netsnmp_route_entry * entry)
 {
-    struct sockaddr_in dst;
+    struct sockaddr_in dst, mask;
     struct sockaddr_in gateway;
     int             s, rc;
     RTENTRY         route;
+    char           *DEBUGSTR;
 
     netsnmp_assert(NULL != entry); /* checked in netsnmp_arch_route_delete */
     netsnmp_assert((4 == entry->rt_dest_len) && (4 == entry->rt_nexthop_len));
 
     s = socket(AF_INET, SOCK_RAW, NETSNMP_ROUTE_WRITE_PROTOCOL);
     if (s < 0) {
-        snmp_log_perror("socket");
+        snmp_log_perror("netsnmp_ioctl_route_delete_v4: socket");
         return -3;
     }
 
@@ -168,11 +169,20 @@
 
     dst.sin_family = AF_INET;
     memcpy(&dst.sin_addr.s_addr, entry->rt_dest, 4);
+    DEBUGSTR = inet_ntoa(dst.sin_addr);
+    DEBUGMSGTL(("access:route","del route to %s\n", DEBUGSTR));
+
+    mask.sin_family = AF_INET;
+    if (entry->rt_pfx_len != 0)
+	mask.sin_addr.s_addr = netsnmp_ipaddress_ipv4_mask(entry->rt_pfx_len);
+    else
+	mask.sin_addr.s_addr = entry->rt_mask;
 
     gateway.sin_family = AF_INET;
     memcpy(&gateway.sin_addr.s_addr, entry->rt_nexthop, 4);
 
     memcpy(&route.rt_dst, &dst, sizeof(struct sockaddr_in));
+    memcpy(&route.rt_genmask, &mask, sizeof(struct sockaddr_in));
     memcpy(&route.rt_gateway, &gateway, sizeof(struct sockaddr_in));
 
     if (32 == entry->rt_pfx_len)
@@ -186,11 +196,11 @@
 #endif
 
     rc = ioctl(s, SIOCDELRT, (caddr_t) & route);
-    close(s);
     if (rc < 0) {
-        snmp_log_perror("ioctl");
+        snmp_log_perror("netsnmp_ioctl_route_delete_v4: ioctl");
         rc = -4;
     }
+    close(s);
 
     return rc;
 }
diff --git a/agent/mibgroup/ip-forward-mib/data_access/route_linux.c b/agent/mibgroup/ip-forward-mib/data_access/route_linux.c
index 6bf6b04..0f80fe8 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;
+        int             refcnt, rc;
         uint32_t        dest, nexthop, mask;
-        unsigned        use;
+        unsigned        flags, use;
 
         entry = netsnmp_access_route_entry_create();
 
@@ -83,7 +83,7 @@
          * 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 
@@ -161,12 +161,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
 
@@ -201,7 +201,6 @@
     FILE           *in;
     char            line[256];
     netsnmp_route_entry *entry = NULL;
-    static int      log_open_err = 1;
 
     DEBUGMSGTL(("access:route:container",
                 "route_container_arch_load ipv6\n"));
@@ -212,18 +211,10 @@
      * fetch routes from the proc file-system:
      */
     if (!(in = fopen("/proc/net/ipv6_route", "r"))) {
-        if (1 == log_open_err) {
-            snmp_log(LOG_ERR, "cannot open /proc/net/ipv6_route\n");
-            log_open_err = 0;
-        }
+        DEBUGMSGTL(("9:access:route:container", "cannot open /proc/net/ipv6_route\n"));
         return -2;
     }
-    /*
-     * if we turned off logging of open errors, turn it back on now that
-     * we have been able to open the file.
-     */
-    if (0 == log_open_err)
-        log_open_err = 1;
+    
     fgets(line,sizeof(line),in); /* skip header */
     while (fgets(line, sizeof(line), in)) {
         char            c_name[IFNAMSIZ+1];
@@ -320,11 +311,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/data_access/route_solaris.c b/agent/mibgroup/ip-forward-mib/data_access/route_solaris.c
new file mode 100644
index 0000000..5d8ad22
--- /dev/null
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_solaris.c
@@ -0,0 +1,258 @@
+/*
+ *  Interface MIB architecture support
+ *
+ * $Id$
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include "mibII/mibII_common.h"
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/interface.h>
+#include <net-snmp/data_access/route.h>
+#include <net-snmp/data_access/ipaddress.h>
+
+#include <inet/ip.h>
+#include <inet/mib2.h>
+
+#include "ip-forward-mib/data_access/route_ioctl.h"
+#include "ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_constants.h"
+#include "if-mib/data_access/interface_ioctl.h"
+
+static int _load_v4(netsnmp_container *container, u_long *count);
+static int _load_v6(netsnmp_container *container, u_long *count);
+
+/** arch specific load
+ * @internal
+ *
+ * @retval  0 success
+ * @retval -1 no container specified
+ * @retval -2 could not open data file
+ */
+int
+netsnmp_access_route_container_arch_load(netsnmp_container* container,
+                                         u_int load_flags)
+{
+    u_long          count = 0;
+    int             rc;
+
+    DEBUGMSGTL(("access:route:container",
+                "route_container_arch_load (flags %x)\n", load_flags));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "no container specified/found for access_route\n");
+        return -1;
+    }
+
+    rc = _load_v4(container, &count);
+    
+#ifdef NETSNMP_ENABLE_IPV6
+    if((0 != rc) || (load_flags & NETSNMP_ACCESS_ROUTE_LOAD_IPV4_ONLY))
+        return rc;
+
+    /*
+     * load ipv6. ipv6 module might not be loaded,
+     * so ignore -2 err (file not found)
+     */
+    rc = _load_v6(container, &count);
+    if (-2 == rc)
+        rc = 0;
+#endif
+
+    return rc;
+}
+
+/*
+ * create a new entry
+ */
+int
+netsnmp_arch_route_create(netsnmp_route_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+
+    if (4 != entry->rt_dest_len) {
+        DEBUGMSGT(("access:route:create", "only ipv4 supported\n"));
+        return -2;
+    }
+
+    /* return _netsnmp_ioctl_route_set_v4(entry); */
+    return -2;
+}
+
+/*
+ * create a new entry
+ */
+int
+netsnmp_arch_route_delete(netsnmp_route_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+
+    if (4 != entry->rt_dest_len) {
+        DEBUGMSGT(("access:route:create", "only ipv4 supported\n"));
+        return -2;
+    }
+
+    /* return _netsnmp_ioctl_route_delete_v4(entry); */
+    return -2;
+}
+
+
+static int
+IP_Cmp_Route(void *addr, void *ep)
+{
+    mib2_ipRouteEntry_t *Ep = ep, *Addr = addr;
+
+    if ((Ep->ipRouteDest == Addr->ipRouteDest) &&
+        (Ep->ipRouteNextHop == Addr->ipRouteNextHop) &&
+        (Ep->ipRouteType == Addr->ipRouteType) &&
+        (Ep->ipRouteProto == Addr->ipRouteProto) &&
+        (Ep->ipRouteMask == Addr->ipRouteMask) &&
+        (Ep->ipRouteInfo.re_max_frag == Addr->ipRouteInfo.re_max_frag) &&
+        (Ep->ipRouteInfo.re_rtt == Addr->ipRouteInfo.re_rtt) &&
+        (Ep->ipRouteInfo.re_ref == Addr->ipRouteInfo.re_ref) &&
+        (Ep->ipRouteInfo.re_frag_flag == Addr->ipRouteInfo.re_frag_flag) &&
+        (Ep->ipRouteInfo.re_src_addr == Addr->ipRouteInfo.re_src_addr) &&
+        (Ep->ipRouteInfo.re_ire_type == Addr->ipRouteInfo.re_ire_type) &&
+        (Ep->ipRouteInfo.re_obpkt == Addr->ipRouteInfo.re_obpkt) &&
+        (Ep->ipRouteInfo.re_ibpkt == Addr->ipRouteInfo.re_ibpkt)
+        )
+        return (0);
+    else
+        return (1);             /* Not found */
+}
+
+
+static int
+IP6_Cmp_Route(void *addr, void *ep)
+{
+    mib2_ipv6RouteEntry_t *Ep = ep, *Addr = addr;
+
+    if ((memcmp(&Ep->ipv6RouteDest, &Addr->ipv6RouteDest, 16) == 0) &&
+        (memcmp(&Ep->ipv6RouteNextHop, &Addr->ipv6RouteNextHop, 16) == 0) &&
+        (Ep->ipv6RouteType == Addr->ipv6RouteType) &&
+        (Ep->ipv6RouteInfo.re_max_frag == Addr->ipv6RouteInfo.re_max_frag) &&
+        (Ep->ipv6RouteInfo.re_rtt == Addr->ipv6RouteInfo.re_rtt) &&
+        (Ep->ipv6RouteInfo.re_ref == Addr->ipv6RouteInfo.re_ref) &&
+        (Ep->ipv6RouteInfo.re_frag_flag == Addr->ipv6RouteInfo.re_frag_flag) &&
+        (memcmp(&Ep->ipv6RouteInfo.re_src_addr, &Addr->ipv6RouteInfo.re_src_addr, 16) == 0) &&
+        (Ep->ipv6RouteInfo.re_ire_type == Addr->ipv6RouteInfo.re_ire_type) &&
+        (Ep->ipv6RouteInfo.re_obpkt == Addr->ipv6RouteInfo.re_obpkt) &&
+        (Ep->ipv6RouteInfo.re_ibpkt == Addr->ipv6RouteInfo.re_ibpkt)
+        )
+        return (0);
+    else
+        return (1);             /* Not found */
+}
+
+
+static int _load_v4(netsnmp_container *container, u_long *count)
+{
+    netsnmp_route_entry *entry;
+    mib2_ipRouteEntry_t Curentry, Nextentry;
+    int req_type;
+
+    for (Nextentry.ipRouteDest = (u_long) -2, req_type = GET_FIRST;;
+             Nextentry = Curentry, req_type = GET_NEXT) {
+	if (getMibstat(MIB_IP_ROUTE, &Curentry, sizeof(mib2_ipRouteEntry_t),
+		       req_type, &IP_Cmp_Route, &Nextentry) != 0)
+	    break;
+#ifdef HAVE_DEFINED_IRE_CACHE
+	if (Curentry.ipRouteInfo.re_ire_type & IRE_CACHE)
+	    continue;
+#endif /* HAVE_DEFINED_IRE_CACHE */
+	if (Curentry.ipRouteInfo.re_ire_type & IRE_BROADCAST)
+	    continue;
+	entry = netsnmp_access_route_entry_create();
+	Curentry.ipRouteIfIndex.o_bytes[Curentry.ipRouteIfIndex.o_length] = '\0';
+	entry->if_index = netsnmp_access_interface_index_find(
+                Curentry.ipRouteIfIndex.o_bytes);
+	entry->ns_rt_index = entry->if_index;
+
+	entry->rt_dest_type = INETADDRESSTYPE_IPV4;
+	entry->rt_dest_len = 4;
+	memcpy(entry->rt_dest, &Curentry.ipRouteDest, 4);
+	memcpy(&entry->rt_mask, &Curentry.ipRouteMask, 4);
+
+	entry->rt_nexthop_type = INETADDRESSTYPE_IPV4;
+	entry->rt_nexthop_len = 4;
+	memcpy(entry->rt_nexthop, &Curentry.ipRouteNextHop, 4);
+
+	entry->rt_pfx_len = netsnmp_ipaddress_ipv4_prefix_len(Curentry.ipRouteMask);
+	entry->rt_type = Curentry.ipRouteType;
+	entry->rt_proto = Curentry.ipRouteProto;
+	entry->rt_age = Curentry.ipRouteAge;
+	entry->rt_metric1 = Curentry.ipRouteMetric1;
+	entry->rt_metric2 = Curentry.ipRouteMetric2;
+	entry->rt_metric3 = Curentry.ipRouteMetric3;
+	entry->rt_metric4 = Curentry.ipRouteMetric4;
+
+	/*
+	 * insert into container
+	 */
+	if (CONTAINER_INSERT(container, entry) < 0) {
+	    DEBUGMSGTL(("access:route:container", "error with route_entry: insert into container failed.\n"));
+	    netsnmp_access_route_entry_free(entry);
+	    continue;
+	}
+	*count++;
+    }
+    return 0;
+}
+
+
+static int _load_v6(netsnmp_container *container, u_long *count)
+{
+    netsnmp_route_entry *entry;
+    mib2_ipv6RouteEntry_t Curentry, Nextentry;
+    int req_type;
+
+    memset(&Nextentry, 0, sizeof(Nextentry));
+    for (req_type = GET_FIRST;;
+             Nextentry = Curentry, req_type = GET_NEXT) {
+	if (getMibstat(MIB_IP6_ROUTE, &Curentry, sizeof(mib2_ipv6RouteEntry_t),
+		       req_type, &IP6_Cmp_Route, &Nextentry) != 0)
+	    break;
+#ifdef HAVE_DEFINED_IRE_CACHE
+	if (Curentry.ipv6RouteInfo.re_ire_type & IRE_CACHE)
+	    continue;
+#endif /* HAVE_DEFINED_IRE_CACHE */
+	if (Curentry.ipv6RouteInfo.re_ire_type & IRE_BROADCAST)
+	    continue;
+	entry = netsnmp_access_route_entry_create();
+	Curentry.ipv6RouteIfIndex.o_bytes[Curentry.ipv6RouteIfIndex.o_length] = '\0';
+	entry->if_index = netsnmp_access_interface_index_find(
+                Curentry.ipv6RouteIfIndex.o_bytes);
+	entry->ns_rt_index = entry->if_index;
+
+	entry->rt_dest_type = INETADDRESSTYPE_IPV6;
+	entry->rt_dest_len = 16;
+	memcpy(entry->rt_dest, &Curentry.ipv6RouteDest, 16);
+
+	entry->rt_nexthop_type = INETADDRESSTYPE_IPV6;
+	entry->rt_nexthop_len = 16;
+	memcpy(entry->rt_nexthop, &Curentry.ipv6RouteNextHop, 16);
+
+	entry->rt_pfx_len = Curentry.ipv6RoutePfxLength;
+	entry->rt_type = Curentry.ipv6RouteType;
+	entry->rt_proto = Curentry.ipv6RouteProtocol;
+	entry->rt_age = Curentry.ipv6RouteAge;
+	entry->rt_policy = calloc(3, sizeof(oid));
+	entry->rt_policy_len = 3;
+	entry->rt_policy[2] = Curentry.ipv6RoutePolicy;
+	entry->rt_metric1 = Curentry.ipv6RouteMetric;
+	entry->rt_metric2 = Curentry.ipv6RouteWeight;
+
+	/*
+	 * insert into container
+	 */
+	if (CONTAINER_INSERT(container, entry) < 0) {
+	    DEBUGMSGTL(("access:route:container", "error with route_entry: insert into container failed.\n"));
+	    netsnmp_access_route_entry_free(entry);
+	    continue;
+	}
+	*count++;
+    }
+    return 0;
+}
diff --git a/agent/mibgroup/ip-forward-mib/data_access/route_sysctl.c b/agent/mibgroup/ip-forward-mib/data_access/route_sysctl.c
new file mode 100644
index 0000000..d4f926b
--- /dev/null
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_sysctl.c
@@ -0,0 +1,436 @@
+/*
+ *  Interface MIB architecture support
+ *
+ * $Id$
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include "mibII/mibII_common.h"
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/interface.h>
+#include <net-snmp/data_access/route.h>
+#include <net-snmp/data_access/ipaddress.h>
+#include <net/if_dl.h>
+
+#include "ip-forward-mib/data_access/route_sysctl.h"
+#include "ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_constants.h"
+#include "if-mib/data_access/interface_ioctl.h"
+
+static int _load_ipv4(netsnmp_container*, int*);
+static int _load_ipv6(netsnmp_container*, int*);
+static int _create_ipv4(netsnmp_route_entry *);
+static int _create_ipv6(netsnmp_route_entry *);
+static int _delete_ipv4(netsnmp_route_entry *);
+static int _delete_ipv6(netsnmp_route_entry *);
+
+#if !defined(SA_SIZE) && !defined(RT_ROUNDUP)
+#define RT_ROUNDUP(a)  \
+        ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
+#endif
+#ifndef SA_SIZE
+#define SA_SIZE(x) RT_ROUNDUP(((struct sockaddr *)(x))->sa_len)
+#endif
+
+/** arch specific load
+ * @internal
+ *
+ * @retval  0 success
+ * @retval -1 no container specified
+ * @retval -2 could not access data source
+ */
+int
+netsnmp_access_route_container_arch_load(netsnmp_container* container,
+					 u_int load_flags)
+{
+    int count, err;
+
+    err = 0;
+
+    DEBUGMSGTL(("access:route:container", "route_container_arch_load\n"));
+
+    if (container == NULL) {
+        snmp_log(LOG_ERR, "no container specified/found for access_route\n");
+        return -1;
+    }
+
+    err = _load_ipv4(container, &count);
+    if (err != 0) {
+        NETSNMP_LOGONCE((LOG_ERR, "_load_ipv4 failed %d\n", err));
+        goto out;
+    }
+
+    if (err != 0 || load_flags & NETSNMP_ACCESS_ROUTE_LOAD_IPV4_ONLY)
+	return err;
+
+    err = _load_ipv6(container, &count);
+    if (err != 0) {
+        NETSNMP_LOGONCE((LOG_ERR, "_load_ipv6 failed %d\n", err));
+        goto out;
+    }
+
+out:
+    return (err == 0 ? 0 : -3);
+}
+
+/** arch specific new route entry creation
+ * @internal
+ *
+ * @retval  0 success
+ * @retval -1 invalid entry specified
+ * @retval -2 could not create route entry
+ */
+int
+netsnmp_arch_route_create(netsnmp_route_entry *entry)
+{
+    int err;
+
+    if (NULL == entry)
+        return -1;
+
+    switch (entry->rt_dest_type) {
+    case INETADDRESSTYPE_IPV4:
+        err = _create_ipv4(entry);
+        break;
+#ifdef NETSNMP_ENABLE_IPV6
+    case INETADDRESSTYPE_IPV6:
+        err = _create_ipv6(entry);
+        break;
+#endif
+    default:
+        err = 0;
+    }
+
+    return (err == 0 ? 0 : -2);
+}
+
+/** arch specific new route entry deletion
+ * @internal
+ *
+ * @retval  0 success
+ * @retval -1 invalid entry specified
+ * @retval -2 could not delete route entry
+ */
+int
+netsnmp_arch_route_delete(netsnmp_route_entry *entry)
+{
+    int err;
+
+    DEBUGMSGTL(("access:route:container",
+                "route_container_arch_delete\n"));
+
+    if (NULL == entry)
+        return -1;
+
+    switch (entry->rt_dest_type) {
+    case INETADDRESSTYPE_IPV4:
+        err = _delete_ipv4(entry);
+        break;
+#ifdef NETSNMP_ENABLE_IPV6
+    case INETADDRESSTYPE_IPV6:
+        err = _delete_ipv6(entry);
+        break;
+#endif
+    default:
+        err = 0;
+    }
+
+    return (err == 0 ? 0 : -2);
+}
+
+#if defined(freebsd4) || defined(netbsd4) || defined(openbsd) || defined(darwin)
+static int
+_type_from_flags(int flags)
+{
+    if (flags & RTF_UP) {
+        if (flags & RTF_BLACKHOLE)
+            return INETCIDRROUTETYPE_REJECT;
+#ifdef RTF_LOCAL
+        else if (flags & RTF_LOCAL)
+            return INETCIDRROUTETYPE_LOCAL;
+#endif
+        else if (flags & RTF_GATEWAY)
+            return INETCIDRROUTETYPE_REMOTE;
+        else
+            return INETCIDRROUTETYPE_OTHER;
+    }
+    return 0;
+}
+
+
+static int
+_load_routing_table_from_sysctl(netsnmp_container* container, int *index,
+    int family)
+{
+    char *buf, *lim, *next;
+    int mib[6];
+    size_t needed;
+    int err;
+    u_char dest_len, dest_type;
+    struct rt_msghdr *rtm;
+
+    buf = NULL;
+    err = 0;
+
+    if (family == AF_INET) {
+        dest_len = 4;
+        dest_type = INETADDRESSTYPE_IPV4;
+    } else if (family == AF_INET6) {
+        dest_len = 16;
+        dest_type = INETADDRESSTYPE_IPV6;
+    } else {
+        err = EINVAL;
+        goto out;
+    }
+
+    mib[0] = CTL_NET;
+    mib[1] = PF_ROUTE;
+    mib[2] = 0;
+    mib[3] = family;
+    mib[4] = NET_RT_DUMP;
+    mib[5] = 0;
+
+    if (sysctl(mib, (sizeof(mib) / sizeof(mib[0])), NULL, &needed, NULL,
+        0) == -1) {
+        err = errno;
+        goto out;
+    }
+
+    if ((buf = malloc(needed)) == NULL) {
+        err = ENOMEM;
+        goto out;
+    }
+
+    if (sysctl(mib, (sizeof(mib) / sizeof(mib[0])), buf, &needed, NULL,
+        0) == -1) {
+        err = errno;
+        goto out;
+    }
+
+    lim = buf + needed;
+
+    for (next = buf; next < lim; next += rtm->rtm_msglen) {    
+	struct sockaddr *if_name = NULL, *if_addr = NULL;
+	struct sockaddr *dest_sa = NULL, *gateway_sa = NULL, *netmask_sa = NULL;
+	netsnmp_route_entry *entry;
+	char *addr_ptr;
+
+        rtm = (struct rt_msghdr*)next;
+
+        /* 
+         * Some code in netstat checks for this ("netmasks done" case).
+         * Filter this out (I don't know why it should exist).
+         */
+        if (rtm->rtm_addrs == RTA_DST)
+            continue;
+
+        entry = netsnmp_access_route_entry_create();
+        if (entry == NULL)
+            return -3;
+        memset(entry->rt_dest, 0, dest_len);
+        entry->rt_mask = 0;
+        memset(entry->rt_nexthop, 0, dest_len);
+
+        addr_ptr = (char *)(rtm + 1);
+
+	if (rtm->rtm_addrs &  RTA_DST) {
+	    dest_sa = (struct sockaddr *)addr_ptr;
+	    addr_ptr += SA_SIZE(dest_sa);
+	}
+	if (rtm->rtm_addrs &  RTA_GATEWAY) {
+	    gateway_sa = (struct sockaddr *)addr_ptr;
+	    addr_ptr += SA_SIZE(gateway_sa);
+	}
+	if (rtm->rtm_addrs &  RTA_NETMASK) {
+	    netmask_sa = (struct sockaddr *)addr_ptr;
+	    addr_ptr += SA_SIZE(netmask_sa);
+	}
+	if (rtm->rtm_addrs &  RTA_IFP) {
+	    if_name = (struct sockaddr *)addr_ptr;
+	    addr_ptr += SA_SIZE(if_name);
+	}
+	if (rtm->rtm_addrs &  RTA_IFA) {
+	    if_addr = (struct sockaddr *)addr_ptr;
+	    addr_ptr += SA_SIZE(if_addr);
+	}
+
+        entry->if_index = rtm->rtm_index;
+
+        /* arbitrary index */
+        entry->ns_rt_index = ++(*index);
+
+        /* copy dest & next hop */
+        entry->rt_dest_type = dest_type;
+        entry->rt_dest_len = dest_len;
+        if (rtm->rtm_addrs & RTA_DST) {
+            if (family == AF_INET)
+                memcpy(entry->rt_dest,
+                    &((struct sockaddr_in*)dest_sa)->sin_addr, dest_len);
+#ifdef NETSNMP_ENABLE_IPV6
+            if (family == AF_INET6)
+                memcpy(entry->rt_dest,
+                    &((struct sockaddr_in6*)dest_sa)->sin6_addr, dest_len);
+#endif
+        }
+
+        entry->rt_nexthop_type = dest_type;
+        entry->rt_nexthop_len = dest_len;
+        if (rtm->rtm_addrs & RTA_GATEWAY) {
+            if (family == AF_INET)
+                memcpy(entry->rt_nexthop,
+                    &((struct sockaddr_in*)gateway_sa)->sin_addr, dest_len);
+#ifdef NETSNMP_ENABLE_IPV6
+            if (family == AF_INET6)
+                memcpy(entry->rt_nexthop,
+                    &((struct sockaddr_in6*)gateway_sa)->sin6_addr, dest_len);
+#endif
+        }
+        else {
+            if (family == AF_INET)
+                memcpy(entry->rt_nexthop,
+                    &((struct sockaddr_in*)if_addr)->sin_addr, dest_len);
+#ifdef NETSNMP_ENABLE_IPV6
+            if (family == AF_INET6)
+                memcpy(entry->rt_nexthop,
+                    &((struct sockaddr_in6*)if_addr)->sin6_addr, dest_len);
+#endif
+        }
+
+        if (family == AF_INET) {
+	    if (netmask_sa) {
+            /* count bits in mask */
+		entry->rt_pfx_len = netsnmp_ipaddress_ipv4_prefix_len(
+			((struct sockaddr_in *)netmask_sa)->sin_addr.s_addr);
+		memcpy(&entry->rt_mask, &((struct sockaddr_in *)netmask_sa)->sin_addr, 4);
+	    }
+	    else {
+		entry->rt_pfx_len = 32;
+	    }
+        }
+#ifdef NETSNMP_ENABLE_IPV6
+        if (family == AF_INET6) {
+	    if (netmask_sa) {
+            /* count bits in mask */
+		entry->rt_pfx_len = netsnmp_ipaddress_ipv6_prefix_len(
+			((struct sockaddr_in6 *)netmask_sa)->sin6_addr);
+		memcpy(&entry->rt_mask, &((struct sockaddr_in6 *)netmask_sa)->sin6_addr, 16);
+	    }
+	    else {
+		entry->rt_pfx_len = 128;
+	    }
+        }
+#endif
+
+#ifdef USING_IP_FORWARD_MIB_INETCIDRROUTETABLE_INETCIDRROUTETABLE_MODULE
+        /*
+    inetCidrRoutePolicy OBJECT-TYPE 
+        SYNTAX     OBJECT IDENTIFIER 
+        MAX-ACCESS not-accessible 
+        STATUS     current 
+        DESCRIPTION 
+               "This object is an opaque object without any defined 
+                semantics.  Its purpose is to serve as an additional 
+                index which may delineate between multiple entries to 
+                the same destination.  The value { 0 0 } shall be used 
+                as the default value for this object."
+        */
+	entry->rt_policy = calloc(3, sizeof(oid));
+	entry->rt_policy[2] = entry->if_index;
+	entry->rt_policy_len = sizeof(oid)*3;
+#endif
+
+        entry->rt_type = _type_from_flags(rtm->rtm_flags);
+	entry->rt_age = rtm->rtm_rmx.rmx_expire;
+	entry->rt_nexthop_as = 0;
+	/* entry->rt_metric1 = rtm->rtm_rmx.rmx_hopcount; */
+
+        if (rtm->rtm_flags & RTF_DYNAMIC)
+            entry->rt_proto = IANAIPROUTEPROTOCOL_ICMP;
+        else if (rtm->rtm_flags & RTF_STATIC)
+            entry->rt_proto = IANAIPROUTEPROTOCOL_NETMGMT;
+#ifdef RTF_LOCAL
+        else if (rtm->rtm_flags & RTF_LOCAL)
+            entry->rt_proto = IANAIPROUTEPROTOCOL_LOCAL;
+#endif
+        else
+            entry->rt_proto = IANAIPROUTEPROTOCOL_OTHER;
+
+        if (CONTAINER_INSERT(container, entry) < 0) {
+            DEBUGMSGTL(("access:route:container",
+                "error with route_entry: insert into container failed.\n"));
+            netsnmp_access_route_entry_free(entry);
+            continue;
+        }
+    }
+
+out:
+    free(buf);
+
+    return err;
+}
+
+/**
+ * netsnmp_access_route_container_arch_load* functions.
+ */
+static int
+_load_ipv4(netsnmp_container* container, int *index)
+{
+
+    DEBUGMSGTL(("access:route:container",
+                "route_container_arch_load ipv4\n"));
+    return _load_routing_table_from_sysctl(container, index, AF_INET);
+}
+
+static int
+_load_ipv6(netsnmp_container* container, int *index)
+{
+
+#ifdef NETSNMP_ENABLE_IPV6
+    DEBUGMSGTL(("access:route:container",
+                "route_container_arch_load ipv6\n"));
+    return _load_routing_table_from_sysctl(container, index, AF_INET6);
+#else
+    return 0;
+#endif
+}
+
+/**
+ * netsnmp_access_route_create* functions.
+ *
+ * TODO: add logic similar to newroute(..) in sbin/route/route.c .
+ */
+static int
+_create_ipv4(netsnmp_route_entry *entry)
+{
+
+    return 0;
+}
+
+static int
+_create_ipv6(netsnmp_route_entry *entry)
+{
+
+    return 0;
+}
+
+/**
+ * netsnmp_access_route_delete* functions.
+ *
+ * TODO: add logic similar to newroute(..) in sbin/route/route.c .
+ */
+static int
+_delete_ipv4(netsnmp_route_entry *entry)
+{
+
+    return 0;
+}
+
+static int
+_delete_ipv6(netsnmp_route_entry *entry)
+{
+#ifdef NETSNMP_ENABLE_IPV6
+
+#endif
+    return 0;
+}
+#endif /* defined(freebsd7) || defined(netbsd) || defined(openbsd) */
diff --git a/agent/mibgroup/ip-forward-mib/data_access/route_sysctl.h b/agent/mibgroup/ip-forward-mib/data_access/route_sysctl.h
new file mode 100644
index 0000000..65eccc7
--- /dev/null
+++ b/agent/mibgroup/ip-forward-mib/data_access/route_sysctl.h
@@ -0,0 +1,9 @@
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <sys/sysctl.h>
+#include <sys/time.h>
+#include <net/if.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <errno.h>
+#include <ifaddrs.h>
diff --git a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
index 41b5c95..0f013ea 100644
--- a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
+++ b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.c
@@ -14,6 +14,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -26,8 +27,11 @@
 
 #include "inetCidrRouteTable_interface.h"
 
-oid             inetCidrRouteTable_oid[] = { INETCIDRROUTETABLE_OID };
-int             inetCidrRouteTable_oid_size =
+netsnmp_feature_require(inetCidrRouteTable_container_get)
+netsnmp_feature_require(inetCidrRouteTable_container_size)
+
+const oid       inetCidrRouteTable_oid[] = { INETCIDRROUTETABLE_OID };
+const int       inetCidrRouteTable_oid_size =
 OID_LENGTH(inetCidrRouteTable_oid);
 
 inetCidrRouteTable_registration inetCidrRouteTable_user_context;
@@ -410,25 +414,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 +452,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.h b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.h
index 8d90485..b8132e1 100644
--- a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.h
+++ b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable.h
@@ -217,8 +217,8 @@
         * inetCidrRouteTable_row_find_by_mib_index
         (inetCidrRouteTable_mib_index * mib_idx);
 
-    extern oid      inetCidrRouteTable_oid[];
-    extern int      inetCidrRouteTable_oid_size;
+    extern const oid      inetCidrRouteTable_oid[];
+    extern const int      inetCidrRouteTable_oid_size;
 
 
 #include "inetCidrRouteTable_interface.h"
diff --git a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_data_access.c b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_data_access.c
index 9462be7..beebb2c 100644
--- a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_data_access.c
+++ b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_data_access.c
@@ -263,7 +263,7 @@
         netsnmp_access_route_container_load(NULL,
                                             NETSNMP_ACCESS_ROUTE_LOAD_NOFLAGS);
     DEBUGMSGT(("verbose:inetCidrRouteTable:inetCidrRouteTable_cache_load",
-               "%d records\n", CONTAINER_SIZE(route_container)));
+               "%d records\n", (int)CONTAINER_SIZE(route_container)));
 
     if (NULL == route_container)
         return MFD_RESOURCE_UNAVAILABLE;        /* msg already logged */
@@ -283,7 +283,7 @@
                                         NETSNMP_ACCESS_ROUTE_FREE_DONT_CLEAR);
 
     DEBUGMSGT(("verbose:inetCidrRouteTable:inetCidrRouteTable_cache_load",
-               "%d records\n", CONTAINER_SIZE(container)));
+               "%d records\n", (int)CONTAINER_SIZE(container)));
 
     return MFD_SUCCESS;
 }                               /* inetCidrRouteTable_container_load */
diff --git a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c
index f485360..5df46b6 100644
--- a/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c
+++ b/agent/mibgroup/ip-forward-mib/inetCidrRouteTable/inetCidrRouteTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,16 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(inetCidrRouteTable_external_access, libnetsnmpmibs)
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(table_container_row_insert)
+netsnmp_feature_require(check_all_requests_error)
+
+netsnmp_feature_child_of(inetCidrRouteTable_container_size, inetCidrRouteTable_external_access)
+netsnmp_feature_child_of(inetCidrRouteTable_registration_set, inetCidrRouteTable_external_access)
+netsnmp_feature_child_of(inetCidrRouteTable_registration_get, inetCidrRouteTable_external_access)
+netsnmp_feature_child_of(inetCidrRouteTable_container_get, inetCidrRouteTable_external_access)
 /**********************************************************************
  **********************************************************************
  ***
@@ -82,19 +93,23 @@
                 _inetCidrRouteTable_container_shutdown(inetCidrRouteTable_interface_ctx *
                                                        if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_CONTAINER_GET
 netsnmp_container *
 inetCidrRouteTable_container_get(void)
 {
     return inetCidrRouteTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_REGISTRATION_GET
 inetCidrRouteTable_registration *
 inetCidrRouteTable_registration_get(void)
 {
     return inetCidrRouteTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_REGISTRATION_SET
 inetCidrRouteTable_registration *
 inetCidrRouteTable_registration_set(inetCidrRouteTable_registration *
                                     newreg)
@@ -104,12 +119,15 @@
     inetCidrRouteTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_CONTAINER_SIZE
 int
 inetCidrRouteTable_container_size(void)
 {
     return CONTAINER_SIZE(inetCidrRouteTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_CONTAINER_SIZE */
 
 u_int
 inetCidrRouteTable_dirty_get(void)
@@ -140,7 +158,7 @@
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_post_request;
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_object_lookup;
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_get_values;
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_check_objects;
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_undo_setup;
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_set_values;
@@ -150,12 +168,10 @@
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_undo_commit;
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_irreversible_commit;
 static Netsnmp_Node_Handler _mfd_inetCidrRouteTable_check_dependencies;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 NETSNMP_STATIC_INLINE int
-                _inetCidrRouteTable_check_indexes(inetCidrRouteTable_rowreq_ctx *
-                                                  rowreq_ctx);
-
+                _inetCidrRouteTable_check_indexes(inetCidrRouteTable_rowreq_ctx * rowreq_ctx);
 /**
  * @internal
  * Initialize the table inetCidrRouteTable 
@@ -199,7 +215,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;
@@ -239,7 +255,7 @@
         _mfd_inetCidrRouteTable_post_request;
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /*
      * REQUIRED wrappers for set request handling
      */
@@ -264,7 +280,7 @@
      */
     access_multiplexer->consistency_checks =
         _mfd_inetCidrRouteTable_check_dependencies;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     /*************************************************
      *
@@ -300,7 +316,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -323,7 +339,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -793,7 +809,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;
 
@@ -911,7 +927,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"));
@@ -1105,7 +1121,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;
@@ -1212,6 +1228,8 @@
     if (MFD_SUCCESS != rc)
         return SNMP_ERR_NOCREATION;
 
+    /* MORE CHECKING REQUIRED */
+
     /*
      * (INDEX) inetCidrRouteDest(2)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h 
      */
@@ -1310,7 +1328,7 @@
                                              user_ctx, rowreq_ctx);
 }                               /* _inetCidrRouteTable_check_indexes */
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -1615,7 +1633,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;
@@ -1663,7 +1681,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"));
 
@@ -1785,7 +1803,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"));
@@ -1850,7 +1868,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;
 
@@ -2005,7 +2023,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;
@@ -2053,7 +2071,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"));
@@ -2087,7 +2105,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"));
@@ -2133,7 +2151,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"));
@@ -2167,7 +2185,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"));
@@ -2194,7 +2212,7 @@
 
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_inetCidrRouteTable_irreversible_commit */
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /***********************************************************************
  *
@@ -2328,9 +2346,11 @@
         }
     }
 
-    /* set allow duplicates this makes insert O(1) */
-    netsnmp_binary_array_options_set(if_ctx->container, 1,
-                                     CONTAINER_KEY_ALLOW_DUPLICATES);
+    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;
@@ -2353,6 +2373,7 @@
 }                               /* _inetCidrRouteTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_EXTERNAL_ACCESS
 inetCidrRouteTable_rowreq_ctx *
 inetCidrRouteTable_row_find_by_mib_index(inetCidrRouteTable_mib_index *
                                          mib_idx)
@@ -2375,8 +2396,9 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (inetCidrRouteTable_rowreq_ctx*)
         CONTAINER_FIND(inetCidrRouteTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETCIDRROUTETABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c b/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c
index 75fde88..0ff00c1 100644
--- a/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c
+++ b/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.c
@@ -26,8 +26,8 @@
 
 #include "ipCidrRouteTable_interface.h"
 
-oid             ipCidrRouteTable_oid[] = { IPCIDRROUTETABLE_OID };
-int             ipCidrRouteTable_oid_size =
+const oid       ipCidrRouteTable_oid[] = { IPCIDRROUTETABLE_OID };
+const int       ipCidrRouteTable_oid_size =
 OID_LENGTH(ipCidrRouteTable_oid);
 
 ipCidrRouteTable_registration ipCidrRouteTable_user_context;
@@ -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.h b/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.h
index 4969480..2ce30be 100644
--- a/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.h
+++ b/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable.h
@@ -194,8 +194,8 @@
         * ipCidrRouteTable_row_find_by_mib_index(ipCidrRouteTable_mib_index
                                                  * mib_idx);
 
-    extern oid      ipCidrRouteTable_oid[];
-    extern int      ipCidrRouteTable_oid_size;
+    extern const oid      ipCidrRouteTable_oid[];
+    extern const int      ipCidrRouteTable_oid_size;
 
 
 #include "ipCidrRouteTable_interface.h"
diff --git a/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_data_access.c b/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_data_access.c
index c27d0aa..bb27675 100644
--- a/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_data_access.c
+++ b/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_data_access.c
@@ -270,7 +270,7 @@
                                         NETSNMP_ACCESS_ROUTE_FREE_DONT_CLEAR);
 
     DEBUGMSGT(("verbose:ipCidrRouteTable:ipCidrRouteTable_cache_load",
-               "%d records\n", CONTAINER_SIZE(container)));
+               "%d records\n", (int)CONTAINER_SIZE(container)));
 
     return MFD_SUCCESS;
 }                               /* ipCidrRouteTable_container_load */
diff --git a/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c b/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c
index d051c25..45f8483 100644
--- a/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c
+++ b/agent/mibgroup/ip-forward-mib/ipCidrRouteTable/ipCidrRouteTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,17 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(ipCidrRouteTable_external_access, libnetsnmpmibs)
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(table_container_row_insert)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(ipCidrRouteTable_container_size, ipCidrRouteTable_external_access)
+netsnmp_feature_child_of(ipCidrRouteTable_registration_set, ipCidrRouteTable_external_access)
+netsnmp_feature_child_of(ipCidrRouteTable_registration_get, ipCidrRouteTable_external_access)
+netsnmp_feature_child_of(ipCidrRouteTable_container_get, ipCidrRouteTable_external_access)
 /**********************************************************************
  **********************************************************************
  ***
@@ -81,19 +93,23 @@
                 _ipCidrRouteTable_container_shutdown(ipCidrRouteTable_interface_ctx *
                                                      if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_CONTAINER_GET
 netsnmp_container *
 ipCidrRouteTable_container_get(void)
 {
     return ipCidrRouteTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_REGISTRATION_GET
 ipCidrRouteTable_registration *
 ipCidrRouteTable_registration_get(void)
 {
     return ipCidrRouteTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_REGISTRATION_SET
 ipCidrRouteTable_registration *
 ipCidrRouteTable_registration_set(ipCidrRouteTable_registration * newreg)
 {
@@ -101,12 +117,15 @@
     ipCidrRouteTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_CONTAINER_SIZE
 int
 ipCidrRouteTable_container_size(void)
 {
     return CONTAINER_SIZE(ipCidrRouteTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_CONTAINER_SIZE */
 
 u_int
 ipCidrRouteTable_dirty_get(void)
@@ -130,7 +149,7 @@
 static Netsnmp_Node_Handler _mfd_ipCidrRouteTable_post_request;
 static Netsnmp_Node_Handler _mfd_ipCidrRouteTable_object_lookup;
 static Netsnmp_Node_Handler _mfd_ipCidrRouteTable_get_values;
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 static Netsnmp_Node_Handler _mfd_ipCidrRouteTable_check_objects;
 static Netsnmp_Node_Handler _mfd_ipCidrRouteTable_undo_setup;
 static Netsnmp_Node_Handler _mfd_ipCidrRouteTable_set_values;
@@ -144,7 +163,7 @@
                 _ipCidrRouteTable_undo_column(ipCidrRouteTable_rowreq_ctx * rowreq_ctx,
                                               netsnmp_variable_list * var,
                                               int column);
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 NETSNMP_STATIC_INLINE int
                 _ipCidrRouteTable_check_indexes(ipCidrRouteTable_rowreq_ctx * rowreq_ctx);
@@ -188,7 +207,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;
@@ -227,7 +246,7 @@
     access_multiplexer->post_request = _mfd_ipCidrRouteTable_post_request;
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /*
      * REQUIRED wrappers for set request handling
      */
@@ -245,7 +264,7 @@
     access_multiplexer->undo_commit = _mfd_ipCidrRouteTable_undo_commit;
     access_multiplexer->irreversible_commit =
         _mfd_ipCidrRouteTable_irreversible_commit;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     /*************************************************
      *
@@ -278,7 +297,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -301,7 +320,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -672,7 +691,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 +810,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 +1041,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;
@@ -1151,7 +1170,7 @@
                                            user_ctx, rowreq_ctx);
 }                               /* _ipCidrRouteTable_check_indexes */
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -1456,7 +1475,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 +1630,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 +1694,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 +1859,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 +1907,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 +1941,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 +2083,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 +2137,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"));
@@ -2145,7 +2164,7 @@
 
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_ipCidrRouteTable_irreversible_commit */
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /***********************************************************************
  *
@@ -2277,6 +2296,8 @@
         }
     }
 
+    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);
@@ -2302,6 +2323,7 @@
 }                               /* _ipCidrRouteTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_EXTERNAL_ACCESS
 ipCidrRouteTable_rowreq_ctx *
 ipCidrRouteTable_row_find_by_mib_index(ipCidrRouteTable_mib_index *
                                        mib_idx)
@@ -2324,8 +2346,9 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (ipCidrRouteTable_rowreq_ctx*)
         CONTAINER_FIND(ipCidrRouteTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPCIDRROUTETABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/ip-mib.h b/agent/mibgroup/ip-mib.h
index b45cbb4..4e8317f 100644
--- a/agent/mibgroup/ip-mib.h
+++ b/agent/mibgroup/ip-mib.h
@@ -3,7 +3,13 @@
  */
 
 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);
+#ifdef linux
+config_require(ip-mib/ipv6ScopeZoneIndexTable);
+config_require(ip-mib/ipIfStatsTable);
+#endif
 config_add_mib(IP-MIB)
diff --git a/agent/mibgroup/ip-mib/data_access/arp.h b/agent/mibgroup/ip-mib/data_access/arp.h
index 70a473c..648cb28 100644
--- a/agent/mibgroup/ip-mib/data_access/arp.h
+++ b/agent/mibgroup/ip-mib/data_access/arp.h
@@ -18,13 +18,16 @@
  *    be handled in the *_hpux.h header file.
  */
 config_require(ip-mib/data_access/arp_common)
-#if defined( linux )
+#if defined( HAVE_LINUX_RTNETLINK_H )
+config_require(ip-mib/data_access/arp_netlink)
+#elif defined( linux )
 config_require(ip-mib/data_access/arp_linux)
+#elif defined( freebsd7 ) || defined ( netbsd5 ) || defined( openbsd4 ) || defined( dragonfly ) || defined( darwin )
+config_require(ip-mib/data_access/arp_sysctl)
 #else
 /*
  * couldn't determine the correct file!
- * require a bogus file to generate an error.
  */
-config_require(ip-mib/data_access/arp-unknown-arch)
+config_error(the arp data access library is not available in this environment.)
 #endif
 
diff --git a/agent/mibgroup/ip-mib/data_access/arp_common.c b/agent/mibgroup/ip-mib/data_access/arp_common.c
index c0cc680..2958719 100644
--- a/agent/mibgroup/ip-mib/data_access/arp_common.c
+++ b/agent/mibgroup/ip-mib/data_access/arp_common.c
@@ -11,99 +11,6 @@
 
 /**---------------------------------------------------------------------*/
 /*
- * local static prototypes
- */
-static void _access_arp_entry_release(netsnmp_arp_entry * entry,
-                                      void *unused);
-
-/**---------------------------------------------------------------------*/
-/*
- * external per-architecture functions prototypes
- *
- * These shouldn't be called by the general public, so they aren't in
- * the header file.
- */
-extern int
-netsnmp_access_arp_container_arch_load(netsnmp_container* container,
-                                       u_int load_flags);
-
-
-/**---------------------------------------------------------------------*/
-/*
- * container functions
- */
-/**
- */
-netsnmp_container *
-netsnmp_access_arp_container_init(u_int flags)
-{
-    netsnmp_container *container1;
-
-    DEBUGMSGTL(("access:arp:container", "init\n"));
-
-    /*
-     * create the containers. one indexed by ifIndex, the other
-     * indexed by ifName.
-     */
-    container1 = netsnmp_container_find("access_arp:table_container");
-    if (NULL == container1)
-        return NULL;
-    return container1;
-}
-
-/**
- * @retval NULL  error
- * @retval !NULL pointer to container
- */
-netsnmp_container*
-netsnmp_access_arp_container_load(netsnmp_container* container, u_int load_flags)
-{
-    int rc;
-
-    DEBUGMSGTL(("access:arp:container", "load\n"));
-
-    if (NULL == container)
-        container = netsnmp_container_find("access:arp:table_container");
-    if (NULL == container) {
-        snmp_log(LOG_ERR, "no container specified/found for access_arp\n");
-        return NULL;
-    }
-
-    rc =  netsnmp_access_arp_container_arch_load(container, load_flags);
-    if (0 != rc) {
-        netsnmp_access_arp_container_free(container,
-                                          NETSNMP_ACCESS_ARP_FREE_NOFLAGS);
-        container = NULL;
-    }
-
-    return container;
-}
-
-void
-netsnmp_access_arp_container_free(netsnmp_container *container, u_int free_flags)
-{
-    DEBUGMSGTL(("access:arp:container", "free\n"));
-
-    if (NULL == container) {
-        snmp_log(LOG_ERR, "invalid container for netsnmp_access_arp_free\n");
-        return;
-    }
-
-    if(! (free_flags & NETSNMP_ACCESS_ARP_FREE_DONT_CLEAR)) {
-        /*
-         * free all items.
-         */
-        CONTAINER_CLEAR(container,
-                        (netsnmp_container_obj_func*)_access_arp_entry_release,
-                        NULL);
-    }
-
-    if(! (free_flags & NETSNMP_ACCESS_ARP_FREE_KEEP_CONTAINER))
-        CONTAINER_FREE(container);
-}
-
-/**---------------------------------------------------------------------*/
-/*
  * arp_entry functions
  */
 /**
@@ -137,9 +44,40 @@
  */
 
 /**
+ * Update given entry with new data. Calculate new arp_last_updated, if any
+ * field is changed.
  */
-void
-_access_arp_entry_release(netsnmp_arp_entry * entry, void *context)
+void netsnmp_access_arp_entry_update(netsnmp_arp_entry *entry,
+        netsnmp_arp_entry *new_data)
 {
-    netsnmp_access_arp_entry_free(entry);
+    int modified = 0;
+
+    entry->generation = new_data->generation;
+    if (entry->arp_ipaddress_len != new_data->arp_ipaddress_len
+            || memcmp(entry->arp_ipaddress, new_data->arp_ipaddress, entry->arp_ipaddress_len) != 0 ) {
+        modified = 1;
+        entry->arp_ipaddress_len = new_data->arp_ipaddress_len;
+        memcpy(entry->arp_ipaddress, new_data->arp_ipaddress, sizeof(entry->arp_ipaddress));
+    }
+    if (entry->arp_physaddress_len != new_data->arp_physaddress_len ||
+            memcmp(entry->arp_physaddress, new_data->arp_physaddress, entry->arp_physaddress_len) != 0) {
+         modified = 1;
+         entry->arp_physaddress_len = new_data->arp_physaddress_len;
+         memcpy(entry->arp_physaddress, new_data->arp_physaddress, sizeof(entry->arp_physaddress_len));
+     }
+    if (entry->arp_state != new_data->arp_state) {
+         modified = 1;
+         entry->arp_state = new_data->arp_state;
+     }
+    if (entry->arp_type != new_data->arp_type) {
+         modified = 1;
+         entry->arp_type = new_data->arp_type;
+     }
+    if (entry->flags != new_data->flags) {
+         modified = 1;
+         entry->flags = new_data->flags;
+     }
+
+    if (modified)
+        entry->arp_last_updated = netsnmp_get_agent_uptime();
 }
diff --git a/agent/mibgroup/ip-mib/data_access/arp_linux.c b/agent/mibgroup/ip-mib/data_access/arp_linux.c
index 75d94c0..a2fa49a 100644
--- a/agent/mibgroup/ip-mib/data_access/arp_linux.c
+++ b/agent/mibgroup/ip-mib/data_access/arp_linux.c
@@ -1,7 +1,5 @@
 /*
  *  Interface MIB architecture support
- *
- * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
 #include <net-snmp/net-snmp-includes.h>
@@ -14,46 +12,76 @@
 #include <netinet/in.h>
 #include <net/if_arp.h>
 #include <arpa/inet.h>
+#include <linux/types.h>
+#include <asm/types.h>
 
-int _load_v4(netsnmp_container *container, int idx_offset);
+static int _load_v4(netsnmp_arp_access *access);
 
-/**
- */
-int
-netsnmp_access_arp_container_arch_load(netsnmp_container *container)
+netsnmp_arp_access *
+netsnmp_access_arp_create(u_int init_flags,
+                          NetsnmpAccessArpUpdate *update_hook,
+                          NetsnmpAccessArpGC *gc_hook,
+                          int *cache_timeout, int *cache_flags,
+                          char *cache_expired)
 {
-    int rc = 0, idx_offset = 0;
+    netsnmp_arp_access *access;
 
-    rc = _load_v4(container, idx_offset);
-    if(rc < 0) {
-        u_int flags = NETSNMP_ACCESS_ARP_FREE_KEEP_CONTAINER;
-        netsnmp_access_arp_container_free(container, flags);
-        return rc;
+    access = SNMP_MALLOC_TYPEDEF(netsnmp_arp_access);
+    if (NULL == access) {
+        snmp_log(LOG_ERR,"malloc error in netsnmp_access_arp_create\n");
+        return NULL;
     }
 
-#if defined (NETSNMP_ENABLE_IPV6) && 0 /* xx-rks: arp for v6? */
-    idx_offset = rc;
+    access->arch_magic = NULL;
+    access->magic = NULL;
+    access->update_hook = update_hook;
+    access->gc_hook = gc_hook;
+    access->synchronized = 0;
 
-    rc = _load_v6(container, idx_offset);
-    if(rc < 0) {
-        u_int flags = NETSNMP_ACCESS_ARP_FREE_KEEP_CONTAINER;
-        netsnmp_access_arp_container_free(container, flags);
-    }
-#endif
+    if (cache_timeout != NULL)
+        *cache_timeout = 5;
+    if (cache_flags != NULL)
+        *cache_flags |= NETSNMP_CACHE_DONT_FREE_BEFORE_LOAD
+                        | NETSNMP_CACHE_AUTO_RELOAD;
+    access->cache_expired = cache_expired;
 
-    /*
-     * return no errors (0) if we found any interfaces
-     */
-    if(rc > 0)
-        rc = 0;
+    return access;
+}
+
+int netsnmp_access_arp_delete(netsnmp_arp_access *access)
+{
+    if (NULL == access)
+        return 0;
+
+    netsnmp_access_arp_unload(access);
+    free(access);
+
+    return 0;
+}
+
+int netsnmp_access_arp_load(netsnmp_arp_access *access)
+{
+    int rc = 0;
+
+    access->generation++;
+    rc =_load_v4(access);
+    access->gc_hook(access);
+    access->synchronized = (rc == 0);
 
     return rc;
 }
 
+int netsnmp_access_arp_unload(netsnmp_arp_access *access)
+{
+    access->synchronized = 0;
+
+    return 0;
+}
+
 /**
  */
-int
-_load_v4(netsnmp_container *container, int idx_offset)
+static int
+_load_v4(netsnmp_arp_access *access)
 {
     FILE           *in;
     char            line[128];
@@ -63,11 +91,11 @@
     char           *arp_token;
     int             i;
 
-    netsnmp_assert(NULL != container);
+    netsnmp_assert(NULL != access);
 
 #define PROCFILE "/proc/net/arp"
     if (!(in = fopen(PROCFILE, "r"))) {
-        snmp_log(LOG_ERR,"could not open " PROCFILE "\n");
+        snmp_log(LOG_DEBUG,"could not open " PROCFILE "\n");
         return -2;
     }
 
@@ -83,7 +111,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,
@@ -110,6 +138,7 @@
         /*
          * look up ifIndex
          */
+        entry->generation = access->generation;
         entry->if_index = netsnmp_access_interface_index_find(ifname);
         if(0 == entry->if_index) {
             snmp_log(LOG_ERR,"couldn't find ifIndex for '%s', skipping\n",
@@ -122,7 +151,7 @@
          * now that we've passed all the possible 'continue', assign
          * index offset.
          */
-        entry->ns_arp_index = ++idx_offset;
+        /* entry->ns_arp_index = ++idx_offset; */
 
         /*
          * parse ip addr
@@ -177,17 +206,9 @@
         /*
          * add entry to container
          */
-        if (CONTAINER_INSERT(container, entry) < 0)
-        {
-            DEBUGMSGTL(("access:arp:container","error with arp_entry: insert into container failed.\n"));
-            netsnmp_access_arp_entry_free(entry);
-            continue;
-        }
+        access->update_hook(access, entry);
     }
 
     fclose(in);
-    if( rc < 0 )
-        return rc;
-
-    return idx_offset;
+    return 0;
 }
diff --git a/agent/mibgroup/ip-mib/data_access/arp_netlink.c b/agent/mibgroup/ip-mib/data_access/arp_netlink.c
new file mode 100644
index 0000000..2059c23
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/arp_netlink.c
@@ -0,0 +1,304 @@
+/*
+ *  Interface MIB architecture support
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/arp.h>
+#include <net-snmp/data_access/interface.h>
+
+#include <errno.h>
+#include <sys/types.h>
+#include <linux/types.h>
+#include <linux/rtnetlink.h>
+
+
+static int fillup_entry_info(netsnmp_arp_entry *entry, struct nlmsghdr *h);
+static void netsnmp_access_arp_read_netlink(int fd, void *data);
+
+/**
+ */
+netsnmp_arp_access *
+netsnmp_access_arp_create(u_int init_flags,
+                          NetsnmpAccessArpUpdate *update_hook,
+                          NetsnmpAccessArpGC *gc_hook,
+                          int *cache_timeout, int *cache_flags,
+                          char *cache_expired)
+{
+    netsnmp_arp_access *access;
+
+    access = SNMP_MALLOC_TYPEDEF(netsnmp_arp_access);
+    if (NULL == access) {
+        snmp_log(LOG_ERR,"malloc error in netsnmp_access_arp_create\n");
+        return NULL;
+    }
+
+    access->arch_magic = NULL;
+    access->magic = NULL;
+    access->update_hook = update_hook;
+    access->gc_hook = gc_hook;
+    access->synchronized = 0;
+
+    if (cache_timeout != NULL)
+        *cache_timeout = 5;
+    if (cache_flags != NULL)
+        *cache_flags |= NETSNMP_CACHE_RESET_TIMER_ON_USE | NETSNMP_CACHE_DONT_FREE_BEFORE_LOAD;
+    access->cache_expired = cache_expired;
+
+    DEBUGMSGTL(("access:netlink:arp", "create arp cache\n"));
+
+    return access;
+}
+
+int netsnmp_access_arp_delete(netsnmp_arp_access *access)
+{
+    if (NULL == access)
+        return 0;
+
+    netsnmp_access_arp_unload(access);
+    free(access);
+
+    return 0;
+}
+
+int netsnmp_access_arp_load(netsnmp_arp_access *access)
+{
+    int r, fd = (uintptr_t) access->arch_magic;
+    struct {
+        struct nlmsghdr n;
+        struct ndmsg r;
+    } req;
+
+    if (access->synchronized)
+        return 0;
+
+    if (fd == 0) {
+        struct sockaddr_nl sa;
+
+        fd = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);
+        if (fd < 0) {
+            snmp_log(LOG_ERR,"netsnmp_access_arp_load: netlink socket create error\n");
+            return -1;
+        }
+        access->arch_magic = (void *)(uintptr_t)fd;
+
+        memset(&sa, 0, sizeof(sa));
+        sa.nl_family = AF_NETLINK;
+        sa.nl_groups = RTMGRP_NEIGH;
+        if (bind(fd, (struct sockaddr*) &sa, sizeof(sa)) < 0) {
+            snmp_log(LOG_ERR,"netsnmp_access_arp_load: netlink bind failed\n");
+            return -1;
+        }
+
+        if (register_readfd(fd, netsnmp_access_arp_read_netlink, access) != 0) {
+            snmp_log(LOG_ERR,"netsnmp_access_arp_load: error registering netlink socket\n");
+            return -1;
+        }
+    }
+
+    DEBUGMSGTL(("access:netlink:arp", "synchronizing arp table\n"));
+
+    access->generation++;
+
+    memset(&req, 0, sizeof(req));
+    req.n.nlmsg_len = sizeof(req);
+    req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_ROOT;
+    req.n.nlmsg_type = RTM_GETNEIGH;
+    req.r.ndm_family = AF_UNSPEC;
+
+    r = send(fd, &req, req.n.nlmsg_len, 0);
+    if (r < 0) {
+        snmp_log(LOG_ERR,"netsnmp_access_arp_refresh: send failed\n");
+        return -1;
+    }
+
+    while (!access->synchronized)
+        netsnmp_access_arp_read_netlink(fd, access);
+    access->gc_hook(access);
+
+    return 0;
+}
+
+int netsnmp_access_arp_unload(netsnmp_arp_access *access)
+{
+    int fd;
+
+    DEBUGMSGTL(("access:netlink:arp", "unload arp cache\n"));
+
+    fd = (uintptr_t) access->arch_magic;
+    if (fd > 0) {
+         unregister_readfd(fd);
+         close(fd);
+         access->arch_magic = NULL;
+	 access->synchronized = 0;
+    }
+    return 0;
+}
+
+static void netsnmp_access_arp_read_netlink(int fd, void *data)
+{
+    netsnmp_arp_access *access = (netsnmp_arp_access *) data;
+    netsnmp_arp_entry *entry;
+    char buf[16384];
+    struct nlmsghdr *h;
+    int r, len;
+
+    do {
+        r = recv(fd, buf, sizeof(buf), MSG_DONTWAIT);
+        if (r < 0) {
+            if (errno == EINTR)
+                continue;
+            if (errno == EAGAIN)
+                return;
+            snmp_log(LOG_WARNING, "netlink buffer overrun\n");
+            access->synchronized = 0;
+            if (access->cache_expired != NULL)
+		*access->cache_expired = 1;
+            return;
+        }
+    } while (0);
+    len = r;
+
+    for (h = (struct nlmsghdr *) buf; NLMSG_OK(h, len); h = NLMSG_NEXT(h, len)) {
+         if (h->nlmsg_type == NLMSG_DONE) {
+             access->synchronized = 1;
+             continue;
+         }
+
+         entry = netsnmp_access_arp_entry_create();
+         if (NULL == entry)
+             break;
+
+         DEBUGMSGTL(("access:netlink:arp", "arp netlink notification\n"));
+    
+         entry->generation = access->generation;
+         r = fillup_entry_info (entry, h);
+         if (r > 0) {
+             access->update_hook(access, entry);
+         } else {
+             if (r < 0) {
+                 NETSNMP_LOGONCE((LOG_ERR, "filling entry info failed\n"));
+                 DEBUGMSGTL(("access:netlink:arp", "filling entry info failed\n"));
+             }
+             netsnmp_access_arp_entry_free(entry);
+         }
+    }
+}
+
+static int
+fillup_entry_info(netsnmp_arp_entry *entry, struct nlmsghdr *nlmp)
+{
+    struct ndmsg   *rtmp;
+    struct rtattr  *tb[NDA_MAX + 1], *rta;
+    int             length;
+
+    rtmp = (struct ndmsg *) NLMSG_DATA(nlmp);
+    switch (nlmp->nlmsg_type) {
+    case RTM_NEWNEIGH:
+        if (rtmp->ndm_state == NUD_FAILED)
+            entry->flags = NETSNMP_ACCESS_ARP_ENTRY_FLAG_DELETE;
+        else
+            entry->flags = 0;
+        break;
+    case RTM_DELNEIGH:
+        entry->flags = NETSNMP_ACCESS_ARP_ENTRY_FLAG_DELETE;
+        break;
+    case RTM_GETNEIGH:
+        return 0;
+    default:
+        DEBUGMSGTL(("access:netlink:arp",
+                    "Wrong Netlink message type %d\n", nlmp->nlmsg_type));
+        return -1;
+    }
+
+    if (rtmp->ndm_state == NUD_NOARP) {
+        /* NUD_NOARP is for broadcast addresses and similar,
+         * drop them silently */
+        return 0;
+    }
+
+    memset(tb, 0, sizeof(struct rtattr *) * (NDA_MAX + 1));
+    length = nlmp->nlmsg_len - NLMSG_LENGTH(sizeof(*rtmp));
+    rta = ((struct rtattr *) (((char *) (rtmp)) + NLMSG_ALIGN(sizeof(struct ndmsg))));
+    while (RTA_OK(rta, length)) {
+        if (rta->rta_type <= NDA_MAX)
+            tb[rta->rta_type] = rta;
+        rta = RTA_NEXT(rta, length);
+    }
+
+    /*
+     * Fill up the index and addresses
+     */
+    entry->if_index = rtmp->ndm_ifindex;
+    if (tb[NDA_DST]) {
+        entry->arp_ipaddress_len = RTA_PAYLOAD(tb[NDA_DST]);
+        if (entry->arp_ipaddress_len > sizeof(entry->arp_ipaddress)) {
+            snmp_log(LOG_ERR, "netlink ip address length %d is too long\n",
+                     entry->arp_ipaddress_len);
+            return -1;
+        }
+        memcpy(entry->arp_ipaddress, RTA_DATA(tb[NDA_DST]),
+       entry->arp_ipaddress_len);
+    }
+    if (tb[NDA_LLADDR]) {
+        entry->arp_physaddress_len = RTA_PAYLOAD(tb[NDA_LLADDR]);
+        if (entry->arp_physaddress_len > sizeof(entry->arp_physaddress)) {
+            snmp_log(LOG_ERR, "netlink hw address length %d is too long\n",
+                     entry->arp_physaddress_len);
+            return -1;
+        }
+        memcpy(entry->arp_physaddress, RTA_DATA(tb[NDA_LLADDR]),
+               entry->arp_physaddress_len);
+    }
+
+    switch (rtmp->ndm_state) {
+    case NUD_INCOMPLETE:
+        entry->arp_state = INETNETTOMEDIASTATE_INCOMPLETE;
+        break;
+    case NUD_REACHABLE:
+    case NUD_PERMANENT:
+        entry->arp_state = INETNETTOMEDIASTATE_REACHABLE;
+        break;
+    case NUD_STALE:
+        entry->arp_state = INETNETTOMEDIASTATE_STALE;
+        break;
+    case NUD_DELAY:
+        entry->arp_state = INETNETTOMEDIASTATE_DELAY;
+        break;
+    case NUD_PROBE:
+        entry->arp_state = INETNETTOMEDIASTATE_PROBE;
+        break;
+    case NUD_FAILED:
+        entry->arp_state = INETNETTOMEDIASTATE_INVALID;
+        break;
+    case NUD_NONE:
+        entry->arp_state = INETNETTOMEDIASTATE_UNKNOWN;
+        break;
+    default:
+        snmp_log(LOG_ERR, "Unrecognized ARP entry state %d", rtmp->ndm_state);
+        break;
+    }
+
+    switch (rtmp->ndm_state) {
+    case NUD_INCOMPLETE:
+    case NUD_FAILED:
+    case NUD_NONE:
+        entry->arp_type = INETNETTOMEDIATYPE_INVALID;
+        break;
+    case NUD_REACHABLE:
+    case NUD_STALE:
+    case NUD_DELAY:
+    case NUD_PROBE:
+        entry->arp_type = INETNETTOMEDIATYPE_DYNAMIC;
+        break;
+    case NUD_PERMANENT:
+        entry->arp_type = INETNETTOMEDIATYPE_STATIC;
+        break;
+    default:
+        entry->arp_type = INETNETTOMEDIATYPE_LOCAL;
+        break;
+    }
+
+    return 1;
+}
diff --git a/agent/mibgroup/ip-mib/data_access/arp_sysctl.c b/agent/mibgroup/ip-mib/data_access/arp_sysctl.c
new file mode 100644
index 0000000..24e9cda
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/arp_sysctl.c
@@ -0,0 +1,330 @@
+/*
+ *  Interface MIB architecture support
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/arp.h>
+#include <net-snmp/data_access/interface.h>
+
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <sys/sysctl.h>
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <net/if_types.h>
+#include <net/route.h>
+#include <netinet/if_ether.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <errno.h>
+
+#if !defined(SA_SIZE) && !defined(RT_ROUNDUP)
+#define RT_ROUNDUP(a)  \
+	((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
+#endif
+
+static int _load_arp_table_from_sysctl(netsnmp_arp_access *);
+static int _load_ndp_table_from_sysctl(netsnmp_arp_access *);
+
+netsnmp_arp_access *
+netsnmp_access_arp_create(u_int init_flags,
+                          NetsnmpAccessArpUpdate *update_hook,
+                          NetsnmpAccessArpGC *gc_hook,
+                          int *cache_timeout, int *cache_flags,
+                          char *cache_expired)
+{
+    netsnmp_arp_access *access;
+
+    access = SNMP_MALLOC_TYPEDEF(netsnmp_arp_access);
+    if (NULL == access) {
+        snmp_log(LOG_ERR, "malloc error in netsnmp_access_arp_create\n");
+        return NULL;
+    }
+
+    access->arch_magic = NULL;
+    access->magic = NULL;
+    access->update_hook = update_hook;
+    access->gc_hook = gc_hook;
+    access->synchronized = 0;
+
+    if (cache_timeout != NULL)
+        *cache_timeout = 5;
+    if (cache_flags != NULL)
+        *cache_flags |= NETSNMP_CACHE_DONT_FREE_BEFORE_LOAD
+                        | NETSNMP_CACHE_AUTO_RELOAD;
+    access->cache_expired = cache_expired;
+
+    return access;
+}
+
+int netsnmp_access_arp_delete(netsnmp_arp_access *access)
+{
+    if (NULL == access)
+        return 0;
+
+    netsnmp_access_arp_unload(access);
+    free(access);
+
+    return 0;
+}
+
+int netsnmp_access_arp_load(netsnmp_arp_access *access)
+{
+    int err = 0;
+
+    access->generation++;
+    DEBUGMSGTL(("access:route:container",
+                "route_container_arch_load ipv4\n"));
+    err = _load_arp_table_from_sysctl(access);
+    if (err != 0) {
+        NETSNMP_LOGONCE((LOG_ERR,
+            "netsnmp_access_arp_ipv4 failed %d\n", err));
+        goto out;
+    }
+    access->gc_hook(access);
+    access->synchronized = (err == 0);
+
+#ifdef NETSNMP_ENABLE_IPV6
+    DEBUGMSGTL(("access:route:container",
+                "route_container_arch_load ipv6\n"));
+    err = _load_ndp_table_from_sysctl(access);
+    if (err != 0) {
+        NETSNMP_LOGONCE((LOG_ERR,
+            "netsnmp_access_arp_ipv6 failed %d\n", err));
+        goto out;
+    }
+    access->gc_hook(access);
+    access->synchronized = (err == 0);
+#endif
+
+out:
+    return (err == 0 ? 0 : -1);
+}
+
+int netsnmp_access_arp_unload(netsnmp_arp_access *access)
+{
+    access->synchronized = 0;
+
+    return 0;
+}
+
+static int
+_load_arp_table_from_sysctl(netsnmp_arp_access *access)
+{
+    netsnmp_arp_entry *entry;
+    struct rt_msghdr *rtm;
+    struct sockaddr_inarp *sin2;
+    struct sockaddr_dl *sdl;
+    char *buf, *lim, *newbuf, *next;
+    int mib[6];
+    size_t needed;
+    int err, st;
+
+    netsnmp_assert(NULL != access);
+
+    mib[0] = CTL_NET;
+    mib[1] = PF_ROUTE;
+    mib[2] = 0;
+    mib[3] = AF_INET;
+    mib[4] = NET_RT_FLAGS;
+    mib[5] = RTF_LLINFO;
+
+    err = 0;
+    buf = newbuf = NULL;
+
+    /* The following logic was adapted from search(..) in usr.sbin/arp/arp.c */
+
+    if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) {
+        err = errno;
+        goto out;
+    }
+
+    /* Empty arp table. */
+    if (needed == 0)
+        goto out;
+
+    for (;;) {
+        newbuf = realloc(buf, needed);
+        if (newbuf == NULL) {
+            err = ENOMEM;
+            goto out;
+        }
+        buf = newbuf;
+        st = sysctl(mib, 6, buf, &needed, NULL, 0);
+        if (st == 0 || errno != ENOMEM)
+            break;
+        else
+            needed += needed / 8; /* XXX: why 8? */
+    }
+    if (st == -1) {
+        err = errno;
+        goto out;
+    }
+
+    lim = buf + needed;
+    for (next = buf; next < lim; next += rtm->rtm_msglen) {
+
+        rtm = (struct rt_msghdr *)next;
+        sin2 = (struct sockaddr_inarp*)(rtm + 1);
+#ifdef SA_SIZE
+        sdl = (struct sockaddr_dl*)((char *)sin2 + SA_SIZE(sin2));
+#else
+	sdl = (struct sockaddr_dl*)(void *)(RT_ROUNDUP(sin2->sin_len) + (char *)(void *)sin2);
+#endif
+
+        entry = netsnmp_access_arp_entry_create();
+        if (NULL == entry) {
+            err = ENOMEM;
+            break;
+        }
+
+        entry->generation = access->generation;
+        entry->if_index = rtm->rtm_index;
+
+        entry->arp_ipaddress_len = 4;
+
+        memcpy(entry->arp_ipaddress, &sin2->sin_addr.s_addr,
+            entry->arp_ipaddress_len);
+
+        /* HW Address */
+        entry->arp_physaddress_len = 6;
+        if (0 < sdl->sdl_alen &&
+            sdl->sdl_alen <= NETSNMP_ACCESS_ARP_PHYSADDR_BUF_SIZE) {
+            memcpy(entry->arp_physaddress, LLADDR(sdl), sdl->sdl_alen);
+            /* Process status */
+            /* XXX: setting this value for all states is wrong. */
+            entry->arp_state = INETNETTOMEDIASTATE_REACHABLE;
+        } else {
+            entry->arp_physaddress[0] = '\0';
+            entry->arp_state = INETNETTOMEDIASTATE_INCOMPLETE;
+        }
+
+        /* Process type */
+        /* XXX: more states should be handled here, probably.. */
+        if (rtm->rtm_rmx.rmx_expire == 0)
+            entry->arp_type = INETNETTOMEDIATYPE_STATIC;
+        else
+            entry->arp_type = INETNETTOMEDIATYPE_DYNAMIC;
+
+        access->update_hook(access, entry);
+
+    }
+
+out:
+    free(buf);
+    return err;
+}
+
+static int
+_load_ndp_table_from_sysctl(netsnmp_arp_access *access)
+{
+#if 1
+    netsnmp_arp_entry *entry;
+    struct rt_msghdr *rtm;
+    struct sockaddr_in6 *sin2;
+    struct sockaddr_dl *sdl;
+    size_t needed;
+    int err, mib[6], st;
+    char *buf, *lim, *newbuf, *next;
+
+    netsnmp_assert(NULL != access);
+
+    mib[0] = CTL_NET;
+    mib[1] = PF_ROUTE;
+    mib[2] = 0;
+    mib[3] = AF_INET6;
+    mib[4] = NET_RT_FLAGS;
+    mib[5] = RTF_LLINFO;
+
+    err = 0;
+    buf = newbuf = NULL;
+
+    if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) {
+        err = errno;
+        goto out;
+    }
+
+    /* Empty arp table. */
+    if (needed == 0)
+        goto out;
+
+    for (;;) {
+        newbuf = realloc(buf, needed);
+        if (newbuf == NULL) {
+            err = ENOMEM;
+            goto out;
+        }
+        buf = newbuf;
+        st = sysctl(mib, 6, buf, &needed, NULL, 0);
+        if (st == 0 || errno != ENOMEM)
+            break;
+        else
+            needed += needed / 8; /* XXX: why 8? */
+    }
+    if (st == -1) {
+        err = errno;
+        goto out;
+    }
+
+    lim = buf + needed;
+    for (next = buf; next < lim; next += rtm->rtm_msglen) {
+
+        rtm = (struct rt_msghdr *)next;
+        sin2 = (struct sockaddr_in6*)(rtm + 1);
+#ifdef SA_SIZE
+        sdl = (struct sockaddr_dl*)((char *)sin2 + SA_SIZE(sin2));
+#else
+	sdl = (struct sockaddr_dl*)(void *)(RT_ROUNDUP(sin2->sin6_len) + (char *)(void *)sin2);
+#endif
+
+        if (!(rtm->rtm_flags & RTF_HOST) ||
+            IN6_IS_ADDR_MULTICAST(&sin2->sin6_addr))
+            continue;
+
+        entry = netsnmp_access_arp_entry_create();
+        if (NULL == entry) {
+            err = ENOMEM;
+            break;
+        }
+
+        entry->generation = access->generation;
+        entry->if_index = rtm->rtm_index;
+
+        entry->arp_ipaddress_len = 16;
+
+        memcpy(entry->arp_ipaddress, &sin2->sin6_addr.s6_addr,
+            entry->arp_ipaddress_len);
+
+        /* HW Address */
+        entry->arp_physaddress_len = sdl->sdl_alen;
+        if (0 < sdl->sdl_alen &&
+            sdl->sdl_alen <= NETSNMP_ACCESS_ARP_PHYSADDR_BUF_SIZE) {
+            memcpy(entry->arp_physaddress, LLADDR(sdl), sdl->sdl_alen);
+            /* Process status */
+            /* XXX: setting this value for all states is wrong. */
+            entry->arp_state = INETNETTOMEDIASTATE_REACHABLE;
+        } else {
+            entry->arp_physaddress[0] = '\0';
+            entry->arp_state = INETNETTOMEDIASTATE_INCOMPLETE;
+        }
+
+        /* Process type */
+        /* XXX: more states should be handled here, probably.. */
+        if (rtm->rtm_rmx.rmx_expire == 0)
+            entry->arp_type = INETNETTOMEDIATYPE_STATIC;
+        else
+            entry->arp_type = INETNETTOMEDIATYPE_DYNAMIC;
+
+        access->update_hook(access, entry);
+
+    }
+
+out:
+    free(buf);
+    return err;
+#else
+    return 0;
+#endif
+}
diff --git a/agent/mibgroup/ip-mib/data_access/defaultrouter.h b/agent/mibgroup/ip-mib/data_access/defaultrouter.h
new file mode 100644
index 0000000..49b9927
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/defaultrouter.h
@@ -0,0 +1,30 @@
+/*
+ * defaultrouter data access header
+ *
+ * $Id: $
+ */
+/**---------------------------------------------------------------------*/
+/*
+ * configure required files
+ *
+ * Notes:
+ *
+ * 1) prefer functionality over platform, where possible. If a method
+ *    is available for multiple platforms, test that first. That way
+ *    when a new platform is ported, it won't need a new test here.
+ *
+ * 2) don't do detail requirements here. If, for example,
+ *    HPUX11 had different reuirements than other HPUX, that should
+ *    be handled in the *_hpux.h header file.
+ */
+config_require(ip-mib/data_access/defaultrouter_common)
+#if defined( linux )
+config_require(ip-mib/data_access/defaultrouter_linux)
+#elif defined( freebsd4 ) || defined( netbsd5 ) || defined( openbsd ) || defined( dragonfly ) || defined( darwin )
+config_require(ip-mib/data_access/defaultrouter_sysctl)
+#else
+/*
+ * couldn't determine the correct file!
+ */
+config_error(the defaultrouter data access library is not available in this environment.)
+#endif
diff --git a/agent/mibgroup/ip-mib/data_access/defaultrouter_common.c b/agent/mibgroup/ip-mib/data_access/defaultrouter_common.c
new file mode 100644
index 0000000..ae85bfa
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/defaultrouter_common.c
@@ -0,0 +1,291 @@
+/*
+ *  defaultrouter MIB architecture support
+ *
+ * $Id:$
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/defaultrouter.h>
+
+#include "ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h"
+
+/**---------------------------------------------------------------------*/
+/*
+ * local static prototypes
+ */
+static int _access_defaultrouter_entry_compare_addr(const void *lhs,
+                                                    const void *rhs);
+static void _access_defaultrouter_entry_release(netsnmp_defaultrouter_entry * entry,
+                                                void *unused);
+
+/**---------------------------------------------------------------------*/
+/*
+ * external per-architecture functions prototypes
+ *
+ * These shouldn't be called by the general public, so they aren't in
+ * the header file.
+ */
+extern int
+netsnmp_arch_defaultrouter_entry_init(netsnmp_defaultrouter_entry *entry);
+
+extern int
+netsnmp_arch_defaultrouter_container_load(netsnmp_container* container,
+                                          u_int load_flags);
+
+/**---------------------------------------------------------------------*/
+/*
+ * container functions
+ */
+/**
+ */
+netsnmp_container *
+netsnmp_access_defaultrouter_container_init(u_int flags)
+{
+    netsnmp_container *container1;
+
+    DEBUGMSGTL(("access:defaultrouter:container", "init\n"));
+
+    /*
+     * create the containers. one indexed by ifIndex, the other
+     * indexed by ifName.
+     */
+    container1 = netsnmp_container_find("access_defaultrouter:table_container");
+    if (NULL == container1) {
+        snmp_log(LOG_ERR, "defaultrouter primary container is not found\n");
+        return NULL;
+    }
+    container1->container_name = strdup("dr_index");
+
+    if (flags & NETSNMP_ACCESS_DEFAULTROUTER_INIT_ADDL_IDX_BY_ADDR) {
+        netsnmp_container *container2 =
+            netsnmp_container_find("defaultrouter_addr:access_defaultrouter:table_container");
+        if (NULL == container2) {
+            snmp_log(LOG_ERR, "defaultrouter secondary container not found\n");
+            CONTAINER_FREE(container1);
+            return NULL;
+        }
+
+        container2->compare = _access_defaultrouter_entry_compare_addr;
+        container2->container_name = strdup("dr_addr");
+
+        netsnmp_container_add_index(container1, container2);
+    }
+
+    return container1;
+}
+
+/**
+ * @retval NULL  error
+ * @retval !NULL pointer to container
+ */
+netsnmp_container*
+netsnmp_access_defaultrouter_container_load(netsnmp_container* container,
+                                            u_int load_flags)
+{
+    int rc;
+     u_int container_flags = 0;
+
+    DEBUGMSGTL(("access:defaultrouter:container", "load\n"));
+
+    if (NULL == container) {
+        if (load_flags & NETSNMP_ACCESS_DEFAULTROUTER_LOAD_ADDL_IDX_BY_ADDR) {
+            container_flags |=
+                NETSNMP_ACCESS_DEFAULTROUTER_INIT_ADDL_IDX_BY_ADDR;
+        }
+        container =
+            netsnmp_access_defaultrouter_container_init(container_flags);
+    }
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "no container specified/found for access_defaultrouter\n");
+        return NULL;
+    }
+
+    rc =  netsnmp_arch_defaultrouter_container_load(container, load_flags);
+    if (0 != rc) {
+        netsnmp_access_defaultrouter_container_free(container,
+                                    NETSNMP_ACCESS_DEFAULTROUTER_FREE_NOFLAGS);
+        container = NULL;
+    }
+
+    return container;
+}
+
+void
+netsnmp_access_defaultrouter_container_free(netsnmp_container *container,
+                                            u_int free_flags)
+{
+    DEBUGMSGTL(("access:defaultrouter:container", "free\n"));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR,
+                 "invalid container for netsnmp_access_defaultrouter_free\n");
+        return;
+    }
+
+    if(! (free_flags & NETSNMP_ACCESS_DEFAULTROUTER_FREE_DONT_CLEAR)) {
+        /*
+         * free all items.
+         */
+        CONTAINER_CLEAR(container,
+                        (netsnmp_container_obj_func*)_access_defaultrouter_entry_release,
+                        NULL);
+    }
+
+    if(! (free_flags & NETSNMP_ACCESS_DEFAULTROUTER_FREE_KEEP_CONTAINER))
+        CONTAINER_FREE(container);
+}
+
+/**---------------------------------------------------------------------*/
+/*
+ * defaultrouter_entry functions
+ */
+/**
+ */
+/**
+ */
+netsnmp_defaultrouter_entry *
+netsnmp_access_defaultrouter_entry_create(void)
+{
+    int rc = 0;
+    netsnmp_defaultrouter_entry *entry =
+        SNMP_MALLOC_TYPEDEF(netsnmp_defaultrouter_entry);
+
+    DEBUGMSGTL(("access:defaultrouter:entry", "create\n"));
+
+    if(NULL == entry)
+        return NULL;
+
+    entry->oid_index.len = 1;
+    entry->oid_index.oids = &entry->ns_dr_index;
+
+    /*
+     * set up defaults
+     */
+    entry->dr_lifetime   = IPDEFAULTROUTERLIFETIME_MAX;
+    entry->dr_preference = IPDEFAULTROUTERPREFERENCE_MEDIUM;
+
+    rc = netsnmp_arch_defaultrouter_entry_init(entry);
+    if (SNMP_ERR_NOERROR != rc) {
+        DEBUGMSGT(("access:defaultrouter:create","error %d in arch init\n", rc));
+        netsnmp_access_defaultrouter_entry_free(entry);
+        entry = NULL;
+    }
+
+    return entry;
+}
+
+void
+netsnmp_access_defaultrouter_entry_free(netsnmp_defaultrouter_entry * entry)
+{
+    if (NULL == entry)
+        return;
+
+    free(entry);
+}
+
+/**
+ * update an old defaultrouter_entry from a new one
+ *
+ * @note: only mib related items are compared. Internal objects
+ * such as oid_index, ns_dr_index and flags are not compared.
+ *
+ * @retval -1  : error
+ * @retval >=0 : number of fields updated
+ */
+int
+netsnmp_access_defaultrouter_entry_update(netsnmp_defaultrouter_entry *lhs,
+                                      netsnmp_defaultrouter_entry *rhs)
+{
+    int changed = 0;
+
+    if (lhs->dr_addresstype != rhs->dr_addresstype) {
+        ++changed;
+        lhs->dr_addresstype = rhs->dr_addresstype;
+    }
+
+    if (lhs->dr_address_len != rhs->dr_address_len) {
+        changed += 2;
+        lhs->dr_address_len = rhs->dr_address_len;
+        memcpy(lhs->dr_address, rhs->dr_address, rhs->dr_address_len);
+    }
+    else if (memcmp(lhs->dr_address, rhs->dr_address, rhs->dr_address_len) != 0) {
+        ++changed;
+        memcpy(lhs->dr_address, rhs->dr_address, rhs->dr_address_len);
+    }
+
+    if (lhs->dr_if_index != rhs->dr_if_index) {
+        ++changed;
+        lhs->dr_if_index = rhs->dr_if_index;
+    }
+
+    if (lhs->dr_lifetime != rhs->dr_lifetime) {
+        ++changed;
+        lhs->dr_lifetime = rhs->dr_lifetime;
+    }
+
+    if (lhs->dr_preference != rhs->dr_preference) {
+        ++changed;
+        lhs->dr_preference = rhs->dr_preference;
+    }
+
+    return changed;
+}
+
+/**
+ * copy an  defaultrouter_entry
+ *
+ * @retval -1  : error
+ * @retval 0   : no error
+ */
+int
+netsnmp_access_defaultrouter_entry_copy(netsnmp_defaultrouter_entry *lhs,
+                                    netsnmp_defaultrouter_entry *rhs)
+{
+    lhs->dr_addresstype = rhs->dr_addresstype;
+    lhs->dr_address_len = rhs->dr_address_len;
+    memcpy(lhs->dr_address, rhs->dr_address, rhs->dr_address_len);
+    lhs->dr_if_index    = rhs->dr_if_index;
+    lhs->dr_lifetime    = rhs->dr_lifetime;
+    lhs->dr_preference  = rhs->dr_preference;
+
+    return 0;
+}
+
+/**---------------------------------------------------------------------*/
+/*
+ * Utility routines
+ */
+
+/**
+ */
+void
+_access_defaultrouter_entry_release(netsnmp_defaultrouter_entry * entry, void *context)
+{
+    netsnmp_access_defaultrouter_entry_free(entry);
+}
+
+static int _access_defaultrouter_entry_compare_addr(const void *lhs,
+                                                const void *rhs)
+{
+    const netsnmp_defaultrouter_entry *lh = (const netsnmp_defaultrouter_entry *)lhs;
+    const netsnmp_defaultrouter_entry *rh = (const netsnmp_defaultrouter_entry *)rhs;
+
+    netsnmp_assert(NULL != lhs);
+    netsnmp_assert(NULL != rhs);
+
+    /*
+     * compare address length
+     */
+    if (lh->dr_address_len < rh->dr_address_len)
+        return -1;
+    else if (lh->dr_address_len > rh->dr_address_len)
+        return 1;
+
+    /*
+     * length equal, compare address
+     */
+    return memcmp(lh->dr_address, rh->dr_address, lh->dr_address_len);
+}
diff --git a/agent/mibgroup/ip-mib/data_access/defaultrouter_linux.c b/agent/mibgroup/ip-mib/data_access/defaultrouter_linux.c
new file mode 100644
index 0000000..038016a
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/defaultrouter_linux.c
@@ -0,0 +1,328 @@
+/*
+ *  Interface MIB architecture support
+ *
+ * $Id:$
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/defaultrouter.h>
+
+#include "ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h"
+
+#include <asm/types.h>
+#ifdef HAVE_LINUX_RTNETLINK_H
+#include <linux/netlink.h>
+#include <linux/rtnetlink.h>
+#endif
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <errno.h>
+#include <unistd.h>
+
+#define RCVBUF_SIZE 32768
+#define SNDBUF_SIZE 512
+
+#ifdef NETSNMP_ENABLE_IPV6
+#define DR_ADDRSTRLEN  INET6_ADDRSTRLEN
+#else
+#define DR_ADDRSTRLEN  INET_ADDRSTRLEN
+#endif
+
+/**---------------------------------------------------------------------*/
+/*
+ * local static prototypes
+ */
+static int _load(netsnmp_container *container);
+
+
+/*
+ * initialize arch specific storage
+ *
+ * @retval  0: success
+ * @retval <0: error
+ */
+int
+netsnmp_arch_defaultrouter_entry_init(netsnmp_defaultrouter_entry *entry)
+{
+    /*
+     * init
+     */
+    return 0;
+}
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+int
+netsnmp_arch_defaultrouter_container_load(netsnmp_container *container,
+                                          u_int load_flags)
+{
+    int rc = 0;
+
+    DEBUGMSGTL(("access:defaultrouter:entry:arch", "load (linux)\n"));
+
+    rc = _load(container);
+    if (rc < 0) {
+        u_int flags = NETSNMP_ACCESS_DEFAULTROUTER_FREE_KEEP_CONTAINER;
+        netsnmp_access_defaultrouter_container_free(container, flags);
+    }
+
+    return rc;
+}
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+static int
+_load(netsnmp_container *container)
+{
+#ifndef HAVE_LINUX_RTNETLINK_H
+    DEBUGMSGTL(("access:defaultrouter",
+                "cannot get default router information"
+                "as netlink socket is not available\n"));
+    return -1;
+#else
+    int rc = 0;
+    int idx_offset = 0;
+    netsnmp_defaultrouter_entry *entry;
+    int nlsk;
+    struct sockaddr_nl addr;
+    int rcvbuf_size = RCVBUF_SIZE;
+    union {
+        struct nlmsghdr hdr;
+        unsigned char rcvbuf[RCVBUF_SIZE];
+    } rcvbuf_union;
+    union {
+        struct nlmsghdr hdr;
+        unsigned char sndbuf[SNDBUF_SIZE];
+    } sndbuf_union;
+    unsigned char *const rcvbuf = rcvbuf_union.rcvbuf;
+    unsigned char *const sndbuf = sndbuf_union.sndbuf;
+    struct nlmsghdr *hdr;
+    struct rtmsg *rthdr;
+    int count;
+    int end_of_message = 0;
+    long hz = sysconf(_SC_CLK_TCK);
+
+    netsnmp_assert(NULL != container);
+
+    /*
+     * Open a netlink socket
+     */
+    nlsk = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);
+    if (nlsk < 0) {
+        snmp_log(LOG_ERR, "Could not open netlink socket : %s\n",
+                 strerror(errno));
+        return -1;
+    }
+
+    if (setsockopt(nlsk, SOL_SOCKET, SO_RCVBUF,
+                   &rcvbuf_size, sizeof(rcvbuf_size)) < 0) {
+        snmp_log(LOG_ERR, "Could not open netlink socket : %s\n",
+                 strerror(errno));
+        close(nlsk);
+        return -1;
+    }
+    
+    memset(&addr, '\0', sizeof(struct sockaddr_nl));
+    addr.nl_family = AF_NETLINK;
+
+    memset(sndbuf, '\0', SNDBUF_SIZE);
+    hdr = &sndbuf_union.hdr;
+    hdr->nlmsg_type = RTM_GETROUTE;
+    hdr->nlmsg_pid = getpid();
+    hdr->nlmsg_seq = 0;
+    hdr->nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST;
+    hdr->nlmsg_len = NLMSG_LENGTH(sizeof(struct rtmsg));
+    rthdr = (struct rtmsg *)NLMSG_DATA(hdr);
+    rthdr->rtm_table = RT_TABLE_MAIN;
+
+    /*
+     * Send a request to the kernel to dump the routing table to us
+     */
+    count = sendto(nlsk, sndbuf, hdr->nlmsg_len, 0,
+                   (struct sockaddr *)&addr, sizeof(struct sockaddr_nl));
+    if (count < 0) {
+        snmp_log(LOG_ERR, "unable to send netlink message to kernel : %s\n",
+                 strerror(errno));
+        close(nlsk);
+        return -2;
+    }
+
+    /*
+     * Now listen for response
+     */
+    do {
+        struct nlmsghdr *nlmhp;
+        struct rtmsg *rtmp;
+        struct rtattr *rtap;
+        struct rta_cacheinfo *rtci;
+        socklen_t sock_len;
+        int rtcount;
+
+        memset(rcvbuf, '\0', RCVBUF_SIZE);
+        sock_len = sizeof(struct sockaddr_nl);
+
+        /*
+         * Get the message
+         */
+        count = recvfrom(nlsk, rcvbuf, RCVBUF_SIZE, 0,
+                         (struct sockaddr *)&addr, &sock_len);
+        if (count < 0) {
+            snmp_log(LOG_ERR, "unable to receive netlink messages: %s\n",
+                     strerror(errno));
+            rc = -1;
+            break;
+        }
+
+        /*
+         * Walk all of the returned messages
+         */
+        nlmhp = &rcvbuf_union.hdr;
+        while (NLMSG_OK(nlmhp, count)) {
+            u_char addresstype;
+            char   address[NETSNMP_ACCESS_DEFAULTROUTER_BUF_SIZE + 1];
+            size_t address_len =  0;
+            int    if_index    = -1;
+            u_long lifetime    =  0;
+            int    preference  = -3;
+
+            /*
+             * Make sure the message is ok
+             */
+            if (nlmhp->nlmsg_type == NLMSG_ERROR) {
+                snmp_log(LOG_ERR, "kernel produced nlmsg err\n");
+                rc = -1;
+                break;
+            }
+
+            /*
+             * End of message, we're done
+             */
+            if (nlmhp->nlmsg_type & NLMSG_DONE) {
+                end_of_message = 1;
+                break;
+            }
+
+            /*
+             * Get the pointer to the rtmsg struct
+             */
+            rtmp = NLMSG_DATA(nlmhp);
+
+            /*
+             * zero length destination is a default route
+             */
+            if (rtmp->rtm_dst_len != 0)
+                goto next_nlmsghdr;
+
+            /*
+             * Start scanning the attributes for needed info
+             */
+            if (rtmp->rtm_family == AF_INET) {
+                addresstype = INETADDRESSTYPE_IPV4;
+                lifetime = IPDEFAULTROUTERLIFETIME_MAX;     /* infinity */
+            }
+#ifdef NETSNMP_ENABLE_IPV6
+            else if (rtmp->rtm_family == AF_INET6) {
+                addresstype = INETADDRESSTYPE_IPV6;
+                /* router lifetime for IPv6 is retrieved by RTA_CACHEINFO */
+                lifetime = 0;
+            }
+#endif
+            else
+                goto next_nlmsghdr; /* skip, we don't care about this route */
+
+            preference = 0;     /* preference is medium(0) for now */
+
+            rtap = RTM_RTA(rtmp);
+            rtcount = RTM_PAYLOAD(nlmhp);
+            while (RTA_OK(rtap, rtcount)) {
+                switch (rtap->rta_type) {
+                    case RTA_OIF:
+                        if_index = *(int *)(RTA_DATA(rtap));
+                        break;
+
+                    case RTA_GATEWAY:
+                        address_len = RTA_PAYLOAD(rtap);
+                        memset(address, '\0', sizeof(address));
+                        memcpy(address, RTA_DATA(rtap), address_len);
+                        break;
+
+#ifdef NETSNMP_ENABLE_IPV6
+                    case RTA_CACHEINFO:
+                        rtci = RTA_DATA(rtap);
+                        if ((rtmp->rtm_flags & RTM_F_CLONED) ||
+                            (rtci && rtci->rta_expires)) {
+                            lifetime = rtci->rta_expires / hz;
+                        }
+                        break;
+#endif
+
+                    default:
+                        break;
+                }   /* switch */
+
+                rtap = RTA_NEXT(rtap, rtcount);
+            } /* while RTA_OK(rtap) */
+
+            if (address_len != 0 && if_index != -1 &&
+                lifetime != 0 && preference != -3 ) {
+                DEBUGIF("access:defaultrouter") {
+                    char addr_str[DR_ADDRSTRLEN];
+                    memset(addr_str, '\0', DR_ADDRSTRLEN);
+
+                    if (rtmp->rtm_family == AF_INET)
+                        inet_ntop(AF_INET, address, addr_str, DR_ADDRSTRLEN);
+#ifdef NETSNMP_ENABLE_IPV6
+                    else
+                        inet_ntop(AF_INET6, address, addr_str, DR_ADDRSTRLEN);
+#endif
+                    DEBUGMSGTL(("access:defaultrouter",
+                                "found default route: %s if_index %d "
+                                "lifetime %lu preference %d\n",
+                                addr_str, if_index, lifetime, preference));
+                }
+
+                entry = netsnmp_access_defaultrouter_entry_create();
+                if (NULL == entry) {
+                    rc = -3;
+                    break;
+                }
+
+                entry->ns_dr_index    = ++idx_offset;
+                entry->dr_addresstype = addresstype;
+                entry->dr_address_len = address_len;
+                memcpy(entry->dr_address, address,
+                       NETSNMP_ACCESS_DEFAULTROUTER_BUF_SIZE);
+                entry->dr_if_index    = if_index;
+                entry->dr_lifetime    = lifetime;
+                entry->dr_preference  = preference;
+
+                if (CONTAINER_INSERT(container, entry) < 0)
+                {
+                    DEBUGMSGTL(("access:arp:container",
+                                "error with defaultrouter_entry: "
+                                "insert into container failed.\n"));
+                    netsnmp_access_defaultrouter_entry_free(entry);
+                }
+            }
+
+next_nlmsghdr:
+            nlmhp = NLMSG_NEXT(nlmhp, count);
+        } /* while NLMSG_OK(nlmhp) */
+
+        if (rc < 0)
+            break;
+
+    } while (!end_of_message);
+
+    close(nlsk);
+    return rc;
+#endif  /* HAVE_LINUX_RTNETLINK_H */
+}
diff --git a/agent/mibgroup/ip-mib/data_access/defaultrouter_sysctl.c b/agent/mibgroup/ip-mib/data_access/defaultrouter_sysctl.c
new file mode 100644
index 0000000..dc46eb8
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/defaultrouter_sysctl.c
@@ -0,0 +1,230 @@
+/*
+ *  Interface MIB architecture support
+ *
+ * $Id:$
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/defaultrouter.h>
+
+#include "ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h"
+
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <sys/sysctl.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <errno.h>
+#include <unistd.h>
+
+#if !defined(SA_SIZE) && !defined(RT_ROUNDUP)
+#define RT_ROUNDUP(a)  \
+        ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
+#endif
+
+/**---------------------------------------------------------------------*/
+/*
+ * local static prototypes
+ */
+static int _load_defaultrouter_from_sysctl(netsnmp_container *, int);
+
+static int idx_offset;
+
+/*
+ * initialize arch specific storage
+ *
+ * @retval  0: success
+ * @retval <0: error
+ */
+int
+netsnmp_arch_defaultrouter_entry_init(netsnmp_defaultrouter_entry *entry)
+{
+    /*
+     * init
+     */
+    return 0;
+}
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+int
+netsnmp_arch_defaultrouter_container_load(netsnmp_container *container,
+                                          u_int load_flags)
+{
+    int err;
+
+    err = 0;
+    idx_offset = 0;
+
+    DEBUGMSGTL(("access:defaultrouter:entry:arch", "load\n"));
+    if (NULL == container) {
+        snmp_log(LOG_ERR,
+            "netsnmp_arch_defaultrouter_container_load: container invalid\n");
+        return 1;
+    }
+
+    err = _load_defaultrouter_from_sysctl(container, AF_INET);
+    if (err != 0) {
+        u_int flags = NETSNMP_ACCESS_DEFAULTROUTER_FREE_KEEP_CONTAINER;
+        netsnmp_access_defaultrouter_container_free(container, flags);
+        goto out;
+    }
+
+#ifdef NETSNMP_ENABLE_IPV6
+    err = _load_defaultrouter_from_sysctl(container, AF_INET6);
+    if (err != 0) {
+        u_int flags = NETSNMP_ACCESS_DEFAULTROUTER_FREE_KEEP_CONTAINER;
+        netsnmp_access_defaultrouter_container_free(container, flags);
+        goto out;
+    }
+#endif
+
+out:
+    return err;
+}
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+static int
+_load_defaultrouter_from_sysctl(netsnmp_container *container, int family)
+{
+    netsnmp_defaultrouter_entry *entry;
+    struct rt_msghdr *rtm;
+    struct sockaddr *dst_sa, *gw_sa;
+    char *buf, *lim, *newbuf, *next;
+    char address[NETSNMP_ACCESS_DEFAULTROUTER_BUF_SIZE];
+    int mib[6];
+    size_t address_len, needed;
+    int address_type, err, preference, st;
+
+    netsnmp_assert(NULL != container);
+
+    mib[0] = CTL_NET;
+    mib[1] = PF_ROUTE;
+    mib[2] = 0;
+    mib[3] = family;
+    mib[4] = NET_RT_DUMP;
+    mib[5] = 0;
+
+    err = 0;
+
+    buf = newbuf = NULL;
+
+    if (family == AF_INET) {
+        address_len = 4;
+        address_type = INETADDRESSTYPE_IPV4;
+#ifdef NETSNMP_ENABLE_IPV6
+    } else if (family == AF_INET6) {
+        address_len = 16;
+        address_type = INETADDRESSTYPE_IPV6;
+#endif
+    } else {
+        err = EINVAL;
+        goto out;
+    }
+
+    if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) {
+        err = errno;
+        goto out;
+    }
+
+    /* Empty arp table. */
+    if (needed == 0)
+        goto out;
+
+    for (;;) {
+        newbuf = realloc(buf, needed);
+        if (newbuf == NULL) {
+            err = ENOMEM;
+            goto out;
+        }
+        buf = newbuf;
+        st = sysctl(mib, sizeof(mib) / sizeof(mib[0]), buf, &needed, NULL, 0);
+        if (st == 0 || errno != ENOMEM)
+            break;
+        else
+            needed += needed / 8; /* XXX: why 8? */
+    }
+    if (st == -1) {
+        err = errno;
+        goto out;
+    }
+
+    lim = buf + needed;
+    for (next = buf; next < lim; next += rtm->rtm_msglen) {
+#ifdef NETSNMP_ENABLE_IPV6
+	struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
+#endif
+
+        rtm = (struct rt_msghdr *)next;
+
+        if (!(rtm->rtm_addrs & RTA_GATEWAY))
+            continue;
+
+        dst_sa = (struct sockaddr*)(rtm + 1);
+#ifdef SA_SIZE
+        gw_sa = (struct sockaddr*)(SA_SIZE(dst_sa) + (char*)dst_sa);
+#else
+        gw_sa = (struct sockaddr*)(RT_ROUNDUP(dst_sa->sa_len) + (char*)dst_sa);
+#endif
+
+        switch (family) {
+        case AF_INET:
+            if (((struct sockaddr_in*)dst_sa)->sin_addr.s_addr != INADDR_ANY)
+                continue;
+	    memcpy(address, &((struct sockaddr_in*)gw_sa)->sin_addr.s_addr,
+	           address_len);
+            break;
+#ifdef NETSNMP_ENABLE_IPV6
+        case AF_INET6:
+            if (memcmp(((struct sockaddr_in6*)dst_sa)->sin6_addr.s6_addr,
+			&in6addr_any, sizeof in6addr_any) != 0)
+		continue; /* XXX: need to determine qualifying criteria for
+                       * default gateways in IPv6. */
+            memcpy(address, &((struct sockaddr_in6*)dst_sa)->sin6_addr.s6_addr,
+		   address_len);
+            break;
+#endif
+        default:
+            break;
+        }
+
+        entry = netsnmp_access_defaultrouter_entry_create();
+        if (NULL == entry) {
+            err = ENOMEM;
+            break;
+        }
+
+        /* XXX: this is wrong (hardcoding the router preference to medium). */
+        preference = 0;
+
+        entry->ns_dr_index    = ++idx_offset;
+        entry->dr_addresstype = address_type;
+        entry->dr_address_len = address_len;
+        memcpy(entry->dr_address, address, sizeof(address));
+        entry->dr_if_index = rtm->rtm_index;
+        entry->dr_lifetime    = rtm->rtm_rmx.rmx_expire;
+        entry->dr_preference  = preference;
+
+        if (CONTAINER_INSERT(container, entry) < 0) {
+            DEBUGMSGTL(("access:arp:container",
+                        "error with defaultrouter_entry: "
+                        "insert into container failed.\n"));
+            netsnmp_access_defaultrouter_entry_free(entry);
+            goto out;
+        }
+    }
+
+out:
+    free(buf);
+    return err;
+}
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress.h b/agent/mibgroup/ip-mib/data_access/ipaddress.h
index c66f161..d79c7c2 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress.h
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress.h
@@ -20,11 +20,11 @@
 config_require(ip-mib/data_access/ipaddress_common)
 #if defined( linux )
 config_require(ip-mib/data_access/ipaddress_linux)
+#elif defined( solaris2 )
+config_require(ip-mib/data_access/ipaddress_solaris2)
+#elif defined( freebsd7 ) || defined( netbsd5 ) || defined( openbsd4 ) || defined( dragonfly ) || defined( darwin )
+config_require(ip-mib/data_access/ipaddress_sysctl)
 #else
-/*
- * couldn't determine the correct file!
- * require a bogus file to generate an error.
- */
-config_require(ip-mib/data_access/ipaddress-unknown-arch)
+config_error(the ipaddress data access library is not available in this environment.)
 #endif
 
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_common.c b/agent/mibgroup/ip-mib/data_access/ipaddress_common.c
index 317654e..a663985 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_common.c
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_common.c
@@ -12,6 +12,19 @@
 
 #include "ip-mib/ipAddressTable/ipAddressTable_constants.h"
 
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_child_of(ipaddress_common, libnetsnmpmibs)
+
+netsnmp_feature_child_of(ipaddress_common_copy_utilities, ipaddress_common)
+netsnmp_feature_child_of(ipaddress_entry_copy, ipaddress_common)
+netsnmp_feature_child_of(ipaddress_entry_update, ipaddress_common)
+netsnmp_feature_child_of(ipaddress_prefix_copy, ipaddress_common_copy_utilities)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_IPADDRESS_ENTRY_COPY
+netsnmp_feature_require(ipaddress_arch_entry_copy)
+#endif /* NETSNMP_FEATURE_REQUIRE_IPADDRESS_ENTRY_COPY */
+
 /**---------------------------------------------------------------------*/
 /*
  * local static prototypes
@@ -211,7 +224,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 %d\n",
+        DEBUGMSGT(("access:ipaddress:set",
+                   "cant find name for index %" NETSNMP_PRIo "d\n",
                   entry->if_index));
         return -1;
     }
@@ -246,6 +260,7 @@
     return rc;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_ENTRY_UPDATE
 /**
  * update an old ipaddress_entry from a new one
  *
@@ -304,10 +319,33 @@
         ++changed;
         lhs->ia_origin = rhs->ia_origin;
     }
+   
+    if (lhs->ia_onlink_flag != rhs->ia_onlink_flag) {
+        ++changed;
+        lhs->ia_onlink_flag = rhs->ia_onlink_flag;
+    }
+
+    if (lhs->ia_autonomous_flag != rhs->ia_autonomous_flag) {
+        ++changed;
+        lhs->ia_autonomous_flag = rhs->ia_autonomous_flag;
+    }
+
+    if (lhs->ia_prefered_lifetime != rhs->ia_prefered_lifetime) {
+        ++changed;
+        lhs->ia_prefered_lifetime = rhs->ia_prefered_lifetime;
+    }
+
+    if (lhs->ia_valid_lifetime != rhs->ia_valid_lifetime) {
+        ++changed;
+        lhs->ia_valid_lifetime = rhs->ia_valid_lifetime;
+    }
+
 
     return changed;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESS_ENTRY_UPDATE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_ENTRY_COPY
 /**
  * copy an  ipaddress_entry
  *
@@ -339,12 +377,14 @@
     
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESS_ENTRY_COPY */
 
 /**---------------------------------------------------------------------*/
 /*
  * Utility routines
  */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_PREFIX_COPY
 /**
  * copy the prefix portion of an ip address
  */
@@ -370,6 +410,7 @@
 
     return pfx_len;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESS_PREFIX_COPY */
 
 
 /**
@@ -400,6 +441,50 @@
     return len;
 }
 
+in_addr_t netsnmp_ipaddress_ipv4_mask(int len)
+{
+    int i = 0, m = 0x80;
+    in_addr_t mask;
+    unsigned char *mp = (unsigned char *)&mask;
+
+    if (len < 0 || len > 32) abort();
+
+    memset(mp, 0, sizeof(mask));
+
+    while (len >= 8) {
+        mp[i] = 0xFF;
+	len -= 8;
+	i++;
+    }
+    while (len) {
+        mp[i] |= m;
+	m >>= 1;
+	len--;
+    }
+    return mask;
+}
+
+int
+netsnmp_ipaddress_ipv6_prefix_len(struct in6_addr mask)
+{
+    int i, len = 0;
+    unsigned char *mp = (unsigned char *)&mask.s6_addr;
+
+    for (i = 0; i < 16; i++)
+	if (mp[i] == 0xFF) len += 8;
+	else break;
+
+    if (i == 16)
+	return len;
+
+    while(0x80 & mp[i]) {
+        ++len;
+        mp[i] <<= 1;
+    }
+
+    return len;
+}
+
 
 /**
  */
@@ -431,3 +516,51 @@
      */
     return memcmp(lh->ia_address, rh->ia_address, lh->ia_address_len);
 }
+
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_COMMON_COPY_UTILITIES
+int
+netsnmp_ipaddress_flags_copy(u_long *ipAddressPrefixAdvPreferredLifetime,
+                             u_long *ipAddressPrefixAdvValidLifetime,
+                             u_long *ipAddressPrefixOnLinkFlag,
+                             u_long *ipAddressPrefixAutonomousFlag, 
+                             u_long *ia_prefered_lifetime,
+                             u_long *ia_valid_lifetime,
+                             u_char *ia_onlink_flag,
+                             u_char *ia_autonomous_flag)
+{
+
+    /*Copy all the flags*/
+    *ipAddressPrefixAdvPreferredLifetime = *ia_prefered_lifetime;
+    *ipAddressPrefixAdvValidLifetime = *ia_valid_lifetime;
+    *ipAddressPrefixOnLinkFlag = *ia_onlink_flag;
+    *ipAddressPrefixAutonomousFlag = *ia_autonomous_flag;
+    return 0;
+}
+
+int
+netsnmp_ipaddress_prefix_origin_copy(u_long *ipAddressPrefixOrigin,
+                                     u_char ia_origin,
+                                     int flags,
+                                     u_long ipAddressAddrType)
+{
+    if(ipAddressAddrType == INETADDRESSTYPE_IPV4){
+       if(ia_origin == 6) /*Random*/
+          (*ipAddressPrefixOrigin) = 3 /*IPADDRESSPREFIXORIGINTC_WELLKNOWN*/;
+       else
+          (*ipAddressPrefixOrigin) = ia_origin;
+    } else {
+       if(ia_origin == 5) { /*Link Layer*/
+          if(!flags) /*Global address assigned by router adv*/
+             (*ipAddressPrefixOrigin) = 5 /*IPADDRESSPREFIXORIGINTC_ROUTERADV*/;
+          else
+             (*ipAddressPrefixOrigin) = 3 /*IPADDRESSPREFIXORIGINTC_WELLKNOWN*/;
+       }
+       else if(ia_origin == 6) /*Random*/
+          (*ipAddressPrefixOrigin) = 5 /*IPADDRESSPREFIXORIGINTC_ROUTERADV*/;
+       else
+          (*ipAddressPrefixOrigin) = ia_origin;
+    }
+    return 0;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESS_COMMON_COPY_UTILITIES */
+
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c b/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
index b19786d..6025f05 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.c
@@ -4,6 +4,7 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include "mibII/mibII_common.h"
 
@@ -20,6 +21,8 @@
 
 #include "ipaddress_ioctl.h"
 
+netsnmp_feature_child_of(ipadress_ioctl_entry_copy, ipaddress_common)
+
 static void _print_flags(short flags);
 
 #define LIST_TOKEN "ioctl_extras"
@@ -35,7 +38,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);
 }
 
 /**
@@ -86,6 +89,7 @@
     netsnmp_remove_list_node(&entry->arch_data, LIST_TOKEN);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_IOCTL_ENTRY_COPY
 /**
  * copy ioctl extras
  *
@@ -122,6 +126,7 @@
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESS_IOCTL_ENTRY_COPY */
 
 /**
  * load ipv4 address via ioctl
@@ -135,7 +140,8 @@
     struct ifreq   *ifrp;
     struct sockaddr save_addr;
     struct sockaddr_in * si;
-    netsnmp_ipaddress_entry *entry;
+    struct address_flag_info addr_info;
+    in_addr_t       ipval;
     _ioctl_extras           *extras;
 
     if ((sd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
@@ -154,9 +160,18 @@
 
     ifrp = ifc.ifc_req;
     for(i=0; i < interfaces; ++i, ++ifrp) {
+        netsnmp_ipaddress_entry *entry, *bcastentry = NULL;
 
         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();
@@ -181,9 +196,9 @@
         /*
          * 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;
         memcpy(entry->ia_address, &si->sin_addr.s_addr,
                entry->ia_address_len);
 
@@ -220,6 +235,26 @@
         }
 
         /*
+         * get broadcast
+         */
+        memset(&addr_info, 0, sizeof(struct address_flag_info));
+#if defined (NETSNMP_ENABLE_IPV6)
+        addr_info = netsnmp_access_other_info_get(entry->if_index, AF_INET);
+        if(addr_info.bcastflg) {
+           bcastentry = netsnmp_access_ipaddress_entry_create();
+           if(NULL == bcastentry) {
+              rc = -3;
+              break;
+           }
+           bcastentry->if_index = entry->if_index;
+           bcastentry->ns_ia_index = ++idx_offset;
+           bcastentry->ia_address_len = sizeof(addr_info.addr);
+           memcpy(bcastentry->ia_address, &addr_info.addr,
+                  bcastentry->ia_address_len);
+        }
+#endif
+
+        /*
          * get netmask
          */
         ifrp->ifr_addr = save_addr;
@@ -233,6 +268,9 @@
         si = (struct sockaddr_in *) &ifrp->ifr_addr;
         entry->ia_prefix_len =
             netsnmp_ipaddress_ipv4_prefix_len(si->sin_addr.s_addr);
+        if(bcastentry)
+           bcastentry->ia_prefix_len = entry->ia_prefix_len;
+
 
         /*
          * get flags
@@ -246,7 +284,12 @@
         }
         extras->flags = ifrp->ifr_flags;
 
-        entry->ia_type = IPADDRESSTYPE_UNICAST; /* assume unicast? */
+        if(bcastentry)
+           bcastentry->ia_type = IPADDRESSTYPE_BROADCAST;
+        if(addr_info.anycastflg)
+           entry->ia_type = IPADDRESSTYPE_ANYCAST;
+        else
+           entry->ia_type = IPADDRESSTYPE_UNICAST;
 
         /** entry->ia_prefix_oid ? */
 
@@ -256,16 +299,27 @@
          *   always preferred(1).
          */
         entry->ia_status = IPADDRESSSTATUSTC_PREFERRED;
+        if(bcastentry)
+           bcastentry->ia_status = IPADDRESSSTATUSTC_PREFERRED;
 
         /*
          * can we figure out if an address is from DHCP?
          * use manual until then...
          */
-        entry->ia_origin = IPADDRESSORIGINTC_MANUAL;
+        if(IS_APIPA(ipval)) {
+           entry->ia_origin = IPADDRESSORIGINTC_RANDOM;
+           if(bcastentry)
+              bcastentry->ia_origin = IPADDRESSORIGINTC_RANDOM;
+        }
+        else {
+           entry->ia_origin = IPADDRESSORIGINTC_MANUAL;
+           if(bcastentry)
+              bcastentry->ia_origin = IPADDRESSORIGINTC_MANUAL;
+        }
 
         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",
@@ -279,9 +333,19 @@
         /*
          * add entry to container
          */
-        if (CONTAINER_INSERT(container, entry) < 0)
-        {
+        if(bcastentry){
+            if (CONTAINER_INSERT(container, bcastentry) < 0) {
+                DEBUGMSGTL(("access:ipaddress:container","error with ipaddress_entry: insert broadcast entry into container failed.\n"));
+                netsnmp_access_ipaddress_entry_free(bcastentry);
+                netsnmp_access_ipaddress_entry_free(entry);
+                continue;
+            }
+            bcastentry = NULL;
+        }
+
+        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;
         }
@@ -332,7 +396,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;
@@ -368,10 +432,13 @@
         for(k=0;k<j;++k)
             if (alias_list[k] == i)
                 break;
-        if (k == j)
+        if (k == j) {
+            free(alias_list);
             return i;
+        }
     }
 
+    free(alias_list);
     return interfaces + 1;
 }
 
@@ -412,7 +479,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;
@@ -489,6 +557,91 @@
     return 0;
 }
 
+
+/**
+ * Add/remove IPv6 address using ioctl.
+ * @retval  0 : no error
+ * @retval -1 : bad parameter
+ * @retval -2 : couldn't create socket
+ * @retval -3 : ioctl failed
+ */
+int
+_netsnmp_ioctl_ipaddress_v6(netsnmp_ipaddress_entry * entry, int operation)
+{
+#ifdef linux
+    /*
+     * From linux/ipv6.h. It cannot be included because it collides
+     * with netinet/in.h
+     */
+    struct in6_ifreq {
+            struct in6_addr ifr6_addr;
+            uint32_t        ifr6_prefixlen;
+            int             ifr6_ifindex;
+    };
+
+    struct in6_ifreq               ifrq;
+    int                            rc, fd = -1;
+
+    DEBUGMSGT(("access:ipaddress:set", "_netsnmp_ioctl_ipaddress_set_v6 started\n"));
+
+    if (NULL == entry)
+        return -1;
+
+    netsnmp_assert(16 == entry->ia_address_len);
+
+    fd = socket(AF_INET6, SOCK_DGRAM, 0);
+    if(fd < 0) {
+        snmp_log(LOG_ERR,"couldn't create socket\n");
+        return -2;
+    }
+    memset(&ifrq, 0, sizeof(ifrq));
+    ifrq.ifr6_ifindex = entry->if_index;
+    ifrq.ifr6_prefixlen = 64;
+
+    memcpy(&ifrq.ifr6_addr, entry->ia_address,
+           entry->ia_address_len);
+
+    rc = ioctl(fd, operation, &ifrq);
+    close(fd);
+    if(rc < 0) {
+        snmp_log(LOG_ERR,"error setting address: %s(%d)\n", strerror(errno), errno);
+        return -3;
+    }
+    DEBUGMSGT(("access:ipaddress:set", "_netsnmp_ioctl_ipaddress_set_v6 finished\n"));
+    return 0;
+#else
+    /* we don't support ipv6 on this platform (yet) */
+    return -3;
+#endif
+
+}
+
+/**
+ *
+ * @retval  0 : no error
+ * @retval -1 : bad parameter
+ * @retval -2 : couldn't create socket
+ * @retval -3 : ioctl failed
+ */
+int
+_netsnmp_ioctl_ipaddress_set_v6(netsnmp_ipaddress_entry * entry)
+{
+    return _netsnmp_ioctl_ipaddress_v6(entry, SIOCSIFADDR);
+}
+
+/**
+ *
+ * @retval  0 : no error
+ * @retval -1 : bad parameter
+ * @retval -2 : couldn't create socket
+ * @retval -3 : ioctl failed
+ */
+int
+_netsnmp_ioctl_ipaddress_delete_v6(netsnmp_ipaddress_entry * entry)
+{
+    return _netsnmp_ioctl_ipaddress_v6(entry, SIOCDIFADDR);
+}
+
 /**
  * get the interface count and populate the ifc_buf
  *
@@ -515,7 +668,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);
@@ -580,7 +733,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) {
@@ -591,4 +744,3 @@
     if(unknown)
         DEBUGMSGT_NC(("access:ipaddress:container","  unknown 0x%x\n", unknown));
 }
-
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.h b/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.h
index a7a0ea2..f2b7847 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.h
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_ioctl.h
@@ -2,6 +2,17 @@
 extern          "C" {
 #endif
 
+/*
+ * struct for netlink extras
+ */
+struct address_flag_info {
+    int bcastflg;
+    int anycastflg;
+    in_addr_t addr;
+};
+ 
+#define IS_APIPA(a)  (((in_addr_t)(a << 16)) == 0xFEA90000)
+
 int
 _netsnmp_ioctl_ipaddress_container_load_v4(netsnmp_container *container,
                                                   int idx_offset);
@@ -11,8 +22,15 @@
 _netsnmp_ioctl_ipaddress_remove_v4(netsnmp_ipaddress_entry * entry);
 
 int
+_netsnmp_ioctl_ipaddress_set_v6(netsnmp_ipaddress_entry * entry);
+int
+_netsnmp_ioctl_ipaddress_remove_v6(netsnmp_ipaddress_entry * entry);
+
+int
 netsnmp_access_ipaddress_ioctl_get_interface_count(int sd, struct ifconf * ifc);
 
+struct address_flag_info
+netsnmp_access_other_info_get(int index, int family);
 
 /*
  * struct ioctl for arch_data
@@ -37,6 +55,8 @@
 
 int
 _netsnmp_ioctl_ipaddress_delete_v4(netsnmp_ipaddress_entry * entry);
+int
+_netsnmp_ioctl_ipaddress_delete_v6(netsnmp_ipaddress_entry * entry);
 
 #ifdef __cplusplus
 }
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c b/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c
index e78c8bd..f1cef0a 100644
--- a/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_linux.c
@@ -4,6 +4,7 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include "mibII/mibII_common.h"
 
@@ -12,19 +13,45 @@
 #include <net-snmp/data_access/interface.h>
 
 #include "ip-mib/ipAddressTable/ipAddressTable_constants.h"
+#include "ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_constants.h"
+#include "mibgroup/util_funcs.h"
 
 #include <errno.h>
 #include <sys/ioctl.h>
 
+netsnmp_feature_require(prefix_info)
+netsnmp_feature_require(find_prefix_info)
+
+netsnmp_feature_child_of(ipaddress_arch_entry_copy, ipaddress_common)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_IPADDRESS_ARCH_ENTRY_COPY
+netsnmp_feature_require(ipaddress_ioctl_entry_copy)
+#endif /* NETSNMP_FEATURE_REQUIRE_IPADDRESS_ARCH_ENTRY_COPY */
+
 #if defined (NETSNMP_ENABLE_IPV6)
 #include <linux/types.h>
 #include <asm/types.h>
+#if defined(HAVE_LINUX_RTNETLINK_H)
+#include <linux/netlink.h>
 #include <linux/rtnetlink.h>
+#ifdef RTMGRP_IPV6_PREFIX
+#define SUPPORT_PREFIX_FLAGS 1
+#endif /* RTMGRP_IPV6_PREFIX */
+#endif /* HAVE_LINUX_RTNETLINK_H */
 #endif
 
 #include "ipaddress_ioctl.h"
-
+#ifdef SUPPORT_PREFIX_FLAGS
+extern prefix_cbx *prefix_head_list;
+#endif
 int _load_v6(netsnmp_container *container, int idx_offset);
+#ifdef HAVE_LINUX_RTNETLINK_H
+int
+netsnmp_access_ipaddress_extra_prefix_info(int index,
+                                           u_long *preferedlt,
+                                           ulong *validlt,
+                                           char *addr);
+#endif
 
 /*
  * initialize arch specific storage
@@ -66,6 +93,7 @@
      */
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_ARCH_ENTRY_COPY
 /*
  * copy arch specific storage
  */
@@ -89,6 +117,7 @@
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESS_ARCH_ENTRY_COPY */
 
 /*
  * create a new entry
@@ -99,12 +128,14 @@
     if (NULL == entry)
         return -1;
 
-    if (4 != entry->ia_address_len) {
-        DEBUGMSGT(("access:ipaddress:create", "only ipv4 supported\n"));
+    if (4 == entry->ia_address_len) {
+        return _netsnmp_ioctl_ipaddress_set_v4(entry);
+    } else if (16 == entry->ia_address_len) {
+        return _netsnmp_ioctl_ipaddress_set_v6(entry);
+    } else {
+        DEBUGMSGT(("access:ipaddress:create", "wrong length of IP address\n"));
         return -2;
     }
-
-    return _netsnmp_ioctl_ipaddress_set_v4(entry);
 }
 
 /*
@@ -116,12 +147,14 @@
     if (NULL == entry)
         return -1;
 
-    if (4 != entry->ia_address_len) {
+    if (4 == entry->ia_address_len) {
+        return _netsnmp_ioctl_ipaddress_delete_v4(entry);
+    } else if (16 == entry->ia_address_len) {
+        return _netsnmp_ioctl_ipaddress_delete_v6(entry);
+    } else {
         DEBUGMSGT(("access:ipaddress:create", "only ipv4 supported\n"));
         return -2;
     }
-
-    return _netsnmp_ioctl_ipaddress_delete_v4(entry);
 }
 
 /**
@@ -179,6 +212,12 @@
 int
 _load_v6(netsnmp_container *container, int idx_offset)
 {
+#ifndef HAVE_LINUX_RTNETLINK_H
+    DEBUGMSGTL(("access:ipaddress:container",
+                "cannot get ip address information"
+                "as netlink socket is not available\n"));
+    return -1;
+#else
     FILE           *in;
     char            line[80], addr[40];
     char            if_name[IFNAMSIZ+1];/* +1 for '\0' because of the ugly sscanf below */ 
@@ -187,24 +226,15 @@
     size_t          in_len, out_len;
     netsnmp_ipaddress_entry *entry;
     _ioctl_extras           *extras;
-    static int      log_open_err = 1;
+    struct address_flag_info addr_info;
     
     netsnmp_assert(NULL != container);
 
 #define PROCFILE "/proc/net/if_inet6"
     if (!(in = fopen(PROCFILE, "r"))) {
-        if (1 == log_open_err) {
-            snmp_log(LOG_ERR,"could not open " PROCFILE "\n");
-            log_open_err = 0;
-        }
+        DEBUGMSGTL(("access:ipaddress:container","could not open " PROCFILE "\n"));
         return -2;
     }
-    /*
-     * if we hadn't been able to open file and turned of err logging,
-     * turn it back on now that we opened the file.
-     */
-    if (0 == log_open_err)
-        log_open_err = 1;
 
     /*
      * address index prefix_len scope status if_name
@@ -241,6 +271,7 @@
         in_len = entry->ia_address_len = sizeof(entry->ia_address);
         netsnmp_assert(16 == in_len);
         out_len = 0;
+        entry->flags = flags;
         buf = entry->ia_address;
         if(1 != netsnmp_hex_to_binary(&buf, &in_len,
                                       &out_len, 0, addr, ":")) {
@@ -268,6 +299,8 @@
          * every time it is called.
          */
         entry->if_index = netsnmp_access_interface_index_find(if_name);
+        memset(&addr_info, 0, sizeof(struct address_flag_info));
+        addr_info = netsnmp_access_other_info_get(entry->if_index, AF_INET6);
 
         /*
           #define IPADDRESSSTATUSTC_PREFERRED  1
@@ -278,8 +311,12 @@
           #define IPADDRESSSTATUSTC_TENTATIVE  6
           #define IPADDRESSSTATUSTC_DUPLICATE  7
         */
-        if(flags & IFA_F_PERMANENT)
+        if((flags & IFA_F_PERMANENT) || (!flags))
             entry->ia_status = IPADDRESSSTATUSTC_PREFERRED; /* ?? */
+#ifdef IFA_F_TEMPORARY
+        else if(flags & IFA_F_TEMPORARY)
+            entry->ia_status = IPADDRESSSTATUSTC_PREFERRED; /* ?? */
+#endif
         else if(flags & IFA_F_DEPRECATED)
             entry->ia_status = IPADDRESSSTATUSTC_DEPRECATED;
         else if(flags & IFA_F_TENTATIVE)
@@ -294,7 +331,7 @@
          * if it's not multi, it must be uni.
          *  (an ipv6 address is never broadcast)
          */
-        if (IN6_IS_ADDR_MULTICAST(entry->ia_address))
+        if(addr_info.anycastflg)
             entry->ia_type = IPADDRESSTYPE_ANYCAST;
         else
             entry->ia_type = IPADDRESSTYPE_UNICAST;
@@ -314,13 +351,48 @@
          *
          * are 'local' address assigned by link layer??
          */
-        if (IN6_IS_ADDR_LINKLOCAL(entry->ia_address) ||
-            IN6_IS_ADDR_SITELOCAL(entry->ia_address))
-            entry->ia_origin = IPADDRESSORIGINTC_LINKLAYER;
-        else
-            entry->ia_origin = IPADDRESSORIGINTC_MANUAL;
+         if (!flags)
+             entry->ia_origin = IPADDRESSORIGINTC_LINKLAYER;
+#ifdef IFA_F_TEMPORARY
+         else if (flags & IFA_F_TEMPORARY)
+             entry->ia_origin = IPADDRESSORIGINTC_RANDOM;
+#endif
+         else if (IN6_IS_ADDR_LINKLOCAL(entry->ia_address))
+             entry->ia_origin = IPADDRESSORIGINTC_LINKLAYER;
+         else
+             entry->ia_origin = IPADDRESSORIGINTC_MANUAL;
+
+         if(entry->ia_origin == IPADDRESSORIGINTC_LINKLAYER)
+            entry->ia_storagetype = STORAGETYPE_PERMANENT;
 
         /* xxx-rks: what can we do with scope? */
+#ifdef HAVE_LINUX_RTNETLINK_H
+        if(netsnmp_access_ipaddress_extra_prefix_info(entry->if_index, &entry->ia_prefered_lifetime
+                                                      ,&entry->ia_valid_lifetime, addr) < 0){
+           DEBUGMSGTL(("access:ipaddress:container", "unable to fetch extra prefix info\n"));
+        }
+#else
+        entry->ia_prefered_lifetime = 0;
+        entry->ia_valid_lifetime = 0;
+#endif
+#ifdef SUPPORT_PREFIX_FLAGS
+        {
+        prefix_cbx      prefix_val;
+        memset(&prefix_val, 0, sizeof(prefix_cbx));
+        if(net_snmp_find_prefix_info(&prefix_head_list, addr, &prefix_val) < 0) {
+           DEBUGMSGTL(("access:ipaddress:container", "unable to find info\n"));
+           entry->ia_onlink_flag = 1;  /*Set by default as true*/
+           entry->ia_autonomous_flag = 2; /*Set by default as false*/
+
+        } else {
+           entry->ia_onlink_flag = prefix_val.ipAddressPrefixOnLinkFlag; 
+           entry->ia_autonomous_flag = prefix_val.ipAddressPrefixAutonomousFlag;
+        }
+        }
+#else
+        entry->ia_onlink_flag = 1;  /*Set by default as true*/
+        entry->ia_autonomous_flag = 2; /*Set by default as false*/
+#endif
 
         /*
          * add entry to container
@@ -339,4 +411,190 @@
 
     return idx_offset;
 }
+
+struct address_flag_info
+netsnmp_access_other_info_get(int index, int family)
+{
+   struct {
+           struct nlmsghdr n;
+           struct ifaddrmsg r;
+           char   buf[1024];
+   } req;
+   struct address_flag_info addr;
+   struct rtattr    *rta;
+   int    status;
+   char   buf[16384];
+   struct nlmsghdr  *nlmp;
+   struct ifaddrmsg *rtmp;
+   struct rtattr    *rtatp;
+   int    rtattrlen;
+   int    sd;
+
+   memset(&addr, 0, sizeof(struct address_flag_info));
+   sd = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);
+   if(sd < 0) {
+      snmp_log(LOG_ERR, "could not open netlink socket\n");
+      return addr;
+   }
+
+   memset(&req, 0, sizeof(req));
+   req.n.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg));
+   req.n.nlmsg_flags = NLM_F_REQUEST | NLM_F_ROOT;
+   req.n.nlmsg_type = RTM_GETADDR;
+   req.r.ifa_family = family;
+   rta = (struct rtattr *)(((char *)&req) + NLMSG_ALIGN(req.n.nlmsg_len));
+   if(family == AF_INET)
+      rta->rta_len = RTA_LENGTH(4);
+   else
+      rta->rta_len = RTA_LENGTH(16);
+
+    status = send(sd, &req, req.n.nlmsg_len, 0);
+    if (status < 0) {
+        snmp_log(LOG_ERR, "could not send netlink request\n");
+        return addr;
+    }
+
+    status = recv(sd, buf, sizeof(buf), 0);
+    if (status < 0) {
+        snmp_log (LOG_ERR, "could not recieve netlink request\n");
+        return addr;
+    }
+
+    if(status == 0) {
+       snmp_log (LOG_ERR, "nothing to read\n");
+       return addr;
+    }
+
+    for(nlmp = (struct nlmsghdr *)buf; status > sizeof(*nlmp);) {
+        int len = nlmp->nlmsg_len;
+        int req_len = len - sizeof(*nlmp);
+
+        if (req_len < 0 || len > status) {
+            snmp_log (LOG_ERR, "invalid netlink message\n");
+            return addr;
+        }
+
+        if (!NLMSG_OK(nlmp, status)) {
+            snmp_log (LOG_ERR, "invalid NLMSG message\n");
+            return addr;
+        }
+        rtmp = (struct ifaddrmsg *)NLMSG_DATA(nlmp);
+        rtatp = (struct rtattr *)IFA_RTA(rtmp);
+        rtattrlen = IFA_PAYLOAD(nlmp);
+        if(index == rtmp->ifa_index){
+           for (; RTA_OK(rtatp, rtattrlen); rtatp = RTA_NEXT(rtatp, rtattrlen)) {
+                if(rtatp->rta_type == IFA_BROADCAST){
+                   addr.addr = ((struct in_addr *)RTA_DATA(rtatp))->s_addr;
+                   addr.bcastflg = 1;
+                }
+                if(rtatp->rta_type == IFA_ANYCAST){
+                   addr.addr = ((struct in_addr *)RTA_DATA(rtatp))->s_addr;
+                   addr.anycastflg = 1;
+                }
+           }
+        }
+        status -= NLMSG_ALIGN(len);
+        nlmp = (struct nlmsghdr*)((char*)nlmp + NLMSG_ALIGN(len));
+    }
+    close(sd);
+    return addr;
 #endif
+}
+
+#ifdef HAVE_LINUX_RTNETLINK_H
+int
+netsnmp_access_ipaddress_extra_prefix_info(int index, u_long *preferedlt,
+                                           ulong *validlt, char *addr)
+{
+
+    struct {
+            struct nlmsghdr nlhdr;
+            struct ifaddrmsg ifaceinfo;
+            char   buf[1024];
+    } req;
+
+    struct rtattr        *rta;
+    int                  status;
+    char                 buf[16384];
+    char                 tmpaddr[40];
+    struct nlmsghdr      *nlmp;
+    struct ifaddrmsg     *rtmp;
+    struct rtattr        *rtatp;
+    struct ifa_cacheinfo *cache_info;
+    struct in6_addr      *in6p;
+    int                  rtattrlen;
+    int                  sd;
+    int                  reqaddr = 0;
+    sd = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);
+    if(sd < 0) {
+       snmp_log(LOG_ERR, "could not open netlink socket\n");
+       return -1;
+    }
+    memset(&req, 0, sizeof(req));
+    req.nlhdr.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg));
+    req.nlhdr.nlmsg_flags = NLM_F_REQUEST | NLM_F_ROOT;
+    req.nlhdr.nlmsg_type = RTM_GETADDR;
+    req.ifaceinfo.ifa_family = AF_INET6;
+    rta = (struct rtattr *)(((char *)&req) + NLMSG_ALIGN(req.nlhdr.nlmsg_len));
+    rta->rta_len = RTA_LENGTH(16); /*For ipv6*/
+
+    status = send (sd, &req, req.nlhdr.nlmsg_len, 0);
+    if (status < 0) {
+        snmp_log(LOG_ERR, "could not send netlink request\n");
+        return -1;
+    }
+    status = recv (sd, buf, sizeof(buf), 0);
+    if (status < 0) {
+        snmp_log (LOG_ERR, "could not recieve netlink request\n");
+        return -1;
+    }
+    if (status == 0) {
+       snmp_log (LOG_ERR, "nothing to read\n");
+       return -1;
+    }
+    for (nlmp = (struct nlmsghdr *)buf; status > sizeof(*nlmp); ){
+
+        int len = nlmp->nlmsg_len;
+        int req_len = len - sizeof(*nlmp);
+
+        if (req_len < 0 || len > status) {
+            snmp_log (LOG_ERR, "invalid netlink message\n");
+            return -1;
+        }
+
+        if (!NLMSG_OK (nlmp, status)) {
+            snmp_log (LOG_ERR, "invalid NLMSG message\n");
+            return -1;
+        }
+        rtmp = (struct ifaddrmsg *)NLMSG_DATA(nlmp);
+        rtatp = (struct rtattr *)IFA_RTA(rtmp);
+        rtattrlen = IFA_PAYLOAD(nlmp);
+        if(index == rtmp->ifa_index) {
+           for (; RTA_OK(rtatp, rtattrlen); rtatp = RTA_NEXT(rtatp, rtattrlen)) {
+                if(rtatp->rta_type == IFA_ADDRESS) {
+                   in6p = (struct in6_addr *)RTA_DATA(rtatp);
+                   sprintf(tmpaddr, "%04x%04x%04x%04x%04x%04x%04x%04x", NIP6(*in6p));
+                   if(!strcmp(tmpaddr ,addr))
+                       reqaddr = 1;
+                }
+                if(rtatp->rta_type == IFA_CACHEINFO) {
+                   cache_info = (struct ifa_cacheinfo *)RTA_DATA(rtatp);
+                   if(reqaddr) {
+                      reqaddr = 0;
+                      *validlt = cache_info->ifa_valid;
+                      *preferedlt = cache_info->ifa_prefered;
+                   }
+
+                }
+
+           }
+        }
+        status -= NLMSG_ALIGN(len);
+        nlmp = (struct nlmsghdr*)((char*)nlmp + NLMSG_ALIGN(len));
+    }
+    close(sd);
+    return 0;
+}
+#endif
+#endif
+
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
new file mode 100644
index 0000000..e2485e3
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_solaris2.c
@@ -0,0 +1,291 @@
+/*
+ *  IP-MIB architecture support
+ *
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/ipaddress.h>
+#include <net-snmp/data_access/interface.h>
+
+#include "ip-mib/ipAddressTable/ipAddressTable_constants.h"
+
+#include "kernel_sunos5.h"
+#include "mibII/mibII_common.h"
+
+netsnmp_feature_child_of(ipaddress_arch_entry_copy, ipaddress_common)
+
+static int _load_v4(netsnmp_container *container, int idx_offset);
+#if defined( NETSNMP_ENABLE_IPV6 )
+static int _load_v6(netsnmp_container *container, int idx_offset);
+#endif
+
+/*
+ * initialize arch specific storage
+ *
+ * @retval  0: success
+ * @retval <0: error
+ */
+int
+netsnmp_arch_ipaddress_entry_init(netsnmp_ipaddress_entry *entry)
+{
+    init_kernel_sunos5();
+    return 0;
+}
+
+/*
+ * cleanup arch specific storage
+ */
+void
+netsnmp_arch_ipaddress_entry_cleanup(netsnmp_ipaddress_entry *entry)
+{
+    /*
+     * Nothing to do.
+     */
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_ARCH_ENTRY_COPY
+/*
+ * copy arch specific storage
+ */
+int
+netsnmp_arch_ipaddress_entry_copy(netsnmp_ipaddress_entry *lhs,
+                                  netsnmp_ipaddress_entry *rhs)
+{
+    /*
+     * Nothing to do. 
+     */
+    return 0;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESS_ARCH_ENTRY_COPY */
+
+/*
+ * create a new entry
+ */
+int
+netsnmp_arch_ipaddress_create(netsnmp_ipaddress_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+
+    DEBUGMSGT(("access:ipaddress:create", "not applicable\n"));
+        return 0;
+}
+
+/*
+ * delete an entry
+ */
+int
+netsnmp_arch_ipaddress_delete(netsnmp_ipaddress_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+
+    DEBUGMSGT(("access:ipaddress:create", "not applicable\n"));
+    return 0;
+}
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+int
+netsnmp_arch_ipaddress_container_load(netsnmp_container *container,
+                                      u_int load_flags)
+{
+    int rc = 0, idx_offset = 0;
+
+    if (!(load_flags & NETSNMP_ACCESS_IPADDRESS_LOAD_IPV6_ONLY)) {
+        rc = _load_v4(container, idx_offset);
+        if(rc < 0) {
+            u_int flags = NETSNMP_ACCESS_IPADDRESS_FREE_KEEP_CONTAINER;
+            netsnmp_access_ipaddress_container_free(container, flags);
+        }
+    }
+
+#if defined( NETSNMP_ENABLE_IPV6 )
+
+    if (!(load_flags & NETSNMP_ACCESS_IPADDRESS_LOAD_IPV4_ONLY)) {
+        if (rc < 0)
+            rc = 0;
+
+        idx_offset = rc;
+
+        rc = _load_v6(container, idx_offset);
+        if(rc < 0) {
+            u_int flags = NETSNMP_ACCESS_IPADDRESS_FREE_KEEP_CONTAINER;
+            netsnmp_access_ipaddress_container_free(container, flags);
+        }
+    }
+#endif
+
+    /*
+     * return no errors (0) if we found any interfaces
+     */
+    if(rc > 0)
+        rc = 0;
+    return rc;
+}
+
+/*
+ * @retval >=idx_offset ok
+ * @retval -1 memory allocation error
+ * @retval -2 interface lookup error
+ * @retval -3 container error
+ */
+static int
+_load_v4(netsnmp_container *container, int idx_offset)
+{
+    mib2_ipAddrEntry_t      ipae;
+    netsnmp_ipaddress_entry *entry;
+    req_e                   req = GET_FIRST;
+    int                     rc = 0;
+
+    DEBUGMSGTL(("access:ipaddress:container", "loading v4\n"));
+    while ((rc = getMibstat(MIB_IP_ADDR, &ipae, sizeof(ipae), req,
+                            &Get_everything, NULL)) == 0) {
+        req = GET_NEXT;
+        entry = netsnmp_access_ipaddress_entry_create();
+        if (entry == NULL)
+            return (-1);    
+        if (ipae.ipAdEntAddr == INADDR_ANY)
+            continue;
+
+        ipae.ipAdEntIfIndex.o_bytes[ipae.ipAdEntIfIndex.o_length] = '\0';
+        DEBUGMSGTL(("access:ipaddress:container", "found if %s\n",
+                    ipae.ipAdEntIfIndex.o_bytes));
+        /* Obtain interface index */
+        entry->if_index = 
+            netsnmp_access_interface_index_find(ipae.ipAdEntIfIndex.o_bytes);
+        if (entry->if_index == 0) {
+            DEBUGMSGTL(("access:ipaddress:container", "cannot find if %s\n",
+                        ipae.ipAdEntIfIndex.o_bytes));
+            netsnmp_access_ipaddress_entry_free(entry);
+            return (-2);    
+        }
+
+        if (strchr((const char *)&ipae.ipAdEntIfIndex.o_bytes, ':') != 0)
+            entry->flags |= NETSNMP_ACCESS_IPADDRESS_ISALIAS;
+
+        /* Get the address */
+        entry->ia_address_len = sizeof(ipae.ipAdEntAddr);
+        netsnmp_assert(entry->ia_address_len == 4 &&
+            entry->ia_address_len <= sizeof(entry->ia_address));
+        memcpy(&entry->ia_address, &ipae.ipAdEntAddr, entry->ia_address_len);
+
+        /* prefix */
+        entry->ia_prefix_len = ipae.ipAdEntInfo.ae_subnet_len;
+
+        /* set the Origin */
+        if (ipae.ipAdEntInfo.ae_flags & IFF_DHCPRUNNING)
+            entry->ia_origin = IPADDRESSORIGINTC_DHCP;
+        else
+            entry->ia_origin = IPADDRESSORIGINTC_MANUAL;
+
+        /* set ipv4 constants */
+        entry->ia_type = IPADDRESSTYPE_UNICAST;
+        entry->ia_status = IPADDRESSSTATUSTC_PREFERRED;
+
+        entry->ns_ia_index = ++idx_offset;
+
+        DEBUGMSGTL(("access:ipaddress:container", "insert if %" NETSNMP_PRIo "u, addrlen %d\n", 
+                    entry->if_index, entry->ia_address_len));
+
+        if (CONTAINER_INSERT(container, entry) < 0) {
+            DEBUGMSGTL(("access:ipaddress:container", "unable to insert %s\n", 
+                        ipae.ipAdEntIfIndex.o_bytes));
+            netsnmp_access_ipaddress_entry_free(entry);
+            return (-3);
+        }
+    }
+    return (idx_offset);
+}
+
+/*
+ * @retval >=idx_offset ok
+ * @retval -1 memory allocation error
+ * @retval -2 interface lookup error
+ * @retval -3 container error
+ */
+#if defined( NETSNMP_ENABLE_IPV6 )
+static int
+_load_v6(netsnmp_container *container, int idx_offset)
+{
+    mib2_ipv6AddrEntry_t    ip6ae;
+    netsnmp_ipaddress_entry *entry;
+    req_e                   req = GET_FIRST;
+    int                     rc = 0;
+
+    DEBUGMSGTL(("access:ipaddress:container", "loading v6... cache %d\n",
+                MIB_IP6_ADDR));
+    while ((rc = getMibstat(MIB_IP6_ADDR, &ip6ae, sizeof(ip6ae), req,
+                            &Get_everything, NULL)) == 0) {
+        req = GET_NEXT;
+        entry = netsnmp_access_ipaddress_entry_create();
+        if (entry == NULL)
+            return (-1);    
+        if (memcmp((const void *)&ip6ae.ipv6AddrAddress,
+                   (const void *)&in6addr_any,
+                   sizeof (ip6ae.ipv6AddrAddress)) == 0)
+            continue;
+
+        ip6ae.ipv6AddrIfIndex.o_bytes[ip6ae.ipv6AddrIfIndex.o_length] = '\0';
+        DEBUGMSGTL(("access:ipaddress:container", "found if %s\n",
+                    ip6ae.ipv6AddrIfIndex.o_bytes));
+
+        /* Obtain interface index */
+        entry->if_index = 
+            netsnmp_access_interface_index_find(
+            ip6ae.ipv6AddrIfIndex.o_bytes);
+        if (entry->if_index == 0) {
+            DEBUGMSGTL(("access:ipaddress:container", "cannot find if %s\n", 
+                        ip6ae.ipv6AddrIfIndex.o_bytes));
+            netsnmp_access_ipaddress_entry_free(entry);
+            return (-2);    
+        }
+
+        /* Get the address */
+        entry->ia_address_len = sizeof(ip6ae.ipv6AddrAddress);
+        netsnmp_assert(entry->ia_address_len == 16 &&
+                       entry->ia_address_len <= sizeof(entry->ia_address));
+        memcpy(&entry->ia_address, &ip6ae.ipv6AddrAddress, 
+               entry->ia_address_len);
+               
+        /* prefix */
+        entry->ia_prefix_len = ip6ae.ipv6AddrPfxLength;
+
+        /* type is anycast? (mib2.h: 1 = yes, 2 = no) */
+        entry->ia_type = (ip6ae.ipv6AddrAnycastFlag == 1) ? 
+            IPADDRESSTYPE_ANYCAST : IPADDRESSTYPE_UNICAST;
+
+        /* origin (mib2.h: 1 = stateless, 2 = stateful, 3 = unknown) */
+        DEBUGMSGTL(("access:ipaddress:container", "origin %d\n", 
+                        ip6ae.ipv6AddrType));
+        if (ip6ae.ipv6AddrType == 1)
+            entry->ia_origin = IPADDRESSORIGINTC_LINKLAYER;
+        else if (ip6ae.ipv6AddrInfo.ae_flags & IFF_DHCPRUNNING)
+            entry->ia_origin = IPADDRESSORIGINTC_DHCP;
+        else
+            entry->ia_origin = IPADDRESSORIGINTC_MANUAL;
+        
+        /* status */
+        entry->ia_status = ip6ae.ipv6AddrStatus;
+
+        entry->ns_ia_index = ++idx_offset;
+        
+        DEBUGMSGTL(("access:ipaddress:container", "insert if %" NETSNMP_PRIo "u, addrlen %d\n", 
+                    entry->if_index, entry->ia_address_len));
+
+        if (CONTAINER_INSERT(container, entry) < 0) {
+            DEBUGMSGTL(("access:ipaddress:container", "unable to insert %s\n", 
+                        ip6ae.ipv6AddrIfIndex.o_bytes));
+            netsnmp_access_ipaddress_entry_free(entry);
+            return (-3);
+        }
+    }    
+    return (idx_offset);
+}
+#endif /* defined( NETSNMP_ENABLE_IPV6 ) */
diff --git a/agent/mibgroup/ip-mib/data_access/ipaddress_sysctl.c b/agent/mibgroup/ip-mib/data_access/ipaddress_sysctl.c
new file mode 100644
index 0000000..0a6221b
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/ipaddress_sysctl.c
@@ -0,0 +1,272 @@
+/*
+ *  Interface MIB architecture support
+ *
+ * $Id$
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include "mibII/mibII_common.h"
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/ipaddress.h>
+#include <net-snmp/data_access/interface.h>
+
+#include "ip-mib/ipAddressTable/ipAddressTable_constants.h"
+#include "ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_constants.h"
+#include "mibgroup/util_funcs.h"
+
+#include <errno.h>
+#include <sys/ioctl.h>
+#include <arpa/inet.h>
+
+netsnmp_feature_require(prefix_info)
+netsnmp_feature_require(find_prefix_info)
+
+netsnmp_feature_child_of(ipaddress_arch_entry_copy, ipaddress_common)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_IPADDRESS_ARCH_ENTRY_COPY
+netsnmp_feature_require(ipaddress_ioctl_entry_copy)
+#endif /* NETSNMP_FEATURE_REQUIRE_IPADDRESS_ARCH_ENTRY_COPY */
+
+#include "ipaddress_ioctl.h"
+#ifdef SUPPORT_PREFIX_FLAGS
+extern prefix_cbx *prefix_head_list;
+#endif
+
+#define ROUNDUP(a) \
+  ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long))
+
+/*
+ * initialize arch specific storage
+ *
+ * @retval  0: success
+ * @retval <0: error
+ */
+int
+netsnmp_arch_ipaddress_entry_init(netsnmp_ipaddress_entry *entry)
+{
+    /*
+     * init ipv4 stuff
+     */
+    /* if (NULL == netsnmp_ioctl_ipaddress_entry_init(entry)) */
+    /*     return -1; */
+
+    /*
+     * init ipv6 stuff
+     *   so far, we can just share the ipv4 stuff, so nothing to do
+     */
+    
+    return 0;
+}
+
+/*
+ * cleanup arch specific storage
+ */
+void
+netsnmp_arch_ipaddress_entry_cleanup(netsnmp_ipaddress_entry *entry)
+{
+    /*
+     * cleanup ipv4 stuff
+     */
+    /*netsnmp_ioctl_ipaddress_entry_cleanup(entry); */
+
+    /*
+     * cleanup ipv6 stuff
+     *   so far, we can just share the ipv4 stuff, so nothing to do
+     */
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESS_ARCH_ENTRY_COPY
+/*
+ * copy arch specific storage
+ */
+int
+netsnmp_arch_ipaddress_entry_copy(netsnmp_ipaddress_entry *lhs,
+                                  netsnmp_ipaddress_entry *rhs)
+{
+    int rc;
+
+    rc = 0;
+
+    /*
+     * copy ipv4 stuff
+     */
+    /*rc = netsnmp_ioctl_ipaddress_entry_copy(lhs, rhs); */
+    if (rc)
+        return rc;
+
+    /*
+     * copy ipv6 stuff
+     *   so far, we can just share the ipv4 stuff, so nothing to do
+     */
+
+    return rc;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESS_ARCH_ENTRY_COPY */
+
+/*
+ * create a new entry
+ */
+int
+netsnmp_arch_ipaddress_create(netsnmp_ipaddress_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+
+    if (4 == entry->ia_address_len) {
+        return -1;
+    } else if (16 == entry->ia_address_len) {
+        return -1;
+    } else {
+        DEBUGMSGT(("access:ipaddress:create", "wrong length of IP address\n"));
+        return -2;
+    }
+}
+
+/*
+ * create a new entry
+ */
+int
+netsnmp_arch_ipaddress_delete(netsnmp_ipaddress_entry *entry)
+{
+    if (NULL == entry)
+        return -1;
+
+    if (4 == entry->ia_address_len) {
+        return -2;
+    } else if (16 == entry->ia_address_len) {
+        return -3;
+    } else {
+        DEBUGMSGT(("access:ipaddress:create", "only ipv4 supported\n"));
+        return -2;
+    }
+}
+
+/**
+ *
+ * @retval  0 no errors
+ * @retval !0 errors
+ */
+int
+netsnmp_arch_ipaddress_container_load(netsnmp_container *container,
+                                      u_int load_flags)
+{
+    netsnmp_ipaddress_entry *entry = NULL;
+    u_char *if_list = NULL, *cp;
+    size_t if_list_size = 0;
+    int sysctl_oid[] = { CTL_NET, PF_ROUTE, 0, 0, NET_RT_IFLIST, 0 };
+    struct ifa_msghdr *ifa;
+    struct sockaddr *a;
+    int amask;
+    int rc = 0;
+    int idx_offset = 0;
+
+    DEBUGMSGTL(("access:ipaddress:container:sysctl",
+                "load (flags %u)\n", load_flags));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "no container specified/found for interface\n");
+        return -1;
+    }
+
+    if (sysctl(sysctl_oid, sizeof(sysctl_oid)/sizeof(int), 0,
+               &if_list_size, 0, 0) == -1) {
+        snmp_log(LOG_ERR, "could not get interface info (size)\n");
+        return -2;
+    }
+
+    if_list = (u_char*)malloc(if_list_size);
+    if (if_list == NULL) {
+        snmp_log(LOG_ERR, "could not allocate memory for interface info "
+                 "(%zu bytes)\n", if_list_size);
+        return -3;
+    } else {
+        DEBUGMSGTL(("access:ipaddress:container:sysctl",
+                    "allocated %zu bytes for if_list\n", if_list_size));
+    }
+
+    if (sysctl(sysctl_oid, sizeof(sysctl_oid)/sizeof(int), if_list,
+               &if_list_size, 0, 0) == -1) {
+        snmp_log(LOG_ERR, "could not get interface info\n");
+        free(if_list);
+        return -2;
+    }
+
+    /* pass 2: walk addresses */
+    for (cp = if_list; cp < if_list + if_list_size; cp += ifa->ifam_msglen) {
+        ifa = (struct ifa_msghdr *) cp;
+        int rtax;
+
+        if (ifa->ifam_type != RTM_NEWADDR)
+            continue;
+
+        DEBUGMSGTL(("access:ipaddress:container:sysctl",
+                    "received 0x%x in RTM_NEWADDR for ifindex %u\n",
+                    ifa->ifam_addrs, ifa->ifam_index));
+
+        entry = netsnmp_access_ipaddress_entry_create();
+        if (entry == NULL) {
+            rc = -3;
+            break;
+        }
+
+        a = (struct sockaddr *) (ifa + 1);
+        entry->ia_status = IPADDRESSSTATUSTC_UNKNOWN;
+        entry->ia_origin = IPADDRESSORIGINTC_OTHER;
+	entry->ia_address_len = 0;
+        for (amask = ifa->ifam_addrs, rtax = 0; amask != 0; amask >>= 1, rtax++) {
+            if ((amask & 1) != 0) {
+                entry->ns_ia_index = ++idx_offset;
+                entry->if_index = ifa->ifam_index;
+                DEBUGMSGTL(("access:ipaddress:container:sysctl",
+                            "%d: a=%p, sa_len=%d, sa_family=0x%x\n",
+                            (int)entry->if_index, a, a->sa_len, a->sa_family));
+
+                if (a->sa_family == AF_INET || a->sa_family == 0) {
+                    struct sockaddr_in *a4 = (struct sockaddr_in *)a;
+		    char str[128];
+		    DEBUGMSGTL(("access:ipaddress:container:sysctl",
+		                "IPv4 addr %s\n", inet_ntop(AF_INET, &a4->sin_addr.s_addr, str, 128)));
+                    if (rtax == RTAX_IFA) {
+			entry->ia_address_len = 4;
+                        memcpy(entry->ia_address, &a4->sin_addr.s_addr, entry->ia_address_len);
+		    }
+                    else if (rtax == RTAX_NETMASK)
+                        entry->ia_prefix_len = netsnmp_ipaddress_ipv4_prefix_len(a4->sin_addr.s_addr);
+                }
+                else if (a->sa_family == AF_INET6) {
+                    struct sockaddr_in6 *a6 = (struct sockaddr_in6 *)a;
+		    char str[128];
+		    DEBUGMSGTL(("access:ipaddress:container:sysctl",
+		                "IPv6 addr %s\n", inet_ntop(AF_INET6, &a6->sin6_addr.s6_addr, str, 128)));
+                    if (rtax == RTAX_IFA) {
+			entry->ia_address_len = 16;
+                        memcpy(entry->ia_address, &a6->sin6_addr, entry->ia_address_len);
+		    }
+                    else if (rtax == RTAX_NETMASK) {
+                        entry->ia_prefix_len = netsnmp_ipaddress_ipv6_prefix_len(a6->sin6_addr);
+			DEBUGMSGTL(("access:ipaddress:container:sysctl",
+			            "prefix_len=%d\n", entry->ia_prefix_len));
+		    }
+                }
+                a = (struct sockaddr *) ( ((char *) a) + ROUNDUP(a->sa_len) );
+            }
+        }
+	if (entry->ia_address_len == 0) {
+	    DEBUGMSGTL(("access:ipaddress:container:sysctl",
+	                "entry skipped\n"));
+	    netsnmp_access_ipaddress_entry_free(entry);
+	}
+	else if (CONTAINER_INSERT(container, entry) < 0) {
+            DEBUGMSGTL(("access:ipaddress:container","error with ipaddress_entry: insert into container failed.\n"));
+            netsnmp_access_ipaddress_entry_free(entry);
+            continue;
+        }
+    }
+
+    if (if_list != NULL)
+        free(if_list);
+
+    return 0;
+}
diff --git a/agent/mibgroup/ip-mib/data_access/ipv6scopezone.h b/agent/mibgroup/ip-mib/data_access/ipv6scopezone.h
new file mode 100644
index 0000000..8d81b3f
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/ipv6scopezone.h
@@ -0,0 +1,30 @@
+/*
+ * scopezone data access header
+ *
+ * $Id: ipv6scopezone.h 14170 2007-04-29 02:22:12Z varun_c $
+ */
+/**---------------------------------------------------------------------*/
+/*
+ * configure required files
+ *
+ * Notes:
+ *
+ * 1) prefer functionality over platform, where possible. If a method
+ *    is available for multiple platforms, test that first. That way
+ *    when a new platform is ported, it won't need a new test here.
+ *
+ * 2) don't do detail requirements here. If, for example,
+ *    HPUX11 had different reuirements than other HPUX, that should
+ *    be handled in the *_hpux.h header file.
+ */
+config_require(ip-mib/data_access/ipv6scopezone_common)
+#if defined( linux )
+config_require(ip-mib/data_access/ipv6scopezone_linux)
+#else
+/*
+ * couldn't determine the correct file!
+ * require a bogus file to generate an error.
+ */
+config_require(ip-mib/data_access/ipv6scopezone-unknown-arch);
+#endif
+
diff --git a/agent/mibgroup/ip-mib/data_access/ipv6scopezone_common.c b/agent/mibgroup/ip-mib/data_access/ipv6scopezone_common.c
new file mode 100644
index 0000000..7462ebe
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/ipv6scopezone_common.c
@@ -0,0 +1,155 @@
+/*
+ *  ipv6ScopeIndexTable MIB architecture support
+ *
+ * $Id: ipv6scopezone_common.c 14170 2007-04-29 02:22:12Z varun_c $
+ */
+#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/scopezone.h>
+/*
+ * local static prototypes
+ */
+static void _entry_release(netsnmp_v6scopezone_entry * entry, void *unused);
+
+
+/**---------------------------------------------------------------------*/
+/*
+ * external per-architecture functions prototypes
+ *
+ * These shouldn't be called by the general public, so they aren't in
+ * the header file.
+ */
+extern int
+netsnmp_access_scopezone_container_arch_load(netsnmp_container* container,
+                                             u_int load_flags);
+extern void
+netsnmp_access_scopezone_arch_init(void);
+
+/**
+ * initialize systemstats container
+ */
+netsnmp_container *
+netsnmp_access_scopezone_container_init(u_int flags)
+{
+    netsnmp_container *container;
+
+    DEBUGMSGTL(("access:scopezone:container", "init\n"));
+    /*
+     * create the containers. one indexed by ifIndex, the other
+     * indexed by ifName.
+     */
+    container = netsnmp_container_find("access_scopezone:table_container");
+    if (NULL == container)
+        return NULL;
+
+    return container;
+}
+
+/**
+ * load scopezone information in specified container
+ *
+ * @param container empty container, or NULL to have one created for you
+ * @param load_flags flags to modify behaviour.
+ *
+ * @retval NULL  error
+ * @retval !NULL pointer to container
+ */
+netsnmp_container*
+netsnmp_access_scopezone_container_load(netsnmp_container* container, u_int load_flags)
+{
+    int rc;
+
+    DEBUGMSGTL(("access:scopezone:container", "load\n"));
+
+    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;
+    }
+
+    rc =  netsnmp_access_scopezone_container_arch_load(container, load_flags);
+    if (0 != rc) {
+        netsnmp_access_scopezone_container_free(container,
+                                                NETSNMP_ACCESS_SCOPEZONE_FREE_NOFLAGS);
+        container = NULL;
+    }
+
+    return container;
+}
+
+void
+netsnmp_access_scopezone_container_free(netsnmp_container *container, u_int free_flags)
+{
+    DEBUGMSGTL(("access:scopezone:container", "free\n"));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "invalid container for netsnmp_access_scopezone_free\n");
+        return;
+    }
+
+    if(! (free_flags & NETSNMP_ACCESS_SCOPEZONE_FREE_DONT_CLEAR)) {
+        /*
+         * free all items.
+         */
+        CONTAINER_CLEAR(container,
+                        (netsnmp_container_obj_func*)_entry_release,
+                        NULL);
+    }
+
+    CONTAINER_FREE(container);
+}
+
+/**
+ */
+netsnmp_v6scopezone_entry *
+netsnmp_access_scopezone_entry_create(void)
+{
+    netsnmp_v6scopezone_entry *entry =
+        SNMP_MALLOC_TYPEDEF(netsnmp_v6scopezone_entry);
+
+    DEBUGMSGTL(("access:scopezone:entry", "create\n"));
+
+    if(NULL == entry)
+        return NULL;
+
+
+    entry->oid_index.len = 1;
+    entry->oid_index.oids =  &entry->ns_scopezone_index;
+
+    return entry;
+}
+
+/**
+ */
+void
+netsnmp_access_scopezone_entry_free(netsnmp_v6scopezone_entry * entry)
+{
+    DEBUGMSGTL(("access:scopezone:entry", "free\n"));
+
+    if (NULL == entry)
+        return;
+
+
+    free(entry);
+}
+
+/**---------------------------------------------------------------------*/
+/*
+ * Utility routines
+ */
+
+/**
+ * \internal
+ */
+static void
+_entry_release(netsnmp_v6scopezone_entry * entry, void *context)
+{
+    netsnmp_access_scopezone_entry_free(entry);
+}
+
diff --git a/agent/mibgroup/ip-mib/data_access/ipv6scopezone_linux.c b/agent/mibgroup/ip-mib/data_access/ipv6scopezone_linux.c
new file mode 100644
index 0000000..7d60641
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/ipv6scopezone_linux.c
@@ -0,0 +1,132 @@
+/*
+ *  Interface MIB architecture support
+ *
+ * $Id: ipv6scopezone_linux.c 14170 2007-04-29 02:22:12Z varun_c $
+ */
+#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/scopezone.h>
+
+#if defined (NETSNMP_ENABLE_IPV6)
+static int _scopezone_v6(netsnmp_container* container, int idx_offset);
+#endif
+
+/*
+ *
+ * @retval  0 success
+ * @retval -1 no container specified
+ * @retval -2 could not open file
+ * @retval -3 could not create entry (probably malloc)
+ * @retval -4 file format error
+ */
+int
+netsnmp_access_scopezone_container_arch_load(netsnmp_container* container,
+                                             u_int load_flags)
+{
+    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");
+        return -1;
+    }
+
+    rc1 = _scopezone_v6(container, idx_offset);
+#endif
+    if(rc1 > 0)
+        rc1 = 0;
+    return rc1;
+}
+
+#if defined (NETSNMP_ENABLE_IPV6)
+
+/* scope identifiers, from kernel - include/net/ipv6.h */
+#define IPV6_ADDR_LOOPBACK      0x0010U
+#define IPV6_ADDR_LINKLOCAL     0x0020U
+#define IPV6_ADDR_SITELOCAL     0x0040U
+
+static int
+_scopezone_v6(netsnmp_container* container, int idx_offset)
+{
+
+    /*
+     * On Linux, we support only link-local scope zones.
+     * Each interface, which has link-local address, gets unique scope
+     * zone index.
+     */
+    FILE           *in;
+    char            line[80], addr[40];
+    int             if_index, pfx_len, scope, flags, rc = 0;
+    int             last_if_index = -1;
+    netsnmp_v6scopezone_entry *entry;
+    
+    netsnmp_assert(NULL != container);
+
+#define PROCFILE "/proc/net/if_inet6"
+    if (!(in = fopen(PROCFILE, "r"))) {
+        DEBUGMSGTL(("access:scopezone:container","could not open " PROCFILE "\n"));
+        return -2;
+    }
+    
+    /*
+     * address index prefix_len scope status if_name
+     */
+    while (fgets(line, sizeof(line), in)) {
+        /*
+         * fe800000000000000200e8fffe5b5c93 05 40 20 80 eth0
+         *             A                    D  P  S  F  I
+         * A: address
+         * D: device number
+         * P: prefix len
+         * S: scope (see include/net/ipv6.h, net/ipv6/addrconf.c)
+         * F: flags (see include/linux/rtnetlink.h, net/ipv6/addrconf.c)
+         * I: interface
+         */
+        rc = sscanf(line, "%39s %04x %02x %02x %02x\n",
+                    addr, &if_index, &pfx_len, &scope, &flags);
+        if( 5 != rc ) {
+            snmp_log(LOG_ERR, PROCFILE " data format error (%d!=5), line ==|%s|\n",
+                     rc, line);
+            continue;
+        }
+        DEBUGMSGTL(("access:scopezone:container",
+                    "addr %s, index %d, pfx %d, scope %d, flags 0x%X\n",
+                    addr, if_index, pfx_len, scope, flags));
+
+        if (! (scope & IPV6_ADDR_LINKLOCAL)) {
+            DEBUGMSGTL(("access:scopezone:container", 
+                        "The address is not link-local, skipping\n"));
+            continue;
+        }
+        /* 
+         * Check that the interface was not inserted before, just in case
+         * one interface has two or more link-local addresses.
+         */
+        if (last_if_index == if_index) {
+            DEBUGMSGTL(("access:scopezone:container", 
+                        "The interface was already inserted, skipping\n"));
+            continue;
+        }
+
+        last_if_index = if_index; 
+        entry = netsnmp_access_scopezone_entry_create();
+        if(NULL == entry) {
+            rc = -3;
+            break;
+        }
+        entry->ns_scopezone_index = ++idx_offset;
+        entry->index = if_index;
+        entry->scopezone_linklocal = if_index;
+ 
+        CONTAINER_INSERT(container, entry);
+    }
+    fclose(in);
+    if(rc<0)
+        return rc;
+
+    return idx_offset;
+}
+#endif 
diff --git a/agent/mibgroup/ip-mib/data_access/scalars_common.h b/agent/mibgroup/ip-mib/data_access/scalars_common.h
index 2f0a63a..ebea21d 100644
--- a/agent/mibgroup/ip-mib/data_access/scalars_common.h
+++ b/agent/mibgroup/ip-mib/data_access/scalars_common.h
@@ -19,6 +19,8 @@
  */
 #if defined( linux )
 config_require(ip-mib/data_access/scalars_linux)
+#elif defined( freebsd4 ) || defined( netbsd5 ) || defined( openbsd4 ) || defined( dragonfly ) || defined( darwin )
+config_require(ip-mib/data_access/scalars_sysctl)
 #else
 /*
  * couldn't determine the correct file!
@@ -26,4 +28,3 @@
  */
 config_require(ip-mib/data_access/scalars-unknown-arch)
 #endif
-
diff --git a/agent/mibgroup/ip-mib/data_access/scalars_linux.c b/agent/mibgroup/ip-mib/data_access/scalars_linux.c
index d9c3914..85e912a 100644
--- a/agent/mibgroup/ip-mib/data_access/scalars_linux.c
+++ b/agent/mibgroup/ip-mib/data_access/scalars_linux.c
@@ -5,10 +5,148 @@
  */
 #include <net-snmp/net-snmp-config.h>
 #include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
 
 #include <net-snmp/data_access/ip_scalars.h>
 
-static const char ipfw_name[] = "/proc/sys/net/ipv6/conf/all/forwarding";
+netsnmp_feature_require(register_num_file_instance)
+
+static const char ipfw_name[] = "/proc/sys/net/ipv4/conf/all/forwarding";
+static const char ipttl_name[] = "/proc/sys/net/ipv4/ip_default_ttl";
+static const char ipfw6_name[] = "/proc/sys/net/ipv6/conf/all/forwarding";
+static const char iphop6_name[] = "/proc/sys/net/ipv6/conf/all/hop_limit";
+
+int
+netsnmp_arch_ip_scalars_ipForwarding_get(u_long *value)
+{
+    FILE *filep;
+    int rc;
+
+    if (NULL == value)
+        return -1;
+
+
+    filep = fopen(ipfw_name, "r");
+    if (NULL == filep) {
+        DEBUGMSGTL(("access:ipForwarding", "could not open %s\n",
+                    ipfw_name));
+        return -2;
+    }
+
+    rc = fscanf(filep, "%lu", value);
+    fclose(filep);
+    if (1 != rc) {
+        DEBUGMSGTL(("access:ipForwarding", "could not read %s\n",
+                    ipfw_name));
+        return -3;
+    }
+
+    if ((0 != *value) && (1 != *value)) {
+        DEBUGMSGTL(("access:ipForwarding", "unexpected value %ld in %s\n",
+                    *value, ipfw_name));
+        return -4;
+    }
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipForwarding_set(u_long value)
+{
+    FILE *filep;
+    int rc;
+
+    if (1 == value)
+        ;
+    else if (2 == value)
+        value = 0;
+    else {
+        DEBUGMSGTL(("access:ipForwarding", "bad value %ld for %s\n",
+                    value, ipfw_name));
+        return SNMP_ERR_WRONGVALUE;
+    }
+
+    filep = fopen(ipfw_name, "w");
+    if (NULL == filep) {
+        DEBUGMSGTL(("access:ipForwarding", "could not open %s\n",
+                    ipfw_name));
+        return SNMP_ERR_RESOURCEUNAVAILABLE;
+    }
+
+    rc = fprintf(filep, "%ld", value);
+    fclose(filep);
+    if (1 != rc) {
+        DEBUGMSGTL(("access:ipForwarding", "could not write %s\n",
+                    ipfw_name));
+        return SNMP_ERR_GENERR;
+    }
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipDefaultTTL_get(u_long *value)
+{
+    FILE *filep;
+    int rc;
+
+    if (NULL == value)
+        return -1;
+
+
+    filep = fopen(ipttl_name, "r");
+    if (NULL == filep) {
+        DEBUGMSGTL(("access:ipDefaultTTL", "could not open %s\n",
+                    ipttl_name));
+        return -2;
+    }
+
+    rc = fscanf(filep, "%lu", value);
+    fclose(filep);
+    if (1 != rc) {
+        DEBUGMSGTL(("access:ipDefaultTTL", "could not read %s\n",
+                    ipttl_name));
+        return -3;
+    }
+
+    if ((0 == *value) || (255 < *value)) {
+        DEBUGMSGTL(("access:ipDefaultTTL", "unexpected value %ld in %s\n",
+                    *value, ipttl_name));
+        return -4;
+    }
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipDefaultTTL_set(u_long value)
+{
+    FILE *filep;
+    int rc;
+
+    if (value == 0 || value > 255) {
+        DEBUGMSGTL(("access:ipDefaultTTL", "bad value %ld for %s\n",
+                    value, ipttl_name));
+        return SNMP_ERR_WRONGVALUE;
+    }
+
+    filep = fopen(ipttl_name, "w");
+    if (NULL == filep) {
+        DEBUGMSGTL(("access:ipDefaultTTL", "could not open %s\n",
+                    ipttl_name));
+        return SNMP_ERR_RESOURCEUNAVAILABLE;
+    }
+
+    rc = fprintf(filep, "%ld", value);
+    fclose(filep);
+    if (1 != rc) {
+        DEBUGMSGTL(("access:ipDefaultTTL", "could not write %s\n",
+                    ipttl_name));
+        return SNMP_ERR_GENERR;
+    }
+
+    return 0;
+}
 
 int
 netsnmp_arch_ip_scalars_ipv6IpForwarding_get(u_long *value)
@@ -20,24 +158,24 @@
         return -1;
 
 
-    filep = fopen(ipfw_name, "r");
+    filep = fopen(ipfw6_name, "r");
     if (NULL == filep) {
         DEBUGMSGTL(("access:ipv6IpForwarding", "could not open %s\n",
-                    ipfw_name));
+                    ipfw6_name));
         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",
-                    ipfw_name));
+                    ipfw6_name));
         return -3;
     }
 
     if ((0 != *value) && (1 != *value)) {
         DEBUGMSGTL(("access:ipv6IpForwarding", "unexpected value %ld in %s\n",
-                    *value, ipfw_name));
+                    *value, ipfw6_name));
         return -4;
     }
 
@@ -60,10 +198,10 @@
         return SNMP_ERR_WRONGVALUE;
     }
 
-    filep = fopen(ipfw_name, "w");
+    filep = fopen(ipfw6_name, "w");
     if (NULL == filep) {
         DEBUGMSGTL(("access:ipv6IpForwarding", "could not open %s\n",
-                    ipfw_name));
+                    ipfw6_name));
         return SNMP_ERR_RESOURCEUNAVAILABLE;
     }
 
@@ -71,9 +209,86 @@
     fclose(filep);
     if (1 != rc) {
         DEBUGMSGTL(("access:ipv6IpForwarding", "could not write %s\n",
-                    ipfw_name));
+                    ipfw6_name));
         return SNMP_ERR_GENERR;
     }
 
     return 0;
 }
+
+int
+netsnmp_arch_ip_scalars_ipv6IpDefaultHopLimit_get(u_long *value)
+{
+    FILE *filep;
+    int rc;
+
+    if (NULL == value)
+        return -1;
+
+
+    filep = fopen(iphop6_name, "r");
+    if (NULL == filep) {
+        DEBUGMSGTL(("access:ipDefaultHopLimit", "could not open %s\n",
+                    iphop6_name));
+        return -2;
+    }
+
+    rc = fscanf(filep, "%lu", value);
+    fclose(filep);
+    if (1 != rc) {
+        DEBUGMSGTL(("access:ipDefaultHopLimit", "could not read %s\n",
+                    iphop6_name));
+        return -3;
+    }
+
+    if ((0 == *value) || (255 < *value)) {
+        DEBUGMSGTL(("access:ipDefaultHopLimit", "unexpected value %ld in %s\n",
+                    *value, iphop6_name));
+        return -4;
+    }
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipv6IpDefaultHopLimit_set(u_long value)
+{
+    FILE *filep;
+    int rc;
+
+    if (value == 0 || value > 255) {
+        DEBUGMSGTL(("access:ipDefaultHopLimit", "bad value %ld for %s\n",
+                    value, iphop6_name));
+        return SNMP_ERR_WRONGVALUE;
+    }
+
+    filep = fopen(iphop6_name, "w");
+    if (NULL == filep) {
+        DEBUGMSGTL(("access:ipDefaultHopLimit", "could not open %s\n",
+                    iphop6_name));
+        return SNMP_ERR_RESOURCEUNAVAILABLE;
+    }
+
+    rc = fprintf(filep, "%ld", value);
+    fclose(filep);
+    if (1 != rc) {
+        DEBUGMSGTL(("access:ipDefaultHopLimit", "could not write %s\n",
+                    iphop6_name));
+        return SNMP_ERR_GENERR;
+    }
+
+    return 0;
+}
+
+void
+netsnmp_arch_ip_scalars_register_handlers(void)
+{
+    static oid ipReasmTimeout_oid[] = { 1, 3, 6, 1, 2, 1, 4, 13, 0 };
+
+    netsnmp_register_num_file_instance
+        ("ipReasmTimeout",
+         ipReasmTimeout_oid, OID_LENGTH(ipReasmTimeout_oid),
+         "/proc/sys/net/ipv4/ipfrag_time", ASN_INTEGER,
+         HANDLER_CAN_RONLY, NULL, NULL);
+
+}
diff --git a/agent/mibgroup/ip-mib/data_access/scalars_sysctl.c b/agent/mibgroup/ip-mib/data_access/scalars_sysctl.c
new file mode 100644
index 0000000..569c743
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/scalars_sysctl.c
@@ -0,0 +1,291 @@
+/*
+ *  IP-MIB architecture support
+ *
+ * $Id$
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/ip_scalars.h>
+
+#include <sys/types.h>
+#include <sys/protosw.h>
+#include <sys/sysctl.h>
+#include <netinet/in_systm.h>
+#include <netinet/ip.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* XXX: the values passed to netsnmp_arch_ip_scalars(..) may or may not be
+ * portable to the other BSDs -- it seems to be portable back to FreeBSD 4.x
+ * (Darwin 10.8.0) at least.
+ */
+
+static int
+netsnmp_arch_ip_scalars_sysctl(const char *access_module,
+                               int mib[], size_t mib_len,
+                               u_long *old_value, u_long *new_value)
+{
+    int newint, oldint;
+    size_t needed;
+    int rc;
+
+    needed = sizeof(oldint);
+    if (new_value)
+        newint = *new_value;
+
+    rc = sysctl(mib, mib_len, &oldint, &needed,
+                new_value ? &newint : NULL, (new_value ? sizeof(newint) : 0));
+    if (rc == -1) {
+        DEBUGMSGTL((access_module, "sysctl %s failed - %s\n",
+                    (new_value == NULL ? "get" : "set"),
+                    strerror(errno)));
+    }
+    *old_value = oldint;
+    return rc;
+}
+
+int ipDefaultTTL_mib[] = {
+    CTL_NET,
+    PF_INET,
+    IPPROTO_IP,
+    IPCTL_DEFTTL
+};
+
+int ipForwarding_mib[] = {
+    CTL_NET,
+    PF_INET,
+    IPPROTO_IP,
+    IPCTL_FORWARDING
+};
+
+int ipv6IpDefaultHopLimit_mib[] = {
+    CTL_NET,
+    PF_INET6,
+    IPPROTO_IP,
+    IPV6CTL_DEFHLIM
+};
+
+int ipv6IpForwarding_mib[] = {
+    CTL_NET,
+    PF_INET6,
+    IPPROTO_IP,
+    IPV6CTL_FORWARDING
+};
+
+#define MIB_LEN(a)		(sizeof(a) / sizeof(*a))
+
+#define IPDEFAULTTTL_LEN	MIB_LEN(ipDefaultTTL_mib)
+#define IPFORWARDING_LEN	MIB_LEN(ipForwarding_mib)
+#define IPV6IPDEFAULTHOPLIMIT_LEN	MIB_LEN(ipv6IpDefaultHopLimit_mib)
+#define IPV6IPFORWARDING_LEN	MIB_LEN(ipv6IpForwarding_mib)
+
+int
+netsnmp_arch_ip_scalars_ipDefaultTTL_get(u_long *value)
+{
+    int rc;
+
+    if (NULL == value)
+        return -1;
+
+    rc = netsnmp_arch_ip_scalars_sysctl("access:ipDefaultTTL",
+                                        ipDefaultTTL_mib,
+                                        IPDEFAULTTTL_LEN,
+                                        value, NULL);
+    if (rc != 0)
+        return -2;
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipDefaultTTL_set(u_long value)
+{
+    int rc;
+
+    if (1 == value)
+        ;
+    else if (2 == value)
+        value = 0;
+    else {
+        DEBUGMSGTL(("access:ipDefaultTTL", "bad value %ld\n",
+                    value));
+        return SNMP_ERR_WRONGVALUE;
+    }
+
+    rc = netsnmp_arch_ip_scalars_sysctl("access:ipForwarding",
+                                        ipForwarding_mib,
+                                        IPFORWARDING_LEN,
+                                        NULL, &value);
+    if (rc != 0)
+        return -1;
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipForwarding_get(u_long *value)
+{
+    int rc;
+
+    if (NULL == value)
+        return -1;
+
+    rc = netsnmp_arch_ip_scalars_sysctl("access:ipForwarding",
+                                        ipForwarding_mib,
+                                        IPFORWARDING_LEN,
+                                        value, NULL);
+    if (rc != 0)
+        return -2;
+
+    /* On FreeBSD 7.2 at least, the value passed to the sysctl can be coerced
+     * into a non-zero value; convert it into a value that's sane per the
+     * IP-MIB definition.
+     */
+    if (*value != 0)
+        *value = 1;
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipForwarding_set(u_long value)
+{
+    int rc;
+
+    if (1 == value)
+        ;
+    else if (2 == value)
+        value = 0;
+    else {
+        DEBUGMSGTL(("access:ipForwarding", "bad value %ld\n",
+                    value));
+        return SNMP_ERR_WRONGVALUE;
+    }
+
+    rc = netsnmp_arch_ip_scalars_sysctl("access:ipForwarding",
+                                        ipForwarding_mib,
+                                        IPFORWARDING_LEN,
+                                        NULL, &value);
+    if (rc != 0)
+        return -1;
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipv6IpDefaultHopLimit_get(u_long *value)
+{
+    int rc;
+
+    if (NULL == value)
+        return -1;
+
+    rc = netsnmp_arch_ip_scalars_sysctl("access:ipv6IpDefaultHopLimit",
+                                        ipv6IpDefaultHopLimit_mib,
+                                        IPV6IPDEFAULTHOPLIMIT_LEN,
+                                        value, NULL);
+    if (rc != 0)
+        return -2;
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipv6IpDefaultHopLimit_set(u_long value)
+{
+    int rc;
+
+    if (1 == value)
+        ;
+    else if (2 == value)
+        value = 0;
+    else {
+        DEBUGMSGTL(("access:ipv6IpDefaultHopLimit", "bad value %ld\n",
+                    value));
+        return SNMP_ERR_WRONGVALUE;
+    }
+
+    rc = netsnmp_arch_ip_scalars_sysctl("access:ipForwarding",
+                                        ipv6IpDefaultHopLimit_mib,
+                                        IPV6IPDEFAULTHOPLIMIT_LEN,
+                                        NULL, &value);
+    if (rc != 0)
+        return -1;
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipv6IpForwarding_get(u_long *value)
+{
+    int rc;
+
+    if (NULL == value)
+        return -1;
+
+    rc = netsnmp_arch_ip_scalars_sysctl("access:ipv6IpForwarding",
+                                        ipv6IpForwarding_mib,
+                                        IPV6IPFORWARDING_LEN,
+                                        value, NULL);
+    if (rc != 0)
+        return -2;
+
+    /* On FreeBSD 7.2 at least, the value passed to the sysctl can be coerced
+     * into a non-zero value; convert it into a value that's sane per the
+     * IP-MIB definition.
+     */
+    if (*value != 0)
+        *value = 1;
+
+    return 0;
+}
+
+int
+netsnmp_arch_ip_scalars_ipv6IpForwarding_set(u_long value)
+{
+    int rc;
+
+    if (1 == value)
+        ;
+    else if (2 == value)
+        value = 0;
+    else {
+        DEBUGMSGTL(("access:ipForwarding", "bad value %ld\n",
+                    value));
+        return SNMP_ERR_WRONGVALUE;
+    }
+
+    rc = netsnmp_arch_ip_scalars_sysctl("access:ipv6IpForwarding",
+                                        ipv6IpForwarding_mib,
+                                        IPV6IPFORWARDING_LEN,
+                                        NULL, &value);
+    if (rc != 0)
+        return -1;
+
+    return 0;
+}
+
+static long ipReasmTimeout_val;
+
+void
+netsnmp_arch_ip_scalars_register_handlers(void)
+{
+    static oid ipReasmTimeout_oid[] = { 1, 3, 6, 1, 2, 1, 4, 13, 0 };
+
+    /* 
+     * This value is static at compile time on FreeBSD; it really should be a
+     * probed via either sysctl or sysconf at runtime as the compiled value and
+     * the runtime value compiled into the kernel can vary.
+     *
+     * Please refer to sys/protosw.h for more details on what this value is (in
+     * particular PR_SLOWHZ).
+     */
+    ipReasmTimeout_val = IPFRAGTTL / PR_SLOWHZ;
+
+    netsnmp_register_long_instance("ipReasmTimeout",
+                                   ipReasmTimeout_oid,
+                                   OID_LENGTH(ipReasmTimeout_oid),
+                                   &ipReasmTimeout_val, NULL);
+}
diff --git a/agent/mibgroup/ip-mib/data_access/systemstats.h b/agent/mibgroup/ip-mib/data_access/systemstats.h
index 6bba6d9..514807a 100644
--- a/agent/mibgroup/ip-mib/data_access/systemstats.h
+++ b/agent/mibgroup/ip-mib/data_access/systemstats.h
@@ -20,11 +20,10 @@
 config_require(ip-mib/data_access/systemstats_common)
 #if defined( linux )
 config_require(ip-mib/data_access/systemstats_linux)
+#elif defined( solaris2 )
+config_require(ip-mib/data_access/systemstats_solaris2)
+#elif defined( freebsd7 ) || defined( netbsd5 ) || defined( openbsd4 ) || defined( dragonfly ) || defined( darwin )
+config_require(ip-mib/data_access/systemstats_sysctl)
 #else
-/*
- * couldn't determine the correct file!
- * require a bogus file to generate an error.
- */
-config_require(ip-mib/data_access/systemstats-unknown-arch);
+config_error(the systemstats data access library is not available in this environment.)
 #endif
-
diff --git a/agent/mibgroup/ip-mib/data_access/systemstats_common.c b/agent/mibgroup/ip-mib/data_access/systemstats_common.c
index f27e0ea..29109bd 100644
--- a/agent/mibgroup/ip-mib/data_access/systemstats_common.c
+++ b/agent/mibgroup/ip-mib/data_access/systemstats_common.c
@@ -1,5 +1,5 @@
 /*
- *  Systemstats MIB architecture support
+ *  ipSystemStatsTable and ipIfStatsTable MIB architecture support
  *
  * $Id$
  */
@@ -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)
+netsnmp_access_systemstats_entry_create(int version, int if_index,
+        const char *tableName)
 {
     netsnmp_systemstats_entry *entry =
         SNMP_MALLOC_TYPEDEF(netsnmp_systemstats_entry);
@@ -173,11 +177,11 @@
     if(NULL == entry)
         return NULL;
 
-    entry->ns_ip_version = version;
-
-    entry->oid_index.len = 1;
-    entry->oid_index.oids = (oid *) & entry->ns_ip_version;
-
+    entry->oid_index.len = 2;
+    entry->oid_index.oids = entry->index;
+    entry->index[0] = version;
+    entry->index[1] = if_index;
+    entry->tableName = tableName;
     return entry;
 }
 
@@ -217,6 +221,62 @@
     netsnmp_access_systemstats_entry_free(entry);
 }
 
+/*
+ * Calculates the entries, which are not provided by OS, but can be 
+ * computed from the others.
+ */
+static void
+_calculate_entries(netsnmp_systemstats_entry * entry)
+{
+    /*
+     * HCInForwDatagrams = HCInNoRoutes + HCOutForwDatagrams
+     */
+    if (!entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINFORWDATAGRAMS]
+        && entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS]
+        && entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINNOROUTES]) {
+        
+        entry->stats.HCInForwDatagrams = entry->stats.HCInNoRoutes;
+        u64Incr(&entry->stats.HCInForwDatagrams, &entry->stats.HCOutForwDatagrams);
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINFORWDATAGRAMS] = 1;
+    }
+
+    /*
+     * HCOutFragReqds = HCOutFragOKs + HCOutFragFails
+     */
+    if (!entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGREQDS]
+        && entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGOKS]
+           && entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGFAILS]) {
+        
+        entry->stats.HCOutFragReqds = entry->stats.HCOutFragOKs;
+        u64Incr(&entry->stats.HCOutFragReqds, &entry->stats.HCOutFragFails);
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGREQDS] = 1;
+    }
+    
+    /*
+     * HCOutTransmits = HCOutRequests  + HCOutForwDatagrams + HCOutFragCreates  
+     *                  - HCOutFragReqds - HCOutNoRoutes  - HCOutDiscards
+     */
+    if (!entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTTRANSMITS]
+        && entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTREQUESTS]
+        && entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS]
+           && entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGREQDS]
+           && entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTNOROUTES]
+           && entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGCREATES]
+        && entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTDISCARDS]) {
+
+        U64 tmp, tmp2, tmp3;
+        tmp = entry->stats.HCOutRequests;
+        u64Incr(&tmp, &entry->stats.HCOutForwDatagrams);
+        u64Incr(&tmp, &entry->stats.HCOutFragCreates);
+        
+        u64Subtract(&tmp, &entry->stats.HCOutFragReqds, &tmp2);
+        u64Subtract(&tmp2, &entry->stats.HCOutNoRoutes, &tmp3);
+        u64Subtract(&tmp3, &entry->stats.HCOutDiscards, &entry->stats.HCOutTransmits);
+                
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTTRANSMITS] = 1;
+    }
+}
+
 /**
  * update entry stats (checking for counter wrap)
  *
@@ -233,7 +293,8 @@
      * sanity checks
      */
     if ((NULL == prev_vals) || (NULL == new_vals) ||
-        (prev_vals->ns_ip_version != new_vals->ns_ip_version))
+        (prev_vals->index[0] != new_vals->index[0])
+        || (prev_vals->index[1] != new_vals->index[1]))
         return -1;
 
     /*
@@ -241,6 +302,7 @@
      */
     if (0 == need_wrap_check) {
         memcpy(&prev_vals->stats, &new_vals->stats, sizeof(new_vals->stats));
+        _calculate_entries(prev_vals);
         return 0;
     }
 
@@ -258,8 +320,8 @@
         /*
          * update straight 32 bit counters
          */
+        memcpy(&prev_vals->stats.columnAvail[0], &new_vals->stats.columnAvail[0], sizeof(new_vals->stats.columnAvail));
         prev_vals->stats.InHdrErrors = new_vals->stats.InHdrErrors;
-        prev_vals->stats.InNoRoutes = new_vals->stats.InNoRoutes;
         prev_vals->stats.InAddrErrors = new_vals->stats.InAddrErrors;
         prev_vals->stats.InUnknownProtos = new_vals->stats.InUnknownProtos;
         prev_vals->stats.InTruncatedPkts = new_vals->stats.InTruncatedPkts;
@@ -267,87 +329,236 @@
         prev_vals->stats.ReasmOKs = new_vals->stats.ReasmOKs;
         prev_vals->stats.ReasmFails = new_vals->stats.ReasmFails;
         prev_vals->stats.InDiscards = new_vals->stats.InDiscards;
-        prev_vals->stats.OutNoRoutes = new_vals->stats.OutNoRoutes;
-        prev_vals->stats.OutDiscards = new_vals->stats.OutDiscards;
-        prev_vals->stats.OutFragReqds = new_vals->stats.OutFragReqds;
-        prev_vals->stats.OutFragOKs = new_vals->stats.OutFragOKs;
-        prev_vals->stats.OutFragFails = new_vals->stats.OutFragFails;
-        prev_vals->stats.OutFragCreates = new_vals->stats.OutFragCreates;
 
         /*
          * update 64bit counters
          */
-        netsnmp_c64_check32_and_update(&prev_vals->stats.HCInReceives,
+        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_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_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_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_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_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_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_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));
     }
-    
+
     /*
      * if we've decided we no longer need to check wraps, free old stats
      */
     if (0 == need_wrap_check) {
         SNMP_FREE(prev_vals->old_stats);
-    }
-    else {
+    } else {
         /*
          * update old stats from new stats.
          * careful - old_stats is a pointer to stats...
          */
         memcpy(prev_vals->old_stats, &new_vals->stats, sizeof(new_vals->stats));
     }
+
+    _calculate_entries(prev_vals);
+
     return 0;
 }
 
@@ -368,7 +579,8 @@
     DEBUGMSGTL(("access:systemstats", "copy\n"));
     
     if ((NULL == lhs) || (NULL == rhs) ||
-        (lhs->ns_ip_version != rhs->ns_ip_version))
+        (lhs->index[0] != rhs->index[0])
+        || (lhs->index[1] != rhs->index[1]))
         return -1;
 
     /*
diff --git a/agent/mibgroup/ip-mib/data_access/systemstats_linux.c b/agent/mibgroup/ip-mib/data_access/systemstats_linux.c
index 3e0fd87..4a26e41 100644
--- a/agent/mibgroup/ip-mib/data_access/systemstats_linux.c
+++ b/agent/mibgroup/ip-mib/data_access/systemstats_linux.c
@@ -1,5 +1,5 @@
 /*
- *  Interface MIB architecture support
+ *  ipSystemStatsTable and ipIfStatsTable interface MIB architecture support
  *
  * $Id$
  */
@@ -10,12 +10,20 @@
 #include <net-snmp/data_access/ipstats.h>
 #include <net-snmp/data_access/systemstats.h>
 
+#include "../ipSystemStatsTable/ipSystemStatsTable.h"
+
+#include <sys/types.h>
+#include <dirent.h>
+#include <ctype.h>
+
 static int _systemstats_v4(netsnmp_container* container, u_int load_flags);
+static int _additional_systemstats_v4(netsnmp_systemstats_entry* entry,
+                                      u_int load_flags);
+
 #if defined (NETSNMP_ENABLE_IPV6)
 static int _systemstats_v6(netsnmp_container* container, u_int load_flags);
 #endif
 
-
 void
 netsnmp_access_systemstats_arch_init(void)
 {
@@ -62,7 +70,7 @@
         snmp_log(LOG_ERR, "no container specified/found for access_systemstats_\n");
         return -1;
     }
-
+    
     /*
      * load v4 and v6 stats. Even if one fails, try the other.
      * If they have the same rc, return it. if the differ, return
@@ -81,6 +89,9 @@
 #endif
 }
 
+/*
+ * Based on load_flags, load ipSystemStatsTable or ipIfStatsTable for ipv4 entries. 
+ */
 static int
 _systemstats_v4(netsnmp_container* container, u_int load_flags)
 {
@@ -92,15 +103,20 @@
     int             len;
     unsigned long long scan_vals[19];
 
-    DEBUGMSGTL(("access:systemstats:container:arch", "load v4 (flags %p)\n",
+    DEBUGMSGTL(("access:systemstats:container:arch", "load v4 (flags %x)\n",
                 load_flags));
 
     netsnmp_assert(container != NULL); /* load function shoulda checked this */
 
+    if (load_flags & NETSNMP_ACCESS_SYSTEMSTATS_LOAD_IFTABLE) {
+        /* we do not support ipIfStatsTable for ipv4 */
+        return 0;
+    }
+
     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;
     }
 
@@ -144,7 +160,8 @@
         while (*stats == ' ') /* skip spaces before stats */
             stats++;
 
-        entry = netsnmp_access_systemstats_entry_create(1);
+        entry = netsnmp_access_systemstats_entry_create(1, 0,
+                    "ipSystemStatsTable.ipv4");
         if(NULL == entry) {
             netsnmp_access_systemstats_container_free(container,
                                                       NETSNMP_ACCESS_SYSTEMSTATS_FREE_NOFLAGS);
@@ -185,23 +202,54 @@
         entry->stats.HCInReceives.high = scan_vals[2] >> 32;
         entry->stats.InHdrErrors = scan_vals[3];
         entry->stats.InAddrErrors = scan_vals[4];
-        entry->stats.HCInForwDatagrams.low = scan_vals[5] & 0xffffffff;
-        entry->stats.HCInForwDatagrams.high = scan_vals[5] >> 32;
+        entry->stats.HCOutForwDatagrams.low = scan_vals[5] & 0xffffffff;
+        entry->stats.HCOutForwDatagrams.high = scan_vals[5] >> 32;
         entry->stats.InUnknownProtos = scan_vals[6];
         entry->stats.InDiscards = scan_vals[7];
         entry->stats.HCInDelivers.low = scan_vals[8] & 0xffffffff;
         entry->stats.HCInDelivers.high = scan_vals[8] >> 32;
         entry->stats.HCOutRequests.low = scan_vals[9] & 0xffffffff;
         entry->stats.HCOutRequests.high = scan_vals[9] >> 32;
-        entry->stats.OutDiscards = scan_vals[10];
-        entry->stats.OutNoRoutes = scan_vals[11];
+        entry->stats.HCOutDiscards.low = scan_vals[10] & 0xffffffff;;
+        entry->stats.HCOutDiscards.high = scan_vals[10] >> 32;
+        entry->stats.HCOutNoRoutes.low = scan_vals[11] & 0xffffffff;;
+        entry->stats.HCOutNoRoutes.high = scan_vals[11] >> 32;
         /* entry->stats. = scan_vals[12]; / * ReasmTimeout */
         entry->stats.ReasmReqds = scan_vals[13];
         entry->stats.ReasmOKs = scan_vals[14];
         entry->stats.ReasmFails = scan_vals[15];
-        entry->stats.OutFragOKs = scan_vals[16];
-        entry->stats.OutFragFails = scan_vals[17];
-        entry->stats.OutFragCreates = scan_vals[18];
+        entry->stats.HCOutFragOKs.low = scan_vals[16] & 0xffffffff;;
+        entry->stats.HCOutFragOKs.high = scan_vals[16] >> 32;
+        entry->stats.HCOutFragFails.low = scan_vals[17] & 0xffffffff;;
+        entry->stats.HCOutFragFails.high = scan_vals[17] >> 32;
+        entry->stats.HCOutFragCreates.low = scan_vals[18] & 0xffffffff;;
+        entry->stats.HCOutFragCreates.high = scan_vals[18] >> 32;
+
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INADDRERRORS] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INUNKNOWNPROTOS] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INDISCARDS] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINDELIVERS] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTREQUESTS] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTDISCARDS] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTNOROUTES] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMREQDS] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMOKS] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMFAILS] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGOKS] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGFAILS] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGCREATES] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_DISCONTINUITYTIME] = 1;
+        entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REFRESHRATE] = 1;
+
+        /*
+         * load addtional statistics defined by RFC 4293
+         * As these are supported linux 2.6.22 or later, it is no problem
+         * if loading them are failed.
+         */
+        _additional_systemstats_v4(entry, load_flags);
 
         /*
          * add to container
@@ -216,48 +264,122 @@
     return 0;
 }
     
-#if defined (NETSNMP_ENABLE_IPV6)
+#define IP_EXT_HEAD "IpExt:"
 static int
-_systemstats_v6(netsnmp_container* container, u_int load_flags)
+_additional_systemstats_v4(netsnmp_systemstats_entry* entry,
+                           u_int load_flags)
 {
     FILE           *devin;
     char            line[1024];
-    netsnmp_systemstats_entry *entry = NULL;
-    char           *stats, *start = line;
-    int             len, rc;
-    uintmax_t       scan_val;
-    const char     *filename = "/proc/net/snmp6";
-    static int      warned_open = 0;
+    int             scan_count;
+    unsigned long long scan_vals[12];
+    int             retval = 0;
 
-    DEBUGMSGTL(("access:systemstats:container:arch", "load v6 (flags %u)\n",
-                load_flags));
+    DEBUGMSGTL(("access:systemstats:container:arch",
+                "load addtional v4 (flags %u)\n", load_flags));
 
-    netsnmp_assert(container != NULL); /* load function shoulda checked this */
-
-    entry = netsnmp_access_systemstats_entry_create(2);
-    if(NULL == entry)
-        return -3;
-    
-    /*
-     * try to open file. If we can't, that's ok - maybe the module hasn't
-     * been loaded yet.
-     */
-    if (!(devin = fopen(filename, "r"))) {
+    if (!(devin = fopen("/proc/net/netstat", "r"))) {
         DEBUGMSGTL(("access:systemstats",
-                    "Failed to load Systemstats Table (linux1)\n"));
-        if(!warned_open) {
-            ++warned_open;
-            snmp_log(LOG_ERR, "cannot open %s ...\n", filename);
-        }
-        free(entry);
-        return 0;
+                    "cannot open /proc/net/netstat\n"));
+        NETSNMP_LOGONCE((LOG_ERR,"cannot open /proc/net/netstat\n"));
+        return -2;
     }
 
     /*
-     * This file provides the statistics for each systemstats.
+     * Get header and stat lines
+     */
+    while (fgets(line, sizeof(line), devin)) {
+        if (strncmp(IP_EXT_HEAD, line, sizeof(IP_EXT_HEAD) - 1) == 0) {
+            /* next line should includes IPv4 addtional statistics */
+            if ((fgets(line, sizeof(line), devin)) == NULL) {
+                retval = -4;
+                break;
+            }
+            if (strncmp(IP_EXT_HEAD, line, sizeof(IP_EXT_HEAD) - 1) != 0) {
+                retval = -4;
+                break;
+            }
+
+            memset(scan_vals, 0x0, sizeof(scan_vals));
+            scan_count = sscanf(line,
+                                "%*s"   /* ignore `IpExt:' */
+                                "%llu %llu %llu %llu %llu %llu %llu %llu %llu %llu %llu %llu",
+                                &scan_vals[0], &scan_vals[1], &scan_vals[2],
+                                &scan_vals[3], &scan_vals[4], &scan_vals[5],
+                                &scan_vals[6], &scan_vals[7], &scan_vals[8],
+                                &scan_vals[9], &scan_vals[10], &scan_vals[11]);
+            if (scan_count < 6) {
+                snmp_log(LOG_ERR,
+                        "error scanning addtional systemstats data"
+                        "(minimum expected %d, got %d)\n",
+                        6, scan_count);
+                retval = -4;
+                break;
+            }
+
+            entry->stats.HCInNoRoutes.low    = scan_vals[0] & 0xffffffff;
+            entry->stats.HCInNoRoutes.high   = scan_vals[0] >> 32;
+            entry->stats.InTruncatedPkts     = scan_vals[1];
+            entry->stats.HCInMcastPkts.low   = scan_vals[2] & 0xffffffff;
+            entry->stats.HCInMcastPkts.high  = scan_vals[2] >> 32;
+            entry->stats.HCOutMcastPkts.low  = scan_vals[3] & 0xffffffff;
+            entry->stats.HCOutMcastPkts.high = scan_vals[3] >> 32;
+            entry->stats.HCInBcastPkts.low   = scan_vals[4] & 0xffffffff;
+            entry->stats.HCInBcastPkts.high  = scan_vals[4] >> 32;
+            entry->stats.HCOutBcastPkts.low  = scan_vals[5] & 0xffffffff;
+            entry->stats.HCOutBcastPkts.high = scan_vals[5] >> 32;
+
+            entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINNOROUTES] = 1;
+            entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INTRUNCATEDPKTS] = 1;
+            entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTPKTS] = 1;
+            entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTPKTS] = 1;
+            entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINBCASTPKTS] = 1;
+            entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTBCASTPKTS] = 1;
+	    if (scan_count >= 12) {
+		entry->stats.HCInOctets.low        = scan_vals[6] & 0xffffffff;
+		entry->stats.HCInOctets.high       = scan_vals[6] >> 32;
+		entry->stats.HCOutOctets.low       = scan_vals[7] & 0xffffffff;
+		entry->stats.HCOutOctets.high      = scan_vals[7] >> 32;
+		entry->stats.HCInMcastOctets.low   = scan_vals[8] & 0xffffffff;
+		entry->stats.HCInMcastOctets.high  = scan_vals[8] >> 32;
+		entry->stats.HCOutMcastOctets.low  = scan_vals[9] & 0xffffffff;
+		entry->stats.HCOutMcastOctets.high = scan_vals[9] >> 32;
+		/* 10 and 11 are In/OutBcastOctets */
+		entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINOCTETS] = 1;
+		entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTOCTETS] = 1;
+		entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTOCTETS] = 1;
+		entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTOCTETS] = 1;
+	    }
+        }
+    }
+
+    fclose(devin);
+
+    if (retval < 0)
+        DEBUGMSGTL(("access:systemstats",
+                    "/proc/net/netstat does not include addtional stats\n"));
+
+    return retval;
+}
+   
+#if defined (NETSNMP_ENABLE_IPV6)
+
+/*
+ * Load one /proc/net/snmp6 - like file (e.g. /proc/net/dev_snmp6)
+ */ 
+static int 
+_systemstats_v6_load_file(netsnmp_systemstats_entry *entry, FILE *devin)
+{
+    char            line[1024];
+    char           *stats, *start = line;
+    int             len, rc;
+    uintmax_t       scan_val;
+
+    /*
      * Read in each line in turn, isolate the systemstats name
      *   and retrieve (or create) the corresponding data structure.
      */
+    rc = 0;
     while (1) {
         start = fgets(line, sizeof(line), devin);
         if (NULL == start)
@@ -287,77 +409,123 @@
          *      data structure accordingly.
          */
         scan_val = atoll(stats);
-        if (0 == scan_val)
-            continue;
 
         rc = 0;
         if ('I' == line[3]) { /* In */
             if ('A' == line[5]) {
                 entry->stats.InAddrErrors = scan_val;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INADDRERRORS] = 1;
             } else if ('D' == line[5]) {
                 if ('e' == line[6]) {
                     entry->stats.HCInDelivers.low = scan_val  & 0xffffffff;
                     entry->stats.HCInDelivers.high = scan_val >> 32;
-                } else if ('i' == line[6])
+                    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINDELIVERS] = 1;
+                } else if ('i' == line[6]) {
                     entry->stats.InDiscards = scan_val;
-                else
+                    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INDISCARDS] = 1;
+                } else
                     rc = 1;
             } else if ('H' == line[5]) {
                 entry->stats.InHdrErrors = scan_val;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS] = 1;
             } else if ('M' == line[5]) {
-                entry->stats.HCInMcastPkts.low = scan_val  & 0xffffffff;
-                entry->stats.HCInMcastPkts.high = scan_val >> 32;
+                if ('P' == line[10]) {
+                    entry->stats.HCInMcastPkts.low = scan_val  & 0xffffffff;
+                    entry->stats.HCInMcastPkts.high = scan_val >> 32;
+                    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTPKTS] = 1;
+                } else if ('O' == line[10]) {
+                    entry->stats.HCInMcastOctets.low = scan_val  & 0xffffffff;
+                    entry->stats.HCInMcastOctets.high = scan_val >> 32;
+                    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTOCTETS] = 1;
+                } else
+                    rc = 1;
             } else if ('N' == line[5]) {
-                entry->stats.InNoRoutes = scan_val;
+                entry->stats.HCInNoRoutes.low = scan_val & 0xffffffff;
+                entry->stats.HCInNoRoutes.high = scan_val >> 32;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINNOROUTES] = 1;
             } else if ('R' == line[5]) {
                 entry->stats.HCInReceives.low = scan_val & 0xffffffff;
                 entry->stats.HCInReceives.high = scan_val >> 32;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES] = 1;
             } else if ('T' == line[5]) {
                 if ('r' == line[6]) {
                     entry->stats.InTruncatedPkts = scan_val  & 0xffffffff;
+                    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INTRUNCATEDPKTS] = 1;
                 } else if ('o' == line[6])
                     ; /* TooBig isn't in the MIB, so ignore it */
                 else
                     rc = 1;
             } else if ('U' == line[5]) {
                 entry->stats.InUnknownProtos = scan_val;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INUNKNOWNPROTOS] = 1;
+            } else if ('O' == line[5]) {
+                entry->stats.HCInOctets.low = scan_val & 0xffffffff;
+                entry->stats.HCInOctets.high = scan_val  >> 32;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINOCTETS] = 1;
             } else
                 rc = 1;
         } else if ('O' == line[3]) { /* Out */
             if ('D' == line[6]) {
-                entry->stats.OutDiscards = scan_val;
+                entry->stats.HCOutDiscards.low = scan_val & 0xffffffff;
+                entry->stats.HCOutDiscards.high = scan_val >> 32;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTDISCARDS] = 1;
             } else if ('F' == line[6]) {
                 entry->stats.HCOutForwDatagrams.low = scan_val & 0xffffffff;
                 entry->stats.HCOutForwDatagrams.high = scan_val >> 32;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS] = 1;
             } else if ('M' == line[6]) {
-                entry->stats.HCOutMcastPkts.low = scan_val & 0xffffffff;
-                entry->stats.HCOutMcastPkts.high = scan_val >> 32;
+                if ('P' == line[11]) {
+                    entry->stats.HCOutMcastPkts.low = scan_val & 0xffffffff;
+                    entry->stats.HCOutMcastPkts.high = scan_val >> 32;
+                    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTPKTS] = 1;
+                } else if ('O' == line[11]) {
+                    entry->stats.HCOutMcastOctets.low = scan_val & 0xffffffff;
+                    entry->stats.HCOutMcastOctets.high = scan_val >> 32;
+                    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTOCTETS] = 1;
+                } else
+                    rc = -1;
             } else if ('N' == line[6]) {
-                entry->stats.OutNoRoutes = scan_val;
+                entry->stats.HCOutNoRoutes.low = scan_val & 0xffffffff;
+                entry->stats.HCOutNoRoutes.high = scan_val >> 32;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTNOROUTES] = 1;
             } else if ('R' == line[6]) {
                 entry->stats.HCOutRequests.low = scan_val & 0xffffffff;
                 entry->stats.HCOutRequests.high = scan_val >> 32;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTREQUESTS] = 1;
+            } else if ('O' == line[6]) {
+                entry->stats.HCOutOctets.low = scan_val & 0xffffffff;
+                entry->stats.HCOutOctets.high = scan_val >> 32;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTOCTETS] = 1;
             } else
                 rc = 1;
         } else if ('R' == line[3]) { /* Reasm */
             if ('F' == line[8]) {
                 entry->stats.ReasmFails = scan_val;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMFAILS] = 1;
             } else if ('O' == line[8]) {
                 entry->stats.ReasmOKs = scan_val;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMOKS] = 1;
             } else if ('R' == line[8]) {
                 entry->stats.ReasmReqds = scan_val;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMREQDS] = 1;
             } else if ('T' == line[8]) {
                 ; /* no mib entry for reasm timeout */
             } else
                 rc = 1;
         } else if ('F' == line[3]) { /* Frag */
-            if ('C' == line[7])
-                entry->stats.OutFragCreates = scan_val;
-            else if ('O' == line[7])
-                entry->stats.OutFragOKs = scan_val;
-            else if ('F' == line[7])
-                entry->stats.OutFragFails = scan_val;
-            else
+            if ('C' == line[7]) {
+                entry->stats.HCOutFragCreates.low = scan_val & 0xffffffff;
+                entry->stats.HCOutFragCreates.high = scan_val >> 32;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGCREATES] = 1;
+            } else if ('O' == line[7]) {
+                entry->stats.HCOutFragOKs.low = scan_val & 0xffffffff;
+                entry->stats.HCOutFragOKs.high = scan_val >> 32;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGOKS] = 1;
+            } else if ('F' == line[7]) {
+                entry->stats.HCOutFragFails.low = scan_val & 0xffffffff;
+                entry->stats.HCOutFragFails.high = scan_val >> 32;
+                entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGFAILS] = 1;
+            } else
                 rc = 1;
         } else
             rc = 1;
@@ -365,6 +533,43 @@
         if (rc)
             DEBUGMSGTL(("access:systemstats", "unknown stat %s\n", line));
     }
+    /*
+     * Let DiscontinuityTime and RefreshRate active
+     */
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_DISCONTINUITYTIME] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REFRESHRATE] = 1;
+
+    return rc;
+}
+
+/*
+ * load ipSystemStatsTable for ipv6 entries
+ */
+static int 
+_systemstats_v6_load_systemstats(netsnmp_container* container, u_int load_flags)
+{
+    FILE *devin;
+    netsnmp_systemstats_entry *entry = NULL;
+    const char     *filename = "/proc/net/snmp6";
+    int rc = 0;
+    
+    entry = netsnmp_access_systemstats_entry_create(2, 0,
+            "ipSystemStatsTable.ipv6");
+    if(NULL == entry)
+        return -3;
+    
+    /*
+     * try to open file. If we can't, that's ok - maybe the module hasn't
+     * been loaded yet.
+     */
+    if (!(devin = fopen(filename, "r"))) {
+        DEBUGMSGTL(("access:systemstats",
+                "Failed to load Systemstats Table (linux1), cannot open %s\n",
+                filename));
+        return 0;
+    }
+    
+    rc = _systemstats_v6_load_file(entry, devin);
 
     fclose(devin);
 
@@ -380,4 +585,118 @@
 
     return rc;
 }
+
+#define DEV_SNMP6_DIRNAME   "/proc/net/dev_snmp6"
+#define IFINDEX_LINE        "ifIndex"
+#define DEV_FILENAME_LEN    64
+
+/*
+ * load ipIfStatsTable for ipv6 entries
+ */
+static int 
+_systemstats_v6_load_ifstats(netsnmp_container* container, u_int load_flags)
+{
+    DIR            *dev_snmp6_dir;
+    struct dirent  *dev_snmp6_entry;
+    char           dev_filename[DEV_FILENAME_LEN];
+    FILE           *devin;
+    char           line[1024];
+    char           *start = line;
+    char           *scan_str;
+    uintmax_t       scan_val;
+    netsnmp_systemstats_entry *entry = NULL;
+            
+    /*
+     * try to open /proc/net/dev_snmp6 directory. If we can't, that' ok -
+     * maybe it is not supported by the current running kernel.
+     */
+    if ((dev_snmp6_dir = opendir(DEV_SNMP6_DIRNAME)) == NULL) {
+        DEBUGMSGTL(("access:ifstats",
+        "Failed to load IPv6 IfStats Table (linux)\n"));
+        return 0;
+    }
+    
+    /*
+     * Read each per interface statistics proc file
+     */
+    while ((dev_snmp6_entry = readdir(dev_snmp6_dir)) != NULL) {
+        if (dev_snmp6_entry->d_name[0] == '.')
+            continue;
+    
+        if (snprintf(dev_filename, DEV_FILENAME_LEN, "%s/%s", DEV_SNMP6_DIRNAME,
+                dev_snmp6_entry->d_name) > DEV_FILENAME_LEN) {
+            snmp_log(LOG_ERR, "Interface name %s is too long\n",
+                    dev_snmp6_entry->d_name);
+            continue;
+        }
+        if (NULL == (devin = fopen(dev_filename, "r"))) {
+            snmp_log(LOG_ERR, "Failed to open %s\n", dev_filename);
+            continue;
+        }
+    
+        /*
+         * If a stat file name is made of digits, the name is interface index.
+         * If it is an interface name, the file includes a line labeled ifIndex.
+         */
+        if (isdigit(dev_snmp6_entry->d_name[0])) {
+            scan_val = strtoull(dev_snmp6_entry->d_name, NULL, 0);
+        } else {
+            if (NULL == (start = fgets(line, sizeof(line), devin))) {
+                snmp_log(LOG_ERR, "%s doesn't include any lines\n",
+                        dev_filename);
+                fclose(devin);
+                continue;
+            }
+    
+            if (0 != strncmp(start, IFINDEX_LINE, 7)) {
+                snmp_log(LOG_ERR, "%s doesn't include ifIndex line",
+                        dev_filename);
+                fclose(devin);
+                continue;
+            }
+
+            scan_str = strrchr(line, ' ');
+            if (NULL == scan_str) {
+                snmp_log(LOG_ERR, "%s is wrong format", dev_filename);
+                fclose(devin);
+                continue;
+            }
+            scan_val = strtoull(scan_str, NULL, 0);
+        }
+        
+        entry = netsnmp_access_systemstats_entry_create(2, scan_val,
+                "ipIfStatsTable.ipv6");
+        if(NULL == entry) {
+            fclose(devin);
+            closedir(dev_snmp6_dir);
+            return -3;
+        }
+        
+        _systemstats_v6_load_file(entry, devin);
+        CONTAINER_INSERT(container, entry);
+        fclose(devin);
+    }
+    closedir(dev_snmp6_dir);
+    return 0;
+}
+
+/*
+ * Based on load_flags, load ipSystemStatsTable or ipIfStatsTable for ipv6 entries. 
+ */
+static int
+_systemstats_v6(netsnmp_container* container, u_int load_flags)
+{
+    DEBUGMSGTL(("access:systemstats:container:arch", "load v6 (flags %u)\n",
+                load_flags));
+
+    netsnmp_assert(container != NULL); /* load function shoulda checked this */
+
+    if (load_flags & NETSNMP_ACCESS_SYSTEMSTATS_LOAD_IFTABLE) {
+        /* load ipIfStatsTable */
+        return _systemstats_v6_load_ifstats(container, load_flags);
+    } else {
+        /* load ipSystemStatsTable */
+        return _systemstats_v6_load_systemstats(container, load_flags);
+    }
+}
 #endif /* NETSNMP_ENABLE_IPV6 */
diff --git a/agent/mibgroup/ip-mib/data_access/systemstats_solaris2.c b/agent/mibgroup/ip-mib/data_access/systemstats_solaris2.c
new file mode 100644
index 0000000..f2ec497
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/systemstats_solaris2.c
@@ -0,0 +1,213 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/ipstats.h>
+#include <net-snmp/data_access/systemstats.h>
+
+#include "kernel_sunos5.h"
+
+static int _systemstats(mibgroup_e, netsnmp_container *, u_int);
+static void _add_ipstats(mib2_ipIfStatsEntry_t *, mib2_ipIfStatsEntry_t *);
+static int _insert_entry(netsnmp_container *, mib2_ipIfStatsEntry_t *);
+
+void
+netsnmp_access_systemstats_arch_init(void)
+{
+    init_kernel_sunos5();
+}
+
+/*
+ * @retval  0 success
+ * @retval -1 container error
+ * @retval -2 could not create entry (probably malloc)
+ */
+int
+netsnmp_access_systemstats_container_arch_load(netsnmp_container* container,
+                                             u_int load_flags)
+{
+    int rc; 
+    
+    if (container == NULL)
+        return (-1);
+
+    if (load_flags & NETSNMP_ACCESS_SYSTEMSTATS_LOAD_IFTABLE)
+	return 0; /* we do not support ipIfStatsTable yet */
+
+    if ((rc = _systemstats(MIB_IP_TRAFFIC_STATS, container, load_flags)) < 0)
+        return (rc);
+#if defined(NETSNMP_ENABLE_IPV6)
+    if ((rc = _systemstats(MIB_IP6, container, load_flags)) < 0) {
+            netsnmp_access_systemstats_container_free(container,
+                NETSNMP_ACCESS_SYSTEMSTATS_FREE_NOFLAGS);
+        return (rc);
+    }
+#endif
+    return (0);
+}
+
+/*
+ * @retval 0 success 
+ * @retval <0 error
+ */
+static int
+_systemstats(mibgroup_e mib, netsnmp_container *container, u_int load_flags)
+{
+    mib2_ipIfStatsEntry_t ipe, iptot;
+    req_e req = GET_FIRST;
+    int ipversion = (mib == MIB_IP6) ? MIB2_INETADDRESSTYPE_ipv6 :
+                                       MIB2_INETADDRESSTYPE_ipv4;
+    memset(&iptot, '\0', sizeof(iptot));
+
+    while (getMibstat(mib, &ipe, sizeof(ipe), req, 
+                      &Get_everything, NULL) == 0) { 
+        req = GET_NEXT;
+        netsnmp_assert(ipe.ipIfStatsIPVersion == ipversion);
+        _add_ipstats(&iptot, &ipe);
+    }
+    iptot.ipIfStatsIPVersion = ipversion;
+    return _insert_entry(container, &iptot);
+}
+
+static void
+_add_ipstats(mib2_ipIfStatsEntry_t *o1, mib2_ipIfStatsEntry_t *o2)
+{
+    o1->ipIfStatsInHdrErrors += o2->ipIfStatsInHdrErrors;
+    o1->ipIfStatsInTooBigErrors += o2->ipIfStatsInTooBigErrors;
+    o1->ipIfStatsInNoRoutes += o2->ipIfStatsInNoRoutes;
+    o1->ipIfStatsInAddrErrors += o2->ipIfStatsInAddrErrors;
+    o1->ipIfStatsInUnknownProtos += o2->ipIfStatsInUnknownProtos;
+    o1->ipIfStatsInTruncatedPkts += o2->ipIfStatsInTruncatedPkts;
+    o1->ipIfStatsInDiscards += o2->ipIfStatsInDiscards;
+    o1->ipIfStatsOutDiscards += o2->ipIfStatsOutDiscards;
+    o1->ipIfStatsOutFragOKs += o2->ipIfStatsOutFragOKs;
+    o1->ipIfStatsOutFragFails += o2->ipIfStatsOutFragFails;
+    o1->ipIfStatsOutFragCreates += o2->ipIfStatsOutFragCreates;
+    o1->ipIfStatsReasmReqds += o2->ipIfStatsReasmReqds;
+    o1->ipIfStatsReasmOKs += o2->ipIfStatsReasmOKs;
+    o1->ipIfStatsReasmFails += o2->ipIfStatsReasmFails;
+    o1->ipIfStatsOutNoRoutes += o2->ipIfStatsOutNoRoutes;
+    o1->ipIfStatsReasmDuplicates += o2->ipIfStatsReasmDuplicates;
+    o1->ipIfStatsReasmPartDups += o2->ipIfStatsReasmPartDups;
+    o1->ipIfStatsForwProhibits += o2->ipIfStatsForwProhibits;
+    o1->udpInCksumErrs += o2->udpInCksumErrs;
+    o1->udpInOverflows += o2->udpInOverflows;
+    o1->rawipInOverflows += o2->rawipInOverflows;
+    o1->ipIfStatsInWrongIPVersion += o2->ipIfStatsInWrongIPVersion;
+    o1->ipIfStatsOutWrongIPVersion += o2->ipIfStatsOutWrongIPVersion;
+    o1->ipIfStatsOutSwitchIPVersion += o2->ipIfStatsOutSwitchIPVersion;
+    o1->ipIfStatsHCInReceives += o2->ipIfStatsHCInReceives;
+    o1->ipIfStatsHCInOctets += o2->ipIfStatsHCInOctets;
+    o1->ipIfStatsHCInForwDatagrams += o2->ipIfStatsHCInForwDatagrams;
+    o1->ipIfStatsHCInDelivers += o2->ipIfStatsHCInDelivers;
+    o1->ipIfStatsHCOutRequests += o2->ipIfStatsHCOutRequests;
+    o1->ipIfStatsHCOutForwDatagrams += o2->ipIfStatsHCOutForwDatagrams;
+    o1->ipIfStatsOutFragReqds += o2->ipIfStatsOutFragReqds;
+    o1->ipIfStatsHCOutTransmits += o2->ipIfStatsHCOutTransmits;
+    o1->ipIfStatsHCOutOctets += o2->ipIfStatsHCOutOctets;
+    o1->ipIfStatsHCInMcastPkts += o2->ipIfStatsHCInMcastPkts;
+    o1->ipIfStatsHCInMcastOctets += o2->ipIfStatsHCInMcastOctets;
+    o1->ipIfStatsHCOutMcastPkts += o2->ipIfStatsHCOutMcastPkts;
+    o1->ipIfStatsHCOutMcastOctets += o2->ipIfStatsHCOutMcastOctets;
+    o1->ipIfStatsHCInBcastPkts += o2->ipIfStatsHCInBcastPkts;
+    o1->ipIfStatsHCOutBcastPkts += o2->ipIfStatsHCOutBcastPkts;
+    o1->ipsecInSucceeded += o2->ipsecInSucceeded;
+    o1->ipsecInFailed += o2->ipsecInFailed;
+    o1->ipInCksumErrs += o2->ipInCksumErrs;
+    o1->tcpInErrs += o2->tcpInErrs;
+    o1->udpNoPorts += o2->udpNoPorts;
+}
+
+/*
+ * @retval 0 entry was successfully inserted in the container 
+ * @retval -1 container error
+ * @retval -2 memory allocation error
+ */
+static int 
+_insert_entry(netsnmp_container *container, mib2_ipIfStatsEntry_t *ipe)
+{
+    int i;
+    
+    netsnmp_systemstats_entry *ep =
+        netsnmp_access_systemstats_entry_create(ipe->ipIfStatsIPVersion, 0,
+                "ipSystemStatsTable"); 
+
+    DEBUGMSGTL(("access:systemstats:arch", "insert entry for v%d\n",
+                ipe->ipIfStatsIPVersion)); 
+    if (ep == NULL) {
+        DEBUGMSGT(("access:systemstats:arch", "insert failed (alloc)"));
+        return (-2);
+    }
+
+    ep->stats.HCInReceives.low = 
+        ipe->ipIfStatsHCInReceives & 0xffffffff;
+    ep->stats.HCInReceives.high = ipe->ipIfStatsHCInReceives >> 32;
+    ep->stats.HCInOctets.low = 
+        ipe->ipIfStatsHCInOctets & 0xffffffff;
+    ep->stats.HCInOctets.high = ipe->ipIfStatsHCInOctets >> 32;
+    ep->stats.InHdrErrors = ipe->ipIfStatsInHdrErrors;
+    ep->stats.InAddrErrors = ipe->ipIfStatsInAddrErrors;
+    ep->stats.InUnknownProtos = ipe->ipIfStatsInUnknownProtos;
+    ep->stats.InTruncatedPkts = ipe->ipIfStatsInTruncatedPkts;
+    ep->stats.HCInForwDatagrams.low = 
+        ipe->ipIfStatsHCInForwDatagrams & 0xffffffff;
+    ep->stats.HCInForwDatagrams.high = 
+        ipe->ipIfStatsHCInForwDatagrams >> 32;
+    ep->stats.ReasmReqds = ipe->ipIfStatsReasmReqds; 
+    ep->stats.ReasmOKs = ipe->ipIfStatsReasmOKs; 
+    ep->stats.ReasmFails = ipe->ipIfStatsReasmFails; 
+    ep->stats.InDiscards = ipe->ipIfStatsInDiscards;
+    ep->stats.HCInDelivers.low = 
+        ipe->ipIfStatsHCInDelivers & 0xffffffff; 
+    ep->stats.HCInDelivers.high = 
+        ipe->ipIfStatsHCInDelivers >> 32; 
+    ep->stats.HCOutRequests.low = 
+        ipe->ipIfStatsHCOutRequests & 0xffffffff;
+    ep->stats.HCOutRequests.high = 
+        ipe->ipIfStatsHCOutRequests >> 32; 
+    ep->stats.HCOutNoRoutes.low = ipe->ipIfStatsOutNoRoutes & 0xffffffff; 
+    ep->stats.HCOutNoRoutes.high = 0;
+    ep->stats.HCOutForwDatagrams.low = 
+        ipe->ipIfStatsHCOutForwDatagrams & 0xffffffff;
+    ep->stats.HCOutForwDatagrams.high = 
+        ipe->ipIfStatsHCOutForwDatagrams >> 32;
+    ep->stats.HCOutDiscards.low = ipe->ipIfStatsOutDiscards & 0xffffffff;
+    ep->stats.HCOutDiscards.high = 0; 
+    ep->stats.HCOutFragOKs.low = ipe->ipIfStatsOutFragOKs & 0xffffffff;
+    ep->stats.HCOutFragOKs.high = 0;
+    ep->stats.HCOutFragFails.low = ipe->ipIfStatsOutFragFails & 0xffffffff; 
+    ep->stats.HCOutFragFails.high = 0;
+    ep->stats.HCOutFragCreates.low = ipe->ipIfStatsOutFragCreates & 0xffffffff;
+    ep->stats.HCOutFragCreates.high = 0;
+    ep->stats.HCOutTransmits.low = 
+        ipe->ipIfStatsHCOutTransmits & 0xffffffff;
+    ep->stats.HCOutTransmits.high = ipe->ipIfStatsHCOutTransmits >> 32;
+    ep->stats.HCOutOctets.low = ipe->ipIfStatsHCOutOctets & 0xffffffff;
+    ep->stats.HCOutOctets.high = ipe->ipIfStatsHCOutOctets >> 32;
+    ep->stats.HCInMcastPkts.low = ipe->ipIfStatsHCInMcastPkts & 0xffffffff;
+    ep->stats.HCInMcastPkts.high = ipe->ipIfStatsHCInMcastPkts >> 32;
+    ep->stats.HCInMcastOctets.low = 
+        ipe->ipIfStatsHCInMcastOctets & 0xffffffff;
+    ep->stats.HCInMcastOctets.high = ipe->ipIfStatsHCInMcastOctets >> 32;
+    ep->stats.HCOutMcastPkts.low = 
+        ipe->ipIfStatsHCOutMcastPkts & 0xffffffff;
+    ep->stats.HCOutMcastPkts.high = ipe->ipIfStatsHCOutMcastPkts >> 32;
+    ep->stats.HCOutMcastOctets.low = 
+        ipe->ipIfStatsHCOutMcastOctets & 0xffffffff;
+    ep->stats.HCOutMcastOctets.high = ipe->ipIfStatsHCOutMcastOctets >> 32;
+    ep->stats.HCInBcastPkts.low = ipe->ipIfStatsHCInBcastPkts & 0xffffffff;
+    ep->stats.HCInBcastPkts.high = ipe->ipIfStatsHCInBcastPkts >> 32;
+    ep->stats.HCOutBcastPkts.low = 
+        ipe->ipIfStatsHCOutBcastPkts & 0xffffffff;
+    ep->stats.HCOutBcastPkts.high = ipe->ipIfStatsHCOutBcastPkts >> 32;
+
+    for (i=0; i<=IPSYSTEMSTATSTABLE_LAST; i++)
+        ep->stats.columnAvail[i] = 1;
+    
+    if (CONTAINER_INSERT(container, ep) < 0) {
+        DEBUGMSGT(("access:systemstats:arch", "unable to insert entry")); 
+        netsnmp_access_systemstats_entry_free(ep); 
+        return (-1);
+    }
+    return (0);
+}
diff --git a/agent/mibgroup/ip-mib/data_access/systemstats_sysctl.c b/agent/mibgroup/ip-mib/data_access/systemstats_sysctl.c
new file mode 100644
index 0000000..a1ca16d
--- /dev/null
+++ b/agent/mibgroup/ip-mib/data_access/systemstats_sysctl.c
@@ -0,0 +1,791 @@
+/*
+ *  ipSystemStatsTable and ipIfStatsTable interface MIB architecture support
+ *
+ * $Id$
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/data_access/ipstats.h>
+#include <net-snmp/data_access/systemstats.h>
+
+#include "../ipSystemStatsTable/ipSystemStatsTable.h"
+
+#if defined(NETSNMP_IFNET_NEEDS_KERNEL) && !defined(_KERNEL)
+#define _KERNEL 1
+#define _I_DEFINED_KERNEL
+#endif
+#if NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES
+#endif
+
+#include <sys/types.h>
+#include <dirent.h>
+#include <ctype.h>
+
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <sys/protosw.h>
+
+#include <net/if.h>
+#include <netinet/in.h>
+#include <netinet/in_systm.h>
+#include <netinet/ip.h>
+#include <netinet/ip_icmp.h>
+#include <netinet/ip_var.h>
+#if HAVE_NETINET6_IP6_VAR_H
+#include <netinet6/ip6_var.h>
+#endif
+#ifndef freebsd7
+#include <netinet6/in6_var.h>
+#endif
+
+#ifdef darwin
+
+/* This struct is in netinet6/ip6_var.h which Apple for obscure reasons
+ * do not distribute as part of /usr/include :-(
+ */
+
+struct	ip6stat {
+	u_quad_t ip6s_total;		/* total packets received */
+	u_quad_t ip6s_tooshort;		/* packet too short */
+	u_quad_t ip6s_toosmall;		/* not enough data */
+	u_quad_t ip6s_fragments;	/* fragments received */
+	u_quad_t ip6s_fragdropped;	/* frags dropped(dups, out of space) */
+	u_quad_t ip6s_fragtimeout;	/* fragments timed out */
+	u_quad_t ip6s_fragoverflow;	/* fragments that exceeded limit */
+	u_quad_t ip6s_forward;		/* packets forwarded */
+	u_quad_t ip6s_cantforward;	/* packets rcvd for unreachable dest */
+	u_quad_t ip6s_redirectsent;	/* packets forwarded on same net */
+	u_quad_t ip6s_delivered;	/* datagrams delivered to upper level*/
+	u_quad_t ip6s_localout;		/* total ip packets generated here */
+	u_quad_t ip6s_odropped;		/* lost packets due to nobufs, etc. */
+	u_quad_t ip6s_reassembled;	/* total packets reassembled ok */
+	u_quad_t ip6s_fragmented;	/* datagrams sucessfully fragmented */
+	u_quad_t ip6s_ofragments;	/* output fragments created */
+	u_quad_t ip6s_cantfrag;		/* don't fragment flag was set, etc. */
+	u_quad_t ip6s_badoptions;	/* error in option processing */
+	u_quad_t ip6s_noroute;		/* packets discarded due to no route */
+	u_quad_t ip6s_badvers;		/* ip6 version != 6 */
+	u_quad_t ip6s_rawout;		/* total raw ip packets generated */
+	u_quad_t ip6s_badscope;		/* scope error */
+	u_quad_t ip6s_notmember;	/* don't join this multicast group */
+	u_quad_t ip6s_nxthist[256];	/* next header history */
+	u_quad_t ip6s_m1;		/* one mbuf */
+	u_quad_t ip6s_m2m[32];		/* two or more mbuf */
+	u_quad_t ip6s_mext1;		/* one ext mbuf */
+	u_quad_t ip6s_mext2m;		/* two or more ext mbuf */
+	u_quad_t ip6s_exthdrtoolong;	/* ext hdr are not continuous */
+	u_quad_t ip6s_nogif;		/* no match gif found */
+	u_quad_t ip6s_toomanyhdr;	/* discarded due to too many headers */
+
+	/*
+	 * statistics for improvement of the source address selection
+	 * algorithm:
+	 * XXX: hardcoded 16 = # of ip6 multicast scope types + 1
+	 */
+	/* number of times that address selection fails */
+	u_quad_t ip6s_sources_none;
+	/* number of times that an address on the outgoing I/F is chosen */
+	u_quad_t ip6s_sources_sameif[16];
+	/* number of times that an address on a non-outgoing I/F is chosen */
+	u_quad_t ip6s_sources_otherif[16];
+	/*
+	 * number of times that an address that has the same scope
+	 * from the destination is chosen.
+	 */
+	u_quad_t ip6s_sources_samescope[16];
+	/*
+	 * number of times that an address that has a different scope
+	 * from the destination is chosen.
+	 */
+	u_quad_t ip6s_sources_otherscope[16];
+	/* number of times that an deprecated address is chosen */
+	u_quad_t ip6s_sources_deprecated[16];
+
+	u_quad_t ip6s_forward_cachehit;
+	u_quad_t ip6s_forward_cachemiss;
+};
+
+#endif /* darwin*/
+
+static int _systemstats_v4(netsnmp_container* container, u_int load_flags);
+
+#if defined (NETSNMP_ENABLE_IPV6)
+static int _systemstats_v6(netsnmp_container* container, u_int load_flags);
+#endif
+
+static int ncpus;
+
+void
+netsnmp_access_systemstats_arch_init(void)
+{
+    int    ncpu_mib[]  = { CTL_HW, HW_NCPU };
+    size_t siz = sizeof(ncpus);
+    if (sysctl(ncpu_mib, 2, &ncpus, &siz, NULL, 0) < 0) {
+	snmp_log_perror("hw.ncpu");
+        ncpus = 1;
+    }
+}
+
+/*
+ *
+ * @retval  0 success
+ * @retval -1 no container specified
+ * @retval -2 could not open file
+ * @retval -3 could not create entry (probably malloc)
+ * @retval -4 file format error
+ */
+int
+netsnmp_access_systemstats_container_arch_load(netsnmp_container* container,
+                                             u_int load_flags)
+{
+    int rc1;
+#if defined (NETSNMP_ENABLE_IPV6)
+    int rc2;
+#endif
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR, "no container specified/found for access_systemstats_\n");
+        return -1;
+    }
+    
+    /*
+     * load v4 and v6 stats. Even if one fails, try the other.
+     * If they have the same rc, return it. if the differ, return
+     * the smaller one. No log messages, since each individual function
+     * would have logged its own message.
+     */
+    rc1 = _systemstats_v4(container, load_flags);
+#if defined (NETSNMP_ENABLE_IPV6)
+    rc2 = _systemstats_v6(container, load_flags);
+    if ((rc1 == rc2) || (rc1 < rc2))
+        return rc1;
+        
+    return rc2;
+#else
+    return rc1;
+#endif
+}
+
+/*
+ * Based on load_flags, load ipSystemStatsTable or ipIfStatsTable for ipv4 entries. 
+ */
+#ifdef __NetBSD__
+
+static int
+_systemstats_v4(netsnmp_container* container, u_int load_flags)
+{
+    netsnmp_systemstats_entry *entry = NULL;
+    uint64_t ipstat[IP_NSTATS];
+    size_t len = sizeof(ipstat);
+
+    if (sysctlbyname("net.inet.ip.stats", &ipstat, &len, NULL, 0) < 0) {
+	NETSNMP_LOGONCE((LOG_ERR, "Cannot sysctlbyname net.inet.ip.stats\n"));
+	return -2;
+    }
+
+    DEBUGMSGTL(("access:systemstats:container:arch", "load v4 (flags %x)\n",
+                load_flags));
+
+    netsnmp_assert(container != NULL); /* load function shoulda checked this */
+
+    if (load_flags & NETSNMP_ACCESS_SYSTEMSTATS_LOAD_IFTABLE) {
+        /* we do not support ipIfStatsTable for ipv4 */
+        return 0;
+    }
+
+    entry = netsnmp_access_systemstats_entry_create(1, 0,
+		"ipSystemStatsTable.ipv4");
+    if(NULL == entry) {
+	snmp_log(LOG_ERR, "systemstats_v4: cannot create entry\n");
+	netsnmp_access_systemstats_container_free(container,
+						  NETSNMP_ACCESS_SYSTEMSTATS_FREE_NOFLAGS);
+	return -3;
+    }
+
+    /*
+     * OK - we've now got (or created) the data structure for
+     *      this systemstats, including any "static" information.
+     * Now parse the rest of the line (i.e. starting from 'stats')
+     *      to extract the relevant statistics, and populate
+     *      data structure accordingly.
+     */
+
+    entry->stats.HCInReceives.low = ipstat[IP_STAT_TOTAL] & 0xffffffff;
+    entry->stats.HCInReceives.high = ipstat[IP_STAT_TOTAL] >> 32;
+    entry->stats.InHdrErrors = ipstat[IP_STAT_BADSUM]
+		    + ipstat[IP_STAT_TOOSHORT] + ipstat[IP_STAT_TOOSMALL]
+	            + ipstat[IP_STAT_BADHLEN] + ipstat[IP_STAT_BADLEN];
+    entry->stats.InAddrErrors = ipstat[IP_STAT_CANTFORWARD];
+    entry->stats.HCOutForwDatagrams.low = ipstat[IP_STAT_FORWARD] & 0xffffffff;
+    entry->stats.HCOutForwDatagrams.high = ipstat[IP_STAT_FORWARD] >> 32;
+    entry->stats.InUnknownProtos = ipstat[IP_STAT_NOPROTO];
+    entry->stats.InDiscards = ipstat[IP_STAT_FRAGDROPPED];
+    entry->stats.HCInDelivers.low = ipstat[IP_STAT_DELIVERED] & 0xffffffff;
+    entry->stats.HCInDelivers.high = ipstat[IP_STAT_DELIVERED] >> 32;
+    entry->stats.HCOutRequests.low = ipstat[IP_STAT_LOCALOUT] & 0xffffffff;
+    entry->stats.HCOutRequests.high = ipstat[IP_STAT_LOCALOUT] >> 32;
+    entry->stats.HCOutDiscards.low = ipstat[IP_STAT_ODROPPED] & 0xffffffff;
+    entry->stats.HCOutDiscards.high = ipstat[IP_STAT_ODROPPED] >> 32;
+    entry->stats.HCOutNoRoutes.low = ipstat[IP_STAT_NOGIF] & 0xffffffff;
+    entry->stats.HCOutNoRoutes.high = ipstat[IP_STAT_NOGIF] >> 32;
+    /* entry->stats. = scan_vals[12]; / * ReasmTimeout */
+    entry->stats.ReasmReqds = ipstat[IP_STAT_FRAGMENTS];
+    entry->stats.ReasmOKs = ipstat[IP_STAT_REASSEMBLED];
+    entry->stats.ReasmFails = ipstat[IP_STAT_FRAGDROPPED]
+		    + ipstat[IP_STAT_FRAGTIMEOUT];
+    entry->stats.HCOutFragOKs.low = ipstat[IP_STAT_FRAGMENTS] & 0xffffffff;
+    entry->stats.HCOutFragOKs.high = ipstat[IP_STAT_FRAGMENTS] >> 32;
+    entry->stats.HCOutFragFails.low = ipstat[IP_STAT_CANTFRAG] & 0xffffffff;
+    entry->stats.HCOutFragFails.high = ipstat[IP_STAT_CANTFRAG] >> 32;
+    entry->stats.HCOutFragCreates.low = ipstat[IP_STAT_OFRAGMENTS] & 0xffffffff;
+    entry->stats.HCOutFragCreates.high = ipstat[IP_STAT_OFRAGMENTS] >> 32;
+
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INADDRERRORS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INUNKNOWNPROTOS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INDISCARDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINDELIVERS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTREQUESTS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTDISCARDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTNOROUTES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMREQDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMOKS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMFAILS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGOKS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGFAILS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGCREATES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_DISCONTINUITYTIME] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REFRESHRATE] = 1;
+
+    /*
+     * add to container
+     */
+    if (CONTAINER_INSERT(container, entry) < 0)
+    {
+	snmp_log(LOG_ERR, "error with systemstats_v4: insert into container failed.\n");
+	netsnmp_access_systemstats_entry_free(entry);
+    }
+
+    return 0;
+}
+
+
+#if defined (NETSNMP_ENABLE_IPV6)
+
+static int
+_systemstats_v6_load_systemstats(netsnmp_container* container, u_int load_flags)
+{
+    netsnmp_systemstats_entry *entry = NULL;
+    uint64_t ipstat[IP6_NSTATS];
+    size_t len = sizeof(ipstat);
+
+    if (sysctlbyname("net.inet6.ip6.stats", &ipstat, &len, NULL, 0) < 0) {
+	NETSNMP_LOGONCE((LOG_ERR, "Cannot sysctlbyname net.inet6.ip6.stats\n"));
+	return -2;
+    }
+
+    DEBUGMSGTL(("access:systemstats:container:arch", "load v6 (flags %x)\n",
+                load_flags));
+
+    netsnmp_assert(container != NULL); /* load function shoulda checked this */
+
+    entry = netsnmp_access_systemstats_entry_create(2, 0,
+		"ipSystemStatsTable.ipv6");
+    if(NULL == entry) {
+	snmp_log(LOG_ERR, "systemstats_v6_load_systemstats: cannot create entry\n");
+	netsnmp_access_systemstats_container_free(container,
+						  NETSNMP_ACCESS_SYSTEMSTATS_FREE_NOFLAGS);
+	return -3;
+    }
+
+    /*
+     * OK - we've now got (or created) the data structure for
+     *      this systemstats, including any "static" information.
+     */
+
+    entry->stats.HCInReceives.low = ipstat[IP6_STAT_TOTAL] & 0xffffffff;
+    entry->stats.HCInReceives.high = ipstat[IP6_STAT_TOTAL] >> 32;
+    entry->stats.InHdrErrors = ipstat[IP6_STAT_BADOPTIONS]
+		    + ipstat[IP6_STAT_TOOSHORT] + ipstat[IP6_STAT_TOOSMALL]
+		    + ipstat[IP6_STAT_TOOMANYHDR] + ipstat[IP6_STAT_EXTHDRTOOLONG];
+    entry->stats.InAddrErrors = ipstat[IP6_STAT_CANTFORWARD];
+    entry->stats.HCOutForwDatagrams.low = ipstat[IP6_STAT_FORWARD] & 0xffffffff;
+    entry->stats.HCOutForwDatagrams.high = ipstat[IP6_STAT_FORWARD] >> 32;
+    entry->stats.InDiscards = ipstat[IP6_STAT_FRAGDROPPED];
+    entry->stats.HCInDelivers.low = ipstat[IP6_STAT_DELIVERED] & 0xffffffff;
+    entry->stats.HCInDelivers.high = ipstat[IP6_STAT_DELIVERED] >> 32;
+    entry->stats.HCOutRequests.low = ipstat[IP6_STAT_LOCALOUT] & 0xffffffff;
+    entry->stats.HCOutRequests.high = ipstat[IP6_STAT_LOCALOUT] >> 32;
+    entry->stats.HCOutDiscards.low = ipstat[IP6_STAT_ODROPPED] & 0xffffffff;
+    entry->stats.HCOutDiscards.high = ipstat[IP6_STAT_ODROPPED] >> 32;
+    entry->stats.HCOutNoRoutes.low = ipstat[IP6_STAT_NOGIF] & 0xffffffff;
+    entry->stats.HCOutNoRoutes.high = ipstat[IP6_STAT_NOGIF] >> 32;
+    /* entry->stats. = scan_vals[12]; / * ReasmTimeout */
+    entry->stats.ReasmReqds = ipstat[IP6_STAT_FRAGMENTS];
+    entry->stats.ReasmOKs = ipstat[IP6_STAT_REASSEMBLED];
+    entry->stats.ReasmFails = ipstat[IP6_STAT_FRAGDROPPED]
+		    + ipstat[IP6_STAT_FRAGTIMEOUT];
+    entry->stats.HCOutFragOKs.low = ipstat[IP6_STAT_FRAGMENTS] & 0xffffffff;
+    entry->stats.HCOutFragOKs.high = ipstat[IP6_STAT_FRAGMENTS] >> 32;
+    entry->stats.HCOutFragFails.low = ipstat[IP6_STAT_CANTFRAG] & 0xffffffff;
+    entry->stats.HCOutFragFails.high = ipstat[IP6_STAT_CANTFRAG] >> 32;
+    entry->stats.HCOutFragCreates.low = ipstat[IP6_STAT_OFRAGMENTS] & 0xffffffff;
+    entry->stats.HCOutFragCreates.high = ipstat[IP6_STAT_OFRAGMENTS] >> 32;
+
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INADDRERRORS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INDISCARDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINDELIVERS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTREQUESTS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTDISCARDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTNOROUTES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMREQDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMOKS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMFAILS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGOKS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGFAILS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGCREATES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_DISCONTINUITYTIME] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REFRESHRATE] = 1;
+
+    /*
+     * add to container
+     */
+    if (CONTAINER_INSERT(container, entry) < 0)
+    {
+	snmp_log(LOG_ERR, "systemstats_v6_load_systemstats: cannot insert entry\n");
+	DEBUGMSGTL(("access:systemstats:container","error with systemstats_entry: insert into container failed.\n"));
+	netsnmp_access_systemstats_entry_free(entry);
+    }
+
+    return 0;
+}
+
+
+/*
+ * load ipIfStatsTable for ipv6 entries
+ */
+static int 
+_systemstats_v6_load_ifstats(netsnmp_container* container, u_int load_flags)
+{
+    struct if_nameindex *ifs = if_nameindex();
+    int ix;
+    int rc = 0;
+
+    for (ix = 0; ifs[ix].if_index; ix++) {
+	struct in6_ifstat *ifs6;
+	struct in6_ifreq ifr;
+	int s;
+
+	memset(&ifr, 0, sizeof(ifr));
+	strncpy(ifr.ifr_name, ifs[ix].if_name, sizeof(ifr.ifr_name)-1);
+	if ((s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
+	    rc = -1;
+	    break;
+	}
+	if (ioctl(s, SIOCGIFSTAT_IN6, (caddr_t)&ifr) < 0) {
+	    rc = -2;
+	    close(s);
+	    break;
+	}
+	close(s);
+	ifs6 = &ifr.ifr_ifru.ifru_stat;
+    }
+    if_freenameindex(ifs);
+    return rc;
+}
+#endif
+
+#else
+
+static int
+_systemstats_v4(netsnmp_container* container, u_int load_flags)
+{
+    netsnmp_systemstats_entry *entry = NULL;
+#ifdef __DragonFly__
+    size_t len = ncpus*sizeof(struct ip_stats);
+    struct ip_stats *ipstat = malloc(len);
+    int c;
+#else
+    size_t len = sizeof(struct ipstat);
+    struct ipstat *ipstat = malloc(len);
+#endif
+    int mib[] = { CTL_NET, PF_INET, IPPROTO_IP, IPCTL_STATS };
+
+    if (sysctl(mib, sizeof(mib) / sizeof(mib[0]), ipstat, &len, NULL, 0) == -1) {
+	snmp_log_perror("Cannot sysctlbyname net.inet.ip.stats");
+	free(ipstat);
+	return -2;
+    }
+
+    DEBUGMSGTL(("access:systemstats:container:arch", "load v4 (flags %x)\n",
+                load_flags));
+
+    netsnmp_assert(container != NULL); /* load function shoulda checked this */
+
+    if (load_flags & NETSNMP_ACCESS_SYSTEMSTATS_LOAD_IFTABLE) {
+        /* we do not support ipIfStatsTable for ipv4 */
+	free(ipstat);
+        return 0;
+    }
+
+    entry = netsnmp_access_systemstats_entry_create(1, 0,
+		"ipSystemStatsTable.ipv4");
+    if(NULL == entry) {
+	netsnmp_access_systemstats_container_free(container,
+						  NETSNMP_ACCESS_SYSTEMSTATS_FREE_NOFLAGS);
+	free(ipstat);
+	return -3;
+    }
+
+    /*
+     * OK - we've now got (or created) the data structure for
+     *      this systemstats, including any "static" information.
+     * Now parse the rest of the line (i.e. starting from 'stats')
+     *      to extract the relevant statistics, and populate
+     *      data structure accordingly.
+     */
+
+#ifdef dragonfly
+    for (c = 1; c < ncpus; c++) {
+	int i, n = sizeof(struct ip_stats)/sizeof(u_long);
+	u_long *up = (u_long *)ipstat;
+	u_long *cp = (u_long *)(ipstat+c);
+	for (i = 0; i < n; i++) {
+	    *up += *cp;
+	    up++;
+	    cp++;
+	}
+    }
+#endif
+    entry->stats.HCInReceives.low = ipstat->ips_total & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCInReceives.high = ipstat->ips_total >> 32;
+#endif
+    entry->stats.InHdrErrors = ipstat->ips_badsum + ipstat->ips_tooshort
+		            + ipstat->ips_toosmall + ipstat->ips_badhlen
+			    + ipstat->ips_badlen;
+    entry->stats.InAddrErrors = ipstat->ips_cantforward;
+    entry->stats.HCOutForwDatagrams.low = ipstat->ips_forward & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCOutForwDatagrams.high = ipstat->ips_forward >> 32;
+#endif
+    entry->stats.InUnknownProtos = ipstat->ips_noproto;
+    entry->stats.InDiscards = ipstat->ips_fragdropped;
+    entry->stats.HCInDelivers.low = ipstat->ips_delivered & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCInDelivers.high = ipstat->ips_delivered >> 32;
+#endif
+    entry->stats.HCOutRequests.low = ipstat->ips_localout & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCOutRequests.high = ipstat->ips_localout >> 32;
+#endif
+    entry->stats.HCOutDiscards.low = ipstat->ips_odropped & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCOutDiscards.high = ipstat->ips_odropped >> 32;
+#endif
+    entry->stats.HCOutNoRoutes.low = ipstat->ips_nogif & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCOutNoRoutes.high = ipstat->ips_nogif >> 32;
+#endif
+    /* entry->stats. = scan_vals[12]; / * ReasmTimeout */
+    entry->stats.ReasmReqds = ipstat->ips_fragments;
+    entry->stats.ReasmOKs = ipstat->ips_reassembled;
+    entry->stats.ReasmFails = ipstat->ips_fragdropped + ipstat->ips_fragtimeout;
+    entry->stats.HCOutFragOKs.low = ipstat->ips_fragments & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCOutFragOKs.high = ipstat->ips_fragments >> 32;
+#endif
+    entry->stats.HCOutFragFails.low = ipstat->ips_cantfrag & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCOutFragFails.high = ipstat->ips_cantfrag >> 32;
+#endif
+    entry->stats.HCOutFragCreates.low = ipstat->ips_ofragments & 0xffffffff;
+#ifndef darwin
+    entry->stats.HCOutFragCreates.high = ipstat->ips_ofragments >> 32;
+#endif
+
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INADDRERRORS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INUNKNOWNPROTOS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INDISCARDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINDELIVERS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTREQUESTS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTDISCARDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTNOROUTES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMREQDS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMOKS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMFAILS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGOKS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGFAILS] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGCREATES] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_DISCONTINUITYTIME] = 1;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REFRESHRATE] = 1;
+
+    /*
+     * add to container
+     */
+    if (CONTAINER_INSERT(container, entry) < 0)
+    {
+	DEBUGMSGTL(("access:systemstats:container","error with systemstats_entry: insert into container failed.\n"));
+	netsnmp_access_systemstats_entry_free(entry);
+    }
+
+    free(ipstat);
+    return 0;
+}
+
+
+#if defined (NETSNMP_ENABLE_IPV6)
+
+/*
+ * load ipSystemStatsTable for ipv6 entries
+ */
+static int 
+_systemstats_v6_load_systemstats(netsnmp_container* container, u_int load_flags)
+{
+    struct ip6stat ip6stat;
+    int mib[] = { CTL_NET, AF_INET6, IPPROTO_IPV6, IPV6CTL_STATS };
+    size_t len = sizeof(ip6stat);
+    netsnmp_systemstats_entry *entry = NULL;
+
+    if (sysctl(mib, sizeof(mib) / sizeof(mib[0]), &ip6stat, &len, NULL, 0) == -1) {
+  	NETSNMP_LOGONCE((LOG_ERR, "Cannot sysctl(CTL_NET, AF_INET6, IPPROTO_IPV6, IPV6CTL_STATS)\n"));
+	return -1;
+    }
+    
+    entry = netsnmp_access_systemstats_entry_create(2, 0,
+            "ipSystemStatsTable.ipv6");
+    if(NULL == entry)
+        return -3;
+    
+    entry->stats.HCInReceives.low = ip6stat.ip6s_total & 0xffffffff;
+    entry->stats.HCInReceives.high = ip6stat.ip6s_total >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES] = 1;
+    /*
+    entry->stats.HCInOctets.low = scan_val & 0xffffffff;
+    entry->stats.HCInOctets.high = scan_val  >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINOCTETS] = 1;
+    */
+    entry->stats.InHdrErrors = ip6stat.ip6s_badoptions + ip6stat.ip6s_tooshort
+                             + ip6stat.ip6s_toosmall + ip6stat.ip6s_badvers
+			     + ip6stat.ip6s_toomanyhdr;
+#if HAVE_STRUCT_IP6STAT_IP6S_EXTHDRTOOLONG
+    entry->stats.InHdrErrors += ip6stat.ip6s_exthdrtoolong;
+#endif
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS] = 1;
+    entry->stats.HCInNoRoutes.low = ip6stat.ip6s_cantforward & 0xffffffff;
+    entry->stats.HCInNoRoutes.high = ip6stat.ip6s_cantforward >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINNOROUTES] = 1;
+    /*
+    entry->stats.inAddrErrors = 0;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INADDRERRORS] = 1;
+    entry->stats.InUnknownProtos = scan_val;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INUNKNOWNPROTOS] = 1;
+    entry->stats.InTruncatedPkts = scan_val  & 0xffffffff;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INTRUNCATEDPKTS] = 1;
+    */
+    entry->stats.HCInForwDatagrams.low = ip6stat.ip6s_forward & 0xffffffff;
+    entry->stats.HCInForwDatagrams.high = ip6stat.ip6s_forward >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINFORWDATAGRAMS] = 1;
+    entry->stats.ReasmReqds = ip6stat.ip6s_fragments;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMREQDS] = 1;
+    entry->stats.ReasmOKs = ip6stat.ip6s_reassembled;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMOKS] = 1;
+    entry->stats.ReasmFails = ip6stat.ip6s_fragdropped + ip6stat.ip6s_fragtimeout;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMFAILS] = 1;
+    entry->stats.InDiscards = ip6stat.ip6s_fragdropped;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_INDISCARDS] = 1;
+    entry->stats.HCInDelivers.low = ip6stat.ip6s_delivered  & 0xffffffff;
+    entry->stats.HCInDelivers.high = ip6stat.ip6s_delivered >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINDELIVERS] = 1;
+    entry->stats.HCOutRequests.low = ip6stat.ip6s_localout & 0xffffffff;
+    entry->stats.HCOutRequests.high = ip6stat.ip6s_localout >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTREQUESTS] = 1;
+    entry->stats.HCOutNoRoutes.low = ip6stat.ip6s_noroute & 0xffffffff;
+    entry->stats.HCOutNoRoutes.high = ip6stat.ip6s_noroute >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTNOROUTES] = 1;
+    entry->stats.HCOutForwDatagrams.low = ip6stat.ip6s_forward & 0xffffffff;
+    entry->stats.HCOutForwDatagrams.high = ip6stat.ip6s_forward >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS] = 1;
+    entry->stats.HCOutDiscards.low = ip6stat.ip6s_odropped & 0xffffffff;
+    entry->stats.HCOutDiscards.high = ip6stat.ip6s_odropped >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTDISCARDS] = 1;
+    entry->stats.HCOutFragReqds.low = (ip6stat.ip6s_fragmented + ip6stat.ip6s_cantfrag) & 0xffffffff;
+    entry->stats.HCOutFragReqds.high = (ip6stat.ip6s_fragmented + ip6stat.ip6s_cantfrag) >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGREQDS] = 1;
+    entry->stats.HCOutFragOKs.low = ip6stat.ip6s_fragmented & 0xffffffff;
+    entry->stats.HCOutFragOKs.high = ip6stat.ip6s_fragmented >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGOKS] = 1;
+    entry->stats.HCOutFragFails.low = ip6stat.ip6s_cantfrag & 0xffffffff;
+    entry->stats.HCOutFragFails.high = ip6stat.ip6s_cantfrag >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGFAILS] = 1;
+    entry->stats.HCOutFragCreates.low = ip6stat.ip6s_ofragments & 0xffffffff;
+    entry->stats.HCOutFragCreates.high = ip6stat.ip6s_ofragments >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGCREATES] = 1;
+    /*
+    entry->stats.HCOutTransmits.low = scan_val & 0xffffffff;
+    entry->stats.HCOutTransmits.high = scan_val >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTTRANSMITS] = 1;
+    entry->stats.HCOutMcastOctets.low = scan_val & 0xffffffff;
+    entry->stats.HCOutMcastOctets.high = scan_val >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTOCTETS] = 1;
+    entry->stats.HCInMcastPkts.low = scan_val  & 0xffffffff;
+    entry->stats.HCInMcastPkts.high = scan_val >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTPKTS] = 1;
+    entry->stats.HCInMcastOctets.low = scan_val  & 0xffffffff;
+    entry->stats.HCInMcastOctets.high = scan_val >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTOCTETS] = 1;
+    entry->stats.HCOutMcastPkts.low = scan_val & 0xffffffff;
+    entry->stats.HCOutMcastPkts.high = scan_val >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTPKTS] = 1;
+    entry->stats.HCOutOctets.low = scan_val & 0xffffffff;
+    entry->stats.HCOutOctets.high = scan_val >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTOCTETS] = 1;
+    entry->stats.HCInBcastPkts.low = scan_val  & 0xffffffff;
+    entry->stats.HCInBcastPkts.high = scan_val >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINBCASTPKTS] = 1;
+    entry->stats.HCOutBcastPkts.low = scan_val  & 0xffffffff;
+    entry->stats.HCOutBcastPkts.high = scan_val >> 32;
+    entry->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTBCASTPKTS] = 1;
+    */
+
+    /*
+     * add to container
+     */
+    if (CONTAINER_INSERT(container, entry) < 0) {
+	DEBUGMSGTL(("access:systemstats:container","error with systemstats_entry: insert into container failed.\n"));
+	netsnmp_access_systemstats_entry_free(entry);
+    }
+
+    return 1;
+}
+
+#define DEV_SNMP6_DIRNAME   "/proc/net/dev_snmp6"
+#define IFINDEX_LINE        "ifIndex"
+#define DEV_FILENAME_LEN    64
+
+/*
+ * load ipIfStatsTable for ipv6 entries
+ */
+static int 
+_systemstats_v6_load_ifstats(netsnmp_container* container, u_int load_flags)
+{
+    DIR            *dev_snmp6_dir;
+    struct dirent  *dev_snmp6_entry;
+    char           dev_filename[DEV_FILENAME_LEN];
+    FILE           *devin;
+    char           line[1024];
+    char           *start = line;
+    int            rc;
+    char           *scan_str;
+    uintmax_t       scan_val;
+    netsnmp_systemstats_entry *entry = NULL;
+            
+    /*
+     * try to open /proc/net/dev_snmp6 directory. If we can't, that' ok -
+     * maybe it is not supported by the current running kernel.
+     */
+    if ((dev_snmp6_dir = opendir(DEV_SNMP6_DIRNAME)) == NULL) {
+        DEBUGMSGTL(("access:ifstats",
+        "Failed to load IPv6 IfStats Table (linux)\n"));
+        return 0;
+    }
+    
+    /*
+     * Read each per interface statistics proc file
+     */
+    rc = 0;
+    while ((dev_snmp6_entry = readdir(dev_snmp6_dir)) != NULL) {
+        if (dev_snmp6_entry->d_name[0] == '.')
+            continue;
+    
+        if (snprintf(dev_filename, DEV_FILENAME_LEN, "%s/%s", DEV_SNMP6_DIRNAME,
+                dev_snmp6_entry->d_name) > DEV_FILENAME_LEN) {
+            snmp_log(LOG_ERR, "Interface name %s is too long\n",
+                    dev_snmp6_entry->d_name);
+            continue;
+        }
+        if (NULL == (devin = fopen(dev_filename, "r"))) {
+            snmp_log(LOG_ERR, "Failed to open %s\n", dev_filename);
+            continue;
+        }
+    
+        /*
+         * If a stat file name is made of digits, the name is interface index.
+         * If it is an interface name, the file includes a line labeled ifIndex.
+         */
+        if (isdigit(dev_snmp6_entry->d_name[0])) {
+            scan_val = strtoull(dev_snmp6_entry->d_name, NULL, 0);
+        } else {
+            if (NULL == (start = fgets(line, sizeof(line), devin))) {
+                snmp_log(LOG_ERR, "%s doesn't include any lines\n",
+                        dev_filename);
+                fclose(devin);
+                continue;
+            }
+    
+            if (0 != strncmp(start, IFINDEX_LINE, 7)) {
+                snmp_log(LOG_ERR, "%s doesn't include ifIndex line",
+                        dev_filename);
+                fclose(devin);
+                continue;
+            }
+
+            scan_str = strrchr(line, ' ');
+            if (NULL == scan_str) {
+                snmp_log(LOG_ERR, "%s is wrong format", dev_filename);
+                fclose(devin);
+                continue;
+            }
+            scan_val = strtoull(scan_str, NULL, 0);
+        }
+        
+        entry = netsnmp_access_systemstats_entry_create(2, scan_val,
+                "ipIfStatsTable.ipv6");
+        if(NULL == entry) {
+            fclose(devin);
+            closedir(dev_snmp6_dir);
+            return -3;
+        }
+        
+        /* _systemstats_v6_load_file(entry, devin); */
+        CONTAINER_INSERT(container, entry);
+        fclose(devin);
+    }
+    closedir(dev_snmp6_dir);
+    return 0;
+}
+#endif /* NETSNMP_ENABLE_IPV6 */
+#endif
+
+#ifdef NETSNMP_ENABLE_IPV6
+/*
+ * Based on load_flags, load ipSystemStatsTable or ipIfStatsTable for ipv6 entries. 
+ */
+static int
+_systemstats_v6(netsnmp_container* container, u_int load_flags)
+{
+    DEBUGMSGTL(("access:systemstats:container:arch", "load v6 (flags %u)\n",
+                load_flags));
+
+    netsnmp_assert(container != NULL); /* load function shoulda checked this */
+
+    if (load_flags & NETSNMP_ACCESS_SYSTEMSTATS_LOAD_IFTABLE) {
+        /* load ipIfStatsTable */
+        return _systemstats_v6_load_ifstats(container, load_flags);
+    } else {
+        /* load ipSystemStatsTable */
+        return _systemstats_v6_load_systemstats(container, load_flags);
+    }
+}
+#endif /* NETSNMP_ENABLE_IPV6 */
diff --git a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.c b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.c
index 65aa8e3..aaae2e3 100644
--- a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.c
+++ b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.c
@@ -26,8 +26,8 @@
 
 #include "inetNetToMediaTable_interface.h"
 
-oid             inetNetToMediaTable_oid[] = { INETNETTOMEDIATABLE_OID };
-int             inetNetToMediaTable_oid_size =
+const oid       inetNetToMediaTable_oid[] = { INETNETTOMEDIATABLE_OID };
+const int       inetNetToMediaTable_oid_size =
 OID_LENGTH(inetNetToMediaTable_oid);
 
 inetNetToMediaTable_registration inetNetToMediaTable_user_context;
@@ -159,10 +159,10 @@
     DEBUGMSGTL(("verbose:inetNetToMediaTable:inetNetToMediaTable_rowreq_ctx_cleanup", "called\n"));
 
     netsnmp_assert(NULL != rowreq_ctx);
-
     /*
      * TODO:211:o: |-> Perform extra inetNetToMediaTable rowreq cleanup.
      */
+    SNMP_FREE(rowreq_ctx->data);
 }                               /* inetNetToMediaTable_rowreq_ctx_cleanup */
 
 /**
@@ -536,11 +536,7 @@
      * TODO:231:o: |-> Extract the current value of the inetNetToMediaLastUpdated data.
      * copy (* inetNetToMediaLastUpdated_val_ptr ) from rowreq_ctx->data
      */
-    /*
-     * xxx-rks: get this value?
-     */
-    return MFD_SKIP;
-
+    *inetNetToMediaLastUpdated_val_ptr = rowreq_ctx->data->arp_last_updated;
     return MFD_SUCCESS;
 }                               /* inetNetToMediaLastUpdated_get */
 
diff --git a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
index 7f3fce2..73afae6 100644
--- a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
+++ b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable.h
@@ -200,8 +200,8 @@
         * inetNetToMediaTable_row_find_by_mib_index
         (inetNetToMediaTable_mib_index * mib_idx);
 
-    extern oid      inetNetToMediaTable_oid[];
-    extern int      inetNetToMediaTable_oid_size;
+    extern const oid      inetNetToMediaTable_oid[];
+    extern const int      inetNetToMediaTable_oid_size;
 
 
 #include "inetNetToMediaTable_interface.h"
@@ -250,12 +250,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 8194534..1ec8cc6 100644
--- a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c
+++ b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_data_access.c
@@ -8,6 +8,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -19,6 +20,9 @@
 
 #include "inetNetToMediaTable_data_access.h"
 
+netsnmp_feature_require(container_lifo)
+static netsnmp_arp_access * arp_access = NULL;
+
 /** @ingroup interface 
  * @addtogroup data_access data_access: Routines to access data
  *
@@ -71,6 +75,123 @@
  */
 
 /**
+ * check entry for update
+ */
+static void
+_add_or_update_arp_entry(netsnmp_arp_entry *arp_entry,
+                 netsnmp_container *container)
+{
+    inetNetToMediaTable_rowreq_ctx *rowreq_ctx, *old;
+    int             inetAddressType;
+
+    DEBUGTRACE;
+
+    netsnmp_assert(NULL != arp_entry);
+    netsnmp_assert(NULL != container);
+
+    /*
+     * convert the addr len to an inetAddressType
+     */
+    switch (arp_entry->arp_ipaddress_len) {
+    case 4:
+        inetAddressType = INETADDRESSTYPE_IPV4;
+        break;
+
+    case 16:
+        inetAddressType = INETADDRESSTYPE_IPV6;
+        break;
+
+    default:
+        snmp_log(LOG_ERR, "inetNetToMediaTable:_add_or_update_arpentry: unsupported address type, len = %d\n", arp_entry->arp_ipaddress_len);
+        netsnmp_access_arp_entry_free(arp_entry);
+        return;
+    }
+
+    /*
+     * allocate an row context and set the index(es), then try to find it in
+     * the cache.
+     */
+    rowreq_ctx = inetNetToMediaTable_allocate_rowreq_ctx(arp_entry, NULL);
+    if ((NULL != rowreq_ctx) &&
+        (MFD_SUCCESS == inetNetToMediaTable_indexes_set
+         (rowreq_ctx, rowreq_ctx->data->if_index, inetAddressType,
+          (char *) rowreq_ctx->data->arp_ipaddress,
+          rowreq_ctx->data->arp_ipaddress_len))) {
+
+        /* try to find old entry */
+        old = (inetNetToMediaTable_rowreq_ctx*)CONTAINER_FIND(container, rowreq_ctx);
+        if (arp_entry->flags & NETSNMP_ACCESS_ARP_ENTRY_FLAG_DELETE) {
+            /* delete existing entry */
+            if (old != NULL) {
+                CONTAINER_REMOVE(container, old);
+                inetNetToMediaTable_release_rowreq_ctx(old);
+            }
+            inetNetToMediaTable_release_rowreq_ctx(rowreq_ctx);
+        } else if (old != NULL) {
+            /* the entry is already there, update it */
+            netsnmp_access_arp_entry_update(old->data, arp_entry);
+            /* delete the auxiliary context we used to find the entry
+             * (this deletes also arp_entry) */
+            inetNetToMediaTable_release_rowreq_ctx(rowreq_ctx);
+        } else {
+            /* create new entry and add it to the cache*/
+            rowreq_ctx->inetNetToMediaRowStatus = ROWSTATUS_ACTIVE;
+            rowreq_ctx->data->arp_last_updated = netsnmp_get_agent_uptime();
+            CONTAINER_INSERT(container, rowreq_ctx);
+        }
+    } else {
+        if (rowreq_ctx) {
+            snmp_log(LOG_ERR, "error setting index while loading "
+                     "inetNetToMediaTable cache.\n");
+            inetNetToMediaTable_release_rowreq_ctx(rowreq_ctx);
+        } else
+            netsnmp_access_arp_entry_free(arp_entry);
+    }
+}
+
+static void  _arp_hook_update(netsnmp_arp_access *access, netsnmp_arp_entry *entry)
+{
+    _add_or_update_arp_entry(entry, access->magic);
+}
+
+typedef struct {
+    unsigned generation;
+    netsnmp_container *to_delete;
+} _collect_ctx;
+
+/**
+ * Put all entries with outdated generation to deletion list.
+ */
+static void
+_collect_invalid_arp_ctx(inetNetToMediaTable_rowreq_ctx *ctx,
+                         _collect_ctx *cctx)
+{
+    if (ctx->data->generation != cctx->generation)
+        CONTAINER_INSERT(cctx->to_delete, ctx);
+}
+
+static void _arp_hook_gc(netsnmp_arp_access *access)
+{
+    netsnmp_container *container = access->magic;
+    _collect_ctx cctx;
+
+    cctx.to_delete = netsnmp_container_find("lifo");
+    cctx.generation = access->generation;
+
+    CONTAINER_FOR_EACH(container,
+                       (netsnmp_container_obj_func *) _collect_invalid_arp_ctx,
+                       &cctx);
+
+    while (CONTAINER_SIZE(cctx.to_delete)) {
+        inetNetToMediaTable_rowreq_ctx *ctx = (inetNetToMediaTable_rowreq_ctx*)CONTAINER_FIRST(cctx.to_delete);
+        CONTAINER_REMOVE(container, ctx);
+        inetNetToMediaTable_release_rowreq_ctx(ctx);
+        CONTAINER_REMOVE(cctx.to_delete, NULL);
+    }
+    CONTAINER_FREE(cctx.to_delete);
+}
+
+/**
  * container initialization
  *
  * @param container_ptr_ptr A pointer to a container pointer. If you
@@ -120,72 +241,19 @@
         return;
     }
 
-    /*
-     * TODO:345:A: Set up inetNetToMediaTable cache properties.
-     *
-     * Also for advanced users, you can set parameters for the
-     * cache. Do not change the magic pointer, as it is used
-     * by the MFD helper. To completely disable caching, set
-     * cache->enabled to 0.
-     */
-    cache->timeout = INETNETTOMEDIATABLE_CACHE_TIMEOUT; /* seconds */
-}                               /* inetNetToMediaTable_container_init */
-
-/**
- * check entry for update
- *
- */
-static void
-_snarf_arp_entry(netsnmp_arp_entry *arp_entry,
-                 netsnmp_container *container)
-{
-    inetNetToMediaTable_rowreq_ctx *rowreq_ctx;
-    int             inetAddressType;
-
-    DEBUGTRACE;
-
-    netsnmp_assert(NULL != arp_entry);
-    netsnmp_assert(NULL != container);
-
-    /*
-     * convert the addr len to an inetAddressType
-     */
-    switch (arp_entry->arp_ipaddress_len) {
-    case 4:
-        inetAddressType = INETADDRESSTYPE_IPV4;
-        break;
-
-    case 6:
-        inetAddressType = INETADDRESSTYPE_IPV6;
-        break;
-
-    default:
-        netsnmp_access_arp_entry_free(arp_entry);
-        snmp_log(LOG_ERR, "unsupported address type\n");
+    arp_access = netsnmp_access_arp_create(
+                           NETSNMP_ACCESS_ARP_CREATE_NOFLAGS,
+                           _arp_hook_update,
+                           _arp_hook_gc,
+                           &cache->timeout,
+                           &cache->flags,
+                           &cache->expired);
+    if (arp_access == NULL) {
+        snmp_log(LOG_ERR,
+                 "unable to create arp access in inetNetToMediaTable_container_init\n");
         return;
     }
-
-    /*
-     * allocate an row context and set the index(es), then add it to
-     * the container
-     */
-    rowreq_ctx = inetNetToMediaTable_allocate_rowreq_ctx(arp_entry, NULL);
-    if ((NULL != rowreq_ctx) &&
-        (MFD_SUCCESS == inetNetToMediaTable_indexes_set
-         (rowreq_ctx, rowreq_ctx->data->if_index, inetAddressType,
-          (char *) rowreq_ctx->data->arp_ipaddress,
-          rowreq_ctx->data->arp_ipaddress_len))) {
-        rowreq_ctx->inetNetToMediaRowStatus = ROWSTATUS_ACTIVE;
-        CONTAINER_INSERT(container, rowreq_ctx);
-    } else {
-        if (rowreq_ctx) {
-            snmp_log(LOG_ERR, "error setting index while loading "
-                     "inetNetToMediaTable cache.\n");
-            inetNetToMediaTable_release_rowreq_ctx(rowreq_ctx);
-        } else
-            netsnmp_access_arp_entry_free(arp_entry);
-    }
-}
+}                               /* inetNetToMediaTable_container_init */
 
 /**
  * container shutdown
@@ -208,12 +276,16 @@
 {
     DEBUGMSGTL(("verbose:inetNetToMediaTable:inetNetToMediaTable_container_shutdown", "called\n"));
 
+    if (NULL != arp_access) {
+        netsnmp_access_arp_delete(arp_access);
+        arp_access = NULL;
+    }
+
     if (NULL == container_ptr) {
         snmp_log(LOG_ERR,
                  "bad params to inetNetToMediaTable_container_shutdown\n");
         return;
     }
-
 }                               /* inetNetToMediaTable_container_shutdown */
 
 /**
@@ -252,37 +324,11 @@
 int
 inetNetToMediaTable_container_load(netsnmp_container *container)
 {
-    netsnmp_container *arp_container;
-
     DEBUGMSGTL(("verbose:inetNetToMediaTable:inetNetToMediaTable_cache_load", "called\n"));
 
-    /*
-     * TODO:351:M: |-> Load/update data in the inetNetToMediaTable container.
-     * loop over your inetNetToMediaTable data, allocate a rowreq context,
-     * set the index(es) [and data, optionally] and insert into
-     * the container.
-     */
-    arp_container =
-        netsnmp_access_arp_container_load(NULL,
-                                          NETSNMP_ACCESS_ARP_LOAD_NOFLAGS);
-    if (NULL == arp_container)
-        return MFD_RESOURCE_UNAVAILABLE;        /* msg already logged */
-
-    /*
-     * we just got a fresh copy of data. snarf data
-     */
-    CONTAINER_FOR_EACH(arp_container,
-                       (netsnmp_container_obj_func *) _snarf_arp_entry,
-                       container);
-
-    /*
-     * free the container. we've either claimed each entry, or released it,
-     * so the access function doesn't need to clear the container.
-     */
-    netsnmp_access_arp_container_free(arp_container,
-                                      NETSNMP_ACCESS_ARP_FREE_DONT_CLEAR);
-
-    DEBUGMSGT(("verbose:inetNetToMediaTable:inetNetToMediaTable_cache_load", "%d records\n", CONTAINER_SIZE(container)));
+    arp_access->magic = container;
+    if (netsnmp_access_arp_load(arp_access) < 0)
+        return MFD_ERROR;
 
     return MFD_SUCCESS;
 }                               /* inetNetToMediaTable_container_load */
@@ -305,6 +351,11 @@
 {
     DEBUGMSGTL(("verbose:inetNetToMediaTable:inetNetToMediaTable_container_free", "called\n"));
 
+    if (NULL != arp_access) {
+        netsnmp_access_arp_unload(arp_access);
+        arp_access->magic = NULL;
+    }
+
     /*
      * TODO:380:M: Free inetNetToMediaTable container data.
      */
diff --git a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
index 42ebcc0..c18689a 100644
--- a/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
+++ b/agent/mibgroup/ip-mib/inetNetToMediaTable/inetNetToMediaTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,19 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(inetNetToMediaTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(table_container_row_insert)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(inetNetToMediaTable_container_size, inetNetToMediaTable_external_access)
+netsnmp_feature_child_of(inetNetToMediaTable_registration_set, inetNetToMediaTable_external_access)
+netsnmp_feature_child_of(inetNetToMediaTable_registration_get, inetNetToMediaTable_external_access)
+netsnmp_feature_child_of(inetNetToMediaTable_container_get, inetNetToMediaTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -82,19 +96,23 @@
                 _inetNetToMediaTable_container_shutdown(inetNetToMediaTable_interface_ctx *
                                                         if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_CONTAINER_GET
 netsnmp_container *
 inetNetToMediaTable_container_get(void)
 {
     return inetNetToMediaTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_REGISTRATION_GET
 inetNetToMediaTable_registration *
 inetNetToMediaTable_registration_get(void)
 {
     return inetNetToMediaTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_REGISTRATION_SET
 inetNetToMediaTable_registration *
 inetNetToMediaTable_registration_set(inetNetToMediaTable_registration *
                                      newreg)
@@ -104,12 +122,15 @@
     inetNetToMediaTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_CONTAINER_SIZE
 int
 inetNetToMediaTable_container_size(void)
 {
     return CONTAINER_SIZE(inetNetToMediaTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_CONTAINER_SIZE */
 
 u_int
 inetNetToMediaTable_dirty_get(void)
@@ -133,7 +154,7 @@
 static Netsnmp_Node_Handler _mfd_inetNetToMediaTable_post_request;
 static Netsnmp_Node_Handler _mfd_inetNetToMediaTable_object_lookup;
 static Netsnmp_Node_Handler _mfd_inetNetToMediaTable_get_values;
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 static Netsnmp_Node_Handler _mfd_inetNetToMediaTable_check_objects;
 static Netsnmp_Node_Handler _mfd_inetNetToMediaTable_undo_setup;
 static Netsnmp_Node_Handler _mfd_inetNetToMediaTable_set_values;
@@ -149,7 +170,7 @@
                                                  rowreq_ctx,
                                                  netsnmp_variable_list *
                                                  var, int column);
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 NETSNMP_STATIC_INLINE int
                 _inetNetToMediaTable_check_indexes(inetNetToMediaTable_rowreq_ctx *
@@ -192,7 +213,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;
@@ -232,7 +253,7 @@
         _mfd_inetNetToMediaTable_post_request;
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /*
      * REQUIRED wrappers for set request handling
      */
@@ -257,7 +278,7 @@
      */
     access_multiplexer->consistency_checks =
         _mfd_inetNetToMediaTable_check_dependencies;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     /*************************************************
      *
@@ -293,7 +314,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -316,7 +337,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -690,7 +711,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;
 
@@ -735,6 +756,7 @@
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_inetNetToMediaTable_post_request */
 
+
 /**
  * @internal
  * wrapper
@@ -808,7 +830,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"));
@@ -946,7 +968,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;
@@ -1096,7 +1118,7 @@
                                               user_ctx, rowreq_ctx);
 }                               /* _inetNetToMediaTable_check_indexes */
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -1257,7 +1279,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;
@@ -1305,7 +1327,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"));
 
@@ -1391,7 +1413,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"));
@@ -1456,7 +1478,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;
 
@@ -1562,7 +1584,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;
@@ -1610,7 +1632,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"));
@@ -1644,7 +1666,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"));
@@ -1738,7 +1760,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;
 
@@ -1793,7 +1815,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"));
@@ -1820,7 +1842,7 @@
 
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_inetNetToMediaTable_irreversible_commit */
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /***********************************************************************
  *
@@ -1946,9 +1968,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");
@@ -1976,6 +2001,7 @@
 }                               /* _inetNetToMediaTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_EXTERNAL_ACCESS
 inetNetToMediaTable_rowreq_ctx *
 inetNetToMediaTable_row_find_by_mib_index(inetNetToMediaTable_mib_index *
                                           mib_idx)
@@ -1998,8 +2024,9 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (inetNetToMediaTable_rowreq_ctx*)
         CONTAINER_FIND(inetNetToMediaTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INETNETTOMEDIATABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c
index 16e2200..f4bb085 100644
--- a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c
+++ b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.c
@@ -26,8 +26,8 @@
 
 #include "ipAddressPrefixTable_interface.h"
 
-oid             ipAddressPrefixTable_oid[] = { IPADDRESSPREFIXTABLE_OID };
-int             ipAddressPrefixTable_oid_size =
+const oid       ipAddressPrefixTable_oid[] = { IPADDRESSPREFIXTABLE_OID };
+const int       ipAddressPrefixTable_oid_size =
 OID_LENGTH(ipAddressPrefixTable_oid);
 
 ipAddressPrefixTable_registration ipAddressPrefixTable_user_context;
@@ -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)
 {
@@ -395,10 +395,9 @@
      * TODO:231:o: |-> Extract the current value of the ipAddressPrefixOrigin data.
      * copy (* ipAddressPrefixOrigin_val_ptr ) from rowreq_ctx->data
      */
-    (*ipAddressPrefixOrigin_val_ptr) =
-        rowreq_ctx->data.ipAddressPrefixOrigin;
-
-    return MFD_SUCCESS;
+          (*ipAddressPrefixOrigin_val_ptr) = rowreq_ctx->data.ipAddressPrefixOrigin;
+    
+           return MFD_SUCCESS;
 }                               /* ipAddressPrefixOrigin_get */
 
 /*---------------------------------------------------------------------
@@ -594,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;
@@ -661,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 dfe973e..24b22a2 100644
--- a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h
+++ b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable.h
@@ -211,8 +211,8 @@
         * ipAddressPrefixTable_row_find_by_mib_index
         (ipAddressPrefixTable_mib_index * mib_idx);
 
-    extern oid      ipAddressPrefixTable_oid[];
-    extern int      ipAddressPrefixTable_oid_size;
+    extern const oid      ipAddressPrefixTable_oid[];
+    extern const int      ipAddressPrefixTable_oid_size;
 
 
 #include "ipAddressPrefixTable_interface.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_constants.h b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_constants.h
index 66f2109..5ecade4 100644
--- a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_constants.h
+++ b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_constants.h
@@ -137,3 +137,17 @@
 }
 #endif
 #endif                          /* IPADDRESSPREFIXTABLE_OIDS_H */
+/****************************************************************
+* Additional constants and definitions for common implementation
+*/
+#define INFINITY_LIFE_TIME      0xFFFFFFFFU
+#define NIP6(addr) \
+        ntohs((addr).s6_addr16[0]), \
+        ntohs((addr).s6_addr16[1]), \
+        ntohs((addr).s6_addr16[2]), \
+        ntohs((addr).s6_addr16[3]), \
+        ntohs((addr).s6_addr16[4]), \
+        ntohs((addr).s6_addr16[5]), \
+        ntohs((addr).s6_addr16[6]), \
+        ntohs((addr).s6_addr16[7])
+
diff --git a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c
index 2f64cbe..4437829 100644
--- a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c
+++ b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_data_access.c
@@ -8,6 +8,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -21,6 +22,10 @@
 
 #include "ip-mib/ipAddressTable/ipAddressTable.h"
 
+netsnmp_feature_require(ipAddressTable_container_get)
+netsnmp_feature_require(ipaddress_common_copy_utilities)
+netsnmp_feature_require(ipaddress_prefix_copy)
+
 /** @ingroup interface 
  * @addtogroup data_access data_access: Routines to access data
  *
@@ -202,7 +207,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"));
@@ -251,6 +256,23 @@
                                       ia_address_len,
                                       addr_rowreq_ctx->data->
                                       ia_prefix_len);
+        netsnmp_ipaddress_flags_copy(&rowreq_ctx->data.
+                                     ipAddressPrefixAdvPreferredLifetime,
+                                     &rowreq_ctx->data.
+                                     ipAddressPrefixAdvValidLifetime,
+                                     &rowreq_ctx->data.
+                                     ipAddressPrefixOnLinkFlag,
+                                     &rowreq_ctx->data.
+                                     ipAddressPrefixAutonomousFlag,  
+                                     &addr_rowreq_ctx->data->
+                                     ia_prefered_lifetime,
+                                     &addr_rowreq_ctx->data->
+                                     ia_valid_lifetime,
+                                     &addr_rowreq_ctx->data->
+                                     ia_onlink_flag,
+                                     &addr_rowreq_ctx->data->
+                                     ia_autonomous_flag);
+
         if (MFD_SUCCESS !=
             ipAddressPrefixTable_indexes_set(rowreq_ctx,
                                              addr_rowreq_ctx->data->
@@ -278,8 +300,14 @@
          * TODO:352:r: |   |-> populate ipAddressPrefixTable data context.
          * Populate data context here. (optionally, delay until row prep)
          */
-        rowreq_ctx->data.ipAddressPrefixOrigin =
-            addr_rowreq_ctx->data->ia_origin;
+           netsnmp_ipaddress_prefix_origin_copy(&rowreq_ctx->data.
+                                             ipAddressPrefixOrigin,
+                                             addr_rowreq_ctx->data->
+                                             ia_origin,
+                                             addr_rowreq_ctx->data->
+                                             flags,
+                                             addr_rowreq_ctx->tbl_idx.
+                                             ipAddressAddrType);
 
         /** defer the rest til row prep */
 
diff --git a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c
index 1909a4b..e14a337 100644
--- a/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipAddressPrefixTable/ipAddressPrefixTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,16 @@
 
 #include <ctype.h>
 
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
+netsnmp_feature_child_of(ipaddressprefixtable_row_find_by_mib_index, ipaddressprefixtable_all)
+netsnmp_feature_child_of(ipaddressprefixtable_container_get, ipaddressprefixtable_all)
+netsnmp_feature_child_of(ipAddressPrefixTable_registration_get, ipaddressprefixtable_all)
+netsnmp_feature_child_of(ipAddressPrefixTable_registration_set, ipaddressprefixtable_all)
+netsnmp_feature_child_of(ipAddressPrefixTable_container_size, ipaddressprefixtable_all)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -81,18 +92,23 @@
                                                          * if_ctx);
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_CONTAINER_GET
 netsnmp_container *
 ipAddressPrefixTable_container_get(void)
 {
     return ipAddressPrefixTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_REGISTRATION_GET
 ipAddressPrefixTable_registration *
 ipAddressPrefixTable_registration_get(void)
 {
     return ipAddressPrefixTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_REGISTRATION_SET
 ipAddressPrefixTable_registration *
 ipAddressPrefixTable_registration_set(ipAddressPrefixTable_registration *
                                       newreg)
@@ -102,12 +118,15 @@
     ipAddressPrefixTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_CONTAINER_SIZE
 int
 ipAddressPrefixTable_container_size(void)
 {
     return CONTAINER_SIZE(ipAddressPrefixTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_CONTAINER_SIZE */
 
 /*
  * mfd multiplexer modes
@@ -155,7 +174,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;
@@ -229,7 +248,8 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
+    /* XXX - are these actually necessary? */
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -252,7 +272,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -849,7 +869,7 @@
 }                               /* _mfd_ipAddressPrefixTable_get_values */
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -1014,6 +1034,7 @@
 }                               /* _ipAddressPrefixTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_ROW_FIND_BY_MIB_INDEX
 ipAddressPrefixTable_rowreq_ctx *
 ipAddressPrefixTable_row_find_by_mib_index(ipAddressPrefixTable_mib_index *
                                            mib_idx)
@@ -1041,3 +1062,4 @@
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSPREFIXTABLE_ROW_FIND_BY_MIB_INDEX */
diff --git a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c
index 848c63d..deff4e9 100644
--- a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c
+++ b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.c
@@ -14,6 +14,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -28,8 +29,12 @@
 
 #include "ipAddressTable_interface.h"
 
-oid             ipAddressTable_oid[] = { IPADDRESSTABLE_OID };
-int             ipAddressTable_oid_size = OID_LENGTH(ipAddressTable_oid);
+netsnmp_feature_require(check_storage_transition)
+netsnmp_feature_require(ipaddress_entry_copy)
+netsnmp_feature_require(ipaddress_prefix_copy)
+
+const oid       ipAddressTable_oid[] = { IPADDRESSTABLE_OID };
+const int       ipAddressTable_oid_size = OID_LENGTH(ipAddressTable_oid);
 
 ipAddressTable_registration ipAddressTable_user_context;
 static ipAddressTable_registration *ipAddressTable_user_context_p;
@@ -333,8 +338,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 +387,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 +436,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 +631,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 +662,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;
@@ -944,7 +949,10 @@
     netsnmp_assert(NULL != ipAddressRowStatus_val_ptr);
 
     /** WARNING: this code might not work for netsnmp_ipaddress_entry */
-    (*ipAddressRowStatus_val_ptr) = rowreq_ctx->ipAddressRowStatus;
+    if(rowreq_ctx->data->if_index)
+       (*ipAddressRowStatus_val_ptr) = rowreq_ctx->ipAddressRowStatus;
+    else
+       (*ipAddressRowStatus_val_ptr) = ROWSTATUS_NOTREADY;
 
     return MFD_SUCCESS;
 }                               /* ipAddressRowStatus_get */
@@ -1469,7 +1477,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;
 
     /*
@@ -1486,7 +1494,7 @@
      * find name for ifIndex
      */
     if (NULL == netsnmp_access_interface_name_find(ipAddressIfIndex_val)) {
-        DEBUGMSGT(("ipAddressTable", "cant find name for index %d\n",
+        DEBUGMSGT(("ipAddressTable", "cant find name for index %ld\n",
                    ipAddressIfIndex_val));
         return MFD_NOT_VALID_NOW;
     }
@@ -1556,8 +1564,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;
 
@@ -2032,7 +2040,7 @@
                                     ipAddressRowStatus_val);
     if (MFD_SUCCESS != rc) {
         DEBUGMSGTL(("ipAddressTable",
-                    "row status transition from %d to %d\n",
+                    "row status transition from %d to %lu\n",
                     rowreq_ctx->ipAddressRowStatus,
                     ipAddressRowStatus_val));
         return rc;
diff --git a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable.h
index 50ad188..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;
 
 
@@ -197,8 +197,8 @@
         * ipAddressTable_row_find_by_mib_index(ipAddressTable_mib_index *
                                                mib_idx);
 
-    extern oid      ipAddressTable_oid[];
-    extern int      ipAddressTable_oid_size;
+    extern const oid      ipAddressTable_oid[];
+    extern const int      ipAddressTable_oid_size;
 
 
 #include "ipAddressTable_interface.h"
@@ -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 a0d8c4a..d80b3e7 100644
--- a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c
+++ b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_data_access.c
@@ -8,6 +8,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -22,6 +23,8 @@
 #include <sys/ioctl.h>
 #include <errno.h>
 
+netsnmp_feature_require(container_lifo)
+netsnmp_feature_require(ipaddress_entry_update)
 
 /** @ingroup interface 
  * @addtogroup data_access data_access: Routines to access data
@@ -134,6 +137,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 +205,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 +263,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 +383,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
@@ -395,7 +399,7 @@
     }
 
     DEBUGMSGT(("verbose:ipAddressTable:ipAddressTable_cache_load",
-               "%d records\n", CONTAINER_SIZE(container)));
+               "%lu records\n", (unsigned long)CONTAINER_SIZE(container)));
 
     return MFD_SUCCESS;
 }
@@ -672,9 +676,9 @@
      * TODO:430:M: |-> Validate potential ipAddressTable index.
      *
      *
-     * xxx-rks: we only plan ipv4 support initially
      */
-    if ((4 != rowreq_ctx->tbl_idx.ipAddressAddr_len)) {
+    if ((4 != rowreq_ctx->tbl_idx.ipAddressAddr_len)
+            && (16 != rowreq_ctx->tbl_idx.ipAddressAddr_len)) {
         snmp_log(LOG_WARNING, "invalid index for a new row in the "
                  "ipAddressTable table.\n");
         /*
@@ -691,15 +695,9 @@
             return MFD_CANNOT_CREATE_NOW;
         }
     } else {
-        rowreq_ctx->data->ia_address[0] =
-            rowreq_ctx->tbl_idx.ipAddressAddr[0];
-        rowreq_ctx->data->ia_address[1] =
-            rowreq_ctx->tbl_idx.ipAddressAddr[1];
-        rowreq_ctx->data->ia_address[2] =
-            rowreq_ctx->tbl_idx.ipAddressAddr[2];
-        rowreq_ctx->data->ia_address[3] =
-            rowreq_ctx->tbl_idx.ipAddressAddr[3];
-        rowreq_ctx->data->ia_address_len = 4;
+        memcpy(rowreq_ctx->data->ia_address, rowreq_ctx->tbl_idx.ipAddressAddr,
+                rowreq_ctx->tbl_idx.ipAddressAddr_len);
+        rowreq_ctx->data->ia_address_len = rowreq_ctx->tbl_idx.ipAddressAddr_len;
     }
 
     return rc;
diff --git a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c
index 0c85073..48770b0 100644
--- a/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipAddressTable/ipAddressTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,19 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(ipAddressTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(table_container_row_insert)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(ipAddressTable_container_size, ipAddressTable_external_access)
+netsnmp_feature_child_of(ipAddressTable_registration_set, ipAddressTable_external_access)
+netsnmp_feature_child_of(ipAddressTable_registration_get, ipAddressTable_external_access)
+netsnmp_feature_child_of(ipAddressTable_container_get, ipAddressTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -80,19 +94,23 @@
 static void
                 _ipAddressTable_container_shutdown(ipAddressTable_interface_ctx * if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_CONTAINER_GET
 netsnmp_container *
 ipAddressTable_container_get(void)
 {
     return ipAddressTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_REGISTRATION_GET
 ipAddressTable_registration *
 ipAddressTable_registration_get(void)
 {
     return ipAddressTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_REGISTRATION_SET
 ipAddressTable_registration *
 ipAddressTable_registration_set(ipAddressTable_registration * newreg)
 {
@@ -100,12 +118,15 @@
     ipAddressTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_CONTAINER_SIZE
 int
 ipAddressTable_container_size(void)
 {
     return CONTAINER_SIZE(ipAddressTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_CONTAINER_SIZE */
 
 u_int
 ipAddressTable_dirty_get(void)
@@ -129,7 +150,7 @@
 static Netsnmp_Node_Handler _mfd_ipAddressTable_post_request;
 static Netsnmp_Node_Handler _mfd_ipAddressTable_object_lookup;
 static Netsnmp_Node_Handler _mfd_ipAddressTable_get_values;
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 static Netsnmp_Node_Handler _mfd_ipAddressTable_check_objects;
 static Netsnmp_Node_Handler _mfd_ipAddressTable_undo_setup;
 static Netsnmp_Node_Handler _mfd_ipAddressTable_set_values;
@@ -144,7 +165,7 @@
                 _ipAddressTable_undo_column(ipAddressTable_rowreq_ctx * rowreq_ctx,
                                             netsnmp_variable_list * var,
                                             int column);
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 NETSNMP_STATIC_INLINE int
                 _ipAddressTable_check_indexes(ipAddressTable_rowreq_ctx * rowreq_ctx);
@@ -184,7 +205,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;
@@ -222,7 +243,7 @@
     access_multiplexer->post_request = _mfd_ipAddressTable_post_request;
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /*
      * REQUIRED wrappers for set request handling
      */
@@ -246,7 +267,7 @@
      */
     access_multiplexer->consistency_checks =
         _mfd_ipAddressTable_check_dependencies;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     /*************************************************
      *
@@ -282,7 +303,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -305,7 +326,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -640,7 +661,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;
 
@@ -686,6 +707,7 @@
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_ipAddressTable_post_request */
 
+
 /**
  * @internal
  * wrapper
@@ -758,7 +780,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"));
@@ -933,7 +955,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;
@@ -1060,7 +1082,7 @@
                                          rowreq_ctx);
 }                               /* _ipAddressTable_check_indexes */
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -1291,7 +1313,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;
@@ -1338,7 +1360,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"));
 
@@ -1437,7 +1459,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",
@@ -1502,7 +1524,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;
 
@@ -1621,7 +1643,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;
@@ -1669,7 +1691,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",
@@ -1703,7 +1725,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",
@@ -1811,7 +1833,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;
 
@@ -1866,7 +1888,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"));
@@ -1892,7 +1914,7 @@
 
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_ipAddressTable_irreversible_commit */
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /***********************************************************************
  *
@@ -2041,6 +2063,7 @@
 }                               /* _ipAddressTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_EXTERNAL_ACCESS
 ipAddressTable_rowreq_ctx *
 ipAddressTable_row_find_by_mib_index(ipAddressTable_mib_index * mib_idx)
 {
@@ -2062,7 +2085,8 @@
     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;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPADDRESSTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/ip-mib/ipDefaultRouterTable.h b/agent/mibgroup/ip-mib/ipDefaultRouterTable.h
new file mode 100644
index 0000000..28ed84b
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipDefaultRouterTable.h
@@ -0,0 +1,5 @@
+/*
+ * module to include the modules
+ */
+
+config_require(ip-mib/ipDefaultRouterTable/ipDefaultRouterTable)
diff --git a/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.c b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.c
new file mode 100644
index 0000000..180e317
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.c
@@ -0,0 +1,218 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $ 
+ *
+ * $Id:$
+ */
+/** \page MFD helper for ipDefaultRouterTable
+ *
+ * \section intro Introduction
+ * Introductory text.
+ *
+ */
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "ipDefaultRouterTable.h"
+
+#include <net-snmp/agent/mib_modules.h>
+
+#include "ipDefaultRouterTable_interface.h"
+
+const oid       ipDefaultRouterTable_oid[] = { IPDEFAULTROUTERTABLE_OID };
+const int       ipDefaultRouterTable_oid_size =
+OID_LENGTH(ipDefaultRouterTable_oid);
+
+ipDefaultRouterTable_registration ipDefaultRouterTable_user_context;
+static ipDefaultRouterTable_registration *ipDefaultRouterTable_user_context_p;
+
+void            initialize_table_ipDefaultRouterTable(void);
+void            shutdown_table_ipDefaultRouterTable(void);
+
+
+/**
+ * Initializes the ipDefaultRouterTable module
+ */
+void
+init_ipDefaultRouterTable(void)
+{
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:init_ipDefaultRouterTable",
+                "called\n"));
+
+    /*
+     * TODO:300:o: Perform ipDefaultRouterTable one-time module initialization.
+     */
+
+    /*
+     * here we initialize all the tables we're planning on supporting
+     */
+    if (should_init("ipDefaultRouterTable"))
+        initialize_table_ipDefaultRouterTable();
+
+}                               /* init_ipDefaultRouterTable */
+
+/**
+ * Shut-down the ipDefaultRouterTable module (agent is exiting)
+ */
+void
+shutdown_ipDefaultRouterTable(void)
+{
+    if (should_init("ipDefaultRouterTable"))
+        shutdown_table_ipDefaultRouterTable();
+
+}
+
+/**
+ * Initialize the table ipDefaultRouterTable 
+ *    (Define its contents and how it's structured)
+ */
+void
+initialize_table_ipDefaultRouterTable(void)
+{
+    u_long          flags;
+
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:initialize_table_ipDefaultRouterTable", "called\n"));
+
+    /*
+     * TODO:301:o: Perform ipDefaultRouterTable one-time table initialization.
+     */
+
+    /*
+     * TODO:302:o: |->Initialize ipDefaultRouterTable user context
+     * if you'd like to pass in a pointer to some data for this
+     * table, allocate or set it up here.
+     */
+    /*
+     * a netsnmp_data_list is a simple way to store void pointers. A simple
+     * string token is used to add, find or remove pointers.
+     */
+    ipDefaultRouterTable_user_context_p =
+        netsnmp_create_data_list("ipDefaultRouterTable", NULL, NULL);
+
+    /*
+     * No support for any flags yet, but in the future you would
+     * set any flags here.
+     */
+    flags = 0;
+
+    /*
+     * call interface initialization code
+     */
+    _ipDefaultRouterTable_initialize_interface
+	(ipDefaultRouterTable_user_context_p, flags);
+}                               /* initialize_table_ipDefaultRouterTable */
+
+/**
+ * Shutdown the table ipDefaultRouterTable 
+ */
+void
+shutdown_table_ipDefaultRouterTable(void)
+{
+    /*
+     * call interface shutdown code
+     */
+    _ipDefaultRouterTable_shutdown_interface
+        (ipDefaultRouterTable_user_context_p);
+    netsnmp_free_all_list_data(ipDefaultRouterTable_user_context_p);
+    ipDefaultRouterTable_user_context_p = NULL;
+}
+
+/**
+ * extra context initialization (eg default values)
+ *
+ * @param rowreq_ctx    : row request context
+ * @param user_init_ctx : void pointer for user (parameter to rowreq_ctx_allocate)
+ *
+ * @retval MFD_SUCCESS  : no errors
+ * @retval MFD_ERROR    : error (context allocate will fail)
+ */
+int
+ipDefaultRouterTable_rowreq_ctx_init(ipDefaultRouterTable_rowreq_ctx *
+                                     rowreq_ctx, void *user_init_ctx)
+{
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_rowreq_ctx_init", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:210:o: |-> Perform extra ipDefaultRouterTable rowreq initialization. (eg DEFVALS)
+     */
+
+    return MFD_SUCCESS;
+}                               /* ipDefaultRouterTable_rowreq_ctx_init */
+
+/**
+ * extra context cleanup
+ *
+ */
+void
+ipDefaultRouterTable_rowreq_ctx_cleanup(ipDefaultRouterTable_rowreq_ctx *
+                                        rowreq_ctx)
+{
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_rowreq_ctx_cleanup", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:211:o: |-> Perform extra ipDefaultRouterTable rowreq cleanup.
+     */
+    netsnmp_access_defaultrouter_entry_free(rowreq_ctx->data);
+    rowreq_ctx->data = NULL;
+}                               /* ipDefaultRouterTable_rowreq_ctx_cleanup */
+
+/**
+ * pre-request callback
+ *
+ *
+ * @retval MFD_SUCCESS              : success.
+ * @retval MFD_ERROR                : other error
+ */
+int
+ipDefaultRouterTable_pre_request(ipDefaultRouterTable_registration *
+                                 user_context)
+{
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_pre_request", "called\n"));
+
+    /*
+     * TODO:510:o: Perform ipDefaultRouterTable pre-request actions.
+     */
+
+    return MFD_SUCCESS;
+}                               /* ipDefaultRouterTable_pre_request */
+
+/**
+ * post-request callback
+ *
+ * Note:
+ *   New rows have been inserted into the container, and
+ *   deleted rows have been removed from the container and
+ *   released.
+ *
+ * @param user_context
+ * @param rc : MFD_SUCCESS if all requests succeeded
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR   : other error (ignored)
+ */
+int
+ipDefaultRouterTable_post_request(ipDefaultRouterTable_registration *
+                                  user_context, int rc)
+{
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_post_request", "called\n"));
+
+    /*
+     * TODO:511:o: Perform ipDefaultRouterTable post-request actions.
+     */
+
+    return MFD_SUCCESS;
+}                               /* ipDefaultRouterTable_post_request */
+
+
+/** @{ */
diff --git a/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h
new file mode 100644
index 0000000..f2ef29a
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable.h
@@ -0,0 +1,212 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $
+ *
+ * $Id:$
+ */
+#ifndef IPDEFAULTROUTERTABLE_H
+#define IPDEFAULTROUTERTABLE_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+/** @addtogroup misc misc: Miscellaneous routines
+ *
+ * @{
+ */
+#include <net-snmp/library/asn1.h>
+#include <net-snmp/data_access/defaultrouter.h>
+
+    /*
+     * other required module components 
+     */
+    /* *INDENT-OFF*  */
+config_require(ip-mib/data_access/defaultrouter)
+config_require(ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface)
+config_require(ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access)
+config_require(ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_get)
+    /* *INDENT-ON*  */
+
+    /*
+     * OID and column number definitions for ipDefaultRouterTable 
+     */
+#include "ipDefaultRouterTable_oids.h"
+
+    /*
+     * enum definions 
+     */
+#include "ipDefaultRouterTable_enums.h"
+
+    /*
+     *********************************************************************
+     * function declarations
+     */
+    void            init_ipDefaultRouterTable(void);
+    void            shutdown_ipDefaultRouterTable(void);
+
+    /*
+     *********************************************************************
+     * Table declarations
+     */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipDefaultRouterTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+    /*
+     * IP-MIB::ipDefaultRouterTable is subid 37 of ip.
+     * Its status is Current.
+     * OID: .1.3.6.1.2.1.4.37, length: 8
+     */
+    /*
+     *********************************************************************
+     * When you register your mib, you get to provide a generic
+     * pointer that will be passed back to you for most of the
+     * functions calls.
+     *
+     * TODO:100:r: Review all context structures
+     */
+    /*
+     * TODO:101:o: |-> Review ipDefaultRouterTable registration context.
+     */
+    typedef netsnmp_data_list ipDefaultRouterTable_registration;
+
+/**********************************************************************/
+    /*
+     * TODO:110:r: |-> Review ipDefaultRouterTable data context structure.
+     * This structure is used to represent the data for ipDefaultRouterTable.
+     */
+    typedef netsnmp_defaultrouter_entry ipDefaultRouterTable_data;
+
+
+    /*
+     * TODO:120:r: |-> Review ipDefaultRouterTable mib index.
+     * This structure is used to represent the index for ipDefaultRouterTable.
+     */
+    typedef struct ipDefaultRouterTable_mib_index_s {
+
+        /*
+         * ipDefaultRouterAddressType(1)/InetAddressType/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h
+         */
+        u_long          ipDefaultRouterAddressType;
+
+        /*
+         * ipDefaultRouterAddress(2)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h
+         */
+        /** 128 - 2(other indexes) - oid length(10) = 115 */
+        char            ipDefaultRouterAddress[115];
+        size_t          ipDefaultRouterAddress_len;
+
+        /*
+         * ipDefaultRouterIfIndex(3)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H
+         */
+        long            ipDefaultRouterIfIndex;
+
+
+    } ipDefaultRouterTable_mib_index;
+
+    /*
+     * TODO:121:r: |   |-> Review ipDefaultRouterTable max index length.
+     * If you KNOW that your indexes will never exceed a certain
+     * length, update this macro to that length.
+     *
+     * BE VERY CAREFUL TO TAKE INTO ACCOUNT THE MAXIMUM
+     * POSSIBLE LENGHT FOR EVERY VARIABLE LENGTH INDEX!
+     * Guessing 128 - col/entry(2)  - oid len(8)
+     */
+#define MAX_ipDefaultRouterTable_IDX_LEN     118
+
+
+    /*
+     *********************************************************************
+     * TODO:130:o: |-> Review ipDefaultRouterTable Row request (rowreq) context.
+     * When your functions are called, you will be passed a
+     * ipDefaultRouterTable_rowreq_ctx pointer.
+     */
+    typedef struct ipDefaultRouterTable_rowreq_ctx_s {
+
+    /** this must be first for container compare to work */
+        netsnmp_index   oid_idx;
+        oid             oid_tmp[MAX_ipDefaultRouterTable_IDX_LEN];
+
+        ipDefaultRouterTable_mib_index tbl_idx;
+
+        ipDefaultRouterTable_data *data;
+
+        /*
+         * flags per row. Currently, the first (lower) 8 bits are reserved
+         * for the user. See mfd.h for other flags.
+         */
+        u_int           rowreq_flags;
+
+        /*
+         * TODO:131:o: |   |-> Add useful data to ipDefaultRouterTable rowreq context.
+         */
+
+        /*
+         * storage for future expansion
+         */
+        netsnmp_data_list *ipDefaultRouterTable_data_list;
+
+    } ipDefaultRouterTable_rowreq_ctx;
+
+    typedef struct ipDefaultRouterTable_ref_rowreq_ctx_s {
+        ipDefaultRouterTable_rowreq_ctx *rowreq_ctx;
+    } ipDefaultRouterTable_ref_rowreq_ctx;
+
+    /*
+     *********************************************************************
+     * function prototypes
+     */
+    int            
+        ipDefaultRouterTable_pre_request(ipDefaultRouterTable_registration
+                                         * user_context);
+    int            
+        ipDefaultRouterTable_post_request(ipDefaultRouterTable_registration
+                                          * user_context, int rc);
+
+    int            
+        ipDefaultRouterTable_rowreq_ctx_init
+        (ipDefaultRouterTable_rowreq_ctx * rowreq_ctx,
+         void *user_init_ctx);
+    void           
+        ipDefaultRouterTable_rowreq_ctx_cleanup
+        (ipDefaultRouterTable_rowreq_ctx * rowreq_ctx);
+
+    ipDefaultRouterTable_data *ipDefaultRouterTable_allocate_data(void);
+    void           
+        ipDefaultRouterTable_release_data(ipDefaultRouterTable_data *
+                                          data);
+
+
+    ipDefaultRouterTable_rowreq_ctx
+        *ipDefaultRouterTable_row_find_by_mib_index
+        (ipDefaultRouterTable_mib_index * mib_idx);
+
+    extern const oid      ipDefaultRouterTable_oid[];
+    extern const int      ipDefaultRouterTable_oid_size;
+
+
+#include "ipDefaultRouterTable_interface.h"
+#include "ipDefaultRouterTable_data_access.h"
+#include "ipDefaultRouterTable_data_get.h"
+
+    /*
+     * DUMMY markers, ignore
+     *
+     * TODO:099:x: *************************************************************
+     * TODO:199:x: *************************************************************
+     * TODO:299:x: *************************************************************
+     * TODO:399:x: *************************************************************
+     * TODO:499:x: *************************************************************
+     */
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPDEFAULTROUTERTABLE_H */
+/** @} */
diff --git a/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c
new file mode 100644
index 0000000..7d7dcfe
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.c
@@ -0,0 +1,423 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $ 
+ *
+ * $Id:$
+ */
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "ipDefaultRouterTable.h"
+
+
+#include "ipDefaultRouterTable_data_access.h"
+
+netsnmp_feature_require(container_lifo)
+
+/** @ingroup interface
+ * @addtogroup data_access data_access: Routines to access data
+ *
+ * These routines are used to locate the data used to satisfy
+ * requests.
+ * 
+ * @{
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipDefaultRouterTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * IP-MIB::ipDefaultRouterTable is subid 37 of ip.
+ * Its status is Current.
+ * OID: .1.3.6.1.2.1.4.37, length: 8
+ */
+
+/**
+ * initialization for ipDefaultRouterTable data access
+ *
+ * This function is called during startup to allow you to
+ * allocate any resources you need for the data table.
+ *
+ * @param ipDefaultRouterTable_reg
+ *        Pointer to ipDefaultRouterTable_registration
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR   : unrecoverable error.
+ */
+int
+ipDefaultRouterTable_init_data(ipDefaultRouterTable_registration *
+                               ipDefaultRouterTable_reg)
+{
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_init_data", "called\n"));
+
+    /*
+     * TODO:303:o: Initialize ipDefaultRouterTable data.
+     */
+
+    return MFD_SUCCESS;
+}                               /* ipDefaultRouterTable_init_data */
+
+/**
+ * container overview
+ *
+ */
+
+/**
+ * container initialization
+ *
+ * @param container_ptr_ptr A pointer to a container pointer. If you
+ *        create a custom container, use this parameter to return it
+ *        to the MFD helper. If set to NULL, the MFD helper will
+ *        allocate a container for you.
+ * @param  cache A pointer to a cache structure. You can set the timeout
+ *         and other cache flags using this pointer.
+ *
+ *  This function is called at startup to allow you to customize certain
+ *  aspects of the access method. For the most part, it is for advanced
+ *  users. The default code should suffice for most cases. If no custom
+ *  container is allocated, the MFD code will create one for your.
+ *
+ *  This is also the place to set up cache behavior. The default, to
+ *  simply set the cache timeout, will work well with the default
+ *  container. If you are using a custom container, you may want to
+ *  look at the cache helper documentation to see if there are any
+ *  flags you want to set.
+ *
+ * @remark
+ *  This would also be a good place to do any initialization needed
+ *  for you data source. For example, opening a connection to another
+ *  process that will supply the data, opening a database, etc.
+ */
+void
+ipDefaultRouterTable_container_init(netsnmp_container ** container_ptr_ptr,
+                                    netsnmp_cache * cache)
+{
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_container_init", "called\n"));
+
+    if (NULL == container_ptr_ptr) {
+        snmp_log(LOG_ERR,
+                 "bad container param to ipDefaultRouterTable_container_init\n");
+        return;
+    }
+
+    /*
+     * For advanced users, you can use a custom container. If you
+     * do not create one, one will be created for you.
+     */
+    *container_ptr_ptr = NULL;
+
+    if (NULL == cache) {
+        snmp_log(LOG_ERR,
+                 "bad cache param to ipDefaultRouterTable_container_init\n");
+        return;
+    }
+
+    /*
+     * TODO:345:A: Set up ipDefaultRouterTable cache properties.
+     *
+     * Also for advanced users, you can set parameters for the
+     * cache. Do not change the magic pointer, as it is used
+     * by the MFD helper. To completely disable caching, set
+     * cache->enabled to 0.
+     */
+    cache->timeout = IPDEFAULTROUTERTABLE_CACHE_TIMEOUT;        /* seconds */
+}                               /* ipDefaultRouterTable_container_init */
+
+/**
+ * container shutdown
+ *
+ * @param container_ptr A pointer to the container.
+ *
+ *  This function is called at shutdown to allow you to customize certain
+ *  aspects of the access method. For the most part, it is for advanced
+ *  users. The default code should suffice for most cases.
+ *
+ *  This function is called before ipDefaultRouterTable_container_free().
+ *
+ * @remark
+ *  This would also be a good place to do any cleanup needed
+ *  for you data source. For example, closing a connection to another
+ *  process that supplied the data, closing a database, etc.
+ */
+void
+ipDefaultRouterTable_container_shutdown(netsnmp_container * container_ptr)
+{
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_container_shutdown", "called\n"));
+
+    if (NULL == container_ptr) {
+        snmp_log(LOG_ERR,
+                 "bad params to ipDefaultRouterTable_container_shutdown\n");
+        return;
+    }
+
+}                               /* ipDefaultRouterTable_container_shutdown */
+
+/**
+ * check entry for update
+ */
+static void
+_check_entry_for_updates(ipDefaultRouterTable_rowreq_ctx * rowreq_ctx,
+                         void **magic)
+{
+    netsnmp_container *defaultrouter_container = magic[0];
+    netsnmp_container *to_delete = (netsnmp_container *) magic[1];
+
+    /*
+     * check for matching entry using secondary index.
+     */
+    netsnmp_defaultrouter_entry *defaultrouter_entry =
+        CONTAINER_FIND(defaultrouter_container, rowreq_ctx->data);
+    if (NULL == defaultrouter_entry) {
+        DEBUGMSGTL(("ipDefaultRouterTable:access", "removing missing entry\n"));
+
+        if (NULL == to_delete) {
+            magic[1] = to_delete = netsnmp_container_find("lifo");
+            if (NULL == to_delete)
+                snmp_log(LOG_ERR, "couldn't create delete container\n");
+        }
+        if (NULL != to_delete)
+            CONTAINER_INSERT(to_delete, rowreq_ctx);
+    } else {
+        DEBUGMSGTL(("ipDefaultRouterTable:access", "updating existing entry\n"));
+
+        /*
+         * Check for changes & update
+         */
+        netsnmp_access_defaultrouter_entry_update(rowreq_ctx->data,
+                                                  defaultrouter_entry);
+
+        /*
+         * remove entry from ifcontainer
+         */
+        CONTAINER_REMOVE(defaultrouter_container, defaultrouter_entry);
+        netsnmp_access_defaultrouter_entry_free(defaultrouter_entry);
+    }
+}
+
+/**
+ * add new entry
+ */
+static void
+_add_new_entry(netsnmp_defaultrouter_entry *defaultrouter_entry,
+               netsnmp_container *container)
+{
+    ipDefaultRouterTable_rowreq_ctx *rowreq_ctx;
+
+    DEBUGMSGTL(("ipDefaultRouterTable:access", "creating new entry\n"));
+
+    netsnmp_assert(NULL != defaultrouter_entry);
+    netsnmp_assert(NULL != container);
+
+    /*
+     * allocate an row context and set the index(es)
+     */
+    rowreq_ctx = ipDefaultRouterTable_allocate_rowreq_ctx(defaultrouter_entry,
+                                                          NULL);
+    if ((NULL != rowreq_ctx) &&
+            (MFD_SUCCESS ==
+             ipDefaultRouterTable_indexes_set(rowreq_ctx,
+                 defaultrouter_entry->dr_addresstype,
+                 defaultrouter_entry->dr_address,
+                 defaultrouter_entry->dr_address_len,
+                 defaultrouter_entry->dr_if_index))) {
+        if (CONTAINER_INSERT(container, rowreq_ctx) < 0) {
+            DEBUGMSGTL(("ipAddressTable:access",
+                         "container insert failed for new entry\n"));
+            ipDefaultRouterTable_release_rowreq_ctx(rowreq_ctx);
+            return;
+        }
+    } else {
+        if (NULL != rowreq_ctx) {
+            snmp_log(LOG_ERR, "error setting index while loading "
+                    "ipDefaultRouterTable cache.\n");
+            ipDefaultRouterTable_release_rowreq_ctx(rowreq_ctx);
+        } else {
+            snmp_log(LOG_ERR, "memory allocation failed while loading "
+                     "ipDefaultRouterTable cache.\n");
+            netsnmp_access_defaultrouter_entry_free(defaultrouter_entry);
+        }
+
+        return;
+    }
+}
+
+/**
+ * load initial data
+ *
+ * TODO:350:M: Implement ipDefaultRouterTable data load
+ * This function will also be called by the cache helper to load
+ * the container again (after the container free function has been
+ * called to free the previous contents).
+ *
+ * @param container container to which items should be inserted
+ *
+ * @retval MFD_SUCCESS              : success.
+ * @retval MFD_RESOURCE_UNAVAILABLE : Can't access data source
+ * @retval MFD_ERROR                : other error.
+ *
+ *  This function is called to load the index(es) (and data, optionally)
+ *  for the every row in the data set.
+ *
+ * @remark
+ *  While loading the data, the only important thing is the indexes.
+ *  If access to your data is cheap/fast (e.g. you have a pointer to a
+ *  structure in memory), it would make sense to update the data here.
+ *  If, however, the accessing the data invovles more work (e.g. parsing
+ *  some other existing data, or peforming calculations to derive the data),
+ *  then you can limit yourself to setting the indexes and saving any
+ *  information you will need later. Then use the saved information in
+ *  ipDefaultRouterTable_row_prep() for populating data.
+ *
+ * @note
+ *  If you need consistency between rows (like you want statistics
+ *  for each row to be from the same time frame), you should set all
+ *  data here.
+ *
+ */
+int
+ipDefaultRouterTable_container_load(netsnmp_container * container)
+{
+    netsnmp_container *defaultrouter_container;
+    void              *tmp_ptr[2];
+
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_container_load", "called\n"));
+
+    /*
+     * TODO:351:M: |-> Load/update data in the ipDefaultRouterTable container.
+     * loop over your ipDefaultRouterTable data, allocate a rowreq context,
+     * set the index(es) [and data, optionally] and insert into
+     * the container.
+     */
+    defaultrouter_container =
+        netsnmp_access_defaultrouter_container_load(NULL,
+                        NETSNMP_ACCESS_DEFAULTROUTER_LOAD_ADDL_IDX_BY_ADDR);
+
+    if (NULL == defaultrouter_container)
+        return MFD_RESOURCE_UNAVAILABLE;        /* msg already logged */
+
+    /*
+     * we just got a fresh copy of interface data. compare it to
+     * what we've already got, and make any adjustments, saving
+     * missing addresses to be deleted.
+     */
+    tmp_ptr[0] = defaultrouter_container->next;
+    tmp_ptr[1] = NULL;
+    CONTAINER_FOR_EACH(container,
+                       (netsnmp_container_obj_func *) _check_entry_for_updates,
+                       tmp_ptr);
+
+    /*
+     * now add any new interfaces
+     */
+    CONTAINER_FOR_EACH(defaultrouter_container,
+                       (netsnmp_container_obj_func *) _add_new_entry,
+                       container);
+
+    /*
+     * free the container. we've either claimed each entry, or released it,
+     * so the access function doesn't need to clear the container.
+     */
+    netsnmp_access_defaultrouter_container_free(defaultrouter_container,
+                NETSNMP_ACCESS_DEFAULTROUTER_FREE_DONT_CLEAR);
+
+    /*
+     * remove deleted addresses from table container
+     */
+    if (NULL != tmp_ptr[1]) {
+        netsnmp_container *tmp_container =
+            (netsnmp_container *) tmp_ptr[1];
+        ipDefaultRouterTable_rowreq_ctx *tmp_ctx;
+
+        /*
+         * this works because the tmp_container is a linked list,
+         * which can be used like a stack...
+         */
+        while (CONTAINER_SIZE(tmp_container)) {
+            /*
+             * get from delete list
+             */
+            tmp_ctx = CONTAINER_FIRST(tmp_container);
+
+            /*
+             * release context, delete from table container
+             */
+            CONTAINER_REMOVE(container, tmp_ctx);
+            ipDefaultRouterTable_release_rowreq_ctx(tmp_ctx);
+
+            /*
+             * pop off delete list
+             */
+            CONTAINER_REMOVE(tmp_container, NULL);
+        }
+    }
+
+    DEBUGMSGT(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_container_load",
+               "%" NETSNMP_PRIz "d records\n", CONTAINER_SIZE(container)));
+
+    return MFD_SUCCESS;
+}
+
+/**
+ * container clean up
+ *
+ * @param container container with all current items
+ *
+ *  This optional callback is called prior to all
+ *  item's being removed from the container. If you
+ *  need to do any processing before that, do it here.
+ *
+ * @note
+ *  The MFD helper will take care of releasing all the row contexts.
+ *
+ */
+void
+ipDefaultRouterTable_container_free(netsnmp_container * container)
+{
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_container_free", "called\n"));
+
+    /*
+     * TODO:380:M: Free ipDefaultRouterTable container data.
+     */
+}                               /* ipDefaultRouterTable_container_free */
+
+/**
+ * prepare row for processing.
+ *
+ *  When the agent has located the row for a request, this function is
+ *  called to prepare the row for processing. If you fully populated
+ *  the data context during the index setup phase, you may not need to
+ *  do anything.
+ *
+ * @param rowreq_ctx pointer to a context.
+ *
+ * @retval MFD_SUCCESS     : success.
+ * @retval MFD_ERROR       : other error.
+ */
+int
+ipDefaultRouterTable_row_prep(ipDefaultRouterTable_rowreq_ctx * rowreq_ctx)
+{
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_row_prep", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:390:o: Prepare row for request.
+     * If populating row data was delayed, this is the place to
+     * fill in the row for this request.
+     */
+
+    return MFD_SUCCESS;
+}                               /* ipDefaultRouterTable_row_prep */
+
+/** @} */
diff --git a/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.h b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.h
new file mode 100644
index 0000000..ed033f0
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_access.h
@@ -0,0 +1,76 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $
+ *
+ * $Id:$
+ */
+#ifndef IPDEFAULTROUTERTABLE_DATA_ACCESS_H
+#define IPDEFAULTROUTERTABLE_DATA_ACCESS_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+    /*
+     *********************************************************************
+     * function declarations
+     */
+
+    /*
+     *********************************************************************
+     * Table declarations
+     */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipDefaultRouterTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+    /*
+     * IP-MIB::ipDefaultRouterTable is subid 37 of ip.
+     * Its status is Current.
+     * OID: .1.3.6.1.2.1.4.37, length: 8
+     */
+
+
+    int            
+        ipDefaultRouterTable_init_data(ipDefaultRouterTable_registration *
+                                       ipDefaultRouterTable_reg);
+
+
+    /*
+     * TODO:180:o: Review ipDefaultRouterTable cache timeout.
+     * The number of seconds before the cache times out
+     */
+#define IPDEFAULTROUTERTABLE_CACHE_TIMEOUT   60
+
+    void            ipDefaultRouterTable_container_init(netsnmp_container
+                                                        **
+                                                        container_ptr_ptr,
+                                                        netsnmp_cache *
+                                                        cache);
+    void           
+        ipDefaultRouterTable_container_shutdown(netsnmp_container *
+                                                container_ptr);
+
+    int             ipDefaultRouterTable_container_load(netsnmp_container *
+                                                        container);
+    void            ipDefaultRouterTable_container_free(netsnmp_container *
+                                                        container);
+
+    int             ipDefaultRouterTable_cache_load(netsnmp_container *
+                                                    container);
+    void            ipDefaultRouterTable_cache_free(netsnmp_container *
+                                                    container);
+    int            
+        ipDefaultRouterTable_row_prep(ipDefaultRouterTable_rowreq_ctx *
+                                      rowreq_ctx);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPDEFAULTROUTERTABLE_DATA_ACCESS_H */
diff --git a/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_get.c b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_get.c
new file mode 100644
index 0000000..1177897
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_get.c
@@ -0,0 +1,325 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 12088 $ of $ 
+ *
+ * $Id:$
+ */
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "ipDefaultRouterTable.h"
+
+
+/** @defgroup data_get data_get: Routines to get data
+ *
+ * TODO:230:M: Implement ipDefaultRouterTable get routines.
+ * TODO:240:M: Implement ipDefaultRouterTable mapping routines (if any).
+ *
+ * These routine are used to get the value for individual objects. The
+ * row context is passed, along with a pointer to the memory where the
+ * value should be copied.
+ *
+ * @{
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipDefaultRouterTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * IP-MIB::ipDefaultRouterTable is subid 37 of ip.
+ * Its status is Current.
+ * OID: .1.3.6.1.2.1.4.37, length: 8
+ */
+
+/*
+ * ---------------------------------------------------------------------
+ * * TODO:200:r: Implement ipDefaultRouterTable data context functions.
+ */
+/*
+ * ipDefaultRouterTable_allocate_data
+ *
+ * Purpose: create new ipDefaultRouterTable_data.
+ */
+ipDefaultRouterTable_data *
+ipDefaultRouterTable_allocate_data(void)
+{
+    /*
+     * TODO:201:r: |-> allocate memory for the ipDefaultRouterTable data context.
+     */
+    ipDefaultRouterTable_data *rtn =
+        netsnmp_access_defaultrouter_entry_create();
+
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_allocate_data", "called\n"));
+
+    if (NULL == rtn) {
+        snmp_log(LOG_ERR, "unable to malloc memory for new "
+                 "ipDefaultRouterTable_data.\n");
+    }
+
+    return rtn;
+}                               /* ipDefaultRouterTable_allocate_data */
+
+/*
+ * ipDefaultRouterTable_release_data
+ *
+ * Purpose: release ipDefaultRouterTable data.
+ */
+void
+ipDefaultRouterTable_release_data(ipDefaultRouterTable_data * data)
+{
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_release_data", "called\n"));
+
+    /*
+     * TODO:202:r: |-> release memory for the ipDefaultRouterTable data context.
+     */
+    netsnmp_access_defaultrouter_entry_free(data);
+}                               /* ipDefaultRouterTable_release_data */
+
+
+
+/**
+ * set mib index(es)
+ *
+ * @param tbl_idx mib index structure
+ * @param ipDefaultRouterAddressType_val
+ * @param ipDefaultRouterAddress_ptr
+ * @param ipDefaultRouterAddress_ptr_len
+ * @param ipDefaultRouterIfIndex_val
+ *
+ * @retval MFD_SUCCESS     : success.
+ * @retval MFD_ERROR       : other error.
+ *
+ * @remark
+ *  This convenience function is useful for setting all the MIB index
+ *  components with a single function call. It is assume that the C values
+ *  have already been mapped from their native/rawformat to the MIB format.
+ */
+int
+ipDefaultRouterTable_indexes_set_tbl_idx(ipDefaultRouterTable_mib_index *
+                                         tbl_idx,
+                                         u_long
+                                         ipDefaultRouterAddressType_val,
+                                         char
+                                         *ipDefaultRouterAddress_val_ptr,
+                                         size_t
+                                         ipDefaultRouterAddress_val_ptr_len,
+                                         long ipDefaultRouterIfIndex_val)
+{
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_indexes_set_tbl_idx", "called\n"));
+
+    /*
+     * ipDefaultRouterAddressType(1)/InetAddressType/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h 
+     */
+    /** WARNING: this code might not work for netsnmp_defaultrouter_entry */
+    tbl_idx->ipDefaultRouterAddressType = ipDefaultRouterAddressType_val;
+
+    /*
+     * ipDefaultRouterAddress(2)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h 
+     */
+    tbl_idx->ipDefaultRouterAddress_len = sizeof(tbl_idx->ipDefaultRouterAddress) / sizeof(tbl_idx->ipDefaultRouterAddress[0]); /* max length */
+    /** WARNING: this code might not work for netsnmp_defaultrouter_entry */
+    /*
+     * make sure there is enough space for ipDefaultRouterAddress data
+     */
+    if ((NULL == tbl_idx->ipDefaultRouterAddress) ||
+        (tbl_idx->ipDefaultRouterAddress_len <
+         (ipDefaultRouterAddress_val_ptr_len))) {
+        snmp_log(LOG_ERR, "not enough space for value\n");
+        return MFD_ERROR;
+    }
+    tbl_idx->ipDefaultRouterAddress_len =
+        ipDefaultRouterAddress_val_ptr_len;
+    memcpy(tbl_idx->ipDefaultRouterAddress, ipDefaultRouterAddress_val_ptr,
+           ipDefaultRouterAddress_val_ptr_len *
+           sizeof(ipDefaultRouterAddress_val_ptr[0]));
+
+    /*
+     * ipDefaultRouterIfIndex(3)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H 
+     */
+    /** WARNING: this code might not work for netsnmp_defaultrouter_entry */
+    tbl_idx->ipDefaultRouterIfIndex = ipDefaultRouterIfIndex_val;
+
+
+    return MFD_SUCCESS;
+}                               /* ipDefaultRouterTable_indexes_set_tbl_idx */
+
+/**
+ * @internal
+ * set row context indexes
+ *
+ * @param reqreq_ctx the row context that needs updated indexes
+ *
+ * @retval MFD_SUCCESS     : success.
+ * @retval MFD_ERROR       : other error.
+ *
+ * @remark
+ *  This function sets the mib indexs, then updates the oid indexs
+ *  from the mib index.
+ */
+int
+ipDefaultRouterTable_indexes_set(ipDefaultRouterTable_rowreq_ctx *
+                                 rowreq_ctx,
+                                 u_long ipDefaultRouterAddressType_val,
+                                 char *ipDefaultRouterAddress_val_ptr,
+                                 size_t ipDefaultRouterAddress_val_ptr_len,
+                                 long ipDefaultRouterIfIndex_val)
+{
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_indexes_set", "called\n"));
+
+    if (MFD_SUCCESS !=
+        ipDefaultRouterTable_indexes_set_tbl_idx(&rowreq_ctx->tbl_idx,
+                                                 ipDefaultRouterAddressType_val,
+                                                 ipDefaultRouterAddress_val_ptr,
+                                                 ipDefaultRouterAddress_val_ptr_len,
+                                                 ipDefaultRouterIfIndex_val))
+        return MFD_ERROR;
+
+    /*
+     * convert mib index to oid index
+     */
+    rowreq_ctx->oid_idx.len = sizeof(rowreq_ctx->oid_tmp) / sizeof(oid);
+    if (0 != ipDefaultRouterTable_index_to_oid(&rowreq_ctx->oid_idx,
+                                               &rowreq_ctx->tbl_idx)) {
+        return MFD_ERROR;
+    }
+
+    return MFD_SUCCESS;
+}                               /* ipDefaultRouterTable_indexes_set */
+
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipDefaultRouterEntry.ipDefaultRouterLifetime
+ * ipDefaultRouterLifetime is subid 4 of ipDefaultRouterEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.37.1.4
+ * Description:
+The remaining length of time, in seconds, that this router
+            will continue to be useful as a default router.  A value of
+            zero indicates that it is no longer useful as a default
+            router.  It is left to the implementer of the MIB as to
+            whether a router with a lifetime of zero is removed from the
+            list.
+
+            For IPv6, this value should be extracted from the router
+            advertisement messages.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 1      hashint   0
+ *   settable   0
+ *
+ * Ranges:  0 - 65535;
+ *
+ * Its syntax is UNSIGNED32 (based on perltype UNSIGNED32)
+ * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipDefaultRouterLifetime data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipDefaultRouterLifetime_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipDefaultRouterLifetime_get(ipDefaultRouterTable_rowreq_ctx * rowreq_ctx,
+                            u_long * ipDefaultRouterLifetime_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipDefaultRouterLifetime_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterLifetime_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipDefaultRouterLifetime data.
+     * copy (* ipDefaultRouterLifetime_val_ptr ) from rowreq_ctx->data
+     */
+    (*ipDefaultRouterLifetime_val_ptr) = rowreq_ctx->data->dr_lifetime;
+
+    return MFD_SUCCESS;
+}                               /* ipDefaultRouterLifetime_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipDefaultRouterEntry.ipDefaultRouterPreference
+ * ipDefaultRouterPreference is subid 5 of ipDefaultRouterEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.37.1.5
+ * Description:
+An indication of preference given to this router as a
+            default router as described in he Default Router
+            Preferences document.  Treating the value as a
+            2 bit signed integer allows for simple arithmetic
+            comparisons.
+
+            For IPv4 routers or IPv6 routers that are not using the
+            updated router advertisement format, this object is set to
+            medium (0).
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  1      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ * Enum range: 3/8. Values:  reserved(-2), low(-1), medium(0), high(1)
+ *
+ * Its syntax is INTEGER (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/**
+ * Extract the current value of the ipDefaultRouterPreference data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipDefaultRouterPreference_val_ptr
+ *        Pointer to storage for a long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipDefaultRouterPreference_get(ipDefaultRouterTable_rowreq_ctx * rowreq_ctx,
+                              u_long * ipDefaultRouterPreference_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipDefaultRouterPreference_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterPreference_get", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipDefaultRouterPreference data.
+     * copy (* ipDefaultRouterPreference_val_ptr ) from rowreq_ctx->data
+     */
+    (*ipDefaultRouterPreference_val_ptr) = rowreq_ctx->data->dr_preference;
+
+    return MFD_SUCCESS;
+}                               /* ipDefaultRouterPreference_get */
+
+
+
+/** @} */
diff --git a/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_get.h b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_get.h
new file mode 100644
index 0000000..8698675
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_data_get.h
@@ -0,0 +1,84 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 12088 $ of $
+ *
+ * $Id:$
+ *
+ * @file ipDefaultRouterTable_data_get.h
+ *
+ * @addtogroup get
+ *
+ * Prototypes for get functions
+ *
+ * @{
+ */
+#ifndef IPDEFAULTROUTERTABLE_DATA_GET_H
+#define IPDEFAULTROUTERTABLE_DATA_GET_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    /*
+     *********************************************************************
+     * GET function declarations
+     */
+
+    /*
+     *********************************************************************
+     * GET Table declarations
+     */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipDefaultRouterTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+    /*
+     * IP-MIB::ipDefaultRouterTable is subid 37 of ip.
+     * Its status is Current.
+     * OID: .1.3.6.1.2.1.4.37, length: 8
+     */
+    /*
+     * indexes
+     */
+
+    int            
+        ipDefaultRouterLifetime_get(ipDefaultRouterTable_rowreq_ctx *
+                                    rowreq_ctx,
+                                    u_long *
+                                    ipDefaultRouterLifetime_val_ptr);
+    int            
+        ipDefaultRouterPreference_get(ipDefaultRouterTable_rowreq_ctx *
+                                      rowreq_ctx,
+                                      u_long *
+                                      ipDefaultRouterPreference_val_ptr);
+
+
+    int            
+        ipDefaultRouterTable_indexes_set_tbl_idx
+        (ipDefaultRouterTable_mib_index * tbl_idx,
+         u_long ipDefaultRouterAddressType_val,
+         char *ipDefaultRouterAddress_val_ptr,
+         size_t ipDefaultRouterAddress_val_ptr_len,
+         long ipDefaultRouterIfIndex_val);
+    int            
+        ipDefaultRouterTable_indexes_set(ipDefaultRouterTable_rowreq_ctx *
+                                         rowreq_ctx,
+                                         u_long
+                                         ipDefaultRouterAddressType_val,
+                                         char
+                                         *ipDefaultRouterAddress_val_ptr,
+                                         size_t
+                                         ipDefaultRouterAddress_val_ptr_len,
+                                         long ipDefaultRouterIfIndex_val);
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPDEFAULTROUTERTABLE_DATA_GET_H */
+/** @} */
diff --git a/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_enums.h b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_enums.h
new file mode 100644
index 0000000..bb46d10
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_enums.h
@@ -0,0 +1,93 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : generic-table-enums.m2c 12526 2005-07-15 22:41:16Z rstory $
+ *
+ * $Id:$
+ */
+#ifndef IPDEFAULTROUTERTABLE_ENUMS_H
+#define IPDEFAULTROUTERTABLE_ENUMS_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    /*
+     * NOTES on enums
+     * ==============
+     *
+     * Value Mapping
+     * -------------
+     * If the values for your data type don't exactly match the
+     * possible values defined by the mib, you should map them
+     * below. For example, a boolean flag (1/0) is usually represented
+     * as a TruthValue in a MIB, which maps to the values (1/2).
+     *
+     */
+/*************************************************************************
+ *************************************************************************
+ *
+ * enum definitions for table ipDefaultRouterTable
+ *
+ *************************************************************************
+ *************************************************************************/
+
+/*************************************************************
+ * constants for enums for the MIB node
+ * ipDefaultRouterLifetime (UNSIGNED32 / ASN_UNSIGNED)
+ *
+ * since a Textual Convention may be referenced more than once in a
+ * MIB, protect againt redefinitions of the enum values.
+ */
+#ifndef IPDEFAULTROUTERLIFETIME_ENUMS
+#define IPDEFAULTROUTERLIFETIME_ENUMS
+
+#define IPDEFAULTROUTERLIFETIME_MIN  0
+#define IPDEFAULTROUTERLIFETIME_MAX  0xFFFFFFFFUL
+
+#endif                          /* IPDEFAULTROUTERLIFETIME_ENUMS */
+
+
+/*************************************************************
+ * constants for enums for the MIB node
+ * ipDefaultRouterAddressType (InetAddressType / ASN_INTEGER)
+ *
+ * since a Textual Convention may be referenced more than once in a
+ * MIB, protect againt redefinitions of the enum values.
+ */
+#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 */
+
+
+/*************************************************************
+ * constants for enums for the MIB node
+ * ipDefaultRouterPreference (INTEGER / ASN_INTEGER)
+ *
+ * since a Textual Convention may be referenced more than once in a
+ * MIB, protect againt redefinitions of the enum values.
+ */
+#ifndef IPDEFAULTROUTERPREFERENCE_ENUMS
+#define IPDEFAULTROUTERPREFERENCE_ENUMS
+
+#define IPDEFAULTROUTERPREFERENCE_RESERVED  -2
+#define IPDEFAULTROUTERPREFERENCE_LOW  -1
+#define IPDEFAULTROUTERPREFERENCE_MEDIUM  0
+#define IPDEFAULTROUTERPREFERENCE_HIGH  1
+
+#endif                          /* IPDEFAULTROUTERPREFERENCE_ENUMS */
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPDEFAULTROUTERTABLE_ENUMS_H */
diff --git a/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c
new file mode 100644
index 0000000..40ad72b
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.c
@@ -0,0 +1,1026 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 15899 $ of $ 
+ *
+ * $Id:$
+ */
+/*
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ * ***                                                               ***
+ * ***  NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE  ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THIS FILE DOES NOT CONTAIN ANY USER EDITABLE CODE.      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THE GENERATED CODE IS INTERNAL IMPLEMENTATION, AND      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***    IS SUBJECT TO CHANGE WITHOUT WARNING IN FUTURE RELEASES.   ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ */
+
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "ipDefaultRouterTable.h"
+
+
+#include <net-snmp/agent/table_container.h>
+#include <net-snmp/library/container.h>
+
+#include "ipDefaultRouterTable_interface.h"
+
+#include <ctype.h>
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipDefaultRouterTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * IP-MIB::ipDefaultRouterTable is subid 37 of ip.
+ * Its status is Current.
+ * OID: .1.3.6.1.2.1.4.37, length: 8
+ */
+typedef struct ipDefaultRouterTable_interface_ctx_s {
+
+    netsnmp_container *container;
+    netsnmp_cache  *cache;
+
+    ipDefaultRouterTable_registration *user_ctx;
+
+    netsnmp_table_registration_info tbl_info;
+
+    netsnmp_baby_steps_access_methods access_multiplexer;
+
+} ipDefaultRouterTable_interface_ctx;
+
+static ipDefaultRouterTable_interface_ctx ipDefaultRouterTable_if_ctx;
+
+static void    
+_ipDefaultRouterTable_container_init(ipDefaultRouterTable_interface_ctx *
+                                     if_ctx);
+static void    
+_ipDefaultRouterTable_container_shutdown(ipDefaultRouterTable_interface_ctx
+                                         * if_ctx);
+
+
+netsnmp_container *
+ipDefaultRouterTable_container_get(void)
+{
+    return ipDefaultRouterTable_if_ctx.container;
+}
+
+ipDefaultRouterTable_registration *
+ipDefaultRouterTable_registration_get(void)
+{
+    return ipDefaultRouterTable_if_ctx.user_ctx;
+}
+
+ipDefaultRouterTable_registration *
+ipDefaultRouterTable_registration_set(ipDefaultRouterTable_registration *
+                                      newreg)
+{
+    ipDefaultRouterTable_registration *old =
+        ipDefaultRouterTable_if_ctx.user_ctx;
+    ipDefaultRouterTable_if_ctx.user_ctx = newreg;
+    return old;
+}
+
+int
+ipDefaultRouterTable_container_size(void)
+{
+    return CONTAINER_SIZE(ipDefaultRouterTable_if_ctx.container);
+}
+
+/*
+ * mfd multiplexer modes
+ */
+static Netsnmp_Node_Handler _mfd_ipDefaultRouterTable_pre_request;
+static Netsnmp_Node_Handler _mfd_ipDefaultRouterTable_post_request;
+static Netsnmp_Node_Handler _mfd_ipDefaultRouterTable_object_lookup;
+static Netsnmp_Node_Handler _mfd_ipDefaultRouterTable_get_values;
+/**
+ * @internal
+ * Initialize the table ipDefaultRouterTable 
+ *    (Define its contents and how it's structured)
+ */
+void
+_ipDefaultRouterTable_initialize_interface
+    (ipDefaultRouterTable_registration * reg_ptr, u_long flags)
+{
+    netsnmp_baby_steps_access_methods *access_multiplexer =
+        &ipDefaultRouterTable_if_ctx.access_multiplexer;
+    netsnmp_table_registration_info *tbl_info =
+        &ipDefaultRouterTable_if_ctx.tbl_info;
+    netsnmp_handler_registration *reginfo;
+    netsnmp_mib_handler *handler;
+    int             mfd_modes = 0;
+
+    DEBUGMSGTL(("internal:ipDefaultRouterTable:_ipDefaultRouterTable_initialize_interface", "called\n"));
+
+
+    /*************************************************
+     *
+     * save interface context for ipDefaultRouterTable
+     */
+    /*
+     * Setting up the table's definition
+     */
+    netsnmp_table_helper_add_indexes(tbl_info, ASN_INTEGER,
+                                               /** index: ipDefaultRouterAddressType */
+                                     ASN_OCTET_STR,
+                                                 /** index: ipDefaultRouterAddress */
+                                     ASN_INTEGER,
+                                               /** index: ipDefaultRouterIfIndex */
+                                     0);
+
+    /*
+     * Define the minimum and maximum accessible columns.  This
+     * optimizes retrieval. 
+     */
+    tbl_info->min_column = IPDEFAULTROUTERTABLE_MIN_COL;
+    tbl_info->max_column = IPDEFAULTROUTERTABLE_MAX_COL;
+
+    /*
+     * save users context
+     */
+    ipDefaultRouterTable_if_ctx.user_ctx = reg_ptr;
+
+    /*
+     * call data access initialization code
+     */
+    ipDefaultRouterTable_init_data(reg_ptr);
+
+    /*
+     * set up the container
+     */
+    _ipDefaultRouterTable_container_init(&ipDefaultRouterTable_if_ctx);
+    if (NULL == ipDefaultRouterTable_if_ctx.container) {
+        snmp_log(LOG_ERR,
+                 "could not initialize container for ipDefaultRouterTable\n");
+        return;
+    }
+
+    /*
+     * access_multiplexer: REQUIRED wrapper for get request handling
+     */
+    access_multiplexer->object_lookup =
+        _mfd_ipDefaultRouterTable_object_lookup;
+    access_multiplexer->get_values = _mfd_ipDefaultRouterTable_get_values;
+
+    /*
+     * no wrappers yet
+     */
+    access_multiplexer->pre_request =
+        _mfd_ipDefaultRouterTable_pre_request;
+    access_multiplexer->post_request =
+        _mfd_ipDefaultRouterTable_post_request;
+
+
+    /*************************************************
+     *
+     * Create a registration, save our reg data, register table.
+     */
+    DEBUGMSGTL(("ipDefaultRouterTable:init_ipDefaultRouterTable",
+                "Registering ipDefaultRouterTable as a mibs-for-dummies table.\n"));
+    handler =
+        netsnmp_baby_steps_access_multiplexer_get(access_multiplexer);
+    reginfo =
+        netsnmp_handler_registration_create("ipDefaultRouterTable",
+                                            handler,
+                                            ipDefaultRouterTable_oid,
+                                            ipDefaultRouterTable_oid_size,
+                                            HANDLER_CAN_BABY_STEP |
+                                            HANDLER_CAN_RONLY);
+    if (NULL == reginfo) {
+        snmp_log(LOG_ERR,
+                 "error registering table ipDefaultRouterTable\n");
+        return;
+    }
+    reginfo->my_reg_void = &ipDefaultRouterTable_if_ctx;
+
+    /*************************************************
+     *
+     * set up baby steps handler, create it and inject it
+     */
+    if (access_multiplexer->object_lookup)
+        mfd_modes |= BABY_STEP_OBJECT_LOOKUP;
+    if (access_multiplexer->pre_request)
+        mfd_modes |= BABY_STEP_PRE_REQUEST;
+    if (access_multiplexer->post_request)
+        mfd_modes |= BABY_STEP_POST_REQUEST;
+
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
+    /* XXX - are these actually necessary? */
+    if (access_multiplexer->set_values)
+        mfd_modes |= BABY_STEP_SET_VALUES;
+    if (access_multiplexer->irreversible_commit)
+        mfd_modes |= BABY_STEP_IRREVERSIBLE_COMMIT;
+    if (access_multiplexer->object_syntax_checks)
+        mfd_modes |= BABY_STEP_CHECK_OBJECT;
+
+    if (access_multiplexer->undo_setup)
+        mfd_modes |= BABY_STEP_UNDO_SETUP;
+    if (access_multiplexer->undo_cleanup)
+        mfd_modes |= BABY_STEP_UNDO_CLEANUP;
+    if (access_multiplexer->undo_sets)
+        mfd_modes |= BABY_STEP_UNDO_SETS;
+
+    if (access_multiplexer->row_creation)
+        mfd_modes |= BABY_STEP_ROW_CREATE;
+    if (access_multiplexer->consistency_checks)
+        mfd_modes |= BABY_STEP_CHECK_CONSISTENCY;
+    if (access_multiplexer->commit)
+        mfd_modes |= BABY_STEP_COMMIT;
+    if (access_multiplexer->undo_commit)
+        mfd_modes |= BABY_STEP_UNDO_COMMIT;
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
+
+    handler = netsnmp_baby_steps_handler_get(mfd_modes);
+    netsnmp_inject_handler(reginfo, handler);
+
+    /*************************************************
+     *
+     * inject row_merge helper with prefix rootoid_len + 2 (entry.col)
+     */
+    handler = netsnmp_get_row_merge_handler(reginfo->rootoid_len + 2);
+    netsnmp_inject_handler(reginfo, handler);
+
+    /*************************************************
+     *
+     * inject container_table helper
+     */
+    handler =
+        netsnmp_container_table_handler_get(tbl_info,
+                                            ipDefaultRouterTable_if_ctx.
+                                            container,
+                                            TABLE_CONTAINER_KEY_NETSNMP_INDEX);
+    netsnmp_inject_handler(reginfo, handler);
+
+    /*************************************************
+     *
+     * inject cache helper
+     */
+    if (NULL != ipDefaultRouterTable_if_ctx.cache) {
+        handler =
+            netsnmp_cache_handler_get(ipDefaultRouterTable_if_ctx.cache);
+        netsnmp_inject_handler(reginfo, handler);
+    }
+
+    /*
+     * register table
+     */
+    netsnmp_register_table(reginfo, tbl_info);
+
+}                               /* _ipDefaultRouterTable_initialize_interface */
+
+/**
+ * @internal
+ * Shutdown the table ipDefaultRouterTable
+ */
+void
+_ipDefaultRouterTable_shutdown_interface(ipDefaultRouterTable_registration
+                                         * reg_ptr)
+{
+    /*
+     * shutdown the container
+     */
+    _ipDefaultRouterTable_container_shutdown(&ipDefaultRouterTable_if_ctx);
+}
+
+void
+ipDefaultRouterTable_valid_columns_set(netsnmp_column_info *vc)
+{
+    ipDefaultRouterTable_if_ctx.tbl_info.valid_columns = vc;
+}                               /* ipDefaultRouterTable_valid_columns_set */
+
+/**
+ * @internal
+ * convert the index component stored in the context to an oid
+ */
+int
+ipDefaultRouterTable_index_to_oid(netsnmp_index * oid_idx,
+                                  ipDefaultRouterTable_mib_index * mib_idx)
+{
+    int             err = SNMP_ERR_NOERROR;
+
+    /*
+     * temp storage for parsing indexes
+     */
+    /*
+     * ipDefaultRouterAddressType(1)/InetAddressType/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h
+     */
+    netsnmp_variable_list var_ipDefaultRouterAddressType;
+    /*
+     * ipDefaultRouterAddress(2)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h
+     */
+    netsnmp_variable_list var_ipDefaultRouterAddress;
+    /*
+     * ipDefaultRouterIfIndex(3)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H
+     */
+    netsnmp_variable_list var_ipDefaultRouterIfIndex;
+
+    /*
+     * set up varbinds
+     */
+    memset(&var_ipDefaultRouterAddressType, 0x00,
+           sizeof(var_ipDefaultRouterAddressType));
+    var_ipDefaultRouterAddressType.type = ASN_INTEGER;
+    memset(&var_ipDefaultRouterAddress, 0x00,
+           sizeof(var_ipDefaultRouterAddress));
+    var_ipDefaultRouterAddress.type = ASN_OCTET_STR;
+    memset(&var_ipDefaultRouterIfIndex, 0x00,
+           sizeof(var_ipDefaultRouterIfIndex));
+    var_ipDefaultRouterIfIndex.type = ASN_INTEGER;
+
+    /*
+     * chain temp index varbinds together
+     */
+    var_ipDefaultRouterAddressType.next_variable =
+        &var_ipDefaultRouterAddress;
+    var_ipDefaultRouterAddress.next_variable = &var_ipDefaultRouterIfIndex;
+    var_ipDefaultRouterIfIndex.next_variable = NULL;
+
+
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_index_to_oid", "called\n"));
+
+    /*
+     * ipDefaultRouterAddressType(1)/InetAddressType/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h 
+     */
+    snmp_set_var_value(&var_ipDefaultRouterAddressType,
+                       (u_char *) & mib_idx->ipDefaultRouterAddressType,
+                       sizeof(mib_idx->ipDefaultRouterAddressType));
+
+    /*
+     * ipDefaultRouterAddress(2)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h 
+     */
+    snmp_set_var_value(&var_ipDefaultRouterAddress,
+                       (u_char *) & mib_idx->ipDefaultRouterAddress,
+                       mib_idx->ipDefaultRouterAddress_len *
+                       sizeof(mib_idx->ipDefaultRouterAddress[0]));
+
+    /*
+     * ipDefaultRouterIfIndex(3)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H 
+     */
+    snmp_set_var_value(&var_ipDefaultRouterIfIndex,
+                       (u_char *) & mib_idx->ipDefaultRouterIfIndex,
+                       sizeof(mib_idx->ipDefaultRouterIfIndex));
+
+
+    err = build_oid_noalloc(oid_idx->oids, oid_idx->len, &oid_idx->len,
+                            NULL, 0, &var_ipDefaultRouterAddressType);
+    if (err)
+        snmp_log(LOG_ERR, "error %d converting index to oid\n", err);
+
+    /*
+     * parsing may have allocated memory. free it.
+     */
+    snmp_reset_var_buffers(&var_ipDefaultRouterAddressType);
+
+    return err;
+}                               /* ipDefaultRouterTable_index_to_oid */
+
+/**
+ * extract ipDefaultRouterTable indexes from a netsnmp_index
+ *
+ * @retval SNMP_ERR_NOERROR  : no error
+ * @retval SNMP_ERR_GENERR   : error
+ */
+int
+ipDefaultRouterTable_index_from_oid(netsnmp_index * oid_idx,
+                                    ipDefaultRouterTable_mib_index *
+                                    mib_idx)
+{
+    int             err = SNMP_ERR_NOERROR;
+
+    /*
+     * temp storage for parsing indexes
+     */
+    /*
+     * ipDefaultRouterAddressType(1)/InetAddressType/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h
+     */
+    netsnmp_variable_list var_ipDefaultRouterAddressType;
+    /*
+     * ipDefaultRouterAddress(2)/InetAddress/ASN_OCTET_STR/char(char)//L/a/w/e/R/d/h
+     */
+    netsnmp_variable_list var_ipDefaultRouterAddress;
+    /*
+     * ipDefaultRouterIfIndex(3)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H
+     */
+    netsnmp_variable_list var_ipDefaultRouterIfIndex;
+
+    /*
+     * set up varbinds
+     */
+    memset(&var_ipDefaultRouterAddressType, 0x00,
+           sizeof(var_ipDefaultRouterAddressType));
+    var_ipDefaultRouterAddressType.type = ASN_INTEGER;
+    memset(&var_ipDefaultRouterAddress, 0x00,
+           sizeof(var_ipDefaultRouterAddress));
+    var_ipDefaultRouterAddress.type = ASN_OCTET_STR;
+    memset(&var_ipDefaultRouterIfIndex, 0x00,
+           sizeof(var_ipDefaultRouterIfIndex));
+    var_ipDefaultRouterIfIndex.type = ASN_INTEGER;
+
+    /*
+     * chain temp index varbinds together
+     */
+    var_ipDefaultRouterAddressType.next_variable =
+        &var_ipDefaultRouterAddress;
+    var_ipDefaultRouterAddress.next_variable = &var_ipDefaultRouterIfIndex;
+    var_ipDefaultRouterIfIndex.next_variable = NULL;
+
+
+    DEBUGMSGTL(("verbose:ipDefaultRouterTable:ipDefaultRouterTable_index_from_oid", "called\n"));
+
+    /*
+     * parse the oid into the individual index components
+     */
+    err = parse_oid_indexes(oid_idx->oids, oid_idx->len,
+                            &var_ipDefaultRouterAddressType);
+    if (err == SNMP_ERR_NOERROR) {
+        /*
+         * copy out values
+         */
+        mib_idx->ipDefaultRouterAddressType =
+            *((u_long *) var_ipDefaultRouterAddressType.val.string);
+        /*
+         * NOTE: val_len is in bytes, ipDefaultRouterAddress_len might not be
+         */
+        if (var_ipDefaultRouterAddress.val_len >
+            sizeof(mib_idx->ipDefaultRouterAddress))
+            err = SNMP_ERR_GENERR;
+        else {
+            memcpy(mib_idx->ipDefaultRouterAddress,
+                   var_ipDefaultRouterAddress.val.string,
+                   var_ipDefaultRouterAddress.val_len);
+            mib_idx->ipDefaultRouterAddress_len =
+                var_ipDefaultRouterAddress.val_len /
+                sizeof(mib_idx->ipDefaultRouterAddress[0]);
+        }
+        mib_idx->ipDefaultRouterIfIndex =
+            *((long *) var_ipDefaultRouterIfIndex.val.string);
+
+
+    }
+
+    /*
+     * parsing may have allocated memory. free it.
+     */
+    snmp_reset_var_buffers(&var_ipDefaultRouterAddressType);
+
+    return err;
+}                               /* ipDefaultRouterTable_index_from_oid */
+
+
+/*
+ *********************************************************************
+ * @internal
+ * allocate resources for a ipDefaultRouterTable_rowreq_ctx
+ */
+ipDefaultRouterTable_rowreq_ctx *
+ipDefaultRouterTable_allocate_rowreq_ctx(ipDefaultRouterTable_data * data,
+                                         void *user_init_ctx)
+{
+    ipDefaultRouterTable_rowreq_ctx *rowreq_ctx =
+        SNMP_MALLOC_TYPEDEF(ipDefaultRouterTable_rowreq_ctx);
+
+    DEBUGMSGTL(("internal:ipDefaultRouterTable:ipDefaultRouterTable_allocate_rowreq_ctx", "called\n"));
+
+    if (NULL == rowreq_ctx) {
+        snmp_log(LOG_ERR, "Couldn't allocate memory for a "
+                 "ipDefaultRouterTable_rowreq_ctx.\n");
+        return NULL;
+    } else {
+        if (NULL != data) {
+            /*
+             * track if we got data from user
+             */
+            rowreq_ctx->rowreq_flags |= MFD_ROW_DATA_FROM_USER;
+            rowreq_ctx->data = data;
+        } else if (NULL ==
+                   (rowreq_ctx->data =
+                    ipDefaultRouterTable_allocate_data())) {
+            SNMP_FREE(rowreq_ctx);
+            return NULL;
+        }
+    }
+
+    /*
+     * undo context will be allocated when needed (in *_undo_setup)
+     */
+
+    rowreq_ctx->oid_idx.oids = rowreq_ctx->oid_tmp;
+
+    rowreq_ctx->ipDefaultRouterTable_data_list = NULL;
+
+    /*
+     * if we allocated data, call init routine
+     */
+    if (!(rowreq_ctx->rowreq_flags & MFD_ROW_DATA_FROM_USER)) {
+        if (SNMPERR_SUCCESS !=
+            ipDefaultRouterTable_rowreq_ctx_init(rowreq_ctx,
+                                                 user_init_ctx)) {
+            ipDefaultRouterTable_release_rowreq_ctx(rowreq_ctx);
+            rowreq_ctx = NULL;
+        }
+    }
+
+    return rowreq_ctx;
+}                               /* ipDefaultRouterTable_allocate_rowreq_ctx */
+
+/*
+ * @internal
+ * release resources for a ipDefaultRouterTable_rowreq_ctx
+ */
+void
+ipDefaultRouterTable_release_rowreq_ctx(ipDefaultRouterTable_rowreq_ctx *
+                                        rowreq_ctx)
+{
+    DEBUGMSGTL(("internal:ipDefaultRouterTable:ipDefaultRouterTable_release_rowreq_ctx", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    ipDefaultRouterTable_rowreq_ctx_cleanup(rowreq_ctx);
+
+    /*
+     * for non-transient data, don't free data we got from the user
+     */
+    if ((rowreq_ctx->data) &&
+        !(rowreq_ctx->rowreq_flags & MFD_ROW_DATA_FROM_USER))
+        ipDefaultRouterTable_release_data(rowreq_ctx->data);
+
+    /*
+     * free index oid pointer
+     */
+    if (rowreq_ctx->oid_idx.oids != rowreq_ctx->oid_tmp)
+        free(rowreq_ctx->oid_idx.oids);
+
+    SNMP_FREE(rowreq_ctx);
+}                               /* ipDefaultRouterTable_release_rowreq_ctx */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_ipDefaultRouterTable_pre_request(netsnmp_mib_handler *handler,
+                                      netsnmp_handler_registration
+                                      *reginfo,
+                                      netsnmp_agent_request_info
+                                      *agtreq_info,
+                                      netsnmp_request_info *requests)
+{
+    int             rc;
+
+    DEBUGMSGTL(("internal:ipDefaultRouterTable:_mfd_ipDefaultRouterTable_pre_request", "called\n"));
+
+    if (1 != netsnmp_row_merge_status_first(reginfo, agtreq_info)) {
+        DEBUGMSGTL(("internal:ipDefaultRouterTable",
+                    "skipping additional pre_request\n"));
+        return SNMP_ERR_NOERROR;
+    }
+
+    rc = ipDefaultRouterTable_pre_request(ipDefaultRouterTable_if_ctx.
+                                          user_ctx);
+    if (MFD_SUCCESS != rc) {
+        /*
+         * nothing we can do about it but log it
+         */
+        DEBUGMSGTL(("ipDefaultRouterTable", "error %d from "
+                    "ipDefaultRouterTable_pre_request\n", rc));
+        netsnmp_request_set_error_all(requests, SNMP_VALIDATE_ERR(rc));
+    }
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_ipDefaultRouterTable_pre_request */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_ipDefaultRouterTable_post_request(netsnmp_mib_handler *handler,
+                                       netsnmp_handler_registration
+                                       *reginfo,
+                                       netsnmp_agent_request_info
+                                       *agtreq_info,
+                                       netsnmp_request_info *requests)
+{
+    ipDefaultRouterTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+    int             rc, packet_rc;
+
+    DEBUGMSGTL(("internal:ipDefaultRouterTable:_mfd_ipDefaultRouterTable_post_request", "called\n"));
+
+    /*
+     * release row context, if deleted
+     */
+    if (rowreq_ctx && (rowreq_ctx->rowreq_flags & MFD_ROW_DELETED))
+        ipDefaultRouterTable_release_rowreq_ctx(rowreq_ctx);
+
+    /*
+     * wait for last call before calling user
+     */
+    if (1 != netsnmp_row_merge_status_last(reginfo, agtreq_info)) {
+        DEBUGMSGTL(("internal:ipDefaultRouterTable",
+                    "waiting for last post_request\n"));
+        return SNMP_ERR_NOERROR;
+    }
+
+    packet_rc = netsnmp_check_all_requests_error(agtreq_info->asp, 0);
+    rc = ipDefaultRouterTable_post_request(ipDefaultRouterTable_if_ctx.
+                                           user_ctx, packet_rc);
+    if (MFD_SUCCESS != rc) {
+        /*
+         * nothing we can do about it but log it
+         */
+        DEBUGMSGTL(("ipDefaultRouterTable", "error %d from "
+                    "ipDefaultRouterTable_post_request\n", rc));
+    }
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_ipDefaultRouterTable_post_request */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_ipDefaultRouterTable_object_lookup(netsnmp_mib_handler *handler,
+                                        netsnmp_handler_registration
+                                        *reginfo,
+                                        netsnmp_agent_request_info
+                                        *agtreq_info,
+                                        netsnmp_request_info *requests)
+{
+    int             rc = SNMP_ERR_NOERROR;
+    ipDefaultRouterTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+
+    DEBUGMSGTL(("internal:ipDefaultRouterTable:_mfd_ipDefaultRouterTable_object_lookup", "called\n"));
+
+    /*
+     * get our context from mfd
+     * ipDefaultRouterTable_interface_ctx *if_ctx =
+     *             (ipDefaultRouterTable_interface_ctx *)reginfo->my_reg_void;
+     */
+
+    if (NULL == rowreq_ctx) {
+        rc = SNMP_ERR_NOCREATION;
+    }
+
+    if (MFD_SUCCESS != rc)
+        netsnmp_request_set_error_all(requests, rc);
+    else
+        ipDefaultRouterTable_row_prep(rowreq_ctx);
+
+    return SNMP_VALIDATE_ERR(rc);
+}                               /* _mfd_ipDefaultRouterTable_object_lookup */
+
+/***********************************************************************
+ *
+ * GET processing
+ *
+ ***********************************************************************/
+/*
+ * @internal
+ * Retrieve the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_ipDefaultRouterTable_get_column(ipDefaultRouterTable_rowreq_ctx *
+                                 rowreq_ctx, netsnmp_variable_list * var,
+                                 int column)
+{
+    int             rc = SNMPERR_SUCCESS;
+
+    DEBUGMSGTL(("internal:ipDefaultRouterTable:_mfd_ipDefaultRouterTable_get_column", "called for %d\n", column));
+
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    switch (column) {
+
+        /*
+         * ipDefaultRouterLifetime(4)/UNSIGNED32/ASN_UNSIGNED/u_long(u_long)//l/A/w/e/R/d/h 
+         */
+    case COLUMN_IPDEFAULTROUTERLIFETIME:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_UNSIGNED;
+        rc = ipDefaultRouterLifetime_get(rowreq_ctx,
+                                         (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipDefaultRouterPreference(5)/INTEGER/ASN_INTEGER/long(u_long)//l/A/w/E/r/d/h 
+         */
+    case COLUMN_IPDEFAULTROUTERPREFERENCE:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_INTEGER;
+        rc = ipDefaultRouterPreference_get(rowreq_ctx,
+                                           (u_long *) var->val.string);
+        break;
+
+    default:
+        if (IPDEFAULTROUTERTABLE_MIN_COL <= column
+            && column <= IPDEFAULTROUTERTABLE_MAX_COL) {
+            DEBUGMSGTL(("internal:ipDefaultRouterTable:_mfd_ipDefaultRouterTable_get_column", "assume column %d is reserved\n", column));
+            rc = MFD_SKIP;
+        } else {
+            snmp_log(LOG_ERR,
+                     "unknown column %d in _ipDefaultRouterTable_get_column\n",
+                     column);
+        }
+        break;
+    }
+
+    return rc;
+}                               /* _ipDefaultRouterTable_get_column */
+
+int
+_mfd_ipDefaultRouterTable_get_values(netsnmp_mib_handler *handler,
+                                     netsnmp_handler_registration *reginfo,
+                                     netsnmp_agent_request_info
+                                     *agtreq_info,
+                                     netsnmp_request_info *requests)
+{
+    ipDefaultRouterTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+    netsnmp_table_request_info *tri;
+    u_char         *old_string;
+    void            (*dataFreeHook) (void *);
+    int             rc;
+
+    DEBUGMSGTL(("internal:ipDefaultRouterTable:_mfd_ipDefaultRouterTable_get_values", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    for (; requests; requests = requests->next) {
+        /*
+         * save old pointer, so we can free it if replaced
+         */
+        old_string = requests->requestvb->val.string;
+        dataFreeHook = requests->requestvb->dataFreeHook;
+        if (NULL == requests->requestvb->val.string) {
+            requests->requestvb->val.string = requests->requestvb->buf;
+            requests->requestvb->val_len =
+                sizeof(requests->requestvb->buf);
+        } else if (requests->requestvb->buf ==
+                   requests->requestvb->val.string) {
+            if (requests->requestvb->val_len !=
+                sizeof(requests->requestvb->buf))
+                requests->requestvb->val_len =
+                    sizeof(requests->requestvb->buf);
+        }
+
+        /*
+         * get column data
+         */
+        tri = netsnmp_extract_table_info(requests);
+        if (NULL == tri)
+            continue;
+
+        rc = _ipDefaultRouterTable_get_column(rowreq_ctx,
+                                              requests->requestvb,
+                                              tri->colnum);
+        if (rc) {
+            if (MFD_SKIP == rc) {
+                requests->requestvb->type = SNMP_NOSUCHINSTANCE;
+                rc = SNMP_ERR_NOERROR;
+            }
+        } else if (NULL == requests->requestvb->val.string) {
+            snmp_log(LOG_ERR, "NULL varbind data pointer!\n");
+            rc = SNMP_ERR_GENERR;
+        }
+        if (rc)
+            netsnmp_request_set_error(requests, SNMP_VALIDATE_ERR(rc));
+
+        /*
+         * if the buffer wasn't used previously for the old data (i.e. it
+         * was allcoated memory)  and the get routine replaced the pointer,
+         * we need to free the previous pointer.
+         */
+        if (old_string && (old_string != requests->requestvb->buf) &&
+            (requests->requestvb->val.string != old_string)) {
+            if (dataFreeHook)
+                (*dataFreeHook) (old_string);
+            else
+                free(old_string);
+        }
+    }                           /* for results */
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_ipDefaultRouterTable_get_values */
+
+
+/***********************************************************************
+ *
+ * SET processing
+ *
+ ***********************************************************************/
+
+/*
+ * SET PROCESSING NOT APPLICABLE (per MIB or user setting)
+ */
+/***********************************************************************
+ *
+ * DATA ACCESS
+ *
+ ***********************************************************************/
+static void     _container_free(netsnmp_container * container);
+
+/**
+ * @internal
+ */
+static int
+_cache_load(netsnmp_cache * cache, void *vmagic)
+{
+    DEBUGMSGTL(("internal:ipDefaultRouterTable:_cache_load", "called\n"));
+
+    if ((NULL == cache) || (NULL == cache->magic)) {
+        snmp_log(LOG_ERR,
+                 "invalid cache for ipDefaultRouterTable_cache_load\n");
+        return -1;
+    }
+
+    /** should only be called for an invalid or expired cache */
+    netsnmp_assert((0 == cache->valid) || (1 == cache->expired));
+
+    /*
+     * call user code
+     */
+    return ipDefaultRouterTable_container_load((netsnmp_container *)
+                                               cache->magic);
+}                               /* _cache_load */
+
+/**
+ * @internal
+ */
+static void
+_cache_free(netsnmp_cache * cache, void *magic)
+{
+    netsnmp_container *container;
+
+    DEBUGMSGTL(("internal:ipDefaultRouterTable:_cache_free", "called\n"));
+
+    if ((NULL == cache) || (NULL == cache->magic)) {
+        snmp_log(LOG_ERR,
+                 "invalid cache in ipDefaultRouterTable_cache_free\n");
+        return;
+    }
+
+    container = (netsnmp_container *) cache->magic;
+
+    _container_free(container);
+}                               /* _cache_free */
+
+/**
+ * @internal
+ */
+static void
+_container_item_free(ipDefaultRouterTable_rowreq_ctx * rowreq_ctx,
+                     void *context)
+{
+    DEBUGMSGTL(("internal:ipDefaultRouterTable:_container_item_free",
+                "called\n"));
+
+    if (NULL == rowreq_ctx)
+        return;
+
+    ipDefaultRouterTable_release_rowreq_ctx(rowreq_ctx);
+}                               /* _container_item_free */
+
+/**
+ * @internal
+ */
+static void
+_container_free(netsnmp_container * container)
+{
+    DEBUGMSGTL(("internal:ipDefaultRouterTable:_container_free",
+                "called\n"));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR,
+                 "invalid container in ipDefaultRouterTable_container_free\n");
+        return;
+    }
+
+    /*
+     * call user code
+     */
+    ipDefaultRouterTable_container_free(container);
+
+    /*
+     * free all items. inefficient, but easy.
+     */
+    CONTAINER_CLEAR(container,
+                    (netsnmp_container_obj_func *) _container_item_free,
+                    NULL);
+}                               /* _container_free */
+
+/**
+ * @internal
+ * initialize the container with functions or wrappers
+ */
+void
+_ipDefaultRouterTable_container_init(ipDefaultRouterTable_interface_ctx *
+                                     if_ctx)
+{
+    DEBUGMSGTL(("internal:ipDefaultRouterTable:_ipDefaultRouterTable_container_init", "called\n"));
+
+    /*
+     * cache init
+     */
+    if_ctx->cache = netsnmp_cache_create(30,    /* timeout in seconds */
+                                         _cache_load, _cache_free,
+                                         ipDefaultRouterTable_oid,
+                                         ipDefaultRouterTable_oid_size);
+
+    if (NULL == if_ctx->cache) {
+        snmp_log(LOG_ERR,
+                 "error creating cache for ipDefaultRouterTable\n");
+        return;
+    }
+
+    if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+
+    ipDefaultRouterTable_container_init(&if_ctx->container, if_ctx->cache);
+    if (NULL == if_ctx->container)
+        if_ctx->container =
+            netsnmp_container_find("ipDefaultRouterTable:table_container");
+    if (NULL == if_ctx->container) {
+        snmp_log(LOG_ERR, "error creating container in "
+                 "ipDefaultRouterTable_container_init\n");
+        return;
+    }
+
+    if (NULL != if_ctx->cache)
+        if_ctx->cache->magic = (void *) if_ctx->container;
+}                               /* _ipDefaultRouterTable_container_init */
+
+/**
+ * @internal
+ * shutdown the container with functions or wrappers
+ */
+void
+_ipDefaultRouterTable_container_shutdown(ipDefaultRouterTable_interface_ctx
+                                         * if_ctx)
+{
+    DEBUGMSGTL(("internal:ipDefaultRouterTable:_ipDefaultRouterTable_container_shutdown", "called\n"));
+
+    ipDefaultRouterTable_container_shutdown(if_ctx->container);
+
+    _container_free(if_ctx->container);
+
+}                               /* _ipDefaultRouterTable_container_shutdown */
+
+
+ipDefaultRouterTable_rowreq_ctx *
+ipDefaultRouterTable_row_find_by_mib_index(ipDefaultRouterTable_mib_index *
+                                           mib_idx)
+{
+    ipDefaultRouterTable_rowreq_ctx *rowreq_ctx;
+    oid             oid_tmp[MAX_OID_LEN];
+    netsnmp_index   oid_idx;
+    int             rc;
+
+    /*
+     * set up storage for OID
+     */
+    oid_idx.oids = oid_tmp;
+    oid_idx.len = sizeof(oid_tmp) / sizeof(oid);
+
+    /*
+     * convert
+     */
+    rc = ipDefaultRouterTable_index_to_oid(&oid_idx, mib_idx);
+    if (MFD_SUCCESS != rc)
+        return NULL;
+
+    rowreq_ctx =
+        CONTAINER_FIND(ipDefaultRouterTable_if_ctx.container, &oid_idx);
+
+    return rowreq_ctx;
+}
diff --git a/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.h b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.h
new file mode 100644
index 0000000..a780491
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_interface.h
@@ -0,0 +1,99 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 15899 $ of $
+ *
+ * $Id:$
+ */
+/** @ingroup interface: Routines to interface to Net-SNMP
+ *
+ * \warning This code should not be modified, called directly,
+ *          or used to interpret functionality. It is subject to
+ *          change at any time.
+ * 
+ * @{
+ */
+/*
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ * ***                                                               ***
+ * ***  NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE  ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THIS FILE DOES NOT CONTAIN ANY USER EDITABLE CODE.      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THE GENERATED CODE IS INTERNAL IMPLEMENTATION, AND      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***    IS SUBJECT TO CHANGE WITHOUT WARNING IN FUTURE RELEASES.   ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ */
+#ifndef IPDEFAULTROUTERTABLE_INTERFACE_H
+#define IPDEFAULTROUTERTABLE_INTERFACE_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+#include "ipDefaultRouterTable.h"
+
+
+    /*
+     ********************************************************************
+     * Table declarations
+     */
+
+    /*
+     * PUBLIC interface initialization routine 
+     */
+    void           
+        _ipDefaultRouterTable_initialize_interface
+        (ipDefaultRouterTable_registration * user_ctx, u_long flags);
+    void           
+        _ipDefaultRouterTable_shutdown_interface
+        (ipDefaultRouterTable_registration * user_ctx);
+
+    ipDefaultRouterTable_registration
+        *ipDefaultRouterTable_registration_get(void);
+
+    ipDefaultRouterTable_registration
+        *ipDefaultRouterTable_registration_set
+        (ipDefaultRouterTable_registration * newreg);
+
+    netsnmp_container *ipDefaultRouterTable_container_get(void);
+    int             ipDefaultRouterTable_container_size(void);
+
+    ipDefaultRouterTable_rowreq_ctx
+        *ipDefaultRouterTable_allocate_rowreq_ctx(ipDefaultRouterTable_data
+                                                  *, void *);
+    void           
+        ipDefaultRouterTable_release_rowreq_ctx
+        (ipDefaultRouterTable_rowreq_ctx * rowreq_ctx);
+
+    int             ipDefaultRouterTable_index_to_oid(netsnmp_index *
+                                                      oid_idx,
+                                                      ipDefaultRouterTable_mib_index
+                                                      * mib_idx);
+    int             ipDefaultRouterTable_index_from_oid(netsnmp_index *
+                                                        oid_idx,
+                                                        ipDefaultRouterTable_mib_index
+                                                        * mib_idx);
+
+    /*
+     * access to certain internals. use with caution!
+     */
+    void           
+        ipDefaultRouterTable_valid_columns_set(netsnmp_column_info *vc);
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPDEFAULTROUTERTABLE_INTERFACE_H */
+/** @} */
diff --git a/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_oids.h b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_oids.h
new file mode 100644
index 0000000..6914e71
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipDefaultRouterTable/ipDefaultRouterTable_oids.h
@@ -0,0 +1,39 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : generic-table-oids.m2c 12855 2005-09-27 15:56:08Z rstory $
+ *
+ * $Id:$
+ */
+#ifndef IPDEFAULTROUTERTABLE_OIDS_H
+#define IPDEFAULTROUTERTABLE_OIDS_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+    /*
+     * column number definitions for table ipDefaultRouterTable 
+     */
+#define IPDEFAULTROUTERTABLE_OID              1,3,6,1,2,1,4,37
+
+#define COLUMN_IPDEFAULTROUTERADDRESSTYPE         1
+
+#define COLUMN_IPDEFAULTROUTERADDRESS         2
+
+#define COLUMN_IPDEFAULTROUTERIFINDEX         3
+
+#define COLUMN_IPDEFAULTROUTERLIFETIME         4
+
+#define COLUMN_IPDEFAULTROUTERPREFERENCE         5
+
+
+#define IPDEFAULTROUTERTABLE_MIN_COL   COLUMN_IPDEFAULTROUTERLIFETIME
+#define IPDEFAULTROUTERTABLE_MAX_COL   COLUMN_IPDEFAULTROUTERPREFERENCE
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPDEFAULTROUTERTABLE_OIDS_H */
diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable.h b/agent/mibgroup/ip-mib/ipIfStatsTable.h
new file mode 100644
index 0000000..da1d85c
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipIfStatsTable.h
@@ -0,0 +1,8 @@
+/*
+ * module to include the modules
+ */
+
+config_require(ip-mib/data_access/systemstats)
+config_require(ip-mib/ipIfStatsTable/ipIfStatsTable)
+config_require(ip-mib/ipIfStatsTable/ipIfStatsTable_interface)
+config_require(ip-mib/ipIfStatsTable/ipIfStatsTable_data_access)
diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.c b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.c
new file mode 100644
index 0000000..43d807e
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.c
@@ -0,0 +1,222 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $ 
+ *
+ * $Id:$
+ */
+/** \page MFD helper for ipIfStatsTable
+ *
+ * \section intro Introduction
+ * Introductory text.
+ *
+ */
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "ipIfStatsTable.h"
+
+#include <net-snmp/agent/mib_modules.h>
+
+#include "ipIfStatsTable_interface.h"
+
+const oid       ipIfStatsTable_oid[] = { IPIFSTATSTABLE_OID };
+const int       ipIfStatsTable_oid_size = OID_LENGTH(ipIfStatsTable_oid);
+
+ipIfStatsTable_registration ipIfStatsTable_user_context;
+static ipIfStatsTable_registration *ipIfStatsTable_user_context_p;
+
+void            initialize_table_ipIfStatsTable(void);
+void            shutdown_table_ipIfStatsTable(void);
+
+
+/**
+ * Initializes the ipIfStatsTable module
+ */
+void
+init_ipIfStatsTable(void)
+{
+    DEBUGMSGTL(("verbose:ipIfStatsTable:init_ipIfStatsTable", "called\n"));
+
+    /*
+     * TODO:300:o: Perform ipIfStatsTable one-time module initialization.
+     */
+
+    /*
+     * here we initialize all the tables we're planning on supporting
+     */
+    if (should_init("ipIfStatsTable"))
+        initialize_table_ipIfStatsTable();
+
+    /*
+     * last changed should be 0 at startup
+     */
+    ipIfStatsTable_lastChange_set(0);
+}                               /* init_ipIfStatsTable */
+
+/**
+ * Shut-down the ipIfStatsTable module (agent is exiting)
+ */
+void
+shutdown_ipIfStatsTable(void)
+{
+    if (should_init("ipIfStatsTable"))
+        shutdown_table_ipIfStatsTable();
+
+}
+
+/**
+ * Initialize the table ipIfStatsTable 
+ *    (Define its contents and how it's structured)
+ */
+void
+initialize_table_ipIfStatsTable(void)
+{
+    u_long          flags;
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:initialize_table_ipIfStatsTable",
+                "called\n"));
+
+    /*
+     * TODO:301:o: Perform ipIfStatsTable one-time table initialization.
+     */
+
+    /*
+     * TODO:302:o: |->Initialize ipIfStatsTable user context
+     * if you'd like to pass in a pointer to some data for this
+     * table, allocate or set it up here.
+     */
+    /*
+     * a netsnmp_data_list is a simple way to store void pointers. A simple
+     * string token is used to add, find or remove pointers.
+     */
+    ipIfStatsTable_user_context_p
+	= netsnmp_create_data_list("ipIfStatsTable", NULL, NULL);
+
+    /*
+     * No support for any flags yet, but in the future you would
+     * set any flags here.
+     */
+    flags = 0;
+
+    /*
+     * call interface initialization code
+     */
+    _ipIfStatsTable_initialize_interface
+	(ipIfStatsTable_user_context_p, flags);
+}                               /* initialize_table_ipIfStatsTable */
+
+/**
+ * Shutdown the table ipIfStatsTable 
+ */
+void
+shutdown_table_ipIfStatsTable(void)
+{
+    /*
+     * call interface shutdown code
+     */
+    _ipIfStatsTable_shutdown_interface(ipIfStatsTable_user_context_p);
+    netsnmp_free_all_list_data(ipIfStatsTable_user_context_p);
+    ipIfStatsTable_user_context_p = NULL;
+}
+
+/**
+ * extra context initialization (eg default values)
+ *
+ * @param rowreq_ctx    : row request context
+ * @param user_init_ctx : void pointer for user (parameter to rowreq_ctx_allocate)
+ *
+ * @retval MFD_SUCCESS  : no errors
+ * @retval MFD_ERROR    : error (context allocate will fail)
+ */
+int
+ipIfStatsTable_rowreq_ctx_init(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                               void *user_init_ctx)
+{
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsTable_rowreq_ctx_init",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:210:o: |-> Perform extra ipIfStatsTable rowreq initialization. (eg DEFVALS)
+     */
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsTable_rowreq_ctx_init */
+
+/**
+ * extra context cleanup
+ *
+ */
+void
+ipIfStatsTable_rowreq_ctx_cleanup(ipIfStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsTable_rowreq_ctx_cleanup",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:211:o: |-> Perform extra ipIfStatsTable rowreq cleanup.
+     */
+    netsnmp_access_systemstats_entry_free(rowreq_ctx->data);
+    rowreq_ctx->data = NULL;
+}                               /* ipIfStatsTable_rowreq_ctx_cleanup */
+
+/**
+ * pre-request callback
+ *
+ *
+ * @retval MFD_SUCCESS              : success.
+ * @retval MFD_ERROR                : other error
+ */
+int
+ipIfStatsTable_pre_request(ipIfStatsTable_registration * user_context)
+{
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsTable_pre_request",
+                "called\n"));
+
+    /*
+     * TODO:510:o: Perform ipIfStatsTable pre-request actions.
+     */
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsTable_pre_request */
+
+/**
+ * post-request callback
+ *
+ * Note:
+ *   New rows have been inserted into the container, and
+ *   deleted rows have been removed from the container and
+ *   released.
+ *
+ * @param user_context
+ * @param rc : MFD_SUCCESS if all requests succeeded
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR   : other error (ignored)
+ */
+int
+ipIfStatsTable_post_request(ipIfStatsTable_registration * user_context,
+                            int rc)
+{
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsTable_post_request",
+                "called\n"));
+
+    /*
+     * TODO:511:o: Perform ipIfStatsTable post-request actions.
+     */
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsTable_post_request */
+
+
+/** @{ */
diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.h b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.h
new file mode 100644
index 0000000..bda956f
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable.h
@@ -0,0 +1,200 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $
+ *
+ * $Id:$
+ */
+#ifndef IPIFSTATSTABLE_H
+#define IPIFSTATSTABLE_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+/** @addtogroup misc misc: Miscellaneous routines
+ *
+ * @{
+ */
+#include <net-snmp/library/asn1.h>
+#include <net-snmp/data_access/ipstats.h>
+#include <net-snmp/data_access/systemstats.h>
+
+    /*
+     * other required module components 
+     */
+    /* *INDENT-OFF*  */
+config_require(ip-mib/ipIfStatsTable/ipIfStatsTable_interface)
+config_require(ip-mib/ipIfStatsTable/ipIfStatsTable_data_access)
+config_require(ip-mib/ipIfStatsTable/ipIfStatsTable_data_get)
+    /* *INDENT-ON*  */
+
+    /*
+     * OID and column number definitions for ipIfStatsTable 
+     */
+#include "ipIfStatsTable_oids.h"
+
+    /*
+     * enum definions 
+     */
+#include "ipIfStatsTable_enums.h"
+
+    /*
+     *********************************************************************
+     * function declarations
+     */
+    void            init_ipIfStatsTable(void);
+    void            shutdown_ipIfStatsTable(void);
+
+    /*
+     *********************************************************************
+     * Table declarations
+     */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipIfStatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+    /*
+     * IP-MIB::ipIfStatsTable is subid 3 of ipTrafficStats.
+     * Its status is Current.
+     * OID: .1.3.6.1.2.1.4.31.3, length: 9
+     */
+    /*
+     *********************************************************************
+     * When you register your mib, you get to provide a generic
+     * pointer that will be passed back to you for most of the
+     * functions calls.
+     *
+     * TODO:100:r: Review all context structures
+     */
+    /*
+     * TODO:101:o: |-> Review ipIfStatsTable registration context.
+     */
+    typedef netsnmp_data_list ipIfStatsTable_registration;
+
+/**********************************************************************/
+    /*
+     * TODO:110:r: |-> Review ipIfStatsTable data context structure.
+     * This structure is used to represent the data for ipIfStatsTable.
+     */
+    typedef netsnmp_systemstats_entry ipIfStatsTable_data;
+
+
+    /*
+     * TODO:120:r: |-> Review ipIfStatsTable mib index.
+     * This structure is used to represent the index for ipIfStatsTable.
+     */
+    typedef struct ipIfStatsTable_mib_index_s {
+
+        /*
+         * ipIfStatsIPVersion(1)/InetVersion/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h
+         */
+        u_long          ipIfStatsIPVersion;
+
+        /*
+         * ipIfStatsIfIndex(2)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H
+         */
+        long            ipIfStatsIfIndex;
+
+
+    } ipIfStatsTable_mib_index;
+
+    /*
+     * TODO:121:r: |   |-> Review ipIfStatsTable max index length.
+     * If you KNOW that your indexes will never exceed a certain
+     * length, update this macro to that length.
+     */
+#define MAX_ipIfStatsTable_IDX_LEN     2
+
+
+    /*
+     *********************************************************************
+     * TODO:130:o: |-> Review ipIfStatsTable Row request (rowreq) context.
+     * When your functions are called, you will be passed a
+     * ipIfStatsTable_rowreq_ctx pointer.
+     */
+    typedef struct ipIfStatsTable_rowreq_ctx_s {
+
+    /** this must be first for container compare to work */
+        netsnmp_index   oid_idx;
+        oid             oid_tmp[MAX_ipIfStatsTable_IDX_LEN];
+
+        ipIfStatsTable_mib_index tbl_idx;
+
+        ipIfStatsTable_data *data;
+
+        /*
+         * flags per row. Currently, the first (lower) 8 bits are reserved
+         * for the user. See mfd.h for other flags.
+         */
+        u_int           rowreq_flags;
+
+        /*
+         * TODO:131:o: |   |-> Add useful data to ipIfStatsTable rowreq context.
+         */
+        char            known_missing;
+        uint32_t        ipIfStatsDiscontinuityTime;
+        uint32_t        ipIfStatsRefreshRate;
+
+        /*
+         * storage for future expansion
+         */
+        netsnmp_data_list *ipIfStatsTable_data_list;
+
+    } ipIfStatsTable_rowreq_ctx;
+
+    typedef struct ipIfStatsTable_ref_rowreq_ctx_s {
+        ipIfStatsTable_rowreq_ctx *rowreq_ctx;
+    } ipIfStatsTable_ref_rowreq_ctx;
+
+    /*
+     *********************************************************************
+     * function prototypes
+     */
+    int             ipIfStatsTable_pre_request(ipIfStatsTable_registration
+                                               * user_context);
+    int             ipIfStatsTable_post_request(ipIfStatsTable_registration
+                                                * user_context, int rc);
+
+    int            
+        ipIfStatsTable_rowreq_ctx_init(ipIfStatsTable_rowreq_ctx *
+                                       rowreq_ctx, void *user_init_ctx);
+    void           
+        ipIfStatsTable_rowreq_ctx_cleanup(ipIfStatsTable_rowreq_ctx *
+                                          rowreq_ctx);
+
+    ipIfStatsTable_data *ipIfStatsTable_allocate_data(void);
+    void            ipIfStatsTable_release_data(ipIfStatsTable_data *
+                                                data);
+
+
+    ipIfStatsTable_rowreq_ctx
+        *ipIfStatsTable_row_find_by_mib_index(ipIfStatsTable_mib_index *
+                                              mib_idx);
+
+    extern const oid      ipIfStatsTable_oid[];
+    extern const int      ipIfStatsTable_oid_size;
+
+
+#include "ipIfStatsTable_interface.h"
+#include "ipIfStatsTable_data_access.h"
+#include "ipIfStatsTable_data_get.h"
+
+    /*
+     * DUMMY markers, ignore
+     *
+     * TODO:099:x: *************************************************************
+     * TODO:199:x: *************************************************************
+     * TODO:299:x: *************************************************************
+     * TODO:399:x: *************************************************************
+     * TODO:499:x: *************************************************************
+     */
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPIFSTATSTABLE_H */
+/** @} */
diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.c b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.c
new file mode 100644
index 0000000..7919dea
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.c
@@ -0,0 +1,410 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $ 
+ *
+ * $Id:$
+ */
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "ipIfStatsTable.h"
+
+
+#include "ipIfStatsTable_data_access.h"
+
+static int      ipis_cache_refresh = IPIFSTATSTABLE_CACHE_TIMEOUT;
+
+/** @ingroup interface
+ * @addtogroup data_access data_access: Routines to access data
+ *
+ * These routines are used to locate the data used to satisfy
+ * requests.
+ * 
+ * @{
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipIfStatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * IP-MIB::ipIfStatsTable is subid 3 of ipTrafficStats.
+ * Its status is Current.
+ * OID: .1.3.6.1.2.1.4.31.3, length: 9
+ */
+
+/**
+ * initialization for ipIfStatsTable data access
+ *
+ * This function is called during startup to allow you to
+ * allocate any resources you need for the data table.
+ *
+ * @param ipIfStatsTable_reg
+ *        Pointer to ipIfStatsTable_registration
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR   : unrecoverable error.
+ */
+int
+ipIfStatsTable_init_data(ipIfStatsTable_registration * ipIfStatsTable_reg)
+{
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsTable_init_data",
+                "called\n"));
+
+    /*
+     * TODO:303:o: Initialize ipIfStatsTable data.
+     */
+    netsnmp_access_systemstats_init();
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsTable_init_data */
+
+/**
+ * container overview
+ *
+ */
+
+/**
+ * container initialization
+ *
+ * @param container_ptr_ptr A pointer to a container pointer. If you
+ *        create a custom container, use this parameter to return it
+ *        to the MFD helper. If set to NULL, the MFD helper will
+ *        allocate a container for you.
+ * @param  cache A pointer to a cache structure. You can set the timeout
+ *         and other cache flags using this pointer.
+ *
+ *  This function is called at startup to allow you to customize certain
+ *  aspects of the access method. For the most part, it is for advanced
+ *  users. The default code should suffice for most cases. If no custom
+ *  container is allocated, the MFD code will create one for your.
+ *
+ *  This is also the place to set up cache behavior. The default, to
+ *  simply set the cache timeout, will work well with the default
+ *  container. If you are using a custom container, you may want to
+ *  look at the cache helper documentation to see if there are any
+ *  flags you want to set.
+ *
+ * @remark
+ *  This would also be a good place to do any initialization needed
+ *  for you data source. For example, opening a connection to another
+ *  process that will supply the data, opening a database, etc.
+ */
+void
+ipIfStatsTable_container_init(netsnmp_container ** container_ptr_ptr,
+                              netsnmp_cache * cache)
+{
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsTable_container_init",
+                "called\n"));
+
+    if (NULL == container_ptr_ptr) {
+        snmp_log(LOG_ERR,
+                 "bad container param to ipIfStatsTable_container_init\n");
+        return;
+    }
+
+    /*
+     * For advanced users, you can use a custom container. If you
+     * do not create one, one will be created for you.
+     */
+    /*
+     * We create a custom container here so we can pre-load it, which
+     * will result in all new entries with last changed values. we need
+     * to clear those...  We also need to make sure ifIndexes have been
+     * assigned...
+     */
+    *container_ptr_ptr =
+        netsnmp_container_find("ipIfStatsTable:table_container");
+    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");
+        return;
+    }
+
+    /*
+     * TODO:345:A: Set up ipIfStatsTable cache properties.
+     *
+     * Also for advanced users, you can set parameters for the
+     * cache. Do not change the magic pointer, as it is used
+     * by the MFD helper. To completely disable caching, set
+     * cache->enabled to 0.
+     */
+    cache->timeout = IPIFSTATSTABLE_CACHE_TIMEOUT;      /* seconds */
+
+    cache->flags |=
+        (NETSNMP_CACHE_DONT_AUTO_RELEASE | NETSNMP_CACHE_DONT_FREE_EXPIRED
+         | NETSNMP_CACHE_DONT_FREE_BEFORE_LOAD |
+         NETSNMP_CACHE_AUTO_RELOAD);
+}                               /* ipIfStatsTable_container_init */
+
+/**
+ * check entry for update
+ */
+static void
+_check_for_updates(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                   netsnmp_container *stats)
+{
+    netsnmp_systemstats_entry *ifstats_entry;
+
+    /*
+     * check for matching entry. works because indexes are the same.
+     */
+    ifstats_entry = (netsnmp_systemstats_entry*)CONTAINER_FIND(stats, rowreq_ctx->data);
+    if (NULL == ifstats_entry) {
+        DEBUGMSGTL(("ipIfStatsTable:access",
+                    "updating missing entry\n"));
+
+        /*
+         * mark row as missing, so we can set discontinuity
+         * when it comes back.
+         *
+         * what else should we do? set refresh to 0? that's not quite right...
+         */
+        rowreq_ctx->known_missing = 1;
+    } else {
+        DEBUGMSGTL(("ipIfStatsTable:access",
+                    "updating existing entry\n"));
+
+        /*
+         * Check for changes & update
+         */
+        netsnmp_access_systemstats_entry_update(rowreq_ctx->data,
+                                            ifstats_entry);
+
+        /*
+         * set discontinuity if previously missing.
+         */
+        if (1 == rowreq_ctx->known_missing) {
+            rowreq_ctx->known_missing = 0;
+            rowreq_ctx->ipIfStatsDiscontinuityTime =
+                netsnmp_get_agent_uptime();
+            ipIfStatsTable_lastChange_set(netsnmp_get_agent_uptime());
+        }
+
+        /*
+         * remove entry from container
+         */
+        CONTAINER_REMOVE(stats, ifstats_entry);
+        netsnmp_access_systemstats_entry_free(ifstats_entry);
+    }
+}
+
+/**
+ * add new entry
+ */
+static void
+_add_new(netsnmp_systemstats_entry *ifstats_entry,
+         netsnmp_container *container)
+{
+    ipIfStatsTable_rowreq_ctx *rowreq_ctx;
+
+    DEBUGMSGTL(("ipIfStatsTable:access", "creating new entry\n"));
+
+    netsnmp_assert(NULL != ifstats_entry);
+    netsnmp_assert(NULL != container);
+
+    /*
+     * allocate an row context and set the index(es)
+     */
+    rowreq_ctx =
+        ipIfStatsTable_allocate_rowreq_ctx(ifstats_entry, NULL);
+    if ((NULL != rowreq_ctx)
+        && (MFD_SUCCESS ==
+            ipIfStatsTable_indexes_set(rowreq_ctx,
+                                       ifstats_entry->index[0],
+                                       ifstats_entry->index[1]))) {
+        rowreq_ctx->ipIfStatsRefreshRate = ipis_cache_refresh * 1000;   /* milli-seconds */
+        CONTAINER_INSERT(container, rowreq_ctx);
+        ipIfStatsTable_lastChange_set(netsnmp_get_agent_uptime());
+    } else {
+        if (NULL != rowreq_ctx) {
+            snmp_log(LOG_ERR, "error setting index while loading "
+                     "ipIfStatsTable cache.\n");
+            ipIfStatsTable_release_rowreq_ctx(rowreq_ctx);
+        } else {
+            snmp_log(LOG_ERR, "memory allocation failed while loading "
+                     "ipIfStatsTable cache.\n");
+            netsnmp_access_systemstats_entry_free(ifstats_entry);
+        }
+    }
+}
+
+/**
+ * container shutdown
+ *
+ * @param container_ptr A pointer to the container.
+ *
+ *  This function is called at shutdown to allow you to customize certain
+ *  aspects of the access method. For the most part, it is for advanced
+ *  users. The default code should suffice for most cases.
+ *
+ *  This function is called before ipIfStatsTable_container_free().
+ *
+ * @remark
+ *  This would also be a good place to do any cleanup needed
+ *  for you data source. For example, closing a connection to another
+ *  process that supplied the data, closing a database, etc.
+ */
+void
+ipIfStatsTable_container_shutdown(netsnmp_container * container_ptr)
+{
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsTable_container_shutdown",
+                "called\n"));
+
+    if (NULL == container_ptr) {
+        snmp_log(LOG_ERR,
+                 "bad params to ipIfStatsTable_container_shutdown\n");
+        return;
+    }
+
+}                               /* ipIfStatsTable_container_shutdown */
+
+/**
+ * load initial data
+ *
+ * TODO:350:M: Implement ipIfStatsTable data load
+ * This function will also be called by the cache helper to load
+ * the container again (after the container free function has been
+ * called to free the previous contents).
+ *
+ * @param container container to which items should be inserted
+ *
+ * @retval MFD_SUCCESS              : success.
+ * @retval MFD_RESOURCE_UNAVAILABLE : Can't access data source
+ * @retval MFD_ERROR                : other error.
+ *
+ *  This function is called to load the index(es) (and data, optionally)
+ *  for the every row in the data set.
+ *
+ * @remark
+ *  While loading the data, the only important thing is the indexes.
+ *  If access to your data is cheap/fast (e.g. you have a pointer to a
+ *  structure in memory), it would make sense to update the data here.
+ *  If, however, the accessing the data invovles more work (e.g. parsing
+ *  some other existing data, or peforming calculations to derive the data),
+ *  then you can limit yourself to setting the indexes and saving any
+ *  information you will need later. Then use the saved information in
+ *  ipIfStatsTable_row_prep() for populating data.
+ *
+ * @note
+ *  If you need consistency between rows (like you want statistics
+ *  for each row to be from the same time frame), you should set all
+ *  data here.
+ *
+ */
+int
+ipIfStatsTable_container_load(netsnmp_container * container)
+{
+    netsnmp_container *stats;
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsTable_container_load",
+                "called\n"));
+
+    netsnmp_assert(NULL != container);
+
+    stats = netsnmp_access_systemstats_container_load(NULL, NETSNMP_ACCESS_SYSTEMSTATS_LOAD_IFTABLE);
+    if (NULL == stats)
+        return MFD_RESOURCE_UNAVAILABLE;        /* msg already logged */
+
+    /*
+     * TODO:351:M: |-> Load/update data in the ipIfStatsTable container.
+     * loop over your ipIfStatsTable data, allocate a rowreq context,
+     * set the index(es) [and data, optionally] and insert into
+     * the container.
+     */
+
+    /*
+     * we just got a fresh copy of data. compare it to
+     * what we've already got, and make any adjustements...
+     */
+    CONTAINER_FOR_EACH(container, (netsnmp_container_obj_func *)
+                       _check_for_updates, stats);
+
+    /*
+     * now add any new entries
+     */
+    CONTAINER_FOR_EACH(stats, (netsnmp_container_obj_func *)
+                       _add_new, container);
+
+
+    /*
+      * free the container. we've either claimed each ifentry, or released it,
+     * so the dal function doesn't need to clear the container.
+     */
+    netsnmp_access_systemstats_container_free(stats,
+                                          NETSNMP_ACCESS_SYSTEMSTATS_FREE_DONT_CLEAR);
+
+    DEBUGMSGT(("verbose:ipIfStatsTable:ipIfStatsTable_container_load",
+               "%lu records\n", (unsigned long)CONTAINER_SIZE(container)));
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsTable_container_load */
+
+/**
+ * container clean up
+ *
+ * @param container container with all current items
+ *
+ *  This optional callback is called prior to all
+ *  item's being removed from the container. If you
+ *  need to do any processing before that, do it here.
+ *
+ * @note
+ *  The MFD helper will take care of releasing all the row contexts.
+ *
+ */
+void
+ipIfStatsTable_container_free(netsnmp_container * container)
+{
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsTable_container_free",
+                "called\n"));
+
+    /*
+     * TODO:380:M: Free ipIfStatsTable container data.
+     */
+}                               /* ipIfStatsTable_container_free */
+
+/**
+ * prepare row for processing.
+ *
+ *  When the agent has located the row for a request, this function is
+ *  called to prepare the row for processing. If you fully populated
+ *  the data context during the index setup phase, you may not need to
+ *  do anything.
+ *
+ * @param rowreq_ctx pointer to a context.
+ *
+ * @retval MFD_SUCCESS     : success.
+ * @retval MFD_ERROR       : other error.
+ */
+int
+ipIfStatsTable_row_prep(ipIfStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsTable_row_prep",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:390:o: Prepare row for request.
+     * If populating row data was delayed, this is the place to
+     * fill in the row for this request.
+     */
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsTable_row_prep */
+
+/** @} */
diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.h b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.h
new file mode 100644
index 0000000..5ef7682
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_access.h
@@ -0,0 +1,70 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $
+ *
+ * $Id:$
+ */
+#ifndef IPIFSTATSTABLE_DATA_ACCESS_H
+#define IPIFSTATSTABLE_DATA_ACCESS_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+    /*
+     *********************************************************************
+     * function declarations
+     */
+
+    /*
+     *********************************************************************
+     * Table declarations
+     */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipIfStatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+    /*
+     * IP-MIB::ipIfStatsTable is subid 3 of ipTrafficStats.
+     * Its status is Current.
+     * OID: .1.3.6.1.2.1.4.31.3, length: 9
+     */
+
+
+    int             ipIfStatsTable_init_data(ipIfStatsTable_registration *
+                                             ipIfStatsTable_reg);
+
+
+    /*
+     * TODO:180:o: Review ipIfStatsTable cache timeout.
+     * The number of seconds before the cache times out
+     */
+#define IPIFSTATSTABLE_CACHE_TIMEOUT   60
+
+    void            ipIfStatsTable_container_init(netsnmp_container **
+                                                  container_ptr_ptr,
+                                                  netsnmp_cache * cache);
+    void            ipIfStatsTable_container_shutdown(netsnmp_container *
+                                                      container_ptr);
+
+    int             ipIfStatsTable_container_load(netsnmp_container *
+                                                  container);
+    void            ipIfStatsTable_container_free(netsnmp_container *
+                                                  container);
+
+    int             ipIfStatsTable_cache_load(netsnmp_container *
+                                              container);
+    void            ipIfStatsTable_cache_free(netsnmp_container *
+                                              container);
+
+    int             ipIfStatsTable_row_prep(ipIfStatsTable_rowreq_ctx *
+                                            rowreq_ctx);
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPIFSTATSTABLE_DATA_ACCESS_H */
diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.c b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.c
new file mode 100644
index 0000000..db673dc
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.c
@@ -0,0 +1,3015 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 12088 $ of $ 
+ *
+ * $Id:$
+ */
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "ipIfStatsTable.h"
+
+
+/** @defgroup data_get data_get: Routines to get data
+ *
+ * TODO:230:M: Implement ipIfStatsTable get routines.
+ * TODO:240:M: Implement ipIfStatsTable mapping routines (if any).
+ *
+ * These routine are used to get the value for individual objects. The
+ * row context is passed, along with a pointer to the memory where the
+ * value should be copied.
+ *
+ * @{
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipIfStatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * IP-MIB::ipIfStatsTable is subid 3 of ipTrafficStats.
+ * Its status is Current.
+ * OID: .1.3.6.1.2.1.4.31.3, length: 9
+ */
+
+/*
+ * ---------------------------------------------------------------------
+ * * TODO:200:r: Implement ipIfStatsTable data context functions.
+ */
+/*
+ * ipIfStatsTable_allocate_data
+ *
+ * Purpose: create new ipIfStatsTable_data.
+ */
+ipIfStatsTable_data *
+ipIfStatsTable_allocate_data(void)
+{
+    /*
+     * TODO:201:r: |-> allocate memory for the ipIfStatsTable data context.
+     */
+    ipIfStatsTable_data *rtn = SNMP_MALLOC_TYPEDEF(ipIfStatsTable_data);
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsTable_allocate_data",
+                "called\n"));
+
+    if (NULL == rtn) {
+        snmp_log(LOG_ERR, "unable to malloc memory for new "
+                 "ipIfStatsTable_data.\n");
+    }
+
+    return rtn;
+}                               /* ipIfStatsTable_allocate_data */
+
+/*
+ * ipIfStatsTable_release_data
+ *
+ * Purpose: release ipIfStatsTable data.
+ */
+void
+ipIfStatsTable_release_data(ipIfStatsTable_data * data)
+{
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsTable_release_data",
+                "called\n"));
+
+    /*
+     * TODO:202:r: |-> release memory for the ipIfStatsTable data context.
+     */
+    free(data);
+}                               /* ipIfStatsTable_release_data */
+
+
+
+/**
+ * set mib index(es)
+ *
+ * @param tbl_idx mib index structure
+ * @param ipIfStatsIPVersion_val
+ * @param ipIfStatsIfIndex_val
+ *
+ * @retval MFD_SUCCESS     : success.
+ * @retval MFD_ERROR       : other error.
+ *
+ * @remark
+ *  This convenience function is useful for setting all the MIB index
+ *  components with a single function call. It is assume that the C values
+ *  have already been mapped from their native/rawformat to the MIB format.
+ */
+int
+ipIfStatsTable_indexes_set_tbl_idx(ipIfStatsTable_mib_index * tbl_idx,
+                                   u_long ipIfStatsIPVersion_val,
+                                   long ipIfStatsIfIndex_val)
+{
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsTable_indexes_set_tbl_idx", "called\n"));
+
+    /*
+     * ipIfStatsIPVersion(1)/InetVersion/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h 
+     */
+    /** WARNING: this code might not work for netsnmp_ifstats_entry */
+    tbl_idx->ipIfStatsIPVersion = ipIfStatsIPVersion_val;
+
+    /*
+     * ipIfStatsIfIndex(2)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H 
+     */
+    /** WARNING: this code might not work for netsnmp_ifstats_entry */
+    tbl_idx->ipIfStatsIfIndex = ipIfStatsIfIndex_val;
+
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsTable_indexes_set_tbl_idx */
+
+/**
+ * @internal
+ * set row context indexes
+ *
+ * @param reqreq_ctx the row context that needs updated indexes
+ *
+ * @retval MFD_SUCCESS     : success.
+ * @retval MFD_ERROR       : other error.
+ *
+ * @remark
+ *  This function sets the mib indexs, then updates the oid indexs
+ *  from the mib index.
+ */
+int
+ipIfStatsTable_indexes_set(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                           u_long ipIfStatsIPVersion_val,
+                           long ipIfStatsIfIndex_val)
+{
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsTable_indexes_set",
+                "called\n"));
+
+    if (MFD_SUCCESS !=
+        ipIfStatsTable_indexes_set_tbl_idx(&rowreq_ctx->tbl_idx,
+                                           ipIfStatsIPVersion_val,
+                                           ipIfStatsIfIndex_val))
+        return MFD_ERROR;
+
+    /*
+     * convert mib index to oid index
+     */
+    rowreq_ctx->oid_idx.len = sizeof(rowreq_ctx->oid_tmp) / sizeof(oid);
+    if (0 != ipIfStatsTable_index_to_oid(&rowreq_ctx->oid_idx,
+                                         &rowreq_ctx->tbl_idx)) {
+        return MFD_ERROR;
+    }
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsTable_indexes_set */
+
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsInReceives
+ * ipIfStatsInReceives is subid 3 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.3
+ * Description:
+The total number of input IP datagrams received, including
+            those received in error.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsInReceives data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsInReceives_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsInReceives_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                        u_long * ipIfStatsInReceives_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsInReceives_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsInReceives_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsInReceives data.
+     * copy (* ipIfStatsInReceives_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES])
+        return MFD_SKIP;
+
+    (*ipIfStatsInReceives_val_ptr) =
+        rowreq_ctx->data->stats.HCInReceives.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsInReceives_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsHCInReceives
+ * ipIfStatsHCInReceives is subid 4 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.4
+ * Description:
+The total number of input IP datagrams received, including
+            those received in error.  This object counts the same
+            datagrams as ipIfStatsInReceives, but allows for larger
+            values.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER64 (based on perltype COUNTER64)
+ * The net-snmp type is ASN_COUNTER64. The C type decl is U64 (U64)
+ */
+/**
+ * Extract the current value of the ipIfStatsHCInReceives data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsHCInReceives_val_ptr
+ *        Pointer to storage for a U64 variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsHCInReceives_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                          U64 * ipIfStatsHCInReceives_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsHCInReceives_val_ptr);
+
+    /*
+     * TODO:231:o: |-> copy ipIfStatsHCInReceives data.
+     * get (* ipIfStatsHCInReceives_val_ptr ).low and (* ipIfStatsHCInReceives_val_ptr ).high from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES])
+        return MFD_SKIP;
+
+    (*ipIfStatsHCInReceives_val_ptr).low =
+        rowreq_ctx->data->stats.HCInReceives.low;
+    (*ipIfStatsHCInReceives_val_ptr).high =
+        rowreq_ctx->data->stats.HCInReceives.high;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsHCInReceives_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsInOctets
+ * ipIfStatsInOctets is subid 5 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.5
+ * Description:
+The total number of octets received in input IP datagrams,
+            including those received in error.  Octets from datagrams
+            counted in ipIfStatsInReceives MUST be counted here.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsInOctets data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsInOctets_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsInOctets_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                      u_long * ipIfStatsInOctets_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsInOctets_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsInOctets_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsInOctets data.
+     * copy (* ipIfStatsInOctets_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINOCTETS])
+        return MFD_SKIP;
+
+    (*ipIfStatsInOctets_val_ptr) =
+        rowreq_ctx->data->stats.HCInOctets.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsInOctets_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsHCInOctets
+ * ipIfStatsHCInOctets is subid 6 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.6
+ * Description:
+The total number of octets received in input IP datagrams,
+            including those received in error.  This object counts the
+            same octets as ipIfStatsInOctets, but allows for larger
+            values.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER64 (based on perltype COUNTER64)
+ * The net-snmp type is ASN_COUNTER64. The C type decl is U64 (U64)
+ */
+/**
+ * Extract the current value of the ipIfStatsHCInOctets data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsHCInOctets_val_ptr
+ *        Pointer to storage for a U64 variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsHCInOctets_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                        U64 * ipIfStatsHCInOctets_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsHCInOctets_val_ptr);
+
+    /*
+     * TODO:231:o: |-> copy ipIfStatsHCInOctets data.
+     * get (* ipIfStatsHCInOctets_val_ptr ).low and (* ipIfStatsHCInOctets_val_ptr ).high from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINOCTETS])
+        return MFD_SKIP;
+
+    (*ipIfStatsHCInOctets_val_ptr).low =
+        rowreq_ctx->data->stats.HCInOctets.low;
+    (*ipIfStatsHCInOctets_val_ptr).high =
+        rowreq_ctx->data->stats.HCInOctets.high;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsHCInOctets_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsInHdrErrors
+ * ipIfStatsInHdrErrors is subid 7 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.7
+ * Description:
+The number of input IP datagrams discarded due to errors in
+            their IP headers, including version number mismatch, other
+            format errors, hop count exceeded, errors discovered in
+            processing their IP options, etc.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsInHdrErrors data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsInHdrErrors_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsInHdrErrors_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                         u_long * ipIfStatsInHdrErrors_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsInHdrErrors_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsInHdrErrors_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsInHdrErrors data.
+     * copy (* ipIfStatsInHdrErrors_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS])
+        return MFD_SKIP;
+
+    (*ipIfStatsInHdrErrors_val_ptr) =
+        rowreq_ctx->data->stats.InHdrErrors;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsInHdrErrors_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsInNoRoutes
+ * ipIfStatsInNoRoutes is subid 8 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.8
+ * Description:
+The number of input IP datagrams discarded because no route
+            could be found to transmit them to their destination.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsInNoRoutes data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsInNoRoutes_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsInNoRoutes_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                        u_long * ipIfStatsInNoRoutes_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsInNoRoutes_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsInNoRoutes_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsInNoRoutes data.
+     * copy (* ipIfStatsInNoRoutes_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINNOROUTES])
+        return MFD_SKIP;
+
+    (*ipIfStatsInNoRoutes_val_ptr) =
+        rowreq_ctx->data->stats.HCInNoRoutes.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsInNoRoutes_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsInAddrErrors
+ * ipIfStatsInAddrErrors is subid 9 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.9
+ * Description:
+The number of input IP datagrams discarded because the IP
+            address in their IP header's destination field was not a
+            valid address to be received at this entity.  This count
+            includes invalid addresses (e.g., ::0).  For entities that
+            are not IP routers and therefore do not forward datagrams,
+            this counter includes datagrams discarded because the
+            destination address was not a local address.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsInAddrErrors data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsInAddrErrors_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsInAddrErrors_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                          u_long * ipIfStatsInAddrErrors_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsInAddrErrors_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsInAddrErrors_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsInAddrErrors data.
+     * copy (* ipIfStatsInAddrErrors_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_INADDRERRORS])
+        return MFD_SKIP;
+
+    (*ipIfStatsInAddrErrors_val_ptr) =
+        rowreq_ctx->data->stats.InAddrErrors;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsInAddrErrors_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsInUnknownProtos
+ * ipIfStatsInUnknownProtos is subid 10 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.10
+ * Description:
+The number of locally-addressed IP datagrams received
+            successfully but discarded because of an unknown or
+            unsupported protocol.
+
+            When tracking interface statistics, the counter of the
+            interface to which these datagrams were addressed is
+            incremented.  This interface might not be the same as the
+            input interface for some of the datagrams.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+
+
+
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsInUnknownProtos data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsInUnknownProtos_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsInUnknownProtos_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                             u_long * ipIfStatsInUnknownProtos_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsInUnknownProtos_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsInUnknownProtos_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsInUnknownProtos data.
+     * copy (* ipIfStatsInUnknownProtos_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_INUNKNOWNPROTOS])
+        return MFD_SKIP;
+
+    (*ipIfStatsInUnknownProtos_val_ptr) =
+        rowreq_ctx->data->stats.InUnknownProtos;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsInUnknownProtos_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsInTruncatedPkts
+ * ipIfStatsInTruncatedPkts is subid 11 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.11
+ * Description:
+The number of input IP datagrams discarded because the
+            datagram frame didn't carry enough data.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsInTruncatedPkts data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsInTruncatedPkts_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsInTruncatedPkts_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                             u_long * ipIfStatsInTruncatedPkts_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsInTruncatedPkts_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsInTruncatedPkts_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsInTruncatedPkts data.
+     * copy (* ipIfStatsInTruncatedPkts_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_INTRUNCATEDPKTS])
+        return MFD_SKIP;
+
+    (*ipIfStatsInTruncatedPkts_val_ptr) =
+        rowreq_ctx->data->stats.InTruncatedPkts;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsInTruncatedPkts_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsInForwDatagrams
+ * ipIfStatsInForwDatagrams is subid 12 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.12
+ * Description:
+The number of input datagrams for which this entity was not
+            their final IP destination and for which this entity
+            attempted to find a route to forward them to that final
+            destination.  In entities that do not act as IP routers,
+            this counter will include only those datagrams that were
+            Source-Routed via this entity, and the Source-Route
+            processing was successful.
+
+            When tracking interface statistics, the counter of the
+            incoming interface is incremented for each datagram.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsInForwDatagrams data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsInForwDatagrams_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsInForwDatagrams_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                             u_long * ipIfStatsInForwDatagrams_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsInForwDatagrams_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsInForwDatagrams_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsInForwDatagrams data.
+     * copy (* ipIfStatsInForwDatagrams_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINFORWDATAGRAMS])
+        return MFD_SKIP;
+
+    (*ipIfStatsInForwDatagrams_val_ptr) =
+        rowreq_ctx->data->stats.HCInForwDatagrams.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsInForwDatagrams_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsHCInForwDatagrams
+ * ipIfStatsHCInForwDatagrams is subid 13 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.13
+ * Description:
+The number of input datagrams for which this entity was not
+            their final IP destination and for which this entity
+            attempted to find a route to forward them to that final
+            destination.  This object counts the same packets as
+
+
+
+            ipIfStatsInForwDatagrams, but allows for larger values.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER64 (based on perltype COUNTER64)
+ * The net-snmp type is ASN_COUNTER64. The C type decl is U64 (U64)
+ */
+/**
+ * Extract the current value of the ipIfStatsHCInForwDatagrams data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsHCInForwDatagrams_val_ptr
+ *        Pointer to storage for a U64 variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsHCInForwDatagrams_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                               U64 * ipIfStatsHCInForwDatagrams_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsHCInForwDatagrams_val_ptr);
+
+    /*
+     * TODO:231:o: |-> copy ipIfStatsHCInForwDatagrams data.
+     * get (* ipIfStatsHCInForwDatagrams_val_ptr ).low and (* ipIfStatsHCInForwDatagrams_val_ptr ).high from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINFORWDATAGRAMS])
+        return MFD_SKIP;
+
+    (*ipIfStatsHCInForwDatagrams_val_ptr).low =
+        rowreq_ctx->data->stats.HCInForwDatagrams.low;
+    (*ipIfStatsHCInForwDatagrams_val_ptr).high =
+        rowreq_ctx->data->stats.HCInForwDatagrams.high;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsHCInForwDatagrams_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsReasmReqds
+ * ipIfStatsReasmReqds is subid 14 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.14
+ * Description:
+The number of IP fragments received that needed to be
+            reassembled at this interface.
+
+            When tracking interface statistics, the counter of the
+            interface to which these fragments were addressed is
+            incremented.  This interface might not be the same as the
+            input interface for some of the fragments.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsReasmReqds data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsReasmReqds_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsReasmReqds_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                        u_long * ipIfStatsReasmReqds_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsReasmReqds_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsReasmReqds_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsReasmReqds data.
+     * copy (* ipIfStatsReasmReqds_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMREQDS])
+        return MFD_SKIP;
+
+    (*ipIfStatsReasmReqds_val_ptr) =
+        rowreq_ctx->data->stats.ReasmReqds;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsReasmReqds_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsReasmOKs
+ * ipIfStatsReasmOKs is subid 15 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.15
+ * Description:
+The number of IP datagrams successfully reassembled.
+
+            When tracking interface statistics, the counter of the
+            interface to which these datagrams were addressed is
+            incremented.  This interface might not be the same as the
+            input interface for some of the datagrams.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsReasmOKs data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsReasmOKs_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsReasmOKs_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                      u_long * ipIfStatsReasmOKs_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsReasmOKs_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsReasmOKs_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsReasmOKs data.
+     * copy (* ipIfStatsReasmOKs_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMOKS])
+        return MFD_SKIP;
+
+    (*ipIfStatsReasmOKs_val_ptr) =
+        rowreq_ctx->data->stats.ReasmOKs;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsReasmOKs_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsReasmFails
+ * ipIfStatsReasmFails is subid 16 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.16
+ * Description:
+The number of failures detected by the IP re-assembly
+            algorithm (for whatever reason: timed out, errors, etc.).
+            Note that this is not necessarily a count of discarded IP
+            fragments since some algorithms (notably the algorithm in
+            RFC 815) can lose track of the number of fragments by
+            combining them as they are received.
+
+            When tracking interface statistics, the counter of the
+            interface to which these fragments were addressed is
+            incremented.  This interface might not be the same as the
+            input interface for some of the fragments.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsReasmFails data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsReasmFails_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsReasmFails_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                        u_long * ipIfStatsReasmFails_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsReasmFails_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsReasmFails_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsReasmFails data.
+     * copy (* ipIfStatsReasmFails_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMFAILS])
+        return MFD_SKIP;
+
+    (*ipIfStatsReasmFails_val_ptr) =
+        rowreq_ctx->data->stats.ReasmFails;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsReasmFails_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsInDiscards
+ * ipIfStatsInDiscards is subid 17 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.17
+ * Description:
+The number of input IP datagrams for which no problems were
+            encountered to prevent their continued processing, but
+            were discarded (e.g., for lack of buffer space).  Note that
+            this counter does not include any datagrams discarded while
+            awaiting re-assembly.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsInDiscards data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsInDiscards_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsInDiscards_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                        u_long * ipIfStatsInDiscards_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsInDiscards_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsInDiscards_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsInDiscards data.
+     * copy (* ipIfStatsInDiscards_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_INDISCARDS])
+        return MFD_SKIP;
+
+    (*ipIfStatsInDiscards_val_ptr) =
+        rowreq_ctx->data->stats.InDiscards;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsInDiscards_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsInDelivers
+ * ipIfStatsInDelivers is subid 18 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.18
+ * Description:
+The total number of datagrams successfully delivered to IP
+            user-protocols (including ICMP).
+
+            When tracking interface statistics, the counter of the
+            interface to which these datagrams were addressed is
+            incremented.  This interface might not be the same as the
+
+
+
+            input interface for some of the datagrams.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsInDelivers data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsInDelivers_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsInDelivers_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                        u_long * ipIfStatsInDelivers_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsInDelivers_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsInDelivers_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsInDelivers data.
+     * copy (* ipIfStatsInDelivers_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINDELIVERS])
+        return MFD_SKIP;
+
+    (*ipIfStatsInDelivers_val_ptr) =
+        rowreq_ctx->data->stats.HCInDelivers.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsInDelivers_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsHCInDelivers
+ * ipIfStatsHCInDelivers is subid 19 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.19
+ * Description:
+The total number of datagrams successfully delivered to IP
+            user-protocols (including ICMP).  This object counts the
+            same packets as ipIfStatsInDelivers, but allows for larger
+            values.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER64 (based on perltype COUNTER64)
+ * The net-snmp type is ASN_COUNTER64. The C type decl is U64 (U64)
+ */
+/**
+ * Extract the current value of the ipIfStatsHCInDelivers data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsHCInDelivers_val_ptr
+ *        Pointer to storage for a U64 variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsHCInDelivers_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                          U64 * ipIfStatsHCInDelivers_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsHCInDelivers_val_ptr);
+
+    /*
+     * TODO:231:o: |-> copy ipIfStatsHCInDelivers data.
+     * get (* ipIfStatsHCInDelivers_val_ptr ).low and (* ipIfStatsHCInDelivers_val_ptr ).high from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINDELIVERS])
+        return MFD_SKIP;
+
+    (*ipIfStatsHCInDelivers_val_ptr).low =
+        rowreq_ctx->data->stats.HCInDelivers.low;
+    (*ipIfStatsHCInDelivers_val_ptr).high =
+        rowreq_ctx->data->stats.HCInDelivers.high;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsHCInDelivers_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsOutRequests
+ * ipIfStatsOutRequests is subid 20 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.20
+ * Description:
+The total number of IP datagrams that local IP user-
+            protocols (including ICMP) supplied to IP in requests for
+            transmission.  Note that this counter does not include any
+            datagrams counted in ipIfStatsOutForwDatagrams.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsOutRequests data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsOutRequests_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsOutRequests_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                         u_long * ipIfStatsOutRequests_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsOutRequests_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsOutRequests_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsOutRequests data.
+     * copy (* ipIfStatsOutRequests_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTREQUESTS])
+        return MFD_SKIP;
+
+    (*ipIfStatsOutRequests_val_ptr) =
+        rowreq_ctx->data->stats.HCOutRequests.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsOutRequests_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsHCOutRequests
+ * ipIfStatsHCOutRequests is subid 21 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.21
+ * Description:
+The total number of IP datagrams that local IP user-
+            protocols (including ICMP) supplied to IP in requests for
+            transmission.  This object counts the same packets as
+
+
+
+            ipIfStatsOutRequests, but allows for larger values.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER64 (based on perltype COUNTER64)
+ * The net-snmp type is ASN_COUNTER64. The C type decl is U64 (U64)
+ */
+/**
+ * Extract the current value of the ipIfStatsHCOutRequests data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsHCOutRequests_val_ptr
+ *        Pointer to storage for a U64 variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsHCOutRequests_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                           U64 * ipIfStatsHCOutRequests_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsHCOutRequests_val_ptr);
+
+    /*
+     * TODO:231:o: |-> copy ipIfStatsHCOutRequests data.
+     * get (* ipIfStatsHCOutRequests_val_ptr ).low and (* ipIfStatsHCOutRequests_val_ptr ).high from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTREQUESTS])
+        return MFD_SKIP;
+
+    (*ipIfStatsHCOutRequests_val_ptr).low =
+        rowreq_ctx->data->stats.HCOutRequests.low;
+    (*ipIfStatsHCOutRequests_val_ptr).high =
+        rowreq_ctx->data->stats.HCOutRequests.high;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsHCOutRequests_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsOutForwDatagrams
+ * ipIfStatsOutForwDatagrams is subid 23 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.23
+ * Description:
+The number of datagrams for which this entity was not their
+            final IP destination and for which it was successful in
+            finding a path to their final destination.  In entities
+            that do not act as IP routers, this counter will include
+            only those datagrams that were Source-Routed via this
+            entity, and the Source-Route processing was successful.
+
+            When tracking interface statistics, the counter of the
+            outgoing interface is incremented for a successfully
+            forwarded datagram.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsOutForwDatagrams data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsOutForwDatagrams_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsOutForwDatagrams_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                              u_long * ipIfStatsOutForwDatagrams_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsOutForwDatagrams_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsOutForwDatagrams_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsOutForwDatagrams data.
+     * copy (* ipIfStatsOutForwDatagrams_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS])
+        return MFD_SKIP;
+
+    (*ipIfStatsOutForwDatagrams_val_ptr) =
+        rowreq_ctx->data->stats.HCOutForwDatagrams.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsOutForwDatagrams_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsHCOutForwDatagrams
+ * ipIfStatsHCOutForwDatagrams is subid 24 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.24
+ * Description:
+The number of datagrams for which this entity was not their
+            final IP destination and for which it was successful in
+            finding a path to their final destination.  This object
+            counts the same packets as ipIfStatsOutForwDatagrams, but
+            allows for larger values.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+
+
+
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER64 (based on perltype COUNTER64)
+ * The net-snmp type is ASN_COUNTER64. The C type decl is U64 (U64)
+ */
+/**
+ * Extract the current value of the ipIfStatsHCOutForwDatagrams data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsHCOutForwDatagrams_val_ptr
+ *        Pointer to storage for a U64 variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsHCOutForwDatagrams_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                                U64 * ipIfStatsHCOutForwDatagrams_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsHCOutForwDatagrams_val_ptr);
+
+    /*
+     * TODO:231:o: |-> copy ipIfStatsHCOutForwDatagrams data.
+     * get (* ipIfStatsHCOutForwDatagrams_val_ptr ).low and (* ipIfStatsHCOutForwDatagrams_val_ptr ).high from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS])
+        return MFD_SKIP;
+
+    (*ipIfStatsHCOutForwDatagrams_val_ptr).low =
+        rowreq_ctx->data->stats.HCOutForwDatagrams.low;
+    (*ipIfStatsHCOutForwDatagrams_val_ptr).high =
+        rowreq_ctx->data->stats.HCOutForwDatagrams.high;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsHCOutForwDatagrams_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsOutDiscards
+ * ipIfStatsOutDiscards is subid 25 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.25
+ * Description:
+The number of output IP datagrams for which no problem was
+            encountered to prevent their transmission to their
+            destination, but were discarded (e.g., for lack of
+            buffer space).  Note that this counter would include
+            datagrams counted in ipIfStatsOutForwDatagrams if any such
+            datagrams met this (discretionary) discard criterion.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsOutDiscards data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsOutDiscards_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsOutDiscards_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                         u_long * ipIfStatsOutDiscards_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsOutDiscards_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsOutDiscards_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsOutDiscards data.
+     * copy (* ipIfStatsOutDiscards_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTDISCARDS])
+        return MFD_SKIP;
+
+    (*ipIfStatsOutDiscards_val_ptr) =
+        rowreq_ctx->data->stats.HCOutDiscards.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsOutDiscards_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsOutFragReqds
+ * ipIfStatsOutFragReqds is subid 26 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.26
+ * Description:
+The number of IP datagrams that would require fragmentation
+            in order to be transmitted.
+
+            When tracking interface statistics, the counter of the
+            outgoing interface is incremented for a successfully
+            fragmented datagram.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsOutFragReqds data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsOutFragReqds_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsOutFragReqds_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                          u_long * ipIfStatsOutFragReqds_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsOutFragReqds_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsOutFragReqds_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsOutFragReqds data.
+     * copy (* ipIfStatsOutFragReqds_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGREQDS])
+        return MFD_SKIP;
+
+    (*ipIfStatsOutFragReqds_val_ptr) =
+        rowreq_ctx->data->stats.HCOutFragReqds.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsOutFragReqds_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsOutFragOKs
+ * ipIfStatsOutFragOKs is subid 27 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.27
+ * Description:
+The number of IP datagrams that have been successfully
+            fragmented.
+
+            When tracking interface statistics, the counter of the
+
+
+
+            outgoing interface is incremented for a successfully
+            fragmented datagram.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsOutFragOKs data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsOutFragOKs_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsOutFragOKs_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                        u_long * ipIfStatsOutFragOKs_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsOutFragOKs_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsOutFragOKs_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsOutFragOKs data.
+     * copy (* ipIfStatsOutFragOKs_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGOKS])
+        return MFD_SKIP;
+
+    (*ipIfStatsOutFragOKs_val_ptr) =
+        rowreq_ctx->data->stats.HCOutFragOKs.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsOutFragOKs_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsOutFragFails
+ * ipIfStatsOutFragFails is subid 28 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.28
+ * Description:
+The number of IP datagrams that have been discarded because
+            they needed to be fragmented but could not be.  This
+            includes IPv4 packets that have the DF bit set and IPv6
+            packets that are being forwarded and exceed the outgoing
+            link MTU.
+
+            When tracking interface statistics, the counter of the
+            outgoing interface is incremented for an unsuccessfully
+            fragmented datagram.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsOutFragFails data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsOutFragFails_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsOutFragFails_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                          u_long * ipIfStatsOutFragFails_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsOutFragFails_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsOutFragFails_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsOutFragFails data.
+     * copy (* ipIfStatsOutFragFails_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGFAILS])
+        return MFD_SKIP;
+
+    (*ipIfStatsOutFragFails_val_ptr) =
+        rowreq_ctx->data->stats.HCOutFragFails.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsOutFragFails_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsOutFragCreates
+ * ipIfStatsOutFragCreates is subid 29 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.29
+ * Description:
+The number of output datagram fragments that have been
+            generated as a result of IP fragmentation.
+
+            When tracking interface statistics, the counter of the
+            outgoing interface is incremented for a successfully
+            fragmented datagram.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsOutFragCreates data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsOutFragCreates_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsOutFragCreates_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                            u_long * ipIfStatsOutFragCreates_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsOutFragCreates_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsOutFragCreates_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsOutFragCreates data.
+     * copy (* ipIfStatsOutFragCreates_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGCREATES])
+        return MFD_SKIP;
+
+    (*ipIfStatsOutFragCreates_val_ptr) =
+        rowreq_ctx->data->stats.HCOutFragCreates.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsOutFragCreates_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsOutTransmits
+ * ipIfStatsOutTransmits is subid 30 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.30
+ * Description:
+The total number of IP datagrams that this entity supplied
+            to the lower layers for transmission.  This includes
+            datagrams generated locally and those forwarded by this
+            entity.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsOutTransmits data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsOutTransmits_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsOutTransmits_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                          u_long * ipIfStatsOutTransmits_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsOutTransmits_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsOutTransmits_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsOutTransmits data.
+     * copy (* ipIfStatsOutTransmits_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTTRANSMITS])
+        return MFD_SKIP;
+
+    (*ipIfStatsOutTransmits_val_ptr) =
+        rowreq_ctx->data->stats.HCOutTransmits.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsOutTransmits_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsHCOutTransmits
+ * ipIfStatsHCOutTransmits is subid 31 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.31
+ * Description:
+The total number of IP datagrams that this entity supplied
+            to the lower layers for transmission.  This object counts
+            the same datagrams as ipIfStatsOutTransmits, but allows for
+            larger values.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER64 (based on perltype COUNTER64)
+ * The net-snmp type is ASN_COUNTER64. The C type decl is U64 (U64)
+ */
+/**
+ * Extract the current value of the ipIfStatsHCOutTransmits data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsHCOutTransmits_val_ptr
+ *        Pointer to storage for a U64 variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsHCOutTransmits_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                            U64 * ipIfStatsHCOutTransmits_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsHCOutTransmits_val_ptr);
+
+    /*
+     * TODO:231:o: |-> copy ipIfStatsHCOutTransmits data.
+     * get (* ipIfStatsHCOutTransmits_val_ptr ).low and (* ipIfStatsHCOutTransmits_val_ptr ).high from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTTRANSMITS])
+        return MFD_SKIP;
+
+    (*ipIfStatsHCOutTransmits_val_ptr).low =
+        rowreq_ctx->data->stats.HCOutTransmits.low;
+    (*ipIfStatsHCOutTransmits_val_ptr).high =
+        rowreq_ctx->data->stats.HCOutTransmits.high;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsHCOutTransmits_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsOutOctets
+ * ipIfStatsOutOctets is subid 32 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.32
+ * Description:
+The total number of octets in IP datagrams delivered to the
+            lower layers for transmission.  Octets from datagrams
+            counted in ipIfStatsOutTransmits MUST be counted here.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsOutOctets data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsOutOctets_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsOutOctets_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                       u_long * ipIfStatsOutOctets_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsOutOctets_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsOutOctets_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsOutOctets data.
+     * copy (* ipIfStatsOutOctets_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTOCTETS])
+        return MFD_SKIP;
+
+    (*ipIfStatsOutOctets_val_ptr) =
+        rowreq_ctx->data->stats.HCOutOctets.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsOutOctets_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsHCOutOctets
+ * ipIfStatsHCOutOctets is subid 33 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.33
+ * Description:
+The total number of octets in IP datagrams delivered to the
+            lower layers for transmission.  This objects counts the same
+            octets as ipIfStatsOutOctets, but allows for larger values.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER64 (based on perltype COUNTER64)
+ * The net-snmp type is ASN_COUNTER64. The C type decl is U64 (U64)
+ */
+/**
+ * Extract the current value of the ipIfStatsHCOutOctets data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsHCOutOctets_val_ptr
+ *        Pointer to storage for a U64 variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsHCOutOctets_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                         U64 * ipIfStatsHCOutOctets_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsHCOutOctets_val_ptr);
+
+    /*
+     * TODO:231:o: |-> copy ipIfStatsHCOutOctets data.
+     * get (* ipIfStatsHCOutOctets_val_ptr ).low and (* ipIfStatsHCOutOctets_val_ptr ).high from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTOCTETS])
+        return MFD_SKIP;
+
+    (*ipIfStatsHCOutOctets_val_ptr).low =
+        rowreq_ctx->data->stats.HCOutOctets.low;
+    (*ipIfStatsHCOutOctets_val_ptr).high =
+        rowreq_ctx->data->stats.HCOutOctets.high;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsHCOutOctets_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsInMcastPkts
+ * ipIfStatsInMcastPkts is subid 34 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.34
+ * Description:
+The number of IP multicast datagrams received.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsInMcastPkts data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsInMcastPkts_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsInMcastPkts_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                         u_long * ipIfStatsInMcastPkts_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsInMcastPkts_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsInMcastPkts_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsInMcastPkts data.
+     * copy (* ipIfStatsInMcastPkts_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTPKTS])
+        return MFD_SKIP;
+
+    (*ipIfStatsInMcastPkts_val_ptr) =
+        rowreq_ctx->data->stats.HCInMcastPkts.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsInMcastPkts_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsHCInMcastPkts
+ * ipIfStatsHCInMcastPkts is subid 35 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.35
+ * Description:
+The number of IP multicast datagrams received.  This object
+            counts the same datagrams as ipIfStatsInMcastPkts, but
+            allows for larger values.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER64 (based on perltype COUNTER64)
+ * The net-snmp type is ASN_COUNTER64. The C type decl is U64 (U64)
+ */
+/**
+ * Extract the current value of the ipIfStatsHCInMcastPkts data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsHCInMcastPkts_val_ptr
+ *        Pointer to storage for a U64 variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsHCInMcastPkts_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                           U64 * ipIfStatsHCInMcastPkts_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsHCInMcastPkts_val_ptr);
+
+    /*
+     * TODO:231:o: |-> copy ipIfStatsHCInMcastPkts data.
+     * get (* ipIfStatsHCInMcastPkts_val_ptr ).low and (* ipIfStatsHCInMcastPkts_val_ptr ).high from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTPKTS])
+        return MFD_SKIP;
+
+    (*ipIfStatsHCInMcastPkts_val_ptr).low =
+        rowreq_ctx->data->stats.HCInMcastPkts.low;
+    (*ipIfStatsHCInMcastPkts_val_ptr).high =
+        rowreq_ctx->data->stats.HCInMcastPkts.high;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsHCInMcastPkts_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsInMcastOctets
+ * ipIfStatsInMcastOctets is subid 36 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.36
+ * Description:
+The total number of octets received in IP multicast
+
+
+
+            datagrams.  Octets from datagrams counted in
+            ipIfStatsInMcastPkts MUST be counted here.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsInMcastOctets data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsInMcastOctets_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsInMcastOctets_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                           u_long * ipIfStatsInMcastOctets_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsInMcastOctets_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsInMcastOctets_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsInMcastOctets data.
+     * copy (* ipIfStatsInMcastOctets_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTOCTETS])
+        return MFD_SKIP;
+
+    (*ipIfStatsInMcastOctets_val_ptr) =
+                rowreq_ctx->data->stats.HCInMcastOctets.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsInMcastOctets_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsHCInMcastOctets
+ * ipIfStatsHCInMcastOctets is subid 37 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.37
+ * Description:
+The total number of octets received in IP multicast
+            datagrams.  This object counts the same octets as
+            ipIfStatsInMcastOctets, but allows for larger values.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER64 (based on perltype COUNTER64)
+ * The net-snmp type is ASN_COUNTER64. The C type decl is U64 (U64)
+ */
+/**
+ * Extract the current value of the ipIfStatsHCInMcastOctets data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsHCInMcastOctets_val_ptr
+ *        Pointer to storage for a U64 variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsHCInMcastOctets_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                             U64 * ipIfStatsHCInMcastOctets_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsHCInMcastOctets_val_ptr);
+
+    /*
+     * TODO:231:o: |-> copy ipIfStatsHCInMcastOctets data.
+     * get (* ipIfStatsHCInMcastOctets_val_ptr ).low and (* ipIfStatsHCInMcastOctets_val_ptr ).high from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTOCTETS])
+        return MFD_SKIP;
+
+    (*ipIfStatsHCInMcastOctets_val_ptr).low =
+        rowreq_ctx->data->stats.HCInMcastOctets.low;
+    (*ipIfStatsHCInMcastOctets_val_ptr).high =
+        rowreq_ctx->data->stats.HCInMcastOctets.high;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsHCInMcastOctets_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsOutMcastPkts
+ * ipIfStatsOutMcastPkts is subid 38 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.38
+ * Description:
+The number of IP multicast datagrams transmitted.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsOutMcastPkts data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsOutMcastPkts_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsOutMcastPkts_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                          u_long * ipIfStatsOutMcastPkts_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsOutMcastPkts_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsOutMcastPkts_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsOutMcastPkts data.
+     * copy (* ipIfStatsOutMcastPkts_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTPKTS])
+        return MFD_SKIP;
+
+    (*ipIfStatsOutMcastPkts_val_ptr) =
+        rowreq_ctx->data->stats.HCOutMcastPkts.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsOutMcastPkts_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsHCOutMcastPkts
+ * ipIfStatsHCOutMcastPkts is subid 39 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.39
+ * Description:
+The number of IP multicast datagrams transmitted.  This
+            object counts the same datagrams as ipIfStatsOutMcastPkts,
+            but allows for larger values.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+
+
+
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER64 (based on perltype COUNTER64)
+ * The net-snmp type is ASN_COUNTER64. The C type decl is U64 (U64)
+ */
+/**
+ * Extract the current value of the ipIfStatsHCOutMcastPkts data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsHCOutMcastPkts_val_ptr
+ *        Pointer to storage for a U64 variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsHCOutMcastPkts_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                            U64 * ipIfStatsHCOutMcastPkts_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsHCOutMcastPkts_val_ptr);
+
+    /*
+     * TODO:231:o: |-> copy ipIfStatsHCOutMcastPkts data.
+     * get (* ipIfStatsHCOutMcastPkts_val_ptr ).low and (* ipIfStatsHCOutMcastPkts_val_ptr ).high from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTPKTS])
+        return MFD_SKIP;
+
+    (*ipIfStatsHCOutMcastPkts_val_ptr).low =
+        rowreq_ctx->data->stats.HCOutMcastPkts.low;
+    (*ipIfStatsHCOutMcastPkts_val_ptr).high =
+        rowreq_ctx->data->stats.HCOutMcastPkts.high;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsHCOutMcastPkts_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsOutMcastOctets
+ * ipIfStatsOutMcastOctets is subid 40 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.40
+ * Description:
+The total number of octets transmitted in IP multicast
+            datagrams.  Octets from datagrams counted in
+            ipIfStatsOutMcastPkts MUST be counted here.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsOutMcastOctets data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsOutMcastOctets_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsOutMcastOctets_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                            u_long * ipIfStatsOutMcastOctets_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsOutMcastOctets_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsOutMcastOctets_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsOutMcastOctets data.
+     * copy (* ipIfStatsOutMcastOctets_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTOCTETS])
+        return MFD_SKIP;
+
+    (*ipIfStatsOutMcastOctets_val_ptr) =
+        rowreq_ctx->data->stats.HCOutMcastOctets.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsOutMcastOctets_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsHCOutMcastOctets
+ * ipIfStatsHCOutMcastOctets is subid 41 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.41
+ * Description:
+The total number of octets transmitted in IP multicast
+            datagrams.  This object counts the same octets as
+            ipIfStatsOutMcastOctets, but allows for larger values.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER64 (based on perltype COUNTER64)
+ * The net-snmp type is ASN_COUNTER64. The C type decl is U64 (U64)
+ */
+/**
+ * Extract the current value of the ipIfStatsHCOutMcastOctets data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsHCOutMcastOctets_val_ptr
+ *        Pointer to storage for a U64 variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsHCOutMcastOctets_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                              U64 * ipIfStatsHCOutMcastOctets_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsHCOutMcastOctets_val_ptr);
+
+    /*
+     * TODO:231:o: |-> copy ipIfStatsHCOutMcastOctets data.
+     * get (* ipIfStatsHCOutMcastOctets_val_ptr ).low and (* ipIfStatsHCOutMcastOctets_val_ptr ).high from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTOCTETS])
+        return MFD_SKIP;
+
+    (*ipIfStatsHCOutMcastOctets_val_ptr).low =
+        rowreq_ctx->data->stats.HCOutMcastOctets.low;
+    (*ipIfStatsHCOutMcastOctets_val_ptr).high =
+        rowreq_ctx->data->stats.HCOutMcastOctets.high;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsHCOutMcastOctets_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsInBcastPkts
+ * ipIfStatsInBcastPkts is subid 42 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.42
+ * Description:
+The number of IP broadcast datagrams received.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsInBcastPkts data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsInBcastPkts_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsInBcastPkts_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                         u_long * ipIfStatsInBcastPkts_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsInBcastPkts_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsInBcastPkts_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsInBcastPkts data.
+     * copy (* ipIfStatsInBcastPkts_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINBCASTPKTS])
+        return MFD_SKIP;
+
+    (*ipIfStatsInBcastPkts_val_ptr) =
+        rowreq_ctx->data->stats.HCInBcastPkts.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsInBcastPkts_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsHCInBcastPkts
+ * ipIfStatsHCInBcastPkts is subid 43 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.43
+ * Description:
+The number of IP broadcast datagrams received.  This object
+            counts the same datagrams as ipIfStatsInBcastPkts, but
+            allows for larger values.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER64 (based on perltype COUNTER64)
+ * The net-snmp type is ASN_COUNTER64. The C type decl is U64 (U64)
+ */
+/**
+ * Extract the current value of the ipIfStatsHCInBcastPkts data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsHCInBcastPkts_val_ptr
+ *        Pointer to storage for a U64 variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsHCInBcastPkts_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                           U64 * ipIfStatsHCInBcastPkts_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsHCInBcastPkts_val_ptr);
+
+    /*
+     * TODO:231:o: |-> copy ipIfStatsHCInBcastPkts data.
+     * get (* ipIfStatsHCInBcastPkts_val_ptr ).low and (* ipIfStatsHCInBcastPkts_val_ptr ).high from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINBCASTPKTS])
+        return MFD_SKIP;
+
+    (*ipIfStatsHCInBcastPkts_val_ptr).low =
+        rowreq_ctx->data->stats.HCInBcastPkts.low;
+    (*ipIfStatsHCInBcastPkts_val_ptr).high =
+        rowreq_ctx->data->stats.HCInBcastPkts.high;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsHCInBcastPkts_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsOutBcastPkts
+ * ipIfStatsOutBcastPkts is subid 44 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.44
+ * Description:
+The number of IP broadcast datagrams transmitted.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsOutBcastPkts data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsOutBcastPkts_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsOutBcastPkts_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                          u_long * ipIfStatsOutBcastPkts_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsOutBcastPkts_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsOutBcastPkts_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsOutBcastPkts data.
+     * copy (* ipIfStatsOutBcastPkts_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTBCASTPKTS])
+        return MFD_SKIP;
+
+    (*ipIfStatsOutBcastPkts_val_ptr) =
+        rowreq_ctx->data->stats.HCOutBcastPkts.low;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsOutBcastPkts_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsHCOutBcastPkts
+ * ipIfStatsHCOutBcastPkts is subid 45 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.45
+ * Description:
+The number of IP broadcast datagrams transmitted.  This
+            object counts the same datagrams as ipIfStatsOutBcastPkts,
+            but allows for larger values.
+
+            Discontinuities in the value of this counter can occur at
+            re-initialization of the management system, and at other
+            times as indicated by the value of
+            ipIfStatsDiscontinuityTime.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER64 (based on perltype COUNTER64)
+ * The net-snmp type is ASN_COUNTER64. The C type decl is U64 (U64)
+ */
+/**
+ * Extract the current value of the ipIfStatsHCOutBcastPkts data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsHCOutBcastPkts_val_ptr
+ *        Pointer to storage for a U64 variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsHCOutBcastPkts_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                            U64 * ipIfStatsHCOutBcastPkts_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsHCOutBcastPkts_val_ptr);
+
+    /*
+     * TODO:231:o: |-> copy ipIfStatsHCOutBcastPkts data.
+     * get (* ipIfStatsHCOutBcastPkts_val_ptr ).low and (* ipIfStatsHCOutBcastPkts_val_ptr ).high from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTBCASTPKTS])
+        return MFD_SKIP;
+
+    (*ipIfStatsHCOutBcastPkts_val_ptr).low =
+        rowreq_ctx->data->stats.HCOutBcastPkts.low;
+    (*ipIfStatsHCOutBcastPkts_val_ptr).high =
+        rowreq_ctx->data->stats.HCOutBcastPkts.high;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsHCOutBcastPkts_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsDiscontinuityTime
+ * ipIfStatsDiscontinuityTime is subid 46 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.46
+ * Description:
+The value of sysUpTime on the most recent occasion at which
+
+
+
+            any one or more of this entry's counters suffered a
+            discontinuity.
+
+            If no such discontinuities have occurred since the last re-
+            initialization of the local management subsystem, then this
+            object contains a zero value.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is TimeStamp (based on perltype TICKS)
+ * The net-snmp type is ASN_TIMETICKS. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsDiscontinuityTime data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsDiscontinuityTime_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsDiscontinuityTime_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                               u_long * ipIfStatsDiscontinuityTime_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsDiscontinuityTime_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsDiscontinuityTime_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsDiscontinuityTime data.
+     * copy (* ipIfStatsDiscontinuityTime_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_DISCONTINUITYTIME])
+        return MFD_SKIP;
+
+    (*ipIfStatsDiscontinuityTime_val_ptr) =
+        rowreq_ctx->ipIfStatsDiscontinuityTime;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsDiscontinuityTime_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipIfStatsEntry.ipIfStatsRefreshRate
+ * ipIfStatsRefreshRate is subid 47 of ipIfStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.31.3.1.47
+ * Description:
+The minimum reasonable polling interval for this entry.
+            This object provides an indication of the minimum amount of
+            time required to update the counters in this entry.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is UNSIGNED32 (based on perltype UNSIGNED32)
+ * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipIfStatsRefreshRate data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipIfStatsRefreshRate_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipIfStatsRefreshRate_get(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                         u_long * ipIfStatsRefreshRate_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipIfStatsRefreshRate_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsRefreshRate_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipIfStatsRefreshRate data.
+     * copy (* ipIfStatsRefreshRate_val_ptr ) from rowreq_ctx->data
+     */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_REFRESHRATE])
+        return MFD_SKIP;
+
+    (*ipIfStatsRefreshRate_val_ptr) =
+        rowreq_ctx->ipIfStatsRefreshRate;
+
+    return MFD_SUCCESS;
+}                               /* ipIfStatsRefreshRate_get */
+
+
+
+/** @} */
diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.h b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.h
new file mode 100644
index 0000000..0cc7e47
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_data_get.h
@@ -0,0 +1,246 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 12088 $ of $
+ *
+ * $Id:$
+ *
+ * @file ipIfStatsTable_data_get.h
+ *
+ * @addtogroup get
+ *
+ * Prototypes for get functions
+ *
+ * @{
+ */
+#ifndef IPIFSTATSTABLE_DATA_GET_H
+#define IPIFSTATSTABLE_DATA_GET_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    /*
+     *********************************************************************
+     * GET function declarations
+     */
+
+    /*
+     *********************************************************************
+     * GET Table declarations
+     */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipIfStatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+    /*
+     * IP-MIB::ipIfStatsTable is subid 3 of ipTrafficStats.
+     * Its status is Current.
+     * OID: .1.3.6.1.2.1.4.31.3, length: 9
+     */
+    /*
+     * indexes
+     */
+
+    int             ipIfStatsInReceives_get(ipIfStatsTable_rowreq_ctx *
+                                            rowreq_ctx,
+                                            u_long *
+                                            ipIfStatsInReceives_val_ptr);
+    int             ipIfStatsHCInReceives_get(ipIfStatsTable_rowreq_ctx *
+                                              rowreq_ctx,
+                                              U64 *
+                                              ipIfStatsHCInReceives_val_ptr);
+    int             ipIfStatsInOctets_get(ipIfStatsTable_rowreq_ctx *
+                                          rowreq_ctx,
+                                          u_long *
+                                          ipIfStatsInOctets_val_ptr);
+    int             ipIfStatsHCInOctets_get(ipIfStatsTable_rowreq_ctx *
+                                            rowreq_ctx,
+                                            U64 *
+                                            ipIfStatsHCInOctets_val_ptr);
+    int             ipIfStatsInHdrErrors_get(ipIfStatsTable_rowreq_ctx *
+                                             rowreq_ctx,
+                                             u_long *
+                                             ipIfStatsInHdrErrors_val_ptr);
+    int             ipIfStatsInNoRoutes_get(ipIfStatsTable_rowreq_ctx *
+                                            rowreq_ctx,
+                                            u_long *
+                                            ipIfStatsInNoRoutes_val_ptr);
+    int             ipIfStatsInAddrErrors_get(ipIfStatsTable_rowreq_ctx *
+                                              rowreq_ctx,
+                                              u_long *
+                                              ipIfStatsInAddrErrors_val_ptr);
+    int             ipIfStatsInUnknownProtos_get(ipIfStatsTable_rowreq_ctx
+                                                 * rowreq_ctx,
+                                                 u_long *
+                                                 ipIfStatsInUnknownProtos_val_ptr);
+    int             ipIfStatsInTruncatedPkts_get(ipIfStatsTable_rowreq_ctx
+                                                 * rowreq_ctx,
+                                                 u_long *
+                                                 ipIfStatsInTruncatedPkts_val_ptr);
+    int             ipIfStatsInForwDatagrams_get(ipIfStatsTable_rowreq_ctx
+                                                 * rowreq_ctx,
+                                                 u_long *
+                                                 ipIfStatsInForwDatagrams_val_ptr);
+    int            
+        ipIfStatsHCInForwDatagrams_get(ipIfStatsTable_rowreq_ctx *
+                                       rowreq_ctx,
+                                       U64 *
+                                       ipIfStatsHCInForwDatagrams_val_ptr);
+    int             ipIfStatsReasmReqds_get(ipIfStatsTable_rowreq_ctx *
+                                            rowreq_ctx,
+                                            u_long *
+                                            ipIfStatsReasmReqds_val_ptr);
+    int             ipIfStatsReasmOKs_get(ipIfStatsTable_rowreq_ctx *
+                                          rowreq_ctx,
+                                          u_long *
+                                          ipIfStatsReasmOKs_val_ptr);
+    int             ipIfStatsReasmFails_get(ipIfStatsTable_rowreq_ctx *
+                                            rowreq_ctx,
+                                            u_long *
+                                            ipIfStatsReasmFails_val_ptr);
+    int             ipIfStatsInDiscards_get(ipIfStatsTable_rowreq_ctx *
+                                            rowreq_ctx,
+                                            u_long *
+                                            ipIfStatsInDiscards_val_ptr);
+    int             ipIfStatsInDelivers_get(ipIfStatsTable_rowreq_ctx *
+                                            rowreq_ctx,
+                                            u_long *
+                                            ipIfStatsInDelivers_val_ptr);
+    int             ipIfStatsHCInDelivers_get(ipIfStatsTable_rowreq_ctx *
+                                              rowreq_ctx,
+                                              U64 *
+                                              ipIfStatsHCInDelivers_val_ptr);
+    int             ipIfStatsOutRequests_get(ipIfStatsTable_rowreq_ctx *
+                                             rowreq_ctx,
+                                             u_long *
+                                             ipIfStatsOutRequests_val_ptr);
+    int             ipIfStatsHCOutRequests_get(ipIfStatsTable_rowreq_ctx *
+                                               rowreq_ctx,
+                                               U64 *
+                                               ipIfStatsHCOutRequests_val_ptr);
+    int             ipIfStatsOutForwDatagrams_get(ipIfStatsTable_rowreq_ctx
+                                                  * rowreq_ctx,
+                                                  u_long *
+                                                  ipIfStatsOutForwDatagrams_val_ptr);
+    int            
+        ipIfStatsHCOutForwDatagrams_get(ipIfStatsTable_rowreq_ctx *
+                                        rowreq_ctx,
+                                        U64 *
+                                        ipIfStatsHCOutForwDatagrams_val_ptr);
+    int             ipIfStatsOutDiscards_get(ipIfStatsTable_rowreq_ctx *
+                                             rowreq_ctx,
+                                             u_long *
+                                             ipIfStatsOutDiscards_val_ptr);
+    int             ipIfStatsOutFragReqds_get(ipIfStatsTable_rowreq_ctx *
+                                              rowreq_ctx,
+                                              u_long *
+                                              ipIfStatsOutFragReqds_val_ptr);
+    int             ipIfStatsOutFragOKs_get(ipIfStatsTable_rowreq_ctx *
+                                            rowreq_ctx,
+                                            u_long *
+                                            ipIfStatsOutFragOKs_val_ptr);
+    int             ipIfStatsOutFragFails_get(ipIfStatsTable_rowreq_ctx *
+                                              rowreq_ctx,
+                                              u_long *
+                                              ipIfStatsOutFragFails_val_ptr);
+    int             ipIfStatsOutFragCreates_get(ipIfStatsTable_rowreq_ctx *
+                                                rowreq_ctx,
+                                                u_long *
+                                                ipIfStatsOutFragCreates_val_ptr);
+    int             ipIfStatsOutTransmits_get(ipIfStatsTable_rowreq_ctx *
+                                              rowreq_ctx,
+                                              u_long *
+                                              ipIfStatsOutTransmits_val_ptr);
+    int             ipIfStatsHCOutTransmits_get(ipIfStatsTable_rowreq_ctx *
+                                                rowreq_ctx,
+                                                U64 *
+                                                ipIfStatsHCOutTransmits_val_ptr);
+    int             ipIfStatsOutOctets_get(ipIfStatsTable_rowreq_ctx *
+                                           rowreq_ctx,
+                                           u_long *
+                                           ipIfStatsOutOctets_val_ptr);
+    int             ipIfStatsHCOutOctets_get(ipIfStatsTable_rowreq_ctx *
+                                             rowreq_ctx,
+                                             U64 *
+                                             ipIfStatsHCOutOctets_val_ptr);
+    int             ipIfStatsInMcastPkts_get(ipIfStatsTable_rowreq_ctx *
+                                             rowreq_ctx,
+                                             u_long *
+                                             ipIfStatsInMcastPkts_val_ptr);
+    int             ipIfStatsHCInMcastPkts_get(ipIfStatsTable_rowreq_ctx *
+                                               rowreq_ctx,
+                                               U64 *
+                                               ipIfStatsHCInMcastPkts_val_ptr);
+    int             ipIfStatsInMcastOctets_get(ipIfStatsTable_rowreq_ctx *
+                                               rowreq_ctx,
+                                               u_long *
+                                               ipIfStatsInMcastOctets_val_ptr);
+    int             ipIfStatsHCInMcastOctets_get(ipIfStatsTable_rowreq_ctx
+                                                 * rowreq_ctx,
+                                                 U64 *
+                                                 ipIfStatsHCInMcastOctets_val_ptr);
+    int             ipIfStatsOutMcastPkts_get(ipIfStatsTable_rowreq_ctx *
+                                              rowreq_ctx,
+                                              u_long *
+                                              ipIfStatsOutMcastPkts_val_ptr);
+    int             ipIfStatsHCOutMcastPkts_get(ipIfStatsTable_rowreq_ctx *
+                                                rowreq_ctx,
+                                                U64 *
+                                                ipIfStatsHCOutMcastPkts_val_ptr);
+    int             ipIfStatsOutMcastOctets_get(ipIfStatsTable_rowreq_ctx *
+                                                rowreq_ctx,
+                                                u_long *
+                                                ipIfStatsOutMcastOctets_val_ptr);
+    int             ipIfStatsHCOutMcastOctets_get(ipIfStatsTable_rowreq_ctx
+                                                  * rowreq_ctx,
+                                                  U64 *
+                                                  ipIfStatsHCOutMcastOctets_val_ptr);
+    int             ipIfStatsInBcastPkts_get(ipIfStatsTable_rowreq_ctx *
+                                             rowreq_ctx,
+                                             u_long *
+                                             ipIfStatsInBcastPkts_val_ptr);
+    int             ipIfStatsHCInBcastPkts_get(ipIfStatsTable_rowreq_ctx *
+                                               rowreq_ctx,
+                                               U64 *
+                                               ipIfStatsHCInBcastPkts_val_ptr);
+    int             ipIfStatsOutBcastPkts_get(ipIfStatsTable_rowreq_ctx *
+                                              rowreq_ctx,
+                                              u_long *
+                                              ipIfStatsOutBcastPkts_val_ptr);
+    int             ipIfStatsHCOutBcastPkts_get(ipIfStatsTable_rowreq_ctx *
+                                                rowreq_ctx,
+                                                U64 *
+                                                ipIfStatsHCOutBcastPkts_val_ptr);
+    int            
+        ipIfStatsDiscontinuityTime_get(ipIfStatsTable_rowreq_ctx *
+                                       rowreq_ctx,
+                                       u_long *
+                                       ipIfStatsDiscontinuityTime_val_ptr);
+    int             ipIfStatsRefreshRate_get(ipIfStatsTable_rowreq_ctx *
+                                             rowreq_ctx,
+                                             u_long *
+                                             ipIfStatsRefreshRate_val_ptr);
+
+
+    int            
+        ipIfStatsTable_indexes_set_tbl_idx(ipIfStatsTable_mib_index *
+                                           tbl_idx,
+                                           u_long ipIfStatsIPVersion_val,
+                                           long ipIfStatsIfIndex_val);
+    int             ipIfStatsTable_indexes_set(ipIfStatsTable_rowreq_ctx *
+                                               rowreq_ctx,
+                                               u_long
+                                               ipIfStatsIPVersion_val,
+                                               long ipIfStatsIfIndex_val);
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPIFSTATSTABLE_DATA_GET_H */
+/** @} */
diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_enums.h b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_enums.h
new file mode 100644
index 0000000..c3657d5
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_enums.h
@@ -0,0 +1,56 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : generic-table-enums.m2c 12526 2005-07-15 22:41:16Z rstory $
+ *
+ * $Id:$
+ */
+#ifndef IPIFSTATSTABLE_ENUMS_H
+#define IPIFSTATSTABLE_ENUMS_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    /*
+     * NOTES on enums
+     * ==============
+     *
+     * Value Mapping
+     * -------------
+     * If the values for your data type don't exactly match the
+     * possible values defined by the mib, you should map them
+     * below. For example, a boolean flag (1/0) is usually represented
+     * as a TruthValue in a MIB, which maps to the values (1/2).
+     *
+     */
+/*************************************************************************
+ *************************************************************************
+ *
+ * enum definitions for table ipIfStatsTable
+ *
+ *************************************************************************
+ *************************************************************************/
+
+/*************************************************************
+ * constants for enums for the MIB node
+ * ipIfStatsIPVersion (InetVersion / ASN_INTEGER)
+ *
+ * since a Textual Convention may be referenced more than once in a
+ * MIB, protect againt redefinitions of the enum values.
+ */
+#ifndef INETVERSION_ENUMS
+#define INETVERSION_ENUMS
+
+#define INETVERSION_UNKNOWN  0
+#define INETVERSION_IPV4  1
+#define INETVERSION_IPV6  2
+
+#endif                          /* INETVERSION_ENUMS */
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPIFSTATSTABLE_ENUMS_H */
diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c
new file mode 100644
index 0000000..559d1c1
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.c
@@ -0,0 +1,1420 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 15899 $ of $ 
+ *
+ * $Id:$
+ */
+/*
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ * ***                                                               ***
+ * ***  NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE  ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THIS FILE DOES NOT CONTAIN ANY USER EDITABLE CODE.      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THE GENERATED CODE IS INTERNAL IMPLEMENTATION, AND      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***    IS SUBJECT TO CHANGE WITHOUT WARNING IN FUTURE RELEASES.   ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ */
+
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "ipIfStatsTable.h"
+
+
+#include <net-snmp/agent/table_container.h>
+#include <net-snmp/library/container.h>
+
+#include "ipIfStatsTable_interface.h"
+
+#include <ctype.h>
+
+netsnmp_feature_child_of(ipIfStatsTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(ipIfStatsTable_container_size, ipIfStatsTable_external_access)
+netsnmp_feature_child_of(ipIfStatsTable_registration_set, ipIfStatsTable_external_access)
+netsnmp_feature_child_of(ipIfStatsTable_registration_get, ipIfStatsTable_external_access)
+netsnmp_feature_child_of(ipIfStatsTable_container_get, ipIfStatsTable_external_access)
+
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipIfStatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * IP-MIB::ipIfStatsTable is subid 3 of ipTrafficStats.
+ * Its status is Current.
+ * OID: .1.3.6.1.2.1.4.31.3, length: 9
+ */
+typedef struct ipIfStatsTable_interface_ctx_s {
+
+    netsnmp_container *container;
+    netsnmp_cache  *cache;
+
+    ipIfStatsTable_registration *user_ctx;
+
+    netsnmp_table_registration_info tbl_info;
+
+    netsnmp_baby_steps_access_methods access_multiplexer;
+
+    u_long last_changed;
+
+} ipIfStatsTable_interface_ctx;
+
+static ipIfStatsTable_interface_ctx ipIfStatsTable_if_ctx;
+
+static void     _ipIfStatsTable_container_init(ipIfStatsTable_interface_ctx
+                                               * if_ctx);
+static void    
+_ipIfStatsTable_container_shutdown(ipIfStatsTable_interface_ctx * if_ctx);
+
+#ifndef NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_CONTAINER_GET
+netsnmp_container *
+ipIfStatsTable_container_get(void)
+{
+    return ipIfStatsTable_if_ctx.container;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_CONTAINER_GET */
+
+#ifndef NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_REGISTRATION_GET
+ipIfStatsTable_registration *
+ipIfStatsTable_registration_get(void)
+{
+    return ipIfStatsTable_if_ctx.user_ctx;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_REGISTRATION_GET */
+
+#ifndef NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_REGISTRATION_SET
+ipIfStatsTable_registration *
+ipIfStatsTable_registration_set(ipIfStatsTable_registration * newreg)
+{
+    ipIfStatsTable_registration *old = ipIfStatsTable_if_ctx.user_ctx;
+    ipIfStatsTable_if_ctx.user_ctx = newreg;
+    return old;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_REGISTRATION_SET */
+
+#ifndef NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_CONTAINER_SIZE
+int
+ipIfStatsTable_container_size(void)
+{
+    return CONTAINER_SIZE(ipIfStatsTable_if_ctx.container);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_CONTAINER_SIZE */
+
+/*
+ * ipIfStatsTableLastChanged, which is the last time that a row in
+ * the table was changed or the last time a row was added/deleted from the
+ * table.
+ */
+void
+ipIfStatsTable_lastChange_set(u_long table_changed)
+{
+    DEBUGMSGTL(("ipIfStatsTable:lastChanged_set",
+                "called. was %ld, now %ld\n",
+                ipIfStatsTable_if_ctx.last_changed, table_changed));
+    ipIfStatsTable_if_ctx.last_changed = table_changed;
+}
+
+/*
+ * mfd multiplexer modes
+ */
+static Netsnmp_Node_Handler _mfd_ipIfStatsTable_pre_request;
+static Netsnmp_Node_Handler _mfd_ipIfStatsTable_post_request;
+static Netsnmp_Node_Handler _mfd_ipIfStatsTable_object_lookup;
+static Netsnmp_Node_Handler _mfd_ipIfStatsTable_get_values;
+/**
+ * @internal
+ * Initialize the table ipIfStatsTable 
+ *    (Define its contents and how it's structured)
+ */
+void
+_ipIfStatsTable_initialize_interface(ipIfStatsTable_registration * reg_ptr,
+                                     u_long flags)
+{
+    netsnmp_baby_steps_access_methods *access_multiplexer =
+        &ipIfStatsTable_if_ctx.access_multiplexer;
+    netsnmp_table_registration_info *tbl_info =
+        &ipIfStatsTable_if_ctx.tbl_info;
+    netsnmp_handler_registration *reginfo;
+    netsnmp_mib_handler *handler;
+    int             mfd_modes = 0;
+
+    DEBUGMSGTL(("internal:ipIfStatsTable:_ipIfStatsTable_initialize_interface", "called\n"));
+
+
+    /*************************************************
+     *
+     * save interface context for ipIfStatsTable
+     */
+    /*
+     * Setting up the table's definition
+     */
+    netsnmp_table_helper_add_indexes(tbl_info, ASN_INTEGER,
+                                               /** index: ipIfStatsIPVersion */
+                                     ASN_INTEGER,
+                                               /** index: ipIfStatsIfIndex */
+                                     0);
+
+    /*
+     * Define the minimum and maximum accessible columns.  This
+     * optimizes retrieval. 
+     */
+    tbl_info->min_column = IPIFSTATSTABLE_MIN_COL;
+    tbl_info->max_column = IPIFSTATSTABLE_MAX_COL;
+
+    /*
+     * save users context
+     */
+    ipIfStatsTable_if_ctx.user_ctx = reg_ptr;
+
+    /*
+     * call data access initialization code
+     */
+    ipIfStatsTable_init_data(reg_ptr);
+
+    /*
+     * set up the container
+     */
+    _ipIfStatsTable_container_init(&ipIfStatsTable_if_ctx);
+    if (NULL == ipIfStatsTable_if_ctx.container) {
+        snmp_log(LOG_ERR,
+                 "could not initialize container for ipIfStatsTable\n");
+        return;
+    }
+
+    /*
+     * access_multiplexer: REQUIRED wrapper for get request handling
+     */
+    access_multiplexer->object_lookup = _mfd_ipIfStatsTable_object_lookup;
+    access_multiplexer->get_values = _mfd_ipIfStatsTable_get_values;
+
+    /*
+     * no wrappers yet
+     */
+    access_multiplexer->pre_request = _mfd_ipIfStatsTable_pre_request;
+    access_multiplexer->post_request = _mfd_ipIfStatsTable_post_request;
+
+
+    /*************************************************
+     *
+     * Create a registration, save our reg data, register table.
+     */
+    DEBUGMSGTL(("ipIfStatsTable:init_ipIfStatsTable",
+                "Registering ipIfStatsTable as a mibs-for-dummies table.\n"));
+    handler =
+        netsnmp_baby_steps_access_multiplexer_get(access_multiplexer);
+    reginfo =
+        netsnmp_handler_registration_create("ipIfStatsTable", handler,
+                                            ipIfStatsTable_oid,
+                                            ipIfStatsTable_oid_size,
+                                            HANDLER_CAN_BABY_STEP |
+                                            HANDLER_CAN_RONLY);
+    if (NULL == reginfo) {
+        snmp_log(LOG_ERR, "error registering table ipIfStatsTable\n");
+        return;
+    }
+    reginfo->my_reg_void = &ipIfStatsTable_if_ctx;
+
+    /*************************************************
+     *
+     * set up baby steps handler, create it and inject it
+     */
+    if (access_multiplexer->object_lookup)
+        mfd_modes |= BABY_STEP_OBJECT_LOOKUP;
+
+    if (access_multiplexer->pre_request)
+        mfd_modes |= BABY_STEP_PRE_REQUEST;
+    if (access_multiplexer->post_request)
+        mfd_modes |= BABY_STEP_POST_REQUEST;
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+    if (access_multiplexer->set_values)
+        mfd_modes |= BABY_STEP_SET_VALUES;
+    if (access_multiplexer->irreversible_commit)
+        mfd_modes |= BABY_STEP_IRREVERSIBLE_COMMIT;
+    if (access_multiplexer->object_syntax_checks)
+        mfd_modes |= BABY_STEP_CHECK_OBJECT;
+
+    if (access_multiplexer->undo_setup)
+        mfd_modes |= BABY_STEP_UNDO_SETUP;
+    if (access_multiplexer->undo_cleanup)
+        mfd_modes |= BABY_STEP_UNDO_CLEANUP;
+    if (access_multiplexer->undo_sets)
+        mfd_modes |= BABY_STEP_UNDO_SETS;
+
+    if (access_multiplexer->row_creation)
+        mfd_modes |= BABY_STEP_ROW_CREATE;
+    if (access_multiplexer->consistency_checks)
+        mfd_modes |= BABY_STEP_CHECK_CONSISTENCY;
+    if (access_multiplexer->commit)
+        mfd_modes |= BABY_STEP_COMMIT;
+    if (access_multiplexer->undo_commit)
+        mfd_modes |= BABY_STEP_UNDO_COMMIT;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+    handler = netsnmp_baby_steps_handler_get(mfd_modes);
+    netsnmp_inject_handler(reginfo, handler);
+
+    /*************************************************
+     *
+     * inject row_merge helper with prefix rootoid_len + 2 (entry.col)
+     */
+    handler = netsnmp_get_row_merge_handler(reginfo->rootoid_len + 2);
+    netsnmp_inject_handler(reginfo, handler);
+
+    /*************************************************
+     *
+     * inject container_table helper
+     */
+    handler =
+        netsnmp_container_table_handler_get(tbl_info,
+                                            ipIfStatsTable_if_ctx.
+                                            container,
+                                            TABLE_CONTAINER_KEY_NETSNMP_INDEX);
+    netsnmp_inject_handler(reginfo, handler);
+
+    /*************************************************
+     *
+     * inject cache helper
+     */
+    if (NULL != ipIfStatsTable_if_ctx.cache) {
+        handler = netsnmp_cache_handler_get(ipIfStatsTable_if_ctx.cache);
+        netsnmp_inject_handler(reginfo, handler);
+    }
+
+    /*
+     * register table
+     */
+    netsnmp_register_table(reginfo, tbl_info);
+    
+    /*
+     * register LastChanged
+     */
+    {
+        oid     lc_oid[] = { IPIFSTATSTABLELASTCHANGE_OID };
+        netsnmp_register_watched_scalar2(netsnmp_create_handler_registration
+                ("ipIfStatsTableLastChanged", NULL,
+                 lc_oid, OID_LENGTH(lc_oid),
+                 HANDLER_CAN_RONLY),
+                netsnmp_create_watcher_info((void
+                        *)
+                    &ipIfStatsTable_if_ctx.
+                    last_changed,
+                    sizeof
+                    (u_long),
+                    ASN_TIMETICKS,
+                    WATCHER_FIXED_SIZE));
+    }
+}                               /* _ipIfStatsTable_initialize_interface */
+
+/**
+ * @internal
+ * Shutdown the table ipIfStatsTable
+ */
+void
+_ipIfStatsTable_shutdown_interface(ipIfStatsTable_registration * reg_ptr)
+{
+    /*
+     * shutdown the container
+     */
+    _ipIfStatsTable_container_shutdown(&ipIfStatsTable_if_ctx);
+}
+
+void
+ipIfStatsTable_valid_columns_set(netsnmp_column_info *vc)
+{
+    ipIfStatsTable_if_ctx.tbl_info.valid_columns = vc;
+}                               /* ipIfStatsTable_valid_columns_set */
+
+/**
+ * @internal
+ * convert the index component stored in the context to an oid
+ */
+int
+ipIfStatsTable_index_to_oid(netsnmp_index * oid_idx,
+                            ipIfStatsTable_mib_index * mib_idx)
+{
+    int             err = SNMP_ERR_NOERROR;
+
+    /*
+     * temp storage for parsing indexes
+     */
+    /*
+     * ipIfStatsIPVersion(1)/InetVersion/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h
+     */
+    netsnmp_variable_list var_ipIfStatsIPVersion;
+    /*
+     * ipIfStatsIfIndex(2)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H
+     */
+    netsnmp_variable_list var_ipIfStatsIfIndex;
+
+    /*
+     * set up varbinds
+     */
+    memset(&var_ipIfStatsIPVersion, 0x00, sizeof(var_ipIfStatsIPVersion));
+    var_ipIfStatsIPVersion.type = ASN_INTEGER;
+    memset(&var_ipIfStatsIfIndex, 0x00, sizeof(var_ipIfStatsIfIndex));
+    var_ipIfStatsIfIndex.type = ASN_INTEGER;
+
+    /*
+     * chain temp index varbinds together
+     */
+    var_ipIfStatsIPVersion.next_variable = &var_ipIfStatsIfIndex;
+    var_ipIfStatsIfIndex.next_variable = NULL;
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsTable_index_to_oid",
+                "called\n"));
+
+    /*
+     * ipIfStatsIPVersion(1)/InetVersion/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h 
+     */
+    snmp_set_var_value(&var_ipIfStatsIPVersion,
+                       (u_char *) & mib_idx->ipIfStatsIPVersion,
+                       sizeof(mib_idx->ipIfStatsIPVersion));
+
+    /*
+     * ipIfStatsIfIndex(2)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H 
+     */
+    snmp_set_var_value(&var_ipIfStatsIfIndex,
+                       (u_char *) & mib_idx->ipIfStatsIfIndex,
+                       sizeof(mib_idx->ipIfStatsIfIndex));
+
+
+    err = build_oid_noalloc(oid_idx->oids, oid_idx->len, &oid_idx->len,
+                            NULL, 0, &var_ipIfStatsIPVersion);
+    if (err)
+        snmp_log(LOG_ERR, "error %d converting index to oid\n", err);
+
+    /*
+     * parsing may have allocated memory. free it.
+     */
+    snmp_reset_var_buffers(&var_ipIfStatsIPVersion);
+
+    return err;
+}                               /* ipIfStatsTable_index_to_oid */
+
+/**
+ * extract ipIfStatsTable indexes from a netsnmp_index
+ *
+ * @retval SNMP_ERR_NOERROR  : no error
+ * @retval SNMP_ERR_GENERR   : error
+ */
+int
+ipIfStatsTable_index_from_oid(netsnmp_index * oid_idx,
+                              ipIfStatsTable_mib_index * mib_idx)
+{
+    int             err = SNMP_ERR_NOERROR;
+
+    /*
+     * temp storage for parsing indexes
+     */
+    /*
+     * ipIfStatsIPVersion(1)/InetVersion/ASN_INTEGER/long(u_long)//l/a/w/E/r/d/h
+     */
+    netsnmp_variable_list var_ipIfStatsIPVersion;
+    /*
+     * ipIfStatsIfIndex(2)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H
+     */
+    netsnmp_variable_list var_ipIfStatsIfIndex;
+
+    /*
+     * set up varbinds
+     */
+    memset(&var_ipIfStatsIPVersion, 0x00, sizeof(var_ipIfStatsIPVersion));
+    var_ipIfStatsIPVersion.type = ASN_INTEGER;
+    memset(&var_ipIfStatsIfIndex, 0x00, sizeof(var_ipIfStatsIfIndex));
+    var_ipIfStatsIfIndex.type = ASN_INTEGER;
+
+    /*
+     * chain temp index varbinds together
+     */
+    var_ipIfStatsIPVersion.next_variable = &var_ipIfStatsIfIndex;
+    var_ipIfStatsIfIndex.next_variable = NULL;
+
+
+    DEBUGMSGTL(("verbose:ipIfStatsTable:ipIfStatsTable_index_from_oid",
+                "called\n"));
+
+    /*
+     * parse the oid into the individual index components
+     */
+    err = parse_oid_indexes(oid_idx->oids, oid_idx->len,
+                            &var_ipIfStatsIPVersion);
+    if (err == SNMP_ERR_NOERROR) {
+        /*
+         * copy out values
+         */
+        mib_idx->ipIfStatsIPVersion =
+            *((u_long *) var_ipIfStatsIPVersion.val.string);
+        mib_idx->ipIfStatsIfIndex =
+            *((long *) var_ipIfStatsIfIndex.val.string);
+
+
+    }
+
+    /*
+     * parsing may have allocated memory. free it.
+     */
+    snmp_reset_var_buffers(&var_ipIfStatsIPVersion);
+
+    return err;
+}                               /* ipIfStatsTable_index_from_oid */
+
+
+/*
+ *********************************************************************
+ * @internal
+ * allocate resources for a ipIfStatsTable_rowreq_ctx
+ */
+ipIfStatsTable_rowreq_ctx *
+ipIfStatsTable_allocate_rowreq_ctx(ipIfStatsTable_data * data,
+                                   void *user_init_ctx)
+{
+    ipIfStatsTable_rowreq_ctx *rowreq_ctx =
+        SNMP_MALLOC_TYPEDEF(ipIfStatsTable_rowreq_ctx);
+
+    DEBUGMSGTL(("internal:ipIfStatsTable:ipIfStatsTable_allocate_rowreq_ctx", "called\n"));
+
+    if (NULL == rowreq_ctx) {
+        snmp_log(LOG_ERR, "Couldn't allocate memory for a "
+                 "ipIfStatsTable_rowreq_ctx.\n");
+        return NULL;
+    } else {
+        if (NULL != data) {
+            /*
+             * track if we got data from user
+             */
+            rowreq_ctx->rowreq_flags |= MFD_ROW_DATA_FROM_USER;
+            rowreq_ctx->data = data;
+        } else if (NULL ==
+                   (rowreq_ctx->data = ipIfStatsTable_allocate_data())) {
+            SNMP_FREE(rowreq_ctx);
+            return NULL;
+        }
+    }
+
+    /*
+     * undo context will be allocated when needed (in *_undo_setup)
+     */
+
+    rowreq_ctx->oid_idx.oids = rowreq_ctx->oid_tmp;
+
+    rowreq_ctx->ipIfStatsTable_data_list = NULL;
+
+    /*
+     * if we allocated data, call init routine
+     */
+    if (!(rowreq_ctx->rowreq_flags & MFD_ROW_DATA_FROM_USER)) {
+        if (SNMPERR_SUCCESS !=
+            ipIfStatsTable_rowreq_ctx_init(rowreq_ctx, user_init_ctx)) {
+            ipIfStatsTable_release_rowreq_ctx(rowreq_ctx);
+            rowreq_ctx = NULL;
+        }
+    }
+
+    return rowreq_ctx;
+}                               /* ipIfStatsTable_allocate_rowreq_ctx */
+
+/*
+ * @internal
+ * release resources for a ipIfStatsTable_rowreq_ctx
+ */
+void
+ipIfStatsTable_release_rowreq_ctx(ipIfStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    DEBUGMSGTL(("internal:ipIfStatsTable:ipIfStatsTable_release_rowreq_ctx", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    ipIfStatsTable_rowreq_ctx_cleanup(rowreq_ctx);
+
+    /*
+     * for non-transient data, don't free data we got from the user
+     */
+    if ((rowreq_ctx->data) &&
+        !(rowreq_ctx->rowreq_flags & MFD_ROW_DATA_FROM_USER))
+        ipIfStatsTable_release_data(rowreq_ctx->data);
+
+    /*
+     * free index oid pointer
+     */
+    if (rowreq_ctx->oid_idx.oids != rowreq_ctx->oid_tmp)
+        free(rowreq_ctx->oid_idx.oids);
+
+    SNMP_FREE(rowreq_ctx);
+}                               /* ipIfStatsTable_release_rowreq_ctx */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_ipIfStatsTable_pre_request(netsnmp_mib_handler *handler,
+                                netsnmp_handler_registration *reginfo,
+                                netsnmp_agent_request_info *agtreq_info,
+                                netsnmp_request_info *requests)
+{
+    int             rc;
+
+    DEBUGMSGTL(("internal:ipIfStatsTable:_mfd_ipIfStatsTable_pre_request",
+                "called\n"));
+
+    if (1 != netsnmp_row_merge_status_first(reginfo, agtreq_info)) {
+        DEBUGMSGTL(("internal:ipIfStatsTable",
+                    "skipping additional pre_request\n"));
+        return SNMP_ERR_NOERROR;
+    }
+
+    rc = ipIfStatsTable_pre_request(ipIfStatsTable_if_ctx.user_ctx);
+    if (MFD_SUCCESS != rc) {
+        /*
+         * nothing we can do about it but log it
+         */
+        DEBUGMSGTL(("ipIfStatsTable", "error %d from "
+                    "ipIfStatsTable_pre_request\n", rc));
+        netsnmp_request_set_error_all(requests, SNMP_VALIDATE_ERR(rc));
+    }
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_ipIfStatsTable_pre_request */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_ipIfStatsTable_post_request(netsnmp_mib_handler *handler,
+                                 netsnmp_handler_registration *reginfo,
+                                 netsnmp_agent_request_info *agtreq_info,
+                                 netsnmp_request_info *requests)
+{
+    ipIfStatsTable_rowreq_ctx *rowreq_ctx = (ipIfStatsTable_rowreq_ctx*)
+        netsnmp_container_table_row_extract(requests);
+    int             rc, packet_rc;
+
+    DEBUGMSGTL(("internal:ipIfStatsTable:_mfd_ipIfStatsTable_post_request",
+                "called\n"));
+
+    /*
+     * release row context, if deleted
+     */
+    if (rowreq_ctx && (rowreq_ctx->rowreq_flags & MFD_ROW_DELETED))
+        ipIfStatsTable_release_rowreq_ctx(rowreq_ctx);
+
+    /*
+     * wait for last call before calling user
+     */
+    if (1 != netsnmp_row_merge_status_last(reginfo, agtreq_info)) {
+        DEBUGMSGTL(("internal:ipIfStatsTable",
+                    "waiting for last post_request\n"));
+        return SNMP_ERR_NOERROR;
+    }
+
+    packet_rc = netsnmp_check_all_requests_error(agtreq_info->asp, 0);
+    rc = ipIfStatsTable_post_request(ipIfStatsTable_if_ctx.user_ctx,
+                                     packet_rc);
+    if (MFD_SUCCESS != rc) {
+        /*
+         * nothing we can do about it but log it
+         */
+        DEBUGMSGTL(("ipIfStatsTable", "error %d from "
+                    "ipIfStatsTable_post_request\n", rc));
+    }
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_ipIfStatsTable_post_request */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_ipIfStatsTable_object_lookup(netsnmp_mib_handler *handler,
+                                  netsnmp_handler_registration *reginfo,
+                                  netsnmp_agent_request_info *agtreq_info,
+                                  netsnmp_request_info *requests)
+{
+    int             rc = SNMP_ERR_NOERROR;
+    ipIfStatsTable_rowreq_ctx *rowreq_ctx = (ipIfStatsTable_rowreq_ctx*)
+        netsnmp_container_table_row_extract(requests);
+
+    DEBUGMSGTL(("internal:ipIfStatsTable:_mfd_ipIfStatsTable_object_lookup", "called\n"));
+
+    /*
+     * get our context from mfd
+     * ipIfStatsTable_interface_ctx *if_ctx =
+     *             (ipIfStatsTable_interface_ctx *)reginfo->my_reg_void;
+     */
+
+    if (NULL == rowreq_ctx) {
+        rc = SNMP_ERR_NOCREATION;
+    }
+
+    if (MFD_SUCCESS != rc)
+        netsnmp_request_set_error_all(requests, rc);
+    else
+        ipIfStatsTable_row_prep(rowreq_ctx);
+
+    return SNMP_VALIDATE_ERR(rc);
+}                               /* _mfd_ipIfStatsTable_object_lookup */
+
+/***********************************************************************
+ *
+ * GET processing
+ *
+ ***********************************************************************/
+/*
+ * @internal
+ * Retrieve the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_ipIfStatsTable_get_column(ipIfStatsTable_rowreq_ctx * rowreq_ctx,
+                           netsnmp_variable_list * var, int column)
+{
+    int             rc = SNMPERR_SUCCESS;
+
+    DEBUGMSGTL(("internal:ipIfStatsTable:_mfd_ipIfStatsTable_get_column",
+                "called for %d\n", column));
+
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    switch (column) {
+
+        /*
+         * ipIfStatsInReceives(3)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSINRECEIVES:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsInReceives_get(rowreq_ctx,
+                                     (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsHCInReceives(4)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSHCINRECEIVES:
+        var->val_len = sizeof(U64);
+        var->type = ASN_COUNTER64;
+        rc = ipIfStatsHCInReceives_get(rowreq_ctx,
+                                       (U64 *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsInOctets(5)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSINOCTETS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsInOctets_get(rowreq_ctx, (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsHCInOctets(6)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSHCINOCTETS:
+        var->val_len = sizeof(U64);
+        var->type = ASN_COUNTER64;
+        rc = ipIfStatsHCInOctets_get(rowreq_ctx, (U64 *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsInHdrErrors(7)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSINHDRERRORS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsInHdrErrors_get(rowreq_ctx,
+                                      (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsInNoRoutes(8)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSINNOROUTES:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsInNoRoutes_get(rowreq_ctx,
+                                     (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsInAddrErrors(9)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSINADDRERRORS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsInAddrErrors_get(rowreq_ctx,
+                                       (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsInUnknownProtos(10)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSINUNKNOWNPROTOS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsInUnknownProtos_get(rowreq_ctx,
+                                          (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsInTruncatedPkts(11)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSINTRUNCATEDPKTS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsInTruncatedPkts_get(rowreq_ctx,
+                                          (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsInForwDatagrams(12)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSINFORWDATAGRAMS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsInForwDatagrams_get(rowreq_ctx,
+                                          (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsHCInForwDatagrams(13)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSHCINFORWDATAGRAMS:
+        var->val_len = sizeof(U64);
+        var->type = ASN_COUNTER64;
+        rc = ipIfStatsHCInForwDatagrams_get(rowreq_ctx,
+                                            (U64 *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsReasmReqds(14)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSREASMREQDS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsReasmReqds_get(rowreq_ctx,
+                                     (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsReasmOKs(15)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSREASMOKS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsReasmOKs_get(rowreq_ctx, (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsReasmFails(16)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSREASMFAILS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsReasmFails_get(rowreq_ctx,
+                                     (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsInDiscards(17)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSINDISCARDS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsInDiscards_get(rowreq_ctx,
+                                     (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsInDelivers(18)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSINDELIVERS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsInDelivers_get(rowreq_ctx,
+                                     (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsHCInDelivers(19)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSHCINDELIVERS:
+        var->val_len = sizeof(U64);
+        var->type = ASN_COUNTER64;
+        rc = ipIfStatsHCInDelivers_get(rowreq_ctx,
+                                       (U64 *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsOutRequests(20)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSOUTREQUESTS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsOutRequests_get(rowreq_ctx,
+                                      (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsHCOutRequests(21)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSHCOUTREQUESTS:
+        var->val_len = sizeof(U64);
+        var->type = ASN_COUNTER64;
+        rc = ipIfStatsHCOutRequests_get(rowreq_ctx,
+                                        (U64 *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsOutForwDatagrams(23)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSOUTFORWDATAGRAMS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsOutForwDatagrams_get(rowreq_ctx,
+                                           (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsHCOutForwDatagrams(24)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSHCOUTFORWDATAGRAMS:
+        var->val_len = sizeof(U64);
+        var->type = ASN_COUNTER64;
+        rc = ipIfStatsHCOutForwDatagrams_get(rowreq_ctx,
+                                             (U64 *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsOutDiscards(25)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSOUTDISCARDS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsOutDiscards_get(rowreq_ctx,
+                                      (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsOutFragReqds(26)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSOUTFRAGREQDS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsOutFragReqds_get(rowreq_ctx,
+                                       (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsOutFragOKs(27)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSOUTFRAGOKS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsOutFragOKs_get(rowreq_ctx,
+                                     (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsOutFragFails(28)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSOUTFRAGFAILS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsOutFragFails_get(rowreq_ctx,
+                                       (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsOutFragCreates(29)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSOUTFRAGCREATES:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsOutFragCreates_get(rowreq_ctx,
+                                         (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsOutTransmits(30)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSOUTTRANSMITS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsOutTransmits_get(rowreq_ctx,
+                                       (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsHCOutTransmits(31)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSHCOUTTRANSMITS:
+        var->val_len = sizeof(U64);
+        var->type = ASN_COUNTER64;
+        rc = ipIfStatsHCOutTransmits_get(rowreq_ctx,
+                                         (U64 *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsOutOctets(32)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSOUTOCTETS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsOutOctets_get(rowreq_ctx,
+                                    (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsHCOutOctets(33)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSHCOUTOCTETS:
+        var->val_len = sizeof(U64);
+        var->type = ASN_COUNTER64;
+        rc = ipIfStatsHCOutOctets_get(rowreq_ctx, (U64 *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsInMcastPkts(34)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSINMCASTPKTS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsInMcastPkts_get(rowreq_ctx,
+                                      (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsHCInMcastPkts(35)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSHCINMCASTPKTS:
+        var->val_len = sizeof(U64);
+        var->type = ASN_COUNTER64;
+        rc = ipIfStatsHCInMcastPkts_get(rowreq_ctx,
+                                        (U64 *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsInMcastOctets(36)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSINMCASTOCTETS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsInMcastOctets_get(rowreq_ctx,
+                                        (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsHCInMcastOctets(37)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSHCINMCASTOCTETS:
+        var->val_len = sizeof(U64);
+        var->type = ASN_COUNTER64;
+        rc = ipIfStatsHCInMcastOctets_get(rowreq_ctx,
+                                          (U64 *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsOutMcastPkts(38)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSOUTMCASTPKTS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsOutMcastPkts_get(rowreq_ctx,
+                                       (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsHCOutMcastPkts(39)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSHCOUTMCASTPKTS:
+        var->val_len = sizeof(U64);
+        var->type = ASN_COUNTER64;
+        rc = ipIfStatsHCOutMcastPkts_get(rowreq_ctx,
+                                         (U64 *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsOutMcastOctets(40)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSOUTMCASTOCTETS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsOutMcastOctets_get(rowreq_ctx,
+                                         (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsHCOutMcastOctets(41)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSHCOUTMCASTOCTETS:
+        var->val_len = sizeof(U64);
+        var->type = ASN_COUNTER64;
+        rc = ipIfStatsHCOutMcastOctets_get(rowreq_ctx,
+                                           (U64 *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsInBcastPkts(42)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSINBCASTPKTS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsInBcastPkts_get(rowreq_ctx,
+                                      (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsHCInBcastPkts(43)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSHCINBCASTPKTS:
+        var->val_len = sizeof(U64);
+        var->type = ASN_COUNTER64;
+        rc = ipIfStatsHCInBcastPkts_get(rowreq_ctx,
+                                        (U64 *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsOutBcastPkts(44)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSOUTBCASTPKTS:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = ipIfStatsOutBcastPkts_get(rowreq_ctx,
+                                       (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsHCOutBcastPkts(45)/COUNTER64/ASN_COUNTER64/U64(U64)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSHCOUTBCASTPKTS:
+        var->val_len = sizeof(U64);
+        var->type = ASN_COUNTER64;
+        rc = ipIfStatsHCOutBcastPkts_get(rowreq_ctx,
+                                         (U64 *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsDiscontinuityTime(46)/TimeStamp/ASN_TIMETICKS/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSDISCONTINUITYTIME:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_TIMETICKS;
+        rc = ipIfStatsDiscontinuityTime_get(rowreq_ctx,
+                                            (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipIfStatsRefreshRate(47)/UNSIGNED32/ASN_UNSIGNED/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_IPIFSTATSREFRESHRATE:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_UNSIGNED;
+        rc = ipIfStatsRefreshRate_get(rowreq_ctx,
+                                      (u_long *) var->val.string);
+        break;
+
+    default:
+        if (IPIFSTATSTABLE_MIN_COL <= column
+            && column <= IPIFSTATSTABLE_MAX_COL) {
+            DEBUGMSGTL(("internal:ipIfStatsTable:_mfd_ipIfStatsTable_get_column", "assume column %d is reserved\n", column));
+            rc = MFD_SKIP;
+        } else {
+            snmp_log(LOG_ERR,
+                     "unknown column %d in _ipIfStatsTable_get_column\n",
+                     column);
+        }
+        break;
+    }
+
+    return rc;
+}                               /* _ipIfStatsTable_get_column */
+
+int
+_mfd_ipIfStatsTable_get_values(netsnmp_mib_handler *handler,
+                               netsnmp_handler_registration *reginfo,
+                               netsnmp_agent_request_info *agtreq_info,
+                               netsnmp_request_info *requests)
+{
+    ipIfStatsTable_rowreq_ctx *rowreq_ctx = (ipIfStatsTable_rowreq_ctx*)
+        netsnmp_container_table_row_extract(requests);
+    netsnmp_table_request_info *tri;
+    u_char         *old_string;
+    void            (*dataFreeHook) (void *);
+    int             rc;
+
+    DEBUGMSGTL(("internal:ipIfStatsTable:_mfd_ipIfStatsTable_get_values",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    for (; requests; requests = requests->next) {
+        /*
+         * save old pointer, so we can free it if replaced
+         */
+        old_string = requests->requestvb->val.string;
+        dataFreeHook = requests->requestvb->dataFreeHook;
+        if (NULL == requests->requestvb->val.string) {
+            requests->requestvb->val.string = requests->requestvb->buf;
+            requests->requestvb->val_len =
+                sizeof(requests->requestvb->buf);
+        } else if (requests->requestvb->buf ==
+                   requests->requestvb->val.string) {
+            if (requests->requestvb->val_len !=
+                sizeof(requests->requestvb->buf))
+                requests->requestvb->val_len =
+                    sizeof(requests->requestvb->buf);
+        }
+
+        /*
+         * get column data
+         */
+        tri = netsnmp_extract_table_info(requests);
+        if (NULL == tri)
+            continue;
+
+        rc = _ipIfStatsTable_get_column(rowreq_ctx, requests->requestvb,
+                                        tri->colnum);
+        if (rc) {
+            if (MFD_SKIP == rc) {
+                requests->requestvb->type = SNMP_NOSUCHINSTANCE;
+                rc = SNMP_ERR_NOERROR;
+            }
+        } else if (NULL == requests->requestvb->val.string) {
+            snmp_log(LOG_ERR, "NULL varbind data pointer!\n");
+            rc = SNMP_ERR_GENERR;
+        }
+        if (rc)
+            netsnmp_request_set_error(requests, SNMP_VALIDATE_ERR(rc));
+
+        /*
+         * if the buffer wasn't used previously for the old data (i.e. it
+         * was allcoated memory)  and the get routine replaced the pointer,
+         * we need to free the previous pointer.
+         */
+        if (old_string && (old_string != requests->requestvb->buf) &&
+            (requests->requestvb->val.string != old_string)) {
+            if (dataFreeHook)
+                (*dataFreeHook) (old_string);
+            else
+                free(old_string);
+        }
+    }                           /* for results */
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_ipIfStatsTable_get_values */
+
+
+/***********************************************************************
+ *
+ * SET processing
+ *
+ ***********************************************************************/
+
+/*
+ * SET PROCESSING NOT APPLICABLE (per MIB or user setting)
+ */
+/***********************************************************************
+ *
+ * DATA ACCESS
+ *
+ ***********************************************************************/
+static void     _container_free(netsnmp_container * container);
+
+/**
+ * @internal
+ */
+static int
+_cache_load(netsnmp_cache * cache, void *vmagic)
+{
+    DEBUGMSGTL(("internal:ipIfStatsTable:_cache_load", "called\n"));
+
+    if ((NULL == cache) || (NULL == cache->magic)) {
+        snmp_log(LOG_ERR, "invalid cache for ipIfStatsTable_cache_load\n");
+        return -1;
+    }
+
+    /** should only be called for an invalid or expired cache */
+    netsnmp_assert((0 == cache->valid) || (1 == cache->expired));
+
+    /*
+     * call user code
+     */
+    return ipIfStatsTable_container_load((netsnmp_container *) cache->
+                                         magic);
+}                               /* _cache_load */
+
+/**
+ * @internal
+ */
+static void
+_cache_free(netsnmp_cache * cache, void *magic)
+{
+    netsnmp_container *container;
+
+    DEBUGMSGTL(("internal:ipIfStatsTable:_cache_free", "called\n"));
+
+    if ((NULL == cache) || (NULL == cache->magic)) {
+        snmp_log(LOG_ERR, "invalid cache in ipIfStatsTable_cache_free\n");
+        return;
+    }
+
+    container = (netsnmp_container *) cache->magic;
+
+    _container_free(container);
+}                               /* _cache_free */
+
+/**
+ * @internal
+ */
+static void
+_container_item_free(ipIfStatsTable_rowreq_ctx * rowreq_ctx, void *context)
+{
+    DEBUGMSGTL(("internal:ipIfStatsTable:_container_item_free",
+                "called\n"));
+
+    if (NULL == rowreq_ctx)
+        return;
+
+    ipIfStatsTable_release_rowreq_ctx(rowreq_ctx);
+}                               /* _container_item_free */
+
+/**
+ * @internal
+ */
+static void
+_container_free(netsnmp_container * container)
+{
+    DEBUGMSGTL(("internal:ipIfStatsTable:_container_free", "called\n"));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR,
+                 "invalid container in ipIfStatsTable_container_free\n");
+        return;
+    }
+
+    /*
+     * call user code
+     */
+    ipIfStatsTable_container_free(container);
+
+    /*
+     * free all items. inefficient, but easy.
+     */
+    CONTAINER_CLEAR(container,
+                    (netsnmp_container_obj_func *) _container_item_free,
+                    NULL);
+}                               /* _container_free */
+
+/**
+ * @internal
+ * initialize the container with functions or wrappers
+ */
+void
+_ipIfStatsTable_container_init(ipIfStatsTable_interface_ctx * if_ctx)
+{
+    DEBUGMSGTL(("internal:ipIfStatsTable:_ipIfStatsTable_container_init",
+                "called\n"));
+
+    /*
+     * cache init
+     */
+    if_ctx->cache = netsnmp_cache_create(30,    /* timeout in seconds */
+                                         _cache_load, _cache_free,
+                                         ipIfStatsTable_oid,
+                                         ipIfStatsTable_oid_size);
+
+    if (NULL == if_ctx->cache) {
+        snmp_log(LOG_ERR, "error creating cache for ipIfStatsTable\n");
+        return;
+    }
+
+    if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+
+    ipIfStatsTable_container_init(&if_ctx->container, if_ctx->cache);
+    if (NULL == if_ctx->container)
+        if_ctx->container =
+            netsnmp_container_find("ipIfStatsTable:table_container");
+    if (NULL == if_ctx->container) {
+        snmp_log(LOG_ERR, "error creating container in "
+                 "ipIfStatsTable_container_init\n");
+        return;
+    }
+
+    if (NULL != if_ctx->cache)
+        if_ctx->cache->magic = (void *) if_ctx->container;
+}                               /* _ipIfStatsTable_container_init */
+
+/**
+ * @internal
+ * shutdown the container with functions or wrappers
+ */
+void
+_ipIfStatsTable_container_shutdown(ipIfStatsTable_interface_ctx * if_ctx)
+{
+    DEBUGMSGTL(("internal:ipIfStatsTable:_ipIfStatsTable_container_shutdown", "called\n"));
+
+    ipIfStatsTable_container_shutdown(if_ctx->container);
+
+    _container_free(if_ctx->container);
+
+}                               /* _ipIfStatsTable_container_shutdown */
+
+
+#ifndef NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_EXTERNAL_ACCESS
+ipIfStatsTable_rowreq_ctx *
+ipIfStatsTable_row_find_by_mib_index(ipIfStatsTable_mib_index * mib_idx)
+{
+    ipIfStatsTable_rowreq_ctx *rowreq_ctx;
+    oid             oid_tmp[MAX_OID_LEN];
+    netsnmp_index   oid_idx;
+    int             rc;
+
+    /*
+     * set up storage for OID
+     */
+    oid_idx.oids = oid_tmp;
+    oid_idx.len = sizeof(oid_tmp) / sizeof(oid);
+
+    /*
+     * convert
+     */
+    rc = ipIfStatsTable_index_to_oid(&oid_idx, mib_idx);
+    if (MFD_SUCCESS != rc)
+        return NULL;
+
+    rowreq_ctx = (ipIfStatsTable_rowreq_ctx*)CONTAINER_FIND(ipIfStatsTable_if_ctx.container, &oid_idx);
+
+    return rowreq_ctx;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_IPIFSTATSTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.h b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.h
new file mode 100644
index 0000000..c43de84
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_interface.h
@@ -0,0 +1,99 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 15899 $ of $
+ *
+ * $Id:$
+ */
+/** @ingroup interface: Routines to interface to Net-SNMP
+ *
+ * \warning This code should not be modified, called directly,
+ *          or used to interpret functionality. It is subject to
+ *          change at any time.
+ * 
+ * @{
+ */
+/*
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ * ***                                                               ***
+ * ***  NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE  ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THIS FILE DOES NOT CONTAIN ANY USER EDITABLE CODE.      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THE GENERATED CODE IS INTERNAL IMPLEMENTATION, AND      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***    IS SUBJECT TO CHANGE WITHOUT WARNING IN FUTURE RELEASES.   ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ */
+#ifndef IPIFSTATSTABLE_INTERFACE_H
+#define IPIFSTATSTABLE_INTERFACE_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+#include "ipIfStatsTable.h"
+
+
+    /*
+     ********************************************************************
+     * Table declarations
+     */
+
+    /*
+     * PUBLIC interface initialization routine 
+     */
+    void           
+        _ipIfStatsTable_initialize_interface(ipIfStatsTable_registration *
+                                             user_ctx, u_long flags);
+    void           
+        _ipIfStatsTable_shutdown_interface(ipIfStatsTable_registration *
+                                           user_ctx);
+
+    ipIfStatsTable_registration *ipIfStatsTable_registration_get(void);
+
+    ipIfStatsTable_registration
+        *ipIfStatsTable_registration_set(ipIfStatsTable_registration *
+                                         newreg);
+
+    netsnmp_container *ipIfStatsTable_container_get(void);
+    int             ipIfStatsTable_container_size(void);
+
+    ipIfStatsTable_rowreq_ctx
+        *ipIfStatsTable_allocate_rowreq_ctx(ipIfStatsTable_data *, void *);
+    void           
+        ipIfStatsTable_release_rowreq_ctx(ipIfStatsTable_rowreq_ctx *
+                                          rowreq_ctx);
+
+    int             ipIfStatsTable_index_to_oid(netsnmp_index * oid_idx,
+                                                ipIfStatsTable_mib_index *
+                                                mib_idx);
+    int             ipIfStatsTable_index_from_oid(netsnmp_index * oid_idx,
+                                                  ipIfStatsTable_mib_index
+                                                  * mib_idx);
+
+    /*
+     * access to certain internals. use with caution!
+     */
+    void            ipIfStatsTable_valid_columns_set(netsnmp_column_info
+                                                     *vc);
+
+    /*
+     */
+    void            ipIfStatsTable_lastChange_set(u_long uptime);
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPIFSTATSTABLE_INTERFACE_H */
+/** @} */
diff --git a/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_oids.h b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_oids.h
new file mode 100644
index 0000000..76607a9
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipIfStatsTable/ipIfStatsTable_oids.h
@@ -0,0 +1,122 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : generic-table-oids.m2c 12855 2005-09-27 15:56:08Z rstory $
+ *
+ * $Id:$
+ */
+#ifndef IPIFSTATSTABLE_OIDS_H
+#define IPIFSTATSTABLE_OIDS_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+    /*
+     * column number definitions for table ipIfStatsTable 
+     */
+#define IPIFSTATSTABLE_OID              1,3,6,1,2,1,4,31,3
+#define IPIFSTATSTABLELASTCHANGE_OID    1,3,6,1,2,1,4,31,2
+
+#define COLUMN_IPIFSTATSIPVERSION         1
+
+#define COLUMN_IPIFSTATSIFINDEX         2
+
+#define COLUMN_IPIFSTATSINRECEIVES         3
+
+#define COLUMN_IPIFSTATSHCINRECEIVES         4
+
+#define COLUMN_IPIFSTATSINOCTETS         5
+
+#define COLUMN_IPIFSTATSHCINOCTETS         6
+
+#define COLUMN_IPIFSTATSINHDRERRORS         7
+
+#define COLUMN_IPIFSTATSINNOROUTES         8
+
+#define COLUMN_IPIFSTATSINADDRERRORS         9
+
+#define COLUMN_IPIFSTATSINUNKNOWNPROTOS         10
+
+#define COLUMN_IPIFSTATSINTRUNCATEDPKTS         11
+
+#define COLUMN_IPIFSTATSINFORWDATAGRAMS         12
+
+#define COLUMN_IPIFSTATSHCINFORWDATAGRAMS         13
+
+#define COLUMN_IPIFSTATSREASMREQDS         14
+
+#define COLUMN_IPIFSTATSREASMOKS         15
+
+#define COLUMN_IPIFSTATSREASMFAILS         16
+
+#define COLUMN_IPIFSTATSINDISCARDS         17
+
+#define COLUMN_IPIFSTATSINDELIVERS         18
+
+#define COLUMN_IPIFSTATSHCINDELIVERS         19
+
+#define COLUMN_IPIFSTATSOUTREQUESTS         20
+
+#define COLUMN_IPIFSTATSHCOUTREQUESTS         21
+
+#define COLUMN_IPIFSTATSOUTFORWDATAGRAMS         23
+
+#define COLUMN_IPIFSTATSHCOUTFORWDATAGRAMS         24
+
+#define COLUMN_IPIFSTATSOUTDISCARDS         25
+
+#define COLUMN_IPIFSTATSOUTFRAGREQDS         26
+
+#define COLUMN_IPIFSTATSOUTFRAGOKS         27
+
+#define COLUMN_IPIFSTATSOUTFRAGFAILS         28
+
+#define COLUMN_IPIFSTATSOUTFRAGCREATES         29
+
+#define COLUMN_IPIFSTATSOUTTRANSMITS         30
+
+#define COLUMN_IPIFSTATSHCOUTTRANSMITS         31
+
+#define COLUMN_IPIFSTATSOUTOCTETS         32
+
+#define COLUMN_IPIFSTATSHCOUTOCTETS         33
+
+#define COLUMN_IPIFSTATSINMCASTPKTS         34
+
+#define COLUMN_IPIFSTATSHCINMCASTPKTS         35
+
+#define COLUMN_IPIFSTATSINMCASTOCTETS         36
+
+#define COLUMN_IPIFSTATSHCINMCASTOCTETS         37
+
+#define COLUMN_IPIFSTATSOUTMCASTPKTS         38
+
+#define COLUMN_IPIFSTATSHCOUTMCASTPKTS         39
+
+#define COLUMN_IPIFSTATSOUTMCASTOCTETS         40
+
+#define COLUMN_IPIFSTATSHCOUTMCASTOCTETS         41
+
+#define COLUMN_IPIFSTATSINBCASTPKTS         42
+
+#define COLUMN_IPIFSTATSHCINBCASTPKTS         43
+
+#define COLUMN_IPIFSTATSOUTBCASTPKTS         44
+
+#define COLUMN_IPIFSTATSHCOUTBCASTPKTS         45
+
+#define COLUMN_IPIFSTATSDISCONTINUITYTIME         46
+
+#define COLUMN_IPIFSTATSREFRESHRATE         47
+
+
+#define IPIFSTATSTABLE_MIN_COL   COLUMN_IPIFSTATSINRECEIVES
+#define IPIFSTATSTABLE_MAX_COL   COLUMN_IPIFSTATSREFRESHRATE
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPIFSTATSTABLE_OIDS_H */
diff --git a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c
index c865607..10587e2 100644
--- a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c
+++ b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.c
@@ -26,8 +26,8 @@
 
 #include "ipSystemStatsTable_interface.h"
 
-oid             ipSystemStatsTable_oid[] = { IPSYSTEMSTATSTABLE_OID };
-int             ipSystemStatsTable_oid_size =
+const oid       ipSystemStatsTable_oid[] = { IPSYSTEMSTATSTABLE_OID };
+const int       ipSystemStatsTable_oid_size =
 OID_LENGTH(ipSystemStatsTable_oid);
 
 ipSystemStatsTable_registration ipSystemStatsTable_user_context;
@@ -163,6 +163,8 @@
     /*
      * TODO:211:o: |-> Perform extra ipSystemStatsTable rowreq cleanup.
      */
+    netsnmp_access_systemstats_entry_free(rowreq_ctx->data);
+    rowreq_ctx->data = NULL;
 }                               /* ipSystemStatsTable_rowreq_ctx_cleanup */
 
 /**
@@ -390,11 +392,14 @@
                 "called\n"));
 
     netsnmp_assert(NULL != rowreq_ctx);
-
+    
     /*
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsInReceives data.
      * copy (* ipSystemStatsInReceives_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES])
+        return MFD_SKIP;
+
     (*ipSystemStatsInReceives_val_ptr) =
         rowreq_ctx->data->stats.HCInReceives.low;
 
@@ -456,6 +461,9 @@
      * TODO:231:o: |-> copy ipSystemStatsHCInReceives data.
      * get (* ipSystemStatsHCInReceives_val_ptr ).low and (* ipSystemStatsHCInReceives_val_ptr ).high from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINRECEIVES])
+        return MFD_SKIP;
+
     (*ipSystemStatsHCInReceives_val_ptr).low =
         rowreq_ctx->data->stats.HCInReceives.low;
     (*ipSystemStatsHCInReceives_val_ptr).high =
@@ -520,6 +528,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsInOctets data.
      * copy (* ipSystemStatsInOctets_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINOCTETS])
+        return MFD_SKIP;
+
     (*ipSystemStatsInOctets_val_ptr) =
         rowreq_ctx->data->stats.HCInOctets.low;
 
@@ -577,6 +588,9 @@
      * TODO:231:o: |-> copy ipSystemStatsHCInOctets data.
      * get (* ipSystemStatsHCInOctets_val_ptr ).low and (* ipSystemStatsHCInOctets_val_ptr ).high from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINOCTETS])
+        return MFD_SKIP;
+
     (*ipSystemStatsHCInOctets_val_ptr).low =
         rowreq_ctx->data->stats.HCInOctets.low;
     (*ipSystemStatsHCInOctets_val_ptr).high =
@@ -644,6 +658,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsInHdrErrors data.
      * copy (* ipSystemStatsInHdrErrors_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_INHDRERRORS])
+        return MFD_SKIP;
+
     (*ipSystemStatsInHdrErrors_val_ptr) =
         rowreq_ctx->data->stats.InHdrErrors;
 
@@ -705,8 +722,11 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsInNoRoutes data.
      * copy (* ipSystemStatsInNoRoutes_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINNOROUTES])
+        return MFD_SKIP;
+
     (*ipSystemStatsInNoRoutes_val_ptr) =
-        rowreq_ctx->data->stats.InNoRoutes;
+        rowreq_ctx->data->stats.HCInNoRoutes.low;
 
     return MFD_SUCCESS;
 }                               /* ipSystemStatsInNoRoutes_get */
@@ -772,6 +792,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsInAddrErrors data.
      * copy (* ipSystemStatsInAddrErrors_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_INADDRERRORS])
+        return MFD_SKIP;
+
     (*ipSystemStatsInAddrErrors_val_ptr) =
         rowreq_ctx->data->stats.InAddrErrors;
 
@@ -843,6 +866,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsInUnknownProtos data.
      * copy (* ipSystemStatsInUnknownProtos_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_INUNKNOWNPROTOS])
+        return MFD_SKIP;
+
     (*ipSystemStatsInUnknownProtos_val_ptr) =
         rowreq_ctx->data->stats.InUnknownProtos;
 
@@ -905,6 +931,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsInTruncatedPkts data.
      * copy (* ipSystemStatsInTruncatedPkts_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_INTRUNCATEDPKTS])
+        return MFD_SKIP;
+
     (*ipSystemStatsInTruncatedPkts_val_ptr) =
         rowreq_ctx->data->stats.InTruncatedPkts;
 
@@ -976,6 +1005,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsInForwDatagrams data.
      * copy (* ipSystemStatsInForwDatagrams_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINFORWDATAGRAMS])
+        return MFD_SKIP;
+
     (*ipSystemStatsInForwDatagrams_val_ptr) =
         rowreq_ctx->data->stats.HCInForwDatagrams.low;
 
@@ -1036,6 +1068,9 @@
      * TODO:231:o: |-> copy ipSystemStatsHCInForwDatagrams data.
      * get (* ipSystemStatsHCInForwDatagrams_val_ptr ).low and (* ipSystemStatsHCInForwDatagrams_val_ptr ).high from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINFORWDATAGRAMS])
+        return MFD_SKIP;
+
     (*ipSystemStatsHCInForwDatagrams_val_ptr).low =
         rowreq_ctx->data->stats.HCInForwDatagrams.low;
     (*ipSystemStatsHCInForwDatagrams_val_ptr).high =
@@ -1105,6 +1140,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsReasmReqds data.
      * copy (* ipSystemStatsReasmReqds_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMREQDS])
+        return MFD_SKIP;
+
     (*ipSystemStatsReasmReqds_val_ptr) =
         rowreq_ctx->data->stats.ReasmReqds;
 
@@ -1175,6 +1213,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsReasmOKs data.
      * copy (* ipSystemStatsReasmOKs_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMOKS])
+        return MFD_SKIP;
+
     (*ipSystemStatsReasmOKs_val_ptr) = rowreq_ctx->data->stats.ReasmOKs;
 
     return MFD_SUCCESS;
@@ -1245,6 +1286,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsReasmFails data.
      * copy (* ipSystemStatsReasmFails_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_REASMFAILS])
+        return MFD_SKIP;
+
     (*ipSystemStatsReasmFails_val_ptr) =
         rowreq_ctx->data->stats.ReasmFails;
 
@@ -1309,6 +1353,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsInDiscards data.
      * copy (* ipSystemStatsInDiscards_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_INDISCARDS])
+        return MFD_SKIP;
+
     (*ipSystemStatsInDiscards_val_ptr) =
         rowreq_ctx->data->stats.InDiscards;
 
@@ -1376,6 +1423,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsInDelivers data.
      * copy (* ipSystemStatsInDelivers_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINDELIVERS])
+        return MFD_SKIP;
+
     (*ipSystemStatsInDelivers_val_ptr) =
         rowreq_ctx->data->stats.HCInDelivers.low;
 
@@ -1433,6 +1483,9 @@
      * TODO:231:o: |-> copy ipSystemStatsHCInDelivers data.
      * get (* ipSystemStatsHCInDelivers_val_ptr ).low and (* ipSystemStatsHCInDelivers_val_ptr ).high from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINDELIVERS])
+        return MFD_SKIP;
+
     (*ipSystemStatsHCInDelivers_val_ptr).low =
         rowreq_ctx->data->stats.HCInDelivers.low;
     (*ipSystemStatsHCInDelivers_val_ptr).high =
@@ -1498,6 +1551,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsOutRequests data.
      * copy (* ipSystemStatsOutRequests_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTREQUESTS])
+        return MFD_SKIP;
+
     (*ipSystemStatsOutRequests_val_ptr) =
         rowreq_ctx->data->stats.HCOutRequests.low;
 
@@ -1555,6 +1611,9 @@
      * TODO:231:o: |-> copy ipSystemStatsHCOutRequests data.
      * get (* ipSystemStatsHCOutRequests_val_ptr ).low and (* ipSystemStatsHCOutRequests_val_ptr ).high from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTREQUESTS])
+        return MFD_SKIP;
+
     (*ipSystemStatsHCOutRequests_val_ptr).low =
         rowreq_ctx->data->stats.HCOutRequests.low;
     (*ipSystemStatsHCOutRequests_val_ptr).high =
@@ -1619,8 +1678,11 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsOutNoRoutes data.
      * copy (* ipSystemStatsOutNoRoutes_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTNOROUTES])
+        return MFD_SKIP;
+
     (*ipSystemStatsOutNoRoutes_val_ptr) =
-        rowreq_ctx->data->stats.OutNoRoutes;
+        rowreq_ctx->data->stats.HCOutNoRoutes.low;
 
     return MFD_SUCCESS;
 }                               /* ipSystemStatsOutNoRoutes_get */
@@ -1694,6 +1756,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsOutForwDatagrams data.
      * copy (* ipSystemStatsOutForwDatagrams_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS])
+        return MFD_SKIP;
+
     (*ipSystemStatsOutForwDatagrams_val_ptr) =
         rowreq_ctx->data->stats.HCOutForwDatagrams.low;
 
@@ -1754,6 +1819,9 @@
      * TODO:231:o: |-> copy ipSystemStatsHCOutForwDatagrams data.
      * get (* ipSystemStatsHCOutForwDatagrams_val_ptr ).low and (* ipSystemStatsHCOutForwDatagrams_val_ptr ).high from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS])
+        return MFD_SKIP;
+
     (*ipSystemStatsHCOutForwDatagrams_val_ptr).low =
         rowreq_ctx->data->stats.HCOutForwDatagrams.low;
     (*ipSystemStatsHCOutForwDatagrams_val_ptr).high =
@@ -1821,8 +1889,11 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsOutDiscards data.
      * copy (* ipSystemStatsOutDiscards_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTDISCARDS])
+        return MFD_SKIP;
+
     (*ipSystemStatsOutDiscards_val_ptr) =
-        rowreq_ctx->data->stats.OutDiscards;
+        rowreq_ctx->data->stats.HCOutDiscards.low;
 
     return MFD_SUCCESS;
 }                               /* ipSystemStatsOutDiscards_get */
@@ -1890,8 +1961,11 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsOutFragReqds data.
      * copy (* ipSystemStatsOutFragReqds_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGREQDS])
+        return MFD_SKIP;
+
     (*ipSystemStatsOutFragReqds_val_ptr) =
-        rowreq_ctx->data->stats.OutFragReqds;
+        rowreq_ctx->data->stats.HCOutFragReqds.low;
 
     return MFD_SUCCESS;
 }                               /* ipSystemStatsOutFragReqds_get */
@@ -1956,9 +2030,11 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsOutFragOKs data.
      * copy (* ipSystemStatsOutFragOKs_val_ptr ) from rowreq_ctx->data
      */
-    snmp_log(LOG_ERR,
-             "ipSystemStatsTable node ipSystemStatsOutFragOKs not implemented: skipping\n");
-    return MFD_SKIP;
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGOKS])
+        return MFD_SKIP;
+
+    (*ipSystemStatsOutFragOKs_val_ptr) =
+        rowreq_ctx->data->stats.HCOutFragOKs.low;
 
     return MFD_SUCCESS;
 }                               /* ipSystemStatsOutFragOKs_get */
@@ -2026,8 +2102,11 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsOutFragFails data.
      * copy (* ipSystemStatsOutFragFails_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGFAILS])
+        return MFD_SKIP;
+
     (*ipSystemStatsOutFragFails_val_ptr) =
-        rowreq_ctx->data->stats.OutFragFails;
+        rowreq_ctx->data->stats.HCOutFragFails.low;
 
     return MFD_SUCCESS;
 }                               /* ipSystemStatsOutFragFails_get */
@@ -2092,8 +2171,11 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsOutFragCreates data.
      * copy (* ipSystemStatsOutFragCreates_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTFRAGCREATES])
+        return MFD_SKIP;
+
     (*ipSystemStatsOutFragCreates_val_ptr) =
-        rowreq_ctx->data->stats.OutFragCreates;
+        rowreq_ctx->data->stats.HCOutFragCreates.low;
 
     return MFD_SUCCESS;
 }                               /* ipSystemStatsOutFragCreates_get */
@@ -2155,6 +2237,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsOutTransmits data.
      * copy (* ipSystemStatsOutTransmits_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTTRANSMITS])
+        return MFD_SKIP;
+
     (*ipSystemStatsOutTransmits_val_ptr) =
         rowreq_ctx->data->stats.HCOutTransmits.low;
 
@@ -2212,6 +2297,9 @@
      * TODO:231:o: |-> copy ipSystemStatsHCOutTransmits data.
      * get (* ipSystemStatsHCOutTransmits_val_ptr ).low and (* ipSystemStatsHCOutTransmits_val_ptr ).high from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTTRANSMITS])
+        return MFD_SKIP;
+
     (*ipSystemStatsHCOutTransmits_val_ptr).low =
         rowreq_ctx->data->stats.HCOutTransmits.low;
     (*ipSystemStatsHCOutTransmits_val_ptr).high =
@@ -2276,6 +2364,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsOutOctets data.
      * copy (* ipSystemStatsOutOctets_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTOCTETS])
+        return MFD_SKIP;
+
     (*ipSystemStatsOutOctets_val_ptr) =
         rowreq_ctx->data->stats.HCOutOctets.low;
 
@@ -2333,6 +2424,9 @@
      * TODO:231:o: |-> copy ipSystemStatsHCOutOctets data.
      * get (* ipSystemStatsHCOutOctets_val_ptr ).low and (* ipSystemStatsHCOutOctets_val_ptr ).high from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTOCTETS])
+        return MFD_SKIP;
+
     (*ipSystemStatsHCOutOctets_val_ptr).low =
         rowreq_ctx->data->stats.HCOutOctets.low;
     (*ipSystemStatsHCOutOctets_val_ptr).high =
@@ -2395,6 +2489,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsInMcastPkts data.
      * copy (* ipSystemStatsInMcastPkts_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTPKTS])
+        return MFD_SKIP;
+
     (*ipSystemStatsInMcastPkts_val_ptr) =
         rowreq_ctx->data->stats.HCInMcastPkts.low;
 
@@ -2451,6 +2548,9 @@
      * TODO:231:o: |-> copy ipSystemStatsHCInMcastPkts data.
      * get (* ipSystemStatsHCInMcastPkts_val_ptr ).low and (* ipSystemStatsHCInMcastPkts_val_ptr ).high from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTPKTS])
+        return MFD_SKIP;
+
     (*ipSystemStatsHCInMcastPkts_val_ptr).low =
         rowreq_ctx->data->stats.HCInMcastPkts.low;
     (*ipSystemStatsHCInMcastPkts_val_ptr).high =
@@ -2514,6 +2614,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsInMcastOctets data.
      * copy (* ipSystemStatsInMcastOctets_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTOCTETS])
+        return MFD_SKIP;
+
     (*ipSystemStatsInMcastOctets_val_ptr) =
         rowreq_ctx->data->stats.HCInMcastOctets.low;
 
@@ -2572,6 +2675,9 @@
      * TODO:231:o: |-> copy ipSystemStatsHCInMcastOctets data.
      * get (* ipSystemStatsHCInMcastOctets_val_ptr ).low and (* ipSystemStatsHCInMcastOctets_val_ptr ).high from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINMCASTOCTETS])
+        return MFD_SKIP;
+
     (*ipSystemStatsHCInMcastOctets_val_ptr).low =
         rowreq_ctx->data->stats.HCInMcastOctets.low;
     (*ipSystemStatsHCInMcastOctets_val_ptr).high =
@@ -2634,6 +2740,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsOutMcastPkts data.
      * copy (* ipSystemStatsOutMcastPkts_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTPKTS])
+        return MFD_SKIP;
+
     (*ipSystemStatsOutMcastPkts_val_ptr) =
         rowreq_ctx->data->stats.HCOutMcastPkts.low;
 
@@ -2690,6 +2799,9 @@
      * TODO:231:o: |-> copy ipSystemStatsHCOutMcastPkts data.
      * get (* ipSystemStatsHCOutMcastPkts_val_ptr ).low and (* ipSystemStatsHCOutMcastPkts_val_ptr ).high from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTPKTS])
+        return MFD_SKIP;
+
     (*ipSystemStatsHCOutMcastPkts_val_ptr).low =
         rowreq_ctx->data->stats.HCOutMcastPkts.low;
     (*ipSystemStatsHCOutMcastPkts_val_ptr).high =
@@ -2754,6 +2866,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsOutMcastOctets data.
      * copy (* ipSystemStatsOutMcastOctets_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTOCTETS])
+        return MFD_SKIP;
+
     (*ipSystemStatsOutMcastOctets_val_ptr) =
         rowreq_ctx->data->stats.HCOutMcastOctets.low;
 
@@ -2816,6 +2931,9 @@
      * TODO:231:o: |-> copy ipSystemStatsHCOutMcastOctets data.
      * get (* ipSystemStatsHCOutMcastOctets_val_ptr ).low and (* ipSystemStatsHCOutMcastOctets_val_ptr ).high from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTMCASTOCTETS])
+        return MFD_SKIP;
+
     (*ipSystemStatsHCOutMcastOctets_val_ptr).low =
         rowreq_ctx->data->stats.HCOutMcastOctets.low;
     (*ipSystemStatsHCOutMcastOctets_val_ptr).high =
@@ -2878,6 +2996,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsInBcastPkts data.
      * copy (* ipSystemStatsInBcastPkts_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINBCASTPKTS])
+        return MFD_SKIP;
+
     (*ipSystemStatsInBcastPkts_val_ptr) =
         rowreq_ctx->data->stats.HCInBcastPkts.low;
 
@@ -2934,6 +3055,9 @@
      * TODO:231:o: |-> copy ipSystemStatsHCInBcastPkts data.
      * get (* ipSystemStatsHCInBcastPkts_val_ptr ).low and (* ipSystemStatsHCInBcastPkts_val_ptr ).high from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCINBCASTPKTS])
+        return MFD_SKIP;
+
     (*ipSystemStatsHCInBcastPkts_val_ptr).low =
         rowreq_ctx->data->stats.HCInBcastPkts.low;
     (*ipSystemStatsHCInBcastPkts_val_ptr).high =
@@ -2996,6 +3120,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsOutBcastPkts data.
      * copy (* ipSystemStatsOutBcastPkts_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTBCASTPKTS])
+        return MFD_SKIP;
+
     (*ipSystemStatsOutBcastPkts_val_ptr) =
         rowreq_ctx->data->stats.HCOutBcastPkts.low;
 
@@ -3052,6 +3179,9 @@
      * TODO:231:o: |-> copy ipSystemStatsHCOutBcastPkts data.
      * get (* ipSystemStatsHCOutBcastPkts_val_ptr ).low and (* ipSystemStatsHCOutBcastPkts_val_ptr ).high from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_HCOUTBCASTPKTS])
+        return MFD_SKIP;
+
     (*ipSystemStatsHCOutBcastPkts_val_ptr).low =
         rowreq_ctx->data->stats.HCOutBcastPkts.low;
     (*ipSystemStatsHCOutBcastPkts_val_ptr).high =
@@ -3116,6 +3246,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsDiscontinuityTime data.
      * copy (* ipSystemStatsDiscontinuityTime_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_DISCONTINUITYTIME])
+        return MFD_SKIP;
+
     (*ipSystemStatsDiscontinuityTime_val_ptr) =
         rowreq_ctx->ipSystemStatsDiscontinuityTime;
 
@@ -3172,6 +3305,9 @@
      * TODO:231:o: |-> Extract the current value of the ipSystemStatsRefreshRate data.
      * copy (* ipSystemStatsRefreshRate_val_ptr ) from rowreq_ctx->data
      */
+    if (!rowreq_ctx->data->stats.columnAvail[IPSYSTEMSTATSTABLE_REFRESHRATE])
+        return MFD_SKIP;
+
     (*ipSystemStatsRefreshRate_val_ptr) =
         rowreq_ctx->ipSystemStatsRefreshRate;
 
diff --git a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h
index 9aa016d..ca1e1f3 100644
--- a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h
+++ b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable.h
@@ -234,8 +234,8 @@
         * ipSystemStatsTable_row_find_by_mib_index
         (ipSystemStatsTable_mib_index * mib_idx);
 
-    extern oid      ipSystemStatsTable_oid[];
-    extern int      ipSystemStatsTable_oid_size;
+    extern const oid      ipSystemStatsTable_oid[];
+    extern const int      ipSystemStatsTable_oid_size;
 
 
 #include "ipSystemStatsTable_interface.h"
diff --git a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c
index b63329b..300ed7a 100644
--- a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c
+++ b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_data_access.c
@@ -19,7 +19,7 @@
 
 #include "ipSystemStatsTable_data_access.h"
 
-static int      ipss_cache_refresh = 30;
+static int      ipss_cache_refresh = IPSYSTEMSTATSTABLE_CACHE_TIMEOUT;
 
 /** @ingroup interface 
  * @addtogroup data_access data_access: Routines to access data
@@ -58,61 +58,10 @@
 ipSystemStatsTable_init_data(ipSystemStatsTable_registration *
                              ipSystemStatsTable_reg)
 {
-    static unsigned int my_columns[] = {
-        COLUMN_IPSYSTEMSTATSINRECEIVES, COLUMN_IPSYSTEMSTATSHCINRECEIVES,
-        /** COLUMN_IPSYSTEMSTATSINOCTETS, */
-        COLUMN_IPSYSTEMSTATSHCINOCTETS,
-        COLUMN_IPSYSTEMSTATSINHDRERRORS,
-        /** COLUMN_IPSYSTEMSTATSINNOROUTES, */
-        COLUMN_IPSYSTEMSTATSINADDRERRORS,
-        COLUMN_IPSYSTEMSTATSINUNKNOWNPROTOS,
-        /** COLUMN_IPSYSTEMSTATSINTRUNCATEDPKTS, */
-        COLUMN_IPSYSTEMSTATSINFORWDATAGRAMS,
-        COLUMN_IPSYSTEMSTATSHCINFORWDATAGRAMS,
-        COLUMN_IPSYSTEMSTATSREASMREQDS,
-        COLUMN_IPSYSTEMSTATSREASMOKS, COLUMN_IPSYSTEMSTATSREASMFAILS,
-        COLUMN_IPSYSTEMSTATSINDISCARDS, COLUMN_IPSYSTEMSTATSINDELIVERS,
-        COLUMN_IPSYSTEMSTATSHCINDELIVERS, COLUMN_IPSYSTEMSTATSOUTREQUESTS,
-        COLUMN_IPSYSTEMSTATSHCOUTREQUESTS, COLUMN_IPSYSTEMSTATSOUTNOROUTES,
-        /** COLUMN_IPSYSTEMSTATSOUTFORWDATAGRAMS, */
-        COLUMN_IPSYSTEMSTATSHCOUTFORWDATAGRAMS,
-        COLUMN_IPSYSTEMSTATSOUTDISCARDS,
-        /** COLUMN_IPSYSTEMSTATSOUTFRAGREQDS, */
-        COLUMN_IPSYSTEMSTATSOUTFRAGOKS, COLUMN_IPSYSTEMSTATSOUTFRAGFAILS,
-        COLUMN_IPSYSTEMSTATSOUTFRAGCREATES,
-        /** COLUMN_IPSYSTEMSTATSOUTTRANSMITS, */
-        /** COLUMN_IPSYSTEMSTATSHCOUTTRANSMITS, */
-        /** COLUMN_IPSYSTEMSTATSOUTOCTETS, */
-        /** COLUMN_IPSYSTEMSTATSHCOUTOCTETS, */
-        /** COLUMN_IPSYSTEMSTATSINMCASTPKTS, */
-        /** COLUMN_IPSYSTEMSTATSHCINMCASTPKTS, */
-        /** COLUMN_IPSYSTEMSTATSINMCASTOCTETS, */
-        /** COLUMN_IPSYSTEMSTATSHCINMCASTOCTETS, */
-        /** COLUMN_IPSYSTEMSTATSOUTMCASTPKTS, */
-        /** COLUMN_IPSYSTEMSTATSHCOUTMCASTPKTS, */
-        /** COLUMN_IPSYSTEMSTATSOUTMCASTOCTETS, */
-        /** COLUMN_IPSYSTEMSTATSHCOUTMCASTOCTETS, */
-        /** COLUMN_IPSYSTEMSTATSINBCASTPKTS, */
-        /** COLUMN_IPSYSTEMSTATSHCINBCASTPKTS, */
-        /** COLUMN_IPSYSTEMSTATSOUTBCASTPKTS, */
-        /** COLUMN_IPSYSTEMSTATSHCOUTBCASTPKTS, */
-        COLUMN_IPSYSTEMSTATSDISCONTINUITYTIME,
-        COLUMN_IPSYSTEMSTATSREFRESHRATE
-    };
-    static netsnmp_column_info valid_columns;
-
-    DEBUGMSGTL(("verbose:ipSystemStatsTable:ipSystemStatsTable_init_data",
+   DEBUGMSGTL(("verbose:ipSystemStatsTable:ipSystemStatsTable_init_data",
                 "called\n"));
 
     /*
-     * we only want to process certain columns, and ignore
-     * anything else.
-     */
-    valid_columns.isRange = 0;
-    valid_columns.details.list = my_columns;
-    valid_columns.list_count = sizeof(my_columns) / sizeof(unsigned int);
-    ipSystemStatsTable_valid_columns_set(&valid_columns);
-    /*
      * TODO:303:o: Initialize ipSystemStatsTable data.
      */
 
@@ -167,7 +116,11 @@
      * For advanced users, you can use a custom container. If you
      * do not create one, one will be created for you.
      */
-    *container_ptr_ptr = NULL;
+
+
+    *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,
@@ -192,6 +145,7 @@
         (NETSNMP_CACHE_DONT_AUTO_RELEASE | NETSNMP_CACHE_DONT_FREE_EXPIRED
          | NETSNMP_CACHE_DONT_FREE_BEFORE_LOAD |
          NETSNMP_CACHE_AUTO_RELOAD);
+    ipSystemStatsTable_container_load(*container_ptr_ptr);
 }                               /* ipSystemStatsTable_container_init */
 
 /**
@@ -204,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",
@@ -267,7 +221,7 @@
         && (MFD_SUCCESS ==
             ipSystemStatsTable_indexes_set(rowreq_ctx,
                                            systemstats_entry->
-                                           ns_ip_version))) {
+                                           index[0]))) {
         rowreq_ctx->ipSystemStatsRefreshRate = ipss_cache_refresh * 1000;       /* milli-seconds */
         CONTAINER_INSERT(container, rowreq_ctx);
     } else {
@@ -386,7 +340,7 @@
                                               NETSNMP_ACCESS_SYSTEMSTATS_FREE_DONT_CLEAR);
 
     DEBUGMSGT(("verbose:ipSystemStatsTable:ipSystemStatsTable_cache_load",
-               "%d records\n", CONTAINER_SIZE(container)));
+               "%" NETSNMP_PRIz "u records\n", CONTAINER_SIZE(container)));
 
     return MFD_SUCCESS;
 }                               /* ipSystemStatsTable_container_load */
diff --git a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c
index 089812c..e1ca2cb 100644
--- a/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipSystemStatsTable/ipSystemStatsTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,18 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(ipSystemStatsTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(ipSystemStatsTable_container_size, ipSystemStatsTable_external_access)
+netsnmp_feature_child_of(ipSystemStatsTable_registration_set, ipSystemStatsTable_external_access)
+netsnmp_feature_child_of(ipSystemStatsTable_registration_get, ipSystemStatsTable_external_access)
+netsnmp_feature_child_of(ipSystemStatsTable_container_get, ipSystemStatsTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -80,19 +93,23 @@
                 _ipSystemStatsTable_container_shutdown(ipSystemStatsTable_interface_ctx *
                                                        if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_CONTAINER_GET
 netsnmp_container *
 ipSystemStatsTable_container_get(void)
 {
     return ipSystemStatsTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_REGISTRATION_GET
 ipSystemStatsTable_registration *
 ipSystemStatsTable_registration_get(void)
 {
     return ipSystemStatsTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_REGISTRATION_SET
 ipSystemStatsTable_registration *
 ipSystemStatsTable_registration_set(ipSystemStatsTable_registration *
                                     newreg)
@@ -102,12 +119,15 @@
     ipSystemStatsTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_CONTAINER_SIZE
 int
 ipSystemStatsTable_container_size(void)
 {
     return CONTAINER_SIZE(ipSystemStatsTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_CONTAINER_SIZE */
 
 /*
  * mfd multiplexer modes
@@ -149,7 +169,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;
@@ -220,7 +240,8 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
+    /* XXX - are these actually necessary? */
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -243,7 +264,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -548,7 +569,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 +615,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 +1127,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;
@@ -1175,7 +1196,7 @@
 }                               /* _mfd_ipSystemStatsTable_get_values */
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -1339,6 +1360,7 @@
 }                               /* _ipSystemStatsTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_EXTERNAL_ACCESS
 ipSystemStatsTable_rowreq_ctx *
 ipSystemStatsTable_row_find_by_mib_index(ipSystemStatsTable_mib_index *
                                          mib_idx)
@@ -1361,8 +1383,9 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (ipSystemStatsTable_rowreq_ctx*)
         CONTAINER_FIND(ipSystemStatsTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IPSYSTEMSTATSTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/ip-mib/ip_scalars.c b/agent/mibgroup/ip-mib/ip_scalars.c
index 8af9613..9096269 100644
--- a/agent/mibgroup/ip-mib/ip_scalars.c
+++ b/agent/mibgroup/ip-mib/ip_scalars.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -11,44 +12,285 @@
 
 #include "ip_scalars.h"
 
-int
+static int
+handle_ipForwarding(netsnmp_mib_handler *handler,
+                    netsnmp_handler_registration *reginfo,
+                    netsnmp_agent_request_info *reqinfo,
+                    netsnmp_request_info *requests);
+
+static int
+handle_ipDefaultTTL(netsnmp_mib_handler *handler,
+                    netsnmp_handler_registration *reginfo,
+                    netsnmp_agent_request_info *reqinfo,
+                    netsnmp_request_info *requests);
+
+static int
 handle_ipv6IpForwarding(netsnmp_mib_handler *handler,
                         netsnmp_handler_registration *reginfo,
                         netsnmp_agent_request_info *reqinfo,
                         netsnmp_request_info *requests);
 
+static int
+handle_ipv6IpDefaultHopLimit(netsnmp_mib_handler *handler,
+                             netsnmp_handler_registration *reginfo,
+                             netsnmp_agent_request_info *reqinfo,
+                             netsnmp_request_info *requests);
+
+static int ipAddressSpinLockValue;
+
+static int
+handle_ipAddressSpinLock(netsnmp_mib_handler *handler,
+                         netsnmp_handler_registration *reginfo,
+                         netsnmp_agent_request_info *reqinfo,
+                         netsnmp_request_info *requests);
+
 /** Initializes the ip module */
 void
 init_ip_scalars(void)
 {
-    static oid      ipReasmTimeout_oid[] = { 1, 3, 6, 1, 2, 1, 4, 13, 0 };
+    static oid 	    ipForwarding_oid[] = { 1, 3, 6, 1, 2, 1, 4, 1 };
+    static oid 	    ipDefaultTTL_oid[] = { 1, 3, 6, 1, 2, 1, 4, 2 };
     static oid      ipv6IpForwarding_oid[] = { 1, 3, 6, 1, 2, 1, 4, 25 };
-    static oid      ipv6IpDefaultHopLimit_oid[] =
-        { 1, 3, 6, 1, 2, 1, 4, 26, 0 };
+    static oid      ipv6IpDefaultHopLimit_oid[] = { 1, 3, 6, 1, 2, 1, 4, 26 };
+    static oid      ipAddressSpinLock_oid[] = { 1, 3, 6, 1, 2, 1, 4, 33 };
 
     DEBUGMSGTL(("ip_scalar", "Initializing\n"));
 
-    netsnmp_register_num_file_instance
-        ("ipReasmTimeout",
-         ipReasmTimeout_oid, OID_LENGTH(ipReasmTimeout_oid),
-         "/proc/sys/net/ipv4/ipfrag_time", ASN_INTEGER,
-         HANDLER_CAN_RONLY, NULL, NULL);
+    netsnmp_register_scalar(netsnmp_create_handler_registration
+                             ("ipForwarding", handle_ipForwarding,
+                              ipForwarding_oid,
+                              OID_LENGTH(ipForwarding_oid),
+                              HANDLER_CAN_RWRITE));
                                        
     netsnmp_register_scalar(netsnmp_create_handler_registration
+                             ("ipDefaultTTL", handle_ipDefaultTTL,
+                              ipDefaultTTL_oid,
+                              OID_LENGTH(ipDefaultTTL_oid),
+                              HANDLER_CAN_RWRITE));
+
+    netsnmp_register_scalar(netsnmp_create_handler_registration
                             ("ipv6IpForwarding", handle_ipv6IpForwarding,
                              ipv6IpForwarding_oid,
                              OID_LENGTH(ipv6IpForwarding_oid),
                              HANDLER_CAN_RWRITE));
 
-    netsnmp_register_num_file_instance
-        ("ipv6IpDefaultHopLimit",
-         ipv6IpDefaultHopLimit_oid, OID_LENGTH(ipv6IpDefaultHopLimit_oid),
-         "/proc/sys/net/ipv6/conf/default/hop_limit", ASN_INTEGER,
-         HANDLER_CAN_RWRITE, NULL, NULL);
-                                       
+    netsnmp_register_scalar(netsnmp_create_handler_registration
+                            ("ipv6IpDefaultHopLimit", handle_ipv6IpDefaultHopLimit,
+                             ipv6IpDefaultHopLimit_oid,
+                             OID_LENGTH(ipv6IpDefaultHopLimit_oid),
+                             HANDLER_CAN_RWRITE));
+
+    netsnmp_register_scalar(netsnmp_create_handler_registration
+                            ("ipAddressSpinLock", handle_ipAddressSpinLock,
+                             ipAddressSpinLock_oid,
+                             OID_LENGTH(ipAddressSpinLock_oid),
+                             HANDLER_CAN_RWRITE));
+
+    /* Initialize spin lock with random value */
+    ipAddressSpinLockValue = (int) random();
+
 }
 
-int
+static int
+handle_ipForwarding(netsnmp_mib_handler *handler,
+                          netsnmp_handler_registration *reginfo,
+                          netsnmp_agent_request_info   *reqinfo,
+                          netsnmp_request_info         *requests)
+{
+    int      rc;
+    u_long   value;
+
+    /* We are never called for a GETNEXT if it's registered as a
+       "instance", as it's "magically" handled for us.  */
+
+    /* a instance handler also only hands us one request at a time, so
+       we don't need to loop over a list of requests; we'll only get one. */
+
+    switch(reqinfo->mode) {
+
+        case MODE_GET:
+            rc = netsnmp_arch_ip_scalars_ipForwarding_get(&value);
+            if (rc != 0) {
+                netsnmp_set_request_error(reqinfo, requests,
+                                      SNMP_NOSUCHINSTANCE);
+            }
+            else {
+                value = value ? 1 : 2;
+                snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,
+                                     (u_char *)&value, sizeof(value));
+            }
+            break;
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        /*
+         * SET REQUEST
+         *
+         * multiple states in the transaction.  See:
+         * http://www.net-snmp.org/tutorial-5/toolkit/mib_module/set-actions.jpg
+         */
+        case MODE_SET_RESERVE1:
+            break;
+
+        case MODE_SET_RESERVE2:
+            /*
+             * store old info for undo later
+             */
+            rc = netsnmp_arch_ip_scalars_ipForwarding_get(&value);
+            if (rc < 0) {
+                netsnmp_set_request_error(reqinfo, requests,
+                                          SNMP_ERR_NOCREATION);
+            } else {
+                u_long *value_save;
+                value_save = netsnmp_memdup(&value, sizeof(value));
+                if ( NULL == value_save )
+                    netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_RESOURCEUNAVAILABLE);
+                else
+                    netsnmp_request_add_list_data(requests,
+                                                  netsnmp_create_data_list
+                                                  ("ipfw", value_save,
+                                                  free));
+	    }
+            break;
+
+        case MODE_SET_FREE:
+            /* XXX: free resources allocated in RESERVE1 and/or
+               RESERVE2.  Something failed somewhere, and the states
+               below won't be called. */
+            break;
+
+        case MODE_SET_ACTION:
+            /* XXX: perform the value change here */
+            value =  *(requests->requestvb->val.integer);
+            rc = netsnmp_arch_ip_scalars_ipForwarding_set(value);
+            if ( 0 != rc ) {
+                netsnmp_set_request_error(reqinfo, requests, rc);
+            }
+            break;
+
+        case MODE_SET_COMMIT:
+            break;
+
+        case MODE_SET_UNDO:
+             value =
+                 *((u_long *) netsnmp_request_get_list_data(requests,
+                                                            "ipfw"));
+             rc = netsnmp_arch_ip_scalars_ipForwarding_set(value);
+             if ( 0 != rc ) {
+                 netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_UNDOFAILED);
+             }
+             break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+        default:
+            /* we should never get here, so this is a really bad error */
+            snmp_log(LOG_ERR, "unknown mode (%d) in handle_ipForwarding\n", reqinfo->mode );
+            return SNMP_ERR_GENERR;
+    }
+
+    return SNMP_ERR_NOERROR;
+}
+
+
+static int
+handle_ipDefaultTTL(netsnmp_mib_handler *handler,
+                    netsnmp_handler_registration *reginfo,
+                    netsnmp_agent_request_info   *reqinfo,
+                    netsnmp_request_info         *requests)
+{
+    int      rc;
+    u_long   value;
+
+    /* We are never called for a GETNEXT if it's registered as a
+       "instance", as it's "magically" handled for us.  */
+
+    /* a instance handler also only hands us one request at a time, so
+       we don't need to loop over a list of requests; we'll only get one. */
+
+    switch(reqinfo->mode) {
+
+        case MODE_GET:
+            rc = netsnmp_arch_ip_scalars_ipDefaultTTL_get(&value);
+            if (rc != 0) {
+                netsnmp_set_request_error(reqinfo, requests,
+                                      SNMP_NOSUCHINSTANCE);
+            }
+            else {
+                snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,
+                                     (u_char *)&value, sizeof(value));
+            }
+            break;
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        /*
+         * SET REQUEST
+         *
+         * multiple states in the transaction.  See:
+         * http://www.net-snmp.org/tutorial-5/toolkit/mib_module/set-actions.jpg
+         */
+        case MODE_SET_RESERVE1:
+            break;
+
+        case MODE_SET_RESERVE2:
+            /*
+             * store old info for undo later
+             */
+            rc = netsnmp_arch_ip_scalars_ipDefaultTTL_get(&value);
+            if (rc < 0) {
+                netsnmp_set_request_error(reqinfo, requests,
+                                          SNMP_ERR_NOCREATION);
+            } else {
+                u_long *value_save;
+                value_save = netsnmp_memdup(&value, sizeof(value));
+                if ( NULL == value_save )
+                    netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_RESOURCEUNAVAILABLE);
+                else
+                    netsnmp_request_add_list_data(requests,
+                                                  netsnmp_create_data_list
+                                                  ("ipttl", value_save,
+                                                  free));
+	    }
+            break;
+
+        case MODE_SET_FREE:
+            /* XXX: free resources allocated in RESERVE1 and/or
+               RESERVE2.  Something failed somewhere, and the states
+               below won't be called. */
+            break;
+
+        case MODE_SET_ACTION:
+            /* XXX: perform the value change here */
+            value =  *(requests->requestvb->val.integer);
+            rc = netsnmp_arch_ip_scalars_ipDefaultTTL_set(value);
+            if ( 0 != rc ) {
+                netsnmp_set_request_error(reqinfo, requests, rc);
+            }
+            break;
+
+        case MODE_SET_COMMIT:
+            break;
+
+        case MODE_SET_UNDO:
+             value =
+                 *((u_long *) netsnmp_request_get_list_data(requests,
+                                                            "ipttl"));
+             rc = netsnmp_arch_ip_scalars_ipDefaultTTL_set(value);
+             if ( 0 != rc ) {
+                 netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_UNDOFAILED);
+             }
+             break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+        default:
+            /* we should never get here, so this is a really bad error */
+            snmp_log(LOG_ERR, "unknown mode (%d) in handle_ipDefaultTTL\n", reqinfo->mode );
+            return SNMP_ERR_GENERR;
+    }
+
+    return SNMP_ERR_NOERROR;
+}
+
+
+static int
 handle_ipv6IpForwarding(netsnmp_mib_handler *handler,
                         netsnmp_handler_registration *reginfo,
                         netsnmp_agent_request_info *reqinfo,
@@ -81,6 +323,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         /*
          * SET REQUEST
          *
@@ -110,7 +353,7 @@
             else {
                 netsnmp_request_add_list_data(requests,
                                               netsnmp_create_data_list
-                                              ("ipfw", value_save,
+                                              ("ip6fw", value_save,
                                                free));
             }
         }
@@ -133,12 +376,13 @@
     case MODE_SET_UNDO:
         value =
             *((u_long *) netsnmp_request_get_list_data(requests,
-                                                       "ipfw"));
+                                                       "ip6fw"));
         rc = netsnmp_arch_ip_scalars_ipv6IpForwarding_set(value);
         if ( 0 != rc ) {
             netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_UNDOFAILED);
         }
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     default:
         /*
@@ -151,3 +395,193 @@
 
     return SNMP_ERR_NOERROR;
 }
+
+
+static int
+handle_ipAddressSpinLock(netsnmp_mib_handler *handler,
+                          netsnmp_handler_registration *reginfo,
+                          netsnmp_agent_request_info   *reqinfo,
+                          netsnmp_request_info         *requests)
+{
+    long   value;
+
+    /* We are never called for a GETNEXT if it's registered as a
+       "instance", as it's "magically" handled for us.  */
+
+    /* a instance handler also only hands us one request at a time, so
+       we don't need to loop over a list of requests; we'll only get one. */
+
+    switch(reqinfo->mode) {
+
+        case MODE_GET:
+            snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,
+                                     (u_char *)&ipAddressSpinLockValue, 
+                                     sizeof(ipAddressSpinLockValue));
+            break;
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        /*
+         * SET REQUEST
+         *
+         * multiple states in the transaction.  See:
+         * http://www.net-snmp.org/tutorial-5/toolkit/mib_module/set-actions.jpg
+         */
+        case MODE_SET_RESERVE1:
+        case MODE_SET_RESERVE2:
+            /* just check the value */
+            value =  *(requests->requestvb->val.integer);
+            if (value != ipAddressSpinLockValue)
+                netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_INCONSISTENTVALUE);
+            break;
+
+        case MODE_SET_FREE:
+            break;
+
+        case MODE_SET_ACTION:
+            /* perform the final spinlock check and increase its value */
+            value =  *(requests->requestvb->val.integer);
+            if (value != ipAddressSpinLockValue) {
+                netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_INCONSISTENTVALUE);
+            } else {
+                ipAddressSpinLockValue++;
+                /* and check it for overflow */
+                if (ipAddressSpinLockValue > 2147483647 || ipAddressSpinLockValue < 0)
+                    ipAddressSpinLockValue = 0;
+            }
+            break;
+
+        case MODE_SET_COMMIT:
+            break;
+
+        case MODE_SET_UNDO:
+             break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+        default:
+            /* we should never get here, so this is a really bad error */
+            snmp_log(LOG_ERR, "unknown mode (%d) in handle_ipAddressSpinLock\n", reqinfo->mode );
+            return SNMP_ERR_GENERR;
+    }
+
+    return SNMP_ERR_NOERROR;
+}
+
+
+static int
+handle_ipv6IpDefaultHopLimit(netsnmp_mib_handler *handler,
+                             netsnmp_handler_registration *reginfo,
+                             netsnmp_agent_request_info *reqinfo,
+                             netsnmp_request_info *requests)
+{
+    u_long          value;
+    int             rc;
+    /*
+     * We are never called for a GETNEXT if it's registered as a
+     * "instance", as it's "magically" handled for us.  
+     */
+
+    /*
+     * a instance handler also only hands us one request at a time, so
+     * we don't need to loop over a list of requests; we'll only get one. 
+     */
+
+    switch (reqinfo->mode) {
+
+    case MODE_GET:
+
+        rc = netsnmp_arch_ip_scalars_ipv6IpDefaultHopLimit_get(&value);
+        if (rc != 0) {
+            netsnmp_set_request_error(reqinfo, requests,
+                                  SNMP_NOSUCHINSTANCE);
+        }
+        else {
+            snmp_set_var_typed_value(requests->requestvb, ASN_INTEGER,
+                                 (u_char *)&value, sizeof(value));
+        }
+
+        break;
+
+#ifdef NOTYET
+        /*
+         * SET REQUEST
+         *
+         * multiple states in the transaction.  See:
+         * http://www.net-snmp.org/tutorial-5/toolkit/mib_module/set-actions.jpg
+         */
+    case MODE_SET_RESERVE1:
+        /*
+         * or you could use netsnmp_check_vb_type_and_size instead 
+         */
+        rc = netsnmp_check_vb_type(requests->requestvb, ASN_INTEGER);
+        if (rc != SNMP_ERR_NOERROR) {
+            netsnmp_set_request_error(reqinfo, requests, rc);
+        }
+        break;
+
+    case MODE_SET_RESERVE2:
+        /*
+         * XXX malloc "undo" storage buffer 
+         */
+        if ( /* XXX if malloc, or whatever, failed: */ ) {
+            netsnmp_set_request_error(reqinfo, requests,
+                                      SNMP_ERR_RESOURCEUNAVAILABLE);
+        }
+        break;
+
+    case MODE_SET_FREE:
+        /*
+         * XXX: free resources allocated in RESERVE1 and/or
+         * RESERVE2.  Something failed somewhere, and the states
+         * below won't be called. 
+         */
+        break;
+
+    case MODE_SET_ACTION:
+        /*
+         * XXX: perform the value change here 
+         */
+        if ( /* XXX: error? */ ) {
+            netsnmp_set_request_error(reqinfo, requests, /* some error */
+                                      );
+        }
+        break;
+
+    case MODE_SET_COMMIT:
+        /*
+         * XXX: delete temporary storage 
+         */
+        if ( /* XXX: error? */ ) {
+            /*
+             * try _really_really_ hard to never get to this point 
+             */
+            netsnmp_set_request_error(reqinfo, requests,
+                                      SNMP_ERR_COMMITFAILED);
+        }
+        break;
+
+    case MODE_SET_UNDO:
+        /*
+         * XXX: UNDO and return to previous value for the object 
+         */
+        if ( /* XXX: error? */ ) {
+            /*
+             * try _really_really_ hard to never get to this point 
+             */
+            netsnmp_set_request_error(reqinfo, requests,
+                                      SNMP_ERR_UNDOFAILED);
+        }
+        break;
+#endif
+
+    default:
+        /*
+         * we should never get here, so this is a really bad error 
+         */
+        snmp_log(LOG_ERR,
+                 "unknown mode (%d) in handle_ipv6IpDefaultHopLimit\n",
+                 reqinfo->mode);
+        return SNMP_ERR_GENERR;
+    }
+
+    return SNMP_ERR_NOERROR;
+}
diff --git a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.c b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.c
index bd27b78..351ddd1 100644
--- a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.c
+++ b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.c
@@ -26,8 +26,8 @@
 
 #include "ipv4InterfaceTable_interface.h"
 
-oid             ipv4InterfaceTable_oid[] = { IPV4INTERFACETABLE_OID };
-int             ipv4InterfaceTable_oid_size =
+const oid       ipv4InterfaceTable_oid[] = { IPV4INTERFACETABLE_OID };
+const int       ipv4InterfaceTable_oid_size =
 OID_LENGTH(ipv4InterfaceTable_oid);
 
 ipv4InterfaceTable_registration ipv4InterfaceTable_user_context;
diff --git a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.h b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable.h
index ad5a678..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);
 
@@ -107,8 +108,8 @@
         * ipv4InterfaceTable_row_find_by_mib_index
         (ipv4InterfaceTable_mib_index * mib_idx);
 
-    extern oid      ipv4InterfaceTable_oid[];
-    extern int      ipv4InterfaceTable_oid_size;
+    extern const oid      ipv4InterfaceTable_oid[];
+    extern const int      ipv4InterfaceTable_oid_size;
 
 
 #include "ipv4InterfaceTable_interface.h"
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..a851a30 100644
--- a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -44,8 +45,14 @@
 
 #include "ipv4InterfaceTable_interface.h"
 
+#include "if-mib/ifTable/ifTable.h"
+
 #include <ctype.h>
 
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -194,7 +201,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;
@@ -345,7 +352,7 @@
      */
     {
         oid             lc_oid[] = { IPV4INTERFACETABLELASTCHANGE_OID };
-        netsnmp_register_watched_scalar(netsnmp_create_handler_registration
+        netsnmp_register_watched_scalar2(netsnmp_create_handler_registration
                                         ("ipv4TableLastChanged", NULL,
                                          lc_oid, OID_LENGTH(lc_oid),
                                          HANDLER_CAN_RONLY),
@@ -447,8 +454,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 +1275,7 @@
                  "ipv4InterfaceTable_container_init\n");
         return;
     }
+    if_ctx->container->container_name = strdup("ipv4InterfaceTable");
 
 }                               /* _ipv4InterfaceTable_container_init */
 
diff --git a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagent.c b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagent.c
index 3c85a54..35b2e96 100644
--- a/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagent.c
+++ b/agent/mibgroup/ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagent.c
@@ -6,9 +6,14 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+netsnmp_feature_require(agentx_enable_subagent)
+netsnmp_feature_require(agent_check_and_process)
+netsnmp_feature_require(enable_stderrlog)
+
 /*
  * include our parent header 
  */
diff --git a/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.c b/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.c
index f9caaef..92f0a5b 100644
--- a/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.c
+++ b/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.c
@@ -26,8 +26,8 @@
 
 #include "ipv6InterfaceTable_interface.h"
 
-oid             ipv6InterfaceTable_oid[] = { IPV6INTERFACETABLE_OID };
-int             ipv6InterfaceTable_oid_size =
+const oid       ipv6InterfaceTable_oid[] = { IPV6INTERFACETABLE_OID };
+const int       ipv6InterfaceTable_oid_size =
 OID_LENGTH(ipv6InterfaceTable_oid);
 
 ipv6InterfaceTable_registration ipv6InterfaceTable_user_context;
diff --git a/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.h b/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable.h
index 8292ec0..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);
 
@@ -191,8 +192,8 @@
         * ipv6InterfaceTable_row_find_by_mib_index
         (ipv6InterfaceTable_mib_index * mib_idx);
 
-    extern oid      ipv6InterfaceTable_oid[];
-    extern int      ipv6InterfaceTable_oid_size;
+    extern const oid      ipv6InterfaceTable_oid[];
+    extern const int      ipv6InterfaceTable_oid_size;
 
 
 #include "ipv6InterfaceTable_interface.h"
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..cbd533c 100644
--- a/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c
+++ b/agent/mibgroup/ip-mib/ipv6InterfaceTable/ipv6InterfaceTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -48,6 +49,10 @@
 
 #include <ctype.h>
 
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -194,7 +199,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;
@@ -345,7 +350,7 @@
      */
     {
         oid             lc_oid[] = { IPV6INTERFACETABLELASTCHANGE_OID };
-        netsnmp_register_watched_scalar(netsnmp_create_handler_registration
+        netsnmp_register_watched_scalar2(netsnmp_create_handler_registration
                                         ("ipv6TableLastChanged", NULL,
                                          lc_oid, OID_LENGTH(lc_oid),
                                          HANDLER_CAN_RONLY),
@@ -1352,7 +1357,7 @@
                  "ipv6InterfaceTable_container_init\n");
         return;
     }
-
+    if_ctx->container->container_name = strdup("ipv6InterfaceTable");
 }                               /* _ipv6InterfaceTable_container_init */
 
 /**
diff --git a/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable.h b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable.h
new file mode 100644
index 0000000..779bd75
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable.h
@@ -0,0 +1,5 @@
+/*
+ * module to include the modules
+ */
+
+config_require(ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable)
diff --git a/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.c b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.c
new file mode 100644
index 0000000..f794093
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.c
@@ -0,0 +1,1009 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $ 
+ *
+ * $Id:ipv6ScopeZoneIndexTable.c 14170 2007-04-29 00:12:32Z varun_c$
+ */
+/** \page MFD helper for ipv6ScopeZoneIndexTable
+ *
+ * \section intro Introduction
+ * Introductory text.
+ *
+ */
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "ipv6ScopeZoneIndexTable.h"
+
+#include <net-snmp/agent/mib_modules.h>
+
+#include "ipv6ScopeZoneIndexTable_interface.h"
+
+const oid       ipv6ScopeZoneIndexTable_oid[] =
+    { IPV6SCOPEZONEINDEXTABLE_OID };
+const int       ipv6ScopeZoneIndexTable_oid_size =
+OID_LENGTH(ipv6ScopeZoneIndexTable_oid);
+
+ipv6ScopeZoneIndexTable_registration ipv6ScopeZoneIndexTable_user_context;
+static ipv6ScopeZoneIndexTable_registration *ipv6ScopeZoneIndexTable_user_context_p;
+
+void            initialize_table_ipv6ScopeZoneIndexTable(void);
+void            shutdown_table_ipv6ScopeZoneIndexTable(void);
+
+
+/**
+ * Initializes the ipv6ScopeZoneIndexTable module
+ */
+void
+init_ipv6ScopeZoneIndexTable(void)
+{
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:init_ipv6ScopeZoneIndexTable", "called\n"));
+
+    /*
+     * TODO:300:o: Perform ipv6ScopeZoneIndexTable one-time module initialization.
+     */
+
+    /*
+     * here we initialize all the tables we're planning on supporting
+     */
+    if (should_init("ipv6ScopeZoneIndexTable"))
+        initialize_table_ipv6ScopeZoneIndexTable();
+
+}                               /* init_ipv6ScopeZoneIndexTable */
+
+/**
+ * Shut-down the ipv6ScopeZoneIndexTable module (agent is exiting)
+ */
+void
+shutdown_ipv6ScopeZoneIndexTable(void)
+{
+    if (should_init("ipv6ScopeZoneIndexTable"))
+        shutdown_table_ipv6ScopeZoneIndexTable();
+
+}
+
+/**
+ * Initialize the table ipv6ScopeZoneIndexTable 
+ *    (Define its contents and how it's structured)
+ */
+void
+initialize_table_ipv6ScopeZoneIndexTable(void)
+{
+    u_long          flags;
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:initialize_table_ipv6ScopeZoneIndexTable", "called\n"));
+
+    /*
+     * TODO:301:o: Perform ipv6ScopeZoneIndexTable one-time table initialization.
+     */
+
+    /*
+     * TODO:302:o: |->Initialize ipv6ScopeZoneIndexTable user context
+     * if you'd like to pass in a pointer to some data for this
+     * table, allocate or set it up here.
+     */
+    /*
+     * a netsnmp_data_list is a simple way to store void pointers. A simple
+     * string token is used to add, find or remove pointers.
+     */
+    ipv6ScopeZoneIndexTable_user_context_p =
+        netsnmp_create_data_list("ipv6ScopeZoneIndexTable", NULL, NULL);
+
+    /*
+     * No support for any flags yet, but in the future you would
+     * set any flags here.
+     */
+    flags = 0;
+
+    /*
+     * call interface initialization code
+     */
+    _ipv6ScopeZoneIndexTable_initialize_interface
+	(ipv6ScopeZoneIndexTable_user_context_p, flags);
+}                               /* initialize_table_ipv6ScopeZoneIndexTable */
+
+/**
+ * Shutdown the table ipv6ScopeZoneIndexTable 
+ */
+void
+shutdown_table_ipv6ScopeZoneIndexTable(void)
+{
+    /*
+     * call interface shutdown code
+     */
+    _ipv6ScopeZoneIndexTable_shutdown_interface
+        (ipv6ScopeZoneIndexTable_user_context_p);
+    netsnmp_free_all_list_data(ipv6ScopeZoneIndexTable_user_context_p);
+    ipv6ScopeZoneIndexTable_user_context_p = NULL;
+}
+
+/**
+ * extra context initialization (eg default values)
+ *
+ * @param rowreq_ctx    : row request context
+ * @param user_init_ctx : void pointer for user (parameter to rowreq_ctx_allocate)
+ *
+ * @retval MFD_SUCCESS  : no errors
+ * @retval MFD_ERROR    : error (context allocate will fail)
+ */
+int
+ipv6ScopeZoneIndexTable_rowreq_ctx_init(ipv6ScopeZoneIndexTable_rowreq_ctx
+                                        * rowreq_ctx, void *user_init_ctx)
+{
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_rowreq_ctx_init", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:210:o: |-> Perform extra ipv6ScopeZoneIndexTable rowreq initialization. (eg DEFVALS)
+     */
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndexTable_rowreq_ctx_init */
+
+/**
+ * extra context cleanup
+ *
+ */
+void
+ipv6ScopeZoneIndexTable_rowreq_ctx_cleanup
+    (ipv6ScopeZoneIndexTable_rowreq_ctx * rowreq_ctx)
+{
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_rowreq_ctx_cleanup", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:211:o: |-> Perform extra ipv6ScopeZoneIndexTable rowreq cleanup.
+     */
+    netsnmp_access_scopezone_entry_free(rowreq_ctx->data);
+    rowreq_ctx->data = NULL;
+}                               /* ipv6ScopeZoneIndexTable_rowreq_ctx_cleanup */
+
+/**
+ * pre-request callback
+ *
+ *
+ * @retval MFD_SUCCESS              : success.
+ * @retval MFD_ERROR                : other error
+ */
+int
+ipv6ScopeZoneIndexTable_pre_request(ipv6ScopeZoneIndexTable_registration *
+                                    user_context)
+{
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_pre_request", "called\n"));
+
+    /*
+     * TODO:510:o: Perform ipv6ScopeZoneIndexTable pre-request actions.
+     */
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndexTable_pre_request */
+
+/**
+ * post-request callback
+ *
+ * Note:
+ *   New rows have been inserted into the container, and
+ *   deleted rows have been removed from the container and
+ *   released.
+ *
+ * @param user_context
+ * @param rc : MFD_SUCCESS if all requests succeeded
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR   : other error (ignored)
+ */
+int
+ipv6ScopeZoneIndexTable_post_request(ipv6ScopeZoneIndexTable_registration *
+                                     user_context, int rc)
+{
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_post_request", "called\n"));
+
+    /*
+     * TODO:511:o: Perform ipv6ScopeZoneIndexTable post-request actions.
+     */
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndexTable_post_request */
+
+/*
+ * ipv6ScopeZoneIndexTable_allocate_data
+ *
+ * Purpose: create new ipv6ScopeZoneIndexTable_data.
+ */
+ipv6ScopeZoneIndexTable_data *
+ipv6ScopeZoneIndexTable_allocate_data(void)
+{
+    /*
+     * TODO:201:r: |-> allocate memory for the ipv6ScopeZoneIndexTable data context.
+     */
+    ipv6ScopeZoneIndexTable_data *rtn = netsnmp_access_scopezone_entry_create();
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_allocate_data", "called\n"));
+
+    if (NULL == rtn) {
+        snmp_log(LOG_ERR, "unable to malloc memory for new "
+                 "ipv6ScopeZoneIndexTable_data.\n");
+    }
+
+    return rtn;
+}                               /* ipv6ScopeZoneIndexTable_allocate_data */
+
+/*
+ * ipv6ScopeZoneIndexTable_release_data
+ *
+ * Purpose: release ipv6ScopeZoneIndexTable data.
+ */
+void
+ipv6ScopeZoneIndexTable_release_data(ipv6ScopeZoneIndexTable_data * data)
+{
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_release_data", "called\n"));
+
+    /*
+     * TODO:202:r: |-> release memory for the ipv6ScopeZoneIndexTable data context.
+     */
+    netsnmp_access_scopezone_entry_free(data);
+}                               /* ipv6ScopeZoneIndexTable_release_data */
+
+/** @defgroup data_get data_get: Routines to get data
+ *
+ * TODO:230:M: Implement ipv6ScopeZoneIndexTable get routines.
+ * TODO:240:M: Implement ipv6ScopeZoneIndexTable mapping routines (if any).
+ *
+ * These routine are used to get the value for individual objects. The
+ * row context is passed, along with a pointer to the memory where the
+ * value should be copied.
+ *
+ * @{
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipv6ScopeZoneIndexTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * IP-MIB::ipv6ScopeZoneIndexTable is subid 36 of ip.
+ * Its status is Current.
+ * OID: .1.3.6.1.2.1.4.36, length: 8
+ */
+
+/*
+ * ---------------------------------------------------------------------
+ * * TODO:200:r: Implement ipv6ScopeZoneIndexTable data context functions.
+ */
+
+
+/**
+ * set mib index(es)
+ *
+ * @param tbl_idx mib index structure
+ * @param ipv6ScopeZoneIndexIfIndex_val
+ *
+ * @retval MFD_SUCCESS     : success.
+ * @retval MFD_ERROR       : other error.
+ *
+ * @remark
+ *  This convenience function is useful for setting all the MIB index
+ *  components with a single function call. It is assume that the C values
+ *  have already been mapped from their native/rawformat to the MIB format.
+ */
+int
+ipv6ScopeZoneIndexTable_indexes_set_tbl_idx
+    (ipv6ScopeZoneIndexTable_mib_index * tbl_idx,
+     long ipv6ScopeZoneIndexIfIndex_val)
+{
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_indexes_set_tbl_idx", "called\n"));
+
+    /*
+     * ipv6ScopeZoneIndexIfIndex(1)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H
+     */
+    tbl_idx->ipv6ScopeZoneIndexIfIndex = ipv6ScopeZoneIndexIfIndex_val;
+
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndexTable_indexes_set_tbl_idx */
+
+/**
+ * @internal
+ * set row context indexes
+ *
+ * @param reqreq_ctx the row context that needs updated indexes
+ *
+ * @retval MFD_SUCCESS     : success.
+ * @retval MFD_ERROR       : other error.
+ *
+ * @remark
+ *  This function sets the mib indexs, then updates the oid indexs
+ *  from the mib index.
+ */
+int
+ipv6ScopeZoneIndexTable_indexes_set(ipv6ScopeZoneIndexTable_rowreq_ctx *
+                                    rowreq_ctx,
+                                    long ipv6ScopeZoneIndexIfIndex_val)
+{
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_indexes_set", "called\n"));
+
+    if (MFD_SUCCESS !=
+        ipv6ScopeZoneIndexTable_indexes_set_tbl_idx(&rowreq_ctx->tbl_idx,
+                                                    ipv6ScopeZoneIndexIfIndex_val))
+        return MFD_ERROR;
+
+    /*
+     * convert mib index to oid index
+     */
+    rowreq_ctx->oid_idx.len = sizeof(rowreq_ctx->oid_tmp) / sizeof(oid);
+    if (0 != ipv6ScopeZoneIndexTable_index_to_oid(&rowreq_ctx->oid_idx,
+                                                  &rowreq_ctx->tbl_idx)) {
+        return MFD_ERROR;
+    }
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndexTable_indexes_set */
+
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipv6ScopeZoneIndexEntry.ipv6ScopeZoneIndexLinkLocal
+ * ipv6ScopeZoneIndexLinkLocal is subid 2 of ipv6ScopeZoneIndexEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.36.1.2
+ * Description:
+The zone index for the link-local scope on this interface.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   1
+ *   settable   0
+ *   hint: d
+ *
+ *
+ * Its syntax is InetZoneIndex (based on perltype UNSIGNED32)
+ * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipv6ScopeZoneIndexLinkLocal data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipv6ScopeZoneIndexLinkLocal_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipv6ScopeZoneIndexLinkLocal_get(ipv6ScopeZoneIndexTable_rowreq_ctx *
+                                rowreq_ctx,
+                                u_long *
+                                ipv6ScopeZoneIndexLinkLocal_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipv6ScopeZoneIndexLinkLocal_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexLinkLocal_get", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipv6ScopeZoneIndexLinkLocal data.
+     * copy (* ipv6ScopeZoneIndexLinkLocal_val_ptr ) from rowreq_ctx->data
+     */
+    (*ipv6ScopeZoneIndexLinkLocal_val_ptr) =
+        rowreq_ctx->data->scopezone_linklocal;
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndexLinkLocal_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipv6ScopeZoneIndexEntry.ipv6ScopeZoneIndex3
+ * ipv6ScopeZoneIndex3 is subid 3 of ipv6ScopeZoneIndexEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.36.1.3
+ * Description:
+The zone index for scope 3 on this interface.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   1
+ *   settable   0
+ *   hint: d
+ *
+ *
+ * Its syntax is InetZoneIndex (based on perltype UNSIGNED32)
+ * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipv6ScopeZoneIndex3 data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipv6ScopeZoneIndex3_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipv6ScopeZoneIndex3_get(ipv6ScopeZoneIndexTable_rowreq_ctx * rowreq_ctx,
+                        u_long * ipv6ScopeZoneIndex3_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipv6ScopeZoneIndex3_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndex3_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipv6ScopeZoneIndex3 data.
+     * copy (* ipv6ScopeZoneIndex3_val_ptr ) from rowreq_ctx->data
+     */
+    (*ipv6ScopeZoneIndex3_val_ptr) = 0;
+
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndex3_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipv6ScopeZoneIndexEntry.ipv6ScopeZoneIndexAdminLocal
+ * ipv6ScopeZoneIndexAdminLocal is subid 4 of ipv6ScopeZoneIndexEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.36.1.4
+ * Description:
+The zone index for the admin-local scope on this interface.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   1
+ *   settable   0
+ *   hint: d
+ *
+ *
+ * Its syntax is InetZoneIndex (based on perltype UNSIGNED32)
+ * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipv6ScopeZoneIndexAdminLocal data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipv6ScopeZoneIndexAdminLocal_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipv6ScopeZoneIndexAdminLocal_get(ipv6ScopeZoneIndexTable_rowreq_ctx *
+                                 rowreq_ctx,
+                                 u_long *
+                                 ipv6ScopeZoneIndexAdminLocal_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipv6ScopeZoneIndexAdminLocal_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexAdminLocal_get", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipv6ScopeZoneIndexAdminLocal data.
+     * copy (* ipv6ScopeZoneIndexAdminLocal_val_ptr ) from rowreq_ctx->data
+     */
+    (*ipv6ScopeZoneIndexAdminLocal_val_ptr) = 0;
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndexAdminLocal_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipv6ScopeZoneIndexEntry.ipv6ScopeZoneIndexSiteLocal
+ * ipv6ScopeZoneIndexSiteLocal is subid 5 of ipv6ScopeZoneIndexEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.36.1.5
+ * Description:
+The zone index for the site-local scope on this interface.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   1
+ *   settable   0
+ *   hint: d
+ *
+ *
+ * Its syntax is InetZoneIndex (based on perltype UNSIGNED32)
+ * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipv6ScopeZoneIndexSiteLocal data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipv6ScopeZoneIndexSiteLocal_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipv6ScopeZoneIndexSiteLocal_get(ipv6ScopeZoneIndexTable_rowreq_ctx *
+                                rowreq_ctx,
+                                u_long *
+                                ipv6ScopeZoneIndexSiteLocal_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipv6ScopeZoneIndexSiteLocal_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexSiteLocal_get", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipv6ScopeZoneIndexSiteLocal data.
+     * copy (* ipv6ScopeZoneIndexSiteLocal_val_ptr ) from rowreq_ctx->data
+     */
+    (*ipv6ScopeZoneIndexSiteLocal_val_ptr) = 0;
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndexSiteLocal_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipv6ScopeZoneIndexEntry.ipv6ScopeZoneIndex6
+ * ipv6ScopeZoneIndex6 is subid 6 of ipv6ScopeZoneIndexEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.36.1.6
+ * Description:
+The zone index for scope 6 on this interface.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   1
+ *   settable   0
+ *   hint: d
+ *
+ *
+ * Its syntax is InetZoneIndex (based on perltype UNSIGNED32)
+ * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipv6ScopeZoneIndex6 data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipv6ScopeZoneIndex6_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipv6ScopeZoneIndex6_get(ipv6ScopeZoneIndexTable_rowreq_ctx * rowreq_ctx,
+                        u_long * ipv6ScopeZoneIndex6_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipv6ScopeZoneIndex6_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndex6_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipv6ScopeZoneIndex6 data.
+     * copy (* ipv6ScopeZoneIndex6_val_ptr ) from rowreq_ctx->data
+     */
+    (*ipv6ScopeZoneIndex6_val_ptr) = 0;
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndex6_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipv6ScopeZoneIndexEntry.ipv6ScopeZoneIndex7
+ * ipv6ScopeZoneIndex7 is subid 7 of ipv6ScopeZoneIndexEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.36.1.7
+ * Description:
+The zone index for scope 7 on this interface.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   1
+ *   settable   0
+ *   hint: d
+ *
+ *
+ * Its syntax is InetZoneIndex (based on perltype UNSIGNED32)
+ * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipv6ScopeZoneIndex7 data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipv6ScopeZoneIndex7_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipv6ScopeZoneIndex7_get(ipv6ScopeZoneIndexTable_rowreq_ctx * rowreq_ctx,
+                        u_long * ipv6ScopeZoneIndex7_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipv6ScopeZoneIndex7_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndex7_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipv6ScopeZoneIndex7 data.
+     * copy (* ipv6ScopeZoneIndex7_val_ptr ) from rowreq_ctx->data
+     */
+    (*ipv6ScopeZoneIndex7_val_ptr) = 0;
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndex7_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipv6ScopeZoneIndexEntry.ipv6ScopeZoneIndexOrganizationLocal
+ * ipv6ScopeZoneIndexOrganizationLocal is subid 8 of ipv6ScopeZoneIndexEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.36.1.8
+ * Description:
+The zone index for the organization-local scope on this
+            interface.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   1
+ *   settable   0
+ *   hint: d
+ *
+ *
+ * Its syntax is InetZoneIndex (based on perltype UNSIGNED32)
+ * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipv6ScopeZoneIndexOrganizationLocal data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipv6ScopeZoneIndexOrganizationLocal_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipv6ScopeZoneIndexOrganizationLocal_get(ipv6ScopeZoneIndexTable_rowreq_ctx
+                                        * rowreq_ctx,
+                                        u_long *
+                                        ipv6ScopeZoneIndexOrganizationLocal_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipv6ScopeZoneIndexOrganizationLocal_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexOrganizationLocal_get", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipv6ScopeZoneIndexOrganizationLocal data.
+     * copy (* ipv6ScopeZoneIndexOrganizationLocal_val_ptr ) from rowreq_ctx->data
+     */
+    (*ipv6ScopeZoneIndexOrganizationLocal_val_ptr) = 0;
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndexOrganizationLocal_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipv6ScopeZoneIndexEntry.ipv6ScopeZoneIndex9
+ * ipv6ScopeZoneIndex9 is subid 9 of ipv6ScopeZoneIndexEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.36.1.9
+ * Description:
+The zone index for scope 9 on this interface.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   1
+ *   settable   0
+ *   hint: d
+ *
+ *
+ * Its syntax is InetZoneIndex (based on perltype UNSIGNED32)
+ * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipv6ScopeZoneIndex9 data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipv6ScopeZoneIndex9_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipv6ScopeZoneIndex9_get(ipv6ScopeZoneIndexTable_rowreq_ctx * rowreq_ctx,
+                        u_long * ipv6ScopeZoneIndex9_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipv6ScopeZoneIndex9_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndex9_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipv6ScopeZoneIndex9 data.
+     * copy (* ipv6ScopeZoneIndex9_val_ptr ) from rowreq_ctx->data
+     */
+    (*ipv6ScopeZoneIndex9_val_ptr) = 0;
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndex9_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipv6ScopeZoneIndexEntry.ipv6ScopeZoneIndexA
+ * ipv6ScopeZoneIndexA is subid 10 of ipv6ScopeZoneIndexEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.36.1.10
+ * Description:
+The zone index for scope A on this interface.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   1
+ *   settable   0
+ *   hint: d
+ *
+ *
+ * Its syntax is InetZoneIndex (based on perltype UNSIGNED32)
+ * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipv6ScopeZoneIndexA data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipv6ScopeZoneIndexA_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipv6ScopeZoneIndexA_get(ipv6ScopeZoneIndexTable_rowreq_ctx * rowreq_ctx,
+                        u_long * ipv6ScopeZoneIndexA_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipv6ScopeZoneIndexA_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexA_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipv6ScopeZoneIndexA data.
+     * copy (* ipv6ScopeZoneIndexA_val_ptr ) from rowreq_ctx->data
+     */
+    (*ipv6ScopeZoneIndexA_val_ptr) = 0;
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndexA_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipv6ScopeZoneIndexEntry.ipv6ScopeZoneIndexB
+ * ipv6ScopeZoneIndexB is subid 11 of ipv6ScopeZoneIndexEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.36.1.11
+ * Description:
+The zone index for scope B on this interface.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   1
+ *   settable   0
+ *   hint: d
+ *
+ *
+ * Its syntax is InetZoneIndex (based on perltype UNSIGNED32)
+ * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipv6ScopeZoneIndexB data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipv6ScopeZoneIndexB_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipv6ScopeZoneIndexB_get(ipv6ScopeZoneIndexTable_rowreq_ctx * rowreq_ctx,
+                        u_long * ipv6ScopeZoneIndexB_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipv6ScopeZoneIndexB_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexB_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipv6ScopeZoneIndexB data.
+     * copy (* ipv6ScopeZoneIndexB_val_ptr ) from rowreq_ctx->data
+     */
+    (*ipv6ScopeZoneIndexB_val_ptr) = 0;
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndexB_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipv6ScopeZoneIndexEntry.ipv6ScopeZoneIndexC
+ * ipv6ScopeZoneIndexC is subid 12 of ipv6ScopeZoneIndexEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.36.1.12
+ * Description:
+The zone index for scope C on this interface.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   1
+ *   settable   0
+ *   hint: d
+ *
+ *
+ * Its syntax is InetZoneIndex (based on perltype UNSIGNED32)
+ * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipv6ScopeZoneIndexC data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipv6ScopeZoneIndexC_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipv6ScopeZoneIndexC_get(ipv6ScopeZoneIndexTable_rowreq_ctx * rowreq_ctx,
+                        u_long * ipv6ScopeZoneIndexC_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipv6ScopeZoneIndexC_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexC_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipv6ScopeZoneIndexC data.
+     * copy (* ipv6ScopeZoneIndexC_val_ptr ) from rowreq_ctx->data
+     */
+    (*ipv6ScopeZoneIndexC_val_ptr) = 0;
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndexC_get */
+
+/*---------------------------------------------------------------------
+ * IP-MIB::ipv6ScopeZoneIndexEntry.ipv6ScopeZoneIndexD
+ * ipv6ScopeZoneIndexD is subid 13 of ipv6ScopeZoneIndexEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.4.36.1.13
+ * Description:
+The zone index for scope D on this interface.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   1
+ *   settable   0
+ *   hint: d
+ *
+ *
+ * Its syntax is InetZoneIndex (based on perltype UNSIGNED32)
+ * The net-snmp type is ASN_UNSIGNED. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the ipv6ScopeZoneIndexD data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param ipv6ScopeZoneIndexD_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+ipv6ScopeZoneIndexD_get(ipv6ScopeZoneIndexTable_rowreq_ctx * rowreq_ctx,
+                        u_long * ipv6ScopeZoneIndexD_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != ipv6ScopeZoneIndexD_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexD_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the ipv6ScopeZoneIndexD data.
+     * copy (* ipv6ScopeZoneIndexD_val_ptr ) from rowreq_ctx->data
+     */
+    (*ipv6ScopeZoneIndexD_val_ptr) = 0;
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndexD_get */
+
+
+/** @{ */
diff --git a/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.h b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.h
new file mode 100644
index 0000000..2974fee
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable.h
@@ -0,0 +1,269 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $
+ *
+ * $Id:ipv6ScopeZoneIndexTable.h 14170 2007-04-29 00:12:32Z varun_c$
+ */
+#ifndef IPV6SCOPEZONEINDEXTABLE_H
+#define IPV6SCOPEZONEINDEXTABLE_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+/** @addtogroup misc misc: Miscellaneous routines
+ *
+ * @{
+ */
+#include <net-snmp/library/asn1.h>
+#include <net-snmp/data_access/scopezone.h>
+    /*
+     * other required module components 
+     */
+    /* *INDENT-OFF*  */
+config_require(ip-mib/data_access/ipv6scopezone)
+config_require(ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface)
+config_require(ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_data_access)
+    /* *INDENT-ON*  */
+
+    /*
+     * OID and column number definitions for ipv6ScopeZoneIndexTable 
+     */
+#include "ipv6ScopeZoneIndexTable_oids.h"
+
+    /*
+     * enum definions 
+     */
+#include "ipv6ScopeZoneIndexTable_enums.h"
+
+    /*
+     *********************************************************************
+     * function declarations
+     */
+    void            init_ipv6ScopeZoneIndexTable(void);
+    void            shutdown_ipv6ScopeZoneIndexTable(void);
+
+    /*
+     *********************************************************************
+     * Table declarations
+     */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipv6ScopeZoneIndexTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+    /*
+     * IP-MIB::ipv6ScopeZoneIndexTable is subid 36 of ip.
+     * Its status is Current.
+     * OID: .1.3.6.1.2.1.4.36, length: 8
+     */
+    /*
+     *********************************************************************
+     * When you register your mib, you get to provide a generic
+     * pointer that will be passed back to you for most of the
+     * functions calls.
+     *
+     * TODO:100:r: Review all context structures
+     */
+    /*
+     * TODO:101:o: |-> Review ipv6ScopeZoneIndexTable registration context.
+     */
+    typedef netsnmp_data_list ipv6ScopeZoneIndexTable_registration;
+/**********************************************************************/
+    /*
+     * TODO:110:r: |-> Review ipv6ScopeZoneTable data context structure.
+     * This structure is used to represent the data for ipv6ScopeZoneTable.
+     */
+    typedef netsnmp_v6scopezone_entry ipv6ScopeZoneIndexTable_data;
+
+
+    /*
+     * TODO:120:r: |-> Review ipv6ScopeZoneIndexTable mib index.
+     * This structure is used to represent the index for ipv6ScopeZoneIndexTable.
+     */
+    typedef struct ipv6ScopeZoneIndexTable_mib_index_s {
+
+        /*
+         * ipv6ScopeZoneIndexIfIndex(1)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H
+         */
+        long            ipv6ScopeZoneIndexIfIndex;
+
+
+    } ipv6ScopeZoneIndexTable_mib_index;
+
+    /*
+     * TODO:121:r: |   |-> Review ipv6ScopeZoneIndexTable max index length.
+     * If you KNOW that your indexes will never exceed a certain
+     * length, update this macro to that length.
+     */
+#define MAX_ipv6ScopeZoneIndexTable_IDX_LEN     1
+
+    /*
+     *********************************************************************
+     * TODO:130:o: |-> Review ipv6ScopeZoneIndexTable Row request (rowreq) context.
+     * When your functions are called, you will be passed a
+     * ipv6ScopeZoneIndexTable_rowreq_ctx pointer.
+     */
+    typedef struct ipv6ScopeZoneIndexTable_rowreq_ctx_s {
+
+    /** this must be first for container compare to work */
+        netsnmp_index   oid_idx;
+        oid             oid_tmp[MAX_ipv6ScopeZoneIndexTable_IDX_LEN];
+
+        ipv6ScopeZoneIndexTable_mib_index tbl_idx;
+
+        ipv6ScopeZoneIndexTable_data *data;
+
+        /*
+         * flags per row. Currently, the first (lower) 8 bits are reserved
+         * for the user. See mfd.h for other flags.
+         */
+        u_int           rowreq_flags;
+
+        /*
+         * TODO:131:o: |   |-> Add useful data to ipv6ScopeZoneIndexTable rowreq context.
+         */
+
+        /*
+         * storage for future expansion
+         */
+        netsnmp_data_list *ipv6ScopeZoneIndexTable_data_list;
+
+    } ipv6ScopeZoneIndexTable_rowreq_ctx;
+
+    typedef struct ipv6ScopeZoneIndexTable_ref_rowreq_ctx_s {
+        ipv6ScopeZoneIndexTable_rowreq_ctx *rowreq_ctx;
+    } ipv6ScopeZoneIndexTable_ref_rowreq_ctx;
+
+    /*
+     *********************************************************************
+     * function prototypes
+     */
+    int            
+        ipv6ScopeZoneIndexTable_pre_request
+        (ipv6ScopeZoneIndexTable_registration * user_context);
+    int            
+        ipv6ScopeZoneIndexTable_post_request
+        (ipv6ScopeZoneIndexTable_registration * user_context, int rc);
+
+    int            
+        ipv6ScopeZoneIndexTable_rowreq_ctx_init
+        (ipv6ScopeZoneIndexTable_rowreq_ctx * rowreq_ctx,
+         void *user_init_ctx);
+    void           
+        ipv6ScopeZoneIndexTable_rowreq_ctx_cleanup
+        (ipv6ScopeZoneIndexTable_rowreq_ctx * rowreq_ctx);
+
+
+    ipv6ScopeZoneIndexTable_rowreq_ctx
+        *ipv6ScopeZoneIndexTable_row_find_by_mib_index
+        (ipv6ScopeZoneIndexTable_mib_index * mib_idx);
+
+    ipv6ScopeZoneIndexTable_data *
+       ipv6ScopeZoneIndexTable_allocate_data(void);
+
+    void
+       ipv6ScopeZoneIndexTable_release_data(ipv6ScopeZoneIndexTable_data * data);
+
+    extern const oid      ipv6ScopeZoneIndexTable_oid[];
+    extern const int      ipv6ScopeZoneIndexTable_oid_size;
+
+
+#include "ipv6ScopeZoneIndexTable_interface.h"
+#include "ipv6ScopeZoneIndexTable_data_access.h"
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipv6ScopeZoneIndexTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+    /*
+     * IP-MIB::ipv6ScopeZoneIndexTable is subid 36 of ip.
+     * Its status is Current.
+     * OID: .1.3.6.1.2.1.4.36, length: 8
+     */
+    /*
+     * indexes
+     */
+
+    int
+        ipv6ScopeZoneIndexLinkLocal_get(ipv6ScopeZoneIndexTable_rowreq_ctx
+                                        * rowreq_ctx,
+                                        u_long *
+                                        ipv6ScopeZoneIndexLinkLocal_val_ptr);
+    int
+        ipv6ScopeZoneIndex3_get(ipv6ScopeZoneIndexTable_rowreq_ctx *
+                                rowreq_ctx,
+                                u_long * ipv6ScopeZoneIndex3_val_ptr);
+    int
+        ipv6ScopeZoneIndexAdminLocal_get(ipv6ScopeZoneIndexTable_rowreq_ctx
+                                         * rowreq_ctx,
+                                         u_long *
+                                         ipv6ScopeZoneIndexAdminLocal_val_ptr);
+    int
+        ipv6ScopeZoneIndexSiteLocal_get(ipv6ScopeZoneIndexTable_rowreq_ctx
+                                        * rowreq_ctx,
+                                        u_long *
+                                        ipv6ScopeZoneIndexSiteLocal_val_ptr);
+    int
+        ipv6ScopeZoneIndex6_get(ipv6ScopeZoneIndexTable_rowreq_ctx *
+                                rowreq_ctx,
+                                u_long * ipv6ScopeZoneIndex6_val_ptr);
+    int
+        ipv6ScopeZoneIndex7_get(ipv6ScopeZoneIndexTable_rowreq_ctx *
+                                rowreq_ctx,
+                                u_long * ipv6ScopeZoneIndex7_val_ptr);
+    int
+        ipv6ScopeZoneIndexOrganizationLocal_get
+        (ipv6ScopeZoneIndexTable_rowreq_ctx * rowreq_ctx,
+         u_long * ipv6ScopeZoneIndexOrganizationLocal_val_ptr);
+    int
+        ipv6ScopeZoneIndex9_get(ipv6ScopeZoneIndexTable_rowreq_ctx *
+                                rowreq_ctx,
+                                u_long * ipv6ScopeZoneIndex9_val_ptr);
+    int
+        ipv6ScopeZoneIndexA_get(ipv6ScopeZoneIndexTable_rowreq_ctx *
+                                rowreq_ctx,
+                                u_long * ipv6ScopeZoneIndexA_val_ptr);
+    int
+        ipv6ScopeZoneIndexB_get(ipv6ScopeZoneIndexTable_rowreq_ctx *
+                                rowreq_ctx,
+                                u_long * ipv6ScopeZoneIndexB_val_ptr);
+    int
+        ipv6ScopeZoneIndexC_get(ipv6ScopeZoneIndexTable_rowreq_ctx *
+                                rowreq_ctx,
+                                u_long * ipv6ScopeZoneIndexC_val_ptr);
+    int
+        ipv6ScopeZoneIndexD_get(ipv6ScopeZoneIndexTable_rowreq_ctx *
+                                rowreq_ctx,
+                                u_long * ipv6ScopeZoneIndexD_val_ptr);
+
+
+    int
+        ipv6ScopeZoneIndexTable_indexes_set_tbl_idx
+        (ipv6ScopeZoneIndexTable_mib_index * tbl_idx,
+         long ipv6ScopeZoneIndexIfIndex_val);
+    int
+        ipv6ScopeZoneIndexTable_indexes_set
+        (ipv6ScopeZoneIndexTable_rowreq_ctx * rowreq_ctx,
+         long ipv6ScopeZoneIndexIfIndex_val);
+
+    /*
+     * DUMMY markers, ignore
+     *
+     * TODO:099:x: *************************************************************
+     * TODO:199:x: *************************************************************
+     * TODO:299:x: *************************************************************
+     * TODO:399:x: *************************************************************
+     * TODO:499:x: *************************************************************
+     */
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPV6SCOPEZONEINDEXTABLE_H */
+/** @} */
diff --git a/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_data_access.c b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_data_access.c
new file mode 100644
index 0000000..0025dd3
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_data_access.c
@@ -0,0 +1,304 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $ 
+ *
+ * $Id:ipv6ScopeZoneIndexTable_data_access.c 14170 2007-04-29 00:12:32Z varun_c$
+ */
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "ipv6ScopeZoneIndexTable.h"
+
+
+#include "ipv6ScopeZoneIndexTable_data_access.h"
+
+/** @ingroup interface
+ * @addtogroup data_access data_access: Routines to access data
+ *
+ * These routines are used to locate the data used to satisfy
+ * requests.
+ * 
+ * @{
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipv6ScopeZoneIndexTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * IP-MIB::ipv6ScopeZoneIndexTable is subid 36 of ip.
+ * Its status is Current.
+ * OID: .1.3.6.1.2.1.4.36, length: 8
+ */
+
+/**
+ * initialization for ipv6ScopeZoneIndexTable data access
+ *
+ * This function is called during startup to allow you to
+ * allocate any resources you need for the data table.
+ *
+ * @param ipv6ScopeZoneIndexTable_reg
+ *        Pointer to ipv6ScopeZoneIndexTable_registration
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR   : unrecoverable error.
+ */
+int
+ipv6ScopeZoneIndexTable_init_data(ipv6ScopeZoneIndexTable_registration *
+                                  ipv6ScopeZoneIndexTable_reg)
+{
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_init_data", "called\n"));
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndexTable_init_data */
+
+/**
+ * container overview
+ *
+ */
+
+/**
+ * container initialization
+ *
+ * @param container_ptr_ptr A pointer to a container pointer. If you
+ *        create a custom container, use this parameter to return it
+ *        to the MFD helper. If set to NULL, the MFD helper will
+ *        allocate a container for you.
+ *
+ *  This function is called at startup to allow you to customize certain
+ *  aspects of the access method. For the most part, it is for advanced
+ *  users. The default code should suffice for most cases. If no custom
+ *  container is allocated, the MFD code will create one for your.
+ *
+ * @remark
+ *  This would also be a good place to do any initialization needed
+ *  for you data source. For example, opening a connection to another
+ *  process that will supply the data, opening a database, etc.
+ */
+void
+ipv6ScopeZoneIndexTable_container_init(netsnmp_container **
+                                       container_ptr_ptr,
+                                       netsnmp_cache * cache)
+{
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_container_init", "called\n"));
+
+    if (NULL == container_ptr_ptr) {
+        snmp_log(LOG_ERR,
+                 "bad container param to ipv6ScopeZoneIndexTable_container_init\n");
+        return;
+    }
+
+    /*
+     * For advanced users, you can use a custom container. If you
+     * do not create one, one will be created for you.
+     */
+    *container_ptr_ptr = NULL;
+    if (NULL == cache) {
+        snmp_log(LOG_ERR,
+                 "bad cache param to ipv6ScopeZoneIndexTable_container_init\n");
+        return;
+    }
+
+    /*
+     * TODO:345:A: Set up ipv6ScopeZoneIndexTable cache properties.
+     *
+     * Also for advanced users, you can set parameters for the
+     * cache. Do not change the magic pointer, as it is used
+     * by the MFD helper. To completely disable caching, set
+     * cache->enabled to 0.
+     */
+    cache->timeout = 60; /* seconds */
+
+
+}                               /* ipv6ScopeZoneIndexTable_container_init */
+
+/**
+ * container shutdown
+ *
+ * @param container_ptr A pointer to the container.
+ *
+ *  This function is called at shutdown to allow you to customize certain
+ *  aspects of the access method. For the most part, it is for advanced
+ *  users. The default code should suffice for most cases.
+ *
+ *  This function is called before ipv6ScopeZoneIndexTable_container_free().
+ *
+ * @remark
+ *  This would also be a good place to do any cleanup needed
+ *  for you data source. For example, closing a connection to another
+ *  process that supplied the data, closing a database, etc.
+ */
+void
+ipv6ScopeZoneIndexTable_container_shutdown(netsnmp_container *container_ptr)
+{
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_container_shutdown", "called\n"));
+
+    if (NULL == container_ptr) {
+        snmp_log(LOG_ERR,
+                 "bad params to ipv6ScopeZoneIndexTable_container_shutdown\n");
+        return;
+    }
+
+}                               /* ipv6ScopeZoneIndexTable_container_shutdown */
+
+/**
+ * check entry for update
+ *
+ */
+static void
+_snarf_zoneindex_entry(netsnmp_v6scopezone_entry *scopezone_entry,
+                       netsnmp_container *container)
+{
+    ipv6ScopeZoneIndexTable_rowreq_ctx *rowreq_ctx;
+
+    DEBUGTRACE;
+    netsnmp_assert(NULL != scopezone_entry);
+    netsnmp_assert(NULL != container);
+    rowreq_ctx = ipv6ScopeZoneIndexTable_allocate_rowreq_ctx(scopezone_entry,NULL);
+    if ((NULL != rowreq_ctx) &&
+         (MFD_SUCCESS == ipv6ScopeZoneIndexTable_indexes_set
+         (rowreq_ctx, rowreq_ctx->data->index))) {
+        CONTAINER_INSERT(container, rowreq_ctx);
+    } else {
+       if (rowreq_ctx) {
+            snmp_log(LOG_ERR, "error setting index while loading "
+                     "ipv6ScopeZoneIndexTable cache.\n");
+            ipv6ScopeZoneIndexTable_release_rowreq_ctx(rowreq_ctx);
+        } else
+            netsnmp_access_scopezone_entry_free(scopezone_entry);
+    }
+      
+}
+
+/**
+ * load initial data
+ *
+ * TODO:350:M: Implement ipv6ScopeZoneIndexTable data load
+ *
+ * @param container container to which items should be inserted
+ *
+ * @retval MFD_SUCCESS              : success.
+ * @retval MFD_RESOURCE_UNAVAILABLE : Can't access data source
+ * @retval MFD_ERROR                : other error.
+ *
+ *  This function is called to load the index(es) (and data, optionally)
+ *  for the every row in the data set.
+ *
+ * @remark
+ *  While loading the data, the only important thing is the indexes.
+ *  If access to your data is cheap/fast (e.g. you have a pointer to a
+ *  structure in memory), it would make sense to update the data here.
+ *  If, however, the accessing the data invovles more work (e.g. parsing
+ *  some other existing data, or peforming calculations to derive the data),
+ *  then you can limit yourself to setting the indexes and saving any
+ *  information you will need later. Then use the saved information in
+ *  ipv6ScopeZoneIndexTable_row_prep() for populating data.
+ *
+ * @note
+ *  If you need consistency between rows (like you want statistics
+ *  for each row to be from the same time frame), you should set all
+ *  data here.
+ *
+ */
+int
+ipv6ScopeZoneIndexTable_container_load(netsnmp_container * container)
+{
+
+    /*
+     * temporary storage for index values
+     */
+    /*
+     * ipv6ScopeZoneIndexIfIndex(1)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H
+     */
+    netsnmp_container *zoneindex = netsnmp_access_scopezone_container_load(NULL, 0);
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_container_load", "called\n"));
+
+    if (NULL == zoneindex) {
+        DEBUGMSGTL(("ipv6ScopeZoneIndexTable:container_load",
+                    "couldn't get scopezone iterator\n"));
+        return MFD_RESOURCE_UNAVAILABLE;
+    }
+    /*
+     * TODO:351:M: |-> Load/update data in the ipv6ScopeZoneIndexTable container.
+     * loop over your ipv6ScopeZoneIndexTable data, allocate a rowreq context,
+     * set the index(es) [and data, optionally] and insert into
+     * the container.
+     */
+
+     CONTAINER_FOR_EACH(zoneindex,
+                       (netsnmp_container_obj_func *) _snarf_zoneindex_entry,
+                        container);
+    /*
+     * free the container. we've either claimed each entry, or released it,
+     * so the access function doesn't need to clear the container.
+     */
+    netsnmp_access_scopezone_container_free(zoneindex,
+                                            0x0001);
+
+    DEBUGMSGT(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_container_load", "inserted %lu records\n", (unsigned long)CONTAINER_SIZE(container)));
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndexTable_container_load */
+
+/**
+ * container clean up
+ *
+ * @param container container with all current items
+ *
+ *  This optional callback is called prior to all
+ *  item's being removed from the container. If you
+ *  need to do any processing before that, do it here.
+ *
+ * @note
+ *  The MFD helper will take care of releasing all the row contexts.
+ *
+ */
+void
+ipv6ScopeZoneIndexTable_container_free(netsnmp_container * container)
+{
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_container_free", "called\n"));
+
+    /*
+     * TODO:380:M: Free ipv6ScopeZoneIndexTable container data.
+     */
+}                               /* ipv6ScopeZoneIndexTable_container_free */
+
+/**
+ * prepare row for processing.
+ *
+ *  When the agent has located the row for a request, this function is
+ *  called to prepare the row for processing. If you fully populated
+ *  the data context during the index setup phase, you may not need to
+ *  do anything.
+ *
+ * @param rowreq_ctx pointer to a context.
+ *
+ * @retval MFD_SUCCESS     : success.
+ * @retval MFD_ERROR       : other error.
+ */
+int
+ipv6ScopeZoneIndexTable_row_prep(ipv6ScopeZoneIndexTable_rowreq_ctx *
+                                 rowreq_ctx)
+{
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_row_prep", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:390:o: Prepare row for request.
+     * If populating row data was delayed, this is the place to
+     * fill in the row for this request.
+     */
+
+    return MFD_SUCCESS;
+}                               /* ipv6ScopeZoneIndexTable_row_prep */
+/** @} */
diff --git a/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_data_access.h b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_data_access.h
new file mode 100644
index 0000000..8f98e91
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_data_access.h
@@ -0,0 +1,70 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $
+ *
+ * $Id:ipv6ScopeZoneIndexTable_data_access.h 14170 2007-04-29 00:12:32Z varun_c$
+ */
+#ifndef IPV6SCOPEZONEINDEXTABLE_DATA_ACCESS_H
+#define IPV6SCOPEZONEINDEXTABLE_DATA_ACCESS_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+    /*
+     *********************************************************************
+     * function declarations
+     */
+
+    /*
+     *********************************************************************
+     * Table declarations
+     */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipv6ScopeZoneIndexTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+    /*
+     * IP-MIB::ipv6ScopeZoneIndexTable is subid 36 of ip.
+     * Its status is Current.
+     * OID: .1.3.6.1.2.1.4.36, length: 8
+     */
+
+
+    int            
+        ipv6ScopeZoneIndexTable_init_data
+        (ipv6ScopeZoneIndexTable_registration *
+         ipv6ScopeZoneIndexTable_reg);
+
+
+    void           
+        ipv6ScopeZoneIndexTable_container_init(netsnmp_container **
+                                               container_ptr_ptr,
+                                               netsnmp_cache *
+                                               cache);
+    void           
+        ipv6ScopeZoneIndexTable_container_shutdown(netsnmp_container *
+                                                   container_ptr);
+
+    int            
+        ipv6ScopeZoneIndexTable_container_load(netsnmp_container *
+                                               container);
+    void           
+        ipv6ScopeZoneIndexTable_container_free(netsnmp_container *
+                                               container);
+
+#define MAX_LINE_SIZE 256
+    int            
+        ipv6ScopeZoneIndexTable_row_prep(ipv6ScopeZoneIndexTable_rowreq_ctx
+                                         * rowreq_ctx);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPV6SCOPEZONEINDEXTABLE_DATA_ACCESS_H */
diff --git a/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_enums.h b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_enums.h
new file mode 100644
index 0000000..a79ec88
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_enums.h
@@ -0,0 +1,39 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : generic-table-enums.m2c 12526 2005-07-15 22:41:16Z rstory $
+ *
+ * $Id:ipv6ScopeZoneIndexTable_enums.h 14170 2007-04-29 00:12:32Z varun_c$
+ */
+#ifndef IPV6SCOPEZONEINDEXTABLE_ENUMS_H
+#define IPV6SCOPEZONEINDEXTABLE_ENUMS_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    /*
+     * NOTES on enums
+     * ==============
+     *
+     * Value Mapping
+     * -------------
+     * If the values for your data type don't exactly match the
+     * possible values defined by the mib, you should map them
+     * below. For example, a boolean flag (1/0) is usually represented
+     * as a TruthValue in a MIB, which maps to the values (1/2).
+     *
+     */
+/*************************************************************************
+ *************************************************************************
+ *
+ * enum definitions for table ipv6ScopeZoneIndexTable
+ *
+ *************************************************************************
+ *************************************************************************/
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPV6SCOPEZONEINDEXTABLE_ENUMS_H */
diff --git a/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c
new file mode 100644
index 0000000..ef2088b
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.c
@@ -0,0 +1,1154 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 15899 $ of $ 
+ *
+ * $Id:ipv6ScopeZoneIndexTable_interface.c 14170 2007-04-29 00:12:32Z varun_c$
+ */
+/*
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ * ***                                                               ***
+ * ***  NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE  ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THIS FILE DOES NOT CONTAIN ANY USER EDITABLE CODE.      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THE GENERATED CODE IS INTERNAL IMPLEMENTATION, AND      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***    IS SUBJECT TO CHANGE WITHOUT WARNING IN FUTURE RELEASES.   ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ */
+
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "ipv6ScopeZoneIndexTable.h"
+
+
+#include <net-snmp/agent/table_container.h>
+#include <net-snmp/library/container.h>
+
+#include "ipv6ScopeZoneIndexTable_interface.h"
+
+#include <ctype.h>
+
+netsnmp_feature_child_of(ipv6ScopeZoneIndexTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(table_container_row_insert)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(ipv6ScopeZoneIndexTable_container_size, ipv6ScopeZoneIndexTable_external_access)
+netsnmp_feature_child_of(ipv6ScopeZoneIndexTable_registration_set, ipv6ScopeZoneIndexTable_external_access)
+netsnmp_feature_child_of(ipv6ScopeZoneIndexTable_registration_get, ipv6ScopeZoneIndexTable_external_access)
+netsnmp_feature_child_of(ipv6ScopeZoneIndexTable_container_get, ipv6ScopeZoneIndexTable_external_access)
+
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table ipv6ScopeZoneIndexTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * IP-MIB::ipv6ScopeZoneIndexTable is subid 36 of ip.
+ * Its status is Current.
+ * OID: .1.3.6.1.2.1.4.36, length: 8
+ */
+typedef struct ipv6ScopeZoneIndexTable_interface_ctx_s {
+
+    netsnmp_container *container;
+    netsnmp_cache  *cache;
+    ipv6ScopeZoneIndexTable_registration *user_ctx;
+
+    netsnmp_table_registration_info tbl_info;
+
+    netsnmp_baby_steps_access_methods access_multiplexer;
+
+} ipv6ScopeZoneIndexTable_interface_ctx;
+
+static ipv6ScopeZoneIndexTable_interface_ctx
+    ipv6ScopeZoneIndexTable_if_ctx;
+
+static void    
+_ipv6ScopeZoneIndexTable_container_init
+(ipv6ScopeZoneIndexTable_interface_ctx * if_ctx);
+static void    
+_ipv6ScopeZoneIndexTable_container_shutdown
+(ipv6ScopeZoneIndexTable_interface_ctx * if_ctx);
+static int
+_cache_load(netsnmp_cache * cache, void *vmagic);
+static void
+_cache_free(netsnmp_cache * cache, void *magic);
+
+#ifndef NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_CONTAINER_GET
+netsnmp_container *
+ipv6ScopeZoneIndexTable_container_get(void)
+{
+    return ipv6ScopeZoneIndexTable_if_ctx.container;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_CONTAINER_GET */
+
+#ifndef NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_REGISTRATION_GET
+ipv6ScopeZoneIndexTable_registration *
+ipv6ScopeZoneIndexTable_registration_get(void)
+{
+    return ipv6ScopeZoneIndexTable_if_ctx.user_ctx;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_REGISTRATION_GET */
+
+#ifndef NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_REGISTRATION_SET
+ipv6ScopeZoneIndexTable_registration *
+ipv6ScopeZoneIndexTable_registration_set
+    (ipv6ScopeZoneIndexTable_registration * newreg)
+{
+    ipv6ScopeZoneIndexTable_registration *old =
+        ipv6ScopeZoneIndexTable_if_ctx.user_ctx;
+    ipv6ScopeZoneIndexTable_if_ctx.user_ctx = newreg;
+    return old;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_REGISTRATION_SET */
+
+#ifndef NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_CONTAINER_SIZE
+int
+ipv6ScopeZoneIndexTable_container_size(void)
+{
+    return CONTAINER_SIZE(ipv6ScopeZoneIndexTable_if_ctx.container);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_CONTAINER_SIZE */
+
+/*
+ * mfd multiplexer modes
+ */
+static Netsnmp_Node_Handler _mfd_ipv6ScopeZoneIndexTable_pre_request;
+static Netsnmp_Node_Handler _mfd_ipv6ScopeZoneIndexTable_post_request;
+static Netsnmp_Node_Handler _mfd_ipv6ScopeZoneIndexTable_object_lookup;
+static Netsnmp_Node_Handler _mfd_ipv6ScopeZoneIndexTable_get_values;
+/**
+ * @internal
+ * Initialize the table ipv6ScopeZoneIndexTable 
+ *    (Define its contents and how it's structured)
+ */
+void
+_ipv6ScopeZoneIndexTable_initialize_interface
+    (ipv6ScopeZoneIndexTable_registration * reg_ptr, u_long flags)
+{
+    netsnmp_baby_steps_access_methods *access_multiplexer =
+        &ipv6ScopeZoneIndexTable_if_ctx.access_multiplexer;
+    netsnmp_table_registration_info *tbl_info =
+        &ipv6ScopeZoneIndexTable_if_ctx.tbl_info;
+    netsnmp_handler_registration *reginfo;
+    netsnmp_mib_handler *handler;
+    int             mfd_modes = 0;
+
+    DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable:_ipv6ScopeZoneIndexTable_initialize_interface", "called\n"));
+
+
+    /*************************************************
+     *
+     * save interface context for ipv6ScopeZoneIndexTable
+     */
+    /*
+     * Setting up the table's definition
+     */
+    netsnmp_table_helper_add_indexes(tbl_info, ASN_INTEGER,
+                                               /** index: ipv6ScopeZoneIndexIfIndex */
+                                     0);
+
+    /*
+     * Define the minimum and maximum accessible columns.  This
+     * optimizes retrieval. 
+     */
+    tbl_info->min_column = IPV6SCOPEZONEINDEXTABLE_MIN_COL;
+    tbl_info->max_column = IPV6SCOPEZONEINDEXTABLE_MAX_COL;
+
+    /*
+     * save users context
+     */
+    ipv6ScopeZoneIndexTable_if_ctx.user_ctx = reg_ptr;
+
+    /*
+     * call data access initialization code
+     */
+    ipv6ScopeZoneIndexTable_init_data(reg_ptr);
+
+    /*
+     * set up the container
+     */
+    _ipv6ScopeZoneIndexTable_container_init
+        (&ipv6ScopeZoneIndexTable_if_ctx);
+    if (NULL == ipv6ScopeZoneIndexTable_if_ctx.container) {
+        snmp_log(LOG_ERR,
+                 "could not initialize container for ipv6ScopeZoneIndexTable\n");
+        return;
+    }
+
+    /*
+     * access_multiplexer: REQUIRED wrapper for get request handling
+     */
+    access_multiplexer->object_lookup =
+        _mfd_ipv6ScopeZoneIndexTable_object_lookup;
+    access_multiplexer->get_values =
+        _mfd_ipv6ScopeZoneIndexTable_get_values;
+
+    /*
+     * no wrappers yet
+     */
+    access_multiplexer->pre_request =
+        _mfd_ipv6ScopeZoneIndexTable_pre_request;
+    access_multiplexer->post_request =
+        _mfd_ipv6ScopeZoneIndexTable_post_request;
+
+
+    /*************************************************
+     *
+     * Create a registration, save our reg data, register table.
+     */
+    DEBUGMSGTL(("ipv6ScopeZoneIndexTable:init_ipv6ScopeZoneIndexTable",
+                "Registering ipv6ScopeZoneIndexTable as a mibs-for-dummies table.\n"));
+    handler =
+        netsnmp_baby_steps_access_multiplexer_get(access_multiplexer);
+    reginfo =
+        netsnmp_handler_registration_create("ipv6ScopeZoneIndexTable",
+                                            handler,
+                                            ipv6ScopeZoneIndexTable_oid,
+                                            ipv6ScopeZoneIndexTable_oid_size,
+                                            HANDLER_CAN_BABY_STEP |
+                                            HANDLER_CAN_RONLY);
+    if (NULL == reginfo) {
+        snmp_log(LOG_ERR,
+                 "error registering table ipv6ScopeZoneIndexTable\n");
+        return;
+    }
+    reginfo->my_reg_void = &ipv6ScopeZoneIndexTable_if_ctx;
+
+    /*************************************************
+     *
+     * set up baby steps handler, create it and inject it
+     */
+    if (access_multiplexer->object_lookup)
+        mfd_modes |= BABY_STEP_OBJECT_LOOKUP;
+
+    if (access_multiplexer->pre_request)
+        mfd_modes |= BABY_STEP_PRE_REQUEST;
+    if (access_multiplexer->post_request)
+        mfd_modes |= BABY_STEP_POST_REQUEST;
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+    if (access_multiplexer->set_values)
+        mfd_modes |= BABY_STEP_SET_VALUES;
+    if (access_multiplexer->irreversible_commit)
+        mfd_modes |= BABY_STEP_IRREVERSIBLE_COMMIT;
+    if (access_multiplexer->object_syntax_checks)
+        mfd_modes |= BABY_STEP_CHECK_OBJECT;
+
+    if (access_multiplexer->undo_setup)
+        mfd_modes |= BABY_STEP_UNDO_SETUP;
+    if (access_multiplexer->undo_cleanup)
+        mfd_modes |= BABY_STEP_UNDO_CLEANUP;
+    if (access_multiplexer->undo_sets)
+        mfd_modes |= BABY_STEP_UNDO_SETS;
+
+    if (access_multiplexer->row_creation)
+        mfd_modes |= BABY_STEP_ROW_CREATE;
+    if (access_multiplexer->consistency_checks)
+        mfd_modes |= BABY_STEP_CHECK_CONSISTENCY;
+    if (access_multiplexer->commit)
+        mfd_modes |= BABY_STEP_COMMIT;
+    if (access_multiplexer->undo_commit)
+        mfd_modes |= BABY_STEP_UNDO_COMMIT;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+    handler = netsnmp_baby_steps_handler_get(mfd_modes);
+    netsnmp_inject_handler(reginfo, handler);
+
+    /*************************************************
+     *
+     * inject row_merge helper with prefix rootoid_len + 2 (entry.col)
+     */
+    handler = netsnmp_get_row_merge_handler(reginfo->rootoid_len + 2);
+    netsnmp_inject_handler(reginfo, handler);
+
+    /*************************************************
+     *
+     * inject container_table helper
+     */
+    handler =
+        netsnmp_container_table_handler_get(tbl_info,
+                                            ipv6ScopeZoneIndexTable_if_ctx.
+                                            container,
+                                            TABLE_CONTAINER_KEY_NETSNMP_INDEX);
+    netsnmp_inject_handler(reginfo, handler);
+   
+    if (NULL != ipv6ScopeZoneIndexTable_if_ctx.cache) {
+        handler =
+            netsnmp_cache_handler_get(ipv6ScopeZoneIndexTable_if_ctx.cache);
+        netsnmp_inject_handler(reginfo, handler);
+    }
+
+    /*
+     * register table
+     */
+    netsnmp_register_table(reginfo, tbl_info);
+
+}                               /* _ipv6ScopeZoneIndexTable_initialize_interface */
+
+/**
+ * @internal
+ * Shutdown the table ipv6ScopeZoneIndexTable
+ */
+void
+_ipv6ScopeZoneIndexTable_shutdown_interface
+    (ipv6ScopeZoneIndexTable_registration * reg_ptr)
+{
+    /*
+     * shutdown the container
+     */
+    _ipv6ScopeZoneIndexTable_container_shutdown
+        (&ipv6ScopeZoneIndexTable_if_ctx);
+}
+
+void
+ipv6ScopeZoneIndexTable_valid_columns_set(netsnmp_column_info *vc)
+{
+    ipv6ScopeZoneIndexTable_if_ctx.tbl_info.valid_columns = vc;
+}                               /* ipv6ScopeZoneIndexTable_valid_columns_set */
+
+/**
+ * @internal
+ * convert the index component stored in the context to an oid
+ */
+int
+ipv6ScopeZoneIndexTable_index_to_oid(netsnmp_index * oid_idx,
+                                     ipv6ScopeZoneIndexTable_mib_index *
+                                     mib_idx)
+{
+    int             err = SNMP_ERR_NOERROR;
+
+    /*
+     * temp storage for parsing indexes
+     */
+    /*
+     * ipv6ScopeZoneIndexIfIndex(1)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H
+     */
+    netsnmp_variable_list var_ipv6ScopeZoneIndexIfIndex;
+
+    /*
+     * set up varbinds
+     */
+    memset(&var_ipv6ScopeZoneIndexIfIndex, 0x00,
+           sizeof(var_ipv6ScopeZoneIndexIfIndex));
+    var_ipv6ScopeZoneIndexIfIndex.type = ASN_INTEGER;
+
+    /*
+     * chain temp index varbinds together
+     */
+    var_ipv6ScopeZoneIndexIfIndex.next_variable = NULL;
+
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_index_to_oid", "called\n"));
+
+    /*
+     * ipv6ScopeZoneIndexIfIndex(1)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H 
+     */
+    snmp_set_var_value(&var_ipv6ScopeZoneIndexIfIndex,
+                       (u_char *) & mib_idx->ipv6ScopeZoneIndexIfIndex,
+                       sizeof(mib_idx->ipv6ScopeZoneIndexIfIndex));
+
+
+    err = build_oid_noalloc(oid_idx->oids, oid_idx->len, &oid_idx->len,
+                            NULL, 0, &var_ipv6ScopeZoneIndexIfIndex);
+    if (err)
+        snmp_log(LOG_ERR, "error %d converting index to oid\n", err);
+
+    /*
+     * parsing may have allocated memory. free it.
+     */
+    snmp_reset_var_buffers(&var_ipv6ScopeZoneIndexIfIndex);
+
+    return err;
+}                               /* ipv6ScopeZoneIndexTable_index_to_oid */
+
+/**
+ * extract ipv6ScopeZoneIndexTable indexes from a netsnmp_index
+ *
+ * @retval SNMP_ERR_NOERROR  : no error
+ * @retval SNMP_ERR_GENERR   : error
+ */
+int
+ipv6ScopeZoneIndexTable_index_from_oid(netsnmp_index * oid_idx,
+                                       ipv6ScopeZoneIndexTable_mib_index *
+                                       mib_idx)
+{
+    int             err = SNMP_ERR_NOERROR;
+
+    /*
+     * temp storage for parsing indexes
+     */
+    /*
+     * ipv6ScopeZoneIndexIfIndex(1)/InterfaceIndex/ASN_INTEGER/long(long)//l/a/w/e/R/d/H
+     */
+    netsnmp_variable_list var_ipv6ScopeZoneIndexIfIndex;
+
+    /*
+     * set up varbinds
+     */
+    memset(&var_ipv6ScopeZoneIndexIfIndex, 0x00,
+           sizeof(var_ipv6ScopeZoneIndexIfIndex));
+    var_ipv6ScopeZoneIndexIfIndex.type = ASN_INTEGER;
+
+    /*
+     * chain temp index varbinds together
+     */
+    var_ipv6ScopeZoneIndexIfIndex.next_variable = NULL;
+
+
+    DEBUGMSGTL(("verbose:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_index_from_oid", "called\n"));
+
+    /*
+     * parse the oid into the individual index components
+     */
+    err = parse_oid_indexes(oid_idx->oids, oid_idx->len,
+                            &var_ipv6ScopeZoneIndexIfIndex);
+    if (err == SNMP_ERR_NOERROR) {
+        /*
+         * copy out values
+         */
+        mib_idx->ipv6ScopeZoneIndexIfIndex =
+            *((long *) var_ipv6ScopeZoneIndexIfIndex.val.string);
+
+
+    }
+
+    /*
+     * parsing may have allocated memory. free it.
+     */
+    snmp_reset_var_buffers(&var_ipv6ScopeZoneIndexIfIndex);
+
+    return err;
+}                               /* ipv6ScopeZoneIndexTable_index_from_oid */
+
+
+/*
+ *********************************************************************
+ * @internal
+ * allocate resources for a ipv6ScopeZoneIndexTable_rowreq_ctx
+ */
+ipv6ScopeZoneIndexTable_rowreq_ctx *
+ipv6ScopeZoneIndexTable_allocate_rowreq_ctx(ipv6ScopeZoneIndexTable_data *data,
+                                             void *user_init_ctx)
+{
+    ipv6ScopeZoneIndexTable_rowreq_ctx *rowreq_ctx =
+        SNMP_MALLOC_TYPEDEF(ipv6ScopeZoneIndexTable_rowreq_ctx);
+    DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_allocate_rowreq_ctx", "called\n"));
+
+    if (NULL == rowreq_ctx) {
+        snmp_log(LOG_ERR, "Couldn't allocate memory for a "
+                 "ipv6ScopeZoneIndexTable_rowreq_ctx.\n");
+        return NULL;
+    } else {
+        if (NULL != data) {
+            /*
+             * track if we got data from user
+             */
+            rowreq_ctx->rowreq_flags |= MFD_ROW_DATA_FROM_USER;
+            rowreq_ctx->data = data;
+        } else if (NULL ==
+                   (rowreq_ctx->data =
+                    ipv6ScopeZoneIndexTable_allocate_data())) {
+            SNMP_FREE(rowreq_ctx);
+            return NULL;
+        }
+    }
+
+
+    rowreq_ctx->oid_idx.oids = rowreq_ctx->oid_tmp;
+
+    rowreq_ctx->ipv6ScopeZoneIndexTable_data_list = NULL;
+
+    /*
+     * if we allocated data, call init routine
+     */
+    if (!(rowreq_ctx->rowreq_flags & MFD_ROW_DATA_FROM_USER)) {
+        if (SNMPERR_SUCCESS !=
+            ipv6ScopeZoneIndexTable_rowreq_ctx_init(rowreq_ctx,
+                                                    user_init_ctx)) {
+            ipv6ScopeZoneIndexTable_release_rowreq_ctx(rowreq_ctx);
+            rowreq_ctx = NULL;
+        }
+    }
+
+    return rowreq_ctx;
+}                               /* ipv6ScopeZoneIndexTable_allocate_rowreq_ctx */
+
+/*
+ * @internal
+ * release resources for a ipv6ScopeZoneIndexTable_rowreq_ctx
+ */
+void
+ipv6ScopeZoneIndexTable_release_rowreq_ctx
+    (ipv6ScopeZoneIndexTable_rowreq_ctx * rowreq_ctx)
+{
+    DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable:ipv6ScopeZoneIndexTable_release_rowreq_ctx", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    ipv6ScopeZoneIndexTable_rowreq_ctx_cleanup(rowreq_ctx);
+    /*
+     * for non-transient data, don't free data we got from the user
+     */
+    if ((rowreq_ctx->data) &&
+        !(rowreq_ctx->rowreq_flags & MFD_ROW_DATA_FROM_USER))
+        ipv6ScopeZoneIndexTable_release_data(rowreq_ctx->data);
+
+
+    /*
+     * free index oid pointer
+     */
+    if (rowreq_ctx->oid_idx.oids != rowreq_ctx->oid_tmp)
+        free(rowreq_ctx->oid_idx.oids);
+
+    SNMP_FREE(rowreq_ctx);
+}                               /* ipv6ScopeZoneIndexTable_release_rowreq_ctx */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_ipv6ScopeZoneIndexTable_pre_request(netsnmp_mib_handler *handler,
+                                         netsnmp_handler_registration
+                                         *reginfo,
+                                         netsnmp_agent_request_info
+                                         *agtreq_info,
+                                         netsnmp_request_info *requests)
+{
+    int             rc;
+
+    DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable:_mfd_ipv6ScopeZoneIndexTable_pre_request", "called\n"));
+
+    if (1 != netsnmp_row_merge_status_first(reginfo, agtreq_info)) {
+        DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable",
+                    "skipping additional pre_request\n"));
+        return SNMP_ERR_NOERROR;
+    }
+
+    rc = ipv6ScopeZoneIndexTable_pre_request
+        (ipv6ScopeZoneIndexTable_if_ctx.user_ctx);
+    if (MFD_SUCCESS != rc) {
+        /*
+         * nothing we can do about it but log it
+         */
+        DEBUGMSGTL(("ipv6ScopeZoneIndexTable", "error %d from "
+                    "ipv6ScopeZoneIndexTable_pre_request\n", rc));
+        netsnmp_request_set_error_all(requests, SNMP_VALIDATE_ERR(rc));
+    }
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_ipv6ScopeZoneIndexTable_pre_request */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_ipv6ScopeZoneIndexTable_post_request(netsnmp_mib_handler *handler,
+                                          netsnmp_handler_registration
+                                          *reginfo,
+                                          netsnmp_agent_request_info
+                                          *agtreq_info,
+                                          netsnmp_request_info *requests)
+{
+    ipv6ScopeZoneIndexTable_rowreq_ctx *rowreq_ctx = (ipv6ScopeZoneIndexTable_rowreq_ctx*)
+        netsnmp_container_table_row_extract(requests);
+    int             rc, packet_rc;
+
+    DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable:_mfd_ipv6ScopeZoneIndexTable_post_request", "called\n"));
+
+    /*
+     * release row context, if deleted
+     */
+    if (rowreq_ctx && (rowreq_ctx->rowreq_flags & MFD_ROW_DELETED))
+        ipv6ScopeZoneIndexTable_release_rowreq_ctx(rowreq_ctx);
+
+    /*
+     * wait for last call before calling user
+     */
+    if (1 != netsnmp_row_merge_status_last(reginfo, agtreq_info)) {
+        DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable",
+                    "waiting for last post_request\n"));
+        return SNMP_ERR_NOERROR;
+    }
+
+    packet_rc = netsnmp_check_all_requests_error(agtreq_info->asp, 0);
+    rc = ipv6ScopeZoneIndexTable_post_request
+        (ipv6ScopeZoneIndexTable_if_ctx.user_ctx, packet_rc);
+    if (MFD_SUCCESS != rc) {
+        /*
+         * nothing we can do about it but log it
+         */
+        DEBUGMSGTL(("ipv6ScopeZoneIndexTable", "error %d from "
+                    "ipv6ScopeZoneIndexTable_post_request\n", rc));
+    }
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_ipv6ScopeZoneIndexTable_post_request */
+
+/**
+ * @internal
+ * wrapper
+ */
+static ipv6ScopeZoneIndexTable_rowreq_ctx *
+_mfd_ipv6ScopeZoneIndexTable_rowreq_from_index(netsnmp_index * oid_idx,
+                                           int *rc_ptr)
+{
+    ipv6ScopeZoneIndexTable_rowreq_ctx *rowreq_ctx;
+    ipv6ScopeZoneIndexTable_mib_index mib_idx;
+    int             rc;
+
+    DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable:_mfd_ipv6ScopeZoneIndexTable_rowreq_from_index", "called\n"));
+
+    if (NULL == rc_ptr)
+        rc_ptr = &rc;
+    *rc_ptr = MFD_SUCCESS;
+
+    memset(&mib_idx, 0x0, sizeof(mib_idx));
+
+    /*
+     * try to parse oid
+     */
+    *rc_ptr = ipv6ScopeZoneIndexTable_index_from_oid(oid_idx, &mib_idx);
+    if (MFD_SUCCESS != *rc_ptr) {
+        DEBUGMSGT(("ipv6ScopeZoneIndexTable", "error parsing index\n"));
+        return NULL;
+    }
+
+    /*
+     * allocate new context
+     */
+    rowreq_ctx = ipv6ScopeZoneIndexTable_allocate_rowreq_ctx(NULL, NULL);
+    if (NULL == rowreq_ctx) {
+        *rc_ptr = MFD_ERROR;
+        return NULL;            /* msg already logged */
+    }
+
+    memcpy(&rowreq_ctx->tbl_idx, &mib_idx, sizeof(mib_idx));
+
+
+    /*
+     * copy indexes
+     */
+    rowreq_ctx->oid_idx.len = oid_idx->len;
+    memcpy(rowreq_ctx->oid_idx.oids, oid_idx->oids,
+           oid_idx->len * sizeof(oid));
+
+    return rowreq_ctx;
+}                               /* _mfd_ipv6ScopeZoneIndexTable_rowreq_from_index */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_ipv6ScopeZoneIndexTable_object_lookup(netsnmp_mib_handler *handler,
+                                           netsnmp_handler_registration
+                                           *reginfo,
+                                           netsnmp_agent_request_info
+                                           *agtreq_info,
+                                           netsnmp_request_info *requests)
+{
+    int             rc = SNMP_ERR_NOERROR;
+    ipv6ScopeZoneIndexTable_rowreq_ctx *rowreq_ctx = (ipv6ScopeZoneIndexTable_rowreq_ctx*)
+        netsnmp_container_table_row_extract(requests);
+
+    DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable:_mfd_ipv6ScopeZoneIndexTable_object_lookup", "called\n"));
+
+    /*
+     * get our context from mfd
+     * ipv6ScopeZoneIndexTable_interface_ctx *if_ctx =
+     *             (ipv6ScopeZoneIndexTable_interface_ctx *)reginfo->my_reg_void;
+     */
+
+    if (NULL == rowreq_ctx) {
+        netsnmp_table_request_info *tblreq_info;
+        netsnmp_index   oid_idx;
+
+        tblreq_info = netsnmp_extract_table_info(requests);
+        if (NULL == tblreq_info) {
+            snmp_log(LOG_ERR, "request had no table info\n");
+            return MFD_ERROR;
+        }
+
+        /*
+         * try create rowreq
+         */
+        oid_idx.oids = tblreq_info->index_oid;
+        oid_idx.len = tblreq_info->index_oid_len;
+
+        rowreq_ctx =
+            _mfd_ipv6ScopeZoneIndexTable_rowreq_from_index(&oid_idx, &rc);
+        if (MFD_SUCCESS == rc) {
+            netsnmp_assert(NULL != rowreq_ctx);
+            rowreq_ctx->rowreq_flags |= MFD_ROW_CREATED;
+            /*
+             * add rowreq_ctx to request data lists
+             */
+            netsnmp_container_table_row_insert(requests, (netsnmp_index *)
+                                               rowreq_ctx);
+        }
+
+    }
+
+    if (MFD_SUCCESS != rc)
+        netsnmp_request_set_error_all(requests, rc);
+    else
+        ipv6ScopeZoneIndexTable_row_prep(rowreq_ctx);
+
+    return SNMP_VALIDATE_ERR(rc);
+}                               /* _mfd_ipv6ScopeZoneIndexTable_object_lookup */
+
+/***********************************************************************
+ *
+ * GET processing
+ *
+ ***********************************************************************/
+/*
+ * @internal
+ * Retrieve the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_ipv6ScopeZoneIndexTable_get_column(ipv6ScopeZoneIndexTable_rowreq_ctx *
+                                    rowreq_ctx,
+                                    netsnmp_variable_list * var,
+                                    int column)
+{
+    int             rc = SNMPERR_SUCCESS;
+
+    DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable:_mfd_ipv6ScopeZoneIndexTable_get_column", "called for %d\n", column));
+
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    switch (column) {
+
+        /*
+         * ipv6ScopeZoneIndexLinkLocal(2)/InetZoneIndex/ASN_UNSIGNED/u_long(u_long)//l/A/w/e/r/d/H 
+         */
+    case COLUMN_IPV6SCOPEZONEINDEXLINKLOCAL:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_UNSIGNED;
+        rc = ipv6ScopeZoneIndexLinkLocal_get(rowreq_ctx,
+                                             (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipv6ScopeZoneIndex3(3)/InetZoneIndex/ASN_UNSIGNED/u_long(u_long)//l/A/w/e/r/d/H 
+         */
+    case COLUMN_IPV6SCOPEZONEINDEX3:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_UNSIGNED;
+        rc = ipv6ScopeZoneIndex3_get(rowreq_ctx,
+                                     (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipv6ScopeZoneIndexAdminLocal(4)/InetZoneIndex/ASN_UNSIGNED/u_long(u_long)//l/A/w/e/r/d/H 
+         */
+    case COLUMN_IPV6SCOPEZONEINDEXADMINLOCAL:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_UNSIGNED;
+        rc = ipv6ScopeZoneIndexAdminLocal_get(rowreq_ctx,
+                                              (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipv6ScopeZoneIndexSiteLocal(5)/InetZoneIndex/ASN_UNSIGNED/u_long(u_long)//l/A/w/e/r/d/H 
+         */
+    case COLUMN_IPV6SCOPEZONEINDEXSITELOCAL:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_UNSIGNED;
+        rc = ipv6ScopeZoneIndexSiteLocal_get(rowreq_ctx,
+                                             (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipv6ScopeZoneIndex6(6)/InetZoneIndex/ASN_UNSIGNED/u_long(u_long)//l/A/w/e/r/d/H 
+         */
+    case COLUMN_IPV6SCOPEZONEINDEX6:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_UNSIGNED;
+        rc = ipv6ScopeZoneIndex6_get(rowreq_ctx,
+                                     (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipv6ScopeZoneIndex7(7)/InetZoneIndex/ASN_UNSIGNED/u_long(u_long)//l/A/w/e/r/d/H 
+         */
+    case COLUMN_IPV6SCOPEZONEINDEX7:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_UNSIGNED;
+        rc = ipv6ScopeZoneIndex7_get(rowreq_ctx,
+                                     (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipv6ScopeZoneIndexOrganizationLocal(8)/InetZoneIndex/ASN_UNSIGNED/u_long(u_long)//l/A/w/e/r/d/H 
+         */
+    case COLUMN_IPV6SCOPEZONEINDEXORGANIZATIONLOCAL:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_UNSIGNED;
+        rc = ipv6ScopeZoneIndexOrganizationLocal_get(rowreq_ctx,
+                                                     (u_long *) var->val.
+                                                     string);
+        break;
+
+        /*
+         * ipv6ScopeZoneIndex9(9)/InetZoneIndex/ASN_UNSIGNED/u_long(u_long)//l/A/w/e/r/d/H 
+         */
+    case COLUMN_IPV6SCOPEZONEINDEX9:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_UNSIGNED;
+        rc = ipv6ScopeZoneIndex9_get(rowreq_ctx,
+                                     (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipv6ScopeZoneIndexA(10)/InetZoneIndex/ASN_UNSIGNED/u_long(u_long)//l/A/w/e/r/d/H 
+         */
+    case COLUMN_IPV6SCOPEZONEINDEXA:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_UNSIGNED;
+        rc = ipv6ScopeZoneIndexA_get(rowreq_ctx,
+                                     (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipv6ScopeZoneIndexB(11)/InetZoneIndex/ASN_UNSIGNED/u_long(u_long)//l/A/w/e/r/d/H 
+         */
+    case COLUMN_IPV6SCOPEZONEINDEXB:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_UNSIGNED;
+        rc = ipv6ScopeZoneIndexB_get(rowreq_ctx,
+                                     (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipv6ScopeZoneIndexC(12)/InetZoneIndex/ASN_UNSIGNED/u_long(u_long)//l/A/w/e/r/d/H 
+         */
+    case COLUMN_IPV6SCOPEZONEINDEXC:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_UNSIGNED;
+        rc = ipv6ScopeZoneIndexC_get(rowreq_ctx,
+                                     (u_long *) var->val.string);
+        break;
+
+        /*
+         * ipv6ScopeZoneIndexD(13)/InetZoneIndex/ASN_UNSIGNED/u_long(u_long)//l/A/w/e/r/d/H 
+         */
+    case COLUMN_IPV6SCOPEZONEINDEXD:
+        var->val_len = sizeof(u_long);
+        var->type = ASN_UNSIGNED;
+        rc = ipv6ScopeZoneIndexD_get(rowreq_ctx,
+                                     (u_long *) var->val.string);
+        break;
+
+    default:
+        if (IPV6SCOPEZONEINDEXTABLE_MIN_COL <= column
+            && column <= IPV6SCOPEZONEINDEXTABLE_MAX_COL) {
+            DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable:_mfd_ipv6ScopeZoneIndexTable_get_column", "assume column %d is reserved\n", column));
+            rc = MFD_SKIP;
+        } else {
+            snmp_log(LOG_ERR,
+                     "unknown column %d in _ipv6ScopeZoneIndexTable_get_column\n",
+                     column);
+        }
+        break;
+    }
+
+    return rc;
+}                               /* _ipv6ScopeZoneIndexTable_get_column */
+
+int
+_mfd_ipv6ScopeZoneIndexTable_get_values(netsnmp_mib_handler *handler,
+                                        netsnmp_handler_registration
+                                        *reginfo,
+                                        netsnmp_agent_request_info
+                                        *agtreq_info,
+                                        netsnmp_request_info *requests)
+{
+    ipv6ScopeZoneIndexTable_rowreq_ctx *rowreq_ctx = (ipv6ScopeZoneIndexTable_rowreq_ctx*)
+        netsnmp_container_table_row_extract(requests);
+    netsnmp_table_request_info *tri;
+    u_char         *old_string;
+    void            (*dataFreeHook) (void *);
+    int             rc;
+
+    DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable:_mfd_ipv6ScopeZoneIndexTable_get_values", "called\n"));
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    for (; requests; requests = requests->next) {
+        /*
+         * save old pointer, so we can free it if replaced
+         */
+        old_string = requests->requestvb->val.string;
+        dataFreeHook = requests->requestvb->dataFreeHook;
+        if (NULL == requests->requestvb->val.string) {
+            requests->requestvb->val.string = requests->requestvb->buf;
+            requests->requestvb->val_len =
+                sizeof(requests->requestvb->buf);
+        } else if (requests->requestvb->buf ==
+                   requests->requestvb->val.string) {
+            if (requests->requestvb->val_len !=
+                sizeof(requests->requestvb->buf))
+                requests->requestvb->val_len =
+                    sizeof(requests->requestvb->buf);
+        }
+
+        /*
+         * get column data
+         */
+        tri = netsnmp_extract_table_info(requests);
+        if (NULL == tri)
+            continue;
+
+        rc = _ipv6ScopeZoneIndexTable_get_column(rowreq_ctx,
+                                                 requests->requestvb,
+                                                 tri->colnum);
+        if (rc) {
+            if (MFD_SKIP == rc) {
+                requests->requestvb->type = SNMP_NOSUCHINSTANCE;
+                rc = SNMP_ERR_NOERROR;
+            }
+        } else if (NULL == requests->requestvb->val.string) {
+            snmp_log(LOG_ERR, "NULL varbind data pointer!\n");
+            rc = SNMP_ERR_GENERR;
+        }
+        if (rc)
+            netsnmp_request_set_error(requests, SNMP_VALIDATE_ERR(rc));
+
+        /*
+         * if the buffer wasn't used previously for the old data (i.e. it
+         * was allcoated memory)  and the get routine replaced the pointer,
+         * we need to free the previous pointer.
+         */
+        if (old_string && (old_string != requests->requestvb->buf) &&
+            (requests->requestvb->val.string != old_string)) {
+            if (dataFreeHook)
+                (*dataFreeHook) (old_string);
+            else
+                free(old_string);
+        }
+    }                           /* for results */
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_ipv6ScopeZoneIndexTable_get_values */
+
+
+/***********************************************************************
+ *
+ * SET processing
+ *
+ ***********************************************************************/
+
+/*
+ * SET PROCESSING NOT APPLICABLE (per MIB or user setting)
+ */
+/***********************************************************************
+ *
+ * DATA ACCESS
+ *
+ ***********************************************************************/
+/**
+ * @internal
+ */
+static void
+_container_item_free(ipv6ScopeZoneIndexTable_rowreq_ctx * rowreq_ctx,
+                     void *context)
+{
+    DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable:_container_item_free",
+                "called\n"));
+
+    if (NULL == rowreq_ctx)
+        return;
+
+    ipv6ScopeZoneIndexTable_release_rowreq_ctx(rowreq_ctx);
+}                               /* _container_item_free */
+
+/**
+ * @internal
+ */
+static void
+_container_free(netsnmp_container * container)
+{
+    DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable:_container_free",
+                "called\n"));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR,
+                 "invalid container in ipv6ScopeZoneIndexTable_container_free\n");
+        return;
+    }
+
+    /*
+     * call user code
+     */
+    ipv6ScopeZoneIndexTable_container_free(container);
+
+    /*
+     * free all items. inefficient, but easy.
+     */
+    CONTAINER_CLEAR(container,
+                    (netsnmp_container_obj_func *) _container_item_free,
+                    NULL);
+}                               /* _container_free */
+
+/**
+ * @internal
+ * initialize the container with functions or wrappers
+ */
+void
+_ipv6ScopeZoneIndexTable_container_init
+    (ipv6ScopeZoneIndexTable_interface_ctx * if_ctx)
+{
+    DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable:_ipv6ScopeZoneIndexTable_container_init", "called\n"));
+
+    /*
+     * container init
+     */
+    if_ctx->cache = netsnmp_cache_create(30,    /* timeout in seconds */
+                                         _cache_load, _cache_free,
+                                         ipv6ScopeZoneIndexTable_oid,
+                                         ipv6ScopeZoneIndexTable_oid_size);
+
+    if (NULL == if_ctx->cache) {
+        snmp_log(LOG_ERR, "error creating cache for ipScopeZoneIndexTable\n");
+        return;
+    }
+
+    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_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");
+        return;
+    }
+    if (NULL != if_ctx->cache)
+        if_ctx->cache->magic = (void *) if_ctx->container;
+
+
+}                               /* _ipv6ScopeZoneIndexTable_container_init */
+
+/**
+ * @internal
+ * shutdown the container with functions or wrappers
+ */
+void
+_ipv6ScopeZoneIndexTable_container_shutdown
+    (ipv6ScopeZoneIndexTable_interface_ctx * if_ctx)
+{
+    DEBUGMSGTL(("internal:ipv6ScopeZoneIndexTable:_ipv6ScopeZoneIndexTable_container_shutdown", "called\n"));
+
+    ipv6ScopeZoneIndexTable_container_shutdown(if_ctx->container);
+
+    _container_free(if_ctx->container);
+
+}                               /* _ipv6ScopeZoneIndexTable_container_shutdown */
+
+
+#ifndef NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_EXTERNAL_ACCESS
+ipv6ScopeZoneIndexTable_rowreq_ctx *
+ipv6ScopeZoneIndexTable_row_find_by_mib_index
+    (ipv6ScopeZoneIndexTable_mib_index * mib_idx)
+{
+    ipv6ScopeZoneIndexTable_rowreq_ctx *rowreq_ctx;
+    oid             oid_tmp[MAX_OID_LEN];
+    netsnmp_index   oid_idx;
+    int             rc;
+
+    /*
+     * set up storage for OID
+     */
+    oid_idx.oids = oid_tmp;
+    oid_idx.len = sizeof(oid_tmp) / sizeof(oid);
+
+    /*
+     * convert
+     */
+    rc = ipv6ScopeZoneIndexTable_index_to_oid(&oid_idx, mib_idx);
+    if (MFD_SUCCESS != rc)
+        return NULL;
+
+    rowreq_ctx = (ipv6ScopeZoneIndexTable_rowreq_ctx*)
+        CONTAINER_FIND(ipv6ScopeZoneIndexTable_if_ctx.container, &oid_idx);
+
+    return rowreq_ctx;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_IPV6SCOPEZONEINDEXTABLE_EXTERNAL_ACCESS */
+
+static int
+_cache_load(netsnmp_cache * cache, void *vmagic)
+{
+    DEBUGMSGTL(("internal:ipScopeZoneIndexTable:_cache_load", "called\n"));
+
+    if ((NULL == cache) || (NULL == cache->magic)) {
+        snmp_log(LOG_ERR,
+                 "invalid cache for ipScopeZoneIndexTable_cache_load\n");
+        return -1;
+    }
+    /** should only be called for an invalid or expired cache */
+    netsnmp_assert((0 == cache->valid) || (1 == cache->expired));
+
+    /*
+     * call user code
+     */
+    return ipv6ScopeZoneIndexTable_container_load((netsnmp_container *) cache->
+                                             magic);
+}                               /* _cache_load */
+
+/**
+ * @internal
+ */
+static void
+_cache_free(netsnmp_cache * cache, void *magic)
+{
+    netsnmp_container *container;
+
+    DEBUGMSGTL(("internal:ipScopeZoneIndexTable:_cache_free", "called\n"));
+
+    if ((NULL == cache) || (NULL == cache->magic)) {
+        snmp_log(LOG_ERR,
+                 "invalid cache in ipScopeZoneIndexTable_cache_free\n");
+        return;
+    }
+
+    container = (netsnmp_container *) cache->magic;
+
+    _container_free(container);
+}                               /* _cache_free */
+
diff --git a/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.h b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.h
new file mode 100644
index 0000000..7fc3109
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_interface.h
@@ -0,0 +1,98 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 15899 $ of $
+ *
+ * $Id:ipv6ScopeZoneIndexTable_interface.h 14170 2007-04-29 00:12:32Z varun_c$
+ */
+/** @ingroup interface: Routines to interface to Net-SNMP
+ *
+ * \warning This code should not be modified, called directly,
+ *          or used to interpret functionality. It is subject to
+ *          change at any time.
+ * 
+ * @{
+ */
+/*
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ * ***                                                               ***
+ * ***  NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE  ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THIS FILE DOES NOT CONTAIN ANY USER EDITABLE CODE.      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THE GENERATED CODE IS INTERNAL IMPLEMENTATION, AND      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***    IS SUBJECT TO CHANGE WITHOUT WARNING IN FUTURE RELEASES.   ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ */
+#ifndef IPV6SCOPEZONEINDEXTABLE_INTERFACE_H
+#define IPV6SCOPEZONEINDEXTABLE_INTERFACE_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+#include "ipv6ScopeZoneIndexTable.h"
+
+
+    /*
+     ********************************************************************
+     * Table declarations
+     */
+
+    /*
+     * PUBLIC interface initialization routine 
+     */
+    void           
+        _ipv6ScopeZoneIndexTable_initialize_interface
+        (ipv6ScopeZoneIndexTable_registration * user_ctx, u_long flags);
+    void           
+        _ipv6ScopeZoneIndexTable_shutdown_interface
+        (ipv6ScopeZoneIndexTable_registration * user_ctx);
+
+    ipv6ScopeZoneIndexTable_registration
+        *ipv6ScopeZoneIndexTable_registration_get(void);
+
+    ipv6ScopeZoneIndexTable_registration
+        *ipv6ScopeZoneIndexTable_registration_set
+        (ipv6ScopeZoneIndexTable_registration * newreg);
+
+    netsnmp_container *ipv6ScopeZoneIndexTable_container_get(void);
+    int             ipv6ScopeZoneIndexTable_container_size(void);
+
+    ipv6ScopeZoneIndexTable_rowreq_ctx
+        *ipv6ScopeZoneIndexTable_allocate_rowreq_ctx(ipv6ScopeZoneIndexTable_data *, void *);
+    void           
+        ipv6ScopeZoneIndexTable_release_rowreq_ctx
+        (ipv6ScopeZoneIndexTable_rowreq_ctx * rowreq_ctx);
+
+    int             ipv6ScopeZoneIndexTable_index_to_oid(netsnmp_index *
+                                                         oid_idx,
+                                                         ipv6ScopeZoneIndexTable_mib_index
+                                                         * mib_idx);
+    int             ipv6ScopeZoneIndexTable_index_from_oid(netsnmp_index *
+                                                           oid_idx,
+                                                           ipv6ScopeZoneIndexTable_mib_index
+                                                           * mib_idx);
+
+    /*
+     * access to certain internals. use with caution!
+     */
+    void           
+        ipv6ScopeZoneIndexTable_valid_columns_set(netsnmp_column_info *vc);
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPV6SCOPEZONEINDEXTABLE_INTERFACE_H */
+/** @} */
diff --git a/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_oids.h b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_oids.h
new file mode 100644
index 0000000..134daa2
--- /dev/null
+++ b/agent/mibgroup/ip-mib/ipv6ScopeZoneIndexTable/ipv6ScopeZoneIndexTable_oids.h
@@ -0,0 +1,55 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : generic-table-oids.m2c 12855 2005-09-27 15:56:08Z rstory $
+ *
+ * $Id:ipv6ScopeZoneIndexTable_oids.h 14170 2007-04-29 00:12:32Z varun_c$
+ */
+#ifndef IPV6SCOPEZONEINDEXTABLE_OIDS_H
+#define IPV6SCOPEZONEINDEXTABLE_OIDS_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+    /*
+     * column number definitions for table ipv6ScopeZoneIndexTable 
+     */
+#define IPV6SCOPEZONEINDEXTABLE_OID              1,3,6,1,2,1,4,36
+
+#define COLUMN_IPV6SCOPEZONEINDEXIFINDEX         1
+
+#define COLUMN_IPV6SCOPEZONEINDEXLINKLOCAL         2
+
+#define COLUMN_IPV6SCOPEZONEINDEX3         3
+
+#define COLUMN_IPV6SCOPEZONEINDEXADMINLOCAL         4
+
+#define COLUMN_IPV6SCOPEZONEINDEXSITELOCAL         5
+
+#define COLUMN_IPV6SCOPEZONEINDEX6         6
+
+#define COLUMN_IPV6SCOPEZONEINDEX7         7
+
+#define COLUMN_IPV6SCOPEZONEINDEXORGANIZATIONLOCAL         8
+
+#define COLUMN_IPV6SCOPEZONEINDEX9         9
+
+#define COLUMN_IPV6SCOPEZONEINDEXA         10
+
+#define COLUMN_IPV6SCOPEZONEINDEXB         11
+
+#define COLUMN_IPV6SCOPEZONEINDEXC         12
+
+#define COLUMN_IPV6SCOPEZONEINDEXD         13
+
+
+#define IPV6SCOPEZONEINDEXTABLE_MIN_COL   COLUMN_IPV6SCOPEZONEINDEXLINKLOCAL
+#define IPV6SCOPEZONEINDEXTABLE_MAX_COL   COLUMN_IPV6SCOPEZONEINDEXD
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* IPV6SCOPEZONEINDEXTABLE_OIDS_H */
diff --git a/agent/mibgroup/kernel_sunos5.c b/agent/mibgroup/kernel_sunos5.c
index 6a3b812..331ee6d 100644
--- a/agent/mibgroup/kernel_sunos5.c
+++ b/agent/mibgroup/kernel_sunos5.c
@@ -45,6 +45,7 @@
 #include <kstat.h>
 #include <errno.h>
 #include <time.h>
+#include <ctype.h>
 
 #include <sys/sockio.h>
 #include <sys/socket.h>
@@ -103,12 +104,29 @@
     {MIB_TRANSMISSION, 0, (void *) -1, 0, 0, 0, 0},
     {MIB_SNMP, 0, (void *) -1, 0, 0, 0, 0},
 #ifdef SOLARIS_HAVE_IPV6_MIB_SUPPORT
+#ifdef SOLARIS_HAVE_RFC4293_SUPPORT
+    {MIB_IP_TRAFFIC_STATS, 20 * sizeof(mib2_ipIfStatsEntry_t), (void *)-1, 0,
+     30, 0, 0},
+    {MIB_IP6, 20 * sizeof(mib2_ipIfStatsEntry_t), (void *)-1, 0, 30, 0, 0},
+#else
+    {MIB_IP6, 20 * sizeof(mib2_ipv6IfStatsEntry_t), (void *)-1, 0, 30, 0, 0},
+#endif
     {MIB_IP6_ADDR, 20 * sizeof(mib2_ipv6AddrEntry_t), (void *)-1, 0, 30, 0, 0},
+    {MIB_IP6_ROUTE, 200 * sizeof(mib2_ipv6AddrEntry_t), (void *)-1, 0, 30, 0, 0},
+    {MIB_ICMP6, 20 * sizeof(mib2_ipv6IfIcmpEntry_t), (void *)-1, 0, 30, 0, 0},
     {MIB_TCP6_CONN, 1000 * sizeof(mib2_tcp6ConnEntry_t), (void *) -1, 0, 30,
      0, 0},
     {MIB_UDP6_ENDPOINT, 1000 * sizeof(mib2_udp6Entry_t), (void *) -1, 0, 30,
      0, 0},
 #endif
+#ifdef MIB2_SCTP
+    {MIB_SCTP, sizeof(mib2_sctp_t), (void *)-1, 0, 60, 0, 0},
+    {MIB_SCTP_CONN, sizeof(mib2_sctpConnEntry_t), (void *)-1, 0, 60, 0, 0},
+    {MIB_SCTP_CONN_LOCAL, sizeof(mib2_sctpConnLocalEntry_t), (void *)-1, 0,
+     60, 0, 0},
+    {MIB_SCTP_CONN_REMOTE, sizeof(mib2_sctpConnRemoteEntry_t), (void *)-1, 0,
+     60, 0, 0},
+#endif
     {0},
 };
 
@@ -131,10 +149,22 @@
     {MIB2_TRANSMISSION, 0,},
     {MIB2_SNMP, 0,},
 #ifdef SOLARIS_HAVE_IPV6_MIB_SUPPORT
+#ifdef SOLARIS_HAVE_RFC4293_SUPPORT
+    {MIB2_IP, MIB2_IP_TRAFFIC_STATS},
+#endif
+    {MIB2_IP6, 0},
     {MIB2_IP6, MIB2_IP6_ADDR},
+    {MIB2_IP6, MIB2_IP6_ROUTE},
+    {MIB2_ICMP6, 0},
     {MIB2_TCP6, MIB2_TCP6_CONN},
     {MIB2_UDP6, MIB2_UDP6_ENTRY},
 #endif
+#ifdef MIB2_SCTP
+    {MIB2_SCTP, 0},
+    {MIB2_SCTP, MIB2_SCTP_CONN},
+    {MIB2_SCTP, MIB2_SCTP_CONN_LOCAL},
+    {MIB2_SCTP, MIB2_SCTP_CONN_REMOTE},
+#endif
     {0},
 };
 
@@ -149,7 +179,7 @@
          void *resp, int (*comp)(void *, void *), void *arg);
 
 static int
-getmib(int groupname, int subgroupname, void *statbuf, size_t size,
+getmib(int groupname, int subgroupname, void **statbuf, size_t *size,
        size_t entrysize, req_e req_type, void *resp, size_t *length,
        int (*comp)(void *, void *), void *arg);
 
@@ -214,7 +244,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 {
@@ -348,7 +378,8 @@
     kstat_ctl_t    *ksc;
     kstat_t        *ks, *kstat_data;
     kstat_named_t  *d;
-    size_t          i, instance;
+    uint_t          i;
+    int             instance = 0;
     char            module_name[64];
     int             ret;
     u_longlong_t    val;    /* The largest value */
@@ -455,11 +486,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:
@@ -512,7 +543,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;
 
@@ -637,7 +668,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;
@@ -655,7 +686,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) {
 	/*
@@ -698,8 +729,8 @@
 		       cachep->cache_size, req_type,
 		       (mib2_ifEntry_t *) & ep, &length, comp, arg);
 	} else {
-	    rc = getmib(mibgr, mibtb, cachep->cache_addr,
-			cachep->cache_size, entrysize, req_type, &ep,
+	    rc = getmib(mibgr, mibtb, &(cachep->cache_addr),
+			&(cachep->cache_size), entrysize, req_type, &ep,
 			&length, comp, arg);
 	}
 
@@ -762,7 +793,7 @@
          */
         DEBUGMSGTL(("kernel_sunos5", 
             "bad cache length %d - not multiple of entry size %d\n", 
-            len, entrysize));
+            (int)len, (int)entrysize));
         return NOT_FOUND;
     }
 
@@ -841,7 +872,7 @@
  */
 
 static int
-getmib(int groupname, int subgroupname, void *statbuf, size_t size,
+getmib(int groupname, int subgroupname, void **statbuf, size_t *size,
        size_t entrysize, req_e req_type, void *resp,
        size_t *length, int (*comp)(void *, void *), void *arg)
 {
@@ -853,6 +884,7 @@
     struct T_error_ack *tea = (struct T_error_ack *) buf;
     struct opthdr  *req;
     found_e         result = FOUND;
+    size_t oldsize;
 
     DEBUGMSGTL(("kernel_sunos5", "...... getmib (%d, %d, ...)\n",
 		groupname, subgroupname));
@@ -966,23 +998,42 @@
 	 * reducing the number of getmsg calls
 	 */
 
-	strbuf.buf = statbuf;
-	strbuf.maxlen = size;
+	strbuf.buf = *statbuf;
+	strbuf.maxlen = *size;
 	strbuf.len = 0;
 	flags = 0;
 	do {
 	    rc = getmsg(sd, NULL, &strbuf, &flags);
 	    switch (rc) {
 	    case -1:
-		rc = -ENOSR;
+		ret = -ENOSR;
+		snmp_perror("getmsg");
 		goto Return;
 
 	    default:
-		rc = -ENODATA;
+		snmp_log(LOG_ERR, "kernel_sunos5/getmib: getmsg returned %d\n", rc);
+		ret = -ENODATA;
 		goto Return;
 
 	    case MOREDATA:
+		DEBUGMSGTL(("kernel_sunos5", "...... getmib increased buffer size\n"));
+		oldsize = ( strbuf.buf - (char *)*statbuf) + strbuf.len;
+		strbuf.buf = (char *)realloc(*statbuf, oldsize+4096);
+		if(strbuf.buf != NULL) {
+		    *statbuf = strbuf.buf;
+		    *size = oldsize + 4096;
+		    strbuf.buf = (char *)*statbuf + oldsize;
+		    strbuf.maxlen = 4096;
+		    result = NOT_FOUND;
+		    break;
+		}
+		strbuf.buf = (char *)*statbuf + (oldsize - strbuf.len);
 	    case 0:
+		/* fix buffer to real size & position */
+		strbuf.len += strbuf.buf - (char*)*statbuf;
+		strbuf.buf = *statbuf;
+		strbuf.maxlen = *size;
+
 		if (req_type == GET_NEXT && result == NEED_NEXT)
 		    /*
 		     * End of buffer, so "next" is the first item in the next
@@ -996,6 +1047,8 @@
 	    }
 	} while (rc == MOREDATA && result != FOUND);
 
+	DEBUGMSGTL(("kernel_sunos5", "...... getmib buffer size is %d\n", (int)*size));
+
 	if (result == FOUND) {      /* Search is successful */
 	    if (rc != MOREDATA) {
 		ret = 0;    /* Found and no more data */
@@ -1135,7 +1188,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);
     }
 }
@@ -1181,7 +1234,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:
@@ -1246,15 +1299,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);
     }
 }
@@ -1297,7 +1350,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/kernel_sunos5.h b/agent/mibgroup/kernel_sunos5.h
index cdd2375..bf337ae 100644
--- a/agent/mibgroup/kernel_sunos5.h
+++ b/agent/mibgroup/kernel_sunos5.h
@@ -71,10 +71,22 @@
     MIB_TRANSMISSION = 14,
     MIB_SNMP = 15,
 #ifdef SOLARIS_HAVE_IPV6_MIB_SUPPORT
-    MIB_IP6_ADDR = 16,
+#ifdef SOLARIS_HAVE_RFC4293_SUPPORT
+    MIB_IP_TRAFFIC_STATS,
+#endif
+    MIB_IP6,
+    MIB_IP6_ADDR,
+    MIB_IP6_ROUTE,
+    MIB_ICMP6,
     MIB_TCP6_CONN,
     MIB_UDP6_ENDPOINT,
 #endif
+#ifdef MIB2_SCTP
+    MIB_SCTP,
+    MIB_SCTP_CONN,
+    MIB_SCTP_CONN_LOCAL,
+    MIB_SCTP_CONN_REMOTE,
+#endif
     MIBCACHE_SIZE	
 } mibgroup_e;
 
diff --git a/agent/mibgroup/mibII.h b/agent/mibgroup/mibII.h
index c54d233..f3157fc 100644
--- a/agent/mibgroup/mibII.h
+++ b/agent/mibgroup/mibII.h
@@ -7,7 +7,7 @@
 config_require(mibII/at)
 config_require(mibII/ifTable)
 config_require(mibII/ip)
-config_require(mibII/snmp_mib)
+config_version_require((mibII/snmp_mib, 5.5, mibII/snmp_mib_5_5))
 config_require(mibII/tcp)
 config_require(mibII/icmp)
 config_require(mibII/udp)
@@ -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
 
@@ -25,8 +25,25 @@
 
 /*
  * these new module re-rewrites have only been implemented for
- * linux.
+ * Linux and *BSD.
  */
-#if defined( linux )
+#if defined(linux)
 config_require(ip-mib ip-forward-mib tcp-mib udp-mib)
+#elif defined(dragonfly) || defined(freebsd7) || \
+    defined(netbsd5) || defined(openbsd4) || defined( darwin )
+config_require(ip-mib ip-forward-mib tcp-mib udp-mib)
+#elif defined(solaris2)
+config_require(tcp-mib udp-mib)
+#elif defined(freebsd4)
+config_require(tcp-mib udp-mib)
+#elif defined(netbsd1)
+config_require(tcp-mib udp-mib)
+#endif
+
+/*
+ * For Solaris, enable additional tables when it has extended MIB support.
+ */
+#if defined( solaris2 ) && defined( HAVE_MIB2_IPIFSTATSENTRY_T )
+config_require(ip-mib/ipSystemStatsTable ip-mib/ipAddressTable)
+config_require(ip-forward-mib)
 #endif
diff --git a/agent/mibgroup/mibII/at.c b/agent/mibgroup/mibII/at.c
index 45ab516..f57ba2a 100644
--- a/agent/mibgroup/mibII/at.c
+++ b/agent/mibgroup/mibII/at.c
@@ -25,17 +25,13 @@
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
-#if defined(IFNET_NEEDS_KERNEL) && !defined(_KERNEL)
+#if defined(NETSNMP_IFNET_NEEDS_KERNEL) && !defined(_KERNEL)
 #define _KERNEL 1
 #define _I_DEFINED_KERNEL
 #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>
@@ -146,9 +139,12 @@
  * information at 
  */
 struct variable1 at_variables[] = {
-    {ATIFINDEX, ASN_INTEGER, RONLY, var_atEntry, 1, {1}},
-    {ATPHYSADDRESS, ASN_OCTET_STR, RONLY, var_atEntry, 1, {2}},
-    {ATNETADDRESS, ASN_IPADDRESS, RONLY, var_atEntry, 1, {3}}
+    {ATIFINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_atEntry, 1, {1}},
+    {ATPHYSADDRESS, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_atEntry, 1, {2}},
+    {ATNETADDRESS, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_atEntry, 1, {3}}
 };
 
 /*
@@ -304,7 +300,7 @@
 
     memcpy((char *) name, (char *) lowest, oid_length * sizeof(oid));
     *length = oid_length;
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     switch (vp->magic) {
     case IPMEDIAIFINDEX:       /* also ATIFINDEX */
         *var_len = sizeof long_return;
@@ -357,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)
@@ -393,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;
 
     /*
@@ -510,7 +507,7 @@
 static char    *lim, *rtnext;
 static char    *at = 0;
 #else
-#ifdef STRUCT_ARPHD_HAS_AT_NEXT
+#ifdef HAVE_STRUCT_ARPHD_AT_NEXT
 static struct arphd *at = 0;
 static struct arptab *at_ptr, at_entry;
 static struct arpcom at_com;
@@ -528,7 +525,6 @@
  */
 #define ARP_CACHE_INCR 1024
 static struct arptab *at = NULL;
-static int      arptab_curr_max_size = 0;
 
 #endif
 #endif                          /* NETSNMP_CAN_USE_SYSCTL */
@@ -583,7 +579,7 @@
 #ifdef ARPTAB_SIZE_SYMBOL
         auto_nlist(ARPTAB_SIZE_SYMBOL, (char *) &arptab_size,
                    sizeof arptab_size);
-#ifdef STRUCT_ARPHD_HAS_AT_NEXT
+#ifdef HAVE_STRUCT_ARPHD_AT_NEXT
         at = (struct arphd *) malloc(arptab_size * sizeof(struct arphd));
 #else
         at = (struct arptab *) malloc(arptab_size * sizeof(struct arptab));
@@ -592,7 +588,7 @@
         return;
 #endif
     }
-#ifdef STRUCT_ARPHD_HAS_AT_NEXT
+#ifdef HAVE_STRUCT_ARPHD_AT_NEXT
     auto_nlist(ARPTAB_SYMBOL, (char *) at,
                arptab_size * sizeof(struct arphd));
     at_ptr = at[0].at_next;
@@ -634,8 +630,10 @@
 
     i = 0;
     while (fgets(line, sizeof(line), in)) {
+        static int      arptab_curr_max_size;
         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) *
@@ -779,7 +777,7 @@
     register struct arptab *atab;
 
     while (arptab_current < arptab_size) {
-#ifdef STRUCT_ARPHD_HAS_AT_NEXT
+#ifdef HAVE_STRUCT_ARPHD_AT_NEXT
         /*
          * The arp table is an array of linked lists of arptab entries.
          * Unused slots have pointers back to the array entry itself 
@@ -808,9 +806,9 @@
         at_ptr = at_entry.at_next;
         atab = &at_entry;
         *ifIndex = at_com.ac_if.if_index;       /* not strictly ARPHD */
-#else                           /* STRUCT_ARPHD_HAS_AT_NEXT */
+#else                           /* HAVE_STRUCT_ARPHD_AT_NEXT */
         atab = &at[arptab_current++];
-#endif                          /* STRUCT_ARPHD_HAS_AT_NEXT */
+#endif                          /* HAVE_STRUCT_ARPHD_AT_NEXT */
         if (!(atab->at_flags & ATF_COM))
             continue;
         *ifType = (atab->at_flags & ATF_PERM) ? 4 : 3;
@@ -859,7 +857,7 @@
 }
 #endif                          /* solaris2 */
 
-#else                           /* WIN32 cygwin */
+#elif defined(HAVE_IPHLPAPI_H)  /* WIN32 cygwin */
 #include <iphlpapi.h>
 
 extern WriteMethod write_arp;
@@ -893,6 +891,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;
@@ -916,6 +915,7 @@
             status = GetIpNetTable(pIpNetTable, &dwActualSize, TRUE);
     }
 
+    i = -1;
 
     if (status == NO_ERROR) {
         for (i = 0; i < pIpNetTable->dwNumEntries; ++i) {
@@ -970,16 +970,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 */
@@ -992,6 +992,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 c80f0ee..be803ee 100644
--- a/agent/mibgroup/mibII/icmp.c
+++ b/agent/mibgroup/mibII/icmp.c
@@ -1,6 +1,5 @@
 /*
  *  ICMP MIB group implementation - icmp.c
- *
  */
 
 #include <net-snmp/net-snmp-config.h>
@@ -9,6 +8,13 @@
 #if HAVE_NETINET_IP_ICMP_H
 #include <netinet/ip_icmp.h>
 #endif
+
+#ifdef NETSNMP_ENABLE_IPV6
+#if HAVE_NETINET_ICMP6_H
+#include <netinet/icmp6.h>
+#endif
+#endif /* NETSNMP_ENABLE_IPV6 */
+
 #if HAVE_NETINET_ICMP_VAR_H
 #include <netinet/icmp_var.h>
 #endif
@@ -19,10 +25,10 @@
 
 #include <net-snmp/agent/cache_handler.h>
 #include <net-snmp/agent/scalar_group.h>
+#include <net-snmp/agent/sysORTable.h>
 
-#include "util_funcs.h"
+#include "util_funcs/MIB_STATS_CACHE_TIMEOUT.h"
 #include "icmp.h"
-#include "sysORTable.h"
 
 #ifndef MIB_STATS_CACHE_TIMEOUT
 #define MIB_STATS_CACHE_TIMEOUT	5
@@ -31,7 +37,18 @@
 #define ICMP_STATS_CACHE_TIMEOUT	MIB_STATS_CACHE_TIMEOUT
 #endif
 
-#if defined(HAVE_LIBPERFSTAT_H) && (defined(aix4) || defined(aix5) || defined(aix6)) && !defined(FIRST_PROTOCOL)
+/* redefine ICMP6 message types from glibc < 2.4 to newer names */
+#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(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;
@@ -54,40 +71,665 @@
 	 *********************/
 
 
+#ifdef hpux11
+#define ICMP_STAT_STRUCTURE	int
+#endif
+
+#ifdef linux
+#define ICMP_STAT_STRUCTURE	struct icmp_mib
+#define USES_SNMP_DESIGNED_ICMPSTAT
+#undef ICMPSTAT_SYMBOL
+#endif
+
+#ifdef solaris2
+#define USES_SNMP_DESIGNED_ICMPSTAT
+#define ICMP_STAT_STRUCTURE	mib2_icmp_t
+#include "kernel_mib.h"
+static int
+solaris_read_icmp_stat(ICMP_STAT_STRUCTURE *);
+static int
+solaris_read_icmp_msg_stat(ICMP_STAT_STRUCTURE *, struct icmp4_msg_mib *, int *);
+#ifdef NETSNMP_ENABLE_IPV6
+static int
+solaris_read_icmp6_stat(struct icmp6_mib *);
+static int
+solaris_read_icmp6_msg_stat(struct icmp6_mib *, struct icmp6_msg_mib *, int *);
+#endif
+#endif
+
+#ifdef NETBSD_STATS_VIA_SYSCTL
+#define ICMP_STAT_STRUCTURE     struct icmp_mib
+#define USES_SNMP_DESIGNED_ICMPSTAT
+#undef ICMP_NSTATS
+#endif
+
+#ifdef HAVE_IPHLPAPI_H
+#include <iphlpapi.h>
+#define ICMP_STAT_STRUCTURE MIB_ICMP
+#endif
+
+#if (defined(NETSNMP_CAN_USE_SYSCTL) && defined(ICMPCTL_STATS))
+#define ICMP_STAT_STRUCTURE	struct icmp_mib
+#define USES_SNMP_DESIGNED_ICMPSTAT
+#undef ICMPSTAT_SYMBOL
+#endif
+
+#ifdef HAVE_SYS_ICMPIPSTATS_H
+/* or #ifdef		HAVE_SYS_TCPIPSTATS_H  ??? */
+#define ICMP_STAT_STRUCTURE	struct kna
+#define USES_TRADITIONAL_ICMPSTAT
+#endif
+
+#if !defined(ICMP_STAT_STRUCTURE)
+#define ICMP_STAT_STRUCTURE	struct icmpstat
+#define USES_TRADITIONAL_ICMPSTAT
+#endif
+
+ICMP_STAT_STRUCTURE icmpstat;
+#if defined(solaris2) && defined(NETSNMP_ENABLE_IPV6)
+static struct icmp6_mib icmp6stat;
+#endif
+
+/* If they just all agreed ... */
+
+#ifndef ICMP_DEST_UNREACH
+#define ICMP_DEST_UNREACH ICMP_UNREACH
+#endif
+#ifndef ICMP_SOURCE_QUENCH
+#define ICMP_SOURCE_QUENCH ICMP_SOURCEQUENCH
+#endif
+#ifndef ICMP_TIME_EXCEEDED
+#define ICMP_TIME_EXCEEDED ICMP_TIMXCEED
+#endif
+#ifndef ICMP_PARAMETERPROB
+#define ICMP_PARAMETERPROB ICMP_PARAMPROB
+#endif
+#ifndef ICMP_TIMESTAMP
+#define ICMP_TIMESTAMP ICMP_TSTAMP
+#endif
+#ifndef ICMP_TIMESTAMPREPLY
+#define ICMP_TIMESTAMPREPLY ICMP_TSTAMPREPLY
+#endif
+#ifndef ICMP_ADDRESS
+#define ICMP_ADDRESS ICMP_MASKREQ
+#endif
+#ifndef ICMP_ADDRESSREPLY
+#define ICMP_ADDRESSREPLY ICMP_MASKREPLY
+#endif
+#ifndef MLD_LISTENER_REDUCTION
+#define MLD_LISTENER_REDUCTION MLD_LISTENER_DONE
+#endif
 
 /*
  * Define the OID pointer to the top of the mib tree that we're
  * registering underneath 
  */
-oid             icmp_oid[] = { SNMP_OID_MIB2, 5 };
+static const oid icmp_oid[] = { SNMP_OID_MIB2, 5 };
+static const oid icmp_stats_tbl_oid[] = { SNMP_OID_MIB2, 5, 29 };
+static const oid icmp_msg_stats_tbl_oid[] = { SNMP_OID_MIB2, 5, 30 };
 #ifdef USING_MIBII_IP_MODULE
 extern oid      ip_module_oid[];
 extern int      ip_module_oid_len;
 extern int      ip_module_count;
 #endif
 
+#ifdef USES_SNMP_DESIGNED_ICMPSTAT
+struct icmp_stats_table_entry {
+	uint32_t ipVer;
+        uint32_t icmpStatsInMsgs;
+        uint32_t icmpStatsInErrors;
+        uint32_t icmpStatsOutMsgs;
+        uint32_t icmpStatsOutErrors;
+};
+
+struct icmp_stats_table_entry icmp_stats_table[2];
+ 
+#define ICMP_MSG_STATS_HAS_IN 1
+#define ICMP_MSG_STATS_HAS_OUT 2
+
+struct icmp_msg_stats_table_entry {
+        uint32_t ipVer;
+        uint32_t icmpMsgStatsType;
+        uint32_t icmpMsgStatsInPkts;
+        uint32_t icmpMsgStatsOutPkts;
+        int flags;
+};
+
+#ifdef linux
+/* Linux keeps track of all possible message types */
+#define ICMP_MSG_STATS_IPV4_COUNT 256
+#else
+#define ICMP_MSG_STATS_IPV4_COUNT 11
+#endif
+
+#ifdef NETSNMP_ENABLE_IPV6
+#ifdef linux
+/* Linux keeps track of all possible message types */
+#define ICMP_MSG_STATS_IPV6_COUNT 256
+#else
+#define ICMP_MSG_STATS_IPV6_COUNT 14
+#endif
+#else
+#define ICMP_MSG_STATS_IPV6_COUNT 0
+#endif /* NETSNMP_ENABLE_IPV6 */
+
+struct icmp_msg_stats_table_entry icmp_msg_stats_table[ICMP_MSG_STATS_IPV4_COUNT + ICMP_MSG_STATS_IPV6_COUNT];
+
+int
+icmp_stats_load(netsnmp_cache *cache, void *vmagic)
+{
+
+    /*
+     * note don't bother using the passed in cache
+     * and vmagic pointers.  They are useless as they 
+     * currently point to the icmp system stats cache	
+     * since I see little point in registering another
+     * cache for this table.  Its not really needed
+     */
+
+    int i;
+    ICMP_STAT_STRUCTURE v4icmp;
+#ifdef NETSNMP_ENABLE_IPV6
+    struct icmp6_mib v6icmp;
+#endif
+    for(i = 0; i < 2; i++) {
+        switch(i) {
+        case 0:
+#ifdef linux
+            linux_read_icmp_stat(&v4icmp);
+#elif defined(NETBSD_STATS_VIA_SYSCTL)
+	    netbsd_read_icmp_stat(&v4icmp);
+#elif (defined(NETSNMP_CAN_USE_SYSCTL) && defined(ICMPCTL_STATS))
+	    sysctl_read_icmp_stat(&v4icmp);
+#elif defined(solaris2)
+	    solaris_read_icmp_stat(&v4icmp);
+#else
+	    return -1;
+#endif
+            icmp_stats_table[i].icmpStatsInMsgs = v4icmp.icmpInMsgs;
+            icmp_stats_table[i].icmpStatsInErrors = v4icmp.icmpInErrors;
+            icmp_stats_table[i].icmpStatsOutMsgs = v4icmp.icmpOutMsgs;
+            icmp_stats_table[i].icmpStatsOutErrors = v4icmp.icmpOutErrors;
+            break;
+        case 1:
+#ifdef NETSNMP_ENABLE_IPV6
+            memset(&icmp_stats_table[i],0,
+                    sizeof(struct icmp_stats_table_entry));
+#ifdef linux
+            linux_read_icmp6_stat(&v6icmp);
+#elif defined(NETBSD_STATS_VIA_SYSCTL)
+	    netbsd_read_icmp6_stat(&v6icmp);
+#elif (defined(NETSNMP_CAN_USE_SYSCTL) && defined(ICMPCTL_STATS))
+	    sysctl_read_icmp6_stat(&v6icmp);
+#elif defined(solaris2)
+	    solaris_read_icmp6_stat(&v6icmp);
+#else
+	    return -1;
+#endif
+            icmp_stats_table[i].icmpStatsInMsgs = v6icmp.icmp6InMsgs;
+            icmp_stats_table[i].icmpStatsInErrors = v6icmp.icmp6InErrors;
+            icmp_stats_table[i].icmpStatsOutMsgs = v6icmp.icmp6OutMsgs;
+            icmp_stats_table[i].icmpStatsOutErrors =
+                        v6icmp.icmp6OutDestUnreachs +
+                        v6icmp.icmp6OutPktTooBigs +  v6icmp.icmp6OutTimeExcds +
+                        v6icmp.icmp6OutParmProblems;
+#endif	/* NETSNMP_ENABLE_IPV6 */
+            break;
+        }
+        icmp_stats_table[i].ipVer = i + 1;
+    }
+
+    return 0;
+}
+
+int
+icmp_msg_stats_load(netsnmp_cache *cache, void *vmagic)
+{
+    ICMP_STAT_STRUCTURE v4icmp;
+    struct icmp4_msg_mib v4icmpmsg;
+#ifdef NETSNMP_ENABLE_IPV6
+    struct icmp6_mib v6icmp;
+    struct icmp6_msg_mib v6icmpmsg;
+#endif
+    int i, k, flag, inc;
+
+    memset(&icmp_msg_stats_table, 0, sizeof(icmp_msg_stats_table));
+
+    i = 0;
+    flag = 0;
+    k = 0;
+    inc = 0;
+#ifdef linux
+    linux_read_icmp_msg_stat(&v4icmp, &v4icmpmsg, &flag);
+#elif defined(NETBSD_STATS_VIA_SYSCTL)
+    netbsd_read_icmp_msg_stat(&v4icmp, &v4icmpmsg, &flag);
+#elif (defined(NETSNMP_CAN_USE_SYSCTL) && defined(ICMPCTL_STATS))
+    sysctl_read_icmp_msg_stat(&v4icmp, &v4icmpmsg, &flag);
+#elif defined(solaris2)
+    solaris_read_icmp_msg_stat(&v4icmp, &v4icmpmsg, &flag);
+#else
+    return -1;
+#endif
+    if (flag) {
+        while (255 >= k) {
+            if (v4icmpmsg.vals[k].InType) {
+                icmp_msg_stats_table[i].ipVer = 1;
+                icmp_msg_stats_table[i].icmpMsgStatsType = k;
+                icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmpmsg.vals[k].InType;
+                icmp_msg_stats_table[i].flags = icmp_msg_stats_table[i].flags | ICMP_MSG_STATS_HAS_IN;
+                inc = 1; /* Set this if we found a valid entry */
+            }
+            if (v4icmpmsg.vals[k].OutType) {
+                icmp_msg_stats_table[i].ipVer = 1;
+                icmp_msg_stats_table[i].icmpMsgStatsType = k;
+                icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmpmsg.vals[k].OutType;
+                icmp_msg_stats_table[i].flags = icmp_msg_stats_table[i].flags | ICMP_MSG_STATS_HAS_OUT;
+                inc = 1; /* Set this if we found a valid entry */
+            }
+            if (inc) {
+                i++;
+                inc = 0;
+            }
+            k++;
+        }
+    } else {
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_ECHOREPLY;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInEchoReps;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutEchoReps;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_DEST_UNREACH;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInDestUnreachs;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutDestUnreachs;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_SOURCE_QUENCH;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInSrcQuenchs;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutSrcQuenchs;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_REDIRECT;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInRedirects;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutRedirects;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_ECHO;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInEchos;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutEchos;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_TIME_EXCEEDED;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInTimeExcds;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutTimeExcds;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_PARAMETERPROB;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInParmProbs;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutParmProbs;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_TIMESTAMP;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInTimestamps;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutTimestamps;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_TIMESTAMPREPLY;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInTimestampReps;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutTimestampReps;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_ADDRESS;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInAddrMasks;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutAddrMasks;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP_ADDRESSREPLY;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v4icmp.icmpInAddrMaskReps;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v4icmp.icmpOutAddrMaskReps;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        icmp_msg_stats_table[i].ipVer = 1;
+        i++;
+    }
+
+#ifdef NETSNMP_ENABLE_IPV6
+    flag = 0;
+    k = 0;
+    inc = 0;
+#ifdef linux
+    linux_read_icmp6_msg_stat(&v6icmp, &v6icmpmsg, &flag);
+#elif defined(NETBSD_STATS_VIA_SYSCTL)
+    netbsd_read_icmp6_msg_stat(&v6icmp, &v6icmpmsg, &flag);
+#elif (defined(NETSNMP_CAN_USE_SYSCTL) && defined(ICMPCTL_STATS))
+    sysctl_read_icmp6_msg_stat(&v6icmp, &v6icmpmsg, &flag);
+#elif defined(solaris2)
+    solaris_read_icmp6_msg_stat(&v6icmp, &v6icmpmsg, &flag);
+#else
+    return -1;
+#endif
+    if (flag) {
+        while (255 >= k) {
+            if (v6icmpmsg.vals[k].InType) {
+                icmp_msg_stats_table[i].ipVer = 2;
+                icmp_msg_stats_table[i].icmpMsgStatsType = k;
+                icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmpmsg.vals[k].InType;
+                icmp_msg_stats_table[i].flags = icmp_msg_stats_table[i].flags | ICMP_MSG_STATS_HAS_IN;
+                inc = 1; /* Set this if we found a valid entry */
+            }
+            if (v6icmpmsg.vals[k].OutType) {
+                icmp_msg_stats_table[i].ipVer = 2;
+                icmp_msg_stats_table[i].icmpMsgStatsType = k;
+                icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmpmsg.vals[k].OutType;
+                icmp_msg_stats_table[i].flags = icmp_msg_stats_table[i].flags | ICMP_MSG_STATS_HAS_OUT;
+                inc = 1; /* Set this if we found a valid entry */
+            }
+            if (inc) {
+                i++;
+                inc = 0;
+            }
+            k++;
+        }
+    } else {
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_DST_UNREACH;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InDestUnreachs;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutDestUnreachs;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_PACKET_TOO_BIG;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InPktTooBigs;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutPktTooBigs;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_TIME_EXCEEDED;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InTimeExcds;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutTimeExcds;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_PARAM_PROB;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InParmProblems;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutParmProblems;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_ECHO_REQUEST;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InEchos;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutEchos;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ICMP6_ECHO_REPLY;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InEchoReplies;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutEchoReplies;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        i++;
+
+#ifdef MLD_LISTENER_QUERY
+        icmp_msg_stats_table[i].icmpMsgStatsType = MLD_LISTENER_QUERY;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InGroupMembQueries;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = 0;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = MLD_LISTENER_REPORT;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InGroupMembResponses;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutGroupMembResponses;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = MLD_LISTENER_REDUCTION;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InGroupMembReductions;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutGroupMembReductions;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ND_ROUTER_SOLICIT;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InRouterSolicits;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutRouterSolicits;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ND_ROUTER_ADVERT;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InRouterAdvertisements;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = 0;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ND_NEIGHBOR_SOLICIT;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InNeighborSolicits;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutNeighborSolicits;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ND_NEIGHBOR_ADVERT;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InNeighborAdvertisements;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutNeighborAdvertisements;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+        i++;
+
+        icmp_msg_stats_table[i].icmpMsgStatsType = ND_REDIRECT;
+        icmp_msg_stats_table[i].icmpMsgStatsInPkts = v6icmp.icmp6InRedirects;
+        icmp_msg_stats_table[i].icmpMsgStatsOutPkts = v6icmp.icmp6OutRedirects;
+        icmp_msg_stats_table[i].ipVer = 2;
+        icmp_msg_stats_table[i].flags = ICMP_MSG_STATS_HAS_IN | ICMP_MSG_STATS_HAS_OUT;
+#endif
+    }
+#endif /* NETSNMP_ENABLE_IPV6 */
+    return 0;
+}
+
+netsnmp_variable_list *
+icmp_stats_next_entry( void **loop_context,
+                     void **data_context,
+                     netsnmp_variable_list *index,
+                     netsnmp_iterator_info *data)
+{
+    int i = (int)(intptr_t)(*loop_context);
+    netsnmp_variable_list *idx = index;
+
+    if(i > 1)
+        return NULL;
+
+
+    /*
+     *set IP version
+     */
+    snmp_set_var_typed_value(idx, ASN_INTEGER, (u_char *)&icmp_stats_table[i].ipVer,
+                            sizeof(uint32_t));
+    idx = idx->next_variable;
+
+    *data_context = &icmp_stats_table[i];
+
+    *loop_context = (void *)(intptr_t)(++i);
+    
+    return index;
+}
+
+
+netsnmp_variable_list *
+icmp_stats_first_entry( void **loop_context,
+                     void **data_context,
+                     netsnmp_variable_list *index,
+                     netsnmp_iterator_info *data)
+{
+    *loop_context = NULL;
+    *data_context = NULL;
+    return icmp_stats_next_entry(loop_context, data_context, index, data);
+}
+
+netsnmp_variable_list *
+icmp_msg_stats_next_entry(void **loop_context,
+                          void **data_context,
+                          netsnmp_variable_list *index,
+                          netsnmp_iterator_info *data)
+{
+    int i = (int)(intptr_t)(*loop_context);
+    netsnmp_variable_list *idx = index;
+
+    if(i >= ICMP_MSG_STATS_IPV4_COUNT + ICMP_MSG_STATS_IPV6_COUNT)
+        return NULL;
+
+    /* set IP version */
+    snmp_set_var_typed_value(idx, ASN_INTEGER,
+            (u_char *)&icmp_msg_stats_table[i].ipVer,
+            sizeof(uint32_t));
+
+    /* set packet type */
+    idx = idx->next_variable;
+    snmp_set_var_typed_value(idx, ASN_INTEGER,
+            (u_char *)&icmp_msg_stats_table[i].icmpMsgStatsType,
+            sizeof(uint32_t));
+
+    *data_context = &icmp_msg_stats_table[i];
+    *loop_context = (void *)(intptr_t)(++i);
+
+    return index;
+}
+
+
+netsnmp_variable_list *
+icmp_msg_stats_first_entry(void **loop_context,
+                           void **data_context,
+                           netsnmp_variable_list *index,
+                           netsnmp_iterator_info *data)
+{
+    *loop_context = NULL;
+    *data_context = NULL;
+    return icmp_msg_stats_next_entry(loop_context, data_context, index, data);
+}
+#endif
+
 void
 init_icmp(void)
 {
-    netsnmp_handler_registration *reginfo;
+#ifdef USES_SNMP_DESIGNED_ICMPSTAT
+    netsnmp_handler_registration *msg_stats_reginfo = NULL;
+    netsnmp_handler_registration *table_reginfo = NULL;
+    netsnmp_iterator_info *iinfo;
+    netsnmp_iterator_info *msg_stats_iinfo;
+    netsnmp_table_registration_info *table_info;
+    netsnmp_table_registration_info *msg_stats_table_info;
+#endif
+    netsnmp_handler_registration *scalar_reginfo = NULL;
+    int                    rc;
 
     /*
      * register ourselves with the agent as a group of scalars...
      */
     DEBUGMSGTL(("mibII/icmp", "Initialising ICMP group\n"));
-    reginfo = netsnmp_create_handler_registration("icmp", icmp_handler,
+    scalar_reginfo = netsnmp_create_handler_registration("icmp", icmp_handler,
 		    icmp_oid, OID_LENGTH(icmp_oid), HANDLER_CAN_RONLY);
-    netsnmp_register_scalar_group(reginfo, ICMPINMSGS, ICMPOUTADDRMASKREPS);
+    rc = netsnmp_register_scalar_group(scalar_reginfo, ICMPINMSGS, ICMPOUTADDRMASKREPS);
+    if (rc != SNMPERR_SUCCESS)
+        return;
     /*
      * .... with a local cache
      *    (except for HP-UX 11, which extracts objects individually)
      */
 #ifndef hpux11
-    netsnmp_inject_handler( reginfo,
+    rc = netsnmp_inject_handler( scalar_reginfo,
 		    netsnmp_get_cache_handler(ICMP_STATS_CACHE_TIMEOUT,
 			   		icmp_load, icmp_free,
 					icmp_oid, OID_LENGTH(icmp_oid)));
+    if (rc != SNMPERR_SUCCESS)
+	goto bail;
 #endif
+#ifdef USES_SNMP_DESIGNED_ICMPSTAT
+
+    /* register icmpStatsTable */
+    table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
+    if (!table_info)
+        goto bail;
+    netsnmp_table_helper_add_indexes(table_info, ASN_INTEGER, 0);
+    table_info->min_column = ICMP_STAT_INMSG;
+    table_info->max_column = ICMP_STAT_OUTERR;
+
+
+    iinfo      = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info);
+    if (!iinfo)
+        goto bail;
+    iinfo->get_first_data_point = icmp_stats_first_entry;
+    iinfo->get_next_data_point  = icmp_stats_next_entry;
+    iinfo->table_reginfo        = table_info;
+
+    table_reginfo = netsnmp_create_handler_registration("icmpStatsTable",
+		icmp_stats_table_handler, icmp_stats_tbl_oid,
+		OID_LENGTH(icmp_stats_tbl_oid), HANDLER_CAN_RONLY);
+
+    rc = netsnmp_register_table_iterator2(table_reginfo, iinfo);
+    if (rc != SNMPERR_SUCCESS) {
+        table_reginfo = NULL;
+        goto bail;
+    }
+    netsnmp_inject_handler( table_reginfo,
+            netsnmp_get_cache_handler(ICMP_STATS_CACHE_TIMEOUT,
+                        icmp_load, icmp_free,
+                        icmp_stats_tbl_oid, OID_LENGTH(icmp_stats_tbl_oid)));
+
+    /* register icmpMsgStatsTable */
+    msg_stats_table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
+    if (!msg_stats_table_info)
+        goto bail;
+    netsnmp_table_helper_add_indexes(msg_stats_table_info, ASN_INTEGER, ASN_INTEGER, 0);
+    msg_stats_table_info->min_column = ICMP_MSG_STAT_IN_PKTS;
+    msg_stats_table_info->max_column = ICMP_MSG_STAT_OUT_PKTS;
+
+    msg_stats_iinfo = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info);
+    if (!msg_stats_iinfo)
+        goto bail;
+    msg_stats_iinfo->get_first_data_point = icmp_msg_stats_first_entry;
+    msg_stats_iinfo->get_next_data_point  = icmp_msg_stats_next_entry;
+    msg_stats_iinfo->table_reginfo        = msg_stats_table_info;
+
+    msg_stats_reginfo = netsnmp_create_handler_registration("icmpMsgStatsTable",
+            icmp_msg_stats_table_handler, icmp_msg_stats_tbl_oid,
+            OID_LENGTH(icmp_msg_stats_tbl_oid), HANDLER_CAN_RONLY);
+
+    rc = netsnmp_register_table_iterator2(msg_stats_reginfo, msg_stats_iinfo);
+    if (rc != SNMPERR_SUCCESS) {
+        msg_stats_reginfo = NULL;
+        goto bail;
+    }
+
+    netsnmp_inject_handler( msg_stats_reginfo,
+            netsnmp_get_cache_handler(ICMP_STATS_CACHE_TIMEOUT,
+                icmp_load, icmp_free,
+                icmp_msg_stats_tbl_oid, OID_LENGTH(icmp_msg_stats_tbl_oid)));
+#endif /* USES_SNMP_DESIGNED_ICMPSTAT */
 
 #ifdef USING_MIBII_IP_MODULE
     if (++ip_module_count == 2)
@@ -103,6 +745,19 @@
     init_kernel_sunos5();
 #endif
 #endif
+    return;
+
+#ifndef hpux11
+bail:
+#endif
+#ifdef USES_SNMP_DESIGNED_ICMPSTAT
+    if (msg_stats_reginfo)
+        netsnmp_handler_registration_free(msg_stats_reginfo);
+    if (table_reginfo)
+        netsnmp_handler_registration_free(table_reginfo);
+#endif
+    if (scalar_reginfo)
+        netsnmp_handler_registration_free(scalar_reginfo);
 }
 
 
@@ -112,48 +767,6 @@
 	 *
 	 *********************/
 
-#ifdef hpux11
-#define ICMP_STAT_STRUCTURE	int
-#endif
-
-#ifdef linux
-#define ICMP_STAT_STRUCTURE	struct icmp_mib
-#define USES_SNMP_DESIGNED_ICMPSTAT
-#undef ICMPSTAT_SYMBOL
-#endif
-
-#ifdef solaris2
-#define ICMP_STAT_STRUCTURE	mib2_icmp_t
-#define USES_SNMP_DESIGNED_ICMPSTAT
-#endif
-
-#ifdef NETBSD_STATS_VIA_SYSCTL
-#define ICMP_STAT_STRUCTURE     struct icmp_mib
-#define USES_SNMP_DESIGNED_ICMPSTAT
-#undef ICMP_NSTATS
-#endif
-
-#if defined (WIN32) || defined (cygwin)
-#include <iphlpapi.h>
-#define ICMP_STAT_STRUCTURE MIB_ICMP
-#endif
-
-/* ?? #if (defined(NETSNMP_CAN_USE_SYSCTL) && defined(ICMPCTL_STATS)) ?? */
-
-#ifdef HAVE_SYS_ICMPIPSTATS_H
-/* or #ifdef		HAVE_SYS_TCPIPSTATS_H  ??? */
-#define ICMP_STAT_STRUCTURE	struct kna
-#define USES_TRADITIONAL_ICMPSTAT
-#endif
-
-#if !defined(ICMP_STAT_STRUCTURE)
-#define ICMP_STAT_STRUCTURE	struct icmpstat
-#define USES_TRADITIONAL_ICMPSTAT
-#endif
-
-ICMP_STAT_STRUCTURE icmpstat;
-
-
         /*********************
 	 *
 	 *  System independent handler
@@ -171,9 +784,6 @@
     netsnmp_variable_list *requestvb;
     long     ret_value;
     oid      subid;
-#ifdef USES_TRADITIONAL_ICMPSTAT
-    int      i;
-#endif
 
     /*
      * The cached data should already have been loaded by the
@@ -281,13 +891,16 @@
         ret_value = icmpstat.icmpOutAddrMaskReps;
         break;
 #elif defined(USES_TRADITIONAL_ICMPSTAT) && !defined(_USE_PERFSTAT_PROTOCOL)
-    case ICMPINMSGS:
+    case ICMPINMSGS: {
+        int i;
+
         ret_value = icmpstat.icps_badcode +
             icmpstat.icps_tooshort +
             icmpstat.icps_checksum + icmpstat.icps_badlen;
         for (i = 0; i <= ICMP_MAXTYPE; i++)
             ret_value += icmpstat.icps_inhist[i];
         break;
+    }
     case ICMPINERRORS:
         ret_value = icmpstat.icps_badcode +
             icmpstat.icps_tooshort +
@@ -326,11 +939,14 @@
     case ICMPINADDRMASKREPS:
         ret_value = icmpstat.icps_inhist[ICMP_MASKREPLY];
         break;
-    case ICMPOUTMSGS:
+    case ICMPOUTMSGS: {
+        int i;
+
         ret_value = icmpstat.icps_oldshort + icmpstat.icps_oldicmp;
         for (i = 0; i <= ICMP_MAXTYPE; i++)
             ret_value += icmpstat.icps_outhist[i];
         break;
+    }
     case ICMPOUTERRORS:
         ret_value = icmpstat.icps_oldshort + icmpstat.icps_oldicmp;
         break;
@@ -532,6 +1148,7 @@
 
     case MODE_GETNEXT:
     case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
@@ -541,6 +1158,7 @@
         snmp_log(LOG_WARNING, "mibII/icmp: Unsupported mode (%d)\n",
                                reqinfo->mode);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     default:
         snmp_log(LOG_WARNING, "mibII/icmp: Unrecognised mode (%d)\n",
                                reqinfo->mode);
@@ -551,6 +1169,153 @@
 }
 
 
+#ifdef USES_SNMP_DESIGNED_ICMPSTAT
+int
+icmp_stats_table_handler(netsnmp_mib_handler  *handler,
+                 netsnmp_handler_registration *reginfo,
+                 netsnmp_agent_request_info   *reqinfo,
+                 netsnmp_request_info         *requests)
+{
+	netsnmp_request_info  *request;
+	netsnmp_variable_list *requestvb;
+	netsnmp_table_request_info *table_info;
+	struct icmp_stats_table_entry   *entry;
+	oid      subid;
+
+	switch (reqinfo->mode) {
+		case MODE_GET:
+			for (request=requests; request; request=request->next) {
+				requestvb = request->requestvb;
+				entry = (struct icmp_stats_table_entry *)netsnmp_extract_iterator_context(request);
+				if (!entry)
+					continue;
+				table_info = netsnmp_extract_table_info(request);
+				subid      = table_info->colnum;
+				DEBUGMSGTL(( "mibII/icmpStatsTable", "oid: " ));
+				DEBUGMSGOID(( "mibII/icmpStatsTable", request->requestvb->name,
+						 request->requestvb->name_length ));
+				DEBUGMSG(( "mibII/icmpStatsTable", " In %d InErr %d Out %d OutErr %d\n",
+					      entry->icmpStatsInMsgs, entry->icmpStatsInErrors,
+					      entry->icmpStatsOutMsgs, entry->icmpStatsOutErrors ));
+
+				switch (subid) {
+					case ICMP_STAT_INMSG:
+						snmp_set_var_typed_value(requestvb, ASN_COUNTER,
+							(u_char *)&entry->icmpStatsInMsgs, sizeof(uint32_t));
+						break;	
+					case ICMP_STAT_INERR:
+						snmp_set_var_typed_value(requestvb, ASN_COUNTER,
+							(u_char *)&entry->icmpStatsInErrors, sizeof(uint32_t));
+						break;
+					case ICMP_STAT_OUTMSG:
+						snmp_set_var_typed_value(requestvb, ASN_COUNTER,
+							(u_char *)&entry->icmpStatsOutMsgs, sizeof(uint32_t));
+						break;
+					case ICMP_STAT_OUTERR:
+						snmp_set_var_typed_value(requestvb, ASN_COUNTER,
+							(u_char *)&entry->icmpStatsOutErrors, sizeof(uint32_t));
+						break;
+					default:
+						snmp_log(LOG_WARNING, "mibII/icmpStatsTable: Unrecognised column (%d)\n",(int)subid);
+				}
+			}
+			break;
+		case MODE_GETNEXT:
+		case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+		case MODE_SET_RESERVE1:
+		case MODE_SET_RESERVE2:
+		case MODE_SET_ACTION:
+		case MODE_SET_COMMIT:
+		case MODE_SET_FREE:
+		case MODE_SET_UNDO:
+			snmp_log(LOG_WARNING, "mibII/icmpStatsTable: Unsupported mode (%d)\n",
+				reqinfo->mode);
+			break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+		default:
+			snmp_log(LOG_WARNING, "mibII/icmpStatsTable: Unrecognised mode (%d)\n",
+				reqinfo->mode);
+			break;
+
+	}
+
+	return SNMP_ERR_NOERROR;
+}
+
+int
+icmp_msg_stats_table_handler(netsnmp_mib_handler          *handler,
+                             netsnmp_handler_registration *reginfo,
+                             netsnmp_agent_request_info   *reqinfo,
+                             netsnmp_request_info         *requests)
+{
+    netsnmp_request_info *request;
+    netsnmp_variable_list *requestvb;
+    netsnmp_table_request_info *table_info;
+    struct icmp_msg_stats_table_entry *entry;
+    oid subid;
+
+    switch (reqinfo->mode) {
+        case MODE_GET:
+            for (request = requests; request; request = request->next) {
+                requestvb = request->requestvb;
+                entry = (struct icmp_msg_stats_table_entry *)netsnmp_extract_iterator_context(request);
+                if (!entry)
+                    continue;
+                table_info = netsnmp_extract_table_info(request);
+                subid = table_info->colnum;
+                DEBUGMSGTL(( "mibII/icmpMsgStatsTable", "oid: " ));
+                DEBUGMSGOID(( "mibII/icmpMsgStatsTable", request->requestvb->name,
+                                 request->requestvb->name_length ));
+                DEBUGMSG(( "mibII/icmpMsgStatsTable", " In %d Out %d Flags 0x%x\n",
+                                 entry->icmpMsgStatsInPkts, entry->icmpMsgStatsOutPkts, entry->flags ));
+
+                switch (subid) {
+                    case ICMP_MSG_STAT_IN_PKTS:
+                        if (entry->flags & ICMP_MSG_STATS_HAS_IN) {
+                            snmp_set_var_typed_value(requestvb, ASN_COUNTER,
+                                    (u_char *)&entry->icmpMsgStatsInPkts, sizeof(uint32_t));
+                        } else {
+                            requestvb->type = SNMP_NOSUCHINSTANCE;
+                        }
+                        break;
+                    case ICMP_MSG_STAT_OUT_PKTS:
+                        if (entry->flags & ICMP_MSG_STATS_HAS_OUT) {
+                            snmp_set_var_typed_value(requestvb, ASN_COUNTER,
+                                    (u_char *)&entry->icmpMsgStatsOutPkts, sizeof(uint32_t));
+                        } else {
+                            requestvb->type = SNMP_NOSUCHINSTANCE;
+                        }
+                        break;
+                    default:
+                        snmp_log(LOG_WARNING, "mibII/icmpMsgStatsTable: Unrecognised column (%d)\n",(int)subid);
+                }
+            }
+            break;
+        case MODE_GETNEXT:
+        case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        case MODE_SET_RESERVE1:
+        case MODE_SET_RESERVE2:
+        case MODE_SET_ACTION:
+        case MODE_SET_COMMIT:
+        case MODE_SET_FREE:
+        case MODE_SET_UNDO:
+            snmp_log(LOG_WARNING, "mibII/icmpStatsTable: Unsupported mode (%d)\n",
+                    reqinfo->mode);
+            break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+        default:
+            snmp_log(LOG_WARNING, "mibII/icmpStatsTable: Unrecognised mode (%d)\n",
+                    reqinfo->mode);
+            break;
+
+    }
+
+    return SNMP_ERR_NOERROR;
+}
+#endif		/* USES_SNMP_DESIGNED_ICMPSTAT */
+
         /*********************
 	 *
 	 *  Internal implementation functions
@@ -680,13 +1445,19 @@
     } else {
         DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (linux)\n"));
     }
+    icmp_stats_load(cache, vmagic);
+    icmp_msg_stats_load(cache, vmagic);
     return ret_value;
 }
 #elif defined(solaris2)
 int
 icmp_load(netsnmp_cache *cache, void *vmagic)
 {
-    long            ret_value = -1;
+    int ret_value = -1;
+#ifdef NETSNMP_ENABLE_IPV6
+    mib2_ipv6IfIcmpEntry_t ifstat;
+    int req = GET_FIRST;
+#endif
 
     ret_value =
         getMibstat(MIB_ICMP, &icmpstat, sizeof(mib2_icmp_t), GET_FIRST,
@@ -697,8 +1468,85 @@
     } else {
         DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (solaris)\n"));
     }
+
+#ifdef NETSNMP_ENABLE_IPV6
+    memset(&icmp6stat, 0, sizeof(icmp6stat));
+    while ((ret_value = getMibstat(MIB_ICMP6, &ifstat, sizeof(ifstat), req,
+                   &Get_everything, NULL)) == 0) {
+	if ( ret_value < 0 ) {
+	    DEBUGMSGTL(("mibII/icmp", "Failed to load ICMP6 Group (solaris)\n"));
+	} else {
+	    DEBUGMSGTL(("mibII/icmp", "Loaded ICMP6 Group (solaris)\n"));
+	}
+	icmp6stat.icmp6OutMsgs += ifstat.ipv6IfIcmpOutMsgs;
+	icmp6stat.icmp6InMsgs += ifstat.ipv6IfIcmpInMsgs;
+	icmp6stat.icmp6InErrors += ifstat.ipv6IfIcmpInErrors;
+	icmp6stat.icmp6OutDestUnreachs += ifstat.ipv6IfIcmpOutDestUnreachs;
+	icmp6stat.icmp6InDestUnreachs += ifstat.ipv6IfIcmpInDestUnreachs;
+	icmp6stat.icmp6OutPktTooBigs += ifstat.ipv6IfIcmpOutPktTooBigs;
+	icmp6stat.icmp6InPktTooBigs += ifstat.ipv6IfIcmpInPktTooBigs;
+	icmp6stat.icmp6OutTimeExcds += ifstat.ipv6IfIcmpOutTimeExcds;
+	icmp6stat.icmp6InTimeExcds += ifstat.ipv6IfIcmpInTimeExcds;
+	icmp6stat.icmp6OutParmProblems += ifstat.ipv6IfIcmpOutParmProblems;
+	icmp6stat.icmp6InParmProblems += ifstat.ipv6IfIcmpInParmProblems;
+	icmp6stat.icmp6OutEchos += ifstat.ipv6IfIcmpOutEchos;
+	icmp6stat.icmp6InEchos += ifstat.ipv6IfIcmpInEchos;
+	icmp6stat.icmp6OutEchoReplies += ifstat.ipv6IfIcmpOutEchoReplies;
+	icmp6stat.icmp6InEchoReplies += ifstat.ipv6IfIcmpInEchoReplies;
+	icmp6stat.icmp6OutRouterSolicits += ifstat.ipv6IfIcmpOutRouterSolicits;
+	icmp6stat.icmp6InRouterSolicits += ifstat.ipv6IfIcmpInRouterSolicits;
+	icmp6stat.icmp6OutNeighborAdvertisements += ifstat.ipv6IfIcmpOutNeighborAdvertisements;
+	icmp6stat.icmp6InNeighborAdvertisements += ifstat.ipv6IfIcmpInNeighborAdvertisements;
+	icmp6stat.icmp6OutNeighborSolicits += ifstat.ipv6IfIcmpOutNeighborSolicits;
+	icmp6stat.icmp6InNeighborSolicits += ifstat.ipv6IfIcmpInNeighborSolicits;
+	icmp6stat.icmp6OutRedirects += ifstat.ipv6IfIcmpOutRedirects;
+	icmp6stat.icmp6InRedirects += ifstat.ipv6IfIcmpInRedirects;
+	icmp6stat.icmp6InGroupMembQueries += ifstat.ipv6IfIcmpInGroupMembQueries;
+	icmp6stat.icmp6OutGroupMembResponses += ifstat.ipv6IfIcmpOutGroupMembResponses;
+	icmp6stat.icmp6InGroupMembResponses += ifstat.ipv6IfIcmpInGroupMembResponses;
+	icmp6stat.icmp6OutGroupMembReductions += ifstat.ipv6IfIcmpOutGroupMembReductions;
+	icmp6stat.icmp6InGroupMembReductions += ifstat.ipv6IfIcmpInGroupMembReductions;
+	req = GET_NEXT;
+    }
+#endif
+
+    icmp_stats_load(cache, vmagic);
+    icmp_msg_stats_load(cache, vmagic);
     return ret_value;
 }
+
+static int
+solaris_read_icmp_stat(ICMP_STAT_STRUCTURE *mib)
+{
+    *mib = icmpstat;
+    return 0;
+}
+
+static int
+solaris_read_icmp_msg_stat(ICMP_STAT_STRUCTURE *mib, struct icmp4_msg_mib *msg_mib, int *flag)
+{
+    *mib = icmpstat;
+    *flag = 0;
+    return 0;
+}
+
+#ifdef NETSNMP_ENABLE_IPV6
+static int
+solaris_read_icmp6_stat(struct icmp6_mib *mib)
+{
+    *mib = icmp6stat;
+    return 0;
+}
+
+static int
+solaris_read_icmp6_msg_stat(struct icmp6_mib *mib, struct icmp6_msg_mib *msg_mib, int *flag)
+{
+    *mib = icmp6stat;
+    *flag = 0;
+    return 0;
+}
+#endif
+
 #elif defined(NETBSD_STATS_VIA_SYSCTL)
 int
 icmp_load(netsnmp_cache *cache, void *vmagic)
@@ -712,9 +1560,10 @@
     } else {
 	DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (netbsd)\n"));
     }
+    icmp_stats_load(cache, vmagic);
+    icmp_msg_stats_load(cache, vmagic);
     return ret_value;
 }
-
 #elif defined (WIN32) || defined (cygwin)
 int
 icmp_load(netsnmp_cache *cache, void *vmagic)
@@ -752,17 +1601,16 @@
 icmp_load(netsnmp_cache *cache, void *vmagic)
 {
     long            ret_value = -1;
-    static int      sname[4] =
-        { CTL_NET, PF_INET, IPPROTO_ICMP, ICMPCTL_STATS };
-    size_t          len = sizeof(icmpstat);
 
-    ret_value = sysctl(sname, 4, &icmpstat, &len, 0, 0);
+    ret_value = sysctl_read_icmp_stat(&icmpstat);
 
     if ( ret_value < 0 ) {
-        DEBUGMSGTL(("mibII/icmp", "Failed to load ICMP Group (sysctl)\n"));
+	DEBUGMSGTL(("mibII/icmp", "Failed to load ICMP Group (netbsd)\n"));
     } else {
-        DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (sysctl)\n"));
+	DEBUGMSGTL(("mibII/icmp", "Loaded ICMP Group (netbsd)\n"));
     }
+    icmp_stats_load(cache, vmagic);
+    icmp_msg_stats_load(cache, vmagic);
     return ret_value;
 }
 #elif defined(HAVE_SYS_TCPIPSTATS_H)
diff --git a/agent/mibgroup/mibII/icmp.h b/agent/mibgroup/mibII/icmp.h
index cdaac5d..d07841a 100644
--- a/agent/mibgroup/mibII/icmp.h
+++ b/agent/mibgroup/mibII/icmp.h
@@ -5,15 +5,32 @@
 #ifndef _MIBGROUP_ICMP_H
 #define _MIBGROUP_ICMP_H
 
-config_arch_require(solaris2,        kernel_sunos5)
+config_arch_require(solaris2,  kernel_sunos5)
 config_arch_require(linux,     mibII/kernel_linux)
+config_arch_require(freebsd4,  mibII/kernel_sysctl)
+config_arch_require(freebsd5,  mibII/kernel_sysctl)
+config_arch_require(freebsd6,  mibII/kernel_sysctl)
+config_arch_require(freebsd7,  mibII/kernel_sysctl)
+config_arch_require(freebsd8,  mibII/kernel_sysctl)
+config_arch_require(freebsd9,  mibII/kernel_sysctl)
+config_arch_require(freebsd10, mibII/kernel_sysctl)
 config_arch_require(netbsd,    mibII/kernel_netbsd)
 config_arch_require(netbsdelf, mibII/kernel_netbsd)
+config_arch_require(openbsd4,  mibII/kernel_sysctl)
+config_arch_require(openbsd5,  mibII/kernel_sysctl)
+config_arch_require(dragonfly2, mibII/kernel_sysctl)
+config_arch_require(dragonfly3, mibII/kernel_sysctl)
+config_arch_require(darwin10,  mibII/kernel_sysctl)
+config_arch_require(darwin11,  mibII/kernel_sysctl)
+config_arch_require(darwin12,  mibII/kernel_sysctl)
+config_arch_require(darwin13,  mibII/kernel_sysctl)
 
 #include <net-snmp/agent/cache_handler.h>
 
 extern void     init_icmp(void);
 extern Netsnmp_Node_Handler icmp_handler;
+extern Netsnmp_Node_Handler icmp_stats_table_handler;
+extern Netsnmp_Node_Handler icmp_msg_stats_table_handler;
 extern NetsnmpCacheLoad icmp_load;
 extern NetsnmpCacheFree icmp_free;
 
@@ -44,4 +61,17 @@
 #define ICMPOUTADDRMASKS     25
 #define ICMPOUTADDRMASKREPS  26
 
+#define ICMPSTATSTABLE       29
+#define ICMP_STAT_IPVER       1
+#define ICMP_STAT_INMSG       2 
+#define ICMP_STAT_INERR       3 
+#define ICMP_STAT_OUTMSG      4 
+#define ICMP_STAT_OUTERR      5 
+
+#define ICMPMSGSTATSTABLE     30
+#define ICMP_MSG_STAT_IPVER    1
+#define ICMP_MSG_STAT_TYPE     2
+#define ICMP_MSG_STAT_IN_PKTS  3
+#define ICMP_MSG_STAT_OUT_PKTS 4
+
 #endif                          /* _MIBGROUP_ICMP_H */
diff --git a/agent/mibgroup/mibII/interfaces.c b/agent/mibgroup/mibII/interfaces.c
index c896ff2..26ffebb 100644
--- a/agent/mibgroup/mibII/interfaces.c
+++ b/agent/mibgroup/mibII/interfaces.c
@@ -15,8 +15,11 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
-#if defined(IFNET_NEEDS_KERNEL) && !defined(_KERNEL) && !defined(IFNET_NEEDS_KERNEL_LATE)
+netsnmp_feature_provide(interface_legacy)
+
+#if defined(NETSNMP_IFNET_NEEDS_KERNEL) && !defined(_KERNEL) && !defined(NETSNMP_IFNET_NEEDS_KERNEL_LATE)
 #define _KERNEL 1
 #define _I_DEFINED_KERNEL
 #endif
@@ -37,10 +40,7 @@
 #include <sys/param.h>
 #endif
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-#if defined(IFNET_NEEDS_KERNEL) && !defined(_KERNEL) && defined(IFNET_NEEDS_KERNEL_LATE)
+#if defined(NETSNMP_IFNET_NEEDS_KERNEL) && !defined(_KERNEL) && defined(NETSNMP_IFNET_NEEDS_KERNEL_LATE)
 #define _KERNEL 1
 #define _I_DEFINED_KERNEL
 #endif
@@ -57,11 +57,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
@@ -197,49 +193,79 @@
 #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/sysORTable.h>
 #include <net-snmp/data_access/interface.h>
 
 #include "interfaces.h"
 #include "struct.h"
 #include "util_funcs.h"
-#include "sysORTable.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[] = {
-    {IFNUMBER, ASN_INTEGER, RONLY, var_interfaces, 1, {1}},
-    {IFINDEX, ASN_INTEGER, RONLY, var_ifEntry, 3, {2, 1, 1}},
-    {IFDESCR, ASN_OCTET_STR, RONLY, var_ifEntry, 3, {2, 1, 2}},
-    {NETSNMP_IFTYPE, ASN_INTEGER, RONLY, var_ifEntry, 3, {2, 1, 3}},
-    {IFMTU, ASN_INTEGER, RONLY, var_ifEntry, 3, {2, 1, 4}},
-    {IFSPEED, ASN_GAUGE, RONLY, var_ifEntry, 3, {2, 1, 5}},
-    {IFPHYSADDRESS, ASN_OCTET_STR, RONLY, var_ifEntry, 3, {2, 1, 6}},
+    {NETSNMP_IFNUMBER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_interfaces, 1, {1}},
+    {NETSNMP_IFINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 1}},
+    {NETSNMP_IFDESCR, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 2}},
+    {NETSNMP_IFTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 3}},
+    {NETSNMP_IFMTU, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 4}},
+    {NETSNMP_IFSPEED, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 5}},
+    {NETSNMP_IFPHYSADDRESS, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 6}},
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #if defined (WIN32) || defined (cygwin)
-    {IFADMINSTATUS, ASN_INTEGER, RWRITE, var_ifEntry, 3, {2, 1, 7}},
+    {NETSNMP_IFADMINSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ifEntry, 3, {2, 1, 7}},
 #else
-    {IFADMINSTATUS, ASN_INTEGER, RONLY, var_ifEntry, 3, {2, 1, 7}},
+    {NETSNMP_IFADMINSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 7}},
 #endif
-    {IFOPERSTATUS, ASN_INTEGER, RONLY, var_ifEntry, 3, {2, 1, 8}},
-    {IFLASTCHANGE, ASN_TIMETICKS, RONLY, var_ifEntry, 3, {2, 1, 9}},
-    {IFINOCTETS, ASN_COUNTER, RONLY, var_ifEntry, 3, {2, 1, 10}},
-    {IFINUCASTPKTS, ASN_COUNTER, RONLY, var_ifEntry, 3, {2, 1, 11}},
-    {IFINNUCASTPKTS, ASN_COUNTER, RONLY, var_ifEntry, 3, {2, 1, 12}},
-    {IFINDISCARDS, ASN_COUNTER, RONLY, var_ifEntry, 3, {2, 1, 13}},
-    {IFINERRORS, ASN_COUNTER, RONLY, var_ifEntry, 3, {2, 1, 14}},
-    {IFINUNKNOWNPROTOS, ASN_COUNTER, RONLY, var_ifEntry, 3, {2, 1, 15}},
-    {IFOUTOCTETS, ASN_COUNTER, RONLY, var_ifEntry, 3, {2, 1, 16}},
-    {IFOUTUCASTPKTS, ASN_COUNTER, RONLY, var_ifEntry, 3, {2, 1, 17}},
-    {IFOUTNUCASTPKTS, ASN_COUNTER, RONLY, var_ifEntry, 3, {2, 1, 18}},
-    {IFOUTDISCARDS, ASN_COUNTER, RONLY, var_ifEntry, 3, {2, 1, 19}},
-    {IFOUTERRORS, ASN_COUNTER, RONLY, var_ifEntry, 3, {2, 1, 20}},
-    {IFOUTQLEN, ASN_GAUGE, RONLY, var_ifEntry, 3, {2, 1, 21}},
-    {IFSPECIFIC, ASN_OBJECT_ID, RONLY, var_ifEntry, 3, {2, 1, 22}}
+#else  /* !NETSNMP_NO_WRITE_SUPPORT */
+    {NETSNMP_IFADMINSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 7}},
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+    {NETSNMP_IFOPERSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 8}},
+    {NETSNMP_IFLASTCHANGE, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 9}},
+    {NETSNMP_IFINOCTETS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 10}},
+    {NETSNMP_IFINUCASTPKTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 11}},
+    {NETSNMP_IFINNUCASTPKTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 12}},
+    {NETSNMP_IFINDISCARDS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 13}},
+    {NETSNMP_IFINERRORS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 14}},
+    {NETSNMP_IFINUNKNOWNPROTOS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 15}},
+    {NETSNMP_IFOUTOCTETS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 16}},
+    {NETSNMP_IFOUTUCASTPKTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 17}},
+    {NETSNMP_IFOUTNUCASTPKTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 18}},
+    {NETSNMP_IFOUTDISCARDS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 19}},
+    {NETSNMP_IFOUTERRORS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 20}},
+    {NETSNMP_IFOUTQLEN, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 21}},
+    {NETSNMP_IFSPECIFIC, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_ifEntry, 3, {2, 1, 22}}
 };
 
 /*
@@ -385,7 +411,7 @@
         return NULL;
 
     switch (vp->magic) {
-    case IFNUMBER:
+    case NETSNMP_IFNUMBER:
         long_return = Interface_Scan_Get_Count();
         return (u_char *) & long_return;
     default:
@@ -572,10 +598,10 @@
     if_ptr = netsnmp_access_interface_entry_overrides_get(if_name);
 
     switch (vp->magic) {
-    case IFINDEX:
+    case NETSNMP_IFINDEX:
         long_return = interface;
         return (u_char *) & long_return;
-    case IFDESCR:
+    case NETSNMP_IFDESCR:
         cp = if_name;
         *var_len = strlen(if_name);
         return (u_char *) cp;
@@ -585,14 +611,14 @@
         else
         long_return = (long) if_msg.ifm_data.ifi_type;
         return (u_char *) & long_return;
-    case IFMTU:
+    case NETSNMP_IFMTU:
         long_return = (long) if_msg.ifm_data.ifi_mtu;
         return (u_char *) & long_return;
-    case IFSPEED:
+    case NETSNMP_IFSPEED:
         if (if_ptr)
             long_return = if_ptr->speed;
         else {
-#if STRUCT_IFNET_HAS_IF_BAUDRATE_IFS_VALUE
+#if HAVE_STRUCT_IFNET_IF_BAUDRATE_IFS_VALUE
         long_return = (u_long) if_msg.ifm_data.ifi_baudrate.ifs_value <<
             if_msg.ifm_data.ifi_baudrate.ifs_log2;
 #else
@@ -600,52 +626,52 @@
 #endif
         }
         return (u_char *) & long_return;
-    case IFPHYSADDRESS:
+    case NETSNMP_IFPHYSADDRESS:
         /*
          * XXX 
          */
         return NULL;
-    case IFADMINSTATUS:
+    case NETSNMP_IFADMINSTATUS:
         long_return = if_msg.ifm_flags & IFF_UP ? 1 : 2;
         return (u_char *) & long_return;
-    case IFOPERSTATUS:
+    case NETSNMP_IFOPERSTATUS:
         long_return = if_msg.ifm_flags & IFF_RUNNING ? 1 : 2;
         return (u_char *) & long_return;
         /*
          * ifLastChange 
          */
-    case IFINOCTETS:
+    case NETSNMP_IFINOCTETS:
         long_return = (u_long) if_msg.ifm_data.ifi_ibytes;
         return (u_char *) & long_return;
-    case IFINUCASTPKTS:
+    case NETSNMP_IFINUCASTPKTS:
         long_return =
             (u_long) if_msg.ifm_data.ifi_ipackets -
             if_msg.ifm_data.ifi_imcasts;
         return (u_char *) & long_return;
-    case IFINNUCASTPKTS:
+    case NETSNMP_IFINNUCASTPKTS:
         long_return = (u_long) if_msg.ifm_data.ifi_imcasts;
         return (u_char *) & long_return;
-    case IFINDISCARDS:
+    case NETSNMP_IFINDISCARDS:
         long_return = (u_long) if_msg.ifm_data.ifi_iqdrops;
         return (u_char *) & long_return;
-    case IFINERRORS:
+    case NETSNMP_IFINERRORS:
         long_return = (u_long) if_msg.ifm_data.ifi_ierrors;
         return (u_char *) & long_return;
-    case IFINUNKNOWNPROTOS:
+    case NETSNMP_IFINUNKNOWNPROTOS:
         long_return = (u_long) if_msg.ifm_data.ifi_noproto;
         return (u_char *) & long_return;
-    case IFOUTOCTETS:
+    case NETSNMP_IFOUTOCTETS:
         long_return = (u_long) if_msg.ifm_data.ifi_obytes;
         return (u_char *) & long_return;
-    case IFOUTUCASTPKTS:
+    case NETSNMP_IFOUTUCASTPKTS:
         long_return =
             (u_long) if_msg.ifm_data.ifi_opackets -
             if_msg.ifm_data.ifi_omcasts;
         return (u_char *) & long_return;
-    case IFOUTNUCASTPKTS:
+    case NETSNMP_IFOUTNUCASTPKTS:
         long_return = (u_long) if_msg.ifm_data.ifi_omcasts;
         return (u_char *) & long_return;
-    case IFOUTDISCARDS:
+    case NETSNMP_IFOUTDISCARDS:
 #ifdef if_odrops
         long_return = (u_long) if_msg.ifm_data.ifi_odrops;
 #else
@@ -655,10 +681,10 @@
         long_return = 0;
 #endif
         return (u_char *) & long_return;
-    case IFOUTERRORS:
+    case NETSNMP_IFOUTERRORS:
         long_return = (u_long) if_msg.ifm_data.ifi_oerrors;
         return (u_char *) & long_return;
-    case IFLASTCHANGE:
+    case NETSNMP_IFLASTCHANGE:
 #ifdef irix6
         long_return = 0;
 #else
@@ -752,9 +778,6 @@
     static char     Name[16];
     char           *cp;
     conf_if_list   *if_ptr;
-#if STRUCT_IFNET_HAS_IF_LASTCHANGE_TV_SEC
-    struct timeval  now;
-#endif
 
     interface =
         header_ifEntry(vp, name, length, exact, var_len, write_method);
@@ -765,10 +788,10 @@
     if_ptr = netsnmp_access_interface_entry_overrides_get(Name);
 
     switch (vp->magic) {
-    case IFINDEX:
+    case NETSNMP_IFINDEX:
         long_return = interface;
         return (u_char *) & long_return;
-    case IFDESCR:
+    case NETSNMP_IFDESCR:
         cp = Name;
         *var_len = strlen(cp);
         return (u_char *) cp;
@@ -776,26 +799,26 @@
         if (if_ptr)
             long_return = if_ptr->type;
         else {
-#if STRUCT_IFNET_HAS_IF_TYPE
+#if HAVE_STRUCT_IFNET_IF_TYPE
             long_return = ifnet.if_type;
 #else
             long_return = 1;    /* OTHER */
 #endif
         }
         return (u_char *) & long_return;
-    case IFMTU:{
+    case NETSNMP_IFMTU:{
             long_return = (long) ifnet.if_mtu;
             return (u_char *) & long_return;
         }
-    case IFSPEED:
+    case NETSNMP_IFSPEED:
         if (if_ptr)
             long_return = if_ptr->speed;
         else {
-#if STRUCT_IFNET_HAS_IF_BAUDRATE
+#if HAVE_STRUCT_IFNET_IF_BAUDRATE
             long_return = ifnet.if_baudrate;
-#elif STRUCT_IFNET_HAS_IF_SPEED
+#elif HAVE_STRUCT_IFNET_IF_SPEED
             long_return = ifnet.if_speed;
-#elif STRUCT_IFNET_HAS_IF_TYPE && defined(IFT_ETHER)
+#elif HAVE_STRUCT_IFNET_IF_TYPE && defined(IFT_ETHER)
             if (ifnet.if_type == IFT_ETHER)
                 long_return = 10000000;
             if (ifnet.if_type == IFT_P10)
@@ -814,9 +837,9 @@
 #endif
         }
         return (u_char *) & long_return;
-    case IFPHYSADDRESS:
+    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) &&
@@ -827,14 +850,14 @@
             *var_len = 6;
 #endif
         return (u_char *) return_buf;
-    case IFADMINSTATUS:
+    case NETSNMP_IFADMINSTATUS:
         long_return = ifnet.if_flags & IFF_UP ? 1 : 2;
         return (u_char *) & long_return;
-    case IFOPERSTATUS:
+    case NETSNMP_IFOPERSTATUS:
         long_return = ifnet.if_flags & IFF_RUNNING ? 1 : 2;
         return (u_char *) & long_return;
-    case IFLASTCHANGE:
-#if defined(STRUCT_IFNET_HAS_IF_LASTCHANGE_TV_SEC) && !(defined(freebsd2) && __FreeBSD_version < 199607)
+    case NETSNMP_IFLASTCHANGE:
+#if defined(HAVE_STRUCT_IFNET_IF_LASTCHANGE_TV_SEC) && !(defined(freebsd2) && __FreeBSD_version < 199607)
         /*
          * XXX - SNMP's ifLastchange is time when op. status changed
          * * FreeBSD's if_lastchange is time when packet was input or output
@@ -863,9 +886,9 @@
         long_return = 0;        /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFINOCTETS:
-#ifdef STRUCT_IFNET_HAS_IF_IBYTES
-#if defined(aix4) || defined(aix5) || defined(aix6)
+    case NETSNMP_IFINOCTETS:
+#ifdef HAVE_STRUCT_IFNET_IF_IBYTES
+#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;
@@ -877,15 +900,15 @@
         long_return = (u_long) ifnet.if_ipackets * 308; /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFINUCASTPKTS:
+    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 STRUCT_IFNET_HAS_IF_IMCASTS
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if HAVE_STRUCT_IFNET_IF_IMCASTS
+#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;
@@ -893,9 +916,9 @@
 #endif
         }
         return (u_char *) & long_return;
-    case IFINNUCASTPKTS:
-#if STRUCT_IFNET_HAS_IF_IMCASTS
-#if defined(aix4) || defined(aix5) || defined(aix6)
+    case NETSNMP_IFINNUCASTPKTS:
+#if HAVE_STRUCT_IFNET_IF_IMCASTS
+#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;
@@ -907,9 +930,9 @@
         long_return = (u_long) 0;       /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFINDISCARDS:
-#if STRUCT_IFNET_HAS_IF_IQDROPS
-#if defined(aix4) || defined(aix5) || defined(aix6)
+    case NETSNMP_IFINDISCARDS:
+#if HAVE_STRUCT_IFNET_IF_IQDROPS
+#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;
@@ -921,16 +944,16 @@
         long_return = (u_long) 0;       /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFINERRORS:
-#if defined(aix4) || defined(aix5) || defined(aix6)
+    case NETSNMP_IFINERRORS:
+#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;
 #endif
         return (u_char *) & long_return;
-    case IFINUNKNOWNPROTOS:
-#if STRUCT_IFNET_HAS_IF_NOPROTO
-#if defined(aix4) || defined(aix5) || defined(aix6)
+    case NETSNMP_IFINUNKNOWNPROTOS:
+#if HAVE_STRUCT_IFNET_IF_NOPROTO
+#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;
@@ -942,9 +965,9 @@
         long_return = (u_long) 0;       /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFOUTOCTETS:
-#ifdef STRUCT_IFNET_HAS_IF_OBYTES
-#if defined(aix4) || defined(aix5) || defined(aix6)
+    case NETSNMP_IFOUTOCTETS:
+#ifdef HAVE_STRUCT_IFNET_IF_OBYTES
+#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;
@@ -956,15 +979,15 @@
         long_return = (u_long) ifnet.if_opackets * 308; /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFOUTUCASTPKTS:
+    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 STRUCT_IFNET_HAS_IF_OMCASTS
-#if defined(aix4) || defined(aix5) || defined(aix6)
+#if HAVE_STRUCT_IFNET_IF_OMCASTS
+#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;
@@ -972,9 +995,9 @@
 #endif
         }
         return (u_char *) & long_return;
-    case IFOUTNUCASTPKTS:
-#if STRUCT_IFNET_HAS_IF_OMCASTS
-#if defined(aix4) || defined(aix5) || defined(aix6)
+    case NETSNMP_IFOUTNUCASTPKTS:
+#if HAVE_STRUCT_IFNET_IF_OMCASTS
+#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;
@@ -986,28 +1009,28 @@
         long_return = (u_long) 0;       /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFOUTDISCARDS:
-#if defined(aix4) || defined(aix5) || defined(aix6)
+    case NETSNMP_IFOUTDISCARDS:
+#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 IFOUTERRORS:
-#if defined(aix4) || defined(aix5) || defined(aix6)
+    case NETSNMP_IFOUTERRORS:
+#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 IFOUTQLEN:
-#if defined(aix4) || defined(aix5) || defined(aix6)
+    case NETSNMP_IFOUTQLEN:
+#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;
 #endif
         return (u_char *) & long_return;
-    case IFSPECIFIC:
+    case NETSNMP_IFSPECIFIC:
         *var_len = nullOidLen;
         return (u_char *) nullOid;
     default:
@@ -1040,7 +1063,7 @@
     static char     Name[16];
 #endif
     register char  *cp;
-#if STRUCT_IFNET_HAS_IF_LASTCHANGE_TV_SEC
+#if HAVE_STRUCT_IFNET_IF_LASTCHANGE_TV_SEC
     struct timeval  now;
 #endif
 #if !defined(hpux11)
@@ -1083,10 +1106,10 @@
     if_ptr = netsnmp_access_interface_entry_overrides_get(Name);
 
     switch (vp->magic) {
-    case IFINDEX:
+    case NETSNMP_IFINDEX:
         long_return = interface;
         return (u_char *) & long_return;
-    case IFDESCR:
+    case NETSNMP_IFDESCR:
 #if defined(hpux11)
         cp = ifnet.if_entry.ifDescr;
 #else
@@ -1111,7 +1134,7 @@
 #endif
         }
         return (u_char *) & long_return;
-    case IFMTU:{
+    case NETSNMP_IFMTU:{
 #if defined(hpux11)
             long_return = (long) ifnet.if_entry.ifMtu;
 #else
@@ -1119,7 +1142,7 @@
 #endif
             return (u_char *) & long_return;
         }
-    case IFSPEED:
+    case NETSNMP_IFSPEED:
         if (if_ptr)
             long_return = if_ptr->speed;
         else {
@@ -1133,7 +1156,7 @@
 #endif
         }
         return (u_char *) & long_return;
-    case IFPHYSADDRESS:
+    case NETSNMP_IFPHYSADDRESS:
 #if defined(hpux11)
         *var_len = ifnet.if_entry.ifPhysAddress.o_length;
         return (u_char *) ifnet.if_entry.ifPhysAddress.o_bytes;
@@ -1147,21 +1170,21 @@
             *var_len = 6;
         return (u_char *) return_buf;
 #endif
-    case IFADMINSTATUS:
+    case NETSNMP_IFADMINSTATUS:
 #if defined(hpux11)
         long_return = ifnet.if_entry.ifAdmin;
 #else
         long_return = ifnet.if_flags & IFF_UP ? 1 : 2;
 #endif
         return (u_char *) & long_return;
-    case IFOPERSTATUS:
+    case NETSNMP_IFOPERSTATUS:
 #if defined(hpux11)
         long_return = ifnet.if_entry.ifOper;
 #else
         long_return = ifnet.if_flags & IFF_RUNNING ? 1 : 2;
 #endif
         return (u_char *) & long_return;
-    case IFLASTCHANGE:
+    case NETSNMP_IFLASTCHANGE:
 #if defined(hpux11)
         long_return = ifnet.if_entry.ifLastChange;
 #else
@@ -1171,7 +1194,7 @@
             long_return = 0;    /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFINOCTETS:
+    case NETSNMP_IFINOCTETS:
 #if defined(hpux11)
         long_return = ifnet.if_entry.ifInOctets;
 #else
@@ -1181,7 +1204,7 @@
             long_return = (u_long) ifnet.if_ipackets * 308;     /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFINUCASTPKTS:
+    case NETSNMP_IFINUCASTPKTS:
 #if defined(hpux11)
         long_return = ifnet.if_entry.ifInUcastPkts;
 #else
@@ -1191,7 +1214,7 @@
             long_return = (u_long) ifnet.if_ipackets;
 #endif
         return (u_char *) & long_return;
-    case IFINNUCASTPKTS:
+    case NETSNMP_IFINNUCASTPKTS:
 #if defined(hpux11)
         long_return = ifnet.if_entry.ifInNUcastPkts;
 #else
@@ -1201,7 +1224,7 @@
             long_return = (u_long) 0;   /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFINDISCARDS:
+    case NETSNMP_IFINDISCARDS:
 #if defined(hpux11)
         long_return = ifnet.if_entry.ifInDiscards;
 #else
@@ -1211,14 +1234,14 @@
             long_return = (u_long) 0;   /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFINERRORS:
+    case NETSNMP_IFINERRORS:
 #if defined(hpux11)
         long_return = ifnet.if_entry.ifInErrors;
 #else
         long_return = ifnet.if_ierrors;
 #endif
         return (u_char *) & long_return;
-    case IFINUNKNOWNPROTOS:
+    case NETSNMP_IFINUNKNOWNPROTOS:
 #if defined(hpux11)
         long_return = ifnet.if_entry.ifInUnknownProtos;
 #else
@@ -1228,7 +1251,7 @@
             long_return = (u_long) 0;   /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFOUTOCTETS:
+    case NETSNMP_IFOUTOCTETS:
 #if defined(hpux11)
         long_return = ifnet.if_entry.ifOutOctets;
 #else
@@ -1238,7 +1261,7 @@
             long_return = (u_long) ifnet.if_opackets * 308;     /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFOUTUCASTPKTS:
+    case NETSNMP_IFOUTUCASTPKTS:
 #if defined(hpux11)
         long_return = ifnet.if_entry.ifOutUcastPkts;
 #else
@@ -1248,7 +1271,7 @@
             long_return = (u_long) ifnet.if_opackets;
 #endif
         return (u_char *) & long_return;
-    case IFOUTNUCASTPKTS:
+    case NETSNMP_IFOUTNUCASTPKTS:
 #if defined(hpux11)
         long_return = ifnet.if_entry.ifOutNUcastPkts;
 #else
@@ -1258,28 +1281,28 @@
             long_return = (u_long) 0;   /* XXX */
 #endif
         return (u_char *) & long_return;
-    case IFOUTDISCARDS:
+    case NETSNMP_IFOUTDISCARDS:
 #if defined(hpux11)
         long_return = ifnet.if_entry.ifOutDiscards;
 #else
         long_return = ifnet.if_snd.ifq_drops;
 #endif
         return (u_char *) & long_return;
-    case IFOUTERRORS:
+    case NETSNMP_IFOUTERRORS:
 #if defined(hpux11)
         long_return = ifnet.if_entry.ifOutErrors;
 #else
         long_return = ifnet.if_oerrors;
 #endif
         return (u_char *) & long_return;
-    case IFOUTQLEN:
+    case NETSNMP_IFOUTQLEN:
 #if defined(hpux11)
         long_return = ifnet.if_entry.ifOutQlen;
 #else
         long_return = ifnet.if_snd.ifq_len;
 #endif
         return (u_char *) & long_return;
-    case IFSPECIFIC:
+    case NETSNMP_IFSPECIFIC:
         *var_len = nullOidLen;
         return (u_char *) nullOid;
     default:
@@ -1331,10 +1354,10 @@
      * if_ptr = netsnmp_access_interface_entry_overrides_get(Name);
      */
     switch (vp->magic) {
-    case IFINDEX:
+    case NETSNMP_IFINDEX:
         long_return = ifstat.ifIndex;
         return (u_char *) & long_return;
-    case IFDESCR:
+    case NETSNMP_IFDESCR:
         *var_len = ifstat.ifDescr.o_length;
         (void) memcpy(return_buf, ifstat.ifDescr.o_bytes, *var_len);
         return (u_char *) return_buf;
@@ -1344,65 +1367,65 @@
         else
         long_return = (u_long) ifstat.ifType;
         return (u_char *) & long_return;
-    case IFMTU:
+    case NETSNMP_IFMTU:
         long_return = (u_long) ifstat.ifMtu;
         return (u_char *) & long_return;
-    case IFSPEED:
+    case NETSNMP_IFSPEED:
         if (if_ptr)
             long_return = if_ptr->speed;
         else
         long_return = (u_long) ifstat.ifSpeed;
         return (u_char *) & long_return;
-    case IFPHYSADDRESS:
+    case NETSNMP_IFPHYSADDRESS:
         *var_len = ifstat.ifPhysAddress.o_length;
         (void) memcpy(return_buf, ifstat.ifPhysAddress.o_bytes, *var_len);
         return (u_char *) return_buf;
-    case IFADMINSTATUS:
+    case NETSNMP_IFADMINSTATUS:
         long_return = (u_long) ifstat.ifAdminStatus;
         return (u_char *) & long_return;
-    case IFOPERSTATUS:
+    case NETSNMP_IFOPERSTATUS:
         long_return = (u_long) ifstat.ifOperStatus;
         return (u_char *) & long_return;
-    case IFLASTCHANGE:
+    case NETSNMP_IFLASTCHANGE:
         long_return = (u_long) ifstat.ifLastChange;
         return (u_char *) & long_return;
-    case IFINOCTETS:
+    case NETSNMP_IFINOCTETS:
         long_return = (u_long) ifstat.ifInOctets;
         return (u_char *) & long_return;
-    case IFINUCASTPKTS:
+    case NETSNMP_IFINUCASTPKTS:
         long_return = (u_long) ifstat.ifInUcastPkts;
         return (u_char *) & long_return;
-    case IFINNUCASTPKTS:
+    case NETSNMP_IFINNUCASTPKTS:
         long_return = (u_long) ifstat.ifInNUcastPkts;
         return (u_char *) & long_return;
-    case IFINDISCARDS:
+    case NETSNMP_IFINDISCARDS:
         long_return = (u_long) ifstat.ifInDiscards;
         return (u_char *) & long_return;
-    case IFINERRORS:
+    case NETSNMP_IFINERRORS:
         long_return = (u_long) ifstat.ifInErrors;
         return (u_char *) & long_return;
-    case IFINUNKNOWNPROTOS:
+    case NETSNMP_IFINUNKNOWNPROTOS:
         long_return = (u_long) ifstat.ifInUnknownProtos;
         return (u_char *) & long_return;
-    case IFOUTOCTETS:
+    case NETSNMP_IFOUTOCTETS:
         long_return = (u_long) ifstat.ifOutOctets;
         return (u_char *) & long_return;
-    case IFOUTUCASTPKTS:
+    case NETSNMP_IFOUTUCASTPKTS:
         long_return = (u_long) ifstat.ifOutUcastPkts;
         return (u_char *) & long_return;
-    case IFOUTNUCASTPKTS:
+    case NETSNMP_IFOUTNUCASTPKTS:
         long_return = (u_long) ifstat.ifOutNUcastPkts;
         return (u_char *) & long_return;
-    case IFOUTDISCARDS:
+    case NETSNMP_IFOUTDISCARDS:
         long_return = (u_long) ifstat.ifOutDiscards;
         return (u_char *) & long_return;
-    case IFOUTERRORS:
+    case NETSNMP_IFOUTERRORS:
         long_return = (u_long) ifstat.ifOutErrors;
         return (u_char *) & long_return;
-    case IFOUTQLEN:
+    case NETSNMP_IFOUTQLEN:
         long_return = (u_long) ifstat.ifOutQLen;
         return (u_char *) & long_return;
-    case IFSPECIFIC:
+    case NETSNMP_IFSPECIFIC:
 	long_return = (u_long) ifstat.ifSpecific;
 	return (u_char *) & long_return;
     default:
@@ -1502,7 +1525,7 @@
 
 #ifdef linux
     /*  disallow reloading of structures too often */
-    gettimeofday ( &et, ( struct timezone * ) 0 );  /*  get time-of-day */
+    netsnmp_get_monotonic_clock(&et);
     if ( et.tv_sec < LastLoad + MINLOADFREQ ) {     /*  only reload so often */
       ifnetaddr = ifnetaddr_list;                   /*  initialize pointer */
       return;
@@ -1538,7 +1561,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); **/
     }
 
@@ -1879,6 +1902,10 @@
 #ifdef linux
         strlcat(saveName, ifnet.if_unit, sizeof(saveName));
 #else
+#ifdef NETSNMP_FEATURE_CHECKIN
+        /* this exists here just so we don't copy ifdef logic elsewhere */
+        netsnmp_feature_require(string_append_int);
+#endif
         string_append_int(cp, ifnet.if_unit);
 #endif
         if (1 || strcmp(saveName, "lo0") != 0) {        /* XXX */
@@ -1947,10 +1974,13 @@
     int             ret;
 
     if (!if_ptr) {
-        if (count)
+        if (count) {
             if_ptr =
                 (nmapi_phystat *) malloc(sizeof(nmapi_phystat) * count);
-        else
+            if (if_ptr == NULL)
+                return (0);
+
+        } else
             return (0);         /* EOF */
     }
 
@@ -1997,7 +2027,7 @@
     struct ifnet    ifnet;
     struct in_ifaddr *ia, in_ifaddr;
     short           has_ipaddr = 0;
-#if !STRUCT_IFNET_HAS_IF_XNAME
+#if !HAVE_STRUCT_IFNET_IF_XNAME
     register char  *cp;
 #endif
 
@@ -2009,7 +2039,7 @@
             DEBUGMSGTL(("mibII/interfaces:Interface_Scan_Next", "klookup failed\n"));
             break;
         }
-#if STRUCT_IFNET_HAS_IF_XNAME
+#if HAVE_STRUCT_IFNET_IF_XNAME
 #if defined(netbsd1) || defined(openbsd2)
         strlcpy(saveName, ifnet.if_xname, sizeof(saveName));
 #else
@@ -2027,6 +2057,10 @@
 
         saveName[sizeof(saveName) - 1] = '\0';
         cp = strchr(saveName, '\0');
+#ifdef NETSNMP_FEATURE_CHECKIN
+        /* this exists here just so we don't copy ifdef logic elsewhere */
+        netsnmp_feature_require(string_append_int);
+#endif
         string_append_int(cp, ifnet.if_unit);
 #endif
         if (1 || strcmp(saveName, "lo0") != 0) {        /* XXX */
@@ -2068,7 +2102,7 @@
 #endif
             }
 
-#if !defined(netbsd1) && !defined(freebsd2) && !defined(openbsd2) && !defined(STRUCT_IFNET_HAS_IF_ADDRLIST)
+#if !defined(netbsd1) && !defined(freebsd2) && !defined(openbsd2) && !defined(HAVE_STRUCT_IFNET_IF_ADDRLIST)
             ifnet.if_addrlist = (struct ifaddr *) ia;   /* WRONG DATA TYPE; ONLY A FLAG */
 #endif
             /*
@@ -2529,10 +2563,10 @@
      */
 
     switch (vp->magic) {
-    case IFINDEX:
+    case NETSNMP_IFINDEX:
         long_return = interface;
         return (u_char *) & long_return;
-    case IFDESCR:
+    case NETSNMP_IFDESCR:
         cp = ifmd.ifmd_name;
         *var_len = strlen(cp);
         return (u_char *) cp;
@@ -2542,16 +2576,16 @@
         else
         long_return = ifmd.ifmd_data.ifi_type;
         return (u_char *) & long_return;
-    case IFMTU:
+    case NETSNMP_IFMTU:
         long_return = (long) ifmd.ifmd_data.ifi_mtu;
         return (u_char *) & long_return;
-    case IFSPEED:
+    case NETSNMP_IFSPEED:
         if (if_ptr)
             long_return = if_ptr->speed;
         else
         long_return = ifmd.ifmd_data.ifi_baudrate;
         return (u_char *) & long_return;
-    case IFPHYSADDRESS:
+    case NETSNMP_IFPHYSADDRESS:
         {
             char           *cp;
             if (get_phys_address(interface, &cp, var_len))
@@ -2559,13 +2593,13 @@
             else
                 return cp;
         }
-    case IFADMINSTATUS:
+    case NETSNMP_IFADMINSTATUS:
         long_return = ifmd.ifmd_flags & IFF_UP ? 1 : 2;
         return (u_char *) & long_return;
-    case IFOPERSTATUS:
+    case NETSNMP_IFOPERSTATUS:
         long_return = ifmd.ifmd_flags & IFF_RUNNING ? 1 : 2;
         return (u_char *) & long_return;
-    case IFLASTCHANGE:
+    case NETSNMP_IFLASTCHANGE:
         if (ifmd.ifmd_data.ifi_lastchange.tv_sec == 0 &&
             ifmd.ifmd_data.ifi_lastchange.tv_usec == 0) {
             long_return = 0;
@@ -2579,45 +2613,45 @@
                    starttime.tv_usec) / 10000));
         }
         return (u_char *) & long_return;
-    case IFINOCTETS:
+    case NETSNMP_IFINOCTETS:
         long_return = (u_long) ifmd.ifmd_data.ifi_ibytes;
         return (u_char *) & long_return;
-    case IFINUCASTPKTS:
+    case NETSNMP_IFINUCASTPKTS:
         long_return = (u_long) ifmd.ifmd_data.ifi_ipackets;
         long_return -= (u_long) ifmd.ifmd_data.ifi_imcasts;
         return (u_char *) & long_return;
-    case IFINNUCASTPKTS:
+    case NETSNMP_IFINNUCASTPKTS:
         long_return = (u_long) ifmd.ifmd_data.ifi_imcasts;
         return (u_char *) & long_return;
-    case IFINDISCARDS:
+    case NETSNMP_IFINDISCARDS:
         long_return = (u_long) ifmd.ifmd_data.ifi_iqdrops;
         return (u_char *) & long_return;
-    case IFINERRORS:
+    case NETSNMP_IFINERRORS:
         long_return = ifmd.ifmd_data.ifi_ierrors;
         return (u_char *) & long_return;
-    case IFINUNKNOWNPROTOS:
+    case NETSNMP_IFINUNKNOWNPROTOS:
         long_return = (u_long) ifmd.ifmd_data.ifi_noproto;
         return (u_char *) & long_return;
-    case IFOUTOCTETS:
+    case NETSNMP_IFOUTOCTETS:
         long_return = (u_long) ifmd.ifmd_data.ifi_obytes;
         return (u_char *) & long_return;
-    case IFOUTUCASTPKTS:
+    case NETSNMP_IFOUTUCASTPKTS:
         long_return = (u_long) ifmd.ifmd_data.ifi_opackets;
         long_return -= (u_long) ifmd.ifmd_data.ifi_omcasts;
         return (u_char *) & long_return;
-    case IFOUTNUCASTPKTS:
+    case NETSNMP_IFOUTNUCASTPKTS:
         long_return = (u_long) ifmd.ifmd_data.ifi_omcasts;
         return (u_char *) & long_return;
-    case IFOUTDISCARDS:
+    case NETSNMP_IFOUTDISCARDS:
         long_return = ifmd.ifmd_snd_drops;
         return (u_char *) & long_return;
-    case IFOUTERRORS:
+    case NETSNMP_IFOUTERRORS:
         long_return = ifmd.ifmd_data.ifi_oerrors;
         return (u_char *) & long_return;
-    case IFOUTQLEN:
+    case NETSNMP_IFOUTQLEN:
         long_return = ifmd.ifmd_snd_len;
         return (u_char *) & long_return;
-    case IFSPECIFIC:
+    case NETSNMP_IFSPECIFIC:
         *var_len = nullOidLen;
         return (u_char *) nullOid;
     default:
@@ -2630,10 +2664,12 @@
 #endif                          /* HAVE_NET_IF_MIB_H */
 #endif                          /* !USE_SYSCTL_IFLIST */
 
-#else                           /* WIN32 cygwin */
+#elif defined(HAVE_IPHLPAPI_H)  /* WIN32 cygwin */
 #include <iphlpapi.h>
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 WriteMethod     writeIfEntry;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 long            admin_status = 0;
 long            oldadmin_status = 0;
 
@@ -2712,7 +2748,7 @@
         return NULL;
 
     switch (vp->magic) {
-    case IFNUMBER:
+    case NETSNMP_IFNUMBER:
         netsnmp_assert(sizeof(DWORD) == sizeof(long_return));
         GetNumberOfInterfaces((DWORD *) &long_return);
         return (u_char *) & long_return;
@@ -2750,10 +2786,10 @@
     if (GetIfEntry(&ifRow) != NO_ERROR)
         return NULL;
     switch (vp->magic) {
-    case IFINDEX:
+    case NETSNMP_IFINDEX:
         long_return = ifIndex;
         return (u_char *) & long_return;
-    case IFDESCR:
+    case NETSNMP_IFDESCR:
         *var_len = ifRow.dwDescrLen;
         return (u_char *) ifRow.bDescr;
     case NETSNMP_IFTYPE:
@@ -2762,68 +2798,70 @@
         else
         long_return = ifRow.dwType;
         return (u_char *) & long_return;
-    case IFMTU:
+    case NETSNMP_IFMTU:
         long_return = (long) ifRow.dwMtu;
         return (u_char *) & long_return;
-    case IFSPEED:
+    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;
-    case IFPHYSADDRESS:
+    case NETSNMP_IFPHYSADDRESS:
         *var_len = ifRow.dwPhysAddrLen;
         memcpy(return_buf, ifRow.bPhysAddr, *var_len);
         return (u_char *) return_buf;
-    case IFADMINSTATUS:
+    case NETSNMP_IFADMINSTATUS:
         long_return = ifRow.dwAdminStatus;
         admin_status = long_return;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = writeIfEntry;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         return (u_char *) & long_return;
-    case IFOPERSTATUS:
+    case NETSNMP_IFOPERSTATUS:
         long_return =
            (MIB_IF_OPER_STATUS_OPERATIONAL == ifRow.dwOperStatus) ? 1 : 2;
         return (u_char *) & long_return;
-    case IFLASTCHANGE:
+    case NETSNMP_IFLASTCHANGE:
         long_return = 0 /* XXX not a UNIX epochal time ifRow.dwLastChange */ ;
         return (u_char *) & long_return;
-    case IFINOCTETS:
+    case NETSNMP_IFINOCTETS:
         long_return = ifRow.dwInOctets;
         return (u_char *) & long_return;
-    case IFINUCASTPKTS:
+    case NETSNMP_IFINUCASTPKTS:
         long_return = ifRow.dwInUcastPkts;
         return (u_char *) & long_return;
-    case IFINNUCASTPKTS:
+    case NETSNMP_IFINNUCASTPKTS:
         long_return = ifRow.dwInNUcastPkts;
         return (u_char *) & long_return;
-    case IFINDISCARDS:
+    case NETSNMP_IFINDISCARDS:
         long_return = ifRow.dwInDiscards;
         return (u_char *) & long_return;
-    case IFINERRORS:
+    case NETSNMP_IFINERRORS:
         long_return = ifRow.dwInErrors;
         return (u_char *) & long_return;
-    case IFINUNKNOWNPROTOS:
+    case NETSNMP_IFINUNKNOWNPROTOS:
         long_return = ifRow.dwInUnknownProtos;
         return (u_char *) & long_return;
-    case IFOUTOCTETS:
+    case NETSNMP_IFOUTOCTETS:
         long_return = ifRow.dwOutOctets;
         return (u_char *) & long_return;
-    case IFOUTUCASTPKTS:
+    case NETSNMP_IFOUTUCASTPKTS:
         long_return = ifRow.dwOutUcastPkts;
         return (u_char *) & long_return;
-    case IFOUTNUCASTPKTS:
+    case NETSNMP_IFOUTNUCASTPKTS:
         long_return = ifRow.dwOutNUcastPkts;
         return (u_char *) & long_return;
-    case IFOUTDISCARDS:
+    case NETSNMP_IFOUTDISCARDS:
         long_return = ifRow.dwOutDiscards;
         return (u_char *) & long_return;
-    case IFOUTERRORS:
+    case NETSNMP_IFOUTERRORS:
         long_return = ifRow.dwOutErrors;
         return (u_char *) & long_return;
-    case IFOUTQLEN:
+    case NETSNMP_IFOUTQLEN:
         long_return = ifRow.dwOutQLen;
         return (u_char *) & long_return;
-    case IFSPECIFIC:
+    case NETSNMP_IFSPECIFIC:
         *var_len = nullOidLen;
         return (u_char *) nullOid;
     default:
@@ -2834,6 +2872,7 @@
 }
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 writeIfEntry(int action,
              u_char * var_val,
@@ -2842,7 +2881,7 @@
              u_char * statP, oid * name, size_t name_len)
 {
     MIB_IFROW       ifEntryRow;
-    if ((char) name[9] != IFADMINSTATUS) {
+    if ((char) name[9] != NETSNMP_IFADMINSTATUS) {
         return SNMP_ERR_NOTWRITABLE;
     }
 
@@ -2905,4 +2944,5 @@
     }
     return SNMP_ERR_NOERROR;
 }                               /* end of writeIfEntry */
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
 #endif                          /* WIN32 cygwin */
diff --git a/agent/mibgroup/mibII/interfaces.h b/agent/mibgroup/mibII/interfaces.h
index 51d4b1d..c19b7a6 100644
--- a/agent/mibgroup/mibII/interfaces.h
+++ b/agent/mibgroup/mibII/interfaces.h
@@ -8,7 +8,7 @@
 /***********************************************************************
  * configure macros
  */
-config_require(util_funcs)
+config_require(util_funcs/header_generic)
 
 /*
  * conflicts with the new MFD rewrite
@@ -61,29 +61,29 @@
 
 #endif /* USING_IF_MIB_IFTABLE_MODULE */
 
-#define IFNUMBER        0
-#define IFINDEX         1
-#define IFDESCR         2
+#define NETSNMP_IFNUMBER        0
+#define NETSNMP_IFINDEX         1
+#define NETSNMP_IFDESCR         2
 #define NETSNMP_IFTYPE          3
-#define IFMTU           4
-#define IFSPEED         5
-#define IFPHYSADDRESS   6
-#define IFADMINSTATUS   7
-#define IFOPERSTATUS    8
-#define IFLASTCHANGE    9
-#define IFINOCTETS      10
-#define IFINUCASTPKTS   11
-#define IFINNUCASTPKTS  12
-#define IFINDISCARDS    13
-#define IFINERRORS      14
-#define IFINUNKNOWNPROTOS 15
-#define IFOUTOCTETS     16
-#define IFOUTUCASTPKTS  17
-#define IFOUTNUCASTPKTS 18
-#define IFOUTDISCARDS   19
-#define IFOUTERRORS     20
-#define IFOUTQLEN       21
-#define IFSPECIFIC      22
+#define NETSNMP_IFMTU           4
+#define NETSNMP_IFSPEED         5
+#define NETSNMP_IFPHYSADDRESS   6
+#define NETSNMP_IFADMINSTATUS   7
+#define NETSNMP_IFOPERSTATUS    8
+#define NETSNMP_IFLASTCHANGE    9
+#define NETSNMP_IFINOCTETS      10
+#define NETSNMP_IFINUCASTPKTS   11
+#define NETSNMP_IFINNUCASTPKTS  12
+#define NETSNMP_IFINDISCARDS    13
+#define NETSNMP_IFINERRORS      14
+#define NETSNMP_IFINUNKNOWNPROTOS 15
+#define NETSNMP_IFOUTOCTETS     16
+#define NETSNMP_IFOUTUCASTPKTS  17
+#define NETSNMP_IFOUTNUCASTPKTS 18
+#define NETSNMP_IFOUTDISCARDS   19
+#define NETSNMP_IFOUTERRORS     20
+#define NETSNMP_IFOUTQLEN       21
+#define NETSNMP_IFSPECIFIC      22
 
 #ifdef linux
 /*
diff --git a/agent/mibgroup/mibII/ip.c b/agent/mibgroup/mibII/ip.c
index 6717e2e..f39d322 100644
--- a/agent/mibgroup/mibII/ip.c
+++ b/agent/mibgroup/mibII/ip.c
@@ -19,12 +19,12 @@
 #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/sysORTable.h>
 
-#include "util_funcs.h"
+#include "util_funcs/MIB_STATS_CACHE_TIMEOUT.h"
 #include "ip.h"
 #include "ipAddr.h"
 #include "interfaces.h"
-#include "sysORTable.h"
 
 #ifndef MIB_STATS_CACHE_TIMEOUT
 #define MIB_STATS_CACHE_TIMEOUT	5
@@ -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;
@@ -64,43 +67,69 @@
  * information at 
  */
 struct variable1 ipaddr_variables[] = {
-    {IPADADDR,      ASN_IPADDRESS, RONLY, var_ipAddrEntry, 1, {1}},
-    {IPADIFINDEX,   ASN_INTEGER,   RONLY, var_ipAddrEntry, 1, {2}},
+    {IPADADDR,      ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ipAddrEntry, 1, {1}},
+    {IPADIFINDEX,   ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_ipAddrEntry, 1, {2}},
 #ifndef sunV3
-    {IPADNETMASK,   ASN_IPADDRESS, RONLY, var_ipAddrEntry, 1, {3}},
+    {IPADNETMASK,   ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ipAddrEntry, 1, {3}},
 #endif
-    {IPADBCASTADDR, ASN_INTEGER,   RONLY, var_ipAddrEntry, 1, {4}},
-    {IPADREASMMAX,  ASN_INTEGER,   RONLY, var_ipAddrEntry, 1, {5}}
+    {IPADBCASTADDR, ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_ipAddrEntry, 1, {4}},
+    {IPADREASMMAX,  ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_ipAddrEntry, 1, {5}}
 };
 
 struct variable1 iproute_variables[] = {
-    {IPROUTEDEST,    ASN_IPADDRESS, RWRITE, var_ipRouteEntry, 1, {1}},
-    {IPROUTEIFINDEX, ASN_INTEGER,   RWRITE, var_ipRouteEntry, 1, {2}},
-    {IPROUTEMETRIC1, ASN_INTEGER,   RWRITE, var_ipRouteEntry, 1, {3}},
-    {IPROUTEMETRIC2, ASN_INTEGER,   RWRITE, var_ipRouteEntry, 1, {4}},
-    {IPROUTEMETRIC3, ASN_INTEGER,   RWRITE, var_ipRouteEntry, 1, {5}},
-    {IPROUTEMETRIC4, ASN_INTEGER,   RWRITE, var_ipRouteEntry, 1, {6}},
-    {IPROUTENEXTHOP, ASN_IPADDRESS, RWRITE, var_ipRouteEntry, 1, {7}},
-    {IPROUTETYPE,    ASN_INTEGER,   RWRITE, var_ipRouteEntry, 1, {8}},
-    {IPROUTEPROTO,   ASN_INTEGER,   RONLY,  var_ipRouteEntry, 1, {9}},
-    {IPROUTEAGE,     ASN_INTEGER,   RWRITE, var_ipRouteEntry, 1, {10}},
-    {IPROUTEMASK,    ASN_IPADDRESS, RWRITE, var_ipRouteEntry, 1, {11}},
-    {IPROUTEMETRIC5, ASN_INTEGER,   RWRITE, var_ipRouteEntry, 1, {12}},
-    {IPROUTEINFO,    ASN_OBJECT_ID, RONLY,  var_ipRouteEntry, 1, {13}}
+    {IPROUTEDEST,    ASN_IPADDRESS, NETSNMP_OLDAPI_RWRITE,
+     var_ipRouteEntry, 1, {1}},
+    {IPROUTEIFINDEX, ASN_INTEGER,   NETSNMP_OLDAPI_RWRITE,
+     var_ipRouteEntry, 1, {2}},
+    {IPROUTEMETRIC1, ASN_INTEGER,   NETSNMP_OLDAPI_RWRITE,
+     var_ipRouteEntry, 1, {3}},
+    {IPROUTEMETRIC2, ASN_INTEGER,   NETSNMP_OLDAPI_RWRITE,
+     var_ipRouteEntry, 1, {4}},
+    {IPROUTEMETRIC3, ASN_INTEGER,   NETSNMP_OLDAPI_RWRITE,
+     var_ipRouteEntry, 1, {5}},
+    {IPROUTEMETRIC4, ASN_INTEGER,   NETSNMP_OLDAPI_RWRITE,
+     var_ipRouteEntry, 1, {6}},
+    {IPROUTENEXTHOP, ASN_IPADDRESS, NETSNMP_OLDAPI_RWRITE,
+     var_ipRouteEntry, 1, {7}},
+    {IPROUTETYPE,    ASN_INTEGER,   NETSNMP_OLDAPI_RWRITE,
+     var_ipRouteEntry, 1, {8}},
+    {IPROUTEPROTO,   ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_ipRouteEntry, 1, {9}},
+    {IPROUTEAGE,     ASN_INTEGER,   NETSNMP_OLDAPI_RWRITE,
+     var_ipRouteEntry, 1, {10}},
+    {IPROUTEMASK,    ASN_IPADDRESS, NETSNMP_OLDAPI_RWRITE,
+     var_ipRouteEntry, 1, {11}},
+    {IPROUTEMETRIC5, ASN_INTEGER,   NETSNMP_OLDAPI_RWRITE,
+     var_ipRouteEntry, 1, {12}},
+    {IPROUTEINFO,    ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_ipRouteEntry, 1, {13}}
 };
 
 struct variable1 ipmedia_variables[] = {
 #ifdef USING_MIBII_AT_MODULE
 #if defined (WIN32) || defined (cygwin)
-    {IPMEDIAIFINDEX,     ASN_INTEGER,   RWRITE, var_atEntry, 1, {1}},
-    {IPMEDIAPHYSADDRESS, ASN_OCTET_STR, RWRITE, var_atEntry, 1, {2}},
-    {IPMEDIANETADDRESS,  ASN_IPADDRESS, RWRITE, var_atEntry, 1, {3}},
-    {IPMEDIATYPE,        ASN_INTEGER,   RWRITE, var_atEntry, 1, {4}}
+    {IPMEDIAIFINDEX,     ASN_INTEGER,   NETSNMP_OLDAPI_RWRITE,
+     var_atEntry, 1, {1}},
+    {IPMEDIAPHYSADDRESS, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_atEntry, 1, {2}},
+    {IPMEDIANETADDRESS,  ASN_IPADDRESS, NETSNMP_OLDAPI_RWRITE,
+     var_atEntry, 1, {3}},
+    {IPMEDIATYPE,        ASN_INTEGER,   NETSNMP_OLDAPI_RWRITE,
+     var_atEntry, 1, {4}}
 #else
-    {IPMEDIAIFINDEX,     ASN_INTEGER,   RONLY, var_atEntry, 1, {1}},
-    {IPMEDIAPHYSADDRESS, ASN_OCTET_STR, RONLY, var_atEntry, 1, {2}},
-    {IPMEDIANETADDRESS,  ASN_IPADDRESS, RONLY, var_atEntry, 1, {3}},
-    {IPMEDIATYPE,        ASN_INTEGER,   RONLY, var_atEntry, 1, {4}}
+    {IPMEDIAIFINDEX,     ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_atEntry, 1, {1}},
+    {IPMEDIAPHYSADDRESS, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_atEntry, 1, {2}},
+    {IPMEDIANETADDRESS,  ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_atEntry, 1, {3}},
+    {IPMEDIATYPE,        ASN_INTEGER,   NETSNMP_OLDAPI_RONLY,
+     var_atEntry, 1, {4}}
 #endif
 #endif
 };
@@ -122,6 +151,7 @@
 init_ip(void)
 {
     netsnmp_handler_registration *reginfo;
+    int rc;
 
     /*
      * register ourselves with the agent as a group of scalars...
@@ -129,7 +159,9 @@
     DEBUGMSGTL(("mibII/ip", "Initialising IP group\n"));
     reginfo = netsnmp_create_handler_registration("ip", ip_handler,
                             ip_oid, OID_LENGTH(ip_oid), HANDLER_CAN_RONLY);
-    netsnmp_register_scalar_group(reginfo, IPFORWARDING, IPROUTEDISCARDS);
+    rc = netsnmp_register_scalar_group(reginfo, IPFORWARDING, IPROUTEDISCARDS);
+    if (rc != SNMPERR_SUCCESS)
+        return;
 
     /*
      * .... with a local cache
@@ -200,12 +232,12 @@
 #endif
 
 #ifdef NETBSD_STATS_VIA_SYSCTL
-#define IP_STAT_STRUCTURE      struct ip_mib
+#define IP_STAT_STRUCTURE	struct ip_mib
 #define USES_SNMP_DESIGNED_IPSTAT
 #undef IP_NSTATS
 #endif
 
-#if defined (WIN32) || defined (cygwin)
+#ifdef HAVE_IPHLPAPI_H
 #include <iphlpapi.h>
 #define IP_STAT_STRUCTURE MIB_IPSTATS
 long            ipForwarding;
@@ -378,7 +410,7 @@
         ret_value = ipstat.ips_forward;
         break;
     case IPINUNKNOWNPROTOS:
-#if STRUCT_IPSTAT_HAS_IPS_NOPROTO
+#if HAVE_STRUCT_IPSTAT_IPS_NOPROTO
         ret_value = ipstat.ips_noproto;
         break;
 #else
@@ -386,7 +418,7 @@
         continue;
 #endif
     case IPINDISCARDS:
-#if STRUCT_IPSTAT_HAS_IPS_FRAGDROPPED
+#if HAVE_STRUCT_IPSTAT_IPS_FRAGDROPPED
         ret_value = ipstat.ips_fragdropped;   /* ?? */
         break;
 #else
@@ -394,7 +426,7 @@
         continue;
 #endif
     case IPINDELIVERS:
-#if STRUCT_IPSTAT_HAS_IPS_DELIVERED
+#if HAVE_STRUCT_IPSTAT_IPS_DELIVERED
         ret_value = ipstat.ips_delivered & 0xffffffff;
         break;
 #else
@@ -402,7 +434,7 @@
         continue;
 #endif
     case IPOUTREQUESTS:
-#if STRUCT_IPSTAT_HAS_IPS_LOCALOUT
+#if HAVE_STRUCT_IPSTAT_IPS_LOCALOUT
         ret_value = ipstat.ips_localout & 0xffffffff;
         break;
 #else
@@ -410,7 +442,7 @@
         continue;
 #endif
     case IPOUTDISCARDS:
-#if STRUCT_IPSTAT_HAS_IPS_ODROPPED
+#if HAVE_STRUCT_IPSTAT_IPS_ODROPPED
         ret_value = ipstat.ips_odropped;
         break;
 #else
@@ -433,7 +465,7 @@
         ret_value = ipstat.ips_fragments;
         break;
     case IPREASMOKS:
-#if STRUCT_IPSTAT_HAS_IPS_REASSEMBLED
+#if HAVE_STRUCT_IPSTAT_IPS_REASSEMBLED
         ret_value = ipstat.ips_reassembled;
         break;
 #else
@@ -444,7 +476,7 @@
         ret_value = ipstat.ips_fragdropped + ipstat.ips_fragtimeout;
         break;
     case IPFRAGOKS:
-#if STRUCT_IPSTAT_HAS_IPS_FRAGMENTED
+#if HAVE_STRUCT_IPSTAT_IPS_FRAGMENTED
         ret_value = ipstat.ips_fragments;
         break;
 #else            /* XXX */
@@ -453,7 +485,7 @@
         break;
 #endif
     case IPFRAGFAILS:
-#if STRUCT_IPSTAT_HAS_IPS_CANTFRAG
+#if HAVE_STRUCT_IPSTAT_IPS_CANTFRAG
         ret_value = ipstat.ips_cantfrag;
         break;
 #else
@@ -461,7 +493,7 @@
         continue;
 #endif
     case IPFRAGCREATES:
-#if STRUCT_IPSTAT_HAS_IPS_OFRAGMENTS
+#if HAVE_STRUCT_IPSTAT_IPS_OFRAGMENTS
         ret_value = ipstat.ips_ofragments;
         break;
 #else
@@ -469,7 +501,7 @@
         continue;
 #endif
     case IPROUTEDISCARDS:
-#if STRUCT_IPSTAT_HAS_IPS_NOROUTE
+#if HAVE_STRUCT_IPSTAT_IPS_NOROUTE
         ret_value = ipstat.ips_noroute;
         break;
 #else
@@ -645,6 +677,7 @@
 
     case MODE_GETNEXT:
     case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
 		/* XXX - Windows currently supports setting this */
     case MODE_SET_RESERVE2:
@@ -655,6 +688,7 @@
         snmp_log(LOG_WARNING, "mibII/ip: Unsupported mode (%d)\n",
                                reqinfo->mode);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     default:
         snmp_log(LOG_WARNING, "mibII/ip: Unrecognised mode (%d)\n",
                                reqinfo->mode);
@@ -806,9 +840,9 @@
     ret_value = netbsd_read_ip_stat(&ipstat);
 
     if ( ret_value < 0) {
-       DEBUGMSGTL(("mibII/ip", "Failed to load IP Group (netbsd)\n"));
+	DEBUGMSGTL(("mibII/ip", "Failed to load IP Group (netbsd)\n"));
     } else {
-       DEBUGMSGTL(("mibII/ip", "Loaded IP Group (netbsd)\n"));
+	DEBUGMSGTL(("mibII/ip", "Loaded IP Group (netbsd)\n"));
     }
     return ret_value;
 }
diff --git a/agent/mibgroup/mibII/ipAddr.c b/agent/mibgroup/mibII/ipAddr.c
index f59a63a..a4d577e 100644
--- a/agent/mibgroup/mibII/ipAddr.c
+++ b/agent/mibgroup/mibII/ipAddr.c
@@ -15,8 +15,9 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
-#if defined(IFNET_NEEDS_KERNEL) && !defined(_KERNEL)
+#if defined(NETSNMP_IFNET_NEEDS_KERNEL) && !defined(_KERNEL)
 #define _KERNEL 1
 #define _I_DEFINED_KERNEL
 #endif
@@ -39,9 +40,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
@@ -118,12 +116,13 @@
 
 #include "ip.h"
 #include "interfaces.h"
-#include "sysORTable.h"
 
 #ifdef cygwin
 #include <windows.h>
 #endif
 
+netsnmp_feature_require(interface_legacy)
+
         /*********************
 	 *
 	 *  Kernel & interface information,
@@ -221,7 +220,7 @@
 #if !defined(freebsd2) && !defined(hpux11) && !defined(linux)
         if (Interface_Scan_Next(&interface, NULL, &ifnet, &in_ifaddr) == 0)
             break;
-#ifdef STRUCT_IFNET_HAS_IF_ADDRLIST
+#ifdef HAVE_STRUCT_IFNET_IF_ADDRLIST
         if (ifnet.if_addrlist == 0)
             continue;           /* No address found for interface */
 #endif
@@ -290,7 +289,7 @@
         return (NULL);
     memcpy((char *) name, (char *) lowest, 14 * sizeof(oid));
     *length = 14;
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long_return);
     switch (vp->magic) {
     case IPADADDR:
@@ -960,7 +959,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/ipAddr.h b/agent/mibgroup/mibII/ipAddr.h
index 526a060..ec69cf3 100644
--- a/agent/mibgroup/mibII/ipAddr.h
+++ b/agent/mibgroup/mibII/ipAddr.h
@@ -5,7 +5,6 @@
 #ifndef _MIBGROUP_IPADDR_H
 #define _MIBGROUP_IPADDR_H
 
-config_require(util_funcs)
 #if !defined(NETSNMP_ENABLE_MFD_REWRITES)
 config_require(mibII/ip)
 #endif
diff --git a/agent/mibgroup/mibII/ipCidrRouteTable.c b/agent/mibgroup/mibII/ipCidrRouteTable.c
index 00d7d17..8609bb0 100644
--- a/agent/mibgroup/mibII/ipCidrRouteTable.c
+++ b/agent/mibgroup/mibII/ipCidrRouteTable.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include "route_headers.h"
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -13,6 +14,11 @@
 
 #include "var_route.h"
 
+netsnmp_feature_require(oid_stash)
+netsnmp_feature_require(get_routes)
+netsnmp_feature_require(oid_stash_get_data)
+netsnmp_feature_require(oid_stash_add_data)
+
 static netsnmp_oid_stash_node *undoStorage;
 
 struct undoInfo {
@@ -73,7 +79,7 @@
                                      0);
 
     /** Define the minimum and maximum accessible columns.  This
-        optimizes retrival. */
+        optimizes retrieval. */
     table_info->min_column = 1;
     table_info->max_column = 16;
 
@@ -99,7 +105,7 @@
      */
     DEBUGMSGTL(("initialize_table_ipCidrRouteTable",
                 "Registering table ipCidrRouteTable as a table iterator\n"));
-    netsnmp_register_table_iterator(my_handler, iinfo);
+    netsnmp_register_table_iterator2(my_handler, iinfo);
 }
 
 /** Initializes the ipCidrRouteTable module */
@@ -260,12 +266,10 @@
 
     void           *data_context;
 
-    oid            *suffix;
-    size_t          suffix_len;
-
     /** column and row index encoded portion */
-    suffix = requests->requestvb->name + reginfo->rootoid_len + 1;
-    suffix_len = requests->requestvb->name_length -
+    const oid * const suffix =
+        requests->requestvb->name + reginfo->rootoid_len + 1;
+    const size_t suffix_len = requests->requestvb->name_length -
         (reginfo->rootoid_len + 1);
 
     for (request = requests; request; request = request->next) {
diff --git a/agent/mibgroup/mibII/ipv6.c b/agent/mibgroup/mibII/ipv6.c
index 4e1868b..99d50e8 100644
--- a/agent/mibgroup/mibII/ipv6.c
+++ b/agent/mibgroup/mibII/ipv6.c
@@ -4,10 +4,14 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
-#if defined(IFNET_NEEDS_KERNEL) && !defined(_KERNEL)
+#include <net-snmp/net-snmp-features.h>
+#if defined(NETSNMP_IFNET_NEEDS_KERNEL) && !defined(_KERNEL)
 #define _KERNEL 1
 #define _I_DEFINED_KERNEL
 #endif
+#if NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES
+#endif
 #include <sys/types.h>
 #include <sys/param.h>
 #include <sys/socket.h>
@@ -137,10 +141,11 @@
 #include <net-snmp/agent/auto_nlist.h>
 
 #include "kernel.h"
-#include "util_funcs.h"
 #include "ipv6.h"
 #include "interfaces.h"
 
+netsnmp_feature_require(linux_read_ip6_stat)
+
 #if defined(netbsd1) && !defined(openbsd4)
 #define inp_lport in6p_lport
 #define inp_fport in6p_fport
@@ -161,101 +166,130 @@
 #endif
 
 struct variable3 ipv6_variables[] = {
-    {IPV6FORWARDING, ASN_INTEGER, RONLY, var_ipv6, 1, {1}},
-    {IPV6DEFAULTHOPLIMIT, ASN_INTEGER, RONLY, var_ipv6, 1, {2}},
-    {IPV6INTERFACES, ASN_GAUGE, RONLY, var_ipv6, 1, {3}},
-    {IPV6IFTBLLASTCHG, ASN_TIMETICKS, RONLY, var_ipv6, 1, {4}},
+    {IPV6FORWARDING, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipv6, 1, {1}},
+    {IPV6DEFAULTHOPLIMIT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipv6, 1, {2}},
+    {IPV6INTERFACES, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_ipv6, 1, {3}},
+    {IPV6IFTBLLASTCHG, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
+     var_ipv6, 1, {4}},
 
-    {IPV6IFDESCR, ASN_OCTET_STR, RONLY, var_ifv6Entry, 3, {5, 1, 2}},
-    {IPV6IFLOWLAYER, ASN_OBJECT_ID, RONLY, var_ifv6Entry, 3, {5, 1, 3}},
-    {IPV6IFEFFECTMTU, ASN_UNSIGNED, RONLY, var_ifv6Entry, 3, {5, 1, 4}},
-    {IPV6IFREASMMAXSIZE, ASN_UNSIGNED, RONLY, var_ifv6Entry, 3, {5, 1, 5}},
+    {IPV6IFDESCR, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {5, 1, 2}},
+    {IPV6IFLOWLAYER, ASN_OBJECT_ID, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {5, 1, 3}},
+    {IPV6IFEFFECTMTU, ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {5, 1, 4}},
+    {IPV6IFREASMMAXSIZE, ASN_UNSIGNED, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {5, 1, 5}},
 
-    {IPV6IFTOKEN, ASN_OCTET_STR, RONLY, var_ifv6Entry, 3, {5, 1, 6}},
-    {IPV6IFTOKENLEN, ASN_INTEGER, RONLY, var_ifv6Entry, 3, {5, 1, 7}},
-    {IPV6IFPHYSADDRESS, ASN_OCTET_STR, RONLY, var_ifv6Entry, 3, {5, 1, 8}},
-    {IPV6IFADMSTATUS, ASN_INTEGER, RONLY, var_ifv6Entry, 3, {5, 1, 9}},
-    {IPV6IFOPERSTATUS, ASN_INTEGER, RONLY, var_ifv6Entry, 3, {5, 1, 10}},
-    {IPV6IFLASTCHANGE, ASN_TIMETICKS, RONLY, var_ifv6Entry, 3, {5, 1, 11}},
+    {IPV6IFTOKEN, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {5, 1, 6}},
+    {IPV6IFTOKENLEN, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {5, 1, 7}},
+    {IPV6IFPHYSADDRESS, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {5, 1, 8}},
+    {IPV6IFADMSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {5, 1, 9}},
+    {IPV6IFOPERSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {5, 1, 10}},
+    {IPV6IFLASTCHANGE, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {5, 1, 11}},
 
-    {IPV6IFSTATSINRCVS, ASN_COUNTER, RONLY, var_ifv6Entry, 3, {6, 1, 1}},
-    {IPV6IFSTATSINHDRERRS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 2}},
-    {IPV6IFSTATSTOOBIGERRS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 3}},
-    {IPV6IFSTATSINNOROUTES, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 4}},
-    {IPV6IFSTATSINADDRERRS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 5}},
-    {IPV6IFSTATSINUNKNOWPROTS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 6}},
-    {IPV6IFSTATSINTRUNCATPKTS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 7}},
-    {IPV6IFSTATSINDISCARDS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 8}},
-    {IPV6IFSTATSINDELIVERS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 9}},
-    {IPV6IFSTATSOUTFORWDATAS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 10}},
-    {IPV6IFSTATSOUTREQS, ASN_COUNTER, RONLY, var_ifv6Entry, 3, {6, 1, 11}},
-    {IPV6IFSTATSOUTDISCARDS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 12}},
-    {IPV6IFSTATSOUTFRAGOKS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 13}},
-    {IPV6IFSTATSOUTFRAGFAILS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 14}},
-    {IPV6IFSTATSOUTFRAGCREATS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 15}},
-    {IPV6IFSTATSOUTREASMREQS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 16}},
-    {IPV6IFSTATSOUTREASMOKS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 17}},
-    {IPV6IFSTATSOUTREASMFAILS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 18}},
-    {IPV6IFSTATSINMCASTPKTS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 19}},
-    {IPV6IFSTATSOUTMCASTPKTS, ASN_COUNTER, RONLY, var_ifv6Entry, 3,
-     {6, 1, 20}},
+    {IPV6IFSTATSINRCVS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 1}},
+    {IPV6IFSTATSINHDRERRS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 2}},
+    {IPV6IFSTATSTOOBIGERRS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 3}},
+    {IPV6IFSTATSINNOROUTES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 4}},
+    {IPV6IFSTATSINADDRERRS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 5}},
+    {IPV6IFSTATSINUNKNOWPROTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 6}},
+    {IPV6IFSTATSINTRUNCATPKTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 7}},
+    {IPV6IFSTATSINDISCARDS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 8}},
+    {IPV6IFSTATSINDELIVERS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 9}},
+    {IPV6IFSTATSOUTFORWDATAS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 10}},
+    {IPV6IFSTATSOUTREQS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 11}},
+    {IPV6IFSTATSOUTDISCARDS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 12}},
+    {IPV6IFSTATSOUTFRAGOKS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 13}},
+    {IPV6IFSTATSOUTFRAGFAILS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 14}},
+    {IPV6IFSTATSOUTFRAGCREATS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 15}},
+    {IPV6IFSTATSOUTREASMREQS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 16}},
+    {IPV6IFSTATSOUTREASMOKS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 17}},
+    {IPV6IFSTATSOUTREASMFAILS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 18}},
+    {IPV6IFSTATSINMCASTPKTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 19}},
+    {IPV6IFSTATSOUTMCASTPKTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ifv6Entry, 3, {6, 1, 20}},
 
 #if 0
-    {IPV6ADDRPREFIXONLINKFLG, INTEGER, RONLY, var_ipv6AddrEntry, 3,
-     {7, 1, 3}},
-    {IPV6ADDRPREFIXAUTONOMOUSFLAG, INTEGER, RONLY, var_ipv6AddrEntry, 3,
-     {7, 1, 4}},
-    {IPV6ADDRPREFIXADVPREFERLIFE, UNSIGNED32, RONLY, var_ipv6AddrEntry, 3,
-     {7, 1, 5}},
-    {IPV6ADDRPREFIXVALIDLIFE, UNSIGNED32, RONLY, var_ipv6AddrEntry, 3,
-     {7, 1, 6}},
+    {IPV6ADDRPREFIXONLINKFLG, INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipv6AddrEntry, 3, {7, 1, 3}},
+    {IPV6ADDRPREFIXAUTONOMOUSFLAG, INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipv6AddrEntry, 3, {7, 1, 4}},
+    {IPV6ADDRPREFIXADVPREFERLIFE, UNSIGNED32, NETSNMP_OLDAPI_RONLY,
+     var_ipv6AddrEntry, 3, {7, 1, 5}},
+    {IPV6ADDRPREFIXVALIDLIFE, UNSIGNED32, NETSNMP_OLDAPI_RONLY,
+     var_ipv6AddrEntry, 3, {7, 1, 6}},
 
-    {IPV6ADDRPFXLEN, INTEGER, RONLY, var_ipv6AddrEntry, 3, {8, 1, 2}},
-    {IPV6ADDRTYPE, INTEGER, RONLY, var_ipv6AddrEntry, 3, {8, 1, 3}},
-    {IPV6ADDRANYCASTFLAG, INTEGER, RONLY, var_ipv6AddrEntry, 3, {8, 1, 4}},
-    {IPV6ADDRSTATUS, INTEGER, RONLY, var_ipv6AddrEntry, 3, {8, 1, 5}},
+    {IPV6ADDRPFXLEN, INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipv6AddrEntry, 3, {8, 1, 2}},
+    {IPV6ADDRTYPE, INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipv6AddrEntry, 3, {8, 1, 3}},
+    {IPV6ADDRANYCASTFLAG, INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipv6AddrEntry, 3, {8, 1, 4}},
+    {IPV6ADDRSTATUS, INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipv6AddrEntry, 3, {8, 1, 5}},
 
-    {IPV6ROUTEIFINDEX, IpV6IFINDEX, RONLY, var_ipv6RouteEntry, 3,
-     {11, 1, 4}},
-    {IPV6ROUTENEXTHOP, IpV6ADDRESS, RONLY, var_ipv6RouteEntry, 3,
-     {11, 1, 5}},
-    {IPV6ROUTETYPE, INTEGER, RONLY, var_ipv6RouteEntry, 3, {11, 1, 6}},
-    {IPV6ROUTEPROTOCOL, INTEGER, RONLY, var_ipv6RouteEntry, 3, {11, 1, 7}},
-    {IPV6ROUTEPOLICY, UNSIGNED32, RONLY, var_ipv6RouteEntry, 3,
-     {11, 1, 8}},
-    {IPV6ROUTEAGE, UNSIGNED32, RONLY, var_ipv6RouteEntry, 3, {11, 1, 9}},
-    {IPV6ROUTENEXTHOPRDI, UNSIGNED32, RONLY, var_ipv6RouteEntry, 3,
-     {11, 1, 10}},
-    {IPV6ROUTEMETRIC, UNSIGNED32, RONLY, var_ipv6RouteEntry, 3,
-     {11, 1, 11}},
-    {IPV6ROUTEWEIGHT, UNSIGNED32, RONLY, var_ipv6RouteEntry, 3,
-     {11, 1, 12}},
-    {IPV6ROUTEINFO, OBJID, RONLY, var_ipv6RouteEntry, 3, {11, 1, 13}},
-    {IPV6ROUTEVALID, INTEGER, RONLY, var_ipv6RouteEntry, 3, {11, 1, 14}},
+    {IPV6ROUTEIFINDEX, IpV6IFINDEX, NETSNMP_OLDAPI_RONLY,
+     var_ipv6RouteEntry, 3, {11, 1, 4}},
+    {IPV6ROUTENEXTHOP, IpV6ADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ipv6RouteEntry, 3, {11, 1, 5}},
+    {IPV6ROUTETYPE, INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipv6RouteEntry, 3, {11, 1, 6}},
+    {IPV6ROUTEPROTOCOL, INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipv6RouteEntry, 3, {11, 1, 7}},
+    {IPV6ROUTEPOLICY, UNSIGNED32, NETSNMP_OLDAPI_RONLY,
+     var_ipv6RouteEntry, 3, {11, 1, 8}},
+    {IPV6ROUTEAGE, UNSIGNED32, NETSNMP_OLDAPI_RONLY,
+     var_ipv6RouteEntry, 3, {11, 1, 9}},
+    {IPV6ROUTENEXTHOPRDI, UNSIGNED32, NETSNMP_OLDAPI_RONLY,
+     var_ipv6RouteEntry, 3, {11, 1, 10}},
+    {IPV6ROUTEMETRIC, UNSIGNED32, NETSNMP_OLDAPI_RONLY,
+     var_ipv6RouteEntry, 3, {11, 1, 11}},
+    {IPV6ROUTEWEIGHT, UNSIGNED32, NETSNMP_OLDAPI_RONLY,
+     var_ipv6RouteEntry, 3, {11, 1, 12}},
+    {IPV6ROUTEINFO, OBJID, NETSNMP_OLDAPI_RONLY,
+     var_ipv6RouteEntry, 3, {11, 1, 13}},
+    {IPV6ROUTEVALID, INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipv6RouteEntry, 3, {11, 1, 14}},
 
-    {IPV6NETTOMEDIAPHYADDR, STRING, RONLY, var_ndpEntry, 3, {12, 1, 2}},
-    {IPV6NETTOMEDIATYPE, INTEGER, RONLY, var_ndpEntry, 3, {12, 1, 3}},
-    {IPV6NETTOMEDIASTATE, INTEGER, RONLY, var_ndpEntry, 3, {12, 1, 4}},
-    {IPV6NETTOMEDIALASTUPDATE, TIMETICKS, RONLY, var_ndpEntry, 3,
-     {12, 1, 5}},
-    {IPV6NETTOMEDIAVALID, INTEGER, RONLY, var_ndpEntry, 3, {12, 1, 6}},
+    {IPV6NETTOMEDIAPHYADDR, STRING, NETSNMP_OLDAPI_RONLY,
+     var_ndpEntry, 3, {12, 1, 2}},
+    {IPV6NETTOMEDIATYPE, INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ndpEntry, 3, {12, 1, 3}},
+    {IPV6NETTOMEDIASTATE, INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ndpEntry, 3, {12, 1, 4}},
+    {IPV6NETTOMEDIALASTUPDATE, TIMETICKS, NETSNMP_OLDAPI_RONLY,
+     var_ndpEntry, 3, {12, 1, 5}},
+    {IPV6NETTOMEDIAVALID, INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ndpEntry, 3, {12, 1, 6}},
 #endif
 };
 oid             ipv6_variables_oid[] = { SNMP_OID_MIB2, 55, 1 };
@@ -265,74 +299,74 @@
     config_add_mib(IPV6 - MIB)
 #endif
      struct variable3 ipv6icmp_variables[] = {
-         {IPV6IFICMPINMSG, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 1}},
-         {IPV6IFICMPINERRORS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 2}},
-         {IPV6IFICMPINDSTUNRCHS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 3}},
-         {IPV6IFICMPINADMPROHS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 4}},
-         {IPV6IFICMPINTIMEXCDS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 5}},
-         {IPV6IFICMPINPARMPROBS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 6}},
-         {IPV6IFICMPINPKTTOOBIGS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 7}},
-         {IPV6IFICMPINECHOS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 8}},
-         {IPV6IFICMPINECHOREPS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 9}},
-         {IPV6IFICMPINRTRSLICITS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 10}},
-         {IPV6IFICMPINRTRADVS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 11}},
-         {IPV6IFICMPINNBRSLICITS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 12}},
-         {IPV6IFICMPINNBRADVS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 13}},
-         {IPV6IFICMPINREDIRECTS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 14}},
-         {IPV6IFICMPINGRPMEQERYS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 15}},
-         {IPV6IFICMPINGRPMERSPS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 16}},
-         {IPV6IFICMPINGRPMEREDCS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 17}},
-         {IPV6IFICMPOUTMSG, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 18}},
-         {IPV6IFICMPOUTERRORS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 19}},
-         {IPV6IFICMPOUTDSTUNRCHS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 20}},
-         {IPV6IFICMPOUTADMPROHS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 21}},
-         {IPV6IFICMPOUTTIMEXCDS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 22}},
-         {IPV6IFICMPOUTPARMPROBS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 23}},
-         {IPV6IFICMPOUTPKTTOOBIGS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 24}},
-         {IPV6IFICMPOUTECHOS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 25}},
-         {IPV6IFICMPOUTECHOREPS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 26}},
-         {IPV6IFICMPOUTRTRSLICITS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 27}},
-         {IPV6IFICMPOUTRTRADVS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 28}},
-         {IPV6IFICMPOUTNBRSLICITS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 29}},
-         {IPV6IFICMPOUTNBRADVS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 30}},
-         {IPV6IFICMPOUTREDIRECTS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 31}},
-         {IPV6IFICMPOUTGRPMEQERYS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 32}},
-         {IPV6IFICMPOUTGRPMERSPS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 33}},
-         {IPV6IFICMPOUTGRPMEREDCS, ASN_COUNTER, RONLY, var_icmpv6Entry, 3,
-          {1, 1, 34}}
+         {IPV6IFICMPINMSG, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 1}},
+         {IPV6IFICMPINERRORS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 2}},
+         {IPV6IFICMPINDSTUNRCHS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 3}},
+         {IPV6IFICMPINADMPROHS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 4}},
+         {IPV6IFICMPINTIMEXCDS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 5}},
+         {IPV6IFICMPINPARMPROBS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 6}},
+         {IPV6IFICMPINPKTTOOBIGS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 7}},
+         {IPV6IFICMPINECHOS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 8}},
+         {IPV6IFICMPINECHOREPS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 9}},
+         {IPV6IFICMPINRTRSLICITS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 10}},
+         {IPV6IFICMPINRTRADVS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 11}},
+         {IPV6IFICMPINNBRSLICITS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 12}},
+         {IPV6IFICMPINNBRADVS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 13}},
+         {IPV6IFICMPINREDIRECTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 14}},
+         {IPV6IFICMPINGRPMEQERYS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 15}},
+         {IPV6IFICMPINGRPMERSPS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 16}},
+         {IPV6IFICMPINGRPMEREDCS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 17}},
+         {IPV6IFICMPOUTMSG, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 18}},
+         {IPV6IFICMPOUTERRORS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 19}},
+         {IPV6IFICMPOUTDSTUNRCHS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 20}},
+         {IPV6IFICMPOUTADMPROHS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 21}},
+         {IPV6IFICMPOUTTIMEXCDS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 22}},
+         {IPV6IFICMPOUTPARMPROBS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 23}},
+         {IPV6IFICMPOUTPKTTOOBIGS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 24}},
+         {IPV6IFICMPOUTECHOS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 25}},
+         {IPV6IFICMPOUTECHOREPS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 26}},
+         {IPV6IFICMPOUTRTRSLICITS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 27}},
+         {IPV6IFICMPOUTRTRADVS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 28}},
+         {IPV6IFICMPOUTNBRSLICITS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 29}},
+         {IPV6IFICMPOUTNBRADVS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 30}},
+         {IPV6IFICMPOUTREDIRECTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 31}},
+         {IPV6IFICMPOUTGRPMEQERYS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 32}},
+         {IPV6IFICMPOUTGRPMERSPS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 33}},
+         {IPV6IFICMPOUTGRPMEREDCS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+          var_icmpv6Entry, 3, {1, 1, 34}}
      };
 oid             ipv6icmp_variables_oid[] = { 1, 3, 6, 1, 2, 1, 56, 1 };
 #if 0
@@ -340,7 +374,8 @@
     config_add_mib(IPV6 - ICMP - MIB)
 #endif
      struct variable2 ipv6udp_variables[] = {
-         {IPV6UDPIFINDEX, ASN_INTEGER, RONLY, var_udp6, 2, {1, 3}}
+         {IPV6UDPIFINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+          var_udp6, 2, {1, 3}}
      };
 oid             ipv6udp_variables_oid[] = { 1, 3, 6, 1, 2, 1, 7, 6 };
 #if 0
@@ -348,15 +383,17 @@
     config_add_mib(IPV6 - UDP - MIB)
 #endif
      struct variable2 ipv6tcp_variables[] = {
-         {IPV6TCPCONNSTATE, ASN_INTEGER, RONLY, var_tcp6, 2, {1, 6}},
+         {IPV6TCPCONNSTATE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+          var_tcp6, 2, {1, 6}},
      };
 oid             ipv6tcp_variables_oid[] = { 1, 3, 6, 1, 2, 1, 6, 16 };
 #if 0
 config_load_mib(1.3 .6 .1 .3 .86 .1, 7, ipv6tcp_variables)
     config_add_mib(IPV6 - TCP - MIB)
 #endif
-     void
-                     init_ipv6()
+
+void
+init_ipv6(void)
 {
     /*
      * register ourselves with the agent to handle our mib tree 
@@ -400,7 +437,7 @@
            ((int) vp->namelen + 1) * sizeof(oid));
     *length = vp->namelen + 1;
 
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long);    /* default to 'long' results */
     return (MATCH_SUCCEEDED);
 }
@@ -440,7 +477,7 @@
     memcpy((char *) name, (char *) newname,
            ((int) vp->namelen + 1) * sizeof(oid));
     *length = vp->namelen + 1;
-    *write_method = 0;
+    *write_method = (WriteMethod*)0;
     *var_len = sizeof(long);    /* default to 'long' results */
     return (MATCH_SUCCEEDED);
 }
@@ -931,7 +968,7 @@
                 }
             }
 #endif
-#ifdef STRUCT_IFNET_HAS_IF_LASTCHANGE_TV_SEC
+#ifdef HAVE_STRUCT_IFNET_IF_LASTCHANGE_TV_SEC
             if (!gotanswer) {
                 struct ifnet    ifnet;
 
@@ -1960,7 +1997,7 @@
     return value;
 }
 
-void
+static void
 linux_read_ip6_stat(struct ip6_mib *ip6stat)
 {
     if (!ip6stat)
@@ -2048,7 +2085,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/kernel_linux.c b/agent/mibgroup/mibII/kernel_linux.c
index bb6f867..99314df 100644
--- a/agent/mibgroup/mibII/kernel_linux.c
+++ b/agent/mibgroup/mibII/kernel_linux.c
@@ -4,11 +4,10 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
-#include "util_funcs.h"
-
 #if HAVE_STRING_H
 #include <string.h>
 #endif
@@ -16,43 +15,113 @@
 #if HAVE_SYS_PARAM_H
 #include <sys/param.h>
 #endif
+#include <errno.h>
 
 #include "kernel_linux.h"
 
 struct ip_mib   cached_ip_mib;
+struct ip6_mib   cached_ip6_mib;
 struct icmp_mib cached_icmp_mib;
+struct icmp6_mib cached_icmp6_mib;
+struct icmp4_msg_mib cached_icmp4_msg_mib;
 struct tcp_mib  cached_tcp_mib;
 struct udp_mib  cached_udp_mib;
+struct udp6_mib  cached_udp6_mib;
 
 #define IP_STATS_LINE	"Ip: %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu"
 #define ICMP_STATS_LINE	"Icmp: %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu"
+#define ICMP_MSG_STATS_LINE "IcmpMsg: "
 #define TCP_STATS_LINE	"Tcp: %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu"
 #define UDP_STATS_LINE	"Udp: %lu %lu %lu %lu"
+#define IP6_STATS_LINE   "Ip6"
+#define ICMP6_STATS_LINE "Icmp6"
 #define UDP6_STATS_LINE "Udp6"
 
 #define IP_STATS_PREFIX_LEN	4
 #define ICMP_STATS_PREFIX_LEN	6
+#define ICMP_MSG_STATS_PREFIX_LEN 9
 #define TCP_STATS_PREFIX_LEN	5
 #define UDP_STATS_PREFIX_LEN	5
+#define IP6_STATS_PREFIX_LEN	3
+#define ICMP6_STATS_PREFIX_LEN	5
 #define UDP6_STATS_PREFIX_LEN   4
 
+netsnmp_feature_child_of(linux_ip6_stat_all, libnetsnmpmibs)
 
-int
+netsnmp_feature_child_of(linux_read_ip6_stat, linux_ip6_stat_all)
+
+static int
+decode_icmp_msg(char *line, char *data, struct icmp4_msg_mib *msg)
+{
+    char *token, *saveptr, *lineptr, *saveptr1, *dataptr, *delim = NULL;
+    char line_cpy[1024];
+    char data_cpy[1024];
+    long index;
+
+    if(data == NULL)
+        return -1;
+
+    /*
+     * Since we are using strtok, there is a possiblity of the orginal data
+     * getting modified. So we take a local copy for this purpose even though
+     * its expensive.
+     */
+    strlcpy(line_cpy, line, sizeof(line_cpy));
+    strlcpy(data_cpy, data, sizeof(data_cpy));
+
+    lineptr = line_cpy;
+    dataptr = data_cpy;
+    saveptr1 = NULL;
+    while (1) {
+        if(NULL == (token = strtok_r(lineptr, " ", &saveptr)))
+            break;
+        lineptr = NULL;
+        errno = 0;
+        if (0 == strncmp(strsep(&token, "e"), "OutTyp", 6)) {
+            index = strtol(token, &delim, 0);
+            if (ERANGE == errno) {
+                continue;
+            } else if (index > 255) {
+                continue;
+            } else if (index < 0) {
+                continue;
+            }
+            if (NULL == (token = strtok_r(dataptr, " ", &saveptr1)))
+                break;
+            dataptr = NULL;
+            msg->vals[index].OutType = atoi(token);
+        } else {
+            index = strtol(token, &delim, 0);
+            if (ERANGE == errno) {
+                continue;
+            } else if (index > 255) {
+                continue;
+            } else if (index < 0) {
+                continue;
+            }
+            if(NULL == (token = strtok_r(dataptr, " ", &saveptr1)))
+                break;
+            dataptr = NULL;
+            msg->vals[index].InType = atoi(token);
+        }
+    }
+    return 0;
+}
+
+static int
 linux_read_mibII_stats(void)
 {
     FILE           *in = fopen("/proc/net/snmp", "r");
-#ifdef NETSNMP_ENABLE_IPV6
-    FILE           *in6;
-    unsigned long   value;
-#endif
-    char            line[1024];
-
+    char            line[1024], data[1024];
+    int ret = 0;
     if (!in) {
         DEBUGMSGTL(("mibII/kernel_linux","Unable to open /proc/net/snmp"));
         return -1;
     }
 
 
+    memset(line, '\0', sizeof(line));
+    memset(data, '\0', sizeof(data));
     while (line == fgets(line, sizeof(line), in)) {
         if (!strncmp(line, IP_STATS_LINE, IP_STATS_PREFIX_LEN)) {
             sscanf(line, IP_STATS_LINE,
@@ -104,6 +173,19 @@
                    &cached_icmp_mib.icmpOutTimestampReps,
                    &cached_icmp_mib.icmpOutAddrMasks,
                    &cached_icmp_mib.icmpOutAddrMaskReps);
+        } else if (!strncmp(line, ICMP_MSG_STATS_LINE, ICMP_MSG_STATS_PREFIX_LEN)) {
+            /*
+             * Note: We have to do this differently from other stats as the
+             * counters to this stats are dynamic. So we will not know the
+             * number of counters at a given time.
+             */
+            fgets(data, sizeof(data), in);
+            if(decode_icmp_msg(line + ICMP_MSG_STATS_PREFIX_LEN,
+                        data + ICMP_MSG_STATS_PREFIX_LEN,
+                        &cached_icmp4_msg_mib) < 0) {
+                continue;
+            }
+            ret = 1;
         } else if (!strncmp(line, TCP_STATS_LINE, TCP_STATS_PREFIX_LEN)) {
             int             ret = sscanf(line, TCP_STATS_LINE,
                                          &cached_tcp_mib.tcpRtoAlgorithm,
@@ -132,35 +214,6 @@
     }
     fclose(in);
 
-#ifdef NETSNMP_ENABLE_IPV6
-    in6 = fopen("/proc/net/snmp6", "r");
-    if (in6) {
-      
-        while (line == fgets(line, sizeof(line), in6)) {
-
-            if (('U' != line[0]) ||
-                (0 != strncmp(line, UDP6_STATS_LINE, UDP6_STATS_PREFIX_LEN)))
-                continue;
-
-            sscanf(line, "%*s %lu" , &value);
-                 
-            if ('O' == line[4]) /* Udp6OutDatagrams */
-                cached_udp_mib.udpOutDatagrams += value;
-            else if ('N' == line[4]) /* Udp6NoPorts */
-                cached_udp_mib.udpNoPorts += value;
-            else if ('D' == line[6]) /* Udp6InDatagrams */
-                cached_udp_mib.udpInDatagrams += value;
-            else if ('E' == line[6]) /* Udp6InErrors */
-                cached_udp_mib.udpInErrors += value;
-
-        }
-        fclose(in6);
-    } else {
-        DEBUGMSGTL(("mibII/kernel_linux","Unable to open /proc/net/snmp6"));
-    }
-
-#endif
-
     /*
      * Tweak illegal values:
      *
@@ -176,7 +229,8 @@
      */
     if (!cached_tcp_mib.tcpRtoAlgorithm)
         cached_tcp_mib.tcpRtoAlgorithm = 1;
-    return 0;
+
+    return ret;
 }
 
 int
@@ -189,6 +243,138 @@
     return 0;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_LINUX_READ_IP6_STAT
+int linux_read_ip6_stat( struct ip6_mib *ip6stat)
+{
+#ifdef NETSNMP_ENABLE_IPV6
+    FILE           *in;
+    char            line[1024];
+    unsigned long   stats;
+    char           *endp;
+    int             match;
+#endif
+
+    memset((char *) ip6stat, (0), sizeof(*ip6stat));
+
+#ifdef NETSNMP_ENABLE_IPV6
+    DEBUGMSGTL(("mibII/kernel_linux/ip6stats",
+                "Reading /proc/net/snmp6 stats\n"));
+    if (NULL == (in = fopen("/proc/net/snmp6", "r"))) {
+        DEBUGMSGTL(("mibII/kernel_linux/ip6stats",
+                    "Failed to open /proc/net/snmp6\n"));
+        return -1;
+    }
+
+    while (NULL != fgets(line, sizeof(line), in)) {
+        if (0 != strncmp(line, IP6_STATS_LINE, IP6_STATS_PREFIX_LEN))
+            continue;
+
+        if (1 != sscanf(line, "%*s %lu", &stats))
+            continue;
+
+        endp = strchr(line, ' ');
+        *endp = '\0';
+        DEBUGMSGTL(("mibII/kernel_linux/ip6stats", "Find tag: %s\n", line));
+
+        match = 1;
+        if (0 == strncmp(line + 3, "In", 2)) {  /* In */
+            if (0 == strcmp(line + 5, "AddrErrors")) {
+                cached_ip6_mib.ip6InAddrErrors = stats;
+            } else if (0 == strcmp(line + 5, "Delivers")) {
+                cached_ip6_mib.ip6InDelivers = stats;
+            } else if (0 == strcmp(line + 5, "Discards")) {
+                cached_ip6_mib.ip6InDiscards = stats;
+            } else if (0 == strcmp(line + 5, "HdrErrors")) {
+                cached_ip6_mib.ip6InHdrErrors = stats;
+            } else if (0 == strcmp(line + 5, "McastPkts")) {
+                cached_ip6_mib.ip6InMcastPkts = stats;
+            } else if (0 == strcmp(line + 5, "NoRoutes")) {
+                cached_ip6_mib.ip6InNoRoutes = stats;
+            } else if (0 == strcmp(line + 5, "Receives")) {
+                cached_ip6_mib.ip6InReceives = stats;
+            } else if (0 == strcmp(line + 5, "TruncatedPkts")) {
+                cached_ip6_mib.ip6InTruncatedPkts = stats;
+            } else if (0 == strcmp(line + 5, "TooBigErrors")) {
+                cached_ip6_mib.ip6InTooBigErrors = stats;
+            } else if (0 == strcmp(line + 5, "UnknownProtos")) {
+                cached_ip6_mib.ip6InUnknownProtos = stats;
+            } else {
+                match = 0;
+            }
+        } else if (0 == strncmp(line + 3, "Out", 3)) {  /* Out */
+            if (0 == strcmp(line + 6, "Discards")) {
+                cached_ip6_mib.ip6OutDiscards = stats;
+            } else if (0 == strcmp(line + 6, "ForwDatagrams")) {
+                cached_ip6_mib.ip6OutForwDatagrams = stats;
+            } else if (0 == strcmp(line + 6, "McastPkts")) {
+                cached_ip6_mib.ip6OutMcastPkts = stats;
+            } else if (0 == strcmp(line + 6, "NoRoutes")) {
+                cached_ip6_mib.ip6OutNoRoutes = stats;
+            } else if (0 == strcmp(line + 6, "Requests")) {
+                cached_ip6_mib.ip6OutRequests = stats;
+            } else {
+                match = 0;
+            }
+        } else if (0 == strncmp(line + 3, "Reasm", 5)) {  /* Reasm */
+            if (0 == strcmp(line + 8, "Fails")) {
+                cached_ip6_mib.ip6ReasmFails = stats;
+            } else if (0 == strcmp(line + 8, "OKs")) {
+                cached_ip6_mib.ip6ReasmOKs = stats;
+            } else if (0 == strcmp(line + 8, "Reqds")) {
+                cached_ip6_mib.ip6ReasmReqds = stats;
+            } else if (0 == strcmp(line + 8, "Timeout")) {
+                cached_ip6_mib.ip6ReasmTimeout = stats;
+            } else {
+                match = 0;
+            }
+        } else if (0 == strncmp(line + 3, "Frag", 4)) {  /* Frag */
+            if (0 == strcmp(line + 7, "Creates")) {
+                cached_ip6_mib.ip6FragCreates = stats;
+            } else if (0 == strcmp(line + 7, "Fails")) {
+                cached_ip6_mib.ip6FragFails = stats;
+            } else if (0 == strcmp(line + 7, "OKs")) {
+                cached_ip6_mib.ip6FragOKs = stats;
+            } else {
+                match = 0;
+            }
+        } else {
+            match = 0;
+        }
+
+        if(!match)
+            DEBUGMSGTL(("mibII/kernel_linux/ip6stats",
+                        "%s is an unknown tag\n", line));
+    }
+
+    fclose(in);
+#endif
+
+    memcpy((char *) ip6stat, (char *) &cached_ip6_mib, sizeof(*ip6stat));
+    return 0;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_LINUX_READ_IP6_STAT */
+
+int
+linux_read_icmp_msg_stat(struct icmp_mib *icmpstat,
+                         struct icmp4_msg_mib *icmpmsgstat,
+                         int *flag)
+{
+    int ret;
+
+    memset(icmpstat, 0, sizeof(*icmpstat));
+    memset(icmpmsgstat, 0, sizeof(*icmpmsgstat));
+
+    if ((ret = linux_read_mibII_stats()) == -1) {
+        return -1;
+    } else if (ret) {
+       memcpy(icmpmsgstat, &cached_icmp4_msg_mib, sizeof(*icmpmsgstat));
+       *flag = 1; /* We have a valid icmpmsg */
+    }
+
+    memcpy(icmpstat, &cached_icmp_mib, sizeof(*icmpstat));
+    return 0;
+}
+
 int
 linux_read_icmp_stat(struct icmp_mib *icmpstat)
 {
@@ -200,6 +386,169 @@
     return 0;
 }
 
+static int
+linux_read_icmp6_parse(struct icmp6_mib *icmp6stat,
+                       struct icmp6_msg_mib *icmp6msgstat,
+                       int *support)
+{
+#ifdef NETSNMP_ENABLE_IPV6
+    FILE           *in;
+    char            line[1024];
+    char            name[255];
+    unsigned long   stats;
+    char           *endp, *vals;
+    int             match;
+#endif
+
+    memset(icmp6stat, 0, sizeof(*icmp6stat));
+    if (NULL != icmp6msgstat)
+        memset(icmp6msgstat, 0, sizeof(*icmp6msgstat));
+
+#ifdef NETSNMP_ENABLE_IPV6
+    DEBUGMSGTL(("mibII/kernel_linux/icmp6stats",
+                "Reading /proc/net/snmp6 stats\n"));
+    if (NULL == (in = fopen("/proc/net/snmp6", "r"))) {
+        DEBUGMSGTL(("mibII/kernel_linux/icmp6stats",
+                    "Failed to open /proc/net/snmp6\n"));
+        return -1;
+    }
+
+    while (NULL != fgets(line, sizeof(line), in)) {
+        if (0 != strncmp(line, ICMP6_STATS_LINE, ICMP6_STATS_PREFIX_LEN))
+            continue;
+
+        if (2 != sscanf(line, "%s %lu", name, &stats))
+            continue;
+
+        endp = strchr(line, ' ');
+        *endp = '\0';
+        DEBUGMSGTL(("mibII/kernel_linux/icmp6stats", "Find tag: %s\n", line));
+
+        vals = name;
+        if (NULL != icmp6msgstat) {
+            int type;
+            if (0 == strncmp(name, "Icmp6OutType", 12)) {
+                strsep(&vals, "e");
+                type = atoi(vals);
+                if ( type < 0 || type > 255 )
+                    continue;
+                icmp6msgstat->vals[type].OutType = stats;
+                *support = 1;
+                continue;
+            } else if (0 == strncmp(name, "Icmp6InType", 11)) {
+                strsep(&vals, "e");
+                type = atoi(vals);
+                if ( type < 0 || type > 255 )
+                    continue;
+                icmp6msgstat->vals[type].InType = stats;
+                *support = 1;
+                continue;
+            }
+        }
+
+        match = 1;
+        if (0 == strncmp(line + 5, "In", 2)) {  /* In */
+            if (0 == strcmp(line + 7, "DestUnreachs")) {
+                cached_icmp6_mib.icmp6InDestUnreachs = stats;
+            } else if (0 == strcmp(line + 7, "Echos")) {
+                cached_icmp6_mib.icmp6InEchos = stats;
+            } else if (0 == strcmp(line + 7, "EchoReplies")) {
+                cached_icmp6_mib.icmp6InEchoReplies = stats;
+            } else if (0 == strcmp(line + 7, "Errors")) {
+                cached_icmp6_mib.icmp6InErrors = stats;
+            } else if (0 == strcmp(line + 7, "GroupMembQueries")) {
+                cached_icmp6_mib.icmp6InGroupMembQueries = stats;
+            } else if (0 == strcmp(line + 7, "GroupMembReductions")) {
+                cached_icmp6_mib.icmp6InGroupMembReductions = stats;
+            } else if (0 == strcmp(line + 7, "GroupMembResponses")) {
+                cached_icmp6_mib.icmp6InGroupMembResponses = stats;
+            } else if (0 == strcmp(line + 7, "Msgs")) {
+                cached_icmp6_mib.icmp6InMsgs = stats;
+            } else if (0 == strcmp(line + 7, "NeighborAdvertisements")) {
+                cached_icmp6_mib.icmp6InNeighborAdvertisements = stats;
+            } else if (0 == strcmp(line + 7, "NeighborSolicits")) {
+                cached_icmp6_mib.icmp6InNeighborSolicits = stats;
+            } else if (0 == strcmp(line + 7, "PktTooBigs")) {
+                cached_icmp6_mib.icmp6InPktTooBigs = stats;
+            } else if (0 == strcmp(line + 7, "ParmProblems")) {
+                cached_icmp6_mib.icmp6InParmProblems = stats;
+            } else if (0 == strcmp(line + 7, "Redirects")) {
+                cached_icmp6_mib.icmp6InRedirects = stats;
+            } else if (0 == strcmp(line + 7, "RouterAdvertisements")) {
+                cached_icmp6_mib.icmp6InRouterAdvertisements = stats;
+            } else if (0 == strcmp(line + 7, "RouterSolicits")) {
+                cached_icmp6_mib.icmp6InRouterSolicits = stats;
+            } else if (0 == strcmp(line + 7, "TimeExcds")) {
+                cached_icmp6_mib.icmp6InTimeExcds = stats;
+            } else {
+                match = 0;
+            }
+        } else if (0 == strncmp(line + 5, "Out", 3)) {  /* Out */
+            if (0 == strcmp(line + 8, "DestUnreachs")) {
+                cached_icmp6_mib.icmp6OutDestUnreachs = stats;
+            } else if (0 == strcmp(line + 8, "Echos")) {
+                cached_icmp6_mib.icmp6OutEchos = stats;
+            } else if (0 == strcmp(line + 8, "EchoReplies")) {
+                cached_icmp6_mib.icmp6OutEchoReplies = stats;
+            } else if (0 == strcmp(line + 8, "GroupMembReductions")) {
+                cached_icmp6_mib.icmp6OutGroupMembReductions = stats;
+            } else if (0 == strcmp(line + 8, "GroupMembResponses")) {
+                cached_icmp6_mib.icmp6OutGroupMembResponses = stats;
+            } else if (0 == strcmp(line + 8, "Msgs")) {
+                cached_icmp6_mib.icmp6OutMsgs = stats;
+            } else if (0 == strcmp(line + 8, "NeighborAdvertisements")) {
+                cached_icmp6_mib.icmp6OutNeighborAdvertisements = stats;
+            } else if (0 == strcmp(line + 8, "NeighborSolicits")) {
+                cached_icmp6_mib.icmp6OutNeighborSolicits = stats;
+            } else if (0 == strcmp(line + 8, "PktTooBigs")) {
+                cached_icmp6_mib.icmp6OutPktTooBigs = stats;
+            } else if (0 == strcmp(line + 8, "ParmProblems")) {
+                cached_icmp6_mib.icmp6OutParmProblems = stats;
+            } else if (0 == strcmp(line + 8, "Redirects")) {
+                cached_icmp6_mib.icmp6OutRedirects = stats;
+            } else if (0 == strcmp(line + 8, "RouterSolicits")) {
+                cached_icmp6_mib.icmp6OutRouterSolicits = stats;
+            } else if (0 == strcmp(line + 8, "TimeExcds")) {
+                cached_icmp6_mib.icmp6OutTimeExcds = stats;
+            } else {
+                match = 0;
+            }
+        } else {
+            match = 0;
+        }
+        if(!match)
+            DEBUGMSGTL(("mibII/kernel_linux/icmp6stats",
+                        "%s is an unknown tag\n", line));
+    }
+
+    fclose(in);
+#endif
+
+    memcpy((char *) icmp6stat, (char *) &cached_icmp6_mib,
+           sizeof(*icmp6stat));
+    return 0;
+}
+
+int
+linux_read_icmp6_msg_stat(struct icmp6_mib *icmp6stat,
+                          struct icmp6_msg_mib *icmp6msgstat,
+                          int *support)
+{
+     if (linux_read_icmp6_parse(icmp6stat, icmp6msgstat, support) < 0)
+         return -1;
+     else
+         return 0;
+}
+
+int
+linux_read_icmp6_stat(struct icmp6_mib *icmp6stat)
+{
+   if (linux_read_icmp6_parse(icmp6stat, NULL, NULL) < 0)
+       return -1;
+   else
+       return 0;
+}
+
 int
 linux_read_tcp_stat(struct tcp_mib *tcpstat)
 {
@@ -216,6 +565,73 @@
     memset((char *) udpstat, (0), sizeof(*udpstat));
     if (linux_read_mibII_stats() == -1)
         return -1;
+
+#ifdef NETSNMP_ENABLE_IPV6
+    {
+        struct udp6_mib udp6stat;
+        memset(&udp6stat, 0, sizeof(udp6stat));
+
+        if (linux_read_udp6_stat(&udp6stat) == 0) {
+            cached_udp_mib.udpOutDatagrams += udp6stat.udp6OutDatagrams;
+            cached_udp_mib.udpNoPorts      += udp6stat.udp6NoPorts;
+            cached_udp_mib.udpInDatagrams  += udp6stat.udp6InDatagrams;
+            cached_udp_mib.udpInErrors     += udp6stat.udp6InErrors;
+        }
+    }
+#endif
     memcpy((char *) udpstat, (char *) &cached_udp_mib, sizeof(*udpstat));
     return 0;
 }
+
+int
+linux_read_udp6_stat(struct udp6_mib *udp6stat)
+{
+#ifdef NETSNMP_ENABLE_IPV6
+    FILE           *in;
+    char            line[1024];
+    unsigned long   stats;
+    char           *endp;
+#endif
+
+    memset(udp6stat, 0, sizeof(*udp6stat));
+
+#ifdef NETSNMP_ENABLE_IPV6
+    DEBUGMSGTL(("mibII/kernel_linux/udp6stats",
+                "Reading /proc/net/snmp6 stats\n"));
+    if (NULL == (in = fopen("/proc/net/snmp6", "r"))) {
+        DEBUGMSGTL(("mibII/kernel_linux/udp6stats",
+                    "Failed to open /proc/net/snmp6\n"));
+       return -1;
+    }
+
+    while (NULL != fgets(line, sizeof(line), in)) {
+        if (0 != strncmp(line, UDP6_STATS_LINE, UDP6_STATS_PREFIX_LEN))
+            continue;
+
+        if (1 != sscanf(line, "%*s %lu", &stats))
+            continue;
+
+        endp = strchr(line, ' ');
+        *endp = '\0';
+        DEBUGMSGTL(("mibII/kernel_linux/udp6stats", "Find tag: %s\n", line));
+
+        if (0 == strcmp(line + 4, "OutDatagrams")) {
+            cached_udp6_mib.udp6OutDatagrams = stats;
+        } else if (0 == strcmp(line + 4, "NoPorts")) {
+            cached_udp6_mib.udp6NoPorts = stats;
+        } else if (0 == strcmp(line + 4, "InDatagrams")) {
+            cached_udp6_mib.udp6InDatagrams = stats;
+        } else if (0 == strcmp(line + 4, "InErrors")) {
+            cached_udp6_mib.udp6InErrors = stats;
+        } else {
+            DEBUGMSGTL(("mibII/kernel_linux/udp6stats",
+                        "%s is an unknown tag\n", line));
+        }
+    }
+
+    fclose(in);
+#endif
+
+    memcpy((char *) udp6stat, (char *) &cached_udp6_mib, sizeof(*udp6stat));
+    return 0;
+}
diff --git a/agent/mibgroup/mibII/kernel_linux.h b/agent/mibgroup/mibII/kernel_linux.h
index fb7db96..b3c58d3 100644
--- a/agent/mibgroup/mibII/kernel_linux.h
+++ b/agent/mibgroup/mibII/kernel_linux.h
@@ -6,88 +6,20 @@
 #ifndef _MIBGROUP_KERNEL_LINUX_H
 #define _MIBGROUP_KERNEL_LINUX_H
 
-struct ip_mib {
-    unsigned long   ipForwarding;
-    unsigned long   ipDefaultTTL;
-    unsigned long   ipInReceives;
-    unsigned long   ipInHdrErrors;
-    unsigned long   ipInAddrErrors;
-    unsigned long   ipForwDatagrams;
-    unsigned long   ipInUnknownProtos;
-    unsigned long   ipInDiscards;
-    unsigned long   ipInDelivers;
-    unsigned long   ipOutRequests;
-    unsigned long   ipOutDiscards;
-    unsigned long   ipOutNoRoutes;
-    unsigned long   ipReasmTimeout;
-    unsigned long   ipReasmReqds;
-    unsigned long   ipReasmOKs;
-    unsigned long   ipReasmFails;
-    unsigned long   ipFragOKs;
-    unsigned long   ipFragFails;
-    unsigned long   ipFragCreates;
-    unsigned long   ipRoutingDiscards;
-};
-
-struct icmp_mib {
-    unsigned long   icmpInMsgs;
-    unsigned long   icmpInErrors;
-    unsigned long   icmpInDestUnreachs;
-    unsigned long   icmpInTimeExcds;
-    unsigned long   icmpInParmProbs;
-    unsigned long   icmpInSrcQuenchs;
-    unsigned long   icmpInRedirects;
-    unsigned long   icmpInEchos;
-    unsigned long   icmpInEchoReps;
-    unsigned long   icmpInTimestamps;
-    unsigned long   icmpInTimestampReps;
-    unsigned long   icmpInAddrMasks;
-    unsigned long   icmpInAddrMaskReps;
-    unsigned long   icmpOutMsgs;
-    unsigned long   icmpOutErrors;
-    unsigned long   icmpOutDestUnreachs;
-    unsigned long   icmpOutTimeExcds;
-    unsigned long   icmpOutParmProbs;
-    unsigned long   icmpOutSrcQuenchs;
-    unsigned long   icmpOutRedirects;
-    unsigned long   icmpOutEchos;
-    unsigned long   icmpOutEchoReps;
-    unsigned long   icmpOutTimestamps;
-    unsigned long   icmpOutTimestampReps;
-    unsigned long   icmpOutAddrMasks;
-    unsigned long   icmpOutAddrMaskReps;
-};
-
-struct udp_mib {
-    unsigned long   udpInDatagrams;
-    unsigned long   udpNoPorts;
-    unsigned long   udpInErrors;
-    unsigned long   udpOutDatagrams;
-};
-
-struct tcp_mib {
-    unsigned long   tcpRtoAlgorithm;
-    unsigned long   tcpRtoMin;
-    unsigned long   tcpRtoMax;
-    unsigned long   tcpMaxConn;
-    unsigned long   tcpActiveOpens;
-    unsigned long   tcpPassiveOpens;
-    unsigned long   tcpAttemptFails;
-    unsigned long   tcpEstabResets;
-    unsigned long   tcpCurrEstab;
-    unsigned long   tcpInSegs;
-    unsigned long   tcpOutSegs;
-    unsigned long   tcpRetransSegs;
-    unsigned long   tcpInErrs;
-    unsigned long   tcpOutRsts;
-    short           tcpInErrsValid;
-    short           tcpOutRstsValid;
-};
-
+#include "kernel_mib.h"
 
 int             linux_read_ip_stat(struct ip_mib *);
+int             linux_read_ip6_stat(struct ip6_mib *);
 int             linux_read_icmp_stat(struct icmp_mib *);
+int             linux_read_icmp6_stat(struct icmp6_mib *);
 int             linux_read_udp_stat(struct udp_mib *);
+int             linux_read_udp6_stat(struct udp6_mib *);
 int             linux_read_tcp_stat(struct tcp_mib *);
+int             linux_read_icmp_msg_stat(struct icmp_mib *,
+                                         struct icmp4_msg_mib *,
+                                         int *flag);
+int             linux_read_icmp6_msg_stat(struct icmp6_mib *,
+                                          struct icmp6_msg_mib *,
+                                          int *support);
 
 #endif                          /* _MIBGROUP_KERNEL_LINUX_H */
diff --git a/agent/mibgroup/mibII/kernel_mib.h b/agent/mibgroup/mibII/kernel_mib.h
new file mode 100644
index 0000000..8b8639f
--- /dev/null
+++ b/agent/mibgroup/mibII/kernel_mib.h
@@ -0,0 +1,164 @@
+/*
+ *  MIB statistics gathering structures
+ */
+
+#ifndef _MIBGROUP_KERNEL_MIB_H
+#define _MIBGROUP_KERNEL_MIB_H
+
+struct ip_mib {
+    unsigned long   ipForwarding;
+    unsigned long   ipDefaultTTL;
+    unsigned long   ipInReceives;
+    unsigned long   ipInHdrErrors;
+    unsigned long   ipInAddrErrors;
+    unsigned long   ipForwDatagrams;
+    unsigned long   ipInUnknownProtos;
+    unsigned long   ipInDiscards;
+    unsigned long   ipInDelivers;
+    unsigned long   ipOutRequests;
+    unsigned long   ipOutDiscards;
+    unsigned long   ipOutNoRoutes;
+    unsigned long   ipReasmTimeout;
+    unsigned long   ipReasmReqds;
+    unsigned long   ipReasmOKs;
+    unsigned long   ipReasmFails;
+    unsigned long   ipFragOKs;
+    unsigned long   ipFragFails;
+    unsigned long   ipFragCreates;
+    unsigned long   ipRoutingDiscards;
+};
+
+struct ip6_mib {
+    unsigned long ip6InReceives;
+    unsigned long ip6InHdrErrors;
+    unsigned long ip6InTooBigErrors;
+    unsigned long ip6InNoRoutes;
+    unsigned long ip6InAddrErrors;
+    unsigned long ip6InUnknownProtos;
+    unsigned long ip6InTruncatedPkts;
+    unsigned long ip6InDiscards;
+    unsigned long ip6InDelivers;
+    unsigned long ip6OutForwDatagrams;
+    unsigned long ip6OutRequests;
+    unsigned long ip6OutDiscards;
+    unsigned long ip6OutNoRoutes;
+    unsigned long ip6ReasmTimeout;
+    unsigned long ip6ReasmReqds;
+    unsigned long ip6ReasmOKs;
+    unsigned long ip6ReasmFails;
+    unsigned long ip6FragOKs;
+    unsigned long ip6FragFails;
+    unsigned long ip6FragCreates;
+    unsigned long ip6InMcastPkts;
+    unsigned long ip6OutMcastPkts;
+};
+
+struct icmp_mib {
+    unsigned long   icmpInMsgs;
+    unsigned long   icmpInErrors;
+    unsigned long   icmpInDestUnreachs;
+    unsigned long   icmpInTimeExcds;
+    unsigned long   icmpInParmProbs;
+    unsigned long   icmpInSrcQuenchs;
+    unsigned long   icmpInRedirects;
+    unsigned long   icmpInEchos;
+    unsigned long   icmpInEchoReps;
+    unsigned long   icmpInTimestamps;
+    unsigned long   icmpInTimestampReps;
+    unsigned long   icmpInAddrMasks;
+    unsigned long   icmpInAddrMaskReps;
+    unsigned long   icmpOutMsgs;
+    unsigned long   icmpOutErrors;
+    unsigned long   icmpOutDestUnreachs;
+    unsigned long   icmpOutTimeExcds;
+    unsigned long   icmpOutParmProbs;
+    unsigned long   icmpOutSrcQuenchs;
+    unsigned long   icmpOutRedirects;
+    unsigned long   icmpOutEchos;
+    unsigned long   icmpOutEchoReps;
+    unsigned long   icmpOutTimestamps;
+    unsigned long   icmpOutTimestampReps;
+    unsigned long   icmpOutAddrMasks;
+    unsigned long   icmpOutAddrMaskReps;
+};
+
+struct icmp6_mib {
+    unsigned long icmp6InMsgs;
+    unsigned long icmp6InErrors;
+    unsigned long icmp6InDestUnreachs;
+    unsigned long icmp6InPktTooBigs;
+    unsigned long icmp6InTimeExcds;
+    unsigned long icmp6InParmProblems;
+    unsigned long icmp6InEchos;
+    unsigned long icmp6InEchoReplies;
+    unsigned long icmp6InGroupMembQueries;
+    unsigned long icmp6InGroupMembResponses;
+    unsigned long icmp6InGroupMembReductions;
+    unsigned long icmp6InRouterSolicits;
+    unsigned long icmp6InRouterAdvertisements;
+    unsigned long icmp6InNeighborSolicits;
+    unsigned long icmp6InNeighborAdvertisements;
+    unsigned long icmp6InRedirects;
+    unsigned long icmp6OutMsgs;
+    unsigned long icmp6OutDestUnreachs;
+    unsigned long icmp6OutPktTooBigs;
+    unsigned long icmp6OutTimeExcds;
+    unsigned long icmp6OutParmProblems;
+    unsigned long icmp6OutEchos;
+    unsigned long icmp6OutEchoReplies;
+    unsigned long icmp6OutRouterSolicits;
+    unsigned long icmp6OutNeighborSolicits;
+    unsigned long icmp6OutNeighborAdvertisements;
+    unsigned long icmp6OutRedirects;
+    unsigned long icmp6OutGroupMembResponses;
+    unsigned long icmp6OutGroupMembReductions;
+};
+
+struct icmp_msg_mib {
+    unsigned long InType;
+    unsigned long OutType;
+};
+
+/* Lets use wrapper structures for future expansion */
+struct icmp4_msg_mib {
+    struct icmp_msg_mib vals[256];
+};
+
+struct icmp6_msg_mib {
+    struct icmp_msg_mib vals[256];
+};
+
+struct udp_mib {
+    unsigned long   udpInDatagrams;
+    unsigned long   udpNoPorts;
+    unsigned long   udpInErrors;
+    unsigned long   udpOutDatagrams;
+};
+
+struct udp6_mib {
+    unsigned long udp6InDatagrams;
+    unsigned long udp6NoPorts;
+    unsigned long udp6InErrors;
+    unsigned long udp6OutDatagrams;
+};
+
+struct tcp_mib {
+    unsigned long   tcpRtoAlgorithm;
+    unsigned long   tcpRtoMin;
+    unsigned long   tcpRtoMax;
+    unsigned long   tcpMaxConn;
+    unsigned long   tcpActiveOpens;
+    unsigned long   tcpPassiveOpens;
+    unsigned long   tcpAttemptFails;
+    unsigned long   tcpEstabResets;
+    unsigned long   tcpCurrEstab;
+    unsigned long   tcpInSegs;
+    unsigned long   tcpOutSegs;
+    unsigned long   tcpRetransSegs;
+    unsigned long   tcpInErrs;
+    unsigned long   tcpOutRsts;
+    short           tcpInErrsValid;
+    short           tcpOutRstsValid;
+};
+
+#endif  /* _MIBGROUP_KERNEL_MIB_H */
diff --git a/agent/mibgroup/mibII/kernel_netbsd.c b/agent/mibgroup/mibII/kernel_netbsd.c
index 93f38b7..0806180 100644
--- a/agent/mibgroup/mibII/kernel_netbsd.c
+++ b/agent/mibgroup/mibII/kernel_netbsd.c
@@ -15,6 +15,7 @@
 #include <netinet/ip_icmp.h>
 #include <netinet/ip_var.h>
 #include <netinet/icmp_var.h>
+#include <netinet/icmp6.h>
 #include <netinet/tcp.h>
 #include <netinet/tcp_timer.h>
 #include <netinet/tcp_var.h>
@@ -38,8 +39,10 @@
 
     (void)memset(mib, 0, sizeof(*mib));
 
-    if (-1 == sysctlbyname("net.inet.icmp.stats", icmpstat, &size, NULL, 0))
+    if (-1 == sysctlbyname("net.inet.icmp.stats", icmpstat, &size, NULL, 0)) {
+	snmp_perror("netbsd_read_icmp_stat: net.inet.icmp.stats");
         return -1;
+    }
 
     mib->icmpInMsgs = icmpstat[ICMP_STAT_BADCODE]
         + icmpstat[ICMP_STAT_TOOSHORT]
@@ -86,6 +89,104 @@
     return 0;
 }
 
+
+int
+netbsd_read_icmp6_stat(struct icmp6_mib *mib)
+{
+    uint64_t icmpstat[ICMP6_NSTATS];
+    size_t   size = sizeof(icmpstat);
+    int      i;
+
+    (void)memset(mib, 0, sizeof(*mib));
+
+    if (-1 == sysctlbyname("net.inet6.icmp6.stats", icmpstat, &size, NULL, 0)) {
+	snmp_perror("netbsd_read_icmp6_stat: net.inet6.icmp6.stats");
+        return -1;
+    }
+
+    mib->icmp6InMsgs = icmpstat[ICMP6_STAT_BADCODE]
+            + icmpstat[ICMP_STAT_TOOSHORT]
+	    + icmpstat[ICMP_STAT_CHECKSUM]
+            + icmpstat[ICMP_STAT_BADLEN];
+    for (i = 0; i <= ICMP6_MAXTYPE; i++)
+        mib->icmp6InMsgs  += icmpstat[ICMP6_STAT_INHIST + i];
+    mib->icmp6InErrors = icmpstat[ICMP6_STAT_BADCODE]
+        + icmpstat[ICMP6_STAT_TOOSHORT]
+        + icmpstat[ICMP6_STAT_CHECKSUM]
+        + icmpstat[ICMP6_STAT_BADLEN];
+    mib->icmp6InDestUnreachs = icmpstat[ICMP6_STAT_INHIST + ICMP6_DST_UNREACH];
+    mib->icmp6InPktTooBigs = icmpstat[ICMP6_STAT_INHIST + ICMP6_PACKET_TOO_BIG];
+    mib->icmp6InTimeExcds = icmpstat[ICMP6_STAT_INHIST + ICMP6_TIME_EXCEEDED];
+    mib->icmp6InParmProblems = icmpstat[ICMP6_STAT_INHIST + ICMP6_PARAM_PROB];
+    mib->icmp6InEchos = icmpstat[ICMP6_STAT_INHIST + ICMP6_ECHO_REQUEST];
+    mib->icmp6InEchoReplies = icmpstat[ICMP6_STAT_INHIST + ICMP6_ECHO_REPLY];
+    mib->icmp6InGroupMembQueries = icmpstat[ICMP6_STAT_INHIST + MLD_LISTENER_QUERY];
+    mib->icmp6InGroupMembResponses = icmpstat[ICMP6_STAT_INHIST + MLD_LISTENER_REPORT];
+    mib->icmp6InRouterSolicits = icmpstat[ICMP6_STAT_INHIST + ND_ROUTER_SOLICIT];
+    mib->icmp6InRouterAdvertisements = icmpstat[ICMP6_STAT_INHIST + ND_ROUTER_ADVERT];
+    mib->icmp6InNeighborSolicits = icmpstat[ICMP6_STAT_INHIST + ND_NEIGHBOR_SOLICIT];
+    mib->icmp6InNeighborAdvertisements = icmpstat[ICMP6_STAT_INHIST + ND_NEIGHBOR_ADVERT];
+    mib->icmp6InRedirects = icmpstat[ICMP6_STAT_INHIST + ND_REDIRECT];
+
+    mib->icmp6OutMsgs = icmpstat[ICMP6_STAT_BADCODE]
+        + icmpstat[ICMP6_STAT_TOOSHORT]
+        + icmpstat[ICMP6_STAT_CHECKSUM]
+        + icmpstat[ICMP6_STAT_BADLEN];
+    for (i = 0; i <= ICMP6_MAXTYPE; i++)
+        mib->icmp6OutMsgs += icmpstat[ICMP6_STAT_OUTHIST + i];
+    mib->icmp6OutDestUnreachs = icmpstat[ICMP6_STAT_OUTHIST + ICMP6_DST_UNREACH];
+    mib->icmp6OutPktTooBigs =  icmpstat[ICMP6_STAT_OUTHIST + ICMP6_PACKET_TOO_BIG];
+    mib->icmp6OutTimeExcds = icmpstat[ICMP6_STAT_OUTHIST + ICMP6_TIME_EXCEEDED];
+    mib->icmp6OutParmProblems = icmpstat[ICMP6_STAT_OUTHIST + ICMP6_PARAM_PROB];
+    mib->icmp6OutEchos = icmpstat[ICMP6_STAT_OUTHIST + ICMP6_ECHO_REQUEST];
+    mib->icmp6OutEchoReplies = icmpstat[ICMP6_STAT_OUTHIST + ICMP6_ECHO_REPLY];
+    mib->icmp6OutRouterSolicits =  icmpstat[ICMP6_STAT_OUTHIST + ND_ROUTER_SOLICIT];
+    mib->icmp6OutNeighborSolicits =  icmpstat[ICMP6_STAT_OUTHIST + ND_NEIGHBOR_SOLICIT];
+    mib->icmp6OutNeighborAdvertisements =  icmpstat[ICMP6_STAT_OUTHIST + ND_NEIGHBOR_ADVERT];
+    mib->icmp6OutRedirects = icmpstat[ICMP6_STAT_OUTHIST + ND_REDIRECT];
+    mib->icmp6OutGroupMembResponses =  icmpstat[ICMP6_STAT_OUTHIST + MLD_LISTENER_REPORT];
+    mib->icmp6OutGroupMembReductions =  icmpstat[ICMP6_STAT_OUTHIST + MLD_LISTENER_DONE];
+
+    return 0;
+}
+
+
+int
+netbsd_read_icmp_msg_stat(struct icmp_mib *mib,
+                          struct icmp4_msg_mib *msgmib,
+			  int *flag)
+{
+    netbsd_read_icmp_stat(mib);
+    *flag = 0;
+    return 0;
+}
+
+
+int
+netbsd_read_icmp6_msg_stat(struct icmp6_mib *mib,
+                           struct icmp6_msg_mib *msgmib,
+			   int *support)
+{
+    uint64_t icmpstat[ICMP6_NSTATS];
+    size_t   size = sizeof(icmpstat);
+    int      i;
+
+    netbsd_read_icmp6_stat(mib);
+
+    if (-1 == sysctlbyname("net.inet6.icmp6.stats", icmpstat, &size, NULL, 0)) {
+	snmp_perror("netbsd_read_icmp6_stat: net.inet6.icmp6.stats");
+        return -1;
+    }
+
+    for (i = 0; i < 256; i++) {
+	msgmib->vals[i].InType = icmpstat[ICMP6_STAT_INHIST+i];
+	msgmib->vals[i].OutType = icmpstat[ICMP6_STAT_OUTHIST+i];
+    }
+    *support = 1;
+    return 0;
+}
+
+
 int
 netbsd_read_ip_stat(struct ip_mib *mib)
 {
@@ -97,8 +198,10 @@
 
     (void)memset(mib, 0, sizeof(*mib));
 
-    if (-1 == sysctlbyname("net.inet.ip.stats", ipstat, &size, NULL, 0))
+    if (-1 == sysctlbyname("net.inet.ip.stats", ipstat, &size, NULL, 0)) {
+	snmp_perror("netbsd_read_ip_stat: net.inet.ip.stats");
         return -1;
+    }
 
     mib->ipForwarding = 0;
     len = sizeof i;
@@ -138,6 +241,7 @@
     return 0;
 }
 
+
 int
 netbsd_read_tcp_stat(struct tcp_mib *mib)
 {
@@ -146,8 +250,10 @@
 
     (void)memset(mib, 0, sizeof(*mib));
 
-    if (-1 == sysctlbyname("net.inet.tcp.stats", tcpstat, &size, NULL, 0))
+    if (-1 == sysctlbyname("net.inet.tcp.stats", tcpstat, &size, NULL, 0)) {
+	snmp_perror("netbsd_read_tcp_stat: net.inet.tcp.stats");
         return -1;
+    }
 
     mib->tcpRtoAlgorithm = 4; /* Assume Van Jacobsen's algorithm */
     mib->tcpRtoMin = TCPTV_MIN;
@@ -174,6 +280,7 @@
     return 0;
 }
 
+
 int
 netbsd_read_udp_stat(struct udp_mib *mib)
 {
@@ -182,14 +289,16 @@
 
     (void)memset(mib, 0, sizeof(*mib));
 
-    if (-1 == sysctlbyname("net.inet.udp.stats", udpstat, &size, NULL, 0))
+    if (-1 == sysctlbyname("net.inet.udp.stats", udpstat, &size, NULL, 0)) {
+	snmp_perror("netbsd_read_udp_stat: net.inet.udp.stats");
         return -1;
+    }
 
     mib->udpInDatagrams = udpstat[UDP_STAT_IPACKETS];
     mib->udpNoPorts = udpstat[UDP_STAT_NOPORT];
     mib->udpOutDatagrams = udpstat[UDP_STAT_OPACKETS];
     mib->udpInErrors = udpstat[UDP_STAT_HDROPS]
-        + udpstat[UDP_STAT_BADSUM] /* + udpstat[UDP_STAT_DISCARD] /* FIXME */
+        + udpstat[UDP_STAT_BADSUM] /* + udpstat[UDP_STAT_DISCARD] */ /* FIXME */
         + udpstat[UDP_STAT_FULLSOCK] + udpstat[UDP_STAT_BADLEN];
 
     return 0;
diff --git a/agent/mibgroup/mibII/kernel_netbsd.h b/agent/mibgroup/mibII/kernel_netbsd.h
index 9000682..accb9a7 100644
--- a/agent/mibgroup/mibII/kernel_netbsd.h
+++ b/agent/mibgroup/mibII/kernel_netbsd.h
@@ -3,85 +3,16 @@
 
 #if defined(NETBSD_STATS_VIA_SYSCTL)
 
-struct icmp_mib {
-    unsigned long   icmpInMsgs;
-    unsigned long   icmpInErrors;
-    unsigned long   icmpInDestUnreachs;
-    unsigned long   icmpInTimeExcds;
-    unsigned long   icmpInParmProbs;
-    unsigned long   icmpInSrcQuenchs;
-    unsigned long   icmpInRedirects;
-    unsigned long   icmpInEchos;
-    unsigned long   icmpInEchoReps;
-    unsigned long   icmpInTimestamps;
-    unsigned long   icmpInTimestampReps;
-    unsigned long   icmpInAddrMasks;
-    unsigned long   icmpInAddrMaskReps;
-    unsigned long   icmpOutMsgs;
-    unsigned long   icmpOutErrors;
-    unsigned long   icmpOutDestUnreachs;
-    unsigned long   icmpOutTimeExcds;
-    unsigned long   icmpOutParmProbs;
-    unsigned long   icmpOutSrcQuenchs;
-    unsigned long   icmpOutRedirects;
-    unsigned long   icmpOutEchos;
-    unsigned long   icmpOutEchoReps;
-    unsigned long   icmpOutTimestamps;
-    unsigned long   icmpOutTimestampReps;
-    unsigned long   icmpOutAddrMasks;
-    unsigned long   icmpOutAddrMaskReps;
-};
-
-struct ip_mib {
-    unsigned long   ipForwarding;
-    unsigned long   ipDefaultTTL;
-    unsigned long   ipInReceives;
-    unsigned long   ipInHdrErrors;
-    unsigned long   ipInAddrErrors;
-    unsigned long   ipForwDatagrams;
-    unsigned long   ipInUnknownProtos;
-    unsigned long   ipInDiscards;
-    unsigned long   ipInDelivers;
-    unsigned long   ipOutRequests;
-    unsigned long   ipOutDiscards;
-    unsigned long   ipOutNoRoutes;
-    unsigned long   ipReasmTimeout;
-    unsigned long   ipReasmReqds;
-    unsigned long   ipReasmOKs;
-    unsigned long   ipReasmFails;
-    unsigned long   ipFragOKs;
-    unsigned long   ipFragFails;
-    unsigned long   ipFragCreates;
-    unsigned long   ipRoutingDiscards;
-};
-
-struct tcp_mib {
-    unsigned long   tcpRtoAlgorithm;
-    unsigned long   tcpRtoMin;
-    unsigned long   tcpRtoMax;
-    unsigned long   tcpMaxConn;
-    unsigned long   tcpActiveOpens;
-    unsigned long   tcpPassiveOpens;
-    unsigned long   tcpAttemptFails;
-    unsigned long   tcpEstabResets;
-    unsigned long   tcpCurrEstab;
-    unsigned long   tcpInSegs;
-    unsigned long   tcpOutSegs;
-    unsigned long   tcpRetransSegs;
-    unsigned long   tcpInErrs;
-    unsigned long   tcpOutRsts;
-    short           tcpInErrsValid;
-    short           tcpOutRstsValid;
-};
-
-struct udp_mib {
-    unsigned long   udpInDatagrams;
-    unsigned long   udpNoPorts;
-    unsigned long   udpInErrors;
-    unsigned long   udpOutDatagrams;
-};
+#include "kernel_mib.h"
 
 int      netbsd_read_icmp_stat(struct icmp_mib *);
+int      netbsd_read_icmp6_stat(struct icmp6_mib *);
+int      netbsd_read_icmp_msg_stat(struct icmp_mib *,
+                                   struct icmp4_msg_mib *,
+		 		  int *flag);
+int      netbsd_read_icmp6_msg_stat(struct icmp6_mib *,
+                                    struct icmp6_msg_mib *,
+				    int *support);
 int      netbsd_read_ip_stat(struct ip_mib *);
 int      netbsd_read_tcp_stat(struct tcp_mib *);
 int      netbsd_read_udp_stat(struct udp_mib *);
diff --git a/agent/mibgroup/mibII/kernel_sysctl.c b/agent/mibgroup/mibII/kernel_sysctl.c
new file mode 100644
index 0000000..166f664
--- /dev/null
+++ b/agent/mibgroup/mibII/kernel_sysctl.c
@@ -0,0 +1,175 @@
+/*
+ * sysctl interface for icmp stats for others than NetBSD
+ */
+
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <sys/protosw.h>
+
+#include <netinet/in.h>
+#include <netinet/in_systm.h>
+#include <netinet/ip.h>
+#include <netinet/ip_icmp.h>
+#include <netinet/ip_var.h>
+#include <netinet/icmp_var.h>
+#include <netinet/icmp6.h>
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include "kernel_sysctl.h"
+
+#if defined(NETSNMP_CAN_USE_SYSCTL)
+
+int
+sysctl_read_icmp_stat(struct icmp_mib *mib)
+{
+    struct icmpstat icmpstat;
+    size_t   size = sizeof(icmpstat);
+    int      i;
+    static int      sname[4] =
+        { CTL_NET, PF_INET, IPPROTO_ICMP, ICMPCTL_STATS };
+
+    (void)memset(mib, 0, sizeof(*mib));
+
+    if (-1 == sysctl(sname, 4, &icmpstat, &size, NULL, 0)) {
+	snmp_perror("sysctl_read_icmp_stat: net.inet.icmp.stats");
+        return -1;
+    }
+
+    mib->icmpInMsgs = icmpstat.icps_badcode
+        + icmpstat.icps_tooshort
+        + icmpstat.icps_checksum
+        + icmpstat.icps_badlen;
+    mib->icmpInErrors = mib->icmpInMsgs;
+    for (i = 0; i <= ICMP_MAXTYPE; i++)
+        mib->icmpInMsgs  += icmpstat.icps_inhist[i];
+    mib->icmpInDestUnreachs = icmpstat.icps_inhist[ICMP_UNREACH];
+    mib->icmpInTimeExcds = icmpstat.icps_inhist[ICMP_TIMXCEED];
+    mib->icmpInParmProbs = icmpstat.icps_inhist[ICMP_PARAMPROB];
+    mib->icmpInSrcQuenchs = icmpstat.icps_inhist[ICMP_SOURCEQUENCH];
+    mib->icmpInRedirects = icmpstat.icps_inhist[ICMP_REDIRECT];
+    mib->icmpInEchos = icmpstat.icps_inhist[ICMP_ECHO];
+    mib->icmpInEchoReps = icmpstat.icps_inhist[ICMP_ECHOREPLY];
+    mib->icmpInTimestamps = icmpstat.icps_inhist[ICMP_TSTAMP];
+    mib->icmpInTimestampReps = icmpstat.icps_inhist[ICMP_TSTAMPREPLY];
+    mib->icmpInAddrMasks = icmpstat.icps_inhist[ICMP_MASKREQ];
+    mib->icmpInAddrMaskReps = icmpstat.icps_inhist[ICMP_MASKREPLY];
+    mib->icmpOutMsgs = icmpstat.icps_oldshort + icmpstat.icps_oldicmp;
+    for (i = 0; i <= ICMP_MAXTYPE; i++)
+        mib->icmpOutMsgs += icmpstat.icps_outhist[i];
+    mib->icmpOutErrors = icmpstat.icps_oldshort + icmpstat.icps_oldicmp;
+    mib->icmpOutDestUnreachs = icmpstat.icps_outhist[ICMP_UNREACH];
+    mib->icmpOutTimeExcds = icmpstat.icps_outhist[ICMP_TIMXCEED];
+    mib->icmpOutParmProbs = icmpstat.icps_outhist[ICMP_PARAMPROB];
+    mib->icmpOutSrcQuenchs = icmpstat.icps_outhist[ICMP_SOURCEQUENCH];
+    mib->icmpOutRedirects = icmpstat.icps_outhist[ICMP_REDIRECT];
+    mib->icmpOutEchos = icmpstat.icps_outhist[ICMP_ECHO];
+    mib->icmpOutEchoReps = icmpstat.icps_outhist[ICMP_ECHOREPLY];
+    mib->icmpOutTimestamps = icmpstat.icps_outhist[ICMP_TSTAMP];
+    mib->icmpOutTimestampReps = icmpstat.icps_outhist[ICMP_TSTAMPREPLY];
+    mib->icmpOutAddrMasks = icmpstat.icps_outhist[ICMP_MASKREQ];
+    mib->icmpOutAddrMaskReps = icmpstat.icps_outhist[ICMP_MASKREPLY];
+
+    return 0;
+}
+
+
+int
+sysctl_read_icmp6_stat(struct icmp6_mib *mib)
+{
+    struct icmp6stat icmpstat;
+    size_t   size = sizeof(icmpstat);
+    int      i;
+    static int      sname[4] =
+        { CTL_NET, PF_INET6, IPPROTO_ICMPV6, ICMPV6CTL_STATS };
+
+    (void)memset(mib, 0, sizeof(*mib));
+
+    if (-1 == sysctl(sname, 4, &icmpstat, &size, NULL, 0)) {
+	snmp_perror("sysctl_read_icmp6_stat: net.inet6.icmp6.stats");
+        return -1;
+    }
+
+    mib->icmp6InMsgs = icmpstat.icp6s_badcode
+            + icmpstat.icp6s_tooshort
+	    + icmpstat.icp6s_checksum
+            + icmpstat.icp6s_badlen;
+    mib->icmp6InErrors = mib->icmp6InMsgs;
+    for (i = 0; i <= ICMP6_MAXTYPE; i++)
+        mib->icmp6InMsgs  += icmpstat.icp6s_inhist[i];
+    mib->icmp6InDestUnreachs = icmpstat.icp6s_inhist[ICMP6_DST_UNREACH];
+    mib->icmp6InPktTooBigs = icmpstat.icp6s_inhist[ICMP6_PACKET_TOO_BIG];
+    mib->icmp6InTimeExcds = icmpstat.icp6s_inhist[ICMP6_TIME_EXCEEDED];
+    mib->icmp6InParmProblems = icmpstat.icp6s_inhist[ICMP6_PARAM_PROB];
+    mib->icmp6InEchos = icmpstat.icp6s_inhist[ICMP6_ECHO_REQUEST];
+    mib->icmp6InEchoReplies = icmpstat.icp6s_inhist[ICMP6_ECHO_REPLY];
+    mib->icmp6InGroupMembQueries = icmpstat.icp6s_inhist[MLD_LISTENER_QUERY];
+    mib->icmp6InGroupMembResponses = icmpstat.icp6s_inhist[MLD_LISTENER_REPORT];
+    mib->icmp6InRouterSolicits = icmpstat.icp6s_inhist[ND_ROUTER_SOLICIT];
+    mib->icmp6InRouterAdvertisements = icmpstat.icp6s_inhist[ND_ROUTER_ADVERT];
+    mib->icmp6InNeighborSolicits = icmpstat.icp6s_inhist[ND_NEIGHBOR_SOLICIT];
+    mib->icmp6InNeighborAdvertisements = icmpstat.icp6s_inhist[ND_NEIGHBOR_ADVERT];
+    mib->icmp6InRedirects = icmpstat.icp6s_inhist[ND_REDIRECT];
+
+    mib->icmp6OutMsgs = icmpstat.icp6s_canterror
+        + icmpstat.icp6s_toofreq;
+    for (i = 0; i <= ICMP6_MAXTYPE; i++)
+        mib->icmp6OutMsgs += icmpstat.icp6s_outhist[i];
+    mib->icmp6OutDestUnreachs = icmpstat.icp6s_outhist[ICMP6_DST_UNREACH];
+    mib->icmp6OutPktTooBigs =  icmpstat.icp6s_outhist[ICMP6_PACKET_TOO_BIG];
+    mib->icmp6OutTimeExcds = icmpstat.icp6s_outhist[ICMP6_TIME_EXCEEDED];
+    mib->icmp6OutParmProblems = icmpstat.icp6s_outhist[ICMP6_PARAM_PROB];
+    mib->icmp6OutEchos = icmpstat.icp6s_outhist[ICMP6_ECHO_REQUEST];
+    mib->icmp6OutEchoReplies = icmpstat.icp6s_outhist[ICMP6_ECHO_REPLY];
+    mib->icmp6OutRouterSolicits =  icmpstat.icp6s_outhist[ND_ROUTER_SOLICIT];
+    mib->icmp6OutNeighborSolicits =  icmpstat.icp6s_outhist[ND_NEIGHBOR_SOLICIT];
+    mib->icmp6OutNeighborAdvertisements =  icmpstat.icp6s_outhist[ND_NEIGHBOR_ADVERT];
+    mib->icmp6OutRedirects = icmpstat.icp6s_outhist[ND_REDIRECT];
+    mib->icmp6OutGroupMembResponses =  icmpstat.icp6s_outhist[MLD_LISTENER_REPORT];
+    mib->icmp6OutGroupMembReductions =  icmpstat.icp6s_outhist[MLD_LISTENER_DONE];
+
+    return 0;
+}
+
+
+int
+sysctl_read_icmp_msg_stat(struct icmp_mib *mib,
+                          struct icmp4_msg_mib *msgmib,
+			  int *flag)
+{
+    sysctl_read_icmp_stat(mib);
+    *flag = 0;
+    return 0;
+}
+
+
+int
+sysctl_read_icmp6_msg_stat(struct icmp6_mib *mib,
+                           struct icmp6_msg_mib *msgmib,
+			   int *support)
+{
+    struct icmp6stat icmpstat;
+    size_t   size = sizeof(icmpstat);
+    int      i;
+    static int      sname[4] =
+        { CTL_NET, PF_INET6, IPPROTO_ICMPV6, ICMPV6CTL_STATS };
+
+    sysctl_read_icmp6_stat(mib);
+
+    if (-1 == sysctl(sname, 4, &icmpstat, &size, NULL, 0)) {
+	snmp_perror("sysctl_read_icmp6_stat: net.inet6.icmp6.stats");
+        return -1;
+    }
+
+    for (i = 0; i < 256; i++) {
+	msgmib->vals[i].InType = icmpstat.icp6s_inhist[i];
+	msgmib->vals[i].OutType = icmpstat.icp6s_outhist[i];
+    }
+    *support = 1;
+    return 0;
+}
+
+
+#endif
diff --git a/agent/mibgroup/mibII/kernel_sysctl.h b/agent/mibgroup/mibII/kernel_sysctl.h
new file mode 100644
index 0000000..7484973
--- /dev/null
+++ b/agent/mibgroup/mibII/kernel_sysctl.h
@@ -0,0 +1,19 @@
+#ifndef _MIBGROUP_KERNEL_SYSCTL_H
+#define _MIBGROUP_KERNEL_SYSCTL_H
+
+#if defined(NETSNMP_CAN_USE_SYSCTL)
+
+#include "kernel_mib.h"
+
+int      sysctl_read_icmp_stat(struct icmp_mib *);
+int      sysctl_read_icmp6_stat(struct icmp6_mib *);
+int      sysctl_read_icmp_msg_stat(struct icmp_mib *,
+                                   struct icmp4_msg_mib *,
+		 		  int *flag);
+int      sysctl_read_icmp6_msg_stat(struct icmp6_mib *,
+                                    struct icmp6_msg_mib *,
+				    int *support);
+
+#endif /* NETSNMP_CAN_USE_SYSCTL */
+
+#endif /* _MIBGROUP_KERNEL_SYSCTL_H */
diff --git a/agent/mibgroup/mibII/mibII_common.h b/agent/mibgroup/mibII/mibII_common.h
index 40a8c93..87ef9d1 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>
@@ -28,7 +25,7 @@
 #if HAVE_SYS_TCPIPSTATS_H
 #include <sys/tcpipstats.h>
 #endif
-#if defined(IFNET_NEEDS_KERNEL) && !defined(_KERNEL)
+#if defined(NETSNMP_IFNET_NEEDS_KERNEL) && !defined(_KERNEL)
 #define _KERNEL 1
 #define _I_DEFINED_KERNEL
 #endif
@@ -91,7 +88,6 @@
 #include <dmalloc.h>
 #endif
 
-
 #ifdef solaris2
 #include "kernel_sunos5.h"
 #else
@@ -103,6 +99,10 @@
 #ifdef NETBSD_STATS_VIA_SYSCTL
 #include "kernel_netbsd.h"
 #endif
+#if defined(NETSNMP_CAN_USE_SYSCTL) /* && defined(ICMPCTL_STATS) */
+#include "kernel_sysctl.h"
+#endif
+
 	/* or MIB_xxxCOUNTER_SYMBOL || hpux11 */
 #ifdef hpux
 #include <sys/mib.h>
diff --git a/agent/mibgroup/mibII/mta_sendmail.c b/agent/mibgroup/mibII/mta_sendmail.c
index 5921d68..c1edd07 100644
--- a/agent/mibgroup/mibII/mta_sendmail.c
+++ b/agent/mibgroup/mibII/mta_sendmail.c
@@ -101,13 +101,8 @@
 # endif
 #endif
 
-#if HAVE_STDARG_H
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
 #include <errno.h>
+#include <stdarg.h>
 
  /**/
 /** "macros and variables for registering the OID tree" */
@@ -152,31 +147,37 @@
  * structure that tells the agent, which function returns what values 
  */
 static struct variable3 mta_variables[] = {
-    {MTARECEIVEDMESSAGES, ASN_COUNTER, RONLY, var_mtaEntry, 3, {1, 1, 1}},
-    {MTASTOREDMESSAGES, ASN_GAUGE, RONLY, var_mtaEntry, 3, {1, 1, 2}},
-    {MTATRANSMITTEDMESSAGES, ASN_COUNTER, RONLY, var_mtaEntry, 3,
-     {1, 1, 3}},
-    {MTARECEIVEDVOLUME, ASN_COUNTER, RONLY, var_mtaEntry, 3, {1, 1, 4}},
-    {MTASTOREDVOLUME, ASN_GAUGE, RONLY, var_mtaEntry, 3, {1, 1, 5}},
-    {MTATRANSMITTEDVOLUME, ASN_COUNTER, RONLY, var_mtaEntry, 3, {1, 1, 6}},
+    {MTARECEIVEDMESSAGES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_mtaEntry, 3, {1, 1, 1}},
+    {MTASTOREDMESSAGES, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_mtaEntry, 3, {1, 1, 2}},
+    {MTATRANSMITTEDMESSAGES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_mtaEntry, 3, {1, 1, 3}},
+    {MTARECEIVEDVOLUME, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_mtaEntry, 3, {1, 1, 4}},
+    {MTASTOREDVOLUME, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_mtaEntry, 3, {1, 1, 5}},
+    {MTATRANSMITTEDVOLUME, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_mtaEntry, 3, {1, 1, 6}},
 
-    {MTAGROUPRECEIVEDMESSAGES, ASN_COUNTER, RONLY, var_mtaGroupEntry, 3,
-     {2, 1, 2}},
-    {MTAGROUPREJECTEDMESSAGES, ASN_COUNTER, RONLY, var_mtaGroupEntry, 3,
-     {2, 1, 3}},
-    {MTAGROUPSTOREDMESSAGES, ASN_GAUGE, RONLY, var_mtaGroupEntry, 3,
-     {2, 1, 4}},
-    {MTAGROUPTRANSMITTEDMESSAGES, ASN_COUNTER, RONLY, var_mtaGroupEntry, 3,
-     {2, 1, 5}},
-    {MTAGROUPRECEIVEDVOLUME, ASN_COUNTER, RONLY, var_mtaGroupEntry, 3,
-     {2, 1, 6}},
-    {MTAGROUPSTOREDVOLUME, ASN_GAUGE, RONLY, var_mtaGroupEntry, 3,
-     {2, 1, 7}},
-    {MTAGROUPTRANSMITTEDVOLUME, ASN_COUNTER, RONLY, var_mtaGroupEntry, 3,
-     {2, 1, 8}},
-    {MTAGROUPNAME, ASN_OCTET_STR, RONLY, var_mtaGroupEntry, 3, {2, 1, 25}},
-    {MTAGROUPHIERARCHY, ASN_INTEGER, RONLY, var_mtaGroupEntry, 3,
-     {2, 1, 31}}
+    {MTAGROUPRECEIVEDMESSAGES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_mtaGroupEntry, 3, {2, 1, 2}},
+    {MTAGROUPREJECTEDMESSAGES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_mtaGroupEntry, 3, {2, 1, 3}},
+    {MTAGROUPSTOREDMESSAGES, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_mtaGroupEntry, 3, {2, 1, 4}},
+    {MTAGROUPTRANSMITTEDMESSAGES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_mtaGroupEntry, 3, {2, 1, 5}},
+    {MTAGROUPRECEIVEDVOLUME, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_mtaGroupEntry, 3, {2, 1, 6}},
+    {MTAGROUPSTOREDVOLUME, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_mtaGroupEntry, 3, {2, 1, 7}},
+    {MTAGROUPTRANSMITTEDVOLUME, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_mtaGroupEntry, 3, {2, 1, 8}},
+    {MTAGROUPNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_mtaGroupEntry, 3, {2, 1, 25}},
+    {MTAGROUPHIERARCHY, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_mtaGroupEntry, 3, {2, 1, 31}}
 };
  /**/
 /** "other macros and structures" */
@@ -342,37 +343,15 @@
  *    ...:         additional parameters to insert into the error message string
  *
  */
-#if HAVE_STDARG_H
-    static void
+static void
 print_error(int priority, BOOL config, BOOL config_only,
             const char *function, const char *format, ...)
-#else
-    static void
-print_error(va_alist)
-     va_dcl
-#endif
 {
     va_list         ap;
     char            buffer[2 * FILENAMELEN + 200];      /* I know, that's not perfectly safe, but since I don't use more
                                                          * than two filenames in one error message, that should be enough */
 
-#if HAVE_STDARG_H
     va_start(ap, format);
-#else
-    int             priority;
-    BOOL            config;
-    BOOL            config_only;
-    const char     *function;
-    const char     *format;
-
-    va_start(ap);
-    priority = va_arg(ap, int);
-    config = va_arg(ap, BOOL);
-    config_only = va_arg(ap, BOOL);
-    function = va_arg(ap, char *);
-    format = va_arg(ap, char *);
-#endif
-
     vsnprintf(buffer, sizeof(buffer), format, ap);
 
     if (config) {
@@ -1054,9 +1033,7 @@
         open_sendmailst(TRUE);
 
         if (sendmailst_fh == -1) {
-            char            str[FILENAMELEN + 50];
-            sprintf(str, "couldn't open file \"%s\"", sendmailst_fn);
-            config_perror(str);
+	    netsnmp_config_error("couldn't open file \"%s\"", sendmailst_fn);
             return;
         }
 
diff --git a/agent/mibgroup/mibII/route_headers.h b/agent/mibgroup/mibII/route_headers.h
index 34830f2..eace2e2 100644
--- a/agent/mibgroup/mibII/route_headers.h
+++ b/agent/mibgroup/mibII/route_headers.h
@@ -27,8 +27,6 @@
 #include "ip.h"
 #include "kernel.h"
 #include "interfaces.h"
-#include "struct.h"
-#include "util_funcs.h"
 
 #else /* !NETSNMP_CAN_USE_SYSCTL */
 
@@ -42,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
@@ -94,28 +88,28 @@
 #endif
 #undef	KERNEL
 #ifdef RTENTRY_4_4
-#ifndef STRUCT_RTENTRY_HAS_RT_UNIT
+#ifndef HAVE_STRUCT_RTENTRY_RT_UNIT
 #define rt_unit rt_refcnt       /* Reuse this field for device # */
 #endif
-#ifndef STRUCT_RTENTRY_HAS_RT_DST
+#ifndef HAVE_STRUCT_RTENTRY_RT_DST
 #define rt_dst rt_nodes->rn_key
 #endif
 #else                           /* RTENTRY_4_3 */
-#ifndef STRUCT_RTENTRY_HAS_RT_DST
+#ifndef HAVE_STRUCT_RTENTRY_RT_DST
 #define rt_dst rt_nodes->rn_key
 #endif
-#ifndef STRUCT_RTENTRY_HAS_RT_HASH
+#ifndef HAVE_STRUCT_RTENTRY_RT_HASH
 #define rt_hash rt_pad1
 #endif
-#ifndef STRUCT_RTENTRY_HAS_RT_REFCNT
+#ifndef HAVE_STRUCT_RTENTRY_RT_REFCNT
 #ifndef hpux10
 #define rt_refcnt rt_pad2
 #endif
 #endif
-#ifndef STRUCT_RTENTRY_HAS_RT_USE
+#ifndef HAVE_STRUCT_RTENTRY_RT_USE
 #define rt_use rt_pad3
 #endif
-#ifndef STRUCT_RTENTRY_HAS_RT_UNIT
+#ifndef HAVE_STRUCT_RTENTRY_RT_UNIT
 #define rt_unit rt_refcnt       /* Reuse this field for device # */
 #endif
 #endif
@@ -151,16 +145,23 @@
 #endif
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #if HAVE_NLIST_H
 #include <nlist.h>
 #endif
 
 #ifdef solaris2
 #include "kernel_sunos5.h"
+/* Solaris 2.6/7 need sys/stream.h (mblk_t) to include inet/ip.h */
+#ifdef HAVE_SYS_STREAM_H
+#include <sys/stream.h>
+#endif
+/* Solaris 2.6 needs inet/common.h (u16) to include inet/ip.h */
+#ifdef HAVE_INET_COMMON_H
+#include <inet/common.h>
+#endif
+#ifdef HAVE_INET_IP_H
+#include <inet/ip.h>
+#endif /* HAVE_INET_IP_H */
 #endif
 
 #ifdef HAVE_SYS_SYSCTL_H
diff --git a/agent/mibgroup/mibII/route_write.c b/agent/mibgroup/mibII/route_write.c
index f6a4f3e..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>
 
@@ -76,10 +72,10 @@
 
 #if !defined (WIN32) && !defined (cygwin)
 
-#ifndef STRUCT_RTENTRY_HAS_RT_DST
+#ifndef HAVE_STRUCT_RTENTRY_RT_DST
 #define rt_dst rt_nodes->rn_key
 #endif
-#ifndef STRUCT_RTENTRY_HAS_RT_HASH
+#ifndef HAVE_STRUCT_RTENTRY_RT_HASH
 #define rt_hash rt_pad1
 #endif
 
@@ -269,7 +265,7 @@
 }
 
 
-#ifndef STRUCT_RTENTRY_HAS_RT_DST
+#ifndef HAVE_STRUCT_RTENTRY_RT_DST
 #undef rt_dst
 #endif
 
@@ -313,7 +309,7 @@
             return (&rtcache[i]);
         }
     }
-    return 0;
+    return NULL;
 }
 
 struct rtent   *
@@ -329,7 +325,7 @@
             return (&rtcache[i]);
         }
     }
-    return 0;
+    return NULL;
 
 }
 
@@ -351,7 +347,7 @@
 struct rtent   *
 cacheKernelRTE(u_long dst)
 {
-    return 0;                   /* for now */
+    return NULL;                /* for now */
     /*
      * ...... 
      */
@@ -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/setSerialNo.c b/agent/mibgroup/mibII/setSerialNo.c
index 90a0aba..85a4098 100644
--- a/agent/mibgroup/mibII/setSerialNo.c
+++ b/agent/mibgroup/mibII/setSerialNo.c
@@ -2,9 +2,13 @@
  *  This file implements the snmpSetSerialNo TestAndIncr counter
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
+netsnmp_feature_require(watcher_spinlock)
+
+
 #include "setSerialNo.h"
 
 /*
@@ -60,13 +64,21 @@
     /*
      * Register 'setserialno' as a watched spinlock object
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     netsnmp_register_watched_spinlock(
         netsnmp_create_handler_registration("snmpSetSerialNo", NULL,
                                    set_serial_oid,
                                    OID_LENGTH(set_serial_oid),
                                    HANDLER_CAN_RWRITE),
                                        &setserialno );
-
+#else  /* !NETSNMP_NO_WRITE_SUPPORT */
+    netsnmp_register_watched_spinlock(
+        netsnmp_create_handler_registration("snmpSetSerialNo", NULL,
+                                   set_serial_oid,
+                                   OID_LENGTH(set_serial_oid),
+                                   HANDLER_CAN_RONLY),
+                                       &setserialno );
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     DEBUGMSGTL(("scalar_int", "Done initalizing example scalar int\n"));
 }
 
diff --git a/agent/mibgroup/mibII/snmp_mib.c b/agent/mibgroup/mibII/snmp_mib.c
index b143bf7..1ebe64c 100644
--- a/agent/mibgroup/mibII/snmp_mib.c
+++ b/agent/mibgroup/mibII/snmp_mib.c
@@ -1,97 +1,20 @@
-/*
- *  SNMPv1 MIB group implementation - snmp.c
- *
- */
-
 #include <net-snmp/net-snmp-config.h>
-#include <sys/types.h>
-#if HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/sysORTable.h>
 
-#include "util_funcs.h"
 #include "snmp_mib.h"
-#include "sysORTable.h"
+#include "updates.h"
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_truthvalue)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
-        /*********************
-	 *
-	 *  Kernel & interface information,
-	 *   and internal forward declarations
-	 *
-	 *********************/
+static const oid snmp_oid[] = { 1, 3, 6, 1, 2, 1, 11 };
 
-extern long     snmp_enableauthentraps;
-extern int      snmp_enableauthentrapsset;
-int             old_snmp_enableauthentraps;
-
-/*********************
- *
- *  Initialisation & common implementation functions
- *
- *********************/
-
-/*
- * define the structure we're going to ask the agent to register our
- * information at 
- */
-struct variable1 snmp_variables[] = {
-    {SNMPINPKTS, ASN_COUNTER, RONLY, var_snmp, 1, {1}},
-    {SNMPOUTPKTS, ASN_COUNTER, RONLY, var_snmp, 1, {2}},
-    {SNMPINBADVERSIONS, ASN_COUNTER, RONLY, var_snmp, 1, {3}},
-#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
-    {SNMPINBADCOMMUNITYNAMES, ASN_COUNTER, RONLY, var_snmp, 1, {4}},
-    {SNMPINBADCOMMUNITYUSES, ASN_COUNTER, RONLY, var_snmp, 1, {5}},
-#endif /* support for community based SNMP */
-    {SNMPINASNPARSEERRORS, ASN_COUNTER, RONLY, var_snmp, 1, {6}},
-    {SNMPINTOOBIGS, ASN_COUNTER, RONLY, var_snmp, 1, {8}},
-    {SNMPINNOSUCHNAMES, ASN_COUNTER, RONLY, var_snmp, 1, {9}},
-    {SNMPINBADVALUES, ASN_COUNTER, RONLY, var_snmp, 1, {10}},
-    {SNMPINREADONLYS, ASN_COUNTER, RONLY, var_snmp, 1, {11}},
-    {SNMPINGENERRS, ASN_COUNTER, RONLY, var_snmp, 1, {12}},
-    {SNMPINTOTALREQVARS, ASN_COUNTER, RONLY, var_snmp, 1, {13}},
-    {SNMPINTOTALSETVARS, ASN_COUNTER, RONLY, var_snmp, 1, {14}},
-    {SNMPINGETREQUESTS, ASN_COUNTER, RONLY, var_snmp, 1, {15}},
-    {SNMPINGETNEXTS, ASN_COUNTER, RONLY, var_snmp, 1, {16}},
-    {SNMPINSETREQUESTS, ASN_COUNTER, RONLY, var_snmp, 1, {17}},
-    {SNMPINGETRESPONSES, ASN_COUNTER, RONLY, var_snmp, 1, {18}},
-    {SNMPINTRAPS, ASN_COUNTER, RONLY, var_snmp, 1, {19}},
-    {SNMPOUTTOOBIGS, ASN_COUNTER, RONLY, var_snmp, 1, {20}},
-    {SNMPOUTNOSUCHNAMES, ASN_COUNTER, RONLY, var_snmp, 1, {21}},
-    {SNMPOUTBADVALUES, ASN_COUNTER, RONLY, var_snmp, 1, {22}},
-    {SNMPOUTGENERRS, ASN_COUNTER, RONLY, var_snmp, 1, {24}},
-    {SNMPOUTGETREQUESTS, ASN_COUNTER, RONLY, var_snmp, 1, {25}},
-    {SNMPOUTGETNEXTS, ASN_COUNTER, RONLY, var_snmp, 1, {26}},
-    {SNMPOUTSETREQUESTS, ASN_COUNTER, RONLY, var_snmp, 1, {27}},
-    {SNMPOUTGETRESPONSES, ASN_COUNTER, RONLY, var_snmp, 1, {28}},
-    {SNMPOUTTRAPS, ASN_COUNTER, RONLY, var_snmp, 1, {29}},
-    {SNMPENABLEAUTHENTRAPS, ASN_INTEGER, RWRITE, var_snmp, 1, {30}},
-    {SNMPSILENTDROPS, ASN_COUNTER, RONLY, var_snmp, 1, {31}},
-    {SNMPPROXYDROPS, ASN_COUNTER, RONLY, var_snmp, 1, {32}}
-};
-
-/*
- * Define the OID pointer to the top of the mib tree that we're
- * registering underneath 
- */
-oid             snmp_variables_oid[] = { SNMP_OID_MIB2, 11 };
-#ifdef USING_MIBII_SYSTEM_MIB_MODULE
-extern oid      system_module_oid[];
-extern int      system_module_oid_len;
-extern int      system_module_count;
-#endif
+extern long snmp_enableauthentraps;
+extern int snmp_enableauthentrapsset;
 
 static int
 snmp_enableauthentraps_store(int a, int b, void *c, void *d)
@@ -106,14 +29,103 @@
     return 0;
 }
 
+static int
+handle_truthvalue(netsnmp_mib_handler *handler,
+                  netsnmp_handler_registration *reginfo,
+                  netsnmp_agent_request_info *reqinfo,
+                  netsnmp_request_info *requests)
+{
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+    if (reqinfo->mode == MODE_SET_RESERVE1) {
+        int res = netsnmp_check_vb_truthvalue(requests->requestvb);
+        if (res != SNMP_ERR_NOERROR)
+            netsnmp_request_set_error(requests, res);
+    }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+    return SNMP_ERR_NOERROR;
+}
+
+static netsnmp_mib_handler*
+netsnmp_get_truthvalue(void)
+{
+    netsnmp_mib_handler* hnd =
+        netsnmp_create_handler("truthvalue", handle_truthvalue);
+    if (hnd)
+        hnd->flags |= MIB_HANDLER_AUTO_NEXT;
+    return hnd;
+}
+
+static int
+handle_snmp(netsnmp_mib_handler *handler,
+	    netsnmp_handler_registration *reginfo,
+	    netsnmp_agent_request_info *reqinfo,
+	    netsnmp_request_info *requests)
+{
+    switch (reqinfo->mode) {
+    case MODE_GET:
+	{
+	    oid idx = requests->requestvb->name[OID_LENGTH(snmp_oid)];
+	    switch(idx) {
+	    case 7:
+	    case 23:
+            case 30:
+		netsnmp_set_request_error(reqinfo, requests,
+					  SNMP_NOSUCHOBJECT);
+		break;
+	    default:
+		{
+		    u_int value =
+			snmp_get_statistic(idx - 1 + STAT_SNMPINPKTS);
+		    snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER,
+					     (u_char *)&value, sizeof(value));
+		}
+		break;
+	    }
+	}
+	break;
+
+    default:
+        snmp_log(LOG_ERR,
+                 "unknown mode (%d) in handle_snmp\n", reqinfo->mode);
+        return SNMP_ERR_GENERR;
+    }
+
+    return SNMP_ERR_NOERROR;
+}
+
+#ifdef USING_MIBII_SYSTEM_MIB_MODULE
+extern oid      system_module_oid[];
+extern int      system_module_oid_len;
+extern int      system_module_count;
+#endif
+
+/** Initializes the snmp module */
 void
 init_snmp_mib(void)
 {
-    /*
-     * register ourselves with the agent to handle our mib tree 
-     */
-    REGISTER_MIB("mibII/snmp", snmp_variables, variable1,
-                 snmp_variables_oid);
+    DEBUGMSGTL(("snmp", "Initializing\n"));
+
+    netsnmp_register_scalar_group(
+      netsnmp_create_handler_registration(
+	"mibII/snmp", handle_snmp, snmp_oid, OID_LENGTH(snmp_oid),
+	HANDLER_CAN_RONLY), 1, 32);
+    {
+        const oid snmpEnableAuthenTraps_oid[] = { 1, 3, 6, 1, 2, 1, 11, 30, 0 };
+	static netsnmp_watcher_info enableauthen_info;
+        netsnmp_handler_registration *reg =
+            netsnmp_create_update_handler_registration(
+                "mibII/snmpEnableAuthenTraps",
+                snmpEnableAuthenTraps_oid,
+                OID_LENGTH(snmpEnableAuthenTraps_oid),
+                HANDLER_CAN_RWRITE, &snmp_enableauthentrapsset);
+        netsnmp_inject_handler(reg, netsnmp_get_truthvalue());
+        netsnmp_register_watched_instance(
+            reg,
+            netsnmp_init_watcher_info(
+		&enableauthen_info,
+                &snmp_enableauthentraps, sizeof(snmp_enableauthentraps),
+                ASN_INTEGER, WATCHER_FIXED_SIZE));
+    }
 
 #ifdef USING_MIBII_SYSTEM_MIB_MODULE
     if (++system_module_count == 3)
@@ -123,131 +135,3 @@
     snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA,
                            snmp_enableauthentraps_store, NULL);
 }
-
-/*
- * header_snmp(...
- * 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
- * 
- */
-
-        /*********************
-	 *
-	 *  System specific implementation functions
-	 *	(actually common!)
-	 *
-	 *********************/
-
-
-u_char         *
-var_snmp(struct variable *vp,
-         oid * name,
-         size_t * length,
-         int exact, size_t * var_len, WriteMethod ** write_method)
-{
-    static long     long_ret;
-
-    *write_method = 0;          /* assume it isnt writable for the time being */
-    *var_len = sizeof(long_ret);        /* assume an integer and change later if not */
-
-    if (header_generic(vp, name, length, exact, var_len, write_method)
-        == MATCH_FAILED)
-        return NULL;
-
-    /*
-     * this is where we do the value assignments for the mib results. 
-     */
-    if (vp->magic == SNMPENABLEAUTHENTRAPS) {
-        *write_method = write_snmp;
-        long_return = snmp_enableauthentraps;
-        return (u_char *) & long_return;
-    } else if ((vp->magic >= 1)
-               && (vp->magic <=
-                   (STAT_SNMP_STATS_END - STAT_SNMP_STATS_START + 1))) {
-        long_ret =
-            snmp_get_statistic(vp->magic + STAT_SNMP_STATS_START - 1);
-        return (unsigned char *) &long_ret;
-    }
-    return NULL;
-}
-
-/*
- * only for snmpEnableAuthenTraps:
- */
-
-int
-write_snmp(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            intval = 0;
-
-    switch (action) {
-    case RESERVE1:             /* Check values for acceptability */
-        if (var_val_type != ASN_INTEGER) {
-            DEBUGMSGTL(("mibII/snmp_mib", "%x not integer type",
-                        var_val_type));
-            return SNMP_ERR_WRONGTYPE;
-        }
-
-        intval = *((long *) var_val);
-        if (intval != 1 && intval != 2) {
-            DEBUGMSGTL(("mibII/snmp_mib", "not valid %x\n", intval));
-            return SNMP_ERR_WRONGVALUE;
-        }
-        if (snmp_enableauthentrapsset < 0) {
-            /*
-             * The object is set in a read-only configuration file.  
-             */
-            return SNMP_ERR_NOTWRITABLE;
-        }
-        break;
-
-    case RESERVE2:             /* Allocate memory and similar resources */
-
-        /*
-         * Using static variables, so nothing needs to be done 
-         */
-        break;
-
-    case ACTION:               /* Perform the SET action (if reversible) */
-
-        /*
-         * Save the old value, in case of UNDO 
-         */
-        intval = *((long *) var_val);
-        old_snmp_enableauthentraps = snmp_enableauthentraps;
-        snmp_enableauthentraps = intval;
-        break;
-
-    case UNDO:                 /* Reverse the SET action and free resources */
-
-        snmp_enableauthentraps = old_snmp_enableauthentraps;
-        break;
-
-    case COMMIT:
-        snmp_enableauthentrapsset = 1;
-        snmp_save_persistent(netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_APPTYPE));
-        (void) snmp_call_callbacks(SNMP_CALLBACK_LIBRARY,
-                                   SNMP_CALLBACK_STORE_DATA, NULL);
-        snmp_clean_persistent(netsnmp_ds_get_string
-                              (NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_APPTYPE));
-        break;
-
-    case FREE:                 /* Free any resources allocated */
-        break;
-    }
-    return SNMP_ERR_NOERROR;
-}
-
-/*********************
- *
- *  Internal implementation functions
- *
- *********************/
diff --git a/agent/mibgroup/mibII/snmp_mib.h b/agent/mibgroup/mibII/snmp_mib.h
index 641f11e..39e0a3c 100644
--- a/agent/mibgroup/mibII/snmp_mib.h
+++ b/agent/mibgroup/mibII/snmp_mib.h
@@ -1,83 +1,9 @@
-/*
- *  SNMP MIB group interface - snmp.h
- *
- */
 #ifndef _MIBGROUP_SNMP_H
 #define _MIBGROUP_SNMP_H
 
-struct variable;
-
-extern FindVarMethod var_snmp;
-extern WriteMethod write_snmp;
+config_require(mibII/updates)
+config_exclude(mibII/snmp_mib_5_5)
 
 void            init_snmp_mib(void);
 
-extern int      snmp_inpkts;    /*  1 - current */
-extern int      snmp_outpkts;   /*  2 - obsolete */
-extern int      snmp_inbadversions;     /*  3 - current */
-extern int      snmp_inbadcommunitynames;       /*  4 - current */
-extern int      snmp_inbadcommunityuses;        /*  5 - current */
-extern int      snmp_inasnparseerrors;  /*  6 - current */
-extern int      snmp_intoobigs; /*  8 - obsolete */
-extern int      snmp_innosuchnames;     /*  9 - obsolete */
-extern int      snmp_inbadvalues;       /* 10 - obsolete */
-extern int      snmp_inreadonlys;       /* 11 - obsolete */
-extern int      snmp_ingenerrs; /* 12 - obsolete */
-extern int      snmp_intotalreqvars;    /* 13 - obsolete */
-extern int      snmp_intotalsetvars;    /* 14 - obsolete */
-extern int      snmp_ingetrequests;     /* 15 - obsolete */
-extern int      snmp_ingetnexts;        /* 16 - obsolete */
-extern int      snmp_insetrequests;     /* 17 - obsolete */
-extern int      snmp_ingetresponses;    /* 18 - obsolete */
-extern int      snmp_intraps;   /* 19 - obsolete */
-extern int      snmp_outtoobigs;        /* 20 - obsolete */
-extern int      snmp_outnosuchnames;    /* 21 - obsolete */
-extern int      snmp_outbadvalues;      /* 22 - obsolete */
-extern int      snmp_outgenerrs;        /* 24 - obsolete */
-extern int      snmp_outgetrequests;    /* 25 - obsolete */
-extern int      snmp_outgetnexts;       /* 26 - obsolete */
-extern int      snmp_outsetrequests;    /* 27 - obsolete */
-extern int      snmp_outgetresponses;   /* 28 - obsolete */
-extern int      snmp_outtraps;  /* 29 - obsolete */
-extern long     snmp_enableauthentraps; /* 30 - current */
-extern int      snmp_silentdrops;       /* 31 - current */
-extern int      snmp_proxydrops;        /* 32 - current */
-
-extern char    *snmp_trapsink;
-extern char    *snmp_trapcommunity;
-
-
-#define SNMPINPKTS		1
-#define SNMPOUTPKTS		2
-#define SNMPINBADVERSIONS	3
-#define SNMPINBADCOMMUNITYNAMES	4
-#define SNMPINBADCOMMUNITYUSES	5
-#define SNMPINASNPARSEERRORS	6
-#define SNMPINBADTYPES		7
-#define SNMPINTOOBIGS		8
-#define SNMPINNOSUCHNAMES	9
-#define SNMPINBADVALUES		10
-#define SNMPINREADONLYS		11
-#define SNMPINGENERRS		12
-#define SNMPINTOTALREQVARS	13
-#define SNMPINTOTALSETVARS	14
-#define SNMPINGETREQUESTS	15
-#define SNMPINGETNEXTS		16
-#define SNMPINSETREQUESTS	17
-#define SNMPINGETRESPONSES	18
-#define SNMPINTRAPS		19
-#define SNMPOUTTOOBIGS		20
-#define SNMPOUTNOSUCHNAMES	21
-#define SNMPOUTBADVALUES	22
-#define SNMPOUTREADONLYS	23
-#define SNMPOUTGENERRS		24
-#define SNMPOUTGETREQUESTS	25
-#define SNMPOUTGETNEXTS		26
-#define SNMPOUTSETREQUESTS	27
-#define SNMPOUTGETRESPONSES	28
-#define SNMPOUTTRAPS		29
-#define SNMPENABLEAUTHENTRAPS	30
-#define SNMPSILENTDROPS		31
-#define SNMPPROXYDROPS		32
-
 #endif                          /* _MIBGROUP_SNMP_H */
diff --git a/agent/mibgroup/mibII/snmp_mib_5_5.c b/agent/mibgroup/mibII/snmp_mib_5_5.c
new file mode 100644
index 0000000..c63efb6
--- /dev/null
+++ b/agent/mibgroup/mibII/snmp_mib_5_5.c
@@ -0,0 +1,132 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/sysORTable.h>
+
+#include <net-snmp/agent/snmp_get_statistic.h>
+
+#include "snmp_mib_5_5.h"
+#include "updates.h"
+
+netsnmp_feature_require(helper_statistics)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_truthvalue)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+#define SNMP_OID 1, 3, 6, 1, 2, 1, 11
+
+static oid snmp_oid[] = { SNMP_OID };
+
+extern long snmp_enableauthentraps;
+extern int snmp_enableauthentrapsset;
+
+static int
+snmp_enableauthentraps_store(int a, int b, void *c, void *d)
+{
+    char            line[SNMP_MAXBUF_SMALL];
+
+    if (snmp_enableauthentrapsset > 0) {
+        snprintf(line, SNMP_MAXBUF_SMALL, "pauthtrapenable %ld",
+                 snmp_enableauthentraps);
+        snmpd_store_config(line);
+    }
+    return 0;
+}
+
+static int
+handle_truthvalue(netsnmp_mib_handler *handler,
+                  netsnmp_handler_registration *reginfo,
+                  netsnmp_agent_request_info *reqinfo,
+                  netsnmp_request_info *requests)
+{
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+    if (reqinfo->mode == MODE_SET_RESERVE1) {
+        int res = netsnmp_check_vb_truthvalue(requests->requestvb);
+        if (res != SNMP_ERR_NOERROR)
+            netsnmp_request_set_error(requests, res);
+    }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+    return SNMP_ERR_NOERROR;
+}
+
+static netsnmp_mib_handler*
+netsnmp_get_truthvalue(void)
+{
+    netsnmp_mib_handler* hnd =
+        netsnmp_create_handler("truthvalue", handle_truthvalue);
+    if (hnd)
+        hnd->flags |= MIB_HANDLER_AUTO_NEXT;
+    return hnd;
+}
+
+static int
+handle_snmp(netsnmp_mib_handler *handler,
+	    netsnmp_handler_registration *reginfo,
+	    netsnmp_agent_request_info *reqinfo,
+	    netsnmp_request_info *requests)
+{
+    switch(requests->requestvb->name[OID_LENGTH(snmp_oid)]) {
+    case 7:
+    case 23:
+    case 30:
+        netsnmp_set_request_error(reqinfo, requests, SNMP_NOSUCHOBJECT);
+        break;
+    default:
+	break;
+    }
+    return SNMP_ERR_NOERROR;
+}
+
+#ifdef USING_MIBII_SYSTEM_MIB_MODULE
+extern oid      system_module_oid[];
+extern int      system_module_oid_len;
+extern int      system_module_count;
+#endif
+
+/** Initializes the snmp module */
+void
+init_snmp_mib_5_5(void)
+{
+    DEBUGMSGTL(("snmp", "Initializing\n"));
+
+    NETSNMP_REGISTER_STATISTIC_HANDLER(
+        netsnmp_create_handler_registration(
+            "mibII/snmp", handle_snmp, snmp_oid, OID_LENGTH(snmp_oid),
+            HANDLER_CAN_RONLY),
+        1, SNMP);
+    {
+        oid snmpEnableAuthenTraps_oid[] = { SNMP_OID, 30, 0 };
+	static netsnmp_watcher_info enableauthen_info;
+        netsnmp_handler_registration *reg =
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+            netsnmp_create_update_handler_registration(
+                "mibII/snmpEnableAuthenTraps",
+                snmpEnableAuthenTraps_oid,
+                OID_LENGTH(snmpEnableAuthenTraps_oid),
+                HANDLER_CAN_RWRITE, &snmp_enableauthentrapsset);
+#else  /* !NETSNMP_NO_WRITE_SUPPORT */
+            netsnmp_create_update_handler_registration(
+                "mibII/snmpEnableAuthenTraps",
+                snmpEnableAuthenTraps_oid,
+                OID_LENGTH(snmpEnableAuthenTraps_oid),
+                HANDLER_CAN_RONLY, &snmp_enableauthentrapsset);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+        netsnmp_inject_handler(reg, netsnmp_get_truthvalue());
+        netsnmp_register_watched_instance(
+            reg,
+            netsnmp_init_watcher_info(
+		&enableauthen_info,
+                &snmp_enableauthentraps, sizeof(snmp_enableauthentraps),
+                ASN_INTEGER, WATCHER_FIXED_SIZE));
+    }
+
+#ifdef USING_MIBII_SYSTEM_MIB_MODULE
+    if (++system_module_count == 3)
+        REGISTER_SYSOR_TABLE(system_module_oid, system_module_oid_len,
+                             "The MIB module for SNMPv2 entities");
+#endif
+    snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA,
+                           snmp_enableauthentraps_store, NULL);
+}
diff --git a/agent/mibgroup/mibII/snmp_mib_5_5.h b/agent/mibgroup/mibII/snmp_mib_5_5.h
new file mode 100644
index 0000000..2e56103
--- /dev/null
+++ b/agent/mibgroup/mibII/snmp_mib_5_5.h
@@ -0,0 +1,4 @@
+config_require(mibII/updates)
+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 f8ffa50..ed26919 100644
--- a/agent/mibgroup/mibII/sysORTable.c
+++ b/agent/mibgroup/mibII/sysORTable.c
@@ -1,344 +1,295 @@
-/*
- *  Template MIB group implementation - sysORTable.c
- *
- */
 #include <net-snmp/net-snmp-config.h>
-#if HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#include <sys/types.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_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
-#include <net-snmp/agent/agent_callbacks.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/table_container.h>
+#include <net-snmp/agent/agent_sysORTable.h>
+#include <net-snmp/agent/sysORTable.h>
 
-#include "struct.h"
-#include "util_funcs.h"
 #include "sysORTable.h"
-#include "snmpd.h"
 
-#ifdef USING_AGENTX_SUBAGENT_MODULE
-#include "agentx/subagent.h"
-#include "agentx/client.h"
-#endif
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_require(table_container)
 
 
-static int
-_register_sysOR_callback(int majorID, int minorID,
-                         void *serverarg, void *clientarg);
-static int
-_unregister_sysOR_callback(int majorID, int minorID,
-                            void *serverarg, void *clientarg);
-static int
-_unregister_sysOR_by_session_callback(int majorID, int minorID,
-                                      void *serverarg, void *clientarg);
-
-struct timeval  sysOR_lastchange;
-static struct sysORTable *table = NULL;
-static int      numEntries = 0;
+/** Typical data structure for a row entry */
+typedef struct sysORTable_entry_s {
+    netsnmp_index            oid_index;
+    oid                      sysORIndex;
+    const struct sysORTable* data;
+} sysORTable_entry;
 
 /*
- * define the structure we're going to ask the agent to register our
- * information at 
+ * column number definitions for table sysORTable
  */
-struct variable1 sysORTable_variables[] = {
-    {SYSORTABLEID, ASN_OBJECT_ID, RONLY, var_sysORTable, 1, {2}},
-    {SYSORTABLEDESCR, ASN_OCTET_STR, RONLY, var_sysORTable, 1, {3}},
-    {SYSORTABLEUPTIME, ASN_TIMETICKS, RONLY, var_sysORTable, 1, {4}}
-};
+#define COLUMN_SYSORINDEX	1
+#define COLUMN_SYSORID		2
+#define COLUMN_SYSORDESCR	3
+#define COLUMN_SYSORUPTIME	4
 
-/*
- * Define the OID pointer to the top of the mib tree that we're
- * registering underneath 
- */
-oid             sysORTable_variables_oid[] = { SNMP_OID_MIB2, 1, 9, 1 };
+static netsnmp_container *table = NULL;
+static u_long             sysORLastChange;
+static oid                sysORNextIndex = 1;
+
+/** create a new row in the table */
+static void
+register_foreach(const struct sysORTable* data, void* dummy)
+{
+    sysORTable_entry *entry;
+
+    sysORLastChange = data->OR_uptime;
+
+    entry = SNMP_MALLOC_TYPEDEF(sysORTable_entry);
+    if (!entry) {
+	snmp_log(LOG_ERR,
+		 "could not allocate storage, sysORTable is inconsistent\n");
+    } else {
+	const oid firstNext = sysORNextIndex;
+	netsnmp_iterator* it = CONTAINER_ITERATOR(table);
+
+	do {
+	    const sysORTable_entry* value;
+	    const oid cur = sysORNextIndex;
+
+	    if (sysORNextIndex == SNMP_MIN(MAX_SUBID, 2147483647UL))
+		sysORNextIndex = 1;
+	    else
+		++sysORNextIndex;
+
+	    for (value = (sysORTable_entry*)it->curr(it);
+		 value && value->sysORIndex < cur;
+		 value = (sysORTable_entry*)ITERATOR_NEXT(it)) {
+	    }
+
+	    if (value && value->sysORIndex == cur) {
+		if (sysORNextIndex < cur)
+		    it->reset(it);
+	    } else {
+		entry->sysORIndex = cur;
+		break;
+	    }
+	} while (firstNext != sysORNextIndex);
+
+	ITERATOR_RELEASE(it);
+
+	if(firstNext == sysORNextIndex) {
+            snmp_log(LOG_ERR, "Failed to locate a free index in sysORTable\n");
+            free(entry);
+	} else {
+	    entry->data = data;
+	    entry->oid_index.len = 1;
+	    entry->oid_index.oids = &entry->sysORIndex;
+
+	    CONTAINER_INSERT(table, entry);
+	}
+    }
+}
+
+static int
+register_cb(int major, int minor, void* serv, void* client)
+{
+    DEBUGMSGTL(("mibII/sysORTable/register_cb",
+                "register_cb(%d, %d, %p, %p)\n", major, minor, serv, client));
+    register_foreach((struct sysORTable*)serv, NULL);
+    return SNMP_ERR_NOERROR;
+}
+
+/** remove a row from the table */
+static int
+unregister_cb(int major, int minor, void* serv, void* client)
+{
+    sysORTable_entry *value;
+    netsnmp_iterator* it = CONTAINER_ITERATOR(table);
+
+    DEBUGMSGTL(("mibII/sysORTable/unregister_cb",
+                "unregister_cb(%d, %d, %p, %p)\n", major, minor, serv, client));
+    sysORLastChange = ((struct sysORTable*)(serv))->OR_uptime;
+
+    while ((value = (sysORTable_entry*)ITERATOR_NEXT(it)) && value->data != serv);
+    ITERATOR_RELEASE(it);
+    if(value) {
+	CONTAINER_REMOVE(table, value);
+	free(value);
+    }
+    return SNMP_ERR_NOERROR;
+}
+
+/** handles requests for the sysORTable table */
+static int
+sysORTable_handler(netsnmp_mib_handler *handler,
+                   netsnmp_handler_registration *reginfo,
+                   netsnmp_agent_request_info *reqinfo,
+                   netsnmp_request_info *requests)
+{
+    netsnmp_request_info *request;
+
+    DEBUGMSGTL(("mibII/sysORTable/sysORTable_handler",
+                "sysORTable_handler called\n"));
+
+    if (reqinfo->mode != MODE_GET) {
+	snmp_log(LOG_ERR,
+		 "Got unexpected operation for sysORTable\n");
+	return SNMP_ERR_GENERR;
+    }
+
+    /*
+     * Read-support (also covers GetNext requests)
+     */
+    request = requests;
+    while(request && request->processed)
+	request = request->next;
+    while(request) {
+	sysORTable_entry *table_entry;
+	netsnmp_table_request_info *table_info;
+
+	if (NULL == (table_info = netsnmp_extract_table_info(request))) {
+	    snmp_log(LOG_ERR,
+		     "could not extract table info for sysORTable\n");
+	    snmp_set_var_typed_value(
+		    request->requestvb, SNMP_ERR_GENERR, NULL, 0);
+	} else if(NULL == (table_entry = (sysORTable_entry *)
+			   netsnmp_container_table_extract_context(request))) {
+	    switch (table_info->colnum) {
+	    case COLUMN_SYSORID:
+	    case COLUMN_SYSORDESCR:
+	    case COLUMN_SYSORUPTIME:
+		netsnmp_set_request_error(reqinfo, request,
+					  SNMP_NOSUCHINSTANCE);
+		break;
+	    default:
+		netsnmp_set_request_error(reqinfo, request, SNMP_NOSUCHOBJECT);
+		break;
+	    }
+	} else {
+	    switch (table_info->colnum) {
+	    case COLUMN_SYSORID:
+		snmp_set_var_typed_value(
+			request->requestvb, ASN_OBJECT_ID,
+			(const u_char*)table_entry->data->OR_oid,
+                        table_entry->data->OR_oidlen * sizeof(oid));
+		break;
+	    case COLUMN_SYSORDESCR:
+		snmp_set_var_typed_value(
+			request->requestvb, ASN_OCTET_STR,
+			(const u_char*)table_entry->data->OR_descr,
+			strlen(table_entry->data->OR_descr));
+		break;
+	    case COLUMN_SYSORUPTIME:
+		snmp_set_var_typed_integer(
+			request->requestvb, ASN_TIMETICKS,
+                        table_entry->data->OR_uptime);
+		break;
+	    default:
+		netsnmp_set_request_error(reqinfo, request, SNMP_NOSUCHOBJECT);
+		break;
+	    }
+	}
+	do {
+	    request = request->next;
+	} while(request && request->processed);
+    }
+    return SNMP_ERR_NOERROR;
+}
+
 #ifdef USING_MIBII_SYSTEM_MIB_MODULE
 extern oid      system_module_oid[];
 extern int      system_module_oid_len;
 extern int      system_module_count;
 #endif
 
+static netsnmp_handler_registration *sysORLastChange_reg;
+static netsnmp_watcher_info sysORLastChange_winfo;
+static netsnmp_handler_registration *sysORTable_reg;
+static netsnmp_table_registration_info *sysORTable_table_info;
+
+/** Initializes the sysORTable module */
 void
 init_sysORTable(void)
 {
+    const oid sysORLastChange_oid[] = { 1, 3, 6, 1, 2, 1, 1, 8 };
+    const oid sysORTable_oid[] = { 1, 3, 6, 1, 2, 1, 1, 9 };
+
+    sysORTable_table_info =
+        SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
+
+    table = netsnmp_container_find("sysORTable:table_container");
+
+    if (sysORTable_table_info == NULL || table == NULL) {
+        SNMP_FREE(sysORTable_table_info);
+        CONTAINER_FREE(table);
+        return;
+    }
+    table->container_name = strdup("sysORTable");
+
+    netsnmp_table_helper_add_indexes(sysORTable_table_info,
+                                     ASN_INTEGER, /** index: sysORIndex */
+                                     0);
+    sysORTable_table_info->min_column = COLUMN_SYSORID;
+    sysORTable_table_info->max_column = COLUMN_SYSORUPTIME;
+
+    sysORLastChange_reg =
+        netsnmp_create_handler_registration(
+            "mibII/sysORLastChange", NULL,
+            sysORLastChange_oid, OID_LENGTH(sysORLastChange_oid),
+            HANDLER_CAN_RONLY);
+    netsnmp_init_watcher_info(
+	    &sysORLastChange_winfo,
+            &sysORLastChange, sizeof(u_long),
+            ASN_TIMETICKS, WATCHER_FIXED_SIZE);
+    netsnmp_register_watched_scalar(sysORLastChange_reg,
+				    &sysORLastChange_winfo);
+
+    sysORTable_reg =
+        netsnmp_create_handler_registration(
+            "mibII/sysORTable", sysORTable_handler,
+            sysORTable_oid, OID_LENGTH(sysORTable_oid), HANDLER_CAN_RONLY);
+    netsnmp_container_table_register(sysORTable_reg, sysORTable_table_info,
+                                     table, TABLE_CONTAINER_KEY_NETSNMP_INDEX);
+
+    sysORLastChange = netsnmp_get_agent_uptime();
+
     /*
-     * register ourselves with the agent to handle our mib tree 
+     * Initialise the contents of the table here
      */
+    netsnmp_sysORTable_foreach(&register_foreach, NULL);
 
-#ifdef USING_AGENTX_SUBAGENT_MODULE
-    if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE) == MASTER_AGENT)
-        (void) register_mib_priority("mibII/sysORTable",
-                                     (struct variable *)
-                                     sysORTable_variables,
-                                     sizeof(struct variable1),
-                                     sizeof(sysORTable_variables) /
-                                     sizeof(struct variable1),
-                                     sysORTable_variables_oid,
-                                     sizeof(sysORTable_variables_oid) /
-                                     sizeof(oid), 1);
-    else
-#endif
-        REGISTER_MIB("mibII/sysORTable", sysORTable_variables, variable1,
-                     sysORTable_variables_oid);
-
+    /*
+     * Register callbacks
+     */
     snmp_register_callback(SNMP_CALLBACK_APPLICATION,
-                           SNMPD_CALLBACK_REQ_REG_SYSOR,
-                           _register_sysOR_callback, NULL);
+                           SNMPD_CALLBACK_REG_SYSOR, register_cb, NULL);
     snmp_register_callback(SNMP_CALLBACK_APPLICATION,
-                           SNMPD_CALLBACK_REQ_UNREG_SYSOR,
-                           _unregister_sysOR_callback, NULL);
-    snmp_register_callback(SNMP_CALLBACK_APPLICATION,
-                           SNMPD_CALLBACK_REQ_UNREG_SYSOR_SESS,
-                           _unregister_sysOR_by_session_callback, NULL);
+                           SNMPD_CALLBACK_UNREG_SYSOR, unregister_cb, NULL);
 
 #ifdef USING_MIBII_SYSTEM_MIB_MODULE
     if (++system_module_count == 3)
         REGISTER_SYSOR_TABLE(system_module_oid, system_module_oid_len,
                              "The MIB module for SNMPv2 entities");
 #endif
-
-    gettimeofday(&sysOR_lastchange, NULL);
-}
-
-        /*********************
-	 *
-	 *  System specific implementation functions
-	 *
-	 *********************/
-
-u_char         *
-var_sysORTable(struct variable *vp,
-               oid * name,
-               size_t * length,
-               int exact, size_t * var_len, WriteMethod ** write_method)
-{
-    unsigned long   i = 0;
-    static unsigned long ret;
-    struct sysORTable *ptr = table;
-
-    if (header_simple_table
-        (vp, name, length, exact, var_len, write_method, numEntries))
-        return NULL;
-
-    for (i = 1; ptr != NULL && i < name[*length - 1]; ptr = ptr->next, i++) {
-        DEBUGMSGTL(("mibII/sysORTable", "sysORTable -- %lu != %lu\n",
-                    i, name[*length - 1]));
-    }
-    if (ptr == NULL) {
-        DEBUGMSGTL(("mibII/sysORTable", "sysORTable -- no match: %lu\n",
-                    i));
-        return NULL;
-    }
-    DEBUGMSGTL(("mibII/sysORTable", "sysORTable -- match: %lu\n", i));
-
-    switch (vp->magic) {
-    case SYSORTABLEID:
-        *var_len = ptr->OR_oidlen * sizeof(ptr->OR_oid[0]);
-        return (u_char *) ptr->OR_oid;
-
-    case SYSORTABLEDESCR:
-        *var_len = strlen(ptr->OR_descr);
-        return (u_char *) ptr->OR_descr;
-
-    case SYSORTABLEUPTIME:
-        ret = netsnmp_timeval_uptime(&ptr->OR_uptime);
-        return (u_char *) & ret;
-
-    default:
-        DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_sysORTable\n",
-                    vp->magic));
-    }
-    return NULL;
-}
-
-
-int
-register_sysORTable_sess(oid * oidin,
-                         size_t oidlen,
-                         const char *descr, netsnmp_session * ss)
-{
-    struct sysORTable *ptr, **nptr;
-    struct register_sysOR_parameters reg_sysOR_parms;
-
-    DEBUGMSGTL(("mibII/sysORTable", "sysORTable registering: "));
-    DEBUGMSGOID(("mibII/sysORTable", oidin, oidlen));
-    DEBUGMSG(("mibII/sysORTable", "\n"));
-
-    ptr = (struct sysORTable *) malloc(sizeof(struct sysORTable));
-    if (ptr == NULL) {
-        return SYS_ORTABLE_REGISTRATION_FAILED;
-    }
-    ptr->OR_descr = (char *) strdup(descr);
-    if (ptr->OR_descr == NULL) {
-        free(ptr);
-        return SYS_ORTABLE_REGISTRATION_FAILED;
-    }
-    ptr->OR_oidlen = oidlen;
-    ptr->OR_oid = (oid *) malloc(sizeof(oid) * oidlen);
-    if (ptr->OR_oid == NULL) {
-        free(ptr->OR_descr);
-        free(ptr);
-        return SYS_ORTABLE_REGISTRATION_FAILED;
-    }
-    memcpy(ptr->OR_oid, oidin, sizeof(oid) * oidlen);
-    gettimeofday(&(ptr->OR_uptime), NULL);
-    gettimeofday(&(sysOR_lastchange), NULL);
-    ptr->OR_sess = ss;
-    ptr->next = NULL;
-    numEntries++;
-
-    /* add this entry to the end of the chained list */
-    nptr = &table;
-    while (*nptr != NULL)
-        nptr = &((*nptr)->next);
-    *nptr = ptr;
-
-    reg_sysOR_parms.name = oidin;
-    reg_sysOR_parms.namelen = oidlen;
-    reg_sysOR_parms.descr = descr;
-    snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,
-                        SNMPD_CALLBACK_REG_SYSOR, &reg_sysOR_parms);
-
-    return SYS_ORTABLE_REGISTERED_OK;
-}
-
-int
-register_sysORTable(oid * oidin, size_t oidlen, const char *descr)
-{
-    return register_sysORTable_sess(oidin, oidlen, descr, NULL);
-}
-
-
-
-int
-unregister_sysORTable_sess(oid * oidin,
-                           size_t oidlen, netsnmp_session * ss)
-{
-    struct sysORTable *ptr, *prev = NULL, *next;
-    int             found = SYS_ORTABLE_NO_SUCH_REGISTRATION;
-    struct register_sysOR_parameters reg_sysOR_parms;
-
-    DEBUGMSGTL(("mibII/sysORTable", "sysORTable unregistering: "));
-    DEBUGMSGOID(("mibII/sysORTable", oidin, oidlen));
-    DEBUGMSG(("mibII/sysORTable", "\n"));
-
-    for (ptr = table; ptr; ptr = next)
-    {
-        next = ptr->next;
-        if (ptr->OR_sess == ss &&
-          (snmp_oid_compare(oidin, oidlen, ptr->OR_oid, ptr->OR_oidlen) == 0))
-        {
-            if (prev == NULL)
-                table = ptr->next;
-            else
-                prev->next = ptr->next;
-
-            free(ptr->OR_oid);
-            free(ptr->OR_descr);
-            free(ptr);
-            numEntries--;
-            gettimeofday(&(sysOR_lastchange), NULL);
-            found = SYS_ORTABLE_UNREGISTERED_OK;
-            break;
-        } else
-            prev = ptr;
-    }
-
-    reg_sysOR_parms.name = oidin;
-    reg_sysOR_parms.namelen = oidlen;
-    snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,
-                        SNMPD_CALLBACK_UNREG_SYSOR, &reg_sysOR_parms);
-
-    return found;
-}
-
-
-int
-unregister_sysORTable(oid * oidin, size_t oidlen)
-{
-    return unregister_sysORTable_sess(oidin, oidlen, NULL);
 }
 
 void
-unregister_sysORTable_by_session(netsnmp_session * ss)
+shutdown_sysORTable(void)
 {
-    struct sysORTable *ptr, *prev = NULL, *next;
+#ifdef USING_MIBII_SYSTEM_MIB_MODULE
+    if (system_module_count-- == 3)
+        UNREGISTER_SYSOR_TABLE(system_module_oid, system_module_oid_len);
+#endif
 
-    for (ptr = table; ptr; ptr = next)
-    {
-        next = ptr->next;
-        if (((ss->flags & SNMP_FLAGS_SUBSESSION) && ptr->OR_sess == ss) ||
-            (!(ss->flags & SNMP_FLAGS_SUBSESSION) && ptr->OR_sess &&
-             ptr->OR_sess->subsession == ss)) {
-            if (prev == NULL)
-                table = next;
-            else
-                prev->next = next;
-            free(ptr->OR_oid);
-            free(ptr->OR_descr);
-            free(ptr);
-            numEntries--;
-            gettimeofday(&(sysOR_lastchange), NULL);
-        } else
-            prev = ptr;
-    }
+    snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
+                             SNMPD_CALLBACK_UNREG_SYSOR, unregister_cb, NULL,
+                             1);
+    snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
+                             SNMPD_CALLBACK_REG_SYSOR, register_cb, NULL, 1);
+
+    if (table)
+        CONTAINER_CLEAR(table, netsnmp_container_simple_free, NULL);
+    netsnmp_container_table_unregister(sysORTable_reg);
+    sysORTable_reg = NULL;
+    table = NULL;
+    netsnmp_table_registration_info_free(sysORTable_table_info);
+    sysORTable_table_info = NULL;
+    netsnmp_unregister_handler(sysORLastChange_reg);
+    sysORLastChange_reg = NULL;
 }
-
-static int
-_register_sysOR_callback(int majorID, int minorID, void *serverarg,
-                         void *clientarg)
-{
-    struct sysORTable *parms = (struct sysORTable *) serverarg;
-
-    return register_sysORTable_sess(parms->OR_oid, parms->OR_oidlen,
-                                    parms->OR_descr, parms->OR_sess);
-}
-
-static int
-_unregister_sysOR_by_session_callback(int majorID, int minorID,
-                                      void *serverarg, void *clientarg)
-{
-    netsnmp_session *session = (netsnmp_session *) serverarg;
-
-    unregister_sysORTable_by_session(session);
-
-    return 0;
-}
-
-static int
-_unregister_sysOR_callback(int majorID, int minorID, void *serverarg,
-                       void *clientarg)
-{
-    struct sysORTable *parms = (struct sysORTable *) serverarg;
-
-    return unregister_sysORTable_sess(parms->OR_oid,
-                                      parms->OR_oidlen,
-                                      parms->OR_sess);
-}
-
diff --git a/agent/mibgroup/mibII/sysORTable.h b/agent/mibgroup/mibII/sysORTable.h
index 59fb7e0..e988fda 100644
--- a/agent/mibgroup/mibII/sysORTable.h
+++ b/agent/mibgroup/mibII/sysORTable.h
@@ -1,57 +1,15 @@
-/*
- *  Template MIB group interface - sysORTable.h
- *
- */
-#ifndef _MIBGROUP_SYSORTABLE_H
-#define _MIBGROUP_SYSORTABLE_H
+#ifndef MIBGROUP_SYSORTABLE_H
+#define MIBGROUP_SYSORTABLE_H
 
-config_require(util_funcs)
-config_require(mibII/system_mib)
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-     struct sysORTable {
-         char           *OR_descr;
-         oid            *OR_oid;
-         size_t          OR_oidlen;
-         struct timeval  OR_uptime;
-         netsnmp_session *OR_sess;
-         struct sysORTable *next;
-     };
+extern void     init_sysORTable(void);
+extern void     shutdown_sysORTable(void);
 
-     struct register_sysOR_parameters {
-         oid            *name;
-         int             namelen;
-         const char     *descr;
-     };
+#ifdef __cplusplus
+}
+#endif
 
-     extern void     init_sysORTable(void);
-     extern FindVarMethod var_sysORTable;
-     extern FindVarMethod var_sysORLastChange;
-     extern int      register_sysORTable(oid *, size_t, const char *);
-     extern int      unregister_sysORTable(oid *, size_t);
-     extern int      register_sysORTable_sess(oid *, size_t, const char *,
-                                              netsnmp_session *);
-     extern int      unregister_sysORTable_sess(oid *, size_t,
-                                                netsnmp_session *);
-     extern void     unregister_sysORTable_by_session(netsnmp_session *);
-
-#define	SYSORTABLEINDEX		        1
-#define	SYSORTABLEID		        2
-#define	SYSORTABLEDESCR		        3
-#define	SYSORTABLEUPTIME	        4
-
-#define SYS_ORTABLE_REGISTERED_OK              0
-#define SYS_ORTABLE_REGISTRATION_FAILED       -1
-#define SYS_ORTABLE_UNREGISTERED_OK            0
-#define SYS_ORTABLE_NO_SUCH_REGISTRATION      -1
-
-#ifdef  USING_MIBII_SYSORTABLE_MODULE
-#define REGISTER_SYSOR_ENTRY(theoid, descr)                      \
-  (void)register_sysORTable(theoid, sizeof(theoid)/sizeof(oid), descr);
-#define REGISTER_SYSOR_TABLE(theoid, len, descr)                      \
-  (void)register_sysORTable(theoid, len, descr);
-
-#else
-#define REGISTER_SYSOR_ENTRY(x,y)
-#define REGISTER_SYSOR_TABLE(x,y,z)
-#endif                          /* USING_MIBII_SYSORTABLE_MODULE */
-#endif                          /* _MIBGROUP_SYSORTABLE_H */
+#endif /* MIBGROUP_SYSORTABLE_H */
diff --git a/agent/mibgroup/mibII/system_mib.c b/agent/mibgroup/mibII/system_mib.c
index ed97af3..65b0b7c 100644
--- a/agent/mibgroup/mibII/system_mib.c
+++ b/agent/mibgroup/mibII/system_mib.c
@@ -14,6 +14,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_STDLIB_H
 #include <stdlib.h>
@@ -27,15 +28,7 @@
 #include <strings.h>
 #endif
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
-#if !defined(mingw32) && defined(HAVE_SYS_TIME_H)
-#include <sys/time.h>
-#endif
-
-#include <ctype.h>
 #if HAVE_UTSNAME_H
 #include <utsname.h>
 #else
@@ -43,18 +36,16 @@
 #include <sys/utsname.h>
 #endif
 #endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/sysORTable.h>
 
 #include "util_funcs.h"
 #include "system_mib.h"
-#include "struct.h"
-#include "sysORTable.h"
+#include "updates.h"
 
+netsnmp_feature_require(watcher_read_only_int_scalar)
 
         /*********************
 	 *
@@ -64,33 +55,24 @@
 	 *********************/
 
 #define SYS_STRING_LEN	256
-char            version_descr[SYS_STRING_LEN] = NETSNMP_VERS_DESC;
-char            sysContact[SYS_STRING_LEN] = NETSNMP_SYS_CONTACT;
-char            sysName[SYS_STRING_LEN] = NETSNMP_SYS_NAME;
-char            sysLocation[SYS_STRING_LEN] = NETSNMP_SYS_LOC;
-oid             sysObjectID[MAX_OID_LEN];
-size_t          sysObjectIDLength;
+static char     version_descr[SYS_STRING_LEN] = NETSNMP_VERS_DESC;
+static char     sysContact[SYS_STRING_LEN] = NETSNMP_SYS_CONTACT;
+static char     sysName[SYS_STRING_LEN] = NETSNMP_SYS_NAME;
+static char     sysLocation[SYS_STRING_LEN] = NETSNMP_SYS_LOC;
+static oid      sysObjectID[MAX_OID_LEN];
+static size_t sysObjectIDByteLength;
 
 extern oid      version_sysoid[];
 extern int      version_sysoid_len;
 
-char            oldversion_descr[SYS_STRING_LEN];
-char            oldsysContact[SYS_STRING_LEN];
-char            oldsysName[SYS_STRING_LEN];
-char            oldsysLocation[SYS_STRING_LEN];
-
-int             sysServices = 72;
-int             sysServicesConfiged = 0;
+static int      sysServices = 72;
+static int      sysServicesConfiged = 0;
 
 extern oid      version_id[];
 extern int      version_id_len;
 
 static int      sysContactSet = 0, sysLocationSet = 0, sysNameSet = 0;
 
-WriteMethod     writeSystem;
-int             header_system(struct variable *, oid *, size_t *, int,
-                              size_t *, WriteMethod **);
-
 #if (defined (WIN32) && defined (HAVE_WIN32_PLATFORM_SDK)) || defined (mingw32)
 static void     windowsOSVersionString(char [], size_t);
 #endif
@@ -101,187 +83,100 @@
 	 *
 	 *********************/
 
-void
+static void
+system_parse_config_string2(const char *token, char *cptr,
+                            char* value, size_t size)
+{
+    if (strlen(cptr) < size) {
+        strcpy(value, cptr);
+    } else {
+        netsnmp_config_error("%s token too long (must be < %lu):\n\t%s",
+                             token, (unsigned long)size, cptr);
+    }
+}
+
+static void
+system_parse_config_string(const char *token, char *cptr,
+                           const char *name, char* value, size_t size,
+                           int* guard)
+{
+    if (*token == 'p') {
+        if (*guard < 0) {
+            /*
+             * This is bogus (and shouldn't happen anyway) -- the value is
+             * already configured read-only.
+             */
+            snmp_log(LOG_WARNING,
+                     "ignoring attempted override of read-only %s.0\n", name);
+            return;
+        } else {
+            *guard = 1;
+        }
+    } else {
+        if (*guard > 0) {
+            /*
+             * This is bogus (and shouldn't happen anyway) -- we already read a
+             * persistent value which we should ignore in favour of this one.
+             */
+            snmp_log(LOG_WARNING,
+                     "ignoring attempted override of read-only %s.0\n", name);
+            /*
+             * Fall through and copy in this value.
+             */
+        }
+        *guard = -1;
+    }
+
+    system_parse_config_string2(token, cptr, value, size);
+}
+
+static void
 system_parse_config_sysdescr(const char *token, char *cptr)
 {
-    char            tmpbuf[1024];
-
-    if (strlen(cptr) >= sizeof(version_descr)) {
-        snprintf(tmpbuf,
-                 sizeof(tmpbuf),
-                 "sysdescr token too long (must be < %lu):\n\t%s",
-                 (unsigned long)sizeof(version_descr),
-                 cptr);
-        config_perror(tmpbuf);
-    } else if (strcmp(cptr, "\"\"") == 0) {
-        version_descr[0] = '\0';
-    } else {
-        strcpy(version_descr, cptr);
-    }
+    system_parse_config_string2(token, cptr, version_descr,
+                                sizeof(version_descr));
 }
 
-void
+static void
 system_parse_config_sysloc(const char *token, char *cptr)
 {
-    char            tmpbuf[1024];
-
-    if (strlen(cptr) >= sizeof(sysLocation)) {
-        snprintf(tmpbuf, 1024,
-                 "syslocation token too long (must be < %lu):\n\t%s",
-                 (unsigned long)sizeof(sysLocation), cptr);
-        config_perror(tmpbuf);
-    }
-
-    if (strcmp(token, "psyslocation") == 0) {
-        if (sysLocationSet < 0) {
-            /*
-             * This is bogus (and shouldn't happen anyway) -- the sysLocation
-             * is already configured read-only.  
-             */
-            snmp_log(LOG_WARNING,
-                     "ignoring attempted override of read-only sysLocation.0\n");
-            return;
-        } else {
-            sysLocationSet++;
-        }
-    } else {
-        if (sysLocationSet > 0) {
-            /*
-             * This is bogus (and shouldn't happen anyway) -- we already read a
-             * persistent value of sysLocation, which we should ignore in
-             * favour of this one.  
-             */
-            snmp_log(LOG_WARNING,
-                     "ignoring attempted override of read-only sysLocation.0\n");
-            /*
-             * Fall through and copy in this value.  
-             */
-        }
-        sysLocationSet = -1;
-    }
-
-    if (strcmp(cptr, "\"\"") == 0) {
-        sysLocation[0] = '\0';
-    } else if (strlen(cptr) < sizeof(sysLocation)) {
-        strcpy(sysLocation, cptr);
-    }
+    system_parse_config_string(token, cptr, "sysLocation", sysLocation,
+                               sizeof(sysLocation), &sysLocationSet);
 }
 
-void
+static void
 system_parse_config_syscon(const char *token, char *cptr)
 {
-    char            tmpbuf[1024];
-
-    if (strlen(cptr) >= sizeof(sysContact)) {
-        snprintf(tmpbuf, 1024,
-                 "syscontact token too long (must be < %lu):\n\t%s",
-                 (unsigned long)sizeof(sysContact), cptr);
-        config_perror(tmpbuf);
-    }
-
-    if (strcmp(token, "psyscontact") == 0) {
-        if (sysContactSet < 0) {
-            /*
-             * This is bogus (and shouldn't happen anyway) -- the sysContact
-             * is already configured read-only.  
-             */
-            snmp_log(LOG_WARNING,
-                     "ignoring attempted override of read-only sysContact.0\n");
-            return;
-        } else {
-            sysContactSet++;
-        }
-    } else {
-        if (sysContactSet > 0) {
-            /*
-             * This is bogus (and shouldn't happen anyway) -- we already read a
-             * persistent value of sysContact, which we should ignore in favour
-             * of this one.  
-             */
-            snmp_log(LOG_WARNING,
-                     "ignoring attempted override of read-only sysContact.0\n");
-            /*
-             * Fall through and copy in this value.  
-             */
-        }
-        sysContactSet = -1;
-    }
-
-    if (strcmp(cptr, "\"\"") == 0) {
-        sysContact[0] = '\0';
-    } else if (strlen(cptr) < sizeof(sysContact)) {
-        strcpy(sysContact, cptr);
-    }
+    system_parse_config_string(token, cptr, "sysContact", sysContact,
+                               sizeof(sysContact), &sysContactSet);
 }
 
-void
+static void
 system_parse_config_sysname(const char *token, char *cptr)
 {
-    char            tmpbuf[1024];
-
-    if (strlen(cptr) >= sizeof(sysName)) {
-        snprintf(tmpbuf, 1024,
-                 "sysname token too long (must be < %lu):\n\t%s",
-                 (unsigned long)sizeof(sysName), cptr);
-        config_perror(tmpbuf);
-    }
-
-    if (strcmp(token, "psysname") == 0) {
-        if (sysNameSet < 0) {
-            /*
-             * This is bogus (and shouldn't happen anyway) -- the sysName
-             * is already configured read-only.  
-             */
-            snmp_log(LOG_WARNING,
-                     "ignoring attempted override of read-only sysName.0\n");
-            return;
-        } else {
-            sysNameSet++;
-        }
-    } else {
-        if (sysNameSet > 0) {
-            /*
-             * This is bogus (and shouldn't happen anyway) -- we already read a
-             * persistent value of sysName, which we should ignore in favour
-             * of this one.  
-             */
-            snmp_log(LOG_WARNING,
-                     "ignoring attempted override of read-only sysName.0\n");
-            /*
-             * Fall through and copy in this value.  
-             */
-        }
-        sysNameSet = -1;
-    }
-
-    if (strcmp(cptr, "\"\"") == 0) {
-        sysName[0] = '\0';
-    } else if (strlen(cptr) < sizeof(sysName)) {
-        strcpy(sysName, cptr);
-    }
+    system_parse_config_string(token, cptr, "sysName", sysName,
+                               sizeof(sysName), &sysNameSet);
 }
 
-void
+static void
 system_parse_config_sysServices(const char *token, char *cptr)
 {
     sysServices = atoi(cptr);
     sysServicesConfiged = 1;
 }
 
-void system_parse_config_sysObjectID(const char *token, char *cptr)
+static void
+system_parse_config_sysObjectID(const char *token, char *cptr)
 {
-    char tmpbuf[1024];
-
-    sysObjectIDLength = MAX_OID_LEN;
+    size_t sysObjectIDLength = MAX_OID_LEN;
     if (!read_objid(cptr, sysObjectID, &sysObjectIDLength)) {
-        snprintf(tmpbuf,
-                 sizeof(tmpbuf),
-                 "sysobjectid token not a parsable OID:\n\t%s",
-                 cptr);
-        config_perror(tmpbuf);
-        memcpy(sysObjectID, version_sysoid, version_sysoid_len * sizeof(oid));
-        sysObjectIDLength = version_sysoid_len;
-    }
+	netsnmp_config_error("sysobjectid token not a parsable OID:\n\t%s",
+			     cptr);
+        sysObjectIDByteLength = version_sysoid_len  * sizeof(oid);
+        memcpy(sysObjectID, version_sysoid, sysObjectIDByteLength);
+    } else
+
+		sysObjectIDByteLength = sysObjectIDLength * sizeof(oid);
 }
 
 
@@ -291,28 +186,8 @@
 	 *
 	 *********************/
 
-/*
- * define the structure we're going to ask the agent to register our
- * information at 
- */
-struct variable1 system_variables[] = {
-    {VERSION_DESCR, ASN_OCTET_STR, RONLY, var_system, 1, {1}},
-    {VERSIONID, ASN_OBJECT_ID, RONLY, var_system, 1, {2}},
-    {UPTIME, ASN_TIMETICKS, RONLY, var_system, 1, {3}},
-    {SYSCONTACT, ASN_OCTET_STR, RWRITE, var_system, 1, {4}},
-    {SYSTEMNAME, ASN_OCTET_STR, RWRITE, var_system, 1, {5}},
-    {SYSLOCATION, ASN_OCTET_STR, RWRITE, var_system, 1, {6}},
-    {SYSSERVICES, ASN_INTEGER, RONLY, var_system, 1, {7}},
-    {SYSORLASTCHANGE, ASN_TIMETICKS, RONLY, var_system, 1, {8}}
-};
-/*
- * Define the OID pointer to the top of the mib tree that we're
- * registering underneath 
- */
-oid             system_variables_oid[] = { SNMP_OID_MIB2, 1 };
 oid             system_module_oid[] = { SNMP_OID_SNMPMODULES, 1 };
-int             system_module_oid_len =
-    sizeof(system_module_oid) / sizeof(oid);
+int             system_module_oid_len = OID_LENGTH(system_module_oid);
 int             system_module_count = 0;
 
 static int
@@ -336,6 +211,30 @@
     return 0;
 }
 
+static int
+handle_sysServices(netsnmp_mib_handler *handler,
+                   netsnmp_handler_registration *reginfo,
+                   netsnmp_agent_request_info *reqinfo,
+                   netsnmp_request_info *requests)
+{
+#if NETSNMP_NO_DUMMY_VALUES
+    if (reqinfo->mode == MODE_GET && !sysServicesConfiged)
+        netsnmp_request_set_error(requests, SNMP_NOSUCHINSTANCE);
+#endif
+    return SNMP_ERR_NOERROR;
+}
+
+static int
+handle_sysUpTime(netsnmp_mib_handler *handler,
+                   netsnmp_handler_registration *reginfo,
+                   netsnmp_agent_request_info *reqinfo,
+                   netsnmp_request_info *requests)
+{
+    snmp_set_var_typed_integer(requests->requestvb, ASN_TIMETICKS,
+                               netsnmp_get_agent_uptime());
+    return SNMP_ERR_NOERROR;
+}
+
 void
 init_system_mib(void)
 {
@@ -399,30 +298,130 @@
 #endif                          /* HAVE_GETHOSTNAME */
 
 #if (defined (WIN32) && defined (HAVE_WIN32_PLATFORM_SDK)) || defined (mingw32)
-  {
-    HKEY hKey;
-    /* Default sysContact is the registered windows user */
-    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) {
-       char registeredOwner[256] = "";
-       DWORD registeredOwnerSz = 256;
-       if (RegQueryValueEx(hKey, "RegisteredOwner", NULL, NULL, (LPBYTE)registeredOwner, &registeredOwnerSz) == ERROR_SUCCESS) {
-          strcpy(sysContact, registeredOwner);
-       }
-       RegCloseKey(hKey);
+    {
+      HKEY hKey;
+      /* Default sysContact is the registered windows user */
+      if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
+                       "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", 0,
+                       KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS) {
+          char registeredOwner[256] = "";
+          DWORD registeredOwnerSz = 256;
+          if (RegQueryValueEx(hKey, "RegisteredOwner", NULL, NULL,
+                              (LPBYTE)registeredOwner,
+                              &registeredOwnerSz) == ERROR_SUCCESS) {
+              strcpy(sysContact, registeredOwner);
+          }
+          RegCloseKey(hKey);
+      }
     }
-  }
 #endif
 
     /* default sysObjectID */
     memcpy(sysObjectID, version_sysoid, version_sysoid_len * sizeof(oid));
-    sysObjectIDLength = version_sysoid_len;
+    sysObjectIDByteLength = version_sysoid_len * sizeof(oid);
 
-    /*
-     * register ourselves with the agent to handle our mib tree 
-     */
-    REGISTER_MIB("mibII/system", system_variables, variable1,
-                 system_variables_oid);
-
+    {
+        const oid sysDescr_oid[] = { 1, 3, 6, 1, 2, 1, 1, 1 };
+        static netsnmp_watcher_info sysDescr_winfo;
+        netsnmp_register_watched_scalar(
+            netsnmp_create_handler_registration(
+                "mibII/sysDescr", NULL, sysDescr_oid, OID_LENGTH(sysDescr_oid),
+                HANDLER_CAN_RONLY),
+            netsnmp_init_watcher_info(&sysDescr_winfo, version_descr, 0,
+				      ASN_OCTET_STR, WATCHER_SIZE_STRLEN));
+    }
+    {
+        const oid sysObjectID_oid[] = { 1, 3, 6, 1, 2, 1, 1, 2 };
+        static netsnmp_watcher_info sysObjectID_winfo;
+        netsnmp_register_watched_scalar(
+            netsnmp_create_handler_registration(
+                "mibII/sysObjectID", NULL,
+                sysObjectID_oid, OID_LENGTH(sysObjectID_oid),
+                HANDLER_CAN_RONLY),
+            netsnmp_init_watcher_info6(
+		&sysObjectID_winfo, sysObjectID, 0, ASN_OBJECT_ID,
+                WATCHER_MAX_SIZE | WATCHER_SIZE_IS_PTR,
+                MAX_OID_LEN, &sysObjectIDByteLength));
+    }
+    {
+        const oid sysUpTime_oid[] = { 1, 3, 6, 1, 2, 1, 1, 3 };
+        netsnmp_register_scalar(
+            netsnmp_create_handler_registration(
+                "mibII/sysUpTime", handle_sysUpTime,
+                sysUpTime_oid, OID_LENGTH(sysUpTime_oid),
+                HANDLER_CAN_RONLY));
+    }
+    {
+        const oid sysContact_oid[] = { 1, 3, 6, 1, 2, 1, 1, 4 };
+        static netsnmp_watcher_info sysContact_winfo;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        netsnmp_register_watched_scalar(
+            netsnmp_create_update_handler_registration(
+                "mibII/sysContact", sysContact_oid, OID_LENGTH(sysContact_oid), 
+                HANDLER_CAN_RWRITE, &sysContactSet),
+            netsnmp_init_watcher_info(
+                &sysContact_winfo, sysContact, SYS_STRING_LEN - 1,
+                ASN_OCTET_STR, WATCHER_MAX_SIZE | WATCHER_SIZE_STRLEN));
+#else  /* !NETSNMP_NO_WRITE_SUPPORT */
+        netsnmp_register_watched_scalar(
+            netsnmp_create_update_handler_registration(
+                "mibII/sysContact", sysContact_oid, OID_LENGTH(sysContact_oid),
+                HANDLER_CAN_RONLY, &sysContactSet),
+            netsnmp_init_watcher_info(
+                &sysContact_winfo, sysContact, SYS_STRING_LEN - 1,
+                ASN_OCTET_STR, WATCHER_MAX_SIZE | WATCHER_SIZE_STRLEN));
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+    }
+    {
+        const oid sysName_oid[] = { 1, 3, 6, 1, 2, 1, 1, 5 };
+        static netsnmp_watcher_info sysName_winfo;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        netsnmp_register_watched_scalar(
+            netsnmp_create_update_handler_registration(
+                "mibII/sysName", sysName_oid, OID_LENGTH(sysName_oid),
+                HANDLER_CAN_RWRITE, &sysNameSet),
+            netsnmp_init_watcher_info(
+                &sysName_winfo, sysName, SYS_STRING_LEN - 1, ASN_OCTET_STR,
+                WATCHER_MAX_SIZE | WATCHER_SIZE_STRLEN));
+#else  /* !NETSNMP_NO_WRITE_SUPPORT */
+        netsnmp_register_watched_scalar(
+            netsnmp_create_update_handler_registration(
+                "mibII/sysName", sysName_oid, OID_LENGTH(sysName_oid),
+                HANDLER_CAN_RONLY, &sysNameSet),
+            netsnmp_init_watcher_info(
+                &sysName_winfo, sysName, SYS_STRING_LEN - 1, ASN_OCTET_STR,
+                WATCHER_MAX_SIZE | WATCHER_SIZE_STRLEN));
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+    }
+    {
+        const oid sysLocation_oid[] = { 1, 3, 6, 1, 2, 1, 1, 6 };
+        static netsnmp_watcher_info sysLocation_winfo;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        netsnmp_register_watched_scalar(
+            netsnmp_create_update_handler_registration(
+                "mibII/sysLocation", sysLocation_oid,
+                OID_LENGTH(sysLocation_oid),
+                HANDLER_CAN_RWRITE, &sysLocationSet),
+            netsnmp_init_watcher_info(
+		&sysLocation_winfo, sysLocation, SYS_STRING_LEN - 1,
+		ASN_OCTET_STR, WATCHER_MAX_SIZE | WATCHER_SIZE_STRLEN));
+#else  /* !NETSNMP_NO_WRITE_SUPPORT */
+        netsnmp_register_watched_scalar(
+            netsnmp_create_update_handler_registration(
+                "mibII/sysLocation", sysLocation_oid,
+                OID_LENGTH(sysLocation_oid),
+                HANDLER_CAN_RONLY, &sysLocationSet),
+            netsnmp_init_watcher_info(
+		&sysLocation_winfo, sysLocation, SYS_STRING_LEN - 1,
+		ASN_OCTET_STR, WATCHER_MAX_SIZE | WATCHER_SIZE_STRLEN));
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+    }
+    {
+        const oid sysServices_oid[] = { 1, 3, 6, 1, 2, 1, 1, 7 };
+        netsnmp_register_read_only_int_scalar(
+            "mibII/sysServices", sysServices_oid, OID_LENGTH(sysServices_oid),
+            &sysServices, handle_sysServices);
+    }
     if (++system_module_count == 3)
         REGISTER_SYSOR_ENTRY(system_module_oid,
                              "The MIB module for SNMPv2 entities");
@@ -456,187 +455,8 @@
                                   "OID");
     snmp_register_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA,
                            system_store, NULL);
-
 }
 
-
-        /*********************
-	 *
-	 *  System specific implementation functions
-	 *
-	 *********************/
-
-#ifdef USING_MIBII_SYSORTABLE_MODULE
-extern struct timeval sysOR_lastchange;
-#endif
-
-u_char         *
-var_system(struct variable *vp,
-           oid * name,
-           size_t * length,
-           int exact, size_t * var_len, WriteMethod ** write_method)
-{
-    static u_long   ulret;
-
-    if (header_generic(vp, name, length, exact, var_len, write_method) ==
-        MATCH_FAILED)
-        return NULL;
-
-    switch (vp->magic) {
-    case VERSION_DESCR:
-        *var_len = strlen(version_descr);
-        return (u_char *) version_descr;
-    case VERSIONID:
-        *var_len = sysObjectIDLength * sizeof(sysObjectID[0]);
-        return (u_char *)sysObjectID;
-    case UPTIME:
-        ulret = netsnmp_get_agent_uptime();
-        return ((u_char *) & ulret);
-    case SYSCONTACT:
-        *var_len = strlen(sysContact);
-        *write_method = writeSystem;
-        return (u_char *) sysContact;
-    case SYSTEMNAME:
-        *var_len = strlen(sysName);
-        *write_method = writeSystem;
-        return (u_char *) sysName;
-    case SYSLOCATION:
-        *var_len = strlen(sysLocation);
-        *write_method = writeSystem;
-        return (u_char *) sysLocation;
-    case SYSSERVICES:
-#if NETSNMP_NO_DUMMY_VALUES
-        if (!sysServicesConfiged)
-            return NULL;
-#endif
-        long_return = sysServices;
-        return (u_char *) & long_return;
-
-#ifdef USING_MIBII_SYSORTABLE_MODULE
-    case SYSORLASTCHANGE:
-        ulret = netsnmp_timeval_uptime(&sysOR_lastchange);
-        return ((u_char *) & ulret);
-#endif
-
-    default:
-        DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_system\n",
-                    vp->magic));
-    }
-    return NULL;
-}
-
-
-
-int
-writeSystem(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)
-{
-    u_char         *cp;
-    char           *buf = NULL, *oldbuf = NULL;
-    int             count, *setvar = NULL;
-
-    switch ((char) name[7]) {
-    case VERSION_DESCR:
-    case VERSIONID:
-    case UPTIME:
-        snmp_log(LOG_ERR, "Attempt to write to R/O OID\n");
-        return SNMP_ERR_NOTWRITABLE;
-    case SYSCONTACT:
-        buf = sysContact;
-        oldbuf = oldsysContact;
-        setvar = &sysContactSet;
-        break;
-    case SYSTEMNAME:
-        buf = sysName;
-        oldbuf = oldsysName;
-        setvar = &sysNameSet;
-        break;
-    case SYSLOCATION:
-        buf = sysLocation;
-        oldbuf = oldsysLocation;
-        setvar = &sysLocationSet;
-        break;
-    case SYSSERVICES:
-    case SYSORLASTCHANGE:
-        snmp_log(LOG_ERR, "Attempt to write to R/O OID\n");
-        return SNMP_ERR_NOTWRITABLE;
-    default:
-        return SNMP_ERR_GENERR; /* ??? */
-    }
-
-    switch (action) {
-    case RESERVE1:             /* Check values for acceptability */
-        if (var_val_type != ASN_OCTET_STR) {
-            snmp_log(LOG_ERR, "not string\n");
-            return SNMP_ERR_WRONGTYPE;
-        }
-        if (var_val_len > sizeof(sysLocation) - 1) {
-            snmp_log(LOG_ERR, "bad length\n");
-            return SNMP_ERR_WRONGLENGTH;
-        }
-
-        for (cp = var_val, count = 0; count < (int) var_val_len;
-             count++, cp++) {
-            if (!isprint(*cp)) {
-                snmp_log(LOG_ERR, "not print %x\n", *cp);
-                return SNMP_ERR_WRONGVALUE;
-            }
-        }
-        if (setvar != NULL && *setvar < 0) {
-            /*
-             * The object is set in a read-only configuration file.  
-             */
-            return SNMP_ERR_NOTWRITABLE;
-        }
-        break;
-
-    case RESERVE2:             /* Allocate memory and similar resources */
-
-        /*
-         * Using static strings, so nothing needs to be done 
-         */
-        break;
-
-    case ACTION:               /* Perform the SET action (if reversible) */
-
-        /*
-         * Save the old value, in case of UNDO 
-         */
-        strcpy(oldbuf, buf);
-        memcpy(buf, var_val, var_val_len);
-        buf[var_val_len] = 0;
-        break;
-
-    case UNDO:                 /* Reverse the SET action and free resources */
-
-        strcpy(buf, oldbuf);
-        oldbuf[0] = 0;
-        break;
-
-    case COMMIT:
-        if (setvar != NULL) {
-            *setvar = 1;
-        }
-        snmp_save_persistent(netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_APPTYPE));
-        (void) snmp_call_callbacks(SNMP_CALLBACK_LIBRARY,
-                                   SNMP_CALLBACK_STORE_DATA, NULL);
-        snmp_clean_persistent(netsnmp_ds_get_string
-                              (NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_APPTYPE));
-
-    case FREE:                 /* Free any resources allocated */
-
-        /*
-         * No resources have been allocated, but "empty" the 'oldbuf' 
-         */
-        oldbuf[0] = 0;
-        break;
-    }
-    return SNMP_ERR_NOERROR;
-}                               /* end of writeSystem */
-
         /*********************
 	 *
 	 *  Internal implementation functions - None
diff --git a/agent/mibgroup/mibII/system_mib.h b/agent/mibgroup/mibII/system_mib.h
index ec3312d..dd16f08 100644
--- a/agent/mibgroup/mibII/system_mib.h
+++ b/agent/mibgroup/mibII/system_mib.h
@@ -1,31 +1,16 @@
-/*
- *  System MIB group interface - system.h
- *
- */
 #ifndef _MIBGROUP_SYSTEM_MIB_H
 #define _MIBGROUP_SYSTEM_MIB_H
 
-config_require(util_funcs)
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-     extern char     version_descr[];
+config_require(util_funcs mibII/updates)
 
-     void            init_system_mib(void);
-     extern FindVarMethod var_system;
+void init_system_mib(void);
 
-/*
- * config file parsing routines 
- */
-     void            system_parse_config_sysloc(const char *, char *);
-     void            system_parse_config_syscon(const char *, char *);
-     void            system_parse_config_sysname(const char *, char *);
-
-#define	VERSION_DESCR		1
-#define	VERSIONID		2
-#define	UPTIME			3
-#define SYSCONTACT		4
-#define SYSTEMNAME		5
-#define SYSLOCATION		6
-#define SYSSERVICES		7
-#define SYSORLASTCHANGE		8
+#ifdef __cplusplus
+}
+#endif
 
 #endif                          /* _MIBGROUP_SYSTEM_MIB_H */
diff --git a/agent/mibgroup/mibII/tcp.c b/agent/mibgroup/mibII/tcp.c
index bc2e2d0..3c79fad 100644
--- a/agent/mibgroup/mibII/tcp.c
+++ b/agent/mibgroup/mibII/tcp.c
@@ -5,6 +5,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include "mibII_common.h"
 
 #if HAVE_STDLIB_H
@@ -49,11 +50,11 @@
 #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/sysORTable.h>
 
-#include "util_funcs.h"
+#include "util_funcs/MIB_STATS_CACHE_TIMEOUT.h"
 #include "tcp.h"
 #include "tcpTable.h"
-#include "sysORTable.h"
 
 #ifndef MIB_STATS_CACHE_TIMEOUT
 #define MIB_STATS_CACHE_TIMEOUT	5
@@ -62,7 +63,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;
@@ -88,7 +92,9 @@
 int  hz = 1000;
 #endif
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCP_COUNT_CONNECTIONS
 extern int TCP_Count_Connections( void );
+#endif /* NETSNMP_FEATURE_REMOVE_TCP_COUNT_CONNECTIONS */
         /*********************
 	 *
 	 *  Initialisation & common implementation functions
@@ -176,7 +182,7 @@
 #undef TCP_NSTATS
 #endif
 
-#if defined (WIN32) || defined (cygwin)
+#ifdef HAVE_IPHLPAPI_H
 #include <iphlpapi.h>
 #define TCP_STAT_STRUCTURE     MIB_TCPSTATS
 #endif
@@ -367,11 +373,14 @@
         ret_value = tcpstat.tcps_drops;
         break;
     case TCPCURRESTAB:
-#ifdef USING_MIBII_TCPTABLE_MODULE
+#ifdef NETSNMP_FEATURE_CHECKING
+        netsnmp_feature_want(tcp_count_connections)
+#endif
+#ifndef NETSNMP_FEATURE_REMOVE_TCP_COUNT_CONNECTIONS
         ret_value = TCP_Count_Connections();
 #else
         ret_value = 0;
-#endif
+#endif /* NETSNMP_FEATURE_REMOVE_TCP_COUNT_CONNECTIONS */
         type = ASN_GAUGE;
         break;
     case TCPINSEGS:
@@ -389,7 +398,7 @@
         break;
     case TCPINERRS:
         ret_value = tcpstat.tcps_rcvbadsum + tcpstat.tcps_rcvbadoff
-#ifdef STRUCT_TCPSTAT_HAS_TCPS_RCVMEMDROP
+#ifdef HAVE_STRUCT_TCPSTAT_TCPS_RCVMEMDROP
             + tcpstat.tcps_rcvmemdrop
 #endif
             + tcpstat.tcps_rcvshort;
@@ -546,6 +555,7 @@
 
     case MODE_GETNEXT:
     case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
@@ -555,6 +565,7 @@
         snmp_log(LOG_WARNING, "mibII/tcp: Unsupported mode (%d)\n",
                                reqinfo->mode);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     default:
         snmp_log(LOG_WARNING, "mibII/tcp: Unrecognised mode (%d)\n",
                                reqinfo->mode);
diff --git a/agent/mibgroup/mibII/tcp.h b/agent/mibgroup/mibII/tcp.h
index 926df49..049ddd1 100644
--- a/agent/mibgroup/mibII/tcp.h
+++ b/agent/mibgroup/mibII/tcp.h
@@ -6,7 +6,7 @@
 #define _MIBGROUP_TCP_H
 
 
-config_require(mibII/tcpTable util_funcs)
+config_require(mibII/tcpTable)
 
 config_arch_require(solaris2,        kernel_sunos5)
 config_arch_require(linux,     mibII/kernel_linux)
diff --git a/agent/mibgroup/mibII/tcpTable.c b/agent/mibgroup/mibII/tcpTable.c
index 2b1c2c6..03c85e5 100644
--- a/agent/mibgroup/mibII/tcpTable.c
+++ b/agent/mibgroup/mibII/tcpTable.c
@@ -15,6 +15,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include "mibII_common.h"
 
 #if HAVE_NETINET_TCP_H
@@ -29,6 +30,11 @@
 #if HAVE_NETINET_TCP_VAR_H
 #include <netinet/tcp_var.h>
 #endif
+#if HAVE_NETLINK_NETLINK_H
+#include <netlink/netlink.h>
+#include <netlink/msg.h>
+#include <linux/inet_diag.h>
+#endif
 
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -36,7 +42,10 @@
 
 #include "tcp.h"
 #include "tcpTable.h"
-#include "sysORTable.h"
+
+netsnmp_feature_child_of(tcptable_all, libnetsnmpmibs)
+
+netsnmp_feature_child_of(tcp_count_connections, tcptable_all)
 
 #ifdef hpux11
 #define	TCPTABLE_ENTRY_TYPE	mib_tcpConnEnt 
@@ -63,7 +72,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 
@@ -91,6 +100,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 
@@ -129,15 +139,15 @@
 #define TCP_PORT_TO_HOST_ORDER(x) ntohs(x)
 #endif
 
-oid             tcpTable_oid[] = { SNMP_OID_MIB2, 6, 13 };
-
 void
 init_tcpTable(void)
 {
+    const oid tcpTable_oid[] = { SNMP_OID_MIB2, 6, 13 };
+
     netsnmp_table_registration_info *table_info;
     netsnmp_iterator_info           *iinfo;
     netsnmp_handler_registration    *reginfo;
-    int rc;
+    int                              rc;
 
     DEBUGMSGTL(("mibII/tcpTable", "Initialising TCP Table\n"));
     /*
@@ -177,7 +187,7 @@
             tcpTable_handler,
             tcpTable_oid, OID_LENGTH(tcpTable_oid),
             HANDLER_CAN_RONLY),
-    rc = netsnmp_register_table_iterator(reginfo, iinfo);
+    rc = netsnmp_register_table_iterator2(reginfo, iinfo);
     if (rc != SNMPERR_SUCCESS)
         return;
 
@@ -268,12 +278,14 @@
 
     case MODE_GETNEXT:
     case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
     case MODE_SET_COMMIT:
     case MODE_SET_FREE:
     case MODE_SET_UNDO:
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         snmp_log(LOG_WARNING, "mibII/tcpTable: Unsupported mode (%d)\n",
                                reqinfo->mode);
         break;
@@ -286,11 +298,13 @@
     return SNMP_ERR_NOERROR;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCP_COUNT_CONNECTIONS
 int
 TCP_Count_Connections( void ) {
     tcpTable_load(NULL, NULL);
     return tcp_estab;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCP_COUNT_CONNECTIONS */
 
 	/*
 	 * Two forms of iteration hook routines:
@@ -404,7 +418,7 @@
      * XXX - How can we tell if the cache is valid?
      *       No access to 'reqinfo'
      */
-    if (tcp_head == 0)
+    if (tcp_head == NULL)
         return NULL;
 
     /*
@@ -547,6 +561,144 @@
 #else                           /* hpux11 */
 
 #ifdef linux
+
+/*  see <netinet/tcp.h> */
+#define TCP_ALL ((1 << (TCP_CLOSING + 1)) - 1)
+
+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 socket ? */
+	struct nl_sock *nl = nl_socket_alloc();
+	struct inet_diag_req req = {
+		.idiag_family = AF_INET,
+		.idiag_states = TCP_ALL,
+	};
+
+	struct nl_msg *nm;
+
+	struct sockaddr_nl peer;
+	unsigned char *buf = NULL;
+	int running = 1, len, err;
+
+	if (nl == NULL) {
+		DEBUGMSGTL(("mibII/tcpTable", "Failed to allocate netlink handle\n"));
+		snmp_log(LOG_ERR, "snmpd: Failed to allocate netlink handle\n");
+		return -1;
+	}
+
+	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);
+
+	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);
+
+	while (running) {
+		struct nlmsghdr *h;
+		if ((len = nl_recv(nl, &peer, &buf, NULL)) <= 0) {
+			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;
+		}
+
+		h = (struct nlmsghdr*)buf;
+
+		while (nlmsg_ok(h, len)) {
+			struct inet_diag_msg *r = nlmsg_data(h);
+			struct inpcb    pcb, *nnew;
+
+			if (h->nlmsg_type == NLMSG_DONE) {
+				running = 0;
+				break;
+			}
+
+			r = nlmsg_data(h);
+
+			if (r->idiag_family != AF_INET) {
+				h = nlmsg_next(h, &len);
+				continue;
+			}
+
+			memcpy(&pcb.inp_laddr.s_addr, r->id.idiag_src, r->idiag_family == AF_INET ? 4 : 6);
+			memcpy(&pcb.inp_faddr.s_addr, r->id.idiag_dst, r->idiag_family == AF_INET ? 4 : 6);
+
+			pcb.inp_lport = r->id.idiag_sport;
+			pcb.inp_fport = r->id.idiag_dport;
+
+			pcb.inp_state = (r->idiag_state & 0xf) < 12 ? linux_states[r->idiag_state & 0xf] : 2;
+			if (pcb.inp_state == 5 /* established */ ||
+				pcb.inp_state == 8 /*  closeWait  */ )
+				tcp_estab++;
+			pcb.uid = r->idiag_uid;
+
+			nnew = SNMP_MALLOC_TYPEDEF(struct inpcb);
+			if (nnew == NULL) {
+				running = 0;
+				/*  XXX report malloc error and return -1? */
+				break;
+			}
+			memcpy(nnew, &pcb, sizeof(struct inpcb));
+			nnew->inp_next = tcp_head;
+			tcp_head       = nnew;
+
+			h = nlmsg_next(h, &len);
+		}
+		free(buf);
+	}
+
+	nl_socket_free(nl);
+
+	if (tcp_head) {
+		DEBUGMSGTL(("mibII/tcpTable", "Loaded TCP Table using netlink\n"));
+		return 0;
+	}
+	DEBUGMSGTL(("mibII/tcpTable", "Failed to load TCP Table (netlink)\n"));
+	return -1;
+}
+#endif
+
 int
 tcpTable_load(netsnmp_cache *cache, void *vmagic)
 {
@@ -555,9 +707,15 @@
 
     tcpTable_free(cache, NULL);
 
+#if HAVE_NETLINK_NETLINK_H
+	if (tcpTable_load_netlink() == 0) {
+		return 0;
+	}
+#endif
+
     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;
     }
 
@@ -568,9 +726,8 @@
      */
     while (line == fgets(line, sizeof(line), in)) {
         struct inpcb    pcb, *nnew;
-        static int      linux_states[12] =
-            { 1, 5, 3, 4, 6, 7, 11, 1, 8, 9, 2, 10 };
-        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/tcpTable.h b/agent/mibgroup/mibII/tcpTable.h
index a5a6f76..55fe97b 100644
--- a/agent/mibgroup/mibII/tcpTable.h
+++ b/agent/mibgroup/mibII/tcpTable.h
@@ -6,7 +6,6 @@
 #define _MIBGROUP_TCPTABLE_H
 
 config_arch_require(solaris2, kernel_sunos5)
-config_require(util_funcs)
 #if !defined(NETSNMP_ENABLE_MFD_REWRITES)
 config_require(mibII/ip)
 #endif
diff --git a/agent/mibgroup/mibII/udp.c b/agent/mibgroup/mibII/udp.c
index e15a2de..1ddcbc5 100644
--- a/agent/mibgroup/mibII/udp.c
+++ b/agent/mibgroup/mibII/udp.c
@@ -16,15 +16,15 @@
 #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/sysORTable.h>
 
-#include "util_funcs.h"
+#include "util_funcs/MIB_STATS_CACHE_TIMEOUT.h"
 
 #ifdef linux
 #include "tcp.h"
 #endif
 #include "udp.h"
 #include "udpTable.h"
-#include "sysORTable.h"
 
 #ifdef NETSNMP_CAN_USE_SYSCTL
 #include <sys/sysctl.h>
@@ -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
@@ -235,7 +238,7 @@
 #define udpstat          udpstat.udpstat
 #endif
     case UDPINDATAGRAMS:
-#if STRUCT_UDPSTAT_HAS_UDPS_IPACKETS
+#if HAVE_STRUCT_UDPSTAT_UDPS_IPACKETS
         ret_value = udpstat.udps_ipackets;
         break;
 #else
@@ -244,7 +247,7 @@
 #endif
 
     case UDPNOPORTS:
-#if STRUCT_UDPSTAT_HAS_UDPS_NOPORT
+#if HAVE_STRUCT_UDPSTAT_UDPS_NOPORT
         ret_value = udpstat.udps_noport;
         break;
 #else
@@ -253,7 +256,7 @@
 #endif
 
     case UDPOUTDATAGRAMS:
-#if STRUCT_UDPSTAT_HAS_UDPS_OPACKETS
+#if HAVE_STRUCT_UDPSTAT_UDPS_OPACKETS
         ret_value = udpstat.udps_opackets;
         break;
 #else
@@ -263,10 +266,10 @@
 
     case UDPINERRORS:
         ret_value = udpstat.udps_hdrops + udpstat.udps_badsum +
-#ifdef STRUCT_UDPSTAT_HAS_UDPS_DISCARD
+#ifdef HAVE_STRUCT_UDPSTAT_UDPS_DISCARD
             udpstat.udps_discard +
 #endif
-#ifdef STRUCT_UDPSTAT_HAS_UDPS_FULLSOCK
+#ifdef HAVE_STRUCT_UDPSTAT_UDPS_FULLSOCK
             udpstat.udps_fullsock +
 #endif
             udpstat.udps_badlen;
@@ -326,6 +329,7 @@
 
     case MODE_GETNEXT:
     case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
@@ -335,6 +339,7 @@
         snmp_log(LOG_WARNING, "mibII/udp: Unsupported mode (%d)\n",
                                reqinfo->mode);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     default:
         snmp_log(LOG_WARNING, "mibII/udp: Unrecognised mode (%d)\n",
                                reqinfo->mode);
diff --git a/agent/mibgroup/mibII/udp.h b/agent/mibgroup/mibII/udp.h
index 0816f01..9d4671b 100644
--- a/agent/mibgroup/mibII/udp.h
+++ b/agent/mibgroup/mibII/udp.h
@@ -6,7 +6,7 @@
 #define _MIBGROUP_UDP_H
 
 
-config_require(mibII/udpTable util_funcs)
+config_require(mibII/udpTable)
 
 config_arch_require(solaris2,        kernel_sunos5)
 config_arch_require(linux,     mibII/kernel_linux)
diff --git a/agent/mibgroup/mibII/udpTable.c b/agent/mibgroup/mibII/udpTable.c
index 57e967c..2c88749 100644
--- a/agent/mibgroup/mibII/udpTable.c
+++ b/agent/mibgroup/mibII/udpTable.c
@@ -33,7 +33,6 @@
 #endif
 #include "udp.h"
 #include "udpTable.h"
-#include "sysORTable.h"
 
 #ifdef hpux11
 #define	UDPTABLE_ENTRY_TYPE	mib_udpLsnEnt 
@@ -54,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
@@ -130,7 +129,7 @@
     netsnmp_table_registration_info *table_info;
     netsnmp_iterator_info           *iinfo;
     netsnmp_handler_registration    *reginfo;
-    int rc;
+    int                              rc;
 
     DEBUGMSGTL(("mibII/udpTable", "Initialising UDP Table\n"));
     /*
@@ -151,6 +150,7 @@
      */
     iinfo      = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info);
     if (!iinfo) {
+        netsnmp_table_registration_info_free(table_info);
         return;
     }
     iinfo->get_first_data_point = udpTable_first_entry;
@@ -168,7 +168,7 @@
             udpTable_handler,
             udpTable_oid, OID_LENGTH(udpTable_oid),
             HANDLER_CAN_RONLY),
-    rc = netsnmp_register_table_iterator(reginfo, iinfo);
+    rc = netsnmp_register_table_iterator2(reginfo, iinfo);
     if (rc != SNMPERR_SUCCESS)
         return;
 
@@ -239,12 +239,14 @@
 
     case MODE_GETNEXT:
     case MODE_GETBULK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
     case MODE_SET_RESERVE2:
     case MODE_SET_ACTION:
     case MODE_SET_COMMIT:
     case MODE_SET_FREE:
     case MODE_SET_UNDO:
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         snmp_log(LOG_WARNING, "mibII/udpTable: Unsupported mode (%d)\n",
                                reqinfo->mode);
         break;
@@ -349,7 +351,7 @@
      * XXX - How can we tell if the cache is valid?
      *       No access to 'reqinfo'
      */
-    if (udp_head == 0)
+    if (udp_head == NULL)
         return NULL;
 
     /*
@@ -478,7 +480,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/udpTable.h b/agent/mibgroup/mibII/udpTable.h
index 2c61cda..f9afd5a 100644
--- a/agent/mibgroup/mibII/udpTable.h
+++ b/agent/mibgroup/mibII/udpTable.h
@@ -6,7 +6,7 @@
 #define _MIBGROUP_UDPTABLE_H
 
 config_arch_require(solaris2, kernel_sunos5)
-config_require(util_funcs mibII/ip)
+config_require(mibII/ip)
 
 extern void     init_udpTable(void);
 extern Netsnmp_Node_Handler udpTable_handler;
diff --git a/agent/mibgroup/mibII/updates.c b/agent/mibgroup/mibII/updates.c
new file mode 100644
index 0000000..938ea29
--- /dev/null
+++ b/agent/mibgroup/mibII/updates.c
@@ -0,0 +1,45 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+static int
+handle_updates(netsnmp_mib_handler *handler,
+               netsnmp_handler_registration *reginfo,
+               netsnmp_agent_request_info *reqinfo,
+               netsnmp_request_info *requests)
+{
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+    int *set = (int*)handler->myvoid;
+
+    if (reqinfo->mode == MODE_SET_RESERVE1 && *set < 0)
+        netsnmp_request_set_error(requests, SNMP_ERR_NOTWRITABLE);
+    else if (reqinfo->mode == MODE_SET_COMMIT) {
+        *set = 1;
+        snmp_store_needed(reginfo->handlerName);
+    }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+    return SNMP_ERR_NOERROR;
+}
+
+netsnmp_handler_registration*
+netsnmp_create_update_handler_registration(
+    const char* name, const oid* id, size_t idlen, int mode, int* set)
+{
+    netsnmp_handler_registration *res;
+    netsnmp_mib_handler *hnd;
+
+    hnd = netsnmp_create_handler("update", handle_updates);
+    if (hnd == NULL)
+        return NULL;
+
+    hnd->flags |= MIB_HANDLER_AUTO_NEXT;
+    hnd->myvoid = set;
+
+    res = netsnmp_handler_registration_create(name, hnd, id, idlen, mode);
+    if (res == NULL) {
+        netsnmp_handler_free(hnd);
+        return NULL;
+    }
+
+    return res;
+}
diff --git a/agent/mibgroup/mibII/updates.h b/agent/mibgroup/mibII/updates.h
new file mode 100644
index 0000000..b414e33
--- /dev/null
+++ b/agent/mibgroup/mibII/updates.h
@@ -0,0 +1,16 @@
+#ifndef UPDATES_H
+#define UPDATES_H
+
+/**
+ * Create a handler_registration that checks *set to determine how to proceede,
+ * if *set is less than 0 then the object is nonwriteable, otherwise, *set is
+ * set to 1 in the commit phase. All other parameters are as in
+ * netsnmp_create_handler_registration.
+ */
+
+extern netsnmp_handler_registration*
+netsnmp_create_update_handler_registration(const char* name,
+                                           const oid* id, size_t idlen,
+                                           int mode, int* set);
+
+#endif
diff --git a/agent/mibgroup/mibII/vacm_conf.c b/agent/mibgroup/mibII/vacm_conf.c
index 7d78a1f..f2faf86 100644
--- a/agent/mibgroup/mibII/vacm_conf.c
+++ b/agent/mibgroup/mibII/vacm_conf.c
@@ -40,34 +40,12 @@
 #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>
 
 #include <net-snmp/agent/agent_callbacks.h>
 #include "vacm_conf.h"
-#include "util_funcs.h"
-
-#ifdef USING_MIBII_SYSORTABLE_MODULE
-#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
-#include "sysORTable.h"
-#endif
 
 #include "snmpd.h"
 
@@ -88,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",
@@ -119,7 +100,7 @@
      * Define standard views "_all_" and "_none_"
      */
     snmp_register_callback(SNMP_CALLBACK_LIBRARY,
-                           SNMP_CALLBACK_POST_PREMIB_READ_CONFIG,
+                           SNMP_CALLBACK_PRE_READ_CONFIG,
                            vacm_standard_views, NULL);
     snmp_register_callback(SNMP_CALLBACK_LIBRARY,
                            SNMP_CALLBACK_POST_READ_CONFIG,
@@ -174,24 +155,24 @@
 void
 vacm_parse_group(const char *token, char *param)
 {
-    char           *group, *model, *security;
+    char            group[VACMSTRINGLEN], model[VACMSTRINGLEN], security[VACMSTRINGLEN];
     int             imodel;
     struct vacm_groupEntry *gp = NULL;
     char           *st;
 
-    group = strtok_r(param, " \t\n", &st);
-    model = strtok_r(NULL, " \t\n", &st);
-    security = strtok_r(NULL, " \t\n", &st);
+    st = copy_nword(param, group, sizeof(group)-1);
+    st = copy_nword(st, model, sizeof(model)-1);
+    st = copy_nword(st, security, sizeof(security)-1);
 
-    if (group == NULL || *group == 0) {
+    if (group[0] == 0) {
         config_perror("missing GROUP parameter");
         return;
     }
-    if (model == NULL || *model == 0) {
+    if (model[0] == 0) {
         config_perror("missing MODEL parameter");
         return;
     }
-    if (security == NULL || *security == 0) {
+    if (security[0] == 0) {
         config_perror("missing SECURITY parameter");
         return;
     }
@@ -270,7 +251,7 @@
         return PARSE_FAIL;
     }
 
-    if (strcmp(*context, "\"\"") == 0)
+    if (strcmp(*context, "\"\"") == 0 || strcmp(*context, "\'\'") == 0)
         **context = 0;
     if (strcasecmp(model, "any") == 0)
         *imodel = SNMP_SEC_MODEL_ANY;
@@ -643,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);
@@ -680,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)) {
@@ -962,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,
@@ -969,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);
@@ -1014,10 +997,10 @@
              */
             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);
+                     "%s %s \"%s\"", grpname, model, secname);
             line[ sizeof(line)-1 ] = 0;
             DEBUGMSGTL((token, "passing: %s %s\n", "group", line));
             vacm_parse_group("group", line);
@@ -1025,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 = '_';
     }
 
@@ -1218,9 +1201,11 @@
     case SNMP_MSG_GETBULK:
         viewtype = VACM_VIEW_READ;
         break;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMP_MSG_SET:
         viewtype = VACM_VIEW_WRITE;
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     case SNMP_MSG_TRAP:
     case SNMP_MSG_TRAP2:
     case SNMP_MSG_INFORM:
@@ -1262,12 +1247,20 @@
 vacm_check_view(netsnmp_pdu *pdu, oid * name, size_t namelen,
                 int check_subtree, int viewtype)
 {
+    return vacm_check_view_contents(pdu, name, namelen, check_subtree, viewtype,
+                                    VACM_CHECK_VIEW_CONTENTS_NO_FLAGS);
+}
+
+int
+vacm_check_view_contents(netsnmp_pdu *pdu, oid * name, size_t namelen,
+                         int check_subtree, int viewtype, int flags)
+{
     struct vacm_accessEntry *ap;
     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;
 
@@ -1314,7 +1307,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
@@ -1333,6 +1328,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
@@ -1421,7 +1417,8 @@
         contextNameIndex[0] = '\0';
 
     contextNameIndex[pdu->contextNameLen] = '\0';
-    if (!netsnmp_subtree_find_first(contextNameIndex)) {
+    if (!(flags & VACM_CHECK_VIEW_CONTENTS_DNE_CONTEXT_OK) &&
+        !netsnmp_subtree_find_first(contextNameIndex)) {
         /*
          * rfc 3415 section 3.2, step 1
          * no such context here; return no such context error 
@@ -1447,7 +1444,7 @@
         return VACM_NOACCESS;
     }
 
-    if (name == 0) {            /* only check the setup of the vacm for the request */
+    if (name == NULL) { /* only check the setup of the vacm for the request */
         DEBUGMSG(("mibII/vacm_vars", ", Done checking setup\n"));
         return VACM_SUCCESS;
     }
diff --git a/agent/mibgroup/mibII/vacm_conf.h b/agent/mibgroup/mibII/vacm_conf.h
index 8e15978..7864ce1 100644
--- a/agent/mibgroup/mibII/vacm_conf.h
+++ b/agent/mibgroup/mibII/vacm_conf.h
@@ -7,7 +7,6 @@
 
 #include <net-snmp/library/vacm.h>
 
-config_require(util_funcs)
 config_belongs_in(agent_module)
 
 #define VACM_CREATE_SIMPLE_V3       1
@@ -43,5 +42,10 @@
 
      int             vacm_in_view(netsnmp_pdu *, oid *, size_t, int);
      int             vacm_check_view(netsnmp_pdu *, oid *, size_t, int, int);
+     int             vacm_check_view_contents(netsnmp_pdu *, oid *, size_t,
+                                              int, int, int);
+
+#define VACM_CHECK_VIEW_CONTENTS_NO_FLAGS        0
+#define VACM_CHECK_VIEW_CONTENTS_DNE_CONTEXT_OK  1
 
 #endif                          /* _MIBGROUP_VACM_CONF_H */
diff --git a/agent/mibgroup/mibII/vacm_context.c b/agent/mibgroup/mibII/vacm_context.c
index c474180..8f43cd3 100644
--- a/agent/mibgroup/mibII/vacm_context.c
+++ b/agent/mibgroup/mibII/vacm_context.c
@@ -105,7 +105,7 @@
     iinfo->get_first_data_point = get_first_context;
     iinfo->get_next_data_point = get_next_context;
     iinfo->table_reginfo = table_info;
-    netsnmp_register_table_iterator(my_handler, iinfo);
+    netsnmp_register_table_iterator2(my_handler, iinfo);
 }
 
 /*
@@ -149,7 +149,6 @@
                                      strlen(context_ptr->context_name));
 
             break;
-
         default:
             /*
              * We should never get here, getnext already have been
@@ -159,8 +158,6 @@
                      "vacm_context table accessed as mode=%d.  We're improperly registered!",
                      reqinfo->mode);
             break;
-
-
         }
     }
 
diff --git a/agent/mibgroup/mibII/vacm_vars.c b/agent/mibgroup/mibII/vacm_vars.c
index 0937fc5..85cef94 100644
--- a/agent/mibgroup/mibII/vacm_vars.c
+++ b/agent/mibgroup/mibII/vacm_vars.c
@@ -40,24 +40,17 @@
 #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>
 
 #include <net-snmp/agent/agent_callbacks.h>
+#include <net-snmp/agent/sysORTable.h>
 #include "vacm_vars.h"
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 
-#ifdef USING_MIBII_SYSORTABLE_MODULE
 #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
@@ -66,41 +59,52 @@
 #  include <time.h>
 # endif
 #endif
-#include "sysORTable.h"
-#endif
+
 static unsigned int vacmViewSpinLock = 0;
 
 void
 init_vacm_vars(void)
 {
 
-#ifdef USING_MIBII_SYSORTABLE_MODULE
-    static oid      reg[] = { SNMP_OID_SNMPMODULES, 16, 2, 2, 1 };
-#endif
+    oid      reg[] = { SNMP_OID_SNMPMODULES, 16, 2, 2, 1 };
 
 #define PRIVRW	(NETSNMP_SNMPV2ANY | 0x5000)
 
     struct variable1 vacm_sec2group[] = {
-        {SECURITYGROUP, ASN_OCTET_STR, RWRITE, var_vacm_sec2group, 1, {3}},
-        {SECURITYSTORAGE, ASN_INTEGER, RWRITE, var_vacm_sec2group, 1, {4}},
-        {SECURITYSTATUS, ASN_INTEGER, RWRITE, var_vacm_sec2group, 1, {5}},
+        {SECURITYGROUP, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+         var_vacm_sec2group, 1, {3}},
+        {SECURITYSTORAGE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_vacm_sec2group, 1, {4}},
+        {SECURITYSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_vacm_sec2group, 1, {5}},
     };
 
     struct variable1 vacm_access[] = {
-        {ACCESSMATCH, ASN_INTEGER, RWRITE, var_vacm_access, 1, {4}},
-        {ACCESSREAD, ASN_OCTET_STR, RWRITE, var_vacm_access, 1, {5}},
-        {ACCESSWRITE, ASN_OCTET_STR, RWRITE, var_vacm_access, 1, {6}},
-        {ACCESSNOTIFY, ASN_OCTET_STR, RWRITE, var_vacm_access, 1, {7}},
-        {ACCESSSTORAGE, ASN_INTEGER, RWRITE, var_vacm_access, 1, {8}},
-        {ACCESSSTATUS, ASN_INTEGER, RWRITE, var_vacm_access, 1, {9}},
+        {ACCESSMATCH, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_vacm_access, 1, {4}},
+        {ACCESSREAD, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+         var_vacm_access, 1, {5}},
+        {ACCESSWRITE, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+         var_vacm_access, 1, {6}},
+        {ACCESSNOTIFY, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+         var_vacm_access, 1, {7}},
+        {ACCESSSTORAGE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_vacm_access, 1, {8}},
+        {ACCESSSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_vacm_access, 1, {9}},
     };
 
     struct variable3 vacm_view[] = {
-        {VACMVIEWSPINLOCK, ASN_INTEGER, RWRITE, var_vacm_view, 1, {1}},
-        {VIEWMASK, ASN_OCTET_STR, RWRITE, var_vacm_view, 3, {2, 1, 3}},
-        {VIEWTYPE, ASN_INTEGER, RWRITE, var_vacm_view, 3, {2, 1, 4}},
-        {VIEWSTORAGE, ASN_INTEGER, RWRITE, var_vacm_view, 3, {2, 1, 5}},
-        {VIEWSTATUS, ASN_INTEGER, RWRITE, var_vacm_view, 3, {2, 1, 6}},
+        {VACMVIEWSPINLOCK, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_vacm_view, 1, {1}},
+        {VIEWMASK, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+         var_vacm_view, 3, {2, 1, 3}},
+        {VIEWTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_vacm_view, 3, {2, 1, 4}},
+        {VIEWSTORAGE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_vacm_view, 3, {2, 1, 5}},
+        {VIEWSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_vacm_view, 3, {2, 1, 6}},
     };
 
     /*
@@ -126,11 +130,7 @@
                  vacm_access_oid);
     REGISTER_MIB("mibII/vacm:view", vacm_view, variable3, vacm_view_oid);
 
-#ifdef USING_MIBII_SYSORTABLE_MODULE
-    register_sysORTable(reg, 10,
-                        "View-based Access Control Model for SNMP.");
-#endif
-
+    REGISTER_SYSOR_ENTRY(reg, "View-based Access Control Model for SNMP.");
 }
 
 
@@ -144,7 +144,7 @@
 {
     struct vacm_groupEntry *gp;
     oid            *groupSubtree;
-    int             groupSubtreeLen;
+    ssize_t         groupSubtreeLen;
     int             secmodel;
     char            secname[VACMSTRINGLEN], *cp;
 
@@ -156,6 +156,7 @@
      */
 
     switch (vp->magic) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
     case SECURITYGROUP:
         *write_method = write_vacmGroupName;
         break;
@@ -165,10 +166,13 @@
     case SECURITYSTATUS:
         *write_method = write_vacmSecurityToGroupStatus;
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
     default:
         *write_method = NULL;
     }
 
+	*var_len = 0; /* assume 0 length until found */
+
     if (memcmp(name, vp->name, sizeof(oid) * vp->namelen) != 0) {
         memcpy(name, vp->name, sizeof(oid) * vp->namelen);
         *length = vp->namelen;
@@ -181,13 +185,13 @@
         groupSubtree = name + 13;
         groupSubtreeLen = *length - 13;
         if ( name[12] != groupSubtreeLen )
-            return 0;		/* Either extra subids, or an incomplete string */
+            return NULL;	/* Either extra subids, or an incomplete string */
         cp = secname;
         while (groupSubtreeLen-- > 0) {
             if (*groupSubtree > 255)
-                return 0;       /* illegal value */
+                return NULL;    /* illegal value */
             if (cp - secname > VACM_MAX_STRING)
-                return 0;
+                return NULL;
             *cp++ = (char) *groupSubtree++;
         }
         *cp = 0;
@@ -200,9 +204,9 @@
         cp = secname;
         while (groupSubtreeLen-- > 0) {
             if (*groupSubtree > 255)
-                return 0;       /* illegal value */
+                return NULL;    /* illegal value */
             if (cp - secname > VACM_MAX_STRING)
-                return 0;
+                return NULL;
             *cp++ = (char) *groupSubtree++;
         }
         *cp = 0;
@@ -252,6 +256,7 @@
     default:
         break;
     }
+
     return NULL;
 }
 
@@ -278,6 +283,7 @@
      */
 
     switch (vp->magic) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
     case ACCESSMATCH:
         *write_method = write_vacmAccessContextMatch;
         break;
@@ -296,10 +302,13 @@
     case ACCESSSTATUS:
         *write_method = write_vacmAccessStatus;
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
     default:
         *write_method = NULL;
     }
 
+	*var_len = 0; /* assume 0 length until found */
+
     if (memcmp(name, vp->name, sizeof(oid) * vp->namelen) != 0) {
         memcpy(name, vp->name, sizeof(oid) * vp->namelen);
         *length = vp->namelen;
@@ -315,11 +324,11 @@
         op = name + 11;
         len = *op++;
         if (len > VACM_MAX_STRING)
-            return 0;
+            return NULL;
         cp = groupName;
         while (len-- > 0) {
             if (*op > 255)
-                return 0;       /* illegal value */
+                return NULL;    /* illegal value */
             *cp++ = (char) *op++;
         }
         *cp = 0;
@@ -329,11 +338,11 @@
          */
         len = *op++;
         if (len > VACM_MAX_STRING)
-            return 0;
+            return NULL;
         cp = contextPrefix;
         while (len-- > 0) {
             if (*op > 255)
-                return 0;       /* illegal value */
+                return NULL;    /* illegal value */
             *cp++ = (char) *op++;
         }
         *cp = 0;
@@ -361,11 +370,11 @@
         } else {
             len = *op;
             if (len > VACM_MAX_STRING)
-                return 0;
+                return NULL;
             cp = groupName;
             for (i = 0; i <= len; i++) {
                 if (*op > 255) {
-                    return 0;   /* illegal value */
+                    return NULL;   /* illegal value */
                 }
                 *cp++ = (char) *op++;
             }
@@ -375,11 +384,11 @@
         } else {
             len = *op;
             if (len > VACM_MAX_STRING)
-                return 0;
+                return NULL;
             cp = contextPrefix;
             for (i = 0; i <= len; i++) {
                 if (*op > 255) {
-                    return 0;   /* illegal value */
+                    return NULL;   /* illegal value */
                 }
                 *cp++ = (char) *op++;
             }
@@ -469,6 +478,7 @@
         long_return = gp->status;
         return (u_char *) & long_return;
     }
+
     return NULL;
 }
 
@@ -495,6 +505,7 @@
      */
 
     switch (vp->magic) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
     case VIEWMASK:
         *write_method = write_vacmViewMask;
         break;
@@ -507,11 +518,13 @@
     case VIEWSTATUS:
         *write_method = write_vacmViewStatus;
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
     default:
         *write_method = NULL;
     }
 
     *var_len = sizeof(long_return);
+
     if (vp->magic != VACMVIEWSPINLOCK) {
         if (memcmp(name, vp->name, sizeof(oid) * vp->namelen) != 0) {
             memcpy(name, vp->name, sizeof(oid) * vp->namelen);
@@ -528,11 +541,11 @@
             op = name + 12;
             len = *op++;
             if (len > VACM_MAX_STRING)
-                return 0;
+                return NULL;
             cp = viewName;
             while (len-- > 0) {
                 if (*op > 255)
-                    return 0;
+                    return NULL;
                 *cp++ = (char) *op++;
             }
             *cp = 0;
@@ -543,7 +556,7 @@
             subtree[0] = len = *op++;
             subtreeLen = 1;
             if (len > MAX_OID_LEN)
-                return 0;
+                return NULL;
             if ( (op+len) != (name + *length) )
                 return NULL;     /* Declared length doesn't match what we actually got */
             op1 = &(subtree[1]);
@@ -566,11 +579,11 @@
             } else {
                 len = *op;
                 if (len > VACM_MAX_STRING)
-                    return 0;
+                    return NULL;
                 cp = viewName;
                 for (i = 0; i <= len && op < name + *length; i++) {
                     if (*op > 255) {
-                        return 0;
+                        return NULL;
                     }
                     *cp++ = (char) *op++;
                 }
@@ -623,7 +636,9 @@
 
     switch (vp->magic) {
     case VACMVIEWSPINLOCK:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_vacmViewSpinLock;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         long_return = vacmViewSpinLock;
         return (u_char *) & long_return;
 
@@ -651,34 +666,11 @@
         long_return = gp->viewStatus;
         return (u_char *) & long_return;
     }
+
     return NULL;
 }
 
-oid            *
-sec2group_generate_OID(oid * prefix, size_t prefixLen,
-                       struct vacm_groupEntry * geptr, size_t * length)
-{
-    oid            *indexOid;
-    int             i, securityNameLen;
-
-    securityNameLen = strlen(geptr->securityName);
-
-    *length = 2 + securityNameLen + prefixLen;
-    indexOid = (oid *) malloc(*length * sizeof(oid));
-    if (indexOid) {
-        memmove(indexOid, prefix, prefixLen * sizeof(oid));
-
-        indexOid[prefixLen] = geptr->securityModel;
-
-        indexOid[prefixLen + 1] = securityNameLen;
-        for (i = 0; i < securityNameLen; i++)
-            indexOid[prefixLen + 2 + i] = (oid) geptr->securityName[i];
-
-    }
-    return indexOid;
-
-}
-
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
 int
 sec2group_parse_oid(oid * oidIndex, size_t oidLen,
                     int *model, unsigned char **name, size_t * nameLen)
@@ -981,40 +973,6 @@
     return SNMP_ERR_NOERROR;
 }
 
-oid            *
-access_generate_OID(oid * prefix, size_t prefixLen,
-                    struct vacm_accessEntry * aptr, size_t * length)
-{
-    oid            *indexOid;
-    int             i, groupNameLen, contextPrefixLen;
-
-    groupNameLen = strlen(aptr->groupName);
-    contextPrefixLen = strlen(aptr->contextPrefix);
-
-    *length = 4 + groupNameLen + contextPrefixLen + prefixLen;
-    indexOid = (oid *) malloc(*length * sizeof(oid));
-    if (indexOid) {
-        memmove(indexOid, prefix, prefixLen * sizeof(oid));
-
-        indexOid[prefixLen] = groupNameLen;
-        for (i = 0; i < groupNameLen; i++)
-            indexOid[groupNameLen + 1 + i] = (oid) aptr->groupName[i];
-
-        indexOid[prefixLen + groupNameLen + 1] = contextPrefixLen;
-        for (i = 0; i < contextPrefixLen; i++)
-            indexOid[prefixLen + groupNameLen + 2 + i] =
-                (oid) aptr->contextPrefix[i];
-
-        indexOid[prefixLen + groupNameLen + contextPrefixLen + 3] =
-            aptr->securityModel;
-        indexOid[prefixLen + groupNameLen + contextPrefixLen + 4] =
-            aptr->securityLevel;
-
-    }
-    return indexOid;
-
-}
-
 int
 access_parse_oid(oid * oidIndex, size_t oidLen,
                  unsigned char **groupName, size_t * groupNameLen,
@@ -1550,35 +1508,6 @@
     return 0;
 }
 
-oid            *
-view_generate_OID(oid * prefix, size_t prefixLen,
-                  struct vacm_viewEntry * vptr, size_t * length)
-{
-    oid            *indexOid;
-    int             i, viewNameLen, viewSubtreeLen;
-
-    viewNameLen = strlen(vptr->viewName);
-    viewSubtreeLen = vptr->viewSubtreeLen;
-
-    *length = 2 + viewNameLen + viewSubtreeLen + prefixLen;
-    indexOid = (oid *) malloc(*length * sizeof(oid));
-    if (indexOid) {
-        memmove(indexOid, prefix, prefixLen * sizeof(oid));
-
-        indexOid[prefixLen] = viewNameLen;
-        for (i = 0; i < viewNameLen; i++)
-            indexOid[viewNameLen + 1 + i] = (oid) vptr->viewName[i];
-
-        indexOid[prefixLen + viewNameLen + 1] = viewSubtreeLen;
-        for (i = 0; i < viewSubtreeLen; i++)
-            indexOid[prefixLen + viewNameLen + 2 + i] =
-                (oid) vptr->viewSubtree[i];
-
-    }
-    return indexOid;
-
-}
-
 struct vacm_viewEntry *
 view_parse_viewEntry(oid * name, size_t name_len)
 {
@@ -1911,3 +1840,4 @@
     }
     return SNMP_ERR_NOERROR;
 }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
diff --git a/agent/mibgroup/mibII/vacm_vars.h b/agent/mibgroup/mibII/vacm_vars.h
index 8093157..471f759 100644
--- a/agent/mibgroup/mibII/vacm_vars.h
+++ b/agent/mibgroup/mibII/vacm_vars.h
@@ -7,7 +7,7 @@
 
 #include <net-snmp/library/vacm.h>
 
-config_require(util_funcs)
+config_require(util_funcs/header_generic)
 config_require(mibII/vacm_context)
 config_require(mibII/vacm_conf)
 config_add_mib(SNMP-VIEW-BASED-ACM-MIB)
@@ -19,6 +19,7 @@
      extern FindVarMethod var_vacm_access;
      extern FindVarMethod var_vacm_view;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
      WriteMethod     write_vacmGroupName;
      WriteMethod     write_vacmSecurityToGroupStatus;
      WriteMethod     write_vacmSecurityToGroupStorageType;
@@ -36,7 +37,6 @@
      WriteMethod     write_vacmViewStorageType;
      WriteMethod     write_vacmViewType;
 
-
      oid            *access_generate_OID(oid * prefix, size_t prefixLen,
                                          struct vacm_accessEntry *aptr,
                                          size_t * length);
@@ -67,7 +67,7 @@
                                     size_t * subtreeLen);
      struct vacm_viewEntry *view_parse_viewEntry(oid * name,
                                                  size_t name_len);
-
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
 
 
 #define OID_SNMPVACMMIB		SNMP_OID_SNMPMODULES, 16
diff --git a/agent/mibgroup/mibII/var_route.c b/agent/mibgroup/mibII/var_route.c
index 5cef1cf..72a503f 100644
--- a/agent/mibgroup/mibII/var_route.c
+++ b/agent/mibgroup/mibII/var_route.c
@@ -46,6 +46,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include "route_headers.h"
 #define CACHE_TIME (120)        /* Seconds */
@@ -63,6 +64,8 @@
 #include "struct.h"
 #include "util_funcs.h"
 
+netsnmp_feature_child_of(get_routes, libnetsnmpmibs)
+
 #ifndef  MIN
 #define  MIN(a,b)                     (((a) < (b)) ? (a) : (b))
 #endif
@@ -313,17 +316,19 @@
 static mib_ipRouteEnt *rt = (mib_ipRouteEnt *) 0;
 static void     Route_Scan_Reload(void);
 #elif !defined(solaris2)
-static RTENTRY **rthead = 0;
+static RTENTRY **rthead = NULL;
 static int      rtsize = 0, rtallocate = 0;
 
 static void     Route_Scan_Reload(void);
 
+#ifndef NETSNMP_FEATURE_REMOVE_GET_ROUTES
 RTENTRY **netsnmp_get_routes(size_t *size) {
     Route_Scan_Reload();
     if (size)
         *size = rtsize;
     return rthead;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_GET_ROUTES */
 #endif                          /* hpux11 */
 
 #if !(defined(linux) || defined(solaris2) || defined(hpux11)) && defined(RTHOST_SYMBOL) && defined(RTNET_SYMBOL)
@@ -432,7 +437,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;
@@ -762,6 +768,10 @@
         if (getMibstat(MIB_IP_ROUTE, &entry, sizeof(mib2_ipRouteEntry_t),
                        req_type, &IP_Cmp_Route, &Nextentry) != 0)
             break;
+#ifdef HAVE_DEFINED_IRE_CACHE
+        if(entry.ipRouteInfo.re_ire_type&IRE_CACHE)
+            continue;
+#endif /* HAVE_DEFINED_IRE_CACHE */
         COPY_IPADDR(cp, (u_char *) & entry.ipRouteDest, op,
                     current + IP_ROUTEADDR_OFF);
         if (exact) {
@@ -865,7 +875,7 @@
 static int      qsort_compare(const void *, const void *);
 #endif
 
-#if defined(RTENTRY_4_4) || defined(RTENTRY_RT_NEXT) || defined(hpux11)
+#if defined(RTENTRY_4_4) || defined(RTENTRY_RT_NEXT) || defined (hpux11)
 
 #if defined(RTENTRY_4_4) && !defined(hpux11)
 void
@@ -875,7 +885,7 @@
     RTENTRY         rt;
     struct ifnet    ifnet;
     char            name[16], temp[16];
-#if !STRUCT_IFNET_HAS_IF_XNAME
+#if !HAVE_STRUCT_IFNET_IF_XNAME
     register char  *cp;
 #endif
 
@@ -908,7 +918,7 @@
                 DEBUGMSGTL(("mibII/var_route", "klookup failed\n"));
                 return;
             }
-#if STRUCT_IFNET_HAS_IF_XNAME
+#if HAVE_STRUCT_IFNET_IF_XNAME
 #if defined(netbsd1) || defined(openbsd2)
             strlcpy(name, ifnet.if_xname, sizeof(name));
 #else
@@ -919,6 +929,10 @@
 #endif
             name[sizeof(name) - 1] = '\0';
 #else
+#ifdef NETSNMP_FEATURE_CHECKIN
+            /* this exists here just so we don't copy ifdef logic elsewhere */
+            netsnmp_feature_require(string_append_int);
+#endif
             if (!NETSNMP_KLOOKUP(ifnet.if_name, name, sizeof name)) {
                 DEBUGMSGTL(("mibII/var_route", "klookup failed\n"));
                 return;
@@ -927,6 +941,9 @@
             cp = (char *) strchr(name, '\0');
             string_append_int(cp, ifnet.if_unit);
 #endif
+#ifdef NETSNMP_FEATURE_CHECKIN
+            netsnmp_feature_require(interface_legacy)
+#endif /* NETSNMP_FEATURE_CHECKIN */
             Interface_Scan_Init();
             rt.rt_unit = 0;
             while (Interface_Scan_Next
@@ -1031,10 +1048,10 @@
     char            name[16], temp[16];
     int             hashsize;
 #endif
-    static int      Time_Of_Last_Reload = 0;
+    static time_t   Time_Of_Last_Reload;
     struct timeval  now;
 
-    gettimeofday(&now, (struct timezone *) 0);
+    netsnmp_get_monotonic_clock(&now);
     if (Time_Of_Last_Reload + CACHE_TIME > now.tv_sec)
         return;
     Time_Of_Last_Reload = now.tv_sec;
@@ -1076,6 +1093,11 @@
     }
 
 #else                           /* rtentry is a BSD 4.3 compat */
+#ifdef NETSNMP_FEATURE_CHECKIN
+    /* this exists here just so we don't copy ifdef logic elsewhere */
+    netsnmp_feature_require(string_append_int);
+    netsnmp_feature_require(interface_legacy)
+#endif
     for (table = 0; table < NUM_ROUTE_SYMBOLS; table++) {
         auto_nlist(RTHASHSIZE_SYMBOL, (char *) &hashsize,
                    sizeof(hashsize));
@@ -1160,6 +1182,8 @@
 #else
 
 #if HAVE_SYS_MBUF_H
+netsnmp_feature_require(string_append_int)
+netsnmp_feature_require(interface_legacy)
 static void
 Route_Scan_Reload(void)
 {
@@ -1170,11 +1194,11 @@
     int             i, table;
     register char  *cp;
     char            name[16], temp[16];
-    static int      Time_Of_Last_Reload = 0;
+    static time_t   Time_Of_Last_Reload;
     struct timeval  now;
     int             hashsize;
 
-    gettimeofday(&now, (struct timezone *) 0);
+    netsnmp_get_monotonic_clock(&now);
     if (Time_Of_Last_Reload + CACHE_TIME > now.tv_sec)
         return;
     Time_Of_Last_Reload = now.tv_sec;
@@ -1286,10 +1310,10 @@
     char            line[256];
     struct rtentry *rt;
     char            name[16];
-    static int      Time_Of_Last_Reload = 0;
+    static time_t   Time_Of_Last_Reload;
     struct timeval  now;
 
-    gettimeofday(&now, (struct timezone *) 0);
+    netsnmp_get_monotonic_clock(&now);
     if (Time_Of_Last_Reload + CACHE_TIME > now.tv_sec)
         return;
     Time_Of_Last_Reload = now.tv_sec;
@@ -1313,15 +1337,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));
@@ -1332,18 +1356,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));
@@ -1442,7 +1463,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
@@ -1466,7 +1487,7 @@
      * 1.3.6.1.2.1.4.21.1.?.A.B.C.D,  where A.B.C.D is IP address.
      * IPADDR starts at offset 10.
      */
-    register int    Save_Valid, result, RtIndex;
+    register int    Save_Valid, result, RtIndex = 0;
     static int      saveNameLen = 0, saveExact = 0, saveRtIndex =
         0, rtsize = 0;
     static oid      saveName[MAX_OID_LEN], Current[MAX_OID_LEN];
@@ -1476,9 +1497,7 @@
     DWORD           dwActualSize = 0;
     static PMIB_IPFORWARDTABLE pIpRtrTable = NULL;
     struct timeval  now;
-    static long     Time_Of_Last_Reload = 0;
-    u_char          dest_addr[4];
-    MIB_IPFORWARDROW temp_row;
+    static time_t    Time_Of_Last_Reload;
     static in_addr_t addr_ret;
 
 
@@ -1495,7 +1514,7 @@
          */
         route_row = (PMIB_IPFORWARDROW) malloc(sizeof(MIB_IPFORWARDROW));
     }
-    gettimeofday(&now, (struct timezone *) 0);
+    netsnmp_get_monotonic_clock(&now);
     if ((rtsize <= 1) || (Time_Of_Last_Reload + 5 <= now.tv_sec))
         Save_Valid = 0;
     else
@@ -1573,12 +1592,16 @@
              * for creation of new row, only ipNetToMediaTable case is considered 
              */
             if (*length == 14) {
+                u_char           dest_addr[4];
+                MIB_IPFORWARDROW temp_row;
+
                 create_flag = 1;
                 *write_method = write_rte;
                 dest_addr[0] = (u_char) name[10];
                 dest_addr[1] = (u_char) name[11];
                 dest_addr[2] = (u_char) name[12];
                 dest_addr[3] = (u_char) name[13];
+                memset(&temp_row, 0, sizeof(temp_row));
                 temp_row.dwForwardDest = *((DWORD *) dest_addr);
                 temp_row.dwForwardPolicy = 0;
                 temp_row.dwForwardProto = MIB_IPPROTO_NETMGMT;
diff --git a/agent/mibgroup/mibII/var_route.h b/agent/mibgroup/mibII/var_route.h
index 91ecee8..7862c43 100644
--- a/agent/mibgroup/mibII/var_route.h
+++ b/agent/mibgroup/mibII/var_route.h
@@ -5,7 +5,7 @@
 #ifndef _MIBGROUP_VAR_ROUTE_H
 #define _MIBGROUP_VAR_ROUTE_H
 
-config_require(mibII/ip util_funcs)
+config_require(mibII/ip)
 config_arch_require(solaris2, kernel_sunos5)
 
      void            init_var_route(void);
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/misc/ipfwacc.c b/agent/mibgroup/misc/ipfwacc.c
index 663a5e5..cca9871 100644
--- a/agent/mibgroup/misc/ipfwacc.c
+++ b/agent/mibgroup/misc/ipfwacc.c
@@ -22,7 +22,7 @@
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
-#include "util_funcs.h"
+#include "util_funcs/header_simple_table.h"
 #include "ipfwacc.h"
 
 /*
@@ -185,40 +185,58 @@
  */
 
 struct variable2 ipfwacc_variables[] = {
-    {IPFWACCINDEX, ASN_INTEGER, RONLY, var_ipfwacc, 1, {IPFWACCINDEX}},
-    {IPFWACCSRCADDR, ASN_IPADDRESS, RONLY, var_ipfwacc, 1,
-     {IPFWACCSRCADDR}},
-    {IPFWACCSRCNM, ASN_IPADDRESS, RONLY, var_ipfwacc, 1, {IPFWACCSRCNM}},
-    {IPFWACCDSTADDR, ASN_IPADDRESS, RONLY, var_ipfwacc, 1,
-     {IPFWACCDSTADDR}},
-    {IPFWACCDSTNM, ASN_IPADDRESS, RONLY, var_ipfwacc, 1, {IPFWACCDSTNM}},
-    {IPFWACCVIANAME, ASN_OCTET_STR, RONLY, var_ipfwacc, 1,
-     {IPFWACCVIANAME}},
-    {IPFWACCVIAADDR, ASN_IPADDRESS, RONLY, var_ipfwacc, 1,
-     {IPFWACCVIAADDR}},
-    {IPFWACCPROTO, ASN_INTEGER, RONLY, var_ipfwacc, 1, {IPFWACCPROTO}},
-    {IPFWACCBIDIR, ASN_INTEGER, RONLY, var_ipfwacc, 1, {IPFWACCBIDIR}},
-    {IPFWACCDIR, ASN_INTEGER, RONLY, var_ipfwacc, 1, {IPFWACCDIR}},
-    {IPFWACCBYTES, ASN_COUNTER, RONLY, var_ipfwacc, 1, {IPFWACCBYTES}},
-    {IPFWACCPACKETS, ASN_COUNTER, RONLY, var_ipfwacc, 1, {IPFWACCPACKETS}},
-    {IPFWACCNSRCPRTS, ASN_INTEGER, RONLY, var_ipfwacc, 1,
-     {IPFWACCNSRCPRTS}},
-    {IPFWACCNDSTPRTS, ASN_INTEGER, RONLY, var_ipfwacc, 1,
-     {IPFWACCNDSTPRTS}},
-    {IPFWACCSRCISRNG, ASN_INTEGER, RONLY, var_ipfwacc, 1,
-     {IPFWACCSRCISRNG}},
-    {IPFWACCDSTISRNG, ASN_INTEGER, RONLY, var_ipfwacc, 1,
-     {IPFWACCDSTISRNG}},
-    {IPFWACCPORT1, ASN_INTEGER, RONLY, var_ipfwacc, 1, {IPFWACCPORT1}},
-    {IPFWACCPORT2, ASN_INTEGER, RONLY, var_ipfwacc, 1, {IPFWACCPORT2}},
-    {IPFWACCPORT3, ASN_INTEGER, RONLY, var_ipfwacc, 1, {IPFWACCPORT3}},
-    {IPFWACCPORT4, ASN_INTEGER, RONLY, var_ipfwacc, 1, {IPFWACCPORT4}},
-    {IPFWACCPORT5, ASN_INTEGER, RONLY, var_ipfwacc, 1, {IPFWACCPORT5}},
-    {IPFWACCPORT6, ASN_INTEGER, RONLY, var_ipfwacc, 1, {IPFWACCPORT6}},
-    {IPFWACCPORT7, ASN_INTEGER, RONLY, var_ipfwacc, 1, {IPFWACCPORT7}},
-    {IPFWACCPORT8, ASN_INTEGER, RONLY, var_ipfwacc, 1, {IPFWACCPORT8}},
-    {IPFWACCPORT9, ASN_INTEGER, RONLY, var_ipfwacc, 1, {IPFWACCPORT9}},
-    {IPFWACCPORT10, ASN_INTEGER, RONLY, var_ipfwacc, 1, {IPFWACCPORT10}}
+    {IPFWACCINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCINDEX}},
+    {IPFWACCSRCADDR, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCSRCADDR}},
+    {IPFWACCSRCNM, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCSRCNM}},
+    {IPFWACCDSTADDR, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCDSTADDR}},
+    {IPFWACCDSTNM, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCDSTNM}},
+    {IPFWACCVIANAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCVIANAME}},
+    {IPFWACCVIAADDR, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCVIAADDR}},
+    {IPFWACCPROTO, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCPROTO}},
+    {IPFWACCBIDIR, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCBIDIR}},
+    {IPFWACCDIR, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCDIR}},
+    {IPFWACCBYTES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCBYTES}},
+    {IPFWACCPACKETS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCPACKETS}},
+    {IPFWACCNSRCPRTS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCNSRCPRTS}},
+    {IPFWACCNDSTPRTS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCNDSTPRTS}},
+    {IPFWACCSRCISRNG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCSRCISRNG}},
+    {IPFWACCDSTISRNG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCDSTISRNG}},
+    {IPFWACCPORT1, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCPORT1}},
+    {IPFWACCPORT2, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCPORT2}},
+    {IPFWACCPORT3, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCPORT3}},
+    {IPFWACCPORT4, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCPORT4}},
+    {IPFWACCPORT5, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCPORT5}},
+    {IPFWACCPORT6, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCPORT6}},
+    {IPFWACCPORT7, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCPORT7}},
+    {IPFWACCPORT8, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCPORT8}},
+    {IPFWACCPORT9, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCPORT9}},
+    {IPFWACCPORT10, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ipfwacc, 1, {IPFWACCPORT10}}
 };
 
 oid             ipfwacc_variables_oid[] =
diff --git a/agent/mibgroup/misc/ipfwacc.h b/agent/mibgroup/misc/ipfwacc.h
index d9b6e61..639c739 100644
--- a/agent/mibgroup/misc/ipfwacc.h
+++ b/agent/mibgroup/misc/ipfwacc.h
@@ -6,10 +6,10 @@
 #define _MIBGROUP_IPFWACC_H
 
 /*
- * we use checkmib from the util_funcs module 
+ * we use header_simple_table from the util_funcs module
  */
 
-config_require(util_funcs)
+config_require(util_funcs/header_simple_table)
 
     /*
      * add the mib we implement to the list of default mibs to load 
diff --git a/agent/mibgroup/notification-log-mib/notification_log.c b/agent/mibgroup/notification-log-mib/notification_log.c
index 9b1ff51..a12a338 100644
--- a/agent/mibgroup/notification-log-mib/notification_log.c
+++ b/agent/mibgroup/notification-log-mib/notification_log.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #if HAVE_NETINET_IN_H
@@ -16,9 +17,15 @@
 #include <net-snmp/agent/table.h>
 #include <net-snmp/agent/table_data.h>
 #include <net-snmp/agent/table_dataset.h>
-#include "mibgroup/mibII/sysORTable.h"
+#include "net-snmp/agent/sysORTable.h"
 #include "notification_log.h"
 
+netsnmp_feature_require(register_ulong_instance_context)
+netsnmp_feature_require(register_read_only_counter32_instance_context)
+netsnmp_feature_require(delete_table_data_set)
+netsnmp_feature_require(table_dataset)
+netsnmp_feature_require(date_n_time)
+
 /*
  * column number definitions for table nlmLogTable
  */
@@ -143,11 +150,11 @@
      */
     count = netsnmp_table_set_num_rows(nlmLogTable);
     DEBUGMSGTL(("notification_log",
-                "logged notifications %d; max %d\n",
+                "logged notifications %lu; max %lu\n",
                     count, max_logged));
     if (count > max_logged) {
         count = count - max_logged;
-        DEBUGMSGTL(("notification_log", "removing %d extra notifications\n",
+        DEBUGMSGTL(("notification_log", "removing %lu extra notifications\n",
                     count));
         netsnmp_notif_log_remove_oldest(count);
     }
@@ -165,13 +172,13 @@
         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;
     }
 
     if (count) {
-        DEBUGMSGTL(("notification_log", "removing %d expired notifications\n",
+        DEBUGMSGTL(("notification_log", "removing %lu expired notifications\n",
                     count));
         netsnmp_notif_log_remove_oldest(count);
     }
@@ -467,8 +474,10 @@
      * configuration variables get set to a value and thus
      * notifications must be possibly deleted from our archives.
      */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     if (reqinfo->mode == MODE_SET_COMMIT)
         check_log_size(0, NULL);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     return SNMP_ERR_NOERROR;
 }
 
@@ -562,7 +571,7 @@
     netsnmp_delete_table_data_set(nlmLogTable);
     nlmLogTable = NULL;
 
-    unregister_sysORTable(nlm_module_oid, OID_LENGTH(nlm_module_oid));
+    UNREGISTER_SYSOR_ENTRY(nlm_module_oid);
 }
 
 void
diff --git a/agent/mibgroup/notification/snmpNotifyFilterProfileTable.c b/agent/mibgroup/notification/snmpNotifyFilterProfileTable.c
index 8973546..e9b11d3 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
@@ -26,12 +23,16 @@
 /*
  * minimal include directives 
  */
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 #include "header_complex.h"
 #include "snmpNotifyFilterProfileTable.h"
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(header_complex_find_entry)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * snmpNotifyFilterProfileTable_variables_oid:
@@ -57,13 +58,13 @@
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
      */
 #define   SNMPNOTIFYFILTERPROFILENAME  3
-    {SNMPNOTIFYFILTERPROFILENAME, ASN_OCTET_STR, RWRITE,
+    {SNMPNOTIFYFILTERPROFILENAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_snmpNotifyFilterProfileTable, 2, {1, 1}},
 #define   SNMPNOTIFYFILTERPROFILESTORTYPE  4
-    {SNMPNOTIFYFILTERPROFILESTORTYPE, ASN_INTEGER, RWRITE,
+    {SNMPNOTIFYFILTERPROFILESTORTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_snmpNotifyFilterProfileTable, 2, {1, 2}},
 #define   SNMPNOTIFYFILTERPROFILEROWSTATUS  5
-    {SNMPNOTIFYFILTERPROFILEROWSTATUS, ASN_INTEGER, RWRITE,
+    {SNMPNOTIFYFILTERPROFILEROWSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_snmpNotifyFilterProfileTable, 2, {1, 3}},
 
 };
@@ -134,7 +135,7 @@
                                  *thedata)
 {
     netsnmp_variable_list *vars = NULL;
-
+    int retVal;
 
     DEBUGMSGTL(("snmpNotifyFilterProfileTable", "adding data...  "));
     /*
@@ -146,13 +147,17 @@
                               (u_char *) thedata->snmpTargetParamsName,
                               thedata->snmpTargetParamsNameLen);
 
-    header_complex_add_data(&snmpNotifyFilterProfileTableStorage, vars,
-                            thedata);
-    DEBUGMSGTL(("snmpNotifyFilterProfileTable", "registered an entry\n"));
+    if (header_complex_maybe_add_data(&snmpNotifyFilterProfileTableStorage, vars,
+                                      thedata, 1) != NULL){
+       DEBUGMSGTL(("snmpNotifyFilterProfileTable", "registered an entry\n"));
+       retVal = SNMPERR_SUCCESS;
+    }else{
+       retVal = SNMPERR_GENERR;  	
+    }
 
 
     DEBUGMSGTL(("snmpNotifyFilterProfileTable", "done.\n"));
-    return SNMPERR_SUCCESS;
+    return retVal;
 }
 
 
@@ -203,7 +208,11 @@
                               &StorageTmp->
                               snmpNotifyFilterProfileRowStatus, &tmpint);
 
-    snmpNotifyFilterProfileTable_add(StorageTmp);
+    if (snmpNotifyFilterProfileTable_add(StorageTmp) != SNMPERR_SUCCESS){
+        SNMP_FREE(StorageTmp->snmpTargetParamsName);
+        SNMP_FREE(StorageTmp->snmpNotifyFilterProfileName);
+        SNMP_FREE(StorageTmp);
+    }
 
     DEBUGMSGTL(("snmpNotifyFilterProfileTable", "done.\n"));
 }
@@ -221,7 +230,6 @@
 {
     char            line[SNMP_MAXBUF];
     char           *cptr;
-    size_t          tmpint;
     struct snmpNotifyFilterProfileTable_data *StorageTmp;
     struct header_complex_index *hcindex;
 
@@ -255,12 +263,12 @@
                 read_config_store_data(ASN_INTEGER, cptr,
                                        &StorageTmp->
                                        snmpNotifyFilterProfileStorType,
-                                       &tmpint);
+                                       NULL);
             cptr =
                 read_config_store_data(ASN_INTEGER, cptr,
                                        &StorageTmp->
                                        snmpNotifyFilterProfileRowStatus,
-                                       &tmpint);
+                                       NULL);
 
             snmpd_store_config(line);
         }
@@ -304,6 +312,7 @@
     }
 
     switch (vp->magic) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMPNOTIFYFILTERPROFILENAME:
         *write_method = write_snmpNotifyFilterProfileName;
         break;
@@ -315,7 +324,7 @@
     case SNMPNOTIFYFILTERPROFILEROWSTATUS:
         *write_method = write_snmpNotifyFilterProfileRowStatus;
         break;
-
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     default:
         *write_method = NULL;
     }
@@ -345,6 +354,7 @@
     default:
         ERROR_MSG("");
     }
+
     return NULL;
 }
 
@@ -352,6 +362,8 @@
 
 static struct snmpNotifyFilterProfileTable_data *StorageNew;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
+
 int
 write_snmpNotifyFilterProfileName(int action,
                                   u_char * var_val,
@@ -402,7 +414,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 +454,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 +547,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;
@@ -649,6 +662,8 @@
 
             StorageNew =
                 SNMP_MALLOC_STRUCT(snmpNotifyFilterProfileTable_data);
+            if (StorageNew == NULL)
+                return SNMP_ERR_GENERR;
             StorageNew->snmpTargetParamsName =
                 netsnmp_memdup(vars->val.string, vars->val_len);
             StorageNew->snmpTargetParamsNameLen = vars->val_len;
@@ -785,12 +800,15 @@
                 StorageTmp->snmpNotifyFilterProfileRowStatus = RS_NOTINSERVICE;
             StorageNew = NULL;
         }
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
 }
 
 
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
+
 
 char           *
 get_FilterProfileName(const char *paramName, size_t paramName_len,
diff --git a/agent/mibgroup/notification/snmpNotifyFilterProfileTable.h b/agent/mibgroup/notification/snmpNotifyFilterProfileTable.h
index 9734cbe..616bcdc 100644
--- a/agent/mibgroup/notification/snmpNotifyFilterProfileTable.h
+++ b/agent/mibgroup/notification/snmpNotifyFilterProfileTable.h
@@ -55,9 +55,11 @@
                                                         char *);
      SNMPCallback    store_snmpNotifyFilterProfileTable;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
      WriteMethod     write_snmpNotifyFilterProfileName;
      WriteMethod     write_snmpNotifyFilterProfileStorType;
      WriteMethod     write_snmpNotifyFilterProfileRowStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
      char           *get_FilterProfileName(const char *paramName,
                                            size_t paramName_len,
diff --git a/agent/mibgroup/notification/snmpNotifyTable.c b/agent/mibgroup/notification/snmpNotifyTable.c
index 3d3e401..91adb2f 100644
--- a/agent/mibgroup/notification/snmpNotifyTable.c
+++ b/agent/mibgroup/notification/snmpNotifyTable.c
@@ -8,11 +8,9 @@
  * This should always be included first before anything else 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -38,12 +36,16 @@
 #include <net-snmp/agent/agent_callbacks.h>
 #include <net-snmp/agent/agent_trap.h>
 #include <net-snmp/agent/mib_module_config.h>
-#include "mibgroup/mibII/sysORTable.h"
+#include "net-snmp/agent/sysORTable.h"
 
 #ifdef USING_NOTIFICATION_LOG_MIB_NOTIFICATION_LOG_MODULE
 #   include "notification-log-mib/notification_log.h"
 #endif
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(header_complex_find_entry)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
 SNMPCallback    store_snmpNotifyTable;
 
 /*
@@ -60,11 +62,6 @@
 static oid snmpNotifyFullCompliance[] =
     { SNMP_OID_SNMPMODULES, 13, 3, 1, 3 }; /* SNMP-NOTIFICATION-MIB::snmpNotifyFullCompliance */
 
-void shutdown_snmpNotifyTable(void)
-{
-    unregister_sysORTable(snmpNotifyFullCompliance, OID_LENGTH(snmpNotifyFullCompliance));
-}
-
 
 /*
  * variable2 snmpNotifyTable_variables:
@@ -78,15 +75,17 @@
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
      */
 #define   SNMPNOTIFYTAG         4
-    {SNMPNOTIFYTAG, ASN_OCTET_STR, RWRITE, var_snmpNotifyTable, 2, {1, 2}},
+    {SNMPNOTIFYTAG, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_snmpNotifyTable, 2, {1, 2}},
 #define   SNMPNOTIFYTYPE        5
-    {SNMPNOTIFYTYPE, ASN_INTEGER, RWRITE, var_snmpNotifyTable, 2, {1, 3}},
+    {SNMPNOTIFYTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_snmpNotifyTable, 2, {1, 3}},
 #define   SNMPNOTIFYSTORAGETYPE  6
-    {SNMPNOTIFYSTORAGETYPE, ASN_INTEGER, RWRITE, var_snmpNotifyTable, 2,
-     {1, 4}},
+    {SNMPNOTIFYSTORAGETYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_snmpNotifyTable, 2, {1, 4}},
 #define   SNMPNOTIFYROWSTATUS   7
-    {SNMPNOTIFYROWSTATUS, ASN_INTEGER, RWRITE, var_snmpNotifyTable, 2,
-     {1, 5}},
+    {SNMPNOTIFYROWSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_snmpNotifyTable, 2, {1, 5}},
 
 };
 /*
@@ -110,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);
@@ -219,7 +218,7 @@
     netsnmp_pdu    *template_pdu = (netsnmp_pdu *) serverarg;
     int             count = 0, send = 0;
 
-    DEBUGMSGTL(("send_notifications", "starting: pdu=%x, vars=%x\n",
+    DEBUGMSGTL(("send_notifications", "starting: pdu=%p, vars=%p\n",
                 template_pdu, template_pdu->variables));
 
     for (hptr = snmpNotifyTableStorage; hptr; hptr = hptr->next) {
@@ -286,7 +285,7 @@
     struct targetAddrTable_struct *ptr;
     struct targetParamTable_struct *pptr;
     struct snmpNotifyTable_data *nptr;
-    int             confirm, i;
+    int             confirm, i, bufLen;
     char            buf[SNMP_MAXBUF_SMALL];
     netsnmp_transport *t = NULL;
     struct agent_add_trap_args *args =
@@ -303,8 +302,9 @@
      * XXX: START move target creation to target code 
      */
     for (i = 0; i < MAX_ENTRIES; i++) {
-        sprintf(buf, "internal%d", i);
-        if (get_addrForName(buf) == NULL && get_paramEntry(buf) == NULL)
+        bufLen = sprintf(buf, "internal%d", i);
+        if (get_addrForName2(buf, bufLen) == NULL &&
+            get_paramEntry(buf) == NULL)
             break;
     }
     if (i == MAX_ENTRIES) {
@@ -326,7 +326,8 @@
         return 0;
     }
     ptr = snmpTargetAddrTable_create();
-    ptr->name = strdup(buf);
+    ptr->nameData = netsnmp_memdup(buf, bufLen);
+    ptr->nameLen = bufLen;
     memcpy(ptr->tDomain, t->domain, t->domain_length * sizeof(oid));
     ptr->tDomainLen = t->domain_length;
     ptr->tAddressLen = t->remote_length;
@@ -335,8 +336,8 @@
     ptr->timeout = ss->timeout / 10000;
     ptr->retryCount = ss->retries;
     SNMP_FREE(ptr->tagList);
-    ptr->tagList = strdup(ptr->name);
-    ptr->params = strdup(ptr->name);
+    ptr->tagList = strdup(buf); /* strdup ok since buf contains 'internal%d' */
+    ptr->params = strdup(buf);
     ptr->storageType = ST_READONLY;
     ptr->rowStatus = RS_ACTIVE;
     ptr->sess = ss;
@@ -353,6 +354,10 @@
         pptr->secModel = ss->securityModel;
         pptr->secLevel = ss->securityLevel;
         pptr->secName = (char *) malloc(ss->securityNameLen + 1);
+        if (pptr->secName == NULL) {
+            snmpTargetParamTable_dispose(pptr);
+            return 0;
+        }
         memcpy((void *) pptr->secName, (void *) ss->securityName,
                ss->securityNameLen);
         pptr->secName[ss->securityNameLen] = 0;
@@ -368,6 +373,10 @@
         pptr->secName = NULL;
         if (ss->community && (ss->community_len > 0)) {
             pptr->secName = (char *) malloc(ss->community_len + 1);
+            if (pptr->secName == NULL) {
+                snmpTargetParamTable_dispose(pptr);
+                return 0;
+            }
             memcpy((void *) pptr->secName, (void *) ss->community,
                    ss->community_len);
             pptr->secName[ss->community_len] = 0;
@@ -385,6 +394,8 @@
      * notify table 
      */
     nptr = SNMP_MALLOC_STRUCT(snmpNotifyTable_data);
+    if (nptr == NULL)
+        return 0;
     nptr->snmpNotifyName = strdup(buf);
     nptr->snmpNotifyNameLen = strlen(buf);
     nptr->snmpNotifyTag = strdup(buf);
@@ -411,18 +422,18 @@
                                      void *serverarg, void *clientarg)
 {
     struct header_complex_index *hptr, *nhptr;
-    struct snmpNotifyTable_data *nptr;
 
     for (hptr = snmpNotifyTableStorage; hptr; hptr = nhptr) {
-        nptr = (struct snmpNotifyTable_data *) hptr->data;
+        struct snmpNotifyTable_data *nptr = hptr->data;
         nhptr = hptr->next;
         if (nptr->snmpNotifyStorageType == ST_READONLY) {
             header_complex_extract_entry(&snmpNotifyTableStorage, hptr);
-            SNMP_FREE(nptr->snmpNotifyName);
-            SNMP_FREE(nptr->snmpNotifyTag);
-            SNMP_FREE(nptr);
+            free(nptr->snmpNotifyName);
+            free(nptr->snmpNotifyTag);
+            free(nptr);
         }
     }
+    snmpNotifyTableStorage = NULL;
     return (0);
 }
 
@@ -482,6 +493,37 @@
     DEBUGMSGTL(("snmpNotifyTable", "done.\n"));
 }
 
+void
+shutdown_snmpNotifyTable(void)
+{
+    DEBUGMSGTL(("snmpNotifyTable", "shutting down ... "));
+
+    notifyTable_unregister_notifications(SNMP_CALLBACK_APPLICATION,
+                                         SNMPD_CALLBACK_PRE_UPDATE_CONFIG,
+                                         NULL,
+                                         NULL);
+
+    snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
+                             SNMPD_CALLBACK_PRE_UPDATE_CONFIG,
+                             notifyTable_unregister_notifications, NULL, FALSE);
+    snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
+                             SNMPD_CALLBACK_REGISTER_NOTIFICATIONS,
+                             notifyTable_register_notifications, NULL, FALSE);
+    snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
+                             SNMPD_CALLBACK_SEND_TRAP2, send_notifications,
+                             NULL, FALSE);
+#ifndef DISABLE_SNMPV1
+    snmp_unregister_callback(SNMP_CALLBACK_APPLICATION,
+                             SNMPD_CALLBACK_SEND_TRAP1, send_notifications,
+                             NULL, FALSE);
+#endif
+    snmp_unregister_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA,
+                             store_snmpNotifyTable, NULL, FALSE);
+
+    UNREGISTER_SYSOR_ENTRY(snmpNotifyFullCompliance);
+
+    DEBUGMSGTL(("snmpNotifyTable", "done.\n"));
+}
 
 /*
  * snmpNotifyTable_add(): adds a structure node to our data set 
@@ -490,7 +532,7 @@
 snmpNotifyTable_add(struct snmpNotifyTable_data *thedata)
 {
     netsnmp_variable_list *vars = NULL;
-
+    int retVal;	
 
     DEBUGMSGTL(("snmpNotifyTable", "adding data...  "));
     /*
@@ -503,12 +545,17 @@
 
 
 
-    header_complex_add_data(&snmpNotifyTableStorage, vars, thedata);
-    DEBUGMSGTL(("snmpNotifyTable", "registered an entry\n"));
+    if (header_complex_maybe_add_data(&snmpNotifyTableStorage, vars, thedata, 1)
+        != NULL){
+    	DEBUGMSGTL(("snmpNotifyTable", "registered an entry\n"));
+	retVal = SNMPERR_SUCCESS;
+    }else{
+        retVal = SNMPERR_GENERR; 
+    }	
 
 
     DEBUGMSGTL(("snmpNotifyTable", "done.\n"));
-    return SNMPERR_SUCCESS;
+    return retVal;
 }
 
 
@@ -559,15 +606,21 @@
     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);
+    if (snmpNotifyTable_add(StorageTmp) != SNMPERR_SUCCESS){
+        SNMP_FREE(StorageTmp->snmpNotifyName);
+        SNMP_FREE(StorageTmp->snmpNotifyTag);
+        SNMP_FREE(StorageTmp);
+    }
 
 
     DEBUGMSGTL(("snmpNotifyTable", "done.\n"));
@@ -668,6 +721,7 @@
     }
 
     switch (vp->magic) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMPNOTIFYTAG:
         *write_method = write_snmpNotifyTag;
         break;
@@ -680,6 +734,7 @@
     case SNMPNOTIFYROWSTATUS:
         *write_method = write_snmpNotifyRowStatus;
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     default:
         *write_method = NULL;
     }
@@ -688,6 +743,7 @@
         return NULL;
     }
 
+#ifndef NETSNMP_NO_READ_SUPPORT
     switch (vp->magic) {
     case SNMPNOTIFYTAG:
         *var_len = StorageTmp->snmpNotifyTagLen;
@@ -708,6 +764,7 @@
     default:
         ERROR_MSG("");
     }
+#endif /* !NETSNMP_NO_READ_SUPPORT */ 
     return NULL;
 }
 
@@ -736,6 +793,8 @@
 
 static struct snmpNotifyTable_data *StorageNew;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
+
 int
 write_snmpNotifyTag(int action,
                     u_char * var_val,
@@ -770,10 +829,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;
@@ -785,7 +844,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;
@@ -821,6 +880,7 @@
          * permanently.  Make sure that anything done here can't fail! 
          */
         SNMP_FREE(tmpvar);
+        snmp_store_needed(NULL);
         break;
     }
 
@@ -1041,7 +1101,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;
             }
@@ -1156,7 +1216,9 @@
             StorageTmp->snmpNotifyRowStatus = RS_NOTINSERVICE;
             StorageNew = NULL;
         }
+        snmp_store_needed(NULL);
         break;
     }
     return SNMP_ERR_NOERROR;
 }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
diff --git a/agent/mibgroup/notification/snmpNotifyTable.h b/agent/mibgroup/notification/snmpNotifyTable.h
index 9a93645..18bf1bd 100644
--- a/agent/mibgroup/notification/snmpNotifyTable.h
+++ b/agent/mibgroup/notification/snmpNotifyTable.h
@@ -64,10 +64,12 @@
      int             snmpNotifyTable_add(struct snmpNotifyTable_data
                                          *thedata);
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_snmpNotifyTag;
      WriteMethod     write_snmpNotifyType;
      WriteMethod     write_snmpNotifyStorageType;
      WriteMethod     write_snmpNotifyRowStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 
 
diff --git a/agent/mibgroup/rmon-mib.h b/agent/mibgroup/rmon-mib.h
new file mode 100644
index 0000000..6f09df7
--- /dev/null
+++ b/agent/mibgroup/rmon-mib.h
@@ -0,0 +1,8 @@
+/*
+ * module to include the modules
+ */
+
+config_require(rmon-mib/etherStatsTable)
+config_add_mib(RMON-MIB)
+
+
diff --git a/agent/mibgroup/rmon-mib/data_access/etherstats.h b/agent/mibgroup/rmon-mib/data_access/etherstats.h
new file mode 100644
index 0000000..e35dd61
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/data_access/etherstats.h
@@ -0,0 +1,7 @@
+/*
+ * module to include the modules
+ */
+
+#if defined(linux)
+config_require(rmon-mib/data_access/etherstats_linux)
+#endif
diff --git a/agent/mibgroup/rmon-mib/data_access/etherstats_linux.c b/agent/mibgroup/rmon-mib/data_access/etherstats_linux.c
new file mode 100644
index 0000000..a6a42c3
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/data_access/etherstats_linux.c
@@ -0,0 +1,317 @@
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "rmon-mib/etherStatsTable/etherStatsTable.h"
+#include "rmon-mib/etherStatsTable/etherStatsTable_data_access.h"
+#include "rmon-mib/etherStatsTable/ioctl_imp_common.h"
+
+/*
+ * @retval  0 success
+ * @retval -1 getifaddrs failed 
+ * @retval -2 memory allocation failed
+ */
+
+struct ifname *
+etherstats_interface_name_list_get (struct ifname *list_head, int *retval)
+{
+    struct ifaddrs *addrs = NULL, *p = NULL;
+    struct ifname *nameptr1=NULL, *nameptr2 = NULL;
+
+    DEBUGMSGTL(("access:etherStatsTable:interface_name_list_get",
+                "called\n"));
+
+    if ((getifaddrs(&addrs)) < 0) {
+        DEBUGMSGTL(("access:etherStatsTable:interface_name_list_get",
+                    "getifaddrs failed\n"));
+        snmp_log (LOG_ERR, "access:etherStatsTable,interface_name_list_get, getifaddrs failed\n");
+        *retval = -1;
+        return NULL;
+    }
+
+    for (p = addrs; p; p = p->ifa_next) {
+
+        if (!list_head) {
+            list_head = malloc(sizeof(struct ifname));
+            if (!list_head) {
+                DEBUGMSGTL(("access:etherStatsTable:interface_name_list_get",
+                            "memory allocation failed\n"));
+                snmp_log (LOG_ERR, "access:etherStatsTable,interface_name_list_get, memory allocation failed\n");
+                freeifaddrs(addrs);
+                *retval = -2;
+                return NULL;
+            }
+            memset(list_head, 0, sizeof(struct ifname));
+            strlcpy(list_head->name, p->ifa_name, IF_NAMESIZE);
+            continue;
+        }
+         for (nameptr1 = list_head; nameptr1; nameptr2 = nameptr1, nameptr1 = nameptr1->ifn_next)
+            if (!strncmp(p->ifa_name, nameptr1->name, IF_NAMESIZE))
+                break;
+
+        if (nameptr1)
+            continue;
+
+        nameptr2->ifn_next = malloc(sizeof(struct ifname));
+        if (!nameptr2->ifn_next) {
+            DEBUGMSGTL(("access:etherStatsTable:interface_name_list_get",
+                        "memory allocation failed\n"));
+            snmp_log (LOG_ERR, "access:etherStatsTable,interface_name_list_get, memory allocation failed\n");
+            etherstats_interface_name_list_free (list_head);
+            freeifaddrs(addrs);
+            *retval = -2;
+            return NULL;
+        }
+        nameptr2 = nameptr2->ifn_next;
+        memset(nameptr2, 0, sizeof(struct ifname));
+        strlcpy(nameptr2->name, p->ifa_name, IF_NAMESIZE);
+        continue;
+    }
+
+    freeifaddrs(addrs);
+    *retval = 0;
+    return list_head;
+}
+
+
+/*
+ * @retval 0 success
+ * @retval -1 invalid pointer
+ */
+
+int
+etherstats_interface_name_list_free (struct ifname *list_head)
+{
+    struct ifname *nameptr1 = NULL, *nameptr2 = NULL;
+
+    DEBUGMSGTL(("access:etherStatsTable:interface_name_list_free",
+                "called\n"));
+
+    if (!list_head) {
+        snmp_log (LOG_ERR, "access:etherStatsTable:interface_name_list_free: invalid pointer list_head");
+        DEBUGMSGTL(("access:etherStatsTable:interface_name_list_free",
+                    "invalid pointer list_head\n"));
+        return -1;
+    }
+
+    for (nameptr1 = list_head; nameptr1; nameptr1 = nameptr2) {
+            nameptr2 = nameptr1->ifn_next;
+            free (nameptr1);
+    }
+
+    return 0;
+}
+
+/*
+ * @retval  0 : not found
+ * @retval !0 : ifIndex
+ */
+
+int
+etherstats_interface_ioctl_ifindex_get (int fd, const char *name) {
+#ifndef SIOCGIFINDEX
+    return 0;
+#else
+    struct ifreq    ifrq;
+    int rc = 0;
+
+    DEBUGMSGTL(("access:etherStatsTable:ioctl", "ifindex_get\n"));
+
+    rc = _etherStats_ioctl_get(fd, SIOCGIFINDEX, &ifrq, name);
+    if (rc < 0) {
+        DEBUGMSGTL(("access:etherStats:ioctl",
+                    "ifindex_get error on inerface '%s'\n", name));
+        snmp_log (LOG_ERR, "access:etherStatsTable:ioctl, ifindex_get error on inerface '%s'\n", name);
+        return 0;
+
+    }
+
+    return ifrq.ifr_ifindex;
+#endif /* SIOCGIFINDEX */
+}
+
+/*
+ * @retval  0 success
+ * @retval -1 cannot get ETHTOOL_DRVINFO failed 
+ * @retval -2 n_stats zero - no statistcs available
+ * @retval -3 memory allocation for holding the statistics failed
+ * @retval -4 cannot get ETHTOOL_GSTRINGS information
+ * @retval -5 cannot get ETHTOOL_GSTATS information
+ * @retval -6 function not supported if HAVE_LINUX_ETHTOOL_H not defined
+ */
+
+int
+interface_ioctl_etherstats_get (etherStatsTable_rowreq_ctx *rowreq_ctx , int fd, const char *name) {
+
+#ifdef HAVE_LINUX_ETHTOOL_H
+
+    etherStatsTable_data *data = &rowreq_ctx->data;
+    struct ethtool_drvinfo driver_info;
+    struct ethtool_gstrings *eth_strings;
+    struct ethtool_stats *eth_stats;
+    struct ifreq ifr;
+    unsigned int nstats, size_str, i;
+    int err;
+
+    DEBUGMSGTL(("access:etherStatsTable:interface_ioctl_etherstats_get",
+                "called\n"));
+
+    memset(&ifr, 0, sizeof(ifr));
+    strlcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
+
+    memset(&driver_info, 0, sizeof(driver_info));
+    driver_info.cmd = ETHTOOL_GDRVINFO;
+    ifr.ifr_data = (char *)&driver_info;
+
+    err = _etherStats_ioctl_get(fd, SIOCETHTOOL, &ifr, name);
+    if (err < 0) {
+        DEBUGMSGTL(("access:etherStatsTable:interface_ioctl_etherstats_get",
+                    "ETHTOOL_GETDRVINFO failed on interface |%s| \n", name));
+        return -1;
+    }
+
+    nstats = driver_info.n_stats;
+    if (nstats < 1) {
+        DEBUGMSGTL(("access:etherStatsTable:interface_ioctl_etherstats_get",
+                    "no stats available for interface |%s| \n", name));
+        return -2;
+    }
+
+    size_str = nstats * ETH_GSTRING_LEN;
+
+    eth_strings = malloc(size_str + sizeof (struct ethtool_gstrings));
+    if (!eth_strings) {
+        DEBUGMSGTL(("access:etherStatsTable:interface_ioctl_etherstats_get",
+                    "no memory available\n"));
+        snmp_log (LOG_ERR, "access:etherStatsTable,interface_ioctl_etherstats_get, no memory available\n");
+
+        return -3;
+    }
+    memset (eth_strings, 0, (size_str + sizeof (struct ethtool_gstrings)));
+
+    eth_stats = malloc (size_str + sizeof (struct ethtool_stats));
+    if (!eth_stats) {
+        free (eth_strings);
+        DEBUGMSGTL(("access:etherStatsTable:interface_ioctl_etherstats_get",
+                    "no memory available\n"));
+        snmp_log (LOG_ERR, "access:etherStatsTable,interface_ioctl_etherstats_get, no memory available\n");
+
+        return -3;
+    }
+    memset (eth_stats, 0, (size_str + sizeof (struct ethtool_stats)));
+
+    eth_strings->cmd = ETHTOOL_GSTRINGS;
+    eth_strings->string_set = ETH_SS_STATS;
+    eth_strings->len = nstats;
+    ifr.ifr_data = (char *) eth_strings;
+
+    err = _etherStats_ioctl_get(fd, SIOCETHTOOL, &ifr, name);
+    if (err < 0) {
+        DEBUGMSGTL(("access:etherStatsTable:interface_ioctl_etherstats_get",
+                    "cannot get stats strings information for interface |%s| \n", name));
+        snmp_log (LOG_ERR, "access:etherStatsTable,interface_ioctl_etherstats_get, cannot get stats strings information for interface |%s| \n", name);
+
+        free(eth_strings);
+        free(eth_stats);
+        return -4;
+    }
+
+    eth_stats->cmd = ETHTOOL_GSTATS;
+    eth_stats->n_stats = nstats;
+    ifr.ifr_data = (char *) eth_stats;
+    err = _etherStats_ioctl_get(fd, SIOCETHTOOL, &ifr, name);
+    if (err < 0) {
+        DEBUGMSGTL(("access:etherStatsTable:interface_ioctl_etherstats_get",
+                    "cannot get stats strings information for interface |%s| \n", name));
+        snmp_log (LOG_ERR, "access:etherStatsTable,interface_ioctl_etherstats_get, cannot get stats information for interface |%s| \n", name);
+
+        free(eth_strings);
+        free(eth_stats);
+        return -5;
+    }
+
+    for (i = 0; i < nstats; i++) {
+        char s[ETH_GSTRING_LEN];
+
+        strlcpy(s, (const char *) &eth_strings->data[i * ETH_GSTRING_LEN],
+                sizeof(s));
+        
+        if (ETHERSTATSJABBERS(s)) {
+            data->etherStatsJabbers = (u_long)eth_stats->data[i];
+            rowreq_ctx->column_exists_flags |= COLUMN_ETHERSTATSJABBERS_FLAG;
+        }
+    }
+    free(eth_strings);
+    free(eth_stats);
+
+    return 0;
+#else
+    return -6;
+#endif
+
+}
+
+
+/* ioctl wrapper
+ *
+ * @param fd : socket fd to use w/ioctl, or -1 to open/close one
+ * @param which
+ * @param ifrq
+ * param ifentry : ifentry to update
+ * @param name
+ *
+ * @retval  0 : success
+ * @retval -1 : invalid parameters
+ * @retval -2 : couldn't create socket
+ * @retval -3 : ioctl call failed
+ */
+int
+_etherStats_ioctl_get(int fd, int which, struct ifreq *ifrq, const char* name)
+{
+    int ourfd = -1, rc = 0;
+
+    DEBUGMSGTL(("access:etherStatsTable:ioctl", "_etherStats_ioctl_get\n"));
+    /*
+     * sanity checks
+     */
+    if(NULL == name) {
+        DEBUGMSGTL(("access:etherStatsTable:ioctl",
+                    "_etherStats_ioctl_get invalid ifname '%s'\n", name));
+        snmp_log (LOG_ERR, "access:etherStatsTable:ioctl, _etherStats_ioctl_get error on inerface '%s'\n", name);
+        return -1;
+    }
+
+    /*
+     * create socket for ioctls
+     */
+    if(fd < 0) {
+        fd = ourfd = socket(AF_INET, SOCK_DGRAM, 0);
+        if(ourfd < 0) {
+            DEBUGMSGTL(("access:etherStatsTable:ioctl",
+                        "_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;
+        }
+    }
+
+    strlcpy(ifrq->ifr_name, name, sizeof(ifrq->ifr_name));
+    rc = ioctl(fd, which, ifrq);
+    if (rc < 0) {
+        DEBUGMSGTL(("access:etherStatsTable:ioctl",
+                    "_etherStats_ioctl_get ioctl %d returned %d\n", which, rc));
+        rc = -3;
+    }
+
+    if(ourfd >= 0)
+        close(ourfd);
+
+    return rc;
+}
+
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable.h b/agent/mibgroup/rmon-mib/etherStatsTable.h
new file mode 100644
index 0000000..772845e
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/etherStatsTable.h
@@ -0,0 +1,11 @@
+/*
+ * module to include the modules
+ */
+
+config_require(rmon-mib/data_access/etherstats)
+config_require(rmon-mib/etherStatsTable/etherStatsTable)
+config_require(rmon-mib/etherStatsTable/etherStatsTable_data_get)
+config_require(rmon-mib/etherStatsTable/etherStatsTable_data_set)
+config_require(rmon-mib/etherStatsTable/etherStatsTable_data_access) 
+config_require(rmon-mib/etherStatsTable/etherStatsTable_interface)
+
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable.c b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable.c
new file mode 100644
index 0000000..05a6e22
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable.c
@@ -0,0 +1,233 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $ 
+ *
+ * $Id:$
+ */
+/** \page MFD helper for etherStatsTable
+ *
+ * \section intro Introduction
+ * Introductory text.
+ *
+ */
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "etherStatsTable.h"
+
+#include <net-snmp/agent/mib_modules.h>
+
+#include "etherStatsTable_interface.h"
+
+oid             etherStatsTable_oid[] = { ETHERSTATSTABLE_OID };
+int             etherStatsTable_oid_size = OID_LENGTH(etherStatsTable_oid);
+
+etherStatsTable_registration etherStatsTable_user_context;
+static etherStatsTable_registration *etherStatsTable_user_context_p;
+
+void            initialize_table_etherStatsTable(void);
+void            shutdown_table_etherStatsTable(void);
+
+
+/**
+ * Initializes the etherStatsTable module
+ */
+void
+init_etherStatsTable(void)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:init_etherStatsTable",
+                "called\n"));
+
+    /*
+     * TODO:300:o: Perform etherStatsTable one-time module initialization.
+     */
+
+    /*
+     * here we initialize all the tables we're planning on supporting
+     */
+    if (should_init("etherStatsTable"))
+        initialize_table_etherStatsTable();
+
+}                               /* init_etherStatsTable */
+
+/**
+ * Shut-down the etherStatsTable module (agent is exiting)
+ */
+void
+shutdown_etherStatsTable(void)
+{
+    if (should_init("etherStatsTable"))
+        shutdown_table_etherStatsTable();
+
+}
+
+/**
+ * Initialize the table etherStatsTable 
+ *    (Define its contents and how it's structured)
+ */
+void
+initialize_table_etherStatsTable(void)
+{
+    u_long          flags;
+
+    DEBUGMSGTL(("verbose:etherStatsTable:initialize_table_etherStatsTable",
+                "called\n"));
+
+    /*
+     * TODO:301:o: Perform etherStatsTable one-time table initialization.
+     */
+
+    /*
+     * TODO:302:o: |->Initialize etherStatsTable user context
+     * if you'd like to pass in a pointer to some data for this
+     * table, allocate or set it up here.
+     */
+    /*
+     * a netsnmp_data_list is a simple way to store void pointers. A simple
+     * string token is used to add, find or remove pointers.
+     */
+    etherStatsTable_user_context_p
+	= netsnmp_create_data_list("etherStatsTable", NULL, NULL);
+
+    /*
+     * No support for any flags yet, but in the future you would
+     * set any flags here.
+     */
+    flags = 0;
+
+    /*
+     * call interface initialization code
+     */
+    _etherStatsTable_initialize_interface
+	(etherStatsTable_user_context_p, flags);
+}                               /* initialize_table_etherStatsTable */
+
+/**
+ * Shutdown the table etherStatsTable 
+ */
+void
+shutdown_table_etherStatsTable(void)
+{
+    /*
+     * call interface shutdown code
+     */
+    _etherStatsTable_shutdown_interface(etherStatsTable_user_context_p);
+    netsnmp_free_all_list_data(etherStatsTable_user_context_p);
+    etherStatsTable_user_context_p = NULL;
+}
+
+/**
+ * extra context initialization (eg default values)
+ *
+ * @param rowreq_ctx    : row request context
+ * @param user_init_ctx : void pointer for user (parameter to rowreq_ctx_allocate)
+ *
+ * @retval MFD_SUCCESS  : no errors
+ * @retval MFD_ERROR    : error (context allocate will fail)
+ */
+int
+etherStatsTable_rowreq_ctx_init(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                                void *user_init_ctx)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_rowreq_ctx_init",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:210:o: |-> Perform extra etherStatsTable rowreq initialization. (eg DEFVALS)
+     */
+
+    return MFD_SUCCESS;
+}                               /* etherStatsTable_rowreq_ctx_init */
+
+/**
+ * extra context cleanup
+ *
+ */
+void
+etherStatsTable_rowreq_ctx_cleanup(etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_rowreq_ctx_cleanup", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:211:o: |-> Perform extra etherStatsTable rowreq cleanup.
+     */
+}                               /* etherStatsTable_rowreq_ctx_cleanup */
+
+/**
+ * pre-request callback
+ *
+ *
+ * @retval MFD_SUCCESS              : success.
+ * @retval MFD_ERROR                : other error
+ */
+int
+etherStatsTable_pre_request(etherStatsTable_registration * user_context)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_pre_request",
+                "called\n"));
+
+    /*
+     * TODO:510:o: Perform etherStatsTable pre-request actions.
+     */
+
+    return MFD_SUCCESS;
+}                               /* etherStatsTable_pre_request */
+
+/**
+ * post-request callback
+ *
+ * Note:
+ *   New rows have been inserted into the container, and
+ *   deleted rows have been removed from the container and
+ *   released.
+ *
+ * @param user_context
+ * @param rc : MFD_SUCCESS if all requests succeeded
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR   : other error (ignored)
+ */
+int
+etherStatsTable_post_request(etherStatsTable_registration * user_context,
+                             int rc)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_post_request",
+                "called\n"));
+
+    /*
+     * TODO:511:o: Perform etherStatsTable post-request actions.
+     */
+
+    /*
+     * check to set if any rows were changed.
+     */
+    if (etherStatsTable_dirty_get()) {
+        /*
+         * check if request was successful. If so, this would be
+         * a good place to save data to its persistent store.
+         */
+        if (MFD_SUCCESS == rc) {
+            /*
+             * save changed rows, if you haven't already
+             */
+        }
+
+        etherStatsTable_dirty_set(0);   /* clear table dirty flag */
+    }
+
+    return MFD_SUCCESS;
+}                               /* etherStatsTable_post_request */
+
+
+/** @{ */
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable.h b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable.h
new file mode 100644
index 0000000..9f7f03c
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable.h
@@ -0,0 +1,303 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $
+ *
+ * $Id:$
+ */
+#ifndef ETHERSTATSTABLE_H
+#define ETHERSTATSTABLE_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+/** @addtogroup misc misc: Miscellaneous routines
+ *
+ * @{
+ */
+#include <net-snmp/library/asn1.h>
+
+    /*
+     * OID and column number definitions for etherStatsTable 
+     */
+#include "etherStatsTable_oids.h"
+
+    /*
+     * enum definions 
+     */
+#include "etherStatsTable_enums.h"
+
+    /*
+     *********************************************************************
+     * function declarations
+     */
+    void            init_etherStatsTable(void);
+    void            shutdown_etherStatsTable(void);
+
+    /*
+     *********************************************************************
+     * Table declarations
+     */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table etherStatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+    /*
+     * RMON-MIB::etherStatsTable is subid 1 of statistics.
+     * Its status is Current.
+     * OID: .1.3.6.1.2.1.16.1.1, length: 9
+     */
+    /*
+     *********************************************************************
+     * When you register your mib, you get to provide a generic
+     * pointer that will be passed back to you for most of the
+     * functions calls.
+     *
+     * TODO:100:r: Review all context structures
+     */
+    /*
+     * TODO:101:o: |-> Review etherStatsTable registration context.
+     */
+    typedef netsnmp_data_list etherStatsTable_registration;
+
+/**********************************************************************/
+    /*
+     * TODO:110:r: |-> Review etherStatsTable data context structure.
+     * This structure is used to represent the data for etherStatsTable.
+     */
+    /*
+     * This structure contains storage for all the columns defined in the
+     * etherStatsTable.
+     */
+    typedef struct etherStatsTable_data_s {
+
+        /*
+         * etherStatsDataSource(2)/OBJECTID/ASN_OBJECT_ID/oid(oid)//L/A/W/e/r/d/h
+         */
+        oid             etherStatsDataSource[128];
+        size_t          etherStatsDataSource_len;       /* # of oid elements, not bytes */
+
+        /*
+         * etherStatsDropEvents(3)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsDropEvents;
+
+        /*
+         * etherStatsOctets(4)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsOctets;
+
+        /*
+         * etherStatsPkts(5)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsPkts;
+
+        /*
+         * etherStatsBroadcastPkts(6)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsBroadcastPkts;
+
+        /*
+         * etherStatsMulticastPkts(7)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsMulticastPkts;
+
+        /*
+         * etherStatsCRCAlignErrors(8)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsCRCAlignErrors;
+
+        /*
+         * etherStatsUndersizePkts(9)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsUndersizePkts;
+
+        /*
+         * etherStatsOversizePkts(10)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsOversizePkts;
+
+        /*
+         * etherStatsFragments(11)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsFragments;
+
+        /*
+         * etherStatsJabbers(12)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsJabbers;
+
+        /*
+         * etherStatsCollisions(13)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsCollisions;
+
+        /*
+         * etherStatsPkts64Octets(14)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsPkts64Octets;
+
+        /*
+         * etherStatsPkts65to127Octets(15)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsPkts65to127Octets;
+
+        /*
+         * etherStatsPkts128to255Octets(16)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsPkts128to255Octets;
+
+        /*
+         * etherStatsPkts256to511Octets(17)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsPkts256to511Octets;
+
+        /*
+         * etherStatsPkts512to1023Octets(18)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsPkts512to1023Octets;
+
+        /*
+         * etherStatsPkts1024to1518Octets(19)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h
+         */
+        u_long          etherStatsPkts1024to1518Octets;
+
+        /*
+         * etherStatsOwner(20)/OwnerString/ASN_OCTET_STR/char(char)//L/A/W/e/R/d/h
+         */
+        char            etherStatsOwner[127];
+        size_t          etherStatsOwner_len;    /* # of char elements, not bytes */
+
+        /*
+         * etherStatsStatus(21)/EntryStatus/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h
+         */
+        u_long          etherStatsStatus;
+
+    } etherStatsTable_data;
+
+
+    /*
+     *********************************************************************
+     * TODO:115:o: |-> Review etherStatsTable undo context.
+     * We're just going to use the same data structure for our
+     * undo_context. If you want to do something more efficent,
+     * define your typedef here.
+     */
+    typedef etherStatsTable_data etherStatsTable_undo_data;
+
+    /*
+     * TODO:120:r: |-> Review etherStatsTable mib index.
+     * This structure is used to represent the index for etherStatsTable.
+     */
+    typedef struct etherStatsTable_mib_index_s {
+
+        /*
+         * etherStatsIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/R/d/h
+         */
+        long            etherStatsIndex;
+
+
+    } etherStatsTable_mib_index;
+
+    /*
+     * TODO:121:r: |   |-> Review etherStatsTable max index length.
+     * If you KNOW that your indexes will never exceed a certain
+     * length, update this macro to that length.
+     */
+#define MAX_etherStatsTable_IDX_LEN     1
+
+
+    /*
+     *********************************************************************
+     * TODO:130:o: |-> Review etherStatsTable Row request (rowreq) context.
+     * When your functions are called, you will be passed a
+     * etherStatsTable_rowreq_ctx pointer.
+     */
+    typedef struct etherStatsTable_rowreq_ctx_s {
+
+    /** this must be first for container compare to work */
+        netsnmp_index   oid_idx;
+        oid             oid_tmp[MAX_etherStatsTable_IDX_LEN];
+
+        etherStatsTable_mib_index tbl_idx;
+
+        etherStatsTable_data data;
+        unsigned int    column_exists_flags;    /* flags for existence */
+        etherStatsTable_undo_data *undo;
+        unsigned int    column_set_flags;       /* flags for set columns */
+
+
+        /*
+         * flags per row. Currently, the first (lower) 8 bits are reserved
+         * for the user. See mfd.h for other flags.
+         */
+        u_int           rowreq_flags;
+
+        /*
+         * TODO:131:o: |   |-> Add useful data to etherStatsTable rowreq context.
+         */
+
+        /*
+         * storage for future expansion
+         */
+        netsnmp_data_list *etherStatsTable_data_list;
+
+    } etherStatsTable_rowreq_ctx;
+
+    typedef struct etherStatsTable_ref_rowreq_ctx_s {
+        etherStatsTable_rowreq_ctx *rowreq_ctx;
+    } etherStatsTable_ref_rowreq_ctx;
+
+    /*
+     *********************************************************************
+     * function prototypes
+     */
+    int            
+        etherStatsTable_pre_request(etherStatsTable_registration *
+                                    user_context);
+    int            
+        etherStatsTable_post_request(etherStatsTable_registration *
+                                     user_context, int rc);
+
+    int            
+        etherStatsTable_rowreq_ctx_init(etherStatsTable_rowreq_ctx *
+                                        rowreq_ctx, void *user_init_ctx);
+    void           
+        etherStatsTable_rowreq_ctx_cleanup(etherStatsTable_rowreq_ctx *
+                                           rowreq_ctx);
+
+    int             etherStatsTable_commit(etherStatsTable_rowreq_ctx *
+                                           rowreq_ctx);
+
+    etherStatsTable_rowreq_ctx
+        *etherStatsTable_row_find_by_mib_index(etherStatsTable_mib_index *
+                                               mib_idx);
+
+    extern oid      etherStatsTable_oid[];
+    extern int      etherStatsTable_oid_size;
+
+
+#include "etherStatsTable_interface.h"
+#include "etherStatsTable_data_access.h"
+#include "etherStatsTable_data_get.h"
+#include "etherStatsTable_data_set.h"
+
+    /*
+     * DUMMY markers, ignore
+     *
+     * TODO:099:x: *************************************************************
+     * TODO:199:x: *************************************************************
+     * TODO:299:x: *************************************************************
+     * TODO:399:x: *************************************************************
+     * TODO:499:x: *************************************************************
+     */
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* ETHERSTATSTABLE_H */
+/** @} */
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c
new file mode 100644
index 0000000..48d4aca
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.c
@@ -0,0 +1,533 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $ 
+ *
+ * $Id:$
+ */
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "etherStatsTable.h"
+#include "etherStatsTable_data_access.h"
+
+#if defined(linux)
+#include "ioctl_imp_common.h"
+#endif
+
+/** @ingroup interface
+ * @addtogroup data_access data_access: Routines to access data
+ *
+ * These routines are used to locate the data used to satisfy
+ * requests.
+ * 
+ * @{
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table etherStatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * RMON-MIB::etherStatsTable is subid 1 of statistics.
+ * Its status is Current.
+ * OID: .1.3.6.1.2.1.16.1.1, length: 9
+ */
+
+/**
+ * initialization for etherStatsTable data access
+ *
+ * This function is called during startup to allow you to
+ * allocate any resources you need for the data table.
+ *
+ * @param etherStatsTable_reg
+ *        Pointer to etherStatsTable_registration
+ *
+ * @retval MFD_SUCCESS : success.
+ * @retval MFD_ERROR   : unrecoverable error.
+ */
+int
+etherStatsTable_init_data(etherStatsTable_registration *
+                          etherStatsTable_reg)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_init_data",
+                "called\n"));
+
+    /*
+     * TODO:303:o: Initialize etherStatsTable data.
+     */
+
+    return MFD_SUCCESS;
+}                               /* etherStatsTable_init_data */
+
+/**
+ * container overview
+ *
+ */
+
+/**
+ * container initialization
+ *
+ * @param container_ptr_ptr A pointer to a container pointer. If you
+ *        create a custom container, use this parameter to return it
+ *        to the MFD helper. If set to NULL, the MFD helper will
+ *        allocate a container for you.
+ * @param  cache A pointer to a cache structure. You can set the timeout
+ *         and other cache flags using this pointer.
+ *
+ *  This function is called at startup to allow you to customize certain
+ *  aspects of the access method. For the most part, it is for advanced
+ *  users. The default code should suffice for most cases. If no custom
+ *  container is allocated, the MFD code will create one for your.
+ *
+ *  This is also the place to set up cache behavior. The default, to
+ *  simply set the cache timeout, will work well with the default
+ *  container. If you are using a custom container, you may want to
+ *  look at the cache helper documentation to see if there are any
+ *  flags you want to set.
+ *
+ * @remark
+ *  This would also be a good place to do any initialization needed
+ *  for you data source. For example, opening a connection to another
+ *  process that will supply the data, opening a database, etc.
+ */
+void
+etherStatsTable_container_init(netsnmp_container ** container_ptr_ptr,
+                               netsnmp_cache * cache)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_container_init",
+                "called\n"));
+
+    if (NULL == container_ptr_ptr) {
+        snmp_log(LOG_ERR,
+                 "bad container param to etherStatsTable_container_init\n");
+        return;
+    }
+
+    /*
+     * For advanced users, you can use a custom container. If you
+     * do not create one, one will be created for you.
+     */
+    *container_ptr_ptr = NULL;
+
+    if (NULL == cache) {
+        snmp_log(LOG_ERR,
+                 "bad cache param to etherStatsTable_container_init\n");
+        return;
+    }
+
+    /*
+     * TODO:345:A: Set up etherStatsTable cache properties.
+     *
+     * Also for advanced users, you can set parameters for the
+     * cache. Do not change the magic pointer, as it is used
+     * by the MFD helper. To completely disable caching, set
+     * cache->enabled to 0.
+     */
+    cache->timeout = ETHERSTATSTABLE_CACHE_TIMEOUT;     /* seconds */
+}                               /* etherStatsTable_container_init */
+
+/**
+ * container shutdown
+ *
+ * @param container_ptr A pointer to the container.
+ *
+ *  This function is called at shutdown to allow you to customize certain
+ *  aspects of the access method. For the most part, it is for advanced
+ *  users. The default code should suffice for most cases.
+ *
+ *  This function is called before etherStatsTable_container_free().
+ *
+ * @remark
+ *  This would also be a good place to do any cleanup needed
+ *  for you data source. For example, closing a connection to another
+ *  process that supplied the data, closing a database, etc.
+ */
+void
+etherStatsTable_container_shutdown(netsnmp_container * container_ptr)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_container_shutdown", "called\n"));
+
+    if (NULL == container_ptr) {
+        snmp_log(LOG_ERR,
+                 "bad params to etherStatsTable_container_shutdown\n");
+        return;
+    }
+
+}                               /* etherStatsTable_container_shutdown */
+
+/**
+ * load initial data
+ *
+ * TODO:350:M: Implement etherStatsTable data load
+ * This function will also be called by the cache helper to load
+ * the container again (after the container free function has been
+ * called to free the previous contents).
+ *
+ * @param container container to which items should be inserted
+ *
+ * @retval MFD_SUCCESS              : success.
+ * @retval MFD_RESOURCE_UNAVAILABLE : Can't access data source
+ * @retval MFD_ERROR                : other error.
+ *
+ *  This function is called to load the index(es) (and data, optionally)
+ *  for the every row in the data set.
+ *
+ * @remark
+ *  While loading the data, the only important thing is the indexes.
+ *  If access to your data is cheap/fast (e.g. you have a pointer to a
+ *  structure in memory), it would make sense to update the data here.
+ *  If, however, the accessing the data invovles more work (e.g. parsing
+ *  some other existing data, or peforming calculations to derive the data),
+ *  then you can limit yourself to setting the indexes and saving any
+ *  information you will need later. Then use the saved information in
+ *  etherStatsTable_row_prep() for populating data.
+ *
+ * @note
+ *  If you need consistency between rows (like you want statistics
+ *  for each row to be from the same time frame), you should set all
+ *  data here.
+ *
+ */
+int
+etherStatsTable_container_load(netsnmp_container * container)
+{
+    size_t          count = 0;
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_container_load",
+                "called\n"));
+
+    /*
+     * TODO:352:M: |   |-> set indexes in new etherStatsTable rowreq context.
+     * data context will be set from the param (unless NULL,
+     *      in which case a new data context will be allocated)
+     */
+
+    /*
+     * temporary storage for index values
+     */
+    
+    /*
+     * etherStatsIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/R/d/h
+     */
+
+    int             fd;
+
+#if defined(linux)
+    struct ifname *list_head = NULL, *p = NULL;
+#endif
+    
+    /*
+     * create socket for ioctls
+     */
+
+    fd = socket(AF_INET, SOCK_DGRAM, 0);
+    if(fd < 0) {
+        snmp_log(LOG_ERR, "could not create socket\n");
+        return -2;
+    }
+
+    /*
+     * get the interface names of the devices present in the system, in case of failure retval suggests the reson for failure
+     * and list_head contains null
+     */
+
+#if defined(linux)
+    {
+        int retval;
+
+        list_head = etherstats_interface_name_list_get(list_head, &retval);
+    }
+
+    if (!list_head) {
+        snmp_log (LOG_ERR, "access:etherStatsTable, error getting the interface names present in the system\n");
+        DEBUGMSGTL(("access:etherStatsTable", "error getting the interface names present in the system"));
+        close(fd);
+        return MFD_ERROR;
+    }
+
+    /*
+     * Walk over the list of interface names present in the system and retreive the statistics 
+     */
+
+    for (p = list_head; p; p = p->ifn_next) {
+        long            etherStatsIndex;
+        etherStatsTable_rowreq_ctx *rowreq_ctx;
+
+        DEBUGMSGTL(("access:etherStatsTable", "processing '%s'\n", p->name));
+
+        /*
+         * get index via ioctl.
+         */
+
+        etherStatsIndex = (long) etherstats_interface_ioctl_ifindex_get(-1, p->name);
+
+        /* 
+         *  get the etherstats contents populated, if the device is not an ethernet device
+         *  the operation will not be supported and an error message will be logged
+         */
+        
+        rowreq_ctx = etherStatsTable_allocate_rowreq_ctx(NULL);
+        if (NULL == rowreq_ctx) {
+            snmp_log(LOG_ERR, "memory allocation failed\n");
+            close(fd);
+            return MFD_RESOURCE_UNAVAILABLE;
+        }
+
+        if (MFD_SUCCESS !=
+            etherStatsTable_indexes_set(rowreq_ctx, etherStatsIndex)) {
+            snmp_log(LOG_ERR,
+                     "error setting index while loading "
+                     "etherStatsTable data.\n");
+            etherStatsTable_release_rowreq_ctx(rowreq_ctx);
+            continue;
+        }
+
+        /*
+         * TODO:352:r: |   |-> populate etherStatsTable data context.
+         * Populate data context here. (optionally, delay until row prep)
+         */
+        /*
+         * non-TRANSIENT data: no need to copy. set pointer to data 
+         */
+
+        memset (&rowreq_ctx->data, 0, sizeof (rowreq_ctx->data));
+        {
+            int rc;
+
+            rc = interface_ioctl_etherstats_get (rowreq_ctx, fd, p->name);
+
+            if (rc < 0) {
+                DEBUGMSGTL(("access:etherStatsTable", "error getting the statistics for interface |%s| "
+                            "etherStatsTable data, operation might not be supported\n", p->name));
+                etherStatsTable_release_rowreq_ctx(rowreq_ctx);
+                continue;
+            }
+
+            /*
+             * insert into table container
+             */
+            rc = CONTAINER_INSERT(container, rowreq_ctx);
+            if (rc < 0) {
+                DEBUGMSGTL(("access:etherStatsTable", "error inserting |%s| ", p->name));
+                etherStatsTable_release_rowreq_ctx(rowreq_ctx);
+                continue;
+            }
+        }
+
+        ++count;
+    }
+
+    close(fd);
+
+    /*
+     * free the interface names list 
+     */
+
+    if ( (etherstats_interface_name_list_free(list_head)) < 0) {
+        snmp_log(LOG_ERR, "access:etherStatsTable, error freeing the interface name list \n");
+        DEBUGMSGTL(("access:etherStatsTable", "error freeing the interface name list\n"));
+        return MFD_ERROR;
+    }
+#endif
+    
+    DEBUGMSGT(("verbose:etherStatsTable:etherStatsTable_container_load",
+               "inserted %" NETSNMP_PRIz "d records\n", count));
+
+    return MFD_SUCCESS;
+}
+                               /* etherStatsTable_container_load */
+
+
+/**
+ * container clean up
+ *
+ * @param container container with all current items
+ *
+ *  This optional callback is called prior to all
+ *  item's being removed from the container. If you
+ *  need to do any processing before that, do it here.
+ *
+ * @note
+ *  The MFD helper will take care of releasing all the row contexts.
+ *
+ */
+void
+etherStatsTable_container_free(netsnmp_container * container)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_container_free",
+                "called\n"));
+
+    /*
+     * TODO:380:M: Free etherStatsTable container data.
+     */
+}                               /* etherStatsTable_container_free */
+
+/**
+ * prepare row for processing.
+ *
+ *  When the agent has located the row for a request, this function is
+ *  called to prepare the row for processing. If you fully populated
+ *  the data context during the index setup phase, you may not need to
+ *  do anything.
+ *
+ * @param rowreq_ctx pointer to a context.
+ *
+ * @retval MFD_SUCCESS     : success.
+ * @retval MFD_ERROR       : other error.
+ */
+int
+etherStatsTable_row_prep(etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_row_prep",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:390:o: Prepare row for request.
+     * If populating row data was delayed, this is the place to
+     * fill in the row for this request.
+     */
+
+    return MFD_SUCCESS;
+}                               /* etherStatsTable_row_prep */
+
+/*
+ * TODO:420:r: Implement etherStatsTable index validation.
+ */
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsIndex
+ * etherStatsIndex is subid 1 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.1
+ * Description:
+The value of this object uniquely identifies this
+        etherStats entry.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 1      hashint   0
+ *   settable   0
+ *
+ * Ranges:  1 - 65535;
+ *
+ * Its syntax is INTEGER32 (based on perltype INTEGER32)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (long)
+ */
+/**
+ * check validity of etherStatsIndex index portion
+ *
+ * @retval MFD_SUCCESS   : the incoming value is legal
+ * @retval MFD_ERROR     : the incoming value is NOT legal
+ *
+ * @note this is not the place to do any checks for the sanity
+ *       of multiple indexes. Those types of checks should be done in the
+ *       etherStatsTable_validate_index() function.
+ *
+ * @note Also keep in mind that if the index refers to a row in this or
+ *       some other table, you can't check for that row here to make
+ *       decisions, since that row might not be created yet, but may
+ *       be created during the processing this request. If you have
+ *       such checks, they should be done in the check_dependencies
+ *       function, because any new/deleted/changed rows should be
+ *       available then.
+ *
+ * The following checks have already been done for you:
+ *    The value is in (one of) the range set(s):  1 - 65535
+ *
+ * If there a no other checks you need to do, simply return MFD_SUCCESS.
+ */
+int
+etherStatsIndex_check_index(etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsIndex_check_index",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:426:M: |-> Check etherStatsTable index etherStatsIndex.
+     * check that index value in the table context is legal.
+     * (rowreq_ctx->tbl_index.etherStatsIndex)
+     */
+
+    return MFD_SUCCESS;         /* etherStatsIndex index ok */
+}                               /* etherStatsIndex_check_index */
+
+/**
+ * verify specified index is valid.
+ *
+ * This check is independent of whether or not the values specified for
+ * the columns of the new row are valid. Column values and row consistency
+ * will be checked later. At this point, only the index values should be
+ * checked.
+ *
+ * All of the individual index validation functions have been called, so this
+ * is the place to make sure they are valid as a whole when combined. If
+ * you only have one index, then you probably don't need to do anything else
+ * here.
+ * 
+ * @note Keep in mind that if the indexes refer to a row in this or
+ *       some other table, you can't check for that row here to make
+ *       decisions, since that row might not be created yet, but may
+ *       be created during the processing this request. If you have
+ *       such checks, they should be done in the check_dependencies
+ *       function, because any new/deleted/changed rows should be
+ *       available then.
+ *
+ *
+ * @param etherStatsTable_reg
+ *        Pointer to the user registration data
+ * @param etherStatsTable_rowreq_ctx
+ *        Pointer to the users context.
+ * @retval MFD_SUCCESS            : success
+ * @retval MFD_CANNOT_CREATE_NOW  : index not valid right now
+ * @retval MFD_CANNOT_CREATE_EVER : index never valid
+ */
+int
+etherStatsTable_validate_index(etherStatsTable_registration *
+                               etherStatsTable_reg,
+                               etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    int             rc = MFD_SUCCESS;
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_validate_index",
+                "called\n"));
+
+    /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:430:M: |-> Validate potential etherStatsTable index.
+     */
+    if (1) {
+        snmp_log(LOG_WARNING, "invalid index for a new row in the "
+                 "etherStatsTable table.\n");
+        /*
+         * determine failure type.
+         *
+         * If the index could not ever be created, return MFD_NOT_EVER
+         * If the index can not be created under the present circumstances
+         * (even though it could be created under other circumstances),
+         * return MFD_NOT_NOW.
+         */
+        if (0) {
+            return MFD_CANNOT_CREATE_EVER;
+        } else {
+            return MFD_CANNOT_CREATE_NOW;
+        }
+    }
+
+    return rc;
+}                               /* etherStatsTable_validate_index */
+
+/** @} */
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.h b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.h
new file mode 100644
index 0000000..00700f4
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_access.h
@@ -0,0 +1,80 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 14170 $ of $
+ *
+ * $Id:$
+ */
+#ifndef ETHERSTATSTABLE_DATA_ACCESS_H
+#define ETHERSTATSTABLE_DATA_ACCESS_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+    /*
+     *********************************************************************
+     * function declarations
+     */
+
+    /*
+     *********************************************************************
+     * Table declarations
+     */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table etherStatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+    /*
+     * RMON-MIB::etherStatsTable is subid 1 of statistics.
+     * Its status is Current.
+     * OID: .1.3.6.1.2.1.16.1.1, length: 9
+     */
+
+
+    int             etherStatsTable_init_data(etherStatsTable_registration
+                                              * etherStatsTable_reg);
+
+
+    /*
+     * TODO:180:o: Review etherStatsTable cache timeout.
+     * The number of seconds before the cache times out
+     */
+#define ETHERSTATSTABLE_CACHE_TIMEOUT   60
+
+    void            etherStatsTable_container_init(netsnmp_container **
+                                                   container_ptr_ptr,
+                                                   netsnmp_cache * cache);
+    void            etherStatsTable_container_shutdown(netsnmp_container *
+                                                       container_ptr);
+
+    int             etherStatsTable_container_load(netsnmp_container *
+                                                   container);
+    void            etherStatsTable_container_free(netsnmp_container *
+                                                   container);
+
+    int             etherStatsTable_cache_load(netsnmp_container *
+                                               container);
+    void            etherStatsTable_cache_free(netsnmp_container *
+                                               container);
+
+#define MAX_LINE_SIZE 256
+
+    int             etherStatsTable_row_prep(etherStatsTable_rowreq_ctx *
+                                             rowreq_ctx);
+
+    int            
+        etherStatsTable_validate_index(etherStatsTable_registration *
+                                       etherStatsTable_reg,
+                                       etherStatsTable_rowreq_ctx *
+                                       rowreq_ctx);
+    int             etherStatsIndex_check_index(etherStatsTable_rowreq_ctx * rowreq_ctx);       /* internal */
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* ETHERSTATSTABLE_DATA_ACCESS_H */
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_get.c b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_get.c
new file mode 100644
index 0000000..3ba51d7
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_get.c
@@ -0,0 +1,1411 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 12088 $ of $ 
+ *
+ * $Id:$
+ */
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "etherStatsTable.h"
+
+
+/** @defgroup data_get data_get: Routines to get data
+ *
+ * TODO:230:M: Implement etherStatsTable get routines.
+ * TODO:240:M: Implement etherStatsTable mapping routines (if any).
+ *
+ * These routine are used to get the value for individual objects. The
+ * row context is passed, along with a pointer to the memory where the
+ * value should be copied.
+ *
+ * @{
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table etherStatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * RMON-MIB::etherStatsTable is subid 1 of statistics.
+ * Its status is Current.
+ * OID: .1.3.6.1.2.1.16.1.1, length: 9
+ */
+
+/*
+ * ---------------------------------------------------------------------
+ * * TODO:200:r: Implement etherStatsTable data context functions.
+ */
+
+
+/**
+ * set mib index(es)
+ *
+ * @param tbl_idx mib index structure
+ * @param etherStatsIndex_val
+ *
+ * @retval MFD_SUCCESS     : success.
+ * @retval MFD_ERROR       : other error.
+ *
+ * @remark
+ *  This convenience function is useful for setting all the MIB index
+ *  components with a single function call. It is assume that the C values
+ *  have already been mapped from their native/rawformat to the MIB format.
+ */
+int
+etherStatsTable_indexes_set_tbl_idx(etherStatsTable_mib_index * tbl_idx,
+                                    long etherStatsIndex_val)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_indexes_set_tbl_idx", "called\n"));
+
+    /*
+     * etherStatsIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/R/d/h 
+     */
+    tbl_idx->etherStatsIndex = etherStatsIndex_val;
+
+
+    return MFD_SUCCESS;
+}                               /* etherStatsTable_indexes_set_tbl_idx */
+
+/**
+ * @internal
+ * set row context indexes
+ *
+ * @param reqreq_ctx the row context that needs updated indexes
+ *
+ * @retval MFD_SUCCESS     : success.
+ * @retval MFD_ERROR       : other error.
+ *
+ * @remark
+ *  This function sets the mib indexs, then updates the oid indexs
+ *  from the mib index.
+ */
+int
+etherStatsTable_indexes_set(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                            long etherStatsIndex_val)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_indexes_set",
+                "called\n"));
+
+    if (MFD_SUCCESS !=
+        etherStatsTable_indexes_set_tbl_idx(&rowreq_ctx->tbl_idx,
+                                            etherStatsIndex_val))
+        return MFD_ERROR;
+
+    /*
+     * convert mib index to oid index
+     */
+    rowreq_ctx->oid_idx.len = sizeof(rowreq_ctx->oid_tmp) / sizeof(oid);
+    if (0 != etherStatsTable_index_to_oid(&rowreq_ctx->oid_idx,
+                                          &rowreq_ctx->tbl_idx)) {
+        return MFD_ERROR;
+    }
+
+    return MFD_SUCCESS;
+}                               /* etherStatsTable_indexes_set */
+
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsDataSource
+ * etherStatsDataSource is subid 2 of etherStatsEntry.
+ * Its status is Current, and its access level is Create.
+ * OID: .1.3.6.1.2.1.16.1.1.1.2
+ * Description:
+This object identifies the source of the data that
+        this etherStats entry is configured to analyze.  This
+        source can be any ethernet interface on this device.
+        In order to identify a particular interface, this object
+        shall identify the instance of the ifIndex object,
+        defined in RFC 2233 [17], for the desired interface.
+        For example, if an entry were to receive data from
+        interface #1, this object would be set to ifIndex.1.
+
+        The statistics in this group reflect all packets
+        on the local network segment attached to the identified
+        interface.
+
+        An agent may or may not be able to tell if fundamental
+        changes to the media of the interface have occurred and
+        necessitate an invalidation of this entry.  For example, a
+        hot-pluggable ethernet card could be pulled out and replaced
+        by a token-ring card.  In such a case, if the agent has such
+        knowledge of the change, it is recommended that it
+        invalidate this entry.
+
+        This object may not be modified if the associated
+        etherStatsStatus object is equal to valid(1).
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   1
+ *
+ *
+ * Its syntax is OBJECTID (based on perltype OBJECTID)
+ * The net-snmp type is ASN_OBJECT_ID. The C type decl is oid (oid)
+ * This data type requires a length.
+ */
+/**
+ * Extract the current value of the etherStatsDataSource data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsDataSource_val_ptr_ptr
+ *        Pointer to storage for a oid variable
+ * @param etherStatsDataSource_val_ptr_len_ptr
+ *        Pointer to a size_t. On entry, it will contain the size (in bytes)
+ *        pointed to by etherStatsDataSource.
+ *        On exit, this value should contain the data size (in bytes).
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+*
+ * @note If you need more than (*etherStatsDataSource_val_ptr_len_ptr) bytes of memory,
+ *       allocate it using malloc() and update etherStatsDataSource_val_ptr_ptr.
+ *       <b>DO NOT</b> free the previous pointer.
+ *       The MFD helper will release the memory you allocate.
+ *
+ * @remark If you call this function yourself, you are responsible
+ *         for checking if the pointer changed, and freeing any
+ *         previously allocated memory. (Not necessary if you pass
+ *         in a pointer to static memory, obviously.)
+ */
+int
+etherStatsDataSource_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                         oid ** etherStatsDataSource_val_ptr_ptr,
+                         size_t *etherStatsDataSource_val_ptr_len_ptr)
+{
+   /** we should have a non-NULL pointer and enough storage */
+    netsnmp_assert((NULL != etherStatsDataSource_val_ptr_ptr)
+                   && (NULL != *etherStatsDataSource_val_ptr_ptr));
+    netsnmp_assert(NULL != etherStatsDataSource_val_ptr_len_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsDataSource_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsDataSource data.
+     * copy (* etherStatsDataSource_val_ptr_ptr ) data and (* etherStatsDataSource_val_ptr_len_ptr ) from rowreq_ctx->data
+     */
+    /*
+     * make sure there is enough space for etherStatsDataSource data
+     */
+    if ((NULL == (*etherStatsDataSource_val_ptr_ptr)) ||
+        ((*etherStatsDataSource_val_ptr_len_ptr) <
+         (rowreq_ctx->data.etherStatsDataSource_len *
+          sizeof(rowreq_ctx->data.etherStatsDataSource[0])))) {
+        /*
+         * allocate space for etherStatsDataSource data
+         */
+        (*etherStatsDataSource_val_ptr_ptr) =
+            malloc(rowreq_ctx->data.etherStatsDataSource_len *
+                   sizeof(rowreq_ctx->data.etherStatsDataSource[0]));
+        if (NULL == (*etherStatsDataSource_val_ptr_ptr)) {
+            snmp_log(LOG_ERR, "could not allocate memory\n");
+            return MFD_ERROR;
+        }
+    }
+    (*etherStatsDataSource_val_ptr_len_ptr) =
+        rowreq_ctx->data.etherStatsDataSource_len *
+        sizeof(rowreq_ctx->data.etherStatsDataSource[0]);
+    memcpy((*etherStatsDataSource_val_ptr_ptr),
+           rowreq_ctx->data.etherStatsDataSource,
+           rowreq_ctx->data.etherStatsDataSource_len *
+           sizeof(rowreq_ctx->data.etherStatsDataSource[0]));
+
+    return MFD_SUCCESS;
+}                               /* etherStatsDataSource_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsDropEvents
+ * etherStatsDropEvents is subid 3 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.3
+ * Description:
+The total number of events in which packets
+        were dropped by the probe due to lack of resources.
+        Note that this number is not necessarily the number of
+        packets dropped; it is just the number of times this
+        condition has been detected.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsDropEvents data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsDropEvents_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsDropEvents_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                         u_long * etherStatsDropEvents_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsDropEvents_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsDropEvents_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsDropEvents data.
+     * copy (* etherStatsDropEvents_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsDropEvents_val_ptr) =
+        rowreq_ctx->data.etherStatsDropEvents;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsDropEvents_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsOctets
+ * etherStatsOctets is subid 4 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.4
+ * Description:
+The total number of octets of data (including
+        those in bad packets) received on the
+        network (excluding framing bits but including
+        FCS octets).
+
+        This object can be used as a reasonable estimate of
+        10-Megabit ethernet utilization.  If greater precision is
+        desired, the etherStatsPkts and etherStatsOctets objects
+        should be sampled before and after a common interval.  The
+        differences in the sampled values are Pkts and Octets,
+        respectively, and the number of seconds in the interval is
+        Interval.  These values are used to calculate the Utilization
+        as follows:
+
+                         Pkts * (9.6 + 6.4) + (Octets * .8)
+         Utilization = -------------------------------------
+                                 Interval * 10,000
+
+        The result of this equation is the value Utilization which
+        is the percent utilization of the ethernet segment on a
+        scale of 0 to 100 percent.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsOctets data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsOctets_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsOctets_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                     u_long * etherStatsOctets_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsOctets_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsOctets_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsOctets data.
+     * copy (* etherStatsOctets_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsOctets_val_ptr) = rowreq_ctx->data.etherStatsOctets;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsOctets_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsPkts
+ * etherStatsPkts is subid 5 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.5
+ * Description:
+The total number of packets (including bad packets,
+        broadcast packets, and multicast packets) received.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsPkts data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsPkts_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsPkts_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                   u_long * etherStatsPkts_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsPkts_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsPkts_get", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsPkts data.
+     * copy (* etherStatsPkts_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsPkts_val_ptr) = rowreq_ctx->data.etherStatsPkts;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsPkts_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsBroadcastPkts
+ * etherStatsBroadcastPkts is subid 6 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.6
+ * Description:
+The total number of good packets received that were
+        directed to the broadcast address.  Note that this
+        does not include multicast packets.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsBroadcastPkts data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsBroadcastPkts_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsBroadcastPkts_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                            u_long * etherStatsBroadcastPkts_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsBroadcastPkts_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsBroadcastPkts_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsBroadcastPkts data.
+     * copy (* etherStatsBroadcastPkts_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsBroadcastPkts_val_ptr) =
+        rowreq_ctx->data.etherStatsBroadcastPkts;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsBroadcastPkts_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsMulticastPkts
+ * etherStatsMulticastPkts is subid 7 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.7
+ * Description:
+The total number of good packets received that were
+        directed to a multicast address.  Note that this number
+        does not include packets directed to the broadcast
+
+        address.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsMulticastPkts data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsMulticastPkts_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsMulticastPkts_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                            u_long * etherStatsMulticastPkts_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsMulticastPkts_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsMulticastPkts_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsMulticastPkts data.
+     * copy (* etherStatsMulticastPkts_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsMulticastPkts_val_ptr) =
+        rowreq_ctx->data.etherStatsMulticastPkts;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsMulticastPkts_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsCRCAlignErrors
+ * etherStatsCRCAlignErrors is subid 8 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.8
+ * Description:
+The total number of packets received that
+        had a length (excluding framing bits, but
+        including FCS octets) of between 64 and 1518
+        octets, inclusive, but had either a bad
+        Frame Check Sequence (FCS) with an integral
+        number of octets (FCS Error) or a bad FCS with
+        a non-integral number of octets (Alignment Error).
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsCRCAlignErrors data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsCRCAlignErrors_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsCRCAlignErrors_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                             u_long * etherStatsCRCAlignErrors_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsCRCAlignErrors_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsCRCAlignErrors_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsCRCAlignErrors data.
+     * copy (* etherStatsCRCAlignErrors_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsCRCAlignErrors_val_ptr) =
+        rowreq_ctx->data.etherStatsCRCAlignErrors;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsCRCAlignErrors_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsUndersizePkts
+ * etherStatsUndersizePkts is subid 9 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.9
+ * Description:
+The total number of packets received that were
+        less than 64 octets long (excluding framing bits,
+        but including FCS octets) and were otherwise well
+        formed.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsUndersizePkts data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsUndersizePkts_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsUndersizePkts_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                            u_long * etherStatsUndersizePkts_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsUndersizePkts_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsUndersizePkts_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsUndersizePkts data.
+     * copy (* etherStatsUndersizePkts_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsUndersizePkts_val_ptr) =
+        rowreq_ctx->data.etherStatsUndersizePkts;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsUndersizePkts_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsOversizePkts
+ * etherStatsOversizePkts is subid 10 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.10
+ * Description:
+The total number of packets received that were
+        longer than 1518 octets (excluding framing bits,
+        but including FCS octets) and were otherwise
+        well formed.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsOversizePkts data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsOversizePkts_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsOversizePkts_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                           u_long * etherStatsOversizePkts_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsOversizePkts_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsOversizePkts_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsOversizePkts data.
+     * copy (* etherStatsOversizePkts_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsOversizePkts_val_ptr) =
+        rowreq_ctx->data.etherStatsOversizePkts;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsOversizePkts_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsFragments
+ * etherStatsFragments is subid 11 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.11
+ * Description:
+The total number of packets received that were less than
+        64 octets in length (excluding framing bits but including
+        FCS octets) and had either a bad Frame Check Sequence
+        (FCS) with an integral number of octets (FCS Error) or a
+        bad FCS with a non-integral number of octets (Alignment
+        Error).
+
+        Note that it is entirely normal for etherStatsFragments to
+        increment.  This is because it counts both runts (which are
+        normal occurrences due to collisions) and noise hits.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsFragments data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsFragments_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsFragments_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                        u_long * etherStatsFragments_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsFragments_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsFragments_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsFragments data.
+     * copy (* etherStatsFragments_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsFragments_val_ptr) = rowreq_ctx->data.etherStatsFragments;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsFragments_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsJabbers
+ * etherStatsJabbers is subid 12 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.12
+ * Description:
+The total number of packets received that were
+        longer than 1518 octets (excluding framing bits,
+        but including FCS octets), and had either a bad
+        Frame Check Sequence (FCS) with an integral number
+        of octets (FCS Error) or a bad FCS with a non-integral
+        number of octets (Alignment Error).
+
+        Note that this definition of jabber is different
+        than the definition in IEEE-802.3 section 8.2.1.5
+        (10BASE5) and section 10.3.1.4 (10BASE2).  These
+        documents define jabber as the condition where any
+        packet exceeds 20 ms.  The allowed range to detect
+        jabber is between 20 ms and 150 ms.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsJabbers data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsJabbers_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsJabbers_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                      u_long * etherStatsJabbers_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsJabbers_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsJabbers_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsJabbers data.
+     * copy (* etherStatsJabbers_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsJabbers_val_ptr) = rowreq_ctx->data.etherStatsJabbers;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsJabbers_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsCollisions
+ * etherStatsCollisions is subid 13 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.13
+ * Description:
+The best estimate of the total number of collisions
+        on this Ethernet segment.
+
+        The value returned will depend on the location of the
+        RMON probe. Section 8.2.1.3 (10BASE-5) and section
+        10.3.1.3 (10BASE-2) of IEEE standard 802.3 states that a
+        station must detect a collision, in the receive mode, if
+        three or more stations are transmitting simultaneously.  A
+        repeater port must detect a collision when two or more
+
+        stations are transmitting simultaneously.  Thus a probe
+        placed on a repeater port could record more collisions
+        than a probe connected to a station on the same segment
+        would.
+
+        Probe location plays a much smaller role when considering
+        10BASE-T.  14.2.1.4 (10BASE-T) of IEEE standard 802.3
+        defines a collision as the simultaneous presence of signals
+        on the DO and RD circuits (transmitting and receiving
+        at the same time).  A 10BASE-T station can only detect
+        collisions when it is transmitting.  Thus probes placed on
+        a station and a repeater, should report the same number of
+        collisions.
+
+        Note also that an RMON probe inside a repeater should
+        ideally report collisions between the repeater and one or
+        more other hosts (transmit collisions as defined by IEEE
+        802.3k) plus receiver collisions observed on any coax
+        segments to which the repeater is connected.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsCollisions data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsCollisions_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsCollisions_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                         u_long * etherStatsCollisions_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsCollisions_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsCollisions_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsCollisions data.
+     * copy (* etherStatsCollisions_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsCollisions_val_ptr) =
+        rowreq_ctx->data.etherStatsCollisions;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsCollisions_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsPkts64Octets
+ * etherStatsPkts64Octets is subid 14 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.14
+ * Description:
+The total number of packets (including bad
+        packets) received that were 64 octets in length
+        (excluding framing bits but including FCS octets).
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsPkts64Octets data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsPkts64Octets_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsPkts64Octets_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                           u_long * etherStatsPkts64Octets_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsPkts64Octets_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsPkts64Octets_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsPkts64Octets data.
+     * copy (* etherStatsPkts64Octets_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsPkts64Octets_val_ptr) =
+        rowreq_ctx->data.etherStatsPkts64Octets;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsPkts64Octets_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsPkts65to127Octets
+ * etherStatsPkts65to127Octets is subid 15 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.15
+ * Description:
+The total number of packets (including bad
+        packets) received that were between
+        65 and 127 octets in length inclusive
+        (excluding framing bits but including FCS octets).
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsPkts65to127Octets data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsPkts65to127Octets_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsPkts65to127Octets_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                                u_long *
+                                etherStatsPkts65to127Octets_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsPkts65to127Octets_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsPkts65to127Octets_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsPkts65to127Octets data.
+     * copy (* etherStatsPkts65to127Octets_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsPkts65to127Octets_val_ptr) =
+        rowreq_ctx->data.etherStatsPkts65to127Octets;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsPkts65to127Octets_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsPkts128to255Octets
+ * etherStatsPkts128to255Octets is subid 16 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.16
+ * Description:
+The total number of packets (including bad
+        packets) received that were between
+        128 and 255 octets in length inclusive
+        (excluding framing bits but including FCS octets).
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsPkts128to255Octets data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsPkts128to255Octets_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsPkts128to255Octets_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                                 u_long *
+                                 etherStatsPkts128to255Octets_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsPkts128to255Octets_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsPkts128to255Octets_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsPkts128to255Octets data.
+     * copy (* etherStatsPkts128to255Octets_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsPkts128to255Octets_val_ptr) =
+        rowreq_ctx->data.etherStatsPkts128to255Octets;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsPkts128to255Octets_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsPkts256to511Octets
+ * etherStatsPkts256to511Octets is subid 17 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.17
+ * Description:
+The total number of packets (including bad
+        packets) received that were between
+        256 and 511 octets in length inclusive
+        (excluding framing bits but including FCS octets).
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsPkts256to511Octets data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsPkts256to511Octets_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsPkts256to511Octets_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                                 u_long *
+                                 etherStatsPkts256to511Octets_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsPkts256to511Octets_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsPkts256to511Octets_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsPkts256to511Octets data.
+     * copy (* etherStatsPkts256to511Octets_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsPkts256to511Octets_val_ptr) =
+        rowreq_ctx->data.etherStatsPkts256to511Octets;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsPkts256to511Octets_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsPkts512to1023Octets
+ * etherStatsPkts512to1023Octets is subid 18 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.18
+ * Description:
+The total number of packets (including bad
+        packets) received that were between
+        512 and 1023 octets in length inclusive
+        (excluding framing bits but including FCS octets).
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsPkts512to1023Octets data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsPkts512to1023Octets_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsPkts512to1023Octets_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                                  u_long *
+                                  etherStatsPkts512to1023Octets_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsPkts512to1023Octets_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsPkts512to1023Octets_get", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsPkts512to1023Octets data.
+     * copy (* etherStatsPkts512to1023Octets_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsPkts512to1023Octets_val_ptr) =
+        rowreq_ctx->data.etherStatsPkts512to1023Octets;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsPkts512to1023Octets_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsPkts1024to1518Octets
+ * etherStatsPkts1024to1518Octets is subid 19 of etherStatsEntry.
+ * Its status is Current, and its access level is ReadOnly.
+ * OID: .1.3.6.1.2.1.16.1.1.1.19
+ * Description:
+The total number of packets (including bad
+        packets) received that were between
+        1024 and 1518 octets in length inclusive
+        (excluding framing bits but including FCS octets).
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   0
+ *
+ *
+ * Its syntax is COUNTER (based on perltype COUNTER)
+ * The net-snmp type is ASN_COUNTER. The C type decl is u_long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsPkts1024to1518Octets data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsPkts1024to1518Octets_val_ptr
+ *        Pointer to storage for a u_long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsPkts1024to1518Octets_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                                   u_long *
+                                   etherStatsPkts1024to1518Octets_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsPkts1024to1518Octets_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsPkts1024to1518Octets_get", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsPkts1024to1518Octets data.
+     * copy (* etherStatsPkts1024to1518Octets_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsPkts1024to1518Octets_val_ptr) =
+        rowreq_ctx->data.etherStatsPkts1024to1518Octets;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsPkts1024to1518Octets_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsOwner
+ * etherStatsOwner is subid 20 of etherStatsEntry.
+ * Its status is Current, and its access level is Create.
+ * OID: .1.3.6.1.2.1.16.1.1.1.20
+ * Description:
+The entity that configured this entry and is therefore
+        using the resources assigned to it.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 1      hashint   0
+ *   settable   1
+ *
+ * Ranges:  0 - 127;
+ *
+ * Its syntax is OwnerString (based on perltype OCTETSTR)
+ * The net-snmp type is ASN_OCTET_STR. The C type decl is char (char)
+ * This data type requires a length.  (Max 127)
+ */
+/**
+ * Extract the current value of the etherStatsOwner data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsOwner_val_ptr_ptr
+ *        Pointer to storage for a char variable
+ * @param etherStatsOwner_val_ptr_len_ptr
+ *        Pointer to a size_t. On entry, it will contain the size (in bytes)
+ *        pointed to by etherStatsOwner.
+ *        On exit, this value should contain the data size (in bytes).
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+*
+ * @note If you need more than (*etherStatsOwner_val_ptr_len_ptr) bytes of memory,
+ *       allocate it using malloc() and update etherStatsOwner_val_ptr_ptr.
+ *       <b>DO NOT</b> free the previous pointer.
+ *       The MFD helper will release the memory you allocate.
+ *
+ * @remark If you call this function yourself, you are responsible
+ *         for checking if the pointer changed, and freeing any
+ *         previously allocated memory. (Not necessary if you pass
+ *         in a pointer to static memory, obviously.)
+ */
+int
+etherStatsOwner_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                    char **etherStatsOwner_val_ptr_ptr,
+                    size_t *etherStatsOwner_val_ptr_len_ptr)
+{
+   /** we should have a non-NULL pointer and enough storage */
+    netsnmp_assert((NULL != etherStatsOwner_val_ptr_ptr)
+                   && (NULL != *etherStatsOwner_val_ptr_ptr));
+    netsnmp_assert(NULL != etherStatsOwner_val_ptr_len_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsOwner_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsOwner data.
+     * copy (* etherStatsOwner_val_ptr_ptr ) data and (* etherStatsOwner_val_ptr_len_ptr ) from rowreq_ctx->data
+     */
+    /*
+     * make sure there is enough space for etherStatsOwner data
+     */
+    if ((NULL == (*etherStatsOwner_val_ptr_ptr)) ||
+        ((*etherStatsOwner_val_ptr_len_ptr) <
+         (rowreq_ctx->data.etherStatsOwner_len *
+          sizeof(rowreq_ctx->data.etherStatsOwner[0])))) {
+        /*
+         * allocate space for etherStatsOwner data
+         */
+        (*etherStatsOwner_val_ptr_ptr) =
+            malloc(rowreq_ctx->data.etherStatsOwner_len *
+                   sizeof(rowreq_ctx->data.etherStatsOwner[0]));
+        if (NULL == (*etherStatsOwner_val_ptr_ptr)) {
+            snmp_log(LOG_ERR, "could not allocate memory\n");
+            return MFD_ERROR;
+        }
+    }
+    (*etherStatsOwner_val_ptr_len_ptr) =
+        rowreq_ctx->data.etherStatsOwner_len *
+        sizeof(rowreq_ctx->data.etherStatsOwner[0]);
+    memcpy((*etherStatsOwner_val_ptr_ptr),
+           rowreq_ctx->data.etherStatsOwner,
+           rowreq_ctx->data.etherStatsOwner_len *
+           sizeof(rowreq_ctx->data.etherStatsOwner[0]));
+
+    return MFD_SUCCESS;
+}                               /* etherStatsOwner_get */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsStatus
+ * etherStatsStatus is subid 21 of etherStatsEntry.
+ * Its status is Current, and its access level is Create.
+ * OID: .1.3.6.1.2.1.16.1.1.1.21
+ * Description:
+The status of this etherStats entry.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  1      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   1
+ *
+ * Enum range: 2/8. Values:  valid(1), createRequest(2), underCreation(3), invalid(4)
+ *
+ * Its syntax is EntryStatus (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/**
+ * Extract the current value of the etherStatsStatus data.
+ *
+ * Set a value using the data context for the row.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsStatus_val_ptr
+ *        Pointer to storage for a long variable
+ *
+ * @retval MFD_SUCCESS         : success
+ * @retval MFD_SKIP            : skip this node (no value for now)
+ * @retval MFD_ERROR           : Any other error
+ */
+int
+etherStatsStatus_get(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                     u_long * etherStatsStatus_val_ptr)
+{
+   /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != etherStatsStatus_val_ptr);
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsStatus_get",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:231:o: |-> Extract the current value of the etherStatsStatus data.
+     * copy (* etherStatsStatus_val_ptr ) from rowreq_ctx->data
+     */
+    (*etherStatsStatus_val_ptr) = rowreq_ctx->data.etherStatsStatus;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsStatus_get */
+
+
+
+/** @} */
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_get.h b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_get.h
new file mode 100644
index 0000000..5775212
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_get.h
@@ -0,0 +1,151 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 12088 $ of $
+ *
+ * $Id:$
+ *
+ * @file etherStatsTable_data_get.h
+ *
+ * @addtogroup get
+ *
+ * Prototypes for get functions
+ *
+ * @{
+ */
+#ifndef ETHERSTATSTABLE_DATA_GET_H
+#define ETHERSTATSTABLE_DATA_GET_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    /*
+     *********************************************************************
+     * GET function declarations
+     */
+
+    /*
+     *********************************************************************
+     * GET Table declarations
+     */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table etherStatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+    /*
+     * RMON-MIB::etherStatsTable is subid 1 of statistics.
+     * Its status is Current.
+     * OID: .1.3.6.1.2.1.16.1.1, length: 9
+     */
+    /*
+     * indexes
+     */
+
+    int             etherStatsDataSource_get(etherStatsTable_rowreq_ctx *
+                                             rowreq_ctx,
+                                             oid **
+                                             etherStatsDataSource_val_ptr_ptr,
+                                             size_t
+                                             *etherStatsDataSource_val_ptr_len_ptr);
+    int             etherStatsDropEvents_get(etherStatsTable_rowreq_ctx *
+                                             rowreq_ctx,
+                                             u_long *
+                                             etherStatsDropEvents_val_ptr);
+    int             etherStatsOctets_get(etherStatsTable_rowreq_ctx *
+                                         rowreq_ctx,
+                                         u_long *
+                                         etherStatsOctets_val_ptr);
+    int             etherStatsPkts_get(etherStatsTable_rowreq_ctx *
+                                       rowreq_ctx,
+                                       u_long * etherStatsPkts_val_ptr);
+    int             etherStatsBroadcastPkts_get(etherStatsTable_rowreq_ctx
+                                                * rowreq_ctx,
+                                                u_long *
+                                                etherStatsBroadcastPkts_val_ptr);
+    int             etherStatsMulticastPkts_get(etherStatsTable_rowreq_ctx
+                                                * rowreq_ctx,
+                                                u_long *
+                                                etherStatsMulticastPkts_val_ptr);
+    int             etherStatsCRCAlignErrors_get(etherStatsTable_rowreq_ctx
+                                                 * rowreq_ctx,
+                                                 u_long *
+                                                 etherStatsCRCAlignErrors_val_ptr);
+    int             etherStatsUndersizePkts_get(etherStatsTable_rowreq_ctx
+                                                * rowreq_ctx,
+                                                u_long *
+                                                etherStatsUndersizePkts_val_ptr);
+    int             etherStatsOversizePkts_get(etherStatsTable_rowreq_ctx *
+                                               rowreq_ctx,
+                                               u_long *
+                                               etherStatsOversizePkts_val_ptr);
+    int             etherStatsFragments_get(etherStatsTable_rowreq_ctx *
+                                            rowreq_ctx,
+                                            u_long *
+                                            etherStatsFragments_val_ptr);
+    int             etherStatsJabbers_get(etherStatsTable_rowreq_ctx *
+                                          rowreq_ctx,
+                                          u_long *
+                                          etherStatsJabbers_val_ptr);
+    int             etherStatsCollisions_get(etherStatsTable_rowreq_ctx *
+                                             rowreq_ctx,
+                                             u_long *
+                                             etherStatsCollisions_val_ptr);
+    int             etherStatsPkts64Octets_get(etherStatsTable_rowreq_ctx *
+                                               rowreq_ctx,
+                                               u_long *
+                                               etherStatsPkts64Octets_val_ptr);
+    int            
+        etherStatsPkts65to127Octets_get(etherStatsTable_rowreq_ctx *
+                                        rowreq_ctx,
+                                        u_long *
+                                        etherStatsPkts65to127Octets_val_ptr);
+    int            
+        etherStatsPkts128to255Octets_get(etherStatsTable_rowreq_ctx *
+                                         rowreq_ctx,
+                                         u_long *
+                                         etherStatsPkts128to255Octets_val_ptr);
+    int            
+        etherStatsPkts256to511Octets_get(etherStatsTable_rowreq_ctx *
+                                         rowreq_ctx,
+                                         u_long *
+                                         etherStatsPkts256to511Octets_val_ptr);
+    int            
+        etherStatsPkts512to1023Octets_get(etherStatsTable_rowreq_ctx *
+                                          rowreq_ctx,
+                                          u_long *
+                                          etherStatsPkts512to1023Octets_val_ptr);
+    int            
+        etherStatsPkts1024to1518Octets_get(etherStatsTable_rowreq_ctx *
+                                           rowreq_ctx,
+                                           u_long *
+                                           etherStatsPkts1024to1518Octets_val_ptr);
+    int             etherStatsOwner_get(etherStatsTable_rowreq_ctx *
+                                        rowreq_ctx,
+                                        char **etherStatsOwner_val_ptr_ptr,
+                                        size_t
+                                        *etherStatsOwner_val_ptr_len_ptr);
+    int             etherStatsStatus_get(etherStatsTable_rowreq_ctx *
+                                         rowreq_ctx,
+                                         u_long *
+                                         etherStatsStatus_val_ptr);
+
+
+    int            
+        etherStatsTable_indexes_set_tbl_idx(etherStatsTable_mib_index *
+                                            tbl_idx,
+                                            long etherStatsIndex_val);
+    int             etherStatsTable_indexes_set(etherStatsTable_rowreq_ctx
+                                                * rowreq_ctx,
+                                                long etherStatsIndex_val);
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* ETHERSTATSTABLE_DATA_GET_H */
+/** @} */
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_set.c b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_set.c
new file mode 100644
index 0000000..27f3a26
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_set.c
@@ -0,0 +1,977 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 12077 $ of $
+ *
+ * $Id:$
+ *
+ */
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "etherStatsTable.h"
+
+
+/** @defgroup data_set data_set: Routines to set data
+ *
+ * These routines are used to set the value for individual objects. The
+ * row context is passed, along with the new value.
+ * 
+ * @{
+ */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table etherStatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * RMON-MIB::etherStatsTable is subid 1 of statistics.
+ * Its status is Current.
+ * OID: .1.3.6.1.2.1.16.1.1, length: 9
+ */
+    /*
+     * NOTE: if you update this chart, please update the versions in
+     *       local/mib2c-conf.d/parent-set.m2i
+     *       agent/mibgroup/helpers/baby_steps.c
+     * while you're at it.
+     */
+    /*
+     ***********************************************************************
+     * Baby Steps Flow Chart (2004.06.05)                                  *
+     *                                                                     *
+     * +--------------+    +================+    U = unconditional path    *
+     * |optional state|    ||required state||    S = path for success      *
+     * +--------------+    +================+    E = path for error        *
+     ***********************************************************************
+     *
+     *                        +--------------+
+     *                        |     pre      |
+     *                        |   request    |
+     *                        +--------------+
+     *                               | U
+     * +-------------+        +==============+
+     * |    row    |f|<-------||  object    ||
+     * |  create   |1|      E ||  lookup    ||
+     * +-------------+        +==============+
+     *     E |   | S                 | S
+     *       |   +------------------>|
+     *       |                +==============+
+     *       |              E ||   check    ||
+     *       |<---------------||   values   ||
+     *       |                +==============+
+     *       |                       | S
+     *       |                +==============+
+     *       |       +<-------||   undo     ||
+     *       |       |      E ||   setup    ||
+     *       |       |        +==============+
+     *       |       |               | S
+     *       |       |        +==============+
+     *       |       |        ||    set     ||-------------------------->+
+     *       |       |        ||   value    || E                         |
+     *       |       |        +==============+                           |
+     *       |       |               | S                                 |
+     *       |       |        +--------------+                           |
+     *       |       |        |    check     |-------------------------->|
+     *       |       |        |  consistency | E                         |
+     *       |       |        +--------------+                           |
+     *       |       |               | S                                 |
+     *       |       |        +==============+         +==============+  |
+     *       |       |        ||   commit   ||-------->||     undo   ||  |
+     *       |       |        ||            || E       ||    commit  ||  |
+     *       |       |        +==============+         +==============+  |
+     *       |       |               | S                     U |<--------+
+     *       |       |        +--------------+         +==============+
+     *       |       |        | irreversible |         ||    undo    ||
+     *       |       |        |    commit    |         ||     set    ||
+     *       |       |        +--------------+         +==============+
+     *       |       |               | U                     U |
+     *       |       +-------------->|<------------------------+
+     *       |                +==============+
+     *       |                ||   undo     ||
+     *       |                ||  cleanup   ||
+     *       |                +==============+
+     *       +---------------------->| U
+     *                               |
+     *                          (err && f1)------------------->+
+     *                               |                         |
+     *                        +--------------+         +--------------+
+     *                        |    post      |<--------|      row     |
+     *                        |   request    |       U |    release   |
+     *                        +--------------+         +--------------+
+     *
+     */
+
+/**
+ * Setup up context with information needed to undo a set request.
+ *
+ * This function will be called before the individual node undo setup
+ * functions are called. If you need to do any undo setup that is not
+ * related to a specific column, you can do it here.
+ *
+ * Note that the undo context has been allocated with
+ * etherStatsTable_allocate_data(), but may need extra
+ * initialization similar to what you may have done in
+ * etherStatsTable_rowreq_ctx_init().
+ * Note that an individual node's undo_setup function will only be called
+ * if that node is being set to a new value.
+ *
+ * If there is any setup specific to a particular column (e.g. allocating
+ * memory for a string), you should do that setup in the node's undo_setup
+ * function, so it won't be done unless it is necessary.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the table context (etherStatsTable_rowreq_ctx)
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR   : error. set will fail.
+ */
+int
+etherStatsTable_undo_setup(etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    int             rc = MFD_SUCCESS;
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_undo_setup",
+                "called\n"));
+
+    /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:451:M: |-> Setup etherStatsTable undo.
+     * set up etherStatsTable undo information, in preparation for a set.
+     * Undo storage is in (* etherStatsStatus_val_ptr )*
+     */
+
+    return rc;
+}                               /* etherStatsTable_undo_setup */
+
+/**
+ * Undo a set request.
+ *
+ * This function will be called before the individual node undo
+ * functions are called. If you need to do any undo that is not
+ * related to a specific column, you can do it here.
+ *
+ * Note that an individual node's undo function will only be called
+ * if that node is being set to a new value.
+ *
+ * If there is anything  specific to a particular column (e.g. releasing
+ * memory for a string), you should do that setup in the node's undo
+ * function, so it won't be done unless it is necessary.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the table context (etherStatsTable_rowreq_ctx)
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR   : error. set will fail.
+ */
+int
+etherStatsTable_undo(etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    int             rc = MFD_SUCCESS;
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_undo",
+                "called\n"));
+
+    /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:451:M: |-> etherStatsTable undo.
+     * etherStatsTable undo information, in response to a failed set.
+     * Undo storage is in (* etherStatsStatus_val_ptr )*
+     */
+
+    return rc;
+}                               /* etherStatsTable_undo_setup */
+
+/**
+ * Cleanup up context undo information.
+ *
+ * This function will be called after set/commit processing. If you
+ * allocated any resources in undo_setup, this is the place to release
+ * those resources.
+ *
+ * This function is called regardless of the success or failure of the set
+ * request. If you need to perform different steps for cleanup depending
+ * on success or failure, you can add a flag to the rowreq_ctx.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the table context (etherStatsTable_rowreq_ctx)
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR   : error
+ */
+int
+etherStatsTable_undo_cleanup(etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    int             rc = MFD_SUCCESS;
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_undo_cleanup",
+                "called\n"));
+
+    /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:452:M: |-> Cleanup etherStatsTable undo.
+     * Undo storage is in (* etherStatsStatus_val_ptr )*
+     */
+
+    return rc;
+}                               /* etherStatsTable_undo_cleanup */
+
+/**
+ * commit new values.
+ *
+ * At this point, you should have done everything you can to ensure that
+ * this commit will not fail.
+ *
+ * Should you need different behavior depending on which columns were
+ * set, rowreq_ctx->column_set_flags will indicate which writeable columns were
+ * set. The definitions for the COLUMN_*_FLAG bits can be found in
+ * etherStatsTable_oids.h.
+ * A new row will have the MFD_ROW_CREATED bit set in rowreq_flags.
+ *
+ * @param etherStatsTable_rowreq_ctx
+ *        Pointer to the users context.
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR   : error
+ */
+int
+etherStatsTable_commit(etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    int             rc = MFD_SUCCESS;
+    int             save_flags;
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_commit",
+                "called\n"));
+
+    /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * save flags, then clear until we actually do something
+     */
+    save_flags = rowreq_ctx->column_set_flags;
+    rowreq_ctx->column_set_flags = 0;
+
+    /*
+     * commit etherStatsTable data
+     * 1) check the column's flag in save_flags to see if it was set.
+     * 2) clear the flag when you handle that column
+     * 3) set the column's flag in column_set_flags if it needs undo
+     *    processing in case of a failure.
+     */
+    if (save_flags & COLUMN_ETHERSTATSDATASOURCE_FLAG) {
+        save_flags &= ~COLUMN_ETHERSTATSDATASOURCE_FLAG;        /* clear etherStatsDataSource */
+        /*
+         * TODO:482:o: |-> commit column etherStatsDataSource.
+         */
+        rc = -1;
+        if (-1 == rc) {
+            snmp_log(LOG_ERR,
+                     "etherStatsTable column etherStatsDataSource commit failed\n");
+        } else {
+            /*
+             * set flag, in case we need to undo etherStatsDataSource
+             */
+            rowreq_ctx->column_set_flags |=
+                COLUMN_ETHERSTATSDATASOURCE_FLAG;
+        }
+    }
+
+    if (save_flags & COLUMN_ETHERSTATSOWNER_FLAG) {
+        save_flags &= ~COLUMN_ETHERSTATSOWNER_FLAG;     /* clear etherStatsOwner */
+        /*
+         * TODO:482:o: |-> commit column etherStatsOwner.
+         */
+        rc = -1;
+        if (-1 == rc) {
+            snmp_log(LOG_ERR,
+                     "etherStatsTable column etherStatsOwner commit failed\n");
+        } else {
+            /*
+             * set flag, in case we need to undo etherStatsOwner
+             */
+            rowreq_ctx->column_set_flags |= COLUMN_ETHERSTATSOWNER_FLAG;
+        }
+    }
+
+    if (save_flags & COLUMN_ETHERSTATSSTATUS_FLAG) {
+        save_flags &= ~COLUMN_ETHERSTATSSTATUS_FLAG;    /* clear etherStatsStatus */
+        /*
+         * TODO:482:o: |-> commit column etherStatsStatus.
+         */
+        rc = -1;
+        if (-1 == rc) {
+            snmp_log(LOG_ERR,
+                     "etherStatsTable column etherStatsStatus commit failed\n");
+        } else {
+            /*
+             * set flag, in case we need to undo etherStatsStatus
+             */
+            rowreq_ctx->column_set_flags |= COLUMN_ETHERSTATSSTATUS_FLAG;
+        }
+    }
+
+    /*
+     * if we successfully commited this row, set the dirty flag.
+     */
+    if (MFD_SUCCESS == rc) {
+        rowreq_ctx->rowreq_flags |= MFD_ROW_DIRTY;
+    }
+
+    if (save_flags) {
+        snmp_log(LOG_ERR, "unhandled columns (0x%x) in commit\n",
+                 save_flags);
+        return MFD_ERROR;
+    }
+
+    return rc;
+}                               /* etherStatsTable_commit */
+
+/**
+ * undo commit new values.
+ *
+ * Should you need different behavior depending on which columns were
+ * set, rowreq_ctx->column_set_flags will indicate which writeable columns were
+ * set. The definitions for the COLUMN_*_FLAG bits can be found in
+ * etherStatsTable_oids.h.
+ * A new row will have the MFD_ROW_CREATED bit set in rowreq_flags.
+ *
+ * @param etherStatsTable_rowreq_ctx
+ *        Pointer to the users context.
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR   : error
+ */
+int
+etherStatsTable_undo_commit(etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    int             rc = MFD_SUCCESS;
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_undo_commit",
+                "called\n"));
+
+    /** we should have a non-NULL pointer */
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:485:M: |-> Undo etherStatsTable commit.
+     * check the column's flag in rowreq_ctx->column_set_flags to see
+     * if it was set during commit, then undo it.
+     *
+     * eg: if (rowreq_ctx->column_set_flags & COLUMN__FLAG) {}
+     */
+
+
+    /*
+     * if we successfully un-commited this row, clear the dirty flag.
+     */
+    if (MFD_SUCCESS == rc) {
+        rowreq_ctx->rowreq_flags &= ~MFD_ROW_DIRTY;
+    }
+
+    return rc;
+}                               /* etherStatsTable_undo_commit */
+
+/*
+ * TODO:440:M: Implement etherStatsTable node value checks.
+ * TODO:450:M: Implement etherStatsTable undo functions.
+ * TODO:460:M: Implement etherStatsTable set functions.
+ * TODO:480:M: Implement etherStatsTable commit functions.
+ */
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsDataSource
+ * etherStatsDataSource is subid 2 of etherStatsEntry.
+ * Its status is Current, and its access level is Create.
+ * OID: .1.3.6.1.2.1.16.1.1.1.2
+ * Description:
+This object identifies the source of the data that
+        this etherStats entry is configured to analyze.  This
+        source can be any ethernet interface on this device.
+        In order to identify a particular interface, this object
+        shall identify the instance of the ifIndex object,
+        defined in RFC 2233 [17], for the desired interface.
+        For example, if an entry were to receive data from
+        interface #1, this object would be set to ifIndex.1.
+
+        The statistics in this group reflect all packets
+        on the local network segment attached to the identified
+        interface.
+
+        An agent may or may not be able to tell if fundamental
+        changes to the media of the interface have occurred and
+        necessitate an invalidation of this entry.  For example, a
+        hot-pluggable ethernet card could be pulled out and replaced
+        by a token-ring card.  In such a case, if the agent has such
+        knowledge of the change, it is recommended that it
+        invalidate this entry.
+
+        This object may not be modified if the associated
+        etherStatsStatus object is equal to valid(1).
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   1
+ *
+ *
+ * Its syntax is OBJECTID (based on perltype OBJECTID)
+ * The net-snmp type is ASN_OBJECT_ID. The C type decl is oid (oid)
+ * This data type requires a length.
+ */
+/**
+ * Check that the proposed new value is potentially valid.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsDataSource_val_ptr
+ *        A oid containing the new value.
+ * @param etherStatsDataSource_val_ptr_len
+ *        The size (in bytes) of the data pointed to by etherStatsDataSource_val_ptr
+ *
+ * @retval MFD_SUCCESS        : incoming value is legal
+ * @retval MFD_NOT_VALID_NOW  : incoming value is not valid now
+ * @retval MFD_NOT_VALID_EVER : incoming value is never valid
+ *
+ * This is the place to check for requirements that are not
+ * expressed in the mib syntax (for example, a requirement that
+ * is detailed in the description for an object).
+ *
+ * You should check that the requested change between the undo value and the
+ * new value is legal (ie, the transistion from one value to another
+ * is legal).
+ *      
+ *@note
+ * This check is only to determine if the new value
+ * is \b potentially valid. This is the first check of many, and
+ * is one of the simplest ones.
+ * 
+ *@note
+ * this is not the place to do any checks for values
+ * which depend on some other value in the mib. Those
+ * types of checks should be done in the
+ * etherStatsTable_check_dependencies() function.
+ *
+ * The following checks have already been done for you:
+ *    The syntax is ASN_OBJECT_ID
+ *    The length is < sizeof(rowreq_ctx->data.etherStatsDataSource).
+ *
+ * If there a no other checks you need to do, simply return MFD_SUCCESS.
+ *
+ */
+int
+etherStatsDataSource_check_value(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                                 oid * etherStatsDataSource_val_ptr,
+                                 size_t etherStatsDataSource_val_ptr_len)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsDataSource_check_value",
+                "called\n"));
+
+    /** should never get a NULL pointer */
+    netsnmp_assert(NULL != rowreq_ctx);
+    netsnmp_assert(NULL != etherStatsDataSource_val_ptr);
+
+    /*
+     * TODO:441:o: |-> Check for valid etherStatsDataSource value.
+     */
+
+    return MFD_SUCCESS;         /* etherStatsDataSource value not illegal */
+}                               /* etherStatsDataSource_check_value */
+
+/**
+ * Save old value information
+ *
+ * @param rowreq_ctx
+ *        Pointer to the table context (etherStatsTable_rowreq_ctx)
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR   : error. set will fail.
+ *
+ * This function will be called after the table level undo setup function
+ * etherStatsTable_undo_setup has been called.
+ *
+ *@note
+ * this function will only be called if a new value is set for this column.
+ *
+ * If there is any setup specific to a particular column (e.g. allocating
+ * memory for a string), you should do that setup in this function, so it
+ * won't be done unless it is necessary.
+ */
+int
+etherStatsDataSource_undo_setup(etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsDataSource_undo_setup",
+                "called\n"));
+
+    /** should never get a NULL pointer */
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:455:o: |-> Setup etherStatsDataSource undo.
+     */
+    /*
+     * copy etherStatsDataSource and etherStatsDataSource_len data
+     * set rowreq_ctx->undo->etherStatsDataSource from rowreq_ctx->data.etherStatsDataSource
+     */
+    memcpy(rowreq_ctx->undo->etherStatsDataSource,
+           rowreq_ctx->data.etherStatsDataSource,
+           (rowreq_ctx->data.etherStatsDataSource_len *
+            sizeof(rowreq_ctx->undo->etherStatsDataSource[0])));
+    rowreq_ctx->undo->etherStatsDataSource_len =
+        rowreq_ctx->data.etherStatsDataSource_len;
+
+
+    return MFD_SUCCESS;
+}                               /* etherStatsDataSource_undo_setup */
+
+/**
+ * Set the new value.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the users context. You should know how to
+ *        manipulate the value from this object.
+ * @param etherStatsDataSource_val_ptr
+ *        A oid containing the new value.
+ * @param etherStatsDataSource_val_ptr_len
+ *        The size (in bytes) of the data pointed to by etherStatsDataSource_val_ptr
+ */
+int
+etherStatsDataSource_set(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                         oid * etherStatsDataSource_val_ptr,
+                         size_t etherStatsDataSource_val_ptr_len)
+{
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsDataSource_set",
+                "called\n"));
+
+    /** should never get a NULL pointer */
+    netsnmp_assert(NULL != rowreq_ctx);
+    netsnmp_assert(NULL != etherStatsDataSource_val_ptr);
+
+    /*
+     * TODO:461:M: |-> Set etherStatsDataSource value.
+     * set etherStatsDataSource value in rowreq_ctx->data
+     */
+    memcpy(rowreq_ctx->data.etherStatsDataSource,
+           etherStatsDataSource_val_ptr, etherStatsDataSource_val_ptr_len);
+    /** convert bytes to number of oid */
+    rowreq_ctx->data.etherStatsDataSource_len =
+        etherStatsDataSource_val_ptr_len /
+        sizeof(etherStatsDataSource_val_ptr[0]);
+
+    return MFD_SUCCESS;
+}                               /* etherStatsDataSource_set */
+
+/**
+ * undo the previous set.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the users context.
+ */
+int
+etherStatsDataSource_undo(etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsDataSource_undo",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:456:o: |-> Clean up etherStatsDataSource undo.
+     */
+    /*
+     * copy etherStatsDataSource and etherStatsDataSource_len data
+     * set rowreq_ctx->data.etherStatsDataSource from rowreq_ctx->undo->etherStatsDataSource
+     */
+    memcpy(rowreq_ctx->data.etherStatsDataSource,
+           rowreq_ctx->undo->etherStatsDataSource,
+           (rowreq_ctx->undo->etherStatsDataSource_len *
+            sizeof(rowreq_ctx->data.etherStatsDataSource[0])));
+    rowreq_ctx->data.etherStatsDataSource_len =
+        rowreq_ctx->undo->etherStatsDataSource_len;
+
+
+    return MFD_SUCCESS;
+}                               /* etherStatsDataSource_undo */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsOwner
+ * etherStatsOwner is subid 20 of etherStatsEntry.
+ * Its status is Current, and its access level is Create.
+ * OID: .1.3.6.1.2.1.16.1.1.1.20
+ * Description:
+The entity that configured this entry and is therefore
+        using the resources assigned to it.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  0      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 1      hashint   0
+ *   settable   1
+ *
+ * Ranges:  0 - 127;
+ *
+ * Its syntax is OwnerString (based on perltype OCTETSTR)
+ * The net-snmp type is ASN_OCTET_STR. The C type decl is char (char)
+ * This data type requires a length.  (Max 127)
+ */
+/**
+ * Check that the proposed new value is potentially valid.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsOwner_val_ptr
+ *        A char containing the new value.
+ * @param etherStatsOwner_val_ptr_len
+ *        The size (in bytes) of the data pointed to by etherStatsOwner_val_ptr
+ *
+ * @retval MFD_SUCCESS        : incoming value is legal
+ * @retval MFD_NOT_VALID_NOW  : incoming value is not valid now
+ * @retval MFD_NOT_VALID_EVER : incoming value is never valid
+ *
+ * This is the place to check for requirements that are not
+ * expressed in the mib syntax (for example, a requirement that
+ * is detailed in the description for an object).
+ *
+ * You should check that the requested change between the undo value and the
+ * new value is legal (ie, the transistion from one value to another
+ * is legal).
+ *      
+ *@note
+ * This check is only to determine if the new value
+ * is \b potentially valid. This is the first check of many, and
+ * is one of the simplest ones.
+ * 
+ *@note
+ * this is not the place to do any checks for values
+ * which depend on some other value in the mib. Those
+ * types of checks should be done in the
+ * etherStatsTable_check_dependencies() function.
+ *
+ * The following checks have already been done for you:
+ *    The syntax is ASN_OCTET_STR
+ *    The length is < sizeof(rowreq_ctx->data.etherStatsOwner).
+ *    The length is in (one of) the range set(s):  0 - 127
+ *
+ * If there a no other checks you need to do, simply return MFD_SUCCESS.
+ *
+ */
+int
+etherStatsOwner_check_value(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                            char *etherStatsOwner_val_ptr,
+                            size_t etherStatsOwner_val_ptr_len)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsOwner_check_value",
+                "called\n"));
+
+    /** should never get a NULL pointer */
+    netsnmp_assert(NULL != rowreq_ctx);
+    netsnmp_assert(NULL != etherStatsOwner_val_ptr);
+
+    /*
+     * TODO:441:o: |-> Check for valid etherStatsOwner value.
+     */
+
+    return MFD_SUCCESS;         /* etherStatsOwner value not illegal */
+}                               /* etherStatsOwner_check_value */
+
+/**
+ * Save old value information
+ *
+ * @param rowreq_ctx
+ *        Pointer to the table context (etherStatsTable_rowreq_ctx)
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR   : error. set will fail.
+ *
+ * This function will be called after the table level undo setup function
+ * etherStatsTable_undo_setup has been called.
+ *
+ *@note
+ * this function will only be called if a new value is set for this column.
+ *
+ * If there is any setup specific to a particular column (e.g. allocating
+ * memory for a string), you should do that setup in this function, so it
+ * won't be done unless it is necessary.
+ */
+int
+etherStatsOwner_undo_setup(etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsOwner_undo_setup",
+                "called\n"));
+
+    /** should never get a NULL pointer */
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:455:o: |-> Setup etherStatsOwner undo.
+     */
+    /*
+     * copy etherStatsOwner and etherStatsOwner_len data
+     * set rowreq_ctx->undo->etherStatsOwner from rowreq_ctx->data.etherStatsOwner
+     */
+    memcpy(rowreq_ctx->undo->etherStatsOwner,
+           rowreq_ctx->data.etherStatsOwner,
+           (rowreq_ctx->data.etherStatsOwner_len *
+            sizeof(rowreq_ctx->undo->etherStatsOwner[0])));
+    rowreq_ctx->undo->etherStatsOwner_len =
+        rowreq_ctx->data.etherStatsOwner_len;
+
+
+    return MFD_SUCCESS;
+}                               /* etherStatsOwner_undo_setup */
+
+/**
+ * Set the new value.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the users context. You should know how to
+ *        manipulate the value from this object.
+ * @param etherStatsOwner_val_ptr
+ *        A char containing the new value.
+ * @param etherStatsOwner_val_ptr_len
+ *        The size (in bytes) of the data pointed to by etherStatsOwner_val_ptr
+ */
+int
+etherStatsOwner_set(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                    char *etherStatsOwner_val_ptr,
+                    size_t etherStatsOwner_val_ptr_len)
+{
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsOwner_set",
+                "called\n"));
+
+    /** should never get a NULL pointer */
+    netsnmp_assert(NULL != rowreq_ctx);
+    netsnmp_assert(NULL != etherStatsOwner_val_ptr);
+
+    /*
+     * TODO:461:M: |-> Set etherStatsOwner value.
+     * set etherStatsOwner value in rowreq_ctx->data
+     */
+    memcpy(rowreq_ctx->data.etherStatsOwner, etherStatsOwner_val_ptr,
+           etherStatsOwner_val_ptr_len);
+    /** convert bytes to number of char */
+    rowreq_ctx->data.etherStatsOwner_len =
+        etherStatsOwner_val_ptr_len / sizeof(etherStatsOwner_val_ptr[0]);
+
+    return MFD_SUCCESS;
+}                               /* etherStatsOwner_set */
+
+/**
+ * undo the previous set.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the users context.
+ */
+int
+etherStatsOwner_undo(etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsOwner_undo",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:456:o: |-> Clean up etherStatsOwner undo.
+     */
+    /*
+     * copy etherStatsOwner and etherStatsOwner_len data
+     * set rowreq_ctx->data.etherStatsOwner from rowreq_ctx->undo->etherStatsOwner
+     */
+    memcpy(rowreq_ctx->data.etherStatsOwner,
+           rowreq_ctx->undo->etherStatsOwner,
+           (rowreq_ctx->undo->etherStatsOwner_len *
+            sizeof(rowreq_ctx->data.etherStatsOwner[0])));
+    rowreq_ctx->data.etherStatsOwner_len =
+        rowreq_ctx->undo->etherStatsOwner_len;
+
+
+    return MFD_SUCCESS;
+}                               /* etherStatsOwner_undo */
+
+/*---------------------------------------------------------------------
+ * RMON-MIB::etherStatsEntry.etherStatsStatus
+ * etherStatsStatus is subid 21 of etherStatsEntry.
+ * Its status is Current, and its access level is Create.
+ * OID: .1.3.6.1.2.1.16.1.1.1.21
+ * Description:
+The status of this etherStats entry.
+ *
+ * Attributes:
+ *   accessible 1     isscalar 0     enums  1      hasdefval 0
+ *   readable   1     iscolumn 1     ranges 0      hashint   0
+ *   settable   1
+ *
+ * Enum range: 2/8. Values:  valid(1), createRequest(2), underCreation(3), invalid(4)
+ *
+ * Its syntax is EntryStatus (based on perltype INTEGER)
+ * The net-snmp type is ASN_INTEGER. The C type decl is long (u_long)
+ */
+/**
+ * Check that the proposed new value is potentially valid.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the row request context.
+ * @param etherStatsStatus_val
+ *        A long containing the new value.
+ *
+ * @retval MFD_SUCCESS        : incoming value is legal
+ * @retval MFD_NOT_VALID_NOW  : incoming value is not valid now
+ * @retval MFD_NOT_VALID_EVER : incoming value is never valid
+ *
+ * This is the place to check for requirements that are not
+ * expressed in the mib syntax (for example, a requirement that
+ * is detailed in the description for an object).
+ *
+ * You should check that the requested change between the undo value and the
+ * new value is legal (ie, the transistion from one value to another
+ * is legal).
+ *      
+ *@note
+ * This check is only to determine if the new value
+ * is \b potentially valid. This is the first check of many, and
+ * is one of the simplest ones.
+ * 
+ *@note
+ * this is not the place to do any checks for values
+ * which depend on some other value in the mib. Those
+ * types of checks should be done in the
+ * etherStatsTable_check_dependencies() function.
+ *
+ * The following checks have already been done for you:
+ *    The syntax is ASN_INTEGER
+ *    The value is one of  valid(1), createRequest(2), underCreation(3), invalid(4)
+ *
+ * If there a no other checks you need to do, simply return MFD_SUCCESS.
+ *
+ */
+int
+etherStatsStatus_check_value(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                             u_long etherStatsStatus_val)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsStatus_check_value",
+                "called\n"));
+
+    /** should never get a NULL pointer */
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:441:o: |-> Check for valid etherStatsStatus value.
+     */
+
+    return MFD_SUCCESS;         /* etherStatsStatus value not illegal */
+}                               /* etherStatsStatus_check_value */
+
+/**
+ * Save old value information
+ *
+ * @param rowreq_ctx
+ *        Pointer to the table context (etherStatsTable_rowreq_ctx)
+ *
+ * @retval MFD_SUCCESS : success
+ * @retval MFD_ERROR   : error. set will fail.
+ *
+ * This function will be called after the table level undo setup function
+ * etherStatsTable_undo_setup has been called.
+ *
+ *@note
+ * this function will only be called if a new value is set for this column.
+ *
+ * If there is any setup specific to a particular column (e.g. allocating
+ * memory for a string), you should do that setup in this function, so it
+ * won't be done unless it is necessary.
+ */
+int
+etherStatsStatus_undo_setup(etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsStatus_undo_setup",
+                "called\n"));
+
+    /** should never get a NULL pointer */
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:455:o: |-> Setup etherStatsStatus undo.
+     */
+    /*
+     * copy etherStatsStatus data
+     * set rowreq_ctx->undo->etherStatsStatus from rowreq_ctx->data.etherStatsStatus
+     */
+    rowreq_ctx->undo->etherStatsStatus = rowreq_ctx->data.etherStatsStatus;
+
+
+    return MFD_SUCCESS;
+}                               /* etherStatsStatus_undo_setup */
+
+/**
+ * Set the new value.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the users context. You should know how to
+ *        manipulate the value from this object.
+ * @param etherStatsStatus_val
+ *        A long containing the new value.
+ */
+int
+etherStatsStatus_set(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                     u_long etherStatsStatus_val)
+{
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsStatus_set",
+                "called\n"));
+
+    /** should never get a NULL pointer */
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:461:M: |-> Set etherStatsStatus value.
+     * set etherStatsStatus value in rowreq_ctx->data
+     */
+    rowreq_ctx->data.etherStatsStatus = etherStatsStatus_val;
+
+    return MFD_SUCCESS;
+}                               /* etherStatsStatus_set */
+
+/**
+ * undo the previous set.
+ *
+ * @param rowreq_ctx
+ *        Pointer to the users context.
+ */
+int
+etherStatsStatus_undo(etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsStatus_undo",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * TODO:456:o: |-> Clean up etherStatsStatus undo.
+     */
+    /*
+     * copy etherStatsStatus data
+     * set rowreq_ctx->data.etherStatsStatus from rowreq_ctx->undo->etherStatsStatus
+     */
+    rowreq_ctx->data.etherStatsStatus = rowreq_ctx->undo->etherStatsStatus;
+
+
+    return MFD_SUCCESS;
+}                               /* etherStatsStatus_undo */
+
+/** @} */
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_set.h b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_set.h
new file mode 100644
index 0000000..258e087
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_data_set.h
@@ -0,0 +1,356 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 12077 $ of $ 
+ *
+ * $Id:$
+ */
+#ifndef ETHERSTATSTABLE_DATA_SET_H
+#define ETHERSTATSTABLE_DATA_SET_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    /*
+     *********************************************************************
+     * SET function declarations
+     */
+
+    /*
+     *********************************************************************
+     * SET Table declarations
+     */
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table etherStatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+    /*
+     * RMON-MIB::etherStatsTable is subid 1 of statistics.
+     * Its status is Current.
+     * OID: .1.3.6.1.2.1.16.1.1, length: 9
+     */
+
+
+    int             etherStatsTable_undo_setup(etherStatsTable_rowreq_ctx *
+                                               rowreq_ctx);
+    int             etherStatsTable_undo_cleanup(etherStatsTable_rowreq_ctx
+                                                 * rowreq_ctx);
+    int             etherStatsTable_undo(etherStatsTable_rowreq_ctx *
+                                         rowreq_ctx);
+    int             etherStatsTable_commit(etherStatsTable_rowreq_ctx *
+                                           rowreq_ctx);
+    int             etherStatsTable_undo_commit(etherStatsTable_rowreq_ctx
+                                                * rowreq_ctx);
+
+
+    int            
+        etherStatsDataSource_check_value(etherStatsTable_rowreq_ctx *
+                                         rowreq_ctx,
+                                         oid *
+                                         etherStatsDataSource_val_ptr,
+                                         size_t
+                                         etherStatsDataSource_val_ptr_len);
+    int            
+        etherStatsDataSource_undo_setup(etherStatsTable_rowreq_ctx *
+                                        rowreq_ctx);
+    int             etherStatsDataSource_set(etherStatsTable_rowreq_ctx *
+                                             rowreq_ctx,
+                                             oid *
+                                             etherStatsDataSource_val_ptr,
+                                             size_t
+                                             etherStatsDataSource_val_ptr_len);
+    int             etherStatsDataSource_undo(etherStatsTable_rowreq_ctx *
+                                              rowreq_ctx);
+
+    int            
+        etherStatsDropEvents_check_value(etherStatsTable_rowreq_ctx *
+                                         rowreq_ctx,
+                                         u_long etherStatsDropEvents_val);
+    int            
+        etherStatsDropEvents_undo_setup(etherStatsTable_rowreq_ctx *
+                                        rowreq_ctx);
+    int             etherStatsDropEvents_set(etherStatsTable_rowreq_ctx *
+                                             rowreq_ctx,
+                                             u_long
+                                             etherStatsDropEvents_val);
+    int             etherStatsDropEvents_undo(etherStatsTable_rowreq_ctx *
+                                              rowreq_ctx);
+
+    int             etherStatsOctets_check_value(etherStatsTable_rowreq_ctx
+                                                 * rowreq_ctx,
+                                                 u_long
+                                                 etherStatsOctets_val);
+    int             etherStatsOctets_undo_setup(etherStatsTable_rowreq_ctx
+                                                * rowreq_ctx);
+    int             etherStatsOctets_set(etherStatsTable_rowreq_ctx *
+                                         rowreq_ctx,
+                                         u_long etherStatsOctets_val);
+    int             etherStatsOctets_undo(etherStatsTable_rowreq_ctx *
+                                          rowreq_ctx);
+
+    int             etherStatsPkts_check_value(etherStatsTable_rowreq_ctx *
+                                               rowreq_ctx,
+                                               u_long etherStatsPkts_val);
+    int             etherStatsPkts_undo_setup(etherStatsTable_rowreq_ctx *
+                                              rowreq_ctx);
+    int             etherStatsPkts_set(etherStatsTable_rowreq_ctx *
+                                       rowreq_ctx,
+                                       u_long etherStatsPkts_val);
+    int             etherStatsPkts_undo(etherStatsTable_rowreq_ctx *
+                                        rowreq_ctx);
+
+    int            
+        etherStatsBroadcastPkts_check_value(etherStatsTable_rowreq_ctx *
+                                            rowreq_ctx,
+                                            u_long
+                                            etherStatsBroadcastPkts_val);
+    int            
+        etherStatsBroadcastPkts_undo_setup(etherStatsTable_rowreq_ctx *
+                                           rowreq_ctx);
+    int             etherStatsBroadcastPkts_set(etherStatsTable_rowreq_ctx
+                                                * rowreq_ctx,
+                                                u_long
+                                                etherStatsBroadcastPkts_val);
+    int             etherStatsBroadcastPkts_undo(etherStatsTable_rowreq_ctx
+                                                 * rowreq_ctx);
+
+    int            
+        etherStatsMulticastPkts_check_value(etherStatsTable_rowreq_ctx *
+                                            rowreq_ctx,
+                                            u_long
+                                            etherStatsMulticastPkts_val);
+    int            
+        etherStatsMulticastPkts_undo_setup(etherStatsTable_rowreq_ctx *
+                                           rowreq_ctx);
+    int             etherStatsMulticastPkts_set(etherStatsTable_rowreq_ctx
+                                                * rowreq_ctx,
+                                                u_long
+                                                etherStatsMulticastPkts_val);
+    int             etherStatsMulticastPkts_undo(etherStatsTable_rowreq_ctx
+                                                 * rowreq_ctx);
+
+    int            
+        etherStatsCRCAlignErrors_check_value(etherStatsTable_rowreq_ctx *
+                                             rowreq_ctx,
+                                             u_long
+                                             etherStatsCRCAlignErrors_val);
+    int            
+        etherStatsCRCAlignErrors_undo_setup(etherStatsTable_rowreq_ctx *
+                                            rowreq_ctx);
+    int             etherStatsCRCAlignErrors_set(etherStatsTable_rowreq_ctx
+                                                 * rowreq_ctx,
+                                                 u_long
+                                                 etherStatsCRCAlignErrors_val);
+    int            
+        etherStatsCRCAlignErrors_undo(etherStatsTable_rowreq_ctx *
+                                      rowreq_ctx);
+
+    int            
+        etherStatsUndersizePkts_check_value(etherStatsTable_rowreq_ctx *
+                                            rowreq_ctx,
+                                            u_long
+                                            etherStatsUndersizePkts_val);
+    int            
+        etherStatsUndersizePkts_undo_setup(etherStatsTable_rowreq_ctx *
+                                           rowreq_ctx);
+    int             etherStatsUndersizePkts_set(etherStatsTable_rowreq_ctx
+                                                * rowreq_ctx,
+                                                u_long
+                                                etherStatsUndersizePkts_val);
+    int             etherStatsUndersizePkts_undo(etherStatsTable_rowreq_ctx
+                                                 * rowreq_ctx);
+
+    int            
+        etherStatsOversizePkts_check_value(etherStatsTable_rowreq_ctx *
+                                           rowreq_ctx,
+                                           u_long
+                                           etherStatsOversizePkts_val);
+    int            
+        etherStatsOversizePkts_undo_setup(etherStatsTable_rowreq_ctx *
+                                          rowreq_ctx);
+    int             etherStatsOversizePkts_set(etherStatsTable_rowreq_ctx *
+                                               rowreq_ctx,
+                                               u_long
+                                               etherStatsOversizePkts_val);
+    int             etherStatsOversizePkts_undo(etherStatsTable_rowreq_ctx
+                                                * rowreq_ctx);
+
+    int            
+        etherStatsFragments_check_value(etherStatsTable_rowreq_ctx *
+                                        rowreq_ctx,
+                                        u_long etherStatsFragments_val);
+    int            
+        etherStatsFragments_undo_setup(etherStatsTable_rowreq_ctx *
+                                       rowreq_ctx);
+    int             etherStatsFragments_set(etherStatsTable_rowreq_ctx *
+                                            rowreq_ctx,
+                                            u_long
+                                            etherStatsFragments_val);
+    int             etherStatsFragments_undo(etherStatsTable_rowreq_ctx *
+                                             rowreq_ctx);
+
+    int            
+        etherStatsJabbers_check_value(etherStatsTable_rowreq_ctx *
+                                      rowreq_ctx,
+                                      u_long etherStatsJabbers_val);
+    int             etherStatsJabbers_undo_setup(etherStatsTable_rowreq_ctx
+                                                 * rowreq_ctx);
+    int             etherStatsJabbers_set(etherStatsTable_rowreq_ctx *
+                                          rowreq_ctx,
+                                          u_long etherStatsJabbers_val);
+    int             etherStatsJabbers_undo(etherStatsTable_rowreq_ctx *
+                                           rowreq_ctx);
+
+    int            
+        etherStatsCollisions_check_value(etherStatsTable_rowreq_ctx *
+                                         rowreq_ctx,
+                                         u_long etherStatsCollisions_val);
+    int            
+        etherStatsCollisions_undo_setup(etherStatsTable_rowreq_ctx *
+                                        rowreq_ctx);
+    int             etherStatsCollisions_set(etherStatsTable_rowreq_ctx *
+                                             rowreq_ctx,
+                                             u_long
+                                             etherStatsCollisions_val);
+    int             etherStatsCollisions_undo(etherStatsTable_rowreq_ctx *
+                                              rowreq_ctx);
+
+    int            
+        etherStatsPkts64Octets_check_value(etherStatsTable_rowreq_ctx *
+                                           rowreq_ctx,
+                                           u_long
+                                           etherStatsPkts64Octets_val);
+    int            
+        etherStatsPkts64Octets_undo_setup(etherStatsTable_rowreq_ctx *
+                                          rowreq_ctx);
+    int             etherStatsPkts64Octets_set(etherStatsTable_rowreq_ctx *
+                                               rowreq_ctx,
+                                               u_long
+                                               etherStatsPkts64Octets_val);
+    int             etherStatsPkts64Octets_undo(etherStatsTable_rowreq_ctx
+                                                * rowreq_ctx);
+
+    int            
+        etherStatsPkts65to127Octets_check_value(etherStatsTable_rowreq_ctx
+                                                * rowreq_ctx,
+                                                u_long
+                                                etherStatsPkts65to127Octets_val);
+    int            
+        etherStatsPkts65to127Octets_undo_setup(etherStatsTable_rowreq_ctx *
+                                               rowreq_ctx);
+    int            
+        etherStatsPkts65to127Octets_set(etherStatsTable_rowreq_ctx *
+                                        rowreq_ctx,
+                                        u_long
+                                        etherStatsPkts65to127Octets_val);
+    int            
+        etherStatsPkts65to127Octets_undo(etherStatsTable_rowreq_ctx *
+                                         rowreq_ctx);
+
+    int            
+        etherStatsPkts128to255Octets_check_value(etherStatsTable_rowreq_ctx
+                                                 * rowreq_ctx,
+                                                 u_long
+                                                 etherStatsPkts128to255Octets_val);
+    int            
+        etherStatsPkts128to255Octets_undo_setup(etherStatsTable_rowreq_ctx
+                                                * rowreq_ctx);
+    int            
+        etherStatsPkts128to255Octets_set(etherStatsTable_rowreq_ctx *
+                                         rowreq_ctx,
+                                         u_long
+                                         etherStatsPkts128to255Octets_val);
+    int            
+        etherStatsPkts128to255Octets_undo(etherStatsTable_rowreq_ctx *
+                                          rowreq_ctx);
+
+    int            
+        etherStatsPkts256to511Octets_check_value(etherStatsTable_rowreq_ctx
+                                                 * rowreq_ctx,
+                                                 u_long
+                                                 etherStatsPkts256to511Octets_val);
+    int            
+        etherStatsPkts256to511Octets_undo_setup(etherStatsTable_rowreq_ctx
+                                                * rowreq_ctx);
+    int            
+        etherStatsPkts256to511Octets_set(etherStatsTable_rowreq_ctx *
+                                         rowreq_ctx,
+                                         u_long
+                                         etherStatsPkts256to511Octets_val);
+    int            
+        etherStatsPkts256to511Octets_undo(etherStatsTable_rowreq_ctx *
+                                          rowreq_ctx);
+
+    int            
+        etherStatsPkts512to1023Octets_check_value
+        (etherStatsTable_rowreq_ctx * rowreq_ctx,
+         u_long etherStatsPkts512to1023Octets_val);
+    int            
+        etherStatsPkts512to1023Octets_undo_setup(etherStatsTable_rowreq_ctx
+                                                 * rowreq_ctx);
+    int            
+        etherStatsPkts512to1023Octets_set(etherStatsTable_rowreq_ctx *
+                                          rowreq_ctx,
+                                          u_long
+                                          etherStatsPkts512to1023Octets_val);
+    int            
+        etherStatsPkts512to1023Octets_undo(etherStatsTable_rowreq_ctx *
+                                           rowreq_ctx);
+
+    int            
+        etherStatsPkts1024to1518Octets_check_value
+        (etherStatsTable_rowreq_ctx * rowreq_ctx,
+         u_long etherStatsPkts1024to1518Octets_val);
+    int            
+        etherStatsPkts1024to1518Octets_undo_setup
+        (etherStatsTable_rowreq_ctx * rowreq_ctx);
+    int            
+        etherStatsPkts1024to1518Octets_set(etherStatsTable_rowreq_ctx *
+                                           rowreq_ctx,
+                                           u_long
+                                           etherStatsPkts1024to1518Octets_val);
+    int            
+        etherStatsPkts1024to1518Octets_undo(etherStatsTable_rowreq_ctx *
+                                            rowreq_ctx);
+
+    int             etherStatsOwner_check_value(etherStatsTable_rowreq_ctx
+                                                * rowreq_ctx,
+                                                char
+                                                *etherStatsOwner_val_ptr,
+                                                size_t
+                                                etherStatsOwner_val_ptr_len);
+    int             etherStatsOwner_undo_setup(etherStatsTable_rowreq_ctx *
+                                               rowreq_ctx);
+    int             etherStatsOwner_set(etherStatsTable_rowreq_ctx *
+                                        rowreq_ctx,
+                                        char *etherStatsOwner_val_ptr,
+                                        size_t
+                                        etherStatsOwner_val_ptr_len);
+    int             etherStatsOwner_undo(etherStatsTable_rowreq_ctx *
+                                         rowreq_ctx);
+
+    int             etherStatsStatus_check_value(etherStatsTable_rowreq_ctx
+                                                 * rowreq_ctx,
+                                                 u_long
+                                                 etherStatsStatus_val);
+    int             etherStatsStatus_undo_setup(etherStatsTable_rowreq_ctx
+                                                * rowreq_ctx);
+    int             etherStatsStatus_set(etherStatsTable_rowreq_ctx *
+                                         rowreq_ctx,
+                                         u_long etherStatsStatus_val);
+    int             etherStatsStatus_undo(etherStatsTable_rowreq_ctx *
+                                          rowreq_ctx);
+
+
+    int            
+        etherStatsTable_check_dependencies(etherStatsTable_rowreq_ctx *
+                                           ctx);
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* ETHERSTATSTABLE_DATA_SET_H */
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_enums.h b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_enums.h
new file mode 100644
index 0000000..a13c0b7
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_enums.h
@@ -0,0 +1,57 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : generic-table-enums.m2c 12526 2005-07-15 22:41:16Z rstory $
+ *
+ * $Id:$
+ */
+#ifndef ETHERSTATSTABLE_ENUMS_H
+#define ETHERSTATSTABLE_ENUMS_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    /*
+     * NOTES on enums
+     * ==============
+     *
+     * Value Mapping
+     * -------------
+     * If the values for your data type don't exactly match the
+     * possible values defined by the mib, you should map them
+     * below. For example, a boolean flag (1/0) is usually represented
+     * as a TruthValue in a MIB, which maps to the values (1/2).
+     *
+     */
+/*************************************************************************
+ *************************************************************************
+ *
+ * enum definitions for table etherStatsTable
+ *
+ *************************************************************************
+ *************************************************************************/
+
+/*************************************************************
+ * constants for enums for the MIB node
+ * etherStatsStatus (EntryStatus / ASN_INTEGER)
+ *
+ * since a Textual Convention may be referenced more than once in a
+ * MIB, protect againt redefinitions of the enum values.
+ */
+#ifndef ENTRYSTATUS_ENUMS
+#define ENTRYSTATUS_ENUMS
+
+#define ENTRYSTATUS_VALID  1
+#define ENTRYSTATUS_CREATEREQUEST  2
+#define ENTRYSTATUS_UNDERCREATION  3
+#define ENTRYSTATUS_INVALID  4
+
+#endif                          /* ENTRYSTATUS_ENUMS */
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* ETHERSTATSTABLE_ENUMS_H */
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c
new file mode 100644
index 0000000..221c608
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.c
@@ -0,0 +1,2232 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 15899 $ of $ 
+ *
+ * $Id:$
+ */
+/*
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ * ***                                                               ***
+ * ***  NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE  ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THIS FILE DOES NOT CONTAIN ANY USER EDITABLE CODE.      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THE GENERATED CODE IS INTERNAL IMPLEMENTATION, AND      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***    IS SUBJECT TO CHANGE WITHOUT WARNING IN FUTURE RELEASES.   ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ */
+
+/*
+ * standard Net-SNMP includes 
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+/*
+ * include our parent header 
+ */
+#include "etherStatsTable.h"
+
+
+#include <net-snmp/agent/table_container.h>
+#include <net-snmp/library/container.h>
+
+#include "etherStatsTable_interface.h"
+
+#include <ctype.h>
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(table_container_row_insert)
+netsnmp_feature_require(check_all_requests_error)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+/**********************************************************************
+ **********************************************************************
+ ***
+ *** Table etherStatsTable
+ ***
+ **********************************************************************
+ **********************************************************************/
+/*
+ * RMON-MIB::etherStatsTable is subid 1 of statistics.
+ * Its status is Current.
+ * OID: .1.3.6.1.2.1.16.1.1, length: 9
+ */
+typedef struct etherStatsTable_interface_ctx_s {
+
+    netsnmp_container *container;
+    netsnmp_cache  *cache;
+
+    etherStatsTable_registration *user_ctx;
+
+    netsnmp_table_registration_info tbl_info;
+
+    netsnmp_baby_steps_access_methods access_multiplexer;
+
+    u_int           table_dirty;
+
+} etherStatsTable_interface_ctx;
+
+static etherStatsTable_interface_ctx etherStatsTable_if_ctx;
+
+static void    
+_etherStatsTable_container_init(etherStatsTable_interface_ctx * if_ctx);
+static void    
+_etherStatsTable_container_shutdown(etherStatsTable_interface_ctx *
+                                    if_ctx);
+
+
+netsnmp_container *
+etherStatsTable_container_get(void)
+{
+    return etherStatsTable_if_ctx.container;
+}
+
+etherStatsTable_registration *
+etherStatsTable_registration_get(void)
+{
+    return etherStatsTable_if_ctx.user_ctx;
+}
+
+etherStatsTable_registration *
+etherStatsTable_registration_set(etherStatsTable_registration * newreg)
+{
+    etherStatsTable_registration *old = etherStatsTable_if_ctx.user_ctx;
+    etherStatsTable_if_ctx.user_ctx = newreg;
+    return old;
+}
+
+int
+etherStatsTable_container_size(void)
+{
+    return CONTAINER_SIZE(etherStatsTable_if_ctx.container);
+}
+
+u_int
+etherStatsTable_dirty_get(void)
+{
+    return etherStatsTable_if_ctx.table_dirty;
+}
+
+void
+etherStatsTable_dirty_set(u_int status)
+{
+    DEBUGMSGTL(("etherStatsTable:etherStatsTable_dirty_set",
+                "called. was %d, now %d\n",
+                etherStatsTable_if_ctx.table_dirty, status));
+    etherStatsTable_if_ctx.table_dirty = status;
+}
+
+/*
+ * mfd multiplexer modes
+ */
+static Netsnmp_Node_Handler _mfd_etherStatsTable_pre_request;
+static Netsnmp_Node_Handler _mfd_etherStatsTable_post_request;
+static Netsnmp_Node_Handler _mfd_etherStatsTable_object_lookup;
+static Netsnmp_Node_Handler _mfd_etherStatsTable_get_values;
+static Netsnmp_Node_Handler _mfd_etherStatsTable_check_objects;
+static Netsnmp_Node_Handler _mfd_etherStatsTable_undo_setup;
+static Netsnmp_Node_Handler _mfd_etherStatsTable_set_values;
+static Netsnmp_Node_Handler _mfd_etherStatsTable_undo_cleanup;
+static Netsnmp_Node_Handler _mfd_etherStatsTable_undo_values;
+static Netsnmp_Node_Handler _mfd_etherStatsTable_commit;
+static Netsnmp_Node_Handler _mfd_etherStatsTable_undo_commit;
+static Netsnmp_Node_Handler _mfd_etherStatsTable_irreversible_commit;
+
+NETSNMP_STATIC_INLINE int
+_etherStatsTable_undo_column(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                             netsnmp_variable_list * var, int column);
+
+NETSNMP_STATIC_INLINE int
+_etherStatsTable_check_indexes(etherStatsTable_rowreq_ctx * rowreq_ctx);
+
+etherStatsTable_data *etherStatsTable_allocate_data(void);
+
+/**
+ * @internal
+ * Initialize the table etherStatsTable 
+ *    (Define its contents and how it's structured)
+ */
+void
+_etherStatsTable_initialize_interface(etherStatsTable_registration *
+                                      reg_ptr, u_long flags)
+{
+    netsnmp_baby_steps_access_methods *access_multiplexer =
+        &etherStatsTable_if_ctx.access_multiplexer;
+    netsnmp_table_registration_info *tbl_info =
+        &etherStatsTable_if_ctx.tbl_info;
+    netsnmp_handler_registration *reginfo;
+    netsnmp_mib_handler *handler;
+    int             mfd_modes = 0;
+
+    DEBUGMSGTL(("internal:etherStatsTable:_etherStatsTable_initialize_interface", "called\n"));
+
+
+    /*************************************************
+     *
+     * save interface context for etherStatsTable
+     */
+    /*
+     * Setting up the table's definition
+     */
+    netsnmp_table_helper_add_indexes(tbl_info, ASN_INTEGER,
+                                               /** index: etherStatsIndex */
+                                     0);
+
+    /*
+     * Define the minimum and maximum accessible columns.  This
+     * optimizes retrieval. 
+     */
+    tbl_info->min_column = ETHERSTATSTABLE_MIN_COL;
+    tbl_info->max_column = ETHERSTATSTABLE_MAX_COL;
+
+    /*
+     * save users context
+     */
+    etherStatsTable_if_ctx.user_ctx = reg_ptr;
+
+    /*
+     * call data access initialization code
+     */
+    etherStatsTable_init_data(reg_ptr);
+
+    /*
+     * set up the container
+     */
+    _etherStatsTable_container_init(&etherStatsTable_if_ctx);
+    if (NULL == etherStatsTable_if_ctx.container) {
+        snmp_log(LOG_ERR,
+                 "could not initialize container for etherStatsTable\n");
+        return;
+    }
+
+    /*
+     * access_multiplexer: REQUIRED wrapper for get request handling
+     */
+    access_multiplexer->object_lookup = _mfd_etherStatsTable_object_lookup;
+    access_multiplexer->get_values = _mfd_etherStatsTable_get_values;
+
+    /*
+     * no wrappers yet
+     */
+    access_multiplexer->pre_request = _mfd_etherStatsTable_pre_request;
+    access_multiplexer->post_request = _mfd_etherStatsTable_post_request;
+
+
+    /*
+     * REQUIRED wrappers for set request handling
+     */
+    access_multiplexer->object_syntax_checks =
+        _mfd_etherStatsTable_check_objects;
+    access_multiplexer->undo_setup = _mfd_etherStatsTable_undo_setup;
+    access_multiplexer->undo_cleanup = _mfd_etherStatsTable_undo_cleanup;
+    access_multiplexer->set_values = _mfd_etherStatsTable_set_values;
+    access_multiplexer->undo_sets = _mfd_etherStatsTable_undo_values;
+
+    /*
+     * no wrappers yet
+     */
+    access_multiplexer->commit = _mfd_etherStatsTable_commit;
+    access_multiplexer->undo_commit = _mfd_etherStatsTable_undo_commit;
+    access_multiplexer->irreversible_commit =
+        _mfd_etherStatsTable_irreversible_commit;
+
+    /*************************************************
+     *
+     * Create a registration, save our reg data, register table.
+     */
+    DEBUGMSGTL(("etherStatsTable:init_etherStatsTable",
+                "Registering etherStatsTable as a mibs-for-dummies table.\n"));
+    handler =
+        netsnmp_baby_steps_access_multiplexer_get(access_multiplexer);
+    reginfo =
+        netsnmp_handler_registration_create("etherStatsTable", handler,
+                                            etherStatsTable_oid,
+                                            etherStatsTable_oid_size,
+                                            HANDLER_CAN_BABY_STEP |
+                                            HANDLER_CAN_RWRITE);
+    if (NULL == reginfo) {
+        snmp_log(LOG_ERR, "error registering table etherStatsTable\n");
+        return;
+    }
+    reginfo->my_reg_void = &etherStatsTable_if_ctx;
+
+    /*************************************************
+     *
+     * set up baby steps handler, create it and inject it
+     */
+    if (access_multiplexer->object_lookup)
+        mfd_modes |= BABY_STEP_OBJECT_LOOKUP;
+    if (access_multiplexer->set_values)
+        mfd_modes |= BABY_STEP_SET_VALUES;
+    if (access_multiplexer->irreversible_commit)
+        mfd_modes |= BABY_STEP_IRREVERSIBLE_COMMIT;
+    if (access_multiplexer->object_syntax_checks)
+        mfd_modes |= BABY_STEP_CHECK_OBJECT;
+
+    if (access_multiplexer->pre_request)
+        mfd_modes |= BABY_STEP_PRE_REQUEST;
+    if (access_multiplexer->post_request)
+        mfd_modes |= BABY_STEP_POST_REQUEST;
+
+    if (access_multiplexer->undo_setup)
+        mfd_modes |= BABY_STEP_UNDO_SETUP;
+    if (access_multiplexer->undo_cleanup)
+        mfd_modes |= BABY_STEP_UNDO_CLEANUP;
+    if (access_multiplexer->undo_sets)
+        mfd_modes |= BABY_STEP_UNDO_SETS;
+
+    if (access_multiplexer->row_creation)
+        mfd_modes |= BABY_STEP_ROW_CREATE;
+    if (access_multiplexer->consistency_checks)
+        mfd_modes |= BABY_STEP_CHECK_CONSISTENCY;
+    if (access_multiplexer->commit)
+        mfd_modes |= BABY_STEP_COMMIT;
+    if (access_multiplexer->undo_commit)
+        mfd_modes |= BABY_STEP_UNDO_COMMIT;
+
+    handler = netsnmp_baby_steps_handler_get(mfd_modes);
+    netsnmp_inject_handler(reginfo, handler);
+
+    /*************************************************
+     *
+     * inject row_merge helper with prefix rootoid_len + 2 (entry.col)
+     */
+    handler = netsnmp_get_row_merge_handler(reginfo->rootoid_len + 2);
+    netsnmp_inject_handler(reginfo, handler);
+
+    /*************************************************
+     *
+     * inject container_table helper
+     */
+    handler =
+        netsnmp_container_table_handler_get(tbl_info,
+                                            etherStatsTable_if_ctx.
+                                            container,
+                                            TABLE_CONTAINER_KEY_NETSNMP_INDEX);
+    netsnmp_inject_handler(reginfo, handler);
+
+    /*************************************************
+     *
+     * inject cache helper
+     */
+    if (NULL != etherStatsTable_if_ctx.cache) {
+        handler = netsnmp_cache_handler_get(etherStatsTable_if_ctx.cache);
+        netsnmp_inject_handler(reginfo, handler);
+    }
+
+    /*
+     * register table
+     */
+    netsnmp_register_table(reginfo, tbl_info);
+
+}                               /* _etherStatsTable_initialize_interface */
+
+/**
+ * @internal
+ * Shutdown the table etherStatsTable
+ */
+void
+_etherStatsTable_shutdown_interface(etherStatsTable_registration * reg_ptr)
+{
+    /*
+     * shutdown the container
+     */
+    _etherStatsTable_container_shutdown(&etherStatsTable_if_ctx);
+}
+
+void
+etherStatsTable_valid_columns_set(netsnmp_column_info *vc)
+{
+    etherStatsTable_if_ctx.tbl_info.valid_columns = vc;
+}                               /* etherStatsTable_valid_columns_set */
+
+/**
+ * @internal
+ * convert the index component stored in the context to an oid
+ */
+int
+etherStatsTable_index_to_oid(netsnmp_index * oid_idx,
+                             etherStatsTable_mib_index * mib_idx)
+{
+    int             err = SNMP_ERR_NOERROR;
+
+    /*
+     * temp storage for parsing indexes
+     */
+    /*
+     * etherStatsIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/R/d/h
+     */
+    netsnmp_variable_list var_etherStatsIndex;
+
+    /*
+     * set up varbinds
+     */
+    memset(&var_etherStatsIndex, 0x00, sizeof(var_etherStatsIndex));
+    var_etherStatsIndex.type = ASN_INTEGER;
+
+    /*
+     * chain temp index varbinds together
+     */
+    var_etherStatsIndex.next_variable = NULL;
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_index_to_oid",
+                "called\n"));
+
+    /*
+     * etherStatsIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/R/d/h 
+     */
+    snmp_set_var_value(&var_etherStatsIndex,
+                       (u_char *) & mib_idx->etherStatsIndex,
+                       sizeof(mib_idx->etherStatsIndex));
+
+
+    err = build_oid_noalloc(oid_idx->oids, oid_idx->len, &oid_idx->len,
+                            NULL, 0, &var_etherStatsIndex);
+    if (err)
+        snmp_log(LOG_ERR, "error %d converting index to oid\n", err);
+
+    /*
+     * parsing may have allocated memory. free it.
+     */
+    snmp_reset_var_buffers(&var_etherStatsIndex);
+
+    return err;
+}                               /* etherStatsTable_index_to_oid */
+
+/**
+ * extract etherStatsTable indexes from a netsnmp_index
+ *
+ * @retval SNMP_ERR_NOERROR  : no error
+ * @retval SNMP_ERR_GENERR   : error
+ */
+int
+etherStatsTable_index_from_oid(netsnmp_index * oid_idx,
+                               etherStatsTable_mib_index * mib_idx)
+{
+    int             err = SNMP_ERR_NOERROR;
+
+    /*
+     * temp storage for parsing indexes
+     */
+    /*
+     * etherStatsIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/R/d/h
+     */
+    netsnmp_variable_list var_etherStatsIndex;
+
+    /*
+     * set up varbinds
+     */
+    memset(&var_etherStatsIndex, 0x00, sizeof(var_etherStatsIndex));
+    var_etherStatsIndex.type = ASN_INTEGER;
+
+    /*
+     * chain temp index varbinds together
+     */
+    var_etherStatsIndex.next_variable = NULL;
+
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_index_from_oid",
+                "called\n"));
+
+    /*
+     * parse the oid into the individual index components
+     */
+    err = parse_oid_indexes(oid_idx->oids, oid_idx->len,
+                            &var_etherStatsIndex);
+    if (err == SNMP_ERR_NOERROR) {
+        /*
+         * copy out values
+         */
+        mib_idx->etherStatsIndex =
+            *((long *) var_etherStatsIndex.val.string);
+
+
+    }
+
+    /*
+     * parsing may have allocated memory. free it.
+     */
+    snmp_reset_var_buffers(&var_etherStatsIndex);
+
+    return err;
+}                               /* etherStatsTable_index_from_oid */
+
+
+/*
+ * etherStatsTable_allocate_data
+ *
+ * Purpose: create new etherStatsTable_data.
+ */
+etherStatsTable_data *
+etherStatsTable_allocate_data(void)
+{
+    etherStatsTable_data *rtn = SNMP_MALLOC_TYPEDEF(etherStatsTable_data);
+
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_allocate_data",
+                "called\n"));
+
+    if (NULL == rtn) {
+        snmp_log(LOG_ERR, "unable to malloc memory for new "
+                 "etherStatsTable_data.\n");
+    }
+
+    return rtn;
+}                               /* etherStatsTable_allocate_data */
+
+/*
+ * etherStatsTable_release_data
+ *
+ * Purpose: release etherStatsTable data.
+ */
+void
+etherStatsTable_release_data(etherStatsTable_data * data)
+{
+    DEBUGMSGTL(("verbose:etherStatsTable:etherStatsTable_release_data",
+                "called\n"));
+
+    free(data);
+}                               /* etherStatsTable_release_data */
+
+/*
+ *********************************************************************
+ * @internal
+ * allocate resources for a etherStatsTable_rowreq_ctx
+ */
+etherStatsTable_rowreq_ctx *
+etherStatsTable_allocate_rowreq_ctx(void *user_init_ctx)
+{
+    etherStatsTable_rowreq_ctx *rowreq_ctx =
+        SNMP_MALLOC_TYPEDEF(etherStatsTable_rowreq_ctx);
+
+    DEBUGMSGTL(("internal:etherStatsTable:etherStatsTable_allocate_rowreq_ctx", "called\n"));
+
+    if (NULL == rowreq_ctx) {
+        snmp_log(LOG_ERR, "Couldn't allocate memory for a "
+                 "etherStatsTable_rowreq_ctx.\n");
+        return NULL;
+    }
+
+    rowreq_ctx->oid_idx.oids = rowreq_ctx->oid_tmp;
+
+    rowreq_ctx->etherStatsTable_data_list = NULL;
+
+    /*
+     * if we allocated data, call init routine
+     */
+    if (!(rowreq_ctx->rowreq_flags & MFD_ROW_DATA_FROM_USER)) {
+        if (SNMPERR_SUCCESS !=
+            etherStatsTable_rowreq_ctx_init(rowreq_ctx, user_init_ctx)) {
+            etherStatsTable_release_rowreq_ctx(rowreq_ctx);
+            rowreq_ctx = NULL;
+        }
+    }
+
+    return rowreq_ctx;
+}                               /* etherStatsTable_allocate_rowreq_ctx */
+
+/*
+ * @internal
+ * release resources for a etherStatsTable_rowreq_ctx
+ */
+void
+etherStatsTable_release_rowreq_ctx(etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    DEBUGMSGTL(("internal:etherStatsTable:etherStatsTable_release_rowreq_ctx", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    etherStatsTable_rowreq_ctx_cleanup(rowreq_ctx);
+
+    if (rowreq_ctx->undo)
+        etherStatsTable_release_data(rowreq_ctx->undo);
+
+    /*
+     * free index oid pointer
+     */
+    if (rowreq_ctx->oid_idx.oids != rowreq_ctx->oid_tmp)
+        free(rowreq_ctx->oid_idx.oids);
+
+    SNMP_FREE(rowreq_ctx);
+}                               /* etherStatsTable_release_rowreq_ctx */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_etherStatsTable_pre_request(netsnmp_mib_handler *handler,
+                                 netsnmp_handler_registration *reginfo,
+                                 netsnmp_agent_request_info *agtreq_info,
+                                 netsnmp_request_info *requests)
+{
+    int             rc;
+
+    DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_pre_request", "called\n"));
+
+    if (1 != netsnmp_row_merge_status_first(reginfo, agtreq_info)) {
+        DEBUGMSGTL(("internal:etherStatsTable",
+                    "skipping additional pre_request\n"));
+        return SNMP_ERR_NOERROR;
+    }
+
+    rc = etherStatsTable_pre_request(etherStatsTable_if_ctx.user_ctx);
+    if (MFD_SUCCESS != rc) {
+        /*
+         * nothing we can do about it but log it
+         */
+        DEBUGMSGTL(("etherStatsTable", "error %d from "
+                    "etherStatsTable_pre_request\n", rc));
+        netsnmp_request_set_error_all(requests, SNMP_VALIDATE_ERR(rc));
+    }
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_etherStatsTable_pre_request */
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_etherStatsTable_post_request(netsnmp_mib_handler *handler,
+                                  netsnmp_handler_registration *reginfo,
+                                  netsnmp_agent_request_info *agtreq_info,
+                                  netsnmp_request_info *requests)
+{
+    etherStatsTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+    int             rc, packet_rc;
+
+    DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_post_request", "called\n"));
+
+    /*
+     * release row context, if deleted
+     */
+    if (rowreq_ctx && (rowreq_ctx->rowreq_flags & MFD_ROW_DELETED))
+        etherStatsTable_release_rowreq_ctx(rowreq_ctx);
+
+    /*
+     * wait for last call before calling user
+     */
+    if (1 != netsnmp_row_merge_status_last(reginfo, agtreq_info)) {
+        DEBUGMSGTL(("internal:etherStatsTable",
+                    "waiting for last post_request\n"));
+        return SNMP_ERR_NOERROR;
+    }
+
+    packet_rc = netsnmp_check_all_requests_error(agtreq_info->asp, 0);
+    if ((MFD_SUCCESS != packet_rc) && etherStatsTable_dirty_get()) {
+        /*
+         * we shouldn't get here. the undo steps should also clear
+         * the dirty flags.
+         */
+        snmp_log(LOG_WARNING,
+                 "etherStatsTable dirty flag set in post_request "
+                 "but status != SUCCESS.\n");
+    }
+
+    rc = etherStatsTable_post_request(etherStatsTable_if_ctx.user_ctx,
+                                      packet_rc);
+    if (MFD_SUCCESS != rc) {
+        /*
+         * nothing we can do about it but log it
+         */
+        DEBUGMSGTL(("etherStatsTable", "error %d from "
+                    "etherStatsTable_post_request\n", rc));
+    }
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_etherStatsTable_post_request */
+
+/**
+ * @internal
+ * wrapper
+ */
+static etherStatsTable_rowreq_ctx *
+_mfd_etherStatsTable_rowreq_from_index(netsnmp_index * oid_idx,
+                                       int *rc_ptr)
+{
+    etherStatsTable_rowreq_ctx *rowreq_ctx;
+    etherStatsTable_mib_index mib_idx;
+    int             rc;
+
+    DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_rowreq_from_index", "called\n"));
+
+    if (NULL == rc_ptr)
+        rc_ptr = &rc;
+    *rc_ptr = MFD_SUCCESS;
+
+    memset(&mib_idx, 0x0, sizeof(mib_idx));
+
+    /*
+     * try to parse oid
+     */
+    *rc_ptr = etherStatsTable_index_from_oid(oid_idx, &mib_idx);
+    if (MFD_SUCCESS != *rc_ptr) {
+        DEBUGMSGT(("etherStatsTable", "error parsing index\n"));
+        return NULL;
+    }
+
+    /*
+     * allocate new context
+     */
+    rowreq_ctx = etherStatsTable_allocate_rowreq_ctx(NULL);
+    if (NULL == rowreq_ctx) {
+        *rc_ptr = MFD_ERROR;
+        return NULL;            /* msg already logged */
+    }
+
+    memcpy(&rowreq_ctx->tbl_idx, &mib_idx, sizeof(mib_idx));
+
+    /*
+     * check indexes
+     */
+    *rc_ptr = _etherStatsTable_check_indexes(rowreq_ctx);
+    if (MFD_SUCCESS != *rc_ptr) {
+        netsnmp_assert((*rc_ptr == SNMP_ERR_NOCREATION) ||
+                       (*rc_ptr == SNMP_ERR_INCONSISTENTNAME));
+        etherStatsTable_release_rowreq_ctx(rowreq_ctx);
+        return NULL;
+    }
+
+    /*
+     * copy indexes
+     */
+    rowreq_ctx->oid_idx.len = oid_idx->len;
+    memcpy(rowreq_ctx->oid_idx.oids, oid_idx->oids,
+           oid_idx->len * sizeof(oid));
+
+    return rowreq_ctx;
+}                               /* _mfd_etherStatsTable_rowreq_from_index */
+
+
+/**
+ * @internal
+ * wrapper
+ */
+static int
+_mfd_etherStatsTable_object_lookup(netsnmp_mib_handler *handler,
+                                   netsnmp_handler_registration *reginfo,
+                                   netsnmp_agent_request_info *agtreq_info,
+                                   netsnmp_request_info *requests)
+{
+    int             rc = SNMP_ERR_NOERROR;
+    etherStatsTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+
+    DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_object_lookup", "called\n"));
+
+    /*
+     * get our context from mfd
+     * etherStatsTable_interface_ctx *if_ctx =
+     *             (etherStatsTable_interface_ctx *)reginfo->my_reg_void;
+     */
+
+    if (NULL == rowreq_ctx) {
+        netsnmp_table_request_info *tblreq_info;
+        netsnmp_index   oid_idx;
+
+        tblreq_info = netsnmp_extract_table_info(requests);
+        if (NULL == tblreq_info) {
+            snmp_log(LOG_ERR, "request had no table info\n");
+            return MFD_ERROR;
+        }
+
+        /*
+         * try create rowreq
+         */
+        oid_idx.oids = tblreq_info->index_oid;
+        oid_idx.len = tblreq_info->index_oid_len;
+
+        rowreq_ctx = _mfd_etherStatsTable_rowreq_from_index(&oid_idx, &rc);
+        if (MFD_SUCCESS == rc) {
+            netsnmp_assert(NULL != rowreq_ctx);
+            rowreq_ctx->rowreq_flags |= MFD_ROW_CREATED;
+            /*
+             * add rowreq_ctx to request data lists
+             */
+            netsnmp_container_table_row_insert(requests,
+                                               (netsnmp_index *)
+                                               rowreq_ctx);
+        }
+    }
+
+    if (MFD_SUCCESS != rc)
+        netsnmp_request_set_error_all(requests, rc);
+    else
+        etherStatsTable_row_prep(rowreq_ctx);
+
+    return SNMP_VALIDATE_ERR(rc);
+}                               /* _mfd_etherStatsTable_object_lookup */
+
+/***********************************************************************
+ *
+ * GET processing
+ *
+ ***********************************************************************/
+/*
+ * @internal
+ * Retrieve the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_etherStatsTable_get_column(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                            netsnmp_variable_list * var, int column)
+{
+    int             rc = SNMPERR_SUCCESS;
+
+    DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column",
+                "called for %d\n", column));
+
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    switch (column) {
+
+        /*
+         * (INDEX) etherStatsIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/R/d/h 
+         */
+    case COLUMN_ETHERSTATSINDEX:
+        var->type = ASN_INTEGER;
+        var->val_len = sizeof(long);
+        (*var->val.integer) = rowreq_ctx->tbl_idx.etherStatsIndex;
+        break;
+
+        /*
+         * etherStatsDataSource(2)/OBJECTID/ASN_OBJECT_ID/oid(oid)//L/A/W/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSDATASOURCE:
+        if (!
+            (COLUMN_ETHERSTATSDATASOURCE_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsDataSource) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->type = ASN_OBJECT_ID;
+        rc = etherStatsDataSource_get(rowreq_ctx,
+                                      (oid **) & var->val.string,
+                                      &var->val_len);
+        break;
+
+        /*
+         * etherStatsDropEvents(3)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSDROPEVENTS:
+        if (!
+            (COLUMN_ETHERSTATSDROPEVENTS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsDropEvents) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsDropEvents_get(rowreq_ctx,
+                                      (u_long *) var->val.string);
+        break;
+
+        /*
+         * etherStatsOctets(4)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSOCTETS:
+        if (!
+            (COLUMN_ETHERSTATSOCTETS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsOctets) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsOctets_get(rowreq_ctx, (u_long *) var->val.string);
+        break;
+
+        /*
+         * etherStatsPkts(5)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSPKTS:
+        if (!
+            (COLUMN_ETHERSTATSPKTS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsPkts) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsPkts_get(rowreq_ctx, (u_long *) var->val.string);
+        break;
+
+        /*
+         * etherStatsBroadcastPkts(6)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSBROADCASTPKTS:
+        if (!
+            (COLUMN_ETHERSTATSBROADCASTPKTS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsBroadcastPkts) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsBroadcastPkts_get(rowreq_ctx,
+                                         (u_long *) var->val.string);
+        break;
+
+        /*
+         * etherStatsMulticastPkts(7)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSMULTICASTPKTS:
+        if (!
+            (COLUMN_ETHERSTATSMULTICASTPKTS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsMulticastPkts) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsMulticastPkts_get(rowreq_ctx,
+                                         (u_long *) var->val.string);
+        break;
+
+        /*
+         * etherStatsCRCAlignErrors(8)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSCRCALIGNERRORS:
+        if (!
+            (COLUMN_ETHERSTATSCRCALIGNERRORS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsCRCAlignErrors) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsCRCAlignErrors_get(rowreq_ctx,
+                                          (u_long *) var->val.string);
+        break;
+
+        /*
+         * etherStatsUndersizePkts(9)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSUNDERSIZEPKTS:
+        if (!
+            (COLUMN_ETHERSTATSUNDERSIZEPKTS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsUndersizePkts) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsUndersizePkts_get(rowreq_ctx,
+                                         (u_long *) var->val.string);
+        break;
+
+        /*
+         * etherStatsOversizePkts(10)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSOVERSIZEPKTS:
+        if (!
+            (COLUMN_ETHERSTATSOVERSIZEPKTS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsOversizePkts) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsOversizePkts_get(rowreq_ctx,
+                                        (u_long *) var->val.string);
+        break;
+
+        /*
+         * etherStatsFragments(11)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSFRAGMENTS:
+        if (!
+            (COLUMN_ETHERSTATSFRAGMENTS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsFragments) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsFragments_get(rowreq_ctx,
+                                     (u_long *) var->val.string);
+        break;
+
+        /*
+         * etherStatsJabbers(12)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSJABBERS:
+        if (!
+            (COLUMN_ETHERSTATSJABBERS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsJabbers) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsJabbers_get(rowreq_ctx, (u_long *) var->val.string);
+        break;
+
+        /*
+         * etherStatsCollisions(13)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSCOLLISIONS:
+        if (!
+            (COLUMN_ETHERSTATSCOLLISIONS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsCollisions) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsCollisions_get(rowreq_ctx,
+                                      (u_long *) var->val.string);
+        break;
+
+        /*
+         * etherStatsPkts64Octets(14)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSPKTS64OCTETS:
+        if (!
+            (COLUMN_ETHERSTATSPKTS64OCTETS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsPkts64Octets) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsPkts64Octets_get(rowreq_ctx,
+                                        (u_long *) var->val.string);
+        break;
+
+        /*
+         * etherStatsPkts65to127Octets(15)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSPKTS65TO127OCTETS:
+        if (!
+            (COLUMN_ETHERSTATSPKTS65TO127OCTETS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsPkts65to127Octets) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsPkts65to127Octets_get(rowreq_ctx,
+                                             (u_long *) var->val.string);
+        break;
+
+        /*
+         * etherStatsPkts128to255Octets(16)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSPKTS128TO255OCTETS:
+        if (!
+            (COLUMN_ETHERSTATSPKTS128TO255OCTETS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsPkts128to255Octets) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsPkts128to255Octets_get(rowreq_ctx,
+                                              (u_long *) var->val.string);
+        break;
+
+        /*
+         * etherStatsPkts256to511Octets(17)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSPKTS256TO511OCTETS:
+        if (!
+            (COLUMN_ETHERSTATSPKTS256TO511OCTETS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsPkts256to511Octets) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsPkts256to511Octets_get(rowreq_ctx,
+                                              (u_long *) var->val.string);
+        break;
+
+        /*
+         * etherStatsPkts512to1023Octets(18)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSPKTS512TO1023OCTETS:
+        if (!
+            (COLUMN_ETHERSTATSPKTS512TO1023OCTETS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsPkts512to1023Octets) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsPkts512to1023Octets_get(rowreq_ctx,
+                                               (u_long *) var->val.string);
+        break;
+
+        /*
+         * etherStatsPkts1024to1518Octets(19)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSPKTS1024TO1518OCTETS:
+        if (!
+            (COLUMN_ETHERSTATSPKTS1024TO1518OCTETS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsPkts1024to1518Octets) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_COUNTER;
+        rc = etherStatsPkts1024to1518Octets_get(rowreq_ctx,
+                                                (u_long *) var->val.
+                                                string);
+        break;
+
+        /*
+         * etherStatsOwner(20)/OwnerString/ASN_OCTET_STR/char(char)//L/A/W/e/R/d/h 
+         */
+    case COLUMN_ETHERSTATSOWNER:
+        if (!
+            (COLUMN_ETHERSTATSOWNER_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsOwner) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->type = ASN_OCTET_STR;
+        rc = etherStatsOwner_get(rowreq_ctx, (char **) &var->val.string,
+                                 &var->val_len);
+        break;
+
+        /*
+         * etherStatsStatus(21)/EntryStatus/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h 
+         */
+    case COLUMN_ETHERSTATSSTATUS:
+        if (!
+            (COLUMN_ETHERSTATSSTATUS_FLAG & rowreq_ctx->
+             column_exists_flags)) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "column %d (etherStatsStatus) doesn't exist\n", column));
+            return MFD_SKIP;
+        }
+
+        var->val_len = sizeof(u_long);
+        var->type = ASN_INTEGER;
+        rc = etherStatsStatus_get(rowreq_ctx, (u_long *) var->val.string);
+        break;
+
+    default:
+        if (ETHERSTATSTABLE_MIN_COL <= column
+            && column <= ETHERSTATSTABLE_MAX_COL) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_column", "assume column %d is reserved\n", column));
+            rc = MFD_SKIP;
+        } else {
+            snmp_log(LOG_ERR,
+                     "unknown column %d in _etherStatsTable_get_column.\n",
+                     column);
+        }
+        break;
+    }
+
+    return rc;
+}                               /* _etherStatsTable_get_column */
+
+int
+_mfd_etherStatsTable_get_values(netsnmp_mib_handler *handler,
+                                netsnmp_handler_registration *reginfo,
+                                netsnmp_agent_request_info *agtreq_info,
+                                netsnmp_request_info *requests)
+{
+    etherStatsTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+    netsnmp_table_request_info *tri;
+    u_char         *old_string;
+    void            (*dataFreeHook) (void *);
+    int             rc;
+
+    DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_get_values",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    DEBUGMSGTL(("9:etherStatsTable:_mfd_etherStatsTable_get_values",
+                "exists %u\n", rowreq_ctx->column_exists_flags));
+
+    for (; requests; requests = requests->next) {
+        /*
+         * save old pointer, so we can free it if replaced
+         */
+        old_string = requests->requestvb->val.string;
+        dataFreeHook = requests->requestvb->dataFreeHook;
+        if (NULL == requests->requestvb->val.string) {
+            requests->requestvb->val.string = requests->requestvb->buf;
+            requests->requestvb->val_len =
+                sizeof(requests->requestvb->buf);
+        } else if (requests->requestvb->buf ==
+                   requests->requestvb->val.string) {
+            if (requests->requestvb->val_len !=
+                sizeof(requests->requestvb->buf))
+                requests->requestvb->val_len =
+                    sizeof(requests->requestvb->buf);
+        }
+
+        /*
+         * get column data
+         */
+        tri = netsnmp_extract_table_info(requests);
+        if (NULL == tri)
+            continue;
+
+        rc = _etherStatsTable_get_column(rowreq_ctx, requests->requestvb,
+                                         tri->colnum);
+        if (rc) {
+            if (MFD_SKIP == rc) {
+                requests->requestvb->type = SNMP_NOSUCHINSTANCE;
+                rc = SNMP_ERR_NOERROR;
+            }
+        } else if (NULL == requests->requestvb->val.string) {
+            snmp_log(LOG_ERR, "NULL varbind data pointer!\n");
+            rc = SNMP_ERR_GENERR;
+        }
+        if (rc)
+            netsnmp_request_set_error(requests, SNMP_VALIDATE_ERR(rc));
+
+        /*
+         * if the buffer wasn't used previously for the old data (i.e. it
+         * was allcoated memory)  and the get routine replaced the pointer,
+         * we need to free the previous pointer.
+         */
+        if (old_string && (old_string != requests->requestvb->buf) &&
+            (requests->requestvb->val.string != old_string)) {
+            if (dataFreeHook)
+                (*dataFreeHook) (old_string);
+            else
+                free(old_string);
+        }
+    }                           /* for results */
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_etherStatsTable_get_values */
+
+NETSNMP_STATIC_INLINE int
+_etherStatsTable_check_indexes(etherStatsTable_rowreq_ctx * rowreq_ctx)
+{
+    int             rc = SNMPERR_SUCCESS;
+
+    DEBUGMSGTL(("internal:etherStatsTable:_etherStatsTable_check_indexes",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+
+    /*
+     * (INDEX) etherStatsIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/R/d/h 
+     */
+    /*
+     * check defined range(s). 
+     */
+    if ((SNMPERR_SUCCESS == rc)
+        && ((rowreq_ctx->tbl_idx.etherStatsIndex < 1)
+            || (rowreq_ctx->tbl_idx.etherStatsIndex > 65535))
+        ) {
+        rc = SNMP_ERR_WRONGVALUE;
+    }
+    if (MFD_SUCCESS != rc)
+        return rc;
+    rc = etherStatsIndex_check_index(rowreq_ctx);
+    if (MFD_SUCCESS != rc)
+        return SNMP_ERR_NOCREATION;
+
+    /*
+     * if individual parts look ok, check them as a whole
+     */
+    return etherStatsTable_validate_index(etherStatsTable_if_ctx.user_ctx,
+                                          rowreq_ctx);
+}                               /* _etherStatsTable_check_indexes */
+
+/***********************************************************************
+ *
+ * SET processing
+ *
+ ***********************************************************************/
+
+/*----------------------------------------------------------------------
+ *
+ * SET: Syntax checks
+ *
+ *---------------------------------------------------------------------*/
+/*
+ * @internal
+ * Check the syntax for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_etherStatsTable_check_column(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                              netsnmp_variable_list * var, int column)
+{
+    int             rc = SNMPERR_SUCCESS;
+
+    DEBUGMSGTL(("internal:etherStatsTable:_etherStatsTable_check_column",
+                "called for %d\n", column));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    switch (column) {
+        /*
+         * (INDEX) etherStatsIndex(1)/INTEGER32/ASN_INTEGER/long(long)//l/A/w/e/R/d/h 
+         */
+    case COLUMN_ETHERSTATSINDEX:
+        rc = SNMP_ERR_NOTWRITABLE;      /* can not change index of active row */
+        break;
+
+        /*
+         * etherStatsDataSource(2)/OBJECTID/ASN_OBJECT_ID/oid(oid)//L/A/W/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSDATASOURCE:
+        rc = netsnmp_check_vb_type_and_max_size(var, ASN_OBJECT_ID,
+                                                sizeof(rowreq_ctx->data.
+                                                       etherStatsDataSource));
+        if (SNMPERR_SUCCESS != rc) {
+            DEBUGMSGTL(("etherStatsTable:_etherStatsTable_check_column:etherStatsDataSource", "varbind validation failed (eg bad type or size)\n"));
+        } else {
+            rc = etherStatsDataSource_check_value(rowreq_ctx,
+                                                  (oid *) var->val.string,
+                                                  var->val_len);
+            if ((MFD_SUCCESS != rc) && (MFD_NOT_VALID_EVER != rc)
+                && (MFD_NOT_VALID_NOW != rc)) {
+                snmp_log(LOG_ERR,
+                         "bad rc %d from etherStatsDataSource_check_value\n",
+                         rc);
+                rc = SNMP_ERR_GENERR;
+            }
+        }
+        break;
+
+        /*
+         * etherStatsDropEvents(3)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSDROPEVENTS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsOctets(4)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSOCTETS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsPkts(5)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSPKTS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsBroadcastPkts(6)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSBROADCASTPKTS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsMulticastPkts(7)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSMULTICASTPKTS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsCRCAlignErrors(8)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSCRCALIGNERRORS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsUndersizePkts(9)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSUNDERSIZEPKTS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsOversizePkts(10)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSOVERSIZEPKTS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsFragments(11)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSFRAGMENTS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsJabbers(12)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSJABBERS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsCollisions(13)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSCOLLISIONS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsPkts64Octets(14)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSPKTS64OCTETS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsPkts65to127Octets(15)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSPKTS65TO127OCTETS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsPkts128to255Octets(16)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSPKTS128TO255OCTETS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsPkts256to511Octets(17)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSPKTS256TO511OCTETS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsPkts512to1023Octets(18)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSPKTS512TO1023OCTETS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsPkts1024to1518Octets(19)/COUNTER/ASN_COUNTER/u_long(u_long)//l/A/w/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSPKTS1024TO1518OCTETS:
+        rc = SNMP_ERR_NOTWRITABLE;
+        break;
+
+        /*
+         * etherStatsOwner(20)/OwnerString/ASN_OCTET_STR/char(char)//L/A/W/e/R/d/h 
+         */
+    case COLUMN_ETHERSTATSOWNER:
+        rc = netsnmp_check_vb_type_and_max_size(var, ASN_OCTET_STR,
+                                                sizeof(rowreq_ctx->data.
+                                                       etherStatsOwner));
+        /*
+         * check defined range(s). 
+         */
+        if ((SNMPERR_SUCCESS == rc)
+            && ((var->val_len < 0) || (var->val_len > 127))
+            ) {
+            rc = SNMP_ERR_WRONGLENGTH;
+        }
+        if (SNMPERR_SUCCESS != rc) {
+            DEBUGMSGTL(("etherStatsTable:_etherStatsTable_check_column:etherStatsOwner", "varbind validation failed (eg bad type or size)\n"));
+        } else {
+            rc = etherStatsOwner_check_value(rowreq_ctx,
+                                             (char *) var->val.string,
+                                             var->val_len);
+            if ((MFD_SUCCESS != rc) && (MFD_NOT_VALID_EVER != rc)
+                && (MFD_NOT_VALID_NOW != rc)) {
+                snmp_log(LOG_ERR,
+                         "bad rc %d from etherStatsOwner_check_value\n",
+                         rc);
+                rc = SNMP_ERR_GENERR;
+            }
+        }
+        break;
+
+        /*
+         * etherStatsStatus(21)/EntryStatus/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h 
+         */
+    case COLUMN_ETHERSTATSSTATUS:
+        rc = netsnmp_check_vb_type_and_size(var, ASN_INTEGER,
+                                            sizeof(rowreq_ctx->data.
+                                                   etherStatsStatus));
+        /*
+         * check that the value is one of defined enums 
+         */
+        if ((SNMPERR_SUCCESS == rc)
+            && (*var->val.integer != ENTRYSTATUS_VALID)
+            && (*var->val.integer != ENTRYSTATUS_CREATEREQUEST)
+            && (*var->val.integer != ENTRYSTATUS_UNDERCREATION)
+            && (*var->val.integer != ENTRYSTATUS_INVALID)
+            ) {
+            rc = SNMP_ERR_WRONGVALUE;
+        }
+        if (SNMPERR_SUCCESS != rc) {
+            DEBUGMSGTL(("etherStatsTable:_etherStatsTable_check_column:etherStatsStatus", "varbind validation failed (eg bad type or size)\n"));
+        } else {
+            rc = etherStatsStatus_check_value(rowreq_ctx,
+                                              *((u_long *) var->val.
+                                                string));
+            if ((MFD_SUCCESS != rc) && (MFD_NOT_VALID_EVER != rc)
+                && (MFD_NOT_VALID_NOW != rc)) {
+                snmp_log(LOG_ERR,
+                         "bad rc %d from etherStatsStatus_check_value\n",
+                         rc);
+                rc = SNMP_ERR_GENERR;
+            }
+        }
+        break;
+
+    default:    /** We shouldn't get here */
+        rc = SNMP_ERR_GENERR;
+        snmp_log(LOG_ERR,
+                 "unknown column %d in _etherStatsTable_check_column\n",
+                 column);
+    }
+
+    return rc;
+}                               /* _etherStatsTable_check_column */
+
+int
+_mfd_etherStatsTable_check_objects(netsnmp_mib_handler *handler,
+                                   netsnmp_handler_registration *reginfo,
+                                   netsnmp_agent_request_info *agtreq_info,
+                                   netsnmp_request_info *requests)
+{
+    etherStatsTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+    netsnmp_table_request_info *tri;
+    int             rc;
+
+    DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_check_objects", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    for (; requests; requests = requests->next) {
+
+        /*
+         * get column number from table request info, and check that column
+         */
+        tri = netsnmp_extract_table_info(requests);
+        if (NULL == tri)
+            continue;
+
+        rc = _etherStatsTable_check_column(rowreq_ctx, requests->requestvb,
+                                           tri->colnum);
+        if (rc) {
+            netsnmp_request_set_error(requests, SNMP_VALIDATE_ERR(rc));
+            break;
+        }
+
+    }                           /* for results */
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_etherStatsTable_check_objects */
+
+
+/*----------------------------------------------------------------------
+ *
+ * SET: Undo setup
+ *
+ *---------------------------------------------------------------------*/
+/*
+ * @internal
+ * Set the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_etherStatsTable_undo_setup_column(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                                   int column)
+{
+    int             rc = SNMPERR_SUCCESS;
+
+    DEBUGMSGTL(("internal:etherStatsTable:_etherStatsTable_undo_setup_column", "called for %d\n", column));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    switch (column) {
+
+        /*
+         * etherStatsDataSource(2)/OBJECTID/ASN_OBJECT_ID/oid(oid)//L/A/W/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSDATASOURCE:
+        rowreq_ctx->column_set_flags |= COLUMN_ETHERSTATSDATASOURCE_FLAG;
+        rc = etherStatsDataSource_undo_setup(rowreq_ctx);
+        break;
+
+        /*
+         * etherStatsOwner(20)/OwnerString/ASN_OCTET_STR/char(char)//L/A/W/e/R/d/h 
+         */
+    case COLUMN_ETHERSTATSOWNER:
+        rowreq_ctx->column_set_flags |= COLUMN_ETHERSTATSOWNER_FLAG;
+        rc = etherStatsOwner_undo_setup(rowreq_ctx);
+        break;
+
+        /*
+         * etherStatsStatus(21)/EntryStatus/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h 
+         */
+    case COLUMN_ETHERSTATSSTATUS:
+        rowreq_ctx->column_set_flags |= COLUMN_ETHERSTATSSTATUS_FLAG;
+        rc = etherStatsStatus_undo_setup(rowreq_ctx);
+        break;
+
+    default:
+        snmp_log(LOG_ERR,
+                 "unknown column %d in _etherStatsTable_undo_setup_column\n",
+                 column);
+        break;
+    }
+
+    return rc;
+}                               /* _etherStatsTable_undo_setup_column */
+
+
+/**
+ * @internal
+ * undo setup
+ */
+int
+_mfd_etherStatsTable_undo_setup(netsnmp_mib_handler *handler,
+                                netsnmp_handler_registration *reginfo,
+                                netsnmp_agent_request_info *agtreq_info,
+                                netsnmp_request_info *requests)
+{
+    int             rc;
+    etherStatsTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+
+    DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_undo_setup",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * allocate undo context
+     */
+    rowreq_ctx->undo = etherStatsTable_allocate_data();
+    if (NULL == rowreq_ctx->undo) {
+        /** msg already logged */
+        netsnmp_request_set_error_all(requests,
+                                      SNMP_ERR_RESOURCEUNAVAILABLE);
+        return SNMP_ERR_NOERROR;
+    }
+
+    /*
+     * row undo setup
+     */
+    rowreq_ctx->column_set_flags = 0;
+    rc = etherStatsTable_undo_setup(rowreq_ctx);
+    if (MFD_SUCCESS != rc) {
+        DEBUGMSGTL(("etherStatsTable:mfd", "error %d from "
+                    "etherStatsTable_undo_setup\n", rc));
+        netsnmp_request_set_error_all(requests, SNMP_VALIDATE_ERR(rc));
+    } else {
+        /*
+         * column undo setup
+         */
+        netsnmp_table_request_info *tri;
+        for (; requests; requests = requests->next) {
+            /*
+             * set column data
+             */
+            tri = netsnmp_extract_table_info(requests);
+            if (NULL == tri)
+                continue;
+
+            rc = _etherStatsTable_undo_setup_column(rowreq_ctx,
+                                                    tri->colnum);
+            if (MFD_SUCCESS != rc) {
+                DEBUGMSGTL(("etherStatsTable:mfd", "error %d from "
+                            "etherStatsTable_undo_setup_column\n", rc));
+                netsnmp_set_request_error(agtreq_info, requests,
+                                          SNMP_VALIDATE_ERR(rc));
+            }
+        }                       /* for results */
+    }
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_etherStatsTable_undo_setup */
+
+/**
+ * @internal
+ * undo setup
+ */
+int
+_mfd_etherStatsTable_undo_cleanup(netsnmp_mib_handler *handler,
+                                  netsnmp_handler_registration *reginfo,
+                                  netsnmp_agent_request_info *agtreq_info,
+                                  netsnmp_request_info *requests)
+{
+    etherStatsTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+    int             rc;
+
+    DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_undo_cleanup", "called\n"));
+
+    /*
+     * failed row create in early stages has no rowreq_ctx
+     */
+    if (NULL == rowreq_ctx)
+        return MFD_SUCCESS;
+
+    /*
+     * call user cleanup
+     */
+    rc = etherStatsTable_undo_cleanup(rowreq_ctx);
+    if (MFD_SUCCESS != rc) {
+        /*
+         * nothing we can do about it but log it
+         */
+        DEBUGMSGTL(("etherStatsTable:mfd", "error %d from "
+                    "etherStatsTable_undo_cleanup\n", rc));
+    }
+
+    /*
+     * release undo context, if needed
+     */
+    if (rowreq_ctx->undo) {
+        etherStatsTable_release_data(rowreq_ctx->undo);
+        rowreq_ctx->undo = NULL;
+    }
+
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_etherStatsTable_undo_cleanup */
+
+/*----------------------------------------------------------------------
+ *
+ * SET: Set values
+ *
+ *---------------------------------------------------------------------*/
+/*
+ * @internal
+ * Set the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_etherStatsTable_set_column(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                            netsnmp_variable_list * var, int column)
+{
+    int             rc = SNMPERR_SUCCESS;
+
+    DEBUGMSGTL(("internal:etherStatsTable:_etherStatsTable_set_column",
+                "called for %d\n", column));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    switch (column) {
+
+        /*
+         * etherStatsDataSource(2)/OBJECTID/ASN_OBJECT_ID/oid(oid)//L/A/W/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSDATASOURCE:
+        rowreq_ctx->column_set_flags |= COLUMN_ETHERSTATSDATASOURCE_FLAG;
+        rc = etherStatsDataSource_set(rowreq_ctx, (oid *) var->val.string,
+                                      var->val_len);
+        break;
+
+        /*
+         * etherStatsOwner(20)/OwnerString/ASN_OCTET_STR/char(char)//L/A/W/e/R/d/h 
+         */
+    case COLUMN_ETHERSTATSOWNER:
+        rowreq_ctx->column_set_flags |= COLUMN_ETHERSTATSOWNER_FLAG;
+        rc = etherStatsOwner_set(rowreq_ctx, (char *) var->val.string,
+                                 var->val_len);
+        break;
+
+        /*
+         * etherStatsStatus(21)/EntryStatus/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h 
+         */
+    case COLUMN_ETHERSTATSSTATUS:
+        rowreq_ctx->column_set_flags |= COLUMN_ETHERSTATSSTATUS_FLAG;
+        rc = etherStatsStatus_set(rowreq_ctx,
+                                  *((u_long *) var->val.string));
+        break;
+
+    default:
+        snmp_log(LOG_ERR,
+                 "unknown column %d in _etherStatsTable_set_column\n",
+                 column);
+        rc = SNMP_ERR_GENERR;
+        break;
+    }
+
+    return rc;
+}                               /* _etherStatsTable_set_column */
+
+int
+_mfd_etherStatsTable_set_values(netsnmp_mib_handler *handler,
+                                netsnmp_handler_registration *reginfo,
+                                netsnmp_agent_request_info *agtreq_info,
+                                netsnmp_request_info *requests)
+{
+    etherStatsTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+    netsnmp_table_request_info *tri;
+    int             rc = SNMP_ERR_NOERROR;
+
+    DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_set_values",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    rowreq_ctx->column_set_flags = 0;
+    for (; requests; requests = requests->next) {
+        /*
+         * set column data
+         */
+        tri = netsnmp_extract_table_info(requests);
+        if (NULL == tri)
+            continue;
+
+        rc = _etherStatsTable_set_column(rowreq_ctx,
+                                         requests->requestvb, tri->colnum);
+        if (MFD_SUCCESS != rc) {
+            DEBUGMSGTL(("etherStatsTable:mfd", "error %d from "
+                        "etherStatsTable_set_column\n", rc));
+            netsnmp_set_request_error(agtreq_info, requests,
+                                      SNMP_VALIDATE_ERR(rc));
+        }
+    }                           /* for results */
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_etherStatsTable_set_values */
+
+/*----------------------------------------------------------------------
+ *
+ * SET: commit
+ *
+ *---------------------------------------------------------------------*/
+/**
+ * @internal
+ * commit the values
+ */
+int
+_mfd_etherStatsTable_commit(netsnmp_mib_handler *handler,
+                            netsnmp_handler_registration *reginfo,
+                            netsnmp_agent_request_info *agtreq_info,
+                            netsnmp_request_info *requests)
+{
+    int             rc;
+    etherStatsTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+
+    DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_commit",
+                "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    rc = etherStatsTable_commit(rowreq_ctx);
+    if (MFD_SUCCESS != rc) {
+        DEBUGMSGTL(("etherStatsTable:mfd", "error %d from "
+                    "etherStatsTable_commit\n", rc));
+        netsnmp_request_set_error_all(requests, SNMP_VALIDATE_ERR(rc));
+    }
+
+    if (rowreq_ctx->rowreq_flags & MFD_ROW_DIRTY) {
+        /*
+         * if we successfully commited this row, set the dirty flag. Use the
+         * current value + 1 (i.e. dirty = # rows changed).
+         * this is checked in post_request...
+         */
+        etherStatsTable_dirty_set(etherStatsTable_dirty_get() + 1);     /* set table dirty flag */
+    }
+
+    return SNMP_ERR_NOERROR;
+}
+
+int
+_mfd_etherStatsTable_undo_commit(netsnmp_mib_handler *handler,
+                                 netsnmp_handler_registration *reginfo,
+                                 netsnmp_agent_request_info *agtreq_info,
+                                 netsnmp_request_info *requests)
+{
+    int             rc;
+    etherStatsTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+
+    DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_undo_commit", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    if (rowreq_ctx->rowreq_flags & MFD_ROW_DIRTY) {
+        u_int           d = etherStatsTable_dirty_get();
+
+        netsnmp_assert(d != 0);
+        if (d)
+            etherStatsTable_dirty_set(d - 1);
+    }
+
+    rc = etherStatsTable_undo_commit(rowreq_ctx);
+    if (MFD_SUCCESS != rc) {
+        /*
+         * nothing we can do about it but log it
+         */
+        DEBUGMSGTL(("etherStatsTable:mfd", "error %d from "
+                    "etherStatsTable_undo_commit\n", rc));
+    }
+
+    if (rowreq_ctx->rowreq_flags & MFD_ROW_DIRTY) {
+        snmp_log(LOG_WARNING,
+                 "etherStatsTable row dirty flag still set after undo_commit\n");
+        rowreq_ctx->rowreq_flags &= ~MFD_ROW_DIRTY;
+    }
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_etherStatsTable_commit */
+
+/*----------------------------------------------------------------------
+ *
+ * SET: Undo
+ *
+ *---------------------------------------------------------------------*/
+/**
+ * @internal
+ * undo the value for a particular column
+ */
+NETSNMP_STATIC_INLINE int
+_etherStatsTable_undo_column(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                             netsnmp_variable_list * var, int column)
+{
+    int             rc = SNMPERR_SUCCESS;
+
+    DEBUGMSGTL(("internal:etherStatsTable:_etherStatsTable_undo_column",
+                "called for %d\n", column));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    switch (column) {
+
+        /*
+         * etherStatsDataSource(2)/OBJECTID/ASN_OBJECT_ID/oid(oid)//L/A/W/e/r/d/h 
+         */
+    case COLUMN_ETHERSTATSDATASOURCE:
+        rc = etherStatsDataSource_undo(rowreq_ctx);
+        break;
+
+        /*
+         * etherStatsOwner(20)/OwnerString/ASN_OCTET_STR/char(char)//L/A/W/e/R/d/h 
+         */
+    case COLUMN_ETHERSTATSOWNER:
+        rc = etherStatsOwner_undo(rowreq_ctx);
+        break;
+
+        /*
+         * etherStatsStatus(21)/EntryStatus/ASN_INTEGER/long(u_long)//l/A/W/E/r/d/h 
+         */
+    case COLUMN_ETHERSTATSSTATUS:
+        rc = etherStatsStatus_undo(rowreq_ctx);
+        break;
+
+    default:
+        snmp_log(LOG_ERR,
+                 "unknown column %d in _etherStatsTable_undo_column\n",
+                 column);
+        break;
+    }
+
+    return rc;
+}                               /* _etherStatsTable_undo_column */
+
+int
+_mfd_etherStatsTable_undo_values(netsnmp_mib_handler *handler,
+                                 netsnmp_handler_registration *reginfo,
+                                 netsnmp_agent_request_info *agtreq_info,
+                                 netsnmp_request_info *requests)
+{
+    int             rc;
+    etherStatsTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+    netsnmp_table_request_info *tri;
+
+    DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_undo_values", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    rc = etherStatsTable_undo(rowreq_ctx);
+    if (MFD_SUCCESS != rc) {
+        /*
+         * nothing we can do about it but log it
+         */
+        DEBUGMSGTL(("etherStatsTable:mfd", "error %d from "
+                    "etherStatsTable_undo\n", rc));
+    }
+
+    for (; requests; requests = requests->next) {
+        /*
+         * set column data
+         */
+        tri = netsnmp_extract_table_info(requests);
+        if (NULL == tri)
+            continue;
+
+        rc = _etherStatsTable_undo_column(rowreq_ctx, requests->requestvb,
+                                          tri->colnum);
+        if (MFD_SUCCESS != rc) {
+            /*
+             * nothing we can do about it but log it
+             */
+            DEBUGMSGTL(("etherStatsTable:mfd", "error %d from "
+                        "etherStatsTable_undo_column\n", rc));
+        }
+    }                           /* for results */
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_etherStatsTable_undo_values */
+
+/*----------------------------------------------------------------------
+ *
+ * SET: irreversible commit
+ *
+ *---------------------------------------------------------------------*/
+/**
+ * @internal
+ * commit irreversible actions
+ */
+int
+_mfd_etherStatsTable_irreversible_commit(netsnmp_mib_handler *handler,
+                                         netsnmp_handler_registration
+                                         *reginfo,
+                                         netsnmp_agent_request_info
+                                         *agtreq_info,
+                                         netsnmp_request_info *requests)
+{
+    etherStatsTable_rowreq_ctx *rowreq_ctx =
+        netsnmp_container_table_row_extract(requests);
+
+    DEBUGMSGTL(("internal:etherStatsTable:_mfd_etherStatsTable_irreversible:commit", "called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+    /*
+     * check for and handle row creation/deletion
+     * and update column exist flags...
+     */
+    if (rowreq_ctx->rowreq_flags & MFD_ROW_DELETED) {
+        if (!(rowreq_ctx->rowreq_flags & MFD_ROW_CREATED))
+            CONTAINER_REMOVE(etherStatsTable_if_ctx.container, rowreq_ctx);
+    } else {
+        if (rowreq_ctx->column_set_flags) {
+            DEBUGMSGTL(("internal:etherStatsTable:_mfd_irreversible_commit", "updating exists (%#x) w/set (%#x) = %#x\n", rowreq_ctx->column_exists_flags, rowreq_ctx->column_set_flags, (rowreq_ctx->column_exists_flags | rowreq_ctx->column_set_flags)));
+            rowreq_ctx->column_exists_flags |=
+                rowreq_ctx->column_set_flags;
+            rowreq_ctx->column_set_flags = 0;
+        }
+        if (rowreq_ctx->rowreq_flags & MFD_ROW_CREATED) {
+            rowreq_ctx->rowreq_flags &= ~MFD_ROW_CREATED;
+            CONTAINER_INSERT(etherStatsTable_if_ctx.container, rowreq_ctx);
+        }
+    }
+
+    return SNMP_ERR_NOERROR;
+}                               /* _mfd_etherStatsTable_irreversible_commit */
+
+/***********************************************************************
+ *
+ * DATA ACCESS
+ *
+ ***********************************************************************/
+static void     _container_free(netsnmp_container * container);
+
+/**
+ * @internal
+ */
+static int
+_cache_load(netsnmp_cache * cache, void *vmagic)
+{
+    DEBUGMSGTL(("internal:etherStatsTable:_cache_load", "called\n"));
+
+    if ((NULL == cache) || (NULL == cache->magic)) {
+        snmp_log(LOG_ERR,
+                 "invalid cache for etherStatsTable_cache_load\n");
+        return -1;
+    }
+
+    /** should only be called for an invalid or expired cache */
+    netsnmp_assert((0 == cache->valid) || (1 == cache->expired));
+
+    /*
+     * call user code
+     */
+    return etherStatsTable_container_load((netsnmp_container *) cache->
+                                          magic);
+}                               /* _cache_load */
+
+/**
+ * @internal
+ */
+static void
+_cache_free(netsnmp_cache * cache, void *magic)
+{
+    netsnmp_container *container;
+
+    DEBUGMSGTL(("internal:etherStatsTable:_cache_free", "called\n"));
+
+    if ((NULL == cache) || (NULL == cache->magic)) {
+        snmp_log(LOG_ERR, "invalid cache in etherStatsTable_cache_free\n");
+        return;
+    }
+
+    container = (netsnmp_container *) cache->magic;
+
+    _container_free(container);
+}                               /* _cache_free */
+
+/**
+ * @internal
+ */
+static void
+_container_item_free(etherStatsTable_rowreq_ctx * rowreq_ctx,
+                     void *context)
+{
+    DEBUGMSGTL(("internal:etherStatsTable:_container_item_free",
+                "called\n"));
+
+    if (NULL == rowreq_ctx)
+        return;
+
+    etherStatsTable_release_rowreq_ctx(rowreq_ctx);
+}                               /* _container_item_free */
+
+/**
+ * @internal
+ */
+static void
+_container_free(netsnmp_container * container)
+{
+    DEBUGMSGTL(("internal:etherStatsTable:_container_free", "called\n"));
+
+    if (NULL == container) {
+        snmp_log(LOG_ERR,
+                 "invalid container in etherStatsTable_container_free\n");
+        return;
+    }
+
+    /*
+     * call user code
+     */
+    etherStatsTable_container_free(container);
+
+    /*
+     * free all items. inefficient, but easy.
+     */
+    CONTAINER_CLEAR(container,
+                    (netsnmp_container_obj_func *) _container_item_free,
+                    NULL);
+}                               /* _container_free */
+
+/**
+ * @internal
+ * initialize the container with functions or wrappers
+ */
+void
+_etherStatsTable_container_init(etherStatsTable_interface_ctx * if_ctx)
+{
+    DEBUGMSGTL(("internal:etherStatsTable:_etherStatsTable_container_init",
+                "called\n"));
+
+    /*
+     * cache init
+     */
+    if_ctx->cache = netsnmp_cache_create(30,    /* timeout in seconds */
+                                         _cache_load, _cache_free,
+                                         etherStatsTable_oid,
+                                         etherStatsTable_oid_size);
+
+    if (NULL == if_ctx->cache) {
+        snmp_log(LOG_ERR, "error creating cache for etherStatsTable\n");
+        return;
+    }
+
+    if_ctx->cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+
+    etherStatsTable_container_init(&if_ctx->container, if_ctx->cache);
+    if (NULL == if_ctx->container)
+        if_ctx->container =
+            netsnmp_container_find("etherStatsTable:table_container");
+    if (NULL == if_ctx->container) {
+        snmp_log(LOG_ERR, "error creating container in "
+                 "etherStatsTable_container_init\n");
+        return;
+    }
+
+    if (NULL != if_ctx->cache)
+        if_ctx->cache->magic = (void *) if_ctx->container;
+}                               /* _etherStatsTable_container_init */
+
+/**
+ * @internal
+ * shutdown the container with functions or wrappers
+ */
+void
+_etherStatsTable_container_shutdown(etherStatsTable_interface_ctx * if_ctx)
+{
+    DEBUGMSGTL(("internal:etherStatsTable:_etherStatsTable_container_shutdown", "called\n"));
+
+    etherStatsTable_container_shutdown(if_ctx->container);
+
+    _container_free(if_ctx->container);
+
+}                               /* _etherStatsTable_container_shutdown */
+
+
+etherStatsTable_rowreq_ctx *
+etherStatsTable_row_find_by_mib_index(etherStatsTable_mib_index * mib_idx)
+{
+    etherStatsTable_rowreq_ctx *rowreq_ctx;
+    oid             oid_tmp[MAX_OID_LEN];
+    netsnmp_index   oid_idx;
+    int             rc;
+
+    /*
+     * set up storage for OID
+     */
+    oid_idx.oids = oid_tmp;
+    oid_idx.len = sizeof(oid_tmp) / sizeof(oid);
+
+    /*
+     * convert
+     */
+    rc = etherStatsTable_index_to_oid(&oid_idx, mib_idx);
+    if (MFD_SUCCESS != rc)
+        return NULL;
+
+    rowreq_ctx =
+        CONTAINER_FIND(etherStatsTable_if_ctx.container, &oid_idx);
+
+    return rowreq_ctx;
+}
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.h b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.h
new file mode 100644
index 0000000..4e1457b
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_interface.h
@@ -0,0 +1,98 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *       version : 15899 $ of $
+ *
+ * $Id:$
+ */
+/** @ingroup interface: Routines to interface to Net-SNMP
+ *
+ * \warning This code should not be modified, called directly,
+ *          or used to interpret functionality. It is subject to
+ *          change at any time.
+ * 
+ * @{
+ */
+/*
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ * ***                                                               ***
+ * ***  NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE  ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THIS FILE DOES NOT CONTAIN ANY USER EDITABLE CODE.      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***       THE GENERATED CODE IS INTERNAL IMPLEMENTATION, AND      ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * ***    IS SUBJECT TO CHANGE WITHOUT WARNING IN FUTURE RELEASES.   ***
+ * ***                                                               ***
+ * ***                                                               ***
+ * *********************************************************************
+ * *********************************************************************
+ * *********************************************************************
+ */
+#ifndef ETHERSTATSTABLE_INTERFACE_H
+#define ETHERSTATSTABLE_INTERFACE_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+#include "etherStatsTable.h"
+
+
+    /*
+     ********************************************************************
+     * Table declarations
+     */
+
+    /*
+     * PUBLIC interface initialization routine 
+     */
+    void           
+        _etherStatsTable_initialize_interface(etherStatsTable_registration
+                                              * user_ctx, u_long flags);
+    void           
+        _etherStatsTable_shutdown_interface(etherStatsTable_registration *
+                                            user_ctx);
+
+    etherStatsTable_registration *etherStatsTable_registration_get(void);
+
+    etherStatsTable_registration
+        *etherStatsTable_registration_set(etherStatsTable_registration *
+                                          newreg);
+
+    netsnmp_container *etherStatsTable_container_get(void);
+    int             etherStatsTable_container_size(void);
+
+    u_int           etherStatsTable_dirty_get(void);
+    void            etherStatsTable_dirty_set(u_int status);
+
+    etherStatsTable_rowreq_ctx *etherStatsTable_allocate_rowreq_ctx(void
+                                                                    *);
+    void           
+        etherStatsTable_release_rowreq_ctx(etherStatsTable_rowreq_ctx *
+                                           rowreq_ctx);
+
+    int             etherStatsTable_index_to_oid(netsnmp_index * oid_idx,
+                                                 etherStatsTable_mib_index
+                                                 * mib_idx);
+    int             etherStatsTable_index_from_oid(netsnmp_index * oid_idx,
+                                                   etherStatsTable_mib_index
+                                                   * mib_idx);
+
+    /*
+     * access to certain internals. use with caution!
+     */
+    void            etherStatsTable_valid_columns_set(netsnmp_column_info
+                                                      *vc);
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* ETHERSTATSTABLE_INTERFACE_H */
+/** @} */
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_oids.h b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_oids.h
new file mode 100644
index 0000000..60f1da3
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/etherStatsTable_oids.h
@@ -0,0 +1,107 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  : generic-table-oids.m2c 12855 2005-09-27 15:56:08Z rstory $
+ *
+ * $Id:$
+ */
+#ifndef ETHERSTATSTABLE_OIDS_H
+#define ETHERSTATSTABLE_OIDS_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+    /*
+     * column number definitions for table etherStatsTable 
+     */
+#define ETHERSTATSTABLE_OID              1,3,6,1,2,1,16,1,1
+
+#define COLUMN_ETHERSTATSINDEX         1
+#define COLUMN_ETHERSTATSINDEX_FLAG    (0x1 << 0)
+
+#define COLUMN_ETHERSTATSDATASOURCE         2
+#define COLUMN_ETHERSTATSDATASOURCE_FLAG    (0x1 << 1)
+
+#define COLUMN_ETHERSTATSDROPEVENTS         3
+#define COLUMN_ETHERSTATSDROPEVENTS_FLAG    (0x1 << 2)
+
+#define COLUMN_ETHERSTATSOCTETS         4
+#define COLUMN_ETHERSTATSOCTETS_FLAG    (0x1 << 3)
+
+#define COLUMN_ETHERSTATSPKTS         5
+#define COLUMN_ETHERSTATSPKTS_FLAG    (0x1 << 4)
+
+#define COLUMN_ETHERSTATSBROADCASTPKTS         6
+#define COLUMN_ETHERSTATSBROADCASTPKTS_FLAG    (0x1 << 5)
+
+#define COLUMN_ETHERSTATSMULTICASTPKTS         7
+#define COLUMN_ETHERSTATSMULTICASTPKTS_FLAG    (0x1 << 6)
+
+#define COLUMN_ETHERSTATSCRCALIGNERRORS         8
+#define COLUMN_ETHERSTATSCRCALIGNERRORS_FLAG    (0x1 << 7)
+
+#define COLUMN_ETHERSTATSUNDERSIZEPKTS         9
+#define COLUMN_ETHERSTATSUNDERSIZEPKTS_FLAG    (0x1 << 8)
+
+#define COLUMN_ETHERSTATSOVERSIZEPKTS         10
+#define COLUMN_ETHERSTATSOVERSIZEPKTS_FLAG    (0x1 << 9)
+
+#define COLUMN_ETHERSTATSFRAGMENTS         11
+#define COLUMN_ETHERSTATSFRAGMENTS_FLAG    (0x1 << 10)
+
+#define COLUMN_ETHERSTATSJABBERS         12
+#define COLUMN_ETHERSTATSJABBERS_FLAG    (0x1 << 11)
+
+#define COLUMN_ETHERSTATSCOLLISIONS         13
+#define COLUMN_ETHERSTATSCOLLISIONS_FLAG    (0x1 << 12)
+
+#define COLUMN_ETHERSTATSPKTS64OCTETS         14
+#define COLUMN_ETHERSTATSPKTS64OCTETS_FLAG    (0x1 << 13)
+
+#define COLUMN_ETHERSTATSPKTS65TO127OCTETS         15
+#define COLUMN_ETHERSTATSPKTS65TO127OCTETS_FLAG    (0x1 << 14)
+
+#define COLUMN_ETHERSTATSPKTS128TO255OCTETS         16
+#define COLUMN_ETHERSTATSPKTS128TO255OCTETS_FLAG    (0x1 << 15)
+
+#define COLUMN_ETHERSTATSPKTS256TO511OCTETS         17
+#define COLUMN_ETHERSTATSPKTS256TO511OCTETS_FLAG    (0x1 << 16)
+
+#define COLUMN_ETHERSTATSPKTS512TO1023OCTETS         18
+#define COLUMN_ETHERSTATSPKTS512TO1023OCTETS_FLAG    (0x1 << 17)
+
+#define COLUMN_ETHERSTATSPKTS1024TO1518OCTETS         19
+#define COLUMN_ETHERSTATSPKTS1024TO1518OCTETS_FLAG    (0x1 << 18)
+
+#define COLUMN_ETHERSTATSOWNER         20
+#define COLUMN_ETHERSTATSOWNER_FLAG    (0x1 << 19)
+
+#define COLUMN_ETHERSTATSSTATUS         21
+#define COLUMN_ETHERSTATSSTATUS_FLAG    (0x1 << 20)
+
+
+#define ETHERSTATSTABLE_MIN_COL   COLUMN_ETHERSTATSINDEX
+#define ETHERSTATSTABLE_MAX_COL   COLUMN_ETHERSTATSSTATUS
+
+
+    /*
+     * TODO:405:r: Review ETHERSTATSTABLE_SETTABLE_COLS macro.
+     * OR together all the writable cols.
+     */
+#define ETHERSTATSTABLE_SETTABLE_COLS (COLUMN_ETHERSTATSINDEX_FLAG | COLUMN_ETHERSTATSDATASOURCE_FLAG | COLUMN_ETHERSTATSDROPEVENTS_FLAG | COLUMN_ETHERSTATSOCTETS_FLAG | COLUMN_ETHERSTATSPKTS_FLAG | COLUMN_ETHERSTATSBROADCASTPKTS_FLAG | COLUMN_ETHERSTATSMULTICASTPKTS_FLAG | COLUMN_ETHERSTATSCRCALIGNERRORS_FLAG | COLUMN_ETHERSTATSUNDERSIZEPKTS_FLAG | COLUMN_ETHERSTATSOVERSIZEPKTS_FLAG | COLUMN_ETHERSTATSFRAGMENTS_FLAG | COLUMN_ETHERSTATSJABBERS_FLAG | COLUMN_ETHERSTATSCOLLISIONS_FLAG | COLUMN_ETHERSTATSPKTS64OCTETS_FLAG | COLUMN_ETHERSTATSPKTS65TO127OCTETS_FLAG | COLUMN_ETHERSTATSPKTS128TO255OCTETS_FLAG | COLUMN_ETHERSTATSPKTS256TO511OCTETS_FLAG | COLUMN_ETHERSTATSPKTS512TO1023OCTETS_FLAG | COLUMN_ETHERSTATSPKTS1024TO1518OCTETS_FLAG | COLUMN_ETHERSTATSOWNER_FLAG | COLUMN_ETHERSTATSSTATUS_FLAG)
+    /*
+     * TODO:405:r: Review ETHERSTATSTABLE_REQUIRED_COLS macro.
+     * OR together all the required rows for row creation.
+     * default is writable cols w/out defaults.
+     */
+#define ETHERSTATSTABLE_REQUIRED_COLS (COLUMN_ETHERSTATSDATASOURCE_FLAG | COLUMN_ETHERSTATSOWNER_FLAG | COLUMN_ETHERSTATSSTATUS_FLAG)
+
+#define ETHERSTATSTABLE_VALID_COL    COLUMN_ETHERSTATSJABBERS_FLAG 
+
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* ETHERSTATSTABLE_OIDS_H */
diff --git a/agent/mibgroup/rmon-mib/etherStatsTable/ioctl_imp_common.h b/agent/mibgroup/rmon-mib/etherStatsTable/ioctl_imp_common.h
new file mode 100644
index 0000000..9819895
--- /dev/null
+++ b/agent/mibgroup/rmon-mib/etherStatsTable/ioctl_imp_common.h
@@ -0,0 +1,35 @@
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <net/if.h>
+#include <linux/sockios.h>
+#include <ifaddrs.h>
+
+/* use kernel's ethtool.h  */
+
+#include <linux/types.h>
+typedef __u64 u64;
+typedef __u32 u32;
+typedef __u16 u16;
+typedef __u8 u8;
+#include <linux/ethtool.h>
+
+/* structure for storing the interface names in the system */
+
+struct ifname {
+    struct ifname *ifn_next;
+    char name [IF_NAMESIZE];
+};
+
+struct ifname *etherstats_interface_name_list_get (struct ifname *, int *);
+int etherstats_interface_name_list_free (struct ifname *list_head);
+int etherstats_interface_ioctl_ifindex_get (int fd, const char *name);
+int _etherStats_ioctl_get(int fd, int which, struct ifreq *ifrq, const char* name);
+int interface_ioctl_etherstats_get(etherStatsTable_rowreq_ctx *rowreq_ctx, int fd, const char* name);
+
+/* for maintainability */
+
+#define BROADCOM_RECEIVE_JABBERS                "rx_jabbers"
+
+#define ETHERSTATSJABBERS(x)                    strstr(x, BROADCOM_RECEIVE_JABBERS)
+
diff --git a/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c b/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c
index 435f560..d6023e5 100644
--- a/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c
+++ b/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.c
@@ -13,6 +13,7 @@
  * content of the sctpAssocLocalAddrTable 
  */
 static netsnmp_container *sctpAssocLocalAddrTable_container;
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the sctpAssocLocalAddrTable module */
 void
@@ -27,8 +28,7 @@
 void
 shutdown_sctpAssocLocalAddrTable(void)
 {
-    sctpAssocLocalAddrTable_container_clear
-        (sctpAssocLocalAddrTable_container);
+    shutdown_table_sctpAssocLocalAddrTable();
 }
 
 /** Initialize the sctpAssocLocalAddrTable table by defining its contents and how it's structured */
@@ -42,7 +42,6 @@
     netsnmp_handler_registration *reg = NULL;
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
 
     reg =
         netsnmp_create_handler_registration("sctpAssocLocalAddrTable",
@@ -103,6 +102,7 @@
     if (SNMPERR_SUCCESS != netsnmp_register_table(reg, table_info)) {
         snmp_log(LOG_ERR,
                  "error registering table handler for sctpAssocLocalAddrTable\n");
+        reg = NULL; /* it was freed inside netsnmp_register_table */
         goto bail;
     }
 
@@ -121,6 +121,9 @@
     if (handler)
         netsnmp_handler_free(handler);
 
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
+
     if (container)
         CONTAINER_FREE(container);
 
@@ -128,6 +131,17 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_sctpAssocLocalAddrTable(void)
+{
+    if (table_info) {
+        netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+    sctpAssocLocalAddrTable_container_clear
+        (sctpAssocLocalAddrTable_container);
+}
+
 /** handles requests for the sctpAssocLocalAddrTable table */
 int
 sctpAssocLocalAddrTable_handler(netsnmp_mib_handler *handler,
@@ -260,8 +274,7 @@
 void
 sctpAssocLocalAddrTable_entry_free(sctpAssocLocalAddrTable_entry * entry)
 {
-    if (entry != NULL)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 netsnmp_container *
diff --git a/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.h b/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.h
index c2cc055..eff080f 100644
--- a/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.h
+++ b/agent/mibgroup/sctp-mib/sctpAssocLocalAddrTable.h
@@ -13,6 +13,7 @@
 void            init_sctpAssocLocalAddrTable(void);
 void            shutdown_sctpAssocLocalAddrTable(void);
 void            initialize_table_sctpAssocLocalAddrTable(void);
+void            shutdown_table_sctpAssocLocalAddrTable(void);
 Netsnmp_Node_Handler sctpAssocLocalAddrTable_handler;
 
 /*
diff --git a/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c b/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c
index 6010d84..38ca8a3 100644
--- a/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c
+++ b/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.c
@@ -13,6 +13,7 @@
  * content of the sctpAssocRemAddrTable 
  */
 static netsnmp_container *sctpAssocRemAddrTable_container;
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the sctpAssocRemAddrTable module */
 void
@@ -27,7 +28,7 @@
 void
 shutdown_sctpAssocRemAddrTable(void)
 {
-    sctpAssocRemAddrTable_container_clear(sctpAssocRemAddrTable_container);
+    shutdown_table_sctpAssocRemAddrTable();
 }
 
 /** Initialize the sctpAssocRemAddrTable table by defining its contents and how it's structured */
@@ -41,7 +42,6 @@
     netsnmp_handler_registration *reg = NULL;
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
 
     reg =
         netsnmp_create_handler_registration("sctpAssocRemAddrTable",
@@ -101,6 +101,7 @@
     if (SNMPERR_SUCCESS != netsnmp_register_table(reg, table_info)) {
         snmp_log(LOG_ERR,
                  "error registering table handler for sctpAssocRemAddrTable\n");
+        reg = NULL; /* it was freed inside netsnmp_register_table */
         goto bail;
     }
 
@@ -119,6 +120,8 @@
     if (handler)
         netsnmp_handler_free(handler);
 
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
 
     if (container)
         CONTAINER_FREE(container);
@@ -127,6 +130,16 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_sctpAssocRemAddrTable(void)
+{
+    if (table_info) {
+        netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+    sctpAssocRemAddrTable_container_clear(sctpAssocRemAddrTable_container);
+}
+
 
 /** handles requests for the sctpAssocRemAddrTable table */
 int
@@ -306,8 +319,7 @@
 void
 sctpAssocRemAddrTable_entry_free(sctpAssocRemAddrTable_entry * entry)
 {
-    if (entry != NULL)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 netsnmp_container *
diff --git a/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.h b/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.h
index cc65c7e..5068561 100644
--- a/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.h
+++ b/agent/mibgroup/sctp-mib/sctpAssocRemAddrTable.h
@@ -13,6 +13,7 @@
 void            init_sctpAssocRemAddrTable(void);
 void            shutdown_sctpAssocRemAddrTable(void);
 void            initialize_table_sctpAssocRemAddrTable(void);
+void            shutdown_table_sctpAssocRemAddrTable(void);
 Netsnmp_Node_Handler sctpAssocRemAddrTable_handler;
 
 /*
diff --git a/agent/mibgroup/sctp-mib/sctpAssocTable.c b/agent/mibgroup/sctp-mib/sctpAssocTable.c
index e720a38..9919075 100644
--- a/agent/mibgroup/sctp-mib/sctpAssocTable.c
+++ b/agent/mibgroup/sctp-mib/sctpAssocTable.c
@@ -16,6 +16,7 @@
  * content of the sctpAssocTable 
  */
 static netsnmp_container *sctpAssocTable_container;
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the sctpAssocTable module */
 void
@@ -30,7 +31,7 @@
 void
 shutdown_sctpAssocTable(void)
 {
-    sctpAssocTable_container_clear(sctpAssocTable_container);
+    shutdown_table_sctpAssocTable();
 }
 
 /** Initialize the sctpAssocTable table by defining its contents and how it's structured */
@@ -43,7 +44,6 @@
     netsnmp_handler_registration *reg = NULL;
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
     netsnmp_cache  *cache = NULL;
 
     reg =
@@ -120,6 +120,8 @@
         goto bail;
     }
 
+    netsnmp_cache_handler_owns_cache(handler);
+
     if (SNMPERR_SUCCESS != netsnmp_inject_handler(reg, handler)) {
         snmp_log(LOG_ERR,
                  "error injecting cache handler for sctpAssocTable\n");
@@ -133,6 +135,7 @@
     if (SNMPERR_SUCCESS != netsnmp_register_table(reg, table_info)) {
         snmp_log(LOG_ERR,
                  "error registering table handler for sctpAssocTable\n");
+        reg = NULL; /* it was freed inside netsnmp_register_table */
         goto bail;
     }
 
@@ -151,6 +154,12 @@
     if (handler)
         netsnmp_handler_free(handler);
 
+    if (cache)
+        netsnmp_cache_free(cache);
+
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
+
     if (container)
         CONTAINER_FREE(container);
 
@@ -158,6 +167,17 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_sctpAssocTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+    if (sctpAssocTable_container)
+	sctpAssocTable_container_clear(sctpAssocTable_container);
+}
+
 
 /** handles requests for the sctpAssocTable table */
 int
@@ -487,8 +507,7 @@
 void
 sctpAssocTable_entry_free(sctpAssocTable_entry * entry)
 {
-    if (entry != NULL)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 netsnmp_container *
diff --git a/agent/mibgroup/sctp-mib/sctpAssocTable.h b/agent/mibgroup/sctp-mib/sctpAssocTable.h
index a6a9f3c..c6257b0 100644
--- a/agent/mibgroup/sctp-mib/sctpAssocTable.h
+++ b/agent/mibgroup/sctp-mib/sctpAssocTable.h
@@ -13,6 +13,7 @@
 void            init_sctpAssocTable(void);
 void            shutdown_sctpAssocTable(void);
 void            initialize_table_sctpAssocTable(void);
+void            shutdown_table_sctpAssocTable(void);
 Netsnmp_Node_Handler sctpAssocTable_handler;
 
 /*
diff --git a/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c b/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c
index b798b7e..1a6fd35 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c
+++ b/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.c
@@ -10,6 +10,7 @@
 #include "sctpLookupLocalPortTable.h"
 
 static netsnmp_container *sctpLookupLocalPortTable_container;
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the sctpLookupLocalPortTable module */
 void
@@ -24,8 +25,7 @@
 void
 shutdown_sctpLookupLocalPortTable(void)
 {
-    sctpLookupLocalPortTable_container_clear
-        (sctpLookupLocalPortTable_container);
+    shutdown_table_sctpLookupLocalPortTable();
 }
 
 /** Initialize the sctpLookupLocalPortTable table by defining its contents and how it's structured */
@@ -39,7 +39,6 @@
     netsnmp_handler_registration *reg = NULL;
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
 
     reg =
         netsnmp_create_handler_registration("sctpLookupLocalPortTable",
@@ -98,6 +97,7 @@
     if (SNMPERR_SUCCESS != netsnmp_register_table(reg, table_info)) {
         snmp_log(LOG_ERR,
                  "error registering table handler for sctpLookupLocalPortTable\n");
+        reg = NULL; /* it was freed inside netsnmp_register_table */
         goto bail;
     }
 
@@ -116,6 +116,8 @@
     if (handler)
         netsnmp_handler_free(handler);
 
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
 
     if (container)
         CONTAINER_FREE(container);
@@ -124,6 +126,16 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_sctpLookupLocalPortTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+    sctpLookupLocalPortTable_container_clear
+        (sctpLookupLocalPortTable_container);
+}
 
 /** handles requests for the sctpLookupLocalPortTable table */
 int
@@ -246,8 +258,7 @@
 void
 sctpLookupLocalPortTable_entry_free(sctpLookupLocalPortTable_entry * entry)
 {
-    if (entry != NULL)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 netsnmp_container *
diff --git a/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.h b/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.h
index 9da6cd9..226c168 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.h
+++ b/agent/mibgroup/sctp-mib/sctpLookupLocalPortTable.h
@@ -13,6 +13,7 @@
 void            init_sctpLookupLocalPortTable(void);
 void            shutdown_sctpLookupLocalPortTable(void);
 void            initialize_table_sctpLookupLocalPortTable(void);
+void            shutdown_table_sctpLookupLocalPortTable(void);
 Netsnmp_Node_Handler sctpLookupLocalPortTable_handler;
 
 /*
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c b/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c
index ed1b849..ae2ec91 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.c
@@ -10,6 +10,7 @@
 #include "sctpLookupRemHostNameTable.h"
 
 static netsnmp_container *sctpLookupRemHostNameTable_container;
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the sctpLookupRemHostNameTable module */
 void
@@ -24,8 +25,7 @@
 void
 shutdown_sctpLookupRemHostNameTable(void)
 {
-    sctpLookupRemHostNameTable_container_clear
-        (sctpLookupRemHostNameTable_container);
+    shutdown_table_sctpLookupRemHostNameTable();
 }
 
 /** Initialize the sctpLookupRemHostNameTable table by defining its contents and how it's structured */
@@ -39,7 +39,6 @@
     netsnmp_handler_registration *reg = NULL;
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
 
     reg =
         netsnmp_create_handler_registration("sctpLookupRemHostNameTable",
@@ -100,6 +99,7 @@
     if (SNMPERR_SUCCESS != netsnmp_register_table(reg, table_info)) {
         snmp_log(LOG_ERR,
                  "error registering table handler for sctpLookupRemHostNameTable\n");
+        reg = NULL; /* it was freed inside netsnmp_register_table */
         goto bail;
     }
 
@@ -118,6 +118,9 @@
     if (handler)
         netsnmp_handler_free(handler);
 
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
+
     if (container)
         CONTAINER_FREE(container);
 
@@ -125,6 +128,17 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_sctpLookupRemHostNameTable(void)
+{
+    if (table_info) {
+        netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+    sctpLookupRemHostNameTable_container_clear
+        (sctpLookupRemHostNameTable_container);
+}
+
 /** handles requests for the sctpLookupRemHostNameTable table */
 int
 sctpLookupRemHostNameTable_handler(netsnmp_mib_handler *handler,
@@ -249,8 +263,7 @@
 sctpLookupRemHostNameTable_entry_free(sctpLookupRemHostNameTable_entry *
                                       entry)
 {
-    if (entry != NULL)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 netsnmp_container *
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.h b/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.h
index 484cb58..5bd3c48 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.h
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemHostNameTable.h
@@ -13,6 +13,7 @@
 void            init_sctpLookupRemHostNameTable(void);
 void            shutdown_sctpLookupRemHostNameTable(void);
 void            initialize_table_sctpLookupRemHostNameTable(void);
+void            shutdown_table_sctpLookupRemHostNameTable(void);
 Netsnmp_Node_Handler sctpLookupRemHostNameTable_handler;
 
 /*
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c b/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c
index fb7ff4b..368dd51 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.c
@@ -10,6 +10,7 @@
 #include "sctpLookupRemIPAddrTable.h"
 
 static netsnmp_container *sctpLookupRemIPAddrTable_container;
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the sctpLookupRemIPAddrTable module */
 void
@@ -24,8 +25,7 @@
 void
 shutdown_sctpLookupRemIPAddrTable(void)
 {
-    sctpLookupRemIPAddrTable_container_clear
-        (sctpLookupRemIPAddrTable_container);
+    shutdown_table_sctpLookupRemIPAddrTable();
 }
 
 /** Initialize the sctpLookupRemIPAddrTable table by defining its contents and how it's structured */
@@ -39,7 +39,6 @@
     netsnmp_handler_registration *reg = NULL;
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
 
     reg =
         netsnmp_create_handler_registration("sctpLookupRemIPAddrTable",
@@ -99,6 +98,7 @@
     if (SNMPERR_SUCCESS != netsnmp_register_table(reg, table_info)) {
         snmp_log(LOG_ERR,
                  "error registering table handler for sctpLookupRemIPAddrTable\n");
+        reg = NULL; /* it was freed inside netsnmp_register_table */
         goto bail;
     }
 
@@ -112,6 +112,8 @@
     if (handler)
         netsnmp_handler_free(handler);
 
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
 
     if (container)
         CONTAINER_FREE(container);
@@ -120,6 +122,17 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_sctpLookupRemIPAddrTable(void)
+{
+    if (table_info) {
+        netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+    sctpLookupRemIPAddrTable_container_clear
+        (sctpLookupRemIPAddrTable_container);
+}
+
 /** handles requests for the sctpLookupRemIPAddrTable table */
 int
 sctpLookupRemIPAddrTable_handler(netsnmp_mib_handler *handler,
@@ -250,8 +263,7 @@
 void
 sctpLookupRemIPAddrTable_entry_free(sctpLookupRemIPAddrTable_entry * entry)
 {
-    if (entry != NULL)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 netsnmp_container *
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.h b/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.h
index e315d6d..b74514c 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.h
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemIPAddrTable.h
@@ -13,6 +13,7 @@
 void            init_sctpLookupRemIPAddrTable(void);
 void            shutdown_sctpLookupRemIPAddrTable(void);
 void            initialize_table_sctpLookupRemIPAddrTable(void);
+void            shutdown_table_sctpLookupRemIPAddrTable(void);
 Netsnmp_Node_Handler sctpLookupRemIPAddrTable_handler;
 
 /*
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c b/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c
index b06205c..c8a8874 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.c
@@ -10,6 +10,7 @@
 #include "sctpLookupRemPortTable.h"
 
 static netsnmp_container *sctpLookupRemPortTable_container;
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the sctpLookupRemPortTable module */
 void
@@ -24,8 +25,7 @@
 void
 shutdown_sctpLookupRemPortTable(void)
 {
-    sctpLookupRemPortTable_container_clear
-        (sctpLookupRemPortTable_container);
+    shutdown_table_sctpLookupRemPortTable();
 }
 
 /** Initialize the sctpLookupRemPortTable table by defining its contents and how it's structured */
@@ -39,7 +39,6 @@
     netsnmp_handler_registration *reg = NULL;
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
 
     reg =
         netsnmp_create_handler_registration("sctpLookupRemPortTable",
@@ -98,6 +97,7 @@
     if (SNMPERR_SUCCESS != netsnmp_register_table(reg, table_info)) {
         snmp_log(LOG_ERR,
                  "error registering table handler for sctpLookupRemPortTable\n");
+        reg = NULL; /* it was freed inside netsnmp_register_table */
         goto bail;
     }
 
@@ -111,6 +111,8 @@
     if (handler)
         netsnmp_handler_free(handler);
 
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
 
     if (container)
         CONTAINER_FREE(container);
@@ -119,6 +121,17 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_sctpLookupRemPortTable(void)
+{
+    if (table_info) {
+	netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+    sctpLookupRemPortTable_container_clear
+        (sctpLookupRemPortTable_container);
+}
+
 /** handles requests for the sctpLookupRemPortTable table */
 int
 sctpLookupRemPortTable_handler(netsnmp_mib_handler *handler,
@@ -240,8 +253,7 @@
 void
 sctpLookupRemPortTable_entry_free(sctpLookupRemPortTable_entry * entry)
 {
-    if (entry != NULL)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 netsnmp_container *
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.h b/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.h
index 96d49ce..b2ac811 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.h
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemPortTable.h
@@ -13,6 +13,7 @@
 void            init_sctpLookupRemPortTable(void);
 void            shutdown_sctpLookupRemPortTable(void);
 void            initialize_table_sctpLookupRemPortTable(void);
+void            shutdown_table_sctpLookupRemPortTable(void);
 Netsnmp_Node_Handler sctpLookupRemPortTable_handler;
 
 /*
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c b/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c
index 442e207..d9966fc 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.c
@@ -10,6 +10,7 @@
 #include "sctpLookupRemPrimIPAddrTable.h"
 
 static netsnmp_container *sctpLookupRemPrimIPAddrTable_container;
+static netsnmp_table_registration_info *table_info;
 
 /** Initializes the sctpLookupRemPrimIPAddrTable module */
 void
@@ -24,8 +25,7 @@
 void
 shutdown_sctpLookupRemPrimIPAddrTable(void)
 {
-    sctpLookupRemPrimIPAddrTable_container_clear
-        (sctpLookupRemPrimIPAddrTable_container);
+    shutdown_table_sctpLookupRemPrimIPAddrTable();
 }
 
 /** Initialize the sctpLookupRemPrimIPAddrTable table by defining its contents and how it's structured */
@@ -39,7 +39,6 @@
     netsnmp_handler_registration *reg = NULL;
     netsnmp_mib_handler *handler = NULL;
     netsnmp_container *container = NULL;
-    netsnmp_table_registration_info *table_info = NULL;
 
     reg =
         netsnmp_create_handler_registration("sctpLookupRemPrimIPAddrTable",
@@ -100,6 +99,7 @@
     if (SNMPERR_SUCCESS != netsnmp_register_table(reg, table_info)) {
         snmp_log(LOG_ERR,
                  "error registering table handler for sctpLookupRemPrimIPAddrTable\n");
+        reg = NULL; /* it was freed inside netsnmp_register_table */
         goto bail;
     }
 
@@ -113,6 +113,8 @@
     if (handler)
         netsnmp_handler_free(handler);
 
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
 
     if (container)
         CONTAINER_FREE(container);
@@ -121,6 +123,17 @@
         netsnmp_handler_registration_free(reg);
 }
 
+void
+shutdown_table_sctpLookupRemPrimIPAddrTable(void)
+{
+    if (table_info) {
+        netsnmp_table_registration_info_free(table_info);
+	table_info = NULL;
+    }
+    sctpLookupRemPrimIPAddrTable_container_clear
+        (sctpLookupRemPrimIPAddrTable_container);
+}
+
 /** handles requests for the sctpLookupRemPrimIPAddrTable table */
 int
 sctpLookupRemPrimIPAddrTable_handler(netsnmp_mib_handler *handler,
@@ -255,8 +268,7 @@
 sctpLookupRemPrimIPAddrTable_entry_free(sctpLookupRemPrimIPAddrTable_entry
                                         * entry)
 {
-    if (entry != NULL)
-        SNMP_FREE(entry);
+    SNMP_FREE(entry);
 }
 
 netsnmp_container *
diff --git a/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.h b/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.h
index aaa5a0b..f3becdc 100644
--- a/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.h
+++ b/agent/mibgroup/sctp-mib/sctpLookupRemPrimIPAddrTable.h
@@ -13,6 +13,7 @@
 void            init_sctpLookupRemPrimIPAddrTable(void);
 void            shutdown_sctpLookupRemPrimIPAddrTable(void);
 void            initialize_table_sctpLookupRemPrimIPAddrTable(void);
+void            shutdown_table_sctpLookupRemPrimIPAddrTable(void);
 Netsnmp_Node_Handler sctpLookupRemPrimIPAddrTable_handler;
 
 /*
diff --git a/agent/mibgroup/sctp-mib/sctpScalars.c b/agent/mibgroup/sctp-mib/sctpScalars.c
index 036f40c..821079a 100644
--- a/agent/mibgroup/sctp-mib/sctpScalars.c
+++ b/agent/mibgroup/sctp-mib/sctpScalars.c
@@ -18,6 +18,7 @@
 {
     netsnmp_handler_registration *reginfo_stats;
     netsnmp_handler_registration *reginfo_params;
+    int rc;
 
     DEBUGMSGTL(("sctp:scalars:init", "Initializing\n"));
 
@@ -27,8 +28,14 @@
                                             sctp_stats_oid,
                                             OID_LENGTH(sctp_stats_oid),
                                             HANDLER_CAN_RONLY);
-    netsnmp_register_scalar_group(reginfo_stats, SCTP_CURRESTAB,
+    if (!reginfo_stats)
+        return;
+
+    rc = netsnmp_register_scalar_group(reginfo_stats, SCTP_CURRESTAB,
                                   SCTP_DISCONTINUITYTIME);
+    if (rc != SNMPERR_SUCCESS)
+        return;
+
     netsnmp_inject_handler(reginfo_stats,
                            netsnmp_get_cache_handler
                            (SCTP_STATS_CACHE_TIMEOUT,
@@ -43,8 +50,13 @@
                                             sctp_params_oid,
                                             OID_LENGTH(sctp_params_oid),
                                             HANDLER_CAN_RONLY);
-    netsnmp_register_scalar_group(reginfo_params, SCTP_RTOALGORITHM,
+    if (!reginfo_params)
+        return;
+
+    rc = netsnmp_register_scalar_group(reginfo_params, SCTP_RTOALGORITHM,
                                   SCTP_MAXINITRETR);
+    if (!rc)
+        return;
     netsnmp_inject_handler(reginfo_params,
                            netsnmp_get_cache_handler
                            (SCTP_PARAMS_CACHE_TIMEOUT,
@@ -65,7 +77,6 @@
 {
     netsnmp_variable_list *requestvb;
     int             subid;
-    int             ret;
 
     DEBUGMSGTL(("sctp:scalars:stats", "Handler - mode %s\n",
                 se_find_label_in_slist("agent_mode", reqinfo->mode)));
@@ -215,7 +226,6 @@
 {
     netsnmp_variable_list *requestvb;
     int             subid;
-    int             ret;
 
     DEBUGMSGTL(("sctp:scalars:params", "Handler - mode %s\n",
                 se_find_label_in_slist("agent_mode", reqinfo->mode)));
diff --git a/agent/mibgroup/sctp-mib/sctpScalars.h b/agent/mibgroup/sctp-mib/sctpScalars.h
index 25b187a..8dbb8b5 100644
--- a/agent/mibgroup/sctp-mib/sctpScalars.h
+++ b/agent/mibgroup/sctp-mib/sctpScalars.h
@@ -7,6 +7,10 @@
 config_require(sctp-mib/sctpScalars_common)
 #if defined( linux )
 config_require(sctp-mib/sctpScalars_linux)
+#elif defined( freebsd8 ) || defined ( freebsd7 )
+config_require(sctp-mib/sctpScalars_freebsd)	 
+#elif defined( solaris2 )
+config_require(sctp-mib/sctpScalars_solaris2)	 
 #else
 /*
  * couldn't determine the correct file!
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/sctp-mib/sctpScalars_freebsd.c b/agent/mibgroup/sctp-mib/sctpScalars_freebsd.c
new file mode 100644
index 0000000..b8c723f
--- /dev/null
+++ b/agent/mibgroup/sctp-mib/sctpScalars_freebsd.c
@@ -0,0 +1,93 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include "sctpScalars_common.h"
+
+#include <stdio.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/sysctl.h>
+#include <stdint.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netinet/sctp.h>
+#include <netinet/sctp_constants.h>
+
+void
+netsnmp_access_sctp_stats_arch_init()
+{
+}
+
+int
+netsnmp_access_sctp_stats_arch_load(netsnmp_sctp_stats * sctp_stats)
+{
+  struct sctpstat stat;
+  size_t len = sizeof(struct sctpstat);
+
+  if (sysctlbyname("net.inet.sctp.stats", &stat, &len, NULL, 0) < 0) {
+	return(-1);
+  }
+  memset(sctp_stats, 0, sizeof(netsnmp_sctp_stats));
+  sctp_stats->curr_estab = stat.sctps_currestab;
+  sctp_stats->active_estabs = stat.sctps_activeestab;
+  sctp_stats->passive_estabs = stat.sctps_passiveestab;
+  sctp_stats->aborteds = stat.sctps_aborted;
+  sctp_stats->shutdowns = stat.sctps_shutdown;
+  sctp_stats->out_of_blues = stat.sctps_outoftheblue;
+  sctp_stats->checksum_errors = stat.sctps_checksumerrors;
+  sctp_stats->out_ctrl_chunks.low = stat.sctps_outcontrolchunks;
+  sctp_stats->out_order_chunks.low = stat.sctps_outorderchunks;
+  sctp_stats->out_unorder_chunks.low = stat.sctps_outunorderchunks;
+  sctp_stats->in_ctrl_chunks.low = stat.sctps_incontrolchunks;
+  sctp_stats->in_order_chunks.low = stat.sctps_inorderchunks;
+  sctp_stats->in_unorder_chunks.low = stat.sctps_inunorderchunks;
+  sctp_stats->frag_usr_msgs.low = stat.sctps_fragusrmsgs;
+  sctp_stats->reasm_usr_msgs.low = stat.sctps_reasmusrmsgs;
+  sctp_stats->out_sctp_packs.low = stat.sctps_outpackets;
+  sctp_stats->in_sctp_packs.low = stat.sctps_inpackets;
+  sctp_stats->discontinuity_time = 0;
+  return 0;
+}
+
+void
+netsnmp_access_sctp_params_arch_init()
+{
+}
+
+int
+netsnmp_access_sctp_params_arch_load(netsnmp_sctp_params * sctp_params)
+{
+	size_t len = sizeof(uint32_t);
+
+    sctp_params->rto_algorithm = NETSNMP_SCTP_ALGORITHM_VANJ;
+    sctp_params->max_assocs =  SCTP_MAX_NUM_OF_ASOC; 
+	if (sysctlbyname("net.inet.sctp.rto_max",
+					 &sctp_params->rto_max,
+					 &len, NULL, 0) < 0) {
+	  return(-1);
+	}
+	if (sysctlbyname("net.inet.sctp.rto_min",
+					 &sctp_params->rto_min,
+					 &len, NULL, 0) < 0) {
+	  return(-1);
+	}
+	if (sysctlbyname("net.inet.sctp.rto_initial",
+					 &sctp_params->rto_initial,
+					 &len, NULL, 0) < 0) {
+	  return(-1);
+	}
+	if (sysctlbyname("net.inet.sctp.valid_cookie_life",
+					 &sctp_params->val_cookie_life,
+					 &len, NULL, 0) < 0) {
+	  return(-1);
+	}
+	if (sysctlbyname("net.inet.sctp.init_rtx_max",
+					 &sctp_params->max_init_retr,
+					 &len, NULL, 0) < 0) {
+	  return(-1);
+	}
+    return 0;
+}
diff --git a/agent/mibgroup/sctp-mib/sctpScalars_linux.c b/agent/mibgroup/sctp-mib/sctpScalars_linux.c
index 11573c3..6da5a6b 100644
--- a/agent/mibgroup/sctp-mib/sctpScalars_linux.c
+++ b/agent/mibgroup/sctp-mib/sctpScalars_linux.c
@@ -143,8 +143,8 @@
         if (ret < 0) {
             DEBUGMSGTL(("sctp:scalars:stats:arch_load",
                         "Unknown entry: %s\n", line));
-            // fclose(f);
-            // return ret;
+            /* fclose(f); */
+            /* return ret; */
 	    ret = 0;
         }
     }
diff --git a/agent/mibgroup/sctp-mib/sctpScalars_solaris2.c b/agent/mibgroup/sctp-mib/sctpScalars_solaris2.c
new file mode 100644
index 0000000..c7ab546
--- /dev/null
+++ b/agent/mibgroup/sctp-mib/sctpScalars_solaris2.c
@@ -0,0 +1,95 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include "sctpScalars_common.h"
+
+#include <stdio.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <stdint.h>
+#include <sys/socket.h>
+#include <inet/mib2.h>
+
+#include "kernel_sunos5.h"
+
+void
+netsnmp_access_sctp_stats_arch_init()
+{
+}
+
+int
+netsnmp_access_sctp_stats_arch_load(netsnmp_sctp_stats * sctp_stats)
+{
+    mib2_sctp_t sctpstat;
+    size_t len = sizeof(sctpstat);
+    int ret;
+
+    ret = getMibstat(MIB_SCTP, &sctpstat, len, GET_FIRST, &Get_everything, NULL);
+    if (ret) {
+        snmp_log_perror("getMibstat MIB_SCTP");
+	return -1;
+    }
+    memset(sctp_stats, 0, sizeof(netsnmp_sctp_stats));
+    sctp_stats->curr_estab = sctpstat.sctpCurrEstab;
+    sctp_stats->active_estabs = sctpstat.sctpActiveEstab;
+    sctp_stats->passive_estabs = sctpstat.sctpPassiveEstab;
+    sctp_stats->aborteds = sctpstat.sctpAborted;
+    sctp_stats->shutdowns = sctpstat.sctpShutdowns;
+    sctp_stats->out_of_blues = sctpstat.sctpOutOfBlue;
+    sctp_stats->checksum_errors = sctpstat.sctpChecksumError;
+    sctp_stats->out_ctrl_chunks.low = sctpstat.sctpOutCtrlChunks & 0xFFFFFFFF;
+    sctp_stats->out_ctrl_chunks.high = sctpstat.sctpOutCtrlChunks >> 32;
+    sctp_stats->out_order_chunks.low = sctpstat.sctpOutOrderChunks & 0xFFFFFFFF;
+    sctp_stats->out_order_chunks.high = sctpstat.sctpOutOrderChunks >> 32;
+    sctp_stats->out_unorder_chunks.low = sctpstat.sctpOutUnorderChunks & 0xFFFFFFFF;
+    sctp_stats->out_unorder_chunks.high = sctpstat.sctpOutUnorderChunks >> 32;
+    sctp_stats->in_ctrl_chunks.low = sctpstat.sctpInCtrlChunks & 0xFFFFFFFF;
+    sctp_stats->in_ctrl_chunks.high = sctpstat.sctpInCtrlChunks >> 32;
+    sctp_stats->in_order_chunks.low = sctpstat.sctpInOrderChunks & 0xFFFFFFFF;
+    sctp_stats->in_order_chunks.high = sctpstat.sctpInOrderChunks >> 32;
+    sctp_stats->in_unorder_chunks.low = sctpstat.sctpInUnorderChunks & 0xFFFFFFFF;
+    sctp_stats->in_unorder_chunks.high = sctpstat.sctpInUnorderChunks >> 32;
+    sctp_stats->in_order_chunks.low = sctpstat.sctpInOrderChunks & 0xFFFFFFFF;
+    sctp_stats->in_order_chunks.high = sctpstat.sctpInOrderChunks >> 32;
+    sctp_stats->frag_usr_msgs.low = sctpstat.sctpFragUsrMsgs & 0xFFFFFFFF;
+    sctp_stats->frag_usr_msgs.high = sctpstat.sctpFragUsrMsgs >> 32;
+    sctp_stats->reasm_usr_msgs.low = sctpstat.sctpReasmUsrMsgs & 0xFFFFFFFF;
+    sctp_stats->reasm_usr_msgs.high = sctpstat.sctpReasmUsrMsgs >> 32;
+    sctp_stats->out_sctp_packs.low = sctpstat.sctpOutSCTPPkts & 0xFFFFFFFF;
+    sctp_stats->out_sctp_packs.high = sctpstat.sctpOutSCTPPkts >> 32;
+    sctp_stats->in_sctp_packs.low = sctpstat.sctpInSCTPPkts & 0xFFFFFFFF;
+    sctp_stats->in_sctp_packs.high = sctpstat.sctpInSCTPPkts >> 32;
+    sctp_stats->discontinuity_time = 0;
+    return 0;
+}
+
+void
+netsnmp_access_sctp_params_arch_init()
+{
+}
+
+int
+netsnmp_access_sctp_params_arch_load(netsnmp_sctp_params * sctp_params)
+{
+    mib2_sctp_t sctpstat;
+    size_t len = sizeof(sctpstat);
+    int ret;
+
+    ret = getMibstat(MIB_SCTP, &sctpstat, len, GET_FIRST, &Get_everything, NULL);
+    if (ret) {
+        snmp_log_perror("getMibstat MIB_SCTP");
+	return -1;
+    }
+
+    sctp_params->rto_algorithm = sctpstat.sctpRtoAlgorithm;
+    sctp_params->max_assocs =  sctpstat.sctpMaxAssocs; 
+    sctp_params->rto_max = sctpstat.sctpRtoMax;
+    sctp_params->rto_min = sctpstat.sctpRtoMin;
+    sctp_params->rto_initial = sctpstat.sctpRtoInitial;
+    sctp_params->val_cookie_life = sctpstat.sctpValCookieLife;
+    sctp_params->max_init_retr = sctpstat.sctpMaxInitRetr;
+    return 0;
+}
diff --git a/agent/mibgroup/sctp-mib/sctpTables.h b/agent/mibgroup/sctp-mib/sctpTables.h
index 544144a..d22aea0 100644
--- a/agent/mibgroup/sctp-mib/sctpTables.h
+++ b/agent/mibgroup/sctp-mib/sctpTables.h
@@ -14,11 +14,12 @@
 config_require(sctp-mib/sctpAssocTable)
 #if defined( linux )
 config_require(sctp-mib/sctpTables_linux)
+config_require(util_funcs/get_pid_from_inode)
+#elif defined( freebsd7 ) || defined( freebsd8 )
+config_require(sctp-mib/sctpTables_freebsd)
+#elif defined( solaris2 )
+config_require(sctp-mib/sctpTables_solaris2)
 #else
-/*
-* couldn't determine the correct file!
-* require a bogus file to generate an error.
-*/
-config_require(sctp-mib/tables-unknown-arch)
+config_error(SCTP-MIB is not available in tihs environment)
 #endif
 #endif                          /* SCTP_TABLES_H */
diff --git a/agent/mibgroup/sctp-mib/sctpTables_common.c b/agent/mibgroup/sctp-mib/sctpTables_common.c
index 2376795..b28ea03 100644
--- a/agent/mibgroup/sctp-mib/sctpTables_common.c
+++ b/agent/mibgroup/sctp-mib/sctpTables_common.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -12,6 +13,8 @@
 #include "sctpLookupRemPrimIPAddrTable.h"
 #include "sctpLookupRemIPAddrTable.h"
 
+netsnmp_feature_require(container_lifo)
+
 static void
 sctpAssocTable_collect_invalid(void *what, void *magic)
 {
diff --git a/agent/mibgroup/sctp-mib/sctpTables_common.h b/agent/mibgroup/sctp-mib/sctpTables_common.h
index eb7f990..f457605 100644
--- a/agent/mibgroup/sctp-mib/sctpTables_common.h
+++ b/agent/mibgroup/sctp-mib/sctpTables_common.h
@@ -1,6 +1,10 @@
 #ifndef SCTP_TABLES_COMMON_H
 #define SCTP_TABLES_COMMON_H
 
+#if defined(freebsd8) || defined(freebsd7)
+#define netsnmp_table_registration_info_free SNMP_FREE
+#endif
+
 #define SCTP_IPADDRESS_SIZE 16
 #define SCTP_HOSTNAME_SIZE 255
 
diff --git a/agent/mibgroup/sctp-mib/sctpTables_freebsd.c b/agent/mibgroup/sctp-mib/sctpTables_freebsd.c
new file mode 100644
index 0000000..516e9f5
--- /dev/null
+++ b/agent/mibgroup/sctp-mib/sctpTables_freebsd.c
@@ -0,0 +1,244 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include "sctpAssocTable.h"
+#include "sctpAssocLocalAddrTable.h"
+#include "sctpAssocRemAddrTable.h"
+#include "sctpTables_common.h"
+
+#include <util_funcs.h>
+
+#include <stdio.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/sysctl.h>
+#include <stdint.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netinet/sctp.h>
+#include <netinet/sctp_constants.h>
+
+
+static int
+parse_assoc_local_addresses(sctpTables_containers * containers,
+							struct xsctp_laddr *xladdr)
+{
+  int ret;
+  sctpAssocLocalAddrTable_entry *entry;
+  entry = sctpAssocLocalAddrTable_entry_create();
+  if (entry == NULL)
+	return SNMP_ERR_GENERR;
+
+  entry->sctpAssocId = 0;
+  if (xladdr->address.sa.sa_family == AF_INET) {
+	entry->sctpAssocLocalAddrType = INETADDRESSTYPE_IPV4;
+	entry->sctpAssocLocalAddr_len = 4;
+	memcpy(entry->sctpAssocLocalAddr,
+		   &xladdr->address.sin.sin_addr,
+		   entry->sctpAssocLocalAddr_len);
+  } else if (xladdr->address.sa.sa_family == AF_INET6) {
+	entry->sctpAssocLocalAddrType = INETADDRESSTYPE_IPV6;
+	entry->sctpAssocLocalAddr_len = 16;
+	memcpy(entry->sctpAssocLocalAddr,
+		   &xladdr->address.sin6.sin6_addr,
+		   entry->sctpAssocLocalAddr_len);
+  }
+  entry->sctpAssocLocalAddrStartTime = xladdr->start_time.tv_sec;
+  ret = sctpAssocLocalAddrTable_add_or_update(containers->sctpAssocLocalAddrTable,
+											  entry);
+  if (ret != SNMP_ERR_NOERROR)
+	return SNMP_ERR_GENERR;
+
+  return SNMP_ERR_NOERROR;
+}
+
+static int
+parse_assoc_xstcb(sctpTables_containers * containers, struct xsctp_tcb *xstcb)
+{
+  int             ret;
+  sctpAssocTable_entry *entry;
+
+  entry = sctpAssocTable_entry_create();
+  if (entry == NULL)
+	return SNMP_ERR_GENERR;
+
+  switch (xstcb->state) {
+  case SCTP_STATE_INUSE:
+	entry->sctpAssocState = SCTPASSOCSTATE_DELETETCB;
+	break;
+  case SCTP_STATE_COOKIE_WAIT:
+	entry->sctpAssocState = SCTPASSOCSTATE_COOKIEWAIT;
+	break;
+  case SCTP_STATE_COOKIE_ECHOED:
+	entry->sctpAssocState = SCTPASSOCSTATE_COOKIEECHOED;
+	break;
+  case SCTP_STATE_OPEN:
+	entry->sctpAssocState = SCTPASSOCSTATE_ESTABLISHED;
+	break;
+  case SCTP_STATE_SHUTDOWN_SENT:
+	entry->sctpAssocState = SCTPASSOCSTATE_SHUTDOWNSENT;
+	break;
+  case SCTP_STATE_SHUTDOWN_RECEIVED:
+	entry->sctpAssocState = SCTPASSOCSTATE_SHUTDOWNRECEIVED;
+	break;
+  case SCTP_STATE_SHUTDOWN_ACK_SENT:
+	entry->sctpAssocState = SCTPASSOCSTATE_SHUTDOWNACKSENT;
+	break;
+  default:
+  case SCTP_STATE_EMPTY:
+	entry->sctpAssocState = SCTPASSOCSTATE_CLOSED;
+	break;
+  };
+  entry->sctpAssocHeartBeatInterval = xstcb->heartbeat_interval;
+  entry->sctpAssocId = 0;
+  entry->sctpAssocPrimProcess = xstcb->primary_process;
+  entry->sctpAssocLocalPort = xstcb->local_port;
+  entry->sctpAssocRemPort = xstcb->remote_port;
+  entry->sctpAssocHeartBeatInterval = xstcb->heartbeat_interval;
+  entry->sctpAssocInStreams = xstcb->in_streams;
+  entry->sctpAssocOutStreams = xstcb->out_streams;
+  entry->sctpAssocMaxRetr = xstcb->max_nr_retrans;
+  entry->sctpAssocT1expireds = xstcb->T1_expireries;
+  entry->sctpAssocRtxChunks = xstcb->retransmitted_tsns;
+  entry->sctpAssocT2expireds = xstcb->T2_expireries; 
+  entry->sctpAssocRemHostName[0] = 0;
+  entry->sctpAssocRemHostName_len = 0;
+  entry->sctpAssocDiscontinuityTime = xstcb->discontinuity_time.tv_sec;
+  entry->sctpAssocStartTime = xstcb->start_time.tv_sec;	
+
+  ret = sctpAssocTable_add_or_update(containers->sctpAssocTable, entry);
+  if (ret != SNMP_ERR_NOERROR) {
+	return ret;
+  }
+
+  return SNMP_ERR_NOERROR;
+}
+
+
+static int
+parse_remaddr_xraddr(sctpTables_containers * containers,
+					 struct xsctp_raddr *xraddr)
+{
+  int             ret;
+  sctpAssocRemAddrTable_entry *entry;
+
+  entry = sctpAssocRemAddrTable_entry_create();
+  if (entry == NULL)
+	return SNMP_ERR_GENERR;
+
+	
+  entry->sctpAssocId = 0;
+
+  if(xraddr->active) 
+    entry->sctpAssocRemAddrActive = TRUTHVALUE_TRUE;
+  else
+	entry->sctpAssocRemAddrActive = TRUTHVALUE_FALSE;
+  
+  if (xraddr->heartbeat_enabled) 
+	entry->sctpAssocRemAddrHBActive = TRUTHVALUE_TRUE;
+  else
+	entry->sctpAssocRemAddrHBActive = TRUTHVALUE_FALSE;
+
+  entry->sctpAssocRemAddrRTO = xraddr->rto;
+  entry->sctpAssocRemAddrMaxPathRtx = xraddr->max_path_rtx;
+  entry->sctpAssocRemAddrRtx = xraddr->rtx;
+  entry->sctpAssocRemAddrStartTime = xraddr->start_time.tv_sec;
+
+  if (xraddr->address.sa.sa_family == AF_INET) {
+	entry->sctpAssocRemAddrType = INETADDRESSTYPE_IPV4;
+	entry->sctpAssocRemAddr_len = 4;
+	memcpy(entry->sctpAssocRemAddr,
+		   &xraddr->address.sin.sin_addr,
+		   entry->sctpAssocRemAddr_len);
+  } else if (xraddr->address.sa.sa_family == AF_INET6) {
+	entry->sctpAssocRemAddrType = INETADDRESSTYPE_IPV6;
+	entry->sctpAssocRemAddr_len = 16;
+	memcpy(entry->sctpAssocRemAddr,
+		   &xraddr->address.sin6.sin6_addr,
+		   entry->sctpAssocRemAddr_len);
+  }
+  ret =
+	sctpAssocRemAddrTable_add_or_update(containers->
+										sctpAssocRemAddrTable, entry);
+  if (ret != SNMP_ERR_NOERROR) {
+	return ret;
+  }
+  return SNMP_ERR_NOERROR;
+}
+
+
+int
+sctpTables_arch_load(sctpTables_containers * containers, u_long * flags)
+{
+  int             ret = SNMP_ERR_NOERROR;
+  size_t len;
+  caddr_t buf;
+  unsigned int offset;
+  struct xsctp_inpcb *xinp;
+  struct xsctp_tcb *xstcb;
+  struct xsctp_laddr *xladdr;
+  struct xsctp_raddr *xraddr;
+
+
+  *flags |= SCTP_TABLES_LOAD_FLAG_DELETE_INVALID;
+  *flags |= SCTP_TABLES_LOAD_FLAG_AUTO_LOOKUP;
+  len = 0;
+  if (sysctlbyname("net.inet.sctp.assoclist", 0, &len, 0, 0) < 0) {
+	printf("Error %d (%s) could not get the assoclist\n", errno, strerror(errno));
+	return(-1);
+  }
+  if ((buf = (caddr_t)malloc(len)) == 0) {
+	printf("malloc %lu bytes failed.\n", (long unsigned)len);
+	return(-1);
+  }
+  if (sysctlbyname("net.inet.sctp.assoclist", buf, &len, 0, 0) < 0) {
+	printf("Error %d (%s) could not get the assoclist\n", errno, strerror(errno));
+	free(buf);
+	return(-1);
+  }
+  offset = 0;
+  xinp = (struct xsctp_inpcb *)(buf + offset);
+  while (xinp->last == 0) {
+	/* for each INP */
+	offset += sizeof(struct xsctp_inpcb);
+	/* Local addresses */
+	xladdr = (struct xsctp_laddr *)(buf + offset);
+	while (xladdr->last == 0) {
+	  offset += sizeof(struct xsctp_laddr);
+	  xladdr = (struct xsctp_laddr *)(buf + offset);
+	}
+	offset += sizeof(struct xsctp_laddr);
+	/* Associations */
+	xstcb = (struct xsctp_tcb *)(buf + offset);
+	while (xstcb->last == 0) {
+	  xstcb = (struct xsctp_tcb *)(buf + offset);
+	  offset += sizeof(struct xsctp_tcb);
+	  parse_assoc_xstcb(containers, xstcb);
+	  /* Local addresses */
+	  xladdr = (struct xsctp_laddr *)(buf + offset);
+	  while (xladdr->last == 0) {
+		parse_assoc_local_addresses(containers, xladdr);
+		offset += sizeof(struct xsctp_laddr);
+		xladdr = (struct xsctp_laddr *)(buf + offset);
+	  }
+	  offset += sizeof(struct xsctp_laddr);
+
+	  /* Remote addresses */
+	  xraddr = (struct xsctp_raddr *)(buf + offset);
+	  while (xraddr->last == 0) {
+		parse_remaddr_xraddr(containers, xraddr);
+		offset += sizeof(struct xsctp_raddr);
+		xraddr = (struct xsctp_raddr *)(buf + offset);
+	  }
+	  offset += sizeof(struct xsctp_raddr);
+	  xstcb = (struct xsctp_tcb *)(buf + offset);
+	}
+	offset += sizeof(struct xsctp_tcb);
+	xinp = (struct xsctp_inpcb *)(buf + offset);
+  }
+  free((void *)buf);
+  return ret;
+}
diff --git a/agent/mibgroup/sctp-mib/sctpTables_linux.c b/agent/mibgroup/sctp-mib/sctpTables_linux.c
index d6fd810..8e62860 100644
--- a/agent/mibgroup/sctp-mib/sctpTables_linux.c
+++ b/agent/mibgroup/sctp-mib/sctpTables_linux.c
@@ -7,7 +7,7 @@
 #include "sctpAssocRemAddrTable.h"
 #include "sctpTables_common.h"
 
-#include <util_funcs.h>
+#include "mibgroup/util_funcs/get_pid_from_inode.h"
 
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -150,13 +150,7 @@
     }
     entry->sctpAssocState = strtol(token, NULL, 10);
 
-    token = strtok(NULL, " ");  /* HBKT */
-    if (token == NULL) {
-        ret = SNMP_ERR_GENERR;
-        goto error;
-    }
-    entry->sctpAssocHeartBeatInterval = strtol(token, NULL, 10);
-
+    token = strtok(NULL, " ");  /* HBKT, ignore */
     token = strtok(NULL, " ");  /* ASSOC-ID, store */
     if (token == NULL) {
         ret = SNMP_ERR_GENERR;
@@ -174,7 +168,7 @@
         goto error;
     }
     inode = strtoull(token, NULL, 10);
-    entry->sctpAssocPrimProcess = get_pid_from_inode(inode);
+    entry->sctpAssocPrimProcess = netsnmp_get_pid_from_inode(inode);
 
     token = strtok(NULL, " ");  /* LPORT */
     if (token == NULL) {
@@ -287,6 +281,8 @@
         return SNMP_ERR_GENERR;
     }
 
+    netsnmp_get_pid_from_inode_init();
+
     /*
      * ignore the header. 
      */
diff --git a/agent/mibgroup/sctp-mib/sctpTables_solaris2.c b/agent/mibgroup/sctp-mib/sctpTables_solaris2.c
new file mode 100644
index 0000000..0993ab3
--- /dev/null
+++ b/agent/mibgroup/sctp-mib/sctpTables_solaris2.c
@@ -0,0 +1,182 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include "sctpAssocTable.h"
+#include "sctpAssocLocalAddrTable.h"
+#include "sctpAssocRemAddrTable.h"
+#include "sctpTables_common.h"
+
+#include <util_funcs.h>
+
+#include <stdio.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <stdint.h>
+#include <sys/socket.h>
+#include <inet/mib2.h>
+
+#include "kernel_sunos5.h"
+
+static int
+parse_assoc_local_address(sctpTables_containers * containers,
+			    mib2_sctpConnLocalEntry_t *lce)
+{
+    int ret;
+    sctpAssocLocalAddrTable_entry *entry;
+    entry = sctpAssocLocalAddrTable_entry_create();
+    if (entry == NULL)
+	return SNMP_ERR_GENERR;
+
+    entry->sctpAssocId = 0;
+    entry->sctpAssocLocalAddrType = lce->sctpAssocLocalAddrType;
+    if (lce->sctpAssocLocalAddrType == INETADDRESSTYPE_IPV4) {
+	entry->sctpAssocLocalAddr_len = 4;
+	memcpy(entry->sctpAssocLocalAddr,
+		   lce->sctpAssocLocalAddr.s6_addr+12,
+		   entry->sctpAssocLocalAddr_len);
+    } else if (lce->sctpAssocLocalAddrType == INETADDRESSTYPE_IPV6) {
+	entry->sctpAssocLocalAddr_len = 16;
+	memcpy(entry->sctpAssocLocalAddr,
+		   &lce->sctpAssocLocalAddr,
+		   entry->sctpAssocLocalAddr_len);
+    }
+    entry->sctpAssocLocalAddrStartTime = 0;
+    ret = sctpAssocLocalAddrTable_add_or_update(containers->sctpAssocLocalAddrTable,
+					      entry);
+    return ret;
+}
+
+static int
+parse_assoc(sctpTables_containers * containers, mib2_sctpConnEntry_t *sce)
+{
+    int             ret;
+    sctpAssocTable_entry *entry;
+
+    entry = sctpAssocTable_entry_create();
+    if (entry == NULL)
+	return SNMP_ERR_GENERR;
+
+    switch (sce->sctpAssocState) {
+    case MIB2_SCTP_closed:
+	entry->sctpAssocState = SCTPASSOCSTATE_CLOSED;
+	break;
+    case MIB2_SCTP_cookieWait:
+	entry->sctpAssocState = SCTPASSOCSTATE_COOKIEWAIT;
+	break;
+    case MIB2_SCTP_cookieEchoed:
+	entry->sctpAssocState = SCTPASSOCSTATE_COOKIEECHOED;
+	break;
+    case MIB2_SCTP_established:
+	entry->sctpAssocState = SCTPASSOCSTATE_ESTABLISHED;
+	break;
+    case MIB2_SCTP_shutdownPending:
+	entry->sctpAssocState = SCTPASSOCSTATE_SHUTDOWNPENDING;
+	break;
+    case MIB2_SCTP_shutdownSent:
+	entry->sctpAssocState = SCTPASSOCSTATE_SHUTDOWNSENT;
+	break;
+    case MIB2_SCTP_shutdownReceived:
+	entry->sctpAssocState = SCTPASSOCSTATE_SHUTDOWNRECEIVED;
+	break;
+    case MIB2_SCTP_shutdownAckSent:
+	entry->sctpAssocState = SCTPASSOCSTATE_SHUTDOWNACKSENT;
+	break;
+    }
+    entry->sctpAssocHeartBeatInterval = sce->sctpAssocHeartBeatInterval;
+    entry->sctpAssocId = sce->sctpAssocId;
+    entry->sctpAssocPrimProcess = sce->sctpAssocPrimProcess;
+    entry->sctpAssocLocalPort = sce->sctpAssocLocalPort;
+    entry->sctpAssocRemPrimAddrType = sce->sctpAssocRemPrimAddrType;
+    if (entry->sctpAssocRemPrimAddrType == INETADDRESSTYPE_IPV4) {
+	entry->sctpAssocRemPrimAddr_len = 4;
+	memcpy(entry->sctpAssocRemPrimAddr, sce->sctpAssocRemPrimAddr.s6_addr+12,
+	    entry->sctpAssocRemPrimAddr_len);
+    }
+    else {
+	entry->sctpAssocRemPrimAddr_len = 16;
+	memcpy(entry->sctpAssocRemPrimAddr, sce->sctpAssocRemPrimAddr.s6_addr,
+	    entry->sctpAssocRemPrimAddr_len);
+    }
+    entry->sctpAssocRemPort = sce->sctpAssocRemPort;
+    entry->sctpAssocInStreams = sce->sctpAssocInStreams;
+    entry->sctpAssocOutStreams = sce->sctpAssocOutStreams;
+    entry->sctpAssocMaxRetr = sce->sctpAssocMaxRetr;
+    entry->sctpAssocT1expireds = sce->sctpAssocT1expired;
+    entry->sctpAssocRtxChunks = sce->sctpAssocRtxChunks;
+    entry->sctpAssocT2expireds = sce->sctpAssocT2expired; 
+    entry->sctpAssocRemHostName[0] = 0;
+    entry->sctpAssocRemHostName_len = 0;
+    entry->sctpAssocDiscontinuityTime = 0;
+    entry->sctpAssocStartTime = sce->sctpAssocStartTime;	
+
+    ret = sctpAssocTable_add_or_update(containers->sctpAssocTable, entry);
+    return ret;
+}
+
+
+static int
+parse_assoc_remote_address(sctpTables_containers * containers,
+		    mib2_sctpConnRemoteEntry_t *rce)
+{
+    int             ret;
+    sctpAssocRemAddrTable_entry *entry;
+
+    entry = sctpAssocRemAddrTable_entry_create();
+    if (entry == NULL)
+	return SNMP_ERR_GENERR;
+
+    entry->sctpAssocId = rce->sctpAssocId;
+    entry->sctpAssocRemAddrActive = rce->sctpAssocRemAddrActive;
+    entry->sctpAssocRemAddrHBActive = rce->sctpAssocRemAddrHBActive;
+    entry->sctpAssocRemAddrRTO = rce->sctpAssocRemAddrRTO;
+    entry->sctpAssocRemAddrMaxPathRtx = rce->sctpAssocRemAddrMaxPathRtx;
+    entry->sctpAssocRemAddrRtx = rce->sctpAssocRemAddrRtx;
+    entry->sctpAssocRemAddrStartTime = 0;
+
+    entry->sctpAssocRemAddrType = rce->sctpAssocRemAddrType;
+    if (rce->sctpAssocRemAddrType == INETADDRESSTYPE_IPV4) {
+	entry->sctpAssocRemAddr_len = 4;
+	memcpy(entry->sctpAssocRemAddr,
+		   rce->sctpAssocRemAddr.s6_addr+12,
+		   entry->sctpAssocRemAddr_len);
+    } else if (rce->sctpAssocRemAddrType == INETADDRESSTYPE_IPV6) {
+	entry->sctpAssocRemAddr_len = 16;
+	memcpy(entry->sctpAssocRemAddr,
+		   &rce->sctpAssocRemAddr,
+		   entry->sctpAssocRemAddr_len);
+    }
+    ret =
+	sctpAssocRemAddrTable_add_or_update(containers->sctpAssocRemAddrTable,
+					    entry);
+    return ret;
+}
+
+
+int
+sctpTables_arch_load(sctpTables_containers * containers, u_long * flags)
+{
+    int                ret = SNMP_ERR_NOERROR;
+    mib2_sctpConnEntry_t sce;
+    mib2_sctpConnLocalEntry_t lce;
+    mib2_sctpConnRemoteEntry_t rce;
+    req_e              req = GET_FIRST;
+
+    while (getMibstat(MIB_SCTP_CONN, &sce, sizeof(sce), req, &Get_everything, 0) == 0) {
+	req = GET_NEXT;
+	parse_assoc(containers, &sce);
+    }
+    req = GET_FIRST;
+    while (getMibstat(MIB_SCTP_CONN_LOCAL, &lce, sizeof(lce), req, &Get_everything, 0) == 0) {
+	req = GET_NEXT;
+	parse_assoc_local_address(containers, &lce);
+    }
+    req = GET_FIRST;
+    while (getMibstat(MIB_SCTP_CONN_REMOTE, &rce, sizeof(rce), req, &Get_everything, 0) == 0) {
+	req = GET_NEXT;
+	parse_assoc_remote_address(containers, &rce);
+    }
+    return ret;
+}
diff --git a/agent/mibgroup/smux/smux.c b/agent/mibgroup/smux/smux.c
index 4006bf7..4598c2b 100644
--- a/agent/mibgroup/smux/smux.c
+++ b/agent/mibgroup/smux/smux.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <sys/types.h>
 #include <ctype.h>
 
@@ -26,11 +27,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 +44,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>
@@ -71,10 +66,11 @@
 #include <net-snmp/library/tools.h>
 
 #include "smux.h"
-#include "util_funcs.h"
 #include "mibdefs.h"
 #include "snmpd.h"
 
+netsnmp_feature_require(snprint_objid)
+
 long            smux_long;
 u_long          smux_ulong;
 struct sockaddr_in smux_sa;
@@ -122,7 +118,8 @@
     /*
      * bogus entry, as in pass.c 
      */
-    {MIBINDEX, ASN_INTEGER, RWRITE, var_smux, 0, {MIBINDEX}},
+    {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_smux, 0, {MIBINDEX}},
 };
 
 
@@ -350,7 +347,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;
 
@@ -419,7 +417,7 @@
             return SNMP_ERR_GENERR;
         }
 
-        if (sendto(rptr->sr_fd, buf, len, 0, NULL, 0) < 0) {
+        if (sendto(rptr->sr_fd, (void *) buf, len, 0, NULL, 0) < 0) {
             DEBUGMSGTL(("smux", "[var_smux_write] send failed\n"));
             return SNMP_ERR_GENERR;
         }
@@ -428,8 +426,8 @@
             /*
              * peek at what's received 
              */
-            if ((len = recvfrom(rptr->sr_fd, buf,
-                            SMUXMAXPKTSIZE, MSG_PEEK, NULL, 0)) <= 0) {
+            if ((len = recvfrom(rptr->sr_fd, (void *) buf,
+                            SMUXMAXPKTSIZE, MSG_PEEK, NULL, NULL)) <= 0) {
                 if ((len == -1) && ((errno == EINTR) || (errno == EAGAIN)))
                 {
                    continue;
@@ -444,8 +442,8 @@
                 return SNMP_ERR_GENERR;
             }
 
-            DEBUGMSGTL(("smux", "[var_smux_write] Peeked at %d bytes\n",
-                        len));
+            DEBUGMSGTL(("smux", "[var_smux_write] Peeked at %" NETSNMP_PRIz
+                        "d bytes\n", len));
             DEBUGDUMPSETUP("var_smux_write", buf, len);
 
             /*
@@ -468,7 +466,7 @@
             do
             {
                len = tmp_len;
-               len = recvfrom(rptr->sr_fd, buf, len, 0, NULL, 0);
+               len = recvfrom(rptr->sr_fd, (void *) buf, len, 0, NULL, NULL);
             }
             while((len == -1) && ((errno == EINTR) || (errno == EAGAIN)));
 
@@ -480,8 +478,8 @@
                 return SNMP_ERR_GENERR;
             }
 
-            DEBUGMSGTL(("smux", "[var_smux_write] Received %d bytes\n",
-                        len));
+            DEBUGMSGTL(("smux", "[var_smux_write] Received %" NETSNMP_PRIz
+                        "d bytes\n", len));
 
             if (buf[0] == SMUX_TRAP) {
                 DEBUGMSGTL(("smux", "[var_smux_write] Received trap\n"));
@@ -552,7 +550,7 @@
                         "[var_smux_write] entering FREE - sending Commit \n"));
         }
 
-        if ((sendto(rptr->sr_fd, sout, 3, 0, NULL, 0)) < 0) {
+        if ((sendto(rptr->sr_fd, (void *) sout, 3, 0, NULL, 0)) < 0) {
             DEBUGMSGTL(("smux",
                         "[var_smux_write] send rollback/commit failed\n"));
             return SNMP_ERR_GENERR;
@@ -574,9 +572,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);
     /*
@@ -610,7 +609,7 @@
          */
         do
         {
-           length = recvfrom(fd, (char *) data, SMUXMAXPKTSIZE, 0, NULL, 0);
+           length = recvfrom(fd, (char *) data, SMUXMAXPKTSIZE, 0, NULL, NULL);
         }
         while((length == -1) && ((errno == EINTR) || (errno == EAGAIN)));
 
@@ -688,7 +687,8 @@
 
     do
     {
-       length = recvfrom(fd, (char *) data, SMUXMAXPKTSIZE, MSG_PEEK, NULL, 0);
+       length = recvfrom(fd, (char *) data, SMUXMAXPKTSIZE, MSG_PEEK, NULL,
+                         NULL);
     }
     while((length == -1) && ((errno == EINTR) || (errno == EAGAIN)));
 
@@ -716,7 +716,7 @@
     do
     {
        length = tmp_length;
-       length = recvfrom(fd, (char *) data, length, 0, NULL, 0);
+       length = recvfrom(fd, (char *) data, length, 0, NULL, NULL);
     }
     while((length == -1) && ((errno == EINTR) || (errno == EAGAIN)));
 
@@ -742,8 +742,8 @@
     size_t          len;
     u_char         *ptr, type;
 
-    DEBUGMSGTL(("smux", "[smux_pdu_process] Processing %d bytes\n",
-                length));
+    DEBUGMSGTL(("smux", "[smux_pdu_process] Processing %" NETSNMP_PRIz
+                "d bytes\n", length));
 
     error = 0;
     ptr = data;
@@ -785,7 +785,7 @@
             break;
         case SMUX_TRAP:
             snmp_log(LOG_INFO, "Got trap from peer on fd %d\n", fd);
-            if (ptr != 0)
+            if (ptr)
             {
                DEBUGMSGTL(("smux", "[smux_pdu_process] call smux_trap_process.\n"));
                ptr = smux_trap_process(ptr, &len);
@@ -829,8 +829,8 @@
         return ((ptr += *len));
     }
     DEBUGMSGTL(("smux",
-                "[smux_open_process] version %d, len %d, type %d\n",
-                version, *len, (int) type));
+                "[smux_open_process] version %ld, len %" NETSNMP_PRIz
+                "u, type %d\n", version, *len, (int) type));
 
     oid_name_len = MAX_OID_LEN;
     if ((ptr = asn_parse_objid(ptr, len, &type, oid_name,
@@ -844,8 +844,8 @@
     if (snmp_get_do_debugging()) {
         DEBUGMSGTL(("smux", "[smux_open_process] smux peer: %s\n",
                     oid_print));
-        DEBUGMSGTL(("smux", "[smux_open_process] len %d, type %d\n", *len,
-                    (int) type));
+        DEBUGMSGTL(("smux", "[smux_open_process] len %" NETSNMP_PRIz
+                    "u, type %d\n", *len, (int) type));
     }
 
     string_len = SMUXMAXSTRLEN;
@@ -861,8 +861,8 @@
         for (i = 0; i < (int) string_len; i++)
             DEBUGMSG(("smux", "%c", descr[i]));
         DEBUGMSG(("smux", "\n"));
-        DEBUGMSGTL(("smux", "[smux_open_process] len %d, type %d\n", *len,
-                    (int) type));
+        DEBUGMSGTL(("smux", "[smux_open_process] len %" NETSNMP_PRIz
+                    "u, type %d\n", *len, (int) type));
     }
     descr[string_len] = 0;
 
@@ -879,8 +879,8 @@
         for (i = 0; i < (int) string_len; i++)
             DEBUGMSG(("smux", "%c", passwd[i]));
         DEBUGMSG(("smux", "\n"));
-        DEBUGMSGTL(("smux", "[smux_open_process] len %d, type %d\n", *len,
-                    (int) type));
+        DEBUGMSGTL(("smux", "[smux_open_process] len %" NETSNMP_PRIz
+                    "u, type %d\n", *len, (int) type));
     }
     passwd[string_len] = '\0';
     if (!smux_auth_peer(oid_name, oid_name_len, passwd, fd)) {
@@ -926,10 +926,27 @@
 smux_auth_peer(oid * name, size_t namelen, char *passwd, int fd)
 {
     int             i;
+    char            oid_print[SMUXMAXSTRLEN];
+
+    if (snmp_get_do_debugging()) {
+        snprint_objid(oid_print, sizeof(oid_print), name, namelen);
+        DEBUGMSGTL(("smux:auth", "[smux_auth_peer] Authorizing: %s, %s\n",
+                    oid_print, passwd));
+    }
 
     for (i = 0; i < nauths; i++) {
+        if (snmp_get_do_debugging()) {
+            snprint_objid(oid_print, sizeof(oid_print),
+                          Auths[i]->sa_oid, Auths[i]->sa_oid_len);
+            DEBUGMSGTL(("smux:auth", "[smux_auth_peer] Checking OID: %s (%d)\n",
+                    oid_print, i));
+        }
         if (snmp_oid_compare(Auths[i]->sa_oid, Auths[i]->sa_oid_len,
                              name, namelen) == 0) {
+            if (snmp_get_do_debugging()) {
+                DEBUGMSGTL(("smux:auth", "[smux_auth_peer] Checking P/W: %s (%d)\n",
+                        Auths[i]->sa_passwd, Auths[i]->sa_active_fd));
+            }
             if (!(strcmp(Auths[i]->sa_passwd, passwd)) &&
                 (Auths[i]->sa_active_fd == -1)) {
                 /*
@@ -966,7 +983,7 @@
     }
 
     DEBUGMSGTL(("smux",
-                "[smux_close_process] close from peer on fd %d reason %d\n",
+                "[smux_close_process] close from peer on fd %d reason %ld\n",
                 fd, down));
     smux_peer_cleanup(fd);
 
@@ -998,7 +1015,7 @@
         smux_send_rrsp(sd, -1);
         return NULL;
     }
-    DEBUGMSGTL(("smux", "[smux_rreq_process] priority %d\n", priority));
+    DEBUGMSGTL(("smux", "[smux_rreq_process] priority %ld\n", priority));
 
     if ((ptr = asn_parse_int(ptr, len, &type, &operation,
                              sizeof(operation))) == NULL) {
@@ -1007,7 +1024,7 @@
         smux_send_rrsp(sd, -1);
         return NULL;
     }
-    DEBUGMSGTL(("smux", "[smux_rreq_process] operation %d\n", operation));
+    DEBUGMSGTL(("smux", "[smux_rreq_process] operation %ld\n", operation));
 
     if (operation == SMUX_REGOP_DELETE) {
         /*
@@ -1146,7 +1163,7 @@
                              1, nrptr->sr_name, nrptr->sr_name_len)
                      != SNMPERR_SUCCESS) {
 		DEBUGMSGTL(("smux", "[smux_rreq_process] Failed to register subtree\n"));
-		smux_list_detach(&ActiveRegs, &nrptr);
+		smux_list_detach(&ActiveRegs, nrptr);
 		free(nrptr);
 		smux_send_rrsp(sd, -1);
 		return NULL;
@@ -1248,50 +1265,61 @@
         return 0;
     }
     prev = NULL;
-    for (rptr = *head; rptr->sr_next; rptr = rptr->sr_next) {
+    for (rptr = *head; rptr; rptr = rptr->sr_next) {
         result = snmp_oid_compare(add->sr_name, add->sr_name_len,
                                   rptr->sr_name, rptr->sr_name_len);
-        if ((result == 0) && (add->sr_priority == rptr->sr_priority)) {
+        if (result == 0) {
             /*
-             * same tree, same pri, nope 
+             * Same tree...
              */
-            return -1;
+            if (add->sr_priority == rptr->sr_priority) {
+                /*
+                 * ... same pri : nope 
+                 */
+                return -1;
+            } else if (add->sr_priority < rptr->sr_priority) {
+                /*
+                 * ... lower pri : insert and return
+                 */
+                add->sr_next = rptr;
+                if ( prev ) { prev->sr_next = add; }
+                else        {         *head = add; }
+                return 0;
+#ifdef XXX
+            } else {
+                /*
+                 * ... higher pri : put after 
+                 */
+                add->sr_next  = rptr->sr_next;
+                rptr->sr_next = add;
+#endif
+            }
         } else if (result < 0) {
             /*
-             * this can only happen if we go before the head 
+             * Earlier tree : insert and return
              */
-            add->sr_next = *head;
-            *head = add;
+            add->sr_next = rptr;
+            if ( prev ) { prev->sr_next = add; }
+            else        {         *head = add; }
             return 0;
-        } else if ((snmp_oid_compare(add->sr_name, add->sr_name_len,
-                                     rptr->sr_next->sr_name,
-                                     rptr->sr_next->sr_name_len)) < 0) {
+#ifdef XXX
+        } else  {
             /*
-             * insert here 
+             * Later tree : put after
              */
             add->sr_next = rptr->sr_next;
             rptr->sr_next = add;
             return 0;
+#endif
         }
         prev = rptr;
     }
     /*
-     * compare the last one 
+     * Otherwise, this entry must come last
      */
-    result = snmp_oid_compare(add->sr_name, add->sr_name_len, rptr->sr_name, rptr->sr_name_len);
-    if ((result == 0) && add->sr_priority == rptr->sr_priority)
-        return -1;
-    else  if (result < 0 ) {
-        add->sr_next = rptr;
-        if ( prev ) {
-            prev->sr_next = add;
-        } else {
-            *head = add;
-        }
-    } else {
-        rptr->sr_next = add;
-        add->sr_next = NULL;
-    }
+    if ( prev ) { prev->sr_next = add; }
+    else        {         *head = add; }
+    add->sr_next = NULL;
     return 0;
 }
 
@@ -1337,7 +1365,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;
@@ -1353,7 +1381,7 @@
         type = SMUX_GETNEXT;
 
     if (smux_build(type, smux_reqid, objid, len, 0, NULL,
-                   *len, packet, &length) < 0) {
+                   *len, packet, (size_t *) &length) < 0) {
         snmp_log(LOG_ERR, "[smux_snmp_process]: smux_build failed\n");
         return NULL;
     }
@@ -1366,14 +1394,15 @@
     }
 
     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) {
         /*
          * peek at what's received 
          */
-        length = recvfrom(sd, (char *) result, SMUXMAXPKTSIZE, MSG_PEEK, NULL, 0);
+        length = recvfrom(sd, (char *) result, SMUXMAXPKTSIZE, MSG_PEEK, NULL,
+                          NULL);
         if (length <= 0) {
             if ((length == -1) && ((errno == EINTR) || (errno == EAGAIN)))
             {
@@ -1388,7 +1417,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);
 
@@ -1412,7 +1441,7 @@
         do
         {
            length = tmp_length;
-           length = recvfrom(sd, (char *) result, length, 0, NULL, 0);
+           length = recvfrom(sd, (char *) result, length, 0, NULL, NULL);
         }
         while((length == -1) && ((errno == EINTR) || (errno == EAGAIN)));
 
@@ -1423,14 +1452,14 @@
            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) {
             DEBUGMSGTL(("smux", "[smux_snmp_process] Received trap\n"));
             snmp_log(LOG_INFO, "Got trap from peer on fd %d\n", sd);
-            ptr = asn_parse_header(result, &length, &type);
-            smux_trap_process(ptr, &length);
+            ptr = asn_parse_header(result, (size_t *) &length, &type);
+            smux_trap_process(ptr, (size_t *) &length);
 
             /*
              * go and peek at received data again 
@@ -1496,7 +1525,7 @@
      * XXX How to send something intelligent back in case of an error 
      */
     DEBUGMSGTL(("smux",
-                "[smux_parse] Message type %d, reqid %d, errstat %d, \n\terrindex %d\n",
+                "[smux_parse] Message type %d, reqid %ld, errstat %ld, \n\terrindex %ld\n",
                 (int) type, reqid, errstat, errindex));
     if (ptr == NULL || errstat != SNMP_ERR_NOERROR)
         return NULL;
@@ -1556,8 +1585,8 @@
      */
     len = SMUXMAXPKTSIZE;
     DEBUGMSGTL(("smux",
-                "[smux_parse_var] Asn coded len of var %d, type %d\n",
-                var_val_len, (int) *vartype));
+                "[smux_parse_var] Asn coded len of var %" NETSNMP_PRIz
+                "u, type %d\n", var_val_len, (int) *vartype));
 
     switch ((short) *vartype) {
     case ASN_INTEGER:
@@ -1962,7 +1991,7 @@
             /*
              * XXX 
              */
-            if (len == 0)
+            if (len == NULL)
                 return NULL;
             var_val_len = SMUXMAXSTRLEN;
             asn_parse_string(var_val, &maxlen, &vartype,
@@ -1986,7 +2015,7 @@
             /*
              * XXX 
              */
-            if (len == 0)
+            if (len == NULL)
                 return NULL;
             var_val_len = SMUXMAXSTRLEN;
             asn_parse_bitstring(var_val, &maxlen, &vartype,
@@ -2070,7 +2099,7 @@
    return(0);
 }
 
-int smux_snmp_select_list_get_length()
+int smux_snmp_select_list_get_length(void)
 {
    return(sdlen);
 }
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/smux/snmp_bgp.c b/agent/mibgroup/smux/snmp_bgp.c
index 3e5d5ce..16b0185 100644
--- a/agent/mibgroup/smux/snmp_bgp.c
+++ b/agent/mibgroup/smux/snmp_bgp.c
@@ -52,32 +52,55 @@
 #include "snmp_bgp.h"
 
 struct variable13 bgp_variables[] = {
-    {BGPVERSION, ASN_OCTET_STR, RONLY, var_bgp, 1, {1}},
-    {BGPLOCALAS, ASN_INTEGER, RONLY, var_bgp, 1, {2}},
-    {BGPIDENTIFIER, ASN_IPADDRESS, RONLY, var_bgp, 1, {4}},
-    {BGPPEERIDENTIFIER, ASN_IPADDRESS, RONLY, var_bgp, 3, {3, 1, 1}},
-    {BGPPEERSTATE, ASN_INTEGER, RONLY, var_bgp, 3, {3, 1, 2}},
-    {BGPPEERADMINSTATUS, ASN_INTEGER, RONLY, var_bgp, 3, {3, 1, 3}},
-    {BGPPEERNEGOTIATEDVERSION, ASN_INTEGER, RONLY, var_bgp, 3, {3, 1, 4}},
-    {BGPPEERLOCALADDR, ASN_IPADDRESS, RONLY, var_bgp, 3, {3, 1, 5}},
-    {BGPPEERLOCALPORT, ASN_INTEGER, RONLY, var_bgp, 3, {3, 1, 6}},
-    {BGPPEERREMOTEADDR, ASN_IPADDRESS, RONLY, var_bgp, 3, {3, 1, 7}},
-    {BGPPEERREMOTEPORT, ASN_INTEGER, RONLY, var_bgp, 3, {3, 1, 8}},
-    {BGPPEERREMOTEAS, ASN_INTEGER, RONLY, var_bgp, 3, {3, 1, 9}},
-    {BGPPEERINUPDATES, ASN_COUNTER, RONLY, var_bgp, 3, {3, 1, 10}},
-    {BGPPEEROUTUPDATES, ASN_COUNTER, RONLY, var_bgp, 3, {3, 1, 11}},
-    {BGPPEERINTOTALMESSAGES, ASN_COUNTER, RONLY, var_bgp, 3, {3, 1, 12}},
-    {BGPPEEROUTTOTALMESSAGES, ASN_COUNTER, RONLY, var_bgp, 3, {3, 1, 13}},
-    {BGPPEERLASTERROR, ASN_OCTET_STR, RONLY, var_bgp, 3, {3, 1, 14}},
-    {BGPPATHATTRPEER, ASN_IPADDRESS, RONLY, var_bgp, 3, {5, 1, 1}},
-    {BGPPATHATTRDESTNETWORK, ASN_IPADDRESS, RONLY, var_bgp, 3, {5, 1, 2}},
-    {BGPPATHATTRORIGIN, ASN_INTEGER, RONLY, var_bgp, 3, {5, 1, 3}},
-    {BGPPATHATTRASPATH, ASN_OCTET_STR, RONLY, var_bgp, 3, {5, 1, 4}},
-    {BGPPATHATTRNEXTHOP, ASN_INTEGER, RONLY, var_bgp, 3, {5, 1, 5}},
-    {BGPPATHATTRINTERASMETRIC, ASN_OCTET_STR, RONLY, var_bgp, 3, {5, 1, 6}}
+    {BGPVERSION, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 1, {1}},
+    {BGPLOCALAS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 1, {2}},
+    {BGPIDENTIFIER, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 1, {4}},
+    {BGPPEERIDENTIFIER, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {3, 1, 1}},
+    {BGPPEERSTATE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {3, 1, 2}},
+    {BGPPEERADMINSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {3, 1, 3}},
+    {BGPPEERNEGOTIATEDVERSION, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {3, 1, 4}},
+    {BGPPEERLOCALADDR, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {3, 1, 5}},
+    {BGPPEERLOCALPORT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {3, 1, 6}},
+    {BGPPEERREMOTEADDR, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {3, 1, 7}},
+    {BGPPEERREMOTEPORT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {3, 1, 8}},
+    {BGPPEERREMOTEAS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {3, 1, 9}},
+    {BGPPEERINUPDATES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {3, 1, 10}},
+    {BGPPEEROUTUPDATES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {3, 1, 11}},
+    {BGPPEERINTOTALMESSAGES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {3, 1, 12}},
+    {BGPPEEROUTTOTALMESSAGES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {3, 1, 13}},
+    {BGPPEERLASTERROR, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {3, 1, 14}},
+    {BGPPATHATTRPEER, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {5, 1, 1}},
+    {BGPPATHATTRDESTNETWORK, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {5, 1, 2}},
+    {BGPPATHATTRORIGIN, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {5, 1, 3}},
+    {BGPPATHATTRASPATH, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {5, 1, 4}},
+    {BGPPATHATTRNEXTHOP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {5, 1, 5}},
+    {BGPPATHATTRINTERASMETRIC, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_bgp, 3, {5, 1, 6}}
 };
 
-oid             bgp_variables_oid[] = { MIB, 15 };
+oid             bgp_variables_oid[] = { NETSNMP_MIB2_OID, 15 };
 
 void
 init_snmp_bdp(void)
diff --git a/agent/mibgroup/smux/snmp_ospf.c b/agent/mibgroup/smux/snmp_ospf.c
index 4f4758c..73f0e43 100644
--- a/agent/mibgroup/smux/snmp_ospf.c
+++ b/agent/mibgroup/smux/snmp_ospf.c
@@ -57,129 +57,225 @@
 extern u_char   smux_type;
 
 struct variable13 ospf_variables[] = {
-    {ospfRouterId, ASN_IPADDRESS, RWRITE, var_ospf, 3, {1, 1, 1}},
-    {ospfAdminStat, ASN_INTEGER, RWRITE, var_ospf, 3, {1, 1, 2}},
-    {ospfVersionNumber, ASN_INTEGER, RONLY, var_ospf, 3, {1, 1, 3}},
-    {ospfAreaBdrRtrStatus, ASN_INTEGER, RONLY, var_ospf, 3, {1, 1, 4}},
-    {ospfASBdrRtrStatus, ASN_INTEGER, RWRITE, var_ospf, 3, {1, 1, 5}},
-    {ospfExternLsaCount, ASN_GAUGE, RONLY, var_ospf, 3, {1, 1, 6}},
-    {ospfExternLsaCksumSum, ASN_INTEGER, RONLY, var_ospf, 3, {1, 1, 7}},
-    {ospfTOSSupport, ASN_INTEGER, RWRITE, var_ospf, 3, {1, 1, 8}},
-    {ospfOriginateNewLsas, ASN_COUNTER, RONLY, var_ospf, 3, {1, 1, 9}},
-    {ospfRxNewLsas, ASN_COUNTER, RONLY, var_ospf, 3, {1, 1, 10, 0}},
-    {ospfExtLsdbLimit, ASN_INTEGER, RWRITE, var_ospf, 3, {1, 1, 11}},
-    {ospfMulticastExtensions, ASN_INTEGER, RWRITE, var_ospf, 3,
-     {1, 1, 12}},
-    {ospfAreaId, ASN_IPADDRESS, RONLY, var_ospf, 3, {2, 1, 1}},
-    {ospfAuthType, ASN_INTEGER, RWRITE, var_ospf, 3, {2, 1, 2}},
-    {ospfImportAsExtern, ASN_INTEGER, RWRITE, var_ospf, 3, {2, 1, 3}},
-    {ospfSpfRuns, ASN_COUNTER, RONLY, var_ospf, 3, {2, 1, 4}},
-    {ospfAreaBdrRtrCount, ASN_GAUGE, RONLY, var_ospf, 3, {2, 1, 5}},
-    {ospfAsBdrRtrCount, ASN_GAUGE, RONLY, var_ospf, 3, {2, 1, 6}},
-    {ospfAreaLsaCount, ASN_GAUGE, RONLY, var_ospf, 3, {2, 1, 7}},
-    {ospfAreaLsaCksumSum, ASN_INTEGER, RONLY, var_ospf, 3, {2, 1, 8}},
-    {ospfAreaSummary, ASN_INTEGER, RWRITE, var_ospf, 3, {2, 1, 9}},
-    {ospfAreaStatus, ASN_INTEGER, RWRITE, var_ospf, 3, {2, 1, 10}},
-    {ospfStubAreaId, ASN_IPADDRESS, RONLY, var_ospf, 3, {3, 1, 1}},
-    {ospfStubTOS, ASN_INTEGER, RONLY, var_ospf, 3, {3, 1, 2}},
-    {ospfStubMetric, ASN_INTEGER, RWRITE, var_ospf, 3, {3, 1, 3}},
-    {ospfStubStatus, ASN_INTEGER, RWRITE, var_ospf, 3, {3, 1, 4}},
-    {ospfStubMetricType, ASN_INTEGER, RWRITE, var_ospf, 3, {3, 1, 5}},
-    {ospfLsdbAreaId, ASN_IPADDRESS, RONLY, var_ospf, 3, {4, 1, 1}},
-    {ospfLsdbType, ASN_INTEGER, RONLY, var_ospf, 3, {4, 1, 2}},
-    {ospfLsdbLsid, ASN_IPADDRESS, RONLY, var_ospf, 3, {4, 1, 3}},
-    {ospfLsdbRouterId, ASN_IPADDRESS, RONLY, var_ospf, 3, {4, 1, 4}},
-    {ospfLsdbSequence, ASN_INTEGER, RONLY, var_ospf, 3, {4, 1, 5}},
-    {ospfLsdbAge, ASN_INTEGER, RONLY, var_ospf, 3, {4, 1, 6}},
-    {ospfLsdbChecksum, ASN_INTEGER, RONLY, var_ospf, 3, {4, 1, 7}},
-    {ospfLsdbAdvertisement, ASN_OCTET_STR, RONLY, var_ospf, 3, {4, 1, 8}},
-    {ospfAreaRangeAreaId, ASN_IPADDRESS, RONLY, var_ospf, 3, {5, 1, 1}},
-    {ospfAreaRangeNet, ASN_IPADDRESS, RONLY, var_ospf, 3, {5, 1, 2}},
-    {ospfAreaRangeMask, ASN_IPADDRESS, RWRITE, var_ospf, 3, {5, 1, 3}},
-    {ospfAreaRangeStatus, ASN_INTEGER, RWRITE, var_ospf, 3, {5, 1, 4}},
-    {ospfAreaRangeEffect, ASN_INTEGER, RWRITE, var_ospf, 3, {5, 1, 5}},
-    {ospfHostIpAddress, ASN_IPADDRESS, RONLY, var_ospf, 3, {6, 1, 1}},
-    {ospfHostTOS, ASN_INTEGER, RONLY, var_ospf, 3, {6, 1, 2}},
-    {ospfHostMetric, ASN_INTEGER, RWRITE, var_ospf, 3, {6, 1, 3}},
-    {ospfHostStatus, ASN_INTEGER, RWRITE, var_ospf, 3, {6, 1, 4}},
-    {ospfHostAreaID, ASN_IPADDRESS, RONLY, var_ospf, 3, {6, 1, 5}},
-    {ospfIfIpAddress, ASN_IPADDRESS, RONLY, var_ospf, 3, {7, 1, 1}},
-    {ospfAddressLessIf, ASN_INTEGER, RONLY, var_ospf, 3, {7, 1, 2}},
-    {ospfIfAreaId, ASN_IPADDRESS, RWRITE, var_ospf, 3, {7, 1, 3}},
-    {ospfIfType, ASN_INTEGER, RWRITE, var_ospf, 3, {7, 1, 4}},
-    {ospfIfAdminStat, ASN_INTEGER, RWRITE, var_ospf, 3, {7, 1, 5}},
-    {ospfIfRtrPriority, ASN_INTEGER, RWRITE, var_ospf, 3, {7, 1, 6}},
-    {ospfIfTransitDelay, ASN_INTEGER, RWRITE, var_ospf, 3, {7, 1, 7}},
-    {ospfIfRetransInterval, ASN_INTEGER, RWRITE, var_ospf, 3, {7, 1, 8}},
-    {ospfIfHelloInterval, ASN_INTEGER, RWRITE, var_ospf, 3, {7, 1, 9}},
-    {ospfIfRtrDeadInterval, ASN_INTEGER, RWRITE, var_ospf, 3, {7, 1, 10}},
-    {ospfIfPollInterval, ASN_INTEGER, RWRITE, var_ospf, 3, {7, 1, 11}},
-    {ospfIfState, ASN_INTEGER, RONLY, var_ospf, 3, {7, 1, 12}},
-    {ospfIfDesignatedRouter, ASN_IPADDRESS, RONLY, var_ospf, 3,
-     {7, 1, 13}},
-    {ospfIfBackupDesignatedRouter, ASN_IPADDRESS, RONLY, var_ospf, 3,
-     {7, 1, 14}},
-    {ospfIfEvents, ASN_COUNTER, RONLY, var_ospf, 3, {7, 1, 15}},
-    {ospfIfAuthKey, ASN_OCTET_STR, RWRITE, var_ospf, 3, {7, 1, 16}},
-    {ospfIfStatus, ASN_INTEGER, RWRITE, var_ospf, 3, {7, 1, 17}},
-    {ospfIfMulticastForwarding, ASN_INTEGER, RWRITE, var_ospf, 3,
-     {7, 1, 18}},
-    {ospfIfMetricIpAddress, ASN_IPADDRESS, RONLY, var_ospf, 3, {8, 1, 1}},
-    {ospfIfMetricAddressLessIf, ASN_INTEGER, RONLY, var_ospf, 3,
-     {8, 1, 2}},
-    {ospfIfMetricTOS, ASN_INTEGER, RONLY, var_ospf, 3, {8, 1, 3}},
-    {ospfIfMetricValue, ASN_INTEGER, RWRITE, var_ospf, 3, {8, 1, 4}},
-    {ospfIfMetricStatus, ASN_INTEGER, RWRITE, var_ospf, 3, {8, 1, 5}},
-    {ospfVirtIfAreaId, ASN_IPADDRESS, RONLY, var_ospf, 3, {9, 1, 1}},
-    {ospfVirtIfNeighbor, ASN_IPADDRESS, RONLY, var_ospf, 3, {9, 1, 2}},
-    {ospfVirtIfTransitDelay, ASN_INTEGER, RWRITE, var_ospf, 3, {9, 1, 3}},
-    {ospfVirtIfRetransInterval, ASN_INTEGER, RWRITE, var_ospf, 3,
-     {9, 1, 4}},
-    {ospfVirtIfHelloInterval, ASN_INTEGER, RWRITE, var_ospf, 3, {9, 1, 5}},
-    {ospfVirtIfRtrDeadInterval, ASN_INTEGER, RWRITE, var_ospf, 3,
-     {9, 1, 6}},
-    {ospfVirtIfState, ASN_INTEGER, RONLY, var_ospf, 3, {9, 1, 7}},
-    {ospfVirtIfEvents, ASN_COUNTER, RONLY, var_ospf, 3, {9, 1, 8}},
-    {ospfVirtIfAuthKey, ASN_OCTET_STR, RWRITE, var_ospf, 3, {9, 1, 9}},
-    {ospfVirtIfStatus, ASN_INTEGER, RWRITE, var_ospf, 3, {9, 1, 10}},
-    {ospfNbrIpAddr, ASN_IPADDRESS, RONLY, var_ospf, 3, {10, 1, 1}},
-    {ospfNbrAddressLessIndex, ASN_INTEGER, RONLY, var_ospf, 3, {10, 1, 2}},
-    {ospfNbrRtrId, ASN_IPADDRESS, RONLY, var_ospf, 3, {10, 1, 3}},
-    {ospfNbrOptions, ASN_INTEGER, RONLY, var_ospf, 3, {10, 1, 4}},
-    {ospfNbrPriority, ASN_INTEGER, RWRITE, var_ospf, 3, {10, 1, 5}},
-    {ospfNbrState, ASN_INTEGER, RONLY, var_ospf, 3, {10, 1, 6}},
-    {ospfNbrEvents, ASN_COUNTER, RONLY, var_ospf, 3, {10, 1, 7}},
-    {ospfNbrLsRetransQLen, ASN_GAUGE, RONLY, var_ospf, 3, {10, 1, 8}},
-    {ospfNbmaNbrStatus, ASN_INTEGER, RWRITE, var_ospf, 3, {10, 1, 9}},
-    {ospfNbmaNbrPermanence, ASN_INTEGER, RWRITE, var_ospf, 3, {10, 1, 10}},
-    {ospfVirtNbrArea, ASN_IPADDRESS, RONLY, var_ospf, 3, {11, 1, 1}},
-    {ospfVirtNbrRtrId, ASN_IPADDRESS, RONLY, var_ospf, 3, {11, 1, 2}},
-    {ospfVirtNbrIpAddr, ASN_IPADDRESS, RONLY, var_ospf, 3, {11, 1, 3}},
-    {ospfVirtNbrOptions, ASN_INTEGER, RONLY, var_ospf, 3, {11, 1, 4}},
-    {ospfVirtNbrState, ASN_INTEGER, RONLY, var_ospf, 3, {11, 1, 5}},
-    {ospfVirtNbrEvents, ASN_COUNTER, RONLY, var_ospf, 3, {11, 1, 6}},
-    {ospfVirtNbrLsRetransQLen, ASN_GAUGE, RONLY, var_ospf, 3, {11, 1, 7}},
-    {ospfExtLsdbType, ASN_INTEGER, RONLY, var_ospf, 3, {12, 1, 1}},
-    {ospfExtLsdbLsid, ASN_IPADDRESS, RONLY, var_ospf, 3, {12, 1, 2}},
-    {ospfExtLsdbRouterId, ASN_IPADDRESS, RONLY, var_ospf, 3, {12, 1, 3}},
-    {ospfExtLsdbSequence, ASN_INTEGER, RONLY, var_ospf, 3, {12, 1, 4}},
-    {ospfExtLsdbAge, ASN_INTEGER, RONLY, var_ospf, 3, {12, 1, 5}},
-    {ospfExtLsdbChecksum, ASN_INTEGER, RONLY, var_ospf, 3, {12, 1, 6}},
-    {ospfExtLsdbAdvertisement, ASN_OCTET_STR, RONLY, var_ospf, 3,
-     {12, 1, 7}},
-    {ospfAreaAggregateAreaID, ASN_IPADDRESS, RONLY, var_ospf, 3,
-     {14, 1, 1}},
-    {ospfAreaAggregateLsdbType, ASN_INTEGER, RONLY, var_ospf, 3,
-     {14, 1, 2}},
-    {ospfAreaAggregateNet, ASN_IPADDRESS, RONLY, var_ospf, 3, {14, 1, 3}},
-    {ospfAreaAggregateMask, ASN_IPADDRESS, RWRITE, var_ospf, 3,
-     {14, 1, 4}},
-    {ospfAreaAggregateStatus, ASN_INTEGER, RWRITE, var_ospf, 3,
-     {14, 1, 5}},
-    {ospfAreaAggregateEffect, ASN_INTEGER, RWRITE, var_ospf, 3, {14, 1, 6}}
+    {ospfRouterId, ASN_IPADDRESS, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {1, 1, 1}},
+    {ospfAdminStat, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {1, 1, 2}},
+    {ospfVersionNumber, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {1, 1, 3}},
+    {ospfAreaBdrRtrStatus, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {1, 1, 4}},
+    {ospfASBdrRtrStatus, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {1, 1, 5}},
+    {ospfExternLsaCount, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {1, 1, 6}},
+    {ospfExternLsaCksumSum, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {1, 1, 7}},
+    {ospfTOSSupport, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {1, 1, 8}},
+    {ospfOriginateNewLsas, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {1, 1, 9}},
+    {ospfRxNewLsas, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {1, 1, 10, 0}},
+    {ospfExtLsdbLimit, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {1, 1, 11}},
+    {ospfMulticastExtensions, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {1, 1, 12}},
+    {ospfAreaId, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {2, 1, 1}},
+    {ospfAuthType, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {2, 1, 2}},
+    {ospfImportAsExtern, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {2, 1, 3}},
+    {ospfSpfRuns, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {2, 1, 4}},
+    {ospfAreaBdrRtrCount, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {2, 1, 5}},
+    {ospfAsBdrRtrCount, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {2, 1, 6}},
+    {ospfAreaLsaCount, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {2, 1, 7}},
+    {ospfAreaLsaCksumSum, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {2, 1, 8}},
+    {ospfAreaSummary, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {2, 1, 9}},
+    {ospfAreaStatus, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {2, 1, 10}},
+    {ospfStubAreaId, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {3, 1, 1}},
+    {ospfStubTOS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {3, 1, 2}},
+    {ospfStubMetric, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {3, 1, 3}},
+    {ospfStubStatus, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {3, 1, 4}},
+    {ospfStubMetricType, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {3, 1, 5}},
+    {ospfLsdbAreaId, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {4, 1, 1}},
+    {ospfLsdbType, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {4, 1, 2}},
+    {ospfLsdbLsid, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {4, 1, 3}},
+    {ospfLsdbRouterId, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {4, 1, 4}},
+    {ospfLsdbSequence, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {4, 1, 5}},
+    {ospfLsdbAge, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {4, 1, 6}},
+    {ospfLsdbChecksum, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {4, 1, 7}},
+    {ospfLsdbAdvertisement, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {4, 1, 8}},
+    {ospfAreaRangeAreaId, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {5, 1, 1}},
+    {ospfAreaRangeNet, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {5, 1, 2}},
+    {ospfAreaRangeMask, ASN_IPADDRESS, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {5, 1, 3}},
+    {ospfAreaRangeStatus, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {5, 1, 4}},
+    {ospfAreaRangeEffect, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {5, 1, 5}},
+    {ospfHostIpAddress, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {6, 1, 1}},
+    {ospfHostTOS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {6, 1, 2}},
+    {ospfHostMetric, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {6, 1, 3}},
+    {ospfHostStatus, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {6, 1, 4}},
+    {ospfHostAreaID, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {6, 1, 5}},
+    {ospfIfIpAddress, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {7, 1, 1}},
+    {ospfAddressLessIf, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {7, 1, 2}},
+    {ospfIfAreaId, ASN_IPADDRESS, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {7, 1, 3}},
+    {ospfIfType, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {7, 1, 4}},
+    {ospfIfAdminStat, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {7, 1, 5}},
+    {ospfIfRtrPriority, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {7, 1, 6}},
+    {ospfIfTransitDelay, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {7, 1, 7}},
+    {ospfIfRetransInterval, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {7, 1, 8}},
+    {ospfIfHelloInterval, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {7, 1, 9}},
+    {ospfIfRtrDeadInterval, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {7, 1, 10}},
+    {ospfIfPollInterval, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {7, 1, 11}},
+    {ospfIfState, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {7, 1, 12}},
+    {ospfIfDesignatedRouter, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {7, 1, 13}},
+    {ospfIfBackupDesignatedRouter, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {7, 1, 14}},
+    {ospfIfEvents, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {7, 1, 15}},
+    {ospfIfAuthKey, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {7, 1, 16}},
+    {ospfIfStatus, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {7, 1, 17}},
+    {ospfIfMulticastForwarding, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {7, 1, 18}},
+    {ospfIfMetricIpAddress, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {8, 1, 1}},
+    {ospfIfMetricAddressLessIf, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {8, 1, 2}},
+    {ospfIfMetricTOS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {8, 1, 3}},
+    {ospfIfMetricValue, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {8, 1, 4}},
+    {ospfIfMetricStatus, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {8, 1, 5}},
+    {ospfVirtIfAreaId, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {9, 1, 1}},
+    {ospfVirtIfNeighbor, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {9, 1, 2}},
+    {ospfVirtIfTransitDelay, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {9, 1, 3}},
+    {ospfVirtIfRetransInterval, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {9, 1, 4}},
+    {ospfVirtIfHelloInterval, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {9, 1, 5}},
+    {ospfVirtIfRtrDeadInterval, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {9, 1, 6}},
+    {ospfVirtIfState, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {9, 1, 7}},
+    {ospfVirtIfEvents, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {9, 1, 8}},
+    {ospfVirtIfAuthKey, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {9, 1, 9}},
+    {ospfVirtIfStatus, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {9, 1, 10}},
+    {ospfNbrIpAddr, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {10, 1, 1}},
+    {ospfNbrAddressLessIndex, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {10, 1, 2}},
+    {ospfNbrRtrId, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {10, 1, 3}},
+    {ospfNbrOptions, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {10, 1, 4}},
+    {ospfNbrPriority, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {10, 1, 5}},
+    {ospfNbrState, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {10, 1, 6}},
+    {ospfNbrEvents, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {10, 1, 7}},
+    {ospfNbrLsRetransQLen, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {10, 1, 8}},
+    {ospfNbmaNbrStatus, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {10, 1, 9}},
+    {ospfNbmaNbrPermanence, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {10, 1, 10}},
+    {ospfVirtNbrArea, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {11, 1, 1}},
+    {ospfVirtNbrRtrId, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {11, 1, 2}},
+    {ospfVirtNbrIpAddr, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {11, 1, 3}},
+    {ospfVirtNbrOptions, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {11, 1, 4}},
+    {ospfVirtNbrState, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {11, 1, 5}},
+    {ospfVirtNbrEvents, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {11, 1, 6}},
+    {ospfVirtNbrLsRetransQLen, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {11, 1, 7}},
+    {ospfExtLsdbType, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {12, 1, 1}},
+    {ospfExtLsdbLsid, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {12, 1, 2}},
+    {ospfExtLsdbRouterId, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {12, 1, 3}},
+    {ospfExtLsdbSequence, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {12, 1, 4}},
+    {ospfExtLsdbAge, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {12, 1, 5}},
+    {ospfExtLsdbChecksum, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {12, 1, 6}},
+    {ospfExtLsdbAdvertisement, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {12, 1, 7}},
+    {ospfAreaAggregateAreaID, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {14, 1, 1}},
+    {ospfAreaAggregateLsdbType, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {14, 1, 2}},
+    {ospfAreaAggregateNet, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_ospf, 3, {14, 1, 3}},
+    {ospfAreaAggregateMask, ASN_IPADDRESS, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {14, 1, 4}},
+    {ospfAreaAggregateStatus, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {14, 1, 5}},
+    {ospfAreaAggregateEffect, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_ospf, 3, {14, 1, 6}}
 };
 
-oid             ospf_variables_oid[] = { MIB, 14 };
+oid             ospf_variables_oid[] = { NETSNMP_MIB2_OID, 14 };
 
 void
 init_snmp_ospf(void)
diff --git a/agent/mibgroup/smux/snmp_rip2.c b/agent/mibgroup/smux/snmp_rip2.c
index c5b1364..b987a09 100644
--- a/agent/mibgroup/smux/snmp_rip2.c
+++ b/agent/mibgroup/smux/snmp_rip2.c
@@ -57,31 +57,53 @@
 extern u_char   smux_type;
 
 struct variable13 rip2_variables[] = {
-    {RIP2GLOBALROUTECHANGES, ASN_COUNTER, RONLY, var_rip2, 2, {1, 1}},
-    {RIP2GLOBALQUERIES, ASN_COUNTER, RONLY, var_rip2, 2, {1, 2}},
-    {RIP2IFSTATADDRESS, ASN_IPADDRESS, RONLY, var_rip2, 3, {2, 1, 1}},
-    {RIP2IFSTATRCVBADPKTS, ASN_COUNTER, RONLY, var_rip2, 3, {2, 1, 2}},
-    {RIP2IFSTATRCVBADROUTES, ASN_COUNTER, RONLY, var_rip2, 3, {2, 1, 3}},
-    {RIP2IFSTATSENTUPDATES, ASN_COUNTER, RONLY, var_rip2, 3, {2, 1, 4}},
-    {RIP2IFSTATSTATUS, ASN_INTEGER, RWRITE, var_rip2, 3, {2, 1, 5}},
-    {RIP2IFCONFADDRESS, ASN_IPADDRESS, RONLY, var_rip2, 3, {3, 1, 1}},
-    {RIP2IFCONFDOMAIN, ASN_OCTET_STR, RWRITE, var_rip2, 3, {3, 1, 2}},
-    {RIP2IFCONFAUTHTYPE, ASN_INTEGER, RWRITE, var_rip2, 3, {3, 1, 3}},
-    {RIP2IFCONFAUTHKEY, ASN_OCTET_STR, RWRITE, var_rip2, 3, {3, 1, 4}},
-    {RIP2IFCONFSEND, ASN_INTEGER, RWRITE, var_rip2, 3, {3, 1, 5}},
-    {RIP2IFCONFRECEIVE, ASN_INTEGER, RWRITE, var_rip2, 3, {3, 1, 6}},
-    {RIP2IFCONFDEFAULTMETRIC, ASN_INTEGER, RWRITE, var_rip2, 3, {3, 1, 7}},
-    {RIP2IFCONFSTATUS, ASN_INTEGER, RWRITE, var_rip2, 3, {3, 1, 8}},
-    {RIP2IFCONFSRCADDRESS, ASN_IPADDRESS, RWRITE, var_rip2, 3, {3, 1, 9}},
-    {RIP2PEERADDRESS, ASN_IPADDRESS, RONLY, var_rip2, 3, {4, 1, 1}},
-    {RIP2PEERDOMAIN, ASN_OCTET_STR, RONLY, var_rip2, 3, {4, 1, 2}},
-    {RIP2PEERLASTUPDATE, ASN_TIMETICKS, RONLY, var_rip2, 3, {4, 1, 3}},
-    {RIP2PEERVERSION, ASN_INTEGER, RONLY, var_rip2, 3, {4, 1, 4}},
-    {RIP2PEERRCVBADPKTS, ASN_COUNTER, RONLY, var_rip2, 3, {4, 1, 5}},
-    {RIP2PEERRCVBADROUTES, ASN_COUNTER, RONLY, var_rip2, 3, {4, 1, 6}}
+    {RIP2GLOBALROUTECHANGES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_rip2, 2, {1, 1}},
+    {RIP2GLOBALQUERIES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_rip2, 2, {1, 2}},
+    {RIP2IFSTATADDRESS, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_rip2, 3, {2, 1, 1}},
+    {RIP2IFSTATRCVBADPKTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_rip2, 3, {2, 1, 2}},
+    {RIP2IFSTATRCVBADROUTES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_rip2, 3, {2, 1, 3}},
+    {RIP2IFSTATSENTUPDATES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_rip2, 3, {2, 1, 4}},
+    {RIP2IFSTATSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_rip2, 3, {2, 1, 5}},
+    {RIP2IFCONFADDRESS, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_rip2, 3, {3, 1, 1}},
+    {RIP2IFCONFDOMAIN, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_rip2, 3, {3, 1, 2}},
+    {RIP2IFCONFAUTHTYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_rip2, 3, {3, 1, 3}},
+    {RIP2IFCONFAUTHKEY, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_rip2, 3, {3, 1, 4}},
+    {RIP2IFCONFSEND, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_rip2, 3, {3, 1, 5}},
+    {RIP2IFCONFRECEIVE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_rip2, 3, {3, 1, 6}},
+    {RIP2IFCONFDEFAULTMETRIC, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_rip2, 3, {3, 1, 7}},
+    {RIP2IFCONFSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_rip2, 3, {3, 1, 8}},
+    {RIP2IFCONFSRCADDRESS, ASN_IPADDRESS, NETSNMP_OLDAPI_RWRITE,
+     var_rip2, 3, {3, 1, 9}},
+    {RIP2PEERADDRESS, ASN_IPADDRESS, NETSNMP_OLDAPI_RONLY,
+     var_rip2, 3, {4, 1, 1}},
+    {RIP2PEERDOMAIN, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_rip2, 3, {4, 1, 2}},
+    {RIP2PEERLASTUPDATE, ASN_TIMETICKS, NETSNMP_OLDAPI_RONLY,
+     var_rip2, 3, {4, 1, 3}},
+    {RIP2PEERVERSION, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_rip2, 3, {4, 1, 4}},
+    {RIP2PEERRCVBADPKTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_rip2, 3, {4, 1, 5}},
+    {RIP2PEERRCVBADROUTES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_rip2, 3, {4, 1, 6}}
 };
 
-oid             rip2_variables_oid[] = { MIB, 23 };
+oid             rip2_variables_oid[] = { NETSNMP_MIB2_OID, 23 };
 
 void
 init_snmp_rip2(void)
diff --git a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c
index cb00f65..d1c575f 100644
--- a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c
+++ b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.c
@@ -14,6 +14,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -26,9 +27,11 @@
 
 #include "snmpNotifyFilterTable_interface.h"
 
-oid             snmpNotifyFilterTable_oid[] =
+netsnmp_feature_require(check_storage_transition)
+
+const oid       snmpNotifyFilterTable_oid[] =
     { SNMPNOTIFYFILTERTABLE_OID };
-int             snmpNotifyFilterTable_oid_size =
+const int       snmpNotifyFilterTable_oid_size =
 OID_LENGTH(snmpNotifyFilterTable_oid);
 
 snmpNotifyFilterTable_registration snmpNotifyFilterTable_user_context;
@@ -267,9 +270,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 +547,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.h b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.h
index 5bfeb7d..3ff2f94 100644
--- a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.h
+++ b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable.h
@@ -311,8 +311,8 @@
         * snmpNotifyFilterTable_row_find_by_mib_index
         (snmpNotifyFilterTable_mib_index * mib_idx);
 
-    extern oid      snmpNotifyFilterTable_oid[];
-    extern int      snmpNotifyFilterTable_oid_size;
+    extern const oid      snmpNotifyFilterTable_oid[];
+    extern const int      snmpNotifyFilterTable_oid_size;
 
 
 #include "snmpNotifyFilterTable_interface.h"
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 342e064..942a865 100644
--- a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c
+++ b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_data_access.c
@@ -8,6 +8,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/library/vacm.h>
@@ -20,6 +21,8 @@
 
 #include "snmpNotifyFilterTable_data_access.h"
 
+netsnmp_feature_require(snmpNotifyFilterTable_container_get)
+
 /** @ingroup interface 
  * @addtogroup data_access data_access: Routines to access data
  *
@@ -243,7 +246,8 @@
         ++count;
     }
 
-    DEBUGMSGT(("verbose:snmpNotifyFilterTable:snmpNotifyFilterTable_container_load", "inserted %d records\n", count));
+    DEBUGMSGT(("verbose:snmpNotifyFilterTable:snmpNotifyFilterTable_container_load",
+               "inserted %" NETSNMP_PRIz "u records\n", count));
 
     return MFD_SUCCESS;
 }                               /* snmpNotifyFilterTable_container_load */
@@ -495,7 +499,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;
@@ -525,7 +529,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 48f3e7e..4040e3f 100644
--- a/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c
+++ b/agent/mibgroup/snmp-notification-mib/snmpNotifyFilterTable/snmpNotifyFilterTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,22 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(snmpNotifyFilterTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(table_container_row_insert)
+netsnmp_feature_require(check_all_requests_error)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_type_and_max_size)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+
+netsnmp_feature_child_of(snmpNotifyFilterTable_container_size, snmpNotifyFilterTable_external_access)
+netsnmp_feature_child_of(snmpNotifyFilterTable_registration_set, snmpNotifyFilterTable_external_access)
+netsnmp_feature_child_of(snmpNotifyFilterTable_registration_get, snmpNotifyFilterTable_external_access)
+netsnmp_feature_child_of(snmpNotifyFilterTable_container_get, snmpNotifyFilterTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -96,19 +113,23 @@
     _snmpNotifyFilterTable_container_shutdown
     (snmpNotifyFilterTable_interface_ctx * if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_CONTAINER_GET
 netsnmp_container *
 snmpNotifyFilterTable_container_get(void)
 {
     return snmpNotifyFilterTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_REGISTRATION_GET
 snmpNotifyFilterTable_registration *
 snmpNotifyFilterTable_registration_get(void)
 {
     return snmpNotifyFilterTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_REGISTRATION_SET
 snmpNotifyFilterTable_registration *
 snmpNotifyFilterTable_registration_set(snmpNotifyFilterTable_registration *
                                        newreg)
@@ -118,12 +139,15 @@
     snmpNotifyFilterTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_CONTAINER_SIZE
 int
 snmpNotifyFilterTable_container_size(void)
 {
     return CONTAINER_SIZE(snmpNotifyFilterTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_CONTAINER_SIZE */
 
 u_int
 snmpNotifyFilterTable_dirty_get(void)
@@ -220,7 +244,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;
@@ -261,7 +285,7 @@
         _mfd_snmpNotifyFilterTable_post_request;
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /*
      * REQUIRED wrappers for set request handling
      */
@@ -287,7 +311,7 @@
      */
     access_multiplexer->consistency_checks =
         _mfd_snmpNotifyFilterTable_check_dependencies;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     /*************************************************
      *
@@ -303,8 +327,8 @@
                                             snmpNotifyFilterTable_oid,
                                             snmpNotifyFilterTable_oid_size,
                                             HANDLER_CAN_BABY_STEP
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
-                                          | HANDLER_CAN_RWRITE
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
+                                            | HANDLER_CAN_RWRITE
 #endif
                                           );
     if (NULL == reginfo) {
@@ -325,7 +349,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -348,7 +372,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -729,7 +753,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;
 
@@ -774,6 +798,7 @@
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_snmpNotifyFilterTable_post_request */
 
+
 /**
  * @internal
  * wrapper
@@ -847,7 +872,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"));
@@ -974,7 +999,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;
@@ -1082,7 +1107,7 @@
                                              user_ctx, rowreq_ctx);
 }                               /* _snmpNotifyFilterTable_check_indexes */
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -1253,7 +1278,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;
@@ -1301,7 +1326,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"));
 
@@ -1394,7 +1419,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"));
@@ -1459,7 +1484,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;
 
@@ -1573,7 +1598,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;
@@ -1621,7 +1646,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"));
@@ -1654,7 +1679,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"));
@@ -1754,7 +1779,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;
 
@@ -1810,7 +1835,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"));
@@ -1838,7 +1863,7 @@
 
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_snmpNotifyFilterTable_irreversible_commit */
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /***********************************************************************
  *
@@ -2013,15 +2038,18 @@
 snmpNotifyFilterTable_container_init_persistence(netsnmp_container
                                                  *container)
 {
+    netsnmp_container **container_p;
     int             rc;
 
     register_config_handler(NULL, row_token,
                             _snmpNotifyFilterTable_container_row_restore,
                             NULL, NULL);
+    container_p = netsnmp_memdup(&container, sizeof(container));
+    netsnmp_assert(container_p);
     rc = snmp_register_callback(SNMP_CALLBACK_LIBRARY,
                                 SNMP_CALLBACK_STORE_DATA,
                                 _snmpNotifyFilterTable_container_save_rows,
-                                container);
+                                container_p);
 
     if (rc != SNMP_ERR_NOERROR)
         snmp_log(LOG_ERR, "error registering for STORE_DATA callback "
@@ -2039,9 +2067,11 @@
         "#\n" "# snmpNotifyFilterTable persistent data\n" "#";
     char           *type = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
                                                  NETSNMP_DS_LIB_APPTYPE);
-    netsnmp_container *c = (netsnmp_container *) clientarg;
+    netsnmp_container *c = *(netsnmp_container **)clientarg;
 
-    DEBUGMSGTL(("internal:snmpNotifyFilterTable:_snmpNotifyFilterTable_container_save_rows", "saving %d rows\n", CONTAINER_SIZE(c)));
+    DEBUGMSGTL(("internal:snmpNotifyFilterTable:"
+                "_snmpNotifyFilterTable_container_save_rows",
+                "saving %" NETSNMP_PRIz "u rows\n", CONTAINER_SIZE(c)));
 
     read_config_store((char *) type, sep);
     read_config_store((char *) type, buf);
@@ -2092,7 +2122,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
@@ -2220,7 +2250,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 ':'
          */
@@ -2403,6 +2433,7 @@
 }
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_EXTERNAL_ACCESS
 snmpNotifyFilterTable_rowreq_ctx *
 snmpNotifyFilterTable_row_find_by_mib_index(snmpNotifyFilterTable_mib_index
                                             * mib_idx)
@@ -2425,8 +2456,9 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (snmpNotifyFilterTable_rowreq_ctx*)
         CONTAINER_FIND(snmpNotifyFilterTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMPNOTIFYFILTERTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable.c b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable.c
index 05d8311..5010197 100644
--- a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable.c
+++ b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable.c
@@ -26,8 +26,8 @@
 
 #include "usmDHUserKeyTable_interface.h"
 
-oid             usmDHUserKeyTable_oid[] = { USMDHUSERKEYTABLE_OID };
-int             usmDHUserKeyTable_oid_size =
+const oid       usmDHUserKeyTable_oid[] = { USMDHUSERKEYTABLE_OID };
+const int       usmDHUserKeyTable_oid_size =
 OID_LENGTH(usmDHUserKeyTable_oid);
 
 usmDHUserKeyTable_registration usmDHUserKeyTable_user_context;
diff --git a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable.h b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable.h
index e20d5bc..b343d78 100644
--- a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable.h
+++ b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable.h
@@ -199,8 +199,8 @@
         *usmDHUserKeyTable_row_find_by_mib_index
         (usmDHUserKeyTable_mib_index * mib_idx);
 
-    extern oid      usmDHUserKeyTable_oid[];
-    extern int      usmDHUserKeyTable_oid_size;
+    extern const oid      usmDHUserKeyTable_oid[];
+    extern const int      usmDHUserKeyTable_oid_size;
 
 
 #include "usmDHUserKeyTable_interface.h"
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..04231f9 100644
--- a/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c
+++ b/agent/mibgroup/snmp-usm-dh-objects-mib/usmDHUserKeyTable/usmDHUserKeyTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,10 @@
 
 #include <ctype.h>
 
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -184,7 +189,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 +769,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 +779,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 +789,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 +799,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 +924,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 +945,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 +967,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 +988,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 +1288,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 +1299,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 +1309,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 +1320,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 4ca2987..e756788 100644
--- a/agent/mibgroup/snmpv3/snmpEngine.c
+++ b/agent/mibgroup/snmpv3/snmpEngine.c
@@ -3,28 +3,41 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
-
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/sysORTable.h>
 
-#include "util_funcs.h"
-#include "mibII/sysORTable.h"
+#include "util_funcs/header_generic.h"
 #include "snmpEngine.h"
 
+netsnmp_feature_child_of(snmpengine_all, libnetsnmpmibs)
+
+netsnmp_feature_child_of(register_snmpEngine_scalars_context, snmpengine_all)
+
 struct variable2 snmpEngine_variables[] = {
-    {SNMPENGINEID, ASN_OCTET_STR, RONLY, var_snmpEngine, 1, {1}},
+    {SNMPENGINEID, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_snmpEngine, 1, {1}},
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
 #ifdef NETSNMP_ENABLE_TESTING_CODE
-    {SNMPENGINEBOOTS, ASN_INTEGER, RWRITE, var_snmpEngine, 1, {2}},
-    {SNMPENGINETIME, ASN_INTEGER, RWRITE, var_snmpEngine, 1, {3}},
+    {SNMPENGINEBOOTS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_snmpEngine, 1, {2}},
+    {SNMPENGINETIME, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_snmpEngine, 1, {3}},
 #else                           /* !NETSNMP_ENABLE_TESTING_CODE */
-    {SNMPENGINEBOOTS, ASN_INTEGER, RONLY, var_snmpEngine, 1, {2}},
-    {SNMPENGINETIME, ASN_INTEGER, RONLY, var_snmpEngine, 1, {3}},
+    {SNMPENGINEBOOTS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_snmpEngine, 1, {2}},
+    {SNMPENGINETIME, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_snmpEngine, 1, {3}},
 #endif                          /* NETSNMP_ENABLE_TESTING_CODE */
-    {SNMPENGINEMAXMESSAGESIZE, ASN_INTEGER, RONLY, var_snmpEngine, 1, {4}},
+#else  /* !NETSNMP_NO_WRITE_SUPPORT */ 
+    {SNMPENGINEBOOTS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_snmpEngine, 1, {2}},
+    {SNMPENGINETIME, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_snmpEngine, 1, {3}},
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
+    {SNMPENGINEMAXMESSAGESIZE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_snmpEngine, 1, {4}},
 };
 
 /*
@@ -40,6 +53,7 @@
                  snmpEngine_variables_oid);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_SNMPENGINE_SCALARS_CONTEXT
 void
 register_snmpEngine_scalars_context(const char *contextName)
 {
@@ -52,25 +66,24 @@
                          DEFAULT_MIB_PRIORITY, 0, 0, NULL,
                          contextName, -1, 0);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_SNMPENGINE_SCALARS_CONTEXT */
 
 void
 init_snmpEngine(void)
 {
-#ifdef USING_MIBII_SYSORTABLE_MODULE
-    static oid      reg[] = { 1, 3, 6, 1, 6, 3, 10, 3, 1, 1 };
-    register_sysORTable(reg, 10, "The SNMP Management Architecture MIB.");
-#endif
+    oid      reg[] = { 1, 3, 6, 1, 6, 3, 10, 3, 1, 1 };
+    REGISTER_SYSOR_ENTRY(reg, "The SNMP Management Architecture MIB.");
     register_snmpEngine_scalars();
 }
 
-extern struct timeval starttime;
-
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #ifdef NETSNMP_ENABLE_TESTING_CODE
 int             write_engineBoots(int, u_char *, u_char, size_t, u_char *,
                                   oid *, size_t);
 int             write_engineTime(int, u_char *, u_char, size_t, u_char *,
                                  oid *, size_t);
 #endif                          /* NETSNMP_ENABLE_TESTING_CODE */
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 u_char         *
 var_snmpEngine(struct variable *vp,
@@ -85,11 +98,11 @@
     static long     long_ret;
     static unsigned char engineID[SNMP_MAXBUF];
 
-    *write_method = 0;          /* assume it isnt writable for the time being */
+    *write_method = (WriteMethod*)0;    /* assume it isnt writable for the time being */
     *var_len = sizeof(long_ret);        /* assume an integer and change later if not */
 
     if (header_generic(vp, name, length, exact, var_len, write_method))
-        return 0;
+        return NULL;
 
     /*
      * this is where we do the value assignments for the mib results. 
@@ -104,16 +117,20 @@
         return (unsigned char *) engineID;
 
     case SNMPENGINEBOOTS:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #ifdef NETSNMP_ENABLE_TESTING_CODE
         *write_method = write_engineBoots;
 #endif                          /* NETSNMP_ENABLE_TESTING_CODE */
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         long_ret = snmpv3_local_snmpEngineBoots();
         return (unsigned char *) &long_ret;
 
     case SNMPENGINETIME:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #ifdef NETSNMP_ENABLE_TESTING_CODE
         *write_method = write_engineTime;
 #endif                          /* NETSNMP_ENABLE_TESTING_CODE */
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         long_ret = snmpv3_local_snmpEngineTime();
         return (unsigned char *) &long_ret;
 
@@ -125,9 +142,11 @@
         DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_snmpEngine\n",
                     vp->magic));
     }
-    return 0;
+    return NULL;
 }
 
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #ifdef NETSNMP_ENABLE_TESTING_CODE
 /*
  * write_engineBoots():
@@ -224,3 +243,4 @@
 }
 
 #endif                          /* NETSNMP_ENABLE_TESTING_CODE */
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
diff --git a/agent/mibgroup/snmpv3/snmpEngine.h b/agent/mibgroup/snmpv3/snmpEngine.h
index 343eeaa..b62a220 100644
--- a/agent/mibgroup/snmpv3/snmpEngine.h
+++ b/agent/mibgroup/snmpv3/snmpEngine.h
@@ -10,10 +10,10 @@
 #define _MIBGROUP_SNMPENGINE_H
 
 /*
- * we use header_generic and checkmib from the util_funcs module 
+ * we use header_generic from the util_funcs module
  */
 
-config_require(util_funcs)
+config_require(util_funcs/header_generic)
 config_add_mib(SNMP-FRAMEWORK-MIB)
 
     /*
diff --git a/agent/mibgroup/snmpv3/snmpMPDStats.c b/agent/mibgroup/snmpv3/snmpMPDStats.c
index c7efbc8..ae792df 100644
--- a/agent/mibgroup/snmpv3/snmpMPDStats.c
+++ b/agent/mibgroup/snmpv3/snmpMPDStats.c
@@ -3,24 +3,21 @@
  */
 
 #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>
 
-#include "mibII/sysORTable.h"
 #include "snmpMPDStats.h"
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 
 
 struct variable2 snmpMPDStats_variables[] = {
-    {SNMPUNKNOWNSECURITYMODELS, ASN_COUNTER, RONLY, var_snmpMPDStats, 1,
-     {1}},
-    {SNMPINVALIDMSGS, ASN_COUNTER, RONLY, var_snmpMPDStats, 1, {2}},
-    {SNMPUNKNOWNPDUHANDLERS, ASN_COUNTER, RONLY, var_snmpMPDStats, 1, {3}},
+    {SNMPUNKNOWNSECURITYMODELS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_snmpMPDStats, 1, {1}},
+    {SNMPINVALIDMSGS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_snmpMPDStats, 1, {2}},
+    {SNMPUNKNOWNPDUHANDLERS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_snmpMPDStats, 1, {3}},
 };
 
 /*
@@ -32,12 +29,9 @@
 void
 init_snmpMPDStats(void)
 {
-#ifdef USING_MIBII_SYSORTABLE_MODULE
     static oid      reg[] = { 1, 3, 6, 1, 6, 3, 11, 3, 1, 1 };
-    register_sysORTable(reg, 10,
-                        "The MIB for Message Processing and Dispatching.");
-#endif
-
+    REGISTER_SYSOR_ENTRY(reg,
+                         "The MIB for Message Processing and Dispatching.");
     REGISTER_MIB("snmpv3/snmpMPDStats", snmpMPDStats_variables, variable2,
                  snmpMPDStats_variables_oid);
 }
diff --git a/agent/mibgroup/snmpv3/snmpMPDStats.h b/agent/mibgroup/snmpv3/snmpMPDStats.h
index d17c371..41eab1d 100644
--- a/agent/mibgroup/snmpv3/snmpMPDStats.h
+++ b/agent/mibgroup/snmpv3/snmpMPDStats.h
@@ -8,10 +8,11 @@
 #define _MIBGROUP_SNMPMPDSTATS_H
 
 /*
- * we use header_generic and checkmib from the util_funcs module 
+ * we use header_generic from the util_funcs module 
  */
 
-config_require(util_funcs)
+config_require(util_funcs/header_generic)
+config_exclude(snmpv3/snmpMPDStats_5_5)
 config_add_mib(SNMP-MPD-MIB)
 
     /*
diff --git a/agent/mibgroup/snmpv3/snmpMPDStats_5_5.c b/agent/mibgroup/snmpv3/snmpMPDStats_5_5.c
new file mode 100644
index 0000000..a7fc2ce
--- /dev/null
+++ b/agent/mibgroup/snmpv3/snmpMPDStats_5_5.c
@@ -0,0 +1,51 @@
+/*
+ * snmpMPDStats.c: tallies errors for SNMPv3 message processing.
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/net-snmp-features.h>
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/sysORTable.h>
+
+#include "snmpMPDStats_5_5.h"
+
+#include <net-snmp/agent/snmp_get_statistic.h>
+
+#define snmpMPDMIB 1, 3, 6, 1, 6, 3, 11
+#define snmpMPDMIBObjects snmpMPDMIB, 2
+#define snmpMPDMIBCompliances snmpMPDMIB, 3, 1
+
+netsnmp_feature_require(helper_statistics)
+
+static oid snmpMPDStats[] = { snmpMPDMIBObjects, 1 };
+
+static netsnmp_handler_registration* snmpMPDStats_reg = NULL;
+static oid snmpMPDCompliance[] = { snmpMPDMIBCompliances, 1 };
+
+void
+init_snmpMPDStats_5_5(void)
+{
+    netsnmp_handler_registration* s =
+        netsnmp_create_handler_registration(
+            "snmpMPDStats", NULL, snmpMPDStats, OID_LENGTH(snmpMPDStats),
+            HANDLER_CAN_RONLY);
+    if (s &&
+	NETSNMP_REGISTER_STATISTIC_HANDLER(s, 1, MPD) == MIB_REGISTERED_OK) {
+        REGISTER_SYSOR_ENTRY(snmpMPDCompliance,
+                             "The MIB for Message Processing and Dispatching.");
+        snmpMPDStats_reg = s;
+    }
+}
+
+void
+shutdown_snmpMPDStats_5_5(void)
+{
+    UNREGISTER_SYSOR_ENTRY(snmpMPDCompliance);
+    if (snmpMPDStats_reg) {
+        netsnmp_unregister_handler(snmpMPDStats_reg);
+        snmpMPDStats_reg = NULL;
+    }
+}
diff --git a/agent/mibgroup/snmpv3/snmpMPDStats_5_5.h b/agent/mibgroup/snmpv3/snmpMPDStats_5_5.h
new file mode 100644
index 0000000..78f3dff
--- /dev/null
+++ b/agent/mibgroup/snmpv3/snmpMPDStats_5_5.h
@@ -0,0 +1,10 @@
+#ifndef _MIBGROUP_SNMPMPDSTATS_H
+#define _MIBGROUP_SNMPMPDSTATS_H
+
+config_exclude(snmpv3/snmpMPDStats)
+config_add_mib(SNMP-MPD-MIB)
+
+void init_snmpMPDStats_5_5(void);
+void shutdown_snmpMPDStats_5_5(void);
+
+#endif /* _MIBGROUP_SNMPMPDSTATS_H */
diff --git a/agent/mibgroup/snmpv3/usmStats.c b/agent/mibgroup/snmpv3/usmStats.c
index d81e127..718e071 100644
--- a/agent/mibgroup/snmpv3/usmStats.c
+++ b/agent/mibgroup/snmpv3/usmStats.c
@@ -4,26 +4,26 @@
  */
 
 #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>
 
-#include "util_funcs.h"
-#include "mibII/sysORTable.h"
+#include "util_funcs/header_generic.h"
 #include "usmStats.h"
 
 struct variable2 usmStats_variables[] = {
-    {USMSTATSUNSUPPORTEDSECLEVELS, ASN_COUNTER, RONLY, var_usmStats, 1,
-     {1}},
-    {USMSTATSNOTINTIMEWINDOWS, ASN_COUNTER, RONLY, var_usmStats, 1, {2}},
-    {USMSTATSUNKNOWNUSERNAMES, ASN_COUNTER, RONLY, var_usmStats, 1, {3}},
-    {USMSTATSUNKNOWNENGINEIDS, ASN_COUNTER, RONLY, var_usmStats, 1, {4}},
-    {USMSTATSWRONGDIGESTS, ASN_COUNTER, RONLY, var_usmStats, 1, {5}},
-    {USMSTATSDECRYPTIONERRORS, ASN_COUNTER, RONLY, var_usmStats, 1, {6}},
+    {USMSTATSUNSUPPORTEDSECLEVELS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_usmStats, 1, {1}},
+    {USMSTATSNOTINTIMEWINDOWS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_usmStats, 1, {2}},
+    {USMSTATSUNKNOWNUSERNAMES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_usmStats, 1, {3}},
+    {USMSTATSUNKNOWNENGINEIDS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_usmStats, 1, {4}},
+    {USMSTATSWRONGDIGESTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_usmStats, 1, {5}},
+    {USMSTATSDECRYPTIONERRORS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+     var_usmStats, 1, {6}},
 };
 
 /*
@@ -35,12 +35,10 @@
 void
 init_usmStats(void)
 {
-#ifdef USING_MIBII_SYSORTABLE_MODULE
     static oid      reg[] = { 1, 3, 6, 1, 6, 3, 15, 2, 1, 1 };
-    register_sysORTable(reg, 10,
-                        "The management information definitions for the SNMP User-based Security Model.");
-#endif
-
+    REGISTER_SYSOR_ENTRY(reg,
+                         "The management information definitions for the "
+                         "SNMP User-based Security Model.");
     REGISTER_MIB("snmpv3/usmStats", usmStats_variables, variable2,
                  usmStats_variables_oid);
 }
@@ -73,5 +71,6 @@
         long_ret = snmp_get_statistic(tmagic + STAT_USM_STATS_START);
         return (unsigned char *) &long_ret;
     }
+
     return 0;
 }
diff --git a/agent/mibgroup/snmpv3/usmStats.h b/agent/mibgroup/snmpv3/usmStats.h
index 7188e1a..5685381 100644
--- a/agent/mibgroup/snmpv3/usmStats.h
+++ b/agent/mibgroup/snmpv3/usmStats.h
@@ -9,10 +9,11 @@
 #define _MIBGROUP_USMSTATS_H
 
 /*
- * we use header_generic and checkmib from the util_funcs module 
+ * we use header_generic from the util_funcs module 
  */
 
-config_require(util_funcs)
+config_require(util_funcs/header_generic)
+config_exclude(snmpv3/usmStats_5_5)
 config_add_mib(SNMP-USER-BASED-SM-MIB)
 
     /*
diff --git a/agent/mibgroup/snmpv3/usmStats_5_5.c b/agent/mibgroup/snmpv3/usmStats_5_5.c
new file mode 100644
index 0000000..bcd04e1
--- /dev/null
+++ b/agent/mibgroup/snmpv3/usmStats_5_5.c
@@ -0,0 +1,51 @@
+/*
+ * usmStats.c: implements the usmStats portion of the SNMP-USER-BASED-SM-MIB
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/net-snmp-features.h>
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/sysORTable.h>
+
+#include "usmStats_5_5.h"
+
+#include <net-snmp/agent/snmp_get_statistic.h>
+
+#define snmpUsmMIB 1, 3, 6, 1, 6, 3, 15
+#define usmMIBCompliances snmpUsmMIB, 2, 1
+
+static oid usmStats[] = { snmpUsmMIB, 1, 1 };
+
+static netsnmp_handler_registration* usmStats_reg = NULL;
+static oid usmMIBCompliance[] = { usmMIBCompliances, 1 };
+
+netsnmp_feature_require(helper_statistics)
+
+void
+init_usmStats_5_5(void)
+{
+    netsnmp_handler_registration* s =
+        netsnmp_create_handler_registration(
+            "usmStats", NULL, usmStats, OID_LENGTH(usmStats),
+            HANDLER_CAN_RONLY);
+    if (s &&
+	NETSNMP_REGISTER_STATISTIC_HANDLER(s, 1, USM) == MIB_REGISTERED_OK) {
+        REGISTER_SYSOR_ENTRY(usmMIBCompliance,
+                             "The management information definitions for the "
+                             "SNMP User-based Security Model.");
+        usmStats_reg = s;
+    }
+}
+
+void
+shutdown_usmStats_5_5(void)
+{
+    UNREGISTER_SYSOR_ENTRY(usmMIBCompliance);
+    if (usmStats_reg) {
+        netsnmp_unregister_handler(usmStats_reg);
+        usmStats_reg = NULL;
+    }
+}
diff --git a/agent/mibgroup/snmpv3/usmStats_5_5.h b/agent/mibgroup/snmpv3/usmStats_5_5.h
new file mode 100644
index 0000000..d30719e
--- /dev/null
+++ b/agent/mibgroup/snmpv3/usmStats_5_5.h
@@ -0,0 +1,10 @@
+#ifndef _MIBGROUP_USMSTATS_H
+#define _MIBGROUP_USMSTATS_H
+
+config_exclude(snmpv3/usmStats)
+config_add_mib(SNMP-USER-BASED-SM-MIB)
+
+void init_usmStats_5_5(void);
+void shutdown_usmStats_5_5(void);
+
+#endif /* _MIBGROUP_USMSTATS_H */
diff --git a/agent/mibgroup/snmpv3/usmUser.c b/agent/mibgroup/snmpv3/usmUser.c
index 0eb0dac..9f0503d 100644
--- a/agent/mibgroup/snmpv3/usmUser.c
+++ b/agent/mibgroup/snmpv3/usmUser.c
@@ -3,6 +3,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <stdlib.h>
 
 #if HAVE_STRING_H
@@ -11,37 +12,44 @@
 #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>
 
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 #include "usmUser.h"
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
 int usmStatusCheck(struct usmUser *uptr);
+#endif  /* !NETSNMP_NO_WRITE_SUPPORT */
+
+netsnmp_feature_child_of(usmuser_all, libnetsnmpmibs)
+netsnmp_feature_child_of(init_register_usmuser_context, usmuser_all)
 
 struct variable4 usmUser_variables[] = {
-    {USMUSERSPINLOCK, ASN_INTEGER, RWRITE, var_usmUser, 1, {1}},
-    {USMUSERSECURITYNAME, ASN_OCTET_STR, RONLY, var_usmUser, 3, {2, 1, 3}},
-    {USMUSERCLONEFROM, ASN_OBJECT_ID, RWRITE, var_usmUser, 3, {2, 1, 4}},
-    {USMUSERAUTHPROTOCOL, ASN_OBJECT_ID, RWRITE, var_usmUser, 3,
-     {2, 1, 5}},
-    {USMUSERAUTHKEYCHANGE, ASN_OCTET_STR, RWRITE, var_usmUser, 3,
-     {2, 1, 6}},
-    {USMUSEROWNAUTHKEYCHANGE, ASN_OCTET_STR, RWRITE, var_usmUser, 3,
-     {2, 1, 7}},
-    {USMUSERPRIVPROTOCOL, ASN_OBJECT_ID, RWRITE, var_usmUser, 3,
-     {2, 1, 8}},
-    {USMUSERPRIVKEYCHANGE, ASN_OCTET_STR, RWRITE, var_usmUser, 3,
-     {2, 1, 9}},
-    {USMUSEROWNPRIVKEYCHANGE, ASN_OCTET_STR, RWRITE, var_usmUser, 3,
-     {2, 1, 10}},
-    {USMUSERPUBLIC, ASN_OCTET_STR, RWRITE, var_usmUser, 3, {2, 1, 11}},
-    {USMUSERSTORAGETYPE, ASN_INTEGER, RWRITE, var_usmUser, 3, {2, 1, 12}},
-    {USMUSERSTATUS, ASN_INTEGER, RWRITE, var_usmUser, 3, {2, 1, 13}},
+    {USMUSERSPINLOCK, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_usmUser, 1, {1}},
+    {USMUSERSECURITYNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_usmUser, 3, {2, 1, 3}},
+    {USMUSERCLONEFROM, ASN_OBJECT_ID, NETSNMP_OLDAPI_RWRITE,
+     var_usmUser, 3, {2, 1, 4}},
+    {USMUSERAUTHPROTOCOL, ASN_OBJECT_ID, NETSNMP_OLDAPI_RWRITE,
+     var_usmUser, 3, {2, 1, 5}},
+    {USMUSERAUTHKEYCHANGE, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_usmUser, 3, {2, 1, 6}},
+    {USMUSEROWNAUTHKEYCHANGE, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_usmUser, 3, {2, 1, 7}},
+    {USMUSERPRIVPROTOCOL, ASN_OBJECT_ID, NETSNMP_OLDAPI_RWRITE,
+     var_usmUser, 3, {2, 1, 8}},
+    {USMUSERPRIVKEYCHANGE, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_usmUser, 3, {2, 1, 9}},
+    {USMUSEROWNPRIVKEYCHANGE, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_usmUser, 3, {2, 1, 10}},
+    {USMUSERPUBLIC, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_usmUser, 3, {2, 1, 11}},
+    {USMUSERSTORAGETYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_usmUser, 3, {2, 1, 12}},
+    {USMUSERSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_usmUser, 3, {2, 1, 13}},
 
 };
 
@@ -62,6 +70,7 @@
                  usmUser_variables_oid);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_INIT_REGISTER_USMUSER_CONTEXT
 void
 init_register_usmUser_context(const char *contextName) {
     register_mib_context("snmpv3/usmUser",
@@ -73,6 +82,7 @@
                          DEFAULT_MIB_PRIORITY, 0, 0, NULL,
                          contextName, -1, 0);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INIT_REGISTER_USMUSER_CONTEXT */
 
 /*******************************************************************-o-******
  * usm_generate_OID
@@ -301,8 +311,11 @@
     if (!vp || !name || !length || !var_len)
         return NULL;
 
-    *write_method = 0;          /* assume it isnt writable for the time being */
-    *var_len = sizeof(long_ret);        /* assume an integer and change later if not */
+    /* assume it isnt writable for the time being */
+    *write_method = (WriteMethod*)0;    
+
+    /* assume an integer and change later if not */
+    *var_len = sizeof(long_ret);
 
     if (vp->magic != USMUSERSPINLOCK) {
         oid             newname[MAX_OID_LEN];
@@ -315,7 +328,7 @@
             (exact == 1 && rtest != 0)) {
             if (var_len)
                 *var_len = 0;
-            return 0;
+            return NULL;
         }
         memset(newname, 0, sizeof(newname));
         if (((int) *length) <= (int) vp->namelen || rtest == -1) {
@@ -372,6 +385,7 @@
             indexOid = usm_generate_OID(vp->name, vp->namelen, uptr, &len);
             *length = len;
             memmove(name, indexOid, len * sizeof(oid));
+
             DEBUGMSGTL(("usmUser", "Found user: %s - ", uptr->name));
             for (i = 0; i < (int) uptr->engineIDLen; i++) {
                 DEBUGMSG(("usmUser", " %x", uptr->engineID[i]));
@@ -384,10 +398,11 @@
         }
     } else {
         if (header_generic(vp, name, length, exact, var_len, write_method))
-            return 0;
+            return NULL;
     }                           /* endif -- vp->magic != USMUSERSPINLOCK */
 
     switch (vp->magic) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
     case USMUSERSPINLOCK:
         *write_method = write_usmUserSpinLock;
         long_ret = usmUserSpinLock;
@@ -458,7 +473,7 @@
         *write_method = write_usmUserPublic;
         if (uptr) {
             if (uptr->userPublicString) {
-                *var_len = strlen((char *) uptr->userPublicString);
+                *var_len = uptr->userPublicStringLen;
                 return uptr->userPublicString;
             }
             *string = 0;
@@ -483,15 +498,21 @@
             return (unsigned char *) &long_ret;
         }
         return NULL;
-
     default:
         DEBUGMSGTL(("snmpd", "unknown sub-id %d in var_usmUser\n",
                     vp->magic));
+#else /* !NETSNMP_NO_WRITE_SUPPORT */ 
+    default:
+        DEBUGMSGTL(("snmpd", "no write support for var_usmUser\n"));
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
     }
-    return 0;
+    return NULL;
 
 }                               /* end var_usmUser() */
 
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
+
 /*
  * write_usmUserSpinLock(): called when a set is performed on the
  * usmUserSpinLock object 
@@ -745,7 +766,6 @@
         }
     } else if (action == COMMIT) {
         SNMP_FREE(optr);
-        optr = NULL;
     } else if (action == FREE || action == UNDO) {
         if ((uptr = usm_parse_user(name, name_len)) != NULL) {
             if (resetOnFail) {
@@ -888,7 +908,6 @@
         uptr->authKeyLen = buflen;
     } else if (action == COMMIT) {
         SNMP_FREE(oldkey);
-        oldkey = NULL;
     } else if (action == UNDO) {
         if ((uptr = usm_parse_user(name, name_len)) != NULL && resetOnFail) {
             SNMP_FREE(uptr->authKey);
@@ -1013,7 +1032,6 @@
         }
     } else if (action == COMMIT) {
         SNMP_FREE(optr);
-        optr = NULL;
     } else if (action == FREE || action == UNDO) {
         if ((uptr = usm_parse_user(name, name_len)) != NULL) {
             if (resetOnFail) {
@@ -1138,7 +1156,6 @@
         uptr->privKeyLen = buflen;
     } else if (action == COMMIT) {
         SNMP_FREE(oldkey);
-        oldkey = NULL;
     } else if (action == UNDO) {
         if ((uptr = usm_parse_user(name, name_len)) != NULL && resetOnFail) {
             SNMP_FREE(uptr->privKey);
@@ -1164,7 +1181,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;
     }
@@ -1177,14 +1194,15 @@
         }
         if (uptr->userPublicString)
             free(uptr->userPublicString);
-        uptr->userPublicString = (u_char *) malloc(var_val_len + 1);
+        uptr->userPublicString = (u_char *) malloc(var_val_len);
         if (uptr->userPublicString == NULL) {
             return SNMP_ERR_GENERR;
         }
         memcpy(uptr->userPublicString, var_val, var_val_len);
-        uptr->userPublicString[var_val_len] = 0;
-        DEBUGMSG(("usmUser", "setting public string: %d - %s\n",
-                  var_val_len, uptr->userPublicString));
+        uptr->userPublicStringLen = var_val_len;
+        DEBUGMSG(("usmUser", "setting public string: %d - ", (int)var_val_len));
+        DEBUGMSGHEX(("usmUser", uptr->userPublicString, var_val_len));
+        DEBUGMSG(("usmUser", "\n"));
     }
     return SNMP_ERR_NOERROR;
 }                               /* end write_usmUserPublic() */
@@ -1241,7 +1259,7 @@
              * Convention apply.  
              */
             DEBUGMSGTL(("usmUser",
-                        "long_ret %d uptr->st %d uptr->status %d\n",
+                        "long_ret %ld uptr->st %d uptr->status %d\n",
                         long_ret, uptr->userStorageType,
                         uptr->userStatus));
 
@@ -1273,6 +1291,7 @@
     return SNMP_ERR_NOERROR;
 }                               /* end write_usmUserStorageType() */
 
+
 /*
  * Return 1 if enough objects have been set up to transition rowStatus to
  * notInService(2) or active(1).  
@@ -1479,7 +1498,9 @@
     }
 
     return SNMP_ERR_NOERROR;
-}
+}  /* write_usmUserStatus */
+
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
 
 #if 0
 
diff --git a/agent/mibgroup/snmpv3/usmUser.h b/agent/mibgroup/snmpv3/usmUser.h
index e920b20..53d1412 100644
--- a/agent/mibgroup/snmpv3/usmUser.h
+++ b/agent/mibgroup/snmpv3/usmUser.h
@@ -15,10 +15,10 @@
 #define USM_LENGTH_OID_MAX	66
 
 /*
- * we use header_generic and checkmib from the util_funcs module 
+ * we use header_generic from the util_funcs module
  */
 
-config_require(util_funcs)
+config_require(util_funcs/header_generic)
 config_add_mib(SNMP-USER-BASED-SM-MIB)
 
     /*
@@ -54,6 +54,7 @@
                                    size_t * engineIDLen,
                                    unsigned char **name, size_t * nameLen);
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT 
      WriteMethod     write_usmUserSpinLock;
      WriteMethod     write_usmUserCloneFrom;
      WriteMethod     write_usmUserAuthProtocol;
@@ -63,5 +64,6 @@
      WriteMethod     write_usmUserPublic;
      WriteMethod     write_usmUserStorageType;
      WriteMethod     write_usmUserStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */ 
 
 #endif                          /* _MIBGROUP_USMUSER_H */
diff --git a/agent/mibgroup/snmpv3mibs.h b/agent/mibgroup/snmpv3mibs.h
index 60f666d..0cca9a3 100644
--- a/agent/mibgroup/snmpv3mibs.h
+++ b/agent/mibgroup/snmpv3mibs.h
@@ -7,8 +7,10 @@
  */
 
 config_require(snmpv3/snmpEngine)
-config_require(snmpv3/snmpMPDStats)
-config_require(snmpv3/usmStats)
+config_version_require((snmpv3/snmpMPDStats, 5.5, snmpv3/snmpMPDStats_5_5))
+#ifdef NETSNMP_SECMOD_USM
+config_version_require((snmpv3/usmStats, 5.5, snmpv3/usmStats_5_5))
 config_require(snmpv3/usmConf)
 config_require(snmpv3/usmUser)
-#endif                          /* NSMPV3MIBS_H */
+#endif /* NETSNMP_SECMOD_USM */
+#endif                          /* SNMPV3MIBS_H */
diff --git a/agent/mibgroup/struct.h b/agent/mibgroup/struct.h
index 10b843d..d025ed0 100644
--- a/agent/mibgroup/struct.h
+++ b/agent/mibgroup/struct.h
@@ -16,9 +16,10 @@
     int             result;
     char            output[STRMAX];
     struct extensible *next;
-    unsigned long   miboid[MIBMAX];
+    oid             miboid[MIBMAX];
     size_t          miblen;
-    int             pid;
+    int             mibpriority;
+    netsnmp_pid_t   pid;
 #if defined(WIN32)
     HANDLE          tid;                /* WIN32 thread */
 #endif
diff --git a/agent/mibgroup/target.h b/agent/mibgroup/target.h
index 39fadfe..58c5b4b 100644
--- a/agent/mibgroup/target.h
+++ b/agent/mibgroup/target.h
@@ -1,5 +1,5 @@
 config_require(target/snmpTargetAddrEntry)
 config_require(target/snmpTargetParamsEntry)
 config_require(target/target)
-config_require(target/target_counters)
+config_version_require((target/target_counters, 5.5, target/target_counters_5_5))
 config_add_mib(SNMP-TARGET-MIB)
diff --git a/agent/mibgroup/target/snmpTargetAddrEntry.c b/agent/mibgroup/target/snmpTargetAddrEntry.c
index bb7302d..b1eb00a 100644
--- a/agent/mibgroup/target/snmpTargetAddrEntry.c
+++ b/agent/mibgroup/target/snmpTargetAddrEntry.c
@@ -15,26 +15,27 @@
 #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>
 
 #include "snmpTargetAddrEntry.h"
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 
 #define snmpTargetAddrOIDLen 11 /*This is base+column, 
                                  * i.e. everything but index */
 
-oid             snmpTargetAddrOID[snmpTargetAddrOIDLen] =
+static oid      snmpTargetAddrOID[snmpTargetAddrOIDLen] =
     { 1, 3, 6, 1, 6, 3, 12, 1, 2, 1, 0 };
 
 static unsigned long snmpTargetSpinLock = 0;
-static struct targetAddrTable_struct *aAddrTable = 0;
+static struct targetAddrTable_struct *aAddrTable = NULL;
 
 
+static int
+store_snmpTargetAddrEntry(int majorID, int minorID, void *serverarg,
+                          void *clientarg);
+
 /*
  * Utility routines 
  */
@@ -45,11 +46,12 @@
 }
 
 struct targetAddrTable_struct *
-get_addrForName(char *name)
+get_addrForName2(const char *name, unsigned char nameLen)
 {
     struct targetAddrTable_struct *ptr;
     for (ptr = aAddrTable; ptr != NULL; ptr = ptr->next) {
-        if (ptr->name && strcmp(ptr->name, name) == 0)
+        if (ptr->nameLen == nameLen &&
+            memcmp(ptr->nameData, name, nameLen) == 0)
             return ptr;
     }
     return NULL;
@@ -67,21 +69,22 @@
     newEntry = malloc(sizeof(*newEntry));
 
     if (newEntry) {
-        newEntry->name = 0;
+        newEntry->nameData = NULL;
+        newEntry->nameLen = 0;
 
         newEntry->tDomainLen = 0;
-        newEntry->tAddress = 0;
+        newEntry->tAddress = NULL;
 
         newEntry->timeout = 1500;
         newEntry->retryCount = 3;
 
         newEntry->tagList = strdup("");
-        newEntry->params = 0;
+        newEntry->params = NULL;
 
         newEntry->storageType = SNMP_STORAGE_NONVOLATILE;
         newEntry->rowStatus = SNMP_ROW_NONEXISTENT;
         newEntry->sess = NULL;
-        newEntry->next = 0;
+        newEntry->next = NULL;
     }
 
     return newEntry;
@@ -95,11 +98,11 @@
 void
 snmpTargetAddrTable_dispose(struct targetAddrTable_struct *reaped)
 {
-    if (reaped->sess != NULL) {
+    if (reaped->sess)
         snmp_close(reaped->sess);
-    }
-    SNMP_FREE(reaped->name);
-    SNMP_FREE(reaped->tAddress);
+    else
+        SNMP_FREE(reaped->tAddress);
+    SNMP_FREE(reaped->nameData);
     SNMP_FREE(reaped->tagList);
     SNMP_FREE(reaped->params);
 
@@ -119,34 +122,28 @@
 {
     static struct targetAddrTable_struct *curr_struct, *prev_struct;
     int             i;
-    size_t          newOIDLen = 0, currOIDLen = 0;
-    oid             newOID[128], currOID[128];
 
     /*
      * if the list is empty, add the new entry to the top 
      */
-    if ((prev_struct = curr_struct = *listPtr) == 0) {
+    if ((prev_struct = curr_struct = *listPtr) == NULL) {
         *listPtr = newEntry;
         return;
     } else {
         /*
-         * get the 'OID' value of the new entry 
-         */
-        newOIDLen = strlen(newEntry->name);
-        for (i = 0; i < (int) newOIDLen; i++) {
-            newOID[i] = newEntry->name[i];
-        }
-
-        /*
          * search through the list for an equal or greater OID value 
          */
-        while (curr_struct != 0) {
-            currOIDLen = strlen(curr_struct->name);
-            for (i = 0; i < (int) currOIDLen; i++) {
-                currOID[i] = curr_struct->name[i];
+        while (curr_struct != NULL) {
+            i = memcmp(newEntry->nameData, curr_struct->nameData,
+                       newEntry->nameLen < curr_struct->nameLen ?
+                       newEntry->nameLen : curr_struct->nameLen);
+            if (i == 0) {
+                if (newEntry->nameLen < curr_struct->nameLen)
+                    i = -1;
+                else if (newEntry->nameLen > curr_struct->nameLen)
+                    i = 1;
             }
 
-            i = snmp_oid_compare(newOID, newOIDLen, currOID, currOIDLen);
             if (i == 0) {       /* Exact match, overwrite with new struct */
                 newEntry->next = curr_struct->next;
                 /*
@@ -197,14 +194,14 @@
 {
     struct targetAddrTable_struct *tptr;
 
-    if ((tptr = *listPtr) == 0)
+    if ((tptr = *listPtr) == NULL)
         return;
     else if (tptr == oldEntry) {
         *listPtr = (*listPtr)->next;
         snmpTargetAddrTable_dispose(tptr);
         return;
     } else {
-        while (tptr->next != 0) {
+        while (tptr->next != NULL) {
             if (tptr->next == oldEntry) {
                 tptr->next = tptr->next->next;
                 snmpTargetAddrTable_dispose(oldEntry);
@@ -234,12 +231,12 @@
      */
     memcpy(newNum, baseName, baseNameLen * sizeof(oid));
 
-    for (temp_struct = aAddrTable; temp_struct != 0;
+    for (temp_struct = aAddrTable; temp_struct != NULL;
          temp_struct = temp_struct->next) {
-        for (i = 0; i < (int) strlen(temp_struct->name); i++) {
-            newNum[baseNameLen + i] = temp_struct->name[i];
+        for (i = 0; i < temp_struct->nameLen; i++) {
+            newNum[baseNameLen + i] = (unsigned char)temp_struct->nameData[i];
         }
-        myOIDLen = baseNameLen + strlen(temp_struct->name);
+        myOIDLen = baseNameLen + temp_struct->nameLen;
         i = snmp_oid_compare(name, *length, newNum, myOIDLen);
         /*
          * Assumes that the linked list sorted by OID, low to high 
@@ -252,7 +249,7 @@
             return temp_struct;
         }
     }
-    return (0);
+    return NULL;
 }                               /* search_snmpTargetAddrTable  */
 
 
@@ -277,43 +274,44 @@
  * for the snmpTargetAddrEntry mib 
  */
 
-struct variable2 snmpTargetAddrEntry_variables[] = {
-    {SNMPTARGETADDRTDOMAIN, ASN_OBJECT_ID, RWRITE,
+static const struct variable2 snmpTargetAddrEntry_variables[] = {
+    {SNMPTARGETADDRTDOMAIN, ASN_OBJECT_ID, NETSNMP_OLDAPI_RWRITE,
      var_snmpTargetAddrEntry, 1, {SNMPTARGETADDRTDOMAINCOLUMN}},
-    {SNMPTARGETADDRTADDRESS, ASN_OCTET_STR, RWRITE,
+    {SNMPTARGETADDRTADDRESS, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_snmpTargetAddrEntry, 1, {SNMPTARGETADDRTADDRESSCOLUMN}},
-    {SNMPTARGETADDRTIMEOUT, ASN_INTEGER, RWRITE,
+    {SNMPTARGETADDRTIMEOUT, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_snmpTargetAddrEntry, 1, {SNMPTARGETADDRTIMEOUTCOLUMN}},
-    {SNMPTARGETADDRRETRYCOUNT, ASN_INTEGER, RWRITE,
+    {SNMPTARGETADDRRETRYCOUNT, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_snmpTargetAddrEntry, 1, {SNMPTARGETADDRRETRYCOUNTCOLUMN}},
-    {SNMPTARGETADDRTAGLIST, ASN_OCTET_STR, RWRITE,
+    {SNMPTARGETADDRTAGLIST, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_snmpTargetAddrEntry, 1, {SNMPTARGETADDRTAGLISTCOLUMN}},
-    {SNMPTARGETADDRPARAMS, ASN_OCTET_STR, RWRITE,
+    {SNMPTARGETADDRPARAMS, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_snmpTargetAddrEntry, 1, {SNMPTARGETADDRPARAMSCOLUMN}},
-    {SNMPTARGETADDRSTORAGETYPE, ASN_INTEGER, RWRITE,
+    {SNMPTARGETADDRSTORAGETYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_snmpTargetAddrEntry, 1, {SNMPTARGETADDRSTORAGETYPECOLUMN}},
-    {SNMPTARGETADDRROWSTATUS, ASN_INTEGER, RWRITE,
+    {SNMPTARGETADDRROWSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_snmpTargetAddrEntry, 1, {SNMPTARGETADDRROWSTATUSCOLUMN}},
 
 };
 
-struct variable2 snmpTargetSpinLock_var[] = {
-    {SNMPTARGETSPINLOCK, ASN_INTEGER, RWRITE, var_targetSpinLock, 1, {1}}
+static const struct variable2 snmpTargetSpinLock_var[] = {
+    {SNMPTARGETSPINLOCK, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_targetSpinLock, 1, {1}}
 };
 
-static oid      snmpTargetSpinLock_oid[] = { 1, 3, 6, 1, 6, 3, 12, 1 };
+static const oid snmpTargetSpinLock_oid[] = { 1, 3, 6, 1, 6, 3, 12, 1 };
 
 /*
  * now load this mib into the agents mib table 
  */
-oid             snmpTargetAddrEntry_variables_oid[] =
+static const oid snmpTargetAddrEntry_variables_oid[] =
     { 1, 3, 6, 1, 6, 3, 12, 1, 2, 1 };
 
 
 void
 init_snmpTargetAddrEntry(void)
 {
-    aAddrTable = 0;
+    aAddrTable = NULL;
     DEBUGMSGTL(("snmpTargetAddrEntry", "init\n"));
     REGISTER_MIB("target/snmpTargetAddrEntry",
                  snmpTargetAddrEntry_variables, variable2,
@@ -322,7 +320,8 @@
                  variable2, snmpTargetSpinLock_oid);
 
     snmpd_register_config_handler("targetAddr",
-                                  snmpd_parse_config_targetAddr, 0, NULL);
+                                  snmpd_parse_config_targetAddr,
+                                  (void (*)(void))0, NULL);
 
     /*
      * we need to be called back later 
@@ -332,37 +331,28 @@
 
 }                               /* init_snmpTargetAddrEntry */
 
-
-int
-snmpTargetAddr_addName(struct targetAddrTable_struct *entry, char *cptr)
+void
+shutdown_snmpTargetAddrEntry(void)
 {
-    size_t          len;
-    if (cptr == 0) {
-        DEBUGMSGTL(("snmpTargetAddrEntry",
-                    "ERROR snmpTargetAddrEntry: no name in config string\n"));
-        return (0);
-    } else {
-        len = strlen(cptr);
-        /*
-         * spec check for string 1-32 
-         */
-        if (len < 1 || len > 32) {
-            DEBUGMSGTL(("snmpTargetAddrEntry",
-                        "ERROR snmpTargetAddrEntry: name out of range in config string\n"));
-            return (0);
-        }
-        entry->name = strdup(cptr);
-    }
-    return (1);
-}                               /* addName */
+    struct targetAddrTable_struct *ptr;
+    struct targetAddrTable_struct *next;
 
+    for (ptr = aAddrTable; ptr; ptr = next) {
+        next = ptr->next;
+        snmpTargetAddrTable_dispose(ptr);
+    }
+    aAddrTable = NULL;
+
+    snmp_unregister_callback(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_STORE_DATA,
+                             store_snmpTargetAddrEntry, NULL, FALSE);
+}
 
 int
 snmpTargetAddr_addTDomain(struct targetAddrTable_struct *entry, char *cptr)
 {
     size_t          len = 128;
 
-    if (cptr == 0) {
+    if (cptr == NULL) {
         DEBUGMSGTL(("snmpTargetAddrEntry",
                     "ERROR snmpTargetAddrEntry: no tDomain in config string\n"));
         return (0);
@@ -392,7 +382,7 @@
 snmpTargetAddr_addTAddress(struct targetAddrTable_struct *entry,
                            char *cptr, size_t len)
 {
-    if (cptr == 0) {
+    if (cptr == NULL) {
         DEBUGMSGTL(("snmpTargetAddrEntry",
                     "ERROR snmpTargetAddrEntry: no tAddress in config string\n"));
         return (0);
@@ -418,11 +408,11 @@
 int
 snmpTargetAddr_addTimeout(struct targetAddrTable_struct *entry, char *cptr)
 {
-    if (cptr == 0) {
+    if (cptr == NULL) {
         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);
@@ -443,11 +433,11 @@
 snmpTargetAddr_addRetryCount(struct targetAddrTable_struct *entry,
                              char *cptr)
 {
-    if (cptr == 0) {
+    if (cptr == NULL) {
         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);
@@ -470,17 +460,16 @@
 int
 snmpTargetAddr_addTagList(struct targetAddrTable_struct *entry, char *cptr)
 {
-    size_t          len;
-    if (cptr == 0) {
+    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);
@@ -496,7 +485,7 @@
 snmpTargetAddr_addParams(struct targetAddrTable_struct *entry, char *cptr)
 {
     size_t          len;
-    if (cptr == 0) {
+    if (cptr == NULL) {
         DEBUGMSGTL(("snmpTargetAddrEntry",
                     "ERROR snmpTargetAddrEntry: no params in config string\n"));
         return (0);
@@ -520,15 +509,15 @@
 snmpTargetAddr_addStorageType(struct targetAddrTable_struct *entry,
                               char *cptr)
 {
-    char            buff[1024];
-
-    if (cptr == 0) {
+    if (cptr == NULL) {
         DEBUGMSGTL(("snmpTargetAddrEntry",
-                    "ERROR snmpTargetAddrEntry: no storage type in config string\n"));
+                    "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"));
+                    "ERROR snmpTargetAddrEntry: storage type is not a digit "
+                    "in config string\n"));
         return (0);
     }
     /*
@@ -540,14 +529,13 @@
              (entry->storageType != SNMP_STORAGE_NONVOLATILE) &&
              (entry->storageType != SNMP_STORAGE_PERMANENT) &&
              (entry->storageType != SNMP_STORAGE_READONLY)) {
-        snprintf(buff, sizeof(buff),
-                "ERROR snmpTargetAddrEntry: storage type not a valid value of other(%d), volatile(%d), nonvolatile(%d), permanent(%d), or readonly(%d) in config string.\n",
-                SNMP_STORAGE_OTHER, SNMP_STORAGE_VOLATILE,
-                SNMP_STORAGE_NONVOLATILE, SNMP_STORAGE_PERMANENT,
-                SNMP_STORAGE_READONLY);
-        buff[ sizeof(buff)-1 ] = 0;
-        DEBUGMSGTL(("snmpTargetAddrEntry", buff));
-
+        DEBUGMSGTL(("snmpTargetAddrEntry",
+                    "ERROR snmpTargetAddrEntry: storage type not a valid "
+                    "value of other(%d), volatile(%d), nonvolatile(%d), "
+                    "permanent(%d), or readonly(%d) in config string.\n",
+                    SNMP_STORAGE_OTHER, SNMP_STORAGE_VOLATILE,
+                    SNMP_STORAGE_NONVOLATILE, SNMP_STORAGE_PERMANENT,
+                    SNMP_STORAGE_READONLY));
         return (0);
     }
     return (1);
@@ -558,15 +546,15 @@
 snmpTargetAddr_addRowStatus(struct targetAddrTable_struct *entry,
                             char *cptr)
 {
-    char            buff[1024];
-
-    if (cptr == 0) {
+    if (cptr == NULL) {
         DEBUGMSGTL(("snmpTargetAddrEntry",
-                    "ERROR snmpTargetAddrEntry: no Row Status in config string\n"));
+                    "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"));
+                    "ERROR snmpTargetAddrEntry: Row Status is not a digit in "
+                    "config string\n"));
         return (0);
     }
     /*
@@ -576,12 +564,11 @@
               != SNMP_ROW_ACTIVE) &&
              (entry->rowStatus != SNMP_ROW_NOTINSERVICE) &&
              (entry->rowStatus != SNMP_ROW_NOTREADY)) {
-        snprintf(buff, sizeof(buff),
-                "ERROR snmpTargetAddrEntry: Row Status is not a valid value of active(%d), notinservice(%d), or notready(%d) in config string.\n",
-                SNMP_ROW_ACTIVE, SNMP_ROW_NOTINSERVICE, SNMP_ROW_NOTREADY);
-        buff[ sizeof(buff)-1 ] = 0;
-        DEBUGMSGTL(("snmpTargetAddrEntry", buff));
-
+        DEBUGMSGTL(("snmpTargetAddrEntry",
+                    "ERROR snmpTargetAddrEntry: Row Status is not a valid "
+                    "value of active(%d), notinservice(%d), or notready(%d) "
+                    "in config string.\n",
+                    SNMP_ROW_ACTIVE, SNMP_ROW_NOTINSERVICE, SNMP_ROW_NOTREADY));
         return (0);
     }
     return (1);
@@ -591,24 +578,42 @@
 void
 snmpd_parse_config_targetAddr(const char *token, char *char_ptr)
 {
-    char           *cptr = char_ptr, buff[1024];
+    const char     *cptr = char_ptr;
+    char            buff[1024], *bptr;
     struct targetAddrTable_struct *newEntry;
     int             i;
+    size_t          bufl;
 
     newEntry = snmpTargetAddrTable_create();
 
-    cptr = copy_nword(cptr, buff, sizeof(buff));
-    if (snmpTargetAddr_addName(newEntry, buff) == 0) {
+    cptr = skip_white_const(cptr);
+    if (cptr == NULL) {
+        DEBUGMSGTL(("snmpTargetAddrEntry",
+                    "ERROR snmpTargetAddrEntry: no name in config string\n"));
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
-    cptr = copy_nword(cptr, buff, sizeof(buff));
+
+    bufl = 0;
+    cptr = read_config_read_octet_string_const(cptr,
+                                               (u_char**)&newEntry->nameData,
+                                               &bufl);
+    if (bufl < 1 || bufl > 32) {
+        DEBUGMSGTL(("snmpTargetAddrEntry",
+                    "ERROR snmpTargetAddrEntry: name out of range in config "
+                    "string\n"));
+        snmpTargetAddrTable_dispose(newEntry);
+        return;
+    }
+    newEntry->nameLen = bufl;
+
+    cptr = copy_nword_const(cptr, buff, sizeof(buff));
     if (snmpTargetAddr_addTDomain(newEntry, buff) == 0) {
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
     cptr =
-        read_config_read_octet_string(cptr,
+        read_config_read_octet_string_const(cptr,
                                       (u_char **) & newEntry->tAddress,
                                       &newEntry->tAddressLen);
     if (!cptr || !(newEntry->tAddress)) {
@@ -617,51 +622,53 @@
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
-    cptr = copy_nword(cptr, buff, sizeof(buff));
+    cptr = copy_nword_const(cptr, buff, sizeof(buff));
     if (snmpTargetAddr_addTimeout(newEntry, buff) == 0) {
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
-    cptr = copy_nword(cptr, buff, sizeof(buff));
+    cptr = copy_nword_const(cptr, buff, sizeof(buff));
     if (snmpTargetAddr_addRetryCount(newEntry, buff) == 0) {
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
-    cptr = copy_nword(cptr, buff, sizeof(buff));
+    cptr = copy_nword_const(cptr, buff, sizeof(buff));
     if (snmpTargetAddr_addTagList(newEntry, buff) == 0) {
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
-    cptr = copy_nword(cptr, buff, sizeof(buff));
+    cptr = copy_nword_const(cptr, buff, sizeof(buff));
     if (snmpTargetAddr_addParams(newEntry, buff) == 0) {
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
-    cptr = copy_nword(cptr, buff, sizeof(buff));
+    cptr = copy_nword_const(cptr, buff, sizeof(buff));
     if (snmpTargetAddr_addStorageType(newEntry, buff) == 0) {
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
-    cptr = copy_nword(cptr, buff, sizeof(buff));
+    cptr = copy_nword_const(cptr, buff, sizeof(buff));
     if (snmpTargetAddr_addRowStatus(newEntry, buff) == 0) {
         snmpTargetAddrTable_dispose(newEntry);
         return;
     }
-    snprintf(buff, sizeof(buff), "snmp_parse_config_targetAddr, read: %s\n",
-            newEntry->name);
-    buff[ sizeof(buff)-1 ] = 0;
+    bptr = buff;
+    bptr += sprintf(bptr, "snmp_parse_config_targetAddr, read: ");
+    bptr = read_config_save_octet_string(bptr, (u_char*)newEntry->nameData,
+                                         newEntry->nameLen);
+    *bptr++ = '\n';
     for (i = 0; i < newEntry->tDomainLen; i++) {
-        snprintf(&buff[strlen(buff)], sizeof(buff)-strlen(buff)-1,
-                 ".%d", (int) newEntry->tDomain[i]);
-        buff[ sizeof(buff)-1 ] = 0;
+        bptr += snprintf(bptr, buff + sizeof(buff) - bptr,
+                         ".%d", (int) newEntry->tDomain[i]);
     }
-    snprintf(&buff[strlen(buff)], sizeof(buff)-strlen(buff)-1,
-            " %s %d %d %s %s %d %d\n",
-            newEntry->tAddress, newEntry->timeout, newEntry->retryCount,
-            newEntry->tagList, newEntry->params, newEntry->storageType,
-            newEntry->rowStatus);
-    buff[ sizeof(buff)-1 ] = 0;
-    DEBUGMSGTL(("snmpTargetAddrEntry", buff));
+    bptr += snprintf(bptr, buff + sizeof(buff) - bptr,
+                     " %s %d %d %s %s %d %d\n",
+                     newEntry->tAddress, newEntry->timeout,
+                     newEntry->retryCount, newEntry->tagList,
+                     newEntry->params, newEntry->storageType,
+                     newEntry->rowStatus);
+    buff[ sizeof(buff) - 1 ] = 0;
+    DEBUGMSGTL(("snmpTargetAddrEntry", "%s", buff));
 
     snmpTargetAddrTable_addToList(newEntry, &aAddrTable);
 }                               /* snmpd_parse_config_target */
@@ -677,53 +684,48 @@
  * for this MIB table. It writes out all the non-volatile rows 
  * to permanent storage on a shutdown  
  */
-int
+static int
 store_snmpTargetAddrEntry(int majorID, int minorID, void *serverarg,
                           void *clientarg)
 {
-    struct targetAddrTable_struct *curr_struct;
-    char            line[1024];
+    const struct targetAddrTable_struct *curr_struct;
+    char            line[1024], *cur, *ep = line + sizeof(line);
     int             i;
 
-    if ((curr_struct = aAddrTable) != 0) {
-        while (curr_struct != 0) {
-            if ((curr_struct->storageType == SNMP_STORAGE_NONVOLATILE ||
-                 curr_struct->storageType == SNMP_STORAGE_PERMANENT)
-                &&
-                (curr_struct->rowStatus == SNMP_ROW_ACTIVE ||
-                 curr_struct->rowStatus == SNMP_ROW_NOTINSERVICE)) {
-                snprintf(line, sizeof(line),
-                        "targetAddr %s ", curr_struct->name);
-                line[ sizeof(line)-1 ] = 0;
-                for (i = 0; i < curr_struct->tDomainLen; i++) {
-                    snprintf(&line[strlen(line)],
-                            sizeof(line)-strlen(line)-1, ".%i",
-                            (int) curr_struct->tDomain[i]);
-                    line[ sizeof(line)-1 ] = 0;
-                }
-                strlcat(line, " ", sizeof(line));
-                read_config_save_octet_string(&line[strlen(line)],
-                                              curr_struct->tAddress,
-                                              curr_struct->tAddressLen);
-
-                snprintf(&line[strlen(line)], sizeof(line)-strlen(line)-1,
-                        " %i %i \"%s\" %s %i %i",
-                        curr_struct->timeout,
-                        curr_struct->retryCount, curr_struct->tagList,
-                        curr_struct->params, curr_struct->storageType,
-                        curr_struct->rowStatus);
-                line[ sizeof(line)-1 ] = 0;
-
-                /*
-                 * store to file 
-                 */
-                snmpd_store_config(line);
+    curr_struct = aAddrTable;
+    while (curr_struct != NULL) {
+        if ((curr_struct->storageType == SNMP_STORAGE_NONVOLATILE ||
+             curr_struct->storageType == SNMP_STORAGE_PERMANENT) &&
+            (curr_struct->rowStatus == SNMP_ROW_ACTIVE ||
+             curr_struct->rowStatus == SNMP_ROW_NOTINSERVICE)) {
+            cur = line + snprintf(line, sizeof(line), "targetAddr ");
+            cur = read_config_save_octet_string(
+                cur, (u_char*)curr_struct->nameData, curr_struct->nameLen);
+            *cur++ = ' ';
+            for (i = 0; i < curr_struct->tDomainLen; i++) {
+                cur += snprintf(cur, ep - cur, ".%i",
+                                (int) curr_struct->tDomain[i]);
             }
-            curr_struct = curr_struct->next;
-        }
-    }
-    return SNMPERR_SUCCESS;
+            *cur++ = ' ';
+            cur = read_config_save_octet_string(
+                cur, curr_struct->tAddress, curr_struct->tAddressLen);
+            cur += snprintf(cur, ep - cur, " %i %i \"%s\" %s %i %i",
+                            curr_struct->timeout,
+                            curr_struct->retryCount, curr_struct->tagList,
+                            curr_struct->params, curr_struct->storageType,
+                            curr_struct->rowStatus);
+            line[ sizeof(line)-1 ] = 0;
 
+            /*
+             * store to file
+             */
+            snmpd_store_config(line);
+        }
+
+        curr_struct = curr_struct->next;
+    }
+
+    return SNMPERR_SUCCESS;
 }                               /*  store_snmpTargetAddrEntry  */
 
 
@@ -757,6 +759,7 @@
      */
 
     switch (vp->magic) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMPTARGETADDRTDOMAIN:
         *write_method = write_snmpTargetAddrTDomain;
         break;
@@ -781,19 +784,21 @@
     case SNMPTARGETADDRROWSTATUS:
         *write_method = write_snmpTargetAddrRowStatus;
         break;
+#endif /*  !NETSNMP_NO_WRITE_SUPPORT */
     default:
         *write_method = NULL;
     }
 
-    *var_len = sizeof(long_ret);        /* assume an integer and change later if not */
+    /* assume an integer and change later if not */
+    *var_len = sizeof(long_ret);
 
     /*
      * look for OID in current table 
      */
     if ((temp_struct = search_snmpTargetAddrTable(vp->name, vp->namelen,
                                                   name, length,
-                                                  exact)) == 0) {
-        return (0);
+                                                  exact)) == NULL) {
+        return NULL;
     }
 
     /*
@@ -805,7 +810,7 @@
     switch (vp->magic) {
     case SNMPTARGETADDRTDOMAIN:
         if (temp_struct->tDomainLen <= 0) {
-            return (0);
+            return NULL;
         } else {
             for (i = 0; i < temp_struct->tDomainLen; i++) {
                 objid[i] = temp_struct->tDomain[i];
@@ -815,8 +820,8 @@
         return (unsigned char *) objid;
 
     case SNMPTARGETADDRTADDRESS:
-        if (temp_struct->tAddress == 0)
-            return (0);
+        if (temp_struct->tAddress == NULL)
+            return NULL;
         *var_len = temp_struct->tAddressLen;
         return (unsigned char *) temp_struct->tAddress;
 
@@ -830,7 +835,7 @@
 
     case SNMPTARGETADDRTAGLIST:
         if (temp_struct->tagList != NULL) {
-            strcpy(string, temp_struct->tagList);
+            strlcpy(string, temp_struct->tagList, sizeof(string));
             *var_len = strlen(string);
             return (unsigned char *) string;
         } else {
@@ -838,9 +843,9 @@
         }
 
     case SNMPTARGETADDRPARAMS:
-        if (temp_struct->params == 0)
-            return (0);
-        strcpy(string, temp_struct->params);
+        if (temp_struct->params == NULL)
+            return NULL;
+        strlcpy(string, temp_struct->params, sizeof(string));
         *var_len = strlen(string);
         return (unsigned char *) string;
 
@@ -857,10 +862,12 @@
                     "unknown sub-id %d in var_snmpTargetAddrEntry\n",
                     vp->magic));
     }
-    return 0;
+
+    return NULL;
 }                               /* var_snmpTargetAddrEntry */
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 write_snmpTargetAddrTDomain(int action,
                             u_char * var_val,
@@ -890,7 +897,7 @@
         if ((target =
              search_snmpTargetAddrTable(snmpTargetAddrOID,
                                         snmpTargetAddrOIDLen, name,
-                                        &name_len, 1)) == 0) {
+                                        &name_len, 1)) == NULL) {
             DEBUGMSGTL(("snmpTargetAddrEntry",
                         "write to snmpTargetAddrTDomain: BAD OID!\n"));
             return SNMP_ERR_INCONSISTENTNAME;
@@ -925,6 +932,8 @@
                 target->rowStatus = SNMP_ROW_NOTINSERVICE;
             }
         }
+    } else if (action == COMMIT) {
+        snmp_store_needed(NULL);
     } else if (action == FREE || action == UNDO) {
         /*
          * Try to undo the SET here (abnormal usage of FREE clause)  
@@ -976,7 +985,7 @@
         if ((target =
              search_snmpTargetAddrTable(snmpTargetAddrOID,
                                         snmpTargetAddrOIDLen, name,
-                                        &name_len, 1)) == 0) {
+                                        &name_len, 1)) == NULL) {
             DEBUGMSGTL(("snmpTargetAddrEntry",
                         "write to snmpTargetAddrTAddress: BAD OID!\n"));
             return SNMP_ERR_INCONSISTENTNAME;
@@ -1012,6 +1021,7 @@
     } else if (action == COMMIT) {
         SNMP_FREE(old_addr);
         old_addr = NULL;
+        snmp_store_needed(NULL);
     } else if (action == FREE || action == UNDO) {
         /*
          * Try to undo the SET here (abnormal usage of FREE clause)  
@@ -1082,7 +1092,7 @@
         if ((temp_struct =
              search_snmpTargetAddrTable(snmpTargetAddrOID,
                                         snmpTargetAddrOIDLen, name, &name_len,
-                                        1)) == 0) {
+                                        1)) == NULL) {
             DEBUGMSGTL(("snmpTargetAddrEntry",
                         "write to snmpTargetAddrTimeout : BAD OID\n"));
             return SNMP_ERR_NOSUCHNAME;
@@ -1107,6 +1117,7 @@
                                         1)) != NULL) {
             temp_struct->timeout = long_ret;
         }
+        snmp_store_needed(NULL);
     }
 
     return SNMP_ERR_NOERROR;
@@ -1164,6 +1175,7 @@
                                                  1)) != NULL) {
             target->retryCount = long_ret;
         }
+        snmp_store_needed(NULL);
     }
 
     return SNMP_ERR_NOERROR;
@@ -1254,6 +1266,7 @@
     } else if (action == COMMIT) {
         SNMP_FREE(old_tlist);
         old_tlist = NULL;
+        snmp_store_needed(NULL);
     } else if (action == FREE || action == UNDO) {
         snmpTargetAddrOID[snmpTargetAddrOIDLen - 1] =
             SNMPTARGETADDRTAGLISTCOLUMN;
@@ -1296,7 +1309,7 @@
         if ((target =
              search_snmpTargetAddrTable(snmpTargetAddrOID,
                                         snmpTargetAddrOIDLen, name,
-                                        &name_len, 1)) == 0) {
+                                        &name_len, 1)) == NULL) {
             DEBUGMSGTL(("snmpTargetAddrEntry",
                         "write to snmpTargetAddrParams: BAD OID!\n"));
             return SNMP_ERR_INCONSISTENTNAME;
@@ -1331,6 +1344,7 @@
     } else if (action == COMMIT) {
         SNMP_FREE(old_params);
         old_params = NULL;
+        snmp_store_needed(NULL);
     } else if (action == FREE || action == UNDO) {
         /*
          * Try to undo the SET here (abnormal usage of FREE clause)  
@@ -1417,6 +1431,7 @@
                                                  1)) != NULL) {
             target->storageType = long_ret;
         }
+        snmp_store_needed(NULL);
     }
 
     return SNMP_ERR_NOERROR;
@@ -1445,18 +1460,18 @@
         temp_struct = snmpTargetAddrTable_create();
         if (!temp_struct)
             return SNMP_ERR_GENERR;
-        temp_struct->name = (char *) malloc(newNameLen + 1);
-        if (temp_struct->name == NULL) {
+        temp_struct->nameData = (char *) malloc(newNameLen);
+        if (temp_struct->nameData == NULL) {
             SNMP_FREE(temp_struct->tagList);
             SNMP_FREE(temp_struct);
             return 0;
         }
 
+        temp_struct->nameLen = newNameLen;
         for (i = 0; i < (int) newNameLen; i++) {
-            temp_struct->name[i] = (char) name[i + snmpTargetAddrOIDLen];
+            temp_struct->nameData[i] = (char) name[i + snmpTargetAddrOIDLen];
         }
 
-        temp_struct->name[newNameLen] = '\0';
         temp_struct->rowStatus = SNMP_ROW_NOTREADY;
 
         snmpTargetAddrTable_addToList(temp_struct, &aAddrTable);
@@ -1504,7 +1519,7 @@
         if (name_len < snmpTargetAddrOIDLen + 1 ||
             name_len > snmpTargetAddrOIDLen + 32) {
             DEBUGMSGTL(("snmpTargetAddrEntry", "bad index length %d\n",
-                        name_len - snmpTargetAddrOIDLen));
+                        (int)(name_len - snmpTargetAddrOIDLen)));
             return SNMP_ERR_NOCREATION;
         }
 
@@ -1606,6 +1621,7 @@
                 }
             }
         }
+        snmp_store_needed(NULL);
     } else if (action == UNDO || action == FREE) {
         snmpTargetAddrOID[snmpTargetAddrOIDLen - 1] =
             SNMPTARGETADDRROWSTATUSCOLUMN;
@@ -1651,6 +1667,7 @@
     return SNMP_ERR_NOERROR;
 }
 
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 
 u_char         *
@@ -1662,12 +1679,20 @@
 {
     if (header_generic(vp, name, length, exact, var_len, write_method) ==
         MATCH_FAILED) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         *write_method = write_targetSpinLock;
+#else
+		*write_method = NULL;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         return NULL;
     }
     if (vp->magic == SNMPTARGETSPINLOCK) {
-        *write_method = write_targetSpinLock;
         *var_len = sizeof(unsigned long);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        *write_method = write_targetSpinLock;
+#else
+		*write_method = NULL;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         return (u_char *) & (snmpTargetSpinLock);
     }
     return NULL;
diff --git a/agent/mibgroup/target/snmpTargetAddrEntry.h b/agent/mibgroup/target/snmpTargetAddrEntry.h
index b1b5ad1..0b70af5 100644
--- a/agent/mibgroup/target/snmpTargetAddrEntry.h
+++ b/agent/mibgroup/target/snmpTargetAddrEntry.h
@@ -10,10 +10,10 @@
 #define _MIBGROUP_SNMPTARGETADDRENTRY_H
 
 /*
- * we use header_generic and checkmib from the util_funcs module 
+ * we use header_generic from the util_funcs module
  */
 
-config_require(util_funcs)
+config_require(util_funcs/header_generic)
 
 
     /*
@@ -46,7 +46,8 @@
      * structure definitions 
      */
      struct targetAddrTable_struct {
-         char           *name;
+         char           *nameData;
+         unsigned char   nameLen;
          oid             tDomain[MAX_OID_LEN];
          int             tDomainLen;
          unsigned char  *tAddress;
@@ -67,19 +68,19 @@
  */
 
      void            init_snmpTargetAddrEntry(void);
-     int             store_snmpTargetAddrEntry(int majorID, int minorID,
-                                               void *serverarg,
-                                               void *clientarg);
+     void            shutdown_snmpTargetAddrEntry(void);
      FindVarMethod   var_snmpTargetAddrEntry;
 
      struct targetAddrTable_struct *get_addrTable(void);
-     struct targetAddrTable_struct *get_addrForName(char *name);
+     struct targetAddrTable_struct *get_addrForName2(const char *name,
+                                                     unsigned char nameLen);
      struct targetAddrTable_struct *snmpTargetAddrTable_create(void);
      void            snmpTargetAddrTable_add(struct targetAddrTable_struct
                                              *newEntry);
 
      void            snmpd_parse_config_targetAddr(const char *, char *);
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_snmpTargetAddrTDomain;
      WriteMethod     write_snmpTargetAddrTAddress;
      WriteMethod     write_snmpTargetAddrTimeout;
@@ -89,7 +90,8 @@
      WriteMethod     write_snmpTargetAddrStorageType;
      WriteMethod     write_snmpTargetAddrRowStatus;
 
-     FindVarMethod   var_targetSpinLock;
      WriteMethod     write_targetSpinLock;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+     FindVarMethod   var_targetSpinLock;
 
 #endif                          /* _MIBGROUP_SNMPTARGETADDRENTRY_H */
diff --git a/agent/mibgroup/target/snmpTargetParamsEntry.c b/agent/mibgroup/target/snmpTargetParamsEntry.c
index 06936b1..4e1f4e2 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>
@@ -30,7 +27,7 @@
 oid             snmpTargetParamsOID[snmpTargetParamsOIDLen] =
     { 1, 3, 6, 1, 6, 3, 12, 1, 3, 1, 0 };
 
-static struct targetParamTable_struct *aPTable = 0;
+static struct targetParamTable_struct *aPTable = NULL;
 
 
 /*
@@ -51,16 +48,16 @@
     newEntry = (struct targetParamTable_struct *)
         malloc(sizeof(struct targetParamTable_struct));
 
-    newEntry->paramName = 0;
+    newEntry->paramName = NULL;
     newEntry->mpModel = -1;
 
     newEntry->secModel = -1;
-    newEntry->secName = 0;
+    newEntry->secName = NULL;
     newEntry->secLevel = -1;
 
     newEntry->storageType = SNMP_STORAGE_NONVOLATILE;
     newEntry->rowStatus = SNMP_ROW_NONEXISTENT;
-    newEntry->next = 0;
+    newEntry->next = NULL;
     return newEntry;
 }
 
@@ -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 {
@@ -113,7 +110,7 @@
         /*
          * search through the list for an equal or greater OID value 
          */
-        while (curr_struct != 0) {
+        while (curr_struct != NULL) {
             currOIDLen = strlen(curr_struct->paramName);
             for (i = 0; i < (int) currOIDLen; i++) {
                 currOID[i] = curr_struct->paramName[i];
@@ -168,14 +165,14 @@
 {
     struct targetParamTable_struct *tptr;
 
-    if ((tptr = *listPtr) == 0)
+    if ((tptr = *listPtr) == NULL)
         return;
     else if (tptr == oldEntry) {
         *listPtr = (*listPtr)->next;
         snmpTargetParamTable_dispose(tptr);
         return;
     } else {
-        while (tptr->next != 0) {
+        while (tptr->next != NULL) {
             if (tptr->next == oldEntry) {
                 tptr->next = tptr->next->next;
                 snmpTargetParamTable_dispose(oldEntry);
@@ -205,7 +202,7 @@
      */
     memcpy(newNum, baseName, baseNameLen * sizeof(oid));
 
-    for (temp_struct = aPTable; temp_struct != 0;
+    for (temp_struct = aPTable; temp_struct != NULL;
          temp_struct = temp_struct->next) {
         for (i = 0; i < (int) strlen(temp_struct->paramName); i++) {
             newNum[baseNameLen + i] = temp_struct->paramName[i];
@@ -223,7 +220,7 @@
             return temp_struct;
         }
     }
-    return (0);
+    return NULL;
 }                               /* search_snmpTargetParamsTable */
 
 
@@ -236,7 +233,7 @@
 snmpTargetParams_rowStatusCheck(struct targetParamTable_struct *entry)
 {
     if ((entry->mpModel < 0) || (entry->secModel < 0) ||
-        (entry->secLevel < 0) || (entry->secName == 0))
+        (entry->secLevel < 0) || (entry->secName == NULL))
         return 0;
     else
         return 1;
@@ -254,17 +251,17 @@
  */
 
 struct variable2 snmpTargetParamsEntry_variables[] = {
-    {SNMPTARGETPARAMSMPMODEL, ASN_INTEGER, RWRITE,
+    {SNMPTARGETPARAMSMPMODEL, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_snmpTargetParamsEntry, 1, {SNMPTARGETPARAMSMPMODELCOLUMN}},
-    {SNMPTARGETPARAMSSECURITYMODEL, ASN_INTEGER, RWRITE,
+    {SNMPTARGETPARAMSSECURITYMODEL, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_snmpTargetParamsEntry, 1, {SNMPTARGETPARAMSSECURITYMODELCOLUMN}},
-    {SNMPTARGETPARAMSSECURITYNAME, ASN_OCTET_STR, RWRITE,
+    {SNMPTARGETPARAMSSECURITYNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
      var_snmpTargetParamsEntry, 1, {SNMPTARGETPARAMSSECURITYNAMECOLUMN}},
-    {SNMPTARGETPARAMSSECURITYLEVEL, ASN_INTEGER, RWRITE,
+    {SNMPTARGETPARAMSSECURITYLEVEL, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_snmpTargetParamsEntry, 1, {SNMPTARGETPARAMSSECURITYLEVELCOLUMN}},
-    {SNMPTARGETPARAMSSTORAGETYPE, ASN_INTEGER, RWRITE,
+    {SNMPTARGETPARAMSSTORAGETYPE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_snmpTargetParamsEntry, 1, {SNMPTARGETPARAMSSTORAGETYPECOLUMN}},
-    {SNMPTARGETPARAMSROWSTATUS, ASN_INTEGER, RWRITE,
+    {SNMPTARGETPARAMSROWSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
      var_snmpTargetParamsEntry, 1, {SNMPTARGETPARAMSROWSTATUSCOLUMN}}
 };
 
@@ -278,15 +275,15 @@
 void
 init_snmpTargetParamsEntry(void)
 {
-    aPTable = 0;
+    aPTable = NULL;
 
     REGISTER_MIB("target/snmpTargetParamsEntry",
                  snmpTargetParamsEntry_variables, variable2,
                  snmpTargetParamsEntry_variables_oid);
 
     snmpd_register_config_handler("targetParams",
-                                  snmpd_parse_config_targetParams, 0,
-                                  NULL);
+                                  snmpd_parse_config_targetParams,
+                                  (void (*)(void))0, NULL);
 
     /*
      * we need to be called back later 
@@ -295,13 +292,20 @@
                            store_snmpTargetParamsEntry, NULL);
 }                               /*  init_snmpTargetParmsEntry  */
 
+void
+shutdown_snmpTargetParamsEntry(void)
+{
+    while (aPTable)
+	snmpTargetParamTable_remFromList(aPTable, &aPTable);
+}
+
 
 int
 snmpTargetParams_addParamName(struct targetParamTable_struct *entry,
                               char *cptr)
 {
     size_t          len;
-    if (cptr == 0) {
+    if (cptr == NULL) {
         DEBUGMSGTL(("snmpTargetParamsEntry",
                     "ERROR snmpTargetParamsEntry: no param name in config string\n"));
         return (0);
@@ -325,11 +329,11 @@
 snmpTargetParams_addMPModel(struct targetParamTable_struct *entry,
                             char *cptr)
 {
-    if (cptr == 0) {
+    if (cptr == NULL) {
         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);
@@ -350,11 +354,11 @@
 snmpTargetParams_addSecModel(struct targetParamTable_struct *entry,
                              char *cptr)
 {
-    if (cptr == 0) {
+    if (cptr == NULL) {
         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);
@@ -376,7 +380,7 @@
 snmpTargetParams_addSecName(struct targetParamTable_struct *entry,
                             char *cptr)
 {
-    if (cptr == 0) {
+    if (cptr == NULL) {
         DEBUGMSGTL(("snmpTargetParamsEntry",
                     "ERROR snmpTargetParamsEntry: no security name in config string\n"));
         return (0);
@@ -391,11 +395,11 @@
 snmpTargetParams_addSecLevel(struct targetParamTable_struct *entry,
                              char *cptr)
 {
-    if (cptr == 0) {
+    if (cptr == NULL) {
         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);
@@ -417,11 +421,11 @@
 snmpTargetParams_addStorageType(struct targetParamTable_struct *entry,
                                 char *cptr)
 {
-    if (cptr == 0) {
+    if (cptr == NULL) {
         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);
@@ -455,11 +459,11 @@
 snmpTargetParams_addRowStatus(struct targetParamTable_struct *entry,
                               char *cptr)
 {
-    if (cptr == 0) {
+    if (cptr == NULL) {
         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);
@@ -535,13 +539,11 @@
         snmpTargetParamTable_dispose(newEntry);
         return;
     }
-    snprintf(buff, sizeof(buff),
-            "snmp_parse_config_targetParams, read: %s %d %d %s %d %d %d\n",
-            newEntry->paramName, newEntry->mpModel, newEntry->secModel,
-            newEntry->secName, newEntry->secLevel, newEntry->storageType,
-            newEntry->rowStatus);
-    buff[ sizeof(buff)-1 ] = 0;
-    DEBUGMSGTL(("snmpTargetParamsEntry", buff));
+    DEBUGMSGTL(("snmpTargetParamsEntry",
+                "snmp_parse_config_targetParams, read: %s %d %d %s %d %d %d\n",
+                newEntry->paramName, newEntry->mpModel, newEntry->secModel,
+                newEntry->secName, newEntry->secLevel, newEntry->storageType,
+                newEntry->rowStatus));
 
     update_timestamp(newEntry);
     snmpTargetParamTable_addToList(newEntry, &aPTable);
@@ -566,8 +568,8 @@
     char            line[1024];
 
     strcpy(line, "");
-    if ((curr_struct = aPTable) != 0) {
-        while (curr_struct != 0) {
+    if ((curr_struct = aPTable) != NULL) {
+        while (curr_struct != NULL) {
             if ((curr_struct->storageType == SNMP_STORAGE_NONVOLATILE ||
                  curr_struct->storageType == SNMP_STORAGE_PERMANENT)
                 &&
@@ -613,6 +615,7 @@
     struct targetParamTable_struct *temp_struct;
 
     switch (vp->magic) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMPTARGETPARAMSMPMODEL:
         *write_method = write_snmpTargetParamsMPModel;
         break;
@@ -631,19 +634,21 @@
     case SNMPTARGETPARAMSROWSTATUS:
         *write_method = write_snmpTargetParamsRowStatus;
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     default:
         *write_method = NULL;
     }
 
-    *var_len = sizeof(long_ret);        /* assume an integer and change later if not */
+    /* assume an integer and change later if not */
+    *var_len = sizeof(long_ret);
 
     /*
      * look for OID in current table 
      */
     if ((temp_struct = search_snmpTargetParamsTable(vp->name, vp->namelen,
                                                     name, length,
-                                                    exact)) == 0) {
-        return (0);
+                                                    exact)) == NULL) {
+        return NULL;
     }
 
     /*
@@ -659,7 +664,7 @@
          * if unset value, (i.e. new row) 
          */
         if (temp_struct->mpModel == -1)
-            return (0);
+            return NULL;
         long_ret = temp_struct->mpModel;
         return (unsigned char *) &long_ret;
 
@@ -668,7 +673,7 @@
          * if unset value, (i.e. new row) 
          */
         if (temp_struct->secModel == -1)
-            return (0);
+            return NULL;
         long_ret = temp_struct->secModel;
         return (unsigned char *) &long_ret;
 
@@ -676,8 +681,8 @@
         /*
          * if unset value, (i.e. new row) 
          */
-        if (temp_struct->secName == 0)
-            return (0);
+        if (temp_struct->secName == NULL)
+            return NULL;
         /*
          * including null character. 
          */
@@ -691,7 +696,7 @@
          * if unset value, (i.e. new row) 
          */
         if (temp_struct->secLevel == -1)
-            return (0);
+            return NULL;
         long_ret = temp_struct->secLevel;
         return (unsigned char *) &long_ret;
 
@@ -708,9 +713,12 @@
                     "unknown sub-id %d in var_snmpTargetParamsEntry\n",
                     vp->magic));
     }
-    return 0;
+
+    return NULL;
 }                               /* var_snmpTargetParamsEntry */
 
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 /*
  * Assign a value to the mpModel variable.  
  */
@@ -842,7 +850,7 @@
         }
         if (find_sec_mod(long_ret) == NULL && long_ret >= 3) {
             DEBUGMSGTL(("snmpTargetParamsEntry",
-                        "write to snmpTargetParamsSecModel: secModel %d unsupported\n",
+                        "write to snmpTargetParamsSecModel: secModel %ld unsupported\n",
                         long_ret));
             return SNMP_ERR_INCONSISTENTVALUE;
         }
@@ -1116,7 +1124,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;
@@ -1273,7 +1281,7 @@
         if (name_len < snmpTargetParamsOIDLen + 1 ||
             name_len > snmpTargetParamsOIDLen + 32) {
             DEBUGMSGTL(("snmpTargetParamsEntry", "bad index length %d\n",
-                        name_len - snmpTargetParamsOIDLen));
+                        (int)(name_len - snmpTargetParamsOIDLen)));
             return SNMP_ERR_NOCREATION;
         }
 
@@ -1366,6 +1374,7 @@
                 update_timestamp(params);
             }
         }
+        snmp_store_needed(NULL);
     } else if (action == UNDO || action == FREE) {
         snmpTargetParamsOID[snmpTargetParamsOIDLen - 1] =
             SNMPTARGETPARAMSROWSTATUSCOLUMN;
@@ -1382,6 +1391,9 @@
     return SNMP_ERR_NOERROR;
 }
 
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+
 struct targetParamTable_struct *
 get_paramEntry(char *name)
 {
diff --git a/agent/mibgroup/target/snmpTargetParamsEntry.h b/agent/mibgroup/target/snmpTargetParamsEntry.h
index 9b5ab85..bd30582 100644
--- a/agent/mibgroup/target/snmpTargetParamsEntry.h
+++ b/agent/mibgroup/target/snmpTargetParamsEntry.h
@@ -1,77 +1,75 @@
 
-/*
- * This file was generated by mib2c and is intended for use as a mib module
- * for the ucd-snmp snmpd agent. Edited by Michael Baer
- * 
- * last changed 2/2/99.
- */
-
-#ifndef _MIBGROUP_SNMPTARGETPARAMSENTRY_H
-#define _MIBGROUP_SNMPTARGETPARAMSENTRY_H
-
-/*
- * we use header_generic and checkmib from the util_funcs module 
- */
-
-config_require(util_funcs)
-
-    /*
-     * Magic number definitions: 
-     */
-#define   SNMPTARGETPARAMSMPMODEL        1
-#define   SNMPTARGETPARAMSSECURITYMODEL  2
-#define   SNMPTARGETPARAMSSECURITYNAME   3
-#define   SNMPTARGETPARAMSSECURITYLEVEL  4
-#define   SNMPTARGETPARAMSSTORAGETYPE    5
-#define   SNMPTARGETPARAMSROWSTATUS      6
-#define   SNMPTARGETPARAMSMPMODELCOLUMN        2
-#define   SNMPTARGETPARAMSSECURITYMODELCOLUMN  3
-#define   SNMPTARGETPARAMSSECURITYNAMECOLUMN   4
-#define   SNMPTARGETPARAMSSECURITYLEVELCOLUMN  5
-#define   SNMPTARGETPARAMSSTORAGETYPECOLUMN    6
-#define   SNMPTARGETPARAMSROWSTATUSCOLUMN      7
-    /*
-     * structure definitions 
-     */
-     struct targetParamTable_struct {
-         char           *paramName;
-         int             mpModel;
-         int             secModel;
-         char           *secName;
-         int             secLevel;
-         int             storageType;
-         int             rowStatus;
-         struct targetParamTable_struct *next;
-         time_t          updateTime;
-     };
-
-/*
- * utility functions 
- */
-     struct targetParamTable_struct *get_paramEntry(char *name);
-     void            snmpTargetParamTable_add(struct
-                                              targetParamTable_struct
-                                              *newEntry);
-     struct targetParamTable_struct *snmpTargetParamTable_create(void);
-
-/*
- * function definitions 
- */
-
-     void            init_snmpTargetParamsEntry(void);
-     int             store_snmpTargetParamsEntry(int majorID, int minorID,
-                                                 void *serverarg,
-                                                 void *clientarg);
-     extern FindVarMethod var_snmpTargetParamsEntry;
-
-     void            snmpd_parse_config_targetParams(const char *, char *);
-
+  /*
+   * This file was generated by mib2c and is intended for use as a mib module
+   * for the ucd-snmp snmpd agent. Edited by Michael Baer
+   * 
+   * last changed 2/2/99.
+   */
+ 
+  #ifndef _MIBGROUP_SNMPTARGETPARAMSENTRY_H
+  #define _MIBGROUP_SNMPTARGETPARAMSENTRY_H
+ 
+      /*
+       * Magic number definitions: 
+       */
+  #define   SNMPTARGETPARAMSMPMODEL        1
+  #define   SNMPTARGETPARAMSSECURITYMODEL  2
+  #define   SNMPTARGETPARAMSSECURITYNAME   3
+  #define   SNMPTARGETPARAMSSECURITYLEVEL  4
+  #define   SNMPTARGETPARAMSSTORAGETYPE    5
+  #define   SNMPTARGETPARAMSROWSTATUS      6
+  #define   SNMPTARGETPARAMSMPMODELCOLUMN        2
+  #define   SNMPTARGETPARAMSSECURITYMODELCOLUMN  3
+  #define   SNMPTARGETPARAMSSECURITYNAMECOLUMN   4
+  #define   SNMPTARGETPARAMSSECURITYLEVELCOLUMN  5
+  #define   SNMPTARGETPARAMSSTORAGETYPECOLUMN    6
+  #define   SNMPTARGETPARAMSROWSTATUSCOLUMN      7
+      /*
+       * structure definitions 
+       */
+       struct targetParamTable_struct {
+           char           *paramName;
+           int             mpModel;
+           int             secModel;
+           char           *secName;
+           int             secLevel;
+           int             storageType;
+           int             rowStatus;
+           struct targetParamTable_struct *next;
+           time_t          updateTime;
+       };
+ 
+  /*
+   * utility functions 
+   */
+       struct targetParamTable_struct *get_paramEntry(char *name);
+       void            snmpTargetParamTable_add(struct
+                                                targetParamTable_struct
+                                                *newEntry);
+       struct targetParamTable_struct *snmpTargetParamTable_create(void);
+       void snmpTargetParamTable_dispose(struct targetParamTable_struct *);
+ 
+  /*
+   * function definitions 
+   */
+ 
+       void            init_snmpTargetParamsEntry(void);
+       void            shutdown_snmpTargetParamsEntry(void);
+       int             store_snmpTargetParamsEntry(int majorID, int minorID,
+                                                   void *serverarg,
+                                                   void *clientarg);
+       extern FindVarMethod var_snmpTargetParamsEntry;
+ 
+       void            snmpd_parse_config_targetParams(const char *, char *);
+ 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
      WriteMethod     write_snmpTargetParamsMPModel;
      WriteMethod     write_snmpTargetParamsSecModel;
      WriteMethod     write_snmpTargetParamsSecName;
      WriteMethod     write_snmpTargetParamsSecLevel;
      WriteMethod     write_snmpTargetParamsStorageType;
      WriteMethod     write_snmpTargetParamsRowStatus;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 
 #endif                          /* _MIBGROUP_SNMPTARGETPARAMSENTRY_H */
diff --git a/agent/mibgroup/target/target.c b/agent/mibgroup/target/target.c
index 3ccba1c..5619e35 100644
--- a/agent/mibgroup/target/target.c
+++ b/agent/mibgroup/target/target.c
@@ -1,8 +1,6 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_STRING_H
 #include <string.h>
 #else
@@ -12,10 +10,26 @@
 #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"
 
+netsnmp_feature_require(tdomain_support)
+netsnmp_feature_require(tdomain_transport_oid)
+netsnmp_feature_want(netsnmp_tlstmAddr_get_serverId)
+
 #define MAX_TAGS 128
 
 netsnmp_session *
@@ -27,6 +41,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));
@@ -54,7 +71,7 @@
             (targaddrs->tDomain, targaddrs->tDomainLen, NULL, NULL) == 0) {
             snmp_log(LOG_ERR,
                      "unsupported domain for target address table entry %s\n",
-                     targaddrs->name);
+                     targaddrs->nameData);
         }
 
         /*
@@ -159,19 +176,87 @@
                                     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 = NULL;
+                                char	      buf[33];
+
+                                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, "localCert",
+                                                cert->fingerprint);
+                                }
+                                memcpy(buf, targaddrs->nameData,
+                                       targaddrs->nameLen);
+                                buf[targaddrs->nameLen] = '\0';
+                                DEBUGMSGTL(("target_sessions",
+                                            "  looking up their id: %s\n",
+                                            buf));
+                                cert =
+                                    netsnmp_cert_find(NS_CERT_REMOTE_PEER,
+                                                      NS_CERTKEY_TARGET_ADDR,
+                                                      buf);
+                                if (cert) {
+                                    DEBUGMSGTL(("target_sessions",
+                                            "  found fingerprint: %s\n", 
+                                                cert->fingerprint));
+                                    t->f_config(t, "peerCert",
+                                                cert->fingerprint);
+                                }
+#ifndef NETSNMP_FEATURE_REMOVE_TLSTMADDR_GET_SERVERID
+                                server_id = netsnmp_tlstmAddr_get_serverId(buf);
+#endif /* NETSNMP_FEATURE_REMOVE_TLSTMADDR_GET_SERVERID */
+                                if (server_id) {
+                                    DEBUGMSGTL(("target_sessions",
+                                            "  found serverId: %s\n", 
+                                                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;
                             DEBUGMSGTL(("target_sessions",
-                                        "timeout: %d -> %d\n",
+                                        "timeout: %d -> %ld\n",
                                         targaddrs->timeout,
                                         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",
-                                         targaddrs->name);
+                                         "unsupported mpModel/secModel combo %d/%d for target %s\n",
+                                         param->mpModel, param->secModel,
+                                         targaddrs->nameData);
                                 /*
                                  * XXX: memleak 
                                  */
diff --git a/agent/mibgroup/target/target_counters.c b/agent/mibgroup/target/target_counters.c
index 02ebb72..0109974 100644
--- a/agent/mibgroup/target/target_counters.c
+++ b/agent/mibgroup/target/target_counters.c
@@ -12,12 +12,12 @@
 #include "target_counters.h"
 #include <net-snmp/agent/instance.h>
 
-static oid   unavailable_context_oid[] = { 1, 3, 6, 1, 6, 3, 12, 1, 4 };
-static oid   unknown_context_oid[]     = { 1, 3, 6, 1, 6, 3, 12, 1, 5 };
-
 void
 init_target_counters(void)
 {
+    const oid unavailable_context_oid[] = { 1, 3, 6, 1, 6, 3, 12, 1, 4 };
+    const oid unknown_context_oid[]     = { 1, 3, 6, 1, 6, 3, 12, 1, 5 };
+
     DEBUGMSGTL(("target_counters", "initializing\n"));
 
     /*
@@ -44,6 +44,7 @@
 
 }
 
+
 int
 get_unknown_context_count(netsnmp_mib_handler *handler,
                           netsnmp_handler_registration *reginfo,
diff --git a/agent/mibgroup/target/target_counters.h b/agent/mibgroup/target/target_counters.h
index a7dbf0a..355f391 100644
--- a/agent/mibgroup/target/target_counters.h
+++ b/agent/mibgroup/target/target_counters.h
@@ -2,6 +2,9 @@
  * testhandler.h 
  */
 
+config_exclude(target/target_counters)
+
 void            init_target_counters(void);
+
 Netsnmp_Node_Handler get_unavailable_context_count;
 Netsnmp_Node_Handler get_unknown_context_count;
diff --git a/agent/mibgroup/target/target_counters_5_5.c b/agent/mibgroup/target/target_counters_5_5.c
new file mode 100644
index 0000000..a32207b
--- /dev/null
+++ b/agent/mibgroup/target/target_counters_5_5.c
@@ -0,0 +1,31 @@
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/net-snmp-features.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 "target_counters_5_5.h"
+
+#include <net-snmp/agent/snmp_get_statistic.h>
+
+netsnmp_feature_require(helper_statistics)
+
+void
+init_target_counters_5_5(void)
+{
+    oid target_oid[] = { 1, 3, 6, 1, 6, 3, 12, 1 };
+
+    DEBUGMSGTL(("target_counters", "initializing\n"));
+
+    NETSNMP_REGISTER_STATISTIC_HANDLER(
+        netsnmp_create_handler_registration(
+            "target_counters", NULL, target_oid, OID_LENGTH(target_oid),
+            HANDLER_CAN_RONLY), 4, TARGET);
+}
diff --git a/agent/mibgroup/target/target_counters_5_5.h b/agent/mibgroup/target/target_counters_5_5.h
new file mode 100644
index 0000000..4960bf1
--- /dev/null
+++ b/agent/mibgroup/target/target_counters_5_5.h
@@ -0,0 +1,3 @@
+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 5003157..0c13a0f 100644
--- a/agent/mibgroup/tcp-mib/data_access/tcpConn.h
+++ b/agent/mibgroup/tcp-mib/data_access/tcpConn.h
@@ -20,8 +20,15 @@
 config_require(tcp-mib/data_access/tcpConn_common)
 #if defined( linux )
 config_require(tcp-mib/data_access/tcpConn_linux)
+config_require(util_funcs/get_pid_from_inode)
 #elif defined( solaris2 )
 config_require(tcp-mib/data_access/tcpConn_solaris2)
+#elif defined(freebsd4) || defined(dragonfly) || defined(darwin)
+config_require(tcp-mib/data_access/tcpConn_freebsd4)
+#elif defined(openbsd4)
+config_require(tcp-mib/data_access/tcpConn_openbsd)
+#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..bba01fe 100644
--- a/agent/mibgroup/tcp-mib/data_access/tcpConn_common.c
+++ b/agent/mibgroup/tcp-mib/data_access/tcpConn_common.c
@@ -164,6 +164,13 @@
     free(entry);
 }
 
+#ifdef TCPCONN_DELETE_SUPPORTED
+
+/* XXX TODO: these are currently unsupported everywhere; to enable the
+   functions first implement netsnmp_arch_tcpconn_entry_delete in the
+   tcpConn_{OS}.c file and then define TCPCONN_DELETE_SUPPORTED in the
+   tcpConn_{OS}.h file (which may need to be created first). */
+
 /**
  * update underlying data store (kernel) for entry
  *
@@ -189,10 +196,11 @@
     if (! (entry->flags & NETSNMP_ACCESS_TCPCONN_DELETE))
         return -1;
     
-    rc = netsnmp_arch_tcpconn_delete(entry);
+    rc = netsnmp_arch_tcpconn_entry_delete(entry);
     
     return rc;
 }
+#endif /* TCPCONN_DELETE_SUPPORTED */
 
 /**
  * update an old tcpconn_entry from a new one
diff --git a/agent/mibgroup/tcp-mib/data_access/tcpConn_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 8ea082b..5f93be0 100644
--- a/agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c
+++ b/agent/mibgroup/tcp-mib/data_access/tcpConn_linux.c
@@ -11,7 +11,7 @@
 
 #include "tcp-mib/tcpConnectionTable/tcpConnectionTable_constants.h"
 #include "tcp-mib/data_access/tcpConn_private.h"
-
+#include "mibgroup/util_funcs/get_pid_from_inode.h"
 static int
 linux_states[12] = { 1, 5, 3, 4, 6, 7, 11, 1, 8, 9, 2, 10 };
 
@@ -56,18 +56,19 @@
     return 0;
 }
 
+#ifdef TCPCONN_DELETE_SUPPORTED
 /*
  * 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;
     /** xxx-rks:9 tcpConn delete not implemented */
     return -1;
 }
-
+#endif /* TCPCONN_DELETE_SUPPORTED */
 
 /**
  *
@@ -81,7 +82,10 @@
     int rc = 0;
 
     DEBUGMSGTL(("access:tcpconn:container",
-                "tcpconn_container_arch_load (flags %p)\n", load_flags));
+                "tcpconn_container_arch_load (flags %x)\n", load_flags));
+
+    /* Setup the pid_from_inode table, and fill it.*/
+    netsnmp_get_pid_from_inode_init();
 
     if (NULL == container) {
         snmp_log(LOG_ERR, "no container specified/found for access_tcpconn\n");
@@ -134,17 +138,20 @@
      */
     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];
         u_char         *tmp_ptr;
 
-        if (5 != (rc = sscanf(line, "%*d: %8[0-9A-Z]:%x %8[0-9A-Z]:%x %x",
+        if (6 != (rc = sscanf(line, "%*d: %8[0-9A-Z]:%x %8[0-9A-Z]:%x %x %*x:%*x %*x:%*x %*x %*x %*x %llu",
                               local_addr, &local_port,
-                              remote_addr, &remote_port, &tmp_state))) {
+                              remote_addr, &remote_port, &tmp_state, &inode))) {
             DEBUGMSGT(("access:tcpconn:container",
-                       "error parsing line (%d != 5)\n", rc));
+                       "error parsing line (%d != 6)\n", rc));
             DEBUGMSGT(("access:tcpconn:container"," line '%s'\n", line));
+	    snmp_log(LOG_ERR, "tcp:_load4: bad line in " PROCFILE ": %s\n", line);
+	    rc = 0;
             continue;
         }
         DEBUGMSGT(("verbose:access:tcpconn:container"," line '%s'\n", line));
@@ -180,7 +187,8 @@
         entry->loc_port = (unsigned short) local_port;
         entry->rmt_port = (unsigned short) remote_port;
         entry->tcpConnState = state;
-        
+        entry->pid = netsnmp_get_pid_from_inode(inode);
+
         /** the addr string may need work */
         buf_len = strlen(local_addr);
         if ((8 != buf_len) ||
@@ -253,28 +261,17 @@
 {
     int             rc = 0;
     FILE           *in;
-    char            line[180];
-    static int      log_open_err = 1;
+    char            line[360];
 
     netsnmp_assert(NULL != container);
 
 #undef PROCFILE
 #define PROCFILE "/proc/net/tcp6"
     if (!(in = fopen(PROCFILE, "r"))) {
-        snmp_log(LOG_ERR,"could not open " PROCFILE "\n");
-        if (1 == log_open_err) {
-            snmp_log(LOG_ERR,"could not open " PROCFILE "\n");
-            log_open_err = 0;
-        }
+        DEBUGMSGTL(("access:tcpconn:container","could not open " PROCFILE "\n"));
         return -2;
     }
-    /*
-     * if we turned off logging of open errors, turn it back on now that
-     * we have been able to open the file.
-     */
-    if (0 == log_open_err)
-        log_open_err = 1;
-    
+
     fgets(line, sizeof(line), in); /* skip header */
 
     /*
@@ -286,16 +283,19 @@
     while (fgets(line, sizeof(line), in)) {
         netsnmp_tcpconn_entry *entry;
         int             state, local_port, remote_port, tmp_state;
+        unsigned long long  inode;
         size_t          buf_len, offset;
         char            local_addr[48], remote_addr[48];
         u_char         *tmp_ptr;
 
-        if (5 != (rc = sscanf(line, "%*d: %47[0-9A-Z]:%x %47[0-9A-Z]:%x %x",
+        if (6 != (rc = sscanf(line, "%*d: %47[0-9A-Z]:%x %47[0-9A-Z]:%x %x %*x:%*x %*x:%*x %*x %*x %*x %llu",
                               local_addr, &local_port,
-                              remote_addr, &remote_port, &tmp_state))) {
+                              remote_addr, &remote_port, &tmp_state, &inode))) {
             DEBUGMSGT(("access:tcpconn:container",
-                       "error parsing line (%d != 5)\n", rc));
+                       "error parsing line (%d != 6)\n", rc));
             DEBUGMSGT(("access:tcpconn:container"," line '%s'\n", line));
+	    snmp_log(LOG_ERR, "tcp:_load6: bad line in " PROCFILE ": %s\n", line);
+	    rc = 0;
             continue;
         }
         DEBUGMSGT(("verbose:access:tcpconn:container"," line '%s'\n", line));
@@ -331,6 +331,7 @@
         entry->loc_port = (unsigned short) local_port;
         entry->rmt_port = (unsigned short) remote_port;
         entry->tcpConnState = state;
+        entry->pid = netsnmp_get_pid_from_inode(inode);
 
         /** the addr string may need work */
         buf_len = strlen(local_addr);
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..889299a 100644
--- a/agent/mibgroup/tcp-mib/data_access/tcpConn_solaris2.c
+++ b/agent/mibgroup/tcp-mib/data_access/tcpConn_solaris2.c
@@ -39,14 +39,16 @@
     return 0;
 }
 
+#ifdef TCPCONN_DELETE_SUPPORTED
 int 
-netsnmp_arch_tcpconn_delete(netsnmp_tcpconn_entry *ep)
+netsnmp_arch_tcpconn_entry_delete(netsnmp_tcpconn_entry *ep)
 {
     /*
      * Not implemented 
      */
     return (-1);
 }
+#endif /* TCPCONN_DELETE_SUPPORTED */
 
 int 
 netsnmp_arch_tcpconn_container_load(netsnmp_container * container, 
diff --git a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c
index eb90f40..c999a0e 100644
--- a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c
+++ b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.c
@@ -26,8 +26,8 @@
 
 #include "tcpConnectionTable_interface.h"
 
-oid             tcpConnectionTable_oid[] = { TCPCONNECTIONTABLE_OID };
-int             tcpConnectionTable_oid_size =
+const oid       tcpConnectionTable_oid[] = { TCPCONNECTIONTABLE_OID };
+const int       tcpConnectionTable_oid_size =
 OID_LENGTH(tcpConnectionTable_oid);
 
 tcpConnectionTable_registration tcpConnectionTable_user_context;
@@ -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.h b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.h
index 9a7b29b..17d3105 100644
--- a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.h
+++ b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable.h
@@ -301,8 +301,8 @@
         * tcpConnectionTable_row_find_by_mib_index
         (tcpConnectionTable_mib_index * mib_idx);
 
-    extern oid      tcpConnectionTable_oid[];
-    extern int      tcpConnectionTable_oid_size;
+    extern const oid      tcpConnectionTable_oid[];
+    extern const int      tcpConnectionTable_oid_size;
 
 
 #include "tcpConnectionTable_interface.h"
diff --git a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c
index 66c42b5..dfb9649 100644
--- a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c
+++ b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_data_access.c
@@ -187,7 +187,12 @@
                                                        entry->rmt_addr,
                                                        entry->rmt_addr_len,
                                                        entry->rmt_port))) {
-        CONTAINER_INSERT(container, rowreq_ctx);
+        if (CONTAINER_INSERT(container, rowreq_ctx)) {
+            NETSNMP_LOGONCE((LOG_DEBUG,
+                    "Error inserting entry to tcpConnectionTable,"\
+                    " entry already exists.\n"));
+            tcpConnectionTable_release_rowreq_ctx(rowreq_ctx);
+        }
     } else {
         if (rowreq_ctx) {
             snmp_log(LOG_ERR, "error setting index while loading "
@@ -260,7 +265,7 @@
                                           NETSNMP_ACCESS_TCPCONN_FREE_DONT_CLEAR);
 
     DEBUGMSGT(("verbose:tcpConnectionTable:tcpConnectionTable_cache_load",
-               "%d records\n", CONTAINER_SIZE(container)));
+               "%d records\n", (int)CONTAINER_SIZE(container)));
 
     return MFD_SUCCESS;
 }                               /* tcpConnectionTable_container_load */
diff --git a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c
index 5348614..d0b27e5 100644
--- a/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c
+++ b/agent/mibgroup/tcp-mib/tcpConnectionTable/tcpConnectionTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,18 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(tcpConnectionTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(tcpConnectionTable_container_size, tcpConnectionTable_external_access)
+netsnmp_feature_child_of(tcpConnectionTable_registration_set, tcpConnectionTable_external_access)
+netsnmp_feature_child_of(tcpConnectionTable_registration_get, tcpConnectionTable_external_access)
+netsnmp_feature_child_of(tcpConnectionTable_container_get, tcpConnectionTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -82,19 +95,23 @@
                 _tcpConnectionTable_container_shutdown(tcpConnectionTable_interface_ctx *
                                                        if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_CONTAINER_GET
 netsnmp_container *
 tcpConnectionTable_container_get(void)
 {
     return tcpConnectionTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_REGISTRATION_GET
 tcpConnectionTable_registration *
 tcpConnectionTable_registration_get(void)
 {
     return tcpConnectionTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_REGISTRATION_SET
 tcpConnectionTable_registration *
 tcpConnectionTable_registration_set(tcpConnectionTable_registration *
                                     newreg)
@@ -104,12 +121,15 @@
     tcpConnectionTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_CONTAINER_SIZE
 int
 tcpConnectionTable_container_size(void)
 {
     return CONTAINER_SIZE(tcpConnectionTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_CONTAINER_SIZE */
 
 u_int
 tcpConnectionTable_dirty_get(void)
@@ -133,7 +153,7 @@
 static Netsnmp_Node_Handler _mfd_tcpConnectionTable_post_request;
 static Netsnmp_Node_Handler _mfd_tcpConnectionTable_object_lookup;
 static Netsnmp_Node_Handler _mfd_tcpConnectionTable_get_values;
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 static Netsnmp_Node_Handler _mfd_tcpConnectionTable_check_objects;
 static Netsnmp_Node_Handler _mfd_tcpConnectionTable_undo_setup;
 static Netsnmp_Node_Handler _mfd_tcpConnectionTable_set_values;
@@ -148,7 +168,7 @@
                 _tcpConnectionTable_undo_column(tcpConnectionTable_rowreq_ctx * rowreq_ctx,
                                                 netsnmp_variable_list *
                                                 var, int column);
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /**
  * @internal
@@ -193,7 +213,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;
@@ -232,8 +252,7 @@
     access_multiplexer->post_request =
         _mfd_tcpConnectionTable_post_request;
 
-
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     /*
      * REQUIRED wrappers for set request handling
      */
@@ -258,7 +277,7 @@
      */
     access_multiplexer->consistency_checks =
         _mfd_tcpConnectionTable_check_dependencies;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     /*************************************************
      *
@@ -273,7 +292,7 @@
                                             tcpConnectionTable_oid,
                                             tcpConnectionTable_oid_size,
                                             HANDLER_CAN_BABY_STEP
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
                                           | HANDLER_CAN_RWRITE
 #endif
                                           );
@@ -294,7 +313,7 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -317,7 +336,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -784,7 +803,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 +859,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 +940,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;
@@ -990,7 +1009,7 @@
 }                               /* _mfd_tcpConnectionTable_get_values */
 
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
 /***********************************************************************
  *
  * SET processing
@@ -1118,7 +1137,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 +1185,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 +1252,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 +1317,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 +1400,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 +1448,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 +1482,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 +1561,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 +1616,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"));
@@ -1618,7 +1637,7 @@
 
     return SNMP_ERR_NOERROR;
 }                               /* _mfd_tcpConnectionTable_irreversible_commit */
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
 /***********************************************************************
  *
@@ -1742,9 +1761,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");
@@ -1772,6 +1794,7 @@
 }                               /* _tcpConnectionTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_EXTERNAL_ACCESS
 tcpConnectionTable_rowreq_ctx *
 tcpConnectionTable_row_find_by_mib_index(tcpConnectionTable_mib_index *
                                          mib_idx)
@@ -1794,8 +1817,9 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (tcpConnectionTable_rowreq_ctx*)
         CONTAINER_FIND(tcpConnectionTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPCONNECTIONTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.c b/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.c
index 2a6fe7b..ebd672b 100644
--- a/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.c
+++ b/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.c
@@ -26,8 +26,8 @@
 
 #include "tcpListenerTable_interface.h"
 
-oid             tcpListenerTable_oid[] = { TCPLISTENERTABLE_OID };
-int             tcpListenerTable_oid_size =
+const oid       tcpListenerTable_oid[] = { TCPLISTENERTABLE_OID };
+const int       tcpListenerTable_oid_size =
 OID_LENGTH(tcpListenerTable_oid);
 
 tcpListenerTable_registration tcpListenerTable_user_context;
diff --git a/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.h b/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.h
index 0898f9c..08a741a 100644
--- a/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.h
+++ b/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable.h
@@ -182,8 +182,8 @@
         * tcpListenerTable_row_find_by_mib_index(tcpListenerTable_mib_index
                                                  * mib_idx);
 
-    extern oid      tcpListenerTable_oid[];
-    extern int      tcpListenerTable_oid_size;
+    extern const oid      tcpListenerTable_oid[];
+    extern const int      tcpListenerTable_oid_size;
 
 
 #include "tcpListenerTable_interface.h"
diff --git a/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c b/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c
index 0503fb3..4aa14ff 100644
--- a/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c
+++ b/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_data_access.c
@@ -258,7 +258,7 @@
                                           NETSNMP_ACCESS_TCPCONN_FREE_DONT_CLEAR);
 
     DEBUGMSGT(("verbose:tcpListenerTable:tcpListenerTable_cache_load",
-               "%d records\n", CONTAINER_SIZE(container)));
+               "%d records\n", (int)CONTAINER_SIZE(container)));
 
     return MFD_SUCCESS;
 }                               /* tcpListenerTable_container_load */
diff --git a/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c b/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c
index cfabdd1..2e41380 100644
--- a/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c
+++ b/agent/mibgroup/tcp-mib/tcpListenerTable/tcpListenerTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,18 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(tcpListenerTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(tcpListenerTable_container_size, tcpListenerTable_external_access)
+netsnmp_feature_child_of(tcpListenerTable_registration_set, tcpListenerTable_external_access)
+netsnmp_feature_child_of(tcpListenerTable_registration_get, tcpListenerTable_external_access)
+netsnmp_feature_child_of(tcpListenerTable_container_get, tcpListenerTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -79,19 +92,23 @@
                 _tcpListenerTable_container_shutdown(tcpListenerTable_interface_ctx *
                                                      if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_CONTAINER_GET
 netsnmp_container *
 tcpListenerTable_container_get(void)
 {
     return tcpListenerTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_REGISTRATION_GET
 tcpListenerTable_registration *
 tcpListenerTable_registration_get(void)
 {
     return tcpListenerTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_REGISTRATION_SET
 tcpListenerTable_registration *
 tcpListenerTable_registration_set(tcpListenerTable_registration * newreg)
 {
@@ -99,12 +116,15 @@
     tcpListenerTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_CONTAINER_SIZE
 int
 tcpListenerTable_container_size(void)
 {
     return CONTAINER_SIZE(tcpListenerTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_CONTAINER_SIZE */
 
 /*
  * mfd multiplexer modes
@@ -150,7 +170,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;
@@ -220,7 +240,8 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
+    /* XXX - are these actually necessary? */
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -243,7 +264,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -609,7 +630,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 +677,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 +748,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 +945,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");
@@ -954,6 +978,7 @@
 }                               /* _tcpListenerTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_EXTERNAL_ACCESS
 tcpListenerTable_rowreq_ctx *
 tcpListenerTable_row_find_by_mib_index(tcpListenerTable_mib_index *
                                        mib_idx)
@@ -976,8 +1001,9 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (tcpListenerTable_rowreq_ctx*)
         CONTAINER_FIND(tcpListenerTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TCPLISTENERTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/testhandler.c b/agent/mibgroup/testhandler.c
index 80859ce..f7468f0 100644
--- a/agent/mibgroup/testhandler.c
+++ b/agent/mibgroup/testhandler.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
@@ -9,6 +10,11 @@
 #include <strings.h>
 #endif
 
+netsnmp_feature_require(ulong_instance)
+netsnmp_feature_require(register_read_only_table_data)
+netsnmp_feature_require(table_build_result)
+netsnmp_feature_require(table_dataset)
+
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -74,6 +80,8 @@
         return;
 
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
+    if (table_info == NULL)
+        return;
 
     netsnmp_table_helper_add_indexes(table_info, ASN_INTEGER, ASN_INTEGER,
                                      0);
@@ -123,6 +131,8 @@
      * automatically parsed column and index information 
      */
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
+    if (table_info == NULL)
+        return;
 
     netsnmp_table_helper_add_indexes(table_info, ASN_INTEGER,
                                      ASN_OCTET_STR, 0);
@@ -325,6 +335,7 @@
                                  (u_char *) & accesses, sizeof(accesses));
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         if (requests->requestvb->type != ASN_UNSIGNED)
             netsnmp_set_request_error(reqinfo, requests,
@@ -367,6 +378,7 @@
          * nothing to do 
          */
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     }
 
     return SNMP_ERR_NOERROR;
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..5493ff9
--- /dev/null
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmAddrTable/snmpTlstmAddrTable.c
@@ -0,0 +1,1438 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  $
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <openssl/ssl.h>
+#include <openssl/x509.h>
+#include <net-snmp/library/cert_util.h>
+#include "tlstm-mib.h"
+#include "snmpTlstmAddrTable.h"
+
+netsnmp_feature_require(table_tdata)
+netsnmp_feature_require(tlstmaddr_container)
+netsnmp_feature_require(table_tdata_delete_table)
+netsnmp_feature_require(table_tdata_extract_table)
+netsnmp_feature_require(table_tdata_remove_row)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_storagetype)
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(table_tdata_insert_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+/** XXX - move these to table_data header? */
+#define FATE_NEWLY_CREATED    1
+#define FATE_NO_CHANGE        0
+#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_scalar2(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..84d1afb
--- /dev/null
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmCertToTSNTable/snmpTlstmCertToTSNTable.c
@@ -0,0 +1,1377 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  $
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <openssl/ssl.h>
+#include <openssl/x509.h>
+#include <net-snmp/library/cert_util.h>
+#include "tlstm-mib.h"
+#include "snmpTlstmCertToTSNTable.h"
+
+netsnmp_feature_require(table_tdata)
+netsnmp_feature_require(cert_fingerprints)
+netsnmp_feature_require(table_tdata_delete_table)
+netsnmp_feature_require(table_tdata_extract_table)
+netsnmp_feature_require(table_tdata_remove_row)
+netsnmp_feature_require(tls_fingerprint_build)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_storagetype)
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(check_vb_rowstatus_with_storagetype)
+netsnmp_feature_require(table_tdata_insert_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+/** XXX - move these to table_data header? */
+#define FATE_NEWLY_CREATED    1
+#define FATE_NO_CHANGE        0
+#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_scalar2(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..cd54452
--- /dev/null
+++ b/agent/mibgroup/tlstm-mib/snmpTlstmParamsTable/snmpTlstmParamsTable.c
@@ -0,0 +1,1286 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  $
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <openssl/ssl.h>
+#include <openssl/x509.h>
+#include <net-snmp/library/cert_util.h>
+#include "tlstm-mib.h"
+
+#include "snmpTlstmParamsTable.h"
+
+netsnmp_feature_require(table_tdata)
+netsnmp_feature_require(tlstmparams_find)
+netsnmp_feature_require(tlstmparams_external)
+netsnmp_feature_require(cert_fingerprints)
+netsnmp_feature_require(table_tdata_delete_table)
+netsnmp_feature_require(table_tdata_extract_table)
+netsnmp_feature_require(table_tdata_remove_row)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+netsnmp_feature_require(check_vb_storagetype)
+netsnmp_feature_require(check_vb_type_and_max_size)
+netsnmp_feature_require(check_vb_rowstatus_with_storagetype)
+netsnmp_feature_require(table_tdata_insert_row)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+/** XXX - move these to table_data header? */
+#define FATE_NEWLY_CREATED    1
+#define FATE_NO_CHANGE        0
+#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_scalar2(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..a567d2e
--- /dev/null
+++ b/agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c
@@ -0,0 +1,53 @@
+/*
+ * snmpTsmStats
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/library/snmp_api.h>
+#include "snmpTsmStats.h"
+
+static netsnmp_handler_registration* _myreg = NULL;
+
+netsnmp_feature_require(helper_statistics)
+
+netsnmp_feature_child_of(shutdown_snmptsmsession, netsnmp_unused)
+
+/** Initializes the snmpTsmStats module */
+void
+init_snmpTsmStats(void)
+{
+    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;
+    }
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_SHUTDOWN_SNMPTSMSESSION
+void
+shutdown_snmpTsmSession(void)
+{
+    if (_myreg) {
+        netsnmp_unregister_handler(_myreg);
+        _myreg = NULL;
+    }
+}
+#endif /* NETSNMP_FEATURE_REMOVE_SHUTDOWN_SNMPTSMSESSION */
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 cfbee46..f9649ef 100644
--- a/agent/mibgroup/tunnel/tunnel.c
+++ b/agent/mibgroup/tunnel/tunnel.c
@@ -62,8 +62,8 @@
 #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/sysORTable.h>
 
-#include "util_funcs.h"
 #include "tunnel.h"
 
 #ifndef MIN
@@ -137,32 +137,35 @@
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
      */
 #define   LOCALADDRESS          1
-    {LOCALADDRESS, ASN_IPADDRESS, RWRITE, var_tunnelIfEntry, 3, {1, 1, 1}},
+    {LOCALADDRESS, ASN_IPADDRESS, NETSNMP_OLDAPI_RWRITE,
+     var_tunnelIfEntry, 3, {1, 1, 1}},
 #define   REMOTEADDRESS         2
-    {REMOTEADDRESS, ASN_IPADDRESS, RWRITE, var_tunnelIfEntry, 3,
-     {1, 1, 2}},
+    {REMOTEADDRESS, ASN_IPADDRESS, NETSNMP_OLDAPI_RWRITE,
+     var_tunnelIfEntry, 3, {1, 1, 2}},
 #define   ENCAPSMETHOD          3
-    {ENCAPSMETHOD, ASN_INTEGER, RONLY, var_tunnelIfEntry, 3, {1, 1, 3}},
+    {ENCAPSMETHOD, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_tunnelIfEntry, 3, {1, 1, 3}},
 #define   HOPLIMIT              4
-    {HOPLIMIT, ASN_INTEGER, RWRITE, var_tunnelIfEntry, 3, {1, 1, 4}},
+    {HOPLIMIT, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_tunnelIfEntry, 3, {1, 1, 4}},
 #define   SECURITY              5
-    {SECURITY, ASN_INTEGER, RONLY, var_tunnelIfEntry, 3, {1, 1, 5}},
+    {SECURITY, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_tunnelIfEntry, 3, {1, 1, 5}},
 #define   TOS                   6
-    {TOS, ASN_INTEGER, RWRITE, var_tunnelIfEntry, 3, {1, 1, 6}},
+    {TOS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_tunnelIfEntry, 3, {1, 1, 6}},
 
 #define   IFINDEX               7
-    {IFINDEX, ASN_INTEGER, RONLY, var_tunnelConfigEntry, 3, {2, 1, 5}},
+    {IFINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_tunnelConfigEntry, 3, {2, 1, 5}},
 #define   ROWSTATUS             8
-    {ROWSTATUS, ASN_INTEGER, RWRITE, var_tunnelConfigEntry, 3, {2, 1, 6}},
+    {ROWSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_tunnelConfigEntry, 3, {2, 1, 6}},
 };
 
 
 
-extern int      register_sysORTable(oid *, size_t, const char *);
-extern int      unregister_sysORTable(oid *, size_t);
-
 static oid      sysORTable_reg[] = { 1, 3, 6, 1, 2, 1, 10, 131 };
-static size_t   sysORTable_reglen = 8;
 
 static struct tunnel *tunnels;
 
@@ -171,7 +174,7 @@
 void
 deinit_tunnel(void)
 {
-    unregister_sysORTable(sysORTable_reg, sysORTable_reglen);
+    UNREGISTER_SYSOR_ENTRY(sysORTable_reg);
 }
 
 
@@ -188,7 +191,7 @@
 void
 init_tunnel(void)
 {
-    register_sysORTable(sysORTable_reg, sysORTable_reglen,
+    REGISTER_SYSOR_ENTRY(sysORTable_reg,
                         "RFC 2667 TUNNEL-MIB implementation for "
                         "Linux 2.2.x kernels.");
 
@@ -213,8 +216,8 @@
     oid             name[MAX_OID_LEN] = { 1, 3, 6, 1, 2, 1, 2, 2, 1, 3 };
     size_t          length = 10;
     struct variable ifType_variable =
-        { 3, ASN_INTEGER, RONLY, var_ifEntry, 10,
-        {1, 3, 6, 1, 2, 1, 2, 2, 1, 3}
+        { 3, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+          var_ifEntry, 10, {1, 3, 6, 1, 2, 1, 2, 2, 1, 3}
     };
     unsigned char  *p;
     size_t          var_len;
@@ -245,15 +248,15 @@
 
 
 
-static char    *
+static const char *
 getName(int index)
 {
 #ifndef USING_IF_MIB_IFTABLE_IFTABLE_MODULE
     oid             name[MAX_OID_LEN] = { 1, 3, 6, 1, 2, 1, 2, 2, 1, 2 };
     size_t          length = 10;
     struct variable ifName_variable =
-        { 2, ASN_INTEGER, RONLY, var_ifEntry, 10,
-        {1, 3, 6, 1, 2, 1, 2, 2, 1, 2}
+        { 2, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+          var_ifEntry, 10, {1, 3, 6, 1, 2, 1, 2, 2, 1, 2}
     };
     unsigned char  *p;
     size_t          var_len;
@@ -407,7 +410,7 @@
     static int      max_index = 1;
     static struct tunnel *last_tunnel = NULL;
     struct tunnel  *tunnel;
-    char           *ifname;
+    const char     *ifname;
     int             type;
 
     /*
@@ -415,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);
     }
@@ -461,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)
@@ -482,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;
         }
     }
@@ -504,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;
         }
     }
@@ -548,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;
         }
     }
@@ -592,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 bd784fc..1147eef 100644
--- a/agent/mibgroup/ucd-snmp/disk.c
+++ b/agent/mibgroup/ucd-snmp/disk.c
@@ -4,6 +4,12 @@
 
 #include <net-snmp/net-snmp-config.h>
 
+/* workaround for bug in autoconf 2.60b and 2.61 */
+#ifdef HAVE_GETMNTENT
+#undef HAVE_GETMNTENT
+#define HAVE_GETMNTENT 1 /* previously might be only "#define HAVE_GETMNTENT" */
+#endif
+
 #include <stdio.h>
 
 #if HAVE_STDLIB_H
@@ -117,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
@@ -130,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>
@@ -140,7 +139,7 @@
 
 #include "struct.h"
 #include "disk.h"
-#include "util_funcs.h"
+#include "util_funcs/header_simple_table.h"
 #if USING_UCD_SNMP_ERRORMIB_MODULE
 #include "errormib.h"
 #else
@@ -170,10 +169,8 @@
     int             minpercent;
 };
 
-#ifndef  INT32_MAX
-#define  INT32_MAX  0x7fffffff
-#endif
-
+#define MAX_INT_32 0x7fffffff
+#define MAX_UINT_32 0xffffffff
 
 unsigned int    numdisks;
 int             allDisksIncluded = 0;
@@ -181,23 +178,42 @@
 struct diskpart *disks;
 
 struct variable2 extensible_disk_variables[] = {
-  {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_disk, 1, {MIBINDEX}},
-  {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_disk, 1, {ERRORNAME}},
-  {DISKDEVICE, ASN_OCTET_STR, RONLY, var_extensible_disk, 1,
-   {DISKDEVICE}},
-  {DISKMINIMUM, ASN_INTEGER, RONLY, var_extensible_disk, 1,
-   {DISKMINIMUM}},
-  {DISKMINPERCENT, ASN_INTEGER, RONLY, var_extensible_disk, 1,
-   {DISKMINPERCENT}},
-  {DISKTOTAL, ASN_INTEGER, RONLY, var_extensible_disk, 1, {DISKTOTAL}},
-  {DISKAVAIL, ASN_INTEGER, RONLY, var_extensible_disk, 1, {DISKAVAIL}},
-  {DISKUSED, ASN_INTEGER, RONLY, var_extensible_disk, 1, {DISKUSED}},
-  {DISKPERCENT, ASN_INTEGER, RONLY, var_extensible_disk, 1,
-   {DISKPERCENT}},
-  {DISKPERCENTNODE, ASN_INTEGER, RONLY, var_extensible_disk, 1,
-   {DISKPERCENTNODE}},
-  {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_disk, 1, {ERRORFLAG}},
-  {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_disk, 1, {ERRORMSG}}
+  {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}},
 };
 
 /*
@@ -243,7 +259,6 @@
 disk_parse_config(const char *token, char *cptr)
 {
 #if HAVE_FSTAB_H || HAVE_GETMNTENT || HAVE_STATFS
-  char            tmpbuf[1024];
   char            path[STRMAX];
   int             minpercent;
   int             minspace;
@@ -251,23 +266,19 @@
   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.");
-              snprintf(tmpbuf, sizeof(tmpbuf), "\tignoring:  %s", cptr);
-              tmpbuf[ sizeof(tmpbuf)-1 ] = 0;
-              config_perror(tmpbuf);
+	      netsnmp_config_error("\tignoring:  %s", cptr);
               return;
           }
           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.");
-              snprintf(tmpbuf, sizeof(tmpbuf), "\tignoring:  %s", cptr);
-              tmpbuf[ sizeof(tmpbuf)-1 ] = 0;
-              config_perror(tmpbuf);
+	      netsnmp_config_error("\tignoring:  %s", cptr);
               return;
           }
           memset(disks + maxdisks/2, 0, maxdisks/2 * sizeof(struct diskpart));
@@ -285,7 +296,7 @@
    * read optional minimum disk usage spec 
    */
   if(cptr != NULL) {
-      if(strchr(cptr, '%') == 0) {
+      if(strchr(cptr, '%') == NULL) {
           minspace = atoi(cptr);
           minpercent = -1;
       }
@@ -310,27 +321,24 @@
 disk_parse_config_all(const char *token, char *cptr)
 {
 #if HAVE_FSTAB_H || HAVE_GETMNTENT || HAVE_STATFS
-  char            tmpbuf[1024];
   int             minpercent = DISKMINPERCENT;
     
   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.");
-              snprintf(tmpbuf, sizeof(tmpbuf), "\tignoring:  %s", cptr);
-              config_perror(tmpbuf);
+	      netsnmp_config_error("\tignoring:  %s", cptr);
               return;
           }
           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.");
-              snprintf(tmpbuf, sizeof(tmpbuf), "\tignoring:  %s", cptr);
-              config_perror(tmpbuf);
+	      netsnmp_config_error("\tignoring:  %s", cptr);
               return;
           }
           memset(disks + maxdisks/2, 0, maxdisks/2 * sizeof(struct diskpart));
@@ -340,7 +348,7 @@
    * read the minimum disk usage percent
    */
   if(cptr != NULL) {
-      if(strchr(cptr, '%') != 0) {
+      if(strchr(cptr, '%') != NULL) {
           minpercent = atoi(cptr);
       }
   }
@@ -352,8 +360,7 @@
    */
   if(allDisksIncluded) {
       config_perror("includeAllDisks already specified.");
-      snprintf(tmpbuf, sizeof(tmpbuf), "\tignoring: includeAllDisks %s", cptr);
-      config_perror(tmpbuf);
+      netsnmp_config_error("\tignoring: includeAllDisks %s", cptr);
   }
   else {
       allDisksIncluded = 1;
@@ -376,24 +383,18 @@
   if (numdisks == maxdisks) {
       if (maxdisks == 0) {
           maxdisks = 50;
-          disks = malloc(maxdisks * sizeof(struct diskpart));
+          disks = (struct diskpart *)malloc(maxdisks * sizeof(struct diskpart));
           if (!disks) {
-              char tmpbuf[1024];
-              snprintf(tmpbuf, sizeof(tmpbuf), "\tignoring:  %s", device);
-              tmpbuf[ sizeof(tmpbuf)-1 ] = 0;
-              config_perror(tmpbuf);
+	      netsnmp_config_error("\tignoring:  %s", device);
               return;
           }
           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) {
-              char tmpbuf[1024];
               config_perror("malloc failed for new disk allocation.");
-              snprintf(tmpbuf, sizeof(tmpbuf), "\tignoring:  %s", device);
-              tmpbuf[ sizeof(tmpbuf)-1 ] = 0;
-              config_perror(tmpbuf);
+	      netsnmp_config_error("\tignoring:  %s", device);
               return;
           }
           memset(disks + maxdisks/2, 0, maxdisks/2 * sizeof(struct diskpart));
@@ -464,7 +465,7 @@
 #if defined(HAVE_GETMNTENT) || defined(HAVE_FSTAB_H)
   int dummy = 0;
 #endif
-  char            tmpbuf[1024];
+
   /* 
    * find the device for the path and copy the device into the
    * string declared above and at the end of the routine return it
@@ -475,8 +476,7 @@
 #if HAVE_SETMNTENT
   mntfp = setmntent(ETC_MNTTAB, "r");
   if (!mntfp) {
-      snprintf( tmpbuf, sizeof(tmpbuf), "Can't open %s (setmntent)\n", ETC_MNTTAB );
-      config_perror(tmpbuf);
+      netsnmp_config_error("Can't open %s (setmntent)\n", ETC_MNTTAB);
       return;
   }
   while (mntfp && NULL != (mntent = getmntent(mntfp))) {
@@ -493,8 +493,7 @@
 #else                           /* getmentent but not setmntent */
   mntfp = fopen(ETC_MNTTAB, "r");
   if (!mntfp) {
-      snprintf( tmpbuf, sizeof(tmpbuf), "Can't open %s (fopen)\n", ETC_MNTTAB );
-      config_perror(tmpbuf);
+      netsnmp_config_error("Can't open %s (fopen)\n", ETC_MNTTAB);
       return;
   }
   while ((i = getmntent(mntfp, &mnttab)) == 0) {
@@ -545,11 +544,8 @@
     if (numdisks == maxdisks) {
       return;
     }
-    snprintf(tmpbuf, sizeof(tmpbuf),
-             "Couldn't find device for disk %s",
-             disks[numdisks].path);
-    tmpbuf[ sizeof(tmpbuf)-1 ] = 0;
-    config_pwarn(tmpbuf);
+    netsnmp_config_warn("Couldn't find device for disk %s",
+			disks[numdisks].path);
     disks[numdisks].minimumspace = -1;
     disks[numdisks].minpercent = -1;
     disks[numdisks].path[0] = 0;
@@ -572,11 +568,9 @@
   FILE           *mntfp;
 #elif HAVE_FSTAB_H
   struct fstab   *fstab;
-  struct stat     stat1;
 #elif HAVE_STATFS
   struct statfs   statf;
 #endif
-  char            tmpbuf[1024];
   static char     device[STRMAX];
 #if defined(HAVE_GETMNTENT) && !defined(HAVE_SETMNTENT)
   int             i;
@@ -594,8 +588,7 @@
 #if HAVE_SETMNTENT
   mntfp = setmntent(ETC_MNTTAB, "r");
   if (!mntfp) {
-      snprintf( tmpbuf, sizeof(tmpbuf), "Can't open %s (setmntent)\n", ETC_MNTTAB );
-      config_perror(tmpbuf);
+      netsnmp_config_error("Can't open %s (setmntent)\n", ETC_MNTTAB);
       return NULL;
   }
   while (mntfp && NULL != (mntent = getmntent(mntfp)))
@@ -613,8 +606,7 @@
 #else                           /* getmentent but not setmntent */
   mntfp = fopen(ETC_MNTTAB, "r");
   if (!mntfp) {
-      snprintf( tmpbuf, sizeof(tmpbuf), "Can't open %s (fopen)\n", ETC_MNTTAB );
-      config_perror(tmpbuf);
+      netsnmp_config_error("Can't open %s (fopen)\n", ETC_MNTTAB);
       return NULL;
   }
   while ((i = getmntent(mntfp, &mnttab)) == 0)
@@ -629,7 +621,6 @@
     strlcpy(device, mnttab.mnt_special, sizeof(device));
 #endif /* HAVE_SETMNTENT */
 #elif HAVE_FSTAB_H
-  stat(path, &stat1);
   setfsent();
   if ((fstab = getfsfile(path)))
     strlcpy(device, fstab->fs_spec, sizeof(device));
@@ -648,9 +639,7 @@
   }
 #endif
   else {
-    snprintf(tmpbuf, sizeof(tmpbuf), "Couldn't find device for disk %s",
-	    path);
-    config_pwarn(tmpbuf);
+    netsnmp_config_warn("Couldn't find device for disk %s", path);
   }
 #else
   config_perror("'disk' checks not supported on this architecture.");
@@ -659,39 +648,33 @@
 }
 #endif
 
-
 /*
- * 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
- * 
+ * Part of UCD-SNMP-MIB::dskEntry, which is so hard to fill 
+ * (i.e. platform dependent parts).
  */
-u_char         *
-var_extensible_disk(struct variable *vp,
-                    oid * name,
-                    size_t * length,
-                    int exact,
-                    size_t * var_len, WriteMethod ** write_method)
-{
+struct dsk_entry {
+    unsigned long long  dskTotal;
+    unsigned long long  dskUsed;
+    unsigned long long  dskAvail;
+    unsigned long       dskPercent;
+    unsigned long       dskPercentInode;
+    unsigned long       dskErrorFlag;
+};
 
-    int             percent, iserror;
-    unsigned int    disknum = 0;
-#if !defined(HAVE_SYS_STATVFS_H) && !defined(HAVE_STATFS)
-    double          totalblks, free, used, avail, availblks;
-#else
-    static long     avail;
-#if defined(STRUCT_STATVFS_HAS_F_FILES) || defined(STRUCT_STATFS_HAS_F_FILES)
-    int             percent_inode;
-#endif
-#endif
-    static long     long_ret;
-    static char     errmsg[300];
+/**
+ * Fill in the provided dsk_entry structure.
+ * Returns -1 on error, 0 on success.
+ */
+
+static int
+fill_dsk_entry(int disknum, struct dsk_entry *entry)
+{
+#if defined(HAVE_STATVFS) || defined(HAVE_STATFS)
     float           multiplier;
+#endif
+#if defined(HAVE_FSTAB_H) && !defined(HAVE_SYS_STATVFS_H) && !defined(HAVE_STATFS)
+    double          totalblks, free, used, avail, availblks;
+#endif
 
 #if defined(HAVE_STATVFS) || defined(HAVE_STATFS)
 #ifdef STAT_STATFS_FS_DATA
@@ -713,6 +696,136 @@
 #endif
 #endif
 
+    entry->dskPercentInode = -1;
+
+#if defined(HAVE_STATVFS) || defined(HAVE_STATFS)
+#ifdef STAT_STATFS_FS_DATA
+    if (statvfs(disks[disknum].path, &fsd) == -1)
+#else
+    if (statvfs(disks[disknum].path, &vfs) == -1)
+#endif
+    {
+        snmp_log(LOG_ERR, "Couldn't open device %s\n",
+                 disks[disknum].device);
+        setPerrorstatus("statvfs dev/disk");
+        return -1;
+    }
+#ifdef STAT_STATFS_FS_DATA
+    vfs.f_blocks = fsd.fd_btot;
+    vfs.f_bfree = fsd.fd_bfree;
+    vfs.f_bavail = fsd.fd_bfreen;
+    vfs.f_bsize = 1024;         /*  Ultrix f_bsize is a VM parameter apparently.  */
+#endif
+#if defined(HAVE_ODS)
+    vfs.f_blocks = vfs.f_spare[0];
+    vfs.f_bfree = vfs.f_spare[1];
+    vfs.f_bavail = vfs.f_spare[2];
+#endif
+
+    multiplier = (float)vfs.f_bsize / (float)1024.0;
+#ifdef HAVE_STRUCT_STATVFS_F_FRSIZE
+    if (vfs.f_frsize > 255)
+        multiplier = (float)vfs.f_frsize / (float)1024.0;
+#endif
+
+    entry->dskTotal = (unsigned long long)(vfs.f_blocks * multiplier);
+    entry->dskAvail = (unsigned long long)(vfs.f_bavail * multiplier);
+    entry->dskUsed = (unsigned long long)((vfs.f_blocks - vfs.f_bfree) * multiplier);
+
+    entry->dskPercent = 
+        vfs.f_blocks == 0 ? 0 :
+        vfs.f_bavail <= 0 ? 100 :
+        (int) ((double) (vfs.f_blocks - vfs.f_bfree) /
+               (double) (vfs.f_blocks -
+                         (vfs.f_bfree - vfs.f_bavail)) * 100.0 + 0.5);
+
+#if defined(HAVE_STRUCT_STATVFS_F_FILES) || defined HAVE_STRUCT_STATFS_F_FAVAIL
+    entry->dskPercentInode = vfs.f_favail <= 0 ? 100 :
+        (int) ((double) (vfs.f_files - vfs.f_ffree) /
+               (double) (vfs.f_files -
+                         (vfs.f_ffree - vfs.f_favail)) * 100.0 + 0.5);
+#else
+#if defined(HAVE_STRUCT_STATFS_F_FILES) && defined(HAVE_STRUCT_STATFS_F_FFREE)
+    entry->dskPercentInode = vfs.f_files == 0 ? 100.0 :
+      (int) ((double) (vfs.f_files - vfs.f_ffree) /
+              (double) (vfs.f_files) * 100.0 + 0.5);
+#endif 
+#endif /* defined(HAVE_STRUCT_STATVFS_F_FILES) */
+
+#elif HAVE_FSTAB_H
+    /*
+     * read the disk information 
+     */
+    if ((file = open(disks[disknum].device, 0)) < 0) {
+        snmp_log(LOG_ERR, "Couldn't open device %s\n",
+                 disks[disknum].device);
+        setPerrorstatus("open dev/disk");
+        return -1;
+    }
+    lseek(file, (long) (SBLOCK * DEV_BSIZE), 0);
+    if (read(file, (char *) &filesys, SBSIZE) != SBSIZE) {
+        setPerrorstatus("open dev/disk");
+        snmp_log(LOG_ERR, "Error reading device %s\n",
+                 disks[disknum].device);
+        close(file);
+        return -1;
+    }
+    close(file);
+
+    totalblks = filesys.fs_dsize;
+    free = filesys.fs_cstotal.cs_nbfree * filesys.fs_frag +
+        filesys.fs_cstotal.cs_nffree;
+    used = totalblks - free;
+    availblks = totalblks * (100 - filesys.fs_minfree) / 100;
+    avail = availblks > used ? availblks - used : 0;
+    entry->dskPercent =
+        totalblks == 0 ? 0 :
+        availblks == 0 ? 100 :
+        (int) ((double) used / (double) totalblks * 100.0 + 0.5);
+    multiplier = (float)filesys.fs_fsize / (float)1024.0;
+    entry->dskTotal = (unsigned long long)(totalblks * multiplier);
+    entry->dskAvail = (unsigned long long)(avail * multiplier);
+    entry->dskUsed = (unsigned long long)(used * multiplier);
+#else
+    /* MinGW */
+    entry->dskPercent = 0;
+    entry->dskTotal = 0;
+    entry->dskAvail = 0;
+    entry->dskUsed = 0;
+#endif
+
+    entry->dskErrorFlag =
+        (disks[disknum].minimumspace >= 0
+            ? entry->dskAvail < (unsigned long long)disks[disknum].minimumspace
+            : 100 - entry->dskPercent <= (unsigned int)disks[disknum].minpercent) ? 1 : 0;
+
+    return 0;
+}
+
+/*
+ * 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             ret;
+	unsigned int	disknum = 0;
+    struct dsk_entry entry;
+    static long     long_ret;
+    static char     errmsg[300];
+
 tryAgain:
     if (header_simple_table
         (vp, name, length, exact, var_len, write_method, numdisks))
@@ -737,189 +850,83 @@
         long_ret = disks[disknum].minpercent;
         return ((u_char *) (&long_ret));
     }
-#if defined(HAVE_STATVFS) || defined(HAVE_STATFS)
-#ifdef STAT_STATFS_FS_DATA
-    if (statvfs(disks[disknum].path, &fsd) == -1)
-#else
-    if (statvfs(disks[disknum].path, &vfs) == -1)
-#endif
-    {
-        snmp_log(LOG_ERR, "Couldn't open device %s\n",
-                 disks[disknum].device);
-        setPerrorstatus("statvfs dev/disk");
+
+    ret = fill_dsk_entry(disknum, &entry);
+    if (ret < 0) {
         if (!exact)
             goto tryAgain;
         return NULL;
     }
-#ifdef STAT_STATFS_FS_DATA
-    vfs.f_blocks = fsd.fd_btot;
-    vfs.f_bfree = fsd.fd_bfree;
-    vfs.f_bavail = fsd.fd_bfreen;
-    vfs.f_bsize = 1024;         /*  Ultrix f_bsize is a VM parameter apparently.  */
-#endif
-#if defined(HAVE_ODS)
-    vfs.f_blocks = vfs.f_spare[0];
-    vfs.f_bfree = vfs.f_spare[1];
-    vfs.f_bavail = vfs.f_spare[2];
-#endif
-    percent =
-        vfs.f_blocks == 0 ? 0 :
-        vfs.f_bavail <= 0 ? 100 :
-        (int) ((double) (vfs.f_blocks - vfs.f_bfree) /
-               (double) (vfs.f_blocks -
-                         (vfs.f_bfree - vfs.f_bavail)) * 100.0 + 0.5);
-    multiplier = (float)vfs.f_bsize / (float)1024.0;
-#ifdef STRUCT_STATVFS_HAS_F_FRSIZE
-    if (vfs.f_frsize > 255)
-        multiplier = (float)vfs.f_frsize / (float)1024.0;
-#endif
-    avail = (long)(vfs.f_bavail * multiplier);
-    iserror = (disks[disknum].minimumspace >= 0 ?
-               vfs.f_bavail < (disks[disknum].minimumspace/multiplier) :
-               100 - percent <= disks[disknum].minpercent) ? 1 : 0;
-#if defined(STRUCT_STATVFS_HAS_F_FILES) || defined STRUCT_STATFS_HAS_F_FAVAIL
-    percent_inode = vfs.f_favail <= 0 ? 100 :
-        (int) ((double) (vfs.f_files - vfs.f_ffree) /
-               (double) (vfs.f_files -
-                         (vfs.f_ffree - vfs.f_favail)) * 100.0 + 0.5);
-#else
-#if defined(STRUCT_STATFS_HAS_F_FILES) && defined(STRUCT_STATFS_HAS_F_FFREE)
-   percent_inode = vfs.f_files == 0 ? 100.0 :
-      (int) ((double) (vfs.f_files - vfs.f_ffree) /
-	          (double) (vfs.f_files) * 100.0 + 0.5);
-#endif 
-#endif /* defined(STRUCT_STATVFS_HAS_F_FILES) */ 
+
     switch (vp->magic) {
     case DISKTOTAL:
-        if ( vfs.f_blocks > ( INT32_MAX / multiplier ))
-            long_ret = INT32_MAX;
+        if (entry.dskTotal > MAX_INT_32)
+            long_ret = MAX_INT_32;
         else
-            long_ret = (long)(vfs.f_blocks * multiplier);
+            long_ret = (long)(entry.dskTotal);
         return ((u_char *) (&long_ret));
+    case DISKTOTALLOW:
+        long_ret = entry.dskTotal & MAX_UINT_32;
+        return ((u_char *) (&long_ret));
+    case DISKTOTALHIGH:
+        long_ret = entry.dskTotal >> 32;
+        return ((u_char *) (&long_ret));
+        
     case DISKAVAIL:
-        if ( vfs.f_bavail > ( INT32_MAX / multiplier ))
-            long_ret = INT32_MAX;
+        if (entry.dskAvail > MAX_INT_32)
+            long_ret = MAX_INT_32;
         else
-            long_ret = (long)(vfs.f_bavail * multiplier);
+            long_ret = (long)(entry.dskAvail);
         return ((u_char *) (&long_ret));
+    case DISKAVAILLOW:
+        long_ret = entry.dskAvail & MAX_UINT_32;
+        return ((u_char *) (&long_ret));
+    case DISKAVAILHIGH:
+        long_ret = entry.dskAvail >> 32;
+        return ((u_char *) (&long_ret));
+
     case DISKUSED:
-        if ( (vfs.f_blocks - vfs.f_bfree) > ( INT32_MAX / multiplier ))
-            long_ret = INT32_MAX;
+        if (entry.dskUsed > MAX_INT_32)
+            long_ret = MAX_INT_32;
         else
-            long_ret = (long)((vfs.f_blocks - vfs.f_bfree) * multiplier);
+            long_ret = (long)(entry.dskUsed);
         return ((u_char *) (&long_ret));
+    case DISKUSEDLOW:
+        long_ret = entry.dskUsed & MAX_UINT_32;
+        return ((u_char *) (&long_ret));
+    case DISKUSEDHIGH:
+        long_ret = entry.dskUsed >> 32;
+        return ((u_char *) (&long_ret));
+
     case DISKPERCENT:
-        long_ret = percent;
+        long_ret = entry.dskPercent;
         return ((u_char *) (&long_ret));
-#if defined(STRUCT_STATVFS_HAS_F_FILES) || defined (STRUCT_STATFS_HAS_F_FILES)
+
     case DISKPERCENTNODE:
-        long_ret = percent_inode;
+        long_ret = entry.dskPercentInode;
         return ((u_char *) (&long_ret));
-#endif
+
     case ERRORFLAG:
-        long_ret = iserror;
+        long_ret = entry.dskErrorFlag;
         return ((u_char *) (&long_ret));
+
     case ERRORMSG:
-        if (iserror) {
+        if (entry.dskErrorFlag) {
             if (disks[disknum].minimumspace >= 0)
                 snprintf(errmsg, sizeof(errmsg),
                         "%s: less than %d free (= %d)",
                         disks[disknum].path, disks[disknum].minimumspace,
-                        (int) avail);
+                        (int) entry.dskAvail);
             else
                 snprintf(errmsg, sizeof(errmsg),
                         "%s: less than %d%% free (= %d%%)",
                         disks[disknum].path, disks[disknum].minpercent,
-                        percent);
+                        (int)entry.dskPercent);
             errmsg[ sizeof(errmsg)-1 ] = 0;
         } else
             errmsg[0] = 0;
         *var_len = strlen(errmsg);
         return ((u_char *) (errmsg));
     }
-#else
-#if HAVE_FSTAB_H
-    /*
-     * read the disk information 
-     */
-    if ((file = open(disks[disknum].device, 0)) < 0) {
-        snmp_log(LOG_ERR, "Couldn't open device %s\n",
-                 disks[disknum].device);
-        setPerrorstatus("open dev/disk");
-        if (!exact)
-            goto tryAgain;
-        return (NULL);
-    }
-    lseek(file, (long) (SBLOCK * DEV_BSIZE), 0);
-    if (read(file, (char *) &filesys, SBSIZE) != SBSIZE) {
-        setPerrorstatus("open dev/disk");
-        snmp_log(LOG_ERR, "Error reading device %s\n",
-                 disks[disknum].device);
-        close(file);
-        if (!exact)
-            goto tryAgain;
-        return (NULL);
-    }
-    close(file);
-    totalblks = filesys.fs_dsize;
-    free = filesys.fs_cstotal.cs_nbfree * filesys.fs_frag +
-        filesys.fs_cstotal.cs_nffree;
-    used = totalblks - free;
-    availblks = totalblks * (100 - filesys.fs_minfree) / 100;
-    avail = availblks > used ? availblks - used : 0;
-    percent =
-        totalblks == 0 ? 0 :
-        availblks == 0 ? 100 :
-        (int) ((double) used / (double) totalblks * 100.0 + 0.5);
-    multiplier = (float)filesys.fs_fsize / (float)1024.0;
-    iserror =
-        (disks[disknum].minimumspace >= 0
-            ? avail * multiplier < disks[disknum].minimumspace
-            : 100 - percent <= disks[disknum].minpercent) ? 1 : 0;
-    switch (vp->magic) {
-    case DISKTOTAL:
-        if ( totalblks > ( INT32_MAX / multiplier ))
-            long_ret = INT32_MAX;
-        else
-            long_ret = (long)(totalblks * multiplier);
-        return ((u_char *) (&long_ret));
-    case DISKAVAIL:
-        if ( avail > ( INT32_MAX / multiplier ))
-            long_ret = INT32_MAX;
-        else
-            long_ret = (long)(avail * multiplier);
-        return ((u_char *) (&long_ret));
-    case DISKUSED:
-        if ( used > (  INT32_MAX / multiplier ))
-            long_ret = INT32_MAX;
-        else
-            long_ret = (long)(used * multiplier);
-        return ((u_char *) (&long_ret));
-    case DISKPERCENT:
-        long_ret = percent;
-        return ((u_char *) (&long_ret));
-    case ERRORFLAG:
-        long_ret = iserror;
-        return ((u_char *) (&long_ret));
-    case ERRORMSG:
-        if (iserror) {
-            if (disks[disknum].minimumspace >= 0)
-                snprintf(errmsg, sizeof(errmsg),
-                        "%s: less than %d free (= %d)",
-                        disks[disknum].path, disks[disknum].minimumspace,
-                        avail * filesys.fs_fsize / 1024);
-            else
-                snprintf(errmsg, sizeof(errmsg),
-                        "%s: less than %d%% free (= %d%%)",
-                        disks[disknum].path, disks[disknum].minpercent,
-                        percent);
-            errmsg[ sizeof(errmsg)-1 ] = 0;
-        } else
-            errmsg[0] = 0;
-        *var_len = strlen(errmsg);
-        return ((u_char *) (errmsg));
-    }
-#endif
-#endif
     return NULL;
 }
diff --git a/agent/mibgroup/ucd-snmp/disk.h b/agent/mibgroup/ucd-snmp/disk.h
index 6bc5b14..20e9332 100644
--- a/agent/mibgroup/ucd-snmp/disk.h
+++ b/agent/mibgroup/ucd-snmp/disk.h
@@ -7,7 +7,7 @@
 
 void            init_disk(void);
 
-config_require(util_funcs)
+config_require(util_funcs/header_simple_table)
 
      extern FindVarMethod var_extensible_disk;
 
@@ -21,5 +21,11 @@
 #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_H */
diff --git a/agent/mibgroup/ucd-snmp/disk_hw.c b/agent/mibgroup/ucd-snmp/disk_hw.c
new file mode 100644
index 0000000..ea37610
--- /dev/null
+++ b/agent/mibgroup/ucd-snmp/disk_hw.c
@@ -0,0 +1,424 @@
+/*
+ * 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_cache  *cache;
+
+    /* Update the fsys H/W module */
+    cache = netsnmp_fsys_get_cache();
+    netsnmp_cache_check_and_reload(cache);
+
+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..ff42ed9
--- /dev/null
+++ b/agent/mibgroup/ucd-snmp/disk_hw.h
@@ -0,0 +1,32 @@
+/*
+ *  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)
+config_require(hardware/fsys)
+
+     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 08ef3f1..4ea8987 100644
--- a/agent/mibgroup/ucd-snmp/diskio.c
+++ b/agent/mibgroup/ucd-snmp/diskio.c
@@ -25,13 +25,13 @@
 # endif
 #endif
 
+#include <math.h>
+
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/agent_callbacks.h>
 
-/*
- * header_generic() comes from here 
- */
-#include "util_funcs.h"
+#include "util_funcs/header_simple_table.h"
 
 /*
  * include our .h file 
@@ -52,27 +52,34 @@
 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 */
 #endif
 
-#if defined(bsdi3) || defined(bsdi4)
+#if defined(bsdi3) || defined(bsdi4) || defined(openbsd4)
 #include <string.h>
 #include <sys/param.h>
 #include <sys/sysctl.h>
+#ifdef openbsd4
+#include <sys/disk.h>
+#else
 #include <sys/diskstats.h>
+#endif
 #endif                          /* bsdi */
 
-#if defined (freebsd4) || defined(freebsd5)
+#if defined(HAVE_GETDEVS) || defined(HAVE_DEVSTAT_GETDEVS)
 #include <sys/param.h>
-#if __FreeBSD_version >= 500101
+#if HAVE_DEVSTAT_GETDEVS
 #include <sys/resource.h>       /* for CPUSTATES in devstat.h */
-#elif !defined(dragonfly)
+#elif HAVE_SYS_DKSTAT_H
 #include <sys/dkstat.h>
 #endif
 #include <devstat.h>
@@ -84,12 +91,17 @@
 
 #endif                          /* freebsd */
 
-#if defined(freebsd5) && __FreeBSD_version >= 500107
+#if HAVE_DEVSTAT_GETDEVS
   #define GETDEVS(x) devstat_getdevs(NULL, (x))
 #else
   #define GETDEVS(x) getdevs((x))
 #endif
 
+#if defined (linux)
+#define DISKIO_SAMPLE_INTERVAL 5
+void devla_getstats(unsigned int regno, void * dummy);
+#endif /* linux */
+
 #if defined (darwin)
 #include <CoreFoundation/CoreFoundation.h>
 #include <IOKit/IOKitLib.h>
@@ -100,14 +112,20 @@
 static mach_port_t masterPort;		/* to communicate with I/O Kit	*/
 #endif                          /* darwin */
 
-void            diskio_parse_config(const char *, char *);
+#if !defined(solaris2) && !(defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7))
+static int      getstats(void);
+#endif
 
-#if defined (freebsd4) || defined(freebsd5)
+#if defined (HAVE_GETDEVS) || defined(HAVE_DEVSTAT_GETDEVS)
 void		devla_getstats(unsigned int regno, void *dummy);
 #endif
 
 FILE           *file;
 
+#ifdef linux
+static int	diskio_free_config(int, int, void *, void *);
+#endif
+
          /*********************
 	 *
 	 *  Initialisation & common implementation functions
@@ -142,19 +160,30 @@
      */
 
     struct variable2 diskio_variables[] = {
-        {DISKIO_INDEX, ASN_INTEGER, RONLY, var_diskio, 1, {1}},
-        {DISKIO_DEVICE, ASN_OCTET_STR, RONLY, var_diskio, 1, {2}},
-        {DISKIO_NREAD, ASN_COUNTER, RONLY, var_diskio, 1, {3}},
-        {DISKIO_NWRITTEN, ASN_COUNTER, RONLY, var_diskio, 1, {4}},
-        {DISKIO_READS, ASN_COUNTER, RONLY, var_diskio, 1, {5}},
-        {DISKIO_WRITES, ASN_COUNTER, RONLY, var_diskio, 1, {6}},
-#if defined(freebsd4) || defined(freebsd5)
-        {DISKIO_LA1, ASN_INTEGER, RONLY, var_diskio, 1, {9}},
-        {DISKIO_LA5, ASN_INTEGER, RONLY, var_diskio, 1, {10}},
-        {DISKIO_LA15, ASN_INTEGER, RONLY, var_diskio, 1, {11}},
+        {DISKIO_INDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_diskio, 1, {1}},
+        {DISKIO_DEVICE, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_diskio, 1, {2}},
+        {DISKIO_NREAD, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_diskio, 1, {3}},
+        {DISKIO_NWRITTEN, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_diskio, 1, {4}},
+        {DISKIO_READS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_diskio, 1, {5}},
+        {DISKIO_WRITES, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_diskio, 1, {6}},
+#if defined(HAVE_GETDEVS) || defined(HAVE_DEVSTAT_GETDEVS) || defined(linux)
+        {DISKIO_LA1, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_diskio, 1, {9}},
+        {DISKIO_LA5, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_diskio, 1, {10}},
+        {DISKIO_LA15, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_diskio, 1, {11}},
 #endif
-        {DISKIO_NREADX, ASN_COUNTER64, RONLY, var_diskio, 1, {12}},
-        {DISKIO_NWRITTENX, ASN_COUNTER64, RONLY, var_diskio, 1, {13}},
+        {DISKIO_NREADX, ASN_COUNTER64, NETSNMP_OLDAPI_RONLY,
+         var_diskio, 1, {12}},
+        {DISKIO_NWRITTENX, ASN_COUNTER64, NETSNMP_OLDAPI_RONLY,
+         var_diskio, 1, {13}},
     };
 
     /*
@@ -192,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
      */
@@ -200,14 +229,54 @@
     ps_disk = NULL;
 #endif
 
-#if defined (freebsd4) || defined(freebsd5)
-	devla_getstats(0, NULL);
-	/* collect LA data regularly */
-	snmp_alarm_register(DISKIO_SAMPLE_INTERVAL, SA_REPEAT, devla_getstats, NULL);
+#if defined (HAVE_GETDEVS) || defined(HAVE_DEVSTAT_GETDEVS) || defined(linux)
+    devla_getstats(0, NULL);
+    /* collect LA data regularly */
+    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)
@@ -422,12 +491,289 @@
 }
 #endif                          /* bsdi */
 
-#if defined(freebsd4) || defined(freebsd5)
+#if defined(openbsd4)
+static int      ndisk;
+static struct diskstats *dk;
+static char   **dkname;
+
+static int
+getstats(void)
+{
+    time_t          now;
+    int             mib[2];
+    char           *t, *tp,*te;
+    size_t          size, dkn_size;
+    int             i;
+
+    now = time(NULL);
+    if (cache_time + CACHE_TIMEOUT > now) {
+        return 1;
+    }
+    mib[0] = CTL_HW;
+    mib[1] = HW_DISKSTATS;
+    size = 0;
+    if (sysctl(mib, 2, NULL, &size, NULL, 0) < 0) {
+        perror("Can't get size of HW_DISKSTATS mib");
+        return 0;
+    }
+    if (ndisk != size / sizeof(*dk)) {
+        if (dk)
+            free(dk);
+        if (dkname) {
+            for (i = 0; i < ndisk; i++)
+                if (dkname[i])
+                    free(dkname[i]);
+            free(dkname);
+        }
+        ndisk = size / sizeof(*dk);
+        if (ndisk == 0)
+            return 0;
+        dkname = malloc(ndisk * sizeof(char *));
+        mib[0] = CTL_HW;
+        mib[1] = HW_DISKNAMES;
+        if (sysctl(mib, 2, NULL, &dkn_size, NULL, 0) < 0) {
+            perror("Can't get size of HW_DISKNAMES mib");
+            return 0;
+        }
+        te = tp = t = malloc(dkn_size);
+        if (sysctl(mib, 2, t, &dkn_size, NULL, 0) < 0) {
+            perror("Can't get size of HW_DISKNAMES mib");
+            return 0;
+        }
+        for (i = 0; i < ndisk; i++) {
+	    while (te-t < dkn_size && *te != ',') te++;
+	    *te++ = '\0';
+            dkname[i] = strdup(tp);
+            tp = te;
+        }
+        free(t);
+        dk = malloc(ndisk * sizeof(*dk));
+    }
+    mib[0] = CTL_HW;
+    mib[1] = HW_DISKSTATS;
+    if (sysctl(mib, 2, dk, &size, NULL, 0) < 0) {
+        perror("Can't get HW_DISKSTATS mib");
+        return 0;
+    }
+    cache_time = now;
+    return 1;
+}
+
+u_char         *
+var_diskio(struct variable * vp,
+           oid * name,
+           size_t * length,
+           int exact, size_t * var_len, WriteMethod ** write_method)
+{
+    static long     long_ret;
+    static struct counter64 c64_ret;
+    unsigned int    indx;
+
+    if (getstats() == 0)
+        return 0;
+
+    if (header_simple_table
+        (vp, name, length, exact, var_len, write_method, ndisk))
+        return NULL;
+
+    indx = (unsigned int) (name[*length - 1] - 1);
+    if (indx >= ndisk)
+        return NULL;
+
+    switch (vp->magic) {
+    case DISKIO_INDEX:
+        long_ret = (long) indx + 1;
+        return (u_char *) & long_ret;
+    case DISKIO_DEVICE:
+        *var_len = strlen(dkname[indx]);
+        return (u_char *) dkname[indx];
+    case DISKIO_NREAD:
+        long_ret = (unsigned long) (dk[indx].ds_rbytes) & 0xffffffff;
+        return (u_char *) & long_ret;
+    case DISKIO_NWRITTEN:
+        long_ret = (unsigned long) (dk[indx].ds_wbytes) & 0xffffffff;
+        return (u_char *) & long_ret;
+    case DISKIO_READS:
+        long_ret = (unsigned long) dk[indx].ds_rxfer & 0xffffffff;
+        return (u_char *) & long_ret;
+    case DISKIO_WRITES:
+        long_ret = (unsigned long) dk[indx].ds_wxfer & 0xffffffff;
+        return (u_char *) & long_ret;
+    case DISKIO_NREADX:
+        *var_len = sizeof(struct counter64);
+        c64_ret.low = dk[indx].ds_rbytes & 0xffffffff;
+        c64_ret.high = dk[indx].ds_rbytes >> 32;
+        return (u_char *) & c64_ret;
+    case DISKIO_NWRITTENX:
+        *var_len = sizeof(struct counter64);
+        c64_ret.low = dk[indx].ds_rbytes & 0xffffffff;
+        c64_ret.high = dk[indx].ds_rbytes >> 32;
+        return (u_char *) & c64_ret;
+
+    default:
+        ERROR_MSG("diskio.c: don't know how to handle this request.");
+    }
+    return NULL;
+}
+#endif                          /* openbsd */
+
+#ifdef __NetBSD__
+#include <sys/sysctl.h>
+static int      ndisk;
+#ifdef HW_IOSTATNAMES
+static int nmib[2] = {CTL_HW, HW_IOSTATNAMES};
+#else
+static int nmib[2] = {CTL_HW, HW_DISKNAMES};
+#endif
+#ifdef HW_DISKSTATS
+#include <sys/disk.h>
+static int dmib[3] = {CTL_HW, HW_DISKSTATS, sizeof(struct disk_sysctl)};
+static struct disk_sysctl *dk;
+#endif
+#ifdef HW_IOSTATS
+#include <sys/iostat.h>
+static int dmib[3] = {CTL_HW, HW_IOSTATS, sizeof(struct io_sysctl)};
+static struct io_sysctl *dk;
+#endif
+static char   **dkname;
+
+static int
+getstats(void)
+{
+    time_t          now;
+    char           *t, *tp;
+    size_t          size, dkn_size;
+    int             i;
+
+    now = time(NULL);
+    if (cache_time + CACHE_TIMEOUT > now) {
+        return 1;
+    }
+    size = 0;
+    if (sysctl(dmib, 3, NULL, &size, NULL, 0) < 0) {
+        perror("Can't get size of HW_DISKSTATS/HW_IOSTATS mib");
+        return 0;
+    }
+    if (ndisk != size / dmib[2]) {
+        if (dk)
+            free(dk);
+        if (dkname) {
+            for (i = 0; i < ndisk; i++)
+                if (dkname[i])
+                    free(dkname[i]);
+            free(dkname);
+        }
+        ndisk = size / dmib[2];
+        if (ndisk == 0)
+            return 0;
+        dkname = malloc(ndisk * sizeof(char *));
+        dkn_size = 0;
+        if (sysctl(nmib, 2, NULL, &dkn_size, NULL, 0) < 0) {
+            perror("Can't get size of HW_DISKNAMES mib");
+            return 0;
+        }
+        t = malloc(dkn_size);
+        if (sysctl(nmib, 2, t, &dkn_size, NULL, 0) < 0) {
+            perror("Can't get size of HW_DISKNAMES mib");
+            return 0;
+        }
+        for (i = 0, tp = strtok(t, " "); tp && i < ndisk; i++,
+	    tp = strtok(NULL, " ")) {
+            dkname[i] = strdup(tp);
+        }
+        free(t);
+        dk = malloc(ndisk * sizeof(*dk));
+    }
+    if (sysctl(dmib, 3, dk, &size, NULL, 0) < 0) {
+        perror("Can't get HW_DISKSTATS/HW_IOSTATS mib");
+        return 0;
+    }
+    cache_time = now;
+    return 1;
+}
+
+u_char *
+var_diskio(struct variable * vp,
+           oid * name,
+           size_t * length,
+           int exact, size_t * var_len, WriteMethod ** write_method)
+{
+    static long     long_ret;
+    unsigned int    indx;
+
+    if (getstats() == 0)
+        return 0;
+
+    if (header_simple_table
+        (vp, name, length, exact, var_len, write_method, ndisk))
+        return NULL;
+
+    indx = (unsigned int) (name[*length - 1] - 1);
+    if (indx >= ndisk)
+        return NULL;
+
+    switch (vp->magic) {
+    case DISKIO_INDEX:
+        long_ret = (long) indx + 1;
+        return (u_char *) & long_ret;
+
+    case DISKIO_DEVICE:
+        *var_len = strlen(dkname[indx]);
+        return (u_char *) dkname[indx];
+
+    case DISKIO_NREAD:
+#ifdef HW_DISKSTATS
+     	long_ret = dk[indx].dk_rbytes;
+#endif
+#ifdef HW_IOSTATS
+	if (dk[indx].type == IOSTAT_DISK)
+	    long_ret = dk[indx].rbytes;
+#endif
+        return (u_char *) & long_ret;
+
+    case DISKIO_NWRITTEN:
+#ifdef HW_DISKSTATS
+     	long_ret = dk[indx].dk_wbytes;
+#endif
+#ifdef HW_IOSTATS
+	if (dk[indx].type == IOSTAT_DISK)
+	    long_ret = dk[indx].wbytes;
+#endif
+        return (u_char *) & long_ret;
+
+    case DISKIO_READS:
+#ifdef HW_DISKSTATS
+     	long_ret = dk[indx].dk_rxfer;
+#endif
+#ifdef HW_IOSTATS
+	if (dk[indx].type == IOSTAT_DISK)
+	    long_ret = dk[indx].rxfer;
+#endif
+        return (u_char *) & long_ret;
+
+    case DISKIO_WRITES:
+#ifdef HW_DISKSTATS
+     	long_ret = dk[indx].dk_wxfer;
+#endif
+#ifdef HW_IOSTATS
+	if (dk[indx].type == IOSTAT_DISK)
+	    long_ret = dk[indx].wxfer;
+#endif
+        return (u_char *) & long_ret;
+
+    default:
+        ERROR_MSG("diskio.c: don't know how to handle this request.");
+    }
+    return NULL;
+}
+#endif /* __NetBSD__ */
+
+#if defined(HAVE_GETDEVS) || defined(HAVE_DEVSTAT_GETDEVS)
 
 /* disk load average patch by Rojer */
 
 struct dev_la {
-#if ( defined(freebsd5) && __FreeBSD_version >= 500107 )
+#if HAVE_DEVSTAT_GETDEVS
         struct bintime prev;
 #else
         struct timeval prev;
@@ -439,7 +785,7 @@
 static struct dev_la *devloads = NULL;
 static int ndevs = 0;
 
-#if ! ( defined(freebsd5) && __FreeBSD_version >= 500107 )
+#if ! HAVE_DEVSTAT_GETDEVS
 double devla_timeval_diff(struct timeval *t1, struct timeval *t2) {
 
         double dt1 = (double) t1->tv_sec + (double) t1->tv_usec * 0.000001;
@@ -488,7 +834,7 @@
         if (ndevs == 0) {
                 ndevs = lastat->dinfo->numdevs;
                 devloads = (struct dev_la *) malloc(ndevs * sizeof(struct dev_la));
-                bzero(devloads, ndevs * sizeof(struct dev_la));
+                memset(devloads, '\0', ndevs * sizeof(struct dev_la));
                 for (i=0; i < ndevs; i++) {
                         devloads[i].la1 = devloads[i].la5 = devloads[i].la15 = 0;
                         memcpy(&devloads[i].prev, &lastat->dinfo->devices[i].busy_time, sizeof(devloads[i].prev));
@@ -501,7 +847,7 @@
                 }
 
         for (i=0; i<ndevs; i++) {
-#if defined(freebsd5) && __FreeBSD_version >= 500107
+#if HAVE_DEVSTAT_GETDEVS
                 busy_time = devstat_compute_etime(&lastat->dinfo->devices[i].busy_time, &devloads[i].prev);
 #else
                 busy_time = devla_timeval_diff(&devloads[i].prev, &lastat->dinfo->devices[i].busy_time);
@@ -597,14 +943,14 @@
         *var_len = strlen(stat->dinfo->devices[indx].device_name);
         return (u_char *) stat->dinfo->devices[indx].device_name;
     case DISKIO_NREAD:
-#if defined(freebsd5) && __FreeBSD_version >= 500107
+#if HAVE_DEVSTAT_GETDEVS
         long_ret = (signed long) stat->dinfo->devices[indx].bytes[DEVSTAT_READ];
 #else
         long_ret = (signed long) stat->dinfo->devices[indx].bytes_read;
 #endif
         return (u_char *) & long_ret;
     case DISKIO_NWRITTEN:
-#if defined(freebsd5) && __FreeBSD_version >= 500107
+#if HAVE_DEVSTAT_GETDEVS
         long_ret = (signed long) stat->dinfo->devices[indx].bytes[DEVSTAT_WRITE];
 #else
         long_ret = (signed long) stat->dinfo->devices[indx].bytes_written;
@@ -612,7 +958,7 @@
         return (u_char *) & long_ret;
     case DISKIO_NREADX:
         *var_len = sizeof(struct counter64);
-#if defined(freebsd5) && __FreeBSD_version >= 500107
+#if HAVE_DEVSTAT_GETDEVS
         longlong_ret = stat->dinfo->devices[indx].bytes[DEVSTAT_READ];
 #else
         longlong_ret = stat->dinfo->devices[indx].bytes_read;
@@ -622,7 +968,7 @@
         return (u_char *) & c64_ret;
     case DISKIO_NWRITTENX:
         *var_len = sizeof(struct counter64);
-#if defined(freebsd5) && __FreeBSD_version >= 500107
+#if HAVE_DEVSTAT_GETDEVS
         longlong_ret = stat->dinfo->devices[indx].bytes[DEVSTAT_WRITE];
 #else
         longlong_ret = stat->dinfo->devices[indx].bytes_written;
@@ -631,14 +977,14 @@
         c64_ret.high = longlong_ret >> 32;
         return (u_char *) & c64_ret;
     case DISKIO_READS:
-#if defined(freebsd5) && __FreeBSD_version >= 500107
+#if HAVE_DEVSTAT_GETDEVS
         long_ret = (signed long) stat->dinfo->devices[indx].operations[DEVSTAT_READ];
 #else
         long_ret = (signed long) stat->dinfo->devices[indx].num_reads;
 #endif
         return (u_char *) & long_ret;
     case DISKIO_WRITES:
-#if defined(freebsd5) && __FreeBSD_version >= 500107
+#if HAVE_DEVSTAT_GETDEVS
         long_ret = (signed long) stat->dinfo->devices[indx].operations[DEVSTAT_WRITE];
 #else
         long_ret = (signed long) stat->dinfo->devices[indx].num_writes;
@@ -685,6 +1031,13 @@
     unsigned long  aveq;
 } linux_diskio;
 
+/* disk load averages */
+typedef struct linux_diskio_la
+{
+    unsigned long use_prev;
+    double la1, la5, la15;
+} linux_diskio_la;
+
 typedef struct linux_diskio_header
 {
     linux_diskio* indices;
@@ -692,10 +1045,79 @@
     int alloc;
 } linux_diskio_header;
 
+typedef struct linux_diskio_la_header
+{
+    linux_diskio_la * indices;   
+    int length;
+} linux_diskio_la_header;
+
 static linux_diskio_header head;
+static linux_diskio_la_header la_head;
 
+void devla_getstats(unsigned int regno, void * dummy) {
 
-int getstats(void)
+    static double expon1, expon5, expon15;
+    double busy_time, busy_percent;
+    int idx;
+
+    if (getstats() == 1) {
+        ERROR_MSG("can't do diskio getstats()\n");
+        return;
+    }
+
+    if (!la_head.length) {
+        la_head.indices = (linux_diskio_la *) malloc(head.length * sizeof(linux_diskio_la));
+        for (idx=0; idx<head.length; idx++) {
+            la_head.indices[idx].la1 = la_head.indices[idx].la5 = la_head.indices[idx].la15 = 0.; 
+            la_head.indices[idx].use_prev = head.indices[idx].use;
+        }
+        la_head.length = head.length;
+        expon1 = exp(-(((double)DISKIO_SAMPLE_INTERVAL) / ((double)60)));
+        expon5 = exp(-(((double)DISKIO_SAMPLE_INTERVAL) / ((double)300)));
+        expon15 = exp(-(((double)DISKIO_SAMPLE_INTERVAL) / ((double)900)));
+    }
+    else if (head.length - la_head.length) {
+        la_head.indices = (linux_diskio_la *) realloc(la_head.indices, head.length * sizeof(linux_diskio_la));
+        for (idx=la_head.length; idx<head.length; idx++) {
+            la_head.indices[idx].la1 = la_head.indices[idx].la5 = la_head.indices[idx].la15 = 0.; 
+            la_head.indices[idx].use_prev = head.indices[idx].use;
+        }
+        la_head.length = head.length;
+    }
+
+    for (idx=0; idx<head.length; idx++) {
+        busy_time = head.indices[idx].use - la_head.indices[idx].use_prev;
+        busy_percent = busy_time * 100. / ((double) DISKIO_SAMPLE_INTERVAL) / 1000.;
+        la_head.indices[idx].la1 = la_head.indices[idx].la1 * expon1 + busy_percent * (1. - expon1);
+        la_head.indices[idx].la5 = la_head.indices[idx].la5 * expon5 + busy_percent * (1. - expon5);
+        la_head.indices[idx].la15 = la_head.indices[idx].la15 * expon15 + busy_percent * (1. - expon15);
+        /*
+          fprintf(stderr, "(%d) update la1=%f la5=%f la15=%f\n",
+          idx, la_head.indices[idx].la1, la_head.indices[idx].la5, la_head.indices[idx].la15);   
+        */
+        la_head.indices[idx].use_prev = head.indices[idx].use;
+    }
+}
+
+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;
@@ -734,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 {
@@ -772,7 +1195,8 @@
                fclose(parts);
                return 1;
             }
-	    head.length++;
+            if (!is_excluded(pTemp->name))
+	        head.length++;
 	}
     }
 
@@ -826,6 +1250,15 @@
     case DISKIO_WRITES:
       long_ret = head.indices[indx].wio & 0xffffffff;
       return (u_char *) & long_ret;
+    case DISKIO_LA1:
+      long_ret = la_head.indices[indx].la1;
+      return (u_char *) & long_ret;
+    case DISKIO_LA5:
+      long_ret = la_head.indices[indx].la5;
+      return (u_char *) & long_ret;
+    case DISKIO_LA15:
+      long_ret = la_head.indices[indx].la15;
+      return (u_char *) & long_ret;
     case DISKIO_NREADX:
       *var_len = sizeof(struct counter64);
       c64_ret.low = head.indices[indx].rsect * 512 & 0xffffffff;
@@ -1101,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/diskio.h b/agent/mibgroup/ucd-snmp/diskio.h
index 05596ab..8cd206b 100644
--- a/agent/mibgroup/ucd-snmp/diskio.h
+++ b/agent/mibgroup/ucd-snmp/diskio.h
@@ -1,7 +1,7 @@
 #ifndef _MIBGROUP_DISKIO_H
 #define _MIBGROUP_DISKIO_H
 
-config_require(util_funcs)
+config_require(util_funcs/header_simple_table)
 config_add_mib(UCD-DISKIO-MIB)
 
     /*
diff --git a/agent/mibgroup/ucd-snmp/dlmod.c b/agent/mibgroup/ucd-snmp/dlmod.c
index a6b9b34..0b711fb 100644
--- a/agent/mibgroup/ucd-snmp/dlmod.c
+++ b/agent/mibgroup/ucd-snmp/dlmod.c
@@ -3,6 +3,7 @@
  *
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <ctype.h>
 #if HAVE_STDLIB_H
@@ -14,24 +15,10 @@
 #else
 #include <strings.h>
 #endif
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#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>
 
-#include "struct.h"
-#include "util_funcs.h"
-
-#if defined(HAVE_DLFCN_H) && (defined(HAVE_DLOPEN) || defined(HAVE_LIBDL)) \
-    || defined(WIN32)
-
 #if defined(WIN32)
 #include <windows.h>
 #else
@@ -39,68 +26,33 @@
 #endif
 #include "dlmod.h"
 
-static struct dlmod *dlmods;
-static int      dlmod_next_index = 1;
-static char     dlmod_path[1024];
+#ifndef SNMPDLMODPATH
+#define SNMPDLMODPATH "/usr/local/lib/snmp/dlmod"
+#endif
 
-static void     dlmod_parse_config(const char *, char *);
-static void     dlmod_free_config(void);
-
-/*
- * this variable defines function callbacks and type return
- * information for the dlmod mib
- */
-static struct variable4 dlmod_variables[] = {
-    {DLMODNEXTINDEX, ASN_INTEGER, RONLY, var_dlmod, 1, {1}},
-    {DLMODNAME, ASN_OCTET_STR, RWRITE, var_dlmodEntry, 3, {2, 1, 2}},
-    {DLMODPATH, ASN_OCTET_STR, RWRITE, var_dlmodEntry, 3, {2, 1, 3}},
-    {DLMODERROR, ASN_OCTET_STR, RONLY, var_dlmodEntry, 3, {2, 1, 4}},
-    {DLMODSTATUS, ASN_INTEGER, RWRITE, var_dlmodEntry, 3, {2, 1, 5}},
+struct dlmod {
+  struct dlmod   *next;
+  int             index;
+  char            name[64 + 1];
+  char            path[255 + 1];
+  char            error[255 + 1];
+  void           *handle;
+  int             status;
 };
 
-static oid      dlmod_variables_oid[] = { 1, 3, 6, 1, 4, 1, 2021, 13, 14 };
-static int      dlmod_variables_oid_len = 9;
+#define DLMOD_LOADED		1
+#define DLMOD_UNLOADED		2
+#define DLMOD_ERROR		3
+#define DLMOD_LOAD		4
+#define DLMOD_UNLOAD		5
+#define DLMOD_CREATE		6
+#define DLMOD_DELETE		7
 
-void
-init_dlmod(void)
-{
-    REGISTER_MIB("dlmod", dlmod_variables, variable4, dlmod_variables_oid);
+static struct dlmod *dlmods;
+static unsigned int dlmod_next_index = 1;
+static char     dlmod_path[1024];
 
-    /*
-     * TODO: REGISTER_SYSOR_ENTRY 
-     */
-
-    DEBUGMSGTL(("dlmod", "register mib\n"));
-
-    snmpd_register_config_handler("dlmod", dlmod_parse_config,
-                                  dlmod_free_config,
-                                  "module-name module-path");
-
-    {
-        const char * const p = getenv("SNMPDLMODPATH");
-        strlcpy(dlmod_path, SNMPDLMODPATH, sizeof(dlmod_path));
-        if (p) {
-            if (p[0] == ENV_SEPARATOR_CHAR) {
-                int len = strlen(dlmod_path);
-                if (len >= 1 && dlmod_path[len - 1] != ENV_SEPARATOR_CHAR)
-                    strlcat(dlmod_path, ENV_SEPARATOR, sizeof(dlmod_path));
-                strlcat(dlmod_path, p + 1, sizeof(dlmod_path));
-            } else
-                strlcpy(dlmod_path, p, sizeof(dlmod_path));
-        }
-    }
-
-    DEBUGMSGTL(("dlmod", "dlmod_path: %s\n", dlmod_path));
-}
-
-void
-deinit_dlmod(void)
-{
-    unregister_mib(dlmod_variables_oid, dlmod_variables_oid_len);
-    snmpd_unregister_config_handler("dlmod");
-}
-
-struct dlmod   *
+static struct dlmod   *
 dlmod_create_module(void)
 {
     struct dlmod  **pdlmod, *dlm;
@@ -120,7 +72,7 @@
     return dlm;
 }
 
-void
+static void
 dlmod_delete_module(struct dlmod *dlm)
 {
     struct dlmod  **pdlmod;
@@ -227,14 +179,9 @@
 #endif
 }
 
-void
+static void
 dlmod_load_module(struct dlmod *dlm)
 {
-    char            sym_init[64];
-    char           *p, tmp_path[255];
-    dl_function_ptr dl_init;
-    char           *st;
-
     DEBUGMSGTL(("dlmod", "dlmod_load_module %s: %s\n", dlm->name,
                 dlm->path));
 
@@ -251,6 +198,8 @@
             return;
         }
     } else {
+        char *st, *p, tmp_path[255];
+
         for (p = strtok_r(dlmod_path, ENV_SEPARATOR, &st); p;
              p = strtok_r(NULL, ENV_SEPARATOR, &st)) {
             snprintf(tmp_path, sizeof(tmp_path), "%s/%s.%s", p, dlm->path,
@@ -267,25 +216,30 @@
         if (dlm->status == DLMOD_ERROR)
             return;
     }
-    snprintf(sym_init, sizeof(sym_init), "init_%s", dlm->name);
-    dl_init = dlmod_dlsym(dlm->handle, sym_init);
-    if (dl_init == NULL) {
-        dlmod_dlclose(dlm->handle);
-        snprintf(dlm->error, sizeof(dlm->error),
-                 "dlsym failed: can't find \'%s\'", sym_init);
-        dlm->status = DLMOD_ERROR;
-        return;
+    {
+        char sym_init[64 + sizeof("init_")];
+        dl_function_ptr dl_init;
+
+        snprintf(sym_init, sizeof(sym_init), "init_%s", dlm->name);
+        dl_init = dlmod_dlsym(dlm->handle, sym_init);
+        if (dl_init == NULL) {
+            dlmod_dlclose(dlm->handle);
+            snprintf(dlm->error, sizeof(dlm->error),
+                     "dlsym failed: can't find \'%s\'", sym_init);
+            dlm->status = DLMOD_ERROR;
+            return;
+        }
+        dl_init();
     }
 
-    dl_init();
     dlm->error[0] = '\0';
     dlm->status = DLMOD_LOADED;
 }
 
-void
+static void
 dlmod_unload_module(struct dlmod *dlm)
 {
-    char            sym_deinit[64];
+    char            sym_deinit[64 + sizeof("shutdown_")];
     dl_function_ptr dl_deinit;
 
     if (!dlm || dlm->status != DLMOD_LOADED)
@@ -293,18 +247,22 @@
 
     snprintf(sym_deinit, sizeof(sym_deinit), "deinit_%s", dlm->name);
     dl_deinit = dlmod_dlsym(dlm->handle, sym_deinit);
-    if (dl_deinit == NULL) {
-        snprintf(dlm->error, sizeof(dlm->error),
-                 "dlsym failed: can't find \'%s\'", sym_deinit);
-    } else {
+    if (!dl_deinit) {
+        snprintf(sym_deinit, sizeof(sym_deinit), "shutdown_%s", dlm->name);
+        dl_deinit = dlmod_dlsym(dlm->handle, sym_deinit);
+    }
+    if (dl_deinit) {
+        DEBUGMSGTL(("dlmod", "Calling %s()\n", sym_deinit));
         dl_deinit();
+    } else {
+        DEBUGMSGTL(("dlmod", "No destructor for %s\n", dlm->name));
     }
     dlmod_dlclose(dlm->handle);
     dlm->status = DLMOD_UNLOADED;
     DEBUGMSGTL(("dlmod", "Module %s unloaded\n", dlm->name));
 }
 
-struct dlmod   *
+static struct dlmod   *
 dlmod_get_by_index(int iindex)
 {
     struct dlmod   *dlmod;
@@ -316,6 +274,10 @@
     return NULL;
 }
 
+/*
+ * Functions to parse config lines
+ */
+
 static void
 dlmod_parse_config(const char *token, char *cptr)
 {
@@ -328,7 +290,7 @@
         return;
     }
     /*
-     * remove comments 
+     * remove comments
      */
     *(cptr + strcspn(cptr, "#;\r\n")) = '\0';
 
@@ -337,7 +299,7 @@
         return;
 
     /*
-     * dynamic module name 
+     * dynamic module name
      */
     dlm_name = strtok_r(cptr, "\t ", &st);
     if (dlm_name == NULL) {
@@ -348,7 +310,7 @@
     strlcpy(dlm->name, dlm_name, sizeof(dlm->name));
 
     /*
-     * dynamic module path 
+     * dynamic module path
      */
     dlm_path = strtok_r(NULL, "\t ", &st);
     if (dlm_path)
@@ -376,13 +338,23 @@
     dlmods = NULL;
 }
 
+/*
+ * Functions to handle SNMP management
+ */
+
+#define DLMODNEXTINDEX 		1
+#define DLMODINDEX     		2
+#define DLMODNAME      		3
+#define DLMODPATH      		4
+#define DLMODERROR     		5
+#define DLMODSTATUS    		6
 
 /*
  * header_dlmod(...
  * Arguments:
  * vp     IN      - pointer to variable entry that points here
  * name    IN/OUT  - IN/name requested, OUT/name found
- * length  IN/OUT  - length of IN/OUT oid's 
+ * length  IN/OUT  - length of IN/OUT oid's
  * exact   IN      - TRUE if an exact match was requested
  * var_len OUT     - length of variable or 0 if function returned
  * write_method
@@ -414,7 +386,7 @@
 }
 
 
-u_char         *
+static u_char         *
 var_dlmod(struct variable * vp,
           oid * name,
           size_t * length,
@@ -422,7 +394,7 @@
 {
 
     /*
-     * variables we may use later 
+     * variables we may use later
      */
 
     *write_method = 0;         /* assume it isn't writable for the time being */
@@ -430,10 +402,10 @@
 
     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. 
+     * this is where we do the value assignments for the mib results.
      */
     switch (vp->magic) {
     case DLMODNEXTINDEX:
@@ -443,112 +415,11 @@
         DEBUGMSGTL(("dlmod", "unknown sub-id %d in var_dlmod\n",
                     vp->magic));
     }
-    return 0;
+    return NULL;
 }
 
 
-/*
- * header_dlmodEntry(...
- * Arguments:
- * vp     IN      - pointer to variable entry that points here
- * name    IN/OUT  - IN/name requested, OUT/name found
- * length  IN/OUT  - length of IN/OUT oid's 
- * exact   IN      - TRUE if an exact match was requested
- * var_len OUT     - length of variable or 0 if function returned
- * write_method
- * 
- */
-
-
-static struct dlmod *
-header_dlmodEntry(struct variable *vp,
-                  oid * name,
-                  size_t * length,
-                  int exact, size_t * var_len, WriteMethod ** write_method)
-{
-#define DLMODENTRY_NAME_LENGTH 12
-    oid             newname[MAX_OID_LEN];
-    int             result;
-    struct dlmod   *dlm = 0;
-    int             dlmod_index;
-
-    memcpy(newname, vp->name, vp->namelen * sizeof(oid));
-    *write_method = 0;
-
-    for (dlmod_index = 1; dlmod_index < dlmod_next_index; dlmod_index++) {
-        dlm = dlmod_get_by_index(dlmod_index);
-
-        DEBUGMSGTL(("dlmod", "dlmodEntry dlm: %p dlmod_index: %d\n",
-                    dlm, dlmod_index));
-
-        if (dlm) {
-            newname[12] = dlmod_index;
-            result = snmp_oid_compare(name, *length, newname, vp->namelen + 1);
-
-            if ((exact && (result == 0)) || (!exact && (result < 0)))
-                break;
-        }
-    }
-
-    if (dlmod_index >= dlmod_next_index) {
-        if (dlmod_index == dlmod_next_index &&
-            exact && vp->magic == DLMODSTATUS)
-
-            *write_method = write_dlmodStatus;
-        return NULL;
-    }
-
-    memcpy(name, newname, (vp->namelen + 1) * sizeof(oid));
-    *length = vp->namelen + 1;
-    *var_len = sizeof(long);
-    return dlm;
-}
-
-u_char         *
-var_dlmodEntry(struct variable * vp,
-               oid * name,
-               size_t * length,
-               int exact, size_t * var_len, WriteMethod ** write_method)
-{
-    /*
-     * variables we may use later 
-     */
-    struct dlmod   *dlm;
-
-    *var_len = sizeof(int);     /* assume an integer and change later
-                                 * if not */
-
-    dlm = header_dlmodEntry(vp, name, length, exact, var_len, write_method);
-    if (dlm == NULL)
-        return 0;
-
-    /*
-     * this is where we do the value assignments for the mib results. 
-     */
-    switch (vp->magic) {
-    case DLMODNAME:
-        *write_method = write_dlmodName;
-        *var_len = strlen(dlm->name);
-        return (unsigned char *) dlm->name;
-    case DLMODPATH:
-        *write_method = write_dlmodPath;
-        *var_len = strlen(dlm->path);
-        return (unsigned char *) dlm->path;
-    case DLMODERROR:
-        *var_len = strlen(dlm->error);
-        return (unsigned char *) dlm->error;
-    case DLMODSTATUS:
-        *write_method = write_dlmodStatus;
-        long_return = dlm->status;
-        return (unsigned char *) &long_return;
-    default:
-        DEBUGMSGTL(("dlmod", "unknown sub-id %d in var_dlmodEntry\n",
-                    vp->magic));
-    }
-    return 0;
-}
-
-int
+static int
 write_dlmodName(int action,
                 u_char * var_val,
                 u_char var_val_type,
@@ -569,13 +440,13 @@
         dlm = dlmod_get_by_index(name[12]);
         if (!dlm || dlm->status == DLMOD_LOADED)
             return SNMP_ERR_RESOURCEUNAVAILABLE;
-        memcpy(dlm->name, var_val, var_val_len);
+        strncpy(dlm->name, (const char *) var_val, var_val_len);
         dlm->name[var_val_len] = 0;
     }
     return SNMP_ERR_NOERROR;
 }
 
-int
+static int
 write_dlmodPath(int action,
                 u_char * var_val,
                 u_char var_val_type,
@@ -596,13 +467,13 @@
         dlm = dlmod_get_by_index(name[12]);
         if (!dlm || dlm->status == DLMOD_LOADED)
             return SNMP_ERR_RESOURCEUNAVAILABLE;
-        memcpy(dlm->path, var_val, var_val_len);
+        strncpy(dlm->path, (const char *) var_val, var_val_len);
         dlm->path[var_val_len] = 0;
     }
     return SNMP_ERR_NOERROR;
 }
 
-int
+static int
 write_dlmodStatus(int action,
                   u_char * var_val,
                   u_char var_val_type,
@@ -610,7 +481,7 @@
                   u_char * statP, oid * name, size_t name_len)
 {
     /*
-     * variables we may use later 
+     * variables we may use later
      */
     struct dlmod   *dlm;
 
@@ -624,8 +495,8 @@
     }
     if (action == COMMIT) {
         /*
-         * object identifier in form .1.3.6.1.4.1.2021.13.14.2.1.4.x 
-         * where X is index with offset 12 
+         * object identifier in form .1.3.6.1.4.1.2021.13.14.2.1.4.x
+         * where X is index with offset 12
          */
 
         dlm = dlmod_get_by_index(name[12]);
@@ -659,13 +530,167 @@
     return SNMP_ERR_NOERROR;
 }
 
-#else                           /* no dlopen support */
+/*
+ * header_dlmodEntry(...
+ * Arguments:
+ * vp     IN      - pointer to variable entry that points here
+ * name    IN/OUT  - IN/name requested, OUT/name found
+ * length  IN/OUT  - length of IN/OUT oid's
+ * exact   IN      - TRUE if an exact match was requested
+ * var_len OUT     - length of variable or 0 if function returned
+ * write_method
+ *
+ */
+
+
+static struct dlmod *
+header_dlmodEntry(struct variable *vp,
+                  oid * name,
+                  size_t * length,
+                  int exact, size_t * var_len, WriteMethod ** write_method)
+{
+#define DLMODENTRY_NAME_LENGTH 12
+    oid             newname[MAX_OID_LEN];
+    int             result;
+    struct dlmod   *dlm = NULL;
+    unsigned int    dlmod_index;
+
+    memcpy(newname, vp->name, vp->namelen * sizeof(oid));
+    *write_method = 0;
+
+    for (dlmod_index = 1; dlmod_index < dlmod_next_index; dlmod_index++) {
+        dlm = dlmod_get_by_index(dlmod_index);
+
+        DEBUGMSGTL(("dlmod", "dlmodEntry dlm: %p dlmod_index: %d\n",
+                    dlm, dlmod_index));
+
+        if (dlm) {
+            newname[12] = dlmod_index;
+            result = snmp_oid_compare(name, *length, newname, vp->namelen + 1);
+
+            if ((exact && (result == 0)) || (!exact && (result < 0)))
+                break;
+        }
+    }
+
+    if (dlmod_index >= dlmod_next_index) {
+        if (dlmod_index == dlmod_next_index &&
+            exact && vp->magic == DLMODSTATUS)
+
+            *write_method = write_dlmodStatus;
+        return NULL;
+    }
+
+    memcpy(name, newname, (vp->namelen + 1) * sizeof(oid));
+    *length = vp->namelen + 1;
+    *var_len = sizeof(long);
+    return dlm;
+}
+
+static u_char         *
+var_dlmodEntry(struct variable * vp,
+               oid * name,
+               size_t * length,
+               int exact, size_t * var_len, WriteMethod ** write_method)
+{
+    /*
+     * variables we may use later
+     */
+    struct dlmod   *dlm;
+
+    *var_len = sizeof(int);     /* assume an integer and change later
+                                 * if not */
+
+    dlm = header_dlmodEntry(vp, name, length, exact, var_len, write_method);
+    if (dlm == NULL)
+        return NULL;
+
+    /*
+     * this is where we do the value assignments for the mib results.
+     */
+    switch (vp->magic) {
+    case DLMODNAME:
+        *write_method = write_dlmodName;
+        *var_len = strlen(dlm->name);
+        return (unsigned char *) dlm->name;
+    case DLMODPATH:
+        *write_method = write_dlmodPath;
+        *var_len = strlen(dlm->path);
+        return (unsigned char *) dlm->path;
+    case DLMODERROR:
+        *var_len = strlen(dlm->error);
+        return (unsigned char *) dlm->error;
+    case DLMODSTATUS:
+        *write_method = write_dlmodStatus;
+        long_return = dlm->status;
+        return (unsigned char *) &long_return;
+    default:
+        DEBUGMSGTL(("dlmod", "unknown sub-id %d in var_dlmodEntry\n",
+                    vp->magic));
+    }
+    return NULL;
+}
+
+/*
+ * this variable defines function callbacks and type return
+ * information for the dlmod mib
+ */
+static struct variable4 dlmod_variables[] = {
+    {DLMODNEXTINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_dlmod, 1, {1}},
+    {DLMODNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_dlmodEntry, 3, {2, 1, 2}},
+    {DLMODPATH, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+     var_dlmodEntry, 3, {2, 1, 3}},
+    {DLMODERROR, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_dlmodEntry, 3, {2, 1, 4}},
+    {DLMODSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_dlmodEntry, 3, {2, 1, 5}},
+};
+
+static oid dlmod_variables_oid[] = { 1, 3, 6, 1, 4, 1, 2021, 13, 14 };
 
 void
 init_dlmod(void)
 {
-    DEBUGMSGTL(("dlmod",
-                "Dynamic modules not support on this platform\n"));
+    REGISTER_MIB("dlmod", dlmod_variables, variable4, dlmod_variables_oid);
+
+    /*
+     * TODO: REGISTER_SYSOR_ENTRY
+     */
+
+    DEBUGMSGTL(("dlmod", "register mib\n"));
+
+    snmpd_register_config_handler("dlmod", dlmod_parse_config,
+                                  dlmod_free_config,
+                                  "module-name module-path");
+
+    {
+        const char * const p = getenv("SNMPDLMODPATH");
+        strncpy(dlmod_path, SNMPDLMODPATH, sizeof(dlmod_path));
+        dlmod_path[ sizeof(dlmod_path) - 1 ] = 0;
+        if (p) {
+            if (p[0] == ':') {
+                int len = strlen(dlmod_path);
+                if (dlmod_path[len - 1] != ':') {
+                    strncat(dlmod_path, ":", sizeof(dlmod_path) - len - 1);
+                    len++;
+                }
+                strncat(dlmod_path, p + 1,   sizeof(dlmod_path) - len);
+            } else
+                strncpy(dlmod_path, p, sizeof(dlmod_path));
+        }
+    }
+
+    dlmod_path[ sizeof(dlmod_path)-1 ] = 0;
+    DEBUGMSGTL(("dlmod", "dlmod_path: %s\n", dlmod_path));
 }
 
-#endif
+netsnmp_feature_require(snmpd_unregister_config_handler)
+
+void
+shutdown_dlmod(void)
+{
+    snmpd_unregister_config_handler("dlmod");
+    unregister_mib(dlmod_variables_oid, OID_LENGTH(dlmod_variables_oid));
+}
diff --git a/agent/mibgroup/ucd-snmp/dlmod.h b/agent/mibgroup/ucd-snmp/dlmod.h
index 690bc45..9592bdd 100644
--- a/agent/mibgroup/ucd-snmp/dlmod.h
+++ b/agent/mibgroup/ucd-snmp/dlmod.h
@@ -3,58 +3,16 @@
  *
  */
 
-#ifndef _MIBGROUP_DLMOD_H
-#define _MIBGROUP_DLMOD_H
+#ifndef MIBGROUP_DLMOD_H
+#define MIBGROUP_DLMOD_H
 
-/*
- * TODO #include "mibdefs.h" 
- */
+#if (!defined(HAVE_DLFCN_H) || !defined(HAVE_DLOPEN)) && !defined(WIN32)
+config_error(Dynamic modules not supported on this platform)
+#endif
 
 config_add_mib(UCD-DLMOD-MIB)
-#ifndef SNMPDLMODPATH
-#define SNMPDLMODPATH "/usr/local/lib/snmp/dlmod"
-#endif
-     struct dlmod {
-         struct dlmod   *next;
-         int             index;
-         char            name[64 + 1];
-         char            path[255 + 1];
-         char            error[255 + 1];
-         void           *handle;
-         int             status;
-     };
 
-     void            dlmod_load_module(struct dlmod *);
-     void            dlmod_unload_module(struct dlmod *);
-     struct dlmod   *dlmod_create_module(void);
-     void            dlmod_delete_module(struct dlmod *);
-     struct dlmod   *dlmod_get_by_index(int);
+void init_dlmod(void);
+void shutdown_dlmod(void);
 
-     void            dlmod_init(void);
-     void            dlmod_deinit(void);
-
-     extern void     init_dlmod(void);
-     extern void     deinit_dlmod(void);
-
-     extern FindVarMethod var_dlmod;
-     extern FindVarMethod var_dlmodEntry;
-     extern WriteMethod write_dlmodName;
-     extern WriteMethod write_dlmodPath;
-     extern WriteMethod write_dlmodStatus;
-
-#define DLMODNEXTINDEX 		1
-#define DLMODINDEX     		2
-#define DLMODNAME      		3
-#define DLMODPATH      		4
-#define DLMODERROR     		5
-#define DLMODSTATUS    		6
-
-#define DLMOD_LOADED		1
-#define DLMOD_UNLOADED		2
-#define DLMOD_ERROR		3
-#define DLMOD_LOAD		4
-#define	DLMOD_UNLOAD		5
-#define DLMOD_CREATE		6
-#define DLMOD_DELETE		7
-
-#endif                          /* _MIBGROUP_DLMOD_H */
+#endif                          /* MIBGROUP_DLMOD_H */
diff --git a/agent/mibgroup/ucd-snmp/errormib.c b/agent/mibgroup/ucd-snmp/errormib.c
index 0f11e99..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>
@@ -122,7 +115,7 @@
 
 #include "struct.h"
 #include "errormib.h"
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 
 static time_t   errorstatustime = 0;
 static int      errorstatusprior = 0;
@@ -159,14 +152,14 @@
      * information at 
      */
     struct variable2 extensible_error_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_errors, 1,
-         {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_errors, 1,
-         {ERRORNAME}},
-        {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_errors, 1,
-         {ERRORFLAG}},
-        {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_errors, 1,
-         {ERRORMSG}}
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_errors, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_errors, 1, {ERRORNAME}},
+        {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_errors, 1, {ERRORFLAG}},
+        {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_errors, 1, {ERRORMSG}}
     };
 
     /*
diff --git a/agent/mibgroup/ucd-snmp/errormib.h b/agent/mibgroup/ucd-snmp/errormib.h
index 5dcb2cc..501642c 100644
--- a/agent/mibgroup/ucd-snmp/errormib.h
+++ b/agent/mibgroup/ucd-snmp/errormib.h
@@ -6,7 +6,7 @@
 
 void            init_errormib(void);
 
-config_require(util_funcs)
+config_require(util_funcs/header_generic)
 
      void            setPerrorstatus(const char *);
      void            seterrorstatus(const char *, int);
diff --git a/agent/mibgroup/ucd-snmp/extensible.c b/agent/mibgroup/ucd-snmp/extensible.c
index 4299217..14b084a 100644
--- a/agent/mibgroup/ucd-snmp/extensible.c
+++ b/agent/mibgroup/ucd-snmp/extensible.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_STDLIB_H
 #include <stdlib.h>
@@ -10,11 +11,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,22 +97,21 @@
 #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.h"
+#include "util_funcs/header_simple_table.h"
+
+netsnmp_feature_require(get_exten_instance)
+netsnmp_feature_require(parse_miboid)
 
 extern struct myproc *procwatch;        /* moved to proc.c */
 extern int      numprocs;       /* ditto */
@@ -133,20 +129,20 @@
  * the relocatable extensible commands variables 
  */
 struct variable2 extensible_relocatable_variables[] = {
-    {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_relocatable, 1,
-     {MIBINDEX}},
-    {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_relocatable, 1,
-     {ERRORNAME}},
-    {SHELLCOMMAND, ASN_OCTET_STR, RONLY, var_extensible_relocatable, 1,
-     {SHELLCOMMAND}},
-    {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_relocatable, 1,
-     {ERRORFLAG}},
-    {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_relocatable, 1,
-     {ERRORMSG}},
-    {ERRORFIX, ASN_INTEGER, RWRITE, var_extensible_relocatable, 1,
-     {ERRORFIX}},
-    {ERRORFIXCMD, ASN_OCTET_STR, RONLY, var_extensible_relocatable, 1,
-     {ERRORFIXCMD}}
+    {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_extensible_relocatable, 1, {MIBINDEX}},
+    {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_extensible_relocatable, 1, {ERRORNAME}},
+    {SHELLCOMMAND, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_extensible_relocatable, 1, {SHELLCOMMAND}},
+    {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_extensible_relocatable, 1, {ERRORFLAG}},
+    {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_extensible_relocatable, 1, {ERRORMSG}},
+    {ERRORFIX, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_extensible_relocatable, 1, {ERRORFIX}},
+    {ERRORFIXCMD, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_extensible_relocatable, 1, {ERRORFIXCMD}}
 };
 
 
@@ -155,20 +151,20 @@
 {
 
     struct variable2 extensible_extensible_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_shell, 1,
-         {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_shell, 1,
-         {ERRORNAME}},
-        {SHELLCOMMAND, ASN_OCTET_STR, RONLY, var_extensible_shell, 1,
-         {SHELLCOMMAND}},
-        {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_shell, 1,
-         {ERRORFLAG}},
-        {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_shell, 1,
-         {ERRORMSG}},
-        {ERRORFIX, ASN_INTEGER, RWRITE, var_extensible_shell, 1,
-         {ERRORFIX}},
-        {ERRORFIXCMD, ASN_OCTET_STR, RONLY, var_extensible_shell, 1,
-         {ERRORFIXCMD}}
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_shell, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_shell, 1, {ERRORNAME}},
+        {SHELLCOMMAND, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_shell, 1, {SHELLCOMMAND}},
+        {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_shell, 1, {ERRORFLAG}},
+        {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_shell, 1, {ERRORMSG}},
+        {ERRORFIX, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_extensible_shell, 1, {ERRORFIX}},
+        {ERRORFIXCMD, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_shell, 1, {ERRORFIXCMD}}
     };
 
     /*
diff --git a/agent/mibgroup/ucd-snmp/extensible.h b/agent/mibgroup/ucd-snmp/extensible.h
index 558f14b..24bd16d 100644
--- a/agent/mibgroup/ucd-snmp/extensible.h
+++ b/agent/mibgroup/ucd-snmp/extensible.h
@@ -7,6 +7,7 @@
 
 void            init_extensible(void);
 
+config_require(util_funcs/header_simple_table)
 config_require(util_funcs)
 config_require(utilities/execute)
 
diff --git a/agent/mibgroup/ucd-snmp/file.c b/agent/mibgroup/ucd-snmp/file.c
index 00c98d4..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
@@ -41,7 +34,7 @@
 
 #include "struct.h"
 #include "file.h"
-#include "util_funcs.h"
+#include "util_funcs/header_simple_table.h"
 
 #define MAXFILE   20
 
@@ -52,12 +45,18 @@
 init_file(void)
 {
     struct variable2 file_table[] = {
-        {FILE_INDEX, ASN_INTEGER, RONLY, var_file_table, 1, {1}},
-        {FILE_NAME, ASN_OCTET_STR, RONLY, var_file_table, 1, {2}},
-        {FILE_SIZE, ASN_INTEGER, RONLY, var_file_table, 1, {3}},
-        {FILE_MAX, ASN_INTEGER, RONLY, var_file_table, 1, {4}},
-        {FILE_ERROR, ASN_INTEGER, RONLY, var_file_table, 1, {100}},
-        {FILE_MSG, ASN_OCTET_STR, RONLY, var_file_table, 1, {101}}
+        {FILE_INDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_file_table, 1, {1}},
+        {FILE_NAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_file_table, 1, {2}},
+        {FILE_SIZE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_file_table, 1, {3}},
+        {FILE_MAX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_file_table, 1, {4}},
+        {FILE_ERROR, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_file_table, 1, {100}},
+        {FILE_MSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_file_table, 1, {101}}
     };
 
     /*
diff --git a/agent/mibgroup/ucd-snmp/file.h b/agent/mibgroup/ucd-snmp/file.h
index 8b222c5..455086f 100644
--- a/agent/mibgroup/ucd-snmp/file.h
+++ b/agent/mibgroup/ucd-snmp/file.h
@@ -7,6 +7,8 @@
 
 #include "mibdefs.h"
 
+config_require(util_funcs/header_simple_table)
+
 void            init_file(void);
 
 /*
diff --git a/agent/mibgroup/ucd-snmp/hpux.c b/agent/mibgroup/ucd-snmp/hpux.c
index db094d3..9c5f9f9 100644
--- a/agent/mibgroup/ucd-snmp/hpux.c
+++ b/agent/mibgroup/ucd-snmp/hpux.c
@@ -30,15 +30,21 @@
      * information at 
      */
     struct variable2 hp_variables[] = {
-        {HPCONF, ASN_INTEGER, RWRITE, var_hp, 1, {HPCONF}},
-        {HPRECONFIG, ASN_INTEGER, RWRITE, var_hp, 1, {HPRECONFIG}},
-        {HPFLAG, ASN_INTEGER, RWRITE, var_hp, 1, {HPFLAG}},
-        {HPLOGMASK, ASN_INTEGER, RWRITE, var_hp, 1, {ERRORFLAG}},
-        {HPSTATUS, ASN_INTEGER, RWRITE, var_hp, 1, {ERRORMSG}}
+        {HPCONF, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_hp, 1, {HPCONF}},
+        {HPRECONFIG, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_hp, 1, {HPRECONFIG}},
+        {HPFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_hp, 1, {HPFLAG}},
+        {HPLOGMASK, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_hp, 1, {ERRORFLAG}},
+        {HPSTATUS, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_hp, 1, {ERRORMSG}}
     };
 
     struct variable2 hptrap_variables[] = {
-        {HPTRAP, ASN_IPADDRESS, RWRITE, var_hp, 1, {HPTRAP}},
+        {HPTRAP, ASN_IPADDRESS, NETSNMP_OLDAPI_RWRITE,
+         var_hp, 1, {HPTRAP}},
     };
 
     /*
diff --git a/agent/mibgroup/ucd-snmp/lmSensors.c b/agent/mibgroup/ucd-snmp/lmSensors.c
index c5ce906..05c60b7 100644
--- a/agent/mibgroup/ucd-snmp/lmSensors.c
+++ b/agent/mibgroup/ucd-snmp/lmSensors.c
@@ -66,6 +66,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -73,9 +74,12 @@
  * minimal include directives 
  */
 
-#include "util_funcs.h"
+#include "util_funcs/header_simple_table.h"
 #include <time.h>
 
+netsnmp_feature_require(table_container)
+
+
 /*
  * Load required drivers and libraries.
  */
@@ -84,9 +88,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"
@@ -131,41 +136,41 @@
      * magic number        , variable type , ro/rw , callback fn  , L, oidsuffix 
      */
 #define   LMTEMPSENSORSINDEX    3
-    {LMTEMPSENSORSINDEX, ASN_INTEGER, RONLY, var_lmSensorsTable, 3,
-     {2, 1, 1}},
+    {LMTEMPSENSORSINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_lmSensorsTable, 3, {2, 1, 1}},
 #define   LMTEMPSENSORSDEVICE   4
-    {LMTEMPSENSORSDEVICE, ASN_OCTET_STR, RONLY, var_lmSensorsTable, 3,
-     {2, 1, 2}},
+    {LMTEMPSENSORSDEVICE, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_lmSensorsTable, 3, {2, 1, 2}},
 #define   LMTEMPSENSORSVALUE    5
-    {LMTEMPSENSORSVALUE, ASN_GAUGE, RONLY, var_lmSensorsTable, 3,
-     {2, 1, 3}},
+    {LMTEMPSENSORSVALUE, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_lmSensorsTable, 3, {2, 1, 3}},
 #define   LMFANSENSORSINDEX     8
-    {LMFANSENSORSINDEX, ASN_INTEGER, RONLY, var_lmSensorsTable, 3,
-     {3, 1, 1}},
+    {LMFANSENSORSINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_lmSensorsTable, 3, {3, 1, 1}},
 #define   LMFANSENSORSDEVICE    9
-    {LMFANSENSORSDEVICE, ASN_OCTET_STR, RONLY, var_lmSensorsTable, 3,
-     {3, 1, 2}},
+    {LMFANSENSORSDEVICE, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_lmSensorsTable, 3, {3, 1, 2}},
 #define   LMFANSENSORSVALUE     10
-    {LMFANSENSORSVALUE, ASN_GAUGE, RONLY, var_lmSensorsTable, 3,
-     {3, 1, 3}},
+    {LMFANSENSORSVALUE, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_lmSensorsTable, 3, {3, 1, 3}},
 #define   LMVOLTSENSORSINDEX    13
-    {LMVOLTSENSORSINDEX, ASN_INTEGER, RONLY, var_lmSensorsTable, 3,
-     {4, 1, 1}},
+    {LMVOLTSENSORSINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_lmSensorsTable, 3, {4, 1, 1}},
 #define   LMVOLTSENSORSDEVICE   14
-    {LMVOLTSENSORSDEVICE, ASN_OCTET_STR, RONLY, var_lmSensorsTable, 3,
-     {4, 1, 2}},
+    {LMVOLTSENSORSDEVICE, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_lmSensorsTable, 3, {4, 1, 2}},
 #define   LMVOLTSENSORSVALUE    15
-    {LMVOLTSENSORSVALUE, ASN_GAUGE, RONLY, var_lmSensorsTable, 3,
-     {4, 1, 3}},
+    {LMVOLTSENSORSVALUE, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_lmSensorsTable, 3, {4, 1, 3}},
 #define   LMMISCSENSORSINDEX    18
-    {LMMISCSENSORSINDEX, ASN_INTEGER, RONLY, var_lmSensorsTable, 3,
-     {5, 1, 1}},
+    {LMMISCSENSORSINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+     var_lmSensorsTable, 3, {5, 1, 1}},
 #define   LMMISCSENSORSDEVICE   19
-    {LMMISCSENSORSDEVICE, ASN_OCTET_STR, RONLY, var_lmSensorsTable, 3,
-     {5, 1, 2}},
+    {LMMISCSENSORSDEVICE, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+     var_lmSensorsTable, 3, {5, 1, 2}},
 #define   LMMISCSENSORSVALUE    20
-    {LMMISCSENSORSVALUE, ASN_GAUGE, RONLY, var_lmSensorsTable, 3,
-     {5, 1, 3}},
+    {LMMISCSENSORSVALUE, ASN_GAUGE, NETSNMP_OLDAPI_RONLY,
+     var_lmSensorsTable, 3, {5, 1, 3}},
 };
 
 typedef struct {
@@ -247,7 +252,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 +384,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 +420,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 +486,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 +531,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 +558,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 +588,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 +757,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 +772,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 +788,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 +814,7 @@
 
 } /*end else picl_initialize */
 
-#endif  /* end of picld section */
+#else  /* end of picld section */
 /* initialize kstat */
 
 kc = kstat_open();
@@ -923,7 +928,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 +942,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 +964,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 +982,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 +1024,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 +1042,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/lmSensors.h b/agent/mibgroup/ucd-snmp/lmSensors.h
index afed6fa..92098a6 100644
--- a/agent/mibgroup/ucd-snmp/lmSensors.h
+++ b/agent/mibgroup/ucd-snmp/lmSensors.h
@@ -6,7 +6,7 @@
 #ifndef _MIBGROUP_LMSENSORS_H
 #define _MIBGROUP_LMSENSORS_H
 
-config_require(util_funcs)
+config_require(util_funcs/header_simple_table)
 config_add_mib(LM-SENSORS-MIB)
 
      void            init_lmSensors(void);
diff --git a/agent/mibgroup/ucd-snmp/lmsensorsMib.c b/agent/mibgroup/ucd-snmp/lmsensorsMib.c
new file mode 100644
index 0000000..2557796
--- /dev/null
+++ b/agent/mibgroup/ucd-snmp/lmsensorsMib.c
@@ -0,0 +1,206 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/agent/hardware/sensors.h>
+#include "hardware/sensors/hw_sensors.h"
+#include "ucd-snmp/lmsensorsMib.h"
+
+netsnmp_container *sensorContainer = NULL;
+
+void initialize_lmSensorsTable(const char *tableName, const oid *tableOID,
+                               netsnmp_container_op *filter, int mult );
+
+int _sensor_filter_temp( netsnmp_container *c, const void *v );
+int _sensor_filter_fan(  netsnmp_container *c, const void *v );
+int _sensor_filter_volt( netsnmp_container *c, const void *v );
+int _sensor_filter_misc( netsnmp_container *c, const void *v );
+
+static const oid lmTempSensorsTable_oid[]   = {1,3,6,1,4,1,2021,13,16,2};
+static const oid lmFanSensorsTable_oid[]    = {1,3,6,1,4,1,2021,13,16,3};
+static const oid lmVoltSensorsTable_oid[]   = {1,3,6,1,4,1,2021,13,16,4};
+static const oid lmMiscSensorsTable_oid[]   = {1,3,6,1,4,1,2021,13,16,5};
+            /* All the tables have the same length root OID */
+const size_t lmSensorsTables_oid_len = OID_LENGTH(lmMiscSensorsTable_oid);
+
+
+/* Initialise the LM Sensors MIB module */
+void
+init_lmsensorsMib(void)
+{
+    DEBUGMSGTL(("ucd-snmp/lmsensorsMib","Initializing LM-SENSORS-MIB tables\n"));
+
+    /* 
+     * Initialise the four LM-SENSORS-MIB tables
+     *
+     * They are almost identical, so we can use the same registration code.
+     */
+    initialize_lmSensorsTable( "lmTempSensorsTable", lmTempSensorsTable_oid,
+                                _sensor_filter_temp, 1000 );  /* MIB asks for mC */
+    initialize_lmSensorsTable( "lmFanSensorsTable",  lmFanSensorsTable_oid,
+                                _sensor_filter_fan,  1);
+    initialize_lmSensorsTable( "lmVoltSensorsTable", lmVoltSensorsTable_oid,
+                                _sensor_filter_volt, 1000 );  /* MIB asks for mV */
+    initialize_lmSensorsTable( "lmMiscSensorsTable", lmMiscSensorsTable_oid,
+                                _sensor_filter_misc, 1 );
+}
+
+/*
+ * Common initialisation code, used for setting up all four tables
+ */
+void
+initialize_lmSensorsTable(const char *tableName, const oid *tableOID,
+                          netsnmp_container_op *filter, int mult )
+{
+    netsnmp_handler_registration    *reg;
+    netsnmp_table_registration_info *table_info;
+    netsnmp_cache     *cache;
+    netsnmp_container *container;
+
+    /*
+     * Ensure the HAL sensors module has been initialised,
+     *   and retrieve the main sensors container.
+     * This table will then be registered using a filter on this container.
+     */
+    sensorContainer = get_sensor_container();
+    if ( !sensorContainer ) {
+        init_hw_sensors( );
+        sensorContainer = get_sensor_container();
+    }
+    container = netsnmp_container_find("sensorTable:table_container");
+    container->insert_filter = filter;
+    netsnmp_container_add_index( sensorContainer, container );
+
+
+    /*
+     * Create a basic registration structure for the table
+     */
+    reg = netsnmp_create_handler_registration(
+               tableName, lmSensorsTables_handler,
+               tableOID,  lmSensorsTables_oid_len, HANDLER_CAN_RONLY
+              );
+
+    /*
+     * Register the table using the filtered container
+     * Include an indicator of any scaling to be applied to the sensor value
+     */
+    reg->my_reg_void = (void *)(uintptr_t)mult;
+    table_info = SNMP_MALLOC_TYPEDEF( netsnmp_table_registration_info );
+    netsnmp_table_helper_add_indexes(table_info, ASN_INTEGER, 0);
+    table_info->min_column = COLUMN_LMSENSORS_INDEX;
+    table_info->max_column = COLUMN_LMSENSORS_VALUE;
+    netsnmp_container_table_register( reg, table_info, container, 0 );
+
+    /*
+     * If the HAL sensors module was configured as an on-demand caching
+     *  module (rather than being automatically loaded regularly),
+     *  then ensure this table makes use of that cache.
+     */
+    cache = get_sensor_cache();
+    if ( cache ) {
+        netsnmp_inject_handler_before( reg, netsnmp_cache_handler_get( cache ),
+                                            "table_container");
+    }
+
+}
+
+
+/*
+ *  Container filters for the four tables
+ *
+ *  Used to ensure that sensor entries appear in the appropriate table.
+ */
+int _sensor_filter_temp( netsnmp_container *c, const void *v ) {
+    const netsnmp_sensor_info *sp = (const netsnmp_sensor_info *)v;
+    /* Only matches temperature sensors */
+    return (( sp->type == NETSNMP_SENSOR_TYPE_TEMPERATURE ) ? 0 : 1 );
+}
+
+int _sensor_filter_fan( netsnmp_container *c, const void *v ) {
+    const netsnmp_sensor_info *sp = (const netsnmp_sensor_info *)v;
+    /* Only matches fan sensors */
+    return (( sp->type == NETSNMP_SENSOR_TYPE_RPM ) ? 0 : 1 );
+}
+
+int _sensor_filter_volt( netsnmp_container *c, const void *v ) {
+    const netsnmp_sensor_info *sp = (const netsnmp_sensor_info *)v;
+    /* Only matches voltage sensors (AC or DC) */
+    return ((( sp->type == NETSNMP_SENSOR_TYPE_VOLTAGE_DC ) ||
+             ( sp->type == NETSNMP_SENSOR_TYPE_VOLTAGE_AC )) ? 0 : 1 );
+}
+
+int _sensor_filter_misc( netsnmp_container *c, const void *v ) {
+    const netsnmp_sensor_info *sp = (const netsnmp_sensor_info *)v;
+    /* Matches everything except temperature, fan or voltage sensors */
+    return ((( sp->type == NETSNMP_SENSOR_TYPE_TEMPERATURE ) ||
+             ( sp->type == NETSNMP_SENSOR_TYPE_RPM         ) ||
+             ( sp->type == NETSNMP_SENSOR_TYPE_VOLTAGE_DC  ) ||
+             ( sp->type == NETSNMP_SENSOR_TYPE_VOLTAGE_AC  )) ? 1 : 0 );
+}
+
+
+/*
+ * Handle requests for any of the four lmXxxxSensorsTables 
+ *
+ * This is possible because all the table share the
+ *  same structure and behaviour.
+ */
+int
+lmSensorsTables_handler(
+    netsnmp_mib_handler               *handler,
+    netsnmp_handler_registration      *reginfo,
+    netsnmp_agent_request_info        *reqinfo,
+    netsnmp_request_info              *requests) {
+
+    netsnmp_request_info       *request;
+    netsnmp_table_request_info *table_info;
+    netsnmp_sensor_info        *sensor_info;
+    int mult  = (uintptr_t)reginfo->my_reg_void;
+
+    DEBUGMSGTL(( "ucd-snmp/lmsensorsMib","lmSensorsTables_handler - root: "));
+    DEBUGMSGOID(("ucd-snmp/lmsensorsMib", reginfo->rootoid, reginfo->rootoid_len));
+    DEBUGMSG((   "ucd-snmp/lmsensorsMib",", mode %d\n", reqinfo->mode ));
+    /*
+     * This is a read-only table, so we only need to handle GET requests.
+     *    (The container helper converts GETNEXT->GET requests automatically).
+     */
+    switch (reqinfo->mode) {
+    case MODE_GET:
+        for (request=requests; request; request=request->next) {
+            sensor_info = (netsnmp_sensor_info *)
+                            netsnmp_container_table_extract_context(request);
+            if ( !sensor_info ) {
+                netsnmp_set_request_error(reqinfo, request, SNMP_NOSUCHINSTANCE);
+                continue;
+            }
+    
+            table_info   =  netsnmp_extract_table_info(request);
+            switch (table_info->colnum) {
+            case COLUMN_LMSENSORS_INDEX:
+                snmp_set_var_typed_integer( request->requestvb, ASN_INTEGER,
+                                            sensor_info->idx.oids[0]);
+                break;
+            case COLUMN_LMSENSORS_DEVICE:
+                if ( sensor_info->descr[0] != '\0' ) {
+                    snmp_set_var_typed_value( request->requestvb, ASN_OCTET_STR,
+                                              sensor_info->descr, strlen(sensor_info->descr));
+                } else {
+                    snmp_set_var_typed_value( request->requestvb, ASN_OCTET_STR,
+                                              sensor_info->name,  strlen(sensor_info->name));
+                }
+                break;
+            case COLUMN_LMSENSORS_VALUE:
+                /* Multiply the value by the appropriate scaling factor for this table */
+                snmp_set_var_typed_integer( request->requestvb, ASN_GAUGE,
+                                            (int)(mult*sensor_info->value));
+                break;
+            default:
+                netsnmp_set_request_error(reqinfo, request,
+                                          SNMP_NOSUCHOBJECT);
+                break;
+            }
+        }
+        break;
+
+    }
+    return SNMP_ERR_NOERROR;
+}
diff --git a/agent/mibgroup/ucd-snmp/lmsensorsMib.h b/agent/mibgroup/ucd-snmp/lmsensorsMib.h
new file mode 100644
index 0000000..9d85dd1
--- /dev/null
+++ b/agent/mibgroup/ucd-snmp/lmsensorsMib.h
@@ -0,0 +1,23 @@
+#ifndef LM_SENSORS_MIB_H
+#define LM_SENSORS_MIB_H
+
+config_require(hardware/sensors)
+config_add_mib(LM-SENSORS-MIB)
+
+/* function declarations */
+void init_lmsensorsMib(void);
+
+/*
+ * Handler and Column definitions for lmXxxxSensorsTable
+ *
+ * Note that the same handler (and hence the same
+ *  column identifiers) are used for all four tables.
+ * This is possible because all the table share the
+ *  same structure and behaviour.
+ */
+Netsnmp_Node_Handler lmSensorsTables_handler;
+#define COLUMN_LMSENSORS_INDEX		1
+#define COLUMN_LMSENSORS_DEVICE		2
+#define COLUMN_LMSENSORS_VALUE		3
+
+#endif /* LM_SENSORS_MIB_H */
diff --git a/agent/mibgroup/ucd-snmp/loadave.c b/agent/mibgroup/ucd-snmp/loadave.c
index c306506..3178330 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
@@ -134,10 +130,22 @@
 
 #include "struct.h"
 #include "loadave.h"
-#include "util_funcs.h"
+#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)
@@ -148,24 +156,24 @@
      * information at 
      */
     struct variable2 extensible_loadave_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_loadave, 1,
-         {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_loadave, 1,
-         {ERRORNAME}},
-        {LOADAVE, ASN_OCTET_STR, RONLY, var_extensible_loadave, 1,
-         {LOADAVE}},
-        {LOADMAXVAL, ASN_OCTET_STR, RONLY, var_extensible_loadave, 1,
-         {LOADMAXVAL}},
-        {LOADAVEINT, ASN_INTEGER, RONLY, var_extensible_loadave, 1,
-         {LOADAVEINT}},
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_loadave, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_loadave, 1, {ERRORNAME}},
+        {LOADAVE, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_loadave, 1, {LOADAVE}},
+        {LOADMAXVAL, ASN_OCTET_STR, NETSNMP_OLDAPI_RWRITE,
+         var_extensible_loadave, 1, {LOADMAXVAL}},
+        {LOADAVEINT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_loadave, 1, {LOADAVEINT}},
 #ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
-        {LOADAVEFLOAT, ASN_OPAQUE_FLOAT, RONLY, var_extensible_loadave, 1,
-         {LOADAVEFLOAT}},
+        {LOADAVEFLOAT, ASN_OPAQUE_FLOAT, NETSNMP_OLDAPI_RONLY,
+         var_extensible_loadave, 1, {LOADAVEFLOAT}},
 #endif
-        {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_loadave, 1,
-         {ERRORFLAG}},
-        {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_loadave, 1,
-         {ERRORMSG}}
+        {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_loadave, 1, {ERRORFLAG}},
+        {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_loadave, 1, {ERRORMSG}}
     };
 
     /*
@@ -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);
@@ -218,12 +258,6 @@
 int
 try_getloadavg(double *r_ave, size_t s_ave)
 {
-#if defined(HAVE_GETLOADAVG) || defined(linux) || defined(ultrix) \
-    || defined(sun) || defined(__alpha) || defined(dynix) \
-    || !defined(cygwin) && defined(NETSNMP_CAN_USE_NLIST) \
-       && defined(LOADAVE_SYMBOL)
-    double         *pave = r_ave;
-#endif
 #ifndef HAVE_GETLOADAVG
 #ifdef HAVE_SYS_FIXPOINT_H
     fix             favenrun[3];
@@ -237,8 +271,7 @@
 #define FIX_TO_DBL(_IN) (((double) _IN)/((double) FSCALE))
 #endif
 #endif
-#if defined(aix4) || defined(aix5) || defined(aix6)
-    int             favenrun[3];
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
     perfstat_cpu_total_t cs;
 #endif
 #if defined(hpux10) || defined(hpux11)
@@ -251,16 +284,16 @@
 #endif	/* !HAVE_GETLOADAVG */
 
 #ifdef HAVE_GETLOADAVG
-    if (getloadavg(pave, s_ave) == -1)
+    if (getloadavg(r_ave, s_ave) == -1)
         return (-1);
 #elif defined(linux)
     {
         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));
+        fscanf(in, "%lf %lf %lf", r_ave, (r_ave + 1), (r_ave + 2));
         fclose(in);
     }
 #elif (defined(ultrix) || defined(sun) || defined(__alpha) || defined(dynix))
@@ -268,14 +301,14 @@
         0)
         return (-1);
     for (i = 0; i < s_ave; i++)
-        *(pave + i) = FIX_TO_DBL(favenrun[i]);
+        *(r_ave + i) = FIX_TO_DBL(favenrun[i]);
 #elif defined(hpux10) || defined(hpux11)
     if (pstat_getdynamic(&pst_buf, sizeof(struct pst_dynamic), 1, 0) < 0)
         return(-1);
     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;
@@ -290,7 +323,7 @@
     DEBUGMSGTL(("ucd-snmp/loadave", "irix6: %d %d %d\n", favenrun[0], favenrun[1], favenrun[2]));
 #elif !defined(cygwin)
 #if defined(NETSNMP_CAN_USE_NLIST) && defined(LOADAVE_SYMBOL)
-    if (auto_nlist(LOADAVE_SYMBOL, (char *) pave, sizeof(double) * s_ave)
+    if (auto_nlist(LOADAVE_SYMBOL, (char *) r_ave, sizeof(double) * s_ave)
         == 0)
 #endif
         return (-1);
@@ -316,6 +349,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 +432,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)));
@@ -343,7 +444,7 @@
     }
     if (try_getloadavg(&avenrun[0], sizeof(avenrun) / sizeof(avenrun[0]))
         == -1)
-        return (0);
+        return NULL;
     switch (vp->magic) {
     case LOADAVE:
 
diff --git a/agent/mibgroup/ucd-snmp/loadave.h b/agent/mibgroup/ucd-snmp/loadave.h
index 497bfb8..4f5e7a5 100644
--- a/agent/mibgroup/ucd-snmp/loadave.h
+++ b/agent/mibgroup/ucd-snmp/loadave.h
@@ -4,7 +4,7 @@
 #ifndef _MIBGROUP_LOADAVE_H
 #define _MIBGROUP_LOADAVE_H
 
-config_require(util_funcs)
+config_require(util_funcs/header_simple_table)
 
      void            init_loadave(void);
      extern FindVarMethod var_extensible_loadave;
diff --git a/agent/mibgroup/ucd-snmp/logmatch.c b/agent/mibgroup/ucd-snmp/logmatch.c
index 6b672fa..83b4e4a 100644
--- a/agent/mibgroup/ucd-snmp/logmatch.c
+++ b/agent/mibgroup/ucd-snmp/logmatch.c
@@ -9,235 +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 "util_funcs.h"
-#include "logmatch.h"
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
+#include "util_funcs/header_simple_table.h"
 
-#define MAXLOGMATCH   50
+/*
+ * ------------------------------------------------
+ *  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
+ *  -------------------------------------------------
+ */
 
-struct logmatchstat logmatchTable[MAXLOGMATCH];
-int             logmatchCount;
-
-void
-init_logmatch(void)
+static int
+logmatch_update_filename(const char * pattern, char * currentFilename)
 {
-    struct variable2 logmatch_info[] = {
-        {LOGMATCH_INFO, ASN_INTEGER, RONLY, var_logmatch_table, 0}
-    };
-
-    struct variable2 logmatch_table[] = {
-        {LOGMATCH_INDEX, ASN_INTEGER, RONLY, var_logmatch_table, 1, {1}},
-        {LOGMATCH_NAME, ASN_OCTET_STR, RONLY, var_logmatch_table, 1, {2}},
-        {LOGMATCH_FILENAME, ASN_OCTET_STR, RONLY, var_logmatch_table, 1,
-         {3}},
-        {LOGMATCH_REGEX, ASN_OCTET_STR, RONLY, var_logmatch_table, 1, {4}},
-        {LOGMATCH_GLOBALCTR, ASN_COUNTER, RONLY, var_logmatch_table, 1,
-         {5}},
-        {LOGMATCH_GLOBALCNT, ASN_INTEGER, RONLY, var_logmatch_table, 1,
-         {6}},
-        {LOGMATCH_CURRENTCTR, ASN_COUNTER, RONLY, var_logmatch_table, 1,
-         {7}},
-        {LOGMATCH_CURRENTCNT, ASN_INTEGER, RONLY, var_logmatch_table, 1,
-         {8}},
-        {LOGMATCH_COUNTER, ASN_COUNTER, RONLY, var_logmatch_table, 1, {9}},
-        {LOGMATCH_COUNT, ASN_INTEGER, RONLY, var_logmatch_table, 1, {10}},
-        {LOGMATCH_FREQ, ASN_INTEGER, RONLY, var_logmatch_table, 1, {11}},
-        {LOGMATCH_ERROR, ASN_INTEGER, RONLY, var_logmatch_table, 1, {100}},
-        {LOGMATCH_MSG, ASN_OCTET_STR, RONLY, var_logmatch_table, 1, {101}}
-    };
+    time_t t;
+    struct tm *tmp;
+    char newFilename[256];
 
     /*
-     * Define the OID pointer to the top of the mib tree that we're
-     * registering underneath 
+     * -------------------------------------------------------------------
+     * if the filename pattern doesn't have the "%" character just return,
+     * since there is no need for further processing
+     * -------------------------------------------------------------------
      */
-    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");
-
-}
-
-/***************************************************************
-*                                                              *
-* !!!---!!! 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));
+    if (strchr(pattern, '%') == NULL) {
+        return 0;
     }
-    logmatchCount = 0;
-}
 
-/***************************************************************
-*                                                              *
-* !!!---!!! PUBLIC !!! --- !!!                                 *
-*                                                              *
-* logmatch_parse_config                                        *
-* parse one line from snmpd.conf                               *
-*                                                              *
-***************************************************************/
+    t = time(NULL);
+    tmp = localtime(&t);
 
-void
-logmatch_parse_config(const char *token, char *cptr)
-{
+    if (tmp == NULL) {
+        perror("localtime");
+        return 0;
+    }
 
-    char space_name;
-    char space_path;
+    /* result of expansion must fit into newFilename, otherwise returning */
+    if (strftime(newFilename, sizeof(newFilename), pattern, tmp) == 0) {
+        return 0;
+    }
 
-    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].filename,
-	       &space_path,
-               &(logmatchTable[logmatchCount].frequency),
-               logmatchTable[logmatchCount].regEx);
-
-	/*
-	 * 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++;
+    /* 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
+
+static struct logmatchstat logmatchTable[MAXLOGMATCH];
+static int                 logmatchCount = 0;
 
 /***************************************************************
 *                                                              *
-* !!!---!!! PUBLIC !!! --- !!!                                 *
-*                                                              *
 * updateLogmatch                                               *
 * this function is called back by snmpd alarms                 *
 *                                                              *
 ***************************************************************/
 
-
-void
+static void
 updateLogmatch(int iindex)
 {
 
@@ -250,6 +119,7 @@
     int             toobig;
     int             anyChanges = FALSE;
     struct stat     sb;
+    char            lastFilename[256];
 
     /*
      * ------------------------------------ 
@@ -262,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) {
 
@@ -277,7 +147,6 @@
 
         if ((perfile = fopen(perfilename, "r"))) {
 
-
             /*
              * ------------------------------------ 
              * the persistent data file exists so   
@@ -288,7 +157,8 @@
 
             pos = counter = ccounter = 0;
 
-            if (fscanf(perfile, "%lu %lu %lu", &pos, &ccounter, &counter)) {
+            if (fscanf(perfile, "%lu %lu %lu %s",
+                       &pos, &ccounter, &counter, lastFilename)) {
 
 
                 /*
@@ -299,41 +169,53 @@
                  * ------------------------------------ 
                  */
 
-                if ((logmatchTable[iindex].logfile =
-                    fopen(logmatchTable[iindex].filename, "r"))) {
-
+                if (logmatch_update_filename(logmatchTable[iindex].filenamePattern,
+                                             lastFilename) == 0) {
 
                     /*
-                     * ------------------------------------ 
-                     * the log file could be opened; now    
-                     * let's try to set the pointer         
-                     * ------------------------------------ 
+                     * ---------------------------------
+                     * the filename is still the same as 
+                     * the one stored in the persistent
+                     * data file.
+                     * ---------------------------------
                      */
 
-                    if (!fseek
-                        (logmatchTable[iindex].logfile, pos, SEEK_SET)) {
+                    if ((logmatchTable[iindex].logfile =
+                        fopen(logmatchTable[iindex].filename, "r"))) {
 
 
                         /*
                          * ------------------------------------ 
-                         * the pointer could be set - this is   
-                         * the most that we can do: if the      
-                         * pointer is smaller than the file     
-                         * size we must assume that the pointer 
-                         * still points to where it read the    
-                         * file last time; let's restore the    
-                         * data                                 
+                         * the log file could be opened; now    
+                         * let's try to set the pointer         
                          * ------------------------------------ 
                          */
 
-                        logmatchTable[iindex].currentFilePosition = pos;
-                        logmatchTable[iindex].currentMatchCounter =
-                            ccounter;
-                        logmatchTable[iindex].globalMatchCounter = counter;
-                    }
+                        if (!fseek
+                            (logmatchTable[iindex].logfile, pos, SEEK_SET)) {
 
-                    fclose(logmatchTable[iindex].logfile);
+
+                            /*
+                             * ------------------------------------ 
+                             * the pointer could be set - this is   
+                             * the most that we can do: if the      
+                             * pointer is smaller than the file     
+                             * size we must assume that the pointer 
+                             * still points to where it read the    
+                             * file last time; let's restore the    
+                             * data                                 
+                             * ------------------------------------ 
+                             */
+
+                            logmatchTable[iindex].currentFilePosition = pos;
+                            logmatchTable[iindex].currentMatchCounter =
+                                ccounter;
+                        }
+
+                        fclose(logmatchTable[iindex].logfile);
+                    }
                 }
+                logmatchTable[iindex].globalMatchCounter = counter;
             }
 
             fclose(perfile);
@@ -342,6 +224,19 @@
         logmatchTable[iindex].virgin = FALSE;
     }
 
+    /*
+     * -------------------------------------------
+     * check if a new input file needs to be opened
+     * if yes, reset counter and position
+     * -------------------------------------------
+     */
+
+    if (logmatch_update_filename(logmatchTable[iindex].filenamePattern,
+                                 logmatchTable[iindex].filename) == 1) {
+        logmatchTable[iindex].currentFilePosition = 0; 
+        logmatchTable[iindex].currentMatchCounter = 0;
+    }
+
 
     /*
      * ------------------------------------ 
@@ -429,10 +324,11 @@
          * ------------------------------------ 
          */
 
-        fprintf(perfile, "%lu %lu %lu\n",
+        fprintf(perfile, "%lu %lu %lu %s\n",
                 logmatchTable[iindex].currentFilePosition,
                 logmatchTable[iindex].currentMatchCounter,
-                logmatchTable[iindex].globalMatchCounter);
+                logmatchTable[iindex].globalMatchCounter,
+                logmatchTable[iindex].filename);
 
         fclose(perfile);
     }
@@ -440,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,
@@ -549,4 +596,62 @@
     return NULL;
 }
 
-#endif /* HAVE_REGEX */
+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");
+
+}
+
+#endif /* HAVE_REGEX_H */
diff --git a/agent/mibgroup/ucd-snmp/logmatch.h b/agent/mibgroup/ucd-snmp/logmatch.h
index eb2c070..b94ad3a 100644
--- a/agent/mibgroup/ucd-snmp/logmatch.h
+++ b/agent/mibgroup/ucd-snmp/logmatch.h
@@ -5,53 +5,9 @@
 #ifndef _MIBGROUP_LOGMATCH_H
 #define _MIBGROUP_LOGMATCH_H
 
-#include "mibdefs.h"
-#include <regex.h>
+config_require(util_funcs/header_generic)
+config_require(util_funcs/header_simple_table)
 
-struct logmatchstat {
-    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 109e96f..742186f 100644
--- a/agent/mibgroup/ucd-snmp/memory.c
+++ b/agent/mibgroup/ucd-snmp/memory.c
@@ -10,32 +10,30 @@
 #include "memory.h"
 
 #define DEFAULTMINIMUMSWAP 16000        /* kilobytes */
-int memory_object_index;
-int minimum_swap;
+static int minimum_swap;
 
 /** Initializes the memory module */
 void
 init_memory(void)
 {
-    static oid      memory_oid[] = { 1, 3, 6, 1, 4, 1, 2021, 4 };
-    static oid      memSwapError_oid[]  = { 1, 3, 6, 1, 4, 1, 2021, 4, 100 };
-    static oid      memSwapErrMsg_oid[] = { 1, 3, 6, 1, 4, 1, 2021, 4, 101 };
+    const oid      memory_oid[] = { 1, 3, 6, 1, 4, 1, 2021, 4 };
+    const oid      memSwapError_oid[]  = { 1, 3, 6, 1, 4, 1, 2021, 4, 100 };
+    const oid      memSwapErrMsg_oid[] = { 1, 3, 6, 1, 4, 1, 2021, 4, 101 };
 
     DEBUGMSGTL(("memory", "Initializing\n"));
 
-    memory_object_index = OID_LENGTH(memory_oid);
     netsnmp_register_scalar_group(
         netsnmp_create_handler_registration("memory", handle_memory,
-                                 memory_oid, memory_object_index,
+                                 memory_oid, OID_LENGTH(memory_oid),
                                              HANDLER_CAN_RONLY),
                                  1, 17);
     netsnmp_register_scalar(
         netsnmp_create_handler_registration("memSwapError", handle_memory,
-                           memSwapError_oid, memory_object_index+1,
+                           memSwapError_oid, OID_LENGTH(memSwapError_oid),
                                              HANDLER_CAN_RONLY));
     netsnmp_register_scalar(
         netsnmp_create_handler_registration("memSwapErrMsg", handle_memory,
-                          memSwapErrMsg_oid, memory_object_index+1,
+                          memSwapErrMsg_oid, OID_LENGTH(memSwapErrMsg_oid),
                                              HANDLER_CAN_RONLY));
 
     snmpd_register_config_handler("swap", memory_parse_config,
@@ -74,7 +72,7 @@
     switch (reqinfo->mode) {
     case MODE_GET:
         netsnmp_memory_load();
-        switch (requests->requestvb->name[ memory_object_index ]) {
+        switch (requests->requestvb->name[ reginfo->rootoid_len - 2 ]) {
         case MEMORY_INDEX:
             val = 0;
             break;
@@ -204,8 +202,9 @@
                                      (u_char *)buf, strlen(buf));
             return SNMP_ERR_NOERROR;
         default:
-            snmp_log(LOG_ERR, "unknown object (%lu) in handle_memory\n",
-                     requests->requestvb->name[ memory_object_index ]);
+            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 );
             return SNMP_ERR_NOERROR;
diff --git a/agent/mibgroup/ucd-snmp/memory_aix4.c b/agent/mibgroup/ucd-snmp/memory_aix4.c
index 318eee0..786e5eb 100644
--- a/agent/mibgroup/ucd-snmp/memory_aix4.c
+++ b/agent/mibgroup/ucd-snmp/memory_aix4.c
@@ -30,10 +30,13 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/auto_nlist.h>
 
-#include "util_funcs.h"         /* utility function declarations */
+#include "util_funcs/header_generic.h" /* utility function declarations */
 #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>
@@ -55,38 +58,40 @@
 {
 
     struct variable2 extensible_mem_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_mem, 1,
-         {ERRORNAME}},
-        {MEMTOTALSWAP, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALSWAP}},
-        {MEMAVAILSWAP, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMAVAILSWAP}},
-        {MEMTOTALREAL, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALREAL}},
-        {MEMAVAILREAL, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMAVAILREAL}},
-        {MEMTOTALSWAPTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALSWAPTXT}},
-        {MEMUSEDSWAPTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMUSEDSWAPTXT}},
-        {MEMTOTALREALTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALREALTXT}},
-        {MEMUSEDREALTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMUSEDREALTXT}},
-        {MEMTOTALFREE, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALFREE}},
-        {MEMSWAPMINIMUM, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMSWAPMINIMUM}},
-        {MEMSHARED, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMSHARED}},
-        {MEMBUFFER, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMBUFFER}},
-        {MEMCACHED, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMCACHED}},
-        {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {ERRORFLAG}},
-        {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_mem, 1, {ERRORMSG}}
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORNAME}},
+        {MEMTOTALSWAP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALSWAP}},
+        {MEMAVAILSWAP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMAVAILSWAP}},
+        {MEMTOTALREAL, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALREAL}},
+        {MEMAVAILREAL, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMAVAILREAL}},
+        {MEMTOTALSWAPTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALSWAPTXT}},
+        {MEMUSEDSWAPTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMUSEDSWAPTXT}},
+        {MEMTOTALREALTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALREALTXT}},
+        {MEMUSEDREALTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMUSEDREALTXT}},
+        {MEMTOTALFREE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALFREE}},
+        {MEMSWAPMINIMUM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMSWAPMINIMUM}},
+        {MEMSHARED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMSHARED}},
+        {MEMBUFFER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMBUFFER}},
+        {MEMCACHED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMCACHED}},
+        {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORFLAG}},
+        {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORMSG}}
     };
 
     /*
diff --git a/agent/mibgroup/ucd-snmp/memory_aix4.h b/agent/mibgroup/ucd-snmp/memory_aix4.h
index 9f58041..c39596c 100644
--- a/agent/mibgroup/ucd-snmp/memory_aix4.h
+++ b/agent/mibgroup/ucd-snmp/memory_aix4.h
@@ -5,6 +5,8 @@
 #ifndef _MIBGROUP_MEMORY_AIX4_H
 #define _MIBGROUP_MEMORY_AIX4_H
 
+config_require(util_funcs/header_generic)
+
 #include "mibdefs.h"
 
 void            init_memory_aix4(void);
diff --git a/agent/mibgroup/ucd-snmp/memory_darwin7.c b/agent/mibgroup/ucd-snmp/memory_darwin7.c
index 79cc4c9..74d5365 100644
--- a/agent/mibgroup/ucd-snmp/memory_darwin7.c
+++ b/agent/mibgroup/ucd-snmp/memory_darwin7.c
@@ -44,7 +44,7 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/auto_nlist.h>
 
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 #include "memory.h"
 #include "memory_darwin7.h"
 
@@ -73,23 +73,40 @@
 {
 
     struct variable2 extensible_mem_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_mem, 1, {ERRORNAME}},
-        {MEMTOTALSWAP, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MEMTOTALSWAP}},
-        {MEMAVAILSWAP, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MEMAVAILSWAP}},
-        {MEMTOTALREAL, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MEMTOTALREAL}},
-        {MEMAVAILREAL, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MEMAVAILREAL}},
-        {MEMTOTALSWAPTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MEMTOTALSWAPTXT}},
-        {MEMUSEDSWAPTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MEMUSEDSWAPTXT}},
-        {MEMTOTALREALTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MEMTOTALREALTXT}},
-        {MEMUSEDREALTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MEMUSEDREALTXT}},
-        {MEMTOTALFREE, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MEMTOTALFREE}},
-        {MEMSWAPMINIMUM, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MEMSWAPMINIMUM}},
-        {MEMSHARED, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MEMSHARED}},
-        {MEMBUFFER, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MEMBUFFER}},
-        {MEMCACHED, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MEMCACHED}},
-        {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_mem, 1, {ERRORFLAG}},
-        {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_mem, 1, {ERRORMSG}}
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORNAME}},
+        {MEMTOTALSWAP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALSWAP}},
+        {MEMAVAILSWAP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMAVAILSWAP}},
+        {MEMTOTALREAL, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALREAL}},
+        {MEMAVAILREAL, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMAVAILREAL}},
+        {MEMTOTALSWAPTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALSWAPTXT}},
+        {MEMUSEDSWAPTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMUSEDSWAPTXT}},
+        {MEMTOTALREALTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALREALTXT}},
+        {MEMUSEDREALTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMUSEDREALTXT}},
+        {MEMTOTALFREE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALFREE}},
+        {MEMSWAPMINIMUM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMSWAPMINIMUM}},
+        {MEMSHARED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMSHARED}},
+        {MEMBUFFER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMBUFFER}},
+        {MEMCACHED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMCACHED}},
+        {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORFLAG}},
+        {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORMSG}}
     };
 
     /*
diff --git a/agent/mibgroup/ucd-snmp/memory_darwin7.h b/agent/mibgroup/ucd-snmp/memory_darwin7.h
index efa99c8..ab5d264 100644
--- a/agent/mibgroup/ucd-snmp/memory_darwin7.h
+++ b/agent/mibgroup/ucd-snmp/memory_darwin7.h
@@ -5,6 +5,8 @@
 #ifndef _MIBGROUP_MEMORY_DARWIN7_H
 #define _MIBGROUP_MEMORY_DARWIN7_H
 
+config_require(util_funcs/header_generic)
+
 #include "mibdefs.h"
 
 extern void     init_memory_darwin7(void);
diff --git a/agent/mibgroup/ucd-snmp/memory_dynix.c b/agent/mibgroup/ucd-snmp/memory_dynix.c
index b1d6cb3..261c4cd 100644
--- a/agent/mibgroup/ucd-snmp/memory_dynix.c
+++ b/agent/mibgroup/ucd-snmp/memory_dynix.c
@@ -17,7 +17,7 @@
 #include <net-snmp/agent/auto_nlist.h>
 
 
-#include "util_funcs.h"         /* utility function declarations */
+#include "util_funcs/header_generic.h" /* utility function declarations */
 #include "memory.h"             /* the module-specific header */
 #include "memory_dynix.h"       /* the module-specific header */
 
@@ -34,38 +34,40 @@
 {
 
     struct variable2 extensible_mem_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_mem, 1,
-         {ERRORNAME}},
-        {MEMTOTALSWAP, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALSWAP}},
-        {MEMAVAILSWAP, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMAVAILSWAP}},
-        {MEMTOTALREAL, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALREAL}},
-        {MEMAVAILREAL, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMAVAILREAL}},
-        {MEMTOTALSWAPTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALSWAPTXT}},
-        {MEMUSEDSWAPTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMUSEDSWAPTXT}},
-        {MEMTOTALREALTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALREALTXT}},
-        {MEMUSEDREALTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMUSEDREALTXT}},
-        {MEMTOTALFREE, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALFREE}},
-        {MEMSWAPMINIMUM, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMSWAPMINIMUM}},
-        {MEMSHARED, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMSHARED}},
-        {MEMBUFFER, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMBUFFER}},
-        {MEMCACHED, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMCACHED}},
-        {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {ERRORFLAG}},
-        {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_mem, 1, {ERRORMSG}}
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORNAME}},
+        {MEMTOTALSWAP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALSWAP}},
+        {MEMAVAILSWAP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMAVAILSWAP}},
+        {MEMTOTALREAL, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALREAL}},
+        {MEMAVAILREAL, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMAVAILREAL}},
+        {MEMTOTALSWAPTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALSWAPTXT}},
+        {MEMUSEDSWAPTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMUSEDSWAPTXT}},
+        {MEMTOTALREALTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALREALTXT}},
+        {MEMUSEDREALTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMUSEDREALTXT}},
+        {MEMTOTALFREE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALFREE}},
+        {MEMSWAPMINIMUM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMSWAPMINIMUM}},
+        {MEMSHARED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMSHARED}},
+        {MEMBUFFER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMBUFFER}},
+        {MEMCACHED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMCACHED}},
+        {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORFLAG}},
+        {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORMSG}}
     };
 
     /*
diff --git a/agent/mibgroup/ucd-snmp/memory_dynix.h b/agent/mibgroup/ucd-snmp/memory_dynix.h
index 0a6998d..4fb5294 100644
--- a/agent/mibgroup/ucd-snmp/memory_dynix.h
+++ b/agent/mibgroup/ucd-snmp/memory_dynix.h
@@ -5,6 +5,8 @@
 #ifndef _MIBGROUP_MEMORY_DYNIX_H
 #define _MIBGROUP_MEMORY_DYNIX_H
 
+config_require(util_funcs/header_generic)
+
 #include "mibdefs.h"
 
 /*
diff --git a/agent/mibgroup/ucd-snmp/memory_freebsd2.c b/agent/mibgroup/ucd-snmp/memory_freebsd2.c
index 2bee517..22dde4c 100644
--- a/agent/mibgroup/ucd-snmp/memory_freebsd2.c
+++ b/agent/mibgroup/ucd-snmp/memory_freebsd2.c
@@ -87,38 +87,40 @@
 {
 
     struct variable2 extensible_mem_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_mem, 1,
-         {ERRORNAME}},
-        {MEMTOTALSWAP, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALSWAP}},
-        {MEMAVAILSWAP, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMAVAILSWAP}},
-        {MEMTOTALREAL, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALREAL}},
-        {MEMAVAILREAL, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMAVAILREAL}},
-        {MEMTOTALSWAPTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALSWAPTXT}},
-        {MEMUSEDSWAPTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMUSEDSWAPTXT}},
-        {MEMTOTALREALTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALREALTXT}},
-        {MEMUSEDREALTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMUSEDREALTXT}},
-        {MEMTOTALFREE, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALFREE}},
-        {MEMSWAPMINIMUM, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMSWAPMINIMUM}},
-        {MEMSHARED, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMSHARED}},
-        {MEMBUFFER, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMBUFFER}},
-        {MEMCACHED, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMCACHED}},
-        {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {ERRORFLAG}},
-        {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_mem, 1, {ERRORMSG}}
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORNAME}},
+        {MEMTOTALSWAP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALSWAP}},
+        {MEMAVAILSWAP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMAVAILSWAP}},
+        {MEMTOTALREAL, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALREAL}},
+        {MEMAVAILREAL, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMAVAILREAL}},
+        {MEMTOTALSWAPTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALSWAPTXT}},
+        {MEMUSEDSWAPTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMUSEDSWAPTXT}},
+        {MEMTOTALREALTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALREALTXT}},
+        {MEMUSEDREALTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMUSEDREALTXT}},
+        {MEMTOTALFREE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALFREE}},
+        {MEMSWAPMINIMUM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMSWAPMINIMUM}},
+        {MEMSHARED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMSHARED}},
+        {MEMBUFFER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMBUFFER}},
+        {MEMCACHED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMCACHED}},
+        {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORFLAG}},
+        {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORMSG}}
     };
 
     /*
diff --git a/agent/mibgroup/ucd-snmp/memory_hpux.c b/agent/mibgroup/ucd-snmp/memory_hpux.c
index 5bf99ad..c2b2478 100644
--- a/agent/mibgroup/ucd-snmp/memory_hpux.c
+++ b/agent/mibgroup/ucd-snmp/memory_hpux.c
@@ -49,38 +49,40 @@
 {
 
     struct variable2 extensible_mem_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_mem, 1,
-         {ERRORNAME}},
-        {MEMTOTALSWAP, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALSWAP}},
-        {MEMAVAILSWAP, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMAVAILSWAP}},
-        {MEMTOTALREAL, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALREAL}},
-        {MEMAVAILREAL, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMAVAILREAL}},
-        {MEMTOTALSWAPTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALSWAPTXT}},
-        {MEMUSEDSWAPTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMUSEDSWAPTXT}},
-        {MEMTOTALREALTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALREALTXT}},
-        {MEMUSEDREALTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMUSEDREALTXT}},
-        {MEMTOTALFREE, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALFREE}},
-        {MEMSWAPMINIMUM, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMSWAPMINIMUM}},
-        {MEMSHARED, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMSHARED}},
-        {MEMBUFFER, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMBUFFER}},
-        {MEMCACHED, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMCACHED}},
-        {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {ERRORFLAG}},
-        {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_mem, 1, {ERRORMSG}}
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORNAME}},
+        {MEMTOTALSWAP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALSWAP}},
+        {MEMAVAILSWAP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMAVAILSWAP}},
+        {MEMTOTALREAL, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALREAL}},
+        {MEMAVAILREAL, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMAVAILREAL}},
+        {MEMTOTALSWAPTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALSWAPTXT}},
+        {MEMUSEDSWAPTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMUSEDSWAPTXT}},
+        {MEMTOTALREALTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALREALTXT}},
+        {MEMUSEDREALTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMUSEDREALTXT}},
+        {MEMTOTALFREE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALFREE}},
+        {MEMSWAPMINIMUM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMSWAPMINIMUM}},
+        {MEMSHARED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMSHARED}},
+        {MEMBUFFER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMBUFFER}},
+        {MEMCACHED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMCACHED}},
+        {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORFLAG}},
+        {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORMSG}}
     };
 
     /*
diff --git a/agent/mibgroup/ucd-snmp/memory_netbsd1.c b/agent/mibgroup/ucd-snmp/memory_netbsd1.c
index 6632921..3d26a44 100644
--- a/agent/mibgroup/ucd-snmp/memory_netbsd1.c
+++ b/agent/mibgroup/ucd-snmp/memory_netbsd1.c
@@ -47,7 +47,7 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/auto_nlist.h>
 
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 #include "memory.h"
 #include "memory_netbsd1.h"
 
@@ -75,38 +75,40 @@
 {
 
     struct variable2 extensible_mem_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_mem, 1,
-         {ERRORNAME}},
-        {MEMTOTALSWAP, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALSWAP}},
-        {MEMAVAILSWAP, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMAVAILSWAP}},
-        {MEMTOTALREAL, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALREAL}},
-        {MEMAVAILREAL, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMAVAILREAL}},
-        {MEMTOTALSWAPTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALSWAPTXT}},
-        {MEMUSEDSWAPTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMUSEDSWAPTXT}},
-        {MEMTOTALREALTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALREALTXT}},
-        {MEMUSEDREALTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMUSEDREALTXT}},
-        {MEMTOTALFREE, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALFREE}},
-        {MEMSWAPMINIMUM, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMSWAPMINIMUM}},
-        {MEMSHARED, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMSHARED}},
-        {MEMBUFFER, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMBUFFER}},
-        {MEMCACHED, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMCACHED}},
-        {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {ERRORFLAG}},
-        {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_mem, 1, {ERRORMSG}}
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORNAME}},
+        {MEMTOTALSWAP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALSWAP}},
+        {MEMAVAILSWAP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMAVAILSWAP}},
+        {MEMTOTALREAL, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALREAL}},
+        {MEMAVAILREAL, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMAVAILREAL}},
+        {MEMTOTALSWAPTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALSWAPTXT}},
+        {MEMUSEDSWAPTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMUSEDSWAPTXT}},
+        {MEMTOTALREALTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALREALTXT}},
+        {MEMUSEDREALTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMUSEDREALTXT}},
+        {MEMTOTALFREE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALFREE}},
+        {MEMSWAPMINIMUM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMSWAPMINIMUM}},
+        {MEMSHARED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMSHARED}},
+        {MEMBUFFER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMBUFFER}},
+        {MEMCACHED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMCACHED}},
+        {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORFLAG}},
+        {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORMSG}}
     };
 
     /*
diff --git a/agent/mibgroup/ucd-snmp/memory_netbsd1.h b/agent/mibgroup/ucd-snmp/memory_netbsd1.h
index a93754a..a195f85 100644
--- a/agent/mibgroup/ucd-snmp/memory_netbsd1.h
+++ b/agent/mibgroup/ucd-snmp/memory_netbsd1.h
@@ -5,6 +5,8 @@
 #ifndef _MIBGROUP_MEMORY_NETBSD1_H
 #define _MIBGROUP_MEMORY_NETBSD1_H
 
+config_require(util_funcs/header_generic)
+
 #include "mibdefs.h"
 
 extern void     init_memory_netbsd1(void);
diff --git a/agent/mibgroup/ucd-snmp/memory_solaris2.c b/agent/mibgroup/ucd-snmp/memory_solaris2.c
index 33f41b2..2d36278 100644
--- a/agent/mibgroup/ucd-snmp/memory_solaris2.c
+++ b/agent/mibgroup/ucd-snmp/memory_solaris2.c
@@ -12,7 +12,7 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/auto_nlist.h>
 
-#include "util_funcs.h"         /* utility function declarations */
+#include "util_funcs/header_generic.h" /* utility function declarations */
 #include "memory.h"             /* the module-specific header */
 #include "memory_solaris2.h"    /* the module-specific header */
 
@@ -42,38 +42,40 @@
 {
 
     struct variable2 extensible_mem_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_mem, 1, {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_mem, 1,
-         {ERRORNAME}},
-        {MEMTOTALSWAP, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALSWAP}},
-        {MEMAVAILSWAP, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMAVAILSWAP}},
-        {MEMTOTALREAL, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALREAL}},
-        {MEMAVAILREAL, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMAVAILREAL}},
-        {MEMTOTALSWAPTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALSWAPTXT}},
-        {MEMUSEDSWAPTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMUSEDSWAPTXT}},
-        {MEMTOTALREALTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALREALTXT}},
-        {MEMUSEDREALTXT, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMUSEDREALTXT}},
-        {MEMTOTALFREE, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMTOTALFREE}},
-        {MEMSWAPMINIMUM, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMSWAPMINIMUM}},
-        {MEMSHARED, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMSHARED}},
-        {MEMBUFFER, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMBUFFER}},
-        {MEMCACHED, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {MEMCACHED}},
-        {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_mem, 1,
-         {ERRORFLAG}},
-        {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_mem, 1, {ERRORMSG}}
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORNAME}},
+        {MEMTOTALSWAP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALSWAP}},
+        {MEMAVAILSWAP, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMAVAILSWAP}},
+        {MEMTOTALREAL, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALREAL}},
+        {MEMAVAILREAL, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMAVAILREAL}},
+        {MEMTOTALSWAPTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALSWAPTXT}},
+        {MEMUSEDSWAPTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMUSEDSWAPTXT}},
+        {MEMTOTALREALTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALREALTXT}},
+        {MEMUSEDREALTXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMUSEDREALTXT}},
+        {MEMTOTALFREE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMTOTALFREE}},
+        {MEMSWAPMINIMUM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMSWAPMINIMUM}},
+        {MEMSHARED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMSHARED}},
+        {MEMBUFFER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMBUFFER}},
+        {MEMCACHED, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {MEMCACHED}},
+        {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORFLAG}},
+        {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_mem, 1, {ERRORMSG}}
     };
 
     /*
diff --git a/agent/mibgroup/ucd-snmp/memory_solaris2.h b/agent/mibgroup/ucd-snmp/memory_solaris2.h
index 336b3dd..fff5f79 100644
--- a/agent/mibgroup/ucd-snmp/memory_solaris2.h
+++ b/agent/mibgroup/ucd-snmp/memory_solaris2.h
@@ -5,6 +5,8 @@
 #ifndef _MIBGROUP_MEMORY_SOLARIS2_H
 #define _MIBGROUP_MEMORY_SOLARIS2_H
 
+config_require(util_funcs/header_generic)
+
 #include "mibdefs.h"
 
 void            init_memory_solaris2(void);
diff --git a/agent/mibgroup/ucd-snmp/pass.c b/agent/mibgroup/ucd-snmp/pass.c
index a42a91b..8d602c1 100644
--- a/agent/mibgroup/ucd-snmp/pass.c
+++ b/agent/mibgroup/ucd-snmp/pass.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_STDLIB_H
 #include <stdlib.h>
@@ -23,9 +24,6 @@
 #ifdef HAVE_LIMITS_H
 #include <limits.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #ifdef WIN32
 #include <limits.h>
 #endif
@@ -39,6 +37,9 @@
 #include "extensible.h"
 #include "util_funcs.h"
 
+netsnmp_feature_require(get_exten_instance)
+netsnmp_feature_require(parse_miboid)
+
 struct extensible *passthrus = NULL;
 int             numpassthrus = 0;
 
@@ -49,7 +50,8 @@
     /*
      * bogus entry.  Only some of it is actually used. 
      */
-    {MIBINDEX, ASN_INTEGER, RWRITE, var_extensible_pass, 0, {MIBINDEX}},
+    {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_extensible_pass, 0, {MIBINDEX}},
 };
 
 
@@ -80,7 +82,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;
 	}
@@ -103,7 +105,7 @@
      */
     if (*cptr == '.')
         cptr++;
-    if (!isdigit(*cptr)) {
+    if (!isdigit((unsigned char)(*cptr))) {
         config_perror("second token is not a OID");
         return;
     }
@@ -115,9 +117,10 @@
     if (*ppass == NULL)
         return;
     (*ppass)->type = PASSTHRU;
+    (*ppass)->mibpriority = priority;
 
     (*ppass)->miblen = parse_miboid(cptr, (*ppass)->miboid);
-    while (isdigit(*cptr) || *cptr == '.')
+    while (isdigit((unsigned char)(*cptr)) || *cptr == '.')
         cptr++;
     /*
      * path
@@ -134,9 +137,10 @@
     strlcpy((*ppass)->name, (*ppass)->command, sizeof((*ppass)->name));
     (*ppass)->next = NULL;
 
-    register_mib_priority("pass", (struct variable *) extensible_passthru_variables,
-			  sizeof(struct variable2),
-			  1, (*ppass)->miboid, (*ppass)->miblen, priority);
+    register_mib_priority("pass",
+                 (struct variable *) extensible_passthru_variables,
+                 sizeof(struct variable2), 1, (*ppass)->miboid,
+                 (*ppass)->miblen, (*ppass)->mibpriority);
 
     /*
      * argggg -- passthrus must be sorted 
@@ -148,7 +152,7 @@
             return;
 
         for (i = 0, ptmp = (struct extensible *) passthrus;
-             i < numpassthrus && ptmp != 0; i++, ptmp = ptmp->next)
+             i < numpassthrus && ptmp != NULL; i++, ptmp = ptmp->next)
             etmp[i] = ptmp;
         qsort(etmp, numpassthrus, sizeof(struct extensible *),
               pass_compare);
@@ -172,7 +176,7 @@
     for (etmp = passthrus; etmp != NULL;) {
         etmp2 = etmp;
         etmp = etmp->next;
-        unregister_mib(etmp2->miboid, etmp2->miblen);
+        unregister_mib_priority(etmp2->miboid, etmp2->miblen, etmp2->mibpriority);
         free(etmp2);
     }
     passthrus = NULL;
@@ -300,12 +304,7 @@
             exec_command(passthru);
             DEBUGMSGTL(("ucd-snmp/pass", "pass-running returned: %s",
                         passthru->output));
-            if (!strncasecmp(passthru->output, "not-writable", 12)) {
-                return SNMP_ERR_NOTWRITABLE;
-            } else if (!strncasecmp(passthru->output, "wrong-type", 10)) {
-                return SNMP_ERR_WRONGTYPE;
-            }
-            return SNMP_ERR_NOERROR;
+            return netsnmp_internal_pass_str_to_errno(passthru->output);
         }
     }
     if (snmp_get_do_debugging()) {
diff --git a/agent/mibgroup/ucd-snmp/pass_common.c b/agent/mibgroup/ucd-snmp/pass_common.c
index ace0f07..e3d9a01 100644
--- a/agent/mibgroup/ucd-snmp/pass_common.c
+++ b/agent/mibgroup/ucd-snmp/pass_common.c
@@ -61,6 +61,51 @@
     return 3 * n - 1;
 }
 
+int
+netsnmp_internal_pass_str_to_errno(const char *buf)
+{
+    if (!strncasecmp(buf, "too-big", 7)) {
+        /* Shouldn't happen */
+        return SNMP_ERR_TOOBIG;
+    } else if (!strncasecmp(buf, "no-such-name", 12)) {
+        return SNMP_ERR_NOSUCHNAME;
+    } else if (!strncasecmp(buf, "bad-value", 9)) {
+        return SNMP_ERR_BADVALUE;
+    } else if (!strncasecmp(buf, "read-only", 9)) {
+        return SNMP_ERR_READONLY;
+    } else if (!strncasecmp(buf, "gen-error", 9)) {
+        return SNMP_ERR_GENERR;
+    } else if (!strncasecmp(buf, "no-access", 9)) {
+        return SNMP_ERR_NOACCESS;
+    } else if (!strncasecmp(buf, "wrong-type", 10)) {
+        return SNMP_ERR_WRONGTYPE;
+    } else if (!strncasecmp(buf, "wrong-length", 12)) {
+        return SNMP_ERR_WRONGLENGTH;
+    } else if (!strncasecmp(buf, "wrong-encoding", 14)) {
+        return SNMP_ERR_WRONGENCODING;
+    } else if (!strncasecmp(buf, "wrong-value", 11)) {
+        return SNMP_ERR_WRONGVALUE;
+    } else if (!strncasecmp(buf, "no-creation", 11)) {
+        return SNMP_ERR_NOCREATION;
+    } else if (!strncasecmp(buf, "inconsistent-value", 18)) {
+        return SNMP_ERR_INCONSISTENTVALUE;
+    } else if (!strncasecmp(buf, "resource-unavailable", 20)) {
+        return SNMP_ERR_RESOURCEUNAVAILABLE;
+    } else if (!strncasecmp(buf, "commit-failed", 13)) {
+        return SNMP_ERR_COMMITFAILED;
+    } else if (!strncasecmp(buf, "undo-failed", 11)) {
+        return SNMP_ERR_UNDOFAILED;
+    } else if (!strncasecmp(buf, "authorization-error", 19)) {
+        return SNMP_ERR_AUTHORIZATIONERROR;
+    } else if (!strncasecmp(buf, "not-writable", 12)) {
+        return SNMP_ERR_NOTWRITABLE;
+    } else if (!strncasecmp(buf, "inconsistent-name", 17)) {
+        return SNMP_ERR_INCONSISTENTNAME;
+    }
+
+    return SNMP_ERR_NOERROR;
+}
+
 unsigned char *
 netsnmp_internal_pass_parse(char * buf,
                             char * buf2,
@@ -82,7 +127,19 @@
         *var_len = strlen(buf2);
         vp->type = ASN_OCTET_STR;
         return ((unsigned char *) buf2);
-    } else if (!strncasecmp(buf, "integer", 7)) {
+    }
+#ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
+    else if (!strncasecmp(buf, "integer64", 9)) {
+        static struct counter64 c64;
+        uint64_t v64 = strtoull(buf2, NULL, 10);
+        c64.high = (unsigned long)(v64 >> 32);
+        c64.low  = (unsigned long)(v64 & 0xffffffff);
+        *var_len = sizeof(c64);
+        vp->type = ASN_INTEGER64;
+        return ((unsigned char *) &c64);
+    }
+#endif
+    else if (!strncasecmp(buf, "integer", 7)) {
         *var_len = sizeof(long_ret);
         long_ret = strtol(buf2, NULL, 10);
         vp->type = ASN_INTEGER;
@@ -92,7 +149,17 @@
         long_ret = strtoul(buf2, NULL, 10);
         vp->type = ASN_UNSIGNED;
         return ((unsigned char *) &long_ret);
-    } else if (!strncasecmp(buf, "counter", 7)) {
+    }
+    else if (!strncasecmp(buf, "counter64", 9)) {
+        static struct counter64 c64;
+        uint64_t v64 = strtoull(buf2, NULL, 10);
+        c64.high = (unsigned long)(v64 >> 32);
+        c64.low  = (unsigned long)(v64 & 0xffffffff);
+        *var_len = sizeof(c64);
+        vp->type = ASN_COUNTER64;
+        return ((unsigned char *) &c64);
+    }
+    else if (!strncasecmp(buf, "counter", 7)) {
         *var_len = sizeof(long_ret);
         long_ret = strtoul(buf2, NULL, 10);
         vp->type = ASN_COUNTER;
diff --git a/agent/mibgroup/ucd-snmp/pass_common.h b/agent/mibgroup/ucd-snmp/pass_common.h
index 2ce6afd..b1d7e4b 100644
--- a/agent/mibgroup/ucd-snmp/pass_common.h
+++ b/agent/mibgroup/ucd-snmp/pass_common.h
@@ -6,6 +6,9 @@
  * or disappear at any time
  */
 
+int
+netsnmp_internal_pass_str_to_errno(const char *buf);
+
 unsigned char *
 netsnmp_internal_pass_parse(char *buf, char *buf2, size_t *var_len,
                             struct variable *vp);
diff --git a/agent/mibgroup/ucd-snmp/pass_persist.c b/agent/mibgroup/ucd-snmp/pass_persist.c
index c3f3899..8467e19 100644
--- a/agent/mibgroup/ucd-snmp/pass_persist.c
+++ b/agent/mibgroup/ucd-snmp/pass_persist.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_IO_H
 #include <io.h>
@@ -25,9 +26,6 @@
 #ifdef HAVE_LIMITS_H
 #include <limits.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #ifdef WIN32
 #include <limits.h>
 #endif
@@ -44,12 +42,15 @@
 #include "extensible.h"
 #include "util_funcs.h"
 
+netsnmp_feature_require(get_exten_instance)
+netsnmp_feature_require(parse_miboid)
+
 struct extensible *persistpassthrus = NULL;
 int             numpersistpassthrus = 0;
 struct persist_pipe_type {
     FILE           *fIn, *fOut;
     int             fdIn, fdOut;
-    int             pid;
+    netsnmp_pid_t   pid;
 }              *persist_pipes = (struct persist_pipe_type *) NULL;
 static unsigned pipe_check_alarm_id;
 static int      init_persist_pipes(void);
@@ -66,8 +67,8 @@
     /*
      * bogus entry.  Only some of it is actually used. 
      */
-    {MIBINDEX, ASN_INTEGER, RWRITE, var_extensible_pass_persist, 0,
-     {MIBINDEX}},
+    {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+     var_extensible_pass_persist, 0, {MIBINDEX}},
 };
 
 void
@@ -111,7 +112,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 +135,7 @@
      */
     if (*cptr == '.')
         cptr++;
-    if (!isdigit(*cptr)) {
+    if (!isdigit((unsigned char)(*cptr))) {
         config_perror("second token is not a OID");
         return;
     }
@@ -146,9 +147,10 @@
     if (*ppass == NULL)
         return;
     (*ppass)->type = PASSTHRU_PERSIST;
+    (*ppass)->mibpriority = priority;
 
     (*ppass)->miblen = parse_miboid(cptr, (*ppass)->miboid);
-    while (isdigit(*cptr) || *cptr == '.')
+    while (isdigit((unsigned char)(*cptr)) || *cptr == '.')
         cptr++;
     /*
      * path
@@ -168,7 +170,7 @@
     register_mib_priority("pass_persist",
                  (struct variable *) extensible_persist_passthru_variables,
                  sizeof(struct variable2), 1, (*ppass)->miboid,
-                 (*ppass)->miblen, priority);
+                 (*ppass)->miblen, (*ppass)->mibpriority);
 
     /*
      * argggg -- pasthrus must be sorted 
@@ -179,7 +181,7 @@
         if (etmp == NULL)
             return;
         for (i = 0, ptmp = (struct extensible *) persistpassthrus;
-             i < numpersistpassthrus && ptmp != 0; i++, ptmp = ptmp->next)
+             i < numpersistpassthrus && ptmp != NULL; i++, ptmp = ptmp->next)
             etmp[i] = ptmp;
         qsort(etmp, numpersistpassthrus, sizeof(struct extensible *),
               pass_persist_compare);
@@ -199,13 +201,19 @@
 pass_persist_free_config(void)
 {
     struct extensible *etmp, *etmp2;
+    int i;
 
     for (etmp = persistpassthrus; etmp != NULL;) {
         etmp2 = etmp;
         etmp = etmp->next;
-        unregister_mib(etmp2->miboid, etmp2->miblen);
+        unregister_mib_priority(etmp2->miboid, etmp2->miblen, etmp2->mibpriority);
         free(etmp2);
     }
+    if (persist_pipes) {
+        for (i = 0; i <= numpersistpassthrus; i++) {
+            close_persist_pipe(i);
+        }
+    }
     persistpassthrus = NULL;
     numpersistpassthrus = 0;
 }
@@ -381,18 +389,7 @@
                 return SNMP_ERR_NOTWRITABLE;
             }
 
-            if (!strncasecmp(buf, "not-writable", 12)) {
-                return SNMP_ERR_NOTWRITABLE;
-            } else if (!strncasecmp(buf, "wrong-type", 10)) {
-                return SNMP_ERR_WRONGTYPE;
-            } else if (!strncasecmp(buf, "wrong-length", 12)) {
-                return SNMP_ERR_WRONGLENGTH;
-            } else if (!strncasecmp(buf, "wrong-value", 11)) {
-                return SNMP_ERR_WRONGVALUE;
-            } else if (!strncasecmp(buf, "inconsistent-value", 18)) {
-                return SNMP_ERR_INCONSISTENTVALUE;
-            }
-            return SNMP_ERR_NOERROR;
+            return netsnmp_internal_pass_str_to_errno(buf);
         }
     }
     if (snmp_get_do_debugging()) {
@@ -440,7 +437,7 @@
         for (i = 0; i <= numpersistpassthrus; i++) {
             persist_pipes[i].fIn = persist_pipes[i].fOut = (FILE *) 0;
             persist_pipes[i].fdIn = persist_pipes[i].fdOut = -1;
-            persist_pipes[i].pid = -1;
+            persist_pipes[i].pid = NETSNMP_NO_SUCH_PROCESS;
         }
     }
     return persist_pipes ? 1 : 0;
@@ -454,7 +451,7 @@
  */
 static int process_stopped(int idx)
 {
-    if (persist_pipes[idx].pid != -1) {
+    if (persist_pipes[idx].pid != NETSNMP_NO_SUCH_PROCESS) {
 #if HAVE_SYS_WAIT_H
         return waitpid(persist_pipes[idx].pid, NULL, WNOHANG) > 0;
 #endif
@@ -521,14 +518,15 @@
     /*
      * Open if it's not already open 
      */
-    if (persist_pipes[iindex].pid == -1) {
-        int             fdIn, fdOut, pid;
+    if (persist_pipes[iindex].pid == NETSNMP_NO_SUCH_PROCESS) {
+        int             fdIn, fdOut;
+        netsnmp_pid_t   pid;
 
         /*
          * Did we fail? 
          */
         if ((0 == get_exec_pipes(command, &fdIn, &fdOut, &pid)) ||
-            (pid == -1)) {
+            (pid == NETSNMP_NO_SUCH_PROCESS)) {
             DEBUGMSGTL(("ucd-snmp/pass_persist",
                         "open_persist_pipe: pid == -1\n"));
             recurse = 0;
@@ -605,7 +603,7 @@
     /*
      * Don't write to a non-existant process 
      */
-    if (persist_pipes[iindex].pid == -1) {
+    if (persist_pipes[iindex].pid == NETSNMP_NO_SUCH_PROCESS) {
         DEBUGMSGTL(("ucd-snmp/pass_persist",
                     "write_persist_pipe: not writing %s, process is non-existent",
                     data));
@@ -723,16 +721,23 @@
 	unlink(fifo_out_path);
 #endif
 
-    if (persist_pipes[iindex].pid != -1) {
+    if (persist_pipes[iindex].pid != NETSNMP_NO_SUCH_PROCESS) {
+        /*
+         * kill the child, in case we got an error and the child is not
+         * cooperating.  Ignore the return code.
+         */
+#ifdef HAVE_SIGNAL
+        (void)kill(persist_pipes[iindex].pid, SIGKILL);
+#endif
 #if HAVE_SYS_WAIT_H
-        waitpid(persist_pipes[iindex].pid, 0, 0);
+        waitpid(persist_pipes[iindex].pid, NULL, 0);
 #endif
 #if defined(WIN32) && !defined (mingw32) && !defined (HAVE_SIGNAL)
-        if (!CloseHandle((HANDLE)persist_pipes[iindex].pid)) {
+        if (!CloseHandle(persist_pipes[iindex].pid)) {
             DEBUGMSGTL(("ucd-snmp/pass_persist","close_persist_pipe pid: close error\n"));
         }
 #endif
-        persist_pipes[iindex].pid = -1;
+        persist_pipes[iindex].pid = NETSNMP_NO_SUCH_PROCESS;
     }
 
 }
diff --git a/agent/mibgroup/ucd-snmp/proc.c b/agent/mibgroup/ucd-snmp/proc.c
index 72521a0..e90c2e8 100644
--- a/agent/mibgroup/ucd-snmp/proc.c
+++ b/agent/mibgroup/ucd-snmp/proc.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #ifdef solaris2
 #define _KMEMUSER               /* Needed by <sys/user.h> */
@@ -29,11 +30,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,15 +42,15 @@
 #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>
 
 #include "struct.h"
 #include "proc.h"
+#ifdef USING_HOST_DATA_ACCESS_SWRUN_MODULE
+#include <net-snmp/data_access/swrun.h>
+#endif
 #ifdef USING_UCD_SNMP_ERRORMIB_MODULE
 #include "errormib.h"
 #else
@@ -76,21 +73,24 @@
      * information at 
      */
     struct variable2 extensible_proc_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_proc, 1, {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_proc, 1,
-         {ERRORNAME}},
-        {PROCMIN, ASN_INTEGER, RONLY, var_extensible_proc, 1, {PROCMIN}},
-        {PROCMAX, ASN_INTEGER, RONLY, var_extensible_proc, 1, {PROCMAX}},
-        {PROCCOUNT, ASN_INTEGER, RONLY, var_extensible_proc, 1,
-         {PROCCOUNT}},
-        {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_proc, 1,
-         {ERRORFLAG}},
-        {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_proc, 1,
-         {ERRORMSG}},
-        {ERRORFIX, ASN_INTEGER, RWRITE, var_extensible_proc, 1,
-         {ERRORFIX}},
-        {ERRORFIXCMD, ASN_OCTET_STR, RONLY, var_extensible_proc, 1,
-         {ERRORFIXCMD}}
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_proc, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_proc, 1, {ERRORNAME}},
+        {PROCMIN, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_proc, 1, {PROCMIN}},
+        {PROCMAX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_proc, 1, {PROCMAX}},
+        {PROCCOUNT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_proc, 1, {PROCCOUNT}},
+        {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_proc, 1, {ERRORFLAG}},
+        {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_proc, 1, {ERRORMSG}},
+        {ERRORFIX, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_extensible_proc, 1, {ERRORFIX}},
+        {ERRORFIXCMD, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_proc, 1, {ERRORFIXCMD}}
     };
 
     /*
@@ -210,8 +210,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);
@@ -261,9 +265,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;
@@ -274,16 +281,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;
             }
@@ -348,6 +359,15 @@
     return (proc);
 }
 
+#ifdef USING_HOST_DATA_ACCESS_SWRUN_MODULE
+netsnmp_feature_require(swrun_count_processes_by_name)
+int
+sh_count_procs(char *procname)
+{
+    return swrun_count_processes_by_name( procname );
+}
+#else
+
 #ifdef bsdi2
 #include <sys/param.h>
 #include <sys/sysctl.h>
@@ -399,7 +419,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>
 
@@ -794,6 +814,7 @@
 }
 #endif                          /* _SLASH_PROC_METHOD_ */
 #else
+netsnmp_feature_require(find_field)
 int
 sh_count_procs(char *procname)
 {
@@ -852,3 +873,4 @@
     return (ret);
 }
 #endif
+#endif   /* !USING_HOST_DATA_ACCESS_SWRUN_MODULE */
diff --git a/agent/mibgroup/ucd-snmp/proxy.c b/agent/mibgroup/ucd-snmp/proxy.c
index 569210d..017fd5c 100644
--- a/agent/mibgroup/ucd-snmp/proxy.c
+++ b/agent/mibgroup/ucd-snmp/proxy.c
@@ -9,11 +9,9 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_STRING_H
 #include <string.h>
 #endif
@@ -26,6 +24,9 @@
 
 #include "proxy.h"
 
+netsnmp_feature_require(handler_mark_requests_as_delegated)
+netsnmp_feature_require(request_set_error_idx)
+
 static struct simple_proxy *proxies = NULL;
 
 oid             testoid[] = { 1, 3, 6, 1, 4, 1, 2021, 8888, 1 };
@@ -105,7 +106,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,
@@ -357,6 +360,7 @@
         pdu = snmp_pdu_create(reqinfo->mode);
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_ACTION:
         pdu = snmp_pdu_create(SNMP_MSG_SET);
         break;
@@ -384,6 +388,7 @@
          *  Nothing to do in this pass
          */
         return SNMP_ERR_NOERROR;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     default:
         snmp_log(LOG_WARNING, "unsupported mode for proxy called (%d)\n",
@@ -404,7 +409,33 @@
         ourname = request->requestvb->name;
         ourlength = request->requestvb->name_length;
 
-        if (sp->base_len > 0) {
+        if (sp->base_len &&
+            reqinfo->mode == MODE_GETNEXT &&
+            (snmp_oid_compare(ourname, ourlength,
+                              sp->base, sp->base_len) < 0)) {
+            DEBUGMSGTL(( "proxy", "request is out of registered range\n"));
+            /*
+             * Create GETNEXT request with an OID so the
+             * master returns the first OID in the registered range.
+             */
+            memcpy(ourname, sp->base, sp->base_len * sizeof(oid));
+            ourlength = sp->base_len;
+            if (ourname[ourlength-1] <= 1) {
+                /*
+                 * The registered range ends with x.y.z.1
+                 * -> ask for the next of x.y.z
+                 */
+                ourlength--;
+            } else {
+                /*
+                 * The registered range ends with x.y.z.A
+                 * -> ask for the next of x.y.z.A-1.MAX_SUBID
+                 */
+                ourname[ourlength-1]--;
+                ourname[ourlength] = MAX_SUBID;
+                ourlength++;
+            }
+        } else if (sp->base_len > 0) {
             if ((ourlength - sp->name_len + sp->base_len) > MAX_OID_LEN) {
                 /*
                  * too large 
@@ -419,8 +450,8 @@
              * suffix appended? 
              */
             DEBUGMSGTL(("proxy", "length=%d, base_len=%d, name_len=%d\n",
-                        ourlength, sp->base_len, sp->name_len));
-            if (ourlength > (int) sp->name_len)
+                        (int)ourlength, (int)sp->base_len, (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;
@@ -495,7 +526,7 @@
          * WWWXXX: don't leave requests delayed if operation is
          * something like TIMEOUT 
          */
-        DEBUGMSGTL(("proxy", "got timed out... requests = %08p\n", requests));
+        DEBUGMSGTL(("proxy", "got timed out... requests = %8p\n", requests));
 
         netsnmp_handler_mark_requests_as_delegated(requests,
                                                    REQUEST_IS_NOT_DELEGATED);
@@ -523,13 +554,14 @@
              * Not sure if any other error codes need the same treatment. Left
              * as an exercise to the reader...
              */
-            DEBUGMSGTL(("proxy", "got error response (%d)\n", pdu->errstat));
+            DEBUGMSGTL(("proxy", "got error response (%ld)\n", pdu->errstat));
             if((cache->reqinfo->mode == MODE_GETNEXT) &&
                (SNMP_ERR_NOSUCHNAME == pdu->errstat)) {
                 DEBUGMSGTL(("proxy", "  ignoring error response\n"));
                 netsnmp_handler_mark_requests_as_delegated(requests,
                                                            REQUEST_IS_NOT_DELEGATED);
             }
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 	    else if (cache->reqinfo->mode == MODE_SET_ACTION) {
 		/*
 		 * In order for netsnmp_wrap_up_request to consider the
@@ -539,13 +571,14 @@
 		 *	?func=detail&atid=112694&aid=1554261&group_id=12694
 		 */
 		DEBUGMSGTL(("proxy",
-		    "got SET error %s, index %d\n",
+		    "got SET error %s, index %ld\n",
 		    snmp_errstring(pdu->errstat), pdu->errindex));
 		netsnmp_handler_mark_requests_as_delegated(
 		    requests, REQUEST_IS_NOT_DELEGATED);
 		netsnmp_request_set_error_idx(requests, pdu->errstat,
                                                         pdu->errindex);
 	    }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
             else {
 		netsnmp_handler_mark_requests_as_delegated( requests,
                                              REQUEST_IS_NOT_DELEGATED);
@@ -583,7 +616,7 @@
                                   sp->base_len) != 0)) {
                 DEBUGMSGTL(( "proxy", "out of registered range... "));
                 DEBUGMSGOID(("proxy", var->name, sp->base_len));
-                DEBUGMSG((   "proxy", " (%d) != ", sp->base_len));
+                DEBUGMSG((   "proxy", " (%d) != ", (int)sp->base_len));
                 DEBUGMSGOID(("proxy", sp->base, sp->base_len));
                 DEBUGMSG((   "proxy", "\n"));
                 snmp_set_var_typed_value(request->requestvb, ASN_NULL, NULL, 0);
@@ -595,7 +628,7 @@
                                          sp->name_len) != 0)) {
                 DEBUGMSGTL(( "proxy", "out of registered base range... "));
                 DEBUGMSGOID(("proxy", var->name, sp->name_len));
-                DEBUGMSG((   "proxy", " (%d) != ", sp->name_len));
+                DEBUGMSG((   "proxy", " (%d) != ", (int)sp->name_len));
                 DEBUGMSGOID(("proxy", sp->name, sp->name_len));
                 DEBUGMSG((   "proxy", "\n"));
                 snmp_set_var_typed_value(request->requestvb, ASN_NULL, NULL, 0);
diff --git a/agent/mibgroup/ucd-snmp/versioninfo.c b/agent/mibgroup/ucd-snmp/versioninfo.c
index a94af5c..f7a8c63 100644
--- a/agent/mibgroup/ucd-snmp/versioninfo.c
+++ b/agent/mibgroup/ucd-snmp/versioninfo.c
@@ -1,12 +1,9 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.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
@@ -18,9 +15,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
@@ -30,7 +24,12 @@
 
 #include "struct.h"
 #include "versioninfo.h"
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
+#include "util_funcs/restart.h"
+#include "util_funcs.h" /* clear_cache */
+
+netsnmp_feature_require(clear_cache)
+
 
 void
 init_versioninfo(void)
@@ -41,28 +40,28 @@
      * information at 
      */
     struct variable2 extensible_version_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_version, 1,
-         {MIBINDEX}},
-        {VERTAG, ASN_OCTET_STR, RONLY, var_extensible_version, 1,
-         {VERTAG}},
-        {VERDATE, ASN_OCTET_STR, RONLY, var_extensible_version, 1,
-         {VERDATE}},
-        {VERCDATE, ASN_OCTET_STR, RONLY, var_extensible_version, 1,
-         {VERCDATE}},
-        {VERIDENT, ASN_OCTET_STR, RONLY, var_extensible_version, 1,
-         {VERIDENT}},
-        {VERCONFIG, ASN_OCTET_STR, RONLY, var_extensible_version, 1,
-         {VERCONFIG}},
-        {VERCLEARCACHE, ASN_INTEGER, RWRITE, var_extensible_version, 1,
-         {VERCLEARCACHE}},
-        {VERUPDATECONFIG, ASN_INTEGER, RWRITE, var_extensible_version, 1,
-         {VERUPDATECONFIG}},
-        {VERRESTARTAGENT, ASN_INTEGER, RWRITE, var_extensible_version, 1,
-         {VERRESTARTAGENT}},
-        {VERSAVEPERSISTENT, ASN_INTEGER, RWRITE, var_extensible_version, 1,
-         {VERSAVEPERSISTENT}},
-        {VERDEBUGGING, ASN_INTEGER, RWRITE, var_extensible_version, 1,
-         {VERDEBUGGING}}
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_version, 1, {MIBINDEX}},
+        {VERTAG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_version, 1, {VERTAG}},
+        {VERDATE, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_version, 1, {VERDATE}},
+        {VERCDATE, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_version, 1, {VERCDATE}},
+        {VERIDENT, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_version, 1, {VERIDENT}},
+        {VERCONFIG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_version, 1, {VERCONFIG}},
+        {VERCLEARCACHE, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_extensible_version, 1, {VERCLEARCACHE}},
+        {VERUPDATECONFIG, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_extensible_version, 1, {VERUPDATECONFIG}},
+        {VERRESTARTAGENT, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_extensible_version, 1, {VERRESTARTAGENT}},
+        {VERSAVEPERSISTENT, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_extensible_version, 1, {VERSAVEPERSISTENT}},
+        {VERDEBUGGING, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE,
+         var_extensible_version, 1, {VERDEBUGGING}}
     };
 
     /*
@@ -109,22 +108,21 @@
         long_ret = name[8];
         return ((u_char *) (&long_ret));
     case VERTAG:
-        sprintf(errmsg, netsnmp_get_version());
+        strlcpy(errmsg, netsnmp_get_version(), sizeof(errmsg));
         *var_len = strlen(errmsg);
         return ((u_char *) errmsg);
     case VERDATE:
-        sprintf(errmsg, "$Date$");
+        strlcpy(errmsg, "$Date$", sizeof(errmsg));
         *var_len = strlen(errmsg);
         return ((u_char *) errmsg);
     case VERCDATE:
         curtime = time(NULL);
         cptr = ctime(&curtime);
-        sprintf(errmsg, cptr);
+        strlcpy(errmsg, cptr, sizeof(errmsg));
         *var_len = strlen(errmsg) - 1; /* - 1 to strip trailing newline */
         return ((u_char *) errmsg);
     case VERIDENT:
-        sprintf(errmsg,
-                "$Id$");
+        strlcpy(errmsg, "$Id$", sizeof(errmsg));
         *var_len = strlen(errmsg);
         return ((u_char *) errmsg);
     case VERCONFIG:
@@ -134,7 +132,7 @@
             *var_len = 1024;    /* mib imposed restriction */
         return (u_char *) config_opts;
 #else
-        sprintf(errmsg, "");
+        strlcpy(errmsg, "", sizeof(errmsg)));
         *var_len = strlen(errmsg);
         return ((u_char *) errmsg);
 #endif
diff --git a/agent/mibgroup/ucd-snmp/versioninfo.h b/agent/mibgroup/ucd-snmp/versioninfo.h
index d991147..007424e 100644
--- a/agent/mibgroup/ucd-snmp/versioninfo.h
+++ b/agent/mibgroup/ucd-snmp/versioninfo.h
@@ -28,5 +28,8 @@
 #define VERSAVEPERSISTENT 13
 #define VERDEBUGGING 20
 
+config_require(util_funcs/header_generic)
+config_require(util_funcs/restart)
 config_require(util_funcs)
+
 #endif                          /* _MIBGROUP_VERSIONINFO_H */
diff --git a/agent/mibgroup/ucd-snmp/vmstat.c b/agent/mibgroup/ucd-snmp/vmstat.c
index 79f1004..f76ce95 100644
--- a/agent/mibgroup/ucd-snmp/vmstat.c
+++ b/agent/mibgroup/ucd-snmp/vmstat.c
@@ -13,14 +13,14 @@
 void
 init_vmstat(void)
 {
-    static oid  vmstat_oid[] = { NETSNMP_UCDAVIS_MIB, 11 };
+    const oid  vmstat_oid[] = { NETSNMP_UCDAVIS_MIB, 11 };
 
     DEBUGMSGTL(("vmstat", "Initializing\n"));
     netsnmp_register_scalar_group(
         netsnmp_create_handler_registration("vmstat", vmstat_handler,
                              vmstat_oid, OID_LENGTH(vmstat_oid),
                              HANDLER_CAN_RONLY),
-        MIBINDEX, RAWSWAPOUT);
+        MIBINDEX, CPUNUMCPUS);
 }
 
 
@@ -38,6 +38,7 @@
     switch (reqinfo->mode) {
     case MODE_GET:
         obj = requests->requestvb->name[ requests->requestvb->name_length-2 ];
+
         switch (obj) {
         case MIBINDEX:             /* dummy value */
              snmp_set_var_typed_integer(requests->requestvb, ASN_INTEGER, 1);
@@ -112,6 +113,22 @@
              snmp_set_var_typed_integer(requests->requestvb, ASN_COUNTER,
                                         info->sirq_ticks & 0xffffffff);
              break;
+        case CPURAWSTEAL:
+             snmp_set_var_typed_integer(requests->requestvb, ASN_COUNTER,
+                                        info->steal_ticks & 0xffffffff);
+             break;
+        case CPURAWGUEST:
+             snmp_set_var_typed_integer(requests->requestvb, ASN_COUNTER,
+                                        info->guest_ticks & 0xffffffff);
+             break;
+        case CPURAWGUESTNICE:
+             snmp_set_var_typed_integer(requests->requestvb, ASN_COUNTER,
+                                        info->guestnice_ticks & 0xffffffff);
+             break;
+        case CPUNUMCPUS:
+             snmp_set_var_typed_integer(requests->requestvb, ASN_INTEGER,
+                                        cpu_num & 0x7fffffff);
+             break;
 
         /*
          *  'Cooked' CPU statistics
diff --git a/agent/mibgroup/ucd-snmp/vmstat.h b/agent/mibgroup/ucd-snmp/vmstat.h
index b8d5202..9fdf4f0 100644
--- a/agent/mibgroup/ucd-snmp/vmstat.h
+++ b/agent/mibgroup/ucd-snmp/vmstat.h
@@ -36,5 +36,9 @@
 #define CPURAWSOFTIRQ 61
 #define RAWSWAPIN 62
 #define RAWSWAPOUT 63
+#define CPURAWSTEAL 64
+#define CPURAWGUEST 65
+#define CPURAWGUESTNICE 66
+#define CPUNUMCPUS 67
 
 #endif                          /* _MIBGROUP_VMSTAT_H */
diff --git a/agent/mibgroup/ucd-snmp/vmstat_aix4.c b/agent/mibgroup/ucd-snmp/vmstat_aix4.c
index d4904f9..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>
@@ -46,7 +49,7 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 #include "mibdefs.h"
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 
 /*
  * Header file for this module 
@@ -153,45 +156,52 @@
 	 * Which variables do we service ? 
 	 */
 	struct variable2 extensible_vmstat_variables[] = {
-		{MIBINDEX, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-		 {MIBINDEX}},
-		{ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1,
-		 {ERRORNAME}},
-		{SWAPIN, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPIN}},
-		{SWAPOUT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPOUT}},
-		{IOSENT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {IOSENT}},
-		{IORECEIVE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-		 {IORECEIVE}},
-		{SYSINTERRUPTS, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-		 {SYSINTERRUPTS}},
-		{SYSCONTEXT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-		 {SYSCONTEXT}},
-		{CPUUSER, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUUSER}},
-		{CPUSYSTEM, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-		 {CPUSYSTEM}},
-		{CPUIDLE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUIDLE}},
-		{CPURAWUSER, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-		 {CPURAWUSER}},
-		{CPURAWSYSTEM, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-		 {CPURAWSYSTEM}},
-		{CPURAWIDLE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-		 {CPURAWIDLE}},
-		{CPURAWWAIT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-		 {CPURAWWAIT}},
-		{CPURAWKERNEL, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-		 {CPURAWKERNEL}},
-		{IORAWSENT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-		 {IORAWSENT}},
-		{IORAWRECEIVE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-		 {IORAWRECEIVE}},
-		{SYSRAWINTERRUPTS, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-		 {SYSRAWINTERRUPTS}},
-		{SYSRAWCONTEXT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-		 {SYSRAWCONTEXT}},
+		{MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {MIBINDEX}},
+		{ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {ERRORNAME}},
+		{SWAPIN, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {SWAPIN}},
+		{SWAPOUT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {SWAPOUT}},
+		{IOSENT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {IOSENT}},
+		{IORECEIVE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {IORECEIVE}},
+		{SYSINTERRUPTS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {SYSINTERRUPTS}},
+		{SYSCONTEXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {SYSCONTEXT}},
+		{CPUUSER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {CPUUSER}},
+		{CPUSYSTEM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {CPUSYSTEM}},
+		{CPUIDLE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {CPUIDLE}},
+		{CPURAWUSER, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {CPURAWUSER}},
+		{CPURAWSYSTEM, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {CPURAWSYSTEM}},
+		{CPURAWIDLE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {CPURAWIDLE}},
+		{CPURAWWAIT, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {CPURAWWAIT}},
+		{CPURAWKERNEL, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {CPURAWKERNEL}},
+		{IORAWSENT, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {IORAWSENT}},
+		{IORAWRECEIVE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {IORAWRECEIVE}},
+		{SYSRAWINTERRUPTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {SYSRAWINTERRUPTS}},
+		{SYSRAWCONTEXT, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+                 var_extensible_vmstat, 1, {SYSRAWCONTEXT}},
 		/*
 		 * Future use: 
-		 * {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {ERRORFLAG }},
-		 * {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1, {ERRORMSG }}
+		 * {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+                 *  var_extensible_vmstat, 1, {ERRORFLAG }},
+		 * {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+                 *  var_extensible_vmstat, 1, {ERRORMSG }}
 		 */
 	};
 
diff --git a/agent/mibgroup/ucd-snmp/vmstat_aix4.h b/agent/mibgroup/ucd-snmp/vmstat_aix4.h
index 50869ab..a13fcce 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_aix4.h
+++ b/agent/mibgroup/ucd-snmp/vmstat_aix4.h
@@ -15,7 +15,7 @@
     /*
      * Directive to include utility module 
      */
-config_require(util_funcs)
+config_require(util_funcs/header_generic)
 
     /*
      * we have to define the index ourselves, because perfstat structures
diff --git a/agent/mibgroup/ucd-snmp/vmstat_bsdi4.c b/agent/mibgroup/ucd-snmp/vmstat_bsdi4.c
index 94d32b3..e35b6cd 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_bsdi4.c
+++ b/agent/mibgroup/ucd-snmp/vmstat_bsdi4.c
@@ -41,7 +41,7 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/auto_nlist.h>
 
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 #include "vmstat.h"
 
 /*
@@ -57,41 +57,48 @@
 {
 
     struct variable2 extensible_vmstat_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1,
-         {ERRORNAME}},
-        {SWAPIN, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPIN}},
-        {SWAPOUT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPOUT}},
-        {IOSENT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {IOSENT}},
-        {IORECEIVE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {IORECEIVE}},
-        {SYSINTERRUPTS, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {SYSINTERRUPTS}},
-        {SYSCONTEXT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {SYSCONTEXT}},
-        {CPUUSER, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUUSER}},
-        {CPUSYSTEM, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {CPUSYSTEM}},
-        {CPUIDLE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUIDLE}},
-        {CPURAWUSER, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWUSER}},
-        {CPURAWNICE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWNICE}},
-        {CPURAWSYSTEM, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWSYSTEM}},
-        {CPURAWIDLE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWIDLE}},
-        {CPURAWKERNEL, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWKERNEL}},
-        {CPURAWINTR, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWINTR}},
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {ERRORNAME}},
+        {SWAPIN, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SWAPIN}},
+        {SWAPOUT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SWAPOUT}},
+        {IOSENT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IOSENT}},
+        {IORECEIVE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IORECEIVE}},
+        {SYSINTERRUPTS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSINTERRUPTS}},
+        {SYSCONTEXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSCONTEXT}},
+        {CPUUSER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUUSER}},
+        {CPUSYSTEM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUSYSTEM}},
+        {CPUIDLE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUIDLE}},
+        {CPURAWUSER, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWUSER}},
+        {CPURAWNICE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWNICE}},
+        {CPURAWSYSTEM, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWSYSTEM}},
+        {CPURAWIDLE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWIDLE}},
+        {CPURAWKERNEL, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWKERNEL}},
+        {CPURAWINTR, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWINTR}},
         /*
          * Future use: 
          */
         /*
-         * {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {ERRORFLAG }},
-         * {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1, {ERRORMSG }}
+         * {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         *  var_extensible_vmstat, 1, {ERRORFLAG }},
+         * {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         *  var_extensible_vmstat, 1, {ERRORMSG }}
          */
     };
 
diff --git a/agent/mibgroup/ucd-snmp/vmstat_bsdi4.h b/agent/mibgroup/ucd-snmp/vmstat_bsdi4.h
index 0b67a12..74bf31b 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_bsdi4.h
+++ b/agent/mibgroup/ucd-snmp/vmstat_bsdi4.h
@@ -5,6 +5,8 @@
 #ifndef _MIBGROUP_VMSTAT_BSDI4_H
 #define _MIBGROUP_VMSTAT_BSDI4_H
 
+config_require(util_funcs/header_generic)
+
 #include "mibdefs.h"
 
 void            init_vmstat_bsdi4(void);
diff --git a/agent/mibgroup/ucd-snmp/vmstat_darwin7.c b/agent/mibgroup/ucd-snmp/vmstat_darwin7.c
index 70415e5..d96c55c 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_darwin7.c
+++ b/agent/mibgroup/ucd-snmp/vmstat_darwin7.c
@@ -43,7 +43,7 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/auto_nlist.h>
 
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 #include "vmstat.h"
 #include "vmstat_darwin7.h"
 
@@ -74,45 +74,52 @@
 {
 
     struct variable2 extensible_vmstat_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1,
-         {ERRORNAME}},
-        {SWAPIN, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPIN}},
-        {SWAPOUT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPOUT}},
-        {IOSENT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {IOSENT}},
-        {IORECEIVE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {IORECEIVE}},
-        {SYSINTERRUPTS, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {SYSINTERRUPTS}},
-        {SYSCONTEXT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {SYSCONTEXT}},
-        {CPUUSER, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUUSER}},
-        {CPUSYSTEM, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {CPUSYSTEM}},
-        {CPUIDLE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUIDLE}},
-        {CPURAWUSER, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWUSER}},
-        {CPURAWNICE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWNICE}},
-        {CPURAWSYSTEM, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWSYSTEM}},
-        {CPURAWIDLE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWIDLE}},
-        {CPURAWKERNEL, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWKERNEL}},
-        {CPURAWINTR, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWINTR}},
-        {SYSRAWINTERRUPTS, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {SYSRAWINTERRUPTS}},
-        {SYSRAWCONTEXT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {SYSRAWCONTEXT}},
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {ERRORNAME}},
+        {SWAPIN, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SWAPIN}},
+        {SWAPOUT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SWAPOUT}},
+        {IOSENT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IOSENT}},
+        {IORECEIVE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IORECEIVE}},
+        {SYSINTERRUPTS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSINTERRUPTS}},
+        {SYSCONTEXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSCONTEXT}},
+        {CPUUSER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUUSER}},
+        {CPUSYSTEM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUSYSTEM}},
+        {CPUIDLE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUIDLE}},
+        {CPURAWUSER, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWUSER}},
+        {CPURAWNICE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWNICE}},
+        {CPURAWSYSTEM, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWSYSTEM}},
+        {CPURAWIDLE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWIDLE}},
+        {CPURAWKERNEL, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWKERNEL}},
+        {CPURAWINTR, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWINTR}},
+        {SYSRAWINTERRUPTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSRAWINTERRUPTS}},
+        {SYSRAWCONTEXT, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSRAWCONTEXT}},
         /*
          * Future use: 
          */
         /*
-         * {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {ERRORFLAG }},
-         * {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1, {ERRORMSG }}
+         * {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         *  var_extensible_vmstat, 1, {ERRORFLAG }},
+         * {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         *  var_extensible_vmstat, 1, {ERRORMSG }}
          */
     };
 
diff --git a/agent/mibgroup/ucd-snmp/vmstat_darwin7.h b/agent/mibgroup/ucd-snmp/vmstat_darwin7.h
index f92e509..b1a301d 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_darwin7.h
+++ b/agent/mibgroup/ucd-snmp/vmstat_darwin7.h
@@ -5,6 +5,8 @@
 #ifndef _MIBGROUP_VMSTAT_DARWIN7_H
 #define _MIBGROUP_VMSTAT_DARWIN7_H
 
+config_require(util_funcs/header_generic)
+
 #include "mibdefs.h"
 
 void            init_vmstat_darwin7(void);
diff --git a/agent/mibgroup/ucd-snmp/vmstat_dynix.c b/agent/mibgroup/ucd-snmp/vmstat_dynix.c
index 9170b26..33f5412 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_dynix.c
+++ b/agent/mibgroup/ucd-snmp/vmstat_dynix.c
@@ -34,7 +34,7 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 #include "mibdefs.h"
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 
 /*
  * Header file for this module 
@@ -165,43 +165,50 @@
      * Which variables do we service ? 
      */
     struct variable2 extensible_vmstat_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1,
-         {ERRORNAME}},
-        {SWAPIN, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPIN}},
-        {SWAPOUT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPOUT}},
-        {IOSENT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {IOSENT}},
-        {IORECEIVE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {IORECEIVE}},
-        {SYSINTERRUPTS, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {SYSINTERRUPTS}},
-        {SYSCONTEXT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {SYSCONTEXT}},
-        {CPUUSER, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUUSER}},
-        {CPUSYSTEM, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {CPUSYSTEM}},
-        {CPUIDLE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUIDLE}},
-        {CPURAWUSER, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWUSER}},
-        {CPURAWSYSTEM, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWSYSTEM}},
-        {CPURAWIDLE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWIDLE}},
-        {CPURAWWAIT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWWAIT}},
-        {CPURAWKERNEL, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWKERNEL}},
-        {IORAWSENT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {IORAWSENT}},
-        {IORAWRECEIVE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {IORAWRECEIVE}},
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {ERRORNAME}},
+        {SWAPIN, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SWAPIN}},
+        {SWAPOUT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SWAPOUT}},
+        {IOSENT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IOSENT}},
+        {IORECEIVE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IORECEIVE}},
+        {SYSINTERRUPTS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSINTERRUPTS}},
+        {SYSCONTEXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSCONTEXT}},
+        {CPUUSER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUUSER}},
+        {CPUSYSTEM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUSYSTEM}},
+        {CPUIDLE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUIDLE}},
+        {CPURAWUSER, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWUSER}},
+        {CPURAWSYSTEM, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWSYSTEM}},
+        {CPURAWIDLE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWIDLE}},
+        {CPURAWWAIT, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWWAIT}},
+        {CPURAWKERNEL, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWKERNEL}},
+        {IORAWSENT, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IORAWSENT}},
+        {IORAWRECEIVE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IORAWRECEIVE}},
         /*
          * Future use: 
          */
         /*
-         * {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {ERRORFLAG }},
-         * {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1, {ERRORMSG }}
+         * {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         *  var_extensible_vmstat, 1, {ERRORFLAG }},
+         * {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         *  var_extensible_vmstat, 1, {ERRORMSG }}
          */
     };
 
diff --git a/agent/mibgroup/ucd-snmp/vmstat_dynix.h b/agent/mibgroup/ucd-snmp/vmstat_dynix.h
index aae1790..8954e35 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_dynix.h
+++ b/agent/mibgroup/ucd-snmp/vmstat_dynix.h
@@ -14,7 +14,7 @@
 /*
  * Directive to include utility module 
  */
-config_require(util_funcs)
+config_require(util_funcs/header_generic)
 
     /*
      * MIB wants V_CPU_SYSTEM which is sysinfo V_CPU_KERNEL + V_CPU_WAIT 
diff --git a/agent/mibgroup/ucd-snmp/vmstat_freebsd2.c b/agent/mibgroup/ucd-snmp/vmstat_freebsd2.c
index 9185bc6..3de89b2 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_freebsd2.c
+++ b/agent/mibgroup/ucd-snmp/vmstat_freebsd2.c
@@ -57,7 +57,7 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/auto_nlist.h>
 
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 #include "vmstat.h"
 #include "vmstat_freebsd2.h"
 
@@ -88,45 +88,52 @@
 {
 
     struct variable2 extensible_vmstat_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1,
-         {ERRORNAME}},
-        {SWAPIN, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPIN}},
-        {SWAPOUT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPOUT}},
-        {IOSENT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {IOSENT}},
-        {IORECEIVE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {IORECEIVE}},
-        {SYSINTERRUPTS, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {SYSINTERRUPTS}},
-        {SYSCONTEXT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {SYSCONTEXT}},
-        {CPUUSER, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUUSER}},
-        {CPUSYSTEM, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {CPUSYSTEM}},
-        {CPUIDLE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUIDLE}},
-        {CPURAWUSER, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWUSER}},
-        {CPURAWNICE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWNICE}},
-        {CPURAWSYSTEM, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWSYSTEM}},
-        {CPURAWIDLE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWIDLE}},
-        {CPURAWKERNEL, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWKERNEL}},
-        {CPURAWINTR, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWINTR}},
-        {SYSRAWINTERRUPTS, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {SYSRAWINTERRUPTS}},
-        {SYSRAWCONTEXT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {SYSRAWCONTEXT}},
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {ERRORNAME}},
+        {SWAPIN, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SWAPIN}},
+        {SWAPOUT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SWAPOUT}},
+        {IOSENT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IOSENT}},
+        {IORECEIVE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IORECEIVE}},
+        {SYSINTERRUPTS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSINTERRUPTS}},
+        {SYSCONTEXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSCONTEXT}},
+        {CPUUSER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUUSER}},
+        {CPUSYSTEM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUSYSTEM}},
+        {CPUIDLE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUIDLE}},
+        {CPURAWUSER, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWUSER}},
+        {CPURAWNICE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWNICE}},
+        {CPURAWSYSTEM, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWSYSTEM}},
+        {CPURAWIDLE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWIDLE}},
+        {CPURAWKERNEL, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWKERNEL}},
+        {CPURAWINTR, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWINTR}},
+        {SYSRAWINTERRUPTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSRAWINTERRUPTS}},
+        {SYSRAWCONTEXT, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSRAWCONTEXT}},
         /*
          * Future use: 
          */
         /*
-         * {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {ERRORFLAG }},
-         * {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1, {ERRORMSG }}
+         * {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         *  var_extensible_vmstat, 1, {ERRORFLAG }},
+         * {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         *  var_extensible_vmstat, 1, {ERRORMSG }}
          */
     };
 
diff --git a/agent/mibgroup/ucd-snmp/vmstat_freebsd2.h b/agent/mibgroup/ucd-snmp/vmstat_freebsd2.h
index f0e60b8..26b44b6 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_freebsd2.h
+++ b/agent/mibgroup/ucd-snmp/vmstat_freebsd2.h
@@ -5,6 +5,8 @@
 #ifndef _MIBGROUP_VMSTAT_FREEBSD2_H
 #define _MIBGROUP_VMSTAT_FREEBSD2_H
 
+config_require(util_funcs/header_generic)
+
 #include "mibdefs.h"
 
 void            init_vmstat_freebsd2(void);
diff --git a/agent/mibgroup/ucd-snmp/vmstat_hpux.c b/agent/mibgroup/ucd-snmp/vmstat_hpux.c
index 892fb7e..a784502 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_hpux.c
+++ b/agent/mibgroup/ucd-snmp/vmstat_hpux.c
@@ -45,7 +45,7 @@
 /*
  * Utility functions for UCD-SNMP 
  */
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 
 /*
  * Header file for this module 
@@ -171,45 +171,52 @@
      * Which variables do we service ? 
      */
     struct variable2 extensible_vmstat_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1,
-         {ERRORNAME}},
-        {SWAPIN, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPIN}},
-        {SWAPOUT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPOUT}},
-        {IOSENT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {IOSENT}},
-        {IORECEIVE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {IORECEIVE}},
-        {SYSINTERRUPTS, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {SYSINTERRUPTS}},
-        {SYSCONTEXT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {SYSCONTEXT}},
-        {CPUUSER, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUUSER}},
-        {CPUSYSTEM, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {CPUSYSTEM}},
-        {CPUIDLE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUIDLE}},
-        {CPURAWUSER, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWUSER}},
-        {CPURAWNICE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWNICE}},
-        {CPURAWSYSTEM, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWSYSTEM}},
-        {CPURAWIDLE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWIDLE}},
-        {CPURAWWAIT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWWAIT}},
-        {CPURAWKERNEL, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWKERNEL}},
-        {IORAWSENT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {IORAWSENT}},
-        {IORAWRECEIVE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {IORAWRECEIVE}},
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {ERRORNAME}},
+        {SWAPIN, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SWAPIN}},
+        {SWAPOUT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SWAPOUT}},
+        {IOSENT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IOSENT}},
+        {IORECEIVE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IORECEIVE}},
+        {SYSINTERRUPTS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSINTERRUPTS}},
+        {SYSCONTEXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSCONTEXT}},
+        {CPUUSER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUUSER}},
+        {CPUSYSTEM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUSYSTEM}},
+        {CPUIDLE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUIDLE}},
+        {CPURAWUSER, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWUSER}},
+        {CPURAWNICE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWNICE}},
+        {CPURAWSYSTEM, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWSYSTEM}},
+        {CPURAWIDLE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWIDLE}},
+        {CPURAWWAIT, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWWAIT}},
+        {CPURAWKERNEL, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWKERNEL}},
+        {IORAWSENT, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IORAWSENT}},
+        {IORAWRECEIVE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IORAWRECEIVE}},
         /*
          * Future use: 
          */
         /*
-         * {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {ERRORFLAG }},
-         * {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1, {ERRORMSG }}
+         * {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         *  var_extensible_vmstat, 1, {ERRORFLAG }},
+         * {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         *  var_extensible_vmstat, 1, {ERRORMSG }}
          */
     };
 
diff --git a/agent/mibgroup/ucd-snmp/vmstat_hpux.h b/agent/mibgroup/ucd-snmp/vmstat_hpux.h
index e10095e..8f26594 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_hpux.h
+++ b/agent/mibgroup/ucd-snmp/vmstat_hpux.h
@@ -14,7 +14,7 @@
 /*
  * Directive to include utility module 
  */
-config_require(util_funcs)
+config_require(util_funcs/header_generic)
 
     /*
      * Make 64-bit pstat calls 
diff --git a/agent/mibgroup/ucd-snmp/vmstat_linux.c b/agent/mibgroup/ucd-snmp/vmstat_linux.c
index f09ed34..d6eff50 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_linux.c
+++ b/agent/mibgroup/ucd-snmp/vmstat_linux.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_LIMITS_H
 #include <limits.h>
@@ -108,9 +109,12 @@
 
 #include "mibdefs.h"
 #include "struct.h"
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 #include "vmstat.h"
 
+netsnmp_feature_require(hardware_cpu_load)
+
+
 FindVarMethod var_extensible_vmstat;
 
 static int has_vmstat = 1;
@@ -128,54 +132,64 @@
 init_vmstat(void)
 {
     struct variable2 extensible_vmstat_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1,
-         {ERRORNAME}},
-        {SWAPIN, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPIN}},
-        {SWAPOUT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPOUT}},
-        {RAWSWAPIN, ASN_COUNTER, RONLY, var_extensible_vmstat, 1, {RAWSWAPIN}},
-        {RAWSWAPOUT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1, {RAWSWAPOUT}},
-        {IOSENT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {IOSENT}},
-        {IORECEIVE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {IORECEIVE}},
-        {IORAWSENT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1, {IORAWSENT}},
-        {IORAWRECEIVE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {IORAWRECEIVE}},
-        {SYSINTERRUPTS, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {SYSINTERRUPTS}},
-        {SYSCONTEXT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {SYSCONTEXT}},
-        {CPUUSER, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUUSER}},
-        {CPUSYSTEM, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {CPUSYSTEM}},
-        {CPUIDLE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUIDLE}},
-        {CPURAWUSER, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWUSER}},
-        {CPURAWNICE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWNICE}},
-        {CPURAWSYSTEM, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWSYSTEM}},
-        {CPURAWKERNEL, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWKERNEL}},
-        {CPURAWIDLE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWIDLE}},
-        {SYSRAWINTERRUPTS, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {SYSRAWINTERRUPTS}},
-        {SYSRAWCONTEXT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {SYSRAWCONTEXT}},
-        {CPURAWWAIT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWWAIT}},
-        {CPURAWINTR, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWINTR}},
-        {CPURAWSOFTIRQ, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWSOFTIRQ}},
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {ERRORNAME}},
+        {SWAPIN, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SWAPIN}},
+        {SWAPOUT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SWAPOUT}},
+        {RAWSWAPIN, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {RAWSWAPIN}},
+        {RAWSWAPOUT, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {RAWSWAPOUT}},
+        {IOSENT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IOSENT}},
+        {IORECEIVE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IORECEIVE}},
+        {IORAWSENT, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IORAWSENT}},
+        {IORAWRECEIVE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IORAWRECEIVE}},
+        {SYSINTERRUPTS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSINTERRUPTS}},
+        {SYSCONTEXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSCONTEXT}},
+        {CPUUSER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUUSER}},
+        {CPUSYSTEM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUSYSTEM}},
+        {CPUIDLE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUIDLE}},
+        {CPURAWUSER, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWUSER}},
+        {CPURAWNICE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWNICE}},
+        {CPURAWSYSTEM, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWSYSTEM}},
+        {CPURAWKERNEL, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWKERNEL}},
+        {CPURAWIDLE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWIDLE}},
+        {SYSRAWINTERRUPTS, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSRAWINTERRUPTS}},
+        {SYSRAWCONTEXT, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSRAWCONTEXT}},
+        {CPURAWWAIT, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWWAIT}},
+        {CPURAWINTR, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWINTR}},
+        {CPURAWSOFTIRQ, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWSOFTIRQ}},
         /*
          * Future use: 
          */
         /*
-         * {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {ERRORFLAG }},
-         * {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1, {ERRORMSG }}
+         * {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         *  var_extensible_vmstat, 1, {ERRORFLAG }},
+         * {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         *  var_extensible_vmstat, 1, {ERRORMSG }}
          */
     };
 
diff --git a/agent/mibgroup/ucd-snmp/vmstat_linux.h b/agent/mibgroup/ucd-snmp/vmstat_linux.h
index 738e2f1..6f7c50f 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_linux.h
+++ b/agent/mibgroup/ucd-snmp/vmstat_linux.h
@@ -5,6 +5,7 @@
 #ifndef _MIBGROUP_VMSTAT_H
 #define _MIBGROUP_VMSTAT_H
 
+config_require(util_funcs/header_generic)
 config_require(hardware/cpu)
 
 #include "mibdefs.h"
diff --git a/agent/mibgroup/ucd-snmp/vmstat_netbsd1.c b/agent/mibgroup/ucd-snmp/vmstat_netbsd1.c
index 12c73db..9706c42 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_netbsd1.c
+++ b/agent/mibgroup/ucd-snmp/vmstat_netbsd1.c
@@ -49,7 +49,7 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/auto_nlist.h>
 
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 #include "vmstat.h"
 
 /*
@@ -66,42 +66,49 @@
 {
 
     struct variable2 extensible_vmstat_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1,
-         {ERRORNAME}},
-        {SWAPIN, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPIN}},
-        {SWAPOUT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPOUT}},
-        {IOSENT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {IOSENT}},
-        {IORECEIVE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {IORECEIVE}},
-        {SYSINTERRUPTS, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {SYSINTERRUPTS}},
-        {SYSCONTEXT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {SYSCONTEXT}},
-        {CPUUSER, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUUSER}},
-        {CPUSYSTEM, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {CPUSYSTEM}},
-        {CPUIDLE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUIDLE}},
-        {CPURAWUSER, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWUSER}},
-        {CPURAWNICE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWNICE}},
-        {CPURAWSYSTEM, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWSYSTEM}},
-        {CPURAWIDLE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWIDLE}},
-        {CPURAWKERNEL, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWKERNEL}},
-        {CPURAWINTR, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWINTR}},
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {ERRORNAME}},
+        {SWAPIN, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SWAPIN}},
+        {SWAPOUT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SWAPOUT}},
+        {IOSENT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IOSENT}},
+        {IORECEIVE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IORECEIVE}},
+        {SYSINTERRUPTS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSINTERRUPTS}},
+        {SYSCONTEXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSCONTEXT}},
+        {CPUUSER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUUSER}},
+        {CPUSYSTEM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUSYSTEM}},
+        {CPUIDLE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUIDLE}},
+        {CPURAWUSER, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWUSER}},
+        {CPURAWNICE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWNICE}},
+        {CPURAWSYSTEM, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWSYSTEM}},
+        {CPURAWIDLE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWIDLE}},
+        {CPURAWKERNEL, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWKERNEL}},
+        {CPURAWINTR, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWINTR}},
 
         /*
          * Future use: 
          */
         /*
-         * {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {ERRORFLAG }},
-         * {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1, {ERRORMSG }}
+         * {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         *  var_extensible_vmstat, 1, {ERRORFLAG }},
+         * {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         *  var_extensible_vmstat, 1, {ERRORMSG }}
          */
     };
 
@@ -192,7 +199,7 @@
             memset(cpu_new, 0, sizeof(cpu_new));
 #elif defined(KERN_CPTIME)
         int             mib[2] = { CTL_KERN, KERN_CPTIME };
-        int             ssize = sizeof(cpu_new);
+        size_t          ssize = sizeof(cpu_new);
 
         if (sysctl(mib, 2, cpu_new, &ssize, NULL, 0) < 0)
             memset(cpu_new, 0, sizeof(cpu_new));
diff --git a/agent/mibgroup/ucd-snmp/vmstat_netbsd1.h b/agent/mibgroup/ucd-snmp/vmstat_netbsd1.h
index eb6b172..adf5d46 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_netbsd1.h
+++ b/agent/mibgroup/ucd-snmp/vmstat_netbsd1.h
@@ -5,6 +5,8 @@
 #ifndef _MIBGROUP_VMSTAT_NETBSD1_H
 #define _MIBGROUP_VMSTAT_NETBSD1_H
 
+config_require(util_funcs/header_generic)
+
 #include "mibdefs.h"
 
 void            init_vmstat_netbsd1(void);
diff --git a/agent/mibgroup/ucd-snmp/vmstat_solaris2.c b/agent/mibgroup/ucd-snmp/vmstat_solaris2.c
index ca8a87f..3715045 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_solaris2.c
+++ b/agent/mibgroup/ucd-snmp/vmstat_solaris2.c
@@ -46,7 +46,7 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 #include "mibdefs.h"
-#include "util_funcs.h"
+#include "util_funcs/header_generic.h"
 
 /*
  * Header file for this module 
@@ -169,41 +169,48 @@
      * Which variables do we service ? 
      */
     struct variable2 extensible_vmstat_variables[] = {
-        {MIBINDEX, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {MIBINDEX}},
-        {ERRORNAME, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1,
-         {ERRORNAME}},
-        {SWAPIN, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPIN}},
-        {SWAPOUT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {SWAPOUT}},
-        {IOSENT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {IOSENT}},
-        {IORECEIVE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {IORECEIVE}},
-        {SYSINTERRUPTS, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {SYSINTERRUPTS}},
-        {SYSCONTEXT, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {SYSCONTEXT}},
-        {CPUUSER, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUUSER}},
-        {CPUSYSTEM, ASN_INTEGER, RONLY, var_extensible_vmstat, 1,
-         {CPUSYSTEM}},
-        {CPUIDLE, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {CPUIDLE}},
-        {CPURAWUSER, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWUSER}},
-        {CPURAWSYSTEM, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWSYSTEM}},
-        {CPURAWIDLE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWIDLE}},
-        {CPURAWWAIT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWWAIT}},
-        {CPURAWKERNEL, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {CPURAWKERNEL}},
-        {IORAWSENT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {IORAWSENT}},
-        {IORAWRECEIVE, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
-         {IORAWRECEIVE}},
+        {MIBINDEX, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {MIBINDEX}},
+        {ERRORNAME, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {ERRORNAME}},
+        {SWAPIN, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SWAPIN}},
+        {SWAPOUT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SWAPOUT}},
+        {IOSENT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IOSENT}},
+        {IORECEIVE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IORECEIVE}},
+        {SYSINTERRUPTS, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSINTERRUPTS}},
+        {SYSCONTEXT, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {SYSCONTEXT}},
+        {CPUUSER, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUUSER}},
+        {CPUSYSTEM, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUSYSTEM}},
+        {CPUIDLE, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPUIDLE}},
+        {CPURAWUSER, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWUSER}},
+        {CPURAWSYSTEM, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWSYSTEM}},
+        {CPURAWIDLE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWIDLE}},
+        {CPURAWWAIT, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWWAIT}},
+        {CPURAWKERNEL, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {CPURAWKERNEL}},
+        {IORAWSENT, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IORAWSENT}},
+        {IORAWRECEIVE, ASN_COUNTER, NETSNMP_OLDAPI_RONLY,
+         var_extensible_vmstat, 1, {IORAWRECEIVE}},
         /*
          * Future use: 
-         * {ERRORFLAG, ASN_INTEGER, RONLY, var_extensible_vmstat, 1, {ERRORFLAG }},
-         * {ERRORMSG, ASN_OCTET_STR, RONLY, var_extensible_vmstat, 1, {ERRORMSG }}
+         * {ERRORFLAG, ASN_INTEGER, NETSNMP_OLDAPI_RONLY,
+         *  var_extensible_vmstat, 1, {ERRORFLAG }},
+         * {ERRORMSG, ASN_OCTET_STR, NETSNMP_OLDAPI_RONLY,
+         *  var_extensible_vmstat, 1, {ERRORMSG }}
          */
     };
 
diff --git a/agent/mibgroup/ucd-snmp/vmstat_solaris2.h b/agent/mibgroup/ucd-snmp/vmstat_solaris2.h
index 8282288..77fbb3b 100644
--- a/agent/mibgroup/ucd-snmp/vmstat_solaris2.h
+++ b/agent/mibgroup/ucd-snmp/vmstat_solaris2.h
@@ -23,7 +23,7 @@
     /*
      * Directive to include utility module 
      */
-config_require(util_funcs)
+config_require(util_funcs/header_generic)
 
     /*
      * MIB wants CPU_SYSTEM which is sysinfo CPU_KERNEL + CPU_WAIT 
diff --git a/agent/mibgroup/ucd_snmp.h b/agent/mibgroup/ucd_snmp.h
index 34c2fbb..0d87ec1 100644
--- a/agent/mibgroup/ucd_snmp.h
+++ b/agent/mibgroup/ucd_snmp.h
@@ -3,12 +3,14 @@
 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)
 config_require(ucd-snmp/file)
+#if defined(HAVE_DLFCN_H) && defined(HAVE_DLOPEN)
 config_require(ucd-snmp/dlmod)
+#endif
 config_require(ucd-snmp/proxy)
 config_require(ucd-snmp/logmatch)
 config_require(ucd-snmp/memory)
diff --git a/agent/mibgroup/udp-mib/data_access/udp_endpoint.h b/agent/mibgroup/udp-mib/data_access/udp_endpoint.h
index fd07394..d9dec1d 100644
--- a/agent/mibgroup/udp-mib/data_access/udp_endpoint.h
+++ b/agent/mibgroup/udp-mib/data_access/udp_endpoint.h
@@ -20,8 +20,15 @@
 config_require(udp-mib/data_access/udp_endpoint_common)
 #if defined( linux )
 config_require(udp-mib/data_access/udp_endpoint_linux)
+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) || defined(darwin)
+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_common.c b/agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c
index 51e3375..63f8549 100644
--- a/agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c
+++ b/agent/mibgroup/udp-mib/data_access/udp_endpoint_common.c
@@ -4,6 +4,7 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include "udp-mib/udpEndpointTable/udpEndpointTable_constants.h"
 
@@ -13,6 +14,10 @@
 
 #include "udp_endpoint_private.h"
 
+netsnmp_feature_child_of(udp_endpoint_common, libnetsnmpmibs)
+
+netsnmp_feature_child_of(udp_endpoint_entry_create, udp_endpoint_common)
+
 /**---------------------------------------------------------------------*/
 /*
  * local static vars
@@ -24,11 +29,6 @@
  * initialization
  */
 
-void
-netsnmp_access_udp_endpoint_init(void)
-{
-}
-
 /**---------------------------------------------------------------------*/
 /*
  * container functions
@@ -105,7 +105,8 @@
          * free all items.
          */
         CONTAINER_CLEAR(container,
-                        (netsnmp_container_obj_func*)free,
+                        (netsnmp_container_obj_func*)
+                        netsnmp_access_udp_endpoint_entry_free,
                         NULL);
     }
 
@@ -119,6 +120,7 @@
  */
 /**
  */
+#ifndef NETSNMP_FEATURE_REMOVE_UDP_ENDPOINT_ENTRY_CREATE
 netsnmp_udp_endpoint_entry *
 netsnmp_access_udp_endpoint_entry_create(void)
 {
@@ -135,6 +137,7 @@
 
     return entry;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UDP_ENDPOINT_ENTRY_CREATE */
 
 /**
  */
@@ -153,23 +156,3 @@
 
     free(entry);
 }
-
-
-/**---------------------------------------------------------------------*/
-/*
- * Utility routines
- */
-
-/**
- * \internal
- */
-static void
-_entry_release(netsnmp_udp_endpoint_entry * entry, void *context)
-{
-    netsnmp_access_udp_endpoint_entry_free(entry);
-}
-
-/**---------------------------------------------------------------------*/
-/*
- *
- */
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 ba8f7a2..6edbdc1 100644
--- a/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c
+++ b/agent/mibgroup/udp-mib/data_access/udp_endpoint_linux.c
@@ -4,6 +4,7 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -14,11 +15,15 @@
 #include <net-snmp/data_access/udp_endpoint.h>
 
 #include "udp-mib/udpEndpointTable/udpEndpointTable_constants.h"
-
+#include "mibgroup/util_funcs/get_pid_from_inode.h"
 #include "udp_endpoint_private.h"
 
 #include <fcntl.h>
 
+netsnmp_feature_require(text_utils)
+netsnmp_feature_child_of(udp_endpoint_all, libnetsnmpmibs)
+netsnmp_feature_child_of(udp_endpoint_writable, udp_endpoint_all)
+
 static int _load4(netsnmp_container *container, u_int flags);
 #if defined (NETSNMP_ENABLE_IPV6)
 static int _load6(netsnmp_container *container, u_int flags);
@@ -30,6 +35,7 @@
  * @retval  0: success
  * @retval <0: error
  */
+#ifndef NETSNMP_FEATURE_REMOVE_UDP_ENDPOINT_WRITABLE
 int
 netsnmp_arch_udp_endpoint_entry_init(netsnmp_udp_endpoint_entry *entry)
 {
@@ -71,6 +77,7 @@
     /** xxx-rks:9 udp_endpoint delete not implemented */
     return -1;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UDP_ENDPOINT_WRITABLE */
 
 
 /**
@@ -84,6 +91,9 @@
 {
     int rc = 0;
 
+    /* Setup the pid_from_inode table, and fill it.*/
+    netsnmp_get_pid_from_inode_init();
+
     rc = _load4(container, load_flags);
     if(rc < 0) {
         u_int flags = NETSNMP_ACCESS_UDP_ENDPOINT_FREE_KEEP_CONTAINER;
@@ -150,14 +160,14 @@
     len = (sep - ptr);
     if (-1 == netsnmp_addrstr_hton(ptr, len)) {
         DEBUGMSGTL(("text:util:tvi", "bad length %d for loc addr '%s'\n",
-                    u_ptr_len, line_info->start));
+                    (int)u_ptr_len, line_info->start));
         return PMLP_RC_MEMORY_UNUSED;
     }
     offset = 0;
     netsnmp_hex_to_binary(&u_ptr, &u_ptr_len, &offset, 0, ptr, NULL);
     if ((4 != offset) && (16 != offset)) {
         DEBUGMSGTL(("text:util:tvi", "bad offset %d for loc addr '%s'\n",
-                    offset, line_info->start));
+                    (int)offset, line_info->start));
         return PMLP_RC_MEMORY_UNUSED;
     }
     ep->loc_addr_len = offset;
@@ -186,14 +196,14 @@
     len = (sep - ptr);
     if (-1 == netsnmp_addrstr_hton(ptr, len)) {
         DEBUGMSGTL(("text:util:tvi", "bad length %d for rmt addr '%s'\n",
-                    u_ptr_len, line_info->start));
+                    (int)u_ptr_len, line_info->start));
         return PMLP_RC_MEMORY_UNUSED;
     }
     offset = 0;
     netsnmp_hex_to_binary(&u_ptr, &u_ptr_len, &offset, 0, ptr, NULL);
     if ((4 != offset) && (16 != offset)) {
         DEBUGMSGTL(("text:util:tvi", "bad offset %d for rmt addr '%s'\n",
-                    offset, line_info->start));
+                    (int)offset, line_info->start));
         return PMLP_RC_MEMORY_UNUSED;
     }
     ep->rmt_addr_len = offset;
@@ -222,8 +232,13 @@
     inode = strtoull(ptr, &ptr, 0);
     ep->instance = (u_int)inode;
 
-    ep->index = (u_int)(lpi->user_context);
-    lpi->user_context = (void*)((u_int)(lpi->user_context) + 1);
+    /*
+     * get the pid also
+     */
+    ep->pid = netsnmp_get_pid_from_inode(inode);
+
+    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/data_access/udp_endpoint_solaris2.c b/agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c
index f4b69df..f52244a 100644
--- a/agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c
+++ b/agent/mibgroup/udp-mib/data_access/udp_endpoint_solaris2.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
 #include <net-snmp/agent/net-snmp-agent-includes.h>
@@ -10,11 +11,16 @@
 
 #include "kernel_sunos5.h"
 
+netsnmp_feature_require(netsnmp_access_udp_endpoint_entry_create)
+netsnmp_feature_child_of(udp_endpoint_all, libnetsnmpmibs)
+netsnmp_feature_child_of(udp_endpoint_writable, udp_endpoint_all)
+
 static int _load_udp_endpoint_table_v4(netsnmp_container *, int);
 #if defined(NETSNMP_ENABLE_IPV6) && defined(SOLARIS_HAVE_IPV6_MIB_SUPPORT)
 static int _load_udp_endpoint_table_v6(netsnmp_container *, int);
 #endif
 
+#ifndef NETSNMP_FEATURE_REMOVE_UDP_ENDPOINT_WRITABLE
 int 
 netsnmp_arch_udp_endpoint_entry_init(netsnmp_udp_endpoint_entry *ep)
 {
@@ -48,6 +54,7 @@
      */
     return (-1);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UDP_ENDPOINT_WRITABLE */
 
 int 
 netsnmp_arch_udp_endpoint_container_load(netsnmp_container * container, 
diff --git a/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.c b/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.c
index 803f504..145f4ce 100644
--- a/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.c
+++ b/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.c
@@ -26,8 +26,8 @@
 
 #include "udpEndpointTable_interface.h"
 
-oid             udpEndpointTable_oid[] = { UDPENDPOINTTABLE_OID };
-int             udpEndpointTable_oid_size =
+const oid       udpEndpointTable_oid[] = { UDPENDPOINTTABLE_OID };
+const int       udpEndpointTable_oid_size =
 OID_LENGTH(udpEndpointTable_oid);
 
 udpEndpointTable_registration udpEndpointTable_user_context;
@@ -226,7 +226,8 @@
                                      size_t
                                      udpEndpointRemoteAddress_val_ptr_len,
                                      u_long udpEndpointRemotePort_val,
-                                     u_long udpEndpointInstance_val)
+                                     u_long udpEndpointInstance_val,
+                                     u_long udpEndpointProcess_val)
 {
     DEBUGMSGTL(("verbose:udpEndpointTable:udpEndpointTable_indexes_set_tbl_idx", "called\n"));
 
@@ -295,6 +296,10 @@
      * udpEndpointInstance(7)/UNSIGNED32/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/h 
      */
     tbl_idx->udpEndpointInstance = udpEndpointInstance_val;
+    /*
+     * udpEndpointProcess(8)/UNSIGNED32/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/h 
+     */
+    tbl_idx->udpEndpointProcess = udpEndpointProcess_val;
 
 
     return MFD_SUCCESS;
@@ -323,7 +328,8 @@
                              char *udpEndpointRemoteAddress_val_ptr,
                              size_t udpEndpointRemoteAddress_val_ptr_len,
                              u_long udpEndpointRemotePort_val,
-                             u_long udpEndpointInstance_val)
+                             u_long udpEndpointInstance_val,
+                             u_long udpEndpointProcess_val)
 {
     DEBUGMSGTL(("verbose:udpEndpointTable:udpEndpointTable_indexes_set",
                 "called\n"));
@@ -338,7 +344,8 @@
                                              udpEndpointRemoteAddress_val_ptr,
                                              udpEndpointRemoteAddress_val_ptr_len,
                                              udpEndpointRemotePort_val,
-                                             udpEndpointInstance_val))
+                                             udpEndpointInstance_val,
+                                             udpEndpointProcess_val))
         return MFD_ERROR;
 
     /*
@@ -405,9 +412,9 @@
 
     /*
      * TODO:231:o: |-> Extract the current value of the udpEndpointProcess data.
-     * copy (* udpEndpointProcess_val_ptr ) from rowreq_ctx->data
+     * copy (* udpEndpointProcess_val_ptr ) from rowreq_ctx->tbl_idx.udpEndpointProcess
      */
-    (*udpEndpointProcess_val_ptr) = rowreq_ctx->data.udpEndpointProcess;
+    (*udpEndpointProcess_val_ptr) = rowreq_ctx->tbl_idx.udpEndpointProcess;
 
     return MFD_SUCCESS;
 }                               /* udpEndpointProcess_get */
diff --git a/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.h b/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.h
index 36752bf..0deda03 100644
--- a/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.h
+++ b/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable.h
@@ -132,6 +132,11 @@
          */
         u_long          udpEndpointInstance;
 
+        /*
+         * udpEndpointProcess(8)/UNSIGNED32/ASN_UNSIGNED/u_long(u_long)//l/a/w/e/R/d/h
+         */
+        u_long          udpEndpointProcess;
+
 
     } udpEndpointTable_mib_index;
 
@@ -200,8 +205,8 @@
         * udpEndpointTable_row_find_by_mib_index(udpEndpointTable_mib_index
                                                  * mib_idx);
 
-    extern oid      udpEndpointTable_oid[];
-    extern int      udpEndpointTable_oid_size;
+    extern const oid      udpEndpointTable_oid[];
+    extern const int      udpEndpointTable_oid_size;
 
 
 #include "udpEndpointTable_interface.h"
@@ -257,7 +262,9 @@
                                              u_long
                                              udpEndpointRemotePort_val,
                                              u_long
-                                             udpEndpointInstance_val);
+                                             udpEndpointInstance_val,
+                                             u_long
+                                             udpEndpointProcess_val);
     int
         udpEndpointTable_indexes_set(udpEndpointTable_rowreq_ctx *
                                      rowreq_ctx,
@@ -273,7 +280,8 @@
                                      size_t
                                      udpEndpointRemoteAddress_val_ptr_len,
                                      u_long udpEndpointRemotePort_val,
-                                     u_long udpEndpointInstance_val);
+                                     u_long udpEndpointInstance_val,
+                                     u_long udpEndpointProcess_val);
 
 
 
diff --git a/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c b/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_data_access.c
index d223b96..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.
@@ -265,7 +266,8 @@
                                          (char *) ep->rmt_addr,
                                          ep->rmt_addr_len,
                                          ep->rmt_port,
-                                         ep->instance)) {
+                                         ep->instance,
+                                         ep->pid)) {
             snmp_log(LOG_ERR,
                      "error setting index while loading "
                      "udpEndpointTable data.\n");
@@ -293,7 +295,7 @@
 
 
     DEBUGMSGT(("verbose:udpEndpointTable:udpEndpointTable_container_load",
-               "inserted %d records\n", CONTAINER_SIZE(container)));
+               "inserted %d records\n", (int)CONTAINER_SIZE(container)));
 
     return MFD_SUCCESS;
 }                               /* udpEndpointTable_container_load */
diff --git a/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c b/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c
index 28c2df3..60d37e9 100644
--- a/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c
+++ b/agent/mibgroup/udp-mib/udpEndpointTable/udpEndpointTable_interface.c
@@ -30,6 +30,7 @@
  * standard Net-SNMP includes 
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
@@ -46,6 +47,18 @@
 
 #include <ctype.h>
 
+netsnmp_feature_child_of(udpEndpointTable_external_access, libnetsnmpmibs)
+
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(check_all_requests_error)
+
+
+netsnmp_feature_child_of(udpEndpointTable_container_size, udpEndpointTable_external_access)
+netsnmp_feature_child_of(udpEndpointTable_registration_set, udpEndpointTable_external_access)
+netsnmp_feature_child_of(udpEndpointTable_registration_get, udpEndpointTable_external_access)
+netsnmp_feature_child_of(udpEndpointTable_container_get, udpEndpointTable_external_access)
+
 /**********************************************************************
  **********************************************************************
  ***
@@ -79,19 +92,23 @@
                 _udpEndpointTable_container_shutdown(udpEndpointTable_interface_ctx *
                                                      if_ctx);
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_CONTAINER_GET
 netsnmp_container *
 udpEndpointTable_container_get(void)
 {
     return udpEndpointTable_if_ctx.container;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_CONTAINER_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_REGISTRATION_GET
 udpEndpointTable_registration *
 udpEndpointTable_registration_get(void)
 {
     return udpEndpointTable_if_ctx.user_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_REGISTRATION_GET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_REGISTRATION_SET
 udpEndpointTable_registration *
 udpEndpointTable_registration_set(udpEndpointTable_registration * newreg)
 {
@@ -99,12 +116,15 @@
     udpEndpointTable_if_ctx.user_ctx = newreg;
     return old;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_REGISTRATION_SET */
 
+#ifndef NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_CONTAINER_SIZE
 int
 udpEndpointTable_container_size(void)
 {
     return CONTAINER_SIZE(udpEndpointTable_if_ctx.container);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_CONTAINER_SIZE */
 
 /*
  * mfd multiplexer modes
@@ -158,7 +178,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;
@@ -228,7 +248,8 @@
     if (access_multiplexer->post_request)
         mfd_modes |= BABY_STEP_POST_REQUEST;
 
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
+    /* XXX - are these actually necessary? */
     if (access_multiplexer->set_values)
         mfd_modes |= BABY_STEP_SET_VALUES;
     if (access_multiplexer->irreversible_commit)
@@ -251,7 +272,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if (access_multiplexer->undo_commit)
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
 
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -701,7 +722,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 +769,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 +840,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 +1045,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;
@@ -1046,6 +1068,7 @@
 }                               /* _udpEndpointTable_container_shutdown */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_EXTERNAL_ACCESS
 udpEndpointTable_rowreq_ctx *
 udpEndpointTable_row_find_by_mib_index(udpEndpointTable_mib_index *
                                        mib_idx)
@@ -1068,8 +1091,9 @@
     if (MFD_SUCCESS != rc)
         return NULL;
 
-    rowreq_ctx =
+    rowreq_ctx = (udpEndpointTable_rowreq_ctx*)
         CONTAINER_FIND(udpEndpointTable_if_ctx.container, &oid_idx);
 
     return rowreq_ctx;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UDPENDPOINTTABLE_EXTERNAL_ACCESS */
diff --git a/agent/mibgroup/util_funcs.c b/agent/mibgroup/util_funcs.c
index a017658..54068c6 100644
--- a/agent/mibgroup/util_funcs.c
+++ b/agent/mibgroup/util_funcs.c
@@ -9,6 +9,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #if HAVE_IO_H
@@ -43,11 +44,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 +67,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
@@ -86,23 +80,9 @@
 #ifdef HAVE_SYS_STAT_H
 #include <sys/stat.h>
 #endif
-#if HAVE_DIRENT_H
-#include <dirent.h>
-#else
-# define dirent direct
-# 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
-
 #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"
@@ -117,6 +97,24 @@
 #define setPerrorstatus(x) snmp_log_perror(x)
 #endif
 
+netsnmp_feature_child_of(util_funcs, libnetsnmpmibs)
+
+netsnmp_feature_child_of(shell_command, util_funcs)
+netsnmp_feature_child_of(get_exten_instance, util_funcs)
+netsnmp_feature_child_of(clear_cache, util_funcs)
+netsnmp_feature_child_of(find_field, util_funcs)
+netsnmp_feature_child_of(parse_miboid, util_funcs)
+netsnmp_feature_child_of(string_append_int, util_funcs)
+netsnmp_feature_child_of(internal_mib_table, util_funcs)
+
+#if defined(HAVE_LINUX_RTNETLINK_H)
+netsnmp_feature_child_of(prefix_info_all, util_funcs)
+netsnmp_feature_child_of(prefix_info, prefix_info_all)
+netsnmp_feature_child_of(update_prefix_info, prefix_info_all)
+netsnmp_feature_child_of(delete_prefix_info, prefix_info_all)
+netsnmp_feature_child_of(find_prefix_info, prefix_info_all)
+netsnmp_feature_child_of(create_prefix_info, prefix_info_all)
+#endif /* HAVE_LINUX_RTNETLINK_H */
 
 #ifdef NETSNMP_EXCACHETIME
 static long     cachetime;
@@ -124,13 +122,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)
@@ -138,6 +129,7 @@
     return netsnmp_mktemp();
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SHELL_COMMAND
 int
 shell_command(struct extensible *ex)
 {
@@ -171,6 +163,7 @@
 #endif
     return (ex->result);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SHELL_COMMAND */
 
 #define MAXOUTPUT 300
 
@@ -197,6 +190,7 @@
     return (ex->result);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_GET_EXTEN_INSTANCE
 struct extensible *
 get_exten_instance(struct extensible *exten, size_t inst)
 {
@@ -208,6 +202,7 @@
         exten = exten->next;
     return (exten);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_GET_EXTEN_INSTANCE */
 
 void
 wait_on_exec(struct extensible *ex)
@@ -216,7 +211,7 @@
   int rc;
   if (ex->tid != 0 && ex->pid != 0) {
     HANDLE hThread = ex->tid;
-    HANDLE hProcess = (HANDLE) ex->pid;
+    HANDLE hProcess = ex->pid;
     rc = WaitForSingleObject(hProcess, NETSNMP_TIMEOUT_WAITFORSINGLEOBJECT);
     DEBUGMSGT(("exec:wait_on_exec","WaitForSingleObject rc=(%d)\n",rc ));
     rc = CloseHandle( hThread );
@@ -241,6 +236,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];
@@ -270,7 +269,7 @@
             /*
              * XXX  Use SNMP_FILEMODE_CLOSED instead of 644? 
              */
-        if ((cfd = open(cachefile, O_WRONLY | O_TRUNC | O_CREAT, 0644)) < 0) {
+        if ((cfd = open(cachefile, O_WRONLY | O_TRUNC | O_CREAT, 0600)) < 0) {
                 snmp_log(LOG_ERR,"can not create cache file\n");
                 setPerrorstatus(cachefile);
 #ifdef NETSNMP_EXCACHETIME
@@ -369,7 +368,7 @@
     }
     
     /* Set global child process handle */
-    ex->pid = (int)pi.hProcess;
+    ex->pid = pi.hProcess;
     ex->tid = pi.hThread;
 
     /* Close pipe handles to make sure that no handles to the write end of the
@@ -390,11 +389,12 @@
     }
     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)
+get_exec_pipes(char *cmd, int *fdIn, int *fdOut, netsnmp_pid_t *pid)
 {
 /* 	Alexander Prömel, alexander@proemel.de 08/24/2006
 	The following code, is tested on picotux rev. 1.01.
@@ -627,7 +627,7 @@
     DEBUGMSGTL(("util_funcs","child dwProcessId (task manager): %d\n",(int)pi.dwProcessId));
 
     /* Set global child process handle */
-    *pid = (int)pi.hProcess;
+    *pid = pi.hProcess;
 
     /* Cleanup */
     if (!CloseHandle(pi.hThread))
@@ -656,6 +656,7 @@
     return 0;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CLEAR_CACHE
 int
 clear_cache(int action,
             u_char * var_val,
@@ -678,70 +679,7 @@
     }
     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;
-}
+#endif /* NETSNMP_FEATURE_REMOVE_CLEAR_CACHE */
 
 void
 print_mib_oid(oid name[], size_t len)
@@ -763,169 +701,7 @@
     int             i;
 
     for (i = 0; i < (int) len; i++)
-        buf += sprintf(buf, ".%u", (unsigned) name[i]);
-}
-
-/*******************************************************************-o-******
- * header_simple_table
- *
- * Parameters:
- *	  *vp		 Variable data.
- *	  *name		 Fully instantiated OID name.
- *	  *length	 Length of name.
- *	   exact	 TRUE if an exact match is desired.
- *	  *var_len	 Hook for size of returned data type.
- *	(**write_method) Hook for write method (UNUSED).
- *	   max
- *      
- * Returns:
- *	0	If name matches vp->name (accounting for 'exact') and is
- *			not greater in length than 'max'.
- *	1	Otherwise.
- *
- *
- * Compare 'name' to vp->name for the best match or an exact match (if
- *	requested).  Also check that 'name' is not longer than 'max' if
- *	max is greater-than/equal 0.
- * Store a successful match in 'name', and increment the OID instance if
- *	the match was not exact.  
- *
- * 'name' and 'length' are undefined upon failure.
- *
- */
-int
-header_simple_table(struct variable *vp, oid * name, size_t * length,
-                    int exact, size_t * var_len,
-                    WriteMethod ** write_method, int max)
-{
-    int             i, rtest;   /* Set to:      -1      If name < vp->name,
-                                 *              1       If name > vp->name,
-                                 *              0       Otherwise.
-                                 */
-    oid             newname[MAX_OID_LEN];
-
-    for (i = 0, rtest = 0;
-         i < (int) vp->namelen && i < (int) (*length) && !rtest; i++) {
-        if (name[i] != vp->name[i]) {
-            if (name[i] < vp->name[i])
-                rtest = -1;
-            else
-                rtest = 1;
-        }
-    }
-    if (rtest > 0 ||
-        (exact == 1
-         && (rtest || (int) *length != (int) (vp->namelen + 1)))) {
-        if (var_len)
-            *var_len = 0;
-        return MATCH_FAILED;
-    }
-
-    memset(newname, 0, sizeof(newname));
-
-    if (((int) *length) <= (int) vp->namelen || rtest == -1) {
-        memmove(newname, vp->name, (int) vp->namelen * sizeof(oid));
-        newname[vp->namelen] = 1;
-        *length = vp->namelen + 1;
-    } 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) {
-            newname[*length - 1] = name[*length - 1] + 1;
-        } else {
-            /*
-             * Careful not to overflow...  
-             */
-            newname[*length - 1] = name[*length - 1];
-        }
-    } else {
-        *length = vp->namelen + 1;
-        memmove(newname, name, (*length) * sizeof(oid));
-        if (!exact) {
-            if (name[*length - 1] < ULONG_MAX) {
-                newname[*length - 1] = name[*length - 1] + 1;
-            } else {
-                /*
-                 * Careful not to overflow...  
-                 */
-                newname[*length - 1] = name[*length - 1];
-            }
-        } else {
-            newname[*length - 1] = name[*length - 1];
-        }
-    }
-    if ((max >= 0 && ((int)newname[*length - 1] > max)) ||
-               ( 0 == newname[*length - 1] )) {
-        if (var_len)
-            *var_len = 0;
-        return MATCH_FAILED;
-    }
-
-    memmove(name, newname, (*length) * sizeof(oid));
-    if (write_method)
-        *write_method = 0;
-    if (var_len)
-        *var_len = sizeof(long);        /* default */
-    return (MATCH_SUCCEEDED);
-}
-
-/*
- * header_generic(...
- * 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
- * 
- */
-
-/*******************************************************************-o-******
- * generic_header
- *
- * Parameters:
- *	  *vp	   (I)     Pointer to variable entry that points here.
- *	  *name	   (I/O)   Input name requested, output name found.
- *	  *length  (I/O)   Length of input and output oid's.
- *	   exact   (I)     TRUE if an exact match was requested.
- *	  *var_len (O)     Length of variable or 0 if function returned.
- *	(**write_method)   Hook to name a write method (UNUSED).
- *      
- * Returns:
- *	MATCH_SUCCEEDED	If vp->name matches name (accounting for exact bit).
- *	MATCH_FAILED	Otherwise,
- *
- *
- * Check whether variable (vp) matches name.
- */
-int
-header_generic(struct variable *vp,
-               oid * name,
-               size_t * length,
-               int exact, size_t * var_len, WriteMethod ** write_method)
-{
-    oid             newname[MAX_OID_LEN];
-    int             result;
-
-    DEBUGMSGTL(("util_funcs", "header_generic: "));
-    DEBUGMSGOID(("util_funcs", name, *length));
-    DEBUGMSG(("util_funcs", " exact=%d\n", exact));
-
-    memcpy((char *) newname, (char *) vp->name,
-           (int) vp->namelen * sizeof(oid));
-    newname[vp->namelen] = 0;
-    result = snmp_oid_compare(name, *length, newname, vp->namelen + 1);
-    DEBUGMSGTL(("util_funcs", "  result: %d\n", result));
-    if ((exact && (result != 0)) || (!exact && (result >= 0)))
-        return (MATCH_FAILED);
-    memcpy((char *) name, (char *) newname,
-           ((int) vp->namelen + 1) * sizeof(oid));
-    *length = vp->namelen + 1;
-
-    *write_method = 0;
-    *var_len = sizeof(long);    /* default to 'long' results */
-    return (MATCH_SUCCEEDED);
+        buf += sprintf(buf, ".%" NETSNMP_PRIo "u", name[i]);
 }
 
 /*
@@ -944,6 +720,7 @@
                                  write_method, max));
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_FIND_FIELD
 char           *
 find_field(char *ptr, int field)
 {
@@ -959,15 +736,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)
@@ -984,7 +761,9 @@
     }
     return (NULL);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_FIND_FIELD */
 
+#ifndef NETSNMP_FEATURE_REMOVE_PARSE_MIBOID
 int
 parse_miboid(const char *buf, oid * oidout)
 {
@@ -994,12 +773,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++;
     }
@@ -1008,7 +787,9 @@
      */
     return i;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_PARSE_MIBOID */
 
+#ifndef NETSNMP_FEATURE_REMOVE_STRING_APPEND_INT
 void
 string_append_int(char *s, int val)
 {
@@ -1023,13 +804,16 @@
     strcpy(s, textVal);
     return;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_STRING_APPEND_INT */
+
+#ifndef NETSNMP_FEATURE_REMOVE_INTERNAL_MIB_TABLE
 
 struct internal_mib_table {
     int             max_size;   /* Size of the current data table */
     int             next_index; /* Index of the next free entry */
     int             current_index;      /* Index of the 'current' entry */
     int             cache_timeout;
-    marker_t        cache_marker;
+    marker_t        cache_markerM;
     RELOAD         *reload;     /* Routine to read in the data */
     COMPARE        *compare;    /* Routine to compare two entries */
     int             data_size;  /* Size of an individual entry */
@@ -1050,7 +834,7 @@
     t->next_index = 1;          /* Don't use index 0 */
     t->current_index = 1;
     t->cache_timeout = timeout;
-    t->cache_marker = NULL;
+    t->cache_markerM = NULL;
     t->reload = reload;
     t->compare = compare;
     t->data_size = size;
@@ -1072,8 +856,9 @@
      * If the saved data is fairly recent,
      *    we don't need to reload it
      */
-    if (table->cache_marker &&
-        !(atime_ready(table->cache_marker, table->cache_timeout * 1000)))
+    if (table->cache_markerM &&
+        !(netsnmp_ready_monotonic(table->cache_markerM,
+                                  table->cache_timeout * 1000)))
         return 1;
 
 
@@ -1083,15 +868,12 @@
      * N.B:  Update the cache marker *before* calling
      *   this routine, to avoid problems with recursion
      */
-    if (!table->cache_marker)
-        table->cache_marker = atime_newMarker();
-    else
-        atime_setMarker(table->cache_marker);
+    netsnmp_set_monotonic_marker(&table->cache_markerM);
 
     table->next_index = 1;
     if (table->reload((mib_table_t) table) < 0) {
-        free(table->cache_marker);
-        table->cache_marker = NULL;
+        free(table->cache_markerM);
+        table->cache_markerM = NULL;
         return 0;
     }
     table->current_index = 1;
@@ -1201,89 +983,147 @@
     *max_idx = table->next_index - 1;
     return table->data;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_INTERNAL_MIB_TABLE */
 
-#ifdef linux
-# define PROC_PATH          "/proc"
-# define FILE_DISP          "fd/"
-# define SOCKET_TYPE_1      "socket:["
-# define SOCKET_TYPE_2      "[0000]:"
+#if defined(HAVE_LINUX_RTNETLINK_H)
 
-unsigned long long
-extract_inode(char *format)
+#ifndef NETSNMP_FEATURE_REMOVE_CREATE_PREFIX_INFO
+prefix_cbx *net_snmp_create_prefix_info(unsigned long OnLinkFlag,
+                                        unsigned long AutonomousFlag,
+                                        char *in6ptr)
 {
-    unsigned long long ret = 0;
+   prefix_cbx *node = SNMP_MALLOC_TYPEDEF(prefix_cbx);
+   if(!in6ptr) {
+      free(node);
+      return NULL;
+   }
+   if(!node) {
+      free(node);
+      return NULL;
+   }
+   node->next_info = NULL;
+   node->ipAddressPrefixOnLinkFlag = OnLinkFlag;
+   node->ipAddressPrefixAutonomousFlag = AutonomousFlag;
+   memcpy(node->in6p, in6ptr, sizeof(node->in6p));
 
-    if (!strncmp(format, SOCKET_TYPE_1, 8)) {
-        ret = strtoull(format + 8, NULL, 0);
-    } else if (!strncmp(format, SOCKET_TYPE_2, 7)) {
-        ret = strtoull(format + 7, NULL, 0);
-    }
-
-    return ret;
+   return node;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CREATE_PREFIX_INFO */
 
-unsigned int
-get_pid_from_inode(unsigned long long inode)
+#ifndef NETSNMP_FEATURE_REMOVE_FIND_PREFIX_INFO
+int net_snmp_find_prefix_info(prefix_cbx **head,
+                              char *address,
+                              prefix_cbx *node_to_find)
 {
-    DIR            *procdirs = NULL, *piddirs = NULL;
-    char           *name = NULL;
-    char            path_name[PATH_MAX + 1];
-    char            socket_lnk[NAME_MAX + 1];
-    int             filelen = 0, readlen = 0, iflag = 0;
-    struct dirent  *procinfo, *pidinfo;
-    unsigned int    pid;
-    unsigned long long temp_inode;
+    int iret;
+    memset(node_to_find, 0, sizeof(prefix_cbx));
+    if(!*head)
+       return -1;
+    memcpy(node_to_find->in6p, address, sizeof(node_to_find->in6p));
 
-    if (!(procdirs = opendir(PROC_PATH))) {
-        snmp_log(LOG_ERR, "snmpd: cannot open /proc\n");       
-        return 0;
-    }
+    iret = net_snmp_search_update_prefix_info(head, node_to_find, 1);
+    if(iret < 0) {
+       DEBUGMSGTL(("util_funcs:prefix", "Unable to search the list\n"));
+       return -1;
+    } else if (!iret) {
+       DEBUGMSGTL(("util_funcs:prefix", "Could not find prefix info\n"));
+       return -1;
+    } else
+       return 0;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_FIND_PREFIX_INFO */
 
-    while ((procinfo = readdir(procdirs)) != NULL) {
-        name = procinfo->d_name;
-        for (; *name; name++) {
-            if (!isdigit(*name))
-                break;
-        }
-        if(*name)
-            continue;
+#ifndef NETSNMP_FEATURE_REMOVE_UPDATE_PREFIX_INFO
+int net_snmp_update_prefix_info(prefix_cbx **head,
+                                prefix_cbx *node_to_update)
+{
+    int iret;
+    iret = net_snmp_search_update_prefix_info(head, node_to_update, 0);
+    if(iret < 0) {
+       DEBUGMSGTL(("util_funcs:prefix", "Unable to update prefix info\n"));
+       return -1;
+    } else if (!iret) {
+       DEBUGMSGTL(("util_funcs:prefix", "Unable to find the node to update\n"));
+       return -1;
+    } else
+       return 0;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_UPDATE_PREFIX_INFO */
 
-        memset(path_name, '\0', PATH_MAX + 1);
-        filelen = snprintf(path_name, PATH_MAX,
-                           PROC_PATH "/%s/" FILE_DISP, procinfo->d_name);
-        if (filelen <= 0 || PATH_MAX < filelen)
-            continue;
+int net_snmp_search_update_prefix_info(prefix_cbx **head,
+                                       prefix_cbx *node_to_use,
+                                       int functionality)
+{
 
-        pid = strtoul(procinfo->d_name, NULL, 0);
+   /* We define functionality based on need                                                         *
+    * 0 - Need to do a search and update. We have to provide the node_to_use structure filled fully *
+    * 1 - Need to do only search. Provide the node_to_use with in6p value filled                    */
 
-        if (!(piddirs = opendir(path_name)))
-            continue;
+    prefix_cbx *temp_node;
+    netsnmp_assert(NULL != head);
+    netsnmp_assert(NULL != node_to_use);
 
-        while ((pidinfo = readdir(piddirs)) != NULL) {
-            if (filelen + strlen(pidinfo->d_name) > PATH_MAX)
-                continue;
+    if(functionality > 1)
+       return -1;
+    if(!node_to_use)
+       return -1;
 
-            strcpy(path_name + filelen, pidinfo->d_name);
 
-            memset(socket_lnk, '\0', NAME_MAX + 1);
-            readlen = readlink(path_name, socket_lnk, NAME_MAX);
-            if (readlen < 0)
-                continue;
-            socket_lnk[readlen] = '\0';
+    if (!functionality) {
+       if (!*head) {
+           *head = node_to_use;
+           return 1;
+       }
 
-            temp_inode = extract_inode(socket_lnk);
-            if (inode == temp_inode) {
-                iflag = 1;
-                break;
+       for (temp_node = *head; temp_node->next_info != NULL ; temp_node = temp_node->next_info) {
+            if (0 == strcmp(temp_node->in6p, node_to_use->in6p)) {
+                temp_node->ipAddressPrefixOnLinkFlag = node_to_use->ipAddressPrefixOnLinkFlag;
+                temp_node->ipAddressPrefixAutonomousFlag = node_to_use->ipAddressPrefixAutonomousFlag;
+                return 2;
             }
-        }
-        closedir(piddirs);
-        if (iflag == 1)
-            break;
+       }
+       temp_node->next_info = node_to_use;
+       return 1;
+    } else {
+         for (temp_node = *head; temp_node != NULL ; temp_node = temp_node->next_info) {
+              if (0 == strcmp(temp_node->in6p, node_to_use->in6p)) {
+                /*need yo put sem here as i read here */
+                node_to_use->ipAddressPrefixOnLinkFlag = temp_node->ipAddressPrefixOnLinkFlag;
+                node_to_use->ipAddressPrefixAutonomousFlag = temp_node->ipAddressPrefixAutonomousFlag;
+                return 1;
+              }
+         }
+         return 0;
     }
-    if (procdirs)
-        closedir(procdirs);
-    return pid;
 }
 
-#endif  /* #ifdef linux */
+#ifndef NETSNMP_FEATURE_REMOVE_DELETE_PREFIX_INFO
+int net_snmp_delete_prefix_info(prefix_cbx **head,
+                                char *address)
+{
+
+    prefix_cbx *temp_node,*prev_node;
+    if(!address)
+       return -1;
+    if(!head)
+       return -1;
+
+    for (temp_node = *head, prev_node = NULL; temp_node;
+         prev_node = temp_node, temp_node = temp_node->next_info) {
+
+         if (temp_node->in6p && strcmp(temp_node->in6p, address) == 0) {
+            if (prev_node)
+                prev_node->next_info = temp_node->next_info;
+            else
+                *head = temp_node->next_info;
+            free(temp_node);
+            return 1;
+        }
+
+    }
+    return 0;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_DELETE_PREFIX_INFO */
+
+#endif /* HAVE_LINUX_RTNETLINK_H */
+         
diff --git a/agent/mibgroup/util_funcs.h b/agent/mibgroup/util_funcs.h
index fba1a98..7f59780 100644
--- a/agent/mibgroup/util_funcs.h
+++ b/agent/mibgroup/util_funcs.h
@@ -4,28 +4,46 @@
 #ifndef _MIBGROUP_UTIL_FUNCS_H
 #define _MIBGROUP_UTIL_FUNCS_H
 
+config_require(util_funcs/header_generic)
+config_require(util_funcs/header_simple_table)
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#include "util_funcs/header_generic.h"
+#include "util_funcs/header_simple_table.h"
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 #include "struct.h"
 
-void            Exit(int);
+typedef struct prefix_info
+{
+   struct prefix_info *next_info;
+   unsigned long ipAddressPrefixOnLinkFlag;
+   unsigned long ipAddressPrefixAutonomousFlag;
+   char in6p[40];
+}prefix_cbx;
+#ifndef WIN32
+typedef struct 
+{
+ prefix_cbx **list_head;
+}netsnmp_prefix_listen_info;
+#endif
 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);
+#if defined(WIN32) && !defined(cygwin)
+int             get_exec_pipes(char *cmd, int *fdIn, int *fdOut, HANDLE *pid);
+#else
+int             get_exec_pipes(char *cmd, int *fdIn, int *fdOut, pid_t *pid);
+#endif
 WriteMethod     clear_cache;
-RETSIGTYPE      restart_doit(int);
-WriteMethod     restart_hook;
 void            print_mib_oid(oid *, size_t);
 void            sprint_mib_oid(char *, const oid *, size_t);
-int             header_simple_table(struct variable *, oid *, size_t *,
-                                    int, size_t *,
-                                    WriteMethod ** write_method, int);
-int             header_generic(struct variable *, oid *, size_t *, int,
-                               size_t *, WriteMethod **);
 int             checkmib(struct variable *, oid *, size_t *, int, size_t *,
                          WriteMethod ** write_method, int);
 char           *find_field(char *, int);
@@ -34,15 +52,35 @@
 void            wait_on_exec(struct extensible *);
 const char     *make_tempfile(void);
 
-#ifdef linux
-unsigned int    get_pid_from_inode(unsigned long long);
+prefix_cbx *net_snmp_create_prefix_info(unsigned long OnLinkFlag,
+                                        unsigned long AutonomousFlag,
+                                        char *in6ptr);
+#ifndef WIN32
+int net_snmp_find_prefix_info(prefix_cbx **head,
+                              char *address,
+                              prefix_cbx *node_to_find);
+int net_snmp_update_prefix_info(prefix_cbx **head,
+                                prefix_cbx *node_to_update);
+int net_snmp_search_update_prefix_info(prefix_cbx **head,
+                                       prefix_cbx *node_to_use,
+                                       int functionality);
+int net_snmp_delete_prefix_info(prefix_cbx **head,
+                                char *address);
 #endif
+#define NIP6(addr) \
+        ntohs((addr).s6_addr16[0]), \
+        ntohs((addr).s6_addr16[1]), \
+        ntohs((addr).s6_addr16[2]), \
+        ntohs((addr).s6_addr16[3]), \
+        ntohs((addr).s6_addr16[4]), \
+        ntohs((addr).s6_addr16[5]), \
+        ntohs((addr).s6_addr16[6]), \
+        ntohs((addr).s6_addr16[7])
 
 #define     satosin(x)      ((struct sockaddr_in *) &(x))
 #define     SOCKADDR(x)     (satosin(x)->sin_addr.s_addr)
-#ifndef MIB_STATS_CACHE_TIMEOUT
-#define MIB_STATS_CACHE_TIMEOUT 5
-#endif
+
+#include "util_funcs/MIB_STATS_CACHE_TIMEOUT.h"
 
 typedef void   *mib_table_t;
 typedef int     (RELOAD) (mib_table_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/MIB_STATS_CACHE_TIMEOUT.h b/agent/mibgroup/util_funcs/MIB_STATS_CACHE_TIMEOUT.h
new file mode 100644
index 0000000..848bacd
--- /dev/null
+++ b/agent/mibgroup/util_funcs/MIB_STATS_CACHE_TIMEOUT.h
@@ -0,0 +1,12 @@
+/*
+ * util_funcs/MIB_STATS_CACHE_TIMEOUT.h:  utilitiy functions for extensible
+ * groups.
+ */
+#ifndef _MIBGROUP_UTIL_FUNCS_MIB_STATS_CACHE_TIMEOUT_H
+#define _MIBGROUP_UTIL_FUNCS_MIB_STATS_CACHE_TIMEOUT_H
+
+#ifndef MIB_STATS_CACHE_TIMEOUT
+#define MIB_STATS_CACHE_TIMEOUT 5
+#endif
+
+#endif /* _MIBGROUP_UTIL_FUNCS_MIB_STATS_CACHE_TIMEOUT_H */
diff --git a/agent/mibgroup/util_funcs/get_pid_from_inode.c b/agent/mibgroup/util_funcs/get_pid_from_inode.c
new file mode 100644
index 0000000..8e157ae
--- /dev/null
+++ b/agent/mibgroup/util_funcs/get_pid_from_inode.c
@@ -0,0 +1,186 @@
+#include <net-snmp/net-snmp-config.h>
+
+#include "get_pid_from_inode.h"
+
+#include <net-snmp/output_api.h>
+
+#include <ctype.h>
+#include <stdio.h>
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+# define PROC_PATH          "/proc"
+# define SOCKET_TYPE_1      "socket:["
+# define SOCKET_TYPE_2      "[0000]:"
+
+/* Definition of a simple open addressing hash table.*/
+/* When inode == 0 then the entry is empty.*/
+typedef struct {
+    ino64_t inode;
+    pid_t   pid;
+} inode_pid_ent_t;
+
+#define INODE_PID_TABLE_MAX_COLLISIONS 1000
+#define INODE_PID_TABLE_LENGTH 20000
+#define INODE_PID_TABLE_SIZE (INODE_PID_TABLE_LENGTH * sizeof (inode_pid_ent_t))
+static inode_pid_ent_t  inode_pid_table[INODE_PID_TABLE_LENGTH];
+
+static uint32_t
+_hash(uint64_t key)
+{
+    key = (~key) + (key << 18);
+    key = key ^ (key >> 31);
+    key = key * 21;
+    key = key ^ (key >> 11);
+    key = key + (key << 6);
+    key = key ^ (key >> 22);
+    return key;
+}
+
+static void
+_clear(void)
+{
+    /* Clear the inode/pid hash table.*/
+    memset(inode_pid_table, 0, INODE_PID_TABLE_SIZE);
+}
+
+static void
+_set(ino64_t inode, pid_t pid)
+{
+    uint32_t        hash = _hash(inode);
+    uint32_t        i;
+    inode_pid_ent_t *entry;
+
+    /* We will try for a maximum number of collisions.*/
+    for (i = 0; i < INODE_PID_TABLE_MAX_COLLISIONS; i++) {
+        entry = &inode_pid_table[(hash + i) % INODE_PID_TABLE_LENGTH];
+
+        /* Check if this entry is empty, or the actual inode we were looking for.*/
+        /* The second part should never happen, but it is here for completeness.*/
+        if (entry->inode == 0 || entry->inode == inode) {
+            entry->inode = inode;
+            entry->pid = pid;
+            return;
+        }
+    }
+
+    /* We will silently fail to insert the inode if we get too many collisions.*/
+    /* the _get function will return a zero pid.*/
+}
+
+static pid_t _get(ino64_t inode)
+{
+    uint32_t        hash = _hash(inode);
+    uint32_t        i;
+    inode_pid_ent_t *entry;
+
+    /* We will try for a maximum number of collisions.*/
+    for (i = 0; i < INODE_PID_TABLE_MAX_COLLISIONS; i++) {
+        entry = &inode_pid_table[(hash + i) % INODE_PID_TABLE_LENGTH];
+
+        /* Check if this entry is empty, or the actual inode we were looking for.*/
+        /* If the entry is empty it means the inode is not in the table and we*/
+        /* should return 0, the entry will also have a zero pid.*/
+        if (entry->inode == 0 || entry->inode == inode) {
+            return entry->pid;
+        }
+    }
+
+    /* We could not find the pid.*/
+    return 0;
+}
+
+void
+netsnmp_get_pid_from_inode_init(void)
+{
+    DIR            *procdirs = NULL, *piddirs = NULL;
+    char            path_name[PATH_MAX + 1];
+    char            socket_lnk[NAME_MAX + 1];
+    int             filelen = 0, readlen = 0;
+    struct dirent  *procinfo, *pidinfo;
+    pid_t           pid = 0;
+    ino64_t         temp_inode;
+
+    _clear();
+
+    /* walk over all directories in /proc*/
+    if (!(procdirs = opendir(PROC_PATH))) {
+        NETSNMP_LOGONCE((LOG_ERR, "snmpd: cannot open /proc\n"));
+        return;
+    }
+
+    while ((procinfo = readdir(procdirs)) != NULL) {
+        const char* name = procinfo->d_name;
+
+        /* A pid directory only contains digits, check for those.*/
+        for (; *name; name++) {
+            if (!isdigit(*name))
+                break;
+        }
+        if(*name)
+            continue;
+
+        /* Create the /proc/<pid>/fd/ path name.*/
+        memset(path_name, '\0', PATH_MAX + 1);
+        filelen = snprintf(path_name, PATH_MAX,
+                           PROC_PATH "/%s/fd/", procinfo->d_name);
+        if (filelen <= 0 || PATH_MAX < filelen)
+            continue;
+
+        /* walk over all the files in /proc/<pid>/fd/*/
+        if (!(piddirs = opendir(path_name)))
+        continue;
+
+        while ((pidinfo = readdir(piddirs)) != NULL) {
+            if (filelen + strlen(pidinfo->d_name) > PATH_MAX)
+                continue;
+
+            strcpy(path_name + filelen, pidinfo->d_name);
+
+            /* The file discriptor is a symbolic link to a socket or a file.*/
+            /* Thus read the symbolic link.*/
+            memset(socket_lnk, '\0', NAME_MAX + 1);
+            readlen = readlink(path_name, socket_lnk, NAME_MAX);
+            if (readlen < 0)
+                continue;
+
+            socket_lnk[readlen] = '\0';
+
+            /* Check if to see if the file descriptor is a socket by comparing*/
+            /* the start to a string. Also extract the inode number from this*/
+            /* symbolic link.*/
+            if (!strncmp(socket_lnk, SOCKET_TYPE_1, 8)) {
+                temp_inode = strtoull(socket_lnk + 8, NULL, 0);
+            } else if (!strncmp(socket_lnk, SOCKET_TYPE_2, 7)) {
+                temp_inode = strtoull(socket_lnk + 7, NULL, 0);
+            } else {
+                temp_inode = 0;
+            }
+
+            /* Add the inode/pid combination to our hash table.*/
+            if (temp_inode != 0) {
+                pid = strtoul(procinfo->d_name, NULL, 0);
+                _set(temp_inode, pid);
+            }
+        }
+        closedir(piddirs);
+    }
+    if (procdirs)
+        closedir(procdirs);
+}
+
+pid_t
+netsnmp_get_pid_from_inode(ino64_t inode)
+{
+    return _get(inode);
+}
+
diff --git a/agent/mibgroup/util_funcs/get_pid_from_inode.h b/agent/mibgroup/util_funcs/get_pid_from_inode.h
new file mode 100644
index 0000000..ad887a7
--- /dev/null
+++ b/agent/mibgroup/util_funcs/get_pid_from_inode.h
@@ -0,0 +1,34 @@
+/*
+ * util_funcs/get_pid_from_inode.h:  utilitiy function to retrieve the pid
+ * that controls a given inode on linux.
+ */
+#ifndef NETSNMP_MIBGROUP_UTIL_FUNCS_GET_PID_FROM_INODE_H
+#define NETSNMP_MIBGROUP_UTIL_FUNCS_GET_PID_FROM_INODE_H
+
+#ifndef linux
+config_error(get_pid_from_inode is only suppored on linux)
+#endif
+
+#define _LARGEFILE64_SOURCE 1
+
+#if HAVE_DIRENT_H
+#include <dirent.h>
+#else
+# define dirent direct
+# 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
+
+#include <sys/types.h>
+
+void netsnmp_get_pid_from_inode_init(void);
+pid_t netsnmp_get_pid_from_inode(ino64_t);
+
+#endif /* NETSNMP_MIBGROUP_UTIL_FUNCS_GET_PID_FROM_INODE_H */
diff --git a/agent/mibgroup/util_funcs/header_generic.c b/agent/mibgroup/util_funcs/header_generic.c
new file mode 100644
index 0000000..9154be9
--- /dev/null
+++ b/agent/mibgroup/util_funcs/header_generic.c
@@ -0,0 +1,64 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include "header_generic.h"
+
+/*
+ * header_generic(...
+ * 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
+ *
+ */
+
+/*******************************************************************-o-******
+ * generic_header
+ *
+ * Parameters:
+ *	  *vp	   (I)     Pointer to variable entry that points here.
+ *	  *name	   (I/O)   Input name requested, output name found.
+ *	  *length  (I/O)   Length of input and output oid's.
+ *	   exact   (I)     TRUE if an exact match was requested.
+ *	  *var_len (O)     Length of variable or 0 if function returned.
+ *	(**write_method)   Hook to name a write method (UNUSED).
+ *
+ * Returns:
+ *	MATCH_SUCCEEDED	If vp->name matches name (accounting for exact bit).
+ *	MATCH_FAILED	Otherwise,
+ *
+ *
+ * Check whether variable (vp) matches name.
+ */
+int
+header_generic(struct variable *vp,
+               oid * name,
+               size_t * length,
+               int exact, size_t * var_len, WriteMethod ** write_method)
+{
+    oid             newname[MAX_OID_LEN];
+    int             result;
+
+    DEBUGMSGTL(("util_funcs", "header_generic: "));
+    DEBUGMSGOID(("util_funcs", name, *length));
+    DEBUGMSG(("util_funcs", " exact=%d\n", exact));
+
+    memcpy((char *) newname, (char *) vp->name,
+           (int) vp->namelen * sizeof(oid));
+    newname[vp->namelen] = 0;
+    result = snmp_oid_compare(name, *length, newname, vp->namelen + 1);
+    DEBUGMSGTL(("util_funcs", "  result: %d\n", result));
+    if ((exact && (result != 0)) || (!exact && (result >= 0)))
+        return (MATCH_FAILED);
+    memcpy((char *) name, (char *) newname,
+           ((int) vp->namelen + 1) * sizeof(oid));
+    *length = vp->namelen + 1;
+
+    *write_method = (WriteMethod*)0;
+    *var_len = sizeof(long);    /* default to 'long' results */
+    return (MATCH_SUCCEEDED);
+}
diff --git a/agent/mibgroup/util_funcs/header_generic.h b/agent/mibgroup/util_funcs/header_generic.h
new file mode 100644
index 0000000..9861040
--- /dev/null
+++ b/agent/mibgroup/util_funcs/header_generic.h
@@ -0,0 +1,18 @@
+/*
+ *  util_funcs/header_generic.h:  utilitiy functions for extensible groups.
+ */
+#ifndef _MIBGROUP_UTIL_FUNCS_HEADER_GENERIC_H
+#define _MIBGROUP_UTIL_FUNCS_HEADER_GENERIC_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int header_generic(struct variable *, oid *, size_t *, int, size_t *,
+                   WriteMethod **);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MIBGROUP_UTIL_FUNCS_HEADER_GENERIC_H */
diff --git a/agent/mibgroup/util_funcs/header_simple_table.c b/agent/mibgroup/util_funcs/header_simple_table.c
new file mode 100644
index 0000000..81fe160
--- /dev/null
+++ b/agent/mibgroup/util_funcs/header_simple_table.c
@@ -0,0 +1,110 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include "header_simple_table.h"
+
+#include <limits.h>
+
+/*******************************************************************-o-******
+ * header_simple_table
+ *
+ * Parameters:
+ *	  *vp		 Variable data.
+ *	  *name		 Fully instantiated OID name.
+ *	  *length	 Length of name.
+ *	   exact	 TRUE if an exact match is desired.
+ *	  *var_len	 Hook for size of returned data type.
+ *	(**write_method) Hook for write method (UNUSED).
+ *	   max
+ *
+ * Returns:
+ *	0	If name matches vp->name (accounting for 'exact') and is
+ *			not greater in length than 'max'.
+ *	1	Otherwise.
+ *
+ *
+ * Compare 'name' to vp->name for the best match or an exact match (if
+ *	requested).  Also check that 'name' is not longer than 'max' if
+ *	max is greater-than/equal 0.
+ * Store a successful match in 'name', and increment the OID instance if
+ *	the match was not exact.
+ *
+ * 'name' and 'length' are undefined upon failure.
+ *
+ */
+int
+header_simple_table(struct variable *vp, oid * name, size_t * length,
+                    int exact, size_t * var_len,
+                    WriteMethod ** write_method, int max)
+{
+    int             i, rtest;   /* Set to:      -1      If name < vp->name,
+                                 *              1       If name > vp->name,
+                                 *              0       Otherwise.
+                                 */
+    oid             newname[MAX_OID_LEN];
+
+    for (i = 0, rtest = 0;
+         i < (int) vp->namelen && i < (int) (*length) && !rtest; i++) {
+        if (name[i] != vp->name[i]) {
+            if (name[i] < vp->name[i])
+                rtest = -1;
+            else
+                rtest = 1;
+        }
+    }
+    if (rtest > 0 ||
+        (exact == 1
+         && (rtest || (int) *length != (int) (vp->namelen + 1)))) {
+        if (var_len)
+            *var_len = 0;
+        return MATCH_FAILED;
+    }
+
+    memset(newname, 0, sizeof(newname));
+
+    if (((int) *length) <= (int) vp->namelen || rtest == -1) {
+        memmove(newname, vp->name, (int) vp->namelen * sizeof(oid));
+        newname[vp->namelen] = 1;
+        *length = vp->namelen + 1;
+    } 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] < MAX_SUBID) {
+            newname[*length - 1] = name[*length - 1] + 1;
+        } else {
+            /*
+             * Careful not to overflow...
+             */
+            newname[*length - 1] = name[*length - 1];
+        }
+    } else {
+        *length = vp->namelen + 1;
+        memmove(newname, name, (*length) * sizeof(oid));
+        if (!exact) {
+            if (name[*length - 1] < MAX_SUBID) {
+                newname[*length - 1] = name[*length - 1] + 1;
+            } else {
+                /*
+                 * Careful not to overflow...
+                 */
+                newname[*length - 1] = name[*length - 1];
+            }
+        } else {
+            newname[*length - 1] = name[*length - 1];
+        }
+    }
+    if ((max >= 0 && ((int)newname[*length - 1] > max)) ||
+               ( 0 == newname[*length - 1] )) {
+        if (var_len)
+            *var_len = 0;
+        return MATCH_FAILED;
+    }
+
+    memmove(name, newname, (*length) * sizeof(oid));
+    if (write_method)
+        *write_method = (WriteMethod*)0;
+    if (var_len)
+        *var_len = sizeof(long);        /* default */
+    return (MATCH_SUCCEEDED);
+}
diff --git a/agent/mibgroup/util_funcs/header_simple_table.h b/agent/mibgroup/util_funcs/header_simple_table.h
new file mode 100644
index 0000000..2a95d69
--- /dev/null
+++ b/agent/mibgroup/util_funcs/header_simple_table.h
@@ -0,0 +1,19 @@
+/*
+ * util_funcs/header_simple_table.h:  utilitiy functions for extensible
+ * groups.
+ */
+#ifndef _MIBGROUP_UTIL_FUNCS_HEADER_SIMPLE_TABLE_H
+#define _MIBGROUP_UTIL_FUNCS_HEADER_SIMPLE_TABLE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int header_simple_table(struct variable *, oid *, size_t *, int, size_t *,
+                        WriteMethod **, int);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MIBGROUP_UTIL_FUNCS_HEADER_SIMPLE_TABLE_H */
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 21bf682..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;
@@ -160,67 +166,12 @@
     if (cp) {
         argv[i++] = strdup( cp );
     }
-    argv[i] = 0;
+    argv[i] = NULL;
     *argc = i;
 
     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] = 0;
-    *argc       = count;
-        
-    return argv;
-}
-
 
 int
 run_exec_command( char *command, char *input,
@@ -355,7 +306,7 @@
              */
             count = read(opipe[0], &cache_ptr[offset], cache_size);
             DEBUGMSGTL(("verbose:run:exec",
-                        "    read %d bytes\n", count));
+                        "    read %d bytes\n", (int)count));
             if (0 == count) {
                 int rc;
                 /*
@@ -390,7 +341,7 @@
                         break;
                     }
                     DEBUGMSGTL(("verbose:run:exec",
-                                "    %d left in buffer\n", cache_size));
+                                "    %d left in buffer\n", (int)cache_size));
                 }
             }
             else if ((count == -1) && (EAGAIN != errno)) {
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 4f66d7e..860590f 100644
--- a/agent/mibgroup/utilities/iquery.c
+++ b/agent/mibgroup/utilities/iquery.c
@@ -1,30 +1,35 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 #include "utilities/iquery.h"
 
+netsnmp_feature_child_of(iquery_all, libnetsnmpmibs)
+netsnmp_feature_child_of(iquery, iquery_all)
+netsnmp_feature_child_of(iquery_community_session, iquery_all)
+netsnmp_feature_child_of(iquery_pdu_session, iquery_all)
+
+netsnmp_feature_require(query_set_default_session)
+
+#ifndef NETSNMP_FEATURE_REMOVE_IQUERY
+
 void
 netsnmp_parse_iquerySecLevel(const char *token, char *line)
 {
-    char buf[1024];
     int secLevel;
 
     if ((secLevel = parse_secLevel_conf( token, line )) >= 0 ) {
         netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
                            NETSNMP_DS_AGENT_INTERNAL_SECLEVEL, secLevel);
     } else {
-        snprintf(buf, sizeof(buf), "Unknown security level: %s", line);
-        buf[ sizeof(buf)-1 ] = 0;
-        config_perror(buf);
+	netsnmp_config_error("Unknown security level: %s", line);
     }
 }
 
 void
 netsnmp_parse_iqueryVersion(const char *token, char *line)
 {
-    char buf[1024];
-
 #ifndef NETSNMP_DISABLE_SNMPV1
     if (!strcmp( line, "1" ))
         netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
@@ -41,9 +46,7 @@
         netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
                            NETSNMP_DS_AGENT_INTERNAL_VERSION, SNMP_VERSION_3);
     else {
-        snprintf(buf, sizeof(buf), "Unknown version: %s", line);
-        buf[ sizeof(buf)-1 ] = 0;
-        config_perror(buf);
+	netsnmp_config_error("Unknown version: %s", line);
     }
 }
 
@@ -61,9 +64,6 @@
     if (secName)
         netsnmp_query_set_default_session(
              netsnmp_iquery_user_session(secName));
-    else
-        snmp_log(LOG_WARNING,
-                 "iquerySecName has not been configured - internal queries will fail\n");
     return SNMPERR_SUCCESS;
 }
 
@@ -81,9 +81,9 @@
 {
     u_char eID[SNMP_MAXBUF_SMALL];
     size_t elen;
-    netsnmp_session *s = netsnmp_query_get_default_session();
+    netsnmp_session *s = netsnmp_query_get_default_session_unchecked();
 
-    if (s && s->securityEngineIDLen == 0 ) {
+    if ( s && s->securityEngineIDLen == 0 ) {
         elen = snmpv3_get_engineID(eID, sizeof(eID));
         s->securityEngineID = netsnmp_memdup(eID, elen);
         s->securityEngineIDLen = elen;
@@ -130,6 +130,7 @@
      *
      **************************/
 
+#ifndef NETSNMP_FEATURE_REMOVE_IQUERY_PDU_SESSION
 netsnmp_session *netsnmp_iquery_pdu_session(netsnmp_pdu* pdu) {
     if (!pdu)
        return NULL;
@@ -141,13 +142,14 @@
                            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,
                            pdu->securityEngineID,
                            pdu->securityEngineIDLen);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IQUERY_PDU_SESSION */
 
 netsnmp_session *netsnmp_iquery_user_session(char* secName){
     u_char eID[SNMP_MAXBUF_SMALL];
@@ -159,6 +161,7 @@
                            SNMP_SEC_LEVEL_AUTHNOPRIV, eID, elen);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_IQUERY_COMMUNITY_SESSION
 netsnmp_session *netsnmp_iquery_community_session( char* community, int version ) { 
     u_char eID[SNMP_MAXBUF_SMALL];
     size_t elen = snmpv3_get_engineID(eID, sizeof(eID));
@@ -166,6 +169,7 @@
     return netsnmp_iquery_session( community, version, version+1,
                            SNMP_SEC_LEVEL_NOAUTH, eID, elen);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_IQUERY_COMMUNITY_SESSION */
 
 netsnmp_session *netsnmp_iquery_session(char* secName,   int   version,
                                         int   secModel,  int   secLevel,
@@ -202,3 +206,7 @@
     return ss;
 }
 
+#else /* NETSNMP_FEATURE_REMOVE_IQUERY */
+netsnmp_feature_unused(iquery);
+#endif /* NETSNMP_FEATURE_REMOVE_IQUERY */
+
diff --git a/agent/mibgroup/utilities/override.c b/agent/mibgroup/utilities/override.c
index 7c70a02..48ac281 100644
--- a/agent/mibgroup/utilities/override.c
+++ b/agent/mibgroup/utilities/override.c
@@ -15,8 +15,6 @@
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
-#include "util_funcs.h"
-
 typedef struct override_data_s {
     int             type;
     void           *value;
@@ -34,7 +32,7 @@
                  netsnmp_request_info *requests)
 {
 
-    override_data  *data = handler->myvoid;
+    override_data  *data = (override_data*)handler->myvoid;
     void *tmpptr;
 
     if (!data) {
@@ -52,6 +50,7 @@
                                  (u_char *) data->value, data->value_len);
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_RESERVE1:
         if (requests->requestvb->type != data->type)
             netsnmp_set_request_error(reqinfo, requests, SNMP_ERR_WRONGTYPE);
@@ -89,6 +88,7 @@
     case MODE_SET_COMMIT:
         SNMP_FREE(data->set_space);
         break;
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     default:
         snmp_log(LOG_ERR, "unsupported mode in override handler\n");
@@ -183,7 +183,6 @@
         config_perror("memory allocation failure");
         return;
     }
-
     thedata->type = type;
 
     switch (type) {
@@ -206,7 +205,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);
@@ -249,7 +248,7 @@
     the_reg->modes = (readwrite) ? HANDLER_CAN_RWRITE : HANDLER_CAN_RONLY;
     the_reg->handler =
         netsnmp_create_handler("override", override_handler);
-    the_reg->rootoid = netsnmp_memdup(oidbuf, oidbuf_len * sizeof(oid));
+    the_reg->rootoid = snmp_duplicate_objid(oidbuf, oidbuf_len);
     the_reg->rootoid_len = oidbuf_len;
     if (!the_reg->rootoid || !the_reg->handler || !the_reg->handlerName) {
         if (the_reg->handler)
diff --git a/agent/mibgroup/versiontag b/agent/mibgroup/versiontag
index 9aa71a6..c24c259 100755
--- a/agent/mibgroup/versiontag
+++ b/agent/mibgroup/versiontag
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-DOIT=
+DOIT=echo
 
 if [ $2 = "tag" -o $2 = "tar" ];
 then
diff --git a/agent/mibgroup/winExtDLL.c b/agent/mibgroup/winExtDLL.c
index c008576..f44f84f 100644
--- a/agent/mibgroup/winExtDLL.c
+++ b/agent/mibgroup/winExtDLL.c
@@ -82,6 +82,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/agent/mib_module_config.h>
 
 #ifdef USING_WINEXTDLL_MODULE
@@ -101,6 +102,8 @@
 #include "util_funcs.h"
 #include "winExtDLL.h"
 
+netsnmp_feature_require(oid_is_subtree)
+
 
 #define MAX_VALUE_NAME          16383
 #define MS_ASN_UINTEGER32 MS_ASN_UNSIGNED32
@@ -753,6 +756,79 @@
     return NULL;
 }
 
+/*
+ * Translate Net-SNMP request mode into an SnmpExtensionQuery() PDU type
+ * or into an SnmpExtensionQueryEx() request type.
+ */
+static int
+get_request_type(int mode, int request_type, UINT *nRequestType)
+{
+    switch (request_type) {
+    case 0:
+        /* SnmpExtensionQuery() PDU type */
+        switch (mode) {
+        case MODE_GET:
+            *nRequestType = SNMP_PDU_GET;
+            return 1;
+        case MODE_GETNEXT:
+            *nRequestType = SNMP_PDU_GETNEXT;
+            return 1;
+        case MODE_SET_RESERVE1:
+            return 0;
+        case MODE_SET_RESERVE2:
+            return 0;
+        case MODE_SET_ACTION:
+            return 0;
+        case MODE_SET_UNDO:
+            return 0;
+        case MODE_SET_COMMIT:
+            *nRequestType = SNMP_PDU_SET;
+            return 1;
+        case MODE_SET_FREE:
+            return 0;
+        default:
+            DEBUGMSG(("winExtDLL", "internal error: invalid mode %d.\n", mode));
+            netsnmp_assert(0);
+            return 0;
+        }
+    case 1:
+        /* SnmpExtensionQueryEx() request type */
+        switch (mode) {
+        case MODE_GET:
+            *nRequestType = SNMP_EXTENSION_GET;
+            return 1;
+        case MODE_GETNEXT:
+            *nRequestType = SNMP_EXTENSION_GET_NEXT;
+            return 1;
+        case MODE_SET_RESERVE1:
+            *nRequestType = SNMP_EXTENSION_SET_TEST;
+            return 1;
+        case MODE_SET_RESERVE2:
+            return 0;
+        case MODE_SET_ACTION:
+            return 0;
+        case MODE_SET_UNDO:
+            *nRequestType = SNMP_EXTENSION_SET_UNDO;
+            return 1;
+        case MODE_SET_COMMIT:
+            *nRequestType = SNMP_EXTENSION_SET_COMMIT;
+            return 1;
+        case MODE_SET_FREE:
+            *nRequestType = SNMP_EXTENSION_SET_CLEANUP;
+            return 1;
+        default:
+            DEBUGMSG(("winExtDLL", "internal error: invalid mode %d.\n", mode));
+            netsnmp_assert(0);
+            return 0;
+        }
+    default:
+        DEBUGMSG(("winExtDLL", "internal error: invalid argument %d.\n",
+                  request_type));
+        netsnmp_assert(0);
+        return 0;
+    }
+}
+
 static int
 var_winExtDLL(netsnmp_mib_handler *handler,
               netsnmp_handler_registration *reginfo,
@@ -763,7 +839,6 @@
     winextdll      *ext_dll_info;
     netsnmp_request_info *request;
     UINT            nRequestType;
-    const char     *mode_name;
     int             rc;
 
     netsnmp_assert(ext_dll_view_info);
@@ -780,43 +855,8 @@
         return SNMP_ERR_GENERR;
     }
 
-    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:
-        DEBUGMSG(("winExtDLL",
-                  "internal error: invalid mode %d.\n", reqinfo->mode));
-        netsnmp_assert(0);
+    if (!get_request_type(reqinfo->mode, !!ext_dll_info->pfSnmpExtensionQueryEx,
+                          &nRequestType)) {
         return SNMP_ERR_NOERROR;
     }
 
diff --git a/agent/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 5aa5552..b96d650 100644
--- a/agent/snmp_agent.c
+++ b/agent/snmp_agent.c
@@ -44,6 +44,7 @@
  * @{
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
 #ifdef HAVE_LIMITS_H
@@ -59,11 +60,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 +76,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>
@@ -99,8 +93,6 @@
 #endif
 
 #include "snmpd.h"
-#include "mibgroup/struct.h"
-#include "mibgroup/util_funcs.h"
 #include <net-snmp/agent/mib_module_config.h>
 #include <net-snmp/agent/mib_modules.h>
 
@@ -116,6 +108,87 @@
 #include "smux/smux.h"
 #endif
 
+netsnmp_feature_child_of(snmp_agent, libnetsnmpagent)
+netsnmp_feature_child_of(agent_debugging_utilities, libnetsnmpagent)
+
+netsnmp_feature_child_of(allocate_globalcacheid, snmp_agent)
+netsnmp_feature_child_of(free_agent_snmp_session_by_session, snmp_agent)
+netsnmp_feature_child_of(check_all_requests_error, snmp_agent)
+netsnmp_feature_child_of(check_requests_error, snmp_agent)
+netsnmp_feature_child_of(request_set_error_idx, snmp_agent)
+netsnmp_feature_child_of(set_agent_uptime, snmp_agent)
+netsnmp_feature_child_of(agent_check_and_process, snmp_agent)
+
+netsnmp_feature_child_of(dump_sess_list, agent_debugging_utilities)
+
+netsnmp_feature_child_of(agent_remove_list_data, netsnmp_unused)
+netsnmp_feature_child_of(set_all_requests_error, netsnmp_unused)
+netsnmp_feature_child_of(addrcache_age, netsnmp_unused)
+netsnmp_feature_child_of(delete_subtree_cache, netsnmp_unused)
+
+
+NETSNMP_INLINE void
+netsnmp_agent_add_list_data(netsnmp_agent_request_info *ari,
+                            netsnmp_data_list *node)
+{
+    if (ari) {
+	if (ari->agent_data) {
+            netsnmp_add_list_data(&ari->agent_data, node);
+        } else {
+            ari->agent_data = node;
+	}
+    }
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_AGENT_REMOVE_LIST_DATA
+NETSNMP_INLINE int
+netsnmp_agent_remove_list_data(netsnmp_agent_request_info *ari,
+                               const char * name)
+{
+    if ((NULL == ari) || (NULL == ari->agent_data))
+        return 1;
+
+    return netsnmp_remove_list_node(&ari->agent_data, name);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_AGENT_REMOVE_LIST_DATA */
+
+NETSNMP_INLINE void    *
+netsnmp_agent_get_list_data(netsnmp_agent_request_info *ari,
+                            const char *name)
+{
+    if (ari) {
+        return netsnmp_get_list_data(ari->agent_data, name);
+    }
+    return NULL;
+}
+
+NETSNMP_INLINE void
+netsnmp_free_agent_data_set(netsnmp_agent_request_info *ari)
+{
+    if (ari) {
+        netsnmp_free_list_data(ari->agent_data);
+    }
+}
+
+NETSNMP_INLINE void
+netsnmp_free_agent_data_sets(netsnmp_agent_request_info *ari)
+{
+    if (ari) {
+        netsnmp_free_all_list_data(ari->agent_data);
+    }
+}
+
+NETSNMP_INLINE void
+netsnmp_free_agent_request_info(netsnmp_agent_request_info *ari)
+{
+    if (ari) {
+        if (ari->agent_data) {
+            netsnmp_free_all_list_data(ari->agent_data);
+	}
+        SNMP_FREE(ari);
+    }
+}
+
 oid      version_sysoid[] = { NETSNMP_SYSTEM_MIB };
 int      version_sysoid_len = OID_LENGTH(version_sysoid);
 
@@ -130,7 +203,7 @@
 struct addrCache {
     char           *addr;
     int            status;
-    struct timeval lastHit;
+    struct timeval lastHitM;
 };
 
 static struct addrCache addrCache[SNMP_ADDRCACHE_SIZE];
@@ -176,11 +249,13 @@
 
 int      netsnmp_running = 1;
 
+#ifndef NETSNMP_FEATURE_REMOVE_ALLOCATE_GLOBALCACHEID
 int
 netsnmp_allocate_globalcacheid(void)
 {
     return ++current_globalid;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_ALLOCATE_GLOBALCACHEID */
 
 int
 netsnmp_get_local_cachid(netsnmp_cachemap *cache_store, int globalid)
@@ -200,15 +275,17 @@
     netsnmp_cachemap *tmpp;
 
     tmpp = SNMP_MALLOC_TYPEDEF(netsnmp_cachemap);
-    if (*cache_store) {
-        tmpp->next = *cache_store;
-        *cache_store = tmpp;
-    } else {
-        *cache_store = tmpp;
-    }
+    if (tmpp != NULL) {
+        if (*cache_store) {
+            tmpp->next = *cache_store;
+            *cache_store = tmpp;
+        } else {
+            *cache_store = tmpp;
+        }
 
-    tmpp->globalid = globalid;
-    tmpp->cacheid = localid;
+        tmpp->globalid = globalid;
+        tmpp->cacheid = localid;
+    }
     return tmpp;
 }
 
@@ -322,7 +399,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 */
@@ -345,7 +422,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);
             }
@@ -541,15 +618,7 @@
     }
 }
 
-
-int
-getNextSessID()
-{
-    static int      SessionID = 0;
-
-    return ++SessionID;
-}
-
+#ifndef NETSNMP_FEATURE_REMOVE_AGENT_CHECK_AND_PROCESS
 /**
  * This function checks for packets arriving on the SNMP port and
  * processes them(snmp_read) if some are found, using the select(). If block
@@ -596,7 +665,7 @@
         timerclear(tvp);
     }
 
-    count = select(numfds, &fdset, 0, 0, tvp);
+    count = select(numfds, &fdset, NULL, NULL, tvp);
 
     if (count > 0) {
         /*
@@ -619,6 +688,11 @@
         }                       /* endif -- count>0 */
 
     /*
+     * see if persistent store needs to be saved
+     */
+    snmp_store_if_needed();
+
+    /*
      * Run requested alarms.  
      */
     run_alarms();
@@ -627,7 +701,7 @@
 
     return count;
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_AGENT_CHECK_AND_PROCESS */
 
 /*
  * Set up the address cache.  
@@ -683,7 +757,7 @@
     /*
      * First get the current and oldest allowable timestamps
      */
-    gettimeofday(&now, (struct timezone*) NULL);
+    netsnmp_get_monotonic_clock(&now);
     aged.tv_sec = now.tv_sec - SNMP_ADDRCACHE_MAXAGE;
     aged.tv_usec = now.tv_usec;
 
@@ -703,8 +777,8 @@
                 /*
                  * found a match
                  */
-                addrCache[i].lastHit = now;
-                if (timercmp(&addrCache[i].lastHit, &aged, <))
+                addrCache[i].lastHitM = now;
+                if (timercmp(&addrCache[i].lastHitM, &aged, <))
 		    rc = 1; /* should have expired, so is new */
 		else
 		    rc = 0; /* not expired, so is existing entry */
@@ -714,7 +788,7 @@
                 /*
                  * Used, but not this address. check if it's stale.
                  */
-                if (timercmp(&addrCache[i].lastHit, &aged, <)) {
+                if (timercmp(&addrCache[i].lastHitM, &aged, <)) {
                     /*
                      * Stale, reuse
                      */
@@ -732,8 +806,8 @@
                      */
                     if (oldest < 0)
                         oldest = i;
-                    else if (timercmp(&addrCache[i].lastHit,
-                                      &addrCache[oldest].lastHit, <))
+                    else if (timercmp(&addrCache[i].lastHitM,
+                                      &addrCache[oldest].lastHitM, <))
                         oldest = i;
                 } /* fresh */
             } /* used, no match */
@@ -750,7 +824,7 @@
              */
             addrCache[unused].addr = strdup(addr);
             addrCache[unused].status = SNMP_ADDRCACHE_USED;
-            addrCache[unused].lastHit = now;
+            addrCache[unused].lastHitM = now;
         }
         else { /* Otherwise, replace oldest entry */
             if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
@@ -760,7 +834,7 @@
             
             free(addrCache[oldest].addr);
             addrCache[oldest].addr = strdup(addr);
-            addrCache[oldest].lastHit = now;
+            addrCache[oldest].lastHitM = now;
         }
         rc = 1;
     }
@@ -778,11 +852,13 @@
  *
  * backwards compatability; not used anywhere
  */
+#ifndef NETSNMP_FEATURE_REMOVE_ADDRCACHE_AGE
 void
 netsnmp_addrcache_age(void)
 {
     (void)netsnmp_addrcache_add(NULL);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_ADDRCACHE_AGE */
 
 /*******************************************************************-o-******
  * netsnmp_agent_check_packet
@@ -913,9 +989,11 @@
             case SNMP_MSG_RESPONSE:
                 snmp_log(LOG_DEBUG, "  RESPONSE message\n");
                 break;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             case SNMP_MSG_SET:
                 snmp_log(LOG_DEBUG, "  SET message\n");
                 break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
             case SNMP_MSG_TRAP:
                 snmp_log(LOG_DEBUG, "  TRAP message\n");
                 break;
@@ -933,6 +1011,7 @@
                 snmp_log(LOG_DEBUG, "  REPORT message\n");
                 break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             case SNMP_MSG_INTERNAL_SET_RESERVE1:
                 snmp_log(LOG_DEBUG, "  INTERNAL RESERVE1 message\n");
                 break;
@@ -956,6 +1035,7 @@
             case SNMP_MSG_INTERNAL_SET_UNDO:
                 snmp_log(LOG_DEBUG, "  INTERNAL UNDO message\n");
                 break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
             default:
                 snmp_log(LOG_DEBUG, "  UNKNOWN message, type=%02X\n",
@@ -1047,6 +1127,27 @@
 				  NETSNMP_DS_AGENT_FLAGS);
     s->isAuthoritative = SNMP_SESS_AUTHORITATIVE;
 
+    /* Optional supplimental transport configuration information and
+       final call to actually open the transport */
+    if (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) {
@@ -1183,6 +1284,7 @@
         return 0;               /*  No error if ! MASTER_AGENT  */
     }
 
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
     /*
      * Have specific agent ports been specified?  
      */
@@ -1251,6 +1353,8 @@
 			"NSAP\n", cptr));
         }
     } while(st && *st != '\0');
+    SNMP_FREE(buf);
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
 
 #ifdef USING_AGENTX_MASTER_MODULE
     if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
@@ -1291,7 +1395,7 @@
         return NULL;
     }
 
-    DEBUGMSGTL(("snmp_agent","agent_sesion %08p created\n", asp));
+    DEBUGMSGTL(("snmp_agent","agent_sesion %8p created\n", asp));
     asp->session = session;
     asp->pdu = snmp_clone_pdu(pdu);
     asp->orig_pdu = snmp_clone_pdu(pdu);
@@ -1317,7 +1421,7 @@
     if (!asp)
         return;
 
-    DEBUGMSGTL(("snmp_agent","agent_session %08p released\n", asp));
+    DEBUGMSGTL(("snmp_agent","agent_session %8p released\n", asp));
 
     netsnmp_remove_from_delegated(asp);
     
@@ -1329,12 +1433,8 @@
         snmp_free_pdu(asp->pdu);
     if (asp->reqinfo)
         netsnmp_free_agent_request_info(asp->reqinfo);
-    if (asp->treecache) {
-        SNMP_FREE(asp->treecache);
-    }
-    if (asp->bulkcache) {
-        SNMP_FREE(asp->bulkcache);
-    }
+    SNMP_FREE(asp->treecache);
+    SNMP_FREE(asp->bulkcache);
     if (asp->requests) {
         int             i;
         for (i = 0; i < asp->vbcount; i++) {
@@ -1389,7 +1489,7 @@
              */
             asp->next = agent_delegated_list;
             agent_delegated_list = asp;
-            DEBUGMSGTL(("snmp_agent", "delegate session == %08p\n", asp));
+            DEBUGMSGTL(("snmp_agent", "delegate session == %8p\n", asp));
         }
         return 1;
     }
@@ -1416,7 +1516,7 @@
         else
             agent_delegated_list = asp->next;
 
-        DEBUGMSGTL(("snmp_agent", "remove delegated session == %08p\n", asp));
+        DEBUGMSGTL(("snmp_agent", "remove delegated session == %8p\n", asp));
 
         return 1;
     }
@@ -1463,7 +1563,7 @@
      */
     if(count) {
         DEBUGMSGTL(("snmp_agent", "removed %d delegated request(s) for session "
-                    "%08p\n", count, sess));
+                    "%8p\n", count, sess));
         netsnmp_check_outstanding_agent_requests();
     }
     
@@ -1519,15 +1619,12 @@
 int
 netsnmp_wrap_up_request(netsnmp_agent_session *asp, int status)
 {
-    netsnmp_variable_list *var_ptr;
-    int             i;
-
     /*
      * if this request was a set, clear the global now that we are
      * done.
      */
     if (asp == netsnmp_processing_set) {
-        DEBUGMSGTL(("snmp_agent", "SET request complete, asp = %08p\n",
+        DEBUGMSGTL(("snmp_agent", "SET request complete, asp = %8p\n",
                     asp));
         netsnmp_processing_set = NULL;
     }
@@ -1541,6 +1638,7 @@
             asp->status = status;
 
         switch (asp->pdu->command) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             case SNMP_MSG_INTERNAL_SET_BEGIN:
             case SNMP_MSG_INTERNAL_SET_RESERVE1:
             case SNMP_MSG_INTERNAL_SET_RESERVE2:
@@ -1550,6 +1648,7 @@
                  */
                 save_set_cache(asp);
                 break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
             case SNMP_MSG_GETNEXT:
                 _fix_endofmibview(asp);
@@ -1568,6 +1667,7 @@
          * v1 query.  See RFC2576 - section 4.3
          */
 #ifndef NETSNMP_DISABLE_SNMPV1
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if ((asp->pdu->command == SNMP_MSG_SET) &&
             (asp->pdu->version == SNMP_VERSION_1)) {
             switch (asp->status) {
@@ -1602,8 +1702,10 @@
          */
         if ((asp->pdu->command != SNMP_MSG_SET) &&
             (asp->pdu->version == SNMP_VERSION_1)) {
-            for (var_ptr = asp->pdu->variables, i = 1;
-                 var_ptr != NULL; var_ptr = var_ptr->next_variable, i++) {
+            netsnmp_variable_list *var_ptr = asp->pdu->variables;
+            int                    i = 1;
+
+            while (var_ptr != NULL) {
                 switch (var_ptr->type) {
                     case SNMP_NOSUCHOBJECT:
                     case SNMP_NOSUCHINSTANCE:
@@ -1614,8 +1716,11 @@
                         asp->index = i;
                         break;
                 }
+                var_ptr = var_ptr->next_variable;
+                ++i;
             }
         }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 #endif /* snmpv1 support */
     } /** if asp->pdu */
 
@@ -1661,10 +1766,16 @@
     }
 
     if ((status == SNMP_ERR_NOERROR) && (asp->pdu)) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         snmp_increment_statistic_by((asp->pdu->command == SNMP_MSG_SET ?
                                      STAT_SNMPINTOTALSETVARS :
                                      STAT_SNMPINTOTALREQVARS),
                                     count_varbinds(asp->pdu->variables));
+#else /* NETSNMP_NO_WRITE_SUPPORT */
+        snmp_increment_statistic_by(STAT_SNMPINTOTALREQVARS,
+                                    count_varbinds(asp->pdu->variables));
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
     } else {
         /*
          * Use a copy of the original request
@@ -1709,6 +1820,7 @@
     return 1;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_DUMP_SESS_LIST
 void
 dump_sess_list(void)
 {
@@ -1716,17 +1828,18 @@
 
     DEBUGMSGTL(("snmp_agent", "DUMP agent_sess_list -> "));
     for (a = agent_session_list; a != NULL; a = a->next) {
-        DEBUGMSG(("snmp_agent", "%08p[session %08p] -> ", a, a->session));
+        DEBUGMSG(("snmp_agent", "%8p[session %8p] -> ", a, a->session));
     }
     DEBUGMSG(("snmp_agent", "[NIL]\n"));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_DUMP_SESS_LIST */
 
 void
 netsnmp_remove_and_free_agent_snmp_session(netsnmp_agent_session *asp)
 {
     netsnmp_agent_session *a, **prevNext = &agent_session_list;
 
-    DEBUGMSGTL(("snmp_agent", "REMOVE session == %08p\n", asp));
+    DEBUGMSGTL(("snmp_agent", "REMOVE session == %8p\n", asp));
 
     for (a = agent_session_list; a != NULL; a = *prevNext) {
         if (a == asp) {
@@ -1748,6 +1861,7 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_FREE_AGENT_SNMP_SESSION_BY_SESSION
 void
 netsnmp_free_agent_snmp_session_by_session(netsnmp_session * sess,
                                            void (*free_request)
@@ -1755,7 +1869,7 @@
 {
     netsnmp_agent_session *a, *next, **prevNext = &agent_session_list;
 
-    DEBUGMSGTL(("snmp_agent", "REMOVE session == %08p\n", sess));
+    DEBUGMSGTL(("snmp_agent", "REMOVE session == %8p\n", sess));
 
     for (a = agent_session_list; a != NULL; a = next) {
         if (a->session == sess) {
@@ -1768,6 +1882,7 @@
         }
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_FREE_AGENT_SNMP_SESSION_BY_SESSION */
 
 /** handles an incoming SNMP packet into the agent */
 int
@@ -1874,7 +1989,7 @@
     /*
      * done 
      */
-    DEBUGMSGTL(("snmp_agent", "end of handle_snmp_packet, asp = %08p\n",
+    DEBUGMSGTL(("snmp_agent", "end of handle_snmp_packet, asp = %8p\n",
                 asp));
     return rc;
 }
@@ -1885,7 +2000,6 @@
                              netsnmp_subtree *tp)
 {
     netsnmp_request_info *request = NULL;
-    int             cacheid;
 
     DEBUGMSGTL(("snmp_agent", "add_vb_to_cache(%8p, %d, ", asp, vbcount));
     DEBUGMSGOID(("snmp_agent", varbind_ptr->name,
@@ -1949,7 +2063,9 @@
             varbind_ptr->type = SNMP_ENDOFMIBVIEW;
             break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case SNMP_MSG_SET:
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
         case SNMP_MSG_GET:
             varbind_ptr->type = SNMP_NOSUCHOBJECT;
             break;
@@ -1958,6 +2074,8 @@
             return NULL;        /* shouldn't get here */
         }
     } else {
+        int cacheid;
+
         DEBUGMSGTL(("snmp_agent", "tp->start "));
         DEBUGMSGOID(("snmp_agent", tp->start_a, tp->start_len));
         DEBUGMSG(("snmp_agent", ", tp->end "));
@@ -1983,8 +2101,10 @@
         /*
          * for non-SET modes, set the type to NULL 
          */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if (!MODE_IS_SET(asp->pdu->command)) {
-        DEBUGMSGTL(("verbose:asp", "asp %p reqinfo %p assigned to request\n",
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+            DEBUGMSGTL(("verbose:asp", "asp %p reqinfo %p assigned to request\n",
                     asp, asp->reqinfo));
             if (varbind_ptr->type == ASN_PRIV_INCL_RANGE) {
                 DEBUGMSGTL(("snmp_agent", "varbind %d is inclusive\n",
@@ -1992,7 +2112,9 @@
                 request->inclusive = 1;
             }
             varbind_ptr->type = ASN_NULL;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         /*
          * place them in a cache 
@@ -2035,7 +2157,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)
@@ -2163,7 +2285,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;
     }
@@ -2204,8 +2326,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
@@ -2319,6 +2441,7 @@
                                          NULL, 0);
             break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case SNMP_MSG_SET:
             view = in_a_view(varbind_ptr->name, &varbind_ptr->name_length,
                              asp->pdu, varbind_ptr->type);
@@ -2327,6 +2450,7 @@
                 return SNMP_ERR_NOACCESS;
             }
             break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         case SNMP_MSG_GETNEXT:
         case SNMP_MSG_GETBULK:
@@ -2375,6 +2499,10 @@
     asp->treecache =
         (netsnmp_tree_cache *) calloc(asp->treecache_len,
                                       sizeof(netsnmp_tree_cache));
+
+    if (asp->treecache == NULL)
+        return SNMP_ERR_GENERR;
+
     asp->treecache_num = -1;
     if (asp->cache_store) {
         netsnmp_free_cachemap(asp->cache_store);
@@ -2393,10 +2521,7 @@
             if (!netsnmp_add_varbind_to_cache(asp, asp->requests[i].index,
                                               asp->requests[i].requestvb,
                                               asp->requests[i].subtree->next)) {
-                if (old_treecache != NULL) {
-                    SNMP_FREE(old_treecache);
-                    old_treecache = NULL;
-                }
+                SNMP_FREE(old_treecache);
             }
         } else if (asp->requests[i].requestvb->type == ASN_PRIV_RETRY) {
             /*
@@ -2406,17 +2531,12 @@
             if (!netsnmp_add_varbind_to_cache(asp, asp->requests[i].index,
                                               asp->requests[i].requestvb,
                                               asp->requests[i].subtree)) {
-                if (old_treecache != NULL) {
-                    SNMP_FREE(old_treecache);
-                    old_treecache = NULL;
-                }
+                SNMP_FREE(old_treecache);
             }
         }
     }
 
-    if (old_treecache != NULL) {
-        SNMP_FREE(old_treecache);
-    }
+    SNMP_FREE(old_treecache);
     return SNMP_ERR_NOERROR;
 }
 
@@ -2429,6 +2549,7 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_DELETE_SUBTREE_CACHE
 void
 netsnmp_delete_subtree_cache(netsnmp_agent_session *asp)
 {
@@ -2441,7 +2562,9 @@
         asp->treecache_num--;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_DELETE_SUBTREE_CACHE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_ALL_REQUESTS_ERROR
 /*
  * check all requests for errors
  *
@@ -2472,7 +2595,9 @@
 
     return SNMP_ERR_NOERROR;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_ALL_REQUESTS_ERROR */
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_REQUESTS_ERROR
 int
 netsnmp_check_requests_error(netsnmp_request_info *requests)
 {
@@ -2485,6 +2610,7 @@
     }
     return SNMP_ERR_NOERROR;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_REQUESTS_ERROR */
 
 int
 netsnmp_check_requests_status(netsnmp_agent_session *asp,
@@ -2560,6 +2686,7 @@
          * errors).
          */
         switch (asp->mode) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case MODE_SET_COMMIT:
             retstatus = netsnmp_check_requests_status(asp,
 						      asp->treecache[i].
@@ -2573,6 +2700,7 @@
 						      requests_begin,
 						      SNMP_ERR_UNDOFAILED);
             break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         default:
             retstatus = netsnmp_check_requests_status(asp,
@@ -2683,6 +2811,7 @@
          * if the top request is a set, don't pop it
          * off if there are delegated requests
          */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if ((netsnmp_agent_queued_list->pdu->command == SNMP_MSG_SET) &&
             (agent_delegated_list)) {
 
@@ -2690,9 +2819,10 @@
 
             netsnmp_processing_set = netsnmp_agent_queued_list;
             DEBUGMSGTL(("snmp_agent", "SET request remains queued while "
-                        "delegated requests finish, asp = %08p\n", asp));
+                        "delegated requests finish, asp = %8p\n", asp));
             break;
         }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
         /*
          * pop the first request and process it
@@ -2700,7 +2830,7 @@
         asp = netsnmp_agent_queued_list;
         netsnmp_agent_queued_list = asp->next;
         DEBUGMSGTL(("snmp_agent",
-                    "processing queued request, asp = %08p\n", asp));
+                    "processing queued request, asp = %8p\n", asp));
 
         netsnmp_handle_request(asp, asp->status);
 
@@ -2743,7 +2873,7 @@
 {
     int             status = SNMP_ERR_NOERROR;
 
-    DEBUGMSGTL(("snmp_agent", "processing delegated request, asp = %08p\n",
+    DEBUGMSGTL(("snmp_agent", "processing delegated request, asp = %8p\n",
                 asp));
 
     switch (asp->mode) {
@@ -2764,6 +2894,7 @@
         }
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case MODE_SET_COMMIT:
         netsnmp_check_all_requests_status(asp, SNMP_ERR_COMMITFAILED);
         goto settop;
@@ -2799,6 +2930,7 @@
             return SNMP_ERR_NOERROR;
         }
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     default:
         break;
@@ -2992,9 +3124,13 @@
             return status;      /* should never really happen */
         }
     }
+    if (!netsnmp_running) {
+        return SNMP_ERR_GENERR;
+    }
     return SNMP_ERR_NOERROR;
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int
 handle_set(netsnmp_agent_session *asp)
 {
@@ -3092,6 +3228,7 @@
     }
     return asp->status;
 }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 int
 netsnmp_handle_request(netsnmp_agent_session *asp, int status)
@@ -3112,13 +3249,14 @@
             netsnmp_add_queued(asp);
             DEBUGMSGTL(("snmp_agent",
                         "request queued while processing set, "
-                        "asp = %08p\n", asp));
+                        "asp = %8p\n", asp));
             return 1;
         }
 
         /*
          * check for set request
          */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         if (asp->pdu->command == SNMP_MSG_SET) {
             netsnmp_processing_set = asp;
 
@@ -3128,12 +3266,13 @@
              */
             if (agent_delegated_list) {
                 DEBUGMSGTL(("snmp_agent", "SET request queued while "
-                            "delegated requests finish, asp = %08p\n",
+                            "delegated requests finish, asp = %8p\n",
                             asp));
                 netsnmp_add_queued(asp);
                 return 1;
             }
         }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     }
 
     /*
@@ -3185,6 +3324,7 @@
      */
     switch (asp->pdu->command) {
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMP_MSG_INTERNAL_SET_RESERVE2:
     case SNMP_MSG_INTERNAL_SET_ACTION:
     case SNMP_MSG_INTERNAL_SET_COMMIT:
@@ -3194,6 +3334,7 @@
         if (status != SNMP_ERR_NOERROR)
             return status;
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     case SNMP_MSG_GET:
     case SNMP_MSG_GETNEXT:
@@ -3217,8 +3358,10 @@
          * fall through 
          */
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMP_MSG_INTERNAL_SET_BEGIN:
     case SNMP_MSG_INTERNAL_SET_RESERVE1:
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     default:
         asp->vbcount = count_varbinds(asp->pdu->variables);
         if (asp->vbcount) /* efence doesn't like 0 size allocs */
@@ -3308,6 +3451,7 @@
         status = handle_getnext_loop(asp);
         break;
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMP_MSG_SET:
 #ifdef NETSNMP_DISABLE_SET_SUPPORT
         return SNMP_ERR_NOTWRITABLE;
@@ -3336,6 +3480,7 @@
          * asp related cache is saved in cleanup 
          */
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
     case SNMP_MSG_RESPONSE:
         snmp_increment_statistic(STAT_SNMPINGETRESPONSES);
@@ -3385,7 +3530,7 @@
         case MODE_GETNEXT:
         case MODE_GETBULK:
             request->requestvb->type = error_value;
-            return SNMPERR_SUCCESS;
+            break;
 
             /*
              * These are technically illegal to set by the
@@ -3398,9 +3543,15 @@
             return SNMPERR_VALUE;
              */
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        case SNMP_MSG_INTERNAL_SET_RESERVE1:
+            request->status = SNMP_ERR_NOCREATION;
+            break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
         default:
             request->status = SNMP_ERR_NOSUCHNAME;      /* WWW: correct? */
-            return SNMPERR_SUCCESS;
+            break;
         }
         break;                  /* never get here */
 
@@ -3421,7 +3572,7 @@
              */
             request->status = error_value;
         }
-        return SNMPERR_SUCCESS;
+        break;
     }
     return SNMPERR_SUCCESS;
 }
@@ -3440,6 +3591,7 @@
                               error_value);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_REQUEST_SET_ERROR_IDX
 /** set error for a request within a request list
  * @param request head of the request list
  * @param error_value error value for request
@@ -3467,6 +3619,7 @@
     return _request_set_error(req, request->agent_req_info->mode,
                               error_value);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_REQUEST_SET_ERROR_IDX */
 
 /** set error for all requests
  * @param requests request list
@@ -3501,103 +3654,131 @@
     return result;
 }
 
-extern struct timeval starttime;
-
-                /*
-                 * Return the value of 'sysUpTime' at the given marker 
-                 */
+/**
+ * Return the difference between pm and the agent start time in hundredths of
+ * a second.
+ * \deprecated Don't use in new code.
+ *
+ * @param[in] pm An absolute time as e.g. reported by gettimeofday().
+ */
 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;
 }
 
-                        /*
-                         * struct timeval equivalents of these 
-                         */
+/**
+ * Return the difference between tv and the agent start time in hundredths of
+ * a second.
+ *
+ * \deprecated Use netsnmp_get_agent_uptime() instead.
+ *
+ * @param[in] tv An absolute time as e.g. reported by gettimeofday().
+ */
 u_long
 netsnmp_timeval_uptime(struct timeval * tv)
 {
     return netsnmp_marker_uptime((marker_t) tv);
 }
 
-                /*
-                 * Return the current value of 'sysUpTime' 
-                 */
+
+struct timeval  starttime;
+static struct timeval starttimeM;
+
+/**
+ * Return a pointer to the variable in which the Net-SNMP start time has
+ * been stored.
+ *
+ * @note Use netsnmp_get_agent_runtime() instead of this function if you need
+ *   to know how much time elapsed since netsnmp_set_agent_starttime() has been
+ *   called.
+ */
+const_marker_t        
+netsnmp_get_agent_starttime(void)
+{
+    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;
+
+    netsnmp_get_monotonic_clock(&now);
+    NETSNMP_TIMERSUB(&now, &starttimeM, &delta);
+    return delta.tv_sec * (uint64_t)100 + delta.tv_usec / 10000;
+}
+
+/**
+ * Set the time at which Net-SNMP started either to the current time
+ * (if s == NULL) or to *s (if s is not NULL).
+ *
+ * @see See also netsnmp_set_agent_uptime().
+ */
+void            
+netsnmp_set_agent_starttime(marker_t s)
+{
+    if (s) {
+        struct timeval nowA, nowM;
+
+        starttime = *(struct timeval*)s;
+        gettimeofday(&nowA, NULL);
+        netsnmp_get_monotonic_clock(&nowM);
+        NETSNMP_TIMERSUB(&starttime, &nowA, &starttimeM);
+        NETSNMP_TIMERADD(&starttimeM, &nowM, &starttimeM);
+    } else {
+        gettimeofday(&starttime, NULL);
+        netsnmp_get_monotonic_clock(&starttimeM);
+    }
+}
+
+
+/**
+ * Return the current value of 'sysUpTime' 
+ */
 u_long
 netsnmp_get_agent_uptime(void)
 {
-    struct timeval  now;
-    gettimeofday(&now, NULL);
+    struct timeval now, delta;
 
-    return netsnmp_timeval_uptime(&now);
+    netsnmp_get_monotonic_clock(&now);
+    NETSNMP_TIMERSUB(&now, &starttimeM, &delta);
+    return delta.tv_sec * 100UL + delta.tv_usec / 10000;
 }
 
-
-
-NETSNMP_INLINE void
-netsnmp_agent_add_list_data(netsnmp_agent_request_info *ari,
-                            netsnmp_data_list *node)
+#ifndef NETSNMP_FEATURE_REMOVE_SET_AGENT_UPTIME
+/**
+ * Set the start time from which 'sysUpTime' is computed.
+ *
+ * @param[in] hsec New sysUpTime in hundredths of a second.
+ *
+ * @see See also netsnmp_set_agent_starttime().
+ */
+void
+netsnmp_set_agent_uptime(u_long hsec)
 {
-    if (ari) {
-	if (ari->agent_data) {
-            netsnmp_add_list_data(&ari->agent_data, node);
-        } else {
-            ari->agent_data = node;
-	}
-    }
-}
+    struct timeval  nowA, nowM;
+    struct timeval  new_uptime;
 
-NETSNMP_INLINE int
-netsnmp_agent_remove_list_data(netsnmp_agent_request_info *ari,
-                               const char * name)
-{
-    if ((NULL == ari) || (NULL == ari->agent_data))
-        return 1;
-
-    return netsnmp_remove_list_node(&ari->agent_data, name);
+    gettimeofday(&nowA, NULL);
+    netsnmp_get_monotonic_clock(&nowM);
+    new_uptime.tv_sec = hsec / 100;
+    new_uptime.tv_usec = (uint32_t)(hsec - new_uptime.tv_sec * 100) * 10000L;
+    NETSNMP_TIMERSUB(&nowA, &new_uptime, &starttime);
+    NETSNMP_TIMERSUB(&nowM, &new_uptime, &starttimeM);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SET_AGENT_UPTIME */
 
-NETSNMP_INLINE void    *
-netsnmp_agent_get_list_data(netsnmp_agent_request_info *ari,
-                            const char *name)
-{
-    if (ari) {
-        return netsnmp_get_list_data(ari->agent_data, name);
-    }
-    return NULL;
-}
-
-NETSNMP_INLINE void
-netsnmp_free_agent_data_set(netsnmp_agent_request_info *ari)
-{
-    if (ari) {
-        netsnmp_free_list_data(ari->agent_data);
-    }
-}
-
-NETSNMP_INLINE void
-netsnmp_free_agent_data_sets(netsnmp_agent_request_info *ari)
-{
-    if (ari) {
-        netsnmp_free_all_list_data(ari->agent_data);
-    }
-}
-
-NETSNMP_INLINE void
-netsnmp_free_agent_request_info(netsnmp_agent_request_info *ari)
-{
-    if (ari) {
-        if (ari->agent_data) {
-            netsnmp_free_all_list_data(ari->agent_data);
-	}
-        SNMP_FREE(ari);
-    }
-}
 
 /*************************************************************************
  *
@@ -3647,6 +3828,7 @@
  * @param error_value error value for requests
  * @return error_value
  */
+#ifndef NETSNMP_FEATURE_REMOVE_SET_ALL_REQUESTS_ERROR
 int
 netsnmp_set_all_requests_error(netsnmp_agent_request_info *reqinfo,
                                netsnmp_request_info *requests,
@@ -3655,4 +3837,5 @@
     netsnmp_request_set_error_all(requests, error_value);
     return error_value;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SET_ALL_REQUESTS_ERROR */
 /** @} */
diff --git a/agent/snmp_perl.c b/agent/snmp_perl.c
index 4821ad3..48d9695 100644
--- a/agent/snmp_perl.c
+++ b/agent/snmp_perl.c
@@ -29,10 +29,14 @@
 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];
+    int             res;
 
     static int      have_done_init = 0;
 
@@ -40,31 +44,58 @@
         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)
+    if (!my_perl) {
+        snmp_log(LOG_ERR,
+                 "embedded perl support failed to initialize (perl_alloc())\n");
         goto bail_out;
+    }
 
     perl_construct(my_perl);
-    if (perl_parse(my_perl, xs_init, 2, NETSNMP_REMOVE_CONST(char **, embedargs), NULL))
-        goto bail_out;
 
-    if (perl_run(my_perl))
+#ifdef PERL_EXIT_DESTRUCT_END
+    PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
+#endif
+
+    res = perl_parse(my_perl, xs_init, 2, embedargs, NULL);
+    if (res) {
+        snmp_log(LOG_ERR,
+                 "embedded perl support failed to initialize (perl_parse(%s)"
+                 " returned %d)\n", embedargs[1], res);
         goto bail_out;
+    }
+
+    res = perl_run(my_perl);
+    if (res) {
+        snmp_log(LOG_ERR,
+                 "embedded perl support failed to initialize (perl_run()"
+                 " returned %d)\n", res);
+        goto bail_out;
+    }
+
+    free(embedargs[0]);
+    free(embedargs[1]);
 
     DEBUGMSGTL(("perl", "done initializing perl\n"));
 
     return;
 
   bail_out:
-    snmp_log(LOG_ERR, "embedded perl support failed to initialize\n");
+    free(embedargs[0]);
+    free(embedargs[1]);
     netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, 
 			   NETSNMP_DS_AGENT_DISABLE_PERL, 1);
     return;
diff --git a/agent/snmp_vars.c b/agent/snmp_vars.c
index aaf917f..2f9e6ef 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
@@ -143,6 +136,7 @@
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include <net-snmp/agent/mib_modules.h>
+#include <net-snmp/agent/agent_sysORTable.h>
 #include "kernel.h"
 
 #include "mibgroup/struct.h"
@@ -153,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
@@ -236,8 +236,6 @@
 u_char          return_buf[256];        /* nee 64 */
 #endif
 
-struct timeval  starttime;
-
 int             callback_master_num = -1;
 
 #ifdef NETSNMP_TRANSPORT_CALLBACK_DOMAIN
@@ -285,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 
@@ -312,16 +308,19 @@
     netsnmp_init_helpers();
     init_traps();
     netsnmp_container_init_list();
+    init_agent_sysORTable();
 
 #if defined(USING_AGENTX_SUBAGENT_MODULE) || defined(USING_AGENTX_MASTER_MODULE)
     /*
      * 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.  
@@ -340,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
@@ -366,12 +370,16 @@
     netsnmp_clear_callback_list();
     netsnmp_clear_tdomain_list();
     netsnmp_clear_handler_list();
+    shutdown_agent_sysORTable();
     netsnmp_container_free_list();
     clear_sec_mod();
     clear_snmp_enum();
     clear_callback();
-    clear_user_list();
+    shutdown_secmod();
     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 f467592..cfc7bce 100644
--- a/agent/snmpd.c
+++ b/agent/snmpd.c
@@ -36,6 +36,8 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/types.h>
 
 #if HAVE_IO_H
 #include <io.h>
@@ -61,11 +63,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 +77,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>
@@ -116,6 +112,9 @@
 #if HAVE_GRP_H
 #include <grp.h>
 #endif
+#ifdef HAVE_CRTDBG_H
+#include <crtdbg.h>
+#endif
 
 #ifndef PATH_MAX
 # ifdef _POSIX_PATH_MAX
@@ -138,21 +137,20 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
 #include <net-snmp/library/fd_event_manager.h>
+#include <net-snmp/library/large_fd_set.h>
 
 #include "m2m.h"
+#include <net-snmp/agent/agent_module_config.h>
 #include <net-snmp/agent/mib_module_config.h>
 
 #include "snmpd.h"
-#include "mibgroup/struct.h"
-#include <net-snmp/agent/mib_modules.h>
 
-#include "mibgroup/util_funcs.h"
+#include <net-snmp/agent/mib_modules.h>
 
 #include <net-snmp/agent/agent_trap.h>
 
 #include <net-snmp/agent/table.h>
 #include <net-snmp/agent/table_iterator.h>
-#include "mib_module_includes.h"
 
 /*
  * Include winservice.h to support Windows Service
@@ -166,6 +164,10 @@
 
 #endif
 
+netsnmp_feature_want(logging_file)
+netsnmp_feature_want(logging_stdio)
+netsnmp_feature_want(logging_syslog)
+
 /*
  * Globals.
  */
@@ -176,7 +178,7 @@
 #define TIMETICK         500000L
 
 int             snmp_dump_packet;
-int             reconfig = 0;
+static int      reconfig = 0;
 int             Facility = LOG_DAEMON;
 
 #ifdef WIN32SERVICE
@@ -193,9 +195,11 @@
 const char     *app_name = "snmpd";
 
 extern int      netsnmp_running;
+#ifdef USING_UTIL_FUNCS_RESTART_MODULE
 extern char   **argvrestartp;
 extern char    *argvrestart;
 extern char    *argvrestartname;
+#endif /* USING_UTIL_FUNCS_RESTART_MODULE */
 
 #ifdef USING_SMUX_MODULE
 #include <mibgroup/smux/smux.h>
@@ -260,81 +264,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);
 }
 
@@ -379,9 +394,13 @@
 {
     /* Disable all logs and log the error via syslog */
     snmp_disable_log();
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
     snmp_enable_syslog();
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
     snmp_log(LOG_ERR, "Exiting on signal %d\n", a);
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
     snmp_disable_syslog();
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
     exit(1);
 }
 
@@ -421,9 +440,7 @@
     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;
     char            option_compatability[] = "-Le";
 #if HAVE_GETPID
@@ -509,11 +526,13 @@
             argv[i] = option_compatability;            
     }
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 #ifdef WIN32
     snmp_log_syslogname(app_name_long);
 #else
     snmp_log_syslogname(app_name);
 #endif
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
     netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
                           NETSNMP_DS_LIB_APPTYPE, app_name);
 
@@ -557,14 +576,19 @@
             break;
 
         case 'd':
-            snmp_set_dump_packet(++snmp_dump_packet);
-            netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, 
-				   NETSNMP_DS_AGENT_VERBOSE, 1);
+            netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
+                                   NETSNMP_DS_LIB_DUMP_PACKET,
+                                   ++snmp_dump_packet);
             break;
 
         case 'D':
+#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':
@@ -578,19 +602,18 @@
                 int             gid;
 
                 gid = strtoul(optarg, &ecp, 10);
+#if HAVE_GETGRNAM && HAVE_PWD_H
                 if (*ecp) {
-#if HAVE_GETPWNAM && HAVE_PWD_H
                     struct group  *info;
+
                     info = getgrnam(optarg);
-                    if (info) {
-                        gid = info->gr_gid;
-                    } else {
+                    gid = info ? info->gr_gid : -1;
+                    endgrent();
+                }
 #endif
-                        fprintf(stderr, "Bad group id: %s\n", optarg);
-                        exit(1);
-#if HAVE_GETPWNAM && HAVE_PWD_H
-                    }
-#endif
+                if (gid < 0) {
+                    fprintf(stderr, "Bad group id: %s\n", optarg);
+                    exit(1);
                 }
                 netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
 				   NETSNMP_DS_AGENT_GROUPID, gid);
@@ -616,6 +639,7 @@
             }
             break;
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
         case 'l':
             printf("Warning: -l option is deprecated, use -Lf <file> instead\n");
             if (optarg != NULL) {
@@ -633,6 +657,7 @@
                 usage(argv[0]);
             }
             break;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
 
         case 'L':
 	    if  (snmp_log_options( optarg, argc, argv ) < 0 ) {
@@ -678,7 +703,8 @@
             break;
 
         case 'q':
-            snmp_set_quick_print(1);
+            netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                   NETSNMP_DS_LIB_QUICK_PRINT, 1);
             break;
 
         case 'r':
@@ -686,6 +712,7 @@
 				      NETSNMP_DS_AGENT_NO_ROOT_ACCESS);
             break;
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
         case 's':
             printf("Warning: -s option is deprecated, use -Lsd instead\n");
             snmp_enable_syslog();
@@ -739,6 +766,7 @@
                 usage(argv[0]);
             }
             break;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
         case 'U':
             netsnmp_ds_toggle_boolean(NETSNMP_DS_APPLICATION_ID, 
@@ -752,19 +780,18 @@
                 int             uid;
 
                 uid = strtoul(optarg, &ecp, 10);
+#if HAVE_GETPWNAM && HAVE_PWD_H
                 if (*ecp) {
-#if HAVE_GETPWNAM && HAVE_PWD_H
                     struct passwd  *info;
+
                     info = getpwnam(optarg);
-                    if (info) {
-                        uid = info->pw_uid;
-                    } else {
+                    uid = info ? info->pw_uid : -1;
+                    endpwent();
+                }
 #endif
-                        fprintf(stderr, "Bad user id: %s\n", optarg);
-                        exit(1);
-#if HAVE_GETPWNAM && HAVE_PWD_H
-                    }
-#endif
+                if (uid < 0) {
+                    fprintf(stderr, "Bad user id: %s\n", optarg);
+                    exit(1);
                 }
                 netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
 				   NETSNMP_DS_AGENT_USERID, uid);
@@ -828,6 +855,7 @@
     }
 
     if (optind < argc) {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
         /*
          * There are optional transport addresses on the command line.  
          */
@@ -836,7 +864,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);
@@ -853,68 +881,62 @@
         DEBUGMSGTL(("snmpd/main", "port spec: %s\n",
                     netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID, 
 					  NETSNMP_DS_AGENT_PORTS)));
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+        fprintf(stderr, "You specified ports to open; this agent was built to only send notifications\n");
+        exit(1);
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
     }
 
 #ifdef NETSNMP_LOGFILE
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
     if (0 == log_set)
         snmp_enable_filelog(NETSNMP_LOGFILE,
                             netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
                                                    NETSNMP_DS_LIB_APPEND_LOGFILES));
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
 #endif
 
-    /*
-     * Initialize a argv set to the current for restarting the agent.   
-     */
-    argvrestartp = (char **)malloc((argc + 2) * sizeof(char *));
-    argvptr = argvrestartp;
-    for (i = 0, ret = 1; i < argc; i++) {
-        ret += strlen(argv[i]) + 1;
+#ifdef USING_UTIL_FUNCS_RESTART_MODULE
+    {
+        /*
+         * Initialize a argv set to the current for restarting the agent.
+         */
+        char *cptr, **argvptr;
+
+        argvrestartp = (char **)malloc((argc + 2) * sizeof(char *));
+        argvptr = argvrestartp;
+        for (i = 0, ret = 1; i < argc; i++) {
+            ret += strlen(argv[i]) + 1;
+        }
+        argvrestart = (char *) malloc(ret);
+        argvrestartname = (char *) malloc(strlen(argv[0]) + 1);
+        if (!argvrestartp || !argvrestart || !argvrestartname) {
+            fprintf(stderr, "malloc failure processing argvrestart\n");
+            exit(1);
+        }
+        strcpy(argvrestartname, argv[0]);
+
+        for (cptr = argvrestart, i = 0; i < argc; i++) {
+            strcpy(cptr, argv[i]);
+            *(argvptr++) = cptr;
+            cptr += strlen(argv[i]) + 1;
+        }
     }
-    argvrestart = (char *) malloc(ret);
-    argvrestartname = (char *) malloc(strlen(argv[0]) + 1);
-    if (!argvrestartp || !argvrestart || !argvrestartname) {
-        fprintf(stderr, "malloc failure processing argvrestart\n");
-        exit(1);
-    }
-    strcpy(argvrestartname, argv[0]);
+#endif /* USING_UTIL_FUNCS_RESTART_MODULE */
+
     if (agent_mode == -1) {
-        if (strstr(argvrestartname, "agentxd") != NULL) {
-            netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, 
+        if (strstr(argv[0], "agentxd") != NULL) {
+            netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
 				   NETSNMP_DS_AGENT_ROLE, SUB_AGENT);
         } else {
-            netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, 
+            netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
 				   NETSNMP_DS_AGENT_ROLE, MASTER_AGENT);
         }
     } else {
-        netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, 
+        netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
 			       NETSNMP_DS_AGENT_ROLE, agent_mode);
     }
 
-    for (cptr = argvrestart, i = 0; i < argc; i++) {
-        strcpy(cptr, argv[i]);
-        *(argvptr++) = cptr;
-        cptr += strlen(argv[i]) + 1;
-    }
-    *cptr = 0;
-    *argvptr = NULL;
-
-#ifdef BUFSIZ
-    setvbuf(stdout, NULL, _IOLBF, BUFSIZ);
-#endif
-    /*
-     * Initialize the world.  Detach from the shell.  Create initial user.  
-     */
-    if(!dont_fork) {
-        int quit = ! netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
-                                            NETSNMP_DS_AGENT_QUIT_IMMEDIATELY);
-        ret = netsnmp_daemonize(quit, snmp_stderrlog_status());
-        /*
-         * xxx-rks: do we care if fork fails? I think we should...
-         */
-        if(ret != 0)
-            Exit(1);                /*  Exit logs exit val for us  */
-    }
-
     SOCK_STARTUP;
     if (init_agent(app_name) != 0) {
         snmp_log(LOG_ERR, "Agent initialization failed\n");
@@ -931,7 +953,30 @@
         /*
          * Some error opening one of the specified agent transports.  
          */
-        Exit(1);                /*  Exit logs exit val for us  */
+        snmp_log(LOG_ERR, "Server Exiting with code 1\n");
+        exit(1);
+    }
+
+    /*
+     * Initialize the world.  Detach from the shell.  Create initial user.  
+     */
+    if(!dont_fork) {
+        int quit = ! netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
+                                            NETSNMP_DS_AGENT_QUIT_IMMEDIATELY);
+        ret = netsnmp_daemonize(quit,
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
+                                snmp_stderrlog_status()
+#else /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
+                                0
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
+            );
+        /*
+         * xxx-rks: do we care if fork fails? I think we should...
+         */
+        if(ret != 0) {
+            snmp_log(LOG_ERR, "Server Exiting with code 1\n");
+            exit(1);
+        }
     }
 
 #if HAVE_GETPID
@@ -966,11 +1011,14 @@
     }
 #endif
 
-#if HAVE_UNISTD_H
+#if defined(HAVE_UNISTD_H) && (defined(HAVE_CHOWN) || defined(HAVE_SETGID) || defined(HAVE_SETUID))
     {
-    const char *const persistent_dir = get_persistent_directory();
-    mkdirhier( persistent_dir, NETSNMP_AGENT_DIRECTORY_MODE, 0 );
+    const char     *persistent_dir;
+    int             uid, gid;
 
+    persistent_dir = get_persistent_directory();
+    mkdirhier( persistent_dir, NETSNMP_AGENT_DIRECTORY_MODE, 0 );
+   
     uid = netsnmp_ds_get_int(NETSNMP_DS_APPLICATION_ID, 
 			     NETSNMP_DS_AGENT_USERID);
     gid = netsnmp_ds_get_int(NETSNMP_DS_APPLICATION_ID, 
@@ -980,7 +1028,6 @@
     if ( uid != 0 || gid != 0 )
         chown( persistent_dir, uid, gid );
 #endif
-    }
 
 #ifdef HAVE_SETGID
     if ((gid = netsnmp_ds_get_int(NETSNMP_DS_APPLICATION_ID, 
@@ -1002,6 +1049,26 @@
 #ifdef HAVE_SETUID
     if ((uid = netsnmp_ds_get_int(NETSNMP_DS_APPLICATION_ID, 
 				  NETSNMP_DS_AGENT_USERID)) > 0) {
+#if HAVE_GETPWNAM && HAVE_PWD_H && HAVE_INITGROUPS
+        struct passwd *info;
+
+        /*
+         * Set supplementary groups before changing UID
+         *   (which probably involves giving up privileges)
+         */
+        info = getpwuid(uid);
+        if (info) {
+            DEBUGMSGTL(("snmpd/main", "Supplementary groups for %s.\n", info->pw_name));
+            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)) {
+                    exit(1);
+                }
+            }
+        }
+        endpwent();
+#endif
         DEBUGMSGTL(("snmpd/main", "Changing uid to %d.\n", uid));
         if (setuid(uid) == -1) {
             snmp_log_perror("setuid failed");
@@ -1012,6 +1079,7 @@
         }
     }
 #endif
+    }
 #endif
 
     /*
@@ -1061,9 +1129,12 @@
     agent_status = AGENT_STOPPED;
 #endif
 
+#ifdef USING_UTIL_FUNCS_RESTART_MODULE
     SNMP_FREE(argvrestartname);
     SNMP_FREE(argvrestart);
     SNMP_FREE(argvrestartp);
+#endif /* USING_UTIL_FUNCS_RESTART_MODULE */
+
     SOCK_CLEANUP;
     return 0;
 }                               /* End main() -- snmpd */
@@ -1111,7 +1182,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.
  */
@@ -1119,13 +1190,17 @@
 receive(void)
 {
     int             numfds;
-    fd_set          readfds, writefds, exceptfds;
+    netsnmp_large_fd_set readfds, writefds, exceptfds;
     struct timeval  timeout, *tvp = &timeout;
     int             count, block, i;
 #ifdef	USING_SMUX_MODULE
     int             sd;
 #endif                          /* USING_SMUX_MODULE */
 
+    netsnmp_large_fd_set_init(&readfds, FD_SETSIZE);
+    netsnmp_large_fd_set_init(&writefds, FD_SETSIZE);
+    netsnmp_large_fd_set_init(&exceptfds, FD_SETSIZE);
+
     /*
      * ignore early sighup during startup
      */
@@ -1167,18 +1242,18 @@
         tvp->tv_usec = 0;
 
         numfds = 0;
-        FD_ZERO(&readfds);
-        FD_ZERO(&writefds);
-        FD_ZERO(&exceptfds);
+        NETSNMP_LARGE_FD_ZERO(&readfds);
+        NETSNMP_LARGE_FD_ZERO(&writefds);
+        NETSNMP_LARGE_FD_ZERO(&exceptfds);
         block = 0;
-        snmp_select_info(&numfds, &readfds, tvp, &block);
+        snmp_select_info2(&numfds, &readfds, tvp, &block);
         if (block == 1) {
             tvp = NULL;         /* block without timeout */
 	}
 
 #ifdef	USING_SMUX_MODULE
         if (smux_listen_sd >= 0) {
-            FD_SET(smux_listen_sd, &readfds);
+            NETSNMP_LARGE_FD_SET(smux_listen_sd, &readfds);
             numfds =
                 smux_listen_sd >= numfds ? smux_listen_sd + 1 : numfds;
 
@@ -1186,28 +1261,34 @@
                 sd = smux_snmp_select_list_get_SD_from_List(i);
                 if (sd != 0)
                 {
-                   FD_SET(sd, &readfds);
+                   NETSNMP_LARGE_FD_SET(sd, &readfds);
                    numfds = sd >= numfds ? sd + 1 : numfds;
                 }
             }
         }
 #endif                          /* USING_SMUX_MODULE */
 
-        netsnmp_external_event_info(&numfds, &readfds, &writefds, &exceptfds);
+#ifndef NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER
+        netsnmp_external_event_info2(&numfds, &readfds, &writefds, &exceptfds);
+#endif /* NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER */
 
     reselect:
+#ifndef NETSNMP_FEATURE_REMOVE_REGISTER_SIGNAL
         for (i = 0; i < NUM_EXTERNAL_SIGS; i++) {
             if (external_signal_scheduled[i]) {
                 external_signal_scheduled[i]--;
                 external_signal_handler[i](i);
             }
         }
+#endif /* NETSNMP_FEATURE_REMOVE_REGISTER_SIGNAL */
 
         DEBUGMSGTL(("snmpd/select", "select( numfds=%d, ..., tvp=%p)\n",
                     numfds, tvp));
-        if(tvp)
-            DEBUGMSGTL(("timer", "tvp %ld.%ld\n", tvp->tv_sec, tvp->tv_usec));
-        count = select(numfds, &readfds, &writefds, &exceptfds, tvp);
+        if (tvp)
+            DEBUGMSGTL(("timer", "tvp %ld.%ld\n", (long) tvp->tv_sec,
+                        (long) tvp->tv_usec));
+        count = netsnmp_large_fd_set_select(numfds, &readfds, &writefds, &exceptfds,
+				     tvp);
         DEBUGMSGTL(("snmpd/select", "returned, count = %d\n", count));
 
         if (count > 0) {
@@ -1219,7 +1300,7 @@
             if (smux_listen_sd >= 0) {
                 for (i = 0; i < smux_snmp_select_list_get_length(); i++) {
                     sd = smux_snmp_select_list_get_SD_from_List(i);
-                    if (FD_ISSET(sd, &readfds)) {
+                    if (NETSNMP_LARGE_FD_ISSET(sd, &readfds)) {
                         if (smux_process(sd) < 0) {
                             smux_snmp_select_list_del(sd);
                         }
@@ -1228,7 +1309,7 @@
                 /*
                  * new connection 
                  */
-                if (FD_ISSET(smux_listen_sd, &readfds)) {
+                if (NETSNMP_LARGE_FD_ISSET(smux_listen_sd, &readfds)) {
                     if ((sd = smux_accept(smux_listen_sd)) >= 0) {
                         smux_snmp_select_list_add(sd);
                     }
@@ -1236,11 +1317,15 @@
             }
 
 #endif                          /* USING_SMUX_MODULE */
-            netsnmp_dispatch_external_events(&count, &readfds,
-                                           &writefds, &exceptfds);
+
+#ifndef NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER
+            netsnmp_dispatch_external_events2(&count, &readfds,
+                                              &writefds, &exceptfds);
+#endif /* NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER */
+
             /* If there are still events leftover, process them */
             if (count > 0) {
-              snmp_read(&readfds);
+              snmp_read2(&readfds);
             }
         } else
             switch (count) {
@@ -1268,6 +1353,11 @@
             }                   /* endif -- count>0 */
 
         /*
+         * see if persistent store needs to be saved
+         */
+        snmp_store_if_needed();
+
+        /*
          * run requested alarms 
          */
         run_alarms();
@@ -1276,6 +1366,10 @@
 
     }                           /* endwhile */
 
+    netsnmp_large_fd_set_cleanup(&readfds);
+    netsnmp_large_fd_set_cleanup(&writefds);
+    netsnmp_large_fd_set_cleanup(&exceptfds);
+
 #if defined(WIN32)
     join_stdin_waiter_thread();
 #endif
@@ -1366,6 +1460,10 @@
     int             nRunType = RUN_AS_CONSOLE;
     int             quiet = 0;
     
+#if 0
+    _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF /*| _CRTDBG_CHECK_ALWAYS_DF*/);
+#endif
+
     nRunType = ParseCmdLineForServiceOption(argc, argv, &quiet);
 
     switch (nRunType) {
diff --git a/agent/snmpd.h b/agent/snmpd.h
index 935c0e7..89bcd31 100644
--- a/agent/snmpd.h
+++ b/agent/snmpd.h
@@ -2,6 +2,10 @@
  * snmpd.h
  */
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #define MASTER_AGENT 0
 #define SUB_AGENT    1
 extern int      agent_role;
@@ -17,3 +21,7 @@
  * config file parsing routines 
  */
 void            agentBoots_conf(char *, char *);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/apps/Makefile.depend b/apps/Makefile.depend
index b9276e8..15cb176 100644
--- a/apps/Makefile.depend
+++ b/apps/Makefile.depend
@@ -1,62 +1,140 @@
 # 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-features.h
+./agentxtrap.lo: ../include/net-snmp/net-snmp-includes.h
+./agentxtrap.lo: ../include/net-snmp/definitions.h
+./agentxtrap.lo: ../include/net-snmp/types.h
+./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/snmpTCPDomain.h
+./agentxtrap.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./agentxtrap.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./agentxtrap.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./agentxtrap.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/snmptsm.h
+./agentxtrap.lo: ../include/net-snmp/library/snmpusm.h
+./agentxtrap.lo: ../include/net-snmp/agent/ds_agent.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
+./encode_keychange.lo: ../include/net-snmp/library/snmp_service.h
+./encode_keychange.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./encode_keychange.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./encode_keychange.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./encode_keychange.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./encode_keychange.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./encode_keychange.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./encode_keychange.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./encode_keychange.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./encode_keychange.lo: ../include/net-snmp/library/ucd_compat.h
+./encode_keychange.lo: ../include/net-snmp/library/mib.h
+./encode_keychange.lo: ../include/net-snmp/mib_api.h
+./encode_keychange.lo: ../include/net-snmp/library/parse.h
+./encode_keychange.lo: ../include/net-snmp/library/oid_stash.h
+./encode_keychange.lo: ../include/net-snmp/net-snmp-features.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmp_impl.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmp.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmp-tc.h
+./encode_keychange.lo: ../include/net-snmp/library/getopt.h
 ./encode_keychange.lo: ../include/net-snmp/utilities.h
-./encode_keychange.lo: ../include/net-snmp/library/snmp_client.h
 ./encode_keychange.lo: ../include/net-snmp/library/system.h
 ./encode_keychange.lo: ../include/net-snmp/library/tools.h
 ./encode_keychange.lo: ../include/net-snmp/library/int64.h
 ./encode_keychange.lo: ../include/net-snmp/library/mt_support.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmp_alarm.h
-./encode_keychange.lo: ../include/net-snmp/library/callback.h
 ./encode_keychange.lo: ../include/net-snmp/library/data_list.h
-./encode_keychange.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./encode_keychange.lo: ../include/net-snmp/library/container.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmp_assert.h
 ./encode_keychange.lo: ../include/net-snmp/version.h
-./encode_keychange.lo: ../include/net-snmp/session_api.h
-./encode_keychange.lo: ../include/net-snmp/library/snmp_transport.h
-./encode_keychange.lo: ../include/net-snmp/library/snmp_service.h
-./encode_keychange.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./encode_keychange.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./encode_keychange.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./encode_keychange.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./encode_keychange.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./encode_keychange.lo: ../include/net-snmp/pdu_api.h
-./encode_keychange.lo: ../include/net-snmp/mib_api.h
-./encode_keychange.lo: ../include/net-snmp/library/mib.h
-./encode_keychange.lo: ../include/net-snmp/library/parse.h
-./encode_keychange.lo: ../include/net-snmp/varbind_api.h
 ./encode_keychange.lo: ../include/net-snmp/config_api.h
 ./encode_keychange.lo: ../include/net-snmp/library/read_config.h
 ./encode_keychange.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -65,32 +143,52 @@
 ./encode_keychange.lo: ../include/net-snmp/library/lcd_time.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmp_secmod.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./encode_keychange.lo: ../include/net-snmp/library/snmptsm.h
 ./encode_keychange.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpbulkget.lo: ../include/net-snmp/net-snmp-config.h
-./snmpbulkget.lo: ../include/net-snmp/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 ../include/net-snmp/types.h
+./snmpbulkget.lo: ../include/net-snmp/utilities.h
+./snmpbulkget.lo: ../include/net-snmp/types.h
+./snmpbulkget.lo: ../include/net-snmp/library/oid.h
+./snmpbulkget.lo: ../include/net-snmp/library/types.h
 ./snmpbulkget.lo: ../include/net-snmp/definitions.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp_api.h
+./snmpbulkget.lo: ../include/net-snmp/varbind_api.h
+./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
+./snmpbulkget.lo: ../include/net-snmp/library/snmp_service.h
+./snmpbulkget.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpbulkget.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpbulkget.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpbulkget.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpbulkget.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpbulkget.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpbulkget.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpbulkget.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpbulkget.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpbulkget.lo: ../include/net-snmp/library/mib.h
+./snmpbulkget.lo: ../include/net-snmp/mib_api.h
+./snmpbulkget.lo: ../include/net-snmp/library/parse.h
+./snmpbulkget.lo: ../include/net-snmp/library/oid_stash.h
+./snmpbulkget.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpbulkget.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpbulkget.lo: ../include/net-snmp/library/system.h
 ./snmpbulkget.lo: ../include/net-snmp/library/tools.h
 ./snmpbulkget.lo: ../include/net-snmp/library/int64.h
 ./snmpbulkget.lo: ../include/net-snmp/library/mt_support.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpbulkget.lo: ../include/net-snmp/library/callback.h
 ./snmpbulkget.lo: ../include/net-snmp/library/data_list.h
-./snmpbulkget.lo: ../include/net-snmp/library/oid_stash.h
 ./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
@@ -98,29 +196,13 @@
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmpbulkget.lo: ../include/net-snmp/version.h
 ./snmpbulkget.lo: ../include/net-snmp/net-snmp-includes.h
-./snmpbulkget.lo: ../include/net-snmp/session_api.h
-./snmpbulkget.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpbulkget.lo: ../include/net-snmp/library/snmp_service.h
-./snmpbulkget.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpbulkget.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpbulkget.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpbulkget.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpbulkget.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpbulkget.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmpbulkget.lo: ../include/net-snmp/library/mib.h
-./snmpbulkget.lo: ../include/net-snmp/library/parse.h
-./snmpbulkget.lo: ../include/net-snmp/varbind_api.h
+./snmpbulkget.lo: ../include/net-snmp/library/getopt.h
 ./snmpbulkget.lo: ../include/net-snmp/config_api.h
 ./snmpbulkget.lo: ../include/net-snmp/library/read_config.h
 ./snmpbulkget.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -129,64 +211,66 @@
 ./snmpbulkget.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpbulkget.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpbulkget.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpbulkwalk.lo: ../include/net-snmp/net-snmp-config.h
-./snmpbulkwalk.lo: ../include/net-snmp/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
+./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_service.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/mib.h
+./snmpbulkwalk.lo: ../include/net-snmp/mib_api.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/parse.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/oid_stash.h
+./snmpbulkwalk.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/getopt.h
 ./snmpbulkwalk.lo: ../include/net-snmp/utilities.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/system.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/tools.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/int64.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/mt_support.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/callback.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/data_list.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpbulkwalk.lo: ../include/net-snmp/library/container.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmpbulkwalk.lo: ../include/net-snmp/version.h
-./snmpbulkwalk.lo: ../include/net-snmp/session_api.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_service.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpbulkwalk.lo: ../include/net-snmp/pdu_api.h
-./snmpbulkwalk.lo: ../include/net-snmp/mib_api.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/mib.h
-./snmpbulkwalk.lo: ../include/net-snmp/library/parse.h
-./snmpbulkwalk.lo: ../include/net-snmp/varbind_api.h
 ./snmpbulkwalk.lo: ../include/net-snmp/config_api.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/read_config.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -195,62 +279,65 @@
 ./snmpbulkwalk.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpbulkwalk.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpbulkwalk.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpdelta.lo: ../include/net-snmp/net-snmp-config.h
-./snmpdelta.lo: ../include/net-snmp/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
+./snmpdelta.lo: ../include/net-snmp/library/snmp_service.h
+./snmpdelta.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpdelta.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpdelta.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpdelta.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpdelta.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpdelta.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpdelta.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpdelta.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpdelta.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpdelta.lo: ../include/net-snmp/library/mib.h
+./snmpdelta.lo: ../include/net-snmp/mib_api.h
+./snmpdelta.lo: ../include/net-snmp/library/parse.h
+./snmpdelta.lo: ../include/net-snmp/library/oid_stash.h
+./snmpdelta.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmp.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpdelta.lo: ../include/net-snmp/library/getopt.h
 ./snmpdelta.lo: ../include/net-snmp/utilities.h
-./snmpdelta.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpdelta.lo: ../include/net-snmp/library/system.h
 ./snmpdelta.lo: ../include/net-snmp/library/tools.h
 ./snmpdelta.lo: ../include/net-snmp/library/int64.h
 ./snmpdelta.lo: ../include/net-snmp/library/mt_support.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpdelta.lo: ../include/net-snmp/library/callback.h
 ./snmpdelta.lo: ../include/net-snmp/library/data_list.h
-./snmpdelta.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpdelta.lo: ../include/net-snmp/library/container.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmpdelta.lo: ../include/net-snmp/version.h
-./snmpdelta.lo: ../include/net-snmp/session_api.h
-./snmpdelta.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpdelta.lo: ../include/net-snmp/library/snmp_service.h
-./snmpdelta.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpdelta.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpdelta.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpdelta.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpdelta.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpdelta.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmpdelta.lo: ../include/net-snmp/library/mib.h
-./snmpdelta.lo: ../include/net-snmp/library/parse.h
-./snmpdelta.lo: ../include/net-snmp/varbind_api.h
 ./snmpdelta.lo: ../include/net-snmp/config_api.h
 ./snmpdelta.lo: ../include/net-snmp/library/read_config.h
 ./snmpdelta.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -259,61 +346,62 @@
 ./snmpdelta.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpdelta.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpdelta.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpdf.lo: ../include/net-snmp/net-snmp-config.h
-./snmpdf.lo: ../include/net-snmp/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/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/library/asn1.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
+./snmpdf.lo: ../include/net-snmp/library/snmp_service.h
+./snmpdf.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpdf.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpdf.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpdf.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpdf.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpdf.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpdf.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpdf.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpdf.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpdf.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./snmpdf.lo: ../include/net-snmp/library/parse.h
+./snmpdf.lo: ../include/net-snmp/library/oid_stash.h
+./snmpdf.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpdf.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpdf.lo: ../include/net-snmp/library/snmp.h
 ./snmpdf.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpdf.lo: ../include/net-snmp/library/getopt.h
 ./snmpdf.lo: ../include/net-snmp/utilities.h
-./snmpdf.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpdf.lo: ../include/net-snmp/library/system.h
 ./snmpdf.lo: ../include/net-snmp/library/tools.h
 ./snmpdf.lo: ../include/net-snmp/library/int64.h
 ./snmpdf.lo: ../include/net-snmp/library/mt_support.h
 ./snmpdf.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpdf.lo: ../include/net-snmp/library/callback.h
 ./snmpdf.lo: ../include/net-snmp/library/data_list.h
-./snmpdf.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpdf.lo: ../include/net-snmp/library/container.h
 ./snmpdf.lo: ../include/net-snmp/library/snmp_assert.h
-./snmpdf.lo: ../include/net-snmp/version.h ../include/net-snmp/session_api.h
-./snmpdf.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpdf.lo: ../include/net-snmp/library/snmp_service.h
-./snmpdf.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpdf.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpdf.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpdf.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpdf.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpdf.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmpdf.lo: ../include/net-snmp/library/mib.h
-./snmpdf.lo: ../include/net-snmp/library/parse.h
-./snmpdf.lo: ../include/net-snmp/varbind_api.h
-./snmpdf.lo: ../include/net-snmp/config_api.h
+./snmpdf.lo: ../include/net-snmp/version.h ../include/net-snmp/config_api.h
 ./snmpdf.lo: ../include/net-snmp/library/read_config.h
 ./snmpdf.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -322,33 +410,51 @@
 ./snmpdf.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpdf.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpdf.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpdf.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpdf.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpget.lo: ../include/net-snmp/net-snmp-config.h
-./snmpget.lo: ../include/net-snmp/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
 ./snmpget.lo: ../include/net-snmp/types.h
+./snmpget.lo: ../include/net-snmp/library/oid.h
+./snmpget.lo: ../include/net-snmp/library/types.h
 ./snmpget.lo: ../include/net-snmp/definitions.h
 ./snmpget.lo: ../include/net-snmp/library/snmp_api.h
+./snmpget.lo: ../include/net-snmp/varbind_api.h
+./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
+./snmpget.lo: ../include/net-snmp/library/snmp_service.h
+./snmpget.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpget.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpget.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpget.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpget.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpget.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpget.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpget.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpget.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpget.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./snmpget.lo: ../include/net-snmp/library/parse.h
+./snmpget.lo: ../include/net-snmp/library/oid_stash.h
+./snmpget.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpget.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpget.lo: ../include/net-snmp/library/snmp.h
 ./snmpget.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpget.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpget.lo: ../include/net-snmp/library/system.h
 ./snmpget.lo: ../include/net-snmp/library/tools.h
 ./snmpget.lo: ../include/net-snmp/library/int64.h
 ./snmpget.lo: ../include/net-snmp/library/mt_support.h
 ./snmpget.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpget.lo: ../include/net-snmp/library/callback.h
 ./snmpget.lo: ../include/net-snmp/library/data_list.h
-./snmpget.lo: ../include/net-snmp/library/oid_stash.h
 ./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
@@ -356,29 +462,13 @@
 ./snmpget.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmpget.lo: ../include/net-snmp/version.h
 ./snmpget.lo: ../include/net-snmp/net-snmp-includes.h
-./snmpget.lo: ../include/net-snmp/session_api.h
-./snmpget.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpget.lo: ../include/net-snmp/library/snmp_service.h
-./snmpget.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpget.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpget.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpget.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpget.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpget.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmpget.lo: ../include/net-snmp/library/mib.h
-./snmpget.lo: ../include/net-snmp/library/parse.h
-./snmpget.lo: ../include/net-snmp/varbind_api.h
+./snmpget.lo: ../include/net-snmp/library/getopt.h
 ./snmpget.lo: ../include/net-snmp/config_api.h
 ./snmpget.lo: ../include/net-snmp/library/read_config.h
 ./snmpget.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -387,63 +477,66 @@
 ./snmpget.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpget.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpget.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpget.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpget.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpgetnext.lo: ../include/net-snmp/net-snmp-config.h
-./snmpgetnext.lo: ../include/net-snmp/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
+./snmpgetnext.lo: ../include/net-snmp/library/snmp_service.h
+./snmpgetnext.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpgetnext.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpgetnext.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpgetnext.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpgetnext.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpgetnext.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpgetnext.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpgetnext.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpgetnext.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpgetnext.lo: ../include/net-snmp/library/mib.h
+./snmpgetnext.lo: ../include/net-snmp/mib_api.h
+./snmpgetnext.lo: ../include/net-snmp/library/parse.h
+./snmpgetnext.lo: ../include/net-snmp/library/oid_stash.h
+./snmpgetnext.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpgetnext.lo: ../include/net-snmp/library/getopt.h
 ./snmpgetnext.lo: ../include/net-snmp/utilities.h
-./snmpgetnext.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpgetnext.lo: ../include/net-snmp/library/system.h
 ./snmpgetnext.lo: ../include/net-snmp/library/tools.h
 ./snmpgetnext.lo: ../include/net-snmp/library/int64.h
 ./snmpgetnext.lo: ../include/net-snmp/library/mt_support.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpgetnext.lo: ../include/net-snmp/library/callback.h
 ./snmpgetnext.lo: ../include/net-snmp/library/data_list.h
-./snmpgetnext.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpgetnext.lo: ../include/net-snmp/library/container.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmpgetnext.lo: ../include/net-snmp/version.h
-./snmpgetnext.lo: ../include/net-snmp/session_api.h
-./snmpgetnext.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpgetnext.lo: ../include/net-snmp/library/snmp_service.h
-./snmpgetnext.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpgetnext.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpgetnext.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpgetnext.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpgetnext.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpgetnext.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmpgetnext.lo: ../include/net-snmp/library/mib.h
-./snmpgetnext.lo: ../include/net-snmp/library/parse.h
-./snmpgetnext.lo: ../include/net-snmp/varbind_api.h
 ./snmpgetnext.lo: ../include/net-snmp/config_api.h
 ./snmpgetnext.lo: ../include/net-snmp/library/read_config.h
 ./snmpgetnext.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -452,61 +545,63 @@
 ./snmpgetnext.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpgetnext.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpgetnext.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpset.lo: ../include/net-snmp/net-snmp-config.h
-./snmpset.lo: ../include/net-snmp/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/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
+./snmpset.lo: ../include/net-snmp/library/snmp_service.h
+./snmpset.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpset.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpset.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpset.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpset.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpset.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpset.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpset.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpset.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpset.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./snmpset.lo: ../include/net-snmp/library/parse.h
+./snmpset.lo: ../include/net-snmp/library/oid_stash.h
+./snmpset.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpset.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpset.lo: ../include/net-snmp/library/snmp.h
 ./snmpset.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpset.lo: ../include/net-snmp/library/getopt.h
 ./snmpset.lo: ../include/net-snmp/utilities.h
-./snmpset.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpset.lo: ../include/net-snmp/library/system.h
 ./snmpset.lo: ../include/net-snmp/library/tools.h
 ./snmpset.lo: ../include/net-snmp/library/int64.h
 ./snmpset.lo: ../include/net-snmp/library/mt_support.h
 ./snmpset.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpset.lo: ../include/net-snmp/library/callback.h
 ./snmpset.lo: ../include/net-snmp/library/data_list.h
-./snmpset.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpset.lo: ../include/net-snmp/library/container.h
 ./snmpset.lo: ../include/net-snmp/library/snmp_assert.h
-./snmpset.lo: ../include/net-snmp/version.h ../include/net-snmp/session_api.h
-./snmpset.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpset.lo: ../include/net-snmp/library/snmp_service.h
-./snmpset.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpset.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpset.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpset.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpset.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpset.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmpset.lo: ../include/net-snmp/library/mib.h
-./snmpset.lo: ../include/net-snmp/library/parse.h
-./snmpset.lo: ../include/net-snmp/varbind_api.h
-./snmpset.lo: ../include/net-snmp/config_api.h
+./snmpset.lo: ../include/net-snmp/version.h ../include/net-snmp/config_api.h
 ./snmpset.lo: ../include/net-snmp/library/read_config.h
 ./snmpset.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -515,33 +610,51 @@
 ./snmpset.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpset.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpset.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpset.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpset.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpstatus.lo: ../include/net-snmp/net-snmp-config.h
-./snmpstatus.lo: ../include/net-snmp/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
-./snmpstatus.lo: ../include/net-snmp/types.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
+./snmpstatus.lo: ../include/net-snmp/varbind_api.h
+./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
+./snmpstatus.lo: ../include/net-snmp/library/snmp_service.h
+./snmpstatus.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpstatus.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpstatus.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpstatus.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpstatus.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpstatus.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpstatus.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpstatus.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpstatus.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpstatus.lo: ../include/net-snmp/library/mib.h
+./snmpstatus.lo: ../include/net-snmp/mib_api.h
+./snmpstatus.lo: ../include/net-snmp/library/parse.h
+./snmpstatus.lo: ../include/net-snmp/library/oid_stash.h
+./snmpstatus.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmp.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpstatus.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpstatus.lo: ../include/net-snmp/library/system.h
 ./snmpstatus.lo: ../include/net-snmp/library/tools.h
 ./snmpstatus.lo: ../include/net-snmp/library/int64.h
 ./snmpstatus.lo: ../include/net-snmp/library/mt_support.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpstatus.lo: ../include/net-snmp/library/callback.h
 ./snmpstatus.lo: ../include/net-snmp/library/data_list.h
-./snmpstatus.lo: ../include/net-snmp/library/oid_stash.h
 ./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
@@ -549,29 +662,13 @@
 ./snmpstatus.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmpstatus.lo: ../include/net-snmp/version.h
 ./snmpstatus.lo: ../include/net-snmp/net-snmp-includes.h
-./snmpstatus.lo: ../include/net-snmp/session_api.h
-./snmpstatus.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpstatus.lo: ../include/net-snmp/library/snmp_service.h
-./snmpstatus.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpstatus.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpstatus.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpstatus.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpstatus.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpstatus.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmpstatus.lo: ../include/net-snmp/library/mib.h
-./snmpstatus.lo: ../include/net-snmp/library/parse.h
-./snmpstatus.lo: ../include/net-snmp/varbind_api.h
+./snmpstatus.lo: ../include/net-snmp/library/getopt.h
 ./snmpstatus.lo: ../include/net-snmp/config_api.h
 ./snmpstatus.lo: ../include/net-snmp/library/read_config.h
 ./snmpstatus.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -580,62 +677,65 @@
 ./snmpstatus.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpstatus.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpstatus.lo: ../include/net-snmp/library/snmpusm.h
 ./snmptable.lo: ../include/net-snmp/net-snmp-config.h
-./snmptable.lo: ../include/net-snmp/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
+./snmptable.lo: ../include/net-snmp/library/snmp_service.h
+./snmptable.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmptable.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmptable.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptable.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmptable.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmptable.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmptable.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmptable.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmptable.lo: ../include/net-snmp/library/ucd_compat.h
+./snmptable.lo: ../include/net-snmp/library/mib.h
+./snmptable.lo: ../include/net-snmp/mib_api.h
+./snmptable.lo: ../include/net-snmp/library/parse.h
+./snmptable.lo: ../include/net-snmp/library/oid_stash.h
+./snmptable.lo: ../include/net-snmp/net-snmp-features.h
 ./snmptable.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmptable.lo: ../include/net-snmp/library/snmp.h
 ./snmptable.lo: ../include/net-snmp/library/snmp-tc.h
+./snmptable.lo: ../include/net-snmp/library/getopt.h
 ./snmptable.lo: ../include/net-snmp/utilities.h
-./snmptable.lo: ../include/net-snmp/library/snmp_client.h
 ./snmptable.lo: ../include/net-snmp/library/system.h
 ./snmptable.lo: ../include/net-snmp/library/tools.h
 ./snmptable.lo: ../include/net-snmp/library/int64.h
 ./snmptable.lo: ../include/net-snmp/library/mt_support.h
 ./snmptable.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmptable.lo: ../include/net-snmp/library/callback.h
 ./snmptable.lo: ../include/net-snmp/library/data_list.h
-./snmptable.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmptable.lo: ../include/net-snmp/library/container.h
 ./snmptable.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmptable.lo: ../include/net-snmp/version.h
-./snmptable.lo: ../include/net-snmp/session_api.h
-./snmptable.lo: ../include/net-snmp/library/snmp_transport.h
-./snmptable.lo: ../include/net-snmp/library/snmp_service.h
-./snmptable.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmptable.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptable.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptable.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmptable.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmptable.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmptable.lo: ../include/net-snmp/library/mib.h
-./snmptable.lo: ../include/net-snmp/library/parse.h
-./snmptable.lo: ../include/net-snmp/varbind_api.h
 ./snmptable.lo: ../include/net-snmp/config_api.h
 ./snmptable.lo: ../include/net-snmp/library/read_config.h
 ./snmptable.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -644,62 +744,64 @@
 ./snmptable.lo: ../include/net-snmp/library/lcd_time.h
 ./snmptable.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmptable.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmptable.lo: ../include/net-snmp/library/snmptsm.h
 ./snmptable.lo: ../include/net-snmp/library/snmpusm.h
 ./snmptest.lo: ../include/net-snmp/net-snmp-config.h
-./snmptest.lo: ../include/net-snmp/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/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
+./snmptest.lo: ../include/net-snmp/library/snmp_service.h
+./snmptest.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmptest.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmptest.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptest.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmptest.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmptest.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmptest.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmptest.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmptest.lo: ../include/net-snmp/library/ucd_compat.h
+./snmptest.lo: ../include/net-snmp/library/mib.h
+./snmptest.lo: ../include/net-snmp/mib_api.h
+./snmptest.lo: ../include/net-snmp/library/parse.h
+./snmptest.lo: ../include/net-snmp/library/oid_stash.h
+./snmptest.lo: ../include/net-snmp/net-snmp-features.h
 ./snmptest.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmptest.lo: ../include/net-snmp/library/snmp.h
 ./snmptest.lo: ../include/net-snmp/library/snmp-tc.h
+./snmptest.lo: ../include/net-snmp/library/getopt.h
 ./snmptest.lo: ../include/net-snmp/utilities.h
-./snmptest.lo: ../include/net-snmp/library/snmp_client.h
 ./snmptest.lo: ../include/net-snmp/library/system.h
 ./snmptest.lo: ../include/net-snmp/library/tools.h
 ./snmptest.lo: ../include/net-snmp/library/int64.h
 ./snmptest.lo: ../include/net-snmp/library/mt_support.h
 ./snmptest.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmptest.lo: ../include/net-snmp/library/callback.h
 ./snmptest.lo: ../include/net-snmp/library/data_list.h
-./snmptest.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmptest.lo: ../include/net-snmp/library/container.h
 ./snmptest.lo: ../include/net-snmp/library/snmp_assert.h
-./snmptest.lo: ../include/net-snmp/version.h
-./snmptest.lo: ../include/net-snmp/session_api.h
-./snmptest.lo: ../include/net-snmp/library/snmp_transport.h
-./snmptest.lo: ../include/net-snmp/library/snmp_service.h
-./snmptest.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmptest.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptest.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptest.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmptest.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmptest.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmptest.lo: ../include/net-snmp/library/mib.h
-./snmptest.lo: ../include/net-snmp/library/parse.h
-./snmptest.lo: ../include/net-snmp/varbind_api.h
-./snmptest.lo: ../include/net-snmp/config_api.h
+./snmptest.lo: ../include/net-snmp/version.h ../include/net-snmp/config_api.h
 ./snmptest.lo: ../include/net-snmp/library/read_config.h
 ./snmptest.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -708,33 +810,160 @@
 ./snmptest.lo: ../include/net-snmp/library/lcd_time.h
 ./snmptest.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmptest.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmptest.lo: ../include/net-snmp/library/snmptsm.h
 ./snmptest.lo: ../include/net-snmp/library/snmpusm.h
+./snmptls.lo: ../include/net-snmp/net-snmp-config.h
+./snmptls.lo: ../include/net-snmp/net-snmp-features.h
+./snmptls.lo: ../include/net-snmp/net-snmp-includes.h
+./snmptls.lo: ../include/net-snmp/definitions.h
+./snmptls.lo: ../include/net-snmp/types.h
+./snmptls.lo: ../include/net-snmp/library/oid.h
+./snmptls.lo: ../include/net-snmp/library/types.h
+./snmptls.lo: ../include/net-snmp/library/snmp_api.h
+./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/snmpTCPDomain.h
+./snmptls.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmptls.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmptls.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmptls.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/snmptsm.h
+./snmptls.lo: ../include/net-snmp/library/snmpusm.h
+./snmptls.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
+./snmptls.lo: ../include/net-snmp/agent/mib_module_config.h
+./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
+./snmptranslate.lo: ../include/net-snmp/varbind_api.h
+./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
+./snmptranslate.lo: ../include/net-snmp/library/snmp_service.h
+./snmptranslate.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmptranslate.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmptranslate.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptranslate.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmptranslate.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmptranslate.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmptranslate.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmptranslate.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmptranslate.lo: ../include/net-snmp/library/ucd_compat.h
+./snmptranslate.lo: ../include/net-snmp/library/mib.h
+./snmptranslate.lo: ../include/net-snmp/mib_api.h
+./snmptranslate.lo: ../include/net-snmp/library/parse.h
+./snmptranslate.lo: ../include/net-snmp/library/oid_stash.h
+./snmptranslate.lo: ../include/net-snmp/net-snmp-features.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmp.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmp-tc.h
-./snmptranslate.lo: ../include/net-snmp/library/snmp_client.h
 ./snmptranslate.lo: ../include/net-snmp/library/system.h
 ./snmptranslate.lo: ../include/net-snmp/library/tools.h
 ./snmptranslate.lo: ../include/net-snmp/library/int64.h
 ./snmptranslate.lo: ../include/net-snmp/library/mt_support.h
 ./snmptranslate.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmptranslate.lo: ../include/net-snmp/library/callback.h
 ./snmptranslate.lo: ../include/net-snmp/library/data_list.h
-./snmptranslate.lo: ../include/net-snmp/library/oid_stash.h
 ./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
@@ -747,67 +976,63 @@
 ./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
-./snmptranslate.lo: ../include/net-snmp/mib_api.h
-./snmptranslate.lo: ../include/net-snmp/library/mib.h
-./snmptranslate.lo: ../include/net-snmp/library/parse.h
-./snmptranslate.lo: ../include/net-snmp/library/ucd_compat.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
+./snmptrap.lo: ../include/net-snmp/library/snmp_service.h
+./snmptrap.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmptrap.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmptrap.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptrap.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmptrap.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmptrap.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmptrap.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmptrap.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmptrap.lo: ../include/net-snmp/library/ucd_compat.h
+./snmptrap.lo: ../include/net-snmp/library/mib.h
+./snmptrap.lo: ../include/net-snmp/mib_api.h
+./snmptrap.lo: ../include/net-snmp/library/parse.h
+./snmptrap.lo: ../include/net-snmp/library/oid_stash.h
+./snmptrap.lo: ../include/net-snmp/net-snmp-features.h
 ./snmptrap.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmptrap.lo: ../include/net-snmp/library/snmp.h
 ./snmptrap.lo: ../include/net-snmp/library/snmp-tc.h
+./snmptrap.lo: ../include/net-snmp/library/getopt.h
 ./snmptrap.lo: ../include/net-snmp/utilities.h
-./snmptrap.lo: ../include/net-snmp/library/snmp_client.h
 ./snmptrap.lo: ../include/net-snmp/library/system.h
 ./snmptrap.lo: ../include/net-snmp/library/tools.h
 ./snmptrap.lo: ../include/net-snmp/library/int64.h
 ./snmptrap.lo: ../include/net-snmp/library/mt_support.h
 ./snmptrap.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmptrap.lo: ../include/net-snmp/library/callback.h
 ./snmptrap.lo: ../include/net-snmp/library/data_list.h
-./snmptrap.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmptrap.lo: ../include/net-snmp/library/container.h
 ./snmptrap.lo: ../include/net-snmp/library/snmp_assert.h
-./snmptrap.lo: ../include/net-snmp/version.h
-./snmptrap.lo: ../include/net-snmp/session_api.h
-./snmptrap.lo: ../include/net-snmp/library/snmp_transport.h
-./snmptrap.lo: ../include/net-snmp/library/snmp_service.h
-./snmptrap.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmptrap.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptrap.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptrap.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmptrap.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmptrap.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmptrap.lo: ../include/net-snmp/library/mib.h
-./snmptrap.lo: ../include/net-snmp/library/parse.h
-./snmptrap.lo: ../include/net-snmp/varbind_api.h
-./snmptrap.lo: ../include/net-snmp/config_api.h
+./snmptrap.lo: ../include/net-snmp/version.h ../include/net-snmp/config_api.h
 ./snmptrap.lo: ../include/net-snmp/library/read_config.h
 ./snmptrap.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -816,62 +1041,138 @@
 ./snmptrap.lo: ../include/net-snmp/library/lcd_time.h
 ./snmptrap.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmptrap.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmptrap.lo: ../include/net-snmp/library/snmptsm.h
 ./snmptrap.lo: ../include/net-snmp/library/snmpusm.h
+./snmptrapd_auth.lo: ../include/net-snmp/net-snmp-config.h
+./snmptrapd_auth.lo: ../include/net-snmp/net-snmp-includes.h
+./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
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_service.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/ucd_compat.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/mib.h
+./snmptrapd_auth.lo: ../include/net-snmp/mib_api.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/parse.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/oid_stash.h
+./snmptrapd_auth.lo: ../include/net-snmp/net-snmp-features.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_impl.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmp.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmp-tc.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/getopt.h
+./snmptrapd_auth.lo: ../include/net-snmp/utilities.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/system.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/tools.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/int64.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/mt_support.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/data_list.h
+./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/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
+./snmptrapd_auth.lo: ../include/net-snmp/library/container.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_assert.h
+./snmptrapd_auth.lo: ../include/net-snmp/version.h
+./snmptrapd_auth.lo: ../include/net-snmp/config_api.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/read_config.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmpv3.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/transform_oids.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/keytools.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/scapi.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/lcd_time.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_secmod.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmptsm.h
+./snmptrapd_auth.lo: ../include/net-snmp/library/snmpusm.h
+./snmptrapd_auth.lo: snmptrapd_handlers.h snmptrapd_auth.h snmptrapd_ds.h
+./snmptrapd_auth.lo: ../include/net-snmp/agent/agent_module_config.h
+./snmptrapd_auth.lo: ../include/net-snmp/agent/mib_module_config.h
+./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
+./snmptrapd.lo: ../include/net-snmp/library/snmp_service.h
+./snmptrapd.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmptrapd.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmptrapd.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptrapd.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmptrapd.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmptrapd.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmptrapd.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmptrapd.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmptrapd.lo: ../include/net-snmp/library/ucd_compat.h
+./snmptrapd.lo: ../include/net-snmp/library/mib.h
+./snmptrapd.lo: ../include/net-snmp/mib_api.h
+./snmptrapd.lo: ../include/net-snmp/library/parse.h
+./snmptrapd.lo: ../include/net-snmp/library/oid_stash.h
+./snmptrapd.lo: ../include/net-snmp/net-snmp-features.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmp.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmp-tc.h
+./snmptrapd.lo: ../include/net-snmp/library/getopt.h
 ./snmptrapd.lo: ../include/net-snmp/utilities.h
-./snmptrapd.lo: ../include/net-snmp/library/snmp_client.h
 ./snmptrapd.lo: ../include/net-snmp/library/system.h
 ./snmptrapd.lo: ../include/net-snmp/library/tools.h
 ./snmptrapd.lo: ../include/net-snmp/library/int64.h
 ./snmptrapd.lo: ../include/net-snmp/library/mt_support.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmptrapd.lo: ../include/net-snmp/library/callback.h
 ./snmptrapd.lo: ../include/net-snmp/library/data_list.h
-./snmptrapd.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmptrapd.lo: ../include/net-snmp/library/container.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmptrapd.lo: ../include/net-snmp/version.h
-./snmptrapd.lo: ../include/net-snmp/session_api.h
-./snmptrapd.lo: ../include/net-snmp/library/snmp_transport.h
-./snmptrapd.lo: ../include/net-snmp/library/snmp_service.h
-./snmptrapd.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmptrapd.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptrapd.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptrapd.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmptrapd.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmptrapd.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmptrapd.lo: ../include/net-snmp/library/mib.h
-./snmptrapd.lo: ../include/net-snmp/library/parse.h
-./snmptrapd.lo: ../include/net-snmp/varbind_api.h
 ./snmptrapd.lo: ../include/net-snmp/config_api.h
 ./snmptrapd.lo: ../include/net-snmp/library/read_config.h
 ./snmptrapd.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -880,6 +1181,7 @@
 ./snmptrapd.lo: ../include/net-snmp/library/lcd_time.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmptrapd.lo: ../include/net-snmp/library/snmptsm.h
 ./snmptrapd.lo: ../include/net-snmp/library/snmpusm.h
 ./snmptrapd.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmptrapd.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -916,91 +1218,45 @@
 ./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_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/snmp_api.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/asn1.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_impl.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmp.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmp-tc.h
-./snmptrapd_auth.lo: ../include/net-snmp/utilities.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_client.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/system.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/tools.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/int64.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/mt_support.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/callback.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/data_list.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/oid_stash.h
-./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
-./snmptrapd_auth.lo: ../include/net-snmp/library/container.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_assert.h
-./snmptrapd_auth.lo: ../include/net-snmp/version.h
-./snmptrapd_auth.lo: ../include/net-snmp/session_api.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_transport.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_service.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmptrapd_auth.lo: ../include/net-snmp/pdu_api.h
-./snmptrapd_auth.lo: ../include/net-snmp/mib_api.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/mib.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/parse.h
-./snmptrapd_auth.lo: ../include/net-snmp/varbind_api.h
-./snmptrapd_auth.lo: ../include/net-snmp/config_api.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/read_config.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/default_store.h
-./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
-./snmptrapd_auth.lo: ../include/net-snmp/library/keytools.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/scapi.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/lcd_time.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmp_secmod.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmpv3-security-includes.h
-./snmptrapd_auth.lo: ../include/net-snmp/library/snmpusm.h
-./snmptrapd_auth.lo: snmptrapd_handlers.h snmptrapd_auth.h snmptrapd_ds.h
-./snmptrapd_auth.lo: ../include/net-snmp/agent/agent_module_config.h
-./snmptrapd_auth.lo: ../include/net-snmp/agent/mib_module_config.h
-./snmptrapd_auth.lo: ../agent/mibgroup/mibII/vacm_conf.h
-./snmptrapd_auth.lo: ../include/net-snmp/agent/agent_trap.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/net-snmp-features.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/config_api.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/types.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/oid.h
+./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
+./snmptrapd_handlers.lo: ../include/net-snmp/varbind_api.h
+./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
+./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_service.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/ucd_compat.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/mib.h
+./snmptrapd_handlers.lo: ../include/net-snmp/mib_api.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/parse.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/oid_stash.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1009,16 +1265,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_client.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/mib_api.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/mib.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/parse.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/callback.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/oid_stash.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/ucd_compat.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
@@ -1036,18 +1282,7 @@
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/version.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/net-snmp-includes.h
-./snmptrapd_handlers.lo: ../include/net-snmp/session_api.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_transport.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_service.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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/pdu_api.h
-./snmptrapd_handlers.lo: ../include/net-snmp/varbind_api.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/getopt.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/snmpv3_api.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpv3.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/transform_oids.h
@@ -1056,6 +1291,7 @@
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/lcd_time.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmptrapd_handlers.lo: ../include/net-snmp/library/snmptsm.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/library/snmpusm.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/agent/net-snmp-agent-includes.h
 ./snmptrapd_handlers.lo: ../include/net-snmp/agent/mib_module_config.h
@@ -1093,67 +1329,69 @@
 ./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
+./snmptrapd_log.lo: ../include/net-snmp/library/snmp_service.h
+./snmptrapd_log.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmptrapd_log.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmptrapd_log.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptrapd_log.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmptrapd_log.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmptrapd_log.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmptrapd_log.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmptrapd_log.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmptrapd_log.lo: ../include/net-snmp/library/ucd_compat.h
+./snmptrapd_log.lo: ../include/net-snmp/library/mib.h
+./snmptrapd_log.lo: ../include/net-snmp/mib_api.h
+./snmptrapd_log.lo: ../include/net-snmp/library/parse.h
+./snmptrapd_log.lo: ../include/net-snmp/library/oid_stash.h
+./snmptrapd_log.lo: ../include/net-snmp/net-snmp-features.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp-tc.h
+./snmptrapd_log.lo: ../include/net-snmp/library/getopt.h
 ./snmptrapd_log.lo: ../include/net-snmp/utilities.h
-./snmptrapd_log.lo: ../include/net-snmp/library/snmp_client.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/system.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/tools.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/int64.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/mt_support.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmptrapd_log.lo: ../include/net-snmp/library/callback.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/data_list.h
-./snmptrapd_log.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmptrapd_log.lo: ../include/net-snmp/library/container.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmptrapd_log.lo: ../include/net-snmp/version.h
-./snmptrapd_log.lo: ../include/net-snmp/session_api.h
-./snmptrapd_log.lo: ../include/net-snmp/library/snmp_transport.h
-./snmptrapd_log.lo: ../include/net-snmp/library/snmp_service.h
-./snmptrapd_log.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmptrapd_log.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmptrapd_log.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmptrapd_log.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmptrapd_log.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmptrapd_log.lo: ../include/net-snmp/pdu_api.h
-./snmptrapd_log.lo: ../include/net-snmp/mib_api.h
-./snmptrapd_log.lo: ../include/net-snmp/library/mib.h
-./snmptrapd_log.lo: ../include/net-snmp/library/parse.h
-./snmptrapd_log.lo: ../include/net-snmp/varbind_api.h
 ./snmptrapd_log.lo: ../include/net-snmp/config_api.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/read_config.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -1162,62 +1400,66 @@
 ./snmptrapd_log.lo: ../include/net-snmp/library/lcd_time.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmptrapd_log.lo: ../include/net-snmp/library/snmptsm.h
 ./snmptrapd_log.lo: ../include/net-snmp/library/snmpusm.h snmptrapd_log.h
 ./snmptrapd_log.lo: snmptrapd_ds.h
+./snmptrapd_sql.lo: ../include/net-snmp/net-snmp-config.h
+./snmptrapd_sql.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpusm.lo: ../include/net-snmp/net-snmp-config.h
-./snmpusm.lo: ../include/net-snmp/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/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
+./snmpusm.lo: ../include/net-snmp/library/snmp_service.h
+./snmpusm.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpusm.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpusm.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./snmpusm.lo: ../include/net-snmp/library/parse.h
+./snmpusm.lo: ../include/net-snmp/library/oid_stash.h
+./snmpusm.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpusm.lo: ../include/net-snmp/library/getopt.h
 ./snmpusm.lo: ../include/net-snmp/utilities.h
-./snmpusm.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpusm.lo: ../include/net-snmp/library/system.h
 ./snmpusm.lo: ../include/net-snmp/library/tools.h
 ./snmpusm.lo: ../include/net-snmp/library/int64.h
 ./snmpusm.lo: ../include/net-snmp/library/mt_support.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpusm.lo: ../include/net-snmp/library/callback.h
 ./snmpusm.lo: ../include/net-snmp/library/data_list.h
-./snmpusm.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpusm.lo: ../include/net-snmp/library/container.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp_assert.h
-./snmpusm.lo: ../include/net-snmp/version.h ../include/net-snmp/session_api.h
-./snmpusm.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpusm.lo: ../include/net-snmp/library/snmp_service.h
-./snmpusm.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpusm.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpusm.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpusm.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpusm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpusm.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmpusm.lo: ../include/net-snmp/library/mib.h
-./snmpusm.lo: ../include/net-snmp/library/parse.h
-./snmpusm.lo: ../include/net-snmp/varbind_api.h
-./snmpusm.lo: ../include/net-snmp/config_api.h
+./snmpusm.lo: ../include/net-snmp/version.h ../include/net-snmp/config_api.h
 ./snmpusm.lo: ../include/net-snmp/library/read_config.h
 ./snmpusm.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -1226,62 +1468,64 @@
 ./snmpusm.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpusm.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpvacm.lo: ../include/net-snmp/net-snmp-config.h
-./snmpvacm.lo: ../include/net-snmp/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/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
+./snmpvacm.lo: ../include/net-snmp/library/snmp_service.h
+./snmpvacm.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpvacm.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpvacm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpvacm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpvacm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpvacm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpvacm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpvacm.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpvacm.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpvacm.lo: ../include/net-snmp/library/mib.h
+./snmpvacm.lo: ../include/net-snmp/mib_api.h
+./snmpvacm.lo: ../include/net-snmp/library/parse.h
+./snmpvacm.lo: ../include/net-snmp/library/oid_stash.h
+./snmpvacm.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmp.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpvacm.lo: ../include/net-snmp/library/getopt.h
 ./snmpvacm.lo: ../include/net-snmp/utilities.h
-./snmpvacm.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpvacm.lo: ../include/net-snmp/library/system.h
 ./snmpvacm.lo: ../include/net-snmp/library/tools.h
 ./snmpvacm.lo: ../include/net-snmp/library/int64.h
 ./snmpvacm.lo: ../include/net-snmp/library/mt_support.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpvacm.lo: ../include/net-snmp/library/callback.h
 ./snmpvacm.lo: ../include/net-snmp/library/data_list.h
-./snmpvacm.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpvacm.lo: ../include/net-snmp/library/container.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmp_assert.h
-./snmpvacm.lo: ../include/net-snmp/version.h
-./snmpvacm.lo: ../include/net-snmp/session_api.h
-./snmpvacm.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpvacm.lo: ../include/net-snmp/library/snmp_service.h
-./snmpvacm.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpvacm.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpvacm.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpvacm.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpvacm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpvacm.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmpvacm.lo: ../include/net-snmp/library/mib.h
-./snmpvacm.lo: ../include/net-snmp/library/parse.h
-./snmpvacm.lo: ../include/net-snmp/varbind_api.h
-./snmpvacm.lo: ../include/net-snmp/config_api.h
+./snmpvacm.lo: ../include/net-snmp/version.h ../include/net-snmp/config_api.h
 ./snmpvacm.lo: ../include/net-snmp/library/read_config.h
 ./snmpvacm.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -1290,62 +1534,65 @@
 ./snmpvacm.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpvacm.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpvacm.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpwalk.lo: ../include/net-snmp/net-snmp-config.h
-./snmpwalk.lo: ../include/net-snmp/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
+./snmpwalk.lo: ../include/net-snmp/library/snmp_service.h
+./snmpwalk.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpwalk.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpwalk.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpwalk.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpwalk.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpwalk.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpwalk.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpwalk.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpwalk.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpwalk.lo: ../include/net-snmp/library/mib.h
+./snmpwalk.lo: ../include/net-snmp/mib_api.h
+./snmpwalk.lo: ../include/net-snmp/library/parse.h
+./snmpwalk.lo: ../include/net-snmp/library/oid_stash.h
+./snmpwalk.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmp.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpwalk.lo: ../include/net-snmp/library/getopt.h
 ./snmpwalk.lo: ../include/net-snmp/utilities.h
-./snmpwalk.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpwalk.lo: ../include/net-snmp/library/system.h
 ./snmpwalk.lo: ../include/net-snmp/library/tools.h
 ./snmpwalk.lo: ../include/net-snmp/library/int64.h
 ./snmpwalk.lo: ../include/net-snmp/library/mt_support.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpwalk.lo: ../include/net-snmp/library/callback.h
 ./snmpwalk.lo: ../include/net-snmp/library/data_list.h
-./snmpwalk.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpwalk.lo: ../include/net-snmp/library/container.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmp_assert.h
-./snmpwalk.lo: ../include/net-snmp/version.h
-./snmpwalk.lo: ../include/net-snmp/session_api.h
-./snmpwalk.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpwalk.lo: ../include/net-snmp/library/snmp_service.h
-./snmpwalk.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpwalk.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpwalk.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpwalk.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpwalk.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpwalk.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./snmpwalk.lo: ../include/net-snmp/library/mib.h
-./snmpwalk.lo: ../include/net-snmp/library/parse.h
-./snmpwalk.lo: ../include/net-snmp/varbind_api.h
-./snmpwalk.lo: ../include/net-snmp/config_api.h
+./snmpwalk.lo: ../include/net-snmp/version.h ../include/net-snmp/config_api.h
 ./snmpwalk.lo: ../include/net-snmp/library/read_config.h
 ./snmpwalk.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -1354,64 +1601,67 @@
 ./snmpwalk.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpwalk.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpwalk.lo: ../include/net-snmp/library/snmpusm.h
+./sshtosnmp.lo: ../include/net-snmp/net-snmp-config.h
 ./snmpnetstat/if.lo: ../include/net-snmp/net-snmp-config.h
-./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
+./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_service.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/mib.h
+./snmpnetstat/if.lo: ../include/net-snmp/mib_api.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/parse.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/oid_stash.h
+./snmpnetstat/if.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/getopt.h
 ./snmpnetstat/if.lo: ../include/net-snmp/utilities.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/system.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/tools.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/int64.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/mt_support.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/callback.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/data_list.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpnetstat/if.lo: ../include/net-snmp/library/container.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmpnetstat/if.lo: ../include/net-snmp/version.h
-./snmpnetstat/if.lo: ../include/net-snmp/session_api.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_service.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpnetstat/if.lo: ../include/net-snmp/pdu_api.h
-./snmpnetstat/if.lo: ../include/net-snmp/mib_api.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/mib.h
-./snmpnetstat/if.lo: ../include/net-snmp/library/parse.h
-./snmpnetstat/if.lo: ../include/net-snmp/varbind_api.h
 ./snmpnetstat/if.lo: ../include/net-snmp/config_api.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/read_config.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -1420,133 +1670,68 @@
 ./snmpnetstat/if.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpnetstat/if.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpnetstat/if.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpnetstat/if.lo: ./snmpnetstat/main.h
 ./snmpnetstat/if.lo: ./snmpnetstat/netstat.h
-./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/snmp_api.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/asn1.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_impl.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpnetstat/inet.lo: ../include/net-snmp/utilities.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_client.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/system.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/tools.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/int64.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/mt_support.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/callback.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/data_list.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/oid_stash.h
-./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
-./snmpnetstat/inet.lo: ../include/net-snmp/library/container.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_assert.h
-./snmpnetstat/inet.lo: ../include/net-snmp/version.h
-./snmpnetstat/inet.lo: ../include/net-snmp/session_api.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_service.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpnetstat/inet.lo: ../include/net-snmp/pdu_api.h
-./snmpnetstat/inet.lo: ../include/net-snmp/mib_api.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/mib.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/parse.h
-./snmpnetstat/inet.lo: ../include/net-snmp/varbind_api.h
-./snmpnetstat/inet.lo: ../include/net-snmp/config_api.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/read_config.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/default_store.h
-./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
-./snmpnetstat/inet.lo: ../include/net-snmp/library/keytools.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/scapi.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/lcd_time.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_secmod.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpv3-security-includes.h
-./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpusm.h
-./snmpnetstat/inet.lo: ./snmpnetstat/main.h ./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
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_service.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/mib.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/mib_api.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/parse.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/oid_stash.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/getopt.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/utilities.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/system.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/tools.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/int64.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/mt_support.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/callback.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/data_list.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/container.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/version.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/session_api.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_service.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpnetstat/inet6.lo: ../include/net-snmp/pdu_api.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/mib_api.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/mib.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/library/parse.h
-./snmpnetstat/inet6.lo: ../include/net-snmp/varbind_api.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/config_api.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/read_config.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -1555,65 +1740,205 @@
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpnetstat/inet6.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpnetstat/inet6.lo: ./snmpnetstat/main.h ./snmpnetstat/netstat.h
+./snmpnetstat/inet.lo: ../include/net-snmp/net-snmp-config.h
+./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
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_service.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/mib.h
+./snmpnetstat/inet.lo: ../include/net-snmp/mib_api.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/parse.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/oid_stash.h
+./snmpnetstat/inet.lo: ../include/net-snmp/net-snmp-features.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_impl.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/getopt.h
+./snmpnetstat/inet.lo: ../include/net-snmp/utilities.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/system.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/tools.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/int64.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/mt_support.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/data_list.h
+./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/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
+./snmpnetstat/inet.lo: ../include/net-snmp/library/container.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_assert.h
+./snmpnetstat/inet.lo: ../include/net-snmp/version.h
+./snmpnetstat/inet.lo: ../include/net-snmp/config_api.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/read_config.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpv3.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/transform_oids.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/keytools.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/scapi.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/lcd_time.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmp_secmod.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmptsm.h
+./snmpnetstat/inet.lo: ../include/net-snmp/library/snmpusm.h
+./snmpnetstat/inet.lo: ./snmpnetstat/main.h ./snmpnetstat/netstat.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/net-snmp-config.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/net-snmp-includes.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/definitions.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/types.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/oid.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/types.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_api.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/varbind_api.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_client.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/pdu_api.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/asn1.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/output_api.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_logging.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/session_api.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/callback.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_transport.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_service.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/mib.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/mib_api.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/parse.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/oid_stash.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/net-snmp-features.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_impl.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/getopt.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/utilities.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/system.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/tools.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/int64.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/mt_support.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/data_list.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/check_varbind.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/container.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/factory.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/container_binary_array.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/container_list_ssll.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/container_iterator.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/container.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_assert.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/version.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/config_api.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/read_config.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/default_store.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_enum.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/vacm.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/snmpv3_api.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpv3.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/transform_oids.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/keytools.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/scapi.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/lcd_time.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmp_secmod.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmptsm.h
+./snmpnetstat/inetx.lo: ../include/net-snmp/library/snmpusm.h
+./snmpnetstat/inetx.lo: ./snmpnetstat/main.h ./snmpnetstat/netstat.h
 ./snmpnetstat/main.lo: ../include/net-snmp/net-snmp-config.h
-./snmpnetstat/main.lo: ../include/net-snmp/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
+./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_service.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/mib.h
+./snmpnetstat/main.lo: ../include/net-snmp/mib_api.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/parse.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/oid_stash.h
+./snmpnetstat/main.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/getopt.h
 ./snmpnetstat/main.lo: ../include/net-snmp/utilities.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/system.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/tools.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/int64.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/mt_support.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/callback.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/data_list.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpnetstat/main.lo: ../include/net-snmp/library/container.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmpnetstat/main.lo: ../include/net-snmp/version.h
-./snmpnetstat/main.lo: ../include/net-snmp/session_api.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_service.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpnetstat/main.lo: ../include/net-snmp/pdu_api.h
-./snmpnetstat/main.lo: ../include/net-snmp/mib_api.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/mib.h
-./snmpnetstat/main.lo: ../include/net-snmp/library/parse.h
-./snmpnetstat/main.lo: ../include/net-snmp/varbind_api.h
 ./snmpnetstat/main.lo: ../include/net-snmp/config_api.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/read_config.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -1622,66 +1947,67 @@
 ./snmpnetstat/main.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpnetstat/main.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpnetstat/main.lo: ../include/net-snmp/library/snmpusm.h
-./snmpnetstat/main.lo: ./snmpnetstat/main.h
-./snmpnetstat/main.lo: ./snmpnetstat/netstat.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
+./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_service.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/mib.h
+./snmpnetstat/route.lo: ../include/net-snmp/mib_api.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/parse.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/oid_stash.h
+./snmpnetstat/route.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/getopt.h
 ./snmpnetstat/route.lo: ../include/net-snmp/utilities.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/system.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/tools.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/int64.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/mt_support.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/callback.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/data_list.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpnetstat/route.lo: ../include/net-snmp/library/container.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmpnetstat/route.lo: ../include/net-snmp/version.h
-./snmpnetstat/route.lo: ../include/net-snmp/session_api.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_service.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpnetstat/route.lo: ../include/net-snmp/pdu_api.h
-./snmpnetstat/route.lo: ../include/net-snmp/mib_api.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/mib.h
-./snmpnetstat/route.lo: ../include/net-snmp/library/parse.h
-./snmpnetstat/route.lo: ../include/net-snmp/varbind_api.h
 ./snmpnetstat/route.lo: ../include/net-snmp/config_api.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/read_config.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -1690,66 +2016,136 @@
 ./snmpnetstat/route.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpnetstat/route.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpnetstat/route.lo: ../include/net-snmp/library/snmpusm.h
-./snmpnetstat/route.lo: ./snmpnetstat/main.h
-./snmpnetstat/route.lo: ./snmpnetstat/netstat.h
+./snmpnetstat/route.lo: ./snmpnetstat/main.h ./snmpnetstat/netstat.h
+./snmpnetstat/routex.lo: ../include/net-snmp/net-snmp-config.h
+./snmpnetstat/routex.lo: ../include/net-snmp/net-snmp-includes.h
+./snmpnetstat/routex.lo: ../include/net-snmp/definitions.h
+./snmpnetstat/routex.lo: ../include/net-snmp/types.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/oid.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/types.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_api.h
+./snmpnetstat/routex.lo: ../include/net-snmp/varbind_api.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_client.h
+./snmpnetstat/routex.lo: ../include/net-snmp/pdu_api.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/asn1.h
+./snmpnetstat/routex.lo: ../include/net-snmp/output_api.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_debug.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_logging.h
+./snmpnetstat/routex.lo: ../include/net-snmp/session_api.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/callback.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_transport.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_service.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/mib.h
+./snmpnetstat/routex.lo: ../include/net-snmp/mib_api.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/parse.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/oid_stash.h
+./snmpnetstat/routex.lo: ../include/net-snmp/net-snmp-features.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_impl.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/getopt.h
+./snmpnetstat/routex.lo: ../include/net-snmp/utilities.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/system.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/tools.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/int64.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/mt_support.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/data_list.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/check_varbind.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/container.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/factory.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/container_binary_array.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/container_list_ssll.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/container_iterator.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/container.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_assert.h
+./snmpnetstat/routex.lo: ../include/net-snmp/version.h
+./snmpnetstat/routex.lo: ../include/net-snmp/config_api.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/read_config.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/default_store.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_enum.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/vacm.h
+./snmpnetstat/routex.lo: ../include/net-snmp/snmpv3_api.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpv3.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/transform_oids.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/keytools.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/scapi.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/lcd_time.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmp_secmod.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmptsm.h
+./snmpnetstat/routex.lo: ../include/net-snmp/library/snmpusm.h
+./snmpnetstat/routex.lo: ./snmpnetstat/main.h ./snmpnetstat/netstat.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/net-snmp-config.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/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
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_service.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/mib.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/mib_api.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/parse.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/oid_stash.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp-tc.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/getopt.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/utilities.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/system.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/tools.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/int64.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/mt_support.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/callback.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/data_list.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/container.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/version.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/session_api.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_service.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmpnetstat/winstub.lo: ../include/net-snmp/pdu_api.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/mib_api.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/mib.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/library/parse.h
-./snmpnetstat/winstub.lo: ../include/net-snmp/varbind_api.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/config_api.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/read_config.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -1758,4 +2154,5 @@
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmp_secmod.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmptsm.h
 ./snmpnetstat/winstub.lo: ../include/net-snmp/library/snmpusm.h
diff --git a/apps/Makefile.in b/apps/Makefile.in
index 181d3ff..77404dd 100644
--- a/apps/Makefile.in
+++ b/apps/Makefile.in
@@ -4,6 +4,7 @@
 #
 
 top_builddir=..
+mysubdir=apps
 
 # use GNU vpath, if available, to only set a path for source and headers
 # VPATH will pick up objects too, which is bad if you are sharing a
@@ -17,10 +18,37 @@
 # Things to install
 #
 
+@NETSNMP_BUILD_SSH_PROG_TRUE@SSHINSTALLBINPROG = sshtosnmp$(EXEEXT)
+@NETSNMP_BUILD_SSH_PROG_FALSE@SSHINSTALLBINPROG =
+@NETSNMP_BUILD_SSH_PROG_TRUE@SSHFEATUREPROG = sshtosnmp.ft
+@NETSNMP_BUILD_SSH_PROG_FALSE@SSHFEATUREPROG =
+@NETSNMP_BUILD_TLS_PROG_TRUE@TLSINSTALLBINPROG = snmptls$(EXEEXT)
+@NETSNMP_BUILD_TLS_PROG_FALSE@TLSINSTALLBINPROG =
+@NETSNMP_BUILD_TLS_PROG_TRUE@TLSFEATUREPROG = snmptls.ft
+@NETSNMP_BUILD_TLS_PROG_FALSE@TLSFEATUREPROG =
+@NETSNMP_BUILD_USM_PROG_TRUE@USMINSTALLBINPROG = snmpusm$(EXEEXT)
+@NETSNMP_BUILD_USM_PROG_FALSE@USMINSTALLBINPROG =
+@NETSNMP_BUILD_USM_PROG_TRUE@USMFEATUREPROG = snmpusm.ft
+@NETSNMP_BUILD_USM_PROG_FALSE@USMFEATUREPROG =
+@NETSNMP_BUILD_USM_PROG_TRUE@EKCSTALLBINPROG = encode_keychange$(EXEEXT)
+@NETSNMP_BUILD_USM_PROG_FALSE@EKCSTALLBINPROG =
+@NETSNMP_BUILD_USM_PROG_TRUE@EKCFEATUREPROG = encode_keychange.ft
+@NETSNMP_BUILD_USM_PROG_FALSE@EKCFEATUREPROG =
+@NETSNMP_BUILD_SET_PROG_TRUE@SNMPSETINSTALLBINPROG = snmpset$(EXEEXT)
+@NETSNMP_BUILD_SET_PROG_FALSE@SNMPSETINSTALLBINPROG = 
+@NETSNMP_BUILD_SET_PROG_TRUE@SNMPSETFEATUREPROG = snmpset.ft
+@NETSNMP_BUILD_SET_PROG_FALSE@SNMPSETFEATUREPROG = 
+@NETSNMP_BUILD_SET_PROG_TRUE@SNMPVACMINSTALLBINPROG = snmpvacm$(EXEEXT)
+@NETSNMP_BUILD_SET_PROG_FALSE@SNMPVACMINSTALLBINPROG = 
+@NETSNMP_BUILD_SET_PROG_TRUE@SNMPVACMFEATUREPROG = snmpvacm.ft
+@NETSNMP_BUILD_SET_PROG_FALSE@SNMPVACMFEATUREPROG = 
+
+@NETSNMP_HAVE_AGENTX_LIBS_TRUE@AGENTXTRAP = agentxtrap$(EXEEXT)
+@NETSNMP_HAVE_AGENTX_LIBS_FALSE@AGENTXTRAP =
+
 INSTALLBINPROGS	= snmpget$(EXEEXT) 			\
 		snmpgetnext$(EXEEXT) 			\
-		snmpset$(EXEEXT) 			\
-		snmpusm$(EXEEXT)			\
+		$(SNMPSETINSTALLBINPROG)	        \
 		snmpwalk$(EXEEXT) 			\
 		snmpbulkwalk$(EXEEXT) 			\
 		snmptable$(EXEEXT)			\
@@ -30,9 +58,11 @@
 		snmpstatus$(EXEEXT) 			\
 		snmpdelta$(EXEEXT) 			\
 		snmptest$(EXEEXT)			\
-		encode_keychange$(EXEEXT) 		\
 		snmpdf$(EXEEXT) 			\
-		snmpvacm$(EXEEXT)
+		$(AGENTXTRAP)				\
+		$(SNMPVACMINSTALLBINPROG)	        \
+                $(SSHINSTALLBINPROG) $(TLSINSTALLBINPROG) \
+		$(USMINSTALLBINPROG) $(EKCSTALLBINPROG)
 
 INSTALLSBINPROGS = snmptrapd$(EXEEXT)
 
@@ -40,41 +70,69 @@
 
 SUBDIRS		= snmpnetstat
 
+FEATUREFILE=../include/net-snmp/features-apps.h
+
 #
 # build variables.
 #
 
 # 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@
 
-LIBS		= $(USELIBS) @LIBS@
+VAL_LIBS	= @VAL_LIBS@
+LIBS		= $(USELIBS) $(VAL_LIBS) @LIBS@
 PERLLDOPTS_FOR_APPS = @PERLLDOPTS_FOR_APPS@
 PERLLDOPTS_FOR_LIBS = @PERLLDOPTS_FOR_LIBS@
 
 #
 # hack for compiling trapd when agent is disabled
-TRAPDWITHAGENT  = $(USETRAPLIBS) @AGENTLIBS@
-TRAPDWITHOUTAGENT = $(LIBS)
+TRAPDWITHAGENT  = $(USETRAPLIBS) $(MYSQL_LIBS) $(VAL_LIBS) @AGENTLIBS@
+TRAPDWITHOUTAGENT = $(LIBS) $(MYSQL_LIBS) $(VAL_LIBS)
 
 # these will be set by configure to one of the above 2 lines
 TRAPLIBS	= @TRAPLIBS@ $(PERLLDOPTS_FOR_APPS)
 USETRAPLIBS	= @USETRAPLIBS@
 
 CPPFLAGS	= $(TOP_INCLUDES) -I. $(AGENT_INCLUDES) $(HELPER_INCLUDES) \
-		  $(MIBGROUP_INCLUDES)  $(SNMPLIB_INCLUDES) @CPPFLAGS@
+		  $(MIBGROUP_INCLUDES)  \
+		  $(SNMPLIB_INCLUDES) $(MYSQL_INCLUDES) @CPPFLAGS@
 
 OSUFFIX		= lo
 TRAPD_OBJECTS   = snmptrapd.$(OSUFFIX) @other_trapd_objects@
 LIBTRAPD_OBJS   = snmptrapd_handlers.o  snmptrapd_log.o \
-		  snmptrapd_auth.o
+		  snmptrapd_auth.o snmptrapd_sql.o
 LLIBTRAPD_OBJS  = snmptrapd_handlers.lo snmptrapd_log.lo \
-		  snmptrapd_auth.lo
+		  snmptrapd_auth.lo snmptrapd_sql.lo
+LIBTRAPD_FTS    = snmptrapd_handlers.ft snmptrapd_log.ft \
+		  snmptrapd_auth.ft snmptrapd_sql.ft
 OBJS  = *.o
 LOBJS = *.lo
+FTOBJS=$(LIBTRAPD_FTS) \
+       snmpwalk.ft \
+       snmpbulkwalk.ft \
+       snmpbulkget.ft \
+       snmptranslate.ft \
+       snmpstatus.ft \
+       snmpget.ft \
+       snmpdelta.ft \
+       snmptable.ft \
+       snmptest.ft \
+       snmptrapd.ft \
+       snmptrap.ft \
+       $(SNMPSETFEATUREPROG) \
+       $(SNMPVACMFEATUREPROG) \
+       $(USMFEATUREPROG) \
+       $(TLSFEATUREPROG) \
+       agentxtrap.ft \
+       snmpgetnext.ft \
+       $(EKCFEATUREPROG) \
+       snmpdf.ft \
+       $(SSHFEATUREPROG)
 
 all: standardall
 
@@ -130,6 +188,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}
 
@@ -158,5 +222,9 @@
 	  @rm -f $(INSTALL_PREFIX)$(snmplibdir)/snmp_perl_trapd.pl
 	  @echo "removed snmp_perl_trapd.pl from $(INSTALL_PREFIX)$(snmplibdir)"
 
+sshtosnmp$(EXEEXT): sshtosnmp.$(OSUFFIX)
+	$(LINK) ${CFLAGS} -o $@ sshtosnmp.$(OSUFFIX)
+
+
 installdirs:
 	@$(SHELL) $(srcdir)/../mkinstalldirs $(INSTALL_PREFIX)$(snmplibdir)
diff --git a/apps/agentxtrap.c b/apps/agentxtrap.c
new file mode 100644
index 0000000..4df423c
--- /dev/null
+++ b/apps/agentxtrap.c
@@ -0,0 +1,612 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.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/ds_agent.h>
+
+#include "../agent/mibgroup/agentx/agentx_config.h"
+#include "../agent/mibgroup/agentx/client.h"
+#include "../agent/mibgroup/agentx/protocol.h"
+
+netsnmp_feature_require(snmp_split_pdu)
+netsnmp_feature_require(snmp_reset_var_types)
+
+
+#ifdef __GNUC__
+#define UNUSED __attribute__((unused))
+#else
+#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 5b6838e..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>
@@ -233,8 +229,8 @@
         engineid_len = hex_to_binary2(engineid + 2,
                                       strlen((char *) engineid) - 2,
                                       (char **) &engineid);
-        DEBUGMSGTL(("encode_keychange", "engineIDLen: %d\n",
-                    engineid_len));
+        DEBUGMSGTL(("encode_keychange", "engineIDLen: %lu\n",
+                    (unsigned long)engineid_len));
     } else {
         engineid_len = setup_engineID(&engineid, (char *) engineid);
 
@@ -295,12 +291,12 @@
     QUITFUN(rval, main_quit);
 
 
-    DEBUGMSGTL(("encode_keychange", "EID (%d): ", engineid_len));
+    DEBUGMSGTL(("encode_keychange", "EID (%lu): ", (unsigned long)engineid_len));
     for (i = 0; i < (int) engineid_len; i++)
         DEBUGMSGTL(("encode_keychange", "%02x", (int) (engineid[i])));
     DEBUGMSGTL(("encode_keychange", "\n"));
 
-    DEBUGMSGTL(("encode_keychange", "old Ku (%d) (from %s): ", oldKu_len,
+    DEBUGMSGTL(("encode_keychange", "old Ku (%lu) (from %s): ", (unsigned long)oldKu_len,
                 oldpass));
     for (i = 0; i < (int) oldKu_len; i++)
         DEBUGMSGTL(("encode_keychange", "%02x", (int) (oldKu[i])));
@@ -312,8 +308,8 @@
     QUITFUN(rval, main_quit);
 
 
-    DEBUGMSGTL(("encode_keychange", "generating old Kul (%d) (from Ku): ",
-                oldkul_len));
+    DEBUGMSGTL(("encode_keychange", "generating old Kul (%lu) (from Ku): ",
+                (unsigned long)oldkul_len));
     for (i = 0; i < (int) oldkul_len; i++)
         DEBUGMSGTL(("encode_keychange", "%02x", (int) (oldkul[i])));
     DEBUGMSGTL(("encode_keychange", "\n"));
@@ -323,8 +319,8 @@
                         newKu, newKu_len, newkul, &newkul_len);
     QUITFUN(rval, main_quit);
 
-    DEBUGMSGTL(("encode_keychange", "generating new Kul (%d) (from Ku): ",
-                oldkul_len));
+    DEBUGMSGTL(("encode_keychange", "generating new Kul (%lu) (from Ku): ",
+                (unsigned long)oldkul_len));
     for (i = 0; i < (int) newkul_len; i++)
         DEBUGMSGTL(("encode_keychange", "%02x", newkul[i]));
     DEBUGMSGTL(("encode_keychange", "\n"));
@@ -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 4f28f47..08e2ebc 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
@@ -221,7 +214,7 @@
     /*
      * Now figure out the amount of time to sleep 
      */
-    target = (SecondsAtNextHour - tv->tv_sec) % seconds;
+    target = (int)(SecondsAtNextHour - tv->tv_sec) % seconds;
 
     return target;
 }
@@ -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;
             }
@@ -357,7 +350,7 @@
     }
     count = 1;
     while (count != 0) {
-        count = select(0, 0, 0, 0, tv);
+        count = select(0, NULL, NULL, NULL, tv);
         switch (count) {
         case 0:
             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:
@@ -439,7 +434,7 @@
 	    	MAX_ARGS);
 	    exit(1);
 	}
-        varinfo[current_name++].name = 0;
+        varinfo[current_name++].name = NULL;
     }
 
     SOCK_STARTUP;
@@ -731,12 +726,12 @@
 
         } else if (status == STAT_TIMEOUT) {
             fprintf(stderr, "Timeout: No Response from %s\n", gateway);
-            response = 0;
+            response = NULL;
             exit_code = 1;
             break;
         } else {                /* status == STAT_ERROR */
             snmp_sess_perror("snmpdelta", ss);
-            response = 0;
+            response = NULL;
             exit_code = 1;
             break;
         }
diff --git a/apps/snmpdf.c b/apps/snmpdf.c
index a0e9b9e..144a505 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
@@ -94,9 +87,14 @@
             "\t-Cu\tUse UCD-SNMP dskTable to do the calculations.\n");
     fprintf(stderr,
             "\t\t[Normally the HOST-RESOURCES-MIB is consulted first.]\n");
+    fprintf(stderr,
+            "\t-Ch\tPrint using human readable format (MiB, GiB, TiB)\n");
+    fprintf(stderr,
+            "\t-CH\tPrint using human readable SI format (MB, GB, TB)\n");
 }
 
 int             ucd_mib = 0;
+int             human_units = 0;
 
 static void
 optProc(int argc, char *const *argv, int opt)
@@ -108,6 +106,12 @@
             case 'u':
                 ucd_mib = 1;
                 break;
+            case 'h':
+                human_units = 1024;
+                break;
+            case 'H':
+                human_units = 1000;
+                break;
             default:
                 fprintf(stderr,
                         "Unknown flag passed to -C: %c\n", optarg[-1]);
@@ -173,14 +177,14 @@
             exit(1);
         }
         if (response->errstat != SNMP_ERR_NOERROR) {
-	    fprintf(stderr, "snmpdf: Error in packet: %s\n",
+            fprintf(stderr, "snmpdf: Error in packet: %s\n",
                     snmp_errstring(response->errstat));
             exit(1);
         }
         if (snmp_oid_compare(response->variables->name,
-			     SNMP_MIN(base_length,
-				      response->variables->name_length),
-			     base, base_length) != 0)
+                             SNMP_MIN(base_length,
+                                      response->variables->name_length),
+                             base, base_length) != 0)
             running = 0;
         else if (response->variables->type == SNMP_NOSUCHINSTANCE ||
                  response->variables->type == SNMP_NOSUCHOBJECT ||
@@ -210,6 +214,27 @@
     return saved;
 }
 
+
+
+char *format_human(char *buf, size_t len, unsigned long mem, unsigned long scale)
+{
+    if (mem >= scale*scale*scale*scale)
+        snprintf(buf, len, "%4.2fP%sB", (float)mem/(scale*scale*scale*scale),
+		scale == 1024 ? "i" : "");
+    else if (mem >= scale*scale*scale)
+        snprintf(buf, len, "%4.2fT%sB", (float)mem/(scale*scale*scale),
+		scale == 1024 ? "i" : "");
+    else if (mem >= scale*scale)
+        snprintf(buf, len, "%4.2fG%sB", (float)mem/(scale*scale),
+		scale == 1024 ? "i" : "");
+    else if (mem >= scale)
+        snprintf(buf, len, "%4.2fM%sB", (float)mem/scale,
+		scale == 1024 ? "i" : "");
+    else
+        snprintf(buf, len, "%4.2fkB", (float)mem);
+    return buf;
+}
+
 /* Computes value*units/divisor in an overflow-proof way.
  */
 unsigned long
@@ -236,9 +261,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:
@@ -265,8 +292,14 @@
         exit(1);
     }
 
-    printf("%-18s %15s %15s %15s %5s\n", "Description", "size (kB)",
+    if (human_units) {
+        printf("%-18s %10s %10s %10s %5s\n", "Description", "Size",
            "Used", "Available", "Used%");
+    }
+    else {
+        printf("%-18s %15s %15s %15s %5s\n", "Description", "Size (kB)",
+           "Used", "Available", "Used%");
+    }
     if (ucd_mib == 0) {
         /*
          * * Begin by finding all the storage pieces that are of
@@ -321,12 +354,26 @@
             if (vlp2->type == SNMP_NOSUCHINSTANCE) goto next;
             hsused = vlp2->val.integer ? *(vlp2->val.integer) : 0;
 
-            printf("%-18s %15lu %15lu %15lu %4lu%%\n", descr,
-                   units ? convert_units(hssize, units, 1024) : hssize,
-                   units ? convert_units(hsused, units, 1024) : hsused,
-                   units ? convert_units(hssize-hsused, units, 1024) : hssize -
-                   hsused, hssize ? convert_units(hsused, 100, hssize) :
-                   hsused);
+            if (human_units) {
+                char size[10], used[10], avail[10];
+                printf("%-18s %10s %10s %10s %4lu%%\n", descr,
+                    format_human(size, sizeof size,
+                        units ? convert_units(hssize, units, 1024) : hssize, human_units),
+                    format_human(used, sizeof used,
+                        units ? convert_units(hsused, units, 1024) : hsused, human_units),
+                    format_human(avail, sizeof avail,
+                        units ? convert_units(hssize-hsused, units, 1024) : hssize -
+                    hsused, human_units),
+                    hssize ? convert_units(hsused, 100, hssize) : hsused);
+            }
+            else {
+                printf("%-18s %15lu %15lu %15lu %4lu%%\n", descr,
+                    units ? convert_units(hssize, units, 1024) : hssize,
+                    units ? convert_units(hsused, units, 1024) : hsused,
+                    units ? convert_units(hssize-hsused, units, 1024) : hssize -
+                    hsused,
+                    hssize ? convert_units(hsused, 100, hssize) : hsused);
+            }
 
         next:
             vlp = vlp->next_variable;
@@ -336,7 +383,6 @@
     }
 
     if (count == 0) {
-        size_t          units = 0;
         /*
          * the host resources mib must not be supported.  Lets try the
          * UCD-SNMP-MIB and its dskTable 
@@ -383,12 +429,19 @@
             if (vlp2->type == SNMP_NOSUCHINSTANCE) goto next2;
             hsused = *(vlp2->val.integer);
 
-            printf("%-18s %15lu %15lu %15lu %4lu%%\n", descr,
-                   units ? convert_units(hssize, units, 1024) : hssize,
-                   units ? convert_units(hsused, units, 1024) : hsused,
-                   units ? convert_units(hssize-hsused, units, 1024) : hssize -
-                   hsused, hssize ? convert_units(hsused, 100, hssize) :
-                   hsused);
+            if (human_units) {
+                char size[10], used[10], avail[10];
+                printf("%-18s %10s %10s %10s %4lu%%\n", descr,
+                    format_human(size, sizeof size, hssize, human_units),
+                    format_human(used, sizeof used, hsused, human_units),
+                    format_human(avail, sizeof avail, hssize - hsused, human_units),
+                    hssize ? convert_units(hsused, 100, hssize) : hsused);
+            }
+            else {
+                printf("%-18s %15lu %15lu %15lu %4lu%%\n", descr,
+                     hssize, hsused, hssize - hsused,
+                     hssize ? convert_units(hsused, 100, hssize) : hsused);
+            }
 
         next2:
             vlp = vlp->next_variable;
diff --git a/apps/snmpget.c b/apps/snmpget.c
index 10a6968..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
@@ -126,13 +119,16 @@
     int             failures = 0;
     int             exitval = 0;
 
+
     /*
      * 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 b05361a..a7ad095 100644
--- a/apps/snmpnetstat/Makefile.depend
+++ b/apps/snmpnetstat/Makefile.depend
@@ -7,54 +7,63 @@
 ./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/library/asn1.h
-./if.lo: ../../include/net-snmp/library/snmp_impl.h
-./if.lo: ../../include/net-snmp/library/snmp.h
-./if.lo: ../../include/net-snmp/library/snmp-tc.h
-./if.lo: ../../include/net-snmp/utilities.h
+./if.lo: ../../include/net-snmp/varbind_api.h
 ./if.lo: ../../include/net-snmp/library/snmp_client.h
-./if.lo: ../../include/net-snmp/library/system.h
-./if.lo: ../../include/net-snmp/library/tools.h
-./if.lo: ../../include/net-snmp/library/int64.h
-./if.lo: ../../include/net-snmp/library/mt_support.h
-./if.lo: ../../include/net-snmp/library/snmp_alarm.h
-./if.lo: ../../include/net-snmp/library/callback.h
-./if.lo: ../../include/net-snmp/library/data_list.h
-./if.lo: ../../include/net-snmp/library/oid_stash.h
-./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/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/library/container_binary_array.h
-./if.lo: ../../include/net-snmp/library/container_list_ssll.h
-./if.lo: ../../include/net-snmp/library/container_iterator.h
-./if.lo: ../../include/net-snmp/library/container.h
-./if.lo: ../../include/net-snmp/library/snmp_assert.h
-./if.lo: ../../include/net-snmp/version.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
 ./if.lo: ../../include/net-snmp/library/snmp_service.h
 ./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
-./if.lo: ../../include/net-snmp/pdu_api.h ../../include/net-snmp/mib_api.h
 ./if.lo: ../../include/net-snmp/library/mib.h
+./if.lo: ../../include/net-snmp/mib_api.h
 ./if.lo: ../../include/net-snmp/library/parse.h
-./if.lo: ../../include/net-snmp/varbind_api.h
-./if.lo: ../../include/net-snmp/config_api.h
+./if.lo: ../../include/net-snmp/library/oid_stash.h
+./if.lo: ../../include/net-snmp/net-snmp-features.h
+./if.lo: ../../include/net-snmp/library/snmp_impl.h
+./if.lo: ../../include/net-snmp/library/snmp.h
+./if.lo: ../../include/net-snmp/library/snmp-tc.h
+./if.lo: ../../include/net-snmp/library/getopt.h
+./if.lo: ../../include/net-snmp/utilities.h
+./if.lo: ../../include/net-snmp/library/system.h
+./if.lo: ../../include/net-snmp/library/tools.h
+./if.lo: ../../include/net-snmp/library/int64.h
+./if.lo: ../../include/net-snmp/library/mt_support.h
+./if.lo: ../../include/net-snmp/library/snmp_alarm.h
+./if.lo: ../../include/net-snmp/library/data_list.h
+./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/container_binary_array.h
+./if.lo: ../../include/net-snmp/library/container_list_ssll.h
+./if.lo: ../../include/net-snmp/library/container_iterator.h
+./if.lo: ../../include/net-snmp/library/container.h
+./if.lo: ../../include/net-snmp/library/snmp_assert.h
+./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
@@ -63,130 +72,71 @@
 ./if.lo: ../../include/net-snmp/library/lcd_time.h
 ./if.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./if.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./if.lo: ../../include/net-snmp/library/snmptsm.h
 ./if.lo: ../../include/net-snmp/library/snmpusm.h
 ./if.lo: main.h
 ./if.lo: netstat.h
-./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/snmp_api.h
-./inet.lo: ../../include/net-snmp/library/asn1.h
-./inet.lo: ../../include/net-snmp/library/snmp_impl.h
-./inet.lo: ../../include/net-snmp/library/snmp.h
-./inet.lo: ../../include/net-snmp/library/snmp-tc.h
-./inet.lo: ../../include/net-snmp/utilities.h
-./inet.lo: ../../include/net-snmp/library/snmp_client.h
-./inet.lo: ../../include/net-snmp/library/system.h
-./inet.lo: ../../include/net-snmp/library/tools.h
-./inet.lo: ../../include/net-snmp/library/int64.h
-./inet.lo: ../../include/net-snmp/library/mt_support.h
-./inet.lo: ../../include/net-snmp/library/snmp_alarm.h
-./inet.lo: ../../include/net-snmp/library/callback.h
-./inet.lo: ../../include/net-snmp/library/data_list.h
-./inet.lo: ../../include/net-snmp/library/oid_stash.h
-./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
-./inet.lo: ../../include/net-snmp/library/container.h
-./inet.lo: ../../include/net-snmp/library/snmp_assert.h
-./inet.lo: ../../include/net-snmp/version.h
-./inet.lo: ../../include/net-snmp/session_api.h
-./inet.lo: ../../include/net-snmp/library/snmp_transport.h
-./inet.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./inet.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./inet.lo: ../../include/net-snmp/pdu_api.h ../../include/net-snmp/mib_api.h
-./inet.lo: ../../include/net-snmp/library/mib.h
-./inet.lo: ../../include/net-snmp/library/parse.h
-./inet.lo: ../../include/net-snmp/varbind_api.h
-./inet.lo: ../../include/net-snmp/config_api.h
-./inet.lo: ../../include/net-snmp/library/read_config.h
-./inet.lo: ../../include/net-snmp/library/default_store.h
-./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
-./inet.lo: ../../include/net-snmp/library/keytools.h
-./inet.lo: ../../include/net-snmp/library/scapi.h
-./inet.lo: ../../include/net-snmp/library/lcd_time.h
-./inet.lo: ../../include/net-snmp/library/snmp_secmod.h
-./inet.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
-./inet.lo: ../../include/net-snmp/library/snmpusm.h main.h 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
+./inet6.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./inet6.lo: ../../include/net-snmp/library/mib.h
+./inet6.lo: ../../include/net-snmp/mib_api.h
+./inet6.lo: ../../include/net-snmp/library/parse.h
+./inet6.lo: ../../include/net-snmp/library/oid_stash.h
+./inet6.lo: ../../include/net-snmp/net-snmp-features.h
 ./inet6.lo: ../../include/net-snmp/library/snmp_impl.h
 ./inet6.lo: ../../include/net-snmp/library/snmp.h
 ./inet6.lo: ../../include/net-snmp/library/snmp-tc.h
+./inet6.lo: ../../include/net-snmp/library/getopt.h
 ./inet6.lo: ../../include/net-snmp/utilities.h
-./inet6.lo: ../../include/net-snmp/library/snmp_client.h
 ./inet6.lo: ../../include/net-snmp/library/system.h
 ./inet6.lo: ../../include/net-snmp/library/tools.h
 ./inet6.lo: ../../include/net-snmp/library/int64.h
 ./inet6.lo: ../../include/net-snmp/library/mt_support.h
 ./inet6.lo: ../../include/net-snmp/library/snmp_alarm.h
-./inet6.lo: ../../include/net-snmp/library/callback.h
 ./inet6.lo: ../../include/net-snmp/library/data_list.h
-./inet6.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./inet6.lo: ../../include/net-snmp/library/container.h
 ./inet6.lo: ../../include/net-snmp/library/snmp_assert.h
 ./inet6.lo: ../../include/net-snmp/version.h
-./inet6.lo: ../../include/net-snmp/session_api.h
-./inet6.lo: ../../include/net-snmp/library/snmp_transport.h
-./inet6.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./inet6.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./inet6.lo: ../../include/net-snmp/pdu_api.h ../../include/net-snmp/mib_api.h
-./inet6.lo: ../../include/net-snmp/library/mib.h
-./inet6.lo: ../../include/net-snmp/library/parse.h
-./inet6.lo: ../../include/net-snmp/varbind_api.h
 ./inet6.lo: ../../include/net-snmp/config_api.h
 ./inet6.lo: ../../include/net-snmp/library/read_config.h
 ./inet6.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -195,63 +145,211 @@
 ./inet6.lo: ../../include/net-snmp/library/lcd_time.h
 ./inet6.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./inet6.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./inet6.lo: ../../include/net-snmp/library/snmptsm.h
 ./inet6.lo: ../../include/net-snmp/library/snmpusm.h main.h netstat.h
+./inet.lo: ../../include/net-snmp/net-snmp-config.h
+./inet.lo: ../../include/net-snmp/net-snmp-includes.h
+./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
+./inet.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./inet.lo: ../../include/net-snmp/library/mib.h
+./inet.lo: ../../include/net-snmp/mib_api.h
+./inet.lo: ../../include/net-snmp/library/parse.h
+./inet.lo: ../../include/net-snmp/library/oid_stash.h
+./inet.lo: ../../include/net-snmp/net-snmp-features.h
+./inet.lo: ../../include/net-snmp/library/snmp_impl.h
+./inet.lo: ../../include/net-snmp/library/snmp.h
+./inet.lo: ../../include/net-snmp/library/snmp-tc.h
+./inet.lo: ../../include/net-snmp/library/getopt.h
+./inet.lo: ../../include/net-snmp/utilities.h
+./inet.lo: ../../include/net-snmp/library/system.h
+./inet.lo: ../../include/net-snmp/library/tools.h
+./inet.lo: ../../include/net-snmp/library/int64.h
+./inet.lo: ../../include/net-snmp/library/mt_support.h
+./inet.lo: ../../include/net-snmp/library/snmp_alarm.h
+./inet.lo: ../../include/net-snmp/library/data_list.h
+./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/container_binary_array.h
+./inet.lo: ../../include/net-snmp/library/container_list_ssll.h
+./inet.lo: ../../include/net-snmp/library/container_iterator.h
+./inet.lo: ../../include/net-snmp/library/container.h
+./inet.lo: ../../include/net-snmp/library/snmp_assert.h
+./inet.lo: ../../include/net-snmp/version.h
+./inet.lo: ../../include/net-snmp/config_api.h
+./inet.lo: ../../include/net-snmp/library/read_config.h
+./inet.lo: ../../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./inet.lo: ../../include/net-snmp/library/snmpv3.h
+./inet.lo: ../../include/net-snmp/library/transform_oids.h
+./inet.lo: ../../include/net-snmp/library/keytools.h
+./inet.lo: ../../include/net-snmp/library/scapi.h
+./inet.lo: ../../include/net-snmp/library/lcd_time.h
+./inet.lo: ../../include/net-snmp/library/snmp_secmod.h
+./inet.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./inet.lo: ../../include/net-snmp/library/snmptsm.h
+./inet.lo: ../../include/net-snmp/library/snmpusm.h main.h netstat.h
+./inetx.lo: ../../include/net-snmp/net-snmp-config.h
+./inetx.lo: ../../include/net-snmp/net-snmp-includes.h
+./inetx.lo: ../../include/net-snmp/definitions.h
+./inetx.lo: ../../include/net-snmp/types.h
+./inetx.lo: ../../include/net-snmp/library/oid.h
+./inetx.lo: ../../include/net-snmp/library/types.h
+./inetx.lo: ../../include/net-snmp/library/snmp_api.h
+./inetx.lo: ../../include/net-snmp/varbind_api.h
+./inetx.lo: ../../include/net-snmp/library/snmp_client.h
+./inetx.lo: ../../include/net-snmp/pdu_api.h
+./inetx.lo: ../../include/net-snmp/library/asn1.h
+./inetx.lo: ../../include/net-snmp/output_api.h
+./inetx.lo: ../../include/net-snmp/library/snmp_debug.h
+./inetx.lo: ../../include/net-snmp/library/snmp_logging.h
+./inetx.lo: ../../include/net-snmp/session_api.h
+./inetx.lo: ../../include/net-snmp/library/callback.h
+./inetx.lo: ../../include/net-snmp/library/snmp_transport.h
+./inetx.lo: ../../include/net-snmp/library/snmp_service.h
+./inetx.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
+./inetx.lo: ../../include/net-snmp/library/snmpUnixDomain.h
+./inetx.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./inetx.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./inetx.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./inetx.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
+./inetx.lo: ../../include/net-snmp/library/snmpTCPDomain.h
+./inetx.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./inetx.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
+./inetx.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
+./inetx.lo: ../../include/net-snmp/library/snmpIPXDomain.h
+./inetx.lo: ../../include/net-snmp/library/ucd_compat.h
+./inetx.lo: ../../include/net-snmp/library/mib.h
+./inetx.lo: ../../include/net-snmp/mib_api.h
+./inetx.lo: ../../include/net-snmp/library/parse.h
+./inetx.lo: ../../include/net-snmp/library/oid_stash.h
+./inetx.lo: ../../include/net-snmp/net-snmp-features.h
+./inetx.lo: ../../include/net-snmp/library/snmp_impl.h
+./inetx.lo: ../../include/net-snmp/library/snmp.h
+./inetx.lo: ../../include/net-snmp/library/snmp-tc.h
+./inetx.lo: ../../include/net-snmp/library/getopt.h
+./inetx.lo: ../../include/net-snmp/utilities.h
+./inetx.lo: ../../include/net-snmp/library/system.h
+./inetx.lo: ../../include/net-snmp/library/tools.h
+./inetx.lo: ../../include/net-snmp/library/int64.h
+./inetx.lo: ../../include/net-snmp/library/mt_support.h
+./inetx.lo: ../../include/net-snmp/library/snmp_alarm.h
+./inetx.lo: ../../include/net-snmp/library/data_list.h
+./inetx.lo: ../../include/net-snmp/library/check_varbind.h
+./inetx.lo: ../../include/net-snmp/library/container.h
+./inetx.lo: ../../include/net-snmp/library/factory.h
+./inetx.lo: ../../include/net-snmp/library/container_binary_array.h
+./inetx.lo: ../../include/net-snmp/library/container_list_ssll.h
+./inetx.lo: ../../include/net-snmp/library/container_iterator.h
+./inetx.lo: ../../include/net-snmp/library/container.h
+./inetx.lo: ../../include/net-snmp/library/snmp_assert.h
+./inetx.lo: ../../include/net-snmp/version.h
+./inetx.lo: ../../include/net-snmp/config_api.h
+./inetx.lo: ../../include/net-snmp/library/read_config.h
+./inetx.lo: ../../include/net-snmp/library/default_store.h
+./inetx.lo: ../../include/net-snmp/library/snmp_parse_args.h
+./inetx.lo: ../../include/net-snmp/library/snmp_enum.h
+./inetx.lo: ../../include/net-snmp/library/vacm.h
+./inetx.lo: ../../include/net-snmp/snmpv3_api.h
+./inetx.lo: ../../include/net-snmp/library/snmpv3.h
+./inetx.lo: ../../include/net-snmp/library/transform_oids.h
+./inetx.lo: ../../include/net-snmp/library/keytools.h
+./inetx.lo: ../../include/net-snmp/library/scapi.h
+./inetx.lo: ../../include/net-snmp/library/lcd_time.h
+./inetx.lo: ../../include/net-snmp/library/snmp_secmod.h
+./inetx.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./inetx.lo: ../../include/net-snmp/library/snmptsm.h
+./inetx.lo: ../../include/net-snmp/library/snmpusm.h main.h netstat.h
 ./main.lo: ../../include/net-snmp/net-snmp-config.h
-./main.lo: ../../include/net-snmp/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
+./main.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./main.lo: ../../include/net-snmp/library/mib.h
+./main.lo: ../../include/net-snmp/mib_api.h
+./main.lo: ../../include/net-snmp/library/parse.h
+./main.lo: ../../include/net-snmp/library/oid_stash.h
+./main.lo: ../../include/net-snmp/net-snmp-features.h
 ./main.lo: ../../include/net-snmp/library/snmp_impl.h
 ./main.lo: ../../include/net-snmp/library/snmp.h
 ./main.lo: ../../include/net-snmp/library/snmp-tc.h
+./main.lo: ../../include/net-snmp/library/getopt.h
 ./main.lo: ../../include/net-snmp/utilities.h
-./main.lo: ../../include/net-snmp/library/snmp_client.h
 ./main.lo: ../../include/net-snmp/library/system.h
 ./main.lo: ../../include/net-snmp/library/tools.h
 ./main.lo: ../../include/net-snmp/library/int64.h
 ./main.lo: ../../include/net-snmp/library/mt_support.h
 ./main.lo: ../../include/net-snmp/library/snmp_alarm.h
-./main.lo: ../../include/net-snmp/library/callback.h
 ./main.lo: ../../include/net-snmp/library/data_list.h
-./main.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./main.lo: ../../include/net-snmp/library/container.h
 ./main.lo: ../../include/net-snmp/library/snmp_assert.h
 ./main.lo: ../../include/net-snmp/version.h
-./main.lo: ../../include/net-snmp/session_api.h
-./main.lo: ../../include/net-snmp/library/snmp_transport.h
-./main.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./main.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./main.lo: ../../include/net-snmp/pdu_api.h ../../include/net-snmp/mib_api.h
-./main.lo: ../../include/net-snmp/library/mib.h
-./main.lo: ../../include/net-snmp/library/parse.h
-./main.lo: ../../include/net-snmp/varbind_api.h
 ./main.lo: ../../include/net-snmp/config_api.h
 ./main.lo: ../../include/net-snmp/library/read_config.h
 ./main.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -260,65 +358,69 @@
 ./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
-./main.lo: netstat.h
+./main.lo: ../../include/net-snmp/library/snmptsm.h
+./main.lo: ../../include/net-snmp/library/snmpusm.h main.h netstat.h
 ./route.lo: ../../include/net-snmp/net-snmp-config.h
-./route.lo: ../../include/net-snmp/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
+./route.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./route.lo: ../../include/net-snmp/library/mib.h
+./route.lo: ../../include/net-snmp/mib_api.h
+./route.lo: ../../include/net-snmp/library/parse.h
+./route.lo: ../../include/net-snmp/library/oid_stash.h
+./route.lo: ../../include/net-snmp/net-snmp-features.h
 ./route.lo: ../../include/net-snmp/library/snmp_impl.h
 ./route.lo: ../../include/net-snmp/library/snmp.h
 ./route.lo: ../../include/net-snmp/library/snmp-tc.h
+./route.lo: ../../include/net-snmp/library/getopt.h
 ./route.lo: ../../include/net-snmp/utilities.h
-./route.lo: ../../include/net-snmp/library/snmp_client.h
 ./route.lo: ../../include/net-snmp/library/system.h
 ./route.lo: ../../include/net-snmp/library/tools.h
 ./route.lo: ../../include/net-snmp/library/int64.h
 ./route.lo: ../../include/net-snmp/library/mt_support.h
 ./route.lo: ../../include/net-snmp/library/snmp_alarm.h
-./route.lo: ../../include/net-snmp/library/callback.h
 ./route.lo: ../../include/net-snmp/library/data_list.h
-./route.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./route.lo: ../../include/net-snmp/library/container.h
 ./route.lo: ../../include/net-snmp/library/snmp_assert.h
 ./route.lo: ../../include/net-snmp/version.h
-./route.lo: ../../include/net-snmp/session_api.h
-./route.lo: ../../include/net-snmp/library/snmp_transport.h
-./route.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./route.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./route.lo: ../../include/net-snmp/pdu_api.h ../../include/net-snmp/mib_api.h
-./route.lo: ../../include/net-snmp/library/mib.h
-./route.lo: ../../include/net-snmp/library/parse.h
-./route.lo: ../../include/net-snmp/varbind_api.h
 ./route.lo: ../../include/net-snmp/config_api.h
 ./route.lo: ../../include/net-snmp/library/read_config.h
 ./route.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -327,66 +429,140 @@
 ./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
-./route.lo: netstat.h
+./route.lo: ../../include/net-snmp/library/snmptsm.h
+./route.lo: ../../include/net-snmp/library/snmpusm.h main.h netstat.h
+./routex.lo: ../../include/net-snmp/net-snmp-config.h
+./routex.lo: ../../include/net-snmp/net-snmp-includes.h
+./routex.lo: ../../include/net-snmp/definitions.h
+./routex.lo: ../../include/net-snmp/types.h
+./routex.lo: ../../include/net-snmp/library/oid.h
+./routex.lo: ../../include/net-snmp/library/types.h
+./routex.lo: ../../include/net-snmp/library/snmp_api.h
+./routex.lo: ../../include/net-snmp/varbind_api.h
+./routex.lo: ../../include/net-snmp/library/snmp_client.h
+./routex.lo: ../../include/net-snmp/pdu_api.h
+./routex.lo: ../../include/net-snmp/library/asn1.h
+./routex.lo: ../../include/net-snmp/output_api.h
+./routex.lo: ../../include/net-snmp/library/snmp_debug.h
+./routex.lo: ../../include/net-snmp/library/snmp_logging.h
+./routex.lo: ../../include/net-snmp/session_api.h
+./routex.lo: ../../include/net-snmp/library/callback.h
+./routex.lo: ../../include/net-snmp/library/snmp_transport.h
+./routex.lo: ../../include/net-snmp/library/snmp_service.h
+./routex.lo: ../../include/net-snmp/library/snmpCallbackDomain.h
+./routex.lo: ../../include/net-snmp/library/snmpUnixDomain.h
+./routex.lo: ../../include/net-snmp/library/snmpUDPDomain.h
+./routex.lo: ../../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./routex.lo: ../../include/net-snmp/library/snmpIPv4BaseDomain.h
+./routex.lo: ../../include/net-snmp/library/snmpUDPBaseDomain.h
+./routex.lo: ../../include/net-snmp/library/snmpTCPDomain.h
+./routex.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.h
+./routex.lo: ../../include/net-snmp/library/snmpIPv6BaseDomain.h
+./routex.lo: ../../include/net-snmp/library/snmpTCPIPv6Domain.h
+./routex.lo: ../../include/net-snmp/library/snmpIPXDomain.h
+./routex.lo: ../../include/net-snmp/library/ucd_compat.h
+./routex.lo: ../../include/net-snmp/library/mib.h
+./routex.lo: ../../include/net-snmp/mib_api.h
+./routex.lo: ../../include/net-snmp/library/parse.h
+./routex.lo: ../../include/net-snmp/library/oid_stash.h
+./routex.lo: ../../include/net-snmp/net-snmp-features.h
+./routex.lo: ../../include/net-snmp/library/snmp_impl.h
+./routex.lo: ../../include/net-snmp/library/snmp.h
+./routex.lo: ../../include/net-snmp/library/snmp-tc.h
+./routex.lo: ../../include/net-snmp/library/getopt.h
+./routex.lo: ../../include/net-snmp/utilities.h
+./routex.lo: ../../include/net-snmp/library/system.h
+./routex.lo: ../../include/net-snmp/library/tools.h
+./routex.lo: ../../include/net-snmp/library/int64.h
+./routex.lo: ../../include/net-snmp/library/mt_support.h
+./routex.lo: ../../include/net-snmp/library/snmp_alarm.h
+./routex.lo: ../../include/net-snmp/library/data_list.h
+./routex.lo: ../../include/net-snmp/library/check_varbind.h
+./routex.lo: ../../include/net-snmp/library/container.h
+./routex.lo: ../../include/net-snmp/library/factory.h
+./routex.lo: ../../include/net-snmp/library/container_binary_array.h
+./routex.lo: ../../include/net-snmp/library/container_list_ssll.h
+./routex.lo: ../../include/net-snmp/library/container_iterator.h
+./routex.lo: ../../include/net-snmp/library/container.h
+./routex.lo: ../../include/net-snmp/library/snmp_assert.h
+./routex.lo: ../../include/net-snmp/version.h
+./routex.lo: ../../include/net-snmp/config_api.h
+./routex.lo: ../../include/net-snmp/library/read_config.h
+./routex.lo: ../../include/net-snmp/library/default_store.h
+./routex.lo: ../../include/net-snmp/library/snmp_parse_args.h
+./routex.lo: ../../include/net-snmp/library/snmp_enum.h
+./routex.lo: ../../include/net-snmp/library/vacm.h
+./routex.lo: ../../include/net-snmp/snmpv3_api.h
+./routex.lo: ../../include/net-snmp/library/snmpv3.h
+./routex.lo: ../../include/net-snmp/library/transform_oids.h
+./routex.lo: ../../include/net-snmp/library/keytools.h
+./routex.lo: ../../include/net-snmp/library/scapi.h
+./routex.lo: ../../include/net-snmp/library/lcd_time.h
+./routex.lo: ../../include/net-snmp/library/snmp_secmod.h
+./routex.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./routex.lo: ../../include/net-snmp/library/snmptsm.h
+./routex.lo: ../../include/net-snmp/library/snmpusm.h main.h netstat.h
 ./winstub.lo: ../../include/net-snmp/net-snmp-config.h
-./winstub.lo: ../../include/net-snmp/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
+./winstub.lo: ../../include/net-snmp/library/snmp_service.h
+./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
+./winstub.lo: ../../include/net-snmp/library/mib.h
+./winstub.lo: ../../include/net-snmp/mib_api.h
+./winstub.lo: ../../include/net-snmp/library/parse.h
+./winstub.lo: ../../include/net-snmp/library/oid_stash.h
+./winstub.lo: ../../include/net-snmp/net-snmp-features.h
 ./winstub.lo: ../../include/net-snmp/library/snmp_impl.h
 ./winstub.lo: ../../include/net-snmp/library/snmp.h
 ./winstub.lo: ../../include/net-snmp/library/snmp-tc.h
+./winstub.lo: ../../include/net-snmp/library/getopt.h
 ./winstub.lo: ../../include/net-snmp/utilities.h
-./winstub.lo: ../../include/net-snmp/library/snmp_client.h
 ./winstub.lo: ../../include/net-snmp/library/system.h
 ./winstub.lo: ../../include/net-snmp/library/tools.h
 ./winstub.lo: ../../include/net-snmp/library/int64.h
 ./winstub.lo: ../../include/net-snmp/library/mt_support.h
 ./winstub.lo: ../../include/net-snmp/library/snmp_alarm.h
-./winstub.lo: ../../include/net-snmp/library/callback.h
 ./winstub.lo: ../../include/net-snmp/library/data_list.h
-./winstub.lo: ../../include/net-snmp/library/oid_stash.h
 ./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
 ./winstub.lo: ../../include/net-snmp/library/container.h
 ./winstub.lo: ../../include/net-snmp/library/snmp_assert.h
 ./winstub.lo: ../../include/net-snmp/version.h
-./winstub.lo: ../../include/net-snmp/session_api.h
-./winstub.lo: ../../include/net-snmp/library/snmp_transport.h
-./winstub.lo: ../../include/net-snmp/library/snmp_service.h
-./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/snmpTCPDomain.h
-./winstub.lo: ../../include/net-snmp/library/snmpUDPIPv6Domain.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
-./winstub.lo: ../../include/net-snmp/pdu_api.h
-./winstub.lo: ../../include/net-snmp/mib_api.h
-./winstub.lo: ../../include/net-snmp/library/mib.h
-./winstub.lo: ../../include/net-snmp/library/parse.h
-./winstub.lo: ../../include/net-snmp/varbind_api.h
 ./winstub.lo: ../../include/net-snmp/config_api.h
 ./winstub.lo: ../../include/net-snmp/library/read_config.h
 ./winstub.lo: ../../include/net-snmp/library/default_store.h
 ./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
@@ -395,4 +571,5 @@
 ./winstub.lo: ../../include/net-snmp/library/lcd_time.h
 ./winstub.lo: ../../include/net-snmp/library/snmp_secmod.h
 ./winstub.lo: ../../include/net-snmp/library/snmpv3-security-includes.h
+./winstub.lo: ../../include/net-snmp/library/snmptsm.h
 ./winstub.lo: ../../include/net-snmp/library/snmpusm.h
diff --git a/apps/snmpnetstat/Makefile.in b/apps/snmpnetstat/Makefile.in
index 4a07ebb..04aeb40 100644
--- a/apps/snmpnetstat/Makefile.in
+++ b/apps/snmpnetstat/Makefile.in
@@ -3,6 +3,8 @@
 #
 
 top_builddir=../..
+mysubdir=apps/snmpnetstat
+
 INSTALLBINPROGS=snmpnetstat$(EXEEXT)
 
 # use GNU vpath, if available, to only set a path for source and headers
@@ -16,15 +18,19 @@
 #
 # build info
 #
-SRCS=	inet.c inet6.c if.c main.c route.c winstub.c ffs.c
-OBJS=	inet.o inet6.o if.o main.o route.o winstub.o ffs.o
-LOBJS=	inet.lo inet6.lo if.lo main.lo route.lo winstub.lo ffs.lo
+SRCS=	inet.c inet6.c inetx.c if.c main.c route.c routex.c winstub.c ffs.c
+OBJS=	inet.o inet6.o inetx.o if.o main.o route.o routex.o winstub.o ffs.o
+LOBJS=	inet.lo inet6.lo inetx.lo if.lo main.lo route.lo routex.lo winstub.lo ffs.lo
+FTOBJS=	inet.ft inet6.ft inetx.ft if.ft main.ft route.ft routex.ft winstub.ft ffs.ft
 TARG= snmpnetstat$(EXEEXT)
 
+FEATUREFILE=../../include/net-snmp/features-snmpnetstat.h
+
 CPPFLAGS= $(TOP_INCLUDES)  @CPPFLAGS@
 
+VAL_LIBS	= @VAL_LIBS@
 USELIBS= ../../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION)
-LIBS=	 ../../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION) @LIBS@
+LIBS=	 ../../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION) $(VAL_LIBS) @LIBS@
 
 all: standardall
 
diff --git a/apps/snmpnetstat/if.c b/apps/snmpnetstat/if.c
index 6a8a515..125e6a3 100644
--- a/apps/snmpnetstat/if.c
+++ b/apps/snmpnetstat/if.c
@@ -49,8 +49,12 @@
 #if HAVE_NET_IF_H
 #include <net/if.h>
 #endif
-#define __USE_XOPEN
-#define __USE_XOPEN_EXTENDED
+#ifndef _XOPEN_SOURCE
+#define _XOPEN_SOURCE 1
+#endif
+#ifndef _XOPEN_SOURCE_EXTENDED
+#define _XOPEN_SOURCE_EXTENDED 1
+#endif
 #include <signal.h>
 
 #include "main.h"
@@ -69,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
@@ -128,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],
@@ -146,16 +151,16 @@
          *   displaying the local network information
          */
         cp = tmpAddr.data;
-        cp[0] = vp2->name[ 10 ] & 0xff;
-        cp[1] = vp2->name[ 11 ] & 0xff;
-        cp[2] = vp2->name[ 12 ] & 0xff;
-        cp[3] = vp2->name[ 13 ] & 0xff;
+        cp[0] = (uint8_t) vp2->name[10];
+        cp[1] = (uint8_t) vp2->name[11];
+        cp[2] = (uint8_t) vp2->name[12];
+        cp[3] = (uint8_t) vp2->name[13];
         ifAddr = tmpAddr.addr;
         cp = tmpAddr.data;
-        cp[0] = vp2->val.string[ 0 ] & 0xff;
-        cp[1] = vp2->val.string[ 1 ] & 0xff;
-        cp[2] = vp2->val.string[ 2 ] & 0xff;
-        cp[3] = vp2->val.string[ 3 ] & 0xff;
+        cp[0] = (uint8_t) vp2->val.string[0];
+        cp[1] = (uint8_t) vp2->val.string[1];
+        cp[2] = (uint8_t) vp2->val.string[2];
+        cp[3] = (uint8_t) vp2->val.string[3];
         mask = tmpAddr.addr;
         snprintf( cur_if->route, 128, "%s", netname(ifAddr, mask));
     }
@@ -286,7 +291,6 @@
                  * XXX - Try to recover ?
                  */
                 SNMP_FREE( cur_if );
-                cur_if = NULL;
                 break;    /* not for now, no */
             }
             switch ( vp->name[ var->name_length-2 ] ) {
@@ -391,7 +395,6 @@
          */
         if ( intrface && strcmp( cur_if->name, intrface) != 0 && strcmp( cur_if->descr, intrface) != 0) {
             SNMP_FREE( cur_if );
-            cur_if = NULL;
         }
 
         /*
@@ -537,7 +540,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 7dc3ff1..0537340 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 
@@ -106,20 +104,65 @@
 };
 #define TCP_NSTATES 11
 
-void
-tcpprotopr(const char *name)
+static void
+tcpprotoprint_line(const char *name, netsnmp_variable_list *vp, int *first)
 {
-    netsnmp_variable_list *var, *vp;
-    oid    tcpConnState_oid[] = { 1,3,6,1,2,1,6,13,1,1 };
-    size_t tcpConnState_len   = OID_LENGTH( tcpConnState_oid );
     int    state, width;
+    char  *cp;
     union {
         struct in_addr addr;
         char      data[4];
     } tmpAddr;
     oid    localPort, remotePort;
     struct in_addr localAddr, remoteAddr;
-    char  *cp;
+
+	state = *vp->val.integer;
+	if (!aflag && state == MIB_TCPCONNSTATE_LISTEN) {
+		return;
+	}
+
+	if (*first) {
+		printf("Active Internet (%s) Connections", name);
+		if (aflag)
+			printf(" (including servers)");
+		putchar('\n');
+		width = 27;
+		printf("%-5.5s %*.*s %*.*s %s\n",
+			   "Proto", -width, width, "Local Address",
+						-width, width, "Remote Address", "(state)");
+		*first = 0;
+	}
+	
+	/* Extract the local/remote information from the index values */
+	cp = tmpAddr.data;
+	cp[0] = (uint8_t) vp->name[10];
+	cp[1] = (uint8_t) vp->name[11];
+	cp[2] = (uint8_t) vp->name[12];
+	cp[3] = (uint8_t) vp->name[13];
+	localAddr.s_addr = tmpAddr.addr.s_addr;
+	localPort        = vp->name[ 14 ];
+	cp = tmpAddr.data;
+	cp[0] = (uint8_t) vp->name[15];
+	cp[1] = (uint8_t) vp->name[16];
+	cp[2] = (uint8_t) vp->name[17];
+	cp[3] = (uint8_t) vp->name[18];
+	remoteAddr.s_addr = tmpAddr.addr.s_addr;
+	remotePort        = vp->name[ 19 ];
+
+	printf("%-5.5s", name);
+	inetprint(&localAddr,  localPort,  name, 1);
+	inetprint(&remoteAddr, remotePort, name, 0);
+	if (state < 1 || state > TCP_NSTATES) {
+		printf(" %d\n", state );
+	} else {
+		printf(" %s\n", tcpstates[state]);
+	}
+}
+
+static void
+tcpprotopr_get(const char *name, oid *root, size_t root_len)
+{
+    netsnmp_variable_list *var, *vp;
     int    first = 1;
 
     /*
@@ -127,53 +170,17 @@
      *   the necessary information.
      */
     var = NULL;
-    snmp_varlist_add_variable( &var, tcpConnState_oid, tcpConnState_len,
+    snmp_varlist_add_variable( &var, root, root_len,
                                    ASN_NULL, NULL,  0);
     if (!var)
         return;
     if (netsnmp_query_walk( var, ss ) != SNMP_ERR_NOERROR)
         return;
+    if ((var->type & 0xF0) == 0x80)	/* Exception */
+	return;
 
     for (vp = var; vp ; vp=vp->next_variable) {
-        state = *vp->val.integer;
-        if (!aflag && state == MIB_TCPCONNSTATE_LISTEN)
-            continue;
-
-        if (first) {
-            printf("Active Internet (%s) Connections", name);
-            if (aflag)
-                printf(" (including servers)");
-            putchar('\n');
-            width = Aflag ? 18 : 22;
-            printf("%-5.5s %*.*s %*.*s %s\n",
-                   "Proto", -width, width, "Local Address",
-                            -width, width, "Remote Address", "(state)");
-            first=0;
-        }
-        
-        /* Extract the local/remote information from the index values */
-        cp = tmpAddr.data;
-        cp[0] = vp->name[ 10 ] & 0xff;
-        cp[1] = vp->name[ 11 ] & 0xff;
-        cp[2] = vp->name[ 12 ] & 0xff;
-        cp[3] = vp->name[ 13 ] & 0xff;
-        localAddr.s_addr = tmpAddr.addr.s_addr;
-        localPort        = ntohs((u_short)(vp->name[ 14 ]));
-        cp = tmpAddr.data;
-        cp[0] = vp->name[ 15 ] & 0xff;
-        cp[1] = vp->name[ 16 ] & 0xff;
-        cp[2] = vp->name[ 17 ] & 0xff;
-        cp[3] = vp->name[ 18 ] & 0xff;
-        remoteAddr.s_addr = tmpAddr.addr.s_addr;
-        remotePort        = ntohs((u_short)(vp->name[ 19 ]));
-
-        printf("%-5.5s", name);
-        inetprint(&localAddr,  localPort,  name, 1);
-        inetprint(&remoteAddr, remotePort, name, 0);
-        if ( state < 1 || state > TCP_NSTATES )
-            printf("%d\n", state );
-        else
-            printf("%s\n", tcpstates[ state ]);
+        tcpprotoprint_line(name, vp, &first);
     }
     snmp_free_varbind( var );
 }
@@ -207,9 +214,11 @@
         return;
     if (netsnmp_query_walk( var, ss ) != SNMP_ERR_NOERROR)
         return;
+    if ((var->type & 0xF0) == 0x80)	/* Exception */
+	return;
 
     printf("Active Internet (%s) Connections\n", name);
-    printf("%-5.5s %-28.28s\n", "Proto", "Local Address");
+    printf("%-5.5s %-27.27s\n", "Proto", "Local Address");
     for (vp = var; vp ; vp=vp->next_variable) {
         printf("%-5.5s", name);
         /*
@@ -218,18 +227,123 @@
          *   we walked udpLocalAddress rather than udpLocalPort)
          */
         cp = tmpAddr.data;
-        cp[0] = vp->name[ 10 ] & 0xff;
-        cp[1] = vp->name[ 11 ] & 0xff;
-        cp[2] = vp->name[ 12 ] & 0xff;
-        cp[3] = vp->name[ 13 ] & 0xff;
+        cp[0] = (uint8_t) vp->name[10];
+        cp[1] = (uint8_t) vp->name[11];
+        cp[2] = (uint8_t) vp->name[12];
+        cp[3] = (uint8_t) vp->name[13];
         localAddr.s_addr = tmpAddr.addr.s_addr;
-        localPort        = ntohs( (u_short)(vp->name[ 14 ]));
+        localPort        = vp->name[ 14 ];
         inetprint(&localAddr, localPort, name, 1);
         putchar('\n');
     }
     snmp_free_varbind( var );
 }
 
+void
+tcpprotopr_bulkget(const char *name, oid *root, size_t root_len)
+{
+    netsnmp_variable_list *vp;
+	netsnmp_pdu    *pdu, *response;
+    oid             tcpConnState_oid[MAX_OID_LEN];
+	size_t          tcpConnState_len;
+    int    first = 1;
+    int    running = 1;
+    int    status;
+
+	/*
+     * setup initial object name
+     */
+	memmove(tcpConnState_oid, root, sizeof(oid) * root_len);
+	tcpConnState_len = root_len;
+
+    /*
+     * Walking the tcpConnState column will provide all
+     *   the necessary information.
+     */
+	while (running) {
+        /*
+         * create PDU for GETBULK request and add object name to request
+         */
+        pdu = snmp_pdu_create(SNMP_MSG_GETBULK);
+        pdu->non_repeaters = 0;
+        pdu->max_repetitions = max_getbulk;    /* fill the packet */
+        snmp_add_null_var(pdu, tcpConnState_oid, tcpConnState_len);
+
+        /*
+         * do the request
+         */
+        status = snmp_synch_response(ss, pdu, &response);
+        if (status == STAT_SUCCESS) {
+            if (response->errstat == SNMP_ERR_NOERROR) {
+				for (vp = response->variables; vp ; vp=vp->next_variable) {
+                    if ((vp->name_length < root_len) ||
+							(memcmp(root, vp->name, sizeof(oid) * root_len) != 0)) {
+                        /*
+                         * not part of this subtree
+                         */
+                        running = 0;
+                        continue;
+                    }
+
+                    if ((vp->type != SNMP_ENDOFMIBVIEW) &&
+                        (vp->type != SNMP_NOSUCHOBJECT) &&
+                        (vp->type != SNMP_NOSUCHINSTANCE)) {
+
+			tcpprotoprint_line(name, vp, &first);
+
+                        /*
+                         * Check if last variable, and if so, save for next request.
+                         */
+                        if (vp->next_variable == NULL) {
+                            memmove(tcpConnState_oid, vp->name,
+                                    vp->name_length * sizeof(oid));
+                            tcpConnState_len = vp->name_length;
+                        }
+                    } else {
+                        /*
+                         * an exception value, so stop
+                         */
+                        running = 0;
+                    }
+				}
+            } else {
+                /*
+                 * error in response, print it
+                 */
+                running = 0;
+            }
+        } else if (status == STAT_TIMEOUT) {
+            running = 0;
+        } else {                /* status == STAT_ERROR */
+            running = 0;
+        }
+
+        if (response) {
+            snmp_free_pdu(response);
+		}
+	}
+}
+
+void
+tcpprotopr(const char *name)
+{
+    oid    tcpConnState_oid[] = { 1,3,6,1,2,1,6,13,1,1 };
+    size_t tcpConnState_len   = OID_LENGTH( tcpConnState_oid );
+    int    use_getbulk = 1;
+
+#ifndef NETSNMP_DISABLE_SNMPV1
+    if (ss->version == SNMP_VERSION_1) {
+        use_getbulk = 0;
+    }
+#endif
+
+    if (use_getbulk) {
+	    tcpprotopr_bulkget(name, tcpConnState_oid, tcpConnState_len);
+    } else {
+	    tcpprotopr_get(name, tcpConnState_oid, tcpConnState_len);
+    }
+}
+
 
 	/*********************
 	 *
@@ -282,7 +396,6 @@
          *   then only display non-zero stats.
          */
         if ( *vp->val.integer > 0 || sflag == 1 ) {
-            putchar('\t');
             printf(sp->description, *vp->val.integer,
                              plural(*vp->val.integer));
             putchar('\n');
@@ -301,24 +414,24 @@
     oid               ipstats_oid[] = { 1, 3, 6, 1, 2, 1, 4, 0, 0 };
     size_t            ipstats_len   = OID_LENGTH( ipstats_oid );
     struct stat_table ipstats_tbl[] = {
-        {3, "%d total datagram%s received"},
-        {4, "%d datagram%s with header errors"},
-        {5, "%d datagram%s with an invalid destination address"},
-        {6, "%d datagram%s forwarded"},
-        {7, "%d datagram%s with unknown protocol"},
-        {8, "%d datagram%s discarded"},
-        {9, "%d datagram%s delivered"},
-        {10, "%d output datagram request%s"},
-        {11, "%d output datagram%s discarded"},
-        {12, "%d datagram%s with no route"},
-        {14, "%d fragment%s received"},
-        {15, "%d datagram%s reassembled"},
-        {16, "%d reassembly failure%s"},
-        {17, "%d datagram%s fragmented"},
-        {18, "%d fragmentation failure%s"},
-        {19, "%d fragment%s created"},
-        {23, "%d route%s discarded"},
-        {0, ""}
+        { 3, "%14d total datagram%s received"},
+        { 4, "%14d datagram%s with header errors"},
+        { 5, "%14d datagram%s with an invalid destination address"},
+        { 6, "%14d datagram%s forwarded"},
+        { 7, "%14d datagram%s with unknown protocol"},
+        { 8, "%14d datagram%s discarded"},
+        { 9, "%14d datagram%s delivered"},
+        {10, "%14d output datagram request%s"},
+        {11, "%14d output datagram%s discarded"},
+        {12, "%14d datagram%s with no route"},
+        {14, "%14d fragment%s received"},
+        {15, "%14d datagram%s reassembled"},
+        {16, "%14d reassembly failure%s"},
+        {17, "%14d datagram%s fragmented"},
+        {18, "%14d fragmentation failure%s"},
+        {19, "%14d fragment%s created"},
+        {23, "%14d route%s discarded"},
+        { 0, ""}
     };
 
     _dump_stats( name, ipstats_oid, ipstats_len, ipstats_tbl );
@@ -334,38 +447,38 @@
     oid               icmpstats_oid[] = { 1, 3, 6, 1, 2, 1, 5, 0, 0 };
     size_t            icmpstats_len   = OID_LENGTH( icmpstats_oid );
     struct stat_table icmpstats_tbl[] = {
-        {1, "%d total message%s received"},
-        {2, "%d message%s dropped due to errors"},
-        {14, "%d ouput message request%s"},
-        {15, "%d output message%s discarded"},
-        {0, ""}
+        { 1, "%14d total message%s received"},
+        { 2, "%14d message%s dropped due to errors"},
+        {14, "%14d ouput message request%s"},
+        {15, "%14d output message%s discarded"},
+        { 0, ""}
     };
     struct stat_table icmp_inhistogram[] = {
-        {3, "Destination unreachable: %d"},
-        {4, "Time Exceeded: %d"},
-        {5, "Parameter Problem: %d"},
-        {6, "Source Quench: %d"},
-        {7, "Redirect: %d"},
-        {8, "Echo Request: %d"},
-        {9, "Echo Reply: %d"},
-        {10, "Timestamp Request: %d"},
-        {11, "Timestamp Reply: %d"},
-        {12, "Address Mask Request: %d"},
-        {13, "Address Mask Reply: %d"},
-        {0, ""}
+        { 3, "        Destination unreachable: %d"},
+        { 4, "        Time Exceeded: %d"},
+        { 5, "        Parameter Problem: %d"},
+        { 6, "        Source Quench: %d"},
+        { 7, "        Redirect: %d"},
+        { 8, "        Echo Request: %d"},
+        { 9, "        Echo Reply: %d"},
+        {10, "        Timestamp Request: %d"},
+        {11, "        Timestamp Reply: %d"},
+        {12, "        Address Mask Request: %d"},
+        {13, "        Address Mask Reply: %d"},
+        { 0, ""}
     };
     struct stat_table icmp_outhistogram[] = {
-        {16, "Destination unreachable: %d"},
-        {17, "Time Exceeded: %d"},
-        {18, "Parameter Problem: %d"},
-        {19, "Source Quench: %d"},
-        {20, "Redirect: %d"},
-        {21, "Echo Request: %d"},
-        {22, "Echo Reply: %d"},
-        {23, "Timestamp Request: %d"},
-        {24, "Timestamp Reply: %d"},
-        {25, "Address Mask Request: %d"},
-        {26, "Address Mask Reply: %d"},
+        {16, "        Destination unreachable: %d"},
+        {17, "        Time Exceeded: %d"},
+        {18, "        Parameter Problem: %d"},
+        {19, "        Source Quench: %d"},
+        {20, "        Redirect: %d"},
+        {21, "        Echo Request: %d"},
+        {22, "        Echo Reply: %d"},
+        {23, "        Timestamp Request: %d"},
+        {24, "        Timestamp Reply: %d"},
+        {25, "        Address Mask Request: %d"},
+        {26, "        Address Mask Reply: %d"},
         {0, ""}
     };
 
@@ -386,19 +499,19 @@
     oid               tcpstats_oid[] = { 1, 3, 6, 1, 2, 1, 6, 0, 0 };
     size_t            tcpstats_len   = OID_LENGTH( tcpstats_oid );
     struct stat_table tcpstats_tbl[] = {
-        {5, "%d active open%s"},
-        {6, "%d passive open%s"},
-        {7, "%d failed attempt%s"},
-        {8, "%d reset%s of established connections"},
-        {9, "%d current established connection%s"},
-        {10, "%d segment%s received"},
-        {11, "%d segment%s sent"},
-        {12, "%d segment%s retransmitted"},
-        {14, "%d invalid segment%s received"},
-        {15, "%d reset%s sent"},
-        {0, ""}
+        { 5, "%14d active open%s"},
+        { 6, "%14d passive open%s"},
+        { 7, "%14d failed attempt%s"},
+        { 8, "%14d reset%s of established connections"},
+        { 9, "%14d currently established connection%s"},
+        {10, "%14d segment%s received"},
+        {11, "%14d segment%s sent"},
+        {12, "%14d segment%s retransmitted"},
+        {14, "%14d invalid segment%s received"},
+        {15, "%14d reset%s sent"},
+        { 0, ""}
     };
-    _dump_stats( name, tcpstats_oid, tcpstats_len, tcpstats_tbl );
+    _dump_stats( "tcp", tcpstats_oid, tcpstats_len, tcpstats_tbl );
 }
 
 
@@ -411,13 +524,13 @@
     oid               udpstats_oid[] = { 1, 3, 6, 1, 2, 1, 7, 0, 0 };
     size_t            udpstats_len   = OID_LENGTH( udpstats_oid );
     struct stat_table udpstats_tbl[] = {
-        {1, "%d total datagram%s received"},
-        {2, "%d datagram%s to invalid port"},
-        {3, "%d datagram%s dropped due to errors"},
-        {4, "%d output datagram request%s"},
+        {1, "%14d total datagram%s received"},
+        {2, "%14d datagram%s to invalid port"},
+        {3, "%14d datagram%s dropped due to errors"},
+        {4, "%14d output datagram request%s"},
         {0, ""}
     };
-    _dump_stats( name, udpstats_oid, udpstats_len, udpstats_tbl );
+    _dump_stats( "udp", udpstats_oid, udpstats_len, udpstats_tbl );
 }
 
 
@@ -449,24 +562,27 @@
 void
 inetprint(struct in_addr *in, int port, const char *proto, int local)
 {
-	struct servent *sp = 0;
+	struct servent *sp = NULL;
 	char line[80], *cp;
-	int width;
+	int width = 27;
 
-	snprintf(line, sizeof line, "%.*s.", (Aflag && !nflag) ? 12 : 16,
-	    inetname(in));
+	if (vflag)
+	    snprintf(line, sizeof line, "%s.", inetname(in));
+	else
+	    snprintf(line, sizeof line, "%.*s.", width-9, inetname(in));
 	cp = strchr(line, '\0');
 	if (!nflag && port)
-		sp = getservbyport((int)port, proto);
+		sp = getservbyport(htons((uint16_t) port), proto);
 	if (sp || port == 0)
-		snprintf(cp, line + sizeof line - cp, "%.8s",
+		snprintf(cp, line + sizeof line - cp, vflag ? "%s" : "%.8s",
 		    sp ? sp->s_name : "*");
      /*
       * Translation of RPC service names - Omitted
       */
 	else
-		snprintf(cp, line + sizeof line - cp, "%d", ntohs(port));
-	width = Aflag ? 18 : 22;
+		snprintf(cp, line + sizeof line - cp, "%d", port);
+	if (vflag && width < strlen(line))
+	    width = strlen(line);
 	printf(" %-*.*s", width, width, line);
 }
 
@@ -489,9 +605,10 @@
 #endif
 
 	if (first && !nflag) {
+		char tmp[MAXHOSTNAMELEN];
 		first = 0;
-		if (gethostname(domain, sizeof(domain)) == 0 &&
-		    (cp = strchr(domain, '.')))
+		if (gethostname(tmp, sizeof(tmp)) == 0 &&
+		    (cp = strchr(tmp, '.')))
 			(void) strlcpy(domain, cp + 1, sizeof domain);
 		else
 			domain[0] = '\0';
@@ -507,7 +624,8 @@
 				cp = np->n_name;
 		}
 		if (cp == NULL) {
-			hp = gethostbyaddr((char *)inp, sizeof (*inp), AF_INET);
+			hp = netsnmp_gethostbyaddr((char *)inp, sizeof (*inp),
+                                                   AF_INET);
 			if (hp) {
 				if ((cp = strchr(hp->h_name, '.')) &&
 				    !strcmp(cp + 1, domain))
@@ -530,7 +648,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 799c961..7109b87 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 
@@ -126,7 +124,7 @@
                                      ASN_NULL, NULL,  0);
     if (netsnmp_query_walk( var, ss ) != SNMP_ERR_NOERROR)
         return;
-    if (var->type == ASN_NULL)    /* No entries */
+    if ((var->type & 0xF0) == 0x80)		/* exception */
         return;
 
     for (vp = var; vp ; vp=vp->next_variable) {
@@ -139,7 +137,7 @@
             if (aflag)
                 printf(" (including servers)");
             putchar('\n');
-            printf("%-5.5s %-28.28s %-28.28s %4s %s\n",
+            printf("%-5.5s %-27.27s %-27.27s %4s %s\n",
                    "Proto", "Local Address", "Remote Address", "I/F", "(state)");
             first = 0;
         }
@@ -186,11 +184,11 @@
                                      ASN_NULL, NULL,  0);
     if (netsnmp_query_walk( var, ss ) != SNMP_ERR_NOERROR)
         return;
-    if (var->type == ASN_NULL)    /* No entries */
+    if ((var->type & 0xF0) == 0x80)		/* exception */
         return;
 
     printf("Active Internet Connections\n");
-    printf("%-5.5s %-28.28s %4s\n", "Proto", "Local Address", "I/F");
+    printf("%-5.5s %-27.27s %4s\n", "Proto", "Local Address", "I/F");
     for (vp = var; vp ; vp=vp->next_variable) {
         printf("%-5.5s", name);
         /*
@@ -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
@@ -246,6 +245,8 @@
     while (1) {
         if (netsnmp_query_getnext( var, ss ) != SNMP_ERR_NOERROR)
             break;
+        if ((var->type & 0xF0) == 0x80)		/* exception */
+            break;
         if ( snmp_oid_compare( oid_buf,   buf_len,
                                var->name, buf_len) != 0 )
             break;    /* End of Table */
@@ -272,7 +273,6 @@
          *   then only display non-zero stats.
          */
         if ( stats[sp->entry] > 0 || sflag == 1 ) {
-            putchar('\t');
             printf(sp->description, stats[sp->entry],
                              plural(stats[sp->entry]));
             putchar('\n');
@@ -292,27 +292,27 @@
     oid               ip6stats_oid[] = { 1, 3, 6, 1, 2, 1, 55, 1, 6, 1, 0 };
     size_t            ip6stats_len   = OID_LENGTH( ip6stats_oid );
     struct stat_table ip6stats_tbl[] = {
-        {1, "%d total datagram%s received"},
-        {2, "%d datagram%s with header errors"},
-        {3, "%d oversized datagram%s"},
-        {4, "%d datagram%s with no route"},
-        {5, "%d datagram%s with an invalid destination address"},
-        {6, "%d datagram%s with unknown protocol"},
-        {7, "%d short datagram%s discarded"},
-        {8, "%d datagram%s discarded"},
-        {9, "%d datagram%s delivered"},
-        {10, "%d datagram%s forwarded"},
-        {11, "%d output datagram request%s"},
-        {12, "%d output datagram%s discarded"},
-        {13, "%d datagram%s fragmented"},
-        {14, "%d fragmentation failure%s"},
-        {15, "%d fragment%s created"},
-        {16, "%d fragment%s received"},
-        {17, "%d datagram%s reassembled"},
-        {18, "%d reassembly failure%s"},
-        {19, "%d multicast datagram%s received"},
-        {20, "%d multicast datagram%s transmitted"},
-        {0, ""}
+        { 1, "%14d total datagram%s received"},
+        { 2, "%14d datagram%s with header errors"},
+        { 3, "%14d oversized datagram%s"},
+        { 4, "%14d datagram%s with no route"},
+        { 5, "%14d datagram%s with an invalid destination address"},
+        { 6, "%14d datagram%s with unknown protocol"},
+        { 7, "%14d short datagram%s discarded"},
+        { 8, "%14d datagram%s discarded"},
+        { 9, "%14d datagram%s delivered"},
+        {10, "%14d datagram%s forwarded"},
+        {11, "%14d output datagram request%s"},
+        {12, "%14d output datagram%s discarded"},
+        {13, "%14d datagram%s fragmented"},
+        {14, "%14d fragmentation failure%s"},
+        {15, "%14d fragment%s created"},
+        {16, "%14d fragment%s received"},
+        {17, "%14d datagram%s reassembled"},
+        {18, "%14d reassembly failure%s"},
+        {19, "%14d multicast datagram%s received"},
+        {20, "%14d multicast datagram%s transmitted"},
+        { 0, ""}
     };
 
     _dump_v6stats( name, ip6stats_oid, ip6stats_len, ip6stats_tbl );
@@ -332,46 +332,46 @@
     oid               icmp6stats_oid[] = { 1, 3, 6, 1, 2, 1, 56, 1, 1, 1, 0 };
     size_t            icmp6stats_len   = OID_LENGTH( icmp6stats_oid );
     struct stat_table icmp6stats_tbl[] = {
-        {1, "%d total message%s received"},
-        {2, "%d message%s dropped due to errors"},
-        {18, "%d ouput message request%s"},
-        {19, "%d output message%s discarded"},
-        {0, ""}
+        { 1, "%14d total message%s received"},
+        { 2, "%14d message%s dropped due to errors"},
+        {18, "%14d ouput message request%s"},
+        {19, "%14d output message%s discarded"},
+        { 0, ""}
     };
     struct stat_table icmp6_inhistogram[] = {
-        {3, "Destination unreachable: %d"},
-        {4, "Admin Prohibit: %d"},
-        {5, "Time Exceeded: %d"},
-        {6, "Parameter Problem: %d"},
-        {7, "Too Big: %d"},
-        {8, "Echo Request: %d"},
-        {9, "Echo Reply: %d"},
-        {10, "Router Solicit: %d"},
-        {11, "Router Advert: %d"},
-        {12, "Neighbor Solicit: %d"},
-        {13, "Neighbor Advert: %d"},
-        {14, "Redirect: %d"},
-        {15, "Group Member Request: %d"},
-        {16, "Group Member Reply:%d"},
-        {17, "Group Member Reduce:%d"},
-        {0, ""}
+        { 3, "        Destination unreachable: %d"},
+        { 4, "        Admin Prohibit: %d"},
+        { 5, "        Time Exceeded: %d"},
+        { 6, "        Parameter Problem: %d"},
+        { 7, "        Too Big: %d"},
+        { 8, "        Echo Request: %d"},
+        { 9, "        Echo Reply: %d"},
+        {10, "        Router Solicit: %d"},
+        {11, "        Router Advert: %d"},
+        {12, "        Neighbor Solicit: %d"},
+        {13, "        Neighbor Advert: %d"},
+        {14, "        Redirect: %d"},
+        {15, "        Group Member Request: %d"},
+        {16, "        Group Member Reply: %d"},
+        {17, "        Group Member Reduce: %d"},
+        { 0, ""}
     };
     struct stat_table icmp6_outhistogram[] = {
-        {20, "Destination unreachable: %d"},
-        {21, "Admin Prohibit: %d"},
-        {22, "Time Exceeded: %d"},
-        {23, "Parameter Problem: %d"},
-        {24, "Too Big: %d"},
-        {25, "Echo Request: %d"},
-        {26, "Echo Reply: %d"},
-        {27, "Router Solicit: %d"},
-        {28, "Router Advert: %d"},
-        {29, "Neighbor Solicit: %d"},
-        {30, "Neighbor Advert: %d"},
-        {31, "Redirect: %d"},
-        {32, "Group Member Request: %d"},
-        {33, "Group Member Reply:%d"},
-        {34, "Group Member Reduce:%d"},
+        {20, "        Destination unreachable: %d"},
+        {21, "        Admin Prohibit: %d"},
+        {22, "        Time Exceeded: %d"},
+        {23, "        Parameter Problem: %d"},
+        {24, "        Too Big: %d"},
+        {25, "        Echo Request: %d"},
+        {26, "        Echo Reply: %d"},
+        {27, "        Router Solicit: %d"},
+        {28, "        Router Advert: %d"},
+        {29, "        Neighbor Solicit: %d"},
+        {30, "        Neighbor Advert: %d"},
+        {31, "        Redirect: %d"},
+        {32, "        Group Member Request: %d"},
+        {33, "        Group Member Reply: %d"},
+        {34, "        Group Member Reduce: %d"},
         {0, ""}
     };
 
@@ -413,12 +413,11 @@
 		(ret) = getservbyport((int)(port), (proto)); \
 	} while (0)
 
-	struct servent *sp = 0;
+	struct servent *sp = NULL;
 	char line[80], *cp;
-	int width;
+	int width = 27-9;
 	int len = sizeof line;
 
-	width = Aflag ? 12 : 16;
 	if (vflag && width < strlen(inet6name(in6)))
 		width = strlen(inet6name(in6));
 	snprintf(line, len, "%.*s.", width, inet6name(in6));
@@ -428,12 +427,12 @@
 
 	cp = strchr(line, '\0');
 	if (!nflag && port && local)
-		GETSERVBYPORT6(port, proto, sp);
+		GETSERVBYPORT6(htons(port), proto, sp);
 	if (sp || port == 0)
-		snprintf(cp, len, "%.8s", sp ? sp->s_name : "*");
+		snprintf(cp, len, vflag ? "%s" : "%.8s", sp ? sp->s_name : "*");
 	else
-		snprintf(cp, len, "%d", ntohs((u_short)port));
-	width = Aflag ? 18 : 22;
+		snprintf(cp, len, "%d", port);
+	width = 27;
 	if (vflag && width < strlen(line))
 		width = strlen(line);
 bail:
@@ -463,16 +462,17 @@
 
 	if (first && !nflag) {
 		first = 0;
-		if (gethostname(domain, sizeof(domain)) == 0 &&
-		    (cp = strchr(domain, '.')))
+		if (gethostname(line, sizeof(line)) == 0 &&
+		    (cp = strchr(line, '.')))
 			(void) strlcpy(domain, cp + 1, sizeof domain);
 		else
 			domain[0] = '\0';
 	}
 #ifdef NETSNMP_ENABLE_IPV6
-	cp = 0;
+	cp = NULL;
 	if (!nflag && !IN6_IS_ADDR_UNSPECIFIED(in6p)) {
-		hp = gethostbyaddr((const char *)in6p, sizeof(*in6p), AF_INET6);
+		hp = netsnmp_gethostbyaddr((const char *)in6p, sizeof(*in6p),
+                                           AF_INET6);
 		if (hp) {
 			if ((cp = strchr(hp->h_name, '.')) &&
 			    !strcmp(cp + 1, domain))
@@ -493,7 +493,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/inetx.c b/apps/snmpnetstat/inetx.c
new file mode 100644
index 0000000..365ebee
--- /dev/null
+++ b/apps/snmpnetstat/inetx.c
@@ -0,0 +1,584 @@
+/*	$OpenBSD: inet6.c,v 1.31 2004/11/17 01:47:20 itojun Exp $	*/
+/*	BSDI inet.c,v 2.3 1995/10/24 02:19:29 prb Exp	*/
+/*
+ * Copyright (c) 1983, 1988, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifdef  INHERITED_CODE
+#ifndef lint
+#if 0
+static char sccsid[] = "@(#)inet.c	8.4 (Berkeley) 4/20/94";
+#else
+/*__RCSID("$OpenBSD: inet6.c,v 1.31 2004/11/17 01:47:20 itojun Exp $");*/
+/*__RCSID("KAME Id: inet6.c,v 1.10 2000/02/09 10:49:31 itojun Exp");*/
+#endif
+#endif /* not lint */
+#endif
+
+#include <net-snmp/net-snmp-config.h>
+
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_WINSOCK_H
+#include "winstub.h"
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+
+#include <net-snmp/net-snmp-includes.h>
+
+#include "main.h"
+#include "netstat.h"
+
+struct stat_table {
+    unsigned int entry;      /* entry number in table */
+    /*
+     * format string to printf(description, value) 
+     * warning: the %d must be before the %s 
+     */
+    char            description[80];
+};
+
+void	inetxprint(int, struct sockaddr_in6 , int, const char *, int);
+
+/*
+ * Print a summary of TCP connections
+ * Listening processes are suppressed unless the
+ *   -a (all) flag is specified.
+ */
+const char     *tcpxstates[] = {
+    "",
+    "CLOSED",
+    "LISTEN",
+    "SYNSENT",
+    "SYNRECEIVED",
+    "ESTABLISHED",
+    "FINWAIT1",
+    "FINWAIT2",
+    "CLOSEWAIT",
+    "LASTACK",
+    "CLOSING",
+    "TIMEWAIT"
+};
+#define TCP_NSTATES 11
+
+typedef struct {
+    int stat;
+    int hcstat;
+    const char *str;
+} systemstats_t;
+
+systemstats_t systemstats[] = {
+    {  3,  4, "datagrams input" },
+    {  5,  6, "octets received" },
+    {  7,  0, "hdr errors input" },
+    {  8,  0, "no routes input" },
+    {  9,  0, "address errors input" },
+    { 10,  0, "unknown protocol input" },
+    { 12, 13, "input datagrams forwarded" },
+    { 11,  0, "truncated datagrams input" },
+    { 14,  0, "input reassembly required" },
+    { 15,  0, "input reassemled OK" },
+    { 16,  0, "input reassembly failed" },
+    { 17,  0, "input datagrams discarded" },
+    { 18, 19, "input datagrams received" },
+    { 20, 21, "output datagram requests" },
+    { 22,  0, "output no route" },
+    { 23, 24, "datagrams forwarded" },
+    { 25,  0, "output datagrams discarded" },
+    { 26,  0, "output datagrams fragmentation required" },
+    { 27,  0, "output datagrams fragmented" },
+    { 28,  0, "output fragmentation failed" },
+    { 29,  0, "fragments created" },
+    { 30, 31, "datagrams transmitted" },
+    { 32, 33, "octets transmitted" },
+    {  0 }
+};
+
+systemstats_t icmpstats[] = {
+    {  2,  0, "input messages" },
+    {  3,  0, "input errors" },
+    {  4,  0, "output messages" },
+    {  5,  0, "output errors" },
+    {  0 }
+};
+
+typedef struct {
+    int code;
+    const char *name;
+} codelist_t;
+
+codelist_t icmpcodes[] = {
+    {   0, "Echo reply" },
+    {   3, "Destination unreachable" },
+    {   4, "Source quench" },
+    {   5, "Redirect" },
+    {   6, "Alternate host address" },
+    {   8, "Echo request" },
+    {   9, "Router advertisement" },
+    {  10, "Router selection" },
+    {  11, "Time exceeded" },
+    {  12, "Parameter problem" },
+    {  13, "Timestamp request" },
+    {  14, "Timestamp reply" },
+    {  15, "Information request" },
+    {  16, "Information reply" },
+    {  17, "Address mask request" },
+    {  18, "Address mask reply" },
+    { 0 }
+};
+
+codelist_t icmp6codes[] = {
+    {   1,   "Destination Unreachable" },
+    {   2,   "Packet Too Big" },
+    {   3,   "Time Exceeded" },
+    {   4,   "Parameter Problem" },
+    { 100,   "Private experimentation 100" },
+    { 101,   "Private experimentation 101" },
+    { 127,   "Reserved for expansion of ICMPv6 error messages" },
+    { 128,   "Echo Request" },
+    { 129,   "Echo Reply" },
+    { 130,   "Multicast Listener Query" },
+    { 131,   "Multicast Listener Report" },
+    { 132,   "Multicast Listener Done" },
+    { 133,   "Router Solicitation" },
+    { 134,   "Router Advertisement" },
+    { 135,   "Neighbor Solicitation" },
+    { 136,   "Neighbor Advertisement" },
+    { 137,   "Redirect Message" },
+    { 138,   "Router Renumbering" },
+    { 139,   "ICMP Node Information Query" },
+    { 140,   "ICMP Node Information Response" },
+    { 141,   "Inverse Neighbor Discovery Solicitation Message" },
+    { 142,   "Inverse Neighbor Discovery Advertisement Message" },
+    { 143,   "Version 2 Multicast Listener Report" },
+    { 144,   "Home Agent Address Discovery Request Message" },
+    { 145,   "Home Agent Address Discovery Reply Message" },
+    { 146,   "Mobile Prefix Solicitation" },
+    { 147,   "Mobile Prefix Advertisement" },
+    { 148,   "Certification Path Solicitation Message" },
+    { 149,   "Certification Path Advertisement Message" },
+    { 151,   "Multicast Router Advertisement" },
+    { 152,   "Multicast Router Solicitation" },
+    { 153,   "Multicast Router Termination" },
+    { 154,   "FMIPv6 Messages" },
+    { 155,   "RPL Control Message" },
+    { 0 }
+};
+
+
+void
+tcpxprotopr(const char *name)
+{
+    netsnmp_variable_list *var, *vp, *pvar;
+    oid    tcpConnectionState_oid[] = { 1,3,6,1,2,1,6,19,1,7 };
+    size_t tcpConnectionState_len   = OID_LENGTH( tcpConnectionState_oid );
+    int    state, i;
+    struct sockaddr_in6 localAddr, remoteAddr;
+    int    localPort,     remotePort,  pid = 0;
+    int    localType,    remoteType, inx;
+    int    first = 1;
+    static int done = 0;
+
+    if (done++) return;
+
+    /*
+     * Walking the v6 tcpConnectionState column will provide all
+     *   the necessary information.
+     */
+    var = NULL;
+    snmp_varlist_add_variable( &var, tcpConnectionState_oid,
+                                     tcpConnectionState_len,
+                                     ASN_NULL, NULL,  0);
+    if (netsnmp_query_walk( var, ss ) != SNMP_ERR_NOERROR)
+        return;
+    if ((var->type & 0xF0) == 0x80)	/* Exception */
+        return;
+
+    for (vp = var; vp ; vp=vp->next_variable) {
+	char lname[5];
+        state = *vp->val.integer;
+	inx = tcpConnectionState_len;
+	pvar = NULL;
+
+	vp->name[inx-1] = 8;
+	snmp_varlist_add_variable( &pvar, vp->name, vp->name_length,
+					 ASN_NULL, NULL,  0);
+	if (netsnmp_query_get( pvar, ss ) != SNMP_ERR_NOERROR) {
+	    snmp_free_var( pvar );
+	    return;
+	}
+	if ((pvar->type & 0xF0) != 0x80)	/* Exception */
+	    pid = *pvar->val.integer;
+        
+        /* Extract the local/remote information from the index values */
+	localType = vp->name[inx++];
+	for (i = 0; i < vp->name[inx]; i++)
+	    localAddr.sin6_addr.s6_addr[i] = vp->name[inx+i+1];
+	inx += vp->name[inx] + 1;
+        localPort    = vp->name[inx++];
+	remoteType = vp->name[inx++];
+	for (i = 0; i < vp->name[inx]; i++)
+	    remoteAddr.sin6_addr.s6_addr[i] = vp->name[inx+i+1];
+	inx += vp->name[inx] + 1;
+        remotePort    = vp->name[inx++];
+
+	snmp_free_varbind(pvar);
+
+	if (af == AF_INET && localType == 2) continue;
+	if (af == AF_INET6 && localType != 2) continue;
+
+        if (first) {
+            printf("Active Internet (%s) Connections", "tcp");
+            putchar('\n');
+            printf("%-5.5s %-27.27s %-27.27s %11.11s %5.5s\n",
+                   "Proto", "Local Address", "Remote Address", "State", "PID");
+            first = 0;
+        }
+
+	strcpy(lname, "tcp");
+	if (localType == 2) lname[3] = '6';
+	else lname[3] = '4';
+	lname[4] = 0;
+        printf("%-5.5s", lname);
+        inetxprint(localType, localAddr,  localPort, "tcp", 1);
+        inetxprint(remoteType, remoteAddr, remotePort, "tcp", 0);
+        if ( state < 1 || state > TCP_NSTATES )
+            printf(" %11d %5d\n", state, pid);
+        else
+            printf(" %11s %5d\n", tcpxstates[ state ], pid);
+    }
+    snmp_free_varbind( var );
+
+    if (aflag)
+	listenxprotopr(name);
+}
+
+/*
+ * Print a summary of listening "connections"
+ */
+void
+listenxprotopr(const char *name)
+{
+    netsnmp_variable_list *var, *vp;
+    oid    tcpListenerProcess_oid[] = { 1,3,6,1,2,1,6,20,1,4 };
+    size_t tcpListenerProcess_len   = OID_LENGTH( tcpListenerProcess_oid );
+    struct sockaddr_in6 localAddr;
+    int    localType, localPort, pid;
+    int    i, inx;
+
+    /*
+     * Walking a single column of the udpTable will provide
+     *   all the necessary information from the index values.
+     */
+    var = NULL;
+    snmp_varlist_add_variable( &var, tcpListenerProcess_oid,
+                                     tcpListenerProcess_len,
+                                     ASN_NULL, NULL,  0);
+    if (netsnmp_query_walk( var, ss ) != SNMP_ERR_NOERROR)
+        return;
+    if ((var->type & 0xF0) == 0x80)	/* Exception */
+        return;
+
+    printf("Listening Internet (%s) Connections\n", "tcp");
+    printf("%-5.5s %-27.27s %5s\n", "Proto", "Local Address", "PID");
+    for (vp = var; vp ; vp=vp->next_variable) {
+	char lname[5];
+	inx = tcpListenerProcess_len;
+        /*
+         * Extract the local port from the index values, but take
+         *   the IP address from the varbind value, (which is why
+         *   we walked udpLocalAddress rather than udpLocalPort)
+         */
+	localType = vp->name[inx++];
+	if (af == AF_INET && localType == 2) continue;
+	if (af == AF_INET6 && localType != 2) continue;
+
+	for (i = 0; i < vp->name[inx]; i++)
+	    localAddr.sin6_addr.s6_addr[i] = vp->name[inx+i+1];
+	inx += vp->name[inx]+1;
+        localPort = vp->name[ inx++ ];
+        pid   = *vp->val.integer;
+	strcpy(lname, "tcp");
+	if (localType == 2) lname[3] = '6';
+	else lname[3] = '4';
+	lname[4] = 0;
+        printf("%-5.5s", lname);
+        inetxprint(localType, localAddr, localPort, "tcp", 1);
+        printf(" %5d\n", pid);
+    }
+    snmp_free_varbind( var );
+}
+
+/*
+ * Print a summary of UDPv6 "connections"
+ *    XXX - what about "listening" services ??
+ */
+void
+udpxprotopr(const char *name)
+{
+    netsnmp_variable_list *var, *vp;
+    oid    udpEndpointProcess_oid[] = { 1,3,6,1,2,1,7,7,1,8 };
+    size_t udpEndpointProcess_len   = OID_LENGTH( udpEndpointProcess_oid );
+    struct sockaddr_in6 localAddr, remoteAddr;
+    int    localType, remoteType, localPort, remotePort, pid;
+    int    i, inx;
+    static int done = 0;
+
+    if (done++) return;
+
+    /*
+     * Walking a single column of the udpTable will provide
+     *   all the necessary information from the index values.
+     */
+    var = NULL;
+    snmp_varlist_add_variable( &var, udpEndpointProcess_oid,
+                                     udpEndpointProcess_len,
+                                     ASN_NULL, NULL,  0);
+    if (netsnmp_query_walk( var, ss ) != SNMP_ERR_NOERROR)
+        return;
+    if ((var->type & 0xF0) == 0x80)	/* Exception */
+        return;
+
+    printf("Active Internet (%s) Connections\n", "udp");
+    printf("%-5.5s %-27.27s %-27.27s %5s\n", "Proto", "Local Address", "Remote Address", "PID");
+    for (vp = var; vp ; vp=vp->next_variable) {
+        char lname[5];
+	inx = udpEndpointProcess_len;
+        /*
+         * Extract the local port from the index values, but take
+         *   the IP address from the varbind value, (which is why
+         *   we walked udpLocalAddress rather than udpLocalPort)
+         */
+	localType = vp->name[inx++];
+	if (af == AF_INET && localType == 2) continue;
+	if (af == AF_INET6 && localType != 2) continue;
+	for (i = 0; i < vp->name[inx]; i++)
+	    localAddr.sin6_addr.s6_addr[i] = vp->name[inx+i+1];
+	inx += vp->name[inx]+1;
+        localPort = vp->name[ inx++ ];
+	remoteType = vp->name[inx++];
+	for (i = 0; i < vp->name[inx]; i++)
+	    remoteAddr.sin6_addr.s6_addr[i] = vp->name[inx+i+1];
+	inx += vp->name[inx]+1;
+        remotePort = vp->name[ inx++ ];
+        pid   = *vp->val.integer;
+	strcpy(lname, "udp");
+	if (localType == 2) lname[3] = '6';
+	else lname[3] = '4';
+	lname[4] = 0;
+        printf("%-5.5s", lname);
+        inetxprint(localType, localAddr, localPort, "udp", 1);
+        inetxprint(remoteType, remoteAddr, remotePort, "udp", 1);
+        printf(" %5d\n", pid);
+    }
+    snmp_free_varbind( var );
+}
+
+static void
+statsprint(const char *name, const systemstats_t *st, int proto,
+	const oid *tbl, size_t tbllen)
+{
+    oid var[32];
+    size_t len;
+    netsnmp_variable_list *vb;
+
+    memcpy(var, tbl, tbllen*sizeof(oid));
+    var[tbllen+1] = proto;
+    len = tbllen+2;
+
+    printf("%s:\n", name);
+    while (st->stat) {
+	vb = NULL;
+	if (st->hcstat) {
+	    var[tbllen] = st->hcstat;
+	    snmp_varlist_add_variable( &vb, var, len, ASN_NULL, NULL,  0);
+	    if (netsnmp_query_get( vb, ss ) != SNMP_ERR_NOERROR) {
+		snmp_free_var( vb );
+		vb = NULL;
+	    }
+	}
+	if (!vb) {
+	    var[tbllen] = st->stat;
+	    snmp_varlist_add_variable( &vb, var, len, ASN_NULL, NULL, 0);
+	    if (netsnmp_query_get( vb, ss ) != SNMP_ERR_NOERROR) {
+		snmp_free_var( vb );
+		vb = NULL;
+	    }
+	}
+	if (vb) {
+	    if (vb->type == ASN_COUNTER) {
+		if (*vb->val.integer > 0 || sflag == 1)
+		    printf("%14lu %s\n", *vb->val.integer, st->str);
+	    }
+	    else if (vb->type == ASN_COUNTER64) {
+		char a64buf[I64CHARSZ + 1];
+		printU64(a64buf, vb->val.counter64);
+		if (strcmp(a64buf, "0") != 0 || sflag == 1)
+		    printf("%14s %s\n", a64buf, st->str);
+	    }
+	    else
+		printf("%14s %s\n", "-", st->str);
+	    snmp_free_varbind(vb);
+	}
+	else {
+	    printf("%14s %s\n", "-", st->str);
+	}
+	st++;
+    }
+}
+
+static void
+prhisto(const char *name, const oid *var, size_t len, int ver, codelist_t *cs)
+{
+    netsnmp_variable_list *vb = NULL, *vp;
+    codelist_t *cp;
+    int code;
+    char nocode[32];
+
+    snmp_varlist_add_variable( &vb, var, len, ASN_NULL, NULL,  0);
+    if (netsnmp_query_walk( vb, ss ) != SNMP_ERR_NOERROR) {
+	snmp_free_var( vb );
+	return;
+    }
+    printf("     %s histogram:\n", name);
+    printf("     %10s %10s %s\n", "input", "output", "type");
+    for (code = 0; code < 256; code++) {
+	unsigned long inp = 0, out = 0;
+	int found = 0;
+	vp = vb;
+	while (vp && found != 2) {
+	    if (vp->name[11] == code && vp->name[10] == ver) {
+		if (vp->name[9] == 3) inp = *vp->val.integer;
+		else out = *vp->val.integer;
+		found++;
+	    }
+	    vp = vp->next_variable;
+	}
+	if (found) {
+	    cp = cs;
+	    while (cp->name && cp->code != code) cp++;
+	    if (inp || out || sflag == 1) {
+		if (!cp->code)
+		    snprintf(nocode, sizeof nocode, "type %d", code);
+		printf("     %10lu %10lu %s\n", inp, out, cp->name ? cp->name : nocode);
+	    }
+	}
+    }
+    snmp_free_varbind(vb);
+}
+
+void
+ipx_stats(const char *name)
+{
+    oid ipsysstat_oid[] = { 1, 3, 6, 1, 2, 1, 4, 31, 1, 1 };
+    size_t ipsysstat_len = sizeof(ipsysstat_oid) / sizeof(ipsysstat_oid[0]);
+    static int first = 1;
+
+    if (!first) return;
+    first = 0;
+
+    if (!name || strcmp(name, "ip") == 0)
+	statsprint("ip", systemstats, 1, ipsysstat_oid, ipsysstat_len);
+    if (!name || strcmp(name, "ip6") == 0)
+	statsprint("ip6", systemstats, 2, ipsysstat_oid, ipsysstat_len);
+}
+
+void
+icmpx_stats(const char *name)
+{
+    oid icmpstat_oid[] = { 1, 3, 6, 1, 2, 1, 5, 29, 1 };
+    size_t icmpstat_len = sizeof(icmpstat_oid) / sizeof(icmpstat_oid[0]);
+    oid icmpmsg_oid[] = { 1, 3, 6, 1, 2, 1, 5, 30, 1 };
+    size_t icmpmsg_len = sizeof(icmpmsg_oid) / sizeof(icmpmsg_oid[0]);
+    static int first = 1;
+
+    if (!first)
+	return;
+    first = 0;
+
+    if (!name || strcmp(name, "icmp") == 0) {
+	statsprint("icmp", icmpstats, 1, icmpstat_oid, icmpstat_len);
+	prhisto("icmp", icmpmsg_oid, icmpmsg_len, 1, icmpcodes);
+    }
+    if (!name || strcmp(name, "icmp6") == 0) {
+	statsprint("icmp6", icmpstats, 2, icmpstat_oid, icmpstat_len);
+	prhisto("icmp6", icmpmsg_oid, icmpmsg_len, 2, icmp6codes);
+    }
+}
+
+
+static void
+unknownprint(void)
+{
+    char line[80], *cp;
+    int width = 27;
+
+    if (vflag)
+	snprintf(line, sizeof line, "%s.", "*");
+    else
+	snprintf(line, sizeof line, "%.*s.", width-9, "*");
+    cp = strchr(line, '\0');
+    snprintf(cp, line + sizeof line - cp, vflag ? "%s" : "%.8s", "*");
+    if (vflag && width < strlen(line))
+	width = strlen(line);
+    printf(" %-*.*s", width, width, line);
+}
+
+/*
+ * Pretty print an Internet address (net address + port).
+ * If the nflag was specified, use numbers instead of names.
+ */
+
+void
+inetxprint(int proto, struct sockaddr_in6 in6, int port, const char *name, int local)
+{
+
+	if (proto == 2)
+	    inet6print((u_char *)&in6.sin6_addr.s6_addr, port, name, local);
+	else if (proto == 1)
+	    inetprint((struct in_addr *)&in6.sin6_addr.s6_addr, port, name, local);
+	else if (proto == 0)
+	    unknownprint();
+	else abort();
+}
diff --git a/apps/snmpnetstat/main.c b/apps/snmpnetstat/main.c
index 947c02b..0e977ad 100644
--- a/apps/snmpnetstat/main.c
+++ b/apps/snmpnetstat/main.c
@@ -57,13 +57,17 @@
 #include "main.h"
 #include "netstat.h"
 
-int	Aflag;		/* show addresses of protocol control block */
+#if HAVE_WINSOCK_H
+#include "winstub.h"
+#endif
+
 int	aflag;		/* show all sockets (including servers) */
 int	bflag;		/* show bytes instead of packets */
 int	dflag;		/* show i/f dropped packets */
 int	gflag;		/* show group (multicast) routing or stats */
 int	iflag;		/* show interfaces */
 int	lflag;		/* show routing table with use and ref */
+int	Lflag;		/* Legacy mibs */
 int	mflag;		/* show memory stats */
 int	nflag;		/* show addresses numerically */
 int	oflag;		/* Open/Net-BSD style octet output */
@@ -75,40 +79,56 @@
 int	tflag;		/* show i/f watchdog timers */
 int	vflag;		/* be verbose */
 
+
 int	interval;	/* repeat interval for i/f stats */
 char	*intrface;	/* desired i/f for stats, or NULL for all i/fs */
 int	af;		/* address family */
+int     max_getbulk = 32;  /* specifies the max-repeaters value to use with GETBULK requests */
 
 char    *progname = NULL;
-
+const char *pname;
     /*
      * struct nlist nl[] - Omitted
      */
 
+typedef void (stringfun)(const char*);
+
 struct protox {
         /* pr_index/pr_sindex - Omitted */ 
-	int	pr_wanted;			/* 1 if wanted, 0 otherwise */
-	void	(*pr_cblocks)(const char *);	/* control blocks printing routine */
-	void	(*pr_stats)(const char *);	/* statistics printing routine */
-  const char	*pr_name;			/* well-known name */
-} protox[] = {
+	int		pr_wanted;	/* 1 if wanted, 0 otherwise */
+	stringfun	*pr_cblocks;	/* control blocks printing routine */
+	stringfun	*pr_stats;	/* statistics printing routine */
+	const char	*pr_name;	/* well-known name */
+};
+
+struct protox protox[] = {
 	{ 1,	tcpprotopr,	tcp_stats,	"tcp" },	
 	{ 1,	udpprotopr,	udp_stats,	"udp" },	
 
-	{ 1,	0,	ip_stats,	"ip" },		/* protopr Omitted */
-	{ 1,	0,	icmp_stats,	"icmp" },	
+	{ 1,	(stringfun*)0,	ip_stats,	"ip" },	/* protopr Omitted */
+	{ 1,	(stringfun*)0,	icmp_stats,	"icmp" },
 	/* igmp/ah/esp/ipencap/etherip/ipcomp/carp/pfsync/pim - Omitted */
-	{ 0,	0,	0,		0 }
+	{ 0,	(stringfun*)0,	(stringfun*)0,	NULL }
 };
 
 struct protox ip6protox[] = {
-	{ 1,	tcp6protopr,	0,	"tcp6" },
-	{ 1,	udp6protopr,	0,	"udp6" },	
+	{ 1,	tcp6protopr,	(stringfun*)0,	"tcp6" },
+	{ 1,	udp6protopr,	(stringfun*)0,	"udp6" },
 
-	{ 1,	0,	ip6_stats,	"ip6" },	/* ip6protopr Omitted */
-	{ 1,	0,	icmp6_stats,	"icmp6" },	
+	{ 1,	(stringfun*)0,	ip6_stats,	"ip6" },/* ip6protopr Omitted */
+	{ 1,	(stringfun*)0,	icmp6_stats,	"icmp6" },
 	/* pim6/rip6 - Omitted */
-	{ 0,	0,	0,		0 }
+	{ 0,	(stringfun*)0,	(stringfun*)0,	NULL }
+};
+
+struct protox ipxprotox[] = {
+	{ 1,	tcpxprotopr,	tcp_stats,	"tcp" },	
+	{ 1,	udpxprotopr,	udp_stats,	"udp" },	
+	{ 1,	(stringfun*)0,	ipx_stats,	"ip" },/* ip6protopr Omitted */
+	{ 1,	(stringfun*)0,	ipx_stats,	"ip6" },/* ip6protopr Omitted */
+	{ 1,	(stringfun*)0,	icmpx_stats,	"icmp" },
+	{ 1,	(stringfun*)0,	icmpx_stats,	"icmp6" },
+	{ 0,	(stringfun*)0,	(stringfun*)0,	NULL }
 };
 
 	/* {ipx,ns,atalk}protox Omitted */
@@ -132,11 +152,6 @@
     case 'C':
         while (*optarg) {
             switch (*optarg++) {
-	    /*	case 'A':		*BSD:  display PCB addresses
-					Linux: protocol family
-			Aflag = 1;
-			break;
-	     */
 		case 'a':
 			aflag = 1;
 			break;
@@ -186,6 +201,9 @@
 		case 'i':
 			iflag = 1;
 			break;
+		case 'L':
+			Lflag = 1;
+			break;
 	    /*  case 'L':		FreeBSD: Display listen queue lengths
 					NetBSD:  Suppress link-level routes */
 	    /*	case 'l':		OpenBSD: Wider IPv6 display
@@ -222,6 +240,7 @@
 				exit(1);
 			}
 			pflag = 1;
+			pname = tp->pr_name;
 			return;
 	    /*	case 'q':		NetBSD:  IRQ information
 					OpenBSD: Suppress inactive I/Fs
@@ -231,6 +250,24 @@
 		case 'r':
 			rflag = 1;
 			break;
+		case 'R':
+                        if (optind < argc) {
+                            if (argv[optind]) {
+                                max_getbulk = atoi(argv[optind]);
+                                if (max_getbulk == 0) {
+                                    usage();
+                                    fprintf(stderr, "Bad -CR option: %s\n", 
+                                            argv[optind]);
+                                    exit(1);
+                                }
+                            }
+                        } else {
+                            usage();
+                            fprintf(stderr, "Bad -CR option: no argument given\n");
+                            exit(1);
+                        }
+                        optind++;
+                        break;
 		case 'S':	     /* FreeBSD:
 					NetBSD:  Semi-numeric display
 					OpenBSD: Show route source selector */
@@ -294,11 +331,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;
 	}
@@ -330,6 +369,7 @@
 	 *     Kernel namelis handling
 	 */
 
+#if 0
 	if (mflag) {
             /*
 		mbpr(nl[N_MBSTAT].n_value, nl[N_MBPOOL].n_value,
@@ -341,6 +381,7 @@
 		printproto(tp, tp->pr_name);
 		exit(0);
 	}
+#endif
 	/*
 	 * Keep file descriptors open to avoid overhead
 	 * of open/close on each call to get* routines.
@@ -357,7 +398,10 @@
 			rt_stats();
 		else
               */
-			routepr();
+		if (Lflag || routexpr(af) == 0) {
+		    if (route4pr(af) == 0 && af == AF_INET) routepr();
+		    route6pr(af);
+		}
 		exit(0);
 	}
      /*
@@ -388,23 +432,33 @@
 		exit(0);
 	}
      */
-	if (af == AF_INET || af == AF_UNSPEC) {
+	setservent(1);
+        if (Lflag) {
+            switch (af) {
+            case AF_UNSPEC:
 		setprotoent(1);
-		setservent(1);
 		/* ugh, this is O(MN) ... why do we do this? */
 		while ((p = getprotoent())) {
 			for (tp = protox; tp->pr_name; tp++)
 				if (strcmp(tp->pr_name, p->p_name) == 0)
-					break;
-			if (tp->pr_name == 0 || tp->pr_wanted == 0)
-				continue;
-			printproto(tp, p->p_name);
+					if (tp->pr_name && tp->pr_wanted)
+					    printproto(tp, p->p_name);
 		}
 		endprotoent();
+                break;
+            case AF_INET:
+                    for (tp = protox; tp->pr_name; tp++)
+                            printproto(tp, tp->pr_name);
+            case AF_INET6:
+                    for (tp = ip6protox; tp->pr_name; tp++)
+                            printproto(tp, tp->pr_name);
+            }
 	}
-	if (af == AF_INET6 || af == AF_UNSPEC)
-		for (tp = ip6protox; tp->pr_name; tp++)
-			printproto(tp, tp->pr_name);
+        else {
+	    for (tp = ipxprotox; tp->pr_name; tp++)
+		if (!pname || strcmp(pname,tp->pr_name) == 0)
+		    printproto(tp, pname);
+	}
     /*
 	if (af == AF_IPX || af == AF_UNSPEC)
 		for (tp = ipxprotox; tp->pr_name; tp++)
@@ -449,12 +503,6 @@
 	return (n != 1 ? "s" : "");
 }
 
-const char *
-plurales(int n)
-{
-	return (n != 1 ? "es" : "");
-}
-
 /*
  * Find the protox for the given "well-known" name.
  */
@@ -489,7 +537,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();
@@ -504,14 +552,12 @@
 usage(void)
 {
 	(void)fprintf(stderr,
-"usage: %s [snmp_opts] [-Can] [-Cf address_family]\n", progname);
+"usage: %s [snmp_opts] [-Canv] [-Cf address_family]\n", progname);
 	(void)fprintf(stderr,
-"       %s [snmp_opts] [-CbdgimnrSs] [-Cf address_family]\n", progname);
+"       %s [snmp_opts] [-Cibodnv] [-CI interface] [-Cw wait]\n", progname);
 	(void)fprintf(stderr,
-"       %s [snmp_opts] [-Cbdn] [-CI interface] [-Cw wait]\n", progname);
+"       %s [snmp_opts] [-Cs[s]] [-Cp protocol]\n", progname);
 	(void)fprintf(stderr,
-"       %s [snmp_opts] [-Cs] [-Cp protocol]\n", progname);
-	(void)fprintf(stderr,
-"       %s [snmp_opts] [-Ca] [-Cf address_family] [-Ci | -CI interface]\n", progname);
+"       %s [snmp_opts] [-Crnv] [-Cf address_family]\n", progname);
 	exit(1);
 }
diff --git a/apps/snmpnetstat/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/netstat.h b/apps/snmpnetstat/netstat.h
index 2762568..ba61eb3 100644
--- a/apps/snmpnetstat/netstat.h
+++ b/apps/snmpnetstat/netstat.h
@@ -39,13 +39,13 @@
 /* What is the max length of a pointer printed with %p (including 0x)? */
 #define PLEN	(LONG_BIT / 4 + 2)
 
-extern int	Aflag;		/* show addresses of protocol control block */
 extern int	aflag;		/* show all sockets (including servers) */
 extern int	bflag;		/* show bytes instead of packets */
 extern int	dflag;		/* show i/f dropped packets */
 extern int	gflag;		/* show group (multicast) routing or stats */
 extern int	iflag;		/* show interfaces */
 extern int	lflag;		/* show routing table with use and ref */
+extern int	Lflag;		/* Legacy mibs */
 extern int	mflag;		/* show memory stats */
 extern int	nflag;		/* show addresses numerically */
 extern int	oflag;		/* Open/Net-BSD style octet output */
@@ -62,11 +62,11 @@
 extern char	*intrface;	/* desired i/f for stats, or NULL for all i/fs */
 
 extern int	af;		/* address family */
+extern int  max_getbulk;  /* specifies the max-repeaters value to use with GETBULK requests */
 
 extern	char *__progname; /* program name, from crt0.o */
 
 const char	*plural(int);
-const char	*plurales(int);
 
 void	tcpprotopr(const char *);
 void	udpprotopr(const char *);
@@ -80,15 +80,26 @@
 void	ip6_stats(  const char *);
 void	icmp6_stats(const char *);
 
+void	tcpxprotopr(const char *);
+void	udpxprotopr(const char *);
+void	listenxprotopr(const char *);
+void	ipx_stats(const char *);
+void	icmpx_stats(const char *);
+
 void	pr_rthdr(int);
 void	pr_encaphdr(void);
 void	pr_family(int);
 void	rt_stats(void);
 
+void    get_ifname(char *, int);
 char	*routename(in_addr_t);
 char	*netname(in_addr_t, in_addr_t);
 char	*ns_print(struct sockaddr *);
 void	routepr(void);
+int     route4pr(int);
+int     route6pr(int);
+int     routexpr(int);
 
 void	intpr(int);
-
+void	inetprint(struct in_addr *, int, const char *, int);
+void	inet6print(unsigned char *, int, const char *, int);
diff --git a/apps/snmpnetstat/route.c b/apps/snmpnetstat/route.c
index 98a9c0c..1dba74d 100644
--- a/apps/snmpnetstat/route.c
+++ b/apps/snmpnetstat/route.c
@@ -80,13 +80,13 @@
 #define SET_ALL  0x1f
 
 struct route_entry {
-    oid             instance[4];
     in_addr_t       destination;
     in_addr_t       mask;
     in_addr_t       gateway;
     int             ifNumber;
     int             type;
     int             proto;
+    int             af;
     int             set_bits;
     char            ifname[64];
 };
@@ -110,7 +110,7 @@
     netsnmp_variable_list *var=NULL, *vp;
     char  *cp;
     
-    printf("Routing tables\n");
+    printf("Routing tables (ipRouteTable)\n");
     pr_rthdr(AF_INET);
 
 #define ADD_RTVAR( x ) rtcol_oid[ rtcol_len-1 ] = x; \
@@ -132,6 +132,10 @@
         if ( snmp_oid_compare( rtcol_oid, rtcol_len,
                                var->name, rtcol_len) != 0 )
             break;    /* End of Table */
+	if (var->type == SNMP_NOSUCHOBJECT ||
+                var->type == SNMP_NOSUCHINSTANCE ||
+                var->type == SNMP_ENDOFMIBVIEW)
+	    break;
         memset( &route, 0, sizeof( struct route_entry ));
         /* Extract ipRouteDest index value */
         cp = tmpAddr.data;
@@ -174,6 +178,104 @@
 }
 
 
+int
+route4pr(int af)
+{
+    struct route_entry  route, *rp = &route;
+    oid    rtcol_oid[]  = { 1,3,6,1,2,1,4,24,4,1,0 }; /* ipCidrRouteEntry */
+    size_t rtcol_len    = OID_LENGTH( rtcol_oid );
+    netsnmp_variable_list *var = NULL, *vp;
+    union {
+        in_addr_t addr;
+        unsigned char data[4];
+    } tmpAddr;
+    int printed = 0;
+    int hdr_af = AF_UNSPEC;
+
+    if (af != AF_UNSPEC && af != AF_INET)
+        return 0;
+
+#define ADD_RTVAR( x ) rtcol_oid[ rtcol_len-1 ] = x; \
+    snmp_varlist_add_variable( &var, rtcol_oid, rtcol_len, ASN_NULL, NULL,  0)
+    ADD_RTVAR( 5 );                 /* ipCidrRouteIfIndex */
+    ADD_RTVAR( 6 );                 /* ipCidrRouteType    */
+    ADD_RTVAR( 7 );                 /* ipCidrRouteProto   */
+#undef ADD_RTVAR
+
+    /*
+     * Now walk the ipCidrRouteTable, reporting the various route entries
+     */
+    while ( 1 ) {
+        oid *op;
+        unsigned char *cp;
+
+        if (netsnmp_query_getnext( var, ss ) != SNMP_ERR_NOERROR)
+            break;
+        rtcol_oid[ rtcol_len-1 ] = 5;        /* ipRouteIfIndex */
+        if ( snmp_oid_compare( rtcol_oid, rtcol_len,
+                               var->name, rtcol_len) != 0 )
+            break;    /* End of Table */
+        if (var->type == SNMP_NOSUCHOBJECT ||
+                var->type == SNMP_NOSUCHINSTANCE ||
+                var->type == SNMP_ENDOFMIBVIEW)
+            break;
+        memset( &route, 0, sizeof( struct route_entry ));
+	rp->af = AF_INET;
+	op = var->name+rtcol_len;
+        cp = tmpAddr.data;
+        cp[0] = *op++ & 0xff;
+        cp[1] = *op++ & 0xff;
+        cp[2] = *op++ & 0xff;
+        cp[3] = *op++ & 0xff;
+        rp->destination = tmpAddr.addr;
+        cp = tmpAddr.data;
+        cp[0] = *op++ & 0xff;
+        cp[1] = *op++ & 0xff;
+        cp[2] = *op++ & 0xff;
+        cp[3] = *op++ & 0xff;
+        rp->mask = tmpAddr.addr;
+	op++; /* ipCidrRouteTos */
+        cp = tmpAddr.data;
+        cp[0] = *op++ & 0xff;
+        cp[1] = *op++ & 0xff;
+        cp[2] = *op++ & 0xff;
+        cp[3] = *op++ & 0xff;
+        rp->gateway = tmpAddr.addr;
+	rp->set_bits = SET_MASK | SET_GWAY;
+
+        for ( vp=var; vp; vp=vp->next_variable ) {
+            switch ( vp->name[ rtcol_len - 1 ] ) {
+            case 5:     /* ipCidrRouteIfIndex */
+                rp->ifNumber  = *vp->val.integer;
+                rp->set_bits |= SET_IFNO;
+                break;
+            case 6:     /* ipCidrRouteType    */
+                rp->type      = *vp->val.integer;
+                rp->set_bits |= SET_TYPE;
+                break;
+            case 7:     /* ipCidrRouteProto   */
+                rp->proto     = *vp->val.integer;
+                rp->set_bits |= SET_PRTO;
+                break;
+            }
+        }
+        if (rp->set_bits != SET_ALL) {
+            continue;   /* Incomplete query */
+        }
+
+        if (hdr_af != rp->af) {
+            if (hdr_af != AF_UNSPEC)
+                printf("\n");
+            hdr_af = rp->af;
+	    printf("Routing tables (ipCidrRouteTable)\n");
+            pr_rthdr(hdr_af);
+        }
+        p_rtnode( rp );
+        printed++;
+    }
+    return printed;
+}
+
 
 struct iflist {
     int             index;
@@ -186,6 +288,8 @@
 {
     oid    ifdescr_oid[]  = { 1,3,6,1,2,1,2,2,1,2,0 };
     size_t ifdescr_len    = OID_LENGTH( ifdescr_oid );
+    oid    ifxcol_oid[] = { 1,3,6,1,2,1,31,1,1,1,1,0 };
+    size_t ifxcol_len   = OID_LENGTH( ifxcol_oid );
     netsnmp_variable_list *var = NULL;
     struct iflist         *ip;
 
@@ -204,6 +308,18 @@
     Iflist = ip;
     ip->index = ifIndex;
 
+    ifxcol_oid[ ifxcol_len-1 ] = ifIndex;
+    snmp_varlist_add_variable( &var, ifxcol_oid, ifxcol_len,
+                               ASN_NULL, NULL,  0);
+    if (netsnmp_query_get( var, ss ) == SNMP_ERR_NOERROR) {
+        if (var->val_len >= sizeof(ip->name))
+            var->val_len  = sizeof(ip->name) - 1;
+        memmove(ip->name, var->val.string, var->val_len);
+        ip->name[var->val_len] = '\0';
+	strcpy(name, ip->name);
+	return;
+    }
+
     ifdescr_oid[ ifdescr_len-1 ] = ifIndex;
     snmp_varlist_add_variable( &var, ifdescr_oid, ifdescr_len,
                                ASN_NULL, NULL,  0);
@@ -218,50 +334,6 @@
     strcpy(name, ip->name);
 }
 
-/*
- * Print address family header before a section of the routing table.
- */
-void
-pr_family(int af)
-{
-	const char *afname;
-
-	switch (af) {
-	case AF_INET:
-		afname = "Internet";
-		break;
-#ifdef NETSNMP_ENABLE_IPV6
-	case AF_INET6:
-		afname = "Internet6";
-		break;
-#endif
-    /*
-	case AF_NS:
-		afname = "XNS";
-		break;
-	case AF_IPX:
-		afname = "IPX";
-		break;
-	case AF_CCITT:
-		afname = "X.25";
-		break;
-	case PF_KEY:
-		afname = "Encap";
-		break;
-	case AF_APPLETALK:
-		afname = "AppleTalk";
-		break;
-     */
-	default:
-		afname = NULL;
-		break;
-	}
-	if (afname)
-		printf("\n%s:\n", afname);
-	else
-		printf("\nProtocol Family %d:\n", af);
-}
-
 /* column widths; each followed by one space */
 #ifndef NETSNMP_ENABLE_IPV6
 #define	WID_DST(af)	26	/* width of destination column */
@@ -323,15 +395,15 @@
 
 	if (first) {
 		first = 0;
-		if (gethostname(domain, sizeof domain) == 0 &&
-		    (cp = strchr(domain, '.')))
+		if (gethostname(line, sizeof line) == 0 &&
+		    (cp = strchr(line, '.')))
 			(void) strlcpy(domain, cp + 1, sizeof domain);
 		else
 			domain[0] = '\0';
 	}
 	cp = NULL;
 	if (!nflag) {
-		hp = gethostbyaddr((char *)&in, sizeof (struct in_addr),
+		hp = netsnmp_gethostbyaddr((char *)&in, sizeof (struct in_addr),
 		    AF_INET);
 		if (hp) {
 			if ((cp = strchr(hp->h_name, '.')) &&
@@ -499,7 +571,6 @@
     static char flag_buf[10];
     char  *cp = flag_buf;
 
-    memset( flag_buf, 0, sizeof(flag_buf));
     *cp++ = '<';
     *cp++ = 'U';   /* route is in use */
     if (rp->mask  == 0xffffffff)
@@ -509,6 +580,7 @@
     if (rp->type  == 4)
         *cp++ = 'G';   /* remote destination/net */
     *cp++ = '>';
+    *cp = 0;
     return flag_buf;
 }
 
diff --git a/apps/snmpnetstat/routex.c b/apps/snmpnetstat/routex.c
new file mode 100644
index 0000000..be06d25
--- /dev/null
+++ b/apps/snmpnetstat/routex.c
@@ -0,0 +1,558 @@
+/*        $OpenBSD: route.c,v 1.66 2004/11/17 01:47:20 itojun Exp $        */
+/*        $NetBSD: route.c,v 1.15 1996/05/07 02:55:06 thorpej Exp $        */
+
+/*
+ * Copyright (c) 1983, 1988, 1993
+ *        The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifdef  INHERITED_CODE
+#ifndef lint
+#if 0
+static char sccsid[] = "from: @(#)route.c        8.3 (Berkeley) 3/9/94";
+#else
+static char *rcsid = "$OpenBSD: route.c,v 1.66 2004/11/17 01:47:20 itojun Exp $";
+#endif
+#endif /* not lint */
+#endif
+
+#include <net-snmp/net-snmp-config.h>
+
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+
+#include <net-snmp/net-snmp-includes.h>
+
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+
+#ifndef INET
+#define INET
+#endif
+
+#include "main.h"
+#include "netstat.h"
+#if HAVE_WINSOCK_H
+#include "winstub.h"
+#endif
+
+/* inetCidrRouteTable */
+#define SET_IFNO 0x01
+#define SET_TYPE 0x02
+#define SET_PRTO 0x04
+#define SET_AGE  0x08
+#define SET_AS   0x10
+#define SET_MET1 0x20
+#define SET_ALL  0x3f
+
+/* ip6RouteTable */
+#define SET_HOP     0x40
+#define SET_INVALID 0x80
+#define SET_ALL6    0x67
+/* not invalid, and only the columns that we fetch */
+
+struct route_entry {
+    int             af;
+    struct sockaddr_storage dst;
+    struct sockaddr_storage hop;
+    int             mask;
+    int             ifNumber;
+    int             type;
+    int             proto;
+    int             age;
+    int             as;
+    int             metric1;
+    int             set_bits;
+    char            ifname[64];
+};
+
+
+static void pr_rtxhdr(int af, const char *table);
+static void p_rtnodex( struct route_entry *rp );
+
+/*
+ * Print routing tables.
+ */
+int
+routexpr(int af)
+{
+    struct route_entry  route, *rp = &route;
+    oid    rtcol_oid[]  = { 1,3,6,1,2,1,4,24,7,1,0 }; /* inetCidrRouteEntry */
+    size_t rtcol_len    = OID_LENGTH( rtcol_oid );
+    netsnmp_variable_list *var = NULL, *vp;
+    int hdr_af = AF_UNSPEC;
+    int printed = 0;
+
+#define ADD_RTVAR( x ) rtcol_oid[ rtcol_len-1 ] = x; \
+    snmp_varlist_add_variable( &var, rtcol_oid, rtcol_len, ASN_NULL, NULL,  0)
+    ADD_RTVAR( 7 );                 /* inetCidrRouteIfIndex */
+    ADD_RTVAR( 8 );                 /* inetCidrRouteType    */
+    ADD_RTVAR( 9 );                 /* inetCidrRouteProto   */
+    ADD_RTVAR( 10 );                /* inetCidrRouteAge   */
+    ADD_RTVAR( 11 );                /* inetCidrRouteNextHopAS   */
+    ADD_RTVAR( 12 );                /* inetCidrRouteMetric1   */
+#undef ADD_RTVAR
+
+    /*
+     * Now walk the inetCidrRouteTable, reporting the various route entries
+     */
+    while ( 1 ) {
+        oid *op;
+        unsigned char *cp;
+        int i;
+
+        if (netsnmp_query_getnext( var, ss ) != SNMP_ERR_NOERROR)
+            break;
+        rtcol_oid[ rtcol_len-1 ] = 7;        /* ifRouteIfIndex */
+        if ( snmp_oid_compare( rtcol_oid, rtcol_len,
+                               var->name, rtcol_len) != 0 )
+            break;    /* End of Table */
+        if (var->type == SNMP_NOSUCHOBJECT ||
+                var->type == SNMP_NOSUCHINSTANCE ||
+                var->type == SNMP_ENDOFMIBVIEW)
+            break;
+        memset( &route, 0, sizeof( struct route_entry ));
+        /* Extract inetCidrRouteDest, inetCidrRoutePfxLen,
+         * inetCidrRouteNextHop from index */
+        switch (var->name[rtcol_len]) {
+        case 1:
+            {   struct sockaddr_in *sin = (struct sockaddr_in *)&route.dst;
+                int len;
+                route.af = AF_INET;
+                sin->sin_family = AF_INET;
+                op = var->name+rtcol_len+1;
+                len = *op++;
+                cp = (unsigned char *)&sin->sin_addr;
+                for (i = 0; i < len; i++) *cp++ = *op++;
+                route.mask = *op++;
+                op += *op+1;
+                op++; /* addrType */
+                op++; /* addrLen */
+                sin = (struct sockaddr_in *)&route.hop;
+                sin->sin_family = AF_INET;
+                cp = (unsigned char *)&sin->sin_addr;
+                for (i = 0; i < len; i++) *cp++ = *op++;
+                break;
+            }
+        case 2:
+            {   struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&route.dst;
+                int len;
+                route.af = AF_INET6;
+                sin6->sin6_family = AF_INET6;
+                op = var->name+rtcol_len+1;
+                len = *op++;
+                cp = (unsigned char *)&sin6->sin6_addr;
+                for (i = 0; i < len; i++) *cp++ = *op++;
+                route.mask = *op++;
+                op += *op+1;
+                op++; /* addrType */
+                op++; /* addrLen */
+                sin6 = (struct sockaddr_in6 *)&route.hop;
+                sin6->sin6_family = AF_INET6;
+                cp = (unsigned char *)&sin6->sin6_addr;
+                for (i = 0; i < len; i++) *cp++ = *op++;
+                break;
+            }
+        default:
+            fprintf(stderr, "Bad address type: %d\n", (int)var->name[rtcol_len]);
+            exit(1);
+        }
+        /* Extract ipRouteDest index value */
+
+        for ( vp=var; vp; vp=vp->next_variable ) {
+            switch ( vp->name[ rtcol_len - 1 ] ) {
+            case 7:     /* inetCidrRouteIfIndex */
+                rp->ifNumber  = *vp->val.integer;
+                rp->set_bits |= SET_IFNO;
+                break;
+            case 8:     /* inetCidrRouteType    */
+                rp->type      = *vp->val.integer;
+                rp->set_bits |= SET_TYPE;
+                break;
+            case 9:     /* inetCidrRouteProto   */
+                rp->proto     = *vp->val.integer;
+                rp->set_bits |= SET_PRTO;
+                break;
+            case 10:     /* inetCidrRouteAge   */
+                rp->age     = *vp->val.integer;
+                rp->set_bits |= SET_AGE;
+                break;
+            case 11:     /* inetCidrRouteNextHopAS   */
+                rp->as     = *vp->val.integer;
+                rp->set_bits |= SET_AS;
+                break;
+            case 12:     /* inetCidrRouteMetric1   */
+                rp->metric1     = *vp->val.integer;
+                rp->set_bits |= SET_MET1;
+                break;
+            }
+        }
+        if (rp->set_bits != SET_ALL) {
+            continue;   /* Incomplete query */
+        }
+    
+        if (af != AF_UNSPEC && rp->af != af)
+            continue;
+
+        if (hdr_af != rp->af) {
+            if (hdr_af != AF_UNSPEC)
+                printf("\n");
+            hdr_af = rp->af;
+            pr_rtxhdr(hdr_af, "inetCidrRouteTable");
+        }
+        p_rtnodex( rp );
+        printed++;
+    }
+    return printed;
+}
+
+/*
+ * Backwards-compatibility for the IPV6-MIB
+ */
+int
+route6pr(int af)
+{
+    struct route_entry  route, *rp = &route;
+    oid    rtcol_oid[]  = { 1,3,6,1,2,1,55,1,11,1,0 }; /* ipv6RouteEntry */
+    size_t rtcol_len    = OID_LENGTH( rtcol_oid );
+    netsnmp_variable_list *var = NULL, *vp;
+    int printed = 0;
+    int hdr_af = AF_UNSPEC;
+    int i;
+
+    if (af != AF_UNSPEC && af != AF_INET6)
+        return 0;
+
+#define ADD_RTVAR( x ) rtcol_oid[ rtcol_len-1 ] = x; \
+    snmp_varlist_add_variable( &var, rtcol_oid, rtcol_len, ASN_NULL, NULL,  0)
+    ADD_RTVAR( 4 );                 /* ipv6RouteIfIndex */
+    ADD_RTVAR( 5 );                 /* ipv6RouteNextHop */
+    ADD_RTVAR( 6 );                 /* ipv6RouteType    */
+    ADD_RTVAR( 7 );                 /* ipv6RouteProto   */
+    ADD_RTVAR( 11 );                /* ipv6RouteMetric  */
+    ADD_RTVAR( 14 );                /* ipv6RouteValid   */
+#undef ADD_RTVAR
+
+    /*
+     * Now walk the ipv6RouteTable, reporting the various route entries
+     */
+    while ( 1 ) {
+        oid *op;
+        unsigned char *cp, *cp1;
+        struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&route.dst;
+
+        if (netsnmp_query_getnext( var, ss ) != SNMP_ERR_NOERROR)
+            break;
+        rtcol_oid[ rtcol_len-1 ] = 4;        /* ipv6RouteIfIndex */
+        if ( snmp_oid_compare( rtcol_oid, rtcol_len,
+                               var->name, rtcol_len) != 0 )
+            break;    /* End of Table */
+        if (var->type == SNMP_NOSUCHOBJECT ||
+                var->type == SNMP_NOSUCHINSTANCE ||
+                var->type == SNMP_ENDOFMIBVIEW)
+            break;
+        memset( &route, 0, sizeof( struct route_entry ));
+        rp->af = AF_INET6;
+        sin6->sin6_family = AF_INET6;
+        op = var->name+rtcol_len;
+        cp = (unsigned char *)&sin6->sin6_addr;
+        for (i = 0; i < 16; i++) *cp++ = *op++;
+        route.mask = *op++;
+
+        for ( vp=var; vp; vp=vp->next_variable ) {
+            switch ( vp->name[ rtcol_len - 1 ] ) {
+            case 4:     /* ipv6RouteIfIndex  */
+                rp->ifNumber  = *vp->val.integer;
+                /*
+                 * This is, technically, an Ipv6IfIndex, which
+                 * could maybe be different than the IfIndex
+                 * for the same interface.  We ignore this
+                 * possibility for now, in the hopes that
+                 * nobody actually allocates these numbers
+                 * differently.
+                 */
+                rp->set_bits |= SET_IFNO;
+                break;
+            case 5:     /* ipv6RouteNextHop  */
+                cp1 = (unsigned char *)vp->val.string;
+                sin6 = (struct sockaddr_in6 *)&rp->hop;
+                sin6->sin6_family = AF_INET6;
+                cp = (unsigned char *)&sin6->sin6_addr;
+                for (i = 0; i < 16; i++) *cp++ = *cp1++;
+                rp->set_bits |= SET_HOP;
+            case 6:     /* ipv6RouteType     */
+                rp->type      = *vp->val.integer;
+                /* This enum maps to similar values in inetCidrRouteType */
+                rp->set_bits |= SET_TYPE;
+                break;
+            case 7:     /* ipv6RouteProtocol */
+                rp->proto     = *vp->val.integer;
+                /* TODO: this does not map directly to the
+                 * inetCidrRouteProtocol values.  If we use
+                 * rp->proto more, we will have to manage this. */
+                rp->set_bits |= SET_PRTO;
+                break;
+            case 11:    /* ipv6RouteMetric   */
+                rp->metric1   = *vp->val.integer;
+                rp->set_bits |= SET_MET1;
+                break;
+            case 14:    /* ipv6RouteValid    */
+                if (*vp->val.integer == 2)
+                    rp->set_bits |= SET_INVALID;
+                break;
+            }
+        }
+        if (rp->set_bits != SET_ALL6) {
+            continue;   /* Incomplete query */
+        }
+    
+        if (hdr_af != rp->af) {
+            if (hdr_af != AF_UNSPEC)
+                printf("\n");
+            hdr_af = rp->af;
+            pr_rtxhdr(AF_INET6, "ip6RouteTable");
+        }
+        p_rtnodex( rp );
+        printed++;
+    }
+    return printed;
+}
+
+
+/* column widths; each followed by one space */
+#ifndef NETSNMP_ENABLE_IPV6
+#define        WID_DST(af)        26        /* width of destination column */
+#define        WID_GW(af)        18        /* width of gateway column */
+#else
+/* width of destination/gateway column */
+/* strlen("fe80::aaaa:bbbb:cccc:dddd@gif0") == 30, strlen("/128") == 4 */
+#define        WID_DST(af)        ((af) == AF_INET6 ? (nflag ? 34 : 26) : 26)
+#define        WID_GW(af)        ((af) == AF_INET6 ? (nflag ? 39 : 26) : 26)
+#endif /* NETSNMP_ENABLE_IPV6 */
+
+/*
+ * Print header for routing table columns.
+ */
+static void
+pr_rtxhdr(int af, const char *table)
+{
+    switch (af) {
+    case AF_INET:
+	printf("IPv4 Routing tables (inetCidrRouteTable)\n");
+	break;
+    case AF_INET6:
+	printf("IPv6 Routing tables (%s)\n", table);
+	break;
+    }
+    printf("%-*.*s ",
+	WID_DST(af), WID_DST(af), "Destination");
+    printf("%-*.*s %-6.6s  %s\n",
+	WID_GW(af), WID_GW(af), "Gateway",
+	"Flags", "Interface");
+}
+
+#ifndef HAVE_INET_NTOP
+/* MSVC and MinGW */
+#define inet_ntop netsnmp_inet_ntop
+static const char *
+netsnmp_inet_ntop(int af, const void *src, char *dst, size_t size)
+{
+    DWORD out_len = size;
+
+    switch (af) {
+    case AF_INET:
+	{
+	    struct sockaddr_in in;
+
+	    memset(&in, 0, sizeof(in));
+	    in.sin_family = af;
+	    memcpy(&in.sin_addr, src, 4);
+	    if (WSAAddressToString((struct sockaddr *)&in, sizeof(in), NULL, dst,
+				   &out_len) == 0)
+		return dst;
+	}
+	break;
+    case AF_INET6:
+	{
+	    struct sockaddr_in6 in6;
+
+	    memset(&in6, 0, sizeof(in6));
+	    in6.sin6_family = af;
+	    memcpy(&in6.sin6_addr, src, 16);
+	    if (WSAAddressToString((struct sockaddr *)&in6, sizeof(in6), NULL, dst,
+				   &out_len) == 0)
+		return dst;
+	}
+	break;
+    }
+    return NULL;
+}
+#endif
+
+/*
+ * Return the name of the network whose address is given.
+ * The address is assumed to be that of a net or subnet, not a host.
+ */
+static char *
+netxname(struct sockaddr_storage *in, int mask)
+{
+    static char host[MAXHOSTNAMELEN];
+    static char line[MAXHOSTNAMELEN];
+    struct sockaddr_in *sin = (struct sockaddr_in *)in;
+    struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)in;
+
+    switch (in->ss_family) {
+    case AF_INET:
+        inet_ntop(in->ss_family, &sin->sin_addr, host, sizeof(host));
+        if (mask == 32) strcpy(line, host);
+        else snprintf(line, sizeof(line), "%s/%d", host, mask);
+        break;
+    case AF_INET6:
+        inet_ntop(in->ss_family, &sin6->sin6_addr, host, sizeof(host));
+        if (mask == 128) strcpy(line, host);
+        else snprintf(line, sizeof(line), "%s/%d", host, mask);
+        break;
+    }
+    return line;
+}
+
+static char *
+routexname(struct sockaddr_storage *in)
+{
+    char *cp;
+    static char line[MAXHOSTNAMELEN];
+    struct hostent *hp = NULL;
+    static char domain[MAXHOSTNAMELEN];
+    static int first = 1;
+    struct sockaddr_in *sin = (struct sockaddr_in *)in;
+    struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)in;
+
+    if (first) {
+        first = 0;
+        if (gethostname(line, sizeof line) == 0 &&
+            (cp = strchr(line, '.')))
+            (void) strlcpy(domain, cp + 1, sizeof domain);
+        else
+            domain[0] = '\0';
+    }
+    cp = NULL;
+    if (!nflag) {
+        switch (in->ss_family) {
+        case AF_INET:
+            hp = netsnmp_gethostbyaddr(&sin->sin_addr,
+                    sizeof (struct in_addr), AF_INET);
+            break;
+        case AF_INET6:
+            hp = netsnmp_gethostbyaddr(&sin6->sin6_addr,
+                    sizeof (struct in6_addr), AF_INET6);
+            break;
+        }
+        if (hp) {
+            if ((cp = strchr(hp->h_name, '.')) && !strcmp(cp + 1, domain))
+                *cp = '\0';
+            cp = hp->h_name;
+        }
+    }
+    if (cp) {
+        strlcpy(line, cp, sizeof(line));
+    } else {
+        switch (in->ss_family) {
+        case AF_INET:
+            inet_ntop(sin->sin_family, &sin->sin_addr, line, sizeof(line));
+            break;
+        case AF_INET6:
+            inet_ntop(sin6->sin6_family, &sin6->sin6_addr, line, sizeof(line));
+            break;
+        }
+    }
+    return (line);
+}
+
+
+static char *
+s_rtflagsx( struct route_entry *rp )
+{
+    static char flag_buf[10];
+    char  *cp = flag_buf;
+
+    *cp++ = '<';
+    *cp++ = 'U';   /* route is in use */
+    if ((rp->af == AF_INET && rp->mask == 32) ||
+            (rp->af == AF_INET6 && rp->mask == 128))
+        *cp++ = 'H';   /* host */
+    if (rp->proto == 4)
+        *cp++ = 'D';   /* ICMP redirect */
+    if (rp->type  == 4)
+        *cp++ = 'G';   /* remote destination/net */
+    *cp++ = '>';
+    *cp = 0;
+    return flag_buf;
+}
+
+static void
+p_rtnodex( struct route_entry *rp )
+{
+    get_ifname(rp->ifname, rp->ifNumber);
+    if (rp->af == AF_INET) {
+        struct sockaddr_in *sin = (struct sockaddr_in *)&rp->dst;
+        printf("%-*s ",
+            WID_DST(AF_INET),
+                (sin->sin_addr.s_addr == INADDR_ANY) ? "default" :
+                (rp->mask == 32 ?
+                    routexname(&rp->dst) :
+                    netxname(&rp->dst, rp->mask)));
+    }
+    else if (rp->af == AF_INET6) {
+        struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&rp->dst;
+        struct in6_addr in6_addr_any = IN6ADDR_ANY_INIT;
+        printf("%-*s ",
+            WID_DST(AF_INET6),
+                memcmp(&sin6->sin6_addr, &in6_addr_any, sizeof(in6_addr_any)) == 0 ? "default" :
+                (rp->mask == 128 ?
+                    routexname(&rp->dst) :
+                    netxname(&rp->dst, rp->mask)));
+    }
+    printf("%-*s %-6.6s  %s",
+        WID_GW(rp->af),
+        1 ? routexname(&rp->hop) : "*",
+        s_rtflagsx(rp), rp->ifname);
+    if ((rp->set_bits & SET_AS) && rp->as != 0)
+        printf(" (AS %d)", rp->as);
+    printf("\n");
+}
diff --git a/apps/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 3970e97..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;
@@ -256,7 +250,8 @@
     netsnmp_session session, *ss;
     int            total_entries = 0;
 
-    setvbuf(stdout, NULL, _IOLBF, 1024);
+    netsnmp_set_line_buffering(stdout);
+
     netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
                            NETSNMP_DS_LIB_QUICK_PRINT, 1);
 
@@ -264,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:
@@ -669,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 499bacf..24de47b 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:
@@ -127,7 +122,7 @@
     }
 
     varcount = 0;
-    while (1) {
+    for(;;) {
         vars = NULL;
         for (ret = 1; ret != 0;) {
             vp = (netsnmp_variable_list *)
@@ -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;
@@ -211,9 +210,11 @@
                     case SNMP_MSG_RESPONSE:
                         printf("Received Get Response ");
                         break;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
                     case SNMP_MSG_SET:
                         printf("Received Set Request ");
                         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
                     case SNMP_MSG_TRAP:
                         printf("Received Trap Request ");
                         break;
@@ -277,8 +278,7 @@
         varcount = 0;
         nonRepeaters = -1;
     }
-    SOCK_CLEANUP;
-    return 0;
+    /* NOTREACHED */
 }
 
 int
@@ -286,8 +286,7 @@
 {
     char            buf[256];
     size_t          val_len;
-    u_char          value[256], ch;
-    oid             name[MAX_OID_LEN];
+    u_char          ch;
 
     printf("Variable: ");
     fflush(stdout);
@@ -305,7 +304,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");
@@ -314,10 +313,12 @@
             command = SNMP_MSG_GETNEXT;
             printf("Request type is Getnext Request\n");
             break;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case 'S':
             command = SNMP_MSG_SET;
             printf("Request type is Set Request\n");
             break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
         case 'B':
             command = SNMP_MSG_GETBULK;
             printf("Request type is Bulk Request\n");
@@ -336,16 +337,19 @@
             printf("(Are you sending to the right port?)\n");
             break;
         case 'D':
-            if (snmp_get_dump_packet()) {
-                snmp_set_dump_packet(0);
+            if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                       NETSNMP_DS_LIB_DUMP_PACKET)) {
+                netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                       NETSNMP_DS_LIB_DUMP_PACKET, 0);
                 printf("Turned packet dump off\n");
             } else {
-                snmp_set_dump_packet(1);
+                netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                       NETSNMP_DS_LIB_DUMP_PACKET, 1);
                 printf("Turned packet dump on\n");
             }
             break;
         case 'Q':
-            switch ((toupper(buf[2]))) {
+            switch ((toupper((unsigned char)(buf[2])))) {
             case '\n':
             case 0:
                 printf("Quitting,  Goodbye\n");
@@ -353,11 +357,14 @@
                 exit(0);
                 break;
             case 'P':
-                if (snmp_get_quick_print()) {
-                    snmp_set_quick_print(0);
+                if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                           NETSNMP_DS_LIB_QUICK_PRINT)) {
+                    netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                           NETSNMP_DS_LIB_QUICK_PRINT, 0);
                     printf("Turned quick printing off\n");
                 } else {
-                    snmp_set_quick_print(1);
+                    netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                           NETSNMP_DS_LIB_QUICK_PRINT, 1);
                     printf("Turned quick printing on\n");
                 }
                 break;
@@ -368,19 +375,29 @@
         }
         return -1;
     }
-    vp->name_length = MAX_OID_LEN;
-    if (!snmp_parse_oid(buf, name, &vp->name_length)) {
-        snmp_perror(buf);
-        return -1;
+    {
+	oid     name[MAX_OID_LEN];
+	vp->name_length = MAX_OID_LEN;
+	if (!snmp_parse_oid(buf, name, &vp->name_length)) {
+	    snmp_perror(buf);
+	    return -1;
+	}
+	vp->name = snmp_duplicate_objid(name, vp->name_length);
     }
-    vp->name = (oid *) malloc(vp->name_length * sizeof(oid));
-    memmove(vp->name, name, vp->name_length * sizeof(oid));
 
-    if (command == SNMP_MSG_SET || command == SNMP_MSG_INFORM
-        || command == SNMP_MSG_TRAP2) {
+    if (command == SNMP_MSG_INFORM
+        || command == SNMP_MSG_TRAP2
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+        || command == SNMP_MSG_SET
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+        ) {
         printf("Type [i|u|s|x|d|n|o|t|a]: ");
         fflush(stdout);
-        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 +436,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));
@@ -481,14 +502,16 @@
         case ASN_OBJECT_ID:
             if ('\n' == buf[strlen(buf) - 1])
                 buf[strlen(buf) - 1] = '\0';
-            vp->val_len = MAX_OID_LEN;;
-            if (0 == read_objid(buf, (oid *) value, &vp->val_len)) {
-                printf("Unrecognised OID value\n");
-                goto getValue;
-            }
-            vp->val_len *= sizeof(oid);
-            vp->val.objid = (oid *) malloc(vp->val_len);
-            memmove(vp->val.objid, value, vp->val_len);
+	    else {
+		oid value[MAX_OID_LEN];
+		vp->val_len = MAX_OID_LEN;
+		if (0 == read_objid(buf, value, &vp->val_len)) {
+		    printf("Unrecognised OID value\n");
+		    goto getValue;
+		}
+		vp->val.objid = snmp_duplicate_objid(value, vp->val_len);
+		vp->val_len *= sizeof(oid);
+	    }
             break;
         case ASN_TIMETICKS:
             vp->val.integer = (long *) malloc(sizeof(long));
diff --git a/apps/snmptls.c b/apps/snmptls.c
new file mode 100644
index 0000000..84c5fbe
--- /dev/null
+++ b/apps/snmptls.c
@@ -0,0 +1,559 @@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  $
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#undef NETSNMP_USE_ASSERT
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+netsnmp_feature_require(tls_fingerprint_build)
+
+#include <ctype.h>
+
+#include <openssl/ssl.h>
+#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 1ef9193..2b19777 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>
@@ -207,7 +202,8 @@
 #endif /* NETSNMP_DISABLE_MIB_LOADING */
                 case 'd':
                     description = 1;
-                    snmp_set_save_descriptions(1);
+                    netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                           NETSNMP_DS_LIB_SAVE_MIB_DESCRS, 1);
                     break;
                 case 'B':
                     find_all = 1;
@@ -266,7 +262,8 @@
 
     do {
         name_length = MAX_OID_LEN;
-        if (snmp_get_random_access()) {
+        if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
+				  NETSNMP_DS_LIB_RANDOM_ACCESS)) {
 #ifndef NETSNMP_DISABLE_MIB_LOADING
             if (!get_node(current_name, name, &name_length)) {
 #endif /* NETSNMP_DISABLE_MIB_LOADING */
diff --git a/apps/snmptrap.c b/apps/snmptrap.c
index d16d2fa..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
@@ -104,26 +97,6 @@
     return 1;
 }
 
-in_addr_t
-parse_address(char *address)
-{
-    in_addr_t       addr;
-    struct sockaddr_in saddr;
-    struct hostent *hp;
-
-    if ((addr = inet_addr(address)) != -1)
-        return addr;
-    hp = gethostbyname(address);
-    if (hp == NULL) {
-        fprintf(stderr, "unknown host: %s\n", address);
-        exit(1);
-    } else {
-        memcpy(&saddr.sin_addr, hp->h_addr, hp->h_length);
-        return saddr.sin_addr.s_addr;
-    }
-
-}
-
 static void
 optProc(int argc, char *const *argv, int opt)
 {
@@ -172,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:
@@ -298,7 +273,11 @@
         }
         agent = argv[arg];
         if (agent != NULL && strlen(agent) != 0) {
-            *pdu_in_addr_t = parse_address(agent);
+            int ret = netsnmp_gethostbyname_v4(agent, pdu_in_addr_t);
+            if (ret < 0) {
+                fprintf(stderr, "unknown host: %s\n", agent);
+                exit(1);
+            }
         } else {
             *pdu_in_addr_t = get_myaddr();
         }
diff --git a/apps/snmptrapd.c b/apps/snmptrapd.c
index b7c4ce4..bce0d47 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"
@@ -124,6 +123,8 @@
 #include <tcpd.h>
 #endif
 
+#include <net-snmp/net-snmp-features.h>
+
 #ifndef BSD4_3
 #define BSD4_2
 #endif
@@ -139,22 +140,27 @@
 #define FD_ZERO(p)      memset((p), 0, sizeof(*(p)))
 #endif
 
-char           *logfile = 0;
-int             SyslogTrap = 0;
-int             Event = 0;
-int             dropauth = 0;
-int             reconfig = 0;
+char           *logfile = NULL;
+extern int      SyslogTrap;
+extern int      dropauth;
+static int      reconfig = 0;
 char            ddefault_port[] = "udp:162";	/* Default default port */
 char           *default_port = ddefault_port;
 #if HAVE_GETPID
     FILE           *PID;
     char           *pid_file = NULL;
 #endif
+extern void parse_format(const char *token, char *line);
 char           *trap1_fmt_str_remember = NULL;
 int             dofork = 1;
 
 extern int      netsnmp_running;
 
+#ifdef NETSNMP_USE_MYSQL
+extern int      netsnmp_mysql_init(void);
+extern void     snmptrapd_register_sql_configs( void );
+#endif
+
 /*
  * These definitions handle 4.2 systems without additional syslog facilities.
  */
@@ -205,20 +211,14 @@
 #define SNMPTRAPD_RUNNING 1
 #define SNMPTRAPD_STOPPED 0
 int             trapd_status = SNMPTRAPD_STOPPED;
-/* app_name_long used for Event Log (syslog), SCM, registry etc */
+/* app_name_long used for SCM, registry etc */
 LPCTSTR         app_name_long = _T("Net-SNMP Trap Handler");     /* Application Name */
 #endif
 
 const char     *app_name = "snmptrapd";
 
-struct timeval  Now;
-
 void            trapd_update_config(void);
 
-static oid      risingAlarm[] = { 1, 3, 6, 1, 6, 3, 2, 1, 1, 3, 1 };
-static oid      fallingAlarm[] = { 1, 3, 6, 1, 6, 3, 2, 1, 1, 3, 2 };
-static oid      unavailableAlarm[] = { 1, 3, 6, 1, 6, 3, 2, 1, 1, 3, 3 };
-
 #ifdef WIN32SERVICE
 void            StopSnmpTrapd(void);
 int             SnmpTrapdMain(int argc, TCHAR * argv[]);
@@ -231,70 +231,6 @@
 extern void            subagent_init(void);
 #endif
 
-void
-event_input(netsnmp_variable_list * vp)
-{
-    int             eventid = 0;
-    oid             variable[MAX_OID_LEN];
-    u_long          destip = 0;
-    int             sampletype = 0;
-    int             value = 0;
-    int             threshold = 0;
-    int             i;
-    int             nvars = 0;
-
-    netsnmp_variable_list	*vp2 = vp;
-    
-    oid            *op = NULL;
-
-    /* Make sure there are 5 variables.  Otherwise, don't bother */
-    for (i=1; i <= 5; i++) {
-      vp2 = vp2->next_variable;
-      if (!vp2) {
-	nvars = -1;
-	break;
-      }
-    }
-    
-    if (nvars != -1)
-    {
-      vp = vp->next_variable;     /* skip sysUptime */
-      if (vp->val_len != sizeof(risingAlarm) ||
-	  !memcmp(vp->val.objid, risingAlarm, sizeof(risingAlarm)))
-	eventid = 1;
-      else if (vp->val_len != sizeof(risingAlarm) ||
-	  !memcmp(vp->val.objid, fallingAlarm, sizeof(fallingAlarm)))
-	eventid = 2;
-      else if (vp->val_len != sizeof(risingAlarm) ||
-	  !memcmp(vp->val.objid, unavailableAlarm, sizeof(unavailableAlarm)))
-	eventid = 3;
-      else {
-	fprintf(stderr, "unknown event\n");
-	eventid = 0;
-      }
-      
-      vp = vp->next_variable;
-      memmove(variable, vp->val.objid, vp->val_len * sizeof(oid));
-      op = vp->name + 22;
-      destip = 0;
-      destip |= (*op++) << 24;
-      destip |= (*op++) << 16;
-      destip |= (*op++) << 8;
-      destip |= *op++;
-      
-      vp = vp->next_variable;
-      sampletype = *vp->val.integer;
-      
-      vp = vp->next_variable;
-      value = *vp->val.integer;
-      
-      vp = vp->next_variable;
-      threshold = *vp->val.integer;
-    }
-    printf("%d: 0x%02lX %d %d %d\n", eventid, destip, sampletype, value,
-	threshold);
-}
-
 
 void
 usage(void)
@@ -315,9 +251,7 @@
     fprintf(stderr,
             "  -C\t\t\tdo not read the default configuration files\n");
     fprintf(stderr, "  -d\t\t\tdump sent and received SNMP packets\n");
-    fprintf(stderr, "  -D[TOKEN[,...]]\t\tturn on debugging output\n");
-    fprintf(stderr,
-            "  -e\t\t\tprint event # (rising/falling alarm, etc.)\n");
+    fprintf(stderr, "  -D[TOKEN[,...]]\t\tturn on debugging output for the specified TOKENs\n\t\t\t   (ALL gives extremely verbose debugging output)\n");
     fprintf(stderr, "  -f\t\t\tdo not fork from the shell\n");
     fprintf(stderr,
             "  -F FORMAT\t\tuse specified format for logging to standard error\n");
@@ -355,6 +289,7 @@
     fprintf(stderr, "  -v, --version\t\tdisplay version information\n");
 #if defined(USING_AGENTX_SUBAGENT_MODULE) && !defined(NETSNMP_SNMPTRAPD_DISABLE_AGENTX)
     fprintf(stderr, "  -x ADDRESS\t\tuse ADDRESS as AgentX address\n");
+    fprintf(stderr, "  -X\t\t\tdon't become a subagent\n");
 #endif
     fprintf(stderr,
             "  -O <OUTOPTS>\t\ttoggle options controlling output display\n");
@@ -362,11 +297,6 @@
     fprintf(stderr,
             "  -L <LOGOPTS>\t\ttoggle options controlling where to log to\n");
     snmp_log_options_usage("\t\t\t", stderr);
-    fprintf(stderr, "\n  Deprecated options:\n");
-    fprintf(stderr, "  -o FILE\t\tuse -Lf <FILE> instead\n");
-    fprintf(stderr, "  -P\t\t\tuse -f -Le  instead\n");
-    fprintf(stderr, "  -s\t\t\tuse -Lsd instead\n");
-    fprintf(stderr, "  -S d|i|0-7\t\tuse -Ls <facility> instead\n");
 }
 
 static void
@@ -385,6 +315,7 @@
     extern netsnmp_session *main_session;
 #endif
     netsnmp_running = 0;
+
 #ifdef WIN32SERVICE
     /*
      * In case of windows, select() in receive() function will not return 
@@ -513,6 +444,7 @@
 {
     if (default_port != ddefault_port) {
         free(default_port);
+        default_port = ddefault_port;
     }
 }
 
@@ -542,13 +474,10 @@
 void
 parse_config_agentuser(const char *token, char *cptr)
 {
-#if defined(HAVE_GETPWNAM) && defined(HAVE_PWD_H)
-    struct passwd  *info;
-#endif
-
     if (cptr[0] == '#') {
         char           *ecp;
         int             uid;
+
         uid = strtoul(cptr + 1, &ecp, 10);
         if (*ecp != 0) {
             config_perror("Bad number");
@@ -556,57 +485,51 @@
 	    netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
 			       NETSNMP_DS_AGENT_USERID, uid);
 	}
-    }
 #if defined(HAVE_GETPWNAM) && defined(HAVE_PWD_H)
-    else if ((info = getpwnam(cptr)) != NULL) {
-        netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
-			   NETSNMP_DS_AGENT_USERID, info->pw_uid);
     } else {
-        config_perror("User not found in passwd database");
-    }
-    endpwent();
+        struct passwd *info;
+
+        info = getpwnam(cptr);
+        if (info)
+            netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
+                               NETSNMP_DS_AGENT_USERID, info->pw_uid);
+        else
+            config_perror("User not found in passwd database");
+        endpwent();
 #endif
+    }
 }
 
 void
 parse_config_agentgroup(const char *token, char *cptr)
 {
-#if defined(HAVE_GETGRNAM) && defined(HAVE_GRP_H)
-    struct group   *info;
-#endif
-
     if (cptr[0] == '#') {
         char           *ecp;
         int             gid = strtoul(cptr + 1, &ecp, 10);
+
         if (*ecp != 0) {
             config_perror("Bad number");
 	} else {
             netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
 			       NETSNMP_DS_AGENT_GROUPID, gid);
 	}
-    }
 #if defined(HAVE_GETGRNAM) && defined(HAVE_GRP_H)
-    else if ((info = getgrnam(cptr)) != NULL) {
-        netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
-			   NETSNMP_DS_AGENT_GROUPID, info->gr_gid);
     } else {
-        config_perror("Group not found in group database");
+        struct group   *info;
+
+        info = getgrnam(cptr);
+        if (info)
+            netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
+                               NETSNMP_DS_AGENT_GROUPID, info->gr_gid);
+        else
+            config_perror("Group not found in group database");
+        endgrent();
+#endif
     }
-    endpwent();
-#endif
 }
 #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)
@@ -614,13 +537,6 @@
 }
 
 void
-parse_config_printEventNumbers(const char *token, char *cptr)
-{
-  if (netsnmp_ds_parse_boolean(cptr) == 1)
-    Event++;
-}
-
-void
 parse_config_ignoreAuthFailure(const char *token, char *cptr)
 {
   if (netsnmp_ds_parse_boolean(cptr) == 1)
@@ -639,6 +555,74 @@
   }
 }
 
+static void
+snmptrapd_main_loop(void)
+{
+    int             count, numfds, block;
+    fd_set          readfds,writefds,exceptfds;
+    struct timeval  timeout, *tvp;
+
+    while (netsnmp_running) {
+        if (reconfig) {
+                /*
+                 * If we are logging to a file, receipt of SIGHUP also
+                 * indicates that the log file should be closed and
+                 * re-opened.  This is useful for users that want to
+                 * rotate logs in a more predictable manner.
+                 */
+                netsnmp_logging_restart();
+                snmp_log(LOG_INFO, "NET-SNMP version %s restarted\n",
+                         netsnmp_get_version());
+            trapd_update_config();
+            if (trap1_fmt_str_remember) {
+                parse_format( NULL, trap1_fmt_str_remember );
+            }
+            reconfig = 0;
+        }
+        numfds = 0;
+        FD_ZERO(&readfds);
+        FD_ZERO(&writefds);
+        FD_ZERO(&exceptfds);
+        block = 0;
+        tvp = &timeout;
+        timerclear(tvp);
+        tvp->tv_sec = 5;
+        snmp_select_info(&numfds, &readfds, tvp, &block);
+        if (block == 1)
+            tvp = NULL;         /* block without timeout */
+#ifndef NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER
+        netsnmp_external_event_info(&numfds, &readfds, &writefds, &exceptfds);
+#endif /* NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER */
+        count = select(numfds, &readfds, &writefds, &exceptfds, tvp);
+        if (count > 0) {
+#ifndef NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER
+            netsnmp_dispatch_external_events(&count, &readfds, &writefds,
+                                             &exceptfds);
+#endif /* NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER */
+            /* If there are any more events after external events, then
+             * try SNMP events. */
+            if (count > 0) {
+                snmp_read(&readfds);
+            }
+        } else {
+            switch (count) {
+            case 0:
+                snmp_timeout();
+                break;
+            case -1:
+                if (errno == EINTR)
+                    continue;
+                snmp_log_perror("select");
+                netsnmp_running = 0;
+                break;
+            default:
+                fprintf(stderr, "select returned %d\n", count);
+                netsnmp_running = 0;
+            }
+	}
+	run_alarms();
+    }
+}
 
 /*******************************************************************-o-******
  * main - Non Windows
@@ -663,20 +647,18 @@
 main(int argc, char *argv[])
 #endif
 {
-    char            options[128] = "aAc:CdD::efF:g:hHI:L:m:M:no:O:PqsS:tu:vx:-:";
+    char            options[128] = "aAc:CdD::efF:g:hHI:L:m:M:no:O:Ptu:vx:X-:";
     netsnmp_session *sess_list = NULL, *ss = NULL;
     netsnmp_transport *transport = NULL;
-    int             arg, i = 0, depmsg = 0;
+    int             arg, i = 0;
     int             uid = 0, gid = 0;
-    int             count, numfds, block;
-    fd_set          readfds,writefds,exceptfds;
-    struct timeval  timeout, *tvp;
     char           *cp, *listen_ports = NULL;
 #if defined(USING_AGENTX_SUBAGENT_MODULE) && !defined(NETSNMP_SNMPTRAPD_DISABLE_AGENTX)
     int             agentx_subagent = 1;
 #endif
     netsnmp_trapd_handler *traph;
 
+
 #ifndef WIN32
     /*
      * close all non-standard file descriptors we may have
@@ -693,6 +675,7 @@
 #ifdef SIGHUP
     signal(SIGHUP, SIG_IGN);   /* do not terminate on early SIGHUP */
 #endif
+
 #ifdef SIGINT
     signal(SIGINT, term_handler);
 #endif
@@ -700,15 +683,16 @@
     signal(SIGPIPE, SIG_IGN);   /* 'Inline' failure of wayward readers */
 #endif
 
-#ifdef SIGHUP
-    signal(SIGHUP, SIG_IGN);   /* do not terminate on early SIGHUP */
-#endif
-
     /*
      * register our configuration handlers now so -H properly displays them 
      */
     snmptrapd_register_configs( );
+#ifdef NETSNMP_USE_MYSQL
+    snmptrapd_register_sql_configs( );
+#endif
+#ifdef NETSNMP_SECMOD_USM
     init_usm_conf( "snmptrapd" );
+#endif /* NETSNMP_SECMOD_USM */
     register_config_handler("snmptrapd", "snmpTrapdAddr",
                             parse_trapd_address, free_trapd_address, "string");
 
@@ -725,27 +709,15 @@
                             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)");
 
-    register_config_handler("snmptrapd", "printEventNumbers",
-                            parse_config_printEventNumbers, NULL, "(1|yes|true|0|no|false)");
-
     register_config_handler("snmptrapd", "ignoreAuthFailure",
                             parse_config_ignoreAuthFailure, NULL, "(1|yes|true|0|no|false)");
 
     register_config_handler("snmptrapd", "outputOption",
                             parse_config_outputOption, NULL, "string");
 
-#ifdef WIN32
-    setvbuf(stdout, NULL, _IONBF, BUFSIZ);
-#else
-    setvbuf(stdout, NULL, _IOLBF, BUFSIZ);
-#endif
-
     /*
      * Add some options if they are available.  
      */
@@ -753,11 +725,13 @@
     strcat(options, "p:");
 #endif
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 #ifdef WIN32
     snmp_log_syslogname(app_name_long);
 #else
     snmp_log_syslogname(app_name);
 #endif
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
     /*
      * Now process options normally.  
@@ -803,7 +777,8 @@
             break;
 
         case 'd':
-            snmp_set_dump_packet(1);
+            netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                   NETSNMP_DS_LIB_DUMP_PACKET, 1);
             break;
 
         case 'D':
@@ -811,17 +786,25 @@
             snmp_set_do_debugging(1);
             break;
 
-        case 'e':
-            Event++;
-            break;
-
         case 'f':
             dofork = 0;
             break;
 
         case 'F':
             if (optarg != NULL) {
-                trap1_fmt_str_remember = optarg;
+                if (( strncmp( optarg, "print",   5 ) == 0 ) ||
+                    ( strncmp( optarg, "syslog",  6 ) == 0 ) ||
+                    ( strncmp( optarg, "execute", 7 ) == 0 )) {
+                    /* New style: "type=format" */
+                    trap1_fmt_str_remember = strdup(optarg);
+                    cp = strchr( trap1_fmt_str_remember, '=' );
+                    if (cp)
+                        *cp = ' ';
+                } else {
+                    /* Old style: implicitly "print=format" */
+                    trap1_fmt_str_remember = malloc(strlen(optarg) + 7);
+                    sprintf( trap1_fmt_str_remember, "print %s", optarg );
+                }
             } else {
                 usage();
                 exit(1);
@@ -867,52 +850,8 @@
 
 	case 'S':
             fprintf(stderr,
-                    "Warning: -S option is deprecated; use -Ls <facility> instead\n");
-            depmsg = 1;
-            if (optarg != NULL) {
-                switch (*optarg) {
-                case 'd':
-                case 'D':
-                    Facility = LOG_DAEMON;
-                    break;
-                case 'i':
-                case 'I':
-                    Facility = LOG_INFO;
-                    break;
-                case '0':
-                    Facility = LOG_LOCAL0;
-                    break;
-                case '1':
-                    Facility = LOG_LOCAL1;
-                    break;
-                case '2':
-                    Facility = LOG_LOCAL2;
-                    break;
-                case '3':
-                    Facility = LOG_LOCAL3;
-                    break;
-                case '4':
-                    Facility = LOG_LOCAL4;
-                    break;
-                case '5':
-                    Facility = LOG_LOCAL5;
-                    break;
-                case '6':
-                    Facility = LOG_LOCAL6;
-                    break;
-                case '7':
-                    Facility = LOG_LOCAL7;
-                    break;
-                default:
-                    fprintf(stderr, "invalid syslog facility: -S%c\n",*optarg);
-                    usage();
-                    exit(1);
-                }
-            } else {
-                fprintf(stderr, "no syslog facility specified\n");
-                usage();
-                exit(1);
-            }
+                    "Warning: -S option has been withdrawn; use -Ls <facility> instead\n");
+            exit(1);
             break;
 
         case 'm':
@@ -940,16 +879,8 @@
 
         case 'o':
             fprintf(stderr,
-                    "Warning: -o option is deprecated; use -Lf <file> instead\n");
-            if (optarg != NULL) {
-                logfile = optarg;
-                snmp_enable_filelog(optarg, 
-                                    netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
-                                                           NETSNMP_DS_LIB_APPEND_LOGFILES));
-            } else {
-                usage();
-                exit(1);
-            }
+                    "Warning: -o option has been withdrawn; use -Lf <file> instead\n");
+            exit(1);
             break;
 
         case 'O':
@@ -982,20 +913,14 @@
 
         case 'P':
             fprintf(stderr,
-                    "Warning: -P option is deprecated; use -f -Le instead\n");
-            dofork = 0;
-            snmp_enable_stderrlog();
+                    "Warning: -P option has been withdrawn; use -f -Le instead\n");
+            exit(1);
             break;
 
         case 's':
             fprintf(stderr,
-                    "Warning: -s option is deprecated; use -Lsd instead\n");
-            depmsg = 1;
-#ifdef WIN32
-            snmp_enable_syslog_ident(app_name_long, Facility);
-#else
-            snmp_enable_syslog_ident(app_name, Facility);
-#endif
+                    "Warning: -s option has been withdrawn; use -Lsd instead\n");
+            exit(1);
             break;
 
         case 't':
@@ -1008,19 +933,18 @@
                 char           *ecp;
 
                 uid = strtoul(optarg, &ecp, 10);
+#if HAVE_GETPWNAM && HAVE_PWD_H
                 if (*ecp) {
-#if HAVE_GETPWNAM && HAVE_PWD_H
                     struct passwd  *info;
+
                     info = getpwnam(optarg);
-                    if (info) {
-                        uid = info->pw_uid;
-                    } else {
+                    uid = info ? info->pw_uid : -1;
+                    endpwent();
+                }
 #endif
-                        fprintf(stderr, "Bad user id: %s\n", optarg);
-                        exit(1);
-#if HAVE_GETPWNAM && HAVE_PWD_H
-                    }
-#endif
+                if (uid < 0) {
+                    fprintf(stderr, "Bad user id: %s\n", optarg);
+                    exit(1);
                 }
                 netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, 
 				   NETSNMP_DS_AGENT_USERID, uid);
@@ -1036,6 +960,7 @@
             exit(0);
             break;
 
+#if defined(USING_AGENTX_SUBAGENT_MODULE) && !defined(NETSNMP_SNMPTRAPD_DISABLE_AGENTX)
         case 'x':
             if (optarg != NULL) {
                 netsnmp_ds_set_string(NETSNMP_DS_APPLICATION_ID,
@@ -1046,6 +971,11 @@
             }
             break;
 
+         case 'X':
+            agentx_subagent = 0;
+            break;
+#endif
+
         default:
             fprintf(stderr, "invalid option: -%c\n", arg);
             usage();
@@ -1087,34 +1017,25 @@
      * Don't try this at home, children!
      */
     if (0 == snmp_get_do_logging()) {
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
         traph = netsnmp_add_global_traphandler(NETSNMPTRAPD_PRE_HANDLER,
                                                syslog_handler);
         traph->authtypes = TRAP_AUTH_LOG;
         snmp_enable_syslog();
+#else /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
+        traph = netsnmp_add_global_traphandler(NETSNMPTRAPD_PRE_HANDLER,
+                                               print_handler);
+        traph->authtypes = TRAP_AUTH_LOG;
+        snmp_enable_stderr();
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
     } else {
         traph = netsnmp_add_global_traphandler(NETSNMPTRAPD_PRE_HANDLER,
                                                print_handler);
         traph->authtypes = TRAP_AUTH_LOG;
     }
 
-    if (Event) {
-        traph = netsnmp_add_traphandler(event_handler, risingAlarm,
-                                        OID_LENGTH(risingAlarm));
-        traph->authtypes = TRAP_AUTH_LOG;
-
-        traph = netsnmp_add_traphandler(event_handler, fallingAlarm,
-                                        OID_LENGTH(fallingAlarm));
-        traph->authtypes = TRAP_AUTH_LOG;
-
-        traph = netsnmp_add_traphandler(event_handler, unavailableAlarm,
-                                        OID_LENGTH(unavailableAlarm));
-        traph->authtypes = TRAP_AUTH_LOG;
-	/* XXX - might be worth setting some "magic data"
-	 * in the traphandler structure that 'event_handler'
-	 * can use to avoid checking the trap OID values.
-	 */
-    }
-
 #if defined(USING_AGENTX_SUBAGENT_MODULE) && !defined(NETSNMP_SNMPTRAPD_DISABLE_AGENTX)
     /*
      * we're an agentx subagent? 
@@ -1145,6 +1066,9 @@
     init_agent("snmptrapd");
 
 #if defined(USING_AGENTX_SUBAGENT_MODULE) && !defined(NETSNMP_SNMPTRAPD_DISABLE_AGENTX)
+#ifdef NETSNMP_FEATURE_CHECKING
+    netsnmp_feature_require(register_snmpEngine_scalars_context)
+#endif /* NETSNMP_FEATURE_CHECKING */
     /*
      * initialize local modules 
      */
@@ -1185,6 +1109,9 @@
         extern void init_register_nsVacm_context(const char *);
 #endif
 #ifdef USING_SNMPV3_USMUSER_MODULE
+#ifdef NETSNMP_FEATURE_CHECKING
+        netsnmp_feature_require(init_register_usmUser_context)
+#endif /* NETSNMP_FEATURE_CHECKING */
         extern void init_register_usmUser_context(const char *);
         /* register ourselves as having a USM user database */
         init_register_usmUser_context("snmptrapd");
@@ -1193,6 +1120,9 @@
         /* register net-snmp vacm extensions */
         init_register_nsVacm_context("snmptrapd");
 #endif
+#ifdef USING_TLSTM_MIB_SNMPTLSTMCERTTOTSNTABLE_MODULE
+        init_snmpTlstmCertToTSNTable_context("snmptrapd");
+#endif
     }
 #endif
 
@@ -1219,10 +1149,7 @@
 #endif
 
     if (trap1_fmt_str_remember) {
-        free_trap1_fmt();
-        free_trap2_fmt();
-        print_format1 = strdup(trap1_fmt_str_remember);
-        print_format2 = strdup(trap1_fmt_str_remember);
+        parse_format( NULL, trap1_fmt_str_remember );
     }
 
     if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
@@ -1238,13 +1165,71 @@
      * if no logging options on command line or in conf files, use syslog
      */
     if (0 == snmp_get_do_logging()) {
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 #ifdef WIN32
         snmp_enable_syslog_ident(app_name_long, Facility);
 #else
         snmp_enable_syslog_ident(app_name, Facility);
 #endif        
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
     }
 
+    if (listen_ports)
+        cp = listen_ports;
+    else
+        cp = default_port;
+
+    while (cp != NULL) {
+        char *sep = strchr(cp, ',');
+
+        if (sep != NULL) {
+            *sep = 0;
+        }
+
+        transport = netsnmp_transport_open_server("snmptrap", cp);
+        if (transport == NULL) {
+            snmp_log(LOG_ERR, "couldn't open %s -- errno %d (\"%s\")\n",
+                     cp, errno, strerror(errno));
+            snmptrapd_close_sessions(sess_list);
+            SOCK_CLEANUP;
+            exit(1);
+        } else {
+            ss = snmptrapd_add_session(transport);
+            if (ss == NULL) {
+                /*
+                 * Shouldn't happen?  We have already opened the transport
+                 * successfully so what could have gone wrong?  
+                 */
+                snmptrapd_close_sessions(sess_list);
+                snmp_log(LOG_ERR, "couldn't open snmp - %s", strerror(errno));
+                SOCK_CLEANUP;
+                exit(1);
+            } else {
+                ss->next = sess_list;
+                sess_list = ss;
+            }
+        }
+
+        /*
+         * Process next listen address, if there is one.  
+         */
+
+        if (sep != NULL) {
+            *sep = ',';
+            cp = sep + 1;
+        } else {
+            cp = NULL;
+        }
+    }
+    SNMP_FREE(listen_ports); /* done with them */
+
+#ifdef NETSNMP_USE_MYSQL
+    if( netsnmp_mysql_init() ) {
+        fprintf(stderr, "MySQL initialization failed\n");
+        exit(1);
+    }
+#endif
+
 #ifndef WIN32
     /*
      * fork the process to the background if we are not printing to stderr 
@@ -1294,58 +1279,6 @@
 #endif
 
     snmp_log(LOG_INFO, "NET-SNMP version %s\n", netsnmp_get_version());
-    if (depmsg) {
-        snmp_log(LOG_WARNING, "-s and -S options are deprecated; use -Ls <facility> instead\n");
-    }
-    
-    if (listen_ports)
-        cp = listen_ports;
-    else
-        cp = default_port;
-
-    while (cp != NULL) {
-        char *sep = strchr(cp, ',');
-
-        if (sep != NULL) {
-            *sep = 0;
-        }
-
-        transport = netsnmp_transport_open_server("snmptrap", cp);
-        if (transport == NULL) {
-            snmp_log(LOG_ERR, "couldn't open %s -- errno %d (\"%s\")\n",
-                     cp, errno, strerror(errno));
-            snmptrapd_close_sessions(sess_list);
-            SOCK_CLEANUP;
-            exit(1);
-        } else {
-            ss = snmptrapd_add_session(transport);
-            if (ss == NULL) {
-                /*
-                 * Shouldn't happen?  We have already opened the transport
-                 * successfully so what could have gone wrong?  
-                 */
-                snmptrapd_close_sessions(sess_list);
-                netsnmp_transport_free(transport);
-                snmp_log(LOG_ERR, "couldn't open snmp - %s", strerror(errno));
-                SOCK_CLEANUP;
-                exit(1);
-            } else {
-                ss->next = sess_list;
-                sess_list = ss;
-            }
-        }
-
-        /*
-         * Process next listen address, if there is one.  
-         */
-
-        if (sep != NULL) {
-            *sep = ',';
-            cp = sep + 1;
-        } else {
-            cp = NULL;
-        }
-    }
 
     /*
      * ignore early sighup during startup
@@ -1388,65 +1321,8 @@
 #ifdef WIN32SERVICE
     trapd_status = SNMPTRAPD_RUNNING;
 #endif
-    while (netsnmp_running) {
-        if (reconfig) {
-                /*
-                 * If we are logging to a file, receipt of SIGHUP also
-                 * indicates the the log file should be closed and
-                 * re-opened.  This is useful for users that want to
-                 * rotate logs in a more predictable manner.
-                 */
-                netsnmp_logging_restart();
-                snmp_log(LOG_INFO, "NET-SNMP version %s restarted\n",
-                         netsnmp_get_version());
-            trapd_update_config();
-            if (trap1_fmt_str_remember) {
-                free_trap1_fmt();
-                free_trap2_fmt();
-                print_format1 = strdup(trap1_fmt_str_remember);
-                print_format2 = strdup(trap1_fmt_str_remember);
-            }
-            reconfig = 0;
-        }
-        numfds = 0;
-        FD_ZERO(&readfds);
-        FD_ZERO(&writefds);
-        FD_ZERO(&exceptfds);
-        block = 0;
-        tvp = &timeout;
-        timerclear(tvp);
-        tvp->tv_sec = 5;
-        snmp_select_info(&numfds, &readfds, tvp, &block);
-        if (block == 1)
-            tvp = NULL;         /* block without timeout */
-        netsnmp_external_event_info(&numfds, &readfds, &writefds, &exceptfds);
-        count = select(numfds, &readfds, &writefds, &exceptfds, tvp);
-        gettimeofday(&Now, 0);
-        if (count > 0) {
-            netsnmp_dispatch_external_events(&count, &readfds, &writefds,
-                                             &exceptfds);
-            /* If there are any more events after external events, then
-             * try SNMP events. */
-            if (count > 0) {
-                snmp_read(&readfds);
-            }
-        } else
-            switch (count) {
-            case 0:
-                snmp_timeout();
-                break;
-            case -1:
-                if (errno == EINTR)
-                    continue;
-                snmp_log_perror("select");
-                netsnmp_running = 0;
-                break;
-            default:
-                fprintf(stderr, "select returned %d\n", count);
-                netsnmp_running = 0;
-            }
-	run_alarms();
-    }
+
+    snmptrapd_main_loop();
 
     if (snmp_get_do_logging()) {
         struct tm      *tm;
diff --git a/apps/snmptrapd_auth.c b/apps/snmptrapd_auth.c
index 119de58..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
 
@@ -126,8 +128,10 @@
         /* pass the PDU to the VACM routine for handling authorization */
         DEBUGMSGTL(("snmptrapd:auth", "Calling VACM for checking phase %d:%s\n",
                     i, se_find_label_in_slist(VACM_VIEW_ENUM_NAME, i)));
-        if (vacm_check_view(newpdu, var->val.objid,
-                            var->val_len/sizeof(oid), 0, i) == VACM_SUCCESS) {
+        if (vacm_check_view_contents(newpdu, var->val.objid,
+                                     var->val_len/sizeof(oid), 0, i,
+                                     VACM_CHECK_VIEW_CONTENTS_DNE_CONTEXT_OK)
+            == VACM_SUCCESS) {
             DEBUGMSGTL(("snmptrapd:auth", "  result: authorized\n"));
             ret |= 1 << i;
         } else {
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 37ca5ab..5a8e3c8 100644
--- a/apps/snmptrapd_handlers.c
+++ b/apps/snmptrapd_handlers.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_STDLIB_H
 #include <stdlib.h>
@@ -14,10 +15,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
@@ -37,10 +38,17 @@
 #include "snmptrapd_log.h"
 #include "notification-log-mib/notification_log.h"
 
+netsnmp_feature_child_of(add_default_traphandler, snmptrapd)
+
 char *syslog_format1 = NULL;
 char *syslog_format2 = NULL;
 char *print_format1  = NULL;
 char *print_format2  = NULL;
+char *exec_format1   = NULL;
+char *exec_format2   = NULL;
+
+int   SyslogTrap = 0;
+int   dropauth = 0;
 
 const char     *trap1_std_str = "%.4y-%.2m-%.2l %.2h:%.2j:%.2k %B [%b] (via %A [%a]): %N\n\t%W Trap (%q) Uptime: %#T\n%v\n";
 const char     *trap2_std_str = "%.4y-%.2m-%.2l %.2h:%.2j:%.2k %B [%b]:\n%v\n";
@@ -81,19 +89,27 @@
     char           *cptr, *cp;
     netsnmp_trapd_handler *traph;
     int             flags = 0;
+    char           *format = NULL;
 
     memset( buf, 0, sizeof(buf));
     memset(obuf, 0, sizeof(obuf));
     cptr = copy_nword(line, buf, sizeof(buf));
+
+    if ( buf[0] == '-' && buf[1] == 'F' ) {
+        cptr = copy_nword(cptr, buf, sizeof(buf));
+        format = strdup( buf );
+        cptr = copy_nword(cptr, buf, sizeof(buf));
+    }
     if ( !cptr ) {
-        config_perror("Missing traphandle command");
+        netsnmp_config_error("Missing traphandle command (%s)", buf);
         return;
     }
 
     DEBUGMSGTL(("read_config:traphandle", "registering handler for: "));
     if (!strcmp(buf, "default")) {
         DEBUGMSG(("read_config:traphandle", "default"));
-        traph = netsnmp_add_default_traphandler( command_handler );
+        traph = netsnmp_add_global_traphandler(NETSNMPTRAPD_DEFAULT_HANDLER,
+                                               command_handler );
     } else {
         cp = buf+strlen(buf)-1;
         if ( *cp == '*' ) {
@@ -108,11 +124,8 @@
             }
         }
         if (!read_objid(buf, obuf, &olen)) {
-            char            buf1[STRINGMAX];
-            snprintf(buf1,  sizeof(buf1),
-                    "Bad trap OID in traphandle directive: %s", buf);
-            buf1[ sizeof(buf1)-1 ] = 0;
-            config_perror(buf1);
+	    netsnmp_config_error("Bad trap OID in traphandle directive: %s",
+				 buf);
             return;
         }
         DEBUGMSGOID(("read_config:traphandle", obuf, olen));
@@ -125,6 +138,8 @@
         traph->flags = flags;
         traph->authtypes = TRAP_AUTH_EXE;
         traph->token = strdup(cptr);
+        if (format)
+            traph->format = format;
     }
 }
 
@@ -138,17 +153,26 @@
     char           *cptr, *cp;
     netsnmp_trapd_handler *traph;
     int             flags = 0;
+    char           *format = NULL;
 
     memset( buf, 0, sizeof(buf));
     memset(obuf, 0, sizeof(obuf));
     cptr = copy_nword(line, buf, sizeof(buf));
+
+    if ( buf[0] == '-' && buf[1] == 'F' ) {
+        cptr = copy_nword(cptr, buf, sizeof(buf));
+        format = strdup( buf );
+        cptr = copy_nword(cptr, buf, sizeof(buf));
+    }
     DEBUGMSGTL(("read_config:forward", "registering forward for: "));
     if (!strcmp(buf, "default")) {
         DEBUGMSG(("read_config:forward", "default"));
         if ( !strcmp( cptr, "agentx" ))
-            traph = netsnmp_add_default_traphandler( axforward_handler );
+            traph = netsnmp_add_global_traphandler(NETSNMPTRAPD_DEFAULT_HANDLER,
+                                            axforward_handler );
         else
-            traph = netsnmp_add_default_traphandler( forward_handler );
+            traph = netsnmp_add_global_traphandler(NETSNMPTRAPD_DEFAULT_HANDLER,
+                                            forward_handler );
     } else {
         cp = buf+strlen(buf)-1;
         if ( *cp == '*' ) {
@@ -164,11 +188,7 @@
         }
 
         if (!read_objid(buf, obuf, &olen)) {
-            char            buf1[STRINGMAX];
-            snprintf(buf1,  sizeof(buf1),
-                    "Bad trap OID in forward directive: %s", buf);
-            buf1[ sizeof(buf1)-1 ] = 0;
-            config_perror(buf1);
+	    netsnmp_config_error("Bad trap OID in forward directive: %s", buf);
             return;
         }
         DEBUGMSGOID(("read_config:forward", obuf, olen));
@@ -184,21 +204,23 @@
         traph->flags = flags;
         traph->authtypes = TRAP_AUTH_NET;
         traph->token = strdup(cptr);
+        if (format)
+            traph->format = format;
     }
 }
 
 
-static void
+void
 parse_format(const char *token, char *line)
 {
-    char *cp;
+    char *cp, *sep;
 
     /*
      * Extract the first token from the value
      * which tells us which style of format this is
      */
     cp = line;
-    while (*cp && !isspace(*cp))
+    while (*cp && !isspace((unsigned char)(*cp)))
         cp++;
     if (!(*cp)) {
         /*
@@ -209,8 +231,9 @@
         return;
     }
 
+    sep = cp;
     *(cp++) = '\0';
-    while (*cp && !isspace(*cp))
+    while (*cp && isspace((unsigned char)(*cp)))
         cp++;
 
     /*
@@ -240,7 +263,20 @@
         SNMP_FREE( syslog_format2 );
         syslog_format1 = strdup(cp);
         syslog_format2 = strdup(cp);
+    } else if (!strcmp( line, "execute1")) {
+        SNMP_FREE( exec_format1 );
+        exec_format1 = strdup(cp);
+    } else if (!strcmp( line, "execute2")) {
+        SNMP_FREE( exec_format2 );
+        exec_format2 = strdup(cp);
+    } else if (!strcmp( line, "execute")) {
+        SNMP_FREE( exec_format1 );
+        SNMP_FREE( exec_format2 );
+        exec_format1 = strdup(cp);
+        exec_format2 = strdup(cp);
     }
+
+    *sep = ' ';
 }
 
 
@@ -289,7 +325,7 @@
                             parse_trap2_fmt, free_trap2_fmt, "format");
     register_config_handler("snmptrapd", "format",
                             parse_format, NULL,
-			    "[print{,1,2}|syslog{,1,2}] format");
+			    "[print{,1,2}|syslog{,1,2}|execute{,1,2}] format");
     register_config_handler("snmptrapd", "forward",
                             parse_forward, NULL, "OID|\"default\" destination");
 }
@@ -308,12 +344,26 @@
 netsnmp_trapd_handler *netsnmp_default_traphandlers  = NULL;
 netsnmp_trapd_handler *netsnmp_specific_traphandlers = NULL;
 
+typedef struct netsnmp_handler_map_t {
+   netsnmp_trapd_handler **handler;
+   const char             *descr;
+} netsnmp_handler_map;
+
+static netsnmp_handler_map handlers[] = {
+    { &netsnmp_auth_global_traphandlers, "auth trap" },
+    { &netsnmp_pre_global_traphandlers, "pre-global trap" },
+    { NULL, "trap specific" },
+    { &netsnmp_post_global_traphandlers, "global" },
+    { NULL, NULL }
+};
+
 /*
  * Register a new "global" traphandler,
  * 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;
 
     if ( !handler )
@@ -324,7 +374,7 @@
         return NULL;
 
     /*
-     * Add this new handler to the front of the appropriate global list
+     * Add this new handler to the front of the appropriate list
      *   (or should it go on the end?)
      */
     traph->handler = handler;
@@ -342,6 +392,10 @@
         traph->nexth   = netsnmp_post_global_traphandlers;
         netsnmp_post_global_traphandlers = traph;
         break;
+    case NETSNMPTRAPD_DEFAULT_HANDLER:
+        traph->nexth   = netsnmp_default_traphandlers;
+        netsnmp_default_traphandlers = traph;
+        break;
     default:
         free( traph );
         return NULL;
@@ -349,32 +403,17 @@
     return traph;
 }
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_ADD_DEFAULT_TRAPHANDLER
 /*
  * Register a new "default" traphandler, to be applied to all
  * traps with no specific trap handlers of their own.
  */
 netsnmp_trapd_handler *
-netsnmp_add_default_traphandler( Netsnmp_Trap_Handler* handler) {
-    netsnmp_trapd_handler *traph;
-
-    if ( !handler )
-        return NULL;
-
-    traph = SNMP_MALLOC_TYPEDEF(netsnmp_trapd_handler);
-    if ( !traph )
-        return NULL;
-
-    /*
-     * Add this new handler to the front of the default list
-     *   (or should it go on the end?)
-     */
-    traph->authtypes = TRAP_AUTH_ALL; /* callers will likely change this */
-    traph->handler = handler;
-    traph->nexth   = netsnmp_default_traphandlers;
-    netsnmp_default_traphandlers = traph;
-    return traph;
+netsnmp_add_default_traphandler(Netsnmp_Trap_Handler *handler) {
+    return netsnmp_add_global_traphandler(NETSNMPTRAPD_DEFAULT_HANDLER,
+                                          handler);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_ADD_DEFAULT_TRAPHANDLER */
 
 
 /*
@@ -399,7 +438,7 @@
     traph->authtypes   = TRAP_AUTH_ALL; /* callers will likely change this */
     traph->handler     = handler;
     traph->trapoid_len = trapOidLen;
-    traph->trapoid = netsnmp_memdup(trapOid, sizeof(oid) * trapOidLen);
+    traph->trapoid     = snmp_duplicate_objid(trapOid, trapOidLen);
 
     /*
      * Now try to find the appropriate place in the trap-specific
@@ -514,8 +553,13 @@
 netsnmp_get_traphandler( oid *trapOid, int trapOidLen ) {
     netsnmp_trapd_handler *traph;
     
-    if (!trapOid || !trapOidLen)
+    if (!trapOid || !trapOidLen) {
+        DEBUGMSGTL(( "snmptrapd:lookup", "get_traphandler no OID!\n"));
         return NULL;
+    }
+    DEBUGMSGTL(( "snmptrapd:lookup", "Looking up Trap OID: "));
+    DEBUGMSGOID(("snmptrapd:lookup", trapOid, trapOidLen));
+    DEBUGMSG(( "snmptrapd:lookup", "\n"));
 
     /*
      * Look for a matching OID, and return that list...
@@ -530,7 +574,8 @@
         if (!(traph->flags & NETSNMP_TRAPHANDLER_FLAG_MATCH_TREE)) {
             if (snmp_oid_compare(traph->trapoid, traph->trapoid_len,
                                  trapOid, trapOidLen) == 0) {
-                DEBUGMSGTL(( "snmptrapd", "get_traphandler exact match (%x)\n", traph));
+                DEBUGMSGTL(( "snmptrapd:lookup",
+                             "get_traphandler exact match (%p)\n", traph));
 	        return traph;
             }
 	} else {
@@ -548,11 +593,11 @@
                      */
                     if (snmp_oid_compare(traph->trapoid, traph->trapoid_len,
                                          trapOid, trapOidLen) != 0) {
-                        DEBUGMSGTL(( "snmptrapd", "get_traphandler strict subtree match (%x)\n", traph));
+                        DEBUGMSGTL(( "snmptrapd:lookup", "get_traphandler strict subtree match (%p)\n", traph));
 	                return traph;
                     }
                 } else {
-                    DEBUGMSGTL(( "snmptrapd", "get_traphandler subtree match (%x)\n", traph));
+                    DEBUGMSGTL(( "snmptrapd:lookup", "get_traphandler subtree match (%p)\n", traph));
 	            return traph;
                 }
             }
@@ -562,7 +607,7 @@
     /*
      * .... or failing that, return the "default" list (which may be NULL)
      */
-    DEBUGMSGTL(( "snmptrapd", "get_traphandler default (%x)\n",
+    DEBUGMSGTL(( "snmptrapd:lookup", "get_traphandler default (%p)\n",
 			    netsnmp_default_traphandlers));
     return netsnmp_default_traphandlers;
 }
@@ -587,7 +632,6 @@
     u_char         *rbuf = NULL;
     size_t          r_len = 64, o_len = 0;
     int             trunc = 0;
-    extern int      SyslogTrap;
 
     DEBUGMSGTL(( "snmptrapd", "syslog_handler\n"));
 
@@ -670,7 +714,6 @@
     u_char         *rbuf = NULL;
     size_t          r_len = 64, o_len = 0;
     int             trunc = 0;
-    extern int      dropauth;
 
     DEBUGMSGTL(( "snmptrapd", "print_handler\n"));
 
@@ -738,163 +781,20 @@
 }
 
 
+#define EXECUTE_FORMAT	"%B\n%b\n%V\n%v\n"
+
 /*
  *  Trap handler for invoking a suitable script
  */
-void
-send_handler_data(FILE * file, struct hostent *host,
-                  netsnmp_pdu *pdu, netsnmp_transport *transport)
-{
-    netsnmp_variable_list tmpvar, *vars;
-    static oid      trapoids[] = { 1, 3, 6, 1, 6, 3, 1, 1, 5, 0 };
-    static oid      snmpsysuptime[] = { 1, 3, 6, 1, 2, 1, 1, 3, 0 };
-    static oid      snmptrapoid[] = { 1, 3, 6, 1, 6, 3, 1, 1, 4, 1, 0 };
-    static oid      snmptrapent[] = { 1, 3, 6, 1, 6, 3, 1, 1, 4, 3, 0 };
-    static oid      snmptrapaddr[] = { 1, 3, 6, 1, 6, 3, 18, 1, 3, 0 };
-    static oid      snmptrapcom[] = { 1, 3, 6, 1, 6, 3, 18, 1, 4, 0 };
-    oid             enttrapoid[MAX_OID_LEN];
-    int             enttraplen = pdu->enterprise_length;
-
-    if (transport != NULL && transport->f_fmtaddr != NULL) {
-        char *tstr = transport->f_fmtaddr(transport, pdu->transport_data,
-                                          pdu->transport_data_length);
-        if (tstr != NULL) {
-            fprintf(file, "%s\n%s\n", host ? host->h_name : tstr, tstr);
-            free(tstr);
-        }
-    } else {
-        fprintf(file, "%s\n<UNKNOWN>\n", host ? host->h_name : "<UNKNOWN>");
-    }
-    if (pdu->command == SNMP_MSG_TRAP) {
-        /*
-         * convert a v1 trap to a v2 variable binding list:
-         * The uptime and trapOID go first in the list. 
-         */
-        tmpvar.val.integer = (long *) &pdu->time;
-        tmpvar.val_len = sizeof(pdu->time);
-        tmpvar.type = ASN_TIMETICKS;
-        fprint_variable(file, snmpsysuptime,
-                        sizeof(snmpsysuptime) / sizeof(oid), &tmpvar);
-        tmpvar.type = ASN_OBJECT_ID;
-        if (pdu->trap_type == SNMP_TRAP_ENTERPRISESPECIFIC) {
-            memcpy(enttrapoid, pdu->enterprise, sizeof(oid) * enttraplen);
-            if (enttrapoid[enttraplen - 1] != 0)
-                enttrapoid[enttraplen++] = 0;
-            enttrapoid[enttraplen++] = pdu->specific_type;
-            tmpvar.val.objid = enttrapoid;
-            tmpvar.val_len = enttraplen * sizeof(oid);
-        } else {
-            trapoids[9] = pdu->trap_type + 1;
-            tmpvar.val.objid = trapoids;
-            tmpvar.val_len = 10 * sizeof(oid);
-        }
-        fprint_variable(file, snmptrapoid,
-                        sizeof(snmptrapoid) / sizeof(oid), &tmpvar);
-    }
-    /*
-     * do the variables in the pdu 
-     */
-    for (vars = pdu->variables; vars; vars = vars->next_variable) {
-        fprint_variable(file, vars->name, vars->name_length, vars);
-    }
-    if (pdu->command == SNMP_MSG_TRAP) {
-        /*
-         * convert a v1 trap to a v2 variable binding list:
-         * The enterprise goes last. 
-         */
-        tmpvar.val.string = pdu->agent_addr;
-        tmpvar.val_len = 4;
-        tmpvar.type = ASN_IPADDRESS;
-        fprint_variable(file, snmptrapaddr,
-                        sizeof(snmptrapaddr) / sizeof(oid), &tmpvar);
-        tmpvar.val.string = pdu->community;
-        tmpvar.val_len = pdu->community_len;
-        tmpvar.type = ASN_OCTET_STR;
-        fprint_variable(file, snmptrapcom,
-                        sizeof(snmptrapcom) / sizeof(oid), &tmpvar);
-        tmpvar.val.objid = pdu->enterprise;
-        tmpvar.val_len = pdu->enterprise_length * sizeof(oid);
-        tmpvar.type = ASN_OBJECT_ID;
-        fprint_variable(file, snmptrapent,
-                        sizeof(snmptrapent) / sizeof(oid), &tmpvar);
-    }
-}
-
-void
-do_external(char *cmd, struct hostent *host,
-            netsnmp_pdu *pdu, netsnmp_transport *transport)
-{
-    FILE           *file;
-    int             oldquick, result;
-
-    DEBUGMSGTL(("snmptrapd", "Running: %s\n", cmd));
-    oldquick = snmp_get_quick_print();
-    snmp_set_quick_print(1);
-    if (cmd) {
-#ifndef WIN32
-        int             fd[2];
-        int             pid;
-
-        if (pipe(fd)) {
-            snmp_log_perror("pipe");
-        }
-        if ((pid = fork()) == 0) {
-            /*
-             * child 
-             */
-            close(0);
-            if (dup(fd[0]) != 0) {
-                snmp_log_perror("dup");
-            }
-            close(fd[1]);
-            close(fd[0]);
-            system(cmd);
-            exit(0);
-        } else if (pid > 0) {
-            file = fdopen(fd[1], "w");
-            send_handler_data(file, host, pdu, transport);
-            fclose(file);
-            close(fd[0]);
-            close(fd[1]);
-            if (waitpid(pid, &result, 0) < 0) {
-                snmp_log_perror("waitpid");
-            }
-        } else {
-            snmp_log_perror("fork");
-        }
-#else
-        char            command_buf[128];
-        char            file_buf[L_tmpnam];
-
-        tmpnam(file_buf);
-        file = fopen(file_buf, "w");
-        if (!file) {
-            fprintf(stderr, "fopen: %s: %s\n", file_buf, strerror(errno));
-        } else {
-            send_handler_data(file, host, pdu, transport);
-            fclose(file);
-            snprintf(command_buf, sizeof(command_buf),
-                     "%s < %s", cmd, file_buf);
-            command_buf[ sizeof(command_buf)-1 ] = 0;
-            result = system(command_buf);
-            if (result == -1)
-                fprintf(stderr, "system: %s: %s\n", command_buf,
-                        strerror(errno));
-            else if (result)
-                fprintf(stderr, "system: %s: %d\n", command_buf, result);
-            remove(file_buf);
-        }
-#endif                          /* WIN32 */
-    }
-    snmp_set_quick_print(oldquick);
-}
-
-#define EXECUTE_FORMAT	"%B\n%b\n%V\n%v\n"
-
 int   command_handler( netsnmp_pdu           *pdu,
                        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;
@@ -907,8 +807,10 @@
 	    v2_pdu = convert_v1pdu_to_v2(pdu);
 	else
 	    v2_pdu = pdu;
-        oldquick = snmp_get_quick_print();
-        snmp_set_quick_print(1);
+        oldquick = netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                          NETSNMP_DS_LIB_QUICK_PRINT);
+        netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                               NETSNMP_DS_LIB_QUICK_PRINT, 1);
 
         /*
 	 * Format the trap and pass this string to the external command
@@ -928,45 +830,39 @@
                                              handler->format,
                                              v2_pdu, transport);
         } else {
-            DEBUGMSGTL(( "snmptrapd", "execute format\n"));
-            realloc_format_trap(&rbuf, &r_len, &o_len, 1,
-                                             EXECUTE_FORMAT,
+	    if ( pdu->command == SNMP_MSG_TRAP && exec_format1 ) {
+                DEBUGMSGTL(( "snmptrapd", "exec v1 = '%s'\n", exec_format1));
+                realloc_format_trap(&rbuf, &r_len, &o_len, 1,
+                                             exec_format1, pdu, transport);
+	    } else if ( pdu->command != SNMP_MSG_TRAP && exec_format2 ) {
+                DEBUGMSGTL(( "snmptrapd", "exec v2/3 = '%s'\n", exec_format2));
+                realloc_format_trap(&rbuf, &r_len, &o_len, 1,
+                                             exec_format2, pdu, transport);
+	    } else {
+                DEBUGMSGTL(( "snmptrapd", "execute format\n"));
+                realloc_format_trap(&rbuf, &r_len, &o_len, 1, EXECUTE_FORMAT,
                                              v2_pdu, transport);
+            }
 	}
 
         /*
          *  and pass this formatted string to the command specified
          */
-        run_shell_command(handler->token, (char*)rbuf, NULL, 0);   /* Not interested in output */
-        snmp_set_quick_print(oldquick);
+        run_shell_command(handler->token, (char*)rbuf, NULL, NULL);   /* Not interested in output */
+        netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                               NETSNMP_DS_LIB_QUICK_PRINT, oldquick);
         if (pdu->command == SNMP_MSG_TRAP)
             snmp_free_pdu(v2_pdu);
         free(rbuf);
     }
     return NETSNMPTRAPD_HANDLER_OK;
+#endif /* !def USING_UTILITIES_EXECUTE_MODULE */
 }
 
 
 
 
 /*
- *  Trap handler for doing something with "event" traps
- *      (not entirely clear what this is about ???)
- */
-	/* XXX - in snmptrapd.c */
-void event_input(netsnmp_variable_list * vp);
-
-int   event_handler( netsnmp_pdu           *pdu,
-                     netsnmp_transport     *transport,
-                     netsnmp_trapd_handler *handler)
-{
-    DEBUGMSGTL(( "snmptrapd", "event_handler\n"));
-    event_input(pdu->variables);
-    return NETSNMPTRAPD_HANDLER_OK;
-}
-
-
-/*
  *  Trap handler for forwarding to the AgentX master agent
  */
 int axforward_handler( netsnmp_pdu           *pdu,
@@ -1055,11 +951,7 @@
     netsnmp_variable_list *vars;
     netsnmp_trapd_handler *traph;
     netsnmp_transport *transport = (netsnmp_transport *) magic;
-    int ret;
-    extern netsnmp_trapd_handler *netsnmp_auth_global_traphandlers;
-    extern netsnmp_trapd_handler *netsnmp_pre_global_traphandlers;
-    extern netsnmp_trapd_handler *netsnmp_post_global_traphandlers;
-
+    int ret, idx;
 
     switch (op) {
     case NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE:
@@ -1156,77 +1048,26 @@
          *  OK - Enough waffling, let's get to work.....
 	 */
 
-        /*
-	 *  a) authentication handlers
-	 */
-        traph = netsnmp_auth_global_traphandlers;
-        DEBUGMSGTL(("snmptrapd", "Running auth trap handlers\n"));
-	while (traph) {
-            if (!netsnmp_trapd_check_auth(traph->authtypes)) {
-                traph = traph->nexth;
-                continue; /* we continue on and skip this one */
-            }
-	    ret = (*(traph->handler))(pdu, transport, traph);
-            if (ret == NETSNMPTRAPD_HANDLER_FINISH)
-                return 1;
-            if (ret == NETSNMPTRAPD_HANDLER_BREAK)
-                break;
-	    traph = traph->nexth;
-	}
+        for( idx = 0; handlers[idx].descr; ++idx ) {
+            DEBUGMSGTL(("snmptrapd", "Running %s handlers\n",
+                        handlers[idx].descr));
+            if (NULL == handlers[idx].handler) /* specific */
+                traph = netsnmp_get_traphandler(trapOid, trapOidLen);
+            else
+                traph = *handlers[idx].handler;
 
-        /*
-	 *  b) pre-specific global handlers
-	 */
-        traph = netsnmp_pre_global_traphandlers;
-        DEBUGMSGTL(("snmptrapd", "Running pre-global trap handlers\n"));
-	while (traph) {
-            if (!netsnmp_trapd_check_auth(traph->authtypes)) {
-                traph = traph->nexth;
-                continue; /* we continue on and skip this one */
-            }
-	    ret = (*(traph->handler))(pdu, transport, traph);
-            if (ret == NETSNMPTRAPD_HANDLER_FINISH)
-                return 1;
-            if (ret == NETSNMPTRAPD_HANDLER_BREAK)
-                break;
-	    traph = traph->nexth;
-	}
+            for( ; traph; traph = traph->nexth) {
+                if (!netsnmp_trapd_check_auth(traph->authtypes))
+                    continue; /* we continue on and skip this one */
 
-        /*
-	 *  c) trap-specific handlers
-	 */
-        DEBUGMSGTL(("snmptrapd", "Running trap specific handlers\n"));
-        traph = netsnmp_get_traphandler(trapOid, trapOidLen);
-	while (traph) {
-            if (!netsnmp_trapd_check_auth(traph->authtypes)) {
-                traph = traph->nexth;
-                continue; /* we continue on and skip this one */
-            }
-	    ret = (*(traph->handler))(pdu, transport, traph);
-            if (ret == NETSNMPTRAPD_HANDLER_FINISH)
-                return 1;
-            if (ret == NETSNMPTRAPD_HANDLER_BREAK)
-                break;
-	    traph = traph->nexth;
-	}
+                ret = (*(traph->handler))(pdu, transport, traph);
+                if(NETSNMPTRAPD_HANDLER_FINISH == ret)
+                    return 1;
+                if (ret == NETSNMPTRAPD_HANDLER_BREAK)
+                    break; /* move on to next type */
+            } /* traph */
+        } /* handlers */
 
-        /*
-	 *  d) other global handlers
-	 */
-        DEBUGMSGTL(("snmptrapd", "Running global handlers\n"));
-        traph = netsnmp_post_global_traphandlers;
-	while (traph) {
-            if (!netsnmp_trapd_check_auth(traph->authtypes)) {
-                traph = traph->nexth;
-                continue; /* we continue on and skip this one */
-            }
-	    ret = (*(traph->handler))(pdu, transport, traph);
-            if (ret == NETSNMPTRAPD_HANDLER_FINISH)
-                return 1;
-            if (ret == NETSNMPTRAPD_HANDLER_BREAK)
-                break;
-	    traph = traph->nexth;
-	}
 
 	if (pdu->command == SNMP_MSG_INFORM) {
 	    netsnmp_pdu *reply = snmp_clone_pdu(pdu);
diff --git a/apps/snmptrapd_handlers.h b/apps/snmptrapd_handlers.h
index 9212d12..097c02d 100644
--- a/apps/snmptrapd_handlers.h
+++ b/apps/snmptrapd_handlers.h
@@ -35,6 +35,7 @@
 Netsnmp_Trap_Handler   forward_handler;
 Netsnmp_Trap_Handler   axforward_handler;
 Netsnmp_Trap_Handler   notification_handler;
+Netsnmp_Trap_Handler   mysql_handler;
 
 void free_trap1_fmt(void);
 void free_trap2_fmt(void);
@@ -44,6 +45,7 @@
 #define NETSNMPTRAPD_AUTH_HANDLER    1
 #define NETSNMPTRAPD_PRE_HANDLER     2
 #define NETSNMPTRAPD_POST_HANDLER    3
+#define NETSNMPTRAPD_DEFAULT_HANDLER 4
 
 #define NETSNMPTRAPD_HANDLER_OK      1	/* Succeed, & keep going */
 #define NETSNMPTRAPD_HANDLER_FAIL    2	/* Failed but keep going */
diff --git a/apps/snmptrapd_log.c b/apps/snmptrapd_log.c
index bc0b1e3..774f797 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;
     }
 
@@ -619,8 +617,10 @@
     char            fmt_cmd = options->cmd;     /* what we're formatting */
     u_char         *temp_buf = NULL;
     size_t          temp_buf_len = 64, temp_out_len = 0;
+    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;
     }
 
@@ -648,11 +648,11 @@
          */
         if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
                                     NETSNMP_DS_APP_NUMERIC_IP)) {
-            host = gethostbyaddr((char *) pdu->agent_addr, 4, AF_INET);
+            host = netsnmp_gethostbyaddr((char *) pdu->agent_addr, 4, AF_INET);
         }
         if (host != NULL) {
             if (!snmp_strcat(&temp_buf, &temp_buf_len, &temp_out_len, 1,
-                             (u_char *)host->h_name)) {
+                             (const u_char *)host->h_name)) {
                 if (temp_buf != NULL) {
                     free(temp_buf);
                 }
@@ -674,130 +674,59 @@
          * Write the numerical transport information.  
          */
         if (transport != NULL && transport->f_fmtaddr != NULL) {
-            char           *tstr =
-                transport->f_fmtaddr(transport, pdu->transport_data,
-                                     pdu->transport_data_length);
-            if (!snmp_strcat
-                (&temp_buf, &temp_buf_len, &temp_out_len, 1, (u_char *)tstr)) {
-                if (tstr != NULL) {
-                    free(tstr);
-                }
-                if (temp_buf != NULL) {
-                    free(temp_buf);
-                }
+            oflags = transport->flags;
+            transport->flags &= ~NETSNMP_TRANSPORT_FLAG_HOSTNAME;
+            tstr = transport->f_fmtaddr(transport, pdu->transport_data,
+                                        pdu->transport_data_length);
+            transport->flags = oflags;
+          
+            if (!tstr) goto noip;
+            if (!snmp_strcat(&temp_buf, &temp_buf_len, &temp_out_len,
+                             1, (u_char *)tstr)) {
+                SNMP_FREE(temp_buf);
+                SNMP_FREE(tstr);
                 return 0;
             }
-            if (tstr != NULL) {
-                free(tstr);
-            }
+            SNMP_FREE(tstr);
         } else {
-            if (!snmp_strcat
-                (&temp_buf, &temp_buf_len, &temp_out_len, 1,
-                 (const u_char*)"<UNKNOWN>")) {
-                if (temp_buf != NULL) {
-                    free(temp_buf);
-                }
+noip:
+            if (!snmp_strcat(&temp_buf, &temp_buf_len, &temp_out_len, 1,
+                             (const u_char*)"<UNKNOWN>")) {
+                SNMP_FREE(temp_buf);
                 return 0;
             }
         }
         break;
 
-        /*
-         * Write a host name.  
-         */
     case CHR_PDU_NAME:
         /*
-         * Right, apparently a name lookup is wanted.  This is only reasonable
-         * for the UDP and TCP transport domains (we don't want to try to be
-         * too clever here).  
+         * Try to convert the numerical transport information
+         *  into a hostname.  Or rather, have the transport-specific
+         *  address formatting routine do this.
+         * Otherwise falls back to the numeric address format.
          */
-#ifdef NETSNMP_TRANSPORT_TCP_DOMAIN
-        if (transport != NULL && (transport->domain == netsnmpUDPDomain ||
-                                  transport->domain ==
-                                  netsnmp_snmpTCPDomain)) {
-#else
-        if (transport != NULL && transport->domain == netsnmpUDPDomain) {
-#endif
-            /*
-             * This is kind of bletcherous -- it breaks the opacity of
-             * transport_data but never mind -- the alternative is a lot of
-             * munging strings from f_fmtaddr.  
-             */
-typedef struct netsnmp_udp_addr_pair_s {   /* From snmpUDPDomain.c */
-    struct sockaddr_in remote_addr;
-    struct in_addr local_addr;
-} netsnmp_udp_addr_pair;
-
-            netsnmp_udp_addr_pair *addr =
-                (netsnmp_udp_addr_pair *) pdu->transport_data;
-            if (addr != NULL
-                && pdu->transport_data_length ==
-                sizeof(netsnmp_udp_addr_pair)) {
-                if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
-                                            NETSNMP_DS_APP_NUMERIC_IP)) {
-                    host =
-                        gethostbyaddr((char *) &(addr->remote_addr.sin_addr),
-                                      sizeof(struct in_addr), AF_INET);
-                }
-                if (host != NULL) {
-                    if (!snmp_strcat
-                        (&temp_buf, &temp_buf_len, &temp_out_len, 1,
-                         (u_char *)host->h_name)) {
-                        if (temp_buf != NULL) {
-                            free(temp_buf);
-                        }
-                        return 0;
-                    }
-                } else {
-                    if (!snmp_strcat
-                        (&temp_buf, &temp_buf_len, &temp_out_len, 1,
-                         (u_char *)inet_ntoa(addr->remote_addr.sin_addr))) {
-                        if (temp_buf != NULL) {
-                            free(temp_buf);
-                        }
-                        return 0;
-                    }
-                }
-            } else {
-                if (!snmp_strcat
-                    (&temp_buf, &temp_buf_len, &temp_out_len, 1,
-                     (const u_char*)"<UNKNOWN>")) {
-                    if (temp_buf != NULL) {
-                        free(temp_buf);
-                    }
-                    return 0;
-                }
-            }
-        } else if (transport != NULL && transport->f_fmtaddr != NULL) {
-            /*
-             * Some other domain for which we do not know how to do a name
-             * lookup.  Fall back to the formatted transport address.  
-             */
-            char           *tstr =
-                transport->f_fmtaddr(transport, pdu->transport_data,
-                                     pdu->transport_data_length);
-            if (!snmp_strcat
-                (&temp_buf, &temp_buf_len, &temp_out_len, 1, (u_char *)tstr)) {
-                if (tstr != NULL) {
-                    free(tstr);
-                }
-                if (temp_buf != NULL) {
-                    free(temp_buf);
-                }
+        if (transport != NULL && transport->f_fmtaddr != NULL) {
+            oflags = transport->flags;
+            if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
+                                        NETSNMP_DS_APP_NUMERIC_IP))
+                transport->flags |= NETSNMP_TRANSPORT_FLAG_HOSTNAME;
+            tstr = transport->f_fmtaddr(transport, pdu->transport_data,
+                                        pdu->transport_data_length);
+            transport->flags = oflags;
+          
+            if (!tstr) goto nohost;
+            if (!snmp_strcat(&temp_buf, &temp_buf_len, &temp_out_len,
+                             1, (u_char *)tstr)) {
+                SNMP_FREE(temp_buf);
+                SNMP_FREE(tstr);
                 return 0;
             }
-            if (tstr != NULL) {
-                free(tstr);
-            }
+            SNMP_FREE(tstr);
         } else {
-            /*
-             * We are kind of stuck!  
-             */
+nohost:
             if (!snmp_strcat(&temp_buf, &temp_buf_len, &temp_out_len, 1,
                              (const u_char*)"<UNKNOWN>")) {
-                if (temp_buf != NULL) {
-                    free(temp_buf);
-                }
+                SNMP_FREE(temp_buf);
                 return 0;
             }
         }
@@ -864,7 +793,7 @@
         /*
          * Write the context oid.  
          */
-        if (!sprint_realloc_objid
+        if (!sprint_realloc_hexstring
             (&temp_buf, &temp_buf_len, &temp_out_len, 1, pdu->contextEngineID,
              pdu->contextEngineIDLen)) {
             free(temp_buf);
@@ -1064,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;
     }
 
@@ -1230,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) = '.';
@@ -1252,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) = '.';
@@ -1439,7 +1368,7 @@
      */
     if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, 
                                 NETSNMP_DS_APP_NUMERIC_IP)) {
-        host = gethostbyaddr((char *) pdu->agent_addr, 4, AF_INET);
+        host = netsnmp_gethostbyaddr((char *) pdu->agent_addr, 4, AF_INET);
     }
     if (host != (struct hostent *) NULL) {
         if (!snmp_strcat
@@ -1788,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';
@@ -1819,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';
@@ -1830,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
new file mode 100644
index 0000000..671e542
--- /dev/null
+++ b/apps/snmptrapd_sql.c
@@ -0,0 +1,1120 @@
+/*
+ * File       : snmptrapd_sql
+ * Author     : Robert Story
+ *
+ * Copyright © 2009 Science Logic, Inc. All rights reserved.
+ * Use is subject to license terms specified in the COPYING file
+ * distributed with the Net-SNMP package.
+ *
+ * This file implements a handler for snmptrapd which will cache incoming
+ * traps and then write them to a MySQL database.
+ *
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+#ifdef NETSNMP_USE_MYSQL
+
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <stdio.h>
+#if HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+#include <ctype.h>
+#include <sys/types.h>
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include "snmptrapd_handlers.h"
+#include "snmptrapd_auth.h"
+#include "snmptrapd_log.h"
+
+/*
+ * SQL includes
+ */
+#undef PACKAGE_BUGREPORT
+#undef PACKAGE_NAME
+#undef PACKAGE_STRING
+#undef PACKAGE_TARNAME
+#undef PACKAGE_VERSION
+#include <my_global.h>
+#include <my_sys.h>
+#include <mysql.h>
+#include <errmsg.h>
+
+netsnmp_feature_require(container_fifo)
+
+/*
+ * define a structure to hold all the file globals
+ */
+typedef struct netsnmp_sql_globals_t {
+    char        *host_name;       /* server host (def=localhost) */
+    char        *user_name;       /* username (def=login name) */
+    char        *password;        /* password (def=none) */
+    u_int        port_num;        /* port number (built-in value) */
+    char        *socket_name;     /* socket name (built-in value) */
+    const char  *db_name;         /* database name (def=none) */
+    u_int        flags;           /* connection flags (none) */
+    MYSQL       *conn;            /* connection */
+    u_char       connected;       /* connected flag */
+    const char  *groups[3];
+    MYSQL_STMT  *trap_stmt, *vb_stmt; /* prepared statements */
+    u_int        alarm_id;        /* id of periodic save alarm */
+    netsnmp_container *queue;     /* container; traps pending database write */
+    u_int        queue_max;       /* auto save queue when it gets this big */
+    int          queue_interval;  /* auto save every N seconds */
+} netsnmp_sql_globals;
+
+static netsnmp_sql_globals _sql = {
+    NULL,                  /* host */
+    NULL,                  /* username */
+    NULL,                  /* password */
+    0,                     /* port */
+    NULL,                  /* socket */
+    "net_snmp",            /* database */
+    0,                     /* conn flags */
+    NULL,                  /* connection */
+    0,                     /* connected */
+    { "client", "snmptrapd", NULL },  /* groups to read from .my.cnf */
+    NULL,                  /* trap_stmt */
+    NULL,                  /* vb_stmt */
+    0,                     /* alarm_id */
+    NULL,                  /* queue */
+    1,                     /* queue_max */
+    -1                     /* queue_interval */
+};
+
+/*
+ * log traps as text, or binary blobs?
+ */
+#define NETSNMP_MYSQL_TRAP_VALUE_TEXT 1
+
+/*
+ * We will be using prepared statements for performance reasons. This
+ * requires a sql bind structure for each cell to be inserted in the
+ * database. We will be using 2 global static structures to bind to,
+ * and a netsnmp container to store the necessary data until it is
+ * written to the database. Fixed size buffers are also used to
+ * simplify memory management.
+ */
+/** enums for the trap fields to be bound */
+enum{
+    TBIND_DATE = 0,           /* time received */
+    TBIND_HOST,               /* src ip */
+    TBIND_USER,               /* auth/user information */
+    TBIND_TYPE,               /* pdu type */
+    TBIND_VER,                /* snmp version */
+    TBIND_REQID,              /* request id */
+    TBIND_OID,                /* trap OID */
+    TBIND_TRANSPORT,          /* transport */
+    TBIND_SECURITY_MODEL,     /* security model */
+    TBIND_v3_MSGID,           /* v3 msg id */
+    TBIND_v3_SECURITY_LEVEL,  /* security level */
+    TBIND_v3_CONTEXT_NAME,    /* context */
+    TBIND_v3_CONTEXT_ENGINE,  /* context engine id */
+    TBIND_v3_SECURITY_NAME,   /* security name */
+    TBIND_v3_SECURITY_ENGINE, /* security engine id */
+    TBIND_MAX
+};
+
+/** enums for the varbind fields to be bound */
+enum {
+    VBIND_ID = 0,             /* trap_id */
+    VBIND_OID,                /* varbind oid */
+    VBIND_TYPE,               /* varbind type */
+    VBIND_VAL,                /* varbind value */
+    VBIND_MAX
+};
+
+/** buffer struct for varbind data */
+typedef struct sql_vb_buf_t {
+
+    char      *oid;
+    u_long     oid_len;
+
+    u_char    *val;
+    u_long     val_len;
+
+    uint16_t   type;
+
+} sql_vb_buf;
+
+/** buffer struct for trap data */
+typedef struct sql_buf_t {
+    char      *host;
+    u_long     host_len;
+
+    char      *oid;
+    u_long     oid_len;
+
+    char      *user;
+    u_long     user_len;
+
+    MYSQL_TIME time;
+    uint16_t   version, type;
+    uint32_t   reqid;
+
+    char      *transport;
+    u_long     transport_len;
+
+    uint16_t   security_level, security_model;
+    uint32_t   msgid;
+
+    char      *context;
+    u_long     context_len;
+
+    char      *context_engine;
+    u_long     context_engine_len;
+
+    char      *security_name;
+    u_long     security_name_len;
+
+    char      *security_engine;
+    u_long     security_engine_len;
+
+    netsnmp_container *varbinds;
+
+    char       logged;
+} sql_buf;
+
+/*
+ * static bind structures, plus 2 static buffers to bind to.
+ */
+static MYSQL_BIND _tbind[TBIND_MAX], _vbind[VBIND_MAX];
+static my_bool    _no_v3;
+
+static void _sql_process_queue(u_int dontcare, void *meeither);
+
+/*
+ * parse the sqlMaxQueue configuration token
+ */
+static void
+_parse_queue_fmt(const char *token, char *cptr)
+{
+    _sql.queue_max = atoi(cptr);
+    DEBUGMSGTL(("sql:queue","queue max now %d\n", _sql.queue_max));
+}
+
+/*
+ * parse the sqlSaveInterval configuration token
+ */
+static void
+_parse_interval_fmt(const char *token, char *cptr)
+{
+    _sql.queue_interval = atoi(cptr);
+    DEBUGMSGTL(("sql:queue","queue interval now %d seconds\n",
+                _sql.queue_interval));
+}
+
+/*
+ * register sql related configuration tokens
+ */
+void
+snmptrapd_register_sql_configs( void )
+{
+    register_config_handler("snmptrapd", "sqlMaxQueue",
+                            _parse_queue_fmt, NULL, "integer");
+    register_config_handler("snmptrapd", "sqlSaveInterval",
+                            _parse_interval_fmt, NULL, "seconds");
+}
+
+static void
+netsnmp_sql_disconnected(void)
+{
+    DEBUGMSGTL(("sql:connection","disconnected\n"));
+
+    _sql.connected = 0;
+
+    /** release prepared statements */
+    if (_sql.trap_stmt) {
+        mysql_stmt_close(_sql.trap_stmt);
+        _sql.trap_stmt = NULL;
+    }
+    if (_sql.vb_stmt) {
+        mysql_stmt_close(_sql.vb_stmt);
+        _sql.vb_stmt = NULL;
+    }
+}
+
+/*
+ * convenience function to log mysql errors
+ */
+static void
+netsnmp_sql_error(const char *message)
+{
+    u_int err = mysql_errno(_sql.conn);
+    snmp_log(LOG_ERR, "%s\n", message);
+    if (_sql.conn != NULL) {
+#if MYSQL_VERSION_ID >= 40101
+        snmp_log(LOG_ERR, "Error %u (%s): %s\n",
+                 err, mysql_sqlstate(_sql.conn), mysql_error(_sql.conn));
+#else
+        snmp(LOG_ERR, "Error %u: %s\n",
+             mysql_errno(_sql.conn), mysql_error(_sql.conn));
+#endif
+    }
+    if (CR_SERVER_GONE_ERROR == err)
+        netsnmp_sql_disconnected();
+}
+
+/*
+ * convenience function to log mysql statement errors
+ */
+static void
+netsnmp_sql_stmt_error (MYSQL_STMT *stmt, const char *message)
+{
+    u_int err = mysql_errno(_sql.conn);
+
+    snmp_log(LOG_ERR, "%s\n", message);
+    if (stmt) {
+        snmp_log(LOG_ERR, "SQL Error %u (%s): %s\n",
+                 mysql_stmt_errno(stmt), mysql_stmt_sqlstate(stmt),
+                 mysql_stmt_error(stmt));
+    }
+    
+    if (CR_SERVER_GONE_ERROR == err)
+        netsnmp_sql_disconnected();
+}
+
+/*
+ * sql cleanup function, called at exit
+ */
+static void
+netsnmp_mysql_cleanup(void)
+{
+    DEBUGMSGTL(("sql:cleanup"," called\n"));
+
+    /** unregister alarm */
+    if (_sql.alarm_id)
+        snmp_alarm_unregister(_sql.alarm_id);
+
+    /** save any queued traps */
+    if (CONTAINER_SIZE(_sql.queue))
+        _sql_process_queue(0,NULL);
+
+    CONTAINER_FREE(_sql.queue);
+    _sql.queue = NULL;
+
+    if (_sql.trap_stmt) {
+        mysql_stmt_close(_sql.trap_stmt);
+        _sql.trap_stmt = NULL;
+    }
+    if (_sql.vb_stmt) {
+        mysql_stmt_close(_sql.vb_stmt);
+        _sql.vb_stmt = NULL;
+    }
+    
+    /** disconnect from server */
+    netsnmp_sql_disconnected();
+
+    if (_sql.conn) {
+        mysql_close(_sql.conn);
+        _sql.conn = NULL;
+    }
+
+    mysql_library_end();
+}
+
+/*
+ * setup (initialize, prepare and bind) a prepared statement
+ */
+static int
+netsnmp_mysql_bind(const char *text, size_t text_size, MYSQL_STMT **stmt,
+                   MYSQL_BIND *bind)
+{
+    if ((NULL == text) || (NULL == stmt) || (NULL == bind)) {
+        snmp_log(LOG_ERR,"invalid paramaters to netsnmp_mysql_bind()\n");
+        return -1;
+    }
+
+    *stmt = mysql_stmt_init(_sql.conn);
+    if (NULL == *stmt) {
+        netsnmp_sql_error("could not initialize trap statement handler");
+        return -1;
+    }
+
+    if (mysql_stmt_prepare(*stmt, text, text_size) != 0) {
+        netsnmp_sql_stmt_error(*stmt, "Could not prepare INSERT");
+        mysql_stmt_close(*stmt);
+        *stmt = NULL;
+        return -1;
+    }
+
+    return 0;
+}
+
+/*
+ * connect to the database and do initial setup
+ */
+static int
+netsnmp_mysql_connect(void)
+{
+    char trap_stmt[] = "INSERT INTO notifications "
+        "(date_time, host, auth, type, version, request_id, snmpTrapOID, transport, security_model, v3msgid, v3security_level, v3context_name, v3context_engine, v3security_name, v3security_engine) "
+        "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
+    char vb_stmt[] = "INSERT INTO varbinds "
+        "(trap_id, oid, type, value) VALUES (?,?,?,?)";
+
+    /** initialize connection handler */
+    if (_sql.connected)
+        return 0;
+
+    DEBUGMSGTL(("sql:connection","connecting\n"));
+
+    /** connect to server */
+    if (mysql_real_connect (_sql.conn, _sql.host_name, _sql.user_name,
+                            _sql.password, _sql.db_name, _sql.port_num,
+                            _sql.socket_name, _sql.flags) == NULL) {
+        netsnmp_sql_error("mysql_real_connect() failed");
+        goto err;
+    }
+    _sql.connected = 1;
+
+    /** disable autocommit */
+    if(0 != mysql_autocommit(_sql.conn, 0)) {
+        netsnmp_sql_error("mysql_autocommit(0) failed");
+        goto err;
+    }
+
+    netsnmp_assert((_sql.trap_stmt == NULL) && (_sql.vb_stmt == NULL));
+
+    /** prepared statement for inserts */
+    if (0 != netsnmp_mysql_bind(trap_stmt,sizeof(trap_stmt), &_sql.trap_stmt,
+                                _tbind))
+        goto err;
+
+    if (0 != netsnmp_mysql_bind(vb_stmt,sizeof(vb_stmt),&_sql.vb_stmt,
+                                _vbind)) {
+        mysql_stmt_close(_sql.trap_stmt);
+        _sql.trap_stmt = NULL;
+        goto err;
+    }
+
+    return 0;
+
+  err:
+    if (_sql.connected)
+        _sql.connected = 0;
+
+    return -1;
+}
+
+/** one-time initialization for mysql */
+int
+netsnmp_mysql_init(void)
+{
+    int not_argc = 0, i;
+    char *not_args[] = { NULL };
+    char **not_argv = not_args;
+    netsnmp_trapd_handler *traph;
+
+    DEBUGMSGTL(("sql:init","called\n"));
+
+    /** negative or 0 interval disables sql logging */
+    if (_sql.queue_interval <= 0) {
+        DEBUGMSGTL(("sql:init",
+                    "mysql not enabled (sqlSaveInterval is <= 0)\n"));
+        return 0;
+    }
+
+    /** create queue for storing traps til they are written to the db */
+    _sql.queue = netsnmp_container_find("fifo");
+    if (NULL == _sql.queue) {
+        snmp_log(LOG_ERR, "Could not allocate sql buf container\n");
+        return -1;
+    }
+
+#ifdef HAVE_BROKEN_LIBMYSQLCLIENT
+    my_init();
+#else
+    MY_INIT("snmptrapd");
+#endif
+
+    /** load .my.cnf values */
+    load_defaults ("my", _sql.groups, &not_argc, &not_argv);
+    for(i=0; i < not_argc; ++i) {
+        if (NULL == not_argv[i])
+            continue;
+        if (strncmp(not_argv[i],"--password=",11) == 0)
+            _sql.password = &not_argv[i][11];
+        else if (strncmp(not_argv[i],"--host=",7) == 0)
+            _sql.host_name = &not_argv[i][7];
+        else if (strncmp(not_argv[i],"--user=",7) == 0)
+            _sql.user_name = &not_argv[i][7];
+        else if (strncmp(not_argv[i],"--port=",7) == 0)
+            _sql.port_num = atoi(&not_argv[i][7]);
+        else if (strncmp(not_argv[i],"--socket=",9) == 0)
+            _sql.socket_name = &not_argv[i][9];
+        else if (strncmp(not_argv[i],"--database=",11) == 0)
+            _sql.db_name = &not_argv[i][11];
+        else
+            snmp_log(LOG_WARNING, "unknown argument[%d] %s\n", i, not_argv[i]);
+    }
+
+    /** init bind structures */
+    memset(_tbind, 0x0, sizeof(_tbind));
+    memset(_vbind, 0x0, sizeof(_vbind));
+
+    /** trap static bindings */
+    _tbind[TBIND_HOST].buffer_type = MYSQL_TYPE_STRING;
+    _tbind[TBIND_HOST].length = &_tbind[TBIND_HOST].buffer_length;
+
+    _tbind[TBIND_OID].buffer_type = MYSQL_TYPE_STRING;
+    _tbind[TBIND_OID].length = &_tbind[TBIND_OID].buffer_length;
+
+    _tbind[TBIND_REQID].buffer_type = MYSQL_TYPE_LONG;
+    _tbind[TBIND_REQID].is_unsigned = 1;
+
+    _tbind[TBIND_VER].buffer_type = MYSQL_TYPE_SHORT;
+    _tbind[TBIND_VER].is_unsigned = 1;
+
+    _tbind[TBIND_TYPE].buffer_type = MYSQL_TYPE_SHORT;
+    _tbind[TBIND_TYPE].is_unsigned = 1;
+
+    _tbind[TBIND_DATE].buffer_type = MYSQL_TYPE_DATETIME;
+
+    _tbind[TBIND_USER].buffer_type = MYSQL_TYPE_STRING;
+    _tbind[TBIND_USER].length = &_tbind[TBIND_USER].buffer_length;
+
+    _tbind[TBIND_TRANSPORT].buffer_type = MYSQL_TYPE_STRING;
+    _tbind[TBIND_TRANSPORT].length = &_tbind[TBIND_TRANSPORT].buffer_length;
+
+    _tbind[TBIND_SECURITY_MODEL].buffer_type = MYSQL_TYPE_SHORT;
+    _tbind[TBIND_SECURITY_MODEL].is_unsigned = 1;
+
+    _tbind[TBIND_v3_MSGID].buffer_type = MYSQL_TYPE_LONG;
+    _tbind[TBIND_v3_MSGID].is_unsigned = 1;
+    _tbind[TBIND_v3_SECURITY_LEVEL].buffer_type = MYSQL_TYPE_SHORT;
+    _tbind[TBIND_v3_SECURITY_LEVEL].is_unsigned = 1;
+    _tbind[TBIND_v3_CONTEXT_NAME].buffer_type = MYSQL_TYPE_STRING;
+    _tbind[TBIND_v3_CONTEXT_ENGINE].buffer_type = MYSQL_TYPE_STRING;
+    _tbind[TBIND_v3_SECURITY_NAME].buffer_type = MYSQL_TYPE_STRING;
+    _tbind[TBIND_v3_SECURITY_NAME].length =
+        &_tbind[TBIND_v3_SECURITY_NAME].buffer_length;
+    _tbind[TBIND_v3_CONTEXT_NAME].length =
+        &_tbind[TBIND_v3_CONTEXT_NAME].buffer_length;
+    _tbind[TBIND_v3_SECURITY_ENGINE].buffer_type = MYSQL_TYPE_STRING;
+    _tbind[TBIND_v3_SECURITY_ENGINE].length =
+        &_tbind[TBIND_v3_SECURITY_ENGINE].buffer_length;
+    _tbind[TBIND_v3_CONTEXT_ENGINE].length =
+        &_tbind[TBIND_v3_CONTEXT_ENGINE].buffer_length;
+
+    _tbind[TBIND_v3_MSGID].is_null =
+        _tbind[TBIND_v3_SECURITY_LEVEL].is_null =
+        _tbind[TBIND_v3_CONTEXT_NAME].is_null =
+        _tbind[TBIND_v3_CONTEXT_ENGINE].is_null =
+        _tbind[TBIND_v3_SECURITY_NAME].is_null =
+        _tbind[TBIND_v3_SECURITY_ENGINE].is_null = &_no_v3;
+    
+    /** variable static bindings */
+    _vbind[VBIND_ID].buffer_type = MYSQL_TYPE_LONG;
+    _vbind[VBIND_ID].is_unsigned = 1;
+
+    _vbind[VBIND_OID].buffer_type = MYSQL_TYPE_STRING;
+    _vbind[VBIND_OID].length = &_vbind[VBIND_OID].buffer_length;
+
+    _vbind[VBIND_TYPE].buffer_type = MYSQL_TYPE_SHORT;
+    _vbind[VBIND_TYPE].is_unsigned = 1;
+
+#ifdef NETSNMP_MYSQL_TRAP_VALUE_TEXT
+    _vbind[VBIND_VAL].buffer_type = MYSQL_TYPE_STRING;
+#else
+    _vbind[VBIND_VAL].buffer_type = MYSQL_TYPE_BLOB;
+#endif
+    _vbind[VBIND_VAL].length = &_vbind[VBIND_VAL].buffer_length;
+
+    _sql.conn = mysql_init (NULL);
+    if (_sql.conn == NULL) {
+        netsnmp_sql_error("mysql_init() failed (out of memory?)");
+        return -1;
+    }
+
+    /** try to connect; we'll try again later if we fail */
+    (void) netsnmp_mysql_connect();
+
+    /** register periodic queue save */
+    _sql.alarm_id = snmp_alarm_register(_sql.queue_interval, /* seconds */
+                                        1,                   /* repeat */
+                                        _sql_process_queue,  /* function */
+                                        NULL);               /* client args */
+
+    /** add handler */
+    traph = netsnmp_add_global_traphandler(NETSNMPTRAPD_PRE_HANDLER,
+                                           mysql_handler);
+    if (NULL == traph) {
+        snmp_log(LOG_ERR, "Could not allocate sql trap handler\n");
+        return -1;
+    }
+    traph->authtypes = TRAP_AUTH_LOG;
+
+    atexit(netsnmp_mysql_cleanup);
+    return 0;
+}
+
+/*
+ * log CSV version of trap.
+ * dontcare param is there so this function can be passed directly
+ * to CONTAINER_FOR_EACH.
+ */
+static void
+_sql_log(sql_buf *sqlb, void* dontcare)
+{
+    netsnmp_iterator     *it;
+    sql_vb_buf           *sqlvb;
+
+    if ((NULL == sqlb) || sqlb->logged)
+        return;
+
+    /*
+     * log trap info
+     * nothing done to protect against data insertion attacks with
+     * respect to bad data (commas, newlines, etc)
+     */
+    snmp_log(LOG_ERR,
+             "trap:%d-%d-%d %d:%d:%d,%s,%d,%d,%d,%s,%s,%d,%d,%d,%s,%s,%s,%s\n",
+             sqlb->time.year,sqlb->time.month,sqlb->time.day,
+             sqlb->time.hour,sqlb->time.minute,sqlb->time.second,
+             sqlb->user,
+             sqlb->type, sqlb->version, sqlb->reqid, sqlb->oid,
+             sqlb->transport, sqlb->security_model, sqlb->msgid,
+             sqlb->security_level, sqlb->context,
+             sqlb->context_engine, sqlb->security_name,
+             sqlb->security_engine);
+
+    sqlb->logged = 1; /* prevent multiple logging */
+
+    it = CONTAINER_ITERATOR(sqlb->varbinds);
+    if (NULL == it) {
+        snmp_log(LOG_ERR,
+                 "error creating iterator; incomplete trap logged\n");
+        return;
+    }
+
+    /** log varbind info */
+    for( sqlvb = ITERATOR_FIRST(it); sqlvb; sqlvb = ITERATOR_NEXT(it)) {
+#ifdef NETSNMP_MYSQL_TRAP_VALUE_TEXT
+        snmp_log(LOG_ERR,"varbind:%s,%s\n", sqlvb->oid, sqlvb->val);
+#else
+        char *hex;
+        int len = binary_to_hex(sqlvb->val, sqlvb->val_len, &hex);
+        if (hex) {
+            snmp_log(LOG_ERR,"varbind:%d,%s,%s\n", sqlvb->oid, hex);
+            free(hex);
+        }
+        else {
+            snmp_log(LOG_ERR,"malloc failed for varbind hex value\n");
+            snmp_log(LOG_ERR,"varbind:%s,\n", sqlvb->oid);
+        }
+#endif
+    }
+    ITERATOR_RELEASE(it);
+   
+}
+
+/*
+ * free a buffer
+ * dontcare param is there so this function can be passed directly
+ * to CONTAINER_FOR_EACH.
+ */
+static void
+_sql_vb_buf_free(sql_vb_buf *sqlvb, void* dontcare)
+{
+    if (NULL == sqlvb)
+        return;
+
+    SNMP_FREE(sqlvb->oid);
+    SNMP_FREE(sqlvb->val);
+
+    free(sqlvb);
+}
+
+/*
+ * free a buffer
+ * dontcare param is there so this function can be passed directly
+ * to CONTAINER_FOR_EACH.
+ */
+static void
+_sql_buf_free(sql_buf *sqlb, void* dontcare)
+{
+    if (NULL == sqlb)
+        return;
+
+    /** do varbinds first */
+    if (sqlb->varbinds) {
+        CONTAINER_CLEAR(sqlb->varbinds,
+                        (netsnmp_container_obj_func*)_sql_vb_buf_free, NULL);
+        CONTAINER_FREE(sqlb->varbinds);
+    }
+
+    SNMP_FREE(sqlb->host);
+    SNMP_FREE(sqlb->oid);
+    SNMP_FREE(sqlb->user);
+
+    SNMP_FREE(sqlb->context);
+    SNMP_FREE(sqlb->security_name);
+    SNMP_FREE(sqlb->context_engine);
+    SNMP_FREE(sqlb->security_engine);
+    SNMP_FREE(sqlb->transport);
+
+    free(sqlb);
+}
+
+/*
+ * allocate buffer to store trap and varbinds
+ */
+static sql_buf *
+_sql_buf_get(void)
+{
+    sql_buf *sqlb;
+
+    /** buffer for trap info */
+    sqlb = SNMP_MALLOC_TYPEDEF(sql_buf);
+    if (NULL == sqlb)
+        return NULL;
+    
+    /** fifo for varbinds */
+    sqlb->varbinds = netsnmp_container_find("fifo");
+    if (NULL == sqlb->varbinds) {
+        free(sqlb);
+        return NULL;
+    }
+
+    return sqlb;
+}
+
+/*
+ * save info from incoming trap
+ *
+ * return 0 on success, anything else is an error
+ */
+static int
+_sql_save_trap_info(sql_buf *sqlb, netsnmp_pdu  *pdu,
+                    netsnmp_transport     *transport)
+{
+    static oid   trapoids[] = { 1, 3, 6, 1, 6, 3, 1, 1, 5, 0 };
+    oid         *trap_oid, tmp_oid[MAX_OID_LEN];
+    time_t       now;
+    struct tm   *cur_time;
+    size_t       tmp_size;
+    size_t       buf_host_len_t, buf_oid_len_t, buf_user_len_t;
+    int          oid_overflow, trap_oid_len;
+    netsnmp_variable_list *vars;
+
+    if ((NULL == sqlb) || (NULL == pdu) || (NULL == transport))
+        return -1;
+
+    DEBUGMSGTL(("sql:queue", "queueing incoming trap\n"));
+
+    /** time */
+    (void) time(&now);
+    cur_time = localtime(&now);
+    sqlb->time.year = cur_time->tm_year + 1900;
+    sqlb->time.month = cur_time->tm_mon + 1;
+    sqlb->time.day = cur_time->tm_mday;
+    sqlb->time.hour = cur_time->tm_hour;
+    sqlb->time.minute = cur_time->tm_min;
+    sqlb->time.second = cur_time->tm_sec;
+    sqlb->time.second_part = 0;
+    sqlb->time.neg = 0;
+
+    /** host name */
+    buf_host_len_t = 0;
+    tmp_size = 0;
+    realloc_format_trap((u_char**)&sqlb->host, &tmp_size,
+                        &buf_host_len_t, 1, "%B", pdu, transport);
+    sqlb->host_len = buf_host_len_t;
+
+    /* snmpTrapOID */
+    if (pdu->command == SNMP_MSG_TRAP) {
+        /*
+         * convert a v1 trap to a v2 varbind
+         */
+        if (pdu->trap_type == SNMP_TRAP_ENTERPRISESPECIFIC) {
+            trap_oid_len = pdu->enterprise_length;
+            memcpy(tmp_oid, pdu->enterprise, sizeof(oid) * trap_oid_len);
+            if (tmp_oid[trap_oid_len - 1] != 0)
+                tmp_oid[trap_oid_len++] = 0;
+            tmp_oid[trap_oid_len++] = pdu->specific_type;
+            trap_oid = tmp_oid;
+        } else {
+            trapoids[9] = pdu->trap_type + 1;
+            trap_oid = trapoids;
+            trap_oid_len = OID_LENGTH(trapoids);
+        }
+    }
+    else {
+        vars = pdu->variables;
+        if (vars && vars->next_variable) {
+            trap_oid_len = vars->next_variable->val_len / sizeof(oid);
+            trap_oid = vars->next_variable->val.objid;
+        }
+        else {
+            static oid null_oid[] = { 0, 0 };
+            trap_oid_len = OID_LENGTH(null_oid);
+            trap_oid = null_oid;
+        }
+    }
+    tmp_size = 0;
+    buf_oid_len_t = oid_overflow = 0;
+    netsnmp_sprint_realloc_objid_tree((u_char**)&sqlb->oid,&tmp_size,
+                                      &buf_oid_len_t, 1, &oid_overflow,
+                                      trap_oid, trap_oid_len);
+    sqlb->oid_len = buf_oid_len_t;
+    if (oid_overflow)
+        snmp_log(LOG_WARNING,"OID truncated in sql buffer\n");
+
+    /** request id */
+    sqlb->reqid = pdu->reqid;
+
+    /** version (convert to 1 based, for sql enum) */
+    sqlb->version = pdu->version + 1;
+
+    /** command type (convert to 1 based, for sql enum) */
+    sqlb->type = pdu->command - 159;
+
+    /** community string/user name */
+    tmp_size = 0;
+    buf_user_len_t = 0;
+    realloc_format_trap((u_char**)&sqlb->user, &tmp_size,
+                        &buf_user_len_t, 1, "%u", pdu, transport);
+    sqlb->user_len = buf_user_len_t;
+
+    /** transport */
+    sqlb->transport = transport->f_fmtaddr(transport, pdu->transport_data,
+                                           pdu->transport_data_length);
+
+    /** security model */
+    sqlb->security_model = pdu->securityModel;
+
+    if ((SNMP_MP_MODEL_SNMPv3+1) == sqlb->version) {
+
+        sqlb->msgid = pdu->msgid;
+        sqlb->security_level = pdu->securityLevel;
+
+        if (pdu->contextName) {
+            sqlb->context = netsnmp_strdup_and_null((u_char*)pdu->contextName,
+                                                    pdu->contextNameLen);
+            sqlb->context_len = pdu->contextNameLen;
+        }
+        if (pdu->contextEngineID) {
+            sqlb->context_engine_len = 
+                binary_to_hex(pdu->contextEngineID, pdu->contextEngineIDLen,
+                              &sqlb->context_engine);
+        }
+
+        if (pdu->securityName) {
+            sqlb->security_name =
+                netsnmp_strdup_and_null((u_char*)pdu->securityName,
+                                        pdu->securityNameLen);
+            sqlb->security_name_len = pdu->securityNameLen;
+        }
+        if (pdu->securityEngineID) {
+            sqlb->security_engine_len = 
+                binary_to_hex(pdu->securityEngineID, pdu->securityEngineIDLen,
+                              &sqlb->security_engine);
+        }
+    }
+
+    return 0;
+}
+
+/*
+ * save varbind info from incoming trap
+ *
+ * return 0 on success, anything else is an error
+ */
+static int
+_sql_save_varbind_info(sql_buf *sqlb, netsnmp_pdu  *pdu)
+{
+    netsnmp_variable_list *var;
+    sql_vb_buf       *sqlvb;
+    size_t            tmp_size, buf_oid_len_t;
+    int               oid_overflow, rc;
+#ifdef NETSNMP_MYSQL_TRAP_VALUE_TEXT
+    size_t            buf_val_len_t;
+#endif
+
+    if ((NULL == sqlb) || (NULL == pdu))
+        return -1;
+
+    var = pdu->variables;
+    while(var) {
+        sqlvb = SNMP_MALLOC_TYPEDEF(sql_vb_buf);
+        if (NULL == sqlvb)
+            break;
+
+        /** OID */
+        tmp_size = 0;
+        buf_oid_len_t = oid_overflow = 0;
+        netsnmp_sprint_realloc_objid_tree((u_char**)&sqlvb->oid, &tmp_size,
+                                          &buf_oid_len_t,
+                                          1, &oid_overflow, var->name,
+                                          var->name_length);
+        sqlvb->oid_len = buf_oid_len_t;
+        if (oid_overflow)
+            snmp_log(LOG_WARNING,"OID truncated in sql insert\n");
+        
+        /** type */
+        if (var->type > ASN_OBJECT_ID)
+            /** convert application types to sql enum */
+            sqlvb->type = ASN_OBJECT_ID + 1 + (var->type & ~ASN_APPLICATION);
+        else
+            sqlvb->type = var->type;
+
+        /** value */
+#ifdef NETSNMP_MYSQL_TRAP_VALUE_TEXT
+        tmp_size = 0;
+        buf_val_len_t = 0;
+        sprint_realloc_by_type((u_char**)&sqlvb->val, &tmp_size,
+                               &buf_val_len_t, 1, var, 0, 0, 0);
+        sqlvb->val_len = buf_val_len_t;
+#else
+        sqlvb->val = netsnmp_memdup(var->val.string, var->val_len);
+        sqlvb->val_len = var->val_len;
+#endif
+
+        var = var->next_variable;
+
+        /** insert into container */
+        rc = CONTAINER_INSERT(sqlb->varbinds,sqlvb);
+        if(rc)
+            snmp_log(LOG_ERR, "couldn't insert varbind into trap container\n");
+    }
+
+    return 0;
+}
+
+/*
+ * sql trap handler
+ */
+int
+mysql_handler(netsnmp_pdu           *pdu,
+              netsnmp_transport     *transport,
+              netsnmp_trapd_handler *handler)
+{
+    sql_buf     *sqlb;
+    int          old_format, rc;
+
+    DEBUGMSGTL(("sql:handler", "called\n"));
+
+    /** allocate a buffer to save data */
+    sqlb = _sql_buf_get();
+    if (NULL == sqlb) {
+        snmp_log(LOG_ERR, "Could not allocate trap sql buffer\n");
+        return syslog_handler( pdu, transport, handler );
+    }
+
+    /** save OID output format and change to numeric */
+    old_format = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID,
+                                    NETSNMP_DS_LIB_OID_OUTPUT_FORMAT);
+    netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_OID_OUTPUT_FORMAT,
+                       NETSNMP_OID_OUTPUT_NUMERIC);
+
+
+    rc = _sql_save_trap_info(sqlb, pdu, transport);
+    rc = _sql_save_varbind_info(sqlb, pdu);
+
+    /** restore previous OID output format */
+    netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_OID_OUTPUT_FORMAT,
+                       old_format);
+
+    /** insert into queue */
+    rc = CONTAINER_INSERT(_sql.queue, sqlb);
+    if(rc) {
+        snmp_log(LOG_ERR, "Could not log queue sql trap buffer\n");
+        _sql_log(sqlb, NULL);
+        _sql_buf_free(sqlb, 0);
+        return -1;
+    }
+
+    /** save queue if size is > max */
+    if (CONTAINER_SIZE(_sql.queue) >= _sql.queue_max)
+        _sql_process_queue(0,NULL);
+
+    return 0;
+}
+
+/*
+ * save a buffered trap to sql database
+ */
+static void
+_sql_save(sql_buf *sqlb, void *dontcare)
+{
+    netsnmp_iterator     *it;
+    sql_vb_buf           *sqlvb;
+    u_long                trap_id;
+
+    /*
+     * don't even try if we don't have a database connection
+     */
+    if (0 == _sql.connected) {
+        _sql_log(sqlb, NULL);
+        return;
+    }
+
+    /*
+     * the prepared statements are bound to the static buffer objects,
+     * so copy the queued data to the static version.
+     */
+    _tbind[TBIND_HOST].buffer = sqlb->host;
+    _tbind[TBIND_HOST].buffer_length = sqlb->host_len;
+
+    _tbind[TBIND_OID].buffer = sqlb->oid;
+    _tbind[TBIND_OID].buffer_length = sqlb->oid_len;
+
+    _tbind[TBIND_REQID].buffer = (void *)&sqlb->reqid;
+    _tbind[TBIND_VER].buffer = (void *)&sqlb->version;
+    _tbind[TBIND_TYPE].buffer = (void *)&sqlb->type;
+    _tbind[TBIND_SECURITY_MODEL].buffer = (void *)&sqlb->security_model;
+
+    _tbind[TBIND_DATE].buffer = (void *)&sqlb->time;
+
+    _tbind[TBIND_USER].buffer = sqlb->user;
+    _tbind[TBIND_USER].buffer_length = sqlb->user_len;
+
+    _tbind[TBIND_TRANSPORT].buffer = sqlb->transport;
+    if (sqlb->transport)
+        _tbind[TBIND_TRANSPORT].buffer_length = strlen(sqlb->transport);
+    else
+        _tbind[TBIND_TRANSPORT].buffer_length = 0;
+
+
+    if ((SNMP_MP_MODEL_SNMPv3+1) == sqlb->version) {
+        _no_v3 = 0;
+
+        _tbind[TBIND_v3_MSGID].buffer = &sqlb->msgid;
+        
+        _tbind[TBIND_v3_SECURITY_LEVEL].buffer = &sqlb->security_level;
+        
+        _tbind[TBIND_v3_CONTEXT_NAME].buffer = sqlb->context;
+        _tbind[TBIND_v3_CONTEXT_NAME].buffer_length = sqlb->context_len;
+
+        _tbind[TBIND_v3_CONTEXT_ENGINE].buffer = sqlb->context_engine;
+        _tbind[TBIND_v3_CONTEXT_ENGINE].buffer_length =
+            sqlb->context_engine_len;
+
+        _tbind[TBIND_v3_SECURITY_NAME].buffer = sqlb->security_name;
+        _tbind[TBIND_v3_SECURITY_NAME].buffer_length = sqlb->security_name_len;
+
+        _tbind[TBIND_v3_SECURITY_ENGINE].buffer = sqlb->security_engine;
+        _tbind[TBIND_v3_SECURITY_ENGINE].buffer_length =
+            sqlb->security_engine_len;
+    }
+    else {
+        _no_v3 = 1;
+    }
+
+    if (mysql_stmt_bind_param(_sql.trap_stmt, _tbind) != 0) {
+        netsnmp_sql_stmt_error(_sql.trap_stmt,
+                               "Could not bind parameters for INSERT");
+        _sql_log(sqlb, NULL);
+        return;
+    }
+
+    /** execute the prepared statement */
+    if (mysql_stmt_execute(_sql.trap_stmt) != 0) {
+        netsnmp_sql_stmt_error(_sql.trap_stmt,
+                               "Could not execute insert statement for trap");
+        _sql_log(sqlb, NULL);
+        return;
+    }
+    trap_id = mysql_insert_id(_sql.conn);
+
+    /*
+     * iterate over the varbinds, copy data and insert
+     */
+    it = CONTAINER_ITERATOR(sqlb->varbinds);
+    if (NULL == it) {
+        snmp_log(LOG_ERR,"Could not allocate iterator\n");
+        _sql_log(sqlb, NULL);
+        return;
+    }
+
+    for( sqlvb = ITERATOR_FIRST(it); sqlvb; sqlvb = ITERATOR_NEXT(it)) {
+
+        _vbind[VBIND_ID].buffer = (void *)&trap_id;
+        _vbind[VBIND_TYPE].buffer = (void *)&sqlvb->type;
+
+        _vbind[VBIND_OID].buffer = sqlvb->oid;
+        _vbind[VBIND_OID].buffer_length = sqlvb->oid_len;
+
+        _vbind[VBIND_VAL].buffer = sqlvb->val;
+        _vbind[VBIND_VAL].buffer_length = sqlvb->val_len;
+
+        if (mysql_stmt_bind_param(_sql.vb_stmt, _vbind) != 0) {
+            netsnmp_sql_stmt_error(_sql.vb_stmt,
+                                   "Could not bind parameters for INSERT");
+            _sql_log(sqlb, NULL);
+            break;
+        }
+
+        if (mysql_stmt_execute(_sql.vb_stmt) != 0) {
+            netsnmp_sql_stmt_error(_sql.vb_stmt,
+                                   "Could not execute insert statement for varbind");
+            _sql_log(sqlb, NULL);
+            break;
+        }
+    }
+    ITERATOR_RELEASE(it);
+}
+
+/*
+ * process (save) queued items to sql database.
+ *
+ * dontcare & meeither are dummy params so this function can be used
+ * as a netsnmp_alarm callback function.
+ */
+static void
+_sql_process_queue(u_int dontcare, void *meeither)
+{
+    int        rc;
+
+    /** bail if the queue is empty */
+    if( 0 == CONTAINER_SIZE(_sql.queue))
+        return;
+
+    DEBUGMSGT(("sql:process", "processing %d queued traps\n",
+               (int)CONTAINER_SIZE(_sql.queue)));
+
+    /*
+     * if we don't have a database connection, try to reconnect. We
+     * don't care if we fail - traps will be logged in that case.
+     */
+    if (0 == _sql.connected) {
+        DEBUGMSGT(("sql:process", "no sql connection; reconnecting\n"));
+        (void) netsnmp_mysql_connect();
+    }
+
+    CONTAINER_FOR_EACH(_sql.queue, (netsnmp_container_obj_func*)_sql_save,
+                       NULL);
+
+    if (_sql.connected) {
+        rc = mysql_commit(_sql.conn);
+        if (rc) { /* nuts... now what? */
+            netsnmp_sql_error("commit failed");
+            CONTAINER_FOR_EACH(_sql.queue,
+                               (netsnmp_container_obj_func*)_sql_log,
+                               NULL);
+        }
+    }
+
+    CONTAINER_CLEAR(_sql.queue, (netsnmp_container_obj_func*)_sql_buf_free,
+                    NULL);
+}
+
+#else
+int unused;	/* Suppress "empty translation unit" warning */
+#endif /* NETSNMP_USE_MYSQL */
diff --git a/apps/snmpusm.c b/apps/snmpusm.c
index d1cba87..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,8 +296,12 @@
                 optind++;
                 break;
 
+            case 'w':
+                docreateandwait = 1;
+                break;
+
 	    case 'E': {
-	        size_t ebuf_len = 32; /* XXX: MAX_ENGINEID_LENGTH */
+	        size_t ebuf_len = MAX_ENGINEID_LENGTH;
                 u_char *ebuf;
                 if (optind < argc) {
                     if (argv[optind]) {
@@ -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 cf071f2..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
@@ -90,19 +83,15 @@
 
 static oid      vacmGroupName[MAX_OID_LEN] =
     { 1, 3, 6, 1, 6, 3, 16, 1, 2, 1, 3 },
-    vacmSec2GroupStorageType[MAX_OID_LEN] = {
-1, 3, 6, 1, 6, 3, 16, 1, 2, 1, 4}, vacmSec2GroupStatus[MAX_OID_LEN] = {
+    vacmSec2GroupStatus[MAX_OID_LEN] = {
 1, 3, 6, 1, 6, 3, 16, 1, 2, 1, 5}, vacmAccessContextMatch[MAX_OID_LEN] = {
 1, 3, 6, 1, 6, 3, 16, 1, 4, 1, 4}, vacmAccessReadViewName[MAX_OID_LEN] = {
 1, 3, 6, 1, 6, 3, 16, 1, 4, 1, 5}, vacmAccessWriteViewName[MAX_OID_LEN] = {
 1, 3, 6, 1, 6, 3, 16, 1, 4, 1, 6}, vacmAccessNotifyViewName[MAX_OID_LEN] = {
-1, 3, 6, 1, 6, 3, 16, 1, 4, 1, 7}, vacmAccessStorageType[MAX_OID_LEN] = {
-1, 3, 6, 1, 6, 3, 16, 1, 4, 1, 8}, vacmAccessStatus[MAX_OID_LEN] = {
+1, 3, 6, 1, 6, 3, 16, 1, 4, 1, 7}, vacmAccessStatus[MAX_OID_LEN] = {
 1, 3, 6, 1, 6, 3, 16, 1, 4, 1, 9}, vacmViewTreeFamilyMask[MAX_OID_LEN] = {
 1, 3, 6, 1, 6, 3, 16, 1, 5, 2, 1, 3}, vacmViewTreeFamilyType[MAX_OID_LEN] = {
 1, 3, 6, 1, 6, 3, 16, 1, 5, 2, 1, 4},
-    vacmViewTreeFamilyStorageType[MAX_OID_LEN] = {
-1, 3, 6, 1, 6, 3, 16, 1, 5, 2, 1, 5},
     vacmViewTreeFamilyStatus[MAX_OID_LEN] = {
 1, 3, 6, 1, 6, 3, 16, 1, 5, 2, 1, 6}
 
@@ -111,7 +100,6 @@
 #define NSVACMACCESSTABLE    1, 3, 6, 1, 4, 1, 8072, 1, 9, 1
 static oid nsVacmContextPfx[MAX_OID_LEN]  = { NSVACMACCESSTABLE, 1, 2 };
 static oid nsVacmViewName[MAX_OID_LEN]    = { NSVACMACCESSTABLE, 1, 3 };
-static oid nsVacmStorageType[MAX_OID_LEN] = { NSVACMACCESSTABLE, 1, 4 };
 static oid nsVacmRowStatus[MAX_OID_LEN]   = { NSVACMACCESSTABLE, 1, 5 };
 
 int             viewTreeFamilyType = 1;
@@ -284,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;
@@ -294,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:
@@ -393,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 361341a..659d7de 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
@@ -76,10 +69,13 @@
 #define NETSNMP_DS_WALK_DONT_CHECK_LEXICOGRAPHIC	3
 #define NETSNMP_DS_WALK_TIME_RESULTS     	        4
 #define NETSNMP_DS_WALK_DONT_GET_REQUESTED	        5
+#define NETSNMP_DS_WALK_TIME_RESULTS_SINGLE	        6
 
 oid             objid_mib[] = { 1, 3, 6, 1, 2, 1 };
 int             numprinted = 0;
 
+char           *end_name = NULL;
+
 void
 usage(void)
 {
@@ -95,7 +91,10 @@
     fprintf(stderr,
             "\t\t\t  c:  do not check returned OIDs are increasing\n");
     fprintf(stderr,
-            "\t\t\t  t:  Display wall-clock time to complete the request\n");
+            "\t\t\t  t:  Display wall-clock time to complete the walk\n");
+    fprintf(stderr,
+            "\t\t\t  T:  Display wall-clock time to complete each request\n");
+    fprintf(stderr, "\t\t\t  E {OID}:  End the walk at the specified OID\n");
 }
 
 void
@@ -151,6 +150,15 @@
                 netsnmp_ds_toggle_boolean(NETSNMP_DS_APPLICATION_ID,
                                           NETSNMP_DS_WALK_TIME_RESULTS);
                 break;
+
+            case 'E':
+                end_name = argv[optind++];
+                break;
+
+            case 'T':
+                netsnmp_ds_toggle_boolean(NETSNMP_DS_APPLICATION_ID,
+                                          NETSNMP_DS_WALK_TIME_RESULTS_SINGLE);
+                break;
                 
             default:
                 fprintf(stderr, "Unknown flag passed to -C: %c\n",
@@ -173,12 +181,14 @@
     size_t          name_length;
     oid             root[MAX_OID_LEN];
     size_t          rootlen;
+    oid             end_oid[MAX_OID_LEN];
+    size_t          end_len = 0;
     int             count;
     int             running;
     int             status = STAT_ERROR;
     int             check;
     int             exitval = 0;
-    struct timeval  tv1, tv2;
+    struct timeval  tv1, tv2, tv_a, tv_b;
 
     netsnmp_ds_register_config(ASN_BOOLEAN, "snmpwalk", "includeRequested",
 			       NETSNMP_DS_APPLICATION_ID, 
@@ -198,15 +208,21 @@
 
     netsnmp_ds_register_config(ASN_BOOLEAN, "snmpwalk", "timeResults",
                                NETSNMP_DS_APPLICATION_ID,
-			       NETSNMP_DS_WALK_TIME_RESULTS);
+                               NETSNMP_DS_WALK_TIME_RESULTS);
+
+    netsnmp_ds_register_config(ASN_BOOLEAN, "snmpwalk", "timeResultsSingle",
+                               NETSNMP_DS_APPLICATION_ID,
+                               NETSNMP_DS_WALK_TIME_RESULTS_SINGLE);
 
     /*
      * get the common command line arguments 
      */
     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:
@@ -233,6 +249,23 @@
         rootlen = sizeof(objid_mib) / sizeof(oid);
     }
 
+    /*
+     * If we've been given an explicit end point,
+     *  then convert this to an OID, otherwise
+     *  move to the next sibling of the start.
+     */
+    if ( end_name ) {
+        end_len = MAX_OID_LEN;
+        if (snmp_parse_oid(end_name, end_oid, &end_len) == NULL) {
+            snmp_perror(end_name);
+            exit(1);
+        }
+    } else {
+        memmove(end_oid, root, rootlen*sizeof(oid));
+        end_len = rootlen;
+        end_oid[end_len-1]++;
+    }
+
     SOCK_STARTUP;
 
     /*
@@ -265,7 +298,7 @@
 
     if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
                                NETSNMP_DS_WALK_TIME_RESULTS))
-        gettimeofday(&tv1, NULL);
+        netsnmp_get_monotonic_clock(&tv1);
     while (running) {
         /*
          * create PDU for GETNEXT request and add object name to request 
@@ -276,17 +309,20 @@
         /*
          * do the request 
          */
+        if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_WALK_TIME_RESULTS_SINGLE))
+            netsnmp_get_monotonic_clock(&tv_a);
         status = snmp_synch_response(ss, pdu, &response);
         if (status == STAT_SUCCESS) {
+            if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_WALK_TIME_RESULTS_SINGLE))
+                netsnmp_get_monotonic_clock(&tv_b);
             if (response->errstat == SNMP_ERR_NOERROR) {
                 /*
                  * check resulting variables 
                  */
                 for (vars = response->variables; vars;
                      vars = vars->next_variable) {
-                    if ((vars->name_length < rootlen)
-                        || (memcmp(root, vars->name, rootlen * sizeof(oid))
-                            != 0)) {
+                    if (snmp_oid_compare(end_oid, end_len,
+                                         vars->name, vars->name_length) <= 0) {
                         /*
                          * not part of this subtree 
                          */
@@ -294,6 +330,10 @@
                         continue;
                     }
                     numprinted++;
+                    if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_WALK_TIME_RESULTS_SINGLE))
+                        fprintf(stdout, "%f s: ",  
+                                (double) (tv_b.tv_usec - tv_a.tv_usec)/1000000 +
+                                (double) (tv_b.tv_sec - tv_a.tv_sec));
                     print_variable(vars->name, vars->name_length, vars);
                     if ((vars->type != SNMP_ENDOFMIBVIEW) &&
                         (vars->type != SNMP_NOSUCHOBJECT) &&
@@ -362,7 +402,7 @@
     }
     if (netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
                                NETSNMP_DS_WALK_TIME_RESULTS))
-        gettimeofday(&tv2, NULL);
+        netsnmp_get_monotonic_clock(&tv2);
 
     if (numprinted == 0 && status == STAT_SUCCESS) {
         /*
diff --git a/apps/sshtosnmp.c b/apps/sshtosnmp.c
new file mode 100644
index 0000000..d26067d
--- /dev/null
+++ b/apps/sshtosnmp.c
@@ -0,0 +1,233 @@
+/* Copyright 2009 SPARTA, Inc. All rights reserved
+ * Use is subject to license terms specified in the COPYING file
+ * distributed with the Net-SNMP package.
+ */
+
+/*
+ * This is merely a wrapper around stdin/out for sshd to call.  It
+ * simply passes traffic to the running snmpd through a unix domain
+ * socket after first passing any needed SSH Domain information.
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_SYS_UN_H
+#include <sys/un.h>
+#endif
+
+#include <sys/select.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <stdio.h>
+
+#ifndef MAXPATHLEN
+#warn no system max path length detected
+#define MAXPATHLEN 2048
+#endif
+
+#define DEFAULT_SOCK_PATH "/var/net-snmp/sshdomainsocket"
+
+#define NETSNMP_SSHTOSNMP_VERSION_NUMBER 1
+
+
+
+/*
+ * Extra debugging output for, um, debugging.
+ */
+
+#undef DEBUGGING
+
+#ifdef DEBUGGING
+#define DEBUG(x) deb(x)
+FILE *debf = NULL;
+void
+deb(const char *string) {
+    if (NULL == debf) {
+        debf = fopen("/tmp/sshtosnmp.log", "a");
+    }
+    if (NULL != debf) {
+        fprintf(debf, "%s\n", string);
+        fflush(debf);
+    }
+}
+#else  /* !DEBUGGING */
+#define DEBUG(x)
+#endif /* DEBUGGING code */
+
+int
+main(int argc, char **argv) {
+
+    int sock;
+    struct sockaddr_un addr;
+    u_char buf[4096];
+    size_t buf_len = sizeof(buf);
+    int rc = 0, pktsize = 0;
+
+    fd_set read_set;
+
+    DEBUG("----------\nstarting up");
+
+    /* Open a connection to the UNIX domain socket or fail */
+
+    addr.sun_family = AF_UNIX;
+    if (argc > 1) {
+        strcpy(addr.sun_path, argv[1]);
+    } else {
+        strcpy(addr.sun_path, DEFAULT_SOCK_PATH);
+    }
+
+    sock = socket(PF_UNIX, SOCK_STREAM, 0);
+    DEBUG("created socket");
+    if (sock <= 0) {
+        exit(1);
+    }
+
+    /* set the SO_PASSCRED option so we can pass uid */
+    /* XXX: according to the unix(1) manual this shouldn't be needed
+       on the sending side? */
+    {
+        int one = 1;
+        setsockopt(sock, SOL_SOCKET, SO_PASSCRED, (void *) &one,
+                   sizeof(one));
+    }
+
+    if (connect(sock, (struct sockaddr *) &addr,
+                sizeof(struct sockaddr_un)) != 0) {
+        DEBUG("FAIL CONNECT");
+        exit(1);
+    }
+
+    DEBUG("opened socket");
+
+    /*
+     * we are running as the user that ssh authenticated us as, and this
+     * is the name/uid that the agent needs for processing as a SNMPv3
+     * security name.  So this is the only thing needed to pass to the
+     * agent.
+     */
+
+    /* version 1 of our internal ssh to snmp wrapper is just a single
+       byte version number and indicates we're also passing unix
+       socket credentials containing our user id */
+
+    /* In case of future changes, we'll pass a version number first */
+
+    buf[0] = NETSNMP_SSHTOSNMP_VERSION_NUMBER;
+    buf_len = 1;
+    
+    /* send the prelim message and the credentials together using sendmsg() */
+    {
+        struct msghdr m;
+        struct {
+           struct cmsghdr cm;
+           struct ucred ouruser;
+        } cmsg;
+        struct iovec iov = { buf, buf_len };
+
+        /* Make sure that even padding fields get initialized.*/
+        memset(&cmsg, 0, sizeof(cmsg));
+        memset(&m, 0, sizeof(m));
+
+        /* set up the basic message */
+        cmsg.cm.cmsg_len = sizeof(struct cmsghdr) + sizeof(struct ucred);
+        cmsg.cm.cmsg_level = SOL_SOCKET;
+        cmsg.cm.cmsg_type = SCM_CREDENTIALS;
+
+        cmsg.ouruser.uid = getuid();
+        cmsg.ouruser.gid = getgid();
+        cmsg.ouruser.pid = getpid();
+
+        m.msg_iov               = &iov;
+        m.msg_iovlen            = 1;
+        m.msg_control           = &cmsg;
+        m.msg_controllen        = sizeof(cmsg);
+        m.msg_flags             = 0;
+        
+        DEBUG("sending to sock");
+        rc = sendmsg(sock, &m, MSG_NOSIGNAL|MSG_DONTWAIT);
+        if (rc < 0) {
+            fprintf(stderr, "failed to send startup message\n");
+            DEBUG("failed to send startup message\n");
+            exit(1);
+        }
+    }
+
+    DEBUG("sent name");
+    
+    /* now we just send and receive from both the socket and stdin/stdout */
+
+    while(1) {
+        /* read from stdin and the socket */
+        FD_SET(sock, &read_set);
+        FD_SET(STDIN_FILENO, &read_set);
+
+        /* blocking without a timeout be fine fine */
+        select(sock+1, &read_set, NULL, NULL, NULL);
+
+        if (FD_ISSET(STDIN_FILENO, &read_set)) {
+            /* read from stdin to get stuff from sshd to send to the agent */
+            DEBUG("data from stdin");
+            rc = read(STDIN_FILENO, buf, sizeof(buf));
+
+            if (rc <= 0) {
+                /* end-of-file */
+#ifndef HAVE_CLOSESOCKET
+                rc = close(sock);
+#else
+                rc = closesocket(sock);
+#endif
+                exit(0);
+            }
+            DEBUG("read from stdin");
+
+            /* send it up the pipe */
+            pktsize = rc;
+            rc = -1;
+            while (rc < 0) {
+                DEBUG("sending to socket");
+                rc = sendto(sock, buf, pktsize, 0, NULL, 0);
+                DEBUG("back from sendto");
+                if (rc < 0)
+                    DEBUG("sentto failed");
+                if (rc < 0 && errno != EINTR) {
+                    break;
+                }
+            }
+            if (rc > 0)
+                DEBUG("sent to socket");
+            else
+                DEBUG("failed to send to socket!!");
+        }
+
+        if (FD_ISSET(sock, &read_set)) {
+            /* read from the socket and send to to stdout which goes to sshd */
+            DEBUG("data on unix socket");
+
+            rc = -1;
+            while (rc < 0) {
+                rc = recvfrom(sock, buf, sizeof(buf), 0, NULL, NULL);
+                if (rc < 0 && errno != EINTR) {
+                    close(sock);
+                    exit(0);
+                }
+            }
+            DEBUG("read from socket");
+
+            pktsize = rc;
+            rc = write(STDOUT_FILENO, buf, pktsize);
+            /* XXX: check that counts match */
+            if (rc > 0) {
+                DEBUG("wrote to stdout");
+            } else {
+                DEBUG("failed to write to stdout");
+            }
+        }
+    }
+}
diff --git a/config.guess b/config.guess
index f32079a..2852378 100755
--- a/config.guess
+++ b/config.guess
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 #   Free Software Foundation, Inc.
 
-timestamp='2008-01-23'
+timestamp='2010-08-21'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -27,16 +27,16 @@
 # the same distribution terms that you use for the rest of that program.
 
 
-# Originally written by Per Bothner <per@bothner.com>.
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
+# Originally written by Per Bothner.  Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
 #
 # This script attempts to guess a canonical system name similar to
 # config.sub.  If it succeeds, it prints the system name on stdout, and
 # exits with 0.  Otherwise, it exits with 1.
 #
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
 
 me=`echo "$0" | sed -e 's,.*/,,'`
 
@@ -56,8 +56,9 @@
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -91,7 +92,7 @@
   exit 1
 fi
 
-trap 'exit 1' 1 2 15
+trap 'exit 1' HUP INT TERM
 
 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
 # compiler to aid in system detection is discouraged as it requires
@@ -105,7 +106,7 @@
 
 set_cc_for_build='
 trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
-trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ;
 : ${TMPDIR=/tmp} ;
  { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
  { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
@@ -170,7 +171,7 @@
 	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
 		eval $set_cc_for_build
 		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-			| grep __ELF__ >/dev/null
+			| grep -q __ELF__
 		then
 		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
 		    # Return netbsd for either.  FIX?
@@ -324,14 +325,33 @@
 	case `/usr/bin/uname -p` in
 	    sparc) echo sparc-icl-nx7; exit ;;
 	esac ;;
+    s390x:SunOS:*:*)
+	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
     sun4H:SunOS:5.*:*)
 	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
 	exit ;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
 	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
 	exit ;;
+    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+	echo i386-pc-auroraux${UNAME_RELEASE}
+	exit ;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	eval $set_cc_for_build
+	SUN_ARCH="i386"
+	# If there is a compiler, see if it is configured for 64-bit objects.
+	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+	# This test works for both compilers.
+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		SUN_ARCH="x86_64"
+	    fi
+	fi
+	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
 	exit ;;
     sun4*:SunOS:6*:*)
 	# According to config.sub, this is the proper way to canonicalize
@@ -532,7 +552,7 @@
 		echo rs6000-ibm-aix3.2
 	fi
 	exit ;;
-    *:AIX:*:[456])
+    *:AIX:*:[4567])
 	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
 	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
 		IBM_ARCH=rs6000
@@ -640,7 +660,7 @@
 	    # => hppa64-hp-hpux11.23
 
 	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-		grep __LP64__ >/dev/null
+		grep -q __LP64__
 	    then
 		HP_ARCH="hppa2.0w"
 	    else
@@ -791,12 +811,12 @@
     i*:PW*:*)
 	echo ${UNAME_MACHINE}-pc-pw32
 	exit ;;
-    *:Interix*:[3456]*)
+    *:Interix*:*)
     	case ${UNAME_MACHINE} in
 	    x86)
 		echo i586-pc-interix${UNAME_RELEASE}
 		exit ;;
-	    EM64T | authenticamd)
+	    authenticamd | genuineintel | EM64T)
 		echo x86_64-unknown-interix${UNAME_RELEASE}
 		exit ;;
 	    IA64)
@@ -806,6 +826,9 @@
     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
 	echo i${UNAME_MACHINE}-pc-mks
 	exit ;;
+    8664:Windows_NT:*)
+	echo x86_64-pc-mks
+	exit ;;
     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
 	# How do we know it's Interix rather than the generic POSIX subsystem?
 	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
@@ -835,6 +858,20 @@
     i*86:Minix:*:*)
 	echo ${UNAME_MACHINE}-pc-minix
 	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+	objdump --private-headers /bin/sh | grep -q ld.so.1
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit ;;
     arm*:Linux:*:*)
 	eval $set_cc_for_build
 	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
@@ -857,6 +894,17 @@
     frv:Linux:*:*)
     	echo frv-unknown-linux-gnu
 	exit ;;
+    i*86:Linux:*:*)
+	LIBC=gnu
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#ifdef __dietlibc__
+	LIBC=dietlibc
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+	echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+	exit ;;
     ia64:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
@@ -866,74 +914,33 @@
     m68*:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
-    mips:Linux:*:*)
+    mips:Linux:*:* | mips64:Linux:*:*)
 	eval $set_cc_for_build
 	sed 's/^	//' << EOF >$dummy.c
 	#undef CPU
-	#undef mips
-	#undef mipsel
+	#undef ${UNAME_MACHINE}
+	#undef ${UNAME_MACHINE}el
 	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=mipsel
+	CPU=${UNAME_MACHINE}el
 	#else
 	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=mips
+	CPU=${UNAME_MACHINE}
 	#else
 	CPU=
 	#endif
 	#endif
 EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^CPU/{
-		s: ::g
-		p
-	    }'`"
-	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
-	;;
-    mips64:Linux:*:*)
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#undef CPU
-	#undef mips64
-	#undef mips64el
-	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-	CPU=mips64el
-	#else
-	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-	CPU=mips64
-	#else
-	CPU=
-	#endif
-	#endif
-EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^CPU/{
-		s: ::g
-		p
-	    }'`"
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
 	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
 	;;
     or32:Linux:*:*)
 	echo or32-unknown-linux-gnu
 	exit ;;
-    ppc:Linux:*:*)
-	echo powerpc-unknown-linux-gnu
+    padre:Linux:*:*)
+	echo sparc-unknown-linux-gnu
 	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-gnu
-	exit ;;
-    alpha:Linux:*:*)
-	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-	  EV5)   UNAME_MACHINE=alphaev5 ;;
-	  EV56)  UNAME_MACHINE=alphaev56 ;;
-	  PCA56) UNAME_MACHINE=alphapca56 ;;
-	  PCA57) UNAME_MACHINE=alphapca56 ;;
-	  EV6)   UNAME_MACHINE=alphaev6 ;;
-	  EV67)  UNAME_MACHINE=alphaev67 ;;
-	  EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
-	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
-	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
 	exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
 	# Look for CPU level
@@ -943,8 +950,11 @@
 	  *)    echo hppa-unknown-linux-gnu ;;
 	esac
 	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-gnu
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
 	exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
 	echo ${UNAME_MACHINE}-ibm-linux
@@ -958,6 +968,9 @@
     sparc:Linux:*:* | sparc64:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
+    tile*:Linux:*:*)
+	echo ${UNAME_MACHINE}-tilera-linux-gnu
+	exit ;;
     vax:Linux:*:*)
 	echo ${UNAME_MACHINE}-dec-linux-gnu
 	exit ;;
@@ -967,69 +980,6 @@
     xtensa*:Linux:*:*)
     	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
-    i*86:Linux:*:*)
-	# The BFD linker knows what the default object file format is, so
-	# first see if it will tell us. cd to the root directory to prevent
-	# problems with other programs or directories called `ld' in the path.
-	# Set LC_ALL=C to ensure ld outputs messages in English.
-	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-			 | sed -ne '/supported targets:/!d
-				    s/[ 	][ 	]*/ /g
-				    s/.*supported targets: *//
-				    s/ .*//
-				    p'`
-        case "$ld_supported_targets" in
-	  elf32-i386)
-		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
-		;;
-	  a.out-i386-linux)
-		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-		exit ;;
-	  coff-i386)
-		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-		exit ;;
-	  "")
-		# Either a pre-BFD a.out linker (linux-gnuoldld) or
-		# one that does not give us useful --help.
-		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
-		exit ;;
-	esac
-	# Determine whether the default compiler is a.out or elf
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <features.h>
-	#ifdef __ELF__
-	# ifdef __GLIBC__
-	#  if __GLIBC__ >= 2
-	LIBC=gnu
-	#  else
-	LIBC=gnulibc1
-	#  endif
-	# else
-	LIBC=gnulibc1
-	# endif
-	#else
-	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
-	LIBC=gnu
-	#else
-	LIBC=gnuaout
-	#endif
-	#endif
-	#ifdef __dietlibc__
-	LIBC=dietlibc
-	#endif
-EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^LIBC/{
-		s: ::g
-		p
-	    }'`"
-	test x"${LIBC}" != x && {
-		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-		exit
-	}
-	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
-	;;
     i*86:DYNIX/ptx:4*:*)
 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
 	# earlier versions are messed up and put the nodename in both
@@ -1058,7 +1008,7 @@
     i*86:syllable:*:*)
 	echo ${UNAME_MACHINE}-pc-syllable
 	exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
 	echo i386-unknown-lynxos${UNAME_RELEASE}
 	exit ;;
     i*86:*DOS:*:*)
@@ -1102,8 +1052,11 @@
     pc:*:*:*)
 	# Left here for compatibility:
         # uname -m prints for DJGPP always 'pc', but it prints nothing about
-        # the processor, so we play safe by assuming i386.
-	echo i386-pc-msdosdjgpp
+        # the processor, so we play safe by assuming i586.
+	# Note: whatever this is, it MUST be the same as what config.sub
+	# prints for the "djgpp" host, or else GDB configury will decide that
+	# this is a cross-build.
+	echo i586-pc-msdosdjgpp
         exit ;;
     Intel:Mach:3*:*)
 	echo i386-pc-mach3
@@ -1141,6 +1094,16 @@
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
         /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
           && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+	OS_REL='.3'
+	test -r /etc/.relid \
+	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
 	echo m68k-unknown-lynxos${UNAME_RELEASE}
 	exit ;;
@@ -1153,7 +1116,7 @@
     rs6000:LynxOS:2.*:*)
 	echo rs6000-unknown-lynxos${UNAME_RELEASE}
 	exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
 	echo powerpc-unknown-lynxos${UNAME_RELEASE}
 	exit ;;
     SM[BE]S:UNIX_SV:*:*)
@@ -1216,6 +1179,9 @@
     BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
 	echo i586-pc-beos
 	exit ;;
+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+	echo i586-pc-haiku
+	exit ;;
     SX-4:SUPER-UX:*:*)
 	echo sx4-nec-superux${UNAME_RELEASE}
 	exit ;;
@@ -1243,6 +1209,16 @@
     *:Darwin:*:*)
 	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
 	case $UNAME_PROCESSOR in
+	    i386)
+		eval $set_cc_for_build
+		if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+		  if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+		      (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		      grep IS_64BIT_ARCH >/dev/null
+		  then
+		      UNAME_PROCESSOR="x86_64"
+		  fi
+		fi ;;
 	    unknown) UNAME_PROCESSOR=powerpc ;;
 	esac
 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
@@ -1324,6 +1300,9 @@
     i*86:rdos:*:*)
 	echo ${UNAME_MACHINE}-pc-rdos
 	exit ;;
+    i*86:AROS:*:*)
+	echo ${UNAME_MACHINE}-pc-aros
+	exit ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
diff --git a/config.sub b/config.sub
index 6759825..320e303 100755
--- a/config.sub
+++ b/config.sub
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Configuration validation subroutine script.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 #   Free Software Foundation, Inc.
 
-timestamp='2008-01-16'
+timestamp='2010-09-11'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -32,13 +32,16 @@
 
 
 # Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
+# diff and a properly formatted GNU ChangeLog entry.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
 # If it is invalid, we print an error message on stderr and exit with code 1.
 # Otherwise, we print the canonical config type on stdout and succeed.
 
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
 # that are meaningful with *any* GNU software.
@@ -72,8 +75,9 @@
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -120,8 +124,10 @@
 # Here we must recognize all the valid KERNEL-OS combinations.
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
-  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
@@ -148,10 +154,13 @@
 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray)
+	-apple | -axis | -knuth | -cray | -microblaze)
 		os=
 		basic_machine=$1
 		;;
+        -bluegene*)
+	        os=-cnk
+		;;
 	-sim | -cisco | -oki | -wec | -winbond)
 		os=
 		basic_machine=$1
@@ -249,13 +258,16 @@
 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
 	| i370 | i860 | i960 | ia64 \
 	| ip2k | iq2000 \
+	| lm32 \
 	| m32c | m32r | m32rle | m68000 | m68k | m88k \
-	| maxq | mb | microblaze | mcore | mep \
+	| maxq | mb | microblaze | mcore | mep | metag \
 	| mips | mipsbe | mipseb | mipsel | mipsle \
 	| mips16 \
 	| mips64 | mips64el \
-	| mips64vr | mips64vrel \
+	| mips64octeon | mips64octeonel \
 	| mips64orion | mips64orionel \
+	| mips64r5900 | mips64r5900el \
+	| mips64vr | mips64vrel \
 	| mips64vr4100 | mips64vr4100el \
 	| mips64vr4300 | mips64vr4300el \
 	| mips64vr5000 | mips64vr5000el \
@@ -268,28 +280,41 @@
 	| mipsisa64sr71k | mipsisa64sr71kel \
 	| mipstx39 | mipstx39el \
 	| mn10200 | mn10300 \
+	| moxie \
 	| mt \
 	| msp430 \
+	| nds32 | nds32le | nds32be \
 	| nios | nios2 \
 	| ns16k | ns32k \
 	| or32 \
 	| pdp10 | pdp11 | pj | pjl \
 	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
 	| pyramid \
+	| rx \
 	| score \
-	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
 	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
 	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
 	| spu | strongarm \
-	| tahoe | thumb | tic4x | tic80 | tron \
+	| tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+	| ubicom32 \
 	| v850 | v850e \
 	| we32k \
 	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
-	| z8k)
+	| z8k | z80)
 		basic_machine=$basic_machine-unknown
 		;;
-	m6811 | m68hc11 | m6812 | m68hc12)
+	c54x)
+		basic_machine=tic54x-unknown
+		;;
+	c55x)
+		basic_machine=tic55x-unknown
+		;;
+	c6x)
+		basic_machine=tic6x-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12 | picochip)
 		# Motorola 68HC11/12.
 		basic_machine=$basic_machine-unknown
 		os=-none
@@ -320,7 +345,7 @@
 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
 	| avr-* | avr32-* \
 	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* \
 	| clipper-* | craynv-* | cydra-* \
 	| d10v-* | d30v-* | dlx-* \
 	| elxsi-* \
@@ -329,14 +354,17 @@
 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
 	| i*86-* | i860-* | i960-* | ia64-* \
 	| ip2k-* | iq2000-* \
+	| lm32-* \
 	| m32c-* | m32r-* | m32rle-* \
 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
 	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
 	| mips16-* \
 	| mips64-* | mips64el-* \
-	| mips64vr-* | mips64vrel-* \
+	| mips64octeon-* | mips64octeonel-* \
 	| mips64orion-* | mips64orionel-* \
+	| mips64r5900-* | mips64r5900el-* \
+	| mips64vr-* | mips64vrel-* \
 	| mips64vr4100-* | mips64vr4100el-* \
 	| mips64vr4300-* | mips64vr4300el-* \
 	| mips64vr5000-* | mips64vr5000el-* \
@@ -351,27 +379,30 @@
 	| mmix-* \
 	| mt-* \
 	| msp430-* \
+	| nds32-* | nds32le-* | nds32be-* \
 	| nios-* | nios2-* \
 	| none-* | np1-* | ns16k-* | ns32k-* \
 	| orion-* \
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
 	| pyramid-* \
-	| romp-* | rs6000-* \
-	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| romp-* | rs6000-* | rx-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
 	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
 	| sparclite-* \
 	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
 	| tahoe-* | thumb-* \
 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tile-* | tilegx-* \
 	| tron-* \
+	| ubicom32-* \
 	| v850-* | v850e-* | vax-* \
 	| we32k-* \
 	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
 	| xstormy16-* | xtensa*-* \
 	| ymp-* \
-	| z8k-*)
+	| z8k-* | z80-*)
 		;;
 	# Recognize the basic CPU types without company name, with glob match.
 	xtensa*)
@@ -439,6 +470,10 @@
 		basic_machine=m68k-apollo
 		os=-bsd
 		;;
+	aros)
+		basic_machine=i386-pc
+		os=-aros
+		;;
 	aux)
 		basic_machine=m68k-apple
 		os=-aux
@@ -455,10 +490,27 @@
 		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
 		os=-linux
 		;;
+	bluegene*)
+		basic_machine=powerpc-ibm
+		os=-cnk
+		;;
+	c54x-*)
+		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c55x-*)
+		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c6x-*)
+		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
 	c90)
 		basic_machine=c90-cray
 		os=-unicos
 		;;
+        cegcc)
+		basic_machine=arm-unknown
+		os=-cegcc
+		;;
 	convex-c1)
 		basic_machine=c1-convex
 		os=-bsd
@@ -526,6 +578,10 @@
 		basic_machine=m88k-motorola
 		os=-sysv3
 		;;
+	dicos)
+		basic_machine=i686-pc
+		os=-dicos
+		;;
 	djgpp)
 		basic_machine=i586-pc
 		os=-msdosdjgpp
@@ -699,6 +755,9 @@
 		basic_machine=ns32k-utek
 		os=-sysv
 		;;
+        microblaze)
+		basic_machine=microblaze-xilinx
+		;;
 	mingw32)
 		basic_machine=i386-pc
 		os=-mingw32
@@ -803,6 +862,12 @@
 	np1)
 		basic_machine=np1-gould
 		;;
+        neo-tandem)
+		basic_machine=neo-tandem
+		;;
+        nse-tandem)
+		basic_machine=nse-tandem
+		;;
 	nsr-tandem)
 		basic_machine=nsr-tandem
 		;;
@@ -1037,17 +1102,10 @@
 		basic_machine=t90-cray
 		os=-unicos
 		;;
-	tic54x | c54x*)
-		basic_machine=tic54x-unknown
-		os=-coff
-		;;
-	tic55x | c55x*)
-		basic_machine=tic55x-unknown
-		os=-coff
-		;;
-	tic6x | c6x*)
-		basic_machine=tic6x-unknown
-		os=-coff
+        # This must be matched before tile*.
+        tilegx*)
+		basic_machine=tilegx-unknown
+		os=-linux-gnu
 		;;
 	tile*)
 		basic_machine=tile-unknown
@@ -1128,6 +1186,10 @@
 		basic_machine=z8k-unknown
 		os=-sim
 		;;
+	z80-*-coff)
+		basic_machine=z80-unknown
+		os=-sim
+		;;
 	none)
 		basic_machine=none-none
 		os=-none
@@ -1166,7 +1228,7 @@
 	we32k)
 		basic_machine=we32k-att
 		;;
-	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
 		basic_machine=sh-unknown
 		;;
 	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
@@ -1216,6 +1278,9 @@
         # First match some system type aliases
         # that might get confused with valid system types.
 	# -solaris* is a basic system type, with this one exception.
+        -auroraux)
+	        os=-auroraux
+		;;
 	-solaris1 | -solaris1.*)
 		os=`echo $os | sed -e 's|solaris1|sunos4|'`
 		;;
@@ -1236,10 +1301,11 @@
 	# Each alternative MUST END IN A *, to match a version number.
 	# -sysv* is not here because it comes later, after sysvr4.
 	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
-	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
-	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+	      | -sym* | -kopensolaris* \
 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* \
+	      | -aos* | -aros* \
 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
 	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
@@ -1248,9 +1314,10 @@
 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* \
+	      | -chorusos* | -chorusrdb* | -cegcc* \
 	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+	      | -mingw32* | -linux-gnu* | -linux-android* \
+	      | -linux-newlib* | -linux-uclibc* \
 	      | -uxpv* | -beos* | -mpeix* | -udk* \
 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1258,7 +1325,7 @@
 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
 	-qnx*)
@@ -1388,6 +1455,11 @@
 	-zvmoe)
 		os=-zvmoe
 		;;
+	-dicos*)
+		os=-dicos
+		;;
+        -nacl*)
+	        ;;
 	-none)
 		;;
 	*)
@@ -1428,6 +1500,15 @@
         c4x-* | tic4x-*)
         	os=-coff
 		;;
+	tic54x-*)
+		os=-coff
+		;;
+	tic55x-*)
+		os=-coff
+		;;
+	tic6x-*)
+		os=-coff
+		;;
 	# This must come before the *-dec entry.
 	pdp10-*)
 		os=-tops20
@@ -1585,7 +1666,7 @@
 			-sunos*)
 				vendor=sun
 				;;
-			-aix*)
+			-cnk*|-aix*)
 				vendor=ibm
 				;;
 			-beos*)
diff --git a/configure b/configure
index f0adeaf..ebbf112 100755
--- a/configure
+++ b/configure
@@ -1,84 +1,435 @@
 #! /bin/sh
-# From configure.in Revision.
+# From configure.ac Revision.
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for Net-SNMP 5.4.4.
+# Generated by GNU Autoconf 2.68 for Net-SNMP 5.7.3.rc1.
 #
 # Report bugs to <net-snmp-coders@lists.sourceforge.net>.
 #
-# Copyright (C) 2003 Free Software Foundation, Inc.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, Inc.
+#
+#
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-  set -o posix
-fi
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
+  setopt NO_GLOB_SUBST
 else
-  as_unset=false
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
 fi
 
 
-# Work around bugs in pre-3.0 UWIN ksh.
-$as_unset ENV MAIL MAILPATH
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
 PS1='$ '
 PS2='> '
 PS4='+ '
 
 # NLS nuisances.
-for as_var in \
-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-  LC_TELEPHONE LC_TIME
-do
-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-    eval $as_var=C; export $as_var
-  else
-    $as_unset $as_var
-  fi
-done
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
 
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1; then
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1
+
+  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  # We cannot yet assume a decent shell, so we have to provide a
+	# neutralization value for shells without unset; and this also
+	# works around shells that cannot unset nonexistent variables.
+	# Preserve -v and -x to the replacement shell.
+	BASH_ENV=/dev/null
+	ENV=/dev/null
+	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+	export CONFIG_SHELL
+	case $- in # ((((
+	  *v*x* | *x*v* ) as_opts=-vx ;;
+	  *v* ) as_opts=-v ;;
+	  *x* ) as_opts=-x ;;
+	  * ) as_opts= ;;
+	esac
+	exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: net-snmp-coders@lists.sourceforge.net about your
+$0: system, including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
 else
   as_expr=false
 fi
 
-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
   as_basename=basename
 else
   as_basename=false
 fi
 
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
 
-# Name of the executable.
-as_me=`$as_basename "$0" ||
+as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)$' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
-  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\/\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
 
-
-# PATH needs CR, and LINENO needs CR and PATH.
 # Avoid depending upon Character Ranges.
 as_cr_letters='abcdefghijklmnopqrstuvwxyz'
 as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
@@ -86,146 +437,107 @@
 as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conf$$.sh
-fi
 
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
-  # Find who we are.  Look in the path if we contain no path at all
-  # relative or not.
-  case $0 in
-    *[\\/]* ) as_myself=$0 ;;
-    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-
-       ;;
-  esac
-  # We did not find ourselves, most probably we were run as `sh COMMAND'
-  # in which case we are not to be found in the path.
-  if test "x$as_myself" = x; then
-    as_myself=$0
-  fi
-  if test ! -f "$as_myself"; then
-    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
-   { (exit 1); exit 1; }; }
-  fi
-  case $CONFIG_SHELL in
-  '')
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for as_base in sh bash ksh sh5; do
-	 case $as_dir in
-	 /*)
-	   if ("$as_dir/$as_base" -c '
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
-	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
-	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
-	     CONFIG_SHELL=$as_dir/$as_base
-	     export CONFIG_SHELL
-	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
-	   fi;;
-	 esac
-       done
-done
-;;
-  esac
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line before each line; the second 'sed' does the real
-  # work.  The second script uses 'N' to pair each line-number line
-  # with the numbered line, and appends trailing '-' during
-  # substitution so that $LINENO is not a special case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
-  sed '=' <$as_myself |
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
     sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
       N
-      s,$,-,
-      : loop
-      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
       t loop
-      s,-$,,
-      s,^['$as_cr_digits']*\n,,
+      s/-\n.*//
     ' >$as_me.lineno &&
-  chmod +x $as_me.lineno ||
-    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
   # Don't try to exec as it changes $[0], causing all sort of problems
   # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensible to this).
-  . ./$as_me.lineno
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
   # Exit status is that of the last command.
   exit
 }
 
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
-  *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T='	' ;;
-  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
-  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
 esac
 
-if expr a : '\(a\)' >/dev/null 2>&1; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
 rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  # We could just check for DJGPP; but this test a) works b) is more generic
-  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-  if test -f conf$$.exe; then
-    # Don't use ln at all; we don't have any links
-    as_ln_s='cp -p'
-  else
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
     as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
   fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
 else
   as_ln_s='cp -p'
 fi
-rm -f conf$$ conf$$.exe conf$$.file
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
 
 if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
   test -d ./-p && rmdir ./-p
   as_mkdir_p=false
 fi
 
-as_executable_p="test -f"
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in #(
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -233,245 +545,517 @@
 # Sed expression to map a string onto a valid variable name.
 as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" 	$as_nl"
-
-# CDPATH.
-$as_unset CDPATH
-
-
-
-# Check that we are running under the correct shell.
 SHELL=${CONFIG_SHELL-/bin/sh}
 
-case X$ECHO in
-X*--fallback-echo)
-  # Remove one level of quotation (which was required for Make).
-  ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
-  ;;
-esac
 
-echo=${ECHO-echo}
-if test "X$1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X$1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
-  # Yippee, $echo works!
-  :
-else
-  # Restart under the correct shell.
-  exec $SHELL "$0" --no-reexec ${1+"$@"}
-fi
-
-if test "X$1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<EOF
-$*
-EOF
-  exit 0
-fi
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test -z "$ECHO"; then
-if test "X${echo_test_string+set}" != Xset; then
-# find a string as large as possible, as long as the shell can cope with it
-  for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
-    # expected sizes: less than 2kB, 1kB, 512 bytes, 16 bytes, ...
-    if (echo_test_string=`eval $cmd`) 2>/dev/null &&
-       echo_test_string=`eval $cmd` &&
-       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
-    then
-      break
-    fi
-  done
-fi
-
-if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
-   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
-   test "X$echo_testing_string" = "X$echo_test_string"; then
-  :
-else
-  # The Solaris, AIX, and Digital Unix default echo programs unquote
-  # backslashes.  This makes it impossible to quote backslashes using
-  #   echo "$something" | sed 's/\\/\\\\/g'
-  #
-  # So, first we look for a working echo in the user's PATH.
-
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for dir in $PATH /usr/ucb; do
-    IFS="$lt_save_ifs"
-    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-       test "X$echo_testing_string" = "X$echo_test_string"; then
-      echo="$dir/echo"
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-
-  if test "X$echo" = Xecho; then
-    # We didn't find a better echo, so look for alternatives.
-    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
-       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
-       test "X$echo_testing_string" = "X$echo_test_string"; then
-      # This shell has a builtin print -r that does the trick.
-      echo='print -r'
-    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
-	 test "X$CONFIG_SHELL" != X/bin/ksh; then
-      # If we have ksh, try running configure again with it.
-      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-      export ORIGINAL_CONFIG_SHELL
-      CONFIG_SHELL=/bin/ksh
-      export CONFIG_SHELL
-      exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
-    else
-      # Try using printf.
-      echo='printf %s\n'
-      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
-	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
-	 test "X$echo_testing_string" = "X$echo_test_string"; then
-	# Cool, printf works
-	:
-      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
-	   test "X$echo_testing_string" = 'X\t' &&
-	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	   test "X$echo_testing_string" = "X$echo_test_string"; then
-	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-	export CONFIG_SHELL
-	SHELL="$CONFIG_SHELL"
-	export SHELL
-	echo="$CONFIG_SHELL $0 --fallback-echo"
-      elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
-	   test "X$echo_testing_string" = 'X\t' &&
-	   echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-	   test "X$echo_testing_string" = "X$echo_test_string"; then
-	echo="$CONFIG_SHELL $0 --fallback-echo"
-      else
-	# maybe with a smaller string...
-	prev=:
-
-	for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
-	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
-	  then
-	    break
-	  fi
-	  prev="$cmd"
-	done
-
-	if test "$prev" != 'sed 50q "$0"'; then
-	  echo_test_string=`eval $prev`
-	  export echo_test_string
-	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
-	else
-	  # Oops.  We lost completely, so just stick with echo.
-	  echo=echo
-	fi
-      fi
-    fi
-  fi
-fi
-fi
-
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-ECHO=$echo
-if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
-   ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
-fi
-
-
-
-
-tagnames=${tagnames+${tagnames},}CXX
-
-tagnames=${tagnames+${tagnames},}F77
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
 
 # Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
 # so uname gets run too.
 ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 
-exec 6>&1
-
 #
 # Initializations.
 #
 ac_default_prefix=/usr/local
+ac_clean_files=
 ac_config_libobj_dir=.
+LIBOBJS=
 cross_compiling=no
 subdirs=
 MFLAGS=
 MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-# Maximum number of lines to put in a shell here document.
-# This variable seems obsolete.  It should probably be removed, and
-# only ac_max_sed_lines should be used.
-: ${ac_max_here_lines=38}
 
 # Identity of this package.
 PACKAGE_NAME='Net-SNMP'
 PACKAGE_TARNAME='net-snmp'
-PACKAGE_VERSION='5.4.4'
-PACKAGE_STRING='Net-SNMP 5.4.4'
+PACKAGE_VERSION='5.7.3.rc1'
+PACKAGE_STRING='Net-SNMP 5.7.3.rc1'
 PACKAGE_BUGREPORT='net-snmp-coders@lists.sourceforge.net'
+PACKAGE_URL=''
 
-ac_unique_file="agent/mibgroup/ucd-snmp/extensible.c"
+ac_unique_file="agent/snmpd.c"
 # Factoring default headers for most tests.
 ac_includes_default="\
 #include <stdio.h>
-#if HAVE_SYS_TYPES_H
+#ifdef HAVE_SYS_TYPES_H
 # include <sys/types.h>
 #endif
-#if HAVE_SYS_STAT_H
+#ifdef HAVE_SYS_STAT_H
 # include <sys/stat.h>
 #endif
-#if STDC_HEADERS
+#ifdef STDC_HEADERS
 # include <stdlib.h>
 # include <stddef.h>
 #else
-# if HAVE_STDLIB_H
+# ifdef HAVE_STDLIB_H
 #  include <stdlib.h>
 # endif
 #endif
-#if HAVE_STRING_H
-# if !STDC_HEADERS && HAVE_MEMORY_H
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
 #  include <memory.h>
 # endif
 # include <string.h>
 #endif
-#if HAVE_STRINGS_H
+#ifdef HAVE_STRINGS_H
 # include <strings.h>
 #endif
-#if HAVE_INTTYPES_H
+#ifdef HAVE_INTTYPES_H
 # include <inttypes.h>
-#else
-# if HAVE_STDINT_H
-#  include <stdint.h>
-# endif
 #endif
-#if HAVE_UNISTD_H
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CONFIGURE_OPTIONS LIBTOOLFLAGS INSTALL_PREFIX SNMPD TRAPLIBS USETRAPLIBS MAINSUBS HAVE_DMALLOC_H installucdheaders installucdlibs CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP LINKCC EGREP build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os SED LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CXX CXXFLAGS ac_ct_CXX CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBTOOL_DEPS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA SET_MAKE PSPROG PERLPROG PYTHONPROG WHOAMI FIND AUTOCONF AUTOHEADER UNAMEPROG VERSION RELEASEVERSION DEVFLAGS TOP_INCLUDES SNMPLIB_INCLUDES AGENT_INCLUDES HELPER_INCLUDES MIBGROUP_INCLUDES GNU_vpath NON_GNU_VPATH CCPATH EXTRACPPFLAGS SNMPLIBPATH SNMPSHAREPATH NETSNMP_DEFAULT_MIBDIRS SNMPCONFPATH other_src_list other_objs_list other_lobjs_list other_agentobjs other_lagentobjs other_trapd_objects transport_hdr_list transport_src_list transport_obj_list transport_lobj_list security_src_list security_hdr_list security_obj_list security_lobj_list krb5_config default_mibs_install dllcleans ENV_SEPARATOR NETSNMP_DEFAULT_MIBS EMBEDPERLINSTALL EMBEDPERLUNINSTALL PERLLDOPTS_FOR_LIBS PERLLDOPTS_FOR_APPS PERLTARGS PERLINSTALLTARGS PERLUNINSTALLTARGS PERLARGS PYTHONTARGS PYTHONINSTALLTARGS PYTHONUNINSTALLTARGS PYTHONCLEANTARGS PYTHONARGS LPSTAT_PATH LNETSNMPLIBS LAGENTLIBS PSCMD ALLOCA LIBOBJS LMIBLIBS AGENTLIBS OTHERAGENTLIBOBJS OTHERAGENTLIBLOBJS PERSISTENT_DIRECTORY UCDPERSISTENT_DIRECTORY COPY_PERSISTENT_FILES DLLIBS LTLIBOBJS'
-ac_subst_files='MODULE_LIST module_list_c module_list_o module_list_lo mib_module_list_c mib_module_list_o mib_module_list_lo agent_module_list_c agent_module_list_o agent_module_list_lo mibgroup_list_o mibgroup_list_lo agentgroup_list_o agentgroup_list_lo agent_module_list module_rules module_list_deps mib_module_list_deps agent_module_list_deps'
+ac_config_libobj_dir=snmplib
+ac_subst_vars='LTLIBOBJS
+ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE
+PARTIALTARGETFLAGS
+DLLIBS
+OTHERAGENTLIBLFTS
+OTHERAGENTLIBLOBJS
+OTHERAGENTLIBOBJS
+AGENTLIBS
+LMIBLIBS
+PSCMD
+LPSTAT_PATH
+LIBOBJS
+ALLOCA
+VAL_LIBS
+LAGENTLIBS
+LNETSNMPLIBS
+PYTHONFEATURES
+PYTHONARGS
+PYTHONCLEANTARGS
+PYTHONUNINSTALLTARGS
+PYTHONINSTALLTARGS
+PYTHONTARGS
+PERLFEATURES
+PERLARGS
+PERLUNINSTALLTARGS
+PERLINSTALLTARGS
+PERLTARGS
+PERLLDOPTS_FOR_APPS
+PERLLDOPTS_FOR_LIBS
+EMBEDPERLUNINSTALL
+EMBEDPERLINSTALL
+MYSQL_INCLUDES
+MYSQL_LIBS
+MYSQLCONFIG
+crypto_files_lo
+crypto_files_o
+crypto_files_c
+NETSNMP_BUILD_SET_PROG_FALSE
+NETSNMP_BUILD_SET_PROG_TRUE
+NETSNMP_BUILD_USM_PROG_FALSE
+NETSNMP_BUILD_USM_PROG_TRUE
+NETSNMP_BUILD_TLS_PROG_FALSE
+NETSNMP_BUILD_TLS_PROG_TRUE
+NETSNMP_BUILD_SSH_PROG_FALSE
+NETSNMP_BUILD_SSH_PROG_TRUE
+NETSNMP_HAVE_AGENTX_LIBS_FALSE
+NETSNMP_HAVE_AGENTX_LIBS_TRUE
+NETSNMP_DEFAULT_MIBS
+ENV_SEPARATOR
+dllcleans
+default_mibs_install
+krb5_config
+security_ftobj_list
+security_lobj_list
+security_obj_list
+security_hdr_list
+security_src_list
+transport_ftobj_list
+transport_lobj_list
+transport_obj_list
+transport_src_list
+transport_hdr_list
+other_trapd_objects
+other_ftagentobjs
+other_lagentobjs
+other_agentobjs
+other_ftobjs_list
+other_lobjs_list
+other_objs_list
+other_src_list
+SNMPCONFPATH
+NETSNMP_DEFAULT_MIBDIRS
+SNMPSHAREPATH
+SNMPLIBPATH
+VERSION
+DPKG_QUERY_PATH
+CCPATH
+EXTRACPPFLAGS
+LD_NO_UNDEFINED
+target_os
+target_vendor
+target_cpu
+target
+NON_GNU_VPATH
+GNU_vpath
+EXTERNAL_MIBGROUP_INCLUDES
+MIBGROUP_INCLUDES
+HELPER_INCLUDES
+AGENT_INCLUDES
+SNMPLIB_INCLUDES
+TOP_INCLUDES
+DEVFLAGS
+LIBTOOL_DEPS
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+MANIFEST_TOOL
+AWK
+RANLIB
+STRIP
+ac_ct_AR
+AR
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+LIBTOOL
+OBJDUMP
+DLLTOOL
+AS
+LINKCC
+CPP
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+PERL_SYSTEM_INVOKES_POSIX_SHELL
+UNAMEPROG
+PYTHONPROG
+PSPROG
+PERLPROG
+AUTOHEADER
+AUTOCONF
+WHOAMI
+FIND
+FILE
+SED
+SET_MAKE
+LN_S
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+EGREP
+GREP
+COPY_PERSISTENT_FILES
+UCDPERSISTENT_DIRECTORY
+PERSISTENT_DIRECTORY
+FEATUREHEADERS
+FEATURETARGS
+FEATURE_REMOVE_FLAGS
+FEATURE_ADD_FLAGS
+installucdlibs
+installucdheaders
+FTMAINSUBS
+MAINSUBS
+USETRAPLIBS
+TRAPLIBS
+SNMPD
+INSTALL_PREFIX
+LIBTOOLFLAGS
+CONFIGURE_OPTIONS
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files='MODULE_LIST
+module_list_c
+module_list_o
+module_list_lo
+module_list_ft
+mib_module_list_c
+mib_module_list_o
+mib_module_list_lo
+mib_module_list_ft
+agent_module_list_c
+agent_module_list_o
+agent_module_list_lo
+agent_module_list_ft
+mibgroup_list_o
+mibgroup_list_lo
+mibgroup_list_ft
+agentgroup_list_o
+agentgroup_list_lo
+agentgroup_list_ft
+module_rules
+module_list_deps
+mib_module_list_deps
+agent_module_list_deps'
+ac_user_opts='
+enable_option_checking
+with_cc
+with_linkcc
+with_ar
+with_endianness
+with_cflags
+with_ldflags
+enable_as_needed
+with_libs
+enable_silent_libtool
+with_dmalloc
+enable_dmalloc
+with_efence
+enable_efence
+with_rsaref
+enable_rsaref
+with_openssl
+enable_openssl
+with_ssl
+enable_ssl
+with_pkcs
+enable_pkcs
+with_krb5
+enable_krb5
+with_dnssec_local_validation
+enable_dnssec_local_validation
+with_dnssec
+enable_dnssec
+with_rpm
+enable_rpm
+with_install_prefix
+enable_agent
+with_agent
+enable_applications
+with_applications
+enable_manuals
+with_manuals
+enable_scripts
+with_scripts
+enable_mibs
+enable_mib_config_checking
+with_mib_config_checking
+enable_mib_config_debug
+with_mib_config_debug
+enable_new_features
+enable_old_features
+with_features_of
+with_defaults
+enable_defaults
+enable_ucd_snmp_compatibility
+with_ucd_snmp_compatibility
+enable_mib_loading
+with_mib_loading
+with_mibdirs
+enable_mibdirs
+with_mibs
+with_mibfiles
+enable_mibfiles
+enable_des
+with_des
+enable_privacy
+with_privacy
+enable_md5
+with_md5
+enable_internal_md5
+with_internal_md5
+with_opaque_special_types
+enable_opaque_special_types
+enable_ipv6
+with_ipv6
+with_logfile
+enable_logfile
+with_persistent_directory
+enable_persistent_directory
+with_persistent_mask
+enable_persistent_mask
+with_copy_persistent_files
+enable_copy_persistent_files
+with_temp_file_pattern
+enable_temp_file_pattern
+enable_snmpv1
+with_snmpv1
+enable_snmpv2c
+with_snmpv2c
+with_default_snmp_version
+enable_default_snmp_version
+with_transports
+with_out_transports
+with_transport
+with_out_transport
+with_security_modules
+enable_security_modules
+with_out_security_modules
+enable_out_security_modules
+enable_debugging
+with_debugging
+enable_developer
+with_developer
+enable_testing_code
+with_testing_code
+enable_reentrant
+with_reentrant
+enable_deprecated
+with_deprecated
+with_root_access
+enable_root_access
+with_kmem_usage
+enable_kmem_usage
+with_dummy_values
+enable_dummy_values
+enable_set_support
+with_set_support
+with_sys_contact
+enable_sys_contact
+with_sys_location
+enable_sys_location
+enable_local_smux
+with_local_smux
+enable_agentx_dom_sock_only
+with_agentx_dom_sock_only
+enable_snmptrapd_subagent
+with_snmptrapd_subagent
+with_agentx_socket
+enable_agentx_socket
+with_features
+enable_features
+with_out_features
+enable_out_features
+with_feature
+with_out_feature
+enable_minimalist
+with_minimalist
+enable_notify_only
+with_notify_only
+enable_notifyonly
+enable_no_listen
+with_no_listen
+enable_nolisten
+enable_read_only
+with_read_only
+enable_readonly
+enable_mini_agent
+with_mini_agent
+with_miniagent
+enable_miniagent
+enable_mfd_rewrites
+with_mfd_rewrites
+with_mib_modules
+enable_mib_modules
+with_out_mib_modules
+enable_out_mib_modules
+with_mib_module
+with_module
+with_modules
+with_out_mib_module
+with_out_module
+with_out_modules
+with_enterprise_oid
+enable_enterprise_oid
+with_enterprise_sysoid
+enable_enterprise_sysoid
+with_enterprise_notification_oid
+enable_enterprise_notification_oid
+with_perl_modules
+enable_perl_modules
+enable_embedded_perl
+with_embedded_perl
+enable_perl_cc_checks
+with_perl_cc_checks
+with_python_modules
+with_server_send_buf
+enable_server_send_buf
+with_server_recv_buf
+enable_server_recv_buf
+with_client_send_buf
+enable_client_send_buf
+with_client_recv_buf
+enable_client_recv_buf
+with_elf
+enable_elf
+with_nl
+enable_nl
+with_libwrap
+enable_libwrap
+with_zlib
+enable_zlib
+with_bzip2
+with_mnttab
+enable_mnttab
+with_mysql
+enable_mysql
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_gnu_ld
+with_sysroot
+enable_libtool_lock
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP'
+
 
 # Initialize some variables set by options.
 ac_init_help=
 ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
 # The variables have the same names as the options, with
 # dashes changed to underlines.
 cache_file=/dev/null
@@ -494,34 +1078,49 @@
 # and all the variables that are supposed to be based on exec_prefix
 # by default will actually change.
 # Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
 bindir='${exec_prefix}/bin'
 sbindir='${exec_prefix}/sbin'
 libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
 
 ac_prev=
+ac_dashdash=
 for ac_option
 do
   # If the previous option needs an argument, assign it.
   if test -n "$ac_prev"; then
-    eval "$ac_prev=\$ac_option"
+    eval $ac_prev=\$ac_option
     ac_prev=
     continue
   fi
 
-  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
 
   # Accept the important Cygnus configure options, so we can diagnose typos.
 
-  case $ac_option in
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
 
   -bindir | --bindir | --bindi | --bind | --bin | --bi)
     ac_prev=bindir ;;
@@ -543,33 +1142,59 @@
   --config-cache | -C)
     cache_file=config.cache ;;
 
-  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+  -datadir | --datadir | --datadi | --datad)
     ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-  | --da=*)
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
     datadir=$ac_optarg ;;
 
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
   -disable-* | --disable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-   { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
-    eval "enable_$ac_feature=no" ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
 
   -enable-* | --enable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-   { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
-    case $ac_option in
-      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
-      *) ac_optarg=yes ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
     esac
-    eval "enable_$ac_feature='$ac_optarg'" ;;
+    eval enable_$ac_useropt=\$ac_optarg ;;
 
   -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
   | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
@@ -596,6 +1221,12 @@
   -host=* | --host=* | --hos=* | --ho=*)
     host_alias=$ac_optarg ;;
 
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
   -includedir | --includedir | --includedi | --included | --include \
   | --includ | --inclu | --incl | --inc)
     ac_prev=includedir ;;
@@ -620,13 +1251,16 @@
   | --libexe=* | --libex=* | --libe=*)
     libexecdir=$ac_optarg ;;
 
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
   -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst \
-  | --locals | --local | --loca | --loc | --lo)
+  | --localstate | --localstat | --localsta | --localst | --locals)
     ac_prev=localstatedir ;;
   -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
     localstatedir=$ac_optarg ;;
 
   -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
@@ -691,6 +1325,16 @@
   | --progr-tra=* | --program-tr=* | --program-t=*)
     program_transform_name=$ac_optarg ;;
 
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
@@ -741,26 +1385,36 @@
     ac_init_version=: ;;
 
   -with-* | --with-*)
-    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid package name: $ac_package" >&2
-   { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    case $ac_option in
-      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
-      *) ac_optarg=yes ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
     esac
-    eval "with_$ac_package='$ac_optarg'" ;;
+    eval with_$ac_useropt=\$ac_optarg ;;
 
   -without-* | --without-*)
-    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid package name: $ac_package" >&2
-   { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package | sed 's/-/_/g'`
-    eval "with_$ac_package=no" ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
 
   --x)
     # Obsolete; use --with-x.
@@ -780,27 +1434,26 @@
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) { echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; }
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
     ;;
 
   *=*)
     ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
-   { (exit 1); exit 1; }; }
-    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
-    eval "$ac_envvar='$ac_optarg'"
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
 
   *)
     # FIXME: should be removed in autoconf 3.0.
-    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
     ;;
 
   esac
@@ -808,31 +1461,36 @@
 
 if test -n "$ac_prev"; then
   ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  { echo "$as_me: error: missing argument to $ac_option" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "missing argument to $ac_option"
 fi
 
-# Be sure to have absolute paths.
-for ac_var in exec_prefix prefix
-do
-  eval ac_val=$`echo $ac_var`
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
-    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; };;
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
   esac
-done
+fi
 
-# Be sure to have absolute paths.
-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
-	      localstatedir libdir includedir oldincludedir infodir mandir
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
 do
-  eval ac_val=$`echo $ac_var`
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
   case $ac_val in
-    [\\/$]* | ?:[\\/]* ) ;;
-    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; };;
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
   esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
 done
 
 # There might be people who depend on the old broken behavior: `$host'
@@ -846,8 +1504,8 @@
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used." >&2
+    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used" >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -859,94 +1517,72 @@
 test "$silent" = yes && exec 6>/dev/null
 
 
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
 # Find the source files, if location was not specified.
 if test -z "$srcdir"; then
   ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then its parent.
-  ac_confdir=`(dirname "$0") 2>/dev/null ||
-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$0" : 'X\(//\)[^/]' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X"$0" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-  	  /^X\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
   srcdir=$ac_confdir
-  if test ! -r $srcdir/$ac_unique_file; then
+  if test ! -r "$srcdir/$ac_unique_file"; then
     srcdir=..
   fi
 else
   ac_srcdir_defaulted=no
 fi
-if test ! -r $srcdir/$ac_unique_file; then
-  if test "$ac_srcdir_defaulted" = yes; then
-    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
-   { (exit 1); exit 1; }; }
-  else
-    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-   { (exit 1); exit 1; }; }
-  fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
 fi
-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
-  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
-   { (exit 1); exit 1; }; }
-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
-ac_env_build_alias_set=${build_alias+set}
-ac_env_build_alias_value=$build_alias
-ac_cv_env_build_alias_set=${build_alias+set}
-ac_cv_env_build_alias_value=$build_alias
-ac_env_host_alias_set=${host_alias+set}
-ac_env_host_alias_value=$host_alias
-ac_cv_env_host_alias_set=${host_alias+set}
-ac_cv_env_host_alias_value=$host_alias
-ac_env_target_alias_set=${target_alias+set}
-ac_env_target_alias_value=$target_alias
-ac_cv_env_target_alias_set=${target_alias+set}
-ac_cv_env_target_alias_value=$target_alias
-ac_env_CC_set=${CC+set}
-ac_env_CC_value=$CC
-ac_cv_env_CC_set=${CC+set}
-ac_cv_env_CC_value=$CC
-ac_env_CFLAGS_set=${CFLAGS+set}
-ac_env_CFLAGS_value=$CFLAGS
-ac_cv_env_CFLAGS_set=${CFLAGS+set}
-ac_cv_env_CFLAGS_value=$CFLAGS
-ac_env_LDFLAGS_set=${LDFLAGS+set}
-ac_env_LDFLAGS_value=$LDFLAGS
-ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
-ac_cv_env_LDFLAGS_value=$LDFLAGS
-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
-ac_env_CPPFLAGS_value=$CPPFLAGS
-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
-ac_env_CPP_set=${CPP+set}
-ac_env_CPP_value=$CPP
-ac_cv_env_CPP_set=${CPP+set}
-ac_cv_env_CPP_value=$CPP
-ac_env_CXX_set=${CXX+set}
-ac_env_CXX_value=$CXX
-ac_cv_env_CXX_set=${CXX+set}
-ac_cv_env_CXX_value=$CXX
-ac_env_CXXFLAGS_set=${CXXFLAGS+set}
-ac_env_CXXFLAGS_value=$CXXFLAGS
-ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
-ac_cv_env_CXXFLAGS_value=$CXXFLAGS
-ac_env_CXXCPP_set=${CXXCPP+set}
-ac_env_CXXCPP_value=$CXXCPP
-ac_cv_env_CXXCPP_set=${CXXCPP+set}
-ac_cv_env_CXXCPP_value=$CXXCPP
-ac_env_F77_set=${F77+set}
-ac_env_F77_value=$F77
-ac_cv_env_F77_set=${F77+set}
-ac_cv_env_F77_value=$F77
-ac_env_FFLAGS_set=${FFLAGS+set}
-ac_env_FFLAGS_value=$FFLAGS
-ac_cv_env_FFLAGS_set=${FFLAGS+set}
-ac_cv_env_FFLAGS_value=$FFLAGS
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
 
 #
 # Report the --help message.
@@ -955,7 +1591,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures Net-SNMP 5.4.4 to adapt to many kinds of systems.
+\`configure' configures Net-SNMP 5.7.3.rc1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -969,20 +1605,17 @@
       --help=short        display options specific to this package
       --help=recursive    display the short help of all the included packages
   -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking...' messages
+  -q, --quiet, --silent   do not print \`checking ...' messages
       --cache-file=FILE   cache test results in FILE [disabled]
   -C, --config-cache      alias for \`--cache-file=config.cache'
   -n, --no-create         do not create output files
       --srcdir=DIR        find the sources in DIR [configure dir or \`..']
 
-_ACEOF
-
-  cat <<_ACEOF
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
-			  [$ac_default_prefix]
+                          [$ac_default_prefix]
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-			  [PREFIX]
+                          [PREFIX]
 
 By default, \`make install' will install all the files in
 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
@@ -992,18 +1625,25 @@
 For better control, use the options below.
 
 Fine tuning of the installation directories:
-  --bindir=DIR           user executables [EPREFIX/bin]
-  --sbindir=DIR          system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR       program executables [EPREFIX/libexec]
-  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
-  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
-  --libdir=DIR           object code libraries [EPREFIX/lib]
-  --includedir=DIR       C header files [PREFIX/include]
-  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
-  --infodir=DIR          info documentation [PREFIX/info]
-  --mandir=DIR           man documentation [PREFIX/man]
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/net-snmp]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
 _ACEOF
 
   cat <<\_ACEOF
@@ -1017,35 +1657,47 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Net-SNMP 5.4.4:";;
+     short | recursive ) echo "Configuration of Net-SNMP 5.7.3.rc1:";;
    esac
   cat <<\_ACEOF
 
 Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-as-needed              Link libperl against Net-SNMP libraries
-                                  rather than applications. We recommend to
-                                  use this option if it works.
+  --disable-as-needed             Link libperl against applications rather
+                                  than Net-SNMP libraries. Use only if the other
+                                  way doesn't work.
   --enable-silent-libtool         Pass --silent to libtool.
 
-  --enable-mini-agent             Build a minimal agent.
   --disable-agent                 Do not build the agent (snmpd).
   --disable-applications          Do not build the apps (snmpget, ...).
   --disable-manuals               Do not install the manuals.
   --disable-scripts               Do not install the scripts (mib2c, ...).
   --disable-mibs                  Do not install the mib files.
+  --enable-mib-config-checking    Turns on extra checks during configuration
+                                  of mib modules. Any conflicts will cause
+                                  configure to abort (default is to issue a
+                                  warning and continue.)
+  --enable-mib-config-debug       Turns on verbose output during mib module
+                                  configure processing.
+  --enable-new-features   Compile in new MIB modules and other experimental
+                          features which are due to be included in future
+                          releases.
+  --enable-old-features   Compile in old MIB modules and other deprecated
+                          features which were replaced in the default build of
+                          this release.
+  --enable-ucd-snmp-compatibility Install ucd-snmp look-alike headers and libs.
+
   --disable-mib-loading           Do not include code that parses and
                                   manipulates the mib files.
-  --disable-snmpv1                Do not include code that implements SNMPv1.
-  --disable-snmpv2c               Do not include code that implements SNMPv2c.
-  --disable-set-support           Do not allow SNMP set requests to the agent.
   --disable-des                   Do not support DES encryption.
   --disable-privacy               Don't compile in support for privacy (encryption).
   --disable-md5                   Do not support MD5 authentication.
   --enable-internal-md5           Use the internal MD5 support.
   --enable-ipv6                   Generate IPv6 ready version.
-  --enable-local-smux             Restrict SMUX connections to localhost (by default).
+  --disable-snmpv1                Do not include code that implements SNMPv1.
+  --disable-snmpv2c               Do not include code that implements SNMPv2c.
   --enable-debugging              Outputs extra debugging information at all
                                   times.  Normally, you should not enable this,
                                   but instead use the -D flag of the commands,
@@ -1054,17 +1706,6 @@
                                   This might provide some speed benefits.
   --enable-developer              Turns on super-duper-extra-compile-warnings
                                   when using gcc.
-  --enable-agentx-dom-sock-only   Disable UDP/TCP transports for agentx.
-  --disable-snmptrapd-subagent    Disable agentx subagent code in snmptrapd.
-  --enable-mib-config-checking    Turns on extra checks during configuration
-                                  of mib modules. Any conflicts will cause
-                                  configure to abort (default is to issue a
-                                  warning and continue.)
-  --enable-mib-config-debug       Turns on verbose output during mib module
-                                  configure processing.)
-  --enable-mfd-rewrites           Use new MFD rewrites of mib modules,
-                                  where available. (default is to use
-                                  original mib module code).
   --enable-testing-code           Enables some code sections that should
                                   only be used for testing of certain
                                   SNMP functionalities.  This should *not*
@@ -1074,17 +1715,26 @@
                                   environments.  This does not guarantee
                                   thread-safe operation.
                                   Currently an experimental setting.
+  --disable-deprecated            Don't compile in deprecated functions.
+  --disable-set-support           Do not allow SNMP set requests.
+  --enable-local-smux             Restrict SMUX connections to localhost (by default).
+  --enable-agentx-dom-sock-only   Disable UDP/TCP transports for agentx.
+  --disable-snmptrapd-subagent    Disable agentx subagent code in snmptrapd.
+  --enable-minimalist             Remove all non-essential code features.
+  --enable-notify-only            Build tools that can only send notifications.
+  --enable-no-listen              Build tools that can't listen to ports.
+  --enable-read-only              Remove all SET support from the code.
+  --enable-mini-agent             Build a minimal agent.
+  --enable-mfd-rewrites           Use new MFD rewrites of mib modules,
+                                  where available. (default is to use
+                                  original mib module code).
   --disable-embedded-perl         Disable embedded Perl in the SNMP agent and
                                   snmptrapd. enabled by default
   --disable-perl-cc-checks        Disable configure checks for whether Perl's
                                   C Compiler is compatible with ours when
                                   embedded Perl is enabled.
-  --enable-ucd-snmp-compatibility Install ucd-snmp look-alike headers and libs.
-
-  --enable-shared[=PKGS]
-                          build shared libraries [default=yes]
-  --enable-static[=PKGS]
-                          build static libraries [default=yes]
+  --enable-shared[=PKGS]  build shared libraries [default=yes]
+  --enable-static[=PKGS]  build static libraries [default=yes]
   --enable-fast-install[=PKGS]
                           optimize for fast installation [default=yes]
   --disable-libtool-lock  avoid locking (might break parallel builds)
@@ -1103,19 +1753,39 @@
   --with-cflags=CFLAGS            use CFLAGS as compile time arguments.
   --with-ldflags=LDFLAGS          use LDFLAGS as link time arguments to ld.
   --with-libs=LIBS                use LIBS as link time arguments to ld.
+  --with-dmalloc=PATH     Use dmalloc library (www.dmalloc.com)
+  --with-efence                   Look for and use libefence (malloc).
+  --with-rsaref=PATH              Look for librsaref 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.
+
+  --with-pkcs=PATH                Look for pkcs11 in PATH/lib.
+  --with-krb5=PATH                Look for krb5 in PATH/lib.
+  --with-dnssec-local-validation Enable local DNSSEC validation using libval (no)
+  --without-rpm                   Don't include support for the RPM package
+                                  management system when building the host MIB
+                                  module.
   --with-install-prefix=PATH      Just for installing, prefix all
                                   directories with PATH.  This is known not
                                   to work on some systems with shared
                                   libraries (eg, HPUX)
+  --with-features-of=version
+                          Compile in MIB modules and other features as if this
+                          was release "version" (default is 5.7.3.rc1).
 
-  --with-dmalloc=PATH             Use dmalloc library (www.dmalloc.com)
-  --with-efence                   Look for and use libefence (malloc).
-  --with-rsaref=PATH              Look for librsaref in PATH/lib.
-  --with-openssl=PATH             Look for openssl in PATH/lib.
-  --with-krb5=PATH                Look for krb5 in PATH/lib.
-  --without-rpm                   Don't include support for the RPM package
-                                  management system when building the host MIB
-                                  module.
+Miscellaneous:
+  --with-defaults         Use defaults for prompted values.
+  --with-mibdirs="dir1:dir2:"   Default directories to look for mibs.
+                                  (Default: \$HOME/.snmp/mibs:DATADIR/snmp/mibs)
+  --with-mibs="item1:item2:"    Default mib IDs to read.
+                                  (The default list is
+                                   "SNMPv2-MIB:IF-MIB:IP-MIB:TCP-MIB:UDP-MIB"
+                                  with the addition of any mibs used
+                                  by the mib modules the agent is
+                                  configured with)
+  --with-mibfiles="file1:file2" Default mib files to load.
+                                  (Default:  none.  uses IDs above instead.)
   --without-opaque-special-types  Don't use special opaque encodings.
                                   SNMP normally cannot handle
                                   floating numbers, nor large 64 bit
@@ -1123,17 +1793,68 @@
                                   net-snmp package compiles in
                                   support for these extra datatypes
                                   (in a legal way)
-  --with-mibdirs="dir1:dir2:"   Default directories to look for mibs.
-                                  (Default: \$HOME/.snmp/mibs:DATADIR/snmp/mibs)
-  --with-mibs="item1:item2:"    Default mib IDs to read.
-                                  (The default list is
-                                  "SNMPv2-MIB:IF-MIB:IP-MIB:TCP-MIB:UDP-MIB"
-                                  with the addition of any mibs used
-                                  by the mib modules the agent is
-                                  configured with)
-  --with-mibfiles="file1:file2" Default mib files to load.
-                                  (Default:  none.  uses IDs above instead.)
-  --with-pkcs=PATH                Look for pkcs11 in PATH/lib.
+  --with-logfile="location"       Default log file location for snmpd.
+  --with-persistent-directory="directory"
+                                  Default directory for persistent data storage.
+  --with-persistent-mask="mask"  Default mask for persistent data storage.
+                                  (Default: 077)
+  --with-copy-persistent-files="no" Don't copy persistent files
+                                     (or use "yes" to copy them).
+                                     (Default: yes)
+  --with-temp-file-pattern=PATTERN  Pattern of temporary files (Default: /tmp/snmpdXXXXXX)
+  --with-default-snmp-version="3" Default version of SNMP to use.
+                                    (Default: 3)
+                                    Legal values: 1, 2 (for SNMPv2c) or 3.
+  --with-transports="t1 t2 ..."   Compile in the given SNMP transport
+                                    modules (space or comma separated list).
+  --with-out-transports="t1 ..."  Exclude listed SNMP transports
+                                    (space or comma separated list).
+
+  Available SNMP transport modules are:
+
+    UDP         support for SNMP over UDP/IP.
+                This transport is always compiled in.
+    UDPIPv6     support for SNMP over UDP/IPv6.
+                This transport is available for Linux, Solaris and
+                FreeBSD at least.
+                This transport is compiled in by default if IPv6 support is enabled.
+    TCPIPv6     support for SNMP over UDP/IPv6.
+                This transport is available for Linux, Solaris and
+                FreeBSD at least.
+                This transport is compiled in by default if IPv6 support is enabled.
+    TCP         support for SNMP over TCP/IP.
+                This transport is compiled in by default, but may be omitted.
+    Unix        support for SNMP over Unix domain protocols.
+                This transport is compiled in by default except on Win32
+                platforms, and may be omitted.
+    Callback    support for SNMP over an internal locally connected pair
+                of snmp_sessions.
+    Alias       The alias transport simply lets you define more complex
+                transport strings and alias them to simple names in
+                the snmp.conf file.
+    AAL5PVC     support for SNMP over AAL5 PVCs.
+                This transport is presently only available for Linux,
+                is never compiled in by default and may be omitted.
+    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
+
+  --with-security-modules="s1 s2 ..."   Compile in the given SNMP security
+                                    module services (space separated list).
+
+  Available SNMP security services:
+
+        usm                support for user based SNMP security
+        ksm                support for kerberos based SNMP security
+        tsm                support for the Transport-based security
+                           (for use with the SSH, DTLSUDP and TLSTCP transports)
+
+  --with-out-security-modules="s1 s2 ..."   Removes the given SNMP security
+                                    module services from the default list.
+
 
 Configuring the agent:
   --without-root-access           The snmpd agent won't require root access to
@@ -1146,63 +1867,15 @@
                                   This is technically not compliant with the
                                   SNMP specifications, but was how the agent
                                   operated for versions < 4.0.
-  --with-persistent-directory="directory"
-                                  Default directory for persistent data storage.
-  --with-persistent-mask="mask"  Default mask for persistent data storage.
-                                  (Default: 077)
-  --with-copy-persistent-files="no" Don't copy persistent files
-                                     (or use "yes" to copy them).
-                                     (Default: yes)
-  --with-temp-file-pattern=PATTERN  Pattern of temporary files (Default: /tmp/snmpdXXXXXX)
-  --with-agentx-socket=FILE         AgentX socket (Default: /var/agentx/master as specified in RFC2741)
-  --with-default-snmp-version="3" Default version of SNMP to use.
-                                    (Default: 3)
-                                    Legal values: 1, 2 (for SNMPv2c) or 3.
   --with-sys-contact="who@where"  Default system contact.
                                     (Default: LOGIN@DOMAINNAME)
   --with-sys-location="location"  Default system location.
                                     (Default: Unknown)
-  --with-logfile="location"       Default log file location for snmpd.
-  --with-transports="t1 t2 ..."   Compile in the given SNMP transport
-                                    modules (space separated list).
-  --with-out-transports="t1 ..."  Exclude listed SNMP transports
-                                    (space separated list).
-
-  Available SNMP transport modules are:
-
-    UDP         support for SNMP over UDP/IP.
-                This transport is always compiled in.
-    UDPIPv6     support for SNMP over UDP/IPv6.
-                This transport is available for Linux, Solaris and
-                FreeBSD at least.
-                It is never compiled in by default.
-    TCPIPv6     support for SNMP over UDP/IPv6.
-                This transport is available for Linux, Solaris and
-                FreeBSD at least.
-                It is never compiled in by default.
-    TCP         support for SNMP over TCP/IP.
-                This transport is compiled in by default, but may be omitted.
-    Unix        support for SNMP over Unix domain protocols.
-                This transport is compiled in by default except on Win32
-                platforms, and may be omitted.
-    Callback    support for SNMP over an internal locally connected pair
-                of snmp_sessions.
-    AAL5PVC     support for SNMP over AAL5 PVCs.
-                This transport is presently only available for Linux,
-                is never compiled in by default and may be omitted.
-    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.
-
-  --with-security-modules="s1 s2 ..."   Compile in the given SNMP security
-                                    module services (space separated list).
-
-  Available SNMP security services:
-
-        usm                support for user based SNMP security
-                           (required and always compiled in)
-        ksm                support for kerberos based SNMP security
-
+  --with-agentx-socket=FILE         AgentX socket (Default: /var/agentx/master as specified in RFC2741)
+  --with-features="feat1 feat2"   Request extra features to be turned on.
+                                   (only useful with --enable-minimalist)
+  --with-out-features="feat1..."  Remove specific features.
+                                   (implies --enable-minimalist)
   --with-mib-modules="item1 ..."  Compile with additional mib modules
                                     (Space separated list).
   --with-out-mib-modules="list"   Compile without these mib modules.
@@ -1243,6 +1916,7 @@
       ipfwchains/ipfwchains  firewall chains under ipfw
                              (See agent/mibgroup/ipfwchains/README)
       sctp-mib             support for the SCTP-MIB
+      etherlike-mib        support for the EtherLike-MIB
 
     Solaris
       ucd-snmp/lmSensors   hardware monitoring (LM-SENSORS-MIB)
@@ -1308,150 +1982,935 @@
   --with-client-send-buf=ARG    Similar as previous options, but for the
                                   receive buffer of client sockets
   --with-client-recv-buf=ARG    Similar as previous options, but for the send buffer
-
-Miscellaneous:
-  --with-defaults         Use defaults for prompted values.
-  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --without-elf           use elf libraries
+  --with-nl               use libnl to get netlink data (linux only).
+  --with-libwrap=LIBPATH  Compile in libwrap (tcp_wrappers) support.
+  --with-zlib=DIR         use libz in DIR
+  --with-bzip2=DIR        use libbz2 in DIR
+  --with-mnttab="/etc/mnttab"
+                          Mount table location. The default is to autodetect
+                          this.
+  --with-mysql            Include support for MySQL.
   --with-pic              try to use only PIC/non-PIC objects [default=use
                           both]
-  --with-tags[=TAGS]
-                          include additional configurations [automatic]
-  --without-elf           use elf libraries
-  --with-libwrap=LIBPATH  Compile in libwrap (tcp_wrappers) support.
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-sysroot=DIR Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).
 
 Some influential environment variables:
   CC          C compiler command
   CFLAGS      C compiler flags
   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
               nonstandard directory <lib dir>
-  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
-              headers in a nonstandard directory <include dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
   CPP         C preprocessor
-  CXX         C++ compiler command
-  CXXFLAGS    C++ compiler flags
-  CXXCPP      C++ preprocessor
-  F77         Fortran 77 compiler command
-  FFLAGS      Fortran 77 compiler flags
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
 Report bugs to <net-snmp-coders@lists.sourceforge.net>.
 _ACEOF
+ac_status=$?
 fi
 
 if test "$ac_init_help" = "recursive"; then
   # If there are subdirs, report their specific --help.
-  ac_popdir=`pwd`
   for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d $ac_dir || continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
     ac_builddir=.
 
-if test "$ac_dir" != .; then
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-  # A "../" for each directory in $ac_dir_suffix.
-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-else
-  ac_dir_suffix= ac_top_builddir=
-fi
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
 
 case $srcdir in
-  .)  # No --srcdir option.  We are building in place.
+  .)  # We are building in place.
     ac_srcdir=.
-    if test -z "$ac_top_builddir"; then
-       ac_top_srcdir=.
-    else
-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-    fi ;;
-  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
     ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir ;;
-  *) # Relative path.
-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
 esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
 
-# Do not use `cd foo && pwd` to compute absolute paths, because
-# the directories may not exist.
-case `pwd` in
-.) ac_abs_builddir="$ac_dir";;
-*)
-  case "$ac_dir" in
-  .) ac_abs_builddir=`pwd`;;
-  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-  *) ac_abs_builddir=`pwd`/"$ac_dir";;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_builddir=${ac_top_builddir}.;;
-*)
-  case ${ac_top_builddir}. in
-  .) ac_abs_top_builddir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_srcdir=$ac_srcdir;;
-*)
-  case $ac_srcdir in
-  .) ac_abs_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_srcdir=$ac_top_srcdir;;
-*)
-  case $ac_top_srcdir in
-  .) ac_abs_top_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-  esac;;
-esac
-
-    cd $ac_dir
-    # Check for guested configure; otherwise get Cygnus style configure.
-    if test -f $ac_srcdir/configure.gnu; then
-      echo
-      $SHELL $ac_srcdir/configure.gnu  --help=recursive
-    elif test -f $ac_srcdir/configure; then
-      echo
-      $SHELL $ac_srcdir/configure  --help=recursive
-    elif test -f $ac_srcdir/configure.ac ||
-	   test -f $ac_srcdir/configure.in; then
-      echo
-      $ac_configure --help
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
     else
-      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi
-    cd $ac_popdir
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
   done
 fi
 
-test -n "$ac_init_help" && exit 0
+test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Net-SNMP configure 5.4.4
-generated by GNU Autoconf 2.59
+Net-SNMP configure 5.7.3.rc1
+generated by GNU Autoconf 2.68
 
-Copyright (C) 2003 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
-  exit 0
+  exit
 fi
-exec 5>config.log
-cat >&5 <<_ACEOF
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ---------------------------------------------------- ##
+## Report this to net-snmp-coders@lists.sourceforge.net ##
+## ---------------------------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+
+# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
+# ----------------------------------------------------
+# Tries to find if the field MEMBER exists in type AGGR, after including
+# INCLUDES, setting cache variable VAR accordingly.
+ac_fn_c_check_member ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+$as_echo_n "checking for $2.$3... " >&6; }
+if eval \${$4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$5
+int
+main ()
+{
+static $2 ac_aggr;
+if (sizeof ac_aggr.$3)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$4=yes"
+else
+  eval "$4=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$4
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_member
+
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if test "$cross_compiling" = yes; then
+    # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid; break
+else
+  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+			if test $ac_lo -le $ac_mid; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=$ac_mid; break
+else
+  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+			if test $ac_mid -le $ac_hi; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid
+else
+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (($2) < 0)
+    {
+      long int i = longval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+  ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+  fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_compute_int
+
+# ac_fn_c_find_intX_t LINENO BITS VAR
+# -----------------------------------
+# Finds a signed integer type with width BITS, setting cache variable VAR
+# accordingly.
+ac_fn_c_find_intX_t ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5
+$as_echo_n "checking for int$2_t... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+     # Order is important - never check a type that is potentially smaller
+     # than half of the expected target width.
+     for ac_type in int$2_t 'int' 'long int' \
+	 'long long int' 'short int' 'signed char'; do
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+	     enum { N = $2 / 2 - 1 };
+int
+main ()
+{
+static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+	        enum { N = $2 / 2 - 1 };
+int
+main ()
+{
+static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1)
+		 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  case $ac_type in #(
+  int$2_t) :
+    eval "$3=yes" ;; #(
+  *) :
+    eval "$3=\$ac_type" ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       if eval test \"x\$"$3"\" = x"no"; then :
+
+else
+  break
+fi
+     done
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_find_intX_t
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+	 return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+	    return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
+
+# ac_fn_c_find_uintX_t LINENO BITS VAR
+# ------------------------------------
+# Finds an unsigned integer type with width BITS, setting cache variable VAR
+# accordingly.
+ac_fn_c_find_uintX_t ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
+$as_echo_n "checking for uint$2_t... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+     # Order is important - never check a type that is potentially smaller
+     # than half of the expected target width.
+     for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \
+	 'unsigned long long int' 'unsigned short int' 'unsigned char'; do
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  case $ac_type in #(
+  uint$2_t) :
+    eval "$3=yes" ;; #(
+  *) :
+    eval "$3=\$ac_type" ;;
+esac
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       if eval test \"x\$"$3"\" = x"no"; then :
+
+else
+  break
+fi
+     done
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_find_uintX_t
+
+# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
+# ---------------------------------------------
+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
+# accordingly.
+ac_fn_c_check_decl ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  as_decl_name=`echo $2|sed 's/ *(.*//'`
+  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+#ifndef $as_decl_name
+#ifdef __cplusplus
+  (void) $as_decl_use;
+#else
+  (void) $as_decl_name;
+#endif
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_decl
+cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by Net-SNMP $as_me 5.4.4, which was
-generated by GNU Autoconf 2.59.  Invocation command line was
+It was created by Net-SNMP $as_me 5.7.3.rc1, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
 
 _ACEOF
+exec 5>>config.log
 {
 cat <<_ASUNAME
 ## --------- ##
@@ -1470,7 +2929,7 @@
 /bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
 /usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
 /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
 /bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
 /usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
 /bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
@@ -1482,8 +2941,9 @@
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  echo "PATH: $as_dir"
-done
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
 
 } >&5
 
@@ -1505,7 +2965,6 @@
 ac_configure_args=
 ac_configure_args0=
 ac_configure_args1=
-ac_sep=
 ac_must_keep_next=false
 for ac_pass in 1 2
 do
@@ -1516,13 +2975,13 @@
     -q | -quiet | --quiet | --quie | --qui | --qu | --q \
     | -silent | --silent | --silen | --sile | --sil)
       continue ;;
-    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
-      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
     case $ac_pass in
-    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
     2)
-      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      as_fn_append ac_configure_args1 " '$ac_arg'"
       if test $ac_must_keep_next = true; then
 	ac_must_keep_next=false # Got value, back to normal.
       else
@@ -1538,104 +2997,115 @@
 	  -* ) ac_must_keep_next=true ;;
 	esac
       fi
-      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
-      # Get rid of the leading space.
-      ac_sep=" "
+      as_fn_append ac_configure_args " '$ac_arg'"
       ;;
     esac
   done
 done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
 
 # When interrupted or exit'd, cleanup temporary files, and complete
 # config.log.  We remove comments because anyway the quotes in there
 # would cause problems or look ugly.
-# WARNING: Be sure not to use single quotes in there, as some shells,
-# such as our DU 5.0 friend, will then `close' the trap.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
 trap 'exit_status=$?
   # Save into config.log some information that might help in debugging.
   {
     echo
 
-    cat <<\_ASBOX
-## ---------------- ##
+    $as_echo "## ---------------- ##
 ## Cache variables. ##
-## ---------------- ##
-_ASBOX
+## ---------------- ##"
     echo
     # The following way of writing the cache mishandles newlines in values,
-{
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
   (set) 2>&1 |
-    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
-    *ac_space=\ *)
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
       sed -n \
-	"s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
-      ;;
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
     *)
-      sed -n \
-	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
       ;;
-    esac;
-}
+    esac |
+    sort
+)
     echo
 
-    cat <<\_ASBOX
-## ----------------- ##
+    $as_echo "## ----------------- ##
 ## Output variables. ##
-## ----------------- ##
-_ASBOX
+## ----------------- ##"
     echo
     for ac_var in $ac_subst_vars
     do
-      eval ac_val=$`echo $ac_var`
-      echo "$ac_var='"'"'$ac_val'"'"'"
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
     done | sort
     echo
 
     if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------- ##
-## Output files. ##
-## ------------- ##
-_ASBOX
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
       echo
       for ac_var in $ac_subst_files
       do
-	eval ac_val=$`echo $ac_var`
-	echo "$ac_var='"'"'$ac_val'"'"'"
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
       done | sort
       echo
     fi
 
     if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
+      $as_echo "## ----------- ##
 ## confdefs.h. ##
-## ----------- ##
-_ASBOX
+## ----------- ##"
       echo
-      sed "/^$/d" confdefs.h | sort
+      cat confdefs.h
       echo
     fi
     test "$ac_signal" != 0 &&
-      echo "$as_me: caught signal $ac_signal"
-    echo "$as_me: exit $exit_status"
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
   } >&5
-  rm -f core *.core &&
-  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
     exit $exit_status
-     ' 0
+' 0
 for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
 done
 ac_signal=0
 
 # confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo >confdefs.h
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
 
 # Predefined preprocessor variables.
 
@@ -1643,112 +3113,137 @@
 #define PACKAGE_NAME "$PACKAGE_NAME"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_TARNAME "$PACKAGE_TARNAME"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_VERSION "$PACKAGE_VERSION"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_STRING "$PACKAGE_STRING"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
 _ACEOF
 
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
 
 # Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
-  if test "x$prefix" != xNONE; then
-    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-  else
-    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-  fi
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
 fi
-for ac_site_file in $CONFIG_SITE; do
-  if test -r "$ac_site_file"; then
-    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-echo "$as_me: loading site script $ac_site_file" >&6;}
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
     sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file"
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
   fi
 done
 
 if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special
-  # files actually), so we avoid doing that.
-  if test -f "$cache_file"; then
-    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
     case $cache_file in
-      [\\/]* | ?:[\\/]* ) . $cache_file;;
-      *)                      . ./$cache_file;;
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
     esac
   fi
 else
-  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
 
 # Check that the precious variables saved in the cache have kept the same
 # value.
 ac_cache_corrupted=false
-for ac_var in `(set) 2>&1 |
-	       sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+for ac_var in $ac_precious_vars; do
   eval ac_old_set=\$ac_cv_env_${ac_var}_set
   eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
-  eval ac_new_val="\$ac_env_${ac_var}_value"
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
   case $ac_old_set,$ac_new_set in
     set,)
-      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
     *)
       if test "x$ac_old_val" != "x$ac_new_val"; then
-	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
-echo "$as_me:   former value:  $ac_old_val" >&2;}
-	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
-echo "$as_me:   current value: $ac_new_val" >&2;}
-	ac_cache_corrupted=:
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
       fi;;
   esac
   # Pass precious variables to config.status.
   if test "$ac_new_set" = set; then
     case $ac_new_val in
-    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
-      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
     *) ac_arg=$ac_var=$ac_new_val ;;
     esac
     case " $ac_configure_args " in
       *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
     esac
   fi
 done
 if $ac_cache_corrupted; then
-  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-   { (exit 1); exit 1; }; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
 fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -1762,31 +3257,7 @@
 
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-          ac_config_headers="$ac_config_headers include/net-snmp/net-snmp-config.h"
+ac_config_headers="$ac_config_headers include/net-snmp/net-snmp-config.h"
 
 
 
@@ -1796,570 +3267,137 @@
 #
 # save the configure arguments
 #
+
 cat >>confdefs.h <<_ACEOF
 #define NETSNMP_CONFIGURE_OPTIONS "$ac_configure_args"
 _ACEOF
 
-CONFIGURE_OPTIONS="\"$ac_configure_args"\"
+CONFIGURE_OPTIONS="\"$ac_configure_args\""
 
 
-#
-# Compilation setup
-#
+##
+## Recommended structure:
+##
+#     information on the package
+#     checks for programs
+#     checks for libraries
+#     checks for header files
+#     checks for types
+#     checks for structures
+#     checks for compiler characteristics
+#     checks for library functions
+#     checks for system services
 
-# Check whether --with-cc or --without-cc was given.
-if test "${with_cc+set}" = set; then
-  withval="$with_cc"
-  CC=$with_cc;export CC
-fi;
+# -*- autoconf -*-
+#########################################
+##
+#   Command-line processing - --with/--enable
+##
+#########################################
+
+##
+#   System: Compiler settings
+##
 
 
-# Check whether --with-linkcc or --without-linkcc was given.
-if test "${with_linkcc+set}" = set; then
-  withval="$with_linkcc"
-  LINKCC=$with_linkcc;export LINKCC
-fi;
+# Check whether --with-cc was given.
+if test "${with_cc+set}" = set; then :
+  withval=$with_cc; CC=$with_cc;export CC
+fi
 
 
-# Check whether --with-ar or --without-ar was given.
-if test "${with_ar+set}" = set; then
-  withval="$with_ar"
-  AR=$with_ar; export AR
-fi;
+
+# Check whether --with-linkcc was given.
+if test "${with_linkcc+set}" = set; then :
+  withval=$with_linkcc; LINKCC=$with_linkcc;export LINKCC
+fi
 
 
-# Check whether --with-endianness or --without-endianness was given.
-if test "${with_endianness+set}" = set; then
-  withval="$with_endianness"
-  if test $with_endianness != "big" -a $with_endianness != "little" ; then
-       { { echo "$as_me:$LINENO: error: Endianness must be big or little, not \"$with_endianness\"." >&5
-echo "$as_me: error: Endianness must be big or little, not \"$with_endianness\"." >&2;}
-   { (exit 1); exit 1; }; };
+
+# Check whether --with-ar was given.
+if test "${with_ar+set}" = set; then :
+  withval=$with_ar; AR=$with_ar; export AR
+fi
+
+
+
+# Check whether --with-endianness was given.
+if test "${with_endianness+set}" = set; then :
+  withval=$with_endianness; if test $with_endianness != "big" -a $with_endianness != "little" ; then
+       as_fn_error $? "Endianness must be big or little, not \"$with_endianness\"." "$LINENO" 5;
      fi
 
-fi;
-
-
-# Check whether --with-cflags or --without-cflags was given.
-if test "${with_cflags+set}" = set; then
-  withval="$with_cflags"
-  CFLAGS=$with_cflags; export CFLAGS
-fi;
-
-
-# Check whether --with-ldflags or --without-ldflags was given.
-if test "${with_ldflags+set}" = set; then
-  withval="$with_ldflags"
-  LDFLAGS=$with_ldflags; export LDFLAGS
-fi;
-
-# Check whether --enable-as-needed or --disable-as-needed was given.
-if test "${enable_as_needed+set}" = set; then
-  enableval="$enable_as_needed"
-
-fi;
-
-
-# Check whether --with-libs or --without-libs was given.
-if test "${with_libs+set}" = set; then
-  withval="$with_libs"
-  LIBS=$with_libs; export LIBS
-fi;
-
-# Check whether --enable-silent-libtool or --disable-silent-libtool was given.
-if test "${enable_silent_libtool+set}" = set; then
-  enableval="$enable_silent_libtool"
-  LIBTOOLFLAGS=--silent
-fi;
-
-
-
-# Check whether --with-install-prefix or --without-install-prefix was given.
-if test "${with_install_prefix+set}" = set; then
-  withval="$with_install_prefix"
-  INSTALL_PREFIX="$withval"
-fi;
-
-if test "x$INSTALL_PREFIX" = "xyes" ; then
-  { { echo "$as_me:$LINENO: error: --with-install-prefix requires an argument" >&5
-echo "$as_me: error: --with-install-prefix requires an argument" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test "x$INSTALL_PREFIX" = "xno" ; then
-  INSTALL_PREFIX=""
 fi
 
 
-# check for errors in args that run after module processing here, so
-# they fail before module processing...
-# Check whether --enable-libwrap or --disable-libwrap was given.
-if test "${enable_libwrap+set}" = set; then
-  enableval="$enable_libwrap"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-libwrap/--without-libwrap instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-libwrap/--without-libwrap instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-  # Check whether --enable-zlib or --disable-zlib was given.
-if test "${enable_zlib+set}" = set; then
-  enableval="$enable_zlib"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-zlib/--without-zlib instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-zlib/--without-zlib instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
 
-# Check whether --enable-mini_agent or --disable-mini_agent was given.
-if test "${enable_mini_agent+set}" = set; then
-  enableval="$enable_mini_agent"
-
-fi;
-if test "x$enable_mini_agent" = "xyes"; then
-    mini_agent="yes"
-else
-    mini_agent="no"
+# Check whether --with-cflags was given.
+if test "${with_cflags+set}" = set; then :
+  withval=$with_cflags; CFLAGS=$with_cflags; export CFLAGS
 fi
 
-# Check whether --with-mini_agent or --without-mini_agent was given.
-if test "${with_mini_agent+set}" = set; then
-  withval="$with_mini_agent"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-mini-agent/--disable-mini-agent instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-mini-agent/--disable-mini-agent instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
 
-# Check whether --with-miniagent or --without-miniagent was given.
-if test "${with_miniagent+set}" = set; then
-  withval="$with_miniagent"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-mini-agent/--disable-mini-agent instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-mini-agent/--disable-mini-agent instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-# Check whether --enable-miniagent or --disable-miniagent was given.
-if test "${enable_miniagent+set}" = set; then
-  enableval="$enable_miniagent"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-mini-agent/--disable-mini-agent instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-mini-agent/--disable-mini-agent instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
 
-# Check whether --enable-agent or --disable-agent was given.
-if test "${enable_agent+set}" = set; then
-  enableval="$enable_agent"
+# Check whether --with-ldflags was given.
+if test "${with_ldflags+set}" = set; then :
+  withval=$with_ldflags; LDFLAGS=$with_ldflags; export LDFLAGS
+fi
 
-fi;
-if test "x$enable_agent" != "xno"; then
-   SNMPD='snmpd$(EXEEXT)'
-   MAINSUBS="$MAINSUBS agent"
-   TRAPLIBS='$(TRAPDWITHAGENT)'
-   USETRAPLIBS='$(USEAGENTLIBS)'
-else
-   SNMPD=""
-   # we still need/want the agentlibs (for subagents, e.g. snmptrapd)
-   MAINSUBS="$MAINSUBS agent"
-   # building snmptrapd w/o agentlibs doesn't work atm
-   #TRAPLIBS='$(TRAPDWITHOUTAGENT)'
-   #USETRAPLIBS='$(USELIBS)'
-   TRAPLIBS='$(TRAPDWITHAGENT)'
-   USETRAPLIBS='$(USEAGENTLIBS)'
+
+# Check whether --enable-as-needed was given.
+if test "${enable_as_needed+set}" = set; then :
+  enableval=$enable_as_needed;
+fi
+
+
+
+# Check whether --with-libs was given.
+if test "${with_libs+set}" = set; then :
+  withval=$with_libs; LIBS=$with_libs; export LIBS
+fi
+
+
+# Check whether --enable-silent-libtool was given.
+if test "${enable_silent_libtool+set}" = set; then :
+  enableval=$enable_silent_libtool; LIBTOOLFLAGS=--silent
 fi
 
 
 
 
-# Check whether --with-agent or --without-agent was given.
-if test "${with_agent+set}" = set; then
-  withval="$with_agent"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-agent/--disable-agent instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-agent/--disable-agent instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+##
+#   System: Library settings
+##
 
-# Check whether --enable-applications or --disable-applications was given.
-if test "${enable_applications+set}" = set; then
-  enableval="$enable_applications"
 
-fi;
-if test "x$enable_applications" != "xno"; then
-   MAINSUBS="$MAINSUBS apps"
-fi
-# Common mistakes
-
-# Check whether --with-applications or --without-applications was given.
-if test "${with_applications+set}" = set; then
-  withval="$with_applications"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-applications/--disable-applications instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-applications/--disable-applications instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-manuals or --disable-manuals was given.
-if test "${enable_manuals+set}" = set; then
-  enableval="$enable_manuals"
-
-fi;
-if test "x$enable_manuals" != "xno"; then
-   MAINSUBS="$MAINSUBS man"
+# Check whether --with-dmalloc was given.
+if test "${with_dmalloc+set}" = set; then :
+  withval=$with_dmalloc;
 fi
 
-# Check whether --with-manuals or --without-manuals was given.
-if test "${with_manuals+set}" = set; then
-  withval="$with_manuals"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-manuals/--disable-manuals instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-manuals/--disable-manuals instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-scripts or --disable-scripts was given.
-if test "${enable_scripts+set}" = set; then
-  enableval="$enable_scripts"
-
-fi;
-if test "x$enable_scripts" != "xno"; then
-   MAINSUBS="$MAINSUBS local"
-fi
-
-# Check whether --with-scripts or --without-scripts was given.
-if test "${with_scripts+set}" = set; then
-  withval="$with_scripts"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-scripts/--disable-scripts instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-scripts/--disable-scripts instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-mibs or --disable-mibs was given.
-if test "${enable_mibs+set}" = set; then
-  enableval="$enable_mibs"
-
-fi;
-if test "x$enable_mibs" != "xno"; then
-   MAINSUBS="$MAINSUBS mibs"
-fi
-# with-mibs is valid too, but means something else
-
-
-echo "$as_me:$LINENO: checking what to build and install" >&5
-echo $ECHO_N "checking what to build and install... $ECHO_C" >&6
-echo "$as_me:$LINENO: result: $MAINSUBS" >&5
-echo "${ECHO_T}$MAINSUBS" >&6
-
-# Check whether --enable-mib-loading or --disable-mib-loading was given.
-if test "${enable_mib_loading+set}" = set; then
-  enableval="$enable_mib_loading"
-
-fi;
-if test "x$enable_mib_loading" = "xno"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_DISABLE_MIB_LOADING 1
-_ACEOF
-
-fi
-
-# Check whether --with-mib-loading or --without-mib-loading was given.
-if test "${with_mib_loading+set}" = set; then
-  withval="$with_mib_loading"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-mib-loading/--disable-mib-loading instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-mib-loading/--disable-mib-loading instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-#
-SNMP_VERSIONS=""
-# Check whether --enable-snmpv1 or --disable-snmpv1 was given.
-if test "${enable_snmpv1+set}" = set; then
-  enableval="$enable_snmpv1"
-
-fi;
-if test "x$enable_snmpv1" = "xno"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_DISABLE_SNMPV1 1
-_ACEOF
-
-else
-  SNMP_VERSIONS="$SNMP_VERSIONS 1"
-fi
-
-# Check whether --with-snmpv1 or --without-snmpv1 was given.
-if test "${with_snmpv1+set}" = set; then
-  withval="$with_snmpv1"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-snmpv1/--disable-snmpv1 instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-snmpv1/--disable-snmpv1 instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-snmpv2c or --disable-snmpv2c was given.
-if test "${enable_snmpv2c+set}" = set; then
-  enableval="$enable_snmpv2c"
-
-fi;
-if test "x$enable_snmpv2c" = "xno"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_DISABLE_SNMPV2C 1
-_ACEOF
-
-else
-  SNMP_VERSIONS="$SNMP_VERSIONS 2c"
-fi
-
-# Check whether --with-snmpv2c or --without-snmpv2c was given.
-if test "${with_snmpv2c+set}" = set; then
-  withval="$with_snmpv2c"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-snmpv2c/--disable-snmpv2c instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-snmpv2c/--disable-snmpv2c instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-SNMP_VERSIONS="$SNMP_VERSIONS 3"
-
-  cat >> configure-summary << EOF
-  SNMP Versions Supported:   $SNMP_VERSIONS
-EOF
-
-
-# Check whether --enable-set-support or --disable-set-support was given.
-if test "${enable_set_support+set}" = set; then
-  enableval="$enable_set_support"
-
-fi;
-if test "x$enable_set_support" = "xno"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_DISABLE_SET_SUPPORT 1
-_ACEOF
-
-fi
-
-# Check whether --with-set-support or --without-set-support was given.
-if test "${with_set_support+set}" = set; then
-  withval="$with_set_support"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-set-support/--disable-set-support instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-set-support/--disable-set-support instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-des or --disable-des was given.
-if test "${enable_des+set}" = set; then
-  enableval="$enable_des"
-
-fi;
-if test "x$enable_des" = "xno"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_DISABLE_DES 1
-_ACEOF
-
-fi
-
-# Check whether --with-des or --without-des was given.
-if test "${with_des+set}" = set; then
-  withval="$with_des"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-des/--disable-des instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-des/--disable-des instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-privacy or --disable-privacy was given.
-if test "${enable_privacy+set}" = set; then
-  enableval="$enable_privacy"
-
-fi;
-if test "x$enable_privacy" != "xno"; then
-  cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_ENABLE_SCAPI_AUTHPRIV 1
-_ACEOF
-
-fi
-
-# Check whether --with-privacy or --without-privacy was given.
-if test "${with_privacy+set}" = set; then
-  withval="$with_privacy"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-privacy/--disable-privacy instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-privacy/--disable-privacy instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-md5 or --disable-md5 was given.
-if test "${enable_md5+set}" = set; then
-  enableval="$enable_md5"
-
-fi;
-if test "x$enable_md5" = "xno"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_DISABLE_MD5 1
-_ACEOF
-
-fi
-
-# Check whether --with-md5 or --without-md5 was given.
-if test "${with_md5+set}" = set; then
-  withval="$with_md5"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-md5/--disable-md5 instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-md5/--disable-md5 instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-internal-md5 or --disable-internal-md5 was given.
-if test "${enable_internal_md5+set}" = set; then
-  enableval="$enable_internal_md5"
-
-fi;
-if test "x$enable_internal_md5" = "xyes"; then
-  if test "x$enable_md5" = "xno"; then
-    { { echo "$as_me:$LINENO: error: You can not specify both --enable-internal-md5 and --disable-md5" >&5
-echo "$as_me: error: You can not specify both --enable-internal-md5 and --disable-md5" >&2;}
-   { (exit 1); exit 1; }; }
-  else
-    cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_USE_INTERNAL_MD5 1
-_ACEOF
-
-  fi
-fi
-
-# Check whether --with-internal-md5 or --without-internal-md5 was given.
-if test "${with_internal_md5+set}" = set; then
-  withval="$with_internal_md5"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-internal-md5/--disable-internal-md5 instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-internal-md5/--disable-internal-md5 instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-ipv6 or --disable-ipv6 was given.
-if test "${enable_ipv6+set}" = set; then
-  enableval="$enable_ipv6"
-  if test "x$enable_ipv6" = "xyes"; then
-      cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_ENABLE_IPV6 1
-_ACEOF
-
-    fi
-fi;
-
-# Check whether --with-ipv6 or --without-ipv6 was given.
-if test "${with_ipv6+set}" = set; then
-  withval="$with_ipv6"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-ipv6/--disable-ipv6 instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-ipv6/--disable-ipv6 instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-local-smux or --disable-local-smux was given.
-if test "${enable_local_smux+set}" = set; then
-  enableval="$enable_local_smux"
-  if test "x$enable_local_smux" = "xyes"; then
-      cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_ENABLE_LOCAL_SMUX 1
-_ACEOF
-
-    fi
-fi;
-
-# Check whether --with-local-smux or --without-local-smux was given.
-if test "${with_local_smux+set}" = set; then
-  withval="$with_local_smux"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-local-smux/--disable-local-smux instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-local-smux/--disable-local-smux instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-debugging or --disable-debugging was given.
-if test "${enable_debugging+set}" = set; then
-  enableval="$enable_debugging"
-  cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_ALWAYS_DEBUG 1
-_ACEOF
-
-fi;
-
-# Check whether --with-debugging or --without-debugging was given.
-if test "${with_debugging+set}" = set; then
-  withval="$with_debugging"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-debugging/--disable-debugging instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-debugging/--disable-debugging instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-developer or --disable-developer was given.
-if test "${enable_developer+set}" = set; then
-  enableval="$enable_developer"
-  developer=yes
-fi;
-
-# Check whether --with-developer or --without-developer was given.
-if test "${with_developer+set}" = set; then
-  withval="$with_developer"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-developer/--disable-developer instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-developer/--disable-developer instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-if test "x$enable_debugging" = "xno"; then
-    cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_NO_DEBUGGING 1
-_ACEOF
-
+   # Check whether --enable-dmalloc was given.
+if test "${enable_dmalloc+set}" = set; then :
+  enableval=$enable_dmalloc; as_fn_error $? "Invalid option. Use --with-dmalloc/--without-dmalloc instead" "$LINENO" 5
 fi
 
 
-# Check whether --with-dmalloc or --without-dmalloc was given.
-if test "${with_dmalloc+set}" = set; then
-  withval="$with_dmalloc"
-  if test "x$withval" = "xyes"; then
-      LIBS="$LIBS -ldmalloc"
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_DMALLOC_H 1
-_ACEOF
 
-    elif test -d "$withval"; then
+# Check whether --with-efence was given.
+if test "${with_efence+set}" = set; then :
+  withval=$with_efence; use_efence="$withval"
+fi
 
-  if test "x$withval" != x -a -d $withval; then
-     if test -d $withval/lib; then
-       LDFLAGS="-L$withval/lib $LDFLAGS"
-     fi
-     if test -d $withval/include; then
-	CPPFLAGS="-I$withval/include $CPPFLAGS"
-     fi
-  fi
+   # Check whether --enable-efence was given.
+if test "${enable_efence+set}" = set; then :
+  enableval=$enable_efence; as_fn_error $? "Invalid option. Use --with-efence/--without-efence instead" "$LINENO" 5
+fi
 
-      LIBS="$LIBS -ldmalloc"
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_DMALLOC_H 1
-_ACEOF
-
-    fi
-
-fi;
-
-# Check whether --enable-dmalloc or --disable-dmalloc was given.
-if test "${enable_dmalloc+set}" = set; then
-  enableval="$enable_dmalloc"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-dmalloc/--without-dmalloc instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-dmalloc/--without-dmalloc instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-
-# Check whether --with-efence or --without-efence was given.
-if test "${with_efence+set}" = set; then
-  withval="$with_efence"
-  use_efence="$withval"
-fi;
-# Check whether --enable-efence or --disable-efence was given.
-if test "${enable_efence+set}" = set; then
-  enableval="$enable_efence"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-efence/--without-efence instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-efence/--without-efence instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
 
 tryrsaref=no
 
-# Check whether --with-rsaref or --without-rsaref was given.
-if test "${with_rsaref+set}" = set; then
-  withval="$with_rsaref"
-  if test "x$withval" = "xyes"; then
+# Check whether --with-rsaref was given.
+if test "${with_rsaref+set}" = set; then :
+  withval=$with_rsaref; if test "x$withval" = "xyes"; then
       tryrsaref=yes
     elif test "x$withval" = "xno"; then
       tryrsaref=no
@@ -2376,27 +3414,32 @@
 
       tryrsaref=yes
     fi
-fi;
-# Check whether --enable-rsaref or --disable-rsaref was given.
-if test "${enable_rsaref+set}" = set; then
-  enableval="$enable_rsaref"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-rsaref/--without-rsaref instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-rsaref/--without-rsaref instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+fi
+
+   # Check whether --enable-rsaref was given.
+if test "${enable_rsaref+set}" = set; then :
+  enableval=$enable_rsaref; as_fn_error $? "Invalid option. Use --with-rsaref/--without-rsaref instead" "$LINENO" 5
+fi
+
 
 tryopenssl=defaultyes
 askedopenssl=no
 
-# Check whether --with-openssl or --without-openssl was given.
-if test "${with_openssl+set}" = set; then
-  withval="$with_openssl"
-  if test "x$withval" = "xyes"; then
+# Check whether --with-openssl was given.
+if test "${with_openssl+set}" = set; then :
+  withval=$with_openssl; 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
+      if test -d "$withval/lib/MinGW"; then
+        LDFLAGS="-L$withval/lib/MinGW $LDFLAGS"
+        CPPFLAGS="-I$withval/include $CPPFLAGS"
+      else
 
   if test "x$withval" != x -a -d $withval; then
      if test -d $withval/lib; then
@@ -2407,10 +3450,17 @@
      fi
   fi
 
+      fi
       tryopenssl=yes
       askedopenssl=yes
     fi
-fi;
+fi
+
+   # Check whether --enable-openssl was given.
+if test "${enable_openssl+set}" = set; then :
+  enableval=$enable_openssl; as_fn_error $? "Invalid option. Use --with-openssl/--without-openssl instead" "$LINENO" 5
+fi
+
 if test "x$tryopenssl" = "xdefaultyes"; then
 
   if test "x/usr/local/ssl" != x -a -d /usr/local/ssl; then
@@ -2424,226 +3474,23 @@
 
       tryopenssl=yes
 fi
-# Check whether --enable-openssl or --disable-openssl was given.
-if test "${enable_openssl+set}" = set; then
-  enableval="$enable_openssl"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-openssl/--without-openssl instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-openssl/--without-openssl instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
 
-# Check whether --with-ssl or --without-ssl was given.
-if test "${with_ssl+set}" = set; then
-  withval="$with_ssl"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-openssl/--without-openssl instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-openssl/--without-openssl instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-# Check whether --enable-ssl or --disable-ssl was given.
-if test "${enable_ssl+set}" = set; then
-  enableval="$enable_ssl"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-openssl/--without-openssl instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-openssl/--without-openssl instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-trykrb5=defaultyes
-askedkrb5=no
-
-# Check whether --with-krb5 or --without-krb5 was given.
-if test "${with_krb5+set}" = set; then
-  withval="$with_krb5"
-  if test "x$withval" = "xyes"; then
-      trykrb5=yes
-      askedkrb5=yes
-      krb5path=undef
-    elif test "x$withval" = "xno"; then
-      trykrb5=no
-      krb5path=undef
-    elif test -d "$withval"; then
-      trykrb5=yes
-      askedkrb5=yes
-      krb5path=$withval
-    fi
-fi;
-if test "x$trykrb5" = "xdefaultyes"; then
-      trykrb5=yes
-      krb5path=/usr/kerberos
-fi
-# Check whether --enable-krb5 or --disable-krb5 was given.
-if test "${enable_krb5+set}" = set; then
-  enableval="$enable_krb5"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-krb5/--without-krb5 instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-krb5/--without-krb5 instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-
-# Check whether --with-rpm or --without-rpm was given.
-if test "${with_rpm+set}" = set; then
-  withval="$with_rpm"
-
-fi;
-# Check whether --enable-rpm or --disable-rpm was given.
-if test "${enable_rpm+set}" = set; then
-  enableval="$enable_rpm"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-rpm/--without-rpm instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-rpm/--without-rpm instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-agentx-dom-sock-only or --disable-agentx-dom-sock-only was given.
-if test "${enable_agentx_dom_sock_only+set}" = set; then
-  enableval="$enable_agentx_dom_sock_only"
-  cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_AGENTX_DOM_SOCK_ONLY 1
-_ACEOF
-
-fi;
-
-# Check whether --with-agentx-dom-sock-only or --without-agentx-dom-sock-only was given.
-if test "${with_agentx_dom_sock_only+set}" = set; then
-  withval="$with_agentx_dom_sock_only"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-agentx-dom-sock-only/--disable-agentx-dom-sock-only instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-agentx-dom-sock-only/--disable-agentx-dom-sock-only instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-snmptrapd-subagent or --disable-snmptrapd-subagent was given.
-if test "${enable_snmptrapd_subagent+set}" = set; then
-  enableval="$enable_snmptrapd_subagent"
-
-fi;
-if test "x$enable_snmptrapd_subagent" = "xno"; then
-  cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_SNMPTRAPD_DISABLE_AGENTX 1
-_ACEOF
-
+# Check whether --with-ssl was given.
+if test "${with_ssl+set}" = set; then :
+  withval=$with_ssl; as_fn_error $? "Invalid option. Use --with-openssl/--without-openssl instead" "$LINENO" 5
 fi
 
-# Check whether --with-snmptrapd-subagent or --without-snmptrapd-subagent was given.
-if test "${with_snmptrapd_subagent+set}" = set; then
-  withval="$with_snmptrapd_subagent"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-snmptrapd-subagent/--disable-snmptrapd-subagent instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-snmptrapd-subagent/--disable-snmptrapd-subagent instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-
-# Check whether --with-opaque-special-types or --without-opaque-special-types was given.
-if test "${with_opaque_special_types+set}" = set; then
-  withval="$with_opaque_special_types"
-
-fi;
-# Check whether --enable-opaque-special-types or --disable-opaque-special-types was given.
-if test "${enable_opaque_special_types+set}" = set; then
-  enableval="$enable_opaque_special_types"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-opaque-special-types/--without-opaque-special-types instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-opaque-special-types/--without-opaque-special-types instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-
-# Check whether --with-mibdirs or --without-mibdirs was given.
-if test "${with_mibdirs+set}" = set; then
-  withval="$with_mibdirs"
-  NETSNMP_DEFAULT_MIBDIRS="$with_mibdirs"
-    cat >>confdefs.h <<_ACEOF
-#define NETSNMP_DEFAULT_MIBDIRS "$with_mibdirs"
-_ACEOF
-
-fi;
-# Check whether --enable-mibdirs or --disable-mibdirs was given.
-if test "${enable_mibdirs+set}" = set; then
-  enableval="$enable_mibdirs"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-mibdirs/--without-mibdirs instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-mibdirs/--without-mibdirs instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-
-# Check whether --with-mibs or --without-mibs was given.
-if test "${with_mibs+set}" = set; then
-  withval="$with_mibs"
-  NETSNMP_DEFAULT_MIBS="$with_mibs"
-fi;
-# enable-mibs is valid too, but means something else
-
-
-# Check whether --with-mibfiles or --without-mibfiles was given.
-if test "${with_mibfiles+set}" = set; then
-  withval="$with_mibfiles"
-  cat >>confdefs.h <<_ACEOF
-#define NETSNMP_DEFAULT_MIBFILES "$with_mibfiles"
-_ACEOF
-
-fi;
-# Check whether --enable-mibfiles or --disable-mibfiles was given.
-if test "${enable_mibfiles+set}" = set; then
-  enableval="$enable_mibfiles"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-mibfiles/--without-mibfiles instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-mibfiles/--without-mibfiles instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-mib-config-checking or --disable-mib-config-checking was given.
-if test "${enable_mib_config_checking+set}" = set; then
-  enableval="$enable_mib_config_checking"
-  with_mib_cfg_checks="yes"
-else
-  with_mib_cfg_checks="no"
-fi;
-
-# Check whether --with-mib-config-checking or --without-mib-config-checking was given.
-if test "${with_mib_config_checking+set}" = set; then
-  withval="$with_mib_config_checking"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-mib-config-checking/--disable-mib-config-checking instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-mib-config-checking/--disable-mib-config-checking instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-mib-config-debug or --disable-mib-config-debug was given.
-if test "${enable_mib_config_debug+set}" = set; then
-  enableval="$enable_mib_config_debug"
-  with_mib_cfg_debug="yes"
-else
-  with_mib_cfg_debug="no"
-fi;
-
-# Check whether --with-mib-config-checking or --without-mib-config-checking was given.
-if test "${with_mib_config_checking+set}" = set; then
-  withval="$with_mib_config_checking"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-mib-config-checking/--disable-mib-config-checking instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-mib-config-checking/--disable-mib-config-checking instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-mfd-rewrites or --disable-mfd-rewrites was given.
-if test "${enable_mfd_rewrites+set}" = set; then
-  enableval="$enable_mfd_rewrites"
-
-fi;
-if test "x$enable_mfd_rewrites" = "xyes"; then
-   cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_ENABLE_MFD_REWRITES 1
-_ACEOF
-
+# Check whether --enable-ssl was given.
+if test "${enable_ssl+set}" = set; then :
+  enableval=$enable_ssl; as_fn_error $? "Invalid option. Use --with-openssl/--without-openssl instead" "$LINENO" 5
 fi
 
-# Check whether --with-mfd-rewrites or --without-mfd-rewrites was given.
-if test "${with_mfd_rewrites+set}" = set; then
-  withval="$with_mfd_rewrites"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-mfd-rewrites/--disable-mfd-rewrites instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-mfd-rewrites/--disable-mfd-rewrites instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
 
 askedpkcs=no
 
-# Check whether --with-pkcs or --without-pkcs was given.
-if test "${with_pkcs+set}" = set; then
-  withval="$with_pkcs"
-  if test "x$withval" = "xyes"; then
+# Check whether --with-pkcs was given.
+if test "${with_pkcs+set}" = set; then :
+  withval=$with_pkcs; if test "x$withval" = "xyes"; then
       askedpkcs=yes
     elif test "x$withval" = "xno"; then
       askedpkcs=no
@@ -2660,396 +3507,1338 @@
 
       askedpkcs=yes
     fi
-fi;
-# Check whether --enable-pkcs or --disable-pkcs was given.
-if test "${enable_pkcs+set}" = set; then
-  enableval="$enable_pkcs"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-pkcs/--without-pkcs instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-pkcs/--without-pkcs instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+fi
 
-# Check whether --enable-testing-code or --disable-testing-code was given.
-if test "${enable_testing_code+set}" = set; then
-  enableval="$enable_testing_code"
-  cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_ENABLE_TESTING_CODE 1
+   # Check whether --enable-pkcs was given.
+if test "${enable_pkcs+set}" = set; then :
+  enableval=$enable_pkcs; as_fn_error $? "Invalid option. Use --with-pkcs/--without-pkcs instead" "$LINENO" 5
+fi
+
+
+trykrb5=defaultyes
+askedkrb5=no
+
+# Check whether --with-krb5 was given.
+if test "${with_krb5+set}" = set; then :
+  withval=$with_krb5; if test "x$withval" = "xyes"; then
+      trykrb5=yes
+      askedkrb5=yes
+      krb5path=undef
+    elif test "x$withval" = "xno"; then
+      trykrb5=no
+      krb5path=undef
+    elif test -d "$withval"; then
+      trykrb5=yes
+      askedkrb5=yes
+      krb5path=$withval
+    fi
+fi
+
+   # Check whether --enable-krb5 was given.
+if test "${enable_krb5+set}" = set; then :
+  enableval=$enable_krb5; as_fn_error $? "Invalid option. Use --with-krb5/--without-krb5 instead" "$LINENO" 5
+fi
+
+if test "x$trykrb5" = "xdefaultyes"; then
+      trykrb5=yes
+      krb5path=/usr/kerberos
+fi
+
+
+# Check whether --with-dnssec-local-validation was given.
+if test "${with_dnssec_local_validation+set}" = set; then :
+  withval=$with_dnssec_local_validation; want_dnssec=$withval
+else
+  want_dnssec=no
+fi
+
+# Check whether --enable-dnssec-local-validation was given.
+if test "${enable_dnssec_local_validation+set}" = set; then :
+  enableval=$enable_dnssec_local_validation; as_fn_error $? "Invalid option. Use --with-dnssec-local-validation/--without-dnssec-local-validation instead" "$LINENO" 5
+fi
+
+
+# Check whether --with-dnssec was given.
+if test "${with_dnssec+set}" = set; then :
+  withval=$with_dnssec; as_fn_error $? "Invalid option. Use --with-dnssec-local-validation/--without-dnssec-local-validation instead" "$LINENO" 5
+fi
+
+# Check whether --enable-dnssec was given.
+if test "${enable_dnssec+set}" = set; then :
+  enableval=$enable_dnssec; as_fn_error $? "Invalid option. Use --with-dnssec-local-validation/--without-dnssec-local-validation instead" "$LINENO" 5
+fi
+
+
+
+# Check whether --with-rpm was given.
+if test "${with_rpm+set}" = set; then :
+  withval=$with_rpm;
+fi
+
+   # Check whether --enable-rpm was given.
+if test "${enable_rpm+set}" = set; then :
+  enableval=$enable_rpm; as_fn_error $? "Invalid option. Use --with-rpm/--without-rpm instead" "$LINENO" 5
+fi
+
+
+
+##
+#   Project: Build configuration settings
+##
+
+#       Install prefix
+#
+
+# Check whether --with-install-prefix was given.
+if test "${with_install_prefix+set}" = set; then :
+  withval=$with_install_prefix; INSTALL_PREFIX="$withval"
+fi
+
+
+if test "x$INSTALL_PREFIX" = "xyes" ; then
+  as_fn_error $? "--with-install-prefix requires an argument" "$LINENO" 5
+fi
+if test "x$INSTALL_PREFIX" = "xno" ; then
+  INSTALL_PREFIX=""
+fi
+
+
+
+#
+#   Subsystems to build:
+#       Library
+#
+FEATUREHEADERS="library/features.h"
+FTMAINSUBS=""
+
+#
+#       Agent
+#
+# Check whether --enable-agent was given.
+if test "${enable_agent+set}" = set; then :
+  enableval=$enable_agent;
+fi
+
+
+# Check whether --with-agent was given.
+if test "${with_agent+set}" = set; then :
+  withval=$with_agent; as_fn_error $? "Invalid option. Use --enable-agent/--disable-agent instead" "$LINENO" 5
+fi
+
+if test "x$enable_agent" != "xno"; then
+   SNMPD='snmpd$(EXEEXT)'
+   MAINSUBS="$MAINSUBS agent"
+   FEATUREHEADERS="$FEATUREHEADERS agent/features-mibgroups.h agent/features.h"
+   FTMAINSUBS="agent $FTMAINSUBS"
+   TRAPLIBS='$(TRAPDWITHAGENT)'
+   USETRAPLIBS='$(USEAGENTLIBS)'
+else
+   SNMPD=""
+   # we still need/want the agentlibs (for subagents, e.g. snmptrapd)
+   MAINSUBS="$MAINSUBS agent"
+   # building snmptrapd w/o agentlibs doesn't work atm
+   #TRAPLIBS='$(TRAPDWITHOUTAGENT)'
+   #USETRAPLIBS='$(USELIBS)'
+   TRAPLIBS='$(TRAPDWITHAGENT)'
+   USETRAPLIBS='$(USEAGENTLIBS)'
+
+$as_echo "#define NETSNMP_DISABLE_AGENT 1" >>confdefs.h
+
+fi
+
+
+
+
+
+#       Applications
+#
+# Check whether --enable-applications was given.
+if test "${enable_applications+set}" = set; then :
+  enableval=$enable_applications;
+fi
+
+
+# Check whether --with-applications was given.
+if test "${with_applications+set}" = set; then :
+  withval=$with_applications; as_fn_error $? "Invalid option. Use --enable-applications/--disable-applications instead" "$LINENO" 5
+fi
+
+if test "x$enable_applications" != "xno"; then
+   MAINSUBS="$MAINSUBS apps"
+   FEATUREHEADERS="$FEATUREHEADERS features-snmpnetstat.h features-apps.h"
+   FTMAINSUBS="apps $FTMAINSUBS"
+else
+
+$as_echo "#define NETSNMP_DISABLE_APPS 1" >>confdefs.h
+
+fi
+
+#       Manual pages
+#
+# Check whether --enable-manuals was given.
+if test "${enable_manuals+set}" = set; then :
+  enableval=$enable_manuals;
+fi
+
+
+# Check whether --with-manuals was given.
+if test "${with_manuals+set}" = set; then :
+  withval=$with_manuals; as_fn_error $? "Invalid option. Use --enable-manuals/--disable-manuals instead" "$LINENO" 5
+fi
+
+if test "x$enable_manuals" != "xno"; then
+   MAINSUBS="$MAINSUBS man"
+fi
+
+#       Supporting scripts
+#
+# Check whether --enable-scripts was given.
+if test "${enable_scripts+set}" = set; then :
+  enableval=$enable_scripts;
+fi
+
+
+# Check whether --with-scripts was given.
+if test "${with_scripts+set}" = set; then :
+  withval=$with_scripts; as_fn_error $? "Invalid option. Use --enable-scripts/--disable-scripts instead" "$LINENO" 5
+fi
+
+if test "x$enable_scripts" != "xno"; then
+   MAINSUBS="$MAINSUBS local"
+fi
+
+#       MIB files
+#
+# Check whether --enable-mibs was given.
+if test "${enable_mibs+set}" = set; then :
+  enableval=$enable_mibs;
+fi
+
+if test "x$enable_mibs" != "xno"; then
+   MAINSUBS="$MAINSUBS mibs"
+fi
+# with-mibs is valid too, but means something else
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking what to build and install" >&5
+$as_echo_n "checking what to build and install... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAINSUBS" >&5
+$as_echo "$MAINSUBS" >&6; }
+
+
+#       MIB module validation (during "configure")
+#
+# Check whether --enable-mib-config-checking was given.
+if test "${enable_mib_config_checking+set}" = set; then :
+  enableval=$enable_mib_config_checking; if test "$enableval" = yes -o "$enableval" = no ; then
+     with_mib_cfg_checks="$enableval"
+   else
+     as_fn_error $? "Please use --enable/--disable-mib-config-checking" "$LINENO" 5
+   fi
+else
+  with_mib_cfg_checks="no"
+fi
+
+
+# Check whether --with-mib-config-checking was given.
+if test "${with_mib_config_checking+set}" = set; then :
+  withval=$with_mib_config_checking; as_fn_error $? "Invalid option. Use --enable-mib-config-checking/--disable-mib-config-checking instead" "$LINENO" 5
+fi
+
+
+# Check whether --enable-mib-config-debug was given.
+if test "${enable_mib_config_debug+set}" = set; then :
+  enableval=$enable_mib_config_debug; if test "$enableval" = yes -o "$enableval" = no ; then
+     with_mib_cfg_debug="$enableval"
+   else
+     as_fn_error $? "Please use --enable/--disable-mib-config-debug" "$LINENO" 5
+   fi
+else
+  with_mib_cfg_debug="no"
+fi
+
+
+# Check whether --with-mib-config-debug was given.
+if test "${with_mib_config_debug+set}" = set; then :
+  withval=$with_mib_config_debug; as_fn_error $? "Invalid option. Use --enable-mib-config-debug/--disable-mib-config-debug instead" "$LINENO" 5
+fi
+
+
+
+#       Version-specific features
+#
+# Check whether --enable-new-features was given.
+if test "${enable_new_features+set}" = set; then :
+  enableval=$enable_new_features;
+fi
+
+
+# Check whether --enable-old-features was given.
+if test "${enable_old_features+set}" = set; then :
+  enableval=$enable_old_features;
+fi
+
+
+
+# Check whether --with-features-of was given.
+if test "${with_features_of+set}" = set; then :
+  withval=$with_features_of;
+else
+  with_features_of=$PACKAGE_VERSION
+fi
+
+
+
+#       Manual prompting during "configure"
+#
+
+# Check whether --with-defaults was given.
+if test "${with_defaults+set}" = set; then :
+  withval=$with_defaults; if test "$withval" = yes -o "$withval" = no ; then
+     defaults="$withval"
+   else
+     as_fn_error $? "Please use --with/--without-defaults" "$LINENO" 5
+   fi
+else
+  defaults="no"
+fi
+
+   # Check whether --enable-defaults was given.
+if test "${enable_defaults+set}" = set; then :
+  enableval=$enable_defaults; as_fn_error $? "Invalid option. Use --with-defaults/--without-defaults instead" "$LINENO" 5
+fi
+
+
+
+#       UCD compatability
+#
+# Check whether --enable-ucd-snmp-compatibility was given.
+if test "${enable_ucd_snmp_compatibility+set}" = set; then :
+  enableval=$enable_ucd_snmp_compatibility;
+fi
+
+
+# Check whether --with-ucd-snmp-compatibility was given.
+if test "${with_ucd_snmp_compatibility+set}" = set; then :
+  withval=$with_ucd_snmp_compatibility; as_fn_error $? "Invalid option. Use --enable-ucd-snmp-compatibility/--disable-ucd-snmp-compatibility instead" "$LINENO" 5
+fi
+
+
+if test "x$enable_ucd_snmp_compatibility" = "xyes" ; then
+  installucdheaders=installucdheaders
+  installucdlibs=installucdlibs
+
+  cat >> configure-summary << EOF
+  UCD-SNMP compatability:     enabled
+EOF
+
+fi
+
+
+
+
+##
+#   Project: Library: MIB configuration settings
+##
+
+# Check whether --enable-mib-loading was given.
+if test "${enable_mib_loading+set}" = set; then :
+  enableval=$enable_mib_loading;
+fi
+
+
+# Check whether --with-mib-loading was given.
+if test "${with_mib_loading+set}" = set; then :
+  withval=$with_mib_loading; as_fn_error $? "Invalid option. Use --enable-mib-loading/--disable-mib-loading instead" "$LINENO" 5
+fi
+
+if test "x$enable_mib_loading" = "xno"; then
+
+$as_echo "#define NETSNMP_DISABLE_MIB_LOADING 1" >>confdefs.h
+
+fi
+
+
+# Check whether --with-mibdirs was given.
+if test "${with_mibdirs+set}" = set; then :
+  withval=$with_mibdirs; NETSNMP_DEFAULT_MIBDIRS="$with_mibdirs"
+
+cat >>confdefs.h <<_ACEOF
+#define NETSNMP_DEFAULT_MIBDIRS "$with_mibdirs"
 _ACEOF
 
-fi;
+fi
 
-# Check whether --with-testing-code or --without-testing-code was given.
-if test "${with_testing_code+set}" = set; then
-  withval="$with_testing_code"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-testing-code/--disable-testing-code instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-testing-code/--disable-testing-code instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --enable-reentrant or --disable-reentrant was given.
-if test "${enable_reentrant+set}" = set; then
-  enableval="$enable_reentrant"
-  with_res_locks="yes"
-else
-  with_res_locks="no"
-fi;
-
-# Check whether --with-reentrant or --without-reentrant was given.
-if test "${with_reentrant+set}" = set; then
-  withval="$with_reentrant"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-reentrant/--disable-reentrant instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-reentrant/--disable-reentrant instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+   # Check whether --enable-mibdirs was given.
+if test "${enable_mibdirs+set}" = set; then :
+  enableval=$enable_mibdirs; as_fn_error $? "Invalid option. Use --with-mibdirs/--without-mibdirs instead" "$LINENO" 5
+fi
 
 
-# Check whether --with-root-access or --without-root-access was given.
-if test "${with_root_access+set}" = set; then
-  withval="$with_root_access"
 
-fi;
-# Check whether --enable-root-access or --disable-root-access was given.
-if test "${enable_root_access+set}" = set; then
-  enableval="$enable_root_access"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-root-access/--without-root-access instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-root-access/--without-root-access instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+# Check whether --with-mibs was given.
+if test "${with_mibs+set}" = set; then :
+  withval=$with_mibs; NETSNMP_DEFAULT_MIBS="$with_mibs"
+fi
+
+# enable-mibs is valid too, but means something else
 
 
-# Check whether --with-kmem-usage or --without-kmem-usage was given.
-if test "${with_kmem_usage+set}" = set; then
-  withval="$with_kmem_usage"
+# Check whether --with-mibfiles was given.
+if test "${with_mibfiles+set}" = set; then :
+  withval=$with_mibfiles;
+cat >>confdefs.h <<_ACEOF
+#define NETSNMP_DEFAULT_MIBFILES "$with_mibfiles"
+_ACEOF
 
-fi;
-# Check whether --enable-kmem-usage or --disable-kmem-usage was given.
-if test "${enable_kmem_usage+set}" = set; then
-  enableval="$enable_kmem_usage"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-kmem-usage/--without-kmem-usage instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-kmem-usage/--without-kmem-usage instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+fi
+
+   # Check whether --enable-mibfiles was given.
+if test "${enable_mibfiles+set}" = set; then :
+  enableval=$enable_mibfiles; as_fn_error $? "Invalid option. Use --with-mibfiles/--without-mibfiles instead" "$LINENO" 5
+fi
 
 
-# Check whether --with-dummy-values or --without-dummy-values was given.
-if test "${with_dummy_values+set}" = set; then
-  withval="$with_dummy_values"
 
-fi;
-# Check whether --enable-dummy-values or --disable-dummy-values was given.
-if test "${enable_dummy_values+set}" = set; then
-  enableval="$enable_dummy_values"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-dummy-values/--without-dummy-values instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-dummy-values/--without-dummy-values instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+##
+#   Project: Library: Security configuration
+##
+
+# Check whether --enable-des was given.
+if test "${enable_des+set}" = set; then :
+  enableval=$enable_des;
+fi
 
 
-# Check whether --with-persistent-directory or --without-persistent-directory was given.
-if test "${with_persistent_directory+set}" = set; then
-  withval="$with_persistent_directory"
-  ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY="$with_persistent_directory"
-fi;
-# Check whether --enable-persistent-directory or --disable-persistent-directory was given.
-if test "${enable_persistent_directory+set}" = set; then
-  enableval="$enable_persistent_directory"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-persistent-directory/--without-persistent-directory instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-persistent-directory/--without-persistent-directory instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+# Check whether --with-des was given.
+if test "${with_des+set}" = set; then :
+  withval=$with_des; as_fn_error $? "Invalid option. Use --enable-des/--disable-des instead" "$LINENO" 5
+fi
 
-default_persistent_mask=077
+if test "x$enable_des" = "xno"; then
 
-# Check whether --with-persistent-mask or --without-persistent-mask was given.
-if test "${with_persistent_mask+set}" = set; then
-  withval="$with_persistent_mask"
+$as_echo "#define NETSNMP_DISABLE_DES 1" >>confdefs.h
 
-  if test "$withval" = yes; then
-    { { echo "$as_me:$LINENO: error:  Please provide a mask value " >&5
-echo "$as_me: error:  Please provide a mask value " >&2;}
-   { (exit 1); exit 1; }; };
+fi
+
+# Check whether --enable-privacy was given.
+if test "${enable_privacy+set}" = set; then :
+  enableval=$enable_privacy;
+fi
+
+
+# Check whether --with-privacy was given.
+if test "${with_privacy+set}" = set; then :
+  withval=$with_privacy; as_fn_error $? "Invalid option. Use --enable-privacy/--disable-privacy instead" "$LINENO" 5
+fi
+
+if test "x$enable_privacy" != "xno"; then
+
+$as_echo "#define NETSNMP_ENABLE_SCAPI_AUTHPRIV 1" >>confdefs.h
+
+fi
+
+# Check whether --enable-md5 was given.
+if test "${enable_md5+set}" = set; then :
+  enableval=$enable_md5;
+fi
+
+
+# Check whether --with-md5 was given.
+if test "${with_md5+set}" = set; then :
+  withval=$with_md5; as_fn_error $? "Invalid option. Use --enable-md5/--disable-md5 instead" "$LINENO" 5
+fi
+
+if test "x$enable_md5" = "xno"; then
+
+$as_echo "#define NETSNMP_DISABLE_MD5 1" >>confdefs.h
+
+fi
+
+# Check whether --enable-internal-md5 was given.
+if test "${enable_internal_md5+set}" = set; then :
+  enableval=$enable_internal_md5;
+fi
+
+
+# Check whether --with-internal-md5 was given.
+if test "${with_internal_md5+set}" = set; then :
+  withval=$with_internal_md5; as_fn_error $? "Invalid option. Use --enable-internal-md5/--disable-internal-md5 instead" "$LINENO" 5
+fi
+
+if test "x$enable_internal_md5" = "xyes"; then
+  if test "x$enable_md5" = "xno"; then
+    as_fn_error $? "You can not specify both --enable-internal-md5 and --disable-md5" "$LINENO" 5
+  else
+
+$as_echo "#define NETSNMP_USE_INTERNAL_MD5 1" >>confdefs.h
+
   fi
-  echo "$as_me:$LINENO: result: using default persistent mask $withval" >&5
-echo "${ECHO_T}using default persistent mask $withval" >&6
-  cat >>confdefs.h <<_ACEOF
+fi
+
+
+##
+#   Project: Library: Misc configuration
+##
+
+
+# Check whether --with-opaque-special-types was given.
+if test "${with_opaque_special_types+set}" = set; then :
+  withval=$with_opaque_special_types;
+fi
+
+   # Check whether --enable-opaque-special-types was given.
+if test "${enable_opaque_special_types+set}" = set; then :
+  enableval=$enable_opaque_special_types; as_fn_error $? "Invalid option. Use --with-opaque-special-types/--without-opaque-special-types instead" "$LINENO" 5
+fi
+
+# Only define if specifically chosen as --without (i.e., default to true).
+if test "x$with_opaque_special_types" != "xno"; then
+
+$as_echo "#define NETSNMP_WITH_OPAQUE_SPECIAL_TYPES 1" >>confdefs.h
+
+fi
+
+# Check whether --enable-ipv6 was given.
+if test "${enable_ipv6+set}" = set; then :
+  enableval=$enable_ipv6; if test "x$enable_ipv6" = "xyes"; then
+
+$as_echo "#define NETSNMP_ENABLE_IPV6 1" >>confdefs.h
+
+    fi
+fi
+
+
+# Check whether --with-ipv6 was given.
+if test "${with_ipv6+set}" = set; then :
+  withval=$with_ipv6; as_fn_error $? "Invalid option. Use --enable-ipv6/--disable-ipv6 instead" "$LINENO" 5
+fi
+
+
+
+# Check whether --with-logfile was given.
+if test "${with_logfile+set}" = set; then :
+  withval=$with_logfile; ac_cv_user_prompt_NETSNMP_LOGFILE="$with_logfile"
+fi
+
+   # Check whether --enable-logfile was given.
+if test "${enable_logfile+set}" = set; then :
+  enableval=$enable_logfile; as_fn_error $? "Invalid option. Use --with-logfile/--without-logfile instead" "$LINENO" 5
+fi
+
+if test "$ac_cv_user_prompt_NETSNMP_LOGFILE" = "no"; then
+    ac_cv_user_prompt_NETSNMP_LOGFILE="none"
+fi
+
+
+# Check whether --with-persistent-directory was given.
+if test "${with_persistent_directory+set}" = set; then :
+  withval=$with_persistent_directory; ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY="$with_persistent_directory"
+fi
+
+   # Check whether --enable-persistent-directory was given.
+if test "${enable_persistent_directory+set}" = set; then :
+  enableval=$enable_persistent_directory; as_fn_error $? "Invalid option. Use --with-persistent-directory/--without-persistent-directory instead" "$LINENO" 5
+fi
+
+
+
+# Check whether --with-persistent-mask was given.
+if test "${with_persistent_mask+set}" = set; then :
+  withval=$with_persistent_mask; if test `expr "X$withval" : 'X[0-7]*$'` -eq 4 ; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: using persistent mask $withval" >&5
+$as_echo "using persistent mask $withval" >&6; }
+     withval="0$withval"
+   else
+     as_fn_error $? "Please provide a three digit octal persistent mask value" "$LINENO" 5
+   fi
+else
+  withval=077
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: using default persistent mask $withval" >&5
+$as_echo "using default persistent mask $withval" >&6; }
+fi
+
+   # Check whether --enable-persistent-mask was given.
+if test "${enable_persistent_mask+set}" = set; then :
+  enableval=$enable_persistent_mask; as_fn_error $? "Invalid option. Use --with-persistent-mask/--without-persistent-mask instead" "$LINENO" 5
+fi
+
+
+cat >>confdefs.h <<_ACEOF
 #define NETSNMP_PERSISTENT_MASK $withval
 _ACEOF
 
 
-else
 
-  echo "$as_me:$LINENO: result: using default persistent mask $default_persistent_mask" >&5
-echo "${ECHO_T}using default persistent mask $default_persistent_mask" >&6
-  cat >>confdefs.h <<_ACEOF
-#define NETSNMP_PERSISTENT_MASK $default_persistent_mask
-_ACEOF
+# Check whether --with-copy_persistent_files was given.
+if test "${with_copy_persistent_files+set}" = set; then :
+  withval=$with_copy_persistent_files; ac_cv_user_prompt_COPY_PERSISTENT_FILES="$with_copy_persistent_files"
+fi
 
+   # Check whether --enable-copy_persistent_files was given.
+if test "${enable_copy_persistent_files+set}" = set; then :
+  enableval=$enable_copy_persistent_files; as_fn_error $? "Invalid option. Use --with-copy_persistent_files/--without-copy_persistent_files instead" "$LINENO" 5
+fi
 
-fi;
-# Check whether --enable-persistent-mask or --disable-persistent-mask was given.
-if test "${enable_persistent_mask+set}" = set; then
-  enableval="$enable_persistent_mask"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-persistent-mask instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-persistent-mask instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-
-# Check whether --with-copy_persistent_files or --without-copy_persistent_files was given.
-if test "${with_copy_persistent_files+set}" = set; then
-  withval="$with_copy_persistent_files"
-  ac_cv_user_prompt_COPY_PERSISTENT_FILES="$with_copy_persistent_files"
-fi;
-# Check whether --enable-copy_persistent_files or --disable-copy_persistent_files was given.
-if test "${enable_copy_persistent_files+set}" = set; then
-  enableval="$enable_copy_persistent_files"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-copy_persistent_files/--without-copy_persistent_files instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-copy_persistent_files/--without-copy_persistent_files instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
 
 default_temp_file_pattern="/tmp/snmpdXXXXXX"
 
-# Check whether --with-temp-file-pattern or --without-temp-file-pattern was given.
-if test "${with_temp_file_pattern+set}" = set; then
-  withval="$with_temp_file_pattern"
+# Check whether --with-temp-file-pattern was given.
+if test "${with_temp_file_pattern+set}" = set; then :
+  withval=$with_temp_file_pattern; if test `expr "X$withval" : ".*XXXXXX$"` -ne 0 ; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: using temporary file pattern $withval" >&5
+$as_echo "using temporary file pattern $withval" >&6; }
+   else
+     as_fn_error $? "temporary file pattens must end with 6 X's" "$LINENO" 5
+   fi
+else
+  withval="$default_temp_file_pattern"
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: using default temporary file pattern $withval" >&5
+$as_echo "using default temporary file pattern $withval" >&6; }
+fi
 
-  if test "$withval" = yes; then
-    { { echo "$as_me:$LINENO: error:  Please provide a pattern " >&5
-echo "$as_me: error:  Please provide a pattern " >&2;}
-   { (exit 1); exit 1; }; };
-  fi
-  echo "$as_me:$LINENO: result: using temporary file pattern $withval" >&5
-echo "${ECHO_T}using temporary file pattern $withval" >&6
+   # Check whether --enable-temp-file-pattern was given.
+if test "${enable_temp_file_pattern+set}" = set; then :
+  enableval=$enable_temp_file_pattern; as_fn_error $? "Invalid option. Use --with-temp-file-pattern/--without-temp-file-pattern instead" "$LINENO" 5
+fi
+
 
 cat >>confdefs.h <<_ACEOF
 #define NETSNMP_TEMP_FILE_PATTERN "$withval"
 _ACEOF
 
 
+
+##
+#   Project: Library: Version configuration
+##
+
+SNMP_VERSIONS=""
+# Check whether --enable-snmpv1 was given.
+if test "${enable_snmpv1+set}" = set; then :
+  enableval=$enable_snmpv1;
+fi
+
+
+# Check whether --with-snmpv1 was given.
+if test "${with_snmpv1+set}" = set; then :
+  withval=$with_snmpv1; as_fn_error $? "Invalid option. Use --enable-snmpv1/--disable-snmpv1 instead" "$LINENO" 5
+fi
+
+if test "x$enable_snmpv1" = "xno"; then
+
+$as_echo "#define NETSNMP_DISABLE_SNMPV1 1" >>confdefs.h
+
 else
+  SNMP_VERSIONS="$SNMP_VERSIONS 1"
+fi
 
-  echo "$as_me:$LINENO: result: using default temporary file pattern $default_temp_file_pattern" >&5
-echo "${ECHO_T}using default temporary file pattern $default_temp_file_pattern" >&6
-
-cat >>confdefs.h <<_ACEOF
-#define NETSNMP_TEMP_FILE_PATTERN "$default_temp_file_pattern"
-_ACEOF
+# Check whether --enable-snmpv2c was given.
+if test "${enable_snmpv2c+set}" = set; then :
+  enableval=$enable_snmpv2c;
+fi
 
 
-fi;
-# Check whether --enable-temp-file-pattern or --disable-temp-file-pattern was given.
-if test "${enable_temp_file_pattern+set}" = set; then
-  enableval="$enable_temp_file_pattern"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-temp-file-pattern instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-temp-file-pattern instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+# Check whether --with-snmpv2c was given.
+if test "${with_snmpv2c+set}" = set; then :
+  withval=$with_snmpv2c; as_fn_error $? "Invalid option. Use --enable-snmpv2c/--disable-snmpv2c instead" "$LINENO" 5
+fi
+
+if test "x$enable_snmpv2c" = "xno"; then
+
+$as_echo "#define NETSNMP_DISABLE_SNMPV2C 1" >>confdefs.h
+
+else
+  SNMP_VERSIONS="$SNMP_VERSIONS 2c"
+fi
+
+SNMP_VERSIONS="$SNMP_VERSIONS 3"
+
+  cat >> configure-summary << EOF
+  SNMP Versions Supported:   $SNMP_VERSIONS
+EOF
+
+
+
+# Check whether --with-default-snmp-version was given.
+if test "${with_default_snmp_version+set}" = set; then :
+  withval=$with_default_snmp_version; ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION="$with_default_snmp_version"
+fi
+
+   # Check whether --enable-default-snmp-version was given.
+if test "${enable_default_snmp_version+set}" = set; then :
+  enableval=$enable_default_snmp_version; as_fn_error $? "Invalid option. Use --with-default-snmp-version/--without-default-snmp-version instead" "$LINENO" 5
+fi
+
+
+# we test this now and later as well.  we test it now so configure can die
+# early on with an error rather than waiting till the end of the script.
+case "${ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION-3}" in
+  [123]) ;;
+  2c) ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION=2 ;;
+  *)
+    as_fn_error $? "Illegal version number.  Only 1, 2 (for SNMPv2c) and 3 are supported." "$LINENO" 5
+    ;;
+esac
+
+
+##
+#   Project: Library: Transport modules
+##
+
+
+# Check whether --with-transports was given.
+if test "${with_transports+set}" = set; then :
+  withval=$with_transports;
+fi
+
+
+# Check whether --with-out_transports was given.
+if test "${with_out_transports+set}" = set; then :
+  withval=$with_out_transports;
+fi
+
+
+#
+# Catch common mistakes in transport options
+#
+
+# Check whether --with-transport was given.
+if test "${with_transport+set}" = set; then :
+  withval=$with_transport; as_fn_error $? "Invalid option. Use --with-transports/--without-transports instead" "$LINENO" 5
+fi
+
+
+# Check whether --with-out-transport was given.
+if test "${with_out_transport+set}" = set; then :
+  withval=$with_out_transport; as_fn_error $? "Invalid option. Use --with-out-transports/--without-out-transports instead" "$LINENO" 5
+fi
+
+
+
+##
+#   Project: Library: Security modules
+##
+
+
+# Check whether --with-security-modules was given.
+if test "${with_security_modules+set}" = set; then :
+  withval=$with_security_modules;
+fi
+
+   # Check whether --enable-security-modules was given.
+if test "${enable_security_modules+set}" = set; then :
+  enableval=$enable_security_modules; as_fn_error $? "Invalid option. Use --with-security-modules/--without-security-modules instead" "$LINENO" 5
+fi
+
+
+
+# Check whether --with-out-security-modules was given.
+if test "${with_out_security_modules+set}" = set; then :
+  withval=$with_out_security_modules;
+fi
+
+   # Check whether --enable-out-security-modules was given.
+if test "${enable_out_security_modules+set}" = set; then :
+  enableval=$enable_out_security_modules; as_fn_error $? "Invalid option. Use --with-out-security-modules/--without-out-security-modules instead" "$LINENO" 5
+fi
+
+
+
+##
+#   Project: Library: Developer-related settings
+##
+
+# Check whether --enable-debugging was given.
+if test "${enable_debugging+set}" = set; then :
+  enableval=$enable_debugging; $as_echo "#define NETSNMP_ALWAYS_DEBUG 1" >>confdefs.h
+
+fi
+
+
+# Check whether --with-debugging was given.
+if test "${with_debugging+set}" = set; then :
+  withval=$with_debugging; as_fn_error $? "Invalid option. Use --enable-debugging/--disable-debugging instead" "$LINENO" 5
+fi
+
+if test "x$enable_debugging" = "xno"; then
+    $as_echo "#define NETSNMP_NO_DEBUGGING 1" >>confdefs.h
+
+fi
+
+# Check whether --enable-developer was given.
+if test "${enable_developer+set}" = set; then :
+  enableval=$enable_developer; if test "$enableval" = yes ; then
+     developer="yes"
+   elif test "$enableval" != no ; then
+     as_fn_error $? "Please use --enable/--disable-developer" "$LINENO" 5
+   else
+     developer="no"
+   fi
+fi
+
+
+# Check whether --with-developer was given.
+if test "${with_developer+set}" = set; then :
+  withval=$with_developer; as_fn_error $? "Invalid option. Use --enable-developer/--disable-developer instead" "$LINENO" 5
+fi
+
+
+# Check whether --enable-testing-code was given.
+if test "${enable_testing_code+set}" = set; then :
+  enableval=$enable_testing_code; if test "$enableval" = yes ; then
+
+$as_echo "#define NETSNMP_ENABLE_TESTING_CODE 1" >>confdefs.h
+
+   elif test "$enableval" != no ; then
+     as_fn_error $? "Please use --enable/--disable-testing-code" "$LINENO" 5
+   fi
+fi
+
+
+# Check whether --with-testing-code was given.
+if test "${with_testing_code+set}" = set; then :
+  withval=$with_testing_code; as_fn_error $? "Invalid option. Use --enable-testing-code/--disable-testing-code instead" "$LINENO" 5
+fi
+
+
+# Check whether --enable-reentrant was given.
+if test "${enable_reentrant+set}" = set; then :
+  enableval=$enable_reentrant; if test "$enableval" = yes -o "$enableval" = no ; then
+     with_res_locks="$enableval"
+   else
+     as_fn_error $? "Please use --enable/--disable-reentrant" "$LINENO" 5
+   fi
+else
+  with_res_locks="no"
+fi
+
+
+# Check whether --with-reentrant was given.
+if test "${with_reentrant+set}" = set; then :
+  withval=$with_reentrant; as_fn_error $? "Invalid option. Use --enable-reentrant/--disable-reentrant instead" "$LINENO" 5
+fi
+
+
+# Check whether --enable-deprecated was given.
+if test "${enable_deprecated+set}" = set; then :
+  enableval=$enable_deprecated;
+fi
+
+
+# Check whether --with-deprecated was given.
+if test "${with_deprecated+set}" = set; then :
+  withval=$with_deprecated; as_fn_error $? "Invalid option. Use --enable-deprecated/--disable-deprecated instead" "$LINENO" 5
+fi
+
+if test "$enable_deprecated" = no ; then
+
+$as_echo "#define NETSNMP_NO_DEPRECATED_FUNCTIONS 1" >>confdefs.h
+
+fi
+
+
+
+##
+#   Project: Agent configuration settings
+##
+
+
+# Check whether --with-root-access was given.
+if test "${with_root_access+set}" = set; then :
+  withval=$with_root_access;
+fi
+
+   # Check whether --enable-root-access was given.
+if test "${enable_root_access+set}" = set; then :
+  enableval=$enable_root_access; as_fn_error $? "Invalid option. Use --with-root-access/--without-root-access instead" "$LINENO" 5
+fi
+
+# Only define if specifically chosen as --without (i.e., default to true).
+if test "x$with_root_access" = "xno"; then
+
+$as_echo "#define NETSNMP_NO_ROOT_ACCESS 1" >>confdefs.h
+
+fi
+
+
+# Check whether --with-kmem-usage was given.
+if test "${with_kmem_usage+set}" = set; then :
+  withval=$with_kmem_usage;
+fi
+
+   # Check whether --enable-kmem-usage was given.
+if test "${enable_kmem_usage+set}" = set; then :
+  enableval=$enable_kmem_usage; as_fn_error $? "Invalid option. Use --with-kmem-usage/--without-kmem-usage instead" "$LINENO" 5
+fi
+
+# Only define if specifically chosen as --without (i.e., default to true).
+if test "x$with_kmem_usage" = "xno"; then
+
+$as_echo "#define NETSNMP_NO_KMEM_USAGE 1" >>confdefs.h
+
+fi
+
+
+# Check whether --with-dummy-values was given.
+if test "${with_dummy_values+set}" = set; then :
+  withval=$with_dummy_values;
+fi
+
+   # Check whether --enable-dummy-values was given.
+if test "${enable_dummy_values+set}" = set; then :
+  enableval=$enable_dummy_values; as_fn_error $? "Invalid option. Use --with-dummy-values/--without-dummy-values instead" "$LINENO" 5
+fi
+
+# Define unless specifically suppressed (i.e., option defaults to false).
+if test "x$with_dummy_values" != "xyes"; then
+
+$as_echo "#define NETSNMP_NO_DUMMY_VALUES 1" >>confdefs.h
+
+fi
+
+# Check whether --enable-set-support was given.
+if test "${enable_set_support+set}" = set; then :
+  enableval=$enable_set_support;
+fi
+
+
+# Check whether --with-set-support was given.
+if test "${with_set_support+set}" = set; then :
+  withval=$with_set_support; as_fn_error $? "Invalid option. Use --enable-set-support/--disable-set-support instead" "$LINENO" 5
+fi
+
+if test "x$enable_set_support" = "xno"; then
+
+$as_echo "#define NETSNMP_DISABLE_SET_SUPPORT 1" >>confdefs.h
+
+fi
+
+
+
+# Check whether --with-sys_contact was given.
+if test "${with_sys_contact+set}" = set; then :
+  withval=$with_sys_contact; ac_cv_user_prompt_NETSNMP_SYS_CONTACT="$with_sys_contact"
+fi
+
+   # Check whether --enable-sys_contact was given.
+if test "${enable_sys_contact+set}" = set; then :
+  enableval=$enable_sys_contact; as_fn_error $? "Invalid option. Use --with-sys_contact/--without-sys_contact instead" "$LINENO" 5
+fi
+
+
+
+# Check whether --with-sys_location was given.
+if test "${with_sys_location+set}" = set; then :
+  withval=$with_sys_location; ac_cv_user_prompt_NETSNMP_SYS_LOC="$with_sys_location"
+fi
+
+   # Check whether --enable-sys_location was given.
+if test "${enable_sys_location+set}" = set; then :
+  enableval=$enable_sys_location; as_fn_error $? "Invalid option. Use --with-sys_location/--without-sys_location instead" "$LINENO" 5
+fi
+
+
+
+
+##
+#   Project: Agent: Extensibility configuration
+##
+
+# Check whether --enable-local-smux was given.
+if test "${enable_local_smux+set}" = set; then :
+  enableval=$enable_local_smux; if test "x$enable_local_smux" = "xyes"; then
+
+$as_echo "#define NETSNMP_ENABLE_LOCAL_SMUX 1" >>confdefs.h
+
+    fi
+fi
+
+
+# Check whether --with-local-smux was given.
+if test "${with_local_smux+set}" = set; then :
+  withval=$with_local_smux; as_fn_error $? "Invalid option. Use --enable-local-smux/--disable-local-smux instead" "$LINENO" 5
+fi
+
+
+# Check whether --enable-agentx-dom-sock-only was given.
+if test "${enable_agentx_dom_sock_only+set}" = set; then :
+  enableval=$enable_agentx_dom_sock_only;
+$as_echo "#define NETSNMP_AGENTX_DOM_SOCK_ONLY 1" >>confdefs.h
+
+fi
+
+
+# Check whether --with-agentx-dom-sock-only was given.
+if test "${with_agentx_dom_sock_only+set}" = set; then :
+  withval=$with_agentx_dom_sock_only; as_fn_error $? "Invalid option. Use --enable-agentx-dom-sock-only/--disable-agentx-dom-sock-only instead" "$LINENO" 5
+fi
+
+
+# Check whether --enable-snmptrapd-subagent was given.
+if test "${enable_snmptrapd_subagent+set}" = set; then :
+  enableval=$enable_snmptrapd_subagent;
+fi
+
+
+# Check whether --with-snmptrapd-subagent was given.
+if test "${with_snmptrapd_subagent+set}" = set; then :
+  withval=$with_snmptrapd_subagent; as_fn_error $? "Invalid option. Use --enable-snmptrapd-subagent/--disable-snmptrapd-subagent instead" "$LINENO" 5
+fi
+
+if test "x$enable_snmptrapd_subagent" = "xno"; then
+
+$as_echo "#define NETSNMP_SNMPTRAPD_DISABLE_AGENTX 1" >>confdefs.h
+
+fi
 
 default_agentx_socket="/var/agentx/master"
 
-# Check whether --with-agentx-socket or --without-agentx-socket was given.
-if test "${with_agentx_socket+set}" = set; then
-  withval="$with_agentx_socket"
-
+# Check whether --with-agentx-socket was given.
+if test "${with_agentx_socket+set}" = set; then :
+  withval=$with_agentx_socket;
   if test "$withval" = yes; then
-    { { echo "$as_me:$LINENO: error:  Please provide a full path " >&5
-echo "$as_me: error:  Please provide a full path " >&2;}
-   { (exit 1); exit 1; }; };
+    as_fn_error $? " Please provide a full path " "$LINENO" 5;
   fi
-  echo "$as_me:$LINENO: result: using AgentX socket $withval" >&5
-echo "${ECHO_T}using AgentX socket $withval" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: using AgentX socket $withval" >&5
+$as_echo "using AgentX socket $withval" >&6; }
+
+else
+
+  withval=$default_agentx_socket
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: using default AgentX socket $default_agentx_socket" >&5
+$as_echo "using default AgentX socket $default_agentx_socket" >&6; }
+
+fi
+
+   # Check whether --enable-agentx-socket was given.
+if test "${enable_agentx_socket+set}" = set; then :
+  enableval=$enable_agentx_socket; as_fn_error $? "Invalid option. Use --with-agentx-socket/--without-agentx-socket instead" "$LINENO" 5
+fi
+
 
 cat >>confdefs.h <<_ACEOF
 #define NETSNMP_AGENTX_SOCKET "$withval"
 _ACEOF
 
 
-else
-
-  echo "$as_me:$LINENO: result: using default AgentX socket $default_agentx_socket" >&5
-echo "${ECHO_T}using default AgentX socket $default_agentx_socket" >&6
-
-cat >>confdefs.h <<_ACEOF
-#define NETSNMP_AGENTX_SOCKET "$default_agentx_socket"
-_ACEOF
-
-
-fi;
-# Check whether --enable-agentx-socket or --disable-agentx-socket was given.
-if test "${enable_agentx_socket+set}" = set; then
-  enableval="$enable_agentx_socket"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-agentx-socket instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-agentx-socket instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-
-# Check whether --with-default-snmp-version or --without-default-snmp-version was given.
-if test "${with_default_snmp_version+set}" = set; then
-  withval="$with_default_snmp_version"
-  ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION="$with_default_snmp_version"
-fi;
-# Check whether --enable-default-snmp-version or --disable-default-snmp-version was given.
-if test "${enable_default_snmp_version+set}" = set; then
-  enableval="$enable_default_snmp_version"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-default-snmp-version/--without-default-snmp-version instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-default-snmp-version/--without-default-snmp-version instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# we test this now and later as well.  we test it now so configure can die
-# early on with an error rather than waiting till the end of the script.
-if test "x$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" != "x"; then
-  if test "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" = "2c"; then
-    ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION="2"
-  fi
-  if test "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" != "1" -a "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" != "2" -a "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" != "3"; then
-    { { echo "$as_me:$LINENO: error: Illegal version number passed to --with-default-snmp-version" >&5
-echo "$as_me: error: Illegal version number passed to --with-default-snmp-version" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
-fi
-
-
-# Check whether --with-sys_contact or --without-sys_contact was given.
-if test "${with_sys_contact+set}" = set; then
-  withval="$with_sys_contact"
-  ac_cv_user_prompt_NETSNMP_SYS_CONTACT="$with_sys_contact"
-fi;
-# Check whether --enable-sys_contact or --disable-sys_contact was given.
-if test "${enable_sys_contact+set}" = set; then
-  enableval="$enable_sys_contact"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-sys-contact/--without-sys-contact instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-sys-contact/--without-sys-contact instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-
-# Check whether --with-sys_location or --without-sys_location was given.
-if test "${with_sys_location+set}" = set; then
-  withval="$with_sys_location"
-  ac_cv_user_prompt_NETSNMP_SYS_LOC="$with_sys_location"
-fi;
-# Check whether --enable-sys_location or --disable-sys_location was given.
-if test "${enable_sys_location+set}" = set; then
-  enableval="$enable_sys_location"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-sys-location/--without-sys-location instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-sys-location/--without-sys-location instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-
-# Check whether --with-logfile or --without-logfile was given.
-if test "${with_logfile+set}" = set; then
-  withval="$with_logfile"
-  ac_cv_user_prompt_NETSNMP_LOGFILE="$with_logfile"
-fi;
-# Check whether --enable-logfile or --disable-logfile was given.
-if test "${enable_logfile+set}" = set; then
-  enableval="$enable_logfile"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-logfile/--without-logfile instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-logfile/--without-logfile instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-if test "$ac_cv_user_prompt_NETSNMP_LOGFILE" = "no"; then
-    ac_cv_user_prompt_NETSNMP_LOGFILE="none"
-fi
-
-
-# Check whether --with-transports or --without-transports was given.
-if test "${with_transports+set}" = set; then
-  withval="$with_transports"
-
-fi;
-
-# Check whether --with-out_transports or --without-out_transports was given.
-if test "${with_out_transports+set}" = set; then
-  withval="$with_out_transports"
-
-fi;
-
 #
-# Catch common mistakes in transport options
+# feature addition/removal and minimialist support
 #
+FEATURE_ADD_FLAGS=""
 
-# Check whether --with-transport or --without-transport was given.
-if test "${with_transport+set}" = set; then
-  withval="$with_transport"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-transports/--without-transports instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-transports/--without-transports instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --with-out-transport or --without-out-transport was given.
-if test "${with_out_transport+set}" = set; then
-  withval="$with_out_transport"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-out-transports/--without-out-transports instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-out-transports/--without-out-transports instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-#
-# security modules
-#
-
-
-# Check whether --with-security-modules or --without-security-modules was given.
-if test "${with_security_modules+set}" = set; then
-  withval="$with_security_modules"
-
-fi;
-# Check whether --enable-security-modules or --disable-security-modules was given.
-if test "${enable_security_modules+set}" = set; then
-  enableval="$enable_security_modules"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-security-modules/--without-security-modules instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-security-modules/--without-security-modules instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-#
-# mib modules
-#
-
-
-# Check whether --with-mib_modules or --without-mib_modules was given.
-if test "${with_mib_modules+set}" = set; then
-  withval="$with_mib_modules"
-
-fi;
-# Check whether --enable-mib_modules or --disable-mib_modules was given.
-if test "${enable_mib_modules+set}" = set; then
-  enableval="$enable_mib_modules"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-mib-modules/--without-mib-modules instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-mib-modules/--without-mib-modules instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-
-# Check whether --with-out_mib_modules or --without-out_mib_modules was given.
-if test "${with_out_mib_modules+set}" = set; then
-  withval="$with_out_mib_modules"
-
-fi;
-# Check whether --enable-out_mib_modules or --disable-out_mib_modules was given.
-if test "${enable_out_mib_modules+set}" = set; then
-  enableval="$enable_out_mib_modules"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-out-mib-modules/--without-out-mib-modules instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-out-mib-modules/--without-out-mib-modules instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-
-#
-
-# Check whether --with-enterprise-oid or --without-enterprise-oid was given.
-if test "${with_enterprise_oid+set}" = set; then
-  withval="$with_enterprise_oid"
-
+# Check whether --with-features was given.
+if test "${with_features+set}" = set; then :
+  withval=$with_features;
   if test "$withval" = yes; then
-    { { echo "$as_me:$LINENO: error:  Please provide a value for the enterprise number " >&5
-echo "$as_me: error:  Please provide a value for the enterprise number " >&2;}
-   { (exit 1); exit 1; }; };
+    as_fn_error $? " Please provide a list of features " "$LINENO" 5;
+  fi
+  FEATURE_ADD_FLAGS="--add $withval"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: adding in features: $withval" >&5
+$as_echo "adding in features: $withval" >&6; }
+
+fi
+
+   # Check whether --enable-features was given.
+if test "${enable_features+set}" = set; then :
+  enableval=$enable_features; as_fn_error $? "Invalid option. Use --with-features/--without-features instead" "$LINENO" 5
+fi
+
+
+
+
+FEATURE_REMOVE_FLAGS=""
+
+# Check whether --with-out-features was given.
+if test "${with_out_features+set}" = set; then :
+  withval=$with_out_features;
+  if test "$withval" = yes; then
+    as_fn_error $? " Please provide a list of features " "$LINENO" 5;
+  fi
+  FEATURE_REMOVE_FLAGS="--remove $withval"
+  FEATURETARGS="features"
+
+$as_echo "#define NETSNMP_MINIMAL_CODE 1" >>confdefs.h
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: removing features: $withval" >&5
+$as_echo "removing features: $withval" >&6; }
+
+fi
+
+   # Check whether --enable-out-features was given.
+if test "${enable_out_features+set}" = set; then :
+  enableval=$enable_out_features; as_fn_error $? "Invalid option. Use --with-out-features/--without-out-features instead" "$LINENO" 5
+fi
+
+
+
+
+# Catch common mistakes
+
+# Check whether --with-feature was given.
+if test "${with_feature+set}" = set; then :
+  withval=$with_feature; as_fn_error $? "Invalid option. Use --with-features/--without-features instead" "$LINENO" 5
+fi
+
+
+# Check whether --with-out-feature was given.
+if test "${with_out_feature+set}" = set; then :
+  withval=$with_out_feature; as_fn_error $? "Invalid option. Use --with-out-features/--without-out-features instead" "$LINENO" 5
+fi
+
+
+FEATURETARGS=""
+# Check whether --enable-minimalist was given.
+if test "${enable_minimalist+set}" = set; then :
+  enableval=$enable_minimalist;
+fi
+
+
+# Check whether --with-minimalist was given.
+if test "${with_minimalist+set}" = set; then :
+  withval=$with_minimalist; as_fn_error $? "Invalid option. Use --enable-minimalist/--disable-minimalist instead" "$LINENO" 5
+fi
+
+if test "x$enable_minimalist" = "xyes"; then
+   # we'll assume the mini agent is desired here as well
+   mini_agent="yes"
+   FEATURETARGS="features"
+
+   # needed to bootstrap later checks
+   echo "" > include/net-snmp/feature-details.h
+
+$as_echo "#define NETSNMP_MINIMAL_CODE 1" >>confdefs.h
+
+else
+   FEATUREHEADERS=""
+fi
+
+# Check whether --with-minimalist was given.
+if test "${with_minimalist+set}" = set; then :
+  withval=$with_minimalist; as_fn_error $? "Invalid option. Use --enable-minimalist/--disable-minimalist instead" "$LINENO" 5
+fi
+
+
+
+
+# Check whether --enable-notify-only was given.
+if test "${enable_notify_only+set}" = set; then :
+  enableval=$enable_notify_only;
+fi
+
+
+# Check whether --with-notify-only was given.
+if test "${with_notify_only+set}" = set; then :
+  withval=$with_notify_only; as_fn_error $? "Invalid option. Use --enable-notify-only/--disable-notify-only instead" "$LINENO" 5
+fi
+
+if test "x$enable_notify_only" = "xyes"; then
+
+$as_echo "#define NETSNMP_NOTIFY_ONLY 1" >>confdefs.h
+
+fi
+
+# Check whether --with-notify-only was given.
+if test "${with_notify_only+set}" = set; then :
+  withval=$with_notify_only; as_fn_error $? "Invalid option. Use --enable-notify-only/--disable-notify-only instead" "$LINENO" 5
+fi
+
+# Check whether --enable-notifyonly was given.
+if test "${enable_notifyonly+set}" = set; then :
+  enableval=$enable_notifyonly; as_fn_error $? "Invalid option. Use --enable-notify-only/--disable-notify-only instead" "$LINENO" 5
+fi
+
+
+# Check whether --enable-no-listen was given.
+if test "${enable_no_listen+set}" = set; then :
+  enableval=$enable_no_listen;
+fi
+
+
+# Check whether --with-no-listen was given.
+if test "${with_no_listen+set}" = set; then :
+  withval=$with_no_listen; as_fn_error $? "Invalid option. Use --enable-no-listen/--disable-no-listen instead" "$LINENO" 5
+fi
+
+if test "x$enable_no_listen" = "xyes" -o "x$enable_notify_only" = "xyes"; then
+   enable_no_listen="yes"
+
+$as_echo "#define NETSNMP_NO_LISTEN_SUPPORT 1" >>confdefs.h
+
+fi
+
+# Check whether --with-no-listen was given.
+if test "${with_no_listen+set}" = set; then :
+  withval=$with_no_listen; as_fn_error $? "Invalid option. Use --enable-no-listen/--disable-no-listen instead" "$LINENO" 5
+fi
+
+# Check whether --enable-nolisten was given.
+if test "${enable_nolisten+set}" = set; then :
+  enableval=$enable_nolisten; as_fn_error $? "Invalid option. Use --enable-no-listen/--disable-no-listen instead" "$LINENO" 5
+fi
+
+
+# Check whether --enable-read-only was given.
+if test "${enable_read_only+set}" = set; then :
+  enableval=$enable_read_only;
+fi
+
+
+# Check whether --with-read-only was given.
+if test "${with_read_only+set}" = set; then :
+  withval=$with_read_only; as_fn_error $? "Invalid option. Use --enable-read-only/--disable-read-only instead" "$LINENO" 5
+fi
+
+if test "x$enable_read_only" = "xyes" -o "x$enable_notify_only" = "xyes" ; then
+   enable_read_only="yes"
+
+$as_echo "#define NETSNMP_NO_WRITE_SUPPORT 1" >>confdefs.h
+
+fi
+
+# Check whether --with-read-only was given.
+if test "${with_read_only+set}" = set; then :
+  withval=$with_read_only; as_fn_error $? "Invalid option. Use --enable-read-only/--disable-read-only instead" "$LINENO" 5
+fi
+
+# Check whether --enable-readonly was given.
+if test "${enable_readonly+set}" = set; then :
+  enableval=$enable_readonly; as_fn_error $? "Invalid option. Use --enable-read-only/--disable-read-only instead" "$LINENO" 5
+fi
+
+
+
+##
+#   Project: Agent: MIB module configuration
+##
+
+# Check whether --enable-mini_agent was given.
+if test "${enable_mini_agent+set}" = set; then :
+  enableval=$enable_mini_agent;
+fi
+
+
+# Check whether --with-mini_agent was given.
+if test "${with_mini_agent+set}" = set; then :
+  withval=$with_mini_agent; as_fn_error $? "Invalid option. Use --enable-mini_agent/--disable-mini_agent instead" "$LINENO" 5
+fi
+
+if test "x$enable_mini_agent" = "xyes"; then
+    mini_agent="yes"
+else
+    mini_agent="no"
+fi
+
+# Check whether --with-miniagent was given.
+if test "${with_miniagent+set}" = set; then :
+  withval=$with_miniagent; as_fn_error $? "Invalid option. Use --enable-mini-agent/--disable-mini-agent instead" "$LINENO" 5
+fi
+
+# Check whether --enable-miniagent was given.
+if test "${enable_miniagent+set}" = set; then :
+  enableval=$enable_miniagent; as_fn_error $? "Invalid option. Use --enable-mini-agent/--disable-mini-agent instead" "$LINENO" 5
+fi
+
+
+
+
+
+# Check whether --enable-mfd-rewrites was given.
+if test "${enable_mfd_rewrites+set}" = set; then :
+  enableval=$enable_mfd_rewrites;
+fi
+
+
+# Check whether --with-mfd-rewrites was given.
+if test "${with_mfd_rewrites+set}" = set; then :
+  withval=$with_mfd_rewrites; as_fn_error $? "Invalid option. Use --enable-mfd-rewrites/--disable-mfd-rewrites instead" "$LINENO" 5
+fi
+
+if test "x$enable_mfd_rewrites" = "xyes"; then
+
+$as_echo "#define NETSNMP_ENABLE_MFD_REWRITES 1" >>confdefs.h
+
+fi
+
+
+
+# Check whether --with-mib_modules was given.
+if test "${with_mib_modules+set}" = set; then :
+  withval=$with_mib_modules;
+fi
+
+   # Check whether --enable-mib_modules was given.
+if test "${enable_mib_modules+set}" = set; then :
+  enableval=$enable_mib_modules; as_fn_error $? "Invalid option. Use --with-mib_modules/--without-mib_modules instead" "$LINENO" 5
+fi
+
+
+
+# Check whether --with-out_mib_modules was given.
+if test "${with_out_mib_modules+set}" = set; then :
+  withval=$with_out_mib_modules;
+fi
+
+   # Check whether --enable-out_mib_modules was given.
+if test "${enable_out_mib_modules+set}" = set; then :
+  enableval=$enable_out_mib_modules; as_fn_error $? "Invalid option. Use --with-out_mib_modules/--without-out_mib_modules instead" "$LINENO" 5
+fi
+
+
+
+#
+# Catch common mistakes in configure options
+#
+
+# Check whether --with-mib-module was given.
+if test "${with_mib_module+set}" = set; then :
+  withval=$with_mib_module; as_fn_error $? "Invalid option. Use --with-mib-modules/--without-mib-modules instead" "$LINENO" 5
+fi
+
+
+# Check whether --with-module was given.
+if test "${with_module+set}" = set; then :
+  withval=$with_module; as_fn_error $? "Invalid option. Use --with-mib-modules/--without-mib-modules instead" "$LINENO" 5
+fi
+
+
+# Check whether --with-modules was given.
+if test "${with_modules+set}" = set; then :
+  withval=$with_modules; as_fn_error $? "Invalid option. Use --with-mib-modules/--without-mib-modules instead" "$LINENO" 5
+fi
+
+
+
+# Check whether --with-out-mib-module was given.
+if test "${with_out_mib_module+set}" = set; then :
+  withval=$with_out_mib_module; as_fn_error $? "Invalid option. Use --with-out-mib-modules/--without-out-mib-modules instead" "$LINENO" 5
+fi
+
+
+# Check whether --with-out-module was given.
+if test "${with_out_module+set}" = set; then :
+  withval=$with_out_module; as_fn_error $? "Invalid option. Use --with-out-mib-modules/--without-out-mib-modules instead" "$LINENO" 5
+fi
+
+
+# Check whether --with-out-modules was given.
+if test "${with_out_modules+set}" = set; then :
+  withval=$with_out_modules; as_fn_error $? "Invalid option. Use --with-out-mib-modules/--without-out-mib-modules instead" "$LINENO" 5
+fi
+
+
+
+##
+#   Project: Enterprise settings	(? Agent/Library/Both?)
+##
+
+
+# Check whether --with-enterprise-oid was given.
+if test "${with_enterprise_oid+set}" = set; then :
+  withval=$with_enterprise_oid;
+  if test "$withval" = yes; then
+    as_fn_error $? " Please provide a value for the enterprise number " "$LINENO" 5;
   fi
   cat >>confdefs.h <<_ACEOF
 #define NETSNMP_ENTERPRISE_OID $withval
@@ -3065,32 +4854,28 @@
 #define NETSNMP_ENTERPRISE_DOT_MIB $ent_dot_oid
 _ACEOF
 
-  echo "$as_me:$LINENO: result: using enterprise number $withval" >&5
-echo "${ECHO_T}using enterprise number $withval" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: using enterprise number $withval" >&5
+$as_echo "using enterprise number $withval" >&6; }
 
 else
 
-  echo "$as_me:$LINENO: result: using default \"enterprise.net-snmp\"" >&5
-echo "${ECHO_T}using default \"enterprise.net-snmp\"" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: using default \"enterprise.net-snmp\"" >&5
+$as_echo "using default \"enterprise.net-snmp\"" >&6; }
 
-fi;
-# Check whether --enable-enterprise-oid or --disable-enterprise-oid was given.
-if test "${enable_enterprise_oid+set}" = set; then
-  enableval="$enable_enterprise_oid"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-enterprise-oid/--without-enterprise-oid instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-enterprise-oid/--without-enterprise-oid instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+fi
+
+   # Check whether --enable-enterprise-oid was given.
+if test "${enable_enterprise_oid+set}" = set; then :
+  enableval=$enable_enterprise_oid; as_fn_error $? "Invalid option. Use --with-enterprise-oid/--without-enterprise-oid instead" "$LINENO" 5
+fi
 
 
-# Check whether --with-enterprise-sysoid or --without-enterprise-sysoid was given.
-if test "${with_enterprise_sysoid+set}" = set; then
-  withval="$with_enterprise_sysoid"
 
+# Check whether --with-enterprise-sysoid was given.
+if test "${with_enterprise_sysoid+set}" = set; then :
+  withval=$with_enterprise_sysoid;
   if test "$withval" = yes; then
-    { { echo "$as_me:$LINENO: error:  Please provide a base OID value " >&5
-echo "$as_me: error:  Please provide a base OID value " >&2;}
-   { (exit 1); exit 1; }; };
+    as_fn_error $? " Please provide a base OID value " "$LINENO" 5;
   fi
   sys_oid=`echo "$withval" | sed 's/^\.//' | sed 's/\./\,/g'`
   cat >>confdefs.h <<_ACEOF
@@ -3107,32 +4892,28 @@
 #define NETSNMP_SYSTEM_DOT_MIB_LENGTH $sysoid_len
 _ACEOF
 
-  echo "$as_me:$LINENO: result: using enterprise sysOID $withval ...." >&5
-echo "${ECHO_T}using enterprise sysOID $withval ...." >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: using enterprise sysOID $withval ...." >&5
+$as_echo "using enterprise sysOID $withval ...." >&6; }
 
 else
 
-  echo "$as_me:$LINENO: result: using default enterprise sysOID \"NET-SNMP-MIB::netSnmpAgentOIDs...\"" >&5
-echo "${ECHO_T}using default enterprise sysOID \"NET-SNMP-MIB::netSnmpAgentOIDs...\"" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: using default enterprise sysOID \"NET-SNMP-MIB::netSnmpAgentOIDs...\"" >&5
+$as_echo "using default enterprise sysOID \"NET-SNMP-MIB::netSnmpAgentOIDs...\"" >&6; }
 
-fi;
-# Check whether --enable-enterprise-sysoid or --disable-enterprise-sysoid was given.
-if test "${enable_enterprise_sysoid+set}" = set; then
-  enableval="$enable_enterprise_sysoid"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-enterprise-sysoid/--without-enterprise-sysoid instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-enterprise-sysoid/--without-enterprise-sysoid instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+fi
+
+   # Check whether --enable-enterprise-sysoid was given.
+if test "${enable_enterprise_sysoid+set}" = set; then :
+  enableval=$enable_enterprise_sysoid; as_fn_error $? "Invalid option. Use --with-enterprise-sysoid/--without-enterprise-sysoid instead" "$LINENO" 5
+fi
 
 
-# Check whether --with-enterprise-notification-oid or --without-enterprise-notification-oid was given.
-if test "${with_enterprise_notification_oid+set}" = set; then
-  withval="$with_enterprise_notification_oid"
 
+# Check whether --with-enterprise-notification-oid was given.
+if test "${with_enterprise_notification_oid+set}" = set; then :
+  withval=$with_enterprise_notification_oid;
   if test "$withval" = yes; then
-    { { echo "$as_me:$LINENO: error:  Please provide a base OID value " >&5
-echo "$as_me: error:  Please provide a base OID value " >&2;}
-   { (exit 1); exit 1; }; };
+    as_fn_error $? " Please provide a base OID value " "$LINENO" 5;
   fi
   notification_oid=`echo "$withval" | sed 's/^\.//' | sed 's/\./\,/g'`
   cat >>confdefs.h <<_ACEOF
@@ -3149,83 +4930,31 @@
 #define NETSNMP_NOTIFICATION_DOT_MIB_LENGTH $notificationoid_len
 _ACEOF
 
-  echo "$as_me:$LINENO: result: using enterprise notifications $withval" >&5
-echo "${ECHO_T}using enterprise notifications $withval" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: using enterprise notifications $withval" >&5
+$as_echo "using enterprise notifications $withval" >&6; }
 
 else
 
-  echo "$as_me:$LINENO: result: using default notifications \"NET-SNMP-MIB::netSnmpNotifications\"" >&5
-echo "${ECHO_T}using default notifications \"NET-SNMP-MIB::netSnmpNotifications\"" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: using default notifications \"NET-SNMP-MIB::netSnmpNotifications\"" >&5
+$as_echo "using default notifications \"NET-SNMP-MIB::netSnmpNotifications\"" >&6; }
 
-fi;
-# Check whether --enable-enterprise-notification-oid or --disable-enterprise-notification-oid was given.
-if test "${enable_enterprise_notification_oid+set}" = set; then
-  enableval="$enable_enterprise_notification_oid"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-enterprise-notification-oid/--without-enterprise-notification-oid instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-enterprise-notification-oid/--without-enterprise-notification-oid instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-#
-# Catch common mistakes in configure options
-#
+fi
 
-# Check whether --with-mib-module or --without-mib-module was given.
-if test "${with_mib_module+set}" = set; then
-  withval="$with_mib_module"
-  { { echo "$as_me:$LINENO: error:  Invalid option1. Use --with-mib-modules instead " >&5
-echo "$as_me: error:  Invalid option1. Use --with-mib-modules instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --with-module or --without-module was given.
-if test "${with_module+set}" = set; then
-  withval="$with_module"
-  { { echo "$as_me:$LINENO: error:  Invalid option3. Use --with-mib-modules instead " >&5
-echo "$as_me: error:  Invalid option3. Use --with-mib-modules instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --with-modules or --without-modules was given.
-if test "${with_modules+set}" = set; then
-  withval="$with_modules"
-  { { echo "$as_me:$LINENO: error:  Invalid option4. Use --with-mib-modules instead " >&5
-echo "$as_me: error:  Invalid option4. Use --with-mib-modules instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+   # Check whether --enable-enterprise-notification-oid was given.
+if test "${enable_enterprise_notification_oid+set}" = set; then :
+  enableval=$enable_enterprise_notification_oid; as_fn_error $? "Invalid option. Use --with-enterprise-notification-oid/--without-enterprise-notification-oid instead" "$LINENO" 5
+fi
 
 
-# Check whether --with-out-mib-module or --without-out-mib-module was given.
-if test "${with_out_mib_module+set}" = set; then
-  withval="$with_out_mib_module"
-  { { echo "$as_me:$LINENO: error:  Invalid option5. Use --with-out-mib-modules instead " >&5
-echo "$as_me: error:  Invalid option5. Use --with-out-mib-modules instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
 
-# Check whether --with-out-modules or --without-out-modules was given.
-if test "${with_out_modules+set}" = set; then
-  withval="$with_out_modules"
-  { { echo "$as_me:$LINENO: error:  Invalid option7. Use --with-out-mib-modules instead " >&5
-echo "$as_me: error:  Invalid option7. Use --with-out-mib-modules instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+##
+#   Project: Perl settings
+##
 
-# Check whether --with-out-module or --without-out-module was given.
-if test "${with_out_module+set}" = set; then
-  withval="$with_out_module"
-  { { echo "$as_me:$LINENO: error:  Invalid option8. Use --with-out-mib-modules instead " >&5
-echo "$as_me: error:  Invalid option8. Use --with-out-mib-modules instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
 
-#
-# Perl specific
-#
-
-# Check whether --with-perl-modules or --without-perl-modules was given.
-if test "${with_perl_modules+set}" = set; then
-  withval="$with_perl_modules"
-
+# Check whether --with-perl-modules was given.
+if test "${with_perl_modules+set}" = set; then :
+  withval=$with_perl_modules;
     if test "$withval" = "no"; then
       install_perl="no"
     else
@@ -3237,56 +4966,49 @@
 
 else
   install_perl="try"
-fi;
+fi
 
-# Check whether --enable-embedded-perl or --disable-embedded-perl was given.
-if test "${enable_embedded_perl+set}" = set; then
-  enableval="$enable_embedded_perl"
-  embed_perl="$enableval"
+   # Check whether --enable-perl-modules was given.
+if test "${enable_perl_modules+set}" = set; then :
+  enableval=$enable_perl_modules; as_fn_error $? "Invalid option. Use --with-perl-modules/--without-perl-modules instead" "$LINENO" 5
+fi
+
+
+# Check whether --enable-embedded-perl was given.
+if test "${enable_embedded_perl+set}" = set; then :
+  enableval=$enable_embedded_perl; embed_perl="$enableval"
 else
   embed_perl="try"
-fi;
-
-# Check whether --enable-perl-cc-checks or --disable-perl-cc-checks was given.
-if test "${enable_perl_cc_checks+set}" = set; then
-  enableval="$enable_perl_cc_checks"
-
-fi;
-
-# Common perl mistakes
-# Check whether --enable-perl-modules or --disable-perl-modules was given.
-if test "${enable_perl_modules+set}" = set; then
-  enableval="$enable_perl_modules"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-perl-modules/--without-perl-modules instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-perl-modules/--without-perl-modules instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --with-embedded-perl or --without-embedded-perl was given.
-if test "${with_embedded_perl+set}" = set; then
-  withval="$with_embedded_perl"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-embedded-perl/--disable-embedded-perl instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-embedded-perl/--disable-embedded-perl instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-
-# Check whether --with-perl-cc-checks or --without-perl-cc-checks was given.
-if test "${with_perl_cc_checks+set}" = set; then
-  withval="$with_perl_cc_checks"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-perl-cc-checks/--disable-perl-cc-checks instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-perl-cc-checks/--disable-perl-cc-checks instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+fi
 
 
-#
-# Python specific
-#
+# Check whether --with-embedded-perl was given.
+if test "${with_embedded_perl+set}" = set; then :
+  withval=$with_embedded_perl; as_fn_error $? "Invalid option. Use --enable-embedded-perl/--disable-embedded-perl instead" "$LINENO" 5
+fi
 
-# Check whether --with-python-modules or --without-python-modules was given.
-if test "${with_python_modules+set}" = set; then
-  withval="$with_python_modules"
 
+# Check whether --enable-perl-cc-checks was given.
+if test "${enable_perl_cc_checks+set}" = set; then :
+  enableval=$enable_perl_cc_checks;
+fi
+
+
+# Check whether --with-perl-cc-checks was given.
+if test "${with_perl_cc_checks+set}" = set; then :
+  withval=$with_perl_cc_checks; as_fn_error $? "Invalid option. Use --enable-perl-cc-checks/--disable-perl-cc-checks instead" "$LINENO" 5
+fi
+
+
+
+##
+#   Project: Python settings
+##
+
+
+# Check whether --with-python-modules was given.
+if test "${with_python_modules+set}" = set; then :
+  withval=$with_python_modules;
     install_python="yes"
     if test "$withval" = "yes"; then
       PYTHONARGS=""
@@ -3299,207 +5021,635 @@
 
 else
   install_python="no"
-fi;
-
-# other flags
+fi
 
 
-# Check whether --with-server-send-buf or --without-server-send-buf was given.
-if test "${with_server_send_buf+set}" = set; then
-  withval="$with_server_send_buf"
 
+##
+#   Project: Library settings
+##
+
+
+# Check whether --with-server-send-buf was given.
+if test "${with_server_send_buf+set}" = set; then :
+  withval=$with_server_send_buf;
    if test "$withval" = yes; then
-    { { echo "$as_me:$LINENO: error:  Please provide a positive number for the server send buffer " >&5
-echo "$as_me: error:  Please provide a positive number for the server send buffer " >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? " Please provide a positive number for the server send buffer " "$LINENO" 5
    fi
    cat >>confdefs.h <<_ACEOF
 #define NETSNMP_DEFAULT_SERVER_SEND_BUF $withval
 _ACEOF
 
 else
-  echo "$as_me:$LINENO: result: using OS default send buffer size for server sockets" >&5
-echo "${ECHO_T}using OS default send buffer size for server sockets" >&6
-fi;
-# Check whether --enable-server-send-buf or --disable-server-send-buf was given.
-if test "${enable_server_send_buf+set}" = set; then
-  enableval="$enable_server_send_buf"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-server-send-buf/--without-server-send-buf instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-server-send-buf/--without-server-send-buf instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: using OS default send buffer size for server sockets" >&5
+$as_echo "using OS default send buffer size for server sockets" >&6; }
+fi
+
+   # Check whether --enable-server-send-buf was given.
+if test "${enable_server_send_buf+set}" = set; then :
+  enableval=$enable_server_send_buf; as_fn_error $? "Invalid option. Use --with-server-send-buf/--without-server-send-buf instead" "$LINENO" 5
+fi
 
 
-# Check whether --with-server-recv-buf or --without-server-recv-buf was given.
-if test "${with_server_recv_buf+set}" = set; then
-  withval="$with_server_recv_buf"
 
+# Check whether --with-server-recv-buf was given.
+if test "${with_server_recv_buf+set}" = set; then :
+  withval=$with_server_recv_buf;
   if test "$withval" = yes; then
-    { { echo "$as_me:$LINENO: error:  Please provide a positive number for the server recv buffer " >&5
-echo "$as_me: error:  Please provide a positive number for the server recv buffer " >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? " Please provide a positive number for the server recv buffer " "$LINENO" 5
   fi
   cat >>confdefs.h <<_ACEOF
 #define NETSNMP_DEFAULT_SERVER_RECV_BUF $withval
 _ACEOF
 
 else
-  echo "$as_me:$LINENO: result: using OS default recv buffer size for server sockets" >&5
-echo "${ECHO_T}using OS default recv buffer size for server sockets" >&6
-fi;
-# Check whether --enable-server-recv-buf or --disable-server-recv-buf was given.
-if test "${enable_server_recv_buf+set}" = set; then
-  enableval="$enable_server_recv_buf"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-server-recv-buf/--without-server-recv-buf instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-server-recv-buf/--without-server-recv-buf instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: using OS default recv buffer size for server sockets" >&5
+$as_echo "using OS default recv buffer size for server sockets" >&6; }
+fi
+
+   # Check whether --enable-server-recv-buf was given.
+if test "${enable_server_recv_buf+set}" = set; then :
+  enableval=$enable_server_recv_buf; as_fn_error $? "Invalid option. Use --with-server-recv-buf/--without-server-recv-buf instead" "$LINENO" 5
+fi
 
 
-# Check whether --with-client-send-buf or --without-client-send-buf was given.
-if test "${with_client_send_buf+set}" = set; then
-  withval="$with_client_send_buf"
 
+# Check whether --with-client-send-buf was given.
+if test "${with_client_send_buf+set}" = set; then :
+  withval=$with_client_send_buf;
   if test "$withval" = yes; then
-    { { echo "$as_me:$LINENO: error:  Please provide a positive number for the client send buffer " >&5
-echo "$as_me: error:  Please provide a positive number for the client send buffer " >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? " Please provide a positive number for the client send buffer " "$LINENO" 5
   fi
   cat >>confdefs.h <<_ACEOF
 #define NETSNMP_DEFAULT_CLIENT_SEND_BUF $withval
 _ACEOF
 
 else
-  echo "$as_me:$LINENO: result: using OS default send buffer size for client sockets" >&5
-echo "${ECHO_T}using OS default send buffer size for client sockets" >&6
-fi;
-# Check whether --enable-client-send-buf or --disable-client-send-buf was given.
-if test "${enable_client_send_buf+set}" = set; then
-  enableval="$enable_client_send_buf"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-client-send-buf/--without-client-send-buf instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-client-send-buf/--without-client-send-buf instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: using OS default send buffer size for client sockets" >&5
+$as_echo "using OS default send buffer size for client sockets" >&6; }
+fi
+
+   # Check whether --enable-client-send-buf was given.
+if test "${enable_client_send_buf+set}" = set; then :
+  enableval=$enable_client_send_buf; as_fn_error $? "Invalid option. Use --with-client-send-buf/--without-client-send-buf instead" "$LINENO" 5
+fi
 
 
-# Check whether --with-client-recv-buf or --without-client-recv-buf was given.
-if test "${with_client_recv_buf+set}" = set; then
-  withval="$with_client_recv_buf"
 
+# Check whether --with-client-recv-buf was given.
+if test "${with_client_recv_buf+set}" = set; then :
+  withval=$with_client_recv_buf;
   if test "$withval" = yes; then
-    { { echo "$as_me:$LINENO: error:  Please provide a positive number for the client recv buffer " >&5
-echo "$as_me: error:  Please provide a positive number for the client recv buffer " >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? " Please provide a positive number for the client recv buffer " "$LINENO" 5
   fi
   cat >>confdefs.h <<_ACEOF
 #define NETSNMP_DEFAULT_CLIENT_RECV_BUF $withval
 _ACEOF
 
 else
-  echo "$as_me:$LINENO: result: using OS default recv buffer size for client sockets" >&5
-echo "${ECHO_T}using OS default recv buffer size for client sockets" >&6
-fi;
-# Check whether --enable-client-recv-buf or --disable-client-recv-buf was given.
-if test "${enable_client_recv_buf+set}" = set; then
-  enableval="$enable_client_recv_buf"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-client-recv-buf/--without-client-recv-buf instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-client-recv-buf/--without-client-recv-buf instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: using OS default recv buffer size for client sockets" >&5
+$as_echo "using OS default recv buffer size for client sockets" >&6; }
+fi
 
-#
-# otherwise prompted information
-#
+   # Check whether --enable-client-recv-buf was given.
+if test "${enable_client_recv_buf+set}" = set; then :
+  enableval=$enable_client_recv_buf; as_fn_error $? "Invalid option. Use --with-client-recv-buf/--without-client-recv-buf instead" "$LINENO" 5
+fi
 
-# Check whether --with-defaults or --without-defaults was given.
-if test "${with_defaults+set}" = set; then
-  withval="$with_defaults"
-  defaults="yes"
+
+##
+#   System: library settings  (more)
+##
+
+
+# Check whether --with-elf was given.
+if test "${with_elf+set}" = set; then :
+  withval=$with_elf;
+fi
+
+   # Check whether --enable-elf was given.
+if test "${enable_elf+set}" = set; then :
+  enableval=$enable_elf; as_fn_error $? "Invalid option. Use --with-elf/--without-elf instead" "$LINENO" 5
+fi
+
+
+
+# Check whether --with-nl was given.
+if test "${with_nl+set}" = set; then :
+  withval=$with_nl;
+fi
+
+   # Check whether --enable-nl was given.
+if test "${enable_nl+set}" = set; then :
+  enableval=$enable_nl; as_fn_error $? "Invalid option. Use --with-nl/--without-nl instead" "$LINENO" 5
+fi
+
+
+
+# Check whether --with-libwrap was given.
+if test "${with_libwrap+set}" = set; then :
+  withval=$with_libwrap;
 else
-  defaults="no"
-fi;
-# Check whether --enable-defaults or --disable-defaults was given.
-if test "${enable_defaults+set}" = set; then
-  enableval="$enable_defaults"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-defaults/--without-defaults instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-defaults/--without-defaults instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
+  with_libwrap="no"
+fi
 
-# Check whether --enable-ucd-snmp-compatibility or --disable-ucd-snmp-compatibility was given.
-if test "${enable_ucd_snmp_compatibility+set}" = set; then
-  enableval="$enable_ucd_snmp_compatibility"
+   # Check whether --enable-libwrap was given.
+if test "${enable_libwrap+set}" = set; then :
+  enableval=$enable_libwrap; as_fn_error $? "Invalid option. Use --with-libwrap/--without-libwrap instead" "$LINENO" 5
+fi
 
-fi;
 
-# Check whether --with-ucd-snmp-compatibility or --without-ucd-snmp-compatibility was given.
-if test "${with_ucd_snmp_compatibility+set}" = set; then
-  withval="$with_ucd_snmp_compatibility"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --enable-ucd-snmp-compatibility/--disable-ucd-snmp-compatibility instead " >&5
-echo "$as_me: error:  Invalid option. Use --enable-ucd-snmp-compatibility/--disable-ucd-snmp-compatibility instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
 
+# Check whether --with-zlib was given.
+if test "${with_zlib+set}" = set; then :
+  withval=$with_zlib;
+else
+  with_zlib="no"
+fi
+
+   # Check whether --enable-zlib was given.
+if test "${enable_zlib+set}" = set; then :
+  enableval=$enable_zlib; as_fn_error $? "Invalid option. Use --with-zlib/--without-zlib instead" "$LINENO" 5
+fi
+
+
+
+# Check whether --with-bzip2 was given.
+if test "${with_bzip2+set}" = set; then :
+  withval=$with_bzip2;
+else
+  with_bzip2="no"
+fi
+
+
+
+# Check whether --with-mnttab was given.
+if test "${with_mnttab+set}" = set; then :
+  withval=$with_mnttab;
+fi
+
+   # Check whether --enable-mnttab was given.
+if test "${enable_mnttab+set}" = set; then :
+  enableval=$enable_mnttab; as_fn_error $? "Invalid option. Use --with-mnttab/--without-mnttab instead" "$LINENO" 5
+fi
+
+
+##
+#   Project: mysql
+##
+
+
+# Check whether --with-mysql was given.
+if test "${with_mysql+set}" = set; then :
+  withval=$with_mysql;
+fi
+
+   # Check whether --enable-mysql was given.
+if test "${enable_mysql+set}" = set; then :
+  enableval=$enable_mysql; as_fn_error $? "Invalid option. Use --with-mysql/--without-mysql instead" "$LINENO" 5
+fi
+
+if test "x$with_mysql" = "xyes"; then
+
+$as_echo "#define NETSNMP_USE_MYSQL 1" >>confdefs.h
+
+fi
+
+# -*- autoconf -*-
 #
-# setup install targets
+# Prompt for various bits of user information
 #
-if test "x$enable_ucd_snmp_compatibility" = "xyes" ; then
-  installucdheaders=installucdheaders
-  installucdlibs=installucdlibs
 
-  cat >> configure-summary << EOF
-  UCD-SNMP compatability:     enabled
-EOF
+if test "x$ac_cv_user_prompt_NETSNMP_LOGFILE" = "x" -o "x$ac_cv_user_prompt_NETSNMP_SYS_LOC" = "x" -o "x$ac_cv_user_prompt_NETSNMP_SYS_CONTACT" = "x" -o "x$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" = "x"; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to prompt for values" >&5
+$as_echo_n "checking whether to prompt for values... " >&6; }
+if ${ac_cv_have_warned+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
 
+if test "x$defaults" = "xno"; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}:
+
+	 ************** Configuration Section **************
+
+	You are about to be prompted with a series of questions.  Answer
+them carefully, as they determine how the SNMP agent and related
+applications are to function.
+
+	After the configure script finishes, you can browse the newly
+created net-snmp-config.h file for further - less important - parameters to
+modify.  Be careful if you re-run configure though, since net-snmp-config.h
+will be overwritten.
+
+-Press return to continue-
+" >&5
+$as_echo "$as_me:
+
+	 ************** Configuration Section **************
+
+	You are about to be prompted with a series of questions.  Answer
+them carefully, as they determine how the SNMP agent and related
+applications are to function.
+
+	After the configure script finishes, you can browse the newly
+created net-snmp-config.h file for further - less important - parameters to
+modify.  Be careful if you re-run configure though, since net-snmp-config.h
+will be overwritten.
+
+-Press return to continue-
+" >&6;}
+
+read tmpinput <&7
+ac_cv_have_warned="yes"
+else
+  ac_cv_have_warned="no"
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_warned" >&5
+$as_echo "$ac_cv_have_warned" >&6; }
+else
+  ac_cv_have_warned="yes"
+fi
+
+ME=`$WHOAMI`
+if test -f /etc/resolv.conf; then
+  LOC=`awk '/^domain/{loc=$NF}END{print loc}' /etc/resolv.conf`
+fi
+if test "x$LOC" = x; then
+  LOC="@no.where"
 fi
 
 
+MSG_CHECK="Default version of SNMP to use"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $MSG_CHECK" >&5
+$as_echo_n "checking $MSG_CHECK... " >&6; }
+if ${ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  echo "" >&6
 
-# Only define if specifically chosen as --without (i.e., default to true).
-if test "x$with_root_access" = "xno"; then
-  cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_NO_ROOT_ACCESS 1
+if test "x$defaults" = "xno"; then
+echo $ECHO_N "
+
+*** Default SNMP Version:
+
+	Starting with Net-SNMP 5.0, you can choose the default version of
+the SNMP protocol to use when no version is given explicitly on the
+command line, or via an 'snmp.conf' file.  In the past this was set to
+SNMPv1, but you can use this to switch to SNMPv3 if desired.  SNMPv3
+will provide a more secure management environment (and thus you're
+encouraged to switch to SNMPv3), but may break existing scripts that
+rely on the old behaviour.  (Though such scripts will probably need to
+be changed to use the '-c' community flag anyway, as the SNMPv1
+command line usage has changed as well.).
+   At this prompt you can select \"1\", \"2\" (for SNMPv2c), or \"3\" as
+the default version for the command tools (snmpget, ...) to use.  This
+can always be overridden at runtime using the -v flag to the tools, or
+by using the \"defVersion\" token in your snmp.conf file.
+   Providing the --with-default-snmp-version=\"x\" parameter to ./configure
+will avoid this prompt.
+
+Default version of SNMP to use (3): $ECHO_C"
+read tmpinput <&7
+if test "$tmpinput" = "" -a "3" != ""; then
+  tmpinput="3"
+fi
+eval NETSNMP_DEFAULT_SNMP_VERSION=\"$tmpinput\"
+else
+tmpinput="3"
+eval NETSNMP_DEFAULT_SNMP_VERSION=\"$tmpinput\"
+fi
+
+eval ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION=\$NETSNMP_DEFAULT_SNMP_VERSION
+echo $ECHO_N "setting $MSG_CHECK to...  $ECHO_C" >&6
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" >&5
+$as_echo "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" >&6; }
+if test "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" != "none"; then
+  if test "xunquoted" = "xquoted" -o "xunquoted" = "xQUOTED"; then
+    cat >>confdefs.h <<_ACEOF
+#define NETSNMP_DEFAULT_SNMP_VERSION "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION"
 _ACEOF
 
-fi
-
-# Only define if specifically chosen as --without (i.e., default to true).
-if test "x$with_kmem_usage" = "xno"; then
-  cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_NO_KMEM_USAGE 1
+  else
+    cat >>confdefs.h <<_ACEOF
+#define NETSNMP_DEFAULT_SNMP_VERSION $ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION
 _ACEOF
 
+  fi
 fi
 
-# Define unless specifically suppressed (i.e., option defaults to false).
-if test "x$with_dummy_values" != "xyes"; then
-  cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_NO_DUMMY_VALUES 1
+
+# we tested this above before the prompt, but the prompt may give a new value.
+case "${ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION}" in
+  [123]) ;;
+  2c) ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION=2 ;;
+  *)
+    as_fn_error $? "Illegal version number.  Only 1, 2 (for SNMPv2c) and 3 are supported." "$LINENO" 5
+    ;;
+esac
+
+
+MSG_CHECK="System Contact Information"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $MSG_CHECK" >&5
+$as_echo_n "checking $MSG_CHECK... " >&6; }
+if ${ac_cv_user_prompt_NETSNMP_SYS_CONTACT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  echo "" >&6
+
+if test "x$defaults" = "xno"; then
+echo $ECHO_N "
+
+*** System Contact Information:
+
+	Describes who should be contacted about the host the agent is
+running on.  This information is available in the MIB-II tree.  This
+can also be over-ridden using the \"syscontact\" syntax in the agent's
+configuration files.
+  Providing the --with-sys-contact=\"contact\" parameter to ./configure
+will avoid this prompt.
+
+System Contact Information ($ME@$LOC): $ECHO_C"
+read tmpinput <&7
+if test "$tmpinput" = "" -a "$ME@$LOC" != ""; then
+  tmpinput="$ME@$LOC"
+fi
+eval NETSNMP_SYS_CONTACT=\"$tmpinput\"
+else
+tmpinput="$ME@$LOC"
+eval NETSNMP_SYS_CONTACT=\"$tmpinput\"
+fi
+
+eval ac_cv_user_prompt_NETSNMP_SYS_CONTACT=\$NETSNMP_SYS_CONTACT
+echo $ECHO_N "setting $MSG_CHECK to...  $ECHO_C" >&6
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_user_prompt_NETSNMP_SYS_CONTACT" >&5
+$as_echo "$ac_cv_user_prompt_NETSNMP_SYS_CONTACT" >&6; }
+if test "$ac_cv_user_prompt_NETSNMP_SYS_CONTACT" != "none"; then
+  if test "xquoted" = "xquoted" -o "xquoted" = "xQUOTED"; then
+    cat >>confdefs.h <<_ACEOF
+#define NETSNMP_SYS_CONTACT "$ac_cv_user_prompt_NETSNMP_SYS_CONTACT"
 _ACEOF
 
-fi
-
-# Only define if specifically chosen as --without (i.e., default to true).
-if test "x$with_opaque_special_types" != "xno"; then
-  cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_WITH_OPAQUE_SPECIAL_TYPES 1
+  else
+    cat >>confdefs.h <<_ACEOF
+#define NETSNMP_SYS_CONTACT $ac_cv_user_prompt_NETSNMP_SYS_CONTACT
 _ACEOF
 
+  fi
 fi
 
 
-# overflow problems with hpux's sh
-# taken from Perl's Configure script
 
-echo "$as_me:$LINENO: checking if I need to feed myself to ksh" >&5
-echo $ECHO_N "checking if I need to feed myself to ksh... $ECHO_C" >&6
+MSG_CHECK="System Location"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $MSG_CHECK" >&5
+$as_echo_n "checking $MSG_CHECK... " >&6; }
+if ${ac_cv_user_prompt_NETSNMP_SYS_LOC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  echo "" >&6
+
+if test "x$defaults" = "xno"; then
+echo $ECHO_N "
+
+*** System Location:
+
+	Describes the location of the system.  This information is
+available in the MIB-II tree.  this can also be over-ridden using the
+\"syslocation\" syntax in the agent's configuration files.
+  Providing the --with-sys-location=\"location\" parameter to ./configure
+will avoid this prompt.
+
+System Location (Unknown): $ECHO_C"
+read tmpinput <&7
+if test "$tmpinput" = "" -a "Unknown" != ""; then
+  tmpinput="Unknown"
+fi
+eval NETSNMP_SYS_LOC=\"$tmpinput\"
+else
+tmpinput="Unknown"
+eval NETSNMP_SYS_LOC=\"$tmpinput\"
+fi
+
+eval ac_cv_user_prompt_NETSNMP_SYS_LOC=\$NETSNMP_SYS_LOC
+echo $ECHO_N "setting $MSG_CHECK to...  $ECHO_C" >&6
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_user_prompt_NETSNMP_SYS_LOC" >&5
+$as_echo "$ac_cv_user_prompt_NETSNMP_SYS_LOC" >&6; }
+if test "$ac_cv_user_prompt_NETSNMP_SYS_LOC" != "none"; then
+  if test "xquoted" = "xquoted" -o "xquoted" = "xQUOTED"; then
+    cat >>confdefs.h <<_ACEOF
+#define NETSNMP_SYS_LOC "$ac_cv_user_prompt_NETSNMP_SYS_LOC"
+_ACEOF
+
+  else
+    cat >>confdefs.h <<_ACEOF
+#define NETSNMP_SYS_LOC $ac_cv_user_prompt_NETSNMP_SYS_LOC
+_ACEOF
+
+  fi
+fi
+
+
+if test -d /var/log; then
+  defaultlog="/var/log/snmpd.log"
+else
+  defaultlog="/usr/adm/snmpd.log"
+fi
+
+
+MSG_CHECK="Location to write logfile"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $MSG_CHECK" >&5
+$as_echo_n "checking $MSG_CHECK... " >&6; }
+if ${ac_cv_user_prompt_NETSNMP_LOGFILE+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  echo "" >&6
+
+if test "x$defaults" = "xno"; then
+echo $ECHO_N "
+
+*** Logfile location:
+
+	Enter the default location for the snmpd agent to dump
+information & errors to.  If not defined (enter the keyword \"none\"
+at the prompt below) the agent will use stdout and stderr instead.
+(Note: This value can be over-ridden using command line options.)
+  Providing the --with-logfile=\"path\" parameter to ./configure
+will avoid this prompt.
+
+Location to write logfile ($defaultlog): $ECHO_C"
+read tmpinput <&7
+if test "$tmpinput" = "" -a "$defaultlog" != ""; then
+  tmpinput="$defaultlog"
+fi
+eval NETSNMP_LOGFILE=\"$tmpinput\"
+else
+tmpinput="$defaultlog"
+eval NETSNMP_LOGFILE=\"$tmpinput\"
+fi
+
+eval ac_cv_user_prompt_NETSNMP_LOGFILE=\$NETSNMP_LOGFILE
+echo $ECHO_N "setting $MSG_CHECK to...  $ECHO_C" >&6
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_user_prompt_NETSNMP_LOGFILE" >&5
+$as_echo "$ac_cv_user_prompt_NETSNMP_LOGFILE" >&6; }
+if test "$ac_cv_user_prompt_NETSNMP_LOGFILE" != "none"; then
+  if test "xquoted" = "xquoted" -o "xquoted" = "xQUOTED"; then
+    cat >>confdefs.h <<_ACEOF
+#define NETSNMP_LOGFILE "$ac_cv_user_prompt_NETSNMP_LOGFILE"
+_ACEOF
+
+  else
+    cat >>confdefs.h <<_ACEOF
+#define NETSNMP_LOGFILE $ac_cv_user_prompt_NETSNMP_LOGFILE
+_ACEOF
+
+  fi
+fi
+
+
+if test -d /var; then
+  defaultstore="/var/net-snmp"
+  ucddefaultstore="/var/ucd-snmp"
+else
+  defaultstore="/etc/net-snmp"
+  ucddefaultstore="/etc/ucd-snmp"
+fi
+
+
+MSG_CHECK="Location to write persistent information"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $MSG_CHECK" >&5
+$as_echo_n "checking $MSG_CHECK... " >&6; }
+if ${ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  echo "" >&6
+
+if test "x$defaults" = "xno"; then
+echo $ECHO_N "
+
+*** snmpd persistent storage location:
+
+	Enter a directory for the SNMP library to store persistent
+data in the form of a configuration file.  This default location is
+different than the old default location (which was for ucd-snmp).  If
+you stay with the new path, I'll ask you in a second if you wish to
+copy your files over to the new location (once only).  If you pick
+some other path than the default, you'll have to copy them yourself.
+There is nothing wrong with picking the old path ($ucddefaultstore) if
+you'd rather.
+  Providing the --with-persistent-directory=\"path\" parameter to
+./configure will avoid this prompt.
+
+Location to write persistent information ($defaultstore): $ECHO_C"
+read tmpinput <&7
+if test "$tmpinput" = "" -a "$defaultstore" != ""; then
+  tmpinput="$defaultstore"
+fi
+eval NETSNMP_PERSISTENT_DIRECTORY=\"$tmpinput\"
+else
+tmpinput="$defaultstore"
+eval NETSNMP_PERSISTENT_DIRECTORY=\"$tmpinput\"
+fi
+
+eval ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY=\$NETSNMP_PERSISTENT_DIRECTORY
+echo $ECHO_N "setting $MSG_CHECK to...  $ECHO_C" >&6
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY" >&5
+$as_echo "$ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY" >&6; }
+if test "$ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY" != "none"; then
+  if test "xquoted" = "xquoted" -o "xquoted" = "xQUOTED"; then
+    cat >>confdefs.h <<_ACEOF
+#define NETSNMP_PERSISTENT_DIRECTORY "$ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY"
+_ACEOF
+
+  else
+    cat >>confdefs.h <<_ACEOF
+#define NETSNMP_PERSISTENT_DIRECTORY $ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY
+_ACEOF
+
+  fi
+fi
+
+
+PERSISTENT_DIRECTORY=$ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY
+
+UCDPERSISTENT_DIRECTORY=$ucddefaultstore
+
+
+if test $PERSISTENT_DIRECTORY = "$defaultstore" -a -d "$ucddefaultstore" -a ! -d "$defaultstore" ; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking If we should copy the old persistent directory" >&5
+$as_echo_n "checking If we should copy the old persistent directory... " >&6; }
+if ${ac_cv_user_prompt_COPY_PERSISTENT_FILES+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+
+if test "x$defaults" = "xno"; then
+echo $ECHO_N "
+
+*** Copying old ucd-snmp persistent files to net-snmp persistent directory:
+
+	Would you like to copy the older ucd-snmp persistent files
+into your new net-snmp persistent file path?  This will functionally
+save all your ucd-snmp data and let it be used within the net-snmp
+tools.  This will only be done once when you run make install.  If you
+wish to do this, enter "yes" at the prompt.
+  Providing the --with-copy-persistent-files=\"no\" (or \"yes\")
+parameters to ./configure will avoid this prompt.
+
+Copy ucd-snmp data into the net-snmp data directory ("yes"): $ECHO_C"
+read tmpinput <&7
+if test "$tmpinput" = "" -a ""yes"" != ""; then
+  tmpinput=""yes""
+fi
+eval ac_cv_user_prompt_COPY_PERSISTENT_FILES=\"$tmpinput\"
+else
+tmpinput=""yes""
+eval ac_cv_user_prompt_COPY_PERSISTENT_FILES=\"$tmpinput\"
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_user_prompt_COPY_PERSISTENT_FILES" >&5
+$as_echo "$ac_cv_user_prompt_COPY_PERSISTENT_FILES" >&6; }
+else
+ac_cv_user_prompt_COPY_PERSISTENT_FILES="no"
+fi
+COPY_PERSISTENT_FILES="$ac_cv_user_prompt_COPY_PERSISTENT_FILES"
+
+
+# -*- autoconf -*-
+#########################################
+##
+# Checks for programs
+##
+#########################################
+
+##
+#   Shell checks:
+##
+
+#       Check for 'sh' overflow                         (HP-UX)
+#         (taken from Perl's configure script)
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if I need to feed myself to ksh" >&5
+$as_echo_n "checking if I need to feed myself to ksh... " >&6; }
 if test -f /hp-ux -a -f /bin/ksh; then
   if (PATH=.; alias -x) >/dev/null 2>&1; then
-    echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
   else
-    echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
     if test "x$1" = "x"; then
       exec /bin/ksh $0
     else
@@ -3507,15 +5657,864 @@
     fi
   fi
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-if test "x$developer" != "xno" -a -f $srcdir/remove-files; then
-  # turn on the developer flag when taken from a SVN checkout (not a release)
-  developer="yes"
+
+##
+#   Standard and path program checks:
+##
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
 fi
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+
+for ac_prog in file
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_FILE+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$FILE"; then
+  ac_cv_prog_FILE="$FILE" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_FILE="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+FILE=$ac_cv_prog_FILE
+if test -n "$FILE"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FILE" >&5
+$as_echo "$FILE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$FILE" && break
+done
+
+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.
+  as_fn_error 1 "file program not found although it is needed by libtool." "$LINENO" 5
+fi
+
+for ac_prog in find
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_FIND+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$FIND"; then
+  ac_cv_prog_FIND="$FIND" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_FIND="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+FIND=$ac_cv_prog_FIND
+if test -n "$FIND"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FIND" >&5
+$as_echo "$FIND" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$FIND" && break
+done
+
+for ac_prog in whoami logname
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_WHOAMI+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$WHOAMI"; then
+  ac_cv_prog_WHOAMI="$WHOAMI" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_WHOAMI="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+WHOAMI=$ac_cv_prog_WHOAMI
+if test -n "$WHOAMI"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WHOAMI" >&5
+$as_echo "$WHOAMI" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$WHOAMI" && break
+done
+test -n "$WHOAMI" || WHOAMI="whoami"
+
+
+# Extract the first word of "autoconf", so it can be a program name with args.
+set dummy autoconf; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_AUTOCONF+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $AUTOCONF in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_AUTOCONF="$AUTOCONF" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_AUTOCONF="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+AUTOCONF=$ac_cv_path_AUTOCONF
+if test -n "$AUTOCONF"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AUTOCONF" >&5
+$as_echo "$AUTOCONF" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "autoheader", so it can be a program name with args.
+set dummy autoheader; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_AUTOHEADER+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $AUTOHEADER in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_AUTOHEADER="$AUTOHEADER" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_AUTOHEADER="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+AUTOHEADER=$ac_cv_path_AUTOHEADER
+if test -n "$AUTOHEADER"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AUTOHEADER" >&5
+$as_echo "$AUTOHEADER" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PERLPROG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PERLPROG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PERLPROG="$PERLPROG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PERLPROG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PERLPROG=$ac_cv_path_PERLPROG
+if test -n "$PERLPROG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERLPROG" >&5
+$as_echo "$PERLPROG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "ps", so it can be a program name with args.
+set dummy ps; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PSPROG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PSPROG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PSPROG="$PSPROG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PSPROG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PSPROG=$ac_cv_path_PSPROG
+if test -n "$PSPROG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PSPROG" >&5
+$as_echo "$PSPROG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Extract the first word of "python", so it can be a program name with args.
+set dummy python; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PYTHONPROG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PYTHONPROG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PYTHONPROG="$PYTHONPROG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_PYTHONPROG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PYTHONPROG=$ac_cv_path_PYTHONPROG
+if test -n "$PYTHONPROG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHONPROG" >&5
+$as_echo "$PYTHONPROG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+# Extract the first word of "uname", so it can be a program name with args.
+set dummy uname; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_UNAMEPROG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $UNAMEPROG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_UNAMEPROG="$UNAMEPROG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_UNAMEPROG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+UNAMEPROG=$ac_cv_path_UNAMEPROG
+if test -n "$UNAMEPROG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNAMEPROG" >&5
+$as_echo "$UNAMEPROG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define UNAMEPROG "$UNAMEPROG"
+_ACEOF
+
+
+if test "x$ac_cv_prog_AUTOCONF" = "x"; then
+	AUTOCONF=":"
+
+fi
+if test "x$ac_cv_prog_AUTOHEADER" = "x"; then
+	AUTOHEADER=":"
+
+fi
+
+MAKE=${MAKE-"make"}
+$MAKE -v -f /dev/null 2>/dev/null | $GREP GNU >/dev/null
+have_gnu_make=$?
+
+
+##
+#   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.
+##
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Perl function system() invokes a POSIX shell" >&5
+$as_echo_n "checking whether the Perl function system() invokes a POSIX shell... " >&6; }
+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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL_SYSTEM_INVOKES_POSIX_SHELL" >&5
+$as_echo "$PERL_SYSTEM_INVOKES_POSIX_SHELL" >&6; }
+
+
+
+##
+#   Compilation-related program checks:
+##
+
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -3530,10 +6529,10 @@
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}gcc; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -3543,35 +6542,37 @@
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+
 fi
 if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -3581,39 +6582,50 @@
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_CC="gcc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-  CC=$ac_ct_CC
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
 else
   CC="$ac_cv_prog_CC"
 fi
 
 if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}cc; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -3623,77 +6635,37 @@
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
+
   fi
-done
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  CC=$ac_ct_CC
-else
-  CC="$ac_cv_prog_CC"
-fi
-
 fi
 if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -3704,18 +6676,19 @@
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
      fi
     ac_cv_prog_CC="cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
 if test $ac_prog_rejected = yes; then
   # We found a bogon in the path, so make sure we never use it.
@@ -3733,24 +6706,25 @@
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+
 fi
 if test -z "$CC"; then
   if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl
+  for ac_prog in cl.exe
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -3760,39 +6734,41 @@
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+
     test -n "$CC" && break
   done
 fi
 if test -z "$CC"; then
   ac_ct_CC=$CC
-  for ac_prog in cl
+  for ac_prog in cl.exe
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -3802,66 +6778,78 @@
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+
   test -n "$ac_ct_CC" && break
 done
 
-  CC=$ac_ct_CC
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
 fi
 
 fi
 
 
-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
 
 # Provide some information about the compiler.
-echo "$as_me:$LINENO:" \
-     "checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
-  (eval $ac_compiler --version </dev/null >&5) 2>&5
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
-  (eval $ac_compiler -v </dev/null >&5) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
-  (eval $ac_compiler -V </dev/null >&5) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3873,112 +6861,108 @@
 }
 _ACEOF
 ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.exe b.out"
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
 # Try to create an executable without -o first, disregard a.out.
 # It will help us diagnose broken compilers, and finding out an intuition
 # of exeext.
-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
-  (eval $ac_link_default) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  # Find the output, starting from the most likely.  This scheme is
-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
-# resort.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
 
-# Be careful to initialize this variable, since it used to be cached.
-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
-ac_cv_exeext=
-# b.out is created by i960 compilers.
-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
 do
   test -f "$ac_file" || continue
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
-	;;
-    conftest.$ac_ext )
-	# This is the source file.
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
 	;;
     [ab].out )
 	# We found the default executable, but exeext='' is most
 	# certainly right.
 	break;;
     *.* )
-	ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	# FIXME: I believe we export ac_cv_exeext for Libtool,
-	# but it would be cool to find out if it's true.  Does anybody
-	# maintain Libtool? --akim.
-	export ac_cv_exeext
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
 	break;;
     * )
 	break;;
   esac
 done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
 else
-  echo "$as_me: failed program was:" >&5
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
-See \`config.log' for more details." >&5
-echo "$as_me: error: C compiler cannot create executables
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 fi
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
 ac_exeext=$ac_cv_exeext
-echo "$as_me:$LINENO: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6
 
-# Check the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
-  if { ac_try='./$ac_file'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-    fi
-  fi
-fi
-echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-
-rm -f a.out a.exe conftest$ac_cv_exeext b.out
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
 ac_clean_files=$ac_clean_files_save
-# Check the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
-echo "$as_me:$LINENO: result: $cross_compiling" >&5
-echo "${ECHO_T}$cross_compiling" >&6
-
-echo "$as_me:$LINENO: checking for suffix of executables" >&5
-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   # If both `conftest.exe' and `conftest' are `present' (well, observable)
 # catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
 # work properly (i.e., refer to `conftest.exe'), while it won't with
@@ -3986,38 +6970,90 @@
 for ac_file in conftest.exe conftest conftest.*; do
   test -f "$ac_file" || continue
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
     *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  export ac_cv_exeext
 	  break;;
     * ) break;;
   esac
 done
 else
-  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
 fi
-
-rm -f conftest$ac_cv_exeext
-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-echo "${ECHO_T}$ac_cv_exeext" >&6
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
 
 rm -f conftest.$ac_ext
 EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
-echo "$as_me:$LINENO: checking for suffix of object files" >&5
-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
-if test "${ac_cv_objext+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -4029,45 +7065,46 @@
 }
 _ACEOF
 rm -f conftest.o conftest.obj
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
     *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
        break;;
   esac
 done
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
 fi
-
 rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-echo "${ECHO_T}$ac_cv_objext" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
 OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -4081,55 +7118,34 @@
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_compiler_gnu=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_compiler_gnu=no
+  ac_compiler_gnu=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
-GCC=`test $ac_compiler_gnu = yes && echo yes`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
 ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
-CFLAGS="-g"
-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -4140,39 +7156,49 @@
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_g=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-ac_cv_prog_cc_g=no
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
 if test "$ac_test_CFLAGS" = set; then
   CFLAGS=$ac_save_CFLAGS
 elif test $ac_cv_prog_cc_g = yes; then
@@ -4188,18 +7214,14 @@
     CFLAGS=
   fi
 fi
-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_cv_prog_cc_stdc=no
+  ac_cv_prog_cc_c89=no
 ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
@@ -4227,12 +7249,17 @@
 /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
    function prototypes and stuff, but not '\xHH' hex character constants.
    These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std1 is added to get
+   as 'x'.  The following induces an error, until -std is added to get
    proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
    array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std1.  */
+   that's true only with -std.  */
 int osf4_cc_array ['\x00' == 0 ? 1 : -1];
 
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
 int test (int i, double x);
 struct s1 {int (*f) (int a);};
 struct s2 {int (*f) (double a);};
@@ -4247,205 +7274,37 @@
   return 0;
 }
 _ACEOF
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX			-qlanglvl=ansi
-# Ultrix and OSF/1	-std1
-# HP-UX 10.20 and later	-Ae
-# HP-UX older versions	-Aa -D_HPUX_SOURCE
-# SVR4			-Xc -D__EXTENSIONS__
-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
 do
   CC="$ac_save_CC $ac_arg"
-  rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_prog_cc_stdc=$ac_arg
-break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
 fi
-rm -f conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
 done
-rm -f conftest.$ac_ext conftest.$ac_objext
+rm -f conftest.$ac_ext
 CC=$ac_save_CC
 
 fi
-
-case "x$ac_cv_prog_cc_stdc" in
-  x|xno)
-    echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6 ;;
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
   *)
-    echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
-    CC="$CC $ac_cv_prog_cc_stdc" ;;
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
-
-# Some people use a C++ compiler to compile C.  Since we use `exit',
-# in C++ we need to declare it.  In case someone uses the same compiler
-# for both compiling C and C++ we need to have the C++ compiler decide
-# the declaration of exit, since it's the most demanding environment.
-cat >conftest.$ac_ext <<_ACEOF
-#ifndef __cplusplus
-  choke me
-#endif
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  for ac_declaration in \
-   '' \
-   'extern "C" void std::exit (int) throw (); using std::exit;' \
-   'extern "C" void std::exit (int); using std::exit;' \
-   'extern "C" void exit (int) throw ();' \
-   'extern "C" void exit (int);' \
-   'void exit (int);'
-do
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_declaration
-#include <stdlib.h>
-int
-main ()
-{
-exit (42);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-continue
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_declaration
-int
-main ()
-{
-exit (42);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if test "x$ac_cv_prog_cc_c89" != xno; then :
 
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-rm -f conftest*
-if test -n "$ac_declaration"; then
-  echo '#ifdef __cplusplus' >>confdefs.h
-  echo $ac_declaration      >>confdefs.h
-  echo '#endif'             >>confdefs.h
-fi
 
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -4457,15 +7316,15 @@
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
 fi
 if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
       # Double quotes because CPP needs to be expanded
     for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
@@ -4479,11 +7338,7 @@
   # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __STDC__
 # include <limits.h>
@@ -4492,78 +7347,34 @@
 #endif
 		     Syntax error
 _ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_cpp "$LINENO"; then :
 
+else
   # Broken: fails on valid input.
 continue
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
-  # OK, works on sane cases.  Now check whether non-existent headers
+  # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
 continue
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Passes both tests.
 ac_preproc_ok=:
 break
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
   break
 fi
 
@@ -4575,8 +7386,8 @@
 else
   ac_cv_prog_CPP=$CPP
 fi
-echo "$as_me:$LINENO: result: $CPP" >&5
-echo "${ECHO_T}$CPP" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
 ac_preproc_ok=false
 for ac_c_preproc_warn_flag in '' yes
 do
@@ -4586,11 +7397,7 @@
   # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __STDC__
 # include <limits.h>
@@ -4599,85 +7406,40 @@
 #endif
 		     Syntax error
 _ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_cpp "$LINENO"; then :
 
+else
   # Broken: fails on valid input.
 continue
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
-  # OK, works on sane cases.  Now check whether non-existent headers
+  # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
+if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
 continue
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Passes both tests.
 ac_preproc_ok=:
 break
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  :
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
 else
-  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
 fi
 
 ac_ext=c
@@ -4690,358 +7452,670 @@
 
 
 
-echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
-if test "${ac_cv_prog_egrep+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
-    then ac_cv_prog_egrep='grep -E'
-    else ac_cv_prog_egrep='egrep'
-    fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
- EGREP=$ac_cv_prog_egrep
-
-
-
-echo "$as_me:$LINENO: checking for AIX" >&5
-echo $ECHO_N "checking for AIX... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef _AIX
-  yes
-#endif
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-cat >>confdefs.h <<\_ACEOF
-#define _ALL_SOURCE 1
-_ACEOF
+  $EGREP "memchr" >/dev/null 2>&1; then :
 
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  ac_cv_header_stdc=no
 fi
 rm -f conftest*
 
+fi
 
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
 
-# system check
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
-  if test -f $ac_dir/install-sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f $ac_dir/install.sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f $ac_dir/shtool; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
 done
-if test -z "$ac_aux_dir"; then
-  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
 
-# Make sure we can run config.sub.
-$ac_config_sub sun4 >/dev/null 2>&1 ||
-  { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
-   { (exit 1); exit 1; }; }
 
-echo "$as_me:$LINENO: checking build system type" >&5
-echo $ECHO_N "checking build system type... $ECHO_C" >&6
-if test "${ac_cv_build+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
+if test "x$ac_cv_header_minix_config_h" = xyes; then :
+  MINIX=yes
 else
-  ac_cv_build_alias=$build_alias
-test -z "$ac_cv_build_alias" &&
-  ac_cv_build_alias=`$ac_config_guess`
-test -z "$ac_cv_build_alias" &&
-  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
-   { (exit 1); exit 1; }; }
-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
-  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
-
+  MINIX=
 fi
-echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-echo "${ECHO_T}$ac_cv_build" >&6
-build=$ac_cv_build
-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 
 
-echo "$as_me:$LINENO: checking host system type" >&5
-echo $ECHO_N "checking host system type... $ECHO_C" >&6
-if test "${ac_cv_host+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  if test "$MINIX" = yes; then
+
+$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+
+
+$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+
+
+$as_echo "#define _MINIX 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if ${ac_cv_safe_to_define___extensions__+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_cv_host_alias=$host_alias
-test -z "$ac_cv_host_alias" &&
-  ac_cv_host_alias=$ac_cv_build_alias
-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
-  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-fi
-echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-echo "${ECHO_T}$ac_cv_host" >&6
-host=$ac_cv_host
-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+#	  define __EXTENSIONS__ 1
+	  $ac_includes_default
+int
+main ()
+{
 
-
-echo "$as_me:$LINENO: checking target system type" >&5
-echo $ECHO_N "checking target system type... $ECHO_C" >&6
-if test "${ac_cv_target+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_safe_to_define___extensions__=yes
 else
-  ac_cv_target_alias=$target_alias
-test "x$ac_cv_target_alias" = "x" &&
-  ac_cv_target_alias=$ac_cv_host_alias
-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
-  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
+  ac_cv_safe_to_define___extensions__=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
+
+  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
+if ${ac_cv_c_const+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+  /* Ultrix mips cc rejects this.  */
+  typedef int charset[2];
+  const charset cs;
+  /* SunOS 4.1.1 cc rejects this.  */
+  char const *const *pcpcc;
+  char **ppc;
+  /* NEC SVR4.0.2 mips cc rejects this.  */
+  struct point {int x, y;};
+  static struct point const zero = {0,0};
+  /* AIX XL C 1.02.0.0 rejects this.
+     It does not let you subtract one const X* pointer from another in
+     an arm of an if-expression whose if-part is not a constant
+     expression */
+  const char *g = "string";
+  pcpcc = &g + (g ? g-g : 0);
+  /* HPUX 7.0 cc rejects these. */
+  ++pcpcc;
+  ppc = (char**) pcpcc;
+  pcpcc = (char const *const *) ppc;
+  { /* SCO 3.2v4 cc rejects this.  */
+    char *t;
+    char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+    *t++ = 0;
+    if (s) return 0;
+  }
+  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+    int x[] = {25, 17};
+    const int *foo = &x[0];
+    ++foo;
+  }
+  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+    typedef const int *iptr;
+    iptr p = 0;
+    ++p;
+  }
+  { /* AIX XL C 1.02.0.0 rejects this saying
+       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+    struct s { int j; const int *ap[3]; };
+    struct s *b; b->j = 5;
+  }
+  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+    const int foo = 10;
+    if (!foo) return 0;
+  }
+  return !cs[0] && !zero.x;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_const=yes
+else
+  ac_cv_c_const=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+$as_echo "$ac_cv_c_const" >&6; }
+if test $ac_cv_c_const = no; then
+
+$as_echo "#define const /**/" >>confdefs.h
 
 fi
-echo "$as_me:$LINENO: result: $ac_cv_target" >&5
-echo "${ECHO_T}$ac_cv_target" >&6
-target=$ac_cv_target
-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
 
-# The aliases save the names the user supplied, while $host etc.
-# will get canonicalized.
-test -n "$target_alias" &&
-  test "$program_prefix$program_suffix$program_transform_name" = \
-    NONENONEs,x,x, &&
-  program_prefix=${target_alias}-
-
-PARTIALTARGETOS=`echo $target_os | sed 's/[-._].*//'`
-
-
-# platform-specific compiler flags
-if test "x$PARTIALTARGETOS" = "xmingw32msvc"; then
-	CFLAGS="$CFLAGS -Dmingw32"
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
 
-# platform-specific linker flags
-case $target_os in
-    aix4.2*|aix4.3*|aix5*|aix6*)
-        echo "$as_me:$LINENO: checking what linker flags to add to enable runtime linking on AIX" >&5
-echo $ECHO_N "checking what linker flags to add to enable runtime linking on AIX... $ECHO_C" >&6
-        for ld_flag in $LDFLAGS; do
-            if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-                netsnmp_aix_runtimelinking_flags_ok=yes
-                break
-            fi
-        done
-        if test "X$netsnmp_aix_runtimelinking_flags_ok" != "Xyes"; then
-	    if test "x$GCC" = "xyes"; then
-	        netsnmp_aix_ldflags="-Wl,-brtl"
-	    else
-                netsnmp_aix_ldflags="-brtl"
-	    fi
-            LDFLAGS="$netsnmp_aix_ldflags $LDFLAGS"
-	    echo "$as_me:$LINENO: result: $netsnmp_aix_ldflags" >&5
-echo "${ECHO_T}$netsnmp_aix_ldflags" >&6
-	else
-	    echo "$as_me:$LINENO: result: none" >&5
-echo "${ECHO_T}none" >&6
-	fi
-	;;
-    darwin8*|darwin9*)
-        echo "$as_me:$LINENO: checking whether darwin ld might need -flat_namespace" >&5
-echo $ECHO_N "checking whether darwin ld might need -flat_namespace... $ECHO_C" >&6
-	if test -z "$MACOSX_DEPLOYMENT_TARGET"; then
-		LDFLAGS="-flat_namespace $LDFLAGS"
-		echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-	else
-		echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-	fi
-	;;
-    *)
-        ;;
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
 esac
 
-# libtool stuff for shared/static libraries.
+
+#       libtool stuff for shared/static libraries.
+#
+
+case `pwd` in
+  *\ * | *\	*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.4'
+macro_revision='1.3293'
 
 
 
 
-# Check whether --enable-shared or --disable-shared was given.
-if test "${enable_shared+set}" = set; then
-  enableval="$enable_shared"
-  p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_shared=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  enable_shared=yes
-fi;
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
 
-# Check whether --enable-static or --disable-static was given.
-if test "${enable_static+set}" = set; then
-  enableval="$enable_static"
-  p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_static=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_static=yes
-fi;
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
 
-# Check whether --enable-fast-install or --disable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then
-  enableval="$enable_fast_install"
-  p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-	IFS="$lt_save_ifs"
-	if test "X$pkg" = "X$p"; then
-	  enable_fast_install=yes
-	fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_fast_install=yes
-fi;
 
-echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
-echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
-if test "${lt_cv_path_SED+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  # Loop through the user's path and test for sed and gsed.
-# Then use that list of sed's as ones to test for truncation.
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO ""
+}
+
+case "$ECHO" in
+  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for lt_ac_prog in sed gsed; do
+    for ac_prog in sed gsed; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
-        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
-      fi
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
+# Check for GNU ac_path_SED and select it if it is found.
+  # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_SED_found && break 3
     done
   done
-done
-IFS=$as_save_IFS
-lt_ac_max=0
-lt_ac_count=0
-# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-# along with /bin/sed that truncates output.
-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-  test ! -f $lt_ac_sed && continue
-  cat /dev/null > conftest.in
-  lt_ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
-  # Check for GNU sed and select it if it is found.
-  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
-    lt_cv_path_SED=$lt_ac_sed
-    break
-  fi
-  while true; do
-    cat conftest.in conftest.in >conftest.tmp
-    mv conftest.tmp conftest.in
-    cp conftest.in conftest.nl
-    echo >>conftest.nl
-    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
-    cmp -s conftest.out conftest.nl || break
-    # 10000 chars as input seems more than enough
-    test $lt_ac_count -gt 10 && break
-    lt_ac_count=`expr $lt_ac_count + 1`
-    if test $lt_ac_count -gt $lt_ac_max; then
-      lt_ac_max=$lt_ac_count
-      lt_cv_path_SED=$lt_ac_sed
-    fi
   done
-done
-
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
+else
+  ac_cv_path_SED=$SED
 fi
 
-SED=$lt_cv_path_SED
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
 
-echo "$as_me:$LINENO: result: $SED" >&5
-echo "${ECHO_T}$SED" >&6
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
 
 
-# Check whether --with-gnu-ld or --without-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then
-  withval="$with_gnu_ld"
-  test "$withval" = no || with_gnu_ld=yes
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+   then ac_cv_path_FGREP="$GREP -F"
+   else
+     if test -z "$FGREP"; then
+  ac_path_FGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in fgrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+  # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'FGREP' >> "conftest.nl"
+    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_FGREP="$ac_path_FGREP"
+      ac_path_FGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_FGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_FGREP"; then
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_FGREP=$FGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+test -z "$GREP" && GREP=grep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
 else
   with_gnu_ld=no
-fi;
+fi
+
 ac_prog=ld
 if test "$GCC" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
-  echo "$as_me:$LINENO: checking for ld used by $CC" >&5
-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
   case $host in
   *-*-mingw*)
     # gcc leaves a trailing carriage return which upsets mingw
@@ -5054,9 +8128,9 @@
     [\\/]* | ?:[\\/]*)
       re_direlt='/[^/][^/]*/\.\./'
       # Canonicalize the pathname of ld
-      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
-      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
       done
       test -z "$LD" && LD="$ac_prog"
       ;;
@@ -5070,14 +8144,14 @@
     ;;
   esac
 elif test "$with_gnu_ld" = yes; then
-  echo "$as_me:$LINENO: checking for GNU ld" >&5
-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
 else
-  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
 fi
-if test "${lt_cv_path_LD+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -z "$LD"; then
   lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
@@ -5107,19 +8181,17 @@
 
 LD="$lt_cv_path_LD"
 if test -n "$LD"; then
-  echo "$as_me:$LINENO: result: $LD" >&5
-echo "${ECHO_T}$LD" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
-   { (exit 1); exit 1; }; }
-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
-if test "${lt_cv_prog_gnu_ld+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   # I'd rather use --version here, but apparently some GNU lds only accept -v.
 case `$LD -v 2>&1 </dev/null` in
@@ -5131,40 +8203,22 @@
   ;;
 esac
 fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
 with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
-echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
-if test "${lt_cv_ld_reload_flag+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_ld_reload_flag='-r'
-fi
-echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
 
-echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
-if test "${lt_cv_path_NM+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$NM"; then
   # Let the user override the test.
@@ -5207,1919 +8261,167 @@
     done
     IFS="$lt_save_ifs"
   done
-  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+  : ${lt_cv_path_NM=no}
 fi
 fi
-echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
-echo "${ECHO_T}$lt_cv_path_NM" >&6
-NM="$lt_cv_path_NM"
-
-echo "$as_me:$LINENO: checking whether ln -s works" >&5
-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
 else
-  echo "$as_me:$LINENO: result: no, using $LN_S" >&5
-echo "${ECHO_T}no, using $LN_S" >&6
-fi
-
-echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5
-echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6
-if test "${lt_cv_deplibs_check_method+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix[4-9]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[45]*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  if ( file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
   else
-    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[3-9]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd*)
-  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-nto-qnx*)
-  lt_cv_deplibs_check_method=unknown
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
-
-fi
-echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then
-  enableval="$enable_libtool_lock"
-
-fi;
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-    case `/usr/bin/file conftest.$ac_objext` in
-    *ELF-32*)
-      HPUX_IA64_MODE="32"
-      ;;
-    *ELF-64*)
-      HPUX_IA64_MODE="64"
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '#line 5463 "configure"' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-   if test "$lt_cv_prog_gnu_ld" = yes; then
-    case `/usr/bin/file conftest.$ac_objext` in
-    *32-bit*)
-      LD="${LD-ld} -melf32bsmip"
-      ;;
-    *N32*)
-      LD="${LD-ld} -melf32bmipn32"
-      ;;
-    *64-bit*)
-      LD="${LD-ld} -melf64bmip"
-      ;;
-    esac
-   else
-    case `/usr/bin/file conftest.$ac_objext` in
-    *32-bit*)
-      LD="${LD-ld} -32"
-      ;;
-    *N32*)
-      LD="${LD-ld} -n32"
-      ;;
-    *64-bit*)
-      LD="${LD-ld} -64"
-      ;;
-    esac
-   fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
-s390*-*linux*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-    case `/usr/bin/file conftest.o` in
-    *32-bit*)
-      case $host in
-        x86_64-*kfreebsd*-gnu)
-          LD="${LD-ld} -m elf_i386_fbsd"
-          ;;
-        x86_64-*linux*)
-          LD="${LD-ld} -m elf_i386"
-          ;;
-        ppc64-*linux*|powerpc64-*linux*)
-          LD="${LD-ld} -m elf32ppclinux"
-          ;;
-        s390x-*linux*)
-          LD="${LD-ld} -m elf_s390"
-          ;;
-        sparc64-*linux*)
-          LD="${LD-ld} -m elf32_sparc"
-          ;;
-      esac
-      ;;
-    *64-bit*)
-      case $host in
-        x86_64-*kfreebsd*-gnu)
-          LD="${LD-ld} -m elf_x86_64_fbsd"
-          ;;
-        x86_64-*linux*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        ppc*-*linux*|powerpc*-*linux*)
-          LD="${LD-ld} -m elf64ppc"
-          ;;
-        s390*-*linux*)
-          LD="${LD-ld} -m elf64_s390"
-          ;;
-        sparc*-*linux*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
-if test "${lt_cv_cc_needs_belf+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-     cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  lt_cv_cc_needs_belf=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-lt_cv_cc_needs_belf=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-     ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-sparc*-*solaris*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-    case `/usr/bin/file conftest.o` in
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)
-        if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
-	  LD="${LD-ld} -64"
-	fi
-	;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-cygwin* | *-*-mingw* | *-*-pw32*)
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_DLLTOOL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  echo "$as_me:$LINENO: result: $DLLTOOL" >&5
-echo "${ECHO_T}$DLLTOOL" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_prog_ac_ct_DLLTOOL" && ac_cv_prog_ac_ct_DLLTOOL="false"
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5
-echo "${ECHO_T}$ac_ct_DLLTOOL" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  DLLTOOL=$ac_ct_DLLTOOL
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
-
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
-set dummy ${ac_tool_prefix}as; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_AS+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$AS"; then
-  ac_cv_prog_AS="$AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AS="${ac_tool_prefix}as"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
-  echo "$as_me:$LINENO: result: $AS" >&5
-echo "${ECHO_T}$AS" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_AS"; then
-  ac_ct_AS=$AS
-  # Extract the first word of "as", so it can be a program name with args.
-set dummy as; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_AS+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_AS"; then
-  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AS="as"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_prog_ac_ct_AS" && ac_cv_prog_ac_ct_AS="false"
-fi
-fi
-ac_ct_AS=$ac_cv_prog_ac_ct_AS
-if test -n "$ac_ct_AS"; then
-  echo "$as_me:$LINENO: result: $ac_ct_AS" >&5
-echo "${ECHO_T}$ac_ct_AS" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  AS=$ac_ct_AS
-else
-  AS="$ac_cv_prog_AS"
-fi
-
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_OBJDUMP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  echo "$as_me:$LINENO: result: $OBJDUMP" >&5
-echo "${ECHO_T}$OBJDUMP" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_prog_ac_ct_OBJDUMP" && ac_cv_prog_ac_ct_OBJDUMP="false"
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5
-echo "${ECHO_T}$ac_ct_OBJDUMP" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  OBJDUMP=$ac_ct_OBJDUMP
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
-
-  ;;
-
-esac
-
-need_locks="$enable_libtool_lock"
-
-
-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_header_stdc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_stdc=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ctype.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      exit(2);
-  exit (0);
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_header_stdc=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-
-
-
-
-
-
-
-
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-		  inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-for ac_header in dlfcn.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in dumpbin "link -dump"
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+  if test -n "$DUMPBIN"; then
+  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
 fi
 fi
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
-  echo "$as_me:$LINENO: result: $CXX" >&5
-echo "${ECHO_T}$CXX" >&6
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-    test -n "$CXX" && break
+
+    test -n "$DUMPBIN" && break
   done
 fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+if test -z "$DUMPBIN"; then
+  ac_ct_DUMPBIN=$DUMPBIN
+  for ac_prog in dumpbin "link -dump"
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_CXX"; then
-  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+  if test -n "$ac_ct_DUMPBIN"; then
+  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CXX="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
-
-fi
-fi
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
-echo "${ECHO_T}$ac_ct_CXX" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  test -n "$ac_ct_CXX" && break
-done
-test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
-
-  CXX=$ac_ct_CXX
-fi
-
-
-# Provide some information about the compiler.
-echo "$as_me:$LINENO:" \
-     "checking for C++ compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
-  (eval $ac_compiler --version </dev/null >&5) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
-  (eval $ac_compiler -v </dev/null >&5) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
-  (eval $ac_compiler -V </dev/null >&5) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-
-echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_compiler_gnu=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_compiler_gnu=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
-GXX=`test $ac_compiler_gnu = yes && echo yes`
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-CXXFLAGS="-g"
-echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
-if test "${ac_cv_prog_cxx_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_prog_cxx_g=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_prog_cxx_g=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-g"
-  fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS="-O2"
-  else
-    CXXFLAGS=
-  fi
-fi
-for ac_declaration in \
-   '' \
-   'extern "C" void std::exit (int) throw (); using std::exit;' \
-   'extern "C" void std::exit (int); using std::exit;' \
-   'extern "C" void exit (int) throw ();' \
-   'extern "C" void exit (int);' \
-   'void exit (int);'
-do
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_declaration
-#include <stdlib.h>
-int
-main ()
-{
-exit (42);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-continue
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_declaration
-int
-main ()
-{
-exit (42);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-rm -f conftest*
-if test -n "$ac_declaration"; then
-  echo '#ifdef __cplusplus' >>confdefs.h
-  echo $ac_declaration      >>confdefs.h
-  echo '#endif'             >>confdefs.h
-fi
-
-ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
-echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
-if test -z "$CXXCPP"; then
-  if test "${ac_cv_prog_CXXCPP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-      # Double quotes because CXXCPP needs to be expanded
-    for CXXCPP in "$CXX -E" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_cxx_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether non-existent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_cxx_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  # Broken: success on invalid input.
-continue
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  break
-fi
-
-    done
-    ac_cv_prog_CXXCPP=$CXXCPP
-
-fi
-  CXXCPP=$ac_cv_prog_CXXCPP
-else
-  ac_cv_prog_CXXCPP=$CXXCPP
-fi
-echo "$as_me:$LINENO: result: $CXXCPP" >&5
-echo "${ECHO_T}$CXXCPP" >&6
-ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-		     Syntax error
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_cxx_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether non-existent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_cxx_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  # Broken: success on invalid input.
-continue
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  :
-else
-  { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
-See \`config.log' for more details." >&5
-echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-fi
-
-
-ac_ext=f
-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_f77_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_F77+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$F77"; then
-  ac_cv_prog_F77="$F77" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-F77=$ac_cv_prog_F77
-if test -n "$F77"; then
-  echo "$as_me:$LINENO: result: $F77" >&5
-echo "${ECHO_T}$F77" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-    test -n "$F77" && break
   done
+IFS=$as_save_IFS
+
 fi
-if test -z "$F77"; then
-  ac_ct_F77=$F77
-  for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
 else
-  if test -n "$ac_ct_F77"; then
-  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_F77="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_DUMPBIN" && break
 done
 
-fi
-fi
-ac_ct_F77=$ac_cv_prog_ac_ct_F77
-if test -n "$ac_ct_F77"; then
-  echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
-echo "${ECHO_T}$ac_ct_F77" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  test -n "$ac_ct_F77" && break
-done
-
-  F77=$ac_ct_F77
-fi
-
-
-# Provide some information about the compiler.
-echo "$as_me:6971:" \
-     "checking for Fortran 77 compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
-  (eval $ac_compiler --version </dev/null >&5) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
-  (eval $ac_compiler -v </dev/null >&5) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
-  (eval $ac_compiler -V </dev/null >&5) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-rm -f a.out
-
-# If we don't use `.F' as extension, the preprocessor is not run on the
-# input file.  (Note that this only needs to work for GNU compilers.)
-ac_save_ext=$ac_ext
-ac_ext=F
-echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
-if test "${ac_cv_f77_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-      program main
-#ifndef __GNUC__
-       choke me
-#endif
-
-      end
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_f77_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_compiler_gnu=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_compiler_gnu=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_f77_compiler_gnu=$ac_compiler_gnu
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
-ac_ext=$ac_save_ext
-ac_test_FFLAGS=${FFLAGS+set}
-ac_save_FFLAGS=$FFLAGS
-FFLAGS=
-echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
-echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
-if test "${ac_cv_prog_f77_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  FFLAGS=-g
-cat >conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_f77_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_prog_f77_g=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_prog_f77_g=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
-echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
-if test "$ac_test_FFLAGS" = set; then
-  FFLAGS=$ac_save_FFLAGS
-elif test $ac_cv_prog_f77_g = yes; then
-  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
-    FFLAGS="-g -O2"
+  if test "x$ac_ct_DUMPBIN" = x; then
+    DUMPBIN=":"
   else
-    FFLAGS="-g"
-  fi
-else
-  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
-    FFLAGS="-O2"
-  else
-    FFLAGS=
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DUMPBIN=$ac_ct_DUMPBIN
   fi
 fi
 
-G77=`test $ac_compiler_gnu = yes && echo yes`
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
 
 
 
-# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+  cat conftest.out >&5
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
+
 # find the maximum length of command line arguments
-echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
-if test "${lt_cv_sys_max_cmd_len+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
     i=0
   teststring="ABCD"
@@ -7140,7 +8442,7 @@
     lt_cv_sys_max_cmd_len=-1;
     ;;
 
-  cygwin* | mingw*)
+  cygwin* | mingw* | cegcc*)
     # On Win9x/ME, this test blows up -- it succeeds, but takes
     # about 5 minutes as the teststring grows exponentially.
     # Worse, since 9x/ME are not pre-emptively multitasking,
@@ -7151,6 +8453,11 @@
     lt_cv_sys_max_cmd_len=8192;
     ;;
 
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
   amigaos*)
     # On AmigaOS with pdksh, this test takes hours, literally.
     # So we just punt and use a minimum line length of 8192.
@@ -7195,7 +8502,7 @@
   sysv5* | sco5v6* | sysv4.2uw2*)
     kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
     if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ 	]//'`
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
     else
       lt_cv_sys_max_cmd_len=32768
     fi
@@ -7206,20 +8513,28 @@
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
     else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
       SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
-	       = "XX$teststring") >/dev/null 2>&1 &&
-	      new_result=`expr "X$teststring" : ".*" 2>&1` &&
-	      lt_cv_sys_max_cmd_len=$new_result &&
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
 	      test $i != 17 # 1/2 MB should be enough
       do
         i=`expr $i + 1`
         teststring=$teststring$teststring
       done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
       teststring=
-      # Add a significant safety factor because C++ compilers can tack on massive
-      # amounts of additional arguments before passing them to the linker.
-      # It appears as though 1/2 is a usable value.
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
     fi
     ;;
@@ -7228,22 +8543,1159 @@
 fi
 
 if test -n $lt_cv_sys_max_cmd_len ; then
-  echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
 else
-  echo "$as_me:$LINENO: result: none" >&5
-echo "${ECHO_T}none" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+
+
+
+
+
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,b/c, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
 fi
 
 
 
 
 
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
+
+fi
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test "$GCC" != yes; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[3-9]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh
+  # decide which to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in ar
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$AR" && break
+  done
+fi
+if test -z "$AR"; then
+  ac_ct_AR=$AR
+  for ac_prog in ar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AR="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_AR" && break
+done
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+fi
+
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ar_at_file=no
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+      if test "$ac_status" -eq 0; then
+	# Ensure the archiver fails upon bogus file names.
+	rm -f conftest.$ac_objext libconftest.a
+	{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	if test "$ac_status" -ne 0; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
+
+if test "x$lt_cv_ar_at_file" = xno; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+test -z "$STRIP" && STRIP=:
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+test -z "$RANLIB" && RANLIB=:
+
+
+
+
+
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
 # Check for command to grab the raw symbol name followed by C symbol from nm.
-echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
-echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
-if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
 
 # These are sane defaults that work on at least a few old systems.
@@ -7255,33 +9707,18 @@
 # Regexp to match symbols that can be accessed directly from C.
 sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
 
-# Transform an extracted symbol line into a proper C declaration
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
-
 # Define system-specific variables.
 case $host_os in
 aix*)
   symcode='[BCDT]'
   ;;
-cygwin* | mingw* | pw32*)
+cygwin* | mingw* | pw32* | cegcc*)
   symcode='[ABCDGISTW]'
   ;;
-hpux*) # Its linker distinguishes data from code symbols
+hpux*)
   if test "$host_cpu" = ia64; then
     symcode='[ABCDEGRST]'
   fi
-  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
-  ;;
-linux* | k*bsd*-gnu)
-  if test "$host_cpu" = ia64; then
-    symcode='[ABCDGIRSTW]'
-    lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-    lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
-  fi
   ;;
 irix* | nonstopux*)
   symcode='[BCDEGRST]'
@@ -7306,57 +9743,86 @@
   ;;
 esac
 
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
 # If we're using GNU nm, then use its standard symbol codes.
 case `$NM -V 2>&1` in
 *GNU* | *'with BFD'*)
   symcode='[ABCDGIRSTW]' ;;
 esac
 
-# Try without a prefix undercore, then with it.
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
 for ac_symprfx in "" "_"; do
 
   # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
   symxfrm="\\1 $ac_symprfx\\2 \\2"
 
   # Write the raw and C identifiers.
-  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ 	]\($symcode$symcode*\)[ 	][ 	]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK '"\
+"     {last_section=section; section=\$ 3};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
 
   # Check to see that the pipe works correctly.
   pipe_works=no
 
   rm -f conftest*
-  cat > conftest.$ac_ext <<EOF
+  cat > conftest.$ac_ext <<_LT_EOF
 #ifdef __cplusplus
 extern "C" {
 #endif
 char nm_test_var;
-void nm_test_func(){}
+void nm_test_func(void);
+void nm_test_func(void){}
 #ifdef __cplusplus
 }
 #endif
 int main(){nm_test_var='a';nm_test_func();return(0);}
-EOF
+_LT_EOF
 
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
     # Now try to grab the symbols.
     nlist=conftest.nm
-    if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
-  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s "$nlist"; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "$nlist"; then
       # Try sorting and uniquifying the output.
       if sort "$nlist" | uniq > "$nlist"T; then
 	mv -f "$nlist"T "$nlist"
@@ -7365,57 +9831,71 @@
       fi
 
       # Make sure that we snagged all the symbols we need.
-      if grep ' nm_test_var$' "$nlist" >/dev/null; then
-	if grep ' nm_test_func$' "$nlist" >/dev/null; then
-	  cat <<EOF > conftest.$ac_ext
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-EOF
+_LT_EOF
 	  # Now generate the symbol file.
-	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
 
-	  cat <<EOF >> conftest.$ac_ext
-#if defined (__STDC__) && __STDC__
-# define lt_ptr_t void *
-#else
-# define lt_ptr_t char *
-# define const
-#endif
+	  cat <<_LT_EOF >> conftest.$ac_ext
 
-/* The mapping between symbol names and symbols. */
-const struct {
+/* The mapping between symbol names and symbols.  */
+LT_DLSYM_CONST struct {
   const char *name;
-  lt_ptr_t address;
+  void       *address;
 }
-lt_preloaded_symbols[] =
+lt__PROGRAM__LTX_preloaded_symbols[] =
 {
-EOF
-	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
-	  cat <<\EOF >> conftest.$ac_ext
-  {0, (lt_ptr_t) 0}
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
 };
 
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
 #ifdef __cplusplus
 }
 #endif
-EOF
+_LT_EOF
 	  # Now try linking the two files.
 	  mv conftest.$ac_objext conftstm.$ac_objext
-	  lt_save_LIBS="$LIBS"
-	  lt_save_CFLAGS="$CFLAGS"
+	  lt_globsym_save_LIBS=$LIBS
+	  lt_globsym_save_CFLAGS=$CFLAGS
 	  LIBS="conftstm.$ac_objext"
 	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-	  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext}; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
 	    pipe_works=yes
 	  fi
-	  LIBS="$lt_save_LIBS"
-	  CFLAGS="$lt_save_CFLAGS"
+	  LIBS=$lt_globsym_save_LIBS
+	  CFLAGS=$lt_globsym_save_CFLAGS
 	else
 	  echo "cannot find nm_test_func in $nlist" >&5
 	fi
@@ -7445,17 +9925,1501 @@
   lt_cv_sys_global_symbol_to_cdecl=
 fi
 if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  echo "$as_me:$LINENO: result: failed" >&5
-echo "${ECHO_T}failed" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
 else
-  echo "$as_me:$LINENO: result: ok" >&5
-echo "${ECHO_T}ok" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
 fi
 
-echo "$as_me:$LINENO: checking for objdir" >&5
-echo $ECHO_N "checking for objdir... $ECHO_C" >&6
-if test "${lt_cv_objdir+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
+  nm_file_list_spec='@'
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+  withval=$with_sysroot;
+else
+  with_sysroot=no
+fi
+
+
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+$as_echo "${with_sysroot}" >&6; }
+   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+   ;;
+esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+  enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+	HPUX_IA64_MODE="32"
+	;;
+      *ELF-64*)
+	HPUX_IA64_MODE="64"
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -melf32bsmip"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -melf32bmipn32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -melf64bmip"
+	;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -32"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -n32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -64"
+	  ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_i386_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_i386"
+	    ;;
+	  ppc64-*linux*|powerpc64-*linux*)
+	    LD="${LD-ld} -m elf32ppclinux"
+	    ;;
+	  s390x-*linux*)
+	    LD="${LD-ld} -m elf_s390"
+	    ;;
+	  sparc64-*linux*)
+	    LD="${LD-ld} -m elf32_sparc"
+	    ;;
+	esac
+	;;
+      *64-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_x86_64_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_x86_64"
+	    ;;
+	  ppc*-*linux*|powerpc*-*linux*)
+	    LD="${LD-ld} -m elf64ppc"
+	    ;;
+	  s390*-*linux*|s390*-*tpf*)
+	    LD="${LD-ld} -m elf64_s390"
+	    ;;
+	  sparc*-*linux*)
+	    LD="${LD-ld} -m elf64_sparc"
+	    ;;
+	esac
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_cc_needs_belf=yes
+else
+  lt_cv_cc_needs_belf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)
+	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+	  LD="${LD-ld} -64"
+	fi
+	;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$MANIFEST_TOOL"; then
+  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+  # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_MANIFEST_TOOL"; then
+  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_MANIFEST_TOOL" = x; then
+    MANIFEST_TOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+  fi
+else
+  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
+fi
+
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&5
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+  MANIFEST_TOOL=:
+fi
+
+
+
+
+
+
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DSYMUTIL=$ac_ct_DSYMUTIL
+  fi
+else
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    NMEDIT=$ac_ct_NMEDIT
+  fi
+else
+  NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LIPO"; then
+  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+  ac_ct_LIPO=$LIPO
+  # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_LIPO"; then
+  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_LIPO="lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_LIPO" = x; then
+    LIPO=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    LIPO=$ac_ct_LIPO
+  fi
+else
+  LIPO="$ac_cv_prog_LIPO"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+  ac_ct_OTOOL=$OTOOL
+  # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL"; then
+  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OTOOL="otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL" = x; then
+    OTOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL=$ac_ct_OTOOL
+  fi
+else
+  OTOOL="$ac_cv_prog_OTOOL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL64"; then
+  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+  ac_ct_OTOOL64=$OTOOL64
+  # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL64"; then
+  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OTOOL64="otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OTOOL64" = x; then
+    OTOOL64=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL64=$ac_ct_OTOOL64
+  fi
+else
+  OTOOL64="$ac_cv_prog_OTOOL64"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+	# By default we will add the -single_module flag. You can override
+	# by either setting the environment variable LT_MULTI_MODULE
+	# non-empty at configure time, or by adding -multi_module to the
+	# link flags.
+	rm -rf libconftest.dylib*
+	echo "int foo(void){return 1;}" > conftest.c
+	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	  lt_cv_apple_cc_single_mod=yes
+	else
+	  cat conftest.err >&5
+	fi
+	rm -rf libconftest.dylib*
+	rm -f conftest.*
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_ld_exported_symbols_list=yes
+else
+  lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+	LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+      echo "$AR cru libconftest.a conftest.o" >&5
+      $AR cru libconftest.a conftest.o 2>&5
+      echo "$RANLIB libconftest.a" >&5
+      $RANLIB libconftest.a 2>&5
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+	lt_cv_ld_force_load=yes
+      else
+	cat conftest.err >&5
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+    case $host_os in
+    rhapsody* | darwin1.[012])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+	10.[012]*)
+	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+	10.*)
+	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+
+for ac_header in dlfcn.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+# Set options
+enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AS"; then
+  ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AS="${ac_tool_prefix}as"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AS"; then
+  ac_ct_AS=$AS
+  # Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AS"; then
+  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AS="as"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
+$as_echo "$ac_ct_AS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_AS" = x; then
+    AS="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AS=$ac_ct_AS
+  fi
+else
+  AS="$ac_cv_prog_AS"
+fi
+
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+  ;;
+esac
+
+test -z "$AS" && AS=as
+
+
+
+
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+
+        enable_dlopen=no
+
+
+
+            # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+  # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=yes
+fi
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+  withval=$with_pic; pic_mode="$withval"
+else
+  pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+  # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+  enableval=$enable_fast_install; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   rm -f .libs 2>/dev/null
 mkdir .libs 2>/dev/null
@@ -7467,14 +11431,21 @@
 fi
 rmdir .libs 2>/dev/null
 fi
-echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
-echo "${ECHO_T}$lt_cv_objdir" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
 objdir=$lt_cv_objdir
 
 
 
 
 
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
+
+
+
+
 case $host_os in
 aix3*)
   # AIX sometimes has problems with the GCC collect2 program.  For some
@@ -7487,314 +11458,26 @@
   ;;
 esac
 
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed='sed -e 1s/^X//'
-sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-# Constants:
-rm="rm -f"
-
 # Global variables:
-default_ofile=libtool
+ofile=libtool
 can_build_shared=yes
 
 # All known linkers require a `.a' archive for static linking (except MSVC,
 # which needs '.lib').
 libext=a
-ltmain="$ac_aux_dir/ltmain.sh"
-ofile="$default_ofile"
+
 with_gnu_ld="$lt_cv_prog_gnu_ld"
 
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_AR+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="${ac_tool_prefix}ar"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  echo "$as_me:$LINENO: result: $AR" >&5
-echo "${ECHO_T}$AR" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_AR"; then
-  ac_ct_AR=$AR
-  # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="ar"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
-echo "${ECHO_T}$ac_ct_AR" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  AR=$ac_ct_AR
-else
-  AR="$ac_cv_prog_AR"
-fi
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_RANLIB+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  echo "$as_me:$LINENO: result: $RANLIB" >&5
-echo "${ECHO_T}$RANLIB" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
-echo "${ECHO_T}$ac_ct_RANLIB" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  RANLIB=$ac_ct_RANLIB
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  echo "$as_me:$LINENO: result: $STRIP" >&5
-echo "${ECHO_T}$STRIP" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-echo "${ECHO_T}$ac_ct_STRIP" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  STRIP=$ac_ct_STRIP
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-
 old_CC="$CC"
 old_CFLAGS="$CFLAGS"
 
 # Set sane defaults for various variables
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-test -z "$AS" && AS=as
 test -z "$CC" && CC=cc
 test -z "$LTCC" && LTCC=$CC
 test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$DLLTOOL" && DLLTOOL=dlltool
 test -z "$LD" && LD=ld
-test -z "$LN_S" && LN_S="ln -s"
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-test -z "$NM" && NM=nm
-test -z "$SED" && SED=sed
-test -z "$OBJDUMP" && OBJDUMP=objdump
-test -z "$RANLIB" && RANLIB=:
-test -z "$STRIP" && STRIP=:
 test -z "$ac_objext" && ac_objext=o
 
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-fi
-
 for cc_temp in $compiler""; do
   case $cc_temp in
     compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
@@ -7803,17 +11486,18 @@
     *) break;;
   esac
 done
-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
 
 
 # Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
 case $deplibs_check_method in
 file_magic*)
   if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   case $MAGIC_CMD in
 [\\/*] |  ?:[\\/]*)
@@ -7837,7 +11521,7 @@
 	    $EGREP "$file_magic_regex" > /dev/null; then
 	    :
 	  else
-	    cat <<EOF 1>&2
+	    cat <<_LT_EOF 1>&2
 
 *** Warning: the command libtool uses to detect shared libraries,
 *** $file_magic_cmd, produces output that libtool cannot recognize.
@@ -7848,7 +11532,7 @@
 *** may want to report the problem to your system manager and/or to
 *** bug-libtool@gnu.org
 
-EOF
+_LT_EOF
 	  fi ;;
 	esac
       fi
@@ -7863,19 +11547,23 @@
 
 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
 if test -n "$MAGIC_CMD"; then
-  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
-echo "${ECHO_T}$MAGIC_CMD" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+
+
+
+
 if test -z "$lt_cv_path_MAGIC_CMD"; then
   if test -n "$ac_tool_prefix"; then
-    echo "$as_me:$LINENO: checking for file" >&5
-echo $ECHO_N "checking for file... $ECHO_C" >&6
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   case $MAGIC_CMD in
 [\\/*] |  ?:[\\/]*)
@@ -7899,7 +11587,7 @@
 	    $EGREP "$file_magic_regex" > /dev/null; then
 	    :
 	  else
-	    cat <<EOF 1>&2
+	    cat <<_LT_EOF 1>&2
 
 *** Warning: the command libtool uses to detect shared libraries,
 *** $file_magic_cmd, produces output that libtool cannot recognize.
@@ -7910,7 +11598,7 @@
 *** may want to report the problem to your system manager and/or to
 *** bug-libtool@gnu.org
 
-EOF
+_LT_EOF
 	  fi ;;
 	esac
       fi
@@ -7925,13 +11613,14 @@
 
 MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
 if test -n "$MAGIC_CMD"; then
-  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
-echo "${ECHO_T}$MAGIC_CMD" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+
   else
     MAGIC_CMD=:
   fi
@@ -7941,311 +11630,8 @@
   ;;
 esac
 
-
-  case $host_os in
-    rhapsody* | darwin*)
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_DSYMUTIL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$DSYMUTIL"; then
-  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-DSYMUTIL=$ac_cv_prog_DSYMUTIL
-if test -n "$DSYMUTIL"; then
-  echo "$as_me:$LINENO: result: $DSYMUTIL" >&5
-echo "${ECHO_T}$DSYMUTIL" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_DSYMUTIL"; then
-  ac_ct_DSYMUTIL=$DSYMUTIL
-  # Extract the first word of "dsymutil", so it can be a program name with args.
-set dummy dsymutil; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_DSYMUTIL"; then
-  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_prog_ac_ct_DSYMUTIL" && ac_cv_prog_ac_ct_DSYMUTIL=":"
-fi
-fi
-ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
-if test -n "$ac_ct_DSYMUTIL"; then
-  echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5
-echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  DSYMUTIL=$ac_ct_DSYMUTIL
-else
-  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
-fi
-
-    if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
-set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_NMEDIT+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$NMEDIT"; then
-  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-NMEDIT=$ac_cv_prog_NMEDIT
-if test -n "$NMEDIT"; then
-  echo "$as_me:$LINENO: result: $NMEDIT" >&5
-echo "${ECHO_T}$NMEDIT" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_NMEDIT"; then
-  ac_ct_NMEDIT=$NMEDIT
-  # Extract the first word of "nmedit", so it can be a program name with args.
-set dummy nmedit; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_NMEDIT"; then
-  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_NMEDIT="nmedit"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_prog_ac_ct_NMEDIT" && ac_cv_prog_ac_ct_NMEDIT=":"
-fi
-fi
-ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
-if test -n "$ac_ct_NMEDIT"; then
-  echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5
-echo "${ECHO_T}$ac_ct_NMEDIT" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  NMEDIT=$ac_ct_NMEDIT
-else
-  NMEDIT="$ac_cv_prog_NMEDIT"
-fi
-
-
-    echo "$as_me:$LINENO: checking for -single_module linker flag" >&5
-echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6
-if test "${lt_cv_apple_cc_single_mod+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_apple_cc_single_mod=no
-      if test -z "${LT_MULTI_MODULE}"; then
-   # By default we will add the -single_module flag. You can override
-   # by either setting the environment variable LT_MULTI_MODULE
-   # non-empty at configure time, or by adding -multi_module to the
-   # link flags.
-   echo "int foo(void){return 1;}" > conftest.c
-   $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-     -dynamiclib ${wl}-single_module conftest.c
-   if test -f libconftest.dylib; then
-     lt_cv_apple_cc_single_mod=yes
-     rm -rf libconftest.dylib*
-   fi
-   rm conftest.c
-      fi
-fi
-echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5
-echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6
-    echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5
-echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6
-if test "${lt_cv_ld_exported_symbols_list+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_ld_exported_symbols_list=no
-      save_LDFLAGS=$LDFLAGS
-      echo "_main" > conftest.sym
-      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  lt_cv_ld_exported_symbols_list=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-lt_cv_ld_exported_symbols_list=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5
-echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6
-    case $host_os in
-    rhapsody* | darwin1.[0123])
-      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
-     _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*)
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-   10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-     _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-   10.[012]*)
-     _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-   10.*)
-     _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
-    ;;
-  esac
-    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
-      _lt_dar_single_mod='$single_module'
-    fi
-    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
-      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
-    else
-      _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}"
-    fi
-    if test "$DSYMUTIL" != ":"; then
-      _lt_dsymutil="~$DSYMUTIL \$lib || :"
-    else
-      _lt_dsymutil=
-    fi
-    ;;
-  esac
-
-
-enable_dlopen=yes
-enable_win32_dll=yes
-
-# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then
-  enableval="$enable_libtool_lock"
-
-fi;
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-
-# Check whether --with-pic or --without-pic was given.
-if test "${with_pic+set}" = set; then
-  withval="$with_pic"
-  pic_mode="$withval"
-else
-  pic_mode=default
-fi;
-test -z "$pic_mode" && pic_mode=default
-
 # Use C for the default configuration in the libtool script
-tagname=
+
 lt_save_CC="$CC"
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -8268,6 +11654,11 @@
 lt_simple_link_test_code='int main(){return(0);}'
 
 
+
+
+
+
+
 # If no C compiler was specified, use CC.
 LTCC=${LTCC-"$CC"}
 
@@ -8277,35 +11668,47 @@
 # Allow CC to be a program name with arguments.
 compiler=$CC
 
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
 
 # save warnings/boilerplate of simple test code
 ac_outfile=conftest.$ac_objext
 echo "$lt_simple_compile_test_code" >conftest.$ac_ext
 eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_compiler_boilerplate=`cat conftest.err`
-$rm conftest*
+$RM conftest*
 
 ac_outfile=conftest.$ac_objext
 echo "$lt_simple_link_test_code" >conftest.$ac_ext
 eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_linker_boilerplate=`cat conftest.err`
-$rm -r conftest*
+$RM -r conftest*
 
 
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
 
 lt_prog_compiler_no_builtin_flag=
 
 if test "$GCC" = yes; then
-  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+  case $cc_basename in
+  nvcc*)
+    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+  *)
+    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+  esac
 
-
-echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_rtti_exceptions=no
-  ac_outfile=conftest.$ac_objext
+   ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
    lt_compiler_flag="-fno-rtti -fno-exceptions"
    # Insert the option either (1) after the last *FLAGS variable, or
@@ -8317,25 +11720,25 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8320: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8324: \$? = $ac_status" >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
-     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_rtti_exceptions=yes
      fi
    fi
-   $rm conftest*
+   $RM conftest*
 
 fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
 
 if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
     lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
@@ -8345,12 +11748,15 @@
 
 fi
 
-lt_prog_compiler_wl=
+
+
+
+
+
+  lt_prog_compiler_wl=
 lt_prog_compiler_pic=
 lt_prog_compiler_static=
 
-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
 
   if test "$GCC" = yes; then
     lt_prog_compiler_wl='-Wl,'
@@ -8366,17 +11772,25 @@
       ;;
 
     amigaos*)
-      # FIXME: we need at least 68020 code to build shared libraries, but
-      # adding the `-m68020' flag to GCC prevents building anything better,
-      # like `-m68040'.
-      lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
       ;;
 
     beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
       # PIC is the default for these OSes.
       ;;
 
-    mingw* | cygwin* | pw32* | os2*)
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
       # Although the cygwin gcc ignores -fPIC, still need this for old-style
@@ -8390,6 +11804,26 @@
       lt_prog_compiler_pic='-fno-common'
       ;;
 
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static=
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='-fPIC'
+	;;
+      esac
+      ;;
+
     interix[3-9]*)
       # Interix 3.x gcc -fpic/-fPIC options generate broken code.
       # Instead, we relocate shared libraries at runtime.
@@ -8402,29 +11836,29 @@
       enable_shared=no
       ;;
 
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
     sysv4*MP*)
       if test -d /usr/nec; then
 	lt_prog_compiler_pic=-Kconform_pic
       fi
       ;;
 
-    hpux*)
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic='-fPIC'
-	;;
-      esac
-      ;;
-
     *)
       lt_prog_compiler_pic='-fPIC'
       ;;
     esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      lt_prog_compiler_wl='-Xlinker '
+      lt_prog_compiler_pic='-Xcompiler -fPIC'
+      ;;
+    esac
   else
     # PORTME Check for flag to pass linker flags through the system compiler.
     case $host_os in
@@ -8437,18 +11871,8 @@
 	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
       fi
       ;;
-      darwin*)
-        # PIC is the default on this platform
-        # Common symbols not allowed in MH_DYLIB files
-       case $cc_basename in
-         xlc*)
-         lt_prog_compiler_pic='-qnocommon'
-         lt_prog_compiler_wl='-Wl,'
-         ;;
-       esac
-       ;;
 
-    mingw* | cygwin* | pw32* | os2*)
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
       lt_prog_compiler_pic='-DDLL_EXPORT'
@@ -8476,19 +11900,34 @@
       lt_prog_compiler_static='-non_shared'
       ;;
 
-    newsos6)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
-
-    linux* | k*bsd*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
       case $cc_basename in
-      icc* | ecc*)
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
 	lt_prog_compiler_wl='-Wl,'
 	lt_prog_compiler_pic='-KPIC'
 	lt_prog_compiler_static='-static'
         ;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='--shared'
+	lt_prog_compiler_static='--static'
+	;;
+      nagfor*)
+	# NAG Fortran compiler
+	lt_prog_compiler_wl='-Wl,-Wl,,'
+	lt_prog_compiler_pic='-PIC'
+	lt_prog_compiler_static='-Bstatic'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
         # Portland Group compilers (*not* the Pentium gcc compiler,
 	# which looks to be a dead project)
 	lt_prog_compiler_wl='-Wl,'
@@ -8500,25 +11939,42 @@
         # All Alpha code is PIC.
         lt_prog_compiler_static='-non_shared'
         ;;
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-qpic'
+	lt_prog_compiler_static='-qstaticlink'
+	;;
       *)
-        case `$CC -V 2>&1 | sed 5q` in
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ F* | *Sun*Fortran*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl=''
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  lt_prog_compiler_pic='-KPIC'
 	  lt_prog_compiler_static='-Bstatic'
 	  lt_prog_compiler_wl='-Wl,'
 	  ;;
-	*Sun\ F*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic='-KPIC'
-	  lt_prog_compiler_static='-Bstatic'
-	  lt_prog_compiler_wl=''
-	  ;;
 	esac
 	;;
       esac
       ;;
 
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
     osf3* | osf4* | osf5*)
       lt_prog_compiler_wl='-Wl,'
       # All OSF/1 code is PIC.
@@ -8533,7 +11989,7 @@
       lt_prog_compiler_pic='-KPIC'
       lt_prog_compiler_static='-Bstatic'
       case $cc_basename in
-      f77* | f90* | f95*)
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
 	lt_prog_compiler_wl='-Qoption ld ';;
       *)
 	lt_prog_compiler_wl='-Wl,';;
@@ -8581,21 +12037,38 @@
     esac
   fi
 
-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic" >&6
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
 
 #
 # Check to make sure the PIC flag actually works.
 #
 if test -n "$lt_prog_compiler_pic"; then
-
-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
-if test "${lt_cv_prog_compiler_pic_works+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_pic_works=no
-  ac_outfile=conftest.$ac_objext
+   ac_outfile=conftest.$ac_objext
    echo "$lt_simple_compile_test_code" > conftest.$ac_ext
    lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
    # Insert the option either (1) after the last *FLAGS variable, or
@@ -8607,25 +12080,25 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8610: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8614: \$? = $ac_status" >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
-     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_pic_works=yes
      fi
    fi
-   $rm conftest*
+   $RM conftest*
 
 fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
 
 if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
     case $lt_prog_compiler_pic in
@@ -8638,24 +12111,25 @@
 fi
 
 fi
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic=
-    ;;
-  *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
-    ;;
-esac
+
+
+
+
+
+
+
+
+
+
 
 #
 # Check to make sure the static flag actually works.
 #
 wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
-if test "${lt_cv_prog_compiler_static_works+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_static_works=no
    save_LDFLAGS="$LDFLAGS"
@@ -8667,7 +12141,7 @@
      if test -s conftest.err; then
        # Append any errors to the config.log.
        cat conftest.err 1>&5
-       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
        $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
        if diff conftest.exp conftest.er2 >/dev/null; then
          lt_cv_prog_compiler_static_works=yes
@@ -8676,12 +12150,12 @@
        lt_cv_prog_compiler_static_works=yes
      fi
    fi
-   $rm -r conftest*
+   $RM -r conftest*
    LDFLAGS="$save_LDFLAGS"
 
 fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
 
 if test x"$lt_cv_prog_compiler_static_works" = xyes; then
     :
@@ -8690,13 +12164,18 @@
 fi
 
 
-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_prog_compiler_c_o=no
-   $rm -r conftest 2>/dev/null
+   $RM -r conftest 2>/dev/null
    mkdir conftest
    cd conftest
    mkdir out
@@ -8711,83 +12190,148 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:8714: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8718: \$? = $ac_status" >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
-     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_c_o=yes
      fi
    fi
    chmod u+w . 2>&5
-   $rm conftest*
+   $RM conftest*
    # SGI C++ compiler will create directory out/ii_files/ for
    # template instantiation
-   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-   $rm out/* && rmdir out
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
    cd ..
-   rmdir conftest
-   $rm conftest*
+   $RM -r conftest
+   $RM conftest*
 
 fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
 
 
 hard_links="nottested"
 if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
   # do not overwrite the value of need_locks provided by the user
-  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
   hard_links=yes
-  $rm conftest*
+  $RM conftest*
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
   touch conftest.a
   ln conftest.a conftest.b 2>&5 || hard_links=no
   ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  echo "$as_me:$LINENO: result: $hard_links" >&5
-echo "${ECHO_T}$hard_links" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
   if test "$hard_links" = no; then
-    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
     need_locks=warn
   fi
 else
   need_locks=no
 fi
 
-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
 
   runpath_var=
   allow_undefined_flag=
-  enable_shared_with_static_runtimes=no
+  always_export_symbols=no
   archive_cmds=
   archive_expsym_cmds=
-  old_archive_From_new_cmds=
-  old_archive_from_expsyms_cmds=
+  compiler_needs_object=no
+  enable_shared_with_static_runtimes=no
   export_dynamic_flag_spec=
-  whole_archive_flag_spec=
-  thread_safe_flag_spec=
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  hardcode_automatic=no
+  hardcode_direct=no
+  hardcode_direct_absolute=no
   hardcode_libdir_flag_spec=
   hardcode_libdir_flag_spec_ld=
   hardcode_libdir_separator=
-  hardcode_direct=no
   hardcode_minus_L=no
   hardcode_shlibpath_var=unsupported
+  inherit_rpath=no
   link_all_deplibs=unknown
-  hardcode_automatic=no
   module_cmds=
   module_expsym_cmds=
-  always_export_symbols=no
-  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  old_archive_from_new_cmds=
+  old_archive_from_expsyms_cmds=
+  thread_safe_flag_spec=
+  whole_archive_flag_spec=
   # include_expsyms should be a list of space-separated symbols to be *always*
   # included in the symbol list
   include_expsyms=
@@ -8803,19 +12347,9 @@
   # preloaded symbol tables.
   # Exclude shared library initialization/finalization symbols.
   extract_expsyms_cmds=
-  # Just being paranoid about ensuring that cc_basename is set.
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
 
   case $host_os in
-  cygwin* | mingw* | pw32*)
+  cygwin* | mingw* | pw32* | cegcc*)
     # FIXME: the MSVC++ port hasn't been tested in a loooong time
     # When not using gcc, we currently assume that we are using
     # Microsoft Visual C++.
@@ -8833,7 +12367,33 @@
   esac
 
   ld_shlibs=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
   if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+	# The AIX port of GNU ld has always aspired to compatibility
+	# with the native linker.  However, as the warning in the GNU ld
+	# block says, versions before 2.19.5* couldn't really create working
+	# shared libraries, regardless of the interface used.
+	case `$LD -v 2>&1` in
+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+	  *)
+	    lt_use_gnu_ld_interface=yes
+	    ;;
+	esac
+	;;
+      *)
+	lt_use_gnu_ld_interface=yes
+	;;
+    esac
+  fi
+
+  if test "$lt_use_gnu_ld_interface" = yes; then
     # If archive_cmds runs LD, not CC, wlarc should be empty
     wlarc='${wl}'
 
@@ -8841,16 +12401,17 @@
     # are reset later if shared libraries are not supported. Putting them
     # here allows them to be overridden if necessary.
     runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
     export_dynamic_flag_spec='${wl}--export-dynamic'
     # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
-	whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-      else
-  	whole_archive_flag_spec=
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec=
     fi
     supports_anon_versioning=no
-    case `$LD -v 2>/dev/null` in
+    case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
       *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
       *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
       *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
@@ -8864,34 +12425,36 @@
       # On AIX/PPC, the GNU linker is very broken
       if test "$host_cpu" != ia64; then
 	ld_shlibs=no
-	cat <<EOF 1>&2
+	cat <<_LT_EOF 1>&2
 
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** Warning: the GNU linker, at least up to release 2.19, is reported
 *** to be unable to reliably create shared libraries on AIX.
 *** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
 
-EOF
+_LT_EOF
       fi
       ;;
 
     amigaos*)
-      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-
-      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-      # that the semantics of dynamic libraries on AmigaOS, at least up
-      # to version 4, is to share data among multiple programs linked
-      # with the same dynamic library.  Since this doesn't match the
-      # behavior of shared libraries on other platforms, we can't use
-      # them.
-      ld_shlibs=no
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
       ;;
 
     beos*)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
 	allow_undefined_flag=unsupported
 	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
 	# support --undefined.  This deserves some investigation.  FIXME
@@ -8901,16 +12464,18 @@
       fi
       ;;
 
-    cygwin* | mingw* | pw32*)
-      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
       # as there is no search path for DLLs.
       hardcode_libdir_flag_spec='-L$libdir'
+      export_dynamic_flag_spec='${wl}--export-all-symbols'
       allow_undefined_flag=unsupported
       always_export_symbols=no
       enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
 
-      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
         archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
 	# If the export-symbols file already is a .def file (1st line
 	# is EXPORTS), use it as is; otherwise, prepend...
@@ -8926,6 +12491,11 @@
       fi
       ;;
 
+    haiku*)
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      link_all_deplibs=yes
+      ;;
+
     interix[3-9]*)
       hardcode_direct=no
       hardcode_shlibpath_var=no
@@ -8941,60 +12511,95 @@
       archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    gnu* | linux* | k*bsd*-gnu)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	tmp_addflag=
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+	case $cc_basename in
+	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
+	esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+	 && test "$tmp_diet" = no
+      then
+	tmp_addflag=' $pic_flag'
+	tmp_sharedflag='-shared'
 	case $cc_basename,$host_cpu in
-	pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+        pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
 	  tmp_addflag=' $pic_flag'
 	  ;;
-	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	pgf77* | pgf90* | pgf95* | pgfortran*)
+					# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
 	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
 	  tmp_addflag=' -i_dynamic' ;;
 	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
 	  tmp_addflag=' -i_dynamic -nofor_main' ;;
 	ifc* | ifort*)			# Intel Fortran compiler
 	  tmp_addflag=' -nofor_main' ;;
+	lf95*)				# Lahey Fortran 8.1
+	  whole_archive_flag_spec=
+	  tmp_sharedflag='--shared' ;;
+	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+	  tmp_sharedflag='-qmkshrobj'
+	  tmp_addflag= ;;
+	nvcc*)	# Cuda Compiler Driver 2.2
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  compiler_needs_object=yes
+	  ;;
 	esac
 	case `$CC -V 2>&1 | sed 5q` in
 	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  compiler_needs_object=yes
 	  tmp_sharedflag='-G' ;;
 	*Sun\ F*)			# Sun Fortran 8.3
 	  tmp_sharedflag='-G' ;;
-	*)
-	  tmp_sharedflag='-shared' ;;
 	esac
 	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
 
-	if test $supports_anon_versioning = yes; then
-	  archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
-  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-  $echo "local: *; };" >> $output_objdir/$libname.ver~
-	  $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-	fi
+        if test "x$supports_anon_versioning" = xyes; then
+          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	    echo "local: *; };" >> $output_objdir/$libname.ver~
+	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+	case $cc_basename in
+	xlf* | bgf* | bgxlf* | mpixlf*)
+	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+	  hardcode_libdir_flag_spec=
+	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
+	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+	  if test "x$supports_anon_versioning" = xyes; then
+	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	      echo "local: *; };" >> $output_objdir/$libname.ver~
+	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+	  fi
+	  ;;
+	esac
       else
-	ld_shlibs=no
+        ld_shlibs=no
       fi
       ;;
 
     netbsd*)
-      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
       else
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       fi
       ;;
 
     solaris*)
-      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
 	ld_shlibs=no
-	cat <<EOF 1>&2
+	cat <<_LT_EOF 1>&2
 
 *** Warning: The releases 2.8.* of the GNU linker cannot reliably
 *** create shared libraries on Solaris systems.  Therefore, libtool
@@ -9003,10 +12608,10 @@
 *** your PATH or compiler configuration so that the native linker is
 *** used, and then restart.
 
-EOF
-      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       else
 	ld_shlibs=no
       fi
@@ -9028,10 +12633,14 @@
 _LT_EOF
 	;;
 	*)
-	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
-	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
-	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+	  # For security reasons, it is highly recommended that you always
+	  # use absolute paths for naming shared libraries, and exclude the
+	  # DT_RUNPATH tag from executables and libraries.  But doing so
+	  # requires that you compile everything twice, which is a pain.
+	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
 	  else
 	    ld_shlibs=no
 	  fi
@@ -9047,9 +12656,9 @@
       ;;
 
     *)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       else
 	ld_shlibs=no
       fi
@@ -9089,10 +12698,12 @@
       else
 	# If we're using GNU nm, then we don't want the "-C" option.
 	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	# Also, AIX nm treats weak defined symbols like other global
+	# defined symbols, whereas GNU nm marks them as "W".
+	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
 	else
-	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
 	fi
 	aix_use_runtimelinking=no
 
@@ -9101,10 +12712,10 @@
 	# need to do runtime linking.
 	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
 	  for ld_flag in $LDFLAGS; do
-  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-  	    aix_use_runtimelinking=yes
-  	    break
-  	  fi
+	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+	    aix_use_runtimelinking=yes
+	    break
+	  fi
 	  done
 	  ;;
 	esac
@@ -9121,28 +12732,30 @@
 
       archive_cmds=''
       hardcode_direct=yes
+      hardcode_direct_absolute=yes
       hardcode_libdir_separator=':'
       link_all_deplibs=yes
+      file_list_spec='${wl}-f,'
 
       if test "$GCC" = yes; then
 	case $host_os in aix4.[012]|aix4.[012].*)
 	# We only want to do this on AIX 4.2 and lower, the check
 	# below for broken collect2 doesn't work under 4.3+
 	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" && \
-  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  if test -f "$collect2name" &&
+	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
 	  then
-  	  # We have reworked collect2
-  	  :
+	  # We have reworked collect2
+	  :
 	  else
-  	  # We have old collect2
-  	  hardcode_direct=unsupported
-  	  # It fails to find uninstalled libraries when the uninstalled
-  	  # path is not listed in the libpath.  Setting hardcode_minus_L
-  	  # to unsupported forces relinking
-  	  hardcode_minus_L=yes
-  	  hardcode_libdir_flag_spec='-L$libdir'
-  	  hardcode_libdir_separator=
+	  # We have old collect2
+	  hardcode_direct=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L=yes
+	  hardcode_libdir_flag_spec='-L$libdir'
+	  hardcode_libdir_separator=
 	  fi
 	  ;;
 	esac
@@ -9153,8 +12766,8 @@
       else
 	# not using gcc
 	if test "$host_cpu" = ia64; then
-  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-  	# chokes on -Wl,-G. The following line is correct:
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
 	  shared_flag='-G'
 	else
 	  if test "$aix_use_runtimelinking" = yes; then
@@ -9165,6 +12778,7 @@
 	fi
       fi
 
+      export_dynamic_flag_spec='${wl}-bexpall'
       # It seems that -bexpall does not export symbols beginning with
       # underscore (_), so it is better to generate a list of symbols to export.
       always_export_symbols=yes
@@ -9172,12 +12786,15 @@
 	# Warning - without using the other runtime loading flags (-brtl),
 	# -berok will link without error, but may produce a broken library.
 	allow_undefined_flag='-berok'
-       # Determine the default libpath from the value encoded in an empty executable.
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -9188,64 +12805,49 @@
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
 
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
 fi
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_="/usr/lib:/lib"
+  fi
 
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
-       hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-	archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-       else
+  aix_libpath=$lt_cv_aix_libpath_
+fi
+
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
 	if test "$host_cpu" = ia64; then
 	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
 	  allow_undefined_flag="-z nodefs"
 	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
 	else
-	 # Determine the default libpath from the value encoded in an empty executable.
-	 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+	 # Determine the default libpath from the value encoded in an
+	 # empty executable.
+	 if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -9256,57 +12858,44 @@
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
 
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
 fi
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_="/usr/lib:/lib"
+  fi
 
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+  aix_libpath=$lt_cv_aix_libpath_
+fi
 
 	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
 	  # Warning - without using the other run time loading flags,
 	  # -berok will link without error, but may produce a broken library.
 	  no_undefined_flag=' ${wl}-bernotok'
 	  allow_undefined_flag=' ${wl}-berok'
-	  # Exported symbols can be pulled into shared objects from archives
-	  whole_archive_flag_spec='$convenience'
+	  if test "$with_gnu_ld" = yes; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    whole_archive_flag_spec='$convenience'
+	  fi
 	  archive_cmds_need_lc=yes
 	  # This is similar to how AIX traditionally builds its shared libraries.
 	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
@@ -9315,85 +12904,117 @@
       ;;
 
     amigaos*)
-      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      # see comment about different semantics on the GNU ld section
-      ld_shlibs=no
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
       ;;
 
     bsdi[45]*)
       export_dynamic_flag_spec=-rdynamic
       ;;
 
-    cygwin* | mingw* | pw32*)
+    cygwin* | mingw* | pw32* | cegcc*)
       # When not using gcc, we currently assume that we are using
       # Microsoft Visual C++.
       # hardcode_libdir_flag_spec is actually meaningless, as there is
       # no search path for DLLs.
-      hardcode_libdir_flag_spec=' '
-      allow_undefined_flag=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      old_archive_From_new_cmds='true'
-      # FIXME: Should let the user specify the lib program.
-      old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
-      fix_srcfile_path='`cygpath -w "$srcfile"`'
-      enable_shared_with_static_runtimes=yes
+      case $cc_basename in
+      cl*)
+	# Native MSVC
+	hardcode_libdir_flag_spec=' '
+	allow_undefined_flag=unsupported
+	always_export_symbols=yes
+	file_list_spec='@'
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=".dll"
+	# FIXME: Setting linknames here is a bad hack.
+	archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+	  else
+	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+	  fi~
+	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+	  linknames='
+	# The linker will not automatically build a static lib if we build a DLL.
+	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
+	enable_shared_with_static_runtimes=yes
+	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+	# Don't use ranlib
+	old_postinstall_cmds='chmod 644 $oldlib'
+	postlink_cmds='lt_outputfile="@OUTPUT@"~
+	  lt_tool_outputfile="@TOOL_OUTPUT@"~
+	  case $lt_outputfile in
+	    *.exe|*.EXE) ;;
+	    *)
+	      lt_outputfile="$lt_outputfile.exe"
+	      lt_tool_outputfile="$lt_tool_outputfile.exe"
+	      ;;
+	  esac~
+	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+	    $RM "$lt_outputfile.manifest";
+	  fi'
+	;;
+      *)
+	# Assume MSVC wrapper
+	hardcode_libdir_flag_spec=' '
+	allow_undefined_flag=unsupported
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=".dll"
+	# FIXME: Setting linknames here is a bad hack.
+	archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+	# The linker will automatically build a .lib file if we build a DLL.
+	old_archive_from_new_cmds='true'
+	# FIXME: Should let the user specify the lib program.
+	old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+	enable_shared_with_static_runtimes=yes
+	;;
+      esac
       ;;
 
     darwin* | rhapsody*)
-      case $host_os in
-        rhapsody* | darwin1.[012])
-         allow_undefined_flag='${wl}-undefined ${wl}suppress'
-         ;;
-       *) # Darwin 1.3 on
-         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-           allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-         else
-           case ${MACOSX_DEPLOYMENT_TARGET} in
-             10.[012])
-               allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-               ;;
-             10.*)
-               allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
-               ;;
-           esac
-         fi
-         ;;
-      esac
-      archive_cmds_need_lc=no
-      hardcode_direct=no
-      hardcode_automatic=yes
-      hardcode_shlibpath_var=unsupported
-      whole_archive_flag_spec=''
-      link_all_deplibs=yes
-    if test "$GCC" = yes ; then
-    	output_verbose_link_cmd='echo'
-        archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-        module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-        archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-        module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    else
-      case $cc_basename in
-        xlc*)
-         output_verbose_link_cmd='echo'
-         archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
-         module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-         archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          ;;
-       *)
-         ld_shlibs=no
-          ;;
-      esac
-    fi
+
+
+  archive_cmds_need_lc=no
+  hardcode_direct=no
+  hardcode_automatic=yes
+  hardcode_shlibpath_var=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  else
+    whole_archive_flag_spec=''
+  fi
+  link_all_deplibs=yes
+  allow_undefined_flag="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+  else
+  ld_shlibs=no
+  fi
+
       ;;
 
     dgux*)
@@ -9427,7 +13048,7 @@
 
     # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
     freebsd* | dragonfly*)
-      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
       hardcode_libdir_flag_spec='-R$libdir'
       hardcode_direct=yes
       hardcode_shlibpath_var=no
@@ -9435,9 +13056,9 @@
 
     hpux9*)
       if test "$GCC" = yes; then
-	archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+	archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
       else
-	archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
       fi
       hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
       hardcode_libdir_separator=:
@@ -9450,18 +13071,18 @@
       ;;
 
     hpux10*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+	archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       else
 	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
       fi
       if test "$with_gnu_ld" = no; then
 	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_flag_spec_ld='+b $libdir'
 	hardcode_libdir_separator=:
-
 	hardcode_direct=yes
+	hardcode_direct_absolute=yes
 	export_dynamic_flag_spec='${wl}-E'
-
 	# hardcode_minus_L: Not really in the search PATH,
 	# but as the default location of the library.
 	hardcode_minus_L=yes
@@ -9469,16 +13090,16 @@
       ;;
 
     hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
 	case $host_cpu in
 	hppa*64*)
 	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	ia64*)
-	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	esac
       else
@@ -9490,7 +13111,46 @@
 	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+
+	  # Older versions of the 11.00 compiler do not understand -b yet
+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler__b=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS -b"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler__b=yes
+       fi
+     else
+       lt_cv_prog_compiler__b=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test x"$lt_cv_prog_compiler__b" = xyes; then
+    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
 	  ;;
 	esac
       fi
@@ -9500,12 +13160,12 @@
 
 	case $host_cpu in
 	hppa*64*|ia64*)
-	  hardcode_libdir_flag_spec_ld='+b $libdir'
 	  hardcode_direct=no
 	  hardcode_shlibpath_var=no
 	  ;;
 	*)
 	  hardcode_direct=yes
+	  hardcode_direct_absolute=yes
 	  export_dynamic_flag_spec='${wl}-E'
 
 	  # hardcode_minus_L: Not really in the search PATH,
@@ -9518,18 +13178,49 @@
 
     irix5* | irix6* | nonstopux*)
       if test "$GCC" = yes; then
-	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	# Try to use the -exported_symbol ld option, if it does not
+	# work, assume that -exports_file does not work either and
+	# implicitly export all symbols.
+	# This should be the same for all languages, so no per-tag cache variable.
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  save_LDFLAGS="$LDFLAGS"
+	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+	   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo (void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_irix_exported_symbol=yes
+else
+  lt_cv_irix_exported_symbol=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+           LDFLAGS="$save_LDFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+	if test "$lt_cv_irix_exported_symbol" = yes; then
+          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+	fi
       else
-	archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_ld='-rpath $libdir'
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
       fi
+      archive_cmds_need_lc='no'
       hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
       hardcode_libdir_separator=:
+      inherit_rpath=yes
       link_all_deplibs=yes
       ;;
 
     netbsd*)
-      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
 	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
@@ -9547,11 +13238,15 @@
       hardcode_shlibpath_var=no
       ;;
 
+    *nto* | *qnx*)
+      ;;
+
     openbsd*)
       if test -f /usr/libexec/ld.so; then
 	hardcode_direct=yes
 	hardcode_shlibpath_var=no
-	if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	hardcode_direct_absolute=yes
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
 	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
 	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
 	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
@@ -9567,7 +13262,7 @@
 	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
 	     ;;
 	  esac
-        fi
+	fi
       else
 	ld_shlibs=no
       fi
@@ -9577,18 +13272,19 @@
       hardcode_libdir_flag_spec='-L$libdir'
       hardcode_minus_L=yes
       allow_undefined_flag=unsupported
-      archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
       ;;
 
     osf3*)
       if test "$GCC" = yes; then
 	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
       else
 	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
       fi
+      archive_cmds_need_lc='no'
       hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
       hardcode_libdir_separator=:
       ;;
@@ -9596,32 +13292,43 @@
     osf4* | osf5*)	# as osf3* with the addition of -msym flag
       if test "$GCC" = yes; then
 	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
 	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
       else
 	allow_undefined_flag=' -expect_unresolved \*'
-	archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
 
 	# Both c and cxx compiler support -rpath directly
 	hardcode_libdir_flag_spec='-rpath $libdir'
       fi
+      archive_cmds_need_lc='no'
       hardcode_libdir_separator=:
       ;;
 
     solaris*)
-      no_undefined_flag=' -z text'
+      no_undefined_flag=' -z defs'
       if test "$GCC" = yes; then
 	wlarc='${wl}'
-	archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+	archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
       else
-	wlarc=''
-	archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+	case `$CC -V 2>&1` in
+	*"Compilers 5.0"*)
+	  wlarc=''
+	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+	  ;;
+	*)
+	  wlarc='${wl}'
+	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+	  ;;
+	esac
       fi
       hardcode_libdir_flag_spec='-R$libdir'
       hardcode_shlibpath_var=no
@@ -9631,7 +13338,7 @@
 	# The compiler driver will combine and reorder linker options,
 	# but understands `-z linker_flag'.  GCC discards it without `$wl',
 	# but is careful enough not to reorder.
- 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	# Supported since Solaris 2.6 (maybe 2.5.1?)
 	if test "$GCC" = yes; then
 	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
 	else
@@ -9720,18 +13427,18 @@
       allow_undefined_flag='${wl}-z,nodefs'
       archive_cmds_need_lc=no
       hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_flag_spec='${wl}-R,$libdir'
       hardcode_libdir_separator=':'
       link_all_deplibs=yes
       export_dynamic_flag_spec='${wl}-Bexport'
       runpath_var='LD_RUN_PATH'
 
       if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-	archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
       ;;
 
@@ -9745,12 +13452,36 @@
       ld_shlibs=no
       ;;
     esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+	export_dynamic_flag_spec='${wl}-Blargedynsym'
+	;;
+      esac
+    fi
   fi
 
-echo "$as_me:$LINENO: result: $ld_shlibs" >&5
-echo "${ECHO_T}$ld_shlibs" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
 test "$ld_shlibs" = no && can_build_shared=no
 
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 #
 # Do we need to explicitly link libc?
 #
@@ -9768,83 +13499,239 @@
       # Test whether the compiler implicitly links with -lc since on some
       # systems, -lgcc has to come before -lc. If gcc already passes -lc
       # to ld, don't add -lc before -lgcc.
-      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-      $rm conftest*
-      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$lt_prog_compiler_wl
-	pic_flag=$lt_prog_compiler_pic
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$allow_undefined_flag
-        allow_undefined_flag=
-        if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-  (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl
+	  pic_flag=$lt_prog_compiler_pic
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag
+	  allow_undefined_flag=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-        then
-	  archive_cmds_need_lc=no
-        else
-	  archive_cmds_need_lc=yes
-        fi
-        allow_undefined_flag=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $rm conftest*
-      echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
-echo "${ECHO_T}$archive_cmds_need_lc" >&6
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc=no
+	  else
+	    lt_cv_archive_cmds_need_lc=yes
+	  fi
+	  allow_undefined_flag=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
       ;;
     esac
   fi
   ;;
 esac
 
-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
 
 if test "$GCC" = yes; then
   case $host_os in
     darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
     *) lt_awk_arg="/^libraries:/" ;;
   esac
-  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
     # if the path contains ";" then we assume it to be the separator
     # otherwise default to the standard path separator (i.e. ":") - it is
     # assumed that no part of a normal pathname contains ";" but that should
     # okay in the real world where ";" in dirpaths is itself problematic.
-    lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    lt_search_path_spec=`echo "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
   # Ok, now we have the path, separated by spaces, we can step through it
   # and add multilib dir if necessary.
   lt_tmp_lt_search_path_spec=
@@ -9857,7 +13744,7 @@
 	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
     fi
   done
-  lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk '
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
 BEGIN {RS=" "; FS="/|\n";} {
   lt_foo="";
   lt_count=0;
@@ -9877,10 +13764,29 @@
   if (lt_foo != "") { lt_freq[lt_foo]++; }
   if (lt_freq[lt_foo] == 1) { print lt_foo; }
 }'`
-  sys_lib_search_path_spec=`echo $lt_search_path_spec`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
 else
   sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
 fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
 need_lib_prefix=unknown
 hardcode_into_libs=no
 
@@ -9917,7 +13823,7 @@
       aix4 | aix4.[01] | aix4.[01].*)
       if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
 	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
 	:
       else
 	can_build_shared=no
@@ -9943,9 +13849,18 @@
   ;;
 
 amigaos*)
-  library_names_spec='$libname.ixlibrary $libname.a'
-  # Create ${libname}_ixlibrary.a entries in /sys/libs.
-  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
   ;;
 
 beos*)
@@ -9968,61 +13883,112 @@
   # libtool to hard-code these into programs
   ;;
 
-cygwin* | mingw* | pw32*)
+cygwin* | mingw* | pw32* | cegcc*)
   version_type=windows
   shrext_cmds=".dll"
   need_version=no
   need_lib_prefix=no
 
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32*)
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
     library_names_spec='$libname.dll.a'
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
     postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
       $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname'
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
     postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
       dlpath=$dir/\$dldll~
-       $rm \$dlpath'
+       $RM \$dlpath'
     shlibpath_overrides_runpath=yes
 
     case $host_os in
     cygwin*)
       # Cygwin DLLs use 'cyg' prefix rather than 'lib'
       soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
       ;;
-    mingw*)
+    mingw* | cegcc*)
       # MinGW DLLs use traditional 'lib' prefix
       soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-      fi
       ;;
     pw32*)
       # pw32 DLLs use 'pw' prefix rather than 'lib'
       library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
       ;;
     esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
     ;;
 
   *)
+    # Assume MSVC wrapper
     library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
     ;;
   esac
-  dynamic_linker='Win32 ld.exe'
   # FIXME: first we should search . and the directory the executable is in
   shlibpath_var=PATH
   ;;
@@ -10032,7 +13998,7 @@
   version_type=darwin
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
   soname_spec='${libname}${release}${major}$shared_ext'
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
@@ -10109,6 +14075,19 @@
   hardcode_into_libs=yes
   ;;
 
+haiku*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
 hpux9* | hpux10* | hpux11*)
   # Give a soname corresponding to the major version so that dld.sl refuses to
   # link against other versions.
@@ -10131,18 +14110,18 @@
     fi
     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
-   hppa*64*)
-     shrext_cmds='.sl'
-     hardcode_into_libs=yes
-     dynamic_linker="$host_os dld.sl"
-     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-     soname_spec='${libname}${release}${shared_ext}$major'
-     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-     ;;
-   *)
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
     shrext_cmds='.sl'
     dynamic_linker="$host_os dld.sl"
     shlibpath_var=SHLIB_PATH
@@ -10151,8 +14130,10 @@
     soname_spec='${libname}${release}${shared_ext}$major'
     ;;
   esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
   postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
   ;;
 
 interix[3-9]*)
@@ -10210,7 +14191,7 @@
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -10219,6 +14200,41 @@
   finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
   # This implies no fast_install, which is unacceptable.
   # Some rework will be needed to allow for fast_install
   # before this can be enabled.
@@ -10226,7 +14242,7 @@
 
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ 	]*hwcap[ 	]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
   fi
 
@@ -10243,7 +14259,7 @@
   version_type=sunos
   need_lib_prefix=no
   need_version=no
-  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
     finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
     dynamic_linker='NetBSD (a.out) ld.so'
@@ -10264,14 +14280,16 @@
   shlibpath_overrides_runpath=yes
   ;;
 
-nto-qnx*)
-  version_type=linux
+*nto* | *qnx*)
+  version_type=qnx
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
   ;;
 
 openbsd*)
@@ -10280,13 +14298,13 @@
   need_lib_prefix=no
   # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
   case $host_os in
-    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-    *)                         need_version=no  ;;
+    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
+    *)				need_version=no  ;;
   esac
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
   finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
   shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
     case $host_os in
       openbsd2.[89] | openbsd2.[89].*)
 	shlibpath_overrides_runpath=no
@@ -10358,7 +14376,6 @@
     sni)
       shlibpath_overrides_runpath=no
       need_lib_prefix=no
-      export_dynamic_flag_spec='${wl}-Blargedynsym'
       runpath_var=LD_RUN_PATH
       ;;
     siemens)
@@ -10389,13 +14406,12 @@
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
   hardcode_into_libs=yes
   if test "$with_gnu_ld" = yes; then
     sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-    shlibpath_overrides_runpath=no
   else
     sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    shlibpath_overrides_runpath=yes
     case $host_os in
       sco3.2v5*)
         sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
@@ -10405,6 +14421,17 @@
   sys_lib_dlsearch_path_spec='/usr/lib'
   ;;
 
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
 uts4*)
   version_type=linux
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -10416,43 +14443,126 @@
   dynamic_linker=no
   ;;
 esac
-echo "$as_me:$LINENO: result: $dynamic_linker" >&5
-echo "${ECHO_T}$dynamic_linker" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
 test "$dynamic_linker" = no && can_build_shared=no
 
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"
-fi
-
-sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"
-fi
-
-sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-
 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
 if test "$GCC" = yes; then
   variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
 fi
 
-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
 hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" || \
-   test -n "$runpath_var" || \
+if test -n "$hardcode_libdir_flag_spec" ||
+   test -n "$runpath_var" ||
    test "X$hardcode_automatic" = "Xyes" ; then
 
-  # We can hardcode non-existant directories.
+  # We can hardcode non-existent directories.
   if test "$hardcode_direct" != no &&
      # If the only mechanism to avoid hardcoding is shlibpath_var, we
      # have to relink, otherwise we might link with an installed library
      # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
      test "$hardcode_minus_L" != no; then
     # Linking always hardcodes the temporary library directory.
     hardcode_action=relink
@@ -10465,10 +14575,11 @@
   # directories.
   hardcode_action=unsupported
 fi
-echo "$as_me:$LINENO: result: $hardcode_action" >&5
-echo "${ECHO_T}$hardcode_action" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
 
-if test "$hardcode_action" = relink; then
+if test "$hardcode_action" = relink ||
+   test "$inherit_rpath" = yes; then
   # Fast installation is not supported
   enable_fast_install=no
 elif test "$shlibpath_overrides_runpath" = yes ||
@@ -10477,37 +14588,12 @@
   enable_fast_install=needless
 fi
 
-striplib=
-old_striplib=
-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-   darwin*)
-       if test -n "$STRIP" ; then
-         striplib="$STRIP -x"
-         old_striplib="$STRIP -S"
-         echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-       else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-       ;;
-   *)
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-    ;;
-  esac
-fi
 
-if test "x$enable_dlopen" != xyes; then
+
+
+
+
+  if test "x$enable_dlopen" != xyes; then
   enable_dlopen=unknown
   enable_dlopen_self=unknown
   enable_dlopen_self_static=unknown
@@ -10522,83 +14608,55 @@
     lt_cv_dlopen_self=yes
     ;;
 
-  mingw* | pw32*)
+  mingw* | pw32* | cegcc*)
     lt_cv_dlopen="LoadLibrary"
     lt_cv_dlopen_libs=
-   ;;
+    ;;
 
   cygwin*)
     lt_cv_dlopen="dlopen"
     lt_cv_dlopen_libs=
-   ;;
+    ;;
 
   darwin*)
   # if libdl is installed we need to link against it
-    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char dlopen ();
 int
 main ()
 {
-dlopen ();
+return dlopen ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_dl_dlopen=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dl_dlopen=no
+  ac_cv_lib_dl_dlopen=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-if test $ac_cv_lib_dl_dlopen = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
 else
 
@@ -10608,461 +14666,171 @@
 
 fi
 
-   ;;
+    ;;
 
   *)
-    echo "$as_me:$LINENO: checking for shl_load" >&5
-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
-if test "${ac_cv_func_shl_load+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define shl_load innocuous_shl_load
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char shl_load (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef shl_load
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char shl_load ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_shl_load) || defined (__stub___shl_load)
-choke me
-#else
-char (*f) () = shl_load;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != shl_load;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_shl_load=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_shl_load=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
-echo "${ECHO_T}$ac_cv_func_shl_load" >&6
-if test $ac_cv_func_shl_load = yes; then
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
   lt_cv_dlopen="shl_load"
 else
-  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
-if test "${ac_cv_lib_dld_shl_load+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char shl_load ();
 int
 main ()
 {
-shl_load ();
+return shl_load ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_dld_shl_load=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dld_shl_load=no
+  ac_cv_lib_dld_shl_load=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
-if test $ac_cv_lib_dld_shl_load = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
   lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
 else
-  echo "$as_me:$LINENO: checking for dlopen" >&5
-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
-if test "${ac_cv_func_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define dlopen innocuous_dlopen
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char dlopen (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef dlopen
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char dlopen ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_dlopen) || defined (__stub___dlopen)
-choke me
-#else
-char (*f) () = dlopen;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != dlopen;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_dlopen=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-echo "${ECHO_T}$ac_cv_func_dlopen" >&6
-if test $ac_cv_func_dlopen = yes; then
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
   lt_cv_dlopen="dlopen"
 else
-  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char dlopen ();
 int
 main ()
 {
-dlopen ();
+return dlopen ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_dl_dlopen=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dl_dlopen=no
+  ac_cv_lib_dl_dlopen=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-if test $ac_cv_lib_dl_dlopen = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
 else
-  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
-if test "${ac_cv_lib_svld_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsvld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char dlopen ();
 int
 main ()
 {
-dlopen ();
+return dlopen ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_svld_dlopen=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_svld_dlopen=no
+  ac_cv_lib_svld_dlopen=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
-if test $ac_cv_lib_svld_dlopen = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
   lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
 else
-  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
-if test "${ac_cv_lib_dld_dld_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char dld_link ();
 int
 main ()
 {
-dld_link ();
+return dld_link ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_dld_dld_link=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dld_dld_link=no
+  ac_cv_lib_dld_dld_link=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
-if test $ac_cv_lib_dld_dld_link = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
   lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
 fi
 
@@ -11101,18 +14869,18 @@
     save_LIBS="$LIBS"
     LIBS="$lt_cv_dlopen_libs $LIBS"
 
-    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
-if test "${lt_cv_dlopen_self+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   	  if test "$cross_compiling" = yes; then :
   lt_cv_dlopen_self=cross
 else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<EOF
-#line 11115 "configure"
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11153,11 +14921,13 @@
 #  endif
 #endif
 
-#ifdef __cplusplus
-extern "C" void exit (int);
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
 #endif
 
-void fnord() { int i=42;}
+int fnord () { return 42; }
 int main ()
 {
   void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
@@ -11166,20 +14936,24 @@
   if (self)
     {
       if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
       /* dlclose (self); */
     }
   else
     puts (dlerror ());
 
-    exit (status);
+  return status;
 }
-EOF
-  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
     (./conftest; exit; ) >&5 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -11196,23 +14970,23 @@
 
 
 fi
-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
-echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
 
     if test "x$lt_cv_dlopen_self" = xyes; then
       wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
-if test "${lt_cv_dlopen_self_static+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   	  if test "$cross_compiling" = yes; then :
   lt_cv_dlopen_self_static=cross
 else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<EOF
-#line 11215 "configure"
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11253,11 +15027,13 @@
 #  endif
 #endif
 
-#ifdef __cplusplus
-extern "C" void exit (int);
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
 #endif
 
-void fnord() { int i=42;}
+int fnord () { return 42; }
 int main ()
 {
   void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
@@ -11266,20 +15042,24 @@
   if (self)
     {
       if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
       /* dlclose (self); */
     }
   else
     puts (dlerror ());
 
-    exit (status);
+  return status;
 }
-EOF
-  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
     (./conftest; exit; ) >&5 2>/dev/null
     lt_status=$?
     case x$lt_status in
@@ -11296,8 +15076,8 @@
 
 
 fi
-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
     fi
 
     CPPFLAGS="$save_CPPFLAGS"
@@ -11318,6205 +15098,103 @@
 fi
 
 
-# Report which library types will actually be built
-echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
-echo "$as_me:$LINENO: result: $can_build_shared" >&5
-echo "${ECHO_T}$can_build_shared" >&6
 
-echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
-test "$can_build_shared" = "no" && enable_shared=no
 
-# On AIX, shared libraries and static libraries use the same namespace, and
-# are all built from PIC.
-case $host_os in
-aix3*)
-  test "$enable_shared" = yes && enable_static=no
-  if test -n "$RANLIB"; then
-    archive_cmds="$archive_cmds~\$RANLIB \$lib"
-    postinstall_cmds='$RANLIB $lib'
-  fi
-  ;;
 
-aix[4-9]*)
-  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-    test "$enable_shared" = yes && enable_static=no
-  fi
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
     ;;
-esac
-echo "$as_me:$LINENO: result: $enable_shared" >&5
-echo "${ECHO_T}$enable_shared" >&6
-
-echo "$as_me:$LINENO: checking whether to build static libraries" >&5
-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
-# Make sure either enable_shared or enable_static is yes.
-test "$enable_shared" = yes || enable_static=yes
-echo "$as_me:$LINENO: result: $enable_static" >&5
-echo "${ECHO_T}$enable_static" >&6
-
-# The else clause should only fire when bootstrapping the
-# libtool distribution, otherwise you forgot to ship ltmain.sh
-# with your package, and you will get complaints that there are
-# no rules to generate ltmain.sh.
-if test -f "$ltmain"; then
-  # See if we are running on zsh, and set the options which allow our commands through
-  # without removal of \ escapes.
-  if test -n "${ZSH_VERSION+set}" ; then
-    setopt NO_GLOB_SUBST
-  fi
-  # Now quote all the things that may contain metacharacters while being
-  # careful not to overquote the AC_SUBSTed values.  We take copies of the
-  # variables and quote the copies for generation of the libtool script.
-  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
-    SED SHELL STRIP \
-    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-    deplibs_check_method reload_flag reload_cmds need_locks \
-    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-    lt_cv_sys_global_symbol_to_c_name_address \
-    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-    old_postinstall_cmds old_postuninstall_cmds \
-    compiler \
-    CC \
-    LD \
-    lt_prog_compiler_wl \
-    lt_prog_compiler_pic \
-    lt_prog_compiler_static \
-    lt_prog_compiler_no_builtin_flag \
-    export_dynamic_flag_spec \
-    thread_safe_flag_spec \
-    whole_archive_flag_spec \
-    enable_shared_with_static_runtimes \
-    old_archive_cmds \
-    old_archive_from_new_cmds \
-    predep_objects \
-    postdep_objects \
-    predeps \
-    postdeps \
-    compiler_lib_search_path \
-    compiler_lib_search_dirs \
-    archive_cmds \
-    archive_expsym_cmds \
-    postinstall_cmds \
-    postuninstall_cmds \
-    old_archive_from_expsyms_cmds \
-    allow_undefined_flag \
-    no_undefined_flag \
-    export_symbols_cmds \
-    hardcode_libdir_flag_spec \
-    hardcode_libdir_flag_spec_ld \
-    hardcode_libdir_separator \
-    hardcode_automatic \
-    module_cmds \
-    module_expsym_cmds \
-    lt_cv_prog_compiler_c_o \
-    fix_srcfile_path \
-    exclude_expsyms \
-    include_expsyms; do
-
-    case $var in
-    old_archive_cmds | \
-    old_archive_from_new_cmds | \
-    archive_cmds | \
-    archive_expsym_cmds | \
-    module_cmds | \
-    module_expsym_cmds | \
-    old_archive_from_expsyms_cmds | \
-    export_symbols_cmds | \
-    extract_expsyms_cmds | reload_cmds | finish_cmds | \
-    postinstall_cmds | postuninstall_cmds | \
-    old_postinstall_cmds | old_postuninstall_cmds | \
-    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-      # Double-quote double-evaled strings.
-      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-      ;;
-    *)
-      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-      ;;
-    esac
-  done
-
-  case $lt_echo in
-  *'\$0 --fallback-echo"')
-    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
     ;;
   esac
+fi
 
-cfgfile="${ofile}T"
-  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
-  $rm -f "$cfgfile"
-  { echo "$as_me:$LINENO: creating $ofile" >&5
-echo "$as_me: creating $ofile" >&6;}
 
-  cat <<__EOF__ >> "$cfgfile"
-#! $SHELL
 
-# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
-# NOTE: Changes made to this file will be lost: look at ltmain.sh.
-#
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
-# Free Software Foundation, Inc.
-#
-# This file is part of GNU Libtool:
-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
 
-# A sed program that does not truncate output.
-SED=$lt_SED
 
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="$SED -e 1s/^X//"
 
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
-# The names of the tagged configurations supported by this script.
-available_tags=
 
-# ### BEGIN LIBTOOL CONFIG
 
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
 
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
 
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
 
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
+  # Report which library types will actually be built
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
 
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+  test "$can_build_shared" = "no" && enable_shared=no
 
-# Whether or not to disallow shared libs when runtime libs are static
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# An echo program that does not interpret backslashes.
-echo=$lt_echo
-
-# The archiver.
-AR=$lt_AR
-AR_FLAGS=$lt_AR_FLAGS
-
-# A C compiler.
-LTCC=$lt_LTCC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_LTCFLAGS
-
-# A language-specific compiler.
-CC=$lt_compiler
-
-# Is the compiler the GNU C compiler?
-with_gcc=$GCC
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# The linker used to build libraries.
-LD=$lt_LD
-
-# Whether we need hard or soft links.
-LN_S=$lt_LN_S
-
-# A BSD-compatible nm program.
-NM=$lt_NM
-
-# A symbol stripping program
-STRIP=$lt_STRIP
-
-# Used to examine libraries when file_magic_cmd begins "file"
-MAGIC_CMD=$MAGIC_CMD
-
-# Used on cygwin: DLL creation program.
-DLLTOOL="$DLLTOOL"
-
-# Used on cygwin: object dumper.
-OBJDUMP="$OBJDUMP"
-
-# Used on cygwin: assembler.
-AS="$AS"
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
-# Object file suffix (normally "o").
-objext="$ac_objext"
-
-# Old archive suffix (normally "a").
-libext="$libext"
-
-# Shared library suffix (normally ".so").
-shrext_cmds='$shrext_cmds'
-
-# Executable file suffix (normally "").
-exeext="$exeext"
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
-pic_mode=$pic_mode
-
-# What is the maximum length of a command?
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Do we need the lib prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
-
-# Compiler flag to generate thread-safe objects.
-thread_safe_flag_spec=$lt_thread_safe_flag_spec
-
-# Library versioning type.
-version_type=$version_type
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME.
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Commands used to build and install an old-style archive.
-RANLIB=$lt_RANLIB
-old_archive_cmds=$lt_old_archive_cmds
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
-
-# Commands used to build and install a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
-postinstall_cmds=$lt_postinstall_cmds
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to build a loadable module (assumed same as above if empty)
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predep_objects=$lt_predep_objects
-
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdep_objects=$lt_postdep_objects
-
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predeps=$lt_predeps
-
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdeps=$lt_postdeps
-
-# The directories searched by this compiler when creating a shared
-# library
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method == file_magic.
-file_magic_cmd=$lt_file_magic_cmd
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
-
-# Flag that forces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# Same as above, but a single script fragment to be evaled but not shown.
-finish_eval=$lt_finish_eval
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# This is the shared library runtime path variable.
-runpath_var=$runpath_var
-
-# This is the shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
-
-# If ld is used when linking, flag to hardcode \$libdir into
-# a binary during linking. This must work even if \$libdir does
-# not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
-# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
-
-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
-# resulting binary.
-hardcode_direct=$hardcode_direct
-
-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-# resulting binary.
-hardcode_minus_L=$hardcode_minus_L
-
-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-# the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
-
-# Set to yes if building a shared library automatically hardcodes DIR into the library
-# and all subsequent libraries and executables linked against it.
-hardcode_automatic=$hardcode_automatic
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at relink time.
-variables_saved_for_relink="$variables_saved_for_relink"
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
-
-# Compile-time system search path for libraries
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path
-
-# Set to yes if exported symbols are required.
-always_export_symbols=$always_export_symbols
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
-
-# ### END LIBTOOL CONFIG
-
-__EOF__
-
-
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
   case $host_os in
   aix3*)
-    cat <<\EOF >> "$cfgfile"
-
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-EOF
-    ;;
-  esac
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
-
-  mv -f "$cfgfile" "$ofile" || \
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-
-else
-  # If there is no Makefile yet, we rely on a make rule to execute
-  # `config.status --recheck' to rerun these tests and create the
-  # libtool script then.
-  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-  if test -f "$ltmain_in"; then
-    test -f Makefile && make "$ltmain"
-  fi
-fi
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-
-# Check whether --with-tags or --without-tags was given.
-if test "${with_tags+set}" = set; then
-  withval="$with_tags"
-  tagnames="$withval"
-fi;
-
-if test -f "$ltmain" && test -n "$tagnames"; then
-  if test ! -f "${ofile}"; then
-    { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
-echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
-  fi
-
-  if test -z "$LTCC"; then
-    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
-    if test -z "$LTCC"; then
-      { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
-echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
-    else
-      { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
-echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
-    fi
-  fi
-  if test -z "$LTCFLAGS"; then
-    eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
-  fi
-
-  # Extract list of available tagged configurations in $ofile.
-  # Note that this assumes the entire list is on one line.
-  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
-
-  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-  for tagname in $tagnames; do
-    IFS="$lt_save_ifs"
-    # Check whether tagname contains only valid characters
-    case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
-    "") ;;
-    *)  { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
-echo "$as_me: error: invalid tag name: $tagname" >&2;}
-   { (exit 1); exit 1; }; }
-	;;
-    esac
-
-    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
-    then
-      { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
-echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
-   { (exit 1); exit 1; }; }
-    fi
-
-    # Update the list of available tags.
-    if test -n "$tagname"; then
-      echo appending configuration tag \"$tagname\" to $ofile
-
-      case $tagname in
-      CXX)
-	if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-	    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-	    (test "X$CXX" != "Xg++"))) ; then
-	  ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-
-
-
-archive_cmds_need_lc_CXX=no
-allow_undefined_flag_CXX=
-always_export_symbols_CXX=no
-archive_expsym_cmds_CXX=
-export_dynamic_flag_spec_CXX=
-hardcode_direct_CXX=no
-hardcode_libdir_flag_spec_CXX=
-hardcode_libdir_flag_spec_ld_CXX=
-hardcode_libdir_separator_CXX=
-hardcode_minus_L_CXX=no
-hardcode_shlibpath_var_CXX=unsupported
-hardcode_automatic_CXX=no
-module_cmds_CXX=
-module_expsym_cmds_CXX=
-link_all_deplibs_CXX=unknown
-old_archive_cmds_CXX=$old_archive_cmds
-no_undefined_flag_CXX=
-whole_archive_flag_spec_CXX=
-enable_shared_with_static_runtimes_CXX=no
-
-# Dependencies to place before and after the object being linked:
-predep_objects_CXX=
-postdep_objects_CXX=
-predeps_CXX=
-postdeps_CXX=
-compiler_lib_search_path_CXX=
-compiler_lib_search_dirs_CXX=
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-objext_CXX=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$rm conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$rm -r conftest*
-
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_LD=$LD
-lt_save_GCC=$GCC
-GCC=$GXX
-lt_save_with_gnu_ld=$with_gnu_ld
-lt_save_path_LD=$lt_cv_path_LD
-if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-else
-  $as_unset lt_cv_prog_gnu_ld
-fi
-if test -n "${lt_cv_path_LDCXX+set}"; then
-  lt_cv_path_LD=$lt_cv_path_LDCXX
-else
-  $as_unset lt_cv_path_LD
-fi
-test -z "${LDCXX+set}" || LD=$LDCXX
-CC=${CXX-"c++"}
-compiler=$CC
-compiler_CXX=$CC
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-
-
-# We don't want -fno-exception wen compiling C++ code, so set the
-# no_builtin_flag separately
-if test "$GXX" = yes; then
-  lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
-else
-  lt_prog_compiler_no_builtin_flag_CXX=
-fi
-
-if test "$GXX" = yes; then
-  # Set up default GNU C++ configuration
-
-
-# Check whether --with-gnu-ld or --without-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then
-  withval="$with_gnu_ld"
-  test "$withval" = no || with_gnu_ld=yes
-else
-  with_gnu_ld=no
-fi;
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  echo "$as_me:$LINENO: checking for ld used by $CC" >&5
-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
-      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
-	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  echo "$as_me:$LINENO: checking for GNU ld" >&5
-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
-else
-  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
-fi
-if test "${lt_cv_path_LD+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-	test "$with_gnu_ld" != no && break
-	;;
-      *)
-	test "$with_gnu_ld" != yes && break
-	;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
-
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  echo "$as_me:$LINENO: result: $LD" >&5
-echo "${ECHO_T}$LD" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
-   { (exit 1); exit 1; }; }
-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
-if test "${lt_cv_prog_gnu_ld+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
-fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-
-  # Check if GNU C++ uses GNU ld as the underlying linker, since the
-  # archiving commands below assume that GNU ld is being used.
-  if test "$with_gnu_ld" = yes; then
-    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-    archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
-    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
-    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-    #     investigate it a little bit more. (MM)
-    wlarc='${wl}'
-
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
-	grep 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec_CXX=
-    fi
-  else
-    with_gnu_ld=no
-    wlarc=
-
-    # A generic and very simple default shared library creation
-    # command for GNU C++ for the case where it uses the native
-    # linker, instead of GNU ld.  If possible, this setting should
-    # overridden to take advantage of the native linker features on
-    # the platform it is being used on.
-    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-  fi
-
-  # Commands to make compiler produce verbose output that lists
-  # what "hidden" libraries, object files and flags are used when
-  # linking a shared library.
-  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-
-else
-  GXX=no
-  with_gnu_ld=no
-  wlarc=
-fi
-
-# PORTME: fill in a description of your system's C++ link characteristics
-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
-ld_shlibs_CXX=yes
-case $host_os in
-  aix3*)
-    # FIXME: insert proper C++ library support
-    ld_shlibs_CXX=no
-    ;;
-  aix[4-9]*)
-    if test "$host_cpu" = ia64; then
-      # On IA64, the linker does run time linking by default, so we don't
-      # have to do anything special.
-      aix_use_runtimelinking=no
-      exp_sym_flag='-Bexport'
-      no_entry_flag=""
-    else
-      aix_use_runtimelinking=no
-
-      # Test if we are trying to use run time linking or normal
-      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-      # need to do runtime linking.
-      case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	for ld_flag in $LDFLAGS; do
-	  case $ld_flag in
-	  *-brtl*)
-	    aix_use_runtimelinking=yes
-	    break
-	    ;;
-	  esac
-	done
-	;;
-      esac
-
-      exp_sym_flag='-bexport'
-      no_entry_flag='-bnoentry'
-    fi
-
-    # When large executables or shared objects are built, AIX ld can
-    # have problems creating the table of contents.  If linking a library
-    # or program results in "error TOC overflow" add -mminimal-toc to
-    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-    archive_cmds_CXX=''
-    hardcode_direct_CXX=yes
-    hardcode_libdir_separator_CXX=':'
-    link_all_deplibs_CXX=yes
-
-    if test "$GXX" = yes; then
-      case $host_os in aix4.[012]|aix4.[012].*)
-      # We only want to do this on AIX 4.2 and lower, the check
-      # below for broken collect2 doesn't work under 4.3+
-	collect2name=`${CC} -print-prog-name=collect2`
-	if test -f "$collect2name" && \
-	   strings "$collect2name" | grep resolve_lib_name >/dev/null
-	then
-	  # We have reworked collect2
-	  :
-	else
-	  # We have old collect2
-	  hardcode_direct_CXX=unsupported
-	  # It fails to find uninstalled libraries when the uninstalled
-	  # path is not listed in the libpath.  Setting hardcode_minus_L
-	  # to unsupported forces relinking
-	  hardcode_minus_L_CXX=yes
-	  hardcode_libdir_flag_spec_CXX='-L$libdir'
-	  hardcode_libdir_separator_CXX=
-	fi
-	;;
-      esac
-      shared_flag='-shared'
-      if test "$aix_use_runtimelinking" = yes; then
-	shared_flag="$shared_flag "'${wl}-G'
-      fi
-    else
-      # not using gcc
-      if test "$host_cpu" = ia64; then
-	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-	# chokes on -Wl,-G. The following line is correct:
-	shared_flag='-G'
-      else
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag='${wl}-G'
-	else
-	  shared_flag='${wl}-bM:SRE'
-	fi
-      fi
-    fi
-
-    # It seems that -bexpall does not export symbols beginning with
-    # underscore (_), so it is better to generate a list of symbols to export.
-    always_export_symbols_CXX=yes
-    if test "$aix_use_runtimelinking" = yes; then
-      # Warning - without using the other runtime loading flags (-brtl),
-      # -berok will link without error, but may produce a broken library.
-      allow_undefined_flag_CXX='-berok'
-      # Determine the default libpath from the value encoded in an empty executable.
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
-      hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-
-      archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-     else
-      if test "$host_cpu" = ia64; then
-	hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
-	allow_undefined_flag_CXX="-z nodefs"
-	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-      else
-	# Determine the default libpath from the value encoded in an empty executable.
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
-	hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-	# Warning - without using the other run time loading flags,
-	# -berok will link without error, but may produce a broken library.
-	no_undefined_flag_CXX=' ${wl}-bernotok'
-	allow_undefined_flag_CXX=' ${wl}-berok'
-	# Exported symbols can be pulled into shared objects from archives
-	whole_archive_flag_spec_CXX='$convenience'
-	archive_cmds_need_lc_CXX=yes
-	# This is similar to how AIX traditionally builds its shared libraries.
-	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-      fi
-    fi
-    ;;
-
-  beos*)
-    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-      allow_undefined_flag_CXX=unsupported
-      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-      # support --undefined.  This deserves some investigation.  FIXME
-      archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-    else
-      ld_shlibs_CXX=no
-    fi
-    ;;
-
-  chorus*)
-    case $cc_basename in
-      *)
-	# FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-    esac
-    ;;
-
-  cygwin* | mingw* | pw32*)
-    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
-    # as there is no search path for DLLs.
-    hardcode_libdir_flag_spec_CXX='-L$libdir'
-    allow_undefined_flag_CXX=unsupported
-    always_export_symbols_CXX=no
-    enable_shared_with_static_runtimes_CXX=yes
-
-    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-      archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      # If the export-symbols file already is a .def file (1st line
-      # is EXPORTS), use it as is; otherwise, prepend...
-      archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	cp $export_symbols $output_objdir/$soname.def;
-      else
-	echo EXPORTS > $output_objdir/$soname.def;
-	cat $export_symbols >> $output_objdir/$soname.def;
-      fi~
-      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-    else
-      ld_shlibs_CXX=no
-    fi
-  ;;
-      darwin* | rhapsody*)
-      archive_cmds_need_lc_CXX=no
-      hardcode_direct_CXX=no
-      hardcode_automatic_CXX=yes
-      hardcode_shlibpath_var_CXX=unsupported
-      whole_archive_flag_spec_CXX=''
-      link_all_deplibs_CXX=yes
-      allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
-      if test "$GXX" = yes ; then
-      output_verbose_link_cmd='echo'
-      archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-      module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-      archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-      module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-      if test "$lt_cv_apple_cc_single_mod" != "yes"; then
-        archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
-        archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
-      fi
-      else
-      case $cc_basename in
-        xlc*)
-         output_verbose_link_cmd='echo'
-          archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
-          module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-          archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          ;;
-       *)
-         ld_shlibs_CXX=no
-          ;;
-      esac
-      fi
-        ;;
-
-  dgux*)
-    case $cc_basename in
-      ec++*)
-	# FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-      ghcx*)
-	# Green Hills C++ Compiler
-	# FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-      *)
-	# FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-    esac
-    ;;
-  freebsd[12]*)
-    # C++ shared libraries reported to be fairly broken before switch to ELF
-    ld_shlibs_CXX=no
-    ;;
-  freebsd-elf*)
-    archive_cmds_need_lc_CXX=no
-    ;;
-  freebsd* | dragonfly*)
-    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-    # conventions
-    ld_shlibs_CXX=yes
-    ;;
-  gnu*)
-    ;;
-  hpux9*)
-    hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-    hardcode_libdir_separator_CXX=:
-    export_dynamic_flag_spec_CXX='${wl}-E'
-    hardcode_direct_CXX=yes
-    hardcode_minus_L_CXX=yes # Not in the search PATH,
-				# but as the default
-				# location of the library.
-
-    case $cc_basename in
-    CC*)
-      # FIXME: insert proper C++ library support
-      ld_shlibs_CXX=no
-      ;;
-    aCC*)
-      archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      #
-      # There doesn't appear to be a way to prevent this compiler from
-      # explicitly linking system object files so we need to strip them
-      # from the output so that they don't get included in the library
-      # dependencies.
-      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-      ;;
-    *)
-      if test "$GXX" = yes; then
-        archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-      fi
-      ;;
-    esac
-    ;;
-  hpux10*|hpux11*)
-    if test $with_gnu_ld = no; then
-      hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator_CXX=:
-
-      case $host_cpu in
-      hppa*64*|ia64*) ;;
-      *)
-	export_dynamic_flag_spec_CXX='${wl}-E'
-        ;;
-      esac
-    fi
-    case $host_cpu in
-    hppa*64*|ia64*)
-      hardcode_direct_CXX=no
-      hardcode_shlibpath_var_CXX=no
-      ;;
-    *)
-      hardcode_direct_CXX=yes
-      hardcode_minus_L_CXX=yes # Not in the search PATH,
-					      # but as the default
-					      # location of the library.
-      ;;
-    esac
-
-    case $cc_basename in
-      CC*)
-	# FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-      aCC*)
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	  ;;
-	esac
-	# Commands to make compiler produce verbose output that lists
-	# what "hidden" libraries, object files and flags are used when
-	# linking a shared library.
-	#
-	# There doesn't appear to be a way to prevent this compiler from
-	# explicitly linking system object files so we need to strip them
-	# from the output so that they don't get included in the library
-	# dependencies.
-	output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-	;;
-      *)
-	if test "$GXX" = yes; then
-	  if test $with_gnu_ld = no; then
-	    case $host_cpu in
-	    hppa*64*)
-	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      ;;
-	    ia64*)
-	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      ;;
-	    *)
-	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	      ;;
-	    esac
-	  fi
-	else
-	  # FIXME: insert proper C++ library support
-	  ld_shlibs_CXX=no
-	fi
-	;;
-    esac
-    ;;
-  interix[3-9]*)
-    hardcode_direct_CXX=no
-    hardcode_shlibpath_var_CXX=no
-    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-    export_dynamic_flag_spec_CXX='${wl}-E'
-    # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-    # Instead, shared libraries are loaded at an image base (0x10000000 by
-    # default) and relocated if they conflict, which is a slow very memory
-    # consuming and fragmenting process.  To avoid this, we pick a random,
-    # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-    # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-    archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-    archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-    ;;
-  irix5* | irix6*)
-    case $cc_basename in
-      CC*)
-	# SGI C++
-	archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-
-	# Archives containing C++ object files must be created using
-	# "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-	# necessary to make sure instantiated templates are included
-	# in the archive.
-	old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
-	;;
-      *)
-	if test "$GXX" = yes; then
-	  if test "$with_gnu_ld" = no; then
-	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	  else
-	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
-	  fi
-	fi
-	link_all_deplibs_CXX=yes
-	;;
-    esac
-    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-    hardcode_libdir_separator_CXX=:
-    ;;
-  linux* | k*bsd*-gnu)
-    case $cc_basename in
-      KCC*)
-	# Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	# KCC will only create a shared library if the output file
-	# ends with ".so" (or ".sl" for HP-UX), so rename the library
-	# to its proper name (with version) after linking.
-	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-	archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-	# Commands to make compiler produce verbose output that lists
-	# what "hidden" libraries, object files and flags are used when
-	# linking a shared library.
-	#
-	# There doesn't appear to be a way to prevent this compiler from
-	# explicitly linking system object files so we need to strip them
-	# from the output so that they don't get included in the library
-	# dependencies.
-	output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-
-	hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
-	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-
-	# Archives containing C++ object files must be created using
-	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
-	old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
-	;;
-      icpc*)
-	# Intel C++
-	with_gnu_ld=yes
-	# version 8.0 and above of icpc choke on multiply defined symbols
-	# if we add $predep_objects and $postdep_objects, however 7.1 and
-	# earlier do not add the objects themselves.
-	case `$CC -V 2>&1` in
-	*"Version 7."*)
-  	  archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-  	  archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  ;;
-	*)  # Version 8.0 or newer
-	  tmp_idyn=
-	  case $host_cpu in
-	    ia64*) tmp_idyn=' -i_dynamic';;
-	  esac
-  	  archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	  archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-	  ;;
-	esac
-	archive_cmds_need_lc_CXX=no
-	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-	;;
-      pgCC* | pgcpp*)
-        # Portland Group C++ compiler
-	archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-  	archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-
-	hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
-	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-        ;;
-      cxx*)
-	# Compaq C++
-	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
-	runpath_var=LD_RUN_PATH
-	hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-	hardcode_libdir_separator_CXX=:
-
-	# Commands to make compiler produce verbose output that lists
-	# what "hidden" libraries, object files and flags are used when
-	# linking a shared library.
-	#
-	# There doesn't appear to be a way to prevent this compiler from
-	# explicitly linking system object files so we need to strip them
-	# from the output so that they don't get included in the library
-	# dependencies.
-	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-	;;
-      *)
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)
-	  # Sun C++ 5.9
-	  no_undefined_flag_CXX=' -zdefs'
-	  archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	  archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
-	  hardcode_libdir_flag_spec_CXX='-R$libdir'
-	  whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-
-	  # Not sure whether something based on
-	  # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
-	  # would be better.
-	  output_verbose_link_cmd='echo'
-
-	  # Archives containing C++ object files must be created using
-	  # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	  # necessary to make sure instantiated templates are included
-	  # in the archive.
-	  old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-	  ;;
-	esac
-	;;
-    esac
-    ;;
-  lynxos*)
-    # FIXME: insert proper C++ library support
-    ld_shlibs_CXX=no
-    ;;
-  m88k*)
-    # FIXME: insert proper C++ library support
-    ld_shlibs_CXX=no
-    ;;
-  mvs*)
-    case $cc_basename in
-      cxx*)
-	# FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-      *)
-	# FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-    esac
-    ;;
-  netbsd*)
-    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-      archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-      wlarc=
-      hardcode_libdir_flag_spec_CXX='-R$libdir'
-      hardcode_direct_CXX=yes
-      hardcode_shlibpath_var_CXX=no
-    fi
-    # Workaround some broken pre-1.5 toolchains
-    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-    ;;
-  openbsd2*)
-    # C++ shared libraries are fairly broken
-    ld_shlibs_CXX=no
-    ;;
-  openbsd*)
-    if test -f /usr/libexec/ld.so; then
-      hardcode_direct_CXX=yes
-      hardcode_shlibpath_var_CXX=no
-      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-	export_dynamic_flag_spec_CXX='${wl}-E'
-	whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-      fi
-      output_verbose_link_cmd='echo'
-    else
-      ld_shlibs_CXX=no
-    fi
-    ;;
-  osf3*)
-    case $cc_basename in
-      KCC*)
-	# Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	# KCC will only create a shared library if the output file
-	# ends with ".so" (or ".sl" for HP-UX), so rename the library
-	# to its proper name (with version) after linking.
-	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	hardcode_libdir_separator_CXX=:
-
-	# Archives containing C++ object files must be created using
-	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
-	old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
-
-	;;
-      RCC*)
-	# Rational C++ 2.4.1
-	# FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-      cxx*)
-	allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-
-	hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-	hardcode_libdir_separator_CXX=:
-
-	# Commands to make compiler produce verbose output that lists
-	# what "hidden" libraries, object files and flags are used when
-	# linking a shared library.
-	#
-	# There doesn't appear to be a way to prevent this compiler from
-	# explicitly linking system object files so we need to strip them
-	# from the output so that they don't get included in the library
-	# dependencies.
-	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-	;;
-      *)
-	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	  allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-	  archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-
-	  hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-	  hardcode_libdir_separator_CXX=:
-
-	  # Commands to make compiler produce verbose output that lists
-	  # what "hidden" libraries, object files and flags are used when
-	  # linking a shared library.
-	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-
-	else
-	  # FIXME: insert proper C++ library support
-	  ld_shlibs_CXX=no
-	fi
-	;;
-    esac
-    ;;
-  osf4* | osf5*)
-    case $cc_basename in
-      KCC*)
-	# Kuck and Associates, Inc. (KAI) C++ Compiler
-
-	# KCC will only create a shared library if the output file
-	# ends with ".so" (or ".sl" for HP-UX), so rename the library
-	# to its proper name (with version) after linking.
-	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-	hardcode_libdir_separator_CXX=:
-
-	# Archives containing C++ object files must be created using
-	# the KAI C++ compiler.
-	old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
-	;;
-      RCC*)
-	# Rational C++ 2.4.1
-	# FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-      cxx*)
-	allow_undefined_flag_CXX=' -expect_unresolved \*'
-	archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-	  echo "-hidden">> $lib.exp~
-	  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version	$verstring` -update_registry ${output_objdir}/so_locations -o $lib~
-	  $rm $lib.exp'
-
-	hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-	hardcode_libdir_separator_CXX=:
-
-	# Commands to make compiler produce verbose output that lists
-	# what "hidden" libraries, object files and flags are used when
-	# linking a shared library.
-	#
-	# There doesn't appear to be a way to prevent this compiler from
-	# explicitly linking system object files so we need to strip them
-	# from the output so that they don't get included in the library
-	# dependencies.
-	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-	;;
-      *)
-	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	  allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-	 archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-
-	  hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-	  hardcode_libdir_separator_CXX=:
-
-	  # Commands to make compiler produce verbose output that lists
-	  # what "hidden" libraries, object files and flags are used when
-	  # linking a shared library.
-	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-
-	else
-	  # FIXME: insert proper C++ library support
-	  ld_shlibs_CXX=no
-	fi
-	;;
-    esac
-    ;;
-  psos*)
-    # FIXME: insert proper C++ library support
-    ld_shlibs_CXX=no
-    ;;
-  sunos4*)
-    case $cc_basename in
-      CC*)
-	# Sun C++ 4.x
-	# FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-      lcc*)
-	# Lucid
-	# FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-      *)
-	# FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-    esac
-    ;;
-  solaris*)
-    case $cc_basename in
-      CC*)
-	# Sun C++ 4.2, 5.x and Centerline C++
-        archive_cmds_need_lc_CXX=yes
-	no_undefined_flag_CXX=' -zdefs'
-	archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-	archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-	$CC -G${allow_undefined_flag}  ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-
-	hardcode_libdir_flag_spec_CXX='-R$libdir'
-	hardcode_shlibpath_var_CXX=no
-	case $host_os in
-	  solaris2.[0-5] | solaris2.[0-5].*) ;;
-	  *)
-	    # The compiler driver will combine and reorder linker options,
-	    # but understands `-z linker_flag'.
-	    # Supported since Solaris 2.6 (maybe 2.5.1?)
-	    whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
-	    ;;
-	esac
-	link_all_deplibs_CXX=yes
-
-	output_verbose_link_cmd='echo'
-
-	# Archives containing C++ object files must be created using
-	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
-	# necessary to make sure instantiated templates are included
-	# in the archive.
-	old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-	;;
-      gcx*)
-	# Green Hills C++ Compiler
-	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
-	# The C++ compiler must be used to create the archive.
-	old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-	;;
-      *)
-	# GNU C++ compiler with Solaris linker
-	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-	  no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
-	  if $CC --version | grep -v '^2\.7' > /dev/null; then
-	    archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	    archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-		$CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
-	  else
-	    # g++ 2.7 appears to require `-G' NOT `-shared' on this
-	    # platform.
-	    archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-	    archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-		$CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-
-	    # Commands to make compiler produce verbose output that lists
-	    # what "hidden" libraries, object files and flags are used when
-	    # linking a shared library.
-	    output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
-	  fi
-
-	  hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
-	  case $host_os in
-	  solaris2.[0-5] | solaris2.[0-5].*) ;;
-	  *)
-	    whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	    ;;
-	  esac
-	fi
-	;;
-    esac
-    ;;
-  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-    no_undefined_flag_CXX='${wl}-z,text'
-    archive_cmds_need_lc_CXX=no
-    hardcode_shlibpath_var_CXX=no
-    runpath_var='LD_RUN_PATH'
-
-    case $cc_basename in
-      CC*)
-	archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	;;
-      *)
-	archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	;;
-    esac
-    ;;
-  sysv5* | sco3.2v5* | sco5v6*)
-    # Note: We can NOT use -z defs as we might desire, because we do not
-    # link with -lc, and that would cause any symbols used from libc to
-    # always be unresolved, which means just about no library would
-    # ever link correctly.  If we're not using GNU ld we use -z text
-    # though, which does catch some bad symbols but isn't as heavy-handed
-    # as -z defs.
-    # For security reasons, it is highly recommended that you always
-    # use absolute paths for naming shared libraries, and exclude the
-    # DT_RUNPATH tag from executables and libraries.  But doing so
-    # requires that you compile everything twice, which is a pain.
-    # So that behaviour is only enabled if SCOABSPATH is set to a
-    # non-empty value in the environment.  Most likely only useful for
-    # creating official distributions of packages.
-    # This is a hack until libtool officially supports absolute path
-    # names for shared libraries.
-    no_undefined_flag_CXX='${wl}-z,text'
-    allow_undefined_flag_CXX='${wl}-z,nodefs'
-    archive_cmds_need_lc_CXX=no
-    hardcode_shlibpath_var_CXX=no
-    hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
-    hardcode_libdir_separator_CXX=':'
-    link_all_deplibs_CXX=yes
-    export_dynamic_flag_spec_CXX='${wl}-Bexport'
-    runpath_var='LD_RUN_PATH'
-
-    case $cc_basename in
-      CC*)
-	archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	;;
-      *)
-	archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	;;
-    esac
-    ;;
-  tandem*)
-    case $cc_basename in
-      NCC*)
-	# NonStop-UX NCC 3.20
-	# FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-      *)
-	# FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-    esac
-    ;;
-  vxworks*)
-    # FIXME: insert proper C++ library support
-    ld_shlibs_CXX=no
-    ;;
-  *)
-    # FIXME: insert proper C++ library support
-    ld_shlibs_CXX=no
-    ;;
-esac
-echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
-echo "${ECHO_T}$ld_shlibs_CXX" >&6
-test "$ld_shlibs_CXX" = no && can_build_shared=no
-
-GCC_CXX="$GXX"
-LD_CXX="$LD"
-
-cat > conftest.$ac_ext <<EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-EOF
-
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  # The `*' in the case matches for architectures that use `case' in
-  # $output_verbose_cmd can trigger glob expansion during the loop
-  # eval without this substitution.
-  output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
-
-  for p in `eval $output_verbose_link_cmd`; do
-    case $p in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" \
-	  || test $p = "-R"; then
-	 prev=$p
-	 continue
-       else
-	 prev=
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 case $p in
-	 -L* | -R*)
-	   # Internal compiler library paths should come after those
-	   # provided the user.  The postdeps already come after the
-	   # user supplied libs so there is no need to process them.
-	   if test -z "$compiler_lib_search_path_CXX"; then
-	     compiler_lib_search_path_CXX="${prev}${p}"
-	   else
-	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
-	   fi
-	   ;;
-	 # The "-l" case would never come before the object being
-	 # linked, so don't bother handling this case.
-	 esac
-       else
-	 if test -z "$postdeps_CXX"; then
-	   postdeps_CXX="${prev}${p}"
-	 else
-	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
-	 fi
-       fi
-       ;;
-
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-	 pre_test_object_deps_done=yes
-	 continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-	 if test -z "$predep_objects_CXX"; then
-	   predep_objects_CXX="$p"
-	 else
-	   predep_objects_CXX="$predep_objects_CXX $p"
-	 fi
-       else
-	 if test -z "$postdep_objects_CXX"; then
-	   postdep_objects_CXX="$p"
-	 else
-	   postdep_objects_CXX="$postdep_objects_CXX $p"
-	 fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling CXX test program"
-fi
-
-$rm -f confest.$objext
-
-compiler_lib_search_dirs_CXX=
-if test -n "$compiler_lib_search_path_CXX"; then
-  compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
-fi
-
-# PORTME: override above test on systems where it is broken
-case $host_os in
-interix[3-9]*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  predep_objects_CXX=
-  postdep_objects_CXX=
-  postdeps_CXX=
-  ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-    #
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-    if test "$solaris_use_stlport4" != yes; then
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test "$solaris_use_stlport4" != yes; then
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-esac
-
-case " $postdeps_CXX " in
-*" -lc "*) archive_cmds_need_lc_CXX=no ;;
-esac
-
-lt_prog_compiler_wl_CXX=
-lt_prog_compiler_pic_CXX=
-lt_prog_compiler_static_CXX=
-
-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
-
-  # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
-    lt_prog_compiler_wl_CXX='-Wl,'
-    lt_prog_compiler_static_CXX='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_CXX='-Bstatic'
-      fi
-      ;;
-    amigaos*)
-      # FIXME: we need at least 68020 code to build shared libraries, but
-      # adding the `-m68020' flag to GCC prevents building anything better,
-      # like `-m68040'.
-      lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
-      ;;
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | cygwin* | os2* | pw32*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_CXX='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      lt_prog_compiler_pic_CXX=
-      ;;
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic_CXX=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	;;
-      *)
-	lt_prog_compiler_pic_CXX='-fPIC'
-	;;
-      esac
-      ;;
-    *)
-      lt_prog_compiler_pic_CXX='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix[4-9]*)
-	# All AIX code is PIC.
-	if test "$host_cpu" = ia64; then
-	  # AIX 5 now supports IA64 processor
-	  lt_prog_compiler_static_CXX='-Bstatic'
-	else
-	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
-	fi
-	;;
-      chorus*)
-	case $cc_basename in
-	cxch68*)
-	  # Green Hills C++ Compiler
-	  # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-	  ;;
-	esac
-	;;
-       darwin*)
-         # PIC is the default on this platform
-         # Common symbols not allowed in MH_DYLIB files
-         case $cc_basename in
-           xlc*)
-           lt_prog_compiler_pic_CXX='-qnocommon'
-           lt_prog_compiler_wl_CXX='-Wl,'
-           ;;
-         esac
-       ;;
-      dgux*)
-	case $cc_basename in
-	  ec++*)
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    ;;
-	  ghcx*)
-	    # Green Hills C++ Compiler
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      freebsd* | dragonfly*)
-	# FreeBSD uses GNU C++
-	;;
-      hpux9* | hpux10* | hpux11*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
-	    if test "$host_cpu" != ia64; then
-	      lt_prog_compiler_pic_CXX='+Z'
-	    fi
-	    ;;
-	  aCC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
-	    case $host_cpu in
-	    hppa*64*|ia64*)
-	      # +Z the default
-	      ;;
-	    *)
-	      lt_prog_compiler_pic_CXX='+Z'
-	      ;;
-	    esac
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      interix*)
-	# This is c89, which is MS Visual C++ (no shared libs)
-	# Anyone wants to do a port?
-	;;
-      irix5* | irix6* | nonstopux*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    # CC pic flag -KPIC is the default.
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      linux* | k*bsd*-gnu)
-	case $cc_basename in
-	  KCC*)
-	    # KAI C++ Compiler
-	    lt_prog_compiler_wl_CXX='--backend -Wl,'
-	    lt_prog_compiler_pic_CXX='-fPIC'
-	    ;;
-	  icpc* | ecpc*)
-	    # Intel C++
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-static'
-	    ;;
-	  pgCC* | pgcpp*)
-	    # Portland Group C++ compiler.
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-fpic'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	  cxx*)
-	    # Compaq C++
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    lt_prog_compiler_pic_CXX=
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    ;;
-	  *)
-	    case `$CC -V 2>&1 | sed 5q` in
-	    *Sun\ C*)
-	      # Sun C++ 5.9
-	      lt_prog_compiler_pic_CXX='-KPIC'
-	      lt_prog_compiler_static_CXX='-Bstatic'
-	      lt_prog_compiler_wl_CXX='-Qoption ld '
-	      ;;
-	    esac
-	    ;;
-	esac
-	;;
-      lynxos*)
-	;;
-      m88k*)
-	;;
-      mvs*)
-	case $cc_basename in
-	  cxx*)
-	    lt_prog_compiler_pic_CXX='-W c,exportall'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      netbsd*)
-	;;
-      osf3* | osf4* | osf5*)
-	case $cc_basename in
-	  KCC*)
-	    lt_prog_compiler_wl_CXX='--backend -Wl,'
-	    ;;
-	  RCC*)
-	    # Rational C++ 2.4.1
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  cxx*)
-	    # Digital/Compaq C++
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    # Make sure the PIC flag is empty.  It appears that all Alpha
-	    # Linux and Compaq Tru64 Unix objects are PIC.
-	    lt_prog_compiler_pic_CXX=
-	    lt_prog_compiler_static_CXX='-non_shared'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      psos*)
-	;;
-      solaris*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.2, 5.x and Centerline C++
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    lt_prog_compiler_wl_CXX='-Qoption ld '
-	    ;;
-	  gcx*)
-	    # Green Hills C++ Compiler
-	    lt_prog_compiler_pic_CXX='-PIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sunos4*)
-	case $cc_basename in
-	  CC*)
-	    # Sun C++ 4.x
-	    lt_prog_compiler_pic_CXX='-pic'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	  lcc*)
-	    # Lucid
-	    lt_prog_compiler_pic_CXX='-pic'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      tandem*)
-	case $cc_basename in
-	  NCC*)
-	    # NonStop-UX NCC 3.20
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_pic_CXX='-KPIC'
-	    lt_prog_compiler_static_CXX='-Bstatic'
-	    ;;
-	esac
-	;;
-      vxworks*)
-	;;
-      *)
-	lt_prog_compiler_can_build_shared_CXX=no
-	;;
-    esac
-  fi
-
-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_CXX"; then
-
-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
-if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_prog_compiler_pic_works_CXX=no
-  ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13620: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:13624: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_CXX=yes
-     fi
-   fi
-   $rm conftest*
-
-fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_CXX" >&6
-
-if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
-    case $lt_prog_compiler_pic_CXX in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
-     esac
-else
-    lt_prog_compiler_pic_CXX=
-     lt_prog_compiler_can_build_shared_CXX=no
-fi
-
-fi
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_CXX=
-    ;;
-  *)
-    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
-    ;;
-esac
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
-echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
-if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_prog_compiler_static_works_CXX=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_CXX=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_CXX=yes
-     fi
-   fi
-   $rm -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_static_works_CXX" >&6
-
-if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
-    :
-else
-    lt_prog_compiler_static_CXX=
-fi
-
-
-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
-if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=no
-   $rm -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13724: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:13728: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_CXX=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $rm conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-   $rm out/* && rmdir out
-   cd ..
-   rmdir conftest
-   $rm conftest*
-
-fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
-  hard_links=yes
-  $rm conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  echo "$as_me:$LINENO: result: $hard_links" >&5
-echo "${ECHO_T}$hard_links" >&6
-  if test "$hard_links" = no; then
-    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
-
-  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  case $host_os in
-  aix[4-9]*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-    else
-      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    export_symbols_cmds_CXX="$ltdll_cmds"
-  ;;
-  cygwin* | mingw*)
-    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-  ;;
-  *)
-    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
-  esac
-  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-
-echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
-echo "${ECHO_T}$ld_shlibs_CXX" >&6
-test "$ld_shlibs_CXX" = no && can_build_shared=no
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_CXX" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_CXX=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_CXX in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-      $rm conftest*
-      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$lt_prog_compiler_wl_CXX
-	pic_flag=$lt_prog_compiler_pic_CXX
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
-        allow_undefined_flag_CXX=
-        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-  (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-        then
-	  archive_cmds_need_lc_CXX=no
-        else
-	  archive_cmds_need_lc_CXX=yes
-        fi
-        allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $rm conftest*
-      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
-echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  library_names_spec='$libname.ixlibrary $libname.a'
-  # Create ${libname}_ixlibrary.a entries in /sys/libs.
-  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32*)
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $rm \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-      ;;
-    mingw*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    ;;
-
-  *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    ;;
-  esac
-  dynamic_linker='Win32 ld.exe'
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[123]*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-   hppa*64*)
-     shrext_cmds='.sl'
-     hardcode_into_libs=yes
-     dynamic_linker="$host_os dld.sl"
-     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-     soname_spec='${libname}${release}${shared_ext}$major'
-     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-     ;;
-   *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
-  postinstall_cmds='chmod 555 $lib'
-  ;;
-
-interix[3-9]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ 	]*hwcap[ 	]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-nto-qnx*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-    *)                         need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      export_dynamic_flag_spec='${wl}-Blargedynsym'
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-    shlibpath_overrides_runpath=no
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    shlibpath_overrides_runpath=yes
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-echo "$as_me:$LINENO: result: $dynamic_linker" >&5
-echo "${ECHO_T}$dynamic_linker" >&6
-test "$dynamic_linker" = no && can_build_shared=no
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"
-fi
-
-sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"
-fi
-
-sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
-hardcode_action_CXX=
-if test -n "$hardcode_libdir_flag_spec_CXX" || \
-   test -n "$runpath_var_CXX" || \
-   test "X$hardcode_automatic_CXX" = "Xyes" ; then
-
-  # We can hardcode non-existant directories.
-  if test "$hardcode_direct_CXX" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
-     test "$hardcode_minus_L_CXX" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_CXX=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_CXX=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_CXX=unsupported
-fi
-echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
-echo "${ECHO_T}$hardcode_action_CXX" >&6
-
-if test "$hardcode_action_CXX" = relink; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-# The else clause should only fire when bootstrapping the
-# libtool distribution, otherwise you forgot to ship ltmain.sh
-# with your package, and you will get complaints that there are
-# no rules to generate ltmain.sh.
-if test -f "$ltmain"; then
-  # See if we are running on zsh, and set the options which allow our commands through
-  # without removal of \ escapes.
-  if test -n "${ZSH_VERSION+set}" ; then
-    setopt NO_GLOB_SUBST
-  fi
-  # Now quote all the things that may contain metacharacters while being
-  # careful not to overquote the AC_SUBSTed values.  We take copies of the
-  # variables and quote the copies for generation of the libtool script.
-  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
-    SED SHELL STRIP \
-    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-    deplibs_check_method reload_flag reload_cmds need_locks \
-    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-    lt_cv_sys_global_symbol_to_c_name_address \
-    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-    old_postinstall_cmds old_postuninstall_cmds \
-    compiler_CXX \
-    CC_CXX \
-    LD_CXX \
-    lt_prog_compiler_wl_CXX \
-    lt_prog_compiler_pic_CXX \
-    lt_prog_compiler_static_CXX \
-    lt_prog_compiler_no_builtin_flag_CXX \
-    export_dynamic_flag_spec_CXX \
-    thread_safe_flag_spec_CXX \
-    whole_archive_flag_spec_CXX \
-    enable_shared_with_static_runtimes_CXX \
-    old_archive_cmds_CXX \
-    old_archive_from_new_cmds_CXX \
-    predep_objects_CXX \
-    postdep_objects_CXX \
-    predeps_CXX \
-    postdeps_CXX \
-    compiler_lib_search_path_CXX \
-    compiler_lib_search_dirs_CXX \
-    archive_cmds_CXX \
-    archive_expsym_cmds_CXX \
-    postinstall_cmds_CXX \
-    postuninstall_cmds_CXX \
-    old_archive_from_expsyms_cmds_CXX \
-    allow_undefined_flag_CXX \
-    no_undefined_flag_CXX \
-    export_symbols_cmds_CXX \
-    hardcode_libdir_flag_spec_CXX \
-    hardcode_libdir_flag_spec_ld_CXX \
-    hardcode_libdir_separator_CXX \
-    hardcode_automatic_CXX \
-    module_cmds_CXX \
-    module_expsym_cmds_CXX \
-    lt_cv_prog_compiler_c_o_CXX \
-    fix_srcfile_path_CXX \
-    exclude_expsyms_CXX \
-    include_expsyms_CXX; do
-
-    case $var in
-    old_archive_cmds_CXX | \
-    old_archive_from_new_cmds_CXX | \
-    archive_cmds_CXX | \
-    archive_expsym_cmds_CXX | \
-    module_cmds_CXX | \
-    module_expsym_cmds_CXX | \
-    old_archive_from_expsyms_cmds_CXX | \
-    export_symbols_cmds_CXX | \
-    extract_expsyms_cmds | reload_cmds | finish_cmds | \
-    postinstall_cmds | postuninstall_cmds | \
-    old_postinstall_cmds | old_postuninstall_cmds | \
-    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-      # Double-quote double-evaled strings.
-      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-      ;;
-    *)
-      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-      ;;
-    esac
-  done
-
-  case $lt_echo in
-  *'\$0 --fallback-echo"')
-    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
-    ;;
-  esac
-
-cfgfile="$ofile"
-
-  cat <<__EOF__ >> "$cfgfile"
-# ### BEGIN LIBTOOL TAG CONFIG: $tagname
-
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_CXX
-
-# Whether or not to disallow shared libs when runtime libs are static
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# An echo program that does not interpret backslashes.
-echo=$lt_echo
-
-# The archiver.
-AR=$lt_AR
-AR_FLAGS=$lt_AR_FLAGS
-
-# A C compiler.
-LTCC=$lt_LTCC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_LTCFLAGS
-
-# A language-specific compiler.
-CC=$lt_compiler_CXX
-
-# Is the compiler the GNU C compiler?
-with_gcc=$GCC_CXX
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# The linker used to build libraries.
-LD=$lt_LD_CXX
-
-# Whether we need hard or soft links.
-LN_S=$lt_LN_S
-
-# A BSD-compatible nm program.
-NM=$lt_NM
-
-# A symbol stripping program
-STRIP=$lt_STRIP
-
-# Used to examine libraries when file_magic_cmd begins "file"
-MAGIC_CMD=$MAGIC_CMD
-
-# Used on cygwin: DLL creation program.
-DLLTOOL="$DLLTOOL"
-
-# Used on cygwin: object dumper.
-OBJDUMP="$OBJDUMP"
-
-# Used on cygwin: assembler.
-AS="$AS"
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_CXX
-
-# Object file suffix (normally "o").
-objext="$ac_objext"
-
-# Old archive suffix (normally "a").
-libext="$libext"
-
-# Shared library suffix (normally ".so").
-shrext_cmds='$shrext_cmds'
-
-# Executable file suffix (normally "").
-exeext="$exeext"
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_CXX
-pic_mode=$pic_mode
-
-# What is the maximum length of a command?
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Do we need the lib prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_CXX
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
-
-# Compiler flag to generate thread-safe objects.
-thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
-
-# Library versioning type.
-version_type=$version_type
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME.
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Commands used to build and install an old-style archive.
-RANLIB=$lt_RANLIB
-old_archive_cmds=$lt_old_archive_cmds_CXX
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
-
-# Commands used to build and install a shared archive.
-archive_cmds=$lt_archive_cmds_CXX
-archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
-postinstall_cmds=$lt_postinstall_cmds
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to build a loadable module (assumed same as above if empty)
-module_cmds=$lt_module_cmds_CXX
-module_expsym_cmds=$lt_module_expsym_cmds_CXX
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predep_objects=$lt_predep_objects_CXX
-
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdep_objects=$lt_postdep_objects_CXX
-
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predeps=$lt_predeps_CXX
-
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdeps=$lt_postdeps_CXX
-
-# The directories searched by this compiler when creating a shared
-# library
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method == file_magic.
-file_magic_cmd=$lt_file_magic_cmd
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_CXX
-
-# Flag that forces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_CXX
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# Same as above, but a single script fragment to be evaled but not shown.
-finish_eval=$lt_finish_eval
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# This is the shared library runtime path variable.
-runpath_var=$runpath_var
-
-# This is the shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_CXX
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
-
-# If ld is used when linking, flag to hardcode \$libdir into
-# a binary during linking. This must work even if \$libdir does
-# not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
-
-# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
-
-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
-# resulting binary.
-hardcode_direct=$hardcode_direct_CXX
-
-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-# resulting binary.
-hardcode_minus_L=$hardcode_minus_L_CXX
-
-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-# the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
-
-# Set to yes if building a shared library automatically hardcodes DIR into the library
-# and all subsequent libraries and executables linked against it.
-hardcode_automatic=$hardcode_automatic_CXX
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at relink time.
-variables_saved_for_relink="$variables_saved_for_relink"
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_CXX
-
-# Compile-time system search path for libraries
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path
-
-# Set to yes if exported symbols are required.
-always_export_symbols=$always_export_symbols_CXX
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_CXX
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_CXX
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_CXX
-
-# ### END LIBTOOL TAG CONFIG: $tagname
-
-__EOF__
-
-
-else
-  # If there is no Makefile yet, we rely on a make rule to execute
-  # `config.status --recheck' to rerun these tests and create the
-  # libtool script then.
-  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-  if test -f "$ltmain_in"; then
-    test -f Makefile && make "$ltmain"
-  fi
-fi
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC=$lt_save_CC
-LDCXX=$LD
-LD=$lt_save_LD
-GCC=$lt_save_GCC
-with_gnu_ldcxx=$with_gnu_ld
-with_gnu_ld=$lt_save_with_gnu_ld
-lt_cv_path_LDCXX=$lt_cv_path_LD
-lt_cv_path_LD=$lt_save_path_LD
-lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-
-	else
-	  tagname=""
-	fi
-	;;
-
-      F77)
-	if test -n "$F77" && test "X$F77" != "Xno"; then
-
-ac_ext=f
-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_f77_compiler_gnu
-
-
-archive_cmds_need_lc_F77=no
-allow_undefined_flag_F77=
-always_export_symbols_F77=no
-archive_expsym_cmds_F77=
-export_dynamic_flag_spec_F77=
-hardcode_direct_F77=no
-hardcode_libdir_flag_spec_F77=
-hardcode_libdir_flag_spec_ld_F77=
-hardcode_libdir_separator_F77=
-hardcode_minus_L_F77=no
-hardcode_automatic_F77=no
-module_cmds_F77=
-module_expsym_cmds_F77=
-link_all_deplibs_F77=unknown
-old_archive_cmds_F77=$old_archive_cmds
-no_undefined_flag_F77=
-whole_archive_flag_spec_F77=
-enable_shared_with_static_runtimes_F77=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-objext_F77=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="\
-      subroutine t
-      return
-      end
-"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="\
-      program t
-      end
-"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$rm conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$rm -r conftest*
-
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-CC=${F77-"f77"}
-compiler=$CC
-compiler_F77=$CC
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-
-
-echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
-echo "$as_me:$LINENO: result: $can_build_shared" >&5
-echo "${ECHO_T}$can_build_shared" >&6
-
-echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
-test "$can_build_shared" = "no" && enable_shared=no
-
-# On AIX, shared libraries and static libraries use the same namespace, and
-# are all built from PIC.
-case $host_os in
-aix3*)
-  test "$enable_shared" = yes && enable_static=no
-  if test -n "$RANLIB"; then
-    archive_cmds="$archive_cmds~\$RANLIB \$lib"
-    postinstall_cmds='$RANLIB $lib'
-  fi
-  ;;
-aix[4-9]*)
-  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
     test "$enable_shared" = yes && enable_static=no
-  fi
-  ;;
-esac
-echo "$as_me:$LINENO: result: $enable_shared" >&5
-echo "${ECHO_T}$enable_shared" >&6
-
-echo "$as_me:$LINENO: checking whether to build static libraries" >&5
-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
-# Make sure either enable_shared or enable_static is yes.
-test "$enable_shared" = yes || enable_static=yes
-echo "$as_me:$LINENO: result: $enable_static" >&5
-echo "${ECHO_T}$enable_static" >&6
-
-GCC_F77="$G77"
-LD_F77="$LD"
-
-lt_prog_compiler_wl_F77=
-lt_prog_compiler_pic_F77=
-lt_prog_compiler_static_F77=
-
-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
-
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl_F77='-Wl,'
-    lt_prog_compiler_static_F77='-static'
-
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_F77='-Bstatic'
-      fi
-      ;;
-
-    amigaos*)
-      # FIXME: we need at least 68020 code to build shared libraries, but
-      # adding the `-m68020' flag to GCC prevents building anything better,
-      # like `-m68040'.
-      lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_F77='-fno-common'
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared_F77=no
-      enable_shared=no
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic_F77=-Kconform_pic
-      fi
-      ;;
-
-    hpux*)
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_F77='-fPIC'
-	;;
-      esac
-      ;;
-
-    *)
-      lt_prog_compiler_pic_F77='-fPIC'
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_F77='-Bstatic'
-      else
-	lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-      darwin*)
-        # PIC is the default on this platform
-        # Common symbols not allowed in MH_DYLIB files
-       case $cc_basename in
-         xlc*)
-         lt_prog_compiler_pic_F77='-qnocommon'
-         lt_prog_compiler_wl_F77='-Wl,'
-         ;;
-       esac
-       ;;
-
-    mingw* | cygwin* | pw32* | os2*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_F77='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static_F77='-non_shared'
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    linux* | k*bsd*-gnu)
-      case $cc_basename in
-      icc* | ecc*)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-KPIC'
-	lt_prog_compiler_static_F77='-static'
-        ;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-fpic'
-	lt_prog_compiler_static_F77='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl_F77='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static_F77='-non_shared'
-        ;;
-      *)
-        case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic_F77='-KPIC'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  lt_prog_compiler_wl_F77='-Wl,'
-	  ;;
-	*Sun\ F*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic_F77='-KPIC'
-	  lt_prog_compiler_static_F77='-Bstatic'
-	  lt_prog_compiler_wl_F77=''
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static_F77='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static_F77='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95*)
-	lt_prog_compiler_wl_F77='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl_F77='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl_F77='-Qoption ld '
-      lt_prog_compiler_pic_F77='-PIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic_F77='-Kconform_pic'
-	lt_prog_compiler_static_F77='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_can_build_shared_F77=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic_F77='-pic'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared_F77=no
-      ;;
-    esac
-  fi
-
-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_F77"; then
-
-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
-if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_prog_compiler_pic_works_F77=no
-  ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_F77"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15307: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:15311: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_F77=yes
-     fi
-   fi
-   $rm conftest*
-
-fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_F77" >&6
-
-if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then
-    case $lt_prog_compiler_pic_F77 in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
-     esac
-else
-    lt_prog_compiler_pic_F77=
-     lt_prog_compiler_can_build_shared_F77=no
-fi
-
-fi
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_F77=
-    ;;
-  *)
-    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
-    ;;
-esac
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
-echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
-if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_prog_compiler_static_works_F77=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_F77=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_F77=yes
-     fi
-   fi
-   $rm -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_static_works_F77" >&6
-
-if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then
-    :
-else
-    lt_prog_compiler_static_F77=
-fi
-
-
-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
-if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_prog_compiler_c_o_F77=no
-   $rm -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15411: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:15415: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_F77=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $rm conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-   $rm out/* && rmdir out
-   cd ..
-   rmdir conftest
-   $rm conftest*
-
-fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
-  hard_links=yes
-  $rm conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  echo "$as_me:$LINENO: result: $hard_links" >&5
-echo "${ECHO_T}$hard_links" >&6
-  if test "$hard_links" = no; then
-    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
-
-  runpath_var=
-  allow_undefined_flag_F77=
-  enable_shared_with_static_runtimes_F77=no
-  archive_cmds_F77=
-  archive_expsym_cmds_F77=
-  old_archive_From_new_cmds_F77=
-  old_archive_from_expsyms_cmds_F77=
-  export_dynamic_flag_spec_F77=
-  whole_archive_flag_spec_F77=
-  thread_safe_flag_spec_F77=
-  hardcode_libdir_flag_spec_F77=
-  hardcode_libdir_flag_spec_ld_F77=
-  hardcode_libdir_separator_F77=
-  hardcode_direct_F77=no
-  hardcode_minus_L_F77=no
-  hardcode_shlibpath_var_F77=unsupported
-  link_all_deplibs_F77=unknown
-  hardcode_automatic_F77=no
-  module_cmds_F77=
-  module_expsym_cmds_F77=
-  always_export_symbols_F77=no
-  export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms_F77=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-  # Just being paranoid about ensuring that cc_basename is set.
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-
-  case $host_os in
-  cygwin* | mingw* | pw32*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
     fi
     ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
 
-  ld_shlibs_F77=yes
-  if test "$with_gnu_ld" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
-    export_dynamic_flag_spec_F77='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
-	whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-      else
-  	whole_archive_flag_spec_F77=
+  aix[4-9]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
     fi
-    supports_anon_versioning=no
-    case `$LD -v 2>/dev/null` in
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs_F77=no
-	cat <<EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-EOF
-      fi
-      ;;
-
-    amigaos*)
-      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_minus_L_F77=yes
-
-      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-      # that the semantics of dynamic libraries on AmigaOS, at least up
-      # to version 4, is to share data among multiple programs linked
-      # with the same dynamic library.  Since this doesn't match the
-      # behavior of shared libraries on other platforms, we can't use
-      # them.
-      ld_shlibs_F77=no
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag_F77=unsupported
-	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32*)
-      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      allow_undefined_flag_F77=unsupported
-      always_export_symbols_F77=no
-      enable_shared_with_static_runtimes_F77=yes
-      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-
-      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-        archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct_F77=no
-      hardcode_shlibpath_var_F77=no
-      hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec_F77='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | k*bsd*-gnu)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	tmp_addflag=
-	case $cc_basename,$host_cpu in
-	pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	*)
-	  tmp_sharedflag='-shared' ;;
-	esac
-	archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-	if test $supports_anon_versioning = yes; then
-	  archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
-  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-  $echo "local: *; };" >> $output_objdir/$libname.ver~
-	  $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-	fi
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-	archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
-	ld_shlibs_F77=no
-	cat <<EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-EOF
-      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs_F77=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
-	    archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
-	    archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
-	  else
-	    ld_shlibs_F77=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs_F77" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec_F77=
-      export_dynamic_flag_spec_F77=
-      whole_archive_flag_spec_F77=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag_F77=unsupported
-      always_export_symbols_F77=yes
-      archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L_F77=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct_F77=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-	  export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-  	    aix_use_runtimelinking=yes
-  	    break
-  	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds_F77=''
-      hardcode_direct_F77=yes
-      hardcode_libdir_separator_F77=':'
-      link_all_deplibs_F77=yes
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" && \
-  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
-	  then
-  	  # We have reworked collect2
-  	  :
-	  else
-  	  # We have old collect2
-  	  hardcode_direct_F77=unsupported
-  	  # It fails to find uninstalled libraries when the uninstalled
-  	  # path is not listed in the libpath.  Setting hardcode_minus_L
-  	  # to unsupported forces relinking
-  	  hardcode_minus_L_F77=yes
-  	  hardcode_libdir_flag_spec_F77='-L$libdir'
-  	  hardcode_libdir_separator_F77=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-  	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols_F77=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag_F77='-berok'
-       # Determine the default libpath from the value encoded in an empty executable.
-       cat >conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_f77_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
-       hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
-	archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-       else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag_F77="-z nodefs"
-	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an empty executable.
-	 cat >conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_f77_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
-	 hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag_F77=' ${wl}-bernotok'
-	  allow_undefined_flag_F77=' ${wl}-berok'
-	  # Exported symbols can be pulled into shared objects from archives
-	  whole_archive_flag_spec_F77='$convenience'
-	  archive_cmds_need_lc_F77=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_minus_L_F77=yes
-      # see comment about different semantics on the GNU ld section
-      ld_shlibs_F77=no
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec_F77=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      hardcode_libdir_flag_spec_F77=' '
-      allow_undefined_flag_F77=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      old_archive_From_new_cmds_F77='true'
-      # FIXME: Should let the user specify the lib program.
-      old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs'
-      fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
-      enable_shared_with_static_runtimes_F77=yes
-      ;;
-
-    darwin* | rhapsody*)
-      case $host_os in
-        rhapsody* | darwin1.[012])
-         allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
-         ;;
-       *) # Darwin 1.3 on
-         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-           allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-         else
-           case ${MACOSX_DEPLOYMENT_TARGET} in
-             10.[012])
-               allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-               ;;
-             10.*)
-               allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
-               ;;
-           esac
-         fi
-         ;;
-      esac
-      archive_cmds_need_lc_F77=no
-      hardcode_direct_F77=no
-      hardcode_automatic_F77=yes
-      hardcode_shlibpath_var_F77=unsupported
-      whole_archive_flag_spec_F77=''
-      link_all_deplibs_F77=yes
-    if test "$GCC" = yes ; then
-    	output_verbose_link_cmd='echo'
-        archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-        module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-        archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-        module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    else
-      case $cc_basename in
-        xlc*)
-         output_verbose_link_cmd='echo'
-         archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
-         module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-         archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          ;;
-       *)
-         ld_shlibs_F77=no
-          ;;
-      esac
-    fi
-      ;;
-
-    dgux*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    freebsd1*)
-      ld_shlibs_F77=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
-      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_F77=yes
-      hardcode_minus_L_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      hardcode_direct_F77=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L_F77=yes
-      export_dynamic_flag_spec_F77='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_F77=:
-
-	hardcode_direct_F77=yes
-	export_dynamic_flag_spec_F77='${wl}-E'
-
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L_F77=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_F77=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_libdir_flag_spec_ld_F77='+b $libdir'
-	  hardcode_direct_F77=no
-	  hardcode_shlibpath_var_F77=no
-	  ;;
-	*)
-	  hardcode_direct_F77=yes
-	  export_dynamic_flag_spec_F77='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L_F77=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
-      fi
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      link_all_deplibs_F77=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-	archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    newsos6)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_F77=yes
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct_F77=yes
-	hardcode_shlibpath_var_F77=no
-	if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec_F77='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec_F77='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-        fi
-      else
-	ld_shlibs_F77=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_minus_L_F77=yes
-      allow_undefined_flag_F77=unsupported
-      archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag_F77=' -expect_unresolved \*'
-	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag_F77=' -expect_unresolved \*'
-	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec_F77='-rpath $libdir'
-      fi
-      hardcode_libdir_separator_F77=:
-      ;;
-
-    solaris*)
-      no_undefined_flag_F77=' -z text'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
-      else
-	wlarc=''
-	archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-      fi
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_shlibpath_var_F77=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
- 	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs_F77=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_direct_F77=yes
-      hardcode_minus_L_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_F77=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds_F77='$CC -r -o $output$reload_objs'
-	  hardcode_direct_F77=no
-        ;;
-	motorola)
-	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var_F77=no
-      export_dynamic_flag_spec_F77='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var_F77=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs_F77=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_F77='${wl}-z,text'
-      archive_cmds_need_lc_F77=no
-      hardcode_shlibpath_var_F77=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag_F77='${wl}-z,text'
-      allow_undefined_flag_F77='${wl}-z,nodefs'
-      archive_cmds_need_lc_F77=no
-      hardcode_shlibpath_var_F77=no
-      hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
-      hardcode_libdir_separator_F77=':'
-      link_all_deplibs_F77=yes
-      export_dynamic_flag_spec_F77='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    *)
-      ld_shlibs_F77=no
-      ;;
-    esac
-  fi
-
-echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
-echo "${ECHO_T}$ld_shlibs_F77" >&6
-test "$ld_shlibs_F77" = no && can_build_shared=no
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_F77" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_F77=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_F77 in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-      $rm conftest*
-      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$lt_prog_compiler_wl_F77
-	pic_flag=$lt_prog_compiler_pic_F77
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$allow_undefined_flag_F77
-        allow_undefined_flag_F77=
-        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-  (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-        then
-	  archive_cmds_need_lc_F77=no
-        else
-	  archive_cmds_need_lc_F77=yes
-        fi
-        allow_undefined_flag_F77=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $rm conftest*
-      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
-echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  library_names_spec='$libname.ixlibrary $libname.a'
-  # Create ${libname}_ixlibrary.a entries in /sys/libs.
-  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32*)
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $rm \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-      ;;
-    mingw*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    ;;
-
-  *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
     ;;
   esac
-  dynamic_linker='Win32 ld.exe'
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
 
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
 
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
 
-dgux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
 
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[123]*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-   hppa*64*)
-     shrext_cmds='.sl'
-     hardcode_into_libs=yes
-     dynamic_linker="$host_os dld.sl"
-     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-     soname_spec='${libname}${release}${shared_ext}$major'
-     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-     ;;
-   *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
-  postinstall_cmds='chmod 555 $lib'
-  ;;
-
-interix[3-9]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ 	]*hwcap[ 	]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-nto-qnx*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-    *)                         need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      export_dynamic_flag_spec='${wl}-Blargedynsym'
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-    shlibpath_overrides_runpath=no
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    shlibpath_overrides_runpath=yes
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-echo "$as_me:$LINENO: result: $dynamic_linker" >&5
-echo "${ECHO_T}$dynamic_linker" >&6
-test "$dynamic_linker" = no && can_build_shared=no
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"
 fi
-
-sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"
-fi
-
-sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
-hardcode_action_F77=
-if test -n "$hardcode_libdir_flag_spec_F77" || \
-   test -n "$runpath_var_F77" || \
-   test "X$hardcode_automatic_F77" = "Xyes" ; then
-
-  # We can hardcode non-existant directories.
-  if test "$hardcode_direct_F77" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
-     test "$hardcode_minus_L_F77" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_F77=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_F77=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_F77=unsupported
-fi
-echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
-echo "${ECHO_T}$hardcode_action_F77" >&6
-
-if test "$hardcode_action_F77" = relink; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-# The else clause should only fire when bootstrapping the
-# libtool distribution, otherwise you forgot to ship ltmain.sh
-# with your package, and you will get complaints that there are
-# no rules to generate ltmain.sh.
-if test -f "$ltmain"; then
-  # See if we are running on zsh, and set the options which allow our commands through
-  # without removal of \ escapes.
-  if test -n "${ZSH_VERSION+set}" ; then
-    setopt NO_GLOB_SUBST
-  fi
-  # Now quote all the things that may contain metacharacters while being
-  # careful not to overquote the AC_SUBSTed values.  We take copies of the
-  # variables and quote the copies for generation of the libtool script.
-  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
-    SED SHELL STRIP \
-    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-    deplibs_check_method reload_flag reload_cmds need_locks \
-    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-    lt_cv_sys_global_symbol_to_c_name_address \
-    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-    old_postinstall_cmds old_postuninstall_cmds \
-    compiler_F77 \
-    CC_F77 \
-    LD_F77 \
-    lt_prog_compiler_wl_F77 \
-    lt_prog_compiler_pic_F77 \
-    lt_prog_compiler_static_F77 \
-    lt_prog_compiler_no_builtin_flag_F77 \
-    export_dynamic_flag_spec_F77 \
-    thread_safe_flag_spec_F77 \
-    whole_archive_flag_spec_F77 \
-    enable_shared_with_static_runtimes_F77 \
-    old_archive_cmds_F77 \
-    old_archive_from_new_cmds_F77 \
-    predep_objects_F77 \
-    postdep_objects_F77 \
-    predeps_F77 \
-    postdeps_F77 \
-    compiler_lib_search_path_F77 \
-    compiler_lib_search_dirs_F77 \
-    archive_cmds_F77 \
-    archive_expsym_cmds_F77 \
-    postinstall_cmds_F77 \
-    postuninstall_cmds_F77 \
-    old_archive_from_expsyms_cmds_F77 \
-    allow_undefined_flag_F77 \
-    no_undefined_flag_F77 \
-    export_symbols_cmds_F77 \
-    hardcode_libdir_flag_spec_F77 \
-    hardcode_libdir_flag_spec_ld_F77 \
-    hardcode_libdir_separator_F77 \
-    hardcode_automatic_F77 \
-    module_cmds_F77 \
-    module_expsym_cmds_F77 \
-    lt_cv_prog_compiler_c_o_F77 \
-    fix_srcfile_path_F77 \
-    exclude_expsyms_F77 \
-    include_expsyms_F77; do
-
-    case $var in
-    old_archive_cmds_F77 | \
-    old_archive_from_new_cmds_F77 | \
-    archive_cmds_F77 | \
-    archive_expsym_cmds_F77 | \
-    module_cmds_F77 | \
-    module_expsym_cmds_F77 | \
-    old_archive_from_expsyms_cmds_F77 | \
-    export_symbols_cmds_F77 | \
-    extract_expsyms_cmds | reload_cmds | finish_cmds | \
-    postinstall_cmds | postuninstall_cmds | \
-    old_postinstall_cmds | old_postuninstall_cmds | \
-    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-      # Double-quote double-evaled strings.
-      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-      ;;
-    *)
-      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-      ;;
-    esac
-  done
-
-  case $lt_echo in
-  *'\$0 --fallback-echo"')
-    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
-    ;;
-  esac
-
-cfgfile="$ofile"
-
-  cat <<__EOF__ >> "$cfgfile"
-# ### BEGIN LIBTOOL TAG CONFIG: $tagname
-
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_F77
-
-# Whether or not to disallow shared libs when runtime libs are static
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# An echo program that does not interpret backslashes.
-echo=$lt_echo
-
-# The archiver.
-AR=$lt_AR
-AR_FLAGS=$lt_AR_FLAGS
-
-# A C compiler.
-LTCC=$lt_LTCC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_LTCFLAGS
-
-# A language-specific compiler.
-CC=$lt_compiler_F77
-
-# Is the compiler the GNU C compiler?
-with_gcc=$GCC_F77
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# The linker used to build libraries.
-LD=$lt_LD_F77
-
-# Whether we need hard or soft links.
-LN_S=$lt_LN_S
-
-# A BSD-compatible nm program.
-NM=$lt_NM
-
-# A symbol stripping program
-STRIP=$lt_STRIP
-
-# Used to examine libraries when file_magic_cmd begins "file"
-MAGIC_CMD=$MAGIC_CMD
-
-# Used on cygwin: DLL creation program.
-DLLTOOL="$DLLTOOL"
-
-# Used on cygwin: object dumper.
-OBJDUMP="$OBJDUMP"
-
-# Used on cygwin: assembler.
-AS="$AS"
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_F77
-
-# Object file suffix (normally "o").
-objext="$ac_objext"
-
-# Old archive suffix (normally "a").
-libext="$libext"
-
-# Shared library suffix (normally ".so").
-shrext_cmds='$shrext_cmds'
-
-# Executable file suffix (normally "").
-exeext="$exeext"
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_F77
-pic_mode=$pic_mode
-
-# What is the maximum length of a command?
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Do we need the lib prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_F77
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
-
-# Compiler flag to generate thread-safe objects.
-thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
-
-# Library versioning type.
-version_type=$version_type
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME.
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Commands used to build and install an old-style archive.
-RANLIB=$lt_RANLIB
-old_archive_cmds=$lt_old_archive_cmds_F77
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
-
-# Commands used to build and install a shared archive.
-archive_cmds=$lt_archive_cmds_F77
-archive_expsym_cmds=$lt_archive_expsym_cmds_F77
-postinstall_cmds=$lt_postinstall_cmds
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to build a loadable module (assumed same as above if empty)
-module_cmds=$lt_module_cmds_F77
-module_expsym_cmds=$lt_module_expsym_cmds_F77
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predep_objects=$lt_predep_objects_F77
-
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdep_objects=$lt_postdep_objects_F77
-
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predeps=$lt_predeps_F77
-
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdeps=$lt_postdeps_F77
-
-# The directories searched by this compiler when creating a shared
-# library
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_F77
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method == file_magic.
-file_magic_cmd=$lt_file_magic_cmd
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_F77
-
-# Flag that forces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_F77
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# Same as above, but a single script fragment to be evaled but not shown.
-finish_eval=$lt_finish_eval
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# This is the shared library runtime path variable.
-runpath_var=$runpath_var
-
-# This is the shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_F77
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
-
-# If ld is used when linking, flag to hardcode \$libdir into
-# a binary during linking. This must work even if \$libdir does
-# not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
-
-# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
-
-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
-# resulting binary.
-hardcode_direct=$hardcode_direct_F77
-
-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-# resulting binary.
-hardcode_minus_L=$hardcode_minus_L_F77
-
-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-# the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
-
-# Set to yes if building a shared library automatically hardcodes DIR into the library
-# and all subsequent libraries and executables linked against it.
-hardcode_automatic=$hardcode_automatic_F77
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at relink time.
-variables_saved_for_relink="$variables_saved_for_relink"
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_F77
-
-# Compile-time system search path for libraries
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path
-
-# Set to yes if exported symbols are required.
-always_export_symbols=$always_export_symbols_F77
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_F77
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_F77
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_F77
-
-# ### END LIBTOOL TAG CONFIG: $tagname
-
-__EOF__
-
-
-else
-  # If there is no Makefile yet, we rely on a make rule to execute
-  # `config.status --recheck' to rerun these tests and create the
-  # libtool script then.
-  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-  if test -f "$ltmain_in"; then
-    test -f Makefile && make "$ltmain"
-  fi
-fi
-
-
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -17525,3927 +15203,81 @@
 
 CC="$lt_save_CC"
 
-	else
-	  tagname=""
-	fi
-	;;
-
-      GCJ)
-	if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
 
 
 
-# Source file extension for Java test sources.
-ac_ext=java
-
-# Object file extension for compiled Java test sources.
-objext=o
-objext_GCJ=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
 
 
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$rm conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$rm -r conftest*
 
 
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-CC=${GCJ-"gcj"}
-compiler=$CC
-compiler_GCJ=$CC
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
 
 
-# GCJ did not exist at the time GCC didn't implicitly link libc in.
-archive_cmds_need_lc_GCJ=no
-
-old_archive_cmds_GCJ=$old_archive_cmds
 
 
-lt_prog_compiler_no_builtin_flag_GCJ=
 
-if test "$GCC" = yes; then
-  lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+        ac_config_commands="$ac_config_commands libtool"
 
 
-echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_prog_compiler_rtti_exceptions=no
-  ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:17623: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:17627: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_rtti_exceptions=yes
-     fi
-   fi
-   $rm conftest*
 
-fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
 
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
-    lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
-else
-    :
-fi
+# Only expand once:
 
-fi
 
-lt_prog_compiler_wl_GCJ=
-lt_prog_compiler_pic_GCJ=
-lt_prog_compiler_static_GCJ=
 
-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
 
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl_GCJ='-Wl,'
-    lt_prog_compiler_static_GCJ='-static'
 
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_GCJ='-Bstatic'
-      fi
-      ;;
+##
+#   Build environment:
+##
 
-    amigaos*)
-      # FIXME: we need at least 68020 code to build shared libraries, but
-      # adding the `-m68020' flag to GCC prevents building anything better,
-      # like `-m68040'.
-      lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
-      ;;
-
-    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | cygwin* | pw32* | os2*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      # Although the cygwin gcc ignores -fPIC, still need this for old-style
-      # (--disable-auto-import) libraries
-
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_GCJ='-fno-common'
-      ;;
-
-    interix[3-9]*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared_GCJ=no
-      enable_shared=no
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic_GCJ=-Kconform_pic
-      fi
-      ;;
-
-    hpux*)
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_GCJ='-fPIC'
-	;;
-      esac
-      ;;
-
-    *)
-      lt_prog_compiler_pic_GCJ='-fPIC'
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl_GCJ='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_GCJ='-Bstatic'
-      else
-	lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-      darwin*)
-        # PIC is the default on this platform
-        # Common symbols not allowed in MH_DYLIB files
-       case $cc_basename in
-         xlc*)
-         lt_prog_compiler_pic_GCJ='-qnocommon'
-         lt_prog_compiler_wl_GCJ='-Wl,'
-         ;;
-       esac
-       ;;
-
-    mingw* | cygwin* | pw32* | os2*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl_GCJ='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_GCJ='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl_GCJ='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static_GCJ='-non_shared'
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic_GCJ='-KPIC'
-      lt_prog_compiler_static_GCJ='-Bstatic'
-      ;;
-
-    linux* | k*bsd*-gnu)
-      case $cc_basename in
-      icc* | ecc*)
-	lt_prog_compiler_wl_GCJ='-Wl,'
-	lt_prog_compiler_pic_GCJ='-KPIC'
-	lt_prog_compiler_static_GCJ='-static'
-        ;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl_GCJ='-Wl,'
-	lt_prog_compiler_pic_GCJ='-fpic'
-	lt_prog_compiler_static_GCJ='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl_GCJ='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static_GCJ='-non_shared'
-        ;;
-      *)
-        case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)
-	  # Sun C 5.9
-	  lt_prog_compiler_pic_GCJ='-KPIC'
-	  lt_prog_compiler_static_GCJ='-Bstatic'
-	  lt_prog_compiler_wl_GCJ='-Wl,'
-	  ;;
-	*Sun\ F*)
-	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
-	  lt_prog_compiler_pic_GCJ='-KPIC'
-	  lt_prog_compiler_static_GCJ='-Bstatic'
-	  lt_prog_compiler_wl_GCJ=''
-	  ;;
-	esac
-	;;
-      esac
-      ;;
-
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl_GCJ='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static_GCJ='-non_shared'
-      ;;
-
-    rdos*)
-      lt_prog_compiler_static_GCJ='-non_shared'
-      ;;
-
-    solaris*)
-      lt_prog_compiler_pic_GCJ='-KPIC'
-      lt_prog_compiler_static_GCJ='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95*)
-	lt_prog_compiler_wl_GCJ='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl_GCJ='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl_GCJ='-Qoption ld '
-      lt_prog_compiler_pic_GCJ='-PIC'
-      lt_prog_compiler_static_GCJ='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl_GCJ='-Wl,'
-      lt_prog_compiler_pic_GCJ='-KPIC'
-      lt_prog_compiler_static_GCJ='-Bstatic'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic_GCJ='-Kconform_pic'
-	lt_prog_compiler_static_GCJ='-Bstatic'
-      fi
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl_GCJ='-Wl,'
-      lt_prog_compiler_pic_GCJ='-KPIC'
-      lt_prog_compiler_static_GCJ='-Bstatic'
-      ;;
-
-    unicos*)
-      lt_prog_compiler_wl_GCJ='-Wl,'
-      lt_prog_compiler_can_build_shared_GCJ=no
-      ;;
-
-    uts4*)
-      lt_prog_compiler_pic_GCJ='-pic'
-      lt_prog_compiler_static_GCJ='-Bstatic'
-      ;;
-
-    *)
-      lt_prog_compiler_can_build_shared_GCJ=no
-      ;;
-    esac
-  fi
-
-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
-
+#   developer build
+#       (enabled by default when building from SVN checkout)
 #
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_GCJ"; then
-
-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
-if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_prog_compiler_pic_works_GCJ=no
-  ac_outfile=conftest.$ac_objext
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:17913: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:17917: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_pic_works_GCJ=yes
-     fi
-   fi
-   $rm conftest*
-
+if test "x$developer" != "xno" -a -f $srcdir/remove-files; then
+    developer="yes"
 fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_GCJ" >&6
-
-if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then
-    case $lt_prog_compiler_pic_GCJ in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
-     esac
-else
-    lt_prog_compiler_pic_GCJ=
-     lt_prog_compiler_can_build_shared_GCJ=no
-fi
-
-fi
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_GCJ=
-    ;;
-  *)
-    lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
-    ;;
-esac
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
-echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
-if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_prog_compiler_static_works_GCJ=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   echo "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_cv_prog_compiler_static_works_GCJ=yes
-       fi
-     else
-       lt_cv_prog_compiler_static_works_GCJ=yes
-     fi
-   fi
-   $rm -r conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_static_works_GCJ" >&6
-
-if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then
-    :
-else
-    lt_prog_compiler_static_GCJ=
-fi
-
-
-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
-if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_prog_compiler_c_o_GCJ=no
-   $rm -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:18017: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:18021: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_GCJ=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $rm conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-   $rm out/* && rmdir out
-   cd ..
-   rmdir conftest
-   $rm conftest*
-
-fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
-
-
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
-  hard_links=yes
-  $rm conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  echo "$as_me:$LINENO: result: $hard_links" >&5
-echo "${ECHO_T}$hard_links" >&6
-  if test "$hard_links" = no; then
-    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-
-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
-
-  runpath_var=
-  allow_undefined_flag_GCJ=
-  enable_shared_with_static_runtimes_GCJ=no
-  archive_cmds_GCJ=
-  archive_expsym_cmds_GCJ=
-  old_archive_From_new_cmds_GCJ=
-  old_archive_from_expsyms_cmds_GCJ=
-  export_dynamic_flag_spec_GCJ=
-  whole_archive_flag_spec_GCJ=
-  thread_safe_flag_spec_GCJ=
-  hardcode_libdir_flag_spec_GCJ=
-  hardcode_libdir_flag_spec_ld_GCJ=
-  hardcode_libdir_separator_GCJ=
-  hardcode_direct_GCJ=no
-  hardcode_minus_L_GCJ=no
-  hardcode_shlibpath_var_GCJ=unsupported
-  link_all_deplibs_GCJ=unknown
-  hardcode_automatic_GCJ=no
-  module_cmds_GCJ=
-  module_expsym_cmds_GCJ=
-  always_export_symbols_GCJ=no
-  export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms_GCJ=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms_GCJ='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  # Exclude shared library initialization/finalization symbols.
-  extract_expsyms_cmds=
-  # Just being paranoid about ensuring that cc_basename is set.
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-
-  case $host_os in
-  cygwin* | mingw* | pw32*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs_GCJ=yes
-  if test "$with_gnu_ld" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
-    export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
-	whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-      else
-  	whole_archive_flag_spec_GCJ=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>/dev/null` in
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix[3-9]*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs_GCJ=no
-	cat <<EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-EOF
-      fi
-      ;;
-
-    amigaos*)
-      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-      hardcode_libdir_flag_spec_GCJ='-L$libdir'
-      hardcode_minus_L_GCJ=yes
-
-      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-      # that the semantics of dynamic libraries on AmigaOS, at least up
-      # to version 4, is to share data among multiple programs linked
-      # with the same dynamic library.  Since this doesn't match the
-      # behavior of shared libraries on other platforms, we can't use
-      # them.
-      ld_shlibs_GCJ=no
-      ;;
-
-    beos*)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag_GCJ=unsupported
-	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs_GCJ=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32*)
-      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec_GCJ='-L$libdir'
-      allow_undefined_flag_GCJ=unsupported
-      always_export_symbols_GCJ=no
-      enable_shared_with_static_runtimes_GCJ=yes
-      export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
-
-      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-        archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-	ld_shlibs_GCJ=no
-      fi
-      ;;
-
-    interix[3-9]*)
-      hardcode_direct_GCJ=no
-      hardcode_shlibpath_var_GCJ=no
-      hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec_GCJ='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    gnu* | linux* | k*bsd*-gnu)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	tmp_addflag=
-	case $cc_basename,$host_cpu in
-	pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	esac
-	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ C*)			# Sun C 5.9
-	  whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_sharedflag='-G' ;;
-	*Sun\ F*)			# Sun Fortran 8.3
-	  tmp_sharedflag='-G' ;;
-	*)
-	  tmp_sharedflag='-shared' ;;
-	esac
-	archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-	if test $supports_anon_versioning = yes; then
-	  archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
-  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-  $echo "local: *; };" >> $output_objdir/$libname.ver~
-	  $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-	fi
-      else
-	ld_shlibs_GCJ=no
-      fi
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-	archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
-	ld_shlibs_GCJ=no
-	cat <<EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-EOF
-      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_GCJ=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-	ld_shlibs_GCJ=no
-	cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-	;;
-	*)
-	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	    hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
-	    archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
-	    archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
-	  else
-	    ld_shlibs_GCJ=no
-	  fi
-	;;
-      esac
-      ;;
-
-    sunos4*)
-      archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct_GCJ=yes
-      hardcode_shlibpath_var_GCJ=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_GCJ=no
-      fi
-      ;;
-    esac
-
-    if test "$ld_shlibs_GCJ" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec_GCJ=
-      export_dynamic_flag_spec_GCJ=
-      whole_archive_flag_spec_GCJ=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag_GCJ=unsupported
-      always_export_symbols_GCJ=yes
-      archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L_GCJ=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct_GCJ=unsupported
-      fi
-      ;;
-
-    aix[4-9]*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
-      else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-	  export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
-
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
-	  for ld_flag in $LDFLAGS; do
-  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-  	    aix_use_runtimelinking=yes
-  	    break
-  	  fi
-	  done
-	  ;;
-	esac
-
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      archive_cmds_GCJ=''
-      hardcode_direct_GCJ=yes
-      hardcode_libdir_separator_GCJ=':'
-      link_all_deplibs_GCJ=yes
-
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" && \
-  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
-	  then
-  	  # We have reworked collect2
-  	  :
-	  else
-  	  # We have old collect2
-  	  hardcode_direct_GCJ=unsupported
-  	  # It fails to find uninstalled libraries when the uninstalled
-  	  # path is not listed in the libpath.  Setting hardcode_minus_L
-  	  # to unsupported forces relinking
-  	  hardcode_minus_L_GCJ=yes
-  	  hardcode_libdir_flag_spec_GCJ='-L$libdir'
-  	  hardcode_libdir_separator_GCJ=
-	  fi
-	  ;;
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
-      else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-  	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-	  if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-	  fi
-	fi
-      fi
-
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols_GCJ=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag_GCJ='-berok'
-       # Determine the default libpath from the value encoded in an empty executable.
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
-       hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
-	archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-       else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag_GCJ="-z nodefs"
-	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an empty executable.
-	 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-	/^0/ {
-	    s/^0  *\(.*\)$/\1/
-	    p
-	}
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
-	 hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag_GCJ=' ${wl}-bernotok'
-	  allow_undefined_flag_GCJ=' ${wl}-berok'
-	  # Exported symbols can be pulled into shared objects from archives
-	  whole_archive_flag_spec_GCJ='$convenience'
-	  archive_cmds_need_lc_GCJ=yes
-	  # This is similar to how AIX traditionally builds its shared libraries.
-	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
-      fi
-      ;;
-
-    amigaos*)
-      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-      hardcode_libdir_flag_spec_GCJ='-L$libdir'
-      hardcode_minus_L_GCJ=yes
-      # see comment about different semantics on the GNU ld section
-      ld_shlibs_GCJ=no
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec_GCJ=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      hardcode_libdir_flag_spec_GCJ=' '
-      allow_undefined_flag_GCJ=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      old_archive_From_new_cmds_GCJ='true'
-      # FIXME: Should let the user specify the lib program.
-      old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs'
-      fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
-      enable_shared_with_static_runtimes_GCJ=yes
-      ;;
-
-    darwin* | rhapsody*)
-      case $host_os in
-        rhapsody* | darwin1.[012])
-         allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
-         ;;
-       *) # Darwin 1.3 on
-         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-           allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-         else
-           case ${MACOSX_DEPLOYMENT_TARGET} in
-             10.[012])
-               allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-               ;;
-             10.*)
-               allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
-               ;;
-           esac
-         fi
-         ;;
-      esac
-      archive_cmds_need_lc_GCJ=no
-      hardcode_direct_GCJ=no
-      hardcode_automatic_GCJ=yes
-      hardcode_shlibpath_var_GCJ=unsupported
-      whole_archive_flag_spec_GCJ=''
-      link_all_deplibs_GCJ=yes
-    if test "$GCC" = yes ; then
-    	output_verbose_link_cmd='echo'
-        archive_cmds_GCJ="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
-        module_cmds_GCJ="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
-        archive_expsym_cmds_GCJ="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
-        module_expsym_cmds_GCJ="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
-    else
-      case $cc_basename in
-        xlc*)
-         output_verbose_link_cmd='echo'
-         archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
-         module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-         archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          ;;
-       *)
-         ld_shlibs_GCJ=no
-          ;;
-      esac
-    fi
-      ;;
-
-    dgux*)
-      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_GCJ='-L$libdir'
-      hardcode_shlibpath_var_GCJ=no
-      ;;
-
-    freebsd1*)
-      ld_shlibs_GCJ=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec_GCJ='-R$libdir'
-      hardcode_direct_GCJ=yes
-      hardcode_shlibpath_var_GCJ=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
-      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_GCJ=yes
-      hardcode_minus_L_GCJ=yes
-      hardcode_shlibpath_var_GCJ=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec_GCJ='-R$libdir'
-      hardcode_direct_GCJ=yes
-      hardcode_shlibpath_var_GCJ=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-	archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator_GCJ=:
-      hardcode_direct_GCJ=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L_GCJ=yes
-      export_dynamic_flag_spec_GCJ='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_GCJ=:
-
-	hardcode_direct_GCJ=yes
-	export_dynamic_flag_spec_GCJ='${wl}-E'
-
-	# hardcode_minus_L: Not really in the search PATH,
-	# but as the default location of the library.
-	hardcode_minus_L_GCJ=yes
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      else
-	case $host_cpu in
-	hppa*64*)
-	  archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	ia64*)
-	  archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_GCJ=:
-
-	case $host_cpu in
-	hppa*64*|ia64*)
-	  hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
-	  hardcode_direct_GCJ=no
-	  hardcode_shlibpath_var_GCJ=no
-	  ;;
-	*)
-	  hardcode_direct_GCJ=yes
-	  export_dynamic_flag_spec_GCJ='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L_GCJ=yes
-	  ;;
-	esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
-      fi
-      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_GCJ=:
-      link_all_deplibs_GCJ=yes
-      ;;
-
-    netbsd*)
-      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-	archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-	archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec_GCJ='-R$libdir'
-      hardcode_direct_GCJ=yes
-      hardcode_shlibpath_var_GCJ=no
-      ;;
-
-    newsos6)
-      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_GCJ=yes
-      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_GCJ=:
-      hardcode_shlibpath_var_GCJ=no
-      ;;
-
-    openbsd*)
-      if test -f /usr/libexec/ld.so; then
-	hardcode_direct_GCJ=yes
-	hardcode_shlibpath_var_GCJ=no
-	if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	  archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	  archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	  hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
-	  export_dynamic_flag_spec_GCJ='${wl}-E'
-	else
-	  case $host_os in
-	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	     archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	     hardcode_libdir_flag_spec_GCJ='-R$libdir'
-	     ;;
-	   *)
-	     archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	     hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
-	     ;;
-	  esac
-        fi
-      else
-	ld_shlibs_GCJ=no
-      fi
-      ;;
-
-    os2*)
-      hardcode_libdir_flag_spec_GCJ='-L$libdir'
-      hardcode_minus_L_GCJ=yes
-      allow_undefined_flag_GCJ=unsupported
-      archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag_GCJ=' -expect_unresolved \*'
-	archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_GCJ=:
-      ;;
-
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag_GCJ=' -expect_unresolved \*'
-	archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
-
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
-      fi
-      hardcode_libdir_separator_GCJ=:
-      ;;
-
-    solaris*)
-      no_undefined_flag_GCJ=' -z text'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
-      else
-	wlarc=''
-	archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-      fi
-      hardcode_libdir_flag_spec_GCJ='-R$libdir'
-      hardcode_shlibpath_var_GCJ=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-	# The compiler driver will combine and reorder linker options,
-	# but understands `-z linker_flag'.  GCC discards it without `$wl',
-	# but is careful enough not to reorder.
- 	# Supported since Solaris 2.6 (maybe 2.5.1?)
-	if test "$GCC" = yes; then
-	  whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
-	else
-	  whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract'
-	fi
-	;;
-      esac
-      link_all_deplibs_GCJ=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec_GCJ='-L$libdir'
-      hardcode_direct_GCJ=yes
-      hardcode_minus_L_GCJ=yes
-      hardcode_shlibpath_var_GCJ=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_GCJ=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds_GCJ='$CC -r -o $output$reload_objs'
-	  hardcode_direct_GCJ=no
-        ;;
-	motorola)
-	  archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var_GCJ=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var_GCJ=no
-      export_dynamic_flag_spec_GCJ='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var_GCJ=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs_GCJ=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_GCJ='${wl}-z,text'
-      archive_cmds_need_lc_GCJ=no
-      hardcode_shlibpath_var_GCJ=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag_GCJ='${wl}-z,text'
-      allow_undefined_flag_GCJ='${wl}-z,nodefs'
-      archive_cmds_need_lc_GCJ=no
-      hardcode_shlibpath_var_GCJ=no
-      hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
-      hardcode_libdir_separator_GCJ=':'
-      link_all_deplibs_GCJ=yes
-      export_dynamic_flag_spec_GCJ='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-	archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    uts4*)
-      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_GCJ='-L$libdir'
-      hardcode_shlibpath_var_GCJ=no
-      ;;
-
-    *)
-      ld_shlibs_GCJ=no
-      ;;
-    esac
-  fi
-
-echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
-echo "${ECHO_T}$ld_shlibs_GCJ" >&6
-test "$ld_shlibs_GCJ" = no && can_build_shared=no
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_GCJ" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_GCJ=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_GCJ in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-      $rm conftest*
-      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$lt_prog_compiler_wl_GCJ
-	pic_flag=$lt_prog_compiler_pic_GCJ
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
-        allow_undefined_flag_GCJ=
-        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-  (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-        then
-	  archive_cmds_need_lc_GCJ=no
-        else
-	  archive_cmds_need_lc_GCJ=yes
-        fi
-        allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $rm conftest*
-      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
-echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix[4-9]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  library_names_spec='$libname.ixlibrary $libname.a'
-  # Create ${libname}_ixlibrary.a entries in /sys/libs.
-  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32*)
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $rm \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-      ;;
-    mingw*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    ;;
-
-  *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    ;;
-  esac
-  dynamic_linker='Win32 ld.exe'
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[123]*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  *) # from 4.6 on, and DragonFly
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-   hppa*64*)
-     shrext_cmds='.sl'
-     hardcode_into_libs=yes
-     dynamic_linker="$host_os dld.sl"
-     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-     soname_spec='${libname}${release}${shared_ext}$major'
-     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-     ;;
-   *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
-  postinstall_cmds='chmod 555 $lib'
-  ;;
-
-interix[3-9]*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ 	]*hwcap[ 	]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-nto-qnx*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-    *)                         need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      export_dynamic_flag_spec='${wl}-Blargedynsym'
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-    shlibpath_overrides_runpath=no
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    shlibpath_overrides_runpath=yes
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-	;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-echo "$as_me:$LINENO: result: $dynamic_linker" >&5
-echo "${ECHO_T}$dynamic_linker" >&6
-test "$dynamic_linker" = no && can_build_shared=no
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"
-fi
-
-sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"
-fi
-
-sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
-hardcode_action_GCJ=
-if test -n "$hardcode_libdir_flag_spec_GCJ" || \
-   test -n "$runpath_var_GCJ" || \
-   test "X$hardcode_automatic_GCJ" = "Xyes" ; then
-
-  # We can hardcode non-existant directories.
-  if test "$hardcode_direct_GCJ" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
-     test "$hardcode_minus_L_GCJ" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_GCJ=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_GCJ=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_GCJ=unsupported
-fi
-echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
-echo "${ECHO_T}$hardcode_action_GCJ" >&6
-
-if test "$hardcode_action_GCJ" = relink; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-# The else clause should only fire when bootstrapping the
-# libtool distribution, otherwise you forgot to ship ltmain.sh
-# with your package, and you will get complaints that there are
-# no rules to generate ltmain.sh.
-if test -f "$ltmain"; then
-  # See if we are running on zsh, and set the options which allow our commands through
-  # without removal of \ escapes.
-  if test -n "${ZSH_VERSION+set}" ; then
-    setopt NO_GLOB_SUBST
-  fi
-  # Now quote all the things that may contain metacharacters while being
-  # careful not to overquote the AC_SUBSTed values.  We take copies of the
-  # variables and quote the copies for generation of the libtool script.
-  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
-    SED SHELL STRIP \
-    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-    deplibs_check_method reload_flag reload_cmds need_locks \
-    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-    lt_cv_sys_global_symbol_to_c_name_address \
-    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-    old_postinstall_cmds old_postuninstall_cmds \
-    compiler_GCJ \
-    CC_GCJ \
-    LD_GCJ \
-    lt_prog_compiler_wl_GCJ \
-    lt_prog_compiler_pic_GCJ \
-    lt_prog_compiler_static_GCJ \
-    lt_prog_compiler_no_builtin_flag_GCJ \
-    export_dynamic_flag_spec_GCJ \
-    thread_safe_flag_spec_GCJ \
-    whole_archive_flag_spec_GCJ \
-    enable_shared_with_static_runtimes_GCJ \
-    old_archive_cmds_GCJ \
-    old_archive_from_new_cmds_GCJ \
-    predep_objects_GCJ \
-    postdep_objects_GCJ \
-    predeps_GCJ \
-    postdeps_GCJ \
-    compiler_lib_search_path_GCJ \
-    compiler_lib_search_dirs_GCJ \
-    archive_cmds_GCJ \
-    archive_expsym_cmds_GCJ \
-    postinstall_cmds_GCJ \
-    postuninstall_cmds_GCJ \
-    old_archive_from_expsyms_cmds_GCJ \
-    allow_undefined_flag_GCJ \
-    no_undefined_flag_GCJ \
-    export_symbols_cmds_GCJ \
-    hardcode_libdir_flag_spec_GCJ \
-    hardcode_libdir_flag_spec_ld_GCJ \
-    hardcode_libdir_separator_GCJ \
-    hardcode_automatic_GCJ \
-    module_cmds_GCJ \
-    module_expsym_cmds_GCJ \
-    lt_cv_prog_compiler_c_o_GCJ \
-    fix_srcfile_path_GCJ \
-    exclude_expsyms_GCJ \
-    include_expsyms_GCJ; do
-
-    case $var in
-    old_archive_cmds_GCJ | \
-    old_archive_from_new_cmds_GCJ | \
-    archive_cmds_GCJ | \
-    archive_expsym_cmds_GCJ | \
-    module_cmds_GCJ | \
-    module_expsym_cmds_GCJ | \
-    old_archive_from_expsyms_cmds_GCJ | \
-    export_symbols_cmds_GCJ | \
-    extract_expsyms_cmds | reload_cmds | finish_cmds | \
-    postinstall_cmds | postuninstall_cmds | \
-    old_postinstall_cmds | old_postuninstall_cmds | \
-    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-      # Double-quote double-evaled strings.
-      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-      ;;
-    *)
-      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-      ;;
-    esac
-  done
-
-  case $lt_echo in
-  *'\$0 --fallback-echo"')
-    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
-    ;;
-  esac
-
-cfgfile="$ofile"
-
-  cat <<__EOF__ >> "$cfgfile"
-# ### BEGIN LIBTOOL TAG CONFIG: $tagname
-
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_GCJ
-
-# Whether or not to disallow shared libs when runtime libs are static
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# An echo program that does not interpret backslashes.
-echo=$lt_echo
-
-# The archiver.
-AR=$lt_AR
-AR_FLAGS=$lt_AR_FLAGS
-
-# A C compiler.
-LTCC=$lt_LTCC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_LTCFLAGS
-
-# A language-specific compiler.
-CC=$lt_compiler_GCJ
-
-# Is the compiler the GNU C compiler?
-with_gcc=$GCC_GCJ
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# The linker used to build libraries.
-LD=$lt_LD_GCJ
-
-# Whether we need hard or soft links.
-LN_S=$lt_LN_S
-
-# A BSD-compatible nm program.
-NM=$lt_NM
-
-# A symbol stripping program
-STRIP=$lt_STRIP
-
-# Used to examine libraries when file_magic_cmd begins "file"
-MAGIC_CMD=$MAGIC_CMD
-
-# Used on cygwin: DLL creation program.
-DLLTOOL="$DLLTOOL"
-
-# Used on cygwin: object dumper.
-OBJDUMP="$OBJDUMP"
-
-# Used on cygwin: assembler.
-AS="$AS"
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_GCJ
-
-# Object file suffix (normally "o").
-objext="$ac_objext"
-
-# Old archive suffix (normally "a").
-libext="$libext"
-
-# Shared library suffix (normally ".so").
-shrext_cmds='$shrext_cmds'
-
-# Executable file suffix (normally "").
-exeext="$exeext"
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_GCJ
-pic_mode=$pic_mode
-
-# What is the maximum length of a command?
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Do we need the lib prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_GCJ
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
-
-# Compiler flag to generate thread-safe objects.
-thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
-
-# Library versioning type.
-version_type=$version_type
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME.
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Commands used to build and install an old-style archive.
-RANLIB=$lt_RANLIB
-old_archive_cmds=$lt_old_archive_cmds_GCJ
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
-
-# Commands used to build and install a shared archive.
-archive_cmds=$lt_archive_cmds_GCJ
-archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
-postinstall_cmds=$lt_postinstall_cmds
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to build a loadable module (assumed same as above if empty)
-module_cmds=$lt_module_cmds_GCJ
-module_expsym_cmds=$lt_module_expsym_cmds_GCJ
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predep_objects=$lt_predep_objects_GCJ
-
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdep_objects=$lt_postdep_objects_GCJ
-
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predeps=$lt_predeps_GCJ
-
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdeps=$lt_postdeps_GCJ
-
-# The directories searched by this compiler when creating a shared
-# library
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_GCJ
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method == file_magic.
-file_magic_cmd=$lt_file_magic_cmd
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_GCJ
-
-# Flag that forces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_GCJ
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# Same as above, but a single script fragment to be evaled but not shown.
-finish_eval=$lt_finish_eval
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# This is the shared library runtime path variable.
-runpath_var=$runpath_var
-
-# This is the shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_GCJ
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
-
-# If ld is used when linking, flag to hardcode \$libdir into
-# a binary during linking. This must work even if \$libdir does
-# not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
-
-# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
-
-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
-# resulting binary.
-hardcode_direct=$hardcode_direct_GCJ
-
-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-# resulting binary.
-hardcode_minus_L=$hardcode_minus_L_GCJ
-
-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-# the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
-
-# Set to yes if building a shared library automatically hardcodes DIR into the library
-# and all subsequent libraries and executables linked against it.
-hardcode_automatic=$hardcode_automatic_GCJ
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at relink time.
-variables_saved_for_relink="$variables_saved_for_relink"
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_GCJ
-
-# Compile-time system search path for libraries
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path
-
-# Set to yes if exported symbols are required.
-always_export_symbols=$always_export_symbols_GCJ
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_GCJ
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_GCJ
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_GCJ
-
-# ### END LIBTOOL TAG CONFIG: $tagname
-
-__EOF__
-
-
-else
-  # If there is no Makefile yet, we rely on a make rule to execute
-  # `config.status --recheck' to rerun these tests and create the
-  # libtool script then.
-  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-  if test -f "$ltmain_in"; then
-    test -f Makefile && make "$ltmain"
-  fi
-fi
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-	else
-	  tagname=""
-	fi
-	;;
-
-      RC)
-
-
-
-# Source file extension for RC test sources.
-ac_ext=rc
-
-# Object file extension for compiled RC test sources.
-objext=o
-objext_RC=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$rm conftest*
-
-ac_outfile=conftest.$ac_objext
-echo "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$rm -r conftest*
-
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-CC=${RC-"windres"}
-compiler=$CC
-compiler_RC=$CC
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-
-lt_cv_prog_compiler_c_o_RC=yes
-
-# The else clause should only fire when bootstrapping the
-# libtool distribution, otherwise you forgot to ship ltmain.sh
-# with your package, and you will get complaints that there are
-# no rules to generate ltmain.sh.
-if test -f "$ltmain"; then
-  # See if we are running on zsh, and set the options which allow our commands through
-  # without removal of \ escapes.
-  if test -n "${ZSH_VERSION+set}" ; then
-    setopt NO_GLOB_SUBST
-  fi
-  # Now quote all the things that may contain metacharacters while being
-  # careful not to overquote the AC_SUBSTed values.  We take copies of the
-  # variables and quote the copies for generation of the libtool script.
-  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
-    SED SHELL STRIP \
-    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-    deplibs_check_method reload_flag reload_cmds need_locks \
-    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-    lt_cv_sys_global_symbol_to_c_name_address \
-    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-    old_postinstall_cmds old_postuninstall_cmds \
-    compiler_RC \
-    CC_RC \
-    LD_RC \
-    lt_prog_compiler_wl_RC \
-    lt_prog_compiler_pic_RC \
-    lt_prog_compiler_static_RC \
-    lt_prog_compiler_no_builtin_flag_RC \
-    export_dynamic_flag_spec_RC \
-    thread_safe_flag_spec_RC \
-    whole_archive_flag_spec_RC \
-    enable_shared_with_static_runtimes_RC \
-    old_archive_cmds_RC \
-    old_archive_from_new_cmds_RC \
-    predep_objects_RC \
-    postdep_objects_RC \
-    predeps_RC \
-    postdeps_RC \
-    compiler_lib_search_path_RC \
-    compiler_lib_search_dirs_RC \
-    archive_cmds_RC \
-    archive_expsym_cmds_RC \
-    postinstall_cmds_RC \
-    postuninstall_cmds_RC \
-    old_archive_from_expsyms_cmds_RC \
-    allow_undefined_flag_RC \
-    no_undefined_flag_RC \
-    export_symbols_cmds_RC \
-    hardcode_libdir_flag_spec_RC \
-    hardcode_libdir_flag_spec_ld_RC \
-    hardcode_libdir_separator_RC \
-    hardcode_automatic_RC \
-    module_cmds_RC \
-    module_expsym_cmds_RC \
-    lt_cv_prog_compiler_c_o_RC \
-    fix_srcfile_path_RC \
-    exclude_expsyms_RC \
-    include_expsyms_RC; do
-
-    case $var in
-    old_archive_cmds_RC | \
-    old_archive_from_new_cmds_RC | \
-    archive_cmds_RC | \
-    archive_expsym_cmds_RC | \
-    module_cmds_RC | \
-    module_expsym_cmds_RC | \
-    old_archive_from_expsyms_cmds_RC | \
-    export_symbols_cmds_RC | \
-    extract_expsyms_cmds | reload_cmds | finish_cmds | \
-    postinstall_cmds | postuninstall_cmds | \
-    old_postinstall_cmds | old_postuninstall_cmds | \
-    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-      # Double-quote double-evaled strings.
-      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-      ;;
-    *)
-      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-      ;;
-    esac
-  done
-
-  case $lt_echo in
-  *'\$0 --fallback-echo"')
-    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
-    ;;
-  esac
-
-cfgfile="$ofile"
-
-  cat <<__EOF__ >> "$cfgfile"
-# ### BEGIN LIBTOOL TAG CONFIG: $tagname
-
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_RC
-
-# Whether or not to disallow shared libs when runtime libs are static
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# An echo program that does not interpret backslashes.
-echo=$lt_echo
-
-# The archiver.
-AR=$lt_AR
-AR_FLAGS=$lt_AR_FLAGS
-
-# A C compiler.
-LTCC=$lt_LTCC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_LTCFLAGS
-
-# A language-specific compiler.
-CC=$lt_compiler_RC
-
-# Is the compiler the GNU C compiler?
-with_gcc=$GCC_RC
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# The linker used to build libraries.
-LD=$lt_LD_RC
-
-# Whether we need hard or soft links.
-LN_S=$lt_LN_S
-
-# A BSD-compatible nm program.
-NM=$lt_NM
-
-# A symbol stripping program
-STRIP=$lt_STRIP
-
-# Used to examine libraries when file_magic_cmd begins "file"
-MAGIC_CMD=$MAGIC_CMD
-
-# Used on cygwin: DLL creation program.
-DLLTOOL="$DLLTOOL"
-
-# Used on cygwin: object dumper.
-OBJDUMP="$OBJDUMP"
-
-# Used on cygwin: assembler.
-AS="$AS"
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_RC
-
-# Object file suffix (normally "o").
-objext="$ac_objext"
-
-# Old archive suffix (normally "a").
-libext="$libext"
-
-# Shared library suffix (normally ".so").
-shrext_cmds='$shrext_cmds'
-
-# Executable file suffix (normally "").
-exeext="$exeext"
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_RC
-pic_mode=$pic_mode
-
-# What is the maximum length of a command?
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Do we need the lib prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_RC
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
-
-# Compiler flag to generate thread-safe objects.
-thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
-
-# Library versioning type.
-version_type=$version_type
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME.
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Commands used to build and install an old-style archive.
-RANLIB=$lt_RANLIB
-old_archive_cmds=$lt_old_archive_cmds_RC
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
-
-# Commands used to build and install a shared archive.
-archive_cmds=$lt_archive_cmds_RC
-archive_expsym_cmds=$lt_archive_expsym_cmds_RC
-postinstall_cmds=$lt_postinstall_cmds
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to build a loadable module (assumed same as above if empty)
-module_cmds=$lt_module_cmds_RC
-module_expsym_cmds=$lt_module_expsym_cmds_RC
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predep_objects=$lt_predep_objects_RC
-
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdep_objects=$lt_postdep_objects_RC
-
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predeps=$lt_predeps_RC
-
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdeps=$lt_postdeps_RC
-
-# The directories searched by this compiler when creating a shared
-# library
-compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_RC
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_RC
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method == file_magic.
-file_magic_cmd=$lt_file_magic_cmd
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_RC
-
-# Flag that forces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_RC
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# Same as above, but a single script fragment to be evaled but not shown.
-finish_eval=$lt_finish_eval
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# This is the shared library runtime path variable.
-runpath_var=$runpath_var
-
-# This is the shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_RC
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
-
-# If ld is used when linking, flag to hardcode \$libdir into
-# a binary during linking. This must work even if \$libdir does
-# not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
-
-# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
-
-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
-# resulting binary.
-hardcode_direct=$hardcode_direct_RC
-
-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-# resulting binary.
-hardcode_minus_L=$hardcode_minus_L_RC
-
-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-# the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
-
-# Set to yes if building a shared library automatically hardcodes DIR into the library
-# and all subsequent libraries and executables linked against it.
-hardcode_automatic=$hardcode_automatic_RC
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at relink time.
-variables_saved_for_relink="$variables_saved_for_relink"
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_RC
-
-# Compile-time system search path for libraries
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path
-
-# Set to yes if exported symbols are required.
-always_export_symbols=$always_export_symbols_RC
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_RC
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_RC
-
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_RC
-
-# ### END LIBTOOL TAG CONFIG: $tagname
-
-__EOF__
-
-
-else
-  # If there is no Makefile yet, we rely on a make rule to execute
-  # `config.status --recheck' to rerun these tests and create the
-  # libtool script then.
-  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-  if test -f "$ltmain_in"; then
-    test -f Makefile && make "$ltmain"
-  fi
-fi
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-	;;
-
-      *)
-	{ { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
-echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
-   { (exit 1); exit 1; }; }
-	;;
-      esac
-
-      # Append the new tag name to the list of available tags.
-      if test -n "$tagname" ; then
-      available_tags="$available_tags $tagname"
-    fi
-    fi
-  done
-  IFS="$lt_save_ifs"
-
-  # Now substitute the updated list of available tags.
-  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
-    mv "${ofile}T" "$ofile"
-    chmod +x "$ofile"
-  else
-    rm -f "${ofile}T"
-    { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
-echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
-   { (exit 1); exit 1; }; }
-  fi
-fi
-
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-# Prevent multiple expansion
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Checks for programs.
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# OS/2's system install, which has a completely different semantic
-# ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
-  ./ | .// | /cC/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-	if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-	  if test $ac_prog = install &&
-	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # AIX install.  It has an incompatible calling convention.
-	    :
-	  elif test $ac_prog = install &&
-	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-	    # program-specific install script used by HP pwplus--don't use.
-	    :
-	  else
-	    ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	    break 3
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-done
-
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  We don't cache a
-    # path for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the path is relative.
-    INSTALL=$ac_install_sh
-  fi
-fi
-echo "$as_me:$LINENO: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-echo "$as_me:$LINENO: checking whether ln -s works" >&5
-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
-  echo "$as_me:$LINENO: result: no, using $LN_S" >&5
-echo "${ECHO_T}no, using $LN_S" >&6
-fi
-
-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.make <<\_ACEOF
-all:
-	@echo 'ac_maketemp="$(MAKE)"'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
-if test -n "$ac_maketemp"; then
-  eval ac_cv_prog_make_${ac_make}_set=yes
-else
-  eval ac_cv_prog_make_${ac_make}_set=no
-fi
-rm -f conftest.make
-fi
-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  SET_MAKE=
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
-if test "${ac_cv_prog_egrep+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
-    then ac_cv_prog_egrep='grep -E'
-    else ac_cv_prog_egrep='egrep'
-    fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
- EGREP=$ac_cv_prog_egrep
-
-
-# Extract the first word of "ps", so it can be a program name with args.
-set dummy ps; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_PSPROG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $PSPROG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PSPROG="$PSPROG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PSPROG="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  ;;
-esac
-fi
-PSPROG=$ac_cv_path_PSPROG
-
-if test -n "$PSPROG"; then
-  echo "$as_me:$LINENO: result: $PSPROG" >&5
-echo "${ECHO_T}$PSPROG" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-# Extract the first word of "perl", so it can be a program name with args.
-set dummy perl; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_PERLPROG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $PERLPROG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PERLPROG="$PERLPROG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PERLPROG="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  ;;
-esac
-fi
-PERLPROG=$ac_cv_path_PERLPROG
-
-if test -n "$PERLPROG"; then
-  echo "$as_me:$LINENO: result: $PERLPROG" >&5
-echo "${ECHO_T}$PERLPROG" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-# Extract the first word of "python", so it can be a program name with args.
-set dummy python; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_PYTHONPROG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $PYTHONPROG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PYTHONPROG="$PYTHONPROG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PYTHONPROG="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  ;;
-esac
-fi
-PYTHONPROG=$ac_cv_path_PYTHONPROG
-
-if test -n "$PYTHONPROG"; then
-  echo "$as_me:$LINENO: result: $PYTHONPROG" >&5
-echo "${ECHO_T}$PYTHONPROG" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-for ac_prog in whoami logname
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_WHOAMI+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$WHOAMI"; then
-  ac_cv_prog_WHOAMI="$WHOAMI" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_WHOAMI="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-WHOAMI=$ac_cv_prog_WHOAMI
-if test -n "$WHOAMI"; then
-  echo "$as_me:$LINENO: result: $WHOAMI" >&5
-echo "${ECHO_T}$WHOAMI" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  test -n "$WHOAMI" && break
-done
-test -n "$WHOAMI" || WHOAMI="whoami"
-
-for ac_prog in sed gsed
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_SED+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$SED"; then
-  ac_cv_prog_SED="$SED" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_SED="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-SED=$ac_cv_prog_SED
-if test -n "$SED"; then
-  echo "$as_me:$LINENO: result: $SED" >&5
-echo "${ECHO_T}$SED" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  test -n "$SED" && break
-done
-
-for ac_prog in find
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_FIND+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$FIND"; then
-  ac_cv_prog_FIND="$FIND" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_FIND="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-FIND=$ac_cv_prog_FIND
-if test -n "$FIND"; then
-  echo "$as_me:$LINENO: result: $FIND" >&5
-echo "${ECHO_T}$FIND" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  test -n "$FIND" && break
-done
-
-# Extract the first word of "autoconf", so it can be a program name with args.
-set dummy autoconf; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_AUTOCONF+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $AUTOCONF in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_AUTOCONF="$AUTOCONF" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_AUTOCONF="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  ;;
-esac
-fi
-AUTOCONF=$ac_cv_path_AUTOCONF
-
-if test -n "$AUTOCONF"; then
-  echo "$as_me:$LINENO: result: $AUTOCONF" >&5
-echo "${ECHO_T}$AUTOCONF" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-# Extract the first word of "autoheader", so it can be a program name with args.
-set dummy autoheader; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_AUTOHEADER+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $AUTOHEADER in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_AUTOHEADER="$AUTOHEADER" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_AUTOHEADER="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  ;;
-esac
-fi
-AUTOHEADER=$ac_cv_path_AUTOHEADER
-
-if test -n "$AUTOHEADER"; then
-  echo "$as_me:$LINENO: result: $AUTOHEADER" >&5
-echo "${ECHO_T}$AUTOHEADER" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-if test "x$ac_cv_prog_AUTOCONF" = "x"; then
-	AUTOCONF=":"
-
-fi
-if test "x$ac_cv_prog_AUTOHEADER" = "x"; then
-	AUTOHEADER=":"
-
-fi
-
-# Extract the first word of "uname", so it can be a program name with args.
-set dummy uname; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_UNAMEPROG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $UNAMEPROG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_UNAMEPROG="$UNAMEPROG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_UNAMEPROG="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  ;;
-esac
-fi
-UNAMEPROG=$ac_cv_path_UNAMEPROG
-
-if test -n "$UNAMEPROG"; then
-  echo "$as_me:$LINENO: result: $UNAMEPROG" >&5
-echo "${ECHO_T}$UNAMEPROG" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define UNAMEPROG "$UNAMEPROG"
-_ACEOF
-
-
-echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
-if test "${ac_cv_c_const+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-/* FIXME: Include the comments suggested by Paul. */
-#ifndef __cplusplus
-  /* Ultrix mips cc rejects this.  */
-  typedef int charset[2];
-  const charset x;
-  /* SunOS 4.1.1 cc rejects this.  */
-  char const *const *ccp;
-  char **p;
-  /* NEC SVR4.0.2 mips cc rejects this.  */
-  struct point {int x, y;};
-  static struct point const zero = {0,0};
-  /* AIX XL C 1.02.0.0 rejects this.
-     It does not let you subtract one const X* pointer from another in
-     an arm of an if-expression whose if-part is not a constant
-     expression */
-  const char *g = "string";
-  ccp = &g + (g ? g-g : 0);
-  /* HPUX 7.0 cc rejects these. */
-  ++ccp;
-  p = (char**) ccp;
-  ccp = (char const *const *) p;
-  { /* SCO 3.2v4 cc rejects this.  */
-    char *t;
-    char const *s = 0 ? (char *) 0 : (char const *) 0;
-
-    *t++ = 0;
-  }
-  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
-    int x[] = {25, 17};
-    const int *foo = &x[0];
-    ++foo;
-  }
-  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-    typedef const int *iptr;
-    iptr p = 0;
-    ++p;
-  }
-  { /* AIX XL C 1.02.0.0 rejects this saying
-       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-    struct s { int j; const int *ap[3]; };
-    struct s *b; b->j = 5;
-  }
-  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-    const int foo = 10;
-  }
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_c_const=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_c_const=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
-echo "${ECHO_T}$ac_cv_c_const" >&6
-if test $ac_cv_c_const = no; then
-
-cat >>confdefs.h <<\_ACEOF
-#define const
-_ACEOF
-
-fi
-
-echo "$as_me:$LINENO: checking for inline" >&5
-echo $ECHO_N "checking for inline... $ECHO_C" >&6
-if test "${ac_cv_c_inline+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_c_inline=no
-for ac_kw in inline __inline__ __inline; do
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifndef __cplusplus
-typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
-#endif
-
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_c_inline=$ac_kw; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
-echo "${ECHO_T}$ac_cv_c_inline" >&6
-
-
-case $ac_cv_c_inline in
-  inline | yes) ;;
-  *)
-    case $ac_cv_c_inline in
-      no) ac_val=;;
-      *) ac_val=$ac_cv_c_inline;;
-    esac
-    cat >>confdefs.h <<_ACEOF
-#ifndef __cplusplus
-#define inline $ac_val
-#endif
-_ACEOF
-    ;;
-esac
-
-
-
-# get version number.
-echo "$as_me:$LINENO: checking for net-snmp version number" >&5
-echo $ECHO_N "checking for net-snmp version number... $ECHO_C" >&6
-VERSION=$PACKAGE_VERSION
-
-# create the release version number....  I'm not sure this is used
-# anywhere any longer.
-_release_version=`echo $VERSION | sed 's/";.*//;s/.*"//;s/pre/0./;'`
-
-RELEASEVERSION=`echo $_release_version | sed 's/^\([0-9]\)\.\([0-9]\)/\1:\2:0/'`
-
-
-
-
-echo "$as_me:$LINENO: result: $VERSION" >&5
-echo "${ECHO_T}$VERSION" >&6
-
-  cat >> configure-summary << EOF
-  Net-SNMP Version:           $VERSION
-EOF
-
-
-# super type checking
-# WWWXXX
-echo "$as_me:$LINENO: checking for developer gcc flags" >&5
-echo $ECHO_N "checking for developer gcc flags... $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for developer gcc flags" >&5
+$as_echo_n "checking for developer gcc flags... " >&6; }
 if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
-  DEVFLAGS="-Wall -Winline -Wstrict-prototypes -Wwrite-strings -Wcast-qual -Wno-char-subscripts"
+
+    #       WWWXXX - strict type checking
+    #
+    DEVFLAGS="-Wall -Wstrict-prototypes -Wwrite-strings -Wcast-qual"
 else
-  DEVFLAGS=""
+    DEVFLAGS=""
 fi
-echo "$as_me:$LINENO: result: $DEVFLAGS" >&5
-echo "${ECHO_T}$DEVFLAGS" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $DEVFLAGS" >&5
+$as_echo "$DEVFLAGS" >&6; }
 
 
+
+#   building outside source directory
 #
-# hacks for building outside of the source directory
-#
-# 1) make sure build include paths are before source
-# 2) check for GNU make to use vpath instead of VPATH
+#       a) ensure build include paths are before source
+#       b) ensure GNU make uses 'vpath' instead of 'VPATH'
 #
 NON_GNU_VPATH="VPATH ="
 GNU_vpath="#vpath"
+
+#       define include paths relative to top_srcdir
+#       tweak includes if we're building outside of the source dir
 #
-# define include paths relative to top_srcdir
-# tweak includes if we're building outside of the source dir
 if test "x$srcdir" = "x."; then
-TOP_INCLUDES=SRC_TOP_INCLUDES
-SNMPLIB_INCLUDES=SRC_SNMPLIB_INCLUDES
-AGENT_INCLUDES=SRC_AGENT_INCLUDES
-HELPER_INCLUDES=SRC_HELPER_INCLUDES
-MIBGROUP_INCLUDES=SRC_MIBGROUP_INCLUDES
+    TOP_INCLUDES=SRC_TOP_INCLUDES
+    SNMPLIB_INCLUDES=SRC_SNMPLIB_INCLUDES
+    AGENT_INCLUDES=SRC_AGENT_INCLUDES
+    HELPER_INCLUDES=SRC_HELPER_INCLUDES
+    MIBGROUP_INCLUDES=SRC_MIBGROUP_INCLUDES
 else
-TOP_INCLUDES=BLD_TOP_INCLUDES
-SNMPLIB_INCLUDES=BLD_SNMPLIB_INCLUDES
-AGENT_INCLUDES=BLD_AGENT_INCLUDES
-HELPER_INCLUDES=BLD_HELPER_INCLUDES
-MIBGROUP_INCLUDES=BLD_MIBGROUP_INCLUDES
-make -v -f /dev/null 2>/dev/null | grep GNU >/dev/null
-have_gnu_make=$?
-if test $have_gnu_make -eq 0 ; then
-    NON_GNU_VPATH="#VPATH ="
-    GNU_vpath="vpath"
-fi
+    TOP_INCLUDES=BLD_TOP_INCLUDES
+    SNMPLIB_INCLUDES=BLD_SNMPLIB_INCLUDES
+    AGENT_INCLUDES=BLD_AGENT_INCLUDES
+    HELPER_INCLUDES=BLD_HELPER_INCLUDES
+    MIBGROUP_INCLUDES=BLD_MIBGROUP_INCLUDES
+    if test $have_gnu_make -eq 0 ; then
+        NON_GNU_VPATH="#VPATH ="
+        GNU_vpath="vpath"
+    fi
 fi
 
 
@@ -21456,40 +15288,55 @@
 
 
 
-#
-# Check whether we can use -Ux -Dx=x with the expected behaviour
-#
-echo "$as_me:$LINENO: checking whether to un-define target system token (before redefining)" >&5
-echo $ECHO_N "checking whether to un-define target system token (before redefining)... $ECHO_C" >&6
-OLD_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="-U$PARTIALTARGETOS -D$PARTIALTARGETOS=$PARTIALTARGETOS"
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-[
-#ifdef $PARTIALTARGETOS
-yes
-#endif
-]
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1; then
-  PARTIALTARGETFLAGS="-U$PARTIALTARGETOS -D$PARTIALTARGETOS=$PARTIALTARGETOS"
- echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+##
+#   System-related compilation checks:
+##
+
+#       What system are we building for
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if ${ac_cv_target+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  PARTIALTARGETFLAGS="-D$PARTIALTARGETOS=$PARTIALTARGETOS"
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  if test "x$target_alias" = x; then
+  ac_cv_target=$ac_cv_host
+else
+  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
 fi
-rm -f conftest*
 
-CFLAGS="$CFLAGS $PARTIALTARGETFLAGS"
-CPPFLAGS="$OLD_CPPFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+  test "$program_prefix$program_suffix$program_transform_name" = \
+    NONENONEs,x,x, &&
+  program_prefix=${target_alias}-
+
+PARTIALTARGETOS=`echo $target_os | sed 's/[-._].*//'`
+
 
   cat >> configure-summary << EOF
   Building for:               $PARTIALTARGETOS
@@ -21498,24 +15345,108 @@
 
 
 #
-# check for special includes and pick one
+#    Whether or not Cygwin's ld recognizes the flag -no-undefined.
 #
 
-echo "$as_me:$LINENO: checking for system include file" >&5
-echo $ECHO_N "checking for system include file... $ECHO_C" >&6
+case x$target_os in
+xcygwin*)
+  saved_LDFLAGS=$LDFLAGS
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker supports -no-undefined" >&5
+$as_echo_n "checking whether the linker supports -no-undefined... " >&6; }
+  LDFLAGS="$saved_LDFLAGS -Wl,-no-undefined"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; };                   LD_NO_UNDEFINED=-no-undefined
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+  LDFLAGS="$saved_LDFLAGS"
+  ;;
+esac
+
+
+
+
+#
+#   Socket library: either 'default' (non-MinGW) or 'winsock2' (MinGW).
+#
+case x$target_os in
+  xmingw*)
+    with_socklib=winsock2
+    if test "x$enable_ipv6" = "xyes"; then
+      CFLAGS="-D_WIN32_WINNT=0x0501 $CFLAGS"
+    fi
+    ;;
+  *)
+    with_socklib=default;;
+esac
+
+
+#   Check system define behaviour
+#       Does "-Ux -Dx=x" work as expected?
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to un-define target system token (before redefining)" >&5
+$as_echo_n "checking whether to un-define target system token (before redefining)... " >&6; }
+OLD_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="-U$PARTIALTARGETOS -D$PARTIALTARGETOS=$PARTIALTARGETOS"
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+[
+#ifdef $PARTIALTARGETOS
+yes
+#endif
+    ]
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+    PARTIALTARGETFLAGS="-U$PARTIALTARGETOS -D$PARTIALTARGETOS=$PARTIALTARGETOS"
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+    PARTIALTARGETFLAGS="-D$PARTIALTARGETOS=$PARTIALTARGETOS"
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f conftest*
+
+CFLAGS="$CFLAGS $PARTIALTARGETFLAGS"
+CPPFLAGS="$OLD_CPPFLAGS"
+
+
+#       Determine appropriate <net-snmp/system/{os}.h> include
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for system include file" >&5
+$as_echo_n "checking for system include file... " >&6; }
 
 filebase=$target_os
 # ignore binary format indication
-filebase=`echo $filebase | sed 's/elf//'`
-filebase=`echo $filebase | sed 's/aout//'`
-filebase=`echo $filebase | sed 's/ecoff//'`
-filebase=`echo $filebase | sed 's/coff//'`
+filebase=`echo $filebase | $SED 's/elf//'`
+filebase=`echo $filebase | $SED 's/aout//'`
+filebase=`echo $filebase | $SED 's/ecoff//'`
+filebase=`echo $filebase | $SED 's/coff//'`
 while test "x$filebase" != "x$last" -a ! -f $srcdir/include/net-snmp/system/$filebase.h
 do
     last=$filebase
-    filebase=`echo $filebase | sed 's/[-._][^-._]*$//'`
+    filebase=`echo $filebase | $SED 's/[-._][^-._]*$//'`
     if test "x$filebase" = "x$last"; then
-	filebase=`echo $filebase | sed 's/[0-9]*$//'`
+	filebase=`echo $filebase | $SED 's/[0-9]*$//'`
     fi
 done
 
@@ -21524,24 +15455,24 @@
 fi
 ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE="net-snmp/system/$filebase.h"
 
-
-echo "$as_me:$LINENO: result: $ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE" >&5
-echo "${ECHO_T}$ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE" >&5
+$as_echo "$ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE" >&6; }
 cat >>confdefs.h <<_ACEOF
 #define NETSNMP_SYSTEM_INCLUDE_FILE "$ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE"
 _ACEOF
 
 
-# second part, the CPU type.
 
-echo "$as_me:$LINENO: checking for machine-type include file" >&5
-echo $ECHO_N "checking for machine-type include file... $ECHO_C" >&6
+#       Determine appropriate <net-snmp/machine/{cpu}.h> include
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for machine-type include file" >&5
+$as_echo_n "checking for machine-type include file... " >&6; }
 
 filebase=$target_cpu
 while test "x$filebase" != "x$last" -a ! -f $srcdir/include/net-snmp/machine/$filebase.h
 do
     last=$filebase
-    filebase=`echo $filebase | sed 's/[-._][^-._]*$//'`
+    filebase=`echo $filebase | $SED 's/[-._][^-._]*$//'`
 done
 
 if test "x$filebase" = "x$last"; then
@@ -21549,20 +15480,59 @@
 fi
 ac_cv_NETSNMP_MACHINE_INCLUDE_FILE="net-snmp/machine/$filebase.h"
 
-echo "$as_me:$LINENO: result: $ac_cv_NETSNMP_MACHINE_INCLUDE_FILE" >&5
-echo "${ECHO_T}$ac_cv_NETSNMP_MACHINE_INCLUDE_FILE" >&6
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_NETSNMP_MACHINE_INCLUDE_FILE" >&5
+$as_echo "$ac_cv_NETSNMP_MACHINE_INCLUDE_FILE" >&6; }
 cat >>confdefs.h <<_ACEOF
 #define NETSNMP_MACHINE_INCLUDE_FILE "$ac_cv_NETSNMP_MACHINE_INCLUDE_FILE"
 _ACEOF
 
 
+
+##
+#   Platform-specific compilation checks:
+##
+
+#   Preprocessor checks:
+#
+
+#       More sensible system identifier                 (MinGW)
+#
+if test "x$PARTIALTARGETOS" = "xmingw32msvc"; then
+	CFLAGS="$CFLAGS -Dmingw32"
+fi
+
+#       Handle .in file extension                       (GCC)
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for additional cpp flags" >&5
+$as_echo_n "checking for additional cpp flags... " >&6; }
+if test "x$GCC" = "xyes" -a "x$CPP" = "x$CC -E"; then
+    EXTRACPPFLAGS="-x c"
+else
+    EXTRACPPFLAGS=""
+fi
+
+#       Solaris extra CPP flags                         (Solaris)
+#
+if test "x$GCC" != "xyes"; then
+    case $target_os in
+        solaris*) EXTRACPPFLAGS="$EXTRACPPFLAGS -Xs" ;;
+    esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXTRACPPFLAGS" >&5
+$as_echo "$EXTRACPPFLAGS" >&6; }
+
+
+#   Compiler checks:
+#
+
 # Extract the first word of "$CC", so it can be a program name with args.
 set dummy $CC; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_CCPATH+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CCPATH+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   case $CCPATH in
   [\\/]* | ?:[\\/]*)
@@ -21574,99 +15544,66 @@
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_path_CCPATH="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
   ;;
 esac
 fi
 CCPATH=$ac_cv_path_CCPATH
-
 if test -n "$CCPATH"; then
-  echo "$as_me:$LINENO: result: $CCPATH" >&5
-echo "${ECHO_T}$CCPATH" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CCPATH" >&5
+$as_echo "$CCPATH" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-# watch out for /usr/ucb/cc on solaris, it doesn't work with this package.
+
 case $target_os in
     bsdi*)
+        #   Check for bundled compiler                  (BSDi)
+        #
 	if test "x$CCPATH" = "x/usr/ucb/cc" -o "x$CCPATH" = "x/usr/bin/cc"; then
-	    { { echo "$as_me:$LINENO: error:
+	    as_fn_error $? "
 
 *** The BSDI /usr/ucb/cc compiler does not work with this package.
 *** Please run configure with --with-cc=gcc
-" >&5
-echo "$as_me: error:
-
-*** The BSDI /usr/ucb/cc compiler does not work with this package.
-*** Please run configure with --with-cc=gcc
-" >&2;}
-   { (exit 1); exit 1; }; }
+" "$LINENO" 5
 	fi
     ;;
     solaris*)
+        #   Check for bundled compiler                  (Solaris)
+        #
 	if test "x$CCPATH" = "x/usr/ucb/cc"; then
-	    { { echo "$as_me:$LINENO: error:
+	    as_fn_error $? "
 
 *** The solaris /usr/ucb/cc compiler does not work with this package.
 *** Please put a different compiler in your path first or run
 *** configure with --with-cc=XX, where XX is the compiler you want to use.
-" >&5
-echo "$as_me: error:
-
-*** The solaris /usr/ucb/cc compiler does not work with this package.
-*** Please put a different compiler in your path first or run
-*** configure with --with-cc=XX, where XX is the compiler you want to use.
-" >&2;}
-   { (exit 1); exit 1; }; }
+" "$LINENO" 5
 	fi
     ;;
 esac
 
-echo "$as_me:$LINENO: checking for additional cpp flags" >&5
-echo $ECHO_N "checking for additional cpp flags... $ECHO_C" >&6
-# gcc extra CPPFLAGS
-if test "x$GCC" = "xyes" -a "x$CPP" = "x$CC -E"; then
-  # extra cpp flags for gnu c compiler to allow .in file extensions.
-  EXTRACPPFLAGS="-x c"
-else
-  EXTRACPPFLAGS=""
-fi
-
-# Solaris extra cpp flags.
-if test "x$GCC" != "xyes"; then
-  case $target_os in
-    solaris*) EXTRACPPFLAGS="$EXTRACPPFLAGS -Xs" ;;
-  esac
-fi
-
-
-echo "$as_me:$LINENO: result: $EXTRACPPFLAGS" >&5
-echo "${ECHO_T}$EXTRACPPFLAGS" >&6
 
 #   Compiler flags:
 #
 
 # The Net-SNMP source code is not strict-aliasing safe, so add
 # -fno-strict-aliasing to $CFLAGS if the compiler supports it.
-echo "$as_me:$LINENO: checking whether the compiler supports -fno-strict-aliasing" >&5
-echo $ECHO_N "checking whether the compiler supports -fno-strict-aliasing... $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fno-strict-aliasing" >&5
+$as_echo_n "checking whether the compiler supports -fno-strict-aliasing... " >&6; }
 netsnmp_save_CFLAGS="$CFLAGS"
 CFLAGS="-fno-strict-aliasing $CFLAGS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -21677,78 +15614,197 @@
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
   CFLAGS="$netsnmp_save_CFLAGS"
 
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
-# Prefixes must begin with "/" or [A-Z] followed by colon.
 
+#   Linker checks:
+#
+
+case $target_os in
+    aix4.2*|aix4.3*|aix5*|aix6*|aix7*)
+        #   Runtime linking flags                       (AIX)
+        #
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking what linker flags to add to enable runtime linking on AIX" >&5
+$as_echo_n "checking what linker flags to add to enable runtime linking on AIX... " >&6; }
+        for ld_flag in $LDFLAGS; do
+            if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+                netsnmp_aix_runtimelinking_flags_ok=yes
+                break
+            fi
+        done
+        if test "X$netsnmp_aix_runtimelinking_flags_ok" != "Xyes"; then
+	    if test "x$GCC" = "xyes"; then
+	        netsnmp_aix_ldflags="-Wl,-brtl"
+	    else
+                netsnmp_aix_ldflags="-brtl"
+	    fi
+            LDFLAGS="$netsnmp_aix_ldflags $LDFLAGS"
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_aix_ldflags" >&5
+$as_echo "$netsnmp_aix_ldflags" >&6; }
+	else
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+	fi
+	;;
+
+    darwin8*|darwin9*|darwin10*|darwin11*|darwin12*|darwin13*)
+        #   Flat Namespace linking                      (Mac OS/X)
+        #
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether darwin ld might need -flat_namespace" >&5
+$as_echo_n "checking whether darwin ld might need -flat_namespace... " >&6; }
+	if test -z "$MACOSX_DEPLOYMENT_TARGET"; then
+		LDFLAGS="-flat_namespace -framework CoreFoundation -framework CoreServices -framework DiskArbitration -framework IOKit $LDFLAGS"
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	fi
+	;;
+
+    *)
+        ;;
+esac
+
+
+#       dpkg package (swintst_apt)
+#	    used in agent only
+#
+# Extract the first word of "dpkg-query", so it can be a program name with args.
+set dummy dpkg-query; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DPKG_QUERY_PATH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DPKG_QUERY_PATH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DPKG_QUERY_PATH="$DPKG_QUERY_PATH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_DPKG_QUERY_PATH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+DPKG_QUERY_PATH=$ac_cv_path_DPKG_QUERY_PATH
+if test -n "$DPKG_QUERY_PATH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DPKG_QUERY_PATH" >&5
+$as_echo "$DPKG_QUERY_PATH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test x$DPKG_QUERY_PATH != x; then
+
+$as_echo "#define HAVE_DPKG_QUERY 1" >>confdefs.h
+
+fi
+
+
+##
+#   Non-program/compilation checks:
+##
+
+#       Substitute version number.
+#
+VERSION=$PACKAGE_VERSION
+
+
+  cat >> configure-summary << EOF
+  Net-SNMP Version:           $PACKAGE_VERSION
+EOF
+
+
+
+# -*- autoconf -*-
+#########################################
+##
+# Configure paths
+##
+#########################################
+
+##
+#   Prefix paths:
+##
+
+#   Main prefix
+#
 if test "x$prefix" = "xNONE"; then
   prefix=/usr/local
 fi
 
-fch=`echo $prefix | sed 's/\(.\).*/\1/'`
-if test "x$fch" != "x/" ; then
-   sch=`echo $prefix | sed 's/.\(.\).*/\1/'`
-   if test "x$sch" != "x:" ; then
+#       Prefix must be an absolute path
+#           i.e. begin with "/"                         (Unix)
+#                or "[A-Z]:"                            (Windows)
+#
+firstchar=`echo $prefix | $SED 's/\(.\).*/\1/'`
+if test "x$firstchar" != "x/" ; then
+   secondchar=`echo $prefix | $SED 's/.\(.\).*/\1/'`
+   if test "x$secondchar" != "x:" ; then
       prefix=`pwd`/$prefix
       echo "adjusting prefix to $prefix"
    fi
 fi
 
-if test "x$exec_prefix" = "xNONE"; then
-  exec_prefix=$prefix
-fi
 
-fch=`echo $exec_prefix | sed 's/\(.\).*/\1/'`
-if test "x$fch" != "x/" ; then
-   sch=`echo $exec_prefix | sed 's/.\(.\).*/\1/'`
-   if test "x$sch" != "x:" ; then
-      exec_prefix=`pwd`/$exec_prefix
-      echo "adjusting exec_prefix to $exec_prefix"
+#   Exec prefix
+#
+#       Prefix must be an absolute path
+#           i.e. begin with "/"                         (Unix)
+#                or "[A-Z]:"                            (Windows)
+#
+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
 
-# Set SNMPLIBPATH & SNMPSHAREPATH
 
+##
+#   Environmental variables:
+##
+
+#       SNMPLIBPATH
+#
 SNMPLIBPATH=""
 tmpset="$libdir/snmp"
 while test "x$tmpset" != "x$SNMPLIBPATH"; do
-  SNMPLIBPATH="$tmpset"
-  eval tmpset="$tmpset"
+    SNMPLIBPATH="$tmpset"
+    eval tmpset="$tmpset"
 done
 cat >>confdefs.h <<_ACEOF
 #define SNMPLIBPATH "$SNMPLIBPATH"
@@ -21760,11 +15816,13 @@
 _ACEOF
 
 
+#       SNMPSHAREPATH
+#
 SNMPSHAREPATH=""
 tmpset="$datadir/snmp"
 while test "x$tmpset" != "x$SNMPSHAREPATH"; do
-  SNMPSHAREPATH="$tmpset"
-  eval tmpset="$tmpset"
+    SNMPSHAREPATH="$tmpset"
+    eval tmpset="$tmpset"
 done
 cat >>confdefs.h <<_ACEOF
 #define SNMPSHAREPATH "$SNMPSHAREPATH"
@@ -21772,23 +15830,29 @@
 
 
 
+#       MIBDIRS   (default)
+#
 if test "x$NETSNMP_DEFAULT_MIBDIRS" = "x"; then
-  NETSNMP_DEFAULT_MIBDIRS="\$HOME/.snmp/mibs:$SNMPSHAREPATH/mibs"
-  if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc" -o "x$PARTIALTARGETOS" = "xcygwin"; then
-    NETSNMP_DEFAULT_MIBDIRS=`echo "$NETSNMP_DEFAULT_MIBDIRS" | $SED 's/:/;/g'`
-  fi
-  cat >>confdefs.h <<_ACEOF
+    NETSNMP_DEFAULT_MIBDIRS="\$HOME/.snmp/mibs:$SNMPSHAREPATH/mibs"
+    if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc" -o "x$PARTIALTARGETOS" = "xcygwin"; then
+        #
+        #    USe Windows-style path separator
+        NETSNMP_DEFAULT_MIBDIRS=`echo "$NETSNMP_DEFAULT_MIBDIRS" | $SED 's/:/;/g'`
+    fi
+    cat >>confdefs.h <<_ACEOF
 #define NETSNMP_DEFAULT_MIBDIRS "$NETSNMP_DEFAULT_MIBDIRS"
 _ACEOF
 
 fi
 
 
+#       SNMPCONFPATH
+#
 SNMPCONFPATH=""
 tmpset="$sysconfdir/snmp"
 while test "x$tmpset" != "x$SNMPCONFPATH"; do
-  SNMPCONFPATH="$tmpset"
-  eval tmpset="$tmpset"
+    SNMPCONFPATH="$tmpset"
+    eval tmpset="$tmpset"
 done
 cat >>confdefs.h <<_ACEOF
 #define SNMPCONFPATH "$SNMPCONFPATH"
@@ -21796,3034 +15860,2442 @@
 
 
 
-echo "$as_me:$LINENO: checking for short" >&5
-echo $ECHO_N "checking for short... $ECHO_C" >&6
-if test "${ac_cv_type_short+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+#########################################
+##
+# Checks for header files.
+##
+#########################################
+
+##
+#   Standard checks:
+##
+#  Core:
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$ac_includes_default
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
 int
 main ()
 {
-if ((short *) 0)
-  return 0;
-if (sizeof (short))
-  return 0;
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_short=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_short=no
+  ac_cv_header_stdc=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5
-echo "${ECHO_T}$ac_cv_type_short" >&6
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
-echo "$as_me:$LINENO: checking size of short" >&5
-echo $ECHO_N "checking size of short... $ECHO_C" >&6
-if test "${ac_cv_sizeof_short+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+          #  <stdlib.h>, <stdarg.h>,   <string.h>  & <float.h>
+ac_header_dirent=no
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
+  as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
+$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
+if eval \${$as_ac_Header+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <$ac_hdr>
+
+int
+main ()
+{
+if ((DIR *) 0)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$as_ac_Header=yes"
+else
+  eval "$as_ac_Header=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$as_ac_Header
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+_ACEOF
+
+ac_header_dirent=$ac_hdr; break
+fi
+
+done
+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+if test $ac_header_dirent = dirent.h; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+$as_echo_n "checking for library containing opendir... " >&6; }
+if ${ac_cv_search_opendir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char opendir ();
+int
+main ()
+{
+return opendir ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' dir; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_opendir=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_opendir+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_opendir+:} false; then :
+
+else
+  ac_cv_search_opendir=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+$as_echo "$ac_cv_search_opendir" >&6; }
+ac_res=$ac_cv_search_opendir
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+$as_echo_n "checking for library containing opendir... " >&6; }
+if ${ac_cv_search_opendir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char opendir ();
+int
+main ()
+{
+return opendir ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' x; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_opendir=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_opendir+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_opendir+:} false; then :
+
+else
+  ac_cv_search_opendir=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+$as_echo "$ac_cv_search_opendir" >&6; }
+ac_res=$ac_cv_search_opendir
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+fi
+        #  <dirent.h>, <sys/ndir.h>, <sys/dir.h> & <ndir.h>
+#  Apps:
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5
+$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; }
+if ${ac_cv_header_sys_wait_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <sys/wait.h>
+#ifndef WEXITSTATUS
+# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8)
+#endif
+#ifndef WIFEXITED
+# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
+#endif
+
+int
+main ()
+{
+  int s;
+  wait (&s);
+  s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_sys_wait_h=yes
+else
+  ac_cv_header_sys_wait_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5
+$as_echo "$ac_cv_header_sys_wait_h" >&6; }
+if test $ac_cv_header_sys_wait_h = yes; then
+
+$as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
+
+fi
+      #  <sys/wait.h>
+
+# allow for quick module/library/etc processing checks
+if test "x$NETSNMP_QUICK_CHECK" = "x" ; then
+
+##
+#   Stand-alone headers:
+##
+#  Core:
+for ac_header in getopt.h   pthread.h  regex.h                        string.h   syslog.h   unistd.h                       stdint.h   inttypes.h                                sys/param.h                          sys/select.h                         sys/socket.h                         sys/time.h                           sys/timeb.h                          sys/un.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+#  Library and Agent:
+for ac_header in nlist.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "
+$ac_includes_default
+
+#ifndef LIBBSD_DISABLE_DEPRECATED
+#define LIBBSD_DISABLE_DEPRECATED 1
+#endif
+
+"
+if test "x$ac_cv_header_nlist_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_NLIST_H 1
+_ACEOF
+
+fi
+
+done
+
+
+#  Library:
+for ac_header in fcntl.h    io.h       kstat.h                                   limits.h   locale.h                                    sys/file.h       sys/ioctl.h                           sys/sockio.h     sys/stat.h                            sys/systemcfg.h  sys/systeminfo.h                      sys/times.h      sys/uio.h                             sys/utsname.h                        netipx/ipx.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+#  Agent:
+for ac_header in dlfcn.h    err.h      fcntl.h    fstab.h                                   grp.h      io.h                                      ioctls.h   kstat.h    kvm.h      limits.h                                  mntent.h   mtab.h                                               pkglocs.h             pwd.h                                     com_err.h             et/com_err.h                              utmpx.h    utsname.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in sys/diskio.h  sys/dkio.h                                                   sys/file.h    sys/filio.h   sys/fixpoint.h                                 sys/fs.h      sys/ioctl.h   sys/loadavg.h  sys/mntent.h                    sys/mnttab.h  sys/pool.h    sys/protosw.h  sys/pstat.h                     sys/sockio.h  sys/stat.h    sys/statfs.h   sys/statvfs.h                   sys/stream.h  sys/sysget.h  sys/sysmp.h                                    sys/tcpipstats.h            sys/utsname.h  sys/vfs.h                       sys/vm.h      sys/vmmac.h   sys/vmmeter.h  sys/vmparam.h                   sys/vmsystm.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in asm/page.h asm/types.h                                 inet/mib2.h                                            linux/hdreg.h linux/tasks.h                            machine/param.h                                        netinet/tcp_fsm.h                                      ufs/fs.h                                               uvm/uvm_extern.h uvm/uvm_param.h                       vm/vm.h vm/vm_extern.h vm/vm_param.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+#  Apps:
+for ac_header in fcntl.h    grp.h      pwd.h                        sys/cdefs.h   sys/ioctl.h                          sys/socket.h  sys/sockio.h                         sys/time.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+#  Not-Used:
+for ac_header in search.h   sgtty.h    xti.h                        sys/dmap.h sys/poll.h                              sys/timeout.h                                      machine/pte.h                                      pci/pci.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+# Valgrind
+for ac_header in valgrind/valgrind.h valgrind/memcheck.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+# OpenSSL
+for ac_header in openssl/aes.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+     #  (Core)
+for ac_header in openssl/dh.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+     #  (Apps)
+#  Not-Used:
+for ac_header in openssl/des.h  openssl/hmac.h                   openssl/evp.h  security/cryptoki.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+# RPM subdirectory path                   (Agent)
+if test "x$with_rpm" != "xno"; then
+  for ac_header in rpm/rpmts.h   rpm/rpmfileutil.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#include <rpm/rpmlib.h>
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+fi
+
+
+##
+#   Pre-requisite on other headers:
+##
+
+#       requiring <sys/param.h>  (MAXPATHLEN)           (OpenBSD 3.4)
+#  Agent:
+#
+for ac_header in sys/swap.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "sys/swap.h" "ac_cv_header_sys_swap_h" "$ac_includes_default
+
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+
+"
+if test "x$ac_cv_header_sys_swap_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_SWAP_H 1
+_ACEOF
+
+fi
+
+done
+
+
+#       requiring <sys/param.h>                         (FreeBSD)
+#
+#  Core:      (? Tested above? )
+for ac_header in stdlib.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+#
+#  Library:
+for ac_header in malloc.h        net/if_dl.h   sys/sysctl.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+#
+#  Agent:
+for ac_header in malloc.h        osreldate.h                                     machine/types.h net/if_dl.h   net/if_types.h                    sys/dkstat.h    sys/conf.h    sys/mbuf.h                        sys/mount.h     sys/proc.h    sys/queue.h                       sys/sysctl.h    sys/user.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+#       requiring <sys/sema.h>                          (IRIX 6.5)
+#  Agent:
+#
+for ac_header in sys/sema.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "sys/sema.h" "ac_cv_header_sys_sema_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_sema_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_SEMA_H 1
+_ACEOF
+
+fi
+
+done
+
+for ac_header in sys/hashing.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "sys/hashing.h" "ac_cv_header_sys_hashing_h" "$ac_includes_default
+
+#if HAVE_SYS_SEMA_H
+#include <sys/sema.h>
+#endif
+
+"
+if test "x$ac_cv_header_sys_hashing_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_HASHING_H 1
+_ACEOF
+
+fi
+
+done
+
+
+#       requiring <sys/socket.h>                        (Solaris 9)
+#  Agent:
+#
+for ac_header in sys/socketvar.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "sys/socketvar.h" "ac_cv_header_sys_socketvar_h" "$ac_includes_default
+
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+"
+if test "x$ac_cv_header_sys_socketvar_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_SOCKETVAR_H 1
+_ACEOF
+
+fi
+
+done
+
+
+#       requiring _KMEMUSER and <sys/types.h>           (BSDi3/IRIX)
+#  Agent:
+#
+for ac_header in sys/vnode.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "sys/vnode.h" "ac_cv_header_sys_vnode_h" "
+#define _KMEMUSER 1
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+"
+if test "x$ac_cv_header_sys_vnode_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_VNODE_H 1
+_ACEOF
+
+fi
+
+done
+
+
+#       requiring <machine/types.h>                     (NetBSD)
+#  Agent:
+#
+for ac_header in sys/disklabel.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "sys/disklabel.h" "ac_cv_header_sys_disklabel_h" "
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_MACHINE_TYPES_H
+#include <machine/types.h>
+#endif
+
+"
+if test "x$ac_cv_header_sys_disklabel_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_DISKLABEL_H 1
+_ACEOF
+
+fi
+
+done
+
+
+#	QNX
+for ac_header in nbutil.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "nbutil.h" "ac_cv_header_nbutil_h" "$ac_includes_default"
+if test "x$ac_cv_header_nbutil_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_NBUTIL_H 1
+_ACEOF
+
+fi
+
+done
+
+
+#       UFS headers
+#  Agent:
+#
+for ac_header in ufs/ufs/dinode.h ufs/ufs/quota.h ufs/ufs/inode.h ufs/ffs/fs.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_UFS_UFS_DINODE_H
+#include <ufs/ufs/dinode.h>
+#endif
+#if HAVE_UFS_UFS_QUOTA_H
+#include <ufs/ufs/quota.h>
+#endif
+
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+#       requiring <vm/vm.h>                             (BSDi2)
+#  Agent:
+#
+for ac_header in vm/swap_pager.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "vm/swap_pager.h" "ac_cv_header_vm_swap_pager_h" "
+#if HAVE_VM_VM_H
+#include <vm/vm.h>
+#endif
+
+"
+if test "x$ac_cv_header_vm_swap_pager_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_VM_SWAP_PAGER_H 1
+_ACEOF
+
+fi
+
+done
+
+
+#       netlink/rtnetlink                               (Linux)
+#  Agent:
+#
+for ac_header in linux/netlink.h  linux/rtnetlink.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
+#if HAVE_ASM_TYPES_H
+#include <asm/types.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_LINUX_NETLINK_H
+#include <linux/netlink.h>
+#endif
+
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+#       Network headers
+#  Core or Library/Agent/Apps:
+#
+for ac_header in arpa/inet.h        net/if.h                               netinet/in.h       netdb.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_TIMEOUT_H
+#include <sys/timeout.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_SYS_SOCKETVAR_H
+#include <sys/socketvar.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#if HAVE_NETINET_IN_SYSTM_H
+#include <netinet/in_systm.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IP_H
+#include <netinet/ip.h>
+#endif
+#if HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#if HAVE_NETINET_IP_VAR_H
+#include <netinet/ip_var.h>
+#endif
+#if HAVE_NETINET_IP_ICMP_H
+#include <netinet/ip_icmp.h>
+#endif
+#if HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+#if HAVE_NETINET_UDP_H
+#include <netinet/udp.h>
+#endif
+#if HAVE_NETINET_TCP_TIMER_H
+#include <netinet/tcp_timer.h>
+#endif
+
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+#
+#  Agent:
+for ac_header in net/if_arp.h       net/if_mib.h         net/if_var.h                       netinet/if_ether.h netinet/in_systm.h   netinet/in_var.h                   netinet/ip.h       netinet/ip_icmp.h                                       netinet/icmp_var.h netinet/ip_var.h                                        netinet/tcp.h      netinet/tcp_timer.h  netinet/tcp_var.h                  netinet/tcpip.h    netinet/udp.h        netinet/udp_var.h                  net/route.h        netinet/icmp6.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_TIMEOUT_H
+#include <sys/timeout.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_SYS_SOCKETVAR_H
+#include <sys/socketvar.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#if HAVE_NETINET_IN_SYSTM_H
+#include <netinet/in_systm.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IP_H
+#include <netinet/ip.h>
+#endif
+#if HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#if HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#if HAVE_NETINET_IP_VAR_H
+#include <netinet/ip_var.h>
+#endif
+#if HAVE_NETINET_IP_ICMP_H
+#include <netinet/ip_icmp.h>
+#endif
+#if HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+#if HAVE_NETINET_UDP_H
+#include <netinet/udp.h>
+#endif
+#if HAVE_NETINET_TCP_TIMER_H
+#include <netinet/tcp_timer.h>
+#endif
+#if HAVE_NETINET_ICMP6_H
+#include <netinet/icmp6.h>
+#endif
+
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+#       KAME (IPv6) headers
+#  Agent:
+#
+# KAME
+for ac_header in netinet/ip6.h                                                 netinet6/in6_var.h    netinet6/in6_pcb.h                      netinet6/ip6_var.h    netinet6/nd6.h                          netinet6/tcp6.h       netinet6/tcp6_fsm.h                     netinet6/tcp6_timer.h netinet6/tcp6_var.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#if HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#if HAVE_NET_ROUTE_H
+#include <net/route.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IP6_H
+#include <netinet/ip6.h>
+#endif
+
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+#       requiring <netinet/in.h>                        (OpenBSD 2.6)
+#  Agent:
+#
+for ac_header in netinet/in_pcb.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "netinet/in_pcb.h" "ac_cv_header_netinet_in_pcb_h" "
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_TIMEOUT_H
+#include <sys/timeout.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_SYS_SOCKETVAR_H
+#include <sys/socketvar.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IN_SYSTM_H
+#include <netinet/in_systm.h>
+#endif
+#if HAVE_NETINET_IP_H
+#include <netinet/ip.h>
+#endif
+#if HAVE_NET_ROUTE_H
+#include <net/route.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+
+"
+if test "x$ac_cv_header_netinet_in_pcb_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_NETINET_IN_PCB_H 1
+_ACEOF
+
+fi
+
+done
+
+
+##
+#   Pre-requisite on specific types
+##
+
+#       Special hack to get around various problems on older Linux kernels
+#       (major ugh!)
+#  Agent:
+#
+for ac_header in linux/ethtool.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "linux/ethtool.h" "ac_cv_header_linux_ethtool_h" "
+#include <linux/types.h>
+typedef __u64 u64;         /* hack, so we may include kernel's ethtool.h */
+typedef __u32 u32;         /* ditto */
+typedef __u16 u16;         /* ditto */
+typedef __u8 u8;           /* ditto */
+
+"
+if test "x$ac_cv_header_linux_ethtool_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_ETHTOOL_H 1
+_ACEOF
+
+fi
+
+done
+
+
+##
+#   Headers requiring particular libraries
+##
+
+#       for HostRes                                     (Solaris 2.x)
+#  Agent:
+#
+for ac_header in pkginfo.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "pkginfo.h" "ac_cv_header_pkginfo_h" "$ac_includes_default"
+if test "x$ac_cv_header_pkginfo_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PKGINFO_H 1
+_ACEOF
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pkginfo" >&5
+$as_echo_n "checking for library containing pkginfo... " >&6; }
+if ${netsnmp_cv_func_pkginfo_LMIBLIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LMIBLIBS"
+          netsnmp_temp_LIBS="${netsnmp_target_val}  ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pkginfo ();
+int
+main ()
+{
+return pkginfo ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in adm ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pkginfo ();
+int
+main ()
+{
+return pkginfo ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_pkginfo_LMIBLIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_pkginfo_LMIBLIBS" >&5
+$as_echo "$netsnmp_cv_func_pkginfo_LMIBLIBS" >&6; }
+ if test "${netsnmp_cv_func_pkginfo_LMIBLIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_pkginfo_LMIBLIBS}" != "none required" ; then
+       LMIBLIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+$as_echo "#define HAVE_PKGINFO 1" >>confdefs.h
+
+
+ fi
+
+fi
+
+done
+
+
+for ac_header in pkg.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "pkg.h" "ac_cv_header_pkg_h" "$ac_includes_default"
+if test "x$ac_cv_header_pkg_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PKG_H 1
+_ACEOF
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pkg_init" >&5
+$as_echo_n "checking for library containing pkg_init... " >&6; }
+if ${netsnmp_cv_func_pkg_init_LIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LIBS"
+          netsnmp_temp_LIBS=" ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pkg_init ();
+int
+main ()
+{
+return pkg_init ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in pkg ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pkg_init ();
+int
+main ()
+{
+return pkg_init ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_pkg_init_LIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_pkg_init_LIBS" >&5
+$as_echo "$netsnmp_cv_func_pkg_init_LIBS" >&6; }
+ if test "${netsnmp_cv_func_pkg_init_LIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_pkg_init_LIBS}" != "none required" ; then
+       LIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+$as_echo "#define HAVE_LIBPKG 1" >>confdefs.h
+
+
+ fi
+
+fi
+
+done
+
+
+if test $ac_cv_header_pkg_h = no
+then
+    unset ac_cv_header_pkg_h
+    netsnmp_save_CPPFLAGS="$CPPFLAGS"
+    netsnmp_save_LDFLAGS="$LDFLAGS"
+    CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+    LDFLAGS="$LDFLAGS -L/usr/local/lib"
+    for ac_header in pkg.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "pkg.h" "ac_cv_header_pkg_h" "$ac_includes_default"
+if test "x$ac_cv_header_pkg_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PKG_H 1
+_ACEOF
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pkg_init" >&5
+$as_echo_n "checking for library containing pkg_init... " >&6; }
+if ${netsnmp_cv_func_pkg_init_LIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LIBS"
+          netsnmp_temp_LIBS=" ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pkg_init ();
+int
+main ()
+{
+return pkg_init ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in pkg ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pkg_init ();
+int
+main ()
+{
+return pkg_init ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_pkg_init_LIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_pkg_init_LIBS" >&5
+$as_echo "$netsnmp_cv_func_pkg_init_LIBS" >&6; }
+ if test "${netsnmp_cv_func_pkg_init_LIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_pkg_init_LIBS}" != "none required" ; then
+       LIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+$as_echo "#define HAVE_LIBPKG 1" >>confdefs.h
+
+
+ fi
+
+fi
+
+done
+
+    if test $ac_cv_header_pkg_h = no
+    then
+        CPPFLAGS="$netsnmp_save_CPPFLAGS"
+        LDFLAGS="$netsnmp_save_LDFLAGS"
+    fi
+fi
+
+case $target_os in
+    aix*)
+        #       for CPU/memory statistics               (AIX)
+        #  Agent:
+        #
+        for ac_header in libperfstat.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "libperfstat.h" "ac_cv_header_libperfstat_h" "
+#if HAVE_SYS_PROTOSW_H
+#include <sys/protosw.h>
+#endif
+
+"
+if test "x$ac_cv_header_libperfstat_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBPERFSTAT_H 1
+_ACEOF
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing perfstat_cpu_total" >&5
+$as_echo_n "checking for library containing perfstat_cpu_total... " >&6; }
+if ${netsnmp_cv_func_perfstat_cpu_total_LMIBLIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LMIBLIBS"
+          netsnmp_temp_LIBS="${netsnmp_target_val}  ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char perfstat_cpu_total ();
+int
+main ()
+{
+return perfstat_cpu_total ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in perfstat ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char perfstat_cpu_total ();
+int
+main ()
+{
+return perfstat_cpu_total ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_perfstat_cpu_total_LMIBLIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_perfstat_cpu_total_LMIBLIBS" >&5
+$as_echo "$netsnmp_cv_func_perfstat_cpu_total_LMIBLIBS" >&6; }
+ if test "${netsnmp_cv_func_perfstat_cpu_total_LMIBLIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_perfstat_cpu_total_LMIBLIBS}" != "none required" ; then
+       LMIBLIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+$as_echo "#define HAVE_PERFSTAT 1" >>confdefs.h
+
+ else
+    as_fn_error $? "
+
+*** To monitor CPU/memory values in AIX you need to install
+*** libperfstat which can be found in bos.perf
+" "$LINENO" 5
+ fi
+
+fi
+
+done
+
+        ;;
+    hpux*)
+        #       HP-UX agent needs open_mib       (XXX - not a header check!)
+        #
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing open_mib" >&5
+$as_echo_n "checking for library containing open_mib... " >&6; }
+if ${netsnmp_cv_func_open_mib_LMIBLIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LMIBLIBS"
+          netsnmp_temp_LIBS="${netsnmp_target_val}  ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char open_mib ();
+int
+main ()
+{
+return open_mib ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in nm ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char open_mib ();
+int
+main ()
+{
+return open_mib ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_open_mib_LMIBLIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_open_mib_LMIBLIBS" >&5
+$as_echo "$netsnmp_cv_func_open_mib_LMIBLIBS" >&6; }
+ if test "${netsnmp_cv_func_open_mib_LMIBLIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_open_mib_LMIBLIBS}" != "none required" ; then
+       LMIBLIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+$as_echo "#define HAVE_LIBNM 1" >>confdefs.h
+
+
+ fi
+
+        ;;
+    *)
+        ;;
+esac
+
+#       for MIB-2 info                                  (Cygwin and MinGW)
+#  Core:
+#
+for ac_header in windows.h iphlpapi.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
+#ifdef HAVE_WINDOWS_H
+#include <windows.h>
+#endif
+
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+#       for MIB-2 info                                  (MinGW)
+#  Core:
+#
+if test x$with_socklib = xwinsock2; then
+  for ac_header in winsock.h winsock2.h ws2tcpip.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+fi
+
+#
+# for ucd-snmp/lmsensorsMib
+#
+for ac_header in sensors/sensors.h picl.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+##  This is here to avoid loads of redefinition warnings during
+##  module configuration
+
+##
+#   rtentry structure checks:
+##
+
+# Check struct rtentry for common fields
+#   Agent:
+#
+ac_fn_c_check_member "$LINENO" "struct rtentry" "rt_dst" "ac_cv_member_struct_rtentry_rt_dst" "
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#include <sys/types.h>
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#include <sys/socket.h>
+#undef KERNEL
+#undef _KERNEL
+#endif
+#ifdef HAVE_NET_ROUTE_H
+#include <net/route.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_rtentry_rt_dst" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_RTENTRY_RT_DST 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct rtentry" "rt_hash" "ac_cv_member_struct_rtentry_rt_hash" "
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#include <sys/types.h>
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#include <sys/socket.h>
+#undef KERNEL
+#undef _KERNEL
+#endif
+#ifdef HAVE_NET_ROUTE_H
+#include <net/route.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_rtentry_rt_hash" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_RTENTRY_RT_HASH 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct rtentry" "rt_next" "ac_cv_member_struct_rtentry_rt_next" "
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#include <sys/types.h>
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#include <sys/socket.h>
+#undef KERNEL
+#undef _KERNEL
+#endif
+#ifdef HAVE_NET_ROUTE_H
+#include <net/route.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_rtentry_rt_next" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_RTENTRY_RT_NEXT 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct rtentry" "rt_refcnt" "ac_cv_member_struct_rtentry_rt_refcnt" "
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#include <sys/types.h>
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#include <sys/socket.h>
+#undef KERNEL
+#undef _KERNEL
+#endif
+#ifdef HAVE_NET_ROUTE_H
+#include <net/route.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_rtentry_rt_refcnt" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_RTENTRY_RT_REFCNT 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct rtentry" "rt_unit" "ac_cv_member_struct_rtentry_rt_unit" "
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#include <sys/types.h>
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#include <sys/socket.h>
+#undef KERNEL
+#undef _KERNEL
+#endif
+#ifdef HAVE_NET_ROUTE_H
+#include <net/route.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_rtentry_rt_unit" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_RTENTRY_RT_UNIT 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct rtentry" "rt_use" "ac_cv_member_struct_rtentry_rt_use" "
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#include <sys/types.h>
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#include <sys/socket.h>
+#undef KERNEL
+#undef _KERNEL
+#endif
+#ifdef HAVE_NET_ROUTE_H
+#include <net/route.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_rtentry_rt_use" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_RTENTRY_RT_USE 1
+_ACEOF
+
+
+fi
+
+
+fi # NETSNMP_QUICK_CHECK
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+# -*- autoconf -*-
+#########################################
+##
+# Checks for types
+##
+#########################################
+
+##
+#   Standard checks:
+##
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
+$as_echo_n "checking size of short... " >&6; }
+if ${ac_cv_sizeof_short+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short"        "$ac_includes_default"; then :
+
 else
   if test "$ac_cv_type_short" = yes; then
-  # The cast to unsigned long works around a bug in the HP C Compiler
-  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-  # This bug is HP SR number 8606223364.
-  if test "$cross_compiling" = yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (short))) >= 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_hi=$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
-		    if test $ac_lo -le $ac_mid; then
-		      ac_lo= ac_hi=
-		      break
-		    fi
-		    ac_mid=`expr 2 '*' $ac_mid + 1`
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (short)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_short=0
+   fi
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (short))) < 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_lo=$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
-		       if test $ac_mid -le $ac_hi; then
-			 ac_lo= ac_hi=
-			 break
-		       fi
-		       ac_mid=`expr 2 '*' $ac_mid`
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
+$as_echo "$ac_cv_sizeof_short" >&6; }
 
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_hi=$ac_mid
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_short=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (short), 77
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; } ;;
-esac
-else
-  if test "$cross_compiling" = yes; then
-  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-long longval () { return (long) (sizeof (short)); }
-unsigned long ulongval () { return (long) (sizeof (short)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    exit (1);
-  if (((long) (sizeof (short))) < 0)
-    {
-      long i = longval ();
-      if (i != ((long) (sizeof (short))))
-	exit (1);
-      fprintf (f, "%ld\n", i);
-    }
-  else
-    {
-      unsigned long i = ulongval ();
-      if (i != ((long) (sizeof (short))))
-	exit (1);
-      fprintf (f, "%lu\n", i);
-    }
-  exit (ferror (f) || fclose (f) != 0);
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_short=`cat conftest.val`
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (short), 77
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
-  ac_cv_sizeof_short=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5
-echo "${ECHO_T}$ac_cv_sizeof_short" >&6
 cat >>confdefs.h <<_ACEOF
 #define SIZEOF_SHORT $ac_cv_sizeof_short
 _ACEOF
 
 
-echo "$as_me:$LINENO: checking for int" >&5
-echo $ECHO_N "checking for int... $ECHO_C" >&6
-if test "${ac_cv_type_int+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
+$as_echo_n "checking size of int... " >&6; }
+if ${ac_cv_sizeof_int+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((int *) 0)
-  return 0;
-if (sizeof (int))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_int=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int"        "$ac_includes_default"; then :
 
-ac_cv_type_int=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
-echo "${ECHO_T}$ac_cv_type_int" >&6
-
-echo "$as_me:$LINENO: checking size of int" >&5
-echo $ECHO_N "checking size of int... $ECHO_C" >&6
-if test "${ac_cv_sizeof_int+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   if test "$ac_cv_type_int" = yes; then
-  # The cast to unsigned long works around a bug in the HP C Compiler
-  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-  # This bug is HP SR number 8606223364.
-  if test "$cross_compiling" = yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_hi=$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
-		    if test $ac_lo -le $ac_mid; then
-		      ac_lo= ac_hi=
-		      break
-		    fi
-		    ac_mid=`expr 2 '*' $ac_mid + 1`
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (int)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_int=0
+   fi
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_lo=$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
-		       if test $ac_mid -le $ac_hi; then
-			 ac_lo= ac_hi=
-			 break
-		       fi
-		       ac_mid=`expr 2 '*' $ac_mid`
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
+$as_echo "$ac_cv_sizeof_int" >&6; }
 
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_hi=$ac_mid
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_int=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (int), 77
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; } ;;
-esac
-else
-  if test "$cross_compiling" = yes; then
-  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-long longval () { return (long) (sizeof (int)); }
-unsigned long ulongval () { return (long) (sizeof (int)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    exit (1);
-  if (((long) (sizeof (int))) < 0)
-    {
-      long i = longval ();
-      if (i != ((long) (sizeof (int))))
-	exit (1);
-      fprintf (f, "%ld\n", i);
-    }
-  else
-    {
-      unsigned long i = ulongval ();
-      if (i != ((long) (sizeof (int))))
-	exit (1);
-      fprintf (f, "%lu\n", i);
-    }
-  exit (ferror (f) || fclose (f) != 0);
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_int=`cat conftest.val`
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (int), 77
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
-  ac_cv_sizeof_int=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
-echo "${ECHO_T}$ac_cv_sizeof_int" >&6
 cat >>confdefs.h <<_ACEOF
 #define SIZEOF_INT $ac_cv_sizeof_int
 _ACEOF
 
 
-echo "$as_me:$LINENO: checking for long" >&5
-echo $ECHO_N "checking for long... $ECHO_C" >&6
-if test "${ac_cv_type_long+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+$as_echo_n "checking size of long... " >&6; }
+if ${ac_cv_sizeof_long+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((long *) 0)
-  return 0;
-if (sizeof (long))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_long=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
 
-ac_cv_type_long=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
-echo "${ECHO_T}$ac_cv_type_long" >&6
-
-echo "$as_me:$LINENO: checking size of long" >&5
-echo $ECHO_N "checking size of long... $ECHO_C" >&6
-if test "${ac_cv_sizeof_long+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   if test "$ac_cv_type_long" = yes; then
-  # The cast to unsigned long works around a bug in the HP C Compiler
-  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-  # This bug is HP SR number 8606223364.
-  if test "$cross_compiling" = yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_hi=$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
-		    if test $ac_lo -le $ac_mid; then
-		      ac_lo= ac_hi=
-		      break
-		    fi
-		    ac_mid=`expr 2 '*' $ac_mid + 1`
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (long)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_long=0
+   fi
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_lo=$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
-		       if test $ac_mid -le $ac_hi; then
-			 ac_lo= ac_hi=
-			 break
-		       fi
-		       ac_mid=`expr 2 '*' $ac_mid`
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
+$as_echo "$ac_cv_sizeof_long" >&6; }
 
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_hi=$ac_mid
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_long=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long), 77
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; } ;;
-esac
-else
-  if test "$cross_compiling" = yes; then
-  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-long longval () { return (long) (sizeof (long)); }
-unsigned long ulongval () { return (long) (sizeof (long)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    exit (1);
-  if (((long) (sizeof (long))) < 0)
-    {
-      long i = longval ();
-      if (i != ((long) (sizeof (long))))
-	exit (1);
-      fprintf (f, "%ld\n", i);
-    }
-  else
-    {
-      unsigned long i = ulongval ();
-      if (i != ((long) (sizeof (long))))
-	exit (1);
-      fprintf (f, "%lu\n", i);
-    }
-  exit (ferror (f) || fclose (f) != 0);
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_long=`cat conftest.val`
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long), 77
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
-  ac_cv_sizeof_long=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
-echo "${ECHO_T}$ac_cv_sizeof_long" >&6
 cat >>confdefs.h <<_ACEOF
 #define SIZEOF_LONG $ac_cv_sizeof_long
 _ACEOF
 
 
-echo "$as_me:$LINENO: checking for long long" >&5
-echo $ECHO_N "checking for long long... $ECHO_C" >&6
-if test "${ac_cv_type_long_long+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
+$as_echo_n "checking size of long long... " >&6; }
+if ${ac_cv_sizeof_long_long+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((long long *) 0)
-  return 0;
-if (sizeof (long long))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_long_long=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long"        "$ac_includes_default"; then :
 
-ac_cv_type_long_long=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
-echo "${ECHO_T}$ac_cv_type_long_long" >&6
-
-echo "$as_me:$LINENO: checking size of long long" >&5
-echo $ECHO_N "checking size of long long... $ECHO_C" >&6
-if test "${ac_cv_sizeof_long_long+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   if test "$ac_cv_type_long_long" = yes; then
-  # The cast to unsigned long works around a bug in the HP C Compiler
-  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-  # This bug is HP SR number 8606223364.
-  if test "$cross_compiling" = yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_hi=$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
-		    if test $ac_lo -le $ac_mid; then
-		      ac_lo= ac_hi=
-		      break
-		    fi
-		    ac_mid=`expr 2 '*' $ac_mid + 1`
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (long long)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_long_long=0
+   fi
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long long))) < 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_lo=$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
-		       if test $ac_mid -le $ac_hi; then
-			 ac_lo= ac_hi=
-			 break
-		       fi
-		       ac_mid=`expr 2 '*' $ac_mid`
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
+$as_echo "$ac_cv_sizeof_long_long" >&6; }
 
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_hi=$ac_mid
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_long_long=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long long), 77
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; } ;;
-esac
-else
-  if test "$cross_compiling" = yes; then
-  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-long longval () { return (long) (sizeof (long long)); }
-unsigned long ulongval () { return (long) (sizeof (long long)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    exit (1);
-  if (((long) (sizeof (long long))) < 0)
-    {
-      long i = longval ();
-      if (i != ((long) (sizeof (long long))))
-	exit (1);
-      fprintf (f, "%ld\n", i);
-    }
-  else
-    {
-      unsigned long i = ulongval ();
-      if (i != ((long) (sizeof (long long))))
-	exit (1);
-      fprintf (f, "%lu\n", i);
-    }
-  exit (ferror (f) || fclose (f) != 0);
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_long_long=`cat conftest.val`
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long long), 77
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
-  ac_cv_sizeof_long_long=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5
-echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6
 cat >>confdefs.h <<_ACEOF
 #define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
 _ACEOF
 
 
-echo "$as_me:$LINENO: checking for intmax_t" >&5
-echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6
-if test "${ac_cv_type_intmax_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of intmax_t" >&5
+$as_echo_n "checking size of intmax_t... " >&6; }
+if ${ac_cv_sizeof_intmax_t+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((intmax_t *) 0)
-  return 0;
-if (sizeof (intmax_t))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_intmax_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (intmax_t))" "ac_cv_sizeof_intmax_t"        "$ac_includes_default"; then :
 
-ac_cv_type_intmax_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_intmax_t" >&5
-echo "${ECHO_T}$ac_cv_type_intmax_t" >&6
-
-echo "$as_me:$LINENO: checking size of intmax_t" >&5
-echo $ECHO_N "checking size of intmax_t... $ECHO_C" >&6
-if test "${ac_cv_sizeof_intmax_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   if test "$ac_cv_type_intmax_t" = yes; then
-  # The cast to unsigned long works around a bug in the HP C Compiler
-  # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
-  # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
-  # This bug is HP SR number 8606223364.
-  if test "$cross_compiling" = yes; then
-  # Depending upon the size, compute the lo and hi bounds.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (intmax_t))) >= 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_lo=0 ac_mid=0
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (intmax_t))) <= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_hi=$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_lo=`expr $ac_mid + 1`
-		    if test $ac_lo -le $ac_mid; then
-		      ac_lo= ac_hi=
-		      break
-		    fi
-		    ac_mid=`expr 2 '*' $ac_mid + 1`
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (intmax_t)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_intmax_t=0
+   fi
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (intmax_t))) < 0)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_hi=-1 ac_mid=-1
-  while :; do
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (intmax_t))) >= $ac_mid)];
-test_array [0] = 0
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_lo=$ac_mid; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_hi=`expr '(' $ac_mid ')' - 1`
-		       if test $ac_mid -le $ac_hi; then
-			 ac_lo= ac_hi=
-			 break
-		       fi
-		       ac_mid=`expr 2 '*' $ac_mid`
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_intmax_t" >&5
+$as_echo "$ac_cv_sizeof_intmax_t" >&6; }
 
-ac_lo= ac_hi=
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long) (sizeof (intmax_t))) <= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_hi=$ac_mid
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_lo=`expr '(' $ac_mid ')' + 1`
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_intmax_t=$ac_lo;;
-'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (intmax_t), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (intmax_t), 77
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; } ;;
-esac
-else
-  if test "$cross_compiling" = yes; then
-  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-long longval () { return (long) (sizeof (intmax_t)); }
-unsigned long ulongval () { return (long) (sizeof (intmax_t)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    exit (1);
-  if (((long) (sizeof (intmax_t))) < 0)
-    {
-      long i = longval ();
-      if (i != ((long) (sizeof (intmax_t))))
-	exit (1);
-      fprintf (f, "%ld\n", i);
-    }
-  else
-    {
-      unsigned long i = ulongval ();
-      if (i != ((long) (sizeof (intmax_t))))
-	exit (1);
-      fprintf (f, "%lu\n", i);
-    }
-  exit (ferror (f) || fclose (f) != 0);
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_sizeof_intmax_t=`cat conftest.val`
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-{ { echo "$as_me:$LINENO: error: cannot compute sizeof (intmax_t), 77
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (intmax_t), 77
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.val
-else
-  ac_cv_sizeof_intmax_t=0
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_sizeof_intmax_t" >&5
-echo "${ECHO_T}$ac_cv_sizeof_intmax_t" >&6
 cat >>confdefs.h <<_ACEOF
 #define SIZEOF_INTMAX_T $ac_cv_sizeof_intmax_t
 _ACEOF
 
 
-echo "$as_me:$LINENO: checking for int8_t" >&5
-echo $ECHO_N "checking for int8_t... $ECHO_C" >&6
-if test "${ac_cv_type_int8_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((int8_t *) 0)
-  return 0;
-if (sizeof (int8_t))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_int8_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_int8_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_int8_t" >&5
-echo "${ECHO_T}$ac_cv_type_int8_t" >&6
-if test $ac_cv_type_int8_t = yes; then
+ac_fn_c_find_intX_t "$LINENO" "8" "ac_cv_c_int8_t"
+case $ac_cv_c_int8_t in #(
+  no|yes) ;; #(
+  *)
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_INT8_T 1
+#define int8_t $ac_cv_c_int8_t
 _ACEOF
+;;
+esac
 
-
-fi
-echo "$as_me:$LINENO: checking for uint8_t" >&5
-echo $ECHO_N "checking for uint8_t... $ECHO_C" >&6
-if test "${ac_cv_type_uint8_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((uint8_t *) 0)
-  return 0;
-if (sizeof (uint8_t))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_uint8_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_uint8_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_uint8_t" >&5
-echo "${ECHO_T}$ac_cv_type_uint8_t" >&6
-if test $ac_cv_type_uint8_t = yes; then
+ac_fn_c_find_intX_t "$LINENO" "16" "ac_cv_c_int16_t"
+case $ac_cv_c_int16_t in #(
+  no|yes) ;; #(
+  *)
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UINT8_T 1
+#define int16_t $ac_cv_c_int16_t
 _ACEOF
+;;
+esac
 
-
-fi
-echo "$as_me:$LINENO: checking for u_int8_t" >&5
-echo $ECHO_N "checking for u_int8_t... $ECHO_C" >&6
-if test "${ac_cv_type_u_int8_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((u_int8_t *) 0)
-  return 0;
-if (sizeof (u_int8_t))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_u_int8_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_u_int8_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_u_int8_t" >&5
-echo "${ECHO_T}$ac_cv_type_u_int8_t" >&6
-if test $ac_cv_type_u_int8_t = yes; then
+ac_fn_c_find_intX_t "$LINENO" "32" "ac_cv_c_int32_t"
+case $ac_cv_c_int32_t in #(
+  no|yes) ;; #(
+  *)
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_U_INT8_T 1
+#define int32_t $ac_cv_c_int32_t
 _ACEOF
+;;
+esac
 
-
-fi
-
-echo "$as_me:$LINENO: checking for int16_t" >&5
-echo $ECHO_N "checking for int16_t... $ECHO_C" >&6
-if test "${ac_cv_type_int16_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((int16_t *) 0)
-  return 0;
-if (sizeof (int16_t))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_int16_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_int16_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_int16_t" >&5
-echo "${ECHO_T}$ac_cv_type_int16_t" >&6
-if test $ac_cv_type_int16_t = yes; then
+ac_fn_c_find_intX_t "$LINENO" "64" "ac_cv_c_int64_t"
+case $ac_cv_c_int64_t in #(
+  no|yes) ;; #(
+  *)
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_INT16_T 1
+#define int64_t $ac_cv_c_int64_t
 _ACEOF
+;;
+esac
 
 
-fi
-echo "$as_me:$LINENO: checking for uint16_t" >&5
-echo $ECHO_N "checking for uint16_t... $ECHO_C" >&6
-if test "${ac_cv_type_uint16_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
+$as_echo_n "checking for long long int... " >&6; }
+if ${ac_cv_type_long_long_int+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$ac_includes_default
+
+  /* For now, do not test the preprocessor; as of 2007 there are too many
+	 implementations with broken preprocessors.  Perhaps this can
+	 be revisited in 2012.  In the meantime, code should not expect
+	 #if to work with literals wider than 32 bits.  */
+      /* Test literals.  */
+      long long int ll = 9223372036854775807ll;
+      long long int nll = -9223372036854775807LL;
+      unsigned long long int ull = 18446744073709551615ULL;
+      /* Test constant expressions.   */
+      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+		     ? 1 : -1)];
+      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+		     ? 1 : -1)];
+      int i = 63;
 int
 main ()
 {
-if ((uint16_t *) 0)
+/* Test availability of runtime routines for shift and division.  */
+      long long int llmax = 9223372036854775807ll;
+      unsigned long long int ullmax = 18446744073709551615ull;
+      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+	      | (llmax / ll) | (llmax % ll)
+	      | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+	      | (ullmax / ull) | (ullmax % ull));
+  ;
   return 0;
-if (sizeof (uint16_t))
-  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  			if test "$cross_compiling" = yes; then :
+  ac_cv_type_long_long_int=yes
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+	       #ifndef LLONG_MAX
+	       # define HALF \
+			(1LL << (sizeof (long long int) * CHAR_BIT - 2))
+	       # define LLONG_MAX (HALF - 1 + HALF)
+	       #endif
+int
+main ()
+{
+long long int n = 1;
+	       int i;
+	       for (i = 0; ; i++)
+		 {
+		   long long int m = n << i;
+		   if (m >> i != n)
+		     return 1;
+		   if (LLONG_MAX / 2 < m)
+		     break;
+		 }
+	       return 0;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_uint16_t=yes
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_type_long_long_int=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  ac_cv_type_long_long_int=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-ac_cv_type_uint16_t=no
+else
+  ac_cv_type_long_long_int=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_uint16_t" >&5
-echo "${ECHO_T}$ac_cv_type_uint16_t" >&6
-if test $ac_cv_type_uint16_t = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
+$as_echo "$ac_cv_type_long_long_int" >&6; }
+  if test $ac_cv_type_long_long_int = yes; then
+
+$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
+
+  fi
+
+
+
+  ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default"
+if test "x$ac_cv_type_intmax_t" = xyes; then :
+
+$as_echo "#define HAVE_INTMAX_T 1" >>confdefs.h
+
+else
+  test $ac_cv_type_long_long_int = yes \
+       && ac_type='long long int' \
+       || ac_type='long int'
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UINT16_T 1
+#define intmax_t $ac_type
 _ACEOF
 
+fi
 
-fi
-echo "$as_me:$LINENO: checking for u_int16_t" >&5
-echo $ECHO_N "checking for u_int16_t... $ECHO_C" >&6
-if test "${ac_cv_type_u_int16_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((u_int16_t *) 0)
-  return 0;
-if (sizeof (u_int16_t))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_u_int16_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_u_int16_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_u_int16_t" >&5
-echo "${ECHO_T}$ac_cv_type_u_int16_t" >&6
-if test $ac_cv_type_u_int16_t = yes; then
+ac_fn_c_find_uintX_t "$LINENO" "8" "ac_cv_c_uint8_t"
+case $ac_cv_c_uint8_t in #(
+  no|yes) ;; #(
+  *)
+
+$as_echo "#define _UINT8_T 1" >>confdefs.h
+
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_U_INT16_T 1
+#define uint8_t $ac_cv_c_uint8_t
 _ACEOF
+;;
+  esac
 
+ac_fn_c_find_uintX_t "$LINENO" "16" "ac_cv_c_uint16_t"
+case $ac_cv_c_uint16_t in #(
+  no|yes) ;; #(
+  *)
 
-fi
-
-echo "$as_me:$LINENO: checking for int32_t" >&5
-echo $ECHO_N "checking for int32_t... $ECHO_C" >&6
-if test "${ac_cv_type_int32_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((int32_t *) 0)
-  return 0;
-if (sizeof (int32_t))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_int32_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_int32_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5
-echo "${ECHO_T}$ac_cv_type_int32_t" >&6
-if test $ac_cv_type_int32_t = yes; then
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_INT32_T 1
+#define uint16_t $ac_cv_c_uint16_t
 _ACEOF
+;;
+  esac
 
+ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t"
+case $ac_cv_c_uint32_t in #(
+  no|yes) ;; #(
+  *)
 
-fi
-echo "$as_me:$LINENO: checking for uint32_t" >&5
-echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6
-if test "${ac_cv_type_uint32_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((uint32_t *) 0)
-  return 0;
-if (sizeof (uint32_t))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_uint32_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+$as_echo "#define _UINT32_T 1" >>confdefs.h
 
-ac_cv_type_uint32_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5
-echo "${ECHO_T}$ac_cv_type_uint32_t" >&6
-if test $ac_cv_type_uint32_t = yes; then
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UINT32_T 1
+#define uint32_t $ac_cv_c_uint32_t
 _ACEOF
+;;
+  esac
 
+ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t"
+case $ac_cv_c_uint64_t in #(
+  no|yes) ;; #(
+  *)
 
-fi
-echo "$as_me:$LINENO: checking for u_int32_t" >&5
-echo $ECHO_N "checking for u_int32_t... $ECHO_C" >&6
-if test "${ac_cv_type_u_int32_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((u_int32_t *) 0)
-  return 0;
-if (sizeof (u_int32_t))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_u_int32_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+$as_echo "#define _UINT64_T 1" >>confdefs.h
 
-ac_cv_type_u_int32_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_u_int32_t" >&5
-echo "${ECHO_T}$ac_cv_type_u_int32_t" >&6
-if test $ac_cv_type_u_int32_t = yes; then
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_U_INT32_T 1
+#define uint64_t $ac_cv_c_uint64_t
 _ACEOF
+;;
+  esac
 
 
-fi
-
-echo "$as_me:$LINENO: checking for int64_t" >&5
-echo $ECHO_N "checking for int64_t... $ECHO_C" >&6
-if test "${ac_cv_type_int64_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
+$as_echo_n "checking for unsigned long long int... " >&6; }
+if ${ac_cv_type_unsigned_long_long_int+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$ac_includes_default
+
+  /* For now, do not test the preprocessor; as of 2007 there are too many
+	 implementations with broken preprocessors.  Perhaps this can
+	 be revisited in 2012.  In the meantime, code should not expect
+	 #if to work with literals wider than 32 bits.  */
+      /* Test literals.  */
+      long long int ll = 9223372036854775807ll;
+      long long int nll = -9223372036854775807LL;
+      unsigned long long int ull = 18446744073709551615ULL;
+      /* Test constant expressions.   */
+      typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+		     ? 1 : -1)];
+      typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+		     ? 1 : -1)];
+      int i = 63;
 int
 main ()
 {
-if ((int64_t *) 0)
-  return 0;
-if (sizeof (int64_t))
-  return 0;
+/* Test availability of runtime routines for shift and division.  */
+      long long int llmax = 9223372036854775807ll;
+      unsigned long long int ullmax = 18446744073709551615ull;
+      return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+	      | (llmax / ll) | (llmax % ll)
+	      | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+	      | (ullmax / ull) | (ullmax % ull));
   ;
   return 0;
 }
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_int64_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_type_int64_t=no
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_type_unsigned_long_long_int=yes
+else
+  ac_cv_type_unsigned_long_long_int=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_int64_t" >&5
-echo "${ECHO_T}$ac_cv_type_int64_t" >&6
-if test $ac_cv_type_int64_t = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
+$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
+  if test $ac_cv_type_unsigned_long_long_int = yes; then
+
+$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
+
+  fi
+
+
+
+  ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default"
+if test "x$ac_cv_type_uintmax_t" = xyes; then :
+
+$as_echo "#define HAVE_UINTMAX_T 1" >>confdefs.h
+
+else
+  test $ac_cv_type_unsigned_long_long_int = yes \
+       && ac_type='unsigned long long int' \
+       || ac_type='unsigned long int'
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_INT64_T 1
+#define uintmax_t $ac_type
 _ACEOF
 
-
 fi
-echo "$as_me:$LINENO: checking for uint64_t" >&5
-echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6
-if test "${ac_cv_type_uint64_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+
+
+  ac_fn_c_check_type "$LINENO" "intptr_t" "ac_cv_type_intptr_t" "$ac_includes_default"
+if test "x$ac_cv_type_intptr_t" = xyes; then :
+
+$as_echo "#define HAVE_INTPTR_T 1" >>confdefs.h
+
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  for ac_type in 'int' 'long int' 'long long int'; do
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $ac_includes_default
 int
 main ()
 {
-if ((uint64_t *) 0)
-  return 0;
-if (sizeof (uint64_t))
-  return 0;
+static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))];
+test_array [0] = 0
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_uint64_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_uint64_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5
-echo "${ECHO_T}$ac_cv_type_uint64_t" >&6
-if test $ac_cv_type_uint64_t = yes; then
+if ac_fn_c_try_compile "$LINENO"; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UINT64_T 1
+#define intptr_t $ac_type
 _ACEOF
 
-
+	  ac_type=
 fi
-echo "$as_me:$LINENO: checking for u_int64_t" >&5
-echo $ECHO_N "checking for u_int64_t... $ECHO_C" >&6
-if test "${ac_cv_type_u_int64_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       test -z "$ac_type" && break
+     done
+fi
+
+
+
+  ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "$ac_includes_default"
+if test "x$ac_cv_type_uintptr_t" = xyes; then :
+
+$as_echo "#define HAVE_UINTPTR_T 1" >>confdefs.h
+
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  for ac_type in 'unsigned int' 'unsigned long int' \
+	'unsigned long long int'; do
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $ac_includes_default
 int
 main ()
 {
-if ((u_int64_t *) 0)
-  return 0;
-if (sizeof (u_int64_t))
-  return 0;
+static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))];
+test_array [0] = 0
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_u_int64_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_u_int64_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_u_int64_t" >&5
-echo "${ECHO_T}$ac_cv_type_u_int64_t" >&6
-if test $ac_cv_type_u_int64_t = yes; then
+if ac_fn_c_try_compile "$LINENO"; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_U_INT64_T 1
+#define uintptr_t $ac_type
 _ACEOF
 
-
+	  ac_type=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+       test -z "$ac_type" && break
+     done
 fi
 
-echo "$as_me:$LINENO: checking for intmax_t" >&5
-echo $ECHO_N "checking for intmax_t... $ECHO_C" >&6
-if test "${ac_cv_type_intmax_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((intmax_t *) 0)
-  return 0;
-if (sizeof (intmax_t))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_intmax_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_intmax_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_intmax_t" >&5
-echo "${ECHO_T}$ac_cv_type_intmax_t" >&6
-if test $ac_cv_type_intmax_t = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_INTMAX_T 1
-_ACEOF
 
 
-fi
-echo "$as_me:$LINENO: checking for uintmax_t" >&5
-echo $ECHO_N "checking for uintmax_t... $ECHO_C" >&6
-if test "${ac_cv_type_uintmax_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((uintmax_t *) 0)
-  return 0;
-if (sizeof (uintmax_t))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_uintmax_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+##
+#   Other type checks:
+##
 
-ac_cv_type_uintmax_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_uintmax_t" >&5
-echo "${ECHO_T}$ac_cv_type_uintmax_t" >&6
-if test $ac_cv_type_uintmax_t = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_UINTMAX_T 1
-_ACEOF
-
-
-fi
-
-echo "$as_me:$LINENO: checking for off64_t" >&5
-echo $ECHO_N "checking for off64_t... $ECHO_C" >&6
-if test "${ac_cv_type_off64_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((off64_t *) 0)
-  return 0;
-if (sizeof (off64_t))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_off64_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_off64_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_off64_t" >&5
-echo "${ECHO_T}$ac_cv_type_off64_t" >&6
-if test $ac_cv_type_off64_t = yes; then
+ac_fn_c_check_type "$LINENO" "off64_t" "ac_cv_type_off64_t" "$ac_includes_default"
+if test "x$ac_cv_type_off64_t" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_OFF64_T 1
@@ -24832,195 +18304,24 @@
 
 fi
 
-echo "$as_me:$LINENO: checking for uintptr_t" >&5
-echo $ECHO_N "checking for uintptr_t... $ECHO_C" >&6
-if test "${ac_cv_type_uintptr_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((uintptr_t *) 0)
-  return 0;
-if (sizeof (uintptr_t))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_uintptr_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_uintptr_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_uintptr_t" >&5
-echo "${ECHO_T}$ac_cv_type_uintptr_t" >&6
-if test $ac_cv_type_uintptr_t = yes; then
+ac_fn_c_check_type "$LINENO" "nfds_t" "ac_cv_type_nfds_t" "#include <sys/poll.h>
+"
+if test "x$ac_cv_type_nfds_t" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UINTPTR_T 1
-_ACEOF
-
-
-fi
-echo "$as_me:$LINENO: checking for intptr_t" >&5
-echo $ECHO_N "checking for intptr_t... $ECHO_C" >&6
-if test "${ac_cv_type_intptr_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((intptr_t *) 0)
-  return 0;
-if (sizeof (intptr_t))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_intptr_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_intptr_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_intptr_t" >&5
-echo "${ECHO_T}$ac_cv_type_intptr_t" >&6
-if test $ac_cv_type_intptr_t = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_INTPTR_T 1
+#define HAVE_NFDS_T 1
 _ACEOF
 
 
 fi
 
 
-# solaris specific type
-echo "$as_me:$LINENO: checking for Counter64" >&5
-echo $ECHO_N "checking for Counter64... $ECHO_C" >&6
-if test "${ac_cv_type_Counter64+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <inet/mib2.h>
-
-int
-main ()
-{
-if ((Counter64 *) 0)
-  return 0;
-if (sizeof (Counter64))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_Counter64=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_Counter64=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_Counter64" >&5
-echo "${ECHO_T}$ac_cv_type_Counter64" >&6
-if test $ac_cv_type_Counter64 = yes; then
+#   Solaris specific checks
+#       (taken from Perl's configure script)
+#
+ac_fn_c_check_type "$LINENO" "Counter64" "ac_cv_type_Counter64" "#include <inet/mib2.h>
+"
+if test "x$ac_cv_type_Counter64" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_COUNTER64 1
@@ -25029,23 +18330,42 @@
 
 fi
 
+ac_fn_c_check_type "$LINENO" "mib2_ipIfStatsEntry_t" "ac_cv_type_mib2_ipIfStatsEntry_t" "#include <inet/mib2.h>
+"
+if test "x$ac_cv_type_mib2_ipIfStatsEntry_t" = xyes; then :
 
-# guess IPv6 stack type.
+cat >>confdefs.h <<_ACEOF
+#define HAVE_MIB2_IPIFSTATSENTRY_T 1
+_ACEOF
+
+
+fi
+
+
+#   N.B:  The above checks could safely be moved to
+#         the later 'config_types' sub-script
+#
+
+
+##
+#   Determine the IPv6 stack type
+##
+
+#       These checks also set the LIBS/CFLAGS variables,
+#       which may be needed for subsequent function tests
+#
+
 if test "x$enable_ipv6" = "xyes"; then
 	v6type=unknown
 	v6lib=none
 	v6trylibc=no
 
-	echo "$as_me:$LINENO: checking ipv6 stack type" >&5
-echo $ECHO_N "checking ipv6 stack type... $ECHO_C" >&6
-	for i in v6d toshiba kame inria zeta linux-glibc linux-inet6 generic; do
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking ipv6 stack type" >&5
+$as_echo_n "checking ipv6 stack type... " >&6; }
+	for i in v6d toshiba kame inria zeta linux-glibc linux-inet6 cygwin winsock2 generic; do
 		case $i in
 		v6d)
-			cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+			cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include </usr/local/v6/include/sys/types.h>
@@ -25054,7 +18374,7 @@
 #endif
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1; then
+  $EGREP "yes" >/dev/null 2>&1; then :
   v6type=$i; v6lib=v6;
 				v6libdir=/usr/local/v6/lib;
 				CFLAGS="-I/usr/local/v6/include $CFLAGS"
@@ -25063,11 +18383,7 @@
 
 			;;
 		toshiba)
-			cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+			cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/param.h>
@@ -25076,7 +18392,7 @@
 #endif
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1; then
+  $EGREP "yes" >/dev/null 2>&1; then :
   v6type=$i; v6lib=inet6;
 				v6libdir=/usr/local/v6/lib;
 				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"
@@ -25085,11 +18401,7 @@
 
 			;;
 		kame)
-			cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+			cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <netinet/in.h>
@@ -25098,7 +18410,7 @@
 #endif
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1; then
+  $EGREP "yes" >/dev/null 2>&1; then :
   v6type=$i; v6lib=inet6;
 				v6libdir=/usr/local/v6/lib;
 				v6trylibc=yes;
@@ -25108,11 +18420,7 @@
 
 			;;
 		inria)
-			cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+			cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <netinet/in.h>
@@ -25121,7 +18429,7 @@
 #endif
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1; then
+  $EGREP "yes" >/dev/null 2>&1; then :
   v6type=$i;
 				v6lib=dummy;
 				v6libdir=none;
@@ -25132,11 +18440,7 @@
 
 			;;
 		zeta)
-			cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+			cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <sys/param.h>
@@ -25146,7 +18450,7 @@
 #endif
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1; then
+  $EGREP "yes" >/dev/null 2>&1; then :
   v6type=$i; v6lib=inet6;
 				v6libdir=/usr/local/v6/lib;
 				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"
@@ -25155,11 +18459,7 @@
 
 			;;
 		linux-glibc)
-			cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+			cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <features.h>
@@ -25168,7 +18468,7 @@
 #endif
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1; then
+  $EGREP "yes" >/dev/null 2>&1; then :
   v6type=$i;
 				v6lib=dummy;
 				v6libdir=none;
@@ -25186,104 +18486,69 @@
 				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"
 			fi
 			;;
-		generic)
-                        echo "$as_me:$LINENO: result: postponed" >&5
-echo "${ECHO_T}postponed" >&6
-
-
-ac_safe_struct=`echo "sockaddr_in6" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "sin6_addr" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for sockaddr_in6.sin6_addr" >&5
-echo $ECHO_N "checking for sockaddr_in6.sin6_addr... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "xno" = "x"; then
-  defineit="= 0"
-elif test "xno" = "xno"; then
-  defineit=""
-else
-  defineit="no"
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+		cygwin)
+			cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
 #include <netinet/in.h>
-
-
-int
-main ()
-{
-
-struct sockaddr_in6 testit;
-testit.sin6_addr $defineit;
-
-  ;
-  return 0;
-}
+#ifdef _CYGWIN_IN6_H
+yes
+#endif
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+  v6type=$i;
+				v6lib=dummy;
+				v6libdir=none
+				v6trylibc=yes;
+				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f conftest*
 
-fi
+                       ;;
+		winsock2)
+			cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+#include <ws2tcpip.h>
+#if defined(_WS2TCPIP_H)
+yes
+#endif
 _ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then :
+  v6type=$i;
+				v6lib=dummy;
+				v6libdir=none
+				v6trylibc=yes;
+				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"
+fi
+rm -f conftest*
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+			;;
+		generic)
+                        { $as_echo "$as_me:${as_lineno-$LINENO}: result: postponed" >&5
+$as_echo "postponed" >&6; }
+			ac_fn_c_check_member "$LINENO" "struct sockaddr_in6" "sin6_addr" "ac_cv_member_struct_sockaddr_in6_sin6_addr" "
+$ac_includes_default
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_sockaddr_in6_sin6_addr" = xyes; then :
+
 fi
 
-
-	                echo "$as_me:$LINENO: checking ipv6 stack type" >&5
-echo $ECHO_N "checking ipv6 stack type... $ECHO_C" >&6
-                        if test "x$ac_cv_struct_sockaddr_in6_has_sin6_addr" = "xyes"; then
+	                { $as_echo "$as_me:${as_lineno-$LINENO}: checking ipv6 stack type" >&5
+$as_echo_n "checking ipv6 stack type... " >&6; }
+                        if test "x$ac_cv_member_struct_sockaddr_in6_sin6_addr" = "xyes"; then
 				v6type=$i
 				v6lib=dummy
 				v6libdir=none
@@ -25301,33 +18566,31 @@
 		if test -d $v6libdir -a -f $v6libdir/lib$v6lib.a; then
 			LIBS="-L$v6libdir -l$v6lib $LIBS"
 			enable_ipv6="yes"
-			echo "$as_me:$LINENO: result: \"$v6type, $enable_ipv6, using lib$v6lib\"" >&5
-echo "${ECHO_T}\"$v6type, $enable_ipv6, using lib$v6lib\"" >&6
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: \"$v6type, $enable_ipv6, using lib$v6lib\"" >&5
+$as_echo "\"$v6type, $enable_ipv6, using lib$v6lib\"" >&6; }
 		elif test "$v6trylibc" = "yes"; then
 			enable_ipv6="yes"
-			echo "$as_me:$LINENO: result: \"$v6type, $enable_ipv6, using libc\"" >&5
-echo "${ECHO_T}\"$v6type, $enable_ipv6, using libc\"" >&6
+			{ $as_echo "$as_me:${as_lineno-$LINENO}: result: \"$v6type, $enable_ipv6, using libc\"" >&5
+$as_echo "\"$v6type, $enable_ipv6, using libc\"" >&6; }
 		else
-			{ { echo "$as_me:$LINENO: error: no IPv6 library lib$v6lib.a found." >&5
-echo "$as_me: error: no IPv6 library lib$v6lib.a found." >&2;}
-   { (exit 1); exit 1; }; }
+			as_fn_error $? "no IPv6 library lib$v6lib.a found." "$LINENO" 5
 			exit 1
 		fi
 	else
 		enable_ipv6="no"
-		echo "$as_me:$LINENO: result: \"$v6type, $enable_ipv6\"" >&5
-echo "${ECHO_T}\"$v6type, $enable_ipv6\"" >&6
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: \"$v6type, $enable_ipv6\"" >&5
+$as_echo "\"$v6type, $enable_ipv6\"" >&6; }
 	fi
 fi
 
+# -*- autoconf -*-
 #
 # Maybe add library extensions for thread mutex locking.
 #
 
 if test "x$with_res_locks" = "xyes"; then
-  cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_REENTRANT 1
-_ACEOF
+
+$as_echo "#define NETSNMP_REENTRANT 1" >>confdefs.h
 
 
     case $target_os in
@@ -25345,13 +18608,15 @@
 #
 # Add platform-specific source files.
 #
-echo "$as_me:$LINENO: checking for platform-specific source" >&5
-echo $ECHO_N "checking for platform-specific source... $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for platform-specific source" >&5
+$as_echo_n "checking for platform-specific source... " >&6; }
 other_src_list=""
-other_objs_list=""
+other_ftobjs_list=""
 other_lobjs_list=""
+other_objs_list=""
 other_agentobjs=""
 other_lagentobjs=""
+other_ftagentobjs=""
 other_trapd_objects=""
 
 # Win32 service code
@@ -25359,16 +18624,19 @@
   other_src_list="$other_src_list winservice.c winservicerc.rc"
   other_objs_list="$other_objs_list winservice.o winservicerc.o"
   other_lobjs_list="$other_lobjs_list winservice.lo winservicerc.lo"
+  other_ftobjs_list="$other_ftobjs_list winservice.ft winservicerc.ft"
   other_agentobjs="../snmplib/winservicerc.o"
   other_lagentobjs="../snmplib/winservicerc.lo"
+  other_ftagentobjs="../snmplib/winservicerc.lo"
   other_trapd_objects="../snmplib/winservicerc.o"
 fi
 
 # Win32 pipes
-if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc" -o "x$PARTIALTARGETOS" = "xcygwin"; then
+if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then
   other_src_list="$other_src_list winpipe.c"
   other_objs_list="$other_objs_list winpipe.o"
   other_lobjs_list="$other_lobjs_list winpipe.lo"
+  other_ftobjs_list="$other_ftobjs_list winpipe.ft"
 fi
 
 
@@ -25378,160 +18646,16 @@
 
 
 
-echo "$as_me:$LINENO: result: $other_src_list $other_objs_list $other_lobjs_list" >&5
-echo "${ECHO_T}$other_src_list $other_objs_list $other_lobjs_list" >&6
-echo "$as_me:$LINENO: result: $other_agentobjs $other_lagentobjs $other_trapd_objects" >&5
-echo "${ECHO_T}$other_agentobjs $other_lagentobjs $other_trapd_objects" >&6
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $other_src_list $other_objs_list $other_lobjs_list" >&5
+$as_echo "$other_src_list $other_objs_list $other_lobjs_list" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $other_agentobjs $other_lagentobjs $other_trapd_objects" >&5
+$as_echo "$other_agentobjs $other_lagentobjs $other_trapd_objects" >&6; }
 
 #
-# Do transport module processing.
+# Create directory structure for build
 #
-echo "$as_me:$LINENO: checking for and configuring transport modules to use" >&5
-echo $ECHO_N "checking for and configuring transport modules to use... $ECHO_C" >&6
-transport_src_list=""
-transport_hdr_list=""
-transport_def_list=""
-transport_result_list=""
-transport_add_list=""
-transport_callback_disabled=""
-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" = "xcygwin"; then
-  transport_default_list="UDP TCP Callback"
-elif test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then
-  transport_default_list="UDP TCP Callback"
-else
-  transport_default_list="UDP TCP 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
-      { { echo "$as_me:$LINENO: error: It is not possible to compile without UDP/IP support." >&5
-echo "$as_me: error: It is not possible to compile without UDP/IP support." >&2;}
-   { (exit 1); exit 1; }; }
-    elif test "x$i" = "xCallback"; then
-      echo
-      transport_callback_disabled="yes"
-    fi
-  else
-    if test "x$i" = "xAAL5PVC"; then
-      if test "x$PARTIALTARGETOS" != "xlinux"; then
-        echo
-        { { echo "$as_me:$LINENO: error: AAL5 PVC support unavailable for this platform (Linux only)" >&5
-echo "$as_me: error: AAL5 PVC support unavailable for this platform (Linux only)" >&2;}
-   { (exit 1); exit 1; }; }
-      fi
-    fi
-    if test "x$i" = "xIPX"; then
-      if test "x$PARTIALTARGETOS" != "xlinux"; then
-        echo
-        { { echo "$as_me:$LINENO: error: IPX support unavailable for this platform (Linux only)" >&5
-echo "$as_me: error: IPX support unavailable for this platform (Linux only)" >&2;}
-   { (exit 1); exit 1; }; }
-      fi
-    fi
-    if test "x$i" = "xUnix"; then
-      if test "x$PARTIALTARGETOS" = "xcygwin"; then
-        echo
-        { { echo "$as_me:$LINENO: error: Unix domain protocol support unavailable for this platform" >&5
-echo "$as_me: error: Unix domain protocol support unavailable for this platform" >&2;}
-   { (exit 1); exit 1; }; }
-      elif test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then
-        echo
-        { { echo "$as_me:$LINENO: error: Unix domain protocol support unavailable for this platform" >&5
-echo "$as_me: error: Unix domain protocol support unavailable for this platform" >&2;}
-   { (exit 1); exit 1; }; }
-      fi
-    fi
-    if test ! "x$enable_ipv6" = "xyes"; then
-        if test "x$i" = "xUDPIPv6" -o "x$i" = "xTCPIPv6"; then
-            echo
-            { { echo "$as_me:$LINENO: error: IPv6 transports not available if IPv6 support is not enabled" >&5
-echo "$as_me: error: IPv6 transports not available if IPv6 support is not enabled" >&2;}
-   { (exit 1); exit 1; }; }
-        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
-      { { echo "$as_me:$LINENO: error: Cannot find file $srcdir/$rel_transport_src to support SNMP transport domain $i." >&5
-echo "$as_me: error: Cannot find file $srcdir/$rel_transport_src to support SNMP transport domain $i." >&2;}
-   { (exit 1); exit 1; }; }
-    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'`
-
-## win32 platforms require inet_ntop etc.
-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
-
-
-
-
-
-for i in $transport_def_list; do
-  cat >>confdefs.h <<_ACEOF
-#define $i 1
-_ACEOF
-
-done
-echo "$as_me:$LINENO: result: $transport_result_list." >&5
-echo "${ECHO_T}$transport_result_list." >&6
-
-  cat >> configure-summary << EOF
-  Network transport support: $transport_result_list
-EOF
-
-
-#
-# Security modules to use
-#
-
-echo "$as_me:$LINENO: checking for security modules to use" >&5
-echo $ECHO_N "checking for security modules to use... $ECHO_C" >&6
-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
@@ -25551,22 +18675,230 @@
 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
-        { { echo "$as_me:$LINENO: error: The USM security module is mandatory" >&5
-echo "$as_me: error: The USM security module is mandatory" >&2;}
-   { (exit 1); exit 1; }; }
+#
+# Do transport module processing.
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for and configuring transport modules to use" >&5
+$as_echo_n "checking for and configuring transport modules to use... " >&6; }
+
+# include the actual code checking
+# -*- 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
+              as_fn_error $? "IPv6 transports not available if IPv6 support is not enabled" "$LINENO" 5
+          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
+        as_fn_error $? "Cannot find file $srcdir/$rel_transport_src to support SNMP transport domain $i." "$LINENO" 5
+      fi
+
+      #---------------------
+      # build a pseudo include header that includes current config and
+      # system symbols:
+      rm -f conftest.$ac_ext module_tmp_header.h
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include NETSNMP_SYSTEM_INCLUDE_FILE
+#undef NETSNMP_MINIMAL_CODE
+#define NET_SNMP_CONFIG_H
+#undef config_require
+#define config_require(foo) config_checkit_require(foo)
+#undef config_error
+#define config_error(foo) config_checkit_error(foo)
+#include "$rel_transport_hdr"
+_ACEOF
+      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 ""
+        as_fn_error $? "$error_list" "$LINENO" 5
+      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'`
+transport_ftobj_list=`echo " $transport_src_list " | $SED 's/\.c/\.ft/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"
+    transport_ftobj_list="$transport_ftobj_list inet_ntop.ft inet_pton.ft"
+  fi
+fi
+
+if test "x$transport_result_list" = x ; then
+   as_fn_error $? "No transports configured, at least one must be provided" "$LINENO" 5
+fi
+
+
+
+
+
+
+
+for i in $transport_def_list; do
+  cat >>confdefs.h <<_ACEOF
+#define $i 1
+_ACEOF
+
+done
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $transport_result_list." >&5
+$as_echo "$transport_result_list." >&6; }
+
+  cat >> configure-summary << EOF
+  Network transport support: $transport_result_list
+EOF
+
+
+# cleanup
+rm -f module_tmp_header.h
+
+#
+# Security modules to use
+#
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for security modules to use" >&5
+$as_echo_n "checking for security modules to use... " >&6; }
+# -*- sh -*-
+security_def_list="usm"
+security_src_list=""
+security_obj_list=""
+security_lobj_list=""
+security_ftobj_list=""
+security_mod_list=" "
+
+new_with_security=
+new_with_out_security=`echo $with_out_security_modules | tr , ' '`
+
+# Assign additional security modules
+for i in `echo $with_security_modules | tr , ' '`; do
+  if echo " $new_with_out_security " | $GREP " $i " > /dev/null; then
+    echo
+    as_fn_error $? "security module conflict - $i both included and excluded" "$LINENO" 5
+  elif echo " $new_with_security " | $GREP " $i " > /dev/null ; then
+    : # Double define, ignore
   else
     new_with_security="$new_with_security $i"
   fi
 done
 
+# Add default security modules
+for i in $security_def_list; do
+  if echo " $new_with_out_security " | $GREP " $i " > /dev/null; then
+    : # Excluded, ignore
+  elif echo " $new_with_security " | $GREP " $i " > /dev/null ; then
+    : # Double define, ignore
+  else
+    new_with_security="$new_with_security $i"
+  fi
+done
+
+# Generate output files
+: ${security_init_file:='snmplib/snmpsm_init.h'}
+: ${security_shutdown_file:='snmplib/snmpsm_shutdown.h'}
+: ${security_incl_file:='include/net-snmp/library/snmpv3-security-includes.h'}
+
+echo "/* This file is automatically generated by configure.  Do not modify by hand. */" > $security_init_file
+echo "/* This file is automatically generated by configure.  Do not modify by hand. */" > $security_shutdown_file
+echo "/* This file is automatically generated by configure.  Do not modify by hand. */" > $security_incl_file
+
 for i in $new_with_security; do
   cfile="snmp"$i".c"
   hfile="snmp"$i".h"
@@ -25576,19 +18908,21 @@
     :
   else
     echo
-    { { echo "$as_me:$LINENO: error: No such security module: $i / $cfile / $hfile" >&5
-echo "$as_me: error: No such security module: $i / $cfile / $hfile" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "No such security module: $i / $cfile / $hfile" "$LINENO" 5
   fi
 
   # define a bunch of stuff to enable it
+  security_mod_list="${security_mod_list} $i"
+  security_src_list="$security_src_list $cfile"
   security_src_list="$security_src_list $cfile"
   security_hdr_list="$security_hdr_list $hfile"
   security_obj_list="$security_obj_list snmp"$i".o"
   security_lobj_list="$security_lobj_list snmp"$i".lo"
-  def_name="NETSNMP_SECMOD_"`echo $i | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+  security_ftobj_list="$security_ftobj_list snmp"$i".ft"
   echo "init_"$i"();" >> $security_init_file
+  echo "shutdown_"$i"();" >> $security_shutdown_file
   echo "#include <net-snmp/library/$hfile>" >> $security_incl_file
+  def_name="`$as_echo "NETSNMP_SECMOD_$i" | $as_tr_cpp`"
   cat >>confdefs.h <<_ACEOF
 #define $def_name 1
 _ACEOF
@@ -25599,8 +18933,10 @@
 
 
 
-echo "$as_me:$LINENO: result: $new_with_security" >&5
-echo "${ECHO_T}$new_with_security" >&6
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $new_with_security" >&5
+$as_echo "$new_with_security" >&6; }
 
   cat >> configure-summary << EOF
   SNMPv3 Security Modules:    $new_with_security
@@ -25611,32 +18947,34 @@
 # Handle the special case of KSM to see which crypto API we support
 #
 
-ac_cv_NETSNMP_USE_KERBEROS_MIT=no
 rebuilt_new_with_security=
 already_checked_krb5=no
 
 for sec in $new_with_security
 do
-  if test "x$sec" = "xksm" -a "xyes" = "x$already_checked_krb5"; then
-    continue
+  if test "x$sec" = "xksm"; then
+    if test "xyes" = "x$already_checked_krb5"; then
+      continue
+    else
+      already_checked_krb5=yes
+    fi
   fi
-  already_checked_krb5=yes
 
   if test x$sec != xksm; then
     rebuilt_new_with_security="$rebuilt_new_with_security $sec"
   else
     if test no = $trykrb5; then
-      { echo "$as_me:$LINENO: configured not to use krb5. disabling ksm" >&5
-echo "$as_me: configured not to use krb5. disabling ksm" >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: configured not to use krb5. disabling ksm" >&5
+$as_echo "$as_me: configured not to use krb5. disabling ksm" >&6;}
       continue
     fi
 
     # Extract the first word of "krb5-config", so it can be a program name with args.
 set dummy krb5-config; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_krb5_config+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_krb5_config+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   case $krb5_config in
   [\\/]* | ?:[\\/]*)
@@ -25649,30 +18987,31 @@
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_path_krb5_config="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
+IFS=$as_save_IFS
 
   test -z "$ac_cv_path_krb5_config" && ac_cv_path_krb5_config="no"
   ;;
 esac
 fi
 krb5_config=$ac_cv_path_krb5_config
-
 if test -n "$krb5_config"; then
-  echo "$as_me:$LINENO: result: $krb5_config" >&5
-echo "${ECHO_T}$krb5_config" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $krb5_config" >&5
+$as_echo "$krb5_config" >&6; }
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
+
     if test no != $krb5_config; then
       CPPFLAGS="$CPPFLAGS `$krb5_config --cflags`"
       LIBS="$LIBS `$krb5_config --libs`"
@@ -25700,76 +19039,48 @@
 
     fi
 
-    echo "$as_me:$LINENO: checking for krb5" >&5
-echo $ECHO_N "checking for krb5... $ECHO_C" >&6
-    if test "${ac_cv_have_krb5+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5" >&5
+$as_echo_n "checking for krb5... " >&6; }
+    if ${ac_cv_have_krb5+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  echo "$as_me:$LINENO: checking for krb5_init_context in -lkrb5" >&5
-echo $ECHO_N "checking for krb5_init_context in -lkrb5... $ECHO_C" >&6
-if test "${ac_cv_lib_krb5_krb5_init_context+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lkrb5" >&5
+$as_echo_n "checking for krb5_init_context in -lkrb5... " >&6; }
+if ${ac_cv_lib_krb5_krb5_init_context+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lkrb5  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char krb5_init_context ();
 int
 main ()
 {
-krb5_init_context ();
+return krb5_init_context ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_krb5_krb5_init_context=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_krb5_krb5_init_context=no
+  ac_cv_lib_krb5_krb5_init_context=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_krb5_krb5_init_context" >&5
-echo "${ECHO_T}$ac_cv_lib_krb5_krb5_init_context" >&6
-if test $ac_cv_lib_krb5_krb5_init_context = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5_krb5_init_context" >&5
+$as_echo "$ac_cv_lib_krb5_krb5_init_context" >&6; }
+if test "x$ac_cv_lib_krb5_krb5_init_context" = xyes; then :
   ac_cv_have_krb5=yes
 else
   ac_cv_have_krb5=no
@@ -25782,29 +19093,23 @@
 
     if test $ac_cv_have_krb5 = no; then
       if test "x$askedkrb5" = "xyes"; then
-	{ { echo "$as_me:$LINENO: error: Asked to use krb5 but I couldn't find it." >&5
-echo "$as_me: error: Asked to use krb5 but I couldn't find it." >&2;}
-   { (exit 1); exit 1; }; }
+	as_fn_error $? "Asked to use krb5 but I couldn't find it." "$LINENO" 5
       fi
-      echo "$as_me:$LINENO: result: no. disabling ksm" >&5
-echo "${ECHO_T}no. disabling ksm" >&6
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no. disabling ksm" >&5
+$as_echo "no. disabling ksm" >&6; }
       continue
     fi
 
-    echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
     rebuilt_new_with_security="$rebuilt_new_with_security ksm"
 
-    echo "$as_me:$LINENO: checking for heimdal" >&5
-echo $ECHO_N "checking for heimdal... $ECHO_C" >&6
-    if test "${ac_cv_heimdal+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for heimdal" >&5
+$as_echo_n "checking for heimdal... " >&6; }
+    if ${ac_cv_heimdal+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <krb5.h>
 int
@@ -25815,45 +19120,20 @@
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_heimdal=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_heimdal=no
+  ac_cv_heimdal=no
 
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
-    echo "$as_me:$LINENO: result: $ac_cv_heimdal" >&5
-echo "${ECHO_T}$ac_cv_heimdal" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_heimdal" >&5
+$as_echo "$ac_cv_heimdal" >&6; }
     if test $ac_cv_heimdal = yes; then
-      cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_USE_KERBEROS_HEIMDAL 1
-_ACEOF
+
+$as_echo "#define NETSNMP_USE_KERBEROS_HEIMDAL 1" >>confdefs.h
 
       if test no = $krb5_config; then
 	LIBS="$LIBS -lkrb5 -lasn1 -lcom_err -lroken"
@@ -25862,171 +19142,51 @@
 	LIBS="$LIBS -lkrb5 -lcom_err"
     fi
 
-    echo "$as_me:$LINENO: checking to see which crypto API we need to use" >&5
-echo $ECHO_N "checking to see which crypto API we need to use... $ECHO_C" >&6
-    echo "$as_me:$LINENO: checking for krb5_c_encrypt" >&5
-echo $ECHO_N "checking for krb5_c_encrypt... $ECHO_C" >&6
-if test "${ac_cv_func_krb5_c_encrypt+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see which crypto API we need to use" >&5
+$as_echo_n "checking to see which crypto API we need to use... " >&6; }
+    if ${ac_cv_NETSNMP_USE_KERBEROS_MIT+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define krb5_c_encrypt to an innocuous variant, in case <limits.h> declares krb5_c_encrypt.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define krb5_c_encrypt innocuous_krb5_c_encrypt
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char krb5_c_encrypt (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef krb5_c_encrypt
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char krb5_c_encrypt ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_krb5_c_encrypt) || defined (__stub___krb5_c_encrypt)
-choke me
-#else
-char (*f) () = krb5_c_encrypt;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != krb5_c_encrypt;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_krb5_c_encrypt=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_krb5_c_encrypt=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_krb5_c_encrypt" >&5
-echo "${ECHO_T}$ac_cv_func_krb5_c_encrypt" >&6
-if test $ac_cv_func_krb5_c_encrypt = yes; then
-
-    if test "${ac_cv_NETSNMP_USE_KERBEROS_MIT+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  echo "$as_me:$LINENO: checking for krb5_init_context in -lk5crypto" >&5
-echo $ECHO_N "checking for krb5_init_context in -lk5crypto... $ECHO_C" >&6
-if test "${ac_cv_lib_k5crypto_krb5_init_context+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_init_context in -lk5crypto" >&5
+$as_echo_n "checking for krb5_init_context in -lk5crypto... " >&6; }
+if ${ac_cv_lib_k5crypto_krb5_init_context+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lk5crypto  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char krb5_init_context ();
 int
 main ()
 {
-krb5_init_context ();
+return krb5_init_context ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_k5crypto_krb5_init_context=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_k5crypto_krb5_init_context=no
+  ac_cv_lib_k5crypto_krb5_init_context=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_k5crypto_krb5_init_context" >&5
-echo "${ECHO_T}$ac_cv_lib_k5crypto_krb5_init_context" >&6
-if test $ac_cv_lib_k5crypto_krb5_init_context = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_k5crypto_krb5_init_context" >&5
+$as_echo "$ac_cv_lib_k5crypto_krb5_init_context" >&6; }
+if test "x$ac_cv_lib_k5crypto_krb5_init_context" = xyes; then :
   ac_cv_NETSNMP_USE_KERBEROS_MIT=yes
 else
-  ac_cv_MIT_NEW_CRYPTo=no
+  ac_cv_NETSNMP_USE_KERBEROS_MIT=no
 
 fi
 
@@ -26035,27 +19195,1218 @@
 
 
     if test yes = $ac_cv_NETSNMP_USE_KERBEROS_MIT; then
-      echo "$as_me:$LINENO: result: new MIT crypto API" >&5
-echo "${ECHO_T}new MIT crypto API" >&6
-      cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_USE_KERBEROS_MIT 1
-_ACEOF
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: new MIT crypto API" >&5
+$as_echo "new MIT crypto API" >&6; }
+
+$as_echo "#define NETSNMP_USE_KERBEROS_MIT 1" >>confdefs.h
 
       if test no = $krb5_config; then
 	LIBS="$LIBS -lk5crypto"
       fi
     else
-      echo "$as_me:$LINENO: result: old MIT crypto API" >&5
-echo "${ECHO_T}old MIT crypto API" >&6
-fi
-
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: old MIT crypto API" >&5
+$as_echo "old MIT crypto API" >&6; }
     fi
+    for ac_func in krb5_auth_con_getsendsubkey
+do :
+  ac_fn_c_check_func "$LINENO" "krb5_auth_con_getsendsubkey" "ac_cv_func_krb5_auth_con_getsendsubkey"
+if test "x$ac_cv_func_krb5_auth_con_getsendsubkey" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_KRB5_AUTH_CON_GETSENDSUBKEY 1
+_ACEOF
+
+fi
+done
+
   fi
 done
 
 new_with_security=$rebuilt_new_with_security
 
 #
+# Detect lm_sensors version
+#
+if test "x$ac_cv_header_sensors_sensors_h" = "xyes"; then
+    ac_fn_c_check_decl "$LINENO" "sensors_get_all_subfeatures" "ac_cv_have_decl_sensors_get_all_subfeatures" "#include <sensors/sensors.h>
+"
+if test "x$ac_cv_have_decl_sensors_get_all_subfeatures" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_SENSORS_GET_ALL_SUBFEATURES $ac_have_decl
+_ACEOF
+if test $ac_have_decl = 1; then :
+
+$as_echo "#define NETSNMP_USE_SENSORS_V3 1" >>confdefs.h
+
+fi
+
+fi
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+# -*- autoconf -*-
+#########################################
+##
+# Checks for libraries that are run
+# before the agent module tests.
+##
+#########################################
+
+
+##
+#   RPM checks
+#
+##
+for ac_header in rpm/rpmlib.h rpm/header.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ac_fn_c_check_header_mongrel "$LINENO" "rpm/rpmlib.h" "ac_cv_header_rpm_rpmlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_rpm_rpmlib_h" = xyes; then :
+  rpmlib_h=yes
+else
+  rpmlib_h=no
+fi
+
+
+ac_fn_c_check_header_mongrel "$LINENO" "rpm/header.h" "ac_cv_header_rpm_header_h" "$ac_includes_default"
+if test "x$ac_cv_header_rpm_header_h" = xyes; then :
+  rpmheader_h=yes
+else
+  rpmheader_h=no
+fi
+
+
+
+if test "x$rpmheader_h" = "xno" -o "x$rpmlib_h" = "xno" ; then
+  if test "x$with_rpm" = "xyes" ; then
+    as_fn_error $? "Could not find either the RPM header files needed and was specifically asked to use RPM support" "$LINENO" 5
+  else
+    with_rpm=no
+  fi
+fi
+
+#
+# rpm libraries only needed for the host resources mib software
+# installed tables (on linux in particular)
+#
+if test "x$with_rpm" != "xno"; then
+  # ARG.  RPM is a real pain.
+  # FWIW librpm.la, librpmio.la, and libpopt.la have correct dependencies.
+  _rpmlibs=""
+
+  # rpm-4.0.x needs rpmio.
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing rpmGetPath" >&5
+$as_echo_n "checking for library containing rpmGetPath... " >&6; }
+if ${netsnmp_cv_func_rpmGetPath__rpmlibs+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$_rpmlibs"
+          netsnmp_temp_LIBS="${netsnmp_target_val} $LMIBLIBS ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char rpmGetPath ();
+int
+main ()
+{
+return rpmGetPath ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in rpmio ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char rpmGetPath ();
+int
+main ()
+{
+return rpmGetPath ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_rpmGetPath__rpmlibs="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_rpmGetPath__rpmlibs" >&5
+$as_echo "$netsnmp_cv_func_rpmGetPath__rpmlibs" >&6; }
+ if test "${netsnmp_cv_func_rpmGetPath__rpmlibs}" != "no" ; then
+    if test "${netsnmp_cv_func_rpmGetPath__rpmlibs}" != "none required" ; then
+       _rpmlibs="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+
+ fi
+
+
+  # rpm-4.0.3 librpmdb actually contains what we need.
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing rpmdbOpen" >&5
+$as_echo_n "checking for library containing rpmdbOpen... " >&6; }
+if ${netsnmp_cv_func_rpmdbOpen__rpmlibs+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$_rpmlibs"
+          netsnmp_temp_LIBS="${netsnmp_target_val} $LMIBLIBS ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char rpmdbOpen ();
+int
+main ()
+{
+return rpmdbOpen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in rpmdb ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char rpmdbOpen ();
+int
+main ()
+{
+return rpmdbOpen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_rpmdbOpen__rpmlibs="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_rpmdbOpen__rpmlibs" >&5
+$as_echo "$netsnmp_cv_func_rpmdbOpen__rpmlibs" >&6; }
+ if test "${netsnmp_cv_func_rpmdbOpen__rpmlibs}" != "no" ; then
+    if test "${netsnmp_cv_func_rpmdbOpen__rpmlibs}" != "none required" ; then
+       _rpmlibs="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+
+ fi
+
+  # now check for rpm using the appropriate libraries.
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing rpmReadConfigFiles" >&5
+$as_echo_n "checking for library containing rpmReadConfigFiles... " >&6; }
+if ${netsnmp_cv_func_rpmReadConfigFiles__rpmlibs+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$_rpmlibs"
+          netsnmp_temp_LIBS="${netsnmp_target_val} $LMIBLIBS ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char rpmReadConfigFiles ();
+int
+main ()
+{
+return rpmReadConfigFiles ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in rpm ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char rpmReadConfigFiles ();
+int
+main ()
+{
+return rpmReadConfigFiles ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_rpmReadConfigFiles__rpmlibs="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_rpmReadConfigFiles__rpmlibs" >&5
+$as_echo "$netsnmp_cv_func_rpmReadConfigFiles__rpmlibs" >&6; }
+ if test "${netsnmp_cv_func_rpmReadConfigFiles__rpmlibs}" != "no" ; then
+    if test "${netsnmp_cv_func_rpmReadConfigFiles__rpmlibs}" != "none required" ; then
+       _rpmlibs="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+
+$as_echo "#define HAVE_LIBRPM 1" >>confdefs.h
+
+    LMIBLIBS="$_rpmlibs $LMIBLIBS"
+
+
+ fi
+
+
+  # rpm 4.6 has incompatible API, turn on the legacy one
+  ac_fn_c_check_decl "$LINENO" "headerGetEntry" "ac_cv_have_decl_headerGetEntry" "#include <rpm/rpmlib.h>
+
+"
+if test "x$ac_cv_have_decl_headerGetEntry" = xyes; then :
+  :
+else
+
+$as_echo "#define _RPM_4_4_COMPAT /**/" >>confdefs.h
+
+fi
+
+fi
+
+#
+# getfsstat/getvfsstat
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getfsstat" >&5
+$as_echo_n "checking for library containing getfsstat... " >&6; }
+if ${ac_cv_search_getfsstat+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getfsstat ();
+int
+main ()
+{
+return getfsstat ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' nbutil; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_getfsstat=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_getfsstat+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_getfsstat+:} false; then :
+
+else
+  ac_cv_search_getfsstat=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getfsstat" >&5
+$as_echo "$ac_cv_search_getfsstat" >&6; }
+ac_res=$ac_cv_search_getfsstat
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+for ac_func in getfsstat
+do :
+  ac_fn_c_check_func "$LINENO" "getfsstat" "ac_cv_func_getfsstat"
+if test "x$ac_cv_func_getfsstat" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GETFSSTAT 1
+_ACEOF
+
+fi
+done
+
+for ac_func in getvfsstat
+do :
+  ac_fn_c_check_func "$LINENO" "getvfsstat" "ac_cv_func_getvfsstat"
+if test "x$ac_cv_func_getvfsstat" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GETVFSSTAT 1
+_ACEOF
+
+fi
+done
+
+# getmntent is in the standard C library on UNICOS, in -lsun on Irix 4,
+# -lseq on Dynix/PTX, -lgen on Unixware.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getmntent" >&5
+$as_echo_n "checking for library containing getmntent... " >&6; }
+if ${ac_cv_search_getmntent+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getmntent ();
+int
+main ()
+{
+return getmntent ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' sun seq gen; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_getmntent=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_getmntent+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_getmntent+:} false; then :
+
+else
+  ac_cv_search_getmntent=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getmntent" >&5
+$as_echo "$ac_cv_search_getmntent" >&6; }
+ac_res=$ac_cv_search_getmntent
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+  ac_cv_func_getmntent=yes
+
+$as_echo "#define HAVE_GETMNTENT 1" >>confdefs.h
+
+else
+  ac_cv_func_getmntent=no
+fi
+
+
+
+#
+# kinfo_get_cpus
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing kinfo_get_cpus" >&5
+$as_echo_n "checking for library containing kinfo_get_cpus... " >&6; }
+if ${ac_cv_search_kinfo_get_cpus+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kinfo_get_cpus ();
+int
+main ()
+{
+return kinfo_get_cpus ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' kinfo; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_kinfo_get_cpus=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_kinfo_get_cpus+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_kinfo_get_cpus+:} false; then :
+
+else
+  ac_cv_search_kinfo_get_cpus=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_kinfo_get_cpus" >&5
+$as_echo "$ac_cv_search_kinfo_get_cpus" >&6; }
+ac_res=$ac_cv_search_kinfo_get_cpus
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+for ac_func in kinfo_get_cpus
+do :
+  ac_fn_c_check_func "$LINENO" "kinfo_get_cpus" "ac_cv_func_kinfo_get_cpus"
+if test "x$ac_cv_func_kinfo_get_cpus" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_KINFO_GET_CPUS 1
+_ACEOF
+
+fi
+done
+
+
+#
+# diskIOLAx requires exp which may require -lm
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing exp" >&5
+$as_echo_n "checking for library containing exp... " >&6; }
+if ${ac_cv_search_exp+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char exp ();
+int
+main ()
+{
+return exp ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' m; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_exp=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_exp+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_exp+:} false; then :
+
+else
+  ac_cv_search_exp=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_exp" >&5
+$as_echo "$ac_cv_search_exp" >&6; }
+ac_res=$ac_cv_search_exp
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+
+#
+#   libkvm
+#
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing kvm_read" >&5
+$as_echo_n "checking for library containing kvm_read... " >&6; }
+if ${netsnmp_cv_func_kvm_read_LAGENTLIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LAGENTLIBS"
+          netsnmp_temp_LIBS="${netsnmp_target_val}  ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kvm_read ();
+int
+main ()
+{
+return kvm_read ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in kvm ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kvm_read ();
+int
+main ()
+{
+return kvm_read ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_kvm_read_LAGENTLIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_kvm_read_LAGENTLIBS" >&5
+$as_echo "$netsnmp_cv_func_kvm_read_LAGENTLIBS" >&6; }
+ if test "${netsnmp_cv_func_kvm_read_LAGENTLIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_kvm_read_LAGENTLIBS}" != "none required" ; then
+       LAGENTLIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing kvm_openfiles" >&5
+$as_echo_n "checking for library containing kvm_openfiles... " >&6; }
+if ${netsnmp_cv_func_kvm_openfiles_LAGENTLIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LAGENTLIBS"
+          netsnmp_temp_LIBS="${netsnmp_target_val}  ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kvm_openfiles ();
+int
+main ()
+{
+return kvm_openfiles ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in kvm ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kvm_openfiles ();
+int
+main ()
+{
+return kvm_openfiles ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_kvm_openfiles_LAGENTLIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_kvm_openfiles_LAGENTLIBS" >&5
+$as_echo "$netsnmp_cv_func_kvm_openfiles_LAGENTLIBS" >&6; }
+ if test "${netsnmp_cv_func_kvm_openfiles_LAGENTLIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_kvm_openfiles_LAGENTLIBS}" != "none required" ; then
+       LAGENTLIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing kvm_getprocs" >&5
+$as_echo_n "checking for library containing kvm_getprocs... " >&6; }
+if ${netsnmp_cv_func_kvm_getprocs_LMIBLIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LMIBLIBS"
+          netsnmp_temp_LIBS="${netsnmp_target_val}  ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kvm_getprocs ();
+int
+main ()
+{
+return kvm_getprocs ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in kvm ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kvm_getprocs ();
+int
+main ()
+{
+return kvm_getprocs ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_kvm_getprocs_LMIBLIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_kvm_getprocs_LMIBLIBS" >&5
+$as_echo "$netsnmp_cv_func_kvm_getprocs_LMIBLIBS" >&6; }
+ if test "${netsnmp_cv_func_kvm_getprocs_LMIBLIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_kvm_getprocs_LMIBLIBS}" != "none required" ; then
+       LMIBLIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing kvm_getproc2" >&5
+$as_echo_n "checking for library containing kvm_getproc2... " >&6; }
+if ${netsnmp_cv_func_kvm_getproc2_LMIBLIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LMIBLIBS"
+          netsnmp_temp_LIBS="${netsnmp_target_val}  ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kvm_getproc2 ();
+int
+main ()
+{
+return kvm_getproc2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in kvm ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kvm_getproc2 ();
+int
+main ()
+{
+return kvm_getproc2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_kvm_getproc2_LMIBLIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_kvm_getproc2_LMIBLIBS" >&5
+$as_echo "$netsnmp_cv_func_kvm_getproc2_LMIBLIBS" >&6; }
+ if test "${netsnmp_cv_func_kvm_getproc2_LMIBLIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_kvm_getproc2_LMIBLIBS}" != "none required" ; then
+       LMIBLIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing kvm_getswapinfo" >&5
+$as_echo_n "checking for library containing kvm_getswapinfo... " >&6; }
+if ${netsnmp_cv_func_kvm_getswapinfo_LMIBLIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LMIBLIBS"
+          netsnmp_temp_LIBS="${netsnmp_target_val}  ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kvm_getswapinfo ();
+int
+main ()
+{
+return kvm_getswapinfo ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in kvm ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kvm_getswapinfo ();
+int
+main ()
+{
+return kvm_getswapinfo ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_kvm_getswapinfo_LMIBLIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_kvm_getswapinfo_LMIBLIBS" >&5
+$as_echo "$netsnmp_cv_func_kvm_getswapinfo_LMIBLIBS" >&6; }
+ if test "${netsnmp_cv_func_kvm_getswapinfo_LMIBLIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_kvm_getswapinfo_LMIBLIBS}" != "none required" ; then
+       LMIBLIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+
+ fi
+
+netsnmp_save_LIBS="$LIBS"
+LIBS="$LAGENTLIBS $LMIBLIBS $LIBS"
+for ac_func in kvm_openfiles kvm_getprocs kvm_getproc2 kvm_getswapinfo
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+LIBS="$netsnmp_save_LIBS"
+
+#
+#   dynamic module support
+#
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
+$as_echo_n "checking for library containing dlopen... " >&6; }
+if ${netsnmp_cv_func_dlopen_LMIBLIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LMIBLIBS"
+          netsnmp_temp_LIBS="${netsnmp_target_val} $LAGENTLIBS $LSNMPLIBS ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in dl ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_dlopen_LMIBLIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_dlopen_LMIBLIBS" >&5
+$as_echo "$netsnmp_cv_func_dlopen_LMIBLIBS" >&6; }
+ if test "${netsnmp_cv_func_dlopen_LMIBLIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_dlopen_LMIBLIBS}" != "none required" ; then
+       LMIBLIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+
+ fi
+
+netsnmp_save_LIBS="$LIBS"
+LIBS="$LMIBLIBS $LAGENTLIBS $LSNMPLIBS $LIBS"
+for ac_func in dlopen
+do :
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLOPEN 1
+_ACEOF
+
+fi
+done
+
+LIBS="$netsnmp_save_LIBS"
+
+# -*- autoconf -*-
+#
 # generate empty files
 #
 # Create include file list for snmp_vars.h to use.
@@ -26081,11 +20432,11 @@
 #
 # Do hairy agent module processing.
 #
-echo "$as_me:$LINENO: checking for and configuring mib modules to use" >&5
-echo $ECHO_N "checking for and configuring mib modules to use... $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for and configuring mib modules to use" >&5
+$as_echo_n "checking for and configuring mib modules to use... " >&6; }
 
 # set up the CPP command
-MODULECPP="$CPP $PARTIALTARGETFLAGS -I${srcdir}/include -I${srcdir}/agent/mibgroup"
+MODULECPP="$CPP $PARTIALTARGETFLAGS $CPPFLAGS -DNETSNMP_FEATURE_CHECKING -I${srcdir}/include -I${srcdir}/agent/mibgroup"
 if test "x$enable_mfd_rewrites" = "xyes"; then
   MODULECPP="$MODULECPP -DNETSNMP_ENABLE_MFD_REWRITES"
 fi
@@ -26093,8 +20444,8 @@
 module_list=""
 mib_module_list=""
 agent_module_list=""
-new_with_mib_modules=`echo $with_mib_modules | sed 's/,/ /g;'`
-new_with_out_mib_modules=`echo $with_out_mib_modules | sed 's/,/ /g;'`
+new_with_mib_modules=`echo $with_mib_modules | $SED 's/,/ /g;'`
+new_with_out_mib_modules=`echo $with_out_mib_modules | $SED 's/,/ /g;'`
 
 # set up initial module list
 new_module_list="$new_with_mib_modules default_modules"
@@ -26116,25 +20467,23 @@
 # remove modules that were explicitly excluded
 for i in $test_modules
  do
-  if echo " $new_with_out_mib_modules " | grep " $i " > /dev/null; then
+  if echo " $new_with_out_mib_modules " | $GREP " $i " > /dev/null; then
     mib_cfg_msg="mib module '$i' is both included and excluded."
-    { echo "$as_me:$LINENO: WARNING: mib module conflict" >&5
-echo "$as_me: WARNING: mib module conflict" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: mib module conflict" >&5
+$as_echo "$as_me: WARNING: mib module conflict" >&2;}
     if test "x$with_mib_cfg_checks" = "xyes"; then
-      { echo "$as_me:$LINENO: WARNING: user with    : $with_mib_modules" >&5
-echo "$as_me: WARNING: user with    : $with_mib_modules" >&2;}
-      { echo "$as_me:$LINENO: WARNING: final with   : $new_module_list" >&5
-echo "$as_me: WARNING: final with   : $new_module_list" >&2;}
-      { echo "$as_me:$LINENO: WARNING: user without : $with_out_mib_modules" >&5
-echo "$as_me: WARNING: user without : $with_out_mib_modules" >&2;}
-      { echo "$as_me:$LINENO: WARNING: final without: $new_with_out_mib_modules" >&5
-echo "$as_me: WARNING: final without: $new_with_out_mib_modules" >&2;}
-      { { echo "$as_me:$LINENO: error: $mib_cfg_msg" >&5
-echo "$as_me: error: $mib_cfg_msg" >&2;}
-   { (exit 1); exit 1; }; }
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: user with    : $with_mib_modules" >&5
+$as_echo "$as_me: WARNING: user with    : $with_mib_modules" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: final with   : $new_module_list" >&5
+$as_echo "$as_me: WARNING: final with   : $new_module_list" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: user without : $with_out_mib_modules" >&5
+$as_echo "$as_me: WARNING: user without : $with_out_mib_modules" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: final without: $new_with_out_mib_modules" >&5
+$as_echo "$as_me: WARNING: final without: $new_with_out_mib_modules" >&2;}
+      as_fn_error $? "$mib_cfg_msg" "$LINENO" 5
     else
-      { echo "$as_me:$LINENO: WARNING: $mib_cfg_msg It will be excluded" >&5
-echo "$as_me: WARNING: $mib_cfg_msg It will be excluded" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $mib_cfg_msg It will be excluded" >&5
+$as_echo "$as_me: WARNING: $mib_cfg_msg It will be excluded" >&2;}
 
   cat >> configure-summary << EOF
   *** MIB Module warning *** $mib_cfg_msg It has been excluded.
@@ -26146,8 +20495,10 @@
   fi
 done
 
-echo "$as_me:$LINENO: result: $new_module_list." >&5
-echo "${ECHO_T}$new_module_list." >&6
+new_module_list=`(echo $new_module_list | tr ' ' '\n' | sort | tr '\n' ' '; echo '') | $SED 's/ $//'`
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $new_module_list." >&5
+$as_echo "$new_module_list." >&6; }
 
 #---------------------
 # loop over module list
@@ -26216,14 +20567,14 @@
 
     #---------------------
     # figure out which sub-blocks to build in parts
-    if echo "$j" | grep "=" ; then
+    if echo "$j" | $GREP "=" ; then
        # build a shared object file
        # format: sofilename=module1:module2
        # XXX: currently doesn't do this
-       dl_name=`echo $j | sed 's/=.*//'`
+       dl_name=`echo $j | $SED 's/=.*//'`
        dl_names="$dl_names $dl_name"
-       dl_objects=`echo $j | sed 's/.*=//'`
-       module_sublist=`echo $dl_objects | sed 's/:/ /g'`
+       dl_objects=`echo $j | $SED 's/.*=//'`
+       module_sublist=`echo $dl_objects | $SED 's/:/ /g'`
        saved_sublist=""
        saved_sublist_code=""
        output_to=separate
@@ -26263,11 +20614,8 @@
     #---------------------
     # build a pseudo include header that includes current config and
     # system symbols:
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    rm -f conftest.$ac_ext module_tmp_header.h
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include NETSNMP_SYSTEM_INCLUDE_FILE
@@ -26281,10 +20629,12 @@
     #     - mib_module   => libnetsnmpmibs   (default)
     #     - agent_module => libnetsnmpagent
     #
+
     module_type=mib_module
     if test -f $srcdir/$mibdir/$i.h; then
 
-      module_type=`$MODULECPP module_tmp_header.h | grep config_belongs_in | sed 's@.*config_belongs_in(\([^)]*\)).*@\1@'`
+      module_type=`$MODULECPP module_tmp_header.h | \
+                   $SED -n 's@.*config_belongs_in(\([^)]*\)).*@\1@p'`
 
     fi
     if test "x$module_type" = "x" ; then
@@ -26301,7 +20651,7 @@
     dblfix=""
     for dltest in $dl_names ; do
       eval mod_files="\"\$dl_${dltest}_files\""
-      if echo " $mod_files " | grep " $i " > /dev/null; then
+      if echo " $mod_files " | $GREP " $i " > /dev/null; then
         # some dll module has already seen this, unload it from that list
         # and include it in the core (again)
 
@@ -26310,7 +20660,7 @@
   fi
 
 
-        mod_files=`echo " $mod_files " | sed "s@ $i @@"`
+        mod_files=`echo " $mod_files " | $SED "s@ $i @@"`
         dblfix="__XXX__"
         eval "dl_${dltest}_files=\"$mod_files\""
 
@@ -26332,7 +20682,7 @@
 	# Adding it back to the original ordered spot would be a
 	# nightmare.  Ok, we're already in nightmare code so that
 	# wolud have to be a night-terror.
-        mnm=`echo $i | sed 's/.*\///;s/\.c$//;'`
+        mnm=`echo $i | $SED 's/.*\///;s/\.c$//;'`
 	output_inits_tmp="$mibdir/${module_type}_inits.h"
 	echo "  if (should_init(\"$mnm\")) init_$mnm();" >> $output_inits_tmp
         # XXX: even worse, we loose whether the header is needed or not.
@@ -26351,14 +20701,14 @@
   fi
 
 
-    elif echo " $new_with_out_mib_modules " | grep " $i " > /dev/null; then
+    elif echo " $new_with_out_mib_modules " | $GREP " $i " > /dev/null; then
 
   if test $module_debug = 1; then
     echo "$i was excluded"
   fi
 
 
-    elif echo " $module_list " | grep " $i " > /dev/null; then
+    elif echo " $module_list " | $GREP " $i " > /dev/null; then
 
   if test $module_debug = 1; then
     echo "$i already tested"
@@ -26384,7 +20734,9 @@
       	#
         # check if $i has any conflicts
         #
-	new_list_excl=`$MODULECPP module_tmp_header.h | grep config_exclude | sed 's/.*config_exclude(\(.*\)).*/\1/'`
+
+        new_list_excl=`$MODULECPP module_tmp_header.h | \
+                       $SED -n 's/.*config_exclude(\(.*\)).*/\1/p'`
 	if test "x$new_list_excl" != "x"; then
 
   if test $module_debug = 1; then
@@ -26394,17 +20746,15 @@
 
 	  for j in $new_list_excl
 	    do
-	    if echo " $module_list $new_mib_module_list $new_list_two " | grep " $j " > /dev/null; then
+	    if echo " $module_list $new_mib_module_list $new_list_two " | $GREP " $j " > /dev/null; then
               mib_cfg_msg="mib module '$i' excludes module '$j' but another module requires it"
-              { echo "$as_me:$LINENO: WARNING: mib module error" >&5
-echo "$as_me: WARNING: mib module error" >&2;}
+              { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: mib module error" >&5
+$as_echo "$as_me: WARNING: mib module error" >&2;}
               if test "x$with_mib_cfg_checks" = "xyes"; then
-	        { { echo "$as_me:$LINENO: error: $mib_cfg_msg" >&5
-echo "$as_me: error: $mib_cfg_msg" >&2;}
-   { (exit 1); exit 1; }; }
+	        as_fn_error $? "$mib_cfg_msg" "$LINENO" 5
               else
-	        { echo "$as_me:$LINENO: WARNING: $mib_cfg_msg" >&5
-echo "$as_me: WARNING: $mib_cfg_msg" >&2;}
+	        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $mib_cfg_msg" >&5
+$as_echo "$as_me: WARNING: $mib_cfg_msg" >&2;}
 
   cat >> configure-summary << EOF
   *** MIB Module warning *** $mib_cfg_msg
@@ -26430,18 +20780,20 @@
         # check if $i has any architecture specific requirements
         #
 
-        new_list_arch=`$MODULECPP module_tmp_header.h | grep config_arch_require | sed 's/.*config_arch_require( *\([^ ]*\) *, *\([^ ]*\) *).*/\1-xarchx-\2/'`
+
+        new_list_arch=`$MODULECPP module_tmp_header.h | \
+                       $SED -n 's/.*config_arch_require( *\([^ ]*\) *, *\([^ ]*\) *).*/\1-xarchx-\2/p'`
 
 	if test "x$new_list_arch" != "x"; then
           for j in $new_list_arch
 	    do
-	    archtest=`echo $j | sed 's/-xarchx-.*//'`
+	    archtest=`echo $j | $SED 's/-xarchx-.*//'`
 	    # target_os may have been changed to a #define of 1...
 	    if test "x$archtest" = "x1" -o "x$target_os" = "x$archtest" -o "x$PARTIALTARGETOS" = "x$archtest"; then
-	      new_list="$new_list `echo $j | sed 's/.*-xarchx-//'`"
+	      new_list="$new_list `echo $j | $SED 's/.*-xarchx-//'`"
 
   if test $module_debug = 1; then
-    echo " $i required adding arch files: `echo $j | sed 's/.*-xarchx-//'`"
+    echo " $i required adding arch files: `echo $j | $SED 's/.*-xarchx-//'`"
   fi
 
 
@@ -26456,12 +20808,59 @@
 
 
         #---------------------
+      	# macro: config_version_require((base, version, version-modules, ...))
+      	#  - lists alternative modules used from different versions.
+        #
+
+        new_list_alt3=`$MODULECPP module_tmp_header.h | \
+            $AWK '
+                BEGIN {
+                    if("'"$enable_new_features"'" == "yes")
+                        method="max";
+                    else if("'"$enable_old_features"'" == "yes")
+                        method="max-less";
+                    else
+                        method="max-less-equal";
+                    FS = ".";
+                    split("'"$with_features_of"'", a);
+                    version=sprintf("%03d%03d%03d%03d", a[1], a[2], a[3], a[4]);
+                }
+                /config_version_require/ {
+                    gsub("^.*config_version_require *\\\\(\\\\(", "");
+                    gsub("\\\\)\\\\).*$", "");
+                    gsub(", *", ",");
+                    FS = ",";
+                    n = split($0, a);
+                    FS = ".";
+                    actver = "000000000000";
+                    actstr = a[1];
+                    for(i = 2; i < n; i += 2) {
+                        split(a[i], b);
+                        curver=sprintf("%03d%03d%03d%03d", b[1], b[2], b[3], b[4]);
+                        if (curver > actver && (method != "max-less" || curver < version) && (method != "max-less-equal" || curver <= version)) {
+                            actver = curver;
+                            actstr = a[i + 1];
+                        }
+                    }
+                    printf(" %s", actstr);
+                }'`
+
+  if test $module_debug = 1; then
+    echo " $i required versioned features: $new_list_alt3"
+  fi
+
+
+        new_list="${new_list}${new_list_alt3}"
+
+        #---------------------
       	# macro: config_require(modules)
       	#  - lists modules required for this module
         #
         # check if $i has any other required modules
         #
-	new_list="$new_list `$MODULECPP module_tmp_header.h | grep config_require | sed 's/.*config_require(\(.*\)).*/\1/'`"
+
+        new_list="$new_list `$MODULECPP module_tmp_header.h | \
+                  $SED -n 's/.*config_require(\(.*\)).*/\1/p'`"
 
   if test $module_debug = 1; then
     echo " $i will test: $new_list"
@@ -26478,30 +20877,26 @@
 
 
 	    if test ! -f $srcdir/$mibdir/$j.h -a ! -f $srcdir/$mibdir/$j.c; then
-              { echo "$as_me:$LINENO: WARNING: mib module error" >&5
-echo "$as_me: WARNING: mib module error" >&2;}
-	      { { echo "$as_me:$LINENO: error: mib module \"$i\" requires module \"$j\" but $j.h or $j.c could not be found in $srcdir/$mibdir" >&5
-echo "$as_me: error: mib module \"$i\" requires module \"$j\" but $j.h or $j.c could not be found in $srcdir/$mibdir" >&2;}
-   { (exit 1); exit 1; }; }
-	    elif echo " $new_with_out_mib_modules " | grep " $j " > /dev/null; then
+              { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: mib module error" >&5
+$as_echo "$as_me: WARNING: mib module error" >&2;}
+	      as_fn_error $? "mib module \"$i\" requires module \"$j\" but $j.h or $j.c could not be found in $srcdir/$mibdir" "$LINENO" 5
+	    elif echo " $new_with_out_mib_modules " | $GREP " $j " > /dev/null; then
 	      if test "x$i" != "xdefault_modules" ; then
                 mib_cfg_msg="mib module '$i' requires module '$j' but someone told me to compile without it"
-                { echo "$as_me:$LINENO: WARNING: mib module error" >&5
-echo "$as_me: WARNING: mib module error" >&2;}
+                { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: mib module error" >&5
+$as_echo "$as_me: WARNING: mib module error" >&2;}
                 if test "x$with_mib_cfg_checks" = "xyes"; then
-                  { { echo "$as_me:$LINENO: error: $mib_cfg_msg" >&5
-echo "$as_me: error: $mib_cfg_msg" >&2;}
-   { (exit 1); exit 1; }; }
+                  as_fn_error $? "$mib_cfg_msg" "$LINENO" 5
                 else
-                  { echo "$as_me:$LINENO: WARNING: $mib_cfg_msg" >&5
-echo "$as_me: WARNING: $mib_cfg_msg" >&2;}
+                  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $mib_cfg_msg" >&5
+$as_echo "$as_me: WARNING: $mib_cfg_msg" >&2;}
 
   cat >> configure-summary << EOF
   *** MIB Module warning *** $mib_cfg_msg
 EOF
 
                 fi
-#	    elif echo " $module_list $new_list_two $new_module_list " | grep " $j " > /dev/null; then
+#	    elif echo " $module_list $new_list_two $new_module_list " | $GREP " $j " > /dev/null; then
 #              AC_MSG_MODULE_DBG("  $j included previously")
               fi
 	    else
@@ -26522,15 +20917,17 @@
         #
         # check if $i has any mibs to add
         #
-	new_mibs=`$MODULECPP module_tmp_header.h | grep config_add_mib | sed 's/.*config_add_mib(\(.*\)).*/\1/'`
+
+        new_mibs=`$MODULECPP module_tmp_header.h | \
+                  $SED -n 's/.*config_add_mib(\(.*\)).*/\1/p'`
 	if test "x$new_mibs" != "x"; then
 	    for j in $new_mibs
 		do
-		if test "x`echo :$default_mibs: | grep :$j:`" = "x"; then
+		if test "x`echo :$default_mibs: | $GREP :$j:`" = "x"; then
 		    default_mibs="$default_mibs:$j"
 		fi
 		if test -f $srcdir/mibs/$j.txt; then
-		    if echo $default_mibs_install | grep " $j " > /dev/null; then
+		    if echo $default_mibs_install | $GREP " $j " > /dev/null; then
 			    :
 		    else
 			    default_mibs_install="$default_mibs_install $j.txt"
@@ -26563,11 +20960,11 @@
         #-------------------
         # check for unsupported config_load_mib
         #
-        if $MODULECPP module_tmp_header.h | grep config_load_mib > /dev/null 2>&1; then
-          { echo "$as_me:$LINENO: WARNING: mib module error" >&5
-echo "$as_me: WARNING: mib module error" >&2;}
-      	  { echo "$as_me:$LINENO: WARNING: mib module \"$i\" uses the \"config_load_mib\" directive, which is no longer supported.  It probably won't work." >&5
-echo "$as_me: WARNING: mib module \"$i\" uses the \"config_load_mib\" directive, which is no longer supported.  It probably won't work." >&2;}
+        if $MODULECPP module_tmp_header.h | $GREP -q config_load_mib; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: mib module error" >&5
+$as_echo "$as_me: WARNING: mib module error" >&2;}
+      	  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: mib module \"$i\" uses the \"config_load_mib\" directive, which is no longer supported.  It probably won't work." >&5
+$as_echo "$as_me: WARNING: mib module \"$i\" uses the \"config_load_mib\" directive, which is no longer supported.  It probably won't work." >&2;}
         fi # grep config_load_mib
 
         #-------------------
@@ -26575,7 +20972,9 @@
         #  (generally not used any longer; old auto-load a .conf token)
         #
 
-        $MODULECPP module_tmp_header.h | grep config_parse_dot_conf | sed 's@.*config_parse_dot_conf(\([^)]*\), *\([^),]*\), *\([^),]*\), *\([^),]*\)).*@register_config_handler("snmpd",\1, \2, \3, \4);@' >> $mibdir/mib_module_dot_conf.h
+
+        $MODULECPP module_tmp_header.h | \
+        $SED -n 's@.*config_parse_dot_conf(\([^)]*\), *\([^),]*\), *\([^),]*\), *\([^),]*\)).*@register_config_handler("snmpd",\1, \2, \3, \4);@p' >> $mibdir/mib_module_dot_conf.h
 
 
         #---------------------
@@ -26584,20 +20983,22 @@
         #
         # check if $i has any errors, or warnings
         #
-	error=`$MODULECPP module_tmp_header.h | grep config_error | sed 's/.*config_error(\(.*\)).*/\1/'`
+
+        error=`$MODULECPP module_tmp_header.h | \
+               $SED -n 's/.*config_error(\(.*\)).*/\1/p'`
 	if test "x$error" != "x"; then
           echo
           echo
-          { { echo "$as_me:$LINENO: error: $i: *** $error ***" >&5
-echo "$as_me: error: $i: *** $error ***" >&2;}
-   { (exit 1); exit 1; }; }
+          as_fn_error $? "$i: *** $error ***" "$LINENO" 5
         fi
 
         #---------------------
       	# macro: config_warning(warning text)
       	#  - used to signal a configuration "warning" to be printed to the user
         #
-	warning=`$MODULECPP module_tmp_header.h | grep config_warning | sed 's/.*config_warning(\(.*\)).*/\1/'`
+
+        warning=`$MODULECPP module_tmp_header.h | \
+                 $SED -n 's/.*config_warning(\(.*\)).*/\1/p'`
 	if test "x$warning" != "x"; then
           all_warnings="$all_warnings $warning
 "
@@ -26607,7 +21008,7 @@
       # Check for a .c file if the .h didn't exist
       #
       elif test -f $srcdir/$mibdir/$i.c; then
-        if echo " $module_list $new_list_two $new_module_list " | grep " $i      " > /dev/null; then
+        if echo " $module_list $new_list_two $new_module_list " | $GREP " $i      " > /dev/null; then
 
   if test $module_debug = 1; then
     echo "  $i already included"
@@ -26629,11 +21030,9 @@
       # No .h or .c = error!  (typo?)
       #
       else # no $i.h or $i.c
-        { echo "$as_me:$LINENO: WARNING: mib module error" >&5
-echo "$as_me: WARNING: mib module error" >&2;}
-	{ { echo "$as_me:$LINENO: error: module files $i.h or $i.c could not be found in $srcdir/$mibdir" >&5
-echo "$as_me: error: module files $i.h or $i.c could not be found in $srcdir/$mibdir" >&2;}
-   { (exit 1); exit 1; }; }
+        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: mib module error" >&5
+$as_echo "$as_me: WARNING: mib module error" >&2;}
+	as_fn_error $? "module files $i.h or $i.c could not be found in $srcdir/$mibdir" "$LINENO" 5
       fi # no $i.h
 
       #-------------------
@@ -26650,7 +21049,7 @@
           eval "dl_${dl_name}_files=\"\$dl_${dl_name}_files $i\""
           saved_sublist_code="$saved_sublist_code $i"
         fi
-        mnm=`echo $i | sed 's/.*\///;s/\.c$//;'`
+        mnm=`echo $i | $SED 's/.*\///;s/\.c$//;'`
 
   if test $module_debug = 1; then
     echo -e "\nchecking '$srcdir/$mibdir/$i.c' ($mnm/`basename $i`) C file for init/shutdown"
@@ -26658,13 +21057,11 @@
 
 
         if test "x$mnm" != "x`basename $i`"; then
-           { echo "$as_me:$LINENO: WARNING: mib module error" >&5
-echo "$as_me: WARNING: mib module error" >&2;}
-	   { { echo "$as_me:$LINENO: error: conflicting names: $mnm != \`basename $i\`" >&5
-echo "$as_me: error: conflicting names: $mnm != \`basename $i\`" >&2;}
-   { (exit 1); exit 1; }; }
+           { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: mib module error" >&5
+$as_echo "$as_me: WARNING: mib module error" >&2;}
+	   as_fn_error $? "conflicting names: $mnm != \`basename $i\`" "$LINENO" 5
         fi
-        temp_init=`grep init_$mnm $srcdir/$mibdir/$i.c | grep -v _init_$mnm`
+        temp_init=`$GREP init_$mnm $srcdir/$mibdir/$i.c | $GREP -v _init_$mnm`
 	if test "x$temp_init" != "x"; then
 
   if test $module_debug = 1; then
@@ -26675,7 +21072,7 @@
             need_header=1
 	    echo "  if (should_init(\"$mnm\")) init_$mnm();" >> $output_inits
 	fi
-	grep shutdown_$mnm $srcdir/$mibdir/$i.c > /dev/null
+	$GREP shutdown_$mnm $srcdir/$mibdir/$i.c > /dev/null
         if test $? -eq 0 ; then
             if test $module_debug -eq 1; then
               echo -e "\nadding shutdown_$mnm() to list"
@@ -26698,8 +21095,8 @@
       # check for output directory (for building outside of source tree
       #
 
-      if test "x`echo $i | sed 's/\///g;'`" != "x$i"; then
-	mnd=`echo $i | sed 's/\/[^/]*$//;'`
+      if test "x`echo $i | $SED 's/\///g;'`" != "x$i"; then
+	mnd=`echo $i | $SED 's/\/[^/]*$//;'`
 	if test ! -d ./$mibdir/$mnd; then
 	    module_directories="$module_directories ./$mibdir/$mnd"
 	fi
@@ -26710,7 +21107,7 @@
       # define USING_*_MODULE
       #
 
-      sym="`echo ${i} | sed 's/[^a-zA-Z0-9_]/_/g' | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`"
+      sym="`echo ${i} | $SED 's/[^a-zA-Z0-9_]/_/g' | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`"
 
       echo "/* Define if compiling with the ${i} module files.  */" >> include/net-snmp/agent/${module_type}_config.h
       echo "#define USING_${sym}_MODULE 1" >> include/net-snmp/agent/${module_type}_config.h
@@ -26782,12 +21179,10 @@
 
   for ofile in $output_inits $output_hdrs ; do
     if test -f $ofile ; then
-      if grep "this file created automatically by configure" $ofile > /dev/null 2>&1 ; then
+      if $GREP "this file created automatically by configure" $ofile > /dev/null 2>&1 ; then
   	:
       else
-  	{ { echo "$as_me:$LINENO: error: $ofile already existed ; can't build dll object $i" >&5
-echo "$as_me: error: $ofile already existed ; can't build dll object $i" >&2;}
-   { (exit 1); exit 1; }; }
+  	as_fn_error $? "$ofile already existed ; can't build dll object $i" "$LINENO" 5
       fi
     fi
     cat > $ofile << EOFIF
@@ -26805,7 +21200,7 @@
 EOFOC
 
   # create the .so rule
-  saved_sublist_o=`echo "$mod_files " | sed 's/^ *//g;s/  */.o /g;'`
+  saved_sublist_o=`echo "$mod_files " | $SED 's/^ *//g;s/  */.o /g;'`
 
   # create the rules for each object
   for j in $mod_files ; do
@@ -26814,7 +21209,7 @@
 	\$(CC) -c \$(CPPFLAGS) \$(CFLAGS) \$(DLFLAGS) -o \$@ \$<
 
 EOFR
-    mnm=`echo $j | sed 's/.*\///;s/\.c$//;'`
+    mnm=`echo $j | $SED 's/.*\///;s/\.c$//;'`
     echo "  if (should_init(\"$mnm\")) init_$mnm();" >> $output_inits
   done
 
@@ -26834,41 +21229,46 @@
 done
 
 # cleanup
-rm -f module_tmp_header.h
+rm -f conftest.$ac_ext module_tmp_header.h
 
 #-------------------
 # build module lists for Makefiles
 #
 
 
-for i in module_list_o module_list_c module_list_lo mib_module_list_o mib_module_list_c mib_module_list_lo mibgroup_list_o mibgroup_list_lo agent_module_list_o agent_module_list_c agent_module_list_lo agentgroup_list_o agentgroup_list_lo ; do
+for i in module_list_o module_list_c module_list_lo module_list_ft mib_module_list_o mib_module_list_c mib_module_list_lo mib_module_list_ft mibgroup_list_o mibgroup_list_lo mibgroup_list_ft agent_module_list_o agent_module_list_c agent_module_list_lo agent_module_list_ft agentgroup_list_o agentgroup_list_lo agentgroup_list_ft ; do
   eval "$i=mk/${i}.mk"
 done
 
-sed 's/^module_list_code/module_list_o/;s/\([^=]\)  *\\/\1.o \\/g'  < $module_list_code  > $module_list_o
-sed 's/^module_list_code/module_list_c/;s/\([^=]\)  *\\/\1.c \\/g'  < $module_list_code  > $module_list_c
-sed 's/^module_list_code/module_list_lo/;s/\([^=]\)  *\\/\1.lo \\/g' < $module_list_code  > $module_list_lo
+$SED 's/^module_list_code/module_list_o/;s/\([^=]\)  *\\/\1.o \\/g'  < $module_list_code  > $module_list_o
+$SED 's/^module_list_code/module_list_c/;s/\([^=]\)  *\\/\1.c \\/g'  < $module_list_code  > $module_list_c
+$SED 's/^module_list_code/module_list_lo/;s/\([^=]\)  *\\/\1.lo \\/g' < $module_list_code  > $module_list_lo
+$SED 's/^module_list_code/module_list_ft/;s/\([^=]\)  *\\/\1.ft \\/g' < $module_list_code  > $module_list_ft
 
-sed 's/^mib_module_list_code/mib_module_list_o/;s/\([^=]\)  *\\/\1.o \\/g'  < $mib_module_list_code  > $mib_module_list_o
-sed 's/^mib_module_list_code/mib_module_list_c/;s/\([^=]\)  *\\/\1.c \\/g'  < $mib_module_list_code  > $mib_module_list_c
-sed 's/^mib_module_list_code/mib_module_list_lo/;s/\([^=]\)  *\\/\1.lo \\/g' < $mib_module_list_code  > $mib_module_list_lo
+$SED 's/^mib_module_list_code/mib_module_list_o/;s/\([^=]\)  *\\/\1.o \\/g'  < $mib_module_list_code  > $mib_module_list_o
+$SED 's/^mib_module_list_code/mib_module_list_c/;s/\([^=]\)  *\\/\1.c \\/g'  < $mib_module_list_code  > $mib_module_list_c
+$SED 's/^mib_module_list_code/mib_module_list_lo/;s/\([^=]\)  *\\/\1.lo \\/g' < $mib_module_list_code  > $mib_module_list_lo
+$SED 's/^mib_module_list_code/mib_module_list_ft/;s/\([^=]\)  *\\/\1.ft \\/g' < $mib_module_list_code  > $mib_module_list_ft
 
-sed 's/^mib_module_list_o/mibgroup_list_o/;s@\([^ 	]*\)\.o@mibgroup/\1.o@g' < $mib_module_list_o > $mibgroup_list_o
-sed 's/^mib_module_list_lo/mibgroup_list_lo/;s@\([^ 	]*\)\.lo@mibgroup/\1.lo@g' < $mib_module_list_lo > $mibgroup_list_lo
+$SED 's/^mib_module_list_o/mibgroup_list_o/;s@\([^ 	]*\)\.o@mibgroup/\1.o@g' < $mib_module_list_o > $mibgroup_list_o
+$SED 's/^mib_module_list_lo/mibgroup_list_lo/;s@\([^ 	]*\)\.lo@mibgroup/\1.lo@g' < $mib_module_list_lo > $mibgroup_list_lo
+$SED 's/^mib_module_list_ft/mibgroup_list_ft/;s@\([^ 	]*\)\.ft@mibgroup/\1.ft@g' < $mib_module_list_ft > $mibgroup_list_ft
 
-sed 's/^agent_module_list_code/agent_module_list_o/;s/\([^=]\)  *\\/\1.o \\/g'  < $agent_module_list_code  > $agent_module_list_o
-sed 's/^agent_module_list_code/agent_module_list_c/;s/\([^=]\)  *\\/\1.c \\/g'  < $agent_module_list_code  > $agent_module_list_c
-sed 's/^agent_module_list_code/agent_module_list_lo/;s/\([^=]\)  *\\/\1.lo \\/g' < $agent_module_list_code  > $agent_module_list_lo
+$SED 's/^agent_module_list_code/agent_module_list_o/;s/\([^=]\)  *\\/\1.o \\/g'  < $agent_module_list_code  > $agent_module_list_o
+$SED 's/^agent_module_list_code/agent_module_list_c/;s/\([^=]\)  *\\/\1.c \\/g'  < $agent_module_list_code  > $agent_module_list_c
+$SED 's/^agent_module_list_code/agent_module_list_lo/;s/\([^=]\)  *\\/\1.lo \\/g' < $agent_module_list_code  > $agent_module_list_lo
+$SED 's/^agent_module_list_code/agent_module_list_ft/;s/\([^=]\)  *\\/\1.ft \\/g' < $agent_module_list_code  > $agent_module_list_ft
 
-sed 's/^agent_module_list_o/agentgroup_list_o/;s@\([^ 	]*\)\.o@mibgroup/\1.o@g' < $agent_module_list_o > $agentgroup_list_o
-sed 's/^agent_module_list_lo/agentgroup_list_lo/;s@\([^ 	]*\)\.lo@mibgroup/\1.lo@g' < $agent_module_list_lo > $agentgroup_list_lo
+$SED 's/^agent_module_list_o/agentgroup_list_o/;s@\([^ 	]*\)\.o@mibgroup/\1.o@g' < $agent_module_list_o > $agentgroup_list_o
+$SED 's/^agent_module_list_lo/agentgroup_list_lo/;s@\([^ 	]*\)\.lo@mibgroup/\1.lo@g' < $agent_module_list_lo > $agentgroup_list_lo
+$SED 's/^agent_module_list_ft/agentgroup_list_ft/;s@\([^ 	]*\)\.ft@mibgroup/\1.ft@g' < $agent_module_list_ft > $agentgroup_list_ft
 
-for i in module_list_o module_list_c module_list_lo mib_module_list_o mib_module_list_c mib_module_list_lo mibgroup_list_o mibgroup_list_lo agent_module_list_o agent_module_list_c agent_module_list_lo agentgroup_list_o agentgroup_list_lo ; do
+for i in module_list_o module_list_c module_list_lo module_list_ft mib_module_list_o mib_module_list_c mib_module_list_lo mib_module_list_ft mibgroup_list_o mibgroup_list_lo mibgroup_list_ft agent_module_list_o agent_module_list_c agent_module_list_lo agent_module_list_ft agentgroup_list_o agentgroup_list_lo agentgroup_list_ft ; do
 	# hpux make (at least) doesn't like a trailing \ on the last
 	# line even when the next line contains nothing but
 	# whitespace.
-	lasttoken=`tail -1 mk/$i.mk | awk '{print $1}'`
-	sed "s#$lasttoken \\\\#$lasttoken#" < mk/$i.mk > mk/$i.mk.tmp
+	lasttoken=`awk '{lasttoken=$1}END{print lasttoken}' mk/$i.mk`
+	$SED "s#$lasttoken \\\\#$lasttoken#" < mk/$i.mk > mk/$i.mk.tmp
 	mv mk/$i.mk.tmp mk/$i.mk
 
 	# add a closing comment
@@ -26905,8 +21305,6 @@
 
 
 
-#AC_SUBST_FILE(mib_module_list)
-#AC_SUBST(module_list)
 
 
 
@@ -26914,8 +21312,12 @@
 
 
 
-echo "$as_me:$LINENO: result: ." >&5
-echo "${ECHO_T}." >&6
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ." >&5
+$as_echo "." >&6; }
 
 if test $module_debug -eq 1; then
 
@@ -26932,478 +21334,310 @@
 
 # end hairy agent module processing
 
-echo "$as_me:$LINENO: checking if directories need to be created" >&5
-echo $ECHO_N "checking if directories need to be created... $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if directories need to be created" >&5
+$as_echo_n "checking if directories need to be created... " >&6; }
 for i in $module_directories; do
   $srcdir/mkinstalldirs $i
 done
-echo "$as_me:$LINENO: result: ." >&5
-echo "${ECHO_T}." >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ." >&5
+$as_echo "." >&6; }
 
 #-------------------
 # Define default mibs
 #
-echo "$as_me:$LINENO: checking default mib files to read" >&5
-echo $ECHO_N "checking default mib files to read... $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking default mib files to read" >&5
+$as_echo_n "checking default mib files to read... " >&6; }
 if test "x$NETSNMP_DEFAULT_MIBS" = "x"; then
   NETSNMP_DEFAULT_MIBS="$default_mibs"
 fi
-if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc" -o "x$PARTIALTARGETOS" = "xcygwin"; then
-  # mingw32 and cygwin use ';' as the environment variable separator char
+if test "x$ENV_SEPARATOR" != "x"; then
+  :
+elif test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc" -o "x$PARTIALTARGETOS" = "xcygwin"; then
+  # mingw32 and cygwin use ';' as the default environment variable separator
   ENV_SEPARATOR=";"
-  NETSNMP_DEFAULT_MIBS=`echo "$NETSNMP_DEFAULT_MIBS" | sed 's/:/;/g'`
-  default_mibs=`echo "$default_mibs" | sed 's/:/;/g'`
+  NETSNMP_DEFAULT_MIBS=`echo "$NETSNMP_DEFAULT_MIBS" | $SED 's/:/;/g'`
+  default_mibs=`echo "$default_mibs" | $SED 's/:/;/g'`
 else
   ENV_SEPARATOR=":"
 fi
 
+
+cat >>confdefs.h <<_ACEOF
+#define ENV_SEPARATOR "$ENV_SEPARATOR"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define ENV_SEPARATOR_CHAR '$ENV_SEPARATOR'
+_ACEOF
+
 cat >>confdefs.h <<_ACEOF
 #define NETSNMP_DEFAULT_MIBS "$NETSNMP_DEFAULT_MIBS"
 _ACEOF
 
 
-echo "$as_me:$LINENO: result: $NETSNMP_DEFAULT_MIBS" >&5
-echo "${ECHO_T}$NETSNMP_DEFAULT_MIBS" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $NETSNMP_DEFAULT_MIBS" >&5
+$as_echo "$NETSNMP_DEFAULT_MIBS" >&6; }
 
-echo "$as_me:$LINENO: checking whether we have to build PIC code" >&5
-echo $ECHO_N "checking whether we have to build PIC code... $ECHO_C" >&6
-echo " $module_list " | grep " ucd-snmp/dlmod " >/dev/null
+#-------------------
+# 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
+
+
+
+# -*- autoconf -*-
+#########################################
+##
+# Miscellaneous checks
+##
+#########################################
+
+##
+#   Compilation-related
+##
+
+#       Dynamic modules require Position-Independent Code
+#	    LIB_CFLAGS/DLLIBS: used in agent Makefile only
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we have to build PIC code" >&5
+$as_echo_n "checking whether we have to build PIC code... " >&6; }
+echo " $module_list " | $GREP " ucd-snmp/dlmod " >/dev/null
 if test $? -eq 0 ; then
-        LIB_CFLAGS="$LIB_CFLAGS $SHLIB_CFLAGS"
-	echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+    LIB_CFLAGS="$LIB_CFLAGS $SHLIB_CFLAGS"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 else
-	DLLIBS=""
-	echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+    DLLIBS=""
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+
+# -*- autoconf -*-
+#########################################
+##
+# Checks for libraries that are run
+# after the agent module tests.
+##
+#########################################
+
+#   HAVE_LIB Definitions used in the Net-SNMP code base:
 #
-# Check for kernel location
+#       HAVE_LIBCRYPTO:	apps
+#       HAVE_LIBRPM:	agent
 #
 
-echo "$as_me:$LINENO: checking for location of system kernel" >&5
-echo $ECHO_N "checking for location of system kernel... $ECHO_C" >&6
-if test "${ac_cv_KERNEL_LOC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_KERNEL_LOC="unknown"
-# First determine if test expects a -f or a -c (character device (SYSV))
+##
+#   Simple checks:
+##
 
-if test -c /dev/null; then
-  CFLAG="-c"
-elif test -f /dev/null; then
-  CFLAG="-f"
-else
-  # fall back
-  CFLAG="-f"
-fi
-for i in /vmunix /hp-ux /stand/vmunix /dev/ksyms /kernel/unix /kernel/genunix /netbsd /unix /kernel /bsd /mach_kernel /boot/kernel/kernel
-  do
-  if test -f $i -o $CFLAG $i; then
-    ac_cv_KERNEL_LOC="$i"
-    break;
+# AC_CHECK_LIB(des, main)
+# AC_CHECK_LIB(m,   asin)
+
+#   dmalloc
+#
+if test "${with_dmalloc+set}" = set; then
+   if test "$with_dmalloc" = yes -a -d $with_dmalloc ; then
+
+  if test "x$with_dmalloc" != x -a -d $with_dmalloc; then
+     if test -d $with_dmalloc/lib; then
+       LDFLAGS="-L$with_dmalloc/lib $LDFLAGS"
+     fi
+     if test -d $with_dmalloc/include; then
+	CPPFLAGS="-I$with_dmalloc/include $CPPFLAGS"
+     fi
   fi
-done
-if test $i = "unknown"; then
-  { echo "$as_me:$LINENO: WARNING: Can't find system kernel...  Setting to /vmunix" >&5
-echo "$as_me: WARNING: Can't find system kernel...  Setting to /vmunix" >&2;}
-  ac_cv_KERNEL_LOC="/vmunix"
-fi
 
-fi
-echo "$as_me:$LINENO: result: $ac_cv_KERNEL_LOC" >&5
-echo "${ECHO_T}$ac_cv_KERNEL_LOC" >&6
-
-cat >>confdefs.h <<_ACEOF
-#define KERNEL_LOC "$ac_cv_KERNEL_LOC"
-_ACEOF
-
-
-#
-# Check for mount table location
-#
-
-echo "$as_me:$LINENO: checking for mount table location" >&5
-echo $ECHO_N "checking for mount table location... $ECHO_C" >&6
-if test "${ac_cv_ETC_MNTTAB+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_ETC_MNTTAB="unknown"
-for i in /etc/mnttab /etc/mtab /etc/filesystems /dev/mnttab
-  do
-  if test -f $i -o -c $i; then
-    ac_cv_ETC_MNTTAB="$i"
-    break;
-  fi
-done
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_ETC_MNTTAB" >&5
-echo "${ECHO_T}$ac_cv_ETC_MNTTAB" >&6
-
-cat >>confdefs.h <<_ACEOF
-#define ETC_MNTTAB "$ac_cv_ETC_MNTTAB"
-_ACEOF
-
-
-# Check for /dev/dmem or /dev/drum location
-echo "$as_me:$LINENO: checking for location of swap device" >&5
-echo $ECHO_N "checking for location of swap device... $ECHO_C" >&6
-if test "${ac_cv_DMEM_LOC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-# First determine if test expects a -f or a -c (character device (SYSV))
-
-if test -f /dev/kmem; then
-  CTEST="test -f"
-elif test -c /dev/kmem; then
-  CTEST="test -c"
-else
-  # fall back
-  CTEST="test -f"
-fi
-
-if $CTEST /dev/dmem; then
-  ac_cv_DMEM_LOC="/dev/dmem"
-elif $CTEST /dev/drum; then
-  ac_cv_DMEM_LOC="/dev/drum"
-else
-  ac_cv_DMEM_LOC="none"
-fi
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_DMEM_LOC" >&5
-echo "${ECHO_T}$ac_cv_DMEM_LOC" >&6
-
-if test "x$ac_cv_DMEM_LOC" != "xnone"; then
+   fi
+   for ac_header in dmalloc.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "dmalloc.h" "ac_cv_header_dmalloc_h" "$ac_includes_default"
+if test "x$ac_cv_header_dmalloc_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define DMEM_LOC "$ac_cv_DMEM_LOC"
+#define HAVE_DMALLOC_H 1
 _ACEOF
 
 fi
 
-# forced efence turned off.
-# if test "x$developer" = "xyes" -a "x$use_efence" != "xno"; then
-#    use_efence="yes"
-# fi
+done
 
-if test "x$use_efence" = "xyes"; then
-
-echo "$as_me:$LINENO: checking for EF_Exit in -lefence" >&5
-echo $ECHO_N "checking for EF_Exit in -lefence... $ECHO_C" >&6
-if test "${ac_cv_lib_efence_EF_Exit+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dmalloc_message" >&5
+$as_echo_n "checking for library containing dmalloc_message... " >&6; }
+if ${ac_cv_search_dmalloc_message+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lefence  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
+char dmalloc_message ();
+int
+main ()
+{
+return dmalloc_message ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' dmalloc; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_dmalloc_message=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_dmalloc_message+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_dmalloc_message+:} false; then :
+
+else
+  ac_cv_search_dmalloc_message=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dmalloc_message" >&5
+$as_echo "$ac_cv_search_dmalloc_message" >&6; }
+ac_res=$ac_cv_search_dmalloc_message
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+fi
+
+#   EFence
+#       (This used to be on by default for developer checkout)
+#
+if test "x$use_efence" = "xyes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing EF_Exit" >&5
+$as_echo_n "checking for library containing EF_Exit... " >&6; }
+if ${ac_cv_search_EF_Exit+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
 char EF_Exit ();
 int
 main ()
 {
-EF_Exit ();
+return EF_Exit ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_efence_EF_Exit=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_efence_EF_Exit=no
+for ac_lib in '' efence; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_EF_Exit=$ac_res
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_EF_Exit+:} false; then :
+  break
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_efence_EF_Exit" >&5
-echo "${ECHO_T}$ac_cv_lib_efence_EF_Exit" >&6
-if test $ac_cv_lib_efence_EF_Exit = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBEFENCE 1
-_ACEOF
-
-  LIBS="-lefence $LIBS"
-
-fi
-
-fi
-
-# Checks for libraries.
-# AC_CHECK_LIB(des, main)
-
-echo "$as_me:$LINENO: checking for round in -lm" >&5
-echo $ECHO_N "checking for round in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_round+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char round ();
-int
-main ()
-{
-round ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_round=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_round=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_round" >&5
-echo "${ECHO_T}$ac_cv_lib_m_round" >&6
-if test $ac_cv_lib_m_round = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-echo "$as_me:$LINENO: checking for exp in -lm" >&5
-echo $ECHO_N "checking for exp in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_exp+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char exp ();
-int
-main ()
-{
-exp ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_exp=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_exp=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_exp" >&5
-echo "${ECHO_T}$ac_cv_lib_m_exp" >&6
-if test $ac_cv_lib_m_exp = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-
-# Check whether --with-elf or --without-elf was given.
-if test "${with_elf+set}" = set; then
-  withval="$with_elf"
+done
+if ${ac_cv_search_EF_Exit+:} false; then :
 
 else
-  # Check whether --enable-elf or --disable-elf was given.
-if test "${enable_elf+set}" = set; then
-  enableval="$enable_elf"
-  { { echo "$as_me:$LINENO: error:  Invalid option. Use --with-elf/--without-elf instead " >&5
-echo "$as_me: error:  Invalid option. Use --with-elf/--without-elf instead " >&2;}
-   { (exit 1); exit 1; }; }
-fi;
-fi;
+  ac_cv_search_EF_Exit=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_EF_Exit" >&5
+$as_echo "$ac_cv_search_EF_Exit" >&6; }
+ac_res=$ac_cv_search_EF_Exit
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
+fi
+
+fi
+
+
+#   ELF libraries
+#       Typically used for 'nlist'  (needed for uptime)
+#
 if test "x$with_elf" != "xno"; then
-# nlist is needed for uptime on some sytems in the generic library
-# add hosts which don't use nlist to the blank first line
 case $target_os in
-	linux*) ;;
+	linux*) # add hosts which don't use nlist here
+                ;;
 	irix*) # Check for nlist in mld (irix)
-
-echo "$as_me:$LINENO: checking for nlist in -lelf" >&5
-echo $ECHO_N "checking for nlist in -lelf... $ECHO_C" >&6
-if test "${ac_cv_lib_elf_nlist+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nlist in -lelf" >&5
+$as_echo_n "checking for nlist in -lelf... " >&6; }
+if ${ac_cv_lib_elf_nlist+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lelf  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char nlist ();
 int
 main ()
 {
-nlist ();
+return nlist ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_elf_nlist=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_elf_nlist=no
+  ac_cv_lib_elf_nlist=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_elf_nlist" >&5
-echo "${ECHO_T}$ac_cv_lib_elf_nlist" >&6
-if test $ac_cv_lib_elf_nlist = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_nlist" >&5
+$as_echo "$ac_cv_lib_elf_nlist" >&6; }
+if test "x$ac_cv_lib_elf_nlist" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBELF 1
 _ACEOF
@@ -27412,72 +21646,43 @@
 
 fi
 
-
-echo "$as_me:$LINENO: checking for nlist64 in -lelf" >&5
-echo $ECHO_N "checking for nlist64 in -lelf... $ECHO_C" >&6
-if test "${ac_cv_lib_elf_nlist64+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nlist64 in -lelf" >&5
+$as_echo_n "checking for nlist64 in -lelf... " >&6; }
+if ${ac_cv_lib_elf_nlist64+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lelf  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char nlist64 ();
 int
 main ()
 {
-nlist64 ();
+return nlist64 ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_elf_nlist64=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_elf_nlist64=no
+  ac_cv_lib_elf_nlist64=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_elf_nlist64" >&5
-echo "${ECHO_T}$ac_cv_lib_elf_nlist64" >&6
-if test $ac_cv_lib_elf_nlist64 = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_nlist64" >&5
+$as_echo "$ac_cv_lib_elf_nlist64" >&6; }
+if test "x$ac_cv_lib_elf_nlist64" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBELF 1
 _ACEOF
@@ -27486,72 +21691,43 @@
 
 fi
 
-
-echo "$as_me:$LINENO: checking for nlist in -lmld" >&5
-echo $ECHO_N "checking for nlist in -lmld... $ECHO_C" >&6
-if test "${ac_cv_lib_mld_nlist+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nlist in -lmld" >&5
+$as_echo_n "checking for nlist in -lmld... " >&6; }
+if ${ac_cv_lib_mld_nlist+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char nlist ();
 int
 main ()
 {
-nlist ();
+return nlist ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_mld_nlist=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_mld_nlist=no
+  ac_cv_lib_mld_nlist=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_mld_nlist" >&5
-echo "${ECHO_T}$ac_cv_lib_mld_nlist" >&6
-if test $ac_cv_lib_mld_nlist = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mld_nlist" >&5
+$as_echo "$ac_cv_lib_mld_nlist" >&6; }
+if test "x$ac_cv_lib_mld_nlist" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBMLD 1
 _ACEOF
@@ -27562,72 +21738,43 @@
 
 		;;
 	*) # default
-
-echo "$as_me:$LINENO: checking for nlist in -lelf" >&5
-echo $ECHO_N "checking for nlist in -lelf... $ECHO_C" >&6
-if test "${ac_cv_lib_elf_nlist+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nlist in -lelf" >&5
+$as_echo_n "checking for nlist in -lelf... " >&6; }
+if ${ac_cv_lib_elf_nlist+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lelf  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char nlist ();
 int
 main ()
 {
-nlist ();
+return nlist ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_elf_nlist=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_elf_nlist=no
+  ac_cv_lib_elf_nlist=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_elf_nlist" >&5
-echo "${ECHO_T}$ac_cv_lib_elf_nlist" >&6
-if test $ac_cv_lib_elf_nlist = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_nlist" >&5
+$as_echo "$ac_cv_lib_elf_nlist" >&6; }
+if test "x$ac_cv_lib_elf_nlist" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBELF 1
 _ACEOF
@@ -27641,573 +21788,1188 @@
 fi
 
 
-# On some platforms (Irix) libnsl and libsocket should not be used.
-echo "$as_me:$LINENO: checking for gethostbyname" >&5
-echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6
-if test "${ac_cv_func_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+#   libsocket
+#       Needed for 'socket(2)'                          (Solaris)
+#       Possibly also for 'gethostname(3)'              (non-Solaris)
+#           (alternatively in libnsl                    (Solaris)
+#            or in libws2_32)                           (MinGW)
+#
+case x$with_socklib in
+xwinsock2)
+  #   libws2_w32                                        (MinGW)
+  #
+  netsnmp_save_LIBS="$LIBS"
+  LIBS="$LIBS -lws2_32"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-/* Define gethostbyname to an innocuous variant, in case <limits.h> declares gethostbyname.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define gethostbyname innocuous_gethostbyname
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char gethostbyname (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef gethostbyname
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char gethostbyname ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname)
-choke me
-#else
-char (*f) () = gethostbyname;
-#endif
-#ifdef __cplusplus
-}
-#endif
+    #include <winsock2.h>
 
 int
 main ()
 {
-return f != gethostbyname;
+
+    socket(0, 0, 0);
+    gethostbyname(0);
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_gethostbyname=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_link "$LINENO"; then :
 
-ac_cv_func_gethostbyname=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6
-if test $ac_cv_func_gethostbyname = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_GETHOSTBYNAME 1
-_ACEOF
+    # Keep LIBS.
+    true
 
 else
-  echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
-echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6
-if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+    # Restore LIBS and complain.
+    LIBS="$netsnmp_save_LIBS"
+    as_fn_error $? "libws2_32 not found." "$LINENO" 5
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  ;;
+*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
+$as_echo_n "checking for library containing socket... " >&6; }
+if ${ac_cv_search_socket+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnsl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
+char socket ();
+int
+main ()
+{
+return socket ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' socket; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_socket=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_socket+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_socket+:} false; then :
+
+else
+  ac_cv_search_socket=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5
+$as_echo "$ac_cv_search_socket" >&6; }
+ac_res=$ac_cv_search_socket
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+else
+  as_fn_error $? "socket(2) not found." "$LINENO" 5
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
+$as_echo_n "checking for library containing gethostbyname... " >&6; }
+if ${ac_cv_search_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
 char gethostbyname ();
 int
 main ()
 {
-gethostbyname ();
+return gethostbyname ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_nsl_gethostbyname=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+for ac_lib in '' nsl socket; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_gethostbyname=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_gethostbyname+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_gethostbyname+:} false; then :
 
-ac_cv_lib_nsl_gethostbyname=no
+else
+  ac_cv_search_gethostbyname=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6
-if test $ac_cv_lib_nsl_gethostbyname = yes; then
-  cat >>confdefs.h <<\_ACEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5
+$as_echo "$ac_cv_search_gethostbyname" >&6; }
+ac_res=$ac_cv_search_gethostbyname
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+  for ac_func in gethostbyname
+do :
+  ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
+if test "x$ac_cv_func_gethostbyname" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
 #define HAVE_GETHOSTBYNAME 1
 _ACEOF
 
-	LIBS="${LIBS} -lnsl"
 fi
+done
 
-fi
-
-
-# SCO Unixware 7.1.4 finds gethostbyname() in -lsocket
-echo "$as_me:$LINENO: checking for gethostbyname" >&5
-echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6
-if test "${ac_cv_func_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyaddr" >&5
+$as_echo_n "checking for library containing gethostbyaddr... " >&6; }
+if ${ac_cv_search_gethostbyaddr+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-/* Define gethostbyname to an innocuous variant, in case <limits.h> declares gethostbyname.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define gethostbyname innocuous_gethostbyname
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char gethostbyname (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef gethostbyname
-
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
+#endif
+char gethostbyaddr ();
+int
+main ()
 {
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char gethostbyname ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_gethostbyname) || defined (__stub___gethostbyname)
-choke me
-#else
-char (*f) () = gethostbyname;
-#endif
-#ifdef __cplusplus
+return gethostbyaddr ();
+  ;
+  return 0;
 }
-#endif
+_ACEOF
+for ac_lib in '' nsl socket; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_gethostbyaddr=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_gethostbyaddr+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_gethostbyaddr+:} false; then :
+
+else
+  ac_cv_search_gethostbyaddr=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyaddr" >&5
+$as_echo "$ac_cv_search_gethostbyaddr" >&6; }
+ac_res=$ac_cv_search_gethostbyaddr
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+  for ac_func in gethostbyaddr
+do :
+  ac_fn_c_check_func "$LINENO" "gethostbyaddr" "ac_cv_func_gethostbyaddr"
+if test "x$ac_cv_func_gethostbyaddr" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GETHOSTBYADDR 1
+_ACEOF
+
+fi
+done
+
+  ;;
+esac
+
+
+#   libiphlpapi                                         (Cygwin and MinGW)
+#
+netsnmp_save_LIBS="$LIBS"
+LIBS="$LIBS -liphlpapi"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  #include <winsock2.h>
+  #include <iphlpapi.h>
 
 int
 main ()
 {
-return f != gethostbyname;
+
+  IpRenewAddress(0);
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_gethostbyname=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_link "$LINENO"; then :
 
-ac_cv_func_gethostbyname=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6
-if test $ac_cv_func_gethostbyname = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_GETHOSTBYNAME 1
-_ACEOF
+  # Keep LIBS.
+  true
 
 else
-  echo "$as_me:$LINENO: checking for gethostbyname in -lsocket" >&5
-echo $ECHO_N "checking for gethostbyname in -lsocket... $ECHO_C" >&6
-if test "${ac_cv_lib_socket_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsocket  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+
+  # Restore LIBS and complain.
+  LIBS="$netsnmp_save_LIBS"
+  case x$with_socklib in
+  xwinsock2)
+    as_fn_error $? "libiphlpapi not found." "$LINENO" 5
+    ;;
+  esac
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+
+#   libregex                                            (MinGW)
+#
+netsnmp_save_LIBS="$LIBS"
+LIBS="$LIBS -lregex"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char gethostbyname ();
+  #include <sys/types.h>
+  #include <regex.h>
+
 int
 main ()
 {
-gethostbyname ();
+
+  regcomp(0, 0, 0);
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_socket_gethostbyname=yes
+if ac_fn_c_try_link "$LINENO"; then :
+
+  # Keep LIBS.
+  true
+
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-ac_cv_lib_socket_gethostbyname=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_socket_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_socket_gethostbyname" >&6
-if test $ac_cv_lib_socket_gethostbyname = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_GETHOSTBYNAME 1
-_ACEOF
-
-	LIBS="${LIBS} -lsocket"
-fi
+  # Restore LIBS.
+  LIBS="$netsnmp_save_LIBS"
 
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
 
-# Solaris kstat
-echo "$as_me:$LINENO: checking for kstat_lookup in -lkstat" >&5
-echo $ECHO_N "checking for kstat_lookup in -lkstat... $ECHO_C" >&6
-if test "${ac_cv_lib_kstat_kstat_lookup+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lkstat  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+#   libsnmpapi                                          (MinGW)
+#
+netsnmp_save_LIBS="$LIBS"
+LIBS="$LIBS -lsnmpapi"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+  #include <snmp.h>
+
+int
+main ()
+{
+
+  SnmpUtilMemAlloc(0);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+  # Keep LIBS.
+  true
+
+else
+
+  # Restore LIBS.
+  LIBS="$netsnmp_save_LIBS"
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+
+#   kstat library                                       (Solaris)
+#
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing kstat_lookup" >&5
+$as_echo_n "checking for library containing kstat_lookup... " >&6; }
+if ${netsnmp_cv_func_kstat_lookup_LNETSNMPLIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LNETSNMPLIBS"
+          netsnmp_temp_LIBS="${netsnmp_target_val}  ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char kstat_lookup ();
 int
 main ()
 {
-kstat_lookup ();
+return kstat_lookup ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_kstat_kstat_lookup=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_kstat_kstat_lookup=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_kstat_kstat_lookup" >&5
-echo "${ECHO_T}$ac_cv_lib_kstat_kstat_lookup" >&6
-if test $ac_cv_lib_kstat_kstat_lookup = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LIBKSTAT 1
-_ACEOF
-
-        LNETSNMPLIBS="${LNETSNMPLIBS} -lkstat"
-fi
-
-
-# Check for libraries that the agent needs
-# saving old libraries
-NONAGENTLIBS=$LIBS
-
-# Check for security related functions
-if test "x$tryopenssl" != "xno"; then
-    if test "x$askedopenssl" != "xyes" -a "x$askedpkcs" = "xyes"; then
-      echo "$as_me:$LINENO: checking for C_Initialize in -lpkcs11" >&5
-echo $ECHO_N "checking for C_Initialize in -lpkcs11... $ECHO_C" >&6
-if test "${ac_cv_lib_pkcs11_C_Initialize+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpkcs11  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  for netsnmp_cur_lib in kstat ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
+char kstat_lookup ();
+int
+main ()
+{
+return kstat_lookup ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_kstat_lookup_LNETSNMPLIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_kstat_lookup_LNETSNMPLIBS" >&5
+$as_echo "$netsnmp_cv_func_kstat_lookup_LNETSNMPLIBS" >&6; }
+ if test "${netsnmp_cv_func_kstat_lookup_LNETSNMPLIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_kstat_lookup_LNETSNMPLIBS}" != "none required" ; then
+       LNETSNMPLIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+$as_echo "#define HAVE_LIBKSTAT 1" >>confdefs.h
+
+
+ fi
+
+
+
+#
+#   librt
+#
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5
+$as_echo_n "checking for library containing clock_gettime... " >&6; }
+if ${netsnmp_cv_func_clock_gettime_LNETSNMPLIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LNETSNMPLIBS"
+          netsnmp_temp_LIBS="${netsnmp_target_val}  ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char clock_gettime ();
+int
+main ()
+{
+return clock_gettime ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in rt ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char clock_gettime ();
+int
+main ()
+{
+return clock_gettime ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_clock_gettime_LNETSNMPLIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_clock_gettime_LNETSNMPLIBS" >&5
+$as_echo "$netsnmp_cv_func_clock_gettime_LNETSNMPLIBS" >&6; }
+ if test "${netsnmp_cv_func_clock_gettime_LNETSNMPLIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_clock_gettime_LNETSNMPLIBS}" != "none required" ; then
+       LNETSNMPLIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+$as_echo "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
+
+
+ fi
+
+
+
+##
+#   MIB-module-specific checks
+##
+
+#   libdevstat
+#        (for diskIO MIB)
+#
+#   Not-Used: HAVE_GETDEVS/HAVE_DEVSTAT_GETDEVS
+#
+echo " $module_list " | $GREP " ucd-snmp/diskio " >/dev/null
+if test $? -eq 0 ; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getdevs" >&5
+$as_echo_n "checking for library containing getdevs... " >&6; }
+if ${netsnmp_cv_func_getdevs_LMIBLIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LMIBLIBS"
+          netsnmp_temp_LIBS="${netsnmp_target_val}  ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getdevs ();
+int
+main ()
+{
+return getdevs ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in devstat ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char getdevs ();
+int
+main ()
+{
+return getdevs ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_getdevs_LMIBLIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_getdevs_LMIBLIBS" >&5
+$as_echo "$netsnmp_cv_func_getdevs_LMIBLIBS" >&6; }
+ if test "${netsnmp_cv_func_getdevs_LMIBLIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_getdevs_LMIBLIBS}" != "none required" ; then
+       LMIBLIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+$as_echo "#define HAVE_GETDEVS 1" >>confdefs.h
+
+
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing devstat_getdevs" >&5
+$as_echo_n "checking for library containing devstat_getdevs... " >&6; }
+if ${netsnmp_cv_func_devstat_getdevs_LMIBLIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LMIBLIBS"
+          netsnmp_temp_LIBS="${netsnmp_target_val}  ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char devstat_getdevs ();
+int
+main ()
+{
+return devstat_getdevs ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in devstat ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char devstat_getdevs ();
+int
+main ()
+{
+return devstat_getdevs ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_devstat_getdevs_LMIBLIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_devstat_getdevs_LMIBLIBS" >&5
+$as_echo "$netsnmp_cv_func_devstat_getdevs_LMIBLIBS" >&6; }
+ if test "${netsnmp_cv_func_devstat_getdevs_LMIBLIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_devstat_getdevs_LMIBLIBS}" != "none required" ; then
+       LMIBLIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+$as_echo "#define HAVE_DEVSTAT_GETDEVS 1" >>confdefs.h
+
+
+ fi
+
+fi
+
+#   libpci
+#        (for if-mib description)
+#
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pci_lookup_name" >&5
+$as_echo_n "checking for library containing pci_lookup_name... " >&6; }
+if ${netsnmp_cv_func_pci_lookup_name_LMIBLIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LMIBLIBS"
+          netsnmp_temp_LIBS="${netsnmp_target_val}  ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pci_lookup_name ();
+int
+main ()
+{
+return pci_lookup_name ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in pci ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pci_lookup_name ();
+int
+main ()
+{
+return pci_lookup_name ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_pci_lookup_name_LMIBLIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_pci_lookup_name_LMIBLIBS" >&5
+$as_echo "$netsnmp_cv_func_pci_lookup_name_LMIBLIBS" >&6; }
+ if test "${netsnmp_cv_func_pci_lookup_name_LMIBLIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_pci_lookup_name_LMIBLIBS}" != "none required" ; then
+       LMIBLIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+$as_echo "#define HAVE_PCI_LOOKUP_NAME 1" >>confdefs.h
+
+
+ fi
+
+
+#   LM-SENSORS-MIB support
+#
+echo " $module_list " | $GREP -i "ucd-snmp/lmsensor" > /dev/null
+if test $? -eq 0 ; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sensors support" >&5
+$as_echo_n "checking for sensors support... " >&6; }
+        case $target_os in
+        solaris*)
+            #  Agent:  HAVE_PICL_H
+            #
+            ac_fn_c_check_header_mongrel "$LINENO" "picl.h" "ac_cv_header_picl_h" "$ac_includes_default"
+if test "x$ac_cv_header_picl_h" = xyes; then :
+  LMIBLIBS="${LMIBLIBS} -lpicl"
+fi
+
+
+            for ac_header in picl.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "picl.h" "ac_cv_header_picl_h" "$ac_includes_default"
+if test "x$ac_cv_header_picl_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PICL_H 1
+_ACEOF
+
+fi
+
+done
+
+            ;;
+        *)
+            #  Not-Used:  HAVE_SENSORS_SENSORS_H
+            #
+            ac_fn_c_check_header_mongrel "$LINENO" "sensors/sensors.h" "ac_cv_header_sensors_sensors_h" "$ac_includes_default"
+if test "x$ac_cv_header_sensors_sensors_h" = xyes; then :
+
+else
+  as_fn_error $? "asked to use lm_sensors but I couldn't find sensors/sensors.h" "$LINENO" 5
+fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sensors_get_detected_chips" >&5
+$as_echo_n "checking for library containing sensors_get_detected_chips... " >&6; }
+if ${netsnmp_cv_func_sensors_get_detected_chips_LMIBLIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LMIBLIBS"
+          netsnmp_temp_LIBS="${netsnmp_target_val}  ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sensors_get_detected_chips ();
+int
+main ()
+{
+return sensors_get_detected_chips ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in sensors ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sensors_get_detected_chips ();
+int
+main ()
+{
+return sensors_get_detected_chips ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_sensors_get_detected_chips_LMIBLIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_sensors_get_detected_chips_LMIBLIBS" >&5
+$as_echo "$netsnmp_cv_func_sensors_get_detected_chips_LMIBLIBS" >&6; }
+ if test "${netsnmp_cv_func_sensors_get_detected_chips_LMIBLIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_sensors_get_detected_chips_LMIBLIBS}" != "none required" ; then
+       LMIBLIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+ else
+    as_fn_error $? "asked to use lm_sensors but I couldn't find -lsensors" "$LINENO" 5
+ fi
+
+            ;;
+        esac
+fi
+
+#
+# libnl (netlink)
+#
+
+if test "x$with_nl" != "xno"; then
+    case $target_os in
+    linux*) # Check for libnl (linux)
+        netsnmp_save_CPPFLAGS="$CPPFLAGS"
+        CPPFLAGS="-I/usr/include/libnl3 $CPPFLAGS"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing nl_connect" >&5
+$as_echo_n "checking for library containing nl_connect... " >&6; }
+if ${netsnmp_cv_func_nl_connect_LIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LIBS"
+          netsnmp_temp_LIBS=" ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char nl_connect ();
+int
+main ()
+{
+return nl_connect ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in nl-3 ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char nl_connect ();
+int
+main ()
+{
+return nl_connect ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_nl_connect_LIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_nl_connect_LIBS" >&5
+$as_echo "$netsnmp_cv_func_nl_connect_LIBS" >&6; }
+ if test "${netsnmp_cv_func_nl_connect_LIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_nl_connect_LIBS}" != "none required" ; then
+       LIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+    for ac_header in netlink/netlink.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "netlink/netlink.h" "ac_cv_header_netlink_netlink_h" "$ac_includes_default"
+if test "x$ac_cv_header_netlink_netlink_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_NETLINK_NETLINK_H 1
+_ACEOF
+
+fi
+
+done
+
+            EXTERNAL_MIBGROUP_INCLUDES="$EXTERNAL_MIBGROUP_INCLUDES -I/usr/include/libnl3"
+ else
+    CPPFLAGS="$netsnmp_save_CPPFLAGS"
+ fi
+
+        if test "x$ac_cv_header_netlink_netlink_h" != xyes; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing nl_connect" >&5
+$as_echo_n "checking for library containing nl_connect... " >&6; }
+if ${netsnmp_cv_func_nl_connect_LMIBLIBS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  netsnmp_func_search_save_LIBS="$LIBS"
+     netsnmp_target_val="$LMIBLIBS"
+          netsnmp_temp_LIBS="${netsnmp_target_val}  ${LIBS}"
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char nl_connect ();
+int
+main ()
+{
+return nl_connect ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result="none required"
+else
+  for netsnmp_cur_lib in nl ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char nl_connect ();
+int
+main ()
+{
+return nl_connect ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  netsnmp_result=-l${netsnmp_cur_lib}
+                   break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+          done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     netsnmp_cv_func_nl_connect_LMIBLIBS="${netsnmp_result}"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_func_nl_connect_LMIBLIBS" >&5
+$as_echo "$netsnmp_cv_func_nl_connect_LMIBLIBS" >&6; }
+ if test "${netsnmp_cv_func_nl_connect_LMIBLIBS}" != "no" ; then
+    if test "${netsnmp_cv_func_nl_connect_LMIBLIBS}" != "none required" ; then
+       LMIBLIBS="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+
+                for ac_header in netlink/netlink.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "netlink/netlink.h" "ac_cv_header_netlink_netlink_h" "$ac_includes_default"
+if test "x$ac_cv_header_netlink_netlink_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_NETLINK_NETLINK_H 1
+_ACEOF
+
+fi
+
+done
+
+
+ fi
+
+        fi
+        if test "x$ac_cv_header_netlink_netlink_h" = xyes; then
+            cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <netlink/socket.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "nl_socket_free" >/dev/null 2>&1; then :
+
+$as_echo "#define HAVE_LIBNL3 1" >>confdefs.h
+
+fi
+rm -f conftest*
+
+        fi
+    ;;
+    esac
+fi
+
+
+
+##
+#   More complex checks:
+##
+
+#   Security related functions
+#
+NONAGENTLIBS=$LIBS	 # save old libraries
+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
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C_Initialize in -lpkcs11" >&5
+$as_echo_n "checking for C_Initialize in -lpkcs11... " >&6; }
+if ${ac_cv_lib_pkcs11_C_Initialize+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpkcs11  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
 char C_Initialize ();
 int
 main ()
 {
-C_Initialize ();
+return C_Initialize ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_pkcs11_C_Initialize=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_pkcs11_C_Initialize=no
+  ac_cv_lib_pkcs11_C_Initialize=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_pkcs11_C_Initialize" >&5
-echo "${ECHO_T}$ac_cv_lib_pkcs11_C_Initialize" >&6
-if test $ac_cv_lib_pkcs11_C_Initialize = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pkcs11_C_Initialize" >&5
+$as_echo "$ac_cv_lib_pkcs11_C_Initialize" >&6; }
+if test "x$ac_cv_lib_pkcs11_C_Initialize" = xyes; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LIBPKCS11 1
-_ACEOF
+$as_echo "#define HAVE_LIBPKCS11 1" >>confdefs.h
 
-              LIBPKCS11="-lpkcs11"
+		LIBPKCS11="-lpkcs11"
 fi
 
     else
-      if test "x$tryrsaref" != "xno"; then
-
-echo "$as_me:$LINENO: checking for RSAPrivateDecrypt in -lrsaref" >&5
-echo $ECHO_N "checking for RSAPrivateDecrypt in -lrsaref... $ECHO_C" >&6
-if test "${ac_cv_lib_rsaref_RSAPrivateDecrypt+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+        if test "x$tryrsaref" != "xno"; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RSAPrivateDecrypt in -lrsaref" >&5
+$as_echo_n "checking for RSAPrivateDecrypt in -lrsaref... " >&6; }
+if ${ac_cv_lib_rsaref_RSAPrivateDecrypt+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lrsaref  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char RSAPrivateDecrypt ();
 int
 main ()
 {
-RSAPrivateDecrypt ();
+return RSAPrivateDecrypt ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_rsaref_RSAPrivateDecrypt=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_rsaref_RSAPrivateDecrypt=no
+  ac_cv_lib_rsaref_RSAPrivateDecrypt=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_rsaref_RSAPrivateDecrypt" >&5
-echo "${ECHO_T}$ac_cv_lib_rsaref_RSAPrivateDecrypt" >&6
-if test $ac_cv_lib_rsaref_RSAPrivateDecrypt = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rsaref_RSAPrivateDecrypt" >&5
+$as_echo "$ac_cv_lib_rsaref_RSAPrivateDecrypt" >&6; }
+if test "x$ac_cv_lib_rsaref_RSAPrivateDecrypt" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBRSAREF 1
 _ACEOF
@@ -28216,72 +22978,43 @@
 
 fi
 
-
-echo "$as_me:$LINENO: checking for RSA_PKCS1_RSAref in -lRSAglue" >&5
-echo $ECHO_N "checking for RSA_PKCS1_RSAref in -lRSAglue... $ECHO_C" >&6
-if test "${ac_cv_lib_RSAglue_RSA_PKCS1_RSAref+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RSA_PKCS1_RSAref in -lRSAglue" >&5
+$as_echo_n "checking for RSA_PKCS1_RSAref in -lRSAglue... " >&6; }
+if ${ac_cv_lib_RSAglue_RSA_PKCS1_RSAref+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lRSAglue  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char RSA_PKCS1_RSAref ();
 int
 main ()
 {
-RSA_PKCS1_RSAref ();
+return RSA_PKCS1_RSAref ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_RSAglue_RSA_PKCS1_RSAref=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_RSAglue_RSA_PKCS1_RSAref=no
+  ac_cv_lib_RSAglue_RSA_PKCS1_RSAref=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_RSAglue_RSA_PKCS1_RSAref" >&5
-echo "${ECHO_T}$ac_cv_lib_RSAglue_RSA_PKCS1_RSAref" >&6
-if test $ac_cv_lib_RSAglue_RSA_PKCS1_RSAref = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_RSAglue_RSA_PKCS1_RSAref" >&5
+$as_echo "$ac_cv_lib_RSAglue_RSA_PKCS1_RSAref" >&6; }
+if test "x$ac_cv_lib_RSAglue_RSA_PKCS1_RSAref" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBRSAGLUE 1
 _ACEOF
@@ -28290,486 +23023,494 @@
 
 fi
 
-      fi
+        fi
 
-      echo "$as_me:$LINENO: checking for EVP_md5 in -lcrypto" >&5
-echo $ECHO_N "checking for EVP_md5 in -lcrypto... $ECHO_C" >&6
-if test "${ac_cv_lib_crypto_EVP_md5+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -leay32" >&5
+$as_echo_n "checking for -leay32... " >&6; }
+        netsnmp_save_LIBS="$LIBS"
+        LIBS="-leay32"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+                #include <openssl/evp.h>
+int
+main ()
+{
+return EVP_md5();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }; ac_cv_lib_eay32_EVP_md5=yes; CRYPTO="eay32"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        LIBS="$netsnmp_save_LIBS"
+
+        if test x$CRYPTO = x; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_md5 in -lcrypto" >&5
+$as_echo_n "checking for EVP_md5 in -lcrypto... " >&6; }
+if ${ac_cv_lib_crypto_EVP_md5+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lcrypto  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char EVP_md5 ();
 int
 main ()
 {
-EVP_md5 ();
+return EVP_md5 ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_crypto_EVP_md5=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_crypto_EVP_md5=no
+  ac_cv_lib_crypto_EVP_md5=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_EVP_md5" >&5
-echo "${ECHO_T}$ac_cv_lib_crypto_EVP_md5" >&6
-if test $ac_cv_lib_crypto_EVP_md5 = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LIBCRYPTO 1
-_ACEOF
-
-              LIBCRYPTO="-lcrypto"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_EVP_md5" >&5
+$as_echo "$ac_cv_lib_crypto_EVP_md5" >&6; }
+if test "x$ac_cv_lib_crypto_EVP_md5" = xyes; then :
+  CRYPTO="crypto"
 fi
 
-      echo "$as_me:$LINENO: checking for AES_cfb128_encrypt in -lcrypto" >&5
-echo $ECHO_N "checking for AES_cfb128_encrypt in -lcrypto... $ECHO_C" >&6
-if test "${ac_cv_lib_crypto_AES_cfb128_encrypt+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+        fi
+
+        if test x$CRYPTO != x; then
+
+$as_echo "#define HAVE_LIBCRYPTO 1" >>confdefs.h
+
+            LIBCRYPTO="-l${CRYPTO}"
+            as_ac_Lib=`$as_echo "ac_cv_lib_${CRYPTO}''_AES_cfb128_encrypt" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AES_cfb128_encrypt in -l${CRYPTO}" >&5
+$as_echo_n "checking for AES_cfb128_encrypt in -l${CRYPTO}... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcrypto  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+LIBS="-l${CRYPTO}  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char AES_cfb128_encrypt ();
 int
 main ()
 {
-AES_cfb128_encrypt ();
+return AES_cfb128_encrypt ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_crypto_AES_cfb128_encrypt=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_crypto_AES_cfb128_encrypt=no
+  eval "$as_ac_Lib=no"
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_AES_cfb128_encrypt" >&5
-echo "${ECHO_T}$ac_cv_lib_crypto_AES_cfb128_encrypt" >&6
-if test $ac_cv_lib_crypto_AES_cfb128_encrypt = yes; then
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_AES_CFB128_ENCRYPT 1
-_ACEOF
+$as_echo "#define HAVE_AES_CFB128_ENCRYPT 1" >>confdefs.h
 
 fi
 
-      echo "$as_me:$LINENO: checking for EVP_MD_CTX_create in -lcrypto" >&5
-echo $ECHO_N "checking for EVP_MD_CTX_create in -lcrypto... $ECHO_C" >&6
-if test "${ac_cv_lib_crypto_EVP_MD_CTX_create+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+            as_ac_Lib=`$as_echo "ac_cv_lib_${CRYPTO}''_EVP_MD_CTX_create" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_MD_CTX_create in -l${CRYPTO}" >&5
+$as_echo_n "checking for EVP_MD_CTX_create in -l${CRYPTO}... " >&6; }
+if eval \${$as_ac_Lib+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcrypto  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+LIBS="-l${CRYPTO}  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char EVP_MD_CTX_create ();
 int
 main ()
 {
-EVP_MD_CTX_create ();
+return EVP_MD_CTX_create ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_crypto_EVP_MD_CTX_create=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$as_ac_Lib=yes"
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_crypto_EVP_MD_CTX_create=no
+  eval "$as_ac_Lib=no"
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_EVP_MD_CTX_create" >&5
-echo "${ECHO_T}$ac_cv_lib_crypto_EVP_MD_CTX_create" >&6
-if test $ac_cv_lib_crypto_EVP_MD_CTX_create = yes; then
+eval ac_res=\$$as_ac_Lib
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_EVP_MD_CTX_CREATE
-_ACEOF
+$as_echo "#define HAVE_EVP_MD_CTX_CREATE /**/" >>confdefs.h
 
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_EVP_MD_CTX_DESTROY
-_ACEOF
+$as_echo "#define HAVE_EVP_MD_CTX_DESTROY /**/" >>confdefs.h
 
 fi
 
-    fi
-elif test "x$askedpkcs" = "xyes"; then
-    echo "$as_me:$LINENO: checking for C_Initialize in -lpkcs11" >&5
-echo $ECHO_N "checking for C_Initialize in -lpkcs11... $ECHO_C" >&6
-if test "${ac_cv_lib_pkcs11_C_Initialize+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+        fi
+        if echo " $transport_result_list " | $GREP "DTLS" > /dev/null; then
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DTLSv1_method in -lssl" >&5
+$as_echo_n "checking for DTLSv1_method in -lssl... " >&6; }
+if ${ac_cv_lib_ssl_DTLSv1_method+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
-LIBS="-lpkcs11  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+LIBS="-lssl -lcrypto $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
+char DTLSv1_method ();
+int
+main ()
+{
+return DTLSv1_method ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ssl_DTLSv1_method=yes
+else
+  ac_cv_lib_ssl_DTLSv1_method=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_DTLSv1_method" >&5
+$as_echo "$ac_cv_lib_ssl_DTLSv1_method" >&6; }
+if test "x$ac_cv_lib_ssl_DTLSv1_method" = xyes; then :
+
+$as_echo "#define HAVE_LIBSSL_DTLS 1" >>confdefs.h
+
+                LIBCRYPTO=" -lssl $LIBCRYPTO"
+else
+  as_fn_error $? "The DTLS based transports require the libssl library from OpenSSL to be available and support DTLS" "$LINENO" 5
+fi
+
+            TLSPROG=yes
+        fi
+        if echo " $transport_result_list " | $GREP "TLS" > /dev/null; then
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_library_init in -lssl" >&5
+$as_echo_n "checking for SSL_library_init in -lssl... " >&6; }
+if ${ac_cv_lib_ssl_SSL_library_init+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lssl -lcrypto $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char SSL_library_init ();
+int
+main ()
+{
+return SSL_library_init ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ssl_SSL_library_init=yes
+else
+  ac_cv_lib_ssl_SSL_library_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_library_init" >&5
+$as_echo "$ac_cv_lib_ssl_SSL_library_init" >&6; }
+if test "x$ac_cv_lib_ssl_SSL_library_init" = xyes; then :
+
+$as_echo "#define HAVE_LIBSSL 1" >>confdefs.h
+
+                LIBCRYPTO=" -lssl $LIBCRYPTO"
+else
+  as_fn_error $? "The DTLS based transports require the libssl library from OpenSSL to be available" "$LINENO" 5
+fi
+
+            TLSPROG=yes
+        fi
+        if echo " $transport_result_list " | $GREP " SSH " > /dev/null; then
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libssh2_session_startup in -lssh2" >&5
+$as_echo_n "checking for libssh2_session_startup in -lssh2... " >&6; }
+if ${ac_cv_lib_ssh2_libssh2_session_startup+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lssh2  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char libssh2_session_startup ();
+int
+main ()
+{
+return libssh2_session_startup ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ssh2_libssh2_session_startup=yes
+else
+  ac_cv_lib_ssh2_libssh2_session_startup=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssh2_libssh2_session_startup" >&5
+$as_echo "$ac_cv_lib_ssh2_libssh2_session_startup" >&6; }
+if test "x$ac_cv_lib_ssh2_libssh2_session_startup" = xyes; then :
+
+$as_echo "#define HAVE_LIBSSH2 1" >>confdefs.h
+
+                LIBCRYPTO=" -lssh2 $LIBCRYPTO"
+else
+  as_fn_error $? "The SSH transport requires the libssh2 library to be available" "$LINENO" 5
+fi
+
+            SSHPROG=yes
+        fi
+    fi
+elif test "x$askedpkcs" = "xyes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C_Initialize in -lpkcs11" >&5
+$as_echo_n "checking for C_Initialize in -lpkcs11... " >&6; }
+if ${ac_cv_lib_pkcs11_C_Initialize+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpkcs11  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
 char C_Initialize ();
 int
 main ()
 {
-C_Initialize ();
+return C_Initialize ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_pkcs11_C_Initialize=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_pkcs11_C_Initialize=no
+  ac_cv_lib_pkcs11_C_Initialize=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_pkcs11_C_Initialize" >&5
-echo "${ECHO_T}$ac_cv_lib_pkcs11_C_Initialize" >&6
-if test $ac_cv_lib_pkcs11_C_Initialize = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_LIBPKCS11 1
-_ACEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pkcs11_C_Initialize" >&5
+$as_echo "$ac_cv_lib_pkcs11_C_Initialize" >&6; }
+if test "x$ac_cv_lib_pkcs11_C_Initialize" = xyes; then :
+  $as_echo "#define HAVE_LIBPKCS11 1" >>confdefs.h
 
-            LIBPKCS11="-lpkcs11"
+        LIBPKCS11="-lpkcs11"
+fi
+
+fi
+if test "x$TLSPROG" = "xyes"; then
+   ac_fn_c_check_decl "$LINENO" "EVP_sha224" "ac_cv_have_decl_EVP_sha224" "#include <openssl/evp.h>
+"
+if test "x$ac_cv_have_decl_EVP_sha224" = xyes; then :
+
+$as_echo "#define HAVE_EVP_SHA224 /**/" >>confdefs.h
+
+else
+  :
+fi
+
+   ac_fn_c_check_decl "$LINENO" "EVP_sha384" "ac_cv_have_decl_EVP_sha384" "#include <openssl/evp.h>
+"
+if test "x$ac_cv_have_decl_EVP_sha384" = xyes; then :
+
+$as_echo "#define HAVE_EVP_SHA384 /**/" >>confdefs.h
+
+else
+  :
 fi
 
 fi
 
-LIBS=$NONAGENTLIBS
+LIBS=$NONAGENTLIBS	 # restore old libraries
+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" -a "x$enable_read_only" != "xyes" ; then
+    NETSNMP_BUILD_TLS_PROG_TRUE=''
+    NETSNMP_BUILD_TLS_PROG_FALSE='#'
+else
+    NETSNMP_BUILD_TLS_PROG_TRUE='#'
+    NETSNMP_BUILD_TLS_PROG_FALSE=''
+fi
+if echo " ${security_mod_list} " | grep ' usm ' ; then
+    if test "x$enable_read_only" != "xyes" ; then
+    	NETSNMP_BUILD_USM_PROG_TRUE=''
+    	NETSNMP_BUILD_USM_PROG_FALSE='#'
+    else
+    	NETSNMP_BUILD_USM_PROG_TRUE='#'
+    	NETSNMP_BUILD_USM_PROG_FALSE=''
+    fi
+else
+    NETSNMP_BUILD_USM_PROG_TRUE='#'
+    NETSNMP_BUILD_USM_PROG_FALSE=''
+fi
+if test "x$enable_read_only" != "xyes" ; then
+    NETSNMP_BUILD_SET_PROG_TRUE=""
+    NETSNMP_BUILD_SET_PROG_FALSE="#"
+else
+    NETSNMP_BUILD_SET_PROG_TRUE="#"
+    NETSNMP_BUILD_SET_PROG_FALSE=""
+fi
 
-# check for tcp wrapper support
+
+
+
+
+
+
+
+
+#
+# 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"
+   $as_echo "#define HAVE_AES_CFB128_ENCRYPT 1" >>confdefs.h
+
+fi
+
+
+
+
+#
+# if we can do any sort of crypto then note it
+#
+if test "x$CRYPTO" != "x" ; then
+
+$as_echo "#define NETSNMP_CAN_DO_CRYPTO 1" >>confdefs.h
+
+fi
+
+#   TCP wrapper support
+#
 _cppflags="${CPPFLAGS}"
 _ldflags="${LDFLAGS}"
-
-
-# Check whether --with-libwrap or --without-libwrap was given.
-if test "${with_libwrap+set}" = set; then
-  withval="$with_libwrap"
-
-  if test "$with_libwrap" != "no"; then
-    if test "$with_libwrap" != "yes"; then
-      CPPFLAGS="${CPPFLAGS} -I$with_libwrap/include"
-      LDFLAGS="${LDFLAGS} -L$with_libwrap/lib"
-    fi
-
-    _libs=${LIBS}
-    if test "${ac_cv_header_tcpd_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for tcpd.h" >&5
-echo $ECHO_N "checking for tcpd.h... $ECHO_C" >&6
-if test "${ac_cv_header_tcpd_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_tcpd_h" >&5
-echo "${ECHO_T}$ac_cv_header_tcpd_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking tcpd.h usability" >&5
-echo $ECHO_N "checking tcpd.h usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <tcpd.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking tcpd.h presence" >&5
-echo $ECHO_N "checking tcpd.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <tcpd.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
+if test "$with_libwrap" != "no"; then
+  if test "$with_libwrap" != "yes"; then
+    CPPFLAGS="${CPPFLAGS} -I$with_libwrap/include"
+    LDFLAGS="${LDFLAGS} -L$with_libwrap/lib"
   fi
+
+  _libs=${LIBS}
+  ac_fn_c_check_header_mongrel "$LINENO" "tcpd.h" "ac_cv_header_tcpd_h" "$ac_includes_default"
+if test "x$ac_cv_header_tcpd_h" = xyes; then :
+
 else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: tcpd.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: tcpd.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: tcpd.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: tcpd.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: tcpd.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: tcpd.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: tcpd.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: tcpd.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: tcpd.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: tcpd.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: tcpd.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: tcpd.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: tcpd.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: tcpd.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: tcpd.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: tcpd.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for tcpd.h" >&5
-echo $ECHO_N "checking for tcpd.h... $ECHO_C" >&6
-if test "${ac_cv_header_tcpd_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_tcpd_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_tcpd_h" >&5
-echo "${ECHO_T}$ac_cv_header_tcpd_h" >&6
-
-fi
-if test $ac_cv_header_tcpd_h = yes; then
-  :
-else
-  { { echo "$as_me:$LINENO: error: Asked to use libwrap but I couldn't find tcpd.h." >&5
-echo "$as_me: error: Asked to use libwrap but I couldn't find tcpd.h." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "Asked to use libwrap but I couldn't find tcpd.h." "$LINENO" 5
 fi
 
 
 
-    LIBS="$LIBS -lwrap"
-	echo "$as_me:$LINENO: checking for TCP wrappers library -lwrap" >&5
-echo $ECHO_N "checking for TCP wrappers library -lwrap... $ECHO_C" >&6
-	# XXX: should check for hosts_ctl
-	cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  LIBS="$LIBS -lwrap"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TCP wrappers library -lwrap" >&5
+$as_echo_n "checking for TCP wrappers library -lwrap... " >&6; }
+  # XXX: should check for hosts_ctl
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
-		     #include <tcpd.h>
-		     int allow_severity = 0;
-		     int deny_severity  = 0;
-
+     #include <tcpd.h>
+     int allow_severity = 0;
+     int deny_severity  = 0;
 int
 main ()
 {
@@ -28778,205 +23519,58 @@
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     $as_echo "#define NETSNMP_USE_LIBWRAP 1" >>confdefs.h
 
-
-	    echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-	    cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_USE_LIBWRAP 1
-_ACEOF
-
-	    test "$with_libwrap" != no -a "$with_libwrap" != yes && _wraplibs="-L$with_libwrap/lib"
-	    _wraplibs="$_wraplibs -lwrap"
+     test "$with_libwrap" != no -a "$with_libwrap" != yes && _wraplibs="-L$with_libwrap/lib"
+     _wraplibs="$_wraplibs -lwrap"
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+     # Linux RedHat 6.1 won't link libwrap without libnsl
+     ac_fn_c_check_func "$LINENO" "yp_get_default_domain" "ac_cv_func_yp_get_default_domain"
+if test "x$ac_cv_func_yp_get_default_domain" = xyes; then :
 
-
-	    echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-	    # Linux RedHat 6.1 won't link libwrap without libnsl
-	    echo "$as_me:$LINENO: checking for yp_get_default_domain" >&5
-echo $ECHO_N "checking for yp_get_default_domain... $ECHO_C" >&6
-if test "${ac_cv_func_yp_get_default_domain+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define yp_get_default_domain to an innocuous variant, in case <limits.h> declares yp_get_default_domain.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define yp_get_default_domain innocuous_yp_get_default_domain
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char yp_get_default_domain (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef yp_get_default_domain
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char yp_get_default_domain ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_yp_get_default_domain) || defined (__stub___yp_get_default_domain)
-choke me
-#else
-char (*f) () = yp_get_default_domain;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != yp_get_default_domain;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_yp_get_default_domain=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_yp_get_default_domain=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_yp_get_default_domain" >&5
-echo "${ECHO_T}$ac_cv_func_yp_get_default_domain" >&6
-if test $ac_cv_func_yp_get_default_domain = yes; then
-  :
-else
-
-echo "$as_me:$LINENO: checking for yp_get_default_domain in -lnsl" >&5
-echo $ECHO_N "checking for yp_get_default_domain in -lnsl... $ECHO_C" >&6
-if test "${ac_cv_lib_nsl_yp_get_default_domain+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for yp_get_default_domain in -lnsl" >&5
+$as_echo_n "checking for yp_get_default_domain in -lnsl... " >&6; }
+if ${ac_cv_lib_nsl_yp_get_default_domain+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lnsl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
 #ifdef __cplusplus
 extern "C"
 #endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
 char yp_get_default_domain ();
 int
 main ()
 {
-yp_get_default_domain ();
+return yp_get_default_domain ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_nsl_yp_get_default_domain=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_nsl_yp_get_default_domain=no
+  ac_cv_lib_nsl_yp_get_default_domain=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_yp_get_default_domain" >&5
-echo "${ECHO_T}$ac_cv_lib_nsl_yp_get_default_domain" >&6
-if test $ac_cv_lib_nsl_yp_get_default_domain = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_yp_get_default_domain" >&5
+$as_echo "$ac_cv_lib_nsl_yp_get_default_domain" >&6; }
+if test "x$ac_cv_lib_nsl_yp_get_default_domain" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBNSL 1
 _ACEOF
@@ -28987,19 +23581,14 @@
 
 fi
 
-	    echo "$as_me:$LINENO: checking for TCP wrappers library -lwrap linked with -lnsl" >&5
-echo $ECHO_N "checking for TCP wrappers library -lwrap linked with -lnsl... $ECHO_C" >&6
-	    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TCP wrappers library -lwrap linked with -lnsl" >&5
+$as_echo_n "checking for TCP wrappers library -lwrap linked with -lnsl... " >&6; }
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
-		         #include <tcpd.h>
-		         int allow_severity = 0;
-	                 int deny_severity  = 0;
-
+	#include <tcpd.h>
+	int allow_severity = 0;
+	int deny_severity  = 0;
 int
 main ()
 {
@@ -29008,2673 +23597,362 @@
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-			cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_USE_LIBWRAP 1
-_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	$as_echo "#define NETSNMP_USE_LIBWRAP 1" >>confdefs.h
 
-			test "$with_libwrap" != no -a "$with_libwrap" != yes && _wraplibs="-L$with_libwrap/lib"
-			_wraplibs="$_wraplibs -lwrap -lnsl"
+	test "$with_libwrap" != no -a "$with_libwrap" != yes && _wraplibs="-L$with_libwrap/lib"
+	_wraplibs="$_wraplibs -lwrap -lnsl"
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-			{ { echo "$as_me:$LINENO: error: Asked to use libwrap but I couldn't find it." >&5
-echo "$as_me: error: Asked to use libwrap but I couldn't find it." >&2;}
-   { (exit 1); exit 1; }; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	as_fn_error $? "Asked to use libwrap but I couldn't find it." "$LINENO" 5
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-    LAGENTLIBS="$_wraplibs"
-    CPPFLAGS=${_cppflags}
-    LDFLAGS=${_ldflags}
-    LIBS=${_libs}
-  fi
-
-fi;
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LAGENTLIBS="$_wraplibs"
+  CPPFLAGS=${_cppflags}
+  LDFLAGS=${_ldflags}
+  LIBS=${_libs}
+fi
 
 
-
-for ac_header in rpm/rpmlib.h rpm/header.h
+##
+#   mysql
+##
+if test "x$with_mysql" = "xyes" ; then
+  for ac_prog in mysql_config
 do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MYSQLCONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
+  case $MYSQLCONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_MYSQLCONFIG="$MYSQLCONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_MYSQLCONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
   fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+done
+  done
+IFS=$as_save_IFS
 
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
+  ;;
 esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+MYSQLCONFIG=$ac_cv_path_MYSQLCONFIG
+if test -n "$MYSQLCONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MYSQLCONFIG" >&5
+$as_echo "$MYSQLCONFIG" >&6; }
 else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+
+  test -n "$MYSQLCONFIG" && break
 done
 
+  test -x "$MYSQLCONFIG" \
+	|| as_fn_error $? "Could not find mysql_config and was specifically asked to use MySQL support" "$LINENO" 5
+  MYSQL_LIBS=`$MYSQLCONFIG --libs`
+  MYSQL_INCLUDES=`$MYSQLCONFIG --include`
+  _libs="${LIBS}"
+  _cppflags="${CPPFLAGS}"
+  LIBS="${LIBS} ${MYSQL_LIBS}"
+  CPPFLAGS="${CPPFLAGS} ${MYSQL_INCLUDES}"
+  ac_fn_c_check_header_mongrel "$LINENO" "mysql.h" "ac_cv_header_mysql_h" "$ac_includes_default"
+if test "x$ac_cv_header_mysql_h" = xyes; then :
 
-if test "${ac_cv_header_rpm_rpmlib_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for rpm/rpmlib.h" >&5
-echo $ECHO_N "checking for rpm/rpmlib.h... $ECHO_C" >&6
-if test "${ac_cv_header_rpm_rpmlib_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_rpm_rpmlib_h" >&5
-echo "${ECHO_T}$ac_cv_header_rpm_rpmlib_h" >&6
 else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking rpm/rpmlib.h usability" >&5
-echo $ECHO_N "checking rpm/rpmlib.h usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <rpm/rpmlib.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking rpm/rpmlib.h presence" >&5
-echo $ECHO_N "checking rpm/rpmlib.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <rpm/rpmlib.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: rpm/rpmlib.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: rpm/rpmlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: rpm/rpmlib.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: rpm/rpmlib.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: rpm/rpmlib.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: rpm/rpmlib.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: rpm/rpmlib.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: rpm/rpmlib.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: rpm/rpmlib.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: rpm/rpmlib.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: rpm/rpmlib.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: rpm/rpmlib.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: rpm/rpmlib.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: rpm/rpmlib.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: rpm/rpmlib.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: rpm/rpmlib.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for rpm/rpmlib.h" >&5
-echo $ECHO_N "checking for rpm/rpmlib.h... $ECHO_C" >&6
-if test "${ac_cv_header_rpm_rpmlib_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_rpm_rpmlib_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_rpm_rpmlib_h" >&5
-echo "${ECHO_T}$ac_cv_header_rpm_rpmlib_h" >&6
-
-fi
-if test $ac_cv_header_rpm_rpmlib_h = yes; then
-  rpmlib_h=yes
-else
-  rpmlib_h=no
+  as_fn_error $? "Could not find mysql.h and was specifically asked to use MySQL support" "$LINENO" 5
 fi
 
 
-if test "${ac_cv_header_rpm_header_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for rpm/header.h" >&5
-echo $ECHO_N "checking for rpm/header.h... $ECHO_C" >&6
-if test "${ac_cv_header_rpm_header_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_rpm_header_h" >&5
-echo "${ECHO_T}$ac_cv_header_rpm_header_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking rpm/header.h usability" >&5
-echo $ECHO_N "checking rpm/header.h usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <rpm/header.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking rpm/header.h presence" >&5
-echo $ECHO_N "checking rpm/header.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <rpm/header.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: rpm/header.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: rpm/header.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: rpm/header.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: rpm/header.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: rpm/header.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: rpm/header.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: rpm/header.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: rpm/header.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: rpm/header.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: rpm/header.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: rpm/header.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: rpm/header.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: rpm/header.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: rpm/header.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: rpm/header.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: rpm/header.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for rpm/header.h" >&5
-echo $ECHO_N "checking for rpm/header.h... $ECHO_C" >&6
-if test "${ac_cv_header_rpm_header_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_rpm_header_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_rpm_header_h" >&5
-echo "${ECHO_T}$ac_cv_header_rpm_header_h" >&6
-
-fi
-if test $ac_cv_header_rpm_header_h = yes; then
-  rpmheader_h=yes
-else
-  rpmheader_h=no
-fi
-
-
-
-if test "x$rpmheader_h" = "xno" -o "x$rpmlib_h" = "xno" ; then
-  if test "x$with_rpm" = "xyes" ; then
-    { { echo "$as_me:$LINENO: error: Could not find either the RPM header files needed and was specifically asked to use RPM support" >&5
-echo "$as_me: error: Could not find either the RPM header files needed and was specifically asked to use RPM support" >&2;}
-   { (exit 1); exit 1; }; }
-  else
-    with_rpm=no
-  fi
-fi
-
-#
-# rpm libraries only needed for the host resources mib software
-# installed tables (on linux in particular)
-#
-if test "x$with_rpm" != "xno" && \
-        echo " $module_list " | grep " host/hr_swinst " > /dev/null; then
-  # ARG.  RPM is a real pain.
-  # FWIW librpm.la, librpmio.la, and libpopt.la have correct dependencies.
-  _rpmlibs=""
-
-  # rpm-4.0.x needs rpmio.
-  echo "$as_me:$LINENO: checking for rpmGetPath in -lrpmio" >&5
-echo $ECHO_N "checking for rpmGetPath in -lrpmio... $ECHO_C" >&6
-if test "${ac_cv_lib_rpmio_rpmGetPath+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lrpmio $_rpmlibs $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether MY_INIT() works" >&5
+$as_echo_n "checking whether MY_INIT() works... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char rpmGetPath ();
+    #include <my_global.h>
+        #include <my_sys.h>
 int
 main ()
 {
-rpmGetPath ();
+MY_INIT("my_init_test")
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_rpmio_rpmGetPath=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
-ac_cv_lib_rpmio_rpmGetPath=no
+$as_echo "#define HAVE_BROKEN_LIBMYSQLCLIENT 1" >>confdefs.h
+
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_rpmio_rpmGetPath" >&5
-echo "${ECHO_T}$ac_cv_lib_rpmio_rpmGetPath" >&6
-if test $ac_cv_lib_rpmio_rpmGetPath = yes; then
-  _rpmlibs="-lrpmio $_rpmlibs"
-fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  CPPFLAGS="${_cppflags}"
+  LIBS="${_libs}"
 
-
-  # now check for rpm using the appropriate libraries.
-  echo "$as_me:$LINENO: checking for rpmGetFilesystemList in -lrpm" >&5
-echo $ECHO_N "checking for rpmGetFilesystemList in -lrpm... $ECHO_C" >&6
-if test "${ac_cv_lib_rpm_rpmGetFilesystemList+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lrpm  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char rpmGetFilesystemList ();
-int
-main ()
-{
-rpmGetFilesystemList ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_rpm_rpmGetFilesystemList=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_rpm_rpmGetFilesystemList=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_rpm_rpmGetFilesystemList" >&5
-echo "${ECHO_T}$ac_cv_lib_rpm_rpmGetFilesystemList" >&6
-if test $ac_cv_lib_rpm_rpmGetFilesystemList = yes; then
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LIBRPM 1
-_ACEOF
-
-    LMIBLIBS="-lrpm $_rpmlibs $LMIBLIBS"
-    CFLAGS="$CFLAGS -I/usr/include/rpm"
+  cat >> configure-summary << EOF
+  MYSQL Trap Logging:         enabled
+EOF
 
 else
 
-    # rpm-4.0.3 librpmdb actually contains what we need.
-    echo "$as_me:$LINENO: checking for rpmdbOpen in -lrpmdb" >&5
-echo $ECHO_N "checking for rpmdbOpen in -lrpmdb... $ECHO_C" >&6
-if test "${ac_cv_lib_rpmdb_rpmdbOpen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lrpmdb -lrpm $_rpmlibs $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char rpmdbOpen ();
-int
-main ()
-{
-rpmdbOpen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_rpmdb_rpmdbOpen=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_rpmdb_rpmdbOpen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_rpmdb_rpmdbOpen" >&5
-echo "${ECHO_T}$ac_cv_lib_rpmdb_rpmdbOpen" >&6
-if test $ac_cv_lib_rpmdb_rpmdbOpen = yes; then
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_LIBRPM 1
-_ACEOF
-
-      LMIBLIBS="-lrpmdb -lrpm $_rpmlibs $LMIBLIBS"
-      CFLAGS="$CFLAGS -I/usr/include/rpm"
+  cat >> configure-summary << EOF
+  MYSQL Trap Logging:         unavailable
+EOF
 
 fi
 
 
-fi
 
 
-  # rpm 4.6 has incompatible API, turn on the legacy one
-  echo "$as_me:$LINENO: checking whether headerGetEntry is declared" >&5
-echo $ECHO_N "checking whether headerGetEntry is declared... $ECHO_C" >&6
-if test "${ac_cv_have_decl_headerGetEntry+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <rpm/rpmlib.h>
-
-
-int
-main ()
-{
-#ifndef headerGetEntry
-  char *p = (char *) headerGetEntry;
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_have_decl_headerGetEntry=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_have_decl_headerGetEntry=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_have_decl_headerGetEntry" >&5
-echo "${ECHO_T}$ac_cv_have_decl_headerGetEntry" >&6
-if test $ac_cv_have_decl_headerGetEntry = yes; then
-  :
-else
-
-cat >>confdefs.h <<\_ACEOF
-#define _RPM_4_4_COMPAT
-_ACEOF
-
-fi
-
-fi
-
-# libkvm
-echo "$as_me:$LINENO: checking for kvm_read in -lkvm" >&5
-echo $ECHO_N "checking for kvm_read in -lkvm... $ECHO_C" >&6
-if test "${ac_cv_lib_kvm_kvm_read+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lkvm  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char kvm_read ();
-int
-main ()
-{
-kvm_read ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_kvm_kvm_read=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_kvm_kvm_read=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_kvm_kvm_read" >&5
-echo "${ECHO_T}$ac_cv_lib_kvm_kvm_read" >&6
-if test $ac_cv_lib_kvm_kvm_read = yes; then
-  _libkvm="-lkvm"
-fi
-
-echo "$as_me:$LINENO: checking for kvm_openfiles" >&5
-echo $ECHO_N "checking for kvm_openfiles... $ECHO_C" >&6
-if test "${ac_cv_func_kvm_openfiles+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define kvm_openfiles to an innocuous variant, in case <limits.h> declares kvm_openfiles.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define kvm_openfiles innocuous_kvm_openfiles
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char kvm_openfiles (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef kvm_openfiles
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char kvm_openfiles ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_kvm_openfiles) || defined (__stub___kvm_openfiles)
-choke me
-#else
-char (*f) () = kvm_openfiles;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != kvm_openfiles;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_kvm_openfiles=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_kvm_openfiles=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_kvm_openfiles" >&5
-echo "${ECHO_T}$ac_cv_func_kvm_openfiles" >&6
-if test $ac_cv_func_kvm_openfiles = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_KVM_OPENFILES 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: checking for kvm_openfiles in -lkvm" >&5
-echo $ECHO_N "checking for kvm_openfiles in -lkvm... $ECHO_C" >&6
-if test "${ac_cv_lib_kvm_kvm_openfiles+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lkvm  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char kvm_openfiles ();
-int
-main ()
-{
-kvm_openfiles ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_kvm_kvm_openfiles=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_kvm_kvm_openfiles=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_kvm_kvm_openfiles" >&5
-echo "${ECHO_T}$ac_cv_lib_kvm_kvm_openfiles" >&6
-if test $ac_cv_lib_kvm_kvm_openfiles = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_KVM_OPENFILES 1
-_ACEOF
-
-	_libkvm="-lkvm"
-fi
-
-fi
-
-echo "$as_me:$LINENO: checking for kvm_getprocs" >&5
-echo $ECHO_N "checking for kvm_getprocs... $ECHO_C" >&6
-if test "${ac_cv_func_kvm_getprocs+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define kvm_getprocs to an innocuous variant, in case <limits.h> declares kvm_getprocs.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define kvm_getprocs innocuous_kvm_getprocs
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char kvm_getprocs (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef kvm_getprocs
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char kvm_getprocs ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_kvm_getprocs) || defined (__stub___kvm_getprocs)
-choke me
-#else
-char (*f) () = kvm_getprocs;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != kvm_getprocs;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_kvm_getprocs=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_kvm_getprocs=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_kvm_getprocs" >&5
-echo "${ECHO_T}$ac_cv_func_kvm_getprocs" >&6
-if test $ac_cv_func_kvm_getprocs = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_KVM_GETPROCS 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: checking for kvm_getprocs in -lkvm" >&5
-echo $ECHO_N "checking for kvm_getprocs in -lkvm... $ECHO_C" >&6
-if test "${ac_cv_lib_kvm_kvm_getprocs+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lkvm  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char kvm_getprocs ();
-int
-main ()
-{
-kvm_getprocs ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_kvm_kvm_getprocs=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_kvm_kvm_getprocs=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_kvm_kvm_getprocs" >&5
-echo "${ECHO_T}$ac_cv_lib_kvm_kvm_getprocs" >&6
-if test $ac_cv_lib_kvm_kvm_getprocs = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_KVM_GETPROCS 1
-_ACEOF
-
-	_libkvm="-lkvm"
-fi
-
-fi
-
-echo "$as_me:$LINENO: checking for kvm_getswapinfo" >&5
-echo $ECHO_N "checking for kvm_getswapinfo... $ECHO_C" >&6
-if test "${ac_cv_func_kvm_getswapinfo+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define kvm_getswapinfo to an innocuous variant, in case <limits.h> declares kvm_getswapinfo.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define kvm_getswapinfo innocuous_kvm_getswapinfo
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char kvm_getswapinfo (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef kvm_getswapinfo
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char kvm_getswapinfo ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_kvm_getswapinfo) || defined (__stub___kvm_getswapinfo)
-choke me
-#else
-char (*f) () = kvm_getswapinfo;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != kvm_getswapinfo;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_kvm_getswapinfo=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_kvm_getswapinfo=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_kvm_getswapinfo" >&5
-echo "${ECHO_T}$ac_cv_func_kvm_getswapinfo" >&6
-if test $ac_cv_func_kvm_getswapinfo = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_KVM_GETSWAPINFO 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: checking for kvm_getswapinfo in -lkvm" >&5
-echo $ECHO_N "checking for kvm_getswapinfo in -lkvm... $ECHO_C" >&6
-if test "${ac_cv_lib_kvm_kvm_getswapinfo+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lkvm  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char kvm_getswapinfo ();
-int
-main ()
-{
-kvm_getswapinfo ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_kvm_kvm_getswapinfo=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_kvm_kvm_getswapinfo=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_kvm_kvm_getswapinfo" >&5
-echo "${ECHO_T}$ac_cv_lib_kvm_kvm_getswapinfo" >&6
-if test $ac_cv_lib_kvm_kvm_getswapinfo = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_KVM_GETSWAPINFO 1
-_ACEOF
-
-	_libkvm="-lkvm"
-fi
-
-fi
-
-if test "x${_libkvm}" != "x"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LIBKVM 1
-_ACEOF
-
-	LAGENTLIBS="$LAGENTLIBS ${_libkvm}"
-fi
-
-# DYNAMIC MODULE SUPPORT
-echo "$as_me:$LINENO: checking for dlopen" >&5
-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
-if test "${ac_cv_func_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define dlopen innocuous_dlopen
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char dlopen (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef dlopen
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char dlopen ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_dlopen) || defined (__stub___dlopen)
-choke me
-#else
-char (*f) () = dlopen;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != dlopen;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_dlopen=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-echo "${ECHO_T}$ac_cv_func_dlopen" >&6
-if test $ac_cv_func_dlopen = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DLOPEN 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char dlopen ();
-int
-main ()
-{
-dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_dl_dlopen=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dl_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-if test $ac_cv_lib_dl_dlopen = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_DLOPEN 1
-_ACEOF
-
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LIBDL 1
-_ACEOF
-
-	LMIBLIBS="${LMIBLIBS} -ldl"
-fi
-
-fi
-
+##
+#   Non-library checks
+##
 
 # nlist
-
-
-
 for ac_func in nlist nlist64 knlist
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
 
 fi
 done
 
 
-# whether we need -ldevstat for diskio MIB
-echo " $module_list " | grep " ucd-snmp/diskio " >/dev/null
-if test $? -eq 0 ; then
-	echo "$as_me:$LINENO: checking for getdevs" >&5
-echo $ECHO_N "checking for getdevs... $ECHO_C" >&6
-if test "${ac_cv_func_getdevs+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define getdevs to an innocuous variant, in case <limits.h> declares getdevs.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define getdevs innocuous_getdevs
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char getdevs (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef getdevs
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char getdevs ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_getdevs) || defined (__stub___getdevs)
-choke me
-#else
-char (*f) () = getdevs;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != getdevs;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_getdevs=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_getdevs=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_getdevs" >&5
-echo "${ECHO_T}$ac_cv_func_getdevs" >&6
-if test $ac_cv_func_getdevs = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_GETDEVS 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: checking for getdevs in -ldevstat" >&5
-echo $ECHO_N "checking for getdevs in -ldevstat... $ECHO_C" >&6
-if test "${ac_cv_lib_devstat_getdevs+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldevstat  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char getdevs ();
-int
-main ()
-{
-getdevs ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_devstat_getdevs=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_devstat_getdevs=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_devstat_getdevs" >&5
-echo "${ECHO_T}$ac_cv_lib_devstat_getdevs" >&6
-if test $ac_cv_lib_devstat_getdevs = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_GETDEVS 1
-_ACEOF
-
-		LMIBLIBS="${LMIBLIBS} -ldevstat"
-fi
-
-fi
-
-	echo "$as_me:$LINENO: checking for getdevs" >&5
-echo $ECHO_N "checking for getdevs... $ECHO_C" >&6
-if test "${ac_cv_func_getdevs+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define getdevs to an innocuous variant, in case <limits.h> declares getdevs.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define getdevs innocuous_getdevs
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char getdevs (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef getdevs
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char getdevs ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_getdevs) || defined (__stub___getdevs)
-choke me
-#else
-char (*f) () = getdevs;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != getdevs;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_getdevs=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_getdevs=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_getdevs" >&5
-echo "${ECHO_T}$ac_cv_func_getdevs" >&6
-if test $ac_cv_func_getdevs = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_DEVSTAT_GETDEVS 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: checking for devstat_getdevs in -ldevstat" >&5
-echo $ECHO_N "checking for devstat_getdevs in -ldevstat... $ECHO_C" >&6
-if test "${ac_cv_lib_devstat_devstat_getdevs+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldevstat  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char devstat_getdevs ();
-int
-main ()
-{
-devstat_getdevs ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_devstat_devstat_getdevs=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_devstat_devstat_getdevs=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_devstat_devstat_getdevs" >&5
-echo "${ECHO_T}$ac_cv_lib_devstat_devstat_getdevs" >&6
-if test $ac_cv_lib_devstat_devstat_getdevs = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_DEVSTAT_GETDEVS 1
-_ACEOF
-
-		LMIBLIBS="${LMIBLIBS} -ldevstat"
-fi
-
-fi
-
-fi
-
-# LM-SENSORS-MIB support
-echo " $module_list " | grep " ucd-snmp/lmSensors " > /dev/null
-if test $? -eq 0 ; then
-        echo "$as_me:$LINENO: checking for sensors support" >&5
-echo $ECHO_N "checking for sensors support... $ECHO_C" >&6
-        case $target_os in
-          solaris*)
-            if test "${ac_cv_header_picl_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for picl.h" >&5
-echo $ECHO_N "checking for picl.h... $ECHO_C" >&6
-if test "${ac_cv_header_picl_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_picl_h" >&5
-echo "${ECHO_T}$ac_cv_header_picl_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking picl.h usability" >&5
-echo $ECHO_N "checking picl.h usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <picl.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking picl.h presence" >&5
-echo $ECHO_N "checking picl.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <picl.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: picl.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: picl.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: picl.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: picl.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: picl.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: picl.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: picl.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: picl.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: picl.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: picl.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: picl.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: picl.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: picl.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: picl.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: picl.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: picl.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for picl.h" >&5
-echo $ECHO_N "checking for picl.h... $ECHO_C" >&6
-if test "${ac_cv_header_picl_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_picl_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_picl_h" >&5
-echo "${ECHO_T}$ac_cv_header_picl_h" >&6
-
-fi
-if test $ac_cv_header_picl_h = yes; then
-  LMIBLIBS="${LMIBLIBS} -lpicl"
-fi
-
-
-
-for ac_header in picl.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-            ;;
-        *)
-            if test "${ac_cv_header_sensors_sensors_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for sensors/sensors.h" >&5
-echo $ECHO_N "checking for sensors/sensors.h... $ECHO_C" >&6
-if test "${ac_cv_header_sensors_sensors_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_sensors_sensors_h" >&5
-echo "${ECHO_T}$ac_cv_header_sensors_sensors_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking sensors/sensors.h usability" >&5
-echo $ECHO_N "checking sensors/sensors.h usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <sensors/sensors.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking sensors/sensors.h presence" >&5
-echo $ECHO_N "checking sensors/sensors.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sensors/sensors.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: sensors/sensors.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: sensors/sensors.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sensors/sensors.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: sensors/sensors.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: sensors/sensors.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: sensors/sensors.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sensors/sensors.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: sensors/sensors.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sensors/sensors.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: sensors/sensors.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sensors/sensors.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: sensors/sensors.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sensors/sensors.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: sensors/sensors.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: sensors/sensors.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: sensors/sensors.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for sensors/sensors.h" >&5
-echo $ECHO_N "checking for sensors/sensors.h... $ECHO_C" >&6
-if test "${ac_cv_header_sensors_sensors_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_sensors_sensors_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_sensors_sensors_h" >&5
-echo "${ECHO_T}$ac_cv_header_sensors_sensors_h" >&6
-
-fi
-if test $ac_cv_header_sensors_sensors_h = yes; then
-  :
-else
-  { { echo "$as_me:$LINENO: error: asked to use lm_sensors but I couldn't find sensors/sensors.h" >&5
-echo "$as_me: error: asked to use lm_sensors but I couldn't find sensors/sensors.h" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-
-            echo "$as_me:$LINENO: checking for sensors_get_detected_chips in -lsensors" >&5
-echo $ECHO_N "checking for sensors_get_detected_chips in -lsensors... $ECHO_C" >&6
-if test "${ac_cv_lib_sensors_sensors_get_detected_chips+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsensors  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char sensors_get_detected_chips ();
-int
-main ()
-{
-sensors_get_detected_chips ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_sensors_sensors_get_detected_chips=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_sensors_sensors_get_detected_chips=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_sensors_sensors_get_detected_chips" >&5
-echo "${ECHO_T}$ac_cv_lib_sensors_sensors_get_detected_chips" >&6
-if test $ac_cv_lib_sensors_sensors_get_detected_chips = yes; then
-
-		   LMIBLIBS="${LMIBLIBS} -lsensors" ;
-
-else
-  { { echo "$as_me:$LINENO: error: asked to use lm_sensors but I couldn't find -lsensors" >&5
-echo "$as_me: error: asked to use lm_sensors but I couldn't find -lsensors" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-            ;;
-        esac
-fi
-
-######################################################################
-# PERL SUPPORT
-######################################################################
-
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
 #
-# test to see if we can attempt to build embedded Perl so far
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+# -*- autoconf -*-
+#########################################
+##
+#   Perl & Python support
+##
+#########################################
+
+##
+#   Check whether Net-SNMP configuration will support Perl
+##
+
+#   Inputs:
+#       install_perl:   whether or not to install the Perl modules
+#                           yes/no/try   (i.e. 'maybe' - the default)
+#       embed_perl:     whether or not to embed Perl support within the agent
+#                           yes/no/try   (i.e. 'maybe' - the default)
+#
+#       ac_cv_path_PERLPROG:    Path to perl binary
+
+
+#       Embedded Perl requires Perl modules, and the perl binary
 #
 if test "x$embed_perl" = "xtry" ; then
-  if test "x$install_perl" = "xno" ; then
-    install_perl="try"
-  fi
-  if test "x$ac_cv_path_PERLPROG" = "x" -o "x$ac_cv_path_PERLPROG" = "xno" ; then
-    install_perl="no"
-    embed_perl="no"
-  fi
+    if test "x$install_perl" = "xno" ; then
+        install_perl="try"
+    fi
+    if test "x$ac_cv_path_PERLPROG" = "x" -o "x$ac_cv_path_PERLPROG" = "xno" ; then
+        install_perl="no"
+        embed_perl="no"
+    fi
 fi
 
-
+#       Perl modules require the perl binary
 #
-# Embedded Perl specific stuff
-#
-
-# test perl prog
 if test "x$install_perl" != "xno" ; then
     myperl=$ac_cv_path_PERLPROG
     if test $myperl = "no" ; then
-      if test "x$install_perl" = "xtry" ; then
-        install_perl="no"
-      else
-        { { echo "$as_me:$LINENO: error: --enable-embedded-perl requested but no perl executable found" >&5
-echo "$as_me: error: --enable-embedded-perl requested but no perl executable found" >&2;}
-   { (exit 1); exit 1; }; }
-      fi
+        if test "x$install_perl" = "xtry" ; then
+            install_perl="no"
+        else
+            as_fn_error $? "--enable-embedded-perl requested but no perl executable found" "$LINENO" 5
+        fi
     fi
 fi
 
-# test for shared libraries support
+#       Perl modules require shared libraries
+#
 if test "x$install_perl" != "xno" ; then
-    # embedded Perl requires shared libraries
     if test "x$enable_shared" != "xyes"; then
-      if test "x$install_perl" = "xtry" ; then
-        install_perl="no"
-      else
-        { { echo "$as_me:$LINENO: error: Perl support requires --enable-shared" >&5
-echo "$as_me: error: Perl support requires --enable-shared" >&2;}
-   { (exit 1); exit 1; }; }
-      fi
+        if test "x$install_perl" = "xtry" ; then
+            install_perl="no"
+        else
+            as_fn_error $? "Perl support requires --enable-shared" "$LINENO" 5
+        fi
     fi
 fi
 
+#       Perl modules can only be installed from within the source tree
+#
 if test "x$install_perl" != "xno" ; then
-  echo "$as_me:$LINENO: checking if we are in the source tree so we can install Perl modules" >&5
-echo $ECHO_N "checking if we are in the source tree so we can install Perl modules... $ECHO_C" >&6
-  if test "x$srcdir" = "x." -o -d perl/agent/default_store ; then
-    echo "$as_me:$LINENO: result: Yes" >&5
-echo "${ECHO_T}Yes" >&6
-  else
-    if test "x$install_perl" = "xtry" ; then
-      install_perl="no"
-      echo "$as_me:$LINENO: result: No" >&5
-echo "${ECHO_T}No" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we are in the source tree so we can install Perl modules" >&5
+$as_echo_n "checking if we are in the source tree so we can install Perl modules... " >&6; }
+    if test "x$srcdir" = "x." -o -d perl/agent/default_store ; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: Yes" >&5
+$as_echo "Yes" >&6; }
     else
-      { { echo "$as_me:$LINENO: error: Perl modules can not be built outside the source directory" >&5
-echo "$as_me: error: Perl modules can not be built outside the source directory" >&2;}
-   { (exit 1); exit 1; }; }
+        if test "x$install_perl" = "xtry" ; then
+            install_perl="no"
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: No" >&5
+$as_echo "No" >&6; }
+        else
+            as_fn_error $? "Perl modules can not be built outside the source directory" "$LINENO" 5
+        fi
     fi
-  fi
 fi
 
-# check the Perl compiler name
+
+#   The rest of the Perl-related checks aren't relevant
+#       if we're not using the Perl modules
+#
 if test "x$install_perl" != "xno" ; then
-    #
-    # Perl cc checks
+
+
+##
+#   Check compiler compatability
+##
+
+    #       What compiler was used to build the perl binary?
     #
     if test "xenable_perl_cc_checks" != "xno" ; then
-      echo "$as_me:$LINENO: checking for Perl cc" >&5
-echo $ECHO_N "checking for Perl cc... $ECHO_C" >&6
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Perl cc" >&5
+$as_echo_n "checking for Perl cc... " >&6; }
 
-      PERLCC=`$myperl -V:cc | $myperl -n -e 'print if (s/^\s*cc=.([-=\w\s\/]+).;\s*/$1/);'`
+        PERLCC=`$myperl -V:cc | $myperl -n -e 'print if (s/^\s*cc=.([-=\w\s\/]+).;\s*/$1/);'`
 
-      if test "x$PERLCC" != "x" ; then
-        echo "$as_me:$LINENO: result: $PERLCC" >&5
-echo "${ECHO_T}$PERLCC" >&6
-      else
-        if test "x$install_perl" = "xtry" ; then
-          install_perl="no"
+        if test "x$PERLCC" != "x" ; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERLCC" >&5
+$as_echo "$PERLCC" >&6; }
         else
-          { { echo "$as_me:$LINENO: error: Could not determine the compiler that was used to build $myperl. Either set the environment variable PERLPROG to a different perl binary or use --without-perl-modules to build without Perl." >&5
-echo "$as_me: error: Could not determine the compiler that was used to build $myperl. Either set the environment variable PERLPROG to a different perl binary or use --without-perl-modules to build without Perl." >&2;}
-   { (exit 1); exit 1; }; }
+            if test "x$install_perl" = "xtry" ; then
+                install_perl="no"
+            else
+                as_fn_error $? "Could not determine the compiler that was used to build $myperl. Either set the environment variable PERLPROG to a different perl binary or use --without-perl-modules to build without Perl." "$LINENO" 5
+            fi
         fi
-      fi
-fi
+    fi
 
-# check the Perl compiler compatibility
-if test "x$install_perl" != "xno" ; then
-      echo "$as_me:$LINENO: checking whether $PERLCC is a GNU C compiler" >&5
-echo $ECHO_N "checking whether $PERLCC is a GNU C compiler... $ECHO_C" >&6
-      OLDCC=$CC
-      CC="$PERLCC"
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    #       Was GCC used to build the perl binary?
+    #
+    if test "x$install_perl" != "xno" ; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PERLCC is a GNU C compiler" >&5
+$as_echo_n "checking whether $PERLCC is a GNU C compiler... " >&6; }
+        OLDCC=$CC
+        CC="$PERLCC"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
+
 int
 main ()
 {
@@ -31687,489 +23965,209 @@
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_compile "$LINENO"; then :
   perlcc_is_gnu=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-perlcc_is_gnu=no
+  perlcc_is_gnu=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      echo "$as_me:$LINENO: result: $perlcc_is_gnu" >&5
-echo "${ECHO_T}$perlcc_is_gnu" >&6
-      CC=$OLDCC
-      if test "x$GCC" = "xyes" -a "x$perlcc_is_gnu" = "xno" ; then
-      	if test "x$install_perl" = "xtry" ; then
-      	  install_perl="no"
-      	else
-      	  { { echo "$as_me:$LINENO: error: This build is using a GNU C compiler ($CC) while Perl has been compiled with a non-GNU (or non-working) compiler ($PERLCC). This likely won't work for building with Perl support. Either specify a different compiler (--with-cc=PATH), disable this check (--disable-perl-cc-checks) or build without Perl (--without-perl-modules)." >&5
-echo "$as_me: error: This build is using a GNU C compiler ($CC) while Perl has been compiled with a non-GNU (or non-working) compiler ($PERLCC). This likely won't work for building with Perl support. Either specify a different compiler (--with-cc=PATH), disable this check (--disable-perl-cc-checks) or build without Perl (--without-perl-modules)." >&2;}
-   { (exit 1); exit 1; }; }
-      	fi
-      fi
-fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $perlcc_is_gnu" >&5
+$as_echo "$perlcc_is_gnu" >&6; }
+        CC=$OLDCC
 
-# check if they're both gnu
-if test "x$install_perl" != "xno" ; then
-      if test "x$GCC" != "xyes" -a "x$perlcc_is_gnu" = "xyes" ; then
-      	if test "x$install_perl" = "xtry" ; then
-      	  install_perl="no"
-      	else
-          { { echo "$as_me:$LINENO: error: This build is using a non-GNU C compiler ($CC) while Perl has been compiled with a GNU compiler ($PERLCC). This likely won't work for building with Perl support. Either specify a different compiler (--with-cc=PATH), disable this check (--disable-perl-cc-checks) or build without Perl (--without-perl-modules)." >&5
-echo "$as_me: error: This build is using a non-GNU C compiler ($CC) while Perl has been compiled with a GNU compiler ($PERLCC). This likely won't work for building with Perl support. Either specify a different compiler (--with-cc=PATH), disable this check (--disable-perl-cc-checks) or build without Perl (--without-perl-modules)." >&2;}
-   { (exit 1); exit 1; }; }
-      	fi
-      fi
-fi
+        #       Check compatability:  Gnu Net-SNMP vs Non-Gnu perl
+        #
+        if test "x$GCC" = "xyes" -a "x$perlcc_is_gnu" = "xno" ; then
+            if test "x$install_perl" = "xtry" ; then
+      	        install_perl="no"
+      	    else
+      	        as_fn_error $? "This build is using a GNU C compiler ($CC) while Perl has been compiled with a non-GNU (or non-working) compiler ($PERLCC). This likely won't work for building with Perl support. Either specify a different compiler (--with-cc=PATH), disable this check (--disable-perl-cc-checks) or build without Perl (--without-perl-modules)." "$LINENO" 5
+      	    fi
+        fi
+    fi
 
-# we have enough support for installing the modules at least.
-if test "x$install_perl" = "xtry" ; then
-  install_perl="yes"
-else
-  if test "x$install_perl" = "xno" ; then
-    install_perl="no"
-    embed_perl="no"
-  fi
-fi
+    #       Check compatability:  Non-Gnu Net-SNMP vs Gnu perl
+    #
+    if test "x$install_perl" != "xno" ; then
+        if test "x$GCC" != "xyes" -a "x$perlcc_is_gnu" = "xyes" ; then
+      	    if test "x$install_perl" = "xtry" ; then
+      	        install_perl="no"
+      	    else
+                as_fn_error $? "This build is using a non-GNU C compiler ($CC) while Perl has been compiled with a GNU compiler ($PERLCC). This likely won't work for building with Perl support. Either specify a different compiler (--with-cc=PATH), disable this check (--disable-perl-cc-checks) or build without Perl (--without-perl-modules)." "$LINENO" 5
+      	    fi
+        fi
+    fi
 
-####################
-# on to embedding...
+    #       Are we clear to proceed?
+    #
+    if test "x$install_perl" = "xtry" ; then
+        install_perl="yes"
+    else
+        if test "x$install_perl" = "xno" ; then
+            install_perl="no"
+            embed_perl="no"
+        fi
+    fi
 
-# check the compiler flags for illegal tokens
+
+##
+#   Determine compilation environment needed for embedded Perl
+##
+
+#       System-specific requirements
+#
 case $target_os in
     solaris*)
       if test "x$embed_perl" != "xno" ; then
+          #   Check for LARGEFILE support               (Solaris)
           #
-          # Perl cc checks
-          #
-          echo "$as_me:$LINENO: checking for problematic Perl cc flags on Suns" >&5
-echo $ECHO_N "checking for problematic Perl cc flags on Suns... $ECHO_C" >&6
-          if $myperl -V:ccflags | grep LARGEFILE > /dev/null ; then
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for problematic Perl cc flags on Suns" >&5
+$as_echo_n "checking for problematic Perl cc flags on Suns... " >&6; }
+          if $myperl -V:ccflags | $GREP LARGEFILE > /dev/null ; then
             if test "x$embed_perl" = "xtry" ; then
               embed_perl="no"
             else
-              { { echo "$as_me:$LINENO: error: Perl was compiled with LARGEFILE support which will break Net-SNMP. Either set the environment variable PERLPROG to a different perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether." >&5
-echo "$as_me: error: Perl was compiled with LARGEFILE support which will break Net-SNMP. Either set the environment variable PERLPROG to a different perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether." >&2;}
-   { (exit 1); exit 1; }; }
+              as_fn_error $? "Perl was compiled with LARGEFILE support which will break Net-SNMP. Either set the environment variable PERLPROG to a different perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether." "$LINENO" 5
             fi
           else
-            echo "$as_me:$LINENO: result: none known" >&5
-echo "${ECHO_T}none known" >&6
+            { $as_echo "$as_me:${as_lineno-$LINENO}: result: none known" >&5
+$as_echo "none known" >&6; }
           fi
       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
+            { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Embedded perl defaulting to off" >&5
+$as_echo "$as_me: WARNING: Embedded perl defaulting to off" >&2;}
+            embed_perl="no"
+        fi
+    ;;
+
     *)
     ;;
 esac
 
-
-# check the cflags
+#       Compiler flags
+#
 if test "x$embed_perl" != "xno" ; then
-    echo "$as_me:$LINENO: checking for Perl CFLAGS" >&5
-echo $ECHO_N "checking for Perl CFLAGS... $ECHO_C" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Perl CFLAGS" >&5
+$as_echo_n "checking for Perl CFLAGS... " >&6; }
     perlcflags=`$myperl -MExtUtils::Embed -e ccopts`
     if test "x$perlcflags" != "x" ; then
-      echo "$as_me:$LINENO: result: $perlcflags" >&5
-echo "${ECHO_T}$perlcflags" >&6
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $perlcflags" >&5
+$as_echo "$perlcflags" >&6; }
       CFLAGS="$CFLAGS $perlcflags"
     else
       if test "x$embed_perl" = "xtry" ; then
         embed_perl="no"
       else
-        { { echo "$as_me:$LINENO: error: Could not determine the C compiler flags that were used to build $myperl. Either set the environment variable PERLPROG to a different Perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether." >&5
-echo "$as_me: error: Could not determine the C compiler flags that were used to build $myperl. Either set the environment variable PERLPROG to a different Perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether." >&2;}
-   { (exit 1); exit 1; }; }
+        as_fn_error $? "Could not determine the C compiler flags that were used to build $myperl. Either set the environment variable PERLPROG to a different Perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether." "$LINENO" 5
       fi
     fi
 fi
 
-# check the ldflags
+#       Linker flags
+#
 if test "x$embed_perl" != "xno" ; then
-    echo "$as_me:$LINENO: checking for Perl LDFLAGS" >&5
-echo $ECHO_N "checking for Perl LDFLAGS... $ECHO_C" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Perl LDFLAGS" >&5
+$as_echo_n "checking for Perl LDFLAGS... " >&6; }
     netsnmp_perlldopts=`$myperl -MExtUtils::Embed -e ldopts`
     if test "x$netsnmp_perlldopts" != "x" ; then
-      echo "$as_me:$LINENO: result: $netsnmp_perlldopts" >&5
-echo "${ECHO_T}$netsnmp_perlldopts" >&6
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_perlldopts" >&5
+$as_echo "$netsnmp_perlldopts" >&6; }
     else
       if test "x$embed_perl" = "xtry" ; then
         embed_perl="no"
       else
-        { { echo "$as_me:$LINENO: error: Could not determine the linker options that were used to build $myperl. Either set the environment variable PERLPROG to a different Perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether." >&5
-echo "$as_me: error: Could not determine the linker options that were used to build $myperl. Either set the environment variable PERLPROG to a different Perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether." >&2;}
-   { (exit 1); exit 1; }; }
+        as_fn_error $? "Could not determine the linker options that were used to build $myperl. Either set the environment variable PERLPROG to a different Perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether." "$LINENO" 5
       fi
     fi
-    if test "x$enable_as_needed" = "xyes" ; then
-      # link *libraries* with libperl
+    if test "x$enable_as_needed" != "xno" ; then
+      #   Just-in-time linking will embed the Perl library within
+      #       the Net-SNMP library (rather than the agent application)
+      #
       PERLLDOPTS_FOR_LIBS="$netsnmp_perlldopts"
-      # Perl ccdlflags (RPATH to libperl, hopefully)
-      echo "$as_me:$LINENO: checking for Perl CCDLFLAGS" >&5
-echo $ECHO_N "checking for Perl CCDLFLAGS... $ECHO_C" >&6
+      #   Perl ccdlflags (RPATH to libperl, hopefully)
+      #
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Perl CCDLFLAGS" >&5
+$as_echo_n "checking for Perl CCDLFLAGS... " >&6; }
 
       netsnmp_perlccdlflags=`$myperl -V:ccdlflags | $myperl -n -e 'print $1 '"if (/^\s*ccdlflags='([^']+)';/);"`
 
-      echo "$as_me:$LINENO: result: $netsnmp_perlccdlflags" >&5
-echo "${ECHO_T}$netsnmp_perlccdlflags" >&6
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_perlccdlflags" >&5
+$as_echo "$netsnmp_perlccdlflags" >&6; }
       PERLLDOPTS_FOR_APPS="$netsnmp_perlccdlflags"
     else
+      #   Otherwise embed the Perl library within the application
+      #
+      PERLLDOPTS_FOR_LIBS="$netsnmp_perlldopts"
       # link *applications* against libperl
       PERLLDOPTS_FOR_APPS="$netsnmp_perlldopts"
     fi
 fi
 
-# check needed functions
+#       'Perl_eval_pv' function (and equivalents)
+#
 if test "x$embed_perl" != "xno" ; then
+    #   Three possible versions of this routine:
+    #       eval_pv                                     (to 5.003_97d)
+    #       perl_eval_pv                                (5.004/5.005)
+    #       Perl_eval_pv                                (from 5.6ff)
+    #
     OLDLIBS="$LIBS"
     LIBS="$LIBS $netsnmp_perlldopts"
-
-    # newer perl vs older perl call functions
-
-for ac_func in eval_pv
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+    for ac_func in eval_pv
+do :
+  ac_fn_c_check_func "$LINENO" "eval_pv" "ac_cv_func_eval_pv"
+if test "x$ac_cv_func_eval_pv" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define HAVE_EVAL_PV 1
 _ACEOF
 
 fi
 done
 
+    ac_fn_c_check_func "$LINENO" "perl_eval_pv" "ac_cv_func_perl_eval_pv"
+if test "x$ac_cv_func_perl_eval_pv" = xyes; then :
 
-    # sigh: this has a CAPITAL P in Perl, which ends up being the same
-    # autoconf define as the lower case so we have to treat them *BOTH*
-    # specially.  Wonderful.
-    echo "$as_me:$LINENO: checking for perl_eval_pv" >&5
-echo $ECHO_N "checking for perl_eval_pv... $ECHO_C" >&6
-if test "${ac_cv_func_perl_eval_pv+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define perl_eval_pv to an innocuous variant, in case <limits.h> declares perl_eval_pv.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define perl_eval_pv innocuous_perl_eval_pv
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char perl_eval_pv (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef perl_eval_pv
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char perl_eval_pv ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_perl_eval_pv) || defined (__stub___perl_eval_pv)
-choke me
-#else
-char (*f) () = perl_eval_pv;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != perl_eval_pv;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_perl_eval_pv=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_perl_eval_pv=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_perl_eval_pv" >&5
-echo "${ECHO_T}$ac_cv_func_perl_eval_pv" >&6
-if test $ac_cv_func_perl_eval_pv = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_PERL_EVAL_PV_LC 1
-_ACEOF
+$as_echo "#define HAVE_PERL_EVAL_PV_LC 1" >>confdefs.h
 
 fi
 
-    echo "$as_me:$LINENO: checking for Perl_eval_pv" >&5
-echo $ECHO_N "checking for Perl_eval_pv... $ECHO_C" >&6
-if test "${ac_cv_func_Perl_eval_pv+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define Perl_eval_pv to an innocuous variant, in case <limits.h> declares Perl_eval_pv.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define Perl_eval_pv innocuous_Perl_eval_pv
+    ac_fn_c_check_func "$LINENO" "Perl_eval_pv" "ac_cv_func_Perl_eval_pv"
+if test "x$ac_cv_func_Perl_eval_pv" = xyes; then :
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char Perl_eval_pv (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef Perl_eval_pv
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char Perl_eval_pv ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_Perl_eval_pv) || defined (__stub___Perl_eval_pv)
-choke me
-#else
-char (*f) () = Perl_eval_pv;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != Perl_eval_pv;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_Perl_eval_pv=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_Perl_eval_pv=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_Perl_eval_pv" >&5
-echo "${ECHO_T}$ac_cv_func_Perl_eval_pv" >&6
-if test $ac_cv_func_Perl_eval_pv = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_PERL_EVAL_PV_UC 1
-_ACEOF
+$as_echo "#define HAVE_PERL_EVAL_PV_UC 1" >>confdefs.h
 
 fi
 
-
     LIBS="$OLDLIBS"
-
+    #
+    #   Note that autoconf flattens case when defining tokens,
+    #   so we need to explicitly distinguish between the latter two.
 
     if test "x$ac_cv_func_perl_eval_pv" != "xyes" -a "x$ac_cv_func_Perl_eval_pv" != "xyes" -a "x$ac_cv_func_eval_pv" != "xyes" ; then
       if test "x$embed_perl" = "xtry" ; then
         embed_perl="no"
       else
-        { { echo "$as_me:$LINENO: error: Could not find the eval_pv, perl_eval_pv or Perl_eval_pv functions needed for embedded Perl support. Either set the environment variable PERLPROG to a different perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether." >&5
-echo "$as_me: error: Could not find the eval_pv, perl_eval_pv or Perl_eval_pv functions needed for embedded Perl support. Either set the environment variable PERLPROG to a different perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether." >&2;}
-   { (exit 1); exit 1; }; }
+        as_fn_error $? "Could not find the eval_pv, perl_eval_pv or Perl_eval_pv functions needed for embedded Perl support. Either set the environment variable PERLPROG to a different perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether." "$LINENO" 5
       fi
     else
-      cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_EMBEDDED_PERL 1
-_ACEOF
+      #   Activate Embedded Perl
+      #
+
+$as_echo "#define NETSNMP_EMBEDDED_PERL 1" >>confdefs.h
 
       OTHERAGENTLIBOBJS="snmp_perl.o"
       OTHERAGENTLIBLOBJS="snmp_perl.lo"
+      OTHERAGENTLIBLFTS="snmp_perl.ft"
 
       EMBEDPERLINSTALL="embedperlinstall"
       EMBEDPERLUNINSTALL="embedperluninstall"
-      # yay, we got here!
       embed_perl="yes"
     fi
 else
@@ -32180,60 +24178,70 @@
 fi
 
 
+##
+#   Report and configure results
+##
 
 
 
-# embedded Perl results
-echo "$as_me:$LINENO: checking for potential embedded Perl support" >&5
-echo $ECHO_N "checking for potential embedded Perl support... $ECHO_C" >&6
+
+
+
+#       Results of Embedded Perl checks
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for potential embedded Perl support" >&5
+$as_echo_n "checking for potential embedded Perl support... " >&6; }
 if test "x$embed_perl" != "xyes" ; then
 
   cat >> configure-summary << EOF
   Embedded Perl support:      disabled
 EOF
 
-  echo "$as_me:$LINENO: result: disabled" >&5
-echo "${ECHO_T}disabled" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
 else
 
   cat >> configure-summary << EOF
   Embedded Perl support:      enabled
 EOF
 
-  echo "$as_me:$LINENO: result: enabled" >&5
-echo "${ECHO_T}enabled" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: enabled" >&5
+$as_echo "enabled" >&6; }
 fi
 
-# install Perl module results
+#       Results of Perl Module checks
+#
 PERLTARGS=""
 PERLINSTALLTARGS=""
 PERLUNINSTALLTARGS=""
-echo "$as_me:$LINENO: checking if we can install the Perl modules" >&5
-echo $ECHO_N "checking if we can install the Perl modules... $ECHO_C" >&6
+PERLFEATURES=""
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can install the Perl modules" >&5
+$as_echo_n "checking if we can install the Perl modules... " >&6; }
 if test "x$install_perl" = "xyes" ; then
     PERLTARGS="perlmodules"
     PERLINSTALLTARGS="perlinstall"
     PERLUNINSTALLTARGS="perluninstall"
+    PERLFEATURES="perlfeatures"
     if test "x$embed_perl" = "xyes" ; then
 
   cat >> configure-summary << EOF
   SNMP Perl modules:          building -- embeddable
 EOF
 
-      echo "$as_me:$LINENO: result: yes -- and embeddable" >&5
-echo "${ECHO_T}yes -- and embeddable" >&6
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes -- and embeddable" >&5
+$as_echo "yes -- and embeddable" >&6; }
     else
 
   cat >> configure-summary << EOF
   SNMP Perl modules:          building -- not embeddable
 EOF
 
-      echo "$as_me:$LINENO: result: yes -- not embeddable" >&5
-echo "${ECHO_T}yes -- not embeddable" >&6
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes -- not embeddable" >&5
+$as_echo "yes -- not embeddable" >&6; }
     fi
 else
-    echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
   cat >> configure-summary << EOF
   SNMP Perl modules:          disabled
@@ -32247,39 +24255,45 @@
 
 
 
-# reset libs
+#       Reset LIBS to pre-libwrap value   (???)
+#
 AGENTLIBS=$LIBS
 LIBS=$NONAGENTLIBS
 
 
 
-# python support
+##
+#   Python checks
+##
+
 PYTHONTARGS=""
 PYTHONINSTALLTARGS=""
 PYTHONUNINSTALLTARGS=""
 PYTHONCLEANTARGS=""
-echo "$as_me:$LINENO: checking if we should install the python bindings" >&5
-echo $ECHO_N "checking if we should install the python bindings... $ECHO_C" >&6
+PYTHONFEATURES=""
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we should install the python bindings" >&5
+$as_echo_n "checking if we should install the python bindings... " >&6; }
 if test "x$install_python" = "xyes" ; then
     PYTHONTARGS="pythonmodules"
     PYTHONINSTALLTARGS="pythoninstall"
     PYTHONUNINSTALLTARGS="pythonuninstall"
     PYTHONCLEANTARGS="pythonclean"
+    PYTHONFEATURES="pythonfeatures"
 
   cat >> configure-summary << EOF
   SNMP Python modules:        building for $PYTHONPROG
 EOF
 
-    echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 else
 
   cat >> configure-summary << EOF
   SNMP Python modules:        disabled
 EOF
 
-    echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -32289,5179 +24303,28 @@
 
 
 
-# Checks for header files.
-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
 
-int
-main ()
-{
+# -*- autoconf -*-
+#########################################
+##
+# Miscellaneous checks
+##
+#########################################
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_header_stdc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+##
+#   Package characteristics
+#       Authentication/Encryption support
+##
 
-ac_cv_header_stdc=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ctype.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      exit(2);
-  exit (0);
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_header_stdc=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
-
-fi
-
-
-
-
-
-
-ac_header_dirent=no
-for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
-  as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
-echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <$ac_hdr>
-
-int
-main ()
-{
-if ((DIR *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
-_ACEOF
-
-ac_header_dirent=$ac_hdr; break
-fi
-
-done
-# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
-if test $ac_header_dirent = dirent.h; then
-  echo "$as_me:$LINENO: checking for library containing opendir" >&5
-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
-if test "${ac_cv_search_opendir+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-ac_cv_search_opendir=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char opendir ();
-int
-main ()
-{
-opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_search_opendir="none required"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test "$ac_cv_search_opendir" = no; then
-  for ac_lib in dir; do
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char opendir ();
-int
-main ()
-{
-opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_search_opendir="-l$ac_lib"
-break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-  done
-fi
-LIBS=$ac_func_search_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
-echo "${ECHO_T}$ac_cv_search_opendir" >&6
-if test "$ac_cv_search_opendir" != no; then
-  test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
-
-fi
-
-else
-  echo "$as_me:$LINENO: checking for library containing opendir" >&5
-echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6
-if test "${ac_cv_search_opendir+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-ac_cv_search_opendir=no
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char opendir ();
-int
-main ()
-{
-opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_search_opendir="none required"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test "$ac_cv_search_opendir" = no; then
-  for ac_lib in x; do
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char opendir ();
-int
-main ()
-{
-opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_search_opendir="-l$ac_lib"
-break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-  done
-fi
-LIBS=$ac_func_search_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
-echo "${ECHO_T}$ac_cv_search_opendir" >&6
-if test "$ac_cv_search_opendir" != no; then
-  test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS"
-
-fi
-
-fi
-
-echo "$as_me:$LINENO: checking for sys/wait.h that is POSIX.1 compatible" >&5
-echo $ECHO_N "checking for sys/wait.h that is POSIX.1 compatible... $ECHO_C" >&6
-if test "${ac_cv_header_sys_wait_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/wait.h>
-#ifndef WEXITSTATUS
-# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
-#endif
-#ifndef WIFEXITED
-# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-#endif
-
-int
-main ()
-{
-  int s;
-  wait (&s);
-  s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_header_sys_wait_h=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_sys_wait_h=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_sys_wait_h" >&5
-echo "${ECHO_T}$ac_cv_header_sys_wait_h" >&6
-if test $ac_cv_header_sys_wait_h = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SYS_WAIT_H 1
-_ACEOF
-
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_header in stdarg.h string.h fcntl.h limits.h sys/file.h sys/ioctl.h syslog.h unistd.h sys/dmap.h machine/pte.h xti.h sys/sockio.h sys/socket.h sys/param.h sys/uio.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# at least Solaris 9 needs sys/socket.h to compile sys/socketvar.h
-
-for ac_header in sys/socketvar.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# at least OpenBSD 3.4 needs sys/param.h (MAXPATHLEN) to compile sys/swap.h
-
-for ac_header in sys/swap.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-
-#if HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_header in sys/timeout.h sys/un.h fstab.h sys/fs.h mtab.h ufs/fs.h sys/fixpoint.h machine/param.h sys/vm.h vm/vm.h sys/vmmeter.h sys/vmparam.h sys/vmmac.h sys/vmsystm.h sys/time.h sys/times.h sys/statvfs.h sys/vfs.h sys/mnttab.h sys/select.h mntent.h sys/mntent.h kstat.h utsname.h sys/utsname.h sys/cdefs.h getopt.h locale.h pthread.h sys/loadavg.h regex.h linux/tasks.h pwd.h grp.h utmpx.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# Network headers
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_header in arpa/inet.h netinet/in_systm.h netinet/in.h netinet/ip_var.h netinet/tcp.h netinet/tcpip.h netinet/udp.h net/if.h netinet/in_var.h netinet/ip.h netinet/ip_icmp.h net/if_arp.h net/if_mib.h net/if_var.h netinet/if_ether.h netinet/tcp_timer.h netinet/tcp_var.h netinet/udp_var.h netinet/icmp_var.h netdb.h net/route.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_SYS_TIMEOUT_H
-#include <sys/timeout.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#if HAVE_SYS_SOCKETVAR_H
-#include <sys/socketvar.h>
-#endif
-#if HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#if HAVE_NETINET_IN_SYSTM_H
-#include <netinet/in_systm.h>
-#endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_H
-#include <netinet/ip.h>
-#endif
-#if HAVE_NET_IF_H
-#include <net/if.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-#if HAVE_NETINET_IP_ICMP_H
-#include <netinet/ip_icmp.h>
-#endif
-#if HAVE_NETINET_TCP_H
-#include <netinet/tcp.h>
-#endif
-#if HAVE_NETINET_UDP_H
-#include <netinet/udp.h>
-#endif
-#if HAVE_NETINET_TCP_TIMER_H
-#include <netinet/tcp_timer.h>
-#endif
-
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# UFS headers
-
-
-
-
-for ac_header in ufs/ufs/dinode.h ufs/ufs/quota.h ufs/ufs/inode.h ufs/ffs/fs.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_UFS_UFS_DINODE_H
-#include <ufs/ufs/dinode.h>
-#endif
-#if HAVE_UFS_UFS_QUOTA_H
-#include <ufs/ufs/quota.h>
-#endif
-
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# FreeBSD required headers
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_header in malloc.h net/if_dl.h sys/sysctl.h stdlib.h net/if_types.h sys/queue.h osreldate.h machine/types.h sys/user.h sys/proc.h sys/mbuf.h sys/mount.h sys/dkstat.h sys/conf.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# Linux
-
-
-
-
-
-
-
-
-for ac_header in netinet/tcp_fsm.h sys/protosw.h nlist.h ioctls.h asm/page.h asm/types.h netipx/ipx.h pci/pci.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# Solaris
-
-for ac_header in inet/mib2.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# NetBSD required headers
-
-
-
-
-
-
-for ac_header in kvm.h sys/pool.h uvm/uvm_param.h uvm/uvm_extern.h vm/vm_param.h vm/vm_extern.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# BSDi2 headers
-
-for ac_header in vm/swap_pager.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#if HAVE_VM_VM_H
-#include <vm/vm.h>
-#endif
-
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# linux ethtool
-# requires special hacks to get around various problems on older linux kernels.
-# major ugh....
-
-for ac_header in linux/ethtool.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#include <linux/types.h>
-typedef __u64 u64;         /* hack, so we may include kernel's ethtool.h */
-typedef __u32 u32;         /* ditto */
-typedef __u16 u16;         /* ditto */
-typedef __u8 u8;           /* ditto */
-
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# BSDi3 headers
-
-for ac_header in sys/stat.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# BSDi3/IRIX headers
-# at least IRIX 6.5 needs _KMEMUSER and sys/types.h (mprot_t) to compile
-#   sys/vnode.h
-
-for ac_header in sys/vnode.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#define _KMEMUSER 1
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# at least IRIX 6.5 needs sys/sema.h (mrlock_t) to compile sys/hashing.h
-
-for ac_header in sys/sema.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_header in sys/hashing.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-
-#if HAVE_SYS_SEMA_H
-#include <sys/sema.h>
-#endif
-
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# more IRIX headers
-
-
-
-
-for ac_header in sys/tcpipstats.h sys/sysmp.h sys/systeminfo.h sys/sysget.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# AIX system configuration
-
-for ac_header in sys/systemcfg.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# from smux stuff
-
-
-
-for ac_header in err.h sys/filio.h sgtty.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# AIX needs this for statfs func
-
-for ac_header in sys/statfs.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# for HostRes (HP-UX at least)
-
-
-
-
-
-for ac_header in sys/dkio.h sys/diskio.h sys/pstat.h linux/hdreg.h pkglocs.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# for HostRes (Solaris 2.x at least)
-
-for ac_header in pkginfo.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- echo "$as_me:$LINENO: checking for pkginfo in -ladm" >&5
-echo $ECHO_N "checking for pkginfo in -ladm... $ECHO_C" >&6
-if test "${ac_cv_lib_adm_pkginfo+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ladm  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char pkginfo ();
-int
-main ()
-{
-pkginfo ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_adm_pkginfo=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_adm_pkginfo=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_adm_pkginfo" >&5
-echo "${ECHO_T}$ac_cv_lib_adm_pkginfo" >&6
-if test $ac_cv_lib_adm_pkginfo = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_PKGINFO 1
-_ACEOF
-
-    LMIBLIBS="${LMIBLIBS} -ladm"
-fi
-
-fi
-
-done
-
-
-case $target_os in
-    aix*) # AIX perfstat library, needed for CPU/memory statistics
-
-for ac_header in libperfstat.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- echo "$as_me:$LINENO: checking for perfstat_cpu_total in -lperfstat" >&5
-echo $ECHO_N "checking for perfstat_cpu_total in -lperfstat... $ECHO_C" >&6
-if test "${ac_cv_lib_perfstat_perfstat_cpu_total+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lperfstat  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char perfstat_cpu_total ();
-int
-main ()
-{
-perfstat_cpu_total ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_perfstat_perfstat_cpu_total=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_perfstat_perfstat_cpu_total=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_perfstat_perfstat_cpu_total" >&5
-echo "${ECHO_T}$ac_cv_lib_perfstat_perfstat_cpu_total" >&6
-if test $ac_cv_lib_perfstat_perfstat_cpu_total = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_PERFSTAT 1
-_ACEOF
-
-            LMIBLIBS="${LMIBLIBS} -lperfstat"
-fi
-
-else
-  { { echo "$as_me:$LINENO: error:
-
-*** To monitor CPU/memory values in AIX you need to install
-*** libperfstat which can be found in bos.perf
-" >&5
-echo "$as_me: error:
-
-*** To monitor CPU/memory values in AIX you need to install
-*** libperfstat which can be found in bos.perf
-" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-done
-
-        ;;
-    hpux*) # HP-UX agent needs open_mib
-        echo "$as_me:$LINENO: checking for open_mib in -lnm" >&5
-echo $ECHO_N "checking for open_mib in -lnm... $ECHO_C" >&6
-if test "${ac_cv_lib_nm_open_mib+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnm  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char open_mib ();
-int
-main ()
-{
-open_mib ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_nm_open_mib=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_nm_open_mib=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_nm_open_mib" >&5
-echo "${ECHO_T}$ac_cv_lib_nm_open_mib" >&6
-if test $ac_cv_lib_nm_open_mib = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_LIBNM 1
-_ACEOF
-
-            LMIBLIBS="${LMIBLIBS} -lnm"
-fi
-
-        ;;
-    *)
-        ;;
-esac
-# WIN32
-# (mingw32 must link winsock explicitly)
-
-for ac_header in winsock.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-        AGENTLIBS="${AGENTLIBS} -liphlpapi"
-        case $target_os in
-                mingw*)
-                        LIBS="${LIBS} -lregex -lws2_32"
-                        AGENTLIBS="${AGENTLIBS} -lregex -lws2_32"
-                        ;;
-                *)
-                        ;;
-        esac
-
-fi
-
-done
-
-
-for ac_header in io.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# SCO
-
-for ac_header in sys/stream.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# KAME
-
-
-
-
-
-
-
-
-
-for ac_header in netinet/ip6.h netinet6/in6_var.h netinet6/in6_pcb.h netinet6/ip6_var.h netinet6/tcp6.h netinet6/tcp6_fsm.h netinet6/nd6.h netinet6/tcp6_timer.h netinet6/tcp6_var.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP6_H
-#include <netinet/ip6.h>
-#endif
-#if HAVE_NET_IF_H
-#include <net/if.h>
-#endif
-#if HAVE_NET_ROUTE_H
-#include <net/route.h>
-#endif
-
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# DYNAMIC MODULE SUPPORT
-
-for ac_header in dlfcn.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-# table_array helper support
-
-for ac_header in search.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-# RPM subdirectory path (sigh)
-if test "x$with_rpm" != "xno" && \
-        echo " $module_list " | grep " host/hr_swinst " > /dev/null; then
-
-for ac_header in rpm/rpmts.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <rpm/rpmlib.h>
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-fi
-
-# OpenBSD 2.6 needs netinet/in.h before netinet/in_pcb.h
-echo "$as_me:$LINENO: checking for netinet/in_pcb.h" >&5
-echo $ECHO_N "checking for netinet/in_pcb.h... $ECHO_C" >&6
-if test "${cv_have_netinet_in_pcb_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#include <netinet/in.h>
-#include <netinet/in_pcb.h>
-
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  cv_have_netinet_in_pcb_h=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  cv_have_netinet_in_pcb_h=no
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-
-echo "$as_me:$LINENO: result: $cv_have_netinet_in_pcb_h" >&5
-echo "${ECHO_T}$cv_have_netinet_in_pcb_h" >&6
-if test $cv_have_netinet_in_pcb_h = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_NETINET_IN_PCB_H 1
-_ACEOF
-
-fi
-
-# NetBSD needs machine/types.h before sys/disklabel.h
-echo "$as_me:$LINENO: checking for sys/disklabel.h" >&5
-echo $ECHO_N "checking for sys/disklabel.h... $ECHO_C" >&6
-if test "${cv_have_sys_disklabel_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#include <machine/types.h>
-#include <sys/disklabel.h>
-
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  cv_have_sys_disklabel_h=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  cv_have_sys_disklabel_h=no
-fi
-rm -f conftest.err conftest.$ac_ext
-fi
-
-echo "$as_me:$LINENO: result: $cv_have_sys_disklabel_h" >&5
-echo "${ECHO_T}$cv_have_sys_disklabel_h" >&6
-if test $cv_have_sys_disklabel_h = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_SYS_DISKLABEL_H 1
-_ACEOF
-
-fi
-
-# OpenSSL
-
-
-
-
-
-for ac_header in openssl/hmac.h openssl/evp.h openssl/aes.h openssl/des.h openssl/dh.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_header in security/cryptoki.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ---------------------------------------------------- ##
-## Report this to net-snmp-coders@lists.sourceforge.net ##
-## ---------------------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-# Printing
-# Extract the first word of "lpstat", so it can be a program name with args.
-set dummy lpstat; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_LPSTAT_PATH+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $LPSTAT_PATH in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_LPSTAT_PATH="$LPSTAT_PATH" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_LPSTAT_PATH="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  ;;
-esac
-fi
-LPSTAT_PATH=$ac_cv_path_LPSTAT_PATH
-
-if test -n "$LPSTAT_PATH"; then
-  echo "$as_me:$LINENO: result: $LPSTAT_PATH" >&5
-echo "${ECHO_T}$LPSTAT_PATH" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-if test x$LPSTAT_PATH != x; then
-    cat >>confdefs.h <<_ACEOF
-#define LPSTAT_PATH "$LPSTAT_PATH"
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LPSTAT 1
-_ACEOF
-
-fi
-
-for ac_func in cgetnext
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-if test -r /etc/printcap; then
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_PRINTCAP 1
-_ACEOF
-
-fi
-
-echo "$as_me:$LINENO: checking for authentication support" >&5
-echo $ECHO_N "checking for authentication support... $ECHO_C" >&6
+#       Check for PKCS11
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for authentication support" >&5
+$as_echo_n "checking for authentication support... " >&6; }
 useopenssl=no
 usepkcs=no
 if test "x$ac_cv_lib_pkcs11_C_Initialize" != "xyes" -o "x$ac_cv_header_security_cryptoki_h" != "xyes"; then
     if test "x$askedpkcs" = "xyes"; then
-       { { echo "$as_me:$LINENO: error: Asked to use PKCS11 but I couldn't find it." >&5
-echo "$as_me: error: Asked to use PKCS11 but I couldn't find it." >&2;}
-   { (exit 1); exit 1; }; }
+        as_fn_error $? "Asked to use PKCS11 but I couldn't find it." "$LINENO" 5
     fi
 else
     if test "x$askedpkcs" = "xyes"; then
@@ -37469,11 +24332,11 @@
     fi
 fi
 
-if test "x$ac_cv_lib_crypto_EVP_md5" != "xyes" -o "x$ac_cv_header_openssl_hmac_h" != "xyes" -o "x$ac_cv_header_openssl_hmac_h" != "xyes"; then
+#       Check for OpenSSL
+#
+if test "x$ac_cv_lib_crypto_EVP_md5" != "xyes" -a "x$ac_cv_lib_eay32_EVP_md5" != "xyes" -o "x$ac_cv_header_openssl_hmac_h" != "xyes"; then
     if test "x$askedopenssl" = "xyes"; then
-        { { echo "$as_me:$LINENO: error: Asked to use OpenSSL but I couldn't find it." >&5
-echo "$as_me: error: Asked to use OpenSSL but I couldn't find it." >&2;}
-   { (exit 1); exit 1; }; }
+        as_fn_error $? "Asked to use OpenSSL but I couldn't find it." "$LINENO" 5
     fi
 else
     if test "x$askedopenssl" = "xyes"; then
@@ -37485,7 +24348,21 @@
     fi
 fi
 
-if test "x$useopenssl" != "xno" ; then
+#       Available authentication/encryption modes
+#
+if test "x$CRYPTO" = "xinternal" ; then
+    authmodes="MD5 SHA1"
+    if test "x$enable_privacy" != "xno" ; then
+        encrmodes="DES AES"
+    else
+        encrmodes="disabled"
+    fi
+
+$as_echo "#define NETSNMP_USE_INTERNAL_CRYPTO 1" >>confdefs.h
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: Internal Crypto Support" >&5
+$as_echo "Internal Crypto Support" >&6; }
+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
@@ -37496,13 +24373,11 @@
     else
         encrmodes="disabled"
     fi
-    cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_USE_OPENSSL 1
-_ACEOF
+    $as_echo "#define NETSNMP_USE_OPENSSL 1" >>confdefs.h
 
     LNETSNMPLIBS="$LNETSNMPLIBS $LIBCRYPTO"
-    echo "$as_me:$LINENO: result: OpenSSL Support" >&5
-echo "${ECHO_T}OpenSSL Support" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: OpenSSL Support" >&5
+$as_echo "OpenSSL Support" >&6; }
 elif test "x$usepkcs" != "xno" ; then
     authmodes="MD5 SHA1"
     if test "x$enable_privacy" != "xno" ; then
@@ -37510,31 +24385,33 @@
     else
         encrmodes="disabled"
     fi
-    cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_USE_PKCS11 1
-_ACEOF
+
+$as_echo "#define NETSNMP_USE_PKCS11 1" >>confdefs.h
 
     LNETSNMPLIBS="$LNETSNMPLIBS $LIBPKCS11"
-    echo "$as_me:$LINENO: result: PKCS11 Support" >&5
-echo "${ECHO_T}PKCS11 Support" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: PKCS11 Support" >&5
+$as_echo "PKCS11 Support" >&6; }
 elif test "x$enable_md5" != "xno"; then
     authmodes="MD5"
     encrmodes=""
-    cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_USE_INTERNAL_MD5 1
-_ACEOF
+    $as_echo "#define NETSNMP_USE_INTERNAL_MD5 1" >>confdefs.h
 
-    echo "$as_me:$LINENO: result: Internal MD5 Support" >&5
-echo "${ECHO_T}Internal MD5 Support" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: Internal MD5 Support" >&5
+$as_echo "Internal MD5 Support" >&6; }
 fi
 if test "x$enable_md5" = "xno"; then
-    authmodes=`echo $authmodes | sed 's/MD5 *//;'`
+    authmodes=`echo $authmodes | $SED 's/MD5 *//;'`
 fi
 
 
 
 
   cat >> configure-summary << EOF
+  Crypto support from:        $CRYPTO
+EOF
+
+
+  cat >> configure-summary << EOF
   Authentication support:     $authmodes
 EOF
 
@@ -37552,131 +24429,260 @@
 
 fi
 
-# Checks for typedefs, structures, and compiler characteristics.
-echo "$as_me:$LINENO: checking for off_t" >&5
-echo $ECHO_N "checking for off_t... $ECHO_C" >&6
-if test "${ac_cv_type_off_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+#
+# Check whether user wants DNSSEC local validation support
+#
+_libs=${LIBS}
+if ! test "x-$want_dnssec" = "x-no" ; then
+    for ac_header in validator/validator-config.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "validator/validator-config.h" "ac_cv_header_validator_validator_config_h" "$ac_includes_default"
+if test "x$ac_cv_header_validator_validator_config_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_VALIDATOR_VALIDATOR_CONFIG_H 1
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+
+fi
+
+done
+
+    if test "$ac_cv_header_validator_validator_config_h" != yes; then
+        as_fn_error $? "Can't find validator.h" "$LINENO" 5
+    fi
+    if test "x$ac_cv_lib_crypto_EVP_md5" != "xyes" -a \
+            "x$ac_cv_lib_eay32_EVP_md5" != "xyes" -o \
+            "x$ac_cv_header_openssl_hmac_h" != "xyes"; then
+        as_fn_error $? "Couldn't find OpenSSL for local DNSSEC validation support." "$LINENO" 5
+    fi
+    LIBS="$LIBS $LIBCRYPTO"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for query_send in -lsres" >&5
+$as_echo_n "checking for query_send in -lsres... " >&6; }
+if ${ac_cv_lib_sres_query_send+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsres  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$ac_includes_default
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char query_send ();
 int
 main ()
 {
-if ((off_t *) 0)
-  return 0;
-if (sizeof (off_t))
-  return 0;
+return query_send ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_off_t=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_sres_query_send=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  ac_cv_lib_sres_query_send=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sres_query_send" >&5
+$as_echo "$ac_cv_lib_sres_query_send" >&6; }
+if test "x$ac_cv_lib_sres_query_send" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBSRES 1
+_ACEOF
 
-ac_cv_type_off_t=no
+  LIBS="-lsres $LIBS"
+
+else
+  as_fn_error $? "Can't find libsres" "$LINENO" 5
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+    VAL_LIBS="-lsres $LIBCRYPTO"
+    LIBS="$LIBS -lsres"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for p_val_status in -lval" >&5
+$as_echo_n "checking for p_val_status in -lval... " >&6; }
+if ${ac_cv_lib_val_p_val_status+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lval  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char p_val_status ();
+int
+main ()
+{
+return p_val_status ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_val_p_val_status=yes
+else
+  ac_cv_lib_val_p_val_status=no
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
-echo "${ECHO_T}$ac_cv_type_off_t" >&6
-if test $ac_cv_type_off_t = yes; then
-  :
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_val_p_val_status" >&5
+$as_echo "$ac_cv_lib_val_p_val_status" >&6; }
+if test "x$ac_cv_lib_val_p_val_status" = xyes; then :
+  LIBS="$LIBS -lval"
+                 VAL_LIBS="$VAL_LIBS -lval"
+                 have_val_res_query=yes
+else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_rwlock_init in -lpthread" >&5
+$as_echo_n "checking for pthread_rwlock_init in -lpthread... " >&6; }
+if ${ac_cv_lib_pthread_pthread_rwlock_init+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_rwlock_init ();
+int
+main ()
+{
+return pthread_rwlock_init ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_pthread_pthread_rwlock_init=yes
+else
+  ac_cv_lib_pthread_pthread_rwlock_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_rwlock_init" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_rwlock_init" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_rwlock_init" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBPTHREAD 1
+_ACEOF
+
+  LIBS="-lpthread $LIBS"
+
+fi
+
+		   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for p_val_status in -lval-threads" >&5
+$as_echo_n "checking for p_val_status in -lval-threads... " >&6; }
+if ${ac_cv_lib_val_threads_p_val_status+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lval-threads  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char p_val_status ();
+int
+main ()
+{
+return p_val_status ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_val_threads_p_val_status=yes
+else
+  ac_cv_lib_val_threads_p_val_status=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_val_threads_p_val_status" >&5
+$as_echo "$ac_cv_lib_val_threads_p_val_status" >&6; }
+if test "x$ac_cv_lib_val_threads_p_val_status" = xyes; then :
+  have_val_res_query=yes
+                   LIBS="-lval-threads $LIBS"
+                   VAL_LIBS="-lval-threads -lpthread $VAL_LIBS"
+                   LIBVAL_SUFFIX="-threads"
+else
+  as_fn_error $? "Can't find libval or libval-threads" "$LINENO" 5
+fi
+
+
+fi
+
+
+$as_echo "#define DNSSEC_LOCAL_VALIDATION 1" >>confdefs.h
+
+    DNSSEC="enabled"
+else
+    DNSSEC="disabled"
+fi
+
+LIBS=${_libs}
+
+
+
+  cat >> configure-summary << EOF
+  Local DNSSEC validation:    $DNSSEC
+EOF
+
+
+
+
+# -*- autoconf -*-
+#########################################
+##
+# Checks for types
+##
+#########################################
+
+##
+#   Standard checks:
+##
+
+# Checks for typedefs, structures, and compiler characteristics.
+ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
+if test "x$ac_cv_type_off_t" = xyes; then :
+
 else
 
 cat >>confdefs.h <<_ACEOF
-#define off_t long
+#define off_t long int
 _ACEOF
 
 fi
 
-echo "$as_me:$LINENO: checking for pid_t" >&5
-echo $ECHO_N "checking for pid_t... $ECHO_C" >&6
-if test "${ac_cv_type_pid_t+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-if ((pid_t *) 0)
-  return 0;
-if (sizeof (pid_t))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_pid_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
+if test "x$ac_cv_type_pid_t" = xyes; then :
 
-ac_cv_type_pid_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_type_pid_t" >&5
-echo "${ECHO_T}$ac_cv_type_pid_t" >&6
-if test $ac_cv_type_pid_t = yes; then
-  :
 else
 
 cat >>confdefs.h <<_ACEOF
@@ -37685,16 +24691,12 @@
 
 fi
 
-echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
-echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
-if test "${ac_cv_header_time+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
+$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
+if ${ac_cv_header_time+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <sys/time.h>
@@ -37709,61 +24711,30 @@
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_header_time=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_time=no
+  ac_cv_header_time=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
-echo "${ECHO_T}$ac_cv_header_time" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
+$as_echo "$ac_cv_header_time" >&6; }
 if test $ac_cv_header_time = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define TIME_WITH_SYS_TIME 1
-_ACEOF
+$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
 
 fi
 
 
-# this should use AC_CHECK_TYPE, but it's broken at least in 2.13-14
-# so we do it by hand.
-echo "$as_me:$LINENO: checking for socklen_t" >&5
-echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6
-if eval "test \"\${ac_cv_type_$1+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+
+##
+#   More complex checks:
+##
+
+#   Check for 'socklen_t'                           (HP-UX)
+#
+ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "
 #include <sys/types.h>
 #if STDC_HEADERS
 #include <stdlib.h>
@@ -37772,39 +24743,22 @@
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "socklen_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
-  ac_cv_type_socklen_t=yes
-else
-  ac_cv_type_socklen_t=no
-fi
-rm -f conftest*
+"
+if test "x$ac_cv_type_socklen_t" = xyes; then :
 
-fi
-
-
-echo "$as_me:$LINENO: result: $ac_cv_type_socklen_t" >&5
-echo "${ECHO_T}$ac_cv_type_socklen_t" >&6
-if test $ac_cv_type_socklen_t = yes; then
-  cat >>confdefs.h <<\_ACEOF
+cat >>confdefs.h <<_ACEOF
 #define HAVE_SOCKLEN_T 1
 _ACEOF
 
+
 fi
 
-# AIX keeps in_addr_t in /usr/include/netinet/in.h
-echo "$as_me:$LINENO: checking for in_addr_t" >&5
-echo $ECHO_N "checking for in_addr_t... $ECHO_C" >&6
-if eval "test \"\${ac_cv_type_$1+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+
+
+#   Check for 'in_addr_t'
+#       May be in <netinet/in.h>                        (AIX)
+#
+ac_fn_c_check_type "$LINENO" "in_addr_t" "ac_cv_type_in_addr_t" "
 #include <sys/types.h>
 #if STDC_HEADERS
 #include <stdlib.h>
@@ -37813,430 +24767,427 @@
 #ifdef HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "in_addr_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
-  ac_cv_type_in_addr_t=yes
-else
-  ac_cv_type_in_addr_t=no
-fi
-rm -f conftest*
+"
+if test "x$ac_cv_type_in_addr_t" = xyes; then :
 
-fi
-
-
-echo "$as_me:$LINENO: result: $ac_cv_type_in_addr_t" >&5
-echo "${ECHO_T}$ac_cv_type_in_addr_t" >&6
-if test $ac_cv_type_in_addr_t = yes; then
-  cat >>confdefs.h <<\_ACEOF
+cat >>confdefs.h <<_ACEOF
 #define HAVE_IN_ADDR_T 1
 _ACEOF
 
+
 fi
 
-# Older versions of MinGW do not define ssize_t in sys/types
-echo "$as_me:$LINENO: checking for ssize_t" >&5
-echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6
-if eval "test \"\${ac_cv_type_$1+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+
+
+#   Check for 'ssize_t'
+#       Not necessarily in <sys/types.h>                (older MinGW)
+#
+ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "
 #include <sys/types.h>
 #if STDC_HEADERS
 #include <stdlib.h>
 #include <stddef.h>
 #endif
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "ssize_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
-  ac_cv_type_ssize_t=yes
-else
-  ac_cv_type_ssize_t=no
-fi
-rm -f conftest*
+"
+if test "x$ac_cv_type_ssize_t" = xyes; then :
 
-fi
-
-
-echo "$as_me:$LINENO: result: $ac_cv_type_ssize_t" >&5
-echo "${ECHO_T}$ac_cv_type_ssize_t" >&6
-if test $ac_cv_type_ssize_t = yes; then
-
-cat >>confdefs.h <<\_ACEOF
+cat >>confdefs.h <<_ACEOF
 #define HAVE_SSIZE_T 1
 _ACEOF
 
-fi
-
-# Check ps args
-echo "$as_me:$LINENO: checking for correct flags to ps" >&5
-echo $ECHO_N "checking for correct flags to ps... $ECHO_C" >&6
-if test "${ac_cv_ps_flags+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "`($PSPROG -e 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
-  ac_cv_ps_flags="-e"
-elif test "`($PSPROG -el 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
-  ac_cv_ps_flags="-el"
-elif test "`($PSPROG acx 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
-  ac_cv_ps_flags="acx"
-elif test "`($PSPROG -acx 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
-  ac_cv_ps_flags="-acx"
-elif test "`($PSPROG -o pid,tt,state,time,ucomm 2>&1) | $EGREP ' ps *$' | awk '{print $NF}'`" = "ps" ; then
-  ac_cv_ps_flags="-o pid,tt,state,time,ucomm"
-elif test "`($PSPROG ax 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
-  ac_cv_ps_flags="ax"
-elif test "x$PARTIALTARGETOS" = "xcygwin"; then
-  ac_cv_ps_flags="-e"
-elif test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then
-  ac_cv_ps_flags="-e"
-else
-  { echo "$as_me:$LINENO: WARNING: Unable to determine valid ps flags...  defaulting..." >&5
-echo "$as_me: WARNING: Unable to determine valid ps flags...  defaulting..." >&2;}
-  ac_cv_ps_flags="-acx"
-fi
 
 fi
-echo "$as_me:$LINENO: result: $ac_cv_ps_flags" >&5
-echo "${ECHO_T}$ac_cv_ps_flags" >&6
-
-PSCMD="$PSPROG $ac_cv_ps_flags"
-
-cat >>confdefs.h <<_ACEOF
-#define PSCMD "$PSPROG $ac_cv_ps_flags"
-_ACEOF
 
 
-# Checks for byte order
-if test $cross_compiling = yes; then
-  if test x$with_endianness = xbig; then
-    cat >>confdefs.h <<\_ACEOF
-#define WORDS_BIGENDIAN 1
-_ACEOF
+# -*- autoconf -*-
+#########################################
+##
+# Miscellaneous checks
+##
+#########################################
 
-  elif test -z $with_endianness; then
-    { { echo "$as_me:$LINENO: error: You are cross-compiling, but you have not specified the target's endianness" >&5
-echo "$as_me: error: You are cross-compiling, but you have not specified the target's endianness" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
+##
+#   Compilation characteristics
+##
+
+#       Byte order
+#
+if test "$with_endianness" = "big"; then
+    ac_cv_c_bigendian=yes
+elif test "$with_endianness" = "little" ; then
+    ac_cv_c_bigendian=no
+fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if ${ac_cv_c_bigendian+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  if test $with_endianness; then
-    { { echo "$as_me:$LINENO: error: Endianness has been specified, but you are not cross-compiling." >&5
-echo "$as_me: error: Endianness has been specified, but you are not cross-compiling." >&2;}
-   { (exit 1); exit 1; }; }
-  fi
-  echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
-echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6
-if test "${ac_cv_c_bigendian+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  # See if sys/param.h defines the BYTE_ORDER macro.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+  ac_cv_c_bigendian=unknown
+    # See if we're dealing with a universal compiler.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+	       not a universal capable compiler
+	     #endif
+	     typedef int dummy;
+
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+	# Check for potential -arch flags.  It is not universal unless
+	# there are at least two -arch flags with different values.
+	ac_arch=
+	ac_prev=
+	for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+	 if test -n "$ac_prev"; then
+	   case $ac_word in
+	     i?86 | x86_64 | ppc | ppc64)
+	       if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+		 ac_arch=$ac_word
+	       else
+		 ac_cv_c_bigendian=universal
+		 break
+	       fi
+	       ;;
+	   esac
+	   ac_prev=
+	 elif test "x$ac_word" = "x-arch"; then
+	   ac_prev=arch
+	 fi
+       done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if sys/param.h defines the BYTE_ORDER macro.
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
-#include <sys/param.h>
+	     #include <sys/param.h>
 
 int
 main ()
 {
-#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
- bogus endian macros
-#endif
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+		     && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+		     && LITTLE_ENDIAN)
+	      bogus endian macros
+	     #endif
 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_compile "$LINENO"; then :
   # It does; now see whether it defined to BIG_ENDIAN or not.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
-#include <sys/param.h>
+		#include <sys/param.h>
 
 int
 main ()
 {
 #if BYTE_ORDER != BIG_ENDIAN
- not big endian
-#endif
+		 not big endian
+		#endif
 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_c_bigendian=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_c_bigendian=no
+  ac_cv_c_bigendian=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-# It does not; compile a test program.
-if test "$cross_compiling" = yes; then
-  # try to guess the endianness by grepping values into an object file
-  ac_cv_c_bigendian=unknown
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
-short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
-void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; }
-short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
-short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
-void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; }
+#include <limits.h>
+
 int
 main ()
 {
- _ascii (); _ebcdic ();
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+	      bogus endian macros
+	     #endif
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then
-  ac_cv_c_bigendian=yes
-fi
-if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
-  if test "$ac_cv_c_bigendian" = unknown; then
-    ac_cv_c_bigendian=no
-  else
-    # finding both strings is unlikely to happen, but who knows?
-    ac_cv_c_bigendian=unknown
-  fi
-fi
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+#include <limits.h>
+
 int
 main ()
 {
-  /* Are we little or big endian?  From Harbison&Steele.  */
-  union
-  {
-    long l;
-    char c[sizeof (long)];
-  } u;
-  u.l = 1;
-  exit (u.c[sizeof (long) - 1] == 1);
+#ifndef _BIG_ENDIAN
+		 not big endian
+		#endif
+
+  ;
+  return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # Compile a test program.
+      if test "$cross_compiling" = yes; then :
+  # Try to guess by grepping values from an object file.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+short int ascii_mm[] =
+		  { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+		short int ascii_ii[] =
+		  { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+		int use_ascii (int i) {
+		  return ascii_mm[i] + ascii_ii[i];
+		}
+		short int ebcdic_ii[] =
+		  { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+		short int ebcdic_mm[] =
+		  { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+		int use_ebcdic (int i) {
+		  return ebcdic_mm[i] + ebcdic_ii[i];
+		}
+		extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+	      ac_cv_c_bigendian=yes
+	    fi
+	    if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+	      if test "$ac_cv_c_bigendian" = unknown; then
+		ac_cv_c_bigendian=no
+	      else
+		# finding both strings is unlikely to happen, but who knows?
+		ac_cv_c_bigendian=unknown
+	      fi
+	    fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+	     /* Are we little or big endian?  From Harbison&Steele.  */
+	     union
+	     {
+	       long int l;
+	       char c[sizeof (long int)];
+	     } u;
+	     u.l = 1;
+	     return u.c[sizeof (long int) - 1] == 1;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
   ac_cv_c_bigendian=no
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-( exit $ac_status )
-ac_cv_c_bigendian=yes
+    fi
 fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
-echo "${ECHO_T}$ac_cv_c_bigendian" >&6
-case $ac_cv_c_bigendian in
-  yes)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+   no)
+      ;; #(
+   universal)
 
-cat >>confdefs.h <<\_ACEOF
-#define WORDS_BIGENDIAN 1
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+
+     ;; #(
+   *)
+     as_fn_error $? "Failed to figure out host endianness, please use --with-endianness to specify it." "$LINENO" 5 ;;
+ esac
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
 _ACEOF
- ;;
-  no)
-     ;;
-  *)
-    { { echo "$as_me:$LINENO: error: unknown endianness
-presetting ac_cv_c_bigendian=no (or yes) will help" >&5
-echo "$as_me: error: unknown endianness
-presetting ac_cv_c_bigendian=no (or yes) will help" >&2;}
-   { (exit 1); exit 1; }; } ;;
-esac
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+# -*- autoconf -*-
+#########################################
+##
+# Checks for library functions.
+##
+#########################################
+
+##
+#   Standard checks:
+##
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
 
 fi
 
-# Checks for library functions.
 # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
 # for constant arguments.  Useless!
-echo "$as_me:$LINENO: checking for working alloca.h" >&5
-echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6
-if test "${ac_cv_working_alloca_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
+$as_echo_n "checking for working alloca.h... " >&6; }
+if ${ac_cv_working_alloca_h+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <alloca.h>
 int
 main ()
 {
 char *p = (char *) alloca (2 * sizeof (int));
+			  if (p) return 0;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_working_alloca_h=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_working_alloca_h=no
+  ac_cv_working_alloca_h=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
-echo "${ECHO_T}$ac_cv_working_alloca_h" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
+$as_echo "$ac_cv_working_alloca_h" >&6; }
 if test $ac_cv_working_alloca_h = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ALLOCA_H 1
-_ACEOF
+$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
 
 fi
 
-echo "$as_me:$LINENO: checking for alloca" >&5
-echo $ECHO_N "checking for alloca... $ECHO_C" >&6
-if test "${ac_cv_func_alloca_works+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
+$as_echo_n "checking for alloca... " >&6; }
+if ${ac_cv_func_alloca_works+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __GNUC__
 # define alloca __builtin_alloca
@@ -38245,14 +25196,14 @@
 #  include <malloc.h>
 #  define alloca _alloca
 # else
-#  if HAVE_ALLOCA_H
+#  ifdef HAVE_ALLOCA_H
 #   include <alloca.h>
 #  else
 #   ifdef _AIX
  #pragma alloca
 #   else
 #    ifndef alloca /* predefined by HP cc +Olibcalls */
-char *alloca ();
+void *alloca (size_t);
 #    endif
 #   endif
 #  endif
@@ -38263,50 +25214,25 @@
 main ()
 {
 char *p = (char *) alloca (1);
+				    if (p) return 0;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_func_alloca_works=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_alloca_works=no
+  ac_cv_func_alloca_works=no
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
-echo "${ECHO_T}$ac_cv_func_alloca_works" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
+$as_echo "$ac_cv_func_alloca_works" >&6; }
 
 if test $ac_cv_func_alloca_works = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ALLOCA 1
-_ACEOF
+$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
 
 else
   # The SVR3 libPW and SVR4 libucb both contain incompatible functions
@@ -38314,25 +25240,19 @@
 # contain a buggy version.  If you still want to use their alloca,
 # use ar to extract alloca.o from them instead of compiling alloca.c.
 
-ALLOCA=alloca.$ac_objext
+ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
 
-cat >>confdefs.h <<\_ACEOF
-#define C_ALLOCA 1
-_ACEOF
+$as_echo "#define C_ALLOCA 1" >>confdefs.h
 
 
-echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
-echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6
-if test "${ac_cv_os_cray+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
+$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
+if ${ac_cv_os_cray+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#if defined(CRAY) && ! defined(CRAY2)
+#if defined CRAY && ! defined CRAY2
 webecray
 #else
 wenotbecray
@@ -38340,7 +25260,7 @@
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "webecray" >/dev/null 2>&1; then
+  $EGREP "webecray" >/dev/null 2>&1; then :
   ac_cv_os_cray=yes
 else
   ac_cv_os_cray=no
@@ -38348,102 +25268,13 @@
 rm -f conftest*
 
 fi
-echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
-echo "${ECHO_T}$ac_cv_os_cray" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
+$as_echo "$ac_cv_os_cray" >&6; }
 if test $ac_cv_os_cray = yes; then
   for ac_func in _getb67 GETB67 getb67; do
-    as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+    as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
 
 cat >>confdefs.h <<_ACEOF
 #define CRAY_STACKSEG_END $ac_func
@@ -38455,20 +25286,17 @@
   done
 fi
 
-echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
-echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6
-if test "${ac_cv_c_stack_direction+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
+$as_echo_n "checking stack direction for C alloca... " >&6; }
+if ${ac_cv_c_stack_direction+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  if test "$cross_compiling" = yes; then
+  if test "$cross_compiling" = yes; then :
   ac_cv_c_stack_direction=0
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+$ac_includes_default
 int
 find_stack_direction ()
 {
@@ -38486,60 +25314,42 @@
 int
 main ()
 {
-  exit (find_stack_direction () < 0);
+  return find_stack_direction () < 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_run "$LINENO"; then :
   ac_cv_c_stack_direction=1
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  ac_cv_c_stack_direction=-1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-( exit $ac_status )
-ac_cv_c_stack_direction=-1
 fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
-echo "${ECHO_T}$ac_cv_c_stack_direction" >&6
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
+$as_echo "$ac_cv_c_stack_direction" >&6; }
 cat >>confdefs.h <<_ACEOF
 #define STACK_DIRECTION $ac_cv_c_stack_direction
 _ACEOF
 
 
 fi
-
+          #  alloca()
 if test $ac_cv_c_compiler_gnu = yes; then
-    echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5
-echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6
-if test "${ac_cv_prog_gcc_traditional+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5
+$as_echo_n "checking whether $CC needs -traditional... " >&6; }
+if ${ac_cv_prog_gcc_traditional+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
     ac_pattern="Autoconf.*'x'"
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sgtty.h>
 Autoconf TIOCGETP
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "$ac_pattern" >/dev/null 2>&1; then
+  $EGREP "$ac_pattern" >/dev/null 2>&1; then :
   ac_cv_prog_gcc_traditional=yes
 else
   ac_cv_prog_gcc_traditional=no
@@ -38548,43 +25358,43 @@
 
 
   if test $ac_cv_prog_gcc_traditional = no; then
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <termio.h>
 Autoconf TCGETA
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "$ac_pattern" >/dev/null 2>&1; then
+  $EGREP "$ac_pattern" >/dev/null 2>&1; then :
   ac_cv_prog_gcc_traditional=yes
 fi
 rm -f conftest*
 
   fi
 fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5
-echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5
+$as_echo "$ac_cv_prog_gcc_traditional" >&6; }
   if test $ac_cv_prog_gcc_traditional = yes; then
     CC="$CC -traditional"
   fi
 fi
 
-echo "$as_me:$LINENO: checking for working memcmp" >&5
-echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6
-if test "${ac_cv_func_memcmp_working+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+if test "$cross_compiling" = yes -a "${ac_cv_func_memcmp_working+set}" != set
+then
+  # Cross-compiling and ac_cv_func_memcmp_working has not been set - assume
+  # that memcmp() is available.
+  ac_cv_func_memcmp_working=yes
 else
-  if test "$cross_compiling" = yes; then
+  # Native compilation - test for the availability of memcmp().
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5
+$as_echo_n "checking for working memcmp... " >&6; }
+if ${ac_cv_func_memcmp_working+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
   ac_cv_func_memcmp_working=no
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $ac_includes_default
 int
@@ -38592,9 +25402,9 @@
 {
 
   /* Some versions of memcmp are not 8-bit clean.  */
-  char c0 = 0x40, c1 = 0x80, c2 = 0x81;
+  char c0 = '\100', c1 = '\200', c2 = '\201';
   if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0)
-    exit (1);
+    return 1;
 
   /* The Next x86 OpenStep bug shows up only when comparing 16 bytes
      or more and with at least one buffer not starting on a 4-byte boundary.
@@ -38610,422 +25420,374 @@
 	strcpy (a, "--------01111111");
 	strcpy (b, "--------10000000");
 	if (memcmp (a, b, 16) >= 0)
-	  exit (1);
+	  return 1;
       }
-    exit (0);
+    return 0;
   }
 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_run "$LINENO"; then :
   ac_cv_func_memcmp_working=yes
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  ac_cv_func_memcmp_working=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-( exit $ac_status )
-ac_cv_func_memcmp_working=no
 fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5
-echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6
-test $ac_cv_func_memcmp_working = no && case $LIBOBJS in
-    "memcmp.$ac_objext"   | \
-  *" memcmp.$ac_objext"   | \
-    "memcmp.$ac_objext "* | \
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5
+$as_echo "$ac_cv_func_memcmp_working" >&6; }
+test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in
   *" memcmp.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" ;;
+  *) LIBOBJS="$LIBOBJS memcmp.$ac_objext"
+ ;;
 esac
 
 
-echo "$as_me:$LINENO: checking return type of signal handlers" >&5
-echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6
-if test "${ac_cv_type_signal+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5
+$as_echo_n "checking return type of signal handlers... " >&6; }
+if ${ac_cv_type_signal+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <signal.h>
-#ifdef signal
-# undef signal
-#endif
-#ifdef __cplusplus
-extern "C" void (*signal (int, void (*)(int)))(int);
-#else
-void (*signal ()) ();
-#endif
 
 int
 main ()
 {
-int i;
+return *(signal (0, 0)) (0) == 1;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_type_signal=void
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_type_signal=int
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_type_signal=int
+  ac_cv_type_signal=void
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5
-echo "${ECHO_T}$ac_cv_type_signal" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5
+$as_echo "$ac_cv_type_signal" >&6; }
 
 cat >>confdefs.h <<_ACEOF
 #define RETSIGTYPE $ac_cv_type_signal
 _ACEOF
 
 
-# getmntent is in -lsun on Irix 4, -lseq on Dynix/PTX, -lgen on Unixware.
-echo "$as_me:$LINENO: checking for getmntent in -lsun" >&5
-echo $ECHO_N "checking for getmntent in -lsun... $ECHO_C" >&6
-if test "${ac_cv_lib_sun_getmntent+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsun  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char getmntent ();
-int
-main ()
-{
-getmntent ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_sun_getmntent=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_sun_getmntent=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_sun_getmntent" >&5
-echo "${ECHO_T}$ac_cv_lib_sun_getmntent" >&6
-if test $ac_cv_lib_sun_getmntent = yes; then
-  LIBS="-lsun $LIBS"
-else
-  echo "$as_me:$LINENO: checking for getmntent in -lseq" >&5
-echo $ECHO_N "checking for getmntent in -lseq... $ECHO_C" >&6
-if test "${ac_cv_lib_seq_getmntent+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lseq  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char getmntent ();
-int
-main ()
-{
-getmntent ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_seq_getmntent=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_seq_getmntent=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_seq_getmntent" >&5
-echo "${ECHO_T}$ac_cv_lib_seq_getmntent" >&6
-if test $ac_cv_lib_seq_getmntent = yes; then
-  LIBS="-lseq $LIBS"
-else
-  echo "$as_me:$LINENO: checking for getmntent in -lgen" >&5
-echo $ECHO_N "checking for getmntent in -lgen... $ECHO_C" >&6
-if test "${ac_cv_lib_gen_getmntent+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lgen  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char getmntent ();
-int
-main ()
-{
-getmntent ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_gen_getmntent=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_gen_getmntent=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_gen_getmntent" >&5
-echo "${ECHO_T}$ac_cv_lib_gen_getmntent" >&6
-if test $ac_cv_lib_gen_getmntent = yes; then
-  LIBS="-lgen $LIBS"
-fi
-
-fi
-
-fi
-
-
-for ac_func in getmntent
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+##
+#   Stand-alone function checks:
+##
+#  Core:
+for ac_func in lrand48         rand          random                    signal          sigset
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+#  Library:
+for ac_func in closedir        fgetc_unlocked  flockfile                        fork            funlockfile     getipnodebyname                  gettimeofday    if_nametoindex  mkstemp                          opendir         readdir         regcomp                          setenv          setitimer       setlocale                        setsid          snprintf        strcasestr                       strdup          strerror        strncasecmp                      sysconf         times           vsnprintf
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+# 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*)
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ws2tcpip.h>
+int
+main ()
+{
+ gai_strerror(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+   ac_cv_func_gai_strerror=yes
+      $as_echo  "#define HAVE_GAI_STRERROR 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ws2tcpip.h>
+int
+main ()
+{
+ getaddrinfo(NULL, NULL, NULL, NULL);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+   ac_cv_func_getaddrinfo=yes
+      $as_echo  "#define HAVE_GETADDRINFO 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <winsock2.h>
+int
+main ()
+{
+ gethostbyname(NULL);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+   ac_cv_func_gethostbyname=yes
+      $as_echo  "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <winsock2.h>
+int
+main ()
+{
+ gethostbyaddr(NULL);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+   ac_cv_func_gethostaddr=yes
+      $as_echo  "#define HAVE_GETHOSTBYADDR 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <winsock2.h>
+int
+main ()
+{
+ gethostname(NULL, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+   ac_cv_func_gethostname=yes
+      $as_echo  "#define HAVE_GETHOSTNAME 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    ;;
+
+  *)
+    for ac_func in gai_strerror getaddrinfo gethostbyname gethostbyname2 gethostname gethostbyaddr
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+    ;;
+esac
+
+
+
+ac_fn_c_check_func "$LINENO" "getopt" "ac_cv_func_getopt"
+if test "x$ac_cv_func_getopt" = xyes; then :
+  $as_echo "#define HAVE_GETOPT 1" >>confdefs.h
+
+else
+  case " $LIBOBJS " in
+  *" getopt.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS getopt.$ac_objext"
+ ;;
+esac
+
+fi
+
+ac_fn_c_check_func "$LINENO" "inet_ntop" "ac_cv_func_inet_ntop"
+if test "x$ac_cv_func_inet_ntop" = xyes; then :
+  $as_echo "#define HAVE_INET_NTOP 1" >>confdefs.h
+
+else
+  case " $LIBOBJS " in
+  *" inet_ntop.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS inet_ntop.$ac_objext"
+ ;;
+esac
+
+fi
+
+ac_fn_c_check_func "$LINENO" "inet_pton" "ac_cv_func_inet_pton"
+if test "x$ac_cv_func_inet_pton" = xyes; then :
+  $as_echo "#define HAVE_INET_PTON 1" >>confdefs.h
+
+else
+  case " $LIBOBJS " in
+  *" inet_pton.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS inet_pton.$ac_objext"
+ ;;
+esac
+
+fi
+
+ac_fn_c_check_func "$LINENO" "strlcat" "ac_cv_func_strlcat"
+if test "x$ac_cv_func_strlcat" = xyes; then :
+  $as_echo "#define HAVE_STRLCAT 1" >>confdefs.h
+
+else
+  case " $LIBOBJS " in
+  *" strlcat.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS strlcat.$ac_objext"
+ ;;
+esac
+
+fi
+
+ac_fn_c_check_func "$LINENO" "strlcpy" "ac_cv_func_strlcpy"
+if test "x$ac_cv_func_strlcpy" = xyes; then :
+  $as_echo "#define HAVE_STRLCPY 1" >>confdefs.h
+
+else
+  case " $LIBOBJS " in
+  *" strlcpy.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS strlcpy.$ac_objext"
+ ;;
+esac
+
+fi
+
+ac_fn_c_check_func "$LINENO" "strtok_r" "ac_cv_func_strtok_r"
+if test "x$ac_cv_func_strtok_r" = xyes; then :
+  $as_echo "#define HAVE_STRTOK_R 1" >>confdefs.h
+
+else
+  case " $LIBOBJS " in
+  *" strtok_r.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS strtok_r.$ac_objext"
+ ;;
+esac
+
+fi
+
+ac_fn_c_check_func "$LINENO" "strtol" "ac_cv_func_strtol"
+if test "x$ac_cv_func_strtol" = xyes; then :
+  $as_echo "#define HAVE_STRTOL 1" >>confdefs.h
+
+else
+  case " $LIBOBJS " in
+  *" strtol.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS strtol.$ac_objext"
+ ;;
+esac
+
+fi
+
+ac_fn_c_check_func "$LINENO" "strtoul" "ac_cv_func_strtoul"
+if test "x$ac_cv_func_strtoul" = xyes; then :
+  $as_echo "#define HAVE_STRTOUL 1" >>confdefs.h
+
+else
+  case " $LIBOBJS " in
+  *" strtoul.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS strtoul.$ac_objext"
+ ;;
+esac
+
+fi
+
+ac_fn_c_check_func "$LINENO" "strtoull" "ac_cv_func_strtoull"
+if test "x$ac_cv_func_strtoull" = xyes; then :
+  $as_echo "#define HAVE_STRTOULL 1" >>confdefs.h
+
+else
+  case " $LIBOBJS " in
+  *" strtoull.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS strtoull.$ac_objext"
+ ;;
+esac
+
+fi
+
+
+
+#  Agent:
+for ac_func in cgetnext        chown          execv                           gai_strerror                   getgrnam                        gethostname     getloadavg                                     getpid          getpwnam                                       hasmntopt       initgroups                                     if_nameindex    if_indextoname if_nametoindex                  localtime_r     mkstemp        mktime                          poll            regcomp                                        setgid          setgroups                                      setmntent       setuid                                         sigaction       sigblock      sighold                          sigprocmask                                                    statfs          statvfs       stime                            strncasecmp     system                                         uname           usleep
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+#  Apps:
+for ac_func in getdtablesize                                                  getgrnam        getpid        getpwnam                         setgid          setgroups     setuid                           tcgetattr
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+#  Not-Used:
+for ac_func in if_freenameindex              getpagesize                      lseek64         pread64                                        select          sigalrm       socket
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
 
 fi
@@ -39033,2770 +25795,41 @@
 
 
 
+##
+#   More complex function checks:
+#           (Agent)
+##
 
-
-
-
-
-
-for ac_func in setmntent hasmntopt gethostname uname gettimeofday select socket
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+#       rpmGetPath check needs clean LIBS environment   (Linux)
+#
+if test "x$with_rpm" != "xno"; then
+    OLDLIBS=$LIBS
+    LIBS=$LMIBLIBS
+    for ac_func in rpmGetPath
+do :
+  ac_fn_c_check_func "$LINENO" "rpmGetPath" "ac_cv_func_rpmGetPath"
+if test "x$ac_cv_func_rpmGetPath" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define HAVE_RPMGETPATH 1
 _ACEOF
 
 fi
 done
 
+    LIBS=$OLDLIBS
+fi
 
-
-
-
-for ac_func in strlcat strlcpy strtol strtoul
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+#       statfs( char *, struct fs_data* )               (Ultrix)
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for two-argument statfs with struct fs_data (Ultrix)" >&5
+$as_echo_n "checking for two-argument statfs with struct fs_data (Ultrix)... " >&6; }
+if ${fu_cv_sys_stat_fs_data+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-
-
-
-
-
-
-
-for ac_func in strchr strtok_r strdup memcpy memmove index bcopy strcasestr regcomp
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-
-
-
-
-
-
-
-for ac_func in signal setsid sigset sigblock sighold strerror setenv vsnprintf snprintf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-for ac_func in sigaction
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-
-for ac_func in random lrand48 rand
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-
-
-
-
-for ac_func in execv system fork getpid strncasecmp sigalrm
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-for ac_func in lseek64 pread64
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-if test "x$with_rpm" != "xno" && \
-        echo " $module_list " | grep " host/hr_swinst " > /dev/null; then
-  OLDLIBS=$LIBS
-  LIBS=$LMIBLIBS
-
-for ac_func in rpmGetPath
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  LIBS=$OLDLIBS
-fi
-
-
-for ac_func in getloadavg
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-
-for ac_func in getaddrinfo getipnodebyname gai_strerror
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-# BSDi2 functions differ
-
-
-for ac_func in statvfs statfs
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-for ac_func in getdtablesize
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-# freebsd2 checks
-
-for ac_func in getfsstat
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-for ac_func in usleep
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-for ac_func in setlocale
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-for ac_func in tcgetattr
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-for ac_func in if_nameindex if_freenameindex
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-for ac_func in kinfo_get_cpus
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-# solaris checks
-
-for ac_func in getpagesize
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-for ac_func in mkstemp
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-
-
-
-for ac_func in getpwnam getgrnam setgid setuid setgroups
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-# High resolution alarm support
-
-for ac_func in setitimer
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-# functions to support the clock.
-
-
-
-
-for ac_func in mktime stime times sysconf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-# missing from hp-ux
-
-for ac_func in if_nametoindex
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-# missing from MinGW
-
-
-for ac_func in chown localtime_r
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-echo "$as_me:$LINENO: checking for SIOCGIFADDR in sys/ioctl.h" >&5
-echo $ECHO_N "checking for SIOCGIFADDR in sys/ioctl.h... $ECHO_C" >&6
-if test "${cv_sys_ioctl_h_has_SIOCGIFADDR+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#ifdef HAVE_SYS_IOCTL_H
-#include <sys/ioctl.h>
-#endif
-#ifdef SIOCGIFADDR
-xxxyesxxx
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "xxxyesxxx" >/dev/null 2>&1; then
-  cv_sys_ioctl_h_has_SIOCGIFADDR=yes
-else
-  cv_sys_ioctl_h_has_SIOCGIFADDR=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$as_me:$LINENO: result: $cv_sys_ioctl_h_has_SIOCGIFADDR" >&5
-echo "${ECHO_T}$cv_sys_ioctl_h_has_SIOCGIFADDR" >&6
-if test $cv_sys_ioctl_h_has_SIOCGIFADDR = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define SYS_IOCTL_H_HAS_SIOCGIFADDR 1
-_ACEOF
-
-fi
-
-# ultrix
-echo "$as_me:$LINENO: checking for two-argument statfs with struct fs_data (Ultrix)" >&5
-echo $ECHO_N "checking for two-argument statfs with struct fs_data (Ultrix)... $ECHO_C" >&6
-if test "${fu_cv_sys_stat_fs_data+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "$cross_compiling" = yes; then
+  if test "$cross_compiling" = yes; then :
   fu_cv_sys_stat_fs_data=no
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #ifdef HAVE_SYS_PARAM_H
@@ -41817,114 +25850,93 @@
 exit (statfs (".", &fsd) != 1);
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_run "$LINENO"; then :
   fu_cv_sys_stat_fs_data=yes
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-fu_cv_sys_stat_fs_data=no
+  fu_cv_sys_stat_fs_data=no
 fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-echo "$as_me:$LINENO: result: $fu_cv_sys_stat_fs_data" >&5
-echo "${ECHO_T}$fu_cv_sys_stat_fs_data" >&6
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $fu_cv_sys_stat_fs_data" >&5
+$as_echo "$fu_cv_sys_stat_fs_data" >&6; }
 if test $fu_cv_sys_stat_fs_data = yes; then
-  cat >>confdefs.h <<\_ACEOF
-#define STAT_STATFS_FS_DATA 1
-_ACEOF
+
+$as_echo "#define STAT_STATFS_FS_DATA 1" >>confdefs.h
 
 fi
 
-# check if compiler pre-processor defines __FUNCTION__
-echo "$as_me:$LINENO: checking if __FUNCTION__ is defined" >&5
-echo $ECHO_N "checking if __FUNCTION__ is defined... $ECHO_C" >&6
-if test "${ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+##
+#   Other function-related checks:
+#           (general build)
+##
+
+#       How to get the name of the current function
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to get the name of the current function" >&5
+$as_echo_n "checking how to get the name of the current function... " >&6; }
+if ${netsnmp_cv__func__name+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+    netsnmp_cv__func__name=no
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
 main ()
 {
-
-    char *cp = __FUNCTION__;
-
+const char* cp = __func__;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED=no
+if ac_fn_c_try_compile "$LINENO"; then :
+  netsnmp_cv__func__name=__func__
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED" >&5
-echo "${ECHO_T}$ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED" >&6
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test "$netsnmp_cv__func__name" = no ; then
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-if test "x$ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED" = "xyes"; then
-  cat >>confdefs.h <<\_ACEOF
-#define HAVE_CPP_UNDERBAR_FUNCTION_DEFINED 1
+int
+main ()
+{
+const char* cp = __FUNCTION__;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  netsnmp_cv__func__name=__FUNCTION__
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv__func__name" >&5
+$as_echo "$netsnmp_cv__func__name" >&6; }
+if test "$netsnmp_cv__func__name" != no; then
+
+cat >>confdefs.h <<_ACEOF
+#define NETSNMP_FUNCTION $netsnmp_cv__func__name
 _ACEOF
 
 fi
 
-#--------------------------------------------------------------
-# on SCO Unixware 7.1.4 (SCO compiler), "static inline" functions
-# are not supported, so this disables the whole inline thing if it
-# doesn't work properly. Should have no effect on other platforms.
-echo "$as_me:$LINENO: checking whether static inline functions are broken (Unixware)" >&5
-echo $ECHO_N "checking whether static inline functions are broken (Unixware)... $ECHO_C" >&6
-if test "${netsnmp_cv_c_broken_inline+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+#       Whether static inline functions are broken      (SCO Unixware)
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether static inline functions are broken (Unixware)" >&5
+$as_echo_n "checking whether static inline functions are broken (Unixware)... " >&6; }
+if ${netsnmp_cv_c_broken_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
 static inline int nested_inline_function(void) {
   return 0;
@@ -41934,42 +25946,19 @@
 }
 
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_compile "$LINENO"; then :
   netsnmp_cv_broken_inline=no
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-netsnmp_cv_broken_inline=yes
+  netsnmp_cv_broken_inline=yes
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-echo "$as_me:$LINENO: result: $netsnmp_cv_c_broken_inline" >&5
-echo "${ECHO_T}$netsnmp_cv_c_broken_inline" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_c_broken_inline" >&5
+$as_echo "$netsnmp_cv_c_broken_inline" >&6; }
 
-# But, sadly, the usage of inline in NET_SNMP disagrees seriously with at least
-# solaris2, so disable it for now.
+
+#       Yes -  static inline functions are broken       (Solaris 2.x)
+#
 case "$target_os" in
     solaris*)
         netsnmp_cv_broken_inline=yes
@@ -41980,4638 +25969,366 @@
 
 if test "$netsnmp_cv_broken_inline" = yes ; then
 
-cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_BROKEN_INLINE 1
-_ACEOF
+$as_echo "#define NETSNMP_BROKEN_INLINE 1" >>confdefs.h
 
 fi
 
-# openbsd seems to have dropped m_clusters and m_clfree from mbstat
 
+##
+#   Mis-placed (non-function) checks:
+##
 
-ac_safe_struct=`echo "mbstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "m_clusters" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for mbstat.m_clusters" >&5
-echo $ECHO_N "checking for mbstat.m_clusters... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIOCGIFADDR in sys/ioctl.h" >&5
+$as_echo_n "checking for SIOCGIFADDR in sys/ioctl.h... " >&6; }
+if ${netsnmp_cv_sys_ioctl_h_has_SIOCGIFADDR+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-
-if test "xno" = "x"; then
-  defineit="= 0"
-elif test "xno" = "xno"; then
-  defineit=""
-else
-  defineit="no"
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-
-#if HAVE_SYS_MBUF_H
-#include <sys/mbuf.h>
+#ifdef HAVE_SYS_IOCTL_H
+#include <sys/ioctl.h>
 #endif
-
-
-int
-main ()
-{
-
-struct mbstat testit;
-testit.m_clusters $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-# openbsd seems to have dropped m_mbufs from mbstat too
-
-
-ac_safe_struct=`echo "mbstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "m_mbufs" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for mbstat.m_mbufs" >&5
-echo $ECHO_N "checking for mbstat.m_mbufs... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "xno" = "x"; then
-  defineit="= 0"
-elif test "xno" = "xno"; then
-  defineit=""
-else
-  defineit="no"
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#if HAVE_SYS_MBUF_H
-#include <sys/mbuf.h>
-#endif
-
-
-int
-main ()
-{
-
-struct mbstat testit;
-testit.m_mbufs $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-
-ac_safe_struct=`echo "sigaction" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "sa_sigaction" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for sigaction.sa_sigaction" >&5
-echo $ECHO_N "checking for sigaction.sa_sigaction... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "xno" = "x"; then
-  defineit="= 0"
-elif test "xno" = "xno"; then
-  defineit=""
-else
-  defineit="no"
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#include <sys/signal.h>
-
-
-int
-main ()
-{
-
-struct sigaction testit;
-testit.sa_sigaction $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "tm" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "tm_gmtoff" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for tm.tm_gmtoff" >&5
-echo $ECHO_N "checking for tm.tm_gmtoff... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "xno" = "x"; then
-  defineit="= 0"
-elif test "xno" = "xno"; then
-  defineit=""
-else
-  defineit="no"
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#include <sys/types.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
-
-
-int
-main ()
-{
-
-struct tm testit;
-testit.tm_gmtoff $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "ifnet" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "if_mtu" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifnet.if_mtu" >&5
-echo $ECHO_N "checking for ifnet.if_mtu... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-
-
-int
-main ()
-{
-
-struct ifnet testit;
-testit.if_mtu $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-if test "x$ac_cv_struct_ifnet_has_if_mtu" = "xno"; then
-echo "$as_me:$LINENO: checking if _KERNEL needs to be defined for if_mtu" >&5
-echo $ECHO_N "checking if _KERNEL needs to be defined for if_mtu... $ECHO_C" >&6
-if test "${ac_cv_IFNET_NEEDS_KERNEL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x$ac_cv_struct_ifnet_has_if_mtu" = "xyes"; then
-  ac_cv_IFNET_NEEDS_KERNEL=no
-else
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#define _KERNEL 1
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
+#ifndef SIOCGIFADDR
+No SIOCGIFADDR found here.
 #endif
 
 int
 main ()
 {
 
-struct ifnet testit;
-testit.if_mtu = 0;
-
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_IFNET_NEEDS_KERNEL=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+  netsnmp_cv_sys_ioctl_h_has_SIOCGIFADDR=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_IFNET_NEEDS_KERNEL=no
+  netsnmp_cv_sys_ioctl_h_has_SIOCGIFADDR=no
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_sys_ioctl_h_has_SIOCGIFADDR" >&5
+$as_echo "$netsnmp_cv_sys_ioctl_h_has_SIOCGIFADDR" >&6; }
+if test $netsnmp_cv_sys_ioctl_h_has_SIOCGIFADDR = yes; then
+
+$as_echo "#define SYS_IOCTL_H_HAS_SIOCGIFADDR 1" >>confdefs.h
+
 fi
 
-fi
-echo "$as_me:$LINENO: result: $ac_cv_IFNET_NEEDS_KERNEL" >&5
-echo "${ECHO_T}$ac_cv_IFNET_NEEDS_KERNEL" >&6
+##
+#   Check how to print a size_t variable
+##
 
-if test "x$ac_cv_IFNET_NEEDS_KERNEL" = "xyes"; then
-  cat >>confdefs.h <<\_ACEOF
-#define IFNET_NEEDS_KERNEL 1
-_ACEOF
-
-fi
-fi
-
-
-
-ac_safe_struct=`echo "sockaddr" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "sa_len" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for sockaddr.sa_len" >&5
-echo $ECHO_N "checking for sockaddr.sa_len... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the underlying type of a size_t" >&5
+$as_echo_n "checking the underlying type of a size_t... " >&6; }
+if ${netsnmp_cv_size_t_type+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-
-if test "xno" = "x"; then
-  defineit="= 0"
-elif test "xno" = "xno"; then
-  defineit=""
-else
-  defineit="no"
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  if [ x$netsnmp_cv_size_t_type = x ] ; then
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-
-
-int
-main ()
-{
-
-struct sockaddr testit;
-testit.sa_len $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "sockaddr" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "sa_union.sa_generic.sa_family2" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for sockaddr.sa_union.sa_generic.sa_family2" >&5
-echo $ECHO_N "checking for sockaddr.sa_union.sa_generic.sa_family2... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "xno" = "x"; then
-  defineit="= 0"
-elif test "xno" = "xno"; then
-  defineit=""
-else
-  defineit="no"
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-
-
-int
-main ()
-{
-
-struct sockaddr testit;
-testit.sa_union.sa_generic.sa_family2 $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "sockaddr_storage" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "ss_family" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for sockaddr_storage.ss_family" >&5
-echo $ECHO_N "checking for sockaddr_storage.ss_family... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "xno" = "x"; then
-  defineit="= 0"
-elif test "xno" = "xno"; then
-  defineit=""
-else
-  defineit="no"
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#if HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-
-
-int
-main ()
-{
-
-struct sockaddr_storage testit;
-testit.ss_family $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "sockaddr_storage" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "__ss_family" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for sockaddr_storage.__ss_family" >&5
-echo $ECHO_N "checking for sockaddr_storage.__ss_family... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "xno" = "x"; then
-  defineit="= 0"
-elif test "xno" = "xno"; then
-  defineit=""
-else
-  defineit="no"
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#if HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-
-
-int
-main ()
-{
-
-struct sockaddr_storage testit;
-testit.__ss_family $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "rtentry" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "rt_dst" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for rtentry.rt_dst" >&5
-echo $ECHO_N "checking for rtentry.rt_dst... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "xno" = "x"; then
-  defineit="= 0"
-elif test "xno" = "xno"; then
-  defineit=""
-else
-  defineit="no"
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#include <net/route.h>
-
-
-int
-main ()
-{
-
-struct rtentry testit;
-testit.rt_dst $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-# checking for 4.3 vs 4.4 rtentry.
-echo "$as_me:$LINENO: checking type of rtentry structure" >&5
-echo $ECHO_N "checking type of rtentry structure... $ECHO_C" >&6
-if test "${ac_cv_RTENTRY_TYPE+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-# 4.4 compat
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#include <net/route.h>
-
-int
-main ()
-{
-
-
-#ifndef STRUCT_RTENTRY_HAS_RT_DST
-#define rt_dst rt_nodes->rn_key
-#endif
-
-  struct rtentry rt;
-  rt.rt_nodes[0].rn_flags = 1;
-  rt.rt_dst;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_RTENTRY_TYPE="BSD-4.4"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-# 4.3 compat
-if test "x$ac_cv_RTENTRY_TYPE" = "x"; then
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#include <net/route.h>
-
-int
-main ()
-{
-
-struct rtentry rt;
-rt.rt_hash;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_RTENTRY_TYPE="BSD-4.3"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-# else ack.
-if test "x$ac_cv_RTENTRY_TYPE" = "x"; then
-  echo "$as_me:$LINENO: result: Unknown" >&5
-echo "${ECHO_T}Unknown" >&6
-  ac_cv_RTENTRY_TYPE="unknown"
-fi
-
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_RTENTRY_TYPE" >&5
-echo "${ECHO_T}$ac_cv_RTENTRY_TYPE" >&6
-
-if test "x$ac_cv_RTENTRY_TYPE" = "xBSD-4.4"; then
-  cat >>confdefs.h <<\_ACEOF
-#define RTENTRY_4_4 1
-_ACEOF
-
-fi
-
-# checking for alpha's ortentry vs rtentry
-if test "x$ac_cv_RTENTRY_TYPE" = "xunknown"; then
-echo "$as_me:$LINENO: checking for struct rtentry" >&5
-echo $ECHO_N "checking for struct rtentry... $ECHO_C" >&6
-if test "${ac_cv_struct_rtentry+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#define KERNEL
-#include <net/route.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "ortentry" >/dev/null 2>&1; then
-  ac_cv_struct_rtentry=ortentry
-else
-  ac_cv_struct_rtentry=rtentry
-fi
-rm -f conftest*
-
-if test "x$ac_cv_struct_rtentry" = "xrtentry" ; then
-  ac_cv_struct_rtentry="rtentry"
-else
-  ac_cv_struct_rtentry="ortentry"
-fi
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_struct_rtentry" >&5
-echo "${ECHO_T}$ac_cv_struct_rtentry" >&6
-else
-  RTENTRY_TYPE="rtentry"
-  ac_cv_struct_rtentry="rtentry"
-fi
-
-if test "x$ac_cv_struct_rtentry" != "x"; then
-  cat >>confdefs.h <<_ACEOF
-#define RTENTRY struct ${ac_cv_struct_rtentry}
-_ACEOF
-
-else
-  cat >>confdefs.h <<\_ACEOF
-#define RTENTRY struct rtentry
-_ACEOF
-
-fi
-
-# check for 4.3's rtentry->rt_next
-if test "x$ac_cv_RTENTRY_TYPE" = "xBSD-4.3"; then
-echo "$as_me:$LINENO: checking for struct rtentry has a rt_next node" >&5
-echo $ECHO_N "checking for struct rtentry has a rt_next node... $ECHO_C" >&6
-if test "${ac_cv_struct_rtentry_rt_next+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#include <net/route.h>
-
-int
-main ()
-{
-
-struct rtentry rt;
-rt.rt_next;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_struct_rtentry_rt_next=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_struct_rtentry_rt_next=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_struct_rtentry_rt_next" >&5
-echo "${ECHO_T}$ac_cv_struct_rtentry_rt_next" >&6
-
-if test "x$ac_cv_struct_rtentry_rt_next" = "xyes"; then
-  cat >>confdefs.h <<\_ACEOF
-#define RTENTRY_RT_NEXT 1
-_ACEOF
-
-fi
-
-fi
-
-# Check sin6_scope_id member specified in RFC2553 additionally
-echo "$as_me:$LINENO: checking for struct sockaddr_in6.sin6_scope_id" >&5
-echo $ECHO_N "checking for struct sockaddr_in6.sin6_scope_id... $ECHO_C" >&6
-if test "${ac_cv_member_struct_sockaddr_in6_sin6_scope_id+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
 $ac_includes_default
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
-
+extern unsigned int variable;
+extern size_t variable;
 int
 main ()
 {
-static struct sockaddr_in6 ac_aggr;
-if (ac_aggr.sin6_scope_id)
-return 0;
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_member_struct_sockaddr_in6_sin6_scope_id=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  netsnmp_cv_size_t_type="int"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
+    if [ x$netsnmp_cv_size_t_type = x ] ; then
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
 $ac_includes_default
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
-
+extern unsigned long variable;
+extern size_t variable;
 int
 main ()
 {
-static struct sockaddr_in6 ac_aggr;
-if (sizeof ac_aggr.sin6_scope_id)
-return 0;
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_member_struct_sockaddr_in6_sin6_scope_id=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_compile "$LINENO"; then :
+  netsnmp_cv_size_t_type="long"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
+    if [ x$netsnmp_cv_size_t_type = x ] ; then
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+extern unsigned long long variable;
+extern size_t variable;
+int
+main ()
+{
 
-ac_cv_member_struct_sockaddr_in6_sin6_scope_id=no
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  netsnmp_cv_size_t_type="long long"
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
+    if [ x$netsnmp_cv_size_t_type = x ] ; then
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+extern unsigned short variable;
+extern size_t variable;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  netsnmp_cv_size_t_type="short"
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
+    if [ x$netsnmp_cv_size_t_type = x ] ; then
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+extern unsigned char variable;
+extern size_t variable;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  netsnmp_cv_size_t_type="char"
 fi
-echo "$as_me:$LINENO: result: $ac_cv_member_struct_sockaddr_in6_sin6_scope_id" >&5
-echo "${ECHO_T}$ac_cv_member_struct_sockaddr_in6_sin6_scope_id" >&6
-if test $ac_cv_member_struct_sockaddr_in6_sin6_scope_id = yes; then
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_size_t_type" >&5
+$as_echo "$netsnmp_cv_size_t_type" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to printf a size_t" >&5
+$as_echo_n "checking how to printf a size_t... " >&6; }
+case "$netsnmp_cv_size_t_type" in
+    char|short|int) netsnmp_PRIz="" ;;
+    long) netsnmp_PRIz="l" ;;
+    "long long") netsnmp_PRIz="ll" ;;
+    *) as_fn_error $? "underlying type of size_t not known" "$LINENO" 5 ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_PRIz" >&5
+$as_echo "$netsnmp_PRIz" >&6; }
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
+#define NETSNMP_PRIz "$netsnmp_PRIz"
 _ACEOF
 
 
-fi
+##
+#   Check how to print a uint32_t variable
+##
 
-
-# Check struct rtentry for various things.
-
-
-ac_safe_struct=`echo "rtentry" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "rt_unit" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for rtentry.rt_unit" >&5
-echo $ECHO_N "checking for rtentry.rt_unit... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the underlying type of an uint32_t" >&5
+$as_echo_n "checking the underlying type of an uint32_t... " >&6; }
+if ${netsnmp_cv_uint32_t_type+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  if [ x$netsnmp_cv_uint32_t_type = x ] ; then
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#include <net/route.h>
-
-
+$ac_includes_default
+extern unsigned char variable;
+extern uint32_t variable;
 int
 main ()
 {
 
-struct rtentry testit;
-testit.rt_unit $defineit;
-
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
+if ac_fn_c_try_compile "$LINENO"; then :
+  netsnmp_cv_uint32_t_type="char"
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "rtentry" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "rt_refcnt" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for rtentry.rt_refcnt" >&5
-echo $ECHO_N "checking for rtentry.rt_refcnt... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
+    if [ x$netsnmp_cv_uint32_t_type = x ] ; then
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#include <net/route.h>
-
-
+$ac_includes_default
+extern unsigned short variable;
+extern uint32_t variable;
 int
 main ()
 {
 
-struct rtentry testit;
-testit.rt_refcnt $defineit;
-
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
+if ac_fn_c_try_compile "$LINENO"; then :
+  netsnmp_cv_uint32_t_type="short"
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "rtentry" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "rt_hash" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for rtentry.rt_hash" >&5
-echo $ECHO_N "checking for rtentry.rt_hash... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
+    if [ x$netsnmp_cv_uint32_t_type = x ] ; then
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#include <net/route.h>
-
-
+$ac_includes_default
+extern unsigned int variable;
+extern uint32_t variable;
 int
 main ()
 {
 
-struct rtentry testit;
-testit.rt_hash $defineit;
-
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
+if ac_fn_c_try_compile "$LINENO"; then :
+  netsnmp_cv_uint32_t_type="int"
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "rtentry" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "rt_use" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for rtentry.rt_use" >&5
-echo $ECHO_N "checking for rtentry.rt_use... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
+    if [ x$netsnmp_cv_uint32_t_type = x ] ; then
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#include <net/route.h>
-
-
+$ac_includes_default
+extern unsigned long variable;
+extern uint32_t variable;
 int
 main ()
 {
 
-struct rtentry testit;
-testit.rt_use $defineit;
-
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
+if ac_fn_c_try_compile "$LINENO"; then :
+  netsnmp_cv_uint32_t_type="long"
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-# Check tcpstat for tcpstat.tcp_rcvmemdrop
-
-
-ac_safe_struct=`echo "tcpstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "tcp_rcvmemdrop" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for tcpstat.tcp_rcvmemdrop" >&5
-echo $ECHO_N "checking for tcpstat.tcp_rcvmemdrop... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
+    if [ x$netsnmp_cv_uint32_t_type = x ] ; then
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef HAVE_SYS_TIMEOUT_H
-#include <sys/timeout.h>
-#endif
-#include <netinet/tcp.h>
-#ifdef HAVE_NETINET_TCP_TIMER_H
-#include <netinet/tcp_timer.h>
-#endif
-
-#ifdef HAVE_NETINET_TCP_VAR_H
-#include <netinet/tcp_var.h>
-#endif
-
-
+$ac_includes_default
+extern unsigned long long variable;
+extern uint32_t variable;
 int
 main ()
 {
 
-struct tcpstat testit;
-testit.tcp_rcvmemdrop $defineit;
-
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
+if ac_fn_c_try_compile "$LINENO"; then :
+  netsnmp_cv_uint32_t_type="long long"
 fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+     fi
 
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_cv_uint32_t_type" >&5
+$as_echo "$netsnmp_cv_uint32_t_type" >&6; }
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to printf a uint32_t" >&5
+$as_echo_n "checking how to printf a uint32_t... " >&6; }
+case "$netsnmp_cv_uint32_t_type" in
+    char|short|int) netsnmp_PRI32="" ;;
+    long) netsnmp_PRI32="l" ;;
+    "long long") netsnmp_PRI32="ll" ;;
+    *) as_fn_error $? "underlying type of uint32_t not known" "$LINENO" 5 ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_PRI32" >&5
+$as_echo "$netsnmp_PRI32" >&6; }
 
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+cat >>confdefs.h <<_ACEOF
+#define NETSNMP_PRI32 "$netsnmp_PRI32"
 _ACEOF
 
+
+# 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
+    if ${netsnmp_cv_bio_dgram_get_peer+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BIO_dgram_get_peer" >&5
+$as_echo_n "checking for BIO_dgram_get_peer... " >&6; }
 
-
-
-
-
-
-ac_safe_struct=`echo "ifaddr" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "ifa_next" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifaddr.ifa_next" >&5
-echo $ECHO_N "checking for ifaddr.ifa_next... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        oldLIBS="$LIBS"
+        LIBS="$LIBS -lcrypto"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
-
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-
-
+#include <openssl/bio.h>
 int
 main ()
 {
-
-struct ifaddr testit;
-testit.ifa_next $defineit;
-
+BIO_dgram_get_peer(NULL, NULL);
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
 
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  as_fn_error $? "DTLS support requires a newer version of OpenSSL" "$LINENO" 5
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+        LIBS="$oldLIBS"
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+fi
+
 fi
 
 
+# -*- autoconf -*-
+#########################################
+##
+# Checks for data structures & members
+##
+#########################################
 
-# Check ifnet entries using macro defined in aclocal.m4.
+##
+#   Simple checks:
+##
+
+#       struct arphd
+#   Agent:
 #
-# XXX  Broken on FreeBSD where these are #define'd in <net/if.h>
-#
-
-
-
-ac_safe_struct=`echo "ifnet" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "if_baudrate" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifnet.if_baudrate" >&5
-echo $ECHO_N "checking for ifnet.if_baudrate... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef IFNET_NEEDS_KERNEL
-#define _KERNEL 1
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-#ifdef HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#ifdef linux
-struct ifnet {
-	char	*if_name;		/* name, e.g. "en" or "lo" */
-	short	if_unit;		/* sub-unit for lower level driver */
-	short	if_mtu;			/* maximum transmission unit */
-	short	if_flags;		/* up/down, broadcast, etc. */
-	int	if_metric;		/* routing metric (external only) */
-	char    if_hwaddr [6];		/* ethernet address */
-	int	if_type;		/* interface type: 1=generic,
-					   28=slip, ether=6, loopback=24 */
-	int	if_speed;		/* interface speed: in bits/sec */
-
-	struct sockaddr if_addr;	/* interface's address */
-	struct sockaddr ifu_broadaddr;	/* broadcast address */
-	struct sockaddr ia_subnetmask; 	/* interface's mask */
-
-	struct	ifqueue {
-		int	ifq_len;
-		int	ifq_drops;
-	} if_snd;			/* output queue */
-	int	if_ibytes;		/* octets received on interface */
-	int	if_ipackets;		/* packets received on interface */
-	int	if_ierrors;		/* input errors on interface */
-        int     if_iqdrops;             /* input queue overruns */
-	int	if_obytes;		/* octets sent on interface */
-	int	if_opackets;		/* packets sent on interface */
-	int	if_oerrors;		/* output errors on interface */
-	int	if_collisions;		/* collisions on csma interfaces */
-/* end statistics */
-	struct	ifnet *if_next;
-};
-#endif
-
-
-int
-main ()
-{
-
-struct ifnet testit;
-testit.if_baudrate $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-
-ac_safe_struct=`echo "ifnet" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "if_baudrate.ifs_value" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifnet.if_baudrate.ifs_value" >&5
-echo $ECHO_N "checking for ifnet.if_baudrate.ifs_value... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef IFNET_NEEDS_KERNEL
-#define _KERNEL 1
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-#ifdef HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#ifdef linux
-struct ifnet {
-	char	*if_name;		/* name, e.g. "en" or "lo" */
-	short	if_unit;		/* sub-unit for lower level driver */
-	short	if_mtu;			/* maximum transmission unit */
-	short	if_flags;		/* up/down, broadcast, etc. */
-	int	if_metric;		/* routing metric (external only) */
-	char    if_hwaddr [6];		/* ethernet address */
-	int	if_type;		/* interface type: 1=generic,
-					   28=slip, ether=6, loopback=24 */
-	int	if_speed;		/* interface speed: in bits/sec */
-
-	struct sockaddr if_addr;	/* interface's address */
-	struct sockaddr ifu_broadaddr;	/* broadcast address */
-	struct sockaddr ia_subnetmask; 	/* interface's mask */
-
-	struct	ifqueue {
-		int	ifq_len;
-		int	ifq_drops;
-	} if_snd;			/* output queue */
-	int	if_ibytes;		/* octets received on interface */
-	int	if_ipackets;		/* packets received on interface */
-	int	if_ierrors;		/* input errors on interface */
-        int     if_iqdrops;             /* input queue overruns */
-	int	if_obytes;		/* octets sent on interface */
-	int	if_opackets;		/* packets sent on interface */
-	int	if_oerrors;		/* output errors on interface */
-	int	if_collisions;		/* collisions on csma interfaces */
-/* end statistics */
-	struct	ifnet *if_next;
-};
-#endif
-
-
-int
-main ()
-{
-
-struct ifnet testit;
-testit.if_baudrate.ifs_value $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-
-ac_safe_struct=`echo "ifnet" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "if_speed" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifnet.if_speed" >&5
-echo $ECHO_N "checking for ifnet.if_speed... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef IFNET_NEEDS_KERNEL
-#define _KERNEL 1
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-#ifdef HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#ifdef linux
-struct ifnet {
-	char	*if_name;		/* name, e.g. "en" or "lo" */
-	short	if_unit;		/* sub-unit for lower level driver */
-	short	if_mtu;			/* maximum transmission unit */
-	short	if_flags;		/* up/down, broadcast, etc. */
-	int	if_metric;		/* routing metric (external only) */
-	char    if_hwaddr [6];		/* ethernet address */
-	int	if_type;		/* interface type: 1=generic,
-					   28=slip, ether=6, loopback=24 */
-	int	if_speed;		/* interface speed: in bits/sec */
-
-	struct sockaddr if_addr;	/* interface's address */
-	struct sockaddr ifu_broadaddr;	/* broadcast address */
-	struct sockaddr ia_subnetmask; 	/* interface's mask */
-
-	struct	ifqueue {
-		int	ifq_len;
-		int	ifq_drops;
-	} if_snd;			/* output queue */
-	int	if_ibytes;		/* octets received on interface */
-	int	if_ipackets;		/* packets received on interface */
-	int	if_ierrors;		/* input errors on interface */
-        int     if_iqdrops;             /* input queue overruns */
-	int	if_obytes;		/* octets sent on interface */
-	int	if_opackets;		/* packets sent on interface */
-	int	if_oerrors;		/* output errors on interface */
-	int	if_collisions;		/* collisions on csma interfaces */
-/* end statistics */
-	struct	ifnet *if_next;
-};
-#endif
-
-
-int
-main ()
-{
-
-struct ifnet testit;
-testit.if_speed $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-
-ac_safe_struct=`echo "ifnet" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "if_type" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifnet.if_type" >&5
-echo $ECHO_N "checking for ifnet.if_type... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef IFNET_NEEDS_KERNEL
-#define _KERNEL 1
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-#ifdef HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#ifdef linux
-struct ifnet {
-	char	*if_name;		/* name, e.g. "en" or "lo" */
-	short	if_unit;		/* sub-unit for lower level driver */
-	short	if_mtu;			/* maximum transmission unit */
-	short	if_flags;		/* up/down, broadcast, etc. */
-	int	if_metric;		/* routing metric (external only) */
-	char    if_hwaddr [6];		/* ethernet address */
-	int	if_type;		/* interface type: 1=generic,
-					   28=slip, ether=6, loopback=24 */
-	int	if_speed;		/* interface speed: in bits/sec */
-
-	struct sockaddr if_addr;	/* interface's address */
-	struct sockaddr ifu_broadaddr;	/* broadcast address */
-	struct sockaddr ia_subnetmask; 	/* interface's mask */
-
-	struct	ifqueue {
-		int	ifq_len;
-		int	ifq_drops;
-	} if_snd;			/* output queue */
-	int	if_ibytes;		/* octets received on interface */
-	int	if_ipackets;		/* packets received on interface */
-	int	if_ierrors;		/* input errors on interface */
-        int     if_iqdrops;             /* input queue overruns */
-	int	if_obytes;		/* octets sent on interface */
-	int	if_opackets;		/* packets sent on interface */
-	int	if_oerrors;		/* output errors on interface */
-	int	if_collisions;		/* collisions on csma interfaces */
-/* end statistics */
-	struct	ifnet *if_next;
-};
-#endif
-
-
-int
-main ()
-{
-
-struct ifnet testit;
-testit.if_type $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-
-ac_safe_struct=`echo "ifnet" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "if_imcasts" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifnet.if_imcasts" >&5
-echo $ECHO_N "checking for ifnet.if_imcasts... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef IFNET_NEEDS_KERNEL
-#define _KERNEL 1
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-#ifdef HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#ifdef linux
-struct ifnet {
-	char	*if_name;		/* name, e.g. "en" or "lo" */
-	short	if_unit;		/* sub-unit for lower level driver */
-	short	if_mtu;			/* maximum transmission unit */
-	short	if_flags;		/* up/down, broadcast, etc. */
-	int	if_metric;		/* routing metric (external only) */
-	char    if_hwaddr [6];		/* ethernet address */
-	int	if_type;		/* interface type: 1=generic,
-					   28=slip, ether=6, loopback=24 */
-	int	if_speed;		/* interface speed: in bits/sec */
-
-	struct sockaddr if_addr;	/* interface's address */
-	struct sockaddr ifu_broadaddr;	/* broadcast address */
-	struct sockaddr ia_subnetmask; 	/* interface's mask */
-
-	struct	ifqueue {
-		int	ifq_len;
-		int	ifq_drops;
-	} if_snd;			/* output queue */
-	int	if_ibytes;		/* octets received on interface */
-	int	if_ipackets;		/* packets received on interface */
-	int	if_ierrors;		/* input errors on interface */
-        int     if_iqdrops;             /* input queue overruns */
-	int	if_obytes;		/* octets sent on interface */
-	int	if_opackets;		/* packets sent on interface */
-	int	if_oerrors;		/* output errors on interface */
-	int	if_collisions;		/* collisions on csma interfaces */
-/* end statistics */
-	struct	ifnet *if_next;
-};
-#endif
-
-
-int
-main ()
-{
-
-struct ifnet testit;
-testit.if_imcasts $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-
-ac_safe_struct=`echo "ifnet" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "if_iqdrops" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifnet.if_iqdrops" >&5
-echo $ECHO_N "checking for ifnet.if_iqdrops... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef IFNET_NEEDS_KERNEL
-#define _KERNEL 1
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-#ifdef HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#ifdef linux
-struct ifnet {
-	char	*if_name;		/* name, e.g. "en" or "lo" */
-	short	if_unit;		/* sub-unit for lower level driver */
-	short	if_mtu;			/* maximum transmission unit */
-	short	if_flags;		/* up/down, broadcast, etc. */
-	int	if_metric;		/* routing metric (external only) */
-	char    if_hwaddr [6];		/* ethernet address */
-	int	if_type;		/* interface type: 1=generic,
-					   28=slip, ether=6, loopback=24 */
-	int	if_speed;		/* interface speed: in bits/sec */
-
-	struct sockaddr if_addr;	/* interface's address */
-	struct sockaddr ifu_broadaddr;	/* broadcast address */
-	struct sockaddr ia_subnetmask; 	/* interface's mask */
-
-	struct	ifqueue {
-		int	ifq_len;
-		int	ifq_drops;
-	} if_snd;			/* output queue */
-	int	if_ibytes;		/* octets received on interface */
-	int	if_ipackets;		/* packets received on interface */
-	int	if_ierrors;		/* input errors on interface */
-        int     if_iqdrops;             /* input queue overruns */
-	int	if_obytes;		/* octets sent on interface */
-	int	if_opackets;		/* packets sent on interface */
-	int	if_oerrors;		/* output errors on interface */
-	int	if_collisions;		/* collisions on csma interfaces */
-/* end statistics */
-	struct	ifnet *if_next;
-};
-#endif
-
-
-int
-main ()
-{
-
-struct ifnet testit;
-testit.if_iqdrops $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-
-ac_safe_struct=`echo "ifnet" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "if_noproto" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifnet.if_noproto" >&5
-echo $ECHO_N "checking for ifnet.if_noproto... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef IFNET_NEEDS_KERNEL
-#define _KERNEL 1
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-#ifdef HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#ifdef linux
-struct ifnet {
-	char	*if_name;		/* name, e.g. "en" or "lo" */
-	short	if_unit;		/* sub-unit for lower level driver */
-	short	if_mtu;			/* maximum transmission unit */
-	short	if_flags;		/* up/down, broadcast, etc. */
-	int	if_metric;		/* routing metric (external only) */
-	char    if_hwaddr [6];		/* ethernet address */
-	int	if_type;		/* interface type: 1=generic,
-					   28=slip, ether=6, loopback=24 */
-	int	if_speed;		/* interface speed: in bits/sec */
-
-	struct sockaddr if_addr;	/* interface's address */
-	struct sockaddr ifu_broadaddr;	/* broadcast address */
-	struct sockaddr ia_subnetmask; 	/* interface's mask */
-
-	struct	ifqueue {
-		int	ifq_len;
-		int	ifq_drops;
-	} if_snd;			/* output queue */
-	int	if_ibytes;		/* octets received on interface */
-	int	if_ipackets;		/* packets received on interface */
-	int	if_ierrors;		/* input errors on interface */
-        int     if_iqdrops;             /* input queue overruns */
-	int	if_obytes;		/* octets sent on interface */
-	int	if_opackets;		/* packets sent on interface */
-	int	if_oerrors;		/* output errors on interface */
-	int	if_collisions;		/* collisions on csma interfaces */
-/* end statistics */
-	struct	ifnet *if_next;
-};
-#endif
-
-
-int
-main ()
-{
-
-struct ifnet testit;
-testit.if_noproto $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-
-ac_safe_struct=`echo "ifnet" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "if_omcasts" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifnet.if_omcasts" >&5
-echo $ECHO_N "checking for ifnet.if_omcasts... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef IFNET_NEEDS_KERNEL
-#define _KERNEL 1
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-#ifdef HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#ifdef linux
-struct ifnet {
-	char	*if_name;		/* name, e.g. "en" or "lo" */
-	short	if_unit;		/* sub-unit for lower level driver */
-	short	if_mtu;			/* maximum transmission unit */
-	short	if_flags;		/* up/down, broadcast, etc. */
-	int	if_metric;		/* routing metric (external only) */
-	char    if_hwaddr [6];		/* ethernet address */
-	int	if_type;		/* interface type: 1=generic,
-					   28=slip, ether=6, loopback=24 */
-	int	if_speed;		/* interface speed: in bits/sec */
-
-	struct sockaddr if_addr;	/* interface's address */
-	struct sockaddr ifu_broadaddr;	/* broadcast address */
-	struct sockaddr ia_subnetmask; 	/* interface's mask */
-
-	struct	ifqueue {
-		int	ifq_len;
-		int	ifq_drops;
-	} if_snd;			/* output queue */
-	int	if_ibytes;		/* octets received on interface */
-	int	if_ipackets;		/* packets received on interface */
-	int	if_ierrors;		/* input errors on interface */
-        int     if_iqdrops;             /* input queue overruns */
-	int	if_obytes;		/* octets sent on interface */
-	int	if_opackets;		/* packets sent on interface */
-	int	if_oerrors;		/* output errors on interface */
-	int	if_collisions;		/* collisions on csma interfaces */
-/* end statistics */
-	struct	ifnet *if_next;
-};
-#endif
-
-
-int
-main ()
-{
-
-struct ifnet testit;
-testit.if_omcasts $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-
-ac_safe_struct=`echo "ifnet" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "if_xname" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifnet.if_xname" >&5
-echo $ECHO_N "checking for ifnet.if_xname... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "xno" = "x"; then
-  defineit="= 0"
-elif test "xno" = "xno"; then
-  defineit=""
-else
-  defineit="no"
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef IFNET_NEEDS_KERNEL
-#define _KERNEL 1
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-#ifdef HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#ifdef linux
-struct ifnet {
-	char	*if_name;		/* name, e.g. "en" or "lo" */
-	short	if_unit;		/* sub-unit for lower level driver */
-	short	if_mtu;			/* maximum transmission unit */
-	short	if_flags;		/* up/down, broadcast, etc. */
-	int	if_metric;		/* routing metric (external only) */
-	char    if_hwaddr [6];		/* ethernet address */
-	int	if_type;		/* interface type: 1=generic,
-					   28=slip, ether=6, loopback=24 */
-	int	if_speed;		/* interface speed: in bits/sec */
-
-	struct sockaddr if_addr;	/* interface's address */
-	struct sockaddr ifu_broadaddr;	/* broadcast address */
-	struct sockaddr ia_subnetmask; 	/* interface's mask */
-
-	struct	ifqueue {
-		int	ifq_len;
-		int	ifq_drops;
-	} if_snd;			/* output queue */
-	int	if_ibytes;		/* octets received on interface */
-	int	if_ipackets;		/* packets received on interface */
-	int	if_ierrors;		/* input errors on interface */
-        int     if_iqdrops;             /* input queue overruns */
-	int	if_obytes;		/* octets sent on interface */
-	int	if_opackets;		/* packets sent on interface */
-	int	if_oerrors;		/* output errors on interface */
-	int	if_collisions;		/* collisions on csma interfaces */
-/* end statistics */
-	struct	ifnet *if_next;
-};
-#endif
-
-
-int
-main ()
-{
-
-struct ifnet testit;
-testit.if_xname $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-
-ac_safe_struct=`echo "ifnet" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "if_lastchange.tv_sec" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifnet.if_lastchange.tv_sec" >&5
-echo $ECHO_N "checking for ifnet.if_lastchange.tv_sec... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef IFNET_NEEDS_KERNEL
-#define _KERNEL 1
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-#ifdef HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#ifdef linux
-struct ifnet {
-	char	*if_name;		/* name, e.g. "en" or "lo" */
-	short	if_unit;		/* sub-unit for lower level driver */
-	short	if_mtu;			/* maximum transmission unit */
-	short	if_flags;		/* up/down, broadcast, etc. */
-	int	if_metric;		/* routing metric (external only) */
-	char    if_hwaddr [6];		/* ethernet address */
-	int	if_type;		/* interface type: 1=generic,
-					   28=slip, ether=6, loopback=24 */
-	int	if_speed;		/* interface speed: in bits/sec */
-
-	struct sockaddr if_addr;	/* interface's address */
-	struct sockaddr ifu_broadaddr;	/* broadcast address */
-	struct sockaddr ia_subnetmask; 	/* interface's mask */
-
-	struct	ifqueue {
-		int	ifq_len;
-		int	ifq_drops;
-	} if_snd;			/* output queue */
-	int	if_ibytes;		/* octets received on interface */
-	int	if_ipackets;		/* packets received on interface */
-	int	if_ierrors;		/* input errors on interface */
-        int     if_iqdrops;             /* input queue overruns */
-	int	if_obytes;		/* octets sent on interface */
-	int	if_opackets;		/* packets sent on interface */
-	int	if_oerrors;		/* output errors on interface */
-	int	if_collisions;		/* collisions on csma interfaces */
-/* end statistics */
-	struct	ifnet *if_next;
-};
-#endif
-
-
-int
-main ()
-{
-
-struct ifnet testit;
-testit.if_lastchange.tv_sec $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-
-ac_safe_struct=`echo "ifnet" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "if_lastchange.tv_nsec" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifnet.if_lastchange.tv_nsec" >&5
-echo $ECHO_N "checking for ifnet.if_lastchange.tv_nsec... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef IFNET_NEEDS_KERNEL
-#define _KERNEL 1
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-#ifdef HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#ifdef linux
-struct ifnet {
-	char	*if_name;		/* name, e.g. "en" or "lo" */
-	short	if_unit;		/* sub-unit for lower level driver */
-	short	if_mtu;			/* maximum transmission unit */
-	short	if_flags;		/* up/down, broadcast, etc. */
-	int	if_metric;		/* routing metric (external only) */
-	char    if_hwaddr [6];		/* ethernet address */
-	int	if_type;		/* interface type: 1=generic,
-					   28=slip, ether=6, loopback=24 */
-	int	if_speed;		/* interface speed: in bits/sec */
-
-	struct sockaddr if_addr;	/* interface's address */
-	struct sockaddr ifu_broadaddr;	/* broadcast address */
-	struct sockaddr ia_subnetmask; 	/* interface's mask */
-
-	struct	ifqueue {
-		int	ifq_len;
-		int	ifq_drops;
-	} if_snd;			/* output queue */
-	int	if_ibytes;		/* octets received on interface */
-	int	if_ipackets;		/* packets received on interface */
-	int	if_ierrors;		/* input errors on interface */
-        int     if_iqdrops;             /* input queue overruns */
-	int	if_obytes;		/* octets sent on interface */
-	int	if_opackets;		/* packets sent on interface */
-	int	if_oerrors;		/* output errors on interface */
-	int	if_collisions;		/* collisions on csma interfaces */
-/* end statistics */
-	struct	ifnet *if_next;
-};
-#endif
-
-
-int
-main ()
-{
-
-struct ifnet testit;
-testit.if_lastchange.tv_nsec $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-
-ac_safe_struct=`echo "ifnet" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "if_obytes" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifnet.if_obytes" >&5
-echo $ECHO_N "checking for ifnet.if_obytes... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef IFNET_NEEDS_KERNEL
-#define _KERNEL 1
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-#ifdef HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#ifdef linux
-struct ifnet {
-	char	*if_name;		/* name, e.g. "en" or "lo" */
-	short	if_unit;		/* sub-unit for lower level driver */
-	short	if_mtu;			/* maximum transmission unit */
-	short	if_flags;		/* up/down, broadcast, etc. */
-	int	if_metric;		/* routing metric (external only) */
-	char    if_hwaddr [6];		/* ethernet address */
-	int	if_type;		/* interface type: 1=generic,
-					   28=slip, ether=6, loopback=24 */
-	int	if_speed;		/* interface speed: in bits/sec */
-
-	struct sockaddr if_addr;	/* interface's address */
-	struct sockaddr ifu_broadaddr;	/* broadcast address */
-	struct sockaddr ia_subnetmask; 	/* interface's mask */
-
-	struct	ifqueue {
-		int	ifq_len;
-		int	ifq_drops;
-	} if_snd;			/* output queue */
-	int	if_ibytes;		/* octets received on interface */
-	int	if_ipackets;		/* packets received on interface */
-	int	if_ierrors;		/* input errors on interface */
-        int     if_iqdrops;             /* input queue overruns */
-	int	if_obytes;		/* octets sent on interface */
-	int	if_opackets;		/* packets sent on interface */
-	int	if_oerrors;		/* output errors on interface */
-	int	if_collisions;		/* collisions on csma interfaces */
-/* end statistics */
-	struct	ifnet *if_next;
-};
-#endif
-
-
-int
-main ()
-{
-
-struct ifnet testit;
-testit.if_obytes $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-
-ac_safe_struct=`echo "ifnet" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "if_ibytes" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifnet.if_ibytes" >&5
-echo $ECHO_N "checking for ifnet.if_ibytes... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef IFNET_NEEDS_KERNEL
-#define _KERNEL 1
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-#ifdef HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#ifdef linux
-struct ifnet {
-	char	*if_name;		/* name, e.g. "en" or "lo" */
-	short	if_unit;		/* sub-unit for lower level driver */
-	short	if_mtu;			/* maximum transmission unit */
-	short	if_flags;		/* up/down, broadcast, etc. */
-	int	if_metric;		/* routing metric (external only) */
-	char    if_hwaddr [6];		/* ethernet address */
-	int	if_type;		/* interface type: 1=generic,
-					   28=slip, ether=6, loopback=24 */
-	int	if_speed;		/* interface speed: in bits/sec */
-
-	struct sockaddr if_addr;	/* interface's address */
-	struct sockaddr ifu_broadaddr;	/* broadcast address */
-	struct sockaddr ia_subnetmask; 	/* interface's mask */
-
-	struct	ifqueue {
-		int	ifq_len;
-		int	ifq_drops;
-	} if_snd;			/* output queue */
-	int	if_ibytes;		/* octets received on interface */
-	int	if_ipackets;		/* packets received on interface */
-	int	if_ierrors;		/* input errors on interface */
-        int     if_iqdrops;             /* input queue overruns */
-	int	if_obytes;		/* octets sent on interface */
-	int	if_opackets;		/* packets sent on interface */
-	int	if_oerrors;		/* output errors on interface */
-	int	if_collisions;		/* collisions on csma interfaces */
-/* end statistics */
-	struct	ifnet *if_next;
-};
-#endif
-
-
-int
-main ()
-{
-
-struct ifnet testit;
-testit.if_ibytes $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-
-ac_safe_struct=`echo "ifnet" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "if_addrlist" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifnet.if_addrlist" >&5
-echo $ECHO_N "checking for ifnet.if_addrlist... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef IFNET_NEEDS_KERNEL
-#define _KERNEL 1
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-#ifdef HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#ifdef linux
-struct ifnet {
-	char	*if_name;		/* name, e.g. "en" or "lo" */
-	short	if_unit;		/* sub-unit for lower level driver */
-	short	if_mtu;			/* maximum transmission unit */
-	short	if_flags;		/* up/down, broadcast, etc. */
-	int	if_metric;		/* routing metric (external only) */
-	char    if_hwaddr [6];		/* ethernet address */
-	int	if_type;		/* interface type: 1=generic,
-					   28=slip, ether=6, loopback=24 */
-	int	if_speed;		/* interface speed: in bits/sec */
-
-	struct sockaddr if_addr;	/* interface's address */
-	struct sockaddr ifu_broadaddr;	/* broadcast address */
-	struct sockaddr ia_subnetmask; 	/* interface's mask */
-
-	struct	ifqueue {
-		int	ifq_len;
-		int	ifq_drops;
-	} if_snd;			/* output queue */
-	int	if_ibytes;		/* octets received on interface */
-	int	if_ipackets;		/* packets received on interface */
-	int	if_ierrors;		/* input errors on interface */
-        int     if_iqdrops;             /* input queue overruns */
-	int	if_obytes;		/* octets sent on interface */
-	int	if_opackets;		/* packets sent on interface */
-	int	if_oerrors;		/* output errors on interface */
-	int	if_collisions;		/* collisions on csma interfaces */
-/* end statistics */
-	struct	ifnet *if_next;
-};
-#endif
-
-
-int
-main ()
-{
-
-struct ifnet testit;
-testit.if_addrlist $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-
-ac_safe_struct=`echo "ifnet" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "if_addrhead.tqh_first" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ifnet.if_addrhead.tqh_first" >&5
-echo $ECHO_N "checking for ifnet.if_addrhead.tqh_first... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef IFNET_NEEDS_KERNEL
-#define _KERNEL 1
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-#ifdef HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#ifdef linux
-struct ifnet {
-	char	*if_name;		/* name, e.g. "en" or "lo" */
-	short	if_unit;		/* sub-unit for lower level driver */
-	short	if_mtu;			/* maximum transmission unit */
-	short	if_flags;		/* up/down, broadcast, etc. */
-	int	if_metric;		/* routing metric (external only) */
-	char    if_hwaddr [6];		/* ethernet address */
-	int	if_type;		/* interface type: 1=generic,
-					   28=slip, ether=6, loopback=24 */
-	int	if_speed;		/* interface speed: in bits/sec */
-
-	struct sockaddr if_addr;	/* interface's address */
-	struct sockaddr ifu_broadaddr;	/* broadcast address */
-	struct sockaddr ia_subnetmask; 	/* interface's mask */
-
-	struct	ifqueue {
-		int	ifq_len;
-		int	ifq_drops;
-	} if_snd;			/* output queue */
-	int	if_ibytes;		/* octets received on interface */
-	int	if_ipackets;		/* packets received on interface */
-	int	if_ierrors;		/* input errors on interface */
-        int     if_iqdrops;             /* input queue overruns */
-	int	if_obytes;		/* octets sent on interface */
-	int	if_opackets;		/* packets sent on interface */
-	int	if_oerrors;		/* output errors on interface */
-	int	if_collisions;		/* collisions on csma interfaces */
-/* end statistics */
-	struct	ifnet *if_next;
-};
-#endif
-
-
-int
-main ()
-{
-
-struct ifnet testit;
-testit.if_addrhead.tqh_first $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-
-ac_safe_struct=`echo "udpstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "udps_discard" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for udpstat.udps_discard" >&5
-echo $ECHO_N "checking for udpstat.udps_discard... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-#if HAVE_NETINET_UDP_H
-#include <netinet/udp.h>
-#endif
-#if HAVE_NETINET_UDP_VAR_H
-#include <netinet/udp_var.h>
-#endif
-
-
-int
-main ()
-{
-
-struct udpstat testit;
-testit.udps_discard $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "udpstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "udps_noport" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for udpstat.udps_noport" >&5
-echo $ECHO_N "checking for udpstat.udps_noport... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-#if HAVE_NETINET_UDP_H
-#include <netinet/udp.h>
-#endif
-#if HAVE_NETINET_UDP_VAR_H
-#include <netinet/udp_var.h>
-#endif
-
-
-int
-main ()
-{
-
-struct udpstat testit;
-testit.udps_noport $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "udpstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "udps_noportbcast" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for udpstat.udps_noportbcast" >&5
-echo $ECHO_N "checking for udpstat.udps_noportbcast... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-#if HAVE_NETINET_UDP_H
-#include <netinet/udp.h>
-#endif
-#if HAVE_NETINET_UDP_VAR_H
-#include <netinet/udp_var.h>
-#endif
-
-
-int
-main ()
-{
-
-struct udpstat testit;
-testit.udps_noportbcast $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "udpstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "udps_fullsock" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for udpstat.udps_fullsock" >&5
-echo $ECHO_N "checking for udpstat.udps_fullsock... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-#if HAVE_NETINET_UDP_H
-#include <netinet/udp.h>
-#endif
-#if HAVE_NETINET_UDP_VAR_H
-#include <netinet/udp_var.h>
-#endif
-
-
-int
-main ()
-{
-
-struct udpstat testit;
-testit.udps_fullsock $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "arphd" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "at_next" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for arphd.at_next" >&5
-echo $ECHO_N "checking for arphd.at_next... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
+ac_fn_c_check_member "$LINENO" "struct arphd" "at_next" "ac_cv_member_struct_arphd_at_next" "
+    $ac_includes_default
 
 #ifdef HAVE_SYS_PARAM_H
 #include <sys/param.h>
 #endif
-#include <sys/types.h>
+#ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
+#endif
 #ifdef HAVE_SYS_TIME_H
 #include <sys/time.h>
 #endif
@@ -46623,1167 +26340,73 @@
 #include <netinet/if_ether.h>
 #endif
 
+"
+if test "x$ac_cv_member_struct_arphd_at_next" = xyes; then :
 
-int
-main ()
-{
-
-struct arphd testit;
-testit.at_next $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_ARPHD_AT_NEXT 1
 _ACEOF
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+
 fi
 
 
-
-
-
-ac_safe_struct=`echo "swdevt" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "sw_nblksenabled" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for swdevt.sw_nblksenabled" >&5
-echo $ECHO_N "checking for swdevt.sw_nblksenabled... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#if HAVE_SYS_CONF_H
-#include <sys/conf.h>
+#       struct des_ks_struct
+#         ('weak_key' indicates older version of OpenSSL)
+#   Library:
+#
+if test "x$ac_cv_header_openssl_des_h" = "xyes" ; then
+    ac_fn_c_check_member "$LINENO" "struct des_ks_struct" "weak_key" "ac_cv_member_struct_des_ks_struct_weak_key" "
+#ifdef HAVE_OPENSSL_DES_H
+#include <openssl/des.h>
 #endif
 
+"
+if test "x$ac_cv_member_struct_des_ks_struct_weak_key" = xyes; then :
 
-int
-main ()
-{
-
-struct swdevt testit;
-testit.sw_nblksenabled $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_DES_KS_STRUCT_WEAK_KEY 1
 _ACEOF
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+
 fi
 
-
-
-
-
-ac_safe_struct=`echo "statvfs" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "mnt_dir" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for statvfs.mnt_dir" >&5
-echo $ECHO_N "checking for statvfs.mnt_dir... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
 fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
 
+#       struct dirent
+#         (see also AC_STRUCT_DIRENT_D_TYPE)
+#   Library:
+#
+ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" "
+    $ac_includes_default
 
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if HAVE_SYS_STATFS_H
-#include <sys/statfs.h>
-#endif
-#if HAVE_SYS_STATVFS_H
-#include <sys/statvfs.h>
+#if HAVE_DIRENT_H
+#include <dirent.h>
 #endif
 
+"
+if test "x$ac_cv_member_struct_dirent_d_type" = xyes; then :
 
-int
-main ()
-{
-
-struct statvfs testit;
-testit.mnt_dir $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_DIRENT_D_TYPE 1
 _ACEOF
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "statvfs" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "f_frsize" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for statvfs.f_frsize" >&5
-echo $ECHO_N "checking for statvfs.f_frsize... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if HAVE_SYS_STATFS_H
-#include <sys/statfs.h>
-#endif
-#if HAVE_SYS_STATVFS_H
-#include <sys/statvfs.h>
-#endif
-
-
-int
-main ()
-{
-
-struct statvfs testit;
-testit.f_frsize $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
 
 fi
 
 
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "statfs" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "f_frsize" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for statfs.f_frsize" >&5
-echo $ECHO_N "checking for statfs.f_frsize... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if HAVE_SYS_STATFS_H
-#include <sys/statfs.h>
-#endif
-#if HAVE_SYS_STATVFS_H
-#include <sys/statvfs.h>
-#endif
-
-
-int
-main ()
-{
-
-struct statfs testit;
-testit.f_frsize $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "statvfs" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "f_files" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for statvfs.f_files" >&5
-echo $ECHO_N "checking for statvfs.f_files... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if HAVE_SYS_STATFS_H
-#include <sys/statfs.h>
-#endif
-#if HAVE_SYS_STATVFS_H
-#include <sys/statvfs.h>
-#endif
-
-
-int
-main ()
-{
-
-struct statvfs testit;
-testit.f_files $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "statfs" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "f_files" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for statfs.f_files" >&5
-echo $ECHO_N "checking for statfs.f_files... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if HAVE_SYS_STATFS_H
-#include <sys/statfs.h>
-#endif
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_MOUNT_H
-#include <sys/mount.h>
-#endif
-
-
-int
-main ()
-{
-
-struct statfs testit;
-testit.f_files $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "statfs" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "f_ffree" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for statfs.f_ffree" >&5
-echo $ECHO_N "checking for statfs.f_ffree... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if HAVE_SYS_STATFS_H
-#include <sys/statfs.h>
-#endif
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_MOUNT_H
-#include <sys/mount.h>
-#endif
-
-
-int
-main ()
-{
-
-struct statfs testit;
-testit.f_ffree $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "statfs" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "f_favail" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for statfs.f_favail" >&5
-echo $ECHO_N "checking for statfs.f_favail... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if HAVE_SYS_STATFS_H
-#include <sys/statfs.h>
-#endif
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_MOUNT_H
-#include <sys/mount.h>
-#endif
-
-
-int
-main ()
-{
-
-struct statfs testit;
-testit.f_favail $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-
-
-ac_safe_struct=`echo "nlist" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "n_value" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for nlist.n_value" >&5
-echo $ECHO_N "checking for nlist.n_value... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#if HAVE_NLIST_H
-#include <nlist.h>
-#endif
-
-
-int
-main ()
-{
-
-struct nlist testit;
-testit.n_value $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-# struct nlist64 (IRIX)
-
-
-ac_safe_struct=`echo "nlist64" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "n_value" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for nlist64.n_value" >&5
-echo $ECHO_N "checking for nlist64.n_value... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_NLIST_H
-#include <nlist.h>
-#endif
-
-
-int
-main ()
-{
-
-struct nlist64 testit;
-testit.n_value $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
-_ACEOF
-
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-
-
-# struct ethtool_cmd
-echo "$as_me:$LINENO: checking for struct ethtool_cmd.speed_hi" >&5
-echo $ECHO_N "checking for struct ethtool_cmd.speed_hi... $ECHO_C" >&6
-if test "${ac_cv_member_struct_ethtool_cmd_speed_hi+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
+#       struct ethtool_cmd
+#
+if test "x$ac_cv_header_linux_ethtool_h" = "xyes" ; then
+ac_fn_c_check_member "$LINENO" "struct ethtool_cmd" "speed_hi" "ac_cv_member_struct_ethtool_cmd_speed_hi" "
     $ac_includes_default
 
 #ifdef HAVE_LINUX_ETHTOOL_H
 #include <linux/ethtool.h>
 #endif
 
-
-int
-main ()
-{
-static struct ethtool_cmd ac_aggr;
-if (ac_aggr.speed_hi)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_member_struct_ethtool_cmd_speed_hi=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-    $ac_includes_default
-
-#ifdef HAVE_LINUX_ETHTOOL_H
-#include <linux/ethtool.h>
-#endif
-
-
-int
-main ()
-{
-static struct ethtool_cmd ac_aggr;
-if (sizeof ac_aggr.speed_hi)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_member_struct_ethtool_cmd_speed_hi=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_member_struct_ethtool_cmd_speed_hi=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_member_struct_ethtool_cmd_speed_hi" >&5
-echo "${ECHO_T}$ac_cv_member_struct_ethtool_cmd_speed_hi" >&6
-if test $ac_cv_member_struct_ethtool_cmd_speed_hi = yes; then
+"
+if test "x$ac_cv_member_struct_ethtool_cmd_speed_hi" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
 #define HAVE_STRUCT_ETHTOOL_CMD_SPEED_HI 1
@@ -47792,37 +26415,14 @@
 
 fi
 
-
-# check struct ipstat for various things
-
-
-ac_safe_struct=`echo "ipstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "ips_cantforward" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ipstat.ips_cantforward" >&5
-echo $ECHO_N "checking for ipstat.ips_cantforward... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
 fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
 
+#       struct ipstat
+#   Agent:
+#
+ac_fn_c_check_member "$LINENO" "struct ipstat" "ips_cantfrag" "ac_cv_member_struct_ipstat_ips_cantfrag" "
+    $ac_includes_default
 
-#include <sys/types.h>
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -47830,95 +26430,18 @@
 #include <netinet/ip_var.h>
 #endif
 
+"
+if test "x$ac_cv_member_struct_ipstat_ips_cantfrag" = xyes; then :
 
-int
-main ()
-{
-
-struct ipstat testit;
-testit.ips_cantforward $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IPSTAT_IPS_CANTFRAG 1
 _ACEOF
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+
 fi
+ac_fn_c_check_member "$LINENO" "struct ipstat" "ips_delivered" "ac_cv_member_struct_ipstat_ips_delivered" "
+    $ac_includes_default
 
-
-
-
-
-ac_safe_struct=`echo "ipstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "ips_cantfrag" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ipstat.ips_cantfrag" >&5
-echo $ECHO_N "checking for ipstat.ips_cantfrag... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#include <sys/types.h>
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -47926,95 +26449,18 @@
 #include <netinet/ip_var.h>
 #endif
 
+"
+if test "x$ac_cv_member_struct_ipstat_ips_delivered" = xyes; then :
 
-int
-main ()
-{
-
-struct ipstat testit;
-testit.ips_cantfrag $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IPSTAT_IPS_DELIVERED 1
 _ACEOF
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+
 fi
+ac_fn_c_check_member "$LINENO" "struct ipstat" "ips_fragdropped" "ac_cv_member_struct_ipstat_ips_fragdropped" "
+    $ac_includes_default
 
-
-
-
-
-ac_safe_struct=`echo "ipstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "ips_delivered" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ipstat.ips_delivered" >&5
-echo $ECHO_N "checking for ipstat.ips_delivered... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#include <sys/types.h>
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -48022,95 +26468,18 @@
 #include <netinet/ip_var.h>
 #endif
 
+"
+if test "x$ac_cv_member_struct_ipstat_ips_fragdropped" = xyes; then :
 
-int
-main ()
-{
-
-struct ipstat testit;
-testit.ips_delivered $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IPSTAT_IPS_FRAGDROPPED 1
 _ACEOF
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+
 fi
+ac_fn_c_check_member "$LINENO" "struct ipstat" "ips_fragmented" "ac_cv_member_struct_ipstat_ips_fragmented" "
+    $ac_includes_default
 
-
-
-
-
-ac_safe_struct=`echo "ipstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "ips_fragdropped" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ipstat.ips_fragdropped" >&5
-echo $ECHO_N "checking for ipstat.ips_fragdropped... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#include <sys/types.h>
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -48118,95 +26487,18 @@
 #include <netinet/ip_var.h>
 #endif
 
+"
+if test "x$ac_cv_member_struct_ipstat_ips_fragmented" = xyes; then :
 
-int
-main ()
-{
-
-struct ipstat testit;
-testit.ips_fragdropped $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IPSTAT_IPS_FRAGMENTED 1
 _ACEOF
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+
 fi
+ac_fn_c_check_member "$LINENO" "struct ipstat" "ips_localout" "ac_cv_member_struct_ipstat_ips_localout" "
+    $ac_includes_default
 
-
-
-
-
-ac_safe_struct=`echo "ipstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "ips_fragtimeout" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ipstat.ips_fragtimeout" >&5
-echo $ECHO_N "checking for ipstat.ips_fragtimeout... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#include <sys/types.h>
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -48214,95 +26506,18 @@
 #include <netinet/ip_var.h>
 #endif
 
+"
+if test "x$ac_cv_member_struct_ipstat_ips_localout" = xyes; then :
 
-int
-main ()
-{
-
-struct ipstat testit;
-testit.ips_fragtimeout $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IPSTAT_IPS_LOCALOUT 1
 _ACEOF
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+
 fi
+ac_fn_c_check_member "$LINENO" "struct ipstat" "ips_noproto" "ac_cv_member_struct_ipstat_ips_noproto" "
+    $ac_includes_default
 
-
-
-
-
-ac_safe_struct=`echo "ipstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "ips_fragmented" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ipstat.ips_fragmented" >&5
-echo $ECHO_N "checking for ipstat.ips_fragmented... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#include <sys/types.h>
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -48310,95 +26525,18 @@
 #include <netinet/ip_var.h>
 #endif
 
+"
+if test "x$ac_cv_member_struct_ipstat_ips_noproto" = xyes; then :
 
-int
-main ()
-{
-
-struct ipstat testit;
-testit.ips_fragmented $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IPSTAT_IPS_NOPROTO 1
 _ACEOF
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+
 fi
+ac_fn_c_check_member "$LINENO" "struct ipstat" "ips_noroute" "ac_cv_member_struct_ipstat_ips_noroute" "
+    $ac_includes_default
 
-
-
-
-
-ac_safe_struct=`echo "ipstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "ips_localout" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ipstat.ips_localout" >&5
-echo $ECHO_N "checking for ipstat.ips_localout... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#include <sys/types.h>
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -48406,95 +26544,18 @@
 #include <netinet/ip_var.h>
 #endif
 
+"
+if test "x$ac_cv_member_struct_ipstat_ips_noroute" = xyes; then :
 
-int
-main ()
-{
-
-struct ipstat testit;
-testit.ips_localout $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IPSTAT_IPS_NOROUTE 1
 _ACEOF
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+
 fi
+ac_fn_c_check_member "$LINENO" "struct ipstat" "ips_odropped" "ac_cv_member_struct_ipstat_ips_odropped" "
+    $ac_includes_default
 
-
-
-
-
-ac_safe_struct=`echo "ipstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "ips_noproto" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ipstat.ips_noproto" >&5
-echo $ECHO_N "checking for ipstat.ips_noproto... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#include <sys/types.h>
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -48502,95 +26563,18 @@
 #include <netinet/ip_var.h>
 #endif
 
+"
+if test "x$ac_cv_member_struct_ipstat_ips_odropped" = xyes; then :
 
-int
-main ()
-{
-
-struct ipstat testit;
-testit.ips_noproto $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IPSTAT_IPS_ODROPPED 1
 _ACEOF
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+
 fi
+ac_fn_c_check_member "$LINENO" "struct ipstat" "ips_ofragments" "ac_cv_member_struct_ipstat_ips_ofragments" "
+    $ac_includes_default
 
-
-
-
-
-ac_safe_struct=`echo "ipstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "ips_noroute" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ipstat.ips_noroute" >&5
-echo $ECHO_N "checking for ipstat.ips_noroute... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#include <sys/types.h>
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -48598,95 +26582,18 @@
 #include <netinet/ip_var.h>
 #endif
 
+"
+if test "x$ac_cv_member_struct_ipstat_ips_ofragments" = xyes; then :
 
-int
-main ()
-{
-
-struct ipstat testit;
-testit.ips_noroute $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IPSTAT_IPS_OFRAGMENTS 1
 _ACEOF
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+
 fi
+ac_fn_c_check_member "$LINENO" "struct ipstat" "ips_reassembled" "ac_cv_member_struct_ipstat_ips_reassembled" "
+    $ac_includes_default
 
-
-
-
-
-ac_safe_struct=`echo "ipstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "ips_odropped" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ipstat.ips_odropped" >&5
-echo $ECHO_N "checking for ipstat.ips_odropped... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#include <sys/types.h>
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -48694,95 +26601,45 @@
 #include <netinet/ip_var.h>
 #endif
 
+"
+if test "x$ac_cv_member_struct_ipstat_ips_reassembled" = xyes; then :
 
-int
-main ()
-{
-
-struct ipstat testit;
-testit.ips_odropped $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IPSTAT_IPS_REASSEMBLED 1
 _ACEOF
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+
 fi
 
+#       struct ip6stat
+#   Agent:
+#
+ac_fn_c_check_member "$LINENO" "struct ip6stat" "ip6s_exthdrtoolong " "ac_cv_member_struct_ip6stat_ip6s_exthdrtoolong_" "
+    $ac_includes_default
 
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET6_IP6_VAR_H
+#include <netinet6/ip6_var.h>
+#endif
 
+"
+if test "x$ac_cv_member_struct_ip6stat_ip6s_exthdrtoolong_" = xyes; then :
 
-
-ac_safe_struct=`echo "ipstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "ips_ofragments" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ipstat.ips_ofragments" >&5
-echo $ECHO_N "checking for ipstat.ips_ofragments... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IP6STAT_IP6S_EXTHDRTOOLONG_ 1
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
 
 
-#include <sys/types.h>
+fi
+
+
+#
+#   Not-Used:
+ac_fn_c_check_member "$LINENO" "struct ipstat" "ips_cantforward" "ac_cv_member_struct_ipstat_ips_cantforward" "
+    $ac_includes_default
+
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -48790,95 +26647,18 @@
 #include <netinet/ip_var.h>
 #endif
 
+"
+if test "x$ac_cv_member_struct_ipstat_ips_cantforward" = xyes; then :
 
-int
-main ()
-{
-
-struct ipstat testit;
-testit.ips_ofragments $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IPSTAT_IPS_CANTFORWARD 1
 _ACEOF
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+
 fi
+ac_fn_c_check_member "$LINENO" "struct ipstat" "ips_fragtimeout" "ac_cv_member_struct_ipstat_ips_fragtimeout" "
+    $ac_includes_default
 
-
-
-
-
-ac_safe_struct=`echo "ipstat" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "ips_reassembled" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for ipstat.ips_reassembled" >&5
-echo $ECHO_N "checking for ipstat.ips_reassembled... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-#include <sys/types.h>
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -48886,179 +26666,2646 @@
 #include <netinet/ip_var.h>
 #endif
 
+"
+if test "x$ac_cv_member_struct_ipstat_ips_fragtimeout" = xyes; then :
 
-int
-main ()
-{
-
-struct ipstat testit;
-testit.ips_reassembled $defineit;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IPSTAT_IPS_FRAGTIMEOUT 1
 _ACEOF
 
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+
 fi
 
 
+#       struct mbstat
+#   Not-Used:
+#
+ac_fn_c_check_member "$LINENO" "struct mbstat" "m_clusters" "ac_cv_member_struct_mbstat_m_clusters" "
+    $ac_includes_default
 
-# check for the des_ks_struct.weak_key attribute, which indicates the
-# older openssl version is being used.
-if test "x$ac_cv_header_openssl_des_h" = "xyes" ; then
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_SYS_MBUF_H
+#include <sys/mbuf.h>
+#endif
 
+"
+if test "x$ac_cv_member_struct_mbstat_m_clusters" = xyes; then :
 
-ac_safe_struct=`echo "des_ks_struct" | sed 'y%./+-%__p_%'`
-ac_safe_member=`echo "weak_key" | sed 'y%./+-%__p_%'`
-ac_safe_all="ac_cv_struct_${ac_safe_struct}_has_${ac_safe_member}"
-  ac_uc_define=STRUCT_`echo "${ac_safe_struct}_HAS_${ac_safe_member}" | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-
-echo "$as_me:$LINENO: checking for des_ks_struct.weak_key" >&5
-echo $ECHO_N "checking for des_ks_struct.weak_key... $ECHO_C" >&6
-if eval "test \"\${$ac_safe_all+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-if test "x" = "x"; then
-  defineit="= 0"
-elif test "x" = "xno"; then
-  defineit=""
-else
-  defineit=""
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_MBSTAT_M_CLUSTERS 1
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct mbstat" "m_clfree" "ac_cv_member_struct_mbstat_m_clfree" "
+    $ac_includes_default
+
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_SYS_MBUF_H
+#include <sys/mbuf.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_mbstat_m_clfree" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_MBSTAT_M_CLFREE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct mbstat" "m_mbufs" "ac_cv_member_struct_mbstat_m_mbufs" "
+    $ac_includes_default
+
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_SYS_MBUF_H
+#include <sys/mbuf.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_mbstat_m_mbufs" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_MBSTAT_M_MBUFS 1
+_ACEOF
+
+
+fi
+
+
+#	struct uvmexp
+#
+ac_fn_c_check_member "$LINENO" "struct uvmexp" "pgswapin" "ac_cv_member_struct_uvmexp_pgswapin" "
+    $ac_includes_default
+
+#include <uvm/uvm_extern.h>
+
+"
+if test "x$ac_cv_member_struct_uvmexp_pgswapin" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UVMEXP_PGSWAPIN 1
+_ACEOF
+
+
+fi
+
+
+#       struct nlist
+#
+ac_fn_c_check_member "$LINENO" "struct nlist" "n_value" "ac_cv_member_struct_nlist_n_value" "
+    $ac_includes_default
+
+#if HAVE_NLIST_H
+#include <nlist.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_nlist_n_value" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_NLIST_N_VALUE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct nlist64" "n_value" "ac_cv_member_struct_nlist64_n_value" "
+    $ac_includes_default
+
+#if HAVE_NLIST_H
+#include <nlist.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_nlist64_n_value" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_NLIST64_N_VALUE 1
+_ACEOF
+
+
+fi
+
+
+#       struct sigaction
+#   Agent:
+#
+ac_fn_c_check_member "$LINENO" "struct sigaction" "sa_sigaction" "ac_cv_member_struct_sigaction_sa_sigaction" "
+    $ac_includes_default
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SIGNAL_H
+#include <sys/signal.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_sigaction_sa_sigaction" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SIGACTION_SA_SIGACTION 1
+_ACEOF
+
+
+fi
+
+
+#       struct sockaddr
+#   Library:
+#
+ac_fn_c_check_member "$LINENO" "struct sockaddr" "sa_len" "ac_cv_member_struct_sockaddr_sa_len" "
+    $ac_includes_default
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#elif defined(HAVE_WINSOCK2_H)
+#include <winsock2.h>
+#endif
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_sockaddr_sa_len" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SOCKADDR_SA_LEN 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct sockaddr" "sa_union.sa_generic.sa_family2" "ac_cv_member_struct_sockaddr_sa_union_sa_generic_sa_family2" "
+    $ac_includes_default
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#elif defined(HAVE_WINSOCK2_H)
+#include <winsock2.h>
+#endif
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_sockaddr_sa_union_sa_generic_sa_family2" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SOCKADDR_SA_UNION_SA_GENERIC_SA_FAMILY2 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct sockaddr_storage" "ss_family" "ac_cv_member_struct_sockaddr_storage_ss_family" "
+    $ac_includes_default
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#elif defined(HAVE_WINSOCK2_H)
+#include <winsock2.h>
+#endif
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_sockaddr_storage_ss_family" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct sockaddr_storage" "__ss_family" "ac_cv_member_struct_sockaddr_storage___ss_family" "
+    $ac_includes_default
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#elif defined(HAVE_WINSOCK2_H)
+#include <winsock2.h>
+#endif
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_sockaddr_storage___ss_family" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY 1
+_ACEOF
+
+
+fi
+
+
+#       struct sockaddr_in6     (see RFC 2553)
+#   Library:
+#
+ac_fn_c_check_member "$LINENO" "struct sockaddr_in6" "sin6_scope_id" "ac_cv_member_struct_sockaddr_in6_sin6_scope_id" "
+    $ac_includes_default
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.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
+
+"
+if test "x$ac_cv_member_struct_sockaddr_in6_sin6_scope_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID 1
+_ACEOF
+
+
+fi
+
+
+#       struct sockaddr_un
+#   Library:
+#
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of sockaddr_un.sun_path" >&5
+$as_echo_n "checking size of sockaddr_un.sun_path... " >&6; }
+if ${ac_cv_sizeof_sockaddr_un_sun_path+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (sockaddr_un.sun_path))" "ac_cv_sizeof_sockaddr_un_sun_path"        "
+    $ac_includes_default
+
+#if HAVE_SYS_UN_H
+#include <sys/un.h>
+#endif
+struct sockaddr_un sockaddr_un;
+
+"; then :
+
+else
+  if test "$ac_cv_type_sockaddr_un_sun_path" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (sockaddr_un.sun_path)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_sockaddr_un_sun_path=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_sockaddr_un_sun_path" >&5
+$as_echo "$ac_cv_sizeof_sockaddr_un_sun_path" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SOCKADDR_UN_SUN_PATH $ac_cv_sizeof_sockaddr_un_sun_path
+_ACEOF
+
+
+
+#       struct statfs
+#   Agent:
+#
+ac_fn_c_check_member "$LINENO" "struct statfs" "f_favail" "ac_cv_member_struct_statfs_f_favail" "
+    $ac_includes_default
+
+#if HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_NBUTIL_H
+#include <nbutil.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_statfs_f_favail" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS_F_FAVAIL 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct statfs" "f_ffree" "ac_cv_member_struct_statfs_f_ffree" "
+    $ac_includes_default
+
+#if HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_NBUTIL_H
+#include <nbutil.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_statfs_f_ffree" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS_F_FFREE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct statfs" "f_files" "ac_cv_member_struct_statfs_f_files" "
+    $ac_includes_default
+
+#if HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_NBUTIL_H
+#include <nbutil.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_statfs_f_files" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS_F_FILES 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct statfs" "f_flags" "ac_cv_member_struct_statfs_f_flags" "
+    $ac_includes_default
+
+#if HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_NBUTIL_H
+#include <nbutil.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_statfs_f_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS_F_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct statfs" "f_frsize" "ac_cv_member_struct_statfs_f_frsize" "
+    $ac_includes_default
+
+#if HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_NBUTIL_H
+#include <nbutil.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_statfs_f_frsize" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATFS_F_FRSIZE 1
+_ACEOF
+
+
+fi
+
+
+#       struct statvfs
+#   Agent:
+#
+ac_fn_c_check_member "$LINENO" "struct statvfs" "f_files" "ac_cv_member_struct_statvfs_f_files" "
+    $ac_includes_default
+
+#if HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#if HAVE_SYS_STATVFS_H
+#include <sys/statvfs.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_statvfs_f_files" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATVFS_F_FILES 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct statvfs" "f_frsize" "ac_cv_member_struct_statvfs_f_frsize" "
+    $ac_includes_default
+
+#if HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#if HAVE_SYS_STATVFS_H
+#include <sys/statvfs.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_statvfs_f_frsize" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATVFS_F_FRSIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct statvfs" "mnt_dir" "ac_cv_member_struct_statvfs_mnt_dir" "
+    $ac_includes_default
+
+#if HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#if HAVE_SYS_STATVFS_H
+#include <sys/statvfs.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_statvfs_mnt_dir" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STATVFS_MNT_DIR 1
+_ACEOF
+
+
+fi
+
+
+#       struct swdevt
+#   Not-Used:
+#
+ac_fn_c_check_member "$LINENO" "struct swdevt" "sw_nblksenabled" "ac_cv_member_struct_swdevt_sw_nblksenabled" "
+    $ac_includes_default
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_SYS_CONF_H
+#include <sys/conf.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_swdevt_sw_nblksenabled" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SWDEVT_SW_NBLKSENABLED 1
+_ACEOF
+
+
+fi
+
+
+#       struct tcpstat
+#   Agent:
+#
+ac_fn_c_check_member "$LINENO" "struct tcpstat" "tcp_rcvmemdrop" "ac_cv_member_struct_tcpstat_tcp_rcvmemdrop" "
+    $ac_includes_default
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_TIMEOUT_H
+#include <sys/timeout.h>
+#endif
+#ifdef HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+#ifdef HAVE_NETINET_TCP_TIMER_H
+#include <netinet/tcp_timer.h>
+#endif
+#ifdef HAVE_NETINET_TCP_VAR_H
+#include <netinet/tcp_var.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_tcpstat_tcp_rcvmemdrop" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TCPSTAT_TCP_RCVMEMDROP 1
+_ACEOF
+
+
+fi
+
+
+#       struct tm
+#   Library:
+#
+ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "
+    $ac_includes_default
+
+#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
+
+"
+if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TM_TM_GMTOFF 1
+_ACEOF
+
+
+fi
+
+
+#       extern timezone
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking extern timezone" >&5
+$as_echo_n "checking extern timezone... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-
-#include <openssl/des.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
 
 int
 main ()
 {
 
-struct des_ks_struct testit;
-testit.weak_key $defineit;
+  return timezone;
 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "${ac_safe_all}=yes"
+if ac_fn_c_try_link "$LINENO"; then :
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_TIMEZONE_VARIABLE 1" >>confdefs.h
+
+
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-eval "${ac_safe_all}=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
+#       struct timezone
+#   Library:
+#
+ac_fn_c_check_member "$LINENO" "struct timezone" "tz_dsttime" "ac_cv_member_struct_timezone_tz_dsttime" "
+    $ac_includes_default
 
-if eval "test \"x$`echo ${ac_safe_all}`\" = \"xyes\""; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  cat >>confdefs.h <<_ACEOF
-#define $ac_uc_define 1
+#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
+
+"
+if test "x$ac_cv_member_struct_timezone_tz_dsttime" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TIMEZONE_TZ_DSTTIME 1
 _ACEOF
 
+
+fi
+
+
+#       struct udpstat
+#   Agent:
+#
+ac_fn_c_check_member "$LINENO" "struct udpstat" "udps_discard" "ac_cv_member_struct_udpstat_udps_discard" "
+    $ac_includes_default
+
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IP_VAR_H
+#include <netinet/ip_var.h>
+#endif
+#if HAVE_NETINET_UDP_H
+#include <netinet/udp.h>
+#endif
+#if HAVE_NETINET_UDP_VAR_H
+#include <netinet/udp_var.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_udpstat_udps_discard" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UDPSTAT_UDPS_DISCARD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct udpstat" "udps_fullsock" "ac_cv_member_struct_udpstat_udps_fullsock" "
+    $ac_includes_default
+
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IP_VAR_H
+#include <netinet/ip_var.h>
+#endif
+#if HAVE_NETINET_UDP_H
+#include <netinet/udp.h>
+#endif
+#if HAVE_NETINET_UDP_VAR_H
+#include <netinet/udp_var.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_udpstat_udps_fullsock" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UDPSTAT_UDPS_FULLSOCK 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct udpstat" "udps_noport" "ac_cv_member_struct_udpstat_udps_noport" "
+    $ac_includes_default
+
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IP_VAR_H
+#include <netinet/ip_var.h>
+#endif
+#if HAVE_NETINET_UDP_H
+#include <netinet/udp.h>
+#endif
+#if HAVE_NETINET_UDP_VAR_H
+#include <netinet/udp_var.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_udpstat_udps_noport" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UDPSTAT_UDPS_NOPORT 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct udpstat" "udps_noportbcast" "ac_cv_member_struct_udpstat_udps_noportbcast" "
+    $ac_includes_default
+
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IP_VAR_H
+#include <netinet/ip_var.h>
+#endif
+#if HAVE_NETINET_UDP_H
+#include <netinet/udp.h>
+#endif
+#if HAVE_NETINET_UDP_VAR_H
+#include <netinet/udp_var.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_udpstat_udps_noportbcast" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UDPSTAT_UDPS_NOPORTBCAST 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct udpstat" "udps_ipackets" "ac_cv_member_struct_udpstat_udps_ipackets" "
+    $ac_includes_default
+
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IP_VAR_H
+#include <netinet/ip_var.h>
+#endif
+#if HAVE_NETINET_UDP_H
+#include <netinet/udp.h>
+#endif
+#if HAVE_NETINET_UDP_VAR_H
+#include <netinet/udp_var.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_udpstat_udps_ipackets" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UDPSTAT_UDPS_IPACKETS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct udpstat" "udps_opackets" "ac_cv_member_struct_udpstat_udps_opackets" "
+    $ac_includes_default
+
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IP_VAR_H
+#include <netinet/ip_var.h>
+#endif
+#if HAVE_NETINET_UDP_H
+#include <netinet/udp.h>
+#endif
+#if HAVE_NETINET_UDP_VAR_H
+#include <netinet/udp_var.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_udpstat_udps_opackets" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_UDPSTAT_UDPS_OPACKETS 1
+_ACEOF
+
+
+fi
+
+
+
+
+##
+#   ifnet-related checks:
+##
+
+#       Does "struct ifnet" need _KERNEL defined?       (Irix)
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if _KERNEL needs to be defined for if_mtu" >&5
+$as_echo_n "checking if _KERNEL needs to be defined for if_mtu... " >&6; }
+if ${ac_cv_IFNET_NEEDS_KERNEL+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+  ac_cv_IFNET_NEEDS_KERNEL=unknown
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+
+int
+main ()
+{
+struct ifnet test; test.if_mtu = 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_IFNET_NEEDS_KERNEL=no
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         if test "$ac_cv_IFNET_NEEDS_KERNEL" = unknown ; then
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _KERNEL 1
+#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+
+int
+main ()
+{
+struct ifnet test; test.if_mtu = 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_IFNET_NEEDS_KERNEL=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_IFNET_NEEDS_KERNEL" >&5
+$as_echo "$ac_cv_IFNET_NEEDS_KERNEL" >&6; }
+
+if test "x$ac_cv_IFNET_NEEDS_KERNEL" = "xyes"; then
+
+$as_echo "#define NETSNMP_IFNET_NEEDS_KERNEL 1" >>confdefs.h
+
+fi
+
+#       Does "struct ifnet" need _KERNEL_STRUCTURES defined?       (DragonFly 3)
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if _KERNEL_STRUCTURES needs to be defined for if_mtu" >&5
+$as_echo_n "checking if _KERNEL_STRUCTURES needs to be defined for if_mtu... " >&6; }
+if ${ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES=unknown
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+
+int
+main ()
+{
+struct ifnet test; test.if_mtu = 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         if test "$ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES" = unknown ; then
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define _KERNEL_STRUCTURES 1
+#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+
+int
+main ()
+{
+struct ifnet test; test.if_mtu = 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES" >&5
+$as_echo "$ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES" >&6; }
+
+if test "x$ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES" = "xyes"; then
+
+$as_echo "#define NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES 1" >>confdefs.h
+
+fi
+
+
+#       struct ifaddr
+#   Not-Used:
+#
+ac_fn_c_check_member "$LINENO" "struct ifaddr" "ifa_next" "ac_cv_member_struct_ifaddr_ifa_next" "
+
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+
+    $ac_includes_default
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifaddr_ifa_next" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFADDR_IFA_NEXT 1
+_ACEOF
 
 
 fi
 
-# attempt to figure out if sysctl is usable
 
+#       struct ifnet
+#         (Broken on FreeBSD - #define'd in <net/if.h>)
+#   Agent:   (?or Not-Used?)
+#
+ac_fn_c_check_member "$LINENO" "struct ifnet" "if_addrlist" "ac_cv_member_struct_ifnet_if_addrlist" "
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. \"en\" or \"lo\" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifnet_if_addrlist" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFNET_IF_ADDRLIST 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct ifnet" "if_addrhead.tqh_first" "ac_cv_member_struct_ifnet_if_addrhead_tqh_first" "
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. \"en\" or \"lo\" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifnet_if_addrhead_tqh_first" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFNET_IF_ADDRHEAD_TQH_FIRST 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct ifnet" "if_baudrate" "ac_cv_member_struct_ifnet_if_baudrate" "
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. \"en\" or \"lo\" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifnet_if_baudrate" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFNET_IF_BAUDRATE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct ifnet" "if_baudrate.ifs_value" "ac_cv_member_struct_ifnet_if_baudrate_ifs_value" "
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. \"en\" or \"lo\" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifnet_if_baudrate_ifs_value" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFNET_IF_BAUDRATE_IFS_VALUE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct ifnet" "if_ibytes" "ac_cv_member_struct_ifnet_if_ibytes" "
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. \"en\" or \"lo\" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifnet_if_ibytes" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFNET_IF_IBYTES 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct ifnet" "if_imcasts" "ac_cv_member_struct_ifnet_if_imcasts" "
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. \"en\" or \"lo\" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifnet_if_imcasts" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFNET_IF_IMCASTS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct ifnet" "if_iqdrops" "ac_cv_member_struct_ifnet_if_iqdrops" "
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. \"en\" or \"lo\" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifnet_if_iqdrops" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFNET_IF_IQDROPS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct ifnet" "if_lastchange.tv_sec" "ac_cv_member_struct_ifnet_if_lastchange_tv_sec" "
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. \"en\" or \"lo\" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifnet_if_lastchange_tv_sec" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFNET_IF_LASTCHANGE_TV_SEC 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct ifnet" "if_lastchange.tv_nsec" "ac_cv_member_struct_ifnet_if_lastchange_tv_nsec" "
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. \"en\" or \"lo\" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifnet_if_lastchange_tv_nsec" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFNET_IF_LASTCHANGE_TV_NSEC 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct ifnet" "if_mtu" "ac_cv_member_struct_ifnet_if_mtu" "
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. \"en\" or \"lo\" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifnet_if_mtu" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFNET_IF_MTU 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct ifnet" "if_noproto" "ac_cv_member_struct_ifnet_if_noproto" "
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. \"en\" or \"lo\" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifnet_if_noproto" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFNET_IF_NOPROTO 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct ifnet" "if_obytes" "ac_cv_member_struct_ifnet_if_obytes" "
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. \"en\" or \"lo\" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifnet_if_obytes" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFNET_IF_OBYTES 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct ifnet" "if_omcasts" "ac_cv_member_struct_ifnet_if_omcasts" "
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. \"en\" or \"lo\" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifnet_if_omcasts" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFNET_IF_OMCASTS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct ifnet" "if_speed" "ac_cv_member_struct_ifnet_if_speed" "
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. \"en\" or \"lo\" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifnet_if_speed" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFNET_IF_SPEED 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct ifnet" "if_type" "ac_cv_member_struct_ifnet_if_type" "
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. \"en\" or \"lo\" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifnet_if_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFNET_IF_TYPE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct ifnet" "if_xname" "ac_cv_member_struct_ifnet_if_xname" "
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. \"en\" or \"lo\" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+
+"
+if test "x$ac_cv_member_struct_ifnet_if_xname" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFNET_IF_XNAME 1
+_ACEOF
+
+
+fi
+
+
+
+# Check for BSD 4.3 vs 4.4 struct rtentry
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking type of rtentry structure" >&5
+$as_echo_n "checking type of rtentry structure... " >&6; }
+if ${ac_cv_RTENTRY_TYPE+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+        # BSD 4.4 compatible structure
+        #    ('rt_nodes' array)
+        #
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#include <sys/types.h>
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#include <sys/socket.h>
+#undef KERNEL
+#undef _KERNEL
+#include <net/route.h>
+
+int
+main ()
+{
+
+
+#ifndef HAVE_STRUCT_RTENTRY_RT_DST
+#define rt_dst rt_nodes->rn_key
+#endif
+
+  struct rtentry rt;
+  rt.rt_nodes[0].rn_flags = 1;
+  rt.rt_dst;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_RTENTRY_TYPE="BSD-4.4"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+        if test "x$ac_cv_RTENTRY_TYPE" = "x"; then
+        # BSD 4.3 compatible structure
+        #    ('rt_hash')
+        #
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#include <sys/types.h>
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#include <sys/socket.h>
+#undef KERNEL
+#undef _KERNEL
+#include <net/route.h>
+
+int
+main ()
+{
+
+
+struct rtentry rt;
+rt.rt_hash;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_RTENTRY_TYPE="BSD-4.3"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+        fi
+
+        if test "x$ac_cv_RTENTRY_TYPE" = "x"; then
+        # Neither BSD 4.3 nor 4.4 compatible structure
+        #
+            ac_cv_RTENTRY_TYPE="unknown"
+        fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_RTENTRY_TYPE" >&5
+$as_echo "$ac_cv_RTENTRY_TYPE" >&6; }
+
+if test "x$ac_cv_RTENTRY_TYPE" = "xBSD-4.4"; then
+
+$as_echo "#define RTENTRY_4_4 1" >>confdefs.h
+
+fi
+
+#    Check for ortentry                                 (Alpha)
+#
+if test "x$ac_cv_RTENTRY_TYPE" = "xunknown"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct rtentry" >&5
+$as_echo_n "checking for struct rtentry... " >&6; }
+if ${ac_cv_struct_rtentry+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#define KERNEL
+#include <net/route.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "ortentry" >/dev/null 2>&1; then :
+  ac_cv_struct_rtentry=ortentry
+else
+  ac_cv_struct_rtentry=rtentry
+fi
+rm -f conftest*
+
+        if test "x$ac_cv_struct_rtentry" = "xrtentry" ; then
+             ac_cv_struct_rtentry="rtentry"
+        else
+             ac_cv_struct_rtentry="ortentry"
+        fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_rtentry" >&5
+$as_echo "$ac_cv_struct_rtentry" >&6; }
+else
+    RTENTRY_TYPE="rtentry"
+    ac_cv_struct_rtentry="rtentry"
+fi
+
+if test "x$ac_cv_struct_rtentry" = "x"; then
+    ac_cv_struct_rtentry=rtentry
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define RTENTRY struct ${ac_cv_struct_rtentry}
+_ACEOF
+
+
+
+# -*- autoconf -*-
+#########################################
+##
+# Miscellaneous Operating-System characteristics
+##
+#########################################
+
+
+#	Determine how to test for character devices
+#	[We assume that /dev/null does actually exist!]
+#
+if test -c /dev/null; then
+    CDEV_TEST_FLAG="-c"
+elif test -f /dev/null; then
+    CDEV_TEST_FLAG="-f"
+else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Can't reliably detect character devices" >&5
+$as_echo "$as_me: WARNING: Can't reliably detect character devices" >&2;}
+    # Is it actually sensible to fall back on "test -f" ?
+    CDEV_TEST_FLAG="-f"
+fi
+
+#       Kernel Location
+#	    used in library/agent
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of system kernel" >&5
+$as_echo_n "checking for location of system kernel... " >&6; }
+if ${ac_cv_KERNEL_LOC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_KERNEL_LOC="unknown"
+    for i in /vmunix /hp-ux /stand/vmunix /dev/ksyms /kernel/unix /kernel/genunix /netbsd /unix /kernel /bsd /mach_kernel /boot/kernel/kernel
+    do
+        if test $CDEV_TEST_FLAG $i; then
+            ac_cv_KERNEL_LOC="$i"
+            break;
+        fi
+    done
+    #
+    # In principle, this test is meant to provide a default path to the kernel
+    # In practice, the test is broken and the kernel path is set to "unknown"
+    #
+    # Note that on certain systems (e.g. some Linux distributions),
+    #    it is impossible to predict the name of the kernel,
+    #    particularly if it includes the kernel version, architecture, etc
+    #
+    # Since this default will never actually be used, then don't try to set it
+    #
+    if test $i = "unknown"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Can't find system kernel... hopefully this won't be needed!" >&5
+$as_echo "$as_me: WARNING: Can't find system kernel... hopefully this won't be needed!" >&2;}
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_KERNEL_LOC" >&5
+$as_echo "$ac_cv_KERNEL_LOC" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define KERNEL_LOC "$ac_cv_KERNEL_LOC"
+_ACEOF
+
+
+
+#       /dev/kmem existence
+#	    used in agent only
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /dev/kmem" >&5
+$as_echo_n "checking for /dev/kmem... " >&6; }
+if ${ac_cv_HAVE_KMEM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test $CDEV_TEST_FLAG /dev/kmem; then
+        ac_cv_HAVE_KMEM="/dev/kmem"
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_HAVE_KMEM" >&5
+$as_echo "$ac_cv_HAVE_KMEM" >&6; }
+#
+#  Note that it's OK if this device is not found
+#
+if test "x$ac_cv_HAVE_KMEM" = "x/dev/kmem"; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_KMEM "$ac_cv_HAVE_KMEM"
+_ACEOF
+
+fi
+
+
+#       Swap device Location
+#           (/dev/dmem or /dev/drum)
+#	    used in agent only
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of swap device" >&5
+$as_echo_n "checking for location of swap device... " >&6; }
+if ${ac_cv_DMEM_LOC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test $CDEV_TEST_FLAG /dev/dmem; then
+        ac_cv_DMEM_LOC="/dev/dmem"
+    elif test $CDEV_TEST_FLAG /dev/drum; then
+        ac_cv_DMEM_LOC="/dev/drum"
+    else
+        ac_cv_DMEM_LOC="none"
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_DMEM_LOC" >&5
+$as_echo "$ac_cv_DMEM_LOC" >&6; }
+#
+#  Note that it's OK if this device is not found
+#
+if test "x$ac_cv_DMEM_LOC" != "xnone"; then
+
+cat >>confdefs.h <<_ACEOF
+#define DMEM_LOC "$ac_cv_DMEM_LOC"
+_ACEOF
+
+fi
+
+
+#       Mount table Location
+#	    used in agent only
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for mount table location" >&5
+$as_echo_n "checking for mount table location... " >&6; }
+if ${ac_cv_ETC_MNTTAB+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_ETC_MNTTAB="${with_mnttab:-unknown}"
+    if test "$ac_cv_ETC_MNTTAB" = "unknown"; then
+        for i in /etc/mnttab /etc/mtab /etc/filesystems /dev/mnttab
+        do
+            if test -f $i -o -c $i; then
+                ac_cv_ETC_MNTTAB="$i"
+                break;
+            fi
+        done
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ETC_MNTTAB" >&5
+$as_echo "$ac_cv_ETC_MNTTAB" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define ETC_MNTTAB "$ac_cv_ETC_MNTTAB"
+_ACEOF
+
+
+
+#       Printing
+#	    used in agent only
+#
+# Extract the first word of "lpstat", so it can be a program name with args.
+set dummy lpstat; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_LPSTAT_PATH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $LPSTAT_PATH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_LPSTAT_PATH="$LPSTAT_PATH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_LPSTAT_PATH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+LPSTAT_PATH=$ac_cv_path_LPSTAT_PATH
+if test -n "$LPSTAT_PATH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LPSTAT_PATH" >&5
+$as_echo "$LPSTAT_PATH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test x$LPSTAT_PATH != x; then
+
+cat >>confdefs.h <<_ACEOF
+#define LPSTAT_PATH "$LPSTAT_PATH"
+_ACEOF
+
+
+$as_echo "#define HAVE_LPSTAT 1" >>confdefs.h
+
+fi
+if test -r /etc/printcap; then
+
+$as_echo "#define HAVE_PRINTCAP 1" >>confdefs.h
+
+fi
+
+
+#       Check ps args
+#	    used in agent only
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for correct flags to ps" >&5
+$as_echo_n "checking for correct flags to ps... " >&6; }
+if ${ac_cv_ps_flags+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+if test "`($PSPROG -e 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
+    ac_cv_ps_flags="-e"
+elif test "`($PSPROG -el 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
+    ac_cv_ps_flags="-el"
+elif test "`($PSPROG acx 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
+    ac_cv_ps_flags="acx"
+elif test "`($PSPROG -acx 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
+    ac_cv_ps_flags="-acx"
+elif test "`($PSPROG -o pid,tt,state,time,ucomm 2>&1) | $EGREP ' ps *$' | awk '{print $NF}'`" = "ps" ; then
+    ac_cv_ps_flags="-o pid,tt,state,time,ucomm"
+elif test "`($PSPROG ax 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
+    ac_cv_ps_flags="ax"
+elif test "x$PARTIALTARGETOS" = "xcygwin"; then
+    ac_cv_ps_flags="-e"
+elif test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then
+    ac_cv_ps_flags="-e"
+else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to determine valid ps flags...  defaulting..." >&5
+$as_echo "$as_me: WARNING: Unable to determine valid ps flags...  defaulting..." >&2;}
+    ac_cv_ps_flags="-acx"
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ps_flags" >&5
+$as_echo "$ac_cv_ps_flags" >&6; }
+
+PSCMD="$PSPROG $ac_cv_ps_flags"
+
+
+cat >>confdefs.h <<_ACEOF
+#define PSCMD "$PSPROG $ac_cv_ps_flags"
+_ACEOF
+
+
+
+##
+#   System/Compilation-related
+##
+
+#       Test for SIGHUP
+#
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIGHUP" >&5
+$as_echo_n "checking for SIGHUP... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <signal.h>
+int
+main ()
+{
+return SIGHUP
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  netsnmp_have_sighup=yes
+else
+  netsnmp_have_sighup=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $netsnmp_have_sighup" >&5
+$as_echo "$netsnmp_have_sighup" >&6; }
+if test "x$netsnmp_have_sighup" = xyes; then
+
+$as_echo "#define HAVE_SIGHUP 1" >>confdefs.h
+
+fi
+
+
+#       Check whether sysctl() is usable
+#	    used in library/agent
+#
 if test $cross_compiling = yes; then
-  { echo "$as_me:$LINENO: WARNING: Can't check sysctl, manually define NETSNMP_CAN_USE_SYSCTL if platform support available" >&5
-echo "$as_me: WARNING: Can't check sysctl, manually define NETSNMP_CAN_USE_SYSCTL if platform support available" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Can't check sysctl, manually define NETSNMP_CAN_USE_SYSCTL if platform support available" >&5
+$as_echo "$as_me: WARNING: Can't check sysctl, manually define NETSNMP_CAN_USE_SYSCTL if platform support available" >&2;}
 else
-  echo "$as_me:$LINENO: checking if sysctl can read kernel information" >&5
-echo $ECHO_N "checking if sysctl can read kernel information... $ECHO_C" >&6
-if test "${ac_cv_NETSNMP_CAN_USE_SYSCTL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if sysctl can read kernel information" >&5
+$as_echo_n "checking if sysctl can read kernel information... " >&6; }
+if ${ac_cv_NETSNMP_CAN_USE_SYSCTL+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  if test "$cross_compiling" = yes; then
+  if test "$cross_compiling" = yes; then :
   ac_cv_NETSNMP_CAN_USE_SYSCTL=no
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #if TIME_WITH_SYS_TIME
@@ -49096,63 +29343,50 @@
 }
 
 _ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+if ac_fn_c_try_run "$LINENO"; then :
   ac_cv_NETSNMP_CAN_USE_SYSCTL=yes
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  ac_cv_NETSNMP_CAN_USE_SYSCTL=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-( exit $ac_status )
-ac_cv_NETSNMP_CAN_USE_SYSCTL=no
 fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_NETSNMP_CAN_USE_SYSCTL" >&5
-echo "${ECHO_T}$ac_cv_NETSNMP_CAN_USE_SYSCTL" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_NETSNMP_CAN_USE_SYSCTL" >&5
+$as_echo "$ac_cv_NETSNMP_CAN_USE_SYSCTL" >&6; }
 fi
 
 if test "x$ac_cv_NETSNMP_CAN_USE_SYSCTL" = "xyes"; then
-  cat >>confdefs.h <<\_ACEOF
-#define NETSNMP_CAN_USE_SYSCTL 1
-_ACEOF
+
+$as_echo "#define NETSNMP_CAN_USE_SYSCTL 1" >>confdefs.h
 
 fi
 
+
+#   Check whether TCP timer constants are indeed constant
+#       or depend on the kernel clock tick 'hz'.        (FreeBSD 4.x)
 #
-# In FreeBSD 4.x, the TCP timer constants aren't.  They are defined
-# in terms of 'hz', the kernel clock tick.  In this case,
-# we need to have a local variable 'hz' in scope and set to a useful
-# value whenever we use one of these constants.
+#       If the latter, then we will need to have a local
+#       variable 'hz' defined and with a suitable value,
+#       whenever we want to  use one one of these 'constants'.
 #
-echo "$as_me:$LINENO: checking whether TCP timers depend on 'hz'" >&5
-echo $ECHO_N "checking whether TCP timers depend on 'hz'... $ECHO_C" >&6
-if test "${ac_cv_TCPTV_NEEDS_HZ+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+# 	    used in agent only
+#
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether TCP timers depend on 'hz'" >&5
+$as_echo_n "checking whether TCP timers depend on 'hz'... " >&6; }
+if ${ac_cv_TCPTV_NEEDS_HZ+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+
 #include <netinet/tcp_timer.h>
 TCPTV_SRTTDFLT
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "hz" >/dev/null 2>&1; then
+  $EGREP "hz" >/dev/null 2>&1; then :
   ac_cv_TCPTV_NEEDS_HZ=yes
 else
   ac_cv_TCPTV_NEEDS_HZ=no
@@ -49160,16 +29394,376 @@
 rm -f conftest*
 
 fi
-echo "$as_me:$LINENO: result: $ac_cv_TCPTV_NEEDS_HZ" >&5
-echo "${ECHO_T}$ac_cv_TCPTV_NEEDS_HZ" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_TCPTV_NEEDS_HZ" >&5
+$as_echo "$ac_cv_TCPTV_NEEDS_HZ" >&6; }
 
 if test "x$ac_cv_TCPTV_NEEDS_HZ" = "xyes"; then
-  cat >>confdefs.h <<\_ACEOF
-#define TCPTV_NEEDS_HZ 1
+
+$as_echo "#define TCPTV_NEEDS_HZ 1" >>confdefs.h
+
+fi
+
+
+#   Check whether IP Route table is cached              (Solaris)
+#	    used in agent only
+#
+case $target_os in
+  solaris*)
+    #    Header checks                                  (Solaris 2.6/7)
+    #
+    for ac_header in inet/common.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "inet/common.h" "ac_cv_header_inet_common_h" "$ac_includes_default"
+if test "x$ac_cv_header_inet_common_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_INET_COMMON_H 1
 _ACEOF
 
 fi
 
+done
+
+    for ac_header in inet/ip.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "inet/ip.h" "ac_cv_header_inet_ip_h" "$ac_includes_default
+
+#if HAVE_SYS_STREAM_H
+#include <sys/stream.h>
+#endif
+#if HAVE_INET_COMMON_H
+#include <inet/common.h>
+#endif
+
+"
+if test "x$ac_cv_header_inet_ip_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_INET_IP_H 1
+_ACEOF
+ ac_inet_ip_h=yes
+else
+  ac_inet_ip_h=no
+fi
+
+done
+
+    if test $ac_inet_ip_h = yes ; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mib2_ipRouteEntry_t in inet/mib2.h" >&5
+$as_echo_n "checking for mib2_ipRouteEntry_t in inet/mib2.h... " >&6; }
+if ${ac_cv_mib2_ipRouteEntry_t+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#if HAVE_INET_MIB2_H
+#include <inet/mib2.h>
+#endif
+
+int
+main ()
+{
+
+  mib2_ipRouteEntry_t testit;
+  if(sizeof(testit))
+    return(0);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_mib2_ipRouteEntry_t=yes
+else
+  ac_cv_mib2_ipRouteEntry_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mib2_ipRouteEntry_t" >&5
+$as_echo "$ac_cv_mib2_ipRouteEntry_t" >&6; }
+
+        if test "x$ac_cv_mib2_ipRouteEntry_t" = "xyes" ; then
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether IRE_CACHE is defined in inet/ip.h" >&5
+$as_echo_n "checking whether IRE_CACHE is defined in inet/ip.h... " >&6; }
+if ${ac_cv_ire_cache+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#if HAVE_INET_IP_H
+#include <inet/ip.h>
+#endif
+
+int
+main ()
+{
+
+  int testit=IRE_CACHE;
+  if(testit)
+    return(0);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_ire_cache=yes
+else
+  ac_cv_ire_cache=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ire_cache" >&5
+$as_echo "$ac_cv_ire_cache" >&6; }
+        else
+            ac_cv_ire_cache=no
+        fi
+
+        if test "x$ac_cv_ire_cache" = "xyes" ; then
+
+$as_echo "#define HAVE_DEFINED_IRE_CACHE /**/" >>confdefs.h
+
+        else
+            { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: It seems that you have inet/ip.h, but IRE_CACHE is not defined. \
+That means that your query to ipRoute MIB could generate over 20k results! \
+And this can be very slow." >&5
+$as_echo "$as_me: WARNING: It seems that you have inet/ip.h, but IRE_CACHE is not defined. \
+That means that your query to ipRoute MIB could generate over 20k results! \
+And this can be very slow." >&2;}
+        fi
+    fi         # "test $ac_inet_ip_h = yes"
+    ;;
+esac
+
+#   Check whether IP_PKTINFO is usable.
+#
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for IP_PKTINFO " >&5
+$as_echo_n "checking for IP_PKTINFO ... " >&6; }
+if ${ac_cv_have_ip_pktinfo+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>  /* printf() */
+#include <stdlib.h> /* malloc() */
+#include <string.h> /* memset() */
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+int
+main ()
+{
+
+    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);
+        }
+    }
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_have_ip_pktinfo=yes
+else
+  ac_cv_have_ip_pktinfo=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_ip_pktinfo" >&5
+$as_echo "$ac_cv_have_ip_pktinfo" >&6; }
+if test x$ac_cv_have_ip_pktinfo = xyes; then
+
+$as_echo "#define HAVE_IP_PKTINFO 1" >>confdefs.h
+
+fi
+
+#   Check whether IP_RECVDSTADDR is usable.
+#
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for IP_RECVDSTADDR " >&5
+$as_echo_n "checking for IP_RECVDSTADDR ... " >&6; }
+if ${ac_cv_have_ip_recvdstaddr+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdio.h>  /* printf() */
+#include <stdlib.h> /* malloc() */
+#include <string.h> /* memset() */
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+int
+main ()
+{
+
+    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));
+        }
+    }
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_have_ip_recvdstaddr=yes
+else
+  ac_cv_have_ip_recvdstaddr=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_ip_recvdstaddr" >&5
+$as_echo "$ac_cv_have_ip_recvdstaddr" >&6; }
+if test x$ac_cv_have_ip_recvdstaddr = xyes; then
+
+$as_echo "#define HAVE_IP_RECVDSTADDR 1" >>confdefs.h
+
+fi
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
 #
 # define the agent libraries variables
 #
@@ -49178,503 +29772,44 @@
 
 
 
-#
-# Prompt for various bits of user information
-#
 
-if test "x$ac_cv_user_prompt_NETSNMP_LOGFILE" = "x" -o "x$ac_cv_user_prompt_NETSNMP_SYS_LOC" = "x" -o "x$ac_cv_user_prompt_NETSNMP_SYS_CONTACT" = "x" -o "x$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" = "x"; then
-echo "$as_me:$LINENO: checking whether to prompt for values" >&5
-echo $ECHO_N "checking whether to prompt for values... $ECHO_C" >&6
-if test "${ac_cv_have_warned+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
 
-if test "x$defaults" = "xno"; then
-cat << EOF
 
-	 ************** Configuration Section **************
 
-	You are about to be prompted with a series of questions.  Answer
-them carefully, as they determine how the SNMP agent and related
-applications are to function.
 
-	After the configure script finishes, you can browse the newly
-created net-snmp-config.h file for further - less important - parameters to
-modify.  Be careful if you re-run configure though, since net-snmp-config.h
-will be overwritten.
 
--Press return to continue-
-EOF
+ac_config_files="$ac_config_files Makefile:Makefile.top:Makefile.in:Makefile.rules"
 
-read tmpinput
-ac_cv_have_warned="yes"
-else
-  ac_cv_have_warned="no"
-fi
+ac_config_files="$ac_config_files snmplib/Makefile:Makefile.top:snmplib/Makefile.in:Makefile.rules:snmplib/Makefile.depend"
 
-fi
-echo "$as_me:$LINENO: result: $ac_cv_have_warned" >&5
-echo "${ECHO_T}$ac_cv_have_warned" >&6
-else
-  ac_cv_have_warned="yes"
-fi
+ac_config_files="$ac_config_files apps/Makefile:Makefile.top:apps/Makefile.in:Makefile.rules:apps/Makefile.depend"
 
-ME=`$WHOAMI`
-if test -f /etc/resolv.conf; then
-  LOC=`cat /etc/resolv.conf | grep '^domain' | tail -1 | awk '{print $NF}'`
-else
-  LOC="@no.where"
-fi
+ac_config_files="$ac_config_files apps/snmpnetstat/Makefile:Makefile.top:apps/snmpnetstat/Makefile.in:Makefile.rules:apps/snmpnetstat/Makefile.depend"
 
+ac_config_files="$ac_config_files agent/Makefile:Makefile.top:agent/Makefile.in:Makefile.rules:agent/Makefile.depend"
 
-MSG_CHECK=`echo "
+ac_config_files="$ac_config_files agent/helpers/Makefile:Makefile.top:agent/helpers/Makefile.in:Makefile.rules:agent/helpers/Makefile.depend"
 
-*** Default SNMP Version:
+ac_config_files="$ac_config_files agent/mibgroup/Makefile:Makefile.top:agent/mibgroup/Makefile.in:Makefile.rules:agent/mibgroup/Makefile.depend"
 
-	Starting with Net-SNMP 5.0, you can choose the default version of
-the SNMP protocol to use when no version is given explicitly on the
-command line, or via an 'snmp.conf' file.  In the past this was set to
-SNMPv1, but you can use this to switch to SNMPv3 if desired.  SNMPv3
-will provide a more secure management environment (and thus you're
-encouraged to switch to SNMPv3), but may break existing scripts that
-rely on the old behaviour.  (Though such scripts will probably need to
-be changed to use the '-c' community flag anyway, as the SNMPv1
-command line usage has changed as well.).
-   At this prompt you can select \"1\", \"2\" (for SNMPv2c), or \"3\" as
-the default version for the command tools (snmpget, ...) to use.  This
-can always be overridden at runtime using the -v flag to the tools, or
-by using the \"defVersion\" token in your snmp.conf file.
-   Providing the --with-default-snmp-version=\"x\" parameter to ./configure
-will avoid this prompt.
+ac_config_files="$ac_config_files local/Makefile:Makefile.top:local/Makefile.in:Makefile.rules"
 
-Default version of SNMP to use" | tail -1`
-echo "$as_me:$LINENO: checking $MSG_CHECK" >&5
-echo $ECHO_N "checking $MSG_CHECK... $ECHO_C" >&6
-if test "${ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  echo "" >&6
+ac_config_files="$ac_config_files testing/Makefile:Makefile.top:testing/Makefile.in"
 
-if test "x$defaults" = "xno"; then
-echo $ECHO_N "
+ac_config_files="$ac_config_files man/Makefile:Makefile.top:man/Makefile.in:Makefile.rules"
 
-*** Default SNMP Version:
+ac_config_files="$ac_config_files mibs/Makefile:Makefile.top:mibs/Makefile.in:Makefile.rules"
 
-	Starting with Net-SNMP 5.0, you can choose the default version of
-the SNMP protocol to use when no version is given explicitly on the
-command line, or via an 'snmp.conf' file.  In the past this was set to
-SNMPv1, but you can use this to switch to SNMPv3 if desired.  SNMPv3
-will provide a more secure management environment (and thus you're
-encouraged to switch to SNMPv3), but may break existing scripts that
-rely on the old behaviour.  (Though such scripts will probably need to
-be changed to use the '-c' community flag anyway, as the SNMPv1
-command line usage has changed as well.).
-   At this prompt you can select \"1\", \"2\" (for SNMPv2c), or \"3\" as
-the default version for the command tools (snmpget, ...) to use.  This
-can always be overridden at runtime using the -v flag to the tools, or
-by using the \"defVersion\" token in your snmp.conf file.
-   Providing the --with-default-snmp-version=\"x\" parameter to ./configure
-will avoid this prompt.
+ac_config_files="$ac_config_files net-snmp-config:net-snmp-config.in"
 
-Default version of SNMP to use (3): $ECHO_C"
-read tmpinput
-if test "$tmpinput" = "" -a "3" != ""; then
-  tmpinput="3"
-fi
-eval NETSNMP_DEFAULT_SNMP_VERSION=\"$tmpinput\"
-else
-tmpinput="3"
-eval NETSNMP_DEFAULT_SNMP_VERSION=\"$tmpinput\"
-fi
+ac_config_files="$ac_config_files net-snmp-create-v3-user:net-snmp-create-v3-user.in"
 
+ac_config_files="$ac_config_files dist/generation-scripts/gen-variables:dist/generation-scripts/gen-variables.in"
 
-eval ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION=\$NETSNMP_DEFAULT_SNMP_VERSION
-echo $ECHO_N "setting $MSG_CHECK to...  $ECHO_C" >&6
+ac_config_files="$ac_config_files local/snmpconf"
 
-fi
-echo "$as_me:$LINENO: result: $ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" >&5
-echo "${ECHO_T}$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" >&6
-if test "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" != "none"; then
-  if test "xunquoted" = "xquoted" -o "xunquoted" = "xQUOTED"; then
-    cat >>confdefs.h <<_ACEOF
-#define NETSNMP_DEFAULT_SNMP_VERSION "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION"
-_ACEOF
 
-  else
-    cat >>confdefs.h <<_ACEOF
-#define NETSNMP_DEFAULT_SNMP_VERSION $ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION
-_ACEOF
-
-  fi
-fi
-
-
-# we tested this above before the prompt, but the prompt may give a new value.
-if test "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" = "2c"; then
-  ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION="2"
-fi
-if test "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" != "1" -a "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" != "2" -a "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" != "3"; then
-  { { echo "$as_me:$LINENO: error: Illegal version number.  Only 1, 2 (for SNMPv2c) and 3 are supported." >&5
-echo "$as_me: error: Illegal version number.  Only 1, 2 (for SNMPv2c) and 3 are supported." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-
-MSG_CHECK=`echo "
-
-*** System Contact Information:
-
-	Describes who should be contacted about the host the agent is
-running on.  This information is available in the MIB-II tree.  This
-can also be over-ridden using the \"syscontact\" syntax in the agent's
-configuration files.
-  Providing the --with-sys-contact=\"contact\" parameter to ./configure
-will avoid this prompt.
-
-System Contact Information" | tail -1`
-echo "$as_me:$LINENO: checking $MSG_CHECK" >&5
-echo $ECHO_N "checking $MSG_CHECK... $ECHO_C" >&6
-if test "${ac_cv_user_prompt_NETSNMP_SYS_CONTACT+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  echo "" >&6
-
-if test "x$defaults" = "xno"; then
-echo $ECHO_N "
-
-*** System Contact Information:
-
-	Describes who should be contacted about the host the agent is
-running on.  This information is available in the MIB-II tree.  This
-can also be over-ridden using the \"syscontact\" syntax in the agent's
-configuration files.
-  Providing the --with-sys-contact=\"contact\" parameter to ./configure
-will avoid this prompt.
-
-System Contact Information ($ME@$LOC): $ECHO_C"
-read tmpinput
-if test "$tmpinput" = "" -a "$ME@$LOC" != ""; then
-  tmpinput="$ME@$LOC"
-fi
-eval NETSNMP_SYS_CONTACT=\"$tmpinput\"
-else
-tmpinput="$ME@$LOC"
-eval NETSNMP_SYS_CONTACT=\"$tmpinput\"
-fi
-
-
-eval ac_cv_user_prompt_NETSNMP_SYS_CONTACT=\$NETSNMP_SYS_CONTACT
-echo $ECHO_N "setting $MSG_CHECK to...  $ECHO_C" >&6
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_user_prompt_NETSNMP_SYS_CONTACT" >&5
-echo "${ECHO_T}$ac_cv_user_prompt_NETSNMP_SYS_CONTACT" >&6
-if test "$ac_cv_user_prompt_NETSNMP_SYS_CONTACT" != "none"; then
-  if test "xquoted" = "xquoted" -o "xquoted" = "xQUOTED"; then
-    cat >>confdefs.h <<_ACEOF
-#define NETSNMP_SYS_CONTACT "$ac_cv_user_prompt_NETSNMP_SYS_CONTACT"
-_ACEOF
-
-  else
-    cat >>confdefs.h <<_ACEOF
-#define NETSNMP_SYS_CONTACT $ac_cv_user_prompt_NETSNMP_SYS_CONTACT
-_ACEOF
-
-  fi
-fi
-
-
-
-MSG_CHECK=`echo "
-
-*** System Location:
-
-	Describes the location of the system.  This information is
-available in the MIB-II tree.  this can also be over-ridden using the
-\"syslocation\" syntax in the agent's configuration files.
-  Providing the --with-sys-location=\"location\" parameter to ./configure
-will avoid this prompt.
-
-System Location" | tail -1`
-echo "$as_me:$LINENO: checking $MSG_CHECK" >&5
-echo $ECHO_N "checking $MSG_CHECK... $ECHO_C" >&6
-if test "${ac_cv_user_prompt_NETSNMP_SYS_LOC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  echo "" >&6
-
-if test "x$defaults" = "xno"; then
-echo $ECHO_N "
-
-*** System Location:
-
-	Describes the location of the system.  This information is
-available in the MIB-II tree.  this can also be over-ridden using the
-\"syslocation\" syntax in the agent's configuration files.
-  Providing the --with-sys-location=\"location\" parameter to ./configure
-will avoid this prompt.
-
-System Location (Unknown): $ECHO_C"
-read tmpinput
-if test "$tmpinput" = "" -a "Unknown" != ""; then
-  tmpinput="Unknown"
-fi
-eval NETSNMP_SYS_LOC=\"$tmpinput\"
-else
-tmpinput="Unknown"
-eval NETSNMP_SYS_LOC=\"$tmpinput\"
-fi
-
-
-eval ac_cv_user_prompt_NETSNMP_SYS_LOC=\$NETSNMP_SYS_LOC
-echo $ECHO_N "setting $MSG_CHECK to...  $ECHO_C" >&6
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_user_prompt_NETSNMP_SYS_LOC" >&5
-echo "${ECHO_T}$ac_cv_user_prompt_NETSNMP_SYS_LOC" >&6
-if test "$ac_cv_user_prompt_NETSNMP_SYS_LOC" != "none"; then
-  if test "xquoted" = "xquoted" -o "xquoted" = "xQUOTED"; then
-    cat >>confdefs.h <<_ACEOF
-#define NETSNMP_SYS_LOC "$ac_cv_user_prompt_NETSNMP_SYS_LOC"
-_ACEOF
-
-  else
-    cat >>confdefs.h <<_ACEOF
-#define NETSNMP_SYS_LOC $ac_cv_user_prompt_NETSNMP_SYS_LOC
-_ACEOF
-
-  fi
-fi
-
-
-if test -d /var/log; then
-  defaultlog="/var/log/snmpd.log"
-else
-  defaultlog="/usr/adm/snmpd.log"
-fi
-
-
-MSG_CHECK=`echo "
-
-*** Logfile location:
-
-	Enter the default location for the snmpd agent to dump
-information & errors to.  If not defined (enter the keyword \"none\"
-at the prompt below) the agent will use stdout and stderr instead.
-(Note: This value can be over-ridden using command line options.)
-  Providing the --with-logfile=\"path\" parameter to ./configure
-will avoid this prompt.
-
-Location to write logfile" | tail -1`
-echo "$as_me:$LINENO: checking $MSG_CHECK" >&5
-echo $ECHO_N "checking $MSG_CHECK... $ECHO_C" >&6
-if test "${ac_cv_user_prompt_NETSNMP_LOGFILE+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  echo "" >&6
-
-if test "x$defaults" = "xno"; then
-echo $ECHO_N "
-
-*** Logfile location:
-
-	Enter the default location for the snmpd agent to dump
-information & errors to.  If not defined (enter the keyword \"none\"
-at the prompt below) the agent will use stdout and stderr instead.
-(Note: This value can be over-ridden using command line options.)
-  Providing the --with-logfile=\"path\" parameter to ./configure
-will avoid this prompt.
-
-Location to write logfile ($defaultlog): $ECHO_C"
-read tmpinput
-if test "$tmpinput" = "" -a "$defaultlog" != ""; then
-  tmpinput="$defaultlog"
-fi
-eval NETSNMP_LOGFILE=\"$tmpinput\"
-else
-tmpinput="$defaultlog"
-eval NETSNMP_LOGFILE=\"$tmpinput\"
-fi
-
-
-eval ac_cv_user_prompt_NETSNMP_LOGFILE=\$NETSNMP_LOGFILE
-echo $ECHO_N "setting $MSG_CHECK to...  $ECHO_C" >&6
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_user_prompt_NETSNMP_LOGFILE" >&5
-echo "${ECHO_T}$ac_cv_user_prompt_NETSNMP_LOGFILE" >&6
-if test "$ac_cv_user_prompt_NETSNMP_LOGFILE" != "none"; then
-  if test "xquoted" = "xquoted" -o "xquoted" = "xQUOTED"; then
-    cat >>confdefs.h <<_ACEOF
-#define NETSNMP_LOGFILE "$ac_cv_user_prompt_NETSNMP_LOGFILE"
-_ACEOF
-
-  else
-    cat >>confdefs.h <<_ACEOF
-#define NETSNMP_LOGFILE $ac_cv_user_prompt_NETSNMP_LOGFILE
-_ACEOF
-
-  fi
-fi
-
-
-if test -d /var; then
-  defaultstore="/var/net-snmp"
-  ucddefaultstore="/var/ucd-snmp"
-else
-  defaultstore="/etc/net-snmp"
-  ucddefaultstore="/etc/ucd-snmp"
-fi
-
-
-MSG_CHECK=`echo "
-
-*** snmpd persistent storage location:
-
-	Enter a directory for the SNMP library to store persistent
-data in the form of a configuration file.  This default location is
-different than the old default location (which was for ucd-snmp).  If
-you stay with the new path, I'll ask you in a second if you wish to
-copy your files over to the new location (once only).  If you pick
-some other path than the default, you'll have to copy them yourself.
-There is nothing wrong with picking the old path ($ucddefaultstore) if
-you'd rather.
-  Providing the --with-persistent-directory=\"path\" parameter to
-./configure will avoid this prompt.
-
-Location to write persistent information" | tail -1`
-echo "$as_me:$LINENO: checking $MSG_CHECK" >&5
-echo $ECHO_N "checking $MSG_CHECK... $ECHO_C" >&6
-if test "${ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  echo "" >&6
-
-if test "x$defaults" = "xno"; then
-echo $ECHO_N "
-
-*** snmpd persistent storage location:
-
-	Enter a directory for the SNMP library to store persistent
-data in the form of a configuration file.  This default location is
-different than the old default location (which was for ucd-snmp).  If
-you stay with the new path, I'll ask you in a second if you wish to
-copy your files over to the new location (once only).  If you pick
-some other path than the default, you'll have to copy them yourself.
-There is nothing wrong with picking the old path ($ucddefaultstore) if
-you'd rather.
-  Providing the --with-persistent-directory=\"path\" parameter to
-./configure will avoid this prompt.
-
-Location to write persistent information ($defaultstore): $ECHO_C"
-read tmpinput
-if test "$tmpinput" = "" -a "$defaultstore" != ""; then
-  tmpinput="$defaultstore"
-fi
-eval NETSNMP_PERSISTENT_DIRECTORY=\"$tmpinput\"
-else
-tmpinput="$defaultstore"
-eval NETSNMP_PERSISTENT_DIRECTORY=\"$tmpinput\"
-fi
-
-
-eval ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY=\$NETSNMP_PERSISTENT_DIRECTORY
-echo $ECHO_N "setting $MSG_CHECK to...  $ECHO_C" >&6
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY" >&5
-echo "${ECHO_T}$ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY" >&6
-if test "$ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY" != "none"; then
-  if test "xquoted" = "xquoted" -o "xquoted" = "xQUOTED"; then
-    cat >>confdefs.h <<_ACEOF
-#define NETSNMP_PERSISTENT_DIRECTORY "$ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY"
-_ACEOF
-
-  else
-    cat >>confdefs.h <<_ACEOF
-#define NETSNMP_PERSISTENT_DIRECTORY $ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY
-_ACEOF
-
-  fi
-fi
-
-
-PERSISTENT_DIRECTORY=$ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY
-
-UCDPERSISTENT_DIRECTORY=$ucddefaultstore
-
-
-if test $PERSISTENT_DIRECTORY = "$defaultstore" -a -d "$ucddefaultstore" -a ! -d "$defaultstore" ; then
-echo "$as_me:$LINENO: checking If we should copy the old persistent directory" >&5
-echo $ECHO_N "checking If we should copy the old persistent directory... $ECHO_C" >&6
-if test "${ac_cv_user_prompt_COPY_PERSISTENT_FILES+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-if test "x$defaults" = "xno"; then
-echo $ECHO_N "
-
-*** Copying old ucd-snmp persistent files to net-snmp persistent directory:
-
-	Would you like to copy the older ucd-snmp persistent files
-into your new net-snmp persistent file path?  This will functionally
-save all your ucd-snmp data and let it be used within the net-snmp
-tools.  This will only be done once when you run make install.  If you
-wish to do this, enter "yes" at the prompt.
-  Providing the --with-copy-persistent-files=\"no\" (or \"yes\")
-parameters to ./configure will avoid this prompt.
-
-Copy ucd-snmp data into the net-snmp data directory ("yes"): $ECHO_C"
-read tmpinput
-if test "$tmpinput" = "" -a ""yes"" != ""; then
-  tmpinput=""yes""
-fi
-eval ac_cv_user_prompt_COPY_PERSISTENT_FILES=\"$tmpinput\"
-else
-tmpinput=""yes""
-eval ac_cv_user_prompt_COPY_PERSISTENT_FILES=\"$tmpinput\"
-fi
-
-
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_user_prompt_COPY_PERSISTENT_FILES" >&5
-echo "${ECHO_T}$ac_cv_user_prompt_COPY_PERSISTENT_FILES" >&6
-else
-ac_cv_user_prompt_COPY_PERSISTENT_FILES="no"
-fi
-COPY_PERSISTENT_FILES="$ac_cv_user_prompt_COPY_PERSISTENT_FILES"
-
-
-
-
-          ac_config_files="$ac_config_files Makefile:Makefile.top:Makefile.in:Makefile.rules"
-
-          ac_config_files="$ac_config_files snmplib/Makefile:Makefile.top:snmplib/Makefile.in:Makefile.rules:snmplib/Makefile.depend"
-
-          ac_config_files="$ac_config_files apps/Makefile:Makefile.top:apps/Makefile.in:Makefile.rules:apps/Makefile.depend"
-
-          ac_config_files="$ac_config_files apps/snmpnetstat/Makefile:Makefile.top:apps/snmpnetstat/Makefile.in:Makefile.rules:apps/snmpnetstat/Makefile.depend"
-
-          ac_config_files="$ac_config_files agent/Makefile:Makefile.top:agent/Makefile.in:Makefile.rules:agent/Makefile.depend"
-
-          ac_config_files="$ac_config_files agent/helpers/Makefile:Makefile.top:agent/helpers/Makefile.in:Makefile.rules:agent/helpers/Makefile.depend"
-
-          ac_config_files="$ac_config_files agent/mibgroup/Makefile:Makefile.top:agent/mibgroup/Makefile.in:Makefile.rules:agent/mibgroup/Makefile.depend"
-
-          ac_config_files="$ac_config_files local/Makefile:Makefile.top:local/Makefile.in:Makefile.rules"
-
-          ac_config_files="$ac_config_files testing/Makefile:Makefile.top:testing/Makefile.in"
-
-          ac_config_files="$ac_config_files man/Makefile:Makefile.top:man/Makefile.in:Makefile.rules"
-
-          ac_config_files="$ac_config_files mibs/Makefile:Makefile.top:mibs/Makefile.in:Makefile.rules"
-
-          ac_config_files="$ac_config_files net-snmp-config:net-snmp-config.in"
-
-
-          ac_config_commands="$ac_config_commands default"
+ac_config_commands="$ac_config_commands default"
 
 
 #
@@ -49686,11 +29821,6 @@
 
 
 
-
-
-
-
-
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
@@ -49709,39 +29839,70 @@
 
 # The following way of writing the cache mishandles newlines in values,
 # but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
+# So, we kill variables containing newlines.
 # Ultrix sh set writes to stderr and can't be redirected directly,
 # and sets the high bit in the cache file unless we assign to the vars.
-{
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
   (set) 2>&1 |
-    case `(ac_space=' '; set | grep ac_space) 2>&1` in
-    *ac_space=\ *)
-      # `set' does not quote correctly, so add quotes (double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \).
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
       sed -n \
 	"s/'/'\\\\''/g;
 	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;;
+      ;; #(
     *)
       # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n \
-	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
       ;;
-    esac;
-} |
+    esac |
+    sort
+) |
   sed '
+     /^ac_cv_env_/b end
      t clear
-     : clear
+     :clear
      s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
      t end
-     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     : end' >>confcache
-if diff $cache_file confcache >/dev/null 2>&1; then :; else
-  if test -w $cache_file; then
-    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
-    cat confcache >$cache_file
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+	cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+	  mv -f confcache "$cache_file"$$ &&
+	  mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+	  mv -f confcache "$cache_file" ;;
+	esac
+      fi
+    fi
   else
-    echo "not updating unwritable cache $cache_file"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
   fi
 fi
 rm -f confcache
@@ -49750,32 +29911,19 @@
 # Let make expand exec_prefix.
 test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
 
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
-s/:*\$(srcdir):*/:/;
-s/:*\${srcdir}:*/:/;
-s/:*@srcdir@:*/:/;
-s/^\([^=]*=[	 ]*\):*/\1/;
-s/:*$//;
-s/^[^=]*=[	 ]*$//;
-}'
-fi
-
 DEFS=-DHAVE_CONFIG_H
 
 ac_libobjs=
 ac_ltlibobjs=
+U=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
-  ac_i=`echo "$ac_i" |
-	 sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
-  # 2. Add them.
-  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
-  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
 done
 LIBOBJS=$ac_libobjs
 
@@ -49783,12 +29931,15 @@
 
 
 
-: ${CONFIG_STATUS=./config.status}
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
 #! $SHELL
 # Generated by $as_me.
 # Run this file to recreate the current configuration.
@@ -49798,81 +29949,253 @@
 debug=false
 ac_cs_recheck=false
 ac_cs_silent=false
+
 SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
-cat >>$CONFIG_STATUS <<\_ACEOF
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-  set -o posix
-fi
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
+  setopt NO_GLOB_SUBST
 else
-  as_unset=false
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
 fi
 
 
-# Work around bugs in pre-3.0 UWIN ksh.
-$as_unset ENV MAIL MAILPATH
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
 PS1='$ '
 PS2='> '
 PS4='+ '
 
 # NLS nuisances.
-for as_var in \
-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-  LC_TELEPHONE LC_TIME
-do
-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-    eval $as_var=C; export $as_var
-  else
-    $as_unset $as_var
-  fi
-done
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
 
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1; then
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
 else
   as_expr=false
 fi
 
-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
   as_basename=basename
 else
   as_basename=false
 fi
 
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
 
-# Name of the executable.
-as_me=`$as_basename "$0" ||
+as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)$' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
-  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\/\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
 
-
-# PATH needs CR, and LINENO needs CR and PATH.
 # Avoid depending upon Character Ranges.
 as_cr_letters='abcdefghijklmnopqrstuvwxyz'
 as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
@@ -49880,148 +30203,123 @@
 as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conf$$.sh
-fi
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
-  # Find who we are.  Look in the path if we contain no path at all
-  # relative or not.
-  case $0 in
-    *[\\/]* ) as_myself=$0 ;;
-    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-
-       ;;
-  esac
-  # We did not find ourselves, most probably we were run as `sh COMMAND'
-  # in which case we are not to be found in the path.
-  if test "x$as_myself" = x; then
-    as_myself=$0
-  fi
-  if test ! -f "$as_myself"; then
-    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
-  case $CONFIG_SHELL in
-  '')
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for as_base in sh bash ksh sh5; do
-	 case $as_dir in
-	 /*)
-	   if ("$as_dir/$as_base" -c '
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
-	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
-	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
-	     CONFIG_SHELL=$as_dir/$as_base
-	     export CONFIG_SHELL
-	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
-	   fi;;
-	 esac
-       done
-done
-;;
-  esac
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line before each line; the second 'sed' does the real
-  # work.  The second script uses 'N' to pair each line-number line
-  # with the numbered line, and appends trailing '-' during
-  # substitution so that $LINENO is not a special case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
-  sed '=' <$as_myself |
-    sed '
-      N
-      s,$,-,
-      : loop
-      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-      t loop
-      s,-$,,
-      s,^['$as_cr_digits']*\n,,
-    ' >$as_me.lineno &&
-  chmod +x $as_me.lineno ||
-    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensible to this).
-  . ./$as_me.lineno
-  # Exit status is that of the last command.
-  exit
-}
-
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
-  *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T='	' ;;
-  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
-  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
 esac
 
-if expr a : '\(a\)' >/dev/null 2>&1; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
 rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  # We could just check for DJGPP; but this test a) works b) is more generic
-  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-  if test -f conf$$.exe; then
-    # Don't use ln at all; we don't have any links
-    as_ln_s='cp -p'
-  else
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
     as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
   fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
 else
   as_ln_s='cp -p'
 fi
-rm -f conf$$ conf$$.exe conf$$.file
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
 
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
 if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
   test -d ./-p && rmdir ./-p
   as_mkdir_p=false
 fi
 
-as_executable_p="test -f"
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in #(
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -50030,31 +30328,20 @@
 as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
 
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" 	$as_nl"
-
-# CDPATH.
-$as_unset CDPATH
-
 exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
 
-# Open the log real soon, to keep \$[0] and so on meaningful, and to
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
 # report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.  Logging --version etc. is OK.
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-} >&5
-cat >&5 <<_CSEOF
-
-This file was extended by Net-SNMP $as_me 5.4.4, which was
-generated by GNU Autoconf 2.59.  Invocation command line was
+# values after options handling.
+ac_log="
+This file was extended by Net-SNMP $as_me 5.7.3.rc1, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -50062,45 +30349,47 @@
   CONFIG_COMMANDS = $CONFIG_COMMANDS
   $ $0 $@
 
-_CSEOF
-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
-echo >&5
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
 _ACEOF
 
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 # Files that config.status was made for.
-if test -n "$ac_config_files"; then
-  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
-fi
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
 
-if test -n "$ac_config_headers"; then
-  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
-fi
+_ACEOF
 
-if test -n "$ac_config_links"; then
-  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_commands"; then
-  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
 
-Usage: $0 [OPTIONS] [FILE]...
+Usage: $0 [OPTION]... [TAG]...
 
   -h, --help       print this help, then exit
-  -V, --version    print version number, then exit
-  -q, --quiet      do not print progress messages
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
   -d, --debug      don't remove temporary files
       --recheck    update $as_me by reconfiguring in the same conditions
-  --file=FILE[:TEMPLATE]
-		   instantiate the configuration file FILE
-  --header=FILE[:TEMPLATE]
-		   instantiate the configuration header FILE
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
 
 Configuration files:
 $config_files
@@ -50111,84 +30400,91 @@
 Configuration commands:
 $config_commands
 
-Report bugs to <bug-autoconf@gnu.org>."
+Report bugs to <net-snmp-coders@lists.sourceforge.net>."
+
 _ACEOF
-
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-Net-SNMP config.status 5.4.4
-configured by $0, generated by GNU Autoconf 2.59,
-  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+Net-SNMP config.status 5.7.3.rc1
+configured by $0, generated by GNU Autoconf 2.68,
+  with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2003 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
-srcdir=$srcdir
-INSTALL="$INSTALL"
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If no file are specified by the user, then we need to provide default
-# value.  By we need to know if files were specified by the user.
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
 ac_need_defaults=:
 while test $# != 0
 do
   case $1 in
-  --*=*)
-    ac_option=`expr "x$1" : 'x\([^=]*\)='`
-    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
     ac_shift=:
     ;;
-  -*)
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
     ac_option=$1
     ac_optarg=$2
     ac_shift=shift
     ;;
-  *) # This is not an option, so the user has probably given explicit
-     # arguments.
-     ac_option=$1
-     ac_need_defaults=false;;
   esac
 
   case $ac_option in
   # Handling of the options.
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
   -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
     ac_cs_recheck=: ;;
-  --version | --vers* | -V )
-    echo "$ac_cs_version"; exit 0 ;;
-  --he | --h)
-    # Conflict between --help and --header
-    { { echo "$as_me:$LINENO: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2;}
-   { (exit 1); exit 1; }; };;
-  --help | --hel | -h )
-    echo "$ac_cs_usage"; exit 0 ;;
-  --debug | --d* | -d )
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
     debug=: ;;
   --file | --fil | --fi | --f )
     $ac_shift
-    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
     ac_need_defaults=false;;
   --header | --heade | --head | --hea )
     $ac_shift
-    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
     ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
   | -silent | --silent | --silen | --sile | --sil | --si | --s)
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2;}
-   { (exit 1); exit 1; }; } ;;
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
 
-  *) ac_config_targets="$ac_config_targets $1" ;;
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
 
   esac
   shift
@@ -50202,43 +30498,344 @@
 fi
 
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
-  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
 fi
 
 _ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in AS \
+DLLTOOL \
+OBJDUMP \
+SHELL \
+ECHO \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+deplibs_check_method \
+file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+sharedlib_from_linklib_cmd \
+AR \
+AR_FLAGS \
+archiver_list_spec \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+nm_file_list_spec \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_pic \
+lt_prog_compiler_wl \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+MANIFEST_TOOL \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_flag_spec_ld \
+hardcode_libdir_separator \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postlink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'
 
 
 
 
+_ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
 for ac_config_target in $ac_config_targets
 do
-  case "$ac_config_target" in
-  # Handling of arguments.
-  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile:Makefile.top:Makefile.in:Makefile.rules" ;;
-  "snmplib/Makefile" ) CONFIG_FILES="$CONFIG_FILES snmplib/Makefile:Makefile.top:snmplib/Makefile.in:Makefile.rules:snmplib/Makefile.depend" ;;
-  "apps/Makefile" ) CONFIG_FILES="$CONFIG_FILES apps/Makefile:Makefile.top:apps/Makefile.in:Makefile.rules:apps/Makefile.depend" ;;
-  "apps/snmpnetstat/Makefile" ) CONFIG_FILES="$CONFIG_FILES apps/snmpnetstat/Makefile:Makefile.top:apps/snmpnetstat/Makefile.in:Makefile.rules:apps/snmpnetstat/Makefile.depend" ;;
-  "agent/Makefile" ) CONFIG_FILES="$CONFIG_FILES agent/Makefile:Makefile.top:agent/Makefile.in:Makefile.rules:agent/Makefile.depend" ;;
-  "agent/helpers/Makefile" ) CONFIG_FILES="$CONFIG_FILES agent/helpers/Makefile:Makefile.top:agent/helpers/Makefile.in:Makefile.rules:agent/helpers/Makefile.depend" ;;
-  "agent/mibgroup/Makefile" ) CONFIG_FILES="$CONFIG_FILES agent/mibgroup/Makefile:Makefile.top:agent/mibgroup/Makefile.in:Makefile.rules:agent/mibgroup/Makefile.depend" ;;
-  "local/Makefile" ) CONFIG_FILES="$CONFIG_FILES local/Makefile:Makefile.top:local/Makefile.in:Makefile.rules" ;;
-  "testing/Makefile" ) CONFIG_FILES="$CONFIG_FILES testing/Makefile:Makefile.top:testing/Makefile.in" ;;
-  "man/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/Makefile:Makefile.top:man/Makefile.in:Makefile.rules" ;;
-  "mibs/Makefile" ) CONFIG_FILES="$CONFIG_FILES mibs/Makefile:Makefile.top:mibs/Makefile.in:Makefile.rules" ;;
-  "net-snmp-config" ) CONFIG_FILES="$CONFIG_FILES net-snmp-config:net-snmp-config.in" ;;
-  "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
-  "include/net-snmp/net-snmp-config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/net-snmp/net-snmp-config.h" ;;
-  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-   { (exit 1); exit 1; }; };;
+  case $ac_config_target in
+    "include/net-snmp/net-snmp-config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/net-snmp/net-snmp-config.h" ;;
+    "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile:Makefile.top:Makefile.in:Makefile.rules" ;;
+    "snmplib/Makefile") CONFIG_FILES="$CONFIG_FILES snmplib/Makefile:Makefile.top:snmplib/Makefile.in:Makefile.rules:snmplib/Makefile.depend" ;;
+    "apps/Makefile") CONFIG_FILES="$CONFIG_FILES apps/Makefile:Makefile.top:apps/Makefile.in:Makefile.rules:apps/Makefile.depend" ;;
+    "apps/snmpnetstat/Makefile") CONFIG_FILES="$CONFIG_FILES apps/snmpnetstat/Makefile:Makefile.top:apps/snmpnetstat/Makefile.in:Makefile.rules:apps/snmpnetstat/Makefile.depend" ;;
+    "agent/Makefile") CONFIG_FILES="$CONFIG_FILES agent/Makefile:Makefile.top:agent/Makefile.in:Makefile.rules:agent/Makefile.depend" ;;
+    "agent/helpers/Makefile") CONFIG_FILES="$CONFIG_FILES agent/helpers/Makefile:Makefile.top:agent/helpers/Makefile.in:Makefile.rules:agent/helpers/Makefile.depend" ;;
+    "agent/mibgroup/Makefile") CONFIG_FILES="$CONFIG_FILES agent/mibgroup/Makefile:Makefile.top:agent/mibgroup/Makefile.in:Makefile.rules:agent/mibgroup/Makefile.depend" ;;
+    "local/Makefile") CONFIG_FILES="$CONFIG_FILES local/Makefile:Makefile.top:local/Makefile.in:Makefile.rules" ;;
+    "testing/Makefile") CONFIG_FILES="$CONFIG_FILES testing/Makefile:Makefile.top:testing/Makefile.in" ;;
+    "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile:Makefile.top:man/Makefile.in:Makefile.rules" ;;
+    "mibs/Makefile") CONFIG_FILES="$CONFIG_FILES mibs/Makefile:Makefile.top:mibs/Makefile.in:Makefile.rules" ;;
+    "net-snmp-config") CONFIG_FILES="$CONFIG_FILES net-snmp-config:net-snmp-config.in" ;;
+    "net-snmp-create-v3-user") CONFIG_FILES="$CONFIG_FILES net-snmp-create-v3-user:net-snmp-create-v3-user.in" ;;
+    "dist/generation-scripts/gen-variables") CONFIG_FILES="$CONFIG_FILES dist/generation-scripts/gen-variables:dist/generation-scripts/gen-variables.in" ;;
+    "local/snmpconf") CONFIG_FILES="$CONFIG_FILES local/snmpconf" ;;
+    "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
 done
 
+
 # If the user did not use the arguments to specify the items to instantiate,
 # then the envvar interface is used.  Set only those that are not.
 # We use the long form for the default assignment because of an extremely
@@ -50250,838 +30847,1232 @@
 fi
 
 # Have a temporary directory for convenience.  Make it in the build tree
-# simply because there is no reason to put it here, and in addition,
+# simply because there is no reason against having it here, and in addition,
 # creating and moving files from /tmp can sometimes cause problems.
-# Create a temporary directory, and hook for its removal unless debugging.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
 $debug ||
 {
-  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-  trap '{ (exit 1); exit 1; }' 1 2 13 15
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
 }
-
 # Create a (secure) tmp directory for tmp files.
 
 {
-  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
 }  ||
 {
-  tmp=./confstat$$-$RANDOM
-  (umask 077 && mkdir $tmp)
-} ||
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+if $AWK 'BEGIN { getline <"/dev/null" }' </dev/null 2>/dev/null; then
+  ac_cs_awk_getline=:
+  ac_cs_awk_pipe_init=
+  ac_cs_awk_read_file='
+      while ((getline aline < (F[key])) > 0)
+	print(aline)
+      close(F[key])'
+  ac_cs_awk_pipe_fini=
+else
+  ac_cs_awk_getline=false
+  ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\""
+  ac_cs_awk_read_file='
+      print "|#_!!_#|"
+      print "cat " F[key] " &&"
+      '$ac_cs_awk_pipe_init
+  # The final `:' finishes the AND list.
+  ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }'
+fi
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+# Create commands to substitute file output variables.
 {
-   echo "$me: cannot create a temporary directory in ." >&2
-   { (exit 1); exit 1; }
-}
+  echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" &&
+  echo 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' &&
+  echo "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' &&
+  echo "_ACAWK" &&
+  echo "_ACEOF"
+} >conf$$files.sh &&
+. ./conf$$files.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+rm -f conf$$files.sh
 
-_ACEOF
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
 
-cat >>$CONFIG_STATUS <<_ACEOF
-
-#
-# CONFIG_FILES section.
-#
-
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
-if test -n "\$CONFIG_FILES"; then
-  # Protect against being on the right side of a sed subst in config.status.
-  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
-   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
-s,@SHELL@,$SHELL,;t t
-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
-s,@exec_prefix@,$exec_prefix,;t t
-s,@prefix@,$prefix,;t t
-s,@program_transform_name@,$program_transform_name,;t t
-s,@bindir@,$bindir,;t t
-s,@sbindir@,$sbindir,;t t
-s,@libexecdir@,$libexecdir,;t t
-s,@datadir@,$datadir,;t t
-s,@sysconfdir@,$sysconfdir,;t t
-s,@sharedstatedir@,$sharedstatedir,;t t
-s,@localstatedir@,$localstatedir,;t t
-s,@libdir@,$libdir,;t t
-s,@includedir@,$includedir,;t t
-s,@oldincludedir@,$oldincludedir,;t t
-s,@infodir@,$infodir,;t t
-s,@mandir@,$mandir,;t t
-s,@build_alias@,$build_alias,;t t
-s,@host_alias@,$host_alias,;t t
-s,@target_alias@,$target_alias,;t t
-s,@DEFS@,$DEFS,;t t
-s,@ECHO_C@,$ECHO_C,;t t
-s,@ECHO_N@,$ECHO_N,;t t
-s,@ECHO_T@,$ECHO_T,;t t
-s,@LIBS@,$LIBS,;t t
-s,@CONFIGURE_OPTIONS@,$CONFIGURE_OPTIONS,;t t
-s,@LIBTOOLFLAGS@,$LIBTOOLFLAGS,;t t
-s,@INSTALL_PREFIX@,$INSTALL_PREFIX,;t t
-s,@SNMPD@,$SNMPD,;t t
-s,@TRAPLIBS@,$TRAPLIBS,;t t
-s,@USETRAPLIBS@,$USETRAPLIBS,;t t
-s,@MAINSUBS@,$MAINSUBS,;t t
-s,@HAVE_DMALLOC_H@,$HAVE_DMALLOC_H,;t t
-s,@installucdheaders@,$installucdheaders,;t t
-s,@installucdlibs@,$installucdlibs,;t t
-s,@CC@,$CC,;t t
-s,@CFLAGS@,$CFLAGS,;t t
-s,@LDFLAGS@,$LDFLAGS,;t t
-s,@CPPFLAGS@,$CPPFLAGS,;t t
-s,@ac_ct_CC@,$ac_ct_CC,;t t
-s,@EXEEXT@,$EXEEXT,;t t
-s,@OBJEXT@,$OBJEXT,;t t
-s,@CPP@,$CPP,;t t
-s,@LINKCC@,$LINKCC,;t t
-s,@EGREP@,$EGREP,;t t
-s,@build@,$build,;t t
-s,@build_cpu@,$build_cpu,;t t
-s,@build_vendor@,$build_vendor,;t t
-s,@build_os@,$build_os,;t t
-s,@host@,$host,;t t
-s,@host_cpu@,$host_cpu,;t t
-s,@host_vendor@,$host_vendor,;t t
-s,@host_os@,$host_os,;t t
-s,@target@,$target,;t t
-s,@target_cpu@,$target_cpu,;t t
-s,@target_vendor@,$target_vendor,;t t
-s,@target_os@,$target_os,;t t
-s,@SED@,$SED,;t t
-s,@LN_S@,$LN_S,;t t
-s,@ECHO@,$ECHO,;t t
-s,@AR@,$AR,;t t
-s,@ac_ct_AR@,$ac_ct_AR,;t t
-s,@RANLIB@,$RANLIB,;t t
-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
-s,@STRIP@,$STRIP,;t t
-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
-s,@DSYMUTIL@,$DSYMUTIL,;t t
-s,@ac_ct_DSYMUTIL@,$ac_ct_DSYMUTIL,;t t
-s,@NMEDIT@,$NMEDIT,;t t
-s,@ac_ct_NMEDIT@,$ac_ct_NMEDIT,;t t
-s,@DLLTOOL@,$DLLTOOL,;t t
-s,@ac_ct_DLLTOOL@,$ac_ct_DLLTOOL,;t t
-s,@AS@,$AS,;t t
-s,@ac_ct_AS@,$ac_ct_AS,;t t
-s,@OBJDUMP@,$OBJDUMP,;t t
-s,@ac_ct_OBJDUMP@,$ac_ct_OBJDUMP,;t t
-s,@CXX@,$CXX,;t t
-s,@CXXFLAGS@,$CXXFLAGS,;t t
-s,@ac_ct_CXX@,$ac_ct_CXX,;t t
-s,@CXXCPP@,$CXXCPP,;t t
-s,@F77@,$F77,;t t
-s,@FFLAGS@,$FFLAGS,;t t
-s,@ac_ct_F77@,$ac_ct_F77,;t t
-s,@LIBTOOL@,$LIBTOOL,;t t
-s,@LIBTOOL_DEPS@,$LIBTOOL_DEPS,;t t
-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
-s,@SET_MAKE@,$SET_MAKE,;t t
-s,@PSPROG@,$PSPROG,;t t
-s,@PERLPROG@,$PERLPROG,;t t
-s,@PYTHONPROG@,$PYTHONPROG,;t t
-s,@WHOAMI@,$WHOAMI,;t t
-s,@FIND@,$FIND,;t t
-s,@AUTOCONF@,$AUTOCONF,;t t
-s,@AUTOHEADER@,$AUTOHEADER,;t t
-s,@UNAMEPROG@,$UNAMEPROG,;t t
-s,@VERSION@,$VERSION,;t t
-s,@RELEASEVERSION@,$RELEASEVERSION,;t t
-s,@DEVFLAGS@,$DEVFLAGS,;t t
-s,@TOP_INCLUDES@,$TOP_INCLUDES,;t t
-s,@SNMPLIB_INCLUDES@,$SNMPLIB_INCLUDES,;t t
-s,@AGENT_INCLUDES@,$AGENT_INCLUDES,;t t
-s,@HELPER_INCLUDES@,$HELPER_INCLUDES,;t t
-s,@MIBGROUP_INCLUDES@,$MIBGROUP_INCLUDES,;t t
-s,@GNU_vpath@,$GNU_vpath,;t t
-s,@NON_GNU_VPATH@,$NON_GNU_VPATH,;t t
-s,@CCPATH@,$CCPATH,;t t
-s,@EXTRACPPFLAGS@,$EXTRACPPFLAGS,;t t
-s,@SNMPLIBPATH@,$SNMPLIBPATH,;t t
-s,@SNMPSHAREPATH@,$SNMPSHAREPATH,;t t
-s,@NETSNMP_DEFAULT_MIBDIRS@,$NETSNMP_DEFAULT_MIBDIRS,;t t
-s,@SNMPCONFPATH@,$SNMPCONFPATH,;t t
-s,@other_src_list@,$other_src_list,;t t
-s,@other_objs_list@,$other_objs_list,;t t
-s,@other_lobjs_list@,$other_lobjs_list,;t t
-s,@other_agentobjs@,$other_agentobjs,;t t
-s,@other_lagentobjs@,$other_lagentobjs,;t t
-s,@other_trapd_objects@,$other_trapd_objects,;t t
-s,@transport_hdr_list@,$transport_hdr_list,;t t
-s,@transport_src_list@,$transport_src_list,;t t
-s,@transport_obj_list@,$transport_obj_list,;t t
-s,@transport_lobj_list@,$transport_lobj_list,;t t
-s,@security_src_list@,$security_src_list,;t t
-s,@security_hdr_list@,$security_hdr_list,;t t
-s,@security_obj_list@,$security_obj_list,;t t
-s,@security_lobj_list@,$security_lobj_list,;t t
-s,@krb5_config@,$krb5_config,;t t
-s,@default_mibs_install@,$default_mibs_install,;t t
-s,@dllcleans@,$dllcleans,;t t
-s,@ENV_SEPARATOR@,$ENV_SEPARATOR,;t t
-s,@NETSNMP_DEFAULT_MIBS@,$NETSNMP_DEFAULT_MIBS,;t t
-s,@EMBEDPERLINSTALL@,$EMBEDPERLINSTALL,;t t
-s,@EMBEDPERLUNINSTALL@,$EMBEDPERLUNINSTALL,;t t
-s,@PERLLDOPTS_FOR_LIBS@,$PERLLDOPTS_FOR_LIBS,;t t
-s,@PERLLDOPTS_FOR_APPS@,$PERLLDOPTS_FOR_APPS,;t t
-s,@PERLTARGS@,$PERLTARGS,;t t
-s,@PERLINSTALLTARGS@,$PERLINSTALLTARGS,;t t
-s,@PERLUNINSTALLTARGS@,$PERLUNINSTALLTARGS,;t t
-s,@PERLARGS@,$PERLARGS,;t t
-s,@PYTHONTARGS@,$PYTHONTARGS,;t t
-s,@PYTHONINSTALLTARGS@,$PYTHONINSTALLTARGS,;t t
-s,@PYTHONUNINSTALLTARGS@,$PYTHONUNINSTALLTARGS,;t t
-s,@PYTHONCLEANTARGS@,$PYTHONCLEANTARGS,;t t
-s,@PYTHONARGS@,$PYTHONARGS,;t t
-s,@LPSTAT_PATH@,$LPSTAT_PATH,;t t
-s,@LNETSNMPLIBS@,$LNETSNMPLIBS,;t t
-s,@LAGENTLIBS@,$LAGENTLIBS,;t t
-s,@PSCMD@,$PSCMD,;t t
-s,@ALLOCA@,$ALLOCA,;t t
-s,@LIBOBJS@,$LIBOBJS,;t t
-s,@LMIBLIBS@,$LMIBLIBS,;t t
-s,@AGENTLIBS@,$AGENTLIBS,;t t
-s,@OTHERAGENTLIBOBJS@,$OTHERAGENTLIBOBJS,;t t
-s,@OTHERAGENTLIBLOBJS@,$OTHERAGENTLIBLOBJS,;t t
-s,@PERSISTENT_DIRECTORY@,$PERSISTENT_DIRECTORY,;t t
-s,@UCDPERSISTENT_DIRECTORY@,$UCDPERSISTENT_DIRECTORY,;t t
-s,@COPY_PERSISTENT_FILES@,$COPY_PERSISTENT_FILES,;t t
-s,@DLLIBS@,$DLLIBS,;t t
-s,@LTLIBOBJS@,$LTLIBOBJS,;t t
-/@MODULE_LIST@/r $MODULE_LIST
-s,@MODULE_LIST@,,;t t
-/@module_list_c@/r $module_list_c
-s,@module_list_c@,,;t t
-/@module_list_o@/r $module_list_o
-s,@module_list_o@,,;t t
-/@module_list_lo@/r $module_list_lo
-s,@module_list_lo@,,;t t
-/@mib_module_list_c@/r $mib_module_list_c
-s,@mib_module_list_c@,,;t t
-/@mib_module_list_o@/r $mib_module_list_o
-s,@mib_module_list_o@,,;t t
-/@mib_module_list_lo@/r $mib_module_list_lo
-s,@mib_module_list_lo@,,;t t
-/@agent_module_list_c@/r $agent_module_list_c
-s,@agent_module_list_c@,,;t t
-/@agent_module_list_o@/r $agent_module_list_o
-s,@agent_module_list_o@,,;t t
-/@agent_module_list_lo@/r $agent_module_list_lo
-s,@agent_module_list_lo@,,;t t
-/@mibgroup_list_o@/r $mibgroup_list_o
-s,@mibgroup_list_o@,,;t t
-/@mibgroup_list_lo@/r $mibgroup_list_lo
-s,@mibgroup_list_lo@,,;t t
-/@agentgroup_list_o@/r $agentgroup_list_o
-s,@agentgroup_list_o@,,;t t
-/@agentgroup_list_lo@/r $agentgroup_list_lo
-s,@agentgroup_list_lo@,,;t t
-/@agent_module_list@/r $agent_module_list
-s,@agent_module_list@,,;t t
-/@module_rules@/r $module_rules
-s,@module_rules@,,;t t
-/@module_list_deps@/r $module_list_deps
-s,@module_list_deps@,,;t t
-/@mib_module_list_deps@/r $mib_module_list_deps
-s,@mib_module_list_deps@,,;t t
-/@agent_module_list_deps@/r $agent_module_list_deps
-s,@agent_module_list_deps@,,;t t
-CEOF
-
-_ACEOF
-
-  cat >>$CONFIG_STATUS <<\_ACEOF
-  # Split the substitutions into bite-sized pieces for seds with
-  # small command number limits, like on Digital OSF/1 and HP-UX.
-  ac_max_sed_lines=48
-  ac_sed_frag=1 # Number of current file.
-  ac_beg=1 # First line for current file.
-  ac_end=$ac_max_sed_lines # Line after last line for current file.
-  ac_more_lines=:
-  ac_sed_cmds=
-  while $ac_more_lines; do
-    if test $ac_beg -gt 1; then
-      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-    else
-      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-    fi
-    if test ! -s $tmp/subs.frag; then
-      ac_more_lines=false
-    else
-      # The purpose of the label and of the branching condition is to
-      # speed up the sed processing (if there are no `@' at all, there
-      # is no need to browse any of the substitutions).
-      # These are the two extra sed commands mentioned above.
-      (echo ':t
-  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
-      if test -z "$ac_sed_cmds"; then
-	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
-      else
-	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
-      fi
-      ac_sed_frag=`expr $ac_sed_frag + 1`
-      ac_beg=$ac_end
-      ac_end=`expr $ac_end + $ac_max_sed_lines`
-    fi
-  done
-  if test -z "$ac_sed_cmds"; then
-    ac_sed_cmds=cat
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+  \$ac_cs_awk_pipe_init
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+  if (nfields == 3 && !substed) {
+    key = field[2]
+    if (F[key] != "" && line ~ /^[	 ]*@.*@[	 ]*$/) {
+      \$ac_cs_awk_read_file
+      next
+    }
+  }
+  print line
+}
+\$ac_cs_awk_pipe_fini
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 fi # test -n "$CONFIG_FILES"
 
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
 _ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case $ac_file in
-  - | *:- | *:-:* ) # input from stdin
-	cat >$tmp/stdin
-	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  * )   ac_file_in=$ac_file.in ;;
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
   esac
 
-  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
-  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+  ac_dir=`$as_dirname -- "$ac_file" ||
 $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 	 X"$ac_file" : 'X\(//\)[^/]' \| \
 	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-  	  /^X\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
-  { if $as_mkdir_p; then
-    mkdir -p "$ac_dir"
-  else
-    as_dir="$ac_dir"
-    as_dirs=
-    while test ! -d "$as_dir"; do
-      as_dirs="$as_dir $as_dirs"
-      as_dir=`(dirname "$as_dir") 2>/dev/null ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-  	  /^X\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
-    done
-    test ! -n "$as_dirs" || mkdir $as_dirs
-  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-   { (exit 1); exit 1; }; }; }
-
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
   ac_builddir=.
 
-if test "$ac_dir" != .; then
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-  # A "../" for each directory in $ac_dir_suffix.
-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-else
-  ac_dir_suffix= ac_top_builddir=
-fi
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
 
 case $srcdir in
-  .)  # No --srcdir option.  We are building in place.
+  .)  # We are building in place.
     ac_srcdir=.
-    if test -z "$ac_top_builddir"; then
-       ac_top_srcdir=.
-    else
-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-    fi ;;
-  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
     ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir ;;
-  *) # Relative path.
-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
 esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
 
-# Do not use `cd foo && pwd` to compute absolute paths, because
-# the directories may not exist.
-case `pwd` in
-.) ac_abs_builddir="$ac_dir";;
-*)
-  case "$ac_dir" in
-  .) ac_abs_builddir=`pwd`;;
-  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-  *) ac_abs_builddir=`pwd`/"$ac_dir";;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_builddir=${ac_top_builddir}.;;
-*)
-  case ${ac_top_builddir}. in
-  .) ac_abs_top_builddir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_srcdir=$ac_srcdir;;
-*)
-  case $ac_srcdir in
-  .) ac_abs_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_srcdir=$ac_top_srcdir;;
-*)
-  case $ac_top_srcdir in
-  .) ac_abs_top_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-  esac;;
-esac
 
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
 
   case $INSTALL in
   [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
   esac
-
-  if test x"$ac_file" != x-; then
-    { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-    rm -f "$ac_file"
-  fi
-  # Let's still pretend it is `configure' which instantiates (i.e., don't
-  # use $as_me), people would be surprised to read:
-  #    /* config.h.  Generated by config.status.  */
-  if test x"$ac_file" = x-; then
-    configure_input=
-  else
-    configure_input="$ac_file.  "
-  fi
-  configure_input=$configure_input"Generated from `echo $ac_file_in |
-				     sed 's,.*/,,'` by configure."
-
-  # First look for the input files in the build tree, otherwise in the
-  # src tree.
-  ac_file_inputs=`IFS=:
-    for f in $ac_file_in; do
-      case $f in
-      -) echo $tmp/stdin ;;
-      [\\/$]*)
-	 # Absolute (can't be DOS-style, as IFS=:)
-	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-	 echo "$f";;
-      *) # Relative
-	 if test -f "$f"; then
-	   # Build tree
-	   echo "$f"
-	 elif test -f "$srcdir/$f"; then
-	   # Source tree
-	   echo "$srcdir/$f"
-	 else
-	   # /dev/null tree
-	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-	 fi;;
-      esac
-    done` || { (exit 1); exit 1; }
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-  sed "$ac_vpsub
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
 $extrasub
 _ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 :t
 /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s,@configure_input@,$configure_input,;t t
-s,@srcdir@,$ac_srcdir,;t t
-s,@abs_srcdir@,$ac_abs_srcdir,;t t
-s,@top_srcdir@,$ac_top_srcdir,;t t
-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
-s,@builddir@,$ac_builddir,;t t
-s,@abs_builddir@,$ac_abs_builddir,;t t
-s,@top_builddir@,$ac_top_builddir,;t t
-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
-s,@INSTALL@,$ac_INSTALL,;t t
-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
-  rm -f $tmp/stdin
-  if test x"$ac_file" != x-; then
-    mv $tmp/out $ac_file
-  else
-    cat $tmp/out
-    rm -f $tmp/out
-  fi
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" |
+if $ac_cs_awk_getline; then
+  $AWK -f "$ac_tmp/subs.awk"
+else
+  $AWK -f "$ac_tmp/subs.awk" | $SHELL
+fi \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
 
-  # Run the commands associated with the file.
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
   case $ac_file in
-    net-snmp-config ) chmod +x net-snmp-config ;;
-  esac
-done
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-#
-# CONFIG_HEADER section.
-#
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s,^\([	 ]*\)#\([	 ]*define[	 ][	 ]*\)'
-ac_dB='[	 ].*$,\1#\2'
-ac_dC=' '
-ac_dD=',;t'
-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_uA='s,^\([	 ]*\)#\([	 ]*\)undef\([	 ][	 ]*\)'
-ac_uB='$,\1#\2define\3'
-ac_uC=' '
-ac_uD=',;t'
-
-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case $ac_file in
-  - | *:- | *:-:* ) # input from stdin
-	cat >$tmp/stdin
-	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  * )   ac_file_in=$ac_file.in ;;
-  esac
-
-  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-
-  # First look for the input files in the build tree, otherwise in the
-  # src tree.
-  ac_file_inputs=`IFS=:
-    for f in $ac_file_in; do
-      case $f in
-      -) echo $tmp/stdin ;;
-      [\\/$]*)
-	 # Absolute (can't be DOS-style, as IFS=:)
-	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-	 # Do quote $f, to prevent DOS paths from being IFS'd.
-	 echo "$f";;
-      *) # Relative
-	 if test -f "$f"; then
-	   # Build tree
-	   echo "$f"
-	 elif test -f "$srcdir/$f"; then
-	   # Source tree
-	   echo "$srcdir/$f"
-	 else
-	   # /dev/null tree
-	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-	 fi;;
-      esac
-    done` || { (exit 1); exit 1; }
-  # Remove the trailing spaces.
-  sed 's/[	 ]*$//' $ac_file_inputs >$tmp/in
-
-_ACEOF
-
-# Transform confdefs.h into two sed scripts, `conftest.defines' and
-# `conftest.undefs', that substitutes the proper values into
-# config.h.in to produce config.h.  The first handles `#define'
-# templates, and the second `#undef' templates.
-# And first: Protect against being on the right side of a sed subst in
-# config.status.  Protect against being in an unquoted here document
-# in config.status.
-rm -f conftest.defines conftest.undefs
-# Using a here document instead of a string reduces the quoting nightmare.
-# Putting comments in sed scripts is not portable.
-#
-# `end' is used to avoid that the second main sed command (meant for
-# 0-ary CPP macros) applies to n-ary macro definitions.
-# See the Autoconf documentation for `clear'.
-cat >confdef2sed.sed <<\_ACEOF
-s/[\\&,]/\\&/g
-s,[\\$`],\\&,g
-t clear
-: clear
-s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*\)\(([^)]*)\)[	 ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
-t end
-s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
-: end
-_ACEOF
-# If some macros were called several times there might be several times
-# the same #defines, which is useless.  Nevertheless, we may not want to
-# sort them, since we want the *last* AC-DEFINE to be honored.
-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
-rm -f confdef2sed.sed
-
-# This sed command replaces #undef with comments.  This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-cat >>conftest.undefs <<\_ACEOF
-s,^[	 ]*#[	 ]*undef[	 ][	 ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
-_ACEOF
-
-# Break up conftest.defines because some shells have a limit on the size
-# of here documents, and old seds have small limits too (100 cmds).
-echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
-echo '  if grep "^[	 ]*#[	 ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
-echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
-echo '  :' >>$CONFIG_STATUS
-rm -f conftest.tail
-while grep . conftest.defines >/dev/null
-do
-  # Write a limited-size here document to $tmp/defines.sed.
-  echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
-  # Speed up: don't consider the non `#define' lines.
-  echo '/^[	 ]*#[	 ]*define/!b' >>$CONFIG_STATUS
-  # Work around the forget-to-reset-the-flag bug.
-  echo 't clr' >>$CONFIG_STATUS
-  echo ': clr' >>$CONFIG_STATUS
-  sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
-  echo 'CEOF
-  sed -f $tmp/defines.sed $tmp/in >$tmp/out
-  rm -f $tmp/in
-  mv $tmp/out $tmp/in
-' >>$CONFIG_STATUS
-  sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
-  rm -f conftest.defines
-  mv conftest.tail conftest.defines
-done
-rm -f conftest.defines
-echo '  fi # grep' >>$CONFIG_STATUS
-echo >>$CONFIG_STATUS
-
-# Break up conftest.undefs because some shells have a limit on the size
-# of here documents, and old seds have small limits too (100 cmds).
-echo '  # Handle all the #undef templates' >>$CONFIG_STATUS
-rm -f conftest.tail
-while grep . conftest.undefs >/dev/null
-do
-  # Write a limited-size here document to $tmp/undefs.sed.
-  echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
-  # Speed up: don't consider the non `#undef'
-  echo '/^[	 ]*#[	 ]*undef/!b' >>$CONFIG_STATUS
-  # Work around the forget-to-reset-the-flag bug.
-  echo 't clr' >>$CONFIG_STATUS
-  echo ': clr' >>$CONFIG_STATUS
-  sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
-  echo 'CEOF
-  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
-  rm -f $tmp/in
-  mv $tmp/out $tmp/in
-' >>$CONFIG_STATUS
-  sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
-  rm -f conftest.undefs
-  mv conftest.tail conftest.undefs
-done
-rm -f conftest.undefs
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-  # Let's still pretend it is `configure' which instantiates (i.e., don't
-  # use $as_me), people would be surprised to read:
-  #    /* config.h.  Generated by config.status.  */
-  if test x"$ac_file" = x-; then
-    echo "/* Generated by configure.  */" >$tmp/config.h
-  else
-    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h
-  fi
-  cat $tmp/in >>$tmp/config.h
-  rm -f $tmp/in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
   if test x"$ac_file" != x-; then
-    if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
-      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
-echo "$as_me: $ac_file is unchanged" >&6;}
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
     else
-      ac_dir=`(dirname "$ac_file") 2>/dev/null ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-  	  /^X\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
-      { if $as_mkdir_p; then
-    mkdir -p "$ac_dir"
-  else
-    as_dir="$ac_dir"
-    as_dirs=
-    while test ! -d "$as_dir"; do
-      as_dirs="$as_dir $as_dirs"
-      as_dir=`(dirname "$as_dir") 2>/dev/null ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-  	  /^X\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
-    done
-    test ! -n "$as_dirs" || mkdir $as_dirs
-  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-   { (exit 1); exit 1; }; }; }
-
-      rm -f $ac_file
-      mv $tmp/config.h $ac_file
+      rm -f "$ac_file"
+      mv "$ac_tmp/config.h" "$ac_file" \
+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
     fi
   else
-    cat $tmp/config.h
-    rm -f $tmp/config.h
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
   fi
-done
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+ ;;
 
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "libtool":C)
+
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
-# CONFIG_COMMANDS section.
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+#                 Inc.
+#   Written by Gordon Matzigkeit, 1996
 #
-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
-  ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
-  ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
-  ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_dest" : 'X\(//\)[^/]' \| \
-	 X"$ac_dest" : 'X\(//\)$' \| \
-	 X"$ac_dest" : 'X\(/\)' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X"$ac_dest" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-  	  /^X\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
-  { if $as_mkdir_p; then
-    mkdir -p "$ac_dir"
-  else
-    as_dir="$ac_dir"
-    as_dirs=
-    while test ! -d "$as_dir"; do
-      as_dirs="$as_dir $as_dirs"
-      as_dir=`(dirname "$as_dir") 2>/dev/null ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-  	  /^X\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
-    done
-    test ! -n "$as_dirs" || mkdir $as_dirs
-  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-   { (exit 1); exit 1; }; }; }
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
-  ac_builddir=.
 
-if test "$ac_dir" != .; then
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-  # A "../" for each directory in $ac_dir_suffix.
-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-else
-  ac_dir_suffix= ac_top_builddir=
+# The names of the tagged configurations supported by this script.
+available_tags=""
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Assembler program.
+AS=$lt_AS
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Object dumper program.
+OBJDUMP=$lt_OBJDUMP
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method = "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
+
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
+
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
+
+# The archiver.
+AR=$lt_AR
+
+# Flags to create an archive.
+AR_FLAGS=$lt_AR_FLAGS
+
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# Specify filename containing input files for \$NM.
+nm_file_list_spec=$lt_nm_file_list_spec
+
+# The root where to search for dependent libraries,and in which our libraries should be installed.
+lt_sysroot=$lt_sysroot
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking.  This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
+
+  if test x"$xsi_shell" = xyes; then
+  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
+func_dirname ()\
+{\
+\    case ${1} in\
+\      */*) func_dirname_result="${1%/*}${2}" ;;\
+\      *  ) func_dirname_result="${3}" ;;\
+\    esac\
+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_basename ()$/,/^} # func_basename /c\
+func_basename ()\
+{\
+\    func_basename_result="${1##*/}"\
+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
+func_dirname_and_basename ()\
+{\
+\    case ${1} in\
+\      */*) func_dirname_result="${1%/*}${2}" ;;\
+\      *  ) func_dirname_result="${3}" ;;\
+\    esac\
+\    func_basename_result="${1##*/}"\
+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
+func_stripname ()\
+{\
+\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
+\    # positional parameters, so assign one to ordinary parameter first.\
+\    func_stripname_result=${3}\
+\    func_stripname_result=${func_stripname_result#"${1}"}\
+\    func_stripname_result=${func_stripname_result%"${2}"}\
+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
+func_split_long_opt ()\
+{\
+\    func_split_long_opt_name=${1%%=*}\
+\    func_split_long_opt_arg=${1#*=}\
+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
+func_split_short_opt ()\
+{\
+\    func_split_short_opt_arg=${1#??}\
+\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
+func_lo2o ()\
+{\
+\    case ${1} in\
+\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
+\      *)    func_lo2o_result=${1} ;;\
+\    esac\
+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_xform ()$/,/^} # func_xform /c\
+func_xform ()\
+{\
+    func_xform_result=${1%.*}.lo\
+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_arith ()$/,/^} # func_arith /c\
+func_arith ()\
+{\
+    func_arith_result=$(( $* ))\
+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_len ()$/,/^} # func_len /c\
+func_len ()\
+{\
+    func_len_result=${#1}\
+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
 fi
 
-case $srcdir in
-  .)  # No --srcdir option.  We are building in place.
-    ac_srcdir=.
-    if test -z "$ac_top_builddir"; then
-       ac_top_srcdir=.
-    else
-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-    fi ;;
-  [\\/]* | ?:[\\/]* )  # Absolute path.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir ;;
-  *) # Relative path.
-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_builddir$srcdir ;;
-esac
-
-# Do not use `cd foo && pwd` to compute absolute paths, because
-# the directories may not exist.
-case `pwd` in
-.) ac_abs_builddir="$ac_dir";;
-*)
-  case "$ac_dir" in
-  .) ac_abs_builddir=`pwd`;;
-  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-  *) ac_abs_builddir=`pwd`/"$ac_dir";;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_builddir=${ac_top_builddir}.;;
-*)
-  case ${ac_top_builddir}. in
-  .) ac_abs_top_builddir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_srcdir=$ac_srcdir;;
-*)
-  case $ac_srcdir in
-  .) ac_abs_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_srcdir=$ac_top_srcdir;;
-*)
-  case $ac_top_srcdir in
-  .) ac_abs_top_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-  esac;;
-esac
+if test x"$lt_shell_append" = xyes; then
+  sed -e '/^func_append ()$/,/^} # func_append /c\
+func_append ()\
+{\
+    eval "${1}+=\\${2}"\
+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
 
 
-  { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
-echo "$as_me: executing $ac_dest commands" >&6;}
-  case $ac_dest in
-    default ) echo timestamp > stamp-h ;;
+  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
+func_append_quoted ()\
+{\
+\    func_quote_for_eval "${2}"\
+\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  # Save a `func_append' function call where possible by direct use of '+='
+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+else
+  # Save a `func_append' function call even when '+=' is not available
+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
+fi
+
+
+   mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+ ;;
+    "net-snmp-config":F) chmod +x net-snmp-config ;;
+    "net-snmp-create-v3-user":F) chmod +x net-snmp-create-v3-user ;;
+    "default":C) echo timestamp > stamp-h ;;
+
   esac
-done
-_ACEOF
+done # for ac_tag
 
-cat >>$CONFIG_STATUS <<\_ACEOF
 
-{ (exit 0); exit 0; }
+as_fn_exit 0
 _ACEOF
-chmod +x $CONFIG_STATUS
 ac_clean_files=$ac_clean_files_save
 
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
 
 # configure is writing to config.log, and then calls config.status.
 # config.status does its own redirection, appending to config.log.
@@ -51101,7 +32092,11 @@
   exec 5>>config.log
   # Use ||, not &&, to avoid exiting from the if with $? = 1, which
   # would make configure fail if this is the last instruction.
-  $ac_cs_success || { (exit 1); exit 1; }
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
 
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..676a7b9
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,132 @@
+# Portions of this file are subject to the following copyright.  See
+# the Net-SNMP's COPYING file for more details and other copyrights
+# that may apply:
+#
+# Portions 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.
+#
+
+#
+# Process this file with autoconf to produce a configure script.
+#
+AC_INIT([Net-SNMP], [5.7.3.rc1], [net-snmp-coders@lists.sourceforge.net])
+AC_PREREQ([2.63])
+AC_CONFIG_SRCDIR([agent/snmpd.c])
+AC_REVISION([$Revision$])
+
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_HEADER(include/net-snmp/net-snmp-config.h)
+
+AC_MSG_CACHE_INIT()
+
+#
+# save the configure arguments
+#
+AC_DEFINE_UNQUOTED(NETSNMP_CONFIGURE_OPTIONS,"$ac_configure_args",
+  [configure options specified])
+CONFIGURE_OPTIONS="\"$ac_configure_args\""
+AC_SUBST(CONFIGURE_OPTIONS)
+
+##
+## Recommended structure:
+##
+#     information on the package
+#     checks for programs
+#     checks for libraries
+#     checks for header files
+#     checks for types
+#     checks for structures
+#     checks for compiler characteristics
+#     checks for library functions
+#     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
+#
+AC_SUBST(LMIBLIBS)
+AC_SUBST(AGENTLIBS)
+AC_SUBST(OTHERAGENTLIBOBJS)
+AC_SUBST(OTHERAGENTLIBLOBJS)
+AC_SUBST(OTHERAGENTLIBLFTS)
+
+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])
+AC_CONFIG_FILES([apps/snmpnetstat/Makefile:Makefile.top:apps/snmpnetstat/Makefile.in:Makefile.rules:apps/snmpnetstat/Makefile.depend])
+AC_CONFIG_FILES([agent/Makefile:Makefile.top:agent/Makefile.in:Makefile.rules:agent/Makefile.depend])
+AC_CONFIG_FILES([agent/helpers/Makefile:Makefile.top:agent/helpers/Makefile.in:Makefile.rules:agent/helpers/Makefile.depend])
+AC_CONFIG_FILES([agent/mibgroup/Makefile:Makefile.top:agent/mibgroup/Makefile.in:Makefile.rules:agent/mibgroup/Makefile.depend])
+AC_CONFIG_FILES([local/Makefile:Makefile.top:local/Makefile.in:Makefile.rules])
+AC_CONFIG_FILES([testing/Makefile:Makefile.top:testing/Makefile.in])
+AC_CONFIG_FILES([man/Makefile:Makefile.top:man/Makefile.in:Makefile.rules])
+AC_CONFIG_FILES([mibs/Makefile:Makefile.top:mibs/Makefile.in:Makefile.rules])
+AC_CONFIG_FILES([net-snmp-config:net-snmp-config.in],
+		[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_FILES([local/snmpconf])
+
+AC_CONFIG_COMMANDS([default], echo timestamp > stamp-h)
+
+#
+# protect PACKAGE_* variables
+#
+AH_VERBATIM([PACKAGE_BUGREPORT],[/* Define to the address where bug reports for this package should be sent. */
+#ifndef PACKAGE_BUGREPORT
+#undef PACKAGE_BUGREPORT
+#endif])
+AH_VERBATIM([PACKAGE_NAME],[/* Define to the full name of this package. */
+#ifndef PACKAGE_NAME
+#undef PACKAGE_NAME
+#endif])
+AH_VERBATIM([PACKAGE_STRING],[/* Define to the full name and version of this package. */
+#ifndef PACKAGE_STRING
+#undef PACKAGE_STRING
+#endif])
+AH_VERBATIM([PACKAGE_TARNAME],[/* Define to the one symbol short name of this package. */
+#ifndef PACKAGE_TARNAME
+#undef PACKAGE_TARNAME
+#endif])
+AH_VERBATIM([PACKAGE_VERSION],[/* Define to the version of this package. */
+#ifndef PACKAGE_VERSION
+#undef PACKAGE_VERSION
+#endif])
+
+AC_OUTPUT
+
+AC_MSG_CACHE_DISPLAY()
+# Local Variables:
+# mode: Autoconf
+# comment-start: "#"
+# End:
diff --git a/configure.d/config_modules_agent b/configure.d/config_modules_agent
new file mode 100644
index 0000000..c18ac33
--- /dev/null
+++ b/configure.d/config_modules_agent
@@ -0,0 +1,822 @@
+# -*- autoconf -*-
+#
+# generate empty files
+#
+# Create include file list for snmp_vars.h to use.
+mibdir="agent/mibgroup"
+if test ! -d agent; then
+  mkdir agent
+fi
+if test ! -d agent/mibgroup; then
+  mkdir agent/mibgroup
+fi
+j="$mibdir/mib_module_includes.h  $mibdir/agent_module_includes.h \
+   $mibdir/mib_module_inits.h     $mibdir/agent_module_inits.h    \
+   $mibdir/mib_module_shutdown.h  $mibdir/agent_module_shutdown.h \
+   include/net-snmp/agent/mib_module_config.h                     \
+                   include/net-snmp/agent/agent_module_config.h   \
+   $mibdir/mib_module_dot_conf.h  $mibdir/agent_module_dot_conf.h"
+
+for i in $j; do
+  rm -f $i
+  echo "/* This file is automatically generated by configure.  Do not modify by hand. */" > $i
+done
+
+#
+# Do hairy agent module processing.
+#
+AC_MSG_CHECKING([for and configuring mib modules to use])
+
+# set up the CPP command
+MODULECPP="$CPP $PARTIALTARGETFLAGS $CPPFLAGS -DNETSNMP_FEATURE_CHECKING -I${srcdir}/include -I${srcdir}/agent/mibgroup"
+if test "x$enable_mfd_rewrites" = "xyes"; then
+  MODULECPP="$MODULECPP -DNETSNMP_ENABLE_MFD_REWRITES"
+fi
+
+module_list=""
+mib_module_list=""
+agent_module_list=""
+new_with_mib_modules=`echo $with_mib_modules | $SED 's/,/ /g;'`
+new_with_out_mib_modules=`echo $with_out_mib_modules | $SED 's/,/ /g;'`
+
+# set up initial module list
+new_module_list="$new_with_mib_modules default_modules"
+
+# minor modifications
+if test "x$enable_agent" = "xno"; then
+   # minimum mib module list for snmptrapd
+   new_module_list="mibII/vacm_vars mibII/vacm_conf utilities/execute $new_with_mib_modules"
+   default_mibs=SNMPv2-MIB:IF-MIB:IP-MIB:TCP-MIB:UDP-MIB
+   default_mibs_install=" "
+elif test "x$mini_agent" = "xyes"; then
+   # define the mini agent flag to reduce our load list from default_mibs.h
+   MODULECPP="$MODULECPP -DNETSNMP_MINI_AGENT"
+fi
+
+test_modules="$new_module_list"
+new_module_list=""
+
+# remove modules that were explicitly excluded
+for i in $test_modules
+ do
+  if echo " $new_with_out_mib_modules " | $GREP " $i " > /dev/null; then
+    mib_cfg_msg="mib module '$i' is both included and excluded."
+    AC_MSG_WARN([mib module conflict])
+    if test "x$with_mib_cfg_checks" = "xyes"; then
+      AC_MSG_WARN([user with    : $with_mib_modules])
+      AC_MSG_WARN([final with   : $new_module_list])
+      AC_MSG_WARN([user without : $with_out_mib_modules])
+      AC_MSG_WARN([final without: $new_with_out_mib_modules])
+      AC_MSG_ERROR([$mib_cfg_msg])
+    else
+      AC_MSG_WARN([$mib_cfg_msg It will be excluded])
+      AC_MSG_CACHE_ADD([*** MIB Module warning *** $mib_cfg_msg It has been excluded.])
+    fi
+  else
+    new_module_list="$new_module_list $i"
+  fi
+done
+
+new_module_list=`(echo $new_module_list | tr ' ' '\n' | sort | tr '\n' ' '; echo '') | $SED 's/ $//'`
+
+AC_MSG_RESULT([$new_module_list.])
+
+#---------------------
+# loop over module list
+#
+all_warnings=""
+if test "x$with_mib_cfg_debug" = "xyes"; then
+   module_debug=1
+else
+   module_debug=0
+fi
+first_pass=1
+output_to=normal
+
+if test ! -d mk ; then
+  mkdir mk
+fi
+
+
+module_rules=mk/module_rules.mk
+echo "# contents below built automatically by configure; do not edit by hand" > $module_rules
+
+#
+# make file sub-pieces
+#
+for i in module_list_deps mib_module_list_deps agent_module_list_deps ; do
+  eval "$i=mk/${i}.mk"
+  echo "# contents below built automatically by configure; do not edit by hand" > mk/${i}.mk
+done
+
+#
+# variable settings sub-pieces
+#
+for i in module_list_code mib_module_list_code agent_module_list_code module_list mib_module_list agent_module_list ; do
+  eval "$i=mk/${i}.mk"
+  echo "# contents below built automatically by configure; do not edit by hand" > mk/${i}.mk
+  echo "$i= \\" >> mk/${i}.mk
+done
+
+echo $ECHO_N "echo " $ECHO_C > mk/MODULE_LIST.mk
+MODULE_LIST=mk/MODULE_LIST.mk
+
+
+#---------------------
+# until we have an empty module list...
+#   (modules may add new modules, and until all dependencies are done...)
+#
+while test "x$new_module_list" != "x"; do
+  AC_MSG_MODULE_DBG(-e,"\n****************************************************************")
+  AC_MSG_MODULE_DBG("nml: $new_module_list")
+
+  #---------------------
+  # loop over all the modules in the current list
+  #
+  for j in $new_module_list
+    do
+
+    #---------------------
+    # figure out which sub-blocks to build in parts
+    if echo "$j" | $GREP "=" ; then
+       # build a shared object file
+       # format: sofilename=module1:module2
+       # XXX: currently doesn't do this
+       dl_name=`echo $j | $SED 's/=.*//'`
+       dl_names="$dl_names $dl_name"
+       dl_objects=`echo $j | $SED 's/.*=//'`
+       module_sublist=`echo $dl_objects | $SED 's/:/ /g'`
+       saved_sublist=""
+       saved_sublist_code=""
+       output_to=separate
+
+       # create output files
+       # these actually get nuked later
+       output_inits="agent/mibgroup/${dl_name}-dll.c"
+       output_hdrs="agent/mibgroup/${dl_name}-hdrs.h"
+    else
+       # not a special token invocation
+       module_sublist=$j
+       output_to=normal
+       output_t=
+    fi
+
+    while test "x$module_sublist" != "x" ; do
+
+    #---------------------
+    # loop over all the modules in the sub list
+    for i in $module_sublist
+    do
+
+    AC_MSG_MODULE_DBG(-e "\n================================================================")
+    AC_MSG_MODULE_DBG("testing $i")
+    need_header=0
+
+    #---------------------
+    # 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
+#include "$srcdir/$mibdir/$i.h"]])])
+    mv conftest.$ac_ext module_tmp_header.h
+
+    #---------------------
+    # macro: config_belongs_in(ARG)
+    #   ARG: either
+    #     - mib_module   => libnetsnmpmibs   (default)
+    #     - agent_module => libnetsnmpagent
+    #
+    AH_TOP([#define config_belongs_in(x)])
+    module_type=mib_module
+    if test -f $srcdir/$mibdir/$i.h; then
+      changequote(, )
+      module_type=`$MODULECPP module_tmp_header.h | \
+                   $SED -n 's@.*config_belongs_in(\([^)]*\)).*@\1@p'`
+      changequote([, ])
+    fi
+    if test "x$module_type" = "x" ; then
+      module_type=mib_module
+    fi
+    if test "x$output_to" = "xnormal" ; then
+     	output_inits="$mibdir/${module_type}_inits.h"
+     	output_hdrs="$mibdir/${module_type}_includes.h"
+    fi
+
+    #--------------------
+    # check for duplicates within the dll system. 
+    #   - if found in a dll, then remove from the dll and add to main
+    dblfix=""
+    for dltest in $dl_names ; do
+      eval mod_files="\"\$dl_${dltest}_files\""
+      if echo " $mod_files " | $GREP " $i " > /dev/null; then
+        # some dll module has already seen this, unload it from that list
+        # and include it in the core (again)
+        AC_MSG_MODULE_DBG("removing $i from $dltest")
+        mod_files=`echo " $mod_files " | $SED "s@ $i @@"`
+        dblfix="__XXX__"
+        eval "dl_${dltest}_files=\"$mod_files\""
+
+        module_list="$module_list $i"
+	echo "read_config.lo: mibgroup/$i.h" >> $module_list_deps
+	if test $module_type = "agent_module" ; then
+ 	    echo "snmp_vars.lo: mibgroup/$i.h" >> $agent_module_list_deps
+        else
+ 	    echo "mib_modules.lo: mibgroup/$i.h" >> $mib_module_list_deps
+        fi
+        eval ${module_type}_list="\"\$${module_type}_list $i\""
+	echo "	$i \\" >> $module_list_code
+	echo $ECHO_N " $i" $ECHO_C >> $MODULE_LIST
+        eval tmpfilevar=\$`echo ${module_type}_list_code`
+        echo "	$i \\" >> $tmpfilevar
+
+	# XXX: add this to the main init list; this is possible not
+	# quite in the right spot any longer but we're stuck with it.
+	# Adding it back to the original ordered spot would be a
+	# nightmare.  Ok, we're already in nightmare code so that
+	# wolud have to be a night-terror.
+        mnm=`echo $i | $SED 's/.*\///;s/\.c$//;'`
+	output_inits_tmp="$mibdir/${module_type}_inits.h"
+	echo "  if (should_init(\"$mnm\")) init_$mnm();" >> $output_inits_tmp
+        # XXX: even worse, we loose whether the header is needed or not.
+     	output_hdrs_tmp="$mibdir/${module_type}_includes.h"
+        echo '#include "'"mibgroup/$i.h"'"' >> $output_hdrs_tmp
+      fi
+    done
+
+    #---------------------
+    # make sure module wasn't explicitly excluded, or already added
+    #
+    if test "x$dblfix" != "x" ; then
+      AC_MSG_MODULE_DBG("$i was duplicated -- putting into main")
+    elif echo " $new_with_out_mib_modules " | $GREP " $i " > /dev/null; then
+      AC_MSG_MODULE_DBG("$i was excluded")
+    elif echo " $module_list " | $GREP " $i " > /dev/null; then
+      AC_MSG_MODULE_DBG("$i already tested")
+    else
+
+      #---------------------
+      # process modules header, checking for config_ pseudo-macros
+      #
+
+      #---------------------
+      # does the header file for the module exist?
+      #   macros are only processed if it does
+      if test -f $srcdir/$mibdir/$i.h; then
+        new_list=""
+
+        #---------------------
+      	# macro: config_exclude(modules)
+      	#  - lists conflicts with other modules
+      	#    - EG: new MIB implementations exclude old and vice-versa
+      	#
+        # check if $i has any conflicts
+        #
+        AH_TOP([#define config_exclude(x)])
+        new_list_excl=`$MODULECPP module_tmp_header.h | \
+                       $SED -n 's/.*config_exclude(\(.*\)).*/\1/p'`
+	if test "x$new_list_excl" != "x"; then
+          AC_MSG_MODULE_DBG("$i excludes $new_list_excl")
+	  for j in $new_list_excl
+	    do
+	    if echo " $module_list $new_mib_module_list $new_list_two " | $GREP " $j " > /dev/null; then
+              mib_cfg_msg="mib module '$i' excludes module '$j' but another module requires it"
+              AC_MSG_WARN([mib module error])
+              if test "x$with_mib_cfg_checks" = "xyes"; then
+	        AC_MSG_ERROR([$mib_cfg_msg])
+              else
+	        AC_MSG_WARN([$mib_cfg_msg])
+                AC_MSG_CACHE_ADD([*** MIB Module warning *** $mib_cfg_msg])
+              fi
+	    else
+	      new_with_out_mib_modules="$j $new_with_out_mib_modules"
+              AC_MSG_MODULE_DBG("$j added to excluded list")
+	    fi
+	  done
+	fi
+
+        #---------------------
+      	# macro: config_arch_require(ARCH,modules)
+      	#  - lists modules required for a given ARCH
+        #
+        # check if $i has any architecture specific requirements
+        #
+        AH_TOP([#define config_arch_require(x,y)])
+        changequote(, )
+        new_list_arch=`$MODULECPP module_tmp_header.h | \
+                       $SED -n 's/.*config_arch_require( *\([^ ]*\) *, *\([^ ]*\) *).*/\1-xarchx-\2/p'`
+        changequote([, ])
+	if test "x$new_list_arch" != "x"; then
+          for j in $new_list_arch
+	    do
+	    archtest=`echo $j | $SED 's/-xarchx-.*//'`
+	    # target_os may have been changed to a #define of 1...
+	    if test "x$archtest" = "x1" -o "x$target_os" = "x$archtest" -o "x$PARTIALTARGETOS" = "x$archtest"; then
+	      new_list="$new_list `echo $j | $SED 's/.*-xarchx-//'`"
+              AC_MSG_MODULE_DBG(" $i required adding arch files: `echo $j | $SED 's/.*-xarchx-//'`")
+	    fi
+	  done
+	fi
+        AC_MSG_MODULE_DBG(" $i required arch files: $new_list")
+
+        #---------------------
+      	# macro: config_version_require((base, version, version-modules, ...))
+      	#  - lists alternative modules used from different versions.
+        #
+        AH_TOP([#define config_version_require(x)])
+        [new_list_alt3=`$MODULECPP module_tmp_header.h | \
+            $AWK '
+                BEGIN {
+                    if("'"$enable_new_features"'" == "yes")
+                        method="max";
+                    else if("'"$enable_old_features"'" == "yes")
+                        method="max-less";
+                    else
+                        method="max-less-equal";
+                    FS = ".";
+                    split("'"$with_features_of"'", a);
+                    version=sprintf("%03d%03d%03d%03d", a[1], a[2], a[3], a[4]);
+                }
+                /config_version_require/ {
+                    gsub("^.*config_version_require *\\\\(\\\\(", "");
+                    gsub("\\\\)\\\\).*$", "");
+                    gsub(", *", ",");
+                    FS = ",";
+                    n = split($0, a);
+                    FS = ".";
+                    actver = "000000000000";
+                    actstr = a[1];
+                    for(i = 2; i < n; i += 2) {
+                        split(a[i], b);
+                        curver=sprintf("%03d%03d%03d%03d", b[1], b[2], b[3], b[4]);
+                        if (curver > actver && (method != "max-less" || curver < version) && (method != "max-less-equal" || curver <= version)) {
+                            actver = curver;
+                            actstr = a[i + 1];
+                        }
+                    }
+                    printf(" %s", actstr);
+                }'`]
+        AC_MSG_MODULE_DBG(" $i required versioned features: $new_list_alt3")
+        new_list="${new_list}${new_list_alt3}"
+
+        #---------------------
+      	# macro: config_require(modules)
+      	#  - lists modules required for this module
+        #
+        # check if $i has any other required modules
+        #
+        AH_TOP([#define config_require(x)])
+        new_list="$new_list `$MODULECPP module_tmp_header.h | \
+                  $SED -n 's/.*config_require(\(.*\)).*/\1/p'`"
+        AC_MSG_MODULE_DBG(" $i will test: $new_list")
+	if test "x$new_list" != "x"; then
+	  for j in $new_list
+	    do
+            AC_MSG_MODULE_DBG(-n " $i wants to add $j: ")
+	    if test ! -f $srcdir/$mibdir/$j.h -a ! -f $srcdir/$mibdir/$j.c; then
+              AC_MSG_WARN([mib module error])
+	      AC_MSG_ERROR([mib module "$i" requires module "$j" but $j.h or $j.c could not be found in $srcdir/$mibdir])
+	    elif echo " $new_with_out_mib_modules " | $GREP " $j " > /dev/null; then
+	      if test "x$i" != "xdefault_modules" ; then
+                mib_cfg_msg="mib module '$i' requires module '$j' but someone told me to compile without it"
+                AC_MSG_WARN([mib module error])
+                if test "x$with_mib_cfg_checks" = "xyes"; then
+                  AC_MSG_ERROR([$mib_cfg_msg])
+                else
+                  AC_MSG_WARN([$mib_cfg_msg])
+                  AC_MSG_CACHE_ADD([*** MIB Module warning *** $mib_cfg_msg])
+                fi
+#	    elif echo " $module_list $new_list_two $new_module_list " | $GREP " $j " > /dev/null; then
+#              AC_MSG_MODULE_DBG("  $j included previously")
+              fi
+	    else
+	      new_list_two="$new_list_two $j"
+              AC_MSG_MODULE_DBG("  $j included")
+	    fi
+	  done
+	fi
+
+        #---------------------
+      	# macro: config_add_mib(SOME-MIB)
+      	#  - lists MIBs to be added to the default to-load list.
+        #
+        # check if $i has any mibs to add
+        #
+        AH_TOP([#define config_add_mib(x)])
+        new_mibs=`$MODULECPP module_tmp_header.h | \
+                  $SED -n 's/.*config_add_mib(\(.*\)).*/\1/p'`
+	if test "x$new_mibs" != "x"; then
+	    for j in $new_mibs
+		do
+		if test "x`echo :$default_mibs: | $GREP :$j:`" = "x"; then
+		    default_mibs="$default_mibs:$j"
+		fi
+		if test -f $srcdir/mibs/$j.txt; then
+		    if echo $default_mibs_install | $GREP " $j " > /dev/null; then
+			    :
+		    else
+			    default_mibs_install="$default_mibs_install $j.txt"
+		    fi
+		fi
+	    done
+	fi # new mibs
+
+        #-------------------
+        # add the current module to the list of stuff to compile, etc.
+        #
+        # add $i to module list
+        #
+        AC_MSG_MODULE_DBG("  $i added (based on $i.h)")
+        module_list="$module_list $i"
+        eval ${module_type}_list="\"\$${module_type}_list $i\""
+
+	echo "read_config.lo: mibgroup/$i.h" >> $module_list_deps
+	if test $module_type = "agent_module" ; then
+ 	    echo "snmp_vars.lo: mibgroup/$i.h" >> $agent_module_list_deps
+        else
+ 	    echo "mib_modules.lo: mibgroup/$i.h" >> $mib_module_list_deps
+        fi
+
+        #-------------------
+        # check for unsupported config_load_mib
+        #
+        if $MODULECPP module_tmp_header.h | $GREP -q config_load_mib; then
+          AC_MSG_WARN([mib module error])
+      	  AC_MSG_WARN([mib module "$i" uses the "config_load_mib" directive, which is no longer supported.  It probably won't work.])
+        fi # grep config_load_mib
+
+        #-------------------
+        # check for config_parse_dot_conf
+        #  (generally not used any longer; old auto-load a .conf token)
+        #
+        AH_TOP([#define config_parse_dot_conf(w,x,y,z)])
+        changequote(, )
+        $MODULECPP module_tmp_header.h | \
+        $SED -n 's@.*config_parse_dot_conf(\([^)]*\), *\([^),]*\), *\([^),]*\), *\([^),]*\)).*@register_config_handler("snmpd",\1, \2, \3, \4);@p' >> $mibdir/mib_module_dot_conf.h
+	changequote([, ])
+
+        #---------------------
+      	# macro: config_error(error text)
+      	#  - used to signal a configuration error from a module
+        #
+        # check if $i has any errors, or warnings
+        #
+        AH_TOP([#define config_error(x)])
+        error=`$MODULECPP module_tmp_header.h | \
+               $SED -n 's/.*config_error(\(.*\)).*/\1/p'`
+	if test "x$error" != "x"; then
+          echo
+          echo
+          AC_MSG_ERROR([$i: *** $error ***])
+        fi
+
+        #---------------------
+      	# macro: config_warning(warning text)
+      	#  - used to signal a configuration "warning" to be printed to the user
+        #
+        AH_TOP([#define config_warning(x)])
+        warning=`$MODULECPP module_tmp_header.h | \
+                 $SED -n 's/.*config_warning(\(.*\)).*/\1/p'`
+	if test "x$warning" != "x"; then
+          all_warnings="$all_warnings $warning
+"
+        fi
+
+      #---------------------
+      # Check for a .c file if the .h didn't exist
+      #
+      elif test -f $srcdir/$mibdir/$i.c; then
+        if echo " $module_list $new_list_two $new_module_list " | $GREP " $i      " > /dev/null; then
+           AC_MSG_MODULE_DBG("  $i already included")
+        else
+           AC_MSG_MODULE_DBG("  $i added (based on $i.c)")
+	   module_list="$module_list $i"
+	   mib_module_list="$mib_module_list $i"
+        fi
+
+      #---------------------
+      # No .h or .c = error!  (typo?)
+      #
+      else # no $i.h or $i.c
+        AC_MSG_WARN([mib module error])
+	AC_MSG_ERROR([module files $i.h or $i.c could not be found in $srcdir/$mibdir])
+      fi # no $i.h
+
+      #-------------------
+      # check for init/shutdown routines too
+      #
+      has_c_code=no
+      if test -f $srcdir/$mibdir/$i.c; then
+        if test "x$output_to" = "xnormal" ; then
+	  echo "	$i \\" >> $module_list_code
+  	  echo $ECHO_N " $i" $ECHO_C >> $MODULE_LIST
+          eval tmpfilevar=\$`echo ${module_type}_list_code`
+          echo "	$i \\" >> $tmpfilevar
+        else
+          eval "dl_${dl_name}_files=\"\$dl_${dl_name}_files $i\""
+          saved_sublist_code="$saved_sublist_code $i"
+        fi
+        mnm=`echo $i | $SED 's/.*\///;s/\.c$//;'`
+        AC_MSG_MODULE_DBG(-e "\nchecking '$srcdir/$mibdir/$i.c' ($mnm/`basename $i`) C file for init/shutdown")
+        if test "x$mnm" != "x`basename $i`"; then
+           AC_MSG_WARN([mib module error])
+	   AC_MSG_ERROR([conflicting names: $mnm != `basename $i`])
+        fi
+        temp_init=`$GREP init_$mnm $srcdir/$mibdir/$i.c | $GREP -v _init_$mnm`
+	if test "x$temp_init" != "x"; then
+            AC_MSG_MODULE_DBG(-e "adding init_$mnm() to list")
+            need_header=1
+	    echo "  if (should_init(\"$mnm\")) init_$mnm();" >> $output_inits
+	fi
+	$GREP shutdown_$mnm $srcdir/$mibdir/$i.c > /dev/null
+        if test $? -eq 0 ; then
+            if test $module_debug -eq 1; then
+              echo -e "\nadding shutdown_$mnm() to list"
+            fi
+            need_header=1
+	    echo "  if (should_init(\"$mnm\")) shutdown_$mnm();" >> $mibdir/${module_type}_shutdown.h
+	fi
+      fi # test -f $srcdir/$mibdir/$i.c
+
+      #-------------------
+      # if there is a shutdown/init list,
+      #
+      if test $need_header -eq 1 ; then
+         echo '#include "'"mibgroup/$i.h"'"' >> $output_hdrs
+      else
+         echo '/*#include "'"mibgroup/$i.h"'"*/' >> $output_hdrs
+      fi
+
+      #-------------------
+      # check for output directory (for building outside of source tree
+      #
+      changequote(, )
+      if test "x`echo $i | $SED 's/\///g;'`" != "x$i"; then
+	mnd=`echo $i | $SED 's/\/[^/]*$//;'`
+	if test ! -d ./$mibdir/$mnd; then
+	    module_directories="$module_directories ./$mibdir/$mnd"
+	fi
+      fi # module directory test
+      changequote([, ])
+
+      #-------------------
+      # define USING_*_MODULE
+      #
+      changequote(, )
+      sym="`echo ${i} | $SED 's/[^a-zA-Z0-9_]/_/g' | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`"
+      changequote([, ])
+      echo "/* Define if compiling with the ${i} module files.  */" >> include/net-snmp/agent/${module_type}_config.h
+      echo "#define USING_${sym}_MODULE 1" >> include/net-snmp/agent/${module_type}_config.h
+      echo " " >> include/net-snmp/agent/${module_type}_config.h
+
+      #-------------------
+      echo $ECHO_N " $i$ECHO_C"
+    fi #
+    done # for i in $module_sublist
+
+    if test "$output_to" = "separate" ; then
+      if test "x$new_list_two" = "x" ; then
+        # no new sub-modules to add to the current target
+        output_to="normal"
+
+        dllcleans="$saved_sublist_o $dllcleans"
+        output_inits=""
+        module_sublist=""
+      else
+        # a module had sub-modules required; keep goin'
+        saved_sublist="$saved_sublist $module_sublist"
+        module_sublist="$new_list_two"
+        new_list_two=""
+      fi
+    else
+      module_sublist=""
+    fi
+
+    done # while module_sublist
+  done # for j in $new_module_list
+
+  # remember the top level modules for later reporting
+  if test $first_pass = 1 ; then
+    # remember this list for later reporting
+    top_level_modules="$new_module_list => $new_list_two"
+    first_pass=0
+  fi
+  #-------------------
+  # if $i added new modules vis config_*,
+  # check those modules for requirements too
+  #
+  # transfer the new module to check list to the normal variable
+  #
+  if test "x$new_list_two" ; then
+    output_to=normal
+  fi
+  new_module_list="$new_list_two"
+  new_list_two=""
+done # while test "x$new_module_list" != "x"; do
+echo ""
+
+#--------------------
+# construct the dll code files and make rules.  This can't be done
+# until now because duplicate use of a module means it gets removed
+# from the dll and put into the main agent.
+#
+for i in $dl_names ; do
+  eval mod_files="\"\$dl_${i}_files\""
+  echo "components in the $i dll: $mod_files"
+
+  output_inits="agent/mibgroup/${i}-dll.c"
+  output_hdrs="agent/mibgroup/${i}-hdrs.h"
+
+  AC_MSG_MODULE_DBG("creating dll file: $output_inits")
+  for ofile in $output_inits $output_hdrs ; do
+    if test -f $ofile ; then
+      if $GREP "this file created automatically by configure" $ofile > /dev/null 2>&1 ; then
+  	:
+      else
+  	AC_MSG_ERROR([$ofile already existed ; can't build dll object $i])
+      fi
+    fi
+    cat > $ofile << EOFIF
+/* xDo not edit; this file created automatically by configure */
+EOFIF
+  done
+
+  cat >> $output_inits << EOFOC
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include "${i}-hdrs.h"
+void
+init_$i(void) {
+EOFOC
+
+  # create the .so rule
+  saved_sublist_o=`echo "$mod_files " | $SED 's/^ *//g;s/  */.o /g;'`
+
+  # create the rules for each object
+  for j in $mod_files ; do
+    cat >> $module_rules << EOFR
+$j.o: $j.c
+	\$(CC) -c \$(CPPFLAGS) \$(CFLAGS) \$(DLFLAGS) -o \$@ \$<
+
+EOFR
+    mnm=`echo $j | $SED 's/.*\///;s/\.c$//;'`
+    echo "  if (should_init(\"$mnm\")) init_$mnm();" >> $output_inits
+  done
+
+  # create the rule for the .so and wrapper code
+  cat >> $module_rules << EOFM
+${i}-dll.o: ${i}-dll.c
+	\$(CC) -c \$(CPPFLAGS) \$(CFLAGS) \$(DLFLAGS) -o \$@ \$<
+
+${i}.so: $saved_sublist_o ${i}-dll.o
+	\$(CC) \$(CPPFLAGS) \$(CFLAGS) \$(DLFLAGS) -o \$@ $saved_sublist_o ${i}-dll.o
+
+EOFM
+        cat >> $output_inits << EOFOCFIN
+}
+EOFOCFIN
+
+done
+
+# cleanup
+rm -f conftest.$ac_ext module_tmp_header.h
+
+#-------------------
+# build module lists for Makefiles
+#
+changequote(, )
+
+for i in module_list_o module_list_c module_list_lo module_list_ft mib_module_list_o mib_module_list_c mib_module_list_lo mib_module_list_ft mibgroup_list_o mibgroup_list_lo mibgroup_list_ft agent_module_list_o agent_module_list_c agent_module_list_lo agent_module_list_ft agentgroup_list_o agentgroup_list_lo agentgroup_list_ft ; do
+  eval "$i=mk/${i}.mk"
+done
+
+$SED 's/^module_list_code/module_list_o/;s/\([^=]\)  *\\/\1.o \\/g'  < $module_list_code  > $module_list_o
+$SED 's/^module_list_code/module_list_c/;s/\([^=]\)  *\\/\1.c \\/g'  < $module_list_code  > $module_list_c
+$SED 's/^module_list_code/module_list_lo/;s/\([^=]\)  *\\/\1.lo \\/g' < $module_list_code  > $module_list_lo
+$SED 's/^module_list_code/module_list_ft/;s/\([^=]\)  *\\/\1.ft \\/g' < $module_list_code  > $module_list_ft
+
+$SED 's/^mib_module_list_code/mib_module_list_o/;s/\([^=]\)  *\\/\1.o \\/g'  < $mib_module_list_code  > $mib_module_list_o
+$SED 's/^mib_module_list_code/mib_module_list_c/;s/\([^=]\)  *\\/\1.c \\/g'  < $mib_module_list_code  > $mib_module_list_c
+$SED 's/^mib_module_list_code/mib_module_list_lo/;s/\([^=]\)  *\\/\1.lo \\/g' < $mib_module_list_code  > $mib_module_list_lo
+$SED 's/^mib_module_list_code/mib_module_list_ft/;s/\([^=]\)  *\\/\1.ft \\/g' < $mib_module_list_code  > $mib_module_list_ft
+
+$SED 's/^mib_module_list_o/mibgroup_list_o/;s@\([^ 	]*\)\.o@mibgroup/\1.o@g' < $mib_module_list_o > $mibgroup_list_o
+$SED 's/^mib_module_list_lo/mibgroup_list_lo/;s@\([^ 	]*\)\.lo@mibgroup/\1.lo@g' < $mib_module_list_lo > $mibgroup_list_lo
+$SED 's/^mib_module_list_ft/mibgroup_list_ft/;s@\([^ 	]*\)\.ft@mibgroup/\1.ft@g' < $mib_module_list_ft > $mibgroup_list_ft
+
+$SED 's/^agent_module_list_code/agent_module_list_o/;s/\([^=]\)  *\\/\1.o \\/g'  < $agent_module_list_code  > $agent_module_list_o
+$SED 's/^agent_module_list_code/agent_module_list_c/;s/\([^=]\)  *\\/\1.c \\/g'  < $agent_module_list_code  > $agent_module_list_c
+$SED 's/^agent_module_list_code/agent_module_list_lo/;s/\([^=]\)  *\\/\1.lo \\/g' < $agent_module_list_code  > $agent_module_list_lo
+$SED 's/^agent_module_list_code/agent_module_list_ft/;s/\([^=]\)  *\\/\1.ft \\/g' < $agent_module_list_code  > $agent_module_list_ft
+
+$SED 's/^agent_module_list_o/agentgroup_list_o/;s@\([^ 	]*\)\.o@mibgroup/\1.o@g' < $agent_module_list_o > $agentgroup_list_o
+$SED 's/^agent_module_list_lo/agentgroup_list_lo/;s@\([^ 	]*\)\.lo@mibgroup/\1.lo@g' < $agent_module_list_lo > $agentgroup_list_lo
+$SED 's/^agent_module_list_ft/agentgroup_list_ft/;s@\([^ 	]*\)\.ft@mibgroup/\1.ft@g' < $agent_module_list_ft > $agentgroup_list_ft
+
+for i in module_list_o module_list_c module_list_lo module_list_ft mib_module_list_o mib_module_list_c mib_module_list_lo mib_module_list_ft mibgroup_list_o mibgroup_list_lo mibgroup_list_ft agent_module_list_o agent_module_list_c agent_module_list_lo agent_module_list_ft agentgroup_list_o agentgroup_list_lo agentgroup_list_ft ; do
+	# hpux make (at least) doesn't like a trailing \ on the last
+	# line even when the next line contains nothing but
+	# whitespace.
+	lasttoken=`awk '{lasttoken=$1}END{print lasttoken}' mk/$i.mk`
+	$SED "s#$lasttoken \\\\#$lasttoken#" < mk/$i.mk > mk/$i.mk.tmp
+	mv mk/$i.mk.tmp mk/$i.mk
+
+	# add a closing comment
+	echo "" >> mk/$i.mk
+	echo "# end configure generated code" >> mk/$i.mk
+done
+
+changequote([, ])
+
+if test $module_debug -eq 1; then
+   echo -e "\nFinal module list: $module_list_code"
+   exit
+fi
+if test "x$with_mib_cfg_checks" = "xyes"; then
+  AC_MSG_CACHE_ADD([Agent Module list: $module_list_code])
+fi
+AC_SUBST_FILE(MODULE_LIST)
+AC_SUBST_FILE(module_list_c)
+AC_SUBST_FILE(module_list_o)
+AC_SUBST_FILE(module_list_lo)
+AC_SUBST_FILE(module_list_ft)
+AC_SUBST_FILE(mib_module_list_c)
+AC_SUBST_FILE(mib_module_list_o)
+AC_SUBST_FILE(mib_module_list_lo)
+AC_SUBST_FILE(mib_module_list_ft)
+AC_SUBST_FILE(agent_module_list_c)
+AC_SUBST_FILE(agent_module_list_o)
+AC_SUBST_FILE(agent_module_list_lo)
+AC_SUBST_FILE(agent_module_list_ft)
+AC_SUBST_FILE(mibgroup_list_o)
+AC_SUBST_FILE(mibgroup_list_lo)
+AC_SUBST_FILE(mibgroup_list_ft)
+AC_SUBST_FILE(agentgroup_list_o)
+AC_SUBST_FILE(agentgroup_list_lo)
+AC_SUBST_FILE(agentgroup_list_ft)
+
+AC_SUBST(default_mibs_install)
+AC_SUBST(dllcleans)
+AC_SUBST_FILE(module_rules)
+AC_SUBST_FILE(module_list_deps)
+AC_SUBST_FILE(mib_module_list_deps)
+AC_SUBST_FILE(agent_module_list_deps)
+
+AC_MSG_RESULT(.)
+
+if test $module_debug -eq 1; then
+AC_MSG_CACHE_ADD(Agent MIB code:            $module_list)
+fi
+AC_MSG_CACHE_ADD(Agent MIB code:            $top_level_modules)
+
+# end hairy agent module processing
+
+AC_MSG_CHECKING([if directories need to be created])
+for i in $module_directories; do
+  $srcdir/mkinstalldirs $i
+done
+AC_MSG_RESULT(.)
+
+#-------------------
+# Define default mibs
+#
+AC_MSG_CHECKING([default mib files to read])
+if test "x$NETSNMP_DEFAULT_MIBS" = "x"; then
+  NETSNMP_DEFAULT_MIBS="$default_mibs"
+fi
+if test "x$ENV_SEPARATOR" != "x"; then
+  :
+elif test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc" -o "x$PARTIALTARGETOS" = "xcygwin"; then
+  # mingw32 and cygwin use ';' as the default environment variable separator
+  ENV_SEPARATOR=";"
+  NETSNMP_DEFAULT_MIBS=`echo "$NETSNMP_DEFAULT_MIBS" | $SED 's/:/;/g'`
+  default_mibs=`echo "$default_mibs" | $SED 's/:/;/g'`
+else
+  ENV_SEPARATOR=":"
+fi
+AC_SUBST(ENV_SEPARATOR)
+AC_DEFINE_UNQUOTED([ENV_SEPARATOR], ["$ENV_SEPARATOR"],
+         [Environment separator character surrounded by double quotes.])
+AC_DEFINE_UNQUOTED([ENV_SEPARATOR_CHAR], ['$ENV_SEPARATOR'],
+          [Environment separator character surrounded by single quotes.])
+AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_MIBS,"$NETSNMP_DEFAULT_MIBS")
+AC_SUBST(NETSNMP_DEFAULT_MIBS)
+AC_MSG_RESULT($NETSNMP_DEFAULT_MIBS)
+
+#-------------------
+# 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
new file mode 100644
index 0000000..362ba0a
--- /dev/null
+++ b/configure.d/config_modules_lib
@@ -0,0 +1,234 @@
+# -*- autoconf -*-
+#
+# Maybe add library extensions for thread mutex locking.
+#
+
+if test "x$with_res_locks" = "xyes"; then
+  AC_DEFINE(NETSNMP_REENTRANT, 1,
+    [Define to 1 if you want to build with reentrant/threaded
+     code (incomplete).])
+
+    case $target_os in
+
+    aix*)
+	CC_RUNTIME_ARG="$CC_RUNTIME_ARG -lpthreads"
+	;;
+
+    *)
+	;;
+
+    esac
+fi
+
+#
+# Add platform-specific source files.
+#
+AC_MSG_CHECKING([for platform-specific source])
+other_src_list=""
+other_ftobjs_list=""
+other_lobjs_list=""
+other_objs_list=""
+other_agentobjs=""
+other_lagentobjs=""
+other_ftagentobjs=""
+other_trapd_objects=""
+
+# Win32 service code
+if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then
+  other_src_list="$other_src_list winservice.c winservicerc.rc"
+  other_objs_list="$other_objs_list winservice.o winservicerc.o"
+  other_lobjs_list="$other_lobjs_list winservice.lo winservicerc.lo"
+  other_ftobjs_list="$other_ftobjs_list winservice.ft winservicerc.ft"
+  other_agentobjs="../snmplib/winservicerc.o"
+  other_lagentobjs="../snmplib/winservicerc.lo"
+  other_ftagentobjs="../snmplib/winservicerc.lo"
+  other_trapd_objects="../snmplib/winservicerc.o" 
+fi
+  
+# Win32 pipes
+if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then
+  other_src_list="$other_src_list winpipe.c"
+  other_objs_list="$other_objs_list winpipe.o"
+  other_lobjs_list="$other_lobjs_list winpipe.lo"
+  other_ftobjs_list="$other_ftobjs_list winpipe.ft"
+fi
+
+AC_SUBST(other_src_list)
+AC_SUBST(other_objs_list)
+AC_SUBST(other_lobjs_list)
+AC_SUBST(other_ftobjs_list)
+AC_SUBST(other_agentobjs)
+AC_SUBST(other_lagentobjs)
+AC_SUBST(other_ftagentobjs)
+AC_SUBST(other_trapd_objects)
+
+AC_MSG_RESULT([$other_src_list $other_objs_list $other_lobjs_list])
+AC_MSG_RESULT([$other_agentobjs $other_lagentobjs $other_trapd_objects])
+  
+#
+# Create directory structure for build
+#
+if test ! -d include; then
+  mkdir include
+fi
+if test ! -d include/net-snmp; then
+  mkdir include/net-snmp
+fi
+if test ! -d include/net-snmp/agent; then
+  mkdir include/net-snmp/agent
+fi
+if test ! -d include/net-snmp/library; then
+  mkdir include/net-snmp/library
+fi
+if test ! -d include/ucd-snmp; then
+  mkdir include/ucd-snmp
+fi
+
+if test ! -d snmplib; then
+  mkdir snmplib
+fi
+if test ! -d snmplib/transports ; then
+  mkdir snmplib/transports
+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)
+AC_SUBST(transport_ftobj_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)
+
+# cleanup
+rm -f module_tmp_header.h
+
+#
+# Security modules to use
+# 
+
+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) 	 
+AC_SUBST(security_lobj_list)
+AC_SUBST(security_ftobj_list)
+AC_MSG_RESULT($new_with_security)
+AC_MSG_CACHE_ADD(SNMPv3 Security Modules:    $new_with_security)
+
+#
+# Handle the special case of KSM to see which crypto API we support
+#
+
+rebuilt_new_with_security=
+already_checked_krb5=no
+
+for sec in $new_with_security
+do
+  if test "x$sec" = "xksm"; then
+    if test "xyes" = "x$already_checked_krb5"; then
+      continue
+    else
+      already_checked_krb5=yes
+    fi
+  fi
+
+  if test x$sec != xksm; then
+    rebuilt_new_with_security="$rebuilt_new_with_security $sec"
+  else
+    if test no = $trykrb5; then
+      AC_MSG_NOTICE([configured not to use krb5. disabling ksm])
+      continue
+    fi
+
+    AC_PATH_PROG([krb5_config],krb5-config,[no],$krb5path/bin:$PATH)
+
+    if test no != $krb5_config; then
+      CPPFLAGS="$CPPFLAGS `$krb5_config --cflags`"
+      LIBS="$LIBS `$krb5_config --libs`"
+    elif test $krb5path != no; then
+      AC_ADD_SEARCH_PATH($krb5path)
+    else
+      AC_ADD_SEARCH_PATH(/usr/kerberos)
+    fi
+
+    AC_MSG_CHECKING([for krb5])
+    AC_CACHE_VAL(ac_cv_have_krb5,
+      AC_CHECK_LIB(krb5, krb5_init_context,
+	ac_cv_have_krb5=yes, ac_cv_have_krb5=no
+      )
+    )
+
+    if test $ac_cv_have_krb5 = no; then
+      if test "x$askedkrb5" = "xyes"; then
+	AC_MSG_ERROR(Asked to use krb5 but I couldn't find it.)
+      fi
+      AC_MSG_RESULT(no. disabling ksm)
+      continue
+    fi
+      
+    AC_MSG_RESULT(yes)
+    rebuilt_new_with_security="$rebuilt_new_with_security ksm"
+
+    AC_MSG_CHECKING([[for heimdal]])
+    AC_CACHE_VAL(ac_cv_heimdal,
+    [AC_TRY_COMPILE(
+      [#include <krb5.h>],
+      [const char *v = heimdal_version;],
+      ac_cv_heimdal=yes,
+      ac_cv_heimdal=no
+    )])
+    AC_MSG_RESULT($ac_cv_heimdal)
+    if test $ac_cv_heimdal = yes; then
+      AC_DEFINE(NETSNMP_USE_KERBEROS_HEIMDAL, 1,
+        [Define this if you're using Heimdal Kerberos])
+      if test no = $krb5_config; then
+	LIBS="$LIBS -lkrb5 -lasn1 -lcom_err -lroken"
+      fi
+    elif test no = $krb5_config; then
+	LIBS="$LIBS -lkrb5 -lcom_err"
+    fi
+
+    AC_MSG_CHECKING([to see which crypto API we need to use])
+    AC_CACHE_VAL(ac_cv_NETSNMP_USE_KERBEROS_MIT,
+      AC_CHECK_LIB(k5crypto, krb5_init_context,
+	ac_cv_NETSNMP_USE_KERBEROS_MIT=yes, ac_cv_NETSNMP_USE_KERBEROS_MIT=no
+      )
+    )
+
+    if test yes = $ac_cv_NETSNMP_USE_KERBEROS_MIT; then
+      AC_MSG_RESULT(new MIT crypto API)
+      AC_DEFINE(NETSNMP_USE_KERBEROS_MIT, 1,
+        [Define this if we're using the new MIT crypto API])
+      if test no = $krb5_config; then
+	LIBS="$LIBS -lk5crypto"
+      fi
+    else
+      AC_MSG_RESULT(old MIT crypto API)
+    fi
+    AC_CHECK_FUNCS([krb5_auth_con_getsendsubkey])
+  fi
+done
+
+new_with_security=$rebuilt_new_with_security
+
+#
+# Detect lm_sensors version
+#
+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 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..823ca7d
--- /dev/null
+++ b/configure.d/config_modules_security_modules
@@ -0,0 +1,70 @@
+# -*- sh -*-
+security_def_list="usm"
+security_src_list=""
+security_obj_list=""
+security_lobj_list=""
+security_ftobj_list=""
+security_mod_list=" "
+
+new_with_security=
+new_with_out_security=`echo $with_out_security_modules | tr , ' '`
+
+# Assign additional security modules
+for i in `echo $with_security_modules | tr , ' '`; do
+  if echo " $new_with_out_security " | $GREP " $i " > /dev/null; then
+    echo
+    AC_MSG_ERROR([security module conflict - $i both included and excluded])
+  elif echo " $new_with_security " | $GREP " $i " > /dev/null ; then
+    : # Double define, ignore
+  else
+    new_with_security="$new_with_security $i"
+  fi
+done
+
+# Add default security modules
+for i in $security_def_list; do
+  if echo " $new_with_out_security " | $GREP " $i " > /dev/null; then
+    : # Excluded, ignore
+  elif echo " $new_with_security " | $GREP " $i " > /dev/null ; then
+    : # Double define, ignore
+  else
+    new_with_security="$new_with_security $i"
+  fi
+done
+
+# Generate output files
+: ${security_init_file:='snmplib/snmpsm_init.h'}
+: ${security_shutdown_file:='snmplib/snmpsm_shutdown.h'}
+: ${security_incl_file:='include/net-snmp/library/snmpv3-security-includes.h'}
+
+echo "/* This file is automatically generated by configure.  Do not modify by hand. */" > $security_init_file
+echo "/* This file is automatically generated by configure.  Do not modify by hand. */" > $security_shutdown_file
+echo "/* This file is automatically generated by configure.  Do not modify by hand. */" > $security_incl_file
+
+for i in $new_with_security; do
+  cfile="snmp"$i".c"
+  hfile="snmp"$i".h"
+
+  # 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_mod_list="${security_mod_list} $i"
+  security_src_list="$security_src_list $cfile"
+  security_src_list="$security_src_list $cfile"
+  security_hdr_list="$security_hdr_list $hfile"
+  security_obj_list="$security_obj_list snmp"$i".o"
+  security_lobj_list="$security_lobj_list snmp"$i".lo"
+  security_ftobj_list="$security_ftobj_list snmp"$i".ft"
+  echo "init_"$i"();" >> $security_init_file
+  echo "shutdown_"$i"();" >> $security_shutdown_file
+  echo "#include <net-snmp/library/$hfile>" >> $security_incl_file
+  def_name="AS_TR_CPP([NETSNMP_SECMOD_$i])"
+  AC_DEFINE_UNQUOTED($def_name)
+done
+
diff --git a/configure.d/config_modules_transports b/configure.d/config_modules_transports
new file mode 100644
index 0000000..b10b960
--- /dev/null
+++ b/configure.d/config_modules_transports
@@ -0,0 +1,137 @@
+# -*- 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
+#undef NETSNMP_MINIMAL_CODE
+#define NET_SNMP_CONFIG_H
+#undef config_require
+#define config_require(foo) config_checkit_require(foo)
+#undef config_error
+#define config_error(foo) config_checkit_error(foo)
+#include "$rel_transport_hdr"]])])
+      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'`
+transport_ftobj_list=`echo " $transport_src_list " | $SED 's/\.c/\.ft/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"
+    transport_ftobj_list="$transport_ftobj_list inet_ntop.ft inet_pton.ft"
+  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
new file mode 100644
index 0000000..3c5385b
--- /dev/null
+++ b/configure.d/config_os_functions
@@ -0,0 +1,324 @@
+# -*- autoconf -*-
+#########################################
+##
+# Checks for library functions.
+##
+#########################################
+
+##
+#   Standard checks:
+##
+AC_FUNC_ALLOCA          #  alloca()
+AC_PROG_GCC_TRADITIONAL
+
+if test "$cross_compiling" = yes -a "${ac_cv_func_memcmp_working+set}" != set
+then
+  # Cross-compiling and ac_cv_func_memcmp_working has not been set - assume
+  # that memcmp() is available.
+  ac_cv_func_memcmp_working=yes
+else
+  # Native compilation - test for the availability of memcmp().
+  AC_FUNC_MEMCMP
+fi
+
+AC_TYPE_SIGNAL
+
+##
+#   Stand-alone function checks:
+##
+#  Core:
+AC_CHECK_FUNCS([lrand48         rand          random    ] dnl
+               [signal          sigset                  ] )
+
+#  Library:
+AC_CHECK_FUNCS([closedir        fgetc_unlocked  flockfile        ] dnl
+               [fork            funlockfile     getipnodebyname  ] dnl
+               [gettimeofday    if_nametoindex  mkstemp          ] dnl
+               [opendir         readdir         regcomp          ] dnl
+               [setenv          setitimer       setlocale        ] dnl
+               [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>],
+    [ gethostbyaddr(NULL); ])],
+    [ ac_cv_func_gethostaddr=yes
+      AS_ECHO "#define HAVE_GETHOSTBYADDR 1" >>confdefs.h
+    ], [ ])
+
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <winsock2.h>],
+    [ gethostname(NULL, 0); ])],
+    [ ac_cv_func_gethostname=yes
+      AS_ECHO "#define HAVE_GETHOSTNAME 1" >>confdefs.h
+    ], [ ])
+    ;;
+
+  *)
+    AC_CHECK_FUNCS([gai_strerror getaddrinfo gethostbyname gethostbyname2 gethostname gethostbyaddr])
+    ;;
+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        chown          execv           ] dnl
+               [gai_strerror                   getgrnam        ] dnl
+               [gethostname     getloadavg                     ] dnl
+               [getpid          getpwnam                       ] dnl
+               [hasmntopt       initgroups                     ] 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                         ] )
+
+#  Apps:
+AC_CHECK_FUNCS([getdtablesize                                  ] dnl
+               [getgrnam        getpid        getpwnam         ] dnl
+               [setgid          setgroups     setuid           ] dnl
+               [tcgetattr                                      ] )
+
+#  Not-Used:
+AC_CHECK_FUNCS([if_freenameindex              getpagesize      ] dnl
+               [lseek64         pread64                        ] dnl
+               [select          sigalrm       socket           ] )
+
+
+##
+#   More complex function checks:
+#           (Agent)
+##
+
+#       rpmGetPath check needs clean LIBS environment   (Linux)
+#
+if test "x$with_rpm" != "xno"; then
+    OLDLIBS=$LIBS
+    LIBS=$LMIBLIBS
+    AC_CHECK_FUNCS(rpmGetPath)
+    LIBS=$OLDLIBS
+fi
+
+#       statfs( char *, struct fs_data* )               (Ultrix)
+#
+AC_MSG_CHECKING([[for two-argument statfs with struct fs_data (Ultrix)]])
+AC_CACHE_VAL(
+    fu_cv_sys_stat_fs_data,
+    [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#include <sys/types.h>
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_SYS_FS_TYPES_H
+#include <sys/fs_types.h>
+#endif
+main ()
+{
+struct fs_data fsd;
+/* 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])])
+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,
+        [Define if statfs takes 2 args and the second argument has
+         type struct fs_data. @<:@Ultrix@:>@])
+fi
+
+
+##
+#   Other function-related checks:
+#           (general build)
+##
+
+#       How to get the name of the current function
+#
+AC_CACHE_CHECK([how to get the name of the current function],
+               [netsnmp_cv__func__name],[
+    netsnmp_cv__func__name=no
+    AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM(,[[const char* cp = __func__;]])],
+        [netsnmp_cv__func__name=__func__])
+    if test "$netsnmp_cv__func__name" = no ; then
+      AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM(,[[const char* cp = __FUNCTION__;]])],
+        [netsnmp_cv__func__name=__FUNCTION__])
+    fi])
+if test "$netsnmp_cv__func__name" != no; then
+    AC_DEFINE_UNQUOTED([NETSNMP_FUNCTION],[$netsnmp_cv__func__name],
+        [Should evaluate to the name of the current function if defined])
+fi
+
+
+#       Whether static inline functions are broken      (SCO Unixware)
+#
+AC_CACHE_CHECK([[whether static inline functions are broken (Unixware)]],
+                [netsnmp_cv_c_broken_inline],
+    AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+static inline int nested_inline_function(void) {
+  return 0;
+}
+inline int main_inline_function( void ) {
+  return nested_inline_function();
+}
+    ])],
+    netsnmp_cv_broken_inline=no,
+    netsnmp_cv_broken_inline=yes))
+
+
+#       Yes -  static inline functions are broken       (Solaris 2.x)
+#
+case "$target_os" in
+    solaris*)
+        netsnmp_cv_broken_inline=yes
+        ;;
+    *)
+        ;;
+esac
+
+if test "$netsnmp_cv_broken_inline" = yes ; then
+  AC_DEFINE(NETSNMP_BROKEN_INLINE, 1,
+        [Define if static inline functions are unsupported])
+fi
+
+
+##
+#   Mis-placed (non-function) checks:
+##
+
+AC_CACHE_CHECK([for SIOCGIFADDR in sys/ioctl.h],
+               netsnmp_cv_sys_ioctl_h_has_SIOCGIFADDR,
+    AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM([[
+#ifdef HAVE_SYS_IOCTL_H
+#include <sys/ioctl.h>
+#endif
+#ifndef SIOCGIFADDR
+No SIOCGIFADDR found here.
+#endif
+        ]])],
+    [netsnmp_cv_sys_ioctl_h_has_SIOCGIFADDR=yes],
+    [netsnmp_cv_sys_ioctl_h_has_SIOCGIFADDR=no]))
+if test $netsnmp_cv_sys_ioctl_h_has_SIOCGIFADDR = yes; then
+  AC_DEFINE(SYS_IOCTL_H_HAS_SIOCGIFADDR, 1,
+   [define if SIOCGIFADDR exists in sys/ioctl.h])
+fi
+
+##
+#   Check how to print a size_t variable
+##
+
+AC_CACHE_CHECK(
+    [the underlying type of a size_t],
+    netsnmp_cv_size_t_type,
+    [m4_foreach([TYPE], [[int],[long],[long long],[short],[char]],
+     [if [[ x$netsnmp_cv_size_t_type = x ]] ; then
+         AC_COMPILE_IFELSE(
+	     [AC_LANG_PROGRAM(
+[AC_INCLUDES_DEFAULT()
+extern unsigned TYPE variable;
+extern size_t variable;],
+                 [])],
+             [netsnmp_cv_size_t_type="TYPE"])
+     fi
+    ])])
+
+AC_MSG_CHECKING([how to printf a size_t])
+case "$netsnmp_cv_size_t_type" in
+    char|short|int) netsnmp_PRIz="" ;;
+    long) netsnmp_PRIz="l" ;;
+    "long long") netsnmp_PRIz="ll" ;;
+    *) AC_MSG_ERROR([underlying type of size_t not known]) ;;
+esac
+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
new file mode 100644
index 0000000..708aa09
--- /dev/null
+++ b/configure.d/config_os_headers
@@ -0,0 +1,588 @@
+#########################################
+##
+# Checks for header files.
+##
+#########################################
+
+##
+#   Standard checks:
+##
+#  Core:
+AC_HEADER_STDC          #  <stdlib.h>, <stdarg.h>,   <string.h>  & <float.h>
+AC_HEADER_DIRENT        #  <dirent.h>, <sys/ndir.h>, <sys/dir.h> & <ndir.h>
+#  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:
+##
+#  Core:
+AC_CHECK_HEADERS([getopt.h   pthread.h  regex.h      ] dnl
+                 [string.h   syslog.h   unistd.h     ] dnl
+                 [stdint.h   inttypes.h              ] dnl
+                 [sys/param.h        ] dnl
+                 [sys/select.h       ] dnl
+                 [sys/socket.h       ] dnl
+                 [sys/time.h         ] dnl
+                 [sys/timeb.h        ] dnl
+                 [sys/un.h           ])
+
+#  Library and Agent:
+AC_CHECK_HEADERS([nlist.h],,,[
+AC_INCLUDES_DEFAULT
+[
+#ifndef LIBBSD_DISABLE_DEPRECATED
+#define LIBBSD_DISABLE_DEPRECATED 1
+#endif
+]])
+
+#  Library:
+AC_CHECK_HEADERS([fcntl.h    io.h       kstat.h                 ] dnl
+                 [limits.h   locale.h                  ] dnl
+                 [sys/file.h       sys/ioctl.h         ] dnl
+                 [sys/sockio.h     sys/stat.h          ] dnl
+                 [sys/systemcfg.h  sys/systeminfo.h    ] dnl
+                 [sys/times.h      sys/uio.h           ] dnl
+                 [sys/utsname.h      ] dnl
+                 [netipx/ipx.h       ])
+
+#  Agent:
+AC_CHECK_HEADERS([dlfcn.h    err.h      fcntl.h    fstab.h      ] dnl
+                 [           grp.h      io.h                    ] dnl
+                 [ioctls.h   kstat.h    kvm.h      limits.h     ] dnl
+                 [           mntent.h   mtab.h                  ] dnl
+                 [           pkglocs.h             pwd.h        ] dnl
+                 [           com_err.h             et/com_err.h ] dnl
+                 [           utmpx.h    utsname.h               ])
+
+AC_CHECK_HEADERS([sys/diskio.h  sys/dkio.h                                 ] dnl
+                 [sys/file.h    sys/filio.h   sys/fixpoint.h               ] dnl
+                 [sys/fs.h      sys/ioctl.h   sys/loadavg.h  sys/mntent.h  ] dnl
+                 [sys/mnttab.h  sys/pool.h    sys/protosw.h  sys/pstat.h   ] dnl
+                 [sys/sockio.h  sys/stat.h    sys/statfs.h   sys/statvfs.h ] dnl
+                 [sys/stream.h  sys/sysget.h  sys/sysmp.h                  ] dnl
+                 [sys/tcpipstats.h            sys/utsname.h  sys/vfs.h     ] dnl
+                 [sys/vm.h      sys/vmmac.h   sys/vmmeter.h  sys/vmparam.h ] dnl
+                 [sys/vmsystm.h                                            ])
+
+AC_CHECK_HEADERS([asm/page.h asm/types.h               ] dnl
+                 [inet/mib2.h                          ] dnl
+                 [linux/hdreg.h linux/tasks.h          ] dnl
+                 [machine/param.h                      ] dnl
+                 [netinet/tcp_fsm.h                    ] dnl
+                 [ufs/fs.h                             ] dnl
+                 [uvm/uvm_extern.h uvm/uvm_param.h     ] dnl
+                 [vm/vm.h vm/vm_extern.h vm/vm_param.h ])
+
+#  Apps:
+AC_CHECK_HEADERS([fcntl.h    grp.h      pwd.h      ] dnl
+                 [sys/cdefs.h   sys/ioctl.h        ] dnl
+                 [sys/socket.h  sys/sockio.h       ] dnl
+                 [sys/time.h                       ])
+
+#  Not-Used:
+AC_CHECK_HEADERS([search.h   sgtty.h    xti.h      ] dnl
+                 [sys/dmap.h sys/poll.h            ] dnl
+                 [sys/timeout.h                    ] dnl
+                 [machine/pte.h                    ] dnl
+                 [pci/pci.h                        ])
+
+
+# Valgrind
+AC_CHECK_HEADERS([valgrind/valgrind.h valgrind/memcheck.h])
+# OpenSSL
+AC_CHECK_HEADERS([openssl/aes.h ])     #  (Core)
+AC_CHECK_HEADERS([openssl/dh.h  ])     #  (Apps)
+#  Not-Used:
+AC_CHECK_HEADERS([openssl/des.h  openssl/hmac.h ] dnl
+                 [openssl/evp.h  security/cryptoki.h])
+
+# RPM subdirectory path                   (Agent)
+if test "x$with_rpm" != "xno"; then
+  AC_CHECK_HEADERS([rpm/rpmts.h   rpm/rpmfileutil.h], [], [],
+		   [[#include <rpm/rpmlib.h>]])
+fi
+
+
+##
+#   Pre-requisite on other headers:
+##
+
+#       requiring <sys/param.h>  (MAXPATHLEN)           (OpenBSD 3.4)
+#  Agent:
+#
+AC_CHECK_HEADERS(sys/swap.h,,,
+    AC_INCLUDES_DEFAULT([])
+    [
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+    ])
+
+#       requiring <sys/param.h>                         (FreeBSD)
+#
+#  Core:      (? Tested above? )
+AC_CHECK_HEADERS([stdlib.h  ],,,
+    [[
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+    ]])
+#
+#  Library:
+AC_CHECK_HEADERS([malloc.h        net/if_dl.h   sys/sysctl.h    ],,,
+    [[
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+    ]])
+#
+#  Agent:
+AC_CHECK_HEADERS([malloc.h        osreldate.h                   ] dnl
+                 [machine/types.h net/if_dl.h   net/if_types.h  ] dnl
+                 [sys/dkstat.h    sys/conf.h    sys/mbuf.h      ] dnl
+                 [sys/mount.h     sys/proc.h    sys/queue.h     ] dnl
+                 [sys/sysctl.h    sys/user.h                    ],,,
+    [[
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+    ]])
+
+#       requiring <sys/sema.h>                          (IRIX 6.5)
+#  Agent:
+#
+AC_CHECK_HEADERS([sys/sema.h])
+AC_CHECK_HEADERS(sys/hashing.h,,,
+    AC_INCLUDES_DEFAULT([])
+    [
+#if HAVE_SYS_SEMA_H
+#include <sys/sema.h>
+#endif
+    ])
+
+#       requiring <sys/socket.h>                        (Solaris 9)
+#  Agent:
+#
+AC_CHECK_HEADERS(sys/socketvar.h,,,
+    AC_INCLUDES_DEFAULT([])
+    [
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+    ])
+
+#       requiring _KMEMUSER and <sys/types.h>           (BSDi3/IRIX)
+#  Agent:
+#
+AC_CHECK_HEADERS(sys/vnode.h,,,
+    [
+#define _KMEMUSER 1
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+    ])
+
+#       requiring <machine/types.h>                     (NetBSD)
+#  Agent:
+#
+AC_CHECK_HEADERS(sys/disklabel.h,,,
+    [[
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_MACHINE_TYPES_H
+#include <machine/types.h>
+#endif
+    ]])
+
+#	QNX
+AC_CHECK_HEADERS([nbutil.h])
+
+#       UFS headers
+#  Agent:
+#
+AC_CHECK_HEADERS([ufs/ufs/dinode.h ufs/ufs/quota.h ufs/ufs/inode.h ufs/ffs/fs.h],,,
+    [[
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_UFS_UFS_DINODE_H
+#include <ufs/ufs/dinode.h>
+#endif
+#if HAVE_UFS_UFS_QUOTA_H
+#include <ufs/ufs/quota.h>
+#endif
+    ]])
+
+#       requiring <vm/vm.h>                             (BSDi2)
+#  Agent:
+#
+AC_CHECK_HEADERS(vm/swap_pager.h,,,
+    [[
+#if HAVE_VM_VM_H
+#include <vm/vm.h>
+#endif
+    ]])
+
+#       netlink/rtnetlink                               (Linux)
+#  Agent:
+#
+AC_CHECK_HEADERS([linux/netlink.h  linux/rtnetlink.h],,,
+    [[
+#if HAVE_ASM_TYPES_H
+#include <asm/types.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_LINUX_NETLINK_H
+#include <linux/netlink.h>
+#endif
+    ]])
+
+
+#       Network headers
+#  Core or Library/Agent/Apps:
+#
+AC_CHECK_HEADERS([arpa/inet.h        net/if.h             ] dnl
+                 [netinet/in.h       netdb.h              ],,,
+    [[
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_TIMEOUT_H
+#include <sys/timeout.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_SYS_SOCKETVAR_H
+#include <sys/socketvar.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#if HAVE_NETINET_IN_SYSTM_H
+#include <netinet/in_systm.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IP_H
+#include <netinet/ip.h>
+#endif
+#if HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#if HAVE_NETINET_IP_VAR_H
+#include <netinet/ip_var.h>
+#endif
+#if HAVE_NETINET_IP_ICMP_H
+#include <netinet/ip_icmp.h>
+#endif
+#if HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+#if HAVE_NETINET_UDP_H
+#include <netinet/udp.h>
+#endif
+#if HAVE_NETINET_TCP_TIMER_H
+#include <netinet/tcp_timer.h>
+#endif
+    ]])
+#
+#  Agent:
+AC_CHECK_HEADERS([net/if_arp.h       net/if_mib.h         net/if_var.h     ] dnl
+                 [netinet/if_ether.h netinet/in_systm.h   netinet/in_var.h ] dnl
+                 [netinet/ip.h       netinet/ip_icmp.h                     ] dnl
+                 [netinet/icmp_var.h netinet/ip_var.h                      ] dnl
+                 [netinet/tcp.h      netinet/tcp_timer.h  netinet/tcp_var.h] dnl
+                 [netinet/tcpip.h    netinet/udp.h        netinet/udp_var.h] dnl
+                 [net/route.h        netinet/icmp6.h                       ],,,
+    [[
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_TIMEOUT_H
+#include <sys/timeout.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_SYS_SOCKETVAR_H
+#include <sys/socketvar.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+#if HAVE_NETINET_IN_SYSTM_H
+#include <netinet/in_systm.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IP_H
+#include <netinet/ip.h>
+#endif
+#if HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#if HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#if HAVE_NETINET_IP_VAR_H
+#include <netinet/ip_var.h>
+#endif
+#if HAVE_NETINET_IP_ICMP_H
+#include <netinet/ip_icmp.h>
+#endif
+#if HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+#if HAVE_NETINET_UDP_H
+#include <netinet/udp.h>
+#endif
+#if HAVE_NETINET_TCP_TIMER_H
+#include <netinet/tcp_timer.h>
+#endif
+#if HAVE_NETINET_ICMP6_H
+#include <netinet/icmp6.h>
+#endif
+    ]])
+
+#       KAME (IPv6) headers
+#  Agent:
+#
+# KAME
+AC_CHECK_HEADERS([netinet/ip6.h                               ] dnl
+                 [netinet6/in6_var.h    netinet6/in6_pcb.h    ] dnl
+                 [netinet6/ip6_var.h    netinet6/nd6.h        ] dnl
+                 [netinet6/tcp6.h       netinet6/tcp6_fsm.h   ] dnl
+                 [netinet6/tcp6_timer.h netinet6/tcp6_var.h],,,
+    [[
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#if HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#if HAVE_NET_ROUTE_H
+#include <net/route.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IP6_H
+#include <netinet/ip6.h>
+#endif
+    ]])
+
+#       requiring <netinet/in.h>                        (OpenBSD 2.6)
+#  Agent:
+#
+AC_CHECK_HEADERS(netinet/in_pcb.h,,,
+    [[
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#if HAVE_SYS_TIMEOUT_H
+#include <sys/timeout.h>
+#endif
+#if HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#if HAVE_SYS_SOCKETVAR_H
+#include <sys/socketvar.h>
+#endif
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IN_SYSTM_H
+#include <netinet/in_systm.h>
+#endif
+#if HAVE_NETINET_IP_H
+#include <netinet/ip.h>
+#endif
+#if HAVE_NET_ROUTE_H
+#include <net/route.h>
+#endif
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+    ]])
+
+##
+#   Pre-requisite on specific types
+##
+
+#       Special hack to get around various problems on older Linux kernels
+#       (major ugh!)
+#  Agent:
+#
+AC_CHECK_HEADERS([linux/ethtool.h],,,
+[[
+#include <linux/types.h>
+typedef __u64 u64;         /* hack, so we may include kernel's ethtool.h */
+typedef __u32 u32;         /* ditto */
+typedef __u16 u16;         /* ditto */
+typedef __u8 u8;           /* ditto */
+]])
+
+##
+#   Headers requiring particular libraries
+##
+
+#       for HostRes                                     (Solaris 2.x)
+#  Agent:
+#
+AC_CHECK_HEADERS(pkginfo.h,
+    NETSNMP_SEARCH_LIBS(pkginfo, adm,
+        AC_DEFINE(HAVE_PKGINFO, 1, [define if you have pkginfo]),,,LMIBLIBS))
+
+AC_CHECK_HEADERS(pkg.h,
+    NETSNMP_SEARCH_LIBS(pkg_init, pkg,
+        AC_DEFINE(HAVE_LIBPKG, 1, [define if you have BSD pkg-ng])))
+
+if test $ac_cv_header_pkg_h = no
+then
+    unset ac_cv_header_pkg_h
+    netsnmp_save_CPPFLAGS="$CPPFLAGS"
+    netsnmp_save_LDFLAGS="$LDFLAGS"
+    CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+    LDFLAGS="$LDFLAGS -L/usr/local/lib"
+    AC_CHECK_HEADERS(pkg.h,
+        NETSNMP_SEARCH_LIBS(pkg_init, pkg,
+	    AC_DEFINE(HAVE_LIBPKG, 1, [define if you have BSD pkg-ng])))
+    if test $ac_cv_header_pkg_h = no
+    then
+        CPPFLAGS="$netsnmp_save_CPPFLAGS"
+        LDFLAGS="$netsnmp_save_LDFLAGS"
+    fi
+fi
+
+case $target_os in
+    aix*)
+        #       for CPU/memory statistics               (AIX)
+        #  Agent:
+        #
+        AC_CHECK_HEADERS(libperfstat.h,
+            NETSNMP_SEARCH_LIBS(perfstat_cpu_total, perfstat,
+                AC_DEFINE(HAVE_PERFSTAT, 1, [on aix, if you have perfstat]),
+                AC_MSG_ERROR([
+
+*** To monitor CPU/memory values in AIX you need to install
+*** libperfstat which can be found in bos.perf
+]),,
+                LMIBLIBS),,
+    [[
+#if HAVE_SYS_PROTOSW_H
+#include <sys/protosw.h>
+#endif
+    ]])
+        ;;
+    hpux*)
+        #       HP-UX agent needs open_mib       (XXX - not a header check!)
+        #
+        NETSNMP_SEARCH_LIBS(open_mib, nm,
+            AC_DEFINE(HAVE_LIBNM, 1, [define if you have libnm]),,,LMIBLIBS)
+        ;;
+    *)
+        ;;
+esac
+
+#       for MIB-2 info                                  (Cygwin and MinGW)
+#  Core:
+#
+AC_CHECK_HEADERS([windows.h iphlpapi.h], [], [], [
+#ifdef HAVE_WINDOWS_H
+#include <windows.h>
+#endif
+])
+
+#       for MIB-2 info                                  (MinGW)
+#  Core:
+#
+if test x$with_socklib = xwinsock2; then
+  AC_CHECK_HEADERS([winsock.h winsock2.h ws2tcpip.h])
+fi
+
+#
+# for ucd-snmp/lmsensorsMib
+#
+AC_CHECK_HEADERS([sensors/sensors.h picl.h])
+
+##  This is here to avoid loads of redefinition warnings during
+##  module configuration
+
+##
+#   rtentry structure checks:
+##
+
+# Check struct rtentry for common fields
+#   Agent:
+#
+AC_CHECK_MEMBERS([struct rtentry.rt_dst,
+                  struct rtentry.rt_hash,
+                  struct rtentry.rt_next,
+                  struct rtentry.rt_refcnt,
+                  struct rtentry.rt_unit,
+                  struct rtentry.rt_use],,,
+    [
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#include <sys/types.h>
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#include <sys/socket.h>
+#undef KERNEL
+#undef _KERNEL
+#endif
+#ifdef HAVE_NET_ROUTE_H
+#include <net/route.h>
+#endif
+    ])
+
+fi # NETSNMP_QUICK_CHECK
diff --git a/configure.d/config_os_libs1 b/configure.d/config_os_libs1
new file mode 100644
index 0000000..35f052a
--- /dev/null
+++ b/configure.d/config_os_libs1
@@ -0,0 +1,95 @@
+# -*- autoconf -*-
+#########################################
+##
+# Checks for libraries that are run
+# before the agent module tests.
+##
+#########################################
+
+
+##
+#   RPM checks
+#
+##
+AC_CHECK_HEADERS(rpm/rpmlib.h rpm/header.h)
+
+AC_CHECK_HEADER(rpm/rpmlib.h,rpmlib_h=yes,rpmlib_h=no)
+AC_CHECK_HEADER(rpm/header.h,rpmheader_h=yes,rpmheader_h=no)
+
+if test "x$rpmheader_h" = "xno" -o "x$rpmlib_h" = "xno" ; then
+  if test "x$with_rpm" = "xyes" ; then
+    AC_MSG_ERROR([Could not find either the RPM header files needed and was specifically asked to use RPM support])
+  else
+    with_rpm=no
+  fi
+fi
+
+#
+# rpm libraries only needed for the host resources mib software
+# installed tables (on linux in particular)
+#
+if test "x$with_rpm" != "xno"; then
+  # ARG.  RPM is a real pain.
+  # FWIW librpm.la, librpmio.la, and libpopt.la have correct dependencies.
+  _rpmlibs=""
+
+  # rpm-4.0.x needs rpmio.
+  NETSNMP_SEARCH_LIBS(rpmGetPath, rpmio,,, $LMIBLIBS, _rpmlibs)
+  
+  # rpm-4.0.3 librpmdb actually contains what we need.
+  NETSNMP_SEARCH_LIBS(rpmdbOpen, rpmdb,,, $LMIBLIBS, _rpmlibs)
+  # now check for rpm using the appropriate libraries.
+  NETSNMP_SEARCH_LIBS(rpmReadConfigFiles, rpm, [
+    AC_DEFINE(HAVE_LIBRPM, 1,
+      [Define to 1 if you have the `rpm' library (-lrpm).])
+    LMIBLIBS="$_rpmlibs $LMIBLIBS"
+  ],, $LMIBLIBS, _rpmlibs)
+
+  # rpm 4.6 has incompatible API, turn on the legacy one
+  AC_CHECK_DECL([headerGetEntry],
+    : ,
+    AC_DEFINE([_RPM_4_4_COMPAT], [], [Define if you have RPM 4.6 or newer to turn on legacy API]),
+    [[#include <rpm/rpmlib.h>]]
+  )
+fi
+
+#
+# getfsstat/getvfsstat
+#
+AC_SEARCH_LIBS(getfsstat, [nbutil])
+AC_CHECK_FUNCS(getfsstat)
+AC_CHECK_FUNCS(getvfsstat)
+AC_FUNC_GETMNTENT
+
+#
+# kinfo_get_cpus
+#
+AC_SEARCH_LIBS(kinfo_get_cpus, [kinfo])
+AC_CHECK_FUNCS(kinfo_get_cpus)
+
+#
+# diskIOLAx requires exp which may require -lm
+#
+AC_SEARCH_LIBS(exp, [m])
+
+#
+#   libkvm
+#
+NETSNMP_SEARCH_LIBS(kvm_read, kvm,,,, LAGENTLIBS)
+NETSNMP_SEARCH_LIBS(kvm_openfiles, kvm,,,, LAGENTLIBS)
+NETSNMP_SEARCH_LIBS(kvm_getprocs, kvm,,,, LMIBLIBS)
+NETSNMP_SEARCH_LIBS(kvm_getproc2, kvm,,,, LMIBLIBS)
+NETSNMP_SEARCH_LIBS(kvm_getswapinfo, kvm,,,, LMIBLIBS)
+netsnmp_save_LIBS="$LIBS"
+LIBS="$LAGENTLIBS $LMIBLIBS $LIBS"
+AC_CHECK_FUNCS([kvm_openfiles kvm_getprocs kvm_getproc2 kvm_getswapinfo])
+LIBS="$netsnmp_save_LIBS"
+
+#
+#   dynamic module support
+#
+NETSNMP_SEARCH_LIBS([dlopen], [dl],,, [$LAGENTLIBS $LSNMPLIBS], [LMIBLIBS])
+netsnmp_save_LIBS="$LIBS"
+LIBS="$LMIBLIBS $LAGENTLIBS $LSNMPLIBS $LIBS"
+AC_CHECK_FUNCS([dlopen])
+LIBS="$netsnmp_save_LIBS"
diff --git a/configure.d/config_os_libs2 b/configure.d/config_os_libs2
new file mode 100644
index 0000000..47491e2
--- /dev/null
+++ b/configure.d/config_os_libs2
@@ -0,0 +1,504 @@
+# -*- autoconf -*-
+#########################################
+##
+# Checks for libraries that are run
+# after the agent module tests.
+##
+#########################################
+
+#   HAVE_LIB Definitions used in the Net-SNMP code base:
+#
+#       HAVE_LIBCRYPTO:	apps
+#       HAVE_LIBRPM:	agent
+#
+
+##
+#   Simple checks:
+##
+
+# AC_CHECK_LIB(des, main)
+# AC_CHECK_LIB(m,   asin)
+
+#   dmalloc
+#
+if test "${with_dmalloc+set}" = set; then
+   if test "$with_dmalloc" = yes -a -d $with_dmalloc ; then
+       AC_ADD_SEARCH_PATH($with_dmalloc)
+   fi
+   AC_CHECK_HEADERS([dmalloc.h])
+   AC_SEARCH_LIBS([dmalloc_message], [dmalloc])
+fi
+
+#   EFence
+#       (This used to be on by default for developer checkout)
+#
+if test "x$use_efence" = "xyes"; then
+    AC_SEARCH_LIBS([EF_Exit], [efence])
+fi
+
+
+#   ELF libraries
+#       Typically used for 'nlist'  (needed for uptime)
+#
+if test "x$with_elf" != "xno"; then
+case $target_os in
+	linux*) # add hosts which don't use nlist here
+                ;;
+	irix*) # Check for nlist in mld (irix)
+		AC_CHECK_LIB(elf, nlist)
+		AC_CHECK_LIB(elf, nlist64)
+		AC_CHECK_LIB(mld, nlist)
+		;;
+	*) # default
+		AC_CHECK_LIB(elf, nlist)
+		;;
+esac
+fi
+ 
+
+#   libsocket
+#       Needed for 'socket(2)'                          (Solaris)
+#       Possibly also for 'gethostname(3)'              (non-Solaris)
+#           (alternatively in libnsl                    (Solaris)
+#            or in libws2_32)                           (MinGW)
+#
+case x$with_socklib in
+xwinsock2)
+  #   libws2_w32                                        (MinGW)
+  #
+  netsnmp_save_LIBS="$LIBS"
+  LIBS="$LIBS -lws2_32"
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([
+    #include <winsock2.h>
+  ], [
+    socket(0, 0, 0);
+    gethostbyname(0);
+  ])], [
+    # Keep LIBS.
+    true
+  ], [
+    # Restore LIBS and complain.
+    LIBS="$netsnmp_save_LIBS"
+    AC_MSG_ERROR([libws2_32 not found.])
+  ])
+  ;;
+*)
+  AC_SEARCH_LIBS(socket, socket,,AC_MSG_ERROR([socket(2) not found.]))
+  AC_SEARCH_LIBS(gethostbyname, [nsl socket])
+  AC_CHECK_FUNCS(gethostbyname)
+  AC_SEARCH_LIBS(gethostbyaddr, [nsl socket])
+  AC_CHECK_FUNCS(gethostbyaddr)
+  ;;
+esac
+
+
+#   libiphlpapi                                         (Cygwin and MinGW)
+#
+netsnmp_save_LIBS="$LIBS"
+LIBS="$LIBS -liphlpapi"
+AC_LINK_IFELSE([AC_LANG_PROGRAM([
+  #include <winsock2.h>
+  #include <iphlpapi.h>
+], [
+  IpRenewAddress(0);
+])], [
+  # Keep LIBS.
+  true
+], [
+  # Restore LIBS and complain.
+  LIBS="$netsnmp_save_LIBS"
+  case x$with_socklib in
+  xwinsock2)
+    AC_MSG_ERROR([libiphlpapi not found.])
+    ;;
+  esac
+])
+
+
+#   libregex                                            (MinGW)
+#
+netsnmp_save_LIBS="$LIBS"
+LIBS="$LIBS -lregex"
+AC_LINK_IFELSE([AC_LANG_PROGRAM([
+  #include <sys/types.h>
+  #include <regex.h>
+], [
+  regcomp(0, 0, 0);
+])], [
+  # Keep LIBS.
+  true
+], [
+  # Restore LIBS.
+  LIBS="$netsnmp_save_LIBS"
+])
+
+
+#   libsnmpapi                                          (MinGW)
+#
+netsnmp_save_LIBS="$LIBS"
+LIBS="$LIBS -lsnmpapi"
+AC_LINK_IFELSE([AC_LANG_PROGRAM([
+  #include <snmp.h>
+], [
+  SnmpUtilMemAlloc(0);
+])], [
+  # Keep LIBS.
+  true
+], [
+  # Restore LIBS.
+  LIBS="$netsnmp_save_LIBS"
+])
+
+
+#   kstat library                                       (Solaris)
+#
+NETSNMP_SEARCH_LIBS(kstat_lookup, kstat,
+        AC_DEFINE(HAVE_LIBKSTAT, 1,
+        	[Define to 1 if you have the `kstat' library (-lkstat).]),,,
+        LNETSNMPLIBS)
+
+
+#
+#   librt
+#
+
+NETSNMP_SEARCH_LIBS(clock_gettime, rt,
+        AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
+                [Define to 1 if you have the `clock_gettime' library]),,,
+        LNETSNMPLIBS)
+
+
+##
+#   MIB-module-specific checks
+##
+
+#   libdevstat
+#        (for diskIO MIB)
+#
+#   Not-Used: HAVE_GETDEVS/HAVE_DEVSTAT_GETDEVS
+#
+echo " $module_list " | $GREP " ucd-snmp/diskio " >/dev/null
+if test $? -eq 0 ; then
+	NETSNMP_SEARCH_LIBS(getdevs, devstat,
+                AC_DEFINE(HAVE_GETDEVS, 1,
+                        [define if you have getdevs()]),,,LMIBLIBS)
+	NETSNMP_SEARCH_LIBS(devstat_getdevs, devstat,
+                AC_DEFINE(HAVE_DEVSTAT_GETDEVS, 1,
+                        [define if you have devstat_getdevs()]),,,LMIBLIBS)
+fi
+
+#   libpci
+#        (for if-mib description)
+#
+NETSNMP_SEARCH_LIBS(pci_lookup_name, pci,
+	AC_DEFINE(HAVE_PCI_LOOKUP_NAME, 1,
+		[define if you have pci_lookup_name()]),,,LMIBLIBS)
+
+#   LM-SENSORS-MIB support
+#
+echo " $module_list " | $GREP -i "ucd-snmp/lmsensor" > /dev/null
+if test $? -eq 0 ; then
+        AC_MSG_CHECKING([for sensors support])
+        case $target_os in
+        solaris*)
+            #  Agent:  HAVE_PICL_H
+            #
+            AC_CHECK_HEADER(picl.h, LMIBLIBS="${LMIBLIBS} -lpicl",)
+            AC_CHECK_HEADERS(picl.h)
+            ;;
+        *)
+            #  Not-Used:  HAVE_SENSORS_SENSORS_H
+            #
+            AC_CHECK_HEADER(sensors/sensors.h,,
+                [AC_MSG_ERROR([asked to use lm_sensors but I couldn't find sensors/sensors.h])])
+            NETSNMP_SEARCH_LIBS(sensors_get_detected_chips, sensors,,
+                [AC_MSG_ERROR([asked to use lm_sensors but I couldn't find -lsensors])],,
+                LMIBLIBS)
+            ;;
+        esac
+fi
+
+#
+# libnl (netlink)
+#
+
+if test "x$with_nl" != "xno"; then
+    case $target_os in
+    linux*) # Check for libnl (linux)
+        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
+
+
+
+##
+#   More complex checks:
+##
+
+#   Security related functions
+#
+NONAGENTLIBS=$LIBS	 # save old libraries
+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")
+    else 
+        if test "x$tryrsaref" != "xno"; then
+            AC_CHECK_LIB(rsaref, RSAPrivateDecrypt)
+            AC_CHECK_LIB(RSAglue, RSA_PKCS1_RSAref)
+        fi
+
+        AC_MSG_CHECKING([for -leay32])
+        netsnmp_save_LIBS="$LIBS"
+        LIBS="-leay32"
+        AC_LINK_IFELSE([AC_LANG_PROGRAM([
+                #include <openssl/evp.h>],
+                [return EVP_md5();])],
+            [AC_MSG_RESULT(yes); ac_cv_lib_eay32_EVP_md5=yes; CRYPTO="eay32"],
+            [AC_MSG_RESULT(no)]
+        )
+        LIBS="$netsnmp_save_LIBS"
+
+        if test x$CRYPTO = x; then
+            AC_CHECK_LIB([crypto], [EVP_md5], [CRYPTO="crypto"])
+        fi
+
+        if test x$CRYPTO != x; then
+            AC_DEFINE(HAVE_LIBCRYPTO, 1,
+                [Define to 1 if you have the OpenSSL library (-lcrypto or -leay32).])
+            LIBCRYPTO="-l${CRYPTO}"
+            AC_CHECK_LIB(${CRYPTO}, AES_cfb128_encrypt, 
+                AC_DEFINE(HAVE_AES_CFB128_ENCRYPT, 1,
+                    [Define to 1 if you have the `AES_cfb128_encrypt' function.]))
+
+            AC_CHECK_LIB(${CRYPTO}, EVP_MD_CTX_create,
+                AC_DEFINE([HAVE_EVP_MD_CTX_CREATE], [],
+                    [Define to 1 if you have the `EVP_MD_CTX_create' function.])
+                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,
+                AC_DEFINE(HAVE_LIBSSH2, 1,
+                    [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]),)
+            SSHPROG=yes
+        fi
+    fi
+elif test "x$askedpkcs" = "xyes"; then
+    AC_CHECK_LIB(pkcs11, C_Initialize,
+        AC_DEFINE(HAVE_LIBPKCS11)
+        LIBPKCS11="-lpkcs11")
+fi
+if test "x$TLSPROG" = "xyes"; then
+   AC_CHECK_DECL([EVP_sha224],
+    AC_DEFINE([HAVE_EVP_SHA224], [], [Define if you have EVP_sha224/256 in openssl]),
+    : ,
+    [[#include <openssl/evp.h>]])
+   AC_CHECK_DECL([EVP_sha384],
+    AC_DEFINE([HAVE_EVP_SHA384], [], [Define if you have EVP_sha384/256 in openssl]),
+    : ,
+    [[#include <openssl/evp.h>]])
+fi
+
+LIBS=$NONAGENTLIBS	 # restore old libraries
+if test "x$SSHPROG" = "xyes"; then
+    NETSNMP_BUILD_SSH_PROG_TRUE=''
+    NETSNMP_BUILD_SSH_PROG_FALSE='#'
+else
+    NETSNMP_BUILD_SSH_PROG_TRUE='#'
+    NETSNMP_BUILD_SSH_PROG_FALSE=''
+fi
+if test "x$TLSPROG" = "xyes" -a "x$enable_read_only" != "xyes" ; then
+    NETSNMP_BUILD_TLS_PROG_TRUE=''
+    NETSNMP_BUILD_TLS_PROG_FALSE='#'
+else
+    NETSNMP_BUILD_TLS_PROG_TRUE='#'
+    NETSNMP_BUILD_TLS_PROG_FALSE=''
+fi
+if echo " ${security_mod_list} " | grep ' usm ' ; then
+    if test "x$enable_read_only" != "xyes" ; then
+    	NETSNMP_BUILD_USM_PROG_TRUE=''
+    	NETSNMP_BUILD_USM_PROG_FALSE='#'
+    else
+    	NETSNMP_BUILD_USM_PROG_TRUE='#'
+    	NETSNMP_BUILD_USM_PROG_FALSE=''
+    fi
+else
+    NETSNMP_BUILD_USM_PROG_TRUE='#'
+    NETSNMP_BUILD_USM_PROG_FALSE=''
+fi
+if test "x$enable_read_only" != "xyes" ; then
+    NETSNMP_BUILD_SET_PROG_TRUE=""
+    NETSNMP_BUILD_SET_PROG_FALSE="#"
+else
+    NETSNMP_BUILD_SET_PROG_TRUE="#"
+    NETSNMP_BUILD_SET_PROG_FALSE=""
+fi
+AC_SUBST(NETSNMP_BUILD_SSH_PROG_TRUE)
+AC_SUBST(NETSNMP_BUILD_SSH_PROG_FALSE)
+AC_SUBST(NETSNMP_BUILD_TLS_PROG_TRUE)
+AC_SUBST(NETSNMP_BUILD_TLS_PROG_FALSE)
+AC_SUBST(NETSNMP_BUILD_USM_PROG_TRUE)
+AC_SUBST(NETSNMP_BUILD_USM_PROG_FALSE)
+AC_SUBST(NETSNMP_BUILD_SET_PROG_TRUE)
+AC_SUBST(NETSNMP_BUILD_SET_PROG_FALSE)
+
+#
+# If we're using internal crypto support we need to compile in extra files
+#
+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
+#
+_cppflags="${CPPFLAGS}"
+_ldflags="${LDFLAGS}"
+if test "$with_libwrap" != "no"; then
+  if test "$with_libwrap" != "yes"; then
+    CPPFLAGS="${CPPFLAGS} -I$with_libwrap/include"
+    LDFLAGS="${LDFLAGS} -L$with_libwrap/lib"
+  fi
+
+  _libs=${LIBS}
+  AC_CHECK_HEADER(tcpd.h, ,
+    AC_MSG_ERROR([Asked to use libwrap but I couldn't find tcpd.h.]))
+
+  LIBS="$LIBS -lwrap"
+  AC_MSG_CHECKING([for TCP wrappers library -lwrap])
+  # XXX: should check for hosts_ctl
+  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)]])],
+    [AC_MSG_RESULT([yes])
+     AC_DEFINE(NETSNMP_USE_LIBWRAP)
+     test "$with_libwrap" != no -a "$with_libwrap" != yes && _wraplibs="-L$with_libwrap/lib"
+     _wraplibs="$_wraplibs -lwrap"],
+    [AC_MSG_RESULT([no])
+     # Linux RedHat 6.1 won't link libwrap without libnsl
+     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_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+	#include <tcpd.h>
+	int allow_severity = 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"
+	_wraplibs="$_wraplibs -lwrap -lnsl"],
+       [AC_MSG_RESULT(no)
+	AC_MSG_ERROR(Asked to use libwrap but I couldn't find it.)])])
+  LAGENTLIBS="$_wraplibs"
+  CPPFLAGS=${_cppflags}
+  LDFLAGS=${_ldflags}
+  LIBS=${_libs}
+fi
+
+
+##
+#   mysql
+##
+if test "x$with_mysql" = "xyes" ; then
+  AC_PATH_PROGS(MYSQLCONFIG,mysql_config)
+  test -x "$MYSQLCONFIG" \
+	|| AC_MSG_ERROR([Could not find mysql_config and was specifically asked to use MySQL support])
+  MYSQL_LIBS=`$MYSQLCONFIG --libs`
+  MYSQL_INCLUDES=`$MYSQLCONFIG --include`
+  _libs="${LIBS}"
+  _cppflags="${CPPFLAGS}"
+  LIBS="${LIBS} ${MYSQL_LIBS}"
+  CPPFLAGS="${CPPFLAGS} ${MYSQL_INCLUDES}"
+  AC_CHECK_HEADER(mysql.h,,
+     [AC_MSG_ERROR([Could not find mysql.h and was specifically asked to use MySQL support])])
+  AC_MSG_CHECKING([whether MY_INIT() works])
+  AC_LINK_IFELSE([
+    AC_LANG_PROGRAM(
+      [[#include <my_global.h>
+        #include <my_sys.h>]],
+      [[MY_INIT("my_init_test")]])],
+      [AC_MSG_RESULT(yes)],
+      [AC_MSG_RESULT(no)
+       AC_DEFINE([HAVE_BROKEN_LIBMYSQLCLIENT], 1,
+                 [Define if using MY_INIT() causes a linker error])])
+  CPPFLAGS="${_cppflags}"
+  LIBS="${_libs}"
+  AC_MSG_CACHE_ADD(MYSQL Trap Logging:         enabled)
+else
+  AC_MSG_CACHE_ADD(MYSQL Trap Logging:         unavailable)
+fi
+AC_SUBST(MYSQL_LIBS)
+AC_SUBST(MYSQL_INCLUDES)
+  
+
+##
+#   Non-library checks
+##
+
+# nlist
+AC_CHECK_FUNCS(nlist nlist64 knlist)
+
diff --git a/configure.d/config_os_misc1 b/configure.d/config_os_misc1
new file mode 100644
index 0000000..feec9a9
--- /dev/null
+++ b/configure.d/config_os_misc1
@@ -0,0 +1,24 @@
+# -*- autoconf -*-
+#########################################
+##
+# Miscellaneous checks
+##
+#########################################
+
+##
+#   Compilation-related
+##
+
+#       Dynamic modules require Position-Independent Code
+#	    LIB_CFLAGS/DLLIBS: used in agent Makefile only
+#
+AC_MSG_CHECKING([whether we have to build PIC code])
+echo " $module_list " | $GREP " ucd-snmp/dlmod " >/dev/null
+if test $? -eq 0 ; then
+    LIB_CFLAGS="$LIB_CFLAGS $SHLIB_CFLAGS"
+    AC_MSG_RESULT(yes)
+else
+    DLLIBS=""
+    AC_MSG_RESULT(no)
+fi
+
diff --git a/configure.d/config_os_misc2 b/configure.d/config_os_misc2
new file mode 100644
index 0000000..e2a8ff5
--- /dev/null
+++ b/configure.d/config_os_misc2
@@ -0,0 +1,142 @@
+# -*- autoconf -*-
+#########################################
+##
+# Miscellaneous checks
+##
+#########################################
+
+##
+#   Package characteristics
+#       Authentication/Encryption support
+##
+
+#       Check for PKCS11
+#
+AC_MSG_CHECKING([for authentication support])
+useopenssl=no
+usepkcs=no
+if test "x$ac_cv_lib_pkcs11_C_Initialize" != "xyes" -o "x$ac_cv_header_security_cryptoki_h" != "xyes"; then
+    if test "x$askedpkcs" = "xyes"; then
+        AC_MSG_ERROR(Asked to use PKCS11 but I couldn't find it.)
+    fi
+else
+    if test "x$askedpkcs" = "xyes"; then
+        usepkcs=yes
+    fi
+fi
+
+#       Check for OpenSSL
+#
+if test "x$ac_cv_lib_crypto_EVP_md5" != "xyes" -a "x$ac_cv_lib_eay32_EVP_md5" != "xyes" -o "x$ac_cv_header_openssl_hmac_h" != "xyes"; then
+    if test "x$askedopenssl" = "xyes"; then
+        AC_MSG_ERROR(Asked to use OpenSSL but I couldn't find it.)
+    fi
+else
+    if test "x$askedopenssl" = "xyes"; then
+        useopenssl=yes
+    elif test "x$tryopenssl" = "xyes"; then
+        if test "x$usepkcs" != "xyes"; then
+            useopenssl=yes
+        fi
+    fi
+fi
+
+#       Available authentication/encryption modes
+#
+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
+            encrmodes="DES AES"
+	else
+	    encrmodes="DES"
+	fi
+    else
+        encrmodes="[disabled]"
+    fi
+    AC_DEFINE(NETSNMP_USE_OPENSSL)
+    LNETSNMPLIBS="$LNETSNMPLIBS $LIBCRYPTO"
+    AC_MSG_RESULT(OpenSSL Support)
+elif test "x$usepkcs" != "xno" ; then
+    authmodes="MD5 SHA1"
+    if test "x$enable_privacy" != "xno" ; then
+        encrmodes="DES"
+    else
+        encrmodes="[disabled]"
+    fi
+    AC_DEFINE(NETSNMP_USE_PKCS11, 1,
+      [Define if you are using the codeS11 library ...])
+    LNETSNMPLIBS="$LNETSNMPLIBS $LIBPKCS11"
+    AC_MSG_RESULT(PKCS11 Support)
+elif test "x$enable_md5" != "xno"; then
+    authmodes="MD5"
+    encrmodes=""
+    AC_DEFINE(NETSNMP_USE_INTERNAL_MD5)
+    AC_MSG_RESULT(Internal MD5 Support)
+fi
+if test "x$enable_md5" = "xno"; then
+    authmodes=`echo $authmodes | $SED 's/MD5 *//;'`
+fi
+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)
+
+if test "x$all_warnings" != "x"; then
+    AC_MSG_CACHE_ADD(WARNING: $all_warnings)
+fi
+
+#
+# Check whether user wants DNSSEC local validation support
+#
+_libs=${LIBS}
+if ! test "x-$want_dnssec" = "x-no" ; then
+    AC_CHECK_HEADERS([validator/validator-config.h])
+    if test "$ac_cv_header_validator_validator_config_h" != yes; then
+        AC_MSG_ERROR(Can't find validator.h)
+    fi
+    if test "x$ac_cv_lib_crypto_EVP_md5" != "xyes" -a \
+            "x$ac_cv_lib_eay32_EVP_md5" != "xyes" -o \
+            "x$ac_cv_header_openssl_hmac_h" != "xyes"; then
+        AC_MSG_ERROR(Couldn't find OpenSSL for local DNSSEC validation support.)
+    fi
+    LIBS="$LIBS $LIBCRYPTO"
+    AC_CHECK_LIB(sres, query_send,,AC_MSG_ERROR([Can't find libsres]))
+    VAL_LIBS="-lsres $LIBCRYPTO"
+    LIBS="$LIBS -lsres"
+    AC_CHECK_LIB(val, p_val_status,
+                 LIBS="$LIBS -lval"
+                 VAL_LIBS="$VAL_LIBS -lval"
+                 have_val_res_query=yes,
+                 [ AC_CHECK_LIB(pthread, pthread_rwlock_init)
+		   AC_CHECK_LIB(val-threads, p_val_status,
+                   have_val_res_query=yes
+                   LIBS="-lval-threads $LIBS"
+                   VAL_LIBS="-lval-threads -lpthread $VAL_LIBS"
+                   LIBVAL_SUFFIX="-threads",
+                   AC_MSG_ERROR(Can't find libval or libval-threads))
+                 ])
+    AC_DEFINE(DNSSEC_LOCAL_VALIDATION, 1,
+              [Define if you want local DNSSEC validation support])
+    DNSSEC="enabled"
+else
+    DNSSEC="disabled"
+fi
+
+LIBS=${_libs}
+
+AC_SUBST(VAL_LIBS)
+AC_MSG_CACHE_ADD(Local DNSSEC validation:    $DNSSEC)
+
+ 
diff --git a/configure.d/config_os_misc3 b/configure.d/config_os_misc3
new file mode 100644
index 0000000..17aff48
--- /dev/null
+++ b/configure.d/config_os_misc3
@@ -0,0 +1,20 @@
+# -*- autoconf -*-
+#########################################
+##
+# Miscellaneous checks
+##
+#########################################
+
+##
+#   Compilation characteristics
+##
+
+#       Byte order
+#
+if test "$with_endianness" = "big"; then
+    ac_cv_c_bigendian=yes
+elif test "$with_endianness" = "little" ; then
+    ac_cv_c_bigendian=no
+fi
+AC_C_BIGENDIAN(,,
+    [AC_MSG_ERROR([Failed to figure out host endianness, please use --with-endianness to specify it.])])
diff --git a/configure.d/config_os_misc4 b/configure.d/config_os_misc4
new file mode 100644
index 0000000..cc8bad2
--- /dev/null
+++ b/configure.d/config_os_misc4
@@ -0,0 +1,416 @@
+# -*- autoconf -*-
+#########################################
+##
+# Miscellaneous Operating-System characteristics
+##
+#########################################
+
+
+#	Determine how to test for character devices
+#	[We assume that /dev/null does actually exist!]
+#
+if test -c /dev/null; then
+    CDEV_TEST_FLAG="-c"
+elif test -f /dev/null; then
+    CDEV_TEST_FLAG="-f"
+else
+    AC_MSG_WARN([Can't reliably detect character devices])
+    # Is it actually sensible to fall back on "test -f" ?
+    CDEV_TEST_FLAG="-f"
+fi
+
+#       Kernel Location
+#	    used in library/agent
+#
+AC_CACHE_CHECK([for location of system kernel],
+    ac_cv_KERNEL_LOC,
+   [ac_cv_KERNEL_LOC="unknown"
+    for i in /vmunix /hp-ux /stand/vmunix /dev/ksyms /kernel/unix /kernel/genunix /netbsd /unix /kernel /bsd /mach_kernel /boot/kernel/kernel
+    do
+        if test $CDEV_TEST_FLAG $i; then
+            ac_cv_KERNEL_LOC="$i"
+            break;
+        fi
+    done
+    #
+    # In principle, this test is meant to provide a default path to the kernel
+    # In practice, the test is broken and the kernel path is set to "unknown"
+    #
+    # Note that on certain systems (e.g. some Linux distributions),
+    #    it is impossible to predict the name of the kernel,
+    #    particularly if it includes the kernel version, architecture, etc
+    #
+    # Since this default will never actually be used, then don't try to set it
+    #
+    if test $i = "unknown"; then
+        AC_MSG_WARN([Can't find system kernel... hopefully this won't be needed!])
+    fi
+])
+AC_DEFINE_UNQUOTED(KERNEL_LOC,"$ac_cv_KERNEL_LOC", [location of UNIX kernel])
+
+
+#       /dev/kmem existence
+#	    used in agent only
+#
+AC_CACHE_CHECK([for /dev/kmem],
+    ac_cv_HAVE_KMEM,
+   [if test $CDEV_TEST_FLAG /dev/kmem; then
+        ac_cv_HAVE_KMEM="/dev/kmem"
+    fi
+])
+#
+#  Note that it's OK if this device is not found
+#
+if test "x$ac_cv_HAVE_KMEM" = "x/dev/kmem"; then
+    AC_DEFINE_UNQUOTED(HAVE_KMEM,"$ac_cv_HAVE_KMEM", [Define if you have /dev/kmem])
+fi
+
+
+#       Swap device Location
+#           (/dev/dmem or /dev/drum)
+#	    used in agent only
+#
+AC_CACHE_CHECK([for location of swap device],
+    ac_cv_DMEM_LOC,
+   [if test $CDEV_TEST_FLAG /dev/dmem; then
+        ac_cv_DMEM_LOC="/dev/dmem"
+    elif test $CDEV_TEST_FLAG /dev/drum; then
+        ac_cv_DMEM_LOC="/dev/drum"
+    else
+        ac_cv_DMEM_LOC="none"
+    fi
+])
+#
+#  Note that it's OK if this device is not found
+#
+if test "x$ac_cv_DMEM_LOC" != "xnone"; then
+    AC_DEFINE_UNQUOTED(DMEM_LOC,"$ac_cv_DMEM_LOC", [location of swap device])
+fi
+
+
+#       Mount table Location
+#	    used in agent only
+#
+AC_CACHE_CHECK([for mount table location],
+    ac_cv_ETC_MNTTAB,
+   [ac_cv_ETC_MNTTAB="${with_mnttab:-unknown}"
+    if test "$ac_cv_ETC_MNTTAB" = "unknown"; then
+        for i in /etc/mnttab /etc/mtab /etc/filesystems /dev/mnttab
+        do
+            if test -f $i -o -c $i; then
+                ac_cv_ETC_MNTTAB="$i"
+                break;
+            fi
+        done
+    fi
+])
+AC_DEFINE_UNQUOTED(ETC_MNTTAB,"$ac_cv_ETC_MNTTAB", [location of mount table list])
+
+
+#       Printing
+#	    used in agent only
+#
+AC_PATH_PROG([LPSTAT_PATH],lpstat)
+if test x$LPSTAT_PATH != x; then
+    AC_DEFINE_UNQUOTED(LPSTAT_PATH, "$LPSTAT_PATH",
+	[Path to the lpstat command])
+    AC_DEFINE(HAVE_LPSTAT, 1, [Set if the lpstat command is available])
+fi
+if test -r /etc/printcap; then
+    AC_DEFINE(HAVE_PRINTCAP, 1, [Set if /etc/printcap exists])
+fi
+
+
+#       Check ps args
+#	    used in agent only
+#
+AC_CACHE_CHECK([for correct flags to ps],
+     ac_cv_ps_flags,
+     [
+if test "`($PSPROG -e 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
+    ac_cv_ps_flags="-e"
+elif test "`($PSPROG -el 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
+    ac_cv_ps_flags="-el"
+elif test "`($PSPROG acx 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
+    ac_cv_ps_flags="acx"
+elif test "`($PSPROG -acx 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
+    ac_cv_ps_flags="-acx"
+elif test "`($PSPROG -o pid,tt,state,time,ucomm 2>&1) | $EGREP ' ps *$' | awk '{print $NF}'`" = "ps" ; then
+    ac_cv_ps_flags="-o pid,tt,state,time,ucomm"
+elif test "`($PSPROG ax 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
+    ac_cv_ps_flags="ax"
+elif test "x$PARTIALTARGETOS" = "xcygwin"; then
+    ac_cv_ps_flags="-e"
+elif test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then 
+    ac_cv_ps_flags="-e"
+else
+    AC_MSG_WARN([Unable to determine valid ps flags...  defaulting...])
+    ac_cv_ps_flags="-acx"
+fi
+])
+
+PSCMD="$PSPROG $ac_cv_ps_flags"
+AC_SUBST(PSCMD)
+AC_DEFINE_UNQUOTED(PSCMD, "$PSPROG $ac_cv_ps_flags",
+  [Command to generate ps output, the final column must be the process
+   name withOUT arguments])
+
+
+##
+#   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
+#
+if test $cross_compiling = yes; then
+    AC_MSG_WARN([Can't check sysctl, manually define NETSNMP_CAN_USE_SYSCTL if platform support available])
+else
+    AC_CACHE_CHECK([if sysctl can read kernel information],
+        ac_cv_NETSNMP_CAN_USE_SYSCTL,
+       [AC_TRY_RUN([
+#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
+#if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+#include <sys/types.h>
+#if HAVE_SYS_SYSCTL_H
+# include <sys/sysctl.h>
+#endif
+
+main() {
+  int                 mib[2];
+  size_t              len;
+  struct timeval boottime;
+  
+  mib[0] = CTL_KERN;
+  mib[1] = KERN_BOOTTIME;
+  
+  len = sizeof(boottime);
+  sysctl(mib, 2, &boottime, &len, NULL, NULL);
+  if (boottime.tv_sec != 0)
+    exit(0);
+  else
+    exit(1);
+}
+        ],
+        ac_cv_NETSNMP_CAN_USE_SYSCTL=yes,
+        ac_cv_NETSNMP_CAN_USE_SYSCTL=no,
+        ac_cv_NETSNMP_CAN_USE_SYSCTL=no)])
+fi
+
+if test "x$ac_cv_NETSNMP_CAN_USE_SYSCTL" = "xyes"; then
+  AC_DEFINE(NETSNMP_CAN_USE_SYSCTL, 1, [sysctl works to get boottime, etc...])
+fi
+
+
+#   Check whether TCP timer constants are indeed constant
+#       or depend on the kernel clock tick 'hz'.        (FreeBSD 4.x)
+#
+#       If the latter, then we will need to have a local
+#       variable 'hz' defined and with a suitable value,
+#       whenever we want to  use one one of these 'constants'.
+#
+# 	    used in agent only
+#
+AC_CACHE_CHECK([whether TCP timers depend on 'hz'],
+    ac_cv_TCPTV_NEEDS_HZ,
+   [AC_EGREP_CPP(hz,
+        [
+#include <netinet/tcp_timer.h>
+TCPTV_SRTTDFLT
+        ],
+        ac_cv_TCPTV_NEEDS_HZ=yes,
+        ac_cv_TCPTV_NEEDS_HZ=no)])
+
+if test "x$ac_cv_TCPTV_NEEDS_HZ" = "xyes"; then
+    AC_DEFINE(TCPTV_NEEDS_HZ, 1,
+        [Define if the TCP timer constants in <netinet/tcp_timer.h>
+         depend on the integer variable 'hz'.  @<:@FreeBSD 4.x@:>@])
+fi
+
+
+#   Check whether IP Route table is cached              (Solaris)
+#	    used in agent only
+#
+case $target_os in
+  solaris*)
+    #    Header checks                                  (Solaris 2.6/7)
+    #
+    AC_CHECK_HEADERS(inet/common.h)
+    AC_CHECK_HEADERS(inet/ip.h,ac_inet_ip_h=yes,ac_inet_ip_h=no,
+        AC_INCLUDES_DEFAULT([])
+        [
+#if HAVE_SYS_STREAM_H
+#include <sys/stream.h>
+#endif
+#if HAVE_INET_COMMON_H
+#include <inet/common.h>
+#endif
+        ])
+    if test $ac_inet_ip_h = yes ; then
+        AC_CACHE_CHECK([for mib2_ipRouteEntry_t in inet/mib2.h],
+            ac_cv_mib2_ipRouteEntry_t,
+           [AC_TRY_COMPILE([
+#if HAVE_INET_MIB2_H
+#include <inet/mib2.h>
+#endif
+               ],[
+  mib2_ipRouteEntry_t testit;
+  if(sizeof(testit))
+    return(0);
+               ],
+               ac_cv_mib2_ipRouteEntry_t=yes,
+               ac_cv_mib2_ipRouteEntry_t=no)])
+
+        if test "x$ac_cv_mib2_ipRouteEntry_t" = "xyes" ; then
+            AC_CACHE_CHECK([whether IRE_CACHE is defined in inet/ip.h],
+                ac_cv_ire_cache,
+               [AC_TRY_COMPILE([
+#if HAVE_INET_IP_H
+#include <inet/ip.h>
+#endif
+                   ],[
+  int testit=IRE_CACHE;
+  if(testit)
+    return(0);
+                   ],
+                   ac_cv_ire_cache=yes,
+                   ac_cv_ire_cache=no)])
+        else
+            ac_cv_ire_cache=no
+        fi
+
+        if test "x$ac_cv_ire_cache" = "xyes" ; then
+            AC_DEFINE(HAVE_DEFINED_IRE_CACHE,[],
+                [define to 1 if you have IRE_CACHE defined in <inet/ip.h> header file.])
+        else
+            AC_MSG_WARN([It seems that you have inet/ip.h, but IRE_CACHE is not defined. \
+That means that your query to ipRoute MIB could generate over 20k results! \
+And this can be very slow.])
+        fi
+    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
new file mode 100644
index 0000000..160134c
--- /dev/null
+++ b/configure.d/config_os_progs
@@ -0,0 +1,438 @@
+# -*- autoconf -*-
+#########################################
+##
+# Checks for programs
+##
+#########################################
+
+##
+#   Shell checks:
+##
+
+#       Check for 'sh' overflow                         (HP-UX)
+#         (taken from Perl's configure script)
+#
+AC_MSG_CHECKING([if I need to feed myself to ksh])
+if test -f /hp-ux -a -f /bin/ksh; then
+  if (PATH=.; alias -x) >/dev/null 2>&1; then
+    AC_MSG_RESULT(no)
+  else
+    AC_MSG_RESULT(yes)
+    if test "x$1" = "x"; then
+      exec /bin/ksh $0
+    else
+      exec /bin/ksh $0 "$@"
+    fi
+  fi
+else
+  AC_MSG_RESULT(no)
+fi
+
+
+##
+#   Standard and path program checks:
+##
+
+AC_PROG_EGREP
+AC_PROG_GREP
+AC_PROG_INSTALL
+AC_PROG_LN_S
+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)
+
+AC_PATH_PROG(AUTOCONF,    autoconf)
+AC_PATH_PROG(AUTOHEADER,  autoheader)
+AC_PATH_PROG([PERLPROG],  perl)
+AC_PATH_PROG([PSPROG],    ps)
+AC_PATH_PROG([PYTHONPROG],python)
+
+AC_PATH_PROG([UNAMEPROG], uname)
+AC_DEFINE_UNQUOTED(UNAMEPROG,"$UNAMEPROG", [Where is the uname command])
+
+if test "x$ac_cv_prog_AUTOCONF" = "x"; then
+	AUTOCONF=":"
+	AC_SUBST(AUTOCONF)
+fi
+if test "x$ac_cv_prog_AUTOHEADER" = "x"; then
+	AUTOHEADER=":"
+	AC_SUBST(AUTOHEADER)
+fi
+
+MAKE=${MAKE-"make"}
+$MAKE -v -f /dev/null 2>/dev/null | $GREP GNU >/dev/null
+have_gnu_make=$?
+
+
+##
+#   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:
+##
+
+AC_LANG([C])
+AC_PROG_CC
+AC_PROG_CPP
+LINKCC=${LINKCC-"$CC"}
+AC_SUBST(LINKCC)
+
+AC_AIX
+AC_C_CONST
+AC_C_INLINE
+
+#       libtool stuff for shared/static libraries.
+#
+LT_PREREQ([2.2.6])
+LT_INIT([win32-dll])
+AC_SUBST(LIBTOOL_DEPS)
+
+
+##
+#   Build environment:
+##
+
+#   developer build 
+#       (enabled by default when building from SVN checkout)
+#
+if test "x$developer" != "xno" -a -f $srcdir/remove-files; then
+    developer="yes"
+fi
+AC_MSG_CHECKING([for developer gcc flags])
+if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
+
+    #       WWWXXX - strict type checking
+    #
+    DEVFLAGS="-Wall -Wstrict-prototypes -Wwrite-strings -Wcast-qual"
+else
+    DEVFLAGS=""
+fi
+AC_MSG_RESULT($DEVFLAGS)
+AC_SUBST(DEVFLAGS)
+
+
+#   building outside source directory
+#
+#       a) ensure build include paths are before source
+#       b) ensure GNU make uses 'vpath' instead of 'VPATH'
+#
+NON_GNU_VPATH="VPATH ="
+GNU_vpath="#vpath"
+
+#       define include paths relative to top_srcdir
+#       tweak includes if we're building outside of the source dir
+#
+if test "x$srcdir" = "x."; then
+    TOP_INCLUDES=SRC_TOP_INCLUDES
+    SNMPLIB_INCLUDES=SRC_SNMPLIB_INCLUDES
+    AGENT_INCLUDES=SRC_AGENT_INCLUDES
+    HELPER_INCLUDES=SRC_HELPER_INCLUDES
+    MIBGROUP_INCLUDES=SRC_MIBGROUP_INCLUDES
+else
+    TOP_INCLUDES=BLD_TOP_INCLUDES
+    SNMPLIB_INCLUDES=BLD_SNMPLIB_INCLUDES
+    AGENT_INCLUDES=BLD_AGENT_INCLUDES
+    HELPER_INCLUDES=BLD_HELPER_INCLUDES
+    MIBGROUP_INCLUDES=BLD_MIBGROUP_INCLUDES
+    if test $have_gnu_make -eq 0 ; then
+        NON_GNU_VPATH="#VPATH ="
+        GNU_vpath="vpath"
+    fi
+fi
+AC_SUBST(TOP_INCLUDES)
+AC_SUBST(SNMPLIB_INCLUDES)
+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)
+
+
+##
+#   System-related compilation checks:
+##
+
+#       What system are we building for
+#
+AC_CANONICAL_TARGET
+changequote(, )
+PARTIALTARGETOS=`echo $target_os | sed 's/[-._].*//'`
+changequote([, ])
+AC_MSG_CACHE_ADD(Building for:               $PARTIALTARGETOS)
+
+
+#
+#    Whether or not Cygwin's ld recognizes the flag -no-undefined. 
+#
+
+case x$target_os in
+xcygwin*)
+  saved_LDFLAGS=$LDFLAGS
+
+  AC_MSG_CHECKING([whether the linker supports -no-undefined])
+  LDFLAGS="$saved_LDFLAGS -Wl,-no-undefined"
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+                 [AC_MSG_RESULT([yes]); dnl
+                  LD_NO_UNDEFINED=-no-undefined],
+                 [AC_MSG_RESULT([no])])
+  
+  LDFLAGS="$saved_LDFLAGS"
+  ;;
+esac
+
+AC_SUBST(LD_NO_UNDEFINED)
+
+
+#
+#   Socket library: either 'default' (non-MinGW) or 'winsock2' (MinGW).
+#
+case x$target_os in
+  xmingw*)
+    with_socklib=winsock2
+    if test "x$enable_ipv6" = "xyes"; then
+      CFLAGS="-D_WIN32_WINNT=0x0501 $CFLAGS"
+    fi
+    ;;
+  *)
+    with_socklib=default;;
+esac
+
+
+#   Check system define behaviour
+#       Does "-Ux -Dx=x" work as expected?
+#
+AC_MSG_CHECKING([whether to un-define target system token (before redefining)])
+OLD_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="-U$PARTIALTARGETOS -D$PARTIALTARGETOS=$PARTIALTARGETOS"
+
+AC_EGREP_CPP(yes,
+    [[
+#ifdef $PARTIALTARGETOS
+yes
+#endif
+    ]],
+    [  PARTIALTARGETFLAGS="-U$PARTIALTARGETOS -D$PARTIALTARGETOS=$PARTIALTARGETOS"
+       AC_MSG_RESULT([yes])],
+    [  PARTIALTARGETFLAGS="-D$PARTIALTARGETOS=$PARTIALTARGETOS"
+       AC_MSG_RESULT([no])])
+CFLAGS="$CFLAGS $PARTIALTARGETFLAGS"
+CPPFLAGS="$OLD_CPPFLAGS"
+
+
+#       Determine appropriate <net-snmp/system/{os}.h> include
+#
+AC_MSG_CHECKING([for system include file])
+changequote(, )
+filebase=$target_os
+# ignore binary format indication
+filebase=`echo $filebase | $SED 's/elf//'`
+filebase=`echo $filebase | $SED 's/aout//'`
+filebase=`echo $filebase | $SED 's/ecoff//'`
+filebase=`echo $filebase | $SED 's/coff//'`
+while test "x$filebase" != "x$last" -a ! -f $srcdir/include/net-snmp/system/$filebase.h
+do
+    last=$filebase
+    filebase=`echo $filebase | $SED 's/[-._][^-._]*$//'`
+    if test "x$filebase" = "x$last"; then
+	filebase=`echo $filebase | $SED 's/[0-9]*$//'`
+    fi
+done
+
+if test "x$filebase" = "x$last"; then
+    filebase="generic"
+fi
+ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE="net-snmp/system/$filebase.h"
+changequote([, ])
+AC_MSG_RESULT($ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE)
+AC_DEFINE_UNQUOTED(NETSNMP_SYSTEM_INCLUDE_FILE, "$ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE")
+
+
+#       Determine appropriate <net-snmp/machine/{cpu}.h> include
+#
+AC_MSG_CHECKING([for machine-type include file])
+changequote(, )
+filebase=$target_cpu
+while test "x$filebase" != "x$last" -a ! -f $srcdir/include/net-snmp/machine/$filebase.h
+do
+    last=$filebase
+    filebase=`echo $filebase | $SED 's/[-._][^-._]*$//'`
+done
+
+if test "x$filebase" = "x$last"; then
+    filebase="generic"
+fi
+ac_cv_NETSNMP_MACHINE_INCLUDE_FILE="net-snmp/machine/$filebase.h"
+changequote([, ])
+AC_MSG_RESULT([$ac_cv_NETSNMP_MACHINE_INCLUDE_FILE])
+AC_DEFINE_UNQUOTED(NETSNMP_MACHINE_INCLUDE_FILE, "$ac_cv_NETSNMP_MACHINE_INCLUDE_FILE")
+
+
+##
+#   Platform-specific compilation checks:
+##
+
+#   Preprocessor checks:
+#
+
+#       More sensible system identifier                 (MinGW)
+#
+if test "x$PARTIALTARGETOS" = "xmingw32msvc"; then
+	CFLAGS="$CFLAGS -Dmingw32"
+fi
+
+#       Handle .in file extension                       (GCC)
+#
+AC_MSG_CHECKING([for additional cpp flags])
+if test "x$GCC" = "xyes" -a "x$CPP" = "x$CC -E"; then
+    EXTRACPPFLAGS="-x c"
+else
+    EXTRACPPFLAGS=""
+fi
+
+#       Solaris extra CPP flags                         (Solaris)
+#
+if test "x$GCC" != "xyes"; then
+    case $target_os in
+        solaris*) EXTRACPPFLAGS="$EXTRACPPFLAGS -Xs" ;;
+    esac
+fi
+
+AC_SUBST(EXTRACPPFLAGS)
+AC_MSG_RESULT($EXTRACPPFLAGS)
+
+
+#   Compiler checks:
+#
+
+AC_PATH_PROG([CCPATH],$CC)
+case $target_os in
+    bsdi*)
+        #   Check for bundled compiler                  (BSDi)
+        #
+	if test "x$CCPATH" = "x/usr/ucb/cc" -o "x$CCPATH" = "x/usr/bin/cc"; then
+	    AC_MSG_ERROR([
+
+*** The BSDI /usr/ucb/cc compiler does not work with this package.  
+*** Please run configure with --with-cc=gcc
+])
+	fi
+    ;;
+    solaris*)
+        #   Check for bundled compiler                  (Solaris)
+        #
+	if test "x$CCPATH" = "x/usr/ucb/cc"; then
+	    AC_MSG_ERROR([
+
+*** The solaris /usr/ucb/cc compiler does not work with this package.  
+*** Please put a different compiler in your path first or run
+*** configure with --with-cc=XX, where XX is the compiler you want to use.
+])
+	fi
+    ;;
+esac
+
+
+#   Compiler flags:
+#
+
+# The Net-SNMP source code is not strict-aliasing safe, so add
+# -fno-strict-aliasing to $CFLAGS if the compiler supports it.
+AC_MSG_CHECKING([whether the compiler supports -fno-strict-aliasing])
+netsnmp_save_CFLAGS="$CFLAGS"
+CFLAGS="-fno-strict-aliasing $CFLAGS"
+AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [AC_MSG_RESULT([yes])], [
+  AC_MSG_RESULT([no])
+  CFLAGS="$netsnmp_save_CFLAGS"
+])
+
+
+#   Linker checks:
+#
+    
+case $target_os in
+    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])
+        for ld_flag in $LDFLAGS; do
+            if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+                netsnmp_aix_runtimelinking_flags_ok=yes
+                break
+            fi
+        done
+        if test "X$netsnmp_aix_runtimelinking_flags_ok" != "Xyes"; then
+	    if test "x$GCC" = "xyes"; then
+	        netsnmp_aix_ldflags="-Wl,-brtl"
+	    else
+                netsnmp_aix_ldflags="-brtl"
+	    fi
+            LDFLAGS="$netsnmp_aix_ldflags $LDFLAGS"
+	    AC_MSG_RESULT($netsnmp_aix_ldflags)
+	else
+	    AC_MSG_RESULT([none])
+	fi
+	;;
+
+    darwin8*|darwin9*|darwin10*|darwin11*|darwin12*|darwin13*)
+        #   Flat Namespace linking                      (Mac OS/X)
+        #
+        AC_MSG_CHECKING([whether darwin ld might need -flat_namespace])
+	if test -z "$MACOSX_DEPLOYMENT_TARGET"; then
+		LDFLAGS="-flat_namespace -framework CoreFoundation -framework CoreServices -framework DiskArbitration -framework IOKit $LDFLAGS"
+		AC_MSG_RESULT([yes])
+	else
+		AC_MSG_RESULT([no])
+	fi
+	;;
+
+    *)
+        ;;
+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:
+##
+
+#       Substitute version number.
+#
+AC_SUBST(VERSION, $PACKAGE_VERSION)
+AC_MSG_CACHE_ADD(Net-SNMP Version:           $PACKAGE_VERSION)
+
diff --git a/configure.d/config_os_struct_members b/configure.d/config_os_struct_members
new file mode 100644
index 0000000..7f6b2c0
--- /dev/null
+++ b/configure.d/config_os_struct_members
@@ -0,0 +1,715 @@
+# -*- autoconf -*-
+#########################################
+##
+# Checks for data structures & members
+##
+#########################################
+
+##
+#   Simple checks:
+##
+
+#       struct arphd
+#   Agent:
+#
+AC_CHECK_MEMBERS([struct arphd.at_next],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#include <net/if.h>
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IF_ETHER_H
+#include <netinet/if_ether.h>
+#endif
+    ]])
+
+#       struct des_ks_struct
+#         ('weak_key' indicates older version of OpenSSL)
+#   Library:
+#
+if test "x$ac_cv_header_openssl_des_h" = "xyes" ; then
+    AC_CHECK_MEMBERS([struct des_ks_struct.weak_key],,,[[
+#ifdef HAVE_OPENSSL_DES_H
+#include <openssl/des.h>
+#endif
+    ]])
+fi
+
+#       struct dirent
+#         (see also AC_STRUCT_DIRENT_D_TYPE)
+#   Library:
+#
+AC_CHECK_MEMBERS([struct dirent.d_type],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#if HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+    ]])
+
+#       struct ethtool_cmd
+#
+if test "x$ac_cv_header_linux_ethtool_h" = "xyes" ; then
+AC_CHECK_MEMBERS([struct ethtool_cmd.speed_hi],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#ifdef HAVE_LINUX_ETHTOOL_H
+#include <linux/ethtool.h>
+#endif
+    ]])
+fi
+
+#       struct ipstat
+#   Agent:
+#
+AC_CHECK_MEMBERS([struct ipstat.ips_cantfrag,
+                  struct ipstat.ips_delivered,
+                  struct ipstat.ips_fragdropped,
+                  struct ipstat.ips_fragmented,
+                  struct ipstat.ips_localout,
+                  struct ipstat.ips_noproto,
+                  struct ipstat.ips_noroute,
+                  struct ipstat.ips_odropped,
+                  struct ipstat.ips_ofragments,
+                  struct ipstat.ips_reassembled],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IP_VAR_H
+#include <netinet/ip_var.h>
+#endif
+    ]])
+#       struct ip6stat
+#   Agent:
+#
+AC_CHECK_MEMBERS([struct ip6stat.ip6s_exthdrtoolong ],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET6_IP6_VAR_H
+#include <netinet6/ip6_var.h>
+#endif
+    ]])
+
+#
+#   Not-Used:
+AC_CHECK_MEMBERS([struct ipstat.ips_cantforward,
+                  struct ipstat.ips_fragtimeout],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IP_VAR_H
+#include <netinet/ip_var.h>
+#endif
+    ]])
+
+#       struct mbstat
+#   Not-Used:
+#
+AC_CHECK_MEMBERS([struct mbstat.m_clusters,
+                  struct mbstat.m_clfree,
+                  struct mbstat.m_mbufs],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#if HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_SYS_MBUF_H
+#include <sys/mbuf.h>
+#endif
+    ]])
+
+#	struct uvmexp
+#
+AC_CHECK_MEMBERS([struct uvmexp.pgswapin],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#include <uvm/uvm_extern.h>
+    ]])
+
+#       struct nlist
+#
+AC_CHECK_MEMBERS([struct nlist.n_value,
+                  struct nlist64.n_value],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#if HAVE_NLIST_H
+#include <nlist.h>
+#endif
+    ]])
+
+#       struct sigaction
+#   Agent:
+#
+AC_CHECK_MEMBERS([struct sigaction.sa_sigaction],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SIGNAL_H
+#include <sys/signal.h>
+#endif
+    ]])
+
+#       struct sockaddr
+#   Library:
+#
+AC_CHECK_MEMBERS([struct sockaddr.sa_len,
+                  struct sockaddr.sa_union.sa_generic.sa_family2,
+                  struct sockaddr_storage.ss_family,
+                  struct sockaddr_storage.__ss_family],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#elif defined(HAVE_WINSOCK2_H)
+#include <winsock2.h>
+#endif
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+    ]])
+
+#       struct sockaddr_in6     (see RFC 2553)
+#   Library:
+#
+AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.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
+#   Library:
+#
+AC_CHECK_SIZEOF([sockaddr_un.sun_path],,[
+    AC_INCLUDES_DEFAULT
+    [
+#if HAVE_SYS_UN_H
+#include <sys/un.h>
+#endif
+struct sockaddr_un sockaddr_un;
+    ]])
+
+#       struct statfs
+#   Agent:
+#
+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()
+    [
+#if HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif 
+#ifdef HAVE_NBUTIL_H
+#include <nbutil.h>
+#endif 
+    ]])
+
+#       struct statvfs
+#   Agent:
+#
+AC_CHECK_MEMBERS([struct statvfs.f_files,
+                  struct statvfs.f_frsize,
+                  struct statvfs.mnt_dir],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#if HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#if HAVE_SYS_STATVFS_H
+#include <sys/statvfs.h>
+#endif
+    ]])
+
+#       struct swdevt
+#   Not-Used:
+#
+AC_CHECK_MEMBERS([struct swdevt.sw_nblksenabled],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#if HAVE_SYS_CONF_H
+#include <sys/conf.h>
+#endif
+    ]])
+
+#       struct tcpstat
+#   Agent:
+#
+AC_CHECK_MEMBERS([struct tcpstat.tcp_rcvmemdrop],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_TIMEOUT_H
+#include <sys/timeout.h>
+#endif
+#ifdef HAVE_NETINET_TCP_H
+#include <netinet/tcp.h>
+#endif
+#ifdef HAVE_NETINET_TCP_TIMER_H
+#include <netinet/tcp_timer.h>
+#endif
+#ifdef HAVE_NETINET_TCP_VAR_H
+#include <netinet/tcp_var.h>
+#endif
+    ]])
+
+#       struct tm
+#   Library:
+#
+AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#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
+    ]])
+
+#       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:
+#
+AC_CHECK_MEMBERS([struct udpstat.udps_discard,
+                  struct udpstat.udps_fullsock,
+                  struct udpstat.udps_noport,
+                  struct udpstat.udps_noportbcast,
+                  struct udpstat.udps_ipackets,
+                  struct udpstat.udps_opackets],,,[
+    AC_INCLUDES_DEFAULT()
+    [
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+#if HAVE_NETINET_IP_VAR_H
+#include <netinet/ip_var.h>
+#endif
+#if HAVE_NETINET_UDP_H
+#include <netinet/udp.h>
+#endif
+#if HAVE_NETINET_UDP_VAR_H
+#include <netinet/udp_var.h>
+#endif
+    ]])
+
+
+
+##
+#   ifnet-related checks:
+##
+
+#       Does "struct ifnet" need _KERNEL defined?       (Irix)
+#
+AC_CACHE_CHECK([if _KERNEL needs to be defined for if_mtu],
+        [ac_cv_IFNET_NEEDS_KERNEL],
+        [ac_cv_IFNET_NEEDS_KERNEL=unknown
+         AC_COMPILE_IFELSE(
+             [AC_LANG_PROGRAM([
+#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+             ], [[struct ifnet test; test.if_mtu = 0;]])],
+             [ac_cv_IFNET_NEEDS_KERNEL=no])
+         if test "$ac_cv_IFNET_NEEDS_KERNEL" = unknown ; then
+         AC_COMPILE_IFELSE(
+             [AC_LANG_PROGRAM([
+#define _KERNEL 1
+#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+             ], [[struct ifnet test; test.if_mtu = 0;]])],
+             [ac_cv_IFNET_NEEDS_KERNEL=yes])
+         fi])
+
+if test "x$ac_cv_IFNET_NEEDS_KERNEL" = "xyes"; then
+    AC_DEFINE(NETSNMP_IFNET_NEEDS_KERNEL, 1,
+        [ifnet needs to have _KERNEL defined])
+fi
+
+#       Does "struct ifnet" need _KERNEL_STRUCTURES defined?       (DragonFly 3)
+#
+AC_CACHE_CHECK([if _KERNEL_STRUCTURES needs to be defined for if_mtu],
+        [ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES],
+        [ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES=unknown
+         AC_COMPILE_IFELSE(
+             [AC_LANG_PROGRAM([
+#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+             ], [[struct ifnet test; test.if_mtu = 0;]])],
+             [ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES=no])
+         if test "$ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES" = unknown ; then
+         AC_COMPILE_IFELSE(
+             [AC_LANG_PROGRAM([
+#define _KERNEL_STRUCTURES 1
+#include <sys/types.h>
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+             ], [[struct ifnet test; test.if_mtu = 0;]])],
+             [ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES=yes])
+         fi])
+
+if test "x$ac_cv_IFNET_NEEDS_KERNEL_STRUCTURES" = "xyes"; then
+    AC_DEFINE(NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES, 1,
+        [ifnet needs to have _KERNEL_STRUCTURES defined])
+fi
+
+
+#       struct ifaddr
+#   Not-Used:
+#
+AC_CHECK_MEMBERS([struct ifaddr.ifa_next],,,[
+    [
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+    ]
+    AC_INCLUDES_DEFAULT()
+    [
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+    ]])
+
+#       struct ifnet
+#         (Broken on FreeBSD - #define'd in <net/if.h>)
+#   Agent:   (?or Not-Used?)
+#
+AC_CHECK_MEMBERS([struct ifnet.if_addrlist,
+                  struct ifnet.if_addrhead.tqh_first,
+                  struct ifnet.if_baudrate,
+                  struct ifnet.if_baudrate.ifs_value,
+                  struct ifnet.if_ibytes,
+                  struct ifnet.if_imcasts,
+                  struct ifnet.if_iqdrops,
+                  struct ifnet.if_lastchange.tv_sec,
+                  struct ifnet.if_lastchange.tv_nsec,
+                  struct ifnet.if_mtu,
+                  struct ifnet.if_noproto,
+                  struct ifnet.if_obytes,
+                  struct ifnet.if_omcasts,
+                  struct ifnet.if_speed,
+                  struct ifnet.if_type,
+                  struct ifnet.if_xname],,,[[
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_NET_IF_H
+#include <net/if.h>
+#endif
+#ifdef HAVE_NET_IF_VAR_H
+#include <net/if_var.h>
+#endif
+#ifdef HAVE_SYS_QUEUE_H
+#include <sys/queue.h>
+#endif
+#ifdef linux
+struct ifnet {
+	char	*if_name;		/* name, e.g. "en" or "lo" */
+	short	if_unit;		/* sub-unit for lower level driver */
+	short	if_mtu;			/* maximum transmission unit */
+	short	if_flags;		/* up/down, broadcast, etc. */
+	int	if_metric;		/* routing metric (external only) */
+	char    if_hwaddr [6];		/* ethernet address */
+	int	if_type;		/* interface type: 1=generic,
+					   28=slip, ether=6, loopback=24 */
+	int	if_speed;		/* interface speed: in bits/sec */
+
+	struct sockaddr if_addr;	/* interface's address */
+	struct sockaddr ifu_broadaddr;	/* broadcast address */
+	struct sockaddr ia_subnetmask; 	/* interface's mask */
+
+	struct	ifqueue {
+		int	ifq_len;
+		int	ifq_drops;
+	} if_snd;			/* output queue */
+	int	if_ibytes;		/* octets received on interface */
+	int	if_ipackets;		/* packets received on interface */
+	int	if_ierrors;		/* input errors on interface */
+        int     if_iqdrops;             /* input queue overruns */
+	int	if_obytes;		/* octets sent on interface */
+	int	if_opackets;		/* packets sent on interface */
+	int	if_oerrors;		/* output errors on interface */
+	int	if_collisions;		/* collisions on csma interfaces */
+/* end statistics */
+	struct	ifnet *if_next;
+};
+#endif
+    ]])
+
+
+# Check for BSD 4.3 vs 4.4 struct rtentry
+#
+AC_CACHE_CHECK([type of rtentry structure],
+    [ac_cv_RTENTRY_TYPE],
+    [
+        # BSD 4.4 compatible structure
+        #    ('rt_nodes' array)
+        #
+        AC_TRY_COMPILE([
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#include <sys/types.h>
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#include <sys/socket.h>
+#undef KERNEL
+#undef _KERNEL
+#include <net/route.h>
+        ],[
+
+#ifndef HAVE_STRUCT_RTENTRY_RT_DST
+#define rt_dst rt_nodes->rn_key
+#endif
+
+  struct rtentry rt; 
+  rt.rt_nodes[0].rn_flags = 1;
+  rt.rt_dst;
+        ], ac_cv_RTENTRY_TYPE="BSD-4.4")
+
+        if test "x$ac_cv_RTENTRY_TYPE" = "x"; then
+        # BSD 4.3 compatible structure
+        #    ('rt_hash')
+        #
+        AC_TRY_COMPILE([
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#include <sys/types.h>
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+#define _KERNEL_STRUCTURES 1
+#endif
+#ifdef NETSNMP_IFNET_NEEDS_KERNEL
+#define KERNEL
+#if !defined(__DragonFly__)
+#define _KERNEL 1
+#endif
+#endif
+#include <sys/socket.h>
+#undef KERNEL
+#undef _KERNEL
+#include <net/route.h>
+        ],[
+
+struct rtentry rt; 
+rt.rt_hash;
+        ], ac_cv_RTENTRY_TYPE="BSD-4.3")
+        fi
+
+        if test "x$ac_cv_RTENTRY_TYPE" = "x"; then
+        # Neither BSD 4.3 nor 4.4 compatible structure
+        #
+            ac_cv_RTENTRY_TYPE="unknown"
+        fi
+    ])
+
+if test "x$ac_cv_RTENTRY_TYPE" = "xBSD-4.4"; then
+    AC_DEFINE(RTENTRY_4_4, 1, [Use BSD 4.4 routing table entries?])
+fi
+
+#    Check for ortentry                                 (Alpha)
+#
+if test "x$ac_cv_RTENTRY_TYPE" = "xunknown"; then
+    AC_CACHE_CHECK([for struct rtentry],
+        [ac_cv_struct_rtentry],
+        [AC_EGREP_CPP(ortentry,
+            [
+#define KERNEL
+#include <net/route.h>
+            ],
+            [ac_cv_struct_rtentry=ortentry],
+            [ac_cv_struct_rtentry=rtentry ])
+        if test "x$ac_cv_struct_rtentry" = "xrtentry" ; then
+             ac_cv_struct_rtentry="rtentry"
+        else
+             ac_cv_struct_rtentry="ortentry"
+        fi
+    ])
+else
+    RTENTRY_TYPE="rtentry"
+    ac_cv_struct_rtentry="rtentry"
+fi
+
+if test "x$ac_cv_struct_rtentry" = "x"; then
+    ac_cv_struct_rtentry=rtentry
+fi
+AC_DEFINE_UNQUOTED(RTENTRY,struct ${ac_cv_struct_rtentry},
+        [define rtentry to ortentry on SYSV machines (alphas)])
+
diff --git a/configure.d/config_project_ipv6_types b/configure.d/config_project_ipv6_types
new file mode 100644
index 0000000..35886a1
--- /dev/null
+++ b/configure.d/config_project_ipv6_types
@@ -0,0 +1,208 @@
+# -*- autoconf -*-
+#########################################
+##
+# Checks for types
+##
+#########################################
+
+##
+#   Standard checks:
+##
+
+AC_CHECK_SIZEOF(short)
+AC_CHECK_SIZEOF(int)
+AC_CHECK_SIZEOF(long)
+AC_CHECK_SIZEOF(long long)
+AC_CHECK_SIZEOF(intmax_t)
+
+AC_TYPE_INT8_T
+AC_TYPE_INT16_T
+AC_TYPE_INT32_T
+AC_TYPE_INT64_T
+AC_TYPE_INTMAX_T
+AC_TYPE_UINT8_T
+AC_TYPE_UINT16_T
+AC_TYPE_UINT32_T
+AC_TYPE_UINT64_T
+AC_TYPE_UINTMAX_T
+AC_TYPE_INTPTR_T
+AC_TYPE_UINTPTR_T
+
+##
+#   Other type checks:
+##
+
+AC_CHECK_TYPES([off64_t])
+AC_CHECK_TYPES([nfds_t],,,[#include <sys/poll.h>])
+
+#   Solaris specific checks
+#       (taken from Perl's configure script)
+#
+AC_CHECK_TYPES([Counter64],,,[#include <inet/mib2.h>])
+AC_CHECK_TYPES([mib2_ipIfStatsEntry_t],,,[#include <inet/mib2.h>])
+
+#   N.B:  The above checks could safely be moved to
+#         the later 'config_types' sub-script
+#
+
+
+##
+#   Determine the IPv6 stack type
+##
+
+#       These checks also set the LIBS/CFLAGS variables,
+#       which may be needed for subsequent function tests
+#
+
+if test "x$enable_ipv6" = "xyes"; then
+	v6type=unknown
+	v6lib=none
+	v6trylibc=no
+
+	AC_MSG_CHECKING([[ipv6 stack type]])
+	for i in v6d toshiba kame inria zeta linux-glibc linux-inet6 cygwin winsock2 generic; do
+		case $i in
+		v6d)
+			AC_EGREP_CPP(yes, [
+#include </usr/local/v6/include/sys/types.h>
+#ifdef __V6D__
+yes
+#endif],
+				[v6type=$i; v6lib=v6;
+				v6libdir=/usr/local/v6/lib;
+				CFLAGS="-I/usr/local/v6/include $CFLAGS"])
+			;;
+		toshiba)
+			AC_EGREP_CPP(yes, [
+#include <sys/param.h>
+#ifdef _TOSHIBA_INET6
+yes
+#endif],
+				[v6type=$i; v6lib=inet6;
+				v6libdir=/usr/local/v6/lib;
+				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"])
+			;;
+		kame)
+			AC_EGREP_CPP(yes, [
+#include <netinet/in.h>
+#ifdef __KAME__
+yes
+#endif],
+				[v6type=$i; v6lib=inet6;
+				v6libdir=/usr/local/v6/lib;
+				v6trylibc=yes;
+				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"])
+			;;
+		inria)
+			AC_EGREP_CPP(yes, [
+#include <netinet/in.h>
+#ifdef IPV6_INRIA_VERSION
+yes
+#endif],
+				[v6type=$i;
+				v6lib=dummy;
+				v6libdir=none;
+				v6trylibc=yes;
+				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"])
+			;;
+		zeta)
+			AC_EGREP_CPP(yes, [
+#include <sys/param.h>
+#ifdef _ZETA_MINAMI_INET6
+A
+yes
+#endif],
+				[v6type=$i; v6lib=inet6;
+				v6libdir=/usr/local/v6/lib;
+				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"])
+			;;
+		linux-glibc)
+			AC_EGREP_CPP(yes, [
+#include <features.h>
+#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC_ > 2))
+yes
+#endif],
+				[v6type=$i;
+				v6lib=dummy;
+				v6libdir=none;
+				v6trylibc=yes;
+				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"])
+			;;
+		linux-inet6)
+			if test -d /usr/inet6; then
+				v6type=$i
+				v6lib=inet6
+				v6libdir=/usr/inet6/lib
+				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"
+			fi
+			;;
+		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"])
+                       ;;
+		winsock2)
+			AC_EGREP_CPP(yes, [
+#include <ws2tcpip.h>
+#if defined(_WS2TCPIP_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],,,[
+AC_INCLUDES_DEFAULT()
+[#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+]])
+	                AC_MSG_CHECKING([[ipv6 stack type]])
+                        if test "x$ac_cv_member_struct_sockaddr_in6_sin6_addr" = "xyes"; then
+				v6type=$i
+				v6lib=dummy
+				v6libdir=none
+				v6trylibc=yes
+				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"
+                        fi
+			;;
+		esac
+		if test "$v6type" != "unknown"; then
+			break
+		fi
+	done
+
+	if test "$v6lib" != "none"; then
+		if test -d $v6libdir -a -f $v6libdir/lib$v6lib.a; then
+			LIBS="-L$v6libdir -l$v6lib $LIBS"
+			enable_ipv6="yes"
+			AC_MSG_RESULT(["$v6type, $enable_ipv6, using lib$v6lib"])
+		elif test "$v6trylibc" = "yes"; then
+			enable_ipv6="yes"
+			AC_MSG_RESULT(["$v6type, $enable_ipv6, using libc"])
+		else
+			AC_MSG_ERROR(no IPv6 library lib$v6lib.a found.)
+			exit 1
+		fi
+	else
+		enable_ipv6="no"
+		AC_MSG_RESULT(["$v6type, $enable_ipv6"])
+	fi
+fi
diff --git a/configure.d/config_project_manual b/configure.d/config_project_manual
new file mode 100644
index 0000000..31efdd3
--- /dev/null
+++ b/configure.d/config_project_manual
@@ -0,0 +1,170 @@
+# -*- autoconf -*-
+#
+# Prompt for various bits of user information
+#
+
+if test "x$ac_cv_user_prompt_NETSNMP_LOGFILE" = "x" -o "x$ac_cv_user_prompt_NETSNMP_SYS_LOC" = "x" -o "x$ac_cv_user_prompt_NETSNMP_SYS_CONTACT" = "x" -o "x$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" = "x"; then
+AC_CACHE_CHECK(whether to prompt for values, ac_cv_have_warned,
+[
+if test "x$defaults" = "xno"; then
+AC_MSG_NOTICE([
+
+	 ************** Configuration Section **************
+
+	You are about to be prompted with a series of questions.  Answer
+them carefully, as they determine how the SNMP agent and related
+applications are to function.
+
+	After the configure script finishes, you can browse the newly
+created net-snmp-config.h file for further - less important - parameters to
+modify.  Be careful if you re-run configure though, since net-snmp-config.h 
+will be overwritten.
+
+-Press return to continue-
+])
+
+read tmpinput <&AS_ORIGINAL_STDIN_FD
+ac_cv_have_warned="yes"
+else
+  ac_cv_have_warned="no"
+fi
+])
+else
+  ac_cv_have_warned="yes"
+fi
+
+ME=`$WHOAMI`
+if test -f /etc/resolv.conf; then
+  LOC=`awk '/^domain/{loc=$NF}END{print loc}' /etc/resolv.conf`
+fi
+if test "x$LOC" = x; then
+  LOC="@no.where"
+fi
+
+AC_PROMPT_USER(NETSNMP_DEFAULT_SNMP_VERSION,[
+
+*** Default SNMP Version:
+
+	Starting with Net-SNMP 5.0, you can choose the default version of
+the SNMP protocol to use when no version is given explicitly on the
+command line, or via an 'snmp.conf' file.  In the past this was set to
+SNMPv1, but you can use this to switch to SNMPv3 if desired.  SNMPv3
+will provide a more secure management environment (and thus you're
+encouraged to switch to SNMPv3), but may break existing scripts that
+rely on the old behaviour.  (Though such scripts will probably need to
+be changed to use the '-c' community flag anyway, as the SNMPv1
+command line usage has changed as well.).
+   At this prompt you can select \"1\", \"2\" (for SNMPv2c), or \"3\" as
+the default version for the command tools (snmpget, ...) to use.  This
+can always be overridden at runtime using the -v flag to the tools, or
+by using the \"defVersion\" token in your snmp.conf file.
+   Providing the --with-default-snmp-version=\"x\" parameter to ./configure
+will avoid this prompt.
+
+Default version of SNMP to use],3,unquoted)
+
+# we tested this above before the prompt, but the prompt may give a new value.
+case "${ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION}" in
+  [[123]]) ;;
+  2c) ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION=2 ;;
+  *)
+    AC_MSG_ERROR([Illegal version number.  Only 1, 2 (for SNMPv2c) and 3 are supported.])
+    ;;
+esac
+
+AC_PROMPT_USER(NETSNMP_SYS_CONTACT,[
+
+*** System Contact Information:
+
+	Describes who should be contacted about the host the agent is
+running on.  This information is available in the MIB-II tree.  This
+can also be over-ridden using the \"syscontact\" syntax in the agent's
+configuration files.
+  Providing the --with-sys-contact=\"contact\" parameter to ./configure
+will avoid this prompt.
+
+System Contact Information],$ME@$LOC,quoted)
+
+AC_PROMPT_USER(NETSNMP_SYS_LOC,[
+
+*** System Location:
+
+	Describes the location of the system.  This information is
+available in the MIB-II tree.  this can also be over-ridden using the
+\"syslocation\" syntax in the agent's configuration files.
+  Providing the --with-sys-location=\"location\" parameter to ./configure
+will avoid this prompt.
+
+System Location],Unknown,quoted)
+
+if test -d /var/log; then
+  defaultlog="/var/log/snmpd.log"
+else
+  defaultlog="/usr/adm/snmpd.log"
+fi
+  
+AC_PROMPT_USER(NETSNMP_LOGFILE,[
+
+*** Logfile location:
+
+	Enter the default location for the snmpd agent to dump
+information & errors to.  If not defined (enter the keyword \"none\"
+at the prompt below) the agent will use stdout and stderr instead.
+(Note: This value can be over-ridden using command line options.)
+  Providing the --with-logfile=\"path\" parameter to ./configure
+will avoid this prompt.
+
+Location to write logfile],$defaultlog,quoted)
+
+if test -d /var; then
+  defaultstore="/var/net-snmp"
+  ucddefaultstore="/var/ucd-snmp"
+else
+  defaultstore="/etc/net-snmp"
+  ucddefaultstore="/etc/ucd-snmp"
+fi
+  
+AC_PROMPT_USER(NETSNMP_PERSISTENT_DIRECTORY,[
+
+*** snmpd persistent storage location:
+
+	Enter a directory for the SNMP library to store persistent
+data in the form of a configuration file.  This default location is
+different than the old default location (which was for ucd-snmp).  If
+you stay with the new path, I'll ask you in a second if you wish to
+copy your files over to the new location (once only).  If you pick
+some other path than the default, you'll have to copy them yourself.
+There is nothing wrong with picking the old path ($ucddefaultstore) if
+you'd rather.
+  Providing the --with-persistent-directory=\"path\" parameter to
+./configure will avoid this prompt.
+
+Location to write persistent information],$defaultstore,quoted)
+
+PERSISTENT_DIRECTORY=$ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY
+AC_SUBST(PERSISTENT_DIRECTORY)
+UCDPERSISTENT_DIRECTORY=$ucddefaultstore
+AC_SUBST(UCDPERSISTENT_DIRECTORY)
+
+if test $PERSISTENT_DIRECTORY = "$defaultstore" -a -d "$ucddefaultstore" -a ! -d "$defaultstore" ; then
+AC_CACHE_CHECK(If we should copy the old persistent directory, ac_cv_user_prompt_COPY_PERSISTENT_FILES,
+[
+AC_PROMPT_USER_NO_DEFINE(ac_cv_user_prompt_COPY_PERSISTENT_FILES,[
+
+*** Copying old ucd-snmp persistent files to net-snmp persistent directory:
+
+	Would you like to copy the older ucd-snmp persistent files
+into your new net-snmp persistent file path?  This will functionally
+save all your ucd-snmp data and let it be used within the net-snmp
+tools.  This will only be done once when you run make install.  If you
+wish to do this, enter "yes" at the prompt.
+  Providing the --with-copy-persistent-files=\"no\" (or \"yes\")
+parameters to ./configure will avoid this prompt.
+
+Copy ucd-snmp data into the net-snmp data directory],"yes")
+])
+else
+ac_cv_user_prompt_COPY_PERSISTENT_FILES="no"
+fi
+COPY_PERSISTENT_FILES="$ac_cv_user_prompt_COPY_PERSISTENT_FILES"
+AC_SUBST(COPY_PERSISTENT_FILES)
diff --git a/configure.d/config_project_paths b/configure.d/config_project_paths
new file mode 100644
index 0000000..9690c84
--- /dev/null
+++ b/configure.d/config_project_paths
@@ -0,0 +1,101 @@
+# -*- autoconf -*-
+#########################################
+##
+# Configure paths
+##
+#########################################
+
+##
+#   Prefix paths:
+##
+
+#   Main prefix
+#
+if test "x$prefix" = "xNONE"; then
+  prefix=/usr/local
+fi
+
+#       Prefix must be an absolute path
+#           i.e. begin with "/"                         (Unix)
+#                or "[A-Z]:"                            (Windows)
+#
+firstchar=`echo $prefix | $SED 's/\(.\).*/\1/'`
+if test "x$firstchar" != "x/" ; then
+   secondchar=`echo $prefix | $SED 's/.\(.\).*/\1/'`
+   if test "x$secondchar" != "x:" ; then
+      prefix=`pwd`/$prefix
+      echo "adjusting prefix to $prefix"
+   fi
+fi
+
+
+#   Exec prefix
+#
+#       Prefix must be an absolute path
+#           i.e. begin with "/"                         (Unix)
+#                or "[A-Z]:"                            (Windows)
+#
+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
+
+
+##
+#   Environmental variables:
+##
+
+#       SNMPLIBPATH
+#
+SNMPLIBPATH=""
+tmpset="$libdir/snmp"
+while test "x$tmpset" != "x$SNMPLIBPATH"; do
+    SNMPLIBPATH="$tmpset"
+    eval tmpset="$tmpset"
+done
+AC_DEFINE_UNQUOTED(SNMPLIBPATH,"$SNMPLIBPATH")
+AC_SUBST(SNMPLIBPATH)
+AC_DEFINE_UNQUOTED(SNMPDLMODPATH,"$SNMPLIBPATH/dlmod")
+
+#       SNMPSHAREPATH
+#
+SNMPSHAREPATH=""
+tmpset="$datadir/snmp"
+while test "x$tmpset" != "x$SNMPSHAREPATH"; do
+    SNMPSHAREPATH="$tmpset"
+    eval tmpset="$tmpset"
+done
+AC_DEFINE_UNQUOTED(SNMPSHAREPATH,"$SNMPSHAREPATH")
+AC_SUBST(SNMPSHAREPATH)
+
+#       MIBDIRS   (default)
+#
+if test "x$NETSNMP_DEFAULT_MIBDIRS" = "x"; then
+    NETSNMP_DEFAULT_MIBDIRS="\$HOME/.snmp/mibs:$SNMPSHAREPATH/mibs"
+    if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc" -o "x$PARTIALTARGETOS" = "xcygwin"; then
+        #
+        #    USe Windows-style path separator
+        NETSNMP_DEFAULT_MIBDIRS=`echo "$NETSNMP_DEFAULT_MIBDIRS" | $SED 's/:/;/g'`
+    fi
+    AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_MIBDIRS,"$NETSNMP_DEFAULT_MIBDIRS")
+fi
+AC_SUBST(NETSNMP_DEFAULT_MIBDIRS)
+
+#       SNMPCONFPATH
+#
+SNMPCONFPATH=""
+tmpset="$sysconfdir/snmp"
+while test "x$tmpset" != "x$SNMPCONFPATH"; do
+    SNMPCONFPATH="$tmpset"
+    eval tmpset="$tmpset"
+done
+AC_DEFINE_UNQUOTED(SNMPCONFPATH,"$SNMPCONFPATH")
+AC_SUBST(SNMPCONFPATH)
diff --git a/configure.d/config_project_perl_python b/configure.d/config_project_perl_python
new file mode 100644
index 0000000..23f8c7e
--- /dev/null
+++ b/configure.d/config_project_perl_python
@@ -0,0 +1,379 @@
+# -*- autoconf -*-
+#########################################
+##
+#   Perl & Python support
+##
+#########################################
+
+##
+#   Check whether Net-SNMP configuration will support Perl
+##
+
+#   Inputs:
+#       install_perl:   whether or not to install the Perl modules
+#                           yes/no/try   (i.e. 'maybe' - the default)
+#       embed_perl:     whether or not to embed Perl support within the agent
+#                           yes/no/try   (i.e. 'maybe' - the default)
+#
+#       ac_cv_path_PERLPROG:    Path to perl binary
+
+
+#       Embedded Perl requires Perl modules, and the perl binary
+#
+if test "x$embed_perl" = "xtry" ; then
+    if test "x$install_perl" = "xno" ; then
+        install_perl="try"
+    fi
+    if test "x$ac_cv_path_PERLPROG" = "x" -o "x$ac_cv_path_PERLPROG" = "xno" ; then
+        install_perl="no"
+        embed_perl="no"
+    fi
+fi
+
+#       Perl modules require the perl binary
+#
+if test "x$install_perl" != "xno" ; then
+    myperl=$ac_cv_path_PERLPROG
+    if test $myperl = "no" ; then
+        if test "x$install_perl" = "xtry" ; then
+            install_perl="no"
+        else
+            AC_MSG_ERROR(--enable-embedded-perl requested but no perl executable found)
+        fi
+    fi
+fi
+
+#       Perl modules require shared libraries
+#
+if test "x$install_perl" != "xno" ; then
+    if test "x$enable_shared" != "xyes"; then
+        if test "x$install_perl" = "xtry" ; then
+            install_perl="no"
+        else
+            AC_MSG_ERROR(Perl support requires --enable-shared)
+        fi
+    fi
+fi
+
+#       Perl modules can only be installed from within the source tree
+#
+if test "x$install_perl" != "xno" ; then
+    AC_MSG_CHECKING([if we are in the source tree so we can install Perl modules])
+    if test "x$srcdir" = "x." -o -d perl/agent/default_store ; then
+        AC_MSG_RESULT([Yes])
+    else
+        if test "x$install_perl" = "xtry" ; then
+            install_perl="no"
+            AC_MSG_RESULT([No])
+        else
+            AC_MSG_ERROR([Perl modules can not be built outside the source directory])
+        fi
+    fi
+fi      
+
+
+#   The rest of the Perl-related checks aren't relevant
+#       if we're not using the Perl modules
+#
+if test "x$install_perl" != "xno" ; then
+
+
+##
+#   Check compiler compatability
+##
+
+    #       What compiler was used to build the perl binary?
+    #
+    if test "xenable_perl_cc_checks" != "xno" ; then
+        AC_MSG_CHECKING([for Perl cc])
+        changequote(, )
+        PERLCC=`$myperl -V:cc | $myperl -n -e 'print if (s/^\s*cc=.([-=\w\s\/]+).;\s*/$1/);'`
+        changequote([, ])
+        if test "x$PERLCC" != "x" ; then
+            AC_MSG_RESULT([$PERLCC])
+        else
+            if test "x$install_perl" = "xtry" ; then
+                install_perl="no"
+            else
+                AC_MSG_ERROR([Could not determine the compiler that was used to build $myperl. Either set the environment variable PERLPROG to a different perl binary or use --without-perl-modules to build without Perl.])
+            fi
+        fi
+    fi
+
+    #       Was GCC used to build the perl binary?
+    #
+    if test "x$install_perl" != "xno" ; then
+        AC_MSG_CHECKING([whether $PERLCC is a GNU C compiler])
+        OLDCC=$CC
+        CC="$PERLCC"
+        AC_COMPILE_IFELSE([
+            AC_LANG_PROGRAM([], [[
+#ifndef __GNUC__
+  choke me
+#endif
+            ]])], [perlcc_is_gnu=yes], [perlcc_is_gnu=no])
+        AC_MSG_RESULT([$perlcc_is_gnu])
+        CC=$OLDCC
+
+        #       Check compatability:  Gnu Net-SNMP vs Non-Gnu perl
+        #
+        if test "x$GCC" = "xyes" -a "x$perlcc_is_gnu" = "xno" ; then
+            if test "x$install_perl" = "xtry" ; then
+      	        install_perl="no"
+      	    else
+      	        AC_MSG_ERROR([This build is using a GNU C compiler ($CC) while Perl has been compiled with a non-GNU (or non-working) compiler ($PERLCC). This likely won't work for building with Perl support. Either specify a different compiler (--with-cc=PATH), disable this check (--disable-perl-cc-checks) or build without Perl (--without-perl-modules).])
+      	    fi
+        fi
+    fi
+
+    #       Check compatability:  Non-Gnu Net-SNMP vs Gnu perl
+    #
+    if test "x$install_perl" != "xno" ; then
+        if test "x$GCC" != "xyes" -a "x$perlcc_is_gnu" = "xyes" ; then
+      	    if test "x$install_perl" = "xtry" ; then
+      	        install_perl="no"
+      	    else
+                AC_MSG_ERROR([This build is using a non-GNU C compiler ($CC) while Perl has been compiled with a GNU compiler ($PERLCC). This likely won't work for building with Perl support. Either specify a different compiler (--with-cc=PATH), disable this check (--disable-perl-cc-checks) or build without Perl (--without-perl-modules).])
+      	    fi
+        fi
+    fi
+
+    #       Are we clear to proceed?
+    #
+    if test "x$install_perl" = "xtry" ; then
+        install_perl="yes"
+    else
+        if test "x$install_perl" = "xno" ; then
+            install_perl="no"
+            embed_perl="no"
+        fi
+    fi
+
+
+##
+#   Determine compilation environment needed for embedded Perl
+##
+
+#       System-specific requirements
+#
+case $target_os in
+    solaris*)
+      if test "x$embed_perl" != "xno" ; then
+          #   Check for LARGEFILE support               (Solaris)
+          #
+          AC_MSG_CHECKING([for problematic Perl cc flags on Suns])
+          if $myperl -V:ccflags | $GREP LARGEFILE > /dev/null ; then
+            if test "x$embed_perl" = "xtry" ; then
+              embed_perl="no"
+            else
+              AC_MSG_ERROR([Perl was compiled with LARGEFILE support which will break Net-SNMP. Either set the environment variable PERLPROG to a different perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether.])
+            fi
+          else
+            AC_MSG_RESULT([none known])
+          fi
+      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
+
+#       Compiler flags
+#
+if test "x$embed_perl" != "xno" ; then
+    AC_MSG_CHECKING([for Perl CFLAGS])
+    perlcflags=`$myperl -MExtUtils::Embed -e ccopts`
+    if test "x$perlcflags" != "x" ; then
+      AC_MSG_RESULT([$perlcflags])
+      CFLAGS="$CFLAGS $perlcflags"
+    else
+      if test "x$embed_perl" = "xtry" ; then
+        embed_perl="no"
+      else
+        AC_MSG_ERROR([Could not determine the C compiler flags that were used to build $myperl. Either set the environment variable PERLPROG to a different Perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether.])
+      fi
+    fi
+fi
+
+#       Linker flags
+#
+if test "x$embed_perl" != "xno" ; then
+    AC_MSG_CHECKING([for Perl LDFLAGS])
+    netsnmp_perlldopts=`$myperl -MExtUtils::Embed -e ldopts`
+    if test "x$netsnmp_perlldopts" != "x" ; then
+      AC_MSG_RESULT([$netsnmp_perlldopts])
+    else
+      if test "x$embed_perl" = "xtry" ; then
+        embed_perl="no"
+      else
+        AC_MSG_ERROR([Could not determine the linker options that were used to build $myperl. Either set the environment variable PERLPROG to a different Perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether.])
+      fi
+    fi
+    if test "x$enable_as_needed" != "xno" ; then
+      #   Just-in-time linking will embed the Perl library within
+      #       the Net-SNMP library (rather than the agent application)
+      #
+      PERLLDOPTS_FOR_LIBS="$netsnmp_perlldopts"
+      #   Perl ccdlflags (RPATH to libperl, hopefully)
+      #
+      AC_MSG_CHECKING([for Perl CCDLFLAGS])
+      changequote(, )
+      netsnmp_perlccdlflags=`$myperl -V:ccdlflags | $myperl -n -e 'print $1 '"if (/^\s*ccdlflags='([^']+)';/);"`
+      changequote([, ])
+      AC_MSG_RESULT([$netsnmp_perlccdlflags])
+      PERLLDOPTS_FOR_APPS="$netsnmp_perlccdlflags"
+    else
+      #   Otherwise embed the Perl library within the application
+      #
+      PERLLDOPTS_FOR_LIBS="$netsnmp_perlldopts"
+      # link *applications* against libperl
+      PERLLDOPTS_FOR_APPS="$netsnmp_perlldopts"
+    fi
+fi
+
+#       'Perl_eval_pv' function (and equivalents)
+#
+if test "x$embed_perl" != "xno" ; then
+    #   Three possible versions of this routine:
+    #       eval_pv                                     (to 5.003_97d)
+    #       perl_eval_pv                                (5.004/5.005)
+    #       Perl_eval_pv                                (from 5.6ff)
+    #
+    OLDLIBS="$LIBS"
+    LIBS="$LIBS $netsnmp_perlldopts"
+    AC_CHECK_FUNCS(eval_pv)
+    AC_CHECK_FUNC(perl_eval_pv,
+      AC_DEFINE(HAVE_PERL_EVAL_PV_LC, 1,
+        [Define to 1 if you have `the perl_eval_pv' function.]))
+    AC_CHECK_FUNC(Perl_eval_pv,
+      AC_DEFINE(HAVE_PERL_EVAL_PV_UC, 1,
+        [Define to 1 if you have the `Perl_eval_pv' function.]))
+    LIBS="$OLDLIBS"
+    #
+    #   Note that autoconf flattens case when defining tokens,
+    #   so we need to explicitly distinguish between the latter two.
+
+    if test "x$ac_cv_func_perl_eval_pv" != "xyes" -a "x$ac_cv_func_Perl_eval_pv" != "xyes" -a "x$ac_cv_func_eval_pv" != "xyes" ; then
+      if test "x$embed_perl" = "xtry" ; then
+        embed_perl="no"
+      else
+        AC_MSG_ERROR([Could not find the eval_pv, perl_eval_pv or Perl_eval_pv functions needed for embedded Perl support. Either set the environment variable PERLPROG to a different perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether.])
+      fi
+    else
+      #   Activate Embedded Perl
+      #
+      AC_DEFINE(NETSNMP_EMBEDDED_PERL, 1,
+        [Define if you are embedding perl in the main agent.])
+      OTHERAGENTLIBOBJS="snmp_perl.o"
+      OTHERAGENTLIBLOBJS="snmp_perl.lo"
+      OTHERAGENTLIBLFTS="snmp_perl.ft"
+
+      EMBEDPERLINSTALL="embedperlinstall"
+      EMBEDPERLUNINSTALL="embedperluninstall"
+      embed_perl="yes"
+    fi
+else
+      EMBEDPERLINSTALL=""
+      EMBEDPERLUNINSTALL=""
+      embed_perl="no"
+    fi
+fi
+
+
+##
+#   Report and configure results
+##
+
+AC_SUBST(EMBEDPERLINSTALL)
+AC_SUBST(EMBEDPERLUNINSTALL)
+AC_SUBST(PERLLDOPTS_FOR_LIBS)
+AC_SUBST(PERLLDOPTS_FOR_APPS)
+
+#       Results of Embedded Perl checks
+#
+AC_MSG_CHECKING([for potential embedded Perl support])
+if test "x$embed_perl" != "xyes" ; then
+  AC_MSG_CACHE_ADD(Embedded Perl support:      disabled)
+  AC_MSG_RESULT([disabled])
+else
+  AC_MSG_CACHE_ADD(Embedded Perl support:      enabled)
+  AC_MSG_RESULT([enabled])
+fi
+
+#       Results of Perl Module checks
+#
+PERLTARGS=""
+PERLINSTALLTARGS=""
+PERLUNINSTALLTARGS=""
+PERLFEATURES=""
+AC_MSG_CHECKING([if we can install the Perl modules])
+if test "x$install_perl" = "xyes" ; then
+    PERLTARGS="perlmodules"
+    PERLINSTALLTARGS="perlinstall"
+    PERLUNINSTALLTARGS="perluninstall"
+    PERLFEATURES="perlfeatures"
+    if test "x$embed_perl" = "xyes" ; then
+      AC_MSG_CACHE_ADD(SNMP Perl modules:          building -- embeddable)
+      AC_MSG_RESULT([yes -- and embeddable])
+    else
+      AC_MSG_CACHE_ADD(SNMP Perl modules:          building -- not embeddable)
+      AC_MSG_RESULT([yes -- not embeddable])
+    fi
+else
+    AC_MSG_RESULT([no])
+    AC_MSG_CACHE_ADD(SNMP Perl modules:          disabled)
+fi
+AC_SUBST(PERLTARGS)
+AC_SUBST(PERLINSTALLTARGS)
+AC_SUBST(PERLUNINSTALLTARGS)
+AC_SUBST(PERLARGS)
+AC_SUBST(PERLFEATURES)
+
+
+#       Reset LIBS to pre-libwrap value   (???)
+#
+AGENTLIBS=$LIBS
+LIBS=$NONAGENTLIBS
+
+
+
+##
+#   Python checks
+##
+
+PYTHONTARGS=""
+PYTHONINSTALLTARGS=""
+PYTHONUNINSTALLTARGS=""
+PYTHONCLEANTARGS=""
+PYTHONFEATURES=""
+AC_MSG_CHECKING([if we should install the python bindings])
+if test "x$install_python" = "xyes" ; then
+    PYTHONTARGS="pythonmodules"
+    PYTHONINSTALLTARGS="pythoninstall"
+    PYTHONUNINSTALLTARGS="pythonuninstall"
+    PYTHONCLEANTARGS="pythonclean"
+    PYTHONFEATURES="pythonfeatures"
+    AC_MSG_CACHE_ADD(SNMP Python modules:        building for $PYTHONPROG)
+    AC_MSG_RESULT([yes])
+else
+    AC_MSG_CACHE_ADD(SNMP Python modules:        disabled)
+    AC_MSG_RESULT([no])
+fi
+AC_SUBST(PYTHONTARGS)
+AC_SUBST(PYTHONINSTALLTARGS)
+AC_SUBST(PYTHONUNINSTALLTARGS)
+AC_SUBST(PYTHONCLEANTARGS)
+AC_SUBST(PYTHONARGS)
+AC_SUBST(PYTHONFEATURES)
+
+
diff --git a/configure.d/config_project_types b/configure.d/config_project_types
new file mode 100644
index 0000000..ec9c85a
--- /dev/null
+++ b/configure.d/config_project_types
@@ -0,0 +1,57 @@
+# -*- autoconf -*-
+#########################################
+##
+# Checks for types
+##
+#########################################
+
+##
+#   Standard checks:
+##
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_TYPE_OFF_T
+AC_TYPE_PID_T
+AC_HEADER_TIME
+
+
+##
+#   More complex checks:
+##
+
+#   Check for 'socklen_t'                           (HP-UX)
+#
+AC_CHECK_TYPES([socklen_t],,,[
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif])
+
+
+#   Check for 'in_addr_t'
+#       May be in <netinet/in.h>                        (AIX)
+#
+AC_CHECK_TYPES([in_addr_t],,,[
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif])
+
+
+#   Check for 'ssize_t'
+#       Not necessarily in <sys/types.h>                (older MinGW)
+#
+AC_CHECK_TYPES([ssize_t],,,[
+#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif])
diff --git a/configure.d/config_project_with_enable b/configure.d/config_project_with_enable
new file mode 100644
index 0000000..61ba026
--- /dev/null
+++ b/configure.d/config_project_with_enable
@@ -0,0 +1,1150 @@
+# -*- autoconf -*-
+#########################################
+##
+#   Command-line processing - --with/--enable
+##
+#########################################
+
+##
+#   System: Compiler settings
+##
+
+AC_ARG_WITH(cc, [
+Compiler Options:
+  --with-cc=CC                    use CC to compile (default=gcc).],
+    [CC=$with_cc;export CC])
+
+AC_ARG_WITH(linkcc, [
+  --with-linkcc=CC                use CC to link (default=gcc).],
+    [LINKCC=$with_linkcc;export LINKCC])
+
+AC_ARG_WITH(ar,
+[  --with-ar=AR                    use AR as the archiver.],
+    [AR=$with_ar; export AR])
+
+AC_ARG_WITH(endianness,
+[  --with-endianness=big|little    define endianness of target platform when
+                                  cross-compiling.],
+    [if test $with_endianness != "big" -a $with_endianness != "little" ; then
+       AC_MSG_ERROR([Endianness must be big or little, not "$with_endianness".]);
+     fi
+])
+
+AC_ARG_WITH(cflags,
+[  --with-cflags=CFLAGS            use CFLAGS as compile time arguments.],
+    [CFLAGS=$with_cflags; export CFLAGS])
+
+AC_ARG_WITH(ldflags,
+[  --with-ldflags=LDFLAGS          use LDFLAGS as link time arguments to ld.],
+    [LDFLAGS=$with_ldflags; export LDFLAGS])
+
+AC_ARG_ENABLE(as-needed,
+[  --disable-as-needed             Link libperl against applications rather
+                                  than Net-SNMP libraries. Use only if the other
+                                  way doesn't work.])
+
+AC_ARG_WITH(libs,
+[  --with-libs=LIBS                use LIBS as link time arguments to ld.],
+    [LIBS=$with_libs; export LIBS])
+
+AC_ARG_ENABLE(silent-libtool,
+[  --enable-silent-libtool         Pass --silent to libtool.],
+	LIBTOOLFLAGS=--silent)
+AC_SUBST(LIBTOOLFLAGS)
+
+
+##
+#   System: Library settings
+##
+
+NETSNMP_ARG_WITH(dmalloc,
+        AS_HELP_STRING([--with-dmalloc=PATH],
+                [Use dmalloc library (www.dmalloc.com)]))
+
+NETSNMP_ARG_WITH(efence,
+[  --with-efence                   Look for and use libefence (malloc).],
+      use_efence="$withval")
+
+tryrsaref=no
+NETSNMP_ARG_WITH(rsaref,
+[  --with-rsaref=PATH              Look for librsaref in PATH/lib.],
+    if test "x$withval" = "xyes"; then
+      tryrsaref=yes
+    elif test "x$withval" = "xno"; then
+      tryrsaref=no
+    elif test -d "$withval"; then
+      AC_ADD_SEARCH_PATH($withval)
+      tryrsaref=yes
+    fi,
+)
+
+tryopenssl=defaultyes
+askedopenssl=no
+NETSNMP_ARG_WITH(openssl,
+[  --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
+      if test -d "$withval/lib/MinGW"; then
+        LDFLAGS="-L$withval/lib/MinGW $LDFLAGS"
+        CPPFLAGS="-I$withval/include $CPPFLAGS"
+      else
+        AC_ADD_SEARCH_PATH($withval)
+      fi
+      tryopenssl=yes
+      askedopenssl=yes
+    fi,
+)
+if test "x$tryopenssl" = "xdefaultyes"; then
+      AC_ADD_SEARCH_PATH(/usr/local/ssl)
+      tryopenssl=yes
+fi
+AC_ARG_WITH([ssl],,NETSNMP_INVALID_WITH([openssl]))
+AC_ARG_ENABLE([ssl],,NETSNMP_INVALID_WITH([openssl]))
+
+askedpkcs=no
+NETSNMP_ARG_WITH(pkcs,
+[  --with-pkcs=PATH                Look for pkcs11 in PATH/lib.],
+    if test "x$withval" = "xyes"; then
+      askedpkcs=yes
+    elif test "x$withval" = "xno"; then
+      askedpkcs=no
+    elif test -d "$withval"; then
+      AC_ADD_SEARCH_PATH($withval)
+      askedpkcs=yes
+    fi,
+)
+
+trykrb5=defaultyes
+askedkrb5=no
+NETSNMP_ARG_WITH(krb5,
+[  --with-krb5=PATH                Look for krb5 in PATH/lib.],
+    if test "x$withval" = "xyes"; then
+      trykrb5=yes
+      askedkrb5=yes
+      krb5path=undef
+    elif test "x$withval" = "xno"; then
+      trykrb5=no
+      krb5path=undef
+    elif test -d "$withval"; then
+      trykrb5=yes
+      askedkrb5=yes
+      krb5path=$withval
+    fi,
+)
+if test "x$trykrb5" = "xdefaultyes"; then
+      trykrb5=yes
+      krb5path=/usr/kerberos
+fi
+
+AC_ARG_WITH(dnssec-local-validation,
+        [  --with-dnssec-local-validation Enable local DNSSEC validation using libval (no)], want_dnssec=$withval, want_dnssec=no)
+AC_ARG_ENABLE([dnssec-local-validation],,
+              NETSNMP_INVALID_WITH([dnssec-local-validation]))
+AC_ARG_WITH([dnssec],,NETSNMP_INVALID_WITH([dnssec-local-validation]))
+AC_ARG_ENABLE([dnssec],,NETSNMP_INVALID_WITH([dnssec-local-validation]))
+
+NETSNMP_ARG_WITH(rpm,
+[  --without-rpm                   Don't include support for the RPM package
+                                  management system when building the host MIB
+                                  module.])
+
+
+##
+#   Project: Build configuration settings
+##
+
+#       Install prefix
+#
+AC_ARG_WITH(install-prefix,
+[  --with-install-prefix=PATH      Just for installing, prefix all 
+                                  directories with PATH.  This is known not
+                                  to work on some systems with shared
+                                  libraries (eg, HPUX)],
+      INSTALL_PREFIX="$withval")
+
+if test "x$INSTALL_PREFIX" = "xyes" ; then
+  AC_MSG_ERROR([--with-install-prefix requires an argument])
+fi
+if test "x$INSTALL_PREFIX" = "xno" ; then
+  INSTALL_PREFIX=""
+fi
+AC_SUBST(INSTALL_PREFIX)
+
+
+#
+#   Subsystems to build:
+#       Library
+#
+FEATUREHEADERS="library/features.h"
+FTMAINSUBS=""
+
+#
+#       Agent
+#
+NETSNMP_ARG_ENABLE(agent,
+[  --disable-agent                 Do not build the agent (snmpd).])
+if test "x$enable_agent" != "xno"; then
+   SNMPD='snmpd$(EXEEXT)'
+   MAINSUBS="$MAINSUBS agent"
+   FEATUREHEADERS="$FEATUREHEADERS agent/features-mibgroups.h agent/features.h"
+   FTMAINSUBS="agent $FTMAINSUBS"
+   TRAPLIBS='$(TRAPDWITHAGENT)'
+   USETRAPLIBS='$(USEAGENTLIBS)'
+else
+   SNMPD=""
+   # we still need/want the agentlibs (for subagents, e.g. snmptrapd)
+   MAINSUBS="$MAINSUBS agent"
+   # building snmptrapd w/o agentlibs doesn't work atm
+   #TRAPLIBS='$(TRAPDWITHOUTAGENT)'
+   #USETRAPLIBS='$(USELIBS)'
+   TRAPLIBS='$(TRAPDWITHAGENT)'
+   USETRAPLIBS='$(USEAGENTLIBS)'
+   AC_DEFINE([NETSNMP_DISABLE_AGENT], 1, [Define if no agent is built])
+fi
+
+AC_SUBST(SNMPD)
+AC_SUBST(TRAPLIBS)
+AC_SUBST(USETRAPLIBS)
+
+#       Applications
+#
+NETSNMP_ARG_ENABLE(applications,
+[  --disable-applications          Do not build the apps (snmpget, ...).])
+if test "x$enable_applications" != "xno"; then
+   MAINSUBS="$MAINSUBS apps"
+   FEATUREHEADERS="$FEATUREHEADERS features-snmpnetstat.h features-apps.h"
+   FTMAINSUBS="apps $FTMAINSUBS"
+else
+   AC_DEFINE([NETSNMP_DISABLE_APPS], 1, [Define if no apps are built])
+fi
+
+#       Manual pages
+#
+NETSNMP_ARG_ENABLE(manuals,
+[  --disable-manuals               Do not install the manuals.])
+if test "x$enable_manuals" != "xno"; then
+   MAINSUBS="$MAINSUBS man"
+fi
+
+#       Supporting scripts
+#
+NETSNMP_ARG_ENABLE(scripts,
+[  --disable-scripts               Do not install the scripts (mib2c, ...).])
+if test "x$enable_scripts" != "xno"; then
+   MAINSUBS="$MAINSUBS local"
+fi
+
+#       MIB files
+#
+AC_ARG_ENABLE(mibs,
+[  --disable-mibs                  Do not install the mib files.])
+if test "x$enable_mibs" != "xno"; then
+   MAINSUBS="$MAINSUBS mibs"
+fi
+# with-mibs is valid too, but means something else
+
+AC_SUBST(MAINSUBS)
+AC_SUBST(FTMAINSUBS)
+AC_MSG_CHECKING([what to build and install])
+AC_MSG_RESULT([$MAINSUBS])
+
+
+#       MIB module validation (during "configure")
+#
+NETSNMP_ARG_ENABLE(mib-config-checking,
+[  --enable-mib-config-checking    Turns on extra checks during configuration
+                                  of mib modules. Any conflicts will cause
+                                  configure to abort (default is to issue a
+                                  warning and continue.)],
+  [if test "$enableval" = yes -o "$enableval" = no ; then
+     with_mib_cfg_checks="$enableval"
+   else
+     AC_MSG_ERROR([Please use --enable/--disable-mib-config-checking])
+   fi],
+  [with_mib_cfg_checks="no"])
+
+NETSNMP_ARG_ENABLE(mib-config-debug,
+[  --enable-mib-config-debug       Turns on verbose output during mib module
+                                  configure processing.],
+  [if test "$enableval" = yes -o "$enableval" = no ; then
+     with_mib_cfg_debug="$enableval"
+   else
+     AC_MSG_ERROR([Please use --enable/--disable-mib-config-debug])
+   fi],
+  [with_mib_cfg_debug="no"])
+
+
+#       Version-specific features
+#
+AC_ARG_ENABLE([new-features],
+        [AS_HELP_STRING([--enable-new-features],
+                [Compile in new MIB modules and other experimental features
+                 which are due to be included in future releases.])])
+
+AC_ARG_ENABLE([old-features],
+        [AS_HELP_STRING([--enable-old-features],
+                [Compile in old MIB modules and other deprecated features
+                 which were replaced in the default build of this release.])])
+
+AC_ARG_WITH([features-of],
+        [AS_HELP_STRING([--with-features-of=version],
+                [Compile in MIB modules and other features as if this was
+                 release "version" (default is ]AC_PACKAGE_VERSION[).])],,
+        [with_features_of=$PACKAGE_VERSION])
+   
+
+#       Manual prompting during "configure"
+#
+NETSNMP_ARG_WITH(defaults,
+[
+Miscellaneous:
+  --with-defaults         Use defaults for prompted values.],
+  [if test "$withval" = yes -o "$withval" = no ; then
+     defaults="$withval"
+   else
+     AC_MSG_ERROR([Please use --with/--without-defaults])
+   fi],
+  [defaults="no"])
+
+
+#       UCD compatability
+#
+NETSNMP_ARG_ENABLE(ucd-snmp-compatibility,
+[  --enable-ucd-snmp-compatibility Install ucd-snmp look-alike headers and libs.
+])
+
+if test "x$enable_ucd_snmp_compatibility" = "xyes" ; then	
+  installucdheaders=installucdheaders
+  installucdlibs=installucdlibs
+  AC_MSG_CACHE_ADD(UCD-SNMP compatability:     enabled)
+fi
+AC_SUBST(installucdheaders)
+AC_SUBST(installucdlibs)
+
+
+##
+#   Project: Library: MIB configuration settings
+##
+
+NETSNMP_ARG_ENABLE(mib-loading,
+[  --disable-mib-loading           Do not include code that parses and 
+                                  manipulates the mib files.])
+if test "x$enable_mib_loading" = "xno"; then
+  AC_DEFINE([NETSNMP_DISABLE_MIB_LOADING], 1, 
+            [Define if mib loading and parsing code should not be included])
+fi
+
+NETSNMP_ARG_WITH(mibdirs,
+[  --with-mibdirs="dir1:dir2:"   Default directories to look for mibs.
+                                  (Default: \$HOME/.snmp/mibs:DATADIR/snmp/mibs)],
+    [NETSNMP_DEFAULT_MIBDIRS="$with_mibdirs"
+    AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_MIBDIRS,"$with_mibdirs",
+        [default location to look for mibs to load using the above tokens
+         and/or those in the MIBS envrionment variable])])
+
+AC_ARG_WITH(mibs,
+[  --with-mibs="item1:item2:"    Default mib IDs to read.
+                                  (The default list is
+                                   "SNMPv2-MIB:IF-MIB:IP-MIB:TCP-MIB:UDP-MIB"
+                                  with the addition of any mibs used
+                                  by the mib modules the agent is
+                                  configured with)],
+    NETSNMP_DEFAULT_MIBS="$with_mibs")
+# enable-mibs is valid too, but means something else
+
+NETSNMP_ARG_WITH(mibfiles,
+[  --with-mibfiles="file1:file2" Default mib files to load.
+                                  (Default:  none.  uses IDs above instead.)],
+    AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_MIBFILES,"$with_mibfiles",
+        [default mib files to load, specified by path.]))
+
+
+##
+#   Project: Library: Security configuration
+##
+
+NETSNMP_ARG_ENABLE(des,
+[  --disable-des                   Do not support DES encryption.])
+if test "x$enable_des" = "xno"; then
+  AC_DEFINE([NETSNMP_DISABLE_DES], 1, 
+            [Define if DES encryption should not be supported])
+fi
+
+NETSNMP_ARG_ENABLE(privacy,
+[  --disable-privacy               Don't compile in support for privacy (encryption).])
+if test "x$enable_privacy" != "xno"; then
+  AC_DEFINE(NETSNMP_ENABLE_SCAPI_AUTHPRIV, 1,
+    [define if you want to compile support for both authentication and
+     privacy support.])
+fi
+
+NETSNMP_ARG_ENABLE(md5,
+[  --disable-md5                   Do not support MD5 authentication.])
+if test "x$enable_md5" = "xno"; then
+  AC_DEFINE([NETSNMP_DISABLE_MD5], 1, 
+            [Define if MD5 authentication should not be supported])
+fi
+
+NETSNMP_ARG_ENABLE(internal-md5,
+[  --enable-internal-md5           Use the internal MD5 support.])
+if test "x$enable_internal_md5" = "xyes"; then
+  if test "x$enable_md5" = "xno"; then
+    AC_MSG_ERROR(You can not specify both --enable-internal-md5 and --disable-md5)
+  else
+    AC_DEFINE(NETSNMP_USE_INTERNAL_MD5, 1,
+      [define if you are using the MD5 code ...])
+  fi
+fi
+
+
+##
+#   Project: Library: Misc configuration
+##
+
+NETSNMP_ARG_WITH(opaque-special-types,
+[  --without-opaque-special-types  Don't use special opaque encodings.
+                                  SNMP normally cannot handle
+                                  floating numbers, nor large 64 bit
+                                  integers well.  By default, the
+                                  net-snmp package compiles in
+                                  support for these extra datatypes
+                                  (in a legal way)])
+# Only define if specifically chosen as --without (i.e., default to true).
+if test "x$with_opaque_special_types" != "xno"; then
+  AC_DEFINE(NETSNMP_WITH_OPAQUE_SPECIAL_TYPES, 1,
+    [Should we compile to use special opaque types: float, double, counter64,
+     i64, ui64, union?])
+fi
+
+NETSNMP_ARG_ENABLE(ipv6,
+[  --enable-ipv6                   Generate IPv6 ready version.],
+    [if test "x$enable_ipv6" = "xyes"; then
+      AC_DEFINE(NETSNMP_ENABLE_IPV6, 1,
+        [define if you want to enable IPv6 support])
+    fi])
+
+NETSNMP_ARG_WITH(logfile,
+[  --with-logfile="location"       Default log file location for snmpd.],
+    ac_cv_user_prompt_NETSNMP_LOGFILE="$with_logfile")
+if test "$ac_cv_user_prompt_NETSNMP_LOGFILE" = "no"; then
+    ac_cv_user_prompt_NETSNMP_LOGFILE="none"
+fi
+
+NETSNMP_ARG_WITH(persistent-directory,
+[  --with-persistent-directory="directory"
+                                  Default directory for persistent data storage.],ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY="$with_persistent_directory")
+
+NETSNMP_ARG_WITH(persistent-mask,
+[  --with-persistent-mask="mask"  Default mask for persistent data storage.
+                                  (Default: 077)],
+  [if test [`expr "X$withval" : 'X[0-7]*$'`] -eq 4 ; then
+     AC_MSG_RESULT([using persistent mask $withval])
+     withval="0$withval"
+   else
+     AC_MSG_ERROR([Please provide a three digit octal persistent mask value])
+   fi],
+  [withval=077
+   AC_MSG_RESULT([using default persistent mask $withval])])
+AC_DEFINE_UNQUOTED(NETSNMP_PERSISTENT_MASK,$withval,
+   [umask permissions to set up persistent files with])
+
+NETSNMP_ARG_WITH(copy_persistent_files,
+[  --with-copy-persistent-files="no" Don't copy persistent files
+                                     (or use "yes" to copy them).
+                                     (Default: yes)],
+    ac_cv_user_prompt_COPY_PERSISTENT_FILES="$with_copy_persistent_files")
+
+default_temp_file_pattern="/tmp/snmpdXXXXXX"
+NETSNMP_ARG_WITH(temp-file-pattern,
+[  --with-temp-file-pattern=PATTERN  Pattern of temporary files (Default: /tmp/snmpdXXXXXX)],
+  [if test `expr "X$withval" : ".*XXXXXX$"` -ne 0 ; then
+     AC_MSG_RESULT(using temporary file pattern $withval)
+   else
+     AC_MSG_ERROR([temporary file pattens must end with 6 X's])
+   fi],
+  [withval="$default_temp_file_pattern"
+   AC_MSG_RESULT(using default temporary file pattern $withval)])
+AC_DEFINE_UNQUOTED(NETSNMP_TEMP_FILE_PATTERN,"$withval",
+  [Pattern of temporary files])
+
+
+##
+#   Project: Library: Version configuration
+##
+
+SNMP_VERSIONS=""
+NETSNMP_ARG_ENABLE(snmpv1,
+[  --disable-snmpv1                Do not include code that implements SNMPv1.])
+if test "x$enable_snmpv1" = "xno"; then
+  AC_DEFINE([NETSNMP_DISABLE_SNMPV1], 1, 
+            [Define if SNMPv1 code should not be included])
+else
+  SNMP_VERSIONS="$SNMP_VERSIONS 1"
+fi
+
+NETSNMP_ARG_ENABLE(snmpv2c,
+[  --disable-snmpv2c               Do not include code that implements SNMPv2c.])
+if test "x$enable_snmpv2c" = "xno"; then
+  AC_DEFINE([NETSNMP_DISABLE_SNMPV2C], 1, 
+            [Define if SNMPv2c code should not be included])
+else
+  SNMP_VERSIONS="$SNMP_VERSIONS 2c"
+fi
+
+SNMP_VERSIONS="$SNMP_VERSIONS 3"
+AC_MSG_CACHE_ADD(SNMP Versions Supported:   $SNMP_VERSIONS)
+
+NETSNMP_ARG_WITH(default-snmp-version,
+[  --with-default-snmp-version="3" Default version of SNMP to use.
+                                    (Default: 3)
+                                    Legal values: 1, 2 (for SNMPv2c) or 3.],
+    ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION="$with_default_snmp_version")
+
+# we test this now and later as well.  we test it now so configure can die
+# early on with an error rather than waiting till the end of the script.
+case "${ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION-3}" in
+  [[123]]) ;;
+  2c) ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION=2 ;;
+  *)
+    AC_MSG_ERROR([Illegal version number.  Only 1, 2 (for SNMPv2c) and 3 are supported.])
+    ;;
+esac
+
+
+##
+#   Project: Library: Transport modules
+##
+
+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).
+
+  Available SNMP transport modules are:
+
+    UDP         support for SNMP over UDP/IP.
+                This transport is always compiled in.
+    UDPIPv6     support for SNMP over UDP/IPv6.
+                This transport is available for Linux, Solaris and
+                FreeBSD at least.
+                This transport is compiled in by default if IPv6 support is enabled.
+    TCPIPv6     support for SNMP over UDP/IPv6.
+                This transport is available for Linux, Solaris and
+                FreeBSD at least.
+                This transport is compiled in by default if IPv6 support is enabled.
+    TCP         support for SNMP over TCP/IP.
+                This transport is compiled in by default, but may be omitted.
+    Unix        support for SNMP over Unix domain protocols.
+                This transport is compiled in by default except on Win32
+                platforms, and may be omitted.
+    Callback    support for SNMP over an internal locally connected pair
+                of snmp_sessions.
+    Alias       The alias transport simply lets you define more complex
+                transport strings and alias them to simple names in
+                the snmp.conf file.
+    AAL5PVC     support for SNMP over AAL5 PVCs.
+                This transport is presently only available for Linux,
+                is never compiled in by default and may be omitted.
+    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
+])
+
+#
+# Catch common mistakes in transport options
+#
+AC_ARG_WITH(transport,, NETSNMP_INVALID_WITH([transports]))
+AC_ARG_WITH(out-transport,, NETSNMP_INVALID_WITH([out-transports]))
+
+
+##
+#   Project: Library: Security modules
+##
+
+NETSNMP_ARG_WITH(security-modules,
+[  --with-security-modules="s1 s2 ..."   Compile in the given SNMP security
+                                    module services (space separated list).
+
+  Available SNMP security services:
+
+        usm                support for user based SNMP security
+        ksm                support for kerberos based SNMP security
+        tsm                support for the Transport-based security
+                           (for use with the SSH, DTLSUDP and TLSTCP transports)
+])
+
+NETSNMP_ARG_WITH(out-security-modules,
+[  --with-out-security-modules="s1 s2 ..."   Removes the given SNMP security
+                                    module services from the default list.
+])
+
+
+##
+#   Project: Library: Developer-related settings
+##
+
+NETSNMP_ARG_ENABLE(debugging,
+[  --enable-debugging              Outputs extra debugging information at all
+                                  times.  Normally, you should not enable this,
+                                  but instead use the -D flag of the commands,
+                                  which toggles debuging output at runtime.
+  --disable-debugging             Disallows debugging code to be built in.
+                                  This might provide some speed benefits.],
+    AC_DEFINE(NETSNMP_ALWAYS_DEBUG))
+if test "x$enable_debugging" = "xno"; then
+    AC_DEFINE(NETSNMP_NO_DEBUGGING)
+fi
+
+NETSNMP_ARG_ENABLE(developer,
+[  --enable-developer              Turns on super-duper-extra-compile-warnings
+                                  when using gcc.],
+  [if test "$enableval" = yes ; then
+     developer="yes"
+   elif test "$enableval" != no ; then
+     AC_MSG_ERROR([Please use --enable/--disable-developer])
+   else
+     developer="no"
+   fi])
+
+NETSNMP_ARG_ENABLE(testing-code,
+[  --enable-testing-code           Enables some code sections that should 
+                                  only be used for testing of certain
+                                  SNMP functionalities.  This should *not* 
+                                  be turned on for production use.  Ever.],
+  [if test "$enableval" = yes ; then
+     AC_DEFINE(NETSNMP_ENABLE_TESTING_CODE, 1, [testing code sections.])
+   elif test "$enableval" != no ; then
+     AC_MSG_ERROR([Please use --enable/--disable-testing-code])
+   fi])
+
+NETSNMP_ARG_ENABLE(reentrant,
+[  --enable-reentrant              Enables locking functions that protect
+                                  library resources in some multi-threading
+                                  environments.  This does not guarantee
+                                  thread-safe operation.
+                                  Currently an experimental setting.],
+  [if test "$enableval" = yes -o "$enableval" = no ; then
+     with_res_locks="$enableval"
+   else
+     AC_MSG_ERROR([Please use --enable/--disable-reentrant])
+   fi],
+  [with_res_locks="no"])
+
+NETSNMP_ARG_ENABLE(deprecated,
+[  --disable-deprecated            Don't compile in deprecated functions.])
+if test "$enable_deprecated" = no ; then
+   AC_DEFINE([NETSNMP_NO_DEPRECATED_FUNCTIONS], 1,
+             [Define to suppress inclusion of deprecated functions])
+fi
+
+
+
+##
+#   Project: Agent configuration settings
+##
+
+NETSNMP_ARG_WITH(root-access,
+[
+Configuring the agent:
+  --without-root-access           The snmpd agent won't require root access to
+                                  run it.  The information it returns in the
+                                  mib-II tree may not be correct, however.])
+# Only define if specifically chosen as --without (i.e., default to true).
+if test "x$with_root_access" = "xno"; then
+  AC_DEFINE(NETSNMP_NO_ROOT_ACCESS, 1,
+    [If you don't have root access don't exit upon kmem errors])
+fi
+
+NETSNMP_ARG_WITH(kmem-usage,
+[  --without-kmem-usage            Do not include any code related to the use
+                                  of kmem.])
+# Only define if specifically chosen as --without (i.e., default to true).
+if test "x$with_kmem_usage" = "xno"; then
+  AC_DEFINE(NETSNMP_NO_KMEM_USAGE, 1, [If we don't want to use kmem.])
+fi
+
+NETSNMP_ARG_WITH(dummy-values,
+[  --with-dummy-values             Provide 'placeholder' dummy values where
+                                  the necessary information is not available.
+                                  This is technically not compliant with the
+                                  SNMP specifications, but was how the agent
+                                  operated for versions < 4.0.])
+# Define unless specifically suppressed (i.e., option defaults to false).
+if test "x$with_dummy_values" != "xyes"; then
+  AC_DEFINE(NETSNMP_NO_DUMMY_VALUES, 1,
+    [If you don't want the agent to report on variables it doesn't have
+     data for])
+fi
+
+NETSNMP_ARG_ENABLE(set-support,
+[  --disable-set-support           Do not allow SNMP set requests.])
+if test "x$enable_set_support" = "xno"; then
+  AC_DEFINE([NETSNMP_DISABLE_SET_SUPPORT], 1, 
+            [Define if SNMP SET support should be disabled])
+fi
+
+
+NETSNMP_ARG_WITH(sys_contact,
+[  --with-sys-contact="who@where"  Default system contact.
+                                    (Default: LOGIN@DOMAINNAME)],
+    ac_cv_user_prompt_NETSNMP_SYS_CONTACT="$with_sys_contact")
+
+NETSNMP_ARG_WITH(sys_location,
+[  --with-sys-location="location"  Default system location.
+                                    (Default: Unknown)],
+    ac_cv_user_prompt_NETSNMP_SYS_LOC="$with_sys_location")
+
+
+
+##
+#   Project: Agent: Extensibility configuration
+##
+
+NETSNMP_ARG_ENABLE(local-smux,
+[  --enable-local-smux             Restrict SMUX connections to localhost (by default).],
+    [if test "x$enable_local_smux" = "xyes"; then
+      AC_DEFINE(NETSNMP_ENABLE_LOCAL_SMUX, 1,
+          [define if you want to restrict SMUX connections to localhost
+           by default])
+    fi])
+
+NETSNMP_ARG_ENABLE(agentx-dom-sock-only,
+[  --enable-agentx-dom-sock-only   Disable UDP/TCP transports for agentx.],
+AC_DEFINE(NETSNMP_AGENTX_DOM_SOCK_ONLY, 1,
+    [define if agentx transport is to use domain sockets only]))
+
+NETSNMP_ARG_ENABLE(snmptrapd-subagent,
+[  --disable-snmptrapd-subagent    Disable agentx subagent code in snmptrapd.])
+if test "x$enable_snmptrapd_subagent" = "xno"; then
+  AC_DEFINE(NETSNMP_SNMPTRAPD_DISABLE_AGENTX, 1,
+    [define if you do not want snmptrapd to register as an AgentX subagent])
+fi
+
+default_agentx_socket="/var/agentx/master"
+NETSNMP_ARG_WITH(agentx-socket,
+[  --with-agentx-socket=FILE         AgentX socket (Default: /var/agentx/master as specified in RFC2741)],[
+  if test "$withval" = yes; then
+    AC_MSG_ERROR([ Please provide a full path ]);
+  fi
+  AC_MSG_RESULT(using AgentX socket $withval)
+],[
+  withval=$default_agentx_socket
+  AC_MSG_RESULT(using default AgentX socket $default_agentx_socket)
+])
+AC_DEFINE_UNQUOTED(NETSNMP_AGENTX_SOCKET,"$withval",
+        [Unix domain socket for AgentX master-subagent communication])
+
+#
+# feature addition/removal and minimialist support
+#
+FEATURE_ADD_FLAGS=""
+NETSNMP_ARG_WITH(features,
+[  --with-features="feat1 feat2"   Request extra features to be turned on.
+                                   (only useful with --enable-minimalist)],[
+  if test "$withval" = yes; then
+    AC_MSG_ERROR([ Please provide a list of features ]);
+  fi
+  FEATURE_ADD_FLAGS="--add $withval"
+  AC_MSG_RESULT(adding in features: $withval)
+])
+AC_SUBST(FEATURE_ADD_FLAGS)
+
+
+FEATURE_REMOVE_FLAGS=""
+NETSNMP_ARG_WITH(out-features,
+[  --with-out-features="feat1..."  Remove specific features.
+                                   (implies --enable-minimalist)],[
+  if test "$withval" = yes; then
+    AC_MSG_ERROR([ Please provide a list of features ]);
+  fi
+  FEATURE_REMOVE_FLAGS="--remove $withval"
+  FEATURETARGS="features"
+  AC_DEFINE(NETSNMP_MINIMAL_CODE, 1,
+    [Define if you want to remove all non-essential code features.])
+  AC_MSG_RESULT(removing features: $withval)
+])
+AC_SUBST(FEATURE_REMOVE_FLAGS)
+
+
+# Catch common mistakes
+AC_ARG_WITH(feature,, NETSNMP_INVALID_WITH([features]))
+AC_ARG_WITH(out-feature,, NETSNMP_INVALID_WITH([out-features]))
+
+FEATURETARGS=""
+NETSNMP_ARG_ENABLE(minimalist,
+[  --enable-minimalist             Remove all non-essential code features.])
+if test "x$enable_minimalist" = "xyes"; then
+   # we'll assume the mini agent is desired here as well
+   mini_agent="yes"
+   FEATURETARGS="features"
+
+   # needed to bootstrap later checks
+   echo "" > include/net-snmp/feature-details.h
+   AC_DEFINE(NETSNMP_MINIMAL_CODE, 1,
+     [Define if you want to remove all non-essential code features.])
+else
+   FEATUREHEADERS=""
+fi
+AC_ARG_WITH([minimalist],,NETSNMP_INVALID_ENABLE([minimalist]))
+AC_SUBST(FEATURETARGS)
+AC_SUBST(FEATUREHEADERS)
+
+NETSNMP_ARG_ENABLE(notify-only,
+[  --enable-notify-only            Build tools that can only send notifications.])
+if test "x$enable_notify_only" = "xyes"; then
+   AC_DEFINE(NETSNMP_NOTIFY_ONLY, 1,
+     [Define if you want to only support sending notifications])
+fi
+AC_ARG_WITH([notify-only],,NETSNMP_INVALID_ENABLE([notify-only]))
+AC_ARG_ENABLE([notifyonly],,NETSNMP_INVALID_ENABLE([notify-only]))
+
+NETSNMP_ARG_ENABLE(no-listen,
+[  --enable-no-listen              Build tools that can't listen to ports.])
+if test "x$enable_no_listen" = "xyes" -o "x$enable_notify_only" = "xyes"; then
+   enable_no_listen="yes"
+   AC_DEFINE(NETSNMP_NO_LISTEN_SUPPORT, 1,
+     [Define if you want to remove all listening support from the code])
+fi
+AC_ARG_WITH([no-listen],,NETSNMP_INVALID_ENABLE([no-listen]))
+AC_ARG_ENABLE([nolisten],,NETSNMP_INVALID_ENABLE([no-listen]))
+
+NETSNMP_ARG_ENABLE(read-only,
+[  --enable-read-only              Remove all SET support from the code.])
+if test "x$enable_read_only" = "xyes" -o "x$enable_notify_only" = "xyes" ; then
+   enable_read_only="yes"
+   AC_DEFINE(NETSNMP_NO_WRITE_SUPPORT, 1,
+     [Define if you want to remove all SET/write access from the code])
+fi
+AC_ARG_WITH([read-only],,NETSNMP_INVALID_ENABLE([read-only]))
+AC_ARG_ENABLE([readonly],,NETSNMP_INVALID_ENABLE([read-only]))
+
+
+##
+#   Project: Agent: MIB module configuration
+##
+
+NETSNMP_ARG_ENABLE(mini_agent,
+[  --enable-mini-agent             Build a minimal agent.])
+if test "x$enable_mini_agent" = "xyes"; then
+    mini_agent="yes"
+else
+    mini_agent="no"
+fi
+AC_ARG_WITH([miniagent],,NETSNMP_INVALID_ENABLE([mini-agent]))
+AC_ARG_ENABLE([miniagent],,NETSNMP_INVALID_ENABLE([mini-agent]))
+
+
+
+
+NETSNMP_ARG_ENABLE(mfd-rewrites,
+[  --enable-mfd-rewrites           Use new MFD rewrites of mib modules,
+                                  where available. (default is to use
+                                  original mib module code).])
+if test "x$enable_mfd_rewrites" = "xyes"; then
+   AC_DEFINE(NETSNMP_ENABLE_MFD_REWRITES, 1,
+     [Define if you want to build MFD module rewrites])
+fi
+
+
+NETSNMP_ARG_WITH(mib_modules,
+[  --with-mib-modules="item1 ..."  Compile with additional mib modules
+                                    (Space separated list).])
+
+NETSNMP_ARG_WITH(out_mib_modules,
+[  --with-out-mib-modules="list"   Compile without these mib modules.
+
+  Default mib modules compiled into the agent (which can be removed):
+  
+    mibII                  support for the mib-II tree.
+    snmpv3mibs             support for the snmpv3 mib modules.
+    ucd_snmp               UCD-SNMP-MIB specific extensions.
+    agent_mibs             NET-SNMP-AGENT-MIB extensions
+    agentx                 AgentX support (see below)
+    notification           mibs supporting specification of trap destinations.
+    target                 Support for the SNMP WGs TARGET-MIB.
+    utilities              general agent configuration utilities.
+    disman/event           support for the DISMAN-EVENT-MIB
+                             (supports self monitoring and notification 
+                              delivery when error conditions are found)
+    disman/schedule        support for the DISMAN-SCHEDULE-MIB
+                             (trigger SET requests at specified times)
+    host                   host resources mib support.
+                             (only on major supported platforms)
+
+  Optional mib modules that can be built into the agent include:
+    smux                   smux support to allow subagents to attach to snmpd.
+    mibII/mta_sendmail     Sendmail statistics monitoring (MTA-MIB)
+    ucd-snmp/diskio        Table of io-devices and how much data they have
+                           read/written.  (only tested on Solaris, Linux)
+    disman/old-event-mib   previous implementation of the DISMAN-EVENT-MIB
+
+  Optional modules for specific platforms
+    Linux
+      ucd-snmp/lmSensors   hardware monitoring (LM-SENSORS-MIB)
+      ip-mib/ipv4InterfaceTable  (experimental)
+      ip-mib/ipv6InterfaceTable  (experimental)
+      tunnel               Linux TUNNEL-MIB support (ifTable extension)
+      mibII/interfaces     (old ifTable implementation)
+      misc/ipfwacc         accounting rules IP firewall information
+      ipfwchains/ipfwchains  firewall chains under ipfw
+                             (See agent/mibgroup/ipfwchains/README)
+      sctp-mib             support for the SCTP-MIB
+      etherlike-mib        support for the EtherLike-MIB
+
+    Solaris
+      ucd-snmp/lmSensors   hardware monitoring (LM-SENSORS-MIB)
+      if-mib               IF-MIB rewrite (add --enable-mfd-rewrites)
+      tcp-mib              TCP-MIB rewrite (tcpConnectionTable and
+                             tcpListenerTable; add --enable-mfd-rewrites)
+      udp-mib              UDP-MIB rewrite (udpEndpointTable;
+                             add --enable-mfd-rewrites)
+
+    FreeBSD/OpenBSD
+      if-mib               IF-MIB rewrite (add --enable-mfd-rewrites)
+
+  AgentX support:
+    agentx/subagent        allows the agent to run as either a snmp agent
+                           or as an agentX sub-agent.
+    agentx/master          makes the agent run as an agentX master agent
+                           as well as a normal snmp agent.
+    agentx                 includes both agentx/master and agentx/client.
+
+  Optional modules for C coders to look at and/or include as extension examples:
+  
+    examples/ucdDemoPublic  SNMPv3 interoperability testing mib.
+    examples/example        example C code extension.])
+
+
+#
+# Catch common mistakes in configure options
+#
+AC_ARG_WITH(mib-module,, NETSNMP_INVALID_WITH([mib-modules]))
+AC_ARG_WITH(module,, NETSNMP_INVALID_WITH([mib-modules]))
+AC_ARG_WITH(modules,, NETSNMP_INVALID_WITH([mib-modules]))
+
+AC_ARG_WITH(out-mib-module,, NETSNMP_INVALID_WITH([out-mib-modules]))
+AC_ARG_WITH(out-module,, NETSNMP_INVALID_WITH([out-mib-modules]))
+AC_ARG_WITH(out-modules,, NETSNMP_INVALID_WITH([out-mib-modules]))
+
+
+##
+#   Project: Enterprise settings	(? Agent/Library/Both?)
+##
+
+NETSNMP_ARG_WITH(enterprise-oid,
+[Enterprise OIDs:  (warning: this should be used with caution.)
+
+  --with-enterprise-oid              The enterprise number assigned to the
+                                     vendor by IANA.  See
+                                     http://www.iana.org/cgi-bin/enterprise.pl
+                                     to get one, though using the default is
+                                     probably the right choice is most cases.
+                                     (default 8072 = "enterprise.net-snmp")],[
+  if test "$withval" = yes; then
+    AC_MSG_ERROR([ Please provide a value for the enterprise number ]);
+  fi
+  AC_DEFINE_UNQUOTED(NETSNMP_ENTERPRISE_OID, $withval)
+  ent_oid="1,3,6,1,4,1,$withval"
+  AC_DEFINE_UNQUOTED(NETSNMP_ENTERPRISE_MIB, $ent_oid)
+  ent_dot_oid="1.3.6.1.4.1.$withval"
+  AC_DEFINE_UNQUOTED(NETSNMP_ENTERPRISE_DOT_MIB, $ent_dot_oid)
+  AC_MSG_RESULT(using enterprise number $withval)
+],[
+  AC_MSG_RESULT(using default "enterprise.net-snmp")
+])
+
+NETSNMP_ARG_WITH(enterprise-sysoid,
+[
+  --with-enterprise-sysoid           The base OID for the sysObjectID
+                                     of the system group
+                                     (default .1.3.6.1.4.1.8072.3.2... = 
+                                      "netSnmpAgentOIDs...")],[
+  if test "$withval" = yes; then
+    AC_MSG_ERROR([ Please provide a base OID value ]);
+  fi
+  sys_oid=`echo "$withval" | sed 's/^\.//' | sed 's/\./\,/g'`
+  AC_DEFINE_UNQUOTED(NETSNMP_SYSTEM_MIB, $sys_oid)
+  sys_dot_oid=`echo "$withval" | sed 's/^\.//'`
+  AC_DEFINE_UNQUOTED(NETSNMP_SYSTEM_DOT_MIB, $sys_dot_oid)
+  sysoid_len=`echo "$withval" | sed 's/[^\.]//g' | awk -F\. '{ print NF }'`
+  AC_DEFINE_UNQUOTED(NETSNMP_SYSTEM_DOT_MIB_LENGTH, $sysoid_len)
+  AC_MSG_RESULT(using enterprise sysOID $withval ....)
+],[
+  AC_MSG_RESULT(using default enterprise sysOID "NET-SNMP-MIB::netSnmpAgentOIDs...")
+])
+
+NETSNMP_ARG_WITH(enterprise-notification-oid,
+[
+  --with-enterprise-notification-oid The OID used for the root of
+				     enterprise specific notifications.
+                                     (default .1.3.6.1.4.1.8072.4 = 
+                                      "netSnmpNotificationPrefix")],[
+  if test "$withval" = yes; then
+    AC_MSG_ERROR([ Please provide a base OID value ]);
+  fi
+  notification_oid=`echo "$withval" | sed 's/^\.//' | sed 's/\./\,/g'`
+  AC_DEFINE_UNQUOTED(NETSNMP_NOTIFICATION_MIB, $notification_oid)
+  notification_dot_oid=`echo "$withval" | sed 's/^\.//'`
+  AC_DEFINE_UNQUOTED(NETSNMP_NOTIFICATION_DOT_MIB, $notification_dot_oid)
+  notificationoid_len=`echo "$withval" | sed 's/[^\.]//g' | awk -F\. '{ print NF }'`
+  AC_DEFINE_UNQUOTED(NETSNMP_NOTIFICATION_DOT_MIB_LENGTH, $notificationoid_len)
+  AC_MSG_RESULT(using enterprise notifications $withval)
+],[
+  AC_MSG_RESULT(using default notifications "NET-SNMP-MIB::netSnmpNotifications")
+])
+
+
+##
+#   Project: Perl settings
+##
+
+NETSNMP_ARG_WITH(perl-modules,
+[
+Perl:
+  --with-perl-modules[=ARGS]      Install the Perl modules along with the rest
+                                  of the net-snmp toolkit.  If ARGS is
+                                  specified, they're passed to the
+                                  Makefile.PL script.],[
+    if test "$withval" = "no"; then
+      install_perl="no"
+    else
+      install_perl="yes"
+      if test "$withval" != "yes"; then
+        PERLARGS="$withval"
+      fi
+    fi
+], install_perl="try")
+
+NETSNMP_ARG_ENABLE(embedded-perl,
+[  --disable-embedded-perl         Disable embedded Perl in the SNMP agent and
+                                  snmptrapd. [enabled by default]],
+    embed_perl="$enableval", embed_perl="try")
+
+NETSNMP_ARG_ENABLE(perl-cc-checks,
+[  --disable-perl-cc-checks        Disable configure checks for whether Perl's
+                                  C Compiler is compatible with ours when
+                                  embedded Perl is enabled.])
+
+
+##
+#   Project: Python settings
+##
+
+AC_ARG_WITH(python-modules,
+[
+Python:
+  --with-python-modules[=ARGS]    Install the python bindings along with the
+                                  rest of the net-snmp toolkit.  If ARGS is
+                                  specified, they're passed to the
+                                  setup.py script as arguments.],[
+    install_python="yes"
+    if test "$withval" = "yes"; then
+      PYTHONARGS=""
+    elif test "$withval" = "no"; then
+      PYTHONARGS=""
+      install_python="no"
+    else
+      PYTHONARGS="$withval"
+    fi
+], install_python="no")
+
+
+##
+#   Project: Library settings
+##
+
+NETSNMP_ARG_WITH(server-send-buf,
+[
+Network Buffers:
+  --with-server-send-buf[=ARG]    Use ARG for the default UDP/TCP send buffer instead
+                                  of the OS buffer for server sockets that are
+                                  created (snmpd, snmptrapd).  
+                                  This default can be overridden in the runtime 
+                                  configuration files.
+                                  The ARG should be the size in bytes],[
+   if test "$withval" = yes; then
+    AC_MSG_ERROR([ Please provide a positive number for the server send buffer ])
+   fi
+   AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_SERVER_SEND_BUF, $withval)],
+   AC_MSG_RESULT([using OS default send buffer size for server sockets]) )
+
+NETSNMP_ARG_WITH(server-recv-buf,
+[  --with-server-recv-buf[=ARG]    Similar as previous option, but for receive buffer],[
+  if test "$withval" = yes; then
+    AC_MSG_ERROR([ Please provide a positive number for the server recv buffer ])
+  fi
+  AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_SERVER_RECV_BUF, $withval)],
+  AC_MSG_RESULT([using OS default recv buffer size for server sockets]) )
+
+NETSNMP_ARG_WITH(client-send-buf,
+[  --with-client-send-buf[=ARG]    Similar as previous options, but for the
+                                  receive buffer of client sockets],[
+  if test "$withval" = yes; then
+    AC_MSG_ERROR([ Please provide a positive number for the client send buffer ])
+  fi
+  AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_CLIENT_SEND_BUF, $withval)],
+  AC_MSG_RESULT([using OS default send buffer size for client sockets]) )
+
+NETSNMP_ARG_WITH(client-recv-buf,
+[  --with-client-recv-buf[=ARG]    Similar as previous options, but for the send buffer],[
+  if test "$withval" = yes; then
+    AC_MSG_ERROR([ Please provide a positive number for the client recv buffer ])
+  fi
+  AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_CLIENT_RECV_BUF, $withval)],
+  AC_MSG_RESULT([using OS default recv buffer size for client sockets]) )
+
+##
+#   System: library settings  (more)
+##
+
+NETSNMP_ARG_WITH(elf,
+  [AS_HELP_STRING([--without-elf],[use elf libraries])])
+
+NETSNMP_ARG_WITH(nl,
+  [AS_HELP_STRING([--with-nl],[use libnl to get netlink data (linux only).])])
+
+NETSNMP_ARG_WITH(libwrap,
+  [  --with-libwrap[=LIBPATH]  Compile in libwrap (tcp_wrappers) support.],
+  [],
+  [with_libwrap="no"])
+
+NETSNMP_ARG_WITH(zlib,
+  [  --with-zlib[=DIR]         use libz in DIR],
+  [],
+  [with_zlib="no"])
+
+AC_ARG_WITH(bzip2,
+  [  --with-bzip2[=DIR]        use libbz2 in DIR],
+  [],
+  [with_bzip2="no"])
+
+NETSNMP_ARG_WITH(
+ [mnttab],
+ AS_HELP_STRING(
+   [--with-mnttab="/etc/mnttab"],
+   [Mount table location. The default is to autodetect this.]))
+
+##
+#   Project: mysql
+##
+
+NETSNMP_ARG_WITH(mysql,
+  [  --with-mysql            Include support for MySQL.])
+if test "x$with_mysql" = "xyes"; then
+  AC_DEFINE(NETSNMP_USE_MYSQL, 1,
+    [define if you are using the mysql code for snmptrapd ...])
+fi
diff --git a/configure.in b/configure.in
deleted file mode 100644
index 851997f..0000000
--- a/configure.in
+++ /dev/null
@@ -1,4817 +0,0 @@
-# Portions of this file are subject to the following copyright.  See
-# the Net-SNMP's COPYING file for more details and other copyrights
-# that may apply:
-#
-# Portions 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.
-#
-
-#
-# Process this file with autoconf to produce a configure script.
-#
-AC_INIT([Net-SNMP], [5.4.4], [net-snmp-coders@lists.sourceforge.net])
-AC_PREREQ([2.59])
-AC_CONFIG_SRCDIR([agent/mibgroup/ucd-snmp/extensible.c])
-AC_REVISION([$Revision$])
-
-AC_CONFIG_HEADER(include/net-snmp/net-snmp-config.h)
-
-AC_MSG_CACHE_INIT()
-
-#
-# save the configure arguments
-#
-AC_DEFINE_UNQUOTED(NETSNMP_CONFIGURE_OPTIONS,"$ac_configure_args")
-CONFIGURE_OPTIONS="\"$ac_configure_args"\"
-AC_SUBST(CONFIGURE_OPTIONS)
-
-#
-# Compilation setup
-#
-AC_ARG_WITH(cc, [
-Compiler Options:
-  --with-cc=CC                    use CC to compile (default=gcc).],
-    [CC=$with_cc;export CC])
-
-AC_ARG_WITH(linkcc, [
-  --with-linkcc=CC                use CC to link (default=gcc).],
-    [LINKCC=$with_linkcc;export LINKCC])
-
-AC_ARG_WITH(ar,
-[  --with-ar=AR                    use AR as the archiver.],
-    [AR=$with_ar; export AR])
-
-AC_ARG_WITH(endianness,
-[  --with-endianness=big|little    define endianness of target platform when
-                                  cross-compiling.],
-    [if test $with_endianness != "big" -a $with_endianness != "little" ; then
-       AC_MSG_ERROR([Endianness must be big or little, not "$with_endianness".]);
-     fi
-])
-
-AC_ARG_WITH(cflags,
-[  --with-cflags=CFLAGS            use CFLAGS as compile time arguments.],
-    [CFLAGS=$with_cflags; export CFLAGS])
-
-AC_ARG_WITH(ldflags,
-[  --with-ldflags=LDFLAGS          use LDFLAGS as link time arguments to ld.],
-    [LDFLAGS=$with_ldflags; export LDFLAGS])
-
-AC_ARG_ENABLE(as-needed,
-[  --enable-as-needed              Link libperl against Net-SNMP libraries 
-                                  rather than applications. We recommend to
-                                  use this option if it works.])
-
-AC_ARG_WITH(libs,
-[  --with-libs=LIBS                use LIBS as link time arguments to ld.],
-    [LIBS=$with_libs; export LIBS])
-
-AC_ARG_ENABLE(silent-libtool,
-[  --enable-silent-libtool         Pass --silent to libtool.],
-	LIBTOOLFLAGS=--silent)
-AC_SUBST(LIBTOOLFLAGS)
-
-AC_ARG_WITH(install-prefix,
-[  --with-install-prefix=PATH      Just for installing, prefix all 
-                                  directories with PATH.  This is known not
-                                  to work on some systems with shared
-                                  libraries (eg, HPUX)],
-      INSTALL_PREFIX="$withval")
-
-if test "x$INSTALL_PREFIX" = "xyes" ; then
-  AC_MSG_ERROR([--with-install-prefix requires an argument])
-fi
-if test "x$INSTALL_PREFIX" = "xno" ; then
-  INSTALL_PREFIX=""
-fi
-AC_SUBST(INSTALL_PREFIX)
-
-# check for errors in args that run after module processing here, so
-# they fail before module processing...
-AC_ARG_ENABLE(libwrap,,
-	AC_MSG_ERROR([ Invalid option. Use --with-libwrap/--without-libwrap instead ]) )
-  AC_ARG_ENABLE(zlib,,
-	AC_MSG_ERROR([ Invalid option. Use --with-zlib/--without-zlib instead ]) )
-
-AC_ARG_ENABLE(mini_agent,
-[  --enable-mini-agent             Build a minimal agent.])
-if test "x$enable_mini_agent" = "xyes"; then
-    mini_agent="yes"
-else
-    mini_agent="no"
-fi
-AC_ARG_WITH(mini_agent,,
-         AC_MSG_ERROR([ Invalid option. Use --enable-mini-agent/--disable-mini-agent instead ]) )
-AC_ARG_WITH(miniagent,,
-         AC_MSG_ERROR([ Invalid option. Use --enable-mini-agent/--disable-mini-agent instead ]) )
-AC_ARG_ENABLE(miniagent,,
-         AC_MSG_ERROR([ Invalid option. Use --enable-mini-agent/--disable-mini-agent instead ]) )
-
-AC_ARG_ENABLE(agent,
-[  --disable-agent                 Do not build the agent (snmpd).])
-if test "x$enable_agent" != "xno"; then
-   SNMPD='snmpd$(EXEEXT)'
-   MAINSUBS="$MAINSUBS agent"
-   TRAPLIBS='$(TRAPDWITHAGENT)'
-   USETRAPLIBS='$(USEAGENTLIBS)'
-else
-   SNMPD=""
-   # we still need/want the agentlibs (for subagents, e.g. snmptrapd)
-   MAINSUBS="$MAINSUBS agent"
-   # building snmptrapd w/o agentlibs doesn't work atm
-   #TRAPLIBS='$(TRAPDWITHOUTAGENT)'
-   #USETRAPLIBS='$(USELIBS)'
-   TRAPLIBS='$(TRAPDWITHAGENT)'
-   USETRAPLIBS='$(USEAGENTLIBS)'
-fi
-AC_SUBST(SNMPD)
-AC_SUBST(TRAPLIBS)
-AC_SUBST(USETRAPLIBS)
-AC_ARG_WITH(agent,,
-         AC_MSG_ERROR([ Invalid option. Use --enable-agent/--disable-agent instead ]) )
-
-AC_ARG_ENABLE(applications,
-[  --disable-applications          Do not build the apps (snmpget, ...).])
-if test "x$enable_applications" != "xno"; then
-   MAINSUBS="$MAINSUBS apps"
-fi
-# Common mistakes
-AC_ARG_WITH(applications,,
-        AC_MSG_ERROR([ Invalid option. Use --enable-applications/--disable-applications instead ]) )
-
-AC_ARG_ENABLE(manuals,
-[  --disable-manuals               Do not install the manuals.])
-if test "x$enable_manuals" != "xno"; then
-   MAINSUBS="$MAINSUBS man"
-fi
-AC_ARG_WITH(manuals,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-manuals/--disable-manuals instead ]) )
-
-AC_ARG_ENABLE(scripts,
-[  --disable-scripts               Do not install the scripts (mib2c, ...).])
-if test "x$enable_scripts" != "xno"; then
-   MAINSUBS="$MAINSUBS local"
-fi
-AC_ARG_WITH(scripts,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-scripts/--disable-scripts instead ]) )
-
-AC_ARG_ENABLE(mibs,
-[  --disable-mibs                  Do not install the mib files.])
-if test "x$enable_mibs" != "xno"; then
-   MAINSUBS="$MAINSUBS mibs"
-fi
-# with-mibs is valid too, but means something else
-
-AC_SUBST(MAINSUBS)
-AC_MSG_CHECKING([what to build and install])
-AC_MSG_RESULT([$MAINSUBS])
-
-AC_ARG_ENABLE(mib-loading,
-[  --disable-mib-loading           Do not include code that parses and 
-                                  manipulates the mib files.])
-if test "x$enable_mib_loading" = "xno"; then
-  AC_DEFINE([NETSNMP_DISABLE_MIB_LOADING], 1, 
-            [Define if mib loading and parsing code should not be included])
-fi
-AC_ARG_WITH(mib-loading,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-mib-loading/--disable-mib-loading instead ]) )
-
-#
-SNMP_VERSIONS=""
-AC_ARG_ENABLE(snmpv1,
-[  --disable-snmpv1                Do not include code that implements SNMPv1.])
-if test "x$enable_snmpv1" = "xno"; then
-  AC_DEFINE([NETSNMP_DISABLE_SNMPV1], 1, 
-            [Define if SNMPv1 code should not be included])
-else
-  SNMP_VERSIONS="$SNMP_VERSIONS 1"
-fi
-AC_ARG_WITH(snmpv1,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-snmpv1/--disable-snmpv1 instead ]) )
-
-AC_ARG_ENABLE(snmpv2c,
-[  --disable-snmpv2c               Do not include code that implements SNMPv2c.])
-if test "x$enable_snmpv2c" = "xno"; then
-  AC_DEFINE([NETSNMP_DISABLE_SNMPV2C], 1, 
-            [Define if SNMPv2c code should not be included])
-else
-  SNMP_VERSIONS="$SNMP_VERSIONS 2c"
-fi
-AC_ARG_WITH(snmpv2c,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-snmpv2c/--disable-snmpv2c instead ]) )
-
-SNMP_VERSIONS="$SNMP_VERSIONS 3"
-AC_MSG_CACHE_ADD(SNMP Versions Supported:   $SNMP_VERSIONS)
-
-AC_ARG_ENABLE(set-support,
-[  --disable-set-support           Do not allow SNMP set requests to the agent.])
-if test "x$enable_set_support" = "xno"; then
-  AC_DEFINE([NETSNMP_DISABLE_SET_SUPPORT], 1, 
-            [Define if SNMP SET support should be disabled])
-fi
-AC_ARG_WITH(set-support,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-set-support/--disable-set-support instead ]) )
-
-AC_ARG_ENABLE(des,
-[  --disable-des                   Do not support DES encryption.])
-if test "x$enable_des" = "xno"; then
-  AC_DEFINE([NETSNMP_DISABLE_DES], 1, 
-            [Define if DES encryption should not be supported])
-fi
-AC_ARG_WITH(des,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-des/--disable-des instead ]) )
-
-AC_ARG_ENABLE(privacy,
-[  --disable-privacy               Don't compile in support for privacy (encryption).])
-if test "x$enable_privacy" != "xno"; then
-  AC_DEFINE(NETSNMP_ENABLE_SCAPI_AUTHPRIV)
-fi
-AC_ARG_WITH(privacy,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-privacy/--disable-privacy instead ]) )
-
-AC_ARG_ENABLE(md5,
-[  --disable-md5                   Do not support MD5 authentication.])
-if test "x$enable_md5" = "xno"; then
-  AC_DEFINE([NETSNMP_DISABLE_MD5], 1, 
-            [Define if MD5 authentication should not be supported])
-fi
-AC_ARG_WITH(md5,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-md5/--disable-md5 instead ]) )
-
-AC_ARG_ENABLE(internal-md5,
-[  --enable-internal-md5           Use the internal MD5 support.])
-if test "x$enable_internal_md5" = "xyes"; then
-  if test "x$enable_md5" = "xno"; then
-    AC_MSG_ERROR(You can not specify both --enable-internal-md5 and --disable-md5)
-  else
-    AC_DEFINE(NETSNMP_USE_INTERNAL_MD5)
-  fi
-fi
-AC_ARG_WITH(internal-md5,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-internal-md5/--disable-internal-md5 instead ]) )
-
-AC_ARG_ENABLE(ipv6,
-[  --enable-ipv6                   Generate IPv6 ready version.],
-    [if test "x$enable_ipv6" = "xyes"; then
-      AC_DEFINE(NETSNMP_ENABLE_IPV6)
-    fi])
-AC_ARG_WITH(ipv6,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-ipv6/--disable-ipv6 instead ]) )
-
-AC_ARG_ENABLE(local-smux,
-[  --enable-local-smux             Restrict SMUX connections to localhost (by default).],
-    [if test "x$enable_local_smux" = "xyes"; then
-      AC_DEFINE(NETSNMP_ENABLE_LOCAL_SMUX)
-    fi])
-AC_ARG_WITH(local-smux,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-local-smux/--disable-local-smux instead ]) )
-
-AC_ARG_ENABLE(debugging,
-[  --enable-debugging              Outputs extra debugging information at all
-                                  times.  Normally, you should not enable this,
-                                  but instead use the -D flag of the commands,
-                                  which toggles debuging output at runtime.
-  --disable-debugging             Disallows debugging code to be built in.
-                                  This might provide some speed benefits.],
-    AC_DEFINE(NETSNMP_ALWAYS_DEBUG))
-AC_ARG_WITH(debugging,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-debugging/--disable-debugging instead ]) )
-
-AC_ARG_ENABLE(developer,
-[  --enable-developer              Turns on super-duper-extra-compile-warnings
-                                  when using gcc.],
-    developer=yes)
-AC_ARG_WITH(developer,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-developer/--disable-developer instead ]) )
-
-if test "x$enable_debugging" = "xno"; then
-    AC_DEFINE(NETSNMP_NO_DEBUGGING)
-fi
-
-AC_ARG_WITH(dmalloc,
-[  --with-dmalloc=PATH             Use dmalloc library (www.dmalloc.com)],
-    if test "x$withval" = "xyes"; then
-      LIBS="$LIBS -ldmalloc"
-      AC_DEFINE(HAVE_DMALLOC_H)
-    elif test -d "$withval"; then
-      AC_ADD_SEARCH_PATH($withval)
-      LIBS="$LIBS -ldmalloc"
-      AC_DEFINE(HAVE_DMALLOC_H)
-    fi
-)
-AC_SUBST(HAVE_DMALLOC_H)
-AC_ARG_ENABLE(dmalloc,,
-	AC_MSG_ERROR([ Invalid option. Use --with-dmalloc/--without-dmalloc instead ]) )
-
-AC_ARG_WITH(efence,
-[  --with-efence                   Look for and use libefence (malloc).],
-      use_efence="$withval")
-AC_ARG_ENABLE(efence,,
-	AC_MSG_ERROR([ Invalid option. Use --with-efence/--without-efence instead ]) )
-
-tryrsaref=no
-AC_ARG_WITH(rsaref,
-[  --with-rsaref=PATH              Look for librsaref in PATH/lib.],
-    if test "x$withval" = "xyes"; then
-      tryrsaref=yes
-    elif test "x$withval" = "xno"; then
-      tryrsaref=no
-    elif test -d "$withval"; then
-      AC_ADD_SEARCH_PATH($withval)
-      tryrsaref=yes
-    fi,
-)
-AC_ARG_ENABLE(rsaref,,
-	AC_MSG_ERROR([ Invalid option. Use --with-rsaref/--without-rsaref instead ]) )
-
-tryopenssl=defaultyes
-askedopenssl=no
-AC_ARG_WITH(openssl,
-[  --with-openssl=PATH             Look for openssl in PATH/lib.],
-    if test "x$withval" = "xyes"; then
-      tryopenssl=yes
-      askedopenssl=yes
-    elif test "x$withval" = "xno"; then
-      tryopenssl=no
-    elif test -d "$withval"; then
-      AC_ADD_SEARCH_PATH($withval)
-      tryopenssl=yes
-      askedopenssl=yes
-    fi,
-)
-if test "x$tryopenssl" = "xdefaultyes"; then
-      AC_ADD_SEARCH_PATH(/usr/local/ssl)
-      tryopenssl=yes
-fi
-AC_ARG_ENABLE(openssl,,
-	AC_MSG_ERROR([ Invalid option. Use --with-openssl/--without-openssl instead ]) )
-AC_ARG_WITH(ssl,,
-	AC_MSG_ERROR([ Invalid option. Use --with-openssl/--without-openssl instead ]) )
-AC_ARG_ENABLE(ssl,,
-	AC_MSG_ERROR([ Invalid option. Use --with-openssl/--without-openssl instead ]) )
-
-trykrb5=defaultyes
-askedkrb5=no
-AC_ARG_WITH(krb5,
-[  --with-krb5=PATH                Look for krb5 in PATH/lib.],
-    if test "x$withval" = "xyes"; then
-      trykrb5=yes
-      askedkrb5=yes
-      krb5path=undef
-    elif test "x$withval" = "xno"; then
-      trykrb5=no
-      krb5path=undef
-    elif test -d "$withval"; then
-      trykrb5=yes
-      askedkrb5=yes
-      krb5path=$withval
-    fi,
-)
-if test "x$trykrb5" = "xdefaultyes"; then
-      trykrb5=yes
-      krb5path=/usr/kerberos
-fi
-AC_ARG_ENABLE(krb5,,
-	AC_MSG_ERROR([ Invalid option. Use --with-krb5/--without-krb5 instead ]) )
-
-AC_ARG_WITH(rpm,
-[  --without-rpm                   Don't include support for the RPM package
-                                  management system when building the host MIB
-                                  module.])
-AC_ARG_ENABLE(rpm,,
-	AC_MSG_ERROR([ Invalid option. Use --with-rpm/--without-rpm instead ]) )
-
-AC_ARG_ENABLE(agentx-dom-sock-only,
-[  --enable-agentx-dom-sock-only   Disable UDP/TCP transports for agentx.],
-AC_DEFINE(NETSNMP_AGENTX_DOM_SOCK_ONLY))
-AC_ARG_WITH(agentx-dom-sock-only,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-agentx-dom-sock-only/--disable-agentx-dom-sock-only instead ]) )
-
-AC_ARG_ENABLE(snmptrapd-subagent,
-[  --disable-snmptrapd-subagent    Disable agentx subagent code in snmptrapd.])
-if test "x$enable_snmptrapd_subagent" = "xno"; then
-  AC_DEFINE(NETSNMP_SNMPTRAPD_DISABLE_AGENTX)
-fi
-AC_ARG_WITH(snmptrapd-subagent,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-snmptrapd-subagent/--disable-snmptrapd-subagent instead ]) )
-
-AC_ARG_WITH(opaque-special-types,
-[  --without-opaque-special-types  Don't use special opaque encodings.
-                                  SNMP normally cannot handle
-                                  floating numbers, nor large 64 bit
-                                  integers well.  By default, the
-                                  net-snmp package compiles in
-                                  support for these extra datatypes
-                                  (in a legal way)])
-AC_ARG_ENABLE(opaque-special-types,,
-	AC_MSG_ERROR([ Invalid option. Use --with-opaque-special-types/--without-opaque-special-types instead ]) )
-
-AC_ARG_WITH(mibdirs,
-[  --with-mibdirs="dir1:dir2:"   Default directories to look for mibs.
-                                  (Default: \$HOME/.snmp/mibs:DATADIR/snmp/mibs)],
-    [NETSNMP_DEFAULT_MIBDIRS="$with_mibdirs"
-    AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_MIBDIRS,"$with_mibdirs")])
-AC_ARG_ENABLE(mibdirs,,
-	AC_MSG_ERROR([ Invalid option. Use --with-mibdirs/--without-mibdirs instead ]) )
-
-AC_ARG_WITH(mibs,
-[  --with-mibs="item1:item2:"    Default mib IDs to read.
-                                  (The default list is
-                                  "SNMPv2-MIB:IF-MIB:IP-MIB:TCP-MIB:UDP-MIB"
-                                  with the addition of any mibs used
-                                  by the mib modules the agent is
-                                  configured with)],
-    NETSNMP_DEFAULT_MIBS="$with_mibs")
-# enable-mibs is valid too, but means something else
-
-AC_ARG_WITH(mibfiles,
-[  --with-mibfiles="file1:file2" Default mib files to load.
-                                  (Default:  none.  uses IDs above instead.)],
-    AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_MIBFILES,"$with_mibfiles"))
-AC_ARG_ENABLE(mibfiles,,
-	AC_MSG_ERROR([ Invalid option. Use --with-mibfiles/--without-mibfiles instead ]) )
-
-AC_ARG_ENABLE(mib-config-checking,
-[  --enable-mib-config-checking    Turns on extra checks during configuration
-                                  of mib modules. Any conflicts will cause
-                                  configure to abort (default is to issue a
-                                  warning and continue.)],
-    with_mib_cfg_checks="yes",with_mib_cfg_checks="no")
-AC_ARG_WITH(mib-config-checking,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-mib-config-checking/--disable-mib-config-checking instead ]) )
-
-AC_ARG_ENABLE(mib-config-debug,
-[  --enable-mib-config-debug       Turns on verbose output during mib module
-                                  configure processing.)],
-    with_mib_cfg_debug="yes",with_mib_cfg_debug="no")
-AC_ARG_WITH(mib-config-checking,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-mib-config-checking/--disable-mib-config-checking instead ]) )
-
-AC_ARG_ENABLE(mfd-rewrites,
-[  --enable-mfd-rewrites           Use new MFD rewrites of mib modules,
-                                  where available. (default is to use
-                                  original mib module code).])
-if test "x$enable_mfd_rewrites" = "xyes"; then
-   AC_DEFINE(NETSNMP_ENABLE_MFD_REWRITES)
-fi
-AC_ARG_WITH(mfd-rewrites,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-mfd-rewrites/--disable-mfd-rewrites instead ]) )
-
-askedpkcs=no
-AC_ARG_WITH(pkcs,
-[  --with-pkcs=PATH                Look for pkcs11 in PATH/lib.],
-    if test "x$withval" = "xyes"; then
-      askedpkcs=yes
-    elif test "x$withval" = "xno"; then
-      askedpkcs=no
-    elif test -d "$withval"; then
-      AC_ADD_SEARCH_PATH($withval)
-      askedpkcs=yes
-    fi,
-)
-AC_ARG_ENABLE(pkcs,,
-	AC_MSG_ERROR([ Invalid option. Use --with-pkcs/--without-pkcs instead ]) )
-
-AC_ARG_ENABLE(testing-code,
-[  --enable-testing-code           Enables some code sections that should 
-                                  only be used for testing of certain
-                                  SNMP functionalities.  This should *not* 
-                                  be turned on for production use.  Ever.],
-    AC_DEFINE(NETSNMP_ENABLE_TESTING_CODE))
-AC_ARG_WITH(testing-code,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-testing-code/--disable-testing-code instead ]) )
-
-AC_ARG_ENABLE(reentrant,
-[  --enable-reentrant              Enables locking functions that protect
-                                  library resources in some multi-threading
-                                  environments.  This does not guarantee
-                                  thread-safe operation.
-                                  Currently an experimental setting.],
-    with_res_locks="yes",with_res_locks="no")
-AC_ARG_WITH(reentrant,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-reentrant/--disable-reentrant instead ]) )
-
-AC_ARG_WITH(root-access,
-[
-Configuring the agent:
-  --without-root-access           The snmpd agent won't require root access to
-                                  run it.  The information it returns in the
-                                  mib-II tree may not be correct, however.])
-AC_ARG_ENABLE(root-access,,
-	AC_MSG_ERROR([ Invalid option. Use --with-root-access/--without-root-access instead ]) )
-
-AC_ARG_WITH(kmem-usage,
-[  --without-kmem-usage            Do not include any code related to the use
-                                  of kmem.])
-AC_ARG_ENABLE(kmem-usage,,
-	AC_MSG_ERROR([ Invalid option. Use --with-kmem-usage/--without-kmem-usage instead ]) )
-
-AC_ARG_WITH(dummy-values,
-[  --with-dummy-values             Provide 'placeholder' dummy values where
-                                  the necessary information is not available.
-                                  This is technically not compliant with the
-                                  SNMP specifications, but was how the agent
-                                  operated for versions < 4.0.])
-AC_ARG_ENABLE(dummy-values,,
-	AC_MSG_ERROR([ Invalid option. Use --with-dummy-values/--without-dummy-values instead ]) )
-
-AC_ARG_WITH(persistent-directory,
-[  --with-persistent-directory="directory"
-                                  Default directory for persistent data storage.],ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY="$with_persistent_directory")
-AC_ARG_ENABLE(persistent-directory,,
-	AC_MSG_ERROR([ Invalid option. Use --with-persistent-directory/--without-persistent-directory instead ]) )
-
-default_persistent_mask=077
-AC_ARG_WITH(persistent-mask,
-[  --with-persistent-mask="mask"  Default mask for persistent data storage.
-                                  (Default: 077)],[
-  if test "$withval" = yes; then
-    AC_MSG_ERROR([ Please provide a mask value ]);
-  fi
-  AC_MSG_RESULT(using default persistent mask $withval)
-  AC_DEFINE_UNQUOTED(NETSNMP_PERSISTENT_MASK,$withval)
-],[
-  AC_MSG_RESULT(using default persistent mask $default_persistent_mask)
-  AC_DEFINE_UNQUOTED(NETSNMP_PERSISTENT_MASK,$default_persistent_mask)
-])
-AC_ARG_ENABLE(persistent-mask,,
-	AC_MSG_ERROR([ Invalid option. Use --with-persistent-mask instead ]) )
-
-AC_ARG_WITH(copy_persistent_files,
-[  --with-copy-persistent-files="no" Don't copy persistent files
-                                     (or use "yes" to copy them).
-                                     (Default: yes)],
-    ac_cv_user_prompt_COPY_PERSISTENT_FILES="$with_copy_persistent_files")
-AC_ARG_ENABLE(copy_persistent_files,,
-	AC_MSG_ERROR([ Invalid option. Use --with-copy_persistent_files/--without-copy_persistent_files instead ]) )
-
-default_temp_file_pattern="/tmp/snmpdXXXXXX"
-AC_ARG_WITH(temp-file-pattern,
-[  --with-temp-file-pattern=PATTERN  Pattern of temporary files (Default: /tmp/snmpdXXXXXX)],[
-  if test "$withval" = yes; then
-    AC_MSG_ERROR([ Please provide a pattern ]);
-  fi
-  AC_MSG_RESULT(using temporary file pattern $withval)
-  AC_DEFINE_UNQUOTED(NETSNMP_TEMP_FILE_PATTERN,"$withval",[Pattern of temporary files])
-],[
-  AC_MSG_RESULT(using default temporary file pattern $default_temp_file_pattern)
-  AC_DEFINE_UNQUOTED(NETSNMP_TEMP_FILE_PATTERN,"$default_temp_file_pattern",[Pattern of temporary files])
-])
-AC_ARG_ENABLE(temp-file-pattern,,
-	AC_MSG_ERROR([ Invalid option. Use --with-temp-file-pattern instead ]) )
-
-default_agentx_socket="/var/agentx/master"
-AC_ARG_WITH(agentx-socket,
-[  --with-agentx-socket=FILE         AgentX socket (Default: /var/agentx/master as specified in RFC2741)],[
-  if test "$withval" = yes; then
-    AC_MSG_ERROR([ Please provide a full path ]);
-  fi
-  AC_MSG_RESULT(using AgentX socket $withval)
-  AC_DEFINE_UNQUOTED(NETSNMP_AGENTX_SOCKET,"$withval",[Unix domain socket for AgentX master-subagent communication])
-],[
-  AC_MSG_RESULT(using default AgentX socket $default_agentx_socket)
-  AC_DEFINE_UNQUOTED(NETSNMP_AGENTX_SOCKET,"$default_agentx_socket",[Unix domain socket for AgentX master-subagent communication])
-])
-AC_ARG_ENABLE(agentx-socket,,
-	AC_MSG_ERROR([ Invalid option. Use --with-agentx-socket instead ]) )
-
-AC_ARG_WITH(default-snmp-version,
-[  --with-default-snmp-version="3" Default version of SNMP to use.
-                                    (Default: 3)
-                                    Legal values: 1, 2 (for SNMPv2c) or 3.],
-    ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION="$with_default_snmp_version")
-AC_ARG_ENABLE(default-snmp-version,,
-	AC_MSG_ERROR([ Invalid option. Use --with-default-snmp-version/--without-default-snmp-version instead ]) )
-
-# we test this now and later as well.  we test it now so configure can die
-# early on with an error rather than waiting till the end of the script.
-if test "x$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" != "x"; then
-  if test "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" = "2c"; then
-    ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION="2"
-  fi
-  if test "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" != "1" -a "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" != "2" -a "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" != "3"; then
-    AC_MSG_ERROR(Illegal version number passed to --with-default-snmp-version)
-  fi
-fi
-
-AC_ARG_WITH(sys_contact,
-[  --with-sys-contact="who@where"  Default system contact.
-                                    (Default: LOGIN@DOMAINNAME)],
-    ac_cv_user_prompt_NETSNMP_SYS_CONTACT="$with_sys_contact")
-AC_ARG_ENABLE(sys_contact,,
-	AC_MSG_ERROR([ Invalid option. Use --with-sys-contact/--without-sys-contact instead ]) )
-
-AC_ARG_WITH(sys_location,
-[  --with-sys-location="location"  Default system location.
-                                    (Default: Unknown)],
-    ac_cv_user_prompt_NETSNMP_SYS_LOC="$with_sys_location")
-AC_ARG_ENABLE(sys_location,,
-	AC_MSG_ERROR([ Invalid option. Use --with-sys-location/--without-sys-location instead ]) )
-
-AC_ARG_WITH(logfile,
-[  --with-logfile="location"       Default log file location for snmpd.],
-    ac_cv_user_prompt_NETSNMP_LOGFILE="$with_logfile")
-AC_ARG_ENABLE(logfile,,
-	AC_MSG_ERROR([ Invalid option. Use --with-logfile/--without-logfile instead ]) )
-if test "$ac_cv_user_prompt_NETSNMP_LOGFILE" = "no"; then
-    ac_cv_user_prompt_NETSNMP_LOGFILE="none"
-fi
-
-AC_ARG_WITH(transports,
-[  --with-transports="t1 t2 ..."   Compile in the given SNMP transport
-                                    modules (space separated list).])
-AC_ARG_WITH(out_transports,
-[  --with-out-transports="t1 ..."  Exclude listed SNMP transports
-                                    (space separated list).
-
-  Available SNMP transport modules are:
-
-    UDP         support for SNMP over UDP/IP.
-                This transport is always compiled in.
-    UDPIPv6     support for SNMP over UDP/IPv6.
-                This transport is available for Linux, Solaris and
-                FreeBSD at least.
-                It is never compiled in by default.
-    TCPIPv6     support for SNMP over UDP/IPv6.
-                This transport is available for Linux, Solaris and
-                FreeBSD at least.
-                It is never compiled in by default.
-    TCP         support for SNMP over TCP/IP.
-                This transport is compiled in by default, but may be omitted.
-    Unix        support for SNMP over Unix domain protocols.
-                This transport is compiled in by default except on Win32
-                platforms, and may be omitted.
-    Callback    support for SNMP over an internal locally connected pair
-                of snmp_sessions.
-    AAL5PVC     support for SNMP over AAL5 PVCs.
-                This transport is presently only available for Linux,
-                is never compiled in by default and may be omitted.
-    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.
-])
-
-#
-# Catch common mistakes in transport options
-#
-AC_ARG_WITH(transport,,    AC_MSG_ERROR([ Invalid option. Use --with-transports/--without-transports instead ])     )
-AC_ARG_WITH(out-transport,,AC_MSG_ERROR([ Invalid option. Use --with-out-transports/--without-out-transports instead ]) )
-
-#
-# security modules
-#
-
-AC_ARG_WITH(security-modules,
-[  --with-security-modules="s1 s2 ..."   Compile in the given SNMP security
-                                    module services (space separated list).
-
-  Available SNMP security services:
-
-        usm                support for user based SNMP security
-                           (required and always compiled in)
-        ksm                support for kerberos based SNMP security
-])
-AC_ARG_ENABLE(security-modules,,
-	AC_MSG_ERROR([ Invalid option. Use --with-security-modules/--without-security-modules instead ]) )
-
-#
-# mib modules
-#
-
-AC_ARG_WITH(mib_modules,
-[  --with-mib-modules="item1 ..."  Compile with additional mib modules
-                                    (Space separated list).])
-AC_ARG_ENABLE(mib_modules,,
-	AC_MSG_ERROR([ Invalid option. Use --with-mib-modules/--without-mib-modules instead ]) )
-
-AC_ARG_WITH(out_mib_modules,
-[  --with-out-mib-modules="list"   Compile without these mib modules.
-
-  Default mib modules compiled into the agent (which can be removed):
-  
-    mibII                  support for the mib-II tree.
-    snmpv3mibs             support for the snmpv3 mib modules.
-    ucd_snmp               UCD-SNMP-MIB specific extensions.
-    agent_mibs             NET-SNMP-AGENT-MIB extensions
-    agentx                 AgentX support (see below)
-    notification           mibs supporting specification of trap destinations.
-    target                 Support for the SNMP WGs TARGET-MIB.
-    utilities              general agent configuration utilities.
-    disman/event           support for the DISMAN-EVENT-MIB
-                             (supports self monitoring and notification 
-                              delivery when error conditions are found)
-    disman/schedule        support for the DISMAN-SCHEDULE-MIB
-                             (trigger SET requests at specified times)
-    host                   host resources mib support.
-                             (only on major supported platforms)
-
-  Optional mib modules that can be built into the agent include:
-    smux                   smux support to allow subagents to attach to snmpd.
-    mibII/mta_sendmail     Sendmail statistics monitoring (MTA-MIB)
-    ucd-snmp/diskio        Table of io-devices and how much data they have
-                           read/written.  (only tested on Solaris, Linux)
-    disman/old-event-mib   previous implementation of the DISMAN-EVENT-MIB
-
-  Optional modules for specific platforms
-    Linux
-      ucd-snmp/lmSensors   hardware monitoring (LM-SENSORS-MIB)
-      ip-mib/ipv4InterfaceTable  (experimental)
-      ip-mib/ipv6InterfaceTable  (experimental)
-      tunnel               Linux TUNNEL-MIB support (ifTable extension)
-      mibII/interfaces     (old ifTable implementation)
-      misc/ipfwacc         accounting rules IP firewall information
-      ipfwchains/ipfwchains  firewall chains under ipfw
-                             (See agent/mibgroup/ipfwchains/README)
-      sctp-mib             support for the SCTP-MIB
-
-    Solaris
-      ucd-snmp/lmSensors   hardware monitoring (LM-SENSORS-MIB)
-      if-mib               IF-MIB rewrite (add --enable-mfd-rewrites)
-      tcp-mib              TCP-MIB rewrite (tcpConnectionTable and
-                             tcpListenerTable; add --enable-mfd-rewrites)
-      udp-mib              UDP-MIB rewrite (udpEndpointTable;
-                             add --enable-mfd-rewrites)
-
-    FreeBSD/OpenBSD
-      if-mib               IF-MIB rewrite (add --enable-mfd-rewrites)
-
-  AgentX support:
-    agentx/subagent        allows the agent to run as either a snmp agent
-                           or as an agentX sub-agent.
-    agentx/master          makes the agent run as an agentX master agent
-                           as well as a normal snmp agent.
-    agentx                 includes both agentx/master and agentx/client.
-
-  Optional modules for C coders to look at and/or include as extension examples:
-  
-    examples/ucdDemoPublic  SNMPv3 interoperability testing mib.
-    examples/example        example C code extension.])
-AC_ARG_ENABLE(out_mib_modules,,
-	AC_MSG_ERROR([ Invalid option. Use --with-out-mib-modules/--without-out-mib-modules instead ]) )
-
-
-#
-AC_ARG_WITH(enterprise-oid,
-[Enterprise OIDs:  (warning: this should be used with caution.)
-
-  --with-enterprise-oid              The enterprise number assigned to the
-                                     vendor by IANA.  See
-                                     http://www.iana.org/cgi-bin/enterprise.pl
-                                     to get one, though using the default is
-                                     probably the right choice is most cases.
-                                     (default 8072 = "enterprise.net-snmp")],[
-  if test "$withval" = yes; then
-    AC_MSG_ERROR([ Please provide a value for the enterprise number ]);
-  fi
-  AC_DEFINE_UNQUOTED(NETSNMP_ENTERPRISE_OID, $withval)
-  ent_oid="1,3,6,1,4,1,$withval"
-  AC_DEFINE_UNQUOTED(NETSNMP_ENTERPRISE_MIB, $ent_oid)
-  ent_dot_oid="1.3.6.1.4.1.$withval"
-  AC_DEFINE_UNQUOTED(NETSNMP_ENTERPRISE_DOT_MIB, $ent_dot_oid)
-  AC_MSG_RESULT(using enterprise number $withval)
-],[
-  AC_MSG_RESULT(using default "enterprise.net-snmp")
-])
-AC_ARG_ENABLE(enterprise-oid,,
-	AC_MSG_ERROR([ Invalid option. Use --with-enterprise-oid/--without-enterprise-oid instead ]) )
-
-AC_ARG_WITH(enterprise-sysoid,
-[
-  --with-enterprise-sysoid           The base OID for the sysObjectID
-                                     of the system group
-                                     (default .1.3.6.1.4.1.8072.3.2... = 
-                                      "netSnmpAgentOIDs...")],[
-  if test "$withval" = yes; then
-    AC_MSG_ERROR([ Please provide a base OID value ]);
-  fi
-  sys_oid=`echo "$withval" | sed 's/^\.//' | sed 's/\./\,/g'`
-  AC_DEFINE_UNQUOTED(NETSNMP_SYSTEM_MIB, $sys_oid)
-  sys_dot_oid=`echo "$withval" | sed 's/^\.//'`
-  AC_DEFINE_UNQUOTED(NETSNMP_SYSTEM_DOT_MIB, $sys_dot_oid)
-  sysoid_len=`echo "$withval" | sed 's/[^\.]//g' | awk -F\. '{ print NF }'`
-  AC_DEFINE_UNQUOTED(NETSNMP_SYSTEM_DOT_MIB_LENGTH, $sysoid_len)
-  AC_MSG_RESULT(using enterprise sysOID $withval ....)
-],[
-  AC_MSG_RESULT(using default enterprise sysOID "NET-SNMP-MIB::netSnmpAgentOIDs...")
-])
-AC_ARG_ENABLE(enterprise-sysoid,,
-	AC_MSG_ERROR([ Invalid option. Use --with-enterprise-sysoid/--without-enterprise-sysoid instead ]) )
-
-AC_ARG_WITH(enterprise-notification-oid,
-[
-  --with-enterprise-notification-oid The OID used for the root of
-				     enterprise specific notifications.
-                                     (default .1.3.6.1.4.1.8072.4 = 
-                                      "netSnmpNotificationPrefix")],[
-  if test "$withval" = yes; then
-    AC_MSG_ERROR([ Please provide a base OID value ]);
-  fi
-  notification_oid=`echo "$withval" | sed 's/^\.//' | sed 's/\./\,/g'`
-  AC_DEFINE_UNQUOTED(NETSNMP_NOTIFICATION_MIB, $notification_oid)
-  notification_dot_oid=`echo "$withval" | sed 's/^\.//'`
-  AC_DEFINE_UNQUOTED(NETSNMP_NOTIFICATION_DOT_MIB, $notification_dot_oid)
-  notificationoid_len=`echo "$withval" | sed 's/[^\.]//g' | awk -F\. '{ print NF }'`
-  AC_DEFINE_UNQUOTED(NETSNMP_NOTIFICATION_DOT_MIB_LENGTH, $notificationoid_len)
-  AC_MSG_RESULT(using enterprise notifications $withval)
-],[
-  AC_MSG_RESULT(using default notifications "NET-SNMP-MIB::netSnmpNotifications")
-])
-AC_ARG_ENABLE(enterprise-notification-oid,,
-	AC_MSG_ERROR([ Invalid option. Use --with-enterprise-notification-oid/--without-enterprise-notification-oid instead ]) )
-#
-# Catch common mistakes in configure options
-#
-AC_ARG_WITH(mib-module,,    AC_MSG_ERROR([ Invalid option1. Use --with-mib-modules instead ])     )
-AC_ARG_WITH(module,,
-	AC_MSG_ERROR([ Invalid option3. Use --with-mib-modules instead ]) )
-AC_ARG_WITH(modules,,
-	AC_MSG_ERROR([ Invalid option4. Use --with-mib-modules instead ]) )
-
-AC_ARG_WITH(out-mib-module,,AC_MSG_ERROR([ Invalid option5. Use --with-out-mib-modules instead ]) )
-AC_ARG_WITH(out-modules,,
-	AC_MSG_ERROR([ Invalid option7. Use --with-out-mib-modules instead ]) )
-AC_ARG_WITH(out-module,,
-	AC_MSG_ERROR([ Invalid option8. Use --with-out-mib-modules instead ]) )
-
-#
-# Perl specific
-#
-AC_ARG_WITH(perl-modules,
-[
-Perl:
-  --with-perl-modules[=ARGS]      Install the Perl modules along with the rest
-                                  of the net-snmp toolkit.  If ARGS is
-                                  specified, they're passed to the
-                                  Makefile.PL script.],[
-    if test "$withval" = "no"; then
-      install_perl="no"
-    else
-      install_perl="yes"
-      if test "$withval" != "yes"; then
-        PERLARGS="$withval"
-      fi
-    fi
-], install_perl="try")
-
-AC_ARG_ENABLE(embedded-perl,
-[  --disable-embedded-perl         Disable embedded Perl in the SNMP agent and
-                                  snmptrapd. [enabled by default]],
-    embed_perl="$enableval", embed_perl="try")
-
-AC_ARG_ENABLE(perl-cc-checks,
-[  --disable-perl-cc-checks        Disable configure checks for whether Perl's
-                                  C Compiler is compatible with ours when
-                                  embedded Perl is enabled.])
-
-# Common perl mistakes
-AC_ARG_ENABLE(perl-modules,,
-	AC_MSG_ERROR([ Invalid option. Use --with-perl-modules/--without-perl-modules instead ]) )
-AC_ARG_WITH(embedded-perl,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-embedded-perl/--disable-embedded-perl instead ]) )
-AC_ARG_WITH(perl-cc-checks,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-perl-cc-checks/--disable-perl-cc-checks instead ]) )
-
-
-#
-# Python specific
-#
-AC_ARG_WITH(python-modules,
-[
-Python:
-  --with-python-modules[=ARGS]    Install the python bindings along with the
-                                  rest of the net-snmp toolkit.  If ARGS is
-                                  specified, they're passed to the
-                                  setup.py script as arguments.],[
-    install_python="yes"
-    if test "$withval" = "yes"; then
-      PYTHONARGS=""
-    elif test "$withval" = "no"; then
-      PYTHONARGS=""
-      install_python="no"
-    else
-      PYTHONARGS="$withval"
-    fi
-], install_python="no")
-
-# other flags
-
-AC_ARG_WITH(server-send-buf,
-[
-Network Buffers:
-  --with-server-send-buf[=ARG]    Use ARG for the default UDP/TCP send buffer instead
-                                  of the OS buffer for server sockets that are
-                                  created (snmpd, snmptrapd).  
-                                  This default can be overridden in the runtime 
-                                  configuration files.
-                                  The ARG should be the size in bytes],[
-   if test "$withval" = yes; then
-    AC_MSG_ERROR([ Please provide a positive number for the server send buffer ])
-   fi
-   AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_SERVER_SEND_BUF, $withval)],
-   AC_MSG_RESULT([using OS default send buffer size for server sockets]) )
-AC_ARG_ENABLE(server-send-buf,,
-	AC_MSG_ERROR([ Invalid option. Use --with-server-send-buf/--without-server-send-buf instead ]) )
-
-AC_ARG_WITH(server-recv-buf,
-[  --with-server-recv-buf[=ARG]    Similar as previous option, but for receive buffer],[
-  if test "$withval" = yes; then
-    AC_MSG_ERROR([ Please provide a positive number for the server recv buffer ])
-  fi
-  AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_SERVER_RECV_BUF, $withval)],
-  AC_MSG_RESULT([using OS default recv buffer size for server sockets]) )
-AC_ARG_ENABLE(server-recv-buf,,
-	AC_MSG_ERROR([ Invalid option. Use --with-server-recv-buf/--without-server-recv-buf instead ]) )
-
-AC_ARG_WITH(client-send-buf,
-[  --with-client-send-buf[=ARG]    Similar as previous options, but for the
-                                  receive buffer of client sockets],[
-  if test "$withval" = yes; then
-    AC_MSG_ERROR([ Please provide a positive number for the client send buffer ])
-  fi
-  AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_CLIENT_SEND_BUF, $withval)],
-  AC_MSG_RESULT([using OS default send buffer size for client sockets]) )
-AC_ARG_ENABLE(client-send-buf,,
-	AC_MSG_ERROR([ Invalid option. Use --with-client-send-buf/--without-client-send-buf instead ]) )
-
-AC_ARG_WITH(client-recv-buf,
-[  --with-client-recv-buf[=ARG]    Similar as previous options, but for the send buffer],[
-  if test "$withval" = yes; then
-    AC_MSG_ERROR([ Please provide a positive number for the client recv buffer ])
-  fi
-  AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_CLIENT_RECV_BUF, $withval)],
-  AC_MSG_RESULT([using OS default recv buffer size for client sockets]) )
-AC_ARG_ENABLE(client-recv-buf,,
-	AC_MSG_ERROR([ Invalid option. Use --with-client-recv-buf/--without-client-recv-buf instead ]) )
-
-#
-# otherwise prompted information
-#
-AC_ARG_WITH(defaults,
-[
-Miscellaneous:
-  --with-defaults         Use defaults for prompted values.],
-    defaults="yes",defaults="no")
-AC_ARG_ENABLE(defaults,,
-	AC_MSG_ERROR([ Invalid option. Use --with-defaults/--without-defaults instead ]) )
-
-AC_ARG_ENABLE(ucd-snmp-compatibility,
-[  --enable-ucd-snmp-compatibility Install ucd-snmp look-alike headers and libs.
-])
-AC_ARG_WITH(ucd-snmp-compatibility,,
-	AC_MSG_ERROR([ Invalid option. Use --enable-ucd-snmp-compatibility/--disable-ucd-snmp-compatibility instead ]) )
-
-#
-# setup install targets
-#
-if test "x$enable_ucd_snmp_compatibility" = "xyes" ; then	
-  installucdheaders=installucdheaders
-  installucdlibs=installucdlibs
-  AC_MSG_CACHE_ADD(UCD-SNMP compatability:     enabled)
-fi
-AC_SUBST(installucdheaders)
-AC_SUBST(installucdlibs)
-
-# Only define if specifically chosen as --without (i.e., default to true). 
-if test "x$with_root_access" = "xno"; then
-  AC_DEFINE(NETSNMP_NO_ROOT_ACCESS)
-fi
-
-# Only define if specifically chosen as --without (i.e., default to true).
-if test "x$with_kmem_usage" = "xno"; then
-  AC_DEFINE(NETSNMP_NO_KMEM_USAGE)
-fi
-
-# Define unless specifically suppressed (i.e., option defaults to false). 
-if test "x$with_dummy_values" != "xyes"; then
-  AC_DEFINE(NETSNMP_NO_DUMMY_VALUES)
-fi
-
-# Only define if specifically chosen as --without (i.e., default to true). 
-if test "x$with_opaque_special_types" != "xno"; then
-  AC_DEFINE(NETSNMP_WITH_OPAQUE_SPECIAL_TYPES)
-fi
-
-
-# overflow problems with hpux's sh
-# taken from Perl's Configure script 
-
-AC_MSG_CHECKING([if I need to feed myself to ksh])
-if test -f /hp-ux -a -f /bin/ksh; then
-  if (PATH=.; alias -x) >/dev/null 2>&1; then
-    AC_MSG_RESULT(no)
-  else
-    AC_MSG_RESULT(yes)
-    if test "x$1" = "x"; then
-      exec /bin/ksh $0
-    else
-      exec /bin/ksh $0 "$@"
-    fi
-  fi
-else
-  AC_MSG_RESULT(no)
-fi
-
-if test "x$developer" != "xno" -a -f $srcdir/remove-files; then
-  # turn on the developer flag when taken from a SVN checkout (not a release)
-  developer="yes"
-fi
-
-AC_LANG([C])
-AC_PROG_CC
-AC_PROG_CPP
-LINKCC=${LINKCC-"$CC"}
-AC_SUBST(LINKCC)
-AC_AIX
-
-# system check
-AC_CANONICAL_TARGET
-changequote(, )
-PARTIALTARGETOS=`echo $target_os | sed 's/[-._].*//'`
-changequote([, ])
-
-# platform-specific compiler flags
-if test "x$PARTIALTARGETOS" = "xmingw32msvc"; then
-	CFLAGS="$CFLAGS -Dmingw32"
-fi
-
-# platform-specific linker flags
-case $target_os in
-    aix4.2*|aix4.3*|aix5*|aix6*)
-        AC_MSG_CHECKING([what linker flags to add to enable runtime linking on AIX])
-        for ld_flag in $LDFLAGS; do
-            if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-                netsnmp_aix_runtimelinking_flags_ok=yes
-                break
-            fi
-        done
-        if test "X$netsnmp_aix_runtimelinking_flags_ok" != "Xyes"; then
-	    if test "x$GCC" = "xyes"; then
-	        netsnmp_aix_ldflags="-Wl,-brtl"
-	    else
-                netsnmp_aix_ldflags="-brtl"
-	    fi
-            LDFLAGS="$netsnmp_aix_ldflags $LDFLAGS"
-	    AC_MSG_RESULT($netsnmp_aix_ldflags)
-	else
-	    AC_MSG_RESULT([none])
-	fi
-	;;
-    darwin8*|darwin9*)
-        AC_MSG_CHECKING([whether darwin ld might need -flat_namespace])
-	if test -z "$MACOSX_DEPLOYMENT_TARGET"; then
-		LDFLAGS="-flat_namespace $LDFLAGS"
-		AC_MSG_RESULT([yes])
-	else
-		AC_MSG_RESULT([no])
-	fi
-	;;
-    *)
-        ;;
-esac
-
-# libtool stuff for shared/static libraries.
-AC_LIBTOOL_DLOPEN
-AC_LIBTOOL_WIN32_DLL
-AC_PROG_LIBTOOL
-AC_SUBST(LIBTOOL_DEPS)
-
-# Checks for programs.
-AC_PROG_INSTALL
-AC_PROG_LN_S
-AC_PROG_MAKE_SET
-AC_PROG_EGREP
-AC_PATH_PROG([PSPROG],ps)
-AC_PATH_PROG([PERLPROG],perl)
-AC_PATH_PROG([PYTHONPROG],python)
-AC_CHECK_PROGS(WHOAMI, whoami logname, whoami)
-AC_CHECK_PROGS(SED,sed gsed)
-AC_CHECK_PROGS(FIND,find)
-AC_PATH_PROG(AUTOCONF, autoconf)
-AC_PATH_PROG(AUTOHEADER, autoheader)
-if test "x$ac_cv_prog_AUTOCONF" = "x"; then
-	AUTOCONF=":"
-	AC_SUBST(AUTOCONF)
-fi
-if test "x$ac_cv_prog_AUTOHEADER" = "x"; then
-	AUTOHEADER=":"
-	AC_SUBST(AUTOHEADER)
-fi
-
-AC_PATH_PROG([UNAMEPROG],uname)
-AC_DEFINE_UNQUOTED(UNAMEPROG,"$UNAMEPROG")
-
-AC_C_CONST
-AC_C_INLINE
-
-
-# get version number.
-AC_MSG_CHECKING([for net-snmp version number])
-VERSION=$PACKAGE_VERSION
-
-# create the release version number....  I'm not sure this is used
-# anywhere any longer.
-_release_version=`echo $VERSION | sed 's/";.*//;s/.*"//;s/pre/0./;'`
-changequote(, )
-RELEASEVERSION=`echo $_release_version | sed 's/^\([0-9]\)\.\([0-9]\)/\1:\2:0/'`
-changequote([, ])
-
-AC_SUBST(VERSION)
-AC_SUBST(RELEASEVERSION)
-AC_MSG_RESULT($VERSION)
-AC_MSG_CACHE_ADD(Net-SNMP Version:           $VERSION)
-
-# super type checking
-# WWWXXX
-AC_MSG_CHECKING([for developer gcc flags])
-if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
-  DEVFLAGS="-Wall -Winline -Wstrict-prototypes -Wwrite-strings -Wcast-qual -Wno-char-subscripts"
-else
-  DEVFLAGS=""
-fi
-AC_MSG_RESULT($DEVFLAGS)
-AC_SUBST(DEVFLAGS)
-
-#
-# hacks for building outside of the source directory
-#
-# 1) make sure build include paths are before source
-# 2) check for GNU make to use vpath instead of VPATH
-#
-NON_GNU_VPATH="VPATH ="
-GNU_vpath="#vpath"
-#
-# define include paths relative to top_srcdir
-# tweak includes if we're building outside of the source dir
-if test "x$srcdir" = "x."; then
-TOP_INCLUDES=SRC_TOP_INCLUDES
-SNMPLIB_INCLUDES=SRC_SNMPLIB_INCLUDES
-AGENT_INCLUDES=SRC_AGENT_INCLUDES
-HELPER_INCLUDES=SRC_HELPER_INCLUDES
-MIBGROUP_INCLUDES=SRC_MIBGROUP_INCLUDES
-else
-TOP_INCLUDES=BLD_TOP_INCLUDES
-SNMPLIB_INCLUDES=BLD_SNMPLIB_INCLUDES
-AGENT_INCLUDES=BLD_AGENT_INCLUDES
-HELPER_INCLUDES=BLD_HELPER_INCLUDES
-MIBGROUP_INCLUDES=BLD_MIBGROUP_INCLUDES
-make -v -f /dev/null 2>/dev/null | grep GNU >/dev/null
-have_gnu_make=$?
-if test $have_gnu_make -eq 0 ; then
-    NON_GNU_VPATH="#VPATH ="
-    GNU_vpath="vpath"
-fi
-fi
-AC_SUBST(TOP_INCLUDES)
-AC_SUBST(SNMPLIB_INCLUDES)
-AC_SUBST(AGENT_INCLUDES)
-AC_SUBST(HELPER_INCLUDES)
-AC_SUBST(MIBGROUP_INCLUDES)
-AC_SUBST(GNU_vpath)
-AC_SUBST(NON_GNU_VPATH)
-
-
-#
-# Check whether we can use -Ux -Dx=x with the expected behaviour
-#
-AC_MSG_CHECKING([whether to un-define target system token (before redefining)])
-OLD_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="-U$PARTIALTARGETOS -D$PARTIALTARGETOS=$PARTIALTARGETOS"
-
-AC_EGREP_CPP(yes,[[
-#ifdef $PARTIALTARGETOS
-yes
-#endif
-]],
-[PARTIALTARGETFLAGS="-U$PARTIALTARGETOS -D$PARTIALTARGETOS=$PARTIALTARGETOS"
- AC_MSG_RESULT([yes])],
-[PARTIALTARGETFLAGS="-D$PARTIALTARGETOS=$PARTIALTARGETOS"
- AC_MSG_RESULT([no])])
-CFLAGS="$CFLAGS $PARTIALTARGETFLAGS"
-CPPFLAGS="$OLD_CPPFLAGS"
-AC_MSG_CACHE_ADD(Building for:               $PARTIALTARGETOS)
-
-
-#
-# check for special includes and pick one
-#
-
-AC_MSG_CHECKING([for system include file])
-changequote(, )
-filebase=$target_os
-# ignore binary format indication
-filebase=`echo $filebase | sed 's/elf//'`
-filebase=`echo $filebase | sed 's/aout//'`
-filebase=`echo $filebase | sed 's/ecoff//'`
-filebase=`echo $filebase | sed 's/coff//'`
-while test "x$filebase" != "x$last" -a ! -f $srcdir/include/net-snmp/system/$filebase.h
-do
-    last=$filebase
-    filebase=`echo $filebase | sed 's/[-._][^-._]*$//'`
-    if test "x$filebase" = "x$last"; then
-	filebase=`echo $filebase | sed 's/[0-9]*$//'`
-    fi
-done
-
-if test "x$filebase" = "x$last"; then
-    filebase="generic"
-fi
-ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE="net-snmp/system/$filebase.h"
-
-changequote([, ])
-AC_MSG_RESULT($ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE)
-AC_DEFINE_UNQUOTED(NETSNMP_SYSTEM_INCLUDE_FILE, "$ac_cv_NETSNMP_SYSTEM_INCLUDE_FILE")
-
-# second part, the CPU type.
-
-AC_MSG_CHECKING([for machine-type include file])
-changequote(, )
-filebase=$target_cpu
-while test "x$filebase" != "x$last" -a ! -f $srcdir/include/net-snmp/machine/$filebase.h
-do
-    last=$filebase
-    filebase=`echo $filebase | sed 's/[-._][^-._]*$//'`
-done
-
-if test "x$filebase" = "x$last"; then
-    filebase="generic"
-fi
-ac_cv_NETSNMP_MACHINE_INCLUDE_FILE="net-snmp/machine/$filebase.h"
-changequote([, ])
-AC_MSG_RESULT([$ac_cv_NETSNMP_MACHINE_INCLUDE_FILE])
-
-AC_DEFINE_UNQUOTED(NETSNMP_MACHINE_INCLUDE_FILE, "$ac_cv_NETSNMP_MACHINE_INCLUDE_FILE")
-
-AC_PATH_PROG([CCPATH],$CC)
-# watch out for /usr/ucb/cc on solaris, it doesn't work with this package.
-case $target_os in
-    bsdi*)
-	if test "x$CCPATH" = "x/usr/ucb/cc" -o "x$CCPATH" = "x/usr/bin/cc"; then
-	    AC_MSG_ERROR([
-
-*** The BSDI /usr/ucb/cc compiler does not work with this package.  
-*** Please run configure with --with-cc=gcc
-])
-	fi
-    ;;
-    solaris*)
-	if test "x$CCPATH" = "x/usr/ucb/cc"; then
-	    AC_MSG_ERROR([
-
-*** The solaris /usr/ucb/cc compiler does not work with this package.  
-*** Please put a different compiler in your path first or run
-*** configure with --with-cc=XX, where XX is the compiler you want to use.
-])
-	fi
-    ;;
-esac
-    
-AC_MSG_CHECKING([for additional cpp flags])
-# gcc extra CPPFLAGS
-if test "x$GCC" = "xyes" -a "x$CPP" = "x$CC -E"; then
-  # extra cpp flags for gnu c compiler to allow .in file extensions.
-  EXTRACPPFLAGS="-x c"
-else
-  EXTRACPPFLAGS=""
-fi
-
-# Solaris extra cpp flags.
-if test "x$GCC" != "xyes"; then
-  case $target_os in
-    solaris*) EXTRACPPFLAGS="$EXTRACPPFLAGS -Xs" ;;
-  esac
-fi
-
-AC_SUBST(EXTRACPPFLAGS)
-AC_MSG_RESULT($EXTRACPPFLAGS)
-
-#   Compiler flags:
-#
-
-# The Net-SNMP source code is not strict-aliasing safe, so add
-# -fno-strict-aliasing to $CFLAGS if the compiler supports it.
-AC_MSG_CHECKING([whether the compiler supports -fno-strict-aliasing])
-netsnmp_save_CFLAGS="$CFLAGS"
-CFLAGS="-fno-strict-aliasing $CFLAGS"
-AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [AC_MSG_RESULT([yes])], [
-  AC_MSG_RESULT([no])
-  CFLAGS="$netsnmp_save_CFLAGS"
-])
-
-# Prefixes must begin with "/" or [A-Z] followed by colon.
-
-if test "x$prefix" = "xNONE"; then
-  prefix=/usr/local
-fi
-
-fch=`echo $prefix | sed 's/\(.\).*/\1/'`
-if test "x$fch" != "x/" ; then
-   sch=`echo $prefix | sed 's/.\(.\).*/\1/'`
-   if test "x$sch" != "x:" ; then
-      prefix=`pwd`/$prefix
-      echo "adjusting prefix to $prefix"
-   fi
-fi
-
-if test "x$exec_prefix" = "xNONE"; then
-  exec_prefix=$prefix
-fi
-
-fch=`echo $exec_prefix | sed 's/\(.\).*/\1/'`
-if test "x$fch" != "x/" ; then
-   sch=`echo $exec_prefix | sed 's/.\(.\).*/\1/'`
-   if test "x$sch" != "x:" ; then
-      exec_prefix=`pwd`/$exec_prefix
-      echo "adjusting exec_prefix to $exec_prefix"
-   fi
-fi
-
-# Set SNMPLIBPATH & SNMPSHAREPATH
-
-SNMPLIBPATH=""
-tmpset="$libdir/snmp"
-while test "x$tmpset" != "x$SNMPLIBPATH"; do
-  SNMPLIBPATH="$tmpset"
-  eval tmpset="$tmpset"
-done
-AC_DEFINE_UNQUOTED(SNMPLIBPATH,"$SNMPLIBPATH")
-AC_SUBST(SNMPLIBPATH)
-AC_DEFINE_UNQUOTED(SNMPDLMODPATH,"$SNMPLIBPATH/dlmod")
-
-SNMPSHAREPATH=""
-tmpset="$datadir/snmp"
-while test "x$tmpset" != "x$SNMPSHAREPATH"; do
-  SNMPSHAREPATH="$tmpset"
-  eval tmpset="$tmpset"
-done
-AC_DEFINE_UNQUOTED(SNMPSHAREPATH,"$SNMPSHAREPATH")
-AC_SUBST(SNMPSHAREPATH)
-
-if test "x$NETSNMP_DEFAULT_MIBDIRS" = "x"; then
-  NETSNMP_DEFAULT_MIBDIRS="\$HOME/.snmp/mibs:$SNMPSHAREPATH/mibs"
-  if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc" -o "x$PARTIALTARGETOS" = "xcygwin"; then
-    NETSNMP_DEFAULT_MIBDIRS=`echo "$NETSNMP_DEFAULT_MIBDIRS" | $SED 's/:/;/g'`
-  fi
-  AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_MIBDIRS,"$NETSNMP_DEFAULT_MIBDIRS")
-fi
-AC_SUBST(NETSNMP_DEFAULT_MIBDIRS)
-
-SNMPCONFPATH=""
-tmpset="$sysconfdir/snmp"
-while test "x$tmpset" != "x$SNMPCONFPATH"; do
-  SNMPCONFPATH="$tmpset"
-  eval tmpset="$tmpset"
-done
-AC_DEFINE_UNQUOTED(SNMPCONFPATH,"$SNMPCONFPATH")
-AC_SUBST(SNMPCONFPATH)
-
-AC_CHECK_SIZEOF(short)
-AC_CHECK_SIZEOF(int)
-AC_CHECK_SIZEOF(long)
-AC_CHECK_SIZEOF(long long)
-AC_CHECK_SIZEOF(intmax_t)
-AC_CHECK_TYPES([int8_t,  uint8_t,  u_int8_t])
-AC_CHECK_TYPES([int16_t, uint16_t, u_int16_t])
-AC_CHECK_TYPES([int32_t, uint32_t, u_int32_t])
-AC_CHECK_TYPES([int64_t, uint64_t, u_int64_t])
-AC_CHECK_TYPES([intmax_t, uintmax_t])
-AC_CHECK_TYPES([off64_t])
-AC_CHECK_TYPES([uintptr_t, intptr_t])
-
-# solaris specific type
-AC_CHECK_TYPES([Counter64],,,[#include <inet/mib2.h>])
-
-# guess IPv6 stack type.
-if test "x$enable_ipv6" = "xyes"; then
-	v6type=unknown
-	v6lib=none
-	v6trylibc=no
-
-	AC_MSG_CHECKING([[ipv6 stack type]])
-	for i in v6d toshiba kame inria zeta linux-glibc linux-inet6 generic; do
-		case $i in
-		v6d)
-			AC_EGREP_CPP(yes, [
-#include </usr/local/v6/include/sys/types.h>
-#ifdef __V6D__
-yes
-#endif],
-				[v6type=$i; v6lib=v6;
-				v6libdir=/usr/local/v6/lib;
-				CFLAGS="-I/usr/local/v6/include $CFLAGS"])
-			;;
-		toshiba)
-			AC_EGREP_CPP(yes, [
-#include <sys/param.h>
-#ifdef _TOSHIBA_INET6
-yes
-#endif],
-				[v6type=$i; v6lib=inet6;
-				v6libdir=/usr/local/v6/lib;
-				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"])
-			;;
-		kame)
-			AC_EGREP_CPP(yes, [
-#include <netinet/in.h>
-#ifdef __KAME__
-yes
-#endif],
-				[v6type=$i; v6lib=inet6;
-				v6libdir=/usr/local/v6/lib;
-				v6trylibc=yes;
-				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"])
-			;;
-		inria)
-			AC_EGREP_CPP(yes, [
-#include <netinet/in.h>
-#ifdef IPV6_INRIA_VERSION
-yes
-#endif],
-				[v6type=$i;
-				v6lib=dummy;
-				v6libdir=none;
-				v6trylibc=yes;
-				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"])
-			;;
-		zeta)
-			AC_EGREP_CPP(yes, [
-#include <sys/param.h>
-#ifdef _ZETA_MINAMI_INET6
-A
-yes
-#endif],
-				[v6type=$i; v6lib=inet6;
-				v6libdir=/usr/local/v6/lib;
-				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"])
-			;;
-		linux-glibc)
-			AC_EGREP_CPP(yes, [
-#include <features.h>
-#if defined(__GLIBC__) && ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC_ > 2))
-yes
-#endif],
-				[v6type=$i;
-				v6lib=dummy;
-				v6libdir=none;
-				v6trylibc=yes;
-				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"])
-			;;
-		linux-inet6)
-			if test -d /usr/inet6; then
-				v6type=$i
-				v6lib=inet6
-				v6libdir=/usr/inet6/lib
-				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"
-			fi
-			;;
-		generic)
-                        AC_MSG_RESULT([[postponed]])
-			AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-], sockaddr_in6, sin6_addr, no)
-	                AC_MSG_CHECKING([[ipv6 stack type]])
-                        if test "x$ac_cv_struct_sockaddr_in6_has_sin6_addr" = "xyes"; then
-				v6type=$i
-				v6lib=dummy
-				v6libdir=none
-				v6trylibc=yes
-				CFLAGS="-DNETSNMP_ENABLE_IPV6 $CFLAGS"
-                        fi
-			;;
-		esac
-		if test "$v6type" != "unknown"; then
-			break
-		fi
-	done
-
-	if test "$v6lib" != "none"; then
-		if test -d $v6libdir -a -f $v6libdir/lib$v6lib.a; then
-			LIBS="-L$v6libdir -l$v6lib $LIBS"
-			enable_ipv6="yes"
-			AC_MSG_RESULT(["$v6type, $enable_ipv6, using lib$v6lib"])
-		elif test "$v6trylibc" = "yes"; then
-			enable_ipv6="yes"
-			AC_MSG_RESULT(["$v6type, $enable_ipv6, using libc"])
-		else
-			AC_MSG_ERROR(no IPv6 library lib$v6lib.a found.)
-			exit 1
-		fi
-	else
-		enable_ipv6="no"
-		AC_MSG_RESULT(["$v6type, $enable_ipv6"])
-	fi
-fi
-
-#
-# Maybe add library extensions for thread mutex locking.
-#
-
-if test "x$with_res_locks" = "xyes"; then
-  AC_DEFINE(NETSNMP_REENTRANT)
-
-    case $target_os in
-
-    aix*)
-	CC_RUNTIME_ARG="$CC_RUNTIME_ARG -lpthreads"
-	;;
-
-    *)
-	;;
-
-    esac
-fi
-
-#
-# Add platform-specific source files.
-#
-AC_MSG_CHECKING([for platform-specific source])
-other_src_list=""
-other_objs_list=""
-other_lobjs_list=""
-other_agentobjs=""
-other_lagentobjs=""
-other_trapd_objects=""
-
-# Win32 service code
-if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then
-  other_src_list="$other_src_list winservice.c winservicerc.rc"
-  other_objs_list="$other_objs_list winservice.o winservicerc.o"
-  other_lobjs_list="$other_lobjs_list winservice.lo winservicerc.lo"
-  other_agentobjs="../snmplib/winservicerc.o"
-  other_lagentobjs="../snmplib/winservicerc.lo"
-  other_trapd_objects="../snmplib/winservicerc.o" 
-fi
-  
-# Win32 pipes
-if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc" -o "x$PARTIALTARGETOS" = "xcygwin"; then
-  other_src_list="$other_src_list winpipe.c"
-  other_objs_list="$other_objs_list winpipe.o"
-  other_lobjs_list="$other_lobjs_list winpipe.lo"
-fi
-
-AC_SUBST(other_src_list)
-AC_SUBST(other_objs_list)
-AC_SUBST(other_lobjs_list)
-AC_SUBST(other_agentobjs)
-AC_SUBST(other_lagentobjs)
-AC_SUBST(other_trapd_objects)
-
-AC_MSG_RESULT([$other_src_list $other_objs_list $other_lobjs_list])
-AC_MSG_RESULT([$other_agentobjs $other_lagentobjs $other_trapd_objects])
-  
-#
-# Do transport module processing.
-#
-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=""
-transport_callback_disabled=""
-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" = "xcygwin"; then
-  transport_default_list="UDP TCP Callback"
-elif test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then 
-  transport_default_list="UDP TCP Callback"
-else
-  transport_default_list="UDP TCP 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.)
-    elif test "x$i" = "xCallback"; then
-      echo
-      transport_callback_disabled="yes"
-    fi
-  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" = "xcygwin"; then
-        echo
-        AC_MSG_ERROR(Unix domain protocol support unavailable for this platform)
-      elif 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'`
-
-## win32 platforms require inet_ntop etc.
-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
-if test ! -d include/net-snmp; then
-  mkdir include/net-snmp
-fi
-if test ! -d include/net-snmp/agent; then
-  mkdir include/net-snmp/agent
-fi
-if test ! -d include/net-snmp/library; then
-  mkdir include/net-snmp/library
-fi
-if test ! -d include/ucd-snmp; then
-  mkdir include/ucd-snmp
-fi
-
-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
-
-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
-
-AC_SUBST(security_src_list)
-AC_SUBST(security_hdr_list)
-AC_SUBST(security_obj_list) 	 
-AC_SUBST(security_lobj_list)
-AC_MSG_RESULT($new_with_security)
-AC_MSG_CACHE_ADD(SNMPv3 Security Modules:    $new_with_security)
-
-#
-# Handle the special case of KSM to see which crypto API we support
-#
-
-ac_cv_NETSNMP_USE_KERBEROS_MIT=no
-rebuilt_new_with_security=
-already_checked_krb5=no
-
-for sec in $new_with_security
-do
-  if test "x$sec" = "xksm" -a "xyes" = "x$already_checked_krb5"; then
-    continue
-  fi
-  already_checked_krb5=yes
-
-  if test x$sec != xksm; then
-    rebuilt_new_with_security="$rebuilt_new_with_security $sec"
-  else
-    if test no = $trykrb5; then
-      AC_MSG_NOTICE([configured not to use krb5. disabling ksm])
-      continue
-    fi
-
-    AC_PATH_PROG([krb5_config],krb5-config,[no],$krb5path/bin:$PATH)
-
-    if test no != $krb5_config; then
-      CPPFLAGS="$CPPFLAGS `$krb5_config --cflags`"
-      LIBS="$LIBS `$krb5_config --libs`"
-    elif test $krb5path != no; then
-      AC_ADD_SEARCH_PATH($krb5path)
-    else
-      AC_ADD_SEARCH_PATH(/usr/kerberos)
-    fi
-
-    AC_MSG_CHECKING([for krb5])
-    AC_CACHE_VAL(ac_cv_have_krb5,
-      AC_CHECK_LIB(krb5, krb5_init_context,
-	ac_cv_have_krb5=yes, ac_cv_have_krb5=no
-      )
-    )
-
-    if test $ac_cv_have_krb5 = no; then
-      if test "x$askedkrb5" = "xyes"; then
-	AC_MSG_ERROR(Asked to use krb5 but I couldn't find it.)
-      fi
-      AC_MSG_RESULT(no. disabling ksm)
-      continue
-    fi
-      
-    AC_MSG_RESULT(yes)
-    rebuilt_new_with_security="$rebuilt_new_with_security ksm"
-
-    AC_MSG_CHECKING([[for heimdal]])
-    AC_CACHE_VAL(ac_cv_heimdal,
-    [AC_TRY_COMPILE(
-      [#include <krb5.h>],
-      [const char *v = heimdal_version;],
-      ac_cv_heimdal=yes,
-      ac_cv_heimdal=no
-    )])
-    AC_MSG_RESULT($ac_cv_heimdal)
-    if test $ac_cv_heimdal = yes; then
-      AC_DEFINE(NETSNMP_USE_KERBEROS_HEIMDAL)
-      if test no = $krb5_config; then
-	LIBS="$LIBS -lkrb5 -lasn1 -lcom_err -lroken"
-      fi
-    elif test no = $krb5_config; then
-	LIBS="$LIBS -lkrb5 -lcom_err"
-    fi
-
-    AC_MSG_CHECKING([to see which crypto API we need to use])
-    AC_CHECK_FUNC(krb5_c_encrypt,[
-    AC_CACHE_VAL(ac_cv_NETSNMP_USE_KERBEROS_MIT,
-      AC_CHECK_LIB(k5crypto, krb5_init_context,
-	ac_cv_NETSNMP_USE_KERBEROS_MIT=yes, ac_cv_MIT_NEW_CRYPTo=no
-      )
-    )
-
-    if test yes = $ac_cv_NETSNMP_USE_KERBEROS_MIT; then
-      AC_MSG_RESULT(new MIT crypto API)
-      AC_DEFINE(NETSNMP_USE_KERBEROS_MIT)
-      if test no = $krb5_config; then
-	LIBS="$LIBS -lk5crypto"
-      fi
-    else
-      AC_MSG_RESULT(old MIT crypto API)])
-    fi
-  fi
-done
-
-new_with_security=$rebuilt_new_with_security
-
-#
-# generate empty files
-#
-# Create include file list for snmp_vars.h to use.
-mibdir="agent/mibgroup"
-if test ! -d agent; then
-  mkdir agent
-fi
-if test ! -d agent/mibgroup; then
-  mkdir agent/mibgroup
-fi
-j="$mibdir/mib_module_includes.h  $mibdir/agent_module_includes.h \
-   $mibdir/mib_module_inits.h     $mibdir/agent_module_inits.h    \
-   $mibdir/mib_module_shutdown.h  $mibdir/agent_module_shutdown.h \
-   include/net-snmp/agent/mib_module_config.h                     \
-                   include/net-snmp/agent/agent_module_config.h   \
-   $mibdir/mib_module_dot_conf.h  $mibdir/agent_module_dot_conf.h"
-
-for i in $j; do
-  rm -f $i
-  echo "/* This file is automatically generated by configure.  Do not modify by hand. */" > $i
-done
-
-#
-# Do hairy agent module processing.
-#
-AC_MSG_CHECKING([for and configuring mib modules to use])
-
-# set up the CPP command
-MODULECPP="$CPP $PARTIALTARGETFLAGS -I${srcdir}/include -I${srcdir}/agent/mibgroup"
-if test "x$enable_mfd_rewrites" = "xyes"; then
-  MODULECPP="$MODULECPP -DNETSNMP_ENABLE_MFD_REWRITES"
-fi
-
-module_list=""
-mib_module_list=""
-agent_module_list=""
-new_with_mib_modules=`echo $with_mib_modules | sed 's/,/ /g;'`
-new_with_out_mib_modules=`echo $with_out_mib_modules | sed 's/,/ /g;'`
-
-# set up initial module list
-new_module_list="$new_with_mib_modules default_modules"
-
-# minor modifications
-if test "x$enable_agent" = "xno"; then
-   # minimum mib module list for snmptrapd
-   new_module_list="mibII/vacm_vars mibII/vacm_conf utilities/execute $new_with_mib_modules"
-   default_mibs=SNMPv2-MIB:IF-MIB:IP-MIB:TCP-MIB:UDP-MIB
-   default_mibs_install=" "
-elif test "x$mini_agent" = "xyes"; then
-   # define the mini agent flag to reduce our load list from default_mibs.h
-   MODULECPP="$MODULECPP -DNETSNMP_MINI_AGENT"
-fi
-
-test_modules="$new_module_list"
-new_module_list=""
-
-# remove modules that were explicitly excluded
-for i in $test_modules
- do
-  if echo " $new_with_out_mib_modules " | grep " $i " > /dev/null; then
-    mib_cfg_msg="mib module '$i' is both included and excluded."
-    AC_MSG_WARN([mib module conflict])
-    if test "x$with_mib_cfg_checks" = "xyes"; then
-      AC_MSG_WARN([user with    : $with_mib_modules])
-      AC_MSG_WARN([final with   : $new_module_list])
-      AC_MSG_WARN([user without : $with_out_mib_modules])
-      AC_MSG_WARN([final without: $new_with_out_mib_modules])
-      AC_MSG_ERROR([$mib_cfg_msg])
-    else
-      AC_MSG_WARN([$mib_cfg_msg It will be excluded])
-      AC_MSG_CACHE_ADD([*** MIB Module warning *** $mib_cfg_msg It has been excluded.])
-    fi
-  else
-    new_module_list="$new_module_list $i"
-  fi
-done
-
-AC_MSG_RESULT([$new_module_list.])
-
-#---------------------
-# loop over module list
-#
-all_warnings=""
-if test "x$with_mib_cfg_debug" = "xyes"; then
-   module_debug=1
-else
-   module_debug=0
-fi
-first_pass=1
-output_to=normal
-
-if test ! -d mk ; then
-  mkdir mk
-fi
-
-
-module_rules=mk/module_rules.mk
-echo "# contents below built automatically by configure; do not edit by hand" > $module_rules
-
-#
-# make file sub-pieces
-#
-for i in module_list_deps mib_module_list_deps agent_module_list_deps ; do
-  eval "$i=mk/${i}.mk"
-  echo "# contents below built automatically by configure; do not edit by hand" > mk/${i}.mk
-done
-
-#
-# variable settings sub-pieces
-#
-for i in module_list_code mib_module_list_code agent_module_list_code module_list mib_module_list agent_module_list ; do
-  eval "$i=mk/${i}.mk"
-  echo "# contents below built automatically by configure; do not edit by hand" > mk/${i}.mk
-  echo "$i= \\" >> mk/${i}.mk
-done
-
-echo $ECHO_N "echo " $ECHO_C > mk/MODULE_LIST.mk
-MODULE_LIST=mk/MODULE_LIST.mk
-
-
-#---------------------
-# until we have an empty module list...
-#   (modules may add new modules, and until all dependencies are done...)
-#
-while test "x$new_module_list" != "x"; do
-  AC_MSG_MODULE_DBG(-e,"\n****************************************************************")
-  AC_MSG_MODULE_DBG("nml: $new_module_list")
-
-  #---------------------
-  # loop over all the modules in the current list
-  #
-  for j in $new_module_list
-    do
-
-    #---------------------
-    # figure out which sub-blocks to build in parts
-    if echo "$j" | grep "=" ; then
-       # build a shared object file
-       # format: sofilename=module1:module2
-       # XXX: currently doesn't do this
-       dl_name=`echo $j | sed 's/=.*//'`
-       dl_names="$dl_names $dl_name"
-       dl_objects=`echo $j | sed 's/.*=//'`
-       module_sublist=`echo $dl_objects | sed 's/:/ /g'`
-       saved_sublist=""
-       saved_sublist_code=""
-       output_to=separate
-
-       # create output files
-       # these actually get nuked later
-       output_inits="agent/mibgroup/${dl_name}-dll.c"
-       output_hdrs="agent/mibgroup/${dl_name}-hdrs.h"
-    else
-       # not a special token invocation
-       module_sublist=$j
-       output_to=normal
-       output_t=
-    fi
-
-    while test "x$module_sublist" != "x" ; do
-
-    #---------------------
-    # loop over all the modules in the sub list
-    for i in $module_sublist
-    do
-
-    AC_MSG_MODULE_DBG(-e "\n================================================================")
-    AC_MSG_MODULE_DBG("testing $i")
-    need_header=0
-
-    #---------------------
-    # build a pseudo include header that includes current config and
-    # system symbols:
-    AC_LANG_CONFTEST(AC_LANG_SOURCE([[
-#include NETSNMP_SYSTEM_INCLUDE_FILE
-#include "$srcdir/$mibdir/$i.h"]]))
-    mv conftest.$ac_ext module_tmp_header.h
-
-    #---------------------
-    # macro: config_belongs_in(ARG)
-    #   ARG: either
-    #     - mib_module   => libnetsnmpmibs   (default)
-    #     - agent_module => libnetsnmpagent
-    #
-    module_type=mib_module
-    if test -f $srcdir/$mibdir/$i.h; then
-      changequote(, )
-      module_type=`$MODULECPP module_tmp_header.h | grep config_belongs_in | sed 's@.*config_belongs_in(\([^)]*\)).*@\1@'`
-      changequote([, ])
-    fi
-    if test "x$module_type" = "x" ; then
-      module_type=mib_module
-    fi
-    if test "x$output_to" = "xnormal" ; then
-     	output_inits="$mibdir/${module_type}_inits.h"
-     	output_hdrs="$mibdir/${module_type}_includes.h"
-    fi
-
-    #--------------------
-    # check for duplicates within the dll system. 
-    #   - if found in a dll, then remove from the dll and add to main
-    dblfix=""
-    for dltest in $dl_names ; do
-      eval mod_files="\"\$dl_${dltest}_files\""
-      if echo " $mod_files " | grep " $i " > /dev/null; then
-        # some dll module has already seen this, unload it from that list
-        # and include it in the core (again)
-        AC_MSG_MODULE_DBG("removing $i from $dltest")
-        mod_files=`echo " $mod_files " | sed "s@ $i @@"`
-        dblfix="__XXX__"
-        eval "dl_${dltest}_files=\"$mod_files\""
-
-        module_list="$module_list $i"
-	echo "read_config.lo: mibgroup/$i.h" >> $module_list_deps
-	if test $module_type = "agent_module" ; then
- 	    echo "snmp_vars.lo: mibgroup/$i.h" >> $agent_module_list_deps
-        else
- 	    echo "mib_modules.lo: mibgroup/$i.h" >> $mib_module_list_deps
-        fi
-        eval ${module_type}_list="\"\$${module_type}_list $i\""
-	echo "	$i \\" >> $module_list_code
-	echo $ECHO_N " $i" $ECHO_C >> $MODULE_LIST
-        eval tmpfilevar=\$`echo ${module_type}_list_code`
-        echo "	$i \\" >> $tmpfilevar
-
-	# XXX: add this to the main init list; this is possible not
-	# quite in the right spot any longer but we're stuck with it.
-	# Adding it back to the original ordered spot would be a
-	# nightmare.  Ok, we're already in nightmare code so that
-	# wolud have to be a night-terror.
-        mnm=`echo $i | sed 's/.*\///;s/\.c$//;'`
-	output_inits_tmp="$mibdir/${module_type}_inits.h"
-	echo "  if (should_init(\"$mnm\")) init_$mnm();" >> $output_inits_tmp
-        # XXX: even worse, we loose whether the header is needed or not.
-     	output_hdrs_tmp="$mibdir/${module_type}_includes.h"
-        echo '#include "'"mibgroup/$i.h"'"' >> $output_hdrs_tmp
-      fi
-    done
-
-    #---------------------
-    # make sure module wasn't explicitly excluded, or already added
-    #
-    if test "x$dblfix" != "x" ; then
-      AC_MSG_MODULE_DBG("$i was duplicated -- putting into main")
-    elif echo " $new_with_out_mib_modules " | grep " $i " > /dev/null; then
-      AC_MSG_MODULE_DBG("$i was excluded")
-    elif echo " $module_list " | grep " $i " > /dev/null; then
-      AC_MSG_MODULE_DBG("$i already tested")
-    else
-
-      #---------------------
-      # process modules header, checking for config_ pseudo-macros
-      #
-
-      #---------------------
-      # does the header file for the module exist?
-      #   macros are only processed if it does
-      if test -f $srcdir/$mibdir/$i.h; then
-        new_list=""
-
-        #---------------------
-      	# macro: config_exclude(modules)
-      	#  - lists conflicts with other modules
-      	#    - EG: new MIB implementations exclude old and vice-versa
-      	#
-        # check if $i has any conflicts
-        #
-	new_list_excl=`$MODULECPP module_tmp_header.h | grep config_exclude | sed 's/.*config_exclude(\(.*\)).*/\1/'`
-	if test "x$new_list_excl" != "x"; then
-          AC_MSG_MODULE_DBG("$i excludes $new_list_excl")
-	  for j in $new_list_excl
-	    do
-	    if echo " $module_list $new_mib_module_list $new_list_two " | grep " $j " > /dev/null; then
-              mib_cfg_msg="mib module '$i' excludes module '$j' but another module requires it"
-              AC_MSG_WARN([mib module error])
-              if test "x$with_mib_cfg_checks" = "xyes"; then
-	        AC_MSG_ERROR([$mib_cfg_msg])
-              else
-	        AC_MSG_WARN([$mib_cfg_msg])
-                AC_MSG_CACHE_ADD([*** MIB Module warning *** $mib_cfg_msg])
-              fi
-	    else
-	      new_with_out_mib_modules="$j $new_with_out_mib_modules"
-              AC_MSG_MODULE_DBG("$j added to excluded list")
-	    fi
-	  done
-	fi
-
-        #---------------------
-      	# macro: config_arch_require(ARCH,modules)
-      	#  - lists modules required for a given ARCH
-        #
-        # check if $i has any architecture specific requirements
-        #
-        changequote(, )
-        new_list_arch=`$MODULECPP module_tmp_header.h | grep config_arch_require | sed 's/.*config_arch_require( *\([^ ]*\) *, *\([^ ]*\) *).*/\1-xarchx-\2/'`
-        changequote([, ])
-	if test "x$new_list_arch" != "x"; then
-          for j in $new_list_arch
-	    do
-	    archtest=`echo $j | sed 's/-xarchx-.*//'`
-	    # target_os may have been changed to a #define of 1...
-	    if test "x$archtest" = "x1" -o "x$target_os" = "x$archtest" -o "x$PARTIALTARGETOS" = "x$archtest"; then
-	      new_list="$new_list `echo $j | sed 's/.*-xarchx-//'`"
-              AC_MSG_MODULE_DBG(" $i required adding arch files: `echo $j | sed 's/.*-xarchx-//'`")
-	    fi
-	  done
-	fi
-        AC_MSG_MODULE_DBG(" $i required arch files: $new_list")
-
-        #---------------------
-      	# macro: config_require(modules)
-      	#  - lists modules required for this module
-        #
-        # check if $i has any other required modules
-        #
-	new_list="$new_list `$MODULECPP module_tmp_header.h | grep config_require | sed 's/.*config_require(\(.*\)).*/\1/'`"
-        AC_MSG_MODULE_DBG(" $i will test: $new_list")
-	if test "x$new_list" != "x"; then
-	  for j in $new_list
-	    do
-            AC_MSG_MODULE_DBG(-n " $i wants to add $j: ")
-	    if test ! -f $srcdir/$mibdir/$j.h -a ! -f $srcdir/$mibdir/$j.c; then
-              AC_MSG_WARN([mib module error])
-	      AC_MSG_ERROR([mib module "$i" requires module "$j" but $j.h or $j.c could not be found in $srcdir/$mibdir])
-	    elif echo " $new_with_out_mib_modules " | grep " $j " > /dev/null; then
-	      if test "x$i" != "xdefault_modules" ; then
-                mib_cfg_msg="mib module '$i' requires module '$j' but someone told me to compile without it"
-                AC_MSG_WARN([mib module error])
-                if test "x$with_mib_cfg_checks" = "xyes"; then
-                  AC_MSG_ERROR([$mib_cfg_msg])
-                else
-                  AC_MSG_WARN([$mib_cfg_msg])
-                  AC_MSG_CACHE_ADD([*** MIB Module warning *** $mib_cfg_msg])
-                fi
-#	    elif echo " $module_list $new_list_two $new_module_list " | grep " $j " > /dev/null; then
-#              AC_MSG_MODULE_DBG("  $j included previously")
-              fi
-	    else
-	      new_list_two="$new_list_two $j"
-              AC_MSG_MODULE_DBG("  $j included")
-	    fi
-	  done
-	fi
-
-        #---------------------
-      	# macro: config_add_mib(SOME-MIB)
-      	#  - lists MIBs to be added to the default to-load list.
-        #
-        # check if $i has any mibs to add
-        #
-	new_mibs=`$MODULECPP module_tmp_header.h | grep config_add_mib | sed 's/.*config_add_mib(\(.*\)).*/\1/'`
-	if test "x$new_mibs" != "x"; then
-	    for j in $new_mibs
-		do
-		if test "x`echo :$default_mibs: | grep :$j:`" = "x"; then
-		    default_mibs="$default_mibs:$j"
-		fi
-		if test -f $srcdir/mibs/$j.txt; then
-		    if echo $default_mibs_install | grep " $j " > /dev/null; then
-			    :
-		    else
-			    default_mibs_install="$default_mibs_install $j.txt"
-		    fi
-		fi
-	    done
-	fi # new mibs
-
-        #-------------------
-        # add the current module to the list of stuff to compile, etc.
-        #
-        # add $i to module list
-        #
-        AC_MSG_MODULE_DBG("  $i added (based on $i.h)")
-        module_list="$module_list $i"
-        eval ${module_type}_list="\"\$${module_type}_list $i\""
-
-	echo "read_config.lo: mibgroup/$i.h" >> $module_list_deps
-	if test $module_type = "agent_module" ; then
- 	    echo "snmp_vars.lo: mibgroup/$i.h" >> $agent_module_list_deps
-        else
- 	    echo "mib_modules.lo: mibgroup/$i.h" >> $mib_module_list_deps
-        fi
-
-        #-------------------
-        # check for unsupported config_load_mib
-        #
-        if $MODULECPP module_tmp_header.h | grep config_load_mib > /dev/null 2>&1; then
-          AC_MSG_WARN([mib module error])
-      	  AC_MSG_WARN([mib module "$i" uses the "config_load_mib" directive, which is no longer supported.  It probably won't work.])
-        fi # grep config_load_mib
-
-        #-------------------
-        # check for config_parse_dot_conf
-        #  (generally not used any longer; old auto-load a .conf token)
-        #
-        changequote(, )
-        $MODULECPP module_tmp_header.h | grep config_parse_dot_conf | sed 's@.*config_parse_dot_conf(\([^)]*\), *\([^),]*\), *\([^),]*\), *\([^),]*\)).*@register_config_handler("snmpd",\1, \2, \3, \4);@' >> $mibdir/mib_module_dot_conf.h
-	changequote([, ])
-
-        #---------------------
-      	# macro: config_error(error text)
-      	#  - used to signal a configuration error from a module
-        #
-        # check if $i has any errors, or warnings
-        #
-	error=`$MODULECPP module_tmp_header.h | grep config_error | sed 's/.*config_error(\(.*\)).*/\1/'`
-	if test "x$error" != "x"; then
-          echo
-          echo
-          AC_MSG_ERROR([$i: *** $error ***])
-        fi
-
-        #---------------------
-      	# macro: config_warning(warning text)
-      	#  - used to signal a configuration "warning" to be printed to the user
-        #
-	warning=`$MODULECPP module_tmp_header.h | grep config_warning | sed 's/.*config_warning(\(.*\)).*/\1/'`
-	if test "x$warning" != "x"; then
-          all_warnings="$all_warnings $warning
-"
-        fi
-
-      #---------------------
-      # Check for a .c file if the .h didn't exist
-      #
-      elif test -f $srcdir/$mibdir/$i.c; then
-        if echo " $module_list $new_list_two $new_module_list " | grep " $i      " > /dev/null; then
-           AC_MSG_MODULE_DBG("  $i already included")
-        else
-           AC_MSG_MODULE_DBG("  $i added (based on $i.c)")
-	   module_list="$module_list $i"
-	   mib_module_list="$mib_module_list $i"
-        fi
-
-      #---------------------
-      # No .h or .c = error!  (typo?)
-      #
-      else # no $i.h or $i.c
-        AC_MSG_WARN([mib module error])
-	AC_MSG_ERROR([module files $i.h or $i.c could not be found in $srcdir/$mibdir])
-      fi # no $i.h
-
-      #-------------------
-      # check for init/shutdown routines too
-      #
-      has_c_code=no
-      if test -f $srcdir/$mibdir/$i.c; then
-        if test "x$output_to" = "xnormal" ; then
-	  echo "	$i \\" >> $module_list_code
-  	  echo $ECHO_N " $i" $ECHO_C >> $MODULE_LIST
-          eval tmpfilevar=\$`echo ${module_type}_list_code`
-          echo "	$i \\" >> $tmpfilevar
-        else
-          eval "dl_${dl_name}_files=\"\$dl_${dl_name}_files $i\""
-          saved_sublist_code="$saved_sublist_code $i"
-        fi
-        mnm=`echo $i | sed 's/.*\///;s/\.c$//;'`
-        AC_MSG_MODULE_DBG(-e "\nchecking '$srcdir/$mibdir/$i.c' ($mnm/`basename $i`) C file for init/shutdown")
-        if test "x$mnm" != "x`basename $i`"; then
-           AC_MSG_WARN([mib module error])
-	   AC_MSG_ERROR([conflicting names: $mnm != `basename $i`])
-        fi
-        temp_init=`grep init_$mnm $srcdir/$mibdir/$i.c | grep -v _init_$mnm`
-	if test "x$temp_init" != "x"; then
-            AC_MSG_MODULE_DBG(-e "adding init_$mnm() to list")
-            need_header=1
-	    echo "  if (should_init(\"$mnm\")) init_$mnm();" >> $output_inits
-	fi
-	grep shutdown_$mnm $srcdir/$mibdir/$i.c > /dev/null
-        if test $? -eq 0 ; then
-            if test $module_debug -eq 1; then
-              echo -e "\nadding shutdown_$mnm() to list"
-            fi
-            need_header=1
-	    echo "  if (should_init(\"$mnm\")) shutdown_$mnm();" >> $mibdir/${module_type}_shutdown.h
-	fi
-      fi # test -f $srcdir/$mibdir/$i.c
-
-      #-------------------
-      # if there is a shutdown/init list,
-      #
-      if test $need_header -eq 1 ; then
-         echo '#include "'"mibgroup/$i.h"'"' >> $output_hdrs
-      else
-         echo '/*#include "'"mibgroup/$i.h"'"*/' >> $output_hdrs
-      fi
-
-      #-------------------
-      # check for output directory (for building outside of source tree
-      #
-      changequote(, )
-      if test "x`echo $i | sed 's/\///g;'`" != "x$i"; then
-	mnd=`echo $i | sed 's/\/[^/]*$//;'`
-	if test ! -d ./$mibdir/$mnd; then
-	    module_directories="$module_directories ./$mibdir/$mnd"
-	fi
-      fi # module directory test
-      changequote([, ])
-
-      #-------------------
-      # define USING_*_MODULE
-      #
-      changequote(, )
-      sym="`echo ${i} | sed 's/[^a-zA-Z0-9_]/_/g' | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`"
-      changequote([, ])
-      echo "/* Define if compiling with the ${i} module files.  */" >> include/net-snmp/agent/${module_type}_config.h
-      echo "#define USING_${sym}_MODULE 1" >> include/net-snmp/agent/${module_type}_config.h
-      echo " " >> include/net-snmp/agent/${module_type}_config.h
-
-      #-------------------
-      echo $ECHO_N " $i$ECHO_C"
-    fi #
-    done # for i in $module_sublist
-
-    if test "$output_to" = "separate" ; then
-      if test "x$new_list_two" = "x" ; then
-        # no new sub-modules to add to the current target
-        output_to="normal"
-
-        dllcleans="$saved_sublist_o $dllcleans"
-        output_inits=""
-        module_sublist=""
-      else
-        # a module had sub-modules required; keep goin'
-        saved_sublist="$saved_sublist $module_sublist"
-        module_sublist="$new_list_two"
-        new_list_two=""
-      fi
-    else
-      module_sublist=""
-    fi
-
-    done # while module_sublist
-  done # for j in $new_module_list
-
-  # remember the top level modules for later reporting
-  if test $first_pass = 1 ; then
-    # remember this list for later reporting
-    top_level_modules="$new_module_list => $new_list_two"
-    first_pass=0
-  fi
-  #-------------------
-  # if $i added new modules vis config_*,
-  # check those modules for requirements too
-  #
-  # transfer the new module to check list to the normal variable
-  #
-  if test "x$new_list_two" ; then
-    output_to=normal
-  fi
-  new_module_list="$new_list_two"
-  new_list_two=""
-done # while test "x$new_module_list" != "x"; do
-echo ""
-
-#--------------------
-# construct the dll code files and make rules.  This can't be done
-# until now because duplicate use of a module means it gets removed
-# from the dll and put into the main agent.
-#
-for i in $dl_names ; do
-  eval mod_files="\"\$dl_${i}_files\""
-  echo "components in the $i dll: $mod_files"
-
-  output_inits="agent/mibgroup/${i}-dll.c"
-  output_hdrs="agent/mibgroup/${i}-hdrs.h"
-
-  AC_MSG_MODULE_DBG("creating dll file: $output_inits")
-  for ofile in $output_inits $output_hdrs ; do
-    if test -f $ofile ; then
-      if grep "this file created automatically by configure" $ofile > /dev/null 2>&1 ; then
-  	:
-      else
-  	AC_MSG_ERROR([$ofile already existed ; can't build dll object $i])
-      fi
-    fi
-    cat > $ofile << EOFIF
-/* xDo not edit; this file created automatically by configure */
-EOFIF
-  done
-
-  cat >> $output_inits << EOFOC
-#include <net-snmp/net-snmp-config.h>
-#include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/agent/net-snmp-agent-includes.h>
-#include "${i}-hdrs.h"
-void
-init_$i(void) {
-EOFOC
-
-  # create the .so rule
-  saved_sublist_o=`echo "$mod_files " | sed 's/^ *//g;s/  */.o /g;'`
-
-  # create the rules for each object
-  for j in $mod_files ; do
-    cat >> $module_rules << EOFR
-$j.o: $j.c
-	\$(CC) -c \$(CPPFLAGS) \$(CFLAGS) \$(DLFLAGS) -o \$@ \$<
-
-EOFR
-    mnm=`echo $j | sed 's/.*\///;s/\.c$//;'`
-    echo "  if (should_init(\"$mnm\")) init_$mnm();" >> $output_inits
-  done
-
-  # create the rule for the .so and wrapper code
-  cat >> $module_rules << EOFM
-${i}-dll.o: ${i}-dll.c
-	\$(CC) -c \$(CPPFLAGS) \$(CFLAGS) \$(DLFLAGS) -o \$@ \$<
-
-${i}.so: $saved_sublist_o ${i}-dll.o
-	\$(CC) \$(CPPFLAGS) \$(CFLAGS) \$(DLFLAGS) -o \$@ $saved_sublist_o ${i}-dll.o
-
-EOFM
-        cat >> $output_inits << EOFOCFIN
-}
-EOFOCFIN
-
-done
-
-# cleanup
-rm -f module_tmp_header.h
-
-#-------------------
-# build module lists for Makefiles
-#
-changequote(, )
-
-for i in module_list_o module_list_c module_list_lo mib_module_list_o mib_module_list_c mib_module_list_lo mibgroup_list_o mibgroup_list_lo agent_module_list_o agent_module_list_c agent_module_list_lo agentgroup_list_o agentgroup_list_lo ; do
-  eval "$i=mk/${i}.mk"
-done
-
-sed 's/^module_list_code/module_list_o/;s/\([^=]\)  *\\/\1.o \\/g'  < $module_list_code  > $module_list_o
-sed 's/^module_list_code/module_list_c/;s/\([^=]\)  *\\/\1.c \\/g'  < $module_list_code  > $module_list_c
-sed 's/^module_list_code/module_list_lo/;s/\([^=]\)  *\\/\1.lo \\/g' < $module_list_code  > $module_list_lo
-
-sed 's/^mib_module_list_code/mib_module_list_o/;s/\([^=]\)  *\\/\1.o \\/g'  < $mib_module_list_code  > $mib_module_list_o
-sed 's/^mib_module_list_code/mib_module_list_c/;s/\([^=]\)  *\\/\1.c \\/g'  < $mib_module_list_code  > $mib_module_list_c
-sed 's/^mib_module_list_code/mib_module_list_lo/;s/\([^=]\)  *\\/\1.lo \\/g' < $mib_module_list_code  > $mib_module_list_lo
-
-sed 's/^mib_module_list_o/mibgroup_list_o/;s@\([^ 	]*\)\.o@mibgroup/\1.o@g' < $mib_module_list_o > $mibgroup_list_o
-sed 's/^mib_module_list_lo/mibgroup_list_lo/;s@\([^ 	]*\)\.lo@mibgroup/\1.lo@g' < $mib_module_list_lo > $mibgroup_list_lo
-
-sed 's/^agent_module_list_code/agent_module_list_o/;s/\([^=]\)  *\\/\1.o \\/g'  < $agent_module_list_code  > $agent_module_list_o
-sed 's/^agent_module_list_code/agent_module_list_c/;s/\([^=]\)  *\\/\1.c \\/g'  < $agent_module_list_code  > $agent_module_list_c
-sed 's/^agent_module_list_code/agent_module_list_lo/;s/\([^=]\)  *\\/\1.lo \\/g' < $agent_module_list_code  > $agent_module_list_lo
-
-sed 's/^agent_module_list_o/agentgroup_list_o/;s@\([^ 	]*\)\.o@mibgroup/\1.o@g' < $agent_module_list_o > $agentgroup_list_o
-sed 's/^agent_module_list_lo/agentgroup_list_lo/;s@\([^ 	]*\)\.lo@mibgroup/\1.lo@g' < $agent_module_list_lo > $agentgroup_list_lo
-
-for i in module_list_o module_list_c module_list_lo mib_module_list_o mib_module_list_c mib_module_list_lo mibgroup_list_o mibgroup_list_lo agent_module_list_o agent_module_list_c agent_module_list_lo agentgroup_list_o agentgroup_list_lo ; do
-	# hpux make (at least) doesn't like a trailing \ on the last
-	# line even when the next line contains nothing but
-	# whitespace.
-	lasttoken=`tail -1 mk/$i.mk | awk '{print $1}'`
-	sed "s#$lasttoken \\\\#$lasttoken#" < mk/$i.mk > mk/$i.mk.tmp
-	mv mk/$i.mk.tmp mk/$i.mk
-
-	# add a closing comment
-	echo "" >> mk/$i.mk
-	echo "# end configure generated code" >> mk/$i.mk
-done
-
-changequote([, ])
-
-if test $module_debug -eq 1; then
-   echo -e "\nFinal module list: $module_list_code"
-   exit
-fi
-if test "x$with_mib_cfg_checks" = "xyes"; then
-  AC_MSG_CACHE_ADD([Agent Module list: $module_list_code])
-fi
-AC_SUBST_FILE(MODULE_LIST)
-AC_SUBST_FILE(module_list_c)
-AC_SUBST_FILE(module_list_o)
-AC_SUBST_FILE(module_list_lo)
-AC_SUBST_FILE(mib_module_list_c)
-AC_SUBST_FILE(mib_module_list_o)
-AC_SUBST_FILE(mib_module_list_lo)
-AC_SUBST_FILE(agent_module_list_c)
-AC_SUBST_FILE(agent_module_list_o)
-AC_SUBST_FILE(agent_module_list_lo)
-AC_SUBST_FILE(mibgroup_list_o)
-AC_SUBST_FILE(mibgroup_list_lo)
-AC_SUBST_FILE(agentgroup_list_o)
-AC_SUBST_FILE(agentgroup_list_lo)
-AC_SUBST_FILE(agent_module_list)
-
-#AC_SUBST_FILE(mib_module_list)
-#AC_SUBST(module_list)
-AC_SUBST(default_mibs_install)
-AC_SUBST(dllcleans)
-AC_SUBST_FILE(module_rules)
-AC_SUBST_FILE(module_list_deps)
-AC_SUBST_FILE(mib_module_list_deps)
-AC_SUBST_FILE(agent_module_list_deps)
-
-AC_MSG_RESULT(.)
-
-if test $module_debug -eq 1; then
-AC_MSG_CACHE_ADD(Agent MIB code:            $module_list)
-fi
-AC_MSG_CACHE_ADD(Agent MIB code:            $top_level_modules)
-
-# end hairy agent module processing
-
-AC_MSG_CHECKING([if directories need to be created])
-for i in $module_directories; do
-  $srcdir/mkinstalldirs $i
-done
-AC_MSG_RESULT(.)
-
-#-------------------
-# Define default mibs
-#
-AC_MSG_CHECKING([default mib files to read])
-if test "x$NETSNMP_DEFAULT_MIBS" = "x"; then
-  NETSNMP_DEFAULT_MIBS="$default_mibs"
-fi
-if test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc" -o "x$PARTIALTARGETOS" = "xcygwin"; then
-  # mingw32 and cygwin use ';' as the environment variable separator char
-  ENV_SEPARATOR=";"
-  NETSNMP_DEFAULT_MIBS=`echo "$NETSNMP_DEFAULT_MIBS" | sed 's/:/;/g'`
-  default_mibs=`echo "$default_mibs" | sed 's/:/;/g'`
-else
-  ENV_SEPARATOR=":"
-fi
-AC_SUBST(ENV_SEPARATOR)
-AC_DEFINE_UNQUOTED(NETSNMP_DEFAULT_MIBS,"$NETSNMP_DEFAULT_MIBS")
-AC_SUBST(NETSNMP_DEFAULT_MIBS)
-AC_MSG_RESULT($NETSNMP_DEFAULT_MIBS)
-
-AC_MSG_CHECKING([whether we have to build PIC code])
-echo " $module_list " | grep " ucd-snmp/dlmod " >/dev/null
-if test $? -eq 0 ; then
-        LIB_CFLAGS="$LIB_CFLAGS $SHLIB_CFLAGS"
-	AC_MSG_RESULT(yes)
-else
-	DLLIBS=""
-	AC_MSG_RESULT(no)
-fi
-
-#
-# Check for kernel location
-#
-
-AC_CACHE_CHECK(for location of system kernel,ac_cv_KERNEL_LOC,
-[ac_cv_KERNEL_LOC="unknown"
-# First determine if test expects a -f or a -c (character device (SYSV))
-
-if test -c /dev/null; then
-  CFLAG="-c"
-elif test -f /dev/null; then
-  CFLAG="-f"
-else
-  # fall back
-  CFLAG="-f"
-fi
-for i in /vmunix /hp-ux /stand/vmunix /dev/ksyms /kernel/unix /kernel/genunix /netbsd /unix /kernel /bsd /mach_kernel /boot/kernel/kernel
-  do
-  if test -f $i -o $CFLAG $i; then
-    ac_cv_KERNEL_LOC="$i"
-    break;
-  fi
-done
-if test $i = "unknown"; then
-  AC_MSG_WARN([Can't find system kernel...  Setting to /vmunix])
-  ac_cv_KERNEL_LOC="/vmunix"
-fi
-])
-
-AC_DEFINE_UNQUOTED(KERNEL_LOC,"$ac_cv_KERNEL_LOC")
-
-#
-# Check for mount table location
-#
-
-AC_CACHE_CHECK(for mount table location,ac_cv_ETC_MNTTAB,
-[ac_cv_ETC_MNTTAB="unknown"
-for i in /etc/mnttab /etc/mtab /etc/filesystems /dev/mnttab
-  do
-  if test -f $i -o -c $i; then
-    ac_cv_ETC_MNTTAB="$i"
-    break;
-  fi
-done
-])
-
-AC_DEFINE_UNQUOTED(ETC_MNTTAB,"$ac_cv_ETC_MNTTAB")
-
-# Check for /dev/dmem or /dev/drum location
-AC_CACHE_CHECK(for location of swap device,ac_cv_DMEM_LOC,
-[
-# First determine if test expects a -f or a -c (character device (SYSV))
-
-if test -f /dev/kmem; then
-  CTEST="test -f"
-elif test -c /dev/kmem; then
-  CTEST="test -c"
-else
-  # fall back
-  CTEST="test -f"
-fi
-
-if $CTEST /dev/dmem; then
-  ac_cv_DMEM_LOC="/dev/dmem"
-elif $CTEST /dev/drum; then
-  ac_cv_DMEM_LOC="/dev/drum"
-else
-  ac_cv_DMEM_LOC="none"
-fi
-])
-
-if test "x$ac_cv_DMEM_LOC" != "xnone"; then
-  AC_DEFINE_UNQUOTED(DMEM_LOC,"$ac_cv_DMEM_LOC")
-fi
-
-# forced efence turned off.
-# if test "x$developer" = "xyes" -a "x$use_efence" != "xno"; then
-#    use_efence="yes"
-# fi
-
-if test "x$use_efence" = "xyes"; then
-    AC_CHECK_LIB(efence, EF_Exit)
-fi
-
-# Checks for libraries.
-# AC_CHECK_LIB(des, main)
-AC_CHECK_LIB(m, round)
-AC_CHECK_LIB(m, exp)
-
-AC_ARG_WITH(elf,
-	[AS_HELP_STRING(--without-elf,[use elf libraries])],,
-	[AC_ARG_ENABLE(elf,,
-		[AC_MSG_ERROR([ Invalid option. Use --with-elf/--without-elf instead ])])])
-
-if test "x$with_elf" != "xno"; then
-# nlist is needed for uptime on some sytems in the generic library
-# add hosts which don't use nlist to the blank first line
-case $target_os in
-	linux*) ;;
-	irix*) # Check for nlist in mld (irix)
-		AC_CHECK_LIB(elf, nlist)
-		AC_CHECK_LIB(elf, nlist64)
-		AC_CHECK_LIB(mld, nlist)
-		;;
-	*) # default
-		AC_CHECK_LIB(elf, nlist)
-		;;
-esac
-fi
- 
-
-# On some platforms (Irix) libnsl and libsocket should not be used.
-AC_CHECK_FUNC(gethostbyname, AC_DEFINE(HAVE_GETHOSTBYNAME),
-	AC_CHECK_LIB(nsl, gethostbyname, AC_DEFINE(HAVE_GETHOSTBYNAME)
-	LIBS="${LIBS} -lnsl"))
-
-# SCO Unixware 7.1.4 finds gethostbyname() in -lsocket
-AC_CHECK_FUNC(gethostbyname, AC_DEFINE(HAVE_GETHOSTBYNAME),
-	AC_CHECK_LIB(socket, gethostbyname, AC_DEFINE(HAVE_GETHOSTBYNAME)
-	LIBS="${LIBS} -lsocket"))
-
-# Solaris kstat
-AC_CHECK_LIB(kstat, kstat_lookup,
-        AC_DEFINE(HAVE_LIBKSTAT, 1, [Define to 1 if you have the `kstat' library (-lkstat).])
-        LNETSNMPLIBS="${LNETSNMPLIBS} -lkstat")
-
-# Check for libraries that the agent needs
-# saving old libraries
-NONAGENTLIBS=$LIBS
-
-# Check for security related functions
-if test "x$tryopenssl" != "xno"; then
-    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")
-    else 
-      if test "x$tryrsaref" != "xno"; then
-         AC_CHECK_LIB(rsaref, RSAPrivateDecrypt)
-         AC_CHECK_LIB(RSAglue, RSA_PKCS1_RSAref)
-      fi
-
-      AC_CHECK_LIB(crypto, EVP_md5, AC_DEFINE(HAVE_LIBCRYPTO, 1, [Define to 1 if you have the `crypto' library (-lcrypto).])
-              LIBCRYPTO="-lcrypto")
-      AC_CHECK_LIB(crypto, AES_cfb128_encrypt, 
-              AC_DEFINE(HAVE_AES_CFB128_ENCRYPT, 1, [Define to 1 if you have the `AES_cfb128_encrypt' function.]))
-      AC_CHECK_LIB(crypto, EVP_MD_CTX_create,
-          AC_DEFINE([HAVE_EVP_MD_CTX_CREATE], [],
-              [Define to 1 if you have the `EVP_MD_CTX_create' function.])
-          AC_DEFINE([HAVE_EVP_MD_CTX_DESTROY], [],
-              [Define to 1 if you have the `EVP_MD_CTX_destroy' function.]))
-    fi
-elif test "x$askedpkcs" = "xyes"; then
-    AC_CHECK_LIB(pkcs11, C_Initialize, AC_DEFINE(HAVE_LIBPKCS11)
-            LIBPKCS11="-lpkcs11")
-fi
-
-LIBS=$NONAGENTLIBS
-
-# check for tcp wrapper support
-_cppflags="${CPPFLAGS}"
-_ldflags="${LDFLAGS}"
-
-AC_ARG_WITH(libwrap,
-[  --with-libwrap[=LIBPATH]  Compile in libwrap (tcp_wrappers) support.],[
-  if test "$with_libwrap" != "no"; then
-    if test "$with_libwrap" != "yes"; then
-      CPPFLAGS="${CPPFLAGS} -I$with_libwrap/include"
-      LDFLAGS="${LDFLAGS} -L$with_libwrap/lib"
-    fi
-
-    _libs=${LIBS}
-    AC_CHECK_HEADER(tcpd.h, ,
-	    AC_MSG_ERROR([Asked to use libwrap but I couldn't find tcpd.h.]))
-
-    LIBS="$LIBS -lwrap"
-	AC_MSG_CHECKING([for TCP wrappers library -lwrap])
-	# XXX: should check for hosts_ctl
-	AC_TRY_LINK([#include <sys/types.h>
-		     #include <tcpd.h>
-		     int allow_severity = 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"
-	    _wraplibs="$_wraplibs -lwrap"],
-        [
-	    AC_MSG_RESULT([no])
-	    # Linux RedHat 6.1 won't link libwrap without libnsl
-	    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>
-		         #include <tcpd.h>
-		         int allow_severity = 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"
-			_wraplibs="$_wraplibs -lwrap -lnsl",
-
-			AC_MSG_RESULT(no)
-			AC_MSG_ERROR(Asked to use libwrap but I couldn't find it.))])
-    LAGENTLIBS="$_wraplibs"
-    CPPFLAGS=${_cppflags}
-    LDFLAGS=${_ldflags}
-    LIBS=${_libs}
-  fi
-])
-
-AC_CHECK_HEADERS(rpm/rpmlib.h rpm/header.h)
-
-AC_CHECK_HEADER(rpm/rpmlib.h,rpmlib_h=yes,rpmlib_h=no)
-AC_CHECK_HEADER(rpm/header.h,rpmheader_h=yes,rpmheader_h=no)
-
-if test "x$rpmheader_h" = "xno" -o "x$rpmlib_h" = "xno" ; then
-  if test "x$with_rpm" = "xyes" ; then
-    AC_MSG_ERROR([Could not find either the RPM header files needed and was specifically asked to use RPM support])
-  else
-    with_rpm=no
-  fi
-fi
-
-#
-# rpm libraries only needed for the host resources mib software
-# installed tables (on linux in particular)
-#
-if test "x$with_rpm" != "xno" && \
-        echo " $module_list " | grep " host/hr_swinst " > /dev/null; then
-  # ARG.  RPM is a real pain.
-  # FWIW librpm.la, librpmio.la, and libpopt.la have correct dependencies.
-  _rpmlibs=""
-
-  # rpm-4.0.x needs rpmio.
-  AC_CHECK_LIB(rpmio, rpmGetPath, [_rpmlibs="-lrpmio $_rpmlibs"],,$_rpmlibs)
-  
-  # now check for rpm using the appropriate libraries.
-  AC_CHECK_LIB(rpm, rpmGetFilesystemList,[
-    AC_DEFINE(HAVE_LIBRPM)
-    LMIBLIBS="-lrpm $_rpmlibs $LMIBLIBS"
-    CFLAGS="$CFLAGS -I/usr/include/rpm"
-  ],[
-    # rpm-4.0.3 librpmdb actually contains what we need.
-    AC_CHECK_LIB(rpmdb, rpmdbOpen,[
-      AC_DEFINE(HAVE_LIBRPM)
-      LMIBLIBS="-lrpmdb -lrpm $_rpmlibs $LMIBLIBS"
-      CFLAGS="$CFLAGS -I/usr/include/rpm"
-    ],,-lrpm $_rpmlibs)
-  ])
-
-  # rpm 4.6 has incompatible API, turn on the legacy one
-  AC_CHECK_DECL([headerGetEntry],
-    : ,
-    AC_DEFINE([_RPM_4_4_COMPAT], [], [Define if you have RPM 4.6 or newer to turn on legacy API]),
-    [[#include <rpm/rpmlib.h>]]
-  )
-fi
-
-# libkvm
-AC_CHECK_LIB(kvm, kvm_read, [_libkvm="-lkvm"])
-AC_CHECK_FUNC(kvm_openfiles, AC_DEFINE(HAVE_KVM_OPENFILES, 1, [Define to 1 if you have the `kvm_openfiles' function.]),
-	AC_CHECK_LIB(kvm, kvm_openfiles, AC_DEFINE(HAVE_KVM_OPENFILES, 1, [Define to 1 if you have the `kvm_openfiles' function.])
-	_libkvm="-lkvm"))
-AC_CHECK_FUNC(kvm_getprocs, AC_DEFINE(HAVE_KVM_GETPROCS, 1, [Define to 1 if you have the `kvm_getprocs' function.]),
-	AC_CHECK_LIB(kvm, kvm_getprocs, AC_DEFINE(HAVE_KVM_GETPROCS, 1, [Define to 1 if you have the `kvm_getprocs' function.])
-	_libkvm="-lkvm"))
-AC_CHECK_FUNC(kvm_getswapinfo, AC_DEFINE(HAVE_KVM_GETSWAPINFO, 1, [Define to 1 if you have the `kvm_getswapinfo' function.]),
-	AC_CHECK_LIB(kvm, kvm_getswapinfo, AC_DEFINE(HAVE_KVM_GETSWAPINFO, 1, [Define to 1 if you have the `kvm_getswapinfo' function.])
-	_libkvm="-lkvm"))
-if test "x${_libkvm}" != "x"; then
-	AC_DEFINE(HAVE_LIBKVM, 1, [Define to 1 if you have the `kvm' library (-lkvm).])
-	LAGENTLIBS="$LAGENTLIBS ${_libkvm}"
-fi
-
-# DYNAMIC MODULE SUPPORT
-AC_CHECK_FUNC(dlopen, AC_DEFINE(HAVE_DLOPEN, 1, [Define to 1 if you have the `dlopen' function.]),
-	AC_CHECK_LIB(dl, dlopen, AC_DEFINE(HAVE_DLOPEN, 1, [Define to 1 if you have the `dlopen' function.])
-	AC_DEFINE(HAVE_LIBDL, 1, [Define to 1 if you have the `dl' library (-ldl).])
-	LMIBLIBS="${LMIBLIBS} -ldl"))
-
-# nlist
-AC_CHECK_FUNCS(nlist nlist64 knlist)
-
-# whether we need -ldevstat for diskio MIB
-echo " $module_list " | grep " ucd-snmp/diskio " >/dev/null
-if test $? -eq 0 ; then
-	AC_CHECK_FUNC(getdevs, AC_DEFINE(HAVE_GETDEVS),
-		AC_CHECK_LIB(devstat, getdevs, AC_DEFINE(HAVE_GETDEVS)
-		LMIBLIBS="${LMIBLIBS} -ldevstat"))
-	AC_CHECK_FUNC(getdevs, AC_DEFINE(HAVE_DEVSTAT_GETDEVS),
-		AC_CHECK_LIB(devstat, devstat_getdevs, AC_DEFINE(HAVE_DEVSTAT_GETDEVS)
-		LMIBLIBS="${LMIBLIBS} -ldevstat"))
-fi
-
-# LM-SENSORS-MIB support
-echo " $module_list " | grep " ucd-snmp/lmSensors " > /dev/null
-if test $? -eq 0 ; then
-        AC_MSG_CHECKING([for sensors support])
-        case $target_os in
-          solaris*)
-            AC_CHECK_HEADER(picl.h, LMIBLIBS="${LMIBLIBS} -lpicl",)
-            AC_CHECK_HEADERS(picl.h)
-            ;;
-        *)
-            AC_CHECK_HEADER(sensors/sensors.h,,
-                [AC_MSG_ERROR([asked to use lm_sensors but I couldn't find sensors/sensors.h])])
-            AC_CHECK_LIB(sensors, sensors_get_detected_chips, [
-		   LMIBLIBS="${LMIBLIBS} -lsensors" ;
-                ],
-                [AC_MSG_ERROR([asked to use lm_sensors but I couldn't find -lsensors])])
-            ;;
-        esac
-fi
-
-######################################################################
-# PERL SUPPORT
-######################################################################
-
-#
-# test to see if we can attempt to build embedded Perl so far
-#
-if test "x$embed_perl" = "xtry" ; then
-  if test "x$install_perl" = "xno" ; then
-    install_perl="try"
-  fi
-  if test "x$ac_cv_path_PERLPROG" = "x" -o "x$ac_cv_path_PERLPROG" = "xno" ; then
-    install_perl="no"
-    embed_perl="no"
-  fi
-fi
-
-
-#
-# Embedded Perl specific stuff
-#
-
-# test perl prog
-if test "x$install_perl" != "xno" ; then
-    myperl=$ac_cv_path_PERLPROG
-    if test $myperl = "no" ; then
-      if test "x$install_perl" = "xtry" ; then
-        install_perl="no"
-      else
-        AC_MSG_ERROR(--enable-embedded-perl requested but no perl executable found)
-      fi
-    fi
-fi
-
-# test for shared libraries support
-if test "x$install_perl" != "xno" ; then
-    # embedded Perl requires shared libraries
-    if test "x$enable_shared" != "xyes"; then
-      if test "x$install_perl" = "xtry" ; then
-        install_perl="no"
-      else
-        AC_MSG_ERROR(Perl support requires --enable-shared)
-      fi
-    fi
-fi
-
-if test "x$install_perl" != "xno" ; then
-  AC_MSG_CHECKING([if we are in the source tree so we can install Perl modules])
-  if test "x$srcdir" = "x." -o -d perl/agent/default_store ; then
-    AC_MSG_RESULT([Yes])
-  else
-    if test "x$install_perl" = "xtry" ; then
-      install_perl="no"
-      AC_MSG_RESULT([No])
-    else
-      AC_MSG_ERROR([Perl modules can not be built outside the source directory])
-    fi
-  fi
-fi      
-
-# check the Perl compiler name
-if test "x$install_perl" != "xno" ; then
-    #
-    # Perl cc checks
-    #
-    if test "xenable_perl_cc_checks" != "xno" ; then
-      AC_MSG_CHECKING([for Perl cc])
-      changequote(, )
-      PERLCC=`$myperl -V:cc | $myperl -n -e 'print if (s/^\s*cc=.([-=\w\s\/]+).;\s*/$1/);'`
-      changequote([, ])
-      if test "x$PERLCC" != "x" ; then
-        AC_MSG_RESULT([$PERLCC])
-      else
-        if test "x$install_perl" = "xtry" ; then
-          install_perl="no"
-        else
-          AC_MSG_ERROR([Could not determine the compiler that was used to build $myperl. Either set the environment variable PERLPROG to a different perl binary or use --without-perl-modules to build without Perl.])
-        fi
-      fi
-fi
-
-# check the Perl compiler compatibility
-if test "x$install_perl" != "xno" ; then
-      AC_MSG_CHECKING([whether $PERLCC is a GNU C compiler])
-      OLDCC=$CC
-      CC="$PERLCC"
-      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
-#ifndef __GNUC__
-  choke me
-#endif
-      ]])], [perlcc_is_gnu=yes], [perlcc_is_gnu=no])
-      AC_MSG_RESULT([$perlcc_is_gnu])
-      CC=$OLDCC
-      if test "x$GCC" = "xyes" -a "x$perlcc_is_gnu" = "xno" ; then
-      	if test "x$install_perl" = "xtry" ; then
-      	  install_perl="no"
-      	else
-      	  AC_MSG_ERROR([This build is using a GNU C compiler ($CC) while Perl has been compiled with a non-GNU (or non-working) compiler ($PERLCC). This likely won't work for building with Perl support. Either specify a different compiler (--with-cc=PATH), disable this check (--disable-perl-cc-checks) or build without Perl (--without-perl-modules).])
-      	fi
-      fi
-fi
-
-# check if they're both gnu
-if test "x$install_perl" != "xno" ; then
-      if test "x$GCC" != "xyes" -a "x$perlcc_is_gnu" = "xyes" ; then
-      	if test "x$install_perl" = "xtry" ; then
-      	  install_perl="no"
-      	else
-          AC_MSG_ERROR([This build is using a non-GNU C compiler ($CC) while Perl has been compiled with a GNU compiler ($PERLCC). This likely won't work for building with Perl support. Either specify a different compiler (--with-cc=PATH), disable this check (--disable-perl-cc-checks) or build without Perl (--without-perl-modules).])
-      	fi
-      fi
-fi
-
-# we have enough support for installing the modules at least.
-if test "x$install_perl" = "xtry" ; then
-  install_perl="yes"
-else
-  if test "x$install_perl" = "xno" ; then
-    install_perl="no"
-    embed_perl="no"
-  fi
-fi
-
-####################
-# on to embedding...
-
-# check the compiler flags for illegal tokens
-case $target_os in
-    solaris*)
-      if test "x$embed_perl" != "xno" ; then
-          #
-          # Perl cc checks
-          #
-          AC_MSG_CHECKING([for problematic Perl cc flags on Suns])
-          if $myperl -V:ccflags | grep LARGEFILE > /dev/null ; then
-            if test "x$embed_perl" = "xtry" ; then
-              embed_perl="no"
-            else
-              AC_MSG_ERROR([Perl was compiled with LARGEFILE support which will break Net-SNMP. Either set the environment variable PERLPROG to a different perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether.])
-            fi
-          else
-            AC_MSG_RESULT([none known])
-          fi
-      fi
-    ;;
-
-    *)
-    ;;
-esac
-
-
-# check the cflags
-if test "x$embed_perl" != "xno" ; then
-    AC_MSG_CHECKING([for Perl CFLAGS])
-    perlcflags=`$myperl -MExtUtils::Embed -e ccopts`
-    if test "x$perlcflags" != "x" ; then
-      AC_MSG_RESULT([$perlcflags])
-      CFLAGS="$CFLAGS $perlcflags"
-    else
-      if test "x$embed_perl" = "xtry" ; then
-        embed_perl="no"
-      else
-        AC_MSG_ERROR([Could not determine the C compiler flags that were used to build $myperl. Either set the environment variable PERLPROG to a different Perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether.])
-      fi
-    fi
-fi
-
-# check the ldflags
-if test "x$embed_perl" != "xno" ; then
-    AC_MSG_CHECKING([for Perl LDFLAGS])
-    netsnmp_perlldopts=`$myperl -MExtUtils::Embed -e ldopts`
-    if test "x$netsnmp_perlldopts" != "x" ; then
-      AC_MSG_RESULT([$netsnmp_perlldopts])
-    else
-      if test "x$embed_perl" = "xtry" ; then
-        embed_perl="no"
-      else
-        AC_MSG_ERROR([Could not determine the linker options that were used to build $myperl. Either set the environment variable PERLPROG to a different Perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether.])
-      fi
-    fi
-    if test "x$enable_as_needed" = "xyes" ; then
-      # link *libraries* with libperl
-      PERLLDOPTS_FOR_LIBS="$netsnmp_perlldopts"
-      # Perl ccdlflags (RPATH to libperl, hopefully)
-      AC_MSG_CHECKING([for Perl CCDLFLAGS])
-      changequote(, )
-      netsnmp_perlccdlflags=`$myperl -V:ccdlflags | $myperl -n -e 'print $1 '"if (/^\s*ccdlflags='([^']+)';/);"`
-      changequote([, ])
-      AC_MSG_RESULT([$netsnmp_perlccdlflags])
-      PERLLDOPTS_FOR_APPS="$netsnmp_perlccdlflags"
-    else
-      # link *applications* against libperl
-      PERLLDOPTS_FOR_APPS="$netsnmp_perlldopts"
-    fi
-fi
-
-# check needed functions
-if test "x$embed_perl" != "xno" ; then
-    OLDLIBS="$LIBS"
-    LIBS="$LIBS $netsnmp_perlldopts"
-
-    # newer perl vs older perl call functions
-    AC_CHECK_FUNCS(eval_pv)
-
-    # sigh: this has a CAPITAL P in Perl, which ends up being the same
-    # autoconf define as the lower case so we have to treat them *BOTH*
-    # specially.  Wonderful.
-    AC_CHECK_FUNC(perl_eval_pv, AC_DEFINE(HAVE_PERL_EVAL_PV_LC))
-    AC_CHECK_FUNC(Perl_eval_pv, AC_DEFINE(HAVE_PERL_EVAL_PV_UC))
-
-    LIBS="$OLDLIBS"
-
-
-    if test "x$ac_cv_func_perl_eval_pv" != "xyes" -a "x$ac_cv_func_Perl_eval_pv" != "xyes" -a "x$ac_cv_func_eval_pv" != "xyes" ; then
-      if test "x$embed_perl" = "xtry" ; then
-        embed_perl="no"
-      else
-        AC_MSG_ERROR([Could not find the eval_pv, perl_eval_pv or Perl_eval_pv functions needed for embedded Perl support. Either set the environment variable PERLPROG to a different perl binary or use --disable-embedded-perl to turn off embedded Perl functionality altogether.])
-      fi
-    else
-      AC_DEFINE(NETSNMP_EMBEDDED_PERL)
-      OTHERAGENTLIBOBJS="snmp_perl.o"
-      OTHERAGENTLIBLOBJS="snmp_perl.lo"
-
-      EMBEDPERLINSTALL="embedperlinstall"
-      EMBEDPERLUNINSTALL="embedperluninstall"
-      # yay, we got here!
-      embed_perl="yes"
-    fi
-else
-      EMBEDPERLINSTALL=""
-      EMBEDPERLUNINSTALL=""
-      embed_perl="no"
-    fi
-fi
-AC_SUBST(EMBEDPERLINSTALL)
-AC_SUBST(EMBEDPERLUNINSTALL)
-AC_SUBST(PERLLDOPTS_FOR_LIBS)
-AC_SUBST(PERLLDOPTS_FOR_APPS)
-
-# embedded Perl results
-AC_MSG_CHECKING([for potential embedded Perl support])
-if test "x$embed_perl" != "xyes" ; then
-  AC_MSG_CACHE_ADD(Embedded Perl support:      disabled)
-  AC_MSG_RESULT([disabled])
-else
-  AC_MSG_CACHE_ADD(Embedded Perl support:      enabled)
-  AC_MSG_RESULT([enabled])
-fi
-
-# install Perl module results
-PERLTARGS=""
-PERLINSTALLTARGS=""
-PERLUNINSTALLTARGS=""
-AC_MSG_CHECKING([if we can install the Perl modules])
-if test "x$install_perl" = "xyes" ; then
-    PERLTARGS="perlmodules"
-    PERLINSTALLTARGS="perlinstall"
-    PERLUNINSTALLTARGS="perluninstall"
-    if test "x$embed_perl" = "xyes" ; then
-      AC_MSG_CACHE_ADD(SNMP Perl modules:          building -- embeddable)
-      AC_MSG_RESULT([yes -- and embeddable])
-    else
-      AC_MSG_CACHE_ADD(SNMP Perl modules:          building -- not embeddable)
-      AC_MSG_RESULT([yes -- not embeddable])
-    fi
-else
-    AC_MSG_RESULT([no])
-    AC_MSG_CACHE_ADD(SNMP Perl modules:          disabled)
-fi
-AC_SUBST(PERLTARGS)
-AC_SUBST(PERLINSTALLTARGS)
-AC_SUBST(PERLUNINSTALLTARGS)
-AC_SUBST(PERLARGS)
-
-
-
-# reset libs
-AGENTLIBS=$LIBS
-LIBS=$NONAGENTLIBS
-
-
-
-# python support
-PYTHONTARGS=""
-PYTHONINSTALLTARGS=""
-PYTHONUNINSTALLTARGS=""
-PYTHONCLEANTARGS=""
-AC_MSG_CHECKING([if we should install the python bindings])
-if test "x$install_python" = "xyes" ; then
-    PYTHONTARGS="pythonmodules"
-    PYTHONINSTALLTARGS="pythoninstall"
-    PYTHONUNINSTALLTARGS="pythonuninstall"
-    PYTHONCLEANTARGS="pythonclean"
-    AC_MSG_CACHE_ADD(SNMP Python modules:        building for $PYTHONPROG)
-    AC_MSG_RESULT([yes])
-else
-    AC_MSG_CACHE_ADD(SNMP Python modules:        disabled)
-    AC_MSG_RESULT([no])
-fi
-AC_SUBST(PYTHONTARGS)
-AC_SUBST(PYTHONINSTALLTARGS)
-AC_SUBST(PYTHONUNINSTALLTARGS)
-AC_SUBST(PYTHONCLEANTARGS)
-AC_SUBST(PYTHONARGS)
-
-
-
-# Checks for header files.
-AC_HEADER_STDC
-AC_HEADER_DIRENT
-AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS(stdarg.h string.h fcntl.h limits.h sys/file.h sys/ioctl.h syslog.h unistd.h sys/dmap.h machine/pte.h xti.h sys/sockio.h sys/socket.h sys/param.h sys/uio.h)
-# at least Solaris 9 needs sys/socket.h to compile sys/socketvar.h
-AC_CHECK_HEADERS(sys/socketvar.h,,,
-AC_INCLUDES_DEFAULT([])
-[
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-])
-# at least OpenBSD 3.4 needs sys/param.h (MAXPATHLEN) to compile sys/swap.h
-AC_CHECK_HEADERS(sys/swap.h,,,
-AC_INCLUDES_DEFAULT([])
-[
-#if HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-])
-AC_CHECK_HEADERS(sys/timeout.h sys/un.h fstab.h sys/fs.h mtab.h ufs/fs.h sys/fixpoint.h machine/param.h sys/vm.h vm/vm.h sys/vmmeter.h sys/vmparam.h sys/vmmac.h sys/vmsystm.h sys/time.h sys/times.h sys/statvfs.h sys/vfs.h sys/mnttab.h sys/select.h mntent.h sys/mntent.h kstat.h utsname.h sys/utsname.h sys/cdefs.h getopt.h locale.h pthread.h sys/loadavg.h regex.h linux/tasks.h pwd.h grp.h utmpx.h)
-# Network headers
-AC_CHECK_HEADERS(arpa/inet.h netinet/in_systm.h netinet/in.h netinet/ip_var.h netinet/tcp.h netinet/tcpip.h netinet/udp.h net/if.h netinet/in_var.h netinet/ip.h netinet/ip_icmp.h net/if_arp.h net/if_mib.h net/if_var.h netinet/if_ether.h netinet/tcp_timer.h netinet/tcp_var.h netinet/udp_var.h netinet/icmp_var.h netdb.h net/route.h,,,
-[[
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_SYS_TIMEOUT_H
-#include <sys/timeout.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#if HAVE_SYS_SOCKETVAR_H
-#include <sys/socketvar.h>
-#endif
-#if HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#if HAVE_NETINET_IN_SYSTM_H
-#include <netinet/in_systm.h>
-#endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_H
-#include <netinet/ip.h>
-#endif
-#if HAVE_NET_IF_H
-#include <net/if.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-#if HAVE_NETINET_IP_ICMP_H
-#include <netinet/ip_icmp.h>
-#endif
-#if HAVE_NETINET_TCP_H
-#include <netinet/tcp.h>
-#endif
-#if HAVE_NETINET_UDP_H
-#include <netinet/udp.h>
-#endif
-#if HAVE_NETINET_TCP_TIMER_H
-#include <netinet/tcp_timer.h>
-#endif
-]])
-# UFS headers
-AC_CHECK_HEADERS(ufs/ufs/dinode.h ufs/ufs/quota.h ufs/ufs/inode.h ufs/ffs/fs.h,,,
-[[
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_UFS_UFS_DINODE_H
-#include <ufs/ufs/dinode.h>
-#endif
-#if HAVE_UFS_UFS_QUOTA_H
-#include <ufs/ufs/quota.h>
-#endif
-]])
-# FreeBSD required headers
-AC_CHECK_HEADERS(malloc.h net/if_dl.h sys/sysctl.h stdlib.h net/if_types.h sys/queue.h osreldate.h machine/types.h sys/user.h sys/proc.h sys/mbuf.h sys/mount.h sys/dkstat.h sys/conf.h,,,
-[[
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-]])
-# Linux
-AC_CHECK_HEADERS(netinet/tcp_fsm.h sys/protosw.h nlist.h ioctls.h asm/page.h asm/types.h netipx/ipx.h pci/pci.h)
-# Solaris
-AC_CHECK_HEADERS(inet/mib2.h)
-# NetBSD required headers
-AC_CHECK_HEADERS(kvm.h sys/pool.h uvm/uvm_param.h uvm/uvm_extern.h vm/vm_param.h vm/vm_extern.h)
-# BSDi2 headers
-AC_CHECK_HEADERS(vm/swap_pager.h,,,
-[[
-#if HAVE_VM_VM_H
-#include <vm/vm.h>
-#endif
-]])
-# linux ethtool
-# requires special hacks to get around various problems on older linux kernels.
-# major ugh....
-AC_CHECK_HEADERS([linux/ethtool.h],,,
-[[
-#include <linux/types.h>
-typedef __u64 u64;         /* hack, so we may include kernel's ethtool.h */
-typedef __u32 u32;         /* ditto */
-typedef __u16 u16;         /* ditto */
-typedef __u8 u8;           /* ditto */
-]])
-# BSDi3 headers
-AC_CHECK_HEADERS(sys/stat.h)
-# BSDi3/IRIX headers
-# at least IRIX 6.5 needs _KMEMUSER and sys/types.h (mprot_t) to compile 
-#   sys/vnode.h
-AC_CHECK_HEADERS(sys/vnode.h,,,
-[
-#define _KMEMUSER 1
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-])
-# at least IRIX 6.5 needs sys/sema.h (mrlock_t) to compile sys/hashing.h
-AC_CHECK_HEADERS(sys/sema.h)
-AC_CHECK_HEADERS(sys/hashing.h,,,
-AC_INCLUDES_DEFAULT([])
-[
-#if HAVE_SYS_SEMA_H
-#include <sys/sema.h>
-#endif
-])
-# more IRIX headers
-AC_CHECK_HEADERS(sys/tcpipstats.h sys/sysmp.h sys/systeminfo.h sys/sysget.h)
-# AIX system configuration
-AC_CHECK_HEADERS(sys/systemcfg.h)
-# from smux stuff
-AC_CHECK_HEADERS(err.h sys/filio.h sgtty.h)
-# AIX needs this for statfs func
-AC_CHECK_HEADERS(sys/statfs.h)
-# for HostRes (HP-UX at least)
-AC_CHECK_HEADERS(sys/dkio.h sys/diskio.h sys/pstat.h linux/hdreg.h pkglocs.h)
-# for HostRes (Solaris 2.x at least)
-AC_CHECK_HEADERS(pkginfo.h,
-    AC_CHECK_LIB(adm, pkginfo, AC_DEFINE(HAVE_PKGINFO)
-    LMIBLIBS="${LMIBLIBS} -ladm"))
-
-case $target_os in
-    aix*) # AIX perfstat library, needed for CPU/memory statistics
-        AC_CHECK_HEADERS(libperfstat.h,
-            AC_CHECK_LIB(perfstat, perfstat_cpu_total, AC_DEFINE(HAVE_PERFSTAT)
-            LMIBLIBS="${LMIBLIBS} -lperfstat"), AC_MSG_ERROR([
-
-*** To monitor CPU/memory values in AIX you need to install
-*** libperfstat which can be found in bos.perf
-]))
-        ;;
-    hpux*) # HP-UX agent needs open_mib
-        AC_CHECK_LIB(nm, open_mib, AC_DEFINE(HAVE_LIBNM)
-            LMIBLIBS="${LMIBLIBS} -lnm")
-        ;;
-    *)
-        ;;
-esac
-# WIN32
-# (mingw32 must link winsock explicitly)
-AC_CHECK_HEADERS(winsock.h,[
-        AGENTLIBS="${AGENTLIBS} -liphlpapi"
-        case $target_os in
-                mingw*)
-                        LIBS="${LIBS} -lregex -lws2_32"
-                        AGENTLIBS="${AGENTLIBS} -lregex -lws2_32"
-                        ;;
-                *)
-                        ;;
-        esac
-])
-AC_CHECK_HEADERS(io.h)
-# SCO
-AC_CHECK_HEADERS(sys/stream.h)
-# KAME
-AC_CHECK_HEADERS(netinet/ip6.h netinet6/in6_var.h netinet6/in6_pcb.h netinet6/ip6_var.h netinet6/tcp6.h netinet6/tcp6_fsm.h netinet6/nd6.h netinet6/tcp6_timer.h netinet6/tcp6_var.h,,,
-[[
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_SYS_QUEUE_H
-#include <sys/queue.h>
-#endif
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP6_H
-#include <netinet/ip6.h>
-#endif
-#if HAVE_NET_IF_H
-#include <net/if.h>
-#endif
-#if HAVE_NET_ROUTE_H
-#include <net/route.h>
-#endif
-]])
-# DYNAMIC MODULE SUPPORT
-AC_CHECK_HEADERS(dlfcn.h)
-# table_array helper support
-AC_CHECK_HEADERS(search.h)
-
-# RPM subdirectory path (sigh)
-if test "x$with_rpm" != "xno" && \
-        echo " $module_list " | grep " host/hr_swinst " > /dev/null; then
-  AC_CHECK_HEADERS(rpm/rpmts.h, [], [], [[#include <rpm/rpmlib.h>]])
-fi
-
-# OpenBSD 2.6 needs netinet/in.h before netinet/in_pcb.h
-AC_MSG_CHECKING([[for netinet/in_pcb.h]])
-AC_CACHE_VAL(cv_have_netinet_in_pcb_h,
-[ AC_TRY_CPP( [
-#include <netinet/in.h>
-#include <netinet/in_pcb.h>
-], cv_have_netinet_in_pcb_h=yes, cv_have_netinet_in_pcb_h=no)])
-AC_MSG_RESULT($cv_have_netinet_in_pcb_h)
-if test $cv_have_netinet_in_pcb_h = yes; then
-  AC_DEFINE(HAVE_NETINET_IN_PCB_H)
-fi
-
-# NetBSD needs machine/types.h before sys/disklabel.h
-AC_MSG_CHECKING([[for sys/disklabel.h]])
-AC_CACHE_VAL(cv_have_sys_disklabel_h,
-[ AC_TRY_CPP( [
-#include <machine/types.h>
-#include <sys/disklabel.h>
-], cv_have_sys_disklabel_h=yes, cv_have_sys_disklabel_h=no)])
-AC_MSG_RESULT($cv_have_sys_disklabel_h)
-if test $cv_have_sys_disklabel_h = yes; then
-  AC_DEFINE(HAVE_SYS_DISKLABEL_H)
-fi
-
-# OpenSSL
-AC_CHECK_HEADERS(openssl/hmac.h openssl/evp.h openssl/aes.h openssl/des.h openssl/dh.h)
-AC_CHECK_HEADERS(security/cryptoki.h)
-
-# Printing
-AC_PATH_PROG([LPSTAT_PATH],lpstat)
-if test x$LPSTAT_PATH != x; then
-    AC_DEFINE_UNQUOTED(LPSTAT_PATH,"$LPSTAT_PATH")
-    AC_DEFINE(HAVE_LPSTAT)
-fi
-AC_CHECK_FUNCS(cgetnext)
-if test -r /etc/printcap; then
-    AC_DEFINE(HAVE_PRINTCAP)
-fi
-
-AC_MSG_CHECKING([for authentication support])
-useopenssl=no
-usepkcs=no
-if test "x$ac_cv_lib_pkcs11_C_Initialize" != "xyes" -o "x$ac_cv_header_security_cryptoki_h" != "xyes"; then
-    if test "x$askedpkcs" = "xyes"; then
-       AC_MSG_ERROR(Asked to use PKCS11 but I couldn't find it.)
-    fi
-else
-    if test "x$askedpkcs" = "xyes"; then
-        usepkcs=yes
-    fi
-fi
-
-if test "x$ac_cv_lib_crypto_EVP_md5" != "xyes" -o "x$ac_cv_header_openssl_hmac_h" != "xyes" -o "x$ac_cv_header_openssl_hmac_h" != "xyes"; then
-    if test "x$askedopenssl" = "xyes"; then
-        AC_MSG_ERROR(Asked to use OpenSSL but I couldn't find it.)
-    fi
-else
-    if test "x$askedopenssl" = "xyes"; then
-        useopenssl=yes
-    elif test "x$tryopenssl" = "xyes"; then
-        if test "x$usepkcs" != "xyes"; then
-            useopenssl=yes
-        fi
-    fi
-fi
-
-if 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
-            encrmodes="DES AES"
-	else
-	    encrmodes="DES"
-	fi
-    else
-        encrmodes="[disabled]"
-    fi
-    AC_DEFINE(NETSNMP_USE_OPENSSL)
-    LNETSNMPLIBS="$LNETSNMPLIBS $LIBCRYPTO"
-    AC_MSG_RESULT(OpenSSL Support)
-elif test "x$usepkcs" != "xno" ; then
-    authmodes="MD5 SHA1"
-    if test "x$enable_privacy" != "xno" ; then
-        encrmodes="DES"
-    else
-        encrmodes="[disabled]"
-    fi
-    AC_DEFINE(NETSNMP_USE_PKCS11)
-    LNETSNMPLIBS="$LNETSNMPLIBS $LIBPKCS11"
-    AC_MSG_RESULT(PKCS11 Support)
-elif test "x$enable_md5" != "xno"; then
-    authmodes="MD5"
-    encrmodes=""
-    AC_DEFINE(NETSNMP_USE_INTERNAL_MD5)
-    AC_MSG_RESULT(Internal MD5 Support)
-fi
-if test "x$enable_md5" = "xno"; then
-    authmodes=`echo $authmodes | sed 's/MD5 *//;'`
-fi
-AC_SUBST(LNETSNMPLIBS)
-AC_SUBST(LAGENTLIBS)
-
-AC_MSG_CACHE_ADD(Authentication support:     $authmodes)
-AC_MSG_CACHE_ADD(Encryption support:         $encrmodes)
-
-if test "x$all_warnings" != "x"; then
-    AC_MSG_CACHE_ADD(WARNING: $all_warnings)
-fi
-
-# Checks for typedefs, structures, and compiler characteristics.
-AC_TYPE_OFF_T
-AC_TYPE_PID_T
-AC_HEADER_TIME
-
-# this should use AC_CHECK_TYPE, but it's broken at least in 2.13-14
-# so we do it by hand.
-AC_MSG_CHECKING([for socklen_t])
-AC_CACHE_VAL(ac_cv_type_$1,
-[AC_EGREP_CPP([socklen_t@<:@^a-zA-Z_0-9@:>@],
-[#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif], [ac_cv_type_socklen_t=yes], [ac_cv_type_socklen_t=no])])
-
-AC_MSG_RESULT([$ac_cv_type_socklen_t])
-if test $ac_cv_type_socklen_t = yes; then
-  AC_DEFINE(HAVE_SOCKLEN_T)
-fi
-
-# AIX keeps in_addr_t in /usr/include/netinet/in.h
-AC_MSG_CHECKING([for in_addr_t])
-AC_CACHE_VAL(ac_cv_type_$1,
-[AC_EGREP_CPP([in_addr_t@<:@^a-zA-Z_0-9@:>@],
-[#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif], [ac_cv_type_in_addr_t=yes], [ac_cv_type_in_addr_t=no])])
-
-AC_MSG_RESULT([$ac_cv_type_in_addr_t])
-if test $ac_cv_type_in_addr_t = yes; then
-  AC_DEFINE(HAVE_IN_ADDR_T)
-fi
-
-# Older versions of MinGW do not define ssize_t in sys/types
-AC_MSG_CHECKING([for ssize_t])
-AC_CACHE_VAL(ac_cv_type_$1,
-[AC_EGREP_CPP([ssize_t@<:@^a-zA-Z_0-9@:>@],
-[#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif], [ac_cv_type_ssize_t=yes], [ac_cv_type_ssize_t=no])])
-
-AC_MSG_RESULT([$ac_cv_type_ssize_t])
-if test $ac_cv_type_ssize_t = yes; then
-  AC_DEFINE(HAVE_SSIZE_T, 1, [Define if type ssize_t is available])
-fi
-
-# Check ps args
-AC_CACHE_CHECK([for correct flags to ps], ac_cv_ps_flags,
-[if test "`($PSPROG -e 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
-  ac_cv_ps_flags="-e"
-elif test "`($PSPROG -el 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
-  ac_cv_ps_flags="-el"
-elif test "`($PSPROG acx 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
-  ac_cv_ps_flags="acx"
-elif test "`($PSPROG -acx 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
-  ac_cv_ps_flags="-acx"
-elif test "`($PSPROG -o pid,tt,state,time,ucomm 2>&1) | $EGREP ' ps *$' | awk '{print $NF}'`" = "ps" ; then
-  ac_cv_ps_flags="-o pid,tt,state,time,ucomm"
-elif test "`($PSPROG ax 2>&1) | $EGREP ' (ps) *$' | awk '{print $NF}'`" = "ps" ; then
-  ac_cv_ps_flags="ax"
-elif test "x$PARTIALTARGETOS" = "xcygwin"; then
-  ac_cv_ps_flags="-e"
-elif test "x$PARTIALTARGETOS" = "xmingw32" -o "x$PARTIALTARGETOS" = "xmingw32msvc"; then 
-  ac_cv_ps_flags="-e"
-else
-  AC_MSG_WARN([Unable to determine valid ps flags...  defaulting...])
-  ac_cv_ps_flags="-acx"
-fi
-])
-
-PSCMD="$PSPROG $ac_cv_ps_flags"
-AC_SUBST(PSCMD)
-AC_DEFINE_UNQUOTED(PSCMD, "$PSPROG $ac_cv_ps_flags")
-
-# Checks for byte order
-if test $cross_compiling = yes; then
-  if test x$with_endianness = xbig; then
-    AC_DEFINE(WORDS_BIGENDIAN)
-  elif test -z $with_endianness; then
-    AC_MSG_ERROR([You are cross-compiling, but you have not specified the target's endianness])
-  fi
-else
-  if test $with_endianness; then
-    AC_MSG_ERROR([Endianness has been specified, but you are not cross-compiling.])
-  fi
-  AC_C_BIGENDIAN
-fi
-
-# Checks for library functions.
-AC_FUNC_ALLOCA
-AC_PROG_GCC_TRADITIONAL
-AC_FUNC_MEMCMP
-AC_TYPE_SIGNAL
-AC_FUNC_GETMNTENT
-AC_CHECK_FUNCS(setmntent hasmntopt gethostname uname gettimeofday select socket)
-AC_CHECK_FUNCS(strlcat strlcpy strtol strtoul)
-AC_CHECK_FUNCS(strchr strtok_r strdup memcpy memmove index bcopy strcasestr regcomp)
-AC_CHECK_FUNCS(signal setsid sigset sigblock sighold strerror setenv vsnprintf snprintf)
-AC_CHECK_FUNCS(sigaction)
-AC_CHECK_FUNCS(random lrand48 rand)
-AC_CHECK_FUNCS(execv system fork getpid strncasecmp sigalrm)
-AC_CHECK_FUNCS(lseek64 pread64)
-if test "x$with_rpm" != "xno" && \
-        echo " $module_list " | grep " host/hr_swinst " > /dev/null; then
-  OLDLIBS=$LIBS
-  LIBS=$LMIBLIBS
-  AC_CHECK_FUNCS(rpmGetPath)
-  LIBS=$OLDLIBS
-fi
-
-AC_CHECK_FUNCS(getloadavg)
-AC_CHECK_FUNCS(getaddrinfo getipnodebyname gai_strerror)
-# BSDi2 functions differ
-AC_CHECK_FUNCS(statvfs statfs)
-AC_CHECK_FUNCS(getdtablesize)
-# freebsd2 checks
-AC_CHECK_FUNCS(getfsstat)
-AC_CHECK_FUNCS(usleep)
-AC_CHECK_FUNCS(setlocale)
-AC_CHECK_FUNCS(tcgetattr)
-AC_CHECK_FUNCS(if_nameindex if_freenameindex)
-AC_CHECK_FUNCS(kinfo_get_cpus)
-# solaris checks
-AC_CHECK_FUNCS(getpagesize)
-AC_CHECK_FUNCS(mkstemp)
-AC_CHECK_FUNCS(getpwnam getgrnam setgid setuid setgroups)
-# High resolution alarm support
-AC_CHECK_FUNCS(setitimer)
-# functions to support the clock.
-AC_CHECK_FUNCS(mktime stime times sysconf)
-# missing from hp-ux
-AC_CHECK_FUNCS(if_nametoindex)
-# missing from MinGW
-AC_CHECK_FUNCS(chown localtime_r)
-
-AC_MSG_CHECKING([[for SIOCGIFADDR in sys/ioctl.h]])
-AC_CACHE_VAL(cv_sys_ioctl_h_has_SIOCGIFADDR,
-[ AC_EGREP_CPP(xxxyesxxx,
-[
-#ifdef HAVE_SYS_IOCTL_H
-#include <sys/ioctl.h>
-#endif
-#ifdef SIOCGIFADDR
-xxxyesxxx
-#endif
-], cv_sys_ioctl_h_has_SIOCGIFADDR=yes, cv_sys_ioctl_h_has_SIOCGIFADDR=no)])
-AC_MSG_RESULT($cv_sys_ioctl_h_has_SIOCGIFADDR)
-if test $cv_sys_ioctl_h_has_SIOCGIFADDR = yes; then
-  AC_DEFINE(SYS_IOCTL_H_HAS_SIOCGIFADDR)
-fi
-
-# ultrix
-AC_MSG_CHECKING([[for two-argument statfs with struct fs_data (Ultrix)]])
-AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
-[AC_TRY_RUN([
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef HAVE_SYS_MOUNT_H
-#include <sys/mount.h>
-#endif
-#ifdef HAVE_SYS_FS_TYPES_H
-#include <sys/fs_types.h>
-#endif
-main ()
-{
-struct fs_data fsd;
-/* 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)])
-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)
-fi
-
-# check if compiler pre-processor defines __FUNCTION__
-AC_CACHE_CHECK(if __FUNCTION__ is defined,ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED,
-[
-AC_TRY_COMPILE(,[
-    char *cp = __FUNCTION__;
-], ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED=yes, ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED=no)])
-
-if test "x$ac_cv_HAVE_CPP_UNDERBAR_FUNCTION_DEFINED" = "xyes"; then
-  AC_DEFINE(HAVE_CPP_UNDERBAR_FUNCTION_DEFINED)
-fi
-
-#--------------------------------------------------------------
-# on SCO Unixware 7.1.4 (SCO compiler), "static inline" functions
-# are not supported, so this disables the whole inline thing if it
-# doesn't work properly. Should have no effect on other platforms.
-AC_CACHE_CHECK([[whether static inline functions are broken (Unixware)]],
-    [netsnmp_cv_c_broken_inline],
-AC_COMPILE_IFELSE([[
-static inline int nested_inline_function(void) {
-  return 0;
-}
-inline int main_inline_function( void ) {
-  return nested_inline_function();
-}
-]], netsnmp_cv_broken_inline=no, netsnmp_cv_broken_inline=yes))
-
-# But, sadly, the usage of inline in NET_SNMP disagrees seriously with at least
-# solaris2, so disable it for now.
-case "$target_os" in
-    solaris*)
-        netsnmp_cv_broken_inline=yes
-        ;;
-    *)
-        ;;
-esac
-
-if test "$netsnmp_cv_broken_inline" = yes ; then
-  AC_DEFINE(NETSNMP_BROKEN_INLINE, 1,
-        [Define if static inline functions are unsupported])
-fi
-
-# openbsd seems to have dropped m_clusters and m_clfree from mbstat
-AC_CHECK_STRUCT_FOR([
-#if HAVE_SYS_MBUF_H
-#include <sys/mbuf.h>
-#endif
-], mbstat, m_clusters, no)
-
-# openbsd seems to have dropped m_mbufs from mbstat too
-AC_CHECK_STRUCT_FOR([
-#if HAVE_SYS_MBUF_H
-#include <sys/mbuf.h>
-#endif
-], mbstat, m_mbufs, no)
-
-
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#include <sys/signal.h>
-], sigaction, sa_sigaction, no)
-
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.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
-], tm, tm_gmtoff, no)
-
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-], ifnet, if_mtu)
-
-if test "x$ac_cv_struct_ifnet_has_if_mtu" = "xno"; then
-AC_CACHE_CHECK(if _KERNEL needs to be defined for if_mtu, ac_cv_IFNET_NEEDS_KERNEL,
-[
-if test "x$ac_cv_struct_ifnet_has_if_mtu" = "xyes"; then
-  ac_cv_IFNET_NEEDS_KERNEL=no
-else
-AC_TRY_COMPILE([
-#define _KERNEL 1
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-],[
-struct ifnet testit;
-testit.if_mtu = 0;
-], ac_cv_IFNET_NEEDS_KERNEL=yes, ac_cv_IFNET_NEEDS_KERNEL=no)
-fi
-])
-
-if test "x$ac_cv_IFNET_NEEDS_KERNEL" = "xyes"; then
-  AC_DEFINE(IFNET_NEEDS_KERNEL)
-fi
-fi
-
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-], sockaddr, sa_len, no)
-
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-], sockaddr, sa_union.sa_generic.sa_family2, no)
-
-AC_CHECK_STRUCT_FOR([
-#if HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-], sockaddr_storage, ss_family, no)
-
-AC_CHECK_STRUCT_FOR([
-#if HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-], sockaddr_storage, __ss_family, no)
-
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#include <net/route.h>
-], rtentry, rt_dst, no)
-
-# checking for 4.3 vs 4.4 rtentry.
-AC_CACHE_CHECK(type of rtentry structure,ac_cv_RTENTRY_TYPE,
-[
-
-# 4.4 compat
-AC_TRY_COMPILE([
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#include <net/route.h>
-],[
-
-#ifndef STRUCT_RTENTRY_HAS_RT_DST
-#define rt_dst rt_nodes->rn_key
-#endif
-
-  struct rtentry rt; 
-  rt.rt_nodes[0].rn_flags = 1;
-  rt.rt_dst;
-  ], ac_cv_RTENTRY_TYPE="BSD-4.4")
-
-# 4.3 compat
-if test "x$ac_cv_RTENTRY_TYPE" = "x"; then
-AC_TRY_COMPILE([
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#include <net/route.h>
-],[
-struct rtentry rt; 
-rt.rt_hash;
-], ac_cv_RTENTRY_TYPE="BSD-4.3")
-fi
-
-# else ack.
-if test "x$ac_cv_RTENTRY_TYPE" = "x"; then
-  AC_MSG_RESULT(Unknown)
-  ac_cv_RTENTRY_TYPE="unknown"
-fi
-
-])
-
-if test "x$ac_cv_RTENTRY_TYPE" = "xBSD-4.4"; then
-  AC_DEFINE(RTENTRY_4_4)
-fi
-
-# checking for alpha's ortentry vs rtentry
-if test "x$ac_cv_RTENTRY_TYPE" = "xunknown"; then
-AC_CACHE_CHECK(for struct rtentry, ac_cv_struct_rtentry,
-[AC_EGREP_CPP(ortentry, [#define KERNEL
-#include <net/route.h>
-],  ac_cv_struct_rtentry=ortentry,  ac_cv_struct_rtentry=rtentry )
-if test "x$ac_cv_struct_rtentry" = "xrtentry" ; then
-  ac_cv_struct_rtentry="rtentry"
-else
-  ac_cv_struct_rtentry="ortentry"
-fi
-])
-else
-  RTENTRY_TYPE="rtentry"
-  ac_cv_struct_rtentry="rtentry"
-fi
-
-if test "x$ac_cv_struct_rtentry" != "x"; then
-  AC_DEFINE_UNQUOTED(RTENTRY,struct ${ac_cv_struct_rtentry})
-else
-  AC_DEFINE(RTENTRY,struct rtentry)
-fi
-
-# check for 4.3's rtentry->rt_next
-if test "x$ac_cv_RTENTRY_TYPE" = "xBSD-4.3"; then
-AC_CACHE_CHECK(for struct rtentry has a rt_next node, 
-	ac_cv_struct_rtentry_rt_next,
-[
-AC_TRY_COMPILE([
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#include <net/route.h>
-],[
-struct rtentry rt; 
-rt.rt_next;
-], ac_cv_struct_rtentry_rt_next=yes,  ac_cv_struct_rtentry_rt_next=no )
-])
-
-if test "x$ac_cv_struct_rtentry_rt_next" = "xyes"; then
-  AC_DEFINE(RTENTRY_RT_NEXT)
-fi
-
-fi
-
-# Check sin6_scope_id member specified in RFC2553 additionally
-AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id],,,[
-AC_INCLUDES_DEFAULT()
-[#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-]])
-
-# Check struct rtentry for various things.
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#include <net/route.h>
-], rtentry, rt_unit)
-
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#include <net/route.h>
-], rtentry, rt_refcnt)
-
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#include <net/route.h>
-], rtentry, rt_hash)
-
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#include <sys/socket.h>
-#undef KERNEL
-#undef _KERNEL
-#include <net/route.h>
-], rtentry, rt_use)
-
-# Check tcpstat for tcpstat.tcp_rcvmemdrop
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#ifdef HAVE_SYS_TIMEOUT_H
-#include <sys/timeout.h>
-#endif
-#include <netinet/tcp.h>
-#ifdef HAVE_NETINET_TCP_TIMER_H
-#include <netinet/tcp_timer.h>
-#endif
-
-#ifdef HAVE_NETINET_TCP_VAR_H
-#include <netinet/tcp_var.h>
-#endif
-], tcpstat, tcp_rcvmemdrop)
-
-
-AC_CHECK_STRUCT_FOR([
-#ifdef IFNET_NEEDS_KERNEL
-#define KERNEL
-#if !defined(__DragonFly__)
-#define _KERNEL 1
-#endif
-#endif
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#ifdef HAVE_NET_IF_VAR_H
-#include <net/if_var.h>
-#endif
-], ifaddr, ifa_next)
-
-# Check ifnet entries using macro defined in aclocal.m4.
-#
-# XXX  Broken on FreeBSD where these are #define'd in <net/if.h>
-#
-AC_CHECK_IFNET_FOR(if_baudrate)
-AC_CHECK_IFNET_FOR(if_baudrate.ifs_value)
-AC_CHECK_IFNET_FOR(if_speed)
-AC_CHECK_IFNET_FOR(if_type)
-AC_CHECK_IFNET_FOR(if_imcasts)
-AC_CHECK_IFNET_FOR(if_iqdrops)
-AC_CHECK_IFNET_FOR(if_noproto)
-AC_CHECK_IFNET_FOR(if_omcasts)
-AC_CHECK_IFNET_FOR(if_xname,no)
-AC_CHECK_IFNET_FOR(if_lastchange.tv_sec)
-AC_CHECK_IFNET_FOR(if_lastchange.tv_nsec)
-AC_CHECK_IFNET_FOR(if_obytes)
-AC_CHECK_IFNET_FOR(if_ibytes)
-AC_CHECK_IFNET_FOR(if_addrlist)
-AC_CHECK_IFNET_FOR(if_addrhead.tqh_first)
-
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-#if HAVE_NETINET_UDP_H
-#include <netinet/udp.h>
-#endif
-#if HAVE_NETINET_UDP_VAR_H
-#include <netinet/udp_var.h>
-#endif
-],udpstat,udps_discard)
-
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-#if HAVE_NETINET_UDP_H
-#include <netinet/udp.h>
-#endif
-#if HAVE_NETINET_UDP_VAR_H
-#include <netinet/udp_var.h>
-#endif
-],udpstat,udps_noport)
-
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-#if HAVE_NETINET_UDP_H
-#include <netinet/udp.h>
-#endif
-#if HAVE_NETINET_UDP_VAR_H
-#include <netinet/udp_var.h>
-#endif
-],udpstat,udps_noportbcast)
-
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-#if HAVE_NETINET_UDP_H
-#include <netinet/udp.h>
-#endif
-#if HAVE_NETINET_UDP_VAR_H
-#include <netinet/udp_var.h>
-#endif
-],udpstat,udps_fullsock)
-
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#include <sys/types.h>
-#include <sys/socket.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <net/if.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IF_ETHER_H
-#include <netinet/if_ether.h>
-#endif
-],arphd,at_next)
-
-AC_CHECK_STRUCT_FOR([
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-#if HAVE_SYS_CONF_H
-#include <sys/conf.h>
-#endif
-],swdevt,sw_nblksenabled)
-
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if HAVE_SYS_STATFS_H
-#include <sys/statfs.h>
-#endif
-#if HAVE_SYS_STATVFS_H
-#include <sys/statvfs.h>
-#endif
-],statvfs,mnt_dir)
-
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if HAVE_SYS_STATFS_H
-#include <sys/statfs.h>
-#endif
-#if HAVE_SYS_STATVFS_H
-#include <sys/statvfs.h>
-#endif
-],statvfs,f_frsize)
-
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if HAVE_SYS_STATFS_H
-#include <sys/statfs.h>
-#endif
-#if HAVE_SYS_STATVFS_H
-#include <sys/statvfs.h>
-#endif
-],statfs,f_frsize)
-
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if HAVE_SYS_STATFS_H
-#include <sys/statfs.h>
-#endif
-#if HAVE_SYS_STATVFS_H
-#include <sys/statvfs.h>
-#endif
-],statvfs,f_files)
-
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if HAVE_SYS_STATFS_H
-#include <sys/statfs.h>
-#endif
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_MOUNT_H
-#include <sys/mount.h>
-#endif
-],statfs,f_files)
-
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if HAVE_SYS_STATFS_H
-#include <sys/statfs.h>
-#endif
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_MOUNT_H
-#include <sys/mount.h>
-#endif
-],statfs,f_ffree)
-
-AC_CHECK_STRUCT_FOR([
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-#if HAVE_SYS_STATFS_H
-#include <sys/statfs.h>
-#endif
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_MOUNT_H
-#include <sys/mount.h>
-#endif
-],statfs,f_favail)
-
-AC_CHECK_STRUCT_FOR([
-#if HAVE_NLIST_H
-#include <nlist.h>
-#endif
-],nlist,n_value)
-
-# struct nlist64 (IRIX)
-AC_CHECK_STRUCT_FOR([
-#if HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if HAVE_NLIST_H
-#include <nlist.h>
-#endif
-],nlist64, n_value)
-
-# struct ethtool_cmd
-AC_CHECK_MEMBERS([struct ethtool_cmd.speed_hi],,,[
-    AC_INCLUDES_DEFAULT()
-    [
-#ifdef HAVE_LINUX_ETHTOOL_H
-#include <linux/ethtool.h>
-#endif
-    ]])
-
-# check struct ipstat for various things
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-], ipstat, ips_cantforward)
-
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-], ipstat, ips_cantfrag)
-
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-], ipstat, ips_delivered)
-
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-], ipstat, ips_fragdropped)
-
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-], ipstat, ips_fragtimeout)
-
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-], ipstat, ips_fragmented)
-
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-], ipstat, ips_localout)
-
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-], ipstat, ips_noproto)
-
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-], ipstat, ips_noroute)
-
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-], ipstat, ips_odropped)
-
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-], ipstat, ips_ofragments)
-
-AC_CHECK_STRUCT_FOR([
-#include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if HAVE_NETINET_IP_VAR_H
-#include <netinet/ip_var.h>
-#endif
-], ipstat, ips_reassembled)
-
-# check for the des_ks_struct.weak_key attribute, which indicates the 
-# older openssl version is being used.
-if test "x$ac_cv_header_openssl_des_h" = "xyes" ; then
-AC_CHECK_STRUCT_FOR([
-#include <openssl/des.h>
-], des_ks_struct, weak_key)
-fi
-
-# attempt to figure out if sysctl is usable
-
-if test $cross_compiling = yes; then
-  AC_MSG_WARN([Can't check sysctl, manually define NETSNMP_CAN_USE_SYSCTL if platform support available])
-else
-  AC_CACHE_CHECK(if sysctl can read kernel information,ac_cv_NETSNMP_CAN_USE_SYSCTL,
-  [AC_TRY_RUN([
-#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
-#if HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#endif
-#include <sys/types.h>
-#if HAVE_SYS_SYSCTL_H
-# include <sys/sysctl.h>
-#endif
-
-main() {
-  int                 mib[2];
-  size_t              len;
-  struct timeval boottime;
-  
-  mib[0] = CTL_KERN;
-  mib[1] = KERN_BOOTTIME;
-  
-  len = sizeof(boottime);
-  sysctl(mib, 2, &boottime, &len, NULL, NULL);
-  if (boottime.tv_sec != 0)
-    exit(0);
-  else
-    exit(1);
-}
-  ], ac_cv_NETSNMP_CAN_USE_SYSCTL=yes, ac_cv_NETSNMP_CAN_USE_SYSCTL=no, ac_cv_NETSNMP_CAN_USE_SYSCTL=no)])
-fi
-
-if test "x$ac_cv_NETSNMP_CAN_USE_SYSCTL" = "xyes"; then
-  AC_DEFINE(NETSNMP_CAN_USE_SYSCTL)
-fi
-
-#
-# In FreeBSD 4.x, the TCP timer constants aren't.  They are defined
-# in terms of 'hz', the kernel clock tick.  In this case,
-# we need to have a local variable 'hz' in scope and set to a useful
-# value whenever we use one of these constants.
-#
-AC_CACHE_CHECK(whether TCP timers depend on 'hz',ac_cv_TCPTV_NEEDS_HZ,
-[AC_EGREP_CPP(hz,
-[#include <netinet/tcp_timer.h>
-TCPTV_SRTTDFLT
-], ac_cv_TCPTV_NEEDS_HZ=yes, ac_cv_TCPTV_NEEDS_HZ=no)])
-
-if test "x$ac_cv_TCPTV_NEEDS_HZ" = "xyes"; then
-  AC_DEFINE(TCPTV_NEEDS_HZ)
-fi
-
-#
-# define the agent libraries variables
-#
-AC_SUBST(LMIBLIBS)
-AC_SUBST(AGENTLIBS)
-AC_SUBST(OTHERAGENTLIBOBJS)
-AC_SUBST(OTHERAGENTLIBLOBJS)
-
-#
-# Prompt for various bits of user information
-#
-
-if test "x$ac_cv_user_prompt_NETSNMP_LOGFILE" = "x" -o "x$ac_cv_user_prompt_NETSNMP_SYS_LOC" = "x" -o "x$ac_cv_user_prompt_NETSNMP_SYS_CONTACT" = "x" -o "x$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" = "x"; then
-AC_CACHE_CHECK(whether to prompt for values, ac_cv_have_warned,
-[
-if test "x$defaults" = "xno"; then
-cat << EOF
-
-	 ************** Configuration Section **************
-
-	You are about to be prompted with a series of questions.  Answer
-them carefully, as they determine how the SNMP agent and related
-applications are to function.
-
-	After the configure script finishes, you can browse the newly
-created net-snmp-config.h file for further - less important - parameters to
-modify.  Be careful if you re-run configure though, since net-snmp-config.h 
-will be overwritten.
-
--Press return to continue-
-EOF
-
-read tmpinput
-ac_cv_have_warned="yes"
-else
-  ac_cv_have_warned="no"
-fi
-])
-else
-  ac_cv_have_warned="yes"
-fi
-
-ME=`$WHOAMI`
-if test -f /etc/resolv.conf; then
-  LOC=`cat /etc/resolv.conf | grep '^domain' | tail -1 | awk '{print $NF}'`
-else
-  LOC="@no.where"
-fi
-
-AC_PROMPT_USER(NETSNMP_DEFAULT_SNMP_VERSION,[
-
-*** Default SNMP Version:
-
-	Starting with Net-SNMP 5.0, you can choose the default version of
-the SNMP protocol to use when no version is given explicitly on the
-command line, or via an 'snmp.conf' file.  In the past this was set to
-SNMPv1, but you can use this to switch to SNMPv3 if desired.  SNMPv3
-will provide a more secure management environment (and thus you're
-encouraged to switch to SNMPv3), but may break existing scripts that
-rely on the old behaviour.  (Though such scripts will probably need to
-be changed to use the '-c' community flag anyway, as the SNMPv1
-command line usage has changed as well.).
-   At this prompt you can select \"1\", \"2\" (for SNMPv2c), or \"3\" as
-the default version for the command tools (snmpget, ...) to use.  This
-can always be overridden at runtime using the -v flag to the tools, or
-by using the \"defVersion\" token in your snmp.conf file.
-   Providing the --with-default-snmp-version=\"x\" parameter to ./configure
-will avoid this prompt.
-
-Default version of SNMP to use],3,unquoted)
-
-# we tested this above before the prompt, but the prompt may give a new value.
-if test "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" = "2c"; then
-  ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION="2"
-fi
-if test "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" != "1" -a "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" != "2" -a "$ac_cv_user_prompt_NETSNMP_DEFAULT_SNMP_VERSION" != "3"; then
-  AC_MSG_ERROR([Illegal version number.  Only 1, 2 (for SNMPv2c) and 3 are supported.])
-fi
-
-AC_PROMPT_USER(NETSNMP_SYS_CONTACT,[
-
-*** System Contact Information:
-
-	Describes who should be contacted about the host the agent is
-running on.  This information is available in the MIB-II tree.  This
-can also be over-ridden using the \"syscontact\" syntax in the agent's
-configuration files.
-  Providing the --with-sys-contact=\"contact\" parameter to ./configure
-will avoid this prompt.
-
-System Contact Information],$ME@$LOC,quoted)
-
-AC_PROMPT_USER(NETSNMP_SYS_LOC,[
-
-*** System Location:
-
-	Describes the location of the system.  This information is
-available in the MIB-II tree.  this can also be over-ridden using the
-\"syslocation\" syntax in the agent's configuration files.
-  Providing the --with-sys-location=\"location\" parameter to ./configure
-will avoid this prompt.
-
-System Location],Unknown,quoted)
-
-if test -d /var/log; then
-  defaultlog="/var/log/snmpd.log"
-else
-  defaultlog="/usr/adm/snmpd.log"
-fi
-  
-AC_PROMPT_USER(NETSNMP_LOGFILE,[
-
-*** Logfile location:
-
-	Enter the default location for the snmpd agent to dump
-information & errors to.  If not defined (enter the keyword \"none\"
-at the prompt below) the agent will use stdout and stderr instead.
-(Note: This value can be over-ridden using command line options.)
-  Providing the --with-logfile=\"path\" parameter to ./configure
-will avoid this prompt.
-
-Location to write logfile],$defaultlog,quoted)
-
-if test -d /var; then
-  defaultstore="/var/net-snmp"
-  ucddefaultstore="/var/ucd-snmp"
-else
-  defaultstore="/etc/net-snmp"
-  ucddefaultstore="/etc/ucd-snmp"
-fi
-  
-AC_PROMPT_USER(NETSNMP_PERSISTENT_DIRECTORY,[
-
-*** snmpd persistent storage location:
-
-	Enter a directory for the SNMP library to store persistent
-data in the form of a configuration file.  This default location is
-different than the old default location (which was for ucd-snmp).  If
-you stay with the new path, I'll ask you in a second if you wish to
-copy your files over to the new location (once only).  If you pick
-some other path than the default, you'll have to copy them yourself.
-There is nothing wrong with picking the old path ($ucddefaultstore) if
-you'd rather.
-  Providing the --with-persistent-directory=\"path\" parameter to
-./configure will avoid this prompt.
-
-Location to write persistent information],$defaultstore,quoted)
-
-PERSISTENT_DIRECTORY=$ac_cv_user_prompt_NETSNMP_PERSISTENT_DIRECTORY
-AC_SUBST(PERSISTENT_DIRECTORY)
-UCDPERSISTENT_DIRECTORY=$ucddefaultstore
-AC_SUBST(UCDPERSISTENT_DIRECTORY)
-
-if test $PERSISTENT_DIRECTORY = "$defaultstore" -a -d "$ucddefaultstore" -a ! -d "$defaultstore" ; then
-AC_CACHE_CHECK(If we should copy the old persistent directory, ac_cv_user_prompt_COPY_PERSISTENT_FILES,
-[
-AC_PROMPT_USER_NO_DEFINE(ac_cv_user_prompt_COPY_PERSISTENT_FILES,[
-
-*** Copying old ucd-snmp persistent files to net-snmp persistent directory:
-
-	Would you like to copy the older ucd-snmp persistent files
-into your new net-snmp persistent file path?  This will functionally
-save all your ucd-snmp data and let it be used within the net-snmp
-tools.  This will only be done once when you run make install.  If you
-wish to do this, enter "yes" at the prompt.
-  Providing the --with-copy-persistent-files=\"no\" (or \"yes\")
-parameters to ./configure will avoid this prompt.
-
-Copy ucd-snmp data into the net-snmp data directory],"yes")
-])
-else
-ac_cv_user_prompt_COPY_PERSISTENT_FILES="no"
-fi
-COPY_PERSISTENT_FILES="$ac_cv_user_prompt_COPY_PERSISTENT_FILES"
-AC_SUBST(COPY_PERSISTENT_FILES)
-
-AC_SUBST(DLLIBS)
-
-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])
-AC_CONFIG_FILES([apps/snmpnetstat/Makefile:Makefile.top:apps/snmpnetstat/Makefile.in:Makefile.rules:apps/snmpnetstat/Makefile.depend])
-AC_CONFIG_FILES([agent/Makefile:Makefile.top:agent/Makefile.in:Makefile.rules:agent/Makefile.depend])
-AC_CONFIG_FILES([agent/helpers/Makefile:Makefile.top:agent/helpers/Makefile.in:Makefile.rules:agent/helpers/Makefile.depend])
-AC_CONFIG_FILES([agent/mibgroup/Makefile:Makefile.top:agent/mibgroup/Makefile.in:Makefile.rules:agent/mibgroup/Makefile.depend])
-AC_CONFIG_FILES([local/Makefile:Makefile.top:local/Makefile.in:Makefile.rules])
-AC_CONFIG_FILES([testing/Makefile:Makefile.top:testing/Makefile.in])
-AC_CONFIG_FILES([man/Makefile:Makefile.top:man/Makefile.in:Makefile.rules])
-AC_CONFIG_FILES([mibs/Makefile:Makefile.top:mibs/Makefile.in:Makefile.rules])
-AC_CONFIG_FILES([net-snmp-config:net-snmp-config.in],
-		[chmod +x net-snmp-config])
-
-AC_CONFIG_COMMANDS([default], echo timestamp > stamp-h)
-
-#
-# protect PACKAGE_* variables
-#
-AH_VERBATIM([PACKAGE_BUGREPORT],[/* Define to the address where bug reports for this package should be sent. */
-#ifndef PACKAGE_BUGREPORT
-#undef PACKAGE_BUGREPORT
-#endif])
-AH_VERBATIM([PACKAGE_NAME],[/* Define to the full name of this package. */
-#ifndef PACKAGE_NAME
-#undef PACKAGE_NAME
-#endif])
-AH_VERBATIM([PACKAGE_STRING],[/* Define to the full name and version of this package. */
-#ifndef PACKAGE_STRING
-#undef PACKAGE_STRING
-#endif])
-AH_VERBATIM([PACKAGE_TARNAME],[/* Define to the one symbol short name of this package. */
-#ifndef PACKAGE_TARNAME
-#undef PACKAGE_TARNAME
-#endif])
-AH_VERBATIM([PACKAGE_VERSION],[/* Define to the version of this package. */
-#ifndef PACKAGE_VERSION
-#undef PACKAGE_VERSION
-#endif])
-
-AC_OUTPUT
-
-AC_MSG_CACHE_DISPLAY()
-# Local Variables:
-# mode: Autoconf
-# comment-start: "#"
-# End:
diff --git a/dist/Makefile b/dist/Makefile
new file mode 100644
index 0000000..772e6b8
--- /dev/null
+++ b/dist/Makefile
@@ -0,0 +1,133 @@
+# ======================================================================
+# $Source$
+# $Revision$
+# $Date$
+# $Author$
+# $Name$
+# $State$
+# ======================================================================
+
+# Makefile for generating rpm package files (.rpm) for net-snmp.
+
+# GNU 'make'-specific features are used in this makefile.
+# Other makes may or may not work with it.
+# See http://www.gnu.org/manual/make/index.html for details.
+
+SHELL = /bin/sh
+
+# Define the RPM package name
+NAME = net-snmp
+
+# Define the default RPM release number. Set by Version-Munge.pl
+VERSION = 5.7.3.rc1
+
+VERSION_TAG=`echo Ext-$(VERSION) | sed 's/\./-/g;'`
+
+WITH_PERL=1
+EMBED_PERL=1
+
+# Define the RPM architecture, i.e., 'ppc', 'i386', etc.
+ARCH = `uname -i`
+
+# Directory structure expected by 'rpm' program
+RPM_BASE := $(PWD)/rpm
+
+RPM_TREE := \
+    $(RPM_BASE)/BUILD \
+    $(RPM_BASE)/RPMS \
+    $(RPM_BASE)/SOURCES \
+    $(RPM_BASE)/SPECS \
+    $(RPM_BASE)/SRPMS
+
+.PHONY:	all clean rpm_files binary_rpm source_rpm all_rpm
+
+all:	all_rpm_files
+
+# Delete all generated files.
+clean:
+	rm -rf $(RPM_BASE)
+
+# --------------------------------------------------------------------
+# Macros and rules for updating net-snmp-x.x.x.tar.gz.
+# 'rpm' expects a compressed archive (.tar.gz) of the source directory
+# to exist (in the rpm/SOURCES directory) before it is run.
+# --------------------------------------------------------------------
+CVSROOT = :pserver:anonymous@net-snmp.cvs.sourceforge.net:/cvsroot/net-snmp
+
+PKG_VER := $(NAME)-$(VERSION)
+
+GZIP_TAR := $(RPM_BASE)/SOURCES/$(PKG_VER).tar.gz
+
+gzip_tar:	$(GZIP_TAR)
+
+$(GZIP_TAR):
+	@echo "Creating a compressed archive of the package's source files..."
+	(cd $(RPM_BASE)/SOURCES; \
+	cvs -d$(CVSROOT) login; \
+	cvs -z3 -d$(CVSROOT) export -r$(VERSION_TAG) $(NAME); \
+	mv $(NAME) $(PKG_VER); \
+	tar cf $(PKG_VER).tar $(PKG_VER); \
+	gzip $(PKG_VER).tar)
+	@echo "A compressed archive of the package's source-file tree has been created."
+
+# --------------------------------------------------------------------
+# Macros and rules for updating the binary and source RPM package files.
+# --------------------------------------------------------------------
+# Redefine '%_topdir' to allow an RPM package file to be built anywhere,
+# instead of in the /usr/src/redhat directory tree.
+#
+# Don't want 'rpmbuild' to strip your executable programs?
+# Then add this line:
+#   --define='_os_install_post /usr/lib/rpm/brp-compress' \
+# to the RPM_OPTS macro definition.  This will eliminate the 
+# stripping of binaries, but still retain the compression of
+# manual pages.
+#
+ifeq ($(WITH_PERL),0)
+PERLOPTS = --without perl_modules
+endif
+ifeq ($(EMBED_PERL),0)
+PERLOPTS += --without embedded_perl
+endif
+
+RPM_OPTS := \
+    --define='_topdir $(RPM_BASE)' \
+    --define='_includedir /usr/include/net-snmp' \
+    --target $(ARCH) $(PERLOPTS)
+
+SPEC_FILE  := $(NAME).spec
+RPM_SPEC   := $(RPM_BASE)/SPECS/$(SPEC_FILE)
+
+BINARY_RPM := $(RPM_BASE)/RPMS/$(ARCH)/$(PKG_VER)-$(RELEASE).$(ARCH).rpm
+SOURCE_RPM := $(RPM_BASE)/SRPMS/$(PKG_VER)-$(RELEASE).src.rpm
+
+rpm_files:	$(GZIP_TAR) all_rpm_files
+binary_rpm:	$(BINARY_RPM)
+source_rpm:	$(SOURCE_RPM)
+rpm_tree: $(RPM_TREE)
+
+all_rpm_files:	$(RPM_TREE) $(RPM_SPEC)
+	(cd $(RPM_BASE)/SPECS; \
+	rpmbuild -ba $(RPM_OPTS) $(SPEC_FILE))
+
+$(BINARY_RPM):	$(RPM_TREE) $(RPM_SPEC)
+	(cd $(RPM_BASE)/SPECS; \
+	rpmbuild -bb $(RPM_OPTS) $(SPEC_FILE))
+
+$(SOURCE_RPM):	$(RPM_TREE) $(RPM_SPEC)
+	(cd $(RPM_BASE)/SPECS; \
+	rpmbuild -bs $(RPM_OPTS) $(SPEC_FILE))
+
+$(RPM_SPEC):	$(RPM_BASE)/SPECS $(SPEC_FILE)
+	cp $(SPEC_FILE) $@
+
+$(RPM_TREE):
+	mkdir -p $@
+
+$(SPEC_FILE):
+	@echo "ERROR: missing '$(SPEC_FILE)' in the current directory"
+	@exit 1
+
+FORCE:
+
+# === End of Makefile === #
diff --git a/dist/README.build-scripts b/dist/README.build-scripts
new file mode 100644
index 0000000..9e06dfb
--- /dev/null
+++ b/dist/README.build-scripts
@@ -0,0 +1,108 @@
+******************************************************************************
+*
+* README.build-scripts
+*
+* Author: Robert Story <rstory@freesnmp.com>
+*
+* $Id$
+*
+******************************************************************************
+
+
+Introduction
+============
+
+The automated build script will automatically run configure, 'make all',
+'make test' and 'make install'. Log files are kept for each step, and the
+scripts should abort when errors occur.
+
+The usage of nsb-package is:
+
+ Usage: nsb-package [-c] [-d] [-p] [-s SRCD] [-b BUILDD] [-i INSTALLD] VERSION
+  
+    VERSION    : release number (eg 5.2.2)
+    -s SRCDIR  : soure directory [$HOME/src/net-snmp-VERSION]
+    -b BUILDD  : build directory [$HOME/build/]
+                 NOTE-platform will be appended to build directory
+    -i INSTALLD: install directory [$HOME/build/\$PLATFORM/usr/local]
+   
+    -c : skip configure
+    -d : dirty build (don't make distclean)
+    -m : skip 'make all'
+    -p : don't pause at prompts in between stages
+    -t : skip 'make test'
+
+
+The defaults assume you have a 'src', 'build' and 'binaries' directory in
+your home directory.
+
+
+
+Recommended Procedure
+=====================
+
+1) Log into Sourceforge Compile Farm Server
+
+2) Update source (this will likely be automated in the future)
+
+   For example, for release 5.0.3:
+
+   $ cd ~/src
+   $ CVS_RSH=ssh cvs -d $USER@cvs.net-snmp.org:/cvsroot/net-snmp \
+         -q co -r Ext-5-0-3 -d ~/src/net-snmp-Ext-5-0-3 net-snmp
+
+3) Run the package script. 
+
+   $ $HOME/src/net-snmp-cvs/dist/nsb-package -r \
+        -s $HOME/src/net-snmp-5.0.5 5.0.5
+
+4) Create tarball (assuming no errors; see next section if there are errors)
+
+   $ cd ~/build/`nsb-platform`
+   $ tar cvf net-snmp-5.0.3-`nsb-platform`.tar usr
+   $ gzip --best *.tar
+
+5) Copy tarball to Sourceforge shell sever
+
+   $ scp *.gz net-snmp.sourceforge.net:~/binaries/
+
+6) Log out of compile farm server, log into shell server
+
+7) Upload to Sourceforge
+
+   $ ftp upload.sourceforge.net
+     >bin
+     >put *.gz
+
+8) Update binaries via Sourceforge admin page
+
+
+
+Builds with errors
+==================
+
+Should you encounter a build error, you will most likely want to skip the
+'make distclean' and configure step (assuming the problem wasn't with
+configure!). To do this, specify the 'dirty' and 'skip configure' options:
+
+   $ nsb-package -p -d -c Ext-5-0-3
+
+
+Should the build succeed, but some tests fail during 'make test', you probably
+can to skip the test step to get to the install step:
+
+   $ nsb-package -p -d -c -t Ext-5-0-3
+
+
+OTHER PROBLEMS
+--------------
+* "Cannot find nsb-functions"
+  
+   It's a hack, but symlink nsb-functions and nsb-package to your local
+   bin directory ($HOME/bin).  I'm trying to think of a better solution.
+
+* "gcc: snmp_version.lo: No such file or directory"
+
+   This is a good indication that you have previously build in your
+   source directory. 'make distclean' in your source directory, or
+   check out a fresh new version from CVS.
diff --git a/dist/RELEASE-INSTRUCTIONS b/dist/RELEASE-INSTRUCTIONS
new file mode 100644
index 0000000..56a4161
--- /dev/null
+++ b/dist/RELEASE-INSTRUCTIONS
@@ -0,0 +1,1001 @@
+This is a summary of the steps required to make a new release.  Do not
+attempt to run these manually - instead use the 'makerelease'
+application and makerelease.xml file.  Get 'makerelease' from the
+makerelease SVN repository:
+
+  svn co https://makerelease.svn.sourceforge.net/svnroot/makerelease/trunk/makerelease
+  cd makerelease
+  perl Makefile.PL
+  make
+  sudo make install
+
+Then to run it from a directory to release:
+
+  makerelease -c NETSNMPTRUNK/dist/makerelease.xml
+
+It will prompt you for all needed information and tasks to be done.
+
+IMPORTANT NOTE:
+    Don't *ever* release a second tar ball under the same name as the
+    first.  It's much much much better to release another version
+    instead, since you don't have to figure out from the bug reports
+    that a user really grabbed the first snapshot instead of the
+    second when they complain about version "XXX" not working.
+
+====== makerelease -n output showing makerelease documented steps ======
+
+STEP: 1: Setup Steps
+
+  This set of steps will do some preliminary "safety" checks to ensure the
+  local environment is ok and setup some important information.
+
+  ===== Entering Step: 1 =====
+
+STEP: 1.1: Setup Checck
+
+  This should show the last version number published in this branch by
+  looking at the time line in the README file:
+
+  Commands to execute:
+
+    head -1 README
+
+STEP: 1.2: Pick a Version Number
+
+  Please enter the version number to publish.  Net-SNMP convention dictates
+  that this be a version number like 5.4 or 5.4.1.  Pre-releases that occur
+  before a branch freezes should be appended with ".preN" like 5.4.1.pre2. 
+  Release-candidates should be labeled ".rcN" like 5.4.1.rc1.
+
+  Decide on a value for parameter 'VERSION'
+
+    parameter: VERSION
+
+    prompt:    Enter the new version number:
+
+STEP: 1.3: Defining a second internal version string
+
+  Internal perl code will be executed
+
+STEP: 1.4: Release Parameter Information
+
+  Here is the configured information we'll be using:
+
+  VERSION:		   {VERSION}
+
+  VERSION with dashes:	   {VERSIONDASHES}
+
+  Floating point VERSION:  {VERSIONFLOAT}
+
+  SVN Branch URL:	   {BRANCHPATH}
+
+STEP: 1.5: update
+
+  We need to make sure your code is up to date and matches the latest
+  sources in this branch.
+
+  Commands to execute:
+
+    svn update
+
+STEP: 1.6: Check for changes
+
+  This steps looks for outstanding files that have been modified.  There
+  should be no outstanding modifications!  If this step finds outstanding
+  modified files you need to check them in or revert them before
+  continuing!
+
+  Commands to execute:
+
+    svn -u status | egrep '^[^\?]'
+
+  (Leaving Step: 1)
+
+STEP: 2: Source Code Setup
+
+  This set of steps will modify various places within the source code tree
+  to bring it up to date with the new version number about to be published.
+
+  ===== Entering Step: 2 =====
+
+STEP: 2.1: Libtool / Library versioning setup
+
+  These steps will modify the various files in the source tree that contain
+  the version number, show you the changes that will be made and then check
+  in the resulting changes if you approve of them.
+
+  ===== Entering Step: 2.1 =====
+
+STEP: 2.1.1: version:libtoolmanualedit
+
+  You (may) need to edit Makefile.top to update the library version
+  numbering (usually just for the first pre-release of a given version). 
+  See the comments in RELEASE-INSTRUCTIONS about LIBCURRENT, LIBAGE and
+  LIBREVISION.
+
+  This script will commit the file for you after you're done.
+
+STEP: 2.1.2: version:commit
+
+  We'll now commit the Makefile.top file if you've modified it.
+
+  Commands to execute:
+
+    svn commit -m "version update" Makefile.top
+
+  (Leaving Step: 2.1)
+
+STEP: 2.2: Change The Version Number
+
+  These steps will modify the various files in the source tree that contain
+  the version number, show you the changes that will be made and then check
+  in the resulting changes if you approve of them.
+
+  ===== Entering Step: 2.2 =====
+
+STEP: 2.2.1: Modify the source files
+
+  We will now modify files through the code to replace the version number
+  with the newer one.
+
+  Modifying files:
+
+    replacing: 'VERSION = '(.*)'' with: 'VERSION = \'{VERSIONFLOAT}\''
+
+
+    files:  glob=ARRAY(0x8dc9064)
+
+      perl/SNMP/SNMP.pm
+
+      perl/agent/agent.pm
+
+      perl/agent/Support/Support.pm
+
+      perl/agent/default_store/default_store.pm
+
+      perl/default_store/default_store.pm
+
+      perl/OID/OID.pm
+
+      perl/ASN/ASN.pm
+
+      perl/AnyData_SNMP/Storage.pm
+
+      perl/AnyData_SNMP/Format.pm
+
+      perl/TrapReceiver/TrapReceiver.pm
+
+
+
+  Modifying files:
+
+    replacing: 'NetSnmpVersionInfo = "[\d\.]+"' with: 'NetSnmpVersionInfo =
+  "{VERSION}"'
+
+
+    files:  glob=ARRAY(0x8dc8fd4)
+
+      snmplib/snmp_version.c
+
+
+
+  Modifying files:
+
+    replacing: 'Version: [\.0-9a-zA-Z]+' with: 'Version: {VERSION}'
+
+
+    files:  glob=ARRAY(0x8dc8f44)
+
+      README
+
+      FAQ
+
+      dist/net-snmp.spec
+
+
+
+  Modifying files:
+
+    replacing: 'VERSION = [\.0-9a-zA-Z]+' with: 'VERSION = {VERSION}'
+
+
+    files:  glob=ARRAY(0x8dc8ed4)
+
+      dist/Makefile
+
+
+
+  Modifying files:
+
+    replacing: 'AC_INIT\(\[Net-SNMP\], \[([^\]]+)\]' with:
+  'AC_INIT([Net-SNMP], [{VERSION}]'
+
+
+    files:  glob=ARRAY(0x8dc8e64)
+
+      configure.in
+
+
+
+  Modifying files:
+
+    replacing: 'NetSnmpVersionInfo = "[^"]+"' with: 'NetSnmpVersionInfo =
+  "{VERSION}"'
+
+
+    files:  glob=ARRAY(0x8dc8df4)
+
+      snmplib/snmp_version.c
+
+
+
+STEP: 2.2.2: Running autoconf to rebuild configure
+
+  We modified configure.in, so we now need to run autoconf to rebuild
+  configure.
+
+  XXX: in the future we should verify the correct autoconf version number
+
+  Commands to execute:
+
+    autoconf
+
+STEP: 2.2.3: Running svn diff to check changes
+
+  Check the following changes for proper version number differences before
+  we commit the chances.
+
+  Commands to execute:
+
+    svn diff
+
+STEP: 2.2.4: Running svn commit to commit the changes
+
+  Check the changes in the above diff and then we'll commit the results
+  here if they look ok.
+
+  Commands to execute:
+
+    svn commit -m "Version number update"
+
+  (Leaving Step: 2.2)
+
+STEP: 2.3: docs:make
+
+  This step will create manual pages from doxygen instrumented code files.
+
+  Commands to execute:
+
+    make docs
+
+    make mancp
+
+STEP: 2.4: docs:update
+
+  This will run svn status to figure out what files have changed since the
+  previous man page generation steps were done.  After this step, we'll
+  commit all the modified files.
+
+  You may find additional files (marked with a ?) that should be added to
+  the svn repository and you'll need to do this by hand before going on to
+  the next step.
+
+  Note: based on a recent net-snmp-admin discussion, we're no longer going
+  to be adding the bazillions of man pages that doxygen generates by
+  default.  Only important ones should be added.
+
+  Commands to execute:
+
+    svn -u status man
+
+STEP: 2.5: docs:manualaddnewman
+
+  Update man/Makefile.in with details of any new man pages, and run 'svn
+  add' on them.
+
+  I'll commit these changes for you after you're done.
+
+STEP: 2.6: docs:commit
+
+  Commands to execute:
+
+    svn commit -m "documentation update" man
+
+  (Leaving Step: 2)
+
+STEP: 3: Testing Steps
+
+  These steps will help you test the source code to ensure it passes some
+  simple "it works" tests.
+
+  ===== Entering Step: 3 =====
+
+STEP: 3.1: build:distclean
+
+  First we need to clean the existing build tree and start from scratch.
+
+  Commands to execute:
+
+    make distclean
+
+STEP: 3.2: build:configure
+
+  We need to run configure to set up the build tree.
+
+  Commands to execute:
+
+    ./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
+
+STEP: 3.3: build:make
+
+  Then we need to build the code
+
+  Commands to execute:
+
+    make
+
+STEP: 3.4: build:test
+
+  Now we run "make test" which should produce a perfect set up test
+  results.  If not, this needs to be fixed or at least understood and
+  accepted as is for some other reason.
+
+  Commands to execute:
+
+    make test TESTOPTS=-n
+
+STEP: 3.5: code:checkcomments
+
+  This command looks for source code oddities and policy violations.
+
+  Commands to execute:
+
+    make checks
+
+  (Leaving Step: 3)
+
+STEP: 4: Release File Steps
+
+  Certain files in the distribution and built on a per-release basis. 
+  These steps will help set up these files.
+
+  ===== Entering Step: 4 =====
+
+STEP: 4.1: code:makedepend
+
+  This step creates Makefile dependencies using the "distdepend" rule in
+  the top level Makefile.
+
+  Commands to execute:
+
+    make distdepend
+
+STEP: 4.2: code:commitdepend
+
+  This step commits the dependency changes done in the previous step.
+
+  Commands to execute:
+
+    svn commit -m "make depend" `find . -name Makefile.depend`
+
+STEP: 4.3: changelog:svn2cl
+
+  We need to extract the portions of the change logs committed to the
+  repository.
+
+  Commands to execute:
+
+    svn2cl -f ChangeLog.add --break-before-msg --stop-on-copy
+
+    perl dist/changelogfix  < ChangeLog.add > ChangeLog.reallyadd
+
+STEP: 4.4: changelog:manualedit
+
+  You need to manually insert the *relevent* portions of
+  'ChangeLog.reallyadd' into the ChangeLog file. I'll commit these changes
+  for you after you finish cutting out the proper changes.
+
+STEP: 4.5: changelog:commit
+
+  Commands to execute:
+
+    svn commit -m "version update" ChangeLog
+
+STEP: 4.6: docs:newnews
+
+  Commands to execute:
+
+    perl dist/extractnews -s ----- -e ----- ChangeLog
+
+STEP: 4.7: docs:newnews
+
+  Commands to execute:
+
+    perl dist/extractnews -c CHANGES.new2 -n NEWS.new2 ChangeLog.reallyadd
+
+STEP: 4.8: docs:README
+
+  You need to manually insert the relevent portions of 'CHANGES.new' and
+  'NEWS.new' into the CHANGES and NEWS file. (There are alternative
+  versions in 'CHANGES.new2' and 'NEWS.new2') You may wish to update the
+  README file as well. I'll commit these changes for you afterwards
+
+STEP: 4.9: docs:commit
+
+  Commands to execute:
+
+    svn commit -m "version update" README NEWS CHANGES
+
+STEP: 4.10: release:update
+
+  One more svn update and status to make sure nothing odd exists in your
+  source tree.	Please check the results!
+
+  Commands to execute:
+
+    svn -u status
+
+  (Leaving Step: 4)
+
+STEP: 5: Make the Release
+
+  This is it!  After this point it's much harder to turn back.	If
+  everything is ok until this point and you're ready to actually stamp the
+  release in SVN and make release files, these steps will do that for you.
+
+  ===== Entering Step: 5 =====
+
+STEP: 5.1: release:tag
+
+  This will actually svn copy the current checked out branch to the new tag
+  name.  Specifically:
+
+  svn copy {BRANCHPATH} .../tags/Ext-{VERSIONDASHES}
+
+  Commands to execute:
+
+    svn copy -m "{VERSION} release" {BRANCHPATH}
+  https://net-snmp.svn.sourceforge.net/svnroot/net-snmp/tags/Ext-{VERSIONDA
+  SHES}
+
+STEP: 5.2: release:makedist
+
+  Commands to execute:
+
+    svn export
+  https://net-snmp.svn.sourceforge.net/svnroot/net-snmp/tags/Ext-{VERSIONDA
+  SHES}/net-snmp net-snmp-{VERSION}
+
+STEP: 5.3: release:removefiles
+
+  Commands to execute:
+
+    net-snmp-{VERSION}/remove-files net-snmp-{VERSION}
+
+STEP: 5.4: release:makedist
+
+  Commands to execute:
+
+    star artype=ustar -c -z -f net-snmp-{VERSION}.tar.gz 
+  net-snmp-{VERSION}
+
+STEP: 5.5: release:makezipclean
+
+  Commands to execute:
+
+    rm -f net-snmp-{VERSION}.zip
+
+STEP: 5.6: release:makezip
+
+  Commands to execute:
+
+    zip -r net-snmp-{VERSION}.zip  net-snmp-{VERSION}
+
+STEP: 5.7: release:searching-gpg-keys
+
+  Commands to execute:
+
+    gpg --list-secret-keys net-snmp-admin
+
+STEP: 5.8: release:gpg
+
+  Commands to execute:
+
+    gpg -u 317F8F64 -a --detach-sign net-snmp-{VERSION}.tar.gz
+
+STEP: 5.9: release:gpg
+
+  Commands to execute:
+
+    gpg -u 317F8F64 -a --detach-sign net-snmp-{VERSION}.zip
+
+STEP: 5.10: Release File Test
+
+  We'll also re-build the source and retest a few things to ensure the
+  packaged file can actually be built.
+
+  ===== Entering Step: 5.10 =====
+
+STEP: 5.10.1: posttest:untar
+
+  Commands to execute:
+
+    rm -rf net-snmp-{VERSION}
+
+STEP: 5.10.2: posttest:untar
+
+  Commands to execute:
+
+    tar xzf net-snmp-{VERSION}.tar.gz
+
+STEP: 5.10.3: posttest:configure
+
+  Commands to execute:
+
+    cd net-snmp-{VERSION} && ./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
+
+STEP: 5.10.4: posttest:make
+
+  Commands to execute:
+
+    cd net-snmp-{VERSION} && make
+
+STEP: 5.10.5: posttest:test
+
+  Commands to execute:
+
+    cd net-snmp-{VERSION} && make test
+
+  (Leaving Step: 5.10)
+
+  (Leaving Step: 5)
+
+STEP: 6: Release the results
+
+  Now we'll publish the results to the SF server
+
+  ===== Entering Step: 6 =====
+
+STEP: 6.1: rsync the new files
+
+  This will copy the results to the SF uploads directory in your account on
+  frs.sourceforge.net
+
+  Commands to execute:
+
+    rsync -v net-snmp-{VERSION}.tar.gz net-snmp-{VERSION}.tar.gz.asc
+  net-snmp-{VERSION}.zip net-snmp-{VERSION}.zip.asc
+  frs.sourceforge.net:uploads/
+
+STEP: 6.2: Update the SF release web page
+
+  Commands to execute:
+
+    firefox
+  'http://sourceforge.net/project/admin/editpackages.php?group_id=12694'
+
+  (Leaving Step: 6)
+
+STEP: 7: 
+
+  Binaries: build rpms, .tar.gzs, etc.
+
+STEP: 8: Advertise it!
+
+  ===== Entering Step: 8 =====
+
+STEP: 8.1: 
+
+  Add a note to the source forge news system:
+
+  http://sourceforge.net/news/submit.php?group_id=12694
+
+  Commands to execute:
+
+    firefox 'http://sourceforge.net/news/submit.php?group_id=12694'
+
+STEP: 8.2: 
+
+  Send an announcement message to one of the following mailing lists based
+  on it's type:
+
+  pre:	  net-snmp-coders@lists.sourceforge.net
+
+  rc:	  net-snmp-users@lists.sourceforge.net
+
+  final:  net-snmp-announce@lists.sourceforge.net
+
+STEP: 8.3: 
+
+  Update the topic on the #Net-SNMP channel if this is a trunk based
+  release.
+
+STEP: 8.4: 
+
+  Update the freshmeat listing (Wes needs to do this):
+
+  http://freshmeat.net/projects/net-snmp/
+
+  Commands to execute:
+
+    firefox http://freshmeat.net/projects/net-snmp/
+
+  (Leaving Step: 8)
+
+STEP: 9: 
+
+  Advertise: NEWS upload to sf, publish on -announce, freshmeat, and the
+  GNU FSF directory (http://directory.fsf.org/project/net-snmp/)... (send
+  mail to bug-directory@gnu.org)
+
+
+
+
+
+====== BEGIN OBSOLETE (pre-makerelease) DOCUMENTATION ======
+
+***************************************************************************
+TESTING:
+
+  1) Update the source tree to catch all recent commits,
+     and check that all local changes have been committed.
+
+     $ svn -u status
+     $ svn    update
+
+  2) Change the libtool version information in Makefile.top.
+     See MANUAL - STEP 1 later in these instructions.
+     'makerelease' will commit this file automatically.
+
+  3) Configure the suite with as many modules as possible,
+     build and test it.  The makerelease script will use
+     the options:
+
+      $ ./configure  '--with-mib-modules=host examples examples/example  \
+                              testhandler smux Rmon disman/event-mib'    \
+                      --with-transports=IPX  --enable-ipv6               \
+                      --enable-embedded-perl --enable-shared
+
+     Ideally this should be repeated on as many systems as possible
+     (including running "make install").  However the makerelease
+     script will only test things on the current box, and will not
+     try to install the software.
+
+
+***************************************************************************
+DOCUMENTATION:
+
+  4)  Update the version number in the doxygen.conf file
+      (handled automatically by 'makerelease') and generate
+      the doxygen extracted manual pages.
+
+        $ make docs
+        $ make mancp
+
+     'makerelease' will commit this file automatically.
+     Note that any new man pages should be added to Makefile.in.
+     This is *NOT* currently handled by the makerelease script.
+
+  5) Check the code for illegal constructs (e.g. C++ style comments
+     or GNU make specific constructs in Makefiles):
+
+        $ make checks
+
+  6) Update Makefile dependencies:
+
+        $ make distdepend
+
+     'makerelease' will commit these dependencies automatically.
+
+  7) Update the ChangeLog file with details of all (recent) changes
+     to the suite.  See MANUAL - STEP 2 later in these instructions.
+     'makerelease' will commit this file automatically.
+
+  8) Update the README, NEWS, and CHANGES files with details of
+     significant changes to the suite.  See MANUAL - STEP 3 later
+     in these instructions.
+     'makerelease' will commit these files automatically.
+
+
+***************************************************************************
+RELEASE:
+
+  9) Make sure all changes are checked in:
+
+       $ svn -u status
+       $ svn    update
+
+     [Note that this step is omitted when running "makerelease"]
+
+ 10) Change the version number in various files
+       (README, FAQ, configure.in, net-snmp.spec and assorted Perl modules).
+     'makerelease' will update and commit these files automatically.
+
+ 11) Create a tag checkpoint for this release:
+
+       $ svn copy  /trunk                 /tags/Ext-5-x
+     or
+       $ svn copy  /branches/V5-x-patches /tags/Ext-5-x-y
+
+ 12) Construct the source packages:
+
+        $ svn export /tags/Ext-5-x-y/net-snmp net-snmp-5.x.y
+        $ net-snmp-5.x.y/remove-files         net-snmp-5.x.y
+        $ star artype=ustar -c -z -f net-snmp-5.x.y.tar.gz    net-snmp-5.x.y
+        $ rm -f net-snmp-5.x.y.zip"
+        $ zip -r net-snmp-5.x.y.zip net-snmp-5.x.y"
+
+
+ 13) Sign (or checksum) the packages:
+
+     Wes/Robert:
+        $ gpg -u net-snmp-admin -a --detach-sign net-snmp-5.x.y.tar.gz
+        $ gpg -u net-snmp-admin -a --detach-sign net-snmp-5.x.y.zip
+     Others:
+        $ md5sum net-snmp-5.x.y.tar.gz > net-snmp-5.x.y.tar.gz.md5
+        $ md5sum net-snmp-5.x.y.zip    > net-snmp-5.x.y.zip.md5
+
+
+***************************************************************************
+RELEASE TESTING:
+
+ 14) Unpack a clean copy of the tarball, configure, build and
+     test the release tarball.
+
+ 15) Double-check that there are no outstanding changes that have
+     been missed from the CVS checkin:
+
+        $ svn status
+
+Note:  This is the last stage that is handled by the "makerelease" script
+       Everything following will need to be done manually.
+
+ 15) Upload the packages (and signature files) to the SourceForge server:
+ 
+        $ ncftpput upload.sf.net incoming net-snmp-5.x.y.tar.gz
+        $ ncftpput upload.sf.net incoming net-snmp-5.x.y.zip
+        * SF pages:  "Admin" -> "File Releases"
+        * net-snmp:  "Add Release" (or "Edit Release")
+        * Create (or choose) an appropriate release name
+             e.g.  "5.x.y source code"  (or "5.x.y pre-releases")
+        * "Edit This Release"
+        * Select the tarball and/or other relevant files
+
+ 16) Announce the release on the appropriate list.
+     Pre-release announcements (and a call for testing) should be
+     sent to net-snmp-coders, release-candidates to net-snmp-users.
+
+     Full releases should be announced on net-snmp-users, and as a
+     news item on the project home page - including the NEWS snippet
+     of significant changes since the last release.
+
+ 17) Update the following htdocs files (in the main SVN trunk):
+         htdocs/download.html
+         htdocs/dev/schedule.html
+
+     [Make sure you have permissions set up properly on the web
+      server so that files created become group-writable!!!]
+
+     That concludes the process for pre-releases and release-candidates.
+     For full releases, wait a week to ensure that there are no major
+     problems, before continuing with the remaining steps.
+
+        If there are known problems and another release is planned to
+     fix them, don't announce the broken version - wait for the updated
+     one instead.
+
+ 18) Once this week has elapsed, submit an announement of the new
+     release to net-snmp-announce.  This message will need to be
+     explicitly authorized via MailMan.
+
+     Also update the IRC topic to include mention of this release.
+
+ 19) For a release on the most recent development line, start bugging
+     Wes to update the freshmeat, Free Software Directory and
+     Wikipedia entries.
+
+ 20) For a release on the most recent development line, update the
+     'htdocs/page-top.html' file (in the main SVN trunk) to reference
+     the latest version.
+
+     Update the following files with any changes:
+
+         htdocs/docs/readmefiles/NEWS
+         htdocs/docs/readmefiles/CHANGES
+         htdocs/docs/readmefiles/README*
+         htdocs/COPYING
+
+     [Make sure you have permissions set up properly on the web
+      server so that files created become group-writable!!!]
+         
+
+ 21) For a major new-feature release (i.e. 5.x), create the patches
+     branch:
+
+        $ svn copy  /tags/Ext-5-x   /branches/V5-x-patches
+
+     and update the SVN main trunk with a new version number:
+
+        $ local/Version-Munge.pl -v 5.(x+1).dev -M -P -C
+
+     The 1 week delay (and continued code freeze) is to to ensure that
+     developer effort is concentrated on immediate problems following
+     the release.  Any major problems should hopefully come to light
+     during this period, so after a week it should be safe to create
+     the patches branch and officially end the code freeze on MAIN.
+
+ 22) Update the official patches tracker set:
+
+     - any patches for this new release tarball should be given
+       priority 9
+     - all patches for the previous release on this line should
+       be marked at priority 5
+     - all patches for earlier releases on this line should
+       be marked at priority 1, and closed
+
+     If a line has been designated closed, then all official
+     patches for that line should be marked as closed as well.
+
+ 23) Hide the pre-release repository from the File Releases
+     admin pages.
+
+ 24) Clean up the 'dist' dir of the relevant V5-x-patches branch.
+     Only leave the following files:
+
+     changelogfix  cvsshow  cvsup  extractnews  makerelease
+     net-snmp.spec  snmpd-init.d  snmptrapd-init.d
+
+     Note that any files removed should also be deleted from
+     SVN repository.
+
+
+***************************************************************************
+CREATING BINARY DISTRIBUTIONS
+
+  0) Always REMOVE ALL PREVIOUS INSTALLS FIRST, then do a make install
+     from the tar-ball extracted sources and *THEN* rebuild all
+     binaries again.  This ensures that everything (especially perl
+     modules) are properly linked against the right libraries.
+
+  1) always build releases from a tarball, not from SVN.
+
+  2) Add mib modules that are common.  Basically, add:
+
+       host                      -- where supported.
+       disman/event-mib
+       smux
+
+  3) use --with-defaults --with-syscontact="Unknown" 
+                         --with-syslocation="Unknown"
+
+  4) when running make install, do it like:
+
+     $ make install prefix=/some/path/to/home/ARCH/usr/local \
+            exec_prefix=/some/path/to/home/ARCH/usr/local
+    
+  5) Tar it up:
+
+     $ cd /some/path/to/home/ARCH
+     $ tar czf net-snmp-5.0.3-ARCH.tar.gz usr/local
+
+  6) upload and release, like you did for the source code but with a
+     different package name for binaries (5.0.3 binaries).
+
+  7) RPMs [do this in main line even if its for a patch branch]:
+     $ cd dist
+     $ cp ../net-snmp-5.0.8.tar.gz rpm/SOURCES
+     $ make RELEASE=1
+     
+     This should put multiple binary rpm files in:
+       dist/rpm/RPMS/i386/
+     And one source RPM in:
+       dist/rpm/SRPMS/
+
+     *** These files need to be renamed to include the OS version.
+
+         EG: ...i386.rpm needs to become ...fc5.i386.rpm
+
+  8) Remove (or hide) binaries from older releases of the same line,
+     where you have submitted a newer binary for the same architecture.
+     Once the last binary for a particular release version has been
+     removed, hide that repository.
+     
+
+***************************************************************************
+***************************************************************************
+MANUAL - STEP 1
+
+  Changing the libtool version information in Makefile.top.
+
+      - If any interfaces/structures have been removed or changed since the
+        last update, increment current (+5), and set age and revision to 0.
+        Stop!
+
+      - If any interfaces have been added since the last public release,
+        then increment current and age, and set revision to 0.
+        Stop!
+
+      - If the source code has changed at all since the last update,
+        then increment revision (c:r:a becomes c:r+1:a).
+
+      Note: maintenance releases (eg 5.2.x) should never have changes
+            that would require current to be incremented.
+
+  The check-api-changes script in the dist directory will construct a
+  diff of all headers, which can be useful for determining if anything
+  needs bumping.
+
+     Update these variables now, so that when you run
+     make in a second to test things you can spot libtool yelling
+     about improper numbering before you make the release and not
+     after you've uploaded the tar ball :-/
+
+
+***************************************************************************
+MANUAL - STEP 2
+
+  Changing the libtool version information in Makefile.top.
+  Updating the ChangeLog file
+
+      - The ChangeLog entries are extracted (normally automatically)
+        using the command:
+
+          $ svn2cl -f ChangeLog.add --break-before-msg --stop-on-copy
+
+        If you don't have svn2cl installed, you can try and find a
+        suitable binary package for your architecture, or you can
+        get it directly from
+              http://ch.tudelft.nl/~arthur/svn2cl
+        You may need to rename the script from 'svn2cl.sh' to 'svn2cl'
+
+      - In either case, they are fixed up (automatically) using:
+
+          $ perl dist/changelogfix < ChangeLog.add > ChangeLog.reallyadd
+        or
+          $ perl dist/changelogfix V5-{N}-patches < ChangeLog.add > ChangeLog.reallyadd
+
+      - The manual processing step is to insert the appropriate portion
+        of the file 'ChangeLog.reallyadd' into 'ChangeLog'.  You can
+        usually find the point where the previous release started in
+        the file by searching for "version tag".
+
+      - Please keep the line of dashes at the top of the file, as this
+        makes it easier to copy during the next release.
+
+      - If using emacs, switch from changelog-mode to text-mode.
+
+      - Check in the new ChangeLog:
+
+          $ svn commit -m "update for release X" ChangeLog
+
+        This is done automatically by "makerelease"
+
+
+***************************************************************************
+MANUAL - STEP 3
+
+Updating README, NEWS, and CHANGES files
+
+  [ This information has been moved to:
+
+  http://www.net-snmp.org/wiki/index.php/Commit_message_auto-extraction_formats
+
+  ]
+
+However, leaving some examples here for quick referral:
+
+  SVN commit messages that generate auto-NEWS and auto-CHANGES
+  extractions should be formatted like the following examples:
+
+    NEWS: snmpd: I did something really cool to the agent
+    CHANGES: snmptrapd: fixed something minor in snmptrapd
+    NEWS: perl: PATCH: 123,456: Applied patches 123 and 456 to support perl6
+    CHANGES: BUG: 13: Fixed bug 13 & secured the world at large against hackers
+    NEWS: perl: PATCH: 123: from Robert: did something
+    NEWS: perl: PATCH: 123: from "Robert Story": did something else
diff --git a/dist/autoconf-version b/dist/autoconf-version
index acc0797..264f2ce 100644
--- a/dist/autoconf-version
+++ b/dist/autoconf-version
@@ -1 +1 @@
-2.59
+2.68
diff --git a/dist/check-api-change b/dist/check-api-change
new file mode 100755
index 0000000..1f61e42
--- /dev/null
+++ b/dist/check-api-change
@@ -0,0 +1,54 @@
+#!/bin/sh
+#
+# simplistic script to check all header files for
+# differences. Intended to help detect api changes
+# between releases.
+#
+# it's not pretty or efficient, and inspection of
+# the results must be done manually.
+#
+# it's also not secure (don't run as root)
+# or portable. Tested on Linux.
+#
+
+if [ "x$1" = "x" -o "x$2" = "x" ]; then
+   echo "Usage: $0 <old-dir> <new-dir>"
+   exit 1
+fi
+
+od=$1
+nd=$2
+DIR=/tmp
+OUTPUT=$DIR/api-diff.pat
+ODT=$DIR/api-od
+
+if [ ! -d $od ]; then
+   echo "old dir $od doesn't exist"
+   exit 1
+fi
+
+if [ ! -d $nd ]; then
+   echo "old dir $nd doesn't exist"
+   exit 1
+fi
+
+# find header in nd
+rm -f $OUTPUT $ODT 2>/dev/null
+(cd $od && find . -type f -name "*.h"|sort > $ODT)
+
+OH=`cat $ODT`
+for h in $OH
+do
+   nh=$nd/$h
+   oh=$od/$h
+   echo "* $nh"
+   if [ -f "$nh" ]; then
+      echo "* diff: $h vs $nh" >> $OUTPUT
+      diff -u $oh $nh >> $OUTPUT 2>&1
+   else
+      echo "* Old header $h not found in new headers" >> $OUTPUT
+   fi
+done
+
+echo "Inspect output in $OUTPUT"
+echo "See Makefile.top for libtool version bumping rules."
diff --git a/dist/cvsshow b/dist/cvsshow
index 623b32d..7539595 100755
--- a/dist/cvsshow
+++ b/dist/cvsshow
@@ -1,46 +1,69 @@
-#!/bin/bash
-#
-# $Id$
+#!/bin/sh
 #
 export CVS_RSH=ssh
 TAG=
 
-if [ $# -eq 0 ]; then
-	DIR=.
-else
-	if [ $# -ne 1 ]; then
-		echo "usage: $0 <working directory>"
-		exit
-	fi
-	DIR=$1
-fi
-
-if [ ! -d $DIR ]; then
-	echo "no such directory '$DIR'"
-	exit
-fi
-
-if [ ! -d $DIR/CVS ]; then
-	echo "'$DIR' has no CVS directory!"
-	exit
-fi
-
-if [ ! -f $DIR/CVS/Repository ]; then
+do_cvs()
+{
+   DIR=$1
+   if [ ! -f $DIR/CVS/Repository ]; then
 	echo "'$DIR' has no CVS/Repository!"
 	exit
-fi
+   fi
 
-if [ ! -f $DIR/CVS/Root ]; then
+   if [ ! -f $DIR/CVS/Root ]; then
 	echo "'$DIR' has no CVS/Root!"
 	exit
-fi
+   fi
 
-if [ -f $DIR/CVS/Tag ]; then
+   if [ -f $DIR/CVS/Tag ]; then
 	TAG="-r `cat $DIR/CVS/Tag | cut -c 2-`"
+   fi
+
+   REP="`cat $DIR/CVS/Repository`"
+   ROOT="`cat $DIR/CVS/Root`"
+
+   echo "Directory $DIR is rooted at $ROOT, $TAG $REP..."
+   echo "   update with cvs -z3 -d $ROOT -q co $TAG -d $DIR $REP"
+}
+
+do_svn()
+{
+   DIR=$1
+   if [ ! -d $DIR/.svn ]; then
+	echo "'$DIR' has no .svn/ subdir!"
+	exit
+   fi
+
+   ROOT=`svn info | grep URL|cut -f2 -d " "`
+   if [ -z "$ROOT" ]; then
+      echo "Couldn't find root from $DIR/.svn/entries"
+      exit 1
+   fi
+
+   echo "Directory $DIR is rooted at $ROOT..."
+   echo "   update with svn co $ROOT $DIR"
+}
+
+if [ $# -eq 0 ]; then
+	DIRS=.
+else
+	DIRS=$@
 fi
 
-REP="`cat $DIR/CVS/Repository`"
-ROOT="`cat $DIR/CVS/Root`"
+for d in $DIRS
+do
+   if [ ! -d $d ]; then
+	echo "no such directory '$d'"
+	exit
+   fi
 
-echo "Directory $DIR is rooted at $ROOT, $TAG $REP..."
-echo "update with cvs -z3 -d $ROOT -q co $TAG -d $DIR $REP"
+   if [ -d $d/CVS ]; then
+	do_cvs $d
+   elif [ -d $d/.svn ]; then
+	do_svn $d
+   else
+	echo "'$d' has neither CVS nor SVN information!"
+   fi
+done
+
diff --git a/dist/cvsup b/dist/cvsup
index 08c8a75..ca07b0f 100755
--- a/dist/cvsup
+++ b/dist/cvsup
@@ -1,8 +1,8 @@
-#!/usr/bin/env bash
+#!/bin/sh
 #
 # $Id$
 #
-export CVS_RSH=ssh
+CVS_RSH=ssh; export CVS_RSH
 TAG=
 WO=0
 DEST=
@@ -18,6 +18,7 @@
         TAR='/usr/bin/star -Hustar -not -pat="*/CVS/*" -c -f'
     elif [ -x /bin/tar ]; then
         TAR="/bin/tar --exclude=CVS -c -f"
+        echo "warning: star not available, using (less portable) tar..."
     else
         echo "neither /usr/bin/star nor /bin/tar found."
         exit
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 b/dist/makerelease
deleted file mode 100755
index b46b9f9..0000000
--- a/dist/makerelease
+++ /dev/null
@@ -1,355 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use Pod::Usage;
-
-
-my %opts;
-my $descr;
-
-LocalGetOptions(\%opts,
-	   ['r|regexp-ignore-steps=s','Ignore these REGEXP steps'],
-	   ['s|start-at=s',           'Skip all steps until ARG'],
-	   ['i|interactive',          'Prompt whether to do each step'],
-	   ['n|dry-run',     'Dry run only.  Don\'t actually do anything.'],
-	   ['h|help', 'Help']);
-
-pod2usage(1) if ($opts{'h'});
-my $version = shift;
-pod2usage( "No version supplied" ) if (!$version);
-my $extrajunk = shift;
-pod2usage( "Unexpected argument ($extrajunk)" ) if ($extrajunk);
-my $vtag   = $version;
-my $branch = "";
-# Ensure we have both numeric and tag-style version labels
-# plus the branch that we're working from (if relevant)
-if ( $version =~ /^Ext/) {
-    $version =~ s/^Ext-//g;
-    $version =~ s/-/./g;
-} else {
-    $vtag =~ s/\./-/g;
-    $vtag = "Ext-" . $vtag;
-}
-if ( $version =~ /^([0-9]\.[0-9])\.[0-9]/) {
-    ($branch = $version) =~ s/([0-9]\.[0-9])\.[0-9].*/\1/;
-    $branch =~ s/\./-/;
-    $branch = "V${branch}-patches";
-}
-
-# Make sure we're at the root of the build tree
-#  (if we're in the dist directory, then cd ..)
-chdir("..") if (-f 'makerelease');
-die "Not at root of build tree" if (! -f 'configure.in');
-
-#
-#  TESTING:
-#
-# Step 1) Ensure the build tree is up to date
-System("update","svn -u status");
-System("update","svn -q update");
-
-# Step 2) Change the libtool version information in Makefile.top
-manualstep('version:manualedit',
-	   "You (may) need to edit Makefile.top to update the library version numbering
-     (usually just for the first pre-release of a given version).
-        See the comments in RELEASE-INSTRUCTIONS
-        about LIBCURRENT, LIBAGE and LIBREVISION.
-
-  I'll commit the file for you after you're done
-");
-System("version:commit",
-       "svn commit -m \"version update\" Makefile.top");
-
-# Step 3) configure and build and test it
-my $transportargs = "";
-if ( $^O eq "linux" ) {
-    $transportargs = "--with-transports=IPX";
-}
-my $configureargs = "--cache=config.cache --with-defaults ".
-    "--with-mib-modules='     examples examples/example   ".
-    "  testhandler smux Rmon'                             ".
-    " $transportargs        --enable-ipv6                 ".
-    "--enable-embedded-perl --enable-shared";
-System("build:distclean","make distclean") if (-f 'Makefile');
-System("build:configure","./configure $configureargs");
-System("build:make","make");
-System("build:test","make test TESTOPTS=-n");
-
-#
-# DOCUMENTATION
-#
-# Step 4) Update doxygen version number, and generate man pages
-System("docs:doxygenconf",
-       "perl local/Version-Munge.pl -v $version -M -P -C -t doxygen");
-System("docs:make","make docs");
-System("docs:mancp","make mancp");
-System("docs:update","svn -u status man");
-manualstep('docs:manualaddnewman',
-  "Update man/Makefile.in with details of any new man pages,
-  and run 'svn add' on them.
-  I'll commit these changes for you after you're done
-");
-System("docs:commit","svn commit -m \"documentation update\" man");
-
-# Step 5) Check code for illegal constructs
-System("code:checkcomments","make checks");
-
-# Step 6) Update Makefile dependencies
-System("code:makedepend","make distdepend");
-System("code:commitdepend","svn commit -m \"make depend\" `find . -name Makefile.depend`");
-
-# Step 7) Update ChangeLog
-#   XXX: May need to extend the folding line-length,
-#        to avoid svn2cl mangling CHANGES/NEWS entries
-System("changelog:svn2cl",
-       "svn2cl -f ChangeLog.add --break-before-msg --stop-on-copy");
-System("changelog:changelogfix",
-       "perl dist/changelogfix $branch < ChangeLog.add > ChangeLog.reallyadd");
-manualstep("changelog:manualedit",
-           "You need to manually insert the *relevent* portions of
-  'ChangeLog.reallyadd' into the ChangeLog file.
-  I'll commit these changes for you afterwards");
-System("changelog:commit","svn commit -m \"version update\" ChangeLog");
-
-# Step 8) Update README/NEWS/CHANGES
-System("docs:newnews",
-       "perl dist/extractnews -s ----- -e ----- ChangeLog");
-System("docs:newnews",
-       "perl dist/extractnews -c CHANGES.new2 -n NEWS.new2 ChangeLog.reallyadd");
-manualstep("docs:README",
-           "You need to manually insert the relevent portions of
-  'CHANGES.new' and 'NEWS.new' into the CHANGES and NEWS file.
-  (There are alternative versions in 'CHANGES.new2' and 'NEWS.new2')
-  You may wish to update the README file as well.
-  I'll commit these changes for you afterwards");
-System("docs:commit",
-       "svn commit -m \"version update\" README NEWS CHANGES");
-
-#
-# RELEASE
-#
-# Step  9)  Resync code (omitted)
-# Step 10)  Update version
-System("release:versionstamp",
-       "perl local/Version-Munge.pl -v $version -M -P -C");
-
-# Step 11)  Create the release tag checkpoint
-my $root="https://net-snmp.svn.sourceforge.net/svnroot/net-snmp";
-if ( $branch ) {
-    System("release:tag",
-       "svn copy -m \"$version release\" $root/branches/$branch $root/tags/$vtag");
-} else {
-    System("release:tag",
-       "svn copy -m \"$version release\" $root/trunk $root/tags/$vtag");
-}
-
-# Step 12)  Construct the tarball
-my $tar = "star artype=ustar";    # XXX - check for star/gtar/etc
-System("release:makedist",
-       "svn export $root/tags/${vtag}/net-snmp net-snmp-$version");
-System("release:removefiles",
-       "net-snmp-$version/remove-files net-snmp-$version");
-System("release:makedist",
-       "$tar -c -z -f net-snmp-${version}.tar.gz  net-snmp-$version");
-System("release:makezipclean",
-       "rm -f net-snmp-${version}.zip");
-System("release:makezip",
-       "zip -r net-snmp-${version}.zip  net-snmp-$version");
-
-
-# Step 13)  Sign (or checksum) the package
-my $sig1;
-my $sig2;
-my $pkg1 = "net-snmp-${version}.tar.gz";
-my $pkg2 = "net-snmp-${version}.zip";
-
-System("release:searching-gpg-keys",
-       "gpg --list-secret-keys net-snmp-admin");
-if($? != 0) {
-    $sig1 = "${pkg1}.md5";
-    $sig2 = "${pkg2}.md5";
-    System("release:md5","md5sum $pkg1 > $sig1");
-    System("release:md5","md5sum $pkg2 > $sig2");
-} else {
-    # currently only rstory and hardaker have the gpg keys till Wes
-    # sees someone else in person ;-)
-    $sig1 = "${pkg1}.asc";
-    System("release:gpg","gpg -u net-snmp-admin -a --detach-sign $pkg1");
-    $sig2 = "${pkg2}.asc";
-    System("release:gpg","gpg -u net-snmp-admin -a --detach-sign $pkg2");
-}
-
-#
-#  RELEASE TESTING:
-#
-# Step 14)  Unpack, build and test the release tarball
-System("posttest:untar", "rm -rf net-snmp-${version}");
-System("posttest:untar", "tar xzf net-snmp-${version}.tar.gz");
-chdir("net-snmp-${version}");
-System("posttest:configure","./configure $configureargs");
-System("posttest:make","make");
-System("posttest:test","make test");
-chdir("..");
-
-# Step 15)  Double-check there are no outstanding changes
-System("release:update","svn -u status");
-
-#
-# Steps 16 and following are NOT handled automatically.
-# See the RELEASE-INSTRUCTIONS for full details.
-#
-print STDERR "**************************************** FINISHED ********************\n";
-print STDERR "\nDouble check the SVN status output above for any outstanding changes\n\n";
-print STDERR "Run the following command to upload the relase to SF:\n";
-print STDERR "  rsync -v  $pkg1 $pkg2 $sig1 $sig2 frs.sourceforge.net:uploads/\n";
-print STDERR "See RELEASE-INSTRUCTIONS for any additional steps\n";
-
-
-######################################################################
-sub System {
-    my $name = shift;
-    my $cmd = $descr = join(" ", @_);
-    my $rc;
-    while (dostep($name)) {
-	print STDERR "  running: ",$cmd,"\n";
-	last if ($opts{'n'});
-	system(@_);
-	$rc = checkresult();
-        last if ($rc == 0);
-    }
-}
-
-sub checkresult {
-    if ($?) {
-	print STDERR "The above STEP failed.  Continue anyway (y/n/r)?  ";
-	my $ans = <STDIN>;
-        return 1 if ($ans =~ /^r/);
-	if ($ans =~ /^n/) {
-	    print STDERR "  EXITING\n";
-	    exit;
-	}
-    }
-   return 0;
-}
-
-sub dostep {
-    my $name = shift;
-    print STDERR "\n********** STEP: $name ******************************\n";
-    if ($descr) {
-	print STDERR "  [$descr]\n";
-	$descr = undef;
-    }
-    print "\n";
-    if ($opts{'s'} && $name ne $opts{'s'}) {
-	print STDERR "      [skipping]\n";
-	return 0;
-    }
-    $opts{'s'} = '';
-    if ($opts{r} && $name =~ /$opts{r}/) {
-	print STDERR "      [skipping]\n";
-	return 0;
-    } elsif ($opts{'i'}) {
-	print STDERR "  Do this step (y/n/q)?  ";
-	my $ans = <STDIN>;
-	if ($ans =~ /^n/) {
-	    print STDERR "      [skipping]\n";
-	    return 0;
-	}
-	if ($ans =~ /^q/) {
-	    print STDERR "      QUITTING\n";
-	    exit;
-	}
-    }
-    return 1;
-}
-
-sub manualstep {
-    my $tag = shift;
-
-    if (dostep($tag)) {
-	print STDERR "\n\n",join(" ",@_);
-
-	print STDERR "\n\n  Hit return when done:  ";
-
-	return 1 if ($opts{'n'});
-
-	my $bogus = <STDIN>;
-	return 1;
-    }
-    return 0;
-}
-
-#######################################################################
-# getopt long gui portability code
-#
-sub LocalGetOptions {
-    if (eval {require Getopt::GUI::Long;}) {
-	import Getopt::GUI::Long;
-	Getopt::GUI::Long::Configure(qw(display_help no_ignore_case));
-	return GetOptions(@_);
-    } else {
-	require Getopt::Long;
-	Getopt::Long::Configure(qw(auto_help no_ignore_case));
-	import Getopt::Long;
-    }
-    GetOptions(LocalOptionsMap(@_));
-}
-
-sub LocalOptionsMap {
-    my ($st, $cb, @opts) = ((ref($_[0]) eq 'HASH')
-			    ? (1, 1, $_[0]) : (0, 2));
-    for (my $i = $st; $i <= $#_; $i += $cb) {
-	if ($_[$i]) {
-	    next if (ref($_[$i]) eq 'ARRAY' && $_[$i][0] =~ /^GUI:/);
-	    push @opts, ((ref($_[$i]) eq 'ARRAY') ? $_[$i][0] : $_[$i]);
-	    push @opts, $_[$i+1] if ($cb == 2);
-	}
-    }
-    return @opts;
-}
-
-__END__
-
-=head1 NAME
-
-makerelease - software package release script
-
-=head1 SYNOPSIS
-
-makerelease [options] version
-
-=head1 ARGUMENTS
-
-For full releases, the version should be specified in the form  I<5.x.y>
-
-For pre-releases, the version should be specified in the form  I<5.x.y.preN>
-
-For release candidates, the version should be specified in the form  I<5.x.y.rcN>
-
-Alternatively, it is also possible to specify versions in the form  Ext-5-x-y
-
-=head1 OPTIONS
-
-=over 8
-
-=item B<-r {step}| --regexp-ignore-steps={step}>
-
-Ignore steps matching the regular expression {step}
-
-=item B<-s {step}| --start-at={step}>
-
-Skip all steps preceding the specified (exact) {step}
-
-=item B<-i | --interactive>
-
-Prompt whether or not to execute each step
-
-=item B<-n | --dry-run>
-
-Print the commands that would be executed, but do not execute them.
-
-=item B<-h | --help>
-
-Display this help message.
-
-=back
diff --git a/dist/makerelease.xml b/dist/makerelease.xml
index 25b7a9d..b1cbd48 100644
--- a/dist/makerelease.xml
+++ b/dist/makerelease.xml
@@ -279,7 +279,7 @@
 	      </text>
 	      <commands>
 	        <command>git checkout V5-4-patches</command>
-	        <command>echo {BRANCHPATH} >> dist/release </command>
+	        <command>echo {BRANCHPATH} rc >> dist/release </command>
 	        <command ignoreerror="1">git commit -m "Release Candidate for {BRANCHPATH}" dist/release</command>
 	        <command>git checkout {BRANCHPATH} </command>
 	        <command>git merge V5-4-patches    </command>
@@ -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">
@@ -371,12 +371,30 @@
 	    <command>NETSNMP_DONT_CHECK_VERSION=1 make</command>
 	  </commands>
 	</step>
-	<step type="system" stepname="build:test" title="build:test">
+	<step type="system" stepname="build:test" title="testing: default tests">
 	  <text>Now we run "make test" which should produce a perfect
 	  set up test results.  If not, this needs to be fixed or at
 	  least understood and accepted as is for some other reason.</text>
 	  <commands>
-	    <command>make test TESTOPTS=-n</command>
+	    <command>make test</command>
+	  </commands>
+	</step>
+	<step type="system" stepname="build:test:unit" title="testing: unit-tests">
+	  <text>Now we run the unit-tests which should also produce a perfect
+	  set up test results.  If not, this needs to be fixed or at
+	  least understood and accepted as is for some other reason.</text>
+	  <commands>
+	    <command>cd testing &amp;&amp; ./RUNFULLTESTS -g unit-tests</command>
+	  </commands>
+	</step>
+	<step type="system" stepname="build:test:transports" title="testing: transports">
+	  <text>Now we run the transport tests which should also
+	  produce a perfect set up test results, if your machine
+	  supports all the transports.  If not, this needs to be fixed
+	  or at least understood and accepted as is for some other
+	  reason (like you can't do IPv6 on your system).</text>
+	  <commands>
+	    <command>cd testing &amp;&amp; ./RUNFULLTESTS -g transports</command>
 	  </commands>
 	</step>
 	<step type="system" stepname="code:checkcomments" title="code:checkcomments">
diff --git a/dist/net-snmp-solaris-build/DEVENV b/dist/net-snmp-solaris-build/DEVENV
new file mode 100644
index 0000000..b905cae
--- /dev/null
+++ b/dist/net-snmp-solaris-build/DEVENV
@@ -0,0 +1,44 @@
+PREFIX=/opt/OSS
+export PREFIX
+
+PATH=$PREFIX/bin:/usr/bin:/usr/dt/bin:/usr/openwin/bin:/usr/sbin:/usr/ccs/bin:/usr/ucb
+export PATH
+
+LD_LIBRARY_PATH=$PREFIX/lib 
+LD_RUN_PATH=$LD_LIBRARY_PATH
+export LD_LIBRARY_PATH LD_RUN_PATH
+
+CC=gcc
+export CC
+
+CPPFLAGS="-I$PREFIX/include"
+CFLAGS="-mv8 -mtune=ultrasparc"
+LDFLAGS="-L$PREFIX/lib -R$PREFIX/lib"
+export CPPFLAGS CFLAGS LDFLAGS
+
+TMP=/tmp
+export TMP
+
+TOP=/ctbto/idc/cicn/source/build/`basename $PREFIX`
+export TOP
+
+SRC=$TOP/dist
+export SRC
+
+WORK=$TOP/work
+export WORK
+
+
+# for superpack:
+
+CHECKLIST=$TOP/Checklist; export CHECKLIST
+MAKE=$PREFIX/bin/make
+export MAKE
+
+#CATEGORY=OpenSource; export CATEGORY
+#VENDOR="Free Software Foundation"; export VENDOR
+BASEDIR=/opt; export BASEDIR
+PREFIX=$BASEDIR/`basename $TOP`; export PREFIX
+RELEASE_AREA=$TOP/../packages/`/bin/uname -p`/`/bin/uname -r`; export RELEASE_AREA
+
+umask 022
diff --git a/dist/net-snmp-solaris-build/README b/dist/net-snmp-solaris-build/README
new file mode 100644
index 0000000..53e25a6
--- /dev/null
+++ b/dist/net-snmp-solaris-build/README
@@ -0,0 +1,19 @@
+The "buildpackage-solaris" script does a "one-shot" build 
+and packaging of an untarred net-snmp distribution 
+on Solaris without requiring root access. 
+ 
+The resulting native Solaris package can then be 
+(automatically) installed/removed using the Solaris 
+pkgadd(1)/pkgrm(1) commands. 
+ 
+The script requires customization of your 
+development environment - see attached file 
+DEVENV - before it can be used. 
+ 
+ Basic usage: ./buildpackage-solaris distclean 
+ 
+The script "elfdepend.sh" is required to 
+determine the dependencies of all built ELF binaries 
+and libraries to create a "package dependency file" - 
+see depend(4). 
+ 
diff --git a/dist/net-snmp-solaris-build/buildpackage-solaris b/dist/net-snmp-solaris-build/buildpackage-solaris
new file mode 100644
index 0000000..31f4f0c
--- /dev/null
+++ b/dist/net-snmp-solaris-build/buildpackage-solaris
@@ -0,0 +1,182 @@
+#!/bin/ksh
+#
+# automatic build (configure/make/package) script 
+# for NET-SNMP on Solaris
+#
+# 2004/11 Rewrite to strictly build the package jfrank@fastrieve.com
+# 2002/11 Stefan.Radman@CTBTO.ORG
+
+
+# If you define DEBUG, the script will be verbose, and we won't remove temporary files
+
+#DEBUG=Y
+if [ ! -z $DEBUG ]; then
+   set -x # be verbose
+fi
+
+# TMP is where we are temporarily installing the package to
+TMP=`pwd`/pkgroot
+
+# PKG is the internal and external name for the package
+PKG=OSSnet-snmp
+
+#PREFIX is the top level architecture dependent directory.
+# This should be normally determined by configure
+#prefix=/opt/${PKG}
+prefix=/usr/local
+
+# VARDIR is the persistent dir from configure
+VARDIR=/var/net-snmp
+
+expandedprefix=${TMP}/${prefix}
+
+PERL=${PERL:=`which perl`}
+MAKE=${MAKE:=`which make`}
+
+if [ -d ${TMP} ]; then
+   rm -rf ${TMP};
+fi
+
+# install to temporary package build root
+cd ../..
+
+$MAKE install prefix=${expandedprefix} exec_prefix=${expandedprefix} || exit 1
+
+# We now have the main software installed, copy over the auxillary files
+cd -
+
+awk /^___snmpd-init.d/,/___EOF/ $0 | grep -v ^___ | sed "s,@prefix@,$prefix,g" >|snmpd-init.d
+
+# create persistent directory if it does not exist
+[ -d $TMP/$VARDIR ] || install -d -m 0755 $TMP/$VARDIR 
+
+# postinstall
+LD_LIBRARY_PATH=$TMP$prefix/lib:$LD_LIBRARY_PATH $TMP/$prefix/bin/snmptranslate\
+  -M$TMP/$prefix/share/snmp/mibs -m SNMPv2-SMI .1 >&- || exit $? # create MIB index
+
+# package
+version=`../../net-snmp-config --version`
+os=`uname -s`
+rel=`uname -r`
+class=snmp
+owner=$LOGNAME
+groups | awk '{print $1}' | read group
+cat <<== >|pkginfo
+PKG="${PKG}"
+NAME="net-snmp-$version"
+ARCH="`uname -p`"
+VERSION="$version, $os $rel, `date +%Y.%m.%d.%H.%M.%S`"
+CATEGORY="OpenSource"
+DESC="The NET-SNMP Tools and Library"
+VENDOR="http://net-snmp.sourceforge.net"
+CLASSES="$class"
+BASEDIR="$prefix"
+==
+. ./pkginfo
+
+echo 'checking dependencies'
+unset LD_LIBRARY_PATH # binaries and libraries should have RPATH now
+./elfdepend.sh $TMP | grep -v "P  *$PKG " >|depend # ignore own package
+
+echo 'creating prototype file'
+cat <<== >|prototype
+i pkginfo
+i copyright=../../COPYING
+#i preinstall=./preinstall-postremove
+#i postinstall=./preinstall-postremove
+i depend
+# set default mode, owner and group
+! default 0775 root sys
+d snmp /etc 0755 root sys
+d snmp /etc/init.d 0755 root sys
+f snmp /etc/init.d/snmpd=./snmpd-init.d 0755 root sys
+#l snmp /etc/rc2.d/S76snmpd=/etc/init.d/snmpd # not yet
+==
+
+pkgproto -c snmp $TMP=/ |\
+egrep -v '^d .* / |^d .* /var |^d .* /opt |^ .*perllocal.pod=' |\
+sed -e "s/ $owner $group\$//" >> prototype || exit $?
+# and ignore top level directories (must pre-exist)
+
+echo 'creating package'
+pkgmk -od . || exit $?
+pkgtrans . $PKG-$version-$ARCH-$os$rel.pkg $PKG || exit $?
+
+# We should really do some cleanup here
+if [ -z $DEBUG ]; then
+   rm -rf snmpd-init.d $PKG $TMP pkginfo prototype depend 
+fi
+
+echo "build was successfull"
+exit 0
+
+# /etc/init/snmpd
+# This is packaged inside of buildpackage-solaris because we need to substitute
+# in the actual server name.
+
+___snmpd-init.d___
+#! /bin/sh
+#
+# start/stop the NET-SNMP master agent (snmpd)
+#
+# Location:      /etc/init.d/snmpd
+#                /etc/rc3.d/S??snmpd
+#
+name="NET-SNMP agent"
+daemon=@prefix@/sbin/snmpd
+
+case "$1" in
+start)
+        [ ! -x $daemon ] && echo "ERROR: cannot start $name ($daemon)" && exit 1
+        echo "Starting $name ... \c"
+        PGREP=`which pgrep`
+        if [ -z $PGREP ]; then
+           pid=`pgrep -fx $daemon`
+        else
+           pid=`ps -ef | grep $daemon | grep -v grep | awk '{print $2}'`
+        fi
+
+        [ ! -z "$pid" ] && echo "already running with pid $pid." && exit 0
+        $daemon && echo "done."
+        ;;
+stop)
+        echo "Stopping $name ... \c"
+        PGREP=`which pgrep`
+        if [ -z $PGREP ]; then
+           pid=`pgrep -fx $daemon`
+        else
+           pid=`ps -ef | grep $daemon | grep -v grep | awk '{print $2}'`
+        fi
+        [ ! -z "$pid" ] && (kill $pid && echo "done" ) || echo "not running"
+
+        ;;
+status)
+        echo "$name is \c"
+        PGREP=`which pgrep`
+        if [ -z $PGREP ]; then
+           pid=`pgrep -fx $daemon`
+        else
+           pid=`ps -ef | grep $daemon | grep -v grep | awk '{print $2}'`
+        fi
+        [ -z "$pid" ] && echo "not running" || echo "running with pid $pid"
+        ;;
+restart)
+        $0 stop && $0 start
+        ;;
+reload)
+        echo "Re-initializing $name ...\c"
+        PGREP=`which pgrep`
+        if [ -z $PGREP ]; then
+           pid=`pgrep -fx $daemon`
+        else
+           pid=`ps -ef | grep $daemon | grep -v grep | awk '{print $2}'`
+        fi
+        [ ! -z "$pid" ] && (kill -HUP $pid && echo "done" ) || echo "not running"
+        ;;
+*)
+        echo "Usage: $0 { start | stop | status | restart | reload }"
+        ;;
+esac
+
+exit 0
+___EOF___
diff --git a/dist/net-snmp-solaris-build/elfdepend.sh b/dist/net-snmp-solaris-build/elfdepend.sh
new file mode 100755
index 0000000..547c4cc
--- /dev/null
+++ b/dist/net-snmp-solaris-build/elfdepend.sh
@@ -0,0 +1,87 @@
+#!/bin/ksh
+#
+# elfdepend.sh
+#
+# given a path, this scripts searches for ELF binaries and libraries
+# and generates package dependency file entries according to ther dependencies
+#
+# Usage: elfdepend <ELF-binary>|<directory>
+#
+# 2002/11 Stefan.Radman@CTBTO.ORG
+#
+# /var/sadm/install/contents format:
+#
+# /dev d none 0775 root sys SUNWcsr SUNWcsd
+# path type class mode owner group packages
+# /etc/.login f renamenew 0644 root sys 516 37956 904647695 SUNWcsr
+# /etc/acct/holidays e preserve 0664 bin bin 289 22090 904647603 SUNWaccr
+# path type class mode owner group x x x packages
+# /bin=./usr/bin s none SUNWcsr
+# path=link type class packages
+# /devices/pseudo/clone@0:hme c none 11 7 0600 root sys SUNWcsd
+# path type class x x owner mode packages
+#
+# types e (sed), v (volatile) have same format like type f (file)
+# type l (hardlink) has same format like type s (symlink)
+#
+prog=`basename $0`
+LAST_CHANCE=/opt/OSS/lib
+
+if [ -d "$1" ] ; then
+  find $1 -type f -exec file {} \;
+elif [ -x "$1" ] ; then
+  file $1
+else
+  echo 1>&2 "usage: $0 <directory>|<ELF executable>"
+  exit 1
+fi | awk '$2 == "ELF" { print }' | cut -d: -f1 |\
+while read elf
+do
+  ldd "$elf" | while read lib x path
+  do
+    [ -z "$path" ] && continue
+    if [ "$path" = '(file not found)' ]
+    then
+      if [ -x $LAST_CHANCE/$lib ]
+      then
+        path="$LAST_CHANCE/$lib"
+      else
+        echo "# $prog: $lib $x $path"
+        continue # not found
+      fi
+    fi
+    echo "$path"
+    # need symlink handling here - see /usr/platform/SUNW,*/lib/*
+  done
+done | sort -u | while read libpath other
+do
+  [ "$libpath" = "#" ] && echo "$libpath $other" && continue # error message
+  set -- `grep "^$libpath[ =]"  /var/sadm/install/contents | head -1`
+  path=$1; type=$2
+  case $type in
+    f) # file
+      shift 9 # first package
+      ;;
+    s|l) # link
+      shift 3 # first package
+      ;;
+    '') # not found
+      echo "# $prog: $libpath is not associated with any package"
+      continue
+      ;;
+    *) # dubious file type
+      echo "# $prog: path $1 has dubious file type $2"
+      continue
+      ;;
+  esac
+  set -- `echo $1 | tr : ' '`
+  echo $1 # strip off classes
+done | sort -u | while read pkg other
+do
+  if [ "$pkg" = "#" ] ; then # error message
+    echo 1>&2 "$other" # goes to stderr
+    continue
+  fi
+  eval `pkgparam -v $pkg PKG NAME`
+  printf "P  %-15s%s\n" "$PKG" "$NAME"
+done
diff --git a/dist/net-snmp.spec b/dist/net-snmp.spec
index 6ac4a9f..d9f2e1b 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.4.4
+Version: 5.7.3.rc1
 # update release for vendor release. (eg 1.fc6, 1.rh72, 1.ydl3, 1.ydl23)
 Release: 1
 URL: http://www.net-snmp.org/
@@ -133,7 +133,7 @@
 	--enable-shared \
 	%{?netsnmp_perl_modules: --with-perl-modules="INSTALLDIRS=vendor"} \
 	%{!?netsnmp_perl_modules: --without-perl-modules} \
-	%{?netsnmp_embedded_perl: --enable-as-needed --enable-embedded-perl} \
+	%{?netsnmp_embedded_perl: --enable-embedded-perl} \
 	%{!?netsnmp_embedded_perl: --disable-embedded-perl} \
 	--with-cflags="$RPM_OPT_FLAGS %{netsnmp_cflags}"
 
@@ -252,12 +252,12 @@
 
 * Tue May  6 2008 Jan Safranek <jsafranek@users.sf.net>
 - remove %{libcurrent}
-- don't use Provides: unless necessary, let rpmbuild compute the provided
+- add openssl-devel to build requirements
+- don't use Provides: unless necessary, let rpmbuild compute the provided 
   libraries
 
-* Tue Jun 30 2007 Thomas Anders <tanders@users.sf.net>
+* Tue Jun 19 2007 Thomas Anders <tanders@users.sf.net>
 - add "BuildRequires: perl-ExtUtils-Embed", e.g. for Fedora 7
-- add --enable-as-needed if building with embedded Perl support
 
 * Wed Nov 23 2006 Thomas Anders <tanders@users.sf.net>
 - fixes for 5.4 and 64-bit platforms
diff --git a/dist/nsb-config b/dist/nsb-config
new file mode 100755
index 0000000..0944fe6
--- /dev/null
+++ b/dist/nsb-config
@@ -0,0 +1,82 @@
+#!/bin/sh
+#
+# $Id$
+# Author: Robert Story <rstory@freesnmp.com>
+#
+########################################################################
+########################################################################
+
+usage()
+{
+   echo "Usage: $0  [-d|-x] [-s SRCD]"
+   echo ""
+   echo " -s SRCDIR  : soure directory [$HOME/src/net-snmp-VERSION]"
+   echo ""
+   echo " -x : configure extra features for pre-release testing"
+   echo " -d : configure for binary distribution"
+   exit 1
+}
+
+#set -x
+
+
+#
+# find nsb-platform based on the path to this script
+#
+EXE_PATH=`dirname $0`
+if [ -f $EXE_PATH/nsb-functions ];then
+   . $EXE_PATH/nsb-functions
+elif [ -f $HOME/bin/nsb-functions ]; then
+   . $HOME/bin/nsb-functions
+elif [ -f nsb-functions ];then
+   . nsb-functions
+else
+   echo "Cannot find nsb-functions in $EXE_PATH, $HOME/bin or $PWD"
+   exit 1
+fi
+
+
+########################################################################
+########################################################################
+NSB_CONFIG_ALL=2
+
+#      x)  x=$OPTARG ;;
+while getopts ds:x opt
+do
+    case "$opt" in
+      d)  NSB_CONFIG_ALL=0;;
+      s)  SRCD=$OPTARG ;;
+      x)  NSB_CONFIG_ALL=1;;
+      \?)# unknown flag
+        usage;;
+    esac
+done
+shift `expr $OPTIND - 1`
+
+if [ $NSB_CONFIG_ALL -eq 2 ]; then
+   echo "You must specify -d or -x"
+   usage
+fi
+
+if [ "x$SRCD" = "x" ]; then
+   for x in . $HOME/src/net-snmp
+   do
+      if [ -f $x/configure ]; then
+         SRCD=$x
+         break
+      fi
+   done
+   if [ "x$SRCD" = "x" ]; then
+      echo "Couldn't find a source directory. Please specify one for me."
+      usage
+   fi
+fi
+
+
+########################################################################
+########################################################################
+if [ $NSB_CONFIG_ALL -eq 0 ];then
+    nsb_config_dist $SRCD
+else
+    nsb_config_all $SRCD
+fi
diff --git a/dist/nsb-functions b/dist/nsb-functions
new file mode 100644
index 0000000..4865cc2
--- /dev/null
+++ b/dist/nsb-functions
@@ -0,0 +1,508 @@
+#!/bin/sh
+#----------------------------------------------------------------------
+# $Id$
+# Author: Robert Story <rstory@freesnmp.com>
+
+#----------------------------------------------------------------------
+#
+# source user config
+if [ -f $HOME/.snmp/nsb-rc ]; then
+   . $HOME/.snmp/nsb-rc
+fi
+
+
+#----------------------------------------------------------------------
+#
+nsb_sysname()
+{
+   echo `uname -mrs | tr ' /' '__'`
+}
+
+#----------------------------------------------------------------------
+#
+# Utility vars
+#
+NSB_VERSION=${NSB_VERSION:=""}
+NSB_BUILD_DIR=${NSB_BUILD_DIR:=""}
+NSB_BUILD_SUFFIX=${NSB_BUILD_SUFFIX:=""}
+NSB_SRC_DIR=${NSB_SRC_DIR:=""}
+NSB_INSTALL_DIR=${NSB_INSTALL_DIR:=""}
+NSB_INSTALL_DIR_DEFAULT=${NSB_INSTALL_DIR_DEFAULT:="$NSB_BUILD_DIR/usr"}
+NSB_PLATFORM=${NSB_PLATFORM:=`nsb_sysname`}
+# sun doesn't support hostname -s
+NSB_HOST=${NSB_HOST:=`hostname | cut -f1 -d.`}
+NSB_QUIET=${NSB_QUIET:=0}
+NSB_PROMPT=${NSB_PROMPT:=0}
+NSB_CLEAN=${NSB_CLEAN:=1}
+NSB_CONFIG_ALL=${NSB_CONFIG_ALL:=0}
+NSB_SKIP_CONFIG=${NSB_SKIP_CONFIG:=0}
+NSB_SKIP_BUILD=${NSB_SKIP_BUILD:=0}
+NSB_SKIP_TEST=${NSB_SKIP_TEST:=0}
+NSB_SKIP_INSTALL=${NSB_SKIP_INSTALL:=0}
+NSB_ERR_CTX_LINES=${NSB_ERR_CTX_LINES:=25}
+NSB_DIST_TRANSPORTS="UDP TCP Unix Callback"
+NSB_EXTRA_TRANSPORTS=""
+NSB_DIST_MODULES=${NSB_DIST_MODULES:="host disman/event-mib smux"}
+NSB_EXTRA_MODULES=${NSB_EXTRA_MODULES:="examples examples/example smux Rmon"}
+#testhandler
+NSB_EXTRA_CONFIG=${NSB_EXTRA_CONFIG:=""}
+NSB_PREFIX=${NSB_PREFIX:="/usr"}
+NSB_EXTRA_INSTALL=${NSB_EXTRA_INSTALL:=""}
+NSB_SHARED=${NSB_SHARED:="--enable-shared"}
+NSB_VIEW=cat
+NSB_FLOW=
+NSB_DATE=${NSB_DATE:=`date +%y%m%d_%H%M`}
+
+## embedded perl
+NSB_DIRLINK_DIRS="perl mibs include python"
+NSB_PERL=${NSB_PERL:=""}
+#NSB_PERL=${NSB_PERL:="--enable-embedded-perl"}
+if [ "x$NSB_PERL" != "x" ]; then
+  NSB_SKIP_DIRLINK=${NSB_SKIP_DIRLINK:=0}
+else
+  NSB_SKIP_DIRLINK=${NSB_SKIP_DIRLINK:=1}
+fi
+
+#
+# System specific additions
+#
+case `uname -s` in
+
+   SunOS)
+      NSB_TAIL_ARGS="-$NSB_ERR_CTX_LINES"
+      ;;
+
+   *)
+      NSB_TAIL_ARGS="-n $NSB_ERR_CTX_LINES"
+      ;;
+esac
+
+
+#----------------------------------------------------------------------
+#
+# Utility functions
+#
+
+nsb_abort()
+{
+   echo
+   echo "ABORTING: $@" >&2
+   exit 255
+}
+
+nsb_info()
+{
+   if [ $NSB_QUIET -ne 1 ]; then
+      echo $@
+   fi
+}
+
+nsb_prompt()
+{
+   if [ "x$1" = "x-f" ]; then
+      shift 1
+      tmp_nsb_prompt=1
+   else
+      tmp_nsb_prompt=$NSB_PROMPT
+   fi
+   if [ $tmp_nsb_prompt -eq 1 ]; then
+      echo $@
+      read nsb_prompt_dummy
+   else
+      echo "$@ (PROMPT SKIPPED)"
+   fi
+}
+
+nsb_flow()
+{
+    NSB_FLOW=$NSB_FLOW:$@
+    echo "Running $@" >&2
+}
+
+#----------------------------------------------------------------------
+#
+nsb_config_dist()
+{
+   nsb_flow config_dist
+   if [ $# -lt 1 ]; then
+      nsb_abort "usage: nsb_config_dist src_dir"
+   fi
+   ngc_src=$1
+   if [ ! -d $ngc_src ]; then
+      nsb_abort "$ngc_src does not exist!"
+   fi
+   if [ ! -d $ngc_src/agent/mibgroup ]; then
+      nsb_abort "agent/mibgroup directory in $ngc_src does not exist!"
+   fi
+   ngc_dest=$2
+   if [ "X$ngc_dest" != "X" -a ! -d $ngc_dest ]; then
+      nsb_abort "$ngc_dest does not exist!"
+   fi
+
+   #
+   # some modules might be release specific, so make sure they
+   # exist before we send them off to configure
+   #
+   NSB_FINAL_MODULES=
+   for ncd_x in $NSB_DIST_MODULES
+   do
+	if [ -r $ngc_src/agent/mibgroup/$ncd_x.h ]; then
+		NSB_FINAL_MODULES="$NSB_FINAL_MODULES $ncd_x"
+	fi
+   done
+
+   #
+   # NOTE: for some reason, bash does not expand variables
+   # inside of single quotes, so use double quotes
+   #
+   echo $ngc_src/configure --with-sys-location=Unknown \
+      --prefix="$NSB_PREFIX" \
+      --disable-developer $NSB_EXTRA_CONFIG \
+      --with-sys-contact='System Administrator' \
+      --with-defaults --with-mib-modules="$NSB_FINAL_MODULES"
+   $ngc_src/configure --with-sys-location=Unknown \
+      --prefix="$NSB_PREFIX" \
+      --disable-developer $NSB_EXTRA_CONFIG \
+      --with-sys-contact='System Administrator' \
+      --with-defaults --with-mib-modules="$NSB_FINAL_MODULES"
+   # I'd like to add ' | tee nsb_config.$NSB_DATE' to save output, but then
+   # I'd lose the rc from configure, which I need... sigh
+   ngc_rc=$?
+   if [ $ngc_rc -ne 0 ];then
+      nsb_abort "Error during configure dist (rc=$ngc_rc)"
+   fi
+}
+
+nsb_config_all()
+{
+   nsb_flow config_all
+   if [ $# -lt 1 ]; then
+      nsb_abort "usage: nsb_config_all src_dir"
+   fi
+   ngc_src=$1
+   if [ ! -d $ngc_src ]; then
+      nsb_abort "$ngc_src does not exist!"
+   fi
+   if [ ! -d $ngc_src/agent/mibgroup ]; then
+      nsb_abort "agent/mibgroup directory in $ngc_src does not exist!"
+   fi
+   ngc_dest=$2
+   if [ "X$ngc_dest" != "X" -a ! -d $ngc_dest ]; then
+      nsb_abort "$ngc_dest does not exist!"
+   fi
+
+   #
+   # System specific additions
+   #
+   case `uname -s` in
+
+   Linux)
+      NSB_IPV6=${NSB_IPV6:="--enable-ipv6"}
+      NSB_EXTRA_TRANSPORTS="IPX"
+      ;;
+
+   #Darwin)
+   #   ;;
+
+   *)
+      NSB_IPV6=${NSB_IPV6:="--enable-ipv6"}
+      ;;
+   esac
+
+   #
+   # use libwrap if we can find the header
+   #
+   if [ -f /usr/include/tcpd.h ]; then
+      NSB_LIBWRAP=${NSB_LIBWRAP:="--with-libwrap"}
+      NSB_EXTRA_CONFIG="$NSB_EXTRA_CONFIG $NSB_LIBWRAP"
+   fi
+
+   #
+   # some modules might be release specific, so make sure they
+   # exist before we send them off to configure
+   #
+   NSB_FINAL_MODULES=
+   for ncd_x in $NSB_DIST_MODULES $NSB_EXTRA_MODULES
+   do
+	if [ -r $ngc_src/agent/mibgroup/$ncd_x.h ]; then
+		NSB_FINAL_MODULES="$NSB_FINAL_MODULES $ncd_x"
+	fi
+   done
+
+   #
+   # configure
+   #
+   # NOTE: for some reason, bash does not expand variables
+   # inside of single quotes, so use double quotes
+   #
+   echo $ngc_src/configure  --with-defaults \
+      --prefix="$NSB_PREFIX" \
+      --disable-developer $NSB_EXTRA_CONFIG \
+      "--with-mib-modules=$NSB_FINAL_MODULES" \
+      "--with-transports=$NSB_DIST_TRANSPORTS $NSB_EXTRA_TRANSPORTS" \
+      $NSB_SHARED $NSB_IPV6 $NSB_PERL
+   $ngc_src/configure  --with-defaults \
+      --prefix="$NSB_PREFIX" \
+      --disable-developer $NSB_EXTRA_CONFIG \
+      "--with-mib-modules=$NSB_FINAL_MODULES" \
+      "--with-transports=$NSB_DIST_TRANSPORTS $NSB_EXTRA_TRANSPORTS" \
+      $NSB_SHARED $NSB_IPV6 $NSB_PERL
+   # I'd like to add ' | tee nsb_config.$NSB_DATE' to save output, but then
+   # I'd lose the rc from configure, which I need... sigh
+   ngc_rc=$?
+   if [ $ngc_rc -ne 0 ];then
+      nsb_abort "Error during configure all (rc=$ngc_rc)"
+   fi
+}
+
+nsb_zip()
+{
+   if [ $# -ne 3 ]; then
+      nsb_abort "usage: $0 release build_directory dest_dir"
+   fi
+
+   release=$1
+   build_dir=$2
+   dest_dir=$3
+
+   build=$build_dir/$NSB_PLATFORM
+
+   if [ ! -d $build ]; then
+      nsb_abort "$build directory does not exist!"
+   fi
+
+   if [ ! -d $build/usr ]; then
+      nsb_abort "install directory $build/usr directory does not exist!"
+   fi
+
+   cd $build
+
+   rm -f $dest_dir/$release-$NSB_PLATFORM.tar
+   nsb_info "tar cf $dest_dir/$release-$NSB_PLATFORM.tar usr"
+   tar cf $dest_dir/$release-$NSB_PLATFORM.tar usr
+
+   nsb_info "gzip --best $dest_dir/$release-$NSB_PLATFORM.tar"
+   gzip --best $dest_dir/$release-$NSB_PLATFORM.tar
+
+   if [ $NSB_QUIET -ne 1 ]; then
+      ls -lt $dest_dir
+   fi
+}
+
+nsb_upload()
+{
+   build_dir=$1
+   target=$2
+   nsb_flow upload to $target: config.log configure-summary nsb_make-all.$NSB_DATE nsb_make-test.$NSB_DATE
+   dir=$PWD
+   cd $build_dir
+   /usr/bin/scp config.log configure-summary nsb_make-all.$NSB_DATE nsb_make-test.$NSB_DATE\
+                 $target
+   cd $dir
+}
+
+nsb_dir_link()
+{
+  if [ $# -lt 2 ]; then
+    nsb_abort "usage: nsb_dir_link src_dir dst_dir"
+  fi
+  link_src_dir=$1
+  link_dst_dir=$2
+  if [ -d $link_src_dir ]; then
+    nsb_flow set up shadow directory $link_dst_dir
+    $NSB_DIRLINK $link_src_dir $link_dst_dir
+    rc=$?
+    if [ $rc -ne 0 ];then
+      nsb_abort "Error during nsb_dir_link (rc=$rc)"
+    fi
+  else
+    nsb_info "Skipping $link_src_dir"
+  fi
+  }
+
+nsb_make()
+{
+   nsb_flow make $1
+   target=$1
+   shift 1
+   parms=$@
+
+   if [ "x$NSB_MAKE" = "x" ];then
+      #nsb_info "Searching for GNU make (set NSB_MAKE to skip this step)"
+      for p in `echo $PATH | tr ':' ' '`
+      do
+         #echo $p
+         if [ -x $p/make ];then
+            dummy=`$p/make --version 2>&1 | grep GNU`
+            if [ $? -eq 0 ];then
+	       #nsb_info "using $p/make ($dummy)"
+               NSB_MAKE=$p/make
+               break
+            fi
+         fi
+         if [ -x $p/gmake ];then
+            dummy=`$p/gmake --version 2>&1 | grep GNU`
+            if [ $? -eq 0 ];then
+	       #nsb_info "using $p/gmake ($dummy)"
+               NSB_MAKE=$p/gmake
+               break
+            fi
+         fi
+      done
+      if [ "x$NSB_MAKE" = "x" ];then
+         nsb_abort "GNU make not found. Set NSB_MAKE to your make executable."
+      fi
+   fi
+
+   nsb_make_OUTPUT=nsb_make-$target.$NSB_DATE
+   nsb_info "Making $target... (log is $nsb_make_OUTPUT)"
+   #
+   if [ "x$target" = "xall" ]; then
+      $NSB_MAKE NOAUTODEPS=y touchit 2>&1 | tee $nsb_make_OUTPUT
+   fi
+   $NSB_MAKE $NSB_MAKE_EXTRA NOAUTODEPS=y start-flag $target $parms end-flag 2>&1 | tee -a $nsb_make_OUTPUT
+   # checking $? would only get us the rc from tee, which is useless
+
+   nsb_info "Checking for errors..."
+   egrep -i "error|fail|warn|no such|exists|t find |ermission denied" $nsb_make_OUTPUT \
+         > nsb_make-$target-allerrs.$NSB_DATE
+   # allow for a few exceptions
+   egrep -v -i "^ok|testing .*failure|[a-z&_](fail|error)|warn|error(mib|\.3)|(LOG|SNMP)_ERR|In function|= FAILURE|DEBUGMSG|/\*|static library .* is not portable" nsb_make-$target-allerrs.$NSB_DATE \
+         > nsb_make-$target-errs.$NSB_DATE
+   if [ -s nsb_make-$target-errs.$NSB_DATE ]; then
+      nsb_prompt "press enter to view errors"
+#      grep ':' $nsb_make_OUTPUT > nsb_make-$target-errs2.$NSB_DATE
+#      tail -n $NSB_ERR_CTX_LINES nsb_make-$target-errs2.$NSB_DATE >&2
+      tail $NSB_TAIL_ARGS nsb_make-$target-errs.$NSB_DATE >&2
+      nsb_abort "Error(s) during make $target"
+   fi
+
+   if [ -f build-in-progress-flag ];then
+     nsb_abort "make $target incomplete"
+   fi
+}
+
+nsb_default_paths()
+{
+   if [ "x$NSB_VERSION" = "x" ]; then
+      NSB_VERSION="unknown-version"
+   fi
+   if [ "x$NSB_SRC_DIR" = "x" ]; then
+      NSB_SRC_DIR=$HOME/src/net-snmp-$NSB_VERSION
+   fi
+   if [ "x$NSB_BUILD_DIR" = "x" ]; then
+      NSB_BUILD_DIR=$HOME/build/$NSB_VERSION
+      if [ "x$NSB_SUFFIX" != "x" ]; then
+         NSB_BUILD_DIR=$NSB_BUILD_DIR/$NSB_SUFFIX
+      fi
+   fi
+   if [ "x$NSB_INSTALL_DIR" = "x" ]; then
+      NSB_INSTALL_DIR="$NSB_INSTALL_DIR_DEFAULT"
+   fi
+}
+
+nsb_build()
+{
+   if [ $# -lt 5 ]; then
+      nsb_abort "usage: $0 release src_dir build_directory dest_dir config_all_flag ($@)"
+   fi
+
+   nsb_config_all_flag=0
+   release=$1
+   src_dir=$2
+   build_dir=$3
+   dest_dir=$4
+   nsb_config_all_flag=$5
+   shift 5
+
+   nsb_flow build in $build_dir
+   nsb_flow host $NSB_HOST
+   nsb_flow platform $NSB_PLATFORM
+
+   if [ ! -d $src_dir ]; then
+      nsb_abort "$src_dir does not exist!"
+   fi
+
+   if [ ! -d $build_dir ]; then
+      mkdir $build_dir
+      if [ ! -d $build_dir ]; then
+         nsb_abort "$build_dir directory does not exist!"
+      fi
+   fi
+
+   nsb_info "Changing directories to $build_dir"
+   cd $build_dir
+
+   if [ $NSB_CLEAN -gt 0 ]; then
+      nsb_info "Cleaning up..."
+      if [ $NSB_CLEAN -eq 2 ];then
+        if [ "x$PWD" = "x/" ]; then
+           nsb_abort "Not running rm -fR from /"
+        fi
+        nsb_info "rm -fR * .[a-zA-Z]* > /dev/null 2>&1"
+        rm -fR * .[a-zA-Z]* > /dev/null 2>&1
+      else
+        if [ "x$dest_dir" != "x" -a "x$dest_dir" != "x/" ]; then
+          nsb_info "rm -fR nsb_* $dest_dir > /dev/null 2>&1"
+          #rm -fR nsb_* $dest_dir > /dev/null 2>&1
+        fi
+        if [ -f Makefile ]; then
+            nsb_make NOAUTODEPS=y distclean
+            nsb_build_rc=$?
+            if [ $nsb_build_rc -ne 0 ]; then
+                nsb_abort "Error during make distclean (rc=$nsb_build_rc)"
+            fi
+        fi
+      fi
+   fi
+
+   if [ "X$dest_dir" != "X" -a ! -d $dest_dir ]; then
+      mkdir -p $dest_dir
+      if [ ! -d $dest_dir ]; then
+         nsb_abort "$dest_dir directory does not exist!"
+      fi
+   fi
+
+   if [ $NSB_SKIP_DIRLINK -eq 1 ]; then
+      nsb_info "Skipping nsb_dir_link"
+   else
+      for d in $NSB_DIRLINK_DIRS; do
+        nsb_dir_link $src_dir/$d $build_dir/$d
+      done
+   fi
+
+   if [ $NSB_SKIP_CONFIG -ne 1 ]; then
+      nsb_info "Configuring... (log is nsb_config.$NSB_DATE)"
+      if [ "x$nsb_config_all_flag" = "x0" ]; then
+          nsb_config_dist $src_dir "$dest_dir"
+      else
+          nsb_config_all $src_dir "$dest_dir"
+      fi
+      nsb_prompt "press enter to continue"
+   fi
+
+   if [ $NSB_SKIP_BUILD -eq 1 ]; then
+      nsb_info "Skipping 'make all'"
+   else
+      nsb_make all
+   fi
+
+   if [ $NSB_SKIP_TEST -eq 1 ]; then
+      nsb_info "Skipping 'make test'"
+   else
+      nsb_prompt "No errors found, press enter to run tests"
+      SNMP_TMPDIR_BASE=$build_dir/tests
+      export SNMP_TMPDIR_BASE
+      nsb_make test
+   fi
+
+   if [ $NSB_SKIP_INSTALL -eq 1 ]; then
+      nsb_info "Skipping 'make install'"
+   else
+      nsb_prompt "No errors found, press enter to install"
+      # DESTDIR makes sure the perl stuff goes into $dest_dir, too
+      nsb_make install DESTDIR="$dest_dir" $NSB_EXTRA_INSTALL
+   fi
+
+   return 0
+}
diff --git a/dist/nsb-nightly b/dist/nsb-nightly
new file mode 100755
index 0000000..3298a26
--- /dev/null
+++ b/dist/nsb-nightly
@@ -0,0 +1,188 @@
+#!/bin/sh
+#
+# $Id$
+# Author: Robert Story <rstory@freesnmp.com>
+#
+########################################################################
+########################################################################
+
+usage()
+{
+   echo "Usage: $0  [optional params] VERSION"
+   echo ""
+   echo " optional params: [-x] [-s SRCD] [-b BUILDD] [-i INSTALLD]"
+   echo "                  [-h host] [-p path]"
+   echo " VERSION    : release number (eg 5.2.2)"
+   echo " -s SRCDIR  : soure directory [$HOME/src/net-snmp-VERSION]"
+   echo " -b BUILDD  : build directory [$HOME/build/]"
+   echo "              NOTE-platform will be appended to build directory"
+   echo " -i INSTALLD: install directory [$HOME/build/\$PLATFORM/usr]"
+   echo ""
+   echo " -x : configure extra features for pre-release testing"
+   echo " -C : don't source $HOME/.snmp/nsb-nightly"
+   echo ""
+   echo " -f : from address for email results"
+   echo " -e : address to email error results to"
+   echo " -o : address to email success results to"
+   echo " -h : host to upload results to"
+   echo " -p : path to upload results to"
+   exit 1
+}
+
+#set -x
+
+# make getopts work on Tru64 by respawning in Posix mode
+if [ "`uname`" = "OSF1" -a "$BIN_SH" != "xpg4" ]; then
+    BIN_SH=xpg4
+    export BIN_SH
+    exec $0 $*
+fi
+
+#
+# find nsb-platform based on the path to this script
+#
+EXE_PATH=`dirname $0`
+if [ ! -f $EXE_PATH/nsb-functions ];then
+   if [ -f $HOME/bin/nsb-functions ]; then
+      EXE_PATH=$HOME/bin
+   elif [ -f nsb-functions ];then
+      EXE_PATH=$PWD
+   else
+      echo "Cannot find nsb-functions in $EXE_PATH, $HOME/bin or $PWD"
+      exit 1
+   fi
+fi
+
+if [ "x$1" = "x-C" ]; then
+    shift
+else
+    if [ -f $HOME/.snmp/nsb-nightly ];then
+        . $HOME/.snmp/nsb-nightly
+    fi
+fi
+
+########################################################################
+########################################################################
+
+# -r : remove build dir before
+# -R : remove build dir after
+PARMS="$PARMS -r"
+NIGHTLY_VERBOSE=0
+NSB_ERR_RESULTS_TO=""
+NSB_OK_RESULTS_TO=""
+
+while getopts b:e:f:i:o:s:xh:p:v opt
+do
+    case "$opt" in
+      b)  NSB_BUILD_DIR=$OPTARG;;
+      e)  NSB_ERR_RESULTS_TO=$OPTARG;;
+      f)  NSB_FROM=$OPTARG;;
+      o)  NSB_OK_RESULTS_TO=$OPTARG;;
+      i)  PARMS="-i $OPTARG $PARMS";;
+      s)  NSB_SRC_DIR=$OPTARG;;
+      h)  NSB_SCP_HOST=$OPTARG
+          PARMS="-h $NSB_SCP_HOST $PARMS"
+          ;;
+      p)  NSB_SCP_DEST=$OPTARG
+          PARMS="-p $NSB_SCP_DEST $PARMS"
+          ;;
+      x)  PARMS="-x $PARMS";;
+      v)  NIGHTLY_VERBOSE=1;;
+      \?)# unknown flag
+        usage;;
+    esac
+done
+shift `expr $OPTIND - 1`
+
+if [ $# -ne 1 ]; then
+   echo "expecting 1 argument, got $# ($@)"
+   usage
+fi
+
+NSB_VERSION=$1
+
+. $EXE_PATH/nsb-functions
+
+nsb_default_paths
+
+PARMS="$PARMS -b $NSB_BUILD_DIR -s $NSB_SRC_DIR"
+
+########################################################################
+########################################################################
+echo "Start: `date`"
+echo "Running nsb-package $PARMS $NSB_VERSION"
+if [ $NIGHTLY_VERBOSE = 1 ]; then
+    $EXE_PATH/nsb-package $PARMS $NSB_VERSION
+else
+    $EXE_PATH/nsb-package $PARMS $NSB_VERSION > /dev/null
+fi
+RC=$?
+echo "Finish: `date`"
+cd $NSB_BUILD_DIR
+case $RC in
+    0)  RESULT="Success"
+        NSB_RESULTS_TO=$NSB_OK_RESULTS_TO
+        FILES=""
+        ;;
+    *) RESULT="Error (rc $RC)"
+       NSB_RESULTS_TO=$NSB_ERR_RESULTS_TO
+       FILES=`ls nsb-make-*-errs.* 2>/dev/null`
+       if [ "x$NSB_SCP_HOST" != "x" ]; then
+          nsb_upload $NSB_BUILD_DIR $NSB_SCP_HOST:$NSB_SCP_DEST/$NSB_VERSION/$NSB_SUFFIX
+       fi
+        ;;
+esac
+echo "Result: $RESULT"
+
+if [ "x$NSB_RESULTS_TO" != "x" ]; then
+   SUBJECT="$NSB_VERSION $RESULT on $NSB_HOST ($NSB_PLATFORM)"
+   echo "Sending mail to $NSB_RESULTS_TO: $SUBJECT"
+   case `uname -s` in
+      OpenBSD|FreeBSD) # mail doesn't allow setting From
+         # seems to be in /usr/sbin, which isn't in all paths
+	 PATH=/usr/sbin/:$PATH
+         echo "From: $NSB_FROM" > mail.results
+         echo "To: $NSB_RESULTS_TO" >> mail.results
+         # mail-related errors to OK address (usully buildmaster)
+         echo "Errors-To: $NSB_OK_RESULTS_TO" >> mail.results
+         echo "Subject: $SUBJECT" >> mail.results
+         echo "" >> mail.results
+         grep CONFIGURE_OPTIONS include/net-snmp/net-snmp-config.h|sed 's:/home/[^ ]*/build:$HOME:g' >> mail.results
+         echo "Result: $RESULT" >> mail.results
+         if [ "x$FILES" != "x" ]; then
+            cat $FILES >> mail.results
+         fi
+         sendmail -t < mail.results
+         ;;
+      SunOS) # no sendmail, no mail -s, need -t for To 
+         echo "From: $NSB_FROM" > mail.results
+         # mail-related errors to OK address (usully buildmaster)
+         echo "Errors-To: $NSB_OK_RESULTS_TO" >> mail.results
+         echo "Subject: $SUBJECT" >> mail.results
+         echo "" >> mail.results
+         grep CONFIGURE_OPTIONS include/net-snmp/net-snmp-config.h|sed 's:/home/[^ ]*/build:$HOME:g' >> mail.results
+         echo "Result: $RESULT" >> mail.results
+         if [ "x$FILES" != "x" ]; then
+            cat $FILES >> mail.results
+         fi
+         mail -t $NSB_RESULTS_TO < mail.results
+         ;;
+      *)
+         echo "Result: $RESULT" >> mail.results
+         if [ "x$FILES" != "x" ]; then
+            cat $FILES >> mail.results
+         fi
+         mail -s "$SUBJECT" $NSB_RESULTS_TO < mail.results
+         ;;
+   esac
+fi
+
+if [ $RC -eq 0 ]; then
+        if [ "x$NSB_BUILD_DIR" = "/" ]; then
+            nsb_abort "Not running rm -fR from /"
+        else
+            /bin/rm -fR $NSB_BUILD_DIR > /dev/null 2>&1
+        fi
+fi
+
+exit $RC
diff --git a/dist/nsb-package b/dist/nsb-package
new file mode 100755
index 0000000..f51c150
--- /dev/null
+++ b/dist/nsb-package
@@ -0,0 +1,137 @@
+#!/bin/sh
+#
+# $Id$
+# Author: Robert Story <rstory@freesnmp.com>
+#
+########################################################################
+########################################################################
+
+usage()
+{
+   echo "Usage: $0  [params] VERSION"
+   echo ""
+   echo "  params: [-c] [-d] [-P] [-s NSB_SRC_DIR] [-b BUILDD] [-i NSB_INSTALL_DIR]"
+   echo "          [-h host] [-p path]"
+   echo ""
+   echo " VERSION    : release number (eg 5.2.2)"
+   echo " -s NSB_SRC_DIR  : source directory [$HOME/src/net-snmp-VERSION]"
+   echo " -b BUILDD  : build directory [$HOME/build/]"
+   echo "              NOTE-platform will be appended to build directory"
+   echo " -i NSB_INSTALL_DIR: install directory [$HOME/build/\$PLATFORM/usr]"
+   echo ""
+   echo " -x : configure extra features for pre-release testing"
+   echo " -c : skip configure"
+   echo " -d : dirty build (don't make distclean)"
+   echo " -m : skip 'make all'"
+   echo " -P : pause at prompts in between stages"
+   echo " -r : remove build dir (rm -fR) before build"
+   echo " -R : remove build dir (rm -fR) after successful build"
+   echo " -t : skip 'make test'"
+   echo " -C : don't source $HOME/.snmp/nsb-package"
+   echo ""
+   echo " -h : host to upload results to"
+   echo " -p : path to upload results to"
+   exit 1
+}
+
+#trap exit SIGINT
+
+#set -x
+
+# make getopts work on Tru64 by respawning in Posix mode
+if [ "`uname`" = "OSF1" -a "$BIN_SH" != "xpg4" ]; then
+    BIN_SH=xpg4
+    export BIN_SH
+    exec $0 $*
+fi
+
+#
+# find nsb-platform based on the path to this script
+#
+EXE_PATH=`dirname $0`
+if [ ! -f $EXE_PATH/nsb-functions ];then
+   if [ -f $HOME/bin/nsb-functions ]; then
+      EXE_PATH=$HOME/bin
+   elif [ -f nsb-functions ];then
+      EXE_PATH=$PWD
+   else
+      echo "Cannot find nsb-functions in $EXE_PATH, $HOME/bin or $PWD"
+      exit 1
+   fi
+fi
+
+if [ "x$1" = "x-C" ]; then
+    shift
+else
+    if [ -f $HOME/.snmp/nsb-package ];then
+        . $HOME/.snmp/nsb-package
+    fi
+fi
+
+########################################################################
+########################################################################
+
+REMOVE_SUCCESS=0
+
+#      x)  x=$OPTARG ;;
+while getopts b:cdh:i:mPp:rRs:tx opt
+do
+    case "$opt" in
+      b)  NSB_BUILD_DIR=$OPTARG ;;
+      c)  NSB_SKIP_CONFIG=1 ;;
+      d)  NSB_CLEAN=0 ;;
+      h)  NSB_SCP_HOST=$OPTARG ;;
+      i)  NSB_INSTALL_DIR=$OPTARG ;;
+      m)  NSB_SKIP_BUILD=1 ;;
+      P)  NSB_PROMPT=1 ;;
+      p)  NSB_SCP_DEST=$OPTARG ;;
+      r)  NSB_CLEAN=2 ;;
+      R)  REMOVE_SUCCESS=1 ;;
+      s)  NSB_SRC_DIR=$OPTARG ;;
+      t)  NSB_SKIP_TEST=1 ;;
+      x)  NSB_CONFIG_ALL=1;;
+      \?)# unknown flag
+        usage;;
+    esac
+done
+shift `expr $OPTIND - 1`
+
+if [ $# -ne 1 ]; then
+   echo "expecting 1 argument, got $# ($@)"
+   usage
+fi
+
+NSB_VERSION=$1
+
+. $EXE_PATH/nsb-functions
+
+nsb_default_paths
+
+if [ $NSB_CLEAN -eq 1 ]; then
+   if [ $NSB_SKIP_CONFIG -eq 1 ]; then
+      echo "A clean build also requires configuration (-d and -c"
+      echo "cannot both be specified)."
+      usage
+   fi
+fi
+
+
+########################################################################
+########################################################################
+nsb_prompt "press enter to build $NSB_SRC_DIR in $NSB_BUILD_DIR, and install in $NSB_INSTALL_DIR"
+nsb_build $NSB_VERSION $NSB_SRC_DIR $NSB_BUILD_DIR $NSB_INSTALL_DIR $NSB_CONFIG_ALL
+rc=$?
+if [ "x$NSB_SCP_HOST" != "x" ]; then
+   nsb_upload $NSB_BUILD_DIR $NSB_SCP_HOST:$NSB_SCP_DEST/$NSB_VERSION/$NSB_HOST/
+fi
+if [ $rc -eq 0 ] && [ $REMOVE_SUCCESS -eq 1 ];then
+    nsb_prompt "press enter to remove $NSB_BUILD_DIR"
+    if [ "x$NSB_BUILD_DIR" = "/" ]; then
+       nsb_abort "Not running rm -fR from /"
+    else
+       /bin/rm -fR $NSB_BUILD_DIR > /dev/null 2>&1
+    fi
+fi
+
+nsb_prompt "press enter to exit with rc $RC"
+exit $rc
diff --git a/dist/nsb-platform b/dist/nsb-platform
new file mode 100755
index 0000000..a7550a3
--- /dev/null
+++ b/dist/nsb-platform
@@ -0,0 +1,27 @@
+#!/bin/sh
+#
+# $Id$
+# Author: Robert Story <rstory@freesnmp.com>
+#
+########################################################################
+########################################################################
+
+#
+# find nsb-platform based on the path to this script
+#
+EXE_PATH=`dirname $0`
+if [ -f $EXE_PATH/nsb-functions ];then
+   . $EXE_PATH/nsb-functions
+elif [ -f $HOME/bin/nsb-functions ]; then
+   . $HOME/bin/nsb-functions
+elif [ -f nsb-functions ];then
+   . nsb-functions
+else
+   echo "Cannot find nsb-functions in $EXE_PATH, $HOME/bin or $PWD"
+   exit 1
+fi
+
+########################################################################
+########################################################################
+
+nsb_sysname
diff --git a/dist/patme b/dist/patme
new file mode 100755
index 0000000..0fd50ee
--- /dev/null
+++ b/dist/patme
@@ -0,0 +1,351 @@
+#!/usr/bin/perl
+
+use Getopt::GUI::Long;
+use QWizard;
+use QWizard::API;
+use Data::Dumper;
+use Cwd;
+
+use Getopt::Std;
+Getopt::GUI::Long::Configure(qw(display_help no_ignore_case));
+
+use strict;
+
+our %opts =
+(
+ 'd' => $ENV{'HOME'} . "/src/snmp/patme/",
+ 'b' => 'main,5.6,5.5,5.4,5.3',
+ 'p' => '-p0',
+);
+
+# sets the order shown
+our @codetrees = ('main',
+		  '5.6',
+		  '5.5',
+		  '5.4',
+		  '5.3',
+		  '5.2',
+		  '5.1',
+		  '5.0',
+		  'UCD');
+
+our %codetrees = ('5.0' => 'V5-0-patches',
+		  '5.1' => 'V5-1-patches',
+		  '5.2' => 'V5-2-patches',
+		  '5.3' => 'V5-3-patches',
+		  '5.4' => 'V5-4-patches',
+		  '5.5' => 'V5-5-patches',
+		  '5.6' => 'V5-6-patches',
+		  'main' => 'net-snmp',
+		  'UCD' => 'V4-2-patches');
+
+our (@captures, $capfilt, $result, %captures, $capturenum);
+
+GetOptions(\%opts,
+	   ['f|file=s',           'Patch file'],
+	   ['d|base-directory=s', 'Base directory of checkouts'],
+	   ['p|patch-args=s',     'Default patch arguments (-p1)'],
+
+	   ['GUI:separator',   'Patch application specifics;'],
+	   ['b|braches=s',     'Branches to apply to (eg 5.1,5.2,...)'],
+	   ['m|commit-msg=s',  'Default commit message to use'],
+	   ['D|subdir=s',      'Apply patches to a subdirectory'],
+	   ['u|no-update',     'Do not run svn status/update in the directory first.  Only use this if it\'s known clean.'],
+	  );
+
+my %bs;
+if ($opts{'b'}) {
+    map { $bs{$_} = 1; } split(/,\s*/,$opts{'b'}); 
+}
+$opts{'d'} .= "/" if ($opts{'d'} !~ /\/$/);
+
+my $qw = new QWizard();
+my $pris = load_primaries();
+$qw->{'primaries'} = $pris;
+
+$qw->qwparam('svncommit',$opts{'m'}) if ($opts{'m'});
+
+$qw->magic('top');
+
+sub make_tops {
+    my @tops;
+    foreach my $k (@codetrees) {
+	push @tops, 
+	  qw_checkbox($k, "Apply to $k", 1, 0, 
+		      default => $qw->qwparam($k) || $bs{$k},
+		      override => 1);
+    }
+    return @tops;
+}
+
+sub load_primaries {
+    my @tops = make_tops();
+    return
+      {
+       top =>
+       qw_primary('top','Select packages to apply the patch to:', '', 
+		  [@tops,
+		  qw_text('basedir', 'Base code directory:', 
+			  default => $opts{'d'}),
+		  qw_hidden('no_confirm',1),
+		  qw_text('patchfile','Patch file:', default => $opts{f},
+			 check_value => sub { 
+			     return "patch file doesn't exist" if (! -f qwparam('patchfile'))
+			 }),
+		  qw_checkbox('noupdate','Don\'t run svn update/revert first:', 
+			      1, 0, default => $opts{'u'} || 0)],
+		  [],[],sub_modules => ['commit', 'commitmsg', 'maketest',
+					'edit', 'applying', 'check',
+					'patch_info']),
+
+       patch_info =>
+       qw_primary('check','Checking code directory status:', '',
+		  [qw_paragraph('patch pieces:',
+				sub { capture("egrep '^(---|\\+\\+\\+)' " . 
+					      qwparam('patchfile'))},
+				width => 80,
+				height => 30),
+		   qw_text('patchargs','Patch arguments',
+			   default => $opts{'p'}),
+		   qw_text('subdir', 'Apply in package subdir:',
+			   default => $opts{'D'}),
+		   qw_paragraph('Note:','Hitting next below will first clean your local repositories which could take a bit (watch the console for deails on what it\'s doing at any moment)', doif => sub {!qwparam('noupdate')}),
+]),
+
+
+       check =>
+       qw_primary('check','Checking code directory status:', '',
+		  [qw_paragraph('removed .rej files:',
+			       sub { my $it = captureeachdir('find . -name \*.rej');
+				     captureeachdir('find . -name \*.rej | xargs rm -f');
+				     return $it;
+				 },
+				preformatted => 1,
+				width => 80,
+				height => 60,
+			       ),
+		   qw_paragraph('svn update:',
+				sub {
+				    my ($res, $one);
+				    foreach my $k (@codetrees) {
+					next if (!qwparam($k));
+					$res .= "$k:\n";
+					$one = capturedir($codetrees{$k}, 
+							  "svn update");
+					$res .= $one;
+					$one = capturedir($codetrees{$k}, 
+							  "svn revert -R .");
+					$res .= $one;
+				    }
+				    return $res;
+				  },
+				preformatted => 1,
+				width => 80,
+				height => 60,
+				doif => sub{!qwparam('noupdate')}
+			       )		  ],
+		 ),
+
+       applying =>
+       qw_primary("applying", 'Applying patches to the code bases', '',
+		  [{type => 'table',
+		    text => 'Results:',
+		    values => sub {
+			my @tab;
+			foreach my $k (@codetrees) {
+			    next if (!qwparam($k));
+			    push @tab, [$k,
+					qw_paragraph("r$k","", 
+						     preformatted => 1,
+						     width => 80,
+						     height => 20,
+						     values => 
+						     sub { my $cmd = "patch " . qwparam('patchargs') . " < " . qwparam('patchfile');
+							   my $results = "Running on $k: $cmd" . "\n" . capturedir($codetrees{$k},$cmd);
+							   return $results})];
+			}
+			return [\@tab];
+		    }}],[],[]),
+
+       edit =>
+       qw_primary('edit','Fix the following files:','',
+		  [qw_paragraph('Fix these (maybe):',
+			       sub {
+				   $capfilt = '(.*.rej)';
+				   my $res = 
+				     captureeachdir('find . -name \*.rej');
+				   print Dumper(\%captures);
+				   $capfilt = undef;
+				   return $res;
+				 },
+				preformatted => 1,
+				width => 80,
+				height => 60,
+			       ),
+		   qw_label('failed files:',
+			    sub { $capturenum = 0;
+				  map { $capturenum += $#{$captures{$_}} + 1;
+				    } (keys(%captures));
+				  return $capturenum;
+			      }),
+		  qw_checkbox('edithem','Open an editor on the failed files?',
+			      1, 0, doif => sub { return $capturenum > 0 }),
+		  qw_text('editor','Editor:',default => $ENV{'EDITOR'} || 'vi',
+			  doif => sub { return $capturenum > 0 })],
+		  [sub {
+		       if (qwparam('edithem')) {
+			   foreach my $k (keys(%captures)) {
+			       foreach my $f (@{$captures{$k}}) {
+				   my $file = qwparam('basedir') .
+				     $codetrees{$k} .
+				       qwparam('subdir') . '/' . $f->[0];
+				   print STDERR "editing: $file\n";
+				   system(qwparam('editor') . " " . $file);
+			       }
+			   }
+		       }
+		   }]
+		 ),
+
+       maketest =>
+       qw_primary("maketest", "Run make?",'',
+		 [qw_checkbox('makeit','Run make?', 1, 0),
+		  qw_checkbox('maketest', 'Run make test?', 1, 0)
+		 ],
+ 		 [sub {
+ 		      if (qwparam('makeit') || qwparam('maketest')) {
+ 			  $_[0]->add_todos(-early, 'domake');
+ 		      }
+ 		  }]
+		 ),
+
+       domake =>
+       qw_primary("domake", "Make results",'',
+		  [qw_paragraph('Make results:',
+				sub { return captureeachdir('make'); },
+				preformatted => 1,
+				width => 80,
+				height => 20,
+				doif => sub { qwparam('makeit') }
+			       ),
+		   qw_paragraph('Make test results:',
+				sub { return captureeachdir('make test'); },
+				preformatted => 1,
+				width => 80,
+				height => 20,
+				doif => sub { qwparam('maketest') }
+			       )]
+		  ),
+
+       commitmsg =>
+       qw_primary("commitmsg", 'Commit info:', '',
+		  [qw_text('svncommit','Commit message',
+			   default => qwparam('svncommit') || $opts{'m'}),
+		  {type => 'dynamic',
+		   values => sub { my @tops = make_tops(1); return \@tops}}]),
+
+       commit =>
+       qw_primary("commit", 'running commit:', '',
+		  [qw_paragraph('committing files:',
+			       sub { my $msg = qwparam('svncommit');
+				     $msg =~ s/\'/\'\"\'\"\'/g; # escape 's
+				     return capturedir($opts{'d'},
+						       'svn commit -m \'' . $msg . '\' ' . get_codedirs_str()); },
+				preformatted => 1,
+				width => 80,
+				height => 20,
+			       )]),
+
+       editing =>
+       qw_primary("applying", 'Edit the following files:', '',
+		  [{type => 'table',
+		    text => 'Results:',
+		    values => sub { return [\@captures]},
+		   }],[],[])
+      }
+}
+
+sub capture {
+    my $cmd = join(" ",@_);
+    my $results = "Running: $cmd\n";
+    my @a;
+    print $results;
+    open(I,"$cmd 2>&1|");
+    while (<I>) {
+	$results .= $_;
+	print $_;
+	if ($capfilt) {
+	    print "capfilt: $capfilt\n";
+	    @a = /$capfilt/;
+	    print "  capfilt: @a\n";
+	    push @captures, [@a];
+	}
+    }
+    close(I);
+    $result = $? >> 8;
+    $results .= "RESULT: " . (($result) ? "FAIL" : "SUCCESS") . "($result)\n";
+    return $results;
+}
+
+sub capturedir {
+    my $dir = shift;
+    $dir .= "/" if ($dir !~ /\/$/);
+    my $basedir = qwparam('basedir');
+    $basedir .= "/" if ($basedir !~ /\/$/);
+    my $olddir = getcwd();
+    my $newdir = "$basedir$dir" . qwparam('subdir');
+    my $res = "changing to: $newdir\n";
+    print $res;
+    chdir($newdir);
+    $res .= capture(@_);
+    chdir($olddir);
+    return $res;
+}
+
+sub get_codedirs_str() {
+    my $res = "";
+    foreach my $k (@codetrees) {
+	next if (!qwparam($k));
+	$res .= " $opts{'d'}$codetrees{$k}";
+    }
+    $res =~ s/^ //;
+    return $res;
+}
+
+sub captureeachdir {
+    my $out;
+    %captures = ();
+    foreach my $k (@codetrees) {
+	next if (!qwparam($k));
+	$out .= "$k:\n";
+	$out .= capturedir($codetrees{$k}, @_) . "\n";
+	if ($#captures > -1) {
+	    @{$captures{$k}} = @captures;
+	    @captures = ();
+	}
+    }
+    return $out;
+}
+
+sub dodir {
+    my $text = shift;
+    return
+      [{type => 'table',
+	text => $text,
+	values => [[sub {
+			my @tab;
+			foreach my $k (@codetrees) {
+			    next if (!qwparam($k));
+			    push @tab, [$k,
+					qw_paragraph("r$k","", 
+						     preformatted => 1,
+						     width => 80,
+						     height => 20,
+						     values => 
+						     [[sub { $_->[0]($k)}, 
+						       @_]])];
+			}
+			return [\@tab];
+		    }, @_]]
+       }];
+}
diff --git a/dist/schema-snmptrapd.sql b/dist/schema-snmptrapd.sql
new file mode 100644
index 0000000..f496f17
--- /dev/null
+++ b/dist/schema-snmptrapd.sql
@@ -0,0 +1,31 @@
+USE net_snmp;
+DROP TABLE IF EXISTS notifications;
+CREATE TABLE IF NOT EXISTS `notifications` (
+  `trap_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+  `date_time` datetime NOT NULL,
+  `host` varchar(255) NOT NULL,
+  `auth` varchar(255) NOT NULL,
+  `type` ENUM('get','getnext','response','set','trap','getbulk','inform','trap2','report') NOT NULL,
+  `version` ENUM('v1','v2c', 'unsupported(v2u)','v3') NOT NULL,
+  `request_id` int(11) unsigned NOT NULL,
+  `snmpTrapOID` varchar(1024) NOT NULL,
+  `transport` varchar(255) NOT NULL,
+  `security_model` ENUM('snmpV1','snmpV2c','USM') NOT NULL,
+  `v3msgid` int(11) unsigned,
+  `v3security_level` ENUM('noAuthNoPriv','authNoPriv','authPriv'),
+  `v3context_name` varchar(32),
+  `v3context_engine` varchar(64),
+  `v3security_name` varchar(32),
+  `v3security_engine` varchar(64),
+  PRIMARY KEY  (`trap_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+
+DROP TABLE IF EXISTS varbinds;
+CREATE TABLE IF NOT EXISTS `varbinds` (
+  `trap_id` int(11) unsigned NOT NULL default '0',
+  `oid` varchar(1024) NOT NULL,
+  `type` ENUM('boolean','integer','bit','octet','null','oid','ipaddress','counter','unsigned','timeticks','opaque','unused1','counter64','unused2') NOT NULL,
+  `value` blob NOT NULL,
+  KEY `trap_id` (`trap_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
diff --git a/dist/svnup b/dist/svnup
new file mode 100755
index 0000000..40353f0
--- /dev/null
+++ b/dist/svnup
@@ -0,0 +1,130 @@
+#!/bin/sh
+#
+# $Id: cvsup 15788 2007-01-24 13:49:38Z dts12 $
+#
+TAG=
+WO=0
+DEST=
+TMPDIR=/tmp
+
+if [ "x$1" = "x-u" ]; then
+    DEST=$2
+    shift 2
+
+    # gnu tar (as of 1.15.1) is unable to create portable tar archives, 
+    # especially if long file names (>100 char) are present.
+    # star is a better replacement.
+    if [ -x /usr/bin/star ]; then
+        TAR='/usr/bin/star -Hustar -not -pat=*/.svn/* -c -f'
+    elif [ -x /bin/tar ]; then
+        TAR="/bin/tar --exclude=.svn -c -f"
+        echo "warning: star not available, using (less portable) tar..."
+    else
+        echo "neither /usr/bin/star nor /bin/tar found."
+        exit
+    fi
+fi
+
+if [ $# -eq 0 ]; then
+    DIR=$PWD
+else
+    if [ $# -ne 1 ]; then
+        echo "usage: $0 <working directory>"
+        exit
+    fi
+    DIR=$1
+fi
+
+if [ -z ${DIR##*/} ];then
+   DIR=${DIR%/*}
+fi
+SUBD=${DIR##*/}
+PARENT=${DIR%*$SUBD}
+#echo "$DIR = $PARENT + $SUBD"
+
+if [ ! -d $DIR ]; then
+    echo "no such directory '$DIR'"
+    exit
+fi
+
+if [ ! -d $DIR/.svn ]; then
+    echo "'$DIR' has no .svn directory!"
+    exit
+fi
+
+if [ ! -f $DIR/.svn/entries ]; then
+    echo "'$DIR' has no .svn/entries!"
+    exit
+fi
+
+SVNURL=`svn info $DIR| grep URL|cut -f2 -d " "`
+SVNTLD=`echo $SVNURL | sed 's:.*svnroot/net-snmp/\([^/]*\).*:\1:'`
+if [ "x$SVNTLD" = "xtrunk" ]; then
+   TAG="main"
+else
+   TAG=`echo $SVNURL | sed 's:.*svnroot/net-snmp/[^/]*/\([^/]*\).*:\1:'`
+fi
+
+if [ ! -z $DEST ]; then
+    if [ -z $TAG ]; then
+        echo "no TAG found in $DIR!"
+        exit 1
+    fi
+fi
+
+COMMAND="svn update -q $SVNURL $DIR"
+
+if [ ! -w $DIR/.svn ]; then
+    if [ -O $DIR/.svn ]; then
+        WO=1
+        echo "Making $DIR writable"
+        chmod -R u+w $DIR
+    fi
+fi
+
+echo "Updating directory $DIR from $TAG..."
+echo "$COMMAND"
+
+$COMMAND
+rc=$?
+if [ $rc -ne 0 ]; then
+    echo "svn command returned $?"
+fi
+
+if [ $WO -eq 1 ]; then
+    echo "Making $DIR read-only"
+    chmod -R a-w $DIR
+fi
+
+if [ ! -z $DEST ]; then
+  if [ $rc -ne 0 ]; then
+    echo "skipping upload due to rc $rc from svn command"
+    exit $rc
+  else
+    cd $DIR/..
+    #echo $PWD
+    DATE=`date +%Y%m%d_%H%M`
+    SOURCE=net-snmp-svn-$TAG"_$DATE"
+    $TAR $TMPDIR/$SOURCE.tar $SUBD
+    rc=$?
+    if [ $rc -ne 0 ]; then
+      echo "skipping upload due to rc $rc from tar command"
+      rm -f $TMPDIR/$SOURCE.tar.gz
+      exit $rc
+    fi
+    gzip -f --best $TMPDIR/$SOURCE.tar
+    rc=$?
+    if [ $rc -ne 0 ]; then
+      echo "skipping upload due to rc $rc from gzip command"
+      rm -f $TMPDIR/$SOURCE.tar.gz
+      exit $rc
+    fi
+    scp $TMPDIR/$SOURCE.tar.gz $DEST
+    rc=$?
+    if [ $rc -ne 0 ]; then
+      echo "warning: rc $rc from scp command (tarball in $TMPDIR)"
+    else
+      rm -f $TMPDIR/$SOURCE.tar.gz
+    fi
+  fi
+fi
diff --git a/doxygen.conf b/doxygen.conf
index 9e0ef45..20e457d 100644
--- a/doxygen.conf
+++ b/doxygen.conf
@@ -23,7 +23,7 @@
 # This could be handy for archiving the generated documentation or 
 # if some version control system is used.
 
-PROJECT_NUMBER         = 5.4.3.pre1
+PROJECT_NUMBER         = $(VERSION)
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
 # base path where the generated documentation will be put. 
@@ -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 69151a8..ec930fe 100644
--- a/include/net-snmp/agent/agent_handler.h
+++ b/include/net-snmp/agent/agent_handler.h
@@ -61,6 +61,17 @@
                                           struct
                                           netsnmp_agent_request_info_s *,
                                           struct netsnmp_request_info_s *);
+        /** data clone hook for myvoid
+         *  deep copy the myvoid member - default is to copy the pointer
+         *  This method is only called if myvoid != NULL
+         *  myvoid is the current myvoid pointer.
+         *  returns NULL on failure
+         */
+        void *(*data_clone)(void *myvoid);
+        /** data free hook for myvoid
+         *  delete the myvoid member - default is to do nothing
+         *  This method is only called if myvoid != NULL
+         */
         void (*data_free)(void *myvoid); /**< data free hook for myvoid */
 
         struct netsnmp_mib_handler_s *next;
@@ -207,12 +218,13 @@
     netsnmp_handler_registration *
     netsnmp_handler_registration_create(const char *name,
                                         netsnmp_mib_handler *handler,
-                                        oid * reg_oid, size_t reg_oid_len,
+                                        const oid * reg_oid, size_t reg_oid_len,
                                         int modes);
     netsnmp_handler_registration *
     netsnmp_create_handler_registration(const char *name, Netsnmp_Node_Handler*
-                                        handler_access_method, oid *reg_oid,
-                                        size_t reg_oid_len, int modes);
+                                        handler_access_method,
+                                        const oid *reg_oid, size_t reg_oid_len,
+                                        int modes);
 
     netsnmp_delegated_cache
         *netsnmp_create_delegated_cache(netsnmp_mib_handler *,
@@ -231,6 +243,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 e9e2845..2949c9d 100644
--- a/include/net-snmp/agent/agent_registry.h
+++ b/include/net-snmp/agent/agent_registry.h
@@ -35,18 +35,20 @@
 };
 
 struct register_parameters {
-    oid            *name;
-    size_t          namelen;
-    int             priority;
-    int             range_subid;
-    oid             range_ubound;
-    int             timeout;
-    u_char          flags;
-    const char     *contextName;
+    oid                          *name;
+    size_t                        namelen;
+    int                           priority;
+    int                           range_subid;
+    oid                           range_ubound;
+    int                           timeout;
+    u_char                        flags;
+    const char                   *contextName;
+    netsnmp_session              *session;
+    netsnmp_handler_registration *reginfo;
 };
 
 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;
@@ -57,18 +59,21 @@
 void             shutdown_tree    (void);
 
 
-netsnmp_subtree *netsnmp_subtree_find	  (oid *, size_t, netsnmp_subtree *,
+netsnmp_subtree *netsnmp_subtree_find	  (const oid *, size_t,
+					   netsnmp_subtree *,
 					   const char *context_name);
 
-netsnmp_subtree *netsnmp_subtree_find_next(oid *, size_t, netsnmp_subtree *,
+netsnmp_subtree *netsnmp_subtree_find_next(const oid *, size_t,
+					   netsnmp_subtree *,
 					   const char *context_name);
 
-netsnmp_subtree *netsnmp_subtree_find_prev(oid *, size_t,netsnmp_subtree *,
+netsnmp_subtree *netsnmp_subtree_find_prev(const oid *, size_t,
+					   netsnmp_subtree *,
 					   const char *context_name);
 
 netsnmp_subtree *netsnmp_subtree_find_first(const char *context_name);
 
-netsnmp_session *get_session_for_oid	   (oid *, size_t, 
+netsnmp_session *get_session_for_oid	   (const oid *, size_t, 
 					    const char *context_name);
 
 subtree_context_cache *get_top_context_cache(void);
@@ -84,25 +89,32 @@
 #define MIB_UNREGISTRATION_FAILED	-2
 #define DEFAULT_MIB_PRIORITY		127
 
-int             register_mib		   (const char *, struct variable *,
-					    size_t, size_t, oid *, size_t);
+int             register_mib		   (const char *,
+                                            const struct variable *,
+					    size_t, size_t, const oid *,
+					    size_t);
 
-int             register_mib_priority	   (const char *, struct variable *,
-					    size_t, size_t, oid *, size_t,
+int             register_mib_priority	   (const char *,
+                                            const struct variable *,
+					    size_t, size_t, const oid *, size_t,
 					    int);
 
-int             register_mib_range	   (const char *, struct variable *,
-					    size_t, size_t, oid *, size_t, 
-					    int, int, oid, netsnmp_session *);
+int             register_mib_range	   (const char *,
+                                            const struct variable *,
+					    size_t, size_t, const oid *,
+					    size_t, int, int, oid,
+					    netsnmp_session *);
 
-int		register_mib_context	   (const char *, struct variable *,
-					    size_t, size_t, oid *, size_t,
+int		register_mib_context	   (const char *,
+                                            const struct variable *,
+					    size_t, size_t, const oid *, size_t,
 					    int, int, oid, netsnmp_session *,
 					    const char *, int, int);
 
-int	netsnmp_register_mib_table_row	   (const char *, struct variable *,
-					    size_t, size_t, oid *, size_t, 
-					    int, int, netsnmp_session *,
+int	netsnmp_register_mib_table_row	   (const char *,
+                                            const struct variable *,
+					    size_t, size_t, oid *,
+					    size_t, int, int, netsnmp_session *,
 					    const char *, int, int);
 
 int		unregister_mib		   (oid *, size_t);
@@ -137,10 +149,12 @@
  *          (sizeof(theoid) *must* return the number of elements!) 
  */
 
-#define REGISTER_MIB(descr, var, vartype, theoid)                      \
-  if (register_mib(descr, (struct variable *) var, sizeof(struct vartype), \
-               sizeof(var)/sizeof(struct vartype),                     \
-               theoid, sizeof(theoid)/sizeof(oid)) != MIB_REGISTERED_OK ) \
+#define REGISTER_MIB(descr, var, vartype, theoid)                       \
+    if (register_mib(descr, (const struct variable *) var,              \
+                     sizeof(struct vartype),                            \
+                     sizeof(var)/sizeof(struct vartype),                \
+                     theoid, sizeof(theoid)/sizeof(oid)) !=             \
+        MIB_REGISTERED_OK)                                              \
 	DEBUGMSGTL(("register_mib", "%s registration failed\n", descr));
 
 
diff --git a/include/net-snmp/agent/agent_sysORTable.h b/include/net-snmp/agent/agent_sysORTable.h
new file mode 100644
index 0000000..5626e4a
--- /dev/null
+++ b/include/net-snmp/agent/agent_sysORTable.h
@@ -0,0 +1,28 @@
+#ifndef AGENT_SYSORTABLE_H
+#define AGENT_SYSORTABLE_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+struct sysORTable;
+
+extern void     init_agent_sysORTable(void);
+extern void     shutdown_agent_sysORTable(void);
+
+extern void     netsnmp_sysORTable_foreach(void (*)(const struct sysORTable*,
+                                                    void*),
+                                           void*);
+
+extern int      register_sysORTable(oid *, size_t, const char *);
+extern int      unregister_sysORTable(oid *, size_t);
+extern int      register_sysORTable_sess(oid *, size_t, const char *,
+                                         netsnmp_session *);
+extern int      unregister_sysORTable_sess(oid *, size_t, netsnmp_session *);
+extern void     unregister_sysORTable_by_session(netsnmp_session *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* AGENT_SYSORTABLE_H */
diff --git a/include/net-snmp/agent/agent_trap.h b/include/net-snmp/agent/agent_trap.h
index ebc2b06..26e2223 100644
--- a/include/net-snmp/agent/agent_trap.h
+++ b/include/net-snmp/agent/agent_trap.h
@@ -14,16 +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, 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,
+                                            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/baby_steps.h b/include/net-snmp/agent/baby_steps.h
index 6a1a8b9..d256550 100644
--- a/include/net-snmp/agent/baby_steps.h
+++ b/include/net-snmp/agent/baby_steps.h
@@ -16,6 +16,7 @@
 #define BABY_STEP_NONE                  0
 #define BABY_STEP_PRE_REQUEST           (0x1 <<  1)
 #define BABY_STEP_OBJECT_LOOKUP         (0x1 <<  2)
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #define BABY_STEP_CHECK_VALUE           (0x1 <<  3)
 #define BABY_STEP_ROW_CREATE            (0x1 <<  4)
 #define BABY_STEP_UNDO_SETUP            (0x1 <<  5)
@@ -26,14 +27,17 @@
 #define BABY_STEP_UNDO_COMMIT           (0x1 << 10)
 #define BABY_STEP_IRREVERSIBLE_COMMIT   (0x1 << 11)
 #define BABY_STEP_UNDO_CLEANUP          (0x1 << 12)
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 #define BABY_STEP_POST_REQUEST          (0x1 << 13)
 
 #define BABY_STEP_ALL                   (0xffffffff)
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #define BABY_STEP_CHECK_OBJECT          BABY_STEP_CHECK_VALUE
 #define BABY_STEP_SET_VALUES            BABY_STEP_SET_VALUE
 #define BABY_STEP_UNDO_SETS             BABY_STEP_UNDO_SET
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /** @name baby_steps
  *
@@ -43,6 +47,8 @@
  *  @{ */
 
     typedef struct netsnmp_baby_steps_modes_s {
+       /** Number of handlers whose myvoid pointer points at this object. */
+       int         refcnt;
        u_int       registered;
        u_int       completed;
     } netsnmp_baby_steps_modes;
@@ -74,6 +80,7 @@
    Netsnmp_Node_Handler *pre_request;
    Netsnmp_Node_Handler *object_lookup;
    Netsnmp_Node_Handler *get_values;
+#ifndef NETSNMP_NO_WRITE_SUPPORT
    Netsnmp_Node_Handler *object_syntax_checks;
    Netsnmp_Node_Handler *row_creation;
    Netsnmp_Node_Handler *undo_setup;
@@ -84,6 +91,7 @@
    Netsnmp_Node_Handler *undo_cleanup;
    Netsnmp_Node_Handler *undo_commit;
    Netsnmp_Node_Handler *irreversible_commit;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
    Netsnmp_Node_Handler *post_request;
 
    void                 *my_access_void;
diff --git a/include/net-snmp/agent/cache_handler.h b/include/net-snmp/agent/cache_handler.h
index e5ac653..1e4751c 100644
--- a/include/net-snmp/agent/cache_handler.h
+++ b/include/net-snmp/agent/cache_handler.h
@@ -1,3 +1,13 @@
+/* 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.
+ */
 #ifndef NETSNMP_CACHE_HANDLER_H
 #define NETSNMP_CACHE_HANDLER_H
 
@@ -22,6 +32,8 @@
     typedef void (NetsnmpCacheFree)(netsnmp_cache *, void*);
 
     struct netsnmp_cache_s {
+	/** Number of handlers whose myvoid member points at this structure. */
+	int      refcnt;
         /*
 	 * For operation of the data caches
 	 */
@@ -30,7 +42,7 @@
         int      valid;
         char     expired;
         int      timeout;	/* Length of time the cache is valid (in s) */
-        marker_t timestamp;	/* When the cache was last loaded */
+        marker_t timestampM;	/* When the cache was last loaded */
         u_long   timer_id;      /* periodic timer id */
 
         NetsnmpCacheLoad *load_cache;
@@ -74,7 +86,7 @@
     int            netsnmp_is_cache_valid(    netsnmp_agent_request_info *);
     netsnmp_mib_handler *netsnmp_get_cache_handler(int, NetsnmpCacheLoad *,
                                                         NetsnmpCacheFree *,
-                                                        oid*, int);
+                                                        const oid*, int);
     int   netsnmp_register_cache_handler(netsnmp_handler_registration *reginfo,
                                          int, NetsnmpCacheLoad *,
                                               NetsnmpCacheFree *);
@@ -84,11 +96,15 @@
     netsnmp_cache *
     netsnmp_cache_create(int timeout, NetsnmpCacheLoad * load_hook,
                          NetsnmpCacheFree * free_hook,
-                         oid * rootoid, int rootoid_len);
+                         const oid * rootoid, int rootoid_len);
+    int netsnmp_cache_remove(netsnmp_cache *cache);
+    int netsnmp_cache_free(netsnmp_cache *cache);
+
     netsnmp_mib_handler *
     netsnmp_cache_handler_get(netsnmp_cache* cache);
+    void netsnmp_cache_handler_owns_cache(netsnmp_mib_handler *handler);
 
-    netsnmp_cache * netsnmp_cache_find_by_oid(oid * rootoid,
+    netsnmp_cache * netsnmp_cache_find_by_oid(const oid * rootoid,
                                               int rootoid_len);
 
     unsigned int netsnmp_cache_timer_start(netsnmp_cache *cache);
@@ -103,6 +119,7 @@
 #define NETSNMP_CACHE_DONT_AUTO_RELEASE                     0x0008
 #define NETSNMP_CACHE_PRELOAD                               0x0010
 #define NETSNMP_CACHE_AUTO_RELOAD                           0x0020
+#define NETSNMP_CACHE_RESET_TIMER_ON_USE                    0x0040
 
 #define NETSNMP_CACHE_HINT_HANDLER_ARGS                     0x1000
 
diff --git a/include/net-snmp/agent/ds_agent.h b/include/net-snmp/agent/ds_agent.h
index aabb792..f6f639d 100644
--- a/include/net-snmp/agent/ds_agent.h
+++ b/include/net-snmp/agent/ds_agent.h
@@ -27,10 +27,18 @@
 #define NETSNMP_DS_AGENT_DONT_LOG_TCPWRAPPERS_CONNECTS 12   /* 1 = disable logging */
 #define NETSNMP_DS_APP_DONT_LOG         NETSNMP_DS_AGENT_DONT_RETAIN_NOTIFICATIONS /* compat */
 #define NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES    13   /* 1 = don't store NFS entries in hrStorageTable */
+#define NETSNMP_DS_AGENT_REALSTORAGEUNITS 14    /* 1 = use real allocation units in hrStorageTable, 0 = recalculate it to fit 32bits */
 
-/* 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 
@@ -42,6 +50,7 @@
 #define NETSNMP_DS_AGENT_PERL_INIT_FILE    4    /* used by embedded perl */
 #define NETSNMP_DS_SMUX_SOCKET    5     /* ip:port socket addr */
 #define NETSNMP_DS_NOTIF_LOG_CTX  6     /* "" | "snmptrapd" */
+#define NETSNMP_DS_AGENT_TRAP_ADDR      7     /* used as v1 trap agent address */
 
 /*
  * integers 
diff --git a/include/net-snmp/agent/hardware/cpu.h b/include/net-snmp/agent/hardware/cpu.h
index 6268897..f6e43e5 100644
--- a/include/net-snmp/agent/hardware/cpu.h
+++ b/include/net-snmp/agent/hardware/cpu.h
@@ -33,6 +33,9 @@
      unsigned long long kern_ticks;
      unsigned long long intrpt_ticks;
      unsigned long long sirq_ticks;
+     unsigned long long steal_ticks;
+     unsigned long long guest_ticks;
+     unsigned long long guestnice_ticks;
 
      unsigned long long total_ticks;
      unsigned long long sys2_ticks;  /* For non-atomic system counts */
diff --git a/include/net-snmp/agent/hardware/fsys.h b/include/net-snmp/agent/hardware/fsys.h
new file mode 100644
index 0000000..91e8e17
--- /dev/null
+++ b/include/net-snmp/agent/hardware/fsys.h
@@ -0,0 +1,109 @@
+typedef struct netsnmp_fsys_info_s netsnmp_fsys_info;
+
+#define _NETSNMP_FS_TYPE_SKIP_BIT   0x2000
+#define _NETSNMP_FS_TYPE_LOCAL      0x1000
+
+   /*
+    * Enumeration from HOST-RESOURCES-TYPES mib
+    */
+#define NETSNMP_FS_TYPE_OTHER	   1
+#define NETSNMP_FS_TYPE_UNKNOWN	   2
+#define NETSNMP_FS_TYPE_BERKELEY   3
+#define NETSNMP_FS_TYPE_SYSV	   4
+#define NETSNMP_FS_TYPE_FAT	   5
+#define NETSNMP_FS_TYPE_HPFS	   6
+#define NETSNMP_FS_TYPE_HFS	   7
+#define NETSNMP_FS_TYPE_MFS	   8
+#define NETSNMP_FS_TYPE_NTFS	   9
+#define NETSNMP_FS_TYPE_VNODE	   10
+#define NETSNMP_FS_TYPE_JFS	   11
+#define NETSNMP_FS_TYPE_ISO9660	   12
+#define NETSNMP_FS_TYPE_ROCKRIDGE  13
+#define NETSNMP_FS_TYPE_NFS	   14
+#define NETSNMP_FS_TYPE_NETWARE	   15
+#define NETSNMP_FS_TYPE_AFS	   16
+#define NETSNMP_FS_TYPE_DFS	   17
+#define NETSNMP_FS_TYPE_APPLESHARE 18
+#define NETSNMP_FS_TYPE_RFS	   19
+#define NETSNMP_FS_TYPE_DGCS	   20
+#define NETSNMP_FS_TYPE_BOOTFS	   21
+#define NETSNMP_FS_TYPE_FAT32	   22
+#define NETSNMP_FS_TYPE_EXT2	   23
+
+   /*
+    * Additional enumerationis - not listed in that MIB
+    */
+#define NETSNMP_FS_TYPE_IGNORE	   1 | _NETSNMP_FS_TYPE_LOCAL | _NETSNMP_FS_TYPE_SKIP_BIT
+
+#define NETSNMP_FS_TYPE_PROC	   2 | _NETSNMP_FS_TYPE_LOCAL | _NETSNMP_FS_TYPE_SKIP_BIT
+
+#define NETSNMP_FS_TYPE_DEVPTS	   3 | _NETSNMP_FS_TYPE_LOCAL | _NETSNMP_FS_TYPE_SKIP_BIT
+#define NETSNMP_FS_TYPE_SYSFS	   4 | _NETSNMP_FS_TYPE_LOCAL | _NETSNMP_FS_TYPE_SKIP_BIT
+#define NETSNMP_FS_TYPE_TMPFS	   5 | _NETSNMP_FS_TYPE_LOCAL
+#define NETSNMP_FS_TYPE_USBFS	   6 | _NETSNMP_FS_TYPE_LOCAL
+
+#define NETSNMP_FS_FLAG_ACTIVE   0x01
+#define NETSNMP_FS_FLAG_REMOTE   0x02
+#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
+
+struct netsnmp_fsys_info_s {
+     netsnmp_index  idx;
+  /* int  idx; */
+ 
+     char path[  SNMP_MAXPATH+1];
+     char device[SNMP_MAXPATH+1];
+     int  type;
+
+     unsigned long long size;
+     unsigned long long used;
+     unsigned long long avail;
+     unsigned long long units;
+
+     /* artificially computed values, both 'size_32' and 'units_32' fit INT32 */
+     unsigned long size_32;
+     unsigned long used_32;
+     unsigned long avail_32;
+     unsigned long units_32;
+
+     unsigned long long inums_total;
+     unsigned long long inums_avail;
+
+     int  minspace;
+     int  minpercent;
+
+     long flags;
+
+     netsnmp_fsys_info *next;
+};
+
+
+    /*
+     * Possibly not all needed ??
+     */
+netsnmp_fsys_info *netsnmp_fsys_get_first( void );
+netsnmp_fsys_info *netsnmp_fsys_get_next( netsnmp_fsys_info* );
+netsnmp_fsys_info *netsnmp_fsys_get_byIdx(  int,   int );
+netsnmp_fsys_info *netsnmp_fsys_get_next_byIdx(int,int );
+
+netsnmp_fsys_info *netsnmp_fsys_by_device(  char*, int );
+netsnmp_fsys_info *netsnmp_fsys_by_path(    char*, int );
+
+netsnmp_cache *netsnmp_fsys_get_cache( void );
+int  netsnmp_fsys_load( netsnmp_cache *cache, void *data );
+void netsnmp_fsys_free( netsnmp_cache *cache, void *data );
+
+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* );
+
+void netsnmp_fsys_calculate32( netsnmp_fsys_info *f);
diff --git a/include/net-snmp/agent/hardware/sensors.h b/include/net-snmp/agent/hardware/sensors.h
new file mode 100644
index 0000000..d59eca7
--- /dev/null
+++ b/include/net-snmp/agent/hardware/sensors.h
@@ -0,0 +1,48 @@
+/*
+ * Hardware Abstraction Layer - Sensors module
+ *
+ * Public interface
+ */
+
+#define NETSNMP_SENSOR_TYPE_OTHER       1
+#define NETSNMP_SENSOR_TYPE_VOLTAGE_AC  3
+#define NETSNMP_SENSOR_TYPE_VOLTAGE_DC  4
+#define NETSNMP_SENSOR_TYPE_CURRENT     5
+#define NETSNMP_SENSOR_TYPE_POWER       6
+#define NETSNMP_SENSOR_TYPE_FREQUENCY   7
+#define NETSNMP_SENSOR_TYPE_TEMPERATURE 8
+#define NETSNMP_SENSOR_TYPE_HUMIDITY    9
+#define NETSNMP_SENSOR_TYPE_RPM        10
+#define NETSNMP_SENSOR_TYPE_VOLUME     11
+#define NETSNMP_SENSOR_TYPE_BOOLEAN    12
+
+
+#define NETSNMP_SENSOR_FLAG_ACTIVE     0x01
+#define NETSNMP_SENSOR_FLAG_NAVAIL     0x02
+#define NETSNMP_SENSOR_FLAG_BROKEN     0x04
+#define NETSNMP_SENSOR_FLAG_DISABLE    0x08
+
+#define NETSNMP_SENSOR_MASK_STATUS     0x06  /* NAVAIL|BROKEN */
+
+
+#define NETSNMP_SENSOR_FIND_CREATE     1   /* or use one of the sensor type values */
+#define NETSNMP_SENSOR_FIND_EXIST      0
+
+typedef struct netsnmp_sensor_info_s netsnmp_sensor_info;
+struct netsnmp_sensor_info_s {
+
+    netsnmp_index  idx;
+    /* int  idx; */
+    char  name[256];
+    
+    int   type;
+    float value;
+    char  descr[256];
+    long  flags;
+};
+
+netsnmp_container   *get_sensor_container( void );
+netsnmp_cache       *get_sensor_cache( void );
+netsnmp_sensor_info *sensor_by_name( const char *, int );
+NetsnmpCacheLoad     netsnmp_sensor_load;
+NetsnmpCacheFree     netsnmp_sensor_free;
diff --git a/include/net-snmp/agent/instance.h b/include/net-snmp/agent/instance.h
index 0a02c21..82f2edd 100644
--- a/include/net-snmp/agent/instance.h
+++ b/include/net-snmp/agent/instance.h
@@ -20,8 +20,9 @@
  * * have to check the oid at all.  Just answer.
  */
 
-int             netsnmp_register_instance(netsnmp_handler_registration
-                                          *reginfo);
+int
+netsnmp_register_instance(netsnmp_handler_registration * reginfo);
+
 int            
 netsnmp_register_read_only_instance(netsnmp_handler_registration *reginfo);
 
@@ -29,111 +30,103 @@
 
 netsnmp_mib_handler *netsnmp_get_instance_handler(void);
 
-int             netsnmp_register_read_only_ulong_instance(const char *name,
-                                                          oid * reg_oid,
-                                                          size_t
-                                                          reg_oid_len,
-                                                          u_long * it,
-                                                          Netsnmp_Node_Handler
-                                                          * subhandler);
-int             netsnmp_register_ulong_instance(const char *name,
-                                                oid * reg_oid,
-                                                size_t reg_oid_len,
-                                                u_long * it,
-                                                Netsnmp_Node_Handler *
-                                                subhandler);
-int             netsnmp_register_read_only_counter32_instance(const char
-                                                              *name,
-                                                              oid *
-                                                              reg_oid,
-                                                              size_t
-                                                              reg_oid_len,
-                                                              u_long * it,
-                                                              Netsnmp_Node_Handler
-                                                              *
-                                                              subhandler);
-int             netsnmp_register_read_only_long_instance(const char *name,
-                                                         oid * reg_oid,
-                                                         size_t
-                                                         reg_oid_len,
-                                                         long *it,
-                                                         Netsnmp_Node_Handler
-                                                         * subhandler);
-int             netsnmp_register_long_instance(const char *name,
-                                               oid * reg_oid,
-                                               size_t reg_oid_len,
-                                               long *it,
-                                               Netsnmp_Node_Handler *
-                                               subhandler);
+int
+netsnmp_register_read_only_ulong_instance(const char * name,
+                                          const oid * reg_oid,
+                                          size_t reg_oid_len,
+                                          u_long * it,
+                                          Netsnmp_Node_Handler * subhandler);
+int
+netsnmp_register_ulong_instance(const char * name,
+                                const oid * reg_oid,
+                                size_t reg_oid_len,
+                                u_long * it,
+                                Netsnmp_Node_Handler * subhandler);
+int
+netsnmp_register_read_only_counter32_instance(const char *name,
+                                              const oid * reg_oid,
+                                              size_t reg_oid_len,
+                                              u_long * it,
+                                              Netsnmp_Node_Handler *subhandler);
+int
+netsnmp_register_read_only_long_instance(const char *name,
+                                         const oid * reg_oid,
+                                         size_t reg_oid_len,
+                                         long *it,
+                                         Netsnmp_Node_Handler * subhandler);
+int
+netsnmp_register_long_instance(const char *name,
+                               const oid * reg_oid,
+                               size_t reg_oid_len,
+                               long *it,
+                               Netsnmp_Node_Handler * subhandler);
 
-int             netsnmp_register_read_only_int_instance(const char *name,
-                                              oid * reg_oid,
-                                              size_t reg_oid_len, int *it,
-                                              Netsnmp_Node_Handler *
-                                              subhandler);
+int
+netsnmp_register_read_only_int_instance(const char *name,
+                                        const oid * reg_oid,
+                                        size_t reg_oid_len, int *it,
+                                        Netsnmp_Node_Handler * subhandler);
 
-int             netsnmp_register_int_instance(const char *name,
-                                              oid * reg_oid,
-                                              size_t reg_oid_len, int *it,
-                                              Netsnmp_Node_Handler *
-                                              subhandler);
+int
+netsnmp_register_int_instance(const char *name,
+                              const oid * reg_oid,
+                              size_t reg_oid_len, int *it,
+                              Netsnmp_Node_Handler * subhandler);
 
 /* identical functions that register a in a particular context */
-int  netsnmp_register_read_only_ulong_instance_context(const char *name,
-                                                       oid * reg_oid,
-                                                       size_t
-                                                       reg_oid_len,
-                                                       u_long * it,
-                                                       Netsnmp_Node_Handler
-                                                       * subhandler,
-                                                       const char *contextName);
-int  netsnmp_register_ulong_instance_context(const char *name,
-                                             oid * reg_oid,
-                                             size_t reg_oid_len,
-                                             u_long * it,
-                                             Netsnmp_Node_Handler *
-                                             subhandler,
-                                             const char *contextName);
-int  netsnmp_register_read_only_counter32_instance_context(const char
-                                                           *name,
-                                                           oid *
-                                                           reg_oid,
-                                                           size_t
-                                                           reg_oid_len,
-                                                           u_long * it,
-                                                           Netsnmp_Node_Handler
-                                                           *
-                                                           subhandler,
-                                                           const char *contextName);
-int  netsnmp_register_read_only_long_instance_context(const char *name,
-                                                      oid * reg_oid,
-                                                      size_t
-                                                      reg_oid_len,
-                                                      long *it,
+int
+netsnmp_register_read_only_ulong_instance_context(const char *name,
+                                                  const oid * reg_oid,
+                                                  size_t reg_oid_len,
+                                                  u_long * it,
+                                                  Netsnmp_Node_Handler
+                                                  * subhandler,
+                                                  const char *contextName);
+int
+netsnmp_register_ulong_instance_context(const char *name,
+                                        const oid * reg_oid,
+                                        size_t reg_oid_len,
+                                        u_long * it,
+                                        Netsnmp_Node_Handler * subhandler,
+                                        const char *contextName);
+int
+netsnmp_register_read_only_counter32_instance_context(const char *name,
+                                                      const oid * reg_oid,
+                                                      size_t reg_oid_len,
+                                                      u_long * it,
                                                       Netsnmp_Node_Handler
                                                       * subhandler,
                                                       const char *contextName);
-int  netsnmp_register_long_instance_context(const char *name,
-                                            oid * reg_oid,
-                                            size_t reg_oid_len,
-                                            long *it,
-                                            Netsnmp_Node_Handler *
-                                            subhandler,
-                                            const char *contextName);
+int
+netsnmp_register_read_only_long_instance_context(const char *name,
+                                                 const oid * reg_oid,
+                                                 size_t reg_oid_len,
+                                                 long *it,
+                                                 Netsnmp_Node_Handler
+                                                 * subhandler,
+                                                 const char *contextName);
+int
+netsnmp_register_long_instance_context(const char *name,
+                                       const oid * reg_oid,
+                                       size_t reg_oid_len,
+                                       long *it,
+                                       Netsnmp_Node_Handler * subhandler,
+                                       const char *contextName);
 
-int  netsnmp_register_read_only_int_instance_context(const char *name,
-                                                     oid * reg_oid,
-                                                     size_t reg_oid_len, int *it,
-                                                     Netsnmp_Node_Handler *
-                                                     subhandler,
-                                                     const char *contextName);
+int
+netsnmp_register_read_only_int_instance_context(const char *name,
+                                                const oid * reg_oid,
+                                                size_t reg_oid_len, int *it,
+                                                Netsnmp_Node_Handler *
+                                                subhandler,
+                                                const char *contextName);
 
-int  netsnmp_register_int_instance_context(const char *name,
-                                           oid * reg_oid,
-                                           size_t reg_oid_len, int *it,
-                                           Netsnmp_Node_Handler *
-                                           subhandler,
-                                           const char *contextName);
+int
+netsnmp_register_int_instance_context(const char *name,
+                                      const oid * reg_oid,
+                                      size_t reg_oid_len, int *it,
+                                      Netsnmp_Node_Handler * subhandler,
+                                      const char *contextName);
 
 int
 netsnmp_register_num_file_instance(const char *name,
@@ -143,11 +136,6 @@
                                    const char *contextName);
 
 Netsnmp_Node_Handler netsnmp_instance_helper_handler;
-Netsnmp_Node_Handler netsnmp_instance_ulong_handler;
-Netsnmp_Node_Handler netsnmp_instance_long_handler;
-Netsnmp_Node_Handler netsnmp_instance_int_handler;
-Netsnmp_Node_Handler netsnmp_instance_uint_handler;
-Netsnmp_Node_Handler netsnmp_instance_counter32_handler;
 Netsnmp_Node_Handler netsnmp_instance_num_file_handler;
 
 #ifdef __cplusplus
diff --git a/include/net-snmp/agent/old_api.h b/include/net-snmp/agent/old_api.h
index 06ec449..2bd3cd1 100644
--- a/include/net-snmp/agent/old_api.h
+++ b/include/net-snmp/agent/old_api.h
@@ -25,10 +25,10 @@
 } netsnmp_old_api_cache;
 
 int             netsnmp_register_old_api(const char *moduleName,
-                                         struct variable *var,
+                                         const struct variable *var,
                                          size_t varsize,
                                          size_t numvars,
-                                         oid * mibloc,
+                                         const oid * mibloc,
                                          size_t mibloclen,
                                          int priority,
                                          int range_subid,
diff --git a/include/net-snmp/agent/snmp_agent.h b/include/net-snmp/agent/snmp_agent.h
index 45ca62b..aad8837 100644
--- a/include/net-snmp/agent/snmp_agent.h
+++ b/include/net-snmp/agent/snmp_agent.h
@@ -118,9 +118,15 @@
 #define MODE_GETNEXT          SNMP_MSG_GETNEXT
 #define MODE_GETBULK          SNMP_MSG_GETBULK
 #define MODE_GET_STASH        SNMP_MSG_INTERNAL_GET_STASH
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #define MODE_IS_GET(x)        ((x >= 128) && (x != -1)  && (x != SNMP_MSG_SET))
+#else /* NETSNMP_NO_WRITE_SUPPORT */
+#define MODE_IS_GET(x)        ((x >= 128) && (x != -1))
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
     /* #define MODE_IS_GET(x)        ((x == SNMP_MSG_GET) || (x == SNMP_MSG_GETNEXT) || (x == SNMP_MSG_GETBULK) || (x == SNMP_MSG_INTERNAL_GET_STASH)) */
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #define MODE_SET_BEGIN        SNMP_MSG_INTERNAL_SET_BEGIN
 #define MODE_SET_RESERVE1     SNMP_MSG_INTERNAL_SET_RESERVE1
 #define MODE_SET_RESERVE2     SNMP_MSG_INTERNAL_SET_RESERVE2
@@ -130,11 +136,13 @@
 #define MODE_SET_UNDO         SNMP_MSG_INTERNAL_SET_UNDO
 #define MODE_IS_SET(x)         ((x < 128) || (x == -1) || (x == SNMP_MSG_SET))
     /* #define MODE_IS_SET(x)         (!MODE_IS_GET(x)) */
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 #define MODE_BSTEP_PRE_REQUEST   SNMP_MSG_INTERNAL_PRE_REQUEST
 #define MODE_BSTEP_POST_REQUEST  SNMP_MSG_INTERNAL_POST_REQUEST
 
 #define MODE_BSTEP_OBJECT_LOOKUP       SNMP_MSG_INTERNAL_OBJECT_LOOKUP
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #define MODE_BSTEP_CHECK_VALUE         SNMP_MSG_INTERNAL_CHECK_VALUE
 #define MODE_BSTEP_ROW_CREATE          SNMP_MSG_INTERNAL_ROW_CREATE
 #define MODE_BSTEP_UNDO_SETUP          SNMP_MSG_INTERNAL_UNDO_SETUP
@@ -145,7 +153,7 @@
 #define MODE_BSTEP_UNDO_COMMIT         SNMP_MSG_INTERNAL_UNDO_COMMIT
 #define MODE_BSTEP_IRREVERSIBLE_COMMIT SNMP_MSG_INTERNAL_IRREVERSIBLE_COMMIT
 #define MODE_BSTEP_UNDO_CLEANUP        SNMP_MSG_INTERNAL_UNDO_CLEANUP
-
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /** @typedef struct netsnmp_agent_request_info_s netsnmp_agent_request_info
  * Typedefs the netsnmp_agent_request_info_s struct into
@@ -262,7 +270,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/include/net-snmp/agent/snmp_get_statistic.h b/include/net-snmp/agent/snmp_get_statistic.h
new file mode 100644
index 0000000..cc5d486
--- /dev/null
+++ b/include/net-snmp/agent/snmp_get_statistic.h
@@ -0,0 +1,20 @@
+#ifndef SNMP_GET_STATISTIC_H
+#define SNMP_GET_STATISTIC_H
+
+/** Registers a scalar group with statistics from @ref snmp_get_statistic.
+ *  as reginfo.[start, start + end - begin].
+ *  @param reginfo registration to register the items under
+ *  @param start offset to the begin item
+ *  @param begin first snmp_get_statistic key to return
+ *  @param end last snmp_get_statistic key to return
+ */
+int
+netsnmp_register_statistic_handler(netsnmp_handler_registration *reginfo,
+                                   oid start, int begin, int end);
+
+#define NETSNMP_REGISTER_STATISTIC_HANDLER(reginfo, start, stat)        \
+  netsnmp_register_statistic_handler(reginfo, start,                    \
+                                     STAT_ ## stat ## _STATS_START,     \
+                                     STAT_ ## stat ## _STATS_END)
+
+#endif
diff --git a/include/net-snmp/agent/snmp_vars.h b/include/net-snmp/agent/snmp_vars.h
index d280a9a..77dbd70 100644
--- a/include/net-snmp/agent/snmp_vars.h
+++ b/include/net-snmp/agent/snmp_vars.h
@@ -45,6 +45,23 @@
 
     struct variable;
 
+    /**
+     * Duplicates a variable.
+     *
+     * @return Pointer to the duplicate variable upon success; NULL upon
+     *   failure.
+     *
+     * @see struct variable
+     * @see struct variable1
+     * @see struct variable2
+     * @see struct variable3
+     * @see struct variable4
+     * @see struct variable7
+     * @see struct variable8
+     * @see struct variable13
+     */
+    struct variable *netsnmp_duplicate_variable(const struct variable *var);
+
     /*
      * Function pointer called by the master agent for writes. 
      */
diff --git a/include/net-snmp/agent/stash_cache.h b/include/net-snmp/agent/stash_cache.h
index cfa85ef..3709a27 100644
--- a/include/net-snmp/agent/stash_cache.h
+++ b/include/net-snmp/agent/stash_cache.h
@@ -20,6 +20,7 @@
 } netsnmp_stash_cache_data;
 
 /* function prototypes */
+void netsnmp_init_stash_cache_helper(void);
 netsnmp_mib_handler *netsnmp_get_bare_stash_cache_handler(void);
 netsnmp_mib_handler *netsnmp_get_stash_cache_handler(void);
 netsnmp_mib_handler *netsnmp_get_timed_bare_stash_cache_handler(int timeout,
diff --git a/include/net-snmp/agent/sysORTable.h b/include/net-snmp/agent/sysORTable.h
new file mode 100644
index 0000000..bfebad2
--- /dev/null
+++ b/include/net-snmp/agent/sysORTable.h
@@ -0,0 +1,62 @@
+#ifndef NETSNMP_SYSORTABLE_H
+#define NETSNMP_SYSORTABLE_H
+
+struct sysORTable {
+    char            *OR_descr;
+    oid             *OR_oid;
+    size_t           OR_oidlen;
+    netsnmp_session *OR_sess;
+    u_long           OR_uptime;
+};
+
+struct register_sysOR_parameters {
+    char            *descr;
+    oid             *name;
+    size_t           namelen;
+};
+
+#define SYS_ORTABLE_REGISTERED_OK              0
+#define SYS_ORTABLE_REGISTRATION_FAILED       -1
+#define SYS_ORTABLE_UNREGISTERED_OK            0
+#define SYS_ORTABLE_NO_SUCH_REGISTRATION      -1
+
+#include <net-snmp/agent/agent_callbacks.h>
+
+#define REGISTER_SYSOR_TABLE(theoid, len, descr)           \
+  do {                                                     \
+    struct sysORTable t;                                   \
+    t.OR_descr = NETSNMP_REMOVE_CONST(char *, descr);      \
+    t.OR_oid = theoid;                                     \
+    t.OR_oidlen = len;                                     \
+    t.OR_sess = NULL;                                      \
+    t.OR_uptime = 0;                                       \
+    snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,         \
+                        SNMPD_CALLBACK_REQ_REG_SYSOR, &t); \
+  } while(0);
+
+#define REGISTER_SYSOR_ENTRY(theoid, descr)                     \
+  REGISTER_SYSOR_TABLE(theoid, sizeof(theoid) / sizeof(oid),    \
+                       descr)
+
+#define UNREGISTER_SYSOR_TABLE(theoid, len)                     \
+  do {                                                          \
+    struct sysORTable t;                                        \
+    t.OR_descr = NULL;                                          \
+    t.OR_oid = theoid;                                          \
+    t.OR_oidlen = len;                                          \
+    t.OR_sess = NULL;                                           \
+    t.OR_uptime = 0;                                            \
+    snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,              \
+                        SNMPD_CALLBACK_REQ_UNREG_SYSOR, &t);    \
+  } while(0);
+
+#define UNREGISTER_SYSOR_ENTRY(theoid)                          \
+  UNREGISTER_SYSOR_TABLE(theoid, sizeof(theoid) / sizeof(oid))
+
+#define UNREGISTER_SYSOR_SESS(sess)                             \
+  snmp_call_callbacks(SNMP_CALLBACK_APPLICATION,                \
+                      SNMPD_CALLBACK_REQ_UNREG_SYSOR_SESS,      \
+                      sess);
+
+
+#endif /* NETSNMP_SYSORTABLE_H */
diff --git a/include/net-snmp/agent/table.h b/include/net-snmp/agent/table.h
index 3b8bbc2..79e588c 100644
--- a/include/net-snmp/agent/table.h
+++ b/include/net-snmp/agent/table.h
@@ -9,6 +9,12 @@
  * distributed with the Net-SNMP package.
  */
 /*
+ * 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.
+ */
+/*
  * @file table.h
  *
  * @addtogroup table
@@ -115,15 +121,14 @@
     netsnmp_mib_handler
         *netsnmp_get_table_handler(netsnmp_table_registration_info
                                    *tabreq);
-    int             netsnmp_register_table(netsnmp_handler_registration
-                                           *reginfo,
-                                           netsnmp_table_registration_info
-                                           *tabreq);
-    int             netsnmp_table_build_oid(netsnmp_handler_registration
-                                            *reginfo,
-                                            netsnmp_request_info *reqinfo,
-                                            netsnmp_table_request_info
-                                            *table_info);
+    void  netsnmp_handler_owns_table_info(netsnmp_mib_handler *handler);
+    void  netsnmp_registration_owns_table_info(netsnmp_handler_registration *reg);
+    int   netsnmp_register_table(  netsnmp_handler_registration    *reginfo,
+                                   netsnmp_table_registration_info *tabreq);
+    int   netsnmp_unregister_table(netsnmp_handler_registration    *reginfo);
+    int   netsnmp_table_build_oid( netsnmp_handler_registration    *reginfo,
+                                   netsnmp_request_info            *reqinfo,
+                                   netsnmp_table_request_info   *table_info);
     int            
         netsnmp_table_build_oid_from_index(netsnmp_handler_registration
                                            *reginfo,
@@ -147,6 +152,10 @@
     netsnmp_table_registration_info
         *netsnmp_find_table_registration_info(netsnmp_handler_registration
                                               *reginfo);
+    netsnmp_table_registration_info *
+        netsnmp_table_registration_info_clone(netsnmp_table_registration_info *tri);
+    void netsnmp_table_registration_info_free(netsnmp_table_registration_info *);
+
     netsnmp_index * netsnmp_table_index_find_next_row(netsnmp_container *c,
                                                       netsnmp_table_request_info *tblreq);
 
@@ -158,13 +167,9 @@
 
 #define netsnmp_table_helper_add_index(tinfo, type) snmp_varlist_add_variable(&tinfo->indexes, NULL, 0, (u_char)type, NULL, 0);
 
-#if HAVE_STDARG_H
     void           
         netsnmp_table_helper_add_indexes(netsnmp_table_registration_info
                                          *tinfo, ...);
-#else
-    void            netsnmp_table_helper_add_indexes(va_alist);
-#endif
 
     int netsnmp_check_getnext_reply(netsnmp_request_info *request,
                                     oid * prefix, size_t prefix_len,
diff --git a/include/net-snmp/agent/table_container.h b/include/net-snmp/agent/table_container.h
index d51acb1..b342110 100644
--- a/include/net-snmp/agent/table_container.h
+++ b/include/net-snmp/agent/table_container.h
@@ -52,6 +52,8 @@
                                      netsnmp_table_registration_info *tabreq,
                                      netsnmp_container *container,
                                      char key_type);
+    int            
+    netsnmp_container_table_unregister(netsnmp_handler_registration *reginfo);
     
     /** retrieve the container used by the table_container helper */
     netsnmp_container*
@@ -87,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 cc26eb6..66e3b3c 100644
--- a/include/net-snmp/agent/table_dataset.h
+++ b/include/net-snmp/agent/table_dataset.h
@@ -113,12 +113,8 @@
                                           unsigned int, int, int,
                                           void  *default_value,
                                           size_t default_value_len);
-#if HAVE_STDARG_H
     void netsnmp_table_set_multi_add_default_row(netsnmp_table_data_set *,
                                                 ...);
-#else
-    void netsnmp_table_set_multi_add_default_row(va_alist);
-#endif
 
 
 /* ============================
@@ -136,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);
 
 
 /* ============================
@@ -144,6 +150,8 @@
 
     void netsnmp_register_auto_data_table(netsnmp_table_data_set *table_set,
                                           char *registration_name);
+    void netsnmp_unregister_auto_data_table(netsnmp_table_data_set *table_set,
+					    char *registration_name);
     void netsnmp_config_parse_table_set(const char *token, char *line);
     void netsnmp_config_parse_add_row(  const char *token, char *line);
 
@@ -177,11 +185,7 @@
 
     void netsnmp_table_dataset_add_index(netsnmp_table_data_set
                                                     *table, u_char type);
-#if HAVE_STDARG_H
     void netsnmp_table_set_add_indexes(netsnmp_table_data_set *tset, ...);
-#else
-    void netsnmp_table_helper_add_indexes(va_alist);
-#endif
 
 #ifdef __cplusplus
 }
diff --git a/include/net-snmp/agent/table_iterator.h b/include/net-snmp/agent/table_iterator.h
index 8cdb1e7..c71dd4e 100644
--- a/include/net-snmp/agent/table_iterator.h
+++ b/include/net-snmp/agent/table_iterator.h
@@ -51,6 +51,9 @@
        The netsnmp_iterator_info typedef can be used instead of directly calling this struct if you would prefer.
      */
     typedef struct netsnmp_iterator_info_s {
+       /** Number of handlers that own this data structure. */
+       int refcnt;
+
        /** Responsible for: returning the first set of "index" data, a
            loop-context pointer, and optionally a data context
            pointer */
@@ -94,6 +97,7 @@
         void           *myvoid;
         int             flags;
 #define NETSNMP_ITERATOR_FLAG_SORTED	0x01
+#define NETSNMP_HANDLER_OWNS_IINFO	0x02
 
        /** A pointer to the netsnmp_table_registration_info object
            this iterator is registered along with. */
@@ -116,11 +120,11 @@
  * Iterator API: MIB maintenance
  * ============================ */
 
+    void   netsnmp_handler_owns_iterator_info(netsnmp_mib_handler *h);
     netsnmp_mib_handler
           *netsnmp_get_table_iterator_handler(netsnmp_iterator_info *iinfo);
-    int    netsnmp_register_table_iterator(   netsnmp_handler_registration
-                                                                    *reginfo,
-                                              netsnmp_iterator_info *iinfo);
+    int netsnmp_register_table_iterator(netsnmp_handler_registration *reginfo,
+                                        netsnmp_iterator_info *iinfo);
     void  netsnmp_iterator_delete_table(netsnmp_iterator_info *iinfo);
 
     void *netsnmp_extract_iterator_context(netsnmp_request_info *);
@@ -128,6 +132,10 @@
 
     Netsnmp_Node_Handler netsnmp_table_iterator_helper_handler;
 
+#define netsnmp_register_table_iterator2(reginfo, iinfo)        \
+    (((iinfo)->flags |= NETSNMP_HANDLER_OWNS_IINFO),           \
+        netsnmp_register_table_iterator((reginfo), (iinfo)))
+
 
 /* ============================
  * Iterator API: Row operations
diff --git a/include/net-snmp/agent/table_tdata.h b/include/net-snmp/agent/table_tdata.h
index 242b159..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
@@ -83,9 +84,10 @@
 
     netsnmp_mib_handler *netsnmp_get_tdata_handler(netsnmp_tdata *table);
 
-    int netsnmp_tdata_register(netsnmp_handler_registration *reginfo,
-                               netsnmp_tdata                *table,
-                               netsnmp_table_registration_info *table_info);
+    int netsnmp_tdata_register(  netsnmp_handler_registration    *reginfo,
+                                 netsnmp_tdata                   *table,
+                                 netsnmp_table_registration_info *table_info);
+    int netsnmp_tdata_unregister(netsnmp_handler_registration    *reginfo);
 
     netsnmp_tdata      *netsnmp_tdata_extract_table(    netsnmp_request_info *);
     netsnmp_container  *netsnmp_tdata_extract_container(netsnmp_request_info *);
@@ -93,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/agent/watcher.h b/include/net-snmp/agent/watcher.h
index 43a19d7..67104ee 100644
--- a/include/net-snmp/agent/watcher.h
+++ b/include/net-snmp/agent/watcher.h
@@ -8,6 +8,10 @@
 extern "C" {
 #endif
 
+/** @ingroup watcher
+ *  @{
+ */
+
 /*
  * if handler flag has this bit set, the timestamp will be
  * treated as a pointer to the timestamp. If this bit is
@@ -16,8 +20,36 @@
  */
 #define NETSNMP_WATCHER_DIRECT MIB_HANDLER_CUSTOM1
 
-#define WATCHER_FIXED_SIZE    0x01
-#define WATCHER_MAX_SIZE      0x02
+/** The size of the watched object is constant.
+ *  @hideinitializer
+ */
+#define WATCHER_FIXED_SIZE     0x01
+/** 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.
+ *  @hideinitializer
+ */
+#define WATCHER_MAX_SIZE       0x02
+/** If set then the variable data_size_p points to is supposed to hold the
+ *  current size of the watched object and will be updated on writes.
+ *  @hideinitializer
+ *  @since Net-SNMP 5.5
+ */
+#define WATCHER_SIZE_IS_PTR    0x04
+/** 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.
+ *  @hideinitializer
+ *  @since Net-SNMP 5.5
+ */
+#define WATCHER_SIZE_STRLEN    0x08
+/** 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.
+ *  @hideinitializer
+ *  @since Net-SNMP 5.5.1
+ */
+#define WATCHER_SIZE_UNIT_OIDS 0x10
 
 typedef struct netsnmp_watcher_info_s {
     void     *data;
@@ -25,12 +57,19 @@
     size_t    max_size;
     u_char    type;
     int       flags;
+    size_t   *data_size_p;
 } netsnmp_watcher_info;
 
+/** @} */
+
 int netsnmp_register_watched_instance( netsnmp_handler_registration *reginfo,
                                        netsnmp_watcher_info         *winfo);
+int netsnmp_register_watched_instance2(netsnmp_handler_registration *reginfo,
+                                       netsnmp_watcher_info         *winfo);
 int netsnmp_register_watched_scalar(   netsnmp_handler_registration *reginfo,
                                        netsnmp_watcher_info         *winfo);
+int netsnmp_register_watched_scalar2(  netsnmp_handler_registration *reginfo,
+                                       netsnmp_watcher_info         *winfo);
 int netsnmp_register_watched_timestamp(netsnmp_handler_registration *reginfo,
                                        marker_t timestamp);
 int netsnmp_watched_timestamp_register(netsnmp_mib_handler *whandler,
@@ -44,38 +83,56 @@
  */
 
 int netsnmp_register_ulong_scalar(const char *name,
-                              oid * reg_oid, size_t reg_oid_len,
+                              const oid * reg_oid, size_t reg_oid_len,
                               u_long * it,
                               Netsnmp_Node_Handler * subhandler);
 int netsnmp_register_read_only_ulong_scalar(const char *name,
-                              oid * reg_oid, size_t reg_oid_len,
+                              const oid * reg_oid, size_t reg_oid_len,
                               u_long * it,
                               Netsnmp_Node_Handler * subhandler);
 int netsnmp_register_long_scalar(const char *name,
-                              oid * reg_oid, size_t reg_oid_len,
+                              const oid * reg_oid, size_t reg_oid_len,
                               long * it,
                               Netsnmp_Node_Handler * subhandler);
 int netsnmp_register_read_only_long_scalar(const char *name,
-                              oid * reg_oid, size_t reg_oid_len,
+                              const oid * reg_oid, size_t reg_oid_len,
                               long * it,
                               Netsnmp_Node_Handler * subhandler);
 int netsnmp_register_int_scalar(const char *name,
-                              oid * reg_oid, size_t reg_oid_len,
+                              const oid * reg_oid, size_t reg_oid_len,
                               int * it,
                               Netsnmp_Node_Handler * subhandler);
 int netsnmp_register_read_only_int_scalar(const char *name,
-                              oid * reg_oid, size_t reg_oid_len,
+                              const oid * reg_oid, size_t reg_oid_len,
                               int * it,
                               Netsnmp_Node_Handler * subhandler);
 int netsnmp_register_read_only_counter32_scalar(const char *name,
-                              oid * reg_oid, size_t reg_oid_len,
+                              const oid * reg_oid, size_t reg_oid_len,
                               u_long * it,
                               Netsnmp_Node_Handler * subhandler);
 
 #define WATCHER_HANDLER_NAME "watcher"
 
 netsnmp_mib_handler  *netsnmp_get_watcher_handler(void);
-netsnmp_watcher_info *netsnmp_create_watcher_info(void *, size_t, u_char, int);
+
+netsnmp_watcher_info *
+netsnmp_init_watcher_info(netsnmp_watcher_info *, void *, size_t, u_char, int);
+
+netsnmp_watcher_info *
+netsnmp_init_watcher_info6(netsnmp_watcher_info *,
+			   void *, size_t, u_char, int, size_t, size_t*);
+
+netsnmp_watcher_info *
+netsnmp_create_watcher_info(void *, size_t, u_char, int);
+
+netsnmp_watcher_info *
+netsnmp_create_watcher_info6(void *, size_t, u_char, int, size_t, size_t*);
+
+netsnmp_watcher_info *
+netsnmp_clone_watcher_info(netsnmp_watcher_info *winfo);
+void
+netsnmp_owns_watcher_info(netsnmp_mib_handler *handler);
+
 Netsnmp_Node_Handler  netsnmp_watcher_helper_handler;
 
 netsnmp_mib_handler  *netsnmp_get_watched_timestamp_handler(void);
diff --git a/include/net-snmp/config_api.h b/include/net-snmp/config_api.h
index 67cd6a4..048eed9 100644
--- a/include/net-snmp/config_api.h
+++ b/include/net-snmp/config_api.h
@@ -8,14 +8,84 @@
 
 #include <net-snmp/types.h>
 
+#ifdef __cplusplus
+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);
+
+    NETSNMP_IMPORT
+    struct config_line *register_app_prenetsnmp_mib_handler(
+                                                const char *token,
+                                                void (*parser) (const char *, char *),
+                                                void (*releaser) (void),
+                                                const char *usageLine);
+    NETSNMP_IMPORT
+    void            unregister_app_config_handler(                    const char *token);
+
+    /* 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
+}
+#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/arp.h b/include/net-snmp/data_access/arp.h
index 4c6bae3..ba4bb21 100644
--- a/include/net-snmp/data_access/arp.h
+++ b/include/net-snmp/data_access/arp.h
@@ -73,6 +73,7 @@
 
    int       flags; /* for net-snmp use */
 
+   unsigned  generation;
    oid       if_index;
 
    u_char    arp_physaddress[NETSNMP_ACCESS_ARP_PHYSADDR_BUF_SIZE];
@@ -83,33 +84,42 @@
    u_char    arp_type;           /* inetNetToMediaType 1-5 */
    u_char    arp_state;          /* inetNetToMediaState 1-7 */
 
+   u_long    arp_last_updated;   /* timeticks of last update */
 } netsnmp_arp_entry;
 
+#define NETSNMP_ACCESS_ARP_ENTRY_FLAG_DELETE      0x00000001
 
 /**---------------------------------------------------------------------*/
 /*
  * ACCESS function prototypes
  */
-/*
- * ifcontainer init
- */
-netsnmp_container * netsnmp_access_arp_container_init(u_int init_flags);
-#define NETSNMP_ACCESS_ARP_INIT_NOFLAGS               0x0000
+struct netsnmp_arp_access_s;
+typedef struct netsnmp_arp_access_s netsnmp_arp_access;
 
-/*
- * ifcontainer load and free
- */
-netsnmp_container*
-netsnmp_access_arp_container_load(netsnmp_container* container,
-                                    u_int load_flags);
-#define NETSNMP_ACCESS_ARP_LOAD_NOFLAGS               0x0000
+typedef void (NetsnmpAccessArpUpdate)(netsnmp_arp_access *, netsnmp_arp_entry*);
+typedef void (NetsnmpAccessArpGC)    (netsnmp_arp_access *);
 
-void netsnmp_access_arp_container_free(netsnmp_container *container,
-                                         u_int free_flags);
-#define NETSNMP_ACCESS_ARP_FREE_NOFLAGS               0x0000
-#define NETSNMP_ACCESS_ARP_FREE_DONT_CLEAR            0x0001
-#define NETSNMP_ACCESS_ARP_FREE_KEEP_CONTAINER        0x0002
+struct netsnmp_arp_access_s {
+    void *magic;
+    void *arch_magic;
+    int synchronized;
+    unsigned generation;
+    NetsnmpAccessArpUpdate *update_hook;
+    NetsnmpAccessArpGC *gc_hook;
+    char *cache_expired;
+};
 
+netsnmp_arp_access *
+netsnmp_access_arp_create(u_int init_flags,
+                          NetsnmpAccessArpUpdate *update_hook,
+                          NetsnmpAccessArpGC *gc_hook,
+                          int *cache_timeout, int *cache_flags,
+                          char *cache_expired);
+#define NETSNMP_ACCESS_ARP_CREATE_NOFLAGS             0x0000
+
+int netsnmp_access_arp_delete(netsnmp_arp_access *access);
+int netsnmp_access_arp_load(netsnmp_arp_access *access);
+int netsnmp_access_arp_unload(netsnmp_arp_access *access);
 
 /*
  * create/free a arp+entry
@@ -119,6 +129,9 @@
 
 void netsnmp_access_arp_entry_free(netsnmp_arp_entry * entry);
 
+void netsnmp_access_arp_entry_update(netsnmp_arp_entry *entry,
+        netsnmp_arp_entry *new_data);
+
 /*
  * find entry in container
  */
diff --git a/include/net-snmp/data_access/defaultrouter.h b/include/net-snmp/data_access/defaultrouter.h
new file mode 100644
index 0000000..93ac18f
--- /dev/null
+++ b/include/net-snmp/data_access/defaultrouter.h
@@ -0,0 +1,114 @@
+/*
+ * defaultrouter data access header
+ *
+ * $Id:$
+ */
+#ifndef NETSNMP_ACCESS_DEFAULTROUTER_H
+#define NETSNMP_ACCESS_DEFAULTROUTER_H
+
+# ifdef __cplusplus
+extern          "C" {
+#endif
+
+/**---------------------------------------------------------------------*/
+/*
+ * structure definitions
+ */
+#if defined( NETSNMP_ENABLE_IPV6 )
+#   define NETSNMP_ACCESS_DEFAULTROUTER_BUF_SIZE 16   /* XXX: 20, for ip6z? */
+#else
+#   define NETSNMP_ACCESS_DEFAULTROUTER_BUF_SIZE 4
+#endif
+
+
+/*
+ * netsnmp_default_route_entry
+ */
+typedef struct netsnmp_defaultrouter_s {
+
+    netsnmp_index oid_index;   /* MUST BE FIRST!! for container use */
+    oid           ns_dr_index; /* arbitrary index */
+
+    int      flags; /* for net-snmp use */
+
+    /*
+     * mib related data
+     */
+    u_char   dr_addresstype;    /* ipDefaultRouterAddressType */
+    char     dr_address[NETSNMP_ACCESS_DEFAULTROUTER_BUF_SIZE]; /* ipDefaultRouterAddress */
+    size_t   dr_address_len;    /* length of ipDefaultRouterAddress */
+    oid      dr_if_index;       /* ipDefaultRouterIfIndex */
+    uint32_t dr_lifetime;       /* ipDefaultRouterLifetime (0-65535) */
+    char     dr_preference;     /* ipDefaultRouterPreference (-2,-1,0,1) */
+
+} netsnmp_defaultrouter_entry;
+
+
+/**---------------------------------------------------------------------*/
+/*
+ * ACCESS function prototypes
+ */
+/*
+ * container init
+ */
+netsnmp_container *
+netsnmp_access_defaultrouter_container_init(u_int flags);
+#define NETSNMP_ACCESS_DEFAULTROUTER_INIT_NOFLAGS               0x0000
+#define NETSNMP_ACCESS_DEFAULTROUTER_INIT_ADDL_IDX_BY_ADDR      0x0001
+
+/*
+ * container load
+ */
+netsnmp_container*
+netsnmp_access_defaultrouter_container_load(netsnmp_container* container,
+                                            u_int load_flags);
+#define NETSNMP_ACCESS_DEFAULTROUTER_LOAD_NOFLAGS               0x0000
+#define NETSNMP_ACCESS_DEFAULTROUTER_LOAD_IPV4_ONLY             0x0001
+#define NETSNMP_ACCESS_DEFAULTROUTER_LOAD_IPV6_ONLY             0x0002
+#define NETSNMP_ACCESS_DEFAULTROUTER_LOAD_ADDL_IDX_BY_ADDR      0x0004
+
+/*
+ * container free
+ */
+void
+netsnmp_access_defaultrouter_container_free(netsnmp_container *container,
+                                            u_int free_flags);
+#define NETSNMP_ACCESS_DEFAULTROUTER_FREE_NOFLAGS               0x0000
+#define NETSNMP_ACCESS_DEFAULTROUTER_FREE_DONT_CLEAR            0x0001
+#define NETSNMP_ACCESS_DEFAULTROUTER_FREE_KEEP_CONTAINER        0x0002
+
+/*
+ * entry create
+ */
+netsnmp_defaultrouter_entry *
+netsnmp_access_defaultrouter_entry_create(void);
+
+/*
+ * entry load
+ */
+int
+netsnmp_access_defaultrouter_entry_load(size_t *num_entries,
+                                        netsnmp_defaultrouter_entry **entries);
+
+/*
+ * entry update
+ */
+int
+netsnmp_access_defaultrouter_entry_update(netsnmp_defaultrouter_entry *lhs,
+                                          netsnmp_defaultrouter_entry *rhs);
+
+/*
+ * entry free
+ */
+void
+netsnmp_access_defaultrouter_entry_free(netsnmp_defaultrouter_entry *entry);
+
+
+
+/**---------------------------------------------------------------------*/
+
+# ifdef __cplusplus
+}
+#endif
+
+#endif /* NETSNMP_ACCESS_DEFAULTROUTER_H */
diff --git a/include/net-snmp/data_access/interface.h b/include/net-snmp/data_access/interface.h
index 53dfb36..20013ed 100644
--- a/include/net-snmp/data_access/interface.h
+++ b/include/net-snmp/data_access/interface.h
@@ -34,6 +34,20 @@
 #define NETSNMP_INTERFACE_FLAGS_HAS_V6_REACHABLE        0x00040000
 #define NETSNMP_INTERFACE_FLAGS_HAS_V6_IFID             0x00080000
 #define NETSNMP_INTERFACE_FLAGS_HAS_V6_FORWARDING       0x00100000
+/* Some platforms, e.g.Linux, do not provide standalone counter
+ * for incoming unicast packets - they provide counter of all packets
+ * + separate counter for the multicast ones.
+ * That means the counter of all packets must watched and checked
+ * for overflows to reconstruct its 64-bit value (i.e. as usual
+ * for counter of unicast packets), and after its expansion to 64-bits,
+ * nr.of multicast packets must be substracted to get nr. of unicast
+ * packets.
+ * This flag marks stats of such platforms. Nr. of all incoming packets,
+ * provided by the platform, must be stored in
+ * netsnmp_interface_stats.iall and netsnmp_interface_stats.iucast will
+ * be automatically calculated later.
+ */
+#define NETSNMP_INTERFACE_FLAGS_CALCULATE_UCAST         0x00200000
 
 /*************************************************************
  * constants for enums for the MIB node
@@ -93,6 +107,11 @@
      */
    /** input */
     struct counter64 ibytes;
+    /*
+     * nr. of all packets (to calculate iucast, when underlying platform does
+     * not provide it)
+     */
+    struct counter64 iall;
     struct counter64 iucast;
     struct counter64 imcast;
     struct counter64 ibcast;
@@ -179,7 +198,7 @@
 typedef struct _conf_if_list {
     const char     *name;
     int             type;
-    uint64_t        speed;
+    uint64_t speed;
     struct _conf_if_list *next;
 } netsnmp_conf_if_list;
 
diff --git a/include/net-snmp/data_access/ip_scalars.h b/include/net-snmp/data_access/ip_scalars.h
index 25191fe..03601a0 100644
--- a/include/net-snmp/data_access/ip_scalars.h
+++ b/include/net-snmp/data_access/ip_scalars.h
@@ -5,10 +5,17 @@
 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_ipDefaultTTL_get(u_long *value);
+int netsnmp_arch_ip_scalars_ipDefaultTTL_set(u_long value);
+
+int netsnmp_arch_ip_scalars_ipv6IpForwarding_get(u_long *value);
 int netsnmp_arch_ip_scalars_ipv6IpForwarding_set(u_long value);
 
+int netsnmp_arch_ip_scalars_ipv6IpDefaultHopLimit_get(u_long *value);
+int netsnmp_arch_ip_scalars_ipv6IpDefaultHopLimit_set(u_long value);
 
 #ifdef __cplusplus
 }
diff --git a/include/net-snmp/data_access/ipaddress.h b/include/net-snmp/data_access/ipaddress.h
index 6b51519..0bff108 100644
--- a/include/net-snmp/data_access/ipaddress.h
+++ b/include/net-snmp/data_access/ipaddress.h
@@ -47,7 +47,10 @@
    u_char    ia_status;     /* IpAddressStatus (1-7) */
    u_char    ia_origin;     /* IpAddressOrigin (1-6) */
    u_char    ia_storagetype; /* IpAddressStorageType (1-5) */
-
+   u_char    ia_onlink_flag; /* IpOnlinkFlag */
+   u_char    ia_autonomous_flag; /*IpAutonomousFlag */
+   u_long    ia_prefered_lifetime;/*IpPreferedLifeTime*/
+   u_long    ia_valid_lifetime;/*IpValidLifeTime*/
    netsnmp_data_list *arch_data;      /* arch specific data */
 
 } netsnmp_ipaddress_entry;
@@ -141,8 +144,22 @@
                                   int addr_len, int pfx_len);
 
 int netsnmp_ipaddress_ipv4_prefix_len(in_addr_t mask);
+in_addr_t netsnmp_ipaddress_ipv4_mask(int len);
+int netsnmp_ipaddress_ipv6_prefix_len(struct in6_addr mask);
 
+int netsnmp_ipaddress_flags_copy(u_long *ipAddressPrefixAdvPreferredLifetime,
+                                 u_long *ipAddressPrefixAdvValidLifetime,
+                                 u_long *ipAddressPrefixOnLinkFlag,
+                                 u_long *ipAddressPrefixAutonomousFlag,
+                                 u_long *ia_prefered_lifetime,
+                                 u_long *ia_valid_lifetime,
+                                 u_char *ia_onlink_flag,
+                                 u_char *ia_autonomous_flag);
 
+int netsnmp_ipaddress_prefix_origin_copy(u_long *ipAddressPrefixOrigin,
+                                         u_char ia_origin,
+                                         int flags,
+                                         u_long ipAddressAddrType);
 
 /**---------------------------------------------------------------------*/
 
diff --git a/include/net-snmp/data_access/ipstats.h b/include/net-snmp/data_access/ipstats.h
index 2161445..f782459 100644
--- a/include/net-snmp/data_access/ipstats.h
+++ b/include/net-snmp/data_access/ipstats.h
@@ -10,6 +10,40 @@
 extern          "C" {
 #endif
 
+#define IPSYSTEMSTATSTABLE_HCINRECEIVES       1
+#define IPSYSTEMSTATSTABLE_HCINOCTETS         2
+#define IPSYSTEMSTATSTABLE_INHDRERRORS        3
+#define IPSYSTEMSTATSTABLE_HCINNOROUTES       4 
+#define IPSYSTEMSTATSTABLE_INADDRERRORS       5
+#define IPSYSTEMSTATSTABLE_INUNKNOWNPROTOS    6
+#define IPSYSTEMSTATSTABLE_INTRUNCATEDPKTS    7
+#define IPSYSTEMSTATSTABLE_HCINFORWDATAGRAMS  8 
+#define IPSYSTEMSTATSTABLE_REASMREQDS         9
+#define IPSYSTEMSTATSTABLE_REASMOKS           10
+#define IPSYSTEMSTATSTABLE_REASMFAILS         11
+#define IPSYSTEMSTATSTABLE_INDISCARDS         12
+#define IPSYSTEMSTATSTABLE_HCINDELIVERS       13
+#define IPSYSTEMSTATSTABLE_HCOUTREQUESTS      14
+#define IPSYSTEMSTATSTABLE_HCOUTNOROUTES      15
+#define IPSYSTEMSTATSTABLE_HCOUTFORWDATAGRAMS 16
+#define IPSYSTEMSTATSTABLE_HCOUTDISCARDS      17
+#define IPSYSTEMSTATSTABLE_HCOUTFRAGREQDS     18
+#define IPSYSTEMSTATSTABLE_HCOUTFRAGOKS       19
+#define IPSYSTEMSTATSTABLE_HCOUTFRAGFAILS     20
+#define IPSYSTEMSTATSTABLE_HCOUTFRAGCREATES   21
+#define IPSYSTEMSTATSTABLE_HCOUTTRANSMITS     22
+#define IPSYSTEMSTATSTABLE_HCOUTOCTETS        23
+#define IPSYSTEMSTATSTABLE_HCINMCASTPKTS      24
+#define IPSYSTEMSTATSTABLE_HCINMCASTOCTETS    25
+#define IPSYSTEMSTATSTABLE_HCOUTMCASTPKTS     26
+#define IPSYSTEMSTATSTABLE_HCOUTMCASTOCTETS   27
+#define IPSYSTEMSTATSTABLE_HCINBCASTPKTS      28
+#define IPSYSTEMSTATSTABLE_HCOUTBCASTPKTS     29
+#define IPSYSTEMSTATSTABLE_DISCONTINUITYTIME  30
+#define IPSYSTEMSTATSTABLE_REFRESHRATE        31
+    
+#define IPSYSTEMSTATSTABLE_LAST IPSYSTEMSTATSTABLE_REFRESHRATE
+    
 /**---------------------------------------------------------------------*/
 /*
  * structure definitions
@@ -20,28 +54,42 @@
  */
 typedef struct netsnmp_ipstats_s {
 
+   /* Columns of ipStatsTable. Some of them are HC for computation of the 
+    * other columns, when underlying OS does not provide them.
+    * Always fill at least 32 bits, the table is periodically polled -> 32 bit
+    * overflow shall be detected and 64 bit value should be computed automatically. */
    U64             HCInReceives;
    U64             HCInOctets;
    u_long          InHdrErrors;
-   u_long          InNoRoutes;
+   U64             HCInNoRoutes; 
    u_long          InAddrErrors;
    u_long          InUnknownProtos;
    u_long          InTruncatedPkts;
-   U64             HCInForwDatagrams;
+   
+   /* optional, can be computed from HCInNoRoutes and HCOutForwDatagrams */
+   U64             HCInForwDatagrams; 
+   
    u_long          ReasmReqds;
    u_long          ReasmOKs;
    u_long          ReasmFails;
    u_long          InDiscards;
    U64             HCInDelivers;
    U64             HCOutRequests;
-   u_long          OutNoRoutes;
+   U64             HCOutNoRoutes;
    U64             HCOutForwDatagrams;
-   u_long          OutDiscards;
-   u_long          OutFragReqds;
-   u_long          OutFragOKs;
-   u_long          OutFragFails;
-   u_long          OutFragCreates;
+   U64             HCOutDiscards;
+   
+   /* optional, can be computed from HCOutFragOKs + HCOutFragFails*/
+   U64             HCOutFragReqds;
+   U64             HCOutFragOKs;
+   U64             HCOutFragFails;
+   U64             HCOutFragCreates;
+   
+   /* optional, can be computed from 
+    * HCOutRequests +HCOutForwDatagrams + HCOutFragCreates
+    * - HCOutFragReqds - HCOutNoRoutes  - HCOutDiscards */
    U64             HCOutTransmits;
+   
    U64             HCOutOctets;
    U64             HCInMcastPkts;
    U64             HCInMcastOctets;
@@ -50,6 +98,8 @@
    U64             HCInBcastPkts;
    U64             HCOutBcastPkts;
 
+   /* Array of available columns.*/
+   int             columnAvail[IPSYSTEMSTATSTABLE_LAST+1];
 } netsnmp_ipstats;
 
 
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/scopezone.h b/include/net-snmp/data_access/scopezone.h
new file mode 100644
index 0000000..de5c8bf
--- /dev/null
+++ b/include/net-snmp/data_access/scopezone.h
@@ -0,0 +1,68 @@
+/*
+ * scopezone data access header
+ *
+ * $Id: scopezone.h 14170 2007-04-29 02:22:12Z varun_c $
+ */
+#ifndef NETSNMP_ACCESS_SCOPEZONE_H
+#define NETSNMP_ACCESS_SCOPEZONE_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+
+/**---------------------------------------------------------------------*/
+/*
+ * structure definitions
+ *
+ *
+ * NOTE: if you add fields, update code dealing with
+ *       them in ipv6scopezone_common.c
+ */
+typedef struct netsnmp_v6scopezone_entry_s {
+    netsnmp_index oid_index;
+    oid           ns_scopezone_index;
+    u_int   ns_flags; /* net-snmp flags */
+    oid     index;
+    int     scopezone_linklocal;    
+
+} netsnmp_v6scopezone_entry;
+
+/**---------------------------------------------------------------------*/
+/*
+ * ACCESS function prototypes
+ */
+
+/*
+ * scopezone container init
+ */
+netsnmp_container * netsnmp_access_scopezone_container_init(u_int init_flags);
+
+/*
+ * scopezone container load and free
+ */
+netsnmp_container*
+netsnmp_access_scopezone_container_load(netsnmp_container* container,
+                                        u_int load_flags);
+
+void netsnmp_access_scopezone_container_free(netsnmp_container *container,
+                                             u_int free_flags);
+#define NETSNMP_ACCESS_SCOPEZONE_FREE_NOFLAGS               0x0000
+#define NETSNMP_ACCESS_SCOPEZONE_FREE_DONT_CLEAR            0x0001
+#define NETSNMP_ACCESS_SCOPEZONE_FREE_KEEP_CONTAINER        0x0002
+
+
+/*
+ * create/free an scopezone entry
+ */
+netsnmp_v6scopezone_entry *
+netsnmp_access_scopezone_entry_create(void);
+
+void netsnmp_access_scopezone_entry_free(netsnmp_v6scopezone_entry * entry);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NETSNMP_ACCESS_SCOPEZONE_H */
diff --git a/include/net-snmp/data_access/swinst.h b/include/net-snmp/data_access/swinst.h
new file mode 100644
index 0000000..0e28df1
--- /dev/null
+++ b/include/net-snmp/data_access/swinst.h
@@ -0,0 +1,77 @@
+/* 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.
+ */
+#ifndef NETSNMP_SWINST_H
+#define NETSNMP_SWINST_H
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+    /*
+     * Data structure for a swinst entry 
+     */
+    typedef struct hrSWInstalledTable_entry {
+        netsnmp_index   oid_index;
+        
+        /*
+         * Index values; MIB type is int32, but we use oid so this
+         * structure can be used directly with a table_container.
+         */
+        oid             swIndex;
+        
+        /*
+         * Column values 
+         */
+        char            swName[64];
+        char            swDate[11];
+#ifdef NETSNMP_HAVE_SWID
+        oid            *swID;
+        u_char          swID_len;
+#endif
+        u_char          swType;
+        u_char          swName_len;
+        u_char          swDate_len;
+    } netsnmp_swinst_entry;
+    
+#define HRSWINSTALLEDTYPE_UNKNOWN  1
+#define HRSWINSTALLEDTYPE_OPERATINGSYSTEM  2
+#define HRSWINSTALLEDTYPE_DEVICEDRIVER  3
+#define HRSWINSTALLEDTYPE_APPLICATION  4
+
+
+#define NETSNMP_SWINST_NOFLAGS            0x00000000
+
+#define NETSNMP_SWINST_ALL_OR_NONE        0x00000001
+#define NETSNMP_SWINST_DONT_FREE_ITEMS    0x00000002
+
+    netsnmp_container *
+    netsnmp_swinst_container_load(netsnmp_container *container, int flags );
+
+    void netsnmp_swinst_container_free(netsnmp_container *container,
+                                       u_int flags);
+    void netsnmp_swinst_container_free_items(netsnmp_container *container);
+
+    void netsnmp_swinst_entry_remove(netsnmp_container * container,
+                                     netsnmp_swinst_entry *entry);
+
+    netsnmp_swinst_entry * netsnmp_swinst_entry_create(int32_t index);
+    void netsnmp_swinst_entry_free(netsnmp_swinst_entry *entry);
+
+    int32_t netsnmp_swinst_add_name(const char *name);
+    int32_t netsnmp_swinst_get_id(const char *name);
+    const char * netsnmp_swinst_get_name(int32_t id);
+
+#ifdef  __cplusplus
+}
+#endif
+
+
+#endif /* NETSNMP_SWINST_H */
diff --git a/include/net-snmp/data_access/swrun.h b/include/net-snmp/data_access/swrun.h
new file mode 100644
index 0000000..3e15c41
--- /dev/null
+++ b/include/net-snmp/data_access/swrun.h
@@ -0,0 +1,104 @@
+/* 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.
+ */
+#ifndef NETSNMP_SWRUN_H
+#define NETSNMP_SWRUN_H
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+
+    /*-*****************************************************************
+     *
+     * Data structure for a row entry 
+     */
+    typedef struct hrSWRunTable_entry {
+        netsnmp_index   oid_index;
+        
+        /*
+         * Index values 
+         */
+        oid             hrSWRunIndex;
+        
+        /*
+         * Column values 
+         */
+        char            hrSWRunName[ 64+1];  /* size per MIB + 1 */
+        char            hrSWRunPath[128+1];  /* size per MIB + 1 */
+        char            hrSWRunParameters[128+1]; /* size per MIB + 1 */
+#ifdef NETSNMP_SWRUN_HAVE_ID  /* if not defined, will always use nullOid */
+        oid             hrSWRunID[SNMP_MAXOID];
+        u_char          hrSWRunID_len;
+#endif
+        u_char          hrSWRunName_len;
+        u_char          hrSWRunPath_len;
+        u_char          hrSWRunParameters_len;
+
+        u_char          hrSWRunType;
+        u_char          hrSWRunStatus;
+        u_char          old_hrSWRunStatus;
+
+        /*
+         * Perf values
+         */
+        int32_t         hrSWRunPerfCPU;
+        int32_t         hrSWRunPerfMem;
+        
+    } netsnmp_swrun_entry;
+
+    /*
+     * enums for column hrSWRunType
+     */
+#define HRSWRUNTYPE_UNKNOWN             1
+#define HRSWRUNTYPE_OPERATINGSYSTEM     2
+#define HRSWRUNTYPE_DEVICEDRIVER        3
+#define HRSWRUNTYPE_APPLICATION         4
+
+    /*
+     * enums for column hrSWRunStatus
+     */
+#define HRSWRUNSTATUS_RUNNING           1
+#define HRSWRUNSTATUS_RUNNABLE          2
+#define HRSWRUNSTATUS_NOTRUNNABLE       3
+#define HRSWRUNSTATUS_INVALID           4
+
+    /*-*****************************************************************
+     *
+     * Prototypes
+     */
+    netsnmp_container *
+    netsnmp_swrun_container_load(netsnmp_container *container, u_int flags );
+
+    void netsnmp_swrun_container_free(netsnmp_container *container, u_int flags);
+    void netsnmp_swrun_container_free_items(netsnmp_container * container);
+
+    netsnmp_swrun_entry *
+    netsnmp_swrun_entry_create(int32_t swIndex);
+
+    void netsnmp_swrun_entry_free(netsnmp_swrun_entry *entry);
+
+    int  swrun_count_processes( void );
+    int  swrun_max_processes(   void );
+    int  swrun_count_processes_by_name( char *name );
+
+#define NETSNMP_SWRUN_NOFLAGS            0x00000000
+#define NETSNMP_SWRUN_ALL_OR_NONE        0x00000001
+#define NETSNMP_SWRUN_DONT_FREE_ITEMS    0x00000002
+/*#define NETSNMP_SWRUN_xx                0x00000004 */
+
+#ifdef  __cplusplus
+}
+#endif
+
+
+#endif /* NETSNMP_SWRUN_H */
+
+
diff --git a/include/net-snmp/data_access/systemstats.h b/include/net-snmp/data_access/systemstats.h
index 4382397..c72dfbb 100644
--- a/include/net-snmp/data_access/systemstats.h
+++ b/include/net-snmp/data_access/systemstats.h
@@ -22,7 +22,11 @@
 typedef struct netsnmp_systemstats_s {
 
    netsnmp_index oid_index;   /* MUST BE FIRST!! for container use */
-   oid           ns_ip_version;
+   /* 
+    * Index of the table
+    * First entry = ip version
+    * Second entry = interface index (0 for ipSystemStatsTable */
+   oid           index[2];           
 
    int       flags; /* for net-snmp use */
 
@@ -32,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;
 
@@ -45,17 +54,24 @@
 /*
  * 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
 
-/*
- * load and free
+/**
+ * Load container. If the NETSNMP_ACCESS_SYSTEMSTATS_LOAD_IFTABLE is set
+ * the ipIfSystemStats table is loaded, else ipSystemStatsTable is loaded.
  */
 netsnmp_container*
 netsnmp_access_systemstats_container_load(netsnmp_container* container,
                                     u_int load_flags);
 #define NETSNMP_ACCESS_SYSTEMSTATS_LOAD_NOFLAGS               0x0000
+#define NETSNMP_ACCESS_SYSTEMSTATS_LOAD_IFTABLE               0x0001 
 
 void netsnmp_access_systemstats_container_free(netsnmp_container *container,
                                          u_int free_flags);
@@ -68,7 +84,8 @@
  * create/free an entry
  */
 netsnmp_systemstats_entry *
-netsnmp_access_systemstats_entry_create(int version);
+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/data_access/udp_endpoint.h b/include/net-snmp/data_access/udp_endpoint.h
index 64704d2..36231ee 100644
--- a/include/net-snmp/data_access/udp_endpoint.h
+++ b/include/net-snmp/data_access/udp_endpoint.h
@@ -41,6 +41,7 @@
         u_short   rmt_port;
 
         u_int     instance;
+        u_int     pid;
    
     } netsnmp_udp_endpoint_entry;
 
diff --git a/include/net-snmp/library/asn1.h b/include/net-snmp/library/asn1.h
index f132f3b..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,16 +39,6 @@
 ******************************************************************/
 
 
-#ifndef MAX_SUBID               /* temporary - duplicate definition protection */
-#ifndef EIGHTBIT_SUBIDS
-    typedef u_long  oid;
-#define MAX_SUBID   0xFFFFFFFF
-#else
-    typedef u_char  oid;
-#define MAX_SUBID   0xFF
-#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 */
@@ -186,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 acd5d40..56cdbae 100644
--- a/include/net-snmp/library/callback.h
+++ b/include/net-snmp/library/callback.h
@@ -27,6 +27,8 @@
 #define SNMP_CALLBACK_POST_PREMIB_READ_CONFIG	3
 #define SNMP_CALLBACK_LOGGING			4
 #define SNMP_CALLBACK_SESSION_INIT		5
+#define SNMP_CALLBACK_PRE_READ_CONFIG	        7
+#define SNMP_CALLBACK_PRE_PREMIB_READ_CONFIG	8
 
 
     /*
@@ -49,21 +51,29 @@
     /*
      * function prototypes 
      */
+    NETSNMP_IMPORT
     void            init_callbacks(void);
 
+    NETSNMP_IMPORT
     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/cmu_compat.h b/include/net-snmp/library/cmu_compat.h
deleted file mode 100644
index 5475c6f..0000000
--- a/include/net-snmp/library/cmu_compat.h
+++ /dev/null
@@ -1,292 +0,0 @@
-/* Portions of this file are subject to the following copyright(s).  See
- * the Net-SNMP's COPYING file for more details and other copyrights
- * that may apply:
- */
-/*
- * Portions of this file are copyrighted by:
- * Copyright © 2003 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms specified in the COPYING file
- * distributed with the Net-SNMP package.
- */
-
-/*
- *  CMU compatability definitions and structures.
- *
- *    (since the UCD package split from the CMU one
- *     about 8 years ago, that's probably enough time
- *     for people to convert any outstanding code!)
- */
-
-#ifndef NET_SNMP_CMU_COMPAT_H
-#define NET_SNMP_CMU_COMPAT_H
-
-#ifdef __cplusplus
-extern          "C" {
-#endif
-
-    /*
-     * ============================
-     * *
-     * * Enumerations and definitions
-     * *
-     * * ============================ 
-     */
-#include <net-snmp/definitions.h>
-    /*
-     * From parse.h 
-     */
-#define ACCESS_READONLY		MIB_ACCESS_READONLY
-#define ACCESS_READWRITE	MIB_ACCESS_READWRITE
-#define ACCESS_WRITEONLY	MIB_ACCESS_WRITEONLY
-#define ACCESS_NOACCESS		MIB_ACCESS_NOACCESS
-#define ACCESS_NOTIFY		MIB_ACCESS_NOTIFY
-#define ACCESS_CREATE		MIB_ACCESS_CREATE
-#define STATUS_MANDATORY	MIB_STATUS_MANDATORY
-#define STATUS_OPTIONAL		MIB_STATUS_OPTIONAL
-#define STATUS_OBSOLETE		MIB_STATUS_OBSOLETE
-#define STATUS_DEPRECATED	MIB_STATUS_DEPRECATED
-#define STATUS_CURRENT		MIB_STATUS_CURRENT
-    /*
-     * From smnp_impl.h 
-     */
-#define INTEGER	    ASN_INTEGER
-#define STRING	    ASN_OCTET_STR
-#define OBJID	    ASN_OBJECT_ID
-#define NULLOBJ	    ASN_NULL
-#define BITSTRING   ASN_BIT_STR /* HISTORIC - don't use */
-#define IPADDRESS   ASN_IPADDRESS
-#define COUNTER	    ASN_COUNTER
-#define GAUGE	    ASN_GAUGE
-#define UNSIGNED    ASN_UNSIGNED
-#define TIMETICKS   ASN_TIMETICKS
-#define ASNT_OPAQUE ASN_OPAQUE
-#define NSAP	    ASN_NSAP
-#define COUNTER64   ASN_COUNTER64
-#define UINTEGER    ASN_UINTEGER
-    /*
-     * From snmp.h 
-     */
-#define GET_REQ_MSG	    SNMP_MSG_GET
-#define GETNEXT_REQ_MSG	    SNMP_MSG_GETNEXT
-#define GET_RSP_MSG	    SNMP_MSG_RESPONSE
-#define SET_REQ_MSG	    SNMP_MSG_SET
-#define TRP_REQ_MSG	    SNMP_MSG_TRAP
-#define BULK_REQ_MSG	    SNMP_MSG_GETBULK
-#define INFORM_REQ_MSG	    SNMP_MSG_INFORM
-#define TRP2_REQ_MSG	    SNMP_MSG_TRAP2
-#define REPORT_RSP_MSG	    SNMP_MSG_REPORT
-    /*
-     * since CMU V1.5 
-     */
-#define SNMP_PDU_GET	    SNMP_MSG_GET
-#define SNMP_PDU_GETNEXT    SNMP_MSG_GETNEXT
-#define SNMP_PDU_RESPONSE   SNMP_MSG_RESPONSE
-#define SNMP_PDU_SET        SNMP_MSG_SET
-#define SNMP_PDU_GETBULK    SNMP_MSG_GETBULK
-#define SNMP_PDU_INFORM     SNMP_MSG_INFORM
-#define SNMP_PDU_V2TRAP     SNMP_MSG_TRAP2
-#define SNMP_PDU_REPORT     SNMP_MSG_REPORT
-#define SNMP_TRAP_AUTHENTICATIONFAILURE SNMP_TRAP_AUTHFAIL
-#define SMI_INTEGER     ASN_INTEGER
-#define SMI_STRING      ASN_OCTET_STR
-#define SMI_OBJID       ASN_OBJECT_ID
-#define SMI_NULLOBJ     ASN_NULL
-#define SMI_IPADDRESS   ASN_IPADDRESS
-#define SMI_COUNTER32	ASN_COUNTER
-#define SMI_GAUGE32	ASN_GAUGE
-#define SMI_UNSIGNED32  SMI_GAUGE32
-#define SMI_TIMETICKS   ASN_TIMETICKS
-#define SMI_OPAQUE      ASN_OPAQUE
-#define SMI_COUNTER64   ASN_COUNTER64
-    /*
-     * ============================
-     * *
-     * *     Function declarations
-     * *     and global variables
-     * *
-     * * ============================ 
-     */
-extern int      snmp_dump_packet;       /* from snmp_api.h */
-extern int      quick_print;    /* from snmp_api.h */
-
-#include <net-snmp/types.h>     /* for snmp_pdu & snmp_session */
-
-int             mib_TxtToOid(char *, oid **, size_t *); /* from snmp.h */
-int             mib_OidToTxt(oid *, size_t, char *, size_t);    /* from snmp.h */
-u_char         *cmu_snmp_parse(netsnmp_session * session, netsnmp_pdu *pdu, u_char * data, size_t length);      /* from snmp.h */
-
-
-
-
-        /*
-         * ============================
-         * *
-         * * MIB-II data structures
-         * *    (from mib.h) 
-         * *
-         * * ============================ 
-         */
-
-
-struct mib_system {
-    char            sysDescr[32];       /* textual description */
-    u_char          sysObjectID[16];    /* OBJECT IDENTIFIER of system */
-    u_char          ObjIDLen;   /* length of sysObjectID */
-    u_int           sysUpTime;  /* Uptime in 100/s of a second */
-};
-
-struct mib_interface {
-    int             ifNumber;   /* number of interfaces */
-};
-
-struct mib_ifEntry {
-    int             ifIndex;    /* index of this interface  */
-    char            ifDescr[32];        /* english description of interface */
-    int             ifType;     /* network type of device   */
-    int             ifMtu;      /* size of largest packet in bytes  */
-    u_int           ifSpeed;    /* bandwidth in bits/sec    */
-    u_char          ifPhysAddress[11];  /* interface's address */
-    u_char          PhysAddrLen;        /* length of physAddr */
-    int             ifAdminStatus;      /* desired state of interface */
-    int             ifOperStatus;       /* current operational status */
-    u_int           ifLastChange;       /* value of sysUpTime when current state entered */
-    u_int           ifInOctets; /* number of octets received on interface */
-    u_int           ifInUcastPkts;      /* number of unicast packets delivered */
-    u_int           ifInNUcastPkts;     /* number of broadcasts or multicasts */
-    u_int           ifInDiscards;       /* number of packets discarded with no error */
-    u_int           ifInErrors; /* number of packets containing errors */
-    u_int           ifInUnknownProtos;  /* number of packets with unknown protocol */
-    u_int           ifOutOctets;        /* number of octets transmitted */
-    u_int           ifOutUcastPkts;     /* number of unicast packets sent */
-    u_int           ifOutNUcastPkts;    /* number of broadcast or multicast pkts */
-    u_int           ifOutDiscards;      /* number of packets discarded with no error */
-    u_int           ifOutErrors;        /* number of pkts discarded with an error */
-    u_int           ifOutQLen;  /* number of packets in output queue */
-};
-
-struct mib_atEntry {
-    int             atIfIndex;  /* interface on which this entry maps */
-    u_char          atPhysAddress[11];  /* physical address of destination */
-    u_char          PhysAddressLen;     /* length of atPhysAddress */
-    u_int           atNetAddress;       /* IP address of physical address */
-};
-
-struct mib_ip {
-    int             ipForwarding;       /* 1 if gateway, 2 if host */
-    int             ipDefaultTTL;       /* default TTL for pkts originating here */
-    u_int           ipInReceives;       /* no. of IP packets received from interfaces */
-    u_int           ipInHdrErrors;      /* number of pkts discarded due to header errors */
-    u_int           ipInAddrErrors;     /* no. of pkts discarded due to bad address */
-    u_int           ipForwDatagrams;    /* number pf pkts forwarded through this entity */
-    u_int           ipInUnknownProtos;  /* no. of local-addressed pkts w/unknown proto */
-    u_int           ipInDiscards;       /* number of error-free packets discarded */
-    u_int           ipInDelivers;       /* number of datagrams delivered to upper level */
-    u_int           ipOutRequests;      /* number of IP datagrams originating locally */
-    u_int           ipOutDiscards;      /* number of error-free output IP pkts discarded */
-    u_int           ipOutNoRoutes;      /* number of IP pkts discarded due to no route */
-    int             ipReasmTimeout;     /* seconds fragment is held awaiting reassembly */
-    u_int           ipReasmReqds;       /* no. of fragments needing reassembly (here) */
-    u_int           ipReasmOKs; /* number of fragments reassembled */
-    u_int           ipReasmFails;       /* number of failures in IP reassembly */
-    u_int           ipFragOKs;  /* number of datagrams fragmented here */
-    u_int           ipFragFails;        /* no. pkts unable to be fragmented here */
-    u_int           ipFragCreates;      /* number of IP fragments created here */
-};
-
-struct mib_ipAddrEntry {
-    u_int           ipAdEntAddr;        /* IP address of this entry */
-    int             ipAdEntIfIndex;     /* IF for this entry */
-    u_int           ipAdEntNetMask;     /* subnet mask of this entry */
-    int             ipAdEntBcastAddr;   /* read the MIB for this one */
-    int 	    ipAdEntReasmMaxSize;
-		/* max size for dg reassembly   {ipAddrEntry 5} */
-};
-
-struct mib_ipRouteEntry {
-    u_int           ipRouteDest;        /* destination IP addr for this route */
-    int             ipRouteIfIndex;     /* index of local IF for this route */
-    int             ipRouteMetric1;     /* Primary routing metric */
-    int             ipRouteMetric2;     /* Alternate routing metric */
-    int             ipRouteMetric3;     /* Alternate routing metric */
-    int             ipRouteMetric4;     /* Alternate routing metric */
-    u_int           ipRouteNextHop;     /* IP addr of next hop */
-    int             ipRouteType;        /* Type of this route */
-    int             ipRouteProto;       /* How this route was learned */
-    int             ipRouteAge; /* No. of seconds since updating this route */
-};
-
-struct mib_icmp {
-    u_int           icmpInMsgs; /* Total of ICMP msgs received */
-    u_int           icmpInErrors;       /* Total of ICMP msgs received with errors */
-    u_int           icmpInDestUnreachs;
-    u_int           icmpInTimeExcds;
-    u_int           icmpInParmProbs;
-    u_int           icmpInSrcQuenchs;
-    u_int           icmpInRedirects;
-    u_int           icmpInEchos;
-    u_int           icmpInEchoReps;
-    u_int           icmpInTimestamps;
-    u_int           icmpInTimestampReps;
-    u_int           icmpInAddrMasks;
-    u_int           icmpInAddrMaskReps;
-    u_int           icmpOutMsgs;
-    u_int           icmpOutErrors;
-    u_int           icmpOutDestUnreachs;
-    u_int           icmpOutTimeExcds;
-    u_int           icmpOutParmProbs;
-    u_int           icmpOutSrcQuenchs;
-    u_int           icmpOutRedirects;
-    u_int           icmpOutEchos;
-    u_int           icmpOutEchoReps;
-    u_int           icmpOutTimestamps;
-    u_int           icmpOutTimestampReps;
-    u_int           icmpOutAddrMasks;
-    u_int           icmpOutAddrMaskReps;
-};
-
-struct mib_tcp {
-    int             tcpRtoAlgorithm;    /* retransmission timeout algorithm */
-    int             tcpRtoMin;  /* minimum retransmission timeout (mS) */
-    int             tcpRtoMax;  /* maximum retransmission timeout (mS) */
-    int             tcpMaxConn; /* maximum tcp connections possible */
-    u_int           tcpActiveOpens;     /* number of SYN-SENT -> CLOSED transitions */
-    u_int           tcpPassiveOpens;    /* number of SYN-RCVD -> LISTEN transitions */
-    u_int           tcpAttemptFails;    /*(SYN-SENT,SYN-RCVD)->CLOSED or SYN-RCVD->LISTEN */
-    u_int           tcpEstabResets;     /* (ESTABLISHED,CLOSE-WAIT) -> CLOSED */
-    u_int           tcpCurrEstab;       /* number in ESTABLISHED or CLOSE-WAIT state */
-    u_int           tcpInSegs;  /* number of segments received */
-    u_int           tcpOutSegs; /* number of segments sent */
-    u_int           tcpRetransSegs;     /* number of retransmitted segments */
-};
-
-struct mib_tcpConnEntry {
-    int             tcpConnState;       /* State of this connection */
-    u_int           tcpConnLocalAddress;        /* local IP address for this connection */
-    int             tcpConnLocalPort;   /* local port for this connection */
-    u_int           tcpConnRemAddress;  /* remote IP address for this connection */
-    int             tcpConnRemPort;     /* remote port for this connection */
-};
-
-struct mib_udp {
-    u_int           udpInDatagrams;     /* No. of UDP datagrams delivered to users */
-    u_int           udpNoPorts; /* No. of UDP datagrams to port with no listener */
-    u_int           udpInErrors;        /* No. of UDP datagrams unable to be delivered */
-    u_int           udpOutDatagrams;    /* No. of UDP datagrams sent from this entity */
-};
-
-struct mib_egp {
-    u_int           egpInMsgs;  /* No. of EGP msgs received without error */
-    u_int           egpInErrors;        /* No. of EGP msgs received with error */
-    u_int           egpOutMsgs; /* No. of EGP msgs sent */
-    u_int           egpOutErrors;       /* No. of (outgoing) EGP msgs dropped due to error */
-};
-
-struct mib_egpNeighEntry {
-    int             egpNeighState;      /* local EGP state with this entry's neighbor */
-    u_int           egpNeighAddr;       /* IP address of this entry's neighbor */
-};
-
-#ifdef __cplusplus
-}
-#endif
-#endif                          /* NET_SNMP_CMU_COMPAT_H */
diff --git a/include/net-snmp/library/container.h b/include/net-snmp/library/container.h
index c6a407f..963289e 100644
--- a/include/net-snmp/library/container.h
+++ b/include/net-snmp/library/container.h
@@ -1,3 +1,13 @@
+/* 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.
+ */
 #ifndef NETSNMP_CONTAINER_H
 #define NETSNMP_CONTAINER_H
 
@@ -14,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" {
@@ -31,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);
@@ -135,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;
 
@@ -191,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.
         *
@@ -219,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;
@@ -234,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);
 
     /*
@@ -249,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);
 
@@ -265,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 *' */
@@ -276,7 +312,16 @@
     int netsnmp_compare_mem(const char * lhs, size_t lhs_len,
                             const char * rhs, size_t rhs_len);
 
+    /** 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);
 
 /*
@@ -288,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)
 
 
@@ -323,168 +368,67 @@
      * inline functions, you most likely have optimizations turned off.
      * Either turn them back on, or define NETSNMP_NO_INLINE
      */
-#ifndef NETSNMP_USE_INLINE /* default is to inline */
     /*
      * insert k into all containers
      */
+    NETSNMP_IMPORT
     int CONTAINER_INSERT(netsnmp_container *x, const void *k);
 
     /*
      * remove k from all containers
      */
+    NETSNMP_IMPORT
     int CONTAINER_REMOVE(netsnmp_container *x, const void *k);
 
     /*
+     * duplicate container
+     */
+    NETSNMP_IMPORT
+    netsnmp_container *CONTAINER_DUP(netsnmp_container *x, void *ctx,
+                                     u_int flags);
+
+    /*
      * clear all containers. When clearing the *first* container, and
      * *only* the first container, call the function f for each item.
      * After calling this function, all containers should be empty.
      */
+    NETSNMP_IMPORT
     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.
+     */
+    NETSNMP_IMPORT
+    void CONTAINER_FREE_ALL(netsnmp_container *x, void *c);
+
     /*
      * free all containers
      */
+    NETSNMP_IMPORT
     int CONTAINER_FREE(netsnmp_container *x);
-#else
-    /*------------------------------------------------------------------
-     * These functions should EXACTLY match the function version in
-     * container.c. If you change one, change them both.
-     */
-    NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
-    int CONTAINER_INSERT_HELPER(netsnmp_container* x, const void* k)
-    {
-        while(x && x->insert_filter && x->insert_filter(x,k) == 1)
-            x = x->next;
-        if(x) {
-            int rc = x->insert(x,k);
-            if(rc)
-                snmp_log(LOG_DEBUG,"error on subcontainer '%s' insert (%d)\n",
-                         x->container_name ? x->container_name : "", rc);
-            else {
-                rc = CONTAINER_INSERT_HELPER(x->next, k);
-                if(rc)
-                    x->remove(x,k);
-            }
-            return rc;
-        }
-        return 0;
-    }
 
-    /*------------------------------------------------------------------
-     * These functions should EXACTLY match the function version in
-     * container.c. If you change one, change them both.
-     */
-    NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
-    int CONTAINER_INSERT(netsnmp_container* x, const void* k)
-    {
-        /** start at first container */
-        while(x->prev)
-            x = x->prev;
-        return CONTAINER_INSERT_HELPER(x, k);
-    }
-
-    /*------------------------------------------------------------------
-     * These functions should EXACTLY match the function version in
-     * container.c. If you change one, change them both.
-     */
-    NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
-    int CONTAINER_REMOVE(netsnmp_container *x, const void *k)
-    {
-        int rc2, rc = 0;
-        
-        /** start at last container */
-        while(x->next)
-            x = x->next;
-        while(x) {
-            rc2 = x->remove(x,k);
-            /** ignore remove errors if there is a filter in place */
-            if ((rc2) && (NULL == x->insert_filter)) {
-                snmp_log(LOG_ERR,"error on subcontainer remove (%d)\n", rc2);
-                rc = rc2;
-            }
-            x = x->prev;
-            
-        }
-        return rc;
-    }
-    
-    /*------------------------------------------------------------------
-     * These functions should EXACTLY match the function version in
-     * container.c. If you change one, change them both.
-     */
-    NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
-    int CONTAINER_FREE(netsnmp_container *x)
-    {
-	int  rc2, rc = 0;
-        
-        /** start at last container */
-        while(x->next)
-            x = x->next;
-        while(x) {
-            netsnmp_container *tmp;
-            tmp = x->prev;
-            if (NULL != x->container_name)
-                SNMP_FREE(x->container_name);
-            rc2 = x->cfree(x);
-            if (rc2) {
-                snmp_log(LOG_ERR,"error on subcontainer cfree (%d)\n", rc2);
-                rc = rc2;
-            }
-            x = tmp;
-        }
-        return rc;
-    }
-
-    /*------------------------------------------------------------------
-     * These functions should EXACTLY match the function version in
-     * container.c. If you change one, change them both.
-     */
-    /*
-     * clear all containers. When clearing the *first* container, and
-     * *only* the first container, call the function f for each item.
-     * After calling this function, all containers should be empty.
-     */
-    NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
-    void CONTAINER_CLEAR(netsnmp_container *x, netsnmp_container_obj_func *f,
-                        void *c)
-    {
-        /** start at last container */
-        while(x->next)
-            x = x->next;
-        while(x->prev) {
-            x->clear(x, NULL, c);
-            x = x->prev;
-        }
-        x->clear(x, f, c);
-    }
-
-    /*------------------------------------------------------------------
-     * These functions should EXACTLY match the function version in
-     * container.c. If you change one, change them both.
-     */
-    /*
-     * Find a sub-container with the given name
-     */
-    NETSNMP_STATIC_INLINE /* gcc docs recommend static w/inline */
+    NETSNMP_IMPORT
     netsnmp_container *SUBCONTAINER_FIND(netsnmp_container *x,
-                                         const char* name)
-    {
-        if ((NULL == x) || (NULL == name))
-            return NULL;
+                                         const char* name);
 
-        /** start at first container */
-        while(x->prev)
-            x = x->prev;
-        while(x) {
-            if ((NULL != x->container_name) &&
-                (0 == strcmp(name,x->container_name)))
-                break;
-            x = x->next;
-        }
-        return x;
-    }
+    /*
+     * 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);
 
-#endif
     
     /*************************************************************************
      *
@@ -534,12 +478,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_binary_array.h b/include/net-snmp/library/container_binary_array.h
index 3a7e237..336a8e9 100644
--- a/include/net-snmp/library/container_binary_array.h
+++ b/include/net-snmp/library/container_binary_array.h
@@ -39,6 +39,7 @@
 
     int netsnmp_binary_array_options_set(netsnmp_container *c, int set, u_int flags);
 
+
 #ifdef __cplusplus
 }
 #endif
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 aed435a..3c3c519 100644
--- a/include/net-snmp/library/default_store.h
+++ b/include/net-snmp/library/default_store.h
@@ -24,19 +24,21 @@
 #ifndef DEFAULT_STORE_H
 #define DEFAULT_STORE_H
 
+#include <net-snmp/net-snmp-config.h>
+
 #ifdef __cplusplus
 extern          "C" {
 #endif
 
 #define NETSNMP_DS_MAX_IDS 3
-#define NETSNMP_DS_MAX_SUBIDS 40        /* needs to be a multiple of 8 */
+#define NETSNMP_DS_MAX_SUBIDS 48        /* needs to be a multiple of 8 */
 
     /*
      * begin storage definitions 
      */
 /**
  * @def NETSNMP_DS_LIBRARY_ID
- * These definitions correspond with the "storid" argument to the API 
+ * These definitions correspond with the "storid" argument to the API.
  */
 #define NETSNMP_DS_LIBRARY_ID     0
 #define NETSNMP_DS_APPLICATION_ID 1
@@ -88,23 +90,35 @@
 #define NETSNMP_DS_LIB_DISABLE_PERSISTENT_LOAD  35 /* don't load persistent file */
 #define NETSNMP_DS_LIB_DISABLE_PERSISTENT_SAVE  36 /* don't save persistent file */
 #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_DONT_LOAD_HOST_FILES 40 /* don't read host.conf files */
+#define NETSNMP_DS_LIB_DNSSEC_WARN_ONLY     41 /* tread DNSSEC errors as warnings */
+#define NETSNMP_DS_LIB_MAX_BOOL_ID          48 /* match NETSNMP_DS_MAX_SUBIDS */
 
     /*
      * library integers 
      */
-#define NETSNMP_DS_LIB_MIB_WARNINGS  0
-#define NETSNMP_DS_LIB_SECLEVEL      1
-#define NETSNMP_DS_LIB_SNMPVERSION   2
-#define NETSNMP_DS_LIB_DEFAULT_PORT  3
-#define NETSNMP_DS_LIB_OID_OUTPUT_FORMAT  4
-#define NETSNMP_DS_LIB_PRINT_SUFFIX_ONLY  NETSNMP_DS_LIB_OID_OUTPUT_FORMAT
+#define NETSNMP_DS_LIB_MIB_WARNINGS         0
+#define NETSNMP_DS_LIB_SECLEVEL             1
+#define NETSNMP_DS_LIB_SNMPVERSION          2
+#define NETSNMP_DS_LIB_DEFAULT_PORT         3
+#define NETSNMP_DS_LIB_OID_OUTPUT_FORMAT    4
+#define NETSNMP_DS_LIB_PRINT_SUFFIX_ONLY    NETSNMP_DS_LIB_OID_OUTPUT_FORMAT
 #define NETSNMP_DS_LIB_STRING_OUTPUT_FORMAT 5
-#define NETSNMP_DS_LIB_HEX_OUTPUT_LENGTH 6
-#define NETSNMP_DS_LIB_SERVERSENDBUF   7 /* send buffer (server) */
-#define NETSNMP_DS_LIB_SERVERRECVBUF   8 /* receive buffer (server) */
-#define NETSNMP_DS_LIB_CLIENTSENDBUF   9 /* send buffer (client) */
-#define NETSNMP_DS_LIB_CLIENTRECVBUF  10 /* receive buffer (client) */
-
+#define NETSNMP_DS_LIB_HEX_OUTPUT_LENGTH    6
+#define NETSNMP_DS_LIB_SERVERSENDBUF        7 /* send buffer (server) */
+#define NETSNMP_DS_LIB_SERVERRECVBUF        8 /* receive buffer (server) */
+#define NETSNMP_DS_LIB_CLIENTSENDBUF        9 /* send buffer (client) */
+#define NETSNMP_DS_LIB_CLIENTRECVBUF       10 /* receive buffer (client) */
+#define NETSNMP_DS_SSHDOMAIN_SOCK_PERM     11
+#define NETSNMP_DS_SSHDOMAIN_DIR_PERM      12
+#define NETSNMP_DS_SSHDOMAIN_SOCK_USER     12
+#define NETSNMP_DS_SSHDOMAIN_SOCK_GROUP    13
+#define NETSNMP_DS_LIB_TIMEOUT             14
+#define NETSNMP_DS_LIB_RETRIES             15
+#define NETSNMP_DS_LIB_MAX_INT_ID          48 /* match NETSNMP_DS_MAX_SUBIDS */
+    
     /*
      * special meanings for the default SNMP version slot (NETSNMP_DS_LIB_SNMPVERSION) 
      */
@@ -143,28 +157,54 @@
 #define NETSNMP_DS_LIB_APPTYPES          20
 #define NETSNMP_DS_LIB_KSM_KEYTAB        21
 #define NETSNMP_DS_LIB_KSM_SERVICE_NAME  22
+#define NETSNMP_DS_LIB_X509_CLIENT_PUB   23
+#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
+#define NETSNMP_DS_LIB_TLS_LOCAL_CERT    30
+#define NETSNMP_DS_LIB_TLS_PEER_CERT     31
+#define NETSNMP_DS_LIB_SSH_USERNAME      32
+#define NETSNMP_DS_LIB_SSH_PUBKEY        33
+#define NETSNMP_DS_LIB_SSH_PRIVKEY       34
+#define NETSNMP_DS_LIB_MAX_STR_ID        48 /* match NETSNMP_DS_MAX_SUBIDS */
 
     /*
      * end storage definitions 
      */
 
+    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
new file mode 100644
index 0000000..471bb0b
--- /dev/null
+++ b/include/net-snmp/library/dir_utils.h
@@ -0,0 +1,63 @@
+/* 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.
+ */
+#ifndef NETSNMP_DIR_UTILS_H
+#define NETSNMP_DIR_UTILS_H
+
+#ifdef __cplusplus
+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_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);
+
+        
+
+    /*------------------------------------------------------------------
+     *
+     * flags
+     */
+#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
+
+    
+        
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NETSNMP_DIR_UTILS_H */
diff --git a/include/net-snmp/library/fd_event_manager.h b/include/net-snmp/library/fd_event_manager.h
index 4b7242d..ede67b4 100644
--- a/include/net-snmp/library/fd_event_manager.h
+++ b/include/net-snmp/library/fd_event_manager.h
@@ -88,8 +88,15 @@
  *
  * 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,
+                                  netsnmp_large_fd_set *exceptfds);
+
 /*
  * Dispatch External Events
  *
@@ -114,7 +121,13 @@
  *
  * 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,
+                                       netsnmp_large_fd_set *exceptfds);
 #ifdef __cplusplus
 }
 #endif
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/getopt.h b/include/net-snmp/library/getopt.h
index 0f4d691..f70ffe4 100644
--- a/include/net-snmp/library/getopt.h
+++ b/include/net-snmp/library/getopt.h
@@ -1,6 +1,12 @@
 #ifndef _GETOPT_H_
 #define _GETOPT_H_ 1
 
+#ifndef NET_SNMP_CONFIG_H
+#error <net-snmp/net-snmp-config.h> must be included before <net-snmp/library/getopt.h>.
+#endif
+
+#if !defined(HAVE_GETOPT_H)
+
 #ifdef __cplusplus
 extern          "C" {
 #endif
@@ -12,4 +18,7 @@
 #ifdef __cplusplus
 }
 #endif
+
+#endif /* HAVE_GETOPT_H */
+
 #endif
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
new file mode 100644
index 0000000..af3fa02
--- /dev/null
+++ b/include/net-snmp/library/large_fd_set.h
@@ -0,0 +1,173 @@
+/**
+ * @file  large_fd_set.h
+ *
+ * @brief Macro's and functions for manipulation of large file descriptor sets.
+ */
+
+
+#ifndef LARGE_FD_SET_H
+#define LARGE_FD_SET_H
+
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/types.h>
+
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+
+#if defined(HAVE_WINSOCK_H) && !defined(_WINSOCKAPI_) && !defined(_WINSOCK_H)
+#error <winsock.h> or <winsock2.h> must have been included before this file.
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+/**
+ * Add socket fd to the set *fdset if not yet present.
+ * Enlarges the set if necessary.
+ */
+#define NETSNMP_LARGE_FD_SET(fd, fdset) \
+                    netsnmp_large_fd_setfd(fd, fdset)
+
+/**
+ * Remove socket fd from the set *fdset.
+ * Do nothing if fd is not present in *fdset.
+ * Do nothing if fd >= fdset->lfs_setsize.
+ */
+#define NETSNMP_LARGE_FD_CLR(fd, fdset) \
+                    netsnmp_large_fd_clr(fd, fdset)
+
+/**
+ * Test whether set *fdset contains socket fd.
+ * Evaluates to zero (false) if fd >= fdset->lfs_setsize.
+ */
+#define NETSNMP_LARGE_FD_ISSET(fd, fdset) \
+                    netsnmp_large_fd_is_set(fd, fdset)
+
+#if !defined(cygwin) && defined(HAVE_WINSOCK_H)
+
+/**
+ * Number of bytes needed to store a number of file descriptors as a
+ * struct fd_set.
+ */
+#define NETSNMP_FD_SET_BYTES(setsize)                                   \
+    (sizeof(fd_set) + ((setsize) > FD_SETSIZE ?                         \
+                       ((setsize) - FD_SETSIZE) * sizeof(SOCKET) : 0))
+
+/** Remove all sockets from the set *fdset. */
+#define NETSNMP_LARGE_FD_ZERO(fdset) \
+    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
+
+/**
+ * Size of a single element of the array with file descriptor bitmasks.
+ *
+ * According to SUSv2, this array must have the name fds_bits. See also
+ * <a href="http://www.opengroup.org/onlinepubs/007908775/xsh/systime.h.html">The Single UNIX Specification, Version 2, &lt;sys/time.h&gt;</a>.
+ */
+#define NETSNMP_FD_MASK_SIZE sizeof(((fd_set*)0)->fds_bits[0])
+
+/** Number of bits in one element of the fd_set.fds_bits array. */
+#define NETSNMP_BITS_PER_FD_MASK (8 * NETSNMP_FD_MASK_SIZE)
+
+/** Number of elements needed for the fds_bits array. */
+#define NETSNMP_FD_SET_ELEM_COUNT(setsize) \
+    (setsize + NETSNMP_BITS_PER_FD_MASK - 1) / NETSNMP_BITS_PER_FD_MASK
+
+/**
+ * Number of bytes needed to store a number of file descriptors as a
+ * struct fd_set.
+ */
+#define NETSNMP_FD_SET_BYTES(setsize)                                    \
+    (sizeof(fd_set) + ((setsize) > FD_SETSIZE ?                          \
+                       NETSNMP_FD_SET_ELEM_COUNT((setsize) - FD_SETSIZE) \
+                       * NETSNMP_FD_MASK_SIZE : 0))
+
+/** Remove all file descriptors from the set *fdset. */
+#define NETSNMP_LARGE_FD_ZERO(fdset)                            \
+    do {                                                        \
+        memset((fdset)->lfs_setptr, 0,                          \
+               NETSNMP_FD_SET_BYTES((fdset)->lfs_setsize));     \
+    } while (0)
+
+
+void   netsnmp_large_fd_setfd( int fd, netsnmp_large_fd_set *fdset);
+void   netsnmp_large_fd_clr(   int fd, netsnmp_large_fd_set *fdset);
+int    netsnmp_large_fd_is_set(int fd, netsnmp_large_fd_set *fdset);
+
+#endif
+
+/**
+ * Initialize a netsnmp_large_fd_set structure.
+ *
+ * Note: this function only initializes the lfs_setsize and lfs_setptr
+ * members of netsnmp_large_fd_set, not the file descriptor set itself.
+ * 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);
+
+/**
+ * Modify the size of a file descriptor set and preserve the first
+ * min(fdset->lfs_setsize, setsize) file descriptors.
+ *
+ * Returns 1 upon success or 0 if memory allocation failed.
+ */
+int    netsnmp_large_fd_set_resize( netsnmp_large_fd_set *fdset, int setsize);
+
+/**
+ * Synchronous I/O multiplexing for large file descriptor sets.
+ *
+ * On POSIX systems, any file descriptor set with size below numfds will be
+ * resized before invoking select().
+ *
+ * @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);
+
+/** Deallocate the memory allocated by netsnmp_large_fd_set_init. */
+NETSNMP_IMPORT
+void   netsnmp_large_fd_set_cleanup(netsnmp_large_fd_set *fdset);
+
+/**
+ * Copy an fd_set to a netsnmp_large_fd_set structure.
+ *
+ * @note dst must have been initialized before this function is called.
+ */
+void   netsnmp_copy_fd_set_to_large_fd_set(netsnmp_large_fd_set *dst,
+                                                   const fd_set *src);
+
+/**
+ * Copy a netsnmp_large_fd_set structure into an fd_set.
+ *
+ * @return 0 upon success, -1 when copying fails because *src is too large to
+ *         fit into *dst.
+ */
+int    netsnmp_copy_large_fd_set_to_fd_set(              fd_set *dst,
+                                     const netsnmp_large_fd_set *src);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* LARGE_FD_SET_H */
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..6a07300 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
@@ -82,8 +76,6 @@
 
 #ifdef UCD_SNMP_LIBRARY
 
-#define snmp_parse cmu_snmp_parse
-
 #include <ucd-snmp/asn1.h>
 #include <ucd-snmp/snmp_api.h>
 #include <ucd-snmp/snmp_impl.h>
@@ -141,7 +133,9 @@
 #define SNMP_MSG_GET GET_REQ_MSG
 #define SNMP_MSG_GETNEXT GETNEXT_REQ_MSG
 #define SNMP_MSG_RESPONSE GET_RSP_MSG
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #define SNMP_MSG_SET SET_REQ_MSG
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 #define SNMP_MSG_TRAP TRP_REQ_MSG
 #define SNMP_MSG_GETBULK    (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x5)
 #define SNMP_MSG_INFORM     (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x6)
diff --git a/include/net-snmp/library/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 f7c8bba..18d98e1 100644
--- a/include/net-snmp/library/mib.h
+++ b/include/net-snmp/library/mib.h
@@ -34,7 +34,13 @@
 
 #include <stdio.h>              /* for FILE */
 
-#define MIB 1, 3, 6, 1, 2, 1
+#include <net-snmp/mib_api.h>
+
+#define NETSNMP_MIB2_OID 1, 3, 6, 1, 2, 1
+
+#ifndef NETSNMP_NO_LEGACY_DEFINITIONS
+#define MIB NETSNMP_MIB2_OID
+#endif
 
 #define MIB_IFTYPE_OTHER		    1
 #define MIB_IFTYPE_REGULAR1822		    2
@@ -111,67 +117,54 @@
     struct variable_list;
     struct enum_list;
 
-    void            print_mib(FILE * fp);
+    NETSNMP_IMPORT
     void            print_ascii_dump(FILE *);
-    int             read_objid(const char *, oid *, size_t *);
     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_init_mib(void);
-#ifndef NETSNMP_CLEAN_NAMESPACE
-    void            init_mib(void);
-#endif
-    void            shutdown_mib(void);
-    void            print_description(oid *, size_t, int);
-    void            fprint_description(FILE *, oid *, size_t, int);
-    int             snprint_description(char *, size_t, oid *, size_t, int);
-    int             sprint_realloc_description(u_char **, size_t *, size_t *,
-                                               int, oid *, size_t, int);
-    int             get_module_node(const char *, const char *, oid *,
-                                    size_t *);
+    void            netsnmp_mibindex_load( void );
+    char *          netsnmp_mibindex_lookup( const char * );
+    FILE *          netsnmp_mibindex_new( const char * );
+    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 *);
-    oid            *snmp_parse_oid(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);
 
-
-    void            print_variable(const oid * objid, size_t objidlen,
+    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);
 
-    void            fprint_variable(FILE * fp,
-                                    const oid * objid, size_t objidlen,
-                                    const netsnmp_variable_list * variable);
-
-    int             snprint_variable(char *buf, size_t buf_len,
-                                     const oid * objid, size_t objidlen,
-                                     const netsnmp_variable_list * variable);
-
-    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
@@ -185,6 +178,7 @@
                                                       const oid * objid,
                                                       size_t objidlen);
 
+    NETSNMP_IMPORT
     void
                     netsnmp_sprint_realloc_objid(u_char ** buf,
                                                  size_t * buf_len,
@@ -194,40 +188,18 @@
                                                  const oid * objid,
                                                  size_t objidlen);
 
-    void            print_value(const oid * objid, size_t objidlen,
-                                const netsnmp_variable_list * variable);
-
-    void            fprint_value(FILE * fp,
+    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);
 
-    int             snprint_value(char *buf, size_t buf_len,
-                                  const oid * objid, size_t objidlen,
-                                  const netsnmp_variable_list * variable);
-
-    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);
-
-
-    void            print_objid(const oid * objid, size_t objidlen);
-
-    void            fprint_objid(FILE * fp,
+    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);
 
-    int             snprint_objid(char *buf, size_t buf_len,
-                                  const oid * objid, size_t objidlen);
-
-    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,
@@ -236,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,
@@ -460,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 *,
@@ -492,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 785106d..ce46ab9 100644
--- a/include/net-snmp/library/parse.h
+++ b/include/net-snmp/library/parse.h
@@ -4,6 +4,9 @@
 #ifdef __cplusplus
 extern          "C" {
 #endif
+
+#include <net-snmp/mib_api.h>
+
     /*
      * parse.h
      */
@@ -29,10 +32,19 @@
 SOFTWARE.
 ******************************************************************/
 
-#define MAXLABEL        64      /* maximum characters in a label */
+#define NETSNMP_MAXLABEL 64      /* maximum characters in a label */
 #define MAXTOKEN        128     /* maximum characters in a token */
 #define MAXQUOTESTR     4096    /* maximum characters in a quoted string */
 
+/*
+ * MAXLABEL appears to be unused in code, and conflicts with
+ * <arpa/nameser.h>. Only define it if requested. This will
+ * cause problems if local DNSSEC validation is also enabled.
+ */
+#ifdef UCD_COMPATIBLE
+#define MAXLABEL        NETSNMP_MAXLABEL
+#endif
+
     struct variable_list;
 
     /*
@@ -70,33 +82,6 @@
     };
 
     /*
-     * A linked list of nodes.
-     */
-    struct node {
-        struct node    *next;
-        char           *label;  /* This node's (unique) textual name */
-        u_long          subid;  /* This node's integer subidentifier */
-        int             modid;  /* The module containing this node */
-        char           *parent; /* The parent's textual name */
-        int             tc_index;       /* index into tclist (-1 if NA) */
-        int             type;   /* The type of object this represents */
-        int             access;
-        int             status;
-        struct enum_list *enums;        /* (optional) list of enumerated integers */
-        struct range_list *ranges;
-        struct index_list *indexes;
-        char           *augments;
-        struct varbind_list *varbinds;
-        char           *hint;
-        char           *units;
-        char           *description;    /* description (a quoted string) */
-        char           *reference;    /* references (a quoted string) */
-        char           *defaultValue;
-	char           *filename;
-        int             lineno;
-    };
-
-    /*
      * A tree in the format of the tree structure of the MIB.
      */
     struct tree {
@@ -129,6 +114,7 @@
         char           *reference;    /* references (a quoted string) */
         int             reported;       /* 1=report started in print_subtree... */
         char           *defaultValue;
+       char	       *parseErrorString; /* Contains the error string if there are errors in parsing MIBs */
     };
 
     /*
@@ -209,46 +195,51 @@
 #define	ANON	"anonymous#"
 #define	ANON_LEN  strlen(ANON)
 
-    struct tree    *netsnmp_read_module(const char *);
-#ifndef NETSNMP_CLEAN_NAMESPACE
-    struct tree    *read_module(const char *);
-#endif
-    struct tree    *read_mib(const char *);
-    struct tree    *read_all_mibs(void);
     int             netsnmp_unload_module(const char *name);
-#ifndef NETSNMP_CLEAN_NAMESPACE
+#ifndef NETSNMP_NO_LEGACY_DEFINITIONS
     int             unload_module(const char *name);
-    void            init_mib_internals(void);
 #endif
     void            netsnmp_init_mib_internals(void);
     void            unload_all_mibs(void);
     int             add_mibfile(const char*, const char*, FILE *);
-    int             add_mibdir(const char *);
-    void            add_module_replacement(const char *, const char *,
-                                           const char *, int);
     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 78af56e..08eca9b 100644
--- a/include/net-snmp/library/read_config.h
+++ b/include/net-snmp/library/read_config.h
@@ -15,7 +15,7 @@
 #define PREMIB_CONFIG 1
 #define EITHER_CONFIG 2
 
-
+#include <net-snmp/config_api.h>
 
     /*
      * Defines a set of file types and the parse and free functions
@@ -43,76 +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_configs(void);
-    void            read_premib_configs(void);
-    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);
-    void            config_perror(const char *);
-    void            config_pwarn(const char *);
+#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 *);
-    struct config_line *register_config_handler(const char *, const char *,
-                                                void (*parser) (const char
-                                                                *, char *),
-                                                void (*releaser) (void),
-                                                const char *);
-    struct config_line *register_app_config_handler(const char *,
-                                                    void (*parser) (const
-                                                                    char *,
-                                                                    char
-                                                                    *),
-                                                    void (*releaser)
-                                                    (void), const char *);
-    struct config_line *register_prenetsnmp_mib_handler(const char *,
-                                                        const char *,
-                                                        void (*parser)
-                                                        (const char *,
-                                                         char *),
-                                                        void (*releaser)
-                                                        (void),
-                                                        const char *);
-    struct config_line *register_app_prenetsnmp_mib_handler(const char *,
-                                                            void (*parser)
-                                                            (const char *,
-                                                             char *),
-                                                            void
-                                                            (*releaser)
-                                                            (void),
-                                                            const char *);
-    void            unregister_config_handler(const char *, const char *);
-    void            unregister_app_config_handler(const char *);
-    void            unregister_all_config_handlers(void);
-    void            read_config_print_usage(const char *lead);
+    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);
 
@@ -130,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 bfb4c5f..a355dd0 100644
--- a/include/net-snmp/library/snmp-tc.h
+++ b/include/net-snmp/library/snmp-tc.h
@@ -18,8 +18,9 @@
                                           u_char utc_offset_hours,
                                           u_char utc_offset_minutes);
 
-    u_char         *date_n_time(time_t *, size_t *);
-    time_t          ctime_to_timet(char *);
+    NETSNMP_IMPORT
+    u_char         *date_n_time(const time_t *, size_t *);
+    time_t          ctime_to_timet(const char *);
 
     /*
      * TrueValue 
@@ -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..f5978c6 100644
--- a/include/net-snmp/library/snmp.h
+++ b/include/net-snmp/library/snmp.h
@@ -118,7 +118,9 @@
 #define SNMP_MSG_GET        (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x0) /* a0=160 */
 #define SNMP_MSG_GETNEXT    (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x1) /* a1=161 */
 #define SNMP_MSG_RESPONSE   (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x2) /* a2=162 */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 #define SNMP_MSG_SET        (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x3) /* a3=163 */
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     /*
      * PDU types in SNMPv1 and SNMPsec 
@@ -137,6 +139,7 @@
      */
 #define SNMP_MSG_REPORT     (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x8) /* a8=168 */
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     /*
      * internal modes that should never be used by the protocol for the
      * pdu type.
@@ -162,6 +165,7 @@
 #define SNMP_MSG_INTERNAL_UNDO_COMMIT           24
 #define SNMP_MSG_INTERNAL_IRREVERSIBLE_COMMIT   25
 #define SNMP_MSG_INTERNAL_UNDO_CLEANUP          26
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     /*
      * modes > 128 for non sets.
@@ -175,9 +179,14 @@
     /*
      * test for member of Confirmed Class i.e., reportable 
      */
+#ifdef NETSNMP_NO_WRITE_SUPPORT
+#define SNMP_CMD_CONFIRMED(c) (c == SNMP_MSG_INFORM || c == SNMP_MSG_GETBULK ||\
+                               c == SNMP_MSG_GETNEXT || c == SNMP_MSG_GET )
+#else /* !NETSNMP_NO_WRITE_SUPPORT */
 #define SNMP_CMD_CONFIRMED(c) (c == SNMP_MSG_INFORM || c == SNMP_MSG_GETBULK ||\
                                c == SNMP_MSG_GETNEXT || c == SNMP_MSG_GET || \
-                               c == SNMP_MSG_SET)
+                               c == SNMP_MSG_SET )
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
     /*
      * Exception values for SNMPv2p, SNMPv2c, SNMPv2u, SNMPv2*, and SNMPv3 
@@ -277,6 +286,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 +329,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/snmpAliasDomain.h b/include/net-snmp/library/snmpAliasDomain.h
new file mode 100644
index 0000000..ccafcb5
--- /dev/null
+++ b/include/net-snmp/library/snmpAliasDomain.h
@@ -0,0 +1,32 @@
+#ifndef _SNMPALIASDOMAIN_H
+#define _SNMPALIASDOMAIN_H
+
+#ifdef NETSNMP_TRANSPORT_ALIAS_DOMAIN
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+#include <net-snmp/library/snmp_transport.h>
+#include <net-snmp/library/asn1.h>
+
+/*
+ * Simple aliases for complex transport strings that can be specified
+ * via the snmp.conf file and the 'alias' token.
+ */
+
+#define TRANSPORT_DOMAIN_ALIAS_IP		1,3,6,1,2,1,100,1,5
+NETSNMP_IMPORT oid netsnmp_snmpALIASDomain[];
+
+/*
+ * "Constructor" for transport domain object.  
+ */
+
+void            netsnmp_alias_ctor(void);
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /*NETSNMP_TRANSPORT_ALIAS_DOMAIN */
+
+#endif/*_SNMPALIASDOMAIN_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
new file mode 100644
index 0000000..2135da3
--- /dev/null
+++ b/include/net-snmp/library/snmpDTLSUDPDomain.h
@@ -0,0 +1,41 @@
+#ifndef _SNMPDTLSUDPDOMAIN_H
+#define _SNMPDTLSUDPDOMAIN_H
+
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+config_require(UDP)
+config_require(TLSBase)
+
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmp_transport.h>
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+#define TRANSPORT_DOMAIN_DTLS_UDP_IP	1,3,6,1,6,1,9
+NETSNMP_IMPORT oid netsnmpDTLSUDPDomain[7];
+NETSNMP_IMPORT size_t netsnmpDTLSUDPDomain_len;
+
+netsnmp_transport *netsnmp_dtlsudp_transport(struct sockaddr_in *addr,
+                                             int local);
+
+
+/*
+ * Register any configuration tokens specific to the agent.  
+ */
+
+void            netsnmp_dtlsudp_agent_config_tokens_register(void);
+
+/*
+ * "Constructor" for transport domain object.  
+ */
+
+void            netsnmp_dtlsudp_ctor(void);
+
+#ifdef __cplusplus
+}
+#endif
+#endif/*_SNMPDTLSUDPDOMAIN_H*/
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
new file mode 100644
index 0000000..2bd44e9
--- /dev/null
+++ b/include/net-snmp/library/snmpSSHDomain.h
@@ -0,0 +1,41 @@
+#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
+
+/*
+ * 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 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.
+ */
+
+void            netsnmp_ssh_ctor(void);
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /*NETSNMP_TRANSPORT_SSH_DOMAIN */
+
+#endif/*_SNMPSSHDOMAIN_H*/
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..bc21cb6
--- /dev/null
+++ b/include/net-snmp/library/snmpTLSBaseDomain.h
@@ -0,0 +1,83 @@
+#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;
+       netsnmp_indexed_addr_pair *addr;
+       char                      *our_identity;
+       char                      *their_identity;
+       char                      *their_fingerprint;
+       char                      *their_hostname;
+       char                      *trust_cert;
+    } _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 540adf5..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.  
@@ -52,6 +44,18 @@
 
 void            netsnmp_udp_ctor(void);
 
+/*
+ * protected-ish functions used by other core-code
+ */
+char *netsnmp_udp_fmtaddr(netsnmp_transport *t, void *data, int 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);
+int netsnmp_udp_sendto(int fd, struct in_addr *srcip, int if_index,
+					   struct sockaddr *remote, void *data, int len);
+#endif
+
 #ifdef __cplusplus
 }
 #endif
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 c4ea464..83eba2c 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
@@ -16,34 +22,38 @@
 #define TRANSPORT_DOMAIN_UDP_IPV6	1,3,6,1,2,1,100,1,2
 NETSNMP_IMPORT oid      netsnmp_UDPIPv6Domain[];
 
-netsnmp_transport *snmp_udp6_transport(struct sockaddr_in6 *addr,
-                                       int local);
+netsnmp_transport *netsnmp_udp6_transport(struct sockaddr_in6 *addr,
+                                          int local);
 
 
 /*
  * 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,
                                             char *param);
 
+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 51909f7..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);
 
 
 /*
@@ -41,9 +46,20 @@
 
 void            netsnmp_unix_ctor(void);
 
+/*
+ * Support functions
+ */
+void            netsnmp_unix_create_path_with_mode(int mode);
+void            netsnmp_unix_dont_create_path(void);
+
 #ifdef __cplusplus
 }
 #endif
+#else
+
+#define netsnmp_unix_create_path_with_mode(x)
+#define netsnmp_unix_dont_create_path()
+
 #endif                          /*NETSNMP_TRANSPORT_UNIX_DOMAIN */
 
 #endif/*_SNMPUNIXDOMAIN_H*/
diff --git a/include/net-snmp/library/snmp_alarm.h b/include/net-snmp/library/snmp_alarm.h
index f97a712..d1bcbfa 100644
--- a/include/net-snmp/library/snmp_alarm.h
+++ b/include/net-snmp/library/snmp_alarm.h
@@ -12,13 +12,17 @@
      * alarm flags 
      */
 #define SA_REPEAT 0x01          /* keep repeating every X seconds */
+#define SA_FIRED 0x10          /* Being processed in run_alarms */
 
     struct snmp_alarm {
+        /** Alarm interval. Zero if single-shot. */
         struct timeval  t;
         unsigned int    flags;
         unsigned int    clientreg;
-        struct timeval  t_last;
-        struct timeval  t_next;
+        /** Last time the alarm fired [monotonic clock]. */
+        struct timeval  t_lastM;
+        /** Next time the alarm will fire [monotonic clock]. */
+        struct timeval  t_nextM;
         void           *clientarg;
         SNMPAlarmCallback *thecallback;
         struct snmp_alarm *next;
@@ -27,8 +31,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 +51,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 2cad92e..6f658d5 100644
--- a/include/net-snmp/library/snmp_api.h
+++ b/include/net-snmp/library/snmp_api.h
@@ -24,6 +24,14 @@
  * @{
  */
 
+#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>
+
+#include <net-snmp/net-snmp-features.h>
+
 #ifndef DONT_SHARE_ERROR_WITH_OTHER_THREADS
 #define SET_SNMP_ERROR(x) snmp_errno=(x)
 #else
@@ -57,257 +65,7 @@
 SOFTWARE.
 ******************************************************************/
 
-/** @typedef struct variable_list netsnmp_variable_list
-    * Typedefs the variable_list struct into netsnmp_variable_list */
-struct variable_list;
-typedef struct variable_list netsnmp_variable_list;
 struct timeval;
-struct netsnmp_transport_s;
-
-#define USM_AUTH_KU_LEN     32
-#define USM_PRIV_KU_LEN     32
-
-/** @typedef struct snmp_pdu to netsnmp_pdu
-    * Typedefs the snmp_pdu struct into netsnmp_pdu */
-/** @struct snmp_pdu
- * The snmp protocol data unit.
- */	
-typedef struct snmp_pdu {
-
-    /*
-     * Protocol-version independent fields
-     */
-    /** snmp version */
-    long            version;
-    /** Type of this PDU */	
-    int             command;
-    /** Request id - note: not incremented on retries */
-    long            reqid;  
-    /** Message id for V3 messages note: incremented for each retry */
-    long            msgid;
-    /** Unique ID for incoming transactions */
-    long            transid;
-    /** Session id for AgentX messages */
-    long            sessid;
-    /** Error status (non_repeaters in GetBulk) */
-    long            errstat;
-    /** Error index (max_repetitions in GetBulk) */
-    long            errindex;       
-    /** Uptime */
-    u_long          time;   
-    u_long          flags;
-
-    int             securityModel;
-    /** noAuthNoPriv, authNoPriv, authPriv */
-    int             securityLevel;  
-    int             msgParseModel;
-
-    /**
-     * Transport-specific opaque data.  This replaces the IP-centric address
-     * field.  
-     */
-    
-    void           *transport_data;
-    int             transport_data_length;
-
-    /**
-     * The actual transport domain.  This SHOULD NOT BE FREE()D.  
-     */
-
-    const oid      *tDomain;
-    size_t          tDomainLen;
-
-    netsnmp_variable_list *variables;
-
-
-    /*
-     * SNMPv1 & SNMPv2c fields
-     */
-    /** community for outgoing requests. */
-    u_char         *community;
-    /** length of community name. */
-    size_t          community_len;  
-
-    /*
-     * Trap information
-     */
-    /** System OID */
-    oid            *enterprise;     
-    size_t          enterprise_length;
-    /** trap type */
-    long            trap_type;
-    /** specific type */
-    long            specific_type;
-    /** This is ONLY used for v1 TRAPs  */
-    unsigned char   agent_addr[4];  
-
-    /*
-     *  SNMPv3 fields
-     */
-    /** context snmpEngineID */
-    u_char         *contextEngineID;
-    /** Length of contextEngineID */
-    size_t          contextEngineIDLen;     
-    /** authoritative contextName */
-    char           *contextName;
-    /** Length of contextName */
-    size_t          contextNameLen;
-    /** authoritative snmpEngineID for security */
-    u_char         *securityEngineID;
-    /** Length of securityEngineID */
-    size_t          securityEngineIDLen;    
-    /** on behalf of this principal */
-    char           *securityName;
-    /** Length of securityName. */
-    size_t          securityNameLen;        
-    
-    /*
-     * AgentX fields
-     *      (also uses SNMPv1 community field)
-     */
-    int             priority;
-    int             range_subid;
-    
-    void           *securityStateRef;
-} netsnmp_pdu;
-
-struct snmp_session;
-
-/** @typedef struct snmp_session netsnmp_session
- * Typedefs the snmp_session struct intonetsnmp_session */
-typedef struct snmp_session netsnmp_session;
-
-typedef int     (*snmp_callback) (int, netsnmp_session *, int,
-                                      netsnmp_pdu *, void *);
-typedef int     (*netsnmp_callback) (int, netsnmp_session *, int,
-                                         netsnmp_pdu *, void *);
-/** @struct snmp_session
- * The snmp session structure.
- */
-struct snmp_session {
-    /*
-     * Protocol-version independent fields
-     */
-    /** snmp version */
-    long            version;
-    /** Number of retries before timeout. */
-    int             retries;
-    /** Number of uS until first timeout, then exponential backoff */
-    long            timeout;        
-    u_long          flags;
-    struct snmp_session *subsession;
-    struct snmp_session *next;
-
-    /** name or address of default peer (may include transport specifier and/or port number) */
-    char           *peername;
-    /** UDP port number of peer. (NO LONGER USED - USE peername INSTEAD) */
-    u_short         remote_port;
-    /** My Domain name or dotted IP address, 0 for default */
-    char           *localname;
-    /** My UDP port number, 0 for default, picked randomly */
-    u_short         local_port;     
-    /**
-     * Authentication function or NULL if null authentication is used 
-     */
-    u_char         *(*authenticator) (u_char *, size_t *, u_char *, size_t);
-    /** Function to interpret incoming data */
-    netsnmp_callback callback;      
-    /**
-     * Pointer to data that the callback function may consider important 
-     */
-    void           *callback_magic;
-    /** copy of system errno */
-    int             s_errno;
-    /** copy of library errno */
-    int             s_snmp_errno;   
-    /** Session id - AgentX only */
-    long            sessid; 
-
-    /*
-     * SNMPv1 & SNMPv2c fields
-     */
-    /** community for outgoing requests. */
-    u_char         *community;
-    /** Length of community name. */
-    size_t          community_len;  
-    /**  Largest message to try to receive.  */
-    size_t          rcvMsgMaxSize;
-    /**  Largest message to try to send.  */
-    size_t          sndMsgMaxSize;  
-
-    /*
-     * SNMPv3 fields
-     */
-    /** are we the authoritative engine? */
-    u_char          isAuthoritative;
-    /** authoritative snmpEngineID */
-    u_char         *contextEngineID;
-    /** Length of contextEngineID */
-    size_t          contextEngineIDLen;     
-    /** initial engineBoots for remote engine */
-    u_int           engineBoots;
-    /** initial engineTime for remote engine */
-    u_int           engineTime;
-    /** authoritative contextName */
-    char           *contextName;
-    /** Length of contextName */
-    size_t          contextNameLen;
-    /** authoritative snmpEngineID */
-    u_char         *securityEngineID;
-    /** Length of contextEngineID */
-    size_t          securityEngineIDLen;    
-    /** on behalf of this principal */
-    char           *securityName;
-    /** Length of securityName. */
-    size_t          securityNameLen;
-
-    /** auth protocol oid */
-    oid            *securityAuthProto;
-    /** Length of auth protocol oid */
-    size_t          securityAuthProtoLen;
-    /** Ku for auth protocol XXX */
-    u_char          securityAuthKey[USM_AUTH_KU_LEN];       
-    /** Length of Ku for auth protocol */
-    size_t          securityAuthKeyLen;
-    /** Kul for auth protocol */
-    u_char          *securityAuthLocalKey;       
-    /** Length of Kul for auth protocol XXX */
-    size_t          securityAuthLocalKeyLen;       
-
-    /** priv protocol oid */
-    oid            *securityPrivProto;
-    /** Length of priv protocol oid */
-    size_t          securityPrivProtoLen;
-    /** Ku for privacy protocol XXX */
-    u_char          securityPrivKey[USM_PRIV_KU_LEN];       
-    /** Length of Ku for priv protocol */
-    size_t          securityPrivKeyLen;
-    /** Kul for priv protocol */
-    u_char          *securityPrivLocalKey;       
-    /** Length of Kul for priv protocol XXX */
-    size_t          securityPrivLocalKeyLen;       
-
-    /** snmp security model, v1, v2c, usm */
-    int             securityModel;
-    /** noAuthNoPriv, authNoPriv, authPriv */
-    int             securityLevel;  
-    /** target param name */
-    char           *paramName;
-
-    /**
-     * security module specific 
-     */
-    void           *securityInfo;
-
-    /**
-     * 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?
-     */
-    void           *myvoid;
-};
-
 /*
  * A list of all the outstanding requests for a particular session.
  */
@@ -320,8 +78,8 @@
     void           *cb_data;        /* user callback data per request (NULL if unused) */
     int             retries;        /* Number of retries */
     u_long          timeout;        /* length to wait for timeout */
-    struct timeval  time;   /* Time this request was made */
-    struct timeval  expire; /* time this request is due to expire */
+    struct timeval  timeM;   /* Time this request was made [monotonic clock] */
+    struct timeval  expireM; /* Time this request is due to expire [monotonic clock]. */
     struct snmp_session *session;
     netsnmp_pdu    *pdu;    /* The pdu for this request
 			     * (saved so it can be retransmitted */
@@ -359,8 +117,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 */
@@ -404,6 +160,7 @@
 
 #define SNMP_DETAIL_SIZE        512
 
+#define SNMP_FLAGS_UDP_BROADCAST   0x800
 #define SNMP_FLAGS_RESP_CALLBACK   0x400      /* Additional callback on response */
 #define SNMP_FLAGS_USER_CREATED    0x200      /* USM user has been created */
 #define SNMP_FLAGS_DONT_PROBE      0x100      /* don't probe for an engineID */
@@ -500,132 +257,29 @@
 #define SNMPERR_KRB5			(-63)
 #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			(-65)
-
-#define non_repeaters	errstat
-#define max_repetitions errindex
-
-typedef union {
-   long           *integer;
-   u_char         *string;
-   oid            *objid;
-   u_char         *bitstring;
-   struct counter64 *counter64;
-#ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
-   float          *floatVal;
-   double         *doubleVal;
-   /*
-    * t_union *unionVal; 
-    */
-#endif                          /* NETSNMP_WITH_OPAQUE_SPECIAL_TYPES */
-} netsnmp_vardata;
-
-
-/** @struct variable_list
- * The netsnmp variable list binding structure, it's typedef'd to
- * netsnmp_variable_list.
- */
-struct variable_list {
-   /** NULL for last variable */
-   struct variable_list *next_variable;    
-   /** Object identifier of variable */
-   oid            *name;   
-   /** number of subid's in name */
-   size_t          name_length;    
-   /** ASN type of variable */
-   u_char          type;   
-   /** value of variable */
-    netsnmp_vardata val;
-   /** the length of the value to be copied into buf */
-   size_t          val_len;
-   /** buffer to hold the OID */
-   oid             name_loc[MAX_OID_LEN];  
-   /** 90 percentile < 40. */
-   u_char          buf[40];
-   /** (Opaque) hook for additional data */
-   void           *data;
-   /** callback to free above */
-   void            (*dataFreeHook)(void *);    
-   int             index;
-};
-
-
-
-    /*
-     * netsnmp_session *snmp_open(session)
-     *      netsnmp_session *session;
-     *
-     * Sets up the session with the snmp_session information provided
-     * by the user.  Then opens and binds the necessary UDP port.
-     * A handle to the created session is returned (this is different than
-     * the pointer passed to snmp_open()).  On any error, NULL is returned
-     * and snmp_errno is set to the appropriate error code.
-     */
-    netsnmp_session *snmp_open(netsnmp_session *);
-
-    /*
-     * int snmp_close(session)
-     *     netsnmp_session *session;
-     *
-     * Close the input session.  Frees all data allocated for the session,
-     * dequeues any pending requests, and closes any sockets allocated for
-     * the session.  Returns 0 on error, 1 otherwise.
-     *
-     * snmp_close_sessions() does the same thing for all open sessions
-     */
-    int             snmp_close(netsnmp_session *);
-    int             snmp_close_sessions(void);
+#define SNMPERR_MAX			(-69)
 
 
     /*
-     * int snmp_send(session, pdu)
-     *     netsnmp_session *session;
-     *     netsnmp_pdu      *pdu;
-     *
-     * Sends the input pdu on the session after calling snmp_build to create
-     * a serialized packet.  If necessary, set some of the pdu data from the
-     * session defaults.  Add a request corresponding to this pdu to the list
-     * of outstanding requests on this session, then send the pdu.
-     * Returns the request id of the generated packet if applicable, otherwise 1.
-     * On any error, 0 is returned.
-     * The pdu is freed by snmp_send() unless a failure occured.
+     * General purpose memory allocation functions. Use these functions to
+     * allocate memory that may be reallocated or freed by the Net-SNMP
+     * library or to reallocate or free memory that has been allocated by the
+     * Net-SNMP library, and when working in a context where there is more than
+     * one heap. Examples are:
+     * - Perl XSUB's.
+     * - MSVC or MinGW with the Net-SNMP library compiled as a DLL instead of
+     *   a static library.
      */
-    int             snmp_send(netsnmp_session *, netsnmp_pdu *);
-
-    /*
-     * int snmp_async_send(session, pdu, callback, cb_data)
-     *     netsnmp_session *session;
-     *     netsnmp_pdu      *pdu;
-     *     netsnmp_callback callback;
-     *     void   *cb_data;
-     *
-     * Sends the input pdu on the session after calling snmp_build to create
-     * a serialized packet.  If necessary, set some of the pdu data from the
-     * session defaults.  Add a request corresponding to this pdu to the list
-     * of outstanding requests on this session and store callback and data,
-     * then send the pdu.
-     * Returns the request id of the generated packet if applicable, otherwise 1.
-     * On any error, 0 is returned.
-     * The pdu is freed by snmp_send() unless a failure occured.
-     */
-    int             snmp_async_send(netsnmp_session *, netsnmp_pdu *,
-                                    netsnmp_callback, void *);
-
-
-    /*
-     * void snmp_read(fdset)
-     *     fd_set  *fdset;
-     *
-     * Checks to see if any of the fd's set in the fdset belong to
-     * snmp.  Each socket with it's fd set has a packet read from it
-     * and snmp_parse is called on the packet received.  The resulting pdu
-     * is passed to the callback routine for that session.  If the callback
-     * routine returns successfully, the pdu and it's request are deleted.
-     */
-    void            snmp_read(fd_set *);
-
-
+    NETSNMP_IMPORT void *netsnmp_malloc(size_t size);
+    NETSNMP_IMPORT void *netsnmp_calloc(size_t nelem, size_t elsize);
+    NETSNMP_IMPORT void *netsnmp_realloc(void *ptr, size_t size);
+    NETSNMP_IMPORT void netsnmp_free(void *ptr);
+    NETSNMP_IMPORT char *netsnmp_strdup(const char *s1);
 
     /*
      * void
@@ -634,57 +288,8 @@
      *
      * Frees the pdu and any malloc'd data associated with it.
      */
-    void            snmp_free_pdu(netsnmp_pdu *);
 
-    void            snmp_free_var(netsnmp_variable_list *);     /* frees just this one */
-
-    void            snmp_free_varbind(netsnmp_variable_list * var);     /* frees all in list */
-
-    /*
-     * int snmp_select_info(numfds, fdset, timeout, block)
-     * int *numfds;
-     * fd_set   *fdset;
-     * struct timeval *timeout;
-     * int *block;
-     *
-     * 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.
-     * If activity occurs on any of these file descriptors, snmp_read
-     * should be called with that file descriptor set.
-     *
-     * The timeout is the latest time that SNMP can wait for a timeout.  The
-     * select should be done with the minimum time between timeout and any other
-     * timeouts necessary.  This should be checked upon each invocation of select.
-     * If a timeout is received, snmp_timeout should be called to check if the
-     * timeout was for SNMP.  (snmp_timeout is idempotent)
-     *
-     * Block is 1 if the select is requested to block indefinitely, rather than
-     * time out.  If block is input as 1, the timeout value will be treated as
-     * undefined, but it must be available for setting in snmp_select_info.  On
-     * return, if block is true, the value of timeout will be undefined.
-     *
-     * snmp_select_info returns the number of open sockets.  (i.e. The number
-     * of sessions open)
-     */
-    int             snmp_select_info(int *, fd_set *, struct timeval *,
-                                     int *);
-
-
-
-    /*
-     * void snmp_timeout();
-     *
-     * snmp_timeout should be called whenever the timeout from snmp_select_info
-     * expires, but it is idempotent, so snmp_timeout can be polled (probably a
-     * cpu expensive proposition).  snmp_timeout checks to see if any of the
-     * sessions have an outstanding request that has timed out.  If it finds one
-     * (or more), and that pdu has more retries available, a new packet is formed
-     * from the pdu and is resent.  If there are no more retries available, the
-     * callback for the session is used to alert the user of the timeout.
-     */
-
-    void            snmp_timeout(void);
+    NETSNMP_IMPORT void snmp_free_var_internals(netsnmp_variable_list *);     /* frees contents only */
 
 
     /*
@@ -726,20 +331,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 *,
@@ -747,8 +359,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
@@ -772,27 +386,40 @@
                                    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_variable_list *snmp_pdu_add_variable(netsnmp_pdu *, const oid *,
-                                                 size_t, u_char, const u_char *,
-                                                 size_t);
-    netsnmp_variable_list *snmp_varlist_add_variable(netsnmp_variable_list
-                                                     ** varlist,
-                                                     const oid * name,
-                                                     size_t name_length,
-                                                     u_char type,
-                                                     const u_char * value,
-                                                     size_t len);
+    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
+
+#ifndef NETSNMP_FEATURE_REMOVE_STATISTICS
     u_int           snmp_increment_statistic(int which);
+    NETSNMP_IMPORT
     u_int           snmp_increment_statistic_by(int which, int count);
+    NETSNMP_IMPORT
     u_int           snmp_get_statistic(int which);
     void            snmp_init_statistics(void);
+#else /* NETSNMP_FEATURE_REMOVE_STATISTICS */
+
+/* allow code to continue referencing API even if statistics are removed */
+#define snmp_increment_statistic(X)
+#define snmp_increment_statistic_by(X,Y)
+#define snmp_init_statistics()
+
+#endif
+
     int             create_user_from_session(netsnmp_session * session);
-    int snmp_get_fd_for_session(struct snmp_session *sessp);
+    int snmpv3_probe_contextEngineID_rfc5343(void *slp,
+                                             netsnmp_session *session);
 
     /*
      * New re-allocating reverse encoding functions.  
@@ -811,10 +438,13 @@
 
 
 
+struct netsnmp_transport_s;
+
     /*
      * Extended open; fpre_parse has changed.  
      */
 
+    NETSNMP_IMPORT
     netsnmp_session *snmp_open_ex(netsnmp_session *,
                                   int (*fpre_parse) (netsnmp_session *,
                                                      struct
@@ -838,70 +468,36 @@
      * 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);
 
 
-    /*
-     * 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,
-     * but operate on a single session only.
-     *
-     * Synopsis:
-     
-     void * sessp;
-     netsnmp_session session, *ss;
-     netsnmp_pdu *pdu, *response;
-     
-     snmp_sess_init(&session);
-     session.retries = ...
-     session.remote_port = ...
-     sessp = snmp_sess_open(&session);
-     ss = snmp_sess_session(sessp);
-     if (ss == NULL)
-     exit(1);
-     ...
-     if (ss->community) free(ss->community);
-     ss->community = strdup(gateway);
-     ss->community_len = strlen(gateway);
-     ...
-     snmp_sess_synch_response(sessp, pdu, &response);
-     ...
-     snmp_sess_close(sessp);
-     
-     * See also:
-     * snmp_sess_synch_response, in snmp_client.h.
-     
-     * Notes:
-     *  1. Invoke snmp_sess_session after snmp_sess_open.
-     *  2. snmp_sess_session return value is an opaque pointer.
-     *  3. Do NOT free memory returned by snmp_sess_session.
-     *  4. Replace snmp_send(ss,pdu) with snmp_sess_send(sessp,pdu)
-     */
-
-    void            snmp_sess_init(netsnmp_session *);
-    void           *snmp_sess_open(netsnmp_session *);
-    void           *snmp_sess_pointer(netsnmp_session *);
-    netsnmp_session *snmp_sess_session(void *);
     NETSNMP_IMPORT
-    netsnmp_session *snmp_sess_session_lookup(void *);
+    void            netsnmp_sess_log_error(int priority,
+                                           const char *prog_string,
+                                           netsnmp_session * ss);
+    const char *    snmp_pdu_type(int type);
 
     /*
      * Return the netsnmp_transport structure associated with the given opaque
      * 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 ------------------------------------------ 
      * 
@@ -950,6 +546,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 *,
@@ -957,6 +554,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 *,
@@ -981,28 +579,6 @@
                                                                 *, void *,
                                                                 size_t)
         );
-
-    /*
-     * use return value from snmp_sess_open as void * parameter 
-     */
-
-    int             snmp_sess_send(void *, netsnmp_pdu *);
-    int             snmp_sess_async_send(void *, netsnmp_pdu *,
-                                         netsnmp_callback, void *);
-    int             snmp_sess_select_info(void *, int *, fd_set *,
-                                          struct timeval *, int *);
-    int             snmp_sess_read(void *, fd_set *);
-    void            snmp_sess_timeout(void *);
-    int             snmp_sess_close(void *);
-
-    void            snmp_sess_error(void *, int *, int *, char **);
-    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);
-
     /*
      * end single session API 
      */
@@ -1088,7 +664,48 @@
 #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
+
+    /*
+     * Internal: The list of active/open sessions.
+     */
+    struct session_list {
+       struct session_list *next;
+       netsnmp_session *session;
+       netsnmp_transport *transport;
+       struct snmp_internal_session *internal;
+    };
 
 #ifdef __cplusplus
 }
diff --git a/include/net-snmp/library/snmp_assert.h b/include/net-snmp/library/snmp_assert.h
index 578b6ce..8f52a69 100644
--- a/include/net-snmp/library/snmp_assert.h
+++ b/include/net-snmp/library/snmp_assert.h
@@ -23,42 +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  HAVE_CPP_UNDERBAR_FUNCTION_DEFINED
-#         define netsnmp_assert(x)  do { \
-                 if ( x ) \
-                    ; \
-                 else \
-                    snmp_log(LOG_ERR,"netsnmp_assert %s failed %s:%d %s()\n", \
-                             __STRING(x),__FILE__,__LINE__,__FUNCTION__); \
-              }while(0)
+#      ifdef  NETSNMP_FUNCTION
+#          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 99e75b5..ea54e7d 100644
--- a/include/net-snmp/library/snmp_client.h
+++ b/include/net-snmp/library/snmp_client.h
@@ -26,6 +26,12 @@
 #ifndef SNMP_CLIENT_H
 #define SNMP_CLIENT_H
 
+#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
 extern          "C" {
 #endif
@@ -48,62 +54,112 @@
         netsnmp_pdu    *pdu;
     };
 
-    int             snmp_set_var_value(netsnmp_variable_list *,
-                                       const void *, size_t);
-    int             snmp_set_var_objid(netsnmp_variable_list * vp,
-                                       const oid * objid,
-                                       size_t name_length);
-    int             snmp_set_var_typed_value(netsnmp_variable_list *
-                                             newvar, u_char type,
-                                             const void * val_str,
-                                             size_t val_len);
-    int             snmp_set_var_typed_integer(netsnmp_variable_list * newvar,
-                                               u_char type, long val);
+    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_variable_list *snmp_add_null_var(netsnmp_pdu *, const oid *, size_t);
-    netsnmp_pdu    *snmp_pdu_create(int);
-    netsnmp_pdu    *snmp_fix_pdu(netsnmp_pdu *, int);
-    netsnmp_pdu    *snmp_clone_pdu(netsnmp_pdu *);
     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 *);
-    netsnmp_variable_list *snmp_clone_varbind(netsnmp_variable_list *);
-    const char     *snmp_errstring(int);
-    int             snmp_synch_response(netsnmp_session *, netsnmp_pdu *,
-                                        netsnmp_pdu **);
+    NETSNMP_IMPORT
     int             snmp_synch_response_cb(netsnmp_session *,
                                            netsnmp_pdu *, netsnmp_pdu **,
                                            snmp_callback);
-    int             snmp_clone_mem(void **, void *, unsigned);
+    NETSNMP_IMPORT
+    int             snmp_clone_mem(void **, const void *, unsigned);
 
-    /*
-     * single session API - see snmp_api.h for full details 
-     */
-    int             snmp_sess_synch_response(void *, netsnmp_pdu *,
-                                             netsnmp_pdu **);
 
+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 *);
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+NETSNMP_IMPORT
 int netsnmp_query_set(     netsnmp_variable_list *, netsnmp_session *);
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+
+/** **************************************************************************
+ *
+ * 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
 }
diff --git a/include/net-snmp/library/snmp_debug.h b/include/net-snmp/library/snmp_debug.h
index 9e3d5a9..a3969f6 100644
--- a/include/net-snmp/library/snmp_debug.h
+++ b/include/net-snmp/library/snmp_debug.h
@@ -15,36 +15,60 @@
      */
 
 
+#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 HAVE_STDARG_H
-    void            debugmsg(const char *token, const char *format, ...);
+    NETSNMP_IMPORT
+    void            debugmsg(const char *token, const char *format, ...)
+                        NETSNMP_ATTRIBUTE_FORMAT(printf, 2, 3);
+    NETSNMP_IMPORT
     void            debugmsgtoken(const char *token, const char *format,
-                                  ...);
+                                  ...)
+                        NETSNMP_ATTRIBUTE_FORMAT(printf, 2, 3);
     void            debug_combo_nc(const char *token, const char *format,
-                                   ...);
-#else
-    void            debugmsg(va_alist);
-    void            debugmsgtoken(va_alist);
-    void            debug_combo_nc(va_alist);
-#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);
-    char           *debug_indent(void);
+    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);
 
     /*
      * Use these macros instead of the functions above to allow them to be
@@ -121,11 +145,14 @@
 #define __DBGMSGL_NC(x)  __DBGTRACE; debugmsg x
 #define __DBGMSGTL_NC(x) __DBGTRACE; debug_combo_nc x
 
-#ifdef  HAVE_CPP_UNDERBAR_FUNCTION_DEFINED
-#define __DBGTRACE       __DBGMSGT(("trace","%s(): %s, %d:\n",__FUNCTION__,\
-                                 __FILE__,__LINE__))
+#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
@@ -136,11 +163,11 @@
 #define __DBGMSGOIDRANGE(x) debugmsg_oidrange x
 #define __DBGMSGHEX(x)     debugmsg_hex x
 #define __DBGMSGHEXTLI(x)  debugmsg_hextli x
-#define __DBGINDENT()      debug_indent()
+#define __DBGINDENT()      debug_indent_get()
 #define __DBGINDENTADD(x)  debug_indent_add(x)
 #define __DBGINDENTMORE()  debug_indent_add(2)
 #define __DBGINDENTLESS()  debug_indent_add(-2)
-#define __DBGPRINTINDENT(token) __DBGMSGTL((token, "%s", __DBGINDENT()))
+#define __DBGPRINTINDENT(token) __DBGMSGTL((token, "%*s", __DBGINDENT(), ""))
 
 #define __DBGDUMPHEADER(token,x) \
         __DBGPRINTINDENT("dumph_" token); \
@@ -157,12 +184,11 @@
 
 #define __DBGDUMPSECTION(token,x) \
         __DBGPRINTINDENT("dumph_" token); \
-        debugmsg("dumph_" token,x); \
-        debugmsg("dumph_" token,"\n"); \
+        debugmsg("dumph_" token,"%s\n",x);\
         __DBGINDENTMORE()
 
 #define __DBGDUMPSETUP(token,buf,len) \
-        debugmsg("dumpx" token, "dumpx_%s:%s", token, __DBGINDENT()); \
+        debugmsg("dumpx" token, "dumpx_%s:%*s", token, __DBGINDENT(), ""); \
         __DBGMSGHEX(("dumpx_" token,buf,len)); \
         if (debug_is_token_registered("dumpv" token) == SNMPERR_SUCCESS || \
             debug_is_token_registered("dumpv_" token) != SNMPERR_SUCCESS) { \
@@ -170,95 +196,31 @@
         } else { \
             debugmsg("dumpx_" token,"  "); \
         } \
-        debugmsg("dumpv" token, "dumpv_%s:%s", token, __DBGINDENT());
+        debugmsg("dumpv" token, "dumpv_%s:%*s", token, __DBGINDENT(), "");
 
 /******************* 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 DEBUGINDENT()      do {if (_DBG_IF_) {__DBGINDENT();} }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 DEBUGINDENT()
-#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:
@@ -272,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_impl.h b/include/net-snmp/library/snmp_impl.h
index 0d32c44..f79aebd 100644
--- a/include/net-snmp/library/snmp_impl.h
+++ b/include/net-snmp/library/snmp_impl.h
@@ -72,10 +72,15 @@
     /*
      * Access control statements for the agent 
      */
-#define RONLY	0x1             /* read access only */
-#define RWRITE	0x2             /* read and write access (must have 0x2 bit set) */
+#define NETSNMP_OLDAPI_RONLY	0x1     /* read access only */
+#define NETSNMP_OLDAPI_RWRITE	0x2     /* read and write access (must have 0x2 bit set) */
+#define NETSNMP_OLDAPI_NOACCESS 0x0000  /* no access for anybody */
 
-#define NOACCESS 0x0000         /* no access for anybody */
+#ifndef NETSNMP_NO_LEGACY_DEFINITIONS
+#define RONLY           NETSNMP_OLDAPI_RONLY
+#define RWRITE          NETSNMP_OLDAPI_RWRITE
+#define NOACCESS        NETSNMP_OLDAPI_NOACCESS
+#endif
 
     /*
      * defined types (from the SMI, RFC 1157) 
diff --git a/include/net-snmp/library/snmp_logging.h b/include/net-snmp/library/snmp_logging.h
index 0dde7ae..1d7921b 100644
--- a/include/net-snmp/library/snmp_logging.h
+++ b/include/net-snmp/library/snmp_logging.h
@@ -1,18 +1,17 @@
 #ifndef SNMP_LOGGING_H
 #define SNMP_LOGGING_H
 
-#ifdef __cplusplus
-extern          "C" {
-#endif
+#include <net-snmp/types.h>
+#include <net-snmp/output_api.h>
 
-#include <stdio.h>
 #if HAVE_SYSLOG_H
 #include <syslog.h>
 #endif
-#if HAVE_STDARG_H
+#include <stdio.h>
 #include <stdarg.h>
-#else
-#include <varargs.h>
+
+#ifdef __cplusplus
+extern          "C" {
 #endif
 
 #ifndef LOG_ERR
@@ -35,51 +34,36 @@
 #define DEFAULT_LOG_ID "net-snmp"
 #endif
 
+#define NETSNMP_LOGONCE(x) do { \
+        static char logged = 0; \
+        if (!logged) {          \
+            logged = 1;         \
+            snmp_log x ;        \
+        }                       \
+    } 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 HAVE_STDARG_H
-# 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
-#else
-    int             snmp_log(va_alist);
-#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,8 +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 *);
@@ -115,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
new file mode 100644
index 0000000..b291736
--- /dev/null
+++ b/include/net-snmp/library/snmp_openssl.h
@@ -0,0 +1,46 @@
+/*
+ * Header file for the OpenSSL Wrapper
+ */
+
+#ifndef SNMP_OPENSSL_H
+#define SNMP_OPENSSL_H
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    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
+#endif                          /* SNMP_OPENSSL_H */
diff --git a/include/net-snmp/library/snmp_parse_args.h b/include/net-snmp/library/snmp_parse_args.h
index c0fe71e..1ad63e0 100644
--- a/include/net-snmp/library/snmp_parse_args.h
+++ b/include/net-snmp/library/snmp_parse_args.h
@@ -1,16 +1,89 @@
 #ifndef SNMP_PARSE_ARGS_H
 #define SNMP_PARSE_ARGS_H
+
+/**
+ * @file snmp_parse_args.h
+ *
+ * Support for initializing variables of type netsnmp_session from command
+ * line arguments
+ */
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+/** Don't enable any logging even if there is no -L argument */
+#define NETSNMP_PARSE_ARGS_NOLOGGING    0x0001
+/** Don't zero out sensitive arguments as they are not on the command line
+ *  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 aeeb24a..aabb7ed 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_LOCALSM_SECURITY_MODEL 2066433
+#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;
 
@@ -90,7 +91,11 @@
                                       netsnmp_session *,
                                       int result,
                                       netsnmp_pdu *origpdu);
+typedef int     (SecmodDiscoveryMethod) (void *slp, netsnmp_session *session);
+typedef int     (SecmodPostDiscovery) (void *slp, netsnmp_session *session);
 
+typedef int     (SecmodSessionSetup) (netsnmp_session *in_session,
+                                      netsnmp_session *out_session);
 /*
  * definition of a security module
  */
@@ -105,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 
@@ -125,6 +131,12 @@
     * error and report handling
     */
    SecmodHandleReport *handle_report;
+
+   /*
+    * default engineID discovery mechanism
+    */
+   SecmodDiscoveryMethod *probe_engineid;
+   SecmodPostDiscovery   *post_probe_engineid;
 };
 
 
@@ -146,16 +158,20 @@
 /*
  * find a security service definition 
  */
+NETSNMP_IMPORT
 struct snmp_secmod_def *find_sec_mod(int);
 /*
  * register a security service 
  */
 int             unregister_sec_mod(int);        /* register a security service */
 void            init_secmod(void);
+NETSNMP_IMPORT
+void            shutdown_secmod(void);
 
 /*
  * 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 ce742d5..4162897 100644
--- a/include/net-snmp/library/snmp_transport.h
+++ b/include/net-snmp/library/snmp_transport.h
@@ -2,6 +2,31 @@
 #define _SNMP_TRANSPORT_H
 
 #include <sys/types.h>
+
+#if HAVE_SYS_SOCKET_H
+#ifdef solaris2
+#define _XPG4_2
+#endif
+
+#if defined(aix4) || defined(aix5) || defined(aix6) || defined(aix7)
+#define _LINUX_SOURCE_COMPAT
+#endif
+
+#include <sys/socket.h>
+
+#ifdef solaris2
+# ifndef CMSG_SPACE
+#  define CMSG_SPACE(l) \
+            ((unsigned int)_CMSG_HDR_ALIGN(sizeof (struct cmsghdr) + (l)))
+#  define CMSG_LEN(l)   (_CMSG_HDR_ALIGN(sizeof(struct cmsghdr)) + (l))
+# endif
+#endif
+#endif /* HAVE_SYS_SOCKET_H */
+
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
 #include <net-snmp/library/asn1.h>
 
 #ifdef __cplusplus
@@ -16,9 +41,14 @@
 
 /*  Some transport-type flags.  */
 
-#define		NETSNMP_TRANSPORT_FLAG_STREAM	0x01
-#define		NETSNMP_TRANSPORT_FLAG_LISTEN	0x02
-#define		NETSNMP_TRANSPORT_FLAG_TUNNELED	0x04
+#define		NETSNMP_TRANSPORT_FLAG_STREAM	 0x01
+#define		NETSNMP_TRANSPORT_FLAG_LISTEN	 0x02
+#define		NETSNMP_TRANSPORT_FLAG_TUNNELED	 0x04
+#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.  */
 
@@ -33,8 +63,53 @@
 NETSNMP_IMPORT size_t   netsnmpDDPDomain_len;
 NETSNMP_IMPORT size_t   netsnmpIPXDomain_len;
 
+/* Structure which stores transport security model specific parameters */
+/* isms-secshell-11 section 4.1 */
+
+/* contents documented in draft-ietf-isms-transport-security-model
+   Section 3.2 */
+/* note: VACM only allows <= 32 so this is overkill till another ACM comes */
+#define NETSNMP_TM_MAX_SECNAME 256
+
+typedef union netsnmp_sockaddr_storage_u {
+    struct sockaddr     sa;
+    struct sockaddr_in  sin;
+#ifdef NETSNMP_ENABLE_IPV6
+    struct sockaddr_in6 sin6;
+#endif
+} netsnmp_sockaddr_storage;
+
+typedef struct netsnmp_addr_pair_s {
+   netsnmp_sockaddr_storage remote_addr;
+   netsnmp_sockaddr_storage local_addr;
+} netsnmp_addr_pair;
+
+typedef struct netsnmp_indexed_addr_pair_s {
+   netsnmp_sockaddr_storage remote_addr;
+   netsnmp_sockaddr_storage local_addr;
+    int if_index;
+} netsnmp_indexed_addr_pair;
+
+typedef struct netsnmp_tmStateReference_s {
+   oid    transportDomain[MAX_OID_LEN];
+   size_t transportDomainLen;
+   char   securityName[NETSNMP_TM_MAX_SECNAME];
+   size_t securityNameLen;
+   int    requestedSecurityLevel;
+   int    transportSecurityLevel;
+   char   sameSecurity;
+   char   sessionID[8];
+   
+   char   have_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.  */
 
@@ -68,6 +143,14 @@
 
     size_t          msgMaxSize;
 
+#ifdef FOR_STANDARDS_COMPLIANCE_OR_FUTURE_USE
+    /* TM state reference per ISMS WG solution */
+    netsnmp_tmStateReference *tmStateRef;
+#endif
+
+    /* tunneled transports */
+    struct netsnmp_transport_s * base_transport;
+
     /*  Callbacks.  Arguments are:
      *		
      *              "this" pointer, fd, buf, size, *opaque, *opaque_length  
@@ -79,14 +162,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 {
@@ -114,13 +217,22 @@
 
 } 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,
 				       netsnmp_transport *transport);
+int netsnmp_sockaddr_size(struct sockaddr *sa);
 
 
 /*
@@ -133,6 +245,7 @@
 
 /*  Free an netsnmp_transport.  */
 
+NETSNMP_IMPORT
 void            netsnmp_transport_free(netsnmp_transport *t);
 
 
@@ -144,6 +257,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);
 
@@ -151,35 +265,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..1b563f0 100644
--- a/include/net-snmp/library/snmpksm.h
+++ b/include/net-snmp/library/snmpksm.h
@@ -13,7 +13,9 @@
                                           snmp_secmod_outgoing_params *);
     int             ksm_process_in_msg(struct snmp_secmod_incoming_params
                                        *);
-    void            init_usm(void);
+    void            init_ksm(void);
+
+    void            shutdown_ksm(void);
 
     /*
      * This is the "key usage" that is used by the new crypto API.  It's used
@@ -25,6 +27,8 @@
 #define KSM_KEY_USAGE_ENCRYPTION	1030
 #define KSM_KEY_USAGE_CHECKSUM		1031
 
+#define KSM_SEC_MODEL_NUMBER            SNMP_SEC_MODEL_KSM
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/net-snmp/library/snmptsm.h b/include/net-snmp/library/snmptsm.h
new file mode 100644
index 0000000..264a928
--- /dev/null
+++ b/include/net-snmp/library/snmptsm.h
@@ -0,0 +1,33 @@
+/*
+ * Header file for Transport Security Model support
+ */
+
+#ifndef SNMPTSM_H
+#define SNMPTSM_H
+
+#define TSM_SEC_MODEL_NUMBER            SNMP_SEC_MODEL_TSM
+
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    int             tsm_rgenerate_out_msg(struct
+                                          snmp_secmod_outgoing_params *);
+    int             tsm_process_in_msg(struct snmp_secmod_incoming_params
+                                       *);
+    void            init_tsm(void);
+
+    void            shutdown_tsm(void);
+
+    #define NETSNMP_TM_SAME_SECURITY_NOT_REQUIRED 0
+    #define NETSNMP_TM_USE_SAME_SECURITY          1
+
+    /* basically we store almost nothing else but a tm ref */
+    typedef struct netsnmp_tsmSecurityReference_s {
+       netsnmp_tmStateReference *tmStateRef;
+    } netsnmp_tsmSecurityReference;
+
+#ifdef __cplusplus
+}
+#endif
+#endif                          /* SNMPTSM_H */
diff --git a/include/net-snmp/library/snmpusm.h b/include/net-snmp/library/snmpusm.h
index 5d14303..9d673cc 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.
@@ -75,6 +75,7 @@
         u_char         *privKey;
         size_t          privKeyLen;
         u_char         *userPublicString;
+        size_t          userPublicStringLen;
         int             userStatus;
         int             userStorageType;
        /* these are actually DH * pointers but only if openssl is avail. */
@@ -179,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;
@@ -199,50 +201,79 @@
                                        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);
+    NETSNMP_IMPORT
+    void            shutdown_usm(void);
+
+    NETSNMP_IMPORT
+    int             usm_create_user_from_session(netsnmp_session * session);
+    SecmodPostDiscovery usm_create_user_from_session_hook;
+    NETSNMP_IMPORT
+    void            usm_parse_create_usmUser(const char *token,
+                                             char *line);
+    NETSNMP_IMPORT
+    const oid      *get_default_authtype(size_t *);
+    NETSNMP_IMPORT
+    const oid      *get_default_privtype(size_t *);
+    void            snmpv3_authtype_conf(const char *word, char *cptr);
+    void            snmpv3_privtype_conf(const char *word, char *cptr);
 
 #ifdef __cplusplus
 }
diff --git a/include/net-snmp/library/snmpv3.h b/include/net-snmp/library/snmpv3.h
index e248441..a958809 100644
--- a/include/net-snmp/library/snmpv3.h
+++ b/include/net-snmp/library/snmpv3.h
@@ -9,25 +9,24 @@
 extern          "C" {
 #endif
 
-#define MAX_ENGINEID_LENGTH 128
+#define MAX_ENGINEID_LENGTH 32 /* per SNMP-FRAMEWORK-MIB SnmpEngineID TC */
 
 #define ENGINEID_TYPE_IPV4    1
 #define ENGINEID_TYPE_IPV6    2
 #define ENGINEID_TYPE_MACADDR 3
 #define ENGINEID_TYPE_TEXT    4
+#define ENGINEID_TYPE_EXACT   5
 #define ENGINEID_TYPE_NETSNMP_RND 128
 
 #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 *);
     void            engineIDType_conf(const char *, char *);
     void            engineIDNic_conf(const char *, char *);
-    void            snmpv3_authtype_conf(const char *word, char *cptr);
-    void            snmpv3_privtype_conf(const char *word, char *cptr);
-    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,
@@ -39,18 +38,21 @@
     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);
-    const oid      *get_default_authtype(size_t *);
-    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 f32c43f..ac5052e 100644
--- a/include/net-snmp/library/system.h
+++ b/include/net-snmp/library/system.h
@@ -47,15 +47,19 @@
      * Returns: -1 : fork failed
      *           0 : No errors
      */
+    NETSNMP_IMPORT
     int netsnmp_daemonize(int quit_immediately, int stderr_log);
 
     /*
      * Definitions for the system dependent library file
+     *
+     * Do not define 'struct direct' when MSVC_PERL is defined because a
+     * structure with that name is also defined in the Perl header
+     * lib\CORE\dirent.h. Do not declare gettimeofday() either.
      */
 #ifndef MSVC_PERL
-#ifdef WIN32
 
-#ifndef HAVE_DIRENT_H /* MingGW has dirent.h but also defines WIN32 */
+#ifndef HAVE_READDIR
     /*
      * structure of a directory entry 
      */
@@ -76,49 +80,90 @@
         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_DIRENT_H */
+#endif /* HAVE_READDIR */
 
 #ifndef HAVE_GETTIMEOFDAY
+    NETSNMP_IMPORT
     int             gettimeofday(struct timeval *, struct timezone *tz);
 #endif
-#ifndef HAVE_STRNCASECMP
+
+#endif                         /* MSVC_PERL */
+
+/*
+ * 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()
-
 #else                           /* !WIN32 */
-
 #define SOCK_STARTUP
 #define SOCK_CLEANUP
-
 #endif                          /* WIN32 */
-#endif				/* MSVC_PERL */
 
 #include <net-snmp/types.h>     /* For definition of in_addr_t */
 
+    /* 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 versions of dns resoloution.. may include DNSSEC validation. */
+    struct addrinfo; /* forward declare */
+    NETSNMP_IMPORT
+    struct hostent *netsnmp_gethostbyname(const char *name);
+
+    NETSNMP_IMPORT
+    struct hostent *netsnmp_gethostbyaddr(const void *addr, socklen_t len,
+                                          int type);
+
+    NETSNMP_IMPORT
+    int             netsnmp_getaddrinfo(const char *name, const char *service,
+                                        const struct addrinfo *hints,
+                                        struct addrinfo **res);
+
+    NETSNMP_IMPORT
     in_addr_t       get_myaddr(void);
+    NETSNMP_IMPORT
     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 *);
@@ -129,17 +174,24 @@
 #ifndef HAVE_STRTOUL
     unsigned long   strtoul(const char *, char **, int);
 #endif
+#ifndef HAVE_STRTOULL
+    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
@@ -151,6 +203,11 @@
                                         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
 }
 #endif
diff --git a/include/net-snmp/library/testing.h b/include/net-snmp/library/testing.h
new file mode 100644
index 0000000..ec6135a
--- /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) do { printf("%s %d - %s\n", ((isok) ? "ok" : "not ok"), ++__test_counter, description); } while (0)
+
+#define OKF(isok, description) do { printf("%s %d - ", ((isok) ? "ok" : "not ok"), ++__test_counter); printf description; printf("\n"); } while (0)
+
+#define PLAN(number) do { printf("1..%d\n", number); __did_plan = 1; } while (0)
+
+#endif /* NETSNMP_LIBRARY_TESTING_H */
diff --git a/include/net-snmp/library/tools.h b/include/net-snmp/library/tools.h
index 93e05b0..2634b34 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,15 @@
     NETSNMP_IMPORT
     void           *netsnmp_memdup(const void * from, size_t size);
 
+    void            netsnmp_check_definedness(const void *packet,
+                                              size_t length);
+
+    NETSNMP_IMPORT
+    u_int           netsnmp_binary_to_hex(u_char ** dest, size_t *dest_len,
+                                          int allow_realloc,
+                                          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 +225,59 @@
                                          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
+    void            netsnmp_get_monotonic_clock(struct timeval* tv);
+    NETSNMP_IMPORT
+    void            netsnmp_set_monotonic_marker(marker_t *pm);
+    NETSNMP_IMPORT
+    long            atime_diff(const_marker_t first, const_marker_t second);
+    u_long          uatime_diff(const_marker_t first, const_marker_t second);       /* 1/1000th sec */
+    NETSNMP_IMPORT
+    u_long          uatime_hdiff(const_marker_t first, const_marker_t second);      /* 1/100th sec */
+    NETSNMP_IMPORT
+    int             atime_ready(const_marker_t pm, int delta_ms);
+    NETSNMP_IMPORT
+    int             netsnmp_ready_monotonic(const_marker_t pm, int delta_ms);
+    int             uatime_ready(const_marker_t pm, unsigned int delta_ms);
+
+    int             marker_tticks(const_marker_t pm);
+    int             timeval_tticks(const struct timeval *tv);
     NETSNMP_IMPORT
     char            *netsnmp_getenv(const char *name);
     NETSNMP_IMPORT
@@ -256,6 +286,9 @@
 
     int             netsnmp_addrstr_hton(char *ptr, size_t len);
 
+    NETSNMP_IMPORT
+    int             netsnmp_string_time_to_secs(const char *time_string);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/net-snmp/library/types.h b/include/net-snmp/library/types.h
new file mode 100644
index 0000000..0174291
--- /dev/null
+++ b/include/net-snmp/library/types.h
@@ -0,0 +1,70 @@
+#ifndef NET_SNMP_LIBRARY_TYPES_H
+#define NET_SNMP_LIBRARY_TYPES_H
+
+#ifndef NET_SNMP_CONFIG_H
+#error "Please include <net-snmp/net-snmp-config.h> before this file"
+#endif
+
+
+#include <net-snmp/types.h>
+
+
+typedef struct netsnmp_index_s {
+    size_t          len;
+    oid            *oids;
+} netsnmp_index;
+
+typedef struct netsnmp_void_array_s {
+    size_t          size;
+    void          **array;
+} netsnmp_void_array;
+
+/*
+ * references to various types
+ */
+typedef struct netsnmp_ref_void {
+    void           *val;
+} netsnmp_ref_void;
+
+typedef union {
+    u_long          ul;
+    u_int           ui;
+    u_short         us;
+    u_char          uc;
+    long            sl;
+    int             si;
+    short           ss;
+    char            sc;
+    char           *cp;
+    void           *vp;
+} netsnmp_cvalue;
+
+typedef struct netsnmp_ref_size_t_s {
+    size_t          val;
+}              *netsnmp_ref_size_t;
+
+/*
+ * Structure for holding a set of file descriptors, similar to fd_set.
+ *
+ * This structure however can hold so-called large file descriptors
+ * (>= FD_SETSIZE or 1024) on Unix systems or more than FD_SETSIZE (64)
+ * sockets on Windows systems.
+ *
+ * It is safe to allocate this structure on the stack.
+ *
+ * This structure must be initialized by calling netsnmp_large_fd_set_init()
+ * and must be cleaned up via netsnmp_large_fd_set_cleanup(). If this last
+ * function is not called this may result in a memory leak.
+ *
+ * The members of this structure are:
+ * lfs_setsize: maximum set size.
+ * lsf_setptr:  points to lfs_set if lfs_setsize <= FD_SETSIZE, and otherwise
+ *              to dynamically allocated memory.
+ * lfs_set:     file descriptor / socket set data if lfs_setsize <= FD_SETSIZE.
+ */
+typedef struct netsnmp_large_fd_set_s {
+    unsigned        lfs_setsize;
+    fd_set         *lfs_setptr;
+    fd_set          lfs_set;
+} netsnmp_large_fd_set;
+#endif                          /* NET_SNMP_LIBRARY_TYPES_H */
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 09ff5f5..3b54e83 100644
--- a/include/net-snmp/mib_api.h
+++ b/include/net-snmp/mib_api.h
@@ -7,18 +7,101 @@
 
 #include <net-snmp/types.h>
 
+#ifdef __cplusplus
+extern          "C" {
+#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 */
+    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 */
+    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);
+
+#ifdef __cplusplus
+}
+#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>
-
 #include <net-snmp/library/mib.h>
 #ifndef NETSNMP_DISABLE_MIB_LOADING
 #include <net-snmp/library/parse.h>
diff --git a/include/net-snmp/net-snmp-config.h.in b/include/net-snmp/net-snmp-config.h.in
index 3c5d7c2..1db0237 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.in by autoheader.  */
+/* 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
@@ -24,246 +28,29 @@
  */
 #ifndef NETSNMP_NO_AUTOCONF_DEFINITIONS
 
-/* define if you have type int32_t */
-#undef HAVE_INT32_T
-
-/* define if you have type uint32_t */
-#undef HAVE_UINT32_T
-
-/* define if you have type u_int32_t */
-#undef HAVE_U_INT32_T
-
-/* define if you have type int64_t */
-#undef HAVE_INT64_T
-
-/* define if you have type uint64_t */
-#undef HAVE_UINT64_T
-
-/* define if you have type u_int64_t */
-#undef HAVE_U_INT64_T
-
-/* define if you have type intptr_t */
-#undef HAVE_INTPTR_T
-
-/* define if you have type uintptr_t */
-#undef HAVE_UINTPTR_T
-
-/* got socklen_t? */
-#undef HAVE_SOCKLEN_T
-
-/* got in_addr_t? */
-#undef HAVE_IN_ADDR_T
-
-/* define if you have getdevs() */
-#undef HAVE_GETDEVS
-
-/* define if you have devstat_getdevs() */
-#undef HAVE_DEVSTAT_GETDEVS
-
-/* define if you have <netinet/in_pcb.h> */
-#undef HAVE_NETINET_IN_PCB_H
-
-/* define if you have <sys/disklabel.h> */
-#undef HAVE_SYS_DISKLABEL_H
-
-/* define if your compiler (processor) defines __FUNCTION__ for you */
-#undef HAVE_CPP_UNDERBAR_FUNCTION_DEFINED
-
-/* on aix, if you have perfstat */
-#undef HAVE_PERFSTAT
-
-/* define if you have libdb, libnm or librpm, respectively */
-#undef HAVE_LIBDB
-#undef HAVE_LIBNM
-#undef HAVE_LIBRPM
-
-/* define if you have pkginfo */
-#undef HAVE_PKGINFO
-
-/* define if you have gethostbyname */
-#undef HAVE_GETHOSTBYNAME
-
-/* define if you have the perl_eval_pv() function */
-#undef HAVE_PERL_EVAL_PV_LC
-
-/* define if you have the Perl_eval_pv() function */
-#undef HAVE_PERL_EVAL_PV_UC
-
-/* printing system */
-#undef HAVE_LPSTAT
-#undef LPSTAT_PATH
-#undef HAVE_PRINTCAP
-/* Use dmalloc to do malloc debugging? */
-#undef HAVE_DMALLOC_H
-
-/* location of UNIX kernel */
-#define KERNEL_LOC "/vmunix"
-
-/* location of mount table list */
-#define ETC_MNTTAB "/etc/mnttab"
-
-/* location of swap device (ok if not found) */
-#undef DMEM_LOC
-
-/* Command to generate ps output, the final column must be the process
-   name withOUT arguments */
-#define PSCMD "/bin/ps"
-
-/* Where is the uname command */
-#define UNAMEPROG "/bin/uname"
-
-/* define if you are using linux and /proc/net/dev has the compressed
-   field, which exists in linux kernels 2.2 and greater. */
-#undef PROC_NET_DEV_HAS_COMPRESSED
-
-/* define rtentry to ortentry on SYSV machines (alphas) */
-#undef RTENTRY
-
-/* Use BSD 4.4 routing table entries? */
-#undef RTENTRY_4_4
-
-/* Does struct sigaction have a sa_sigaction field? */
-#undef STRUCT_SIGACTION_HAS_SA_SIGACTION
-
-/* Does struct tm have a tm_gmtoff field? */
-#undef STRUCT_TM_HAS_TM_GMTOFFF
-
-/* Does struct sockaddr have a sa_len field? */
-#undef STRUCT_SOCKADDR_HAS_SA_LEN
-
-/* Does struct sockaddr have a sa_family2 field? */
-#undef STRUCT_SOCKADDR_HAS_SA_UNION_SA_GENERIC_SA_FAMILY2
-
-/* Does struct sockaddr_storage have a ss_family field? */
-#undef STRUCT_SOCKADDR_STORAGE_HAS_SS_FAMILY
-
-/* Does struct sockaddr_storage have a __ss_family field? */
-#undef STRUCT_SOCKADDR_STORAGE_HAS___SS_FAMILY
-
-/* Does struct in6_addr have a s6_un.sa6_ladd field? */
-#undef STRUCT_IN6_ADDR_HAS_S6_UN_SA6_LADDR
-
-/* rtentry structure tests */
-#undef RTENTRY_RT_NEXT
-#undef STRUCT_RTENTRY_HAS_RT_DST
-#undef STRUCT_RTENTRY_HAS_RT_UNIT
-#undef STRUCT_RTENTRY_HAS_RT_USE
-#undef STRUCT_RTENTRY_HAS_RT_REFCNT
-#undef STRUCT_RTENTRY_HAS_RT_HASH
-
-/* ifnet structure tests */
-#undef STRUCT_IFNET_HAS_IF_BAUDRATE
-#undef STRUCT_IFNET_HAS_IF_BAUDRATE_IFS_VALUE
-#undef STRUCT_IFNET_HAS_IF_SPEED
-#undef STRUCT_IFNET_HAS_IF_TYPE
-#undef STRUCT_IFNET_HAS_IF_IMCASTS
-#undef STRUCT_IFNET_HAS_IF_IQDROPS
-#undef STRUCT_IFNET_HAS_IF_LASTCHANGE_TV_SEC
-#undef STRUCT_IFNET_HAS_IF_LASTCHANGE_TV_NSEC
-#undef STRUCT_IFNET_HAS_IF_NOPROTO
-#undef STRUCT_IFNET_HAS_IF_OMCASTS
-#undef STRUCT_IFNET_HAS_IF_XNAME
-#undef STRUCT_IFNET_HAS_IF_OBYTES
-#undef STRUCT_IFNET_HAS_IF_IBYTES
-#undef STRUCT_IFNET_HAS_IF_ADDRLIST
-
-/* tcpstat.tcps_rcvmemdrop */
-#undef STRUCT_TCPSTAT_HAS_TCPS_RCVMEMDROP
-
-/* udpstat.udps_discard */
-#undef STRUCT_UDPSTAT_HAS_UDPS_DISCARD
-
-/* udpstat.udps_discard */
-#undef STRUCT_UDPSTAT_HAS_UDPS_NOPORT
-
-/* udpstat.udps_discard */
-#undef STRUCT_UDPSTAT_HAS_UDPS_NOPORTBCAST
-
-/* udpstat.udps_discard */
-#undef STRUCT_UDPSTAT_HAS_UDPS_FULLSOCK
-
-/* arphd.at_next */
-#undef STRUCT_ARPHD_HAS_AT_NEXT
-
-/* ifaddr.ifa_next */
-#undef STRUCT_IFADDR_HAS_IFA_NEXT
-
-/* ifnet.if_mtu */
-#undef STRUCT_IFNET_HAS_IF_MTU
-
-/* swdevt.sw_nblksenabled */
-#undef STRUCT_SWDEVT_HAS_SW_NBLKSENABLED
-
-/* nlist.n_value */
-#undef STRUCT_NLIST_HAS_N_VALUE
-
-/* nlist64.n_value */
-#undef STRUCT_NLIST64_HAS_N_VALUE
-
-/* ipstat structure tests */
-#undef STRUCT_IPSTAT_HAS_IPS_CANTFORWARD
-#undef STRUCT_IPSTAT_HAS_IPS_CANTFRAG
-#undef STRUCT_IPSTAT_HAS_IPS_DELIVERED
-#undef STRUCT_IPSTAT_HAS_IPS_FRAGDROPPED
-#undef STRUCT_IPSTAT_HAS_IPS_FRAGTIMEOUT
-#undef STRUCT_IPSTAT_HAS_IPS_LOCALOUT
-#undef STRUCT_IPSTAT_HAS_IPS_NOPROTO
-#undef STRUCT_IPSTAT_HAS_IPS_NOROUTE
-#undef STRUCT_IPSTAT_HAS_IPS_ODROPPED
-#undef STRUCT_IPSTAT_HAS_IPS_OFRAGMENTS
-#undef STRUCT_IPSTAT_HAS_IPS_REASSEMBLED
-
-/* vfsstat.f_frsize */
-#undef STRUCT_STATVFS_HAS_F_FRSIZE
-
-/* vfsstat.f_files */
-#undef STRUCT_STATVFS_HAS_F_FILES
-
-/* statfs inode structure tests*/
-#undef STRUCT_STATFS_HAS_F_FILES
-#undef STRUCT_STATFS_HAS_F_FFREE
-#undef STRUCT_STATFS_HAS_F_FAVAIL
-
-/* des_ks_struct.weak_key */
-#undef STRUCT_DES_KS_STRUCT_HAS_WEAK_KEY
-
-/* ifnet needs to have _KERNEL defined */
-#undef IFNET_NEEDS_KERNEL
-
-/* sysctl works to get boottime, etc... */
-#undef NETSNMP_CAN_USE_SYSCTL
-
-/* define if SIOCGIFADDR exists in sys/ioctl.h */
-#undef SYS_IOCTL_H_HAS_SIOCGIFADDR
-
-/* Define if statfs takes 2 args and the second argument has
-   type struct fs_data. [Ultrix] */
-#undef STAT_STATFS_FS_DATA
-
-/* Define if the TCP timer constants in <netinet/tcp_timer.h>
-   depend on the integer variable `hz'.  [FreeBSD 4.x] */
-#undef TCPTV_NEEDS_HZ
-
-/* Not-to-be-compiled macros for use by configure only */
-#define config_require(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)
-#define config_error(x)
-#define config_warning(x)
-  
-#if defined (WIN32) || defined (mingw32) || defined (cygwin)
-#define ENV_SEPARATOR ";"
-#define ENV_SEPARATOR_CHAR ';'
-#else
-#define ENV_SEPARATOR ":"
-#define ENV_SEPARATOR_CHAR ':'
-#endif
-
 /* definitions added by configure on-the-fly */
 
+#define config_belongs_in(x)
+
+#define config_exclude(x)
+
+#define config_arch_require(x,y)
+
+#define config_version_require(x)
+
+#define config_require(x)
+
+#define config_add_mib(x)
+
+#define config_parse_dot_conf(w,x,y,z)
+
+#define config_error(x)
+
+#define config_warning(x)
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
 /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
    systems. This function is required for `alloca.c' support on those systems.
    */
@@ -272,6 +59,21 @@
 /* Define to 1 if using `alloca.c'. */
 #undef C_ALLOCA
 
+/* location of swap device */
+#undef DMEM_LOC
+
+/* Define if you want local DNSSEC validation support */
+#undef DNSSEC_LOCAL_VALIDATION
+
+/* Environment separator character surrounded by double quotes. */
+#undef ENV_SEPARATOR
+
+/* Environment separator character surrounded by single quotes. */
+#undef ENV_SEPARATOR_CHAR
+
+/* location of mount table list */
+#undef ETC_MNTTAB
+
 /* Define to 1 if you have the `AES_cfb128_encrypt' function. */
 #undef HAVE_AES_CFB128_ENCRYPT
 
@@ -291,8 +93,8 @@
 /* Define to 1 if you have the <asm/types.h> header file. */
 #undef HAVE_ASM_TYPES_H
 
-/* Define to 1 if you have the `bcopy' function. */
-#undef HAVE_BCOPY
+/* Define if using MY_INIT() causes a linker error */
+#undef HAVE_BROKEN_LIBMYSQLCLIENT
 
 /* Define to 1 if you have the `cgetnext' function. */
 #undef HAVE_CGETNEXT
@@ -300,9 +102,28 @@
 /* Define to 1 if you have the `chown' function. */
 #undef HAVE_CHOWN
 
+/* Define to 1 if you have the `clock_gettime' library */
+#undef HAVE_CLOCK_GETTIME
+
+/* Define to 1 if you have the `closedir' function. */
+#undef HAVE_CLOSEDIR
+
+/* Define to 1 if you have the <com_err.h> header file. */
+#undef HAVE_COM_ERR_H
+
 /* Define to 1 if the system has the type `Counter64'. */
 #undef HAVE_COUNTER64
 
+/* Define to 1 if you have the declaration of `sensors_get_all_subfeatures',
+   and to 0 if you don't. */
+#undef HAVE_DECL_SENSORS_GET_ALL_SUBFEATURES
+
+/* define to 1 if you have IRE_CACHE defined in <inet/ip.h> header file. */
+#undef HAVE_DEFINED_IRE_CACHE
+
+/* define if you have devstat_getdevs() */
+#undef HAVE_DEVSTAT_GETDEVS
+
 /* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
    */
 #undef HAVE_DIRENT_H
@@ -313,9 +134,18 @@
 /* Define to 1 if you have the `dlopen' function. */
 #undef HAVE_DLOPEN
 
+/* 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
 
+/* Define to 1 if you have the <et/com_err.h> header file. */
+#undef HAVE_ET_COM_ERR_H
+
 /* Define to 1 if you have the `eval_pv' function. */
 #undef HAVE_EVAL_PV
 
@@ -325,24 +155,42 @@
 /* Define to 1 if you have the `EVP_MD_CTX_destroy' function. */
 #undef HAVE_EVP_MD_CTX_DESTROY
 
+/* Define if you have EVP_sha224/256 in openssl */
+#undef HAVE_EVP_SHA224
+
+/* Define if you have EVP_sha384/256 in openssl */
+#undef HAVE_EVP_SHA384
+
 /* Define to 1 if you have the `execv' function. */
 #undef HAVE_EXECV
 
 /* Define to 1 if you have the <fcntl.h> header file. */
 #undef HAVE_FCNTL_H
 
+/* Define to 1 if you have the `fgetc_unlocked' function. */
+#undef HAVE_FGETC_UNLOCKED
+
+/* Define to 1 if you have the `flockfile' function. */
+#undef HAVE_FLOCKFILE
+
 /* Define to 1 if you have the `fork' function. */
 #undef HAVE_FORK
 
 /* Define to 1 if you have the <fstab.h> header file. */
 #undef HAVE_FSTAB_H
 
+/* Define to 1 if you have the `funlockfile' function. */
+#undef HAVE_FUNLOCKFILE
+
 /* Define to 1 if you have the `gai_strerror' function. */
 #undef HAVE_GAI_STRERROR
 
 /* Define to 1 if you have the `getaddrinfo' function. */
 #undef HAVE_GETADDRINFO
 
+/* define if you have getdevs() */
+#undef HAVE_GETDEVS
+
 /* Define to 1 if you have the `getdtablesize' function. */
 #undef HAVE_GETDTABLESIZE
 
@@ -352,6 +200,15 @@
 /* Define to 1 if you have the `getgrnam' function. */
 #undef HAVE_GETGRNAM
 
+/* Define to 1 if you have the `gethostbyaddr' function. */
+#undef HAVE_GETHOSTBYADDR
+
+/* Define to 1 if you have the `gethostbyname' function. */
+#undef HAVE_GETHOSTBYNAME
+
+/* Define to 1 if you have the `gethostbyname2' function. */
+#undef HAVE_GETHOSTBYNAME2
+
 /* Define to 1 if you have the `gethostname' function. */
 #undef HAVE_GETHOSTNAME
 
@@ -364,6 +221,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
 
@@ -379,6 +239,9 @@
 /* Define to 1 if you have the `gettimeofday' function. */
 #undef HAVE_GETTIMEOFDAY
 
+/* Define to 1 if you have the `getvfsstat' function. */
+#undef HAVE_GETVFSSTAT
+
 /* Define to 1 if you have the <grp.h> header file. */
 #undef HAVE_GRP_H
 
@@ -388,29 +251,32 @@
 /* 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
 
 /* Define to 1 if you have the `if_nametoindex' function. */
 #undef HAVE_IF_NAMETOINDEX
 
-/* Define to 1 if you have the `index' function. */
-#undef HAVE_INDEX
+/* Define to 1 if you have the <inet/common.h> header file. */
+#undef HAVE_INET_COMMON_H
+
+/* Define to 1 if you have the <inet/ip.h> header file. */
+#undef HAVE_INET_IP_H
 
 /* Define to 1 if you have the <inet/mib2.h> header file. */
 #undef HAVE_INET_MIB2_H
 
-/* Define to 1 if the system has the type `int16_t'. */
-#undef HAVE_INT16_T
+/* Define to 1 if you have the `inet_ntop' function. */
+#undef HAVE_INET_NTOP
 
-/* Define to 1 if the system has the type `int32_t'. */
-#undef HAVE_INT32_T
+/* Define to 1 if you have the `inet_pton' function. */
+#undef HAVE_INET_PTON
 
-/* Define to 1 if the system has the type `int64_t'. */
-#undef HAVE_INT64_T
-
-/* Define to 1 if the system has the type `int8_t'. */
-#undef HAVE_INT8_T
+/* Define to 1 if you have the `initgroups' function. */
+#undef HAVE_INITGROUPS
 
 /* Define to 1 if the system has the type `intmax_t'. */
 #undef HAVE_INTMAX_T
@@ -421,21 +287,42 @@
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
+/* Define to 1 if the system has the type `in_addr_t'. */
+#undef HAVE_IN_ADDR_T
+
 /* Define to 1 if you have the <ioctls.h> header file. */
 #undef HAVE_IOCTLS_H
 
 /* Define to 1 if you have the <io.h> header file. */
 #undef HAVE_IO_H
 
+/* 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
+
 /* Define to 1 if you have the `kinfo_get_cpus' function. */
 #undef HAVE_KINFO_GET_CPUS
 
+/* Define if you have /dev/kmem */
+#undef HAVE_KMEM
+
 /* Define to 1 if you have the `knlist' function. */
 #undef HAVE_KNLIST
 
+/* Define to 1 if you have the `krb5_auth_con_getsendsubkey' function. */
+#undef HAVE_KRB5_AUTH_CON_GETSENDSUBKEY
+
 /* Define to 1 if you have the <kstat.h> header file. */
 #undef HAVE_KSTAT_H
 
+/* Define to 1 if you have the `kvm_getproc2' function. */
+#undef HAVE_KVM_GETPROC2
+
 /* Define to 1 if you have the `kvm_getprocs' function. */
 #undef HAVE_KVM_GETPROCS
 
@@ -448,30 +335,24 @@
 /* Define to 1 if you have the `kvm_openfiles' function. */
 #undef HAVE_KVM_OPENFILES
 
-/* Define to 1 if you have the `crypto' library (-lcrypto). */
+/* Define to 1 if you have the OpenSSL library (-lcrypto or -leay32). */
 #undef HAVE_LIBCRYPTO
 
-/* Define to 1 if you have the `dl' library (-ldl). */
-#undef HAVE_LIBDL
-
-/* Define to 1 if you have the `efence' library (-lefence). */
-#undef HAVE_LIBEFENCE
-
 /* Define to 1 if you have the `elf' library (-lelf). */
 #undef HAVE_LIBELF
 
 /* Define to 1 if you have the `kstat' library (-lkstat). */
 #undef HAVE_LIBKSTAT
 
-/* Define to 1 if you have the `kvm' library (-lkvm). */
-#undef HAVE_LIBKVM
-
-/* Define to 1 if you have the `m' library (-lm). */
-#undef HAVE_LIBM
-
 /* 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
+
 /* Define to 1 if you have the `nsl' library (-lnsl). */
 #undef HAVE_LIBNSL
 
@@ -481,12 +362,33 @@
 /* Define to 1 if you have the `pkcs11' library (-lpkcs11). */
 #undef HAVE_LIBPKCS11
 
+/* define if you have BSD pkg-ng */
+#undef HAVE_LIBPKG
+
+/* Define to 1 if you have the `pthread' library (-lpthread). */
+#undef HAVE_LIBPTHREAD
+
+/* Define to 1 if you have the `rpm' library (-lrpm). */
+#undef HAVE_LIBRPM
+
 /* Define to 1 if you have the `RSAglue' library (-lRSAglue). */
 #undef HAVE_LIBRSAGLUE
 
 /* Define to 1 if you have the `rsaref' library (-lrsaref). */
 #undef HAVE_LIBRSAREF
 
+/* Define to 1 if you have the `sres' library (-lsres). */
+#undef HAVE_LIBSRES
+
+/* Define to 1 if you have the `ssh2' library (-lssh2). */
+#undef HAVE_LIBSSH2
+
+/* 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
 
@@ -496,6 +398,12 @@
 /* Define to 1 if you have the <linux/hdreg.h> header file. */
 #undef HAVE_LINUX_HDREG_H
 
+/* Define to 1 if you have the <linux/netlink.h> header file. */
+#undef HAVE_LINUX_NETLINK_H
+
+/* Define to 1 if you have the <linux/rtnetlink.h> header file. */
+#undef HAVE_LINUX_RTNETLINK_H
+
 /* Define to 1 if you have the <linux/tasks.h> header file. */
 #undef HAVE_LINUX_TASKS_H
 
@@ -505,6 +413,12 @@
 /* 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
+
+/* Set if the lpstat command is available */
+#undef HAVE_LPSTAT
+
 /* Define to 1 if you have the `lrand48' function. */
 #undef HAVE_LRAND48
 
@@ -523,15 +437,12 @@
 /* Define to 1 if you have the <malloc.h> header file. */
 #undef HAVE_MALLOC_H
 
-/* Define to 1 if you have the `memcpy' function. */
-#undef HAVE_MEMCPY
-
-/* Define to 1 if you have the `memmove' function. */
-#undef HAVE_MEMMOVE
-
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
+/* Define to 1 if the system has the type `mib2_ipIfStatsEntry_t'. */
+#undef HAVE_MIB2_IPIFSTATSENTRY_T
+
 /* Define to 1 if you have the `mkstemp' function. */
 #undef HAVE_MKSTEMP
 
@@ -544,6 +455,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
 
@@ -574,6 +488,9 @@
 /* Define to 1 if you have the <netinet6/tcp6_var.h> header file. */
 #undef HAVE_NETINET6_TCP6_VAR_H
 
+/* Define to 1 if you have the <netinet/icmp6.h> header file. */
+#undef HAVE_NETINET_ICMP6_H
+
 /* Define to 1 if you have the <netinet/icmp_var.h> header file. */
 #undef HAVE_NETINET_ICMP_VAR_H
 
@@ -583,6 +500,9 @@
 /* Define to 1 if you have the <netinet/in.h> header file. */
 #undef HAVE_NETINET_IN_H
 
+/* Define to 1 if you have the <netinet/in_pcb.h> header file. */
+#undef HAVE_NETINET_IN_PCB_H
+
 /* Define to 1 if you have the <netinet/in_systm.h> header file. */
 #undef HAVE_NETINET_IN_SYSTM_H
 
@@ -625,6 +545,9 @@
 /* Define to 1 if you have the <netipx/ipx.h> header file. */
 #undef HAVE_NETIPX_IPX_H
 
+/* Define to 1 if you have the <netlink/netlink.h> header file. */
+#undef HAVE_NETLINK_NETLINK_H
+
 /* Define to 1 if you have the <net/if_arp.h> header file. */
 #undef HAVE_NET_IF_ARP_H
 
@@ -646,6 +569,9 @@
 /* Define to 1 if you have the <net/route.h> header file. */
 #undef HAVE_NET_ROUTE_H
 
+/* Define to 1 if the system has the type `nfds_t'. */
+#undef HAVE_NFDS_T
+
 /* Define to 1 if you have the `nlist' function. */
 #undef HAVE_NLIST
 
@@ -658,6 +584,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
 
@@ -676,21 +605,45 @@
 /* Define to 1 if you have the <osreldate.h> header file. */
 #undef HAVE_OSRELDATE_H
 
+/* define if you have pci_lookup_name() */
+#undef HAVE_PCI_LOOKUP_NAME
+
 /* Define to 1 if you have the <pci/pci.h> header file. */
 #undef HAVE_PCI_PCI_H
 
+/* on aix, if you have perfstat */
+#undef HAVE_PERFSTAT
+
+/* Define to 1 if you have `the perl_eval_pv' function. */
+#undef HAVE_PERL_EVAL_PV_LC
+
+/* Define to 1 if you have the `Perl_eval_pv' function. */
+#undef HAVE_PERL_EVAL_PV_UC
+
 /* Define to 1 if you have the <picl.h> header file. */
 #undef HAVE_PICL_H
 
+/* define if you have pkginfo */
+#undef HAVE_PKGINFO
+
 /* Define to 1 if you have the <pkginfo.h> header file. */
 #undef HAVE_PKGINFO_H
 
 /* Define to 1 if you have the <pkglocs.h> header file. */
 #undef HAVE_PKGLOCS_H
 
+/* Define to 1 if you have the <pkg.h> header file. */
+#undef HAVE_PKG_H
+
+/* Define to 1 if you have the `poll' function. */
+#undef HAVE_POLL
+
 /* Define to 1 if you have the `pread64' function. */
 #undef HAVE_PREAD64
 
+/* Set if /etc/printcap exists */
+#undef HAVE_PRINTCAP
+
 /* Define to 1 if you have the <pthread.h> header file. */
 #undef HAVE_PTHREAD_H
 
@@ -703,6 +656,9 @@
 /* Define to 1 if you have the `random' function. */
 #undef HAVE_RANDOM
 
+/* Define to 1 if you have the `readdir' function. */
+#undef HAVE_READDIR
+
 /* Define to 1 if you have the `regcomp' function. */
 #undef HAVE_REGCOMP
 
@@ -715,6 +671,9 @@
 /* Define to 1 if you have the <rpm/header.h> header file. */
 #undef HAVE_RPM_HEADER_H
 
+/* Define to 1 if you have the <rpm/rpmfileutil.h> header file. */
+#undef HAVE_RPM_RPMFILEUTIL_H
+
 /* Define to 1 if you have the <rpm/rpmlib.h> header file. */
 #undef HAVE_RPM_RPMLIB_H
 
@@ -730,6 +689,9 @@
 /* Define to 1 if you have the `select' function. */
 #undef HAVE_SELECT
 
+/* Define to 1 if you have the <sensors/sensors.h> header file. */
+#undef HAVE_SENSORS_SENSORS_H
+
 /* Define to 1 if you have the `setenv' function. */
 #undef HAVE_SETENV
 
@@ -769,9 +731,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
 
@@ -781,7 +749,10 @@
 /* Define to 1 if you have the `socket' function. */
 #undef HAVE_SOCKET
 
-/* Define if type ssize_t is available */
+/* Define to 1 if the system has the type `socklen_t'. */
+#undef HAVE_SOCKLEN_T
+
+/* Define to 1 if the system has the type `ssize_t'. */
 #undef HAVE_SSIZE_T
 
 /* Define to 1 if you have the `statfs' function. */
@@ -790,9 +761,6 @@
 /* Define to 1 if you have the `statvfs' function. */
 #undef HAVE_STATVFS
 
-/* Define to 1 if you have the <stdarg.h> header file. */
-#undef HAVE_STDARG_H
-
 /* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H
 
@@ -805,9 +773,6 @@
 /* Define to 1 if you have the `strcasestr' function. */
 #undef HAVE_STRCASESTR
 
-/* Define to 1 if you have the `strchr' function. */
-#undef HAVE_STRCHR
-
 /* Define to 1 if you have the `strdup' function. */
 #undef HAVE_STRDUP
 
@@ -838,12 +803,220 @@
 /* Define to 1 if you have the `strtoul' function. */
 #undef HAVE_STRTOUL
 
-/* Define to 1 if `speed_hi' is member of `struct ethtool_cmd'. */
+/* Define to 1 if you have the `strtoull' function. */
+#undef HAVE_STRTOULL
+
+/* Define to 1 if `at_next' is a member of `struct arphd'. */
+#undef HAVE_STRUCT_ARPHD_AT_NEXT
+
+/* Define to 1 if `weak_key' is a member of `struct des_ks_struct'. */
+#undef HAVE_STRUCT_DES_KS_STRUCT_WEAK_KEY
+
+/* Define to 1 if `d_type' is a member of `struct dirent'. */
+#undef HAVE_STRUCT_DIRENT_D_TYPE
+
+/* Define to 1 if `speed_hi' is a member of `struct ethtool_cmd'. */
 #undef HAVE_STRUCT_ETHTOOL_CMD_SPEED_HI
 
-/* Define to 1 if `sin6_scope_id' is member of `struct sockaddr_in6'. */
+/* Define to 1 if `ifa_next' is a member of `struct ifaddr'. */
+#undef HAVE_STRUCT_IFADDR_IFA_NEXT
+
+/* Define to 1 if `if_addrhead.tqh_first' is a member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_ADDRHEAD_TQH_FIRST
+
+/* Define to 1 if `if_addrlist' is a member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_ADDRLIST
+
+/* Define to 1 if `if_baudrate' is a member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_BAUDRATE
+
+/* Define to 1 if `if_baudrate.ifs_value' is a member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_BAUDRATE_IFS_VALUE
+
+/* Define to 1 if `if_ibytes' is a member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_IBYTES
+
+/* Define to 1 if `if_imcasts' is a member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_IMCASTS
+
+/* Define to 1 if `if_iqdrops' is a member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_IQDROPS
+
+/* Define to 1 if `if_lastchange.tv_nsec' is a member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_LASTCHANGE_TV_NSEC
+
+/* Define to 1 if `if_lastchange.tv_sec' is a member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_LASTCHANGE_TV_SEC
+
+/* Define to 1 if `if_mtu' is a member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_MTU
+
+/* Define to 1 if `if_noproto' is a member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_NOPROTO
+
+/* Define to 1 if `if_obytes' is a member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_OBYTES
+
+/* Define to 1 if `if_omcasts' is a member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_OMCASTS
+
+/* Define to 1 if `if_speed' is a member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_SPEED
+
+/* Define to 1 if `if_type' is a member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_TYPE
+
+/* Define to 1 if `if_xname' is a member of `struct ifnet'. */
+#undef HAVE_STRUCT_IFNET_IF_XNAME
+
+/* Define to 1 if `ip6s_exthdrtoolong ' is a member of `struct ip6stat'. */
+#undef HAVE_STRUCT_IP6STAT_IP6S_EXTHDRTOOLONG_
+
+/* Define to 1 if `ips_cantforward' is a member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_CANTFORWARD
+
+/* Define to 1 if `ips_cantfrag' is a member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_CANTFRAG
+
+/* Define to 1 if `ips_delivered' is a member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_DELIVERED
+
+/* Define to 1 if `ips_fragdropped' is a member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_FRAGDROPPED
+
+/* Define to 1 if `ips_fragmented' is a member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_FRAGMENTED
+
+/* Define to 1 if `ips_fragtimeout' is a member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_FRAGTIMEOUT
+
+/* Define to 1 if `ips_localout' is a member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_LOCALOUT
+
+/* Define to 1 if `ips_noproto' is a member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_NOPROTO
+
+/* Define to 1 if `ips_noroute' is a member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_NOROUTE
+
+/* Define to 1 if `ips_odropped' is a member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_ODROPPED
+
+/* Define to 1 if `ips_ofragments' is a member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_OFRAGMENTS
+
+/* Define to 1 if `ips_reassembled' is a member of `struct ipstat'. */
+#undef HAVE_STRUCT_IPSTAT_IPS_REASSEMBLED
+
+/* Define to 1 if `m_clfree' is a member of `struct mbstat'. */
+#undef HAVE_STRUCT_MBSTAT_M_CLFREE
+
+/* Define to 1 if `m_clusters' is a member of `struct mbstat'. */
+#undef HAVE_STRUCT_MBSTAT_M_CLUSTERS
+
+/* Define to 1 if `m_mbufs' is a member of `struct mbstat'. */
+#undef HAVE_STRUCT_MBSTAT_M_MBUFS
+
+/* Define to 1 if `n_value' is a member of `struct nlist64'. */
+#undef HAVE_STRUCT_NLIST64_N_VALUE
+
+/* Define to 1 if `n_value' is a member of `struct nlist'. */
+#undef HAVE_STRUCT_NLIST_N_VALUE
+
+/* Define to 1 if `rt_dst' is a member of `struct rtentry'. */
+#undef HAVE_STRUCT_RTENTRY_RT_DST
+
+/* Define to 1 if `rt_hash' is a member of `struct rtentry'. */
+#undef HAVE_STRUCT_RTENTRY_RT_HASH
+
+/* Define to 1 if `rt_next' is a member of `struct rtentry'. */
+#undef HAVE_STRUCT_RTENTRY_RT_NEXT
+
+/* Define to 1 if `rt_refcnt' is a member of `struct rtentry'. */
+#undef HAVE_STRUCT_RTENTRY_RT_REFCNT
+
+/* Define to 1 if `rt_unit' is a member of `struct rtentry'. */
+#undef HAVE_STRUCT_RTENTRY_RT_UNIT
+
+/* Define to 1 if `rt_use' is a member of `struct rtentry'. */
+#undef HAVE_STRUCT_RTENTRY_RT_USE
+
+/* Define to 1 if `sa_sigaction' is a member of `struct sigaction'. */
+#undef HAVE_STRUCT_SIGACTION_SA_SIGACTION
+
+/* Define to 1 if `sin6_scope_id' is a member of `struct sockaddr_in6'. */
 #undef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID
 
+/* Define to 1 if `sa_len' is a member of `struct sockaddr'. */
+#undef HAVE_STRUCT_SOCKADDR_SA_LEN
+
+/* Define to 1 if `sa_union.sa_generic.sa_family2' is a member of `struct
+   sockaddr'. */
+#undef HAVE_STRUCT_SOCKADDR_SA_UNION_SA_GENERIC_SA_FAMILY2
+
+/* Define to 1 if `ss_family' is a member of `struct sockaddr_storage'. */
+#undef HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY
+
+/* Define to 1 if `__ss_family' is a member of `struct sockaddr_storage'. */
+#undef HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY
+
+/* Define to 1 if `f_favail' is a member of `struct statfs'. */
+#undef HAVE_STRUCT_STATFS_F_FAVAIL
+
+/* Define to 1 if `f_ffree' is a member of `struct statfs'. */
+#undef HAVE_STRUCT_STATFS_F_FFREE
+
+/* Define to 1 if `f_files' is a member of `struct statfs'. */
+#undef HAVE_STRUCT_STATFS_F_FILES
+
+/* Define to 1 if `f_flags' is a member of `struct statfs'. */
+#undef HAVE_STRUCT_STATFS_F_FLAGS
+
+/* Define to 1 if `f_frsize' is a member of `struct statfs'. */
+#undef HAVE_STRUCT_STATFS_F_FRSIZE
+
+/* Define to 1 if `f_files' is a member of `struct statvfs'. */
+#undef HAVE_STRUCT_STATVFS_F_FILES
+
+/* Define to 1 if `f_frsize' is a member of `struct statvfs'. */
+#undef HAVE_STRUCT_STATVFS_F_FRSIZE
+
+/* Define to 1 if `mnt_dir' is a member of `struct statvfs'. */
+#undef HAVE_STRUCT_STATVFS_MNT_DIR
+
+/* Define to 1 if `sw_nblksenabled' is a member of `struct swdevt'. */
+#undef HAVE_STRUCT_SWDEVT_SW_NBLKSENABLED
+
+/* Define to 1 if `tcp_rcvmemdrop' is a member of `struct tcpstat'. */
+#undef HAVE_STRUCT_TCPSTAT_TCP_RCVMEMDROP
+
+/* Define to 1 if `tz_dsttime' is a member of `struct timezone'. */
+#undef HAVE_STRUCT_TIMEZONE_TZ_DSTTIME
+
+/* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */
+#undef HAVE_STRUCT_TM_TM_GMTOFF
+
+/* Define to 1 if `udps_discard' is a member of `struct udpstat'. */
+#undef HAVE_STRUCT_UDPSTAT_UDPS_DISCARD
+
+/* Define to 1 if `udps_fullsock' is a member of `struct udpstat'. */
+#undef HAVE_STRUCT_UDPSTAT_UDPS_FULLSOCK
+
+/* Define to 1 if `udps_ipackets' is a member of `struct udpstat'. */
+#undef HAVE_STRUCT_UDPSTAT_UDPS_IPACKETS
+
+/* Define to 1 if `udps_noport' is a member of `struct udpstat'. */
+#undef HAVE_STRUCT_UDPSTAT_UDPS_NOPORT
+
+/* Define to 1 if `udps_noportbcast' is a member of `struct udpstat'. */
+#undef HAVE_STRUCT_UDPSTAT_UDPS_NOPORTBCAST
+
+/* Define to 1 if `udps_opackets' is a member of `struct udpstat'. */
+#undef HAVE_STRUCT_UDPSTAT_UDPS_OPACKETS
+
+/* Define to 1 if `pgswapin' is a member of `struct uvmexp'. */
+#undef HAVE_STRUCT_UVMEXP_PGSWAPIN
+
 /* Define to 1 if you have the `sysconf' function. */
 #undef HAVE_SYSCONF
 
@@ -866,6 +1039,9 @@
 /* Define to 1 if you have the <sys/diskio.h> header file. */
 #undef HAVE_SYS_DISKIO_H
 
+/* Define to 1 if you have the <sys/disklabel.h> header file. */
+#undef HAVE_SYS_DISKLABEL_H
+
 /* Define to 1 if you have the <sys/dkio.h> header file. */
 #undef HAVE_SYS_DKIO_H
 
@@ -915,6 +1091,9 @@
 /* Define to 1 if you have the <sys/param.h> header file. */
 #undef HAVE_SYS_PARAM_H
 
+/* Define to 1 if you have the <sys/poll.h> header file. */
+#undef HAVE_SYS_POLL_H
+
 /* Define to 1 if you have the <sys/pool.h> header file. */
 #undef HAVE_SYS_POOL_H
 
@@ -978,6 +1157,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
 
@@ -1032,6 +1214,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
 
@@ -1047,18 +1232,6 @@
 /* Define to 1 if you have the <ufs/ufs/quota.h> header file. */
 #undef HAVE_UFS_UFS_QUOTA_H
 
-/* Define to 1 if the system has the type `uint16_t'. */
-#undef HAVE_UINT16_T
-
-/* Define to 1 if the system has the type `uint32_t'. */
-#undef HAVE_UINT32_T
-
-/* Define to 1 if the system has the type `uint64_t'. */
-#undef HAVE_UINT64_T
-
-/* Define to 1 if the system has the type `uint8_t'. */
-#undef HAVE_UINT8_T
-
 /* Define to 1 if the system has the type `uintmax_t'. */
 #undef HAVE_UINTMAX_T
 
@@ -1071,6 +1244,9 @@
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
+/* Define to 1 if the system has the type `unsigned long long int'. */
+#undef HAVE_UNSIGNED_LONG_LONG_INT
+
 /* Define to 1 if you have the `usleep' function. */
 #undef HAVE_USLEEP
 
@@ -1086,17 +1262,14 @@
 /* Define to 1 if you have the <uvm/uvm_param.h> header file. */
 #undef HAVE_UVM_UVM_PARAM_H
 
-/* Define to 1 if the system has the type `u_int16_t'. */
-#undef HAVE_U_INT16_T
+/* Define to 1 if you have the <valgrind/memcheck.h> header file. */
+#undef HAVE_VALGRIND_MEMCHECK_H
 
-/* Define to 1 if the system has the type `u_int32_t'. */
-#undef HAVE_U_INT32_T
+/* Define to 1 if you have the <valgrind/valgrind.h> header file. */
+#undef HAVE_VALGRIND_VALGRIND_H
 
-/* Define to 1 if the system has the type `u_int64_t'. */
-#undef HAVE_U_INT64_T
-
-/* Define to 1 if the system has the type `u_int8_t'. */
-#undef HAVE_U_INT8_T
+/* Define to 1 if you have the <validator/validator-config.h> header file. */
+#undef HAVE_VALIDATOR_VALIDATOR_CONFIG_H
 
 /* Define to 1 if you have the <vm/swap_pager.h> header file. */
 #undef HAVE_VM_SWAP_PAGER_H
@@ -1113,18 +1286,62 @@
 /* Define to 1 if you have the `vsnprintf' function. */
 #undef HAVE_VSNPRINTF
 
+/* Define to 1 if you have the <windows.h> header file. */
+#undef HAVE_WINDOWS_H
+
+/* Define to 1 if you have the <winsock2.h> header file. */
+#undef HAVE_WINSOCK2_H
+
 /* Define to 1 if you have the <winsock.h> header file. */
 #undef HAVE_WINSOCK_H
 
+/* Define to 1 if you have the <ws2tcpip.h> header file. */
+#undef HAVE_WS2TCPIP_H
+
 /* Define to 1 if you have the <xti.h> header file. */
 #undef HAVE_XTI_H
 
+/* location of UNIX kernel */
+#undef KERNEL_LOC
+
+/* Path to the lpstat command */
+#undef LPSTAT_PATH
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#undef LT_OBJDIR
+
+/* define if agentx transport is to use domain sockets only */
+#undef NETSNMP_AGENTX_DOM_SOCK_ONLY
+
 /* Unix domain socket for AgentX master-subagent communication */
 #undef NETSNMP_AGENTX_SOCKET
 
 /* 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
+
+/* configure options specified */
+#undef NETSNMP_CONFIGURE_OPTIONS
+
+/* default location to look for mibs to load using the above tokens and/or
+   those in the MIBS envrionment variable */
+#undef NETSNMP_DEFAULT_MIBDIRS
+
+/* default mib files to load, specified by path. */
+#undef NETSNMP_DEFAULT_MIBFILES
+
+/* Define if no agent is built */
+#undef NETSNMP_DISABLE_AGENT
+
+/* Define if no apps are built */
+#undef NETSNMP_DISABLE_APPS
+
 /* Define if DES encryption should not be supported */
 #undef NETSNMP_DISABLE_DES
 
@@ -1143,9 +1360,103 @@
 /* Define if SNMPv2c code should not be included */
 #undef NETSNMP_DISABLE_SNMPV2C
 
+/* Define if you are embedding perl in the main agent. */
+#undef NETSNMP_EMBEDDED_PERL
+
+/* define if you want to enable IPv6 support */
+#undef NETSNMP_ENABLE_IPV6
+
+/* define if you want to restrict SMUX connections to localhost by default */
+#undef NETSNMP_ENABLE_LOCAL_SMUX
+
+/* Define if you want to build MFD module rewrites */
+#undef NETSNMP_ENABLE_MFD_REWRITES
+
+/* define if you want to compile support for both authentication and privacy
+   support. */
+#undef NETSNMP_ENABLE_SCAPI_AUTHPRIV
+
+/* testing code sections. */
+#undef NETSNMP_ENABLE_TESTING_CODE
+
+/* Should evaluate to the name of the current function if defined */
+#undef NETSNMP_FUNCTION
+
+/* ifnet needs to have _KERNEL defined */
+#undef NETSNMP_IFNET_NEEDS_KERNEL
+
+/* ifnet needs to have _KERNEL_STRUCTURES defined */
+#undef NETSNMP_IFNET_NEEDS_KERNEL_STRUCTURES
+
+/* Define if you want to remove all non-essential code features. */
+#undef NETSNMP_MINIMAL_CODE
+
+/* Define if you want to only support sending notifications */
+#undef NETSNMP_NOTIFY_ONLY
+
+/* Define to suppress inclusion of deprecated functions */
+#undef NETSNMP_NO_DEPRECATED_FUNCTIONS
+
+/* If you don't want the agent to report on variables it doesn't have data for
+   */
+#undef NETSNMP_NO_DUMMY_VALUES
+
+/* If we don't want to use kmem. */
+#undef NETSNMP_NO_KMEM_USAGE
+
+/* Define if you want to remove all listening support from the code */
+#undef NETSNMP_NO_LISTEN_SUPPORT
+
+/* If you don't have root access don't exit upon kmem errors */
+#undef NETSNMP_NO_ROOT_ACCESS
+
+/* Define if you want to remove all SET/write access from the code */
+#undef NETSNMP_NO_WRITE_SUPPORT
+
+/* umask permissions to set up persistent files with */
+#undef NETSNMP_PERSISTENT_MASK
+
+/* 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
+
+/* Define to 1 if you want to build with reentrant/threaded code (incomplete).
+   */
+#undef NETSNMP_REENTRANT
+
+/* define if you do not want snmptrapd to register as an AgentX subagent */
+#undef NETSNMP_SNMPTRAPD_DISABLE_AGENTX
+
 /* 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
+
+/* Define this if you're using Heimdal Kerberos */
+#undef NETSNMP_USE_KERBEROS_HEIMDAL
+
+/* Define this if we're using the new MIT crypto API */
+#undef NETSNMP_USE_KERBEROS_MIT
+
+/* define if you are using the mysql code for snmptrapd ... */
+#undef NETSNMP_USE_MYSQL
+
+/* Define if you are using the codeS11 library ... */
+#undef NETSNMP_USE_PKCS11
+
+/* 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,
+   i64, ui64, union? */
+#undef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
+
 /* Define to the address where bug reports for this package should be sent. */
 #ifndef PACKAGE_BUGREPORT
 #undef PACKAGE_BUGREPORT
@@ -1166,57 +1477,135 @@
 #undef PACKAGE_TARNAME
 #endif
 
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
 /* Define to the version of this package. */
 #ifndef PACKAGE_VERSION
 #undef PACKAGE_VERSION
 #endif
 
+/* Command to generate ps output, the final column must be the process name
+   withOUT arguments */
+#undef PSCMD
+
 /* Define as the return type of signal handlers (`int' or `void'). */
 #undef RETSIGTYPE
 
-/* The size of a `int', as computed by sizeof. */
+/* define rtentry to ortentry on SYSV machines (alphas) */
+#undef RTENTRY
+
+/* Use BSD 4.4 routing table entries? */
+#undef RTENTRY_4_4
+
+/* The size of `int', as computed by sizeof. */
 #undef SIZEOF_INT
 
-/* The size of a `intmax_t', as computed by sizeof. */
+/* The size of `intmax_t', as computed by sizeof. */
 #undef SIZEOF_INTMAX_T
 
-/* The size of a `long', as computed by sizeof. */
+/* The size of `long', as computed by sizeof. */
 #undef SIZEOF_LONG
 
-/* The size of a `long long', as computed by sizeof. */
+/* The size of `long long', as computed by sizeof. */
 #undef SIZEOF_LONG_LONG
 
-/* The size of a `short', as computed by sizeof. */
+/* 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 run-time.
+   automatically deduced at runtime.
 	STACK_DIRECTION > 0 => grows toward higher addresses
 	STACK_DIRECTION < 0 => grows toward lower addresses
 	STACK_DIRECTION = 0 => direction of growth unknown */
 #undef STACK_DIRECTION
 
+/* Define if statfs takes 2 args and the second argument has type struct
+   fs_data. [Ultrix] */
+#undef STAT_STATFS_FS_DATA
+
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
+/* define if SIOCGIFADDR exists in sys/ioctl.h */
+#undef SYS_IOCTL_H_HAS_SIOCGIFADDR
+
+/* Define if the TCP timer constants in <netinet/tcp_timer.h> depend on the
+   integer variable 'hz'. [FreeBSD 4.x] */
+#undef TCPTV_NEEDS_HZ
+
 /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
 #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). */
-#undef WORDS_BIGENDIAN
+/* Where is the uname command */
+#undef UNAMEPROG
 
-/* Define to 1 if on AIX 3.
-   System headers sometimes define this.
-   We just want to avoid a redefinition error message.  */
+/* Enable extensions on AIX 3, Interix.  */
 #ifndef _ALL_SOURCE
 # undef _ALL_SOURCE
 #endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
+
+/* Define to 1 if on MINIX. */
+#undef _MINIX
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+#undef _POSIX_1_SOURCE
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+#undef _POSIX_SOURCE
 
 /* Define if you have RPM 4.6 or newer to turn on legacy API */
 #undef _RPM_4_4_COMPAT
 
+/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+   #define below would cause a syntax error. */
+#undef _UINT32_T
+
+/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+   #define below would cause a syntax error. */
+#undef _UINT64_T
+
+/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+   #define below would cause a syntax error. */
+#undef _UINT8_T
+
 /* Define to empty if `const' does not conform to ANSI C. */
 #undef const
 
@@ -1226,58 +1615,68 @@
 #undef inline
 #endif
 
-/* Define to `long' if <sys/types.h> does not define. */
+/* Define to the type of a signed integer type of width exactly 16 bits if
+   such a type exists and the standard includes do not define it. */
+#undef int16_t
+
+/* Define to the type of a signed integer type of width exactly 32 bits if
+   such a type exists and the standard includes do not define it. */
+#undef int32_t
+
+/* Define to the type of a signed integer type of width exactly 64 bits if
+   such a type exists and the standard includes do not define it. */
+#undef int64_t
+
+/* Define to the type of a signed integer type of width exactly 8 bits if such
+   a type exists and the standard includes do not define it. */
+#undef int8_t
+
+/* Define to the widest signed integer type if <stdint.h> and <inttypes.h> do
+   not define. */
+#undef intmax_t
+
+/* Define to the type of a signed integer type wide enough to hold a pointer,
+   if such a type exists, and if the system does not define it. */
+#undef intptr_t
+
+/* Define to `long int' if <sys/types.h> does not define. */
 #undef off_t
 
 /* Define to `int' if <sys/types.h> does not define. */
 #undef pid_t
 
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define to the type of an unsigned integer type of width exactly 16 bits if
+   such a type exists and the standard includes do not define it. */
+#undef uint16_t
+
+/* Define to the type of an unsigned integer type of width exactly 32 bits if
+   such a type exists and the standard includes do not define it. */
+#undef uint32_t
+
+/* Define to the type of an unsigned integer type of width exactly 64 bits if
+   such a type exists and the standard includes do not define it. */
+#undef uint64_t
+
+/* Define to the type of an unsigned integer type of width exactly 8 bits if
+   such a type exists and the standard includes do not define it. */
+#undef uint8_t
+
+/* Define to the widest unsigned integer type if <stdint.h> and <inttypes.h>
+   do not define. */
+#undef uintmax_t
+
+/* Define to the type of an unsigned integer type wide enough to hold a
+   pointer, if such a type exists, and if the system does not define it. */
+#undef uintptr_t
+
 /* end of definitions added by configure on-the-fly */
 
-#ifndef HAVE_STRCHR
-#ifdef HAVE_INDEX
-# define strchr index
-# define strrchr rindex
-#endif
-#endif
-
-#ifndef HAVE_INDEX
-#ifdef HAVE_STRCHR
-#ifdef mingw32
-# define index(a,b) strchr(a,b)
-# define rindex(a,b) strrchr(a,b)
-#else
-# define index strchr
-# define rindex strrchr
-#endif
-#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
-
 /* 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
 
@@ -1331,27 +1730,6 @@
 /* default list of mibs to load */
 #define NETSNMP_DEFAULT_MIBS "IP-MIB:IF-MIB:TCP-MIB:UDP-MIB:SNMPv2-MIB:RFC1213-MIB"
 
-/* default location to look for mibs to load using the above tokens
-   and/or those in the MIBS envrionment variable*/
-#undef NETSNMP_DEFAULT_MIBDIRS
-
-/* default mib files to load, specified by path. */
-#undef NETSNMP_DEFAULT_MIBFILES
-
-/* should we compile to use special opaque types: float, double,
-   counter64, i64, ui64, union? */
-#undef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
-
-/* define if you want to compile support for both authentication and
-   privacy support. */
-#undef NETSNMP_ENABLE_SCAPI_AUTHPRIV
-
-/* define if you are using the MD5 code ...*/
-#undef NETSNMP_USE_INTERNAL_MD5
-
-/* define if you are using the codeS11 library ...*/
-#undef NETSNMP_USE_PKCS11
-
 /* debugging stuff */
 /* if defined, we optimize the code to exclude all debugging calls. */
 #undef NETSNMP_NO_DEBUGGING
@@ -1367,9 +1745,6 @@
    lines: PERSISTENT_DIRECTORY/NAME.persistent.conf */
 #define NETSNMP_PERSISTENT_DIRECTORY "/var/snmp"
 
-/* PERSISTENT_MASK: the umask permissions to set up persistent files with */
-#define NETSNMP_PERSISTENT_MASK 077
-
 /* AGENT_DIRECTORY_MODE: the mode the agents should use to create
    directories with. Since the data stored here is probably sensitive, it
    probably should be read-only by root/administrator. */
@@ -1414,19 +1789,6 @@
 /* Use libwrap to handle allow/deny hosts? */
 #undef NETSNMP_USE_LIBWRAP
 
-/* testing code sections. */
-#undef NETSNMP_ENABLE_TESTING_CODE 
-
-/* If you don't have root access don't exit upon kmem errors */
-#undef NETSNMP_NO_ROOT_ACCESS
-
-/* If we don't want to use kmem. */
-#undef NETSNMP_NO_KMEM_USAGE
-
-/* If you don't want the agent to report on variables it doesn't have data for */
-#undef NETSNMP_NO_DUMMY_VALUES
-
-
 /* Mib-2 tree Info */
 /* These are the system information variables. */
 
@@ -1530,7 +1892,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)
@@ -1621,9 +1983,6 @@
 /* internal define */
 #define NETSNMP_LASTFIELD -1
 
-/* configure options specified */
-#define NETSNMP_CONFIGURE_OPTIONS ""
-
 /*  Pluggable transports.  */
 
 /*  This is defined if support for the UDP/IP transport domain is
@@ -1658,13 +2017,32 @@
     available.  */
 #undef NETSNMP_TRANSPORT_TCPIPV6_DOMAIN
 
-/*  This is defined if support for the UDP/IP transport domain is
+/*  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.   */
+#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.   */
+#undef NETSNMP_TRANSPORT_IPV4BASE_DOMAIN
+
 /* define this if the USM security module is available */
 #undef NETSNMP_SECMOD_USM
 
@@ -1674,18 +2052,9 @@
 /* define this if the local security module is available */
 #undef NETSNMP_SECMOD_LOCALSM
 
-/* define if you want to build with reentrant/threaded code (incomplete)*/
-#undef NETSNMP_REENTRANT
-
 /* define if configured as a "mini-agent" */
 #undef NETSNMP_MINI_AGENT
 
-/* define if you are embedding perl in the main agent */
-#undef NETSNMP_EMBEDDED_PERL
-
-/* define if you want to build MFD module rewrites*/
-#undef NETSNMP_ENABLE_MFD_REWRITES
-
 /* this is the location of the net-snmp mib tree.  It shouldn't be
    changed, as the places it is used are expected to be constant
    values or are directly tied to the UCD-SNMP-MIB. */
@@ -1753,33 +2122,12 @@
 #  define NETSNMP_IMPORT extern
 #endif
 
-/* define if you want to enable IPv6 support */
-#undef NETSNMP_ENABLE_IPV6
-
-/* define if you want to restrict SMUX connections to localhost by default */
-#undef NETSNMP_ENABLE_LOCAL_SMUX
-
-/* define if agentx transport is to use domain sockets only */
-#undef NETSNMP_AGENTX_DOM_SOCK_ONLY
-
-/* define if you do not want snmptrapd to register as an AgentX subagent */
-#undef NETSNMP_SNMPTRAPD_DISABLE_AGENTX
-
-/* define this if we're using the new MIT crypto API */
-#undef NETSNMP_USE_KERBEROS_MIT
-
-/* define this if you're using Heimdal Kerberos */
-#undef NETSNMP_USE_KERBEROS_HEIMDAL
-
 /* comment the next line if you are compiling with libsnmp.h 
    and are not using the UC-Davis SNMP library. */
 #define UCD_SNMP_LIBRARY 1
 
-/* add in recent CMU library extensions (not complete) */
-#undef CMU_COMPATIBLE
-
 /* final conclusion on nlist usage */
-#if defined(HAVE_NLIST) && defined(STRUCT_NLIST_HAS_N_VALUE) && !defined(NETSNMP_DONT_USE_NLIST) && !defined(NETSNMP_NO_KMEM_USAGE)
+#if defined(HAVE_NLIST) && defined(HAVE_STRUCT_NLIST_N_VALUE) && !defined(NETSNMP_DONT_USE_NLIST) && defined(HAVE_KMEM) && !defined(NETSNMP_NO_KMEM_USAGE)
 #define NETSNMP_CAN_USE_NLIST
 #endif
 
diff --git a/include/net-snmp/net-snmp-features.h b/include/net-snmp/net-snmp-features.h
new file mode 100644
index 0000000..f37e6c5
--- /dev/null
+++ b/include/net-snmp/net-snmp-features.h
@@ -0,0 +1,32 @@
+#ifndef NETSNMP_FEATURES_H
+#define NETSNMP_FEATURES_H
+
+/* include files that are only needed if --enable-minimalist is on */
+#ifdef NETSNMP_MINIMAL_CODE
+#ifdef NETSNMP_FEATURE_CHECKING
+#include <net-snmp/feature-details.h>
+#else /* ! NETSNMP_FEATURE_CHECKING */
+#include <net-snmp/library/features.h>
+#ifndef NETSNMP_DISABLE_AGENT
+#include <net-snmp/agent/features.h>
+#include <net-snmp/agent/features-mibgroups.h>
+#endif
+#ifndef NETSNMP_DISABLE_APPS
+#include <net-snmp/features-snmpnetstat.h>
+#include <net-snmp/features-apps.h>
+#endif
+#endif /* ! NETSNMP_FEATURE_CHECKING */
+#endif /* NETSNMP_MINIMAL_CODE */
+
+
+/* prototypes always needed */
+#ifndef NETSNMP_FEATURE_CHECKING
+#define netsnmp_feature_provide(X)
+#define netsnmp_feature_require(X)
+#define netsnmp_feature_want(X)
+#define netsnmp_feature_child_of(X, Y)
+#endif
+
+#define netsnmp_feature_unused(X) char netsnmp_feature_unused_ ## X
+
+#endif /* NETSNMP_FEATURES_H */
diff --git a/include/net-snmp/net-snmp-includes.h b/include/net-snmp/net-snmp-includes.h
index 53dc7b8..3ee62ae 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
@@ -71,6 +67,7 @@
 #include <net-snmp/definitions.h>
 #include <net-snmp/types.h>
 
+#include <net-snmp/library/getopt.h>
 #include <net-snmp/utilities.h>
 #include <net-snmp/session_api.h>
 #include <net-snmp/pdu_api.h>
@@ -80,8 +77,4 @@
 #include <net-snmp/output_api.h>
 #include <net-snmp/snmpv3_api.h>
 
-#ifdef CMU_COMPATIBLE
-#include <net-snmp/library/cmu_compat.h>
-#endif
-
 #endif                          /* NET_SNMP_INCLUDES_H */
diff --git a/include/net-snmp/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 a3a1dd6..125595d 100644
--- a/include/net-snmp/pdu_api.h
+++ b/include/net-snmp/pdu_api.h
@@ -7,14 +7,36 @@
 
 #include <net-snmp/types.h>
 
+#ifdef __cplusplus
+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
+}
+#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 3327f89..88dbc41 100644
--- a/include/net-snmp/session_api.h
+++ b/include/net-snmp/session_api.h
@@ -8,14 +8,272 @@
 
 #include <net-snmp/types.h>
 
+#ifdef __cplusplus
+extern          "C" {
+#endif
+
+    NETSNMP_IMPORT
+    void            snmp_sess_init(netsnmp_session *);
+
     /*
-     *  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.
+     * netsnmp_session *snmp_open(session)
+     *      netsnmp_session *session;
      *
-     *  But for the time being, this header file is a placeholder,
-     *  to allow application writers to adopt the new header file names.
+     * Sets up the session with the snmp_session information provided
+     * by the user.  Then opens and binds the necessary UDP port.
+     * A handle to the created session is returned (this is different than
+     * 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 *);
+
+    /*
+     * int snmp_close(session)
+     *     netsnmp_session *session;
+     *
+     * Close the input session.  Frees all data allocated for the session,
+     * dequeues any pending requests, and closes any sockets allocated for
+     * the session.  Returns 0 on error, 1 otherwise.
+     *
+     * 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);
+
+
+    /*
+     * int snmp_send(session, pdu)
+     *     netsnmp_session *session;
+     *     netsnmp_pdu      *pdu;
+     *
+     * Sends the input pdu on the session after calling snmp_build to create
+     * a serialized packet.  If necessary, set some of the pdu data from the
+     * session defaults.  Add a request corresponding to this pdu to the list
+     * of outstanding requests on this session, then send the pdu.
+     * Returns the request id of the generated packet if applicable, otherwise 1.
+     * 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 *);
+
+    /*
+     * int snmp_async_send(session, pdu, callback, cb_data)
+     *     netsnmp_session *session;
+     *     netsnmp_pdu      *pdu;
+     *     netsnmp_callback callback;
+     *     void   *cb_data;
+     *
+     * Sends the input pdu on the session after calling snmp_build to create
+     * a serialized packet.  If necessary, set some of the pdu data from the
+     * session defaults.  Add a request corresponding to this pdu to the list
+     * of outstanding requests on this session and store callback and data,
+     * then send the pdu.
+     * Returns the request id of the generated packet if applicable, otherwise 1.
+     * 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 *);
+
+
+    /*
+     * void snmp_read(fdset)
+     *     fd_set  *fdset;
+     *
+     * Checks to see if any of the fd's set in the fdset belong to
+     * snmp.  Each socket with it's fd set has a packet read from it
+     * and snmp_parse is called on the packet received.  The resulting pdu
+     * 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 *);
+
+    /*
+     * snmp_read2() is similar to snmp_read(), but accepts a pointer to a
+     * 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 **);
+
+    /*
+     * int snmp_select_info(numfds, fdset, timeout, block)
+     * int *numfds;
+     * fd_set   *fdset;
+     * struct timeval *timeout;
+     * int *block;
+     *
+     * 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.
+     * If activity occurs on any of these file descriptors, snmp_read
+     * should be called with that file descriptor set.
+     *
+     * The timeout is the latest time that SNMP can wait for a timeout.  The
+     * select should be done with the minimum time between timeout and any other
+     * timeouts necessary.  This should be checked upon each invocation of select.
+     * If a timeout is received, snmp_timeout should be called to check if the
+     * timeout was for SNMP.  (snmp_timeout is idempotent)
+     *
+     * Block is 1 if the select is requested to block indefinitely, rather than
+     * time out.  If block is input as 1, the timeout value will be treated as
+     * undefined, but it must be available for setting in snmp_select_info.  On
+     * return, if block is true, the value of timeout will be undefined.
+     *
+     * 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 *);
+
+    /*
+     * snmp_select_info2() is similar to snmp_select_info(), but accepts a
+     * 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();
+     *
+     * snmp_timeout should be called whenever the timeout from snmp_select_info
+     * expires, but it is idempotent, so snmp_timeout can be polled (probably a
+     * cpu expensive proposition).  snmp_timeout checks to see if any of the
+     * sessions have an outstanding request that has timed out.  If it finds one
+     * (or more), and that pdu has more retries available, a new packet is formed
+     * from the pdu and is resent.  If there are no more retries available, the
+     * callback for the session is used to alert the user of the timeout.
+     */
+
+    NETSNMP_IMPORT
+    void            snmp_timeout(void);
+
+    /*
+     * single session API.
+     *
+     * These functions perform similar actions as snmp_XX functions,
+     * but operate on a single session only.
+     *
+     * Synopsis:
+     
+     void * sessp;
+     netsnmp_session session, *ss;
+     netsnmp_pdu *pdu, *response;
+     
+     snmp_sess_init(&session);
+     session.retries = ...
+     session.remote_port = ...
+     sessp = snmp_sess_open(&session);
+     ss = snmp_sess_session(sessp);
+     if (ss == NULL)
+     exit(1);
+     ...
+     if (ss->community) free(ss->community);
+     ss->community = strdup(gateway);
+     ss->community_len = strlen(gateway);
+     ...
+     snmp_sess_synch_response(sessp, pdu, &response);
+     ...
+     snmp_sess_close(sessp);
+     
+     * See also:
+     * snmp_sess_synch_response, in snmp_client.h.
+     
+     * Notes:
+     *  1. Invoke snmp_sess_session after snmp_sess_open.
+     *  2. snmp_sess_session return value is an opaque pointer.
+     *  3. Do NOT free memory returned by snmp_sess_session.
+     *  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 *);
+
+
+    /*
+     * 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 **);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+    /*
+     *    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.
+     *
+     *    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/aix.h b/include/net-snmp/system/aix.h
index 43272f1..02d4981 100644
--- a/include/net-snmp/system/aix.h
+++ b/include/net-snmp/system/aix.h
@@ -22,3 +22,6 @@
 
 /* define the extra mib modules that are supported */
 #define NETSNMP_INCLUDE_HOST_RESOURCES
+
+/* the legacy symbol NOACCESS clashes with the system headers. Remove it. */
+#define NETSNMP_NO_LEGACY_DEFINITIONS
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..5a065b7 100644
--- a/include/net-snmp/system/darwin.h
+++ b/include/net-snmp/system/darwin.h
@@ -5,3 +5,4 @@
  * At least, as of 5.3.
  */
 #undef HAVE_FSTAB_H
+
diff --git a/include/net-snmp/system/darwin10.h b/include/net-snmp/system/darwin10.h
new file mode 100644
index 0000000..3037324
--- /dev/null
+++ b/include/net-snmp/system/darwin10.h
@@ -0,0 +1,138 @@
+/*
+ * 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_HOST_RESOURCES
+#define NETSNMP_INCLUDE_HRSWINST_REWRITES
+#define NETSNMP_INCLUDE_HRSWRUN_REWRITES
+#undef NETSNMP_INCLUDE_HRSWRUN_WRITE_SUPPORT
+#define NETSNMP_CAN_GET_DISK_LABEL 1
+
+/*
+ * Enabling this restricts the compiler to mostly public APIs.
+ */
+#ifndef __APPLE_API_STRICT_CONFORMANCE
+#define __APPLE_API_STRICT_CONFORMANCE 1
+#endif
+#ifndef __APPLE_API_UNSTABLE
+#define __APPLE_API_UNSTABLE 1
+#endif
+
+/*
+ * Darwin's tools are capable of building multiple architectures in one pass.
+ * As a result, platform definitions should be deferred until compile time.
+ */
+#ifdef BYTE_ORDER
+# undef WORDS_BIGENDIAN
+# if BYTE_ORDER == BIG_ENDIAN
+#  define WORDS_BIGENDIAN 1
+# endif
+#endif
+
+/*
+ * Although Darwin does have an fstab.h file, getfsfile etc. always return null.
+ * At least, as of 5.3.
+ */
+#undef HAVE_FSTAB_H
+
+#define SWAPFILE_DIR "/private/var/vm"
+#define SWAPFILE_PREFIX "swapfile"
+
+/*
+ * These apparently used to be in netinet/tcp_timers.h, but went away in
+ * 10.4.2. Define them here til we find out a way to get the real values.
+ */
+#define TCPTV_MIN       (  1*PR_SLOWHZ)         /* minimum allowable value */
+#define TCPTV_REXMTMAX  ( 64*PR_SLOWHZ)         /* max allowable REXMT value */
+
+/*
+ * Because Mac OS X is built on Mach, it does not provide a BSD-compatible
+ * VM statistics API.
+ */
+#define USE_MACH_HOST_STATISTICS 1
+
+/*
+ * This tells code that manipulates IPv6 that the structures are unified,
+ * i.e., IPv4 and IPv6 use the same structs.
+ * This should eventually be replaced with a configure directive.
+ */
+/* #define USE_UNIFIED_IPV6_STRUCTS 1 */
+#undef STRUCT_in6pcb_HAS_inp_vflag
+
+/*
+ * utility macro used in several darwin specific files
+ */
+#define SNMP_CFRelease(x) do { if (x) { CFRelease(x); x = NULL; } } while(0)
+
+/*
+ * Mac OS X runs on both PPC and Intel hardware,
+ *   which handle udpTable index values differently
+ */
+#include <TargetConditionals.h>
+#ifdef TARGET_RT_LITTLE_ENDIAN
+#define UDP_ADDRESSES_IN_HOST_ORDER 1
+#endif
+
diff --git a/include/net-snmp/system/darwin11.h b/include/net-snmp/system/darwin11.h
new file mode 100644
index 0000000..9d6f03d
--- /dev/null
+++ b/include/net-snmp/system/darwin11.h
@@ -0,0 +1,143 @@
+/*
+ * While Darwin 10 (aka, Mac OS X 10.6 Snow Leopard) is "BSD-like", it differs
+ * substantially enough to not warrant pretending it is a BSD flavor.
+ * This first section are the vestigal BSD remnants.
+ */
+/* Portions of this file are subject to the following copyright(s).  See
+ * the Net-SNMP's COPYING file for more details and other copyrights
+ * that may apply:
+ */
+/*
+ * Portions of this file are copyrighted by:
+ * Copyright (C) 2007 Apple, Inc. All rights reserved.
+ * Use is subject to license terms specified in the COPYING file
+ * distributed with the Net-SNMP package.
+ */
+
+/*
+ * BSD systems use a different method of looking up sockaddr_in values 
+ */
+/* #define NEED_KLGETSA 1 */
+
+/*
+ * ARP_Scan_Next needs a 4th ifIndex argument 
+ */
+#define ARP_SCAN_FOUR_ARGUMENTS 1
+
+#define CHECK_RT_FLAGS 1
+
+/*
+ * this is not good enough before freebsd3! 
+ */
+/* #undef HAVE_NET_IF_MIB_H */
+
+/*
+ * This section adds the relevant definitions from generic.h
+ * (a file we don't include here)
+ */
+
+/*
+ * udp_inpcb list symbol, e.g. for mibII/udpTable.c
+ */
+#define INP_NEXT_SYMBOL inp_next
+
+/*
+ * This section defines Mac OS X 10.5 (and later) specific additions.
+ */
+#define darwin 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_HOST_RESOURCES
+#define NETSNMP_INCLUDE_HRSWINST_REWRITES
+#define NETSNMP_INCLUDE_HRSWRUN_REWRITES
+#undef NETSNMP_INCLUDE_HRSWRUN_WRITE_SUPPORT
+#define NETSNMP_CAN_GET_DISK_LABEL 1
+
+/*
+ * Enabling this restricts the compiler to mostly public APIs.
+ */
+#ifndef __APPLE_API_STRICT_CONFORMANCE
+#define __APPLE_API_STRICT_CONFORMANCE 1
+#endif
+#ifndef __APPLE_API_UNSTABLE
+#define __APPLE_API_UNSTABLE 1
+#endif
+
+/*
+ * Darwin's tools are capable of building multiple architectures in one pass.
+ * As a result, platform definitions should be deferred until compile time.
+ */
+#ifdef BYTE_ORDER
+# undef WORDS_BIGENDIAN
+# if BYTE_ORDER == BIG_ENDIAN
+#  define WORDS_BIGENDIAN 1
+# endif
+#endif
+
+/*
+ * Although Darwin does have an fstab.h file, getfsfile etc. always return null.
+ * At least, as of 5.3.
+ */
+#undef HAVE_FSTAB_H
+
+#define SWAPFILE_DIR "/private/var/vm"
+#define SWAPFILE_PREFIX "swapfile"
+
+/*
+ * These apparently used to be in netinet/tcp_timers.h, but went away in
+ * 10.4.2. Define them here til we find out a way to get the real values.
+ */
+#define TCPTV_MIN       (  1*PR_SLOWHZ)         /* minimum allowable value */
+#define TCPTV_REXMTMAX  ( 64*PR_SLOWHZ)         /* max allowable REXMT value */
+
+/*
+ * Because Mac OS X is built on Mach, it does not provide a BSD-compatible
+ * VM statistics API.
+ */
+#define USE_MACH_HOST_STATISTICS 1
+
+/*
+ * This tells code that manipulates IPv6 that the structures are unified,
+ * i.e., IPv4 and IPv6 use the same structs.
+ * This should eventually be replaced with a configure directive.
+ */
+/* #define USE_UNIFIED_IPV6_STRUCTS 1 */
+#undef STRUCT_in6pcb_HAS_inp_vflag
+
+/*
+ * utility macro used in several darwin specific files
+ */
+#define SNMP_CFRelease(x) do { if (x) { CFRelease(x); x = NULL; } } while(0)
+
+/*
+ * Mac OS X runs on both PPC and Intel hardware,
+ *   which handle udpTable index values differently
+ */
+#include <TargetConditionals.h>
+#ifdef TARGET_RT_LITTLE_ENDIAN
+#define UDP_ADDRESSES_IN_HOST_ORDER 1
+#endif
+
+/*
+ * as of 7/2010, openssl on darwin does not have sha256
+ */
+#define OPENSSL_NO_SHA256 1
+#define OPENSSL_NO_SHA512 1
diff --git a/include/net-snmp/system/darwin12.h b/include/net-snmp/system/darwin12.h
new file mode 100644
index 0000000..3031d04
--- /dev/null
+++ b/include/net-snmp/system/darwin12.h
@@ -0,0 +1,143 @@
+/*
+ * While Darwin 10 (aka, Mac OS X 10.6 Snow Leopard) is "BSD-like", it differs
+ * substantially enough to not warrant pretending it is a BSD flavor.
+ * This first section are the vestigal BSD remnants.
+ */
+/* Portions of this file are subject to the following copyright(s).  See
+ * the Net-SNMP's COPYING file for more details and other copyrights
+ * that may apply:
+ */
+/*
+ * Portions of this file are copyrighted by:
+ * Copyright (C) 2007 Apple, Inc. All rights reserved.
+ * Use is subject to license terms specified in the COPYING file
+ * distributed with the Net-SNMP package.
+ */
+
+/*
+ * BSD systems use a different method of looking up sockaddr_in values 
+ */
+/* #define NEED_KLGETSA 1 */
+
+/*
+ * ARP_Scan_Next needs a 4th ifIndex argument 
+ */
+#define ARP_SCAN_FOUR_ARGUMENTS 1
+
+#define CHECK_RT_FLAGS 1
+
+/*
+ * this is not good enough before freebsd3! 
+ */
+/* #undef HAVE_NET_IF_MIB_H */
+
+/*
+ * This section adds the relevant definitions from generic.h
+ * (a file we don't include here)
+ */
+
+/*
+ * udp_inpcb list symbol, e.g. for mibII/udpTable.c
+ */
+#define INP_NEXT_SYMBOL inp_next
+
+/*
+ * This section defines Mac OS X 10.5 (and later) specific additions.
+ */
+#define darwin 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_HOST_RESOURCES
+#define NETSNMP_INCLUDE_HRSWINST_REWRITES
+#define NETSNMP_INCLUDE_HRSWRUN_REWRITES
+#undef NETSNMP_INCLUDE_HRSWRUN_WRITE_SUPPORT
+#define NETSNMP_CAN_GET_DISK_LABEL 1
+
+/*
+ * Enabling this restricts the compiler to mostly public APIs.
+ */
+#ifndef __APPLE_API_STRICT_CONFORMANCE
+#define __APPLE_API_STRICT_CONFORMANCE 1
+#endif
+#ifndef __APPLE_API_UNSTABLE
+#define __APPLE_API_UNSTABLE 1
+#endif
+
+/*
+ * Darwin's tools are capable of building multiple architectures in one pass.
+ * As a result, platform definitions should be deferred until compile time.
+ */
+#ifdef BYTE_ORDER
+# undef WORDS_BIGENDIAN
+# if BYTE_ORDER == BIG_ENDIAN
+#  define WORDS_BIGENDIAN 1
+# endif
+#endif
+
+/*
+ * Although Darwin does have an fstab.h file, getfsfile etc. always return null.
+ * At least, as of 5.3.
+ */
+#undef HAVE_FSTAB_H
+
+#define SWAPFILE_DIR "/private/var/vm"
+#define SWAPFILE_PREFIX "swapfile"
+
+/*
+ * These apparently used to be in netinet/tcp_timers.h, but went away in
+ * 10.4.2. Define them here til we find out a way to get the real values.
+ */
+#define TCPTV_MIN       (  1*PR_SLOWHZ)         /* minimum allowable value */
+#define TCPTV_REXMTMAX  ( 64*PR_SLOWHZ)         /* max allowable REXMT value */
+
+/*
+ * Because Mac OS X is built on Mach, it does not provide a BSD-compatible
+ * VM statistics API.
+ */
+#define USE_MACH_HOST_STATISTICS 1
+
+/*
+ * This tells code that manipulates IPv6 that the structures are unified,
+ * i.e., IPv4 and IPv6 use the same structs.
+ * This should eventually be replaced with a configure directive.
+ */
+/* #define USE_UNIFIED_IPV6_STRUCTS 1 */
+#undef STRUCT_in6pcb_HAS_inp_vflag
+
+/*
+ * utility macro used in several darwin specific files
+ */
+#define SNMP_CFRelease(x) do { if (x) { CFRelease(x); x = NULL; } } while(0)
+
+/*
+ * Mac OS X runs on both PPC and Intel hardware,
+ *   which handle udpTable index values differently
+ */
+#include <TargetConditionals.h>
+#ifdef TARGET_RT_LITTLE_ENDIAN
+#define UDP_ADDRESSES_IN_HOST_ORDER 1
+#endif
+
+/*
+ * as of 7/2010, openssl on darwin does not have sha256
+ */
+#define OPENSSL_NO_SHA256 1
+#define OPENSSL_NO_SHA512 1
diff --git a/include/net-snmp/system/darwin13.h b/include/net-snmp/system/darwin13.h
new file mode 100644
index 0000000..cb1870b
--- /dev/null
+++ b/include/net-snmp/system/darwin13.h
@@ -0,0 +1,143 @@
+/*
+ * While Darwin 10 (aka, Mac OS X 10.6 Snow Leopard) is "BSD-like", it differs
+ * substantially enough to not warrant pretending it is a BSD flavor.
+ * This first section are the vestigal BSD remnants.
+ */
+/* Portions of this file are subject to the following copyright(s).  See
+ * the Net-SNMP's COPYING file for more details and other copyrights
+ * that may apply:
+ */
+/*
+ * Portions of this file are copyrighted by:
+ * Copyright (C) 2007 Apple, Inc. All rights reserved.
+ * Use is subject to license terms specified in the COPYING file
+ * distributed with the Net-SNMP package.
+ */
+
+/*
+ * BSD systems use a different method of looking up sockaddr_in values 
+ */
+/* #define NEED_KLGETSA 1 */
+
+/*
+ * ARP_Scan_Next needs a 4th ifIndex argument 
+ */
+#define ARP_SCAN_FOUR_ARGUMENTS 1
+
+#define CHECK_RT_FLAGS 1
+
+/*
+ * this is not good enough before freebsd3! 
+ */
+/* #undef HAVE_NET_IF_MIB_H */
+
+/*
+ * This section adds the relevant definitions from generic.h
+ * (a file we don't include here)
+ */
+
+/*
+ * udp_inpcb list symbol, e.g. for mibII/udpTable.c
+ */
+#define INP_NEXT_SYMBOL inp_next
+
+/*
+ * This section defines Mac OS X 10.5 (and later) specific additions.
+ */
+#define darwin 13
+#ifndef darwin13
+#   define darwin13 darwin
+#endif
+
+/*
+ * Mac OS X should only use the modern API and definitions.
+ */
+#ifndef NETSNMP_NO_LEGACY_DEFINITIONS
+#define NETSNMP_NO_LEGACY_DEFINITIONS 1
+#endif
+
+/*
+ * looks like the IFTable stuff works better than the mibII versions
+ */
+ 
+#define NETSNMP_INCLUDE_IFTABLE_REWRITES
+
+/*
+ * use new host resources files as well
+ */
+#define NETSNMP_INCLUDE_HOST_RESOURCES
+#define NETSNMP_INCLUDE_HRSWINST_REWRITES
+#define NETSNMP_INCLUDE_HRSWRUN_REWRITES
+#undef NETSNMP_INCLUDE_HRSWRUN_WRITE_SUPPORT
+#define NETSNMP_CAN_GET_DISK_LABEL 1
+
+/*
+ * Enabling this restricts the compiler to mostly public APIs.
+ */
+#ifndef __APPLE_API_STRICT_CONFORMANCE
+#define __APPLE_API_STRICT_CONFORMANCE 1
+#endif
+#ifndef __APPLE_API_UNSTABLE
+#define __APPLE_API_UNSTABLE 1
+#endif
+
+/*
+ * Darwin's tools are capable of building multiple architectures in one pass.
+ * As a result, platform definitions should be deferred until compile time.
+ */
+#ifdef BYTE_ORDER
+# undef WORDS_BIGENDIAN
+# if BYTE_ORDER == BIG_ENDIAN
+#  define WORDS_BIGENDIAN 1
+# endif
+#endif
+
+/*
+ * Although Darwin does have an fstab.h file, getfsfile etc. always return null.
+ * At least, as of 5.3.
+ */
+#undef HAVE_FSTAB_H
+
+#define SWAPFILE_DIR "/private/var/vm"
+#define SWAPFILE_PREFIX "swapfile"
+
+/*
+ * These apparently used to be in netinet/tcp_timers.h, but went away in
+ * 10.4.2. Define them here til we find out a way to get the real values.
+ */
+#define TCPTV_MIN       (  1*PR_SLOWHZ)         /* minimum allowable value */
+#define TCPTV_REXMTMAX  ( 64*PR_SLOWHZ)         /* max allowable REXMT value */
+
+/*
+ * Because Mac OS X is built on Mach, it does not provide a BSD-compatible
+ * VM statistics API.
+ */
+#define USE_MACH_HOST_STATISTICS 1
+
+/*
+ * This tells code that manipulates IPv6 that the structures are unified,
+ * i.e., IPv4 and IPv6 use the same structs.
+ * This should eventually be replaced with a configure directive.
+ */
+/* #define USE_UNIFIED_IPV6_STRUCTS 1 */
+#undef STRUCT_in6pcb_HAS_inp_vflag
+
+/*
+ * utility macro used in several darwin specific files
+ */
+#define SNMP_CFRelease(x) do { if (x) { CFRelease(x); x = NULL; } } while(0)
+
+/*
+ * Mac OS X runs on both PPC and Intel hardware,
+ *   which handle udpTable index values differently
+ */
+#include <TargetConditionals.h>
+#ifdef TARGET_RT_LITTLE_ENDIAN
+#define UDP_ADDRESSES_IN_HOST_ORDER 1
+#endif
+
+/*
+ * as of 7/2010, openssl on darwin does not have sha256
+ */
+#define OPENSSL_NO_SHA256 1
+#define OPENSSL_NO_SHA512 1
diff --git a/include/net-snmp/system/darwin7.h b/include/net-snmp/system/darwin7.h
index b1553de..8d4554d 100644
--- a/include/net-snmp/system/darwin7.h
+++ b/include/net-snmp/system/darwin7.h
@@ -12,3 +12,4 @@
 
 #define SWAPFILE_DIR "/private/var/vm"
 #define SWAPFILE_PREFIX "swapfile"
+
diff --git a/include/net-snmp/system/darwin8.h b/include/net-snmp/system/darwin8.h
index 174fa78..1e6d7d3 100644
--- a/include/net-snmp/system/darwin8.h
+++ b/include/net-snmp/system/darwin8.h
@@ -63,14 +63,6 @@
 #endif
 
 /*
- * Although Darwin does have a kvm.h file, kvm_openfiles etc. always
- * return null because /dev/kmem was removed in OS X 10.4 for Intel.
- */
-#undef HAVE_KVM_H
-#undef HAVE_KVM_GETPROCS
-#undef HAVE_KVM_OPENFILES
-
-/*
  * Although Darwin does have an fstab.h file, getfsfile etc. always return null.
  * At least, as of 5.3.
  */
@@ -99,3 +91,4 @@
  */
 /* #define USE_UNIFIED_IPV6_STRUCTS 1 */
 #undef STRUCT_in6pcb_HAS_inp_vflag
+
diff --git a/include/net-snmp/system/darwin9.h b/include/net-snmp/system/darwin9.h
index 62d8d30..bf3d2dc 100644
--- a/include/net-snmp/system/darwin9.h
+++ b/include/net-snmp/system/darwin9.h
@@ -3,6 +3,16 @@
  * 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 
@@ -35,6 +45,9 @@
  * This section defines Mac OS X 10.5 (and later) specific additions.
  */
 #define darwin 9
+#ifndef darwin9
+#   define darwin9 darwin
+#endif
 
 /*
  * Mac OS X should only use the modern API and definitions.
@@ -50,6 +63,14 @@
 #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
@@ -71,25 +92,6 @@
 #endif
 
 /*
- * Darwin's tools are capable of building multiple architectures in one pass.
- * As a result, platform definitions should be deferred until compile time.
- */
-#ifdef BYTE_ORDER
-# undef WORDS_BIGENDIAN
-# if BYTE_ORDER == BIG_ENDIAN
-#  define WORDS_BIGENDIAN 1
-# endif
-#endif
-
-/*
- * Although Darwin does have a kvm.h file, kvm_openfiles etc. always
- * return null because /dev/kmem was removed completely in OS X 10.5.
- */
-#undef HAVE_KVM_H
-#undef HAVE_KVM_GETPROCS
-#undef HAVE_KVM_OPENFILES
-
-/*
  * Although Darwin does have an fstab.h file, getfsfile etc. always return null.
  * At least, as of 5.3.
  */
@@ -120,6 +122,11 @@
 #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
  */
@@ -127,3 +134,4 @@
 #ifdef TARGET_RT_LITTLE_ENDIAN
 #define UDP_ADDRESSES_IN_HOST_ORDER 1
 #endif
+
diff --git a/include/net-snmp/system/freebsd.h b/include/net-snmp/system/freebsd.h
index 4108429..a30683f 100644
--- a/include/net-snmp/system/freebsd.h
+++ b/include/net-snmp/system/freebsd.h
@@ -24,6 +24,4 @@
 
 /* define the extra mib modules that are supported */
 #define NETSNMP_INCLUDE_HOST_RESOURCES
-#ifdef NETSNMP_ENABLE_MFD_REWRITES
 #define NETSNMP_INCLUDE_IFTABLE_REWRITES
-#endif
diff --git a/include/net-snmp/system/freebsd5.h b/include/net-snmp/system/freebsd5.h
index efbc5b3..369c1a4 100644
--- a/include/net-snmp/system/freebsd5.h
+++ b/include/net-snmp/system/freebsd5.h
@@ -4,5 +4,5 @@
 
 /* don't define _KERNEL on FreeBSD 5.3 even if configure thinks we need it */
 #ifdef freebsd5
-#undef IFNET_NEEDS_KERNEL
+#undef NETSNMP_IFNET_NEEDS_KERNEL
 #endif
diff --git a/include/net-snmp/system/hpux.h b/include/net-snmp/system/hpux.h
index 0b627e9..57cea42 100644
--- a/include/net-snmp/system/hpux.h
+++ b/include/net-snmp/system/hpux.h
@@ -80,5 +80,15 @@
 #  define NETSNMP_ENABLE_INLINE 0
 #endif
 
+/*
+ * prevent sigaction being redefined to cma_sigaction
+ * (causing build errors on HP-UX 10.20, at least)
+ */
+#ifdef hpux10
+#ifndef _CMA_NOWRAPPERS_
+#  define _CMA_NOWRAPPERS_ 1
+#endif
+#endif
+
 /* define the extra mib modules that are supported */
 #define NETSNMP_INCLUDE_HOST_RESOURCES
diff --git a/include/net-snmp/system/irix.h b/include/net-snmp/system/irix.h
index 79d41a8..933fe63 100644
--- a/include/net-snmp/system/irix.h
+++ b/include/net-snmp/system/irix.h
@@ -23,7 +23,7 @@
 /*
  * don't define _KERNEL before including sys/unistd.h 
  */
-#define IFNET_NEEDS_KERNEL_LATE  1
+#define NETSNMP_IFNET_NEEDS_KERNEL_LATE  1
 
 #define STREAM_NEEDS_KERNEL_ISLANDS
 
diff --git a/include/net-snmp/system/kfreebsd.h b/include/net-snmp/system/kfreebsd.h
new file mode 100644
index 0000000..dbf7024
--- /dev/null
+++ b/include/net-snmp/system/kfreebsd.h
@@ -0,0 +1,9 @@
+#include "freebsd6.h"
+#define freebsd6 freebsd6
+
+#include <osreldate.h>
+#define __FreeBSD_version __FreeBSD_kernel_version
+
+#include <sys/queue.h>
+#include <sys/_types.h>
+
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 13ad7ea..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
@@ -44,3 +72,4 @@
 
 /* define the extra mib modules that are supported */
 #define NETSNMP_INCLUDE_HOST_RESOURCES
+#define NETSNMP_INCLUDE_IFTABLE_REWRITES
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/system/openbsd.h b/include/net-snmp/system/openbsd.h
index 716794c..8db0eac 100644
--- a/include/net-snmp/system/openbsd.h
+++ b/include/net-snmp/system/openbsd.h
@@ -15,6 +15,4 @@
 
 /* define the extra mib modules that are supported */
 #define NETSNMP_INCLUDE_HOST_RESOURCES
-#ifdef NETSNMP_ENABLE_MFD_REWRITES
 #define NETSNMP_INCLUDE_IFTABLE_REWRITES
-#endif
diff --git a/include/net-snmp/system/solaris.h b/include/net-snmp/system/solaris.h
index d3dcb72..ec61c39 100644
--- a/include/net-snmp/system/solaris.h
+++ b/include/net-snmp/system/solaris.h
@@ -25,14 +25,9 @@
 #define UDP_PORTS_IN_HOST_ORDER 1
 #define TCP_PORTS_IN_HOST_ORDER 1
 
-/* get some required prototypes (strtok_r) from include files */
-#define __EXTENSIONS__
-
 /* define the extra mib modules that are supported */
 #define NETSNMP_INCLUDE_HOST_RESOURCES
-#ifdef NETSNMP_ENABLE_MFD_REWRITES
 #define NETSNMP_INCLUDE_IFTABLE_REWRITES
-#endif
 
 /* Solaris 2.6+ */
 #define _SLASH_PROC_METHOD_ 1
@@ -43,6 +38,6 @@
 /*
  * NEW_MIB_COMPLIANT is a define used in Solaris 10U4+ to enable additional
  * MIB information (it affects the structs in <inet/mib2.h>)
- */
-
+ */ 
+ 
 #define NEW_MIB_COMPLIANT
diff --git a/include/net-snmp/system/svr5.h b/include/net-snmp/system/svr5.h
index c4a9f9a..017c7c1 100644
--- a/include/net-snmp/system/svr5.h
+++ b/include/net-snmp/system/svr5.h
@@ -7,18 +7,12 @@
 /*
  * using CCS "cc", "configure" does not find this item 
  */
-#define HAVE_MEMCPY 1
-/*
- * so, undo the damage done earlier in config.h 
- */
-#undef memcpy
-#undef memmove
 #define HAVE_GETHOSTBYNAME 1
 
 /*
  * lie about this next define to avoid sa_len and sa_family MACROS !! 
  */
-#define STRUCT_SOCKADDR_HAS_SA_UNION_SA_GENERIC_SA_FAMILY2 1
+#define HAVE_STRUCT_SOCKADDR_SA_UNION_SA_GENERIC_SA_FAMILY2 1
 
 /*
  * this header requires queue_t, not easily done without kernel headers 
diff --git a/include/net-snmp/types.h b/include/net-snmp/types.h
index d90df075..5e80a45 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
@@ -58,26 +54,29 @@
 # endif
 #endif
 
+#if defined(WIN32) && !defined(cygwin)
+typedef HANDLE netsnmp_pid_t;
+#define NETSNMP_NO_SUCH_PROCESS INVALID_HANDLE_VALUE
+#else
+/*
+ * Note: on POSIX-compliant systems, pid_t is defined in <sys/types.h>.
+ * And if pid_t has not been defined in <sys/types.h>, AC_TYPE_PID_T ensures
+ * that a pid_t definition is present in net-snmp-config.h.
+ */
+typedef pid_t netsnmp_pid_t;
+#define NETSNMP_NO_SUCH_PROCESS -1
+#endif
+
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>		/* For definition of in_addr_t */
 #endif
 
+#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
@@ -98,142 +97,10 @@
 #endif
 #endif
 
-    /*
-     * Try to ensure we have 32-bit (and hopefully 64-bit)
-     *    integer types available.
-     */
-
-#ifndef HAVE_INT8_T
-typedef signed char int8_t;
-#endif /* !HAVE_INT8_T */
-
-#ifndef HAVE_UINT8_T
-#ifdef HAVE_U_INT8_T
-typedef u_int8_t      uint8_t;
-#else
-typedef unsigned char uint8_t;
-#endif
-#endif /* !HAVE_UINT8_T */
-
-#ifndef HAVE_INT16_T
-#if   SIZEOF_INT == 2
-#define INT16_T int
-#elif SIZEOF_SHORT == 2
-#define INT16_T short
-#else
-#define _INT16_IS_NOT_16BIT
-#define INT16_T short
-#endif
-typedef INT16_T int16_t;
-#endif /* !HAVE_INT16_T */
-
-#ifndef HAVE_UINT16_T
-#ifdef HAVE_U_INT16_T
-typedef u_int16_t        uint16_t;
-#else
-#ifdef INT16_T
-typedef unsigned INT16_T uint16_t;
-#else
-typedef unsigned short   uint16_t;
-#endif
-#endif
-#endif /* !HAVE_UINT16_T */
-
-#ifndef HAVE_INT32_T
-#if   SIZEOF_INT == 4
-#define INT32_T int 
-#elif SIZEOF_LONG == 4
-#define INT32_T long 
-#elif SIZEOF_SHORT == 4
-#define INT32_T short 
-#else
-#define _INT32_IS_NOT_32BIT
-#define INT32_T int 
-#endif
-typedef INT32_T int32_t;
-#endif /* !HAVE_INT32_T */
-
-#ifndef HAVE_UINT32_T
-#ifdef HAVE_U_INT32_T
-typedef u_int32_t        uint32_t;
-#else
-#ifdef INT32_T
-typedef unsigned INT32_T uint32_t;
-#else
-typedef unsigned int     uint32_t;
-#endif
-#endif
-#endif /* !HAVE_UINT32_T */
-
-#ifndef HAVE_INT64_T
-#if SIZEOF_LONG == 8
-#define INT64_T long 
-#elif SIZEOF_LONG_LONG == 8
-#define INT64_T long long
-#elif   SIZEOF_INT == 8
-#define INT64_T int 
-#elif SIZEOF_LONG >= 8
-#define INT64_T long 
-#define _INT64_IS_NOT_64BIT
-#endif
-#ifdef INT64_T
-typedef INT64_T int64_t;
-#define HAVE_INT64_T 1
-#endif
-#endif /* !HAVE_INT64_T */
-
-#ifndef HAVE_UINT64_T
-#ifdef HAVE_U_INT64_T
-typedef u_int64_t        uint64_t;
-#elif defined(INT64_T)
-typedef unsigned INT64_T uint64_t;
-#endif
-#define HAVE_UINT64_T 1
+#ifndef HAVE_NFDS_T
+typedef unsigned long int nfds_t;
 #endif
 
-#ifndef HAVE_INTMAX_T
-#ifdef SIZEOF_LONG_LONG
-typedef long long intmax_t;
-#define SIZEOF_INTMAX_T SIZEOF_LONG_LONG
-#elif defined(HAVE_INT64_T) && !defined(_INT64_IS_NOT_64BIT)
-typedef int64_t   intmax_t;
-#define SIZEOF_INTMAX_T 8
-#else
-typedef long      intmax_t;
-#define SIZEOF_INTMAX_T SIZEOF_LONG
-#endif
-#define HAVE_INTMAX_T 1
-#endif
-
-#ifndef HAVE_UINTMAX_T
-#ifdef SIZEOF_LONG_LONG
-typedef unsigned long long uintmax_t;
-#elif defined(HAVE_UINT64_T) && !defined(_INT64_IS_NOT_64BIT)
-typedef uint64_t           uintmax_t;
-#else
-typedef unsigned long      uintmax_t;
-#endif
-#define HAVE_UINTMAX_T 1
-#endif
-
-#ifndef HAVE_UINTPTR_T
-#if SIZEOF_LONG == 8
-/* likely 64bit machine with 64bit addressing? */
-    typedef unsigned long uintptr_t;
-#else
-    typedef unsigned uintptr_t;
-#endif
-#endif
-
-#ifndef HAVE_INTPTR_T
-#if SIZEOF_LONG == 8
-/* likely 64bit machine with 64bit addressing? */
-    typedef long intptr_t;
-#else
-    typedef int intptr_t;
-#endif
-#endif
-    
     /*
      *  For the initial release, this will just refer to the
      *  relevant UCD header files.
@@ -244,69 +111,314 @@
      *  to allow application writers to adopt the new header file names.
      */
 
+typedef union {
+   long           *integer;
+   u_char         *string;
+   oid            *objid;
+   u_char         *bitstring;
+   struct counter64 *counter64;
+#ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
+   float          *floatVal;
+   double         *doubleVal;
+   /*
+    * t_union *unionVal; 
+    */
+#endif                          /* NETSNMP_WITH_OPAQUE_SPECIAL_TYPES */
+} netsnmp_vardata;
 
-#include <net-snmp/definitions.h>
-#include <net-snmp/library/snmp_api.h>
-/*
- * #include <net-snmp/library/libsnmp.h> 
+
+#define MAX_OID_LEN	    128 /* max subid's in an oid */
+
+/** @typedef struct variable_list netsnmp_variable_list
+ * Typedefs the variable_list struct into netsnmp_variable_list */
+/** @struct variable_list
+ * The netsnmp variable list binding structure, it's typedef'd to
+ * netsnmp_variable_list.
  */
-
-    typedef struct netsnmp_index_s {
-       size_t      len;
-       oid         *oids;
-    } netsnmp_index;
+typedef struct variable_list {
+   /** NULL for last variable */
+   struct variable_list *next_variable;    
+   /** Object identifier of variable */
+   oid            *name;   
+   /** number of subid's in name */
+   size_t          name_length;    
+   /** ASN type of variable */
+   u_char          type;   
+   /** value of variable */
+    netsnmp_vardata val;
+   /** the length of the value to be copied into buf */
+   size_t          val_len;
+   /** buffer to hold the OID */
+   oid             name_loc[MAX_OID_LEN];  
+   /** 90 percentile < 40. */
+   u_char          buf[40];
+   /** (Opaque) hook for additional data */
+   void           *data;
+   /** callback to free above */
+   void            (*dataFreeHook)(void *);    
+   int             index;
+} netsnmp_variable_list;
 
 
-    typedef struct netsnmp_void_array_s {
-       size_t  size;
-       void * *array;
-    } netsnmp_void_array;
+/** @typedef struct snmp_pdu to netsnmp_pdu
+ * Typedefs the snmp_pdu struct into netsnmp_pdu */
+/** @struct snmp_pdu
+ * The snmp protocol data unit.
+ */	
+typedef struct snmp_pdu {
+
+#define non_repeaters	errstat
+#define max_repetitions errindex
 
     /*
-     * references to various types
+     * Protocol-version independent fields
      */
-    typedef struct netsnmp_ref_void {
-       void * val;
-    } netsnmp_ref_void;
+    /** snmp version */
+    long            version;
+    /** Type of this PDU */	
+    int             command;
+    /** Request id - note: not incremented on retries */
+    long            reqid;  
+    /** Message id for V3 messages note: incremented for each retry */
+    long            msgid;
+    /** Unique ID for incoming transactions */
+    long            transid;
+    /** Session id for AgentX messages */
+    long            sessid;
+    /** Error status (non_repeaters in GetBulk) */
+    long            errstat;
+    /** Error index (max_repetitions in GetBulk) */
+    long            errindex;       
+    /** Uptime */
+    u_long          time;   
+    u_long          flags;
 
-    typedef union {
-        u_long  ul;
-        u_int   ui;
-        u_short us;
-        u_char  uc;
-        long    sl;
-        int     si;
-        short   ss;
-        char    sc;
-        char *  cp;
-        void *  vp;
-    } netsnmp_cvalue;
+    int             securityModel;
+    /** noAuthNoPriv, authNoPriv, authPriv */
+    int             securityLevel;  
+    int             msgParseModel;
 
-#if 0
-    typedef struct netsnmp_ref_u_char {
-       u_char * val;
-    } netsnmp_ref_U_char;
+    /**
+     * Transport-specific opaque data.  This replaces the IP-centric address
+     * field.  
+     */
+    
+    void           *transport_data;
+    int             transport_data_length;
 
-    typedef struct netsnmp_ref_char {
-       char * val;
-    } netsnmp_ref_void;
+    /**
+     * The actual transport domain.  This SHOULD NOT BE FREE()D.  
+     */
 
-    typedef struct netsnmp_ref_int_s {
-       int val;
-    } netsnmp_ref_int;
+    const oid      *tDomain;
+    size_t          tDomainLen;
 
-    typedef struct netsnmp_ref_u_int_s {
-       u_int val;
-    } netsnmp_ref_int;
+    netsnmp_variable_list *variables;
 
-    typedef struct netsnmp_ref_u_long_s {
-       u_long val;
-    } netsnmp_ref_u_long;
-#endif
 
-    typedef struct netsnmp_ref_size_t_s {
-       size_t val;
-    } * netsnmp_ref_size_t;
+    /*
+     * SNMPv1 & SNMPv2c fields
+     */
+    /** community for outgoing requests. */
+    u_char         *community;
+    /** length of community name. */
+    size_t          community_len;  
+
+    /*
+     * Trap information
+     */
+    /** System OID */
+    oid            *enterprise;     
+    size_t          enterprise_length;
+    /** trap type */
+    long            trap_type;
+    /** specific type */
+    long            specific_type;
+    /** This is ONLY used for v1 TRAPs  */
+    unsigned char   agent_addr[4];  
+
+    /*
+     *  SNMPv3 fields
+     */
+    /** context snmpEngineID */
+    u_char         *contextEngineID;
+    /** Length of contextEngineID */
+    size_t          contextEngineIDLen;     
+    /** authoritative contextName */
+    char           *contextName;
+    /** Length of contextName */
+    size_t          contextNameLen;
+    /** authoritative snmpEngineID for security */
+    u_char         *securityEngineID;
+    /** Length of securityEngineID */
+    size_t          securityEngineIDLen;    
+    /** on behalf of this principal */
+    char           *securityName;
+    /** Length of securityName. */
+    size_t          securityNameLen;        
+    
+    /*
+     * AgentX fields
+     *      (also uses SNMPv1 community field)
+     */
+    int             priority;
+    int             range_subid;
+    
+    void           *securityStateRef;
+} netsnmp_pdu;
+
+
+/** @typedef struct snmp_session netsnmp_session
+ * Typedefs the snmp_session struct intonetsnmp_session */
+        struct snmp_session;
+typedef struct snmp_session netsnmp_session;
+
+#define USM_AUTH_KU_LEN     32
+#define USM_PRIV_KU_LEN     32
+
+typedef int        (*snmp_callback) (int, netsnmp_session *, int,
+                                          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.
+ */
+struct snmp_session {
+    /*
+     * Protocol-version independent fields
+     */
+    /** snmp version */
+    long            version;
+    /** Number of retries before timeout. */
+    int             retries;
+    /** Number of uS until first timeout, then exponential backoff */
+    long            timeout;        
+    u_long          flags;
+    struct snmp_session *subsession;
+    struct snmp_session *next;
+
+    /** name or address of default peer (may include transport specifier and/or port number) */
+    char           *peername;
+    /** UDP port number of peer. (NO LONGER USED - USE peername INSTEAD) */
+    u_short         remote_port;
+    /** My Domain name or dotted IP address, 0 for default */
+    char           *localname;
+    /** My UDP port number, 0 for default, picked randomly */
+    u_short         local_port;     
+    /**
+     * Authentication function or NULL if null authentication is used 
+     */
+    u_char         *(*authenticator) (u_char *, size_t *, u_char *, size_t);
+    /** Function to interpret incoming data */
+    netsnmp_callback callback;      
+    /**
+     * Pointer to data that the callback function may consider important 
+     */
+    void           *callback_magic;
+    /** copy of system errno */
+    int             s_errno;
+    /** copy of library errno */
+    int             s_snmp_errno;   
+    /** Session id - AgentX only */
+    long            sessid; 
+
+    /*
+     * SNMPv1 & SNMPv2c fields
+     */
+    /** community for outgoing requests. */
+    u_char         *community;
+    /** Length of community name. */
+    size_t          community_len;  
+    /**  Largest message to try to receive.  */
+    size_t          rcvMsgMaxSize;
+    /**  Largest message to try to send.  */
+    size_t          sndMsgMaxSize;  
+
+    /*
+     * SNMPv3 fields
+     */
+    /** are we the authoritative engine? */
+    u_char          isAuthoritative;
+    /** authoritative snmpEngineID */
+    u_char         *contextEngineID;
+    /** Length of contextEngineID */
+    size_t          contextEngineIDLen;     
+    /** initial engineBoots for remote engine */
+    u_int           engineBoots;
+    /** initial engineTime for remote engine */
+    u_int           engineTime;
+    /** authoritative contextName */
+    char           *contextName;
+    /** Length of contextName */
+    size_t          contextNameLen;
+    /** authoritative snmpEngineID */
+    u_char         *securityEngineID;
+    /** Length of contextEngineID */
+    size_t          securityEngineIDLen;    
+    /** on behalf of this principal */
+    char           *securityName;
+    /** Length of securityName. */
+    size_t          securityNameLen;
+
+    /** auth protocol oid */
+    oid            *securityAuthProto;
+    /** Length of auth protocol oid */
+    size_t          securityAuthProtoLen;
+    /** Ku for auth protocol XXX */
+    u_char          securityAuthKey[USM_AUTH_KU_LEN];       
+    /** Length of Ku for auth protocol */
+    size_t          securityAuthKeyLen;
+    /** Kul for auth protocol */
+    u_char          *securityAuthLocalKey;       
+    /** Length of Kul for auth protocol XXX */
+    size_t          securityAuthLocalKeyLen;       
+
+    /** priv protocol oid */
+    oid            *securityPrivProto;
+    /** Length of priv protocol oid */
+    size_t          securityPrivProtoLen;
+    /** Ku for privacy protocol XXX */
+    u_char          securityPrivKey[USM_PRIV_KU_LEN];       
+    /** Length of Ku for priv protocol */
+    size_t          securityPrivKeyLen;
+    /** Kul for priv protocol */
+    u_char          *securityPrivLocalKey;       
+    /** Length of Kul for priv protocol XXX */
+    size_t          securityPrivLocalKeyLen;       
+
+    /** snmp security model, v1, v2c, usm */
+    int             securityModel;
+    /** noAuthNoPriv, authNoPriv, authPriv */
+    int             securityLevel;  
+    /** target param name */
+    char           *paramName;
+
+    /**
+     * security module specific 
+     */
+    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
+     * XXX: or should we add a new field into this structure?
+     */
+    void           *myvoid;
+};
+
+
+#include <net-snmp/library/types.h>
+#include <net-snmp/definitions.h>
+#include <net-snmp/library/snmp_api.h>
 
 #ifdef __cplusplus
 }
diff --git a/include/net-snmp/varbind_api.h b/include/net-snmp/varbind_api.h
index ed5748b..7f48503 100644
--- a/include/net-snmp/varbind_api.h
+++ b/include/net-snmp/varbind_api.h
@@ -7,16 +7,97 @@
 
 #include <net-snmp/types.h>
 
-    /*
-     *  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.
-     *
-     *  But for the time being, this header file is a placeholder,
-     *  to allow application writers to adopt the new header file names.
-     */
+#ifdef __cplusplus
+extern          "C" {
+#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 */
+    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
+}
+#endif
+
+    /*
+     *    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.
+     *
+     *    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>
 #include <net-snmp/library/mib.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/install-sh b/install-sh
index 2c212cc..3f83ce9 100755
--- a/install-sh
+++ b/install-sh
@@ -1,19 +1,38 @@
-#! /bin/sh
-#
+#!/bin/sh
 # install - install a program, script, or datafile
-# This comes from X11R5 (mit/util/scripts/install.sh).
+
+scriptversion=2010-02-06.18; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
 #
-# Copyright 1991 by the Massachusetts Institute of Technology
+# Copyright (C) 1994 X Consortium
 #
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission.  M.I.T. makes no representations about the
-# suitability of this software for any purpose.  It is provided "as is"
-# without express or implied warranty.
+# 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
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
 #
 # Calling this script install-sh is preferred over install.sh, to prevent
 # `make' implicit rules from creating a file called install from it
@@ -21,230 +40,485 @@
 #
 # This script is compatible with the BSD install script, but was written
 # from scratch.
-#
 
+nl='
+'
+IFS=" ""	$nl"
 
 # set DOITPROG to echo to test this script
 
 # Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
-    case $1 in
-	-c) instcmd="$cpprog"
-	    shift
-	    continue;;
-
-	-d) dir_arg=true
-	    shift
-	    continue;;
-
-	-m) chmodcmd="$chmodprog $2"
-	    shift
-	    shift
-	    continue;;
-
-	-o) chowncmd="$chownprog $2"
-	    shift
-	    shift
-	    continue;;
-
-	-g) chgrpcmd="$chgrpprog $2"
-	    shift
-	    shift
-	    continue;;
-
-	-s) stripcmd="$stripprog"
-	    shift
-	    continue;;
-
-	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
-	    shift
-	    continue;;
-
-	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
-	    shift
-	    continue;;
-
-	*)  if [ x"$src" = x ]
-	    then
-		src=$1
-	    else
-		# this colon is to work around a 386BSD /bin/sh bug
-		:
-		dst=$1
-	    fi
-	    shift
-	    continue;;
-    esac
-done
-
-if [ x"$src" = x ]
-then
-	echo "install:	no input file specified"
-	exit 1
+doit=${DOITPROG-}
+if test -z "$doit"; then
+  doit_exec=exec
 else
-	true
+  doit_exec=$doit
 fi
 
-if [ x"$dir_arg" != x ]; then
-	dst=$src
-	src=""
-	
-	if [ -d $dst ]; then
-		instcmd=:
-	else
-		instcmd=mkdir
-	fi
-else
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
 
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad 
-# if $src (and thus $dsttmp) contains '*'.
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
 
-	if [ -f $src -o -d $src ]
-	then
-		true
-	else
-		echo "install:  $src does not exist"
-		exit 1
-	fi
-	
-	if [ x"$dst" = x ]
-	then
-		echo "install:	no destination specified"
-		exit 1
-	else
-		true
-	fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
-	if [ -d $dst ]
-	then
-		dst="$dst"/`basename $src`
-	else
-		true
-	fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-#  this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='	
+posix_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
 '
-IFS="${IFS-${defaultIFS}}"
 
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
+posix_mkdir=
 
-pathcomp=''
+# Desired mode of installed file.
+mode=0755
 
-while [ $# -ne 0 ] ; do
-	pathcomp="${pathcomp}${1}"
-	shift
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
 
-	if [ ! -d "${pathcomp}" ] ;
-        then
-		$mkdirprog "${pathcomp}"
-	else
-		true
-	fi
+src=
+dst=
+dir_arg=
+dst_arg=
 
-	pathcomp="${pathcomp}/"
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve the last data modification time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -s            $stripprog installed files.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+	shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+	case $mode in
+	  *' '* | *'	'* | *'
+'*	  | *'*'* | *'?'* | *'['*)
+	    echo "$0: invalid mode: $mode" >&2
+	    exit 1;;
+	esac
+	shift;;
+
+    -o) chowncmd="$chownprog $2"
+	shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t) dst_arg=$2
+	shift;;
+
+    -T) no_target_directory=true;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --)	shift
+	break;;
+
+    -*)	echo "$0: invalid option: $1" >&2
+	exit 1;;
+
+    *)  break;;
+  esac
+  shift
 done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+  done
 fi
 
-if [ x"$dir_arg" != x ]
-then
-	$doit $instcmd $dst &&
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call `install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
 
-	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
-	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
-	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
-	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
+if test -z "$dir_arg"; then
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
 
-# If we're going to rename the final executable, determine the name now.
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
 
-	if [ x"$transformarg" = x ] 
-	then
-		dstfile=`basename $dst`
+    *[0-7])
+      if test -z "$stripcmd"; then
+	u_plus_rw=
+      else
+	u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+	u_plus_rw=
+      else
+	u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names starting with `-'.
+  case $src in
+    -*) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+
+    dst=$dst_arg
+    # Protect names starting with `-'.
+    case $dst in
+      -*) dst=./$dst;;
+    esac
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+	echo "$0: $dst_arg: Is a directory" >&2
+	exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+	(dirname "$dst") 2>/dev/null ||
+	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	     X"$dst" : 'X\(//\)[^/]' \| \
+	     X"$dst" : 'X\(//\)$' \| \
+	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+	echo X"$dst" |
+	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\/\)[^/].*/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\/\)$/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\).*/{
+		   s//\1/
+		   q
+		 }
+		 s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+	# Create intermediate dirs using mode 755 as modified by the umask.
+	# This is like FreeBSD 'install' as of 1997-10-28.
+	umask=`umask`
+	case $stripcmd.$umask in
+	  # Optimize common cases.
+	  *[2367][2367]) mkdir_umask=$umask;;
+	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+	  *[0-7])
+	    mkdir_umask=`expr $umask + 22 \
+	      - $umask % 100 % 40 + $umask % 20 \
+	      - $umask % 10 % 4 + $umask % 2
+	    `;;
+	  *) mkdir_umask=$umask,go-w;;
+	esac
+
+	# With -d, create the new directory with the user-specified mode.
+	# Otherwise, rely on $mkdir_umask.
+	if test -n "$dir_arg"; then
+	  mkdir_mode=-m$mode
 	else
-		dstfile=`basename $dst $transformbasename | 
-			sed $transformarg`$transformbasename
+	  mkdir_mode=
 	fi
 
-# don't allow the sed command to completely eliminate the filename
+	posix_mkdir=false
+	case $umask in
+	  *[123567][0-7][0-7])
+	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
+	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+	    ;;
+	  *)
+	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
 
-	if [ x"$dstfile" = x ] 
-	then
-		dstfile=`basename $dst`
+	    if (umask $mkdir_umask &&
+		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+	    then
+	      if test -z "$dir_arg" || {
+		   # Check for POSIX incompatibilities with -m.
+		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+		   # other-writeable bit of parent directory when it shouldn't.
+		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
+		   case $ls_ld_tmpdir in
+		     d????-?r-*) different_mode=700;;
+		     d????-?--*) different_mode=755;;
+		     *) false;;
+		   esac &&
+		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+		   }
+		 }
+	      then posix_mkdir=:
+	      fi
+	      rmdir "$tmpdir/d" "$tmpdir"
+	    else
+	      # Remove any dirs left behind by ancient mkdir implementations.
+	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+	    fi
+	    trap '' 0;;
+	esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+	umask $mkdir_umask &&
+	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+	/*) prefix='/';;
+	-*) prefix='./';;
+	*)  prefix='';;
+      esac
+
+      eval "$initialize_posix_glob"
+
+      oIFS=$IFS
+      IFS=/
+      $posix_glob set -f
+      set fnord $dstdir
+      shift
+      $posix_glob set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+	test -z "$d" && continue
+
+	prefix=$prefix$d
+	if test -d "$prefix"; then
+	  prefixes=
 	else
-		true
+	  if $posix_mkdir; then
+	    (umask=$mkdir_umask &&
+	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+	    # Don't fail if two instances are running concurrently.
+	    test -d "$prefix" || exit 1
+	  else
+	    case $prefix in
+	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+	      *) qprefix=$prefix;;
+	    esac
+	    prefixes="$prefixes '$qprefix'"
+	  fi
 	fi
+	prefix=$prefix/
+      done
 
-# Make a temp file name in the proper directory.
+      if test -n "$prefixes"; then
+	# Don't fail if two instances are running concurrently.
+	(umask $mkdir_umask &&
+	 eval "\$doit_exec \$mkdirprog $prefixes") ||
+	  test -d "$dstdir" || exit 1
+	obsolete_mkdir_used=true
+      fi
+    fi
+  fi
 
-	dsttmp=$dstdir/#inst.$$#
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
 
-# Move or copy the file name to the temp name
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
 
-	$doit $instcmd $src $dsttmp &&
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
 
-	trap "rm -f ${dsttmp}" 0 &&
+    # Copy the file name to the temp name.
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
 
-# and set any options; do chmod last to preserve setuid bits
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
 
-# If any of these fail, we abort the whole thing.  If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
 
-	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
-	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
-	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
-	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       $posix_glob set +f &&
 
-# Now rename the file to the real destination.
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
 
-	$doit $rmcmd -f $dstdir/$dstfile &&
-	$doit $mvcmd $dsttmp $dstdir/$dstfile 
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+	# Now remove or move aside any old file at destination location.
+	# We try this two ways since rm can't unlink itself on some
+	# systems and the destination file might be busy for other
+	# reasons.  In this case, the final cleanup might fail but the new
+	# file should still install successfully.
+	{
+	  test ! -f "$dst" ||
+	  $doit $rmcmd -f "$dst" 2>/dev/null ||
+	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+	  } ||
+	  { echo "$0: cannot unlink or rename $dst" >&2
+	    (exit 1); exit 1
+	  }
+	} &&
 
-fi &&
+	# Now rename the file to the real destination.
+	$doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
 
+    trap '' 0
+  fi
+done
 
-exit 0
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/local/Makefile.in b/local/Makefile.in
index 823b66c..cb84afc 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 \
@@ -28,7 +29,8 @@
 	mib2c.check_values.conf mib2c.check_values_local.conf \
 	mib2c.access_functions.conf mib2c.notify.conf \
 	mib2c.int_watch.conf mib2c.genhtml.conf \
-	mib2c.table_data.conf mib2c.container.conf mib2c.perl.conf
+	mib2c.raw-table.conf mib2c.table_data.conf \
+	mib2c.container.conf mib2c.perl.conf
 MIB2CINSTALLDIR=$(snmplibdir)/mib2c-data
 MIB2CDATASRC=mib2c-conf.d
 MIB2CFILES=default-mfd-top.m2c details-enums.m2i details-node.m2i \
@@ -106,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 \
@@ -121,9 +130,9 @@
 	  touch fixproc.made; \
         fi
 
-snmpconf.made: $(srcdir)/snmpconf
+snmpconf.made: snmpconf
 	if test "x$(PERL)" != "x" ; then \
-	  $(PERL) -p -e 's%^#!.*/perl.*%#!$(PERL)%; s#/usr/local/share#$(datadir)#g; s#/usr/local/etc/snmp#$(SNMPCONFPATH)#g; s#/var/net-snmp#$(PERSISTENT_DIRECTORY)#g' ${srcdir}/snmpconf > snmpconf.made; \
+	  $(PERL) -p -e 's%^#!.*/perl.*%#!$(PERL)%; s#/usr/local/share#$(datadir)#g; s#/usr/local/etc/snmp#$(SNMPCONFPATH)#g; s#/var/net-snmp#$(PERSISTENT_DIRECTORY)#g' snmpconf > snmpconf.made; \
 	else \
 	  touch snmpconf.made; \
         fi
@@ -135,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 fde5939..7f6f29c 100755
--- a/local/Version-Munge.pl
+++ b/local/Version-Munge.pl
@@ -33,12 +33,6 @@
 }
 
 my @exprs = (
-	     # c files with a equal sign and a specific variable
-	     { type => 'c',
-	       expr => 'VersionInfo(\s*=\s*[^"]*)"(.*)"',
-	       repl => 'VersionInfo$1"$VERSION"', 
-	       files => [qw(snmplib/snmp_version.c)]},
-
 	     # documentation files
 	     { type => 'docs',
 	       expr => 'Version: [\.0-9a-zA-Z]+',
@@ -47,12 +41,6 @@
 	       not_required => {'dist/net-snmp.spec' => 1}
 	     },
 
-	     # sed files
-	     { type => 'sed',
-	       expr => '^s\/VERSIONINFO\/[^\/]*',
-	       repl => 's\/VERSIONINFO\/$VERSION',
-	       files => [qw(sedscript.in)]},
-
 	     # Makefiles
 	     { type => 'Makefile',
 	       expr => 'VERSION = [\.0-9a-zA-Z]+',
@@ -61,13 +49,6 @@
 	       not_required => {'dist/Makefile' => 1}
 	     },
 
-	     # Doxygen config
-	     { type => 'doxygen',
-	       expr => 'PROJECT_NUMBER(\s+)=(\s+)\'(.*)\'',
-	       repl => 'PROJECT_NUMBER$1=$2\'$VERSION\'',
-	       files => [qw(doxygen.conf)]
-	     },
-
 	     # perl files
 	     { type => 'perl',
 	       expr => 'VERSION = \'(.*)\'',
@@ -90,17 +71,11 @@
 	     { 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)],
 	     },
 
-	     # configure script files
-	     { type => 'doxygen',
-	       expr => 'PROJECT_NUMBER\s*= (.*)',
-	       repl => 'PROJECT_NUMBER         = $VERSION',
-	       files => [qw(doxygen.conf)],
-	     },
 	    );
 
 #
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/html-add-header-footer.pl b/local/html-add-header-footer.pl
index 96e46a5..c3cb902 100755
--- a/local/html-add-header-footer.pl
+++ b/local/html-add-header-footer.pl
@@ -21,7 +21,7 @@
 use File::stat;
 use Getopt::Long;
 
-my $tidy_options = '-f /dev/null -m -i -asxhtml -wrap 130 -quiet';
+my $tidy_options = '-f /dev/null -m -i -asxhtml -wrap 130 -quiet --quote-nbsp n';
 
 my $pattern = '';
 my $section = '';
diff --git a/local/html-textfile-fix.pl b/local/html-textfile-fix.pl
index f941197..b72075b 100755
--- a/local/html-textfile-fix.pl
+++ b/local/html-textfile-fix.pl
@@ -8,6 +8,7 @@
 # Date:           December 29th, 2005
 # 
 @files = qw"
+CHANGES
 ERRATA
 INSTALL
 NEWS
@@ -17,6 +18,7 @@
 README.agentx
 README.aix
 README.hpux11
+README.irix
 README.krb5
 README.mib2c
 README.mibs
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/generic-source-includes.m2i b/local/mib2c-conf.d/generic-source-includes.m2i
index b2b425e..9341cf9 100644
--- a/local/mib2c-conf.d/generic-source-includes.m2i
+++ b/local/mib2c-conf.d/generic-source-includes.m2i
@@ -10,6 +10,7 @@
 ##
 /* standard Net-SNMP includes */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 
diff --git a/local/mib2c-conf.d/generic-table-indexes-to-oid.m2i b/local/mib2c-conf.d/generic-table-indexes-to-oid.m2i
index b2aa077..c17de4c 100644
--- a/local/mib2c-conf.d/generic-table-indexes-to-oid.m2i
+++ b/local/mib2c-conf.d/generic-table-indexes-to-oid.m2i
@@ -24,11 +24,10 @@
 @        include m2c_setup_node.m2i@
         /* $m2c_node_summary */
 @        if $m2c_node_needlength == 1@
-    snmp_set_var_value(&var_$node, (u_char*)&mib_idx->$node,
+    snmp_set_var_value(&var_$node, &mib_idx->$node,
                        mib_idx->${node}_len * sizeof(mib_idx->${node}[0]));
 @        else@
-    snmp_set_var_value(&var_$node, (u_char*)&mib_idx->$node,
-                       sizeof(mib_idx->$node));
+    snmp_set_var_value(&var_$node, &mib_idx->$node, sizeof(mib_idx->$node));
 @        end@
 
 @    end@ # for each column
diff --git a/local/mib2c-conf.d/mfd-interface.m2c b/local/mib2c-conf.d/mfd-interface.m2c
index 7eca308..d666c9a 100644
--- a/local/mib2c-conf.d/mfd-interface.m2c
+++ b/local/mib2c-conf.d/mfd-interface.m2c
@@ -118,6 +118,10 @@
 
 #include "${name}_interface.h"
 
+netsnmp_feature_require(baby_steps)
+netsnmp_feature_require(row_merge)
+netsnmp_feature_require(check_all_requests_error)
+
 #include <ctype.h>
 
 @eval $m2c_processing_type = 'i'@
@@ -215,14 +219,7 @@
 static Netsnmp_Node_Handler _mfd_${context}_check_dependencies;
 @      end@
 
-NETSNMP_STATIC_INLINE int _${context}_undo_column( ${context}_rowreq_ctx *rowreq_ctx,
-                                                   netsnmp_variable_list *var, int column );
-
 @   end@ # writable
-@if ($m2c_table_persistent == 1) || ($m2c_table_row_creation == 1)@
-NETSNMP_STATIC_INLINE int _${context}_check_indexes(${context}_rowreq_ctx * rowreq_ctx);
-
-@end@
 @   if ("$m2c_data_context" eq "generated") && (($m2c_undo_embed == 0) || ($m2c_data_allocate == 1))@
 ${context}_data *${context}_allocate_data(void);
 
@@ -259,7 +256,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;
 
@@ -335,7 +332,7 @@
                                                   ${context}_oid,
                                                   ${context}_oid_size,
                                                   HANDLER_CAN_BABY_STEP |
-#ifdef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
                                                   HANDLER_CAN_RONLY
 #else
 @if $m2c_table_settable == 1@
@@ -343,7 +340,7 @@
 @else@
                                                   HANDLER_CAN_RONLY
 @end@
-#endif /* NETSNMP_DISABLE_SET_SUPPORT */
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
                                                   );
     if(NULL == reginfo) {
         snmp_log(LOG_ERR,"error registering table ${context}\n");
@@ -362,7 +359,7 @@
     if( access_multiplexer->post_request )
         mfd_modes |= BABY_STEP_POST_REQUEST;
     
-#ifndef NETSNMP_DISABLE_SET_SUPPORT
+#if !(defined(NETSNMP_NO_WRITE_SUPPORT) || defined(NETSNMP_DISABLE_SET_SUPPORT))
     if( access_multiplexer->set_values )
         mfd_modes |= BABY_STEP_SET_VALUES;
     if( access_multiplexer->irreversible_commit )
@@ -385,7 +382,7 @@
         mfd_modes |= BABY_STEP_COMMIT;
     if( access_multiplexer->undo_commit )
         mfd_modes |= BABY_STEP_UNDO_COMMIT;
-#endif
+#endif /* NETSNMP_NO_WRITE_SUPPORT || NETSNMP_DISABLE_SET_SUPPORT */
     
     handler = netsnmp_baby_steps_handler_get(mfd_modes);
     netsnmp_inject_handler(reginfo, handler);
@@ -612,7 +609,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;
 
@@ -661,6 +658,51 @@
 ########################################################################
 ##
 @if ($m2c_table_row_creation == 1) || ($m2c_table_persistent == 1)@
+NETSNMP_STATIC_INLINE int
+_${context}_check_indexes(${context}_rowreq_ctx * rowreq_ctx)
+{
+    int                          rc = SNMPERR_SUCCESS;
+
+    DEBUGMSGTL(("internal:${context}:_${context}_check_indexes","called\n"));
+
+    netsnmp_assert(NULL != rowreq_ctx);
+
+##
+@if $m2c_table_external_indexes != 0@
+    /*
+     * check that the corresponding EXTERNAL row exists
+     */
+@   foreach $node externalindex@
+@      include m2c_setup_node.m2i@
+
+    /* (INDEX) $m2c_node_summary */
+    rc = ${context}_${node}_check_index( rowreq_ctx );
+    if(MFD_SUCCESS != rc)
+        return SNMP_ERR_NOCREATION;
+@   end@ # for each nonindex
+
+@end@ # external index
+@   foreach $node internalindex@
+@      include m2c_setup_node.m2i@
+
+    /* (INDEX) $m2c_node_summary */
+@   eval $m2c_nv_val = "rowreq_ctx->tbl_idx.$node"@
+@   eval $m2c_nv_len = "rowreq_ctx->tbl_idx.${node}_len"@
+@   eval $m2c_nv_str = "rowreq_ctx->tbl_idx.$node"@
+@   include node-validate.m2i@
+       if (MFD_SUCCESS != rc)
+          return rc;
+        rc = ${node}_check_index( rowreq_ctx );
+       if(MFD_SUCCESS != rc)
+           return SNMP_ERR_NOCREATION;
+@   end@ # for each internalindex
+
+    /*
+     * if individual parts look ok, check them as a whole
+     */
+    return ${context}_validate_index( ${context}_if_ctx.user_ctx, rowreq_ctx );
+} /* _${context}_check_indexes */
+##----------------------------------------------------------------------
 /**
  * @internal
  * wrapper
@@ -741,7 +783,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"));
@@ -906,7 +948,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;
@@ -975,54 +1017,6 @@
     return SNMP_ERR_NOERROR;
 } /* _mfd_${context}_get_values */
 
-##----------------------------------------------------------------------
-@if ($m2c_table_row_creation == 1) || ($m2c_table_persistent == 1)@
-NETSNMP_STATIC_INLINE int
-_${context}_check_indexes(${context}_rowreq_ctx * rowreq_ctx)
-{
-    int                          rc = SNMPERR_SUCCESS;
-
-    DEBUGMSGTL(("internal:${context}:_${context}_check_indexes","called\n"));
-
-    netsnmp_assert(NULL != rowreq_ctx);
-
-##
-@if $m2c_table_external_indexes != 0@
-    /*
-     * check that the corresponding EXTERNAL row exists
-     */
-@   foreach $node externalindex@
-@      include m2c_setup_node.m2i@
-
-    /* (INDEX) $m2c_node_summary */
-    rc = ${context}_${node}_check_index( rowreq_ctx );
-    if(MFD_SUCCESS != rc)
-        return SNMP_ERR_NOCREATION;
-@   end@ # for each nonindex
-
-@end@ # external index
-@   foreach $node internalindex@
-@      include m2c_setup_node.m2i@
-
-    /* (INDEX) $m2c_node_summary */
-@   eval $m2c_nv_val = "rowreq_ctx->tbl_idx.$node"@
-@   eval $m2c_nv_len = "rowreq_ctx->tbl_idx.${node}_len"@
-@   eval $m2c_nv_str = "rowreq_ctx->tbl_idx.$node"@
-@   include node-validate.m2i@
-       if (MFD_SUCCESS != rc)
-          return rc;
-        rc = ${node}_check_index( rowreq_ctx );
-       if(MFD_SUCCESS != rc)
-           return SNMP_ERR_NOCREATION;
-@   end@ # for each internalindex
-
-    /*
-     * if individual parts look ok, check them as a whole
-     */
-    return ${context}_validate_index( ${context}_if_ctx.user_ctx, rowreq_ctx );
-} /* _${context}_check_indexes */
-@end@ # $m2c_table_row_creation
-
 ########################################################################
 ##
 /***********************************************************************
@@ -1110,7 +1104,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;
@@ -1157,7 +1151,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"));
 
@@ -1227,7 +1221,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"));
@@ -1291,7 +1285,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;
 
@@ -1379,7 +1373,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;
@@ -1425,7 +1419,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"));
@@ -1458,7 +1452,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"));
@@ -1539,7 +1533,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;
 
@@ -1596,7 +1590,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"));
@@ -1677,7 +1671,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-conf.d/mfd-top.m2c b/local/mib2c-conf.d/mfd-top.m2c
index 12cf9dd..db0f398 100644
--- a/local/mib2c-conf.d/mfd-top.m2c
+++ b/local/mib2c-conf.d/mfd-top.m2c
@@ -252,8 +252,8 @@
 int ${context}_row_ref_decrement(${context}_rowreq_ctx *rowreq_ctx);
 
 @   end@
-extern oid ${context}_oid[];
-extern int ${context}_oid_size;
+extern const oid ${context}_oid[];
+extern const int ${context}_oid_size;
 
 @end@ # for each
 
@@ -309,8 +309,8 @@
 
 @foreach $table table@
 @    include m2c_setup_table.m2i@
-oid ${context}_oid[] = { $context.uc_OID };
-int ${context}_oid_size = OID_LENGTH(${context}_oid);
+const oid ${context}_oid[] = { $context.uc_OID };
+const int ${context}_oid_size = OID_LENGTH(${context}_oid);
 
 @    if "x$m2c_context_reg" ne "x"@
     ${context}_registration  ${context}_user_context;
diff --git a/local/mib2c-conf.d/subagent.m2c b/local/mib2c-conf.d/subagent.m2c
index 52a8258..61fc26d 100644
--- a/local/mib2c-conf.d/subagent.m2c
+++ b/local/mib2c-conf.d/subagent.m2c
@@ -27,6 +27,18 @@
 @include generic-source-includes.m2i@
 #include <signal.h>
 
+/*
+ * If compiling within the net-snmp source code, this will trigger the feature
+ * detection mechansim to ensure the agent_check_and_process() function
+ * is left available even if --enable-minimialist is turned on.  If you
+ * have configured net-snmp using --enable-minimialist and want to compile
+ * this code externally to the Net-SNMP code base, then please add
+ * --with-features="agent_check_and_process enable_stderrlog" to your
+ * configure line.
+ */
+netsnmp_feature_require(agent_check_and_process)
+netsnmp_feature_require(enable_stderrlog)
+
 static int keep_running;
 
 static RETSIGTYPE
diff --git a/local/mib2c-update b/local/mib2c-update
index 669a745..42017e5 100755
--- a/local/mib2c-update
+++ b/local/mib2c-update
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 #
 # $Id$
 #
@@ -39,7 +39,7 @@
 
 error()
 {
-    echo "ERROR: $@" > /dev/stderr
+    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 833a857..9d54f14 100644
--- a/local/mib2c.access_functions.conf
+++ b/local/mib2c.access_functions.conf
@@ -79,7 +79,7 @@
     vptr = put_index_data;
     
     @foreach $idx index@
-    snmp_set_var_value(vptr, (u_char *) /** XXX: $idx data */, /** XXX: length of $idx data */);
+    snmp_set_var_value(vptr, /** XXX: $idx data */, /** XXX: length of $idx data */);
     vptr = vptr->next_variable;
     @end@
 
@@ -107,7 +107,7 @@
     vptr = put_index_data;
     
     @foreach $idx index@
-    snmp_set_var_value(vptr, (u_char *) /** XXX: $idx data */, /** XXX: length of $idx data */);
+    snmp_set_var_value(vptr, /** XXX: $idx data */, /** XXX: length of $idx data */);
     vptr = vptr->next_variable;
     @end@
 
@@ -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.array-user.conf b/local/mib2c.array-user.conf
index d3e026e..31559ac 100644
--- a/local/mib2c.array-user.conf
+++ b/local/mib2c.array-user.conf
@@ -136,8 +136,8 @@
 /*************************************************************
  * oid declarations
  */
-extern oid ${i}_oid[];
-extern size_t ${i}_oid_len;
+extern const oid ${i}_oid[];
+extern const size_t ${i}_oid_len;
 
 #define ${i}_TABLE_OID $i.commaoid
     
@@ -261,8 +261,8 @@
 static     netsnmp_handler_registration *my_handler = NULL;
 static     netsnmp_table_array_callbacks cb;
 
-oid ${i}_oid[] = { ${i}_TABLE_OID };
-size_t ${i}_oid_len = OID_LENGTH(${i}_oid);
+const oid ${i}_oid[] = { ${i}_TABLE_OID };
+const size_t ${i}_oid_len = OID_LENGTH(${i}_oid);
 
 
 #ifdef ${i}_CUSTOM_SORT
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.container.conf b/local/mib2c.container.conf
index 266f007..e76621f 100644
--- a/local/mib2c.container.conf
+++ b/local/mib2c.container.conf
@@ -1,4 +1,7 @@
 ## -*- c -*-
+## Portions of this file ar Copyright (C) Apple, Inc.
+## Use is subject to license terms specified in the COPYING file
+## distributed with the Net-SNMP package.
 ######################################################################
 ## Do the .h file
 ######################################################################
@@ -36,8 +39,15 @@
 #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/net-snmp-agent-includes.h>
+#include <net-snmp/agent/table_container.h>
 #include "${name}.h"
 
+#ifdef ${i.uc}_USE_CACHE
+static void _cache_free(netsnmp_cache * cache, void *magic);
+static int _cache_load(netsnmp_cache * cache, void *vmagic);
+#endif
+
 /** Initializes the $name module */
 void
 init_$name(void)
@@ -47,9 +57,9 @@
     initialize_table_$i();
   @end@
 }
-
+##
 @foreach $i table@
-  # Determine the first/last column names
+## Determine the first/last column names
   @eval $first_column = "-"@
   @eval $last_column = "-"@
   @foreach $c column@
@@ -65,12 +75,18 @@
 void
 initialize_table_$i(void)
 {
-    static oid ${i}_oid[] = {$i.commaoid};
-    size_t ${i}_oid_len   = OID_LENGTH(${i}_oid);
-    netsnmp_handler_registration    *reg;
-    netsnmp_container               *container;
-    netsnmp_table_registration_info *table_info;
+    const oid ${i}_oid[] = {$i.commaoid};
+    const size_t ${i}_oid_len   = OID_LENGTH(${i}_oid);
+    netsnmp_handler_registration    *reg = NULL;
+    netsnmp_mib_handler             *handler = NULL;
+    netsnmp_container               *container = NULL;
+    netsnmp_table_registration_info *table_info = NULL;
+#ifdef ${i.uc}_USE_CACHE
+    netsnmp_cache  *cache = NULL;
+#endif
 
+    DEBUGMSGTL(("${name}:init", "initializing table $i\n"));
+    
     reg = netsnmp_create_handler_registration(
               "$i",     ${i}_handler,
               ${i}_oid, ${i}_oid_len,
@@ -80,9 +96,26 @@
               HANDLER_CAN_RONLY
 @end@
               );
+    if (NULL == reg) {
+        snmp_log(LOG_ERR,"error creating handler registration for $i\n");
+        goto bail;
+    }
+@if $i.settable@
+    /** should a set on a non-existent row create a new one? */
+    /** reg->modes |= HANDLER_CAN_NOT_CREATE; */
+@end@
 
-    container  = netsnmp_container_find( "table_container" );
+    container  = netsnmp_container_find( "$i:table_container" );
+    if (NULL == container) {
+        snmp_log(LOG_ERR,"error creating container for $i\n");
+        goto bail;
+    }
+
     table_info = SNMP_MALLOC_TYPEDEF( netsnmp_table_registration_info );
+    if (NULL == table_info) {
+        snmp_log(LOG_ERR,"error allocating table registration for $i\n");
+        goto bail;
+    }
     netsnmp_table_helper_add_indexes(table_info,
     @foreach $idx index@
                            $idx.type,  /* index: $idx */
@@ -91,13 +124,92 @@
     table_info->min_column = COLUMN_$first_column.uc;
     table_info->max_column = COLUMN_$last_column.uc;
     
-    netsnmp_container_table_register( reg, table_info, container, 0 );
+    /*************************************************
+     *
+     * inject container_table helper
+     */
+    handler = netsnmp_container_table_handler_get(table_info, container,
+                                                  TABLE_CONTAINER_KEY_NETSNMP_INDEX);
+    if (NULL == handler) {
+        snmp_log(LOG_ERR,"error allocating table registration for $i\n");
+        goto bail;
+    }
+    if (SNMPERR_SUCCESS != netsnmp_inject_handler(reg, handler)) {
+        snmp_log(LOG_ERR,"error injecting container_table handler for $i\n");
+        goto bail;
+    }
+    handler = NULL; /* reg has it, will reuse below */
 
-    /* Initialise the contents of the table here */
+#ifdef ${i.uc}_USE_CACHE
+    /*************************************************
+     *
+     * inject cache helper
+     */
+    cache = netsnmp_cache_create(30,    /* timeout in seconds */
+                                 _cache_load, _cache_free,
+                                 ${i}_oid, ${i}_oid_len);
+
+    if (NULL == cache) {
+        snmp_log(LOG_ERR, "error creating cache for $i\n");
+        goto bail;
+    }
+    cache->flags = NETSNMP_CACHE_DONT_INVALIDATE_ON_SET;
+    cache->magic = container;
+
+    handler = netsnmp_cache_handler_get(cache);
+    if (NULL == handler) {
+        snmp_log(LOG_ERR, "error creating cache handler for $i\n");
+        goto bail;
+    }
+
+    if (SNMPERR_SUCCESS != netsnmp_inject_handler(reg, handler)) {
+        snmp_log(LOG_ERR,"error injecting cache handler for $i\n");
+        goto bail;
+    }
+    handler = NULL; /* reg has it*/
+#endif
+
+    /*
+     * register the table
+     */
+    if (SNMPERR_SUCCESS != netsnmp_register_table(reg, table_info)) {
+        snmp_log(LOG_ERR,"error registering table handler for $i\n");
+        reg = NULL; /* it was freed inside netsnmp_register_table */
+        goto bail;
+    }
+
+    /*
+     * Initialise the contents of the table here
+     */
+
+    
+    return; /* ok */
+
+    /*
+     * Some error occurred during registration. Clean up and bail.
+     */
+  bail: /* not ok */
+    
+    if (handler)
+        netsnmp_handler_free(handler);
+
+#ifdef ${i.uc}_USE_CACHE
+    if (cache)
+        netsnmp_cache_free(cache);
+#endif
+    
+    if (table_info)
+        netsnmp_table_registration_info_free(table_info);
+
+    if (container)
+        CONTAINER_FREE(container);
+
+    if (reg) 
+        netsnmp_handler_registration_free(reg);
 }
 
-    /* Typical data structure for a row entry */
-struct ${i}_entry {
+/** Typical data structure for a row entry */
+typedef struct ${i}_entry_s {
     netsnmp_index oid_index;
 
     /* Index values */
@@ -133,10 +245,10 @@
     @end@
 
     int   valid;
-};
+} ${i}_entry;
 
-/* create a new row in the table */
-struct ${i}_entry *
+/** create a new row in the table */
+${i}_entry *
 ${i}_createEntry(netsnmp_container *container, 
   @foreach $idx index@
     @if $idx.needlength@
@@ -147,9 +259,9 @@
     @end@
   @end@
                 ) {
-    struct ${i}_entry *entry;
+    ${i}_entry *entry;
 
-    entry = SNMP_MALLOC_TYPEDEF(struct ${i}_entry);
+    entry = SNMP_MALLOC_TYPEDEF(${i}_entry);
     if (!entry)
         return NULL;
 
@@ -167,10 +279,10 @@
     return entry;
 }
 
-/* remove a row from the table */
+/** remove a row from the table */
 void
 ${i}_removeEntry(netsnmp_container *container, 
-                 struct ${i}_entry *entry) {
+                 ${i}_entry *entry) {
 
     if (!entry)
         return;    /* Nothing to remove */
@@ -179,6 +291,15 @@
         SNMP_FREE( entry );   /* XXX - release any other internal resources */
 }
 
+/** remove a row from the table */
+void
+${i}_freeEntry(${i}_entry *entry) {
+
+    if (!entry)
+        return;    /* Nothing to remove */
+    SNMP_FREE( entry );   /* XXX - release any other internal resources */
+}
+
 /** handles requests for the $i table */
 int
 ${i}_handler(
@@ -189,10 +310,13 @@
 
     netsnmp_request_info       *request;
     netsnmp_table_request_info *table_info;
-    netsnmp_table_data         *table_data;
     netsnmp_container          *container;
-    struct ${i}_entry          *table_entry;
+    ${i}_entry                 *table_entry;
+@if $i.settable@
     int                         ret;
+@end@
+
+    DEBUGMSGTL(("${name}:handler", "Processing request (%d)\n", reqinfo->mode));
 
     switch (reqinfo->mode) {
         /*
@@ -200,9 +324,18 @@
          */
     case MODE_GET:
         for (request=requests; request; request=request->next) {
-            table_entry = (struct ${i}_entry *)
+            if (request->processed)
+               continue;
+            table_entry = (${i}_entry *)
                               netsnmp_container_table_extract_context(request);
             table_info  =     netsnmp_extract_table_info(request);
+            if ((NULL == table_entry) || (NULL == table_info)) {
+                snmp_log(LOG_ERR,
+                         "could not extract table entry or info for $i\n");
+                snmp_set_var_typed_value(request->requestvb, SNMP_ERR_GENERR,
+                                         NULL, 0);
+                continue;
+            }
     
             switch (table_info->colnum) {
             @foreach $c column@
@@ -215,7 +348,7 @@
                 }
             @if $c.needlength@
                 snmp_set_var_typed_value( request->requestvb, $c.type,
-                                 (u_char*)table_entry->$c,
+                                          table_entry->$c,
                                           table_entry->${c}_len);
             @else@
                 snmp_set_var_typed_integer( request->requestvb, $c.type,
@@ -238,9 +371,18 @@
          */
     case MODE_SET_RESERVE1:
         for (request=requests; request; request=request->next) {
-            table_entry = (struct ${i}_entry *)
+            if (request->processed)
+               continue;
+            table_entry = (${i}_entry *)
                               netsnmp_container_table_extract_context(request);
             table_info  =     netsnmp_extract_table_info(request);
+            if ((NULL == table_entry) || (NULL == table_info)) {
+                snmp_log(LOG_ERR,
+                         "could not extract table entry or info for $i\n");
+                snmp_set_var_typed_value(request->requestvb, SNMP_ERR_GENERR,
+                                         NULL, 0);
+                continue;
+            }
     
             switch (table_info->colnum) {
             @foreach $c column@
@@ -251,7 +393,7 @@
                          (table_entry ? RS_ACTIVE : RS_NONEXISTENT ));
             @else@
             @if $c.needlength@
-	        /* or possiblc 'netsnmp_check_vb_type_and_size' */
+	        /* or possibly 'netsnmp_check_vb_type_and_size' */
                 ret = netsnmp_check_vb_type_and_max_size(
                           request->requestvb, $c.type, sizeof(table_entry->$c));
             @else@
@@ -277,10 +419,18 @@
     case MODE_SET_RESERVE2:
 @if $i.creatable@
         for (request=requests; request; request=request->next) {
-            container   =     netsnmp_container_table_extract(request);
-            table_entry = (struct ${i}_entry *)
+            if (request->processed)
+               continue;
+            table_entry = (${i}_entry *)
                               netsnmp_container_table_extract_context(request);
             table_info  =     netsnmp_extract_table_info(request);
+            if ((NULL == table_entry) || (NULL == table_info)) {
+                snmp_log(LOG_ERR,
+                         "could not extract table entry or info for $i\n");
+                snmp_set_var_typed_value(request->requestvb, SNMP_ERR_GENERR,
+                                         NULL, 0);
+                continue;
+            }
     
             switch (table_info->colnum) {
 @if $i.rowstatus@
@@ -290,6 +440,14 @@
                 switch (*request->requestvb->val.integer) {
                 case RS_CREATEANDGO:
                 case RS_CREATEANDWAIT:
+                    container   =     netsnmp_container_table_extract(request);
+                    if (NULL == container) {
+                        snmp_log(LOG_ERR,
+                                 "could not extract table container for $i\n");
+                        snmp_set_var_typed_value(request->requestvb,
+                                                 SNMP_ERR_GENERR, NULL, 0);
+                        continue;
+                    }
                     table_entry = ${i}_createEntry(container
   @foreach $idx index@
     @if $idx.needlength@
@@ -317,6 +475,14 @@
             @end@
             @end@
                 if ( !table_entry ) {
+                    container   =     netsnmp_container_table_extract(request);
+                    if (NULL == container) {
+                        snmp_log(LOG_ERR,
+                                 "could not extract table container for $i\n");
+                        snmp_set_var_typed_value(request->requestvb,
+                                                 SNMP_ERR_GENERR, NULL, 0);
+                        continue;
+                    }
                     table_entry = ${i}_createEntry(container
   @foreach $idx index@
     @if $idx.needlength@
@@ -345,10 +511,26 @@
     case MODE_SET_FREE:
 @if $i.creatable@
         for (request=requests; request; request=request->next) {
+            if (request->processed)
+               continue;
             container   =     netsnmp_container_table_extract(request);
-            table_entry = (struct ${i}_entry *)
+            if (NULL == container) {
+                snmp_log(LOG_ERR,
+                         "could not extract table container for $i\n");
+                snmp_set_var_typed_value(request->requestvb,
+                                         SNMP_ERR_GENERR, NULL, 0);
+                continue;
+            }
+            table_entry = (${i}_entry *)
                               netsnmp_container_table_extract_context(request);
             table_info  =     netsnmp_extract_table_info(request);
+            if ((NULL == table_entry) || (NULL == table_info)) {
+                snmp_log(LOG_ERR,
+                         "could not extract table entry or info for $i\n");
+                snmp_set_var_typed_value(request->requestvb, SNMP_ERR_GENERR,
+                                         NULL, 0);
+                continue;
+            }
     
             switch (table_info->colnum) {
 @if $i.rowstatus@
@@ -382,9 +564,18 @@
 
     case MODE_SET_ACTION:
         for (request=requests; request; request=request->next) {
-            table_entry = (struct ${i}_entry *)
+            if (request->processed)
+               continue;
+            table_entry = (${i}_entry *)
                               netsnmp_container_table_extract_context(request);
             table_info  =     netsnmp_extract_table_info(request);
+            if ((NULL == table_entry) || (NULL == table_info)) {
+                snmp_log(LOG_ERR,
+                         "could not extract table entry or info for $i\n");
+                snmp_set_var_typed_value(request->requestvb, SNMP_ERR_GENERR,
+                                         NULL, 0);
+                continue;
+            }
     
             switch (table_info->colnum) {
             @foreach $c column@
@@ -417,9 +608,18 @@
 @if $i.rowstatus@
         /* Check the internal consistency of an active row */
         for (request=requests; request; request=request->next) {
-            table_entry = (struct ${i}_entry *)
+            if (request->processed)
+               continue;
+            table_entry = (${i}_entry *)
                               netsnmp_container_table_extract_context(request);
             table_info  =     netsnmp_extract_table_info(request);
+            if ((NULL == table_entry) || (NULL == table_info)) {
+                snmp_log(LOG_ERR,
+                         "could not extract table entry or info for $i\n");
+                snmp_set_var_typed_value(request->requestvb, SNMP_ERR_GENERR,
+                                         NULL, 0);
+                continue;
+            }
     
             switch (table_info->colnum) {
             @foreach $c column@
@@ -443,10 +643,26 @@
 
     case MODE_SET_UNDO:
         for (request=requests; request; request=request->next) {
+            if (request->processed)
+               continue;
             container   =     netsnmp_container_table_extract(request);
-            table_entry = (struct ${i}_entry *)
+            if (NULL == container) {
+                snmp_log(LOG_ERR,
+                         "could not extract table container for $i\n");
+                snmp_set_var_typed_value(request->requestvb,
+                                         SNMP_ERR_GENERR, NULL, 0);
+                continue;
+            }
+            table_entry = (${i}_entry *)
                               netsnmp_container_table_extract_context(request);
             table_info  =     netsnmp_extract_table_info(request);
+            if ((NULL == table_entry) || (NULL == table_info)) {
+                snmp_log(LOG_ERR,
+                         "could not extract table entry or info for $i\n");
+                snmp_set_var_typed_value(request->requestvb, SNMP_ERR_GENERR,
+                                         NULL, 0);
+                continue;
+            }
     
             switch (table_info->colnum) {
             @foreach $c column@
@@ -518,10 +734,18 @@
     case MODE_SET_COMMIT:
 @if $i.creatable@
         for (request=requests; request; request=request->next) {
-            container   =     netsnmp_container_table_extract(request);
-            table_entry = (struct ${i}_entry *)
+            if (request->processed)
+               continue;
+            table_entry = (${i}_entry *)
                               netsnmp_container_table_extract_context(request);
             table_info  =     netsnmp_extract_table_info(request);
+            if ((NULL == table_entry) || (NULL == table_info)) {
+                snmp_log(LOG_ERR,
+                         "could not extract table entry or info for $i\n");
+                snmp_set_var_typed_value(request->requestvb, SNMP_ERR_GENERR,
+                                         NULL, 0);
+                continue;
+            }
     
             switch (table_info->colnum) {
 @if $i.rowstatus@
@@ -544,6 +768,14 @@
                     break;
 
                 case RS_DESTROY:
+                    container = netsnmp_container_table_extract(request);
+                    if (NULL == container) {
+                        snmp_log(LOG_ERR,
+                                 "could not extract table container for $i\n");
+                        snmp_set_var_typed_value(request->requestvb,
+                                                 SNMP_ERR_GENERR, NULL, 0);
+                        continue;
+                    }
                     ${i}_removeEntry(container, table_entry );
                 }
             @end@
@@ -566,4 +798,67 @@
     }
     return SNMP_ERR_NOERROR;
 }
+
+#ifdef ${i.uc}_USE_CACHE
+/**
+ * @internal
+ */
+static int
+_cache_load(netsnmp_cache * cache, void *vmagic)
+{
+    netsnmp_container *container;
+    
+    DEBUGMSGTL(("internal:${i}:_cache_load", "called\n"));
+
+    if ((NULL == cache) || (NULL == cache->magic)) {
+        snmp_log(LOG_ERR, "invalid cache for ${i}_cache_load\n");
+        return -1;
+    }
+    container = (netsnmp_container *)cache->magic;
+
+    /** should only be called for an invalid or expired cache */
+    netsnmp_assert((0 == cache->valid) || (1 == cache->expired));
+
+    /*
+     * load cache here (or call function to do it)
+     */
+    /** CONTAINER_INSERT(container, record); */
+
+    return 0;
+}                               /* _cache_load */
+
+/**
+ * @Internal
+ */
+/** remove a row from the table */
+static void
+${i}_freeEntry_cb(${i}_entry *entry, void *magic) {
+
+    ${i}_freeEntry(entry);
+}
+
+/**
+ * @internal
+ */
+static void
+_cache_free(netsnmp_cache * cache, void *magic)
+{
+    netsnmp_container *container;
+
+    DEBUGMSGTL(("internal:${i}:_cache_free", "called\n"));
+
+    if ((NULL == cache) || (NULL == cache->magic)) {
+        snmp_log(LOG_ERR, "invalid cache in ${i}_cache_free\n");
+        return;
+    }
+    container = (netsnmp_container *) cache->magic;
+
+    /*
+     * empty (but don't free) cache here
+     */
+    CONTAINER_CLEAR(container,
+                    (netsnmp_container_obj_func*)${i}_freeEntry_cb,
+                    NULL);
+}                               /* _cache_free */
+#endif /* ${i.uc}_USE_CACHE */
 @end@
diff --git a/local/mib2c.create-dataset.conf b/local/mib2c.create-dataset.conf
index 11fd5d2..9cf75fd 100644
--- a/local/mib2c.create-dataset.conf
+++ b/local/mib2c.create-dataset.conf
@@ -43,8 +43,7 @@
 void
 initialize_table_$i(void)
 {
-    static oid ${i}_oid[] = {$i.commaoid};
-    size_t ${i}_oid_len = OID_LENGTH(${i}_oid);
+    const oid ${i}_oid[] = {$i.commaoid};
     netsnmp_table_data_set *table_set;
 
     /* create the table structure itself */
@@ -78,7 +77,7 @@
        of the request, change ${i}_handler to "NULL" */
     netsnmp_register_table_data_set(netsnmp_create_handler_registration("$i", ${i}_handler,
                                                         ${i}_oid,
-                                                        ${i}_oid_len,
+                                                        OID_LENGTH(${i}_oid),
                                                         HANDLER_CAN_RWRITE),
                             table_set, NULL);
 }
diff --git a/local/mib2c.int_watch.conf b/local/mib2c.int_watch.conf
index 7787a2f..ecc5d10 100644
--- a/local/mib2c.int_watch.conf
+++ b/local/mib2c.int_watch.conf
@@ -50,12 +50,12 @@
 init_${name}(void)
 {
   netsnmp_handler_registration *reg;
-  netsnmp_watcher_info         *winfo;
 
   @foreach $i scalar@
     @if !$i.needlength@
-    static oid ${i}_oid[] = { $i.commaoid };
+    const oid ${i}_oid[] = { $i.commaoid };
     @end@
+  static netsnmp_watcher_info ${i}_winfo;
   @end@
 
   /*
@@ -92,10 +92,9 @@
     @else@
               HANDLER_CAN_RONLY);
     @end@
-    winfo = netsnmp_create_watcher_info(
-                &$i, sizeof($i.decl),
-                 $i.type, WATCHER_FIXED_SIZE);
-    if (netsnmp_register_watched_scalar( reg, winfo ) < 0 ) {
+    netsnmp_init_watcher_info(&${i}_winfo, &$i, sizeof($i.decl),
+			      $i.type, WATCHER_FIXED_SIZE);
+if (netsnmp_register_watched_scalar( reg, &${i}_winfo ) < 0 ) {
         snmp_log( LOG_ERR, "Failed to register watched $i" );
     }
 
diff --git a/local/mib2c.iterate.conf b/local/mib2c.iterate.conf
index 3a55d23..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
@@ -72,12 +106,14 @@
 void
 initialize_table_$i(void)
 {
-    static oid ${i}_oid[] = {$i.commaoid};
-    size_t ${i}_oid_len   = OID_LENGTH(${i}_oid);
+    const oid ${i}_oid[] = {$i.commaoid};
+    const size_t ${i}_oid_len   = OID_LENGTH(${i}_oid);
     netsnmp_handler_registration    *reg;
     netsnmp_iterator_info           *iinfo;
     netsnmp_table_registration_info *table_info;
 
+    DEBUGMSGTL(("${name}:init", "initializing table $i\n"));
+
     reg = netsnmp_create_handler_registration(
               "$i",     ${i}_handler,
               ${i}_oid, ${i}_oid_len,
@@ -103,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,
@@ -211,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 ) {
@@ -307,6 +343,8 @@
     netsnmp_table_request_info *table_info;
     struct ${i}_entry          *table_entry;
 
+    DEBUGMSGTL(("${name}:handler", "Processing request (%d)\n", reqinfo->mode));
+
     switch (reqinfo->mode) {
         /*
          * Read-support (also covers GetNext requests)
@@ -328,7 +366,7 @@
                 }
             @if $c.needlength@
                 snmp_set_var_typed_value( request->requestvb, $c.type,
-                                 (u_char*)table_entry->$c,
+                                          table_entry->$c,
                                           table_entry->${c}_len);
             @else@
                 snmp_set_var_typed_integer( request->requestvb, $c.type,
@@ -364,7 +402,7 @@
                          (table_entry ? RS_ACTIVE : RS_NONEXISTENT ));
             @else@
             @if $c.needlength@
-	        /* or possiblc 'netsnmp_check_vb_type_and_size' */
+	        /* or possibly 'netsnmp_check_vb_type_and_size' */
                 ret = netsnmp_check_vb_type_and_max_size(
                           request->requestvb, $c.type, sizeof(table_entry->$c));
             @else@
diff --git a/local/mib2c.iterate_access.conf b/local/mib2c.iterate_access.conf
index dc7eae3..a38ac20 100644
--- a/local/mib2c.iterate_access.conf
+++ b/local/mib2c.iterate_access.conf
@@ -77,11 +77,13 @@
 void
 initialize_table_$i(void)
 {
-    static oid ${i}_oid[] = {$i.commaoid};
+    const oid ${i}_oid[] = {$i.commaoid};
     netsnmp_table_registration_info *table_info;
     netsnmp_handler_registration *my_handler;
     netsnmp_iterator_info *iinfo;
 
+    DEBUGMSGTL(("${name}:init", "initializing table $i\n"));
+
     /** create the table registration information structures */
     table_info = SNMP_MALLOC_TYPEDEF(netsnmp_table_registration_info);
     iinfo = SNMP_MALLOC_TYPEDEF(netsnmp_iterator_info);
@@ -112,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@
@@ -177,14 +179,14 @@
 
     void *data_context = NULL;
 
-    oid *suffix;
-    size_t suffix_len;
-
     /** column and row index encoded portion */
-    suffix = requests->requestvb->name + reginfo->rootoid_len + 1;
-    suffix_len = requests->requestvb->name_length -
+    const oid * const suffix =
+        requests->requestvb->name + reginfo->rootoid_len + 1;
+    const size_t suffix_len = requests->requestvb->name_length -
         (reginfo->rootoid_len + 1);
     
+    DEBUGMSGTL(("${name}:handler", "Processing request (%d)\n", reqinfo->mode));
+
     for(request = requests; request; request = request->next) {
         var = request->requestvb;
         if (request->processed != 0)
@@ -242,8 +244,8 @@
                                 retval = get_$c(data_context, &retval_len);
                                 if (retval)
                                     snmp_set_var_typed_value(var, $c.type,
-                                                         (const u_char *) retval,
-                                                         retval_len);
+                                                             retval,
+                                                             retval_len);
                             }
                         break;
 
diff --git a/local/mib2c.notify.conf b/local/mib2c.notify.conf
index d211619..77f3330 100644
--- a/local/mib2c.notify.conf
+++ b/local/mib2c.notify.conf
@@ -30,20 +30,21 @@
 #include <net-snmp/agent/net-snmp-agent-includes.h>
 #include "${name}.h"
 
-static 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
 send_${i}_trap( void )
 {
     netsnmp_variable_list  *var_list = NULL;
-    oid ${i}_oid[] = { $i.commaoid };
+    const oid ${i}_oid[] = { $i.commaoid };
     @foreach $v varbinds@
     @if $v.isscalar@
-    oid ${v}_oid[] = { $v.commaoid, 0 };
+    const oid ${v}_oid[] = { $v.commaoid, 0 };
     @end@
     @if !$v.isscalar@
-    oid ${v}_oid[] = { $v.commaoid, /* insert index here */ };
+    const oid ${v}_oid[] = { $v.commaoid, /* insert index here */ };
     @end@
     @end@
 
@@ -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.old-api.conf b/local/mib2c.old-api.conf
index 8daf8f1..8fa270b 100644
--- a/local/mib2c.old-api.conf
+++ b/local/mib2c.old-api.conf
@@ -69,10 +69,12 @@
     @eval $suffixlen = $i.oidlength - $name.oidlength@
 #define $i.uc		$magic
     @if $i.settable@
-{$i.uc,  $i.type,  RWRITE,  var_${name}, $suffixlen,  { $suffix }},
+{$i.uc,  $i.type,  NETSNMP_OLDAPI_RWRITE,
+ var_${name}, $suffixlen,  { $suffix }},
     @end@
     @if !$i.settable@
-{$i.uc,  $i.type,  RONLY ,  var_${name}, $suffixlen,  { $suffix }},
+{$i.uc,  $i.type,  NETSNMP_OLDAPI_RONLY,
+ var_${name}, $suffixlen,  { $suffix }},
     @end@
 @end@
 
@@ -91,10 +93,12 @@
     @eval $magic = $magic + 1@
 #define $c.uc		$magic
     @if $c.settable@
-{$c.uc,  $c.type,  RWRITE,  var_${i}, $suffixlen,  { $suffix $ctmp 1, $c.subid }},
+{$c.uc,  $c.type,  NETSNMP_OLDAPI_RWRITE,
+ var_${i}, $suffixlen,  { $suffix $ctmp 1, $c.subid }},
     @end@
     @if !$c.settable@
-{$c.uc,  $c.type,  RONLY,   var_${i}, $suffixlen,  { $suffix $ctmp 1, $c.subid }},
+{$c.uc,  $c.type,  NETSNMP_OLDAPI_RONLY,
+ var_${i}, $suffixlen,  { $suffix $ctmp 1, $c.subid }},
     @end@
  @end@
 @end@
diff --git a/local/mib2c.raw-table.conf b/local/mib2c.raw-table.conf
new file mode 100644
index 0000000..bd88fdb
--- /dev/null
+++ b/local/mib2c.raw-table.conf
@@ -0,0 +1,612 @@
+## -*- c -*-
+######################################################################
+## Do the .h file
+######################################################################
+@open ${name}.h@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  $Id: mib2c.raw-table.conf 17436 2009-03-31 15:12:19Z dts12 $
+ */
+#ifndef $name.uc_H
+#define $name.uc_H
+
+void init_$name(void);
+
+#endif /* $name.uc_H */
+######################################################################
+## Do the .c file
+######################################################################
+@open ${name}.c@
+/*
+ * Note: this file originally auto-generated by mib2c using
+ *  $Id: mib2c.raw-table.conf 17436 2009-03-31 15:12:19Z 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 "${name}.h"
+
+@foreach $i table@
+  ## Determine the first/last column names
+  @eval $first_column = "-"@
+  @eval $last_column = "-"@
+  @foreach $c column@
+    @if $c.readable@
+      @if "$first_column" eq "-"@
+        @eval $first_column = $c@
+      @end@
+      @eval $last_column = $c@
+    @end@
+  @end@
+
+/* column number definitions for table $i */
+  @foreach $c column@
+#define COLUMN_$c.uc		$c.subid
+  @end@
+
+    /* Typical data structure for a row entry */
+struct ${i}_entry {
+    /* Index values */
+    @foreach $idx index@
+     @if $idx.needlength@
+    $idx.decl $idx[NNN];
+    size_t ${idx}_len;
+     @else@
+    $idx.decl $idx;
+     @end@
+    @end@
+
+    /* Column values */
+    @foreach $c nonindex@
+    @if $c.readable@
+     @if $c.needlength@
+    $c.decl $c[NNN];
+    size_t ${c}_len;
+     @else@
+    $c.decl $c;
+     @end@
+     @if $c.settable@
+      @if !$c.rowstatus@
+       @if $c.needlength@
+    $c.decl old_$c[NNN];
+    size_t old_${c}_len;
+       @else@
+    $c.decl old_$c;
+       @end@
+      @end@
+     @end@
+    @end@
+    @end@
+
+    int   valid;
+};
+
+/* create a new row in the table */
+static struct ${i}_entry *
+${i}_createEntry( int dummy
+  @foreach $idx index@
+    @if $idx.needlength@
+                 , $idx.decl* $idx
+                 , size_t ${idx}_len
+    @else@
+                 , $idx.decl  $idx
+    @end@
+  @end@
+                ) {
+    struct ${i}_entry *entry;
+
+    entry = SNMP_MALLOC_TYPEDEF(struct ${i}_entry);
+    if (!entry)
+        return NULL;
+
+    /* XXX - insert entry into local data structure */
+    return entry;
+}
+
+/* remove a row from the table */
+static void
+${i}_removeEntry(struct ${i}_entry *entry) {
+    if (!entry)
+        return;    /* Nothing to remove */
+
+    /* XXX - remove entry from local data structure */
+
+    if (entry)
+        SNMP_FREE( entry );   /* XXX - release any other internal resources */
+}
+
+
+/** determine the appropriate row for an exact request */
+static struct ${i}_entry *
+${i}_get_entry( netsnmp_variable_list *indexes ) {
+    struct ${i}_entry *row = NULL;
+
+    /* XXX - Use the 'indexes' parameter to retrieve the data
+       structure for the requested row, and return this. */
+    return row;
+}
+
+/** determine the appropriate row for an fuzzy request */
+static struct ${i}_entry *
+${i}_get_next_entry( netsnmp_handler_registration *reginfo,
+                     netsnmp_request_info         *request,
+                     int                           column,
+                     netsnmp_variable_list        *indexes ) {
+    struct ${i}_entry *row = NULL;
+    oid             build_space[MAX_OID_LEN];
+    size_t          build_space_len = 0;
+    size_t          index_oid_len = 0;
+
+    /* XXX - Use the 'indexes' parameter to identify the
+             next row in the table.... */
+
+    /* XXX   .... update the 'indexes' parameter with the
+             appropriate index values ... */
+
+    /* ... and update the requested OID to match this instance */
+    memcpy(build_space, reginfo->rootoid,   /* registered oid */
+                        reginfo->rootoid_len * sizeof(oid));
+    build_space_len = reginfo->rootoid_len;
+    build_space[build_space_len++] = 1;  /* entry */
+    build_space[build_space_len++] = column; /* column */
+    build_oid_noalloc(build_space + build_space_len,
+                      MAX_OID_LEN - build_space_len, &index_oid_len,
+                      NULL, 0, indexes);
+    snmp_set_var_objid(request->requestvb, build_space,
+                       build_space_len + index_oid_len);
+
+    /*  Finally, return the data structure for this row */
+    return row;
+}
+
+
+/** handles requests for the $i table */
+static int
+${i}_handler(
+    netsnmp_mib_handler               *handler,
+    netsnmp_handler_registration      *reginfo,
+    netsnmp_agent_request_info        *reqinfo,
+    netsnmp_request_info              *requests) {
+
+    netsnmp_request_info       *request;
+    netsnmp_table_request_info *table_info;
+    struct ${i}_entry          *table_entry;
+    @if $i.settable@
+    int                         ret;
+    @end@
+
+    switch (reqinfo->mode) {
+        /*
+         * Read-support
+         */
+    case MODE_GET:
+        for (request=requests; request; request=request->next) {
+            table_info  =     netsnmp_extract_table_info( request);
+            table_entry =     ${i}_get_entry( table_info->indexes );
+    
+            switch (table_info->colnum) {
+            @foreach $c column@
+            @if $c.readable@
+            case COLUMN_$c.uc:
+                if ( !table_entry ) {
+                    netsnmp_set_request_error(reqinfo, request,
+                                              SNMP_NOSUCHINSTANCE);
+                    continue;
+                }
+            @if $c.needlength@
+                snmp_set_var_typed_value( request->requestvb, $c.type,
+                                          table_entry->$c,
+                                          table_entry->${c}_len);
+            @else@
+                snmp_set_var_typed_integer( request->requestvb, $c.type,
+                                            table_entry->$c);
+            @end@
+                break;
+            @end@
+            @end@
+            default:
+                netsnmp_set_request_error(reqinfo, request,
+                                          SNMP_NOSUCHOBJECT);
+                break;
+            }
+        }
+        break;
+
+    case MODE_GETNEXT:
+        for (request=requests; request; request=request->next) {
+            table_info  =     netsnmp_extract_table_info( request);
+            table_entry =     ${i}_get_next_entry( reginfo, request,
+                                   table_info->colnum, table_info->indexes );
+    
+            switch (table_info->colnum) {
+            @foreach $c column@
+            @if $c.readable@
+            case COLUMN_$c.uc:
+                if ( !table_entry ) {
+                    netsnmp_set_request_error(reqinfo, request,
+                                              SNMP_NOSUCHINSTANCE);
+                    continue;
+                }
+            @if $c.needlength@
+                snmp_set_var_typed_value( request->requestvb, $c.type,
+                                          table_entry->$c,
+                                          table_entry->${c}_len);
+            @else@
+                snmp_set_var_typed_integer( request->requestvb, $c.type,
+                                            table_entry->$c);
+            @end@
+                break;
+            @end@
+            @end@
+            default:
+                netsnmp_set_request_error(reqinfo, request,
+                                          SNMP_NOSUCHOBJECT);
+                break;
+            }
+        }
+        break;
+
+@if $i.settable@
+        /*
+         * Write-support
+         */
+    case MODE_SET_RESERVE1:
+        for (request=requests; request; request=request->next) {
+            table_info  =     netsnmp_extract_table_info( request);
+            table_entry =     ${i}_get_entry( table_info->indexes );
+    
+            switch (table_info->colnum) {
+            @foreach $c column@
+            @if $c.settable@
+            case COLUMN_$c.uc:
+            @if $c.rowstatus@
+                ret = netsnmp_check_vb_rowstatus(request->requestvb,
+                         (table_entry ? RS_ACTIVE : RS_NONEXISTENT ));
+            @else@
+            @if $c.needlength@
+	        /* or possibly 'netsnmp_check_vb_type_and_size' */
+                ret = netsnmp_check_vb_type_and_max_size(
+                          request->requestvb, $c.type, sizeof(table_entry->$c));
+            @else@
+                /* or possibly 'netsnmp_check_vb_int_range' */
+                ret = netsnmp_check_vb_int( request->requestvb );
+            @end@
+            @end@
+                if ( ret != SNMP_ERR_NOERROR ) {
+                    netsnmp_set_request_error( reqinfo, request, ret );
+                    return SNMP_ERR_NOERROR;
+                }
+                break;
+            @end@
+            @end@
+            default:
+                netsnmp_set_request_error( reqinfo, request,
+                                           SNMP_ERR_NOTWRITABLE );
+                return SNMP_ERR_NOERROR;
+            }
+        }
+        break;
+
+    case MODE_SET_RESERVE2:
+@if $i.creatable@
+        for (request=requests; request; request=request->next) {
+            table_info = netsnmp_extract_table_info( request);
+            table_entry =     ${i}_get_entry( table_info->indexes );
+    
+            switch (table_info->colnum) {
+@if $i.rowstatus@
+            @foreach $c column@
+            @if $c.rowstatus@
+            case COLUMN_$c.uc:
+                switch (*request->requestvb->val.integer) {
+                case RS_CREATEANDGO:
+                case RS_CREATEANDWAIT:
+                    table_entry = ${i}_createEntry( 0
+  @foreach $idx index@
+    @if $idx.needlength@
+                        ,  table_info->indexes->val.string
+                        ,  table_info->indexes->val_len
+    @else@
+                        , *table_info->indexes->val.integer
+    @end@
+  @end@
+                        );
+                    if ( !table_entry ) {
+                        netsnmp_set_request_error( reqinfo, request,
+                                                   SNMP_ERR_RESOURCEUNAVAILABLE );
+                        return SNMP_ERR_NOERROR;
+                    }
+                }
+            @end@
+            @end@
+@else@
+            @foreach $c column@
+            @if $c.creatable@
+            case COLUMN_$c.uc:
+            @end@
+            @end@
+                if ( !table_entry ) {
+                    table_entry = ${i}_createEntry( 0
+  @foreach $idx index@
+    @if $idx.needlength@
+                        ,  table_info->indexes->val.string
+                        ,  table_info->indexes->val_len
+    @else@
+                        , *table_info->indexes->val.integer
+    @end@
+  @end@
+                        );
+                    if ( !table_entry ) {
+                        netsnmp_set_request_error( reqinfo, request,
+                                                   SNMP_ERR_RESOURCEUNAVAILABLE );
+                        return SNMP_ERR_NOERROR;
+                    }
+                }
+                break;
+@end@
+            }
+        }
+@end@
+        break;
+
+    case MODE_SET_FREE:
+@if $i.creatable@
+        for (request=requests; request; request=request->next) {
+            table_info  =     netsnmp_extract_table_info( request);
+            table_entry =     ${i}_get_entry( table_info->indexes );
+    
+            switch (table_info->colnum) {
+@if $i.rowstatus@
+            @foreach $c column@
+            @if $c.rowstatus@
+            case COLUMN_$c.uc:
+                switch (*request->requestvb->val.integer) {
+                case RS_CREATEANDGO:
+                case RS_CREATEANDWAIT:
+                    if (table_entry && !table_entry->valid) {
+                        ${i}_removeEntry(table_entry);
+                    }
+                }
+            @end@
+            @end@
+@else@
+            @foreach $c column@
+            @if $c.creatable@
+            case COLUMN_$c.uc:
+            @end@
+            @end@
+                if ( table_entry && !table_entry->valid ) {
+                    ${i}_removeEntry(table_entry);
+                }
+                break;
+@end@
+            }
+        }
+@end@
+        break;
+
+    case MODE_SET_ACTION:
+        for (request=requests; request; request=request->next) {
+            table_info  =     netsnmp_extract_table_info( request);
+            table_entry =     ${i}_get_entry( table_info->indexes );
+    
+            switch (table_info->colnum) {
+            @foreach $c column@
+            @if $c.settable@
+            @if !$c.rowstatus@
+            case COLUMN_$c.uc:
+                @if $c.needlength@
+                memcpy( table_entry->old_$c,
+                        table_entry->$c,
+                        sizeof(table_entry->$c));
+                table_entry->old_${c}_len =
+                        table_entry->${c}_len;
+                memset( table_entry->$c, 0,
+                        sizeof(table_entry->$c));
+                memcpy( table_entry->$c,
+                        request->requestvb->val.string,
+                        request->requestvb->val_len);
+                table_entry->${c}_len =
+                        request->requestvb->val_len;
+                @else@
+                table_entry->old_$c = table_entry->$c;
+                table_entry->$c     = *request->requestvb->val.integer;
+                @end@
+                break;
+            @end@
+            @end@
+            @end@
+            }
+        }
+@if $i.rowstatus@
+        /* Check the internal consistency of an active row */
+        for (request=requests; request; request=request->next) {
+            table_info  =     netsnmp_extract_table_info( request);
+            table_entry =     ${i}_get_entry( table_info->indexes );
+    
+            switch (table_info->colnum) {
+            @foreach $c column@
+            @if $c.rowstatus@
+            case COLUMN_$c.uc:
+                switch (*request->requestvb->val.integer) {
+                case RS_ACTIVE:
+                case RS_CREATEANDGO:
+                    if (/* XXX */) {
+                        netsnmp_set_request_error( reqinfo, request,
+                                                   SNMP_ERR_INCONSISTENTVALUE );
+                        return SNMP_ERR_NOERROR;
+                    }
+                }
+            @end@
+            @end@
+            }
+        }
+@end@
+        break;
+
+    case MODE_SET_UNDO:
+        for (request=requests; request; request=request->next) {
+            table_info  =     netsnmp_extract_table_info( request);
+            table_entry =     ${i}_get_entry( table_info->indexes );
+    
+            switch (table_info->colnum) {
+            @foreach $c column@
+            @if $c.settable@
+            case COLUMN_$c.uc:
+@if $i.rowstatus@
+  @if $c.rowstatus@
+                switch (*request->requestvb->val.integer) {
+                case RS_CREATEANDGO:
+                case RS_CREATEANDWAIT:
+                    if (table_entry && !table_entry->valid) {
+                        ${i}_removeEntry(table_entry);
+                    }
+                }
+  @else@
+                @if $c.needlength@
+                memcpy( table_entry->$c,
+                        table_entry->old_$c,
+                        sizeof(table_entry->$c));
+                memset( table_entry->old_$c, 0,
+                        sizeof(table_entry->$c));
+                table_entry->${c}_len =
+                        table_entry->old_${c}_len;
+                @else@
+                table_entry->$c     = table_entry->old_$c;
+                table_entry->old_$c = 0;
+                @end@
+  @end@
+@else@
+  @if $c.creatable@
+                if ( table_entry && !table_entry->valid ) {
+                    ${i}_removeEntry(table_entry);
+                } else {
+                    @if $c.needlength@
+                    memcpy( table_entry->$c,
+                            table_entry->old_$c,
+                            sizeof(table_entry->$c));
+                    memset( table_entry->old_$c, 0,
+                            sizeof(table_entry->$c));
+                    table_entry->${c}_len =
+                            table_entry->old_${c}_len;
+                    @else@
+                    table_entry->$c     = table_entry->old_$c;
+                    table_entry->old_$c = 0;
+                    @end@
+                }
+  @else@
+                @if $c.needlength@
+                memcpy( table_entry->$c,
+                        table_entry->old_$c,
+                        sizeof(table_entry->$c));
+                memset( table_entry->old_$c, 0,
+                        sizeof(table_entry->$c));
+                table_entry->${c}_len =
+                        table_entry->old_${c}_len;
+                @else@
+                table_entry->$c     = table_entry->old_$c;
+                table_entry->old_$c = 0;
+                @end@
+  @end@
+@end@
+                break;
+            @end@
+            @end@
+            }
+        }
+        break;
+
+    case MODE_SET_COMMIT:
+@if $i.creatable@
+        for (request=requests; request; request=request->next) {
+            table_info  =     netsnmp_extract_table_info(    request);
+            table_entry =     ${i}_get_entry( table_info->indexes );
+    
+            switch (table_info->colnum) {
+@if $i.rowstatus@
+            @foreach $c column@
+            @if $c.rowstatus@
+            case COLUMN_$c.uc:
+                switch (*request->requestvb->val.integer) {
+                case RS_CREATEANDGO:
+                    table_entry->valid = 1;
+                    /* Fall-through */
+                case RS_ACTIVE:
+                    table_entry->$c = RS_ACTIVE;
+                    break;
+
+                case RS_CREATEANDWAIT:
+                    table_entry->valid = 1;
+                    /* Fall-through */
+                case RS_NOTINSERVICE:
+                    table_entry->$c = RS_NOTINSERVICE;
+                    break;
+
+                case RS_DESTROY:
+                    ${i}_removeEntry(table_entry);
+                }
+            @end@
+            @end@
+@else@
+            @foreach $c column@
+            @if $c.creatable@
+            case COLUMN_$c.uc:
+            @end@
+            @end@
+                if ( table_entry && !table_entry->valid ) {
+                    table_entry->valid = 1;
+                }
+@end@
+            }
+        }
+@end@
+        break;
+@end@
+    }
+    return SNMP_ERR_NOERROR;
+}
+
+/** Initialize the $i table by defining its contents and how it's structured */
+static void
+initialize_table_$i(void)
+{
+    const oid ${i}_oid[] = {$i.commaoid};
+    netsnmp_handler_registration    *reg;
+    netsnmp_table_registration_info *table_info;
+
+    reg = netsnmp_create_handler_registration(
+              "$i",     ${i}_handler,
+              ${i}_oid, OID_LENGTH(${i}_oid),
+@if $i.settable@
+              HANDLER_CAN_RWRITE
+@else@
+              HANDLER_CAN_RONLY
+@end@
+              );
+
+    table_info = SNMP_MALLOC_TYPEDEF( netsnmp_table_registration_info );
+    netsnmp_table_helper_add_indexes(table_info,
+    @foreach $idx index@
+                           $idx.type,  /* index: $idx */
+    @end@
+                           0);
+
+    table_info->min_column = COLUMN_$first_column.uc;
+    table_info->max_column = COLUMN_$last_column.uc;
+
+    netsnmp_register_table( reg, table_info );
+
+    /* Initialise the contents of the table here */
+}
+
+@end@
+/** Initializes the $name module */
+void
+init_$name(void)
+{
+  /* here we initialize all the tables we're planning on supporting */
+  @foreach $i table@
+    initialize_table_$i();
+  @end@
+}
diff --git a/local/mib2c.row.conf b/local/mib2c.row.conf
index 46615c0..f736baa 100755
--- a/local/mib2c.row.conf
+++ b/local/mib2c.row.conf
@@ -117,16 +117,17 @@
 void
 initialize_table_$i(void)
 {
-    static oid ${i}_oid[] = {$i.commaoid};
-    size_t ${i}_oid_len   = OID_LENGTH(${i}_oid);
+    const oid ${i}_oid[] = {$i.commaoid};
     netsnmp_handler_registration    *reg;
     struct ${i}_entry               *row;
     netsnmp_variable_list           *idxs;
     netsnmp_table_registration_info *table_info;
 
+    DEBUGMSGTL(("${name}:init", "initializing table $i\n"));
+
     reg = netsnmp_create_handler_registration(
               "$i",     ${i}_handler,
-              ${i}_oid, ${i}_oid_len,
+              ${i}_oid, OID_LENGTH(${i}_oid),
 @if $i.settable@
               HANDLER_CAN_RWRITE
 @else@
@@ -212,10 +213,9 @@
     v2 = v2->next_variable;
    @end@
    @if $idx.needlength@
-    snmp_set_var_typed_value( v2, $idx.type, (u_char*)row->$idx,
-                                                      row->${idx}_len);
+    snmp_set_var_typed_value( v2, $idx.type, row->$idx, row->${idx}_len);
    @else@
-    snmp_set_var_typed_integer( v2, $idx.type, (u_char*)row->$idx);
+    snmp_set_var_typed_integer( v2, $idx.type, row->$idx);
    @end@
    @eval $first=0@
   @end@
@@ -237,6 +237,8 @@
     struct ${i}_entry          *table_entry;
     int                         ret;
 
+    DEBUGMSGTL(("${name}:handler", "Processing request (%d)\n", reqinfo->mode));
+
     switch (reqinfo->mode) {
         /*
          * Read-support (also covers GetNext requests)
@@ -252,7 +254,7 @@
             case COLUMN_$c.uc:
             @if $c.needlength@
                 snmp_set_var_typed_value( request->requestvb, $c.type,
-                                 (u_char*)table_entry->$c,
+                                          table_entry->$c,
                                           table_entry->${c}_len);
             @else@
                 snmp_set_var_typed_integer( request->requestvb, $c.type,
diff --git a/local/mib2c.scalar.conf b/local/mib2c.scalar.conf
index 438361b..3024fa4 100644
--- a/local/mib2c.scalar.conf
+++ b/local/mib2c.scalar.conf
@@ -36,7 +36,7 @@
 init_$name(void)
 {
   @foreach $i scalar@
-    static oid ${i}_oid[] = { $i.commaoid };
+    const oid ${i}_oid[] = { $i.commaoid };
   @end@
 
   DEBUGMSGTL(("$name", "Initializing\n"));
@@ -75,7 +75,7 @@
 
         case MODE_GET:
             snmp_set_var_typed_value(requests->requestvb, $i.type,
-                                     (u_char *) /* XXX: a pointer to the scalar's data */,
+                                     /* XXX: a pointer to the scalar's data */,
                                      /* XXX: the length of the data in bytes */);
             break;
 
diff --git a/local/mib2c.table_data.conf b/local/mib2c.table_data.conf
index edff06c..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
@@ -70,15 +98,17 @@
 void
 initialize_table_$i(void)
 {
-    static oid ${i}_oid[] = {$i.commaoid};
-    size_t ${i}_oid_len   = OID_LENGTH(${i}_oid);
+    const oid ${i}_oid[] = {$i.commaoid};
+    const size_t ${i}_oid_len   = OID_LENGTH(${i}_oid);
     netsnmp_handler_registration    *reg;
     netsnmp_tdata                   *table_data;
     netsnmp_table_registration_info *table_info;
-@if "$cache" ne "" @
+@if "$cache" == 1 @
     netsnmp_cache                   *cache;
 @end@
 
+    DEBUGMSGTL(("${name}:init", "initializing table $i\n"));
+
     reg = netsnmp_create_handler_registration(
               "$i",     ${i}_handler,
               ${i}_oid, ${i}_oid_len,
@@ -90,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 */
@@ -101,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 */
@@ -174,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);
@@ -187,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;
 }
 
@@ -199,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 ) {
@@ -285,6 +340,8 @@
     struct ${i}_entry          *table_entry;
     int                         ret;
 
+    DEBUGMSGTL(("${name}:handler", "Processing request (%d)\n", reqinfo->mode));
+
     switch (reqinfo->mode) {
         /*
          * Read-support (also covers GetNext requests)
@@ -309,7 +366,7 @@
                 }
             @if $c.needlength@
                 snmp_set_var_typed_value( request->requestvb, $c.type,
-                                 (u_char*)table_entry->$c,
+                                          table_entry->$c,
                                           table_entry->${c}_len);
             @else@
                 snmp_set_var_typed_integer( request->requestvb, $c.type,
@@ -348,7 +405,7 @@
                          (table_entry ? RS_ACTIVE : RS_NONEXISTENT ));
             @else@
             @if $c.needlength@
-	        /* or possiblc 'netsnmp_check_vb_type_and_size' */
+	        /* or possibly 'netsnmp_check_vb_type_and_size' */
                 ret = netsnmp_check_vb_type_and_max_size(
                           request->requestvb, $c.type, sizeof(table_entry->$c));
             @else@
diff --git a/local/minimalist/feature-check b/local/minimalist/feature-check
new file mode 100755
index 0000000..aa4987e
--- /dev/null
+++ b/local/minimalist/feature-check
@@ -0,0 +1,126 @@
+#!/bin/sh
+
+#
+# feature-check: This script looks for feature statements in a file by
+# executing a compiler under CPP and extracting lines of the following
+# form:
+#
+# netsnmp_feature_provides(foo): used to indicate it provides feature "foo"
+# netsnmp_feature_require(bar): used to indicate it requires feature "bar"
+# netsnmp_feature_want(bar): used to indicate it wants feature "bar"
+#                    (but can live without it)
+#
+# Using these lines it then generates a list of feature requirement
+# defines in "include/net-snmp/net-snmp-features.h" which can then be
+# loaded in later passes at compile time.
+#
+# Defines produced when netsnmp_featre_require(bar) is present:
+#   #define NETSNMP_FEATURE_REQUIRE_BAR 1
+#
+# Defines produced when netsnmp_feature_want(bar) is present:
+#   #define NETSNMP_FEATURE_WANT_BAR 1
+#
+# And when all the features have been collected, they are also inverted via
+# the feature-post-check script:
+#
+#   #define NETSNMP_FEATURE_REMOVE_BARX 1  /* never required */
+#   #undef  NETSNMP_FEATURE_REMOVE_BAR      /* required */
+
+# Usage:
+
+# feature-check NORMAL-COMPILE-LINE
+
+SED=sed
+GREP=grep
+CC=gcc
+RM=rm
+
+if test "x$1" = "x--feature-global" ; then
+    # a global file should be included
+    shift
+    global=$1
+    shift
+fi
+
+sourcedir=$1
+shift
+
+source=$1
+shift
+
+destination=$1
+shift
+
+tmpf="$destination.1"
+
+compileline="$@"
+$compileline '-DNETSNMP_FEATURE_CHECKING=1' \
+             '-DNETSNMP_MINIMAL_CODE=1' \
+             '-Dnetsnmp_feature_require(X)=X NSF_RR' \
+             '-Dnetsnmp_feature_provide(X)=X NSF_PP' \
+             '-Dnetsnmp_feature_child_of(X,Y)=X,Y NSF_CO' \
+             '-Dnetsnmp_feature_want(X)=X NSF_WW' $source | \
+    $GREP NSF_ | $GREP -v '^#define' > $tmpf
+
+$RM -f $destination;
+touch $destination;
+
+# process requires
+firstrequire=1
+for i in `grep NSF_RR $tmpf | sed 's/ NSF_RR//'` ; do
+    if test $firstrequire = 1 ; then
+	echo "" >> $destination
+	echo "/* required by $sourcedir/$source */" >> $destination
+	firstrequire=0
+    fi
+    upper=`echo $i | tr a-z A-Z`
+    echo "#define NETSNMP_FEATURE_REQUIRE_$upper 1" >> $destination
+done
+
+# process provides
+firstfeature=1
+for i in `grep NSF_PP $tmpf | sed 's/ NSF_PP//'` ; do
+    if test $firstfeature = 1 ; then
+	echo "" >> $destination
+	echo "/* features provided by $sourcedir/$source */" >> $destination
+	firstfeature=0
+    fi
+    upper=`echo $i | tr a-z A-Z`
+    echo "#define NETSNMP_FEATURE_PROVIDE_$upper 1" >> $destination
+done
+
+# process children
+firstfeature=1
+for i in `grep NSF_CO $tmpf | sed 's/ NSF_CO//'` ; do
+    parent=`echo $i | sed 's/.*,//'`
+    child=`echo $i | sed 's/,.*//'`
+    if test $firstfeature = 1 ; then
+	echo "" >> $destination
+	echo "/* features provided by $sourcedir/$source */" >> $destination
+	firstfeature=0
+    fi
+    upperchild=`echo $child | tr a-z A-Z`
+    upperparent=`echo $parent | tr a-z A-Z`
+    echo "#define NETSNMP_FEATURE_${upperchild}_CHILD_OF_${upperparent} 1" >> $destination
+    echo "#define NETSNMP_FEATURE_PROVIDE_$upperchild 1" >> $destination
+done
+
+# process wants
+firstfeature=1
+for i in `grep NSF_WW $tmpf | sed 's/ NSF_WW//'` ; do
+    if test $firstfeature = 1 ; then
+	echo "" >> $destination
+	echo "/* features wanted by $sourcedir/$source */" >> $destination
+	firstfeature=0
+    fi
+    upper=`echo $i | tr a-z A-Z`
+    echo "#define NETSNMP_FEATURE_WANT_$upper 1" >> $destination
+done
+
+if test "x$global" != "x" ; then
+    cat $destination >> $global
+fi
+
+
+# clean up
+#$RM -f $tmpf
diff --git a/local/minimalist/feature-makedocs b/local/minimalist/feature-makedocs
new file mode 100644
index 0000000..f960191
--- /dev/null
+++ b/local/minimalist/feature-makedocs
@@ -0,0 +1,221 @@
+#!/usr/bin/perl
+
+use strict;
+use IO::File;
+use Getopt::Std;
+our %opts = (W => 2);
+
+getopts('ohwW:', \%opts) || usage();
+
+usage() if ($opts{'h'});
+
+usage() if ($#ARGV != 1);
+
+# should be the feature-details.h file
+my $inputfile = shift @ARGV;
+my $outputfile = shift @ARGV;
+
+my %features;
+my %top;
+my %files;
+my $reqfile;
+
+gather_data($inputfile);
+if ($opts{'w'}) {
+    print_wiki_mode($outputfile);
+} else {
+    print_org_mode($outputfile);
+}
+
+sub gather_data {
+    my ($inputfile) = @_;
+
+    open(I, $inputfile);
+    while(<I>) {
+	if (/(required|provided|wanted) by (.*) \*/) {
+	    $reqfile = $2;
+	} elsif (/define NETSNMP_FEATURE_PROVIDE_(.*) 1/) {
+	    my $lc = lc($1);
+	    die "no reqfile currently set; bug!" if (!defined($reqfile));
+
+	    add($lc);
+
+	    push @{$files{$reqfile}{'provides'}}, $lc;
+	    push @{$features{$lc}{'providedby'}}, $reqfile;
+
+	} elsif (/define NETSNMP_FEATURE_REQUIRE_(.*) 1/) {
+	    my $lc = lc($1);
+	    die "no reqfile currently set; bug!" if (!defined($reqfile));
+
+	    add($lc);
+
+	    push @{$files{$reqfile}{'requires'}}, $lc;
+	    push @{$features{$lc}{'requiredby'}}, $reqfile;
+
+	} elsif (/define NETSNMP_FEATURE_WANT_(.*) 1/) {
+	    my $lc = lc($1);
+	    die "no reqfile currently set; bug!" if (!defined($reqfile));
+
+	    add($lc);
+
+	    push @{$files{$reqfile}{'wants'}}, $lc;
+	    push @{$features{$lc}{'wantedby'}}, $reqfile;
+	} elsif (/define NETSNMP_FEATURE_(.*)_CHILD_OF_(.*) 1/) {
+	    my $child = lc($1);
+	    my $parent = lc($2);
+
+	    add_child($child, $parent);
+	}
+    }
+}
+
+sub add {
+    my ($name) = @_;
+    if (!exists($features{$name})) {
+	# new feature entirely, mark it as a top node
+	$top{$name} = 1;
+    }
+}
+
+sub add_child {
+    my ($child, $parent) = @_;
+
+    add($parent);
+
+    if (exists($top{$child})) {
+	# it's no longer a top node if it's a child of something else
+	delete $top{$child};
+    }
+    $features{$parent}{'children'}{$child}++;
+
+    $features{$child}{'providedby'}, $reqfile;
+}
+
+######################################################################
+# org-mode output
+#
+sub print_org_mode {
+    my ($outputfile) = @_;
+
+    my $fh = new IO::File;
+
+    if (!$fh->open("> $outputfile")) {
+	die "error!\n";
+    }
+
+    foreach my $node (sort keys(%top)) {
+	print_org_node($fh, $node, "*");
+    }
+}
+
+sub print_org_node {
+    my ($fh, $node, $prefix) = @_;
+
+    my $spaces = $prefix;
+    $spaces =~ s/./ /g;
+
+    print $fh "$prefix $node\n";
+    if (exists($features{$node}{'providedby'})) {
+	print $fh "$spaces + provided in file: " .
+	    join(", ", org_link_files(@{$features{$node}{'providedby'}})) . "\n";
+    }
+    if (exists($features{$node}{'requiredby'})) {
+	print $fh "$spaces + required in file: " .
+	    join(", ", org_link_files(@{$features{$node}{'requiredby'}})) . "\n";
+    }
+    if (exists($features{$node}{'wantedby'})) {
+	print $fh "$spaces + wanted in file: " .
+	    join(", ", org_link_files(@{$features{$node}{'wantedby'}})) . "\n";
+    }
+    if (exists($features{$node}{'children'})) {
+	foreach my $child (sort keys(%{$features{$node}{'children'}})) {
+	    print_org_node($fh, $child, $prefix . "*");
+	}
+    }
+}
+
+sub org_link_files {
+    my @files = @_;
+    map { $_ = "[[file:$_][$_]]"; } @files;
+    return @files;
+}
+
+######################################################################
+# wiki output
+#
+sub print_wiki_mode {
+    my ($outputfile) = @_;
+
+    my $fh = new IO::File;
+    my $depth = 0;
+
+    if (!$fh->open("> $outputfile")) {
+	die "error!\n";
+    }
+
+    print $fh "'''The contents of this page is auto-generated from local/minimalist/feature-makedocs; do not edit by hand (changes will be lost)'''\n\n";
+    print $fh "Details of the feature marking system and how it is used can be found at [[Feature Marking and Selection]]\n\n";
+
+    foreach my $node (sort keys(%top)) {
+	print_wiki_node($fh, $node, $depth+1);
+    }
+}
+
+sub print_wiki_node {
+    my ($fh, $node, $depth) = @_;
+
+    my $dataheader;
+    my $depthincrease = 1;
+
+    if ($depth > $opts{'W'}) {
+	print $fh "*" x ($depth - $opts{'W'} + 1) . " $node\n";
+	$dataheader = "*" x ($depth - $opts{'W'} + 2);
+	$depthincrease++;
+    } else {
+	print $fh "=" x $depth . " $node " . "=" x $depth . "\n";
+	$dataheader = "*";
+    }
+
+    if (exists($features{$node}{'providedby'})) {
+	print $fh "$dataheader provided in file: " .
+	    join(", ", wiki_link_files(@{$features{$node}{'providedby'}})) ."\n";
+    }
+    if (exists($features{$node}{'requiredby'})) {
+	print $fh "$dataheader required in file: " .
+	    join(", ", wiki_link_files(@{$features{$node}{'requiredby'}})) ."\n";
+    }
+    if (exists($features{$node}{'wantedby'})) {
+	print $fh "$dataheader wanted in file: " .
+	    join(", ", wiki_link_files(@{$features{$node}{'wantedby'}})) . "\n";
+    }
+    if (exists($features{$node}{'children'})) {
+	if ($depth >= $opts{'W'}) {
+	    print $fh "$dataheader Children:\n";
+	}
+	foreach my $child (sort keys(%{$features{$node}{'children'}})) {
+	    print_wiki_node($fh, $child, $depth + $depthincrease);
+	}
+    }
+}
+
+sub wiki_link_files {
+    my @files = @_;
+    map { $_ = "[http://net-snmp.svn.sourceforge.net/viewvc/net-snmp/trunk/net-snmp/$_?view=markup $_]"; } @files;
+    return @files;
+}
+
+######################################################################
+# help output
+#
+sub usage {
+    print "Usage: $0 [FLAGS] INPUTFILE OUTPUTFILE\n\n";
+    print "FLAGS:\n";
+    print "\t-h\thelp\n";
+    print "\t-o\tOutput style: Org-Mode [default]\n";
+    print "\t-w\tOutput style: wiki\n";
+    print "\t-W DEPTH\tWiki header to bullet list depth (default 2)\n";
+    print "\nINPUT/OUTPUT\n";
+    print "\tINPUTFILE:\tlocation of the include/net-snmp/feature-details.h file\n";
+    print "\tOUTPUTFILE:\tthe file to write the results to\n";
+    exit;
+}
diff --git a/local/minimalist/feature-remove b/local/minimalist/feature-remove
new file mode 100755
index 0000000..aae340d
--- /dev/null
+++ b/local/minimalist/feature-remove
@@ -0,0 +1,128 @@
+#!/bin/sh
+
+#
+# feature-remove: removes features by defining special variables
+# indicating particular code segments are unneeded.  This is done by
+# examining the list of provided features and defining a REMOVE
+# equivalent if no other module required it.
+#
+# Arguments:
+#   feature-remove mainheader.h globalheader.h THEREST
+#
+# Where THEREST are a list of features to remove (default) or add.
+#
+#   --add switches to "adding" and --remove switches back.
+#
+# E.G.
+#   feature-remove mainheader.h globalheader.h oid_stash --add container_null
+#
+CP=cp
+
+featureheader="$1"
+featureheaderin="$1.in"
+featureheaderglobal="$2"
+shift
+shift
+
+argumenttype="--remove"
+removethese=""
+addthese=""
+
+while test "x$1" != "x" ; do
+    uc=`echo $1 | tr a-z A-Z`
+    case $1 in
+	--*)
+	    argumenttype="$1"
+	    ;;
+
+	*)
+	    if test "x$argumenttype" = "x--remove" ; then
+		removethese="$removethese $uc"
+	    else
+		addthese="$addthese $uc"
+	    fi
+	    ;;
+    esac
+    shift
+done
+
+echo "" > $featureheader
+echo "/* The following defines features that Net-SNMP HAS or has REMOVEd */" >> $featureheader
+
+haslist=" "
+
+for i in `grep NETSNMP_FEATURE_PROVIDE_ $featureheaderin | sed 's/.*FEATURE_PROVIDE_//;s/ .*//'` ; do
+    #
+    # If we were specifically asked to include it, then do so
+    #
+    if echo " $addthese " | grep " ${i} " > /dev/null ; then
+       # The user required it ; report we're using it
+	echo "#define NETSNMP_FEATURE_HAS_$i 1" >> $featureheader
+	haslist="${haslist}${i} "
+
+    #
+    # check to see if something requried it
+    #
+    elif grep "NETSNMP_FEATURE_REQUIRE_${i} " $featureheaderglobal > /dev/null ; then
+	# if so, make sure we weren't asked to remove it
+       	if echo  " $removethese "| grep " $i " > /dev/null ; then
+       	   # Uh oh; they specifically wanted it removed but it was required
+	   echo "Feature Error:"
+       	   echo " Feature '$i' was asked to be removed but something required it"
+       	   echo " See the $featureheaderglobal file for dependency details"
+	   echo ""
+           rm -f $featureheader
+       	   exit 1
+       	fi
+
+       	# something required it ; report we're using it
+       	echo "#define NETSNMP_FEATURE_HAS_$i 1" >> $featureheader
+	haslist="${haslist}${i} "
+
+    #
+    # check to see if something "wanted" it
+    #
+    elif grep "NETSNMP_FEATURE_WANT_${i} " $featureheaderglobal > /dev/null ; then
+	   # nothing required it, but something "wanted" it
+
+	   # check to make sure we weren't asked to exclude it
+           if echo " $removethese " | grep " $i " > /dev/null ; then
+               # we were specifically asked *not* to use this feature
+               echo "#define NETSNMP_FEATURE_REMOVE_$i 1" >> $featureheader
+           else
+	       # something wanted it, so we'll include it
+	       echo "#define NETSNMP_FEATURE_HAS_$i 1" >> $featureheader
+	       haslist="${haslist}${i} "
+           fi
+
+
+    #
+    # check to see if something required a parent
+    #
+    elif egrep NETSNMP_FEATURE_${i}_CHILD_OF $featureheaderglobal > /dev/null ; then
+	parentnames=`egrep NETSNMP_FEATURE_${i}_CHILD_OF $featureheaderglobal | sed 's/.*CHILD_OF_//;s/ .*//;'`
+
+	foundone=0
+	for parentname in $parentnames ; do
+   	    # if the parent was desired, then we are too:
+	    
+	    if test $foundone = 0 ; then
+		if egrep "NETSNMP_FEATURE_HAS_${parentname} " $featureheader > /dev/null ; then
+       		    echo "#define NETSNMP_FEATURE_HAS_$i 1" >> $featureheader
+		    haslist="${haslist}${i} "
+		    foundone=1
+		fi
+	    fi
+        done
+	if test $foundone = 0 ; then
+    	    echo "#define NETSNMP_FEATURE_REMOVE_$i 1" >> $featureheader
+	fi
+
+    #
+    # no one required or wanted it -- it is safe to remove it
+    #
+    else
+    	 echo "#define NETSNMP_FEATURE_REMOVE_$i 1" >> $featureheader
+    fi
+done
+
diff --git a/local/minimalist/find-unused-code b/local/minimalist/find-unused-code
new file mode 100755
index 0000000..89e3c8c
--- /dev/null
+++ b/local/minimalist/find-unused-code
@@ -0,0 +1,117 @@
+#!/usr/bin/perl
+
+# searches for .o files in the current directory and examines each for
+# defined functions (T) and undefined references (U) and lists
+# anything that isn't required by something else or itself
+
+# useful calling sorted by file:
+#   perl minimal/find-unused-code | sort 
+
+use File::Find;
+use Data::Dumper;
+use strict;
+use Getopt::GUI::Long;
+
+my %opts;
+
+LocalGetOptions(\%opts,
+		['g|grep',      "run find/grep to look for string usages"],
+    );
+
+my (@files, %defined, %lookingfor);
+
+find(\&dot_os, ".");
+
+foreach my $file (@files) {
+    collect_from_file($file);
+}
+
+
+if ($#ARGV > -1) {
+    print "Dumping found symbol usages:\n\n";
+    foreach my $arg (@ARGV) {
+	print "$arg:\n";
+	print "  ", join("\n  ", @{$defined{$arg}{'usages'}}),"\n\n";
+    }
+    exit;
+}
+
+foreach my $function (sort { $defined{$a}{'source'} cmp $defined{$b}{'source'} } keys(%defined)) {
+    if (exists($defined{$function}{'source'}) &&
+	!exists($defined{$function}{'usages'})) {
+	if (check_for_once_only($defined{$function}{'source'}, $function)) {
+	    printf("%-38s %-38s\n", $defined{$function}{'source'}, $function);
+	    if ($opts{'g'}) {
+		open(P,"find . -regex '.*.\\(c\\|xs\\)' | xargs grep -n $function|");
+		while(<P>) {
+		    print "  $_";
+		}
+		close(P);
+		print "\n";
+	    }
+	}
+    }
+}
+
+sub dot_os {
+    return if (!/\.o$/);
+    return if ($File::Find::name =~ /\/.libs\//);
+#    return if ($File::Find::name =~ /\/(perl|python)\//);
+    push @files, $File::Find::name;
+}
+
+sub collect_from_file {
+    my $file = shift;
+#    print "searching $file\n";
+    open(I,"nm $file|");
+    while(<I>) {
+	$defined{$1}{'source'} = $file if (/ T (.*)/);
+	push @{$defined{$1}{'usages'}}, $file if (/ U (.*)/);
+    }
+    close(I);
+}
+	
+sub check_for_once_only {
+    my ($file, $function) = @_;
+    $file =~ s/\.o/.c/;
+    open(I, $file);
+    my $usages = 0;
+    while(<I>) {
+	if (/$function/) {
+	    $usages++;
+	}
+	if ($usages > 1) {
+	    close(I);
+	    return 0;
+	}
+    }
+    return 1;
+}
+
+
+sub LocalGetOptions {
+    if (eval {require Getopt::GUI::Long;}) {
+        import Getopt::GUI::Long;
+        # optional configure call
+        Getopt::GUI::Long::Configure(qw(display_help no_ignore_case capture_output no_gui allow_zero));
+        return GetOptions(@_);
+    }
+    require Getopt::Long;
+    import Getopt::Long;
+    # optional configure call
+    Getopt::Long::Configure(qw(display_help no_ignore_case capture_output));
+    GetOptions(LocalOptionsMap(@_));
+}
+
+sub LocalOptionsMap {
+    my ($st, $cb, @opts) = ((ref($_[0]) eq 'HASH') 
+                            ? (1, 1, $_[0]) : (0, 2));
+    for (my $i = $st; $i <= $#_; $i += $cb) {
+        if ($_[$i]) {
+            next if (ref($_[$i]) eq 'ARRAY' && $_[$i][0] =~ /^GUI:/);
+            push @opts, ((ref($_[$i]) eq 'ARRAY') ? $_[$i][0] : $_[$i]);
+            push @opts, $_[$i+1] if ($cb == 2);
+        }
+    }
+    return @opts;
+}
diff --git a/local/minimalist/ignore.regexp b/local/minimalist/ignore.regexp
new file mode 100644
index 0000000..e09b99c
--- /dev/null
+++ b/local/minimalist/ignore.regexp
@@ -0,0 +1,4 @@
+~$
+#$
+\/.#
+\/.svn\/
diff --git a/local/minimalist/remove-unneeded-modules b/local/minimalist/remove-unneeded-modules
new file mode 100755
index 0000000..ad45954
--- /dev/null
+++ b/local/minimalist/remove-unneeded-modules
@@ -0,0 +1,130 @@
+#!/bin/perl
+
+# steps:
+# 1) run configure
+# 2) perl local/minimalist/remove-unneeded-modules
+# 3) make depend
+# 4) make
+
+use File::Find;
+use Data::Dumper;
+use strict;
+
+my %exceptions = qw(
+   agent/mibgroup/mibdefs.h              	              1
+   agent/mibgroup/struct.h               	              1
+   agent/mibgroup/agentx/protocol.h      	              1
+   agent/mibgroup/agentx/agentx_config.h 	              1
+   agent/mibgroup/agentx/subagent.h      	              1
+   agent/mibgroup/mib_module_includes.h  	              1
+   agent/mibgroup/mib_module_inits.h     	              1
+   agent/mibgroup/mib_module_dot_conf.h  	              1
+   agent/mibgroup/mib_module_shutdown.h  	              1
+   agent/mibgroup/agent_module_includes.h	              1
+   agent/mibgroup/agent_module_inits.h   	              1
+   agent/mibgroup/agent_module_dot_conf.h	              1
+   agent/mibgroup/agent_module_shutdown.h	              1
+   agent/mibgroup/mibII/vacm_conf.c      	              1
+   agent/mibgroup/snmpv3/usmConf.c       	              1
+   agent/mibgroup/utilities/iquery.c     	              1
+   agent/mibgroup/mibII/vacm_conf.h      	              1
+   agent/mibgroup/snmpv3/usmConf.h       	              1
+   agent/mibgroup/utilities/iquery.h     	              1
+   agent/mibgroup/util_funcs/MIB_STATS_CACHE_TIMEOUT.h        1
+   agent/mibgroup/host_res.h                                  1
+   agent/mibgroup/hr_filesys.h                                1
+   agent/mibgroup/if-mib/ifTable/ifTable_defs.h               1
+   agent/mibgroup/ifTable_defs.h                              1
+   agent/mibgroup/mibII/mibII_common.h                        1
+   agent/mibgroup/mnttypes.h                                  1
+   agent/mibgroup/utilities/execute.h                         1
+);
+
+my %opts;
+
+LocalGetOptions(\%opts,
+		['n|dry-run',      "Dry-run, just say what you would do"],
+		['v|verbose',      "Show what files are being left too"],
+    );
+
+my $inputMakefile = $ARGV[0] || "agent/mibgroup/Makefile";
+my $inputDir = $ARGV[1] || "agent/mibgroup";
+
+my $collecting = 0;
+my (%files, @files);
+
+open(I, $inputMakefile);
+while(<I>) {
+    if (/mib_module_list_c=/) {
+	$collecting = 1;
+    } elsif ($collecting) {
+	if (! /\\\s*$/) {
+	    $collecting = 0;
+	}
+	chomp();
+	s/\\//;
+	s/\s*//g;
+	s/\.c//;
+	push @files, "agent/mibgroup/$_";
+	$files{"agent/mibgroup/$_.c"} = 1;
+	$files{"agent/mibgroup/$_.h"} = 1;
+    }
+}
+
+find(\&remove_files, $inputDir);
+
+sub remove_files {
+    return if (!/\.[ch]$/);
+    return if (/\.h$/); # XXX: we need to delete headers eventually too
+    return if (/_constants.h/);
+    return if (exists($exceptions{$File::Find::name}));
+
+    if (!exists($files{$File::Find::name})) {
+	Unlink($_, $File::Find::name);
+    } elsif ($opts{'v'}) {
+	print "Leaving $File::Find::name\n";
+    }
+}
+
+sub Unlink {
+    my ($file, $fullfile) = @_;
+    print "Removing $fullfile\n";
+    if (!$opts{'n'}) {
+	unlink($file);
+	if (-f "$file") {
+	    print "*** FAILED to remove $file\n"; 
+	}
+    }
+}
+
+
+sub LocalGetOptions {
+    if (eval {require Getopt::GUI::Long;}) {
+        import Getopt::GUI::Long;
+        # optional configure call
+	my @gopts = qw(no_ignore_case no_gui allow_zero);
+	if ($Getopt::GUI::Long::VERSION > 0.2) {
+	    push @gopts, qw(display_help capture_output);
+	}
+        Getopt::GUI::Long::Configure(@gopts);
+        return GetOptions(@_);
+    }
+    require Getopt::Long;
+    import Getopt::Long;
+    # optional configure call
+    Getopt::Long::Configure(qw(display_help no_ignore_case capture_output));
+    GetOptions(LocalOptionsMap(@_));
+}
+
+sub LocalOptionsMap {
+    my ($st, $cb, @opts) = ((ref($_[0]) eq 'HASH') 
+                            ? (1, 1, $_[0]) : (0, 2));
+    for (my $i = $st; $i <= $#_; $i += $cb) {
+        if ($_[$i]) {
+            next if (ref($_[$i]) eq 'ARRAY' && $_[$i][0] =~ /^GUI:/);
+            push @opts, ((ref($_[$i]) eq 'ARRAY') ? $_[$i][0] : $_[$i]);
+            push @opts, $_[$i+1] if ($cb == 2);
+        }
+    }
+    return @opts;
+}
diff --git a/local/minimalist/removeifdefcode.pl b/local/minimalist/removeifdefcode.pl
new file mode 100755
index 0000000..5a64c05
--- /dev/null
+++ b/local/minimalist/removeifdefcode.pl
@@ -0,0 +1,333 @@
+#! /usr/bin/perl
+
+use strict;
+use File::Copy;
+use File::Basename;
+use IO::File;
+use Getopt::Std;
+
+my $ID_NOREAD  = "NETSNMP_NO_READ_SUPPORT";
+my $ID_NOWRITE = "NETSNMP_NO_WRITE_SUPPORT";
+# my $ID_MIN     = "NETSNMP_MINIMAL_CODE";
+
+my($ST_OFF, $ST_IF, $ST_ELSE, $ST_IFN, $ST_ELSEN) =
+  ("off", "if", "else", "ifnot", "elsenot");
+
+my %opts    = ();
+my %thash   = ();
+my $canwrite = 1; # current write state
+
+my($appname,$apppath) = fileparse($0);
+
+my $minimal_include_path = "include/net-snmp/net-snmp-features.h";
+
+
+if ( (!getopts("rwmi:v",\%opts)) || (1 != $#ARGV) ) {
+  print "$appname [options] from-directory to-direpctory\n";
+  print "-r     parse out code unneeded by $ID_NOREAD ifdef\n";
+  print "-w     parse out code unneeded by $ID_NOWRITE ifdef (DEFAULT)\n";
+  print "-m     parse out code unneeded according minimalist ifdefs\n";
+  print "       requires from-directory to be the top of the net-snmp tree\n";
+  print "       (This is multiple ifdefs auto selected depending\n";
+  print "        on the net-snmp source configuration)\n\n";
+  print "-i 'ignore-file'  file of files to ignore (not copy)\n";
+  print "-v     print verbose info to standard out\n";
+  die "Error: two command line arguments required\n";
+}
+
+#default to everything
+if ( (!exists $opts{r}) && (!exists $opts{w}) && (!exists $opts{m}) ) {
+  $thash{"$ID_NOWRITE"} = "$ST_OFF";
+}
+else {
+  $thash{"$ID_NOREAD"}  = "$ST_OFF" if ( exists $opts{r} );
+  $thash{"$ID_NOWRITE"} = "$ST_OFF" if ( exists $opts{w} );
+}
+
+my $fromdir = $ARGV[0];
+my $todir   = $ARGV[1];
+
+if ( !(-e $fromdir) ) {
+  die "Error: $appname: from directory does not exist: '$fromdir'\n";
+}
+if ( !(-d $fromdir) ) {
+    die "Error: $appname: from directory, '$fromdir', must be a directory\n";
+}
+
+if ( exists $opts{m} ) {
+    load_minamal_ifdefs();
+}
+
+# create search string from tags
+# minimal must be done before this
+my $search = join "|", (keys %thash);
+
+
+# check for and load ignore file
+my $igstring = "";
+if ( exists $opts{i} ) {
+  open my($IH), "< $opts{i}" or
+    die "Could not open ignore-file '$opts{i}': $!";
+  my @iglist = <$IH>;
+  $IH->close();
+  chomp @iglist;
+  $igstring = join "|", @iglist;
+  $igstring = "(" . $igstring . ")";
+  print "ignore string: \'$igstring\'\n" if (exists $opts{v});
+}
+
+
+
+if ( -e $todir ) {
+  if ( ((-d $fromdir) && !(-d $todir)) ||
+	   (!(-d $fromdir) && (-d $todir)) ) {
+	die "Error: $appname: from-directory and to-directory must both either be a file or both be a directory\n";
+  }
+}
+else {
+  if (-d $fromdir) {
+	print "Warning: $appname: '$todir' does not exist, creating\n";
+	mkdir "$todir" or
+      die "Error: $appname: Unable to create to-directory '$todir': $!\n";
+  }
+}
+
+if (-d $fromdir) {
+  parsedirectory($fromdir, $todir);
+}
+else {
+  parsefile($fromdir, $todir);
+}
+
+
+
+exit(0);
+
+
+# PROCEDURES  PROCEDURES  PROCEDURES  PROCEDURES  PROCEDURES
+
+
+sub parsedirectory {
+  my($fdir, $tdir) = @_;
+
+  my @ldirs = ();
+  my $DH;
+  opendir my($DH), $fdir or die "Could not open directory '$fdir': $!";
+  if ( !(-e $tdir) || !(-d $tdir) ) {
+    mkdir $tdir or die "Could not create directory '$tdir': $!";
+  }
+  my @flist = readdir $DH;
+  closedir $DH;
+  # remove . and ..
+  @flist = grep (! /(^\.$|^\.\.$)/ , @flist);
+
+  while (my $name = shift @flist) {
+    if (-d "$fdir/$name") {
+      push @ldirs, "$name";
+    }
+    else {
+      parsefile("$fdir/$name", "$tdir/$name");
+    }
+  }
+
+  while (my $name = shift @ldirs) {
+    parsedirectory("$fdir/$name", "$tdir/$name")
+  }
+
+} # parsedirectory
+
+
+# returns 1 if current state for tag is write, 0 otherwise
+sub iswritestate {
+  my $tag = "";
+
+  foreach $tag (keys %thash) {
+	if ( ($thash{$tag} eq "$ST_ELSE") ||
+		 ($thash{$tag} eq "$ST_IFN") ) {
+	  return(0);
+    }
+  }
+
+  return(1);
+} # iswritestate
+
+
+# Check $line for ifdef state changes for all of the tags and change
+# state.
+# If there is a state change error return 0, otherwise return 1;
+
+sub checkifdef {
+  my($TF, $line, $fromfilename) = @_;
+
+  if ( $line =~ /(#ifdef|#ifndef|#else|#endif).*($search)(\s|$|\*)/ ) {
+    my $copt = $1;
+    my $tag  = $2;
+
+	if ( $copt eq "#ifdef" ) {
+      if ($thash{"$tag"} eq "$ST_OFF") {
+        $thash{"$tag"} = "$ST_IF";
+        print "state change $tag: $ST_OFF -> $ST_IF\n" if (exists $opts{v});
+        $canwrite = iswritestate();
+      }
+      else {
+        print "Error: $fromfilename: Found '#ifdef $tag' with state $thash{$tag}\n";
+        return 0;
+      }
+    }
+    elsif ( $copt eq "#ifndef" ) {
+      if ($thash{"$tag"} eq "$ST_OFF") {
+        # before changing to a non-write state (ifn) print #IFNDEF
+        # line, if current state is a write state.
+        print $TF "$line"  if ( $canwrite );
+        $thash{"$tag"} = "$ST_IFN";
+        print "state change $tag: $ST_OFF -> $ST_IFN\n" if (exists $opts{v});
+        $canwrite = iswritestate();
+      }
+      else {
+        print "Error: $fromfilename: Found '#ifndef $tag' with state $thash{$tag}\n";
+        return 0;
+      }
+    }
+    elsif ( $copt eq "#else" ) {
+      if ($thash{"$tag"} eq "$ST_IF") {
+        # before changing to a non-write state (else) print #else
+        # line, if current state is a write state.
+        print $TF "$line"  if ( $canwrite );
+        $thash{"$tag"} = "$ST_ELSE";
+        print "state change $tag: $ST_IF -> $ST_ELSE\n" if (exists $opts{v});
+        $canwrite = iswritestate();
+      }
+      elsif ($thash{"$tag"} eq "$ST_IFN") {
+        $thash{"$tag"} = "$ST_ELSEN";
+        print "state change $tag: $ST_IFN -> $ST_ELSEN\n" if (exists $opts{v});
+        $canwrite = iswritestate();
+      }
+      else {
+        print "Error: $fromfilename: Found '#else (...) $tag' with state $thash{$tag}\n";
+        return 0;
+      }
+    }
+    elsif ( $copt eq "#endif" ) {
+      if (($thash{"$tag"} eq "$ST_ELSE")  || ($thash{"$tag"} eq "$ST_IF") ||
+          ($thash{"$tag"} eq "$ST_ELSEN") || ($thash{"$tag"} eq "$ST_IFN"))
+      {
+        print "state change $tag: $thash{$tag} -> $ST_OFF\n"
+          if (exists $opts{v});
+        $thash{"$tag"} = "$ST_OFF";
+        $canwrite = iswritestate();
+      }
+      else {
+        print "Error: Found '#endif (...) $tag' with state $thash{$tag}\n";
+        return 0;
+      }
+    }
+
+  } # foreach tag
+
+  return 1;
+} # checkifdef
+
+
+sub parsefile {
+  my($fname, $tname) = @_;
+  my $FF; my $TF;
+  my @fromfile = ();
+  $canwrite = 1;
+
+  # ignore file for file names
+  if ( (exists $opts{i}) && ("$fname" =~  /$igstring/) ) {
+    print "IGNORING $fname\n"  if ( exists $opts{v} );
+    return 1;
+  }
+
+  print "Info: Opening '$fname'\n" if ( exists $opts{v} );
+  if ( !(open($FF, "< $fname")) ) {
+	print "Warning: unable to open input file, skipping: '$fname': $!\n";
+	return 0;
+  }
+
+  my @fromfile = <$FF>;
+  $FF->close();
+
+  if ( !(open($TF, "> $tname")) ) {
+	print "Warning: unable to open output file, skipping: '$tname': $!\n";
+	return 0;
+  }
+  my $mode = (stat("$fname"))[2];
+  if ($mode) { my $resp = chmod $mode, "$tname"; }
+
+  my $line   = "";
+  my @tout  = ();
+  my $retval = 1;
+
+  while ( $line = shift @fromfile ) {
+    # check for any ifdef state changes
+	if ( ! checkifdef($TF, $line, $fname) ) {
+      $FF->close();
+      $TF->close();
+      die "Error: tag error in file \'$fname\', exiting\n";
+    }
+
+    if ( $canwrite ) {
+	  print $TF "$line";
+	}
+	else {
+	  print "Info: not copying: $fname: $line" if ( exists $opts{v} );
+    }
+
+  }
+
+  if (! $canwrite) {
+      print "End of $fname reached and we're not reset into 'canwrite' state\n";
+  }
+  $TF->close();
+
+  return $retval;
+} # parsefile
+
+
+# note, fromdir should have already been checked to exist and be a
+# directory
+sub load_minamal_ifdefs {
+    my @filelist = ();
+    my $MF;
+    
+    if ( !(open($MF, "< $fromdir/$minimal_include_path")) ) {
+        die "Unable to open main minimal feature file: '$fromdir/$minimal_include_path'\n";
+    }
+    my $line;
+    # skip preceding lines
+    while ( ($line = <$MF>) &&
+            ($line !~ /^#else.*NETSNMP_FEATURE_CHECKING/ ) ) {
+    }
+    # grab the fetaure .h files
+    while ( ($line = <$MF>) &&
+            ($line !~ /^#endif.*NET_SNMP_FEATURE_CHECKING/) ) {
+        if ($line =~ /include.*<(.*.h)>/) {
+            push @filelist, $1;
+        }
+    }
+
+    close($MF);
+
+    while (my $fname = shift @filelist) {
+        if ( !( -e "$fromdir/include/$fname" ) )  {
+            print "Warn: feature file does not exist, skipping: '$fromdir/include/$fname'";
+            next;
+        }
+        if ( !(open($MF, "< $fromdir/include/$fname")) ) {
+            die "Unable to open minimal feature file: '$fromdir/include/$fname'\n";
+        }
+        while ( ($line = <$MF>) ) {
+            if ( $line =~ /^#define.*(NETSNMP_FEATURE_REMOVE[^ ]+) / ) {
+                $thash{"$1"} = $ST_OFF;
+            }
+        }
+        close($MF);
+    }
+        
+} # load_minamal_ifdefs
+
+
+
+
diff --git a/local/minimalist/sizetests b/local/minimalist/sizetests
new file mode 100644
index 0000000..4ecd654
--- /dev/null
+++ b/local/minimalist/sizetests
@@ -0,0 +1,359 @@
+#!/usr/bin/perl
+
+use strict;
+use Data::Dumper;
+use Getopt::Std;
+use IO::File;
+our %opts = (d => 'size-tests');
+
+# default arguments go here
+my @sets =
+    ({
+	"with-defaults" => '',
+     });
+
+my %base_args = %{$sets[0]};
+my ($basename, $basenum);
+
+getopts('t:hlcD:nj:o:eb:T', \%opts) || usage();
+
+$opts{'j'} = "-j$opts{j}" if (exists($opts{'j'}));
+
+usage() if ($opts{'h'});
+
+my @argumentsets =
+    (
+     {
+	 title => 'security-types',
+	 arguments =>
+	 {
+	     usm => {
+		 'with-security-modules' => 'usm',
+	     },
+	     dtlsandtls => {
+		 'with-security-modules'     => 'tsm',
+		 'with-out-security-modules' => 'usm',
+		 'with-transports'           => 'DTLSUDP TLSTCP',
+		 'with-mib-modules'          => 'tlstm-mib tsm-mib'
+	     },
+	     usmanddtlsandtls => {
+		 'with-security-modules'     => 'tsm usm',
+		 'with-transports'           => 'DTLSUDP TLSTCP',
+		 'with-mib-modules'          => 'tlstm-mib tsm-mib'
+	     }
+	 }
+     },
+     {
+	 title => 'minimalist',
+	 arguments =>
+	 { 
+	     minimal => {
+		 'enable-minimalist'    => '',
+	     },
+	     'not-minimal' => {
+	     }
+	 }
+     },
+     {
+	 title => 'mib-loading',
+	 arguments =>
+	 { 
+	     'without-mib-loading' => {
+		 'disable-mib-loading'    => '',
+	     },
+	     'with-mib-loading' => {
+	     }
+	 }
+     },
+     {
+	 title => 'debugging',
+	 arguments =>
+	 { 
+	     'without-debugging' => {
+		 'disable-debugging'    => '',
+	     },
+	     'with-debugging' => {
+	     }
+	 }
+     },
+     {
+	 title => 'logging',
+	 arguments =>
+	 { 
+	     'without-logging' => {
+		 'with-out-features'    => 'logging',
+	     },
+	     'with-logging' => {
+	     }
+	 }
+     },
+     {
+	 title => 'agent-mibs',
+	 arguments =>
+	 { 
+	     'full-agent' => {
+	     },
+	     'mini-agent' => {
+		 'enable-mini-agent' => '',
+	     }
+	 }
+     },
+     {
+	 title => 'protocol-support',
+	 arguments =>
+	 {
+	     'everything' => {
+	     },
+	     'read-only' => {
+		 'enable-read-only' => '',
+	     },
+	     'notify-only' => {
+		 'enable-notify-only' => '',
+	     }
+	 }
+     },
+     {
+	 title => 'perl',
+	 arguments =>
+	 { 
+	     'without-perl-modules' => {
+		 'without-perl-modules'    => '',
+		 'disable-embedded-perl' => '',
+	     },
+	     'with-perl-no-embedding' => {
+		 'with-perl-modules'    => '',
+		 'disable-embedded-perl' => '',
+	     },
+	     'with-perl-and-embedding' => {
+		 'with-perl-modules'    => '',
+		 'enable-embedded-perl' => '',
+	     }
+	 }
+     },
+    );
+
+# map these to a referencable lookup hash
+my %argumentsets;
+foreach my $set (@argumentsets) {
+    $argumentsets{$set->{'title'}} = $set;
+}
+
+if ($opts{'l'}) {
+    print "Types available:\n";
+    printf("  %-40.40s %s\n", "Test Title", "Number of subtests");
+    printf("  %-40.40s %s\n", "-" x 39, "-" x length("Number of subtests"));
+    foreach my $type (@argumentsets) {
+	my @keys = keys(%{$type->{'arguments'}});
+	printf("  %-40.40s %s\n", $type->{'title'}, $#keys+1);
+    }
+    exit;
+}
+
+my %types;
+if ($opts{'t'}) {
+    my @types = split(/,\s*/, $opts{'t'});
+    foreach my $type (@types) {
+	$types{$type} = 1;
+    }
+}
+
+if ($opts{'b'}) {
+    # use this set as the base default set of arguments
+    ($basename, $basenum) = ($opts{'b'} =~ /(.*):(\d+)/);
+    if (!exists($argumentsets{$basename})) {
+	printf STDERR "failed to find set for -b argument: %s\n", $basename;
+	exit(1);
+    }
+    @sets = add_in_flags($argumentsets{$basename}, \%base_args, ());
+    @sets = @sets[$basenum];
+    %base_args = %{$sets[0]};
+}
+
+foreach my $set (@argumentsets) {
+    if (!$opts{'t'} || exists($types{$set->{'title'}})) {
+        if ($basename && $set->{'title'} eq $basename) {
+            next;
+        }
+	@sets = add_in_flags($set, \%base_args, @sets);
+    }
+}
+
+if ($opts{'c'}) {
+    # print the configure flags
+    foreach my $set (@sets) {
+	print "$set->{'title'}:\n";
+	print " ", generate_configure_flags($set), "\n";
+    }
+    exit;
+}
+
+my $summaryfile;
+if ($opts{'o'} && !$opts{'n'}) {
+    $summaryfile = new IO::File;
+    $summaryfile->open(">$opts{o}");
+}
+
+my $count = 0;
+foreach my $set (@sets) {
+    $count++;
+    build_set($count, $set);
+}
+
+sub add_in_flags {
+    my ($argumentset, $base_flags, @current_flags) = @_;
+
+    my @new_flags;
+
+    # do a linear search of the options
+    if (! $opts{'e'}) {
+	@new_flags = @current_flags;
+	foreach my $newargs (keys(%{$argumentset->{'arguments'}})) {
+	    my %flags = %$base_flags;
+
+	    $flags{'title'} = "$flags{'title'}:$newargs";
+
+	    foreach my $newflag (keys(%{$argumentset->{'arguments'}{$newargs}})) {
+
+		$flags{$newflag} .= " $argumentset->{'arguments'}{$newargs}{$newflag}";
+	    }
+	    push @new_flags, \%flags;
+	}
+	return @new_flags;
+    }
+
+    # or an exponential search
+    foreach my $flags (@current_flags) {
+	foreach my $newargs (keys(%{$argumentset->{'arguments'}})) {
+	    my %flags = %{$flags};  # copy the existing hash-set of flags
+	    
+	    if (exists($flags{'title'})) {
+		$flags{'title'} .= ", $newargs";
+	    } else {
+		$flags{'title'} .= "$newargs";
+	    }
+	    foreach my $newflag (keys(%{$argumentset->{'arguments'}{$newargs}})) {
+
+		$flags{$newflag} .= " $argumentset->{'arguments'}{$newargs}{$newflag}";
+	    }
+
+	    push @new_flags, \%flags;
+	}
+    }
+
+    return @new_flags;
+}
+
+sub generate_configure_flags {
+    my ($arguments) = @_;
+    my $line = "";
+    foreach my $arg (keys(%$arguments)) {
+	next if ($arg eq 'title');
+	if ($arguments->{$arg} =~ /^\s*$/) {
+	    $line .= " --$arg";
+	} else {
+	    $line .= " --$arg=\"$arguments->{$arg}\"";
+	}
+    }
+    return $line;
+}
+
+sub build_set {
+    my ($num, $arguments) = @_;
+
+    $num = sprintf("%03d", $num);
+
+    my $file;
+
+    if (!$opts{'n'}) {
+	mkdir $opts{'d'} if (! -d $opts{'d'});
+	die "failed to create the $opts{'d'} directory" if (! -d $opts{'d'});
+
+	$file = new IO::File;
+	$file->open(">$opts{'d'}/$num-0-cmd-summary");
+	$file->print("Creating output for: $arguments->{'title'}\n");
+    }
+
+    print "==================== $arguments->{'title'}\n";
+
+
+    System ($file, $num, "1-distclean", "make distclean");
+    System ($file, $num, "2-configure",
+	    "./configure " . generate_configure_flags($arguments));
+    System ($file, $num, "3-features", "make features");
+    System ($file, $num, "4-make", "make $opts{'j'}");
+    System ($file, $num, "5-unused-code", "perl local/minimalist/find-unused-code -g");
+    System ($file, $num, "6-testing", "make -C testing test") if ($opts{'T'});
+
+    if (!$opts{'n'}) {
+	analyze_size($arguments->{'title'}, "$opts{'d'}/$num-9-results");
+    }
+}
+
+sub analyze_size {
+    my ($title, $filename) = @_;
+
+    my $outfile = new IO::File;
+    $outfile->open(">$filename");
+
+    print "Results for: $title\n";
+    printf $outfile "Results for: $title\n";
+    printf ("%-50.50s %10s\n", "-" x 49, "-" x 10);
+    printf $outfile ("%-50.50s %10s\n", "-" x 49, "-" x 10);
+
+    my $totalsize = 0;
+    foreach my $buildfile (glob("snmplib/.libs/lib*.so.*.0.0"),
+			   glob("agent/.libs/lib*.so.*.0.0"),
+			   "agent/.libs/snmpd") {
+
+	my @info = stat($buildfile);
+	printf $outfile ("%-50.50s %10s\n", $buildfile, $info[7]);
+	printf("%-50.50s %10s\n", $buildfile, $info[7]);
+	$totalsize += $info[7];
+    }
+    printf $outfile ("%-50.50s %10s\n", "-" x 49, "-" x 10);
+    printf $outfile ("%-50.50s %10s bytes\n", "TOTAL", $totalsize);
+
+    printf("%-50.50s %10s\n", "-" x 49, "-" x 10);
+    printf("%-50.50s %10s bytes\n", "TOTAL", $totalsize);
+
+    if (defined($summaryfile)) {
+	my $restricted_title = $title;
+	$restricted_title =~ s/[^a-zA-Z]/_/g;
+	printf $summaryfile "%10s %s \n", $totalsize, $title;
+    }
+
+    return $totalsize;
+}
+
+sub usage {
+    print "Usage: $0 [FLAGS]\n\n";
+    print "FLAGS:\n";
+    print "  -h\t\thelp\n";
+    print "  -t TYPES\tSelect types to analyze (default = all)\n";
+    print "  -l\t\tList available types\n";
+    print "  -c\t\tPrint the configuration flags that would be used\n";
+    print "  -D DIR\tSave data results to this directory\n";
+    print "  -o FILE\tSave a complete summary chart to FILE\n"; 
+    print "  -n\t\tDry run -- only show the commands to execute\n";
+    print "  -j NUM\tExecute make with parallel building (-jNUM)\n";
+    print "  -e\t\tUse exponential expansion (all combos) of the requested options\n";
+    print "  -b NAME:NUM\tUse NAME and the NUM'th set as the base arguments to start from\n";
+    print "  -T\t\tRun 'make test' at each step as well\n";
+    exit;
+}
+
+sub System {
+    my $file  = shift;
+    my $num   = shift;
+    my $title = shift;
+    my $pipe = " 2>&1 | tee $opts{'d'}/$num-$title.out\n";
+
+    print "### ", join(" ", @_), $pipe;
+    if (!$opts{'n'} && $file) {
+	print $file "### ", join(" ", @_), "\n";
+    }
+
+    if (!$opts{'n'}) {
+	system(join(" ", @_) . $pipe);
+    }
+}
diff --git a/local/net-snmp-cert b/local/net-snmp-cert
new file mode 100755
index 0000000..a45dc57
--- /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 ($ssl_cfg_in): 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/local/snmpconf b/local/snmpconf
deleted file mode 100755
index 37a5136..0000000
--- a/local/snmpconf
+++ /dev/null
@@ -1,933 +0,0 @@
-#!/usr/bin/perl -w
-
-#
-# A simple configuration file builder based on questions listed in
-# its own configuration file.  It would certainly be easy to use this
-# for other (non-snmp) programs as well.
-#
-
-use Getopt::Std;
-use Term::ReadLine;
-use IO::File;
-use Data::Dumper;
-use File::Copy;
-if ($^O eq 'MSWin32') {
-  eval 'require Win32::Registry;';
-  if ($@) {
-    print "\nWarning: Perl module Win32::Registry is not installed.  This module is\n";
-    print "         required to read the SNMPSHAREPATH and SNMPCONFPATH values from \n";
-    print "         the registry.  To use snmpconf without the module you need to\n";
-    print "         define SNMPSHAREPATH and SNMPCONFPATH as environment variables\n";
-    print "         or use the -c and -I command line options.\n";
-  }
-}
-
-# globals
-%tokenitems=qw(line 1 info 1 comment 1);
-%arrayitems=qw(question 1 validanswer 1);
-
-# default folder for snmpconf-data
-if (defined(&my_getenv("SNMPSHAREPATH"))) {
-  $opts{'c'} = &my_getenv("SNMPSHAREPATH") . "/snmpconf-data";
-}
-else {
-  $opts{'c'} = "/usr/local/share/snmp/snmpconf-data";
-}
- 
-# default config file path
-if (defined(&my_getenv("SNMPCONFPATH"))) {
-  $confpath = &my_getenv("SNMPCONFPATH");
-}
-else {
-  $confpath = "/usr/local/share/snmp";
-}
-
-# home environment variable
-if (defined(&my_getenv("HOME"))) {
-  $home = &my_getenv("HOME") . "/.snmp";
-}
-else {
-  $home = "(HOME dir - n/a)";
-}
-
-# read the argument string
-getopts("qadhfc:piI:r:R:g:G", \%opts);
-
-# display help
-if ($opts{'h'}) {
-    print "$0 [options] [FILETOCREATE...]\n";
-    print "options:\n";
-    print "  -f           overwrite existing files without prompting\n";
-    print "  -i           install created files into $confpath.\n";
-    print "  -p           install created files into $home.\n";
-    print "  -I DIR       install created files into DIR.\n";
-    print "  -a           Don't ask any questions, just read in current\n";
-    print "                   current .conf files and comment them\n";
-    print "  -r all|none  Read in all or none of the .conf files found.\n";
-    print "  -R file,...  Read in a particular list of .conf files.\n";
-    print "  -g GROUP     Ask a series of GROUPed questions.\n";
-    print "  -G           List known GROUPs.\n";
-    print "  -c conf_dir  use alternate configuration directory.\n";
-    print "  -q           run more quietly with less advice.\n";
-    print "  -d           turn on debugging output.\n";
-    print "  -D           turn on debugging dumper output.\n";
-    exit;
-}
-
-# setup terminal interface.
-$ENV{'PERL_RL'}='o=0' if (!exists($ENV{'PERL_RL'}));
-$term = new Term::ReadLine 'snmpconf';
-
-# read in configuration file set
-read_config_files($opts{'c'}, \%filetypes);
-debug(my_Dumper(\%filetypes));
-
-if ($opts{'G'}) {
-    Print("\nKnown GROUPs of tokens:\n\n");
-    foreach my $group (keys(%groups)) {
-	print "  $group\n";
-    }
-    Print("\n");
-    exit;
-}
-
-#
-# Expand the search path in case it contains multiple directories
-# separated by : (Unix) or ; (Win32)
-#
-my $ENV_SEPARATOR = ':';
-if ($^O eq 'MSWin32') {
-  $ENV_SEPARATOR = ';';
-}
-my @searchpath = split(/$ENV_SEPARATOR/, $confpath);
-push @searchpath, "/usr/local/etc/snmp";
-push @searchpath, ".";
-push @searchpath, "$home";
-
-# Remove trailing /'s or \'s
-for (my $i=0; $i <= $#searchpath; $i++) {
-  $searchpath[$i] =~ /(.*?)([\/\\])*$/;
-  $searchpath[$i] = $1;
-}
-
-# Determine persistent directory.  Order of preference:
-# 
-# file in SNMP_PERSISTENT_FILE environment variable
-# directory defined by persistentDir snmp.conf variable
-# directory in SNMP_PERSISTENT_DIR environment variable
-# default PERSISTENT_DIRECTORY directory
-my $persistentDir = "";
-my $persistentFile = "";
-
-# SNMP_PERSISTENT_FILE environment variable
-if (defined(&my_getenv("SNMP_PERSISTENT_FILE"))) {
-  $persistentFile = &my_getenv("SNMP_PERSISTENT_FILE");
-  debug ("persistent file: SNMP_PERSISTENT_FILE environment variable set\n");
-}
-
-# snmp.conf persistentDir
-if (!($persistentDir) && !($persistentFile)) {
-  foreach my $i (@searchpath) {
-    debug ("Searching file $i/snmp.conf for persistentDir\n");
-    my $temp = get_persistentDir("$i/snmp.conf");
-    if ($temp) {
-      debug("persistent directory: set to $temp in $i/snmp.conf\n");
-      $persistentDir = $temp;
-      last;
-    }
-  }
-}
-
-# SNMP_PERSISTENT_DIR environment variable
-if (!($persistentDir) && !($persistentFile)) {
-  if (&my_getenv("SNMP_PERSISTENT_DIR")) {
-    $persistentDir = &my_getenv("SNMP_PERSISTENT_DIR");
-    debug ("persistent directory: SNMP_PERSISTENT_DIR environment variable set\n");
-  }
-}
-
-# PERSISTENT_DIRECTORY default variable
-if (!($persistentDir) && !($persistentFile)) {
-  $persistentDir = "/var/net-snmp";
-  debug ("persistent directory: Using default value\n");
-}
-
-# Rebuild search path without persistent folder
-# Note:  persistent file handled in Find existing 
-# files to possibly read in section
-if ($persistentDir) {
-  # Remove trailing /'s or \'s
-  $persistentDir =~ /(.*?)([\/\\])*$/;
-  $persistentDir = $1;
-  debug ("persistent directory: $persistentDir\n");
-
-  my @searchpath_old = @searchpath;
-  @searchpath = ();
-  foreach my $path_temp (@searchpath_old) {
-    if ($path_temp eq $persistentDir) {
-      debug("skipping persistent directory $path_temp\n");
-      next;
-    }
-    push @searchpath, $path_temp;
-  }
-}
-
-# Reset $confpath to the first path
-$confpath = $searchpath[0];
-
-#
-# Find existing files to possibly read in.
-#
-push @searchpath, $opts{I} if ($opts{I});
-foreach my $i (@searchpath) {
-    debug("searching $i\n");
-    foreach my $ft (keys(%filetypes)) {
-        if ("$i/$ft" eq $persistentFile) {
-          debug("skipping persistent file $i/$ft\n");
-          next;
-        }
-	debug("searching for $i/$ft\n");
-	$knownfiles{"$i/$ft"} = $ft if (-f "$i/$ft");
-	my $localft = $ft;
-	$localft =~ s/.conf/.local.conf/;
-	$knownfiles{"$i/$localft"} = $ft if (-f "$i/$localft");
-    }
-}
-
-#
-# Ask the user if they want them to be read in and read them
-#
-if (keys(%knownfiles)) {
-    my @files;
-    if (defined($opts{'r'})) {
-	if ($opts{'r'} eq "all" || $opts{'r'} eq "a") {
-	    @files = keys(%knownfiles);
-	} elsif ($opts{'r'} ne "none" && $opts{'r'} ne "n") {
-	    print "unknown argument to -r: $opts{'r'}\n";
-	    exit(1);
-	}
-    } elsif(defined($opts{'R'})) {
-	@files = split(/\s*,\s*/,$opts{'R'});
-	foreach my $i (@files) {
-	    my $x = $i;
-	    $x =~ s/.*\/([^\/]+)$/$1/;
-	    $knownfiles{$i} = $x;
-	}
-	Print("reading: ", join(",",@files),"\n");
-    } else {
-	@files = display_menu(-head => "The following installed configuration files were found:\n",
-			      -tail => "Would you like me to read them in?  Their content will be merged with the\noutput files created by this session.\n\nValid answer examples: \"all\", \"none\",\"3\",\"1,2,5\"\n",
-			      -multiple => 1,
-			      -question => 'Read in which',
-			      -defaultvalue => 'all',
-			      sort keys(%knownfiles));
-    }
-    foreach my $i (@files) {
-	debug("reading $i\n");
-	read_config($i, $knownfiles{$i});
-    }
-}
-
-if ($opts{'g'}) {
-    my @groups = split(/,:\s/,$opts{'g'});
-    foreach my $group (@groups) {
-	do_group($group);
-    }
-} elsif ($#ARGV >= 0) {
-    #
-    # loop through requested files.
-    #
-    foreach my $i (@ARGV) {
-	if (!defined($filetypes{$i})) {
-	    warn "invalid file: $i\n";
-	} else {
-	    if ($opts{'a'}) {
-		$didfile{$i} = 1;
-	    } else {
-		build_file($term, $i, $filetypes{$i});
-	    }
-	}
-    }
-} else {
-    #
-    # ask user to select file type to operate on.
-    #
-    while(1) {
-	my $line = display_menu(-head => "I can create the following types of configuration files for you.\nSelect the file type you wish to create:\n(you can create more than one as you run this program)\n",
-				-question => 'Select File',
-				-otheranswers => ['quit'],
-				-mapanswers => { 'q' => 'quit' },
-				keys(%filetypes));
-	last if ($line eq "quit");
-	debug("file selected: $line\n");
-	build_file($term, $line, $filetypes{$line});
-    }
-}
-
-#
-# Write out the results to the output files.
-#
-output_files(\%filetypes, $term);
-
-
-#
-# Display the files that have been created for the user.
-#
-Print("\n\nThe following files were created:\n\n");
-@didfiles = keys(%didfile);
-foreach my $i (@didfiles) {
-    if ($didfile{$i} ne "1") {
-	if ($opts{'i'} || $opts{'I'}) {
-          $opts{'I'} = "$confpath" if (!$opts{'I'});
-
-          if (! (-d "$opts{'I'}") && ! (mkdir ("$opts{'I'}", 0755))) {
-	    print "\nCould not create $opts{'I'} directory: $!\n";
-	    print ("File $didfile{$i} left in current directory\n");
-	  }
-	  else {
-            move ("$opts{'I'}/$i", "$opts{'I'}/$i.bak") if (-f "$opts{'I'}/$i");
-            if (move ("$didfile{$i}", "$opts{'I'}")) {
-              print("  $didfile{$i} installed in $opts{'I'}\n");	    
-            }
-            else {
-              print "\nCould not move file $didfile{$i} to $opts{'I'}/$i: $!\n";
-              print ("File $didfile{$i} left in current directory\n");
-            }
-          }
-	} elsif ($opts{'p'}) {
-	  if (! (-d "$home") && ! (mkdir ("$home", 0755))) {
-	    print "\nCould not create $home directory: $!\n";
-	    print ("File $didfile{$i} left in current directory\n");
-	  }
-	  else {	    
-	    move ("$home/$i", "$home/$i.bak") if (-f "$home/$i");
-	    if (move ("$didfile{$i}", "$home")) {
-	      print("  $didfile{$i} installed in $home\n");
-	    }
-	    else {
-	      print "\nCould not move file $didfile{$i} to $home: $!\n";
-	      print ("File $didfile{$i} left in current directory\n");
-  	    }
-	  }
-  	} else {
-	    Print("  $didfile{$i} ",
-	    ($i ne $didfile{$i})?"[ from $i specifications]":" ","\n");
-	    if ($opts{'d'}) {
-		open(I,$didfile{$i});
-		debug("    " . join("    ",<I>) . "\n");
-		close(I);
-	    }
-	}
-    }
-}
-
-if (!$opts{'p'} && !$opts{'i'} && !$opts{'I'}) {
-    Print("\nThese files should be moved to $confpath if you
-want them used by everyone on the system.  In the future, if you add 
-the -i option to the command line I'll copy them there automatically for you.
-
-Or, if you want them for your personal use only, copy them to
-$home .  In the future, if you add the -p option to the
-command line I'll copy them there automatically for you.
-
-");
-}
-
-###########################################################################
-# Functions
-###########################################################################
-
-sub Print {
-    print @_ if (!$opts{'q'});
-}
-#
-# handle a group of questions
-#
-sub get_yn_maybe {
-    my $question = shift;
-    my $ans = "y";
-    if ($question ne "") {
-	$ans = get_answer($term, $question,
-			  valid_answers(qw(yes y no n)), 'y');
-    }
-    return ($ans =~ /^y/)?1:0;
-}
-
-sub do_group {
-    my $group = shift;
-    die "no such group $group\n" if (!$groups{$group});
-    foreach my $token (@{$groups{$group}}) {
-	if ($token->[0] eq "message") {
-	    Print ("$token->[1] $token->[2]\n");
-	} elsif ($token->[0] eq "subgroup") {
-	    do_group($token->[1]) if (get_yn_maybe($token->[2]));
-	} elsif (defined($tokenmap{$token->[1]})) {
-	    if (get_yn_maybe($token->[2])) {
-		do {
-		    do_line($token->[1], $tokenmap{$token->[1]});
-		} until ($token->[0] ne "multiple" ||
-			 get_answer($term, "Do another $token->[1] line?",
-				    valid_answers(qw(yes y no n)), 'y')
-			 =~ /n/);
-	    }
-	} elsif (defined($filetypes{$token->[1]})) {
-	    $didfile{$token->[1]} = 1;
-	} else {
-	    die "invalid member $token->[1] of group $group\n";
-	}
-    }
-}
-
-#
-# build a particular type of file by operating on sections
-#
-sub build_file {
-    my ($term, $filename, $fileconf) = @_;
-    $didfile{$filename} = 1;
-    my (@lines);
-    while(1) {
-	my $line = display_menu(-head => "The configuration information which can be put into $filename is divided\ninto sections.  Select a configuration section for $filename\nthat you wish to create:\n",
-				-otheranswers => ['finished'],
-				-mapanswers => { 'f' => 'finished' },
-				-question => "Select section",
-				-numeric => 1,
-				map { $_->{'title'}[0] } @$fileconf);
-
-	return @lines if ($line eq "finished");
-	do_section($fileconf->[$line-1]);
-    }
-}
-
-#
-# configure a particular section by operating on token types
-#
-sub do_section {
-    my $confsect = shift;
-    my @lines;
-    while(1) {
-	Print ("\nSection: $confsect->{'title'}[0]\n");
-	Print ("Description:\n");
-	Print ("  ", join("\n  ",@{$confsect->{'description'}}),"\n");
-	my $line =
-	    display_menu(-head => "Select from:\n",
-			 -otheranswers => ['finished','list'],
-			 -mapanswers => { 'f' => 'finished',
-					  'l' => 'list' },
-			 -question => 'Select section',
-			 -descriptions => [map { $confsect->{$_}{info}[0] } 
-					   @{$confsect->{'thetokens'}}],
-			 @{$confsect->{'thetokens'}});
-	return @lines if ($line eq "finished");
-	if ($line eq "list") {
-	    print "Lines defined for section \"$confsect->{title}[0]\" so far:\n";
-	    foreach my $i (@{$confsect->{'thetokens'}}) {
-		if ($#{$confsect->{$i}{'results'}} >= 0) {
-		    print "  ",join("\n  ",@{$confsect->{$i}{'results'}}),"\n";
-		}
-	    }
-	    next;
-	}
-	do_line($line, $confsect->{$line});
-    }
-    return;
-}
-
-#
-# Ask all the questions related to a particular line type
-#
-sub do_line {
-    my $token = shift;
-    my $confline = shift;
-    my (@answers, $counter, $i);
-#    debug(my_Dumper($confline));
-    Print ("\nConfiguring: $token\n");
-    Print ("Description:\n  ",join("\n    ",@{$confline->{'info'}}),"\n\n");
-    for($i=0; $i <= $#{$confline->{'question'}}; $i++) {
-	if (defined($confline->{'question'}[$i]) &&
-	    $confline->{'question'}[$i] ne "") {
-	    my $q = $confline->{'question'}[$i];
-	    $q =~ s/\$(\d+)/$answers[$1]/g;
-	    debug("after: $term, $q, ",$confline->{'validanswer'}[$i],"\n");
-	    $answers[$i] = get_answer($term, $q,
-				      $confline->{'validanswer'}[$i]);
-	    $answers[$i] =~ s/\"/\\\"/g;
-	    $answers[$i] = '"' . $answers[$i] . '"' if ($answers[$i] =~ /\s/);
-	}
-    }
-    if ($#{$confline->{'line'}} == -1) {
-	my ($i,$line);
-	for($i=0; $i <= $#{$confline->{'question'}}; $i++) {
-	    next if (!defined($confline->{'question'}[$i]) ||
-		     $confline->{'question'}[$i] eq "");
-	    $line .= " \$" . $i;
-	}
-	push @{$confline->{'line'}}, $line;
-    }
-
-    foreach my $line (@{$confline->{'line'}}) {
-	my $finished = $line;
-	debug("preline: $finished\n");
-	debug("answers: ",my_Dumper(\@answers));
-	$finished =~ s/\$(\d+)/$answers[$1]/g;
-	if ($line =~ s/^eval\s+//) {
-	    debug("eval: $finished\n");
-	    $finished = eval $finished;
-	    debug("eval results: $finished\n");
-	}
-	$finished = $token . " " . $finished;
-	Print ("\nFinished Output: $finished\n");
-	push @{$confline->{'results'}},$finished;
-    }
-}
-
-#
-# read all sets of config files in the various subdirectories.
-#
-sub read_config_files {
-    my $readdir = shift;
-    my $filetypes = shift;
-    opendir(DH, $readdir) || die "no such directory $readdir, did you run make install?\n";
-    my $dir;
-    my $configfilename="snmpconf-config";
-
-    while(defined($dir = readdir(DH))) {
-	next if ($dir =~ /^\./);
-	next if ($dir =~ /CVS/);
-	debug("dir entry: $dir\n");
-	if (-d "$readdir/$dir" && -f "$readdir/$dir/$configfilename") {
-
-	    my $conffile;
-
-	    # read the top level configuration inforamation about the direcotry.
-	    open(I, "$readdir/$dir/$configfilename");
-	    while(<I>) {
-		$conffile = $1 if (/forconffile: (.*)/);
-	    }
-	    close(I);
-
-	    # no README informatino.
-	    if ($conffile eq "") {
-		print STDERR "Warning: No 'forconffile' information in $readdir/$dir/$configfilename\n";
-		next;
-	    }
-
-	    # read all the daat in the directory
-	    $filetypes->{$conffile} = read_config_items("$readdir/$dir", $conffile);
-	} else {
-	    # no README informatino.
-	    print STDERR "Warning: No $configfilename file found in $readdir/$dir\n";
-	}
-    }
-    closedir DH;
-}
-
-#
-# read each configuration file in a directory
-#
-sub read_config_items {
-    my $itemdir = shift;
-    my $type = shift;
-    opendir(ITEMS, $itemdir);
-    my $file;
-    my @results;
-    while(defined($file = readdir(ITEMS))) {
-	next if ($file =~ /~$/);
-	next if ($file =~ /^snmpconf-config$/);
-	if (-f "$itemdir/$file") {
-	    my $res = read_config_item("$itemdir/$file", $type);
-	    if (scalar(keys(%$res)) > 0) {
-		push @results, $res;
-	    }
-	}
-    }
-    closedir(ITEMS);
-    return \@results;
-}
-
-#
-# mark a list of tokens as a special "group"
-#
-sub read_config_group {
-    my ($fh, $group, $type) = @_;
-    my $line;
-    debug("handling group $group\n");
-    push (@{$groups{$group}},['filetype', $type]);
-    while($line = <$fh>) {
-	chomp($line);
-	next if ($line =~ /^\s*$/);
-	next if ($line =~ /^\#/);
-	return $line if ($line !~ /^(single|multiple|message|filetype|subgroup)/);
-	my ($type, $token, $rest) = ($line =~ /^(\w+)\s+([^\s]+)\s*(.*)/);
-	debug ("reading group $group : $type -> $token -> $rest\n");
-	push (@{$groups{$group}}, [$type, $token, $rest]);
-    }
-    return;
-}
-	
-
-#
-# Parse one file
-#
-sub read_config_item {
-    my $itemfile = shift;
-    my $itemcount;
-    my $type = shift;
-    my $fh = new IO::File($itemfile);
-    return if (!defined($fh));
-    my (%results, $curtoken);
-    debug("tokenitems:  ", my_Dumper(\%tokenitems));
-  topwhile:
-    while($line = <$fh>) {
-	next if ($line =~ /^\s*\#/);
-	my ($token, $rest) = ($line =~ /^(\w+)\s+(.*)/);
-	next if (!defined($token) || !defined($rest));
-	while ($token eq 'group') {
-	    # handle special group list
-	    my $next = read_config_group($fh, $rest,$type);
-	    if ($next) {
-		($token, $rest) = ($next =~ /^(\w+)\s+(.*)/);
-	    } else {
-		next topwhile;
-	    }
-	}
-	debug("token: $token => $rest\n");
-	if ($token eq 'steal') {
-	    foreach my $stealfrom (keys(%{$results{$rest}})) {
-		if (!defined($results{$curtoken}{$stealfrom})) {
-		    @{$results{$curtoken}{$stealfrom}} = 
-			@{$results{$rest}{$stealfrom}};
-		}
-	    }
-	} elsif (defined($tokenitems{$token})) {
-	    if (!defined($curtoken)) {
-		die "error in configuration file $itemfile, no token set\n";
-	    }
-	    $rest =~ s/^\#//;
-	    push @{$results{$curtoken}{$token}},$rest;
-	} elsif (defined($arrayitems{$token})) {
-	    if (!defined($curtoken)) {
-		die "error in configuration file $itemfile, no token set\n";
-	    }
-	    my ($num, $newrest) = ($rest =~ /^(\d+)\s+(.*)/);
-	    if (!defined($num) || !defined($newrest)) {
-		warn "invalid config line: $line\n";
-	    } else {
-		$results{$curtoken}{$token}[$num] = $newrest;
-	    }
-	} elsif ($token =~ /^token\s*$/) {
-	    $rest = lc($rest);
-	    $curtoken = $rest;
-	    if (! exists $results{$curtoken}{'defined'}) {
-		push @{$results{'thetokens'}}, $curtoken;
-		$results{$curtoken}{'defined'} = 1;
-	    }
-	    $tokenmap{$curtoken} = $results{$curtoken};
-	    debug("current token set to $token\n");
-	} else {
-	    push @{$results{$token}},$rest;
-	}
-    }
-    return \%results;
-}
-
-sub debug {
-    print @_ if ($opts{'d'});
-}
-
-sub output_files {
-    my $filetypes = shift;
-    my $term = shift;
-    foreach my $ft (keys(%$filetypes)) {
-	next if (!$didfile{$ft});
-	my $outputf = $ft;
-	if (-f $outputf && !$opts{'f'}) {
-	    print "\nError: An $outputf file already exists in this directory.\n\n";
-	    my $ans = get_answer($term,"'overwrite', 'skip', 'rename' or 'append'? ",valid_answers(qw(o overwrite r rename s skip a append)));
-	    next if ($ans =~ /^(s|skip)$/i);
-	    if ($ans =~ /^(a|append)/) {
-		$outputf = ">$outputf";
-	    } elsif ($ans =~ /^(r|rename)$/i) {
-		# default to rename for error conditions
-		$outputf = $term->readline("Save to what new file name instead (or 'skip')? ");
-	    }
-	}
-	$didfile{$ft} = $outputf;
-	open(O,">$outputf") || warn "couldn't write to $outputf\n";
-	print O "#" x 75,"\n";
-	print O "#\n# $ft\n";
-	print O "#\n#   - created by the snmpconf configuration program\n#\n";
-	foreach my $sect (@{$filetypes->{$ft}}) {
-	    my $secthelp = 0;
-	    foreach my $token (@{$sect->{'thetokens'}}) {
-		if ($#{$sect->{$token}{'results'}} >= 0) {
-		    if ($secthelp++ == 0) {
-			print O "#" x 75,"\n# SECTION: ",
-			join("\n#          ", @{$sect->{title}}), "\n#\n";
-			print O "#   ", join("\n#   ",@{$sect->{description}}),
-			"\n";
-		    }
-		    print O "\n# $token: ",
-		    join("\n#   ",@{$sect->{$token}{info}}), "\n\n";
-		    foreach my $result (@{$sect->{$token}{'results'}}) {
-			print O "$result\n";
-		    }
-		}
-	    }
-	    print O "\n\n\n";
-	}
-	if ($#{$unknown{$ft}} > -1) {
-	    print O "#\n# Unknown directives read in from other files by snmpconf\n#\n";
-	    foreach my $unknown (@{$unknown{$ft}}) {
-		print O $unknown,"\n";
-	    }
-	}
-	close(O);
-    }
-}
-
-sub get_answer {
-    my ($term, $question, $regexp, $defaultval) = @_;
-    $question .= " (default = $defaultval)" if (defined($defaultval) && $defaultval ne "");
-    $question .= ": ";
-    my $ans = $term->readline($question);
-    return $defaultval if ($ans eq "" && defined($defaultval) && 
-			   $defaultval ne "");
-    while (!(!defined($regexp) ||
-	     $regexp eq "" ||
-	     $ans =~ /$regexp/)) {
-	print "invalid answer!  It must match this regular expression: $regexp\n";
-	$ans = $term->readline($question);
-    }
-    return $defaultval if ($ans eq "" && defined($defaultval) && 
-			   $defaultval ne "");
-    return $ans;
-}
-    
-sub valid_answers {
-    my @list;
-    foreach $i (@_) {
-	push @list, $i if ($i);
-    }
-    return "^(" . join("|",@list) . ")\$";
-}
-
-sub read_config {
-    my $file = shift;
-    my $filetype = shift;
-    return if (!defined($filetypes{$filetype}));
-    if (! -f $file) {
-	warn "$file does not exist\n";
-	return;
-    }
-    open(I,$file);
-    while(<I>) {
-	next if (/^\s*\#/);
-	next if (/^\s*$/);
-	chomp;
-	my ($token, $rest) = /^\s*(\w+)\s+(.*)/;
-	$token = lc($token);
-	next if (defined($alllines{$_})); # drop duplicate lines
-	if (defined($tokenmap{$token})) {
-	    push @{$tokenmap{$token}{'results'}},$_;
-	} else {
-	    push @{$unknown{$filetype}},$_;
-	}
-	$alllines{$_}++;
-    }
-    close(I);
-}
-
-sub display_menu {
-    my %config;
-
-    while ($#_ > -1 && $_[0] =~ /^-/) {
-	my $key = shift;
-	$config{$key} = shift;
-    }
-
-    my $count=1;
-    print "\n" if (!defined($config{'-dense'}));
-    if ($config{'-head'}) {
-	print $config{'-head'};
-	print "\n" if (!defined($config{'-dense'}));
-    }
-    my @answers = @_;
-    my @list;
-    if (defined($config{'-descriptions'}) && 
-	ref($config{'-descriptions'}) eq "ARRAY") {
-	@list = @{$config{'-descriptions'}}
-    } else {
-	@list = @_;
-    }
-    foreach my $i (@list) {
-	printf "  %2d:  $i\n", $count++ if ($i);
-    }
-    print "\n" if (!defined($config{'-dense'}));
-    if (defined($config{'-otheranswers'})) {
-	if (ref($config{'-otheranswers'}) eq 'ARRAY') {
-	    print "Other options: ", join(", ",
-					  @{$config{'-otheranswers'}}), "\n";
-	    push @answers, @{$config{'-otheranswers'}};
-	    push @answers, keys(%{$config{'-mapanswers'}});
-	} else {
-	    my $maxlen = 0;
-	    push @answers,keys(%{$config{'-otheranswers'}});
-	    foreach my $i (keys(%{$config{'-otheranswers'}})) {
-		$maxlen = length($i) if (length($i) > $maxlen);
-	    }
-	    foreach my $i (keys(%{$config{'-otheranswers'}})) {
-		printf("  %-" . $maxlen . "s: %s\n", $i, 
-		       $config{'-otheranswers'}{$i});
-	    }
-	}
-	print "\n" if (!defined($config{'-dense'}));
-    }
-    if ($config{'-tail'}) {
-	print $config{'-tail'};
-	print "\n" if (!defined($config{'-dense'}));
-    }
-
-    if (defined($config{'-question'})) {
-	while(1) {
-	    my $numexpr;
-	    if ($config{'-multiple'}) {
-		$numexpr = '[\d\s,]+|all|a|none|n';
-	    } else {
-		$numexpr = '\d+';
-	    }
-	    push @answers,"" if ($config{'-defaultvalue'});
-	    $ans = get_answer($term, $config{'-question'},
-			      valid_answers($numexpr,@answers),
-			      $config{'-defaultvalue'});
-	    if ($config{'-mapanswers'}{$ans}) {
-		$ans = $config{'-mapanswers'}{$ans};
-	    }
-
-	    if ($ans =~ /^$numexpr$/) {
-		if ($config{'-multiple'}) {
-		    my @list = split(/\s*,\s*/,$ans);
-		    my @ret;
-		    $count = 0;
-		    foreach my $i (@_) {
-			$count++;
-			if ($ans eq "all" || $ans eq "a" 
-			    || grep(/^$count$/,@list)) {
-			    push @ret, $i;
-			}
-		    }
-		    return @ret;
-		} else {
-		    if ($ans <= 0 || $ans > $#_+1) {
-			warn "invalid selection: $ans [must be 1-" .
-			    ($#_+1) . "]\n";
-		    } else {
-			return $ans if ($config{'-numeric'});
-			$count = 0;
-			foreach my $i (@_) {
-			    $count++;
-			    if ($ans eq $count) {
-				return $i;
-			    }
-			}
-		    }
-		}
-	    } else {
-		return $ans;
-	    }
-	}
-    }
-}
-
-sub my_Dumper {
-    if ($opts{'D'}) {
-	return Dumper(@_);
-    } else {
-	return "\n";
-    }
-}
-
-sub get_persistentDir {
-    my $file = shift;
-    my $result = 0;
-    if (! -f $file) {
-	return 0;
-    }
-    open(I,$file);
-    while(<I>) {
-	next if (/^\s*\#/);
-	next if (/^\s*$/);
-	chomp;
-	my ($token, $rest) = /^\s*(\w+)\s+(.*)/;
-        if (lc($token) eq "persistentdir") {
-          $result = $rest;
-        }
-        next;
-    }
-    close(I);
-    return $result;
-}
-
-# Usage:   &win32_reg_read("key", "value")
-# Example: &win32_reg_read("SOFTWARE\\Net-SNMP","SNMPSHAREPATH");
-# Returns: Value if found in HKCU or HCLM.  Otherwise an empty string.
-sub win32_reg_read {
-  my $sub_key = shift;
-  my $value = shift;
-
-  require Win32::Registry;
-   
-  my ($hkey, %key_values, $temp, $no_warn);
- 
-  # Try HKCU first
-  $no_warn = $HKEY_CURRENT_USER;
-  if ($HKEY_CURRENT_USER->Open($sub_key, $hkey))
-  {
-    $hkey->GetValues(\%key_values);   
-    foreach $temp (sort keys %key_values) {
-      if ($temp eq $value) {
-        return $key_values{$temp}[2];
-      }
-    }
-    $hkey->Close(); 
-  }
-
-  # Try HKLM second
-  $no_warn = $HKEY_LOCAL_MACHINE;
-  if ($HKEY_LOCAL_MACHINE->Open($sub_key, $hkey))
-  {
-    $hkey->GetValues(\%key_values);
-    foreach $temp (sort keys %key_values) {
-      if ($temp eq $value) {
-        return $key_values{$temp}[2];
-      }
-    }
-    $hkey->Close(); 
-  }
-  return "";
-}
-
-# Usage:   &my_getenv("key")
-# Example: &my_getenv("SNMPSHAREPATH");
-# Returns: Unix:  Environment variable value (undef if not defined)
-#          Win32: HKCU\Software\Net-SNMP\(key) or
-#          Win32: HKLM\Software\Net-SNMP\(key) or
-#          Win32: Environment variable value (undef if not defined)
-sub my_getenv {
-  my $key = shift;
-  
-  # Unix
-  if ($^O ne 'MSWin32') {
-    return $ENV{$key};
-  }
-  # Windows
-  else {
-    my $temp = &win32_reg_read("SOFTWARE\\Net-SNMP","$key");
-    if ($temp ne "") {
-      return $temp;
-    }
-    else {
-      return $ENV{$key};
-    }
-  }
-}
-
diff --git a/local/snmpconf.in b/local/snmpconf.in
new file mode 100755
index 0000000..bff8025
--- /dev/null
+++ b/local/snmpconf.in
@@ -0,0 +1,929 @@
+#!/usr/bin/perl -w
+
+#
+# A simple configuration file builder based on questions listed in
+# its own configuration file.  It would certainly be easy to use this
+# for other (non-snmp) programs as well.
+#
+
+use Getopt::Std;
+use Term::ReadLine;
+use IO::File;
+use Data::Dumper;
+use File::Copy;
+if ($^O eq 'MSWin32') {
+  eval 'require Win32::Registry;';
+  if ($@) {
+    print "\nWarning: Perl module Win32::Registry is not installed.  This module is\n";
+    print "         required to read the SNMPSHAREPATH and SNMPCONFPATH values from \n";
+    print "         the registry.  To use snmpconf without the module you need to\n";
+    print "         define SNMPSHAREPATH and SNMPCONFPATH as environment variables\n";
+    print "         or use the -c and -I command line options.\n";
+  }
+}
+
+# globals
+%tokenitems=qw(line 1 info 1 comment 1);
+%arrayitems=qw(question 1 validanswer 1);
+
+# default folder for snmpconf-data
+if (defined(&my_getenv("SNMPSHAREPATH"))) {
+  $opts{'c'} = &my_getenv("SNMPSHAREPATH") . "/snmpconf-data";
+}
+else {
+  $opts{'c'} = "/usr/local/share/snmp/snmpconf-data";
+}
+ 
+# default config file path
+if (defined(&my_getenv("SNMPCONFPATH"))) {
+  $confpath = &my_getenv("SNMPCONFPATH");
+}
+else {
+  $confpath = "/usr/local/share/snmp";
+}
+
+# home environment variable
+if (defined(&my_getenv("HOME"))) {
+  $home = &my_getenv("HOME") . "/.snmp";
+}
+else {
+  $home = "(HOME dir - n/a)";
+}
+
+# read the argument string
+getopts("qadhfc:piI:r:R:g:G", \%opts);
+
+# display help
+if ($opts{'h'}) {
+    print "$0 [options] [FILETOCREATE...]\n";
+    print "options:\n";
+    print "  -f           overwrite existing files without prompting\n";
+    print "  -i           install created files into $confpath.\n";
+    print "  -p           install created files into $home.\n";
+    print "  -I DIR       install created files into DIR.\n";
+    print "  -a           Don't ask any questions, just read in current\n";
+    print "                   current .conf files and comment them\n";
+    print "  -r all|none  Read in all or none of the .conf files found.\n";
+    print "  -R file,...  Read in a particular list of .conf files.\n";
+    print "  -g GROUP     Ask a series of GROUPed questions.\n";
+    print "  -G           List known GROUPs.\n";
+    print "  -c conf_dir  use alternate configuration directory.\n";
+    print "  -q           run more quietly with less advice.\n";
+    print "  -d           turn on debugging output.\n";
+    print "  -D           turn on debugging dumper output.\n";
+    exit;
+}
+
+# setup terminal interface.
+$ENV{'PERL_RL'}='o=0' if (!exists($ENV{'PERL_RL'}));
+$term = new Term::ReadLine 'snmpconf';
+
+# read in configuration file set
+read_config_files($opts{'c'}, \%filetypes);
+debug(my_Dumper(\%filetypes));
+
+if ($opts{'G'}) {
+    Print("\nKnown GROUPs of tokens:\n\n");
+    foreach my $group (keys(%groups)) {
+	print "  $group\n";
+    }
+    Print("\n");
+    exit;
+}
+
+#
+# Expand the search path in case it contains multiple directories.
+#
+my $ENV_SEPARATOR = '@ENV_SEPARATOR@';
+my @searchpath = split(/$ENV_SEPARATOR/, $confpath);
+push @searchpath, "/usr/local/etc/snmp";
+push @searchpath, ".";
+push @searchpath, "$home";
+
+# Remove trailing /'s or \'s
+for (my $i=0; $i <= $#searchpath; $i++) {
+  $searchpath[$i] =~ /(.*?)([\/\\])*$/;
+  $searchpath[$i] = $1;
+}
+
+# Determine persistent directory.  Order of preference:
+# 
+# file in SNMP_PERSISTENT_FILE environment variable
+# directory defined by persistentDir snmp.conf variable
+# directory in SNMP_PERSISTENT_DIR environment variable
+# default PERSISTENT_DIRECTORY directory
+my $persistentDir = "";
+my $persistentFile = "";
+
+# SNMP_PERSISTENT_FILE environment variable
+if (defined(&my_getenv("SNMP_PERSISTENT_FILE"))) {
+  $persistentFile = &my_getenv("SNMP_PERSISTENT_FILE");
+  debug ("persistent file: SNMP_PERSISTENT_FILE environment variable set\n");
+}
+
+# snmp.conf persistentDir
+if (!($persistentDir) && !($persistentFile)) {
+  foreach my $i (@searchpath) {
+    debug ("Searching file $i/snmp.conf for persistentDir\n");
+    my $temp = get_persistentDir("$i/snmp.conf");
+    if ($temp) {
+      debug("persistent directory: set to $temp in $i/snmp.conf\n");
+      $persistentDir = $temp;
+      last;
+    }
+  }
+}
+
+# SNMP_PERSISTENT_DIR environment variable
+if (!($persistentDir) && !($persistentFile)) {
+  if (&my_getenv("SNMP_PERSISTENT_DIR")) {
+    $persistentDir = &my_getenv("SNMP_PERSISTENT_DIR");
+    debug ("persistent directory: SNMP_PERSISTENT_DIR environment variable set\n");
+  }
+}
+
+# PERSISTENT_DIRECTORY default variable
+if (!($persistentDir) && !($persistentFile)) {
+  $persistentDir = "/var/net-snmp";
+  debug ("persistent directory: Using default value\n");
+}
+
+# Rebuild search path without persistent folder
+# Note:  persistent file handled in Find existing 
+# files to possibly read in section
+if ($persistentDir) {
+  # Remove trailing /'s or \'s
+  $persistentDir =~ /(.*?)([\/\\])*$/;
+  $persistentDir = $1;
+  debug ("persistent directory: $persistentDir\n");
+
+  my @searchpath_old = @searchpath;
+  @searchpath = ();
+  foreach my $path_temp (@searchpath_old) {
+    if ($path_temp eq $persistentDir) {
+      debug("skipping persistent directory $path_temp\n");
+      next;
+    }
+    push @searchpath, $path_temp;
+  }
+}
+
+# Reset $confpath to the first path
+$confpath = $searchpath[0];
+
+#
+# Find existing files to possibly read in.
+#
+push @searchpath, $opts{I} if ($opts{I});
+foreach my $i (@searchpath) {
+    debug("searching $i\n");
+    foreach my $ft (keys(%filetypes)) {
+        if ("$i/$ft" eq $persistentFile) {
+          debug("skipping persistent file $i/$ft\n");
+          next;
+        }
+	debug("searching for $i/$ft\n");
+	$knownfiles{"$i/$ft"} = $ft if (-f "$i/$ft");
+	my $localft = $ft;
+	$localft =~ s/.conf/.local.conf/;
+	$knownfiles{"$i/$localft"} = $ft if (-f "$i/$localft");
+    }
+}
+
+#
+# Ask the user if they want them to be read in and read them
+#
+if (keys(%knownfiles)) {
+    my @files;
+    if (defined($opts{'r'})) {
+	if ($opts{'r'} eq "all" || $opts{'r'} eq "a") {
+	    @files = keys(%knownfiles);
+	} elsif ($opts{'r'} ne "none" && $opts{'r'} ne "n") {
+	    print "unknown argument to -r: $opts{'r'}\n";
+	    exit(1);
+	}
+    } elsif(defined($opts{'R'})) {
+	@files = split(/\s*,\s*/,$opts{'R'});
+	foreach my $i (@files) {
+	    my $x = $i;
+	    $x =~ s/.*\/([^\/]+)$/$1/;
+	    $knownfiles{$i} = $x;
+	}
+	Print("reading: ", join(",",@files),"\n");
+    } else {
+	@files = display_menu(-head => "The following installed configuration files were found:\n",
+			      -tail => "Would you like me to read them in?  Their content will be merged with the\noutput files created by this session.\n\nValid answer examples: \"all\", \"none\",\"3\",\"1,2,5\"\n",
+			      -multiple => 1,
+			      -question => 'Read in which',
+			      -defaultvalue => 'all',
+			      sort keys(%knownfiles));
+    }
+    foreach my $i (@files) {
+	debug("reading $i\n");
+	read_config($i, $knownfiles{$i});
+    }
+}
+
+if ($opts{'g'}) {
+    my @groups = split(/,:\s/,$opts{'g'});
+    foreach my $group (@groups) {
+	do_group($group);
+    }
+} elsif ($#ARGV >= 0) {
+    #
+    # loop through requested files.
+    #
+    foreach my $i (@ARGV) {
+	if (!defined($filetypes{$i})) {
+	    warn "invalid file: $i\n";
+	} else {
+	    if ($opts{'a'}) {
+		$didfile{$i} = 1;
+	    } else {
+		build_file($term, $i, $filetypes{$i});
+	    }
+	}
+    }
+} else {
+    #
+    # ask user to select file type to operate on.
+    #
+    while(1) {
+	my $line = display_menu(-head => "I can create the following types of configuration files for you.\nSelect the file type you wish to create:\n(you can create more than one as you run this program)\n",
+				-question => 'Select File',
+				-otheranswers => ['quit'],
+				-mapanswers => { 'q' => 'quit' },
+				keys(%filetypes));
+	last if ($line eq "quit");
+	debug("file selected: $line\n");
+	build_file($term, $line, $filetypes{$line});
+    }
+}
+
+#
+# Write out the results to the output files.
+#
+output_files(\%filetypes, $term);
+
+
+#
+# Display the files that have been created for the user.
+#
+Print("\n\nThe following files were created:\n\n");
+@didfiles = keys(%didfile);
+foreach my $i (@didfiles) {
+    if ($didfile{$i} ne "1") {
+	if ($opts{'i'} || $opts{'I'}) {
+          $opts{'I'} = "$confpath" if (!$opts{'I'});
+
+          if (! (-d "$opts{'I'}") && ! (mkdir ("$opts{'I'}", 0755))) {
+	    print "\nCould not create $opts{'I'} directory: $!\n";
+	    print ("File $didfile{$i} left in current directory\n");
+	  }
+	  else {
+            move ("$opts{'I'}/$i", "$opts{'I'}/$i.bak") if (-f "$opts{'I'}/$i");
+            if (move ("$didfile{$i}", "$opts{'I'}")) {
+              print("  $didfile{$i} installed in $opts{'I'}\n");	    
+            }
+            else {
+              print "\nCould not move file $didfile{$i} to $opts{'I'}/$i: $!\n";
+              print ("File $didfile{$i} left in current directory\n");
+            }
+          }
+	} elsif ($opts{'p'}) {
+	  if (! (-d "$home") && ! (mkdir ("$home", 0755))) {
+	    print "\nCould not create $home directory: $!\n";
+	    print ("File $didfile{$i} left in current directory\n");
+	  }
+	  else {	    
+	    move ("$home/$i", "$home/$i.bak") if (-f "$home/$i");
+	    if (move ("$didfile{$i}", "$home")) {
+	      print("  $didfile{$i} installed in $home\n");
+	    }
+	    else {
+	      print "\nCould not move file $didfile{$i} to $home: $!\n";
+	      print ("File $didfile{$i} left in current directory\n");
+  	    }
+	  }
+  	} else {
+	    Print("  $didfile{$i} ",
+	    ($i ne $didfile{$i})?"[ from $i specifications]":" ","\n");
+	    if ($opts{'d'}) {
+		open(I,$didfile{$i});
+		debug("    " . join("    ",<I>) . "\n");
+		close(I);
+	    }
+	}
+    }
+}
+
+if (!$opts{'p'} && !$opts{'i'} && !$opts{'I'}) {
+    Print("\nThese files should be moved to $confpath if you
+want them used by everyone on the system.  In the future, if you add 
+the -i option to the command line I'll copy them there automatically for you.
+
+Or, if you want them for your personal use only, copy them to
+$home .  In the future, if you add the -p option to the
+command line I'll copy them there automatically for you.
+
+");
+}
+
+###########################################################################
+# Functions
+###########################################################################
+
+sub Print {
+    print @_ if (!$opts{'q'});
+}
+#
+# handle a group of questions
+#
+sub get_yn_maybe {
+    my $question = shift;
+    my $ans = "y";
+    if ($question ne "") {
+	$ans = get_answer($term, $question,
+			  valid_answers(qw(yes y no n)), 'y');
+    }
+    return ($ans =~ /^y/)?1:0;
+}
+
+sub do_group {
+    my $group = shift;
+    die "no such group $group\n" if (!$groups{$group});
+    foreach my $token (@{$groups{$group}}) {
+	if ($token->[0] eq "message") {
+	    Print ("$token->[1] $token->[2]\n");
+	} elsif ($token->[0] eq "subgroup") {
+	    do_group($token->[1]) if (get_yn_maybe($token->[2]));
+	} elsif (defined($tokenmap{$token->[1]})) {
+	    if (get_yn_maybe($token->[2])) {
+		do {
+		    do_line($token->[1], $tokenmap{$token->[1]});
+		} until ($token->[0] ne "multiple" ||
+			 get_answer($term, "Do another $token->[1] line?",
+				    valid_answers(qw(yes y no n)), 'y')
+			 =~ /n/);
+	    }
+	} elsif (defined($filetypes{$token->[1]})) {
+	    $didfile{$token->[1]} = 1;
+	} else {
+	    die "invalid member $token->[1] of group $group\n";
+	}
+    }
+}
+
+#
+# build a particular type of file by operating on sections
+#
+sub build_file {
+    my ($term, $filename, $fileconf) = @_;
+    $didfile{$filename} = 1;
+    my (@lines);
+    while(1) {
+	my $line = display_menu(-head => "The configuration information which can be put into $filename is divided\ninto sections.  Select a configuration section for $filename\nthat you wish to create:\n",
+				-otheranswers => ['finished'],
+				-mapanswers => { 'f' => 'finished' },
+				-question => "Select section",
+				-numeric => 1,
+				map { $_->{'title'}[0] } @$fileconf);
+
+	return @lines if ($line eq "finished");
+	do_section($fileconf->[$line-1]);
+    }
+}
+
+#
+# configure a particular section by operating on token types
+#
+sub do_section {
+    my $confsect = shift;
+    my @lines;
+    while(1) {
+	Print ("\nSection: $confsect->{'title'}[0]\n");
+	Print ("Description:\n");
+	Print ("  ", join("\n  ",@{$confsect->{'description'}}),"\n");
+	my $line =
+	    display_menu(-head => "Select from:\n",
+			 -otheranswers => ['finished','list'],
+			 -mapanswers => { 'f' => 'finished',
+					  'l' => 'list' },
+			 -question => 'Select section',
+			 -descriptions => [map { $confsect->{$_}{info}[0] } 
+					   @{$confsect->{'thetokens'}}],
+			 @{$confsect->{'thetokens'}});
+	return @lines if ($line eq "finished");
+	if ($line eq "list") {
+	    print "Lines defined for section \"$confsect->{title}[0]\" so far:\n";
+	    foreach my $i (@{$confsect->{'thetokens'}}) {
+		if ($#{$confsect->{$i}{'results'}} >= 0) {
+		    print "  ",join("\n  ",@{$confsect->{$i}{'results'}}),"\n";
+		}
+	    }
+	    next;
+	}
+	do_line($line, $confsect->{$line});
+    }
+    return;
+}
+
+#
+# Ask all the questions related to a particular line type
+#
+sub do_line {
+    my $token = shift;
+    my $confline = shift;
+    my (@answers, $counter, $i);
+#    debug(my_Dumper($confline));
+    Print ("\nConfiguring: $token\n");
+    Print ("Description:\n  ",join("\n    ",@{$confline->{'info'}}),"\n\n");
+    for($i=0; $i <= $#{$confline->{'question'}}; $i++) {
+	if (defined($confline->{'question'}[$i]) &&
+	    $confline->{'question'}[$i] ne "") {
+	    my $q = $confline->{'question'}[$i];
+	    $q =~ s/\$(\d+)/$answers[$1]/g;
+	    debug("after: $term, $q, ",$confline->{'validanswer'}[$i],"\n");
+	    $answers[$i] = get_answer($term, $q,
+				      $confline->{'validanswer'}[$i]);
+	    $answers[$i] =~ s/\"/\\\"/g;
+	    $answers[$i] = '"' . $answers[$i] . '"' if ($answers[$i] =~ /\s/);
+	}
+    }
+    if ($#{$confline->{'line'}} == -1) {
+	my ($i,$line);
+	for($i=0; $i <= $#{$confline->{'question'}}; $i++) {
+	    next if (!defined($confline->{'question'}[$i]) ||
+		     $confline->{'question'}[$i] eq "");
+	    $line .= " \$" . $i;
+	}
+	push @{$confline->{'line'}}, $line;
+    }
+
+    foreach my $line (@{$confline->{'line'}}) {
+	my $finished = $line;
+	debug("preline: $finished\n");
+	debug("answers: ",my_Dumper(\@answers));
+	$finished =~ s/\$(\d+)/$answers[$1]/g;
+	if ($line =~ s/^eval\s+//) {
+	    debug("eval: $finished\n");
+	    $finished = eval $finished;
+	    debug("eval results: $finished\n");
+	}
+	$finished = $token . " " . $finished;
+	Print ("\nFinished Output: $finished\n");
+	push @{$confline->{'results'}},$finished;
+    }
+}
+
+#
+# read all sets of config files in the various subdirectories.
+#
+sub read_config_files {
+    my $readdir = shift;
+    my $filetypes = shift;
+    opendir(DH, $readdir) || die "no such directory $readdir, did you run make install?\n";
+    my $dir;
+    my $configfilename="snmpconf-config";
+
+    while(defined($dir = readdir(DH))) {
+	next if ($dir =~ /^\./);
+	next if ($dir =~ /CVS/);
+	debug("dir entry: $dir\n");
+	if (-d "$readdir/$dir" && -f "$readdir/$dir/$configfilename") {
+
+	    my $conffile;
+
+	    # read the top level configuration inforamation about the direcotry.
+	    open(I, "$readdir/$dir/$configfilename");
+	    while(<I>) {
+		$conffile = $1 if (/forconffile: (.*)/);
+	    }
+	    close(I);
+
+	    # no README informatino.
+	    if ($conffile eq "") {
+		print STDERR "Warning: No 'forconffile' information in $readdir/$dir/$configfilename\n";
+		next;
+	    }
+
+	    # read all the daat in the directory
+	    $filetypes->{$conffile} = read_config_items("$readdir/$dir", $conffile);
+	} else {
+	    # no README informatino.
+	    print STDERR "Warning: No $configfilename file found in $readdir/$dir\n";
+	}
+    }
+    closedir DH;
+}
+
+#
+# read each configuration file in a directory
+#
+sub read_config_items {
+    my $itemdir = shift;
+    my $type = shift;
+    opendir(ITEMS, $itemdir);
+    my $file;
+    my @results;
+    while(defined($file = readdir(ITEMS))) {
+	next if ($file =~ /~$/);
+	next if ($file =~ /^snmpconf-config$/);
+	if (-f "$itemdir/$file") {
+	    my $res = read_config_item("$itemdir/$file", $type);
+	    if (scalar(keys(%$res)) > 0) {
+		push @results, $res;
+	    }
+	}
+    }
+    closedir(ITEMS);
+    return \@results;
+}
+
+#
+# mark a list of tokens as a special "group"
+#
+sub read_config_group {
+    my ($fh, $group, $type) = @_;
+    my $line;
+    debug("handling group $group\n");
+    push (@{$groups{$group}},['filetype', $type]);
+    while($line = <$fh>) {
+	chomp($line);
+	next if ($line =~ /^\s*$/);
+	next if ($line =~ /^\#/);
+	return $line if ($line !~ /^(single|multiple|message|filetype|subgroup)/);
+	my ($type, $token, $rest) = ($line =~ /^(\w+)\s+([^\s]+)\s*(.*)/);
+	debug ("reading group $group : $type -> $token -> $rest\n");
+	push (@{$groups{$group}}, [$type, $token, $rest]);
+    }
+    return;
+}
+	
+
+#
+# Parse one file
+#
+sub read_config_item {
+    my $itemfile = shift;
+    my $itemcount;
+    my $type = shift;
+    my $fh = new IO::File($itemfile);
+    return if (!defined($fh));
+    my (%results, $curtoken);
+    debug("tokenitems:  ", my_Dumper(\%tokenitems));
+  topwhile:
+    while($line = <$fh>) {
+	next if ($line =~ /^\s*\#/);
+	my ($token, $rest) = ($line =~ /^(\w+)\s+(.*)/);
+	next if (!defined($token) || !defined($rest));
+	while ($token eq 'group') {
+	    # handle special group list
+	    my $next = read_config_group($fh, $rest,$type);
+	    if ($next) {
+		($token, $rest) = ($next =~ /^(\w+)\s+(.*)/);
+	    } else {
+		next topwhile;
+	    }
+	}
+	debug("token: $token => $rest\n");
+	if ($token eq 'steal') {
+	    foreach my $stealfrom (keys(%{$results{$rest}})) {
+		if (!defined($results{$curtoken}{$stealfrom})) {
+		    @{$results{$curtoken}{$stealfrom}} = 
+			@{$results{$rest}{$stealfrom}};
+		}
+	    }
+	} elsif (defined($tokenitems{$token})) {
+	    if (!defined($curtoken)) {
+		die "error in configuration file $itemfile, no token set\n";
+	    }
+	    $rest =~ s/^\#//;
+	    push @{$results{$curtoken}{$token}},$rest;
+	} elsif (defined($arrayitems{$token})) {
+	    if (!defined($curtoken)) {
+		die "error in configuration file $itemfile, no token set\n";
+	    }
+	    my ($num, $newrest) = ($rest =~ /^(\d+)\s+(.*)/);
+	    if (!defined($num) || !defined($newrest)) {
+		warn "invalid config line: $line\n";
+	    } else {
+		$results{$curtoken}{$token}[$num] = $newrest;
+	    }
+	} elsif ($token =~ /^token\s*$/) {
+	    $rest = lc($rest);
+	    $curtoken = $rest;
+	    if (! exists $results{$curtoken}{'defined'}) {
+		push @{$results{'thetokens'}}, $curtoken;
+		$results{$curtoken}{'defined'} = 1;
+	    }
+	    $tokenmap{$curtoken} = $results{$curtoken};
+	    debug("current token set to $token\n");
+	} else {
+	    push @{$results{$token}},$rest;
+	}
+    }
+    return \%results;
+}
+
+sub debug {
+    print @_ if ($opts{'d'});
+}
+
+sub output_files {
+    my $filetypes = shift;
+    my $term = shift;
+    foreach my $ft (keys(%$filetypes)) {
+	next if (!$didfile{$ft});
+	my $outputf = $ft;
+	if (-f $outputf && !$opts{'f'}) {
+	    print "\nError: An $outputf file already exists in this directory.\n\n";
+	    my $ans = get_answer($term,"'overwrite', 'skip', 'rename' or 'append'? ",valid_answers(qw(o overwrite r rename s skip a append)));
+	    next if ($ans =~ /^(s|skip)$/i);
+	    if ($ans =~ /^(a|append)/) {
+		$outputf = ">$outputf";
+	    } elsif ($ans =~ /^(r|rename)$/i) {
+		# default to rename for error conditions
+		$outputf = $term->readline("Save to what new file name instead (or 'skip')? ");
+	    }
+	}
+	$didfile{$ft} = $outputf;
+	open(O,">$outputf") || warn "couldn't write to $outputf\n";
+	print O "#" x 75,"\n";
+	print O "#\n# $ft\n";
+	print O "#\n#   - created by the snmpconf configuration program\n#\n";
+	foreach my $sect (@{$filetypes->{$ft}}) {
+	    my $secthelp = 0;
+	    foreach my $token (@{$sect->{'thetokens'}}) {
+		if ($#{$sect->{$token}{'results'}} >= 0) {
+		    if ($secthelp++ == 0) {
+			print O "#" x 75,"\n# SECTION: ",
+			join("\n#          ", @{$sect->{title}}), "\n#\n";
+			print O "#   ", join("\n#   ",@{$sect->{description}}),
+			"\n";
+		    }
+		    print O "\n# $token: ",
+		    join("\n#   ",@{$sect->{$token}{info}}), "\n\n";
+		    foreach my $result (@{$sect->{$token}{'results'}}) {
+			print O "$result\n";
+		    }
+		}
+	    }
+	    print O "\n\n\n";
+	}
+	if ($#{$unknown{$ft}} > -1) {
+	    print O "#\n# Unknown directives read in from other files by snmpconf\n#\n";
+	    foreach my $unknown (@{$unknown{$ft}}) {
+		print O $unknown,"\n";
+	    }
+	}
+	close(O);
+    }
+}
+
+sub get_answer {
+    my ($term, $question, $regexp, $defaultval) = @_;
+    $question .= " (default = $defaultval)" if (defined($defaultval) && $defaultval ne "");
+    $question .= ": ";
+    my $ans = $term->readline($question);
+    return $defaultval if ($ans eq "" && defined($defaultval) && 
+			   $defaultval ne "");
+    while (!(!defined($regexp) ||
+	     $regexp eq "" ||
+	     $ans =~ /$regexp/)) {
+	print "invalid answer!  It must match this regular expression: $regexp\n";
+	$ans = $term->readline($question);
+    }
+    return $defaultval if ($ans eq "" && defined($defaultval) && 
+			   $defaultval ne "");
+    return $ans;
+}
+    
+sub valid_answers {
+    my @list;
+    foreach $i (@_) {
+	push @list, $i if ($i);
+    }
+    return "^(" . join("|",@list) . ")\$";
+}
+
+sub read_config {
+    my $file = shift;
+    my $filetype = shift;
+    return if (!defined($filetypes{$filetype}));
+    if (! -f $file) {
+	warn "$file does not exist\n";
+	return;
+    }
+    open(I,$file);
+    while(<I>) {
+	next if (/^\s*\#/);
+	next if (/^\s*$/);
+	chomp;
+	my ($token, $rest) = /^\s*(\w+)\s+(.*)/;
+	$token = lc($token);
+	next if (defined($alllines{$_})); # drop duplicate lines
+	if (defined($tokenmap{$token})) {
+	    push @{$tokenmap{$token}{'results'}},$_;
+	} else {
+	    push @{$unknown{$filetype}},$_;
+	}
+	$alllines{$_}++;
+    }
+    close(I);
+}
+
+sub display_menu {
+    my %config;
+
+    while ($#_ > -1 && $_[0] =~ /^-/) {
+	my $key = shift;
+	$config{$key} = shift;
+    }
+
+    my $count=1;
+    print "\n" if (!defined($config{'-dense'}));
+    if ($config{'-head'}) {
+	print $config{'-head'};
+	print "\n" if (!defined($config{'-dense'}));
+    }
+    my @answers = @_;
+    my @list;
+    if (defined($config{'-descriptions'}) && 
+	ref($config{'-descriptions'}) eq "ARRAY") {
+	@list = @{$config{'-descriptions'}}
+    } else {
+	@list = @_;
+    }
+    foreach my $i (@list) {
+	printf "  %2d:  $i\n", $count++ if ($i);
+    }
+    print "\n" if (!defined($config{'-dense'}));
+    if (defined($config{'-otheranswers'})) {
+	if (ref($config{'-otheranswers'}) eq 'ARRAY') {
+	    print "Other options: ", join(", ",
+					  @{$config{'-otheranswers'}}), "\n";
+	    push @answers, @{$config{'-otheranswers'}};
+	    push @answers, keys(%{$config{'-mapanswers'}});
+	} else {
+	    my $maxlen = 0;
+	    push @answers,keys(%{$config{'-otheranswers'}});
+	    foreach my $i (keys(%{$config{'-otheranswers'}})) {
+		$maxlen = length($i) if (length($i) > $maxlen);
+	    }
+	    foreach my $i (keys(%{$config{'-otheranswers'}})) {
+		printf("  %-" . $maxlen . "s: %s\n", $i, 
+		       $config{'-otheranswers'}{$i});
+	    }
+	}
+	print "\n" if (!defined($config{'-dense'}));
+    }
+    if ($config{'-tail'}) {
+	print $config{'-tail'};
+	print "\n" if (!defined($config{'-dense'}));
+    }
+
+    if (defined($config{'-question'})) {
+	while(1) {
+	    my $numexpr;
+	    if ($config{'-multiple'}) {
+		$numexpr = '[\d\s,]+|all|a|none|n';
+	    } else {
+		$numexpr = '\d+';
+	    }
+	    push @answers,"" if ($config{'-defaultvalue'});
+	    $ans = get_answer($term, $config{'-question'},
+			      valid_answers($numexpr,@answers),
+			      $config{'-defaultvalue'});
+	    if ($config{'-mapanswers'}{$ans}) {
+		$ans = $config{'-mapanswers'}{$ans};
+	    }
+
+	    if ($ans =~ /^$numexpr$/) {
+		if ($config{'-multiple'}) {
+		    my @list = split(/\s*,\s*/,$ans);
+		    my @ret;
+		    $count = 0;
+		    foreach my $i (@_) {
+			$count++;
+			if ($ans eq "all" || $ans eq "a" 
+			    || grep(/^$count$/,@list)) {
+			    push @ret, $i;
+			}
+		    }
+		    return @ret;
+		} else {
+		    if ($ans <= 0 || $ans > $#_+1) {
+			warn "invalid selection: $ans [must be 1-" .
+			    ($#_+1) . "]\n";
+		    } else {
+			return $ans if ($config{'-numeric'});
+			$count = 0;
+			foreach my $i (@_) {
+			    $count++;
+			    if ($ans eq $count) {
+				return $i;
+			    }
+			}
+		    }
+		}
+	    } else {
+		return $ans;
+	    }
+	}
+    }
+}
+
+sub my_Dumper {
+    if ($opts{'D'}) {
+	return Dumper(@_);
+    } else {
+	return "\n";
+    }
+}
+
+sub get_persistentDir {
+    my $file = shift;
+    my $result = 0;
+    if (! -f $file) {
+	return 0;
+    }
+    open(I,$file);
+    while(<I>) {
+	next if (/^\s*\#/);
+	next if (/^\s*$/);
+	chomp;
+	my ($token, $rest) = /^\s*(\w+)\s+(.*)/;
+        if (lc($token) eq "persistentdir") {
+          $result = $rest;
+        }
+        next;
+    }
+    close(I);
+    return $result;
+}
+
+# Usage:   &win32_reg_read("key", "value")
+# Example: &win32_reg_read("SOFTWARE\\Net-SNMP","SNMPSHAREPATH");
+# Returns: Value if found in HKCU or HCLM.  Otherwise an empty string.
+sub win32_reg_read {
+  my $sub_key = shift;
+  my $value = shift;
+
+  require Win32::Registry;
+   
+  my ($hkey, %key_values, $temp, $no_warn);
+ 
+  # Try HKCU first
+  $no_warn = $HKEY_CURRENT_USER;
+  if ($HKEY_CURRENT_USER->Open($sub_key, $hkey))
+  {
+    $hkey->GetValues(\%key_values);   
+    foreach $temp (sort keys %key_values) {
+      if ($temp eq $value) {
+        return $key_values{$temp}[2];
+      }
+    }
+    $hkey->Close(); 
+  }
+
+  # Try HKLM second
+  $no_warn = $HKEY_LOCAL_MACHINE;
+  if ($HKEY_LOCAL_MACHINE->Open($sub_key, $hkey))
+  {
+    $hkey->GetValues(\%key_values);
+    foreach $temp (sort keys %key_values) {
+      if ($temp eq $value) {
+        return $key_values{$temp}[2];
+      }
+    }
+    $hkey->Close(); 
+  }
+  return "";
+}
+
+# Usage:   &my_getenv("key")
+# Example: &my_getenv("SNMPSHAREPATH");
+# Returns: Unix:  Environment variable value (undef if not defined)
+#          Win32: HKCU\Software\Net-SNMP\(key) or
+#          Win32: HKLM\Software\Net-SNMP\(key) or
+#          Win32: Environment variable value (undef if not defined)
+sub my_getenv {
+  my $key = shift;
+  
+  # Unix
+  if ($^O ne 'MSWin32') {
+    return $ENV{$key};
+  }
+  # Windows
+  else {
+    my $temp = &win32_reg_read("SOFTWARE\\Net-SNMP","$key");
+    if ($temp ne "") {
+      return $temp;
+    }
+    else {
+      return $ENV{$key};
+    }
+  }
+}
+
diff --git a/ltmain.sh b/ltmain.sh
old mode 100644
new mode 100755
index 27d498a..ed1814f
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,52 +1,89 @@
-# ltmain.sh - Provide generalized library-building support services.
-# NOTE: Changing this file will not affect anything until you rerun configure.
-#
+
+# libtool (GNU libtool) 2.4
+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008  Free Software Foundation, Inc.
-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
-#
-# This program is free software; you can redistribute it and/or modify
+# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# This is free software; see the source for copying conditions.  There is NO
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+# GNU Libtool is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 2 of the License, or
 # (at your option) any later version.
 #
-# This program is distributed in the hope that it will be useful, but
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
 # WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# Usage: $progname [OPTION]... [MODE-ARG]...
 #
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# Provide generalized library-building support services.
+#
+#       --config             show all configuration variables
+#       --debug              enable verbose shell tracing
+#   -n, --dry-run            display commands without modifying any files
+#       --features           display basic configuration information and exit
+#       --mode=MODE          use operation mode MODE
+#       --preserve-dup-deps  don't remove duplicate dependency libraries
+#       --quiet, --silent    don't print informational messages
+#       --no-quiet, --no-silent
+#                            print informational messages (default)
+#       --tag=TAG            use configuration variables from tag TAG
+#   -v, --verbose            print more informational messages than default
+#       --no-verbose         don't print the extra informational messages
+#       --version            print version information
+#   -h, --help, --help-all   print short, long, or detailed help message
+#
+# MODE must be one of the following:
+#
+#         clean              remove files from the build directory
+#         compile            compile a source file into a libtool object
+#         execute            automatically set library path, then run a program
+#         finish             complete the installation of libtool libraries
+#         install            install libraries or executables
+#         link               create a library or an executable
+#         uninstall          remove libraries from an installed directory
+#
+# MODE-ARGS vary depending on the MODE.  When passed as first option,
+# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
+# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
+#
+# When reporting a bug, please describe a test case to reproduce it and
+# include the following information:
+#
+#         host-triplet:	$host
+#         shell:		$SHELL
+#         compiler:		$LTCC
+#         compiler flags:		$LTCFLAGS
+#         linker:		$LD (gnu? $with_gnu_ld)
+#         $progname:	(GNU libtool) 2.4
+#         automake:	$automake_version
+#         autoconf:	$autoconf_version
+#
+# Report bugs to <bug-libtool@gnu.org>.
+# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+# General help using GNU software: <http://www.gnu.org/gethelp/>.
 
-basename="s,^.*/,,g"
-
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath="$0"
-
-# The name of this program:
-progname=`echo "$progpath" | $SED $basename`
-modename="$progname"
-
-# Global variables:
-EXIT_SUCCESS=0
-EXIT_FAILURE=1
-
-PROGRAM=ltmain.sh
+PROGRAM=libtool
 PACKAGE=libtool
-VERSION=1.5.26
-TIMESTAMP=" (1.1220.2.492 2008/01/30 06:40:56)"
+VERSION=2.4
+TIMESTAMP=""
+package_revision=1.3293
 
-# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+# Be Bourne compatible
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   emulate sh
   NULLCMD=:
@@ -60,104 +97,462 @@
 BIN_SH=xpg4; export BIN_SH # for Tru64
 DUALCASE=1; export DUALCASE # for MKS sh
 
-# Check that we have a working $echo.
-if test "X$1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X$1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
-  # Yippee, $echo works!
-  :
-else
-  # Restart under the correct shell, and then maybe $echo will work.
-  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
-fi
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
 
-if test "X$1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<EOF
-$*
-EOF
-  exit $EXIT_SUCCESS
-fi
-
-default_mode=
-help="Try \`$progname --help' for more information."
-magic="%%%MAGIC variable%%%"
-mkdir="mkdir"
-mv="mv -f"
-rm="rm -f"
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed="${SED}"' -e 1s/^X//'
-sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  SP2NL='tr \040 \012'
-  NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  SP2NL='tr \100 \n'
-  NL2SP='tr \r\n \100\100'
-  ;;
-esac
-
-# NLS nuisances.
-# Only set LANG and LC_ALL to C if already set.
-# These must not be set unconditionally because not all systems understand
-# e.g. LANG=C (notably SCO).
-# We save the old values to restore during execute mode.
-lt_env=
+# NLS nuisances: We save the old values to restore during execute mode.
+lt_user_locale=
+lt_safe_locale=
 for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
 do
   eval "if test \"\${$lt_var+set}\" = set; then
-	  save_$lt_var=\$$lt_var
-	  lt_env=\"$lt_var=\$$lt_var \$lt_env\"
-	  $lt_var=C
+          save_$lt_var=\$$lt_var
+          $lt_var=C
 	  export $lt_var
+	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
+	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
 	fi"
 done
+LC_ALL=C
+LANGUAGE=C
+export LANGUAGE LC_ALL
 
-if test -n "$lt_env"; then
-  lt_env="env $lt_env"
-fi
+$lt_unset CDPATH
+
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+
+
+: ${CP="cp -f"}
+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
+: ${EGREP="grep -E"}
+: ${FGREP="grep -F"}
+: ${GREP="grep"}
+: ${LN_S="ln -s"}
+: ${MAKE="make"}
+: ${MKDIR="mkdir"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+: ${SED="sed"}
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
+: ${Xsed="$SED -e 1s/^X//"}
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
+EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
+
+exit_status=$EXIT_SUCCESS
 
 # Make sure IFS has a sensible default
 lt_nl='
 '
 IFS=" 	$lt_nl"
 
-if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-  $echo "$modename: not configured to build any kind of library" 1>&2
-  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
-  exit $EXIT_FAILURE
-fi
+dirname="s,/[^/]*$,,"
+basename="s,^.*/,,"
 
-# Global variables.
-mode=$default_mode
-nonopt=
-prev=
-prevopt=
-run=
-show="$echo"
-show_help=
-execute_dlfiles=
-duplicate_deps=no
-preserve_args=
-lo2o="s/\\.lo\$/.${objext}/"
-o2lo="s/\\.${objext}\$/.lo/"
-extracted_archives=
-extracted_serial=0
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+} # func_dirname may be replaced by extended shell implementation
 
-#####################################
-# Shell function definitions:
-# This seems to be the best place for them
+
+# func_basename file
+func_basename ()
+{
+    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+} # func_basename may be replaced by extended shell implementation
+
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+    # Extract subdirectory from the argument.
+    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
+} # func_dirname_and_basename may be replaced by extended shell implementation
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+    case ${2} in
+      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+    esac
+} # func_stripname may be replaced by extended shell implementation
+
+
+# These SED scripts presuppose an absolute path with a trailing slash.
+pathcar='s,^/\([^/]*\).*$,\1,'
+pathcdr='s,^/[^/]*,,'
+removedotparts=':dotsl
+		s@/\./@/@g
+		t dotsl
+		s,/\.$,/,'
+collapseslashes='s@/\{1,\}@/@g'
+finalslash='s,/*$,/,'
+
+# func_normal_abspath PATH
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+#             value returned in "$func_normal_abspath_result"
+func_normal_abspath ()
+{
+  # Start from root dir and reassemble the path.
+  func_normal_abspath_result=
+  func_normal_abspath_tpath=$1
+  func_normal_abspath_altnamespace=
+  case $func_normal_abspath_tpath in
+    "")
+      # Empty path, that just means $cwd.
+      func_stripname '' '/' "`pwd`"
+      func_normal_abspath_result=$func_stripname_result
+      return
+    ;;
+    # The next three entries are used to spot a run of precisely
+    # two leading slashes without using negated character classes;
+    # we take advantage of case's first-match behaviour.
+    ///*)
+      # Unusual form of absolute path, do nothing.
+    ;;
+    //*)
+      # Not necessarily an ordinary path; POSIX reserves leading '//'
+      # and for example Cygwin uses it to access remote file shares
+      # over CIFS/SMB, so we conserve a leading double slash if found.
+      func_normal_abspath_altnamespace=/
+    ;;
+    /*)
+      # Absolute path, do nothing.
+    ;;
+    *)
+      # Relative path, prepend $cwd.
+      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+    ;;
+  esac
+  # Cancel out all the simple stuff to save iterations.  We also want
+  # the path to end with a slash for ease of parsing, so make sure
+  # there is one (and only one) here.
+  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
+  while :; do
+    # Processed it all yet?
+    if test "$func_normal_abspath_tpath" = / ; then
+      # If we ascended to the root using ".." the result may be empty now.
+      if test -z "$func_normal_abspath_result" ; then
+        func_normal_abspath_result=/
+      fi
+      break
+    fi
+    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$pathcar"`
+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$pathcdr"`
+    # Figure out what to do with it
+    case $func_normal_abspath_tcomponent in
+      "")
+        # Trailing empty path component, ignore it.
+      ;;
+      ..)
+        # Parent dir; strip last assembled component from result.
+        func_dirname "$func_normal_abspath_result"
+        func_normal_abspath_result=$func_dirname_result
+      ;;
+      *)
+        # Actual path component, append it.
+        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
+      ;;
+    esac
+  done
+  # Restore leading double-slash if one was found on entry.
+  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+# func_relative_path SRCDIR DSTDIR
+# generates a relative path from SRCDIR to DSTDIR, with a trailing
+# slash if non-empty, suitable for immediately appending a filename
+# without needing to append a separator.
+#             value returned in "$func_relative_path_result"
+func_relative_path ()
+{
+  func_relative_path_result=
+  func_normal_abspath "$1"
+  func_relative_path_tlibdir=$func_normal_abspath_result
+  func_normal_abspath "$2"
+  func_relative_path_tbindir=$func_normal_abspath_result
+
+  # Ascend the tree starting from libdir
+  while :; do
+    # check if we have found a prefix of bindir
+    case $func_relative_path_tbindir in
+      $func_relative_path_tlibdir)
+        # found an exact match
+        func_relative_path_tcancelled=
+        break
+        ;;
+      $func_relative_path_tlibdir*)
+        # found a matching prefix
+        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+        func_relative_path_tcancelled=$func_stripname_result
+        if test -z "$func_relative_path_result"; then
+          func_relative_path_result=.
+        fi
+        break
+        ;;
+      *)
+        func_dirname $func_relative_path_tlibdir
+        func_relative_path_tlibdir=${func_dirname_result}
+        if test "x$func_relative_path_tlibdir" = x ; then
+          # Have to descend all the way to the root!
+          func_relative_path_result=../$func_relative_path_result
+          func_relative_path_tcancelled=$func_relative_path_tbindir
+          break
+        fi
+        func_relative_path_result=../$func_relative_path_result
+        ;;
+    esac
+  done
+
+  # Now calculate path; take care to avoid doubling-up slashes.
+  func_stripname '' '/' "$func_relative_path_result"
+  func_relative_path_result=$func_stripname_result
+  func_stripname '/' '/' "$func_relative_path_tcancelled"
+  if test "x$func_stripname_result" != x ; then
+    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
+  fi
+
+  # Normalisation. If bindir is libdir, return empty string,
+  # else relative path ending with a slash; either way, target
+  # file name can be directly appended.
+  if test ! -z "$func_relative_path_result"; then
+    func_stripname './' '' "$func_relative_path_result/"
+    func_relative_path_result=$func_stripname_result
+  fi
+}
+
+# The name of this program:
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
+
+# Make sure we have an absolute path for reexecution:
+case $progpath in
+  [\\/]*|[A-Za-z]:\\*) ;;
+  *[\\/]*)
+     progdir=$func_dirname_result
+     progdir=`cd "$progdir" && pwd`
+     progpath="$progdir/$progname"
+     ;;
+  *)
+     save_IFS="$IFS"
+     IFS=:
+     for progdir in $PATH; do
+       IFS="$save_IFS"
+       test -x "$progdir/$progname" && break
+     done
+     IFS="$save_IFS"
+     test -n "$progdir" || progdir=`pwd`
+     progpath="$progdir/$progname"
+     ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
+
+# Sed substitution that converts a w32 file name or path
+# which contains forward slashes, into one that contains
+# (escaped) backslashes.  A very naive implementation.
+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
+# Re-`\' parameter expansions in output of double_quote_subst that were
+# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
+# in input to double_quote_subst, that '$' was protected from expansion.
+# Since each input `\' is now two `\'s, look for any number of runs of
+# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+  s/$bs4/&\\
+/g
+  s/^$bs2$dollar/$bs&/
+  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+  s/\n//g"
+
+# Standard options:
+opt_dry_run=false
+opt_help=false
+opt_quiet=false
+opt_verbose=false
+opt_warning=:
+
+# func_echo arg...
+# Echo program name prefixed message, along with the current mode
+# name if it has been set yet.
+func_echo ()
+{
+    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
+}
+
+# func_verbose arg...
+# Echo program name prefixed message in verbose mode only.
+func_verbose ()
+{
+    $opt_verbose && func_echo ${1+"$@"}
+
+    # A bug in bash halts the script if the last line of a function
+    # fails when set -e is in force, so we need another command to
+    # work around that:
+    :
+}
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
+
+# func_error arg...
+# Echo program name prefixed message to standard error.
+func_error ()
+{
+    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
+}
+
+# func_warning arg...
+# Echo program name prefixed warning message to standard error.
+func_warning ()
+{
+    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
+
+    # bash bug again:
+    :
+}
+
+# func_fatal_error arg...
+# Echo program name prefixed message to standard error, and exit.
+func_fatal_error ()
+{
+    func_error ${1+"$@"}
+    exit $EXIT_FAILURE
+}
+
+# func_fatal_help arg...
+# Echo program name prefixed message to standard error, followed by
+# a help hint, and exit.
+func_fatal_help ()
+{
+    func_error ${1+"$@"}
+    func_fatal_error "$help"
+}
+help="Try \`$progname --help' for more information."  ## default
+
+
+# func_grep expression filename
+# Check whether EXPRESSION matches any line of FILENAME, without output.
+func_grep ()
+{
+    $GREP "$1" "$2" >/dev/null 2>&1
+}
+
+
+# func_mkdir_p directory-path
+# Make sure the entire path to DIRECTORY-PATH is available.
+func_mkdir_p ()
+{
+    my_directory_path="$1"
+    my_dir_list=
+
+    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
+
+      # Protect directory names starting with `-'
+      case $my_directory_path in
+        -*) my_directory_path="./$my_directory_path" ;;
+      esac
+
+      # While some portion of DIR does not yet exist...
+      while test ! -d "$my_directory_path"; do
+        # ...make a list in topmost first order.  Use a colon delimited
+	# list incase some portion of path contains whitespace.
+        my_dir_list="$my_directory_path:$my_dir_list"
+
+        # If the last portion added has no slash in it, the list is done
+        case $my_directory_path in */*) ;; *) break ;; esac
+
+        # ...otherwise throw away the child directory and loop
+        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
+      done
+      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
+
+      save_mkdir_p_IFS="$IFS"; IFS=':'
+      for my_dir in $my_dir_list; do
+	IFS="$save_mkdir_p_IFS"
+        # mkdir can fail with a `File exist' error if two processes
+        # try to create one of the directories concurrently.  Don't
+        # stop in that case!
+        $MKDIR "$my_dir" 2>/dev/null || :
+      done
+      IFS="$save_mkdir_p_IFS"
+
+      # Bail out if we (or some other process) failed to create a directory.
+      test -d "$my_directory_path" || \
+        func_fatal_error "Failed to create \`$1'"
+    fi
+}
+
 
 # func_mktempdir [string]
 # Make a temporary directory that won't clash with other running
@@ -167,7 +562,7 @@
 {
     my_template="${TMPDIR-/tmp}/${1-$progname}"
 
-    if test "$run" = ":"; then
+    if test "$opt_dry_run" = ":"; then
       # Return a directory name, but don't create it in dry-run mode
       my_tmpdir="${my_template}-$$"
     else
@@ -176,72 +571,800 @@
       my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
 
       if test ! -d "$my_tmpdir"; then
-	# Failing that, at least try and use $RANDOM to avoid a race
-	my_tmpdir="${my_template}-${RANDOM-0}$$"
+        # Failing that, at least try and use $RANDOM to avoid a race
+        my_tmpdir="${my_template}-${RANDOM-0}$$"
 
-	save_mktempdir_umask=`umask`
-	umask 0077
-	$mkdir "$my_tmpdir"
-	umask $save_mktempdir_umask
+        save_mktempdir_umask=`umask`
+        umask 0077
+        $MKDIR "$my_tmpdir"
+        umask $save_mktempdir_umask
       fi
 
       # If we're not in dry-run mode, bomb out on failure
-      test -d "$my_tmpdir" || {
-        $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
-	exit $EXIT_FAILURE
-      }
+      test -d "$my_tmpdir" || \
+        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
     fi
 
-    $echo "X$my_tmpdir" | $Xsed
+    $ECHO "$my_tmpdir"
 }
 
 
-# func_win32_libid arg
-# return the library type of file 'arg'
-#
-# Need a lot of goo to handle *both* DLLs and import libs
-# Has to be a shell function in order to 'eat' the argument
-# that is supplied when $file_magic_command is called.
-func_win32_libid ()
+# func_quote_for_eval arg
+# Aesthetically quote ARG to be evaled later.
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
+# is double-quoted, suitable for a subsequent eval, whereas
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
+# which are still active within double quotes backslashified.
+func_quote_for_eval ()
 {
-  win32_libid_type="unknown"
-  win32_fileres=`file -L $1 2>/dev/null`
-  case $win32_fileres in
-  *ar\ archive\ import\ library*) # definitely import
-    win32_libid_type="x86 archive import"
-    ;;
-  *ar\ archive*) # could be an import, or static
-    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
-      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
-      win32_nmres=`eval $NM -f posix -A $1 | \
-	$SED -n -e '1,100{
-		/ I /{
-			s,.*,import,
-			p
-			q
-			}
-		}'`
-      case $win32_nmres in
-      import*)  win32_libid_type="x86 archive import";;
-      *)        win32_libid_type="x86 archive static";;
-      esac
-    fi
-    ;;
-  *DLL*)
-    win32_libid_type="x86 DLL"
-    ;;
-  *executable*) # but shell scripts are "executable" too...
-    case $win32_fileres in
-    *MS\ Windows\ PE\ Intel*)
-      win32_libid_type="x86 DLL"
-      ;;
+    case $1 in
+      *[\\\`\"\$]*)
+	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
+      *)
+        func_quote_for_eval_unquoted_result="$1" ;;
     esac
+
+    case $func_quote_for_eval_unquoted_result in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting, command substitution and and variable
+      # expansion for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
+        ;;
+      *)
+        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
+    esac
+}
+
+
+# func_quote_for_expand arg
+# Aesthetically quote ARG to be evaled later; same as above,
+# but do not quote variable references.
+func_quote_for_expand ()
+{
+    case $1 in
+      *[\\\`\"]*)
+	my_arg=`$ECHO "$1" | $SED \
+	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
+      *)
+        my_arg="$1" ;;
+    esac
+
+    case $my_arg in
+      # Double-quote args containing shell metacharacters to delay
+      # word splitting and command substitution for a subsequent eval.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, so we specify it separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+        my_arg="\"$my_arg\""
+        ;;
+    esac
+
+    func_quote_for_expand_result="$my_arg"
+}
+
+
+# func_show_eval cmd [fail_exp]
+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.
+func_show_eval ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$my_cmd"
+      my_status=$?
+      if test "$my_status" -eq 0; then :; else
+	eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
+}
+
+
+# func_show_eval_locale cmd [fail_exp]
+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.  Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$lt_user_locale
+	    $my_cmd"
+      my_status=$?
+      eval "$lt_safe_locale"
+      if test "$my_status" -eq 0; then :; else
+	eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
+}
+
+# func_tr_sh
+# Turn $1 into a string suitable for a shell variable name.
+# Result is stored in $func_tr_sh_result.  All characters
+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
+# if $1 begins with a digit, a '_' is prepended as well.
+func_tr_sh ()
+{
+  case $1 in
+  [0-9]* | *[!a-zA-Z0-9_]*)
+    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
+    ;;
+  * )
+    func_tr_sh_result=$1
     ;;
   esac
-  $echo $win32_libid_type
 }
 
 
+# func_version
+# Echo version message to standard output and exit.
+func_version ()
+{
+    $opt_debug
+
+    $SED -n '/(C)/!b go
+	:more
+	/\./!{
+	  N
+	  s/\n# / /
+	  b more
+	}
+	:go
+	/^# '$PROGRAM' (GNU /,/# warranty; / {
+        s/^# //
+	s/^# *$//
+        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
+        p
+     }' < "$progpath"
+     exit $?
+}
+
+# func_usage
+# Echo short help message to standard output and exit.
+func_usage ()
+{
+    $opt_debug
+
+    $SED -n '/^# Usage:/,/^#  *.*--help/ {
+        s/^# //
+	s/^# *$//
+	s/\$progname/'$progname'/
+	p
+    }' < "$progpath"
+    echo
+    $ECHO "run \`$progname --help | more' for full usage"
+    exit $?
+}
+
+# func_help [NOEXIT]
+# Echo long help message to standard output and exit,
+# unless 'noexit' is passed as argument.
+func_help ()
+{
+    $opt_debug
+
+    $SED -n '/^# Usage:/,/# Report bugs to/ {
+	:print
+        s/^# //
+	s/^# *$//
+	s*\$progname*'$progname'*
+	s*\$host*'"$host"'*
+	s*\$SHELL*'"$SHELL"'*
+	s*\$LTCC*'"$LTCC"'*
+	s*\$LTCFLAGS*'"$LTCFLAGS"'*
+	s*\$LD*'"$LD"'*
+	s/\$with_gnu_ld/'"$with_gnu_ld"'/
+	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
+	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+	p
+	d
+     }
+     /^# .* home page:/b print
+     /^# General help using/b print
+     ' < "$progpath"
+    ret=$?
+    if test -z "$1"; then
+      exit $ret
+    fi
+}
+
+# func_missing_arg argname
+# Echo program name prefixed message to standard error and set global
+# exit_cmd.
+func_missing_arg ()
+{
+    $opt_debug
+
+    func_error "missing argument for $1."
+    exit_cmd=exit
+}
+
+
+# func_split_short_opt shortopt
+# Set func_split_short_opt_name and func_split_short_opt_arg shell
+# variables after splitting SHORTOPT after the 2nd character.
+func_split_short_opt ()
+{
+    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
+    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
+
+    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
+    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
+} # func_split_short_opt may be replaced by extended shell implementation
+
+
+# func_split_long_opt longopt
+# Set func_split_long_opt_name and func_split_long_opt_arg shell
+# variables after splitting LONGOPT at the `=' sign.
+func_split_long_opt ()
+{
+    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
+    my_sed_long_arg='1s/^--[^=]*=//'
+
+    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
+    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
+} # func_split_long_opt may be replaced by extended shell implementation
+
+exit_cmd=:
+
+
+
+
+
+magic="%%%MAGIC variable%%%"
+magic_exe="%%%MAGIC EXE variable%%%"
+
+# Global variables.
+nonopt=
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+    eval "${1}=\$${1}\${2}"
+} # func_append may be replaced by extended shell implementation
+
+# func_append_quoted var value
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+func_append_quoted ()
+{
+    func_quote_for_eval "${2}"
+    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
+} # func_append_quoted may be replaced by extended shell implementation
+
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+    func_arith_result=`expr "${@}"`
+} # func_arith may be replaced by extended shell implementation
+
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
+} # func_len may be replaced by extended shell implementation
+
+
+# func_lo2o object
+func_lo2o ()
+{
+    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+} # func_lo2o may be replaced by extended shell implementation
+
+
+# func_xform libobj-or-source
+func_xform ()
+{
+    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+} # func_xform may be replaced by extended shell implementation
+
+
+# func_fatal_configuration arg...
+# Echo program name prefixed message to standard error, followed by
+# a configuration failure hint, and exit.
+func_fatal_configuration ()
+{
+    func_error ${1+"$@"}
+    func_error "See the $PACKAGE documentation for more information."
+    func_fatal_error "Fatal configuration error."
+}
+
+
+# func_config
+# Display the configuration for all the tags in this script.
+func_config ()
+{
+    re_begincf='^# ### BEGIN LIBTOOL'
+    re_endcf='^# ### END LIBTOOL'
+
+    # Default configuration.
+    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
+
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
+    done
+
+    exit $?
+}
+
+# func_features
+# Display the features supported by this script.
+func_features ()
+{
+    echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      echo "enable shared libraries"
+    else
+      echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      echo "enable static libraries"
+    else
+      echo "disable static libraries"
+    fi
+
+    exit $?
+}
+
+# func_enable_tag tagname
+# Verify that TAGNAME is valid, and either flag an error and exit, or
+# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
+# variable here.
+func_enable_tag ()
+{
+  # Global variable:
+  tagname="$1"
+
+  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
+  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
+  sed_extractcf="/$re_begincf/,/$re_endcf/p"
+
+  # Validate tagname.
+  case $tagname in
+    *[!-_A-Za-z0-9,/]*)
+      func_fatal_error "invalid tag name: $tagname"
+      ;;
+  esac
+
+  # Don't test for the "default" C tag, as we know it's
+  # there but not specially marked.
+  case $tagname in
+    CC) ;;
+    *)
+      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
+	taglist="$taglist $tagname"
+
+	# Evaluate the configuration.  Be careful to quote the path
+	# and the sed script, to avoid splitting on whitespace, but
+	# also don't use non-portable quotes within backquotes within
+	# quotes we have to do it in 2 steps:
+	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
+	eval "$extractedcf"
+      else
+	func_error "ignoring unknown tag $tagname"
+      fi
+      ;;
+  esac
+}
+
+# func_check_version_match
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
+{
+  if test "$package_revision" != "$macro_revision"; then
+    if test "$VERSION" != "$macro_version"; then
+      if test -z "$macro_version"; then
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+      else
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+      fi
+    else
+      cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+    fi
+
+    exit $EXIT_MISMATCH
+  fi
+}
+
+
+# Shorthand for --mode=foo, only valid as the first argument
+case $1 in
+clean|clea|cle|cl)
+  shift; set dummy --mode clean ${1+"$@"}; shift
+  ;;
+compile|compil|compi|comp|com|co|c)
+  shift; set dummy --mode compile ${1+"$@"}; shift
+  ;;
+execute|execut|execu|exec|exe|ex|e)
+  shift; set dummy --mode execute ${1+"$@"}; shift
+  ;;
+finish|finis|fini|fin|fi|f)
+  shift; set dummy --mode finish ${1+"$@"}; shift
+  ;;
+install|instal|insta|inst|ins|in|i)
+  shift; set dummy --mode install ${1+"$@"}; shift
+  ;;
+link|lin|li|l)
+  shift; set dummy --mode link ${1+"$@"}; shift
+  ;;
+uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+  shift; set dummy --mode uninstall ${1+"$@"}; shift
+  ;;
+esac
+
+
+
+# Option defaults:
+opt_debug=:
+opt_dry_run=false
+opt_config=false
+opt_preserve_dup_deps=false
+opt_features=false
+opt_finish=false
+opt_help=false
+opt_help_all=false
+opt_silent=:
+opt_verbose=:
+opt_silent=false
+opt_verbose=false
+
+
+# Parse options once, thoroughly.  This comes as soon as possible in the
+# script to make things like `--version' happen as quickly as we can.
+{
+  # this just eases exit handling
+  while test $# -gt 0; do
+    opt="$1"
+    shift
+    case $opt in
+      --debug|-x)	opt_debug='set -x'
+			func_echo "enabling shell trace mode"
+			$opt_debug
+			;;
+      --dry-run|--dryrun|-n)
+			opt_dry_run=:
+			;;
+      --config)
+			opt_config=:
+func_config
+			;;
+      --dlopen|-dlopen)
+			optarg="$1"
+			opt_dlopen="${opt_dlopen+$opt_dlopen
+}$optarg"
+			shift
+			;;
+      --preserve-dup-deps)
+			opt_preserve_dup_deps=:
+			;;
+      --features)
+			opt_features=:
+func_features
+			;;
+      --finish)
+			opt_finish=:
+set dummy --mode finish ${1+"$@"}; shift
+			;;
+      --help)
+			opt_help=:
+			;;
+      --help-all)
+			opt_help_all=:
+opt_help=': help-all'
+			;;
+      --mode)
+			test $# = 0 && func_missing_arg $opt && break
+			optarg="$1"
+			opt_mode="$optarg"
+case $optarg in
+  # Valid mode arguments:
+  clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+  # Catch anything else as an error
+  *) func_error "invalid argument for $opt"
+     exit_cmd=exit
+     break
+     ;;
+esac
+			shift
+			;;
+      --no-silent|--no-quiet)
+			opt_silent=false
+func_append preserve_args " $opt"
+			;;
+      --no-verbose)
+			opt_verbose=false
+func_append preserve_args " $opt"
+			;;
+      --silent|--quiet)
+			opt_silent=:
+func_append preserve_args " $opt"
+        opt_verbose=false
+			;;
+      --verbose|-v)
+			opt_verbose=:
+func_append preserve_args " $opt"
+opt_silent=false
+			;;
+      --tag)
+			test $# = 0 && func_missing_arg $opt && break
+			optarg="$1"
+			opt_tag="$optarg"
+func_append preserve_args " $opt $optarg"
+func_enable_tag "$optarg"
+			shift
+			;;
+
+      -\?|-h)		func_usage				;;
+      --help)		func_help				;;
+      --version)	func_version				;;
+
+      # Separate optargs to long options:
+      --*=*)
+			func_split_long_opt "$opt"
+			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
+			shift
+			;;
+
+      # Separate non-argument short options:
+      -\?*|-h*|-n*|-v*)
+			func_split_short_opt "$opt"
+			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
+			shift
+			;;
+
+      --)		break					;;
+      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
+      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
+    esac
+  done
+
+  # Validate options:
+
+  # save first non-option argument
+  if test "$#" -gt 0; then
+    nonopt="$opt"
+    shift
+  fi
+
+  # preserve --debug
+  test "$opt_debug" = : || func_append preserve_args " --debug"
+
+  case $host in
+    *cygwin* | *mingw* | *pw32* | *cegcc*)
+      # don't eliminate duplications in $postdeps and $predeps
+      opt_duplicate_compiler_generated_deps=:
+      ;;
+    *)
+      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
+      ;;
+  esac
+
+  $opt_help || {
+    # Sanity checks first:
+    func_check_version_match
+
+    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+      func_fatal_configuration "not configured to build any kind of library"
+    fi
+
+    # Darwin sucks
+    eval std_shrext=\"$shrext_cmds\"
+
+    # Only execute mode is allowed to have -dlopen flags.
+    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
+      func_error "unrecognized option \`-dlopen'"
+      $ECHO "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Change the help message to a mode-specific one.
+    generic_help="$help"
+    help="Try \`$progname --help --mode=$opt_mode' for more information."
+  }
+
+
+  # Bail if the options were screwed
+  $exit_cmd $EXIT_FAILURE
+}
+
+
+
+
+## ----------- ##
+##    Main.    ##
+## ----------- ##
+
+# func_lalib_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_lalib_p ()
+{
+    test -f "$1" &&
+      $SED -e 4q "$1" 2>/dev/null \
+        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+}
+
+# func_lalib_unsafe_p file
+# True iff FILE is a libtool `.la' library or `.lo' object file.
+# This function implements the same check as func_lalib_p without
+# resorting to external programs.  To this end, it redirects stdin and
+# closes it afterwards, without saving the original file descriptor.
+# As a safety measure, use it only where a negative result would be
+# fatal anyway.  Works if `file' does not exist.
+func_lalib_unsafe_p ()
+{
+    lalib_p=no
+    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
+	for lalib_p_l in 1 2 3 4
+	do
+	    read lalib_p_line
+	    case "$lalib_p_line" in
+		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
+	    esac
+	done
+	exec 0<&5 5<&-
+    fi
+    test "$lalib_p" = yes
+}
+
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+    func_lalib_p "$1"
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+    func_ltwrapper_exec_suffix=
+    case $1 in
+    *.exe) ;;
+    *) func_ltwrapper_exec_suffix=.exe ;;
+    esac
+    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+    func_dirname_and_basename "$1" "" "."
+    func_stripname '' '.exe' "$func_basename_result"
+    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+}
+
+# func_ltwrapper_p file
+# True iff FILE is a libtool wrapper script or wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_p ()
+{
+    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
+}
+
+
+# func_execute_cmds commands fail_cmd
+# Execute tilde-delimited COMMANDS.
+# If FAIL_CMD is given, eval that upon failure.
+# FAIL_CMD may read-access the current command in variable CMD!
+func_execute_cmds ()
+{
+    $opt_debug
+    save_ifs=$IFS; IFS='~'
+    for cmd in $1; do
+      IFS=$save_ifs
+      eval cmd=\"$cmd\"
+      func_show_eval "$cmd" "${2-:}"
+    done
+    IFS=$save_ifs
+}
+
+
+# func_source file
+# Source FILE, adding directory component if necessary.
+# Note that it is not necessary on cygwin/mingw to append a dot to
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
+# behavior happens only for exec(3), not for open(2)!  Also, sourcing
+# `FILE.' does not work on cygwin managed mounts.
+func_source ()
+{
+    $opt_debug
+    case $1 in
+    */* | *\\*)	. "$1" ;;
+    *)		. "./$1" ;;
+    esac
+}
+
+
+# func_resolve_sysroot PATH
+# Replace a leading = in PATH with a sysroot.  Store the result into
+# func_resolve_sysroot_result
+func_resolve_sysroot ()
+{
+  func_resolve_sysroot_result=$1
+  case $func_resolve_sysroot_result in
+  =*)
+    func_stripname '=' '' "$func_resolve_sysroot_result"
+    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
+    ;;
+  esac
+}
+
+# func_replace_sysroot PATH
+# If PATH begins with the sysroot, replace it with = and
+# store the result into func_replace_sysroot_result.
+func_replace_sysroot ()
+{
+  case "$lt_sysroot:$1" in
+  ?*:"$lt_sysroot"*)
+    func_stripname "$lt_sysroot" '' "$1"
+    func_replace_sysroot_result="=$func_stripname_result"
+    ;;
+  *)
+    # Including no sysroot.
+    func_replace_sysroot_result=$1
+    ;;
+  esac
+}
+
 # func_infer_tag arg
 # Infer tagged configuration to use if any are available and
 # if one wasn't chosen via the "--tag" command line option.
@@ -250,39 +1373,36 @@
 # arg is usually of the form 'gcc ...'
 func_infer_tag ()
 {
+    $opt_debug
     if test -n "$available_tags" && test -z "$tagname"; then
       CC_quoted=
       for arg in $CC; do
-	case $arg in
-	  *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-	  arg="\"$arg\""
-	  ;;
-	esac
-	CC_quoted="$CC_quoted $arg"
+	func_append_quoted CC_quoted "$arg"
       done
+      CC_expanded=`func_echo_all $CC`
+      CC_quoted_expanded=`func_echo_all $CC_quoted`
       case $@ in
       # Blanks in the command may have been stripped by the calling shell,
       # but not from the CC environment variable when configure was run.
-      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
       # Blanks at the start of $base_compile will cause this to fail
       # if we don't check for them as well.
       *)
 	for z in $available_tags; do
-	  if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
 	    # Evaluate the configuration.
 	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
 	    CC_quoted=
 	    for arg in $CC; do
-	    # Double-quote args containing other shell metacharacters.
-	    case $arg in
-	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-	      arg="\"$arg\""
-	      ;;
-	    esac
-	    CC_quoted="$CC_quoted $arg"
-	  done
+	      # Double-quote args containing other shell metacharacters.
+	      func_append_quoted CC_quoted "$arg"
+	    done
+	    CC_expanded=`func_echo_all $CC`
+	    CC_quoted_expanded=`func_echo_all $CC_quoted`
 	    case "$@ " in
-	      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
 	      # The compiler in the base compile command matches
 	      # the one in the tagged configuration.
 	      # Assume this is the tagged configuration we want.
@@ -296,11 +1416,10 @@
 	# was found and let the user know that the "--tag" command
 	# line option must be used.
 	if test -z "$tagname"; then
-	  $echo "$modename: unable to infer tagged configuration"
-	  $echo "$modename: specify a tag with \`--tag'" 1>&2
-	  exit $EXIT_FAILURE
-#        else
-#          $echo "$modename: using $tagname tagged configuration"
+	  func_echo "unable to infer tagged configuration"
+	  func_fatal_error "specify a tag with \`--tag'"
+#	else
+#	  func_verbose "using $tagname tagged configuration"
 	fi
 	;;
       esac
@@ -308,354 +1427,528 @@
 }
 
 
-# func_extract_an_archive dir oldlib
-func_extract_an_archive ()
+
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
 {
-    f_ex_an_ar_dir="$1"; shift
-    f_ex_an_ar_oldlib="$1"
-
-    $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
-    $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
-    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
-     :
-    else
-      $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
-      exit $EXIT_FAILURE
-    fi
-}
-
-# func_extract_archives gentop oldlib ...
-func_extract_archives ()
-{
-    my_gentop="$1"; shift
-    my_oldlibs=${1+"$@"}
-    my_oldobjs=""
-    my_xlib=""
-    my_xabs=""
-    my_xdir=""
-    my_status=""
-
-    $show "${rm}r $my_gentop"
-    $run ${rm}r "$my_gentop"
-    $show "$mkdir $my_gentop"
-    $run $mkdir "$my_gentop"
-    my_status=$?
-    if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
-      exit $my_status
-    fi
-
-    for my_xlib in $my_oldlibs; do
-      # Extract the objects.
-      case $my_xlib in
-	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
-	*) my_xabs=`pwd`"/$my_xlib" ;;
-      esac
-      my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
-      my_xlib_u=$my_xlib
-      while :; do
-        case " $extracted_archives " in
-	*" $my_xlib_u "*)
-	  extracted_serial=`expr $extracted_serial + 1`
-	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
-	*) break ;;
-	esac
-      done
-      extracted_archives="$extracted_archives $my_xlib_u"
-      my_xdir="$my_gentop/$my_xlib_u"
-
-      $show "${rm}r $my_xdir"
-      $run ${rm}r "$my_xdir"
-      $show "$mkdir $my_xdir"
-      $run $mkdir "$my_xdir"
-      exit_status=$?
-      if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
-	exit $exit_status
-      fi
-      case $host in
-      *-darwin*)
-	$show "Extracting $my_xabs"
-	# Do not bother doing anything if just a dry run
-	if test -z "$run"; then
-	  darwin_orig_dir=`pwd`
-	  cd $my_xdir || exit $?
-	  darwin_archive=$my_xabs
-	  darwin_curdir=`pwd`
-	  darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
-	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
-	  if test -n "$darwin_arches"; then 
-	    darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
-	    darwin_arch=
-	    $show "$darwin_base_archive has multiple architectures $darwin_arches"
-	    for darwin_arch in  $darwin_arches ; do
-	      mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
-	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
-	      cd "$darwin_curdir"
-	      $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
-	    done # $darwin_arches
-      ## Okay now we have a bunch of thin objects, gotta fatten them up :)
-	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
-	    darwin_file=
-	    darwin_files=
-	    for darwin_file in $darwin_filelist; do
-	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
-	      lipo -create -output "$darwin_file" $darwin_files
-	    done # $darwin_filelist
-	    ${rm}r unfat-$$
-	    cd "$darwin_orig_dir"
-	  else
-	    cd "$darwin_orig_dir"
- 	    func_extract_an_archive "$my_xdir" "$my_xabs"
-	  fi # $darwin_arches
-	fi # $run
-	;;
-      *)
-        func_extract_an_archive "$my_xdir" "$my_xabs"
-        ;;
-      esac
-      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
-    done
-    func_extract_archives_result="$my_oldobjs"
-}
-# End of Shell function definitions
-#####################################
-
-# Darwin sucks
-eval std_shrext=\"$shrext_cmds\"
-
-disable_libs=no
-
-# Parse our command line options once, thoroughly.
-while test "$#" -gt 0
-do
-  arg="$1"
-  shift
-
-  case $arg in
-  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) optarg= ;;
-  esac
-
-  # If the previous option needs an argument, assign it.
-  if test -n "$prev"; then
-    case $prev in
-    execute_dlfiles)
-      execute_dlfiles="$execute_dlfiles $arg"
-      ;;
-    tag)
-      tagname="$arg"
-      preserve_args="${preserve_args}=$arg"
-
-      # Check whether tagname contains only valid characters
-      case $tagname in
-      *[!-_A-Za-z0-9,/]*)
-	$echo "$progname: invalid tag name: $tagname" 1>&2
-	exit $EXIT_FAILURE
-	;;
-      esac
-
-      case $tagname in
-      CC)
-	# Don't test for the "default" C tag, as we know, it's there, but
-	# not specially marked.
-	;;
-      *)
-	if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
-	  taglist="$taglist $tagname"
-	  # Evaluate the configuration.
-	  eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
-	else
-	  $echo "$progname: ignoring unknown tag $tagname" 1>&2
-	fi
-	;;
-      esac
-      ;;
-    *)
-      eval "$prev=\$arg"
-      ;;
-    esac
-
-    prev=
-    prevopt=
-    continue
-  fi
-
-  # Have we seen a non-optional argument yet?
-  case $arg in
-  --help)
-    show_help=yes
-    ;;
-
-  --version)
-    echo "\
-$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP
-
-Copyright (C) 2008  Free Software Foundation, Inc.
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-    exit $?
-    ;;
-
-  --config)
-    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
-    # Now print the configurations for the tags.
-    for tagname in $taglist; do
-      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
-    done
-    exit $?
-    ;;
-
-  --debug)
-    $echo "$progname: enabling shell trace mode"
-    set -x
-    preserve_args="$preserve_args $arg"
-    ;;
-
-  --dry-run | -n)
-    run=:
-    ;;
-
-  --features)
-    $echo "host: $host"
+    write_libobj=${1}
     if test "$build_libtool_libs" = yes; then
-      $echo "enable shared libraries"
+      write_lobj=\'${2}\'
     else
-      $echo "disable shared libraries"
+      write_lobj=none
     fi
+
     if test "$build_old_libs" = yes; then
-      $echo "enable static libraries"
+      write_oldobj=\'${3}\'
     else
-      $echo "disable static libraries"
+      write_oldobj=none
     fi
-    exit $?
-    ;;
 
-  --finish) mode="finish" ;;
+    $opt_dry_run || {
+      cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
 
-  --mode) prevopt="--mode" prev=mode ;;
-  --mode=*) mode="$optarg" ;;
+# Name of the PIC object.
+pic_object=$write_lobj
 
-  --preserve-dup-deps) duplicate_deps="yes" ;;
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
 
-  --quiet | --silent)
-    show=:
-    preserve_args="$preserve_args $arg"
-    ;;
+EOF
+      $MV "${write_libobj}T" "${write_libobj}"
+    }
+}
 
-  --tag)
-    prevopt="--tag"
-    prev=tag
-    preserve_args="$preserve_args --tag"
-    ;;
-  --tag=*)
-    set tag "$optarg" ${1+"$@"}
-    shift
-    prev=tag
-    preserve_args="$preserve_args --tag"
-    ;;
 
-  -dlopen)
-    prevopt="-dlopen"
-    prev=execute_dlfiles
-    ;;
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
 
-  -*)
-    $echo "$modename: unrecognized option \`$arg'" 1>&2
-    $echo "$help" 1>&2
-    exit $EXIT_FAILURE
-    ;;
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name conversion functions when $build is *nix,
+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
+# correctly configured wine environment available, with the winepath program
+# in $build's $PATH.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+  $opt_debug
+  func_convert_core_file_wine_to_w32_result="$1"
+  if test -n "$1"; then
+    # Unfortunately, winepath does not exit with a non-zero error code, so we
+    # are forced to check the contents of stdout. On the other hand, if the
+    # command is not found, the shell will set an exit code of 127 and print
+    # *an error message* to stdout. So we must check for both error code of
+    # zero AND non-empty stdout, which explains the odd construction:
+    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
+    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
+      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
+        $SED -e "$lt_sed_naive_backslashify"`
+    else
+      func_convert_core_file_wine_to_w32_result=
+    fi
+  fi
+}
+# end: func_convert_core_file_wine_to_w32
 
-  *)
-    nonopt="$arg"
-    break
+
+# func_convert_core_path_wine_to_w32 ARG
+# Helper function used by path conversion functions when $build is *nix, and
+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
+# configured wine environment available, with the winepath program in $build's
+# $PATH. Assumes ARG has no leading or trailing path separator characters.
+#
+# ARG is path to be converted from $build format to win32.
+# Result is available in $func_convert_core_path_wine_to_w32_result.
+# Unconvertible file (directory) names in ARG are skipped; if no directory names
+# are convertible, then the result may be empty.
+func_convert_core_path_wine_to_w32 ()
+{
+  $opt_debug
+  # unfortunately, winepath doesn't convert paths, only file names
+  func_convert_core_path_wine_to_w32_result=""
+  if test -n "$1"; then
+    oldIFS=$IFS
+    IFS=:
+    for func_convert_core_path_wine_to_w32_f in $1; do
+      IFS=$oldIFS
+      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
+      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
+        if test -z "$func_convert_core_path_wine_to_w32_result"; then
+          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
+        else
+          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
+        fi
+      fi
+    done
+    IFS=$oldIFS
+  fi
+}
+# end: func_convert_core_path_wine_to_w32
+
+
+# func_cygpath ARGS...
+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
+# (2), returns the Cygwin file name or path in func_cygpath_result (input
+# file name or path is assumed to be in w32 format, as previously converted
+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
+# or path in func_cygpath_result (input file name or path is assumed to be in
+# Cygwin format). Returns an empty string on error.
+#
+# ARGS are passed to cygpath, with the last one being the file name or path to
+# be converted.
+#
+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
+# environment variable; do not put it in $PATH.
+func_cygpath ()
+{
+  $opt_debug
+  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
+    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
+    if test "$?" -ne 0; then
+      # on failure, ensure result is empty
+      func_cygpath_result=
+    fi
+  else
+    func_cygpath_result=
+    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
+  fi
+}
+#end: func_cygpath
+
+
+# func_convert_core_msys_to_w32 ARG
+# Convert file name or path ARG from MSYS format to w32 format.  Return
+# result in func_convert_core_msys_to_w32_result.
+func_convert_core_msys_to_w32 ()
+{
+  $opt_debug
+  # awkward: cmd appends spaces to result
+  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
+    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+}
+#end: func_convert_core_msys_to_w32
+
+
+# func_convert_file_check ARG1 ARG2
+# Verify that ARG1 (a file name in $build format) was converted to $host
+# format in ARG2. Otherwise, emit an error message, but continue (resetting
+# func_to_host_file_result to ARG1).
+func_convert_file_check ()
+{
+  $opt_debug
+  if test -z "$2" && test -n "$1" ; then
+    func_error "Could not determine host file name corresponding to"
+    func_error "  \`$1'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback:
+    func_to_host_file_result="$1"
+  fi
+}
+# end func_convert_file_check
+
+
+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
+# Verify that FROM_PATH (a path in $build format) was converted to $host
+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
+# func_to_host_file_result to a simplistic fallback value (see below).
+func_convert_path_check ()
+{
+  $opt_debug
+  if test -z "$4" && test -n "$3"; then
+    func_error "Could not determine the host path corresponding to"
+    func_error "  \`$3'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback.  This is a deliberately simplistic "conversion" and
+    # should not be "improved".  See libtool.info.
+    if test "x$1" != "x$2"; then
+      lt_replace_pathsep_chars="s|$1|$2|g"
+      func_to_host_path_result=`echo "$3" |
+        $SED -e "$lt_replace_pathsep_chars"`
+    else
+      func_to_host_path_result="$3"
+    fi
+  fi
+}
+# end func_convert_path_check
+
+
+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
+# and appending REPL if ORIG matches BACKPAT.
+func_convert_path_front_back_pathsep ()
+{
+  $opt_debug
+  case $4 in
+  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
     ;;
   esac
-done
+  case $4 in
+  $2 ) func_append func_to_host_path_result "$3"
+    ;;
+  esac
+}
+# end func_convert_path_front_back_pathsep
 
-if test -n "$prevopt"; then
-  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
-  $echo "$help" 1>&2
-  exit $EXIT_FAILURE
-fi
 
-case $disable_libs in
-no) 
-  ;;
-shared)
-  build_libtool_libs=no
-  build_old_libs=yes
-  ;;
-static)
-  build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
-  ;;
-esac
+##################################################
+# $build to $host FILE NAME CONVERSION FUNCTIONS #
+##################################################
+# invoked via `$to_host_file_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# Result will be available in $func_to_host_file_result.
 
-# If this variable is set in any of the actions, the command in it
-# will be execed at the end.  This prevents here-documents from being
-# left over by shells.
-exec_cmd=
 
-if test -z "$show_help"; then
+# func_to_host_file ARG
+# Converts the file name ARG from $build format to $host format. Return result
+# in func_to_host_file_result.
+func_to_host_file ()
+{
+  $opt_debug
+  $to_host_file_cmd "$1"
+}
+# end func_to_host_file
 
-  # Infer the operation mode.
-  if test -z "$mode"; then
-    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
-    $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
-    case $nonopt in
-    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
-      mode=link
-      for arg
-      do
-	case $arg in
-	-c)
-	   mode=compile
-	   break
-	   ;;
-	esac
-      done
-      ;;
-    *db | *dbx | *strace | *truss)
-      mode=execute
-      ;;
-    *install*|cp|mv)
-      mode=install
-      ;;
-    *rm)
-      mode=uninstall
+
+# func_to_tool_file ARG LAZY
+# converts the file name ARG from $build format to toolchain format. Return
+# result in func_to_tool_file_result.  If the conversion in use is listed
+# in (the comma separated) LAZY, no conversion takes place.
+func_to_tool_file ()
+{
+  $opt_debug
+  case ,$2, in
+    *,"$to_tool_file_cmd",*)
+      func_to_tool_file_result=$1
       ;;
     *)
-      # If we have no mode, but dlfiles were specified, then do execute mode.
-      test -n "$execute_dlfiles" && mode=execute
-
-      # Just use the default operation mode.
-      if test -z "$mode"; then
-	if test -n "$nonopt"; then
-	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
-	else
-	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
-	fi
-      fi
+      $to_tool_file_cmd "$1"
+      func_to_tool_file_result=$func_to_host_file_result
       ;;
-    esac
+  esac
+}
+# end func_to_tool_file
+
+
+# func_convert_file_noop ARG
+# Copy ARG to func_to_host_file_result.
+func_convert_file_noop ()
+{
+  func_to_host_file_result="$1"
+}
+# end func_convert_file_noop
+
+
+# func_convert_file_msys_to_w32 ARG
+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_file_result.
+func_convert_file_msys_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
   fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_w32
 
-  # Only execute mode is allowed to have -dlopen flags.
-  if test -n "$execute_dlfiles" && test "$mode" != execute; then
-    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
-    $echo "$help" 1>&2
-    exit $EXIT_FAILURE
+
+# func_convert_file_cygwin_to_w32 ARG
+# Convert file name ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_file_cygwin_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
+    # LT_CYGPATH in this case.
+    func_to_host_file_result=`cygpath -m "$1"`
   fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_cygwin_to_w32
 
-  # Change the help message to a mode-specific one.
-  generic_help="$help"
-  help="Try \`$modename --help --mode=$mode' for more information."
 
-  # These modes are in order of execution frequency so that they run quickly.
-  case $mode in
-  # libtool compile mode
-  compile)
-    modename="$modename: compile"
+# func_convert_file_nix_to_w32 ARG
+# Convert file name ARG from *nix to w32 format.  Requires a wine environment
+# and a working winepath. Returns result in func_to_host_file_result.
+func_convert_file_nix_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_file_wine_to_w32 "$1"
+    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_w32
+
+
+# func_convert_file_msys_to_cygwin ARG
+# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_file_msys_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_msys_to_w32_result"
+    func_to_host_file_result="$func_cygpath_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_msys_to_cygwin
+
+
+# func_convert_file_nix_to_cygwin ARG
+# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
+# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
+# in func_to_host_file_result.
+func_convert_file_nix_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
+    func_convert_core_file_wine_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
+    func_to_host_file_result="$func_cygpath_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_cygwin
+
+
+#############################################
+# $build to $host PATH CONVERSION FUNCTIONS #
+#############################################
+# invoked via `$to_host_path_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# The result will be available in $func_to_host_path_result.
+#
+# Path separators are also converted from $build format to $host format.  If
+# ARG begins or ends with a path separator character, it is preserved (but
+# converted to $host format) on output.
+#
+# All path conversion functions are named using the following convention:
+#   file name conversion function    : func_convert_file_X_to_Y ()
+#   path conversion function         : func_convert_path_X_to_Y ()
+# where, for any given $build/$host combination the 'X_to_Y' value is the
+# same.  If conversion functions are added for new $build/$host combinations,
+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
+# will break.
+
+
+# func_init_to_host_path_cmd
+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
+# appropriate value, based on the value of $to_host_file_cmd.
+to_host_path_cmd=
+func_init_to_host_path_cmd ()
+{
+  $opt_debug
+  if test -z "$to_host_path_cmd"; then
+    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
+    to_host_path_cmd="func_convert_path_${func_stripname_result}"
+  fi
+}
+
+
+# func_to_host_path ARG
+# Converts the path ARG from $build format to $host format. Return result
+# in func_to_host_path_result.
+func_to_host_path ()
+{
+  $opt_debug
+  func_init_to_host_path_cmd
+  $to_host_path_cmd "$1"
+}
+# end func_to_host_path
+
+
+# func_convert_path_noop ARG
+# Copy ARG to func_to_host_path_result.
+func_convert_path_noop ()
+{
+  func_to_host_path_result="$1"
+}
+# end func_convert_path_noop
+
+
+# func_convert_path_msys_to_w32 ARG
+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_path_result.
+func_convert_path_msys_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from ARG.  MSYS
+    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
+    # and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_msys_to_w32
+
+
+# func_convert_path_cygwin_to_w32 ARG
+# Convert path ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_path_cygwin_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_cygwin_to_w32
+
+
+# func_convert_path_nix_to_w32 ARG
+# Convert path ARG from *nix to w32 format.  Requires a wine environment and
+# a working winepath.  Returns result in func_to_host_file_result.
+func_convert_path_nix_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_nix_to_w32
+
+
+# func_convert_path_msys_to_cygwin ARG
+# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_path_msys_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
+    func_to_host_path_result="$func_cygpath_result"
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_msys_to_cygwin
+
+
+# func_convert_path_nix_to_cygwin ARG
+# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
+# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
+# func_to_host_file_result.
+func_convert_path_nix_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from
+    # ARG. msys behavior is inconsistent here, cygpath turns them
+    # into '.;' and ';.', and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
+    func_to_host_path_result="$func_cygpath_result"
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_nix_to_cygwin
+
+
+# func_mode_compile arg...
+func_mode_compile ()
+{
+    $opt_debug
     # Get the compilation command and the source file.
     base_compile=
     srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
@@ -664,6 +1957,7 @@
     arg_mode=normal
     libobj=
     later=
+    pie_flag=
 
     for arg
     do
@@ -684,16 +1978,19 @@
 	# Accept any command-line options.
 	case $arg in
 	-o)
-	  if test -n "$libobj" ; then
-	    $echo "$modename: you cannot specify \`-o' more than once" 1>&2
-	    exit $EXIT_FAILURE
-	  fi
+	  test -n "$libobj" && \
+	    func_fatal_error "you cannot specify \`-o' more than once"
 	  arg_mode=target
 	  continue
 	  ;;
 
-	-static | -prefer-pic | -prefer-non-pic)
-	  later="$later $arg"
+	-pie | -fpie | -fPIE)
+          func_append pie_flag " $arg"
+	  continue
+	  ;;
+
+	-shared | -static | -prefer-pic | -prefer-non-pic)
+	  func_append later " $arg"
 	  continue
 	  ;;
 
@@ -708,31 +2005,24 @@
 	  ;;            #  replaced later.  I would guess that would be a bug.
 
 	-Wc,*)
-	  args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+	  func_stripname '-Wc,' '' "$arg"
+	  args=$func_stripname_result
 	  lastarg=
 	  save_ifs="$IFS"; IFS=','
- 	  for arg in $args; do
+	  for arg in $args; do
 	    IFS="$save_ifs"
-
-	    # Double-quote args containing other shell metacharacters.
-	    # Many Bourne shells cannot handle close brackets correctly
-	    # in scan sets, so we specify it separately.
-	    case $arg in
-	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-	      arg="\"$arg\""
-	      ;;
-	    esac
-	    lastarg="$lastarg $arg"
+	    func_append_quoted lastarg "$arg"
 	  done
 	  IFS="$save_ifs"
-	  lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+	  func_stripname ' ' '' "$lastarg"
+	  lastarg=$func_stripname_result
 
 	  # Add the arguments to base_compile.
-	  base_compile="$base_compile $lastarg"
+	  func_append base_compile " $lastarg"
 	  continue
 	  ;;
 
-	* )
+	*)
 	  # Accept the current argument as the source file.
 	  # The previous "srcfile" becomes the current argument.
 	  #
@@ -744,66 +2034,41 @@
       esac    #  case $arg_mode
 
       # Aesthetically quote the previous argument.
-      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
-
-      case $lastarg in
-      # Double-quote args containing other shell metacharacters.
-      # Many Bourne shells cannot handle close brackets correctly
-      # in scan sets, and some SunOS ksh mistreat backslash-escaping
-      # in scan sets (worked around with variable expansion),
-      # and furthermore cannot handle '|' '&' '(' ')' in scan sets 
-      # at all, so we specify them separately.
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-	lastarg="\"$lastarg\""
-	;;
-      esac
-
-      base_compile="$base_compile $lastarg"
+      func_append_quoted base_compile "$lastarg"
     done # for arg
 
     case $arg_mode in
     arg)
-      $echo "$modename: you must specify an argument for -Xcompile"
-      exit $EXIT_FAILURE
+      func_fatal_error "you must specify an argument for -Xcompile"
       ;;
     target)
-      $echo "$modename: you must specify a target with \`-o'" 1>&2
-      exit $EXIT_FAILURE
+      func_fatal_error "you must specify a target with \`-o'"
       ;;
     *)
       # Get the name of the library object.
-      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      test -z "$libobj" && {
+	func_basename "$srcfile"
+	libobj="$func_basename_result"
+      }
       ;;
     esac
 
     # Recognize several different file suffixes.
     # If the user specifies -o file.o, it is replaced with file.lo
-    xform='[cCFSifmso]'
     case $libobj in
-    *.ada) xform=ada ;;
-    *.adb) xform=adb ;;
-    *.ads) xform=ads ;;
-    *.asm) xform=asm ;;
-    *.c++) xform=c++ ;;
-    *.cc) xform=cc ;;
-    *.ii) xform=ii ;;
-    *.class) xform=class ;;
-    *.cpp) xform=cpp ;;
-    *.cxx) xform=cxx ;;
-    *.[fF][09]?) xform=[fF][09]. ;;
-    *.for) xform=for ;;
-    *.java) xform=java ;;
-    *.obj) xform=obj ;;
-    *.sx) xform=sx ;;
+    *.[cCFSifmso] | \
+    *.ada | *.adb | *.ads | *.asm | \
+    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
+      func_xform "$libobj"
+      libobj=$func_xform_result
+      ;;
     esac
 
-    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
-
     case $libobj in
-    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
     *)
-      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
-      exit $EXIT_FAILURE
+      func_fatal_error "cannot determine name of library object from \`$libobj'"
       ;;
     esac
 
@@ -811,7 +2076,15 @@
 
     for arg in $later; do
       case $arg in
+      -shared)
+	test "$build_libtool_libs" != yes && \
+	  func_fatal_configuration "can not build a shared library"
+	build_old_libs=no
+	continue
+	;;
+
       -static)
+	build_libtool_libs=no
 	build_old_libs=yes
 	continue
 	;;
@@ -828,28 +2101,17 @@
       esac
     done
 
-    qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
-    case $qlibobj in
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-	qlibobj="\"$qlibobj\"" ;;
-    esac
-    test "X$libobj" != "X$qlibobj" \
-	&& $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' 	&()|`$[]' \
-	&& $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
-    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
-    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
-    if test "X$xdir" = "X$obj"; then
-      xdir=
-    else
-      xdir=$xdir/
-    fi
+    func_quote_for_eval "$libobj"
+    test "X$libobj" != "X$func_quote_for_eval_result" \
+      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
+      && func_warning "libobj name \`$libobj' may not contain shell special characters."
+    func_dirname_and_basename "$obj" "/" ""
+    objname="$func_basename_result"
+    xdir="$func_dirname_result"
     lobj=${xdir}$objdir/$objname
 
-    if test -z "$base_compile"; then
-      $echo "$modename: you must specify a compilation command" 1>&2
-      $echo "$help" 1>&2
-      exit $EXIT_FAILURE
-    fi
+    test -z "$base_compile" && \
+      func_fatal_help "you must specify a compilation command"
 
     # Delete any leftover library objects.
     if test "$build_old_libs" = yes; then
@@ -858,12 +2120,9 @@
       removelist="$lobj $libobj ${libobj}T"
     fi
 
-    $run $rm $removelist
-    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
-
     # On Cygwin there's no "real" PIC flag so we must build both object types
     case $host_os in
-    cygwin* | mingw* | pw32* | os2*)
+    cygwin* | mingw* | pw32* | os2* | cegcc*)
       pic_mode=default
       ;;
     esac
@@ -875,10 +2134,8 @@
     # Calculate the filename of the output object if compiler does
     # not support -o with -c
     if test "$compiler_c_o" = no; then
-      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
       lockfile="$output_obj.lock"
-      removelist="$removelist $output_obj $lockfile"
-      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
     else
       output_obj=
       need_locks=no
@@ -888,13 +2145,13 @@
     # Lock this critical section if it is needed
     # We use this script file to make the link, it avoids creating a new file
     if test "$need_locks" = yes; then
-      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
-	$show "Waiting for $lockfile to be removed"
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+	func_echo "Waiting for $lockfile to be removed"
 	sleep 2
       done
     elif test "$need_locks" = warn; then
       if test -f "$lockfile"; then
-	$echo "\
+	$ECHO "\
 *** ERROR, $lockfile exists and contains:
 `cat $lockfile 2>/dev/null`
 
@@ -905,34 +2162,21 @@
 avoid parallel builds (make -j) in this platform, or get a better
 compiler."
 
-	$run $rm $removelist
+	$opt_dry_run || $RM $removelist
 	exit $EXIT_FAILURE
       fi
-      $echo "$srcfile" > "$lockfile"
+      func_append removelist " $output_obj"
+      $ECHO "$srcfile" > "$lockfile"
     fi
 
-    if test -n "$fix_srcfile_path"; then
-      eval srcfile=\"$fix_srcfile_path\"
-    fi
-    qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
-    case $qsrcfile in
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-      qsrcfile="\"$qsrcfile\"" ;;
-    esac
+    $opt_dry_run || $RM $removelist
+    func_append removelist " $lockfile"
+    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
 
-    $run $rm "$libobj" "${libobj}T"
-
-    # Create a libtool object file (analogous to a ".la" file),
-    # but don't create it if we're doing a dry run.
-    test -z "$run" && cat > ${libobj}T <<EOF
-# $libobj - a libtool object file
-# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-EOF
+    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
+    srcfile=$func_to_tool_file_result
+    func_quote_for_eval "$srcfile"
+    qsrcfile=$func_quote_for_eval_result
 
     # Only build a PIC object if we are building libtool libraries.
     if test "$build_libtool_libs" = yes; then
@@ -946,32 +2190,19 @@
 	command="$base_compile $qsrcfile"
       fi
 
-      if test ! -d "${xdir}$objdir"; then
-	$show "$mkdir ${xdir}$objdir"
-	$run $mkdir ${xdir}$objdir
-	exit_status=$?
-	if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
-	  exit $exit_status
-	fi
-      fi
+      func_mkdir_p "$xdir$objdir"
 
       if test -z "$output_obj"; then
 	# Place PIC objects in $objdir
-	command="$command -o $lobj"
+	func_append command " -o $lobj"
       fi
 
-      $run $rm "$lobj" "$output_obj"
-
-      $show "$command"
-      if $run eval $lt_env "$command"; then :
-      else
-	test -n "$output_obj" && $run $rm $removelist
-	exit $EXIT_FAILURE
-      fi
+      func_show_eval_locale "$command"	\
+          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
 
       if test "$need_locks" = warn &&
 	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-	$echo "\
+	$ECHO "\
 *** ERROR, $lockfile contains:
 `cat $lockfile 2>/dev/null`
 
@@ -985,65 +2216,42 @@
 avoid parallel builds (make -j) in this platform, or get a better
 compiler."
 
-	$run $rm $removelist
+	$opt_dry_run || $RM $removelist
 	exit $EXIT_FAILURE
       fi
 
       # Just move the object if needed, then go on to compile the next one
       if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
-	$show "$mv $output_obj $lobj"
-	if $run $mv $output_obj $lobj; then :
-	else
-	  error=$?
-	  $run $rm $removelist
-	  exit $error
-	fi
+	func_show_eval '$MV "$output_obj" "$lobj"' \
+	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
       fi
 
-      # Append the name of the PIC object to the libtool object file.
-      test -z "$run" && cat >> ${libobj}T <<EOF
-pic_object='$objdir/$objname'
-
-EOF
-
       # Allow error messages only from the first compilation.
       if test "$suppress_opt" = yes; then
-        suppress_output=' >/dev/null 2>&1'
+	suppress_output=' >/dev/null 2>&1'
       fi
-    else
-      # No PIC object so indicate it doesn't exist in the libtool
-      # object file.
-      test -z "$run" && cat >> ${libobj}T <<EOF
-pic_object=none
-
-EOF
     fi
 
     # Only build a position-dependent object if we build old libraries.
     if test "$build_old_libs" = yes; then
       if test "$pic_mode" != yes; then
 	# Don't build PIC code
-	command="$base_compile $qsrcfile"
+	command="$base_compile $qsrcfile$pie_flag"
       else
 	command="$base_compile $qsrcfile $pic_flag"
       fi
       if test "$compiler_c_o" = yes; then
-	command="$command -o $obj"
+	func_append command " -o $obj"
       fi
 
       # Suppress compiler output if we already did a PIC compilation.
-      command="$command$suppress_output"
-      $run $rm "$obj" "$output_obj"
-      $show "$command"
-      if $run eval $lt_env "$command"; then :
-      else
-	$run $rm $removelist
-	exit $EXIT_FAILURE
-      fi
+      func_append command "$suppress_output"
+      func_show_eval_locale "$command" \
+        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
 
       if test "$need_locks" = warn &&
 	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
-	$echo "\
+	$ECHO "\
 *** ERROR, $lockfile contains:
 `cat $lockfile 2>/dev/null`
 
@@ -1057,53 +2265,2824 @@
 avoid parallel builds (make -j) in this platform, or get a better
 compiler."
 
-	$run $rm $removelist
+	$opt_dry_run || $RM $removelist
 	exit $EXIT_FAILURE
       fi
 
       # Just move the object if needed
       if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
-	$show "$mv $output_obj $obj"
-	if $run $mv $output_obj $obj; then :
-	else
-	  error=$?
-	  $run $rm $removelist
-	  exit $error
-	fi
+	func_show_eval '$MV "$output_obj" "$obj"' \
+	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
       fi
-
-      # Append the name of the non-PIC object the libtool object file.
-      # Only append if the libtool object file exists.
-      test -z "$run" && cat >> ${libobj}T <<EOF
-# Name of the non-PIC object.
-non_pic_object='$objname'
-
-EOF
-    else
-      # Append the name of the non-PIC object the libtool object file.
-      # Only append if the libtool object file exists.
-      test -z "$run" && cat >> ${libobj}T <<EOF
-# Name of the non-PIC object.
-non_pic_object=none
-
-EOF
     fi
 
-    $run $mv "${libobj}T" "${libobj}"
+    $opt_dry_run || {
+      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
 
-    # Unlock the critical section if it was locked
-    if test "$need_locks" != no; then
-      $run $rm "$lockfile"
-    fi
+      # Unlock the critical section if it was locked
+      if test "$need_locks" != no; then
+	removelist=$lockfile
+        $RM "$lockfile"
+      fi
+    }
 
     exit $EXIT_SUCCESS
+}
+
+$opt_help || {
+  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
+}
+
+func_mode_help ()
+{
+    # We need to display help for each of the modes.
+    case $opt_mode in
+      "")
+        # Generic help is extracted from the usage comments
+        # at the start of this file.
+        func_help
+        ;;
+
+      clean)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      compile)
+      $ECHO \
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -no-suppress      do not suppress compiler output for multiple passes
+  -prefer-pic       try to build PIC objects only
+  -prefer-non-pic   try to build non-PIC objects only
+  -shared           do not build a \`.o' file suitable for static linking
+  -static           only build a \`.o' file suitable for static linking
+  -Wc,FLAG          pass FLAG directly to the compiler
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+        ;;
+
+      execute)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+        ;;
+
+      finish)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+        ;;
+
+      install)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The following components of INSTALL-COMMAND are treated specially:
+
+  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+        ;;
+
+      link)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -bindir BINDIR    specify path to binaries directory (for systems where
+                    libraries must be found in the PATH setting at runtime)
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+                    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+                    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -shared           only do dynamic linking of libtool libraries
+  -shrext SUFFIX    override the standard shared library file extension
+  -static           do not do any dynamic linking of uninstalled libtool libraries
+  -static-libtool-libs
+                    do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+                    specify library version info [each variable defaults to 0]
+  -weak LIBNAME     declare that the target provides the LIBNAME interface
+  -Wc,FLAG
+  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
+  -Wl,FLAG
+  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
+  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+        ;;
+
+      uninstall)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      *)
+        func_fatal_help "invalid operation mode \`$opt_mode'"
+        ;;
+    esac
+
+    echo
+    $ECHO "Try \`$progname --help' for more information about other modes."
+}
+
+# Now that we've collected a possible --mode arg, show help if necessary
+if $opt_help; then
+  if test "$opt_help" = :; then
+    func_mode_help
+  else
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+	func_mode_help
+      done
+    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+	echo
+	func_mode_help
+      done
+    } |
+    sed '1d
+      /^When reporting/,/^Report/{
+	H
+	d
+      }
+      $x
+      /information about other modes/d
+      /more detailed .*MODE/d
+      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
+  fi
+  exit $?
+fi
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+    $opt_debug
+    # The first argument is the command name.
+    cmd="$nonopt"
+    test -z "$cmd" && \
+      func_fatal_help "you must specify a COMMAND"
+
+    # Handle -dlopen flags immediately.
+    for file in $opt_dlopen; do
+      test -f "$file" \
+	|| func_fatal_help "\`$file' is not a file"
+
+      dir=
+      case $file in
+      *.la)
+	func_resolve_sysroot "$file"
+	file=$func_resolve_sysroot_result
+
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$file" \
+	  || func_fatal_help "\`$lib' is not a valid libtool archive"
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+	func_source "$file"
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && \
+	    func_warning "\`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	func_dirname "$file" "" "."
+	dir="$func_dirname_result"
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  func_append dir "/$objdir"
+	else
+	  if test ! -f "$dir/$dlname"; then
+	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+	  fi
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	func_dirname "$file" "" "."
+	dir="$func_dirname_result"
+	;;
+
+      *)
+	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -* | *.la | *.lo ) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if func_ltwrapper_script_p "$file"; then
+	  func_source "$file"
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	elif func_ltwrapper_executable_p "$file"; then
+	  func_ltwrapper_scriptname "$file"
+	  func_source "$func_ltwrapper_scriptname_result"
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      func_append_quoted args "$file"
+    done
+
+    if test "X$opt_dry_run" = Xfalse; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+      do
+	eval "if test \"\${save_$lt_var+set}\" = set; then
+                $lt_var=\$save_$lt_var; export $lt_var
+	      else
+		$lt_unset $lt_var
+	      fi"
+      done
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
+	echo "export $shlibpath_var"
+      fi
+      $ECHO "$cmd$args"
+      exit $EXIT_SUCCESS
+    fi
+}
+
+test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
+
+
+# func_mode_finish arg...
+func_mode_finish ()
+{
+    $opt_debug
+    libs=
+    libdirs=
+    admincmds=
+
+    for opt in "$nonopt" ${1+"$@"}
+    do
+      if test -d "$opt"; then
+	func_append libdirs " $opt"
+
+      elif test -f "$opt"; then
+	if func_lalib_unsafe_p "$opt"; then
+	  func_append libs " $opt"
+	else
+	  func_warning "\`$opt' is not a valid libtool archive"
+	fi
+
+      else
+	func_fatal_error "invalid argument \`$opt'"
+      fi
+    done
+
+    if test -n "$libs"; then
+      if test -n "$lt_sysroot"; then
+        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
+        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
+      else
+        sysroot_cmd=
+      fi
+
+      # Remove sysroot references
+      if $opt_dry_run; then
+        for lib in $libs; do
+          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
+        done
+      else
+        tmpdir=`func_mktempdir`
+        for lib in $libs; do
+	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+	    > $tmpdir/tmp-la
+	  mv -f $tmpdir/tmp-la $lib
+	done
+        ${RM}r "$tmpdir"
+      fi
+    fi
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
+'"$cmd"'"'
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $opt_dry_run || eval "$cmds" || func_append admincmds "
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    $opt_silent && exit $EXIT_SUCCESS
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      echo "----------------------------------------------------------------------"
+      echo "Libraries have been installed in:"
+      for libdir in $libdirs; do
+	$ECHO "   $libdir"
+      done
+      echo
+      echo "If you ever happen to want to link against installed libraries"
+      echo "in a given directory, LIBDIR, you must either use libtool, and"
+      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+      echo "flag during linking and do at least one of the following:"
+      if test -n "$shlibpath_var"; then
+	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+	echo "     during execution"
+      fi
+      if test -n "$runpath_var"; then
+	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+	echo "     during linking"
+      fi
+      if test -n "$hardcode_libdir_flag_spec"; then
+	libdir=LIBDIR
+	eval flag=\"$hardcode_libdir_flag_spec\"
+
+	$ECHO "   - use the \`$flag' linker flag"
+      fi
+      if test -n "$admincmds"; then
+	$ECHO "   - have your system administrator run these commands:$admincmds"
+      fi
+      if test -f /etc/ld.so.conf; then
+	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+      fi
+      echo
+
+      echo "See any operating system documentation about shared libraries for"
+      case $host in
+	solaris2.[6789]|solaris2.1[0-9])
+	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+	  echo "pages."
+	  ;;
+	*)
+	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
+	  ;;
+      esac
+      echo "----------------------------------------------------------------------"
+    fi
+    exit $EXIT_SUCCESS
+}
+
+test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
+
+
+# func_mode_install arg...
+func_mode_install ()
+{
+    $opt_debug
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       case $nonopt in *shtool*) :;; *) false;; esac; then
+      # Aesthetically quote it.
+      func_quote_for_eval "$nonopt"
+      install_prog="$func_quote_for_eval_result "
+      arg=$1
+      shift
+    else
+      install_prog=
+      arg=$nonopt
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    func_quote_for_eval "$arg"
+    func_append install_prog "$func_quote_for_eval_result"
+    install_shared_prog=$install_prog
+    case " $install_prog " in
+      *[\\\ /]cp\ *) install_cp=: ;;
+      *) install_cp=false ;;
+    esac
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    no_mode=:
+    for arg
+    do
+      arg2=
+      if test -n "$dest"; then
+	func_append files " $dest"
+	dest=$arg
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f)
+	if $install_cp; then :; else
+	  prev=$arg
+	fi
+	;;
+      -g | -m | -o)
+	prev=$arg
+	;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*)
+	;;
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
+	    arg2=$install_override_mode
+	    no_mode=false
+	  fi
+	  prev=
+	else
+	  dest=$arg
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      func_quote_for_eval "$arg"
+      func_append install_prog " $func_quote_for_eval_result"
+      if test -n "$arg2"; then
+	func_quote_for_eval "$arg2"
+      fi
+      func_append install_shared_prog " $func_quote_for_eval_result"
+    done
+
+    test -z "$install_prog" && \
+      func_fatal_help "you must specify an install program"
+
+    test -n "$prev" && \
+      func_fatal_help "the \`$prev' option requires an argument"
+
+    if test -n "$install_override_mode" && $no_mode; then
+      if $install_cp; then :; else
+	func_quote_for_eval "$install_override_mode"
+	func_append install_shared_prog " -m $func_quote_for_eval_result"
+      fi
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	func_fatal_help "no file or destination specified"
+      else
+	func_fatal_help "you must specify a destination"
+      fi
+    fi
+
+    # Strip any trailing slash from the destination.
+    func_stripname '' '/' "$dest"
+    dest=$func_stripname_result
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      func_dirname_and_basename "$dest" "" "."
+      destdir="$func_dirname_result"
+      destname="$func_basename_result"
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files; shift
+      test "$#" -gt 1 && \
+	func_fatal_help "\`$dest' is not a directory"
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  func_fatal_help "\`$destdir' must be an absolute directory name"
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	func_append staticlibs " $file"
+	;;
+
+      *.la)
+	func_resolve_sysroot "$file"
+	file=$func_resolve_sysroot_result
+
+	# Check to see that this really is a libtool archive.
+	func_lalib_unsafe_p "$file" \
+	  || func_fatal_help "\`$file' is not a valid libtool archive"
+
+	library_names=
+	old_library=
+	relink_command=
+	func_source "$file"
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) func_append current_libdirs " $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) func_append future_libdirs " $libdir" ;;
+	  esac
+	fi
+
+	func_dirname "$file" "/" ""
+	dir="$func_dirname_result"
+	func_append dir "$objdir"
+
+	if test -n "$relink_command"; then
+	  # Determine the prefix the user has applied to our future dir.
+	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
+
+	  # Don't allow the user to place us outside of our expected
+	  # location b/c this prevents finding dependent libraries that
+	  # are installed to the same prefix.
+	  # At present, this check doesn't affect windows .dll's that
+	  # are installed into $libdir/../bin (currently, that works fine)
+	  # but it's something to keep an eye on.
+	  test "$inst_prefix_dir" = "$destdir" && \
+	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
+
+	  if test -n "$inst_prefix_dir"; then
+	    # Stick the inst_prefix_dir data into the link command.
+	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	  else
+	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+	  fi
+
+	  func_warning "relinking \`$file'"
+	  func_show_eval "$relink_command" \
+	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names; shift
+	if test -n "$1"; then
+	  realname="$1"
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
+	      'exit $?'
+	  tstripme="$stripme"
+	  case $host_os in
+	  cygwin* | mingw* | pw32* | cegcc*)
+	    case $realname in
+	    *.dll.a)
+	      tstripme=""
+	      ;;
+	    esac
+	    ;;
+	  esac
+	  if test -n "$tstripme" && test -n "$striplib"; then
+	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
+	  fi
+
+	  if test "$#" -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    # Try `ln -sf' first, because the `ln' binary might depend on
+	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
+	    # so we also need to try rm && ln -s.
+	    for linkname
+	    do
+	      test "$linkname" != "$realname" \
+		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  func_execute_cmds "$postinstall_cmds" 'exit $?'
+	fi
+
+	# Install the pseudo-library for information purposes.
+	func_basename "$file"
+	name="$func_basename_result"
+	instname="$dir/$name"i
+	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  func_basename "$file"
+	  destfile="$func_basename_result"
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  func_lo2o "$destfile"
+	  staticdest=$func_lo2o_result
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	test -n "$destfile" && \
+	  func_show_eval "$install_prog $file $destfile" 'exit $?'
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  func_lo2o "$file"
+	  staticobj=$func_lo2o_result
+	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
+	fi
+	exit $EXIT_SUCCESS
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  func_basename "$file"
+	  destfile="$func_basename_result"
+	  destfile="$destdir/$destfile"
+	fi
+
+	# If the file is missing, and there is a .exe on the end, strip it
+	# because it is most likely a libtool script we actually want to
+	# install
+	stripped_ext=""
+	case $file in
+	  *.exe)
+	    if test ! -f "$file"; then
+	      func_stripname '' '.exe' "$file"
+	      file=$func_stripname_result
+	      stripped_ext=".exe"
+	    fi
+	    ;;
+	esac
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin* | *mingw*)
+	    if func_ltwrapper_executable_p "$file"; then
+	      func_ltwrapper_scriptname "$file"
+	      wrapper=$func_ltwrapper_scriptname_result
+	    else
+	      func_stripname '' '.exe' "$file"
+	      wrapper=$func_stripname_result
+	    fi
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if func_ltwrapper_script_p "$wrapper"; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  func_source "$wrapper"
+
+	  # Check the variables that should have been set.
+	  test -z "$generated_by_libtool_version" && \
+	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      func_source "$lib"
+	    fi
+	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      func_warning "\`$lib' has not been installed in \`$libdir'"
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  func_source "$wrapper"
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    $opt_dry_run || {
+	      if test "$finalize" = yes; then
+	        tmpdir=`func_mktempdir`
+		func_basename "$file$stripped_ext"
+		file="$func_basename_result"
+	        outputname="$tmpdir/$file"
+	        # Replace the output file specification.
+	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
+
+	        $opt_silent || {
+	          func_quote_for_expand "$relink_command"
+		  eval "func_echo $func_quote_for_expand_result"
+	        }
+	        if eval "$relink_command"; then :
+	          else
+		  func_error "error: relink \`$file' with the above command before installing it"
+		  $opt_dry_run || ${RM}r "$tmpdir"
+		  continue
+	        fi
+	        file="$outputname"
+	      else
+	        func_warning "cannot relink \`$file'"
+	      fi
+	    }
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyway
+	case $install_prog,$host in
+	*/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    func_stripname '' '.exe' "$destfile"
+	    destfile=$func_stripname_result
+	    ;;
+	  esac
+	  ;;
+	esac
+	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
+	$opt_dry_run || if test -n "$outputname"; then
+	  ${RM}r "$tmpdir"
+	fi
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      func_basename "$file"
+      name="$func_basename_result"
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+	func_show_eval "$old_striplib $oldlib" 'exit $?'
+      fi
+
+      # Do each command in the postinstall commands.
+      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
+    done
+
+    test -n "$future_libdirs" && \
+      func_warning "remember to run \`$progname --finish$future_libdirs'"
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      $opt_dry_run && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+}
+
+test "$opt_mode" = install && func_mode_install ${1+"$@"}
+
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
+{
+    $opt_debug
+    my_outputname="$1"
+    my_originator="$2"
+    my_pic_p="${3-no}"
+    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+    my_dlsyms=
+
+    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+      if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	my_dlsyms="${my_outputname}S.c"
+      else
+	func_error "not configured to extract global symbols from dlpreopened files"
+      fi
+    fi
+
+    if test -n "$my_dlsyms"; then
+      case $my_dlsyms in
+      "") ;;
+      *.c)
+	# Discover the nlist of each of the dlfiles.
+	nlist="$output_objdir/${my_outputname}.nm"
+
+	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+
+	# Parse the name list into a source file.
+	func_verbose "creating $output_objdir/$my_dlsyms"
+
+	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#endif
+
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+/* External symbol declarations for the compiler. */\
+"
+
+	if test "$dlself" = yes; then
+	  func_verbose "generating symbol list for \`$output'"
+
+	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+	  # Add our own program objects to the symbol list.
+	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	  for progfile in $progfiles; do
+	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
+	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
+	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -n "$exclude_expsyms"; then
+	    $opt_dry_run || {
+	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	    }
+	  fi
+
+	  if test -n "$export_symbols_regex"; then
+	    $opt_dry_run || {
+	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	    }
+	  fi
+
+	  # Prepare the list of exported symbols
+	  if test -z "$export_symbols"; then
+	    export_symbols="$output_objdir/$outputname.exp"
+	    $opt_dry_run || {
+	      $RM $export_symbols
+	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	      case $host in
+	      *cygwin* | *mingw* | *cegcc* )
+                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+	        ;;
+	      esac
+	    }
+	  else
+	    $opt_dry_run || {
+	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+	      eval '$MV "$nlist"T "$nlist"'
+	      case $host in
+	        *cygwin* | *mingw* | *cegcc* )
+	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+	          ;;
+	      esac
+	    }
+	  fi
+	fi
+
+	for dlprefile in $dlprefiles; do
+	  func_verbose "extracting global C symbols from \`$dlprefile'"
+	  func_basename "$dlprefile"
+	  name="$func_basename_result"
+          case $host in
+	    *cygwin* | *mingw* | *cegcc* )
+	      # if an import library, we need to obtain dlname
+	      if func_win32_import_lib_p "$dlprefile"; then
+	        func_tr_sh "$dlprefile"
+	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
+	        dlprefile_dlbasename=""
+	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
+	          # Use subshell, to avoid clobbering current variable values
+	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
+	          if test -n "$dlprefile_dlname" ; then
+	            func_basename "$dlprefile_dlname"
+	            dlprefile_dlbasename="$func_basename_result"
+	          else
+	            # no lafile. user explicitly requested -dlpreopen <import library>.
+	            $sharedlib_from_linklib_cmd "$dlprefile"
+	            dlprefile_dlbasename=$sharedlib_from_linklib_result
+	          fi
+	        fi
+	        $opt_dry_run || {
+	          if test -n "$dlprefile_dlbasename" ; then
+	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
+	          else
+	            func_warning "Could not compute DLL name from $name"
+	            eval '$ECHO ": $name " >> "$nlist"'
+	          fi
+	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
+	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
+	        }
+	      else # not an import lib
+	        $opt_dry_run || {
+	          eval '$ECHO ": $name " >> "$nlist"'
+	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+	        }
+	      fi
+	    ;;
+	    *)
+	      $opt_dry_run || {
+	        eval '$ECHO ": $name " >> "$nlist"'
+	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+	      }
+	    ;;
+          esac
+	done
+
+	$opt_dry_run || {
+	  # Make sure we have at least an empty file.
+	  test -f "$nlist" || : > "$nlist"
+
+	  if test -n "$exclude_expsyms"; then
+	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	    $MV "$nlist"T "$nlist"
+	  fi
+
+	  # Try sorting and uniquifying the output.
+	  if $GREP -v "^: " < "$nlist" |
+	      if sort -k 3 </dev/null >/dev/null 2>&1; then
+		sort -k 3
+	      else
+		sort +2
+	      fi |
+	      uniq > "$nlist"S; then
+	    :
+	  else
+	    $GREP -v "^: " < "$nlist" > "$nlist"S
+	  fi
+
+	  if test -f "$nlist"S; then
+	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
+	  else
+	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
+	  fi
+
+	  echo >> "$output_objdir/$my_dlsyms" "\
+
+/* The mapping between symbol names and symbols.  */
+typedef struct {
+  const char *name;
+  void *address;
+} lt_dlsymlist;
+extern LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];
+LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{\
+  { \"$my_originator\", (void *) 0 },"
+
+	  case $need_lib_prefix in
+	  no)
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+	    ;;
+	  *)
+	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+	    ;;
+	  esac
+	  echo >> "$output_objdir/$my_dlsyms" "\
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	} # !$opt_dry_run
+
+	pic_flag_for_symtable=
+	case "$compile_command " in
+	*" -static "*) ;;
+	*)
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+	  *-*-hpux*)
+	    pic_flag_for_symtable=" $pic_flag"  ;;
+	  *)
+	    if test "X$my_pic_p" != Xno; then
+	      pic_flag_for_symtable=" $pic_flag"
+	    fi
+	    ;;
+	  esac
+	  ;;
+	esac
+	symtab_cflags=
+	for arg in $LTCFLAGS; do
+	  case $arg in
+	  -pie | -fpie | -fPIE) ;;
+	  *) func_append symtab_cflags " $arg" ;;
+	  esac
+	done
+
+	# Now compile the dynamic symbol file.
+	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+	# Clean up the generated files.
+	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+
+	# Transform the symbol file into the correct name.
+	symfileobj="$output_objdir/${my_outputname}S.$objext"
+	case $host in
+	*cygwin* | *mingw* | *cegcc* )
+	  if test -f "$output_objdir/$my_outputname.def"; then
+	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+	  else
+	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  fi
+	  ;;
+	*)
+	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+	  ;;
+	esac
+	;;
+      *)
+	func_fatal_error "unknown suffix for \`$my_dlsyms'"
+	;;
+      esac
+    else
+      # We keep going just in case the user didn't refer to
+      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+      # really was required.
+
+      # Nullify the symbol file.
+      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
+      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
+    fi
+}
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+# Despite the name, also deal with 64 bit binaries.
+func_win32_libid ()
+{
+  $opt_debug
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
+      func_to_tool_file "$1" func_convert_file_msys_to_w32
+      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+	$SED -n -e '
+	    1,100{
+		/ I /{
+		    s,.*,import,
+		    p
+		    q
+		}
+	    }'`
+      case $win32_nmres in
+      import*)  win32_libid_type="x86 archive import";;
+      *)        win32_libid_type="x86 archive static";;
+      esac
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $ECHO "$win32_libid_type"
+}
+
+# func_cygming_dll_for_implib ARG
+#
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib ()
+{
+  $opt_debug
+  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
+}
+
+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
+#
+# The is the core of a fallback implementation of a
+# platform-specific function to extract the name of the
+# DLL associated with the specified import library LIBNAME.
+#
+# SECTION_NAME is either .idata$6 or .idata$7, depending
+# on the platform and compiler that created the implib.
+#
+# Echos the name of the DLL associated with the
+# specified import library.
+func_cygming_dll_for_implib_fallback_core ()
+{
+  $opt_debug
+  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
+  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
+    $SED '/^Contents of section '"$match_literal"':/{
+      # Place marker at beginning of archive member dllname section
+      s/.*/====MARK====/
+      p
+      d
+    }
+    # These lines can sometimes be longer than 43 characters, but
+    # are always uninteresting
+    /:[	 ]*file format pe[i]\{,1\}-/d
+    /^In archive [^:]*:/d
+    # Ensure marker is printed
+    /^====MARK====/p
+    # Remove all lines with less than 43 characters
+    /^.\{43\}/!d
+    # From remaining lines, remove first 43 characters
+    s/^.\{43\}//' |
+    $SED -n '
+      # Join marker and all lines until next marker into a single line
+      /^====MARK====/ b para
+      H
+      $ b para
+      b
+      :para
+      x
+      s/\n//g
+      # Remove the marker
+      s/^====MARK====//
+      # Remove trailing dots and whitespace
+      s/[\. \t]*$//
+      # Print
+      /./p' |
+    # we now have a list, one entry per line, of the stringified
+    # contents of the appropriate section of all members of the
+    # archive which possess that section. Heuristic: eliminate
+    # all those which have a first or second character that is
+    # a '.' (that is, objdump's representation of an unprintable
+    # character.) This should work for all archives with less than
+    # 0x302f exports -- but will fail for DLLs whose name actually
+    # begins with a literal '.' or a single character followed by
+    # a '.'.
+    #
+    # Of those that remain, print the first one.
+    $SED -e '/^\./d;/^.\./d;q'
+}
+
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+  $opt_debug
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+  test -n "$func_cygming_gnu_implib_tmp"
+}
+
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+  $opt_debug
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+  test -n "$func_cygming_ms_implib_tmp"
+}
+
+# func_cygming_dll_for_implib_fallback ARG
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+#
+# This fallback implementation is for use when $DLLTOOL
+# does not support the --identify-strict option.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib_fallback ()
+{
+  $opt_debug
+  if func_cygming_gnu_implib_p "$1" ; then
+    # binutils import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
+  elif func_cygming_ms_implib_p "$1" ; then
+    # ms-generated import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
+  else
+    # unknown
+    sharedlib_from_linklib_result=""
+  fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    $opt_debug
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+    if test "$lock_old_archive_extraction" = yes; then
+      lockfile=$f_ex_an_ar_oldlib.lock
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+	func_echo "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    fi
+    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
+		   'stat=$?; rm -f "$lockfile"; exit $stat'
+    if test "$lock_old_archive_extraction" = yes; then
+      $opt_dry_run || rm -f "$lockfile"
+    fi
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+    fi
+}
+
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    $opt_debug
+    my_gentop="$1"; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+	*) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      func_basename "$my_xlib"
+      my_xlib="$func_basename_result"
+      my_xlib_u=$my_xlib
+      while :; do
+        case " $extracted_archives " in
+	*" $my_xlib_u "*)
+	  func_arith $extracted_serial + 1
+	  extracted_serial=$func_arith_result
+	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
+	*) break ;;
+	esac
+      done
+      extracted_archives="$extracted_archives $my_xlib_u"
+      my_xdir="$my_gentop/$my_xlib_u"
+
+      func_mkdir_p "$my_xdir"
+
+      case $host in
+      *-darwin*)
+	func_verbose "Extracting $my_xabs"
+	# Do not bother doing anything if just a dry run
+	$opt_dry_run || {
+	  darwin_orig_dir=`pwd`
+	  cd $my_xdir || exit $?
+	  darwin_archive=$my_xabs
+	  darwin_curdir=`pwd`
+	  darwin_base_archive=`basename "$darwin_archive"`
+	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+	  if test -n "$darwin_arches"; then
+	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+	    darwin_arch=
+	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+	    for darwin_arch in  $darwin_arches ; do
+	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+	      cd "$darwin_curdir"
+	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+	    done # $darwin_arches
+            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
+	    darwin_file=
+	    darwin_files=
+	    for darwin_file in $darwin_filelist; do
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
+	      $LIPO -create -output "$darwin_file" $darwin_files
+	    done # $darwin_filelist
+	    $RM -rf unfat-$$
+	    cd "$darwin_orig_dir"
+	  else
+	    cd $darwin_orig_dir
+	    func_extract_an_archive "$my_xdir" "$my_xabs"
+	  fi # $darwin_arches
+	} # !$opt_dry_run
+	;;
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
+	;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
+    done
+
+    func_extract_archives_result="$my_oldobjs"
+}
+
+
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable.  Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take.  If 'yes', then the emitted script
+# will assume that the directory in which it is stored is
+# the $objdir directory.  This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+	func_emit_wrapper_arg1=${1-no}
+
+	$ECHO "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='$macro_version'
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$ECHO are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    file=\"\$0\""
+
+    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
+    $ECHO "\
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+    ECHO=\"$qECHO\"
+  fi
+
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ which is used only on
+# windows platforms, and (c) all begin with the string "--lt-"
+# (application programs are unlikely to have options which match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's $0 value, followed by "$@".
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=\$0
+  shift
+  for lt_opt
+  do
+    case \"\$lt_opt\" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
+        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
+        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
+        cat \"\$lt_dump_D/\$lt_dump_F\"
+        exit 0
+      ;;
+    --lt-*)
+        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
+        exit 1
+      ;;
+    esac
+  done
+
+  # Print the debug banner immediately:
+  if test -n \"\$lt_option_debug\"; then
+    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
+  fi
+}
+
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
+    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
+  done
+}
+
+# Core function for launching the target application
+func_exec_program_core ()
+{
+"
+  case $host in
+  # Backslashes separate directories on plain windows
+  *-*-mingw | *-*-os2* | *-cegcc*)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
     ;;
 
-  # libtool link mode
-  link | relink)
-    modename="$modename: link"
+  *)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+    ;;
+  esac
+  $ECHO "\
+      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+      exit 1
+}
+
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from \$@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  for lt_wr_arg
+  do
+    case \$lt_wr_arg in
+    --lt-*) ;;
+    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+    esac
+    shift
+  done
+  func_exec_program_core \${1+\"\$@\"}
+}
+
+  # Parse options
+  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
+  done
+
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
+  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+    # special case for '.'
+    if test \"\$thisdir\" = \".\"; then
+      thisdir=\`pwd\`
+    fi
+    # remove .libs from thisdir
+    case \"\$thisdir\" in
+    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
+    $objdir )   thisdir=. ;;
+    esac
+  fi
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  $ECHO "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" ||
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $MKDIR \"\$progdir\"
+    else
+      $RM \"\$progdir/\$file\"
+    fi"
+
+	  $ECHO "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	$ECHO \"\$relink_command_output\" >&2
+	$RM \"\$progdir/\$file\"
+	exit 1
+      fi
+    fi
+
+    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $RM \"\$progdir/\$program\";
+      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $RM \"\$progdir/\$file\"
+  fi"
+	else
+	  $ECHO "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	$ECHO "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# fixup the dll searchpath if we need to.
+	#
+	# Fix the DLL searchpath if we need to.  Do this before prepending
+	# to shlibpath, because on Windows, both are PATH and uninstalled
+	# libraries must come first.
+	if test -n "$dllsearchpath"; then
+	  $ECHO "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	# Export our shlibpath_var if we have one.
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $ECHO "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	$ECHO "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+      func_exec_program \${1+\"\$@\"}
+    fi
+  else
+    # The program doesn't exist.
+    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
+    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+}
+
+
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+	cat <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+*/
+EOF
+	    cat <<"EOF"
+#ifdef _MSC_VER
+# define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+#  include <io.h>
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+/* declarations of non-ANSI functions */
+#if defined(__MINGW32__)
+# ifdef __STRICT_ANSI__
+int _putenv (const char *);
+# endif
+#elif defined(__CYGWIN__)
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+/* #elif defined (other platforms) ... */
+#endif
+
+/* portability defines, excluding path handling macros */
+#if defined(_MSC_VER)
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+# define S_IXUSR _S_IEXEC
+# ifndef _INTPTR_T_DEFINED
+#  define _INTPTR_T_DEFINED
+#  define intptr_t int
+# endif
+#elif defined(__MINGW32__)
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+#elif defined(__CYGWIN__)
+# define HAVE_SETENV
+# define FOPEN_WB "wb"
+/* #elif defined (other platforms) ... */
+#endif
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
+
+/* path handling portability macros */
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# define FOPEN_WB "wb"
+# ifndef DIR_SEPARATOR_2
+#  define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+#  define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+#if defined(LT_DEBUGWRAPPER)
+static int lt_debug = 1;
+#else
+static int lt_debug = 0;
+#endif
+
+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_debugprintf (const char *file, int line, const char *fmt, ...);
+void lt_fatal (const char *file, int line, const char *message, ...);
+static const char *nonnull (const char *s);
+static const char *nonempty (const char *s);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+char **prepare_spawn (char **argv);
+void lt_dump_script (FILE *f);
+EOF
+
+	    cat <<EOF
+volatile const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+              func_to_host_path "$temp_rpath"
+	      cat <<EOF
+const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * LIB_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test -n "$dllsearchpath"; then
+              func_to_host_path "$dllsearchpath:"
+	      cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+	    else
+	      cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE   = "";
+EOF
+	    fi
+
+	    if test "$fast_install" = yes; then
+	      cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
+	    else
+	      cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
+	    fi
+
+
+	    cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX         "--lt-"
+
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
+static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int  newargc;
+  char *tmp_pathspec;
+  char *actual_cwrapper_path;
+  char *actual_cwrapper_name;
+  char *target_name;
+  char *lt_argv_zero;
+  intptr_t rval = 127;
+
+  int i;
+
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  newargz = XMALLOC (char *, argc + 1);
+
+  /* very simple arg parsing; don't want to rely on getopt
+   * also, copy all non cwrapper options to newargz, except
+   * argz[0], which is handled differently
+   */
+  newargc=0;
+  for (i = 1; i < argc; i++)
+    {
+      if (strcmp (argv[i], dumpscript_opt) == 0)
+	{
+EOF
+	    case "$host" in
+	      *mingw* | *cygwin* )
+		# make stdout use "unix" line endings
+		echo "          setmode(1,_O_BINARY);"
+		;;
+	      esac
+
+	    cat <<"EOF"
+	  lt_dump_script (stdout);
+	  return 0;
+	}
+      if (strcmp (argv[i], debug_opt) == 0)
+	{
+          lt_debug = 1;
+          continue;
+	}
+      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
+        {
+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+             namespace, but it is not one of the ones we know about and
+             have already dealt with, above (inluding dump-script), then
+             report an error. Otherwise, targets might begin to believe
+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+             namespace. The first time any user complains about this, we'll
+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+             or a configure.ac-settable value.
+           */
+          lt_fatal (__FILE__, __LINE__,
+		    "unrecognized %s option: '%s'",
+                    ltwrapper_option_prefix, argv[i]);
+        }
+      /* otherwise ... */
+      newargz[++newargc] = xstrdup (argv[i]);
+    }
+  newargz[++newargc] = NULL;
+
+EOF
+	    cat <<EOF
+  /* The GNU banner must be the first non-error debug message */
+  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
+EOF
+	    cat <<"EOF"
+  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
+  tmp_pathspec = find_executable (argv[0]);
+  if (tmp_pathspec == NULL)
+    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (before symlink chase) at: %s\n",
+		  tmp_pathspec);
+
+  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (after symlink chase) at: %s\n",
+		  actual_cwrapper_path);
+  XFREE (tmp_pathspec);
+
+  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
+  strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+  /* wrapper name transforms */
+  strendzap (actual_cwrapper_name, ".exe");
+  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+  XFREE (actual_cwrapper_name);
+  actual_cwrapper_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  /* target_name transforms -- use actual target program name; might have lt- prefix */
+  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+  strendzap (target_name, ".exe");
+  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+  XFREE (target_name);
+  target_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(main) libtool target name: %s\n",
+		  target_name);
+EOF
+
+	    cat <<EOF
+  newargz[0] =
+    XMALLOC (char, (strlen (actual_cwrapper_path) +
+		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+  strcpy (newargz[0], actual_cwrapper_path);
+  strcat (newargz[0], "$objdir");
+  strcat (newargz[0], "/");
+EOF
+
+	    cat <<"EOF"
+  /* stop here, and copy so we don't have to do this twice */
+  tmp_pathspec = xstrdup (newargz[0]);
+
+  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+  strcat (newargz[0], actual_cwrapper_name);
+
+  /* DO want the lt- prefix here if it exists, so use target_name */
+  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+  XFREE (tmp_pathspec);
+  tmp_pathspec = NULL;
+EOF
+
+	    case $host_os in
+	      mingw*)
+	    cat <<"EOF"
+  {
+    char* p;
+    while ((p = strchr (newargz[0], '\\')) != NULL)
+      {
+	*p = '/';
+      }
+    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+      {
+	*p = '/';
+      }
+  }
+EOF
+	    ;;
+	    esac
+
+	    cat <<"EOF"
+  XFREE (target_name);
+  XFREE (actual_cwrapper_path);
+  XFREE (actual_cwrapper_name);
+
+  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
+  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
+     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+     because on Windows, both *_VARNAMEs are PATH but uninstalled
+     libraries must come first. */
+  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+
+  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
+		  nonnull (lt_argv_zero));
+  for (i = 0; i < newargc; i++)
+    {
+      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
+		      i, nonnull (newargz[i]));
+    }
+
+EOF
+
+	    case $host_os in
+	      mingw*)
+		cat <<"EOF"
+  /* execv doesn't actually work on mingw as expected on unix */
+  newargz = prepare_spawn (newargz);
+  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  if (rval == -1)
+    {
+      /* failed to start process */
+      lt_debugprintf (__FILE__, __LINE__,
+		      "(main) failed to launch target \"%s\": %s\n",
+		      lt_argv_zero, nonnull (strerror (errno)));
+      return 127;
+    }
+  return rval;
+EOF
+		;;
+	      *)
+		cat <<"EOF"
+  execv (lt_argv_zero, newargz);
+  return rval; /* =127, but avoids unused variable warning */
+EOF
+		;;
+	    esac
+
+	    cat <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void *p = (void *) malloc (num);
+  if (!p)
+    lt_fatal (__FILE__, __LINE__, "memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+			  string) : NULL;
+}
+
+const char *
+base_name (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return base;
+}
+
+int
+check_executable (const char *path)
+{
+  struct stat st;
+
+  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
+
+  if ((stat (path, &st) >= 0)
+      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+    return 1;
+  else
+    return 0;
+}
+
+int
+make_executable (const char *path)
+{
+  int rval = 0;
+  struct stat st;
+
+  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
+
+  if (stat (path, &st) >= 0)
+    {
+      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+    }
+  return rval;
+}
+
+/* Searches for the full path of the wrapper.  Returns
+   newly allocated full path name if found, NULL otherwise
+   Does not chase symlinks, even on platforms that support them.
+*/
+char *
+find_executable (const char *wrapper)
+{
+  int has_slash = 0;
+  const char *p;
+  const char *p_next;
+  /* static buffer for getcwd */
+  char tmp[LT_PATHMAX + 1];
+  int tmp_len;
+  char *concat_name;
+
+  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
+                  nonempty (wrapper));
+
+  if ((wrapper == NULL) || (*wrapper == '\0'))
+    return NULL;
+
+  /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
+    {
+      concat_name = xstrdup (wrapper);
+      if (check_executable (concat_name))
+	return concat_name;
+      XFREE (concat_name);
+    }
+  else
+    {
+#endif
+      if (IS_DIR_SEPARATOR (wrapper[0]))
+	{
+	  concat_name = xstrdup (wrapper);
+	  if (check_executable (concat_name))
+	    return concat_name;
+	  XFREE (concat_name);
+	}
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+    }
+#endif
+
+  for (p = wrapper; *p; p++)
+    if (*p == '/')
+      {
+	has_slash = 1;
+	break;
+      }
+  if (!has_slash)
+    {
+      /* no slashes; search PATH */
+      const char *path = getenv ("PATH");
+      if (path != NULL)
+	{
+	  for (p = path; *p; p = p_next)
+	    {
+	      const char *q;
+	      size_t p_len;
+	      for (q = p; *q; q++)
+		if (IS_PATH_SEPARATOR (*q))
+		  break;
+	      p_len = q - p;
+	      p_next = (*q == '\0' ? q : q + 1);
+	      if (p_len == 0)
+		{
+		  /* empty path: current directory */
+		  if (getcwd (tmp, LT_PATHMAX) == NULL)
+		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+                              nonnull (strerror (errno)));
+		  tmp_len = strlen (tmp);
+		  concat_name =
+		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+		  memcpy (concat_name, tmp, tmp_len);
+		  concat_name[tmp_len] = '/';
+		  strcpy (concat_name + tmp_len + 1, wrapper);
+		}
+	      else
+		{
+		  concat_name =
+		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
+		  memcpy (concat_name, p, p_len);
+		  concat_name[p_len] = '/';
+		  strcpy (concat_name + p_len + 1, wrapper);
+		}
+	      if (check_executable (concat_name))
+		return concat_name;
+	      XFREE (concat_name);
+	    }
+	}
+      /* not found in PATH; assume curdir */
+    }
+  /* Relative path | not found in path: prepend cwd */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+              nonnull (strerror (errno)));
+  tmp_len = strlen (tmp);
+  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+  memcpy (concat_name, tmp, tmp_len);
+  concat_name[tmp_len] = '/';
+  strcpy (concat_name + tmp_len + 1, wrapper);
+
+  if (check_executable (concat_name))
+    return concat_name;
+  XFREE (concat_name);
+  return NULL;
+}
+
+char *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+  return xstrdup (pathspec);
+#else
+  char buf[LT_PATHMAX];
+  struct stat s;
+  char *tmp_pathspec = xstrdup (pathspec);
+  char *p;
+  int has_symlinks = 0;
+  while (strlen (tmp_pathspec) && !has_symlinks)
+    {
+      lt_debugprintf (__FILE__, __LINE__,
+		      "checking path component for symlinks: %s\n",
+		      tmp_pathspec);
+      if (lstat (tmp_pathspec, &s) == 0)
+	{
+	  if (S_ISLNK (s.st_mode) != 0)
+	    {
+	      has_symlinks = 1;
+	      break;
+	    }
+
+	  /* search backwards for last DIR_SEPARATOR */
+	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+	    p--;
+	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+	    {
+	      /* no more DIR_SEPARATORS left */
+	      break;
+	    }
+	  *p = '\0';
+	}
+      else
+	{
+	  lt_fatal (__FILE__, __LINE__,
+		    "error accessing file \"%s\": %s",
+		    tmp_pathspec, nonnull (strerror (errno)));
+	}
+    }
+  XFREE (tmp_pathspec);
+
+  if (!has_symlinks)
+    {
+      return xstrdup (pathspec);
+    }
+
+  tmp_pathspec = realpath (pathspec, buf);
+  if (tmp_pathspec == 0)
+    {
+      lt_fatal (__FILE__, __LINE__,
+		"could not follow symlinks for %s", pathspec);
+    }
+  return xstrdup (tmp_pathspec);
+#endif
+}
+
+char *
+strendzap (char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert (str != NULL);
+  assert (pat != NULL);
+
+  len = strlen (str);
+  patlen = strlen (pat);
+
+  if (patlen <= len)
+    {
+      str += len - patlen;
+      if (strcmp (str, pat) == 0)
+	*str = '\0';
+    }
+  return str;
+}
+
+void
+lt_debugprintf (const char *file, int line, const char *fmt, ...)
+{
+  va_list args;
+  if (lt_debug)
+    {
+      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
+      va_start (args, fmt);
+      (void) vfprintf (stderr, fmt, args);
+      va_end (args);
+    }
+}
+
+static void
+lt_error_core (int exit_status, const char *file,
+	       int line, const char *mode,
+	       const char *message, va_list ap)
+{
+  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *file, int line, const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
+  va_end (ap);
+}
+
+static const char *
+nonnull (const char *s)
+{
+  return s ? s : "(null)";
+}
+
+static const char *
+nonempty (const char *s)
+{
+  return (s && !*s) ? "(empty)" : nonnull (s);
+}
+
+void
+lt_setenv (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_setenv) setting '%s' to '%s'\n",
+                  nonnull (name), nonnull (value));
+  {
+#ifdef HAVE_SETENV
+    /* always make a copy, for consistency with !HAVE_SETENV */
+    char *str = xstrdup (value);
+    setenv (name, str, 1);
+#else
+    int len = strlen (name) + 1 + strlen (value) + 1;
+    char *str = XMALLOC (char, len);
+    sprintf (str, "%s=%s", name, value);
+    if (putenv (str) != EXIT_SUCCESS)
+      {
+        XFREE (str);
+      }
+#endif
+  }
+}
+
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+  char *new_value;
+  if (orig_value && *orig_value)
+    {
+      int orig_value_len = strlen (orig_value);
+      int add_len = strlen (add);
+      new_value = XMALLOC (char, add_len + orig_value_len + 1);
+      if (to_end)
+        {
+          strcpy (new_value, orig_value);
+          strcpy (new_value + orig_value_len, add);
+        }
+      else
+        {
+          strcpy (new_value, add);
+          strcpy (new_value + add_len, orig_value);
+        }
+    }
+  else
+    {
+      new_value = xstrdup (add);
+    }
+  return new_value;
+}
+
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      /* some systems can't cope with a ':'-terminated path #' */
+      int len = strlen (new_value);
+      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+        {
+          new_value[len-1] = '\0';
+        }
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
+
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
+
+EOF
+	    case $host_os in
+	      mingw*)
+		cat <<"EOF"
+
+/* Prepares an argument vector before calling spawn().
+   Note that spawn() does not by itself call the command interpreter
+     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
+      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+         GetVersionEx(&v);
+         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
+      }) ? "cmd.exe" : "command.com").
+   Instead it simply concatenates the arguments, separated by ' ', and calls
+   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
+   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
+   special way:
+   - Space and tab are interpreted as delimiters. They are not treated as
+     delimiters if they are surrounded by double quotes: "...".
+   - Unescaped double quotes are removed from the input. Their only effect is
+     that within double quotes, space and tab are treated like normal
+     characters.
+   - Backslashes not followed by double quotes are not special.
+   - But 2*n+1 backslashes followed by a double quote become
+     n backslashes followed by a double quote (n >= 0):
+       \" -> "
+       \\\" -> \"
+       \\\\\" -> \\"
+ */
+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+char **
+prepare_spawn (char **argv)
+{
+  size_t argc;
+  char **new_argv;
+  size_t i;
+
+  /* Count number of arguments.  */
+  for (argc = 0; argv[argc] != NULL; argc++)
+    ;
+
+  /* Allocate new argument vector.  */
+  new_argv = XMALLOC (char *, argc + 1);
+
+  /* Put quoted arguments into the new argument vector.  */
+  for (i = 0; i < argc; i++)
+    {
+      const char *string = argv[i];
+
+      if (string[0] == '\0')
+	new_argv[i] = xstrdup ("\"\"");
+      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
+	{
+	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
+	  size_t length;
+	  unsigned int backslashes;
+	  const char *s;
+	  char *quoted_string;
+	  char *p;
+
+	  length = 0;
+	  backslashes = 0;
+	  if (quote_around)
+	    length++;
+	  for (s = string; *s != '\0'; s++)
+	    {
+	      char c = *s;
+	      if (c == '"')
+		length += backslashes + 1;
+	      length++;
+	      if (c == '\\')
+		backslashes++;
+	      else
+		backslashes = 0;
+	    }
+	  if (quote_around)
+	    length += backslashes + 1;
+
+	  quoted_string = XMALLOC (char, length + 1);
+
+	  p = quoted_string;
+	  backslashes = 0;
+	  if (quote_around)
+	    *p++ = '"';
+	  for (s = string; *s != '\0'; s++)
+	    {
+	      char c = *s;
+	      if (c == '"')
+		{
+		  unsigned int j;
+		  for (j = backslashes + 1; j > 0; j--)
+		    *p++ = '\\';
+		}
+	      *p++ = c;
+	      if (c == '\\')
+		backslashes++;
+	      else
+		backslashes = 0;
+	    }
+	  if (quote_around)
+	    {
+	      unsigned int j;
+	      for (j = backslashes; j > 0; j--)
+		*p++ = '\\';
+	      *p++ = '"';
+	    }
+	  *p = '\0';
+
+	  new_argv[i] = quoted_string;
+	}
+      else
+	new_argv[i] = (char *) string;
+    }
+  new_argv[argc] = NULL;
+
+  return new_argv;
+}
+EOF
+		;;
+	    esac
+
+            cat <<"EOF"
+void lt_dump_script (FILE* f)
+{
+EOF
+	    func_emit_wrapper yes |
+              $SED -e 's/\([\\"]\)/\\\1/g' \
+	           -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
+
+            cat <<"EOF"
+}
+EOF
+}
+# end: func_emit_cwrapperexe_src
+
+# func_win32_import_lib_p ARG
+# True if ARG is an import lib, as indicated by $file_magic_cmd
+func_win32_import_lib_p ()
+{
+    $opt_debug
+    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+    *import*) : ;;
+    *) false ;;
+    esac
+}
+
+# func_mode_link arg...
+func_mode_link ()
+{
+    $opt_debug
     case $host in
-    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
       # It is impossible to link a dll without this setting, and
       # we shouldn't force the makefile maintainer to figure out
       # which system we are compiling for in order to pass an extra
@@ -1121,10 +5100,10 @@
       allow_undefined=yes
       ;;
     esac
-    libtool_args="$nonopt"
+    libtool_args=$nonopt
     base_compile="$nonopt $@"
-    compile_command="$nonopt"
-    finalize_command="$nonopt"
+    compile_command=$nonopt
+    finalize_command=$nonopt
 
     compile_rpath=
     finalize_rpath=
@@ -1139,8 +5118,10 @@
     dllsearchpath=
     lib_search_path=`pwd`
     inst_prefix_dir=
+    new_inherited_linker_flags=
 
     avoid_version=no
+    bindir=
     dlfiles=
     dlprefiles=
     dlself=no
@@ -1154,7 +5135,6 @@
     no_install=no
     objs=
     non_pic_objects=
-    notinst_path= # paths that contain not-installed libtool libraries
     precious_files_regex=
     prefer_static_libs=no
     preload=no
@@ -1168,19 +5148,25 @@
     thread_safe=no
     vinfo=
     vinfo_number=no
+    weak_libs=
     single_module="${wl}-single_module"
-
     func_infer_tag $base_compile
 
     # We need to know -static, to get the right output filenames.
     for arg
     do
       case $arg in
+      -shared)
+	test "$build_libtool_libs" != yes && \
+	  func_fatal_configuration "can not build a shared library"
+	build_old_libs=no
+	break
+	;;
       -all-static | -static | -static-libtool-libs)
 	case $arg in
 	-all-static)
 	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
-	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+	    func_warning "complete static linking is impossible in this configuration"
 	  fi
 	  if test -n "$link_static_flag"; then
 	    dlopen_self=$dlopen_self_static
@@ -1214,29 +5200,30 @@
     while test "$#" -gt 0; do
       arg="$1"
       shift
-      case $arg in
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
-	;;
-      *) qarg=$arg ;;
-      esac
-      libtool_args="$libtool_args $qarg"
+      func_quote_for_eval "$arg"
+      qarg=$func_quote_for_eval_unquoted_result
+      func_append libtool_args " $func_quote_for_eval_result"
 
       # If the previous option needs an argument, assign it.
       if test -n "$prev"; then
 	case $prev in
 	output)
-	  compile_command="$compile_command @OUTPUT@"
-	  finalize_command="$finalize_command @OUTPUT@"
+	  func_append compile_command " @OUTPUT@"
+	  func_append finalize_command " @OUTPUT@"
 	  ;;
 	esac
 
 	case $prev in
+	bindir)
+	  bindir="$arg"
+	  prev=
+	  continue
+	  ;;
 	dlfiles|dlprefiles)
 	  if test "$preload" = no; then
 	    # Add the symbol object into the linking commands.
-	    compile_command="$compile_command @SYMFILE@"
-	    finalize_command="$finalize_command @SYMFILE@"
+	    func_append compile_command " @SYMFILE@"
+	    func_append finalize_command " @SYMFILE@"
 	    preload=yes
 	  fi
 	  case $arg in
@@ -1263,9 +5250,9 @@
 	    ;;
 	  *)
 	    if test "$prev" = dlfiles; then
-	      dlfiles="$dlfiles $arg"
+	      func_append dlfiles " $arg"
 	    else
-	      dlprefiles="$dlprefiles $arg"
+	      func_append dlprefiles " $arg"
 	    fi
 	    prev=
 	    continue
@@ -1274,10 +5261,8 @@
 	  ;;
 	expsyms)
 	  export_symbols="$arg"
-	  if test ! -f "$arg"; then
-	    $echo "$modename: symbol file \`$arg' does not exist"
-	    exit $EXIT_FAILURE
-	  fi
+	  test -f "$arg" \
+	    || func_fatal_error "symbol file \`$arg' does not exist"
 	  prev=
 	  continue
 	  ;;
@@ -1286,11 +5271,120 @@
 	  prev=
 	  continue
 	  ;;
+	framework)
+	  case $host in
+	    *-*-darwin*)
+	      case "$deplibs " in
+		*" $qarg.ltframework "*) ;;
+		*) func_append deplibs " $qarg.ltframework" # this is fixed later
+		   ;;
+	      esac
+	      ;;
+	  esac
+	  prev=
+	  continue
+	  ;;
 	inst_prefix)
 	  inst_prefix_dir="$arg"
 	  prev=
 	  continue
 	  ;;
+	objectlist)
+	  if test -f "$arg"; then
+	    save_arg=$arg
+	    moreargs=
+	    for fil in `cat "$save_arg"`
+	    do
+#	      func_append moreargs " $fil"
+	      arg=$fil
+	      # A libtool-controlled object.
+
+	      # Check to see that this really is a libtool object.
+	      if func_lalib_unsafe_p "$arg"; then
+		pic_object=
+		non_pic_object=
+
+		# Read the .lo file
+		func_source "$arg"
+
+		if test -z "$pic_object" ||
+		   test -z "$non_pic_object" ||
+		   test "$pic_object" = none &&
+		   test "$non_pic_object" = none; then
+		  func_fatal_error "cannot find name of object for \`$arg'"
+		fi
+
+		# Extract subdirectory from the argument.
+		func_dirname "$arg" "/" ""
+		xdir="$func_dirname_result"
+
+		if test "$pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  pic_object="$xdir$pic_object"
+
+		  if test "$prev" = dlfiles; then
+		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		      func_append dlfiles " $pic_object"
+		      prev=
+		      continue
+		    else
+		      # If libtool objects are unsupported, then we need to preload.
+		      prev=dlprefiles
+		    fi
+		  fi
+
+		  # CHECK ME:  I think I busted this.  -Ossama
+		  if test "$prev" = dlprefiles; then
+		    # Preload the old-style object.
+		    func_append dlprefiles " $pic_object"
+		    prev=
+		  fi
+
+		  # A PIC object.
+		  func_append libobjs " $pic_object"
+		  arg="$pic_object"
+		fi
+
+		# Non-PIC object.
+		if test "$non_pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  non_pic_object="$xdir$non_pic_object"
+
+		  # A standard non-PIC object
+		  func_append non_pic_objects " $non_pic_object"
+		  if test -z "$pic_object" || test "$pic_object" = none ; then
+		    arg="$non_pic_object"
+		  fi
+		else
+		  # If the PIC object exists, use it instead.
+		  # $xdir was prepended to $pic_object above.
+		  non_pic_object="$pic_object"
+		  func_append non_pic_objects " $non_pic_object"
+		fi
+	      else
+		# Only an error if not doing a dry-run.
+		if $opt_dry_run; then
+		  # Extract subdirectory from the argument.
+		  func_dirname "$arg" "/" ""
+		  xdir="$func_dirname_result"
+
+		  func_lo2o "$arg"
+		  pic_object=$xdir$objdir/$func_lo2o_result
+		  non_pic_object=$xdir$func_lo2o_result
+		  func_append libobjs " $pic_object"
+		  func_append non_pic_objects " $non_pic_object"
+	        else
+		  func_fatal_error "\`$arg' is not a valid libtool object"
+		fi
+	      fi
+	    done
+	  else
+	    func_fatal_error "link input file \`$arg' does not exist"
+	  fi
+	  arg=$save_arg
+	  prev=
+	  continue
+	  ;;
 	precious_regex)
 	  precious_files_regex="$arg"
 	  prev=
@@ -1301,174 +5395,59 @@
 	  prev=
 	  continue
 	  ;;
-	objectlist)
-	  if test -f "$arg"; then
-	    save_arg=$arg
-	    moreargs=
-	    for fil in `cat $save_arg`
-	    do
-#	      moreargs="$moreargs $fil"
-	      arg=$fil
-	      # A libtool-controlled object.
-
-	      # Check to see that this really is a libtool object.
-	      if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-		pic_object=
-		non_pic_object=
-
-		# Read the .lo file
-		# If there is no directory component, then add one.
-		case $arg in
-		*/* | *\\*) . $arg ;;
-		*) . ./$arg ;;
-		esac
-
-		if test -z "$pic_object" || \
-		   test -z "$non_pic_object" ||
-		   test "$pic_object" = none && \
-		   test "$non_pic_object" = none; then
-		  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
-		  exit $EXIT_FAILURE
-		fi
-
-		# Extract subdirectory from the argument.
-		xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
-		if test "X$xdir" = "X$arg"; then
-		  xdir=
-		else
-		  xdir="$xdir/"
-		fi
-
-		if test "$pic_object" != none; then
-		  # Prepend the subdirectory the object is found in.
-		  pic_object="$xdir$pic_object"
-
-		  if test "$prev" = dlfiles; then
-		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		      dlfiles="$dlfiles $pic_object"
-		      prev=
-		      continue
-		    else
-		      # If libtool objects are unsupported, then we need to preload.
-		      prev=dlprefiles
-		    fi
-		  fi
-
-		  # CHECK ME:  I think I busted this.  -Ossama
-		  if test "$prev" = dlprefiles; then
-		    # Preload the old-style object.
-		    dlprefiles="$dlprefiles $pic_object"
-		    prev=
-		  fi
-
-		  # A PIC object.
-		  libobjs="$libobjs $pic_object"
-		  arg="$pic_object"
-		fi
-
-		# Non-PIC object.
-		if test "$non_pic_object" != none; then
-		  # Prepend the subdirectory the object is found in.
-		  non_pic_object="$xdir$non_pic_object"
-
-		  # A standard non-PIC object
-		  non_pic_objects="$non_pic_objects $non_pic_object"
-		  if test -z "$pic_object" || test "$pic_object" = none ; then
-		    arg="$non_pic_object"
-		  fi
-		else
-		  # If the PIC object exists, use it instead.
-		  # $xdir was prepended to $pic_object above.
-		  non_pic_object="$pic_object"
-		  non_pic_objects="$non_pic_objects $non_pic_object"
-		fi
-	      else
-		# Only an error if not doing a dry-run.
-		if test -z "$run"; then
-		  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
-		  exit $EXIT_FAILURE
-		else
-		  # Dry-run case.
-
-		  # Extract subdirectory from the argument.
-		  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
-		  if test "X$xdir" = "X$arg"; then
-		    xdir=
-		  else
-		    xdir="$xdir/"
-		  fi
-
-		  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
-		  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
-		  libobjs="$libobjs $pic_object"
-		  non_pic_objects="$non_pic_objects $non_pic_object"
-		fi
-	      fi
-	    done
-	  else
-	    $echo "$modename: link input file \`$save_arg' does not exist"
-	    exit $EXIT_FAILURE
-	  fi
-	  arg=$save_arg
-	  prev=
-	  continue
-	  ;;
 	rpath | xrpath)
 	  # We need an absolute path.
 	  case $arg in
 	  [\\/]* | [A-Za-z]:[\\/]*) ;;
 	  *)
-	    $echo "$modename: only absolute run-paths are allowed" 1>&2
-	    exit $EXIT_FAILURE
+	    func_fatal_error "only absolute run-paths are allowed"
 	    ;;
 	  esac
 	  if test "$prev" = rpath; then
 	    case "$rpath " in
 	    *" $arg "*) ;;
-	    *) rpath="$rpath $arg" ;;
+	    *) func_append rpath " $arg" ;;
 	    esac
 	  else
 	    case "$xrpath " in
 	    *" $arg "*) ;;
-	    *) xrpath="$xrpath $arg" ;;
+	    *) func_append xrpath " $arg" ;;
 	    esac
 	  fi
 	  prev=
 	  continue
 	  ;;
-	xcompiler)
-	  compiler_flags="$compiler_flags $qarg"
+	shrext)
+	  shrext_cmds="$arg"
 	  prev=
-	  compile_command="$compile_command $qarg"
-	  finalize_command="$finalize_command $qarg"
 	  continue
 	  ;;
-	xlinker)
-	  linker_flags="$linker_flags $qarg"
-	  compiler_flags="$compiler_flags $wl$qarg"
+	weak)
+	  func_append weak_libs " $arg"
 	  prev=
-	  compile_command="$compile_command $wl$qarg"
-	  finalize_command="$finalize_command $wl$qarg"
 	  continue
 	  ;;
 	xcclinker)
-	  linker_flags="$linker_flags $qarg"
-	  compiler_flags="$compiler_flags $qarg"
+	  func_append linker_flags " $qarg"
+	  func_append compiler_flags " $qarg"
 	  prev=
-	  compile_command="$compile_command $qarg"
-	  finalize_command="$finalize_command $qarg"
+	  func_append compile_command " $qarg"
+	  func_append finalize_command " $qarg"
 	  continue
 	  ;;
-	shrext)
-  	  shrext_cmds="$arg"
+	xcompiler)
+	  func_append compiler_flags " $qarg"
 	  prev=
+	  func_append compile_command " $qarg"
+	  func_append finalize_command " $qarg"
 	  continue
 	  ;;
-	darwin_framework|darwin_framework_skip)
-	  test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
-	  compile_command="$compile_command $arg"
-	  finalize_command="$finalize_command $arg"
+	xlinker)
+	  func_append linker_flags " $qarg"
+	  func_append compiler_flags " $wl$qarg"
 	  prev=
+	  func_append compile_command " $wl$qarg"
+	  func_append finalize_command " $wl$qarg"
 	  continue
 	  ;;
 	*)
@@ -1484,16 +5463,16 @@
       case $arg in
       -all-static)
 	if test -n "$link_static_flag"; then
-	  compile_command="$compile_command $link_static_flag"
-	  finalize_command="$finalize_command $link_static_flag"
+	  # See comment for -static flag below, for more details.
+	  func_append compile_command " $link_static_flag"
+	  func_append finalize_command " $link_static_flag"
 	fi
 	continue
 	;;
 
       -allow-undefined)
 	# FIXME: remove this flag sometime in the future.
-	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
-	continue
+	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
 	;;
 
       -avoid-version)
@@ -1501,6 +5480,11 @@
 	continue
 	;;
 
+      -bindir)
+	prev=bindir
+	continue
+	;;
+
       -dlopen)
 	prev=dlfiles
 	continue
@@ -1518,8 +5502,7 @@
 
       -export-symbols | -export-symbols-regex)
 	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-	  $echo "$modename: more than one -exported-symbols argument is not allowed"
-	  exit $EXIT_FAILURE
+	  func_fatal_error "more than one -exported-symbols argument is not allowed"
 	fi
 	if test "X$arg" = "X-export-symbols"; then
 	  prev=expsyms
@@ -1529,15 +5512,8 @@
 	continue
 	;;
 
-      -framework|-arch|-isysroot)
-	case " $CC " in
-	  *" ${arg} ${1} "* | *" ${arg}	${1} "*) 
-		prev=darwin_framework_skip ;;
-	  *) compiler_flags="$compiler_flags $arg"
-	     prev=darwin_framework ;;
-	esac
-	compile_command="$compile_command $arg"
-	finalize_command="$finalize_command $arg"
+      -framework)
+	prev=framework
 	continue
 	;;
 
@@ -1551,45 +5527,59 @@
       -L[A-Z][A-Z]*:*)
 	case $with_gcc/$host in
 	no/*-*-irix* | /*-*-irix*)
-	  compile_command="$compile_command $arg"
-	  finalize_command="$finalize_command $arg"
+	  func_append compile_command " $arg"
+	  func_append finalize_command " $arg"
 	  ;;
 	esac
 	continue
 	;;
 
       -L*)
-	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+	func_stripname "-L" '' "$arg"
+	if test -z "$func_stripname_result"; then
+	  if test "$#" -gt 0; then
+	    func_fatal_error "require no space between \`-L' and \`$1'"
+	  else
+	    func_fatal_error "need path for \`-L' option"
+	  fi
+	fi
+	func_resolve_sysroot "$func_stripname_result"
+	dir=$func_resolve_sysroot_result
 	# We need an absolute path.
 	case $dir in
 	[\\/]* | [A-Za-z]:[\\/]*) ;;
 	*)
 	  absdir=`cd "$dir" && pwd`
-	  if test -z "$absdir"; then
-	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
-	    absdir="$dir"
-	    notinst_path="$notinst_path $dir"
-	  fi
+	  test -z "$absdir" && \
+	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
 	  dir="$absdir"
 	  ;;
 	esac
 	case "$deplibs " in
-	*" -L$dir "*) ;;
+	*" -L$dir "* | *" $arg "*)
+	  # Will only happen for absolute or sysroot arguments
+	  ;;
 	*)
-	  deplibs="$deplibs -L$dir"
-	  lib_search_path="$lib_search_path $dir"
+	  # Preserve sysroot, but never include relative directories
+	  case $dir in
+	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
+	    *) func_append deplibs " -L$dir" ;;
+	  esac
+	  func_append lib_search_path " $dir"
 	  ;;
 	esac
 	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
-	  testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
 	  case :$dllsearchpath: in
 	  *":$dir:"*) ;;
-	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  ::) dllsearchpath=$dir;;
+	  *) func_append dllsearchpath ":$dir";;
 	  esac
 	  case :$dllsearchpath: in
 	  *":$testbindir:"*) ;;
-	  *) dllsearchpath="$dllsearchpath:$testbindir";;
+	  ::) dllsearchpath=$testbindir;;
+	  *) func_append dllsearchpath ":$testbindir";;
 	  esac
 	  ;;
 	esac
@@ -1599,7 +5589,7 @@
       -l*)
 	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
 	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
 	    # These systems don't actually have a C or math library (as such)
 	    continue
 	    ;;
@@ -1613,7 +5603,7 @@
 	    ;;
 	  *-*-rhapsody* | *-*-darwin1.[012])
 	    # Rhapsody C and math libraries are in the System framework
-	    deplibs="$deplibs -framework System"
+	    func_append deplibs " System.ltframework"
 	    continue
 	    ;;
 	  *-*-sco3.2v5* | *-*-sco5v6*)
@@ -1633,29 +5623,7 @@
 	   ;;
 	 esac
 	fi
-	deplibs="$deplibs $arg"
-	continue
-	;;
-
-      # Tru64 UNIX uses -model [arg] to determine the layout of C++
-      # classes, name mangling, and exception handling.
-      -model)
-	compile_command="$compile_command $arg"
-	compiler_flags="$compiler_flags $arg"
-	finalize_command="$finalize_command $arg"
-	prev=xcompiler
-	continue
-	;;
-
-     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
-	compiler_flags="$compiler_flags $arg"
-	compile_command="$compile_command $arg"
-	finalize_command="$finalize_command $arg"
-	continue
-	;;
-
-      -multi_module)
-	single_module="${wl}-multi_module"
+	func_append deplibs " $arg"
 	continue
 	;;
 
@@ -1664,36 +5632,30 @@
 	continue
 	;;
 
-      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
-      # -r[0-9][0-9]* specifies the processor on the SGI compiler
-      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
-      # +DA*, +DD* enable 64-bit mode on the HP compiler
-      # -q* pass through compiler args for the IBM compiler
-      # -m* pass through architecture-specific compiler args for GCC
-      # -m*, -t[45]*, -txscale* pass through architecture-specific
-      # compiler args for GCC
-      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
-      # -F/path gives path to uninstalled frameworks, gcc on darwin
-      # @file GCC response files
-      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      # Darwin uses the -arch flag to determine output architecture.
+      -model|-arch|-isysroot|--sysroot)
+	func_append compiler_flags " $arg"
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+	prev=xcompiler
+	continue
+	;;
 
-	# Unknown arguments in both finalize_command and compile_command need
-	# to be aesthetically quoted because they are evaled later.
-	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-	case $arg in
-	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-	  arg="\"$arg\""
-	  ;;
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+	func_append compiler_flags " $arg"
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
+	case "$new_inherited_linker_flags " in
+	    *" $arg "*) ;;
+	    * ) func_append new_inherited_linker_flags " $arg" ;;
 	esac
-        compile_command="$compile_command $arg"
-        finalize_command="$finalize_command $arg"
-        compiler_flags="$compiler_flags $arg"
-        continue
-        ;;
+	continue
+	;;
 
-      -shrext)
-	prev=shrext
+      -multi_module)
+	single_module="${wl}-multi_module"
 	continue
 	;;
 
@@ -1704,11 +5666,11 @@
 
       -no-install)
 	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*)
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
 	  # The PATH hackery in wrapper scripts is required on Windows
 	  # and Darwin in order for the loader to find any dlls it needs.
-	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
-	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+	  func_warning "\`-no-install' is ignored for $host"
+	  func_warning "assuming \`-no-fast-install' instead"
 	  fast_install=no
 	  ;;
 	*) no_install=yes ;;
@@ -1749,22 +5711,36 @@
 	;;
 
       -R*)
-	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+	func_stripname '-R' '' "$arg"
+	dir=$func_stripname_result
 	# We need an absolute path.
 	case $dir in
 	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	=*)
+	  func_stripname '=' '' "$dir"
+	  dir=$lt_sysroot$func_stripname_result
+	  ;;
 	*)
-	  $echo "$modename: only absolute run-paths are allowed" 1>&2
-	  exit $EXIT_FAILURE
+	  func_fatal_error "only absolute run-paths are allowed"
 	  ;;
 	esac
 	case "$xrpath " in
 	*" $dir "*) ;;
-	*) xrpath="$xrpath $dir" ;;
+	*) func_append xrpath " $dir" ;;
 	esac
 	continue
 	;;
 
+      -shared)
+	# The effects of -shared are defined in a previous loop.
+	continue
+	;;
+
+      -shrext)
+	prev=shrext
+	continue
+	;;
+
       -static | -static-libtool-libs)
 	# The effects of -static are defined in a previous loop.
 	# We used to do the same as -all-static on platforms that
@@ -1783,47 +5759,49 @@
 	prev=vinfo
 	continue
 	;;
+
       -version-number)
 	prev=vinfo
 	vinfo_number=yes
 	continue
 	;;
 
+      -weak)
+        prev=weak
+	continue
+	;;
+
       -Wc,*)
-	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+	func_stripname '-Wc,' '' "$arg"
+	args=$func_stripname_result
 	arg=
 	save_ifs="$IFS"; IFS=','
 	for flag in $args; do
 	  IFS="$save_ifs"
-	  case $flag in
-	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-	    flag="\"$flag\""
-	    ;;
-	  esac
-	  arg="$arg $wl$flag"
-	  compiler_flags="$compiler_flags $flag"
+          func_quote_for_eval "$flag"
+	  func_append arg " $func_quote_for_eval_result"
+	  func_append compiler_flags " $func_quote_for_eval_result"
 	done
 	IFS="$save_ifs"
-	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	func_stripname ' ' '' "$arg"
+	arg=$func_stripname_result
 	;;
 
       -Wl,*)
-	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+	func_stripname '-Wl,' '' "$arg"
+	args=$func_stripname_result
 	arg=
 	save_ifs="$IFS"; IFS=','
 	for flag in $args; do
 	  IFS="$save_ifs"
-	  case $flag in
-	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-	    flag="\"$flag\""
-	    ;;
-	  esac
-	  arg="$arg $wl$flag"
-	  compiler_flags="$compiler_flags $wl$flag"
-	  linker_flags="$linker_flags $flag"
+          func_quote_for_eval "$flag"
+	  func_append arg " $wl$func_quote_for_eval_result"
+	  func_append compiler_flags " $wl$func_quote_for_eval_result"
+	  func_append linker_flags " $func_quote_for_eval_result"
 	done
 	IFS="$save_ifs"
-	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	func_stripname ' ' '' "$arg"
+	arg=$func_stripname_result
 	;;
 
       -Xcompiler)
@@ -1841,53 +5819,69 @@
 	continue
 	;;
 
+      # -msg_* for osf cc
+      -msg_*)
+	func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
+	;;
+
+      # Flags to be passed through unchanged, with rationale:
+      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
+      # -r[0-9][0-9]*        specify processor for the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
+      # +DA*, +DD*           enable 64-bit mode for the HP compiler
+      # -q*                  compiler args for the IBM compiler
+      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
+      # -F/path              path to uninstalled frameworks, gcc on darwin
+      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
+      # -fstack-protector*   stack protector flags for GCC
+      # @file                GCC response files
+      # -tp=*                Portland pgcc target processor selection
+      # --sysroot=*          for sysroot support
+      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+      -O*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*)
+        func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
+        func_append compile_command " $arg"
+        func_append finalize_command " $arg"
+        func_append compiler_flags " $arg"
+        continue
+        ;;
+
       # Some other compiler flag.
       -* | +*)
-	# Unknown arguments in both finalize_command and compile_command need
-	# to be aesthetically quoted because they are evaled later.
-	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-	case $arg in
-	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-	  arg="\"$arg\""
-	  ;;
-	esac
+        func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
 	;;
 
       *.$objext)
 	# A standard object.
-	objs="$objs $arg"
+	func_append objs " $arg"
 	;;
 
       *.lo)
 	# A libtool-controlled object.
 
 	# Check to see that this really is a libtool object.
-	if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	if func_lalib_unsafe_p "$arg"; then
 	  pic_object=
 	  non_pic_object=
 
 	  # Read the .lo file
-	  # If there is no directory component, then add one.
-	  case $arg in
-	  */* | *\\*) . $arg ;;
-	  *) . ./$arg ;;
-	  esac
+	  func_source "$arg"
 
-	  if test -z "$pic_object" || \
+	  if test -z "$pic_object" ||
 	     test -z "$non_pic_object" ||
-	     test "$pic_object" = none && \
+	     test "$pic_object" = none &&
 	     test "$non_pic_object" = none; then
-	    $echo "$modename: cannot find name of object for \`$arg'" 1>&2
-	    exit $EXIT_FAILURE
+	    func_fatal_error "cannot find name of object for \`$arg'"
 	  fi
 
 	  # Extract subdirectory from the argument.
-	  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
-	  if test "X$xdir" = "X$arg"; then
-	    xdir=
- 	  else
-	    xdir="$xdir/"
-	  fi
+	  func_dirname "$arg" "/" ""
+	  xdir="$func_dirname_result"
 
 	  if test "$pic_object" != none; then
 	    # Prepend the subdirectory the object is found in.
@@ -1895,7 +5889,7 @@
 
 	    if test "$prev" = dlfiles; then
 	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-		dlfiles="$dlfiles $pic_object"
+		func_append dlfiles " $pic_object"
 		prev=
 		continue
 	      else
@@ -1907,12 +5901,12 @@
 	    # CHECK ME:  I think I busted this.  -Ossama
 	    if test "$prev" = dlprefiles; then
 	      # Preload the old-style object.
-	      dlprefiles="$dlprefiles $pic_object"
+	      func_append dlprefiles " $pic_object"
 	      prev=
 	    fi
 
 	    # A PIC object.
-	    libobjs="$libobjs $pic_object"
+	    func_append libobjs " $pic_object"
 	    arg="$pic_object"
 	  fi
 
@@ -1922,7 +5916,7 @@
 	    non_pic_object="$xdir$non_pic_object"
 
 	    # A standard non-PIC object
-	    non_pic_objects="$non_pic_objects $non_pic_object"
+	    func_append non_pic_objects " $non_pic_object"
 	    if test -z "$pic_object" || test "$pic_object" = none ; then
 	      arg="$non_pic_object"
 	    fi
@@ -1930,52 +5924,47 @@
 	    # If the PIC object exists, use it instead.
 	    # $xdir was prepended to $pic_object above.
 	    non_pic_object="$pic_object"
-	    non_pic_objects="$non_pic_objects $non_pic_object"
+	    func_append non_pic_objects " $non_pic_object"
 	  fi
 	else
 	  # Only an error if not doing a dry-run.
-	  if test -z "$run"; then
-	    $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
-	    exit $EXIT_FAILURE
-	  else
-	    # Dry-run case.
-
+	  if $opt_dry_run; then
 	    # Extract subdirectory from the argument.
-	    xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
-	    if test "X$xdir" = "X$arg"; then
-	      xdir=
-	    else
-	      xdir="$xdir/"
-	    fi
+	    func_dirname "$arg" "/" ""
+	    xdir="$func_dirname_result"
 
-	    pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
-	    non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
-	    libobjs="$libobjs $pic_object"
-	    non_pic_objects="$non_pic_objects $non_pic_object"
+	    func_lo2o "$arg"
+	    pic_object=$xdir$objdir/$func_lo2o_result
+	    non_pic_object=$xdir$func_lo2o_result
+	    func_append libobjs " $pic_object"
+	    func_append non_pic_objects " $non_pic_object"
+	  else
+	    func_fatal_error "\`$arg' is not a valid libtool object"
 	  fi
 	fi
 	;;
 
       *.$libext)
 	# An archive.
-	deplibs="$deplibs $arg"
-	old_deplibs="$old_deplibs $arg"
+	func_append deplibs " $arg"
+	func_append old_deplibs " $arg"
 	continue
 	;;
 
       *.la)
 	# A libtool-controlled library.
 
+	func_resolve_sysroot "$arg"
 	if test "$prev" = dlfiles; then
 	  # This library was specified with -dlopen.
-	  dlfiles="$dlfiles $arg"
+	  func_append dlfiles " $func_resolve_sysroot_result"
 	  prev=
 	elif test "$prev" = dlprefiles; then
 	  # The library was specified with -dlpreopen.
-	  dlprefiles="$dlprefiles $arg"
+	  func_append dlprefiles " $func_resolve_sysroot_result"
 	  prev=
 	else
-	  deplibs="$deplibs $arg"
+	  func_append deplibs " $func_resolve_sysroot_result"
 	fi
 	continue
 	;;
@@ -1984,70 +5973,53 @@
       *)
 	# Unknown arguments in both finalize_command and compile_command need
 	# to be aesthetically quoted because they are evaled later.
-	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-	case $arg in
-	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-	  arg="\"$arg\""
-	  ;;
-	esac
+	func_quote_for_eval "$arg"
+	arg="$func_quote_for_eval_result"
 	;;
       esac # arg
 
       # Now actually substitute the argument into the commands.
       if test -n "$arg"; then
-	compile_command="$compile_command $arg"
-	finalize_command="$finalize_command $arg"
+	func_append compile_command " $arg"
+	func_append finalize_command " $arg"
       fi
     done # argument parsing loop
 
-    if test -n "$prev"; then
-      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
-      $echo "$help" 1>&2
-      exit $EXIT_FAILURE
-    fi
+    test -n "$prev" && \
+      func_fatal_help "the \`$prevarg' option requires an argument"
 
     if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
       eval arg=\"$export_dynamic_flag_spec\"
-      compile_command="$compile_command $arg"
-      finalize_command="$finalize_command $arg"
+      func_append compile_command " $arg"
+      func_append finalize_command " $arg"
     fi
 
     oldlibs=
     # calculate the name of the file, without its directory
-    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    func_basename "$output"
+    outputname="$func_basename_result"
     libobjs_save="$libobjs"
 
     if test -n "$shlibpath_var"; then
       # get the directories listed in $shlibpath_var
-      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
     else
       shlib_search_path=
     fi
     eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
     eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
 
-    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
-    if test "X$output_objdir" = "X$output"; then
-      output_objdir="$objdir"
-    else
-      output_objdir="$output_objdir/$objdir"
-    fi
+    func_dirname "$output" "/" ""
+    output_objdir="$func_dirname_result$objdir"
+    func_to_tool_file "$output_objdir/"
+    tool_output_objdir=$func_to_tool_file_result
     # Create the object directory.
-    if test ! -d "$output_objdir"; then
-      $show "$mkdir $output_objdir"
-      $run $mkdir $output_objdir
-      exit_status=$?
-      if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
-	exit $exit_status
-      fi
-    fi
+    func_mkdir_p "$output_objdir"
 
     # Determine the type of output
     case $output in
     "")
-      $echo "$modename: you must specify an output file" 1>&2
-      $echo "$help" 1>&2
-      exit $EXIT_FAILURE
+      func_fatal_help "you must specify an output file"
       ;;
     *.$libext) linkmode=oldlib ;;
     *.lo | *.$objext) linkmode=obj ;;
@@ -2055,27 +6027,18 @@
     *) linkmode=prog ;; # Anything else should be a program.
     esac
 
-    case $host in
-    *cygwin* | *mingw* | *pw32*)
-      # don't eliminate duplications in $postdeps and $predeps
-      duplicate_compiler_generated_deps=yes
-      ;;
-    *)
-      duplicate_compiler_generated_deps=$duplicate_deps
-      ;;
-    esac
     specialdeplibs=
 
     libs=
     # Find all interdependent deplibs by searching for libraries
     # that are linked more than once (e.g. -la -lb -la)
     for deplib in $deplibs; do
-      if test "X$duplicate_deps" = "Xyes" ; then
+      if $opt_preserve_dup_deps ; then
 	case "$libs " in
-	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
 	esac
       fi
-      libs="$libs $deplib"
+      func_append libs " $deplib"
     done
 
     if test "$linkmode" = lib; then
@@ -2085,12 +6048,12 @@
       # $postdeps and mark them as special (i.e., whose duplicates are
       # not to be eliminated).
       pre_post_deps=
-      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+      if $opt_duplicate_compiler_generated_deps; then
 	for pre_post_dep in $predeps $postdeps; do
 	  case "$pre_post_deps " in
-	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
 	  esac
-	  pre_post_deps="$pre_post_deps $pre_post_dep"
+	  func_append pre_post_deps " $pre_post_dep"
 	done
       fi
       pre_post_deps=
@@ -2101,15 +6064,16 @@
     newlib_search_path=
     need_relink=no # whether we're linking any uninstalled libtool libraries
     notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+
     case $linkmode in
     lib)
-	passes="conv link"
+	passes="conv dlpreopen link"
 	for file in $dlfiles $dlprefiles; do
 	  case $file in
 	  *.la) ;;
 	  *)
-	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
-	    exit $EXIT_FAILURE
+	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
 	    ;;
 	  esac
 	done
@@ -2125,7 +6089,20 @@
     *)  passes="conv"
 	;;
     esac
+
     for pass in $passes; do
+      # The preopen pass in lib mode reverses $deplibs; put it back here
+      # so that -L comes before libs that need it for instance...
+      if test "$linkmode,$pass" = "lib,link"; then
+	## FIXME: Find the place where the list is rebuilt in the wrong
+	##        order, and fix it there properly
+        tmp_deplibs=
+	for deplib in $deplibs; do
+	  tmp_deplibs="$deplib $tmp_deplibs"
+	done
+	deplibs="$tmp_deplibs"
+      fi
+
       if test "$linkmode,$pass" = "lib,link" ||
 	 test "$linkmode,$pass" = "prog,scan"; then
 	libs="$deplibs"
@@ -2138,11 +6115,35 @@
 	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
 	esac
       fi
+      if test "$linkmode,$pass" = "lib,dlpreopen"; then
+	# Collect and forward deplibs of preopened libtool libs
+	for lib in $dlprefiles; do
+	  # Ignore non-libtool-libs
+	  dependency_libs=
+	  func_resolve_sysroot "$lib"
+	  case $lib in
+	  *.la)	func_source "$func_resolve_sysroot_result" ;;
+	  esac
+
+	  # Collect preopened libtool deplibs, except any this library
+	  # has declared as weak libs
+	  for deplib in $dependency_libs; do
+	    func_basename "$deplib"
+            deplib_base=$func_basename_result
+	    case " $weak_libs " in
+	    *" $deplib_base "*) ;;
+	    *) func_append deplibs " $deplib" ;;
+	    esac
+	  done
+	done
+	libs="$dlprefiles"
+      fi
       if test "$pass" = dlopen; then
 	# Collect dlpreopened libraries
 	save_deplibs="$deplibs"
 	deplibs=
       fi
+
       for deplib in $libs; do
 	lib=
 	found=no
@@ -2152,16 +6153,23 @@
 	    compile_deplibs="$deplib $compile_deplibs"
 	    finalize_deplibs="$deplib $finalize_deplibs"
 	  else
-	    compiler_flags="$compiler_flags $deplib"
+	    func_append compiler_flags " $deplib"
+	    if test "$linkmode" = lib ; then
+		case "$new_inherited_linker_flags " in
+		    *" $deplib "*) ;;
+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
+		esac
+	    fi
 	  fi
 	  continue
 	  ;;
 	-l*)
 	  if test "$linkmode" != lib && test "$linkmode" != prog; then
-	    $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+	    func_warning "\`-l' is ignored for archives/objects"
 	    continue
 	  fi
-	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+	  func_stripname '-l' '' "$deplib"
+	  name=$func_stripname_result
 	  if test "$linkmode" = lib; then
 	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
 	  else
@@ -2197,21 +6205,17 @@
 	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
 	      case " $predeps $postdeps " in
 	      *" $deplib "*)
-		if (${SED} -e '2q' $lib |
-                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		if func_lalib_p "$lib"; then
 		  library_names=
 		  old_library=
-		  case $lib in
-		  */* | *\\*) . $lib ;;
-		  *) . ./$lib ;;
-		  esac
+		  func_source "$lib"
 		  for l in $old_library $library_names; do
 		    ll="$l"
 		  done
 		  if test "X$ll" = "X$old_library" ; then # only static version available
 		    found=no
-		    ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
-		    test "X$ladir" = "X$lib" && ladir="."
+		    func_dirname "$lib" "" "."
+		    ladir="$func_dirname_result"
 		    lib=$ladir/$old_library
 		    if test "$linkmode,$pass" = "prog,link"; then
 		      compile_deplibs="$deplib $compile_deplibs"
@@ -2223,19 +6227,36 @@
 		    continue
 		  fi
 		fi
-	        ;;
+		;;
 	      *) ;;
 	      esac
 	    fi
 	  fi
 	  ;; # -l
+	*.ltframework)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    deplibs="$deplib $deplibs"
+	    if test "$linkmode" = lib ; then
+		case "$new_inherited_linker_flags " in
+		    *" $deplib "*) ;;
+		    * ) func_append new_inherited_linker_flags " $deplib" ;;
+		esac
+	    fi
+	  fi
+	  continue
+	  ;;
 	-L*)
 	  case $linkmode in
 	  lib)
 	    deplibs="$deplib $deplibs"
 	    test "$pass" = conv && continue
 	    newdependency_libs="$deplib $newdependency_libs"
-	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    func_stripname '-L' '' "$deplib"
+	    func_resolve_sysroot "$func_stripname_result"
+	    func_append newlib_search_path " $func_resolve_sysroot_result"
 	    ;;
 	  prog)
 	    if test "$pass" = conv; then
@@ -2248,27 +6269,34 @@
 	      compile_deplibs="$deplib $compile_deplibs"
 	      finalize_deplibs="$deplib $finalize_deplibs"
 	    fi
-	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    func_stripname '-L' '' "$deplib"
+	    func_resolve_sysroot "$func_stripname_result"
+	    func_append newlib_search_path " $func_resolve_sysroot_result"
 	    ;;
 	  *)
-	    $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+	    func_warning "\`-L' is ignored for archives/objects"
 	    ;;
 	  esac # linkmode
 	  continue
 	  ;; # -L
 	-R*)
 	  if test "$pass" = link; then
-	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+	    func_stripname '-R' '' "$deplib"
+	    func_resolve_sysroot "$func_stripname_result"
+	    dir=$func_resolve_sysroot_result
 	    # Make sure the xrpath contains only unique directories.
 	    case "$xrpath " in
 	    *" $dir "*) ;;
-	    *) xrpath="$xrpath $dir" ;;
+	    *) func_append xrpath " $dir" ;;
 	    esac
 	  fi
 	  deplibs="$deplib $deplibs"
 	  continue
 	  ;;
-	*.la) lib="$deplib" ;;
+	*.la)
+	  func_resolve_sysroot "$deplib"
+	  lib=$func_resolve_sysroot_result
+	  ;;
 	*.$libext)
 	  if test "$pass" = conv; then
 	    deplibs="$deplib $deplibs"
@@ -2276,35 +6304,41 @@
 	  fi
 	  case $linkmode in
 	  lib)
-	    valid_a_lib=no
-	    case $deplibs_check_method in
-	      match_pattern*)
-		set dummy $deplibs_check_method
-	        match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
-		if eval $echo \"$deplib\" 2>/dev/null \
-		    | $SED 10q \
+	    # Linking convenience modules into shared libraries is allowed,
+	    # but linking other static libraries is non-portable.
+	    case " $dlpreconveniencelibs " in
+	    *" $deplib "*) ;;
+	    *)
+	      valid_a_lib=no
+	      case $deplibs_check_method in
+		match_pattern*)
+		  set dummy $deplibs_check_method; shift
+		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
 		    | $EGREP "$match_pattern_regex" > /dev/null; then
+		    valid_a_lib=yes
+		  fi
+		;;
+		pass_all)
 		  valid_a_lib=yes
-		fi
 		;;
-	      pass_all)
-		valid_a_lib=yes
-		;;
-            esac
-	    if test "$valid_a_lib" != yes; then
-	      $echo
-	      $echo "*** Warning: Trying to link with static lib archive $deplib."
-	      $echo "*** I have the capability to make that library automatically link in when"
-	      $echo "*** you link to this library.  But I can only do this if you have a"
-	      $echo "*** shared version of the library, which you do not appear to have"
-	      $echo "*** because the file extensions .$libext of this argument makes me believe"
-	      $echo "*** that it is just a static archive that I should not used here."
-	    else
-	      $echo
-	      $echo "*** Warning: Linking the shared library $output against the"
-	      $echo "*** static library $deplib is not portable!"
-	      deplibs="$deplib $deplibs"
-	    fi
+	      esac
+	      if test "$valid_a_lib" != yes; then
+		echo
+		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because the file extensions .$libext of this argument makes me believe"
+		echo "*** that it is just a static archive that I should not use here."
+	      else
+		echo
+		$ECHO "*** Warning: Linking the shared library $output against the"
+		$ECHO "*** static library $deplib is not portable!"
+		deplibs="$deplib $deplibs"
+	      fi
+	      ;;
+	    esac
 	    continue
 	    ;;
 	  prog)
@@ -2325,11 +6359,11 @@
 	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
 	      # If there is no dlopen support or we're linking statically,
 	      # we need to preload.
-	      newdlprefiles="$newdlprefiles $deplib"
+	      func_append newdlprefiles " $deplib"
 	      compile_deplibs="$deplib $compile_deplibs"
 	      finalize_deplibs="$deplib $finalize_deplibs"
 	    else
-	      newdlfiles="$newdlfiles $deplib"
+	      func_append newdlfiles " $deplib"
 	    fi
 	  fi
 	  continue
@@ -2339,21 +6373,18 @@
 	  continue
 	  ;;
 	esac # case $deplib
+
 	if test "$found" = yes || test -f "$lib"; then :
 	else
-	  $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
-	  exit $EXIT_FAILURE
+	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
 	fi
 
 	# Check to see that this really is a libtool archive.
-	if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
-	else
-	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
-	  exit $EXIT_FAILURE
-	fi
+	func_lalib_unsafe_p "$lib" \
+	  || func_fatal_error "\`$lib' is not a valid libtool archive"
 
-	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
-	test "X$ladir" = "X$lib" && ladir="."
+	func_dirname "$lib" "" "."
+	ladir="$func_dirname_result"
 
 	dlname=
 	dlopen=
@@ -2361,6 +6392,7 @@
 	libdir=
 	library_names=
 	old_library=
+	inherited_linker_flags=
 	# If the library was installed with an old release of libtool,
 	# it will not redefine variables installed, or shouldnotlink
 	installed=yes
@@ -2369,16 +6401,24 @@
 
 
 	# Read the .la file
-	case $lib in
-	*/* | *\\*) . $lib ;;
-	*) . ./$lib ;;
-	esac
+	func_source "$lib"
 
+	# Convert "-framework foo" to "foo.ltframework"
+	if test -n "$inherited_linker_flags"; then
+	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
+	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+	    case " $new_inherited_linker_flags " in
+	      *" $tmp_inherited_linker_flag "*) ;;
+	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
+	    esac
+	  done
+	fi
+	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
 	if test "$linkmode,$pass" = "lib,link" ||
 	   test "$linkmode,$pass" = "prog,scan" ||
 	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
-	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
-	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+	  test -n "$dlopen" && func_append dlfiles " $dlopen"
+	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
 	fi
 
 	if test "$pass" = conv; then
@@ -2386,45 +6426,47 @@
 	  deplibs="$lib $deplibs"
 	  if test -z "$libdir"; then
 	    if test -z "$old_library"; then
-	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
-	      exit $EXIT_FAILURE
+	      func_fatal_error "cannot find name of link library for \`$lib'"
 	    fi
 	    # It is a libtool convenience library, so add in its objects.
-	    convenience="$convenience $ladir/$objdir/$old_library"
-	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
-	    tmp_libs=
-	    for deplib in $dependency_libs; do
-	      deplibs="$deplib $deplibs"
-              if test "X$duplicate_deps" = "Xyes" ; then
-	        case "$tmp_libs " in
-	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-	        esac
-              fi
-	      tmp_libs="$tmp_libs $deplib"
-	    done
+	    func_append convenience " $ladir/$objdir/$old_library"
+	    func_append old_convenience " $ladir/$objdir/$old_library"
 	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
-	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
-	    exit $EXIT_FAILURE
+	    func_fatal_error "\`$lib' is not a convenience library"
 	  fi
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    deplibs="$deplib $deplibs"
+	    if $opt_preserve_dup_deps ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+	      esac
+	    fi
+	    func_append tmp_libs " $deplib"
+	  done
 	  continue
 	fi # $pass = conv
 
 
 	# Get the name of the library we link against.
 	linklib=
-	for l in $old_library $library_names; do
-	  linklib="$l"
-	done
+	if test -n "$old_library" &&
+	   { test "$prefer_static_libs" = yes ||
+	     test "$prefer_static_libs,$installed" = "built,no"; }; then
+	  linklib=$old_library
+	else
+	  for l in $old_library $library_names; do
+	    linklib="$l"
+	  done
+	fi
 	if test -z "$linklib"; then
-	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
-	  exit $EXIT_FAILURE
+	  func_fatal_error "cannot find name of link library for \`$lib'"
 	fi
 
 	# This library was specified with -dlopen.
 	if test "$pass" = dlopen; then
 	  if test -z "$libdir"; then
-	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
-	    exit $EXIT_FAILURE
+	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
 	  fi
 	  if test -z "$dlname" ||
 	     test "$dlopen_support" != yes ||
@@ -2433,9 +6475,9 @@
 	    # statically, we need to preload.  We also need to preload any
 	    # dependent libraries so libltdl's deplib preloader doesn't
 	    # bomb out in the load deplibs phase.
-	    dlprefiles="$dlprefiles $lib $dependency_libs"
+	    func_append dlprefiles " $lib $dependency_libs"
 	  else
-	    newdlfiles="$newdlfiles $lib"
+	    func_append newdlfiles " $lib"
 	  fi
 	  continue
 	fi # $pass = dlopen
@@ -2446,24 +6488,25 @@
 	*)
 	  abs_ladir=`cd "$ladir" && pwd`
 	  if test -z "$abs_ladir"; then
-	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
-	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+	    func_warning "cannot determine absolute directory name of \`$ladir'"
+	    func_warning "passing it literally to the linker, although it might fail"
 	    abs_ladir="$ladir"
 	  fi
 	  ;;
 	esac
-	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	func_basename "$lib"
+	laname="$func_basename_result"
 
 	# Find the relevant object directory and library name.
 	if test "X$installed" = Xyes; then
-	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
+	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    func_warning "library \`$lib' was moved."
 	    dir="$ladir"
 	    absdir="$abs_ladir"
 	    libdir="$abs_ladir"
 	  else
-	    dir="$libdir"
-	    absdir="$libdir"
+	    dir="$lt_sysroot$libdir"
+	    absdir="$lt_sysroot$libdir"
 	  fi
 	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
 	else
@@ -2471,32 +6514,62 @@
 	    dir="$ladir"
 	    absdir="$abs_ladir"
 	    # Remove this search path later
-	    notinst_path="$notinst_path $abs_ladir"
+	    func_append notinst_path " $abs_ladir"
 	  else
 	    dir="$ladir/$objdir"
 	    absdir="$abs_ladir/$objdir"
 	    # Remove this search path later
-	    notinst_path="$notinst_path $abs_ladir"
+	    func_append notinst_path " $abs_ladir"
 	  fi
 	fi # $installed = yes
-	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+	func_stripname 'lib' '.la' "$laname"
+	name=$func_stripname_result
 
 	# This library was specified with -dlpreopen.
 	if test "$pass" = dlpreopen; then
-	  if test -z "$libdir"; then
-	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
-	    exit $EXIT_FAILURE
+	  if test -z "$libdir" && test "$linkmode" = prog; then
+	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
 	  fi
-	  # Prefer using a static library (so that no silly _DYNAMIC symbols
-	  # are required to link).
-	  if test -n "$old_library"; then
-	    newdlprefiles="$newdlprefiles $dir/$old_library"
-	  # Otherwise, use the dlname, so that lt_dlopen finds it.
-	  elif test -n "$dlname"; then
-	    newdlprefiles="$newdlprefiles $dir/$dlname"
-	  else
-	    newdlprefiles="$newdlprefiles $dir/$linklib"
-	  fi
+	  case "$host" in
+	    # special handling for platforms with PE-DLLs.
+	    *cygwin* | *mingw* | *cegcc* )
+	      # Linker will automatically link against shared library if both
+	      # static and shared are present.  Therefore, ensure we extract
+	      # symbols from the import library if a shared library is present
+	      # (otherwise, the dlopen module name will be incorrect).  We do
+	      # this by putting the import library name into $newdlprefiles.
+	      # We recover the dlopen module name by 'saving' the la file
+	      # name in a special purpose variable, and (later) extracting the
+	      # dlname from the la file.
+	      if test -n "$dlname"; then
+	        func_tr_sh "$dir/$linklib"
+	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
+	        func_append newdlprefiles " $dir/$linklib"
+	      else
+	        func_append newdlprefiles " $dir/$old_library"
+	        # Keep a list of preopened convenience libraries to check
+	        # that they are being used correctly in the link pass.
+	        test -z "$libdir" && \
+	          func_append dlpreconveniencelibs " $dir/$old_library"
+	      fi
+	    ;;
+	    * )
+	      # Prefer using a static library (so that no silly _DYNAMIC symbols
+	      # are required to link).
+	      if test -n "$old_library"; then
+	        func_append newdlprefiles " $dir/$old_library"
+	        # Keep a list of preopened convenience libraries to check
+	        # that they are being used correctly in the link pass.
+	        test -z "$libdir" && \
+	          func_append dlpreconveniencelibs " $dir/$old_library"
+	      # Otherwise, use the dlname, so that lt_dlopen finds it.
+	      elif test -n "$dlname"; then
+	        func_append newdlprefiles " $dir/$dlname"
+	      else
+	        func_append newdlprefiles " $dir/$linklib"
+	      fi
+	    ;;
+	  esac
 	fi # $pass = dlpreopen
 
 	if test -z "$libdir"; then
@@ -2514,7 +6587,7 @@
 
 
 	if test "$linkmode" = prog && test "$pass" != link; then
-	  newlib_search_path="$newlib_search_path $ladir"
+	  func_append newlib_search_path " $ladir"
 	  deplibs="$lib $deplibs"
 
 	  linkalldeplibs=no
@@ -2526,7 +6599,10 @@
 	  tmp_libs=
 	  for deplib in $dependency_libs; do
 	    case $deplib in
-	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+	    -L*) func_stripname '-L' '' "$deplib"
+	         func_resolve_sysroot "$func_stripname_result"
+	         func_append newlib_search_path " $func_resolve_sysroot_result"
+		 ;;
 	    esac
 	    # Need to link against all dependency_libs?
 	    if test "$linkalldeplibs" = yes; then
@@ -2536,12 +6612,12 @@
 	      # or/and link against static libraries
 	      newdependency_libs="$deplib $newdependency_libs"
 	    fi
-	    if test "X$duplicate_deps" = "Xyes" ; then
+	    if $opt_preserve_dup_deps ; then
 	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
 	      esac
 	    fi
-	    tmp_libs="$tmp_libs $deplib"
+	    func_append tmp_libs " $deplib"
 	  done # for deplib
 	  continue
 	fi # $linkmode = prog...
@@ -2549,15 +6625,14 @@
 	if test "$linkmode,$pass" = "prog,link"; then
 	  if test -n "$library_names" &&
 	     { { test "$prefer_static_libs" = no ||
-		 test "$prefer_static_libs,$installed" = "built,yes"; } ||
+	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
 	       test -z "$old_library"; }; then
 	    # We need to hardcode the library path
 	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
 	      # Make sure the rpath contains only unique directories.
-	      case "$temp_rpath " in
-	      *" $dir "*) ;;
-	      *" $absdir "*) ;;
-	      *) temp_rpath="$temp_rpath $absdir" ;;
+	      case "$temp_rpath:" in
+	      *"$absdir:"*) ;;
+	      *) func_append temp_rpath "$absdir:" ;;
 	      esac
 	    fi
 
@@ -2569,7 +6644,7 @@
 	    *)
 	      case "$compile_rpath " in
 	      *" $absdir "*) ;;
-	      *) compile_rpath="$compile_rpath $absdir"
+	      *) func_append compile_rpath " $absdir" ;;
 	      esac
 	      ;;
 	    esac
@@ -2578,7 +6653,7 @@
 	    *)
 	      case "$finalize_rpath " in
 	      *" $libdir "*) ;;
-	      *) finalize_rpath="$finalize_rpath $libdir"
+	      *) func_append finalize_rpath " $libdir" ;;
 	      esac
 	      ;;
 	    esac
@@ -2595,27 +6670,43 @@
 
 	link_static=no # Whether the deplib will be linked statically
 	use_static_libs=$prefer_static_libs
-	if test "$use_static_libs" = built && test "$installed" = yes ; then
+	if test "$use_static_libs" = built && test "$installed" = yes; then
 	  use_static_libs=no
 	fi
 	if test -n "$library_names" &&
 	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
-	  if test "$installed" = no; then
-	    notinst_deplibs="$notinst_deplibs $lib"
-	    need_relink=yes
-	  fi
+	  case $host in
+	  *cygwin* | *mingw* | *cegcc*)
+	      # No point in relinking DLLs because paths are not encoded
+	      func_append notinst_deplibs " $lib"
+	      need_relink=no
+	    ;;
+	  *)
+	    if test "$installed" = no; then
+	      func_append notinst_deplibs " $lib"
+	      need_relink=yes
+	    fi
+	    ;;
+	  esac
 	  # This is a shared library
 
-	  # Warn about portability, can't link against -module's on
-	  # some systems (darwin)
-	  if test "$shouldnotlink" = yes && test "$pass" = link ; then
-	    $echo
-	    if test "$linkmode" = prog; then
-	      $echo "*** Warning: Linking the executable $output against the loadable module"
-	    else
-	      $echo "*** Warning: Linking the shared library $output against the loadable module"
+	  # Warn about portability, can't link against -module's on some
+	  # systems (darwin).  Don't bleat about dlopened modules though!
+	  dlopenmodule=""
+	  for dlpremoduletest in $dlprefiles; do
+	    if test "X$dlpremoduletest" = "X$lib"; then
+	      dlopenmodule="$dlpremoduletest"
+	      break
 	    fi
-	    $echo "*** $linklib is not portable!"
+	  done
+	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
+	    echo
+	    if test "$linkmode" = prog; then
+	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
+	    else
+	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+	    fi
+	    $ECHO "*** $linklib is not portable!"
 	  fi
 	  if test "$linkmode" = lib &&
 	     test "$hardcode_into_libs" = yes; then
@@ -2627,7 +6718,7 @@
 	    *)
 	      case "$compile_rpath " in
 	      *" $absdir "*) ;;
-	      *) compile_rpath="$compile_rpath $absdir"
+	      *) func_append compile_rpath " $absdir" ;;
 	      esac
 	      ;;
 	    esac
@@ -2636,7 +6727,7 @@
 	    *)
 	      case "$finalize_rpath " in
 	      *" $libdir "*) ;;
-	      *) finalize_rpath="$finalize_rpath $libdir"
+	      *) func_append finalize_rpath " $libdir" ;;
 	      esac
 	      ;;
 	    esac
@@ -2645,17 +6736,19 @@
 	  if test -n "$old_archive_from_expsyms_cmds"; then
 	    # figure out the soname
 	    set dummy $library_names
-	    realname="$2"
-	    shift; shift
-	    libname=`eval \\$echo \"$libname_spec\"`
+	    shift
+	    realname="$1"
+	    shift
+	    libname=`eval "\\$ECHO \"$libname_spec\""`
 	    # use dlname if we got it. it's perfectly good, no?
 	    if test -n "$dlname"; then
 	      soname="$dlname"
 	    elif test -n "$soname_spec"; then
 	      # bleh windows
 	      case $host in
-	      *cygwin* | mingw*)
-		major=`expr $current - $age`
+	      *cygwin* | mingw* | *cegcc*)
+	        func_arith $current - $age
+		major=$func_arith_result
 		versuffix="-$major"
 		;;
 	      esac
@@ -2666,43 +6759,29 @@
 
 	    # Make a new name for the extract_expsyms_cmds to use
 	    soroot="$soname"
-	    soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
-	    newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+	    func_basename "$soroot"
+	    soname="$func_basename_result"
+	    func_stripname 'lib' '.dll' "$soname"
+	    newlib=libimp-$func_stripname_result.a
 
 	    # If the library has no export list, then create one now
 	    if test -f "$output_objdir/$soname-def"; then :
 	    else
-	      $show "extracting exported symbol list from \`$soname'"
-	      save_ifs="$IFS"; IFS='~'
-	      cmds=$extract_expsyms_cmds
-	      for cmd in $cmds; do
-		IFS="$save_ifs"
-		eval cmd=\"$cmd\"
-		$show "$cmd"
-		$run eval "$cmd" || exit $?
-	      done
-	      IFS="$save_ifs"
+	      func_verbose "extracting exported symbol list from \`$soname'"
+	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
 	    fi
 
 	    # Create $newlib
 	    if test -f "$output_objdir/$newlib"; then :; else
-	      $show "generating import library for \`$soname'"
-	      save_ifs="$IFS"; IFS='~'
-	      cmds=$old_archive_from_expsyms_cmds
-	      for cmd in $cmds; do
-		IFS="$save_ifs"
-		eval cmd=\"$cmd\"
-		$show "$cmd"
-		$run eval "$cmd" || exit $?
-	      done
-	      IFS="$save_ifs"
+	      func_verbose "generating import library for \`$soname'"
+	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
 	    fi
 	    # make sure the library variables are pointing to the new library
 	    dir=$output_objdir
 	    linklib=$newlib
 	  fi # test -n "$old_archive_from_expsyms_cmds"
 
-	  if test "$linkmode" = prog || test "$mode" != relink; then
+	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
 	    add_shlibpath=
 	    add_dir=
 	    add=
@@ -2717,17 +6796,21 @@
 		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
 		    *-*-unixware7*) add_dir="-L$dir" ;;
 		  *-*-darwin* )
-		    # if the lib is a module then we can not link against
-		    # it, someone is ignoring the new warnings I added
+		    # if the lib is a (non-dlopened) module then we can not
+		    # link against it, someone is ignoring the earlier warnings
 		    if /usr/bin/file -L $add 2> /dev/null |
-                      $EGREP ": [^:]* bundle" >/dev/null ; then
-		      $echo "** Warning, lib $linklib is a module, not a shared library"
-		      if test -z "$old_library" ; then
-		        $echo
-		        $echo "** And there doesn't seem to be a static archive available"
-		        $echo "** The link will probably fail, sorry"
-		      else
-		        add="$dir/$old_library"
+			 $GREP ": [^:]* bundle" >/dev/null ; then
+		      if test "X$dlopenmodule" != "X$lib"; then
+			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
+			if test -z "$old_library" ; then
+			  echo
+			  echo "*** And there doesn't seem to be a static archive available"
+			  echo "*** The link will probably fail, sorry"
+			else
+			  add="$dir/$old_library"
+			fi
+		      elif test -n "$old_library"; then
+			add="$dir/$old_library"
 		      fi
 		    fi
 		esac
@@ -2745,7 +6828,8 @@
 	      fi
 	      ;;
 	    relink)
-	      if test "$hardcode_direct" = yes; then
+	      if test "$hardcode_direct" = yes &&
+	         test "$hardcode_direct_absolute" = no; then
 		add="$dir/$linklib"
 	      elif test "$hardcode_minus_L" = yes; then
 		add_dir="-L$dir"
@@ -2753,7 +6837,7 @@
 		if test -n "$inst_prefix_dir"; then
 		  case $libdir in
 		    [\\/]*)
-		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		      func_append add_dir " -L$inst_prefix_dir$libdir"
 		      ;;
 		  esac
 		fi
@@ -2769,14 +6853,13 @@
 	    esac
 
 	    if test "$lib_linked" != yes; then
-	      $echo "$modename: configuration error: unsupported hardcode properties"
-	      exit $EXIT_FAILURE
+	      func_fatal_configuration "unsupported hardcode properties"
 	    fi
 
 	    if test -n "$add_shlibpath"; then
 	      case :$compile_shlibpath: in
 	      *":$add_shlibpath:"*) ;;
-	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
 	      esac
 	    fi
 	    if test "$linkmode" = prog; then
@@ -2785,23 +6868,24 @@
 	    else
 	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
 	      test -n "$add" && deplibs="$add $deplibs"
-	      if test "$hardcode_direct" != yes && \
-		 test "$hardcode_minus_L" != yes && \
+	      if test "$hardcode_direct" != yes &&
+		 test "$hardcode_minus_L" != yes &&
 		 test "$hardcode_shlibpath_var" = yes; then
 		case :$finalize_shlibpath: in
 		*":$libdir:"*) ;;
-		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+		*) func_append finalize_shlibpath "$libdir:" ;;
 		esac
 	      fi
 	    fi
 	  fi
 
-	  if test "$linkmode" = prog || test "$mode" = relink; then
+	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
 	    add_shlibpath=
 	    add_dir=
 	    add=
 	    # Finalize command for both is simple: just hardcode it.
-	    if test "$hardcode_direct" = yes; then
+	    if test "$hardcode_direct" = yes &&
+	       test "$hardcode_direct_absolute" = no; then
 	      add="$libdir/$linklib"
 	    elif test "$hardcode_minus_L" = yes; then
 	      add_dir="-L$libdir"
@@ -2809,15 +6893,15 @@
 	    elif test "$hardcode_shlibpath_var" = yes; then
 	      case :$finalize_shlibpath: in
 	      *":$libdir:"*) ;;
-	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+	      *) func_append finalize_shlibpath "$libdir:" ;;
 	      esac
 	      add="-l$name"
 	    elif test "$hardcode_automatic" = yes; then
 	      if test -n "$inst_prefix_dir" &&
 		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
-	        add="$inst_prefix_dir$libdir/$linklib"
+		add="$inst_prefix_dir$libdir/$linklib"
 	      else
-	        add="$libdir/$linklib"
+		add="$libdir/$linklib"
 	      fi
 	    else
 	      # We cannot seem to hardcode it, guess we'll fake it.
@@ -2826,7 +6910,7 @@
 	      if test -n "$inst_prefix_dir"; then
 		case $libdir in
 		  [\\/]*)
-		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		    func_append add_dir " -L$inst_prefix_dir$libdir"
 		    ;;
 		esac
 	      fi
@@ -2861,21 +6945,21 @@
 
 	    # Just print a warning and add the library to dependency_libs so
 	    # that the program can be linked against the static library.
-	    $echo
-	    $echo "*** Warning: This system can not link to static lib archive $lib."
-	    $echo "*** I have the capability to make that library automatically link in when"
-	    $echo "*** you link to this library.  But I can only do this if you have a"
-	    $echo "*** shared version of the library, which you do not appear to have."
+	    echo
+	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
+	    echo "*** I have the capability to make that library automatically link in when"
+	    echo "*** you link to this library.  But I can only do this if you have a"
+	    echo "*** shared version of the library, which you do not appear to have."
 	    if test "$module" = yes; then
-	      $echo "*** But as you try to build a module library, libtool will still create "
-	      $echo "*** a static module, that should work as long as the dlopening application"
-	      $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      echo "*** But as you try to build a module library, libtool will still create "
+	      echo "*** a static module, that should work as long as the dlopening application"
+	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
 	      if test -z "$global_symbol_pipe"; then
-		$echo
-		$echo "*** However, this would only work if libtool was able to extract symbol"
-		$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
-		$echo "*** not find such a program.  So, this module is probably useless."
-		$echo "*** \`nm' from GNU binutils and a full rebuild may help."
+		echo
+		echo "*** However, this would only work if libtool was able to extract symbol"
+		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		echo "*** not find such a program.  So, this module is probably useless."
+		echo "*** \`nm' from GNU binutils and a full rebuild may help."
 	      fi
 	      if test "$build_old_libs" = no; then
 		build_libtool_libs=module
@@ -2899,126 +6983,113 @@
 	    temp_deplibs=
 	    for libdir in $dependency_libs; do
 	      case $libdir in
-	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+	      -R*) func_stripname '-R' '' "$libdir"
+	           temp_xrpath=$func_stripname_result
 		   case " $xrpath " in
 		   *" $temp_xrpath "*) ;;
-		   *) xrpath="$xrpath $temp_xrpath";;
+		   *) func_append xrpath " $temp_xrpath";;
 		   esac;;
-	      *) temp_deplibs="$temp_deplibs $libdir";;
+	      *) func_append temp_deplibs " $libdir";;
 	      esac
 	    done
 	    dependency_libs="$temp_deplibs"
 	  fi
 
-	  newlib_search_path="$newlib_search_path $absdir"
+	  func_append newlib_search_path " $absdir"
 	  # Link against this library
 	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
 	  # ... and its dependency_libs
 	  tmp_libs=
 	  for deplib in $dependency_libs; do
 	    newdependency_libs="$deplib $newdependency_libs"
-	    if test "X$duplicate_deps" = "Xyes" ; then
+	    case $deplib in
+              -L*) func_stripname '-L' '' "$deplib"
+                   func_resolve_sysroot "$func_stripname_result";;
+              *) func_resolve_sysroot "$deplib" ;;
+            esac
+	    if $opt_preserve_dup_deps ; then
 	      case "$tmp_libs " in
-	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      *" $func_resolve_sysroot_result "*)
+                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
 	      esac
 	    fi
-	    tmp_libs="$tmp_libs $deplib"
+	    func_append tmp_libs " $func_resolve_sysroot_result"
 	  done
 
 	  if test "$link_all_deplibs" != no; then
 	    # Add the search paths of all dependency libraries
 	    for deplib in $dependency_libs; do
+	      path=
 	      case $deplib in
 	      -L*) path="$deplib" ;;
 	      *.la)
-		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
-		test "X$dir" = "X$deplib" && dir="."
+	        func_resolve_sysroot "$deplib"
+	        deplib=$func_resolve_sysroot_result
+	        func_dirname "$deplib" "" "."
+		dir=$func_dirname_result
 		# We need an absolute path.
 		case $dir in
 		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
 		*)
 		  absdir=`cd "$dir" && pwd`
 		  if test -z "$absdir"; then
-		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+		    func_warning "cannot determine absolute directory name of \`$dir'"
 		    absdir="$dir"
 		  fi
 		  ;;
 		esac
-		if grep "^installed=no" $deplib > /dev/null; then
-		  path="$absdir/$objdir"
-		else
-		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-		  if test -z "$libdir"; then
-		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
-		    exit $EXIT_FAILURE
-		  fi
-		  if test "$absdir" != "$libdir"; then
-		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
-		  fi
-		  path="$absdir"
-		fi
-		depdepl=
+		if $GREP "^installed=no" $deplib > /dev/null; then
 		case $host in
 		*-*-darwin*)
-		  # we do not want to link against static libs,
-		  # but need to link against shared
+		  depdepl=
 		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
-		  eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
 		  if test -n "$deplibrary_names" ; then
 		    for tmp in $deplibrary_names ; do
 		      depdepl=$tmp
 		    done
-		    if test -f "$deplibdir/$depdepl" ; then
-		      depdepl="$deplibdir/$depdepl"
-	      	    elif test -f "$path/$depdepl" ; then
-		      depdepl="$path/$depdepl"
-		    else
-		      # Can't find it, oh well...
-		      depdepl=
+		    if test -f "$absdir/$objdir/$depdepl" ; then
+		      depdepl="$absdir/$objdir/$depdepl"
+		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+                      if test -z "$darwin_install_name"; then
+                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
+                      fi
+		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
+		      path=
 		    fi
-		    # do not add paths which are already there
-		    case " $newlib_search_path " in
-		    *" $path "*) ;;
-		    *) newlib_search_path="$newlib_search_path $path";;
-		    esac
 		  fi
-		  path=""
 		  ;;
 		*)
-		  path="-L$path"
+		  path="-L$absdir/$objdir"
 		  ;;
 		esac
+		else
+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  test -z "$libdir" && \
+		    func_fatal_error "\`$deplib' is not a valid libtool archive"
+		  test "$absdir" != "$libdir" && \
+		    func_warning "\`$deplib' seems to be moved"
+
+		  path="-L$absdir"
+		fi
 		;;
-	      -l*)
-		case $host in
-		*-*-darwin*)
-		  # Again, we only want to link against shared libraries
-		  eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
-		  for tmp in $newlib_search_path ; do
-		    if test -f "$tmp/lib$tmp_libs.dylib" ; then
-		      eval depdepl="$tmp/lib$tmp_libs.dylib"
-		      break
-		    fi
-		  done
-		  path=""
-		  ;;
-		*) continue ;;
-		esac
-		;;
-	      *) continue ;;
 	      esac
 	      case " $deplibs " in
 	      *" $path "*) ;;
 	      *) deplibs="$path $deplibs" ;;
 	      esac
-	      case " $deplibs " in
-	      *" $depdepl "*) ;;
-	      *) deplibs="$depdepl $deplibs" ;;
-	      esac
 	    done
 	  fi # link_all_deplibs != no
 	fi # linkmode = lib
       done # for deplib in $libs
+      if test "$pass" = link; then
+	if test "$linkmode" = "prog"; then
+	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+	else
+	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	fi
+      fi
       dependency_libs="$newdependency_libs"
       if test "$pass" = dlpreopen; then
 	# Link the dlpreopened libraries before other libraries
@@ -3033,7 +7104,7 @@
 	  for dir in $newlib_search_path; do
 	    case "$lib_search_path " in
 	    *" $dir "*) ;;
-	    *) lib_search_path="$lib_search_path $dir" ;;
+	    *) func_append lib_search_path " $dir" ;;
 	    esac
 	  done
 	  newlib_search_path=
@@ -3091,10 +7162,10 @@
 	    -L*)
 	      case " $tmp_libs " in
 	      *" $deplib "*) ;;
-	      *) tmp_libs="$tmp_libs $deplib" ;;
+	      *) func_append tmp_libs " $deplib" ;;
 	      esac
 	      ;;
-	    *) tmp_libs="$tmp_libs $deplib" ;;
+	    *) func_append tmp_libs " $deplib" ;;
 	    esac
 	  done
 	  eval $var=\"$tmp_libs\"
@@ -3110,99 +7181,96 @@
 	  ;;
 	esac
 	if test -n "$i" ; then
-	  tmp_libs="$tmp_libs $i"
+	  func_append tmp_libs " $i"
 	fi
       done
       dependency_libs=$tmp_libs
     done # for pass
     if test "$linkmode" = prog; then
       dlfiles="$newdlfiles"
+    fi
+    if test "$linkmode" = prog || test "$linkmode" = lib; then
       dlprefiles="$newdlprefiles"
     fi
 
     case $linkmode in
     oldlib)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	func_warning "\`-dlopen' is ignored for archives"
+      fi
+
       case " $deplibs" in
       *\ -l* | *\ -L*)
-	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;;
+	func_warning "\`-l' and \`-L' are ignored for archives" ;;
       esac
 
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
-      fi
+      test -n "$rpath" && \
+	func_warning "\`-rpath' is ignored for archives"
 
-      if test -n "$rpath"; then
-	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
-      fi
+      test -n "$xrpath" && \
+	func_warning "\`-R' is ignored for archives"
 
-      if test -n "$xrpath"; then
-	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
-      fi
+      test -n "$vinfo" && \
+	func_warning "\`-version-info/-version-number' is ignored for archives"
 
-      if test -n "$vinfo"; then
-	$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
-      fi
+      test -n "$release" && \
+	func_warning "\`-release' is ignored for archives"
 
-      if test -n "$release"; then
-	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
-      fi
-
-      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
-      fi
+      test -n "$export_symbols$export_symbols_regex" && \
+	func_warning "\`-export-symbols' is ignored for archives"
 
       # Now set the variables for building old libraries.
       build_libtool_libs=no
       oldlibs="$output"
-      objs="$objs$old_deplibs"
+      func_append objs "$old_deplibs"
       ;;
 
     lib)
       # Make sure we only generate libraries of the form `libNAME.la'.
       case $outputname in
       lib*)
-	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+	func_stripname 'lib' '.la' "$outputname"
+	name=$func_stripname_result
 	eval shared_ext=\"$shrext_cmds\"
 	eval libname=\"$libname_spec\"
 	;;
       *)
-	if test "$module" = no; then
-	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
-	  $echo "$help" 1>&2
-	  exit $EXIT_FAILURE
-	fi
+	test "$module" = no && \
+	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
+
 	if test "$need_lib_prefix" != no; then
 	  # Add the "lib" prefix for modules if required
-	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	  func_stripname '' '.la' "$outputname"
+	  name=$func_stripname_result
 	  eval shared_ext=\"$shrext_cmds\"
 	  eval libname=\"$libname_spec\"
 	else
-	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	  func_stripname '' '.la' "$outputname"
+	  libname=$func_stripname_result
 	fi
 	;;
       esac
 
       if test -n "$objs"; then
 	if test "$deplibs_check_method" != pass_all; then
-	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
-	  exit $EXIT_FAILURE
+	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
 	else
-	  $echo
-	  $echo "*** Warning: Linking the shared library $output against the non-libtool"
-	  $echo "*** objects $objs is not portable!"
-	  libobjs="$libobjs $objs"
+	  echo
+	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+	  $ECHO "*** objects $objs is not portable!"
+	  func_append libobjs " $objs"
 	fi
       fi
 
-      if test "$dlself" != no; then
-	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
-      fi
+      test "$dlself" != no && \
+	func_warning "\`-dlopen self' is ignored for libtool libraries"
 
       set dummy $rpath
-      if test "$#" -gt 2; then
-	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
-      fi
-      install_libdir="$2"
+      shift
+      test "$#" -gt 1 && \
+	func_warning "ignoring multiple \`-rpath's for a libtool library"
+
+      install_libdir="$1"
 
       oldlibs=
       if test -z "$rpath"; then
@@ -3216,25 +7284,21 @@
 	  build_old_libs=yes
 	fi
 
-	if test -n "$vinfo"; then
-	  $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
-	fi
+	test -n "$vinfo" && \
+	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
 
-	if test -n "$release"; then
-	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
-	fi
+	test -n "$release" && \
+	  func_warning "\`-release' is ignored for convenience libraries"
       else
 
 	# Parse the version information argument.
 	save_ifs="$IFS"; IFS=':'
 	set dummy $vinfo 0 0 0
+	shift
 	IFS="$save_ifs"
 
-	if test -n "$8"; then
-	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
-	  $echo "$help" 1>&2
-	  exit $EXIT_FAILURE
-	fi
+	test -n "$7" && \
+	  func_fatal_help "too many parameters to \`-version-info'"
 
 	# convert absolute version numbers to libtool ages
 	# this retains compatibility with .la files and attempts
@@ -3242,9 +7306,9 @@
 
 	case $vinfo_number in
 	yes)
-	  number_major="$2"
-	  number_minor="$3"
-	  number_revision="$4"
+	  number_major="$1"
+	  number_minor="$2"
+	  number_revision="$3"
 	  #
 	  # There are really only two kinds -- those that
 	  # use the current revision as the major version
@@ -3254,17 +7318,19 @@
 	  #
 	  case $version_type in
 	  darwin|linux|osf|windows|none)
-	    current=`expr $number_major + $number_minor`
+	    func_arith $number_major + $number_minor
+	    current=$func_arith_result
 	    age="$number_minor"
 	    revision="$number_revision"
 	    ;;
-	  freebsd-aout|freebsd-elf|sunos)
+	  freebsd-aout|freebsd-elf|qnx|sunos)
 	    current="$number_major"
 	    revision="$number_minor"
 	    age="0"
 	    ;;
 	  irix|nonstopux)
-	    current=`expr $number_major + $number_minor`
+	    func_arith $number_major + $number_minor
+	    current=$func_arith_result
 	    age="$number_minor"
 	    revision="$number_minor"
 	    lt_irix_increment=no
@@ -3272,9 +7338,9 @@
 	  esac
 	  ;;
 	no)
-	  current="$2"
-	  revision="$3"
-	  age="$4"
+	  current="$1"
+	  revision="$2"
+	  age="$3"
 	  ;;
 	esac
 
@@ -3282,34 +7348,30 @@
 	case $current in
 	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
 	*)
-	  $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
-	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-	  exit $EXIT_FAILURE
+	  func_error "CURRENT \`$current' must be a nonnegative integer"
+	  func_fatal_error "\`$vinfo' is not valid version information"
 	  ;;
 	esac
 
 	case $revision in
 	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
 	*)
-	  $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
-	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-	  exit $EXIT_FAILURE
+	  func_error "REVISION \`$revision' must be a nonnegative integer"
+	  func_fatal_error "\`$vinfo' is not valid version information"
 	  ;;
 	esac
 
 	case $age in
 	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
 	*)
-	  $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
-	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-	  exit $EXIT_FAILURE
+	  func_error "AGE \`$age' must be a nonnegative integer"
+	  func_fatal_error "\`$vinfo' is not valid version information"
 	  ;;
 	esac
 
 	if test "$age" -gt "$current"; then
-	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
-	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
-	  exit $EXIT_FAILURE
+	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
+	  func_fatal_error "\`$vinfo' is not valid version information"
 	fi
 
 	# Calculate the version variables.
@@ -3322,10 +7384,12 @@
 	darwin)
 	  # Like Linux, but with the current version available in
 	  # verstring for coding it into the library header
-	  major=.`expr $current - $age`
+	  func_arith $current - $age
+	  major=.$func_arith_result
 	  versuffix="$major.$age.$revision"
 	  # Darwin ld doesn't like 0 for these options...
-	  minor_current=`expr $current + 1`
+	  func_arith $current + 1
+	  minor_current=$func_arith_result
 	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
 	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
 	  ;;
@@ -3337,15 +7401,17 @@
 
 	freebsd-elf)
 	  major=".$current"
-	  versuffix=".$current";
+	  versuffix=".$current"
 	  ;;
 
 	irix | nonstopux)
 	  if test "X$lt_irix_increment" = "Xno"; then
-	    major=`expr $current - $age`
+	    func_arith $current - $age
 	  else
-	    major=`expr $current - $age + 1`
+	    func_arith $current - $age + 1
 	  fi
+	  major=$func_arith_result
+
 	  case $version_type in
 	    nonstopux) verstring_prefix=nonstopux ;;
 	    *)         verstring_prefix=sgi ;;
@@ -3355,8 +7421,10 @@
 	  # Add in all the interfaces that we are compatible with.
 	  loop=$revision
 	  while test "$loop" -ne 0; do
-	    iface=`expr $revision - $loop`
-	    loop=`expr $loop - 1`
+	    func_arith $revision - $loop
+	    iface=$func_arith_result
+	    func_arith $loop - 1
+	    loop=$func_arith_result
 	    verstring="$verstring_prefix$major.$iface:$verstring"
 	  done
 
@@ -3366,25 +7434,34 @@
 	  ;;
 
 	linux)
-	  major=.`expr $current - $age`
+	  func_arith $current - $age
+	  major=.$func_arith_result
 	  versuffix="$major.$age.$revision"
 	  ;;
 
 	osf)
-	  major=.`expr $current - $age`
+	  func_arith $current - $age
+	  major=.$func_arith_result
 	  versuffix=".$current.$age.$revision"
 	  verstring="$current.$age.$revision"
 
 	  # Add in all the interfaces that we are compatible with.
 	  loop=$age
 	  while test "$loop" -ne 0; do
-	    iface=`expr $current - $loop`
-	    loop=`expr $loop - 1`
+	    func_arith $current - $loop
+	    iface=$func_arith_result
+	    func_arith $loop - 1
+	    loop=$func_arith_result
 	    verstring="$verstring:${iface}.0"
 	  done
 
 	  # Make executables depend on our current version.
-	  verstring="$verstring:${current}.0"
+	  func_append verstring ":${current}.0"
+	  ;;
+
+	qnx)
+	  major=".$current"
+	  versuffix=".$current"
 	  ;;
 
 	sunos)
@@ -3395,14 +7472,13 @@
 	windows)
 	  # Use '-' rather than '.', since we only want one
 	  # extension on DOS 8.3 filesystems.
-	  major=`expr $current - $age`
+	  func_arith $current - $age
+	  major=$func_arith_result
 	  versuffix="-$major"
 	  ;;
 
 	*)
-	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
-	  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
-	  exit $EXIT_FAILURE
+	  func_fatal_configuration "unknown library version type \`$version_type'"
 	  ;;
 	esac
 
@@ -3436,7 +7512,7 @@
 	# Check to see if the archive will have undefined symbols.
 	if test "$allow_undefined" = yes; then
 	  if test "$allow_undefined_flag" = unsupported; then
-	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+	    func_warning "undefined symbols not allowed in $host shared libraries"
 	    build_libtool_libs=no
 	    build_old_libs=yes
 	  fi
@@ -3444,58 +7520,62 @@
 	  # Don't allow undefined symbols.
 	  allow_undefined_flag="$no_undefined_flag"
 	fi
+
       fi
 
-      if test "$mode" != relink; then
+      func_generate_dlsyms "$libname" "$libname" "yes"
+      func_append libobjs " $symfileobj"
+      test "X$libobjs" = "X " && libobjs=
+
+      if test "$opt_mode" != relink; then
 	# Remove our outputs, but don't remove object files since they
 	# may have been created when compiling PIC objects.
 	removelist=
-	tempremovelist=`$echo "$output_objdir/*"`
+	tempremovelist=`$ECHO "$output_objdir/*"`
 	for p in $tempremovelist; do
 	  case $p in
-	    *.$objext)
+	    *.$objext | *.gcno)
 	       ;;
 	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
 	       if test "X$precious_files_regex" != "X"; then
-	         if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
-	         then
+		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+		 then
 		   continue
 		 fi
 	       fi
-	       removelist="$removelist $p"
+	       func_append removelist " $p"
 	       ;;
 	    *) ;;
 	  esac
 	done
-	if test -n "$removelist"; then
-	  $show "${rm}r $removelist"
-	  $run ${rm}r $removelist
-	fi
+	test -n "$removelist" && \
+	  func_show_eval "${RM}r \$removelist"
       fi
 
       # Now set the variables for building old libraries.
       if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
-	oldlibs="$oldlibs $output_objdir/$libname.$libext"
+	func_append oldlibs " $output_objdir/$libname.$libext"
 
 	# Transform .lo files to .o files.
-	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
       fi
 
       # Eliminate all temporary directories.
       #for path in $notinst_path; do
-      #	lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
-      #	deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
-      #	dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
+      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
+      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
+      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
       #done
 
       if test -n "$xrpath"; then
 	# If the user specified any rpath flags, then add them.
 	temp_xrpath=
 	for libdir in $xrpath; do
-	  temp_xrpath="$temp_xrpath -R$libdir"
+	  func_replace_sysroot "$libdir"
+	  func_append temp_xrpath " -R$func_replace_sysroot_result"
 	  case "$finalize_rpath " in
 	  *" $libdir "*) ;;
-	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  *) func_append finalize_rpath " $libdir" ;;
 	  esac
 	done
 	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
@@ -3509,7 +7589,7 @@
       for lib in $old_dlfiles; do
 	case " $dlprefiles $dlfiles " in
 	*" $lib "*) ;;
-	*) dlfiles="$dlfiles $lib" ;;
+	*) func_append dlfiles " $lib" ;;
 	esac
       done
 
@@ -3519,19 +7599,19 @@
       for lib in $old_dlprefiles; do
 	case "$dlprefiles " in
 	*" $lib "*) ;;
-	*) dlprefiles="$dlprefiles $lib" ;;
+	*) func_append dlprefiles " $lib" ;;
 	esac
       done
 
       if test "$build_libtool_libs" = yes; then
 	if test -n "$rpath"; then
 	  case $host in
-	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
 	    # these systems don't actually have a c library (as such)!
 	    ;;
 	  *-*-rhapsody* | *-*-darwin1.[012])
 	    # Rhapsody C library is in the System framework
-	    deplibs="$deplibs -framework System"
+	    func_append deplibs " System.ltframework"
 	    ;;
 	  *-*-netbsd*)
 	    # Don't link with libc until the a.out ld.so is fixed.
@@ -3545,10 +7625,10 @@
 	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
 	    # Compiler inserts libc in the correct place for threads to work
 	    ;;
- 	  *)
+	  *)
 	    # Add libc to deplibs on all other systems if necessary.
 	    if test "$build_libtool_need_lc" = "yes"; then
-	      deplibs="$deplibs -lc"
+	      func_append deplibs " -lc"
 	    fi
 	    ;;
 	  esac
@@ -3582,120 +7662,139 @@
 	  # limits. Maybe even breaks it.  We compile a program, linking it
 	  # against the deplibs as a proxy for the library.  Then we can check
 	  # whether they linked in statically or dynamically with ldd.
-	  $rm conftest.c
+	  $opt_dry_run || $RM conftest.c
 	  cat > conftest.c <<EOF
 	  int main() { return 0; }
 EOF
-	  $rm conftest
+	  $opt_dry_run || $RM conftest
 	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
 	    ldd_output=`ldd conftest`
 	    for i in $deplibs; do
-	      name=`expr $i : '-l\(.*\)'`
-	      # If $name is empty we are operating on a -L argument.
-              if test "$name" != "" && test "$name" != "0"; then
+	      case $i in
+	      -l*)
+		func_stripname -l '' "$i"
+		name=$func_stripname_result
 		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
 		  case " $predeps $postdeps " in
 		  *" $i "*)
-		    newdeplibs="$newdeplibs $i"
+		    func_append newdeplibs " $i"
 		    i=""
 		    ;;
 		  esac
-	        fi
+		fi
 		if test -n "$i" ; then
-		  libname=`eval \\$echo \"$libname_spec\"`
-		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
-		  set dummy $deplib_matches
-		  deplib_match=$2
+		  libname=`eval "\\$ECHO \"$libname_spec\""`
+		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+		  set dummy $deplib_matches; shift
+		  deplib_match=$1
 		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		    newdeplibs="$newdeplibs $i"
+		    func_append newdeplibs " $i"
 		  else
 		    droppeddeps=yes
-		    $echo
-		    $echo "*** Warning: dynamic linker does not accept needed library $i."
-		    $echo "*** I have the capability to make that library automatically link in when"
-		    $echo "*** you link to this library.  But I can only do this if you have a"
-		    $echo "*** shared version of the library, which I believe you do not have"
-		    $echo "*** because a test_compile did reveal that the linker did not use it for"
-		    $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+		    echo
+		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+		    echo "*** I have the capability to make that library automatically link in when"
+		    echo "*** you link to this library.  But I can only do this if you have a"
+		    echo "*** shared version of the library, which I believe you do not have"
+		    echo "*** because a test_compile did reveal that the linker did not use it for"
+		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
 		  fi
 		fi
-	      else
-		newdeplibs="$newdeplibs $i"
-	      fi
+		;;
+	      *)
+		func_append newdeplibs " $i"
+		;;
+	      esac
 	    done
 	  else
 	    # Error occurred in the first compile.  Let's try to salvage
 	    # the situation: Compile a separate program for each library.
 	    for i in $deplibs; do
-	      name=`expr $i : '-l\(.*\)'`
-	      # If $name is empty we are operating on a -L argument.
-              if test "$name" != "" && test "$name" != "0"; then
-		$rm conftest
+	      case $i in
+	      -l*)
+		func_stripname -l '' "$i"
+		name=$func_stripname_result
+		$opt_dry_run || $RM conftest
 		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
 		  ldd_output=`ldd conftest`
 		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
 		    case " $predeps $postdeps " in
 		    *" $i "*)
-		      newdeplibs="$newdeplibs $i"
+		      func_append newdeplibs " $i"
 		      i=""
 		      ;;
 		    esac
 		  fi
 		  if test -n "$i" ; then
-		    libname=`eval \\$echo \"$libname_spec\"`
-		    deplib_matches=`eval \\$echo \"$library_names_spec\"`
-		    set dummy $deplib_matches
-		    deplib_match=$2
+		    libname=`eval "\\$ECHO \"$libname_spec\""`
+		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+		    set dummy $deplib_matches; shift
+		    deplib_match=$1
 		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-		      newdeplibs="$newdeplibs $i"
+		      func_append newdeplibs " $i"
 		    else
 		      droppeddeps=yes
-		      $echo
-		      $echo "*** Warning: dynamic linker does not accept needed library $i."
-		      $echo "*** I have the capability to make that library automatically link in when"
-		      $echo "*** you link to this library.  But I can only do this if you have a"
-		      $echo "*** shared version of the library, which you do not appear to have"
-		      $echo "*** because a test_compile did reveal that the linker did not use this one"
-		      $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+		      echo
+		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+		      echo "*** I have the capability to make that library automatically link in when"
+		      echo "*** you link to this library.  But I can only do this if you have a"
+		      echo "*** shared version of the library, which you do not appear to have"
+		      echo "*** because a test_compile did reveal that the linker did not use this one"
+		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
 		    fi
 		  fi
 		else
 		  droppeddeps=yes
-		  $echo
-		  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
-		  $echo "*** make it link in!  You will probably need to install it or some"
-		  $echo "*** library that it depends on before this library will be fully"
-		  $echo "*** functional.  Installing it before continuing would be even better."
+		  echo
+		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
+		  echo "*** make it link in!  You will probably need to install it or some"
+		  echo "*** library that it depends on before this library will be fully"
+		  echo "*** functional.  Installing it before continuing would be even better."
 		fi
-	      else
-		newdeplibs="$newdeplibs $i"
-	      fi
+		;;
+	      *)
+		func_append newdeplibs " $i"
+		;;
+	      esac
 	    done
 	  fi
 	  ;;
 	file_magic*)
-	  set dummy $deplibs_check_method
-	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  set dummy $deplibs_check_method; shift
+	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
 	  for a_deplib in $deplibs; do
-	    name=`expr $a_deplib : '-l\(.*\)'`
-	    # If $name is empty we are operating on a -L argument.
-            if test "$name" != "" && test  "$name" != "0"; then
+	    case $a_deplib in
+	    -l*)
+	      func_stripname -l '' "$a_deplib"
+	      name=$func_stripname_result
 	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
 		case " $predeps $postdeps " in
 		*" $a_deplib "*)
-		  newdeplibs="$newdeplibs $a_deplib"
+		  func_append newdeplibs " $a_deplib"
 		  a_deplib=""
 		  ;;
 		esac
 	      fi
 	      if test -n "$a_deplib" ; then
-		libname=`eval \\$echo \"$libname_spec\"`
+		libname=`eval "\\$ECHO \"$libname_spec\""`
+		if test -n "$file_magic_glob"; then
+		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
+		else
+		  libnameglob=$libname
+		fi
+		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
 		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  if test "$want_nocaseglob" = yes; then
+		    shopt -s nocaseglob
+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+		    $nocaseglob
+		  else
+		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+		  fi
 		  for potent_lib in $potential_libs; do
 		      # Follow soft links.
-		      if ls -lLd "$potent_lib" 2>/dev/null \
-			 | grep " -> " >/dev/null; then
+		      if ls -lLd "$potent_lib" 2>/dev/null |
+			 $GREP " -> " >/dev/null; then
 			continue
 		      fi
 		      # The statement above tries to avoid entering an
@@ -3708,13 +7807,13 @@
 			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
 			case $potliblink in
 			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
-			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
 			esac
 		      done
-		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
-			 | ${SED} 10q \
-			 | $EGREP "$file_magic_regex" > /dev/null; then
-			newdeplibs="$newdeplibs $a_deplib"
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+			 $SED -e 10q |
+			 $EGREP "$file_magic_regex" > /dev/null; then
+			func_append newdeplibs " $a_deplib"
 			a_deplib=""
 			break 2
 		      fi
@@ -3723,50 +7822,52 @@
 	      fi
 	      if test -n "$a_deplib" ; then
 		droppeddeps=yes
-		$echo
-		$echo "*** Warning: linker path does not have real file for library $a_deplib."
-		$echo "*** I have the capability to make that library automatically link in when"
-		$echo "*** you link to this library.  But I can only do this if you have a"
-		$echo "*** shared version of the library, which you do not appear to have"
-		$echo "*** because I did check the linker path looking for a file starting"
+		echo
+		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
 		if test -z "$potlib" ; then
-		  $echo "*** with $libname but no candidates were found. (...for file magic test)"
+		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
 		else
-		  $echo "*** with $libname and none of the candidates passed a file format test"
-		  $echo "*** using a file magic. Last file checked: $potlib"
+		  $ECHO "*** with $libname and none of the candidates passed a file format test"
+		  $ECHO "*** using a file magic. Last file checked: $potlib"
 		fi
 	      fi
-	    else
+	      ;;
+	    *)
 	      # Add a -L argument.
-	      newdeplibs="$newdeplibs $a_deplib"
-	    fi
+	      func_append newdeplibs " $a_deplib"
+	      ;;
+	    esac
 	  done # Gone through all deplibs.
 	  ;;
 	match_pattern*)
-	  set dummy $deplibs_check_method
-	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  set dummy $deplibs_check_method; shift
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
 	  for a_deplib in $deplibs; do
-	    name=`expr $a_deplib : '-l\(.*\)'`
-	    # If $name is empty we are operating on a -L argument.
-	    if test -n "$name" && test "$name" != "0"; then
+	    case $a_deplib in
+	    -l*)
+	      func_stripname -l '' "$a_deplib"
+	      name=$func_stripname_result
 	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
 		case " $predeps $postdeps " in
 		*" $a_deplib "*)
-		  newdeplibs="$newdeplibs $a_deplib"
+		  func_append newdeplibs " $a_deplib"
 		  a_deplib=""
 		  ;;
 		esac
 	      fi
 	      if test -n "$a_deplib" ; then
-		libname=`eval \\$echo \"$libname_spec\"`
+		libname=`eval "\\$ECHO \"$libname_spec\""`
 		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
 		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
 		  for potent_lib in $potential_libs; do
 		    potlib="$potent_lib" # see symlink-check above in file_magic test
-		    if eval $echo \"$potent_lib\" 2>/dev/null \
-		        | ${SED} 10q \
-		        | $EGREP "$match_pattern_regex" > /dev/null; then
-		      newdeplibs="$newdeplibs $a_deplib"
+		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
+		       $EGREP "$match_pattern_regex" > /dev/null; then
+		      func_append newdeplibs " $a_deplib"
 		      a_deplib=""
 		      break 2
 		    fi
@@ -3775,46 +7876,48 @@
 	      fi
 	      if test -n "$a_deplib" ; then
 		droppeddeps=yes
-		$echo
-		$echo "*** Warning: linker path does not have real file for library $a_deplib."
-		$echo "*** I have the capability to make that library automatically link in when"
-		$echo "*** you link to this library.  But I can only do this if you have a"
-		$echo "*** shared version of the library, which you do not appear to have"
-		$echo "*** because I did check the linker path looking for a file starting"
+		echo
+		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+		echo "*** I have the capability to make that library automatically link in when"
+		echo "*** you link to this library.  But I can only do this if you have a"
+		echo "*** shared version of the library, which you do not appear to have"
+		echo "*** because I did check the linker path looking for a file starting"
 		if test -z "$potlib" ; then
-		  $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
 		else
-		  $echo "*** with $libname and none of the candidates passed a file format test"
-		  $echo "*** using a regex pattern. Last file checked: $potlib"
+		  $ECHO "*** with $libname and none of the candidates passed a file format test"
+		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
 		fi
 	      fi
-	    else
+	      ;;
+	    *)
 	      # Add a -L argument.
-	      newdeplibs="$newdeplibs $a_deplib"
-	    fi
+	      func_append newdeplibs " $a_deplib"
+	      ;;
+	    esac
 	  done # Gone through all deplibs.
 	  ;;
 	none | unknown | *)
 	  newdeplibs=""
-	  tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
-	    -e 's/ -[LR][^ ]*//g'`
+	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
 	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
 	    for i in $predeps $postdeps ; do
 	      # can't use Xsed below, because $i might contain '/'
-	      tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
 	    done
 	  fi
-	  if $echo "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' \
-	    | grep . >/dev/null; then
-	    $echo
+	  case $tmp_deplibs in
+	  *[!\	\ ]*)
+	    echo
 	    if test "X$deplibs_check_method" = "Xnone"; then
-	      $echo "*** Warning: inter-library dependencies are not supported in this platform."
+	      echo "*** Warning: inter-library dependencies are not supported in this platform."
 	    else
-	      $echo "*** Warning: inter-library dependencies are not known to be supported."
+	      echo "*** Warning: inter-library dependencies are not known to be supported."
 	    fi
-	    $echo "*** All declared inter-library dependencies are being dropped."
+	    echo "*** All declared inter-library dependencies are being dropped."
 	    droppeddeps=yes
-	  fi
+	    ;;
+	  esac
 	  ;;
 	esac
 	versuffix=$versuffix_save
@@ -3825,24 +7928,24 @@
 
 	case $host in
 	*-*-rhapsody* | *-*-darwin1.[012])
-	  # On Rhapsody replace the C library is the System framework
-	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	  # On Rhapsody replace the C library with the System framework
+	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
 	  ;;
 	esac
 
 	if test "$droppeddeps" = yes; then
 	  if test "$module" = yes; then
-	    $echo
-	    $echo "*** Warning: libtool could not satisfy all declared inter-library"
-	    $echo "*** dependencies of module $libname.  Therefore, libtool will create"
-	    $echo "*** a static module, that should work as long as the dlopening"
-	    $echo "*** application is linked with the -dlopen flag."
+	    echo
+	    echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
+	    echo "*** a static module, that should work as long as the dlopening"
+	    echo "*** application is linked with the -dlopen flag."
 	    if test -z "$global_symbol_pipe"; then
-	      $echo
-	      $echo "*** However, this would only work if libtool was able to extract symbol"
-	      $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
-	      $echo "*** not find such a program.  So, this module is probably useless."
-	      $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      echo
+	      echo "*** However, this would only work if libtool was able to extract symbol"
+	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      echo "*** not find such a program.  So, this module is probably useless."
+	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
 	    fi
 	    if test "$build_old_libs" = no; then
 	      oldlibs="$output_objdir/$libname.$libext"
@@ -3852,16 +7955,16 @@
 	      build_libtool_libs=no
 	    fi
 	  else
-	    $echo "*** The inter-library dependencies that have been dropped here will be"
-	    $echo "*** automatically added whenever a program is linked with this library"
-	    $echo "*** or is declared to -dlopen it."
+	    echo "*** The inter-library dependencies that have been dropped here will be"
+	    echo "*** automatically added whenever a program is linked with this library"
+	    echo "*** or is declared to -dlopen it."
 
 	    if test "$allow_undefined" = no; then
-	      $echo
-	      $echo "*** Since this library must not contain undefined symbols,"
-	      $echo "*** because either the platform does not support them or"
-	      $echo "*** it was explicitly requested with -no-undefined,"
-	      $echo "*** libtool will only create a static version of it."
+	      echo
+	      echo "*** Since this library must not contain undefined symbols,"
+	      echo "*** because either the platform does not support them or"
+	      echo "*** it was explicitly requested with -no-undefined,"
+	      echo "*** libtool will only create a static version of it."
 	      if test "$build_old_libs" = no; then
 		oldlibs="$output_objdir/$libname.$libext"
 		build_libtool_libs=module
@@ -3875,7 +7978,14 @@
 	# Done checking deplibs!
 	deplibs=$newdeplibs
       fi
-
+      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+      case $host in
+	*-*-darwin*)
+	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	  ;;
+      esac
 
       # move library search paths that coincide with paths to not yet
       # installed libraries to the beginning of the library search list
@@ -3886,7 +7996,7 @@
 	*)
 	  case " $deplibs " in
 	  *" -L$path/$objdir "*)
-	    new_libs="$new_libs -L$path/$objdir" ;;
+	    func_append new_libs " -L$path/$objdir" ;;
 	  esac
 	  ;;
 	esac
@@ -3896,15 +8006,14 @@
 	-L*)
 	  case " $new_libs " in
 	  *" $deplib "*) ;;
-	  *) new_libs="$new_libs $deplib" ;;
+	  *) func_append new_libs " $deplib" ;;
 	  esac
 	  ;;
-	*) new_libs="$new_libs $deplib" ;;
+	*) func_append new_libs " $deplib" ;;
 	esac
       done
       deplibs="$new_libs"
 
-
       # All the library-specific variables (install_libdir is set above).
       library_names=
       old_library=
@@ -3917,10 +8026,12 @@
 	  hardcode_libdirs=
 	  dep_rpath=
 	  rpath="$finalize_rpath"
-	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
 	  for libdir in $rpath; do
 	    if test -n "$hardcode_libdir_flag_spec"; then
 	      if test -n "$hardcode_libdir_separator"; then
+		func_replace_sysroot "$libdir"
+		libdir=$func_replace_sysroot_result
 		if test -z "$hardcode_libdirs"; then
 		  hardcode_libdirs="$libdir"
 		else
@@ -3929,18 +8040,18 @@
 		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
 		    ;;
 		  *)
-		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
 		    ;;
 		  esac
 		fi
 	      else
 		eval flag=\"$hardcode_libdir_flag_spec\"
-		dep_rpath="$dep_rpath $flag"
+		func_append dep_rpath " $flag"
 	      fi
 	    elif test -n "$runpath_var"; then
 	      case "$perm_rpath " in
 	      *" $libdir "*) ;;
-	      *) perm_rpath="$perm_rpath $libdir" ;;
+	      *) func_append perm_rpath " $libdir" ;;
 	      esac
 	    fi
 	  done
@@ -3949,10 +8060,7 @@
 	     test -n "$hardcode_libdirs"; then
 	    libdir="$hardcode_libdirs"
 	    if test -n "$hardcode_libdir_flag_spec_ld"; then
-	      case $archive_cmds in
-	      *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;;
-	      *)      eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;;
-	      esac
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
 	    else
 	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
 	    fi
@@ -3961,7 +8069,7 @@
 	    # We should set the runpath_var.
 	    rpath=
 	    for dir in $perm_rpath; do
-	      rpath="$rpath$dir:"
+	      func_append rpath "$dir:"
 	    done
 	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
 	  fi
@@ -3969,7 +8077,7 @@
 	fi
 
 	shlibpath="$finalize_shlibpath"
-	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
 	if test -n "$shlibpath"; then
 	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
 	fi
@@ -3978,8 +8086,9 @@
 	eval shared_ext=\"$shrext_cmds\"
 	eval library_names=\"$library_names_spec\"
 	set dummy $library_names
-	realname="$2"
-	shift; shift
+	shift
+	realname="$1"
+	shift
 
 	if test -n "$soname_spec"; then
 	  eval soname=\"$soname_spec\"
@@ -3994,83 +8103,166 @@
 	linknames=
 	for link
 	do
-	  linknames="$linknames $link"
+	  func_append linknames " $link"
 	done
 
 	# Use standard objects if they are pic
-	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	test "X$libobjs" = "X " && libobjs=
+
+	delfiles=
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+	  export_symbols="$output_objdir/$libname.uexp"
+	  func_append delfiles " $export_symbols"
+	fi
+
+	orig_export_symbols=
+	case $host_os in
+	cygwin* | mingw* | cegcc*)
+	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+	    # exporting using user supplied symfile
+	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+	      # and it's NOT already a .def file. Must figure out
+	      # which of the given symbols are data symbols and tag
+	      # them as such. So, trigger use of export_symbols_cmds.
+	      # export_symbols gets reassigned inside the "prepare
+	      # the list of exported symbols" if statement, so the
+	      # include_expsyms logic still works.
+	      orig_export_symbols="$export_symbols"
+	      export_symbols=
+	      always_export_symbols=yes
+	    fi
+	  fi
+	  ;;
+	esac
 
 	# Prepare the list of exported symbols
 	if test -z "$export_symbols"; then
 	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
-	    $show "generating symbol list for \`$libname.la'"
+	    func_verbose "generating symbol list for \`$libname.la'"
 	    export_symbols="$output_objdir/$libname.exp"
-	    $run $rm $export_symbols
+	    $opt_dry_run || $RM $export_symbols
 	    cmds=$export_symbols_cmds
 	    save_ifs="$IFS"; IFS='~'
-	    for cmd in $cmds; do
+	    for cmd1 in $cmds; do
 	      IFS="$save_ifs"
-	      eval cmd=\"$cmd\"
-	      if len=`expr "X$cmd" : ".*"` &&
-	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-	        $show "$cmd"
-	        $run eval "$cmd" || exit $?
-	        skipped_export=false
+	      # Take the normal branch if the nm_file_list_spec branch
+	      # doesn't work or if tool conversion is not needed.
+	      case $nm_file_list_spec~$to_tool_file_cmd in
+		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
+		  try_normal_branch=yes
+		  eval cmd=\"$cmd1\"
+		  func_len " $cmd"
+		  len=$func_len_result
+		  ;;
+		*)
+		  try_normal_branch=no
+		  ;;
+	      esac
+	      if test "$try_normal_branch" = yes \
+		 && { test "$len" -lt "$max_cmd_len" \
+		      || test "$max_cmd_len" -le -1; }
+	      then
+		func_show_eval "$cmd" 'exit $?'
+		skipped_export=false
+	      elif test -n "$nm_file_list_spec"; then
+		func_basename "$output"
+		output_la=$func_basename_result
+		save_libobjs=$libobjs
+		save_output=$output
+		output=${output_objdir}/${output_la}.nm
+		func_to_tool_file "$output"
+		libobjs=$nm_file_list_spec$func_to_tool_file_result
+		func_append delfiles " $output"
+		func_verbose "creating $NM input file list: $output"
+		for obj in $save_libobjs; do
+		  func_to_tool_file "$obj"
+		  $ECHO "$func_to_tool_file_result"
+		done > "$output"
+		eval cmd=\"$cmd1\"
+		func_show_eval "$cmd" 'exit $?'
+		output=$save_output
+		libobjs=$save_libobjs
+		skipped_export=false
 	      else
-	        # The command line is too long to execute in one step.
-	        $show "using reloadable object file for export list..."
-	        skipped_export=:
+		# The command line is too long to execute in one step.
+		func_verbose "using reloadable object file for export list..."
+		skipped_export=:
 		# Break out early, otherwise skipped_export may be
 		# set to false by a later but shorter cmd.
 		break
 	      fi
 	    done
 	    IFS="$save_ifs"
-	    if test -n "$export_symbols_regex"; then
-	      $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
-	      $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
-	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
+	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
 	    fi
 	  fi
 	fi
 
 	if test -n "$export_symbols" && test -n "$include_expsyms"; then
-	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+	  tmp_export_symbols="$export_symbols"
+	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+	fi
+
+	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+	  # The given exports_symbols file has to be filtered, so filter it.
+	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
+	  # 's' commands which not all seds can handle. GNU sed should be fine
+	  # though. Also, the filter scales superlinearly with the number of
+	  # global variables. join(1) would be nice here, but unfortunately
+	  # isn't a blessed tool.
+	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+	  export_symbols=$output_objdir/$libname.def
+	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
 	fi
 
 	tmp_deplibs=
 	for test_deplib in $deplibs; do
-		case " $convenience " in
-		*" $test_deplib "*) ;;
-		*)
-			tmp_deplibs="$tmp_deplibs $test_deplib"
-			;;
-		esac
+	  case " $convenience " in
+	  *" $test_deplib "*) ;;
+	  *)
+	    func_append tmp_deplibs " $test_deplib"
+	    ;;
+	  esac
 	done
 	deplibs="$tmp_deplibs"
 
 	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec" &&
+	    test "$compiler_needs_object" = yes &&
+	    test -z "$libobjs"; then
+	    # extract the archives, so we have objects to list.
+	    # TODO: could optimize this to just extract one archive.
+	    whole_archive_flag_spec=
+	  fi
 	  if test -n "$whole_archive_flag_spec"; then
 	    save_libobjs=$libobjs
 	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	    test "X$libobjs" = "X " && libobjs=
 	  else
 	    gentop="$output_objdir/${outputname}x"
-	    generated="$generated $gentop"
+	    func_append generated " $gentop"
 
 	    func_extract_archives $gentop $convenience
-	    libobjs="$libobjs $func_extract_archives_result"
+	    func_append libobjs " $func_extract_archives_result"
+	    test "X$libobjs" = "X " && libobjs=
 	  fi
 	fi
-	
+
 	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
 	  eval flag=\"$thread_safe_flag_spec\"
-	  linker_flags="$linker_flags $flag"
+	  func_append linker_flags " $flag"
 	fi
 
 	# Make a backup of the uninstalled library when relinking
-	if test "$mode" = relink; then
-	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+	if test "$opt_mode" = relink; then
+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
 	fi
 
 	# Do each of the archive commands.
@@ -4083,22 +8275,24 @@
 	    cmds=$module_cmds
 	  fi
 	else
-	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-	  eval test_cmds=\"$archive_expsym_cmds\"
-	  cmds=$archive_expsym_cmds
-	else
-	  eval test_cmds=\"$archive_cmds\"
-	  cmds=$archive_cmds
+	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	    eval test_cmds=\"$archive_expsym_cmds\"
+	    cmds=$archive_expsym_cmds
+	  else
+	    eval test_cmds=\"$archive_cmds\"
+	    cmds=$archive_cmds
 	  fi
 	fi
 
 	if test "X$skipped_export" != "X:" &&
-	   len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
-	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	   func_len " $test_cmds" &&
+	   len=$func_len_result &&
+	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
 	  :
 	else
-	  # The command line is too long to link in one step, link piecewise.
-	  $echo "creating reloadable object files..."
+	  # The command line is too long to link in one step, link piecewise
+	  # or, if using GNU ld and skipped_export is not :, use a linker
+	  # script.
 
 	  # Save the value of $output and $libobjs because we want to
 	  # use them later.  If we have whole_archive_flag_spec, we
@@ -4112,77 +8306,171 @@
 	    save_libobjs=$libobjs
 	  fi
 	  save_output=$output
-	  output_la=`$echo "X$output" | $Xsed -e "$basename"`
+	  func_basename "$output"
+	  output_la=$func_basename_result
 
 	  # Clear the reloadable object creation command queue and
 	  # initialize k to one.
 	  test_cmds=
 	  concat_cmds=
 	  objlist=
-	  delfiles=
 	  last_robj=
 	  k=1
-	  output=$output_objdir/$output_la-${k}.$objext
-	  # Loop over the list of objects to be linked.
-	  for obj in $save_libobjs
-	  do
-	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
-	    if test "X$objlist" = X ||
-	       { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
-		 test "$len" -le "$max_cmd_len"; }; then
-	      objlist="$objlist $obj"
-	    else
-	      # The command $test_cmds is almost too long, add a
-	      # command to the queue.
-	      if test "$k" -eq 1 ; then
-		# The first file doesn't have a previous command to add.
-		eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
-	      else
-		# All subsequent reloadable object files will link in
-		# the last one created.
-		eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
-	      fi
-	      last_robj=$output_objdir/$output_la-${k}.$objext
-	      k=`expr $k + 1`
-	      output=$output_objdir/$output_la-${k}.$objext
-	      objlist=$obj
-	      len=1
+
+	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
+	    output=${output_objdir}/${output_la}.lnkscript
+	    func_verbose "creating GNU ld script: $output"
+	    echo 'INPUT (' > $output
+	    for obj in $save_libobjs
+	    do
+	      func_to_tool_file "$obj"
+	      $ECHO "$func_to_tool_file_result" >> $output
+	    done
+	    echo ')' >> $output
+	    func_append delfiles " $output"
+	    func_to_tool_file "$output"
+	    output=$func_to_tool_file_result
+	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+	    output=${output_objdir}/${output_la}.lnk
+	    func_verbose "creating linker input file list: $output"
+	    : > $output
+	    set x $save_libobjs
+	    shift
+	    firstobj=
+	    if test "$compiler_needs_object" = yes; then
+	      firstobj="$1 "
+	      shift
 	    fi
-	  done
-	  # Handle the remaining objects by creating one last
-	  # reloadable object file.  All subsequent reloadable object
-	  # files will link in the last one created.
-	  test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-	  eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+	    for obj
+	    do
+	      func_to_tool_file "$obj"
+	      $ECHO "$func_to_tool_file_result" >> $output
+	    done
+	    func_append delfiles " $output"
+	    func_to_tool_file "$output"
+	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
+	  else
+	    if test -n "$save_libobjs"; then
+	      func_verbose "creating reloadable object files..."
+	      output=$output_objdir/$output_la-${k}.$objext
+	      eval test_cmds=\"$reload_cmds\"
+	      func_len " $test_cmds"
+	      len0=$func_len_result
+	      len=$len0
 
-	  if ${skipped_export-false}; then
-	    $show "generating symbol list for \`$libname.la'"
-	    export_symbols="$output_objdir/$libname.exp"
-	    $run $rm $export_symbols
-	    libobjs=$output
-	    # Append the command to create the export file.
-	    eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
-          fi
+	      # Loop over the list of objects to be linked.
+	      for obj in $save_libobjs
+	      do
+		func_len " $obj"
+		func_arith $len + $func_len_result
+		len=$func_arith_result
+		if test "X$objlist" = X ||
+		   test "$len" -lt "$max_cmd_len"; then
+		  func_append objlist " $obj"
+		else
+		  # The command $test_cmds is almost too long, add a
+		  # command to the queue.
+		  if test "$k" -eq 1 ; then
+		    # The first file doesn't have a previous command to add.
+		    reload_objs=$objlist
+		    eval concat_cmds=\"$reload_cmds\"
+		  else
+		    # All subsequent reloadable object files will link in
+		    # the last one created.
+		    reload_objs="$objlist $last_robj"
+		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
+		  fi
+		  last_robj=$output_objdir/$output_la-${k}.$objext
+		  func_arith $k + 1
+		  k=$func_arith_result
+		  output=$output_objdir/$output_la-${k}.$objext
+		  objlist=" $obj"
+		  func_len " $last_robj"
+		  func_arith $len0 + $func_len_result
+		  len=$func_arith_result
+		fi
+	      done
+	      # Handle the remaining objects by creating one last
+	      # reloadable object file.  All subsequent reloadable object
+	      # files will link in the last one created.
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      reload_objs="$objlist $last_robj"
+	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
+	      if test -n "$last_robj"; then
+	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+	      fi
+	      func_append delfiles " $output"
 
-	  # Set up a command to remove the reloadable object files
-	  # after they are used.
-	  i=0
-	  while test "$i" -lt "$k"
-	  do
-	    i=`expr $i + 1`
-	    delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
-	  done
+	    else
+	      output=
+	    fi
 
-	  $echo "creating a temporary reloadable object file: $output"
+	    if ${skipped_export-false}; then
+	      func_verbose "generating symbol list for \`$libname.la'"
+	      export_symbols="$output_objdir/$libname.exp"
+	      $opt_dry_run || $RM $export_symbols
+	      libobjs=$output
+	      # Append the command to create the export file.
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+	      if test -n "$last_robj"; then
+		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+	      fi
+	    fi
 
-	  # Loop through the commands generated above and execute them.
-	  save_ifs="$IFS"; IFS='~'
-	  for cmd in $concat_cmds; do
+	    test -n "$save_libobjs" &&
+	      func_verbose "creating a temporary reloadable object file: $output"
+
+	    # Loop through the commands generated above and execute them.
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $concat_cmds; do
+	      IFS="$save_ifs"
+	      $opt_silent || {
+		  func_quote_for_expand "$cmd"
+		  eval "func_echo $func_quote_for_expand_result"
+	      }
+	      $opt_dry_run || eval "$cmd" || {
+		lt_exit=$?
+
+		# Restore the uninstalled library and exit
+		if test "$opt_mode" = relink; then
+		  ( cd "$output_objdir" && \
+		    $RM "${realname}T" && \
+		    $MV "${realname}U" "$realname" )
+		fi
+
+		exit $lt_exit
+	      }
+	    done
 	    IFS="$save_ifs"
-	    $show "$cmd"
-	    $run eval "$cmd" || exit $?
-	  done
-	  IFS="$save_ifs"
+
+	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+
+          if ${skipped_export-false}; then
+	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	      tmp_export_symbols="$export_symbols"
+	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+	    fi
+
+	    if test -n "$orig_export_symbols"; then
+	      # The given exports_symbols file has to be filtered, so filter it.
+	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
+	      # 's' commands which not all seds can handle. GNU sed should be fine
+	      # though. Also, the filter scales superlinearly with the number of
+	      # global variables. join(1) would be nice here, but unfortunately
+	      # isn't a blessed tool.
+	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+	      export_symbols=$output_objdir/$libname.def
+	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+	    fi
+	  fi
 
 	  libobjs=$output
 	  # Restore the value of output.
@@ -4190,6 +8478,7 @@
 
 	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
 	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	    test "X$libobjs" = "X " && libobjs=
 	  fi
 	  # Expand the library linking commands again to reset the
 	  # value of $libobjs for piecewise linking.
@@ -4202,28 +8491,45 @@
 	      cmds=$module_cmds
 	    fi
 	  else
-	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-	    cmds=$archive_expsym_cmds
-	  else
-	    cmds=$archive_cmds
+	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	      cmds=$archive_expsym_cmds
+	    else
+	      cmds=$archive_cmds
 	    fi
 	  fi
-
-	  # Append the command to remove the reloadable object files
-	  # to the just-reset $cmds.
-	  eval cmds=\"\$cmds~\$rm $delfiles\"
 	fi
+
+	if test -n "$delfiles"; then
+	  # Append the command to remove temporary files to $cmds.
+	  eval cmds=\"\$cmds~\$RM $delfiles\"
+	fi
+
+	# Add any objects from preloaded convenience libraries
+	if test -n "$dlprefiles"; then
+	  gentop="$output_objdir/${outputname}x"
+	  func_append generated " $gentop"
+
+	  func_extract_archives $gentop $dlprefiles
+	  func_append libobjs " $func_extract_archives_result"
+	  test "X$libobjs" = "X " && libobjs=
+	fi
+
 	save_ifs="$IFS"; IFS='~'
 	for cmd in $cmds; do
 	  IFS="$save_ifs"
 	  eval cmd=\"$cmd\"
-	  $show "$cmd"
-	  $run eval "$cmd" || {
+	  $opt_silent || {
+	    func_quote_for_expand "$cmd"
+	    eval "func_echo $func_quote_for_expand_result"
+	  }
+	  $opt_dry_run || eval "$cmd" || {
 	    lt_exit=$?
 
 	    # Restore the uninstalled library and exit
-	    if test "$mode" = relink; then
-	      $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+	    if test "$opt_mode" = relink; then
+	      ( cd "$output_objdir" && \
+	        $RM "${realname}T" && \
+		$MV "${realname}U" "$realname" )
 	    fi
 
 	    exit $lt_exit
@@ -4232,13 +8538,12 @@
 	IFS="$save_ifs"
 
 	# Restore the uninstalled library and exit
-	if test "$mode" = relink; then
-	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+	if test "$opt_mode" = relink; then
+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
 
 	  if test -n "$convenience"; then
 	    if test -z "$whole_archive_flag_spec"; then
-	      $show "${rm}r $gentop"
-	      $run ${rm}r "$gentop"
+	      func_show_eval '${RM}r "$gentop"'
 	    fi
 	  fi
 
@@ -4248,8 +8553,7 @@
 	# Create links to the real library.
 	for linkname in $linknames; do
 	  if test "$realname" != "$linkname"; then
-	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
-	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
 	  fi
 	done
 
@@ -4262,39 +8566,35 @@
       ;;
 
     obj)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	func_warning "\`-dlopen' is ignored for objects"
+      fi
+
       case " $deplibs" in
       *\ -l* | *\ -L*)
-	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;;
+	func_warning "\`-l' and \`-L' are ignored for objects" ;;
       esac
 
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
-      fi
+      test -n "$rpath" && \
+	func_warning "\`-rpath' is ignored for objects"
 
-      if test -n "$rpath"; then
-	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
-      fi
+      test -n "$xrpath" && \
+	func_warning "\`-R' is ignored for objects"
 
-      if test -n "$xrpath"; then
-	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
-      fi
+      test -n "$vinfo" && \
+	func_warning "\`-version-info' is ignored for objects"
 
-      if test -n "$vinfo"; then
-	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
-      fi
-
-      if test -n "$release"; then
-	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
-      fi
+      test -n "$release" && \
+	func_warning "\`-release' is ignored for objects"
 
       case $output in
       *.lo)
-	if test -n "$objs$old_deplibs"; then
-	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
-	  exit $EXIT_FAILURE
-	fi
-	libobj="$output"
-	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+	test -n "$objs$old_deplibs" && \
+	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
+
+	libobj=$output
+	func_lo2o "$libobj"
+	obj=$func_lo2o_result
 	;;
       *)
 	libobj=
@@ -4303,7 +8603,7 @@
       esac
 
       # Delete the old objects.
-      $run $rm $obj $libobj
+      $opt_dry_run || $RM $obj $libobj
 
       # Objects from convenience libraries.  This assumes
       # single-version convenience libraries.  Whenever we create
@@ -4319,35 +8619,29 @@
       if test -n "$convenience"; then
 	if test -n "$whole_archive_flag_spec"; then
 	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
-	  reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
+	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
 	else
 	  gentop="$output_objdir/${obj}x"
-	  generated="$generated $gentop"
+	  func_append generated " $gentop"
 
 	  func_extract_archives $gentop $convenience
 	  reload_conv_objs="$reload_objs $func_extract_archives_result"
 	fi
       fi
 
+      # If we're not building shared, we need to use non_pic_objs
+      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
+
       # Create the old-style object.
-      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
 
       output="$obj"
-      cmds=$reload_cmds
-      save_ifs="$IFS"; IFS='~'
-      for cmd in $cmds; do
-	IFS="$save_ifs"
-	eval cmd=\"$cmd\"
-	$show "$cmd"
-	$run eval "$cmd" || exit $?
-      done
-      IFS="$save_ifs"
+      func_execute_cmds "$reload_cmds" 'exit $?'
 
       # Exit if we aren't doing a library object file.
       if test -z "$libobj"; then
 	if test -n "$gentop"; then
-	  $show "${rm}r $gentop"
-	  $run ${rm}r $gentop
+	  func_show_eval '${RM}r "$gentop"'
 	fi
 
 	exit $EXIT_SUCCESS
@@ -4355,14 +8649,13 @@
 
       if test "$build_libtool_libs" != yes; then
 	if test -n "$gentop"; then
-	  $show "${rm}r $gentop"
-	  $run ${rm}r $gentop
+	  func_show_eval '${RM}r "$gentop"'
 	fi
 
 	# Create an invalid libtool object if no PIC, so that we don't
 	# accidentally link it into a program.
 	# $show "echo timestamp > $libobj"
-	# $run eval "echo timestamp > $libobj" || exit $?
+	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
 	exit $EXIT_SUCCESS
       fi
 
@@ -4370,20 +8663,11 @@
 	# Only do commands if we really have different PIC objects.
 	reload_objs="$libobjs $reload_conv_objs"
 	output="$libobj"
-	cmds=$reload_cmds
-	save_ifs="$IFS"; IFS='~'
-	for cmd in $cmds; do
-	  IFS="$save_ifs"
-	  eval cmd=\"$cmd\"
-	  $show "$cmd"
-	  $run eval "$cmd" || exit $?
-	done
-	IFS="$save_ifs"
+	func_execute_cmds "$reload_cmds" 'exit $?'
       fi
 
       if test -n "$gentop"; then
-	$show "${rm}r $gentop"
-	$run ${rm}r $gentop
+	func_show_eval '${RM}r "$gentop"'
       fi
 
       exit $EXIT_SUCCESS
@@ -4391,39 +8675,45 @@
 
     prog)
       case $host in
-	*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+	*cygwin*) func_stripname '' '.exe' "$output"
+	          output=$func_stripname_result.exe;;
       esac
-      if test -n "$vinfo"; then
-	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
-      fi
+      test -n "$vinfo" && \
+	func_warning "\`-version-info' is ignored for programs"
 
-      if test -n "$release"; then
-	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
-      fi
+      test -n "$release" && \
+	func_warning "\`-release' is ignored for programs"
 
-      if test "$preload" = yes; then
-	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
-	   test "$dlopen_self_static" = unknown; then
-	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
-	fi
-      fi
+      test "$preload" = yes \
+        && test "$dlopen_support" = unknown \
+	&& test "$dlopen_self" = unknown \
+	&& test "$dlopen_self_static" = unknown && \
+	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
 
       case $host in
       *-*-rhapsody* | *-*-darwin1.[012])
 	# On Rhapsody replace the C library is the System framework
-	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
-	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
+	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
 	;;
       esac
 
       case $host in
-      *darwin*)
-        # Don't allow lazy linking, it breaks C++ global constructors
-        if test "$tagname" = CXX ; then
-        compile_command="$compile_command ${wl}-bind_at_load"
-        finalize_command="$finalize_command ${wl}-bind_at_load"
-        fi
-        ;;
+      *-*-darwin*)
+	# Don't allow lazy linking, it breaks C++ global constructors
+	# But is supposedly fixed on 10.4 or later (yay!).
+	if test "$tagname" = CXX ; then
+	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+	    10.[0123])
+	      func_append compile_command " ${wl}-bind_at_load"
+	      func_append finalize_command " ${wl}-bind_at_load"
+	    ;;
+	  esac
+	fi
+	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
+	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+	;;
       esac
 
 
@@ -4436,7 +8726,7 @@
 	*)
 	  case " $compile_deplibs " in
 	  *" -L$path/$objdir "*)
-	    new_libs="$new_libs -L$path/$objdir" ;;
+	    func_append new_libs " -L$path/$objdir" ;;
 	  esac
 	  ;;
 	esac
@@ -4446,17 +8736,17 @@
 	-L*)
 	  case " $new_libs " in
 	  *" $deplib "*) ;;
-	  *) new_libs="$new_libs $deplib" ;;
+	  *) func_append new_libs " $deplib" ;;
 	  esac
 	  ;;
-	*) new_libs="$new_libs $deplib" ;;
+	*) func_append new_libs " $deplib" ;;
 	esac
       done
       compile_deplibs="$new_libs"
 
 
-      compile_command="$compile_command $compile_deplibs"
-      finalize_command="$finalize_command $finalize_deplibs"
+      func_append compile_command " $compile_deplibs"
+      func_append finalize_command " $finalize_deplibs"
 
       if test -n "$rpath$xrpath"; then
 	# If the user specified any rpath flags, then add them.
@@ -4464,7 +8754,7 @@
 	  # This is the magic to use -rpath.
 	  case "$finalize_rpath " in
 	  *" $libdir "*) ;;
-	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  *) func_append finalize_rpath " $libdir" ;;
 	  esac
 	done
       fi
@@ -4483,30 +8773,32 @@
 	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
 		;;
 	      *)
-		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
 		;;
 	      esac
 	    fi
 	  else
 	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath="$rpath $flag"
+	    func_append rpath " $flag"
 	  fi
 	elif test -n "$runpath_var"; then
 	  case "$perm_rpath " in
 	  *" $libdir "*) ;;
-	  *) perm_rpath="$perm_rpath $libdir" ;;
+	  *) func_append perm_rpath " $libdir" ;;
 	  esac
 	fi
 	case $host in
-	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
-	  testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
 	  case :$dllsearchpath: in
 	  *":$libdir:"*) ;;
-	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  ::) dllsearchpath=$libdir;;
+	  *) func_append dllsearchpath ":$libdir";;
 	  esac
 	  case :$dllsearchpath: in
 	  *":$testbindir:"*) ;;
-	  *) dllsearchpath="$dllsearchpath:$testbindir";;
+	  ::) dllsearchpath=$testbindir;;
+	  *) func_append dllsearchpath ":$testbindir";;
 	  esac
 	  ;;
 	esac
@@ -4532,18 +8824,18 @@
 	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
 		;;
 	      *)
-		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
 		;;
 	      esac
 	    fi
 	  else
 	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    rpath="$rpath $flag"
+	    func_append rpath " $flag"
 	  fi
 	elif test -n "$runpath_var"; then
 	  case "$finalize_perm_rpath " in
 	  *" $libdir "*) ;;
-	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+	  *) func_append finalize_perm_rpath " $libdir" ;;
 	  esac
 	fi
       done
@@ -4557,281 +8849,57 @@
 
       if test -n "$libobjs" && test "$build_old_libs" = yes; then
 	# Transform all the library objects into standard objects.
-	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
       fi
 
-      dlsyms=
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-	if test -n "$NM" && test -n "$global_symbol_pipe"; then
-	  dlsyms="${outputname}S.c"
-	else
-	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
-	fi
+      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
+
+      # template prelinking step
+      if test -n "$prelink_cmds"; then
+	func_execute_cmds "$prelink_cmds" 'exit $?'
       fi
 
-      if test -n "$dlsyms"; then
-	case $dlsyms in
-	"") ;;
-	*.c)
-	  # Discover the nlist of each of the dlfiles.
-	  nlist="$output_objdir/${outputname}.nm"
-
-	  $show "$rm $nlist ${nlist}S ${nlist}T"
-	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
-
-	  # Parse the name list into a source file.
-	  $show "creating $output_objdir/$dlsyms"
-
-	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
-/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
-/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
-
-#ifdef __cplusplus
-extern \"C\" {
-#endif
-
-/* Prevent the only kind of declaration conflicts we can make. */
-#define lt_preloaded_symbols some_other_symbol
-
-/* External symbol declarations for the compiler. */\
-"
-
-	  if test "$dlself" = yes; then
-	    $show "generating symbol list for \`$output'"
-
-	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
-
-	    # Add our own program objects to the symbol list.
-	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-	    for arg in $progfiles; do
-	      $show "extracting global C symbols from \`$arg'"
-	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
-	    done
-
-	    if test -n "$exclude_expsyms"; then
-	      $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
-	      $run eval '$mv "$nlist"T "$nlist"'
-	    fi
-
-	    if test -n "$export_symbols_regex"; then
-	      $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
-	      $run eval '$mv "$nlist"T "$nlist"'
-	    fi
-
-	    # Prepare the list of exported symbols
-	    if test -z "$export_symbols"; then
-	      export_symbols="$output_objdir/$outputname.exp"
-	      $run $rm $export_symbols
-	      $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
-              case $host in
-              *cygwin* | *mingw* )
-	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-		$run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
-                ;;
-              esac
-	    else
-	      $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
-	      $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
-	      $run eval 'mv "$nlist"T "$nlist"'
-              case $host in
-              *cygwin* | *mingw* )
-	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-		$run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
-                ;;
-              esac
-	    fi
-	  fi
-
-	  for arg in $dlprefiles; do
-	    $show "extracting global C symbols from \`$arg'"
-	    name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
-	    $run eval '$echo ": $name " >> "$nlist"'
-	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
-	  done
-
-	  if test -z "$run"; then
-	    # Make sure we have at least an empty file.
-	    test -f "$nlist" || : > "$nlist"
-
-	    if test -n "$exclude_expsyms"; then
-	      $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
-	      $mv "$nlist"T "$nlist"
-	    fi
-
-	    # Try sorting and uniquifying the output.
-	    if grep -v "^: " < "$nlist" |
-		if sort -k 3 </dev/null >/dev/null 2>&1; then
-		  sort -k 3
-		else
-		  sort +2
-		fi |
-		uniq > "$nlist"S; then
-	      :
-	    else
-	      grep -v "^: " < "$nlist" > "$nlist"S
-	    fi
-
-	    if test -f "$nlist"S; then
-	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
-	    else
-	      $echo '/* NONE */' >> "$output_objdir/$dlsyms"
-	    fi
-
-	    $echo >> "$output_objdir/$dlsyms" "\
-
-#undef lt_preloaded_symbols
-
-#if defined (__STDC__) && __STDC__
-# define lt_ptr void *
-#else
-# define lt_ptr char *
-# define const
-#endif
-
-/* The mapping between symbol names and symbols. */
-"
-
-	    case $host in
-	    *cygwin* | *mingw* )
-	  $echo >> "$output_objdir/$dlsyms" "\
-/* DATA imports from DLLs on WIN32 can't be const, because
-   runtime relocations are performed -- see ld's documentation
-   on pseudo-relocs */
-struct {
-"
-	      ;;
-	    * )
-	  $echo >> "$output_objdir/$dlsyms" "\
-const struct {
-"
-	      ;;
-	    esac
-
-
-	  $echo >> "$output_objdir/$dlsyms" "\
-  const char *name;
-  lt_ptr address;
-}
-lt_preloaded_symbols[] =
-{\
-"
-
-	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
-
-	    $echo >> "$output_objdir/$dlsyms" "\
-  {0, (lt_ptr) 0}
-};
-
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt_preloaded_symbols;
-}
-#endif
-
-#ifdef __cplusplus
-}
-#endif\
-"
-	  fi
-
-	  pic_flag_for_symtable=
-	  case $host in
-	  # compiling the symbol table file with pic_flag works around
-	  # a FreeBSD bug that causes programs to crash when -lm is
-	  # linked before any other PIC object.  But we must not use
-	  # pic_flag when linking with -static.  The problem exists in
-	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
-	    case "$compile_command " in
-	    *" -static "*) ;;
-	    *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
-	    esac;;
-	  *-*-hpux*)
-	    case "$compile_command " in
-	    *" -static "*) ;;
-	    *) pic_flag_for_symtable=" $pic_flag";;
-	    esac
-	  esac
-
-	  # Now compile the dynamic symbol file.
-	  $show "(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
-	  $run eval '(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
-
-	  # Clean up the generated files.
-	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
-	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
-
-	  # Transform the symbol file into the correct name.
-          case $host in
-          *cygwin* | *mingw* )
-            if test -f "$output_objdir/${outputname}.def" ; then
-              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
-              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
-            else
-              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
-              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
-             fi
-            ;;
-          * )
-            compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
-            finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
-            ;;
-          esac
-	  ;;
-	*)
-	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
-	  exit $EXIT_FAILURE
-	  ;;
-	esac
-      else
-	# We keep going just in case the user didn't refer to
-	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
-	# really was required.
-
-	# Nullify the symbol file.
-	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
-	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
-      fi
-
-      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+      wrappers_required=yes
+      case $host in
+      *cegcc* | *mingw32ce*)
+        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
+        wrappers_required=no
+        ;;
+      *cygwin* | *mingw* )
+        if test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      *)
+        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      esac
+      if test "$wrappers_required" = no; then
 	# Replace the output file specification.
-	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
+	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
 	link_command="$compile_command$compile_rpath"
 
 	# We have no uninstalled library dependencies, so finalize right now.
-	$show "$link_command"
-	$run eval "$link_command"
-	exit_status=$?
+	exit_status=0
+	func_show_eval "$link_command" 'exit_status=$?'
+
+	if test -n "$postlink_cmds"; then
+	  func_to_tool_file "$output"
+	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	  func_execute_cmds "$postlink_cmds" 'exit $?'
+	fi
 
 	# Delete the generated files.
-	if test -n "$dlsyms"; then
-	  $show "$rm $output_objdir/${outputname}S.${objext}"
-	  $run $rm "$output_objdir/${outputname}S.${objext}"
+	if test -f "$output_objdir/${outputname}S.${objext}"; then
+	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
 	fi
 
 	exit $exit_status
       fi
 
-      if test -n "$shlibpath_var"; then
-	# We should set the shlibpath_var
-	rpath=
-	for dir in $temp_rpath; do
-	  case $dir in
-	  [\\/]* | [A-Za-z]:[\\/]*)
-	    # Absolute path.
-	    rpath="$rpath$dir:"
-	    ;;
-	  *)
-	    # Relative path: add a thisdir entry.
-	    rpath="$rpath\$thisdir/$dir:"
-	    ;;
-	  esac
-	done
-	temp_rpath="$rpath"
-      fi
-
       if test -n "$compile_shlibpath$finalize_shlibpath"; then
 	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
       fi
@@ -4846,7 +8914,7 @@
 	  # We should set the runpath_var.
 	  rpath=
 	  for dir in $perm_rpath; do
-	    rpath="$rpath$dir:"
+	    func_append rpath "$dir:"
 	  done
 	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
 	fi
@@ -4854,7 +8922,7 @@
 	  # We should set the runpath_var.
 	  rpath=
 	  for dir in $finalize_perm_rpath; do
-	    rpath="$rpath$dir:"
+	    func_append rpath "$dir:"
 	  done
 	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
 	fi
@@ -4864,12 +8932,18 @@
 	# We don't need to create a wrapper script.
 	link_command="$compile_var$compile_command$compile_rpath"
 	# Replace the output file specification.
-	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
 	# Delete the old output file.
-	$run $rm $output
+	$opt_dry_run || $RM $output
 	# Link the executable and exit
-	$show "$link_command"
-	$run eval "$link_command" || exit $?
+	func_show_eval "$link_command" 'exit $?'
+
+	if test -n "$postlink_cmds"; then
+	  func_to_tool_file "$output"
+	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	  func_execute_cmds "$postlink_cmds" 'exit $?'
+	fi
+
 	exit $EXIT_SUCCESS
       fi
 
@@ -4878,13 +8952,13 @@
 	link_command="$compile_var$compile_command$compile_rpath"
 	relink_command="$finalize_var$finalize_command$finalize_rpath"
 
-	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
-	$echo "$modename: \`$output' will be relinked during installation" 1>&2
+	func_warning "this platform does not like uninstalled shared libraries"
+	func_warning "\`$output' will be relinked during installation"
       else
 	if test "$fast_install" != no; then
 	  link_command="$finalize_var$compile_command$finalize_rpath"
 	  if test "$fast_install" = yes; then
-	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
+	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
 	  else
 	    # fast_install is set to needless
 	    relink_command=
@@ -4896,608 +8970,98 @@
       fi
 
       # Replace the output file specification.
-      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
 
       # Delete the old output files.
-      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
 
-      $show "$link_command"
-      $run eval "$link_command" || exit $?
+      func_show_eval "$link_command" 'exit $?'
+
+      if test -n "$postlink_cmds"; then
+	func_to_tool_file "$output_objdir/$outputname"
+	postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+	func_execute_cmds "$postlink_cmds" 'exit $?'
+      fi
 
       # Now create the wrapper script.
-      $show "creating $output"
+      func_verbose "creating $output"
 
       # Quote the relink command for shipping.
       if test -n "$relink_command"; then
 	# Preserve any variables that may affect compiler behavior
 	for var in $variables_saved_for_relink; do
 	  if eval test -z \"\${$var+set}\"; then
-	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
 	  elif eval var_value=\$$var; test -z "$var_value"; then
 	    relink_command="$var=; export $var; $relink_command"
 	  else
-	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
-	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	    func_quote_for_eval "$var_value"
+	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
 	  fi
 	done
 	relink_command="(cd `pwd`; $relink_command)"
-	relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
+	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
       fi
 
-      # Quote $echo for shipping.
-      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
-	case $progpath in
-	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
-	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
-	esac
-	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
-      else
-	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
-      fi
-
-      # Only actually do things if our run command is non-null.
-      if test -z "$run"; then
+      # Only actually do things if not in dry run mode.
+      $opt_dry_run || {
 	# win32 will think the script is a binary if it has
 	# a .exe suffix, so we strip it off here.
 	case $output in
-	  *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+	  *.exe) func_stripname '' '.exe' "$output"
+	         output=$func_stripname_result ;;
 	esac
 	# test for cygwin because mv fails w/o .exe extensions
 	case $host in
 	  *cygwin*)
 	    exeext=.exe
-	    outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+	    func_stripname '' '.exe' "$outputname"
+	    outputname=$func_stripname_result ;;
 	  *) exeext= ;;
 	esac
 	case $host in
 	  *cygwin* | *mingw* )
-            output_name=`basename $output`
-            output_path=`dirname $output`
-            cwrappersource="$output_path/$objdir/lt-$output_name.c"
-            cwrapper="$output_path/$output_name.exe"
-            $rm $cwrappersource $cwrapper
-            trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+	    func_dirname_and_basename "$output" "" "."
+	    output_name=$func_basename_result
+	    output_path=$func_dirname_result
+	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
+	    cwrapper="$output_path/$output_name.exe"
+	    $RM $cwrappersource $cwrapper
+	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
 
-	    cat > $cwrappersource <<EOF
+	    func_emit_cwrapperexe_src > $cwrappersource
 
-/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
-   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+	    # The wrapper executable is built using the $host compiler,
+	    # because it contains $host paths and files. If cross-
+	    # compiling, it, like the target executable, must be
+	    # executed on the $host or under an emulation environment.
+	    $opt_dry_run || {
+	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+	      $STRIP $cwrapper
+	    }
 
-   The $output program cannot be directly executed until all the libtool
-   libraries that it depends on are installed.
-
-   This wrapper executable should never be moved out of the build directory.
-   If it is, it will not operate correctly.
-
-   Currently, it simply execs the wrapper *script* "/bin/sh $output",
-   but could eventually absorb all of the scripts functionality and
-   exec $objdir/$outputname directly.
-*/
-EOF
-	    cat >> $cwrappersource<<"EOF"
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <malloc.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <string.h>
-#include <ctype.h>
-#include <sys/stat.h>
-
-#if defined(PATH_MAX)
-# define LT_PATHMAX PATH_MAX
-#elif defined(MAXPATHLEN)
-# define LT_PATHMAX MAXPATHLEN
-#else
-# define LT_PATHMAX 1024
-#endif
-
-#ifndef DIR_SEPARATOR
-# define DIR_SEPARATOR '/'
-# define PATH_SEPARATOR ':'
-#endif
-
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
-  defined (__OS2__)
-# define HAVE_DOS_BASED_FILE_SYSTEM
-# ifndef DIR_SEPARATOR_2
-#  define DIR_SEPARATOR_2 '\\'
-# endif
-# ifndef PATH_SEPARATOR_2
-#  define PATH_SEPARATOR_2 ';'
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR_2
-# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
-#else /* DIR_SEPARATOR_2 */
-# define IS_DIR_SEPARATOR(ch) \
-        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
-#endif /* DIR_SEPARATOR_2 */
-
-#ifndef PATH_SEPARATOR_2
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
-#else /* PATH_SEPARATOR_2 */
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
-#endif /* PATH_SEPARATOR_2 */
-
-#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
-#define XFREE(stale) do { \
-  if (stale) { free ((void *) stale); stale = 0; } \
-} while (0)
-
-/* -DDEBUG is fairly common in CFLAGS.  */
-#undef DEBUG
-#if defined DEBUGWRAPPER
-# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
-#else
-# define DEBUG(format, ...)
-#endif
-
-const char *program_name = NULL;
-
-void * xmalloc (size_t num);
-char * xstrdup (const char *string);
-const char * base_name (const char *name);
-char * find_executable(const char *wrapper);
-int    check_executable(const char *path);
-char * strendzap(char *str, const char *pat);
-void lt_fatal (const char *message, ...);
-
-int
-main (int argc, char *argv[])
-{
-  char **newargz;
-  int i;
-
-  program_name = (char *) xstrdup (base_name (argv[0]));
-  DEBUG("(main) argv[0]      : %s\n",argv[0]);
-  DEBUG("(main) program_name : %s\n",program_name);
-  newargz = XMALLOC(char *, argc+2);
-EOF
-
-            cat >> $cwrappersource <<EOF
-  newargz[0] = (char *) xstrdup("$SHELL");
-EOF
-
-            cat >> $cwrappersource <<"EOF"
-  newargz[1] = find_executable(argv[0]);
-  if (newargz[1] == NULL)
-    lt_fatal("Couldn't find %s", argv[0]);
-  DEBUG("(main) found exe at : %s\n",newargz[1]);
-  /* we know the script has the same name, without the .exe */
-  /* so make sure newargz[1] doesn't end in .exe */
-  strendzap(newargz[1],".exe");
-  for (i = 1; i < argc; i++)
-    newargz[i+1] = xstrdup(argv[i]);
-  newargz[argc+1] = NULL;
-
-  for (i=0; i<argc+1; i++)
-  {
-    DEBUG("(main) newargz[%d]   : %s\n",i,newargz[i]);
-    ;
-  }
-
-EOF
-
-            case $host_os in
-              mingw*)
-                cat >> $cwrappersource <<EOF
-  execv("$SHELL",(char const **)newargz);
-EOF
-              ;;
-              *)
-                cat >> $cwrappersource <<EOF
-  execv("$SHELL",newargz);
-EOF
-              ;;
-            esac
-
-            cat >> $cwrappersource <<"EOF"
-  return 127;
-}
-
-void *
-xmalloc (size_t num)
-{
-  void * p = (void *) malloc (num);
-  if (!p)
-    lt_fatal ("Memory exhausted");
-
-  return p;
-}
-
-char *
-xstrdup (const char *string)
-{
-  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
-;
-}
-
-const char *
-base_name (const char *name)
-{
-  const char *base;
-
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  /* Skip over the disk name in MSDOS pathnames. */
-  if (isalpha ((unsigned char)name[0]) && name[1] == ':')
-    name += 2;
-#endif
-
-  for (base = name; *name; name++)
-    if (IS_DIR_SEPARATOR (*name))
-      base = name + 1;
-  return base;
-}
-
-int
-check_executable(const char * path)
-{
-  struct stat st;
-
-  DEBUG("(check_executable)  : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
-  if ((!path) || (!*path))
-    return 0;
-
-  if ((stat (path, &st) >= 0) &&
-      (
-        /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
-#if defined (S_IXOTH)
-       ((st.st_mode & S_IXOTH) == S_IXOTH) ||
-#endif
-#if defined (S_IXGRP)
-       ((st.st_mode & S_IXGRP) == S_IXGRP) ||
-#endif
-       ((st.st_mode & S_IXUSR) == S_IXUSR))
-      )
-    return 1;
-  else
-    return 0;
-}
-
-/* Searches for the full path of the wrapper.  Returns
-   newly allocated full path name if found, NULL otherwise */
-char *
-find_executable (const char* wrapper)
-{
-  int has_slash = 0;
-  const char* p;
-  const char* p_next;
-  /* static buffer for getcwd */
-  char tmp[LT_PATHMAX + 1];
-  int tmp_len;
-  char* concat_name;
-
-  DEBUG("(find_executable)  : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
-
-  if ((wrapper == NULL) || (*wrapper == '\0'))
-    return NULL;
-
-  /* Absolute path? */
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
-  {
-    concat_name = xstrdup (wrapper);
-    if (check_executable(concat_name))
-      return concat_name;
-    XFREE(concat_name);
-  }
-  else
-  {
-#endif
-    if (IS_DIR_SEPARATOR (wrapper[0]))
-    {
-      concat_name = xstrdup (wrapper);
-      if (check_executable(concat_name))
-        return concat_name;
-      XFREE(concat_name);
-    }
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  }
-#endif
-
-  for (p = wrapper; *p; p++)
-    if (*p == '/')
-    {
-      has_slash = 1;
-      break;
-    }
-  if (!has_slash)
-  {
-    /* no slashes; search PATH */
-    const char* path = getenv ("PATH");
-    if (path != NULL)
-    {
-      for (p = path; *p; p = p_next)
-      {
-        const char* q;
-        size_t p_len;
-        for (q = p; *q; q++)
-          if (IS_PATH_SEPARATOR(*q))
-            break;
-        p_len = q - p;
-        p_next = (*q == '\0' ? q : q + 1);
-        if (p_len == 0)
-        {
-          /* empty path: current directory */
-          if (getcwd (tmp, LT_PATHMAX) == NULL)
-            lt_fatal ("getcwd failed");
-          tmp_len = strlen(tmp);
-          concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
-          memcpy (concat_name, tmp, tmp_len);
-          concat_name[tmp_len] = '/';
-          strcpy (concat_name + tmp_len + 1, wrapper);
-        }
-        else
-        {
-          concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
-          memcpy (concat_name, p, p_len);
-          concat_name[p_len] = '/';
-          strcpy (concat_name + p_len + 1, wrapper);
-        }
-        if (check_executable(concat_name))
-          return concat_name;
-        XFREE(concat_name);
-      }
-    }
-    /* not found in PATH; assume curdir */
-  }
-  /* Relative path | not found in path: prepend cwd */
-  if (getcwd (tmp, LT_PATHMAX) == NULL)
-    lt_fatal ("getcwd failed");
-  tmp_len = strlen(tmp);
-  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
-  memcpy (concat_name, tmp, tmp_len);
-  concat_name[tmp_len] = '/';
-  strcpy (concat_name + tmp_len + 1, wrapper);
-
-  if (check_executable(concat_name))
-    return concat_name;
-  XFREE(concat_name);
-  return NULL;
-}
-
-char *
-strendzap(char *str, const char *pat)
-{
-  size_t len, patlen;
-
-  assert(str != NULL);
-  assert(pat != NULL);
-
-  len = strlen(str);
-  patlen = strlen(pat);
-
-  if (patlen <= len)
-  {
-    str += len - patlen;
-    if (strcmp(str, pat) == 0)
-      *str = '\0';
-  }
-  return str;
-}
-
-static void
-lt_error_core (int exit_status, const char * mode,
-          const char * message, va_list ap)
-{
-  fprintf (stderr, "%s: %s: ", program_name, mode);
-  vfprintf (stderr, message, ap);
-  fprintf (stderr, ".\n");
-
-  if (exit_status >= 0)
-    exit (exit_status);
-}
-
-void
-lt_fatal (const char *message, ...)
-{
-  va_list ap;
-  va_start (ap, message);
-  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
-  va_end (ap);
-}
-EOF
-          # we should really use a build-platform specific compiler
-          # here, but OTOH, the wrappers (shell script and this C one)
-          # are only useful if you want to execute the "real" binary.
-          # Since the "real" binary is built for $host, then this
-          # wrapper might as well be built for $host, too.
-          $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
-          ;;
-        esac
-        $rm $output
-        trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
-
-	$echo > $output "\
-#! $SHELL
-
-# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
-#
-# The $output program cannot be directly executed until all the libtool
-# libraries that it depends on are installed.
-#
-# This wrapper script should never be moved out of the build directory.
-# If it is, it will not operate correctly.
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed='${SED} -e 1s/^X//'
-sed_quote_subst='$sed_quote_subst'
-
-# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
-if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '\${1+\"\$@\"}'='\"\$@\"'
-  setopt NO_GLOB_SUBST
-else
-  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
-fi
-BIN_SH=xpg4; export BIN_SH # for Tru64
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-relink_command=\"$relink_command\"
-
-# This environment variable determines our operation mode.
-if test \"\$libtool_install_magic\" = \"$magic\"; then
-  # install mode needs the following variable:
-  notinst_deplibs='$notinst_deplibs'
-else
-  # When we are sourced in execute mode, \$file and \$echo are already set.
-  if test \"\$libtool_execute_magic\" != \"$magic\"; then
-    echo=\"$qecho\"
-    file=\"\$0\"
-    # Make sure echo works.
-    if test \"X\$1\" = X--no-reexec; then
-      # Discard the --no-reexec flag, and continue.
-      shift
-    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
-      # Yippee, \$echo works!
-      :
-    else
-      # Restart under the correct shell, and then maybe \$echo will work.
-      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
-    fi
-  fi\
-"
-	$echo >> $output "\
-
-  # Find the directory that this script lives in.
-  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
-  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
-
-  # Follow symbolic links until we get to the real thisdir.
-  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
-  while test -n \"\$file\"; do
-    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
-
-    # If there was a directory component, then change thisdir.
-    if test \"x\$destdir\" != \"x\$file\"; then
-      case \"\$destdir\" in
-      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
-      *) thisdir=\"\$thisdir/\$destdir\" ;;
-      esac
-    fi
-
-    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
-    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
-  done
-
-  # Try to get the absolute directory name.
-  absdir=\`cd \"\$thisdir\" && pwd\`
-  test -n \"\$absdir\" && thisdir=\"\$absdir\"
-"
-
-	if test "$fast_install" = yes; then
-	  $echo >> $output "\
-  program=lt-'$outputname'$exeext
-  progdir=\"\$thisdir/$objdir\"
-
-  if test ! -f \"\$progdir/\$program\" || \\
-     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
-       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
-
-    file=\"\$\$-\$program\"
-
-    if test ! -d \"\$progdir\"; then
-      $mkdir \"\$progdir\"
-    else
-      $rm \"\$progdir/\$file\"
-    fi"
-
-	  $echo >> $output "\
-
-    # relink executable if necessary
-    if test -n \"\$relink_command\"; then
-      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
-      else
-	$echo \"\$relink_command_output\" >&2
-	$rm \"\$progdir/\$file\"
-	exit $EXIT_FAILURE
-      fi
-    fi
-
-    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
-    { $rm \"\$progdir/\$program\";
-      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
-    $rm \"\$progdir/\$file\"
-  fi"
-	else
-	  $echo >> $output "\
-  program='$outputname'
-  progdir=\"\$thisdir/$objdir\"
-"
-	fi
-
-	$echo >> $output "\
-
-  if test -f \"\$progdir/\$program\"; then"
-
-	# Export our shlibpath_var if we have one.
-	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-	  $echo >> $output "\
-    # Add our own library path to $shlibpath_var
-    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
-
-    # Some systems cannot cope with colon-terminated $shlibpath_var
-    # The second colon is a workaround for a bug in BeOS R4 sed
-    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
-
-    export $shlibpath_var
-"
-	fi
-
-	# fixup the dll searchpath if we need to.
-	if test -n "$dllsearchpath"; then
-	  $echo >> $output "\
-    # Add the dll search path components to the executable PATH
-    PATH=$dllsearchpath:\$PATH
-"
-	fi
-
-	$echo >> $output "\
-    if test \"\$libtool_execute_magic\" != \"$magic\"; then
-      # Run the actual program with our arguments.
-"
-	case $host in
-	# Backslashes separate directories on plain windows
-	*-*-mingw | *-*-os2*)
-	  $echo >> $output "\
-      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-"
+	    # Now, create the wrapper script for func_source use:
+	    func_ltwrapper_scriptname $cwrapper
+	    $RM $func_ltwrapper_scriptname_result
+	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+	    $opt_dry_run || {
+	      # note: this script will not be executed, so do not chmod.
+	      if test "x$build" = "x$host" ; then
+		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+	      else
+		func_emit_wrapper no > $func_ltwrapper_scriptname_result
+	      fi
+	    }
 	  ;;
+	  * )
+	    $RM $output
+	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
 
-	*)
-	  $echo >> $output "\
-      exec \"\$progdir/\$program\" \${1+\"\$@\"}
-"
+	    func_emit_wrapper no > $output
+	    chmod +x $output
 	  ;;
 	esac
-	$echo >> $output "\
-      \$echo \"\$0: cannot exec \$program \$*\"
-      exit $EXIT_FAILURE
-    fi
-  else
-    # The program doesn't exist.
-    \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
-    \$echo \"This script is just a wrapper for \$program.\" 1>&2
-    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
-    exit $EXIT_FAILURE
-  fi
-fi\
-"
-	chmod +x $output
-      fi
+      }
       exit $EXIT_SUCCESS
       ;;
     esac
@@ -5506,7 +9070,7 @@
     for oldlib in $oldlibs; do
 
       if test "$build_libtool_libs" = convenience; then
-	oldobjs="$libobjs_save"
+	oldobjs="$libobjs_save $symfileobj"
 	addlibs="$convenience"
 	build_libtool_libs=no
       else
@@ -5515,22 +9079,35 @@
 	  build_libtool_libs=no
 	else
 	  oldobjs="$old_deplibs $non_pic_objects"
+	  if test "$preload" = yes && test -f "$symfileobj"; then
+	    func_append oldobjs " $symfileobj"
+	  fi
 	fi
 	addlibs="$old_convenience"
       fi
 
       if test -n "$addlibs"; then
 	gentop="$output_objdir/${outputname}x"
-	generated="$generated $gentop"
+	func_append generated " $gentop"
 
 	func_extract_archives $gentop $addlibs
-	oldobjs="$oldobjs $func_extract_archives_result"
+	func_append oldobjs " $func_extract_archives_result"
       fi
 
       # Do each command in the archive commands.
       if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
-       cmds=$old_archive_from_new_cmds
+	cmds=$old_archive_from_new_cmds
       else
+
+	# Add any objects from preloaded convenience libraries
+	if test -n "$dlprefiles"; then
+	  gentop="$output_objdir/${outputname}x"
+	  func_append generated " $gentop"
+
+	  func_extract_archives $gentop $dlprefiles
+	  func_append oldobjs " $func_extract_archives_result"
+	fi
+
 	# POSIX demands no paths to be encoded in archives.  We have
 	# to avoid creating archives with duplicate basenames if we
 	# might have to extract them afterwards, e.g., when creating a
@@ -5539,32 +9116,22 @@
 	# not supported by libtool).
 	if (for obj in $oldobjs
 	    do
-	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
+	      func_basename "$obj"
+	      $ECHO "$func_basename_result"
 	    done | sort | sort -uc >/dev/null 2>&1); then
 	  :
 	else
-	  $echo "copying selected object files to avoid basename conflicts..."
-
-	  if test -z "$gentop"; then
-	    gentop="$output_objdir/${outputname}x"
-	    generated="$generated $gentop"
-
-	    $show "${rm}r $gentop"
-	    $run ${rm}r "$gentop"
-	    $show "$mkdir $gentop"
-	    $run $mkdir "$gentop"
-	    exit_status=$?
-	    if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
-	      exit $exit_status
-	    fi
-	  fi
-
+	  echo "copying selected object files to avoid basename conflicts..."
+	  gentop="$output_objdir/${outputname}x"
+	  func_append generated " $gentop"
+	  func_mkdir_p "$gentop"
 	  save_oldobjs=$oldobjs
 	  oldobjs=
 	  counter=1
 	  for obj in $save_oldobjs
 	  do
-	    objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+	    func_basename "$obj"
+	    objbase="$func_basename_result"
 	    case " $oldobjs " in
 	    " ") oldobjs=$obj ;;
 	    *[\ /]"$objbase "*)
@@ -5572,58 +9139,72 @@
 		# Make sure we don't pick an alternate name that also
 		# overlaps.
 		newobj=lt$counter-$objbase
-		counter=`expr $counter + 1`
+		func_arith $counter + 1
+		counter=$func_arith_result
 		case " $oldobjs " in
 		*[\ /]"$newobj "*) ;;
 		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
 		esac
 	      done
-	      $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
-	      $run ln "$obj" "$gentop/$newobj" ||
-	      $run cp "$obj" "$gentop/$newobj"
-	      oldobjs="$oldobjs $gentop/$newobj"
+	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+	      func_append oldobjs " $gentop/$newobj"
 	      ;;
-	    *) oldobjs="$oldobjs $obj" ;;
+	    *) func_append oldobjs " $obj" ;;
 	    esac
 	  done
 	fi
-
 	eval cmds=\"$old_archive_cmds\"
 
-	if len=`expr "X$cmds" : ".*"` &&
-	     test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	func_len " $cmds"
+	len=$func_len_result
+	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  cmds=$old_archive_cmds
+	elif test -n "$archiver_list_spec"; then
+	  func_verbose "using command file archive linking..."
+	  for obj in $oldobjs
+	  do
+	    func_to_tool_file "$obj"
+	    $ECHO "$func_to_tool_file_result"
+	  done > $output_objdir/$libname.libcmd
+	  func_to_tool_file "$output_objdir/$libname.libcmd"
+	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
 	  cmds=$old_archive_cmds
 	else
 	  # the command line is too long to link in one step, link in parts
-	  $echo "using piecewise archive linking..."
+	  func_verbose "using piecewise archive linking..."
 	  save_RANLIB=$RANLIB
 	  RANLIB=:
 	  objlist=
 	  concat_cmds=
 	  save_oldobjs=$oldobjs
-
+	  oldobjs=
 	  # Is there a better way of finding the last object in the list?
 	  for obj in $save_oldobjs
 	  do
 	    last_oldobj=$obj
 	  done
+	  eval test_cmds=\"$old_archive_cmds\"
+	  func_len " $test_cmds"
+	  len0=$func_len_result
+	  len=$len0
 	  for obj in $save_oldobjs
 	  do
-	    oldobjs="$objlist $obj"
-	    objlist="$objlist $obj"
-	    eval test_cmds=\"$old_archive_cmds\"
-	    if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
-	       test "$len" -le "$max_cmd_len"; then
+	    func_len " $obj"
+	    func_arith $len + $func_len_result
+	    len=$func_arith_result
+	    func_append objlist " $obj"
+	    if test "$len" -lt "$max_cmd_len"; then
 	      :
 	    else
 	      # the above command should be used before it gets too long
 	      oldobjs=$objlist
 	      if test "$obj" = "$last_oldobj" ; then
-	        RANLIB=$save_RANLIB
+		RANLIB=$save_RANLIB
 	      fi
 	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
 	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
 	      objlist=
+	      len=$len0
 	    fi
 	  done
 	  RANLIB=$save_RANLIB
@@ -5635,49 +9216,39 @@
 	  fi
 	fi
       fi
-      save_ifs="$IFS"; IFS='~'
-      for cmd in $cmds; do
-        eval cmd=\"$cmd\"
-	IFS="$save_ifs"
-	$show "$cmd"
-	$run eval "$cmd" || exit $?
-      done
-      IFS="$save_ifs"
+      func_execute_cmds "$cmds" 'exit $?'
     done
 
-    if test -n "$generated"; then
-      $show "${rm}r$generated"
-      $run ${rm}r$generated
-    fi
+    test -n "$generated" && \
+      func_show_eval "${RM}r$generated"
 
     # Now create the libtool archive.
     case $output in
     *.la)
       old_library=
       test "$build_old_libs" = yes && old_library="$libname.$libext"
-      $show "creating $output"
+      func_verbose "creating $output"
 
       # Preserve any variables that may affect compiler behavior
       for var in $variables_saved_for_relink; do
 	if eval test -z \"\${$var+set}\"; then
-	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
 	elif eval var_value=\$$var; test -z "$var_value"; then
 	  relink_command="$var=; export $var; $relink_command"
 	else
-	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
-	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	  func_quote_for_eval "$var_value"
+	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
 	fi
       done
       # Quote the link command for shipping.
       relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
-      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
+      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
       if test "$hardcode_automatic" = yes ; then
 	relink_command=
       fi
 
-
       # Only create the output if not a dry run.
-      if test -z "$run"; then
+      $opt_dry_run || {
 	for installed in no yes; do
 	  if test "$installed" = yes; then
 	    if test -z "$install_libdir"; then
@@ -5689,38 +9260,59 @@
 	    for deplib in $dependency_libs; do
 	      case $deplib in
 	      *.la)
-		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+		func_basename "$deplib"
+		name="$func_basename_result"
 		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-		if test -z "$libdir"; then
-		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
-		  exit $EXIT_FAILURE
-		fi
-		newdependency_libs="$newdependency_libs $libdir/$name"
+		test -z "$libdir" && \
+		  func_fatal_error "\`$deplib' is not a valid libtool archive"
+		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
 		;;
-	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      -L*)
+		func_stripname -L '' "$deplib"
+		func_replace_sysroot "$func_stripname_result"
+		func_append newdependency_libs " -L$func_replace_sysroot_result"
+		;;
+	      -R*)
+		func_stripname -R '' "$deplib"
+		func_replace_sysroot "$func_stripname_result"
+		func_append newdependency_libs " -R$func_replace_sysroot_result"
+		;;
+	      *) func_append newdependency_libs " $deplib" ;;
 	      esac
 	    done
 	    dependency_libs="$newdependency_libs"
 	    newdlfiles=
+
 	    for lib in $dlfiles; do
-	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
-	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-	      if test -z "$libdir"; then
-		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
-		exit $EXIT_FAILURE
-	      fi
-	      newdlfiles="$newdlfiles $libdir/$name"
+	      case $lib in
+	      *.la)
+	        func_basename "$lib"
+		name="$func_basename_result"
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		test -z "$libdir" && \
+		  func_fatal_error "\`$lib' is not a valid libtool archive"
+		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
+		;;
+	      *) func_append newdlfiles " $lib" ;;
+	      esac
 	    done
 	    dlfiles="$newdlfiles"
 	    newdlprefiles=
 	    for lib in $dlprefiles; do
-	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
-	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
-	      if test -z "$libdir"; then
-		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
-		exit $EXIT_FAILURE
-	      fi
-	      newdlprefiles="$newdlprefiles $libdir/$name"
+	      case $lib in
+	      *.la)
+		# Only pass preopened files to the pseudo-archive (for
+		# eventual linking with the app. that links it) if we
+		# didn't already link the preopened objects directly into
+		# the library:
+		func_basename "$lib"
+		name="$func_basename_result"
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+		test -z "$libdir" && \
+		  func_fatal_error "\`$lib' is not a valid libtool archive"
+		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
+		;;
+	      esac
 	    done
 	    dlprefiles="$newdlprefiles"
 	  else
@@ -5730,7 +9322,7 @@
 		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
 		*) abs=`pwd`"/$lib" ;;
 	      esac
-	      newdlfiles="$newdlfiles $abs"
+	      func_append newdlfiles " $abs"
 	    done
 	    dlfiles="$newdlfiles"
 	    newdlprefiles=
@@ -5739,19 +9331,37 @@
 		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
 		*) abs=`pwd`"/$lib" ;;
 	      esac
-	      newdlprefiles="$newdlprefiles $abs"
+	      func_append newdlprefiles " $abs"
 	    done
 	    dlprefiles="$newdlprefiles"
 	  fi
-	  $rm $output
+	  $RM $output
 	  # place dlname in correct position for cygwin
+	  # In fact, it would be nice if we could use this code for all target
+	  # systems that can't hard-code library paths into their executables
+	  # and that have no shared library path variable independent of PATH,
+	  # but it turns out we can't easily determine that from inspecting
+	  # libtool variables, so we have to hard-code the OSs to which it
+	  # applies here; at the moment, that means platforms that use the PE
+	  # object format with DLL files.  See the long comment at the top of
+	  # tests/bindir.at for full details.
 	  tdlname=$dlname
 	  case $host,$output,$installed,$module,$dlname in
-	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
+	      # If a -bindir argument was supplied, place the dll there.
+	      if test "x$bindir" != x ;
+	      then
+		func_relative_path "$install_libdir" "$bindir"
+		tdlname=$func_relative_path_result$dlname
+	      else
+		# Otherwise fall back on heuristic.
+		tdlname=../bin/$dlname
+	      fi
+	      ;;
 	  esac
-	  $echo > $output "\
+	  $ECHO > $output "\
 # $outputname - a libtool library file
-# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
 #
 # Please DO NOT delete this file!
 # It is necessary for linking the library.
@@ -5765,9 +9375,15 @@
 # The name of the static archive.
 old_library='$old_library'
 
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags='$new_inherited_linker_flags'
+
 # Libraries that this one depends upon.
 dependency_libs='$dependency_libs'
 
+# Names of additional weak libraries provided by this library
+weak_library_names='$weak_libs'
+
 # Version information for $libname.
 current=$current
 age=$age
@@ -5786,748 +9402,29 @@
 # Directory that this library needs to be installed in:
 libdir='$install_libdir'"
 	  if test "$installed" = no && test "$need_relink" = yes; then
-	    $echo >> $output "\
+	    $ECHO >> $output "\
 relink_command=\"$relink_command\""
 	  fi
 	done
-      fi
+      }
 
       # Do a symbolic link so that the libtool archive can be found in
       # LD_LIBRARY_PATH before the program is installed.
-      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
-      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
       ;;
     esac
     exit $EXIT_SUCCESS
-    ;;
+}
 
-  # libtool install mode
-  install)
-    modename="$modename: install"
+{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
+    func_mode_link ${1+"$@"}
 
-    # There may be an optional sh(1) argument at the beginning of
-    # install_prog (especially on Windows NT).
-    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
-       # Allow the use of GNU shtool's install command.
-       $echo "X$nonopt" | grep shtool > /dev/null; then
-      # Aesthetically quote it.
-      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
-      case $arg in
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-	arg="\"$arg\""
-	;;
-      esac
-      install_prog="$arg "
-      arg="$1"
-      shift
-    else
-      install_prog=
-      arg=$nonopt
-    fi
 
-    # The real first argument should be the name of the installation program.
-    # Aesthetically quote it.
-    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-    case $arg in
-    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-      arg="\"$arg\""
-      ;;
-    esac
-    install_prog="$install_prog$arg"
-
-    # We need to accept at least all the BSD install flags.
-    dest=
-    files=
-    opts=
-    prev=
-    install_type=
-    isdir=no
-    stripme=
-    for arg
-    do
-      if test -n "$dest"; then
-	files="$files $dest"
-	dest=$arg
-	continue
-      fi
-
-      case $arg in
-      -d) isdir=yes ;;
-      -f) 
-      	case " $install_prog " in
-	*[\\\ /]cp\ *) ;;
-	*) prev=$arg ;;
-	esac
-	;;
-      -g | -m | -o) prev=$arg ;;
-      -s)
-	stripme=" -s"
-	continue
-	;;
-      -*)
-	;;
-      *)
-	# If the previous option needed an argument, then skip it.
-	if test -n "$prev"; then
-	  prev=
-	else
-	  dest=$arg
-	  continue
-	fi
-	;;
-      esac
-
-      # Aesthetically quote the argument.
-      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
-      case $arg in
-      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
-	arg="\"$arg\""
-	;;
-      esac
-      install_prog="$install_prog $arg"
-    done
-
-    if test -z "$install_prog"; then
-      $echo "$modename: you must specify an install program" 1>&2
-      $echo "$help" 1>&2
-      exit $EXIT_FAILURE
-    fi
-
-    if test -n "$prev"; then
-      $echo "$modename: the \`$prev' option requires an argument" 1>&2
-      $echo "$help" 1>&2
-      exit $EXIT_FAILURE
-    fi
-
-    if test -z "$files"; then
-      if test -z "$dest"; then
-	$echo "$modename: no file or destination specified" 1>&2
-      else
-	$echo "$modename: you must specify a destination" 1>&2
-      fi
-      $echo "$help" 1>&2
-      exit $EXIT_FAILURE
-    fi
-
-    # Strip any trailing slash from the destination.
-    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
-
-    # Check to see that the destination is a directory.
-    test -d "$dest" && isdir=yes
-    if test "$isdir" = yes; then
-      destdir="$dest"
-      destname=
-    else
-      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
-      test "X$destdir" = "X$dest" && destdir=.
-      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
-
-      # Not a directory, so check to see that there is only one file specified.
-      set dummy $files
-      if test "$#" -gt 2; then
-	$echo "$modename: \`$dest' is not a directory" 1>&2
-	$echo "$help" 1>&2
-	exit $EXIT_FAILURE
-      fi
-    fi
-    case $destdir in
-    [\\/]* | [A-Za-z]:[\\/]*) ;;
-    *)
-      for file in $files; do
-	case $file in
-	*.lo) ;;
-	*)
-	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
-	  $echo "$help" 1>&2
-	  exit $EXIT_FAILURE
-	  ;;
-	esac
-      done
-      ;;
-    esac
-
-    # This variable tells wrapper scripts just to set variables rather
-    # than running their programs.
-    libtool_install_magic="$magic"
-
-    staticlibs=
-    future_libdirs=
-    current_libdirs=
-    for file in $files; do
-
-      # Do each installation.
-      case $file in
-      *.$libext)
-	# Do the static libraries later.
-	staticlibs="$staticlibs $file"
-	;;
-
-      *.la)
-	# Check to see that this really is a libtool archive.
-	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
-	else
-	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
-	  $echo "$help" 1>&2
-	  exit $EXIT_FAILURE
-	fi
-
-	library_names=
-	old_library=
-	relink_command=
-	# If there is no directory component, then add one.
-	case $file in
-	*/* | *\\*) . $file ;;
-	*) . ./$file ;;
-	esac
-
-	# Add the libdir to current_libdirs if it is the destination.
-	if test "X$destdir" = "X$libdir"; then
-	  case "$current_libdirs " in
-	  *" $libdir "*) ;;
-	  *) current_libdirs="$current_libdirs $libdir" ;;
-	  esac
-	else
-	  # Note the libdir as a future libdir.
-	  case "$future_libdirs " in
-	  *" $libdir "*) ;;
-	  *) future_libdirs="$future_libdirs $libdir" ;;
-	  esac
-	fi
-
-	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
-	test "X$dir" = "X$file/" && dir=
-	dir="$dir$objdir"
-
-	if test -n "$relink_command"; then
-	  # Determine the prefix the user has applied to our future dir.
-	  inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
-
-	  # Don't allow the user to place us outside of our expected
-	  # location b/c this prevents finding dependent libraries that
-	  # are installed to the same prefix.
-	  # At present, this check doesn't affect windows .dll's that
-	  # are installed into $libdir/../bin (currently, that works fine)
-	  # but it's something to keep an eye on.
-	  if test "$inst_prefix_dir" = "$destdir"; then
-	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
-	    exit $EXIT_FAILURE
-	  fi
-
-	  if test -n "$inst_prefix_dir"; then
-	    # Stick the inst_prefix_dir data into the link command.
-	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
-	  else
-	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
-	  fi
-
-	  $echo "$modename: warning: relinking \`$file'" 1>&2
-	  $show "$relink_command"
-	  if $run eval "$relink_command"; then :
-	  else
-	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
-	    exit $EXIT_FAILURE
-	  fi
-	fi
-
-	# See the names of the shared library.
-	set dummy $library_names
-	if test -n "$2"; then
-	  realname="$2"
-	  shift
-	  shift
-
-	  srcname="$realname"
-	  test -n "$relink_command" && srcname="$realname"T
-
-	  # Install the shared library and build the symlinks.
-	  $show "$install_prog $dir/$srcname $destdir/$realname"
-	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
-	  if test -n "$stripme" && test -n "$striplib"; then
-	    $show "$striplib $destdir/$realname"
-	    $run eval "$striplib $destdir/$realname" || exit $?
-	  fi
-
-	  if test "$#" -gt 0; then
-	    # Delete the old symlinks, and create new ones.
-	    # Try `ln -sf' first, because the `ln' binary might depend on
-	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
-	    # so we also need to try rm && ln -s.
-	    for linkname
-	    do
-	      if test "$linkname" != "$realname"; then
-                $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
-                $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
-	      fi
-	    done
-	  fi
-
-	  # Do each command in the postinstall commands.
-	  lib="$destdir/$realname"
-	  cmds=$postinstall_cmds
-	  save_ifs="$IFS"; IFS='~'
-	  for cmd in $cmds; do
-	    IFS="$save_ifs"
-	    eval cmd=\"$cmd\"
-	    $show "$cmd"
-	    $run eval "$cmd" || {
-	      lt_exit=$?
-
-	      # Restore the uninstalled library and exit
-	      if test "$mode" = relink; then
-		$run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
-	      fi
-
-	      exit $lt_exit
-	    }
-	  done
-	  IFS="$save_ifs"
-	fi
-
-	# Install the pseudo-library for information purposes.
-	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
-	instname="$dir/$name"i
-	$show "$install_prog $instname $destdir/$name"
-	$run eval "$install_prog $instname $destdir/$name" || exit $?
-
-	# Maybe install the static library, too.
-	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
-	;;
-
-      *.lo)
-	# Install (i.e. copy) a libtool object.
-
-	# Figure out destination file name, if it wasn't already specified.
-	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
-	else
-	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
-	  destfile="$destdir/$destfile"
-	fi
-
-	# Deduce the name of the destination old-style object file.
-	case $destfile in
-	*.lo)
-	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
-	  ;;
-	*.$objext)
-	  staticdest="$destfile"
-	  destfile=
-	  ;;
-	*)
-	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
-	  $echo "$help" 1>&2
-	  exit $EXIT_FAILURE
-	  ;;
-	esac
-
-	# Install the libtool object if requested.
-	if test -n "$destfile"; then
-	  $show "$install_prog $file $destfile"
-	  $run eval "$install_prog $file $destfile" || exit $?
-	fi
-
-	# Install the old object if enabled.
-	if test "$build_old_libs" = yes; then
-	  # Deduce the name of the old-style object file.
-	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
-
-	  $show "$install_prog $staticobj $staticdest"
-	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
-	fi
-	exit $EXIT_SUCCESS
-	;;
-
-      *)
-	# Figure out destination file name, if it wasn't already specified.
-	if test -n "$destname"; then
-	  destfile="$destdir/$destname"
-	else
-	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
-	  destfile="$destdir/$destfile"
-	fi
-
-	# If the file is missing, and there is a .exe on the end, strip it
-	# because it is most likely a libtool script we actually want to
-	# install
-	stripped_ext=""
-	case $file in
-	  *.exe)
-	    if test ! -f "$file"; then
-	      file=`$echo $file|${SED} 's,.exe$,,'`
-	      stripped_ext=".exe"
-	    fi
-	    ;;
-	esac
-
-	# Do a test to see if this is really a libtool program.
-	case $host in
-	*cygwin*|*mingw*)
-	    wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
-	    ;;
-	*)
-	    wrapper=$file
-	    ;;
-	esac
-	if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
-	  notinst_deplibs=
-	  relink_command=
-
-	  # Note that it is not necessary on cygwin/mingw to append a dot to
-	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
-	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
-	  # `FILE.' does not work on cygwin managed mounts.
-	  #
-	  # If there is no directory component, then add one.
-	  case $wrapper in
-	  */* | *\\*) . ${wrapper} ;;
-	  *) . ./${wrapper} ;;
-	  esac
-
-	  # Check the variables that should have been set.
-	  if test -z "$notinst_deplibs"; then
-	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
-	    exit $EXIT_FAILURE
-	  fi
-
-	  finalize=yes
-	  for lib in $notinst_deplibs; do
-	    # Check to see that each library is installed.
-	    libdir=
-	    if test -f "$lib"; then
-	      # If there is no directory component, then add one.
-	      case $lib in
-	      */* | *\\*) . $lib ;;
-	      *) . ./$lib ;;
-	      esac
-	    fi
-	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
-	    if test -n "$libdir" && test ! -f "$libfile"; then
-	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
-	      finalize=no
-	    fi
-	  done
-
-	  relink_command=
-	  # Note that it is not necessary on cygwin/mingw to append a dot to
-	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
-	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
-	  # `FILE.' does not work on cygwin managed mounts.
-	  #
-	  # If there is no directory component, then add one.
-	  case $wrapper in
-	  */* | *\\*) . ${wrapper} ;;
-	  *) . ./${wrapper} ;;
-	  esac
-
-	  outputname=
-	  if test "$fast_install" = no && test -n "$relink_command"; then
-	    if test "$finalize" = yes && test -z "$run"; then
-	      tmpdir=`func_mktempdir`
-	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
-	      outputname="$tmpdir/$file"
-	      # Replace the output file specification.
-	      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
-
-	      $show "$relink_command"
-	      if $run eval "$relink_command"; then :
-	      else
-		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
-		${rm}r "$tmpdir"
-		continue
-	      fi
-	      file="$outputname"
-	    else
-	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
-	    fi
-	  else
-	    # Install the binary that we compiled earlier.
-	    file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
-	  fi
-	fi
-
-	# remove .exe since cygwin /usr/bin/install will append another
-	# one anyway 
-	case $install_prog,$host in
-	*/usr/bin/install*,*cygwin*)
-	  case $file:$destfile in
-	  *.exe:*.exe)
-	    # this is ok
-	    ;;
-	  *.exe:*)
-	    destfile=$destfile.exe
-	    ;;
-	  *:*.exe)
-	    destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
-	    ;;
-	  esac
-	  ;;
-	esac
-	$show "$install_prog$stripme $file $destfile"
-	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
-	test -n "$outputname" && ${rm}r "$tmpdir"
-	;;
-      esac
-    done
-
-    for file in $staticlibs; do
-      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
-
-      # Set up the ranlib parameters.
-      oldlib="$destdir/$name"
-
-      $show "$install_prog $file $oldlib"
-      $run eval "$install_prog \$file \$oldlib" || exit $?
-
-      if test -n "$stripme" && test -n "$old_striplib"; then
-	$show "$old_striplib $oldlib"
-	$run eval "$old_striplib $oldlib" || exit $?
-      fi
-
-      # Do each command in the postinstall commands.
-      cmds=$old_postinstall_cmds
-      save_ifs="$IFS"; IFS='~'
-      for cmd in $cmds; do
-	IFS="$save_ifs"
-	eval cmd=\"$cmd\"
-	$show "$cmd"
-	$run eval "$cmd" || exit $?
-      done
-      IFS="$save_ifs"
-    done
-
-    if test -n "$future_libdirs"; then
-      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
-    fi
-
-    if test -n "$current_libdirs"; then
-      # Maybe just do a dry run.
-      test -n "$run" && current_libdirs=" -n$current_libdirs"
-      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
-    else
-      exit $EXIT_SUCCESS
-    fi
-    ;;
-
-  # libtool finish mode
-  finish)
-    modename="$modename: finish"
-    libdirs="$nonopt"
-    admincmds=
-
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      for dir
-      do
-	libdirs="$libdirs $dir"
-      done
-
-      for libdir in $libdirs; do
-	if test -n "$finish_cmds"; then
-	  # Do each command in the finish commands.
-	  cmds=$finish_cmds
-	  save_ifs="$IFS"; IFS='~'
-	  for cmd in $cmds; do
-	    IFS="$save_ifs"
-	    eval cmd=\"$cmd\"
-	    $show "$cmd"
-	    $run eval "$cmd" || admincmds="$admincmds
-       $cmd"
-	  done
-	  IFS="$save_ifs"
-	fi
-	if test -n "$finish_eval"; then
-	  # Do the single finish_eval.
-	  eval cmds=\"$finish_eval\"
-	  $run eval "$cmds" || admincmds="$admincmds
-       $cmds"
-	fi
-      done
-    fi
-
-    # Exit here if they wanted silent mode.
-    test "$show" = : && exit $EXIT_SUCCESS
-
-    $echo "X----------------------------------------------------------------------" | $Xsed
-    $echo "Libraries have been installed in:"
-    for libdir in $libdirs; do
-      $echo "   $libdir"
-    done
-    $echo
-    $echo "If you ever happen to want to link against installed libraries"
-    $echo "in a given directory, LIBDIR, you must either use libtool, and"
-    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
-    $echo "flag during linking and do at least one of the following:"
-    if test -n "$shlibpath_var"; then
-      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
-      $echo "     during execution"
-    fi
-    if test -n "$runpath_var"; then
-      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
-      $echo "     during linking"
-    fi
-    if test -n "$hardcode_libdir_flag_spec"; then
-      libdir=LIBDIR
-      eval flag=\"$hardcode_libdir_flag_spec\"
-
-      $echo "   - use the \`$flag' linker flag"
-    fi
-    if test -n "$admincmds"; then
-      $echo "   - have your system administrator run these commands:$admincmds"
-    fi
-    if test -f /etc/ld.so.conf; then
-      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
-    fi
-    $echo
-    $echo "See any operating system documentation about shared libraries for"
-    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
-    $echo "X----------------------------------------------------------------------" | $Xsed
-    exit $EXIT_SUCCESS
-    ;;
-
-  # libtool execute mode
-  execute)
-    modename="$modename: execute"
-
-    # The first argument is the command name.
-    cmd="$nonopt"
-    if test -z "$cmd"; then
-      $echo "$modename: you must specify a COMMAND" 1>&2
-      $echo "$help"
-      exit $EXIT_FAILURE
-    fi
-
-    # Handle -dlopen flags immediately.
-    for file in $execute_dlfiles; do
-      if test ! -f "$file"; then
-	$echo "$modename: \`$file' is not a file" 1>&2
-	$echo "$help" 1>&2
-	exit $EXIT_FAILURE
-      fi
-
-      dir=
-      case $file in
-      *.la)
-	# Check to see that this really is a libtool archive.
-	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
-	else
-	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
-	  $echo "$help" 1>&2
-	  exit $EXIT_FAILURE
-	fi
-
-	# Read the libtool library.
-	dlname=
-	library_names=
-
-	# If there is no directory component, then add one.
-	case $file in
-	*/* | *\\*) . $file ;;
-	*) . ./$file ;;
-	esac
-
-	# Skip this library if it cannot be dlopened.
-	if test -z "$dlname"; then
-	  # Warn if it was a shared library.
-	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
-	  continue
-	fi
-
-	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
-	test "X$dir" = "X$file" && dir=.
-
-	if test -f "$dir/$objdir/$dlname"; then
-	  dir="$dir/$objdir"
-	else
-	  if test ! -f "$dir/$dlname"; then
-	    $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
-	    exit $EXIT_FAILURE
-	  fi
-	fi
-	;;
-
-      *.lo)
-	# Just add the directory containing the .lo file.
-	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
-	test "X$dir" = "X$file" && dir=.
-	;;
-
-      *)
-	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
-	continue
-	;;
-      esac
-
-      # Get the absolute pathname.
-      absdir=`cd "$dir" && pwd`
-      test -n "$absdir" && dir="$absdir"
-
-      # Now add the directory to shlibpath_var.
-      if eval "test -z \"\$$shlibpath_var\""; then
-	eval "$shlibpath_var=\"\$dir\""
-      else
-	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
-      fi
-    done
-
-    # This variable tells wrapper scripts just to set shlibpath_var
-    # rather than running their programs.
-    libtool_execute_magic="$magic"
-
-    # Check if any of the arguments is a wrapper script.
-    args=
-    for file
-    do
-      case $file in
-      -*) ;;
-      *)
-	# Do a test to see if this is really a libtool program.
-	if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-	  # If there is no directory component, then add one.
-	  case $file in
-	  */* | *\\*) . $file ;;
-	  *) . ./$file ;;
-	  esac
-
-	  # Transform arg to wrapped name.
-	  file="$progdir/$program"
-	fi
-	;;
-      esac
-      # Quote arguments (to preserve shell metacharacters).
-      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
-      args="$args \"$file\""
-    done
-
-    if test -z "$run"; then
-      if test -n "$shlibpath_var"; then
-	# Export the shlibpath_var.
-	eval "export $shlibpath_var"
-      fi
-
-      # Restore saved environment variables
-      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
-      do
-	eval "if test \"\${save_$lt_var+set}\" = set; then
-		$lt_var=\$save_$lt_var; export $lt_var
-	      fi"
-      done
-
-      # Now prepare to actually exec the command.
-      exec_cmd="\$cmd$args"
-    else
-      # Display what would be done.
-      if test -n "$shlibpath_var"; then
-	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
-	$echo "export $shlibpath_var"
-      fi
-      $echo "$cmd$args"
-      exit $EXIT_SUCCESS
-    fi
-    ;;
-
-  # libtool clean and uninstall mode
-  clean | uninstall)
-    modename="$modename: $mode"
-    rm="$nonopt"
+# func_mode_uninstall arg...
+func_mode_uninstall ()
+{
+    $opt_debug
+    RM="$nonopt"
     files=
     rmforce=
     exit_status=0
@@ -6539,44 +9436,41 @@
     for arg
     do
       case $arg in
-      -f) rm="$rm $arg"; rmforce=yes ;;
-      -*) rm="$rm $arg" ;;
-      *) files="$files $arg" ;;
+      -f) func_append RM " $arg"; rmforce=yes ;;
+      -*) func_append RM " $arg" ;;
+      *) func_append files " $arg" ;;
       esac
     done
 
-    if test -z "$rm"; then
-      $echo "$modename: you must specify an RM program" 1>&2
-      $echo "$help" 1>&2
-      exit $EXIT_FAILURE
-    fi
+    test -z "$RM" && \
+      func_fatal_help "you must specify an RM program"
 
     rmdirs=
 
-    origobjdir="$objdir"
     for file in $files; do
-      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
-      if test "X$dir" = "X$file"; then
-	dir=.
-	objdir="$origobjdir"
+      func_dirname "$file" "" "."
+      dir="$func_dirname_result"
+      if test "X$dir" = X.; then
+	odir="$objdir"
       else
-	objdir="$dir/$origobjdir"
+	odir="$dir/$objdir"
       fi
-      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
-      test "$mode" = uninstall && objdir="$dir"
+      func_basename "$file"
+      name="$func_basename_result"
+      test "$opt_mode" = uninstall && odir="$dir"
 
-      # Remember objdir for removal later, being careful to avoid duplicates
-      if test "$mode" = clean; then
+      # Remember odir for removal later, being careful to avoid duplicates
+      if test "$opt_mode" = clean; then
 	case " $rmdirs " in
-	  *" $objdir "*) ;;
-	  *) rmdirs="$rmdirs $objdir" ;;
+	  *" $odir "*) ;;
+	  *) func_append rmdirs " $odir" ;;
 	esac
       fi
 
       # Don't error if the file doesn't exist and rm -f was used.
-      if (test -L "$file") >/dev/null 2>&1 \
-	|| (test -h "$file") >/dev/null 2>&1 \
-	|| test -f "$file"; then
+      if { test -L "$file"; } >/dev/null 2>&1 ||
+	 { test -h "$file"; } >/dev/null 2>&1 ||
+	 test -f "$file"; then
 	:
       elif test -d "$file"; then
 	exit_status=1
@@ -6590,55 +9484,32 @@
       case $name in
       *.la)
 	# Possibly a libtool archive, so verify it.
-	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-	  . $dir/$name
+	if func_lalib_p "$file"; then
+	  func_source $dir/$name
 
 	  # Delete the libtool libraries and symlinks.
 	  for n in $library_names; do
-	    rmfiles="$rmfiles $objdir/$n"
+	    func_append rmfiles " $odir/$n"
 	  done
-	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
 
-	  case "$mode" in
+	  case "$opt_mode" in
 	  clean)
-	    case "  $library_names " in
-	    # "  " in the beginning catches empty $dlname
+	    case " $library_names " in
 	    *" $dlname "*) ;;
-	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
+	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
 	    esac
-	     test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
 	    ;;
 	  uninstall)
 	    if test -n "$library_names"; then
 	      # Do each command in the postuninstall commands.
-	      cmds=$postuninstall_cmds
-	      save_ifs="$IFS"; IFS='~'
-	      for cmd in $cmds; do
-		IFS="$save_ifs"
-		eval cmd=\"$cmd\"
-		$show "$cmd"
-		$run eval "$cmd"
-		if test "$?" -ne 0 && test "$rmforce" != yes; then
-		  exit_status=1
-		fi
-	      done
-	      IFS="$save_ifs"
+	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
 	    fi
 
 	    if test -n "$old_library"; then
 	      # Do each command in the old_postuninstall commands.
-	      cmds=$old_postuninstall_cmds
-	      save_ifs="$IFS"; IFS='~'
-	      for cmd in $cmds; do
-		IFS="$save_ifs"
-		eval cmd=\"$cmd\"
-		$show "$cmd"
-		$run eval "$cmd"
-		if test "$?" -ne 0 && test "$rmforce" != yes; then
-		  exit_status=1
-		fi
-	      done
-	      IFS="$save_ifs"
+	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
 	    fi
 	    # FIXME: should reinstall the best remaining shared library.
 	    ;;
@@ -6648,288 +9519,95 @@
 
       *.lo)
 	# Possibly a libtool object, so verify it.
-	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	if func_lalib_p "$file"; then
 
 	  # Read the .lo file
-	  . $dir/$name
+	  func_source $dir/$name
 
 	  # Add PIC object to the list of files to remove.
-	  if test -n "$pic_object" \
-	     && test "$pic_object" != none; then
-	    rmfiles="$rmfiles $dir/$pic_object"
+	  if test -n "$pic_object" &&
+	     test "$pic_object" != none; then
+	    func_append rmfiles " $dir/$pic_object"
 	  fi
 
 	  # Add non-PIC object to the list of files to remove.
-	  if test -n "$non_pic_object" \
-	     && test "$non_pic_object" != none; then
-	    rmfiles="$rmfiles $dir/$non_pic_object"
+	  if test -n "$non_pic_object" &&
+	     test "$non_pic_object" != none; then
+	    func_append rmfiles " $dir/$non_pic_object"
 	  fi
 	fi
 	;;
 
       *)
-	if test "$mode" = clean ; then
+	if test "$opt_mode" = clean ; then
 	  noexename=$name
 	  case $file in
 	  *.exe)
-	    file=`$echo $file|${SED} 's,.exe$,,'`
-	    noexename=`$echo $name|${SED} 's,.exe$,,'`
+	    func_stripname '' '.exe' "$file"
+	    file=$func_stripname_result
+	    func_stripname '' '.exe' "$name"
+	    noexename=$func_stripname_result
 	    # $file with .exe has already been added to rmfiles,
 	    # add $file without .exe
-	    rmfiles="$rmfiles $file"
+	    func_append rmfiles " $file"
 	    ;;
 	  esac
 	  # Do a test to see if this is a libtool program.
-	  if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
-	    relink_command=
-	    . $dir/$noexename
+	  if func_ltwrapper_p "$file"; then
+	    if func_ltwrapper_executable_p "$file"; then
+	      func_ltwrapper_scriptname "$file"
+	      relink_command=
+	      func_source $func_ltwrapper_scriptname_result
+	      func_append rmfiles " $func_ltwrapper_scriptname_result"
+	    else
+	      relink_command=
+	      func_source $dir/$noexename
+	    fi
 
 	    # note $name still contains .exe if it was in $file originally
 	    # as does the version of $file that was added into $rmfiles
-	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
 	    if test "$fast_install" = yes && test -n "$relink_command"; then
-	      rmfiles="$rmfiles $objdir/lt-$name"
+	      func_append rmfiles " $odir/lt-$name"
 	    fi
 	    if test "X$noexename" != "X$name" ; then
-	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+	      func_append rmfiles " $odir/lt-${noexename}.c"
 	    fi
 	  fi
 	fi
 	;;
       esac
-      $show "$rm $rmfiles"
-      $run $rm $rmfiles || exit_status=1
+      func_show_eval "$RM $rmfiles" 'exit_status=1'
     done
-    objdir="$origobjdir"
 
     # Try to remove the ${objdir}s in the directories where we deleted files
     for dir in $rmdirs; do
       if test -d "$dir"; then
-	$show "rmdir $dir"
-	$run rmdir $dir >/dev/null 2>&1
+	func_show_eval "rmdir $dir >/dev/null 2>&1"
       fi
     done
 
     exit $exit_status
-    ;;
+}
 
-  "")
-    $echo "$modename: you must specify a MODE" 1>&2
-    $echo "$generic_help" 1>&2
-    exit $EXIT_FAILURE
-    ;;
-  esac
+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
+    func_mode_uninstall ${1+"$@"}
 
-  if test -z "$exec_cmd"; then
-    $echo "$modename: invalid operation mode \`$mode'" 1>&2
-    $echo "$generic_help" 1>&2
-    exit $EXIT_FAILURE
-  fi
-fi # test -z "$show_help"
+test -z "$opt_mode" && {
+  help="$generic_help"
+  func_fatal_help "you must specify a MODE"
+}
+
+test -z "$exec_cmd" && \
+  func_fatal_help "invalid operation mode \`$opt_mode'"
 
 if test -n "$exec_cmd"; then
-  eval exec $exec_cmd
+  eval exec "$exec_cmd"
   exit $EXIT_FAILURE
 fi
 
-# We need to display help for each of the modes.
-case $mode in
-"") $echo \
-"Usage: $modename [OPTION]... [MODE-ARG]...
+exit $exit_status
 
-Provide generalized library-building support services.
-
-    --config          show all configuration variables
-    --debug           enable verbose shell tracing
--n, --dry-run         display commands without modifying any files
-    --features        display basic configuration information and exit
-    --finish          same as \`--mode=finish'
-    --help            display this help message and exit
-    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
-    --quiet           same as \`--silent'
-    --silent          don't print informational messages
-    --tag=TAG         use configuration variables from tag TAG
-    --version         print version information
-
-MODE must be one of the following:
-
-      clean           remove files from the build directory
-      compile         compile a source file into a libtool object
-      execute         automatically set library path, then run a program
-      finish          complete the installation of libtool libraries
-      install         install libraries or executables
-      link            create a library or an executable
-      uninstall       remove libraries from an installed directory
-
-MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
-a more detailed description of MODE.
-
-Report bugs to <bug-libtool@gnu.org>."
-  exit $EXIT_SUCCESS
-  ;;
-
-clean)
-  $echo \
-"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
-
-Remove files from the build directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, object or program, all the files associated
-with it are deleted. Otherwise, only FILE itself is deleted using RM."
-  ;;
-
-compile)
-  $echo \
-"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
-
-Compile a source file into a libtool library object.
-
-This mode accepts the following additional options:
-
-  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
-  -prefer-pic       try to building PIC objects only
-  -prefer-non-pic   try to building non-PIC objects only
-  -static           always build a \`.o' file suitable for static linking
-
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
-from the given SOURCEFILE.
-
-The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
-  ;;
-
-execute)
-  $echo \
-"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
-
-Automatically set library path, then run a program.
-
-This mode accepts the following additional options:
-
-  -dlopen FILE      add the directory containing FILE to the library path
-
-This mode sets the library path environment variable according to \`-dlopen'
-flags.
-
-If any of the ARGS are libtool executable wrappers, then they are translated
-into their corresponding uninstalled binary, and any of their required library
-directories are added to the library path.
-
-Then, COMMAND is executed, with ARGS as arguments."
-  ;;
-
-finish)
-  $echo \
-"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
-
-Complete the installation of libtool libraries.
-
-Each LIBDIR is a directory that contains libtool libraries.
-
-The commands that this mode executes may require superuser privileges.  Use
-the \`--dry-run' option if you just want to see what would be executed."
-  ;;
-
-install)
-  $echo \
-"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
-
-Install executables or libraries.
-
-INSTALL-COMMAND is the installation command.  The first component should be
-either the \`install' or \`cp' program.
-
-The rest of the components are interpreted as arguments to that command (only
-BSD-compatible install options are recognized)."
-  ;;
-
-link)
-  $echo \
-"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
-
-Link object files or libraries together to form another library, or to
-create an executable program.
-
-LINK-COMMAND is a command using the C compiler that you would use to create
-a program from several object files.
-
-The following components of LINK-COMMAND are treated specially:
-
-  -all-static       do not do any dynamic linking at all
-  -avoid-version    do not add a version suffix if possible
-  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
-  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
-  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-  -export-symbols SYMFILE
-                    try to export only the symbols listed in SYMFILE
-  -export-symbols-regex REGEX
-                    try to export only the symbols matching REGEX
-  -LLIBDIR          search LIBDIR for required installed libraries
-  -lNAME            OUTPUT-FILE requires the installed library libNAME
-  -module           build a library that can dlopened
-  -no-fast-install  disable the fast-install mode
-  -no-install       link a not-installable executable
-  -no-undefined     declare that a library does not refer to external symbols
-  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
-  -objectlist FILE  Use a list of object files found in FILE to specify objects
-  -precious-files-regex REGEX
-                    don't remove output files matching REGEX
-  -release RELEASE  specify package release information
-  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
-  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
-  -static           do not do any dynamic linking of uninstalled libtool libraries
-  -static-libtool-libs
-                    do not do any dynamic linking of libtool libraries
-  -version-info CURRENT[:REVISION[:AGE]]
-                    specify library version info [each variable defaults to 0]
-
-All other options (arguments beginning with \`-') are ignored.
-
-Every other argument is treated as a filename.  Files ending in \`.la' are
-treated as uninstalled libtool libraries, other files are standard or library
-object files.
-
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
-required, except when creating a convenience library.
-
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
-
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
-is created, otherwise an executable program is created."
-  ;;
-
-uninstall)
-  $echo \
-"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
-
-Remove libraries from an installation directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, all the files associated with it are deleted.
-Otherwise, only FILE itself is deleted using RM."
-  ;;
-
-*)
-  $echo "$modename: invalid operation mode \`$mode'" 1>&2
-  $echo "$help" 1>&2
-  exit $EXIT_FAILURE
-  ;;
-esac
-
-$echo
-$echo "Try \`$modename --help' for more information about other modes."
-
-exit $?
 
 # The TAGs below are defined such that we never get into a situation
 # in which we disable both kinds of libraries.  Given conflicting
@@ -6943,14 +9621,17 @@
 # configuration.  But we'll never go from static-only to shared-only.
 
 # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
-disable_libs=shared
+build_libtool_libs=no
+build_old_libs=yes
 # ### END LIBTOOL TAG CONFIG: disable-shared
 
 # ### BEGIN LIBTOOL TAG CONFIG: disable-static
-disable_libs=static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
 # ### END LIBTOOL TAG CONFIG: disable-static
 
 # Local Variables:
 # mode:shell-script
 # sh-indentation:2
 # End:
+# vi:sw=2
+
diff --git a/m4/ac_add_search_path.m4 b/m4/ac_add_search_path.m4
new file mode 100644
index 0000000..8e0a819
--- /dev/null
+++ b/m4/ac_add_search_path.m4
@@ -0,0 +1,13 @@
+dnl
+dnl Add a search path to the LIBS and CPPFLAGS variables
+dnl
+AC_DEFUN([AC_ADD_SEARCH_PATH],[
+  if test "x$1" != x -a -d $1; then
+     if test -d $1/lib; then
+       LDFLAGS="-L$1/lib $LDFLAGS"
+     fi
+     if test -d $1/include; then
+	CPPFLAGS="-I$1/include $CPPFLAGS"
+     fi
+  fi
+])
diff --git a/m4/ac_msg_cache.m4 b/m4/ac_msg_cache.m4
new file mode 100644
index 0000000..f7d7cda
--- /dev/null
+++ b/m4/ac_msg_cache.m4
@@ -0,0 +1,24 @@
+dnl
+dnl Store information for displaying later.
+dnl
+AC_DEFUN([AC_MSG_CACHE_INIT],[
+  rm -f configure-summary
+])
+
+AC_DEFUN([AC_MSG_CACHE_ADD],[
+  cat >> configure-summary << EOF
+  $1
+EOF
+])
+
+AC_DEFUN([AC_MSG_CACHE_DISPLAY],[
+  echo ""
+  echo "---------------------------------------------------------"
+  echo "            Net-SNMP configuration summary:"
+  echo "---------------------------------------------------------"
+  echo ""
+  cat configure-summary
+  echo ""
+  echo "---------------------------------------------------------"
+  echo ""
+])
diff --git a/m4/ac_msg_module_dbg.m4 b/m4/ac_msg_module_dbg.m4
new file mode 100644
index 0000000..d2cb317
--- /dev/null
+++ b/m4/ac_msg_module_dbg.m4
@@ -0,0 +1,7 @@
+AC_DEFUN([AC_MSG_MODULE_DBG],
+[
+  if test $module_debug = 1; then
+    echo $1 $2 $3 $4
+  fi
+]
+)
diff --git a/m4/ac_prompt_user.m4 b/m4/ac_prompt_user.m4
new file mode 100644
index 0000000..6b2dd9a
--- /dev/null
+++ b/m4/ac_prompt_user.m4
@@ -0,0 +1,52 @@
+dnl @synopsis AC_PROMPT_USER_NO_DEFINE(VARIABLENAME,QUESTION,[DEFAULT])
+dnl
+dnl Asks a QUESTION and puts the results in VARIABLENAME with an optional
+dnl DEFAULT value if the user merely hits return.
+dnl
+dnl @version 1.15
+dnl @author Wes Hardaker <hardaker@users.sourceforge.net>
+dnl
+AC_DEFUN([AC_PROMPT_USER_NO_DEFINE],
+[
+if test "x$defaults" = "xno"; then
+echo $ECHO_N "$2 ($3): $ECHO_C"
+read tmpinput <&AS_ORIGINAL_STDIN_FD
+if test "$tmpinput" = "" -a "$3" != ""; then
+  tmpinput="$3"
+fi
+eval $1=\"$tmpinput\"
+else
+tmpinput="$3"
+eval $1=\"$tmpinput\"
+fi
+]) dnl done AC_PROMPT_USER
+
+dnl @synopsis AC_PROMPT_USER(VARIABLENAME,QUESTION,[DEFAULT],QUOTED)
+dnl
+dnl Asks a QUESTION and puts the results in VARIABLENAME with an optional
+dnl DEFAULT value if the user merely hits return.  Also calls
+dnl AC_DEFINE_UNQUOTED() on the VARIABLENAME for VARIABLENAMEs that should
+dnl be entered into the config.h file as well.  If QUOTED is "quoted" then
+dnl the result will be defined within quotes.
+dnl
+dnl @version 1.15
+dnl @author Wes Hardaker <hardaker@users.sourceforge.net>
+dnl
+AC_DEFUN([AC_PROMPT_USER],
+[
+MSG_CHECK="patsubst([$2], [.*
+], [])"
+AC_CACHE_CHECK($MSG_CHECK, ac_cv_user_prompt_$1,
+[echo "" >&AS_MESSAGE_FD
+AC_PROMPT_USER_NO_DEFINE($1,[$2],$3)
+eval ac_cv_user_prompt_$1=\$$1
+echo $ECHO_N "setting $MSG_CHECK to...  $ECHO_C" >&AS_MESSAGE_FD
+])
+if test "$ac_cv_user_prompt_$1" != "none"; then
+  if test "x$4" = "xquoted" -o "x$4" = "xQUOTED"; then
+    AC_DEFINE_UNQUOTED($1,"$ac_cv_user_prompt_$1")
+  else
+    AC_DEFINE_UNQUOTED($1,$ac_cv_user_prompt_$1)
+  fi
+fi
+]) dnl
diff --git a/m4/libtool.m4 b/m4/libtool.m4
new file mode 100644
index 0000000..d812584
--- /dev/null
+++ b/m4/libtool.m4
@@ -0,0 +1,7831 @@
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+#                 Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+# 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.
+
+m4_define([_LT_COPYING], [dnl
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+#                 Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+])
+
+# serial 57 LT_INIT
+
+
+# LT_PREREQ(VERSION)
+# ------------------
+# Complain and exit if this libtool version is less that VERSION.
+m4_defun([LT_PREREQ],
+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1,
+       [m4_default([$3],
+		   [m4_fatal([Libtool version $1 or higher is required],
+		             63)])],
+       [$2])])
+
+
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+  *\ * | *\	*)
+    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
+# LT_INIT([OPTIONS])
+# ------------------
+AC_DEFUN([LT_INIT],
+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+AC_BEFORE([$0], [LT_LANG])dnl
+AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
+
+dnl Autoconf doesn't catch unexpanded LT_ macros by default:
+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl
+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4
+dnl unless we require an AC_DEFUNed macro:
+AC_REQUIRE([LTOPTIONS_VERSION])dnl
+AC_REQUIRE([LTSUGAR_VERSION])dnl
+AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
+m4_require([_LT_PROG_LTMAIN])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+_LT_SETUP
+
+# Only expand once:
+m4_define([LT_INIT])
+])# LT_INIT
+
+# Old names:
+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
+dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+m4_defun([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+  case $cc_temp in
+    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+])
+
+
+# _LT_FILEUTILS_DEFAULTS
+# ----------------------
+# It is okay to use these file commands and assume they have been set
+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'.
+m4_defun([_LT_FILEUTILS_DEFAULTS],
+[: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
+])# _LT_FILEUTILS_DEFAULTS
+
+
+# _LT_SETUP
+# ---------
+m4_defun([_LT_SETUP],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+
+_LT_DECL([], [host_alias], [0], [The host system])dnl
+_LT_DECL([], [host], [0])dnl
+_LT_DECL([], [host_os], [0])dnl
+dnl
+_LT_DECL([], [build_alias], [0], [The build system])dnl
+_LT_DECL([], [build], [0])dnl
+_LT_DECL([], [build_os], [0])dnl
+dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+test -z "$LN_S" && LN_S="ln -s"
+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
+dnl
+AC_REQUIRE([LT_CMD_MAX_LEN])dnl
+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
+dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
+m4_require([_LT_CMD_RELOAD])dnl
+m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
+m4_require([_LT_CMD_OLD_ARCHIVE])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_WITH_SYSROOT])dnl
+
+_LT_CONFIG_LIBTOOL_INIT([
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+])
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+_LT_CHECK_OBJDIR
+
+m4_require([_LT_TAG_COMPILER])dnl
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    _LT_PATH_MAGIC
+  fi
+  ;;
+esac
+
+# Use C for the default configuration in the libtool script
+LT_SUPPORTED_TAG([CC])
+_LT_LANG_C_CONFIG
+_LT_LANG_DEFAULT_CONFIG
+_LT_CONFIG_COMMANDS
+])# _LT_SETUP
+
+
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
+[# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+])
+
+# _LT_PROG_LTMAIN
+# ---------------
+# Note that this code is called both from `configure', and `config.status'
+# now that we use AC_CONFIG_COMMANDS to generate libtool.  Notably,
+# `config.status' has no value for ac_aux_dir unless we are using Automake,
+# so we pass a copy along to make sure it has a sensible value anyway.
+m4_defun([_LT_PROG_LTMAIN],
+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl
+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir'])
+ltmain="$ac_aux_dir/ltmain.sh"
+])# _LT_PROG_LTMAIN
+
+
+## ------------------------------------- ##
+## Accumulate code for creating libtool. ##
+## ------------------------------------- ##
+
+# So that we can recreate a full libtool script including additional
+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS
+# in macros and then make a single call at the end using the `libtool'
+# label.
+
+
+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS])
+# ----------------------------------------
+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL_INIT],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_INIT],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_INIT])
+
+
+# _LT_CONFIG_LIBTOOL([COMMANDS])
+# ------------------------------
+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later.
+m4_define([_LT_CONFIG_LIBTOOL],
+[m4_ifval([$1],
+          [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS],
+                     [$1
+])])])
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS])
+
+
+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS])
+# -----------------------------------------------------
+m4_defun([_LT_CONFIG_SAVE_COMMANDS],
+[_LT_CONFIG_LIBTOOL([$1])
+_LT_CONFIG_LIBTOOL_INIT([$2])
+])
+
+
+# _LT_FORMAT_COMMENT([COMMENT])
+# -----------------------------
+# Add leading comment marks to the start of each line, and a trailing
+# full-stop to the whole comment if one is not present already.
+m4_define([_LT_FORMAT_COMMENT],
+[m4_ifval([$1], [
+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
+              [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.])
+)])
+
+
+
+## ------------------------ ##
+## FIXME: Eliminate VARNAME ##
+## ------------------------ ##
+
+
+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?])
+# -------------------------------------------------------------------
+# CONFIGNAME is the name given to the value in the libtool script.
+# VARNAME is the (base) name used in the configure script.
+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on
+# VARNAME.  Any other value will be used directly.
+m4_define([_LT_DECL],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ],
+    [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
+	[m4_ifval([$1], [$1], [$2])])
+    lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
+    m4_ifval([$4],
+	[lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])])
+    lt_dict_add_subkey([lt_decl_dict], [$2],
+	[tagged?], [m4_ifval([$5], [yes], [no])])])
+])
+
+
+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION])
+# --------------------------------------------------------
+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])])
+
+
+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_tag_varnames],
+[_lt_decl_filter([tagged?], [yes], $@)])
+
+
+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..])
+# ---------------------------------------------------------
+m4_define([_lt_decl_filter],
+[m4_case([$#],
+  [0], [m4_fatal([$0: too few arguments: $#])],
+  [1], [m4_fatal([$0: too few arguments: $#: $1])],
+  [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)],
+  [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)],
+  [lt_dict_filter([lt_decl_dict], $@)])[]dnl
+])
+
+
+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...])
+# --------------------------------------------------
+m4_define([lt_decl_quote_varnames],
+[_lt_decl_filter([value], [1], $@)])
+
+
+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_dquote_varnames],
+[_lt_decl_filter([value], [2], $@)])
+
+
+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
+# ---------------------------------------------------
+m4_define([lt_decl_varnames_tagged],
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
+
+
+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
+# ------------------------------------------------
+m4_define([lt_decl_all_varnames],
+[_$0(m4_quote(m4_default([$1], [[, ]])),
+     m4_if([$2], [],
+	   m4_quote(lt_decl_varnames),
+	m4_quote(m4_shift($@))))[]dnl
+])
+m4_define([_lt_decl_all_varnames],
+[lt_join($@, lt_decl_varnames_tagged([$1],
+			lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl
+])
+
+
+# _LT_CONFIG_STATUS_DECLARE([VARNAME])
+# ------------------------------------
+# Quote a variable value, and forward it to `config.status' so that its
+# declaration there will have the same value as in `configure'.  VARNAME
+# must have a single quote delimited value for this to work.
+m4_define([_LT_CONFIG_STATUS_DECLARE],
+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
+
+
+# _LT_CONFIG_STATUS_DECLARATIONS
+# ------------------------------
+# We delimit libtool config variables with single quotes, so when
+# we write them to config.status, we have to be sure to quote all
+# embedded single quotes properly.  In configure, this macro expands
+# each variable declared with _LT_DECL (and _LT_TAGDECL) into:
+#
+#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
+    [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAGS
+# ----------------
+# Output comment and list of tags supported by the script
+m4_defun([_LT_LIBTOOL_TAGS],
+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl
+available_tags="_LT_TAGS"dnl
+])
+
+
+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG])
+# -----------------------------------
+# Extract the dictionary values for VARNAME (optionally with TAG) and
+# expand to a commented shell variable setting:
+#
+#    # Some comment about what VAR is for.
+#    visible_name=$lt_internal_name
+m4_define([_LT_LIBTOOL_DECLARE],
+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1],
+					   [description])))[]dnl
+m4_pushdef([_libtool_name],
+    m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl
+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])),
+    [0], [_libtool_name=[$]$1],
+    [1], [_libtool_name=$lt_[]$1],
+    [2], [_libtool_name=$lt_[]$1],
+    [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl
+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl
+])
+
+
+# _LT_LIBTOOL_CONFIG_VARS
+# -----------------------
+# Produce commented declarations of non-tagged libtool config variables
+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool'
+# script.  Tagged libtool config variables (even for the LIBTOOL CONFIG
+# section) are produced by _LT_LIBTOOL_TAG_VARS.
+m4_defun([_LT_LIBTOOL_CONFIG_VARS],
+[m4_foreach([_lt_var],
+    m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])])
+
+
+# _LT_LIBTOOL_TAG_VARS(TAG)
+# -------------------------
+m4_define([_LT_LIBTOOL_TAG_VARS],
+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames),
+    [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])])
+
+
+# _LT_TAGVAR(VARNAME, [TAGNAME])
+# ------------------------------
+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])])
+
+
+# _LT_CONFIG_COMMANDS
+# -------------------
+# Send accumulated output to $CONFIG_STATUS.  Thanks to the lists of
+# variables for single and double quote escaping we saved from calls
+# to _LT_DECL, we can put quote escaped variables declarations
+# into `config.status', and then the shell code to quote escape them in
+# for loops in `config.status'.  Finally, any additional code accumulated
+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded.
+m4_defun([_LT_CONFIG_COMMANDS],
+[AC_PROVIDE_IFELSE([LT_OUTPUT],
+	dnl If the libtool generation code has been placed in $CONFIG_LT,
+	dnl instead of duplicating it all over again into config.status,
+	dnl then we will have config.status run $CONFIG_LT later, so it
+	dnl needs to know what name is stored there:
+        [AC_CONFIG_COMMANDS([libtool],
+            [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])],
+    dnl If the libtool generation code is destined for config.status,
+    dnl expand the accumulated commands and init code now:
+    [AC_CONFIG_COMMANDS([libtool],
+        [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])])
+])#_LT_CONFIG_COMMANDS
+
+
+# Initialize.
+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT],
+[
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+_LT_CONFIG_STATUS_DECLARATIONS
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$[]1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_quote_varnames); do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in lt_decl_all_varnames([[ \
+]], lt_decl_dquote_varnames); do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[[\\\\\\\`\\"\\\$]]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+_LT_OUTPUT_LIBTOOL_INIT
+])
+
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable.  If COMMENT is supplied, it is inserted after the
+# `#!' sequence but before initialization text begins.  After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script.  The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+m4_ifdef([AS_INIT_GENERATED],
+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
+[m4_defun([_LT_GENERATED_FILE_INIT],
+[m4_require([AS_PREPARE])]dnl
+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
+[lt_write_fail=0
+cat >$1 <<_ASEOF || lt_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+$2
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$1 <<\_ASEOF || lt_write_fail=1
+AS_SHELL_SANITIZE
+_AS_PREPARE
+exec AS_MESSAGE_FD>&1
+_ASEOF
+test $lt_write_fail = 0 && chmod +x $1[]dnl
+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
+
+# LT_OUTPUT
+# ---------
+# This macro allows early generation of the libtool script (before
+# AC_OUTPUT is called), incase it is used in configure for compilation
+# tests.
+AC_DEFUN([LT_OUTPUT],
+[: ${CONFIG_LT=./config.lt}
+AC_MSG_NOTICE([creating $CONFIG_LT])
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec AS_MESSAGE_LOG_FD>>config.log
+{
+  echo
+  AS_BOX([Running $as_me.])
+} >&AS_MESSAGE_LOG_FD
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $[0] [[OPTIONS]]
+
+  -h, --help      print this help, then exit
+  -V, --version   print version number, then exit
+  -q, --quiet     do not print progress messages
+  -d, --debug     don't remove temporary files
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
+configured by $[0], generated by m4_PACKAGE_STRING.
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $[#] != 0
+do
+  case $[1] in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) AC_MSG_ERROR([unrecognized option: $[1]
+Try \`$[0] --help' for more information.]) ;;
+
+    *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec AS_MESSAGE_FD>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+AC_MSG_NOTICE([creating $ofile])
+_LT_OUTPUT_LIBTOOL_COMMANDS
+AS_EXIT(0)
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test "$silent" = yes &&
+  lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
+])# LT_OUTPUT
+
+
+# _LT_CONFIG(TAG)
+# ---------------
+# If TAG is the built-in tag, create an initial libtool script with a
+# default configuration from the untagged config vars.  Otherwise add code
+# to config.status for appending the configuration named by TAG from the
+# matching tagged config vars.
+m4_defun([_LT_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_CONFIG_SAVE_COMMANDS([
+  m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl
+  m4_if(_LT_TAG, [C], [
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+_LT_COPYING
+_LT_LIBTOOL_TAGS
+
+# ### BEGIN LIBTOOL CONFIG
+_LT_LIBTOOL_CONFIG_VARS
+_LT_LIBTOOL_TAG_VARS
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+  _LT_PROG_LTMAIN
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
+
+  _LT_PROG_REPLACE_SHELLFNS
+
+   mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+],
+[cat <<_LT_EOF >> "$ofile"
+
+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded
+dnl in a comment (ie after a #).
+# ### BEGIN LIBTOOL TAG CONFIG: $1
+_LT_LIBTOOL_TAG_VARS(_LT_TAG)
+# ### END LIBTOOL TAG CONFIG: $1
+_LT_EOF
+])dnl /m4_if
+],
+[m4_if([$1], [], [
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'], [])
+])dnl /_LT_CONFIG_SAVE_COMMANDS
+])# _LT_CONFIG
+
+
+# LT_SUPPORTED_TAG(TAG)
+# ---------------------
+# Trace this macro to discover what tags are supported by the libtool
+# --tag option, using:
+#    autoconf --trace 'LT_SUPPORTED_TAG:$1'
+AC_DEFUN([LT_SUPPORTED_TAG], [])
+
+
+# C support is built-in for now
+m4_define([_LT_LANG_C_enabled], [])
+m4_define([_LT_TAGS], [])
+
+
+# LT_LANG(LANG)
+# -------------
+# Enable libtool support for the given language if not already enabled.
+AC_DEFUN([LT_LANG],
+[AC_BEFORE([$0], [LT_OUTPUT])dnl
+m4_case([$1],
+  [C],			[_LT_LANG(C)],
+  [C++],		[_LT_LANG(CXX)],
+  [Java],		[_LT_LANG(GCJ)],
+  [Fortran 77],		[_LT_LANG(F77)],
+  [Fortran],		[_LT_LANG(FC)],
+  [Windows Resource],	[_LT_LANG(RC)],
+  [m4_ifdef([_LT_LANG_]$1[_CONFIG],
+    [_LT_LANG($1)],
+    [m4_fatal([$0: unsupported language: "$1"])])])dnl
+])# LT_LANG
+
+
+# _LT_LANG(LANGNAME)
+# ------------------
+m4_defun([_LT_LANG],
+[m4_ifdef([_LT_LANG_]$1[_enabled], [],
+  [LT_SUPPORTED_TAG([$1])dnl
+  m4_append([_LT_TAGS], [$1 ])dnl
+  m4_define([_LT_LANG_]$1[_enabled], [])dnl
+  _LT_LANG_$1_CONFIG($1)])dnl
+])# _LT_LANG
+
+
+# _LT_LANG_DEFAULT_CONFIG
+# -----------------------
+m4_defun([_LT_LANG_DEFAULT_CONFIG],
+[AC_PROVIDE_IFELSE([AC_PROG_CXX],
+  [LT_LANG(CXX)],
+  [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_F77],
+  [LT_LANG(F77)],
+  [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])])
+
+AC_PROVIDE_IFELSE([AC_PROG_FC],
+  [LT_LANG(FC)],
+  [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])])
+
+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal
+dnl pulling things in needlessly.
+AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+  [LT_LANG(GCJ)],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+    [LT_LANG(GCJ)],
+    [AC_PROVIDE_IFELSE([LT_PROG_GCJ],
+      [LT_LANG(GCJ)],
+      [m4_ifdef([AC_PROG_GCJ],
+	[m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([A][M_PROG_GCJ],
+	[m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])])
+       m4_ifdef([LT_PROG_GCJ],
+	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
+
+AC_PROVIDE_IFELSE([LT_PROG_RC],
+  [LT_LANG(RC)],
+  [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
+])# _LT_LANG_DEFAULT_CONFIG
+
+# Obsolete macros:
+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
+dnl AC_DEFUN([AC_LIBTOOL_F77], [])
+dnl AC_DEFUN([AC_LIBTOOL_FC], [])
+dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
+
+
+# _LT_TAG_COMPILER
+# ----------------
+m4_defun([_LT_TAG_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl
+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl
+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl
+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_TAG_COMPILER
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+m4_defun([_LT_COMPILER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+m4_defun([_LT_LINKER_BOILERPLATE],
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+])# _LT_LINKER_BOILERPLATE
+
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+  case $host_os in
+    rhapsody* | darwin*)
+    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+    AC_CHECK_TOOL([LIPO], [lipo], [:])
+    AC_CHECK_TOOL([OTOOL], [otool], [:])
+    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+    _LT_DECL([], [DSYMUTIL], [1],
+      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+    _LT_DECL([], [NMEDIT], [1],
+      [Tool to change global to local symbols on Mac OS X])
+    _LT_DECL([], [LIPO], [1],
+      [Tool to manipulate fat objects and archives on Mac OS X])
+    _LT_DECL([], [OTOOL], [1],
+      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+    _LT_DECL([], [OTOOL64], [1],
+      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+      [lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+	# By default we will add the -single_module flag. You can override
+	# by either setting the environment variable LT_MULTI_MODULE
+	# non-empty at configure time, or by adding -multi_module to the
+	# link flags.
+	rm -rf libconftest.dylib*
+	echo "int foo(void){return 1;}" > conftest.c
+	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	  lt_cv_apple_cc_single_mod=yes
+	else
+	  cat conftest.err >&AS_MESSAGE_LOG_FD
+	fi
+	rm -rf libconftest.dylib*
+	rm -f conftest.*
+      fi])
+    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+      [lt_cv_ld_exported_symbols_list],
+      [lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+	[lt_cv_ld_exported_symbols_list=yes],
+	[lt_cv_ld_exported_symbols_list=no])
+	LDFLAGS="$save_LDFLAGS"
+    ])
+    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
+      [lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
+      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+	lt_cv_ld_force_load=yes
+      else
+	cat conftest.err >&AS_MESSAGE_LOG_FD
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+    ])
+    case $host_os in
+    rhapsody* | darwin1.[[012]])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+	10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+	10.[[012]]*)
+	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+	10.*)
+	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES
+# --------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_automatic, $1)=yes
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  else
+    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  fi
+  _LT_TAGVAR(link_all_deplibs, $1)=yes
+  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+    m4_if([$1], [CXX],
+[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+    fi
+],[])
+  else
+  _LT_TAGVAR(ld_shlibs, $1)=no
+  fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
+# ----------------------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+# Store the results from the different compilers for each TAGNAME.
+# Allow to override them for all tags through lt_cv_aix_libpath.
+m4_defun([_LT_SYS_MODULE_PATH_AIX],
+[m4_require([_LT_DECL_SED])dnl
+if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
+  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
+  lt_aix_libpath_sed='[
+      /Import File Strings/,/^$/ {
+	  /^0/ {
+	      s/^0  *\([^ ]*\) *$/\1/
+	      p
+	  }
+      }]'
+  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi],[])
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
+  fi
+  ])
+  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
+fi
+])# _LT_SYS_MODULE_PATH_AIX
+
+
+# _LT_SHELL_INIT(ARG)
+# -------------------
+m4_define([_LT_SHELL_INIT],
+[m4_divert_text([M4SH-INIT], [$1
+])])# _LT_SHELL_INIT
+
+
+
+# _LT_PROG_ECHO_BACKSLASH
+# -----------------------
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script which will find a shell with a builtin
+# printf (which we can use as an echo command).
+m4_defun([_LT_PROG_ECHO_BACKSLASH],
+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+AC_MSG_CHECKING([how to print strings])
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$[]1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
+
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*" 
+}
+
+case "$ECHO" in
+  printf*) AC_MSG_RESULT([printf]) ;;
+  print*) AC_MSG_RESULT([print -r]) ;;
+  *) AC_MSG_RESULT([cat]) ;;
+esac
+
+m4_ifdef([_AS_DETECT_SUGGESTED],
+[_AS_DETECT_SUGGESTED([
+  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test "X`printf %s $ECHO`" = "X$ECHO" \
+      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
+
+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
+])# _LT_PROG_ECHO_BACKSLASH
+
+
+# _LT_WITH_SYSROOT
+# ----------------
+AC_DEFUN([_LT_WITH_SYSROOT],
+[AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[  --with-sysroot[=DIR] Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted.  We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   AC_MSG_RESULT([${with_sysroot}])
+   AC_MSG_ERROR([The sysroot must be an absolute path.])
+   ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and in which our libraries should be installed.])])
+
+# _LT_ENABLE_LOCK
+# ---------------
+m4_defun([_LT_ENABLE_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+  [AS_HELP_STRING([--disable-libtool-lock],
+    [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+	HPUX_IA64_MODE="32"
+	;;
+      *ELF-64*)
+	HPUX_IA64_MODE="64"
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -melf32bsmip"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -melf32bmipn32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -melf64bmip"
+	;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -32"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -n32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -64"
+	  ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_i386_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_i386"
+	    ;;
+	  ppc64-*linux*|powerpc64-*linux*)
+	    LD="${LD-ld} -m elf32ppclinux"
+	    ;;
+	  s390x-*linux*)
+	    LD="${LD-ld} -m elf_s390"
+	    ;;
+	  sparc64-*linux*)
+	    LD="${LD-ld} -m elf32_sparc"
+	    ;;
+	esac
+	;;
+      *64-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_x86_64_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_x86_64"
+	    ;;
+	  ppc*-*linux*|powerpc*-*linux*)
+	    LD="${LD-ld} -m elf64ppc"
+	    ;;
+	  s390*-*linux*|s390*-*tpf*)
+	    LD="${LD-ld} -m elf64_s390"
+	    ;;
+	  sparc*-*linux*)
+	    LD="${LD-ld} -m elf64_sparc"
+	    ;;
+	esac
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_PUSH(C)
+     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_POP])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)
+	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+	  LD="${LD-ld} -64"
+	fi
+	;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+esac
+
+need_locks="$enable_libtool_lock"
+])# _LT_ENABLE_LOCK
+
+
+# _LT_PROG_AR
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+  [lt_cv_ar_at_file=no
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
+     [echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
+      AC_TRY_EVAL([lt_ar_try])
+      if test "$ac_status" -eq 0; then
+	# Ensure the archiver fails upon bogus file names.
+	rm -f conftest.$ac_objext libconftest.a
+	AC_TRY_EVAL([lt_ar_try])
+	if test "$ac_status" -ne 0; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+     ])
+  ])
+
+if test "x$lt_cv_ar_at_file" = xno; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+_LT_DECL([], [archiver_list_spec], [1],
+  [How to feed a file listing to the archiver])
+])# _LT_PROG_AR
+
+
+# _LT_CMD_OLD_ARCHIVE
+# -------------------
+m4_defun([_LT_CMD_OLD_ARCHIVE],
+[_LT_PROG_AR
+
+AC_CHECK_TOOL(STRIP, strip, :)
+test -z "$STRIP" && STRIP=:
+_LT_DECL([], [STRIP], [1], [A symbol stripping program])
+
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+test -z "$RANLIB" && RANLIB=:
+_LT_DECL([], [RANLIB], [1],
+    [Commands used to install an old-style archive])
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
+_LT_DECL([], [old_postinstall_cmds], [2])
+_LT_DECL([], [old_postuninstall_cmds], [2])
+_LT_TAGDECL([], [old_archive_cmds], [2],
+    [Commands used to build an old-style archive])
+_LT_DECL([], [lock_old_archive_extraction], [0],
+    [Whether to use a lock for old archive extraction])
+])# _LT_CMD_OLD_ARCHIVE
+
+
+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([_LT_COMPILER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $RM conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$5], , :, [$5])
+else
+    m4_if([$6], , :, [$6])
+fi
+])# _LT_COMPILER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
+
+
+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                  [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------
+# Check whether the given linker option works
+AC_DEFUN([_LT_LINKER_OPTION],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    m4_if([$4], , :, [$4])
+else
+    m4_if([$5], , :, [$5])
+fi
+])# _LT_LINKER_OPTION
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [])
+
+
+# LT_CMD_MAX_LEN
+#---------------
+AC_DEFUN([LT_CMD_MAX_LEN],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[	 ]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
+_LT_DECL([], [max_cmd_len], [0],
+    [What is the maximum length of a command?])
+])# LT_CMD_MAX_LEN
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [])
+
+
+# _LT_HEADER_DLFCN
+# ----------------
+m4_defun([_LT_HEADER_DLFCN],
+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl
+])# _LT_HEADER_DLFCN
+
+
+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                      ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ----------------------------------------------------------------
+m4_defun([_LT_TRY_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+  [$4]
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+[#line $LINENO "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
+
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}]
+_LT_EOF
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_dlunknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_TRY_DLOPEN_SELF
+
+
+# LT_SYS_DLOPEN_SELF
+# ------------------
+AC_DEFUN([LT_SYS_DLOPEN_SELF],
+[m4_require([_LT_HEADER_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+    ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+	  [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
+	[AC_CHECK_FUNC([dlopen],
+	      [lt_cv_dlopen="dlopen"],
+	  [AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+	    [AC_CHECK_LIB([svld], [dlopen],
+		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+	      [AC_CHECK_LIB([dld], [dld_link],
+		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
+	      ])
+	    ])
+	  ])
+	])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+	  lt_cv_dlopen_self, [dnl
+	  _LT_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+	  lt_cv_dlopen_self_static, [dnl
+	  _LT_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+_LT_DECL([dlopen_support], [enable_dlopen], [0],
+	 [Whether dlopen is supported])
+_LT_DECL([dlopen_self], [enable_dlopen_self], [0],
+	 [Whether dlopen of programs is supported])
+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0],
+	 [Whether dlopen of statically linked programs is supported])
+])# LT_SYS_DLOPEN_SELF
+
+# Old name:
+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
+
+
+# _LT_COMPILER_C_O([TAGNAME])
+# ---------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler.
+# This macro does not hard code the compiler like AC_PROG_CC_C_O.
+m4_defun([_LT_COMPILER_C_O],
+[m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+     fi
+   fi
+   chmod u+w . 2>&AS_MESSAGE_LOG_FD
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+])
+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1],
+	[Does compiler simultaneously support -c and -o options?])
+])# _LT_COMPILER_C_O
+
+
+# _LT_COMPILER_FILE_LOCKS([TAGNAME])
+# ----------------------------------
+# Check to see if we can do hard links to lock some files if needed
+m4_defun([_LT_COMPILER_FILE_LOCKS],
+[m4_require([_LT_ENABLE_LOCK])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+_LT_COMPILER_C_O([$1])
+
+hard_links="nottested"
+if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test "$hard_links" = no; then
+    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?])
+])# _LT_COMPILER_FILE_LOCKS
+
+
+# _LT_CHECK_OBJDIR
+# ----------------
+m4_defun([_LT_CHECK_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+_LT_DECL([], [objdir], [0],
+         [The name of the directory that contains temporary libtool files])dnl
+m4_pattern_allow([LT_OBJDIR])dnl
+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/",
+  [Define to the sub-directory in which libtool stores uninstalled libraries.])
+])# _LT_CHECK_OBJDIR
+
+
+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME])
+# --------------------------------------
+# Check hardcoding attributes.
+m4_defun([_LT_LINKER_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" ||
+   test -n "$_LT_TAGVAR(runpath_var, $1)" ||
+   test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$_LT_TAGVAR(hardcode_direct, $1)" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+     test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink ||
+   test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+_LT_TAGDECL([], [hardcode_action], [0],
+    [How to hardcode a shared library path into an executable])
+])# _LT_LINKER_HARDCODE_LIBPATH
+
+
+# _LT_CMD_STRIPLIB
+# ----------------
+m4_defun([_LT_CMD_STRIPLIB],
+[m4_require([_LT_DECL_EGREP])
+striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      AC_MSG_RESULT([yes])
+    else
+      AC_MSG_RESULT([no])
+    fi
+    ;;
+  *)
+    AC_MSG_RESULT([no])
+    ;;
+  esac
+fi
+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries])
+_LT_DECL([], [striplib], [1])
+])# _LT_CMD_STRIPLIB
+
+
+# _LT_SYS_DYNAMIC_LINKER([TAG])
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+m4_defun([_LT_SYS_DYNAMIC_LINKER],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
+m4_if([$1],
+	[], [
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[[4-9]]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[[45]]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+m4_if([$1], [],[
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
+
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+m4_if([$1], [],[
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[[123]]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+haiku*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[[3-9]]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
+    [lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+	 LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+	 [lt_cv_shlibpath_overrides_runpath=yes])])
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+    ])
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
+    *)				need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[[89]] | openbsd2.[[89]].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+_LT_DECL([], [variables_saved_for_relink], [1],
+    [Variables whose values should be saved in libtool wrapper scripts and
+    restored at link time])
+_LT_DECL([], [need_lib_prefix], [0],
+    [Do we need the "lib" prefix for modules?])
+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?])
+_LT_DECL([], [version_type], [0], [Library versioning type])
+_LT_DECL([], [runpath_var], [0],  [Shared library runtime path variable])
+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable])
+_LT_DECL([], [shlibpath_overrides_runpath], [0],
+    [Is shlibpath searched before the hard-coded library search path?])
+_LT_DECL([], [libname_spec], [1], [Format of library name prefix])
+_LT_DECL([], [library_names_spec], [1],
+    [[List of archive names.  First name is the real one, the rest are links.
+    The last name is the one that the linker finds with -lNAME]])
+_LT_DECL([], [soname_spec], [1],
+    [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [install_override_mode], [1],
+    [Permission mode override for installation of shared libraries])
+_LT_DECL([], [postinstall_cmds], [2],
+    [Command to use after installation of a shared archive])
+_LT_DECL([], [postuninstall_cmds], [2],
+    [Command to use after uninstallation of a shared archive])
+_LT_DECL([], [finish_cmds], [2],
+    [Commands used to finish a libtool library installation in a directory])
+_LT_DECL([], [finish_eval], [1],
+    [[As "finish_cmds", except a single script fragment to be evaled but
+    not shown]])
+_LT_DECL([], [hardcode_into_libs], [0],
+    [Whether we should hardcode library paths into libraries])
+_LT_DECL([], [sys_lib_search_path_spec], [2],
+    [Compile-time system search path for libraries])
+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
+    [Run-time system search path for libraries])
+])# _LT_SYS_DYNAMIC_LINKER
+
+
+# _LT_PATH_TOOL_PREFIX(TOOL)
+# --------------------------
+# find a file program which can recognize shared library
+AC_DEFUN([_LT_PATH_TOOL_PREFIX],
+[m4_require([_LT_DECL_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="m4_if([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+_LT_DECL([], [MAGIC_CMD], [0],
+	 [Used to examine libraries when file_magic_cmd begins with "file"])dnl
+])# _LT_PATH_TOOL_PREFIX
+
+# Old name:
+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
+
+
+# _LT_PATH_MAGIC
+# --------------
+# find a file program which can recognize a shared library
+m4_defun([_LT_PATH_MAGIC],
+[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])# _LT_PATH_MAGIC
+
+
+# LT_PATH_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([LT_PATH_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
+
+AC_ARG_WITH([gnu-ld],
+    [AS_HELP_STRING([--with-gnu-ld],
+	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])dnl
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+_LT_PATH_LD_GNU
+AC_SUBST([LD])
+
+_LT_TAGDECL([], [LD], [1], [The linker used to build libraries])
+])# LT_PATH_LD
+
+# Old names:
+AU_ALIAS([AM_PROG_LD], [LT_PATH_LD])
+AU_ALIAS([AC_PROG_LD], [LT_PATH_LD])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_LD], [])
+dnl AC_DEFUN([AC_PROG_LD], [])
+
+
+# _LT_PATH_LD_GNU
+#- --------------
+m4_defun([_LT_PATH_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# _LT_PATH_LD_GNU
+
+
+# _LT_CMD_RELOAD
+# --------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+m4_defun([_LT_CMD_RELOAD],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+  lt_cv_ld_reload_flag,
+  [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test "$GCC" != yes; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_TAGDECL([], [reload_cmds], [2])dnl
+])# _LT_CMD_RELOAD
+
+
+# _LT_CHECK_MAGIC_METHOD
+# ----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_MAGIC_METHOD],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[[4-9]]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[[45]]*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix[[3-9]]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+])
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+_LT_DECL([], [deplibs_check_method], [1],
+    [Method to check whether dependent libraries are shared objects])
+_LT_DECL([], [file_magic_cmd], [1],
+    [Command to use when deplibs_check_method = "file_magic"])
+_LT_DECL([], [file_magic_glob], [1],
+    [How to find potential files when deplibs_check_method = "file_magic"])
+_LT_DECL([], [want_nocaseglob], [1],
+    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
+])# _LT_CHECK_MAGIC_METHOD
+
+
+# LT_PATH_NM
+# ----------
+# find the pathname to a BSD- or MS-compatible name lister
+AC_DEFUN([LT_PATH_NM],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
+fi])
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
+  AC_SUBST([DUMPBIN])
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
+AC_SUBST([NM])
+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
+
+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
+  [lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
+  cat conftest.out >&AS_MESSAGE_LOG_FD
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*])
+])# LT_PATH_NM
+
+# Old names:
+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM])
+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_PROG_NM], [])
+dnl AC_DEFUN([AC_PROG_NM], [])
+
+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+# --------------------------------
+# how to determine the name of the shared library
+# associated with a specific link library.
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+m4_require([_LT_DECL_DLLTOOL])
+AC_CACHE_CHECK([how to associate runtime and link libraries],
+lt_cv_sharedlib_from_linklib_cmd,
+[lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh
+  # decide which to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+  ;;
+esac
+])
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
+    [Command to associate shared and link libraries])
+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+
+
+# _LT_PATH_MANIFEST_TOOL
+# ----------------------
+# locate the manifest tool
+m4_defun([_LT_PATH_MANIFEST_TOOL],
+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
+  [lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*])
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+  MANIFEST_TOOL=:
+fi
+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
+])# _LT_PATH_MANIFEST_TOOL
+
+
+# LT_LIB_M
+# --------
+# check for math library
+AC_DEFUN([LT_LIB_M],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+AC_SUBST([LIBM])
+])# LT_LIB_M
+
+# Old name:
+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_CHECK_LIBM], [])
+
+
+# _LT_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------
+m4_defun([_LT_COMPILER_NO_RTTI],
+[m4_require([_LT_TAG_COMPILER])dnl
+
+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+  case $cc_basename in
+  nvcc*)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
+  esac
+
+  _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+    lt_cv_prog_compiler_rtti_exceptions,
+    [-fno-rtti -fno-exceptions], [],
+    [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
+	[Compiler flag to turn off builtin functions])
+])# _LT_COMPILER_NO_RTTI
+
+
+# _LT_CMD_GLOBAL_SYMBOLS
+# ----------------------
+m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDEGRST]]'
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[[BCDEGRST]]'
+  ;;
+osf*)
+  symcode='[[BCDEGQRST]]'
+  ;;
+solaris*)
+  symcode='[[BDRT]]'
+  ;;
+sco3.2v5*)
+  symcode='[[DT]]'
+  ;;
+sysv4.2uw2*)
+  symcode='[[DT]]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[[ABDT]]'
+  ;;
+sysv4)
+  symcode='[[DFNSTU]]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK ['"\
+"     {last_section=section; section=\$ 3};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx]"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[	 ]]\($symcode$symcode*\)[[	 ]][[	 ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
+
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT@&t@_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT@&t@_DLSYM_CONST
+#else
+# define LT@&t@_DLSYM_CONST const
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_LT_EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+	  cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+LT@&t@_DLSYM_CONST struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[[]] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_globsym_save_LIBS=$LIBS
+	  lt_globsym_save_CFLAGS=$CFLAGS
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS=$lt_globsym_save_LIBS
+	  CFLAGS=$lt_globsym_save_CFLAGS
+	else
+	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  AC_MSG_RESULT(failed)
+else
+  AC_MSG_RESULT(ok)
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
+  nm_file_list_spec='@'
+fi
+
+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
+    [Take the output of nm and produce a listing of raw symbols and C names])
+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
+    [Transform the output of nm in a proper C declaration])
+_LT_DECL([global_symbol_to_c_name_address],
+    [lt_cv_sys_global_symbol_to_c_name_address], [1],
+    [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+    [Transform the output of nm in a C name address pair when lib prefix is needed])
+_LT_DECL([], [nm_file_list_spec], [1],
+    [Specify filename containing input files for $NM])
+]) # _LT_CMD_GLOBAL_SYMBOLS
+
+
+# _LT_COMPILER_PIC([TAGNAME])
+# ---------------------------
+m4_defun([_LT_COMPILER_PIC],
+[m4_require([_LT_TAG_COMPILER])dnl
+_LT_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_TAGVAR(lt_prog_compiler_static, $1)=
+
+m4_if([$1], [CXX], [
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+      ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[[4-9]]*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	else
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+      mingw* | cygwin* | os2* | pw32* | cegcc*)
+	# This hack is so that the source file can tell whether it is being
+	# built for inclusion in a dll (and should export symbols for example).
+	m4_if([$1], [GCJ], [],
+	  [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+	;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+	    if test "$host_cpu" != ia64; then
+	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    ;;
+	  ecpc* )
+	    # old Intel C++ for x86_64 which still supported -KPIC.
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  icpc* )
+	    # Intel C++, used to be incompatible with GCC.
+	    # ICC 10 doesn't accept -KPIC any more.
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  pgCC* | pgcpp*)
+	    # Portland Group C++ compiler
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
+	    # IBM XL 8.0, 9.0 on PPC and BlueGene
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd*)
+	;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+	;;
+    esac
+  fi
+],
+[
+  if test "$GCC" = yes; then
+    _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
+
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	# +Z the default
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+
+    interix[[3-9]]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      else
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      m4_if([$1], [GCJ], [],
+	[_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC (with -KPIC) is the default.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+	;;
+      nagfor*)
+	# NAG Fortran compiler
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+        ;;
+      ccc*)
+        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+        # All Alpha code is PIC.
+        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+	;;
+      *)
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ F* | *Sun*Fortran*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+	  ;;
+	*Sun\ C*)
+	  # Sun C 5.9
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # All OSF/1 code is PIC.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    rdos*)
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+      *)
+	_LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	_LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+	_LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    unicos*)
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+      _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *)
+      _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+    esac
+  fi
+])
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)=
+    ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
+    ;;
+esac
+
+AC_CACHE_CHECK([for $compiler option to produce PIC],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+  _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
+    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
+    [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
+    [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
+     "" | " "*) ;;
+     *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+     esac],
+    [_LT_TAGVAR(lt_prog_compiler_pic, $1)=
+     _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
+	[Additional compiler flags for building library objects])
+
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+	[How to pass a linker flag through the compiler])
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
+  $lt_tmp_static_flag,
+  [],
+  [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
+	[Compiler flag to prevent dynamic linking])
+])# _LT_COMPILER_PIC
+
+
+# _LT_LINKER_SHLIBS([TAGNAME])
+# ----------------------------
+# See if the linker supports building shared libraries.
+m4_defun([_LT_LINKER_SHLIBS],
+[AC_REQUIRE([LT_PATH_LD])dnl
+AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_TAG_COMPILER])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+m4_if([$1], [CXX], [
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+  case $host_os in
+  aix[[4-9]]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    # Also, AIX nm treats weak defined symbols like other global defined
+    # symbols, whereas GNU nm marks them as "W".
+    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    else
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+    ;;
+  cygwin* | mingw* | cegcc*)
+    case $cc_basename in
+    cl*) ;;
+    *)
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+      ;;
+    esac
+    ;;
+  *)
+    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+    ;;
+  esac
+], [
+  runpath_var=
+  _LT_TAGVAR(allow_undefined_flag, $1)=
+  _LT_TAGVAR(always_export_symbols, $1)=no
+  _LT_TAGVAR(archive_cmds, $1)=
+  _LT_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_TAGVAR(compiler_needs_object, $1)=no
+  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+  _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+  _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(hardcode_automatic, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
+  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+  _LT_TAGVAR(hardcode_libdir_separator, $1)=
+  _LT_TAGVAR(hardcode_minus_L, $1)=no
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_TAGVAR(inherit_rpath, $1)=no
+  _LT_TAGVAR(link_all_deplibs, $1)=unknown
+  _LT_TAGVAR(module_cmds, $1)=
+  _LT_TAGVAR(module_expsym_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_new_cmds, $1)=
+  _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+  _LT_TAGVAR(thread_safe_flag_spec, $1)=
+  _LT_TAGVAR(whole_archive_flag_spec, $1)=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  _LT_TAGVAR(include_expsyms, $1)=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  _LT_TAGVAR(ld_shlibs, $1)=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+	# The AIX port of GNU ld has always aspired to compatibility
+	# with the native linker.  However, as the warning in the GNU ld
+	# block says, versions before 2.19.5* couldn't really create working
+	# shared libraries, regardless of the interface used.
+	case `$LD -v 2>&1` in
+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+	  *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
+	  *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
+	  *)
+	    lt_use_gnu_ld_interface=yes
+	    ;;
+	esac
+	;;
+      *)
+	lt_use_gnu_ld_interface=yes
+	;;
+    esac
+  fi
+
+  if test "$lt_use_gnu_ld_interface" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[[3-9]]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	_LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+      # as there is no search path for DLLs.
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=no
+      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    haiku*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    interix[[3-9]]*)
+      _LT_TAGVAR(hardcode_direct, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+	case $cc_basename in
+	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
+	esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+	 && test "$tmp_diet" = no
+      then
+	tmp_addflag=' $pic_flag'
+	tmp_sharedflag='-shared'
+	case $cc_basename,$host_cpu in
+        pgcc*)				# Portland Group C compiler
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95* | pgfortran*)
+					# Portland Group f77 and f90 compilers
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	lf95*)				# Lahey Fortran 8.1
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)=
+	  tmp_sharedflag='--shared' ;;
+	xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+	  tmp_sharedflag='-qmkshrobj'
+	  tmp_addflag= ;;
+	nvcc*)	# Cuda Compiler Driver 2.2
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  _LT_TAGVAR(compiler_needs_object, $1)=yes
+	  ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  _LT_TAGVAR(compiler_needs_object, $1)=yes
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	esac
+	_LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+        if test "x$supports_anon_versioning" = xyes; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	    echo "local: *; };" >> $output_objdir/$libname.ver~
+	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+	case $cc_basename in
+	xlf* | bgf* | bgxlf* | mpixlf*)
+	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+	  if test "x$supports_anon_versioning" = xyes; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	      echo "local: *; };" >> $output_objdir/$libname.ver~
+	      $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+	  fi
+	  ;;
+	esac
+      else
+        _LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  # For security reasons, it is highly recommended that you always
+	  # use absolute paths for naming shared libraries, and exclude the
+	  # DT_RUNPATH tag from executables and libraries.  But doing so
+	  # requires that you compile everything twice, which is a pain.
+	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  else
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+
+    if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then
+      runpath_var=
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=
+      _LT_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	_LT_TAGVAR(hardcode_direct, $1)=unsupported
+      fi
+      ;;
+
+    aix[[4-9]]*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	# Also, AIX nm treats weak defined symbols like other global
+	# defined symbols, whereas GNU nm marks them as "W".
+	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	else
+	  _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+	  for ld_flag in $LDFLAGS; do
+	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+	    aix_use_runtimelinking=yes
+	    break
+	  fi
+	  done
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      _LT_TAGVAR(archive_cmds, $1)=''
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[[012]]|aix4.[[012]].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	  # We have reworked collect2
+	  :
+	  else
+	  # We have old collect2
+	  _LT_TAGVAR(hardcode_direct, $1)=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_TAGVAR(hardcode_libdir_separator, $1)=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
+
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      _LT_TAGVAR(always_export_symbols, $1)=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	_LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        _LT_SYS_MODULE_PATH_AIX([$1])
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+	if test "$host_cpu" = ia64; then
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	  _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an
+	 # empty executable.
+	 _LT_SYS_MODULE_PATH_AIX([$1])
+	 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	  _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	  if test "$with_gnu_ld" = yes; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	  fi
+	  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[[45]]*)
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      case $cc_basename in
+      cl*)
+	# Native MSVC
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	_LT_TAGVAR(always_export_symbols, $1)=yes
+	_LT_TAGVAR(file_list_spec, $1)='@'
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=".dll"
+	# FIXME: Setting linknames here is a bad hack.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+	_LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	    sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+	  else
+	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+	  fi~
+	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+	  linknames='
+	# The linker will not automatically build a static lib if we build a DLL.
+	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+	# Don't use ranlib
+	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+	_LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+	  lt_tool_outputfile="@TOOL_OUTPUT@"~
+	  case $lt_outputfile in
+	    *.exe|*.EXE) ;;
+	    *)
+	      lt_outputfile="$lt_outputfile.exe"
+	      lt_tool_outputfile="$lt_tool_outputfile.exe"
+	      ;;
+	  esac~
+	  if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+	    $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+	    $RM "$lt_outputfile.manifest";
+	  fi'
+	;;
+      *)
+	# Assume MSVC wrapper
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	_LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Tell ltmain to make .lib files, not .a files.
+	libext=lib
+	# Tell ltmain to make .dll files, not .so files.
+	shrext_cmds=".dll"
+	# FIXME: Setting linknames here is a bad hack.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+	# The linker will automatically build a .lib file if we build a DLL.
+	_LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	# FIXME: Should let the user specify the lib program.
+	_LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	;;
+      esac
+      ;;
+
+    darwin* | rhapsody*)
+      _LT_DARWIN_LINKER_FEATURES($1)
+      ;;
+
+    dgux*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    freebsd1*)
+      _LT_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
+	_LT_TAGVAR(hardcode_direct, $1)=yes
+	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	_LT_TAGVAR(hardcode_minus_L, $1)=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	m4_if($1, [], [
+	  # Older versions of the 11.00 compiler do not understand -b yet
+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+	  _LT_LINKER_OPTION([if $CC understands -b],
+	    _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
+	    [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+	    [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
+	  [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  _LT_TAGVAR(hardcode_direct, $1)=no
+	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	  ;;
+	*)
+	  _LT_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  _LT_TAGVAR(hardcode_minus_L, $1)=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	# Try to use the -exported_symbol ld option, if it does not
+	# work, assume that -exports_file does not work either and
+	# implicitly export all symbols.
+	# This should be the same for all languages, so no per-tag cache variable.
+	AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
+	  [lt_cv_irix_exported_symbol],
+	  [save_LDFLAGS="$LDFLAGS"
+	   LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+	   AC_LINK_IFELSE(
+	     [AC_LANG_SOURCE(
+	        [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
+			      [C++], [[int foo (void) { return 0; }]],
+			      [Fortran 77], [[
+      subroutine foo
+      end]],
+			      [Fortran], [[
+      subroutine foo
+      end]])])],
+	      [lt_cv_irix_exported_symbol=yes],
+	      [lt_cv_irix_exported_symbol=no])
+           LDFLAGS="$save_LDFLAGS"])
+	if test "$lt_cv_irix_exported_symbol" = yes; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+	fi
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(inherit_rpath, $1)=yes
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    newsos6)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+	_LT_TAGVAR(hardcode_direct, $1)=yes
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	else
+	  case $host_os in
+	   openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+	     _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	     ;;
+	   *)
+	     _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	     _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	     ;;
+	  esac
+	fi
+      else
+	_LT_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    os2*)
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      else
+	_LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+      fi
+      _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    solaris*)
+      _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+	case `$CC -V 2>&1` in
+	*"Compilers 5.0"*)
+	  wlarc=''
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+	  ;;
+	*)
+	  wlarc='${wl}'
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+	  ;;
+	esac
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      case $host_os in
+      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+      *)
+	# The compiler driver will combine and reorder linker options,
+	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but is careful enough not to reorder.
+	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	if test "$GCC" = yes; then
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	else
+	  _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+	  _LT_TAGVAR(hardcode_direct, $1)=no
+        ;;
+	motorola)
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4.3*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	_LT_TAGVAR(ld_shlibs, $1)=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+      _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      _LT_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym'
+	;;
+      esac
+    fi
+  fi
+])
+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld
+
+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl
+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl
+_LT_DECL([], [extract_expsyms_cmds], [2],
+    [The commands to extract the exported symbol list from a shared archive])
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+  # Assume -lc should be added
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $_LT_TAGVAR(archive_cmds, $1) in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
+	[lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
+	[$RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+	  pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+	  _LT_TAGVAR(allow_undefined_flag, $1)=
+	  if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+	  then
+	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+	  else
+	    lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  fi
+	  _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+	])
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0],
+    [Whether or not to add -lc for building shared libraries])
+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes],
+    [enable_shared_with_static_runtimes], [0],
+    [Whether or not to disallow shared libs when runtime libs are static])
+_LT_TAGDECL([], [export_dynamic_flag_spec], [1],
+    [Compiler flag to allow reflexive dlopens])
+_LT_TAGDECL([], [whole_archive_flag_spec], [1],
+    [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+    [Whether the compiler copes with passing no objects directly])
+_LT_TAGDECL([], [old_archive_from_new_cmds], [2],
+    [Create an old-style archive from a shared archive])
+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
+    [Create a temporary old-style archive to link instead of a shared archive])
+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive])
+_LT_TAGDECL([], [archive_expsym_cmds], [2])
+_LT_TAGDECL([], [module_cmds], [2],
+    [Commands used to build a loadable module if different from building
+    a shared archive.])
+_LT_TAGDECL([], [module_expsym_cmds], [2])
+_LT_TAGDECL([], [with_gnu_ld], [1],
+    [Whether we are building with GNU ld or not])
+_LT_TAGDECL([], [allow_undefined_flag], [1],
+    [Flag that allows shared libraries with undefined symbols to be built])
+_LT_TAGDECL([], [no_undefined_flag], [1],
+    [Flag that enforces no undefined symbols])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
+    [Flag to hardcode $libdir into a binary during linking.
+    This must work even if $libdir does not exist])
+_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
+    [[If ld is used when linking, flag to hardcode $libdir into a binary
+    during linking.  This must work even if $libdir does not exist]])
+_LT_TAGDECL([], [hardcode_libdir_separator], [1],
+    [Whether we need a single "-rpath" flag with a separated argument])
+_LT_TAGDECL([], [hardcode_direct], [0],
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    DIR into the resulting binary and the resulting library dependency is
+    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+    library is relocated])
+_LT_TAGDECL([], [hardcode_minus_L], [0],
+    [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_shlibpath_var], [0],
+    [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+    into the resulting binary])
+_LT_TAGDECL([], [hardcode_automatic], [0],
+    [Set to "yes" if building a shared library automatically hardcodes DIR
+    into the library and all subsequent libraries and executables linked
+    against it])
+_LT_TAGDECL([], [inherit_rpath], [0],
+    [Set to yes if linker adds runtime paths of dependent libraries
+    to runtime path list])
+_LT_TAGDECL([], [link_all_deplibs], [0],
+    [Whether libtool must link a program against all its dependency libraries])
+_LT_TAGDECL([], [always_export_symbols], [0],
+    [Set to "yes" if exported symbols are required])
+_LT_TAGDECL([], [export_symbols_cmds], [2],
+    [The commands to list exported symbols])
+_LT_TAGDECL([], [exclude_expsyms], [1],
+    [Symbols that should not be listed in the preloaded symbols])
+_LT_TAGDECL([], [include_expsyms], [1],
+    [Symbols that must always be exported])
+_LT_TAGDECL([], [prelink_cmds], [2],
+    [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [postlink_cmds], [2],
+    [Commands necessary for finishing linking programs])
+_LT_TAGDECL([], [file_list_spec], [1],
+    [Specify filename containing input files])
+dnl FIXME: Not yet implemented
+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1],
+dnl    [Compiler flag to generate thread safe objects])
+])# _LT_LINKER_SHLIBS
+
+
+# _LT_LANG_C_CONFIG([TAG])
+# ------------------------
+# Ensure that the configuration variables for a C compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_C_CONFIG],
+[m4_require([_LT_DECL_EGREP])dnl
+lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+_LT_TAG_COMPILER
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_SYS_DYNAMIC_LINKER($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+  LT_SYS_DLOPEN_SELF
+  _LT_CMD_STRIPLIB
+
+  # Report which library types will actually be built
+  AC_MSG_CHECKING([if libtool supports shared libraries])
+  AC_MSG_RESULT([$can_build_shared])
+
+  AC_MSG_CHECKING([whether to build shared libraries])
+  test "$can_build_shared" = "no" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test "$enable_shared" = yes && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[[4-9]]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  AC_MSG_RESULT([$enable_shared])
+
+  AC_MSG_CHECKING([whether to build static libraries])
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  AC_MSG_RESULT([$enable_static])
+
+  _LT_CONFIG($1)
+fi
+AC_LANG_POP
+CC="$lt_save_CC"
+])# _LT_LANG_C_CONFIG
+
+
+# _LT_LANG_CXX_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a C++ compiler are suitably
+# defined.  These variables are subsequently used by _LT_CONFIG to write
+# the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_CXX_CONFIG],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  AC_PROG_CXXCPP
+else
+  _lt_caught_CXX_error=yes
+fi
+
+AC_LANG_PUSH(C++)
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_CFLAGS=$CFLAGS
+  lt_save_LD=$LD
+  lt_save_GCC=$GCC
+  GCC=$GXX
+  lt_save_with_gnu_ld=$with_gnu_ld
+  lt_save_path_LD=$lt_cv_path_LD
+  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+  else
+    $as_unset lt_cv_prog_gnu_ld
+  fi
+  if test -n "${lt_cv_path_LDCXX+set}"; then
+    lt_cv_path_LD=$lt_cv_path_LDCXX
+  else
+    $as_unset lt_cv_path_LD
+  fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  CFLAGS=$CXXFLAGS
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test "$GXX" = yes; then
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+    else
+      _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+    fi
+
+    if test "$GXX" = yes; then
+      # Set up default GNU C++ configuration
+
+      LT_PATH_LD
+
+      # Check if GNU C++ uses GNU ld as the underlying linker, since the
+      # archiving commands below assume that GNU ld is being used.
+      if test "$with_gnu_ld" = yes; then
+        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+        # If archive_cmds runs LD, not CC, wlarc should be empty
+        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+        #     investigate it a little bit more. (MM)
+        wlarc='${wl}'
+
+        # ancient GNU ld didn't support --whole-archive et. al.
+        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+	  $GREP 'no-whole-archive' > /dev/null; then
+          _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+        else
+          _LT_TAGVAR(whole_archive_flag_spec, $1)=
+        fi
+      else
+        with_gnu_ld=no
+        wlarc=
+
+        # A generic and very simple default shared library creation
+        # command for GNU C++ for the case where it uses the native
+        # linker, instead of GNU ld.  If possible, this setting should
+        # overridden to take advantage of the native linker features on
+        # the platform it is being used on.
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      fi
+
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+    else
+      GXX=no
+      with_gnu_ld=no
+      wlarc=
+    fi
+
+    # PORTME: fill in a description of your system's C++ link characteristics
+    AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+    _LT_TAGVAR(ld_shlibs, $1)=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+      aix[[4-9]]*)
+        if test "$host_cpu" = ia64; then
+          # On IA64, the linker does run time linking by default, so we don't
+          # have to do anything special.
+          aix_use_runtimelinking=no
+          exp_sym_flag='-Bexport'
+          no_entry_flag=""
+        else
+          aix_use_runtimelinking=no
+
+          # Test if we are trying to use run time linking or normal
+          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+          # need to do runtime linking.
+          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+	    for ld_flag in $LDFLAGS; do
+	      case $ld_flag in
+	      *-brtl*)
+	        aix_use_runtimelinking=yes
+	        break
+	        ;;
+	      esac
+	    done
+	    ;;
+          esac
+
+          exp_sym_flag='-bexport'
+          no_entry_flag='-bnoentry'
+        fi
+
+        # When large executables or shared objects are built, AIX ld can
+        # have problems creating the table of contents.  If linking a library
+        # or program results in "error TOC overflow" add -mminimal-toc to
+        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+        _LT_TAGVAR(archive_cmds, $1)=''
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
+
+        if test "$GXX" = yes; then
+          case $host_os in aix4.[[012]]|aix4.[[012]].*)
+          # We only want to do this on AIX 4.2 and lower, the check
+          # below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	    # We have reworked collect2
+	    :
+	  else
+	    # We have old collect2
+	    _LT_TAGVAR(hardcode_direct, $1)=unsupported
+	    # It fails to find uninstalled libraries when the uninstalled
+	    # path is not listed in the libpath.  Setting hardcode_minus_L
+	    # to unsupported forces relinking
+	    _LT_TAGVAR(hardcode_minus_L, $1)=yes
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=
+	  fi
+          esac
+          shared_flag='-shared'
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag="$shared_flag "'${wl}-G'
+	  fi
+        else
+          # not using gcc
+          if test "$host_cpu" = ia64; then
+	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	  # chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+          else
+	    if test "$aix_use_runtimelinking" = yes; then
+	      shared_flag='${wl}-G'
+	    else
+	      shared_flag='${wl}-bM:SRE'
+	    fi
+          fi
+        fi
+
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+	# export.
+        _LT_TAGVAR(always_export_symbols, $1)=yes
+        if test "$aix_use_runtimelinking" = yes; then
+          # Warning - without using the other runtime loading flags (-brtl),
+          # -berok will link without error, but may produce a broken library.
+          _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          _LT_SYS_MODULE_PATH_AIX([$1])
+          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        else
+          if test "$host_cpu" = ia64; then
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	    _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+          else
+	    # Determine the default libpath from the value encoded in an
+	    # empty executable.
+	    _LT_SYS_MODULE_PATH_AIX([$1])
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	    # Warning - without using the other run time loading flags,
+	    # -berok will link without error, but may produce a broken library.
+	    _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	    _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	    if test "$with_gnu_ld" = yes; then
+	      # We only use this code for GNU lds that support --whole-archive.
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    else
+	      # Exported symbols can be pulled into shared objects from archives
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	    fi
+	    _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+	    # This is similar to how AIX traditionally builds its shared
+	    # libraries.
+	    _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+          fi
+        fi
+        ;;
+
+      beos*)
+	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	  # support --undefined.  This deserves some investigation.  FIXME
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	else
+	  _LT_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+
+      chorus*)
+        case $cc_basename in
+          *)
+	  # FIXME: insert proper C++ library support
+	  _LT_TAGVAR(ld_shlibs, $1)=no
+	  ;;
+        esac
+        ;;
+
+      cygwin* | mingw* | pw32* | cegcc*)
+	case $GXX,$cc_basename in
+	,cl* | no,cl*)
+	  # Native MSVC
+	  # hardcode_libdir_flag_spec is actually meaningless, as there is
+	  # no search path for DLLs.
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  _LT_TAGVAR(always_export_symbols, $1)=yes
+	  _LT_TAGVAR(file_list_spec, $1)='@'
+	  # Tell ltmain to make .lib files, not .a files.
+	  libext=lib
+	  # Tell ltmain to make .dll files, not .so files.
+	  shrext_cmds=".dll"
+	  # FIXME: Setting linknames here is a bad hack.
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	      $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+	    else
+	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+	    fi~
+	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+	    linknames='
+	  # The linker will not automatically build a static lib if we build a DLL.
+	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	  # Don't use ranlib
+	  _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+	  _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+	    lt_tool_outputfile="@TOOL_OUTPUT@"~
+	    case $lt_outputfile in
+	      *.exe|*.EXE) ;;
+	      *)
+		lt_outputfile="$lt_outputfile.exe"
+		lt_tool_outputfile="$lt_tool_outputfile.exe"
+		;;
+	    esac~
+	    func_to_tool_file "$lt_outputfile"~
+	    if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+	      $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+	      $RM "$lt_outputfile.manifest";
+	    fi'
+	  ;;
+	*)
+	  # g++
+	  # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+	  # as there is no search path for DLLs.
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+	  _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+	  _LT_TAGVAR(always_export_symbols, $1)=no
+	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	    # If the export-symbols file already is a .def file (1st line
+	    # is EXPORTS), use it as is; otherwise, prepend...
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	      cp $export_symbols $output_objdir/$soname.def;
+	    else
+	      echo EXPORTS > $output_objdir/$soname.def;
+	      cat $export_symbols >> $output_objdir/$soname.def;
+	    fi~
+	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	  else
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	  fi
+	  ;;
+	esac
+	;;
+      darwin* | rhapsody*)
+        _LT_DARWIN_LINKER_FEATURES($1)
+	;;
+
+      dgux*)
+        case $cc_basename in
+          ec++*)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          ghcx*)
+	    # Green Hills C++ Compiler
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+        esac
+        ;;
+
+      freebsd[[12]]*)
+        # C++ shared libraries reported to be fairly broken before
+	# switch to ELF
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      freebsd-elf*)
+        _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+        ;;
+
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+        ;;
+
+      gnu*)
+        ;;
+
+      haiku*)
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        ;;
+
+      hpux9*)
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+        _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+				             # but as the default
+				             # location of the library.
+
+        case $cc_basename in
+          CC*)
+            # FIXME: insert proper C++ library support
+            _LT_TAGVAR(ld_shlibs, $1)=no
+            ;;
+          aCC*)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            # Commands to make compiler produce verbose output that lists
+            # what "hidden" libraries, object files and flags are used when
+            # linking a shared library.
+            #
+            # There doesn't appear to be a way to prevent this compiler from
+            # explicitly linking system object files so we need to strip them
+            # from the output so that they don't get included in the library
+            # dependencies.
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            ;;
+          *)
+            if test "$GXX" = yes; then
+              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              _LT_TAGVAR(ld_shlibs, $1)=no
+            fi
+            ;;
+        esac
+        ;;
+
+      hpux10*|hpux11*)
+        if test $with_gnu_ld = no; then
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	  _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+	      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            _LT_TAGVAR(hardcode_direct, $1)=no
+            _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+            ;;
+          *)
+            _LT_TAGVAR(hardcode_direct, $1)=yes
+            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+					         # but as the default
+					         # location of the library.
+            ;;
+        esac
+
+        case $cc_basename in
+          CC*)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          aCC*)
+	    case $host_cpu in
+	      hppa*64*)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      ia64*)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      *)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	    esac
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+          *)
+	    if test "$GXX" = yes; then
+	      if test $with_gnu_ld = no; then
+	        case $host_cpu in
+	          hppa*64*)
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          ia64*)
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          *)
+	            _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	        esac
+	      fi
+	    else
+	      # FIXME: insert proper C++ library support
+	      _LT_TAGVAR(ld_shlibs, $1)=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      interix[[3-9]]*)
+	_LT_TAGVAR(hardcode_direct, $1)=no
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+	# Instead, shared libraries are loaded at an image base (0x10000000 by
+	# default) and relocated if they conflict, which is a slow very memory
+	# consuming and fragmenting process.  To avoid this, we pick a random,
+	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	_LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+	    # SGI C++
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    if test "$GXX" = yes; then
+	      if test "$with_gnu_ld" = no; then
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	      else
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+	      fi
+	    fi
+	    _LT_TAGVAR(link_all_deplibs, $1)=yes
+	    ;;
+        esac
+        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+        _LT_TAGVAR(inherit_rpath, $1)=yes
+        ;;
+
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+	    ;;
+	  icpc* | ecpc* )
+	    # Intel C++
+	    with_gnu_ld=yes
+	    # version 8.0 and above of icpc choke on multiply defined symbols
+	    # if we add $predep_objects and $postdep_objects, however 7.1 and
+	    # earlier do not add the objects themselves.
+	    case `$CC -V 2>&1` in
+	      *"Version 7."*)
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	      *)  # Version 8.0 or newer
+	        tmp_idyn=
+	        case $host_cpu in
+		  ia64*) tmp_idyn=' -i_dynamic';;
+		esac
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+		_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	    esac
+	    _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+	    case `$CC -V` in
+	    *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
+	      _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+	      _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+		$RANLIB $oldlib'
+	      _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      ;;
+	    *) # Version 6 and above use weak symbols
+	      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      ;;
+	    esac
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+            ;;
+	  cxx*)
+	    # Compaq C++
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	    runpath_var=LD_RUN_PATH
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+	    ;;
+	  xl* | mpixl* | bgxl*)
+	    # IBM XL 8.0 on PPC, with GNU ld
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    if test "x$supports_anon_versioning" = xyes; then
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+		echo "local: *; };" >> $output_objdir/$libname.ver~
+		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	    fi
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	      _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	      _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	      _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+	      # Not sure whether something based on
+	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+	      # would be better.
+	      output_verbose_link_cmd='func_echo_all'
+
+	      # Archives containing C++ object files must be created using
+	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	      # necessary to make sure instantiated templates are included
+	      # in the archive.
+	      _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+
+      lynxos*)
+        # FIXME: insert proper C++ library support
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	;;
+
+      m88k*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+	;;
+
+      mvs*)
+        case $cc_basename in
+          cxx*)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+	  *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+	esac
+	;;
+
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	  _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+	  wlarc=
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	  _LT_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	fi
+	# Workaround some broken pre-1.5 toolchains
+	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+	;;
+
+      *nto* | *qnx*)
+        _LT_TAGVAR(ld_shlibs, $1)=yes
+	;;
+
+      openbsd2*)
+        # C++ shared libraries are fairly broken
+	_LT_TAGVAR(ld_shlibs, $1)=no
+	;;
+
+      openbsd*)
+	if test -f /usr/libexec/ld.so; then
+	  _LT_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	  _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+	    _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+	    _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+	  fi
+	  output_verbose_link_cmd=func_echo_all
+	else
+	  _LT_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+
+      osf3* | osf4* | osf5*)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	    # Archives containing C++ object files must be created using
+	    # the KAI C++ compiler.
+	    case $host in
+	      osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;;
+	      *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;;
+	    esac
+	    ;;
+          RCC*)
+	    # Rational C++ 2.4.1
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          cxx*)
+	    case $host in
+	      osf3*)
+	        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+		;;
+	      *)
+	        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	          echo "-hidden">> $lib.exp~
+	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
+	          $RM $lib.exp'
+	        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+		;;
+	    esac
+
+	    _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+	  *)
+	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	      _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	      case $host in
+	        osf3*)
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+		  ;;
+	        *)
+	          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+		  ;;
+	      esac
+
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	      _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	      # Commands to make compiler produce verbose output that lists
+	      # what "hidden" libraries, object files and flags are used when
+	      # linking a shared library.
+	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+	    else
+	      # FIXME: insert proper C++ library support
+	      _LT_TAGVAR(ld_shlibs, $1)=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      psos*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      sunos4*)
+        case $cc_basename in
+          CC*)
+	    # Sun C++ 4.x
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          lcc*)
+	    # Lucid
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+        esac
+        ;;
+
+      solaris*)
+        case $cc_basename in
+          CC* | sunCC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+            _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
+	    _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	    _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	    _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	    case $host_os in
+	      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+	      *)
+		# The compiler driver will combine and reorder linker options,
+		# but understands `-z linker_flag'.
+	        # Supported since Solaris 2.6 (maybe 2.5.1?)
+		_LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+	        ;;
+	    esac
+	    _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+	    output_verbose_link_cmd='func_echo_all'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	    ;;
+          gcx*)
+	    # Green Hills C++ Compiler
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	    # The C++ compiler must be used to create the archive.
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    # GNU C++ compiler with Solaris linker
+	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	      _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+		  $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      else
+	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	        # platform.
+	        _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      fi
+
+	      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+	      case $host_os in
+		solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+		*)
+		  _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+		  ;;
+	      esac
+	    fi
+	    ;;
+        esac
+        ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+      _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      case $cc_basename in
+        CC*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+      esac
+      ;;
+
+      sysv5* | sco3.2v5* | sco5v6*)
+	# Note: We can NOT use -z defs as we might desire, because we do not
+	# link with -lc, and that would cause any symbols used from libc to
+	# always be unresolved, which means just about no library would
+	# ever link correctly.  If we're not using GNU ld we use -z text
+	# though, which does catch some bad symbols but isn't as heavy-handed
+	# as -z defs.
+	_LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+	_LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+	_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+	_LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir'
+	_LT_TAGVAR(hardcode_libdir_separator, $1)=':'
+	_LT_TAGVAR(link_all_deplibs, $1)=yes
+	_LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+	runpath_var='LD_RUN_PATH'
+
+	case $cc_basename in
+          CC*)
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
+	      '"$_LT_TAGVAR(old_archive_cmds, $1)"
+	    _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
+	      '"$_LT_TAGVAR(reload_cmds, $1)"
+	    ;;
+	  *)
+	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    ;;
+	esac
+      ;;
+
+      tandem*)
+        case $cc_basename in
+          NCC*)
+	    # NonStop-UX NCC 3.20
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    _LT_TAGVAR(ld_shlibs, $1)=no
+	    ;;
+        esac
+        ;;
+
+      vxworks*)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+
+      *)
+        # FIXME: insert proper C++ library support
+        _LT_TAGVAR(ld_shlibs, $1)=no
+        ;;
+    esac
+
+    AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)])
+    test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+    _LT_TAGVAR(GCC, $1)="$GXX"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  with_gnu_ld=$lt_save_with_gnu_ld
+  lt_cv_path_LDCXX=$lt_cv_path_LD
+  lt_cv_path_LD=$lt_save_path_LD
+  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+AC_LANG_POP
+])# _LT_LANG_CXX_CONFIG
+
+
+# _LT_FUNC_STRIPNAME_CNF
+# ----------------------
+# func_stripname_cnf prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+#
+# This function is identical to the (non-XSI) version of func_stripname,
+# except this one can be used by m4 code that may be executed by configure,
+# rather than the libtool script.
+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
+AC_REQUIRE([_LT_DECL_SED])
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
+func_stripname_cnf ()
+{
+  case ${2} in
+  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+  esac
+} # func_stripname_cnf
+])# _LT_FUNC_STRIPNAME_CNF
+
+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
+# ---------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
+# Dependencies to place before and after the object being linked:
+_LT_TAGVAR(predep_objects, $1)=
+_LT_TAGVAR(postdep_objects, $1)=
+_LT_TAGVAR(predeps, $1)=
+_LT_TAGVAR(postdeps, $1)=
+_LT_TAGVAR(compiler_lib_search_path, $1)=
+
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library.  It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF
+int a;
+void foo (void) { a = 0; }
+_LT_EOF
+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer*4 a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF
+      subroutine foo
+      implicit none
+      integer a
+      a=0
+      return
+      end
+_LT_EOF
+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF
+public class foo {
+  private int a;
+  public void bar (void) {
+    a = 0;
+  }
+};
+_LT_EOF
+])
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+esac
+
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case ${prev}${p} in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" ||
+          test $p = "-R"; then
+	 prev=$p
+	 continue
+       fi
+
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
+       if test "$pre_test_object_deps_done" = no; then
+	 case ${prev} in
+	 -L | -R)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then
+	     _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+	   else
+	     _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$_LT_TAGVAR(postdeps, $1)"; then
+	   _LT_TAGVAR(postdeps, $1)="${prev}${p}"
+	 else
+	   _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
+	 fi
+       fi
+       prev=
+       ;;
+
+    *.lto.$objext) ;; # Ignore GCC LTO objects
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$_LT_TAGVAR(predep_objects, $1)"; then
+	   _LT_TAGVAR(predep_objects, $1)="$p"
+	 else
+	   _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p"
+	 fi
+       else
+	 if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then
+	   _LT_TAGVAR(postdep_objects, $1)="$p"
+	 else
+	   _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
+
+# PORTME: override above test on systems where it is broken
+m4_if([$1], [CXX],
+[case $host_os in
+interix[[3-9]]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  _LT_TAGVAR(predep_objects,$1)=
+  _LT_TAGVAR(postdep_objects,$1)=
+  _LT_TAGVAR(postdeps,$1)=
+  ;;
+
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC* | sunCC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+esac
+])
+
+case " $_LT_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+    [The directories searched by this compiler when creating a shared library])
+_LT_TAGDECL([], [predep_objects], [1],
+    [Dependencies to place before and after the objects being linked to
+    create a shared library])
+_LT_TAGDECL([], [postdep_objects], [1])
+_LT_TAGDECL([], [predeps], [1])
+_LT_TAGDECL([], [postdeps], [1])
+_LT_TAGDECL([], [compiler_lib_search_path], [1],
+    [The library search path used internally by the compiler when linking
+    a shared library])
+])# _LT_SYS_HIDDEN_LIBDEPS
+
+
+# _LT_LANG_F77_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for a Fortran 77 compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_F77_CONFIG],
+[AC_LANG_PUSH(Fortran 77)
+if test -z "$F77" || test "X$F77" = "Xno"; then
+  _lt_disable_F77=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the F77 compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_F77" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC="$CC"
+  lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
+  CC=${F77-"f77"}
+  CFLAGS=$FFLAGS
+  compiler=$CC
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+  GCC=$G77
+  if test -n "$compiler"; then
+    AC_MSG_CHECKING([if libtool supports shared libraries])
+    AC_MSG_RESULT([$can_build_shared])
+
+    AC_MSG_CHECKING([whether to build shared libraries])
+    test "$can_build_shared" = "no" && enable_shared=no
+
+    # On AIX, shared libraries and static libraries use the same namespace, and
+    # are all built from PIC.
+    case $host_os in
+      aix3*)
+        test "$enable_shared" = yes && enable_static=no
+        if test -n "$RANLIB"; then
+          archive_cmds="$archive_cmds~\$RANLIB \$lib"
+          postinstall_cmds='$RANLIB $lib'
+        fi
+        ;;
+      aix[[4-9]]*)
+	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+	  test "$enable_shared" = yes && enable_static=no
+	fi
+        ;;
+    esac
+    AC_MSG_RESULT([$enable_shared])
+
+    AC_MSG_CHECKING([whether to build static libraries])
+    # Make sure either enable_shared or enable_static is yes.
+    test "$enable_shared" = yes || enable_static=yes
+    AC_MSG_RESULT([$enable_static])
+
+    _LT_TAGVAR(GCC, $1)="$G77"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC="$lt_save_CC"
+  CFLAGS="$lt_save_CFLAGS"
+fi # test "$_lt_disable_F77" != yes
+
+AC_LANG_POP
+])# _LT_LANG_F77_CONFIG
+
+
+# _LT_LANG_FC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for a Fortran compiler are
+# suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_FC_CONFIG],
+[AC_LANG_PUSH(Fortran)
+
+if test -z "$FC" || test "X$FC" = "Xno"; then
+  _lt_disable_FC=yes
+fi
+
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_TAGVAR(allow_undefined_flag, $1)=
+_LT_TAGVAR(always_export_symbols, $1)=no
+_LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_TAGVAR(hardcode_minus_L, $1)=no
+_LT_TAGVAR(hardcode_automatic, $1)=no
+_LT_TAGVAR(inherit_rpath, $1)=no
+_LT_TAGVAR(module_cmds, $1)=
+_LT_TAGVAR(module_expsym_cmds, $1)=
+_LT_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+_LT_TAGVAR(no_undefined_flag, $1)=
+_LT_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for fc test sources.
+ac_ext=${ac_fc_srcext-f}
+
+# Object file extension for compiled fc test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# No sense in running all these tests if we already determined that
+# the FC compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_disable_FC" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code="\
+      program t
+      end
+"
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+  _LT_TAG_COMPILER
+
+  # save warnings/boilerplate of simple test code
+  _LT_COMPILER_BOILERPLATE
+  _LT_LINKER_BOILERPLATE
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC="$CC"
+  lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
+  CC=${FC-"f95"}
+  CFLAGS=$FCFLAGS
+  compiler=$CC
+  GCC=$ac_cv_fc_compiler_gnu
+
+  _LT_TAGVAR(compiler, $1)=$CC
+  _LT_CC_BASENAME([$compiler])
+
+  if test -n "$compiler"; then
+    AC_MSG_CHECKING([if libtool supports shared libraries])
+    AC_MSG_RESULT([$can_build_shared])
+
+    AC_MSG_CHECKING([whether to build shared libraries])
+    test "$can_build_shared" = "no" && enable_shared=no
+
+    # On AIX, shared libraries and static libraries use the same namespace, and
+    # are all built from PIC.
+    case $host_os in
+      aix3*)
+        test "$enable_shared" = yes && enable_static=no
+        if test -n "$RANLIB"; then
+          archive_cmds="$archive_cmds~\$RANLIB \$lib"
+          postinstall_cmds='$RANLIB $lib'
+        fi
+        ;;
+      aix[[4-9]]*)
+	if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+	  test "$enable_shared" = yes && enable_static=no
+	fi
+        ;;
+    esac
+    AC_MSG_RESULT([$enable_shared])
+
+    AC_MSG_CHECKING([whether to build static libraries])
+    # Make sure either enable_shared or enable_static is yes.
+    test "$enable_shared" = yes || enable_static=yes
+    AC_MSG_RESULT([$enable_static])
+
+    _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu"
+    _LT_TAGVAR(LD, $1)="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    _LT_SYS_HIDDEN_LIBDEPS($1)
+    _LT_COMPILER_PIC($1)
+    _LT_COMPILER_C_O($1)
+    _LT_COMPILER_FILE_LOCKS($1)
+    _LT_LINKER_SHLIBS($1)
+    _LT_SYS_DYNAMIC_LINKER($1)
+    _LT_LINKER_HARDCODE_LIBPATH($1)
+
+    _LT_CONFIG($1)
+  fi # test -n "$compiler"
+
+  GCC=$lt_save_GCC
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+fi # test "$_lt_disable_FC" != yes
+
+AC_LANG_POP
+])# _LT_LANG_FC_CONFIG
+
+
+# _LT_LANG_GCJ_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Java Compiler compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GCJ_CONFIG],
+[AC_REQUIRE([LT_PROG_GCJ])dnl
+AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GCJ-"gcj"}
+CFLAGS=$GCJFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GCJ_CONFIG
+
+
+# _LT_LANG_RC_CONFIG([TAG])
+# -------------------------
+# Ensure that the configuration variables for the Windows resource compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_RC_CONFIG],
+[AC_REQUIRE([LT_PROG_RC])dnl
+AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=
+CC=${RC-"windres"}
+CFLAGS=
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+if test -n "$compiler"; then
+  :
+  _LT_CONFIG($1)
+fi
+
+GCC=$lt_save_GCC
+AC_LANG_RESTORE
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_RC_CONFIG
+
+
+# LT_PROG_GCJ
+# -----------
+AC_DEFUN([LT_PROG_GCJ],
+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ],
+  [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
+    [AC_CHECK_TOOL(GCJ, gcj,)
+      test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+      AC_SUBST(GCJFLAGS)])])[]dnl
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
+
+
+# LT_PROG_RC
+# ----------
+AC_DEFUN([LT_PROG_RC],
+[AC_CHECK_TOOL(RC, windres,)
+])
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_RC], [])
+
+
+# _LT_DECL_EGREP
+# --------------
+# If we don't have a new enough Autoconf to choose the best grep
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_EGREP],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_REQUIRE([AC_PROG_FGREP])dnl
+test -z "$GREP" && GREP=grep
+_LT_DECL([], [GREP], [1], [A grep program that handles long lines])
+_LT_DECL([], [EGREP], [1], [An ERE matcher])
+_LT_DECL([], [FGREP], [1], [A literal string matcher])
+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too
+AC_SUBST([GREP])
+])
+
+
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+# _LT_DECL_DLLTOOL
+# ----------------
+# Ensure DLLTOOL variable is set.
+m4_defun([_LT_DECL_DLLTOOL],
+[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
+AC_SUBST([DLLTOOL])
+])
+
+# _LT_DECL_SED
+# ------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+m4_defun([_LT_DECL_SED],
+[AC_PROG_SED
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+_LT_DECL([], [SED], [1], [A sed program that does not truncate output])
+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
+    [Sed that helps us avoid accidentally triggering echo(1) options like -n])
+])# _LT_DECL_SED
+
+m4_ifndef([AC_PROG_SED], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+
+m4_defun([AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+IFS=$as_save_IFS
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && continue
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+])
+SED=$lt_cv_path_SED
+AC_SUBST([SED])
+AC_MSG_RESULT([$SED])
+])#AC_PROG_SED
+])#m4_ifndef
+
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
+
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
+[AC_MSG_CHECKING([whether the shell understands some XSI constructs])
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,b/c, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+AC_MSG_RESULT([$xsi_shell])
+_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
+
+AC_MSG_CHECKING([whether the shell understands "+="])
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+AC_MSG_RESULT([$lt_shell_append])
+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
+# ------------------------------------------------------
+# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
+# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
+m4_defun([_LT_PROG_FUNCTION_REPLACE],
+[dnl {
+sed -e '/^$1 ()$/,/^} # $1 /c\
+$1 ()\
+{\
+m4_bpatsubsts([$2], [$], [\\], [^\([	 ]\)], [\\\1])
+} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+])
+
+
+# _LT_PROG_REPLACE_SHELLFNS
+# -------------------------
+# Replace existing portable implementations of several shell functions with
+# equivalent extended shell implementations where those features are available..
+m4_defun([_LT_PROG_REPLACE_SHELLFNS],
+[if test x"$xsi_shell" = xyes; then
+  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
+    case ${1} in
+      */*) func_dirname_result="${1%/*}${2}" ;;
+      *  ) func_dirname_result="${3}" ;;
+    esac])
+
+  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
+    func_basename_result="${1##*/}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
+    case ${1} in
+      */*) func_dirname_result="${1%/*}${2}" ;;
+      *  ) func_dirname_result="${3}" ;;
+    esac
+    func_basename_result="${1##*/}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
+    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+    # positional parameters, so assign one to ordinary parameter first.
+    func_stripname_result=${3}
+    func_stripname_result=${func_stripname_result#"${1}"}
+    func_stripname_result=${func_stripname_result%"${2}"}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
+    func_split_long_opt_name=${1%%=*}
+    func_split_long_opt_arg=${1#*=}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
+    func_split_short_opt_arg=${1#??}
+    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
+    case ${1} in
+      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+      *)    func_lo2o_result=${1} ;;
+    esac])
+
+  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
+
+  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
+
+  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
+fi
+
+if test x"$lt_shell_append" = xyes; then
+  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
+    func_quote_for_eval "${2}"
+dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
+    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
+
+  # Save a `func_append' function call where possible by direct use of '+='
+  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+else
+  # Save a `func_append' function call even when '+=' is not available
+  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
+fi
+])
+
+# _LT_PATH_CONVERSION_FUNCTIONS
+# -----------------------------
+# Determine which file name conversion functions should be used by
+# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
+# for certain cross-compile configurations and native mingw.
+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_MSG_CHECKING([how to convert $build file names to $host format])
+AC_CACHE_VAL(lt_cv_to_host_file_cmd,
+[case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+])
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
+         [0], [convert $build file names to $host format])dnl
+
+AC_MSG_CHECKING([how to convert $build file names to toolchain format])
+AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
+[#assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
+])
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
+         [0], [convert $build files to toolchain format])dnl
+])# _LT_PATH_CONVERSION_FUNCTIONS
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
new file mode 100644
index 0000000..17cfd51
--- /dev/null
+++ b/m4/ltoptions.m4
@@ -0,0 +1,369 @@
+# Helper functions for option handling.                    -*- Autoconf -*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
+#   Inc.
+#   Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 7 ltoptions.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
+
+
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
+m4_define([_LT_MANGLE_OPTION],
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
+
+
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
+# saved as a flag.
+m4_define([_LT_SET_OPTION],
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+        _LT_MANGLE_DEFUN([$1], [$2]),
+    [m4_warning([Unknown $1 option `$2'])])[]dnl
+])
+
+
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+m4_define([_LT_IF_OPTION],
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
+
+
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
+m4_define([_LT_UNLESS_OPTIONS],
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+	    [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
+		      [m4_define([$0_found])])])[]dnl
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
+])[]dnl
+])
+
+
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME.  If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
+m4_defun([_LT_SET_OPTIONS],
+[# Set options
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+    [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+  dnl
+  dnl Simply set some default values (i.e off) if boolean options were not
+  dnl specified:
+  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+  ])
+  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+  ])
+  dnl
+  dnl If no reference was made to various pairs of opposing options, then
+  dnl we run the default mode handler for the pair.  For example, if neither
+  dnl `shared' nor `disable-shared' was passed, we enable building of shared
+  dnl archives by default:
+  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+  		   [_LT_ENABLE_FAST_INSTALL])
+  ])
+])# _LT_SET_OPTIONS
+
+
+## --------------------------------- ##
+## Macros to handle LT_INIT options. ##
+## --------------------------------- ##
+
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
+m4_define([_LT_MANGLE_DEFUN],
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
+
+
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
+m4_define([LT_OPTION_DEFINE],
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
+])# LT_OPTION_DEFINE
+
+
+# dlopen
+# ------
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
+])
+
+AU_DEFUN([AC_LIBTOOL_DLOPEN],
+[_LT_SET_OPTION([LT_INIT], [dlopen])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `dlopen' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
+
+
+# win32-dll
+# ---------
+# Declare package support for building win32 dll's.
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
+[enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+esac
+
+test -z "$AS" && AS=as
+_LT_DECL([], [AS],      [1], [Assembler program])dnl
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
+])# win32-dll
+
+AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `win32-dll' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
+
+
+# _LT_ENABLE_SHARED([DEFAULT])
+# ----------------------------
+# implement the --enable-shared flag, and supports the `shared' and
+# `disable-shared' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_SHARED],
+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([shared],
+    [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+	[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
+
+    _LT_DECL([build_libtool_libs], [enable_shared], [0],
+	[Whether or not to build shared libraries])
+])# _LT_ENABLE_SHARED
+
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
+])
+
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
+])
+
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_SHARED], [])
+dnl AC_DEFUN([AM_DISABLE_SHARED], [])
+
+
+
+# _LT_ENABLE_STATIC([DEFAULT])
+# ----------------------------
+# implement the --enable-static flag, and support the `static' and
+# `disable-static' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_STATIC],
+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([static],
+    [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+	[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_static=]_LT_ENABLE_STATIC_DEFAULT)
+
+    _LT_DECL([build_old_libs], [enable_static], [0],
+	[Whether or not to build static libraries])
+])# _LT_ENABLE_STATIC
+
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
+
+# Old names:
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
+])
+
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
+])
+
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AM_ENABLE_STATIC], [])
+dnl AC_DEFUN([AM_DISABLE_STATIC], [])
+
+
+
+# _LT_ENABLE_FAST_INSTALL([DEFAULT])
+# ----------------------------------
+# implement the --enable-fast-install flag, and support the `fast-install'
+# and `disable-fast-install' LT_INIT options.
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+m4_define([_LT_ENABLE_FAST_INSTALL],
+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
+AC_ARG_ENABLE([fast-install],
+    [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+    [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
+
+_LT_DECL([fast_install], [enable_fast_install], [0],
+	 [Whether or not to optimize for fast installation])dnl
+])# _LT_ENABLE_FAST_INSTALL
+
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+
+# Old names:
+AU_DEFUN([AC_ENABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `fast-install' option into LT_INIT's first parameter.])
+])
+
+AU_DEFUN([AC_DISABLE_FAST_INSTALL],
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you put
+the `disable-fast-install' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
+
+
+# _LT_WITH_PIC([MODE])
+# --------------------
+# implement the --with-pic flag, and support the `pic-only' and `no-pic'
+# LT_INIT options.
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+m4_define([_LT_WITH_PIC],
+[AC_ARG_WITH([pic],
+    [AS_HELP_STRING([--with-pic],
+	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+    [pic_mode="$withval"],
+    [pic_mode=default])
+
+test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
+
+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
+])# _LT_WITH_PIC
+
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
+
+# Old name:
+AU_DEFUN([AC_LIBTOOL_PICMODE],
+[_LT_SET_OPTION([LT_INIT], [pic-only])
+AC_DIAGNOSE([obsolete],
+[$0: Remove this warning and the call to _LT_SET_OPTION when you
+put the `pic-only' option into LT_INIT's first parameter.])
+])
+
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+		 [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+		 [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+		 [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+		 [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+		 [m4_define([_LTDL_TYPE], [convenience])])
diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4
new file mode 100644
index 0000000..9000a05
--- /dev/null
+++ b/m4/ltsugar.m4
@@ -0,0 +1,123 @@
+# ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
+#
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 6 ltsugar.m4
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
+
+
+# lt_join(SEP, ARG1, [ARG2...])
+# -----------------------------
+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
+# associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
+m4_define([lt_join],
+[m4_if([$#], [1], [],
+       [$#], [2], [[$2]],
+       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
+m4_define([_lt_join],
+[m4_if([$#$2], [2], [],
+       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
+
+
+# lt_car(LIST)
+# lt_cdr(LIST)
+# ------------
+# Manipulate m4 lists.
+# These macros are necessary as long as will still need to support
+# Autoconf-2.59 which quotes differently.
+m4_define([lt_car], [[$1]])
+m4_define([lt_cdr],
+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
+       [$#], 1, [],
+       [m4_dquote(m4_shift($@))])])
+m4_define([lt_unquote], $1)
+
+
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+	   m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
+# ----------------------------------------------------------
+# Produce a SEP delimited list of all paired combinations of elements of
+# PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
+# has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
+m4_define([lt_combine],
+[m4_if(m4_eval([$# > 3]), [1],
+       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+	     [m4_foreach([_Lt_suffix],
+		]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+	[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
+
+
+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
+# -----------------------------------------------------------------------
+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
+m4_define([lt_if_append_uniq],
+[m4_ifdef([$1],
+	  [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+		 [lt_append([$1], [$2], [$3])$4],
+		 [$5])],
+	  [lt_append([$1], [$2], [$3])$4])])
+
+
+# lt_dict_add(DICT, KEY, VALUE)
+# -----------------------------
+m4_define([lt_dict_add],
+[m4_define([$1($2)], [$3])])
+
+
+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
+# --------------------------------------------
+m4_define([lt_dict_add_subkey],
+[m4_define([$1($2:$3)], [$4])])
+
+
+# lt_dict_fetch(DICT, KEY, [SUBKEY])
+# ----------------------------------
+m4_define([lt_dict_fetch],
+[m4_ifval([$3],
+	m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
+    m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
+
+
+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
+# -----------------------------------------------------------------
+m4_define([lt_if_dict_fetch],
+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
+	[$5],
+    [$6])])
+
+
+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
+# --------------------------------------------------------------
+m4_define([lt_dict_filter],
+[m4_if([$5], [], [],
+  [lt_join(m4_quote(m4_default([$4], [[, ]])),
+           lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
+		      [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
+])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
new file mode 100644
index 0000000..9c7b5d4
--- /dev/null
+++ b/m4/ltversion.m4
@@ -0,0 +1,23 @@
+# ltversion.m4 -- version numbers			-*- Autoconf -*-
+#
+#   Copyright (C) 2004 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# @configure_input@
+
+# serial 3293 ltversion.m4
+# This file is part of GNU Libtool
+
+m4_define([LT_PACKAGE_VERSION], [2.4])
+m4_define([LT_PACKAGE_REVISION], [1.3293])
+
+AC_DEFUN([LTVERSION_VERSION],
+[macro_version='2.4'
+macro_revision='1.3293'
+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
+_LT_DECL(, macro_revision, 0)
+])
diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4
new file mode 100644
index 0000000..c573da9
--- /dev/null
+++ b/m4/lt~obsolete.m4
@@ -0,0 +1,98 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 5 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else.  This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION],	[AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP],		[AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT],		[AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],	[AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN],		[AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR],		[AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL],	[AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN],		[AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER],	[AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK],		[AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],	[AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],	[AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],	[AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR],		[AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR],		[AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],	[AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC],		[AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU],		[AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG],	[AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD],	[AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS],	[AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP],	[AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP],		[AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED],		[AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME],		[AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE],	[AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE],	[AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL],		[AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP],		[AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN],		[AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],	[AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG],		[AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL],	[AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX],		[AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77],		[AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ],		[AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG],	[AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG],	[AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG],	[AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],	[AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG],	[AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG],	[AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG],		[AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C],	[AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],	[AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
+m4_ifndef([_LT_AC_PROG_CXXCPP],		[AC_DEFUN([_LT_AC_PROG_CXXCPP])])
+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],	[AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
+m4_ifndef([_LT_PROG_ECHO_BACKSLASH],	[AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_PROG_F77],		[AC_DEFUN([_LT_PROG_F77])])
+m4_ifndef([_LT_PROG_FC],		[AC_DEFUN([_LT_PROG_FC])])
+m4_ifndef([_LT_PROG_CXX],		[AC_DEFUN([_LT_PROG_CXX])])
diff --git a/m4/netsnmp_arg.m4 b/m4/netsnmp_arg.m4
new file mode 100644
index 0000000..c32330b
--- /dev/null
+++ b/m4/netsnmp_arg.m4
@@ -0,0 +1,27 @@
+dnl Reports an invalid option and suggests --enable-<ARGUMENT 1> instead
+AC_DEFUN([NETSNMP_INVALID_ENABLE],
+  [AC_MSG_ERROR([Invalid option. Use --enable-$1/--disable-$1 instead])])
+
+dnl Reports an invalid option and suggests --with-<ARGUMENT 1> instead
+AC_DEFUN([NETSNMP_INVALID_WITH],
+  [AC_MSG_ERROR([Invalid option. Use --with-$1/--without-$1 instead])])
+
+dnl Similar to AC_ARG_ENABLE but also defines a matching WITH option that
+dnl suggests the use of the ENABLE option if called
+AC_DEFUN([NETSNMP_ARG_ENABLE],
+  [AC_ARG_ENABLE([$1],[$2]dnl
+     m4_if(m4_eval($# < 3),1,[],[,[$3]])dnl
+     m4_if(m4_eval($# < 4),1,[],[,[$4]]))
+   AC_ARG_WITH(
+     [$1],,
+     [NETSNMP_INVALID_ENABLE([$1])])])
+
+dnl Similar to AC_ARG_WITH but also defines a matching ENABLE option that
+dnl suggests the use of the WITH option if called
+AC_DEFUN([NETSNMP_ARG_WITH],
+  [AC_ARG_WITH([$1],[$2]dnl
+     m4_if(m4_eval($# < 3),1,[],[,[$3]])dnl
+     m4_if(m4_eval($# < 4),1,[],[,[$4]]))
+   AC_ARG_ENABLE(
+     [$1],,
+     [NETSNMP_INVALID_WITH([$1])])])
diff --git a/m4/netsnmp_search_libs.m4 b/m4/netsnmp_search_libs.m4
new file mode 100644
index 0000000..bdd8a12
--- /dev/null
+++ b/m4/netsnmp_search_libs.m4
@@ -0,0 +1,35 @@
+dnl @synopsis NETSNMP_SEARCH_LIBS(FUNCTION, SEARCH-LIBS, [ACTION-IF-FOUND],
+dnl             [ACTION-IF-NOT-FOUND], [OTHER-LIBRARIES], [TARGET-VARIABLE])
+dnl Similar to AC_SEARCH_LIBS but changes TARGET-VARIABLE instead of LIBS
+dnl If TARGET-VARIABLE is unset then LIBS is used
+AC_DEFUN([NETSNMP_SEARCH_LIBS],
+[m4_pushdef([netsnmp_target],m4_ifval([$6],[$6],[LIBS]))
+ AC_CACHE_CHECK([for library containing $1],
+    [netsnmp_cv_func_$1_]netsnmp_target,
+    [netsnmp_func_search_save_LIBS="$LIBS"
+     m4_if(netsnmp_target, [LIBS],
+         [netsnmp_target_val="$LIBS"
+          netsnmp_temp_LIBS="$5 ${LIBS}"],
+         [netsnmp_target_val="$netsnmp_target"
+          netsnmp_temp_LIBS="${netsnmp_target_val} $5 ${LIBS}"])
+     netsnmp_result=no
+     LIBS="${netsnmp_temp_LIBS}"
+     AC_LINK_IFELSE([AC_LANG_CALL([],[$1])],
+         [netsnmp_result="none required"],
+         [for netsnmp_cur_lib in $2 ; do
+              LIBS="-l${netsnmp_cur_lib} ${netsnmp_temp_LIBS}"
+              AC_LINK_IFELSE([AC_LANG_CALL([],[$1])],
+                  [netsnmp_result=-l${netsnmp_cur_lib}
+                   break])
+          done])
+     LIBS="${netsnmp_func_search_save_LIBS}"
+     [netsnmp_cv_func_$1_]netsnmp_target="${netsnmp_result}"])
+ if test "${[netsnmp_cv_func_$1_]netsnmp_target}" != "no" ; then
+    if test "${[netsnmp_cv_func_$1_]netsnmp_target}" != "none required" ; then
+       netsnmp_target="${netsnmp_result} ${netsnmp_target_val}"
+    fi
+    $3
+ m4_ifval([$4], [else
+    $4])
+ fi
+ m4_popdef([netsnmp_target])])
diff --git a/man/Makefile.in b/man/Makefile.in
index ab18375..01fe852 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -14,70 +14,68 @@
 # 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-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
-
-MAN3G = default_store.3 mib_api.3 read_config.3 snmp_agent_api.3 snmp_alarm.3 \
-	snmp_api.3 snmp_sess_api.3 snmp_trap_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 					\
+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
-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
+ALARM_ALIASES   = snmp_alarm_register.3 snmp_alarm_register_hr.3 snmp_alarm_unregister.3
+SESSION_ALIASES = snmp_api_errstring.3 snmp_close.3 snmp_error.3    \
+	snmp_open.3 snmp_perror.3 snmp_read.3 snmp_select_info.3    \
+	snmp_send.3 snmp_sess_perror.3 snmp_timeout.3               \
+	snmp_async_send.3 snmp_synch_response.3
+SSESS_ALIASES   = snmp_sess_async_send.3 snmp_sess_close.3 snmp_sess_error.3 \
+	snmp_sess_init.3 snmp_sess_open.3 snmp_sess_read.3		     \
+	snmp_sess_select_info.3 snmp_sess_send.3			     \
+	snmp_sess_session.3 snmp_sess_timeout.3                              \
+	snmp_sess_synch_response.3
+TRAP_ALIASES    = send_easy_trap.3 send_trap_vars.3 send_v2trap.3 
+VARBIND_ALIASES = fprint_value.3 fprint_variable.3	\
+	print_value.3 print_variable.3			\
+	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)
@@ -85,28 +83,29 @@
 
 all: $(TARGETS) standardall manaliases
 
-manaliases: Makefile
+manaliases: Makefile $(MAN3_API)
 	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 ; 		\
-	done
-	@for i in $(READ_CONFIG_ALIASES) ; do				\
-		echo "making man page alias $$i -> read_config APIs" ;	\
-		echo ".so man3/read_config.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
+	@result=0 ; \
+        for i in $(MAN3_API) ; do				  \
+            for j in `$(SED) -n '/^.SH NAME/,/^.SH SYNOPSIS/p' $$i  | $(SED) -e 's/.- .*//' | $(SED) 's/,.*//'  | $(EGREP) -v '^.SH ' `; do \
+		echo "making man page alias $$j -> $$i APIs" ;    \
+		echo ".so man3/$$i" > $$j.3 ; 		  \
+		if expr "$(MANALIASES)" : ".*$$j\\.3" > /dev/null ; \
+		then \
+		  : ; \
+		else \
+		    var=`echo $$i | $(SED) -e 's/^netsnmp_//' -e 's/_api.3//' | tr '[a-z]' '[A-Z]'` ; \
+		    echo "You must add $$j.3 to the $${var}_ALIASES variable in the Makefile.in" ; \
+		    result=1 ; \
+	        fi; \
+	    done                                                  \
+	done ; \
+	exit $$result
+
+$(MANALIASES): manaliases
+
+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
@@ -180,56 +179,65 @@
 net-snmp-config.1: $(srcdir)/net-snmp-config.1.def ../sedscript
 	$(SED) -f ../sedscript < $(srcdir)/net-snmp-config.1.def > net-snmp-config.1
 
+net-snmp-create-v3-user.1: $(srcdir)/net-snmp-create-v3-user.1.def ../sedscript
+	$(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 > $@
 
-mib_api.3: $(srcdir)/mib_api.3.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/mib_api.3.def > mib_api.3
+netsnmp_varbind_api.3: $(srcdir)/netsnmp_varbind_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/netsnmp_varbind_api.3.def > $@
 
-read_config.3: $(srcdir)/read_config.3.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/read_config.3.def > read_config.3
+netsnmp_pdu_api.3: $(srcdir)/netsnmp_pdu_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/netsnmp_pdu_api.3.def > $@
 
-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_session_api.3: $(srcdir)/netsnmp_session_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/netsnmp_session_api.3.def > $@
+
+netsnmp_mib_api.3: $(srcdir)/netsnmp_mib_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/netsnmp_mib_api.3.def > $@
+
+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_api.3: $(srcdir)/snmp_api.3.def ../sedscript
-	$(SED) -f ../sedscript < $(srcdir)/snmp_api.3.def > snmp_api.3
+netsnmp_sess_api.3: $(srcdir)/netsnmp_sess_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/netsnmp_sess_api.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_agent_api.3: $(srcdir)/netsnmp_agent_api.3.def ../sedscript
+	$(SED) -f ../sedscript < $(srcdir)/netsnmp_agent_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_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
@@ -245,11 +253,11 @@
 	  touch mib2c.conf.5 ; \
 	fi
 
-maninstall:  maninstalldirs $(MAN1) $(MAN1G) $(MAN3) $(MAN5G) $(MAN8) $(MANALIASES)
+maninstall:  maninstalldirs $(MAN1) $(MAN1G) $(MAN3) $(MAN3_API) $(MAN3G) $(MAN5G) $(MAN8G) $(MANALIASES)
 	@for i in $(MAN1) ; do $(INSTALL_DATA) $(srcdir)/`basename $$i` $(INSTALL_PREFIX)$(man1dir) ; echo "install:  installed $$i in $(INSTALL_PREFIX)$(man1dir)" ; done
 	@$(INSTALL_DATA) $(MAN1G) $(INSTALL_PREFIX)$(man1dir)
 	@for i in $(MAN1G) ; do echo "install:  installed $$i in $(INSTALL_PREFIX)$(man1dir)" ; done
-	@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)
@@ -274,11 +282,11 @@
 #
 html: $(MANALL)
 	for i in $(MANALL); do \
-	   if test `wc -l $$i | awk '{print $$1}'` != 1 ; then \
+#	   if test `wc -l $$i | awk '{print $$1}'` != 1 ; then \
 		   base=`echo $$i | sed 's/.[0-9]$$//;'` ; \
 		   echo "<HTML><BODY bgcolor=\"#ffffff\" background=\"../ucd-snmp-bg3.gif\"><PRE>" > $$base.html; \
 		   man2html -r ./$$i | $(PERL) -p -e 's/HREF=\"..\/man.\//HREF=\"/g;s/\.[1-9]\.html/.html/g;' | grep -v 'Content-type:' >> $$base.html; \
 		   a="$$a $$i"; \
-	   fi ; \
+#	   fi ; \
 	done ;\
 	$(PERL) make_index.pl man_sections.txt $$a > index.html
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..ebd2bf6 100644
--- a/man/default_store.3.bot
+++ b/man/default_store.3.bot
@@ -111,10 +111,10 @@
 allocation failure).
 .TP
 .BI "int netsnmp_ds_register_premib(u_char " type ", const char *" ftype ", const char *" token ", int " store ", int " which ");"
-Analogous to the preceeding function, but the
+Analogous to the preceding function, but the
 .I token
 is processed before MIBs are read (this is therefore useful for controlling
 MIB processing options).
 .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/encode_keychange.1.def b/man/encode_keychange.1.def
index 7415617..20f5cc3 100644
--- a/man/encode_keychange.1.def
+++ b/man/encode_keychange.1.def
@@ -3,13 +3,13 @@
 encode_keychange - produce the KeyChange string for SNMPv3
 .SH SYNOPSIS
 .B encode_keychange 
--t md5|sha1
+\-t md5|sha1
 [\fIOPTIONS\fR]
 .SH DESCRIPTION
 .B encode_keychange
 produces a KeyChange string using the old and new passphrases 
 as described in Section 5 of RFC 2274 "User-based Security Model (USM) for 
-version 3 of the Simple Network Management Protocol (SNMPv3)". \fB-t\fR
+version 3 of the Simple Network Management Protocol (SNMPv3)". \fB\-t\fR
 option is mandatory and specifies the hash transform type to use.
 
 The transform is used to convert passphrase to master key for a given
@@ -20,9 +20,9 @@
 (in order listed):
 .IP
 command line options (see 
-.B -N
+.B \-N
 and
-.B -O
+.B \-O
 options below);
 .IP
 the file 
@@ -35,7 +35,7 @@
 .SH OPTIONS
 .TP
 \fB\-E\fR [0x]<\fIengineID\fR> EngineID used for Kul generation.
-<\fIengineID\fR> is intepreted as a hex string when preceeded by 0x,
+<\fIengineID\fR> is intepreted as a hex string when preceded by 0x,
 otherwise it is treated as a text string. If no <\fIengineID\fR> is
 specified, it is constructed from the first IP address for the local
 host.
diff --git a/man/fixproc.1.def b/man/fixproc.1.def
index ef90036..ae88a3d 100644
--- a/man/fixproc.1.def
+++ b/man/fixproc.1.def
@@ -27,10 +27,10 @@
 check process against database /local/etc/fixproc.conf.
 .TP
 .B \-kill
-kill process, wait 5 seconds, kill -9 if still exist
+kill process, wait 5 seconds, kill \-9 if still exist
 .TP
 .B \-restart
-kill process, wait 5 seconds, kill -9 if still exist, then start again
+kill process, wait 5 seconds, kill \-9 if still exist, then start again
 .TP
 .B \-exist
 checks if proc exists in ps && (min <= num. of processes <= max)
diff --git a/man/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/make_index.pl b/man/make_index.pl
index 7ab1dd2..37566ba 100644
--- a/man/make_index.pl
+++ b/man/make_index.pl
@@ -25,6 +25,7 @@
 	chomp($name);
 	if (!exists($pages{$name})) {
 	    print STDERR "$name is in $infile, but not in the rest of the args.\n";
+	    print STDERR "Make sure it's not listed twice in $infile!\n";
 	}
 	open(H,"$name.html");
 	while (<H>) {
diff --git a/man/man_sections.txt b/man/man_sections.txt
index b818b0d..fcce8f9 100644
--- a/man/man_sections.txt
+++ b/man/man_sections.txt
@@ -1,4 +1,5 @@
 # SNMP basic applications
+encode_keychange
 snmpcmd
 snmptranslate
 snmpget
@@ -8,6 +9,7 @@
 snmpbulkwalk
 snmpset
 snmptest
+tkmib
 # SNMP "second-level" applications
 snmptable
 snmpdelta
@@ -17,18 +19,25 @@
 snmpnetstat
 snmpdf
 # Notification manual pages
+snmpinform
 snmptrap
 snmptrapd
 snmptrapd.conf
+traptoemail
 # SNMP application configuration manual pages
+net-snmp-config
 snmpconf
 snmp_config
 snmp.conf
 # Agent manual pages
+fixproc
 snmpd
 snmpd.conf
+snmpd.examples
+snmpd.internal
 mib2c
 mib2c.conf
+mib2c-update
 # SNMP base library APIs
 netsnmp_library
 read_config
@@ -41,33 +50,109 @@
 netsnmp_mib_utilities
 netsnmp_debug
 # Agent API manuals
+add_mibdir
+add_module_replacement
+config_perror
+config_pwarn
+fprint_description
+fprint_objid
+fprint_value
+fprint_variable
+get_module_node
+init_mib
+init_mib_internals
 netsnmp_agent
-snmp_agent_api
-snmp_trap_api
-netsnmp_mib_handler_methods
-netsnmp_utilities
-netsnmp_handler
-netsnmp_scalar
 netsnmp_baby_steps
 netsnmp_bulk_to_next
-netsnmp_scalar_group_group
-netsnmp_example_scalar_int
-netsnmp_table_dataset
-netsnmp_iterator_info_s
-netsnmp_old_api
-netsnmp_watcher
-netsnmp_table_array
-netsnmp_multiplexer
-netsnmp_serialize
 netsnmp_cache_handler
-netsnmp_Container_iterator
-netsnmp_table_iterator
-netsnmp_table
-netsnmp_table_data
-netsnmp_stash_cache
-netsnmp_row_merge
-netsnmp_read_only
-netsnmp_leaf
-netsnmp_instance
 netsnmp_container
+netsnmp_Container_iterator
+netsnmp_ds_get_boolean
+netsnmp_ds_get_int
+netsnmp_ds_get_string
+netsnmp_ds_register_config
+netsnmp_ds_register_premib
+netsnmp_ds_set_boolean
+netsnmp_ds_set_int
+netsnmp_ds_set_string
+netsnmp_ds_shutdown
+netsnmp_example_scalar_int
+netsnmp_handler
+netsnmp_instance
+netsnmp_iterator_info_s
+netsnmp_leaf
+netsnmp_mib_handler_methods
 netsnmp_mode_end_call
+netsnmp_multiplexer
+netsnmp_old_api
+netsnmp_read_only
+netsnmp_row_merge
+netsnmp_scalar
+netsnmp_scalar_group_group
+netsnmp_serialize
+netsnmp_stash_cache
+netsnmp_table
+netsnmp_table_array
+netsnmp_table_data
+netsnmp_table_dataset
+netsnmp_table_iterator
+netsnmp_utilities
+netsnmp_watcher
+print_description
+print_mib
+print_objid
+print_value
+print_variable
+read_all_mibs
+read_config_print_usage
+read_configs
+read_mib
+read_module
+read_module_node
+read_objid
+read_premib_configs
+register_app_config_handler
+register_app_premib_handler
+register_config_handler
+register_mib_handlers
+register_premib_handler
+send_easy_trap
+send_trap_vars
+send_v2trap
+shutdown_mib
+snmp_agent_api
+snmp_alarm_register
+snmp_alarm_register_hr
+snmp_alarm_unregister
+snmp_api_errstring
+snmp_close
+snmp_error
+snmp_free_pdu
+snmp_open
+snmp_perror
+snmp_read
+snmp_select_info
+snmp_send
+snmp_sess_async_send
+snmp_sess_close
+snmp_sess_error
+snmp_sess_init
+snmp_sess_open
+snmp_sess_perror
+snmp_sess_read
+snmp_sess_select_info
+snmp_sess_send
+snmp_sess_session
+snmp_sess_timeout
+snmp_set_mib_warnings
+snmp_set_save_descriptions
+snmp_timeout
+snmp_trap_api
+snprint_objid
+snprint_value
+snprint_variable
+sprint_realloc_objid
+sprint_realloc_value
+sprint_realloc_variable
+unregister_app_config_handler
+unregister_config_handler
\ No newline at end of file
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..3692a65 100644
--- a/man/mib2c.conf.5.in
+++ b/man/mib2c.conf.5.in
@@ -1,7 +1,6 @@
-.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.
+mib2c.conf \[em] How to write mib2c.conf files to do ANYTHING based on MIB input.
 .SH SYNOPSIS
 % cat > mib2c.test.conf  << EOF
 @foreach $t table@
@@ -13,7 +12,7 @@
 @end@
 EOF
 
-% mib2c -c mib2c.test.conf internet
+% mib2c \-c mib2c.test.conf internet
 .SH DESCRIPTION
 The mib2c.conf script language is a MIB-particular language designed
 to easily process MIB nodes in ways that you want.  mib2c is a
diff --git a/man/mib_api.3.def b/man/mib_api.3.def
deleted file mode 100644
index 5b6d1b0..0000000
--- a/man/mib_api.3.def
+++ /dev/null
@@ -1,322 +0,0 @@
-.TH MIB_API 3 "22 Apr 2009" VVERSIONINFO "Net-SNMP"
-.SH NAME
-init_mib, add_mibdir, init_mib_internals,
-add_module_replacement,
-read_module, read_mib, read_all_mibs,
-read_objid, read_module_node, get_module_node,
-snmp_set_mib_warnings, snmp_set_save_descriptions,
-shutdown_mib,
-print_mib,
-print_variable, fprint_variable, snprint_variable, sprint_realloc_variable,
-print_value, fprint_value, snprint_value, sprint_realloc_value,
-print_objid, fprint_objid, snprint_objid, sprint_realloc_objid,
-print_description, fprint_description - mib_api functions
-.SH SYNOPSIS
-.B #include <net-snmp/mib_api.h>
-.PP
-.B "void init_mib(void);
-.br
-.BI "int add_mibdir(const char *" "dirname" );
-.br
-.BI "int add_module_replacement(const char *" "old_module" ", const char *" "new_module" ", const char *" "tag" ", int " "len" );
-.br
-.B "void init_mib_internals(void);
-.br
-.BI "struct tree *read_module(const char *" "name" );
-.br
-.BI "struct tree *read_mib(const char *" "filename" );
-.br
-.B "struct tree *read_all_mibs(void);
-.PP
-.B "void shutdown_mib(void);
-.PP
-.BI "void print_mib(FILE *" "fp" );
-.PP
-.BI "int read_objid(const char *" "input" ", oid *" "output" ", size_t *" "out_len" );
-.br
-.BI "int get_module_node(const char *" "name" ", const char *" "module" ", oid *" "objid" ", size_t *" "objidlen" );
-.PP
-.BI "void print_variable(const oid *" "objid" ", size_t " "objidlen" ", const netsnmp_variable_list *" "variable" );
-.br
-.BI "void fprint_variable(FILE *" fp ", const oid *" objid ", size_t " objidlen ", const netsnmp_variable_list *" variable );
-.br
-.BI "int snprint_variable(char *" "buf" ", size_t " "len" ", const oid *" "objid" ", size_t " "objidlen" ", const netsnmp_variable_list *" "variable" );
-.br
-.BI "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 );
-.PP
-.BI "void print_value(oid *objid, size_t objidlen, const netsnmp_variable_list *variable)
-.br
-.BI "void fprint_value(FILE *" fp ", const oid *" objid ", size_t " objidlen ", const netsnmp_variable_list *" variable );
-.br
-.BI "int snprint_value(char *" buf ", size_t " "len" ", const oid *" objid ", size_t " objidlen ", const netsnmp_variable_list *" variable );
-.br
-.BI "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 );
-.PP
-.BI "void print_objid(const oid *" objid ", size_t " objidlen );
-.br
-.BI "void fprint_objid(FILE *" fp ", const oid *" objid ", size_t " objidlen );
-.br
-.BI "int snprint_objid(char *" buf ", size_t " "len" ", const oid *" objid ", size_t " objidlen );
-.br
-.BI "int sprint_realloc_objid(u_char **" buf ", size_t *" buf_len ", size_t *" out_len ", int "allow_realloc ", const oid *" objid ", size_t " objidlen );
-.PP
-.BI "void print_description(oid *" objid ", size_t " objidlen ", int " width );
-.br
-.BI "void fprint_description(FILE *" fp ", const oid *" objid ", size_t " objidlen ", int " width );
-.PP
-.BI "void snmp_set_mib_warnings(int " level );
-.br
-.BI "void snmp_set_save_descriptions(int " save ");"
-.PP
-.SH DESCRIPTION
-The functions dealing with MIB modules fall into four groups.  Those
-dealing with initialisation and shutdown, those that read in and
-parse MIB files, those that search the MIB tree, and various output
-routines.
-.SS Initialisation and Shutdown
-.B init_mib
-is a convenience function that handles all calls to
-.BR add_mibdir ", " read_module " and " read_mib
-for standard applications.  It should be called before any other
-routine that manipulates or accesses the MIB tree.  This routine sets
-up various internal structures, as well as reading in the default MIB
-modules, as detailed below.
-.PP
-.B add_mibdir
-is used to define the range of directory locations which are searched
-for files containing MIB modules (one module per file).  By default,
-this will be set to the directory
-.I DATADIR/mibs
-but this can be overridden by setting the environment variable
-.I MIBDIRS
-to a (colon-separated) list of directories to search.
-Note that this does not actually load the MIB modules located
-in that directory, but is an initialisation step to make them available.
-This function returns a count of files found in the directory, or a -1
-if there is an error.  
-.PP
-.B init_mib_internals
-sets up the internal structures, preparatory to reading in MIB
-modules.  It should be called after all calls to
-.BR add_mibdir ,
-and before and calls to
-.BR read_module .
-This is called automatically if
-.B init_mib
-is used.
-.PP
-.B shutdown_mib
-will clear the information that was gathered by 
-.BR read_module ", " add_mibdir " and " add_module_replacement .
-It is strongly recommended that one does not invoke
-.BR shutdown_mib
-while there are SNMP sessions being actively managed.
-.SS Reading and Parsing MIBs
-.B add_module_replacement
-can be used to allow new MIB modules to obsolete older ones, without
-needing to amend the imports clauses of other modules.  It takes the
-names of the old and new modules, together with an indication of which
-portions of the old module are affected.
-.RS
-.TS
-tab(+);
-lb lb lb
-l  l  l.
-tag + len + load the new module when:
-NULL + 0 + always (the old module is a strict subset of
- + + the new)
-name + 0 + for the given tag only
-name + non-0 + for any identifier with this prefix
-.TE
-.RE
-It can also be used to handle errors in the module identifiers used
-in MIB import clauses (such as referring to
-.I RFC1213
-instead of
-.IR RFC1213-MIB ).
-.PP
-.B read_module
-locates and parses the module specified, together with any modules
-that it imports from, and adds the contents of these modules to the
-active MIB tree.  Note that
-.B add_mibdir
-must first be called to add the directory containing the file with the
-module definition, if this is not in the standard path.
-.br
-By default, the following MIB modules will be loaded:  IP-MIB, IF-MIB,
-TCP-MIB, UDP-MIB, SNMPv2-MIB, RFC1213-MIB, UCD-SNMP-MIB.
-This can be overridden by setting the environment variable
-.I MIBS
-to a (colon-separated) list of modules to load.
-If this variable starts with a plus character, then the specified modules
-are added to the default list.  Otherwise only those modules listed are
-loaded (together with any others they import from).
-If
-.I MIBS
-is set to
-.IR ALL ,
-.B read_all_mibs
-is called to load all the MIB files found in all the specified
-.IR MIBDIRS .
-.PP
-.B read_mib
-parses the file specified, together with any modules that it imports
-from, and adds the contents to the active MIB tree.  Such a file can
-contain more then one module, though care must be taken that any
-imports occur earlier in the file, if they are not to be read from the
-installed modules.  Note that the file specified does not need to be
-in any of the directories initialised by
-.B add_mibdir
-(or the default setup), though any imported modules do.
-.br
-The environment variable
-.I MIBFILES
-can be set to a (colon-separated) list of files containing MIBs to load.
-.PP
-.B read_objid
-takes a string containing a textual version of an object identifier
-(in either numeric or descriptor form), and transforms this into the
-corresponding list of sub-identifiers.  This is returned in the
-.I output
-parameter, with the number of sub-identifiers returned via
-.IR out_len .
-When called, 
-.I out_len
-must hold the maximum length of the
-.I output
-array.
-If multiple object identifiers are being processed, then this
-length should be reset before each call.
-This function returns a value of 1 if it succeeds in parsing the string
-and 0 otherwise.
-.SS Searching the MIB Tree
-.B get_module_node
-takes a descriptor and the name of a module, and returns the corresponding
-oid list, in the same way as
-.B read_objid
-above.
-.br
-If the module name is specified as "ANY", then this routine will
-assume that the descriptor given is unique within the tree, and will
-return the matching entry.  If this assumption is invalid, then the
-behaviour as to which variable is returned is implementation
-dependent.
-.SS Output
-.B print_mib
-will print out a representation of the currently active MIB tree to
-the specified FILE pointer.
-.PP
-.B print_variable
-will take an object identifier (as returned by
-.B read_objid
-or
-.BR get_module_node )
-and an instance of such a variable, and prints to the standard output
-the textual form of the object identifier together with the value
-of the variable.
-.B fprint_variable
-does the same, but prints to the FILE pointer specified by the initial
-parameter.
-.br
-.B snprint_variable
-prints the same information into the buffer pointed to by
-.I buf
-which is of length
-.IR len 
-and returns either the number of characters printed, or -1 if the
-buffer was not large enough.  In the latter case,
-.I buf
-will typically contained a truncated version of the information (but
-this behaviour is not guaranteed).  This function replaces the
-obsolete function
-.BR sprint_variable .
-.br
-.B sprint_realloc_variable
-is the low-level function used to implement all these functions.  It
-prints to a specified offset in a string buffer.  The
-.I buf
-parameter points to a pointer to that buffer;
-.I buf_len
-points to a variable holding the current size of that buffer, and
-.I out_len
-points to a variable holding the offset to which to print.
-.I out_len
-will be updated to hold the offset of the character following the last
-one added to the buffer.  If
-.I allow_realloc
-is 1, the buffer will be dynamically expanded, as necessary, to hold
-the output; the variables pointed to by
-.I buf
-and
-.I buf_len
-will be updated.  If
-.I allow_realloc
-is 0, the buffer will not be dynamically expanded.
-.B sprint_realloc_variable
-returns 0 if
-.I allow_realloc
-is 1 and an attempt to allocate memory to expand the buffer fails, or
-if
-.I allow_realloc
-is 0 and the output wouldn't fit in the buffer.  Otherwise it returns
-1.  When using this function you should be careful to call
-.BR free (3)
-on
-.I *buf
-when you have finished with it.
-.PP
-.BR print_value ,
-.BR fprint_value ,
-.BR snprint_value
-and
-.B sprint_realloc_value
-do the same as the equivalent
-.B print_variable
-routines, but only displaying the value of the variable, without the
-corresponding object identifier.
-.PP
-.BR print_objid ,
-.BR fprint_objid ,
-.BR snprint_objid ,
-and
-.B sprint_realloc_objid
-take an object identifier (without an accompanying variable instance)
-and print out the textual representation.
-.PP
-.BI print_description ,
-.BI fprint_description ,
-.BI snprint_description ,
-and
-.B sprint_realloc_description
-take an object identifier (as for
-.B print_objid
-above) and print out a version of the MIB definition for that object,
-together with the full OID. The
-.I width
-argument controls how the OID is layed out.
-.PP
-By default the parser does not save descriptions since they may be
-huge.  In order to be able to print them, you must call
-.BR snmp_set_save_descriptions(1) .
-.PP
-In general the parser is silent about what strangenesses it sees in
-the MIB files. To get warnings reported, call
-.B snmp_set_mib_warnings
-with a
-.I level
-of 1 (or 2 for even more warnings).
-.SH "ENVIRONMENT VARIABLES"
-.TP 10
-MIBDIRS
-A colon separated list of directories to search for MIB modules.
-Default: DATADIR/snmp/mibs
-.TP 10
-MIBFILES
-A colon separated list of files to load.
-Default: (none)
-.TP 10
-MIBS
-A colon separated list of MIB modules to load.
-Default: IP-MIB:IF-MIB:TCP-MIB:UDP-MIB:SNMPv2-MIB: RFC1213-MIB:UCD-SNMP-MIB.
-.SH "SEE ALSO"
-.BR snmp_api "(3)"
diff --git a/man/net-snmp-config.1.def b/man/net-snmp-config.1.def
index 6521c9e..3a0fa2b 100644
--- a/man/net-snmp-config.1.def
+++ b/man/net-snmp-config.1.def
@@ -1,17 +1,17 @@
 .TH net-snmp-config 1 "16 Nov 2006" VVERSIONINFO "Net-SNMP"
 .SH NAME
-net-snmp-config \- returns information about installed net-snmp libraries and binaries 
+net\-snmp\-config - returns information about installed net-snmp libraries and binaries 
 .SH SYNOPSIS
 .PP
-.B net-snmp-config
+.B net\-snmp\-config
 [OPTIONS]
 .SH DESCRIPTION
 .PP
-The \fInet-snmp-config\fP shell script is designed to retrieve the
+The \fInet\-snmp\-config\fP shell script is designed to retrieve the
 configuration information about the libraries and binaries dealing with
 the Simple Network Management Protocol (SNMP), built from the 
 .B net-snmp 
-source package. The information is particularily useful for
+source package. The information is particularly useful for
 applications that need to link against the SNMP libraries and hence
 must know about any other libraries that must be linked in as well.
 
@@ -29,8 +29,8 @@
 .PP
 SNMP Setup commands:
 .TP
-\fB\-\-create\-snmpv3\-user\fR [-ro] [-a authpass] [-x privpass] [-X DES|AES]
-[-A MD5|SHA] [username]
+\fB\-\-create\-snmpv3\-user\fR [\-ro] [\-a authpass] [\-x privpass]
+[\-X DES|AES] [\-A MD5|SHA] [username]
 .PP
 These options produce the various compilation flags needed when
 building external SNMP applications:
@@ -63,8 +63,8 @@
 Automated subagent building (produces an OUTPUTNAME binary file):
 [This feature has not been extensively tested,  use at your own risk.]
 .TP
-\fB\-\-compile\-subagent\fR OUTPUTNAME [--norm] [--cflags flags]
-[--ldflags flags] mibmodule1.c [...]]
+\fB\-\-compile\-subagent\fR OUTPUTNAME [\-\-norm] [\-\-cflags flags]
+[\-\-ldflags flags] mibmodule1.c [...]]
 .TP
 \fB\-\-norm\fR
 leave the generated .c file around to read.
diff --git a/man/net-snmp-create-v3-user.1.def b/man/net-snmp-create-v3-user.1.def
new file mode 100644
index 0000000..da6944c
--- /dev/null
+++ b/man/net-snmp-create-v3-user.1.def
@@ -0,0 +1,28 @@
+.TH net-snmp-create-v3-user 1 "17 Sep 2008" VVERSIONINFO "Net-SNMP"
+.SH NAME
+net-snmp-create-v3-user \- create a SNMPv3 user in net-snmp configuration file
+.SH SYNOPSIS
+.PP
+.B net-snmp-create-v3-user [-ro] [-a authpass] [-x privpass] [-X DES|AES]
+.B [username]
+.SH DESCRIPTION
+.PP
+The \fInet-snmp-create-v3-user\fP shell script is designed to create a
+new user in net-snmp configuration file (/var/net-snmp/snmpd.conf by default).
+
+.SH OPTIONS
+.TP
+\fB\-\-version\fR
+displays the net-snmp version number
+.TP
+\fB\-ro\fR
+create an user with read-only permissions
+.TP
+\fB\-a authpass\fR
+specify authentication password
+.TP
+\fB\-x privpass\fR
+specify encryption password
+.TP
+\fB\-X DES|AES\fR
+specify encryption algorithm
diff --git a/man/netsnmp_agent.3 b/man/netsnmp_agent.3
deleted file mode 100644
index f3c7dd5..0000000
--- a/man/netsnmp_agent.3
+++ /dev/null
@@ -1,33 +0,0 @@
-.TH "The Net-SNMP agent" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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/netsnmp_agent_api.3.def b/man/netsnmp_agent_api.3.def
new file mode 100644
index 0000000..19efd00
--- /dev/null
+++ b/man/netsnmp_agent_api.3.def
@@ -0,0 +1,132 @@
+.TH NETSNMP_AGENT_API 3 "13 Aug 2010" VVERSIONINFO "Net-SNMP"
+.SH NAME
+netsnmp_agent_api - embedding an agent into a external application
+.SH SYNOPSIS
+.nf
+#include <net\-snmp/net\-snmp\-config.h>
+#include <net\-snmp/net\-snmp\-includes.h>
+#include <net\-snmp/agent/net\-snmp\-agent\-includes.h>
+
+int
+main (int argc, char *argv[])
+{
+  int agentx_subagent = 1;  /* Change this if you're a master agent.  */
+
+  snmp_enable_stderrlog();
+
+  /*  If we're an AgentX subagent...  */
+  if (agentx_subagent) {
+      /* ...make us an AgentX client.  */
+      netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
+                             NETSNMP_DS_AGENT_ROLE, 1);
+  }
+
+  init_agent("yourappname");
+
+  /*  Initialize your MIB code here.  */
+  init_my_mib_code();
+
+  /*  `yourappname' will be used to read yourappname.conf files.  */
+  init_snmp("yourappname");
+
+  /*  If we're going to be a SNMP master agent...  */
+  if (!agentx_subagent)
+      init_master_agent();  /*  Listen on default port (161).  */
+
+  /*  Your main loop here...  */
+  while (whatever) {
+      /* if you use select(), see snmp_api(3) */
+      /*     --- OR ---  */
+      agent_check_and_process(0); /* 0 == don't block */
+  }
+
+  /*  At shutdown time:  */
+  snmp_shutdown("yourappname");
+}
+
+Then:
+$(CC) ... `net\-snmp\-config \-\-agent\-libs`
+
+.fi
+.SH DESCRIPTION
+.PP
+Our goal is to create a easy to use interface to the Net-SNMP package
+such that you can take code that you have written that has been
+designed to be a Net-SNMP MIB module and embed it into an external
+application where you can either chose to be a SNMP master agent or an
+AgentX sub-agent using the same MIB module code.  Our suggestion is
+that you use our (or another) SNMP agent as the AgentX master agent
+and chose to become an AgentX subagent which then attaches to the
+master.
+.PP
+The Net-SNMP package provides a pair of libraries that enables easy
+embedding of an SNMP or AgentX agent into an external software
+package. AgentX is an extensible protocol designed to allow multiple
+SNMP sub-agents all run on one machine under a single SNMP master
+agent.  It is defined in RFC 2741.
+.PP
+You will need to perform a few tasks in order to accomplish
+this. First off, you will need to initialize both the SNMP library and
+the SNMP agent library. As indicated above, this is done slightly
+differently depending on whether or not you are going to perform as a
+master agent or an AgentX sub-agent.
+.SH CONFIGURATION
+.PP
+If you intend to operate as an AgentX sub-agent, you will have to
+configured the Net-SNMP package with agentx support (which is turned
+on by default, so just don't turn it off)
+.PP
+Additionally, you will need to link against the Net-SNMP libraries
+(use the output of "net\-snmp\-config \-\-agent\-libs" to get a library
+list) and call subagent_pre_init() as indicated above.
+.SH COMPILING
+.PP
+In order to make use of any of the above API, you will need to link
+against at least the four libraries listed above.
+.SH FUNCTIONS
+.PP This is a brief description of the functions called above and
+where to find out more information on them.  It is certainly not a
+complete list of what is available within all the Net-SNMP libraries. 
+.IP "snmp_enable_stderrlog()"
+Logs error output from the SNMP agent to the standard error stream.
+.IP "netsnmp_ds_set_boolean()"
+Please see the
+.IR default_store(3)
+manual page for more information
+about this API.
+.IP "init_agent(char *name)"
+Initializes the embedded agent.  This should be called before the
+.BR "init_snmp()"
+call.  
+.I name
+is used to dictate what .conf file to read when
+.BR "init_snmp()"
+is called later.
+.IP "init_snmp(char *name)"
+Initializes the SNMP library.  Note that one of the things this will
+do will be to read configuration files in an effort to configure your
+application. It will attempt to read the configuration files named by
+the
+.I name
+string that you passed in.  It can be used to configure access
+control, for instance.   Please see the
+.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 
+on its default UDP port of 161.
+.IP "agent_check_and_process(int block)"
+This checks for packets arriving on the SNMP port and processes them
+if some are found.  If 
+.I block
+is non-zero, the function call will block until a packet arrives or an 
+alarm must be run (see
+.IR snmp_alarm(3) ).
+The return value from this function is a positive integer if packets
+were processed, zero if an alarm occurred and \-1 if an error occured.
+.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), netsnmp_config_api(3), snmp_config(5),
+snmpd.conf(5)
diff --git a/man/netsnmp_agent_registry.3 b/man/netsnmp_agent_registry.3
deleted file mode 100644
index 10ba2f2..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 "24 Jun 2011" "Version 5.4.3.pre1" "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 "NETSNMP_STATIC_INLINE void \fBinvalidate_lookup_cache\fP (const char *context)"
-.br
-.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 "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 "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 "\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 "\fBsubtree_context_cache\fP * \fBcontext_subtrees\fP = NULL"
-.br
-.ti -1c
-.RI "int \fBlookup_cache_size\fP = 0"
-.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 1323 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 1396 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 1383 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 969 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 5b5171d..0000000
--- a/man/netsnmp_agent_trap.3
+++ /dev/null
@@ -1,317 +0,0 @@
-.TH "Trap generation routines for mib modules to use" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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_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_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 "int \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 850 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 629 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 978 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 1007 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 99 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 a52d5b0..0000000
--- a/man/netsnmp_asn1_packet_parse.3
+++ /dev/null
@@ -1,263 +0,0 @@
-.TH "asn1 parsing and datatype manipulation routines." 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 fa874bb..0000000
--- a/man/netsnmp_baby_steps.3
+++ /dev/null
@@ -1,45 +0,0 @@
-.TH "baby_steps" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 9d28220..0000000
--- a/man/netsnmp_bulk_to_next.3
+++ /dev/null
@@ -1,52 +0,0 @@
-.TH "bulk_to_next" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 42 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 27 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 139 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 b53bb81..0000000
--- a/man/netsnmp_cache_handler.3
+++ /dev/null
@@ -1,225 +0,0 @@
-.TH "cache_handler" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 (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, oid *rootoid, int rootoid_len)"
-.br
-.RI "\fIreturns 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, 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 route 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 385 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 370 of file cache_handler.c.
-.SS "\fBnetsnmp_cache\fP* netsnmp_cache_create (int timeout, NetsnmpCacheLoad * load_hook, NetsnmpCacheFree * free_hook, oid * rootoid, int rootoid_len)"
-.PP
-returns a cache 
-.PP
-Definition at line 136 of file cache_handler.c.
-.SS "\fBnetsnmp_cache\fP* netsnmp_cache_find_by_oid (oid * rootoid, int rootoid_len)"
-.PP
-find existing cache 
-.PP
-Definition at line 120 of file cache_handler.c.
-.SS "\fBnetsnmp_cache\fP* netsnmp_cache_get_head (void)"
-.PP
-get cache head 
-.PP
-Definition at line 112 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 247 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 295 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 420 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 402 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 350 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 333 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 191 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 226 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 362 of file cache_handler.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_get_cache_handler (int timeout, NetsnmpCacheLoad * load_hook, NetsnmpCacheFree * free_hook, oid * rootoid, int rootoid_len)"
-.PP
-returns a cache handler that can be injected into a given handler chain. 
-.PP
-Definition at line 276 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 413 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 308 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 581 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 cfeec89..0000000
--- a/man/netsnmp_callback.3
+++ /dev/null
@@ -1,205 +0,0 @@
-.TH "A generic callback mechanism" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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/netsnmp_config_api.3.def b/man/netsnmp_config_api.3.def
new file mode 100644
index 0000000..d009fc5
--- /dev/null
+++ b/man/netsnmp_config_api.3.def
@@ -0,0 +1,373 @@
+.TH NETSNMP_CONFIG_API 3 "13 Aug 2010" VVERSIONINFO "Net-SNMP"
+.SH NAME
+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
+.BI "  register_config_handler(const char *" filePrefix ",
+.br
+.BI "                     const char *" token ,
+.br
+.BI "                     void (*" parser ")(const char *, char *),"
+.br
+.BI "                     void (*" releaser ")(void),"
+.br
+.BI "                     const char *"usageLine ");"
+.PP
+.B struct config_line *
+.br
+.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
+.BI "                     void (*" parser ")(const char *, char *),"
+.br
+.BI "                     void (*" releaser ")(void),"
+.br
+.BI "                     const char *" usageLine ");"
+.PP
+.BI "void unregister_config_handler(const char *" filePrefix ","
+.br
+.BI "                     const char *" token ");"
+.PP
+.\" 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
+.B struct config_line *
+.br
+.BI "  register_app_config_handler(const char *" token ,
+.br
+.BI "                     void (*" parser ")(const char *, char *),"
+.br
+.BI "                     void (*" releaser ")(void),"
+.br
+.BI "                     const char *"usageLine ");"
+.PP
+.B struct config_line *
+.br
+.BI "  register_app_prenetsnmp_mib_handler(const char *" token ,
+.br
+.BI "                     void (*" parser ")(const char *, char *),"
+.br
+.BI "                     void (*" releaser ")(void),"
+.br
+.BI "                     const char *" usageLine ");"
+.PP
+.BI "void unregister_app_config_handler(const char *" token ");"
+.br
+.SS Reading Configuration Files
+.PP
+.B "void read_premib_configs(void);"
+.br
+.B "void read_configs(void);"
+.br
+.SS Help Strings and Errors
+.PP
+.BI "void read_config_print_usage(char *" lead ");"
+.br
+.BI "void config_pwarn(const char *" string ");"
+.br
+.BI "void config_perror(const char *" string ");"
+
+.SH DESCRIPTION
+The functions are a fairly extensible system of parsing various
+configuration files at the run time of an application.  The
+configuration file flow is broken into the following phases:
+.RS 4
+.TP 4
+1.
+Registration of handlers.
+.TP
+2.
+Reading of the configuration files for pre-MIB parsing requirements.
+.TP
+3.
+Reading and parsing of the textual MIB files.
+.TP
+4.
+Reading of the configuration files for configuration directives.
+.TP
+5.
+Optionally re-reading the configuration files at a future date.
+.RE
+.PP
+The idea is that the calling application is able to register
+.I handlers
+for certain
+.I tokens
+specified in certain named
+.I "configuration files."
+The 
+.B read_configs()
+function can then be called to look for all relevant configuration files,
+match the first word on each line against the list of registered tokens
+and pass the remainder of the line to the appropriate registered handler.
+.SH REGISTERING A HANDLER
+.TP
+.B register_config_handler()
+Registers a configuration handler routine, which should be called
+to process configuration directives starting with the specified token.
+For example:
+.PP
+.RS
+.RS
+register_config_handler("snmp", "exampleToken", example_handler, NULL, "ARG1 [ARG2]");
+.RE
+.RE
+.IP
+would register the
+.B example_handler()
+function so that it will get called every time the first word of a
+line in the 
+.I snmp.conf
+configuration file(s) matches "exampleToken".
+.br
+Calling the appropriate handlers to process the configuration file directives
+is the responsibility of 
+.B read_configs() 
+(see below).
+.TP
+.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
+\fIbefore\fP the textual MIBs are read in.
+This is typically used for tokens that will affect the configuration of
+the MIB parser, and will normally only be used within the SNMP library itself.
+.TP
+.B register_mib_handlers()
+Initialisation routine to register the internal SNMP library configuration handlers.
+.TP
+.B unregister_config_handler()
+Removes the registered configuration handler for the specified
+.I filePrefix
+and
+.IR token .
+.TP
+.B unregister_all_config_handlers()
+Removes all registered configuration handlers.
+
+.SS Token Handlers
+.PP
+Handler functions should have the following signature:
+.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
+token that triggered the call to this function (i.e. the token used
+when registering the handler), and the second
+being the remainder of the configuration file line (i.e. everything
+following the white space following the matched token).
+
+.SS Freeing Handlers
+.PP
+If the token handler function dynamically allocates resources when
+processing a configuration entry, then these may need to be released
+before re-reading the configuration files.
+If the fourth parameter (
+.I releaser
+) passed to
+.B register_config_handler
+is non-NULL, then this specifies a function to be called before
+re-reading the configuration files.  This function should free any
+resources allocated by the token handler function and reset its notion
+of the configuration to its default.  The token handler function can
+then safely be called again.
+No arguments are passed to the resource freeing handler.
+.br
+Note that this function is not called when the handler is
+unregistered individually (but \fIis\fP called as part of
+.B unregister_all_config_handlers()
+).
+
+.SS Application Handlers
+.TP
+.B register_app_config_handler()
+.TP
+.B register_app_prenetsnmp_mib_handler()
+.TP
+.B unregister_app_config_handler()
+These functions are analagous to 
+.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
+use these functions to allow the agent to have more control over which
+configuration files are read (typically the
+.I snmpd.conf
+files).
+.SH READING CONFIGURATION FILES
+.TP
+.B read_premib_configs()
+.TP
+.B read_configs()
+These routines process the configuration files found in the
+configuration search path (see below).  For each entry, the
+handler registered for that configuration token is called.
+.PP
+.B read_premib_configs()
+is run before the MIB files are read in, and processes those
+configuration tokens registered using
+.B register_prenetsnmp_mib_handler()
+(or
+.B register_app_prenetsnmp_mib_handler()
+).
+All other entries are ignored.
+.PP
+.B read_configs()
+is run after the MIB files have been read in, and processes those
+configuration tokens registered using
+.B register_config_handler()
+(or
+.B register_app_config_handler()
+).
+If it encounters a configuration token for which no handler has
+been registered (either pre- or post-mib), then it will display
+a warning message, and continue processing with the next line
+of the configuration file.
+.SS Configuration Search Path
+.PP
+The configuration files to be read are found by searching a list
+of configuration directories for appropriately named files.
+In each such directory, the library will look for files named
+\fC snmp.conf\fP,
+\fC snmp.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
+in each directory.  Missing files will be silently skipped.
+.br
+The idea behind the two different suffixes is that the first file can
+be shared (via rdist or an NFS mount) across a large number of
+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 \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.
+.br
+.SS init_snmp()
+.PP
+The normal mode of operation would be to register the application-specific
+configuration handlers, and then invoke
+.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_prenetsnmp_mib_handler(),
+read in the textual MIB files using
+.B init_mib(),
+and finally parse the configuration file tokens registered with 
+.BR register_config_handler() .
+.PP
+If the 
+.B init_snmp()
+function is used, none of these functions need to be explicitly
+called by the application.
+.SH HELP STRINGS AND ERRORS
+.PP
+The
+.I usageLine
+parameter passed to
+.B register_config_handler()
+and similar calls, is used to display help information when the
+.B read_config_print_usage()
+function is called.  This function is used by all of the applications
+when the 
+.B -H
+flag is passed on the command line.  It prints a summary of all of the
+configuration file lines, and the associated files, that the
+configuration system understands.  The
+.I usageLine
+parameter should be a list of arguments expected after the token, and
+not a lengthy description (which should go into a manual page
+instead).  The
+.I lead
+prefix will be prepended to each line that the function prints to
+stderr, where it displays its output.
+.PP
+The
+.B init_snmp()
+function should be called before the
+.B read_config_print_usage()
+function is called, so that the library can register its configuration 
+file directives as well for the 
+.B read_config_print_usage()
+function to display.
+.SS Error Handling Functions
+.PP
+The two functions
+.B config_pwarn()
+and
+.B config_perror()
+both take an error string as an argument and print it to stderr along
+with the file and line number that caused the error.  A call to the
+second function will also force 
+.B read_configs() 
+to eventually return with an error code indicating to it's calling
+function that it should abort the operation of the application.
+.SH "ENVIRONMENT VARIABLES"
+.TP 10
+SNMPCONFPATH
+A colon separated list of directories to search for configuration
+files in.
+Default: SYSCONFDIR/snmp:DATADIR/snmp:LIBDIR/snmp:$HOME/.snmp
+.SH "SEE ALSO"
+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 b2f414d..0000000
--- a/man/netsnmp_container.3
+++ /dev/null
@@ -1,18 +0,0 @@
-.TH "container" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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_data_list.3 b/man/netsnmp_data_list.3
deleted file mode 100644
index 0eccafe..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 "24 Jun 2011" "Version 5.4.3.pre1" "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_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 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 \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 87 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 60 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 141 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 97 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 42 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 26 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 166 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 184 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 337 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 235 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 202 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 301 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 284 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 63a8b89..0000000
--- a/man/netsnmp_debug.3
+++ /dev/null
@@ -1,106 +0,0 @@
-.TH "debug" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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
-.SS "handler"
- 
-.in +1c
-.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"
-.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"
-.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"
-.ti -1c
-.RI "void \fBnetsnmp_init_table_dataset\fP (void)"
-.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"
-.ti -1c
-.RI "void \fBnetsnmp_init_helpers\fP (void)"
-.br
-.RI "\fIcall the initialization sequence for all handlers with init_ routines. \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 51 of file debug_handler.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 139 of file bulk_to_next.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 155 of file debug_handler.c.
-.SS "void netsnmp_init_helpers (void)"
-.PP
-call the initialization sequence for all handlers with init_ routines. 
-.PP
-Definition at line 36 of file all_helpers.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 81 of file read_only.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 93 of file serialize.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 238 of file stash_cache.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 4a3287b..0000000
--- a/man/netsnmp_default_store.3
+++ /dev/null
@@ -1,250 +0,0 @@
-.TH "storage space for defaults" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 ()"
-.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 11ca3a0..0000000
--- a/man/netsnmp_handler.3
+++ /dev/null
@@ -1,515 +0,0 @@
-.TH "Net-SNMP Agent handler and extensibility API" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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, 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, 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, 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 f387725..0000000
--- a/man/netsnmp_instance.3
+++ /dev/null
@@ -1,187 +0,0 @@
-.TH "instance" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, oid *reg_oid, size_t reg_oid_len, 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, 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 48 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 742 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 73 of file instance.c.
-.SS "int netsnmp_register_int_instance (const char * name, 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 461 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 100 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 030bcc0..0000000
--- a/man/netsnmp_iterator_info_s.3
+++ /dev/null
@@ -1,76 +0,0 @@
-.TH "iterator_info_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 b8b69a0..0000000
--- a/man/netsnmp_leaf.3
+++ /dev/null
@@ -1,44 +0,0 @@
-.TH "leaf_handlers" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 8096d38..0000000
--- a/man/netsnmp_library.3
+++ /dev/null
@@ -1,670 +0,0 @@
-.TH "The Net-SNMP library" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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
-.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_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\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 "int \fB_sess_read\fP (void *sessp, fd_set *fdset)"
-.br
-.ti -1c
-.RI "int \fBsnmp_sess_read\fP (void *sessp, fd_set *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_sess_select_info\fP (void *sessp, int *numfds, fd_set *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 u_char *value, size_t len)"
-.br
-.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 u_char *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 148 of file snmp_api.c.
-.SH "Function Documentation"
-.PP 
-.SS "int _sess_read (void * sessp, fd_set * fdset)"
-.PP
-XXX-rks: why no SNMP_FREE(isp->packet); ??
-.PP
-XXX-rks: why no SNMP_FREE(isp->packet); ?? 
-.PP
-Definition at line 5448 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 270 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 787 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 6386 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 6467 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 6531 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 6510 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 6337 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 6439 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 7197 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 853 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 1278 of file snmp_api.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_mib_api.3.def b/man/netsnmp_mib_api.3.def
new file mode 100644
index 0000000..2e1da8f
--- /dev/null
+++ b/man/netsnmp_mib_api.3.def
@@ -0,0 +1,309 @@
+.TH NETSNMP_MIB_API 3 "13 Aug 2010" VVERSIONINFO "Net-SNMP"
+.SH NAME
+add_mibdir,
+netsnmp_init_mib,
+shutdown_mib,
+netsnmp_read_module,
+read_mib,
+read_all_mibs,
+add_module_replacement,
+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 - netsnmp_mib_api functions
+.SH SYNOPSIS
+.B #include <net\-snmp/mib_api.h>
+.PP
+.SS Initialisation and Shutdown
+.BI "int add_mibdir(const char *" "dirname" );
+.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
+.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);
+.PP
+.BI "int add_module_replacement(const char *" "old_module" ","
+.br
+.BI "                           const char *" "new_module" ","
+.br
+.BI "                           const char *" "tag" ", int " "len" );
+.PP
+.BI "void snmp_set_mib_warnings(int " level );
+.br
+.BI "void snmp_set_mib_errors(int " level );
+.br
+.BI "void snmp_set_save_descriptions(int " save ");"
+.SS Searching the MIB Tree
+.PP
+.BI "int  read_objid(const char *" "input" ","
+.br
+.BI "                oid *" "objid" ", size_t *" "objidlen" );
+.br
+.BI "oid *snmp_parse_oid(const char *" "input" ","
+.br
+.BI "                oid *" "objid" ", size_t *" "objidlen" );
+.br
+.BI "int  get_module_node(const char *" "name" ", const char *" "module" ","
+.br
+.BI "                oid *" "objid" ", size_t *" "objidlen" );
+.SS Output
+.PP
+.BI "void  print_mib(FILE *" "fp" );
+.PP
+.BI "void  print_objid(const oid *" objid ", size_t " objidlen );
+.br
+.BI "void fprint_objid(FILE *" fp ","
+.br
+.BI "                  const oid *" objid ", size_t " objidlen ");"
+.br
+.BI "int snprint_objid(char *" buf ", size_t " "len" ","
+.br
+.BI "                  const oid *" objid ", size_t " objidlen ");"
+.PP
+.BI "void  print_description(const oid *" objid ", size_t " objidlen ", int " width );
+.br
+.BI "void fprint_description(FILE *" fp ","
+.br
+.BI "                        const oid *" objid ", size_t " objidlen ", int " width );
+.br
+.BI "int snprint_description(char *" buf ", size_t " "len" ","
+.br
+.BI "                        const oid *" objid ", size_t " objidlen ", int " width );
+.br
+.PP
+.SH DESCRIPTION
+The functions dealing with MIB modules fall into four groups - those
+dealing with initialisation and shutdown, with reading in and parsing
+MIB files, with searching the MIB tree, and output routines.
+.SS Initialisation and Shutdown
+.PP
+.B add_mibdir
+is used to add the specified directory to the path of locations which are
+searched for files containing MIB modules.
+Note that this does not actually load the MIB modules located
+in that directory, but is simply an initialisation step to make
+them available to
+.BR netsnmp_read_module .
+This function returns a count of files found in the directory, or a \-1
+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 netsnmp_init_mib
+configures the MIB directory search path (using
+.B add_mibdir
+), 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
+(but after any additional
+.B add_mibdir
+calls).
+.PP
+.B shutdown_mib
+will clear the information that was gathered by 
+.BR netsnmp_read_module ", " add_mibdir " and " add_module_replacement .
+It is strongly recommended that one does not invoke
+.BR shutdown_mib
+while there are SNMP sessions being actively managed.
+.SS Reading and Parsing MIBs
+.PP
+.B netsnmp_read_module
+takes the name of a MIB module (which need not be the same as the
+name of the file that contains the module), locates this within the
+configured list of MIB directories, and loads the definitions from
+the module into the active MIB tree.
+It also loads any MIB modules listed in the IMPORTS clause of this module.
+.PP
+.B read_mib
+is similar, but takes the name of the file containing the MIB module.
+Note that this file need not be located within the MIB directory
+search list (although any modules listed in the IMPORTS clause do).
+.PP
+.B read_all_mibs
+will read in all the MIB modules found on the MIB directory search list.
+.PP
+In general the parser is silent about what strangenesses it sees in
+the MIB files. To get warnings reported, call
+.B snmp_set_mib_warnings
+with a
+.I level
+of 1 (or 2 for even more warnings).
+.PP
+.B add_module_replacement
+can be used to allow new MIB modules to obsolete older ones, without
+needing to amend the IMPORTS clauses of other modules.  It takes the
+names of the old and new modules, together with an indication of which
+portions of the old module are affected.
+.RS
+.TS
+tab(+);
+lb lb lb
+l  l  l.
+tag + len + load the new module when:
+NULL + 0 + always (the old module is a strict subset of
+ + + the new)
+name + 0 + for the given tag only
+name + non-0 + for any identifier with this prefix
+.TE
+.RE
+It can also be used to handle errors in the module identifiers used
+in MIB IMPORTS clauses (such as referring to
+.I RFC1213
+instead of
+.IR RFC1213\-MIB ).
+.SS Searching the MIB Tree
+.PP
+.B read_objid
+takes a string containing a textual version of an object identifier
+(in either numeric or descriptor form), and transforms this into the
+corresponding list of sub-identifiers.  This is returned in the
+.I output
+parameter, with the number of sub-identifiers returned via
+.IR out_len .
+When called, 
+.I out_len
+must hold the maximum length of the
+.I output
+array.
+If multiple object identifiers are being processed, then this
+length should be reset before each call.
+This function returns a value of 1 if it succeeds in parsing the string
+and 0 otherwise.
+.PP
+.B snmp_parse_oid
+is similar, but returns a pointer to the parsed OID buffer (or NULL).
+.PP
+.B get_module_node
+takes a descriptor and the name of a module, and returns the corresponding
+oid list, in the same way as
+.B read_objid
+above.
+.br
+If the module name is specified as "ANY", then this routine will
+assume that the descriptor given is unique within the tree, and will
+return the matching entry.  If this assumption is invalid, then the
+behaviour as to which variable is returned is implementation
+dependent.
+.br
+.SS Output
+.B print_mib
+will print out a representation of the currently active MIB tree to
+the specified FILE pointer.
+.PP
+.B print_objid
+will take an object identifier (as returned by
+.BR read_objid ", " snmp_parse_oid " or " get_module_node "),"
+and prints the textual form of this OID to the standard output.
+.PP
+.B fprint_objid
+does the same, but prints to the FILE pointer specified by the initial
+parameter.
+.PP
+.B snprint_objid
+prints the same information into the buffer pointed to by
+.I buf
+which is of length
+.IR len .
+It returns the number of characters printed, or \-1 if the
+buffer was not large enough.  In the latter case,
+.I buf
+will typically contain a truncated version of the information (but
+this behaviour is not guaranteed).
+.PP
+.BR print_description ,
+.BR fprint_description ,
+and
+.B snprint_description
+take a similar object identifier
+and print out a version of the MIB definition for that object,
+together with the full OID. The
+.I width
+argument controls how the OID is layed out.
+.PP
+By default the parser does not save descriptions since they may be
+huge.  In order to be able to print them, it is necessary to invoke
+.BI snmp_set_save_descriptions(1) before
+calling
+.B init_mib
+(or similar).
+.SH "ENVIRONMENT VARIABLES"
+.PP
+The main use of environmental variables with respect to these API calls
+is to configure which MIB modules should be loaded, and where they are
+located.
+.TP 10
+MIBDIRS
+A colon separated list of directories to search for MIB modules.
+.br
+Default: DATADIR/snmp/mibs
+.br
+Used by
+.BR init_mib ", " netsnmp_read_module ", " read_all_mibs
+and (implicitly) by
+.BR read_mib .
+.TP 10
+MIBS
+A colon separated list of MIB modules to load.
+.br
+The default list of modules will depend on how the Net-SNMP software
+was originally compiled, but is typically:
+IP\-MIB:IF\-MIB:TCP\-MIB:UDP\-MIB:SNMPv2\-MIB:RFC1213\-MIB: UCD\-SNMP\-MIB:HOST\-RESOURCES\-MIB
+.IP
+If the value of the
+.B MIBS
+environmental variable starts with a '+' character,
+then these MIB modules will be added to the default list.
+Otherwise these modules (plus any that they IMPORT from) will be loaded
+.I instead
+of the default list.
+.IP
+If the 
+.B MIBS
+environmental variable has the value
+.BR ALL " then " read_all_mibs
+will be called to load the full collection of all available MIB modules.
+.IP
+Used by
+.B init_mib
+only.
+.TP 10
+MIBFILES
+A colon separated list of files to load.
+.br
+Default: (none)
+.br
+Used by
+.B init_mib
+only.
+.SH "SEE ALSO"
+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 65b3916..0000000
--- a/man/netsnmp_mib_maintenance.3
+++ /dev/null
@@ -1,85 +0,0 @@
-.TH "mib_maintenance" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 07727bd..0000000
--- a/man/netsnmp_mib_utilities.3
+++ /dev/null
@@ -1,1283 +0,0 @@
-.TH "mib parsing and datatype manipulation routines." 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 "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
-.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 274 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 3582 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 3448 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 4452 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 3167 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 3321 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 2020 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 5491 of file mib.c.
-.SS "void netsnmp_fixup_mib_directory (void)"
-.PP
-swap in the new value and repeat 
-.PP
-Definition at line 2483 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 2436 of file mib.c.
-.SS "void netsnmp_init_mib (void)"
-.PP
-Initialises the mib reader. Reads in all settings from the environment. 
-.PP
-Definition at line 2530 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 6278 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 6306 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 2381 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 6243 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 4436 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 2745 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 3153 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 3305 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 2843 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 2766 of file mib.c.
-.SS "void shutdown_mib (void)"
-.PP
-Unloads all mibs. 
-.PP
-Definition at line 2720 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 2293 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 5849 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 370 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 1905 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 1766 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 1940 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 1533 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 849 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 1460 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 1186 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 1260 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 1662 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 1596 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 1722 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 1042 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 430 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 952 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 1112 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 1363 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 5814 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 163 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 e941b09..0000000
--- a/man/netsnmp_mode_end_call.3
+++ /dev/null
@@ -1,69 +0,0 @@
-.TH "mode_end_call" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 c6b2c4d..0000000
--- a/man/netsnmp_multiplexer.3
+++ /dev/null
@@ -1,53 +0,0 @@
-.TH "multiplexer" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 2fe6fe4..0000000
--- a/man/netsnmp_netsnmp_agent_request_info_s.3
+++ /dev/null
@@ -1,48 +0,0 @@
-.TH "netsnmp_agent_request_info_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 7e852bc..0000000
--- a/man/netsnmp_netsnmp_column_info_t.3
+++ /dev/null
@@ -1,57 +0,0 @@
-.TH "netsnmp_column_info_t" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 52 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 55 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 de579a8..0000000
--- a/man/netsnmp_netsnmp_data_list_s.3
+++ /dev/null
@@ -1,52 +0,0 @@
-.TH "netsnmp_data_list_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 0731ad2..0000000
--- a/man/netsnmp_netsnmp_handler_registration_s.3
+++ /dev/null
@@ -1,107 +0,0 @@
-.TH "netsnmp_handler_registration_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 359f788..0000000
--- a/man/netsnmp_netsnmp_iterator_info_s.3
+++ /dev/null
@@ -1,111 +0,0 @@
-.TH "netsnmp_iterator_info_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 36791b1..0000000
--- a/man/netsnmp_netsnmp_mib_handler_access_methods.3
+++ /dev/null
@@ -1,20 +0,0 @@
-.TH "netsnmp_mib_handler_access_methods" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 934ae09..0000000
--- a/man/netsnmp_netsnmp_mib_handler_methods.3
+++ /dev/null
@@ -1,20 +0,0 @@
-.TH "netsnmp_mib_handler_methods" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 65fb3ca..0000000
--- a/man/netsnmp_netsnmp_mib_handler_s.3
+++ /dev/null
@@ -1,74 +0,0 @@
-.TH "netsnmp_mib_handler_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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_request_info_s.3 b/man/netsnmp_netsnmp_request_info_s.3
deleted file mode 100644
index 15bd168..0000000
--- a/man/netsnmp_netsnmp_request_info_s.3
+++ /dev/null
@@ -1,115 +0,0 @@
-.TH "netsnmp_request_info_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 1ec5e9b..0000000
--- a/man/netsnmp_netsnmp_table_registration_info_s.3
+++ /dev/null
@@ -1,73 +0,0 @@
-.TH "netsnmp_table_registration_info_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 74 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 76 of file table.h.
-.SS "unsigned int \fBnetsnmp_table_registration_info_s::max_column\fP"
-.PP
-the maximum columns number 
-.PP
-Definition at line 87 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 85 of file table.h.
-.SS "unsigned int \fBnetsnmp_table_registration_info_s::number_indexes\fP"
-.PP
-calculated automatically 
-.PP
-Definition at line 78 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 90 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 556c869..0000000
--- a/man/netsnmp_netsnmp_table_request_info_s.3
+++ /dev/null
@@ -1,64 +0,0 @@
-.TH "netsnmp_table_request_info_s" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 102 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 104 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 108 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 106 of file table.h.
-
-.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 8ab034b..0000000
--- a/man/netsnmp_oid_stash.3
+++ /dev/null
@@ -1,210 +0,0 @@
-.TH "Store and retrieve data referenced by an OID." 3 "24 Jun 2011" "Version 5.4.3.pre1" "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, 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, 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, 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, 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, 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, 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 1e6cc75..0000000
--- a/man/netsnmp_old_api.3
+++ /dev/null
@@ -1,60 +0,0 @@
-.TH "old_api" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 37 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 226 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 107 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 48 of file old_api.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_pdu_api.3.def b/man/netsnmp_pdu_api.3.def
new file mode 100644
index 0000000..a0f1aa1
--- /dev/null
+++ b/man/netsnmp_pdu_api.3.def
@@ -0,0 +1,29 @@
+.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 - netsnmp_pdu_api functions
+.SH SYNOPSIS
+.B #include <net-snmp/pdu_api.h>
+.PP
+.BI "netsnmp_pdu *snmp_pdu_create( int" "type" ");"
+.PP
+.BI "netsnmp_pdu *snmp_clone_pdu( netsnmp_pdu*" "pdu" ");"
+.PP
+.BI "netsnmp_pdu *snmp_fix_pdu( netsnmp_pdu*" "pdu" ", int " "idx" ");"
+.PP
+.BI "netsnmp_pdu *snmp_free_pdu( netsnmp_pdu*" "pdu" ");"
+.PP
+.SH DESCRIPTION
+These functions deal with SNMP request structures.
+.PP
+.B snmp_pdu_create
+.PP
+.B snmp_clone_pdu
+.PP
+.B snmp_fix_pdu
+.PP
+.B snmp_free_pdu
+.SH "SEE ALSO"
+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 d240e1b..0000000
--- a/man/netsnmp_read_config.3
+++ /dev/null
@@ -1,356 +0,0 @@
-.TH "parsing various configuration files at run time" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 ()"
-.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 ()"
-.br
-.ti -1c
-.RI "void \fBset_persistent_directory\fP (const char *dir)"
-.br
-.ti -1c
-.RI "const char * \fBget_persistent_directory\fP ()"
-.br
-.ti -1c
-.RI "void \fBset_temp_file_pattern\fP (const char *pattern)"
-.br
-.ti -1c
-.RI "const char * \fBget_temp_file_pattern\fP ()"
-.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 \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 1836 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 1272 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 1995 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. 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 53a40fd..0000000
--- a/man/netsnmp_read_only.3
+++ /dev/null
@@ -1,43 +0,0 @@
-.TH "read_only" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 29 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 81 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 96c62d2..0000000
--- a/man/netsnmp_row_merge.3
+++ /dev/null
@@ -1,101 +0,0 @@
-.TH "row_merge" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 89ed4cc..0000000
--- a/man/netsnmp_scalar.3
+++ /dev/null
@@ -1,102 +0,0 @@
-.TH "scalar" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 46 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 109 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 74 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 cbba9b0..0000000
--- a/man/netsnmp_scalar_group_group.3
+++ /dev/null
@@ -1,27 +0,0 @@
-.TH "scalar_group" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 4474f3d..0000000
--- a/man/netsnmp_serialize.3
+++ /dev/null
@@ -1,58 +0,0 @@
-.TH "serialize" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 31 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 93 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 40 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 48 of file serialize.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_sess_api.3.def b/man/netsnmp_sess_api.3.def
new file mode 100644
index 0000000..890353d
--- /dev/null
+++ b/man/netsnmp_sess_api.3.def
@@ -0,0 +1,236 @@
+.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
+.SH SYNOPSIS
+.B #include <net-snmp/session_api.h>
+.PP
+.BI "void snmp_sess_init(struct snmp_session *" session ");"
+.PP
+.BI "void *snmp_sess_open(struct snmp_session *" session ");"
+.PP
+.BI "struct snmp_session *snmp_sess_session(void *" handle ");"
+.PP
+.BI "int snmp_sess_send(void *" handle ", struct snmp_pdu *" pdu ");"
+.PP
+.BI "int snmp_sess_async_send(void *" handle ","
+.br
+.BI "                         struct snmp_pdu *" pdu ", "
+.br
+.BI "                         snmp_callback " callback ", "
+.br
+.BI "                         void *" callbackData ");"
+.PP
+.BI "int snmp_sess_select_info(void *" handle ","
+.br
+.BI "                          int *" numfds ", fd_set *" fdset ", "
+.br
+.BI "                          struct timeval *" timeout ", "
+.br
+.BI "                          int *" block ");"
+.PP
+.BI "int snmp_sess_read(void *" handle ", fd_set *" fdset ");"
+.PP
+.BI "void snmp_sess_timeout(void *" handle ");"
+.PP
+.BI "int snmp_sess_synch_response ( void *" "handle,"
+.RS
+.BI "netsnmp_pdu *" "pdu" ", "
+.br
+.BI "netsnmp_pdu **" "response" );
+.RE
+.PP
+.BI "int snmp_sess_close(void *" handle ");"
+.PP
+.BI "void snmp_sess_error(void *" handle ", int *" pcliberr ", "
+.br
+.BI "                    int *" psnmperr ", char **" pperrstring ");"
+.SH DESCRIPTION
+These functions define a subset of the API that can be used
+to manage single SNMP sessions in a multi-threaded application.
+Except for
+.BR snmp_sess_session() ,
+these functions are single session versions of the traditional
+SNMP library API.
+.PP
+Note that these functions use an opaque pointer
+.RI ( handle
+in the above prototypes) to identify a single session in lieu of a
+.I session
+pointer (as in the traditional API).
+.PP
+.B snmp_sess_init()
+prepares a struct snmp_session that sources transport characteristics
+and common information that will be used for a set of SNMP transactions.
+After this structure is passed to
+.B snmp_sess_open()
+to create an SNMP session, the structure is no longer used.  Instead
+the opaque pointer returned by
+.B snmp_sess_open()
+is used to refer to that session henceforth.
+.PP
+SNMP sessions that are created with
+.B snmp_sess_open()
+are not affected by, and SHOULD NOT BE USED WITH,
+.BR snmp_select_info() ", " snmp_read() ", " snmp_timeout() " nor"
+.BR snmp_close() .
+Rather the equivalent single session functions described here should
+be used.
+.PP
+.B snmp_sess_init()
+and
+.B snmp_sess_open()
+each take as input a pointer to a struct snmp_session object.
+This structure contains information for a set of transactions that
+will share similar transport characteristics.
+.B snmp_sess_session()
+takes the opaque session handle and returns a pointer to
+its associated struct snmp_session.
+.PP
+.B snmp_sess_send()
+and
+.B snmp_sess_async_send()
+each take a
+.I pdu
+parameter, which points to a struct snmp_pdu object containing
+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_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)
+system call so that SNMP transactions for a single session can occur
+asynchronously.
+.PP
+.B snmp_sess_select_info()
+is passed the information that would have been passed to
+.BR select (2)
+in the absence of SNMP.  For example, this might include file
+descriptors associated with the main loop of a graphical
+application. This information is modified so that SNMP will get the
+service it requires from the call to
+.BR select (2).
+In this case,
+.IR numfds ", " fdset " and " timeout
+correspond to the
+.IR nfds ", " readfds " and " timeout
+arguments to
+.BR select (2)
+respectively.  The only exception is that timeout must ALWAYS point to
+an allocated (but perhaps uninitialized)
+.I struct timeval
+(it cannot be NULL as for
+.BR select (2)).
+If
+.I timeout
+would have been passed as NULL,
+.I block
+is instead set to true, and
+.I timeout
+is treated as undefined.  This same rule applies upon return from
+.BR snmp_select_info() .
+.PP
+After calling
+.B snmp_sess_select_info() ,
+.BR select (2)
+should be called with the returned data.  When it returns,
+.B snmp_sess_read()
+should then be called with the
+.I fd_set
+returned from
+.BR select (2).
+This will read any input from this session's SNMP socket.  If
+.BR select (2)
+times out (that is, it returns zero),
+.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 
+.B snmp_sess_open()
+is indicated by return of a NULL pointer.
+Error return status from 
+.B snmp_sess_close()
+and
+.B snmp_sess_send()
+is indicated by a return value of 0.  A successful status will return
+1.
+.PP
+Further information can be obtained by using
+.B snmp_sess_error()
+to see what type of error has occurred.  This function returns the
+SNMP
+.I snmp_errno
+variable, the value of the system
+.I errno
+variable, and a string interpretation of both variables.  The string
+must be freed after use by the caller.
+.PP
+For errors returned by
+.BR snmp_sess_open() ,
+use the corresponding function
+.B snmp_error()
+instead of
+.BR snmp_sess_error() .
+.PP
+Consult snmp_api.h for the complete set of SNMP library
+error values.
+The SNMP library error value
+.IR snmperr
+can be one of the following values:
+.RS 2n
+.IP SNMPERR_GENERR \w'SNMPERR_BAD_REPETITIONS'u+2n
+A generic error occurred.
+.IP SNMPERR_BAD_LOCPORT \w'SNMPERR_BAD_REPETITIONS'u+2n
+The local port was bad because it had already been
+allocated or permission was denied.
+.IP SNMPERR_BAD_ADDRESS \w'SNMPERR_BAD_REPETITIONS'u+2n
+The host name or address given was not useable.
+.IP SNMPERR_BAD_SESSION \w'SNMPERR_BAD_REPETITIONS'u+2n
+The specified session was not open.
+.IP SNMPERR_TOO_LONG \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_NO_SOCKET \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_V2_IN_V1 \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_V1_IN_V2 \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_BAD_REPEATERS \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_BAD_REPETITIONS \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_BAD_ASN1_BUILD \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_BAD_SENDTO \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_BAD_RCVFROM \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_BAD_PARSE \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_BAD_VERSION \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_BAD_COMMUNITY \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_NOAUTH_DESPRIV \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_ABORT \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_UNKNOWN_PDU \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_TIMEOUT \w'SNMPERR_BAD_REPETITIONS'u+2n
+.RE
+.PP
+.SH "SEE ALSO"
+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/netsnmp_session_api.3.def b/man/netsnmp_session_api.3.def
new file mode 100644
index 0000000..c8891a1
--- /dev/null
+++ b/man/netsnmp_session_api.3.def
@@ -0,0 +1,282 @@
+.\" -*- 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:
+.\" /***********************************************************
+.\" 	Copyright 1989 by Carnegie Mellon University
+.\" 
+.\"                       All Rights Reserved
+.\" 
+.\" Permission to use, copy, modify, and distribute this software and its 
+.\" documentation for any purpose and without fee is hereby granted, 
+.\" provided that the above copyright notice appear in all copies and that
+.\" both that copyright notice and this permission notice appear in 
+.\" supporting documentation, and that the name of CMU not be
+.\" used in advertising or publicity pertaining to distribution of the
+.\" software without specific, written prior permission.  
+.\" 
+.\" CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+.\" ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+.\" CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+.\" ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+.\" WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+.\" ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+.\" SOFTWARE.
+.\" ******************************************************************/
+.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 \- netsnmp_session_api functions
+.SH SYNOPSIS
+.B #include <net-snmp/session_api.h>
+.PP
+.BI "void snmp_sess_init ( netsnmp_session*" "sess" );
+.PP
+.BI "netsnmp_session* snmp_open ( netsnmp_session *" "sess");
+.RS
+.I /* Input parameter not used in active sessions */
+.RE
+.PP
+.BI "int snmp_send ( netsnmp_session *" "session,"
+.RS
+.BI "netsnmp_pdu *" "pdu" );
+.RE
+.PP
+.BI "int snmp_async_send ( netsnmp_session *" "session,"
+.RS
+.BI "                         netsnmp_pdu *" pdu ", "
+.br
+.BI "                         snmp_callback " callback ", "
+.br
+.BI "                         void *" callbackData ");"
+.RE
+.PP
+.BI "int snmp_select_info ( int * " numfds, "fd_set *" fdset,
+.RS
+.BI "struct timeval *" timeout, "int *" block );
+.RE
+.PP
+.BI "void snmp_read ( fd_set *" fdset );
+.PP
+.B  void snmp_timeout ( void );
+.PP
+.BI "int snmp_synch_response ( netsnmp_session *" "session,"
+.RS
+.BI "netsnmp_pdu *" "pdu" ", "
+.br
+.BI "netsnmp_pdu **" "response" );
+.RE
+.PP
+.BI "int snmp_close ( netsnmp_session *" session );
+.br
+.B  "int snmp_close_sessions ( void );
+.PP
+.SS Error Reporting
+.I (Move to output_api(3))
+.br
+.BI "void snmp_error ( netsnmp_session *session,
+.RS
+.BI "int *" pcliberr, "int *" psnmperr, "char **" pperrstring );
+.RE
+.PP
+.BI "char *snmp_api_errstring ( int" snmperr );
+.PP
+.BI "void snmp_perror ( char *" msg );
+.RS
+.I /* for parsing errors only */
+.RE
+.PP
+.BI "void snmp_sess_perror (char *" msg, "netsnmp_session *" sess );
+.RS
+.I /* all other SNMP library errors */
+.RE
+.PP
+.SH DESCRIPTION
+.I Snmp_sess_init
+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
+to create an SNMP session, the structure is not used.
+.PP
+.I Snmp_open
+returns a pointer to a newly-formed
+.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 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
+provide an interface for the use of the
+.IR select(2)
+system call so that SNMP transactions can occur asynchronously.
+.PP
+.I Snmp_select_info
+is given the information that would have been passed to
+.I select
+in the absence of SNMP.  For example, this might include window update information.
+This information is modified so that SNMP will get the service it requires from the
+call to
+.I select.
+In this case,
+.I numfds, fdset,
+and
+.I timeout
+correspond to the
+.I nfds, readfds,
+and
+.I timeout
+arguments to
+.I select,
+respectively.  The only exception is that timeout must always point to an allocated (but perhaps uninitialized)
+.I struct timeval.
+If
+.I timeout
+would have been passed as NULL,
+.I block
+is set to true, and
+.I timeout
+is treated as undefined.  This same rule applies upon return from
+.I snmp_select_info.
+.PP
+After calling
+.I snmp_select_info, select
+is called with the returned data.  When select returns,
+.I snmp_read
+should be called with the
+.I fd_set
+returned from
+.I select
+to read each SNMP socket that has input.
+If
+.I select
+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
+.IR snmp_get_errno
+to read the global variable
+.I snmp_errno
+which may have held the error status within the SNMP library.
+The existing method
+.I snmp_perror
+should be used to log ASN.1 coding errors only.
+.PP
+The new method
+.I snmp_sess_perror
+is provided to capture errors that occur during the processing
+of a particular SNMP session.
+.I Snmp_sess_perror
+calls
+.IR snmp_error
+function to obtain the "C" library error
+.I errno
+, the SNMP library error
+.I snmperr
+, and the SNMP library detailed error message
+that is associated with an error that occurred during a given session.
+.PP
+Note that in all cases except one,
+.IR snmp_sess_perror
+should be handed the
+.I netsnmp_session *
+pointer returned from
+.IR snmp_open.
+If
+.IR snmp_open
+returns a null pointer, pass the INPUT
+.I netsnmp_session *
+pointer used to call
+.IR snmp_open.
+.PP
+Error return status from 
+.I snmp_close
+and
+.I snmp_send
+is indicated by return of 0.  A successful status will return a 1 for
+.I snmp_close
+and the request id of the packet for
+.I snmp_send.
+Upon successful return from
+.I snmp_send
+the pdu will be freed by the library.
+.PP
+Consult snmp_api.h for the complete set of SNMP library
+error values.
+The SNMP library error value
+.IR snmperr
+can be one of the following values:
+.RS 2n
+.IP SNMPERR_GENERR \w'SNMPERR_BAD_REPETITIONS'u+2n
+A generic error occurred.
+.IP SNMPERR_BAD_LOCPORT \w'SNMPERR_BAD_REPETITIONS'u+2n
+The local port was bad because it had already been
+allocated or permission was denied.
+.IP SNMPERR_BAD_ADDRESS \w'SNMPERR_BAD_REPETITIONS'u+2n
+The host name or address given was not useable.
+.IP SNMPERR_BAD_SESSION \w'SNMPERR_BAD_REPETITIONS'u+2n
+The specified session was not open.
+.IP SNMPERR_TOO_LONG \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_NO_SOCKET \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_V2_IN_V1 \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_V1_IN_V2 \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_BAD_REPEATERS \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_BAD_REPETITIONS \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_BAD_ASN1_BUILD \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_BAD_SENDTO \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_BAD_PARSE \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_BAD_VERSION \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_NOAUTH_DESPRIV \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_ABORT \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_UNKNOWN_PDU \w'SNMPERR_BAD_REPETITIONS'u+2n
+.IP SNMPERR_TIMEOUT \w'SNMPERR_BAD_REPETITIONS'u+2n
+.RE
+.PP
+A string representation of the error code can be obtained with
+.IR snmp_api_errstring ,
+and a standard error message may be printed using
+.I snmp_perror
+that functions like the
+.I perror
+standard routine.
+.SH "SEE ALSO"
+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 b921dad..0000000
--- a/man/netsnmp_snmp_agent.3
+++ /dev/null
@@ -1,571 +0,0 @@
-.TH "net-snmp agent related processing" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 "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
-.RI "\fIThis function calls into netsnmp_set_mode_request_error, sets error_value given a reqinfo->mode value. \fP"
-.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 ()"
-.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 "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_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 3417 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 566 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 2818 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 2935 of file snmp_agent.c.
-.SS "int handle_pdu (\fBnetsnmp_agent_session\fP * asp)"
-.PP
-This function calls into netsnmp_set_mode_request_error, sets error_value given a reqinfo->mode value. It's used to send specific errors back to the agent to process accordingly.
-.PP
-If error_value is set to SNMP_NOSUCHOBJECT, SNMP_NOSUCHINSTANCE, or SNMP_ENDOFMIBVIEW the following is applicable: Sets the error_value to request->requestvb->type if reqinfo->mode value is set to MODE_GET. If the reqinfo->mode value is set to MODE_GETNEXT or MODE_GETBULK the code calls snmp_log logging an error message.
-.PP
-Otherwise, the request->status value is checked, if it's < 0 snmp_log is called with an error message and SNMP_ERR_GENERR is assigned to request->status. If the request->status value is >= 0 the error_value is set to request->status.
-.PP
-\fBParameters:\fP
-.RS 4
-\fIreqinfo\fP is a pointer to the netsnmp_agent_request_info struct. It contains the reqinfo->mode which is required to set error_value or log error messages.
-.br
-\fIrequest\fP is a pointer to the netsnmp_request_info struct. The error_value is set to request->requestvb->type
-.br
-\fIerror_value\fP is the exception value you want to set, below are possible values.
-.IP "\(bu" 2
-SNMP_NOSUCHOBJECT
-.IP "\(bu" 2
-SNMP_NOSUCHINSTANCE
-.IP "\(bu" 2
-SNMP_ENDOFMIBVIEW
-.IP "\(bu" 2
-SNMP_ERR_NOERROR
-.IP "\(bu" 2
-SNMP_ERR_TOOBIG
-.IP "\(bu" 2
-SNMP_ERR_NOSUCHNAME
-.IP "\(bu" 2
-SNMP_ERR_BADVALUE
-.IP "\(bu" 2
-SNMP_ERR_READONLY
-.IP "\(bu" 2
-SNMP_ERR_GENERR
-.IP "\(bu" 2
-SNMP_ERR_NOACCESS
-.IP "\(bu" 2
-SNMP_ERR_WRONGTYPE
-.IP "\(bu" 2
-SNMP_ERR_WRONGLENGTH
-.IP "\(bu" 2
-SNMP_ERR_WRONGENCODING
-.IP "\(bu" 2
-SNMP_ERR_WRONGVALUE
-.IP "\(bu" 2
-SNMP_ERR_NOCREATION
-.IP "\(bu" 2
-SNMP_ERR_INCONSISTENTVALUE
-.IP "\(bu" 2
-SNMP_ERR_RESOURCEUNAVAILABLE
-.IP "\(bu" 2
-SNMP_ERR_COMMITFAILED
-.IP "\(bu" 2
-SNMP_ERR_UNDOFAILED
-.IP "\(bu" 2
-SNMP_ERR_AUTHORIZATIONERROR
-.IP "\(bu" 2
-SNMP_ERR_NOTWRITABLE
-.IP "\(bu" 2
-SNMP_ERR_INCONSISTENTNAME
-.PP
-.RE
-.PP
-\fBReturns:\fP
-.RS 4
-Returns error_value under all conditions. 
-.RE
-.PP
-
-.PP
-Definition at line 3229 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 1774 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 1883 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 2721 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 3485 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 3528 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 3500 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 3702 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 3686 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 3667 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 1520 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 6b83d58..0000000
--- a/man/netsnmp_snmp_alarm.3
+++ /dev/null
@@ -1,43 +0,0 @@
-.TH "snmp_alarm" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 4fff1c5..0000000
--- a/man/netsnmp_snmp_client.3
+++ /dev/null
@@ -1,137 +0,0 @@
-.TH "various PDU processing routines" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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
-.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, 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 u_char *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 u_char *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\fP (void)"
-.br
-.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 "int snmp_set_var_typed_value (\fBnetsnmp_variable_list\fP * newvar, u_char type, const u_char * 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 687 of file snmp_client.c.
-.SS "int snmp_set_var_value (\fBnetsnmp_variable_list\fP * vars, const u_char * value, size_t len)"
-.PP
-FALL THROUGH 
-.PP
-Definition at line 754 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 7dfcfba..0000000
--- a/man/netsnmp_snmp_logging.3
+++ /dev/null
@@ -1,246 +0,0 @@
-.TH "generic logging for net-snmp" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 "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 639 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 496 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 1278 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 1217 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 7964827..0000000
--- a/man/netsnmp_snmp_pdu.3
+++ /dev/null
@@ -1,292 +0,0 @@
-.TH "snmp_pdu" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-snmp_pdu \- 
-.PP
-The snmp protocol data unit.  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <snmp_api.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 75 of file snmp_api.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 142 of file snmp_api.h.
-.SS "int \fBsnmp_pdu::command\fP"
-.PP
-Type of this PDU. 
-.PP
-Definition at line 83 of file snmp_api.h.
-.SS "u_char* \fBsnmp_pdu::community\fP"
-.PP
-community for outgoing requests. 
-.PP
-Definition at line 127 of file snmp_api.h.
-.SS "size_t \fBsnmp_pdu::community_len\fP"
-.PP
-length of community name. 
-.PP
-Definition at line 129 of file snmp_api.h.
-.SS "u_char* \fBsnmp_pdu::contextEngineID\fP"
-.PP
-context snmpEngineID 
-.PP
-Definition at line 148 of file snmp_api.h.
-.SS "size_t \fBsnmp_pdu::contextEngineIDLen\fP"
-.PP
-Length of contextEngineID. 
-.PP
-Definition at line 150 of file snmp_api.h.
-.SS "char* \fBsnmp_pdu::contextName\fP"
-.PP
-authoritative contextName 
-.PP
-Definition at line 152 of file snmp_api.h.
-.SS "size_t \fBsnmp_pdu::contextNameLen\fP"
-.PP
-Length of contextName. 
-.PP
-Definition at line 154 of file snmp_api.h.
-.SS "oid* \fBsnmp_pdu::enterprise\fP"
-.PP
-System OID. 
-.PP
-Definition at line 135 of file snmp_api.h.
-.SS "long \fBsnmp_pdu::errindex\fP"
-.PP
-Error index (max_repetitions in GetBulk). 
-.PP
-Definition at line 95 of file snmp_api.h.
-.SS "long \fBsnmp_pdu::errstat\fP"
-.PP
-Error status (non_repeaters in GetBulk). 
-.PP
-Definition at line 93 of file snmp_api.h.
-.SS "long \fBsnmp_pdu::msgid\fP"
-.PP
-Message id for V3 messages note: incremented for each retry. 
-.PP
-Definition at line 87 of file snmp_api.h.
-.SS "long \fBsnmp_pdu::reqid\fP"
-.PP
-Request id - note: not incremented on retries. 
-.PP
-Definition at line 85 of file snmp_api.h.
-.SS "u_char* \fBsnmp_pdu::securityEngineID\fP"
-.PP
-authoritative snmpEngineID for security 
-.PP
-Definition at line 156 of file snmp_api.h.
-.SS "size_t \fBsnmp_pdu::securityEngineIDLen\fP"
-.PP
-Length of securityEngineID. 
-.PP
-Definition at line 158 of file snmp_api.h.
-.SS "int \fBsnmp_pdu::securityLevel\fP"
-.PP
-noAuthNoPriv, authNoPriv, authPriv 
-.PP
-Definition at line 102 of file snmp_api.h.
-.SS "char* \fBsnmp_pdu::securityName\fP"
-.PP
-on behalf of this principal 
-.PP
-Definition at line 160 of file snmp_api.h.
-.SS "size_t \fBsnmp_pdu::securityNameLen\fP"
-.PP
-Length of securityName. 
-.PP
-Definition at line 162 of file snmp_api.h.
-.SS "long \fBsnmp_pdu::sessid\fP"
-.PP
-Session id for AgentX messages. 
-.PP
-Definition at line 91 of file snmp_api.h.
-.SS "long \fBsnmp_pdu::specific_type\fP"
-.PP
-specific type 
-.PP
-Definition at line 140 of file snmp_api.h.
-.SS "const oid* \fBsnmp_pdu::tDomain\fP"
-.PP
-The actual transport domain. This SHOULD NOT BE FREE()D. 
-.PP
-Definition at line 117 of file snmp_api.h.
-.SS "u_long \fBsnmp_pdu::time\fP"
-.PP
-Uptime. 
-.PP
-Definition at line 97 of file snmp_api.h.
-.SS "long \fBsnmp_pdu::transid\fP"
-.PP
-Unique ID for incoming transactions. 
-.PP
-Definition at line 89 of file snmp_api.h.
-.SS "void* \fBsnmp_pdu::transport_data\fP"
-.PP
-Transport-specific opaque data. This replaces the IP-centric address field. 
-.PP
-Definition at line 110 of file snmp_api.h.
-.SS "long \fBsnmp_pdu::trap_type\fP"
-.PP
-trap type 
-.PP
-Definition at line 138 of file snmp_api.h.
-.SS "long \fBsnmp_pdu::version\fP"
-.PP
-snmp version 
-.PP
-Definition at line 81 of file snmp_api.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 00e383f..0000000
--- a/man/netsnmp_snmp_session.3
+++ /dev/null
@@ -1,440 +0,0 @@
-.TH "snmp_session" 3 "24 Jun 2011" "Version 5.4.3.pre1" "net-snmp" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-snmp_session \- 
-.PP
-The snmp session structure.  
-
-.SH SYNOPSIS
-.br
-.PP
-.PP
-\fC#include <snmp_api.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 187 of file snmp_api.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 214 of file snmp_api.h.
-.SS "void* \fBsnmp_session::callback_magic\fP"
-.PP
-Pointer to data that the callback function may consider important. 
-.PP
-Definition at line 218 of file snmp_api.h.
-.SS "u_char* \fBsnmp_session::community\fP"
-.PP
-community for outgoing requests. 
-.PP
-Definition at line 230 of file snmp_api.h.
-.SS "size_t \fBsnmp_session::community_len\fP"
-.PP
-Length of community name. 
-.PP
-Definition at line 232 of file snmp_api.h.
-.SS "u_char* \fBsnmp_session::contextEngineID\fP"
-.PP
-authoritative snmpEngineID 
-.PP
-Definition at line 244 of file snmp_api.h.
-.SS "size_t \fBsnmp_session::contextEngineIDLen\fP"
-.PP
-Length of contextEngineID. 
-.PP
-Definition at line 246 of file snmp_api.h.
-.SS "char* \fBsnmp_session::contextName\fP"
-.PP
-authoritative contextName 
-.PP
-Definition at line 252 of file snmp_api.h.
-.SS "size_t \fBsnmp_session::contextNameLen\fP"
-.PP
-Length of contextName. 
-.PP
-Definition at line 254 of file snmp_api.h.
-.SS "u_int \fBsnmp_session::engineBoots\fP"
-.PP
-initial engineBoots for remote engine 
-.PP
-Definition at line 248 of file snmp_api.h.
-.SS "u_int \fBsnmp_session::engineTime\fP"
-.PP
-initial engineTime for remote engine 
-.PP
-Definition at line 250 of file snmp_api.h.
-.SS "u_char \fBsnmp_session::isAuthoritative\fP"
-.PP
-are we the authoritative engine? 
-.PP
-Definition at line 242 of file snmp_api.h.
-.SS "u_short \fBsnmp_session::local_port\fP"
-.PP
-My UDP port number, 0 for default, picked randomly. 
-.PP
-Definition at line 208 of file snmp_api.h.
-.SS "char* \fBsnmp_session::localname\fP"
-.PP
-My Domain name or dotted IP address, 0 for default. 
-.PP
-Definition at line 206 of file snmp_api.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 308 of file snmp_api.h.
-.SS "char* \fBsnmp_session::paramName\fP"
-.PP
-target param name 
-.PP
-Definition at line 295 of file snmp_api.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 202 of file snmp_api.h.
-.SS "size_t \fBsnmp_session::rcvMsgMaxSize\fP"
-.PP
-Largest message to try to receive. 
-.PP
-Definition at line 234 of file snmp_api.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 204 of file snmp_api.h.
-.SS "int \fBsnmp_session::retries\fP"
-.PP
-Number of retries before timeout. 
-.PP
-Definition at line 194 of file snmp_api.h.
-.SS "int \fBsnmp_session::s_errno\fP"
-.PP
-copy of system errno 
-.PP
-Definition at line 220 of file snmp_api.h.
-.SS "int \fBsnmp_session::s_snmp_errno\fP"
-.PP
-copy of library errno 
-.PP
-Definition at line 222 of file snmp_api.h.
-.SS "u_char \fBsnmp_session::securityAuthKey\fP[USM_AUTH_KU_LEN]"
-.PP
-Ku for auth protocol XXX. 
-.PP
-Definition at line 269 of file snmp_api.h.
-.SS "size_t \fBsnmp_session::securityAuthKeyLen\fP"
-.PP
-Length of Ku for auth protocol. 
-.PP
-Definition at line 271 of file snmp_api.h.
-.SS "u_char* \fBsnmp_session::securityAuthLocalKey\fP"
-.PP
-Kul for auth protocol. 
-.PP
-Definition at line 273 of file snmp_api.h.
-.SS "size_t \fBsnmp_session::securityAuthLocalKeyLen\fP"
-.PP
-Length of Kul for auth protocol XXX. 
-.PP
-Definition at line 275 of file snmp_api.h.
-.SS "oid* \fBsnmp_session::securityAuthProto\fP"
-.PP
-auth protocol oid 
-.PP
-Definition at line 265 of file snmp_api.h.
-.SS "size_t \fBsnmp_session::securityAuthProtoLen\fP"
-.PP
-Length of auth protocol oid. 
-.PP
-Definition at line 267 of file snmp_api.h.
-.SS "u_char* \fBsnmp_session::securityEngineID\fP"
-.PP
-authoritative snmpEngineID 
-.PP
-Definition at line 256 of file snmp_api.h.
-.SS "size_t \fBsnmp_session::securityEngineIDLen\fP"
-.PP
-Length of contextEngineID. 
-.PP
-Definition at line 258 of file snmp_api.h.
-.SS "void* \fBsnmp_session::securityInfo\fP"
-.PP
-security \fBmodule\fP specific 
-.PP
-Definition at line 300 of file snmp_api.h.
-.SS "int \fBsnmp_session::securityLevel\fP"
-.PP
-noAuthNoPriv, authNoPriv, authPriv 
-.PP
-Definition at line 293 of file snmp_api.h.
-.SS "int \fBsnmp_session::securityModel\fP"
-.PP
-snmp security model, v1, v2c, usm 
-.PP
-Definition at line 291 of file snmp_api.h.
-.SS "char* \fBsnmp_session::securityName\fP"
-.PP
-on behalf of this principal 
-.PP
-Definition at line 260 of file snmp_api.h.
-.SS "size_t \fBsnmp_session::securityNameLen\fP"
-.PP
-Length of securityName. 
-.PP
-Definition at line 262 of file snmp_api.h.
-.SS "u_char \fBsnmp_session::securityPrivKey\fP[USM_PRIV_KU_LEN]"
-.PP
-Ku for privacy protocol XXX. 
-.PP
-Definition at line 282 of file snmp_api.h.
-.SS "size_t \fBsnmp_session::securityPrivKeyLen\fP"
-.PP
-Length of Ku for priv protocol. 
-.PP
-Definition at line 284 of file snmp_api.h.
-.SS "u_char* \fBsnmp_session::securityPrivLocalKey\fP"
-.PP
-Kul for priv protocol. 
-.PP
-Definition at line 286 of file snmp_api.h.
-.SS "size_t \fBsnmp_session::securityPrivLocalKeyLen\fP"
-.PP
-Length of Kul for priv protocol XXX. 
-.PP
-Definition at line 288 of file snmp_api.h.
-.SS "oid* \fBsnmp_session::securityPrivProto\fP"
-.PP
-priv protocol oid 
-.PP
-Definition at line 278 of file snmp_api.h.
-.SS "size_t \fBsnmp_session::securityPrivProtoLen\fP"
-.PP
-Length of priv protocol oid. 
-.PP
-Definition at line 280 of file snmp_api.h.
-.SS "long \fBsnmp_session::sessid\fP"
-.PP
-Session id - AgentX only. 
-.PP
-Definition at line 224 of file snmp_api.h.
-.SS "size_t \fBsnmp_session::sndMsgMaxSize\fP"
-.PP
-Largest message to try to send. 
-.PP
-Definition at line 236 of file snmp_api.h.
-.SS "long \fBsnmp_session::timeout\fP"
-.PP
-Number of uS until first timeout, then exponential backoff. 
-.PP
-Definition at line 196 of file snmp_api.h.
-.SS "long \fBsnmp_session::version\fP"
-.PP
-snmp version 
-.PP
-Definition at line 192 of file snmp_api.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 0f3a474..0000000
--- a/man/netsnmp_stash_cache.3
+++ /dev/null
@@ -1,94 +0,0 @@
-.TH "stash_cache" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 195 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 113 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 79 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 88 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 44 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 101 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 238 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 478220e..0000000
--- a/man/netsnmp_stash_to_next.3
+++ /dev/null
@@ -1,34 +0,0 @@
-.TH "stash_to_next" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 28 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 09e5515..0000000
--- a/man/netsnmp_table.3
+++ /dev/null
@@ -1,234 +0,0 @@
-.TH "table" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 "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"
-.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 881 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 125 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 134 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 85 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 108 of file table.c.
-.SS "\fBnetsnmp_mib_handler\fP* netsnmp_sparse_table_handler_get (void)"
-.PP
-create sparse table handler 
-.PP
-Definition at line 722 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
-Definition at line 733 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 784 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 821 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 751 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 863 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 847 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 142 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 4deb404..0000000
--- a/man/netsnmp_table_array.3
+++ /dev/null
@@ -1,85 +0,0 @@
-.TH "table_array" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 229 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 212 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 236 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 149 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 c087258..0000000
--- a/man/netsnmp_table_container.3
+++ /dev/null
@@ -1,117 +0,0 @@
-.TH "table_container" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 "\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 320 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 254 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 351 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 721 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 e33290b..0000000
--- a/man/netsnmp_table_data.3
+++ /dev/null
@@ -1,283 +0,0 @@
-.TH "table_data" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 "NETSNMP_INLINE 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_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 "NETSNMP_INLINE 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 52 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 62 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 656 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 664 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 673 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 378 of file table_data.c.
-.SS "NETSNMP_INLINE 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 685 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 412 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 401 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 70 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 811 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 792 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 825 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 801 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 "NETSNMP_INLINE 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 8a01c3c..0000000
--- a/man/netsnmp_table_dataset.3
+++ /dev/null
@@ -1,302 +0,0 @@
-.TH "table_dataset" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 "\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 "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_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 char *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 77 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 838 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 848 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 372 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 1214 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 875 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 398 of file table_dataset.c.
-.SS "int netsnmp_set_row_column (\fBnetsnmp_table_row\fP * row, unsigned int column, int type, const char * 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 1249 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 108 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 242 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 1202 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 1171 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 1178 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 1303 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 187 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 164 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 151 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 174 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 219 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 208 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 197 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 268 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 1314 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 329 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 aebc89e..0000000
--- a/man/netsnmp_table_generic.3
+++ /dev/null
@@ -1,44 +0,0 @@
-.TH "generic_table_API" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 1e94667..0000000
--- a/man/netsnmp_table_indexes.3
+++ /dev/null
@@ -1,83 +0,0 @@
-.TH "table_indexes" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 5765aea..0000000
--- a/man/netsnmp_table_iterator.3
+++ /dev/null
@@ -1,192 +0,0 @@
-.TH "table_iterator" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 2c06db4..0000000
--- a/man/netsnmp_table_iterator.h.3
+++ /dev/null
@@ -1,111 +0,0 @@
-.TH "table_iterator.h" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 84463af..0000000
--- a/man/netsnmp_table_maintenance.3
+++ /dev/null
@@ -1,116 +0,0 @@
-.TH "table_maintenance" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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_rows.3 b/man/netsnmp_table_rows.3
deleted file mode 100644
index cf37b2d..0000000
--- a/man/netsnmp_table_rows.3
+++ /dev/null
@@ -1,94 +0,0 @@
-.TH "table_rows" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 16bd6a2..0000000
--- a/man/netsnmp_tdata.3
+++ /dev/null
@@ -1,287 +0,0 @@
-.TH "tdata" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 "\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 284 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 399 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 186 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 92 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 518 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 531 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 84 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 54 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 157 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 68 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 370 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 387 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 379 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 362 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 351 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 260 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 242 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 227 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 414 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 424 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 431 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 447 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 460 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 439 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 475 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 489 of file table_tdata.c.
-.SH "Author"
-.PP 
-Generated automatically by Doxygen for net-snmp from the source code.
diff --git a/man/netsnmp_trap_api.3.def b/man/netsnmp_trap_api.3.def
new file mode 100644
index 0000000..424eb6d
--- /dev/null
+++ b/man/netsnmp_trap_api.3.def
@@ -0,0 +1,58 @@
+.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
+.SH SYNOPSIS
+.B #include <net-snmp/agent/agent_trap.h>
+.PP
+.BI "void send_easy_trap(int " trap ", int " specific ");"
+.PP
+.BI "void send_trap_vars(int " trap ", int " specific ", struct variable_list *" vars ");"
+.PP
+.BI "void send_v2trap(struct variable_list *" vars ");"
+.SH DESCRIPTION
+These three routines may be used to send traps from a MIB module
+within the Net-SNMP agent (including an AgentX subagent).
+.PP
+.B send_easy_trap()
+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.
+.PP
+.B send_trap_vars()
+is similar, but appends the supplied list of variable bindings to the
+traps that are sent.
+.PP
+.B send_v2trap()
+uses the supplied list of variable bindings to form an SNMPv2 trap,
+which is sent to SNMPv2-capable sinks on the configured list.  An
+equivalent INFORM is sent to the configuredq list of inform sinks.
+Sinks that can only handle SNMPv1 traps are skipped.
+.PP
+The various "send_trap()" calls allow you to specify traps in different
+formats.  And the various "trapsink" directives allow you to specify
+destinations to receive different formats.
+But *all* traps are sent to *all* destinations, regardless of how they
+were specified.
+.nf
+I.e. it's
+                                         ___  trapsink
+                                        /
+    send_easy_trap \___  [  Trap      ] ____  trap2sink
+                    ___  [ Generator  ]
+    send_v2trap    /     [            ] ----- informsink
+                                        \____
+                                              trapsess
+
+*Not*
+     send_easy_trap  ------------------->  trapsink
+     send_v2trap     ------------------->  trap2sink
+     ????            ------------------->  informsink
+     ????            ------------------->  trapsess
+.fi
+.SH WARNINGS
+These routines are used to send the traps immediately they are called.
+Invoking them at the appropriate time is left to the MIB module programmer.
+.SH "SEE ALSO"
+.BR snmpd.conf "(5), " snmptrapd "(8)"
diff --git a/man/netsnmp_util.3 b/man/netsnmp_util.3
deleted file mode 100644
index c046d90..0000000
--- a/man/netsnmp_util.3
+++ /dev/null
@@ -1,503 +0,0 @@
-.TH "Memory Utility Routines" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 \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 u_char *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 "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 "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 131 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 150 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 118 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 53 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 99 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 64 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 68 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 85 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 89 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 57 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 72 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 798 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 774 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 853 of file tools.c.
-.SS "void atime_setMarker (marker_t pm)"
-.PP
-set a time marker. 
-.PP
-Definition at line 785 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 290 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 188 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 327 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 208 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 901 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 239 of file tools.c.
-.SS "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 929 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 428 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 258 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 488 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 124 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 815 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 833 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 875 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 96bf533..0000000
--- a/man/netsnmp_utilities.3
+++ /dev/null
@@ -1,74 +0,0 @@
-.TH "utility_handlers" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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/netsnmp_varbind_api.3.def b/man/netsnmp_varbind_api.3.def
new file mode 100644
index 0000000..3941f9f
--- /dev/null
+++ b/man/netsnmp_varbind_api.3.def
@@ -0,0 +1,216 @@
+.TH NETSNMP_VARBIND_API 3 "13 Aug 2010" VVERSIONINFO "Net-SNMP"
+.SH NAME
+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 ","
+.br
+.BI "                     const oid *" objid ", size_t " objidlen ","
+.br
+.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 ","
+.br
+.BI "                     const oid *" objid ", size_t " objidlen ","
+.br
+.BI "                     u_char " type ", const void *" value ", size_t " len ");"
+.br
+.B "netsnmp_variable_list *snmp_add_null_var("
+.br
+.BI "                     netsnmp_pdu *" pdu ","
+.br
+.BI "                     const oid *" objid ", size_t " objidlen ");"
+.PP
+.B "netsnmp_variable_list *snmp_clone_varbind("
+.br
+.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 ");"
+.br
+.BI "int  snmp_set_var_value( netsnmp_variable_list* " variable ","
+.br
+.BI "                     const void * " value ", size_t " vallen ");"
+.br
+.BI "int  snmp_set_var_typed_value( netsnmp_variable_list* " variable ","
+.br
+.BI "                     u_char " type ","
+.br
+.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 ");"
+.br
+.SS Output
+.PP
+.BI "void  print_variable(const oid *" "objid" ", size_t " "objidlen" ","
+.br
+.BI "                     const netsnmp_variable_list *" variable ");"
+.br
+.BI "void fprint_variable(FILE *" fp ","
+.br
+.BI "                     const oid *" objid ", size_t " objidlen ","
+.br
+.BI "                     const netsnmp_variable_list *" variable ");"
+.br
+.BI "int snprint_variable(char *" "buf" ", size_t " "len" ","
+.br
+.BI "                     const oid *" objid ", size_t " objidlen ","
+.br
+.BI "                     const netsnmp_variable_list *" variable ");"
+.PP
+.BI "void  print_value(const oid *" objid ", size_t " objidlen ","
+.br
+.BI "                     const netsnmp_variable_list *" variable ");"
+.br
+.BI "void fprint_value(FILE *" fp ","
+.br
+.BI "                     const oid *" objid ", size_t " objidlen ","
+.br
+.BI "                     const netsnmp_variable_list *" variable ");"
+.br
+.BI "int snprint_value(char *" buf ", size_t " "len" ","
+.br
+.BI "                     const oid *" objid ", size_t " objidlen ","
+.br
+.BI "                     const netsnmp_variable_list *" variable ");"
+.br
+.br
+.SS Deletion
+.PP
+.BI "void snmp_free_var(       netsnmp_variable_list *" variable ");"
+.br
+.BI "void snmp_free_varbind( netsnmp_variable_list *" variables ");"
+.br
+.PP
+.SH DESCRIPTION
+The functions dealing with variable bindings fall into four groups - 
+dealing with the creation, setting of values, output and deletion of varbinds.
+.SS Creation
+.B snmp_pdu_add_variable
+will create a new varbind structure, initialised with the name (
+.IR objid ", " objidlen
+), syntax (
+.I type
+) and value (
+.I value ", " len
+) provided.
+This varbind is then added to the end of the varbind list in
+the given PDU.
+.PP
+.B snmp_varlist_add_variable
+is similar, but appends the new varbind to the end of the
+varbind list provided.
+When adding the first varbind to an empty list, simply
+pass the address of the head of the list:
+.IP
+  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).
+.PP
+.B snmp_add_null_var
+is a convenience function to add an empty varbind to the PDU.
+without needing to specify the NULL value explicitly.
+This is the normal mechanism for constructing a GET (or similar)
+information retrieval request.
+.br
+Again, this returns a pointer to the new varbind, or NULL.
+.PP
+.B snmp_clone_varbind
+creates a copy of each varbind in the specified list,
+returning a pointer to the head of the new list
+(or NULL if the cloning fails).
+.br
+.SS Setting of values
+.B snmp_set_var_objid
+sets the name of the varbind structure to the specified OID.
+.br
+.B snmp_set_var_typed_value
+sets the syntax type and value of the varbind structure.
+.br
+.B snmp_set_var_value
+sets the value of the varbind structure, leaving the syntax type unchanged.
+.br
+.B snmp_set_var_typed_integer
+is a convenience function to set the syntax type and value for
+a 32-bit integer-based varbind.
+.PP
+All four of these return 0 if the assignment is successful,
+or 1 if it is not.
+.SS Output
+.B print_variable
+will take an object identifier (as returned by
+.BR read_objid ", " snmp_parse_oid " or " get_module_node )
+and an instance of such a variable, and prints to the standard output
+the textual form of the object identifier together with the value
+of the variable.
+.PP
+.B fprint_variable
+does the same, but prints to the FILE pointer specified by the initial
+parameter.
+.PP
+.B snprint_variable
+prints the same information into the buffer pointed to by
+.I buf
+which is of length
+.IR len .
+It returns the number of characters printed, or -1 if the
+buffer was not large enough.  In the latter case,
+.I buf
+will typically contained a truncated version of the information (but
+this behaviour is not guaranteed).  This function replaces the
+obsolete function
+.BR sprint_variable .
+.PP
+.BR print_value ,
+.BR fprint_value ,
+and
+.B snprint_value
+do the same as the equivalent
+.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
+releases all memory used by the given varbind structure.
+.br
+.B snmp_free_varbind
+releases all memory used by each varbind structure in the varbind list provided.
+.br
+.SH "SEE ALSO"
+.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 1897c5e..0000000
--- a/man/netsnmp_variable_list.3
+++ /dev/null
@@ -1,132 +0,0 @@
-.TH "variable_list" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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 <snmp_api.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 529 of file snmp_api.h.
-.SH "Field Documentation"
-.PP 
-.SS "u_char \fBvariable_list::buf\fP[40]"
-.PP
-90 percentile < 40. 
-.PP
-Definition at line 545 of file snmp_api.h.
-.SS "void* \fBvariable_list::data\fP"
-.PP
-(Opaque) hook for additional data 
-.PP
-Definition at line 547 of file snmp_api.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 533 of file snmp_api.h.
-.SS "size_t \fBvariable_list::name_length\fP"
-.PP
-number of subid's in name 
-.PP
-Definition at line 535 of file snmp_api.h.
-.SS "oid \fBvariable_list::name_loc\fP[MAX_OID_LEN]"
-.PP
-buffer to hold the OID 
-.PP
-Definition at line 543 of file snmp_api.h.
-.SS "struct \fBvariable_list\fP* \fBvariable_list::next_variable\fP\fC [read]\fP"
-.PP
-NULL for last \fBvariable\fP. 
-.PP
-Definition at line 531 of file snmp_api.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 537 of file snmp_api.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 539 of file snmp_api.h.
-.SS "size_t \fBvariable_list::val_len\fP"
-.PP
-the length of the value to be copied into buf 
-.PP
-Definition at line 541 of file snmp_api.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 558f4f6..0000000
--- a/man/netsnmp_watcher.3
+++ /dev/null
@@ -1,75 +0,0 @@
-.TH "watcher" 3 "24 Jun 2011" "Version 5.4.3.pre1" "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_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, 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, 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, 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, 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, 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, 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, oid *reg_oid, size_t reg_oid_len, u_long *it, Netsnmp_Node_Handler *subhandler)"
-.br
-.in -1c
-.SH "Detailed Description"
-.PP 
-Watch a specified \fBvariable\fP and process it as an instance or scalar object. 
-.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_config.3.def b/man/read_config.3.def
deleted file mode 100644
index db80d21..0000000
--- a/man/read_config.3.def
+++ /dev/null
@@ -1,292 +0,0 @@
-.TH READ_CONFIG 3 "23 Feb 2003" "" "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 - read_config functions
-.SH SYNOPSIS
-.B #include <net-snmp/config_api.h>
-.PP
-.B struct config_line *
-.br
-.BI "  register_config_handler(const char *" filePrefix ",
-.br
-.BI "                     const char *" token ,
-.br
-.BI "                     void (*" parser ")(const char *, char *),"
-.br
-.BI "                     void (*" releaser ")(void),"
-.br
-.BI "                     const char *"usageLine ");"
-.PP
-.B struct config_line *
-.br
-.BI "  register_premib_handler(const char *" filePrefix ", 
-.br
-.BI "                     const char *" token ,
-.br
-.BI "                     void (*" parser ")(const char *, char *),"
-.br
-.BI "                     void (*" releaser ")(void),"
-.br
-.BI "                     const char *" usageLine ");"
-.PP
-.BI "void unregister_config_handler(const char *" filePrefix ","
-.br
-.BI "                     const char *" token ");"
-.PP
-.B struct config_line *
-.br
-.BI "  register_app_config_handler(const char *" token ,
-.br
-.BI "                     void (*" parser ")(const char *, char *),"
-.br
-.BI "                     void (*" releaser ")(void),"
-.br
-.BI "                     const char *"usageLine ");"
-.PP
-.B struct config_line *
-.br
-.BI "  register_app_premib_handler(const char *" token ,
-.br
-.BI "                     void (*" parser ")(const char *, char *),"
-.br
-.BI "                     void (*" releaser ")(void),"
-.br
-.BI "                     const char *" usageLine ");"
-.PP
-.BI "void unregister_app_config_handler(const char *" token ");"
-.PP
-.BI "void read_config_print_usage(char *" lead ");"
-.PP
-.B "void read_configs(void);"
-.PP
-.B "void read_premib_configs(void);"
-.PP
-.BI "void config_pwarn(const char *" string ");"
-.br
-.BI "void config_perror(const char *" string ");"
-
-.SH DESCRIPTION
-The functions are a fairly extensible system of parsing various
-configuration files at the run time of an application.  The
-configuration file flow is broken into the following phases:
-.RS 4
-.TP 4
-1.
-Registration of handlers.
-.TP
-2.
-Reading of the configuration files for pre-MIB parsing requirements.
-.TP
-3.
-Reading and parsing of the textual MIB files.
-.TP
-4.
-Reading of the configuration files for configuration directives.
-.TP
-5.
-Optionally re-reading the configuration files at a future date.
-.RE
-.PP
-The idea is that the calling application is able to register
-.I handlers
-for certain
-.I tokens
-specified in certain types of
-.I files.
-The 
-.B 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.
-.SH TOKEN HANDLERS
-.PP
-Handler functions should have the following signature:
-.PP
-.RS
-.BI "void handler(const char *" token ", char *" line ");"
-.RE
-.PP
-The function will be called with two arguments, the first being the
-token that triggered the call to this function (which would be one of
-the tokens that the function had been registered for), and the second
-being the remainder of the configuration file line beyond the white
-space following the token.
-.SH RESOURCE FREEING HANDLERS
-.PP
-If the parameter
-.I releaser
-passed to
-.B register_config_handler
-is non-NULL, then 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 and reset its notion
-of the configuration to its default.  The token handler function will
-then be called again.  No arguments are passed to the resource freeing
-handler.
-.SH REGISTERING A HANDLER
-.TP
-.B register_config_handler()
-The
-.B handler()
-function above could be registered for the configuration file
-.I snmp.conf,
-with the token
-.I genericToken
-and the help string (discussed later)
-.I """ARG1 [ARG2]"""
-using the following call to the 
-.B register_config_handler()
-function:
-.PP
-.RS
-.RS
-register_config_handler("snmp", "genericToken", handler, NULL, "ARG1 [ARG2]");
-.RE
-.RE
-.IP
-This would register the
-.B handler()
-function so that it will get called every time the first word of a
-line in the 
-.I snmp.conf
-configuration file(s) matches "genericToken" (see 
-.B read_configs() 
-below).
-.TP
-.B register_premib_handler()
-The 
-.B register_premib_handler()
-function works identically to the 
-.B register_config_handler()
-function but is intended for config file tokens that need to be read
-in before the textual MIBs are read in, probably because they will be
-used to configure the MIB parser.  It is rarely the case that anything 
-but the SNMP library itself should need to use this function.
-.TP
-.B unregister_config_handler()
-Removes the registered configuration handler for the
-.I filePrefix
-and
-.IR token .
-
-.TP
-.B register_app_config_handler()
-.TP
-.B register_app_premib_handler()
-.TP
-.B unregister_app_config_handler()
-These functions are analagous to 
-.BR register_config_handler() ", " register_premib_handler() " and "
-.B unregister_config_handler()
-but don't require the file type argument (which is filled in by the
-application).  It is intended that MIB modules written for the agent
-use these functions to allow the agent to have more control over which
-configuration files are read (typically the
-.I snmpd.conf
-files).
-.SH HELP STRINGS
-.PP
-The
-.I usageLine
-parameter passed to
-.B register_config_handler()
-and similar calls, is used to display help information when the
-.B read_config_print_usage()
-function is called.  This function is used by all of the applications
-when the 
-.B -H
-flag is passed on the command line.  It prints a summary of all of the
-configuration file lines, and the associated files, that the
-configuration system understands.  The
-.I usageLine
-parameter should be a list of arguments expected after the token, and
-not a lengthy description (which should go into a manual page
-instead).  The
-.I lead
-prefix will be prepended to each line that the function prints to
-stderr, where it displays its output.
-.PP
-The
-.B init_snmp()
-function should be called before the
-.B read_config_print_usage()
-function is called, so that the library can register its configuration 
-file directives as well for the 
-.B read_config_print_usage()
-function to display.
-.SH READING CONFIGURATION FILES
-.TP
-.B init_snmp()
-Once the relevant configuration token parsers have been registered,
-.B init_snmp()
-should be called.  It will parse the configuration file tokens
-registered with
-.B register_premib_handler(),
-read in the textual MIB files using
-.B init_mib(),
-and finally parse the configuration file tokens registered with 
-.BR register_config_handler() .
-.PP
-If the 
-.B init_snmp()
-function is used, none of the following functions need to be called by 
-the application:
-.TP
-.B register_mib_handlers()
-The SNMP library's routine to register its configuration file
-handlers.
-.TP
-.B read_premib_configs()
-The routine that parses the configuration files for tokens registered
-to be dealt with before the textual MIBs are read in.  See 
-.B read_configs()
-below.
-.TP
-.B read_configs()
-Reads all the configuration files it can find in the 
-.I SNMPCONFPATH
-environment variable (or its default value) for tokens and
-appropriately calls the handlers registered to it, or prints a
-"Unknown token" warning message.  It looks for any file that it has
-previously received a registration request for.
-.SH CONFIGURATION FILES READ
-.PP
-The configuration files read are found by using the colon separated
-.I SNMPCONFPATH
-environment variable (or its default value, which will be
-SYSCONFDIR/snmp, followed by
-DATADIR/snmp, followed by LIBDIR/snmp, followed by $HOME/.snmp) and
-reading in the files found that match both the prefix registered and
-the two suffixes
-.I .conf
-and
-.I .local.conf.
-The idea behind the two different suffixes is that the first file can
-be shared (via rdist or an NFS mount) across a large number of
-machines and the second file can be used to configure local settings
-for one particular machine.  They do not need to be present, and will
-only be read if found.
-.SH ERROR HANDLING FUNCTIONS
-.PP
-The two functions
-.B config_pwarn()
-and
-.B config_perror()
-both take an error string as an argument and print it to stderr along
-with the file and line number that caused the error.  A call to the
-second function will also force 
-.B read_configs() 
-to eventually return with an error code indicating to it's calling
-function that it should abort the operation of the application.
-.SH "ENVIRONMENT VARIABLES"
-.TP 10
-SNMPCONFPATH
-A colon separated list of directories to search for configuration
-files in.
-Default: SYSCONFDIR/snmp:DATADIR/snmp:LIBDIR/snmp:$HOME/.snmp
-.SH "SEE ALSO"
-.BR mib_api "(3), " snmp_api (3)
-.\" Local Variables:
-.\"  mode: nroff
-.\" End:
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 432e04b..46203d0 100644
--- a/man/snmp.conf.5.def
+++ b/man/snmp.conf.5.def
@@ -1,4 +1,4 @@
-.TH SNMP.CONF 5 "21 Feb 2007" 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,17 +64,40 @@
 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.
+This can be overridden using the \fB\-v\fR option.
 .IP "defCommunity STRING"
 defines the default community to use for SNMPv1 and SNMPv2c requests.
-This can be overridden using the \fB-c\fR option.
+This can be overridden using the \fB\-c\fR option.
 .\".IP "dumpPacket (1|yes|true|0|no|false)"
+.IP "alias NAME DEFINITION"
+Creates an aliased tied to NAME for a given transport definition.  The
+alias can the be referred to using an alias: prefix.  Eg, a line of
+"alias here udp:127.0.0.1:6161" would allow you to use a destination
+host of "alias:here" instead of "udp:127.0.0.1:6161".  This becomes
+more useful with complex transport addresses involving IPv6 addresses,
+etc.
 .IP "dumpPacket yes"
 defines whether to display a hexadecimal dump of the raw SNMP requests
 sent and received by the application.
-This is equivalent to the \fB-d\fR option.
+This is equivalent to the \fB\-d\fR option.
 .IP "doDebugging (1|0)"
 turns on debugging for all applications run if set to 1.
 .\"
@@ -58,7 +107,7 @@
 .IP "debugTokens TOKEN[,TOKEN...]"
 defines the debugging tokens that should be turned on when
 \fIdoDebugging\fR is set.
-This is equivalent to the \fB-D\fR option.
+This is equivalent to the \fB\-D\fR option.
 .\".IP "16bitIDs (1|yes|true|0|no|false)"
 .IP "16bitIDs yes"
 restricts requestIDs, etc to 16-bit values.
@@ -94,7 +143,7 @@
 .IP "noRangeCheck yes"
 disables the validation of varbind values against the MIB definition
 for the relevant OID.
-This is equivalent to the \fB-Ir\fR option.
+This is equivalent to the \fB\-Ir\fR option.
 .IP
 This directive is primarily relevant to the \fBsnmpset\fR command,
 but will also apply to any application that calls \fIsnmp_add_var()\fR
@@ -117,16 +166,24 @@
 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.
+.IP "retries INTEGER"
+Specifies the number of retries to be used in the requests.
+.IP "timeout INTEGER"
+Specifies the timeout in seconds between retries.
 .\"
 .\" XXX - It is probably about time to remove this choice!
 .\"
 .SH SNMPv3 SETTINGS
 .IP "defSecurityName STRING"
 defines the default security name to use for SNMPv3 requests.
-This can be overridden using the \fB-u\fR option.
+This can be overridden using the \fB\-u\fR option.
 .IP "defSecurityLevel noAuthNoPriv|authNoPriv|authPriv"
 defines the default security level to use for SNMPv3 requests.
-This can be overridden using the \fB-l\fR option.
+This can be overridden using the \fB\-l\fR option.
 .IP
 If not specified, the default value for this token is \fInoAuthNoPriv\fR.
 .\"
@@ -142,7 +199,7 @@
 .IP "defPrivPassphrase STRING"
 define the default authentication and privacy pass phrases to use
 for SNMPv3 requests.
-These can be overridden using the \fB-A\fR and \fB-X\fR options respectively.
+These can be overridden using the \fB\-A\fR and \fB\-X\fR options respectively.
 .IP
 The 
 .B defPassphrase
@@ -152,7 +209,7 @@
 .IP "defPrivType DES|AES"
 define the default authentication and privacy protocols to use for
 SNMPv3 requests.
-These can be overridden using the \fB-a\fR and \fB-x\fR options respectively.
+These can be overridden using the \fB\-a\fR and \fB\-x\fR options respectively.
 .IP
 If not specified, SNMPv3 requests will default to MD5 authentication
 and DES encryption.
@@ -164,7 +221,7 @@
 .RE
 .IP "defContext STRING"
 defines the default context to use for SNMPv3 requests.
-This can be overridden using the \fB-n\fR option.
+This can be overridden using the \fB\-n\fR option.
 .IP
 If not specified, the default value for this token is the default context
 (i.e. the empty string "").
@@ -183,7 +240,7 @@
 normally has better entropy than a password unless it is
 amazingly long).
 The directives are equivalent to the short-form
-command line options \fB-3m\fR, \fB-3M\fR, \fB-3k\fR, and \fB-3K\fR.
+command line options \fB\-3m\fR, \fB\-3M\fR, \fB\-3k\fR, and \fB\-3K\fR.
 .IP
 Localized keys are
 master keys which have been converted to a unique key which is only
@@ -192,6 +249,23 @@
 being used (auth keys: MD5=16 bytes, SHA1=20 bytes;
 priv keys: DES=16 bytes (8
 bytes of which is used as an IV and not a key), and AES=16 bytes).
+.IP "sshtosnmpsocket PATH"
+Sets the path of the \fBsshtosnmp\fR socket created by an application
+(e.g. snmpd) listening for incoming ssh connections through the
+\fBsshtosnmp\fR unix socket.
+.IP "sshtosnmpsocketperms MODE [OWNER [GROUP]]"
+Sets the mode, owner and group of the \fBsshtosnmp\fR socket created by
+an application (e.g. \fBsnmpd\fR) listening for incoming ssh connections
+through the \fBsshtosnmp\fR unix socket.  The socket needs to be read/write
+privileged for SSH users that are allowed to connect to the SNMP
+service (VACM access still needs to be granted as well, most likely
+through the TSM security model).
+.IP "sshusername NAME"
+Sets the SSH user name for logging into the remote system.
+.IP "sshpubkey FILE"
+Set the public key file to use when connecting to a remote system.
+.IP "sshprivkey FILE"
+Set the private key file to use when connecting to a remote system.
 .\"
 .\" XXX - are these lengths still correct ?
 .\"
@@ -215,7 +289,7 @@
 for handling input to and output from external shell commands.
 Used by the \fImkstemp()\fR and \fImktemp()\fR functions.
 .IP
-If not specified, the default pattern is \fC/tmp/snmpdXXXXXX\fR.
+If not specified, the default pattern is \fCNETSNMP_TEMP_FILE_PATTERN\fR.
 .IP "serverRecvBuf INTEGER"
 specifies the desired size of the buffer to be used when receiving
 incoming SNMP requests.
@@ -232,18 +306,18 @@
 .SH MIB HANDLING
 .IP "mibdirs DIRLIST"
 specifies a list of directories to search for MIB files.
-This operates in the same way as the \fB-M\fR option -
+This operates in the same way as the \fB\-M\fR option -
 see \fIsnmpcmd(1)\fR for details.
 Note that this value can be overridden by the
 .B MIBDIRS
-environment variable, and the \fB-M\fR option.
+environment variable, and the \fB\-M\fR option.
 .IP "mibs MIBLIST"
 specifies a list of MIB modules (not files) that should be loaded.
-This operates in the same way as the \fB-m\fR option -
+This operates in the same way as the \fB\-m\fR option -
 see \fIsnmpcmd(1)\fR for details.
 Note that this list can be overridden by the
 .B MIBS
-environment variable, and the \fB-m\fR option.
+environment variable, and the \fB\-m\fR option.
 .IP "mibfile FILE"
 specifies a (single) MIB file to load, in addition to the
 list read from the \fImibs\fR token (or equivalent configuration).
@@ -252,14 +326,15 @@
 environment variable.
 .IP "showMibErrors (1|yes|true|0|no|false)"
 whether to display MIB parsing errors.
-.IP "strictCommentTerm (1|yes|true|0|no|false)"
+.IP "commentToEOL (1|yes|true|0|no|false)"
 whether MIB parsing should be strict about comment termination.
 Many MIB writers assume that ASN.1 comments extend to the end of
-the text line, rather than being terminated by the next "--" token.
+the text line, rather than being terminated by the next "\-\-" token.
 This token can be used to accept such (strictly incorrect) MIBs.
 .br
-Note that this directive is poorly named, since a value of "true"
-will turn \fIoff\fP the strict interpretation of MIB comments.
+Note that this directive was previous (mis-)named \fIstrictCommentTerm\fR,
+but with the reverse behaviour from that implied by the name.
+This earlier token is still accepted for backwards compatibility.
 .IP "mibAllowUnderline (1|yes|true|0|no|false)"
 whether to allow underline characters in MIB object names and
 enumeration values.
@@ -275,56 +350,65 @@
 being passed to the logging routines.  This option is only used when file logging is active. 
 .IP "printNumericEnums (1|yes|true|0|no|false)"
 Equivalent to
-.BR -Oe .
+.BR \-Oe .
 .IP "printNumericOids (1|yes|true|0|no|false)"
 Equivalent to
-.BR -On .
+.BR \-On .
 .IP "dontBreakdownOids (1|yes|true|0|no|false)"
 Equivalent to
-.BR -Ob .
+.BR \-Ob .
 .IP "escapeQuotes (1|yes|true|0|no|false)"
 Equivalent to
-.BR -OE .
+.BR \-OE .
 .IP "quickPrinting (1|yes|true|0|no|false)"
 Equivalent to
-.BR -Oq .
+.BR \-Oq .
 .IP "printValueOnly (1|yes|true|0|no|false)"
 Equivalent to
-.BR -Ov .
+.BR \-Ov .
 .IP "dontPrintUnits (1|yes|true|0|no|false)"
 Equivalent to
-.BR -OU .
+.BR \-OU .
 .IP "numericTimeticks (1|yes|true|0|no|false)"
 Equivalent to
-.BR -Ot .
+.BR \-Ot .
 .IP "printHexText (1|yes|true|0|no|false)"
 Equivalent to
-.BR -OT .
+.BR \-OT .
 .IP "hexOutputLength integer"
 Specifies where to break up the output of hexadecimal strings.  
 Set to 0 to disable line breaks.  Defaults to 16.
 .IP "suffixPrinting (0|1|2)"
 The value 1 is equivalent to
-.B -Os
+.B \-Os
 and the value 2 is equivalent to
-.BR -OS .
+.BR \-OS .
 .IP "oidOutputFormat (1|2|3|4|5|6)"
-Maps -O options as follow: -Os=1, -OS=2, -Of=3, -On=4, -Ou=5.
-The value 6 has no matching -O option. It suppresses output.
+Maps \-O options as follow: \-Os=1, \-OS=2, \-Of=3, \-On=4, \-Ou=5.
+The value 6 has no matching \-O option. It suppresses output.
 .IP "extendedIndex (1|yes|true|0|no|false)"
 Equivalent to
-.BR -OX .
+.BR \-OX .
 .IP "noDisplayHint (1|yes|true|0|no|false)"
 Disables the use of DISPLAY-HINT information when parsing indices and
 values to set. Equivalent to
-.BR -Ih .
+.BR \-Ih .
 .SH FILES
-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_agent_api.3.def b/man/snmp_agent_api.3.def
deleted file mode 100644
index 63e40de..0000000
--- a/man/snmp_agent_api.3.def
+++ /dev/null
@@ -1,132 +0,0 @@
-.TH SNMP_AGENT_API 3 "01 Aug 2002" VVERSIONINFO "Net-SNMP"
-.SH NAME
-snmp_agent_api \- embedding an agent into a external application
-.SH SYNOPSIS
-.nf
-#include <net-snmp/net-snmp-config.h>
-#include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/agent/net-snmp-agent-includes.h>
-
-int
-main (int argc, char *argv[])
-{
-  int agentx_subagent = 1;  /* Change this if you're a master agent.  */
-
-  snmp_enable_stderrlog();
-
-  /*  If we're an AgentX subagent...  */
-  if (agentx_subagent) {
-      /* ...make us an AgentX client.  */
-      netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
-                             NETSNMP_DS_AGENT_ROLE, 1);
-  }
-
-  init_agent("yourappname");
-
-  /*  Initialize your MIB code here.  */
-  init_my_mib_code();
-
-  /*  `yourappname' will be used to read yourappname.conf files.  */
-  init_snmp("yourappname");
-
-  /*  If we're going to be a SNMP master agent...  */
-  if (!agentx_subagent)
-      init_master_agent();  /*  Listen on default port (161).  */
-
-  /*  Your main loop here...  */
-  while (whatever) {
-      /* if you use select(), see snmp_api(3) */
-      /*     --- OR ---  */
-      agent_check_and_process(0); /* 0 == don't block */
-  }
-
-  /*  At shutdown time:  */
-  snmp_shutdown("yourappname");
-}
-
-Then:
-$(CC) ... `net-snmp-config --agent-libs`
-
-.fi
-.SH DESCRIPTION
-.PP
-Our goal is to create a easy to use interface to the Net-SNMP package
-such that you can take code that you have written that has been
-designed to be a Net-SNMP MIB module and embed it into an external
-application where you can either chose to be a SNMP master agent or an
-AgentX sub-agent using the same MIB module code.  Our suggestion is
-that you use our (or another) SNMP agent as the AgentX master agent
-and chose to become an AgentX subagent which then attaches to the
-master.
-.PP
-The Net-SNMP package provides a pair of libraries that enables easy
-embedding of an SNMP or AgentX agent into an external software
-package. AgentX is an extensible protocol designed to allow multiple
-SNMP sub-agents all run on one machine under a single SNMP master
-agent.  It is defined in RFC 2741.
-.PP
-You will need to perform a few tasks in order to accomplish
-this. First off, you will need to initialize both the SNMP library and
-the SNMP agent library. As indicated above, this is done slightly
-differently depending on whether or not you are going to perform as a
-master agent or an AgentX sub-agent.
-.SH CONFIGURATION
-.PP
-If you intend to operate as an AgentX sub-agent, you will have to
-configured the Net-SNMP package with agentx support (which is turned
-on by default, so just don't turn it off)
-.PP
-Additionally, you will need to link against the net-snmp libraries
-(use the output of "net-snmp-config --agent-libs" to get a library
-list) and call subagent_pre_init() as indicated above.
-.SH COMPILING
-.PP
-In order to make use of any of the above API, you will need to link
-against at least the four libraries listed above.
-.SH FUNCTIONS
-.PP This is a brief description of the functions called above and
-where to find out more information on them.  It is certainly not a
-complete list of what is available within all the net-snmp libraries. 
-.IP "snmp_enable_stderrlog()"
-Logs error output from the SNMP agent to the standard error stream.
-.IP "netsnmp_ds_set_boolean()"
-Please see the
-.IR default_store(3)
-manual page for more information
-about this API.
-.IP "init_agent(char *name)"
-Initializes the embedded agent.  This should be called before the
-.BR "init_snmp()"
-call.  
-.I name
-is used to dictate what .conf file to read when
-.BR "init_snmp()"
-is called later.
-.IP "init_snmp(char *name)"
-Initializes the SNMP library.  Note that one of the things this will
-do will be to read configuration files in an effort to configure your
-application. It will attempt to read the configuration files named by
-the
-.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)
-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 
-on its default UDP port of 161.
-.IP "agent_check_and_process(int block)"
-This checks for packets arriving on the SNMP port and processes them
-if some are found.  If 
-.I block
-is non-zero, the function call will block until a packet arrives or an 
-alarm must be run (see
-.IR snmp_alarm(3) ).
-The return value from this function is a positive integer if packets
-were processed, zero if an alarm occurred and -1 if an error occured.
-.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),
-snmpd.conf(5)
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.3.def b/man/snmp_api.3.def
deleted file mode 100644
index d1cb991..0000000
--- a/man/snmp_api.3.def
+++ /dev/null
@@ -1,263 +0,0 @@
-.\" /***********************************************************
-.\" 	Copyright 1989 by Carnegie Mellon University
-.\" 
-.\"                       All Rights Reserved
-.\" 
-.\" Permission to use, copy, modify, and distribute this software and its 
-.\" documentation for any purpose and without fee is hereby granted, 
-.\" provided that the above copyright notice appear in all copies and that
-.\" both that copyright notice and this permission notice appear in 
-.\" supporting documentation, and that the name of CMU not be
-.\" used in advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.  
-.\" 
-.\" CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-.\" ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-.\" CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-.\" ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-.\" WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-.\" ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-.\" SOFTWARE.
-.\" ******************************************************************/
-.TH SNMP_API 3 "19 May 2011" VVERSIONINFO "Net-SNMP"
-.SH NAME
-snmp_sess_init, snmp_open, snmp_send, snmp_async_send, snmp_free_pdu, snmp_select_info, snmp_read, snmp_timeout, snmp_synch_response, snmp_close, snmp_perror, snmp_sess_perror, snmp_error, snmp_api_errstring \- send and receive SNMP messages
-.SH SYNOPSIS
-#include <net-snmp/session_api.h>
-.PP
-void snmp_sess_init ( struct snmp_session * );
-.PP
-struct snmp_session * snmp_open ( struct snmp_session *);
-.RS
-.B /* Input parameter not used in active sessions */
-.RE
-.PP
-int snmp_send ( struct snmp_session *session,
-.RS
-struct snmp_pdu *pdu );
-.RE
-.PP
-int snmp_async_send ( struct snmp_session *session,
-.RS
-struct snmp_pdu *pdu,
-snmp_callback callback,
-void *callbackData );
-.RE
-.PP
-int snmp_select_info ( int *numfds, fd_set *fdset,
-.RS
-struct timeval *timeout, int *block );
-.RE
-.PP
-void snmp_read ( fd_set *fdset );
-.PP
-void snmp_timeout ( void );
-.PP
-int snmp_synch_response ( struct snmp_session *session,
-.RS
-struct snmp_pdu *pdu,
-struct snmp_pdu **response);
-.RE
-.PP
-int snmp_close ( struct snmp_session *session );
-.PP
-void snmp_free_pdu (
-struct snmp_pdu *pdu );
-.PP
-void snmp_error (
-struct snmp_session *session,
-.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 */
-.RE
-.PP
-.SH DESCRIPTION
-.I Snmp_sess_init
-prepares a struct snmp_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
-to create an SNMP session, the structure is not used.
-.PP
-.I Snmp_open
-returns a pointer to a newly-formed
-.I struct snmp_session
-object, which the application must use to reference the
-active SNMP session.
-.PP
-.I Snmp_send, snmp_async_send
-and
-.I snmp_free_pdu
-each take as input a pointer to a
-.I struct snmp_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
-provide an interface for the use of the
-.IR select(2)
-system call so that SNMP transactions can occur asynchronously.
-.PP
-.I Snmp_select_info
-is given the information that would have been passed to
-.I select
-in the absence of SNMP.  For example, this might include window update information.
-This information is modified so that SNMP will get the service it requires from the
-call to
-.I select.
-In this case,
-.I numfds, fdset,
-and
-.I timeout
-correspond to the
-.I nfds, readfds,
-and
-.I timeout
-arguments to
-.I select,
-respectively.  The only exception is that timeout must always point to an allocated (but perhaps uninitialized)
-.I struct timeval.
-If
-.I timeout
-would have been passed as NULL,
-.I block
-is set to true, and
-.I timeout
-is treated as undefined.  This same rule applies upon return from
-.I snmp_select_info.
-.PP
-After calling
-.I snmp_select_info, select
-is called with the returned data.  When select returns,
-.I snmp_read
-should be called with the
-.I fd_set
-returned from
-.I select
-to read each SNMP socket that has input.
-If
-.I select
-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
-.IR snmp_get_errno
-to read the global variable
-.I snmp_errno
-which may have held the error status within the SNMP library.
-The existing method
-.I snmp_perror
-should be used to log ASN.1 coding errors only.
-.PP
-The new method
-.I snmp_sess_perror
-is provided to capture errors that occur during the processing
-of a particular SNMP session.
-.I Snmp_sess_perror
-calls
-.IR snmp_error
-function to obtain the "C" library error
-.I errno
-, the SNMP library error
-.I snmperr
-, and the SNMP library detailed error message
-that is associated with an error that occurred during a given session.
-.PP
-Note that in all cases except one,
-.IR snmp_sess_perror
-should be handed the
-.I struct snmp_session *
-pointer returned from
-.IR snmp_open.
-If
-.IR snmp_open
-returns a null pointer, pass the INPUT
-.I struct snmp_session *
-pointer used to call
-.IR snmp_open.
-.PP
-Error return status from 
-.I snmp_close
-and
-.I snmp_send
-is indicated by return of 0.  A successful status will return a 1 for
-.I snmp_close
-and the request id of the packet for
-.I snmp_send.
-Upon successful return from
-.I snmp_send
-the pdu will be freed by the library.
-.PP
-Consult snmp_api.h for the complete set of SNMP library
-error values.
-The SNMP library error value
-.IR snmperr
-can be one of the following values:
-.RS 2n
-.IP SNMPERR_GENERR \w'SNMPERR_BAD_REPETITIONS'u+2n
-A generic error occurred.
-.IP SNMPERR_BAD_LOCPORT \w'SNMPERR_BAD_REPETITIONS'u+2n
-The local port was bad because it had already been
-allocated or permission was denied.
-.IP SNMPERR_BAD_ADDRESS \w'SNMPERR_BAD_REPETITIONS'u+2n
-The host name or address given was not useable.
-.IP SNMPERR_BAD_SESSION \w'SNMPERR_BAD_REPETITIONS'u+2n
-The specified session was not open.
-.IP SNMPERR_TOO_LONG \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_NO_SOCKET \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_V2_IN_V1 \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_V1_IN_V2 \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_BAD_REPEATERS \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_BAD_REPETITIONS \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_BAD_ASN1_BUILD \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_BAD_SENDTO \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_BAD_PARSE \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_BAD_VERSION \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_NOAUTH_DESPRIV \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_ABORT \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_UNKNOWN_PDU \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_TIMEOUT \w'SNMPERR_BAD_REPETITIONS'u+2n
-.RE
-.PP
-A string representation of the error code can be obtained with
-.IR snmp_api_errstring ,
-and a standard error message may be printed using
-.I snmp_perror
-that functions like the
-.I perror
-standard routine.
-.SH "SEE ALSO"
-select(2), snmp_api.h
diff --git a/man/snmp_api_errstring.3 b/man/snmp_api_errstring.3
deleted file mode 100644
index 4c16baf..0000000
--- a/man/snmp_api_errstring.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_api.3
diff --git a/man/snmp_close.3 b/man/snmp_close.3
deleted file mode 100644
index 4c16baf..0000000
--- a/man/snmp_close.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_api.3
diff --git a/man/snmp_config.5.def b/man/snmp_config.5.def
index e7ac4a6..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
@@ -11,9 +11,10 @@
 configuration files in the following 4 directories, in order:
 SYSCONFDIR/snmp,
 DATADIR/snmp, LIBDIR/snmp, and $HOME/.snmp.  In each of these
-directories, it looks for files with the extension of both
-.IR conf " and " local.conf
-(reading the second ones last).  In this manner, there are
+directories, it looks for files snmp.conf, snmpd.conf and/or
+snmptrapd.conf, as well as snmp.local.conf, snmpd.local.conf
+and/or snmptrapd.local.conf. *.local.conf are always
+read last. In this manner, there are
 8 default places a configuration file can exist for any given
 configuration file type.
 .PP
@@ -171,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 4c16baf..0000000
--- a/man/snmp_error.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_api.3
diff --git a/man/snmp_free_pdu.3 b/man/snmp_free_pdu.3
deleted file mode 100644
index 4c16baf..0000000
--- a/man/snmp_free_pdu.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_api.3
diff --git a/man/snmp_open.3 b/man/snmp_open.3
deleted file mode 100644
index 4c16baf..0000000
--- a/man/snmp_open.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_api.3
diff --git a/man/snmp_perror.3 b/man/snmp_perror.3
deleted file mode 100644
index 4c16baf..0000000
--- a/man/snmp_perror.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_api.3
diff --git a/man/snmp_read.3 b/man/snmp_read.3
deleted file mode 100644
index 4c16baf..0000000
--- a/man/snmp_read.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_api.3
diff --git a/man/snmp_select_info.3 b/man/snmp_select_info.3
deleted file mode 100644
index 4c16baf..0000000
--- a/man/snmp_select_info.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_api.3
diff --git a/man/snmp_send.3 b/man/snmp_send.3
deleted file mode 100644
index 4c16baf..0000000
--- a/man/snmp_send.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_api.3
diff --git a/man/snmp_sess_api.3.def b/man/snmp_sess_api.3.def
deleted file mode 100644
index 88414fc..0000000
--- a/man/snmp_sess_api.3.def
+++ /dev/null
@@ -1,228 +0,0 @@
-.TH SNMP_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
-.SH SYNOPSIS
-.B #include <net-snmp/session_api.h>
-.PP
-.BI "void snmp_sess_init(struct snmp_session *" session ");"
-.PP
-.BI "void *snmp_sess_open(struct snmp_session *" session ");"
-.PP
-.BI "struct snmp_session *snmp_sess_session(void *" handle ");"
-.PP
-.BI "int snmp_sess_send(void *" handle ", struct snmp_pdu *" pdu ");"
-.PP
-.BI "int snmp_sess_async_send(void *" handle ","
-.br
-.BI "                         struct snmp_pdu *" pdu ", "
-.br
-.BI "                         snmp_callback " callback ", "
-.br
-.BI "                         void *" callbackData ");"
-.PP
-.BI "int snmp_sess_select_info(void *" handle ","
-.br
-.BI "                          int *" numfds ", fd_set *" fdset ", "
-.br
-.BI "                          struct timeval *" timeout ", "
-.br
-.BI "                          int *" block ");"
-.PP
-.BI "int snmp_sess_read(void *" handle ", fd_set *" fdset ");"
-.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 ", "
-.br
-.BI "                    int *" psnmperr ", char **" pperrstring ");"
-.SH DESCRIPTION
-These functions define a subset of the API that can be used
-to manage single SNMP sessions in a multi-threaded application.
-Except for
-.BR snmp_sess_session() ,
-these functions are single session versions of the traditional
-SNMP library API.
-.PP
-Note that these functions use an opaque pointer
-.RI ( handle
-in the above prototypes) to identify a single session in lieu of a
-.I session
-pointer (as in the traditional API).
-.PP
-.B snmp_sess_init()
-prepares a struct snmp_session that sources transport characteristics
-and common information that will be used for a set of SNMP transactions.
-After this structure is passed to
-.B snmp_sess_open()
-to create an SNMP session, the structure is no longer used.  Instead
-the opaque pointer returned by
-.B snmp_sess_open()
-is used to refer to that session henceforth.
-.PP
-SNMP sessions that are created with
-.B snmp_sess_open()
-are not affected by, and SHOULD NOT BE USED WITH,
-.BR snmp_select_info() ", " snmp_read() ", " snmp_timeout() " nor"
-.BR snmp_close() .
-Rather the equivalent single session functions described here should
-be used.
-.PP
-.B snmp_sess_init()
-and
-.B snmp_sess_open()
-each take as input a pointer to a struct snmp_session object.
-This structure contains information for a set of transactions that
-will share similar transport characteristics.
-.B snmp_sess_session()
-takes the opaque session handle and returns a pointer to
-its associated struct snmp_session.
-.PP
-.B snmp_sess_send()
-and
-.B snmp_sess_async_send()
-each take a
-.I pdu
-parameter, which points to a struct snmp_pdu object containing
-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_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)
-system call so that SNMP transactions for a single session can occur
-asynchronously.
-.PP
-.B snmp_sess_select_info()
-is passed the information that would have been passed to
-.BR select (2)
-in the absence of SNMP.  For example, this might include file
-descriptors associated with the main loop of a graphical
-application. This information is modified so that SNMP will get the
-service it requires from the call to
-.BR select (2).
-In this case,
-.IR numfds ", " fdset " and " timeout
-correspond to the
-.IR nfds ", " readfds " and " timeout
-arguments to
-.BR select (2)
-respectively.  The only exception is that timeout must ALWAYS point to
-an allocated (but perhaps uninitialized)
-.I struct timeval
-(it cannot be NULL as for
-.BR select (2)).
-If
-.I timeout
-would have been passed as NULL,
-.I block
-is instead set to true, and
-.I timeout
-is treated as undefined.  This same rule applies upon return from
-.BR snmp_select_info() .
-.PP
-After calling
-.B snmp_sess_select_info() ,
-.BR select (2)
-should be called with the returned data.  When it returns,
-.B snmp_sess_read()
-should then be called with the
-.I fd_set
-returned from
-.BR select (2).
-This will read any input from this session's SNMP socket.  If
-.BR select (2)
-times out (that is, it returns zero),
-.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 
-.B snmp_sess_open()
-is indicated by return of a NULL pointer.
-Error return status from 
-.B snmp_sess_close()
-and
-.B snmp_sess_send()
-is indicated by a return value of 0.  A successful status will return
-1.
-.PP
-Further information can be obtained by using
-.B snmp_sess_error()
-to see what type of error has occurred.  This function returns the
-SNMP
-.I snmp_errno
-variable, the value of the system
-.I errno
-variable, and a string interpretation of both variables.  The string
-must be freed after use by the caller.
-.PP
-For errors returned by
-.BR snmp_sess_open() ,
-use the corresponding function
-.B snmp_error()
-instead of
-.BR snmp_sess_error() .
-.PP
-Consult snmp_api.h for the complete set of SNMP library
-error values.
-The SNMP library error value
-.IR snmperr
-can be one of the following values:
-.RS 2n
-.IP SNMPERR_GENERR \w'SNMPERR_BAD_REPETITIONS'u+2n
-A generic error occurred.
-.IP SNMPERR_BAD_LOCPORT \w'SNMPERR_BAD_REPETITIONS'u+2n
-The local port was bad because it had already been
-allocated or permission was denied.
-.IP SNMPERR_BAD_ADDRESS \w'SNMPERR_BAD_REPETITIONS'u+2n
-The host name or address given was not useable.
-.IP SNMPERR_BAD_SESSION \w'SNMPERR_BAD_REPETITIONS'u+2n
-The specified session was not open.
-.IP SNMPERR_TOO_LONG \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_NO_SOCKET \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_V2_IN_V1 \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_V1_IN_V2 \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_BAD_REPEATERS \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_BAD_REPETITIONS \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_BAD_ASN1_BUILD \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_BAD_SENDTO \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_BAD_RCVFROM \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_BAD_PARSE \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_BAD_VERSION \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_BAD_COMMUNITY \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_NOAUTH_DESPRIV \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_ABORT \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_UNKNOWN_PDU \w'SNMPERR_BAD_REPETITIONS'u+2n
-.IP SNMPERR_TIMEOUT \w'SNMPERR_BAD_REPETITIONS'u+2n
-.RE
-.PP
-.SH "SEE ALSO"
-.BR select "(2), " snmp_api "(3), " snmp_api.h
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 4c16baf..0000000
--- a/man/snmp_sess_perror.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_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 4c16baf..0000000
--- a/man/snmp_timeout.3
+++ /dev/null
@@ -1 +0,0 @@
-.so man3/snmp_api.3
diff --git a/man/snmp_trap_api.3.def b/man/snmp_trap_api.3.def
deleted file mode 100644
index 913d677..0000000
--- a/man/snmp_trap_api.3.def
+++ /dev/null
@@ -1,56 +0,0 @@
-.TH SNMP_TRAP_API 3 "29 Sep 2003" VVERSIONINFO "Net-SNMP"
-.SH NAME
-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
-.BI "void send_easy_trap(int " trap ", int " specific ");"
-.PP
-.BI "void send_trap_vars(int " trap ", int " specific ", struct variable_list *" vars ");"
-.PP
-.BI "void send_v2trap(struct variable_list *" vars ");"
-.SH DESCRIPTION
-These three routines may be used to send traps from a MIB module
-within the Net-SNMP agent (including an AgentX subagent).
-.PP
-.B send_easy_trap()
-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.
-.PP
-.B send_trap_vars()
-is similar, but appends the supplied list of variable bindings to the
-traps that are sent.
-.PP
-.B send_v2trap()
-uses the supplied list of variable bindings to form an SNMPv2 trap,
-which is sent to SNMPv2-capable sinks on the configured list.  An
-equivalent INFORM is sent to the configuredq list of inform sinks.
-Sinks that can only handle SNMPv1 traps are skipped.
-.PP
-The various "send_trap()" calls allow you to specify traps in different
-formats.  And the various "trapsink" directives allow you to specify
-destinations to receive different formats.
-But *all* traps are sent to *all* destinations, regardless of how they
-were specified.
-.nf
-I.e. it's
-                                         ___  trapsink
-                                        /
-    send_easy_trap \___  [  Trap      ] ____  trap2sink
-                    ___  [ Generator  ]
-    send_v2trap    /     [            ] ----- informsink
-                                        \____
-                                              trapsess
-
-*Not*
-     send_easy_trap  ------------------->  trapsink
-     send_v2trap     ------------------->  trap2sink
-     ????            ------------------->  informsink
-     ????            ------------------->  trapsess
-.fi
-.SH WARNINGS
-These routines are used to send the traps immediately they are called.
-Invoking them at the appropriate time is left to the MIB module programmer.
-.SH "SEE ALSO"
-.BR snmpd.conf "(5), " snmptrapd "(8)"
diff --git a/man/snmpbulkget.1.def b/man/snmpbulkget.1.def
index b4e062d..25210f3 100644
--- a/man/snmpbulkget.1.def
+++ b/man/snmpbulkget.1.def
@@ -17,13 +17,13 @@
 pinpoint why the request was malformed.
 .SH OPTIONS
 .TP 8
-.BI -Cn <NUM>
+.BI \-Cn <NUM>
 Set the
 .I non-repeaters
 field in the GETBULK PDU.  This specifies the number of supplied
 variables that should not be iterated over.  The default is 0.
 .TP
-.BI -Cr <NUM>
+.BI \-Cr <NUM>
 Set the
 .I max-repetitions
 field in the GETBULK PDU.  This specifies the maximum number of
@@ -41,7 +41,7 @@
 .SH EXAMPLE
 The command:
 .PP
-snmpbulkget -v2c -Cn1 -Cr5 -Os -c public zeus system ifTable
+snmpbulkget \-v2c \-Cn1 \-Cr5 \-Os \-c public zeus system ifTable
 .PP
 will retrieve the variable system.sysDescr.0 (which is the
 lexicographically next object to system) and the first 5 objects in
diff --git a/man/snmpbulkwalk.1.def b/man/snmpbulkwalk.1.def
index e6c7a69..c5f4a06 100644
--- a/man/snmpbulkwalk.1.def
+++ b/man/snmpbulkwalk.1.def
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
-.\" Portions of this file are subject to the following copyright. 
-.\" See the Net-SNMP COPYING file for more details and other
-.\" copyrights that may apply:
+.\" Portions of this file are subject to the following copyright.  See
+.\" the Net-SNMP COPYING file for more details and other copyrights
+.\" that may apply:
 .\" /***********************************************************
 .\" 	Copyright 1988, 1989 by Carnegie Mellon University
 .\" 
@@ -42,7 +42,7 @@
 .IR variables(5) .
 If no OID argument is present,
 .B snmpbulkwalk
-will search MIB-2.
+will search MIB\-2.
 .PP
 If the network entity has an error processing the request packet, an
 error packet will be returned and a message will be shown, helping to
@@ -52,7 +52,7 @@
 MIB, the message "End of MIB" will be displayed.
 .SH OPTIONS
 .TP 8
-.B -Cc
+.B \-Cc
 Do not check whether the returned OIDs are increasing.  Some agents
 (LaserJets are an example) return OIDs out of order, but can
 complete the walk anyway.  Other agents return OIDs that are out of
@@ -62,10 +62,10 @@
 .B snmpbulkwalk
 tries to detect this behavior and warns you when it hits an agent
 acting illegally.  Use
-.B -Cc
+.B \-Cc
 to turn off this behaviour.
 .TP
-.B -Ci
+.B \-Ci
 Include the given OID in the search range.  Normally
 .B snmpbulkwalk
 uses GETBULK requests starting with the OID you specified and returns
@@ -74,16 +74,16 @@
 results if it is a valid OID in the tree itself.  This option lets you
 do this.
 .TP
-.BI -Cn <NUM>
+.BI \-Cn <NUM>
 Set the
 .I non-repeaters
 field in the GETBULK PDUs.  This specifies the number of supplied
 variables that should not be iterated over.  The default is 0.
 .TP
-.B -Cp
+.B \-Cp
 Upon completion of the walk, print the number of variables found.
 .TP
-.BI -Cr <NUM>
+.BI \-Cr <NUM>
 Set the
 .I max-repetitions
 field in the GETBULK PDUs.  This specifies the maximum number of
@@ -101,7 +101,7 @@
 .SH EXAMPLE
 The command:
 .PP
-snmpbulkwalk -v2c -Os -c public zeus system
+snmpbulkwalk \-v2c \-Os \-c public zeus system
 .PP
 will retrieve all of the variables under system:
 .PP
diff --git a/man/snmpcmd.1.def b/man/snmpcmd.1.def
index 4853caf..e4df8b2 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 "01 Sep 2006" 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,92 +45,54 @@
 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
+.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
+These options control how the Net-SNMP commands behave regardless of
+what version of SNMP you are using.  See further below for options
+that control specific versions or sub-modules of the SNMP protocol. 
 .TP
-.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.
-.TP
-.B -d
+.B \-d
 Dump (in hexadecimal) the raw SNMP packets sent and received.
 .TP
-.B -D\fI[TOKEN[,...]]
+.B \-D\fI[TOKEN[,...]]
 Turn on debugging output for the given
 .IR "TOKEN" "(s)."
 Try
 .IR ALL
 for extremely verbose output.
 .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
-.B -h, --help
+.B \-h, \-\-help
 Display a brief usage message and then exit.
 .TP
-.B -H
+.B \-H
 Display a list of configuration file directives understood by the
 command and then exit.
 .TP
-.BI -I " [brRhu]"
+.BI \-I " [brRhu]"
 Specifies input parsing options. See 
 .B INPUT OPTIONS 
 below.
 .TP
-.BI -l " 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]"
+.BI \-L " [eEfFoOsS]"
 Specifies output logging options. See 
 .B LOGGING OPTIONS 
 below.
 .TP
-.BI -m " MIBLIST"
+.BI \-m " MIBLIST"
 Specifies a colon separated list of MIB modules (not files) to load for
 this application.  This overrides (or augments) the environment variable
 MIBS, the \fIsnmp.conf\fR directive \fImibs\fR, and the list of MIBs
@@ -137,7 +100,7 @@
 .IP
 If 
 .I MIBLIST
-has a leading '-' or '+' character, then the MIB modules listed are
+has a leading '\-' or '+' character, then the MIB modules listed are
 loaded in addition to the default list, coming before or after
 this list respectively.
 Otherwise, the specified MIBs are loaded \fIinstead\fR of this
@@ -149,7 +112,7 @@
 Every file whose name does not begin with "." will be parsed as
 if it were a MIB file.
 .TP
-.BI -M " DIRLIST"
+.BI \-M " DIRLIST"
 Specifies a colon separated list of directories to search for MIBs.
 This overrides (or augments) the environment variable MIBDIRS,
 the \fIsnmp.conf\fR directive \fImibdirs\fR, and the default
@@ -158,7 +121,7 @@
 .IP
 If 
 .I DIRLIST
-has a leading '-' or '+' character, then the given directories are
+has a leading '\-' or '+' character, then the given directories are
 added to the default list, being searched before or after the
 directories on this list respectively.
 Otherwise, the specified directories are searched \fIinstead\fR
@@ -172,63 +135,188 @@
 To avoid searching any MIB directories, set the MIBDIRS
 environment variable to the empty string ("").
 .\"
-.\" XXX - or     -M ""    ??
+.\" XXX - or     \-M ""    ??
 .\"
 
-Note that MIBs specified using the -m option or the \fImibs\fR
+Note that MIBs specified using the \-m option or the \fImibs\fR
 configuration directive will be loaded from one of the directories
-listed by the -M option (or equivalents).
+listed by the \-M option (or equivalents).
 The \fImibfile\fR directive takes a full path to the specified MIB
 file, so this does not need to be in the MIB directory search list.
 .TP
-.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. 
-.TP
-.BI -O " [abeEfnqQsStTuUvxX]"
-Specifies output printing options. See 
-.B OUTPUT OPTIONS
-below.
-.TP
-.BI -P " [cdeRuwW]"
-Specifies MIB parsing options.  See
-.B MIB PARSING OPTIONS
-below.
-.TP
-.BI -r " retries"
-Specifies the number of retries to be used in the requests. The default
-is 5.
-.TP
-.BI -t " timeout"
-Specifies the timeout in seconds between retries. The default is 1.
-.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
+.B \-v \fI1\fR | \fI2c\fR | \fI3
 Specifies the protocol version to use: 1 (RFCs 1155-1157), 2c (RFCs 1901-1908),
 or 3 (RFCs 2571-2574).  The default is typically version 3.
 Overrides the \fIdefVersion\fR token in the
 .I snmp.conf
 file.
+.BI \-O " [abeEfnqQsStTuUvxX]"
+Specifies output printing options. See 
+.B OUTPUT OPTIONS
+below.
 .TP
-.B -V, --version
+.BI \-P " [cdeRuwW]"
+Specifies MIB parsing options.  See
+.B MIB PARSING OPTIONS
+below.
+.TP
+.BI \-r " retries"
+Specifies the number of retries to be used in the requests. The default
+is 5.
+.TP
+.BI \-t " timeout"
+Specifies the timeout in seconds between retries. The default is 1.
+Floating point numbers can be used to specify fractions of seconds.
+.TP
+.B \-V, \-\-version
 Display version information for the application and then exit.
 .TP
-.BI -x " privProtocol"
+.BI \-Y "name"="value"
+.TP
+.BI \-\- "name"="value"
+Allows one to specify any token ("name") supported in the
+.I snmp.conf
+file and sets its value to "value". Overrides the corresponding token in the
+.I snmp.conf
+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 localCert=<certificate-specifier>"
+Indicates to the transport which key should be used to initiate (D)TLS
+client connections.  This would typically be a certificate found using
+the certificate fingerprint, the application name (eg snmpd, snmptrapd, perl, python) or
+genericized name "snmpapp" if using one of the generic applications
+(snmpget, snmpwalk, etc).  This can also be set using the
+localCert specifier in a snmp.conf configuration file.
+.TP
+.BI "\-T peerCert=<certificate-specifier>"
+If you expect a particular certificate to be presented by the other
+side then you can use this specifier to indicate the certificate it
+should present.  If it fails to present the expected certificate the
+client will refuse to open the connection (because doing otherwise
+could lead to man-in-the-middle attacks).  This can also be set using
+the peerCert 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
+.BI \-x " privProtocol"
 Set the privacy protocol (DES or AES) used for encrypted SNMPv3 messages. 
 Overrides the \fIdefPrivType\fR token in the
 .I snmp.conf
 file. This option is only valid if the Net-SNMP software was build
 to use OpenSSL.
 .TP
-.BI -X " privPassword"
+.BI \-X " privPassword"
 Set the privacy pass phrase used for encrypted SNMPv3 messages.
 Overrides the \fIdefPrivPassphrase\fR token in the
 .I snmp.conf
@@ -236,23 +324,21 @@
 It is insecure to specify pass phrases on the command line, see
 .I snmp.conf(5).
 .TP
-.BI -Z " boots,time"
+.BI \-Z " boots,time"
 Set the engineBoots and engineTime used for authenticated SNMPv3
 messages.  This will initialize the local notion of the agents
 boots/time with an authenticated value stored in the LCD.
 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
@@ -327,41 +413,6 @@
 on port
 .I 1161
 using TCP/IPv4 and perform query over that connection.
-.TP 24
-.IR "ipx::00D0B7AAE308"
-perform query using IPX datagrams to node number 
-.I 00D0B7AAE308
-on the default network, and using the default IPX port of 36879 (900F
-hexadecimal), as suggested in RFC 1906.
-.TP 24
-.IR "ipx:0AE43409:00D0B721C6C0/1161"
-perform query using IPX datagrams to port
-.I 1161
-on node number
-.I 00D0B721C6C0
-on network number
-.IR 0AE43409 .
-.TP 24
-.IR "unix:/tmp/local-agent"
-connect to the Unix domain socket 
-.IR /tmp/local-agent ,
-and perform the query over that connection.
-.TP 24
-.IR "/tmp/local-agent"
-identical to the previous specification, since the Unix domain is the
-default transport iff the first character of the <transport-address>
-is a '/'.
-.TP 24
-.IR "AAL5PVC:100"
-perform the query using AAL5 PDUs sent on the permanent virtual
-circuit with VPI=0 and VCI=100 (decimal) on the first ATM adapter in the
-machine.
-.TP 24
-.IR "PVC:1.10.32"
-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
@@ -377,6 +428,64 @@
 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 
+.I 00D0B7AAE308
+on the default network, and using the default IPX port of 36879 (900F
+hexadecimal), as suggested in RFC 1906.
+.TP 24
+.IR "ipx:0AE43409:00D0B721C6C0/1161"
+perform query using IPX datagrams to port
+.I 1161
+on node number
+.I 00D0B721C6C0
+on network number
+.IR 0AE43409 .
+.TP 24
+.IR "unix:/tmp/local\-agent"
+connect to the Unix domain socket 
+.IR /tmp/local\-agent ,
+and perform the query over that connection.
+.TP 24
+.IR "/tmp/local\-agent"
+identical to the previous specification, since the Unix domain is the
+default transport iff the first character of the <transport-address>
+is a '/'.
+.TP 24
+.IR "alias:myname"
+perform a connection to the
+.I myname
+alias which needs to be defined in the snmp.conf file using a line
+like "
+.I "alias myname udp:127.0.0.1:9161"
+".  Any type of transport definition can be used as the alias expansion
+parameter.  Aliases are particularly useful for using repeated complex
+transport strings.
+.TP 24
+.IR "AAL5PVC:100"
+perform the query using AAL5 PDUs sent on the permanent virtual
+circuit with VPI=0 and VCI=100 (decimal) on the first ATM adapter in the
+machine.
+.TP 24
+.IR "PVC:1.10.32"
+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".
 .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
@@ -384,33 +493,32 @@
 the error "Unknown host".  Likewise, since AAL5 PVC support is only
 currently available on Linux, it will fail with the same error on
 other platforms.
-
 .SH "MIB PARSING OPTIONS"
 The Net-SNMP MIB parser mostly adheres to the Structure of Management
 Information (SMI).  As that specification has changed through time, and
 in recognition of the (ahem) diversity in compliance expressed in MIB
 files, additional options provide more flexibility in reading MIB files.
 .TP
-.B "-Pc"
+.B "\-Pc"
 Toggles whether ASN.1 comments should extend to the end of the MIB
 source line.
-Strictly speaking, a second appearance of "--" should terminate the
+Strictly speaking, a second appearance of "\-\-" should terminate the
 comment, but this breaks some MIB files.
 The default behaviour (to interpret comments correctly) can also
-be set with the (misnamed) configuration token \fIstrictCommentTerm\fR.
+be set with the configuration token \fIcommentToEOL\fR.
 .TP
-.B "-Pd"
+.B "\-Pd"
 Disables the loading of MIB object DESCRIPTIONs when parsing MIB files.
 This reduces the amount of memory used by the running application.
 .TP
-.B "-Pe"
+.B "\-Pe"
 Toggles whether to show errors encountered when parsing MIB files.
 These include
 references to IMPORTed modules and MIB objects that cannot be
 located in the MIB directory search list.
 The default behaviour can also be set with the configuration token \fIshowMibErrors\fR.
 .TP
-.B "-PR"
+.B "\-PR"
 If the same MIB object (parent name and sub-identifier) appears multiple
 times in the list of MIB definitions loaded, use the last version to be
 read in.  By default, the first version will be used, and any duplicates
@@ -424,20 +532,20 @@
 .\" Setting this option may result in an incorrect hierarchy.
 .\" XXX - Why?
 .TP
-.B "-Pu"
+.B "\-Pu"
 Toggles whether to allow the underline character in MIB object names
 and other symbols.
 Strictly speaking, this is not valid SMI syntax, but some vendor MIB
 files define such names.
 The default behaviour can also be set with the configuration token \fImibAllowUnderline\fR.
 .TP
-.B "-Pw"
+.B "\-Pw"
 Show various warning messages in parsing MIB files and building
 the overall OID tree.
 This can also be set with the configuration directive
 \fImibWarningLevel 1\fR
 .TP
-.B "-PW"
+.B "\-PW"
 Show some additional warning messages, mostly relating to parsing
 individual MIB objects.
 This can also be set with the configuration directive
@@ -445,107 +553,107 @@
 
 .SH "OUTPUT OPTIONS"
 The format of the output from SNMP commands can be controlled using
-various parameters of the \fB-O\fR flag.
+various parameters of the \fB\-O\fR flag.
 The effects of these sub-options can be seen by comparison with
 the following default output (unless otherwise specified):
 .RS
 .nf
-\fC$ snmpget -c public -v 1 localhost sysUpTime.0
-SNMPv2-MIB::sysUpTime.0 = Timeticks: (14096763) 1 day, 15:09:27.63\fR
+\fC$ snmpget \-c public \-v 1 localhost sysUpTime.0
+SNMPv2\-MIB::sysUpTime.0 = Timeticks: (14096763) 1 day, 15:09:27.63\fR
 .fi
 .RE
 
 .TP
-.B -Oa
+.B \-Oa
 Display string values as ASCII strings (unless there is a 
-\fCDISPLAY-HINT\fR defined for the corresponding MIB object).
+\fCDISPLAY\-HINT\fR defined for the corresponding MIB object).
 By default, the library attempts to determine whether the value is
 a printable or binary string, and displays it accordingly.
 
 This option does not affect objects that \fIdo\fR have a Display Hint.
 .TP
-.B -Ob
+.B \-Ob
 Display table indexes numerically, rather than trying to interpret
 the instance subidentifiers as string or OID values:
 .RS
 .nf
-\fC    $ snmpgetnext -c public -v 1 localhost vacmSecurityModel
-    SNMP-VIEW-BASED-ACM-MIB::vacmSecurityModel.0."wes" = xxx
-    $ snmpgetnext -c public -v 1 \fB-Ob\fP localhost vacmSecurityModel
-    SNMP-VIEW-BASED-ACM-MIB::vacmSecurityModel.0.3.119.101.115 = xxx\fR
+\fC    $ snmpgetnext \-c public \-v 1 localhost vacmSecurityModel
+    SNMP\-VIEW\-BASED\-ACM\-MIB::vacmSecurityModel.0."wes" = xxx
+    $ snmpgetnext \-c public \-v 1 \fB\-Ob\fP localhost vacmSecurityModel
+    SNMP\-VIEW\-BASED\-ACM\-MIB::vacmSecurityModel.0.3.119.101.115 = xxx\fR
 .fi
 .RE
 .TP
-.B -Oe
+.B \-Oe
 Removes the symbolic labels from enumeration values:
 .RS
 .nf
-\fC    $ snmpget -c public -v 1 localhost ipForwarding.0
-    IP-MIB::ipForwarding.0 = INTEGER: forwarding(1)
-\fC    $ snmpget -c public -v 1 \fB-Oe\fP localhost ipForwarding.0
-    IP-MIB::ipForwarding.0 = INTEGER: 1\fR
+\fC    $ snmpget \-c public \-v 1 localhost ipForwarding.0
+    IP\-MIB::ipForwarding.0 = INTEGER: forwarding(1)
+\fC    $ snmpget \-c public \-v 1 \fB\-Oe\fP localhost ipForwarding.0
+    IP\-MIB::ipForwarding.0 = INTEGER: 1\fR
 .fi
 .RE
 .TP
-.B -OE
+.B \-OE
 Modifies index strings to escape the quote characters:
 .RS
 .nf
-\fC    $ snmpgetnext -c public -v 1 localhost vacmSecurityModel
-    SNMP-VIEW-BASED-ACM-MIB::vacmSecurityModel.0."wes" = xxx
-    $ snmpgetnext -c public -v 1 \fB-OE\fP localhost vacmSecurityModel
-    SNMP-VIEW-BASED-ACM-MIB::vacmSecurityModel.0.\\"wes\\" = xxx\fR
+\fC    $ snmpgetnext \-c public \-v 1 localhost vacmSecurityModel
+    SNMP\-VIEW\-BASED\-ACM\-MIB::vacmSecurityModel.0."wes" = xxx
+    $ snmpgetnext \-c public \-v 1 \fB\-OE\fP localhost vacmSecurityModel
+    SNMP\-VIEW\-BASED\-ACM\-MIB::vacmSecurityModel.0.\\"wes\\" = xxx\fR
 .fi
 .RE
 .IP
 This allows the output to be reused in shell commands.
 .TP
-.B -Of
+.B \-Of
 Include the full list of MIB objects when displaying an OID:
 .RS
-\fC    .iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.0 =\fR
+\fC    .iso.org.dod.internet.mgmt.mib\-2.system.sysUpTime.0 =\fR
 .RS
 \fC        Timeticks: (14096763) 1 day, 15:09:27.63\fR
 .RE
 .RE
 .TP
-.B -On
+.B \-On
 Displays the OID numerically:
 .br
 \fC    .1.3.6.1.2.1.1.3.0 = Timeticks: (14096763) 1 day, 15:09:27.63\fR
 .TP
-.B -Oq
+.B \-Oq
 Removes the equal sign and type information when displaying varbind values:
 .br
-\fC    SNMPv2-MIB::sysUpTime.0 1:15:09:27.63\fR
+\fC    SNMPv2\-MIB::sysUpTime.0 1:15:09:27.63\fR
 .TP
-.B -OQ
+.B \-OQ
 Removes the type information when displaying varbind values:
 .br
-\fC    SNMPv2-MIB::sysUpTime.0 = 1:15:09:27.63\fR
+\fC    SNMPv2\-MIB::sysUpTime.0 = 1:15:09:27.63\fR
 .TP
-.B -Os
+.B \-Os
 Display the MIB object name (plus any instance or other subidentifiers):
 .br
 \fC    sysUpTime.0 = Timeticks: (14096763) 1 day, 15:09:27.63\fR
 .TP
-.B -OS
+.B \-OS
 Display the name of the MIB, as well as the object name:
 .br
-\fC    SNMPv2-MIB::sysUpTime.0 = Timeticks: (14096763) 1 day, 15:09:27.63\fR
+\fC    SNMPv2\-MIB::sysUpTime.0 = Timeticks: (14096763) 1 day, 15:09:27.63\fR
 .IP
 This is the default OID output format.
 .TP
-.B -Ot
+.B \-Ot
 Display \fCTimeTicks\fR values as raw numbers:
 .br
-\fC    SNMPv2-MIB::sysUpTime.0 = 14096763\fR
+\fC    SNMPv2\-MIB::sysUpTime.0 = 14096763\fR
 .TP
-.B -OT
+.B \-OT
 If values are printed as Hex strings,
 display a printable version as well.
 .TP
-.B -Ou
+.B \-Ou
 Display the OID in the traditional UCD-style (inherited from the original
 CMU code).
 That means removing a series of "standard" prefixes from the OID,
@@ -554,35 +662,35 @@
 .br
 \fC    system.sysUpTime.0 = Timeticks: (14096763) 1 day, 15:09:27.63\fR
 .TP
-.B -OU
+.B \-OU
 Do not print the UNITS suffix at the end of the value.
 .TP
-.B -Ov
+.B \-Ov
 Display the varbind value only, not the OID:
 .RS
 .nf
-\fC    $ snmpget -c public -v 1 \fB-Ov\fP localhost ipForwarding.0
+\fC    $ snmpget \-c public \-v 1 \fB\-Ov\fP localhost ipForwarding.0
     INTEGER: forwarding(1)\fR
 .fi
 .RE
 .TP
-.B -Ox
+.B \-Ox
 Display string values as Hex strings (unless there is a 
-\fCDISPLAY-HINT\fR defined for the corresponding MIB object).
+\fCDISPLAY\-HINT\fR defined for the corresponding MIB object).
 By default, the library attempts to determine whether the value is
 a printable or binary string, and displays it accordingly.
 
 This option does not affect objects that \fIdo\fR have a Display Hint.
 .TP
-.B -OX
+.B \-OX
 Display table indexes in a more "program like" output, imitating
 a traditional array-style index format:
 .RS
 .nf
-\fC    $ snmpgetnext -c public -v 1 localhost ipv6RouteTable
-    IPv6-MIB::ipv6RouteIfIndex.63.254.1.0.255.0.0.0.0.0.0.0.0.0.0.0.64.1 = INTEGER: 2
-    $ snmpgetnext -c public -v 1 \fB-OX\fP localhost ipv6RouteTable
-    IPv6-MIB::ipv6RouteIfIndex[3ffe:100:ff00:0:0:0:0:0][64][1] = INTEGER: 2
+\fC    $ snmpgetnext \-c public \-v 1 localhost ipv6RouteTable
+    IPv6\-MIB::ipv6RouteIfIndex.63.254.1.0.255.0.0.0.0.0.0.0.0.0.0.0.64.1 = INTEGER: 2
+    $ snmpgetnext \-c public \-v 1 \fB\-OX\fP localhost ipv6RouteTable
+    IPv6\-MIB::ipv6RouteIfIndex[3ffe:100:ff00:0:0:0:0:0][64][1] = INTEGER: 2
 .fi
 .RE
 .PP
@@ -594,19 +702,19 @@
 .SH "LOGGING OPTIONS"
 The mechanism and destination to use for logging of warning and error
 messages can be controlled by passing various parameters to the
-.B -L
+.B \-L
 flag.
 .TP
-.B -Le
+.B \-Le
 Log messages to the standard error stream.
 .TP
-.B -Lf FILE
+.B \-Lf FILE
 Log messages to the specified file.
 .TP
-.B -Lo
+.B \-Lo
 Log messages to the standard output stream.
 .TP
-.B -Ls FACILITY
+.B \-Ls FACILITY
 Log messages via syslog, using the specified facility
 ('d' for LOG_DAEMON, 'u' for LOG_USER,
 or '0'-'7' for LOG_LOCAL0 through LOG_LOCAL7).
@@ -616,17 +724,17 @@
 allow the corresponding logging mechanism to be restricted to certain
 priorities of message.  Using standard error logging as an example:
 .TP
-.B -LE pri
+.B \-LE pri
 will log messages of priority 'pri' and above to standard error.
 .TP
-.B -LE p1-p2
+.B \-LE p1\-p2
 will log messages with priority between 'p1' and 'p2' (inclusive) to
 standard error.
 .PP
 For
-.B -LF
+.B \-LF
 and
-.B -LS
+.B \-LS
 the priority specification comes before the file or facility token.
 The priorities recognised are:
 .IP
@@ -675,10 +783,10 @@
 
 .SH "INPUT OPTIONS"
 The interpretation of input object names and the values to be assigned
-can be controlled using various parameters of the \fB-I\fR flag.
+can be controlled using various parameters of the \fB\-I\fR flag.
 The default behaviour will be described at the end of this section.
 .TP
-.B -Ib
+.B \-Ib
 specifies that the given name should be regarded as a regular expression,
 to match (case-insensitively) against object names in the MIB tree.
 The "best" match will be used - calculated as the one that matches the
@@ -699,23 +807,23 @@
 instance \fCsysContact.0\fR (although \fIsys*ontact\fR would match
 \fCsysContact\fR).
 Similarly, specifying a MIB module name will not succeed
-(so \fISNMPv2-MIB::sys.*ontact\fR would not match either).
+(so \fISNMPv2\-MIB::sys.*ontact\fR would not match either).
 .TP
-.B -Ih
-disables the use of DISPLAY-HINT information when assigning values.
+.B \-Ih
+disables the use of DISPLAY\-HINT information when assigning values.
 This would then require providing the raw value:
 .br
-\fC    snmpset ... HOST-RESOURCES-MIB::hrSystemDate.0
+\fC    snmpset ... HOST\-RESOURCES\-MIB::hrSystemDate.0
 .br
                     x "07 D2 0C 0A 02 04 06 08"\fR
 .br
 instead of a formatted version:
 .br
-\fC    snmpset ... HOST-RESOURCES-MIB::hrSystemDate.0
+\fC    snmpset ... HOST\-RESOURCES\-MIB::hrSystemDate.0
 .br
-                    = 2002-12-10,2:4:6.8\fR
+                    = 2002\-12\-10,2:4:6.8\fR
 .TP
-.B -Ir
+.B \-Ir
 disables checking table indexes and the value to be assigned against the
 relevant MIB definitions.  This will (hopefully) result in the remote
 agent reporting an invalid request, rather than checking (and rejecting)
@@ -725,13 +833,13 @@
 tend to be more precise), but disabling this behaviour is particularly
 useful when testing the remote agent.
 .TP
-.B -IR
+.B \-IR
 enables "random access" lookup of MIB names.
 Rather than providing a full OID path to the desired MIB object
 (or qualifying this object with an explicit MIB module name),
 the MIB tree will be searched for the matching object name.
-Thus \fC.iso.org.dod.internet.mib-2.system.sysDescr.0\fR
-(or \fCSNMPv2-MIB::sysDescr.0\fR) can be specified simply
+Thus \fC.iso.org.dod.internet.mib\-2.system.sysDescr.0\fR
+(or \fCSNMPv2\-MIB::sysDescr.0\fR) can be specified simply
 as \fCsysDescr.0\fR.
 .RS
 .IP "Warning:"
@@ -740,24 +848,24 @@
 have been loaded.
 .RE
 .IP
-The \fIMIB-MODULE::objectName\fR syntax has
+The \fIMIB\-MODULE::objectName\fR syntax has
 the advantage of uniquely identifying a particular MIB object,
 as well as being slightly more efficient (and automatically
 loading the necessary MIB file if necessary).
 .TP
-.B -Is SUFFIX
+.B \-Is SUFFIX
 adds the specified suffix to each textual OID given on the command line.
 This can be used to retrieve multiple objects from the same row of
 a table, by specifying a common index value.
 .TP
-.B -IS PREFIX
+.B \-IS PREFIX
 adds the specified prefix to each textual OID given on the command line.
 This can be used to specify an explicit MIB module name for all objects
 being retrieved (or for incurably lazy typists).
 .TP
-.B -Iu
+.B \-Iu
 enables the traditional UCD-style approach to interpreting input OIDs.
-This assumes that OIDs are rooted at the 'mib-2' point in the tree
+This assumes that OIDs are rooted at the 'mib\-2' point in the tree
 (unless they start with an explicit '.' or include a MIB module name).
 So the \fCsysDescr\fR instance above would be referenced as
 \fCsystem.sysDescr.0\fR. 
@@ -766,28 +874,28 @@
 Object names specified with a leading '.' are always interpreted as
 "fully qualified" OIDs, listing the sequence of MIB objects from the
 root of the MIB tree.  Such objects and those qualified by an explicit
-MIB module name are unaffected by the \fB-Ib\fR, \fB-IR\fR and \fB-Iu\fR flags.
+MIB module name are unaffected by the \fB\-Ib\fR, \fB\-IR\fR and \fB\-Iu\fR flags.
 
 Otherwise, if none of the above input options are specified, the
 default behaviour for a "relative" OID is to try and interpret it
 as an (implicitly) fully qualified OID,
-then apply "random access" lookup (\fB-IR\fR),
-followed by "best match" pattern matching (\fB-Ib\fR).
+then apply "random access" lookup (\fB\-IR\fR),
+followed by "best match" pattern matching (\fB\-Ib\fR).
 
 .SH "ENVIRONMENT VARIABLES"
 .IP PREFIX
 The standard prefix for object identifiers (when using UCD-style output).
-Defaults to .iso.org.dod.internet.mgmt.mib-2
+Defaults to .iso.org.dod.internet.mgmt.mib\-2
 .IP MIBS
 The list of MIBs to load. Defaults to
-SNMPv2-TC:SNMPv2-MIB:IF-MIB:IP-MIB:TCP-MIB:UDP-MIB:SNMP-VACM-MIB.
+SNMPv2\-TC:SNMPv2\-MIB:IF\-MIB:IP\-MIB:TCP\-MIB:UDP\-MIB:SNMP\-VACM\-MIB.
 Overridden by the
-.B -m
+.B \-m
 option.
 .IP MIBDIRS
 The list of directories to search for MIBs. Defaults to DATADIR/snmp/mibs.
 Overridden by the
-.B -M
+.B \-M
 option.
 
 .SH FILES
diff --git a/man/snmpconf.1.def b/man/snmpconf.1.def
index 8488aa5..cd0c104 100644
--- a/man/snmpconf.1.def
+++ b/man/snmpconf.1.def
@@ -6,7 +6,7 @@
 [OPTIONS] [fileToCreate]
 .IP "Start with:"
 .B snmpconf
--g basic_setup
+\-g basic_setup
 .IP "Or even just:"
 .B snmpconf
 .SH DESCRIPTION
@@ -27,35 +27,35 @@
 commented.
 .PP
 A particularly useful option is the
-.B -g
+.B \-g
 switch, which walks a user through a specific set of configuration
 questions.  Run:
 .RS
 .PP
-snmpconf -g basic_setup
+snmpconf \-g basic_setup
 .RE
 .PP
 for an example.
 .SH "OPTIONS"
 .TP 8
-.B -f
+.B \-f
 Force overwriting existing files in the current directory without
 prompting the user if this is a desired thing to do.
 .TP 
-.B -i
+.B \-i
 When finished, install the files into the location where the global
 system commands expect to find them.
 .TP
-.B -p
+.B \-p
 When finished, install the files into the users home directory's .snmp
 subdirectory (where the applications will also search for
 configuration files).
 .TP
-.BI -I " DIRECTORY"
+.BI \-I " DIRECTORY"
 When finished, install the files into the directory 
 .IR DIRECTORY .
 .TP
-.B -a
+.B \-a
 Don't ask any questions.  Simply read in the various known
 configuration files and write them back out again.  This has the
 effect of "auto-commenting" the configuration files for you.  See
@@ -63,17 +63,17 @@
 .B NEAT TRICKS
 section below.
 .TP
-.BI -r all|none
+.BI \-r all|none
 Read in either all or none of the found configuration files.  Normally
 .B snmpconf
 prompts you for which files you wish to read in.  Reading in
 these configuration files will merge these files with the results of
 the questions that it asks of you.
 .TP
-.BI -R " FILE,..."
+.BI \-R " FILE,..."
 Read in a specific list of configuration files.
 .TP
-.BI -g " GROUPNAME"
+.BI \-g " GROUPNAME"
 Groups of configuration entries can be created that can be used to
 walk a user through a series of questions to create an initial
 configuration file.  There are no menus to navigate, just a list of
@@ -81,44 +81,44 @@
 .RS
 .RS
 .PP
-snmpconf -g basic_setup
+snmpconf \-g basic_setup
 .RE
 .PP
 for a good example.
 .RE
 .TP
-.B -G
+.B \-G
 List all the known groups.
 .TP
-.BI -c " CONFIGDIR"
+.BI \-c " CONFIGDIR"
 .B snmpconf
 uses a directory of configuration information to learn about
 the files and questions that it should be asking.  This option tells
 .B snmpconf
 to use a different location for configuring itself.
 .TP
-.B -q
+.B \-q
 Run slightly more quietly.  Since this is an interactive program, I
 don't recommend this option since it only removes information from the
 output that is designed to help you.
 .TP
-.B -d
+.B \-d
 Turn on 
 .B lots
 of debugging output.
 .TP
-.B -D
+.B \-D
 Add 
 .B even more
 debugging output in the form of Perl variable dumps.
 .IP
 .SH "NEAT TRICKS"
-.IP "snmpconf -g basic_setup"
+.IP "snmpconf \-g basic_setup"
 Have I mentioned this command enough yet?  It's designed to walk
 someone through an initial setup for the
 .I snmpd(8)
 daemon.  Really, you should try it.
-.IP "snmpconf -R /usr/local/snmp/snmpd.conf -a -f snmpd.conf"
+.IP "snmpconf \-R /usr/local/snmp/snmpd.conf \-a \-f snmpd.conf"
 Automatically reads in an snmpd.conf file (for example) and adds
 comments to them describing what each token does.  Try it.  It's cool.
 .SH "NOTES"
diff --git a/man/snmpd.8.def b/man/snmpd.8.def
index 2a2086f..f173396 100644
--- a/man/snmpd.8.def
+++ b/man/snmpd.8.def
@@ -1,4 +1,4 @@
-.TH SNMPD 8 "10 Jan 2007" VVERSIONINFO "Net-SNMP"
+.TH SNMPD 8 "30 Jun 2010" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmpd - daemon to respond to SNMP request packets.
 .SH SYNOPSIS
@@ -12,13 +12,13 @@
 requested operation(s) and returns the information to the sender.
 .SH OPTIONS
 .TP 8
-.B -a
+.B \-a
 Log the source addresses of incoming requests.
 .TP
-.B -A
+.B \-A
 Append to the log file rather than truncating it.
 .TP
-.B "-c" \fIFILE
+.B "\-c" \fIFILE
 Read 
 .I FILE
 as a configuration file
@@ -27,21 +27,21 @@
 is specified in the file as described in the snmp_config man page under
 SWITCHING CONFIGURATION TYPES IN MID-FILE.
 .TP
-.B -C
+.B \-C
 Do not read any configuration files except the ones optionally specified by the 
-.B -c 
+.B \-c 
 option.
 Note that this behaviour also covers the persistent configuration files.
 This may result in dynamically-assigned values being reset following an
 agent restart, unless the relevant persistent config files are
 explicitly loaded using the
-.B -c 
+.B \-c 
 option.
 .TP
-.B -d
+.B \-d
 Dump (in hexadecimal) the sent and received SNMP packets.
 .TP
-.B -D\fI[TOKEN[,...]]
+.B \-D\fI[TOKEN[,...]]
 Turn on debugging output for the given
 .IR "TOKEN" "(s)."
 Without any tokens specified, it defaults to printing all the tokens
@@ -49,99 +49,99 @@
 You might want to try
 .IR ALL
 for extremely verbose output.  Note: You can not put a space between
-the -D flag and the listed TOKENs.
+the \-D flag and the listed TOKENs.
 .TP
-.B -f
+.B \-f
 Do not fork() from the calling shell.
 .TP
-.B -g \fIGID
+.B \-g \fIGID
 Change to the numerical group ID
 .I GID
 after opening listening sockets.
 .TP
-.B -h, --help
+.B \-h, \-\-help
 Display a brief usage message and then exit.
 .TP
-.B -H
+.B \-H
 Display a list of configuration file directives understood by the
 agent and then exit.
 .TP
-.B -I \fI[-]INITLIST
+.B \-I \fI[\-]INITLIST
 Specifies which modules should (or should not) be initialized
 when the agent starts up.  If the comma-separated
 .I INITLIST
 is preceded
-with a '-', it is the list of modules that should \fInot\fR be started.
+with a '\-', it is the list of modules that should \fInot\fR be started.
 Otherwise this is the list of the \fIonly\fR modules that should be started.
 
 To get a list of compiled modules, run the agent with the arguments
-.I "-Dmib_init -H"
+.I "\-Dmib_init \-H"
 (assuming debugging support has been compiled in).
 .TP
-.B -L[efos]
+.B \-L[efos]
 Specify where logging output should be directed (standard error or output,
 to a file or via syslog).  See LOGGING OPTIONS in snmpcmd(5) for details.
 .TP
-.BR -m " \fIMIBLIST"
+.BR \-m " \fIMIBLIST"
 Specifies a colon separated list of MIB modules to load for this
 application.  This overrides the environment variable MIBS.
 See \fIsnmpcmd(1)\fR for details.
 .TP
-.BR -M " \fIDIRLIST"
+.BR \-M " \fIDIRLIST"
 Specifies a colon separated list of directories to search for MIBs.
 This overrides the environment variable MIBDIRS.
 See \fIsnmpcmd(1)\fR for details.
 .TP
-.B -n \fINAME
+.B \-n \fINAME
 Set an alternative application name (which will affect the
 configuration files loaded).
 By default this will be \fIsnmpd\fR, regardless of the name
 of the actual binary.
 .TP
-.B -p \fIFILE
+.B \-p \fIFILE
 Save the process ID of the daemon in
 .IR FILE "."
 .TP 
-.B -q
+.B \-q
 Print simpler output for easier automated parsing.
 .TP
-.B -r
+.B \-r
 Do not require root access to run the daemon.  Specifically, do not exit
 if files only accessible to root (such as /dev/kmem etc.) cannot be
 opened.
 .TP
-.B -u \fIUID
+.B \-u \fIUID
 Change to the user ID
 .I UID
 (which can be given in numerical or textual form) after opening
 listening sockets.
 .TP
-.B -U
+.B \-U
 Instructs the agent to not remove its pid file (see the
-.B -p
+.B \-p
 option) on shutdown. Overrides the leave_pidfile token in the
 .I snmpd.conf
 file, see
 .I snmpd.conf(5).
 .TP
-.B -v, --version
+.B \-v, \-\-version
 Print version information for the agent and then exit.
 .TP
-.B -V
+.B \-V
 Symbolically dump SNMP transactions.
 .TP
-.B -x \fIADDRESS
+.B \-x \fIADDRESS
 Listens for AgentX connections on the specified address
 rather than the default AGENTX_SOCKET.
 The address can either be a Unix domain socket path,
 or the address of a network interface.  The format is the same as the
 format of listening addresses described below.
 .TP
-.B -X
+.B \-X
 Run as an AgentX subagent rather than as an SNMP master agent.
 .TP
-.BI -- "name"="value"
-Allows to specify any token ("name") supported in the
+.BI \-\- "name"="value"
+Allows one to specify any token ("name") supported in the
 .I snmpd.conf
 file and sets its value to "value". Overrides the corresponding token in the
 .I snmpd.conf
@@ -193,6 +193,12 @@
 hostname[:port]
 .I or
 IPv6-address[:port]
+.TP 28
+.IR "" "ssh"
+hostname:port
+.TP 28
+.IR "" "dtlsudp"
+hostname:port
 .RE
 .PP
 Note that <transport-specifier> strings are case-insensitive so that,
@@ -212,10 +218,10 @@
 .IR "ipx:/40000"
 listen on IPX port 40000 on all IPX interfaces.
 .TP 24
-.IR "unix:/tmp/local-agent"
-listen on the Unix domain socket \fI/tmp/local-agent\fR.
+.IR "unix:/tmp/local\-agent"
+listen on the Unix domain socket \fI/tmp/local\-agent\fR.
 .TP 24
-.IR "/tmp/local-agent"
+.IR "/tmp/local\-agent"
 is identical to the previous specification, since the Unix domain is
 assumed if the first character of the <transport-address> is '/'.
 .TP 24
@@ -225,6 +231,16 @@
 .TP 24
 .IR "udp6:10161"
 listen on port 10161 on all IPv6 interfaces.
+.TP 24
+.IR "ssh:127.0.0.1:22"
+Allows connections from the snmp subsystem on the ssh server on port
+22.  The details of using SNMP over SSH are defined below.
+.TP 24
+.IR "dtlsudp:127.0.0.1:9161"
+Listen for connections over DTLS on UDP port 9161.  The snmp.conf file
+must have the
+.IR serverCert,
+configuration tokens defined.
 .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
@@ -232,6 +248,71 @@
 the error "Error opening specified endpoint".  Likewise, since AAL5
 PVC support is only currently available on Linux, it will fail with
 the same error on other platforms.
+.SH Transport Specific Notes
+.RS 0
+.TP 8
+ssh
+The SSH transport, on the server side, is actually just a unix
+named pipe that can be connected to via a ssh subsystem configured in
+the main ssh server.  The pipe location (configurable with the
+sshtosnmpsocket token in snmp.conf) is
+.I /var/net\-snmp/sshtosnmp.
+Packets should be submitted to it via the sshtosnmp application, which
+also sends the user ID as well when starting the connection.  The TSM
+security model should be used when packets should process it.
+.IP
+The
+.I sshtosnmp
+command knows how to connect to this pipe and talk to
+it.  It should be configured in the
+.IR "OpenSSH sshd"
+configuration file (which is normally
+.IR "/etc/ssh/sshd_config"
+using the following configuration line:
+.TP 8
+.IP
+Subsystem snmp /usr/local/bin/sshtosnmp
+.IP
+The
+.I sshtosnmp
+command will need read/write access to the 
+.I /var/net\-snmp/sshtosnmp
+pipe.  Although it should be fairly safe to grant access to the
+average user since it still requires modifications to the ACM settings
+before the user can perform operations, paranoid administrators may
+want to make the /var/net\-snmp directory accessible only by users in a
+particular group.  Use the
+.I sshtosnmpsocketperms
+snmp.conf configure option to set the permissions, owner and group of
+the created socket.
+.IP
+Access control can be granted to the user "foo" using the following
+style of simple snmpd.conf settings:
+.TP 8
+.IP
+rouser \-s tsm foo authpriv
+.IP
+Note that "authpriv" is acceptable assuming as SSH protects everything
+that way (assuming you have a non-insane setup).
+snmpd has no notion of how SSH has actually protected a packet and
+thus the snmp agent assumes all packets passed through the SSH
+transport have been protected at the authpriv level.
+.TP 8
+dtlsudp
+The DTLS protocol, which is based off of TLS, requires both client and
+server certificates to establish the connection and authenticate both
+sides.  In order to do this, the client will need to configure the
+snmp.conf file
+with the
+.IR clientCert
+configuration tokens.  The server will need to configure the snmp.conf
+file with the
+.IR serverCert
+configuration tokens defined.
+.IP
+Access control setup is similar to the ssh transport as the TSM
+security model should be used to protect the packet.
+.RE
 .SH CONFIGURATION FILES
 .PP
 .B snmpd
diff --git a/man/snmpd.conf.5.def b/man/snmpd.conf.5.def
index 1e7cb2c..2a8a3d3 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
@@ -18,7 +18,7 @@
 manual page for more information, or try running the
 command:
 .RS
-.IP "snmpconf -g basic_setup"
+.IP "snmpconf \-g basic_setup"
 .RE
 .PP
 There are a large number of directives that can be specified,
@@ -40,7 +40,7 @@
 A full list of recognised directives can be obtained by running
 the command:
 .RS
-.IP "snmpd -H"
+.IP "snmpd \-H"
 .RE
 .SH AGENT BEHAVIOUR
 Although most configuration directives are concerned with the MIB
@@ -69,11 +69,11 @@
 starting with '#' (#UID).
 .IP "leave_pidfile yes"
 instructs the agent to not remove its pid file on shutdown. Equivalent to
-specifying "-U" on the command line.
+specifying "\-U" on the command line.
 .IP "maxGetbulkRepeats NUM"
 Sets the maximum number of responses allowed for a single variable in
-a getbulk request.  Set to 0 to enable the default and set it to -1 to
-enable unlimited.  Because memory is allocated ahead of time, sitting
+a getbulk request.  Set to 0 to enable the default and set it to \-1 to
+enable unlimited.  Because memory is allocated ahead of time, setting
 this to unlimited is not considered safe if your user population can
 not be trusted.  A repeat number greater than this will be truncated
 to this value.
@@ -82,8 +82,8 @@
 .IP "maxGetbulkResponses NUM"
 Sets the maximum number of responses allowed for a getbulk request.
 This is set by default to 100.  Set to 0 to enable the default and set
-it to -1 to enable unlimited.  Because memory is allocated ahead of
-time, sitting this to unlimited is not considered safe if your user
+it to \-1 to enable unlimited.  Because memory is allocated ahead of
+time, setting this to unlimited is not considered safe if your user
 population can not be trusted.
 .IP
 In general, the total number of responses will not be allowed to
@@ -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
-uptime 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
+Hopefully more SNMP software and devices will eventually support SNMP
+over (D)TLS or SSH, but it is likely that devices with original
+support for SNMP will only contain support for USM users.  If your
+network manager supports SNMP over (D)TLS or SNMP over SSH we suggest
+you use one of these mechanisms instead of using USM, but as always
+with Net-SNMP we give you the options to pick from so you can make the
+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,14 +143,126 @@
 .\"
 .\" What if this doesn't exist ?
 .\"
-.SH ACCESS CONTROL
-.B snmpd
-supports the View-Based Access Control Model (VACM) as defined in RFC
-2575, to control who can retrieve or update information.  To this end,
-it recognizes various directives relating to access control.
-These fall into four basic groups.
-.SS SNMPv3 Users
-.IP "createUser [-e ENGINEID] username (MD5|SHA) authpassphrase [DES|AES] [privpassphrase]"
+.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] localCert <specifier>"
+This token defines the default X.509 public key to use as the server's
+identity.  It should either be a fingerprint or a filename.  To create
+a public key for use, please run the "net\-snmp\-cert" utility which
+will help you create the required certificate.
+.IP
+The default value for this is the certificate in the "snmpd" named
+certificate file.
+.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] x509CRLFile"
+If you are using a Certificate Authority (CA) that publishes a
+Certificate Revocation List (CRL) then this token can be used to
+specify the location in the filesystem of a copy of the CRL file.
+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
+pain to manipulate yet another database and would prefer to use
+existing infrastructure.  To that end the IETF created the ISMS
+working group to battle that problem, and the ISMS working group
+decided to tunnel SNMP over SSH and DTLS to make use existing user and
+authentication infrastructures.
+.SS SNMPv3 USM Users
+To use the USM based SNMPv3-specific users, you'll need to create
+them.  It is recommended you
+.B "use the net\-snmp\-config command"
+to do this, but you can also do it by directly specifying createUser
+directives yourself instead:
+.IP "createUser [\-e ENGINEID] username (MD5|SHA) authpassphrase [DES|AES] [privpassphrase]"
 .IP
 MD5 and SHA are the authentication types to use.  DES and AES are the
 privacy protocols to use.  If the privacy
@@ -141,7 +282,7 @@
 command.
 .IP
 Instead of figuring out how to use this directive and where to put it
-(see below), just run "net-snmp-config --create-snmpv3-user" instead,
+(see below), just run "net\-snmp\-config \-\-create\-snmpv3\-user" instead,
 which will add one of these lines to the right place.
 .IP
 This directive should be placed into the
@@ -154,12 +295,12 @@
 it can be.
 .IP
 If you need to localize the user to a particular EngineID (this is
-useful mostly in the similar snmptrapd.conf file), you can use the -e
+useful mostly in the similar snmptrapd.conf file), you can use the \-e
 argument to specify an EngineID as a hex value (EG, "0x01020304").
 .IP
 If you want to generate either your master or localized keys directly,
-replace the given password with a hexstring (preceeded by a "0x") and
-precede the hex string by a -m or -l token (respectively).  EGs:
+replace the given password with a hexstring (preceded by a "0x") and
+precede the hex string by a \-m or \-l token (respectively).  EGs:
 .IP
 .RS
 .nf
@@ -167,8 +308,8 @@
 counting purposes.  Please generate random keys instead of using
 these examples]
 
-createUser myuser SHA -l 0x0001020304050607080900010203040506070809 AES -l 0x00010203040506070809000102030405
-createUser myuser SHA -m 0x0001020304050607080900010203040506070809 AES -m 0x0001020304050607080900010203040506070809
+createUser myuser SHA \-l 0x0001020304050607080900010203040506070809 AES \-l 0x00010203040506070809000102030405
+createUser myuser SHA \-m 0x0001020304050607080900010203040506070809 AES \-m 0x0001020304050607080900010203040506070809
 .fi
 .RE
 .IP
@@ -177,12 +318,17 @@
 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).
+.SH ACCESS CONTROL
+.B snmpd
+supports the View-Based Access Control Model (VACM) as defined in RFC
+2575, to control who can retrieve or update information.  To this end,
+it recognizes various directives relating to access control.
 .SS Traditional Access Control
 Most simple access control requirements can be specified using the
 directives \fIrouser\fR/\fIrwuser\fR (for SNMPv3) or
 \fIrocommunity\fR/\fIrwcommunity\fR (for SNMPv1 or SNMPv2c).
-.IP "rouser USER [noauth|auth|priv [OID | -V VIEW [CONTEXT]]]"
-.IP "rwuser USER [noauth|auth|priv [OID | -V VIEW [CONTEXT]]]"
+.IP "rouser [\-s SECMODEL] USER [noauth|auth|priv [OID | \-V VIEW [CONTEXT]]]"
+.IP "rwuser [\-s SECMODEL]  USER [noauth|auth|priv [OID | \-V VIEW [CONTEXT]]]"
 specify an SNMPv3 user that will be allowed read-only (GET and GETNEXT)
 or read-write (GET, GETNEXT and SET) access respectively.
 By default, this will provide access to the full OID tree for authenticated
@@ -194,8 +340,15 @@
 An optional context can also be specified, or "context*" to denote a context
 prefix.  If no context field is specified (or the token "*" is used), the
 directive will match all possible contexts.
-.IP "rocommunity COMMUNITY [SOURCE [OID | -V VIEW [CONTEXT]]]"
-.IP "rwcommunity COMMUNITY [SOURCE [OID | -V VIEW [CONTEXT]]]"
+.IP
+If SECMODEL is specified then it will be the security model required
+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 (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]]]"
 specify an SNMPv1 or SNMPv2c community that will be allowed read-only
 (GET and GETNEXT) or read-write (GET, GETNEXT and SET) access respectively.
 By default, this will provide access to the full OID tree for such requests,
@@ -205,8 +358,8 @@
 that community to the subtree rooted at the given OID, or named view.
 Contexts are typically less relevant to community-based SNMP versions,
 but the same behaviour applies here.
-.IP "rocommunity6 COMMUNITY [SOURCE [OID | -V VIEW [CONTEXT]]]"
-.IP "rwcommunity6 COMMUNITY [SOURCE [OID | -V VIEW [CONTEXT]]]"
+.IP "rocommunity6 COMMUNITY [SOURCE [OID | \-V VIEW [CONTEXT]]]"
+.IP "rwcommunity6 COMMUNITY [SOURCE [OID | \-V VIEW [CONTEXT]]]"
 are directives relating to requests received using IPv6
 (if the agent supports such transport domains).
 The interpretation of the SOURCE, OID, VIEW and CONTEXT tokens are exactly
@@ -228,10 +381,10 @@
 configuration directives.
 .SS VACM Configuration
 The full flexibility of the VACM is available using four configuration
-directives - \fIcom2sec\fR, \fIgroup\fR, \fIview\fR and \fIaccess\fR.
+directives \- \fIcom2sec\fR, \fIgroup\fR, \fIview\fR and \fIaccess\fR.
 These provide direct configuration of the underlying VACM tables.
-.IP "com2sec  [-Cn CONTEXT] SECNAME SOURCE COMMUNITY"
-.IP "com2sec6 [-Cn CONTEXT] SECNAME SOURCE COMMUNITY"
+.IP "com2sec  [\-Cn CONTEXT] SECNAME SOURCE COMMUNITY"
+.IP "com2sec6 [\-Cn CONTEXT] SECNAME SOURCE COMMUNITY"
 map an SNMPv1 or SNMPv2c community string to a security name - either from
 a particular range of source addresses, or globally (\fI"default"\fR).
 A restricted source can either be a specific hostname (or address), or
@@ -243,12 +396,12 @@
 combination that matches the incoming request will be selected.
 Various source/community combinations can also map to the same security name.
 .IP
-If a CONTEXT is specified (using \fI-Cn\fR), the community string will be
+If a CONTEXT is specified (using \fI\-Cn\fR), the community string will be
 mapped to a security name in the named SNMPv3 context. Otherwise the
 default context ("") will be used.
-.IP "com2secunix [-Cn CONTEXT] SECNAME SOCKPATH COMMUNITY"
+.IP "com2secunix [\-Cn CONTEXT] SECNAME SOCKPATH COMMUNITY"
 is the Unix domain sockets version of \fIcom2sec\fR.
-.IP "group GROUP {v1|v2c|usm} SECNAME"
+.IP "group GROUP {v1|v2c|usm|tsm|ksm} SECNAME"
 maps a security name (in the specified security model) into
 a named group.  Several \fIgroup\fR directives can specify the
 same group name, allowing a single access setting to apply to several 
@@ -293,7 +446,7 @@
 .IP
 Note that a mask longer than 8 bits must use ':' to separate the individual
 octets.
-.IP "access GROUP CONTEXT {any|v1|v2c|usm} LEVEL PREFX READ WRITE NOTIFY"
+.IP "access GROUP CONTEXT {any|v1|v2c|usm|tsm|ksm} LEVEL PREFX READ WRITE NOTIFY"
 maps from a group of users/communities (with a particular security model
 and minimum security level, and in a specific context) to one of three views,
 depending on the request being processed.
@@ -312,7 +465,7 @@
 concerned, the two main view types are \fIread\fR and \fIwrite\fR,
 corresponding to the READ and WRITE views of the main \fIaccess\fR directive.
 See the 'snmptrapd.conf(5)' man page for discussion of other view types.
-.IP "authcommunity TYPES  COMMUNITY   [SOURCE [OID | -V VIEW [CONTEXT]]]"
+.IP "authcommunity TYPES  COMMUNITY   [SOURCE [OID | \-V VIEW [CONTEXT]]]"
 is an alternative to the \fIrocommunity\fR/\fIrwcommunity\fR directives.
 TYPES will usually be \fIread\fR or \fIread,write\fR respectively.
 The view specification can either be an OID subtree (as before),
@@ -321,20 +474,20 @@
 then access will be allowed to the full OID tree.
 If CONTEXT is specified, access is configured within this SNMPv3 context.
 Otherwise the default context ("") is used.
-.IP "authuser   TYPES [-s MODEL] USER  [LEVEL [OID | -V VIEW [CONTEXT]]]"
+.IP "authuser   TYPES [\-s MODEL] USER  [LEVEL [OID | \-V VIEW [CONTEXT]]]"
 is an alternative to the \fIrouser\fR/\fIrwuser\fR directives.
 The fields TYPES, OID, VIEW and CONTEXT have the same meaning as for
 \fIauthcommunity\fR.
-.IP "authgroup  TYPES [-s MODEL] GROUP [LEVEL [OID | -V VIEW [CONTEXT]]]"
+.IP "authgroup  TYPES [\-s MODEL] GROUP [LEVEL [OID | \-V VIEW [CONTEXT]]]"
 is a companion to the \fIauthuser\fR directive, specifying access
 for a particular group (defined using the \fIgroup\fR directive as usual).
 Both \fIauthuser\fR and \fIauthgroup\fR default to authenticated requests -
 LEVEL can also be specified as \fInoauth\fR or \fIpriv\fR to allow
 unauthenticated requests, or require encryption respectively.
 Both \fIauthuser\fR and \fIauthgroup\fR directives also default to configuring
-access for SNMPv3/USM requests - use the '-s' flag to specify an alternative
+access for SNMPv3/USM requests - use the '\-s' flag to specify an alternative
 security model (using the same values as for \fIaccess\fR above).
-.IP "authaccess TYPES [-s MODEL] GROUP VIEW [LEVEL [CONTEXT]]"
+.IP "authaccess TYPES [\-s MODEL] GROUP VIEW [LEVEL [CONTEXT]]"
 also configures the access for a particular group,
 specifying the name and type of view to apply. The MODEL and LEVEL fields
 are interpreted in the same way as for \fIauthgroup\fR.
@@ -360,7 +513,7 @@
 .IP "sysName STRING"
 set the system location, system contact or system name
 (\fCsysLocation.0\fR, \fCsysContact.0\fR and \fCsysName.0\fR) for the agent respectively.
-Ordinarily these objects are writeable via suitably authorized SNMP SET
+Ordinarily these objects are writable via suitably authorized SNMP SET
 requests.  However, specifying one of these directives makes the
 corresponding object read-only, and attempts to SET it will result in
 a \fInotWritable\fR error response.
@@ -378,8 +531,20 @@
 .IP "interface NAME TYPE SPEED"
 can be used to provide appropriate type and speed settings for
 interfaces where the agent fails to determine this information correctly.
-TYPE is a type value as given in the IANAifType-MIB,
+TYPE is a type value as given in the IANAifType\-MIB,
 and can be specified numerically or by name (assuming this MIB is loaded).
+.IP "interface_fadeout TIMEOUT"
+specifies, for how long the agent keeps entries in \fCifTable\fR after
+appropriate interfaces have been removed from system (typically various ppp,
+tap or tun interfaces). Timeout value is in seconds. Default value is 300
+(=5 minutes).
+.IP "interface_replace_old yes"
+can be used to remove already existing entries in \fCifTable\fR when an
+interface with the same name appears on the system. E.g. when ppp0 interface
+is removed, it is still listed in the table for \fIinterface_fadeout\fR
+seconds. This option ensures, that the old ppp0 interface is removed even
+before the \fIinterface_fadeout\fR timeour when new ppp0 (with different
+\fCifIndex\fR) shows up.
 .SS Host Resources Group
 This requires that the agent was built with support for the
 \fIhost\fR module (which is now included as part of the default build 
@@ -419,13 +584,32 @@
 as 'Fixed Disks', and this is still the default behaviour.
 Setting this directive to '1' reports such file systems as
 \'Network Disks', as required by the Host Resources MIB.
+.IP "realStorageUnits"
+controlls how the agent reports hrStorageAllocationUnits, hrStorageSize and
+hrStorageUsed in hrStorageTable.
+For big storage drives with small allocation units the agent re-calculates
+these values so they all fit Integer32 and
+hrStorageAllocationUnits x hrStorageSize
+gives real size of the storage.
+.RS
+.IP "Example:"
+Linux xfs 16TB filesystem with 4096 bytes large blocks will be
+reported as  hrStorageAllocationUnits = 8192 and hrStorageSize = 2147483647,
+so 8192 x 2147483647 gives real size of the filesystem (=16 TB).
+.RE
+.IP
+Setting this directive to '1' turns off
+this calculation and the agent reports real hrStorageAllocationUnits, but it
+might report wrong hrStorageSize for big drives because the value won't fit into
+Integer32. In this case, hrStorageAllocationUnits x hrStorageSize won't give
+real size of the storage.
 .SS Process Monitoring 
 The \fChrSWRun\fR group of the Host Resources MIB provides
 information about individual processes running on the local system.
-The \fCprTable\fR of the UCD-SNMP-MIB complements this by reporting
+The \fCprTable\fR of the UCD\-SNMP\-MIB complements this by reporting
 on selected services (which may involve multiple processes).
 This requires that the agent was built with support for the
-\fIucd-snmp/proc\fR module (which is included as part of the
+\fIucd\-snmp/proc\fR module (which is included as part of the
 default build configuration).
 .IP "proc NAME [MAX [MIN]]"
 monitors the number of processes called NAME (as reported by PSCMD)
@@ -441,9 +625,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
@@ -461,7 +648,7 @@
 \fCprTable\fR will fail (\fInoSuchObject\fI).
 .SS Disk Usage Monitoring
 This requires that the agent was built with support for the
-\fIucd-snmp/disk\fR module (which is included as part of the
+\fIucd\-snmp/disk\fR module (which is included as part of the
 default build configuration).
 .IP "disk PATH [ MINSPACE | MINPERCENT% ]"
 monitors the disk mounted at PATH for available disk space.
@@ -505,9 +692,31 @@
 .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
+\fIucd\-snmp/loadave\fR module or the \fIucd\-snmp/memory\fR module
 respectively (both of which are included as part of the
 default build configuration).
 .IP "load MAX1 [MAX5 [MAX15]]"
@@ -534,7 +743,7 @@
 .PP
 Unlike the \fIproc\fR and \fIdisk\fR directives, walking the
 walking the \fClaTable\fR will succeed (assuming the
-\fIucd-snmp/loadave\fR module was configured into the agent),
+\fIucd\-snmp/loadave\fR module was configured into the agent),
 even if the \fIload\fR directive is not present.
 .IP "swap MIN "
 monitors the amount of swap space available on the local system.
@@ -549,7 +758,7 @@
 If this directive is not specified, the default threshold is 16 MB.
 .SS Log File Monitoring
 This requires that the agent was built with support for either the
-\fIucd-snmp/file\fR or \fIucd-snmp/logmatch\fR modules respectively
+\fIucd\-snmp/file\fR or \fIucd\-snmp/logmatch\fR modules respectively
 (both of which are included as part of the
 default build configuration).
 .IP "file FILE [MAXSIZE]"
@@ -576,7 +785,7 @@
 .RS
 .IP NAME
 name of the logmatch instance (will appear as logMatchName under
-logMatch/logMatchTable/logMatchEntry/logMatchName in the ucd-snmp MIB tree)
+logMatch/logMatchTable/logMatchEntry/logMatchName in the ucd\-snmp MIB tree)
 .IP FILE
 absolute path to the logfile to be monitored. Note that this path
 can contain date/time directives (like in the UNIX 'date' command). See the
@@ -594,12 +803,12 @@
 Example:
 .RS
 .IP
-logmatch apache-GETs /usr/local/apache/logs/access.log-%Y-%m-%d 60 GET.*HTTP.*
+logmatch apache\-GETs /usr/local/apache/logs/access.log\-%Y\-%m\-%d 60 GET.*HTTP.*
 .IP
-This logmatch instance is named 'apache-GETs', uses 'GET.*HTTP.*' as its
+This logmatch instance is named 'apache\-GETs', uses 'GET.*HTTP.*' as its
 regular expression and it will monitor the file named
-(assuming today is May 6th 2009): '/usr/local/apache/logs/access.log-2009-05-06',
-tomorrow it will look for 'access.log-2009-05-07'. The logfile is read every 60
+(assuming today is May 6th 2009): '/usr/local/apache/logs/access.log\-2009\-05\-06',
+tomorrow it will look for 'access.log\-2009\-05\-07'. The logfile is read every 60
 seconds.
 .RE
 .IP
@@ -654,12 +863,12 @@
 .I "SNMPCMD_ARGS"
 should be the command-line options required for an equivalent
 \fIsnmptrap\fR (or \fIsnmpinform\fR) command to send the desired notification.
-The option \fI-Ci\fR can be used (with \fI-v2c\fR or \fI-v3\fR) to generate
+The option \fI\-Ci\fR can be used (with \fI\-v2c\fR or \fI\-v3\fR) to generate
 an INFORM notification rather than an unacknowledged TRAP.
 .IP
 This is the appropriate directive for defining SNMPv3 trap receivers.
 See
-http://www.net-snmp.org/tutorial/tutorial-5/commands/snmptrap-v3.html
+http://www.net\-snmp.org/tutorial/tutorial\-5/commands/snmptrap\-v3.html
 for more information about SNMPv3 notification behaviour.
 .IP "authtrapenable {1|2}"
 determines whether to generate authentication failure traps
@@ -668,6 +877,12 @@
 object (\fCsnmpEnableAuthenTraps.0\fR) is read-write, but specifying
 this directive makes this object read-only, and attempts to set the
 value via SET requests will result in a \fInotWritable\fR error response.
+.RE
+.IP "v1trapaddress HOST"
+defines the agent address, which is inserted into SNMPv1 TRAPs. Arbitrary local 
+IPv4 address is chosen if this option is ommited. This option is useful mainly 
+when the agent is visible from outside world by specific address only (e.g. 
+because of network address translation or firewall).
 .SS "DisMan Event MIB"
 The previous directives can be used to configure where traps should
 be sent, but are not concerned with \fIwhen\fR to send such traps
@@ -755,47 +970,49 @@
 There are various options to control the behaviour of the monitored
 expression.  These include:
 .RS
-.IP "-D"
+.IP "\-D"
 indicates that the expression should be evaluated using delta differences
 between sample values (rather than the values themselves).
-.IP "-d OID"
-.IP "-di OID"
+.IP "\-d OID"
+.IP "\-di OID"
 specifies a discontinuity marker for validating delta differences.
-A \fI-di\fR object instance will be used exactly as given.
-A \fI-d\fR object will have the instance subidentifiers from the
+A \fI\-di\fR object instance will be used exactly as given.
+A \fI\-d\fR object will have the instance subidentifiers from the
 corresponding (wildcarded) expression object appended.
-If the \fI-I\fR flag is specified, then there is no difference
+If the \fI\-I\fR flag is specified, then there is no difference
 between these two options.
 .IP
-This option also implies \fI-D\fR.
-.IP "-e EVENT"
+This option also implies \fI\-D\fR.
+.IP "\-e EVENT"
 specifies the event to be invoked when this monitor entry is triggered.
 If this option is not given, the monitor entry will generate one
-of the standard notifications defined in the DISMAN-EVENT-MIB.
-.IP "-I"
+of the standard notifications defined in the DISMAN\-EVENT\-MIB.
+.IP "\-I"
 indicates that the monitored expression should be applied to the
 specified OID as a single instance.  By default, the OID will
 be treated as a wildcarded object, and the monitor expanded
 to cover all matching instances.
-.IP "-i OID"
-.IP "-o OID"
+.IP "\-i OID"
+.IP "\-o OID"
 define additional varbinds to be added to the notification payload
 when this monitor trigger fires.
 For a wildcarded expression, the suffix of the matched instance
-will be added to any OIDs specified using \fI-o\fR, while OIDs
-specified using \fI-i\fR will be treated as exact instances.
-If the \fI-I\fR flag is specified, then there is no difference
+will be added to any OIDs specified using \fI\-o\fR, while OIDs
+specified using \fI\-i\fR will be treated as exact instances.
+If the \fI\-I\fR flag is specified, then there is no difference
 between these two options.
 .IP
 See \fIstrictDisman\fR for details of the ordering of notification payloads.
-.IP "-r FREQUENCY"
-monitors the given expression every FREQUENCY seconds.
-By default, the expression will be evaluated every 600s (10 minutes). 
-.IP "-S"
+.IP "\-r FREQUENCY"
+monitors the given expression every FREQUENCY, where FREQUENCY is in
+seconds or optionally suffixed by one of s (for seconds), m (for
+minutes), h (for hours), d (for days), or w (for weeks).  By default,
+the expression will be evaluated every 600s (10 minutes).
+.IP "\-S"
 indicates that the monitor expression should \fInot\fR be evaluated
 when the agent first starts up.  The first evaluation will be done
 once the first repeat interval has expired.
-.IP "-s"
+.IP "\-s"
 indicates that the monitor expression \fIshould\fR be evaluated when the
 agent first starts up.  This is the default behaviour.
 .RS
@@ -803,20 +1020,20 @@
 Notifications triggered by this initial evaluation will be sent
 \fIbefore\fR the \fCcoldStart\fR trap.
 .RE
-.IP "-u SECNAME"
+.IP "\-u SECNAME"
 specifies a security name to use for scanning the local host,
 instead of the default \fIiquerySecName\fR.
 Once again, this user must be explicitly created and given
 suitable access rights.
 .RE
-.IP "notificationEvent ENAME NOTIFICATION [-m] [-i OID | -o OID ]*"
+.IP "notificationEvent ENAME NOTIFICATION [\-m] [\-i OID | \-o OID ]*"
 defines a notification event named ENAME.
 This can be triggered from a given \fImonitor\fR entry by specifying
-the option \fI-e ENAME\fR (see above).
-NOTIFICATION should be the OID of the NOTIFICATION-TYPE definition
+the option \fI\-e ENAME\fR (see above).
+NOTIFICATION should be the OID of the NOTIFICATION\-TYPE definition
 for the notification to be generated.
 .IP
-If the \fI-m\fR option is given, the notification payload will
+If the \fI\-m\fR option is given, the notification payload will
 include the standard varbinds as specified in the OBJECTS clause
 of the notification MIB definition.
 This option must come \fBafter\fR the NOTIFICATION OID
@@ -825,25 +1042,25 @@
 be listed explicitly (either here or in the corresponding
 \fImonitor\fR directive).
 .IP
-The \fI-i OID\fR and \fI-o OID\fR options specify additional
+The \fI\-i OID\fR and \fI\-o OID\fR options specify additional
 varbinds to be appended to the notification payload, after the
 standard list.
 If the monitor entry that triggered this event involved a
 wildcarded expression, the suffix of the matched instance
-will be added to any OIDs specified using \fI-o\fR, while OIDs
-specified using \fI-i\fR will be treated as exact instances.
-If the \fI-I\fR flag was specified to the \fImonitor\fR directive,
+will be added to any OIDs specified using \fI\-o\fR, while OIDs
+specified using \fI\-i\fR will be treated as exact instances.
+If the \fI\-I\fR flag was specified to the \fImonitor\fR directive,
 then there is no difference between these two options.
-.IP "setEvent ENAME [-I] OID = VALUE "
+.IP "setEvent ENAME [\-I] OID = VALUE "
 defines a set event named ENAME, assigning the (integer) VALUE
 to the specified OID.
 This can be triggered from a given \fImonitor\fR entry by specifying
-the option \fI-e ENAME\fR (see above).
+the option \fI\-e ENAME\fR (see above).
 .IP
 If the monitor entry that triggered this event involved a
 wildcarded expression, the suffix of the matched instance
 will normally be added to the OID.
-If the \fI-I\fR flag was specified to either of the
+If the \fI\-I\fR flag was specified to either of the
 \fImonitor\fR or \fIsetEvent\fR directives, the
 specified OID will be regarded as an exact single instance.
 .IP "strictDisman yes"
@@ -864,8 +1081,8 @@
 .RS
 .IP "Note:"
 Strict DisMan ordering may result in generating invalid notifications
-payload lists if the \fInotificationEvent -n\fR flag is used together
-with \fImonitor -o\fR (or \fI-i\fR) varbind options.
+payload lists if the \fInotificationEvent \-n\fR flag is used together
+with \fImonitor \-o\fR (or \fI\-i\fR) varbind options.
 .RE
 .IP
 If no \fImonitor\fR entries specify payload varbinds,
@@ -882,25 +1099,25 @@
 notificationEvent  linkUpTrap    linkUp   ifIndex ifAdminStatus ifOperStatus
 notificationEvent  linkDownTrap  linkDown ifIndex ifAdminStatus ifOperStatus
 
-monitor  -r 60 -e linkUpTrap   "Generate linkUp" ifOperStatus != 2
-monitor  -r 60 -e linkDownTrap "Generate linkDown" ifOperStatus == 2
+monitor  \-r 60 \-e linkUpTrap   "Generate linkUp" ifOperStatus != 2
+monitor  \-r 60 \-e linkDownTrap "Generate linkDown" ifOperStatus == 2
 .fi
 .RE
 .IP "defaultMonitors yes"
 will configure the Event MIB tables to monitor the various
-\fCUCD-SNMP-MIB\fR tables for problems (as indicated by
+\fCUCD\-SNMP\-MIB\fR tables for problems (as indicated by
 the appropriate \fCxxErrFlag\fR column objects).
 .IP
 This is exactly equivalent to the configuration:
 .RS
 .IP
 .nf
-monitor	-o prNames -o prErrMessage "process table" prErrorFlag != 0
-monitor	-o memErrorName -o memSwapErrorMsg "memory" memSwapError != 0
-monitor	-o extNames -o extOutput "extTable" extResult != 0
-monitor	-o dskPath -o dskErrorMsg "dskTable" dskErrorFlag != 0
-monitor	-o laNames -o laErrMessage  "laTable" laErrorFlag != 0
-monitor	-o fileName -o fileErrorMsg  "fileTable" fileErrorFlag != 0
+monitor	\-o prNames \-o prErrMessage "process table" prErrorFlag != 0
+monitor	\-o memErrorName \-o memSwapErrorMsg "memory" memSwapError != 0
+monitor	\-o extNames \-o extOutput "extTable" extResult != 0
+monitor	\-o dskPath \-o dskErrorMsg "dskTable" dskErrorFlag != 0
+monitor	\-o laNames \-o laErrMessage  "laTable" laErrorFlag != 0
+monitor	\-o fileName \-o fileErrorMsg  "fileTable" fileErrorFlag != 0
 .fi
 .RE
 .PP
@@ -917,7 +1134,9 @@
 There are three ways of specifying the scheduled action:
 .IP "repeat FREQUENCY OID = VALUE"
 configures a SET assignment of the (integer) VALUE to the MIB instance
-OID, to be run every FREQUENCY seconds.
+OID, to be run every FREQUENCY seconds, where FREQUENCY is in
+seconds or optionally suffixed by one of s (for seconds), m (for
+minutes), h (for hours), d (for days), or w (for weeks).
 .IP "cron MINUTE HOUR DAY MONTH WEEKDAY  OID = VALUE"
 configures a SET assignment of the (integer) VALUE to the MIB instance
 OID, to be run at the times specified by the fields MINUTE to WEEKDAY.
@@ -935,6 +1154,70 @@
 configures a one-shot SET assignment, to be run at the first matching
 time as specified by the fields MINUTE to WEEKDAY.  The interpretation
 of these fields is exactly the same as for the \fIcron\fR directive.
+.SS "Data Delivery via Notfiications"
+Note: this functionality is only available if the
+\fIdeliver/deliverByNotify\fR mib module was complied in to the agent
+.PP
+In some situations it may be advantageous to deliver SNMP data over
+SNMP Notifications (TRAPs and INFORMs) rather than the typical process
+of having the manager issue requests for the data (via GETs and
+GETNEXTs).  Reasons for doing this are numerous, but frequently corner
+cases.  The most common reason for wanting this behaviour might be to
+monitor devices that reside behind NATs or Firewalls that prevent
+incoming SNMP traffic.
+.PP
+It should be noted that although most management software is capable
+of logging notifications, very little (if any) management software
+will updated their "knowledge database" based on the contents of SNMP
+notifications.  IE, it won't (for example) update the interface
+traffic counter history that is used to produce graphs.  Most larger
+network management packages have a separate database for storing data
+received via SNMP requests (GETs and GETNEXTs) vs those received from
+notifications.  Researching the capabilities of your management
+station software is required before assuming this functionality will
+solve your data delivery requirements.
+.PP
+Notifications generated via this mechanism will be sent to the
+standard set of configured notification targets.  See the
+"Notification Handling" section of this document for further
+information.
+.IP "deliverByNotify [\-p] [\-m] [\-s MAXSIZE] FREQUENCY OID"
+This directive tells the SNMP agent to self-walk the \fIOID\fR,
+collect all the data and send it out every \fIFREQUENCY\fR seconds,
+where FREQUENCY is in seconds or optionally suffixed by one of s (for
+seconds), m (for minutes), h (for hours), d (for days), or w (for
+weeks).  By default scalars are included in the notification that
+specify the how often the notification will be sent (unless the
+\fI\-p\fR option is specified) and which message number of how many
+messages a particular notification is (unless \fI\-m\fR is specified).
+To break the notifications into manageable packet sizes, use the
+\fI\-s\fR flag to specify the approximate maximum number of bytes that
+a notification message should be limited to.  If more than
+\fIMAXSIZE\fR of bytes is needed then multiple notifications will be
+sent to deliver the data.  Note that the calculations for ensuring the
+maximum size is met are approximations and thus it can be absolutely
+guaranteed they'll be under that size, so leave a padding buffer if it
+is critical that you avoid fragmentation.  A value of \-1 indicates
+force everything into a single message no matter how big it is.
+.IP
+Example usage: the following will deliver the contents of the ifTable
+once an hour and the contents of the system group once every 2 hours:
+.RS
+.nf
+
+deliverByNotify 3600 ifTable
+deliverByNotify 7200 system
+.fi
+.RE
+.IP "deliverByNotifyMaxPacketSize SIZEINBYTES"
+Sets the default notification size limit (see the \fI\-s\fR flag above).
+.IP "deliverByNotifyOid OID"
+.IP "deliverByNotifyFrequencyOid OID"
+.IP "deliverByNotifyMessageNumberOid OID"
+.IP "deliverByNotifyMaxMessageNumberOid OID"
+These set the data OID that the notification will be sent under, the
+scalar OID, the message number OID, and the maximum message number
+OID.  These default to objects in the NET\-SNMP\-PERIODIC\-NOTIFY\-MIB.
 .SH "EXTENDING AGENT FUNCTIONALITY"
 One of the first distinguishing features of the original UCD suite was
 the ability to extend the functionality of the agent - not just by
@@ -953,7 +1236,7 @@
 SNMP operations, or conform to any particular behaviour - the MIB
 structures are designed to accommodate any form of command output.
 Use of this mechanism requires that the agent was built with support for the
-\fIucd-snmp/extensible\fR and/or \fIagent/extend\fR modules (which
+\fIucd\-snmp/extensible\fR and/or \fIagent/extend\fR modules (which
 are both included as part of the default build configuration).
 .IP "exec [MIBOID] NAME PROG ARGS"
 .IP "sh [MIBOID] NAME PROG ARGS"
@@ -1027,7 +1310,7 @@
 \fIextend\fR entry, and can appear on its own.
 .PP
 Both \fIextend\fR and \fIextendfix\fR directives can be configured
-dynamically, using SNMP SET requests to the NET-SNMP-EXTEND-MIB.
+dynamically, using SNMP SET requests to the NET\-SNMP\-EXTEND\-MIB.
 .SS "MIB-Specific Extension Commands"
 The first group of extension directives invoke arbitrary commands,
 and rely on the MIB structure (and management applications) having
@@ -1038,17 +1321,17 @@
 The remaining extension mechanisms are all concerned with such
 MIB-specific situations - starting with "pass-through" scripts.
 Use of this mechanism requires that the agent was built with support for the
-\fIucd-snmp/pass\fR and \fIucd-snmp/pass_persist\fR modules (which
+\fIucd\-snmp/pass\fR and \fIucd\-snmp/pass_persist\fR modules (which
 are both included as part of the default build configuration).
-.IP "pass [-p priority] MIBOID PROG"
+.IP "pass [\-p priority] MIBOID PROG"
 will pass control of the subtree rooted at MIBOID to the specified
 PROG command.  GET and GETNEXT requests for OIDs within this tree will
 trigger this command, called as:
 .RS
 .IP
-PROG -g OID
+PROG \-g OID
 .IP
-PROG -n OID
+PROG \-n OID
 .RE
 .IP
 respectively, where OID is the requested OID.
@@ -1076,7 +1359,7 @@
 A SET request will result in the command being called as:
 .RS
 .IP
-PROG -s OID TYPE VALUE
+PROG \-s OID TYPE VALUE
 .RE
 .IP
 where TYPE is one of the tokens listed above, indicating the type of the
@@ -1110,9 +1393,9 @@
 a separate invocation of the command.
 .IP
 The default registration priority is 127.  This can be
-changed by supplying the optional -p flag, with lower priority
+changed by supplying the optional \-p flag, with lower priority
 registrations being used in preference to higher priority values.
-.IP "pass_persist [-p priority] MIBOID PROG"
+.IP "pass_persist [\-p priority] MIBOID PROG"
 will also pass control of the subtree rooted at MIBOID to the specified
 PROG command.  However this command will continue to run after the initial
 request has been answered, so subsequent requests can be processed without
@@ -1135,18 +1418,18 @@
 If the assignment is successful, the command should print
 "DONE\\n" to stdout.
 Errors should be indicated by writing one of the strings
-.B not-writable, 
-.B wrong-type,
-.B wrong-length,
-.B wrong-value
+.B not\-writable, 
+.B wrong\-type,
+.B wrong\-length,
+.B wrong\-value
 or
-.B inconsistent-value
+.B inconsistent\-value
 to stdout,
 and the agent will generate the appropriate error response.
 In either case, the command should continue running.
 .IP
 The registration priority can be changed using the optional
--p flag, just as for the \fIpass\fR directive.
+\-p flag, just as for the \fIpass\fR directive.
 .PP
 \fIpass\fR and \fIpass_persist\fR extensions can only be configured via the
 snmpd.conf file.  They cannot be set up via SNMP SET requests.
@@ -1164,7 +1447,7 @@
 .PP
 Use of this mechanism requires that the agent was built with support for the embedded
 perl mechanism, which is not part of the default build environment. It
-must be explicitly included by specifying the '--enable-embedded-perl'
+must be explicitly included by specifying the '\-\-enable\-embedded\-perl'
 option to the configure script when the package is first built.
 .PP
 If enabled, the following directives will be recognised:
@@ -1189,7 +1472,7 @@
 .nf
 \fCperl use Data::Dumper;
 perl sub myroutine  { print "got called: ",Dumper(@_),"\\n"; }
-perl $agent->register('mylink', '.1.3.6.1.8765', \\&myroutine);\fR
+perl $agent\->register('mylink', '.1.3.6.1.8765', \\&myroutine);\fR
 .fi
 .RE
 .RE
@@ -1211,7 +1494,7 @@
 when the suite was first built.  Such implementation modules can also be
 compiled independently and loaded into the running agent once it has
 started.  Use of this mechanism requires that the agent was built with support for the
-\fIucd-snmp/dlmod\fR module (which is included as part of the default
+\fIucd\-snmp/dlmod\fR module (which is included as part of the default
 build configuration).
 .IP "dlmod NAME PATH"
 will load the shared object module from the file PATH (an absolute
@@ -1224,7 +1507,7 @@
 .RE
 .PP
 This functionality can also be configured using SNMP SET requests
-to the UCD-DLMOD-MIB.
+to the UCD\-DLMOD\-MIB.
 .SS "Proxy Support"
 Another mechanism for extending the functionality of the agent
 is to pass selected requests (or selected varbinds) to another
@@ -1233,9 +1516,9 @@
 This can be viewed either as the main agent delegating requests to
 the remote one, or acting as a proxy for it.
 Use of this mechanism requires that the agent was built with support for the
-\fIucd-snmp/proxy\fR module (which is included as part of the
+\fIucd\-snmp/proxy\fR module (which is included as part of the
 default build configuration).
-.IP "proxy [-Cn CONTEXTNAME] [SNMPCMD_ARGS] HOST OID [REMOTEOID]"
+.IP "proxy [\-Cn CONTEXTNAME] [SNMPCMD_ARGS] HOST OID [REMOTEOID]"
 will pass any incoming requests under OID to the agent listening
 on the port specified by the transport address HOST.
 See the section 
@@ -1274,7 +1557,7 @@
 with SMUX-based subagents (such as \fIgated\fR, \fIzebra\fR or \fIquagga\fR).
 Use of this mechanism requires that the agent was built with support for the
 \fIsmux\fR module, which is not part of the default build environment, and
-must be explicitly included by specifying the '--with-mib-modules=smux'
+must be explicitly included by specifying the '\-\-with\-mib\-modules=smux'
 option to the configure script when the package is first built.
 .RS
 .IP "Note:"
@@ -1301,7 +1584,7 @@
 .IP "smuxsocket <IPv4-address>"
 defines the IPv4 address for SMUX peers to communicate with the Net-SNMP agent.
 The default is to listen on all IPv4 interfaces ("0.0.0.0"), unless the 
-package has been configured with "--enable-local-smux" at build time, which 
+package has been configured with "\-\-enable\-local\-smux" at build time, which 
 causes it to only listen on 127.0.0.1 by default. SMUX uses the well-known
 TCP port 199.
 .PP
@@ -1320,7 +1603,7 @@
 .IP "master agentx"
 will enable the AgentX functionality and cause the agent to
 start listening for incoming AgentX registrations.
-This can also be activated by specifying the '-x' command-line
+This can also be activated by specifying the '\-x' command-line
 option (to specify an alternative listening socket).
 .IP "agentXPerms SOCKPERMS [DIRPERMS [USER|UID [GROUP|GID]]]"
 Defines the permissions and ownership of the AgentX Unix Domain socket,
@@ -1351,11 +1634,13 @@
 .RS
 .IP "Note:"
 Specifying an AgentX socket does \fBnot\fR automatically enable
-AgentX functionality (unlike the '-x' command-line option).
+AgentX functionality (unlike the '\-x' command-line option).
 .RE
 .IP "agentXTimeout NUM"
 defines the timeout period (NUM seconds) for an AgentX request.
-Default is 1 second.
+Default is 1 second.  NUM also be specified with a suffix of one of s
+(for seconds), m (for minutes), h (for hours), d (for days), or w (for
+weeks).
 .IP "agentXRetries NUM"
 defines the number of retries for an AgentX request.
 Default is 5 retries.
@@ -1363,9 +1648,9 @@
 net-snmp ships with both C and Perl APIs to develop your own AgentX
 subagent.
 .SH "OTHER CONFIGURATION"
-.IP "override [-rw] OID TYPE VALUE"
+.IP "override [\-rw] OID TYPE VALUE"
 This directive allows you to override a particular OID with a
-different value (and possibly a different type of value).  The -rw
+different value (and possibly a different type of value).  The \-rw
 flag will allow snmp SETs to modify it's value as well. (note that if
 you're overriding original functionality, that functionality will be
 entirely lost.  Thus SETS will do nothing more than modify the
@@ -1397,8 +1682,8 @@
 If you're trying to figure out aspects of the various mib modules
 (possibly some that you've added yourself), the following may help you
 spit out some useful debugging information.  First off, please read
-the snmpd manual page on the -D flag.  Then the following
-configuration snmpd.conf token, combined with the -D flag, can produce
+the snmpd manual page on the \-D flag.  Then the following
+configuration snmpd.conf token, combined with the \-D flag, can produce
 useful output:
 .IP "injectHandler HANDLER modulename [beforeThis]"
 This will insert new handlers into the section of the mib tree
@@ -1427,7 +1712,7 @@
 
 .IP debug
 Prints out lots of debugging information when
-the -Dhelper:debug flag is passed to the snmpd
+the \-Dhelper:debug flag is passed to the snmpd
 application.
 
 .IP read_only
@@ -1462,8 +1747,8 @@
 .IP o
 The Net-SNMP agent can be instructed to re-read the various configuration files,
 either via an \fBsnmpset\fR assignment of integer(1) to
-\fCUCD-SNMP-MIB::versionUpdateConfig.0\fR (.1.3.6.1.4.1.2021.100.11.0),
-or by sending a \fBkill -HUP\fR signal to the agent process.
+\fCUCD\-SNMP\-MIB::versionUpdateConfig.0\fR (.1.3.6.1.4.1.2021.100.11.0),
+or by sending a \fBkill \-HUP\fR signal to the agent process.
 .IP o
 All directives listed with a value of "yes" actually accept a range
 of boolean values.  These will accept any of \fI1\fR, \fIyes\fR or
@@ -1478,7 +1763,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..3602869 100644
--- a/man/snmpd.examples.5.def
+++ b/man/snmpd.examples.5.def
@@ -104,7 +104,7 @@
 PERSISTENT_DIRECTORY/snmpd.conf file, rather than the usual location.
 .RE
 .\"
-.\"  ??? Illustrate "-e", "-l" and "-m" forms ??
+.\"  ??? Illustrate "\-e", "\-l" and "\-m" forms ??
 .\"
 .SS Traditional Access Control
 The SNMPv3 users defined above can be granted access to the full
@@ -219,7 +219,7 @@
 view   sys2View included    system
 view   sys2View included    .1.3.6.1.2.1.25.1
 
-authcommunity read       public  default      -v sys2View
+authcommunity read       public  default      \-v sys2View
 authcommunity read,write private 10.10.10.0/8
 .fi
 .RE
@@ -238,12 +238,12 @@
 can be explicitly configured using:
 .RS
 .nf
-\fI# Override 'uname -a' and hardcoded system OID - inherently read-only values\fR
+\fI# Override 'uname \-a' and hardcoded system OID - inherently read-only values\fR
 sysDescr     Universal Turing Machine mk I
 sysObjectID  .1.3.6.1.4.1.8072.3.2.1066
 
 \fI# Override default values from 'configure' - makes these objects read-only\fR
-sysContact   Alan.Turing@pre-cs.man.ac.uk
+sysContact   Alan.Turing@pre\-cs.man.ac.uk
 sysName      tortoise.turing.com
 sysLocation  An idea in the mind of AT
 
@@ -262,7 +262,7 @@
 .RS
 .nf
 ignoredisk /dev/rdsk/c0t[!6]d0
-ignoredisk /dev/rdsk/c0t[0-57-9a-f]d0
+ignoredisk /dev/rdsk/c0t[0\-57\-9a\-f]d0
 .fi
 .RE
 either of which prevents all devices \fI/dev/rdsk/c0t\fRX\fId0\fR
@@ -388,7 +388,7 @@
 .PP
 A more detailed monitor example is given by:
 .RS
-monitor -u me -o hrSWRunName "high process memory" hrSWRunPerfMem > 10000
+monitor \-u me \-o hrSWRunName "high process memory" hrSWRunPerfMem > 10000
 .RE
 .PP
 This defines an explicit boolean monitor entry, looking for any process
@@ -402,7 +402,7 @@
 Objects that could potentially fluctuate around the specified level
 are better monitored using a threshold monitor entry: 
 .RS
-monitor -D -r 10 "network traffic" ifInOctets 1000000 5000000
+monitor \-D \-r 10 "network traffic" ifInOctets 1000000 5000000
 .RE
 .PP
 This will send a \fCmteTriggerRising\fR trap whenever the incoming
@@ -410,11 +410,11 @@
 and a corresponding \fCmteTriggerFalling\fR trap when it falls below
 100 kB/s again.
 .PP
-Note that this monitors the deltas between successive samples (\fI-D\fR)
+Note that this monitors the deltas between successive samples (\fI\-D\fR)
 rather than the actual sample values themselves.  The same effect
 could be obtained using:
 .RS
-monitor -r 10 "network traffic" ifInOctets - - 1000000 5000000
+monitor \-r 10 "network traffic" ifInOctets \- \- 1000000 5000000
 .RE
 .PP
 The \fIlinkUpDownNotifications\fR directive above is broadly
@@ -424,8 +424,8 @@
 notificationEvent  linkUpTrap    linkUp   ifIndex ifAdminStatus ifOperStatus
 notificationEvent  linkDownTrap  linkDown ifIndex ifAdminStatus ifOperStatus
 
-monitor  -r 60 -e linkUpTrap   "Generate linkUp"   ifOperStatus != 2
-monitor  -r 60 -e linkDownTrap "Generate linkDown" ifOperStatus == 2
+monitor  \-r 60 \-e linkUpTrap   "Generate linkUp"   ifOperStatus != 2
+monitor  \-r 60 \-e linkDownTrap "Generate linkDown" ifOperStatus == 2
 .fi
 .RE
 .PP
@@ -437,12 +437,12 @@
 of (boolean) monitor entries:
 .RS
 .nf
-monitor	-o prNames      -o prErrMessage  "procTable" prErrorFlag   != 0
-monitor	-o memErrorName -o memSwapErrorMsg "memory"  memSwapError  != 0
-monitor	-o extNames     -o extOutput     "extTable"  extResult     != 0
-monitor	-o dskPath      -o dskErrorMsg   "dskTable"  dskErrorFlag  != 0
-monitor	-o laNames      -o laErrMessage  "laTable"   laErrorFlag   != 0
-monitor	-o fileName     -o fileErrorMsg  "fileTable" fileErrorFlag != 0
+monitor	\-o prNames      \-o prErrMessage  "procTable" prErrorFlag   != 0
+monitor	\-o memErrorName \-o memSwapErrorMsg "memory"  memSwapError  != 0
+monitor	\-o extNames     \-o extOutput     "extTable"  extResult     != 0
+monitor	\-o dskPath      \-o dskErrorMsg   "dskTable"  dskErrorFlag  != 0
+monitor	\-o laNames      \-o laErrMessage  "laTable"   laErrorFlag   != 0
+monitor	\-o fileName     \-o fileErrorMsg  "fileTable" fileErrorFlag != 0
 .fi
 .RE
 and will send a trap whenever any of these entries indicate a problem.
@@ -452,7 +452,7 @@
 .RS
 .nf
 setEvent   prFixIt  prErrFix = 1
-monitor -e prFixIt "procTable" prErrorFlag   != 0
+monitor \-e prFixIt "procTable" prErrorFlag   != 0
 .fi
 .RE
 (and similarly for any of the other \fIdefaultMonitor\fR entries).
@@ -494,12 +494,12 @@
 .SS "MIB-Specific Extension Commands"
 .I One-Shot
 .RS
-"pass [-p priority] MIBOID PROG"
+"pass [\-p priority] MIBOID PROG"
 .RE
 .IP
 .I Persistent
 .RS
-"pass_persist [-p priority] MIBOID PROG"
+"pass_persist [\-p priority] MIBOID PROG"
 .RE
 .SS "Embedded Perl Support"
 If embedded perl support is enabled in the agent, the default
@@ -517,7 +517,7 @@
 .nf
 perl use Data::Dumper;
 perl sub myroutine  { print "got called: ",Dumper(@_),"\\n"; }
-perl $agent->register('mylink', '.1.3.6.1.8765', \\&myroutine);
+perl $agent\->register('mylink', '.1.3.6.1.8765', \\&myroutine);
 .fi
 .RE
 .PP
@@ -548,11 +548,11 @@
 SNMP agents (running on remote systems) might be:
 .RS
 .nf
-com2sec -Cn rem1context  rem1user default  remotehost1
-com2sec -Cn rem2context  rem2user default  remotehost2
+com2sec \-Cn rem1context  rem1user default  remotehost1
+com2sec \-Cn rem2context  rem2user default  remotehost2
 
-proxy -Cn rem1context  -v 1 -c public  remotehost1  .1.3
-proxy -Cn rem2context  -v 1 -c public  remotehost2  .1.3
+proxy \-Cn rem1context  \-v 1 -c public  remotehost1  .1.3
+proxy \-Cn rem2context  \-v 1 -c public  remotehost2  .1.3
 .fi
 .RE
 (plus suitable access control entries).
@@ -572,7 +572,7 @@
 or listening on a different port on the same system),
 while handling the rest internally:
 .RS
-proxy -v 1 -c public  localhost:6161  .1.3.6.1.4.1.99
+proxy \-v 1 \-c public  localhost:6161  .1.3.6.1.4.1.99
 .RE
 This mechanism can be used to link together two separate SNMP agents.
 .PP
@@ -582,7 +582,7 @@
 .nf
 \fI# uses SNMPv3 to access the MIB tree .1.3.6.1.2.1.1 on 'remotehost'
 # and maps this to the local tree .1.3.6.1.3.10\fR
-proxy -v 3 -l noAuthNoPriv -u user remotehost .1.3.6.1.3.10 .1.3.6.1.2.1.1
+proxy \-v 3 \-l noAuthNoPriv \-u user remotehost .1.3.6.1.3.10 .1.3.6.1.2.1.1
 .fi
 .RE
 .SS SMUX Sub-Agents
@@ -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..e95a69b 100644
--- a/man/snmpdelta.1.def
+++ b/man/snmpdelta.1.def
@@ -12,7 +12,7 @@
 snmpdelta \- Monitor delta differences in SNMP Counter values
 .SH SYNOPSIS
 .B snmpdelta
-[ COMMON OPTIONS ] [-Cf] [ -Ct ] [ -Cs ] [ -CS ] [ -Cm ] [ -CF configfile ] [ -Cl ] [ -Cp period ] [ -CP Peaks ] [ -Ck ] [ -CT ] AGENT OID [ OID ... ]
+[ COMMON OPTIONS ] [\-Cf] [ \-Ct ] [ \-Cs ] [ \-CS ] [ \-Cm ] [ \-CF configfile ] [ \-Cl ] [ \-Cp period ] [ \-CP Peaks ] [ \-Ck ] [ \-CT ] AGENT OID [ OID ... ]
 .SH "DESCRIPTION"
 .B snmpdelta
 will monitor the specified integer valued OIDs, and report changes
@@ -38,51 +38,51 @@
 for a list of possible values for COMMON OPTIONS
 as well as their descriptions.
 .TP
-.B -Cf
+.B \-Cf
 Don't fix errors and retry the request.
 Without this option, if multiple oids have been specified for
 a single request and if the request for one or more of the
 oids fails, snmpdelta will retry the request so that data for
 oids apart from the ones that failed will still be returned. 
-Specifying -Cf tells
+Specifying \-Cf tells
 .I  snmpdelta
 not to retry a request, even
 if there are multiple oids specified.
 .TP
-.B -Ct
+.B \-Ct
 Flag will determine time interval from the monitored entity.
 .TP
-.B -Cs
+.B \-Cs
 Flag will display a timestamp.
 .TP
-.B -CS
+.B \-CS
 Generates a "sum count" in addition to the individual instance
 counts.  The "sum count" is the total of all the individual
 deltas for each time period.
 .TP
-.B -Cm
+.B \-Cm
 Prints the max value ever attained.
 .TP
-.B -CF configfile
+.B \-CF configfile
 Tells
 .B snmpdelta
 to read it's configuration from the specified file.
 This options allows the input to be set up in advance rather
 than having to be specified on the command line.
 .TP
-.B -Cl
+.B \-Cl
 Tells
 .B snmpdelta
 to write it's configuration to files whose names correspond to the MIB
-instances monitored.  For example, snmpdelta -Cl localhost ifInOctets.1
-will create a file "localhost-ifInOctets.1".
+instances monitored.  For example, snmpdelta \-Cl localhost ifInOctets.1
+will create a file "localhost\-ifInOctets.1".
 .TP
-.B -Cp
+.B \-Cp
 Specifies the number of seconds between polling periods.
 Polling constitutes sending a request to the agent. The
 default polling period is one second.
 .TP
-.B -CP peaks
+.B \-CP peaks
 Specifies the reporting period in number of polling periods.
 If this option is specified, snmpdelta polls the agent
 .I peaks
@@ -91,24 +91,24 @@
 the reporting period. In addition, the highest polled
 value within the reporting period is shown.
 .TP
-.B -Ck
-When the polling period (-Cp) is an increment of 60 seconds
-and the timestamp is displayed in the output (-Cs), then
+.B \-Ck
+When the polling period (\-Cp) is an increment of 60 seconds
+and the timestamp is displayed in the output (\-Cs), then
 the default display shows the timestamp in the format
 hh:mm mm/dd. This option causes the timestamp format
 to be hh:mm:ss mm/dd.
 .TP
-.B -CT
+.B \-CT
 Makes 
 .B snmpdelta
 print its output in tabular form.
 .TP
-.B -Cv vars/pkt
+.B \-Cv vars/pkt
 Specifies the maximum number of oids allowed to be packaged
 in a single PDU. Multiple PDUs can be created in a single
 request. The default value of variables per packet is 60.
 This option is useful if a request response results in an
-error becaues the packet is too big.
+error because the packet is too big.
 .PP
 Note that
 .B snmpdelta
@@ -118,7 +118,7 @@
 manual page.
 .SH EXAMPLES
 .nf
-$ snmpdelta -c public -v 1 -Cs localhost IF-MIB::ifInUcastPkts.3 IF-MIB::ifOutUcastPkts.3
+$ snmpdelta \-c public \-v 1 \-Cs localhost IF\-MIB::ifInUcastPkts.3 IF\-MIB::ifOutUcastPkts.3
 [20:15:43 6/14] ifInUcastPkts.3 /1 sec: 158
 [20:15:43 6/14] ifOutUcastPkts.3 /1 sec: 158
 [20:15:44 6/14] ifInUcastPkts.3 /1 sec: 184
@@ -134,7 +134,7 @@
 [20:15:49 6/14] ifInUcastPkts.3 /1 sec: 158
 [20:15:49 6/14] ifOutUcastPkts.3 /1 sec: 158
 ^C
-$ snmpdelta -c public -v 1 -Cs -CT localhost IF-MIB:ifInUcastPkts.3 IF-MIB:ifOutcastPkts.3
+$ snmpdelta \-c public \-v 1 \-Cs \-CT localhost IF\-MIB:ifInUcastPkts.3 IF\-MIB:ifOutcastPkts.3
 localhost	ifInUcastPkts.3	ifOutUcastPkts.3
 [20:15:59 6/14]	184.00	184.00
 [20:16:00 6/14]	158.00	158.00
@@ -153,8 +153,8 @@
 screen.
 .PP
 .nf
-$ snmpdelta -c public -v 1 -Ct -Cs -CS -Cm -Cl -Cp 60 -CP 60
+$ snmpdelta \-c public \-v 1 \-Ct \-Cs \-CS \-Cm \-Cl \-Cp 60 \-CP 60
   interlink.sw.net.cmu.edu .1.3.6.1.2.1.2.2.1.16.3 .1.3.6.1.2.1.2.2.1.16.4
-fi
+.fi
 .SH "SEE ALSO"
 snmpcmd(1), variables(5).
diff --git a/man/snmpdf.1.def b/man/snmpdf.1.def
index 7653347..406845a 100644
--- a/man/snmpdf.1.def
+++ b/man/snmpdf.1.def
@@ -7,19 +7,19 @@
 .\" Use is subject to license terms specified in the COPYING file
 .\" distributed with the Net-SNMP package.
 .\" ******************************************************************/
-.TH SNMPDF 1 "25 Jul 2003" VVERSIONINFO "Net-SNMP"
+.TH SNMPDF 1 "28 Jan 2013" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmpdf - display disk space usage on a network entity via SNMP
 .SH SYNOPSIS
 .B snmpdf
-[COMMON OPTIONS] [-Cu] AGENT
+[COMMON OPTIONS] [\-Cu] [\-Ch] AGENT
 .SH DESCRIPTION
 .B snmpdf
-is simply a networked verison of the typical df command.  It
+is simply a networked version of the typical df command.  It
 checks the disk space on the remote machine by examining the
-HOST-RESOURCES-MIB's hrStorageTable or the UCD-SNMP-MIB's dskTable.
+HOST\-RESOURCES\-MIB's hrStorageTable or the UCD\-SNMP\-MIB's dskTable.
 By default, the hrStorageTable is preferred as it typically contains
-more information.  However, the -Cu argument can be passed to snmpdf
+more information.  However, the \-Cu argument can be passed to snmpdf
 to force the usage of the dskTable.
 .PP
 AGENT identifies a target SNMP agent, which is instrumented
@@ -44,16 +44,22 @@
 for a list of possible values for COMMON OPTIONS
 as well as their descriptions.
 .TP
-.B -Cu
+.B \-Cu
 Forces the command to use dskTable in mib
-UCD-SNMP-MIB instead of the default to determine
+UCD\-SNMP\-MIB instead of the default to determine
 the storage information. Generally, the default
-use of hrStorageTable in mib HOST-RESOURCES-MIB
+use of hrStorageTable in mib HOST\-RESOURCES\-MIB
 is preferred because it typically contains
 more information.
+.TP
+.B \-Ch
+Print sizes in human readable format (i.e. MiB, GiB, TiB)
+.TP
+.B \-CH
+Print sizes in human readable SI format (i.e. MB, GB, TB)
 .SH "EXAMPLES"
 .PP
-% snmpdf -v 2c -c public localhost
+% snmpdf \-v 2c \-c public localhost
 .PP
 .nf
 Description       size (kB)         Used    Available Used%
diff --git a/man/snmpget.1.def b/man/snmpget.1.def
index eabe902..0ecac19 100644
--- a/man/snmpget.1.def
+++ b/man/snmpget.1.def
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
-.\" Portions of this file are subject to the following copyright. 
-.\" See the Net-SNMP COPYING file for more details and other
-.\" copyrights that may apply:
+.\" Portions of this file are subject to the following copyright.  See
+.\" the Net-SNMP COPYING file for more details and other copyrights
+.\" that may apply:
 .\" /***********************************************************
 .\" 	Copyright 1988, 1989 by Carnegie Mellon University
 .\" 
@@ -28,7 +28,7 @@
 snmpget - communicates with a network entity using SNMP GET requests
 .SH SYNOPSIS
 .B snmpget
-[COMMON OPTIONS] [-Cf] AGENT OID [OID]...
+[COMMON OPTIONS] [\-Cf] AGENT OID [OID]...
 .SH DESCRIPTION
 .B snmpget
 is an SNMP application that uses the SNMP GET request to query for
@@ -38,9 +38,9 @@
 .IR variables(5) .
 .SH "OPTIONS"
 .TP 8
-.B -Cf
+.B \-Cf
 If
-.B -Cf
+.B \-Cf
 is
 .I not
 specified, some applications
@@ -55,14 +55,14 @@
 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
-    snmpget -c public zeus system.sysDescr.0
+    snmpget \-c public zeus system.sysDescr.0
 .PP
 will retrieve the variable system.sysDescr.0 from the host 
 .B zeus 
@@ -78,13 +78,13 @@
 variables in the request, the request will be resent without the bad
 variable.
 .PP
-Here is another example. The -c and -v options are defined in the 
+Here is another example. The \-c and \-v options are defined in the 
 .I snmpcmd(1)
 manual page. (Note that system.sysUpTime is an incomplete
 OID, as it needs the .0 index appended to it):
 .PP
 .nf
-    snmpget -v1 -Cf -c public localhost system.sysUpTime system.sysContact.0
+    snmpget \-v1 \-Cf \-c public localhost system.sysUpTime system.sysContact.0
 .fi
 .PP
 This example will return the following:
@@ -97,7 +97,7 @@
 .PP
 Similarly, the command:
 .nf
-    snmpget -v1 -c public localhost system.sysUpTime system.sysContact.0
+    snmpget \-v1 \-c public localhost system.sysUpTime system.sysContact.0
 .fi
 .PP
 Will return:
@@ -112,7 +112,7 @@
 .PP
 With the
 .B
--Cf
+\-Cf
 flag specified the application will not try to fix the PDU for you.
 .SH "SEE ALSO"
 snmpcmd(1), snmpwalk(1), variables(5).
diff --git a/man/snmpgetnext.1.def b/man/snmpgetnext.1.def
index 3b13d4d..e6c6e60 100644
--- a/man/snmpgetnext.1.def
+++ b/man/snmpgetnext.1.def
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
-.\" Portions of this file are subject to the following copyright. 
-.\" See the Net-SNMP COPYING file for more details and other
-.\" copyrights that may apply:
+.\" Portions of this file are subject to the following copyright.  See
+.\" the Net-SNMP COPYING file for more details and other copyrights
+.\" that may apply:
 .\" /***********************************************************
 .\" 	Copyright 1988, 1989 by Carnegie Mellon University
 .\" 
@@ -28,9 +28,9 @@
 snmpgetnext - communicates with a network entity using SNMP GETNEXT requests
 .SH SYNOPSIS
 .B snmpgetnext
-[COMMON OPTIONS] [-Cf] AGENT OID [OID]...
+[COMMON OPTIONS] [\-Cf] AGENT OID [OID]...
 .SH DESCRIPTION
-.B snmpget
+.B snmpgetnext
 is an SNMP application that uses the SNMP GETNEXT request to query for
 information on a network entity.  One or more object identifiers
 (OIDs) may be given as arguments on the command line.  Each variable
@@ -41,7 +41,7 @@
 .PP
 For example:
 .PP
-snmpgetnext -c public zeus interfaces.ifTable.ifEntry.ifType.1
+snmpgetnext \-c public zeus interfaces.ifTable.ifEntry.ifType.1
 .PP
 will retrieve the variable interfaces.ifTable.ifEntry.ifType.2:
 .PP
@@ -50,11 +50,11 @@
 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
+.B \-Cf
 If
-.B -Cf
+.B \-Cf
 is
 .I not
 specified, some applications
@@ -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/snmpnetstat.1.def b/man/snmpnetstat.1.def
index 8e1450a..450ab7f 100644
--- a/man/snmpnetstat.1.def
+++ b/man/snmpnetstat.1.def
@@ -12,7 +12,7 @@
 .\" both that copyright notice and this permission notice appear in 
 .\" supporting documentation, and that the name of CMU not be
 .\" used in advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.  
+.\" software without specific, written prior permission.
 .\" 
 .\" CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
 .\" ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
@@ -58,21 +58,21 @@
 .\" Use is subject to license terms specified in the COPYING file
 .\" distributed with the Net-SNMP package.
 .\" ******************************************************************/
-.TH SNMPNETSTAT 1 "20 Jan 2010" VVERSIONINFO "Net-SNMP"
+.TH SNMPNETSTAT 1 "04 Nov 2013" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmpnetstat \- display networking status and configuration information from a network entity via SNMP
 .SH SYNOPSIS
 .B snmpnetstat
-[COMMON OPTIONS] [-Ca] [-Cn] AGENT
+[COMMON OPTIONS] [\-Ca] [\-Cn] [\-Cv] [\-Cf address_family] AGENT
 .br
 .B snmpnetstat
-[COMMON OPTIONS] [-Ci] [-Co] [-Cr] [-Cn] [-Cs] AGENT
+[COMMON OPTIONS] [\-Cr] [\-Cn] [\-Cv] [\-Cf address_family] AGENT
 .br
 .B snmpnetstat
-[COMMON OPTIONS] [-Ci] [-Cn] [-CI interface] AGENT [interval]
+[COMMON OPTIONS] [\-Ci] [\-C o | b | d] [\-Cn] [\-Cv] [\-CI interface] [\-Cw interval] AGENT
 .br
 .B snmpnetstat
-[COMMON OPTIONS] [-Ca] [-Cn] [-Cs] [-Cp protocol] AGENT
+[COMMON OPTIONS] [\-Cs[s]] [\-Cp protocol] AGENT
 .SH DESCRIPTION
 The
 .B snmpnetstat 
@@ -91,6 +91,12 @@
 traffic on the configured network interfaces.
 The fourth form displays statistics about the named protocol.
 .PP
+.B snmpnetstat
+will issue GETBULK requests to query for information
+if at least protocol version
+.I v2
+is used.
+.PP
 AGENT identifies a target SNMP agent, which is
 instrumented to monitor the given objects.
 At its simplest, the AGENT specification will
@@ -109,18 +115,32 @@
 for a list of possible values for common options
 as well as their descriptions.
 .PP
+.B \-CL
+use the legacy SNMP MIB elements, not the modern IP version agnostic
+tables. \fIsnmpnetstat\fR  will automatically fall back to the legacy
+tables if the modern ones are not available.
+.PP
 .B \-Ca
 With the default display,
 show the state of all sockets; normally sockets used by
 server processes are not shown.
 .PP
+.BI \-Cf " address_family"
+Only show entries for the selected address family (inet, inet6)
+.PP
 .B \-Ci
 Show the state of all of the network interfaces.
-The  interface  display  provides  a  table  of cumulative
+The interface display provides a table of cumulative
 statistics regarding packets transferred, errors, and collisions.
-The  network addresses of the interface and the maximum transmission 
+The network addresses of the interface and the maximum transmission 
 unit (``mtu'') are also displayed.
 .PP
+.B \-Cd
+Add dropped packets to the interface display.
+.PP
+.B \-Cb
+Show an extended interface status, giving octets in addition to packets.
+.PP
 .B \-Co
 Show an abbreviated interface status, giving octets in place of packets.
 This is useful when enquiring virtual interfaces (such as Frame-Relay circuits)
@@ -139,6 +159,10 @@
 symbolically).
 This option may be used with any of the display formats.
 .PP
+.B \-Cv
+Allow long host or service names to break the columnar output.
+This option may be used with any of the display formats.
+.PP
 .BI \-Cp " protocol"
 Show statistics about 
 .IR protocol,
@@ -152,19 +176,20 @@
 is unknown or if there is no statistics routine for it.
 .PP
 .B \-Cs
-Show per-protocol statistics.  When used with the
-.B \-Cr
-option, show routing statistics instead.
+Show per-protocol statistics.
+If this is duplicated (-Css) statistics entries which are zero will
+be suppressed.
 .PP
 .B \-Cr
 Show the routing tables.
-When
-.B \-Cs
-is also present, show per-protocol routing statistics instead of 
-the routing tables.
 .PP
-When  snmpnetstat is invoked with an interval argument, it
-displays a running count of statistics related to  network
+.BI \-CR " repeaters"
+For GETBULK requests,
+.I repeaters
+specifies the max-repeaters value to use.
+.PP
+When snmpnetstat is invoked with an interval argument, it
+displays a running count of statistics related to network
 interfaces.
 .I interval
 is the number of seconds between
@@ -173,43 +198,43 @@
 .I The Active Sockets Display (default)
 .PP
 The default display, for active sockets, shows the local
-and remote addresses, protocol, and the internal state  of
-the   protocol.    Address   formats   are   of  the  form
-``host.port'' or ``network.port'' if  a  socket's  address
-specifies  a  network  but no specific host address.  When
+and remote addresses, protocol, and the internal state of
+the protocol.  Address formats are of the form
+``host.port'' or ``network.port'' if a socket's address
+specifies a network but no specific host address.  When
 known, the host and network addresses are displayed symbolically
-according   to  the  data  bases 
-.I /etc/hosts  and
+according to the databases 
+.I /etc/hosts and
 .IR /etc/networks,
-respectively.  If a symbolic  name  for  an
-address  is unknown, or if the
+respectively.  If a symbolic name for an
+address is unknown, or if the
 .B \-Cn
 option is specified, the
-address is printed numerically, according to  the  address
+address is printed numerically, according to the address
 family.  For more information regarding the Internet ``dot
-format,'' refer  to
+format,'' refer to
 .IR inet(3N).
-Unspecified,  or  ``wildcard'', addresses and ports appear as ``*''.
+Unspecified, or ``wildcard'', addresses and ports appear as ``*''.
 .PP
 .I The Interface Display
 .PP
-The  interface  display  provides  a  table  of cumulative
+The interface display provides a table of cumulative
 statistics regarding packets transferred, errors, and col-
-lisions.   The  network addresses of the interface and the
+lisions.  The network addresses of the interface and the
 maximum transmission unit (``mtu'') are also displayed.
 .PP
 .I The Routing Table Display
 .PP
-The routing table display indicates the  available  routes
-and  their  status.   Each route consists of a destination
-host or network and a gateway to use in  forwarding  pack-
-ets.   The flags field shows the state of the route (``U''
-if ``up''), whether the route is  to  a  gateway  (``G''),
-whether  the  route  was created dynamically by a redirect
-(``D''), and whether the route  has  been  modified  by  a
-redirect  (``M'').   Direct  routes  are  created for each
-interface attached to the local host;  the  gateway  field
-for  such entries shows the address of the outgoing inter-
+The routing table display indicates the available routes
+and their status.  Each route consists of a destination
+host or network and a gateway to use in forwarding pack-
+ets.  The flags field shows the state of the route (``U''
+if ``up''), whether the route is to a gateway (``G''),
+whether the route was created dynamically by a redirect
+(``D''), and whether the route has been modified by a
+redirect (``M'').  Direct routes are created for each
+interface attached to the local host; the gateway field
+for such entries shows the address of the outgoing inter-
 face.  The interface entry indicates the network interface
 utilized for the route.
 .PP
@@ -220,10 +245,10 @@
 is invoked with an
 .I interval
 argument, it
-displays a running count of statistics related to  network
-interfaces.   This  display  consists  of a column for the
+displays a running count of statistics related to network
+interfaces.  This display consists of a column for the
 primary interface and a column summarizing information for
-all  interfaces.   The  primary  interface may be replaced
+all interfaces.  The primary interface may be replaced
 with another interface with the
 .B \-CI
 option.  The first line
@@ -243,7 +268,7 @@
 .SH EXAMPLES
 Example of using snmpnetstat to display active sockets (default):
 .PP
-% snmpnetstat -v 2c -c public -Ca testhost
+% snmpnetstat \-v 2c \-c public \-Ca testhost
 .PP
 .nf
 Active Internet (tcp) Connections (including servers)
@@ -267,7 +292,7 @@
 \&...
 .fi
 .PP
-% snmpnetstat -v 2c -c public -Ci testhost
+% snmpnetstat \-v 2c \-c public \-Ci testhost
 .PP
 .nf
 Name     Mtu Network    Address          Ipkts   Ierrs    Opkts Oerrs Queue
@@ -278,7 +303,7 @@
 Example of using snmpnetstat to show statistics about a specific protocol:
 .PP
 .nf
-% snmpnetstat -v 2c -c public -Cp tcp testhost
+% snmpnetstat \-v 2c \-c public \-Cp tcp testhost
 
 Active Internet (tcp) Connections
 Proto Local Address                Foreign Address                 (state)
diff --git a/man/snmpset.1.def b/man/snmpset.1.def
index 346ae3a..b0c4e07 100644
--- a/man/snmpset.1.def
+++ b/man/snmpset.1.def
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
-.\" Portions of this file are subject to the following copyright. 
-.\" See the Net-SNMP COPYING file for more details and other
-.\" copyrights that may apply:
+.\" Portions of this file are subject to the following copyright.  See
+.\" the Net-SNMP COPYING file for more details and other copyrights
+.\" that may apply:
 .\" /***********************************************************
 .\" 	Copyright 1988, 1989 by Carnegie Mellon University
 .\" 
@@ -86,13 +86,13 @@
 .PP
 For example:
 .PP
-snmpset -c private -v 1 test-hub system.sysContact.0 s dpz@noc.rutgers.edu ip.ipforwarding.0 = 2
+snmpset \-c private \-v 1 test\-hub system.sysContact.0 s dpz@noc.rutgers.edu ip.ipforwarding.0 = 2
 .PP
 will set the variables sysContact.0 and ipForwarding.0:
 .PP
 system.sysContact.0 = STRING: "dpz@noc.rutgers.edu"
 .br
-ip.ipForwarding.0 = INTEGER: not-forwarding(2)
+ip.ipForwarding.0 = INTEGER: not\-forwarding(2)
 .PP
 If the network entity has an error processing the request packet, an
 error packet will be returned and a message will be shown, helping to
diff --git a/man/snmpstatus.1.def b/man/snmpstatus.1.def
index bba48b3..1126146 100644
--- a/man/snmpstatus.1.def
+++ b/man/snmpstatus.1.def
@@ -32,7 +32,7 @@
 snmpstatus - retrieves a fixed set of management information from a network entity
 .SH SYNOPSIS
 .B snmpstatus
-[COMMON OPTIONS] [-Cf] AGENT
+[COMMON OPTIONS] [\-Cf] AGENT
 .SH DESCRIPTION
 .B snmpstatus
 is an SNMP application that retrieves several important statistics
@@ -68,7 +68,7 @@
 .PP
 For example:
 .PP
-snmpstatus -c public -v 1 netdev-kbox.cc.cmu.edu
+snmpstatus \-c public \-v 1 netdev\-kbox.cc.cmu.edu
 .PP
 will produce output similar to the following:
 .PP
@@ -90,7 +90,7 @@
 .B snmpstatus
 will attempt to reform its request to eliminate the malformed
 variable (unless the
-.B -Cf
+.B \-Cf
 option is given, see below), but this variable will then be missing
 from the displayed data.
 .PP
@@ -102,10 +102,10 @@
 for a list of possible values for COMMON OPTIONS
 as well as their descriptions.
 .TP
-.B -Cf
+.B \-Cf
 By default, snmpstatus will try to fix errors returned
 by the agent and retry a request. In this situation,
-the command will display the data that it can. If the -Cf option
+the command will display the data that it can. If the \-Cf option
 is specified, then snmpstatus will not try to fix
 errors, and the error will cause the command to terminate.
 .SH "SEE ALSO"
diff --git a/man/snmptable.1.def b/man/snmptable.1.def
index 575b034..4e65cb4 100644
--- a/man/snmptable.1.def
+++ b/man/snmptable.1.def
@@ -20,28 +20,21 @@
 .\" Use is subject to license terms specified in the COPYING file
 .\" distributed with the Net-SNMP package.
 .\" ******************************************************************/
-.TH SNMPTABLE 1 "06 Sep 2003" VVERSIONINFO "Net-SNMP"
+.TH SNMPTABLE 1 "25 Jul 2003" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmptable - retrieve an SNMP table and display it in tabular form
 .SH SYNOPSIS
 .B snmptable
-[COMMON OPTIONS] [-Cb] [-CB] [-Ch] [-CH] [-Ci] [-Cf STRING] [-Cw WIDTH]
-AGENT TABLE-OID
+[COMMON OPTIONS] [\-Cb] [\-CB] [\-Ch] [\-CH] [\-Ci] [\-Cf STRING] [\-Cw WIDTH]
+AGENT TABLE\-OID
 .SH DESCRIPTION
 .B snmptable
 is an SNMP application that repeatedly uses the SNMP GETNEXT or
 GETBULK requests to query for information on a network entity.  The
-parameter
-.I TABLE-OID
-must specify an SNMP table.
-.PP
-snmptable is an SNMP application that repeatedly uses the
-SNMP GETNEXT or GETBULK requests to query for  information
-on a network entity.  The parameter TABLE-OID must specify
-an SNMP table.
+parameter TABLE\-OID must specify an SNMP table.
 
 AGENT identifies a target SNMP agent, which is instrumented
-to monitor the gievn objects.  At its simplest, the AGENT
+to monitor the given objects.  At its simplest, the AGENT
 specification will consist of a hostname or an IPv4
 address.  In this situation, the command will attempt
 communication with the agent, using UDP/IPv4 to port 161
@@ -57,19 +50,19 @@
 for a list of possible values for COMMON OPTIONS
 as well as their descriptions.
 .TP
-.B -Cb
+.B \-Cb
 Display only a brief heading. Any common prefix of the table field
 names will be deleted.
 .TP 
-.B -CB
+.B \-CB
 Do not use GETBULK requests to retrieve data, only GETNEXT.
 .TP 
-.BI -Cc " CHARS"
+.BI \-Cc " CHARS"
 Print table in columns of
 .I CHARS
 characters width.
 .TP
-.BI -Cf " STRING"
+.BI \-Cf " STRING"
 The string
 .I STRING
 is used to separate table columns.  With this option, each table entry
@@ -77,28 +70,28 @@
 separate the columns (useful if you want to import it into a
 database).  Otherwise it is printed in nicely aligned columns.
 .TP
-.B -Ch
+.B \-Ch
 Display
 .I only
 the column headings.
 .TP
-.B -CH
+.B \-CH
 Do not display the column headings.
 .TP
-.B -Ci
+.B \-Ci
 This option prepends the index of the entry to all printed lines.
 .TP
-.B -Cl
+.B \-Cl
 Left justify the data in each column.
 .TP 
-.BI -Cr " REPEATERS"
+.BI \-Cr " REPEATERS"
 For GETBULK requests, 
 .I REPEATERS
 specifies the max-repeaters value to use.  For GETNEXT requests,
 .I REPEATERS
 specifies the number of entries to retrieve at a time.
 .TP 
-.BI -Cw " WIDTH"
+.BI \-Cw " WIDTH"
 Specifies the width of the lines when the table is printed.
 If the lines will be longer, the table will be printed in sections of
 at most 
@@ -115,14 +108,14 @@
 .I snmpcmd(1)
 manual page.  This OID \fBmust\fP be that of a MIB table object.
 .SH EXAMPLES
-$ snmptable -v 2c -c public localhost at.atTable
+$ snmptable \-v 2c \-c public localhost at.atTable
 
-SNMP table: at.atTable RFC1213-MIB::atTable
+SNMP table: at.atTable RFC1213\-MIB::atTable
 
 atIfIndex   atPhysAddress   atNetAddress
         1  8:0:20:20:0:ab 130.225.243.33
 .PP
-$ snmptable -v 2c -c public -Cf + localhost at.atTable
+$ snmptable \-v 2c \-c public \-Cf + localhost at.atTable
 
 SNMP table: at.atTable
 
@@ -130,7 +123,7 @@
 1+8:0:20:20:0:ab+130.225.243.33
 .PP
 .nf
-$ snmptable localhost -Cl -CB -Ci -OX -Cb -Cc 16 -Cw 64 ifTable
+$ snmptable localhost \-Cl \-CB \-Ci \-OX \-Cb \-Cc 16 \-Cw 64 ifTable
 
 SNMP table: ifTable
 
@@ -159,7 +152,7 @@
 .PP
 .SH "BUGS"
 The test for
-.I TABLE-OID
+.I TABLE\-OID
 actually specifying a table is rather heuristic.  Note also that the
 test requires the defining MIB file to be loaded.
 .PP
diff --git a/man/snmptest.1.def b/man/snmptest.1.def
index c1edb48..dfdaed8 100644
--- a/man/snmptest.1.def
+++ b/man/snmptest.1.def
@@ -27,7 +27,7 @@
 .\" Use is subject to license terms specified in the COPYING file
 .\" distributed with the Net-SNMP package.
 .\" ******************************************************************/
-.TH SNMPTEST 1 "06 Sep 2003" VVERSIONINFO "Net-SNMP"
+.TH SNMPTEST 1 "25 Jul 2003" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmptest - communicates with a network entity using SNMP requests
 .SH SYNOPSIS
@@ -62,7 +62,7 @@
 .IR variables(5) .
 For example:
 .PP
-snmptest -c public -v 1 zeus
+snmptest \-c public \-v 1 zeus
 .br
 .BR Variable: " system.sysDescr.0"
 .br
@@ -114,7 +114,7 @@
 .PP
 GETNEXT Request:
 .PP
-The "GETNEXT request" mode ($N) is simlar to the "Get request"
+The "GETNEXT request" mode ($N) is similar to the "Get request"
 mode, described above.
 .PP
 SET Request:
@@ -175,7 +175,7 @@
 .PP
 The following is an example of sending a GET request for two OIDs:
 .PP
-% snmptest -v 2c -c public testhost:9999
+% snmptest \-v 2c \-c public testhost:9999
 .PP
 .nf
 Variable: system.sysDescr.0
@@ -183,18 +183,18 @@
 Variable:
 Received Get Response from 128.2.56.220
 requestid 0x7D9FCD63 errstat 0x0 errindex 0x0
-SNMPv2-MIB::sysDescr.0 = STRING: SunOS testhost 5.9 Generic_112233-02 sun4u
-SNMPv2-MIB::sysContact.0 = STRING: x1111
+SNMPv2\-MIB::sysDescr.0 = STRING: SunOS testhost 5.9 Generic_112233\-02 sun4u
+SNMPv2\-MIB::sysContact.0 = STRING: x1111
 .fi
 .PP
 The following is an example of sending a GETNEXT request:
 .PP
 .nf
-Variable: SNMPv2-MIB::sysORUpTime
+Variable: SNMPv2\-MIB::sysORUpTime
 Variable:
 Received Get Response from 128.2.56.220
 requestid 0x7D9FCD64 errstat 0x0 errindex 0x0
-SNMPv2-MIB::sysORUpTime.1 = Timeticks: (6) 0:00:00.06
+SNMPv2\-MIB::sysORUpTime.1 = Timeticks: (6) 0:00:00.06
 Variable:
 .fi
 .PP
@@ -209,7 +209,7 @@
 Variable:
 Received Get Response from 128.2.56.220
 requestid 0x7D9FCD65 errstat 0x0 errindex 0x0
-SNMPv2-MIB::sysLocation.0 = STRING: building A
+SNMPv2\-MIB::sysLocation.0 = STRING: building A
 Variable:
 .fi
 .PP
@@ -228,17 +228,17 @@
 What repeat count? 2
 Received Get Response from 128.2.56.220
 requestid 0x2EA7942A errstat 0x0 errindex 0x0
-SNMPv2-MIB::sysName.0 = STRING: testhost
-SNMPv2-MIB::sysORLastChange.0 = Timeticks: (58) 0:00:00.58
-SNMPv2-MIB::sysLocation.0 = STRING: bldg A
-SNMPv2-MIB::sysORID.1 = OID: IF-MIB::ifMIB
+SNMPv2\-MIB::sysName.0 = STRING: testhost
+SNMPv2\-MIB::sysORLastChange.0 = Timeticks: (58) 0:00:00.58
+SNMPv2\-MIB::sysLocation.0 = STRING: bldg A
+SNMPv2\-MIB::sysORID.1 = OID: IF\-MIB::ifMIB
 Variable:
 .fi
 .PP
 The following is an example of sending an Inform request:
 .PP
 .nf
-snmptest -v 2c -c public snmptrapd_host
+snmptest \-v 2c \-c public snmptrapd_host
 Variable: $I
 Request type is Inform Request
 (Are you sending to the right port?)
@@ -252,13 +252,13 @@
 .PP
 The snmptrapd_host will show:
 .PP
-snmptrapd_host [<ip address>]: Trap SNMPv2-MIB::sysContact.0 = STRING:
+snmptrapd_host [<ip address>]: Trap SNMPv2\-MIB::sysContact.0 = STRING:
 x12345
 .PP
 The following is an example of sending an SNMPv2 Trap request:
 .PP
 .nf
-snmptest -v 2c -c public snmptrapd_host
+snmptest \-v 2c \-c public snmptrapd_host
 Variable: $T
 Request type is SNMPv2 Trap Request
 (Are you sending to the right port?)
@@ -271,7 +271,7 @@
 The snmptrapd_host will show:
 .PP
 .nf
-snmptrapd_host [<ip address>]: Trap SNMPv2-MIB::sys.0 = STRING:
+snmptrapd_host [<ip address>]: Trap SNMPv2\-MIB::sys.0 = STRING:
 building a
 .fi
 .SH "SEE ALSO"
diff --git a/man/snmptranslate.1.def b/man/snmptranslate.1.def
index 0f31a55..721af99 100644
--- a/man/snmptranslate.1.def
+++ b/man/snmptranslate.1.def
@@ -27,7 +27,7 @@
 .\" Use is subject to license terms specified in the COPYING file
 .\" distributed with the Net-SNMP package.
 .\" ******************************************************************/
-.TH SNMPTRANSLATE 1 "20 Jul 2010" VVERSIONINFO "Net-SNMP"
+.TH SNMPTRANSLATE 1 "13 Nov 2013" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmptranslate - translate MIB OID names between numeric and textual forms
 .SH SYNOPSIS
@@ -42,17 +42,17 @@
 OID is either a numeric or textual object identifier.
 .SH OPTIONS
 .TP 8
-.B -D\fI[TOKEN[,...]]
+.B \-D\fI[TOKEN[,...]]
 Turn on debugging output for the given
 .IR "TOKEN" "(s)."
 Try
 .IR ALL
 for extremely verbose output.
 .TP
-.B -h
+.B \-h
 Display a brief usage message and then exit.
 .TP
-.BI -m " MIBLIST"
+.BI \-m " MIBLIST"
 Specifies a colon separated list of MIB modules to load for this
 application.  This overrides the environment variable MIBS.
 .IP
@@ -62,17 +62,20 @@
 files.  Every file whose name does not begin with "." will be parsed as
 if it were a MIB file.
 .TP
-.BI -M " DIRLIST"
+.BI \-M " DIRLIST"
 Specifies a colon separated list of directories to search for MIBs.
 This overrides the environment variable MIBDIRS.
 .TP
-.BI -T " TRANSOPTS"
+.BI \-T " TRANSOPTS"
 Provides control over the translation of the OID values.  The
 following
 .I TRANSOPTS
 are available:
 .RS
 .TP 6
+.B \-TB
+Print all matching objects for a regex search.
+.TP
 .B \-Td
 Print full details of the specified OID.
 .TP
@@ -98,24 +101,24 @@
 Dump a numeric and labeled form of all objects (compatible with MIB2SCHEMA format).
 .RE
 .TP
-.B -V
+.B \-V
 Display version information for the application and then exit.
 .TP
-.BI -w " WIDTH"
+.BI \-w " WIDTH"
 Specifies the width of
-.B -Tp
+.B \-Tp
 and
-.B -Td
+.B \-Td
 output. The default is very large.
 .PP
 In addition to the above options, 
 .B snmptranslate
 takes the OID input 
-.RB ( -I ),
+.RB ( \-I ),
 MIB parsing
-.RB ( -M )
+.RB ( \-M )
 and OID output
-.RB ( -O )
+.RB ( \-O )
 options described in the 
 .BR "INPUT OPTIONS" ", " "MIB PARSING OPTIONS" " and " "OUTPUT OPTIONS"
 sections of the
@@ -123,40 +126,40 @@
 manual page.
 .SH EXAMPLES
 .IP \(bu 4
-snmptranslate -On -IR sysDescr
+snmptranslate \-On \-IR sysDescr
 .br
 will translate "sysDescr" to a more qualified form:
 .IP
 system.sysDescr
 .IP \(bu 4
-snmptranslate -Onf -IR sysDescr
+snmptranslate \-Onf \-IR sysDescr
 .br
 will translate "sysDecr" to:
 .IP
-.RI .iso.org.dod.internet.mgmt.mib-2.system.sysDescr
+.RI .iso.org.dod.internet.mgmt.mib\-2.system.sysDescr
 .IP \(bu 4 
-snmptranslate -Td -OS system.sysDescr
+snmptranslate \-Td \-OS system.sysDescr
 .br
 will translate "sysDecr" into:
 .IP
 .nf
-SNMPv2-MIB::sysDescr
-sysDescr OBJECT-TYPE
-  -- FROM SNMPv2-MIB
-  -- TEXTUAL CONVENTION DisplayString
+SNMPv2\-MIB::sysDescr
+sysDescr OBJECT\-TYPE
+  \-\- FROM SNMPv2\-MIB
+  \-\- TEXTUAL CONVENTION DisplayString
   SYNTAX OCTET STRING (0..255)
-  DISPLAY-HINT "255a"
-  MAX-ACCESS read-only
+  DISPLAY\-HINT "255a"
+  MAX\-ACCESS read\-only
   STATUS current
   DESCRIPTION "A textual description of the entity. This
                value should include the full name and
                version identification of the system's
-               hardware type, software operating-system,
+               hardware type, software operating\-system,
                and networking software."
-::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) 1 }
+::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib\-2(1) system(1) 1 }
 .fi
 .IP \(bu 4 
-snmptranslate -Tp -OS system
+snmptranslate \-Tp \-OS system
 .br
 will print the following tree:
 .IP
@@ -196,7 +199,7 @@
 .fi
 .PP
 .IP \(bu 4
-snmptranslate -Ta | head
+snmptranslate \-Ta | head
 .br
 will produce the following dump:
 .IP
@@ -214,7 +217,7 @@
 .fi
 .PP
 .IP \(bu 4
-snmptranslate -Tl | head
+snmptranslate \-Tl | head
 .br
 will produce the following dump:
 .IP
@@ -224,15 +227,15 @@
 .RI .iso(1).org(3).dod(6).internet(1)
 .RI .iso(1).org(3).dod(6).internet(1).directory(1)
 .RI .iso(1).org(3).dod(6).internet(1).mgmt(2)
-.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1)
-.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).system(1)
-.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).system(1).sysDescr(1)
-.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).system(1).sysObjectID(2)
-.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).system(1).sysUpTime(3)
+.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib\-2(1)
+.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib\-2(1).system(1)
+.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib\-2(1).system(1).sysDescr(1)
+.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib\-2(1).system(1).sysObjectID(2)
+.RI .iso(1).org(3).dod(6).internet(1).mgmt(2).mib\-2(1).system(1).sysUpTime(3)
 .fi
 .PP
 .IP \(bu 4
-snmptranslate -To | head
+snmptranslate \-To | head
 .br
 will produce the following dump
 .IP
@@ -250,7 +253,7 @@
 .fi
 .PP
 .IP \(bu 4
-snmptranslate -Ts | head
+snmptranslate \-Ts | head
 .br
 will produce the following dump
 .IP
@@ -260,15 +263,15 @@
 .RI .iso.org.dod.internet
 .RI .iso.org.dod.internet.directory
 .RI .iso.org.dod.internet.mgmt
-.RI .iso.org.dod.internet.mgmt.mib-2
-.RI .iso.org.dod.internet.mgmt.mib-2.system
-.RI .iso.org.dod.internet.mgmt.mib-2.system.sysDescr
-.RI .iso.org.dod.internet.mgmt.mib-2.system.sysObjectID
-.RI .iso.org.dod.internet.mgmt.mib-2.system.sysUpTime
+.RI .iso.org.dod.internet.mgmt.mib\-2
+.RI .iso.org.dod.internet.mgmt.mib\-2.system
+.RI .iso.org.dod.internet.mgmt.mib\-2.system.sysDescr
+.RI .iso.org.dod.internet.mgmt.mib\-2.system.sysObjectID
+.RI .iso.org.dod.internet.mgmt.mib\-2.system.sysUpTime
 .fi
 .PP
 .IP \(bu 4
-snmptranslate -Tt | head
+snmptranslate \-Tt | head
 .br
 will produce the following dump
 .IP
@@ -278,7 +281,7 @@
       internet(1) type=0
         directory(1) type=0
         mgmt(2) type=0
-          mib-2(1) type=0
+          mib\-2(1) type=0
             system(1) type=0
               sysDescr(1) type=2 tc=4 hint=255a
               sysObjectID(2) type=1
diff --git a/man/snmptrap.1.def b/man/snmptrap.1.def
index 09aec79..55c19d1 100644
--- a/man/snmptrap.1.def
+++ b/man/snmptrap.1.def
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
-.\" Portions of this file are subject to the following copyright. 
-.\" See the Net-SNMP COPYING file for more details and other
-.\" copyrights that may apply:
+.\" Portions of this file are subject to the following copyright.  See
+.\" the Net-SNMP COPYING file for more details and other copyrights
+.\" that may apply:
 .\" /***********************************************************
 .\" 	Copyright 1988, 1989 by Carnegie Mellon University
 .\" 
@@ -27,13 +27,13 @@
 .SH NAME
 snmptrap, snmpinform - sends an SNMP notification to a manager
 .SH SYNOPSIS
-.B snmptrap -v 1
+.B snmptrap \-v 1
 [COMMON OPTIONS] AGENT enterprise-oid agent generic-trap specific-trap uptime [OID TYPE VALUE]...
 .PP
-.B snmptrap -v [2c|3]
-[COMMON OPTIONS] [-Ci] AGENT uptime trap-oid [OID TYPE VALUE]...
+.B snmptrap \-v [2c|3]
+[COMMON OPTIONS] [\-Ci] AGENT uptime trap-oid [OID TYPE VALUE]...
 .PP
-.B snmpinform -v [2c|3]
+.B snmpinform \-v [2c|3]
 [COMMON OPTIONS] AGENT uptime trap-oid [OID TYPE VALUE]...
 .SH DESCRIPTION
 .B snmptrap
@@ -47,7 +47,7 @@
 When invoked as
 .B snmpinform,
 or when
-.B -Ci
+.B \-Ci
 is added to the command line flags of snmptrap, it sends an
 INFORM-PDU, expecting a response from the trap receiver,
 retransmitting if required.  Otherwise it sends an TRAP-PDU or
@@ -111,7 +111,7 @@
 .PP
 For example:
 .PP
-snmptrap -v 1 -c public manager enterprises.spider test-hub 3 0 '' interfaces.iftable.ifentry.ifindex.1 i 1
+snmptrap \-v 1 \-c public manager enterprises.spider test\-hub 3 0 '' interfaces.iftable.ifentry.ifindex.1 i 1
 .PP
 will send a generic linkUp trap to manager, for interface 1.
 .SH OPTIONS
@@ -120,7 +120,7 @@
 .I snmpcmd(1) 
 manual page in
 addition to the 
-.B -Ci
+.B \-Ci
 option described above.
 Note that
 .B snmptrap
diff --git a/man/snmptrapd.8.def b/man/snmptrapd.8.def
index 29d565a..45bd034 100644
--- a/man/snmptrapd.8.def
+++ b/man/snmptrapd.8.def
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
-.\" Portions of this file are subject to the following copyright.
-.\" See the Net-SNMP COPYING file for more details and other
-.\" copyrights that may apply:
+.\" Portions of this file are subject to the following copyright.  See
+.\" the Net-SNMP COPYING file for more details and other copyrights
+.\" that may apply:
 .\" /***********************************************************
 .\" 	Copyright 1989 by Carnegie Mellon University
 .\" 
@@ -23,7 +23,7 @@
 .\" ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 .\" SOFTWARE.
 .\" ******************************************************************/
-.TH SNMPTRAPD 8 "30 Mar 2011" VVERSIONINFO "Net-SNMP"
+.TH SNMPTRAPD 8 "27 Apr 2014" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmptrapd - Receive and log SNMP trap messages.
 .SH SYNOPSIS
@@ -39,92 +39,88 @@
 must typically be run as root.
 .SH OPTIONS
 .TP 8
-.B -a
+.B \-a
 Ignore authenticationFailure traps.
 .TP
-.B -A
+.B \-A
 Append to the log file rather than truncating it.
 
-Note that this needs to come \fIbefore\fP any -Lf options
+Note that this needs to come \fIbefore\fP any \-Lf options
 that it should apply to.
 .TP
-.BI "-c" " FILE"
+.BI "\-c" " FILE"
 Read 
 .I FILE
-as a configuration file.
+as a configuration file
+(or a comma-separated list of configuration files).
 .TP
-.B -C
+.B \-C
 Do not read any configuration files except the one optionally specified by the 
-.B -c 
+.B \-c 
 option.
 .TP
-.B -d
+.B \-d
 Dump (in hexadecimal) the sent and received SNMP packets.
 .TP
-.BI -D[TOKEN[,...]]
+.BI \-D[TOKEN[,...]]
 Turn on debugging output for the given
 .IR "TOKEN" "(s)."
 Try
 .IR ALL
 for extremely verbose output.
 .TP
-.B -e
-Print event numbers (rising/falling alarm etc.) from the (obsolete) M2M-MIB.
-.br
-This functionality is being deprecated and will be removed in due course.
-.TP
-.B -f
+.B \-f
 Do not fork() from the calling shell.
 .TP
-.BI -F " FORMAT"
+.BI \-F " FORMAT"
 When logging to standard output, use the format in the string
 .IR FORMAT .
 See the section
 .B FORMAT SPECIFICATIONS
 below for more details.
 .TP
-.B -h, --help
+.B \-h, \-\-help
 Display a brief usage message and then exit.
 .TP
-.B -H
+.B \-H
 Display a list of configuration file directives understood by the
 trap daemon and then exit.
 .TP
-.B -I \fI[-]INITLIST
+.B \-I \fI[\-]INITLIST
 Specifies which modules should (or should not) be initialized
 when snmptrapd starts up.  If the comma-separated
 .I INITLIST
 is preceded
-with a '-', it is the list of modules that should \fInot\fR be started.
+with a '\-', it is the list of modules that should \fInot\fR be started.
 Otherwise this is the list of the \fIonly\fR modules that should be started.
 
 To get a list of compiled modules, run snmptrapd with the arguments
-.I "-Dmib_init -H"
+.I "\-Dmib_init \-H"
 (assuming debugging support has been compiled in).
 .TP
-.B -L[efos]
+.B \-L[efos]
 Specify where logging output should be directed (standard error or output,
 to a file or via syslog).  See LOGGING OPTIONS in \fIsnmpcmd(1)\fR for details.
 .TP
-.BR -m " \fIMIBLIST"
+.BR \-m " \fIMIBLIST"
 Specifies a colon separated list of MIB modules to load for this
 application.  This overrides the environment variable MIBS.
 See \fIsnmpcmd(1)\fR for details.
 .TP
-.BR -M " \fIDIRLIST"
+.BR \-M " \fIDIRLIST"
 Specifies a colon separated list of directories to search for MIBs.
 This overrides the environment variable MIBDIRS.
 See \fIsnmpcmd(1)\fR for details.
 .TP
-.BR -n
+.BR \-n
 Do not attempt to translate source addresses of incoming packets into
 hostnames.
 .TP
-.BI -p " FILE"
+.BI \-p " FILE"
 Save the process ID of the trap daemon in
 .IR FILE "."
 .TP
-.BI -O " [abeEfnqQsStTuUvxX]"
+.BI \-O " [abeEfnqQsStTuUvxX]"
 Specifies how MIB objects and other output should be displayed.
 See the section
 .B OUTPUT OPTIONS
@@ -132,22 +128,25 @@
 .I snmpcmd(1)
 manual page for details.
 .TP
-.BI -t
+.BI \-t
 Do not log traps to syslog.  This disables logging to syslog.  This is
 useful if you want the snmptrapd application to
 .B only
 run traphandle hooks and not to log any traps to any location.
 .TP
-.B -v, --version
+.B \-v, \-\-version
 Print version information for the trap daemon and then exit.
 .TP
-.B -x \fIADDRESS
+.B \-x \fIADDRESS
 Connect to the AgentX master agent on the specified address,
 rather than the default AGENTX_SOCKET.
 See \fIsnmpd(8)\fR for details of the format of such addresses.
 .TP
-.BI -- "name"="value"
-Allows to specify any token ("name") supported in the
+.B \-X
+Do not connect to a AgentX master agent
+.TP
+.BI \-\- "name"="value"
+Allows one to specify any token ("name") supported in the
 .I snmptrapd.conf
 file and sets its value to "value". Overrides the corresponding token in the
 .I snmptrapd.conf
@@ -166,21 +165,26 @@
 a literal %
 .TP
 .B %a
-the contents of the agent-addr field of the PDU (v1 TRAPs only)
+the contents of the agent\-addr field of the PDU (v1 TRAPs only)
 .TP
 .B %A
-the hostname corresponding to the contents of the agent-addr field of
-the PDU, if available, otherwise the contents of the agent-addr field
+the hostname corresponding to the contents of the agent\-addr field of
+the PDU, if available, otherwise the contents of the agent\-addr field
 of the PDU (v1 TRAPs only).
 .TP
 .B %b
-PDU source address (Note: this is not necessarily an IPv4
-address)
+PDU transport address (Note: this is not necessarily an IPv4
+address).
+.br
+Something like "[UDP: [172.16.10.12]:23456->[10.150.0.8]]"
 .TP
 .B %B
 PDU source hostname if available, otherwise PDU source address (see
 note above) 
 .TP
+.B %E
+SNMPv3 context engine id
+.TP
 .B %h
 current hour on the local system
 .TP
@@ -214,13 +218,19 @@
 .B %N
 enterprise string
 .TP
-.B %q
-trap sub-type (numeric, in decimal)
-.TP
 .B %P
 security information from the PDU (community name for v1/v2c,
 user and context for v3)
 .TP
+.B %q
+trap sub-type (numeric, in decimal)
+.TP
+.B %s
+SNMP version number (0: v1, 1: v2c, 2: v3)
+.TP
+.B %S
+SNMPv3 security model version number
+.TP
 .B %t
 decimal number of seconds since the operating system epoch (as
 returned by
@@ -229,6 +239,9 @@
 .B %T
 the value of the \fCsysUpTime.0\fR varbind in seconds
 .TP
+.B %u
+SNMPv3 security name, or v1/v2c community name
+.TP
 .B %v
 list of variable-bindings from the notification payload.
 These will be separated by a tab, 
@@ -258,7 +271,7 @@
 and a flag value. The following flags are supported:
 .RS 4 
 .TP 4
-.B -
+.B \-
 left justify
 .TP
 .B 0
@@ -283,7 +296,7 @@
 .PP
 .RS
 .nf
-snmptrapd -P -F "%02.2h:%02.2j TRAP%w.%q from %A\en"
+snmptrapd \-P \-F "%02.2h:%02.2j TRAP%w.%q from %A\en"
 .fi
 .RE
 .PP
@@ -291,7 +304,7 @@
 .PP
 .RS
 .nf
-snmptrapd -P -F "%#02.2h:%#02.2j TRAP%w.%q from %A\en"
+snmptrapd \-P \-F "%#02.2h:%#02.2j TRAP%w.%q from %A\en"
 .fi
 .RE
 .SH LISTENING ADDRESSES
@@ -305,20 +318,20 @@
 .I snmpd(8)
 manual page for more information about the format of listening
 addresses.
-.SH NOTIFICATION-LOG-MIB SUPPORT
+.SH NOTIFICATION\-LOG\-MIB SUPPORT
 As of net-snmp 5.0, the snmptrapd application supports the
-NOTIFICATION-LOG-MIB.  It does this by opening an AgentX subagent
+NOTIFICATION\-LOG\-MIB.  It does this by opening an AgentX subagent
 connection to the master snmpd agent and registering the notification
 log tables.  As long as the snmpd application is started first, it
 will attach itself to it and thus you should be able to view the last
 recorded notifications via the nlmLogTable and nlmLogVariableTable.
 See the snmptrapd.conf file and the "doNotRetainNotificationLogs" token
 for turning
-off this support.  See the NOTIFICATION-LOG-MIB for more details about
+off this support.  See the NOTIFICATION\-LOG\-MIB for more details about
 the MIB itself.
 .SH EXTENSIBILITY AND CONFIGURATION
 See the
 .I snmptrapd.conf(5)
 manual page.
 .SH "SEE ALSO"
-snmpcmd(1), snmpd(8), printf(3), snmptrapd.conf(5), syslog(8), variables(5)
+snmpcmd(1), snmpd(8), printf(3), snmptrapd.conf(5), syslog(8), traptoemail(1), variables(5)
diff --git a/man/snmptrapd.conf.5.def b/man/snmptrapd.conf.5.def
index 32e3af5..1bbbfbb 100644
--- a/man/snmptrapd.conf.5.def
+++ b/man/snmptrapd.conf.5.def
@@ -1,4 +1,4 @@
-.TH SNMPTRAPD.CONF 5 "25 Sep 2006" VVERSIONINFO "Net-SNMP"
+.TH SNMPTRAPD.CONF 5 "13 Mar 2014" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmptrapd.conf - configuration file for the Net-SNMP notification receiver
 .SH DESCRIPTION
@@ -7,7 +7,7 @@
 (and INFORM requests) should be processed.
 This file (\fBsnmptrapd.conf\fR) can be located in
 one of several locations, as described in the
-.I snmp_config(5)
+.IR snmp_config (5)
 manual page.
 .SH IMPORTANT
 Previously,
@@ -32,22 +32,22 @@
 See the section 
 .B LISTENING ADDRESSES
 in the
-.I snmpd(8)
+.IR snmpd (8)
 manual page for more information about the format of listening
 addresses.
 .IP
 The default behaviour is to
 listen on UDP port 162 on all IPv4 interfaces.
 .IP "doNotRetainNotificationLogs yes"
-disables support for the NOTIFICATION-LOG-MIB.
+disables support for the NOTIFICATION\-LOG\-MIB.
 Normally the snmptrapd program keeps a record of the traps
 received, which can be retrieved by querying
 the \fCnlmLogTable\fR and \fCnlmLogvariableTable\fR tables.  
 This directive can be used to suppress this behaviour.
 .IP
 See the 
-.I snmptrapd(8) 
-manual page and the NOTIFICATION-LOG-MIB for details.
+.IR snmptrapd (8) 
+manual page and the NOTIFICATION\-LOG\-MIB for details.
 .IP "doNotLogTraps yes"
 disables the logging of notifications altogether.
 This is useful if the \fBsnmptrapd\fR application should
@@ -81,14 +81,16 @@
 for a particular category of notification. But it is perfectly
 possible (even desirable) to limit certain notification sources to
 selected processing only.
-.IP "authCommunity   TYPES COMMUNITY  [SOURCE [OID | -v VIEW ]]"
+.IP "authCommunity   TYPES COMMUNITY  [SOURCE [OID | \-v VIEW ]]"
 authorises traps (and SNMPv2c INFORM requests) with the specified
 community to trigger the types of processing listed.
 By default, this will allow any notification using this community
 to be processed.  The SOURCE field can be used to specify that the
 configuration should only apply to notifications received from
-particular sources - see \fIsnmpd.conf(5)\fR for more details.
-.IP "authUser   TYPES [-s MODEL] USER  [LEVEL [OID | -v VIEW ]]"
+particular sources - see
+.IR snmpd.conf (5)
+for more details.
+.IP "authUser   TYPES [\-s MODEL] USER  [LEVEL [OID | \-v VIEW ]]"
 authorises SNMPv3 notifications with the specified
 user to trigger the types of processing listed.
 By default, this will accept authenticated requests.
@@ -96,7 +98,7 @@
 be used to allow unauthenticated notifications (\fInoauth\fR),
 or to require encryption (\fIpriv\fR), just as for the SNMP agent.
 .IP
-With both of these directives, the OID (or \fI-v VIEW\fR) field
+With both of these directives, the OID (or \fI\-v VIEW\fR) field
 can be used to retrict this configuration to the processing of
 particular notifications.
 .RS
@@ -106,16 +108,18 @@
 incoming notification.  It is not applied to the payload varbinds
 held within that notification.
 .RE
-.IP "authGroup  TYPES [-s MODEL] GROUP  [LEVEL [OID | -v VIEW ]]"
-.IP "authAccess TYPES [-s MODEL] GROUP VIEW  [LEVEL [CONTEXT]]"
+.IP "authGroup  TYPES [\-s MODEL] GROUP  [LEVEL [OID | \-v VIEW ]]"
+.IP "authAccess TYPES [\-s MODEL] GROUP VIEW  [LEVEL [CONTEXT]]"
 .IP "setAccess GROUP CONTEXT MODEL LEVEL PREFIX VIEW TYPES"
 authorise notifications in the specified GROUP
 (configured using the \fIgroup\fR directive)
 to trigger the types of processing listed.
-See \fIsnmpd.conf(5)\fR for more details.
+See
+.IR snmpd.conf (5)
+for more details.
 .IP "createUser [-e  ENGINEID] username (MD5|SHA) authpassphrase [DES|AES]"
 See the 
-.I snmpd.conf(5)
+.IR snmpd.conf (5)
 manual page for a description of how to create SNMPv3 users.  This
 is roughly the same, but the file name changes to snmptrapd.conf from
 snmpd.conf.
@@ -131,9 +135,38 @@
 specify the format used to display SNMPv1 TRAPs and SNMPv2
 notifications respectively.  Note that SNMPv2c and SNMPv3
 both use the same SNMPv2 PDU format.
+.IP "format DESTINATION FORMAT"
+specify the format used for different destinations.
+DESTINATION is one of:
+.IR print ", " print1 ", " print2 ", " 
+.IR syslog ", " syslog1 ", " syslog2 ", " 
+.IR execute ", " execute1 ", " execute2 .
+.I print1
+is used for printing SNMPv1 traps,
+.I print2
+is for SNMPv2.
+.I print
+is used for both versions.
+.I syslog
+is similarly used when sending traps to syslog, and
+.I execute
+used when sending traps to a program such as
+.IR traptoemail (1).
+.IP
+The default formats are
+.br
+.I format print1 %.4y-%.2m-%.2l %.2h:%.2j:%.2k %B [%b] (via %A [%a]): %N\en\et%W Trap (%q) Uptime: %#T\en%v\en
+.br
+.I format print2 %.4y-%.2m-%.2l %.2h:%.2j:%.2k %B [%b]:\en%v\en
+.br
+.I format syslog1 %a: %W Trap (%q) Uptime: %#T%#v\en
+.br
+.I format syslog2 %B [%b]: Trap %#v\en
+.br
+.I format execute %B\en%b\en%V\en%v\en
 .IP
 See
-.IR snmptrapd(8)
+.IR snmptrapd (8)
 for the layout characters available.
 .IP "ignoreAuthFailure yes"
 instructs the receiver to ignore \fIauthenticationFailure\fR traps.
@@ -149,19 +182,26 @@
 specifies where notifications should be logged - to standard
 output, standard error, a specified file or via \fIsyslog\fR.
 See the section LOGGING OPTIONS in the
-\fIsnmpcmd(1)\fR manual page for details.
+.IR snmpcmd (1)
+manual page for details.
 .IP "outputOption string"
 specifies various characteristics of how OIDs and other values
 should be displayed.
 See the section OUTPUT OPTIONS in the
-\fIsnmpcmd(1)\fR manual page for details.
-.IP "printEventNumbers yes"
-enables specialised logging of event-related notifications from
-the (long obsolete) M2M-MIB.
-.\"
-.\" XXX - CHECK EXACTLY WHICH TRAPS
-.\" XXX - THIS FEELS OBSOLETE TO ME!
-.\"
+.IR snmpcmd (1)
+manual page for details.
+.SH MySQL Logging
+There are two configuration variables that work together to control
+when queued traps are logged to the MySQL database. A non-zero
+value must be specified for sqlSaveInterval to enable MySQL logging.
+.RE
+.IP "sqlMaxQueue max"
+specifies the maximum number of traps to queue before a forced flush
+to the MySQL database.
+.RE
+.IP "sqlSaveInterval seconds"
+specified the number of seconds between periodic queue flushes.
+A value of 0 for will disable MySQL logging.
 .SH NOTIFICATION PROCESSING
 As well as logging incoming notifications, they can also
 be forwarded on to another notification receiver, or passed
@@ -196,14 +236,17 @@
 Note that this will always use the SNMPv2-style notification format, with
 SNMPv1 traps being converted as per RFC 2576, before being passed to the
 program.
-The input format is as follows, one entry per line:
+The input format is, if you use the default set by
+the "format execute %B\en%b\en%V\en%v\en", one entry per line:
 .RS
 .IP HOSTNAME
 The name of the host that sent the notification, as determined by
-.IR gethostbyaddr(3) .
+.IR gethostbyaddr (3).
 .br
-.IP IPADDRESS
-The IP address of the host that sent the notification.
+.IP ADDRESS
+The transport address, like
+.br
+"[UDP: [172.16.10.12]:23456->[10.150.0.8]]"
 .\"
 .\" XXX - What about non-IPv4 transports?
 .\"
@@ -214,10 +257,10 @@
 The format of both of these are controlled by the \fIoutputOption\fR
 directive (or similar configuration).
 .IP
-The first OID should always be \fCSNMPv2-MIB::sysUpTime.0\fR,
-and the second should be \fCSNMPv2-MIB::snmpTrapOID.0\fR.
+The first OID should always be \fCSNMPv2\-MIB::sysUpTime.0\fR,
+and the second should be \fCSNMPv2\-MIB::snmpTrapOID.0\fR.
 The remaining lines will contain the payload varbind list.
-For SNMPv1 traps, the final OID will be \fCSNMPv2-MIB::snmpTrapEnterprise.0\fR.
+For SNMPv1 traps, the final OID will be \fCSNMPv2\-MIB::snmpTrapEnterprise.0\fR.
 .br
 .IP Example:
 A \fBtraptoemail\fR script has been included in the Net-SNMP package that
@@ -225,7 +268,7 @@
 .br
 .RS
 .P
-traphandle default /usr/bin/perl BINDIR/traptoemail -s mysmtp.somewhere.com -f admin@somewhere.com me@somewhere.com
+traphandle default /usr/bin/perl BINDIR/traptoemail \-s mysmtp.somewhere.com \-f admin@somewhere.com me@somewhere.com
 .RE
 .RE
 .IP "forward OID|default DESTINATION"
@@ -237,7 +280,7 @@
 See the section 
 .B LISTENING ADDRESSES
 in the
-.I snmpd(8)
+.IR snmpd (8)
 manual page for more information about the format of listening
 addresses.
 .RE
@@ -257,5 +300,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), traptoemail(1), variables(5), netsnmp_config_api(3).
 
diff --git a/man/snmpusm.1.def b/man/snmpusm.1.def
index 635273f..9061213 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
@@ -18,17 +18,17 @@
 USER CLONEFROM-USER
 .br
 .B snmpusm
-[COMMON OPTIONS] [-Ca] [-Cx] AGENT
+[COMMON OPTIONS] [\-Ca] [\-Cx] AGENT
 .B passwd
 OLD-PASSPHRASE NEW-PASSPHRASE [USER]
 .br
 .B snmpusm
-[COMMON OPTIONS] <-Ca | -Cx> -Ck AGENT
+[COMMON OPTIONS] <\-Ca | \-Cx> \-Ck AGENT
 .B passwd
 OLD-KEY-OR-PASSPHRASE NEW-KEY-OR-PASSPHRASE [USER]
 .br
 .B snmpusm
-[COMMON OPTIONS] [-Ca] [-Cx] AGENT
+[COMMON OPTIONS] [\-Ca] [\-Cx] AGENT
 .B changekey
 [USER]
 
@@ -46,12 +46,12 @@
 .B snmpusm
 commands:
 .TP
-.BI -CE " ENGINE-ID"
+.BI \-CE " ENGINE-ID"
 Set usmUserEngineID to be used as part of the index of the usmUserTable.
-Default is to use the contextEngineID (set via -E or probed) as the 
+Default is to use the contextEngineID (set via \-E or probed) as the 
 usmUserEngineID.
 .TP
-.BI -Cp " STRING"
+.BI \-Cp " STRING"
 Set the usmUserPublic value of the (new) user to the specified STRING.
 .PP
 Options for the
@@ -60,15 +60,15 @@
 .B changekey
 commands:
 .TP
-.BI -Ca
+.BI \-Ca
 Change the authentication key.
 .TP
-.BI -Cx
+.BI \-Cx
 Change the privacy key.
 .TP
-.BI -Ck
-Allows to use localized key (must start with 0x) instead of passphrase.
-When this option is used, either the -Ca or -Cx option (but not both) must also
+.BI \-Ck
+Allows one to use localized key (must start with 0x) instead of passphrase.
+When this option is used, either the \-Ca or \-Cx option (but not both) must also
 be used.
 
 .SH CREATING USERS
@@ -76,20 +76,23 @@
 An unauthenticated SNMPv3 user can be created using the command
 .IP
 .B snmpusm
-[OPTIONS] AGENT create USER
+[COMMON OPTIONS] AGENT create USER
 .PP
 This constructs an (inactive) entry in the usmUserTable,
 with no authentication or privacy settings.
 In principle, this user should be useable for 'noAuthNoPriv' requests,
 but in practise the Net-SNMP agent will not allow such an entry
-to be made active.
+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
 user, using the command
 .IP
 .B snmpusm
-[OPTIONS] AGENT cloneFrom USER CLONEFROM-USER
+[COMMON OPTIONS] AGENT cloneFrom USER CLONEFROM-USER
 .PP
 The USER entry then inherits the same authentication and privacy
 settings (including pass phrases) as the CLONEFROM user.
@@ -98,7 +101,7 @@
 These two steps can be combined into one, by using the command
 .IP
 .B snmpusm
-[OPTIONS] AGENT create USER CLONEFROM-USER
+[COMMON OPTIONS] AGENT create USER CLONEFROM-USER
 
 .PP
 The two forms of the
@@ -134,7 +137,7 @@
 A user can be deleted from the usmUserTable using the command
 .IP
 .B snmpusm
-[OPTIONS] AGENT delete USER
+[COMMON OPTIONS] AGENT delete USER
 
 .SH CHANGING PASS PHRASES
 User profiles contain private keys that are never
@@ -145,7 +148,7 @@
 This uses the command
 .IP
 .B snmpusm
-[OPTIONS] [-Ca] [-Cx] AGENT passwd OLD-PASSPHRASE NEW-PASSPHRASE [USER]
+[COMMON OPTIONS] [\-Ca] [\-Cx] AGENT passwd OLD-PASSPHRASE NEW-PASSPHRASE [USER]
 
 .PP
 After cloning a new user entry from the appropriate template,
@@ -153,21 +156,21 @@
 
 .PP
 If USER is not specified, this command will change the passphrase
-of the (SNMPv3) user issuing the command.  If the -Ca or -Cx options
+of the (SNMPv3) user issuing the command.  If the \-Ca or \-Cx options
 are specified, then only the authentication or privacy keys are changed.  If
 these options are not specified, then both the authentication and privacy keys
 are changed.
 
 .IP
 .B snmpusm
-[OPTIONS] [-Ca] [-Cx] AGENT changekey [USER]
+[COMMON OPTIONS] [\-Ca] [\-Cx] AGENT changekey [USER]
 
 .PP
 This command changes the key in a perfect-forward-secrecy compliant
 way through a diffie-helman exchange.  The remote agent must support
-the SNMP-USM-DH-OBJECTS-MIB for this command to work.  The resulting
+the SNMP\-USM\-DH\-OBJECTS\-MIB for this command to work.  The resulting
 keys are printed to the console and may be then set in future command
-invocations using the --defAuthLocalizedKey and --defPrivLocalizedKey
+invocations using the \-\-defAuthLocalizedKey and \-\-defPrivLocalizedKey
 options or in your snmp.conf file using the defAuthLocalizedKey and
 defPrivLocalizedKey keywords.
 
@@ -184,10 +187,10 @@
 
 .IP
 .B snmpusm
-[OPTIONS] <-Ca | -Cx> -Ck AGENT passwd OLD-KEY-OR-PASSPHRASE NEW-KEY-OR-PASSPHRASE [USER]
+[COMMON OPTIONS] <\-Ca | \-Cx> \-Ck AGENT passwd OLD-KEY-OR-PASSPHRASE NEW-KEY-OR-PASSPHRASE [USER]
 
 .PP
-Either the -Ca or the -Cx option must be specified.  The OLD-KEY-OR-PASSPHRASE
+Either the \-Ca or the \-Cx option must be specified.  The OLD-KEY-OR-PASSPHRASE
 and/or NEW-KEY-OR-PASSPHRASE arguments can either be a passphrase or a
 localized key starting with "0x", e.g. as printed out by the
 .B changekey
@@ -226,7 +229,7 @@
 in length.
 .SS Create a new user
 .PP
-snmpusm -v3 -u initial -n "" -l authNoPriv -a MD5 -A setup_passphrase
+snmpusm \-v3 \-u initial \-n "" \-l authNoPriv \-a MD5 \-A setup_passphrase
 localhost create wes initial
 .IP
 Creates a new user, here named "wes" using the user "initial" to do
@@ -234,7 +237,7 @@
 that user's passphrase ("setup_passphrase").
 .SS Change the user's passphrase
 .PP
-snmpusm -v 3 -u wes -n "" -l authNoPriv -a MD5 -A setup_passphrase
+snmpusm \-v 3 \-u wes \-n "" \-l authNoPriv \-a MD5 \-A setup_passphrase
 localhost passwd setup_passphrase new_passphrase
 .IP
 After creating the user "wes" with the same passphrase as the
@@ -243,7 +246,7 @@
 the initial user, to "new_passphrase".
 .SS Test the new user
 .PP
-snmpget -v 3 -u wes -n "" -l authNoPriv -a MD5 -A new_passphrase
+snmpget \-v 3 \-u wes \-n "" \-l authNoPriv \-a MD5 \-A new_passphrase
 localhost sysUpTime.0
 .IP
 If the above commands were successful, this command should have
diff --git a/man/snmpvacm.1.def b/man/snmpvacm.1.def
index 6ae1f03..70b089e 100644
--- a/man/snmpvacm.1.def
+++ b/man/snmpvacm.1.def
@@ -15,7 +15,7 @@
 .B snmpvacm
 [COMMON OPTIONS] AGENT
 .B createView
-[-Ce] NAME SUBTREE MASK
+[\-Ce] NAME SUBTREE MASK
 .br
 .B snmpvacm
 [COMMON OPTIONS] AGENT
@@ -102,7 +102,7 @@
 .B createSec2Group
 command (or equivalent).
 
-.SS createView \fR[-Ce] NAME SUBTREE MASK\fP
+.SS createView \fR[\-Ce] NAME SUBTREE MASK\fP
 .PP
 Create an entry in the SNMPv3 MIB view table.
 A MIB view consists of a family of view subtrees which may be individually
@@ -110,7 +110,7 @@
 defined by a combination of an OID subtree together with a bit string mask.
 The view table is indexed by the view name and subtree OID values.
 .PP
-[-Ce]
+[\-Ce]
 .IP
 An optional flag to indicate that this view subtree should be excluded
 from the named view.
@@ -327,7 +327,7 @@
 .PP
 This creates a new security group named "ROGroup" containing the (pre-existing)
 user "wes", a new view "sysView" containing just the OID tree based on
-.I .iso(1).org(3).dod(6).inet(1).mgmt(2).mib-2(1).system(1)
+.I .iso(1).org(3).dod(6).inet(1).mgmt(2).mib\-2(1).system(1)
 , and then allows those users in the group "ROGroup" (i.e. "wes")
 read-access, but not write-access to the view "sysView" (i.e. the system group).
 
diff --git a/man/snmpwalk.1.def b/man/snmpwalk.1.def
index 0c55d72..d9f3d5c 100644
--- a/man/snmpwalk.1.def
+++ b/man/snmpwalk.1.def
@@ -1,7 +1,7 @@
 .\" -*- nroff -*-
-.\" Portions of this file are subject to the following copyright. 
-.\" See the Net-SNMP COPYING file for more details and other
-.\" copyrights that may apply:
+.\" Portions of this file are subject to the following copyright.  See
+.\" the Net-SNMP COPYING file for more details and other copyrights
+.\" that may apply:
 .\" /***********************************************************
 .\" 	Copyright 1988, 1989 by Carnegie Mellon University
 .\" 
@@ -23,7 +23,7 @@
 .\" ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 .\" SOFTWARE.
 .\" ******************************************************************/
-.TH SNMPWALK 1 "23 Aug 2004" VVERSIONINFO "Net-SNMP"
+.TH SNMPWALK 1 "28 May 2007" VVERSIONINFO "Net-SNMP"
 .SH NAME
 snmpwalk - retrieve a subtree of management values using SNMP GETNEXT requests
 .SH SYNOPSIS
@@ -43,7 +43,7 @@
 .PP
 If no OID argument is present,
 .B snmpwalk
-will search the subtree rooted at SNMPv2-SMI::mib-2
+will search the subtree rooted at SNMPv2\-SMI::mib\-2
 (including any MIB object values from other MIB modules,
 that are defined as lying within this subtree).
 If the network entity has an error processing the request packet, an
@@ -54,7 +54,7 @@
 MIB, the message "End of MIB" will be displayed.
 .SH OPTIONS
 .TP 8
-.B -Cc
+.B \-Cc
 Do not check whether the returned OIDs are increasing.  Some agents
 (LaserJets are an example) return OIDs out of order, but can
 complete the walk anyway.  Other agents return OIDs that are out of
@@ -64,10 +64,15 @@
 .B snmpwalk
 tries to detect this behavior and warns you when it hits an agent
 acting illegally.  Use
-.B -Cc
+.B \-Cc
 to turn off this check.
 .TP
-.B -Ci
+.B \-CE {OID}
+End the walk at the specified OID, rather than a simple subtree.
+This can be used to walk a partial subtree, selected columns of
+a table, or even two or more tables within a single command.
+.TP
+.B \-Ci
 Include the given OID in the search range.  Normally
 .B snmpwalk
 uses GETNEXT requests starting with the OID you specified and returns
@@ -76,7 +81,7 @@
 results if it is a valid OID in the tree itself.  This option lets you
 do this explicitly.
 .TP
-.B -CI
+.B \-CI
 In fact, the given OID will be retrieved automatically if the main
 subtree walk returns no useable values.  This allows a walk of a
 single instance to behave as generally expected, and return the
@@ -84,10 +89,10 @@
 This option turns off this final GET request, so a walk of a
 single instance will return nothing.
 .TP
-.B -Cp
+.B \-Cp
 Upon completion of the walk, print the number of variables found.
 .TP
-.B -Ct
+.B \-Ct
 Upon completion of the walk, print the total wall-clock time it took
 to collect the data (in seconds).  Note that the timer is started just
 before the beginning of the data request series and stopped just after
@@ -100,15 +105,15 @@
 takes the common options described in the 
 .I snmpcmd(1)
 manual page.
+.SH EXAMPLES
 .br
 Note that
-.B snmpbulkget
+.B snmpwalk
 REQUIRES  an argument specifying the agent to query
 and at most one OID argument, as described there.
-.SH EXAMPLE
 The command:
 .PP
-snmpwalk -Os -c public -v 1 zeus system
+snmpwalk \-Os \-c public \-v 1 zeus system
 .PP
 will retrieve all of the variables under system:
 .PP
@@ -125,5 +130,13 @@
 sysLocation.0 = STRING: ""
 .br
 sysServices.0 = INTEGER: 72
+.br
+(plus the contents of the sysORTable).
+
+The command:
+.PP
+snmpwalk \-Os \-c public \-v 1 \-CE sysORTable zeus system
+.PP
+will retrieve the scalar values, but omit the sysORTable.
 .SH "SEE ALSO"
 snmpcmd(1), snmpbulkwalk(1), variables(5).
diff --git a/man/tkmib.1.def b/man/tkmib.1.def
index fa45dce..f0253b9 100644
--- a/man/tkmib.1.def
+++ b/man/tkmib.1.def
@@ -1,4 +1,4 @@
-.TH tkmib 1 "16 Nov 2006" VVERSIONINFO "Net-SNMP"
+.TH tkmib "1" "16 Nov 2006" VVERSIONINFO "Net-SNMP"
 .SH NAME
 tkmib - an interactive graphical MIB browser for SNMP
 .SH SYNOPSIS
diff --git a/mibs/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/DISMAN-EVENT-MIB.txt b/mibs/DISMAN-EVENT-MIB.txt
index bde1cdb..f00c7cc 100644
--- a/mibs/DISMAN-EVENT-MIB.txt
+++ b/mibs/DISMAN-EVENT-MIB.txt
@@ -8,7 +8,6 @@
     TEXTUAL-CONVENTION, RowStatus,
     TruthValue                FROM SNMPv2-TC
 
-
     MODULE-COMPLIANCE, OBJECT-GROUP,
     NOTIFICATION-GROUP             FROM SNMPv2-CONF
     sysUpTime                 FROM SNMPv2-MIB
@@ -58,7 +57,6 @@
         particular error code here does not imply that all
         implementations are capable of sensing that error and
 
-
         returning that code.
 
         The second group, numbered greater than 0, are copied
@@ -78,16 +76,13 @@
                                 as not as expected
         sampleOverrun           another sample attempt occurred before
                                 the previous one completed"
-
     SYNTAX      INTEGER { localResourceLack(-1),
                           badDestination(-2),
                           destinationUnreachable(-3),
                           noResponse(-4),
                           badType(-5),
                           sampleOverrun(-6),
-
                           noError(0),
-
                           tooBig(1),
                           noSuchName(2),
                           badValue(3),
@@ -108,7 +103,6 @@
                           inconsistentName(18) }
 --
 
-
 -- Resource Control Section
 --
 
@@ -157,8 +151,6 @@
         Changing this value will not eliminate or inhibit existing
         sample state but could prevent allocation of additional state
         information."
-
-
     ::= { mteResource 2 }
 
 mteResourceSampleInstances OBJECT-TYPE
@@ -208,7 +200,6 @@
         condition has failed.  This counts individually for each
         attempt in a group of targets or each attempt for a
 
-
         wildcarded object."
     ::= { mteTrigger 1 }
 
@@ -257,8 +248,6 @@
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
-
-
         "The owner of this entry. The exact semantics of this
         string are subject to the security policy defined by the
         security administrator."
@@ -308,7 +297,6 @@
 
         For 'threshold' the test works as described below for
 
-
         mteTriggerThresholdStartup, mteTriggerThresholdRising, and
         mteTriggerThresholdFalling.
 
@@ -358,7 +346,6 @@
         instance portion, in which case the value is obtained
         as if with a GetNext function, checking multiple values
 
-
         if they exist.  If such wildcarding is applied,
         mteTriggerValueIDWildcard must be 'true' and if not it must
         be 'false'.
@@ -408,7 +395,6 @@
 
         Otherwise access rights are checked according to the security
 
-
         parameters resulting from the tag."
     DEFVAL { ''H }
     ::= { mteTriggerEntry 8 }
@@ -457,8 +443,6 @@
     UNITS       "seconds"
     MAX-ACCESS  read-create
     STATUS      current
-
-
     DESCRIPTION
         "The number of seconds to wait between trigger samples.  To
         encourage consistency in sampling, the interval is measured
@@ -507,8 +491,6 @@
         A list of objects may also be added based on the event or on
         the value of mteTriggerTest.
 
-
-
         A length of 0 indicates no additional objects."
     DEFVAL { ''H }
     ::= { mteTriggerEntry 13 }
@@ -557,8 +539,6 @@
     INDEX       { mteOwner, IMPLIED mteTriggerName }
     ::= { mteTriggerDeltaTable 1 }
 
-
-
 MteTriggerDeltaEntry ::= SEQUENCE {
     mteTriggerDeltaDiscontinuityID                OBJECT IDENTIFIER,
     mteTriggerDeltaDiscontinuityIDWildcard        TruthValue,
@@ -608,7 +588,6 @@
         be the same as that of the corresponding instance of
         mteTriggerValueIDWildcard when the corresponding
 
-
         mteTriggerSampleType is 'deltaValue'."
     DEFVAL { false }
     ::= { mteTriggerDeltaEntry 2 }
@@ -658,7 +637,6 @@
     mteTriggerExistenceEvent             SnmpAdminString
 }
 
-
 mteTriggerExistenceTest OBJECT-TYPE
     SYNTAX      BITS { present(0), absent(1), changed(2) }
     MAX-ACCESS  read-write
@@ -707,8 +685,6 @@
 
 mteTriggerExistenceObjects OBJECT-TYPE
     SYNTAX      SnmpAdminString (SIZE (0..32))
-
-
     MAX-ACCESS  read-write
     STATUS      current
     DESCRIPTION
@@ -758,7 +734,6 @@
         triggers."
     ::= { mteTrigger 5 }
 
-
 mteTriggerBooleanEntry OBJECT-TYPE
     SYNTAX      MteTriggerBooleanEntry
     MAX-ACCESS  not-accessible
@@ -807,8 +782,6 @@
     DEFVAL { 0 }
     ::= { mteTriggerBooleanEntry 2 }
 
-
-
 mteTriggerBooleanStartup OBJECT-TYPE
     SYNTAX      TruthValue
     MAX-ACCESS  read-write
@@ -857,8 +830,6 @@
         "To go with mteTriggerBooleanEvent, the mteOwner of an event
         entry from mteEventTable."
     DEFVAL { ''H }
-
-
     ::= { mteTriggerBooleanEntry 6 }
 
 mteTriggerBooleanEvent OBJECT-TYPE
@@ -907,8 +878,6 @@
     mteTriggerThresholdRisingEventOwner         SnmpAdminString,
     mteTriggerThresholdRisingEvent              SnmpAdminString,
     mteTriggerThresholdFallingEventOwner        SnmpAdminString,
-
-
     mteTriggerThresholdFallingEvent             SnmpAdminString,
     mteTriggerThresholdDeltaRisingEventOwner    SnmpAdminString,
     mteTriggerThresholdDeltaRisingEvent         SnmpAdminString,
@@ -957,8 +926,6 @@
         triggered until the sampled value falls below this threshold
         and reaches mteTriggerThresholdFalling."
     DEFVAL { 0 }
-
-
     ::= { mteTriggerThresholdEntry 2 }
 
 mteTriggerThresholdFalling OBJECT-TYPE
@@ -1007,8 +974,6 @@
         triggered until the delta value falls below this threshold and
         reaches mteTriggerThresholdDeltaFalling."
     DEFVAL { 0 }
-
-
     ::= { mteTriggerThresholdEntry 4 }
 
 mteTriggerThresholdDeltaFalling OBJECT-TYPE
@@ -1058,7 +1023,6 @@
 
         A list of objects may also be added based on the overall
 
-
         trigger, the event or other settings in mteTriggerTest.
 
         A length of 0 indicates no additional objects."
@@ -1107,8 +1071,6 @@
     DEFVAL { ''H }
     ::= { mteTriggerThresholdEntry 11 }
 
-
-
 mteTriggerThresholdDeltaRisingEventOwner OBJECT-TYPE
     SYNTAX      SnmpAdminString (SIZE (0..32))
     MAX-ACCESS  read-write
@@ -1157,8 +1119,6 @@
 -- Objects Table
 --
 
-
-
 mteObjectsTable OBJECT-TYPE
     SYNTAX      SEQUENCE OF MteObjectsEntry
     MAX-ACCESS  not-accessible
@@ -1208,7 +1168,6 @@
         "An arbitrary integer for the purpose of identifying
         individual objects within a mteObjectsName group.
 
-
         Objects within a group are placed in the notification in the
         numerical order of this index.
 
@@ -1258,7 +1217,6 @@
     DEFVAL { false }
     ::= { mteObjectsEntry 4 }
 
-
 mteObjectsEntryStatus OBJECT-TYPE
     SYNTAX      RowStatus
     MAX-ACCESS  read-create
@@ -1308,7 +1266,6 @@
     INDEX       { mteOwner, IMPLIED mteEventName }
     ::= { mteEventTable 1 }
 
-
 MteEventEntry ::= SEQUENCE {
     mteEventName                        SnmpAdminString,
     mteEventComment                     SnmpAdminString,
@@ -1358,7 +1315,6 @@
         "A control to allow an event to be configured but not used.
         When the value is 'false' the event does not execute even if
 
-
         triggered."
     DEFVAL { false }
     ::= { mteEventEntry 4 }
@@ -1407,8 +1363,6 @@
     SYNTAX      OBJECT IDENTIFIER
     MAX-ACCESS  read-write
     STATUS      current
-
-
     DESCRIPTION
         "The object identifier from the NOTIFICATION-TYPE for the
         notification to use if metEventActions has 'notification' set."
@@ -1457,8 +1411,6 @@
 mteEventSetEntry OBJECT-TYPE
     SYNTAX      MteEventSetEntry
     MAX-ACCESS  not-accessible
-
-
     STATUS      current
     DESCRIPTION
         "Information about a single event's set option.  Entries
@@ -1508,7 +1460,6 @@
     DEFVAL { zeroDotZero }
     ::= { mteEventSetEntry 1 }
 
-
 mteEventSetObjectWildcard OBJECT-TYPE
     SYNTAX      TruthValue
     MAX-ACCESS  read-write
@@ -1557,8 +1508,6 @@
 mteEventSetContextName OBJECT-TYPE
     SYNTAX      SnmpAdminString
     MAX-ACCESS  read-write
-
-
     STATUS      current
     DESCRIPTION
         "The management context in which to set mteEventObjectID.
@@ -1607,8 +1556,6 @@
         "The name of the trigger causing the notification."
     ::= { dismanEventMIBNotificationObjects 1 }
 
-
-
 mteHotTargetName OBJECT-TYPE
     SYNTAX      SnmpAdminString
     MAX-ACCESS  accessible-for-notify
@@ -1657,8 +1604,6 @@
     SYNTAX      FailureReason
     MAX-ACCESS  accessible-for-notify
     STATUS      current
-
-
     DESCRIPTION
         "The reason for the failure of an attempt to check for a
         trigger condition or set an object in response to an event."
@@ -1707,8 +1652,6 @@
 
 mteTriggerFailure NOTIFICATION-TYPE
     OBJECTS { mteHotTrigger,
-
-
               mteHotTargetName,
               mteHotContextName,
               mteHotOID,
@@ -1757,8 +1700,6 @@
 dismanEventMIBCompliance MODULE-COMPLIANCE
         STATUS current
         DESCRIPTION
-
-
                 "The compliance statement for entities which implement
                 the Event MIB."
         MODULE  -- this module
@@ -1797,7 +1738,6 @@
                         "Write access is not required, thus allowing
                         the system not to implement wildcarding."
 
-
                 OBJECT mteObjectsIDWildcard
                 MIN-ACCESS  read-only
                 DESCRIPTION
@@ -1807,11 +1747,8 @@
                 OBJECT mteEventSetContextNameWildcard
                 MIN-ACCESS  read-only
                 DESCRIPTION
-
-
                         "Write access is not required, thus allowing
                         the system not to implement wildcarding."
-
         ::= { dismanEventMIBCompliances 1 }
 
 -- Units of Conformance
@@ -1832,7 +1769,6 @@
 dismanEventTriggerGroup OBJECT-GROUP
         OBJECTS {
                 mteTriggerFailures,
-
                 mteTriggerComment,
                 mteTriggerTest,
                 mteTriggerSampleType,
@@ -1846,7 +1782,6 @@
                 mteTriggerObjects,
                 mteTriggerEnabled,
                 mteTriggerEntryStatus,
-
                 mteTriggerDeltaDiscontinuityID,
                 mteTriggerDeltaDiscontinuityIDWildcard,
                 mteTriggerDeltaDiscontinuityIDType,
@@ -1856,9 +1791,6 @@
                 mteTriggerExistenceObjects,
                 mteTriggerExistenceEventOwner,
                 mteTriggerExistenceEvent,
-
-
-
                 mteTriggerBooleanComparison,
                 mteTriggerBooleanValue,
                 mteTriggerBooleanStartup,
@@ -1866,7 +1798,6 @@
                 mteTriggerBooleanObjects,
                 mteTriggerBooleanEventOwner,
                 mteTriggerBooleanEvent,
-
                 mteTriggerThresholdStartup,
                 mteTriggerThresholdObjectsOwner,
                 mteTriggerThresholdObjects,
@@ -1902,17 +1833,13 @@
 dismanEventEventGroup OBJECT-GROUP
         OBJECTS {
                 mteEventFailures,
-
                 mteEventComment,
                 mteEventActions,
                 mteEventEnabled,
                 mteEventEntryStatus,
-
-
                 mteEventNotification,
                 mteEventNotificationObjectsOwner,
                 mteEventNotificationObjects,
-
                 mteEventSetObject,
                 mteEventSetObjectWildcard,
                 mteEventSetValue,
diff --git a/mibs/DISMAN-EXPRESSION-MIB.txt b/mibs/DISMAN-EXPRESSION-MIB.txt
index 499ee86..f73e5bf 100644
--- a/mibs/DISMAN-EXPRESSION-MIB.txt
+++ b/mibs/DISMAN-EXPRESSION-MIB.txt
@@ -29,7 +29,6 @@
                     Published as RFC 2982"
     ::= { mib-2 90 }
 
-
 dismanExpressionMIBObjects OBJECT IDENTIFIER ::=
                                             { dismanExpressionMIB 1 }
 
@@ -41,7 +40,6 @@
 -- Resource Control
 --
 
-
 expResourceDeltaMinimum OBJECT-TYPE
     SYNTAX      Integer32 (-1 | 1..600)
     UNITS       "seconds"
@@ -90,7 +88,6 @@
      Unless explicitly resource limited, a system's value for
      this object should be 0.
 
-
      Changing this value will not eliminate or inhibit existing delta
      wildcard instance objects but will prevent the creation of more
      such objects.
@@ -139,7 +136,6 @@
 --
 
 expExpressionTable OBJECT-TYPE
-
     SYNTAX      SEQUENCE OF ExpExpressionEntry
     MAX-ACCESS  not-accessible
     STATUS      current
@@ -335,7 +331,6 @@
 
           If either side is IpAddress, use that.
 
-
           If either side is TimeTicks, use that.
 
           If either side is Counter32, use that.
@@ -384,7 +379,6 @@
           sum
           exists
 
-
      The following function definitions indicate their parameters by
      naming the data type of the parameter in the parameter's position
      in the parameter list.  The parameter must be of the type indicated
@@ -433,7 +427,6 @@
      exists(anyTypeObject) - verifies the object instance exists. A
      return value of 0 indicates NoSuchInstance (i.e. boolean
      false)."
-
     ::= { expExpressionEntry 3 }
 
 expExpressionValueType OBJECT-TYPE
@@ -531,7 +524,6 @@
     ::= { expExpressionEntry 7 }
 
 expExpressionErrors OBJECT-TYPE
-
     SYNTAX      Counter32
     MAX-ACCESS  read-only
     STATUS      current
@@ -580,7 +572,6 @@
      error for that expression as reflected by the error codes
      defined for expErrorCode."
     INDEX       { expExpressionOwner, expExpressionName }
-
     ::= { expErrorTable 1 }
 
 ExpErrorEntry ::= SEQUENCE {
@@ -678,7 +669,6 @@
 expErrorInstance OBJECT-TYPE
     SYNTAX      OBJECT IDENTIFIER
     MAX-ACCESS  read-only
-
     STATUS      current
     DESCRIPTION
      "The expValueInstance being evaluated when the error
@@ -727,7 +717,6 @@
     expObjectIndex                     Unsigned32,
     expObjectID                        OBJECT IDENTIFIER,
     expObjectIDWildcard                TruthValue,
-
     expObjectSampleType                INTEGER,
     expObjectDeltaDiscontinuityID      OBJECT IDENTIFIER,
     expObjectDiscontinuityIDWildcard   TruthValue,
@@ -776,7 +765,6 @@
         "A true value indicates the expObjecID of this row is a wildcard
         object. False indicates that expObjectID is fully instanced.
         If all expObjectWildcard values for a given expression are FALSE,
-
         expExpressionPrefix will reflect a scalar object (i.e. will
         be 0.0).
 
@@ -825,7 +813,6 @@
      DateAndTime object that indicates a discontinuity in the value
      at expObjectID.
 
-
      This object is instantiated only if expObjectSampleType is
      'deltaValue' or 'changedValue'.
 
@@ -874,7 +861,6 @@
     DEFVAL      { timeTicks }
      ::= { expObjectEntry 7 }
 
-
 expObjectConditional OBJECT-TYPE
     SYNTAX      OBJECT IDENTIFIER
     MAX-ACCESS  read-create
@@ -910,7 +896,6 @@
      MAX-ACCESS  read-create
      STATUS      current
      DESCRIPTION
-
      "A true value indicates the expObjectConditional of this row is
      a wildcard object. False indicates that expObjectConditional is
      fully instanced.
@@ -923,7 +908,6 @@
 expObjectEntryStatus OBJECT-TYPE
     SYNTAX      RowStatus
     MAX-ACCESS  read-create
-
     STATUS      current
     DESCRIPTION
      "The control that allows creation/deletion of entries.
@@ -1021,7 +1005,6 @@
 expValueCounter32Val OBJECT-TYPE
     SYNTAX      Counter32
     MAX-ACCESS  read-only
-
     STATUS      current
     DESCRIPTION
      "The value when expExpressionValueType is 'counter32'."
@@ -1060,7 +1043,7 @@
     ::= { expValueEntry 6 }
 
 expValueOctetStringVal OBJECT-TYPE
-    SYNTAX      OCTET STRING -- (SIZE (0..65536))
+    SYNTAX      OCTET STRING (SIZE (0..65536))
     MAX-ACCESS  read-only
     STATUS      current
     DESCRIPTION
@@ -1070,7 +1053,6 @@
 expValueOidVal OBJECT-TYPE
     SYNTAX      OBJECT IDENTIFIER
     MAX-ACCESS  read-only
-
     STATUS      current
     DESCRIPTION
      "The value when expExpressionValueType is 'objectId'."
@@ -1136,7 +1118,6 @@
      WRITE-SYNTAX   INTEGER { false(2) }
      DESCRIPTION
           "Implementation need not allow deltas wildcards."
-
      ::= { dismanExpressionMIBCompliances 1 }
 
 -- Units of Conformance
@@ -1163,12 +1144,10 @@
           expExpressionPrefix,
           expExpressionErrors,
           expExpressionEntryStatus,
-
           expErrorTime,
           expErrorIndex,
           expErrorCode,
           expErrorInstance,
-
           expObjectID,
           expObjectIDWildcard,
           expObjectSampleType,
@@ -1201,5 +1180,3 @@
      ::= { dismanExpressionMIBGroups 3 }
 
 END
-
-
diff --git a/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt b/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt
index 1680ace..7995fc4 100644
--- a/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt
+++ b/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt
@@ -6,24 +6,37 @@
       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
-          E-Mail: iana@iana.org"
+          Tel:    +1  310-301-5800
+          E-Mail: iana&iana.org"
       DESCRIPTION
           "The MIB module defines the AddressFamilyNumbers
           textual convention."
 
       -- 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 
@@ -86,10 +99,26 @@
           fibreChannelWWPN(22),  -- Fibre Channel World-Wide Port Name 
           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
-          email (iana@iana.org)."
+          email (iana&iana.org)."
       SYNTAX  INTEGER {
                   other(0),
                   ipV4(1),
@@ -116,6 +145,22 @@
                   fibreChannelWWPN(22),
                   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 b0ad3ed..4b97bdd 100644
--- a/mibs/IANA-LANGUAGE-MIB.txt
+++ b/mibs/IANA-LANGUAGE-MIB.txt
@@ -5,17 +5,17 @@
         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
-         E-Mail: iana@iana.org"
+         Tel:    +1 310-301-5800
+         E-Mail: iana&iana.org"
     DESCRIPTION
         "The MIB module registers object identifier values for
          well-known programming and scripting languages. Every
@@ -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 57e73a2..f7bc1eb 100644
--- a/mibs/IANA-RTPROTO-MIB.txt
+++ b/mibs/IANA-RTPROTO-MIB.txt
@@ -1,4 +1,3 @@
-
 IANA-RTPROTO-MIB DEFINITIONS ::= BEGIN
 
 IMPORTS
@@ -6,16 +5,16 @@
     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
-              EMail: iana@iana.org"
+              Phone: +1 310 301 5800
+              EMail: iana&iana.org"
     DESCRIPTION
             "This MIB module defines the IANAipRouteProtocol and
             IANAipMRouteProtocol textual conventions for use in MIBs
@@ -29,15 +28,19 @@
             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."
-
     ::= { mib-2 84 }
 
 IANAipRouteProtocol ::= TEXTUAL-CONVENTION
    STATUS      current
-
    DESCRIPTION
             "A mechanism for learning routes.  Inclusion of values for
             routing protocols is not intended to imply that those
@@ -63,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
@@ -88,5 +93,3 @@
                }
 
 END
-
-
diff --git a/mibs/IANAifType-MIB.txt b/mibs/IANAifType-MIB.txt
index 542e247..027a153 100644
--- a/mibs/IANAifType-MIB.txt
+++ b/mibs/IANAifType-MIB.txt
@@ -5,21 +5,123 @@
        TEXTUAL-CONVENTION          FROM SNMPv2-TC;
 
    ianaifType MODULE-IDENTITY
-       LAST-UPDATED "200510100000Z"  -- October 10, 2005
+       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
-                     E-Mail: iana@iana.org"
-
+                     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."
+
+       REVISION     "200902060000Z"  -- February 06, 2009
+       DESCRIPTION  "Registration of new IANAtunnelType 15."
+
+       REVISION     "200810090000Z"  -- October 09, 2008
+       DESCRIPTION  "Registration of new IANAifType 250."
+
+       REVISION     "200808120000Z"  -- August 12, 2008
+       DESCRIPTION  "Registration of new IANAifType 249."
+
+       REVISION     "200807220000Z"  -- July 22, 2008
+       DESCRIPTION  "Registration of new IANAifTypes 247 and 248."
+
+       REVISION     "200806240000Z"  -- June 24, 2008
+       DESCRIPTION  "Registration of new IANAifType 246."
+
+       REVISION     "200805290000Z"  -- May 29, 2008
+       DESCRIPTION  "Registration of new IANAifType 245."
+
+       REVISION     "200709130000Z"  -- September 13, 2007
+       DESCRIPTION  "Registration of new IANAifTypes 243 and 244."
+
+       REVISION     "200705290000Z"  -- May 29, 2007
+       DESCRIPTION  "Changed the description for IANAifType 228."
+
+       REVISION     "200703080000Z"  -- March 08, 2007
+       DESCRIPTION  "Registration of new IANAifType 242."
+
+       REVISION     "200701230000Z"  -- January 23, 2007
+       DESCRIPTION  "Registration of new IANAifTypes 239, 240, and 241." 
+
+       REVISION     "200610170000Z"  -- October 17, 2006
+       DESCRIPTION  "Deprecated/Obsoleted IANAifType 230.  Registration of 
+                     IANAifType 238." 
+
+       REVISION     "200609250000Z"  -- September 25, 2006
+       DESCRIPTION  "Changed the description for IANA ifType 
+                     184 and added new IANA ifType 237."  
+
+       REVISION     "200608170000Z"  -- August 17, 2006
+       DESCRIPTION  "Changed the descriptions for IANAifTypes
+                     20 and 21."   
+
+       REVISION     "200608110000Z"  -- August 11, 2006
+       DESCRIPTION  "Changed the descriptions for IANAifTypes
+                     7, 11, 62, 69, and 117."   
+
+       REVISION     "200607250000Z"  -- July 25, 2006
+       DESCRIPTION  "Registration of new IANA ifType 236."
+
+       REVISION     "200606140000Z"  -- June 14, 2006
+       DESCRIPTION  "Registration of new IANA ifType 235."
+
+       REVISION     "200603310000Z"  -- March 31, 2006
+       DESCRIPTION  "Registration of new IANA ifType 234."
+
+       REVISION     "200603300000Z"  -- March 30, 2006
+       DESCRIPTION  "Registration of new IANA ifType 233."
+
+       REVISION     "200512220000Z"  -- December 22, 2005
+       DESCRIPTION  "Registration of new IANA ifTypes 231 and 232."
+
        REVISION     "200510100000Z"  -- October 10, 2005
        DESCRIPTION  "Registration of new IANA ifType 230."
 
@@ -31,11 +133,10 @@
 
        REVISION     "200503030000Z"  -- March 3, 2005
        DESCRIPTION  "Added the IANAtunnelType TC and deprecated
-	                 IANAifType sixToFour (215) per 
-	                 RFC4087."
+	                 IANAifType sixToFour (215) per RFC4087."
 
        REVISION     "200411220000Z"  -- November 22, 2004
-       DESCRIPTION  "Registration of new IANA ifType 227."
+       DESCRIPTION  "Registration of new IANA ifType 227 per RFC4631."
 
        REVISION     "200406170000Z"  -- June 17, 2004
        DESCRIPTION  "Registration of new IANA ifType 226."
@@ -50,92 +151,92 @@
 
        REVISION     "200308250000Z"  -- Aug 25, 2003
        DESCRIPTION  "Deprecated IANAifTypes 7 and 11. Obsoleted
-                    IANAifTypes 62, 69, and 117.  ethernetCsmacd (6)
-                    should be used instead of these values"
+                     IANAifTypes 62, 69, and 117.  ethernetCsmacd (6)
+                     should be used instead of these values"
 
        REVISION     "200308180000Z"  -- Aug 18, 2003
        DESCRIPTION  "Registration of new IANAifType
-                    224."
+                     224."
 
        REVISION     "200308070000Z"  -- Aug 7, 2003
        DESCRIPTION  "Registration of new IANAifTypes
-                    222 and 223."
+                     222 and 223."
 
        REVISION     "200303180000Z"  -- Mar 18, 2003
        DESCRIPTION  "Registration of new IANAifType
-                    221."
+                     221."
 
        REVISION     "200301130000Z"  -- Jan 13, 2003
        DESCRIPTION  "Registration of new IANAifType
-                    220."
+                     220."
 
        REVISION     "200210170000Z"  -- Oct 17, 2002
        DESCRIPTION  "Registration of new IANAifType
-                    219."
+                     219."
 
-	   REVISION     "200207160000Z"  -- Jul 16, 2002
+       REVISION     "200207160000Z"  -- Jul 16, 2002
        DESCRIPTION  "Registration of new IANAifTypes
-                    217 and 218."
+                     217 and 218."
 
        REVISION     "200207100000Z"  -- Jul 10, 2002
        DESCRIPTION  "Registration of new IANAifTypes
-                    215 and 216."
+                     215 and 216."
 
        REVISION     "200206190000Z"  -- Jun 19, 2002
        DESCRIPTION  "Registration of new IANAifType
-                    214."
+                     214."
 
        REVISION     "200201040000Z"  -- Jan 4, 2002
        DESCRIPTION  "Registration of new IANAifTypes
-                    211, 212 and 213."
+                     211, 212 and 213."
 
        REVISION     "200112200000Z"  -- Dec 20, 2001
        DESCRIPTION  "Registration of new IANAifTypes
-                    209 and 210."
+                     209 and 210."
 
        REVISION     "200111150000Z"  -- Nov 15, 2001
        DESCRIPTION  "Registration of new IANAifTypes
-                    207 and 208."
+                     207 and 208."
 
        REVISION     "200111060000Z"  -- Nov 6, 2001
        DESCRIPTION  "Registration of new IANAifType
-                    206."
+                     206."
 
        REVISION     "200111020000Z"  -- Nov 2, 2001
        DESCRIPTION  "Registration of new IANAifType
-                    205."
+                     205."
 
        REVISION     "200110160000Z"  -- Oct 16, 2001
        DESCRIPTION  "Registration of new IANAifTypes
-                    199, 200, 201, 202, 203, and 204."
+                     199, 200, 201, 202, 203, and 204."
 
        REVISION     "200109190000Z"  -- Sept 19, 2001
        DESCRIPTION  "Registration of new IANAifType
-                    198."
+                     198."
 
        REVISION     "200105110000Z"  -- May 11, 2001
        DESCRIPTION  "Registration of new IANAifType
-                    197."
+                     197."
 
        REVISION     "200101120000Z"  -- Jan 12, 2001
        DESCRIPTION  "Registration of new IANAifTypes
-                    195 and 196."
+                     195 and 196."
 
        REVISION     "200012190000Z"  -- Dec 19, 2000
        DESCRIPTION  "Registration of new IANAifTypes
-                    193 and 194."
+                     193 and 194."
 
        REVISION     "200012070000Z"  -- Dec 07, 2000
        DESCRIPTION  "Registration of new IANAifTypes
-                    191 and 192."
+                     191 and 192."
 
        REVISION     "200012040000Z"  -- Dec 04, 2000
        DESCRIPTION  "Registration of new IANAifType
-                    190."
+                     190."
 
        REVISION     "200010170000Z"  -- Oct 17, 2000
        DESCRIPTION  "Registration of new IANAifTypes
-                    188 and 189."  
+                     188 and 189."  
 
        REVISION     "200010020000Z"  -- Oct 02, 2000
        DESCRIPTION  "Registration of new IANAifType 187." 
@@ -191,7 +292,7 @@
                IANA.)
 
                Requests for new values should be made to IANA via
-               email (iana@iana.org).
+               email (iana&iana.org).
 
                The relationship between the assignment of ifType
                values and of OIDs to particular media-specific MIBs
@@ -211,11 +312,13 @@
                    rfc877x25(5),
                    ethernetCsmacd(6), -- for all ethernet-like interfaces,
                                       -- regardless of speed, as per RFC3635
-                   iso88023Csmacd(7), -- Deprecated via RFC-draft-ietf-hubmib-etherif-mib-v3  ethernetCsmacd (6) should be used instead
+                   iso88023Csmacd(7), -- Deprecated via RFC3635
+                                      -- ethernetCsmacd (6) should be used instead
                    iso88024TokenBus(8),
                    iso88025TokenRing(9),
                    iso88026Man(10),
-                   starLan(11), -- Deprecated via RFC-draft-ietf-hubmib-etherif-mib-v3  ethernetCsmacd (6) should be used instead
+                   starLan(11), -- Deprecated via RFC3635
+                                -- ethernetCsmacd (6) should be used instead
                    proteon10Mbit(12),
                    proteon80Mbit(13),
                    hyperchannel(14),
@@ -224,8 +327,10 @@
                    sdlc(17),
                    ds1(18),            -- DS1-MIB
                    e1(19),             -- Obsolete see DS1-MIB
-                   basicISDN(20),
-                   primaryISDN(21),
+                   basicISDN(20),              -- no longer used
+                                               -- see also RFC2127
+                   primaryISDN(21),            -- no longer used
+                                               -- see also RFC2127
                    propPointToPointSerial(22), -- proprietary serial
                    ppp(23),
                    softwareLoopback(24),
@@ -262,23 +367,25 @@
                    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
                    aflane8025(60),     -- ATM Emulated LAN for 802.5
                    cctEmul(61),        -- ATM Emulated circuit          
-                   fastEther(62),      -- Obsoleted via RFC-draft-ietf-hubmib-etherif-mib-v3  ethernetCsmacd (6) should be used instead
+                   fastEther(62),      -- Obsoleted via RFC3635
+                                       -- ethernetCsmacd (6) should be used instead
                    isdn(63),           -- ISDN and X.25           
                    v11(64),            -- CCITT V.11/X.21             
                    v36(65),            -- CCITT V.36                  
                    g703at64k(66),      -- CCITT G703 at 64Kbps
                    g703at2mb(67),      -- Obsolete see DS1-MIB
                    qllc(68),           -- SNA QLLC                    
-                   fastEtherFX(69),    -- Obsoleted via RFC-draft-ietf-hubmib-etherif-mib-v3  ethernetCsmacd (6) should be used instead
+                   fastEtherFX(69),    -- Obsoleted via RFC3635
+                                       -- ethernetCsmacd (6) should be used instead
                    channel(70),        -- channel                     
                    ieee80211(71),      -- radio spread spectrum       
-	           ibm370parChan(72),  -- IBM System 360/370 OEMI Channel
+                   ibm370parChan(72),  -- IBM System 360/370 OEMI Channel
                    escon(73),          -- IBM Enterprise Systems Connection
                    dlsw(74),           -- Data Link Switching
                    isdns(75),          -- ISDN S/T interface
@@ -313,61 +420,62 @@
                    voiceOverIp(104),   -- voice over IP encapsulation
                    atmDxi(105),        -- ATM DXI
                    atmFuni(106),       -- ATM FUNI
-		   atmIma (107),       -- ATM IMA		   
+                   atmIma (107),       -- ATM IMA		   
                    pppMultilinkBundle(108), -- PPP Multilink Bundle
                    ipOverCdlc (109),   -- IBM ipOverCdlc
-		   ipOverClaw (110),   -- IBM Common Link Access to Workstn
+                   ipOverClaw (110),   -- IBM Common Link Access to Workstn
                    stackToStack (111), -- IBM stackToStack
                    virtualIpAddress (112), -- IBM VIPA
-		   mpc (113),          -- IBM multi-protocol channel support
-		   ipOverAtm (114),    -- IBM ipOverAtm
-		   iso88025Fiber (115), -- ISO 802.5j Fiber Token Ring
-		   tdlc (116),	       -- IBM twinaxial data link control
-		   gigabitEthernet (117), -- Obsoleted via RFC-draft-ietf-hubmib-etherif-mib-v3  ethernetCsmacd (6) should be used instead
-		   hdlc (118),         -- HDLC
-		   lapf (119),	       -- LAP F
-		   v37 (120),	       -- V.37
-		   x25mlp (121),       -- Multi-Link Protocol
-		   x25huntGroup (122), -- X25 Hunt Group
-		   trasnpHdlc (123),   -- Transp HDLC
-		   interleave (124),   -- Interleave channel
-		   fast (125),         -- Fast channel
-		   ip (126),	       -- IP (for APPN HPR in IP networks)
-		   docsCableMaclayer (127),  -- CATV Mac Layer
-		   docsCableDownstream (128), -- CATV Downstream interface
-		   docsCableUpstream (129),  -- CATV Upstream interface
-		   a12MppSwitch (130), -- Avalon Parallel Processor
-		   tunnel (131),       -- Encapsulation interface
-		   coffee (132),       -- coffee pot
-		   ces (133),          -- Circuit Emulation Service
-		   atmSubInterface (134), -- ATM Sub Interface
-		   l2vlan (135),       -- Layer 2 Virtual LAN using 802.1Q
-		   l3ipvlan (136),     -- Layer 3 Virtual LAN using IP
-		   l3ipxvlan (137),    -- Layer 3 Virtual LAN using IPX
-		   digitalPowerline (138), -- IP over Power Lines	
-		   mediaMailOverIp (139), -- Multimedia Mail over IP
-		   dtm (140),        -- Dynamic syncronous Transfer Mode
-		   dcn (141),    -- Data Communications Network
-		   ipForward (142),    -- IP Forwarding Interface
-		   msdsl (143),       -- Multi-rate Symmetric DSL
-		   ieee1394 (144), -- IEEE1394 High Performance Serial Bus
-		   if-gsn (145),       --   HIPPI-6400 
-		   dvbRccMacLayer (146), -- DVB-RCC MAC Layer
-		   dvbRccDownstream (147),  -- DVB-RCC Downstream Channel
-		   dvbRccUpstream (148),  -- DVB-RCC Upstream Channel
-		   atmVirtual (149),   -- ATM Virtual Interface
-		   mplsTunnel (150),   -- MPLS Tunnel Virtual Interface
-		   srp (151),	-- Spatial Reuse Protocol	
-		   voiceOverAtm (152),  -- Voice Over ATM
-		   voiceOverFrameRelay (153),   -- Voice Over Frame Relay 
-		   idsl (154),		-- Digital Subscriber Loop over ISDN
-		   compositeLink (155),  -- Avici Composite Link Interface
-		   ss7SigLink (156),     -- SS7 Signaling Link 
-		   propWirelessP2P (157),  --  Prop. P2P wireless interface
-		   frForward (158),    -- Frame Forward Interface
-		   rfc1483 (159),	-- Multiprotocol over ATM AAL5
-		   usb (160),		-- USB Interface
-		   ieee8023adLag (161),  -- IEEE 802.3ad Link Aggregate
+                   mpc (113),          -- IBM multi-protocol channel support
+                   ipOverAtm (114),    -- IBM ipOverAtm
+                   iso88025Fiber (115), -- ISO 802.5j Fiber Token Ring
+                   tdlc (116),	       -- IBM twinaxial data link control
+                   gigabitEthernet (117), -- Obsoleted via RFC3635
+                                          -- ethernetCsmacd (6) should be used instead
+                   hdlc (118),         -- HDLC
+                   lapf (119),	       -- LAP F
+                   v37 (120),	       -- V.37
+                   x25mlp (121),       -- Multi-Link Protocol
+                   x25huntGroup (122), -- X25 Hunt Group
+                   transpHdlc (123),   -- Transp HDLC
+                   interleave (124),   -- Interleave channel
+                   fast (125),         -- Fast channel
+                   ip (126),	       -- IP (for APPN HPR in IP networks)
+                   docsCableMaclayer (127),  -- CATV Mac Layer
+                   docsCableDownstream (128), -- CATV Downstream interface
+                   docsCableUpstream (129),  -- CATV Upstream interface
+                   a12MppSwitch (130), -- Avalon Parallel Processor
+                   tunnel (131),       -- Encapsulation interface
+                   coffee (132),       -- coffee pot
+                   ces (133),          -- Circuit Emulation Service
+                   atmSubInterface (134), -- ATM Sub Interface
+                   l2vlan (135),       -- Layer 2 Virtual LAN using 802.1Q
+                   l3ipvlan (136),     -- Layer 3 Virtual LAN using IP
+                   l3ipxvlan (137),    -- Layer 3 Virtual LAN using IPX
+                   digitalPowerline (138), -- IP over Power Lines	
+                   mediaMailOverIp (139), -- Multimedia Mail over IP
+                   dtm (140),        -- Dynamic syncronous Transfer Mode
+                   dcn (141),    -- Data Communications Network
+                   ipForward (142),    -- IP Forwarding Interface
+                   msdsl (143),       -- Multi-rate Symmetric DSL
+                   ieee1394 (144), -- IEEE1394 High Performance Serial Bus
+                   if-gsn (145),       --   HIPPI-6400 
+                   dvbRccMacLayer (146), -- DVB-RCC MAC Layer
+                   dvbRccDownstream (147),  -- DVB-RCC Downstream Channel
+                   dvbRccUpstream (148),  -- DVB-RCC Upstream Channel
+                   atmVirtual (149),   -- ATM Virtual Interface
+                   mplsTunnel (150),   -- MPLS Tunnel Virtual Interface
+                   srp (151),	-- Spatial Reuse Protocol	
+                   voiceOverAtm (152),  -- Voice Over ATM
+                   voiceOverFrameRelay (153),   -- Voice Over Frame Relay 
+                   idsl (154),		-- Digital Subscriber Loop over ISDN
+                   compositeLink (155),  -- Avici Composite Link Interface
+                   ss7SigLink (156),     -- SS7 Signaling Link 
+                   propWirelessP2P (157),  --  Prop. P2P wireless interface
+                   frForward (158),    -- Frame Forward Interface
+                   rfc1483 (159),	-- Multiprotocol over ATM AAL5
+                   usb (160),		-- USB Interface
+                   ieee8023adLag (161),  -- IEEE 802.3ad Link Aggregate
                    bgppolicyaccounting (162), -- BGP Policy Accounting
                    frf16MfrBundle (163), -- FRF .16 Multilink Frame Relay 
                    h323Gatekeeper (164), -- H323 Gatekeeper
@@ -391,6 +499,9 @@
                    propDocsWirelessUpstream (182), -- Cisco proprietary Upstream
                    hiperlan2 (183), -- HIPERLAN Type 2 Radio Interface
                    propBWAp2Mp (184), -- PropBroadbandWirelessAccesspt2multipt
+                             -- use of this iftype for IEEE 802.16 WMAN
+                             -- interfaces as per IEEE Std 802.16f is
+                             -- deprecated and ifType 237 should be used instead.
                    sonetOverheadChannel (185), -- SONET Overhead Channel
                    digitalWrapperOverheadChannel (186), -- Digital Wrapper
                    aal2 (187), -- ATM adaptation layer 2
@@ -416,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
@@ -426,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 
@@ -434,10 +545,57 @@
                    rpr (225), -- Resilient Packet Ring Interface Type
                    qam (226), -- RF Qam Interface
                    lmp (227), -- Link Management Protocol
-                   cblVectaStar (228), -- Cambridge Broadband Limited VectaStar
+                   cblVectaStar (228), -- Cambridge Broadband Networks Limited VectaStar
                    docsCableMCmtsDownstream (229), -- CATV Modular CMTS Downstream Interface
-                   adsl2 (230) -- Asymmetric Digital Subscriber Loop Version 2
-    			   }
+                   adsl2 (230), -- Asymmetric Digital Subscriber Loop Version 2 
+                                -- (DEPRECATED/OBSOLETED - please use adsl2plus 238 instead)
+                   macSecControlledIF (231), -- MACSecControlled 
+                   macSecUncontrolledIF (232), -- MACSecUncontrolled
+                   aviciOpticalEther (233), -- Avici Optical Ethernet Aggregate
+                   atmbond (234), -- atmbond
+                   voiceFGDOS (235), -- voice FGD Operator Services
+                   mocaVersion1 (236), -- MultiMedia over Coax Alliance (MoCA) Interface
+                             -- as documented in information provided privately to IANA
+                   ieee80216WMAN (237), -- IEEE 802.16 WMAN interface
+                   adsl2plus (238), -- Asymmetric Digital Subscriber Loop Version 2, 
+                                   -- Version 2 Plus and all variants
+                   dvbRcsMacLayer (239), -- DVB-RCS MAC Layer
+                   dvbTdm (240), -- DVB Satellite TDM
+                   dvbRcsTdma (241), -- DVB-RCS TDMA
+                   x86Laps (242), -- LAPS based on ITU-T X.86/Y.1323
+                   wwanPP (243), -- 3GPP WWAN
+                   wwanPP2 (244), -- 3GPP2 WWAN
+                   voiceEBS (245), -- voice P-phone EBS physical interface
+                   ifPwType (246), -- Pseudowire interface type
+                   ilan (247), -- Internal LAN on a bridge per IEEE 802.1ap
+                   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)
+                   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
     STATUS     current
@@ -481,7 +639,8 @@
                    sixToFour(11),   -- 6to4 encapsulation
                    sixOverFour(12), -- 6over4 encapsulation
                    isatap(13),      -- ISATAP encapsulation
-                   teredo(14)       -- Teredo encapsulation
+                   teredo(14),      -- Teredo encapsulation
+                   ipHttps(15)      -- IPHTTPS
                }
 
    END
diff --git a/mibs/IP-FORWARD-MIB.txt b/mibs/IP-FORWARD-MIB.txt
index 3090ff7..347b5e0 100644
--- a/mibs/IP-FORWARD-MIB.txt
+++ b/mibs/IP-FORWARD-MIB.txt
@@ -6,8 +6,6 @@
     Counter32                          FROM SNMPv2-SMI
     RowStatus                          FROM SNMPv2-TC
 
-
-
     MODULE-COMPLIANCE, OBJECT-GROUP    FROM SNMPv2-CONF
     InterfaceIndexOrZero               FROM IF-MIB
     ip                                 FROM IP-MIB
@@ -56,9 +54,6 @@
             implementation of the IP Forwarding MIB in a
             read-only mode.
 
-
-
-
             The inetCidrRouteTable replaces the IPv4-specific
             ipCidrRouteTable, its related objects, and related
             conformance statements.
@@ -107,9 +102,6 @@
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
-
-
-
            "This entity's IP Routing table."
     REFERENCE
            "RFC 1213 Section 6.6, The IP Group"
@@ -158,9 +150,6 @@
         inetCidrRouteMetric1      Integer32,
         inetCidrRouteMetric2      Integer32,
         inetCidrRouteMetric3      Integer32,
-
-
-
         inetCidrRouteMetric4      Integer32,
         inetCidrRouteMetric5      Integer32,
         inetCidrRouteStatus       RowStatus
@@ -198,7 +187,6 @@
             equal to x.  If not, then the index pair is not
             consistent and an inconsistentName error must be
             returned on SET or CREATE requests."
-
     ::= { inetCidrRouteEntry 2 }
 
 inetCidrRoutePfxLen OBJECT-TYPE
@@ -210,8 +198,6 @@
             mask to be logical-ANDed with the destination address
             before being compared to the value in the
 
-
-
             inetCidrRouteDest field.
 
             The values for the index objects inetCidrRouteDest and
@@ -223,7 +209,6 @@
             equal to x.  If not, then the index pair is not
             consistent and an inconsistentName error must be
             returned on SET or CREATE requests."
-
     ::= { inetCidrRouteEntry 3 }
 
 inetCidrRoutePolicy OBJECT-TYPE
@@ -261,8 +246,6 @@
     DESCRIPTION
            "On remote routes, the address of the next system en
 
-
-
             route.  For non-remote routes, a zero length string.
 
             The type of this address is determined by the value of
@@ -312,9 +295,6 @@
             discards the message silently."
     ::= { inetCidrRouteEntry 8 }
 
-
-
-
 inetCidrRouteProto OBJECT-TYPE
     SYNTAX     IANAipRouteProtocol
     MAX-ACCESS read-only
@@ -362,9 +342,6 @@
             value.  If this metric is not used, its value should be
             set to -1."
     DEFVAL { -1 }
-
-
-
     ::= { inetCidrRouteEntry 12 }
 
 inetCidrRouteMetric2 OBJECT-TYPE
@@ -414,8 +391,6 @@
            "An alternate routing metric for this route.  The
             semantics of this metric are determined by the routing-
 
-
-
             protocol specified in the route's inetCidrRouteProto
             value.  If this metric is not used, its value should be
             set to -1."
@@ -465,8 +440,6 @@
             --     This MIB requires support for global and
             --     non-global ipv4 and ipv6 addresses.
 
-
-
             --
             -- OBJECT      inetCidrRouteDest
             -- SYNTAX      InetAddress (SIZE (4 | 8 | 16 | 20))
@@ -497,7 +470,6 @@
    WRITE-SYNTAX  RowStatus { active(1), notInService (2),
                              createAndGo(4), destroy(6) }
    DESCRIPTION  "Support for createAndWait is not required."
-
    ::= { ipForwardCompliances 3 }
 
 ipForwardReadOnlyCompliance MODULE-COMPLIANCE
@@ -515,9 +487,6 @@
       "Write access is not required."
 
    OBJECT      inetCidrRouteType
-
-
-
    MIN-ACCESS  read-only
    DESCRIPTION
       "Write access is not required."
@@ -557,7 +526,6 @@
    MIN-ACCESS  read-only
    DESCRIPTION
       "Write access is not required."
-
    ::= { ipForwardCompliances 4 }
 
 -- units of conformance
@@ -566,9 +534,6 @@
     OBJECTS { inetCidrRouteDiscards,
               inetCidrRouteIfIndex, inetCidrRouteType,
               inetCidrRouteProto, inetCidrRouteAge,
-
-
-
               inetCidrRouteNextHopAS, inetCidrRouteMetric1,
               inetCidrRouteMetric2, inetCidrRouteMetric3,
               inetCidrRouteMetric4, inetCidrRouteMetric5,
@@ -618,8 +583,6 @@
     DESCRIPTION
            "A particular route to a particular destination, under a
 
-
-
             particular policy."
     INDEX {
         ipCidrRouteDest,
@@ -668,9 +631,6 @@
 ipCidrRouteMask OBJECT-TYPE
     SYNTAX     IpAddress
     MAX-ACCESS read-only
-
-
-
     STATUS     deprecated
     DESCRIPTION
            "Indicate the mask to be logical-ANDed with the
@@ -720,8 +680,6 @@
                1 0 0 0  ==>  16      1 0 0 1  ==>  18
                1 0 1 0  ==>  20      1 0 1 1  ==>  22
 
-
-
                1 1 0 0  ==>  24      1 1 0 1  ==>  26
                1 1 1 0  ==>  28      1 1 1 1  ==>  30"
     ::= { ipCidrRouteEntry 3 }
@@ -771,9 +729,6 @@
             routes."
     ::= { ipCidrRouteEntry 6 }
 
-
-
-
 ipCidrRouteProto OBJECT-TYPE
     SYNTAX     INTEGER {
                 other     (1),  -- not specified
@@ -821,9 +776,6 @@
 ipCidrRouteInfo OBJECT-TYPE
     SYNTAX     OBJECT IDENTIFIER
     MAX-ACCESS read-create
-
-
-
     STATUS     deprecated
     DESCRIPTION
            "A reference to MIB definitions specific to the
@@ -873,8 +825,6 @@
             protocol specified in the route's ipCidrRouteProto
             value.  If this metric is not used, its value should be
 
-
-
             set to -1."
     DEFVAL { -1 }
     ::= { ipCidrRouteEntry 12 }
@@ -923,9 +873,6 @@
     MAX-ACCESS read-create
     STATUS     deprecated
     DESCRIPTION
-
-
-
            "The row status variable, used according to row
             installation and removal conventions."
     ::= { ipCidrRouteEntry 16 }
@@ -944,7 +891,6 @@
 
    MODULE  -- this module
    MANDATORY-GROUPS { ipForwardCidrRouteGroup }
-
    ::= { ipForwardCompliances 1 }
 
 -- units of conformance
@@ -974,9 +920,6 @@
     MAX-ACCESS read-only
     STATUS     obsolete
     DESCRIPTION
-
-
-
            "The number of current ipForwardTable entries that are
             not invalid."
     ::= { ipForward 1 }
@@ -1025,9 +968,6 @@
         ipForwardInfo       OBJECT IDENTIFIER,
         ipForwardNextHopAS  Integer32,
         ipForwardMetric1    Integer32,
-
-
-
         ipForwardMetric2    Integer32,
         ipForwardMetric3    Integer32,
         ipForwardMetric4    Integer32,
@@ -1077,8 +1017,6 @@
 -- and the Router Requirements documents disagree on the width
 -- of the TOS field.  This mapping describes the Router
 
-
-
 -- Requirements mapping, and leaves room to widen the TOS field
 -- without impact to fielded systems.
 
@@ -1105,8 +1043,6 @@
             |                 |                       |     |
             +-----+-----+-----+-----+-----+-----+-----+-----+
 
-
-
                          IP TOS                IP TOS
                Field     Policy      Field     Policy
                Contents    Code      Contents    Code
@@ -1127,9 +1063,6 @@
     ::= { ipForwardEntry 3 }
 
 ipForwardNextHop OBJECT-TYPE
-
-
-
     SYNTAX     IpAddress
     MAX-ACCESS read-only
     STATUS     obsolete
@@ -1179,9 +1112,6 @@
     DEFVAL { invalid }
     ::= { ipForwardEntry 6 }
 
-
-
-
 ipForwardProto OBJECT-TYPE
     SYNTAX     INTEGER {
                 other     (1),  -- not specified
@@ -1229,9 +1159,6 @@
     SYNTAX     OBJECT IDENTIFIER
     MAX-ACCESS read-create
     STATUS     obsolete
-
-
-
     DESCRIPTION
            "A reference to MIB definitions specific to the
             particular routing protocol that is responsible for
@@ -1281,9 +1208,6 @@
     DEFVAL { -1 }
     ::= { ipForwardEntry 12 }
 
-
-
-
 ipForwardMetric3 OBJECT-TYPE
     SYNTAX     Integer32
     MAX-ACCESS read-create
@@ -1332,12 +1256,8 @@
            "The compliance statement for SNMP entities that
             implement the ipForward MIB."
 
-
-
-
    MODULE  -- this module
    MANDATORY-GROUPS { ipForwardMultiPathGroup }
-
    ::= { ipForwardCompliances 2 }
 
 ipForwardMultiPathGroup OBJECT-GROUP
diff --git a/mibs/IP-MIB.txt b/mibs/IP-MIB.txt
index 0a93501..fe2db5f 100644
--- a/mibs/IP-MIB.txt
+++ b/mibs/IP-MIB.txt
@@ -21,8 +21,6 @@
     CONTACT-INFO
            "Editor:
 
-
-
             Shawn A. Routhier
             Interworking Labs
             108 Whispering Pines Dr. Suite 235
@@ -72,8 +70,6 @@
 
             linklayer(5) indicates an address created by IPv6 stateless
 
-
-
             auto-configuration.
 
             random(6) indicates an address chosen by the system at
@@ -123,8 +119,6 @@
             The duplicate(7) state indicates the address has been
             determined to be non-unique on the link and so must not be
 
-
-
             used.
 
             The optimistic(8) state indicates the address is available
@@ -173,9 +167,6 @@
         manual(2),
         wellknown(3),
         dhcp(4),
-
-
-
         routeradv(5)
     }
 
@@ -225,8 +216,6 @@
             the IPv4 header of datagrams originated at this entity,
             whenever a TTL value is not supplied by the transport layer
 
-
-
             protocol.
 
             When this object is written, the entity should save the
@@ -275,9 +264,6 @@
     MAX-ACCESS read-write
     STATUS     current
     DESCRIPTION
-
-
-
            "The default value inserted into the Hop Limit field of the
             IPv6 header of datagrams originated at this entity whenever
             a Hop Limit value is not supplied by the transport layer
@@ -326,9 +312,6 @@
            "An entry containing IPv4-specific information for a specific
             interface."
     INDEX { ipv4InterfaceIfIndex }
-
-
-
     ::= { ipv4InterfaceTable 1 }
 
 Ipv4InterfaceEntry ::= SEQUENCE {
@@ -377,9 +360,6 @@
 ipv4InterfaceRetransmitTime OBJECT-TYPE
     SYNTAX     Unsigned32
     UNITS      "milliseconds"
-
-
-
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
@@ -428,9 +408,6 @@
     DESCRIPTION
            "An entry containing IPv6-specific information for a given
             interface."
-
-
-
     INDEX { ipv6InterfaceIfIndex }
     ::= { ipv6InterfaceTable 1 }
 
@@ -479,9 +456,6 @@
             according to the rules of the link type to which this
             interface is attached.
 
-
-
-
             A zero length identifier may be used where appropriate.  One
             possible example is a loopback interface."
     ::= { ipv6InterfaceEntry 3 }
@@ -530,9 +504,6 @@
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
-
-
-
            "The time between retransmissions of Neighbor Solicitation
             messages to a neighbor when resolving the address or when
             probing the reachability of a neighbor."
@@ -582,8 +553,6 @@
 --
 -- Note well: Both of these tables contain some items that are
 
-
-
 -- represented by two objects, representing the value in either 32
 -- or 64 bits.  For those objects, the 32-bit value MUST be the low
 -- order 32 bits of the 64-bit value.  Also note that the 32-bit
@@ -632,9 +601,6 @@
         ipSystemStatsReasmFails          Counter32,
         ipSystemStatsInDiscards          Counter32,
         ipSystemStatsInDelivers          Counter32,
-
-
-
         ipSystemStatsHCInDelivers        Counter64,
         ipSystemStatsOutRequests         Counter32,
         ipSystemStatsHCOutRequests       Counter64,
@@ -683,9 +649,6 @@
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
-
-
-
            "The total number of input IP datagrams received, including
             those received in error.
 
@@ -735,8 +698,6 @@
             including those received in error.  This object counts the
             same octets as ipSystemStatsInOctets, but allows for larger
 
-
-
             values.
 
             Discontinuities in the value of this counter can occur at
@@ -786,8 +747,6 @@
             includes invalid addresses (e.g., ::0).  For entities
             that are not IP routers and therefore do not forward
 
-
-
             datagrams, this counter includes datagrams discarded
             because the destination address was not a local address.
 
@@ -836,9 +795,6 @@
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
-
-
-
            "The number of input datagrams for which this entity was not
             their final IP destination and for which this entity
             attempted to find a route to forward them to that final
@@ -888,8 +844,6 @@
 
             Discontinuities in the value of this counter can occur at
 
-
-
             re-initialization of the management system, and at other
             times as indicated by the value of
             ipSystemStatsDiscontinuityTime."
@@ -938,9 +892,6 @@
 
 ipSystemStatsInDiscards OBJECT-TYPE
     SYNTAX     Counter32
-
-
-
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
@@ -989,9 +940,6 @@
             re-initialization of the management system, and at other
             times as indicated by the value of
             ipSystemStatsDiscontinuityTime."
-
-
-
     ::= { ipSystemStatsEntry 19 }
 
 ipSystemStatsOutRequests OBJECT-TYPE
@@ -1041,8 +989,6 @@
             ipSystemStatsDiscontinuityTime."
     ::= { ipSystemStatsEntry 22 }
 
-
-
 ipSystemStatsOutForwDatagrams OBJECT-TYPE
     SYNTAX     Counter32
     MAX-ACCESS read-only
@@ -1092,8 +1038,6 @@
             destination, but were discarded (e.g., for lack of
             buffer space).  Note that this counter would include
 
-
-
             datagrams counted in ipSystemStatsOutForwDatagrams if any
             such datagrams met this (discretionary) discard criterion.
 
@@ -1142,9 +1086,6 @@
 ipSystemStatsOutFragFails OBJECT-TYPE
     SYNTAX     Counter32
     MAX-ACCESS read-only
-
-
-
     STATUS     current
     DESCRIPTION
            "The number of IP datagrams that have been discarded because
@@ -1194,8 +1135,6 @@
             Discontinuities in the value of this counter can occur at
             re-initialization of the management system, and at other
 
-
-
             times as indicated by the value of
             ipSystemStatsDiscontinuityTime."
     ::= { ipSystemStatsEntry 30 }
@@ -1245,8 +1184,6 @@
             re-initialization of the management system, and at other
             times as indicated by the value of
 
-
-
             ipSystemStatsDiscontinuityTime."
     ::= { ipSystemStatsEntry 33 }
 
@@ -1295,9 +1232,6 @@
 
 ipSystemStatsHCInMcastOctets OBJECT-TYPE
     SYNTAX     Counter64
-
-
-
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
@@ -1347,8 +1281,6 @@
            "The total number of octets transmitted in IP multicast
             datagrams.  Octets from datagrams counted in
 
-
-
             ipSystemStatsOutMcastPkts MUST be counted here.
 
             Discontinuities in the value of this counter can occur at
@@ -1398,8 +1330,6 @@
             re-initialization of the management system, and at other
             times as indicated by the value of
 
-
-
             ipSystemStatsDiscontinuityTime."
     ::= { ipSystemStatsEntry 43 }
 
@@ -1448,9 +1378,6 @@
 ipSystemStatsRefreshRate OBJECT-TYPE
     SYNTAX     Unsigned32
     UNITS      "milli-seconds"
-
-
-
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
@@ -1499,9 +1426,6 @@
 IpIfStatsEntry ::= SEQUENCE {
         ipIfStatsIPVersion           InetVersion,
         ipIfStatsIfIndex             InterfaceIndex,
-
-
-
         ipIfStatsInReceives          Counter32,
         ipIfStatsHCInReceives        Counter64,
         ipIfStatsInOctets            Counter32,
@@ -1550,9 +1474,6 @@
 
 ipIfStatsIPVersion OBJECT-TYPE
     SYNTAX     InetVersion
-
-
-
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
@@ -1601,9 +1522,6 @@
     ::= { ipIfStatsEntry 4 }
 
 ipIfStatsInOctets OBJECT-TYPE
-
-
-
     SYNTAX     Counter32
     MAX-ACCESS read-only
     STATUS     current
@@ -1652,9 +1570,6 @@
 
 ipIfStatsInNoRoutes OBJECT-TYPE
     SYNTAX     Counter32
-
-
-
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
@@ -1704,8 +1619,6 @@
             re-initialization of the management system, and at other
             times as indicated by the value of
 
-
-
             ipIfStatsDiscontinuityTime."
     ::= { ipIfStatsEntry 10 }
 
@@ -1755,8 +1668,6 @@
             attempted to find a route to forward them to that final
             destination.  This object counts the same packets as
 
-
-
             ipIfStatsInForwDatagrams, but allows for larger values.
 
             Discontinuities in the value of this counter can occur at
@@ -1805,9 +1716,6 @@
 ipIfStatsReasmFails OBJECT-TYPE
     SYNTAX     Counter32
     MAX-ACCESS read-only
-
-
-
     STATUS     current
     DESCRIPTION
            "The number of failures detected by the IP re-assembly
@@ -1857,8 +1765,6 @@
             interface to which these datagrams were addressed is
             incremented.  This interface might not be the same as the
 
-
-
             input interface for some of the datagrams.
 
             Discontinuities in the value of this counter can occur at
@@ -1908,8 +1814,6 @@
             protocols (including ICMP) supplied to IP in requests for
             transmission.  This object counts the same packets as
 
-
-
             ipIfStatsOutRequests, but allows for larger values.
 
             Discontinuities in the value of this counter can occur at
@@ -1959,8 +1863,6 @@
             re-initialization of the management system, and at other
             times as indicated by the value of
 
-
-
             ipIfStatsDiscontinuityTime."
     ::= { ipIfStatsEntry 24 }
 
@@ -2010,8 +1912,6 @@
 
             When tracking interface statistics, the counter of the
 
-
-
             outgoing interface is incremented for a successfully
             fragmented datagram.
 
@@ -2060,9 +1960,6 @@
             ipIfStatsDiscontinuityTime."
     ::= { ipIfStatsEntry 29 }
 
-
-
-
 ipIfStatsOutTransmits OBJECT-TYPE
     SYNTAX     Counter32
     MAX-ACCESS read-only
@@ -2111,9 +2008,6 @@
     ::= { ipIfStatsEntry 32 }
 
 ipIfStatsHCOutOctets OBJECT-TYPE
-
-
-
     SYNTAX     Counter64
     MAX-ACCESS read-only
     STATUS     current
@@ -2163,8 +2057,6 @@
     DESCRIPTION
            "The total number of octets received in IP multicast
 
-
-
             datagrams.  Octets from datagrams counted in
             ipIfStatsInMcastPkts MUST be counted here.
 
@@ -2214,8 +2106,6 @@
             Discontinuities in the value of this counter can occur at
             re-initialization of the management system, and at other
 
-
-
             times as indicated by the value of
             ipIfStatsDiscontinuityTime."
     ::= { ipIfStatsEntry 39 }
@@ -2264,9 +2154,6 @@
     ::= { ipIfStatsEntry 42 }
 
 ipIfStatsHCInBcastPkts OBJECT-TYPE
-
-
-
     SYNTAX     Counter64
     MAX-ACCESS read-only
     STATUS     current
@@ -2316,8 +2203,6 @@
     DESCRIPTION
            "The value of sysUpTime on the most recent occasion at which
 
-
-
             any one or more of this entry's counters suffered a
             discontinuity.
 
@@ -2367,8 +2252,6 @@
             table independent of how the entity learned the prefix.
             (This table isn't limited to prefixes learned from router
 
-
-
             advertisements.)"
     ::= { ip 32 }
 
@@ -2417,9 +2300,6 @@
     SYNTAX     InetAddress
     MAX-ACCESS not-accessible
     STATUS     current
-
-
-
     DESCRIPTION
            "The address prefix.  The address type of this object is
             specified in ipAddressPrefixType.  The length of this object
@@ -2468,9 +2348,6 @@
 
 ipAddressPrefixAutonomousFlag OBJECT-TYPE
     SYNTAX     TruthValue
-
-
-
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
@@ -2519,9 +2396,6 @@
             The address generated from an invalidated prefix should not
             appear as the destination or source address of a packet.
 
-
-
-
             The default for IPv4 prefixes is 4,294,967,295 (infinity)."
     REFERENCE "For IPv6 RFC 2461, especially sections 2 and 4.6.2 and
                RFC 2462"
@@ -2571,8 +2445,6 @@
             intention in allowing a user to write to this table is to
             allow them to add or remove any entry that isn't
 
-
-
             permanent.  The user should be allowed to modify objects
             and entries when that would not cause inconsistencies
             within the table.  Allowing write access to objects, such
@@ -2622,8 +2494,6 @@
     DESCRIPTION
            "The IP address to which this entry's addressing information
 
-
-
             pertains.  The address type of this object is specified in
             ipAddressAddrType.
 
@@ -2672,9 +2542,6 @@
     SYNTAX     IpAddressOriginTC
     MAX-ACCESS read-only
     STATUS     current
-
-
-
     DESCRIPTION
            "The origin of the address."
     ::= { ipAddressEntry 6 }
@@ -2724,8 +2591,6 @@
             The RowStatus TC requires that this DESCRIPTION clause
             states under which circumstances other objects in this row
 
-
-
             can be modified.  The value of this object has no effect on
             whether other objects in this conceptual row can be
             modified.
@@ -2774,9 +2639,6 @@
     SYNTAX     IpNetToPhysicalEntry
     MAX-ACCESS not-accessible
     STATUS     current
-
-
-
     DESCRIPTION
            "Each entry contains one IP address to `physical' address
             equivalence."
@@ -2826,8 +2688,6 @@
 
             Implementors need to be aware that if the size of
 
-
-
             ipNetToPhysicalNetAddress exceeds 115 octets, then OIDS of
             instances of columns in this row will have more than 128
             sub-identifiers and cannot be accessed using SNMPv1,
@@ -2877,8 +2737,6 @@
             mapping identified with said entry.  It is an
             implementation-specific matter as to whether the agent
 
-
-
             removes an invalidated entry from the table.  Accordingly,
             management stations must be prepared to receive tabular
             information from agents that corresponds to entries not
@@ -2927,9 +2785,6 @@
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
-
-
-
            "The Neighbor Unreachability Detection state for the
             interface when the address mapping in this entry is used.
             If Neighbor Unreachability Detection is not in use (e.g. for
@@ -2978,9 +2833,6 @@
 
 ipv6ScopeZoneIndexEntry OBJECT-TYPE
     SYNTAX     Ipv6ScopeZoneIndexEntry
-
-
-
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
@@ -3029,9 +2881,6 @@
     MAX-ACCESS read-only
     STATUS     current
     DESCRIPTION
-
-
-
            "The zone index for scope 3 on this interface."
     ::= { ipv6ScopeZoneIndexEntry 3 }
 
@@ -3080,9 +2929,6 @@
     SYNTAX     InetZoneIndex
     MAX-ACCESS read-only
     STATUS     current
-
-
-
     DESCRIPTION
            "The zone index for scope 9 on this interface."
     ::= { ipv6ScopeZoneIndexEntry 9 }
@@ -3132,8 +2978,6 @@
     DESCRIPTION
            "The table used to describe the default routers known to this
 
-
-
             entity."
     ::= { ip 37 }
 
@@ -3182,9 +3026,6 @@
 
 ipDefaultRouterIfIndex OBJECT-TYPE
     SYNTAX     InterfaceIndex
-
-
-
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
@@ -3234,8 +3075,6 @@
     REFERENCE "RFC 4291, section 2.1"
     ::= { ipDefaultRouterEntry 5 }
 
-
-
 --
 -- Configuration information for constructing router advertisements
 --
@@ -3284,9 +3123,6 @@
             object is written, the entity SHOULD save the change to
             non-volatile storage."
     INDEX { ipv6RouterAdvertIfIndex }
-
-
-
     ::= { ipv6RouterAdvertTable 1 }
 
 Ipv6RouterAdvertEntry ::= SEQUENCE {
@@ -3336,8 +3172,6 @@
     DESCRIPTION
            "The maximum time allowed between sending unsolicited router
 
-
-
             advertisements from this interface."
     REFERENCE "RFC 2461 Section 6.2.1"
     DEFVAL { 600 }
@@ -3386,9 +3220,6 @@
     SYNTAX     Unsigned32
     MAX-ACCESS read-create
     STATUS     current
-
-
-
     DESCRIPTION
            "The value to be placed in MTU options sent by the router on
             this interface.
@@ -3438,8 +3269,6 @@
            "The default value to be placed in the current hop limit
             field in router advertisements sent from this interface.
 
-
-
             The value should be set to the current diameter of the
             Internet.
 
@@ -3489,8 +3318,6 @@
 
 --
 
-
-
 -- ICMP section
 --
 
@@ -3539,9 +3366,6 @@
     STATUS     current
     DESCRIPTION
            "The IP version of the statistics."
-
-
-
     ::= { icmpStatsEntry 1 }
 
 icmpStatsInMsgs OBJECT-TYPE
@@ -3591,8 +3415,6 @@
 --
 -- per-version, per-message type ICMP counters
 
-
-
 --
 
 icmpMsgStatsTable OBJECT-TYPE
@@ -3641,9 +3463,6 @@
 icmpMsgStatsType OBJECT-TYPE
     SYNTAX     Integer32 (0..255)
     MAX-ACCESS not-accessible
-
-
-
     STATUS     current
     DESCRIPTION
            "The ICMP type field of the message type being counted by
@@ -3692,9 +3511,6 @@
             expressed in OBJECT clause form in this description
             clause:
 
-
-
-
             -- OBJECT        ipSystemStatsIPVersion
             -- SYNTAX        InetVersion {ipv4(1), ipv6(2)}
             -- DESCRIPTION
@@ -3744,8 +3560,6 @@
             -- DESCRIPTION
             --     This MIB requires support for only global and
 
-
-
             --     non-global IPv4 and IPv6 addresses and so the size
             --     can be 4, 8, 16, or 20 bytes.
             --
@@ -3795,8 +3609,6 @@
            "This group is mandatory for systems that have an aggregate
             bandwidth of greater than 650MB.  Including this group
 
-
-
             does not allow an entity to neglect the 32 bit versions of
             these objects."
 
@@ -3846,8 +3658,6 @@
     DESCRIPTION
            "This group is mandatory for all systems supporting IPv4 and
 
-
-
             including the ipIfStatsHCPacketGroup.  Including this group
             does not allow an entity to neglect the 32 bit versions of
             these objects."
@@ -3896,9 +3706,6 @@
 
     OBJECT     ipv6InterfaceEnableStatus
     MIN-ACCESS read-only
-
-
-
     DESCRIPTION
            "An agent is not required to provide write access to this
             object."
@@ -3948,8 +3755,6 @@
            "An agent is not required to provide write or create access
             to this object.
 
-
-
             If an agent allows this object to be written or created, it
             is not required to allow this object to be set to readOnly,
             permanent, or nonVolatile."
@@ -3998,9 +3803,6 @@
            "An agent is not required to provide write access to this
             object."
 
-
-
-
     OBJECT     ipv6RouterAdvertOtherConfigFlag
     MIN-ACCESS read-only
     DESCRIPTION
@@ -4042,16 +3844,12 @@
     DESCRIPTION
            "An agent is not required to provide write or create access
             to this object."
-
     ::= { ipMIBCompliances 2 }
 
 -- units of conformance
 
 ipv4GeneralGroup OBJECT-GROUP
     OBJECTS   { ipForwarding, ipDefaultTTL, ipReasmTimeout }
-
-
-
     STATUS     current
     DESCRIPTION
            "The group of IPv4-specific objects for basic management of
@@ -4101,8 +3899,6 @@
             value."
     ::= { ipMIBGroups 7 }
 
-
-
 ipSystemStatsGroup OBJECT-GROUP
     OBJECTS   { ipSystemStatsInReceives,
                 ipSystemStatsInOctets,
@@ -4151,9 +3947,6 @@
                 ipSystemStatsHCInMcastOctets,
                 ipSystemStatsHCOutMcastOctets
 }
-
-
-
     STATUS     current
     DESCRIPTION
            "IP system wide statistics for systems that may overflow the
@@ -4202,9 +3995,6 @@
                 ipIfStatsDiscontinuityTime, ipIfStatsRefreshRate }
     STATUS     current
     DESCRIPTION
-
-
-
            "IP per-interface statistics."
     ::= { ipMIBGroups 13 }
 
@@ -4253,9 +4043,6 @@
                 ipAddressPrefixAdvPreferredLifetime,
                 ipAddressPrefixAdvValidLifetime }
     STATUS     current
-
-
-
     DESCRIPTION
            "The group of objects for providing information about address
             prefixes used by this node."
@@ -4304,9 +4091,6 @@
 
 ipDefaultRouterGroup OBJECT-GROUP
     OBJECTS   { ipDefaultRouterLifetime, ipDefaultRouterPreference }
-
-
-
     STATUS     current
     DESCRIPTION
            "The group of objects for providing information about default
@@ -4356,8 +4140,6 @@
 
             This object has been deprecated, as a new IP version-neutral
 
-
-
             table has been added.  It is loosely replaced by
             ipSystemStatsInRecieves."
     ::= { ip 3 }
@@ -4407,8 +4189,6 @@
             final destination.  In entities which do not act as IPv4
             routers, this counter will include only those packets which
 
-
-
             were Source-Routed via this entity, and the Source-Route
             option processing was successful.
 
@@ -4458,8 +4238,6 @@
             This object has been deprecated as a new IP version neutral
             table has been added.  It is loosely replaced by
 
-
-
             ipSystemStatsIndelivers."
     ::= { ip 9 }
 
@@ -4509,8 +4287,6 @@
 
             This object has been deprecated, as a new IP version-neutral
 
-
-
             table has been added.  It is loosely replaced by
             ipSystemStatsOutNoRoutes."
     ::= { ip 12 }
@@ -4559,9 +4335,6 @@
 
 ipFragOKs OBJECT-TYPE
     SYNTAX     Counter32
-
-
-
     MAX-ACCESS read-only
     STATUS     deprecated
     DESCRIPTION
@@ -4611,8 +4384,6 @@
             for discarding such an entry could be to free-up buffer
             space for other routing entries.
 
-
-
             This object was defined in pre-IPv6 versions of the IP MIB.
             It was implicitly IPv4 only, but the original specifications
             did not indicate this protocol restriction.  In order to
@@ -4661,9 +4432,6 @@
     MAX-ACCESS read-only
     STATUS     deprecated
     DESCRIPTION
-
-
-
            "The IPv4 address to which this entry's addressing
             information pertains."
     ::= { ipAddrEntry 1 }
@@ -4713,8 +4481,6 @@
             on this interface."
     ::= { ipAddrEntry 5 }
 
-
-
 -- the deprecated IPv4 Address Translation table
 
 -- The Address Translation tables contain the IpAddress to
@@ -4764,8 +4530,6 @@
             effective.  The interface identified by a particular value
             of this index is the same interface as identified by the
 
-
-
             same value of the IF-MIB's ifIndex.
 
             This object predates the rule limiting index objects to a
@@ -4815,8 +4579,6 @@
 
             Setting this object to the value invalid(2) has the effect
 
-
-
             of invalidating the corresponding entry in the
             ipNetToMediaTable.  That is, it effectively dis-associates
             the interface identified with said entry from the mapping
@@ -4865,9 +4627,6 @@
             icmpStatsInErrors."
     ::= { icmp 2 }
 
-
-
-
 icmpInDestUnreachs OBJECT-TYPE
     SYNTAX     Counter32
     MAX-ACCESS read-only
@@ -4917,8 +4676,6 @@
             the icmpMsgStatsTable."
     ::= { icmp 6 }
 
-
-
 icmpInRedirects OBJECT-TYPE
     SYNTAX     Counter32
     MAX-ACCESS read-only
@@ -4967,9 +4724,6 @@
             the icmpMsgStatsTable."
     ::= { icmp 10 }
 
-
-
-
 icmpInTimestampReps OBJECT-TYPE
     SYNTAX     Counter32
     MAX-ACCESS read-only
@@ -5018,9 +4772,6 @@
             This object has been deprecated, as a new IP version-neutral
             table has been added.  It is loosely replaced by
             icmpStatsOutMsgs."
-
-
-
     ::= { icmp 14 }
 
 icmpOutErrors OBJECT-TYPE
@@ -5069,9 +4820,6 @@
     SYNTAX     Counter32
     MAX-ACCESS read-only
     STATUS     deprecated
-
-
-
     DESCRIPTION
            "The number of ICMP Parameter Problem messages sent.
 
@@ -5120,9 +4868,6 @@
 
 icmpOutEchoReps OBJECT-TYPE
     SYNTAX     Counter32
-
-
-
     MAX-ACCESS read-only
     STATUS     deprecated
     DESCRIPTION
@@ -5171,9 +4916,6 @@
 
 icmpOutAddrMaskReps OBJECT-TYPE
     SYNTAX     Counter32
-
-
-
     MAX-ACCESS read-only
     STATUS     deprecated
     DESCRIPTION
@@ -5222,9 +4964,6 @@
            "The ip group of objects providing for basic management of IP
             entities, exclusive of the management of IP routes.
 
-
-
-
             As part of the version independence, this group has been
             deprecated.  "
     ::= { ipMIBGroups 1 }
diff --git a/mibs/IPV6-FLOW-LABEL-MIB.txt b/mibs/IPV6-FLOW-LABEL-MIB.txt
index f30f4ca..6fb3659 100644
--- a/mibs/IPV6-FLOW-LABEL-MIB.txt
+++ b/mibs/IPV6-FLOW-LABEL-MIB.txt
@@ -15,10 +15,6 @@
                    3461 GL Linschoten
                    Netherlands
 
-
-
-
-
                    Phone: +31 348-407-775
                    EMail: bwijnen@lucent.com
 
@@ -35,7 +31,6 @@
 
     REVISION      "200308280000Z"  -- 28 August 2003
     DESCRIPTION   "Initial version, published as RFC 3595."
-
     ::= { mib-2 103 }
 
 IPv6FlowLabel      ::= 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 136199c..6d31242 100644
--- a/mibs/Makefile.mib
+++ b/mibs/Makefile.mib
@@ -14,19 +14,26 @@
 	SNMP-FRAMEWORK-MIB.txt SNMP-MPD-MIB.txt SNMP-USER-BASED-SM-MIB.txt \
 	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-SCRIPT-MIB.txt DISMAN-SCHEDULE-MIB.txt \
+	DISMAN-PING-MIB.txt DISMAN-TRACEROUTE-MIB.txt \
+	DISMAN-NSLOOKUP-MIB.txt DISMAN-EVENT-MIB.txt \
+	DISMAN-EXPRESSION-MIB.txt NOTIFICATION-LOG-MIB.txt \
 	IANA-LANGUAGE-MIB.txt IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt \
 	IF-MIB.txt IF-INVERTED-STACK-MIB.txt \
 	IP-MIB.txt IP-FORWARD-MIB.txt TCP-MIB.txt UDP-MIB.txt \
-	IANAifType-MIB.txt EtherLike-MIB.txt \
+	IANAifType-MIB.txt IANA-RTPROTO-MIB.txt EtherLike-MIB.txt \
 	IPV6-TC.txt IPV6-MIB.txt IPV6-ICMP-MIB.txt \
-	IPV6-TCP-MIB.txt IPV6-UDP-MIB.txt \
+	IPV6-TCP-MIB.txt IPV6-UDP-MIB.txt IPV6-FLOW-LABEL-MIB.txt \
 	HOST-RESOURCES-MIB.txt HOST-RESOURCES-TYPES.txt \
 	NETWORK-SERVICES-MIB.txt MTA-MIB.txt \
 	RMON-MIB.txt \
-	RFC1155-SMI.txt RFC1213-MIB.txt \
-	SCTP-MIB.txt
+	TUNNEL-MIB.txt \
+	TRANSPORT-ADDRESS-MIB.txt \
+	RFC1155-SMI.txt RFC1213-MIB.txt\
+	SCTP-MIB.txt BRIDGE-MIB.txt
 
 MIBDEPS = Makefile.mib mibfetch smistrip
 
@@ -65,6 +72,15 @@
 SNMP-COMMUNITY-MIB.txt:	$(MIBDEPS)
 	./mibfetch $(RFCHOST) $(RFCDIR) 2576
 
+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
+
 SNMPv2-SMI.txt:	$(MIBDEPS)
 	./mibfetch $(RFCHOST) $(RFCDIR) 2578 SNMPv2-SMI
 
@@ -92,6 +108,18 @@
 DISMAN-SCRIPT-MIB.txt:	$(MIBDEPS)
 	./mibfetch $(RFCHOST) $(RFCDIR) 3165
 
+DISMAN-EXPRESSION-MIB.txt:	$(MIBDEPS)
+	./mibfetch $(RFCHOST) $(RFCDIR) 2982
+
+DISMAN-EVENT-MIB.txt:	$(MIBDEPS)
+	./mibfetch $(RFCHOST) $(RFCDIR) 2981
+
+DISMAN-NSLOOKUP-MIB.txt DISMAN-TRACEROUTE-MIB.txt DISMAN-PING-MIB.txt:	$(MIBDEPS)
+	./mibfetch $(RFCHOST) $(RFCDIR) 4560
+
+NOTIFICATION-LOG-MIB.txt:	$(MIBDEPS)
+	./mibfetch $(RFCHOST) $(RFCDIR) 3014
+
 IF-MIB.txt:	$(MIBDEPS)
 	./mibfetch $(RFCHOST) $(RFCDIR) 2863
 
@@ -110,6 +138,9 @@
 IANAifType-MIB.txt:	$(MIBDEPS)
 	./mibfetch -x $(IANAHOST) $(IANADIR) ianaiftype-mib
 
+IANA-RTPROTO-MIB.txt:	$(MIBDEPS)
+	./mibfetch -x $(IANAHOST) $(IANADIR) ianaiprouteprotocol-mib
+
 IANA-LANGUAGE-MIB.txt:	$(MIBDEPS)
 	./mibfetch -x $(IANAHOST) $(IANADIR) ianalanguage-mib
 
@@ -117,16 +148,22 @@
 	./mibfetch -x $(IANAHOST) $(IANADIR) ianaaddressfamilynumbers-mib
 
 IP-MIB.txt:	$(MIBDEPS)
-	./mibfetch $(RFCHOST) $(RFCDIR) 2011
+	./mibfetch $(RFCHOST) $(RFCDIR) 4293
 
 IP-FORWARD-MIB.txt:	$(MIBDEPS)
-	./mibfetch $(RFCHOST) $(RFCDIR) 2096
+	./mibfetch $(RFCHOST) $(RFCDIR) 4292
 
 TCP-MIB.txt:	$(MIBDEPS)
 	./mibfetch $(RFCHOST) $(RFCDIR) 4022
 
 UDP-MIB.txt:	$(MIBDEPS)
-	./mibfetch $(RFCHOST) $(RFCDIR) 2013
+	./mibfetch $(RFCHOST) $(RFCDIR) 4113
+
+TUNNEL-MIB.txt:	$(MIBDEPS)
+	./mibfetch $(RFCHOST) $(RFCDIR) 4087
+
+TRANSPORT-ADDRESS-MIB.txt:	$(MIBDEPS)
+	./mibfetch $(RFCHOST) $(RFCDIR) 3419
 
 IPV6-TC.txt IPV6-MIB.txt:	$(MIBDEPS)
 	./mibfetch $(RFCHOST) $(RFCDIR) 2465
@@ -140,6 +177,9 @@
 IPV6-UDP-MIB.txt:	$(MIBDEPS)
 	./mibfetch $(RFCHOST) $(RFCDIR) 2454
 
+IPV6-FLOW-LABEL-MIB.txt:	$(MIBDEPS)
+	./mibfetch $(RFCHOST) $(RFCDIR) 3595
+
 HOST-RESOURCES-MIB.txt HOST-RESOURCES-TYPES.txt:	$(MIBDEPS)
 	./mibfetch $(RFCHOST) $(RFCDIR) 2790
 
@@ -158,9 +198,12 @@
 RFC1213-MIB.txt:	$(MIBDEPS)
 	./mibfetch $(RFCHOST) $(RFCDIR) 1213
 
-SCTP.txt:	$(MIBDEPS)
+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-PERIODIC-NOTIFY-MIB.txt b/mibs/NET-SNMP-PERIODIC-NOTIFY-MIB.txt
new file mode 100644
index 0000000..83eacad
--- /dev/null
+++ b/mibs/NET-SNMP-PERIODIC-NOTIFY-MIB.txt
@@ -0,0 +1,83 @@
+NET-SNMP-PERIODIC-NOTIFY-MIB DEFINITIONS ::= BEGIN
+
+--
+-- Objects for periodic notifications containing data payloads
+--
+
+IMPORTS
+    netSnmpModuleIDs, netSnmpObjects, netSnmpNotifications FROM NET-SNMP-MIB
+
+    OBJECT-TYPE, NOTIFICATION-TYPE, MODULE-IDENTITY, Integer32, Unsigned32
+        FROM SNMPv2-SMI
+
+    DisplayString FROM SNMPv2-TC;
+
+
+netSnmpPeriodicNotifyMib MODULE-IDENTITY
+    LAST-UPDATED "201104200000Z"
+    ORGANIZATION "www.net-snmp.org"
+    CONTACT-INFO    
+	 "postal:   Wes Hardaker
+                    P.O. Box 382
+                    Davis CA  95617
+
+          email:    net-snmp-coders@lists.sourceforge.net"
+    DESCRIPTION
+	"Objects for periodic notifications containing data payloads"
+    REVISION     "201104200000Z"
+    DESCRIPTION
+	"First revision."
+    ::= { netSnmpModuleIDs 5 }
+
+nsPNScalars                 OBJECT IDENTIFIER ::= {netSnmpPeriodicNotifyMib 1}
+nsPNTables                  OBJECT IDENTIFIER ::= {netSnmpPeriodicNotifyMib 2}
+nsPNotifyObjects            OBJECT IDENTIFIER ::= {netSnmpPeriodicNotifyMib 3}
+nsPNotificationPrefix       OBJECT IDENTIFIER ::= {netSnmpPeriodicNotifyMib 4}
+nsPNotifications            OBJECT IDENTIFIER ::= {nsPNotificationPrefix 0}
+nsPNotificationObjects      OBJECT IDENTIFIER ::= {nsPNotificationPrefix 1}
+
+--
+-- Notification Definitions
+--
+
+nsNotifyPeriodicNotification        NOTIFICATION-TYPE
+    STATUS	current
+    DESCRIPTION
+	"Data delivery notification from a configured list of periodic
+	data sets to deliver.  See the snmpd.conf manual page for
+	details about configuring Net-SNMP agents for sending these
+	notifications out on a regular basis."
+    ::= { nsPNotifications 1 }
+
+--
+-- Objects that can be put into the notifications
+--
+
+nsPNPeriodicTime OBJECT-TYPE
+     SYNTAX      Unsigned32
+     MAX-ACCESS  accessible-for-notify
+     STATUS      current
+     DESCRIPTION
+         "The number of seconds between notifications containing this data set."
+     ::= { nsPNotifyObjects 1 }
+
+nsPNotifyMessageNumber OBJECT-TYPE
+    SYNTAX      Unsigned32
+    MAX-ACCESS  accessible-for-notify
+    STATUS      current
+    DESCRIPTION
+        "Indicates this is the Nth notification in a longer sequence
+        of notifications"
+    ::= { nsPNotifyObjects 2 }
+
+nsPNotifyMaxMessageNumber OBJECT-TYPE
+    SYNTAX      Unsigned32
+    MAX-ACCESS  accessible-for-notify
+    STATUS      current
+    DESCRIPTION
+        "The maximum number of messages this notification sequence
+        will contain."
+    ::= { nsPNotifyObjects 3 }
+
+
+END
diff --git a/mibs/NET-SNMP-TC.txt b/mibs/NET-SNMP-TC.txt
index f3ff5df..46f7302 100644
--- a/mibs/NET-SNMP-TC.txt
+++ b/mibs/NET-SNMP-TC.txt
@@ -120,5 +120,9 @@
 netSnmpUDPIPv6Domain	OBJECT IDENTIFIER ::= { netSnmpDomains 4 } -- obsolete
 netSnmpTCPIPv6Domain	OBJECT IDENTIFIER ::= { netSnmpDomains 5 } -- obsolete
 netSnmpCallbackDomain	OBJECT IDENTIFIER ::= { netSnmpDomains 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/NOTIFICATION-LOG-MIB.txt b/mibs/NOTIFICATION-LOG-MIB.txt
index c60b7d2..c7da934 100644
--- a/mibs/NOTIFICATION-LOG-MIB.txt
+++ b/mibs/NOTIFICATION-LOG-MIB.txt
@@ -23,7 +23,6 @@
     DESCRIPTION
      "The MIB module for logging SNMP Notifications, that is, Traps
 
-
      and Informs."
 -- Revision History
 
@@ -32,7 +31,6 @@
                Published as RFC 3014"
     ::= { mib-2 92 }
 
-
 notificationLogMIBObjects OBJECT IDENTIFIER ::= { notificationLogMIB 1 }
 
 nlmConfig OBJECT IDENTIFIER ::= { notificationLogMIBObjects 1 }
@@ -72,8 +70,6 @@
 
 nlmConfigGlobalAgeOut OBJECT-TYPE
     SYNTAX      Unsigned32
-
-
     UNITS       "minutes"
     MAX-ACCESS  read-write
     STATUS      current
@@ -93,7 +89,6 @@
     DEFVAL { 1440 }  -- 24 hours
     ::= { nlmConfig 2 }
 
-
 --
 -- Basic Log Configuration Table
 --
@@ -122,8 +117,6 @@
     nlmConfigLogFilterName    SnmpAdminString,
     nlmConfigLogEntryLimit    Unsigned32,
     nlmConfigLogAdminStatus   INTEGER,
-
-
     nlmConfigLogOperStatus    INTEGER,
     nlmConfigLogStorageType   StorageType,
     nlmConfigLogEntryStatus   RowStatus
@@ -172,8 +165,6 @@
      Notifications in the log, the oldest Notifications are discarded
      to bring the log down to the new limit.
 
-
-
      A value of 0 indicates no limit.
 
      Please be aware that contention between multiple managers
@@ -222,8 +213,6 @@
     ::= { nlmConfigLogEntry 6 }
 
 nlmConfigLogEntryStatus OBJECT-TYPE
-
-
     SYNTAX     RowStatus
     MAX-ACCESS read-create
     STATUS     current
@@ -272,8 +261,6 @@
 nlmStatsLogTable OBJECT-TYPE
     SYNTAX      SEQUENCE OF NlmStatsLogEntry
     MAX-ACCESS  not-accessible
-
-
     STATUS      current
     DESCRIPTION
      "A table of Notification log statistics entries."
@@ -315,13 +302,13 @@
      nlmConfigGlobalAgeOut."
     ::= { nlmStatsLogEntry 2 }
 
-
 --
 -- Log Section
 --
 
 --
 -- Log Table
+
 --
 
 nlmLogTable OBJECT-TYPE
@@ -370,8 +357,6 @@
     INDEX       { nlmLogName, nlmLogIndex }
     ::= { nlmLogTable 1 }
 
-
-
 NlmLogEntry ::= SEQUENCE {
     nlmLogIndex                Unsigned32,
     nlmLogTime                 TimeStamp,
@@ -421,7 +406,6 @@
     DESCRIPTION
      "The identification of the SNMP engine at which the Notification
 
-
      originated.
 
      If the log can contain Notifications from only one engine
@@ -470,8 +454,6 @@
     MAX-ACCESS  read-only
     STATUS      current
     DESCRIPTION
-
-
      "If the Notification was received in a protocol which has a
       contextEngineID element like SNMPv3, this object has that value.
       Otherwise its value is a zero-length string."
@@ -521,7 +503,6 @@
 
 NlmLogVariableEntry ::= SEQUENCE {
 
-
     nlmLogVariableIndex              Unsigned32,
     nlmLogVariableID                 OBJECT IDENTIFIER,
     nlmLogVariableValueType          INTEGER,
@@ -570,8 +551,6 @@
     MAX-ACCESS  read-only
     STATUS      current
     DESCRIPTION
-
-
      "The value when nlmLogVariableType is 'counter32'."
     ::= { nlmLogVariableEntry 4 }
 
@@ -621,7 +600,6 @@
      IPv6 addresses are represented using TAddress or
      InetAddress, and so the underlying datatype is
 
-
      OCTET STRING, and their value would be stored in
      the nlmLogVariableOctetStringVal column."
     ::= { nlmLogVariableEntry 9 }
@@ -650,7 +628,6 @@
      "The value when nlmLogVariableType is 'opaque'."
     ::= { nlmLogVariableEntry 12 }
 
-
 --
 -- Conformance
 --
@@ -671,7 +648,6 @@
           the Notification Log MIB."
      MODULE    -- this module
 
-
           MANDATORY-GROUPS {
                notificationLogConfigGroup,
                notificationLogStatsGroup,
@@ -704,7 +680,6 @@
           "This group is mandatory on systems that keep wall clock
           date and time and should not be implemented on systems that
           do not have a wall clock date."
-
      ::= { notificationLogMIBCompliances 1 }
 
 -- Units of Conformance
@@ -720,8 +695,6 @@
           nlmConfigLogStorageType,
           nlmConfigLogEntryStatus
      }
-
-
      STATUS current
      DESCRIPTION
           "Notification log configuration management."
@@ -770,8 +743,6 @@
           nlmLogDateAndTime
      }
      STATUS current
-
-
      DESCRIPTION
           "Conditionally mandatory notification log data.
           This group is mandatory on systems that keep wall
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/SNMP-USM-AES-MIB.txt b/mibs/SNMP-USM-AES-MIB.txt
index e9e9fb8..4c17302 100644
--- a/mibs/SNMP-USM-AES-MIB.txt
+++ b/mibs/SNMP-USM-AES-MIB.txt
@@ -39,9 +39,9 @@
             see the RFC itself for full legal notices.
             Supplementary information may be available on
             http://www.ietf.org/copyrights/ianamib.html."
+
     REVISION     "200406140000Z"
     DESCRIPTION  "Initial version, published as RFC3826"
-
     ::= { snmpModules 20 }
 
 usmAesCfb128Protocol OBJECT-IDENTITY
diff --git a/mibs/SNMP-USM-DH-OBJECTS-MIB.txt b/mibs/SNMP-USM-DH-OBJECTS-MIB.txt
index ee2076a..7377425 100644
--- a/mibs/SNMP-USM-DH-OBJECTS-MIB.txt
+++ b/mibs/SNMP-USM-DH-OBJECTS-MIB.txt
@@ -23,7 +23,6 @@
                           Redwood City, CA 94063
                   Email:  stjohns@corp.home.net
                   Phone:  +1-650-556-5368"
-
     DESCRIPTION
         "The management information definitions for providing forward
     secrecy for key changes for the usmUserTable, and for providing a
@@ -33,8 +32,6 @@
     REVISION     "200003060000Z"
     DESCRIPTION
        "Initial version published as RFC 2786."
-
-
     ::= { experimental 101 }  -- IANA DHKEY-CHANGE 101
 
 -- Administrative assignments
@@ -111,7 +108,6 @@
            base    INTEGER,   -- g
            privateValueLength  INTEGER OPTIONAL }
 
-
     Implementors are encouraged to use either the values from
     Oakley Group 1  or the values of from Oakley Group 2 as specified
     in RFC-2409, The Internet Key Exchange, Section 6.1, 6.2 as the
@@ -237,6 +233,7 @@
     an implementor will specify one or more standard security names
     and will provide entries in the VACM tables granting various
     levels of access to those names.  The actual content of the VACM
+
     table is beyond the scope of this MIB.
 
     Note: This table is expected to be readable without authentication
@@ -249,7 +246,6 @@
     MAX-ACCESS  not-accessible
     STATUS      current
     DESCRIPTION
-
         "An entry in the usmDHKickstartTable.  The agent SHOULD either
     delete this entry or mark it as inactive upon a successful SET of
     any of the KeyChange-typed objects in the usmUserEntry or upon a
@@ -260,7 +256,6 @@
     one or more of the keys for a row in usmUserTable with a
     particular security name, the row in this table with that same
     security name is no longer useful or meaningful."
-
     INDEX   { usmDHKickstartIndex }
     ::= {usmDHKickstartTable 1 }
 
@@ -285,6 +280,7 @@
     STATUS      current
     DESCRIPTION
         "The agent's Diffie-Hellman public value for this row.  At
+
     initialization, the agent generates a random number and derives
     its public value from that number.  This public value is published
     here.  This public value 'y' equals g^r MOD p where g is the from
@@ -303,7 +299,6 @@
         where PV1,...,PVk are the octets of PV from first to last, and
         where PV1 != 0.
 
-
     The following DH parameters (Oakley group #2, RFC 2409, sec 6.1,
     6.2) are used for this object:
 
@@ -328,10 +323,10 @@
     MAX-ACCESS  read-only
     STATUS      current
     DESCRIPTION
-
         "The manager's Diffie-Hellman public value for this row.  Note
     that this value is not set via the SNMP agent, but may be set via
     some out of band method, such as the device's configuration file.
+
     The manager calculates this value in the same manner and using the
     same parameter set as the agent does.  E.g. it selects a random
     number 'r', calculates y = g^r mod p and provides 'y' as the
@@ -428,6 +423,7 @@
         implements the usmUserTable and which wishes the ability to
         populate the USM table based on out-of-band provided DH
         ignition values.
+
              Any agent implementing this group is expected to provide
         preinstalled entries in the vacm tables as follows:
 
@@ -476,6 +472,7 @@
         vacmViewTreeFamilyViewName      'dhKickRestricted'
         vacmViewTreeFamilySubtree       1.3.6.1.2.1.1  (system)
         vacmViewTreeFamilyMask          ''
+
         vacmViewTreeFamilyType          1
         vacmViewTreeFamilyStorageType   permanent
         vacmViewTreeFamilyStatus        active
@@ -493,7 +490,6 @@
         DESCRIPTION
             "It is compliant to implement this object as read-only for
         any device."
-
     ::= { usmDHKeyMIBCompliances 1 }
 
 -- Units of Compliance
@@ -533,5 +529,4 @@
     non-confidential access."
     ::= { usmDHKeyMIBGroups 3 }
 
-
 END
diff --git a/mibs/TRANSPORT-ADDRESS-MIB.txt b/mibs/TRANSPORT-ADDRESS-MIB.txt
index 7d450fb..227886e 100644
--- a/mibs/TRANSPORT-ADDRESS-MIB.txt
+++ b/mibs/TRANSPORT-ADDRESS-MIB.txt
@@ -13,6 +13,7 @@
          TU Braunschweig
          Bueltenweg 74/75
          38106 Braunschweig, Germany
+
          Phone: +49 531 391-3289
          EMail: schoenw@ibr.cs.tu-bs.de
 
@@ -32,7 +33,6 @@
         "Initial version, published as RFC 3419."
     ::= { mib-2 100 }
 
-
 transportDomains OBJECT IDENTIFIER ::= { transportAddressMIB 1 }
 
 transportDomainUdpIpv4 OBJECT-IDENTITY
@@ -205,6 +205,7 @@
          tcpIpv4(5)     transportDomainTcpIpv4
          tcpIpv6(6)     transportDomainTcpIpv6
          tcpIpv4z(7)    transportDomainTcpIpv4z
+
          tcpIpv6z(8)    transportDomainTcpIpv6z
          sctpIpv4(9)    transportDomainSctpIpv4
          sctpIpv6(10)   transportDomainSctpIpv6
@@ -253,6 +254,7 @@
          A TransportAddress value is always interpreted within the
          context of a TransportAddressType or TransportDomain value.
          Every usage of the TransportAddress textual convention MUST
+
          specify the TransportAddressType or TransportDomain object
          which provides the context. Furthermore, MIB authors SHOULD
          define a separate TransportAddressType or TransportDomain
@@ -349,6 +351,7 @@
 
          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."
@@ -397,6 +400,7 @@
          time of the management operation).
 
          The DESCRIPTION clause of TransportAddress objects that may
+
          have TransportAddressDns values must fully describe how (and
          when) such names are to be resolved to IP addresses and vice
          versa.
diff --git a/mibs/TUNNEL-MIB.txt b/mibs/TUNNEL-MIB.txt
index 615faa6..5f9596b 100644
--- a/mibs/TUNNEL-MIB.txt
+++ b/mibs/TUNNEL-MIB.txt
@@ -37,8 +37,6 @@
             version of this MIB module is part of RFC 4087;  see
             the RFC itself for full legal notices."
 
-
-
     REVISION     "200505160000Z" -- May 16, 2005
     DESCRIPTION
             "IPv4-specific objects were deprecated, including
@@ -87,9 +85,6 @@
     DESCRIPTION
             "The (conceptual) table containing information on
             configured tunnels."
-
-
-
     ::= { tunnel 1 }
 
 tunnelIfEntry OBJECT-TYPE
@@ -139,8 +134,6 @@
             (i.e., the destination address used in the outer IP
             header), or 0.0.0.0 if unknown, or an IPv6 address, or
 
-
-
             the tunnel is not a point-to-point link (e.g., if it
             is a 6to4 tunnel).
 
@@ -190,8 +183,6 @@
     DESCRIPTION
             "The method used to set the high 6 bits (the
 
-
-
             differentiated services codepoint) of the IPv4 TOS or
             IPv6 Traffic Class in the outer IP header.  A value of
             -1 indicates that the bits are copied from the
@@ -241,8 +232,6 @@
             (i.e., the source address used in the outer IP
             header).  If the address is unknown, the value is
 
-
-
             0.0.0.0 for IPv4 or :: for IPv6.  The type of this
             object is given by tunnelIfAddressType."
     ::= { tunnelIfEntry 9 }
@@ -291,9 +280,6 @@
             deprecated in favor of tunnelInetConfigTable."
     ::= { tunnel 2 }
 
-
-
-
 tunnelConfigEntry OBJECT-TYPE
     SYNTAX     TunnelConfigEntry
     MAX-ACCESS not-accessible
@@ -343,8 +329,6 @@
             deprecated in favor of tunnelInetConfigRemoteAddress."
     ::= { tunnelConfigEntry 2 }
 
-
-
 tunnelConfigEncapsMethod OBJECT-TYPE
     SYNTAX     IANAtunnelType
     MAX-ACCESS not-accessible
@@ -393,9 +377,6 @@
 
 tunnelConfigStatus OBJECT-TYPE
     SYNTAX     RowStatus
-
-
-
     MAX-ACCESS read-create
     STATUS     deprecated
     DESCRIPTION
@@ -444,9 +425,6 @@
     MAX-ACCESS not-accessible
     STATUS     current
     DESCRIPTION
-
-
-
             "The (conceptual) table containing information on
             configured tunnels.  This table can be used to map a
             set of tunnel endpoints to the associated ifIndex
@@ -495,9 +473,6 @@
 }
 
 tunnelInetConfigAddressType OBJECT-TYPE
-
-
-
     SYNTAX     InetAddressType
     MAX-ACCESS not-accessible
     STATUS     current
@@ -547,8 +522,6 @@
             allow multiple parallel tunnels, the manager is
             responsible for choosing any ID which does not
 
-
-
             conflict with an existing row, such as choosing a
             random number."
     ::= { tunnelInetConfigEntry 5 }
@@ -598,8 +571,6 @@
             implementation-dependent manner, and corresponding
             rows will be instantiated in the ifTable and the
 
-
-
             tunnelIfTable.  The status of this row will become
             active as soon as the agent assigns the interface
             index, regardless of whether the interface is
@@ -648,9 +619,6 @@
 
         OBJECT      tunnelIfTOS
         MIN-ACCESS  read-only
-
-
-
         DESCRIPTION
             "Write access is not required."
 
@@ -700,8 +668,6 @@
         DESCRIPTION
             "Write access is not required."
 
-
-
         OBJECT      tunnelIfAddressType
         SYNTAX      InetAddressType { ipv4(1), ipv6(2),
                                       ipv4z(3), ipv6z(4) }
@@ -751,8 +717,6 @@
     DESCRIPTION
             "A collection of objects to support basic management
 
-
-
             of IPv4 Tunnels.  Since this group cannot support
             IPv6, it is deprecated in favor of
             tunnelMIBInetGroup."
diff --git a/mibs/UCD-SNMP-MIB.txt b/mibs/UCD-SNMP-MIB.txt
index 1c658e0..e8acc8c 100644
--- a/mibs/UCD-SNMP-MIB.txt
+++ b/mibs/UCD-SNMP-MIB.txt
@@ -30,14 +30,14 @@
 
 IMPORTS
     OBJECT-TYPE, NOTIFICATION-TYPE, MODULE-IDENTITY,
-    Integer32, Opaque, enterprises, Counter32
+    Integer32, Opaque, enterprises, Counter32, Unsigned32
         FROM SNMPv2-SMI
 
     TEXTUAL-CONVENTION, DisplayString, TruthValue
 	FROM SNMPv2-TC;
 
 ucdavis MODULE-IDENTITY
-    LAST-UPDATED "200611220000Z"
+    LAST-UPDATED "201407310000Z"
     ORGANIZATION "University of California, Davis"
     CONTACT-INFO    
 	"This mib is no longer being maintained by the University of
@@ -55,6 +55,17 @@
     DESCRIPTION
 	"This file defines the private UCD SNMP MIB extensions."
 
+    REVISION     "201407310000Z"
+    DESCRIPTION
+	"New object for number of CPUs as counted by the agent"
+    REVISION	 "201105140000Z"
+    DESCRIPTION
+	"New objects for monitoring CPU Steal, Guest and Nice values"
+
+    REVISION	 "200901190000Z"
+    DESCRIPTION
+	"New 64-bit objects for monitoring large disk usage"
+
     REVISION	 "200611220000Z"
     DESCRIPTION
 	"Clarify behaviour of objects in the memory & systemStats groups
@@ -672,7 +683,13 @@
     dskPercent		Integer32,
     dskPercentNode	Integer32,
     dskErrorFlag	UCDErrorFlag,
-    dskErrorMsg		DisplayString
+    dskErrorMsg		DisplayString,
+    dskTotalLow		Unsigned32,
+    dskTotalHigh	Unsigned32,
+    dskAvailLow		Unsigned32,
+    dskAvailHigh	Unsigned32,
+    dskUsedLow		Unsigned32,
+    dskUsedHigh		Unsigned32
 }
 
 dskIndex OBJECT-TYPE
@@ -765,6 +782,60 @@
 	"Percentage of inodes used on disk"
     ::= { dskEntry 10 } 
 
+dskTotalLow OBJECT-TYPE
+    SYNTAX	Unsigned32
+    MAX-ACCESS	read-only
+    STATUS	current
+    DESCRIPTION  
+	"Total size of the disk/partion (kBytes).
+	Together with dskTotalHigh composes 64-bit number."
+    ::= { dskEntry 11 }
+
+dskTotalHigh OBJECT-TYPE
+    SYNTAX	Unsigned32
+    MAX-ACCESS	read-only
+    STATUS	current
+    DESCRIPTION  
+	"Total size of the disk/partion (kBytes).
+	Together with dskTotalLow composes 64-bit number."
+    ::= { dskEntry 12 }
+
+dskAvailLow OBJECT-TYPE
+    SYNTAX	Unsigned32
+    MAX-ACCESS	read-only
+    STATUS	current
+    DESCRIPTION  
+	"Available space on the disk (kBytes).
+	Together with dskAvailHigh composes 64-bit number."
+    ::= { dskEntry 13 }
+
+dskAvailHigh OBJECT-TYPE
+    SYNTAX	Unsigned32
+    MAX-ACCESS	read-only
+    STATUS	current
+    DESCRIPTION  
+	"Available space on the disk (kBytes).
+	Together with dskAvailLow composes 64-bit number."
+    ::= { dskEntry 14 }
+
+dskUsedLow OBJECT-TYPE
+    SYNTAX	Unsigned32
+    MAX-ACCESS	read-only
+    STATUS	current
+    DESCRIPTION  
+	"Used space on the disk (kBytes).
+	Together with dskUsedHigh composes 64-bit number."
+    ::= { dskEntry 15 }
+
+dskUsedHigh OBJECT-TYPE
+    SYNTAX	Unsigned32
+    MAX-ACCESS	read-only
+    STATUS	current
+    DESCRIPTION  
+	"Used space on the disk (kBytes).
+	Together with dskUsedLow composes 64-bit number."
+    ::= { dskEntry 16 }
+
 dskErrorFlag OBJECT-TYPE
     SYNTAX	UCDErrorFlag
     MAX-ACCESS	read-only
@@ -837,7 +908,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
@@ -1368,6 +1439,75 @@
         "Number of blocks swapped out"
     ::= { systemStats 63 }
 
+ssCpuRawSteal OBJECT-TYPE
+    SYNTAX      Counter32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The number of 'ticks' (typically 1/100s) spent
+         by the hypervisor code to run other VMs even
+         though the CPU in the current VM had something runnable.
+
+         This object will not be implemented on hosts where
+         the underlying operating system does not measure
+         this particular CPU metric.
+
+         On a multi-processor system, the 'ssCpuRaw*'
+         counters are cumulative over all CPUs, so their
+         sum will typically be N*100 (for N processors)."
+    ::= { systemStats 64 }
+
+ssCpuRawGuest OBJECT-TYPE
+    SYNTAX      Counter32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The number of 'ticks' (typically 1/100s) spent
+         by the CPU to run a virtual CPU (guest).
+
+         This object will not be implemented on hosts where
+         the underlying operating system does not measure
+         this particular CPU metric.
+
+         On a multi-processor system, the 'ssCpuRaw*'
+         counters are cumulative over all CPUs, so their
+         sum will typically be N*100 (for N processors)."
+    ::= { systemStats 65 }
+
+ssCpuRawGuestNice OBJECT-TYPE
+    SYNTAX      Counter32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The number of 'ticks' (typically 1/100s) spent
+         by the CPU to run a niced virtual CPU (guest).
+
+         This object will not be implemented on hosts where
+         the underlying operating system does not measure
+         this particular CPU metric.
+
+         On a multi-processor system, the 'ssCpuRaw*'
+         counters are cumulative over all CPUs, so their
+         sum will typically be N*100 (for N processors)."
+    ::= { systemStats 66 }
+
+ssCpuNumCpus OBJECT-TYPE
+    SYNTAX      Integer32
+    MAX-ACCESS  read-only
+    STATUS      current
+    DESCRIPTION
+        "The number of processors, as counted by the agent.
+         This object's value may be useful in the management
+         of certain operating systems where notions such as
+         load average do not take into account the number of
+         processors in the system.
+
+         For other objects in the systemStats group whose
+         descriptions refer to 'N processors', this object's
+         value is N."
+    ::= { systemStats 67 }
+
+
 -- possibly used in the future:
 --
 -- ssErrorFlag OBJECT-TYPE
diff --git a/mibs/ianalist b/mibs/ianalist
index c3f0575..8b31ad6 100644
--- a/mibs/ianalist
+++ b/mibs/ianalist
@@ -1,11 +1,17 @@
-# updated 2005-01-06
-ianaiftype-mib			IANAifType-MIB
-ianalanguage-mib		IANA-LANGUAGE-MIB
+# updated 2014-08-14
 ianaaddressfamilynumbers-mib	IANA-ADDRESS-FAMILY-NUMBERS-MIB
-ianaiprouteprotocol-mib		IANA-RTPROTO-MIB
-ianatn3270etc-mib		IANATn3270eTC-MIB
-ianamalloc-mib			IANA-MALLOC-MIB
+ianabfdtcstd-mib		IANA-BFD-TC-STD-MIB
 ianacharset-mib			IANA-CHARSET-MIB
-ianaprinter-mib			IANA-PRINTER-MIB
+ianaentity-mib			IANA-ENTITY-MIB
 ianafinisher-mib		IANA-FINISHER-MIB
+ianagmplstc-mib			IANA-GMPLS-TC-MIB
+ianaiftype-mib			IANAifType-MIB
+ianaiprouteprotocol-mib		IANA-RTPROTO-MIB
+ianaippmmetricsregistry-mib	IANA-IPPM-METRICS-REGISTRY-MIB
 ianaitualarmtc-mib		IANA-ITU-ALARM-TC-MIB
+ianalanguage-mib		IANA-LANGUAGE-MIB
+ianamalloc-mib			IANA-MALLOC-MIB
+ianamau-mib			IANA-MAU-MIB
+ianaolsrv2linkmetrictype-mib	IANA-OLSRv2-LINK-METRIC-TYPE-MIB
+ianaprinter-mib			IANA-PRINTER-MIB
+ianatn3270etc-mib		IANATn3270eTC-MIB
diff --git a/mibs/rfclist b/mibs/rfclist
index 4d03434..e0d3eef 100644
--- a/mibs/rfclist
+++ b/mibs/rfclist
@@ -1,4 +1,4 @@
-# updated 2005-03-14
+# updated 2014-08-15
 1155	RFC1155-SMI
 1213	RFC1213-MIB
 1227	SMUX-MIB
@@ -19,7 +19,6 @@
 1611	DNS-SERVER-MIB
 1612	DNS-RESOLVER-MIB
 1628	UPS-MIB
-1657	BGP4-MIB
 1658	CHARACTER-MIB
 1659	RS-232-MIB
 1660	PARALLEL-MIB
@@ -36,7 +35,6 @@
 1850	OSPF-MIB:OSPF-TRAP-MIB
 2006	MIP-MIB
 2020	DOT12-IF-MIB
-2021	RMON2-MIB
 2024	DLSW-MIB
 2051	APPC-MIB
 2108	SNMP-REPEATER-MIB
@@ -77,15 +75,8 @@
 2594	WWW-MIB
 2605	DIRECTORY-SERVER-MIB
 2613	SMON-MIB
-2618	RADIUS-AUTH-CLIENT-MIB
-2619	RADIUS-AUTH-SERVER-MIB
-2620	RADIUS-ACC-CLIENT-MIB
-2621	RADIUS-ACC-SERVER-MIB
 2662	ADSL-TC-MIB:ADSL-LINE-MIB
 2666	ETHER-CHIPSET-MIB
-2669	DOCS-CABLE-DEVICE-MIB
-2670	DOCS-IF-MIB
-2674	P-BRIDGE-MIB:Q-BRIDGE-MIB
 2677	NHRP-MIB
 2707	Job-Monitoring-MIB
 2720	FLOW-METER-MIB
@@ -102,7 +93,6 @@
 2863	IF-MIB
 2864	IF-INVERTED-STACK-MIB
 2922	PTOPO-MIB
-2925	DISMAN-PING-MIB:DISMAN-TRACEROUTE-MIB:DISMAN-NSLOOKUP-MIB
 2932	IPMROUTE-STD-MIB
 2933	IGMP-STD-MIB
 2934	PIM-MIB
@@ -147,7 +137,6 @@
 3606	ATM2-MIB
 3621	POWER-ETHERNET-MIB
 3635	EtherLike-MIB
-3636	MAU-MIB
 3637	ETHER-WIS
 3705	HC-PerfHist-TC-MIB
 3728	VDSL-LINE-MIB
@@ -178,11 +167,113 @@
 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
 4265	VPN-TC-STD-MIB
 4268	ENTITY-STATE-TC-MIB:ENTITY-STATE-MIB
+4273	BGP4-MIB
 4292	IP-FORWARD-MIB
 4293	IP-MIB
+4295	MOBILEIPV6-MIB
+4318	RSTP-MIB
+4319	HDSL2-SHDSL-LINE-MIB
+4323	DOCS-IETF-QOS-MIB
+4363	P-BRIDGE-MIB:Q-BRIDGE-MIB
+4368	MPLS-LC-ATM-STD-MIB:MPLS-LC-FR-STD-MIB
+4382	MPLS-L3VPN-STD-MIB
+4404	FCIP-MGMT-MIB
+4438	T11-FC-NAME-SERVER-MIB
+4439	T11-TC-MIB:T11-FC-FABRIC-ADDR-MGR-MIB
+4444	ISIS-MIB
+4455	SCSI-MIB
+4498	AGGREGATE-MIB:TIME-AGGREGATE-MIB
+4502	RMON2-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
+4626	T11-FC-FSPF-MIB
+4631	LMP-MIB
+4639	DOCS-CABLE-DEVICE-MIB
+4668	RADIUS-AUTH-CLIENT-MIB
+4669	RADIUS-AUTH-SERVER-MIB
+4670	RADIUS-ACC-CLIENT-MIB
+4671	RADIUS-ACC-SERVER-MIB
+4672	RADIUS-DYNAUTH-CLIENT-MIB
+4673	RADIUS-DYNAUTH-SERVER-MIB
+4682	PKTC-IETF-MTA-MIB
+4706	ADSL2-LINE-TC-MIB:ADSL2-LINE-MIB
+4711	RAQMON-MIB
+4747	T11-FC-VIRTUAL-FABRIC-MIB
+4780	SIP-TC-MIB:SIP-COMMON-MIB:SIP-UA-MIB:SIP-SERVER-MIB
+4789	SNMP-IEEE802-TM-MIB
+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
+4898	TCP-ESTATS-MIB
+4935	T11-FC-FABRIC-CONFIG-SERVER-MIB
+4936	T11-FC-FABRIC-LOCK-MIB:T11-FC-ZONE-SERVER-MIB
+4939	ISNS-MIB
+4983	T11-FC-RSCN-MIB
+5017	URI-TC-MIB
+5060	PIM-STD-MIB
+5066	IF-CAP-STACK-MIB:EFM-CU-MIB
+5097	UDPLITE-MIB
+5098	PKTC-IETF-SIG-MIB
+5131	LANGTAG-TC-MIB
+5132	IPMCAST-MIB
+5190	MIDCOM-MIB
+5240	PIM-BSR-MIB
+5324	T11-FC-SP-TC-MIB:T11-FC-SP-AUTHENTICATION-MIB:T11-FC-SP-ZONING-MIB:T11-FC-SP-POLICY-MIB:T11-FC-SP-SA-MIB
+5427	SYSLOG-TC-MIB
+5428	PKTC-IETF-EVENT-MIB
+5488	NEMO-MIB
+5519	MGMD-STD-MIB
+5525	RSERPOOL-MIB
+5542	PW-TC-STD-MIB
+5591    SNMP-TSM-MIB
+5601	PW-STD-MIB:IANA-PWE3-MIB
+5602	PW-MPLS-STD-MIB
+5603	PW-ENET-STD-MIB
+5604	PW-TDM-MIB
+5605	PW-ATM-MIB
+5643	OSPFV3-MIB
+5650	VDSL2-LINE-TC-MIB:VDSL2-LINE-MIB
+5676	SYSLOG-MSG-MIB
+5728	DVB-RCS-MIB
+5813	FORCES-MIB
+5833	CAPWAP-BASE-MIB
+5834	CAPWAP-DOT11-MIB
+5907	NTPv4-MIB
+6065	SNMP-VACM-AAA-MIB
+6173	IFCP-MGMT-MIB
+6240	PW-CEP-STD-MIB
+6340	FLOAT-TC-MIB
+6353	SNMP-TLS-TM-MIB
+6445	MPLS-FRR-GENERAL-STD-MIB:MPLS-FRR-ONE2ONE-STD-MIB:MPLS-FRR-FACILITY-STD-MIB
+6475	PMIPV6-TC-MIB:PMIPV6-MIB
+6527	VRRPV3-MIB
+6615	IPFIX-MIB:IPFIX-SELECTOR-MIB
+6727	PSAMP-MIB
+6765	GBOND-MIB:IANA-GBOND-TC-MIB
+6766	G9983-MIB
+6767	G9982-MIB
+6768	G9981-MIB
+6779	NHDP-MIB
+6825	TED-MIB
+6850	RBRIDGE-MIB
+6933	ENTITY-MIB:UUID-TC-MIB
+6945	RPKI-ROUTER-MIB
+7052	LISP-MIB
+7147	ISCSI-MIB
+7184	OLSRv2-MIB
+7257	VPLS-GENERIC-MIB:VPLS-LDP-MIB:VPLS-BGP-MIB
+7330	BFD-TC-STD-MIB
+7331	BFD-STD-MIB
diff --git a/mibs/smistrip b/mibs/smistrip
index f58995c..b5fc8f2 100755
--- a/mibs/smistrip
+++ b/mibs/smistrip
@@ -66,7 +66,7 @@
     }
 
     # start of module
-    /^[ \t]*[A-Za-z0-9-]* *DEFINITIONS *::= *BEGIN/ {
+    /^[ \t]*[A-Za-z0-9-]* *DEFINITIONS( +IMPLICIT +TAGS)? *::= *BEGIN/ {
 	module = $1
 	collect = 1
 	macro = 0
diff --git a/net-snmp-config.in b/net-snmp-config.in
index 330f660..d55872c 100644
--- a/net-snmp-config.in
+++ b/net-snmp-config.in
@@ -27,10 +27,25 @@
       fi
 }
 
+# usage: index n arguments
+# effect: returns the (n+1)th argument
+index()
+{
+    eval echo \$`expr $1 + 1`
+}
+
+# usage: count arguments
+# effect: returns the number of arguments
+count()
+{
+    echo $#
+}
+
 prefix=@prefix@
 exec_prefix=@exec_prefix@
 includedir=@includedir@
 libdir=@libdir@
+datarootdir=@datarootdir@
 NSC_LDFLAGS="@LDFLAGS@"
 
 NSC_LIBS="@LIBS@"
@@ -42,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
@@ -51,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"
@@ -109,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@"
       ;;
@@ -164,16 +182,19 @@
       fi
       echo $result
       ;;
+    --build-command)
+      echo "@CC@ @CFLAGS@ @DEVFLAGS@"
+      ;;
     #################################################### client lib
     --libs)
       # use this one == --netsnmp-libs + --external-libs
       echo $NSC_LDFLAGS $NSC_LIBDIR $NSC_SNMPLIBS $NSC_LIBS
       ;;
     --netsnmp-libs)
-      echo $NSC_LIBDIR -lnetsnmp
+      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)
@@ -207,126 +228,10 @@
       ;;
     ####################################################
     --create-snmpv3-user)
-      if @PSCMD@ | egrep ' snmpd *$' > /dev/null 2>&1 ; then
-         echo "Apparently at least one snmpd demon is already running."
-         echo "You must stop them in order to use this command."
-         exit 1
-      fi
-
-      Aalgorithm="MD5"
-      Xalgorithm="DES"
-      token=rwuser
+      done=1
       shift
-      shifted=1
-      while test "x$done" = "x" -a "x$1" != "x" ; do
-	case $1 in
-	    -A|-a)
-		shift
-		if test "x$1" = "x" ; then
-		    echo "You must specify an authentication algorithm or pass phrase"
-		    exit 1
-		fi
-	        case $1 in
-                MD5|SHA)
-		    Aalgorithm=$1
-		    shift
-		    ;;
-                md5|sha)
-		    Aalgorithm=`echo $1 | tr a-z A-Z`
-		    shift
-		    ;;
-                *)
-		    apassphrase=$1
-		    shift
-		    ;;
-		esac
-		;;
-	    -X|-x)
-		shift
-		if test "x$1" = "x" ; then
-		    echo "You must specify an encryption algorithm or pass phrase"
-		    exit 1
-		fi
-	        case $1 in
-                DES|AES|AES128)
-		    Xalgorithm=$1
-		    shift
-		    ;;
-                des|aes|aes128)
-		    Xalgorithm=`echo $1 | tr a-z A-Z`
-		    shift
-		    ;;
-                *)
-		    xpassphrase=$1
-		    shift
-		    ;;
-		esac
-		;;
-	    -ro)
-	        token="rouser"
-		shift
-		;;
- 	    -*)
-		echo "unknown suboption to --create-snmpv3-user: $1"
-		exit 1
-		;;
-	    *)
-	        done=1
-		;;
-	esac
-      done
-      
-      if test "x$1" = "x" ; then
-          prompt=yes
-	  echo "Enter a SNMPv3 user name to create: "
-	  read user
-      else
-          user=$1
-          shift
-      fi
-      if test "x$user" = "x" ; then
-          echo "You must specify a user name"
-	  exit 1
-      fi
-
-      if test "x$apassphrase" = "x" ; then
-          prompt=yes
-	  echo "Enter authentication pass-phrase: "
-	  read apassphrase
-      fi
-      if test "x$apassphrase" = "x" ; then
-          echo "You must specify an authentication pass-phrase"
-	  exit 1
-      fi
-
-      if test "x$prompt" = "xyes" -a "x$xpassphrase" = "x" ; then
-	  echo "Enter encryption pass-phrase: "
-	  echo "  [press return to reuse the authentication pass-phrase]"
-	  read xpassphrase
-      fi
-
-      outdir="@PERSISTENT_DIRECTORY@"
-      outfile="$outdir/snmpd.conf"
-      line="createUser $user $Aalgorithm \"$apassphrase\" $Xalgorithm $xpassphrase"
-      echo "adding the following line to $outfile:"
-      echo "  " $line
-      # in case it hasn't ever been started yet, start it.
-      if test ! -d $outdir ; then
-          mkdir $outdir
-      fi
-      if test ! -d $outfile ; then
-          touch $outfile
-      fi
-      echo $line >> $outfile
-
-      outfile="@datadir@/snmp/snmpd.conf"
-      line="$token $user"
-      echo "adding the following line to $outfile:"
-      echo "  " $line
-      if test ! -d $outfile ; then
-          touch $outfile
-      fi
-      echo $line >> $outfile
+      net-snmp-create-v3-user $*
+      exit $?
       ;;
 
     ####################################################
@@ -378,7 +283,7 @@
 	echo "Ack.  Can't create $tmpfile: already exists"
 	exit 1
       fi
-      echo "generating the tmporary code file: $tmpfile"
+      echo "generating the temporary code file: $tmpfile"
       rm -f $tmpfile
       cat > $tmpfile <<EOF
 /* generated from net-snmp-config */
@@ -425,6 +330,7 @@
 
       cat >> $tmpfile <<EOF
 const char *app_name = "$outname";
+static int reconfig = 0;
 
 extern int netsnmp_running;
 
@@ -439,6 +345,15 @@
     netsnmp_running = 0;
 }
 
+#ifdef SIGHUP
+RETSIGTYPE
+hup_handler(int sig)
+{
+    reconfig = 1;
+    signal(SIGHUP, hup_handler);
+}
+#endif
+
 static void
 usage(const char *prog)
 {
@@ -615,10 +530,9 @@
       if grep "init_$name" $i ; then
         echo "  init_${name}();" >> $tmpfile
       fi
-      shift
     done
 
-    # finish file
+    # handle the main loop
     cat >> $tmpfile <<EOF
 
   /* $outname will be used to read $outname.conf files. */
@@ -638,18 +552,47 @@
 #ifdef SIGINT
   signal(SIGINT, stop_server);
 #endif
+#ifdef SIGHUP
+  signal(SIGHUP, hup_handler);
+#endif
 
   /* main loop here... */
   while(netsnmp_running) {
+    if (reconfig) {
+      free_config();
+      read_configs();
+      reconfig = 0;
+    }
     agent_check_and_process(1);
   }
 
   /* at shutdown time */
   snmp_shutdown(app_name);
+
+  /* deinitialize your mib code here */
+EOF
+
+    # add shutdown routines
+
+    i=`count $cfiles`
+    while [ $i -gt 0 ] ; do
+      fullname=`index $i $cfiles`
+      name=`basename $fullname | sed 's/\.[co]$//'`
+      echo checking for shutdown_$name in $fullname
+      if grep "shutdown_$name" $fullname ; then
+        echo "  shutdown_${name}();" >> $tmpfile
+      fi
+      i=`expr $i - 1`
+    done
+
+    # finish file
+    cat >> $tmpfile <<EOF
+
+  /* shutdown the agent library */
+  shutdown_agent();
   SOCK_CLEANUP;
   exit(0);
 }
-
 EOF
       if test "$?" != 0 -o ! -f "$tmpfile" ; then
         echo "Ack.  Can't create $tmpfile."
@@ -659,10 +602,10 @@
       echo "running: $cmd"
       `$cmd`
       if test "x$norm" != "x1" ; then
-        echo "removing the tmporary code file: $tmpfile"
+        echo "removing the temporary code file: $tmpfile"
         rm -f $tmpfile
       else
-        echo "leaving the tmporary code file: $tmpfile"
+        echo "leaving the temporary code file: $tmpfile"
       fi
       if test -f $outname ; then
         echo "subagent program $outname created"
@@ -693,8 +636,9 @@
   echo ""
   echo "  SNMP Setup commands:"
   echo ""
-  echo "    --create-snmpv3-user [-ro] [-A authpass] [-X privpass]"
-  echo "                         [-a MD5|SHA] [-x DES|AES] [username]"
+  echo "    --create-snmpv3-user creates a SNMPv3 user in Net-SNMP config file."
+  echo "                         See net-snmp-create-v3-user --help for list of"
+  echo "                         accepted options."
   echo ""
   echo "  These options produce the various compilation flags needed when"
   echo "  building external SNMP applications:"
@@ -729,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
new file mode 100644
index 0000000..5288f3b
--- /dev/null
+++ b/net-snmp-create-v3-user.in
@@ -0,0 +1,168 @@
+#!/bin/sh
+#
+# $Id$
+#
+# this shell script is designed to add new SNMPv3 users
+# to Net-SNMP config file.
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+includedir=@includedir@
+libdir=@libdir@
+datarootdir=@datarootdir@
+NSC_LDFLAGS="@LDFLAGS@"
+NSC_INCLUDEDIR=${includedir}
+NSC_LIBDIR=-L${libdir}
+NSC_LIBS="@LIBS@"
+NSC_AGENTLIBS="@AGENTLIBS@ @PERLLDOPTS_FOR_APPS@"
+NSC_PREFIX=$prefix
+NSC_EXEC_PREFIX=$exec_prefix
+NSC_SRCDIR=@srcdir@
+NSC_INCDIR=${NSC_PREFIX}/include
+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"
+fi
+
+if @PSCMD@ | egrep ' snmpd *$' > /dev/null 2>&1 ; then
+    echo "Apparently at least one snmpd demon is already running."
+    echo "You must stop them in order to use this command."
+    exit 1
+fi
+
+Aalgorithm="MD5"
+Xalgorithm="DES"
+token=rwuser
+
+while test "x$done" = "x" -a "x$1" != "x" -a "x$usage" != "xyes"; do
+case "$1" in
+    -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+    *) optarg= ;;
+esac
+
+unset shifted
+case $1 in
+    --version|--ver*)
+      echo @VERSION@
+      ;;
+    --help)
+      usage="yes"
+      ;;
+
+    -A|-a)
+	shift
+	if test "x$1" = "x" ; then
+	    echo "You must specify an authentication algorithm or pass phrase"
+	    exit 1
+	fi
+        case $1 in
+            MD5|SHA)
+	    Aalgorithm=$1
+	    shift
+	    ;;
+            md5|sha)
+	    Aalgorithm=`echo $1 | tr a-z A-Z`
+	    shift
+	    ;;
+            *)
+	    apassphrase=$1
+	    shift
+	    ;;
+        esac
+        ;;
+    -X|-x)
+	shift
+	if test "x$1" = "x" ; then
+	    echo "You must specify an encryption algorithm or pass phrase"
+	    exit 1
+	fi
+        case $1 in
+            DES|AES|AES128)
+	    Xalgorithm=$1
+	    shift
+	    ;;
+            des|aes|aes128)
+	    Xalgorithm=`echo $1 | tr a-z A-Z`
+	    shift
+	    ;;
+            *)
+	    xpassphrase=$1
+	    shift
+	    ;;
+	esac
+	;;
+    -ro)
+        token="rouser"
+	shift
+	;;
+    -*)
+	echo "unknown suboption to $0: $1"
+	usage=yes
+	done=1
+	;;
+    *)
+        done=1
+        ;;
+    esac
+done
+
+if test "x$usage" = "xyes"; then
+    echo ""
+    echo "Usage:"
+    echo "  net-snmp-create-v3-user [-ro] [-A authpass] [-X privpass]"
+    echo "                          [-a MD5|SHA] [-x DES|AES] [username]"
+    echo ""
+    exit
+fi
+
+if test "x$1" = "x" ; then
+    prompt=yes
+    echo "Enter a SNMPv3 user name to create: "
+    read user
+else
+    user=$1
+    shift
+fi
+if test "x$user" = "x" ; then
+    echo "You must specify a user name"
+    exit 1
+fi
+if test "x$apassphrase" = "x" ; then
+    prompt=yes
+    echo "Enter authentication pass-phrase: "
+    read apassphrase
+fi
+if test "x$apassphrase" = "x" ; then
+    echo "You must specify an authentication pass-phrase"
+    exit 1
+fi
+    if test "x$prompt" = "xyes" -a "x$xpassphrase" = "x" ; then
+    echo "Enter encryption pass-phrase: "
+    echo "  [press return to reuse the authentication pass-phrase]"
+    read xpassphrase
+fi
+outdir="@PERSISTENT_DIRECTORY@"
+outfile="$outdir/snmpd.conf"
+line="createUser $user $Aalgorithm \"$apassphrase\" $Xalgorithm $xpassphrase"
+echo "adding the following line to $outfile:"
+echo "  " $line
+# in case it hasn't ever been started yet, start it.
+if test ! -d $outdir ; then
+    mkdir $outdir
+fi
+if test ! -d $outfile ; then
+    touch $outfile
+fi
+echo $line >> $outfile
+outfile="@datadir@/snmp/snmpd.conf"
+line="$token $user"
+echo "adding the following line to $outfile:"
+echo "  " $line
+if test ! -d $outfile ; then
+    touch $outfile
+fi
+echo $line >> $outfile
diff --git a/perl/ASN/ASN.pm b/perl/ASN/ASN.pm
index 6430f7e..008e97b 100644
--- a/perl/ASN/ASN.pm
+++ b/perl/ASN/ASN.pm
@@ -66,7 +66,7 @@
 	ASN_UNSIGNED
 	ASN_UNSIGNED64
 );
-$VERSION = '5.0404';
+$VERSION = '5.0703';
 
 sub AUTOLOAD {
     # This AUTOLOAD is used to 'autoload' constants from the constant()
diff --git a/perl/ASN/Makefile.PL b/perl/ASN/Makefile.PL
index f895a41..4576781 100644
--- a/perl/ASN/Makefile.PL
+++ b/perl/ASN/Makefile.PL
@@ -28,9 +28,9 @@
                   
     my ($snmp_lib, $snmp_llib, $sep);
 
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
       $opts = NetSNMPGetOpts();	
-      $Params{'DEFINE'} = "-DMSVC_PERL";
+      $Params{'DEFINE'} = "-DMSVC_PERL -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS";
       $sep = '\\';
       $snmp_lib_file = 'netsnmp.lib';
       $snmp_link_lib = 'netsnmp';
@@ -101,7 +101,7 @@
     $rootpath = "../" if (!$rootpath);
     $rootpath .= '/' if ($rootpath !~ /\/$/);
     
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
 
       # Grab command line options first.  Only used if environment variables are not set
       GetOptions("NET-SNMP-IN-SOURCE=s" => \$ret{'insource'},
@@ -184,7 +184,7 @@
 
 
 sub Check_Version {
-  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} eq 'msys')) {
+  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} ne '')) {
     my $foundversion = 0;
     return if ($ENV{'NETSNMP_DONT_CHECK_VERSION'});
     open(I,"<Makefile");
diff --git a/perl/ASN/netsnmp-feature-definitions.h b/perl/ASN/netsnmp-feature-definitions.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/perl/ASN/netsnmp-feature-definitions.h
diff --git a/perl/AnyData_SNMP/Storage.pm b/perl/AnyData_SNMP/Storage.pm
index 6247963..67c791f 100644
--- a/perl/AnyData_SNMP/Storage.pm
+++ b/perl/AnyData_SNMP/Storage.pm
@@ -6,7 +6,7 @@
 ##   scalar sets?
 ##   multi-hosts
 
-$AnyData::Storage::VERSION = '5.0404';
+$AnyData::Storage::VERSION = '5.0703';
 use strict;
 use warnings;
 
diff --git a/perl/Makefile.PL b/perl/Makefile.PL
index f70f991..31fdc40 100644
--- a/perl/Makefile.PL
+++ b/perl/Makefile.PL
@@ -11,7 +11,7 @@
     $nsconfig="net-snmp-config"; # in path by default
     my %Params = (
 		  'NAME' => 'Bundle::NetSNMP',
-		  'DIR' => [qw(default_store ASN OID agent SNMP TrapReceiver)]
+		  'DIR' => [qw(default_store ASN OID agent SNMP TrapReceiver)],
 		  );
 
     # bogus, but these options need to be passed to the lower levels
@@ -28,7 +28,7 @@
     $rootpath = "../" if (!$rootpath);
     $rootpath .= '/' if ($rootpath !~ /\/$/);
     
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
 
       # Grab command line options first.  Only used if environment variables are not set
       GetOptions("NET-SNMP-IN-SOURCE=s" => \$ret{'insource'},
@@ -111,7 +111,7 @@
 
 
 sub Check_Version {
-  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} eq 'msys')) {
+  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} ne '')) {
     my $foundversion = 0;
     return if ($ENV{'NETSNMP_DONT_CHECK_VERSION'});
     open(I,"<Makefile");
diff --git a/perl/Makefile.subs.pl b/perl/Makefile.subs.pl
index 817fb55..e3c25ef 100644
--- a/perl/Makefile.subs.pl
+++ b/perl/Makefile.subs.pl
@@ -4,7 +4,7 @@
     $rootpath = "../" if (!$rootpath);
     $rootpath .= '/' if ($rootpath !~ /\/$/);
     
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
 
       # Grab command line options first.  Only used if environment variables are not set
       GetOptions("NET-SNMP-IN-SOURCE=s" => \$ret{'insource'},
@@ -87,7 +87,7 @@
 
 
 sub Check_Version {
-  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} eq 'msys')) {
+  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} ne '')) {
     my $foundversion = 0;
     return if ($ENV{'NETSNMP_DONT_CHECK_VERSION'});
     open(I,"<Makefile");
diff --git a/perl/OID/Makefile.PL b/perl/OID/Makefile.PL
index 5d94338..6bb1616 100644
--- a/perl/OID/Makefile.PL
+++ b/perl/OID/Makefile.PL
@@ -28,9 +28,9 @@
     }
                   
     my ($snmp_lib, $snmp_llib, $sep);
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
       $opts = NetSNMPGetOpts();	
-      $Params{'DEFINE'} = "-DMSVC_PERL";
+      $Params{'DEFINE'} = "-DMSVC_PERL -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS";
       $sep = '\\';
       $snmp_lib_file = 'netsnmp.lib';
       $snmp_link_lib = 'netsnmp';
@@ -102,7 +102,7 @@
     $rootpath = "../" if (!$rootpath);
     $rootpath .= '/' if ($rootpath !~ /\/$/);
     
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
 
       # Grab command line options first.  Only used if environment variables are not set
       GetOptions("NET-SNMP-IN-SOURCE=s" => \$ret{'insource'},
@@ -185,7 +185,7 @@
 
 
 sub Check_Version {
-  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} eq 'msys')) {
+  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} ne '')) {
     my $foundversion = 0;
     return if ($ENV{'NETSNMP_DONT_CHECK_VERSION'});
     open(I,"<Makefile");
diff --git a/perl/OID/OID.pm b/perl/OID/OID.pm
index 15b3774..b75bf1d 100644
--- a/perl/OID/OID.pm
+++ b/perl/OID/OID.pm
@@ -92,7 +92,7 @@
 	snmp_oid_compare
         compare
 );
-$VERSION = '5.0404';
+$VERSION = '5.0703';
 
 sub new {
     my $type = shift;
diff --git a/perl/OID/OID.xs b/perl/OID/OID.xs
index 5d41c3a..10485f9 100644
--- a/perl/OID/OID.xs
+++ b/perl/OID/OID.xs
@@ -28,7 +28,7 @@
 nso_newarrayptr(oid *name, size_t name_len) 
 {
     netsnmp_oid *RETVAL;
-    RETVAL = SNMP_MALLOC_TYPEDEF(netsnmp_oid);
+    RETVAL = malloc(sizeof(netsnmp_oid));
     RETVAL->name = RETVAL->namebuf;
     RETVAL->len = name_len;
     memcpy(RETVAL->name, name, name_len * sizeof(oid));
@@ -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;
@@ -160,12 +160,13 @@
     CODE:
         if (get_tree_head() == NULL)
             netsnmp_init_mib();
-        RETVAL = SNMP_MALLOC_TYPEDEF(netsnmp_oid);
+        RETVAL = malloc(sizeof(netsnmp_oid));
         RETVAL->name = RETVAL->namebuf;
         RETVAL->len = sizeof(RETVAL->namebuf)/sizeof(RETVAL->namebuf[0]);
         if (!snmp_parse_oid(initstring, (oid *) RETVAL->name, &RETVAL->len)) {
             snmp_log(LOG_ERR, "Can't parse: %s\n", initstring);
             RETVAL->len = 0;
+            free(RETVAL);
             RETVAL = NULL;
         }
     OUTPUT:
@@ -266,7 +267,7 @@
                 return;
             }
                 
-            if ((buf = (u_char *) calloc(buf_len, 1)) == NULL) {
+            if ((buf = netsnmp_malloc(buf_len)) == NULL) {
                 RETVAL = NULL;
                 return;
             }
@@ -282,12 +283,14 @@
                      strcmp(tpnode->label + strlen(tpnode->label) - 5,
                             "Table"))) {
                     /* we're not within a table.  bad logic, little choice */
+                    netsnmp_free(buf);
                     RETVAL = NULL;
                     return;
                 }
             }
 
             if (!tpe) {
+                netsnmp_free(buf);
                 RETVAL = NULL;
                 return;
             }
@@ -298,6 +301,7 @@
                     (NULL ==
                      (tpe = get_tree(name, name_len,
                                      get_tree_head())))) {
+                    netsnmp_free(buf);
                     RETVAL = NULL;
                     return; /* XXX: better error recovery needed? */
                 }
@@ -320,12 +324,14 @@
                     (NULL ==
                      (indexnode = get_tree(name, name_len,
                                            get_tree_head())))) {
+                    netsnmp_free(buf);
                     RETVAL = NULL;
                     return;             /* xxx mem leak */
                 }
                 vbdata.type = mib_to_asn_type(indexnode->type);
 
                 if (vbdata.type == (u_char) -1) {
+                    netsnmp_free(buf);
                     RETVAL = NULL;
                     return; /* XXX: not good.  half populated stack? */
                 }
@@ -347,9 +353,9 @@
                     }
                 }
 
-                /* possible memory leak: vbdata.data should be freed later */
                 if (parse_one_oid_index(&oidp, &oidp_len, &vbdata, 0)
                     != SNMPERR_SUCCESS) {
+                    netsnmp_free(buf);
                     RETVAL = NULL;
                     return;
                 }
@@ -363,9 +369,10 @@
                 sprint_realloc_value(&buf, &buf_len, &out_len,
                                      1, name, name_len, &vbdata);
 */
-
+                snmp_free_var_internals(&vbdata);
                 av_push(myret, newSVpv((char *)buf, out_len));
             }
+            netsnmp_free(buf);
             RETVAL = newRV((SV *)myret);
         }
     OUTPUT:
diff --git a/perl/OID/netsnmp-feature-definitions.h b/perl/OID/netsnmp-feature-definitions.h
new file mode 100644
index 0000000..fb4ccdb
--- /dev/null
+++ b/perl/OID/netsnmp-feature-definitions.h
@@ -0,0 +1,6 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_require(snprint_objid)
+netsnmp_feature_require(snprint_value)
+
diff --git a/perl/SNMP/Makefile.PL b/perl/SNMP/Makefile.PL
index 928cb67..e617cb7 100644
--- a/perl/SNMP/Makefile.PL
+++ b/perl/SNMP/Makefile.PL
@@ -32,9 +32,9 @@
     }
                                     
     my ($snmp_lib, $snmp_llib, $sep);
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
       $opts = NetSNMPGetOpts();	
-      $Params{'DEFINE'} = "-DMSVC_PERL";
+      $Params{'DEFINE'} = "-DMSVC_PERL -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS";
       $sep = '\\';
       $snmp_lib_file = 'netsnmp.lib';
       $snmp_link_lib = 'netsnmp';
@@ -128,7 +128,7 @@
     my ($mibdir, $snmpd, $snmptrapd);
 
         # Windows
-        if ($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys') {
+        if ($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '') {
           if (lc ($opts->{'insource'}) eq "true") {
             $mibdir = "../../mibs";
             if (lc($opts->{'debug'}) eq "true") {
@@ -169,7 +169,7 @@
 	    prompt("Unable to locate \"snmptrapd\". Please enter the path: ",
 		   $snmpd_path1);
 
-        if ($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys') {
+        if ($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '') {
           $snmpd = $snmpd . $sep . "snmpd.exe";
           $snmptrapd = $snmptrapd . $sep . "snmptrapd.exe";
         }
@@ -231,7 +231,7 @@
     $rootpath = "../" if (!$rootpath);
     $rootpath .= '/' if ($rootpath !~ /\/$/);
     
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
 
       # Grab command line options first.  Only used if environment variables are not set
       GetOptions("NET-SNMP-IN-SOURCE=s" => \$ret{'insource'},
@@ -314,7 +314,7 @@
 
 
 sub Check_Version {
-  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} eq 'msys')) {
+  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} ne '')) {
     my $foundversion = 0;
     return if ($ENV{'NETSNMP_DONT_CHECK_VERSION'});
     open(I,"<Makefile");
diff --git a/perl/SNMP/SNMP.pm b/perl/SNMP/SNMP.pm
index e914dcc..a05cd38 100644
--- a/perl/SNMP/SNMP.pm
+++ b/perl/SNMP/SNMP.pm
@@ -7,7 +7,7 @@
 #     modify it under the same terms as Perl itself.
 
 package SNMP;
-$VERSION = '5.0404';   # current release version number
+$VERSION = '5.0703';   # current release version number
 
 use strict;
 use warnings;
@@ -46,6 +46,8 @@
         snmp_getnext
         snmp_set
         snmp_trap
+	SNMP_API_TRADITIONAL
+	SNMP_API_SINGLE
 );
 
 sub AUTOLOAD {
@@ -348,12 +350,24 @@
     $sess->trap(@_);
 }
 
+#--------------------------------------------------------------------- 
+# Preserves the ability to call MainLoop() with no args so we don't 
+# break old code
+#
+# Alternately, MainLoop() could be called as an object method, 
+# ( $sess->MainLoop() ) , so that $self winds up in @_.  Then it would 
+# be more like :
+# my $self = shift;
+# .... 
+# SNMP::_main_loop(......, $self->{SessPtr});
+#--------------------------------------------------------------------- 
 sub MainLoop {
+    my $ss = shift if(&SNMP::_api_mode() == SNMP::SNMP_API_SINGLE());
     my $time = shift;
     my $callback = shift;
     my $time_sec = ($time ? int $time : 0);
     my $time_usec = ($time ? int(($time-$time_sec)*1000000) : 0);
-    SNMP::_main_loop($time_sec,$time_usec,$callback);
+    SNMP::_main_loop($time_sec,$time_usec,$callback,(defined($ss) ? $ss->{SessPtr} : ()));
 }
 
 sub finish {
@@ -490,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},
@@ -517,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'; # defaults to 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';  # defaults to hte 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;
@@ -714,7 +766,7 @@
 	    if ($parse_indexes) {
 		# get indexes
 		my @indexes =
-		  @{$SNMP::MIB{$textnode}{'children'}[0]{'indexes'} || [] };
+		  @{$SNMP::MIB{$textnode}{'children'}[0]{'indexes'} || []};
 		# quick translate into a hash
 		map { $indexes{$_} = 1; } @indexes;
 	    }
@@ -1367,6 +1419,7 @@
      parent => 0,   # parent node
      children => 0, # array reference of children nodes
      indexes => 0,  # returns array of column labels
+     implied => 0,  # boolean: is the last index IMPLIED
      varbinds => 0, # returns array of trap/notification varbinds
      nextNode => 0, # next lexico node (BUG! does not return in lexico order)
      type => 0,     # returns simple type (see getType for values)
@@ -1507,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
@@ -1591,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
@@ -1684,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
@@ -1882,7 +2025,7 @@
 
 Note 2: callback support is only available in the SNMP module version
 5.04 and above.  To test for this in code intending to support both
-versions prior to 5.04 and and 5.04 and up, the following should work:
+versions prior to 5.04 and 5.04 and up, the following should work:
 
   if ($response = $sess->gettable('ifTable', callback => \&my_sub)) {
       # got a response, gettable doesn't support callback
@@ -2315,6 +2458,14 @@
 
 returns the REFERENCE clause
 
+=item indexes
+
+returns the objects in the INDEX clause
+
+=item implied
+
+returns true if the last object in the INDEX is IMPLIED
+
 =back
 
 =head1 MIB Functions
diff --git a/perl/SNMP/SNMP.xs b/perl/SNMP/SNMP.xs
index 90240a1..2a734e8 100644
--- a/perl/SNMP/SNMP.xs
+++ b/perl/SNMP/SNMP.xs
@@ -59,16 +59,6 @@
 #define G_VOID G_DISCARD
 #endif
 
-#ifdef WIN32
-#define SOCK_STARTUP winsock_startup()
-#define SOCK_CLEANUP winsock_cleanup()
-#define strcasecmp _stricmp
-#define strncasecmp _strnicmp
-#else
-#define SOCK_STARTUP
-#define SOCK_CLEANUP
-#endif
-
 #include "perlsnmp.h"
 
 #define SUCCESS 1
@@ -76,6 +66,9 @@
 
 #define ZERO_BUT_TRUE "0 but true"
 
+#define SNMP_API_TRADITIONAL 0
+#define SNMP_API_SINGLE 1
+
 #define VARBIND_TAG_F 0
 #define VARBIND_IID_F 1
 #define VARBIND_VAL_F 2
@@ -95,6 +88,9 @@
 /* Internal flag to determine snmp_main_loop() should return after callback */
 static int mainloop_finish = 0;
 
+/* Internal flag to determine which API we're using */
+static int api_mode = SNMP_API_TRADITIONAL;
+
 /* these should be part of transform_oids.h ? */
 #define USM_AUTH_PROTO_MD5_LEN 10
 #define USM_AUTH_PROTO_SHA_LEN 10
@@ -112,7 +108,6 @@
 
 static void __recalc_timeout _((struct timeval*,struct timeval*,
                                 struct timeval*,struct timeval*, int* ));
-static in_addr_t __parse_address _((char*));
 static int __is_numeric_oid _((char*));
 static int __is_leaf _((struct tree*));
 static int __translate_appl_type _((char*));
@@ -186,6 +181,9 @@
 static int _bulkwalk_async_cb _((int op, SnmpSession *ss, int reqid,
 				     netsnmp_pdu *pdu, void *context_ptr));
 
+/* Prototype for error handler */
+void snmp_return_err( struct snmp_session *ss, SV *err_str, SV *err_num, SV *err_ind );
+
 /* Structure to hold valid context sessions. */
 struct valid_contexts {
    walk_context	**valid;	/* Array of valid walk_context pointers.    */
@@ -209,7 +207,6 @@
 	} while (/*CONSTCOND*/0)
 
 char	_debugx[1024];	/* Space to sprintf() into - used by sprint_objid(). */
-#define DBDCL(x) x
 
 /* wrapper around snprint_objid to snprint_objid to return the pointer 
    instead of length */
@@ -220,6 +217,7 @@
   return _debugx;
 }
  
+#define DBDCL(x) x
 #else	/* DEBUGGING */
 #define DBDCL(x) 
 #define DBOUT
@@ -244,15 +242,16 @@
             return;
         have_inited = 1;
 
-        snmp_set_quick_print(1);
+        SOCK_STARTUP;
+
+        netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                               NETSNMP_DS_LIB_QUICK_PRINT, 1);
         init_snmp(appname);
     
         netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_DONT_BREAKDOWN_OIDS, 1);
         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
@@ -295,26 +294,6 @@
    }
 }
 
-static in_addr_t
-__parse_address(address)
-char *address;
-{
-    in_addr_t addr;
-    struct sockaddr_in saddr;
-    struct hostent *hp;
-
-    if ((addr = inet_addr(address)) != -1)
-	return addr;
-    hp = gethostbyname(address);
-    if (hp == NULL){
-        return (-1); /* error value */
-    } else {
-	memcpy(&saddr.sin_addr, hp->h_addr, hp->h_length);
-	return saddr.sin_addr.s_addr;
-    }
-
-}
-
 static int
 __is_numeric_oid (oidstr)
 char* oidstr;
@@ -585,7 +564,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;
@@ -618,7 +597,7 @@
    cp = buf;
    while (*buf) {
       if (*buf++ == '.') {
-         sscanf(cp, "%lu", objid++);
+         sscanf(cp, "%" NETSNMP_PRIo "u", objid++);
          /* *objid++ = atoi(cp); */
          (*len)++;
          cp = buf;
@@ -628,7 +607,7 @@
          }
       }
    }
-   sscanf(cp, "%lu", objid++);
+   sscanf(cp, "%" NETSNMP_PRIo "u", objid++);
    /* *objid++ = atoi(cp); */
    (*len)++;
    return SUCCESS;
@@ -779,11 +758,13 @@
            icp = lcp;
         }
       }
-      if (!found_label && isalpha((int)*lcp)) found_label = 1;
+      if (!found_label && isalpha((unsigned char)*lcp)) found_label = 1;
       lcp--;
    }
 
-   if (!found_label || (!isdigit((int)*(icp+1)) && (flag & FAIL_ON_NULL_IID)))
+   if (!found_label
+       || ((icp + 1 >= name + len || !isdigit((unsigned char)*(icp+1)))
+           && (flag & FAIL_ON_NULL_IID)))
       return(FAILURE);
 
    if (flag & NON_LEAF_NAME) { /* dont know where to start instance id */
@@ -961,16 +942,16 @@
 
    if (!soid_str || !*soid_str) return SUCCESS;/* successfully added nothing */
    if (*soid_str == '.') soid_str++;
-   soid_buf = strdup(soid_str);
+   soid_buf = netsnmp_strdup(soid_str);
    if (!soid_buf)
        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);
    }
-   free(soid_buf);
+   netsnmp_free(soid_buf);
    return(SUCCESS);
 }
 
@@ -991,27 +972,26 @@
     int ret = SUCCESS;
 
     if (pdu->variables == NULL){
-	pdu->variables = vars =
-           (netsnmp_variable_list *)calloc(1,sizeof(netsnmp_variable_list));
+	pdu->variables = vars
+            = netsnmp_calloc(1, sizeof(netsnmp_variable_list));
     } else {
 	for(vars = pdu->variables;
             vars->next_variable;
             vars = vars->next_variable)
 	    /*EXIT*/;
-	vars->next_variable =
-           (netsnmp_variable_list *)calloc(1,sizeof(netsnmp_variable_list));
+	vars->next_variable = netsnmp_calloc(1, sizeof(netsnmp_variable_list));
 	vars = vars->next_variable;
     }
 
     vars->next_variable = NULL;
-    vars->name = (oid *)malloc(name_length * sizeof(oid));
+    vars->name = netsnmp_malloc(name_length * sizeof(oid));
     memcpy((char *)vars->name, (char *)name, name_length * sizeof(oid));
     vars->name_length = name_length;
     switch (type) {
       case TYPE_INTEGER:
       case TYPE_INTEGER32:
         vars->type = ASN_INTEGER;
-        vars->val.integer = (long *)malloc(sizeof(long));
+        vars->val.integer = netsnmp_malloc(sizeof(long));
         if (val)
             *(vars->val.integer) = strtol(val,NULL,0);
         else {
@@ -1034,7 +1014,7 @@
       case TYPE_UINTEGER:
         vars->type = ASN_UINTEGER;
 as_uint:
-        vars->val.integer = (long *)malloc(sizeof(long));
+        vars->val.integer = netsnmp_malloc(sizeof(long));
         if (val)
             sscanf(val,"%lu",vars->val.integer);
         else {
@@ -1055,20 +1035,20 @@
       case TYPE_OPAQUE:
         vars->type = ASN_OCTET_STR;
 as_oct:
-        vars->val.string = (u_char *)malloc(len);
+        vars->val.string = netsnmp_malloc(len);
         vars->val_len = len;
         if (val && len)
             memcpy((char *)vars->val.string, val, len);
         else {
             ret = FAILURE;
-            vars->val.string = (u_char*)strdup("");
+            vars->val.string = (u_char *) netsnmp_strdup("");
             vars->val_len = 0;
         }
         break;
 
       case TYPE_IPADDR:
         vars->type = ASN_IPADDRESS;
-        vars->val.integer = (long *)malloc(sizeof(in_addr_t));
+        vars->val.integer = netsnmp_malloc(sizeof(in_addr_t));
         if (val)
             *((in_addr_t *)vars->val.integer) = inet_addr(val);
         else {
@@ -1088,7 +1068,7 @@
 	    ret = FAILURE;
         } else {
             vars->val_len *= sizeof(oid);
-            vars->val.objid = (oid *)malloc(vars->val_len);
+            vars->val.objid = netsnmp_malloc(vars->val_len);
             memcpy((char *)vars->val.objid, (char *)oidbuf, vars->val_len);
         }
         break;
@@ -1120,8 +1100,12 @@
    long command = pdu->command;
    *response = NULL;
 retry:
-
-   status = snmp_synch_response(ss, pdu, response);
+	if(api_mode == SNMP_API_SINGLE)
+	{
+		status = snmp_sess_synch_response(ss, pdu, response);
+	} else {
+		status = snmp_synch_response(ss, pdu, response);
+	};
 
    if ((*response == NULL) && (status == STAT_SUCCESS)) status = STAT_ERROR;
 
@@ -1158,10 +1142,10 @@
             /* in SNMPv2c, SNMPv2u, SNMPv2*, and SNMPv3 PDUs */
             case SNMP_ERR_INCONSISTENTNAME:
             default:
-               sv_catpv(err_str_sv,
-                        (char*)snmp_errstring((*response)->errstat));
-               sv_setiv(err_num_sv, (*response)->errstat);
-	       sv_setiv(err_ind_sv, (*response)->errindex);
+				sv_catpv(err_str_sv,
+					(char*)snmp_errstring((*response)->errstat));
+				sv_setiv(err_num_sv, (*response)->errstat);
+				sv_setiv(err_ind_sv, (*response)->errindex);
                status = (*response)->errstat;
                break;
 	 }
@@ -1169,13 +1153,12 @@
 
       case STAT_TIMEOUT:
       case STAT_ERROR:
-          sv_catpv(err_str_sv, (char*)snmp_api_errstring(ss->s_snmp_errno));
-          sv_setiv(err_num_sv, ss->s_snmp_errno);
+	     snmp_return_err(ss, err_str_sv, err_num_sv, err_ind_sv);
          break;
 
       default:
+	     snmp_return_err(ss, err_str_sv, err_num_sv, err_ind_sv);
          sv_catpv(err_str_sv, "send_sync_pdu: unknown status");
-         sv_setiv(err_num_sv, ss->s_snmp_errno);
          break;
    }
 
@@ -1248,7 +1231,12 @@
         reply_pdu->command = SNMP_MSG_RESPONSE;
         reply_pdu->reqid = pdu->reqid;
         reply_pdu->errstat = reply_pdu->errindex = 0;
-        snmp_send(ss, reply_pdu);
+	if(api_mode == SNMP_API_SINGLE)
+	{
+        	snmp_sess_send(ss, reply_pdu);
+	} else {
+	        snmp_send(ss, reply_pdu);
+	}
       } else {
         warn("Couldn't clone PDU for inform response");
       }
@@ -1266,7 +1254,7 @@
 	cp = transport->f_fmtaddr(transport, pdu->transport_data,
 				  pdu->transport_data_length);
 	av_push(traplist, newSVpv(cp, strlen(cp)));
-	free(cp);
+	netsnmp_free(cp);
       } else {
 	/*  This shouldn't ever happen; every session has a transport.  */
 	av_push(traplist, newSVpv("", 0));
@@ -1833,13 +1821,17 @@
    ** snmp_async_send() function returns the reqid on success, 0 on failure.
    */
    if (SvTRUE(context->perl_cb)) {
-      reqid = snmp_async_send(ss, pdu, _bulkwalk_async_cb, (void *)context);
+    if(api_mode == SNMP_API_SINGLE)
+    {
+     reqid = snmp_sess_async_send(ss, pdu, _bulkwalk_async_cb, (void *)context);
+    } else {
+     reqid = snmp_async_send(ss, pdu, _bulkwalk_async_cb, (void *)context);
+    }
 
       DBPRT(2,(DBOUT "bulkwalk_send_pdu(): snmp_async_send => 0x%08X\n", reqid));
 
       if (reqid == 0) {
-	 sv_setpv(*err_str_svp, (char*)snmp_api_errstring(ss->s_snmp_errno));
-	 sv_setiv(*err_num_svp, ss->s_snmp_errno);
+	 snmp_return_err(ss, *err_num_svp, *err_ind_svp, *err_str_svp);
 	 goto err;
       }
 
@@ -2457,6 +2449,8 @@
 	TEST_CONSTANT(value, name, SNMP_DEFAULT_TIMEOUT);
 	TEST_CONSTANT2(value, name, SNMP_DEFAULT_VERSION,
                        NETSNMP_DEFAULT_SNMP_VERSION);
+	TEST_CONSTANT(value, name, SNMP_API_SINGLE);
+	TEST_CONSTANT(value, name, SNMP_API_TRADITIONAL);
 	break;
     case 'X':
             goto not_there;
@@ -2471,6 +2465,49 @@
     return ENOENT;
 }
 
+/* 
+  Since s_snmp_errno can't be trusted with Single Session, this calls either
+  snmp_error or snmp_sess_error to populate ErrorStr,ErrorNum, and ErrorInd
+  in SNMP::Session objects
+*/
+void snmp_return_err( struct snmp_session *ss, SV *err_str, SV *err_num, SV *err_ind )
+{
+	int err;
+	int liberr;
+	char *errstr;
+	if(ss == NULL)
+		return;
+	if(api_mode == SNMP_API_SINGLE)
+	{
+		snmp_sess_error(ss, &err, &liberr, &errstr);
+	} else {
+		snmp_error(ss, &err, &liberr, &errstr);
+	}
+	sv_catpv(err_str, errstr);
+	sv_setiv(err_num, liberr);
+	sv_setiv(err_ind, err);
+	netsnmp_free(errstr);
+}
+
+
+/* 
+  int snmp_api_mode( int mode ) 
+  Returns or sets static int api_mode for reference by functions to determine
+  whether to use Traditional (non-threadsafe) or Single-Session (threadsafe)
+  SNMP API calls.
+ 
+  Call with (int)NULL to return the current mode, or with SNMP_API_TRADITIONAL
+  or SNMP_API_SINGLE to set the current mode.  (defined above)
+ 
+  pm side call defaults to (int)NULL
+*/
+int snmp_api_mode( int mode )
+{
+	if (mode == 0)
+		return api_mode;
+	api_mode = mode;
+	return api_mode;
+}
 
 MODULE = SNMP		PACKAGE = SNMP		PREFIX = snmp
 
@@ -2500,6 +2537,13 @@
     CODE:
         __libraries_init(appname);
 
+#---------------------------------------------------------------------- 
+# Perl call defaults to (int)NULL when given no args, so it will return
+# the current api_mode values
+#----------------------------------------------------------------------
+int 
+snmp_api_mode(mode=0)
+	int mode
 
 SnmpSession *
 snmp_new_session(version, community, peer, lport, retries, timeout)
@@ -2545,7 +2589,12 @@
            session.timeout = timeout; /* 1000000L */
            session.authenticator = NULL;
 
-           ss = snmp_open(&session);
+	   if(api_mode == SNMP_API_SINGLE)
+	   {
+	           ss = snmp_sess_open(&session);
+	   } else {
+		   ss = snmp_open(&session);
+	   }
 
            if (ss == NULL) {
 	      if (verbose) warn("error:snmp_new_session: Couldn't open SNMP session");
@@ -2597,7 +2646,7 @@
                 goto end;
 	   }
 
-	   session.peername = strdup(peer);
+	   session.peername = peer;
            session.retries = retries; /* 5 */
            session.timeout = timeout; /* 1000000L */
            session.authenticator = NULL;
@@ -2714,18 +2763,118 @@
                }
             }
 
-           ss = snmp_open(&session);
+	   if(api_mode == SNMP_API_SINGLE)
+	   {
+	           ss = snmp_sess_open(&session);
+	   } else {
+		   ss = snmp_open(&session);
+	   }
 
            if (ss == NULL) {
 	      if (verbose) warn("error:snmp_new_v3_session:Couldn't open SNMP session");
            }
         end:
            RETVAL = ss;
-	   free (session.contextEngineID);
+	   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_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)
@@ -2768,8 +2917,8 @@
 	   }
            /* WARNING LEAKAGE but I cant free lib memory under win32 */
            ss->community_len = strlen((char *)community);
-           ss->community = (u_char *)strdup(community);
-	   ss->peername = strdup(peer);
+           ss->community = (u_char *)netsnmp_strdup(community);
+	   ss->peername = netsnmp_strdup(peer);
 	   ss->local_port = lport;
            ss->retries = retries; /* 5 */
            ss->timeout = timeout; /* 1000000L */
@@ -2925,6 +3074,7 @@
            int use_enums;
            struct enum_list *ep;
            int best_guess;	   
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 
            New (0, oid_arr, MAX_OID_LEN, oid);
 
@@ -3011,15 +3161,19 @@
                  xs_cb_data->perl_cb = newSVsv(perl_callback);
                  xs_cb_data->sess_ref = newRV_inc(SvRV(sess_ref));
 
+		if(api_mode == SNMP_API_SINGLE)
+		{
+                 status = snmp_sess_async_send(ss, pdu, __snmp_xs_cb,
+                                          (void*)xs_cb_data);
+		} else {
                  status = snmp_async_send(ss, pdu, __snmp_xs_cb,
                                           (void*)xs_cb_data);
+		}
                  if (status != 0) {
                     XPUSHs(sv_2mortal(newSViv(status))); /* push the reqid?? */
                  } else {
                     snmp_free_pdu(pdu);
-                    sv_catpv(*err_str_svp,
-                             (char*)snmp_api_errstring(ss->s_snmp_errno));
-                    sv_setiv(*err_num_svp, ss->s_snmp_errno);
+					snmp_return_err(ss, *err_str_svp, *err_num_svp, *err_ind_svp);
                     XPUSHs(&sv_undef);
                  }
 		 goto done;
@@ -3042,6 +3196,9 @@
               /* BUG!!! need to return an error value */
               XPUSHs(&sv_undef); /* no mem or bad args */
            }
+#else  /* NETSNMP_NO_WRITE_SUPPORT */
+           warn("error: Net-SNMP was compiled using --enable-read-only, set() can not be used.");
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 done:
            Safefree(oid_arr);
         }
@@ -3194,15 +3351,19 @@
                  xs_cb_data->perl_cb = newSVsv(perl_callback);
                  xs_cb_data->sess_ref = newSVsv(sess_ref);
 
+		if(api_mode == SNMP_API_SINGLE)
+		{
+		 status = snmp_sess_async_send(ss, pdu, __snmp_xs_cb,
+					  (void*)xs_cb_data);
+		} else {
                  status = snmp_async_send(ss, pdu, __snmp_xs_cb,
                                           (void*)xs_cb_data);
+		}
                  if (status != 0) {
                     XPUSHs(sv_2mortal(newSViv(status))); /* push the reqid?? */
                  } else {
                     snmp_free_pdu(pdu);
-                    sv_catpv(*err_str_svp,
-                             (char*)snmp_api_errstring(ss->s_snmp_errno));
-                    sv_setiv(*err_num_svp, ss->s_snmp_errno);
+	  	    snmp_return_err(ss, *err_num_svp, *err_ind_svp, *err_str_svp);  
                     XPUSHs(&sv_undef);
                  }
 		 goto done;
@@ -3431,15 +3592,19 @@
                  xs_cb_data->perl_cb = newSVsv(perl_callback);
                  xs_cb_data->sess_ref = newSVsv(sess_ref);
 
+		if(api_mode == SNMP_API_SINGLE)
+		{
+                 status = snmp_sess_async_send(ss, pdu, __snmp_xs_cb,
+                                          (void*)xs_cb_data);
+		} else {
                  status = snmp_async_send(ss, pdu, __snmp_xs_cb,
                                           (void*)xs_cb_data);
+		}
                  if (status != 0) {
                     XPUSHs(sv_2mortal(newSViv(status))); /* push the reqid?? */
                  } else {
                     snmp_free_pdu(pdu);
-                    sv_catpv(*err_str_svp,
-                             (char*)snmp_api_errstring(ss->s_snmp_errno));
-                    sv_setiv(*err_num_svp, ss->s_snmp_errno);
+					snmp_return_err(ss, *err_num_svp, *err_ind_svp, *err_str_svp);
                     XPUSHs(&sv_undef);
                  }
 		 goto done;
@@ -3669,15 +3834,19 @@
                  xs_cb_data->perl_cb = newSVsv(perl_callback);
                  xs_cb_data->sess_ref = newSVsv(sess_ref);
 
+		if(api_mode == SNMP_API_SINGLE)
+		{
+                 status = snmp_sess_async_send(ss, pdu, __snmp_xs_cb,
+                                          (void*)xs_cb_data);
+		} else {
                  status = snmp_async_send(ss, pdu, __snmp_xs_cb,
                                           (void*)xs_cb_data);
+		}
                  if (status != 0) {
                     XPUSHs(sv_2mortal(newSViv(status))); /* push the reqid?? */
                  } else {
                     snmp_free_pdu(pdu);
-                    sv_catpv(*err_str_svp,
-                             (char*)snmp_api_errstring(ss->s_snmp_errno));
-                    sv_setiv(*err_num_svp, ss->s_snmp_errno);
+					snmp_return_err(ss, *err_num_svp, *err_ind_svp, *err_str_svp);
                     XPUSHs(&sv_undef);
                  }
 		 goto done;
@@ -4028,7 +4197,7 @@
 	      }
 
 	      /* Sent okay...  Return the request ID in 'pdu' as an SvIV. */
-	      DBPRT(1,(DBOUT "Okay, request id is %p\n", pdu));
+	      DBPRT(1,(DBOUT "Okay, request id is %ld\n", (long)(intptr_t)pdu));
 /*	      XSRETURN_IV((intptr_t)pdu); */
 	      XPUSHs(sv_2mortal(newSViv((IV)pdu)));
 	      XSRETURN(1);
@@ -4208,7 +4377,7 @@
               } /* for all the vars */
               }
 
-	      pdu->enterprise = (oid *)malloc( MAX_OID_LEN * sizeof(oid));
+	      pdu->enterprise = (oid *)netsnmp_malloc(MAX_OID_LEN * sizeof(oid));
               tp = __tag2oid(enterprise,NULL, pdu->enterprise,
                              &pdu->enterprise_length, NULL, best_guess);
   	      if (pdu->enterprise_length == 0) {
@@ -4219,12 +4388,12 @@
 		  agent-address field to that.  Otherwise set it to
 		  our address.  */
               if (agent && strlen(agent)) {
-                 if (__parse_address(agent) == -1 && verbose) {
-		   warn("error:trap:invalid agent address: %s", agent);
-		   goto err;
-                 } else {
-		   *((in_addr_t *)pdu->agent_addr) = __parse_address(agent);
-		 }
+                 if (0 > netsnmp_gethostbyname_v4(agent, 
+                                                 (in_addr_t *)pdu->agent_addr)){
+                     if (verbose)
+                         warn("error:trap:invalid agent address: %s", agent);
+                     goto err;
+                 } 
               } else {
                  *((in_addr_t *)pdu->agent_addr) = get_myaddr();
               }
@@ -4232,9 +4401,14 @@
               pdu->specific_type = specific;
               pdu->time = uptime;
 
-              if (snmp_send(ss, pdu) == 0) {
+	     if(api_mode == SNMP_API_SINGLE)
+	     {
+		if(snmp_sess_send(ss,pdu) == 0)
+			snmp_free_pdu(pdu);
+	     } else {
+              if (snmp_send(ss, pdu) == 0) 
 	         snmp_free_pdu(pdu);
-              }
+             }
               XPUSHs(sv_2mortal(newSVpv(ZERO_BUT_TRUE,0)));
            } else {
 err:
@@ -4277,7 +4451,7 @@
 	   
            New (0, oid_arr, MAX_OID_LEN, oid);
 
-           if (oid_arr && SvROK(sess_ref) && SvROK(varlist_ref)) {
+           if (oid_arr && SvROK(sess_ref)) {
 
               sess_ptr_sv = hv_fetch((HV*)SvRV(sess_ref), "SessPtr", 7, 1);
 	      ss = (SnmpSession *)SvIV((SV*)SvRV(*sess_ptr_sv));
@@ -4291,8 +4465,13 @@
 	      
               pdu = snmp_pdu_create(SNMP_MSG_TRAP2);
 
-              varlist = (AV*) SvRV(varlist_ref);
-              varlist_len = av_len(varlist);
+              if (SvROK(varlist_ref)) {
+                  varlist = (AV*) SvRV(varlist_ref);
+                  varlist_len = av_len(varlist);
+              } else {
+                  varlist = NULL;
+                  varlist_len = -1;
+              }
 	      /************************************************/
               res = __add_var_val_str(pdu, sysUpTime, SYS_UPTIME_OID_LEN,
 				uptime, strlen(uptime), TYPE_TIMETICKS);
@@ -4365,9 +4544,14 @@
                  } /* if var_ref is ok */
               } /* for all the vars */
 
-              if (snmp_send(ss, pdu) == 0) {
+	     if(api_mode == SNMP_API_SINGLE)
+	     {
+              if (snmp_sess_send(ss, pdu) == 0)
 	         snmp_free_pdu(pdu);
-              }
+	     } else {
+              if (snmp_send(ss, pdu) == 0) 
+	         snmp_free_pdu(pdu);
+             }
 
               XPUSHs(sv_2mortal(newSVpv(ZERO_BUT_TRUE,0)));
            } else {
@@ -4511,15 +4695,19 @@
                  xs_cb_data->perl_cb = newSVsv(perl_callback);
                  xs_cb_data->sess_ref = newRV_inc(SvRV(sess_ref));
 
+		if(api_mode == SNMP_API_SINGLE)
+		{
+                 status = snmp_sess_async_send(ss, pdu, __snmp_xs_cb,
+                                          (void*)xs_cb_data);
+		} else {
                  status = snmp_async_send(ss, pdu, __snmp_xs_cb,
                                           (void*)xs_cb_data);
+		}
                  if (status != 0) {
                     XPUSHs(sv_2mortal(newSViv(status))); /* push the reqid?? */
                  } else {
                     snmp_free_pdu(pdu);
-                    sv_catpv(*err_str_svp,
-                             (char*)snmp_api_errstring(ss->s_snmp_errno));
-                    sv_setiv(*err_num_svp, ss->s_snmp_errno);
+					snmp_return_err(ss, *err_num_svp, *err_ind_svp, *err_str_svp);
                     XPUSHs(&sv_undef);
                  }
 		 goto done;
@@ -4571,7 +4759,8 @@
 	int		flag
 	CODE:
 	{
-	   snmp_set_dump_packet(flag);
+            netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                   NETSNMP_DS_LIB_DUMP_PACKET, flag);
 	}
 
 
@@ -4719,7 +4908,8 @@
 	int	val
 	CODE:
 	{
-	   snmp_set_save_descriptions(val);
+            netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                   NETSNMP_DS_LIB_SAVE_MIB_DESCRS, val);
 	}
 
 void
@@ -4775,11 +4965,18 @@
 	}
 
 
+#-----------------------------------------------------------------------------
+# Note: ss=(SnmpSession*)NULL is so &SNMP::MainLoop() can still be called 
+# without a sess handler argument, this way I'm not breaking anyone's old code
+#
+# see MainLoop() in SNMP.pm for more details
+#-----------------------------------------------------------------------------
 void
-snmp_main_loop(timeout_sec,timeout_usec,perl_callback)
+snmp_main_loop(timeout_sec,timeout_usec,perl_callback,ss=(SnmpSession*)NULL)
 	int 	timeout_sec
 	int 	timeout_usec
 	SV *	perl_callback
+	SnmpSession *ss
 	CODE:
 	{
         int numfds, fd_count;
@@ -4791,7 +4988,6 @@
         int block;
 	SV *cb;
 
-
  	mainloop_finish = 0;
 
 	itvp = &interval;
@@ -4809,7 +5005,12 @@
            block = 1;
            tvp = &time_val;
            timerclear(tvp);
+	  if(api_mode == SNMP_API_SINGLE)
+	  {
+           snmp_sess_select_info(ss,&numfds, &fdset, tvp, &block);
+	  } else {
            snmp_select_info(&numfds, &fdset, tvp, &block);
+	  }
            __recalc_timeout(tvp,ctvp,ltvp,itvp,&block);
            # printf("pre-select: numfds = %ld, block = %ld\n", numfds, block);
            if (block == 1) tvp = NULL; /* block without timeout */
@@ -4818,7 +5019,12 @@
            if (fd_count > 0) {
                        ENTER;
                        SAVETMPS;
-              snmp_read(&fdset);
+		if(api_mode == SNMP_API_SINGLE)
+		{
+		  snmp_sess_read(ss, &fdset);
+		} else {
+              	  snmp_read(&fdset);
+		}
                        FREETMPS;
                        LEAVE;
 
@@ -4827,7 +5033,12 @@
 		 SPAGAIN;
 		 ENTER;
 		 SAVETMPS;
+		if(api_mode == SNMP_API_SINGLE)
+		{
+		snmp_sess_timeout( ss );
+		} else { 
                  snmp_timeout();
+		}
                  if (!timerisset(ctvp)) {
                     if (SvTRUE(perl_callback)) {
                        /* sv_2mortal(perl_callback); */
@@ -5045,9 +5256,7 @@
 	          /* we must be looking at description */
                  sv_setpv(ret,tp->description);
                  break;
-              case 'i': /* indexes */
-                 if (strncmp("indexes", key, strlen(key))) break;
-                 index_av = newAV();
+              case 'i': /* indexes, implied */
                  if (tp->augments) {
  	             clear_tree_flags(get_tree_head()); 
                      tptmp = find_best_tree_node(tp->augments, get_tree_head(), NULL);
@@ -5057,6 +5266,19 @@
                  } else {
                      tptmp = tp;
                  }
+                 if (strcmp("implied", key) == 0) {
+                     /* only the last index can be implied */
+                     int isimplied = 0;
+                     if (tptmp && tptmp->indexes) {
+                         for(ip=tptmp->indexes; ip->next; ip = ip->next) {
+                         }
+                         isimplied = ip->isimplied;
+                     }
+                     sv_setiv(ret, isimplied);
+                     break;
+                 }
+                 if (strncmp("indexes", key, strlen(key))) break;
+                 index_av = newAV();
                  if (tptmp)
                      for(ip=tptmp->indexes; ip != NULL; ip = ip->next) {
                          av_push(index_av,newSVpv((ip->ilabel),strlen(ip->ilabel)));
@@ -5238,6 +5460,14 @@
 	SnmpSession *sess_ptr
 	CODE:
 	{
+	if(sess_ptr != NULL)
+	{
+ 	 if(api_mode == SNMP_API_SINGLE)
+	 {
+           snmp_sess_close( sess_ptr );
+	 } else { 
            snmp_close( sess_ptr );
+	 }
+	}
 	}
 
diff --git a/perl/SNMP/netsnmp-feature-definitions.h b/perl/SNMP/netsnmp-feature-definitions.h
new file mode 100644
index 0000000..adc642c
--- /dev/null
+++ b/perl/SNMP/netsnmp-feature-definitions.h
@@ -0,0 +1,8 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_require(snprint_objid)
+netsnmp_feature_require(snprint_value)
+netsnmp_feature_require(find_module)
+netsnmp_feature_require(get_tc_description)
+
diff --git a/perl/SNMP/t/async.t b/perl/SNMP/t/async.t
index b1c86c6..f3fb38d 100644
--- a/perl/SNMP/t/async.t
+++ b/perl/SNMP/t/async.t
@@ -17,7 +17,7 @@
 use vars qw($agent_port $comm $agent_host);
 
 if ($^O =~ /win32/i) {
-  warn "Win32 detected - skipping async calls\n";
+  warn "Win32/Win64 detected - skipping async calls\n";
   exit;
 }
 
diff --git a/perl/SNMP/t/bulkwalk.t b/perl/SNMP/t/bulkwalk.t
index 60f10b5..2d13e7b 100644
--- a/perl/SNMP/t/bulkwalk.t
+++ b/perl/SNMP/t/bulkwalk.t
@@ -326,7 +326,7 @@
 			    ['ifSpeed'], ['ifDescr']);	 # Repeated variables.
 
 if ($^O =~ /win32/i) {
-  warn "Win32 detected - skipping async calls\n";
+  warn "Win32/Win64 detected - skipping async calls\n";
 }
 else {
   @list = $s1->bulkwalk(2, 16, $vars, [ \&async_cb1, $vars ] );
diff --git a/perl/SNMP/t/notify.t b/perl/SNMP/t/notify.t
index 434237f..72600fa 100644
--- a/perl/SNMP/t/notify.t
+++ b/perl/SNMP/t/notify.t
@@ -10,7 +10,7 @@
     $ENV{'MIBDIRS'} = '+' . abs_path("../../mibs");
 }
 use Test;
-BEGIN { $n = 10; plan tests => $n }
+BEGIN { $n = 11; plan tests => $n }
 use SNMP;
 use vars qw($agent_port $comm $comm2 $trap_port $agent_host $sec_name $priv_pass $auth_pass $bad_name);
 require 't/startagent.pl';
@@ -21,20 +21,20 @@
 my $generic = 'specific';
 
 #                         V1 trap testing
-######################  1  #############################
+########################  1  ############################
 # Fire up a trap session.
 my $s1 =
     new SNMP::Session (DestHost=>$agent_host,Version=>1,Community=>$comm,RemotePort=>$trap_port);
 ok(defined($s1));
 
-##########################  2  ####################################
+########################  2  ############################
 # test v1 trap
 if (defined($s1)) {
   $res = $s1->trap(enterprise => $enterprise, agent=>$agent_host, generic=>$generic,[[sysContact, 0, 'root@localhost'], [sysLocation, 0, 'here']] );
 }
 ok($res =~ /^0 but true/);
 
-########################### 3 #############################
+########################  3  ############################
 # test with wrong varbind
 undef $res;
 if (defined($s1)) {
@@ -45,12 +45,12 @@
 #########################################################
 
 #                      V2 testing
-########################## 4 ############################
+########################  4  ############################
 # Fire up a v2 trap session.
 my $s2 =
     new SNMP::Session (Version=>2, DestHost=>$agent_host,Community=>$comm2,RemotePort=>$trap_port);
 ok(defined($s2));
-#########################  5  ###########################
+########################  5  ############################
 # test v2 trap
 undef $res;
 if (defined($s2)) {
@@ -58,7 +58,7 @@
   #print("res is $res\n");
 }
 ok($res =~ /^0 but true/);
-##########################  6  ##########################
+########################  6  ############################
 # no trapoid and uptime given. Should take defaults...
 my $ret;
 if (defined($s2)) {
@@ -66,27 +66,35 @@
   #print("res is $ret\n");
 }
 ok(defined($ret));
+########################  7  ############################
+# no varbind list given.
+undef $res;
+if (defined($s2)) {
+  $res = $s2->trap(trapoid=>'coldStart');
+  #print("res is $res\n");
+}
+ok(defined($res) && $res =~ /^0 but true/);
 
 #########################################################
 
 #                     v3 testing
-########################  7  ############################
+########################  8  ############################
 # Fire up a v3 trap session.
 my $s3 = new SNMP::Session(Version=>3, DestHost=> $agent_host, RemotePort=>$trap_port, SecName => $sec_name);
 ok(defined($s3));
 
-########################  8  ###########################
+########################  9  ############################
 if (defined($s3)) {
   $res = $s3->inform(uptime=>111, trapoid=>'coldStart', [[sysContact, 0, 'root@localhost'], [sysLocation, 0, 'here']] );
 }
 ok($res =~ /^0 but true/);
 
-#################### 9 #####################
+######################## 10  ############################
 # Fire up a v3 trap session.
 $s3 = new SNMP::Session(Version=>3, DestHost=> $agent_host, RemotePort=>$trap_port, SecName => $sec_name, SecLevel => authPriv, AuthPass => $auth_pass, PrivPass => $priv_pass);
 ok(defined($s3));
 
-########################  10  ###########################
+######################## 11  ############################
 undef $res;
 if (defined($s3)) {
     $res = $s3->inform(uptime=>111, trapoid=>'coldStart', [[sysContact, 0, 'root@localhost'], [sysLocation, 0, 'here']] );
diff --git a/perl/SNMP/t/startagent.pl b/perl/SNMP/t/startagent.pl
index 95cd38e..3e92c12 100644
--- a/perl/SNMP/t/startagent.pl
+++ b/perl/SNMP/t/startagent.pl
@@ -39,43 +39,50 @@
   require Win32::Process;
 }
 
-sub snmptest_cleanup {
-    sleep 1; # strangely we need to wait for pid files to appear ??
-    if ((-e "t/snmpd.pid") && (-r "t/snmpd.pid")) {
-        #warn "\nStopping agents for test script $0\n";
-        # Making sure that any running agents are killed.
-	# warn "killing snmpd:", `cat t/snmpd.pid`, "\n";
-        if ($^O !~ /win32/i) {
-          system "kill `cat t/snmpd.pid` > /dev/null 2>&1";
-        }
-        else {
-          open(H, "<t/snmpd.pid");
-          my $pid = (<H>);
-          close (H);
-          if ($pid > 0) {
-            Win32::Process::KillProcess($pid, 0)
-          }
-        }
-	unlink "t/snmpd.pid";
+sub run_async {
+  my ($pidfile, $cmd, @args) = @_;
+  if (-r "$cmd" and -x "$cmd") {
+    if ($^O =~ /win32/i) {
+      $cmd =~ s/\//\\/g;
+      system "start \"$cmd\" /min cmd /c \"$cmd @args 2>&1\"";
+    } else {
+      system "$cmd @args 2>&1";
     }
-    if ((-e "t/snmptrapd.pid") && (-r "t/snmptrapd.pid")) {
-        # Making sure that any running agents are killed.
-	# warn "killing snmptrap:", `cat t/snmptrapd.pid`, "\n";
-        if ($^O !~ /win32/i) {
-          system "kill `cat t/snmptrapd.pid` > /dev/null 2>&1";
-        }
-        else {
-          open(H, "<t/snmptrapd.pid");
-          my $pid = (<H>);
-          close (H);
-          if ($pid > 0) {
-            Win32::Process::KillProcess($pid, 0)
-          }
-        }
-          
-	unlink "t/snmptrapd.pid";
+    # Wait at most three seconds for the pid file to appear.
+    for ($i = 0; ($i < 3) && ! (-r "$pidfile"); ++$i) {
+      sleep 1;
     }
+  } else {
+    warn "Couldn't run $cmd\n";
+  }
 }
+
+sub snmptest_cleanup {
+  kill_by_pid_file("t/snmpd.pid");
+  unlink("t/snmpd.pid");
+  kill_by_pid_file("t/snmptrapd.pid");
+  unlink("t/snmptrapd.pid");
+}
+
+sub kill_by_pid_file {
+  if ((-e "$_[0]") && (-r "$_[0]")) {
+    if ($^O !~ /win32/i) {
+      # Unix or Windows + Cygwin.
+      system "kill `cat $_[0]` > /dev/null 2>&1";
+    } else {
+      # Windows + MSVC or Windows + MinGW.
+      open(H, "<$_[0]");
+      my $pid = (<H>);
+      close (H);
+      if ($pid > 0) {
+        Win32::Process::KillProcess($pid, 0)
+      }
+    }
+  }
+}
+
+
+# Stop any processes started during a previous test.
 snmptest_cleanup();
 
 #Open the snmptest.cmd file and get the info
@@ -98,48 +105,21 @@
   die ("Could not start agent. Couldn't find snmptest.cmd file\n");
 }
 
+# Start snmpd and snmptrapd.
+
 #warn "\nStarting agents for test script $0\n";
 
-if ($^O !~ /win32/i) {
-  # Unix
-  if ($snmpd_cmd) {
-    if (-r $snmpd_cmd and -x $snmpd_cmd) {
-      $basedir = `pwd`;
-      chomp $basedir;
-      system "$snmpd_cmd -r -Lf t/snmptest.log -M+$mibdir -C -c $basedir/t/snmptest.conf -p $basedir/t/snmpd.pid ${agent_host}:${agent_port} > /dev/null 2>&1";
-    } else {
-      warn("Couldn't run snmpd\n");
-    }
-  }
-  if ($snmptrapd_cmd) {
-    if (-r $snmptrapd_cmd and -x $snmptrapd_cmd) {
-      system "$snmptrapd_cmd -p t/snmptrapd.pid -M+$mibdir -C -c t/snmptest.conf -C ${agent_host}:${trap_port} > /dev/null 2>&1";
-    } else {
-      warn("Couldn't run snmptrapd\n");
-    }
-  }
+my $scriptname = "snmptest";
+if ($0 =~ /^t[\/\\](.*)\.t$/) {
+  $scriptname = $1;
 }
-else {
-  # Windows
-  if ($snmpd_cmd) {
-      if (-r $snmpd_cmd) {
-        #print STDERR "start \"SNMPD\" /min \"$snmpd_cmd\" -r -Lf t/snmptest.log -C -c t/snmptest.conf -p t/snmpd.pid $agent_port > nul\n";
-      system "start \"SNMPD\" /min \"$snmpd_cmd\" -r -Lf t/snmptest.log -C -c t/snmptest.conf -p t/snmpd.pid $agent_port > nul";
-    } else {
-      warn("Couldn't run snmpd\n");
-    }
-  }
-  if ($snmptrapd_cmd) {
-    if (-r $snmptrapd_cmd) {
-      #print STDERR "start /min \"SNMPTRAPD\" \"$snmptrapd_cmd\" -Lf t/snmptrapdtest.log -p t/snmptrapd.pid -C -c t/snmptest.conf $trap_port > nul\n";
-      system "start /min \"SNMPTRAPD\" \"$snmptrapd_cmd\" -Lf t/snmptrapdtest.log -p t/snmptrapd.pid -C -c t/snmptest.conf $trap_port > nul";
-    } else {
-      warn("Couldn't run snmptrapd\n");
-    }
-  }
-  sleep 2; # Give programs time to start
 
-} 
+if ($snmpd_cmd) {
+  run_async("t/snmpd.pid", "$snmpd_cmd", "-r -d -Lf t/snmpd-$scriptname.log -M+$mibdir -C -c t/snmptest.conf -p t/snmpd.pid ${agent_host}:${agent_port} >t/snmpd-$scriptname.stderr");
+}
+if ($snmptrapd_cmd) {
+  run_async("t/snmptrapd.pid", "$snmptrapd_cmd", "-d -Lf t/snmptrapd-$scriptname.log -p t/snmptrapd.pid -M+$mibdir -C -c t/snmptest.conf -C ${agent_host}:${trap_port} >t/snmptrapd-$scriptname.stderr");
+}
 
 1;
 
diff --git a/perl/TrapReceiver/Makefile.PL b/perl/TrapReceiver/Makefile.PL
index 5c9463a..874ee21 100644
--- a/perl/TrapReceiver/Makefile.PL
+++ b/perl/TrapReceiver/Makefile.PL
@@ -57,14 +57,13 @@
     }
 
     my ($snmp_lib, $snmp_llib, $sep);
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
       $opts = NetSNMPGetOpts();	
-      $Params{'DEFINE'} = "-DMSVC_PERL";
+      $Params{'DEFINE'} = "-DMSVC_PERL -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS";
       $sep = '\\';
       $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\\ ";
@@ -108,7 +107,7 @@
     else {
 	$opts = NetSNMPGetOpts();
 	$Params{'LDDLFLAGS'} = "$Config{lddlflags} " . `$opts->{'nsconfig'} --ldflags`;
-	$Params{'LIBS'} = '-lnetsnmptrapd -lnetsnmpagent -lnetsnmp';
+	$Params{'LIBS'} = '-lnetsnmptrapd ' . `$opts->{'nsconfig'} --base-agent-libs`;
 	chomp($Params{'LIBS'});
 	if (!$ENV{'NETSNMP_CCFLAGS'}) {
 	    $Params{'CCFLAGS'} = `$opts->{'nsconfig'} --cflags`;
@@ -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'}";
@@ -142,7 +141,7 @@
     $rootpath = "../" if (!$rootpath);
     $rootpath .= '/' if ($rootpath !~ /\/$/);
     
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
 
       # Grab command line options first.  Only used if environment variables are not set
       GetOptions("NET-SNMP-IN-SOURCE=s" => \$ret{'insource'},
@@ -225,7 +224,7 @@
 
 
 sub Check_Version {
-  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} eq 'msys')) {
+  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} ne '')) {
     my $foundversion = 0;
     return if ($ENV{'NETSNMP_DONT_CHECK_VERSION'});
     open(I,"<Makefile");
diff --git a/perl/TrapReceiver/TrapReceiver.pm b/perl/TrapReceiver/TrapReceiver.pm
index 3a5425d..85a041a 100644
--- a/perl/TrapReceiver/TrapReceiver.pm
+++ b/perl/TrapReceiver/TrapReceiver.pm
@@ -47,7 +47,7 @@
 	NETSNMPTRAPD_PRE_HANDLER
 );
 
-$VERSION = '5.0404';
+$VERSION = '5.0703';
 
 # sub new {
 #     my $type = shift;
diff --git a/perl/TrapReceiver/TrapReceiver.xs b/perl/TrapReceiver/TrapReceiver.xs
index 8713efd..a4fc136 100644
--- a/perl/TrapReceiver/TrapReceiver.xs
+++ b/perl/TrapReceiver/TrapReceiver.xs
@@ -99,7 +99,7 @@
         char *tstr = transport->f_fmtaddr(transport, pdu->transport_data,
                                           pdu->transport_data_length);
         STOREPDUs("receivedfrom", tstr);
-        free(tstr);
+        netsnmp_free(tstr);
     }
 
 
@@ -113,7 +113,7 @@
     for(vb = pdu->variables; vb; vb = vb->next_variable) {
 
         /* get the oid */
-        o = SNMP_MALLOC_TYPEDEF(netsnmp_oid);
+        o = malloc(sizeof(netsnmp_oid));
         o->name = o->namebuf;
         o->len = vb->name_length;
         memcpy(o->name, vb->name, vb->name_length * sizeof(oid));
@@ -178,7 +178,7 @@
 
         av_push(vba,tmparray[i]);
         av_push(vba,newSVpvn((char *) outbuf, oo_len));
-        free(outbuf);
+        netsnmp_free(outbuf);
         av_push(vba,newSViv(vb->type));
         av_push(varbinds, (SV *) newRV_noinc((SV *) vba));
     }
@@ -214,7 +214,7 @@
 	SV *rv = POPs;
 
 	if (SvTYPE(rv) != SVt_IV) {
-	  snmp_log(LOG_WARNING, " perl callback function %p returned a scalar of type %d instead of an integer, assuming %d (NETSNMPTRAPD_HANDLER_OK)\n", pcallback, SvTYPE(rv), NETSNMPTRAPD_HANDLER_OK);
+	  snmp_log(LOG_WARNING, " perl callback function %p returned a scalar of type %lu instead of an integer, assuming %d (NETSNMPTRAPD_HANDLER_OK)\n", pcallback, (unsigned long)SvTYPE(rv), NETSNMPTRAPD_HANDLER_OK);
 	}
 	else {
 	  int rvi = (IV)SvIVx(rv);
@@ -300,7 +300,7 @@
             }
         
             if (handler) {
-                cb_data = SNMP_MALLOC_TYPEDEF(trapd_cb_data);
+                cb_data = malloc(sizeof(trapd_cb_data));
                 cb_data->perl_cb = newSVsv(perlcallback);
                 handler->handler_data = cb_data;
                 handler->authtypes = (1 << VACM_VIEW_EXECUTE);
diff --git a/perl/TrapReceiver/netsnmp-feature-definitions.h b/perl/TrapReceiver/netsnmp-feature-definitions.h
new file mode 100644
index 0000000..bd331e3
--- /dev/null
+++ b/perl/TrapReceiver/netsnmp-feature-definitions.h
@@ -0,0 +1,6 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_require(netsnmp_add_default_traphandler)
+netsnmp_feature_require(memory_free)
+
diff --git a/perl/agent/Makefile.PL b/perl/agent/Makefile.PL
index b4b358a..4f7bee3 100644
--- a/perl/agent/Makefile.PL
+++ b/perl/agent/Makefile.PL
@@ -30,14 +30,13 @@
     }
                                    
     my ($snmp_lib, $snmp_llib, $sep);
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
       $opts = NetSNMPGetOpts();	
-      $Params{'DEFINE'} = "-DMSVC_PERL";
+      $Params{'DEFINE'} = "-DMSVC_PERL -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS";
       $sep = '\\';
       $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'};
@@ -109,7 +108,7 @@
     $rootpath = "../" if (!$rootpath);
     $rootpath .= '/' if ($rootpath !~ /\/$/);
     
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
 
       # Grab command line options first.  Only used if environment variables are not set
       GetOptions("NET-SNMP-IN-SOURCE=s" => \$ret{'insource'},
@@ -192,7 +191,7 @@
 
 
 sub Check_Version {
-  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} eq 'msys')) {
+  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} ne '')) {
     my $foundversion = 0;
     return if ($ENV{'NETSNMP_DONT_CHECK_VERSION'});
     open(I,"<Makefile");
diff --git a/perl/agent/Support/Makefile.PL b/perl/agent/Support/Makefile.PL
index 3a4f200..48815b6 100644
--- a/perl/agent/Support/Makefile.PL
+++ b/perl/agent/Support/Makefile.PL
@@ -29,9 +29,9 @@
                   
     my ($snmp_lib, $snmp_llib, $sep);
 
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
       $opts = NetSNMPGetOpts();	
-      $Params{'DEFINE'} = "-DMSVC_PERL";
+      $Params{'DEFINE'} = "-DMSVC_PERL -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS";
       $sep = '\\';
       $snmp_lib_file = 'netsnmp.lib';
       $snmp_link_lib = 'netsnmp';
@@ -101,7 +101,7 @@
     $rootpath = "../" if (!$rootpath);
     $rootpath .= '/' if ($rootpath !~ /\/$/);
     
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
 
       # Grab command line options first.  Only used if environment variables are not set
       GetOptions("NET-SNMP-IN-SOURCE=s" => \$ret{'insource'},
@@ -184,7 +184,7 @@
 
 
 sub Check_Version {
-  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} eq 'msys')) {
+  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} ne '')) {
     my $foundversion = 0;
     return if ($ENV{'NETSNMP_DONT_CHECK_VERSION'});
     open(I,"<Makefile");
diff --git a/perl/agent/Support/Support.pm b/perl/agent/Support/Support.pm
index da8c77e..03f54d9 100644
--- a/perl/agent/Support/Support.pm
+++ b/perl/agent/Support/Support.pm
@@ -26,7 +26,7 @@
 @ISA       = qw(Exporter getLeaf);
 @EXPORT    = qw(registerAgent getOidElement setOidElement);
 @EXPORT_OK = qw();
-$VERSION = '5.0404';
+$VERSION = '5.0703';
 
 use strict;
 use warnings;
diff --git a/perl/agent/agent.pm b/perl/agent/agent.pm
index 618a2c6..46500ff 100644
--- a/perl/agent/agent.pm
+++ b/perl/agent/agent.pm
@@ -87,7 +87,7 @@
 	SNMP_ERR_AUTHORIZATIONERROR
 	SNMP_ERR_NOTWRITABLE
 );
-$VERSION = '5.0404';
+$VERSION = '5.0703';
 
 sub AUTOLOAD {
     # This AUTOLOAD is used to 'autoload' constants from the constant()
@@ -199,6 +199,12 @@
     __agent_check_and_process($blocking || 0);
 }
 
+sub uptime {
+    my $self = shift;
+    $self->maybe_init_lib();
+    return _uptime();
+}
+
 bootstrap NetSNMP::agent $VERSION;
 
 # Preloaded methods go here.
@@ -490,6 +496,20 @@
 
 	$request->setRepeat(5);
 
+    getSourceIp ()
+
+	Gets the IPv4 address of the device making the request to the handler.
+
+	use Socket;
+	print "Source: ", inet_ntoa($request->getSourceIp()), "\n";
+
+    getDestIp ()
+
+	Gets the IPv4 address of the destination that the request was sent to.
+
+	use Socket;
+	print "Destination: ", inet_ntoa($request->getDestIp()), "\n";
+
 =head1 MODES
 
 	MODE_GET
diff --git a/perl/agent/agent.xs b/perl/agent/agent.xs
index 5606c3c..c7b5d9a 100644
--- a/perl/agent/agent.xs
+++ b/perl/agent/agent.xs
@@ -19,6 +19,12 @@
 
 typedef netsnmp_handler_registration *NetSNMP__agent__netsnmp_handler_registration;
 
+/*
+ * 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;
 } handler_cb_data;
@@ -54,12 +60,14 @@
 static int constant_MODE_SET_R(double *value, const char *name, const int len)
 {
     switch (len >= 16 ? name[16] : -1) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case '1':
 	TEST_CONSTANT(value, name, MODE_SET_RESERVE1);
         break;
     case '2':
 	TEST_CONSTANT(value, name, MODE_SET_RESERVE2);
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
     }
     return EINVAL;
 }
@@ -115,6 +123,7 @@
         return EINVAL;
 
     switch (len >= 9 ? name[9] : -1) {
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case 'A':
         TEST_CONSTANT(value, name, MODE_SET_ACTION);
         break;
@@ -127,11 +136,12 @@
     case 'F':
         TEST_CONSTANT(value, name, MODE_SET_FREE);
         break;
-    case 'R':
-        return constant_MODE_SET_R(value, name, len);
     case 'U':
         TEST_CONSTANT(value, name, MODE_SET_UNDO);
         break;
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+    case 'R':
+        return constant_MODE_SET_R(value, name, len);
     }
     return EINVAL;
 }
@@ -228,6 +238,13 @@
     OUTPUT:
 	RETVAL
 
+int
+_uptime()
+    CODE:
+        RETVAL = netsnmp_get_agent_uptime();
+    OUTPUT:
+	RETVAL
+
 void
 init_mib()
     CODE:
@@ -238,6 +255,11 @@
 int
 init_agent(name)
         const char *name;
+    CODE:
+        SOCK_STARTUP;
+        RETVAL = init_agent(name);
+    OUTPUT:
+        RETVAL
 
 void
 init_snmp(name)
@@ -273,7 +295,7 @@
         if (0)
             printf("me = %p\n", me);
         stringptr = SvPV(value, stringlen);
-        snmp_log(LOG_ERR, stringptr );
+        snmp_log(LOG_ERR, "%s", stringptr );
     }
 
 
@@ -313,7 +335,14 @@
 void
 nsahr_DESTROY(reginfo)
 	netsnmp_handler_registration *reginfo
+    PREINIT:
+        handler_cb_data *cb_data;
     CODE:
+        if (reginfo && reginfo->handler && reginfo->handler->myvoid) {
+	    cb_data = (handler_cb_data *) (reginfo->handler->myvoid);
+	    SvREFCNT_dec(cb_data->perl_cb);
+	    free(cb_data);
+        }
 	netsnmp_handler_registration_free(reginfo);
 
 int
@@ -364,7 +393,7 @@
         PUSHMARK(SP);
         reginfo = (netsnmp_handler_registration *) SvIV(SvRV(me));
 
-        o = SNMP_MALLOC_TYPEDEF(netsnmp_oid);
+        o = malloc(sizeof(netsnmp_oid));
         o->name = o->namebuf;
         o->len = reginfo->rootoid_len;
         memcpy(o->name, reginfo->rootoid,
@@ -403,7 +432,7 @@
         PUSHMARK(SP);
         request = (netsnmp_request_info *) SvIV(SvRV(me));
 
-        o = SNMP_MALLOC_TYPEDEF(netsnmp_oid);
+        o = malloc(sizeof(netsnmp_oid));
         o->name = o->namebuf;
         o->len = request->requestvb->name_length;
         memcpy(o->name, request->requestvb->name,
@@ -433,7 +462,7 @@
         netsnmp_request_info *request;
         CODE:
         request = (netsnmp_request_info *) SvIV(SvRV(me));
-        RETVAL = SNMP_MALLOC_TYPEDEF(netsnmp_oid);
+        RETVAL = malloc(sizeof(netsnmp_oid));
         RETVAL->name = RETVAL->namebuf;
         RETVAL->len = request->requestvb->name_length;
         memcpy(RETVAL->name, request->requestvb->name,
@@ -463,19 +492,19 @@
         request = (netsnmp_request_info *) SvIV(SvRV(me));
         request->requestvb->type=newvalue;
 
-char *
+SV *
 nari_getValue(me)
         SV *me;
     PREINIT:
-        u_char buf[1024] ;
-        u_char *oidbuf = buf ;
-        size_t ob_len = 1024, oo_len = 0;
+        char *outbuf = NULL;
+        size_t ob_len = 0, oo_len = 0;
         netsnmp_request_info *request;
     CODE:
         request = (netsnmp_request_info *) SvIV(SvRV(me));
-	sprint_realloc_by_type(&oidbuf, &ob_len, &oo_len, 0,
+	sprint_realloc_by_type((u_char **) &outbuf, &ob_len, &oo_len, 1,
                                request->requestvb, 0, 0, 0);
-        RETVAL = (char *) oidbuf; /* mem leak */
+        RETVAL = newSVpv(outbuf, 0);
+	netsnmp_free(outbuf);
     OUTPUT:
         RETVAL
 
@@ -620,8 +649,8 @@
 		  break;
 	      }
 	      else {
-		snmp_log(LOG_ERR, "Non-integer value passed to setValue with ASN_INTEGER: type was %d\n",
-			SvTYPE(value));
+		snmp_log(LOG_ERR, "Non-integer value passed to setValue with ASN_INTEGER: type was %lu\n",
+			(unsigned long)SvTYPE(value));
 		RETVAL = 0;
 		break;
 	      }
@@ -656,8 +685,8 @@
 		  break;
 	      }
 	      else {
-		snmp_log(LOG_ERR, "Non-unsigned-integer value passed to setValue with ASN_UNSIGNED/ASN_COUNTER/ASN_TIMETICKS: type was %d\n",
-			SvTYPE(value));
+		snmp_log(LOG_ERR, "Non-unsigned-integer value passed to setValue with ASN_UNSIGNED/ASN_COUNTER/ASN_TIMETICKS: type was %lu\n",
+			(unsigned long)SvTYPE(value));
 		RETVAL = 0;
 		break;
 	      }
@@ -667,47 +696,40 @@
 	      if ((SvTYPE(value) == SVt_IV) || (SvTYPE(value) == SVt_PVMG)) {
 		  /* Good - got a real one (or a blessed scalar which we have to hope will turn out OK) */
 		  ulltmp = SvIV(value);
-		  c64.high = (uint32_t)(ulltmp >> 32);
-		  c64.low  = (uint32_t)ulltmp;
-                  snmp_set_var_typed_value(request->requestvb, (u_char)type,
-                                       (u_char *) &c64, sizeof(struct counter64));
 		  RETVAL = 1;
-		  break;
 	      }
 	      else if (SvPOKp(value)) {
 	          /* Might be OK - got a string, so try to convert it, allowing base 10, octal, and hex forms */
 	          stringptr = SvPV(value, stringlen);
-#if defined(WIN32)
-		  ulltmp = strtoul(  stringptr, NULL, 0 );
-#else
+	          errno = 0;
 		  ulltmp = strtoull( stringptr, NULL, 0 );
-#endif
-		  if (errno == EINVAL) {
-		  	snmp_log(LOG_ERR, "Could not convert string to number in setValue: '%s'", stringptr);
-			RETVAL = 0;
-			break;
-		  }
+		  if (errno != 0) {
+		      snmp_log(LOG_ERR, "Could not convert string to number in setValue: '%s'", stringptr);
+		      RETVAL = 0;
+		  } else
 
-		  c64.high = (uint32_t)(ulltmp >> 32);
-		  c64.low  = (uint32_t)ulltmp;
-                  snmp_set_var_typed_value(request->requestvb, (u_char)type,
-                                       (u_char *) &c64, sizeof(struct counter64));
-		  RETVAL = 1;
-		  break;
+		      RETVAL = 1;
 	      }
 	      else {
-		snmp_log(LOG_ERR, "Non-unsigned-integer value passed to setValue with ASN_COUNTER64: type was %d\n",
-			SvTYPE(value));
+		snmp_log(LOG_ERR, "Non-unsigned-integer value passed to setValue with ASN_COUNTER64: type was %lu\n",
+			(unsigned long)SvTYPE(value));
 		RETVAL = 0;
-		break;
 	      }
+	      if (RETVAL) {
+		  c64.high = (uint32_t)(ulltmp >> 32);
+		  c64.low  = (uint32_t)(ulltmp >> 0);
+		  snmp_set_var_typed_value(request->requestvb, (u_char)type,
+				     (u_char *) &c64, sizeof(struct counter64));
+	      }
+	      break;
 
           case ASN_OCTET_STR:
           case ASN_BIT_STR:
+          case ASN_OPAQUE:
 	      /* Check that we have been passed something with a string value (or a blessed scalar) */
 	      if (!SvPOKp(value) && (SvTYPE(value) != SVt_PVMG)) {
-		snmp_log(LOG_ERR, "Non-string value passed to setValue with ASN_OCTET_STR/ASN_BIT_STR: type was %d\n",
-			SvTYPE(value));
+		snmp_log(LOG_ERR, "Non-string value passed to setValue with ASN_OCTET_STR/ASN_BIT_STR: type was %lu\n",
+			(unsigned long)SvTYPE(value));
 		RETVAL = 0;
 		break;
 	      }
@@ -733,8 +755,8 @@
 
 	      /* Check that we have been passed something with a string value (or a blessed scalar) */
 	      if (!SvPOKp(value) && (SvTYPE(value) != SVt_PVMG)) {
-		snmp_log(LOG_ERR, "Non-string value passed to setValue with ASN_IPADDRESS: type was %d\n",
-			SvTYPE(value));
+		snmp_log(LOG_ERR, "Non-string value passed to setValue with ASN_IPADDRESS: type was %lu\n",
+			(unsigned long)SvTYPE(value));
 		RETVAL = 0;
 		break;
 	      }
@@ -747,7 +769,7 @@
 
 	      # Sanity check on address length
 	      if ((stringlen != 4) && (stringlen != 16)) {
-	      		snmp_log(LOG_ERR, "IP address of %d bytes passed to setValue with ASN_IPADDRESS\n", stringlen);
+	      		snmp_log(LOG_ERR, "IP address of %" NETSNMP_PRIz "d bytes passed to setValue with ASN_IPADDRESS\n", stringlen);
 			RETVAL = 0;
 			break;
 	      }
@@ -760,8 +782,8 @@
           case ASN_OBJECT_ID:
 	      /* Check that we have been passed something with a string value (or a blessed scalar) */
 	      if (!SvPOKp(value) && (SvTYPE(value) != SVt_PVMG)) {
-		snmp_log(LOG_ERR, "Non-string value passed to setValue with ASN_OBJECT_ID: type was %d\n",
-			SvTYPE(value));
+		snmp_log(LOG_ERR, "Non-string value passed to setValue with ASN_OBJECT_ID: type was %lu\n",
+			(unsigned long)SvTYPE(value));
 		RETVAL = 0;
 		break;
 	      }
@@ -851,6 +873,48 @@
 
 MODULE = NetSNMP::agent  PACKAGE = NetSNMP::agent::netsnmp_agent_request_info PREFIX = narqi_
 
+
+SV *
+narqi_getSourceIp(me)
+        SV *me;
+    PREINIT:
+        netsnmp_agent_request_info *reqinfo;
+	netsnmp_udp_addr_pair *addr_pair;
+	struct sockaddr_in *from;
+        SV *rarg;
+
+    CODE:
+        reqinfo = (netsnmp_agent_request_info *) SvIV(SvRV(me));
+
+        /* XXX: transport-specific: UDP/IPv4 only! */
+	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;
+    OUTPUT:
+        RETVAL
+
+
+SV *
+narqi_getDestIp(me)
+        SV *me;
+    PREINIT:
+        netsnmp_agent_request_info *reqinfo;
+	netsnmp_udp_addr_pair *addr_pair;
+	struct in_addr *to;
+        SV *rarg;
+
+    CODE:
+        reqinfo = (netsnmp_agent_request_info *) SvIV(SvRV(me));
+
+        /* XXX: transport-specific: UDP/IPv4 only! */
+	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;
+    OUTPUT:
+        RETVAL
+
 int
 narqi_getMode(me)
         SV *me;
diff --git a/perl/agent/default_store/Makefile.PL b/perl/agent/default_store/Makefile.PL
index 67d5ff0..ed6483a 100644
--- a/perl/agent/default_store/Makefile.PL
+++ b/perl/agent/default_store/Makefile.PL
@@ -24,9 +24,9 @@
     }
                                    
     my ($snmp_lib, $snmp_llib, $sep);
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
       $opts = NetSNMPGetOpts();	
-      $Params{'DEFINE'} = "-DMSVC_PERL";
+      $Params{'DEFINE'} = "-DMSVC_PERL -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS";
       $sep = '\\';
       $snmp_lib_file = 'netsnmp.lib';
       $snmp_link_lib = 'netsnmp';
@@ -96,7 +96,7 @@
     $rootpath = "../" if (!$rootpath);
     $rootpath .= '/' if ($rootpath !~ /\/$/);
     
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
 
       # Grab command line options first.  Only used if environment variables are not set
       GetOptions("NET-SNMP-IN-SOURCE=s" => \$ret{'insource'},
@@ -179,7 +179,7 @@
 
 
 sub Check_Version {
-  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} eq 'msys')) {
+  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} ne '')) {
     my $foundversion = 0;
     return if ($ENV{'NETSNMP_DONT_CHECK_VERSION'});
     open(I,"<Makefile");
diff --git a/perl/agent/default_store/default_store.pm b/perl/agent/default_store/default_store.pm
index a76c36b..a8812eb 100644
--- a/perl/agent/default_store/default_store.pm
+++ b/perl/agent/default_store/default_store.pm
@@ -96,7 +96,7 @@
 				   NETSNMP_DS_AGENT_MAX_GETBULKREPEATS
 				   NETSNMP_DS_AGENT_MAX_GETBULKRESPONSES
 );
-$VERSION = '5.0404';
+$VERSION = '5.0703';
 
 sub AUTOLOAD {
     # This AUTOLOAD is used to 'autoload' constants from the constant()
@@ -219,43 +219,6 @@
 				   NETSNMP_DS_AGENT_CACHE_TIMEOUT
 				   NETSNMP_DS_AGENT_INTERNAL_VERSION
 				   NETSNMP_DS_AGENT_INTERNAL_SECLEVEL
-				   NETSNMP_DS_AGENT_MAX_GETBULKREPEATS
-				   NETSNMP_DS_AGENT_MAX_GETBULKRESPONSES
-
-
-				   NETSNMP_DS_AGENT_VERBOSE
-				   NETSNMP_DS_AGENT_ROLE
-				   NETSNMP_DS_AGENT_NO_ROOT_ACCESS
-				   NETSNMP_DS_AGENT_AGENTX_MASTER
-				   NETSNMP_DS_AGENT_QUIT_IMMEDIATELY
-				   NETSNMP_DS_AGENT_DISABLE_PERL
-				   NETSNMP_DS_AGENT_NO_CONNECTION_WARNINGS
-				   NETSNMP_DS_AGENT_LEAVE_PIDFILE
-				   NETSNMP_DS_AGENT_NO_CACHING
-				   NETSNMP_DS_AGENT_STRICT_DISMAN
-				   NETSNMP_DS_AGENT_DONT_RETAIN_NOTIFICATIONS
-				   NETSNMP_DS_AGENT_DONT_LOG_TCPWRAPPERS_CONNECTS
-				   NETSNMP_DS_AGENT_SKIPNFSINHOSTRESOURCES
-				   NETSNMP_DS_AGENT_PROGNAME
-				   NETSNMP_DS_AGENT_X_SOCKET
-				   NETSNMP_DS_AGENT_PORTS
-				   NETSNMP_DS_AGENT_INTERNAL_SECNAME
-				   NETSNMP_DS_AGENT_PERL_INIT_FILE
-				   NETSNMP_DS_SMUX_SOCKET
-				   NETSNMP_DS_NOTIF_LOG_CTX
-				   NETSNMP_DS_AGENT_FLAGS
-				   NETSNMP_DS_AGENT_USERID
-				   NETSNMP_DS_AGENT_GROUPID
-				   NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL
-				   NETSNMP_DS_AGENT_AGENTX_TIMEOUT
-				   NETSNMP_DS_AGENT_AGENTX_RETRIES
-				   NETSNMP_DS_AGENT_X_SOCK_PERM
-				   NETSNMP_DS_AGENT_X_DIR_PERM
-				   NETSNMP_DS_AGENT_X_SOCK_USER
-				   NETSNMP_DS_AGENT_X_SOCK_GROUP
-				   NETSNMP_DS_AGENT_CACHE_TIMEOUT
-				   NETSNMP_DS_AGENT_INTERNAL_VERSION
-				   NETSNMP_DS_AGENT_INTERNAL_SECLEVEL
 
 
 				   NETSNMP_DS_AGENT_VERBOSE
diff --git a/perl/agent/netsnmp-feature-definitions.h b/perl/agent/netsnmp-feature-definitions.h
new file mode 100644
index 0000000..4f2630e
--- /dev/null
+++ b/perl/agent/netsnmp-feature-definitions.h
@@ -0,0 +1,6 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_require(agent_check_and_process)
+netsnmp_feature_require(snmp_enable_stderrlog)
+
diff --git a/perl/agent/test.pl b/perl/agent/test.pl
index a7ac8f9..88cba56 100644
--- a/perl/agent/test.pl
+++ b/perl/agent/test.pl
@@ -9,7 +9,7 @@
 BEGIN { $| = 1; 
         $ENV{'SNMPCONFPATH'} = 'nopath';
         $ENV{'MIBS'} = '';
-        print "1..5\n";
+        print "1..6\n";
       }
 END {print "not ok 1\n" unless $loaded;}
 use NetSNMP::agent (':all');
@@ -76,6 +76,12 @@
 print it($regitem, 4);
 #print STDERR $regitem,":",ref($regitem),"\n";
 print it(ref($regitem) eq "NetSNMP::agent::netsnmp_handler_registration", 5);
+
+my $uptime1 = $agent->uptime();
+my $uptime2 = $agent->uptime(666);
+my $uptime3 = $agent->uptime(555, 444);
+print it($uptime1 <= $uptime2 && $uptime2 <= $uptime3, 6);
+
 exit;
 
 while(1) {
diff --git a/perl/default_store/Makefile.PL b/perl/default_store/Makefile.PL
index 54996ab..7c671b8 100644
--- a/perl/default_store/Makefile.PL
+++ b/perl/default_store/Makefile.PL
@@ -23,9 +23,9 @@
     }                 
                   
     my ($snmp_lib, $snmp_llib, $sep);
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
       $opts = NetSNMPGetOpts();	
-      $Params{'DEFINE'} = "-DMSVC_PERL";
+      $Params{'DEFINE'} = "-DMSVC_PERL -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS";
       $sep = '\\';
       $snmp_lib_file = 'netsnmp.lib';
       $snmp_link_lib = 'netsnmp';
@@ -95,7 +95,7 @@
     $rootpath = "../" if (!$rootpath);
     $rootpath .= '/' if ($rootpath !~ /\/$/);
     
-    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} ne 'msys')) {
+    if (($Config{'osname'} eq 'MSWin32' && $ENV{'OSTYPE'} eq '')) {
 
       # Grab command line options first.  Only used if environment variables are not set
       GetOptions("NET-SNMP-IN-SOURCE=s" => \$ret{'insource'},
@@ -178,7 +178,7 @@
 
 
 sub Check_Version {
-  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} eq 'msys')) {
+  if (($Config{'osname'} ne 'MSWin32' || $ENV{'OSTYPE'} ne '')) {
     my $foundversion = 0;
     return if ($ENV{'NETSNMP_DONT_CHECK_VERSION'});
     open(I,"<Makefile");
diff --git a/perl/default_store/default_store.pm b/perl/default_store/default_store.pm
index 828bbdb..b898501 100644
--- a/perl/default_store/default_store.pm
+++ b/perl/default_store/default_store.pm
@@ -200,7 +200,7 @@
 				   NETSNMP_DS_LIB_KSM_SERVICE_NAME
 				   NETSNMP_DS_LIB_SBSM_LOCAL_PWD
 );
-$VERSION = '5.0404';
+$VERSION = '5.0703';
 
 sub AUTOLOAD {
     # This AUTOLOAD is used to 'autoload' constants from the constant()
diff --git a/perl/default_store/netsnmp-feature-definitions.h b/perl/default_store/netsnmp-feature-definitions.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/perl/default_store/netsnmp-feature-definitions.h
diff --git a/perl/default_store/test.pl b/perl/default_store/test.pl
index 930ca8c..b429c6b 100644
--- a/perl/default_store/test.pl
+++ b/perl/default_store/test.pl
@@ -10,7 +10,7 @@
 
 	%tests = ( 
                   "NETSNMP_DS_MAX_IDS"                     => 3,
-                  "NETSNMP_DS_MAX_SUBIDS"                  => 40,
+                  "NETSNMP_DS_MAX_SUBIDS"                  => 48,
                   "NETSNMP_DS_LIBRARY_ID"                  => 0,
                   "NETSNMP_DS_APPLICATION_ID"              => 1,
                   "NETSNMP_DS_TOKEN_ID"                    => 2,
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 3a904a6..8b8805d 100644
--- a/python/netsnmp/client_intf.c
+++ b/python/netsnmp/client_intf.c
@@ -658,6 +658,9 @@
 	newname_len = MAX_OID_LEN;
 	if (read_objid(tag, newname, &newname_len)) {	/* long name */
 	  rtp = tp = get_tree(newname, newname_len, get_tree_head());
+	} else {
+	  /* failed to parse the OID */
+	  newname_len = 0;
 	}
       }
       else {
@@ -758,8 +761,7 @@
     }
 
     vars->next_variable = NULL;
-    vars->name = (oid *)malloc(name_length * sizeof(oid));
-    memcpy((char *)vars->name, (char *)name, name_length * sizeof(oid));
+    vars->name = snmp_duplicate_objid(name, name_length);
     vars->name_length = name_length;
     switch (type) {
       case TYPE_INTEGER:
@@ -845,9 +847,8 @@
             vars->val.objid = NULL;
 	    ret = FAILURE;
         } else {
+            vars->val.objid = snmp_duplicate_objid(oidbuf, vars->val_len);
             vars->val_len *= sizeof(oid);
-            vars->val.objid = (oid *)malloc(vars->val_len);
-            memcpy((char *)vars->val.objid, (char *)oidbuf, vars->val_len);
         }
         break;
 
@@ -880,13 +881,16 @@
    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;
    }
 
 retry:
 
-   status = snmp_synch_response(ss, pdu, response);
+   Py_BEGIN_ALLOW_THREADS
+   status = snmp_sess_synch_response(ss, pdu, response);
+   Py_END_ALLOW_THREADS
 
    if ((*response == NULL) && (status == STAT_SUCCESS)) status = STAT_ERROR;
 
@@ -1104,6 +1108,8 @@
 
   __libraries_init("python");
 
+  snmp_sess_init(&session);
+
   session.version = -1;
 #ifndef DISABLE_SNMPV1
   if (version == 1) {
@@ -1132,7 +1138,7 @@
   session.timeout = timeout; /* 1000000L */
   session.authenticator = NULL;
 
-  ss = snmp_open(&session);
+  ss = snmp_sess_open(&session);
 
   if (ss == NULL) {
     if (verbose) 
@@ -1291,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("localCert",
+                                                       our_identity));
+
+  if (their_identity && their_identity[0] != '\0')
+      CONTAINER_INSERT(session.transport_configuration,
+                       netsnmp_transport_create_config("peerCert",
+                                                       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;
@@ -1302,7 +1401,7 @@
 
   ss = (SnmpSession *)py_netsnmp_attr_void_ptr(session, "sess_ptr");
 
-  snmp_close(ss);
+  snmp_sess_close(ss);
   return (Py_BuildValue(""));
 }
 
@@ -1492,10 +1591,16 @@
 	py_netsnmp_attr_set_string(varbind, "val", (char *) str_buf, len);
 
 	/* save in return tuple as well */
-	PyTuple_SetItem(val_tuple, varlist_ind, 
-			(len ? Py_BuildValue("s#", str_buf, len) :
-			 Py_BuildValue("")));
-
+	if ((type == SNMP_ENDOFMIBVIEW) ||
+			(type == SNMP_NOSUCHOBJECT) ||
+			(type == SNMP_NOSUCHINSTANCE)) {
+		/* Translate error to None */
+		PyTuple_SetItem(val_tuple, varlist_ind, 
+			Py_BuildValue(""));
+	} else {
+		PyTuple_SetItem(val_tuple, varlist_ind,
+			Py_BuildValue("s#", str_buf, len));
+	}
 	Py_DECREF(varbind);
       } else {
 	printf("netsnmp_get: bad varbind (%d)\n", varlist_ind);
@@ -1706,10 +1811,16 @@
 	py_netsnmp_attr_set_string(varbind, "val", (char *) str_buf, len);
 
 	/* save in return tuple as well */
-	PyTuple_SetItem(val_tuple, varlist_ind, 
-			(len ? Py_BuildValue("s#", str_buf, len) :
-			 Py_BuildValue("")));
-
+	if ((type == SNMP_ENDOFMIBVIEW) ||
+			(type == SNMP_NOSUCHOBJECT) ||
+			(type == SNMP_NOSUCHINSTANCE)) {
+		/* Translate error to None */
+		PyTuple_SetItem(val_tuple, varlist_ind, 
+			Py_BuildValue(""));
+	} else {
+		PyTuple_SetItem(val_tuple, varlist_ind,
+			Py_BuildValue("s#", str_buf, len));
+	}
 	Py_DECREF(varbind);
       } else {
 	printf("netsnmp_getnext: bad varbind (%d)\n", varlist_ind);
@@ -1743,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;
@@ -1771,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;
@@ -1806,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)",
@@ -1837,6 +1974,7 @@
       }
       /* release reference when done */
       Py_DECREF(varbind);
+      varlist_ind++;
     }
 
     if (varlist_iter)
@@ -1901,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, 
@@ -1908,84 +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)) {
+
+              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 ((vars->type == SNMP_ENDOFMIBVIEW) ||
+                  (vars->type == SNMP_NOSUCHOBJECT) ||
+                  (vars->type == SNMP_NOSUCHINSTANCE)) {
+                  notdone = 0;
+                  break;
+              }
+
+              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.
+
+                     XXX: this really should be an option to
+                     continue like the -Cc option to the snmpwalk
+                     application.
+                  */
+                  notdone = 0;
+                  break;
+              }
+
+              varbind = py_netsnmp_construct_varbind();
+
+              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 (__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);
+                  }
+
+                  __get_label_iid((char *) str_buf, &tag, &iid, getlabel_flag);
+
+                  if (_debug_level) printf("netsnmp_walk: filling response: %s:%s\n", tag, iid);
+
+                  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);
+
+                  /* 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);
           }
-
-          varbind = py_netsnmp_construct_varbind();
-
-          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 (__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);
-    	  }
-
-          __get_label_iid((char *) str_buf, &tag, &iid, getlabel_flag);
-
-    	  if (_debug_level) printf("netsnmp_walk: filling response: %s:%s\n", tag, iid);
-
-	  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);
-
-    	  /* 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++, 
-			  (len ? Py_BuildValue("s#", str_buf, len) :
-			   Py_BuildValue("")));
-            
-
-          } 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);
+          pdu = newpdu;
       }
       if (response)
 	snmp_free_pdu(response);
@@ -2007,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(""));
 }
 
@@ -2345,6 +2531,10 @@
 	  snmp_free_pdu(pdu);
 	  goto done;
 	}
+	memset(tmp_val_str, 0, sizeof(tmp_val_str));
+        if ( tmplen >= sizeof(tmp_val_str)) {
+            tmplen = sizeof(tmp_val_str)-1;
+        }
 	memcpy(tmp_val_str, val, tmplen);
 	if (type==TYPE_INTEGER && use_enums && tp && tp->enums) {
 	  for(ep = tp->enums; ep; ep = ep->next) {
@@ -2400,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/netsnmp-feature-definitions.h b/python/netsnmp/netsnmp-feature-definitions.h
new file mode 100644
index 0000000..389416a
--- /dev/null
+++ b/python/netsnmp/netsnmp-feature-definitions.h
@@ -0,0 +1,6 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_require(snprint_value)
+netsnmp_feature_require(enable_stderrlog)
+
diff --git a/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/sedscript.in b/sedscript.in
index aedf7b8..7814ce9 100644
--- a/sedscript.in
+++ b/sedscript.in
@@ -106,4 +106,4 @@
 
 s#PREMOVEMESCMD#PSCMD#g
 s#AREMOVEMEGENTX_SOCKET#AGENTX_SOCKET#g
-s/VERSIONINFO/5.4.3.pre1/g
+s#NREMOVEMEETSNMP_TEMP_FILE_PATTERN#NETSNMP_TEMP_FILE_PATTERN#g
diff --git a/snmplib/Makefile.depend b/snmplib/Makefile.depend
index cac6510..62b5111 100644
--- a/snmplib/Makefile.depend
+++ b/snmplib/Makefile.depend
@@ -5,15 +5,34 @@
 ./asn1.lo: ../include/net-snmp/system/sysv.h
 ./asn1.lo: ../include/net-snmp/system/generic.h
 ./asn1.lo: ../include/net-snmp/machine/generic.h
-./asn1.lo: ../include/net-snmp/output_api.h
-./asn1.lo: ../include/net-snmp/types.h
+./asn1.lo: ../include/net-snmp/output_api.h ../include/net-snmp/types.h
+./asn1.lo: ../include/net-snmp/library/oid.h
+./asn1.lo: ../include/net-snmp/library/types.h
 ./asn1.lo: ../include/net-snmp/definitions.h
 ./asn1.lo: ../include/net-snmp/library/snmp_api.h
-./asn1.lo: ../include/net-snmp/library/asn1.h
+./asn1.lo: ../include/net-snmp/varbind_api.h
+./asn1.lo: ../include/net-snmp/library/snmp_client.h
+./asn1.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/library/asn1.h
+./asn1.lo: ../include/net-snmp/session_api.h
+./asn1.lo: ../include/net-snmp/library/callback.h
+./asn1.lo: ../include/net-snmp/library/snmp_transport.h
+./asn1.lo: ../include/net-snmp/library/snmp_service.h
+./asn1.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./asn1.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./asn1.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./asn1.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./asn1.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./asn1.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./asn1.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./asn1.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./asn1.lo: ../include/net-snmp/library/ucd_compat.h
+./asn1.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./asn1.lo: ../include/net-snmp/library/parse.h
+./asn1.lo: ../include/net-snmp/library/oid_stash.h
+./asn1.lo: ../include/net-snmp/net-snmp-features.h
 ./asn1.lo: ../include/net-snmp/library/snmp_impl.h
 ./asn1.lo: ../include/net-snmp/library/snmp.h
 ./asn1.lo: ../include/net-snmp/library/snmp-tc.h
-./asn1.lo: ../include/net-snmp/library/snmp_client.h
 ./asn1.lo: ../include/net-snmp/library/snmp_debug.h
 ./asn1.lo: ../include/net-snmp/library/snmp_logging.h
 ./asn1.lo: ../include/net-snmp/utilities.h
@@ -22,9 +41,7 @@
 ./asn1.lo: ../include/net-snmp/library/int64.h
 ./asn1.lo: ../include/net-snmp/library/mt_support.h
 ./asn1.lo: ../include/net-snmp/library/snmp_alarm.h
-./asn1.lo: ../include/net-snmp/library/callback.h
 ./asn1.lo: ../include/net-snmp/library/data_list.h
-./asn1.lo: ../include/net-snmp/library/oid_stash.h
 ./asn1.lo: ../include/net-snmp/library/check_varbind.h
 ./asn1.lo: ../include/net-snmp/library/container.h
 ./asn1.lo: ../include/net-snmp/library/factory.h
@@ -33,32 +50,52 @@
 ./asn1.lo: ../include/net-snmp/library/container_iterator.h
 ./asn1.lo: ../include/net-snmp/library/container.h
 ./asn1.lo: ../include/net-snmp/library/snmp_assert.h
-./asn1.lo: ../include/net-snmp/version.h ../include/net-snmp/library/mib.h
+./asn1.lo: ../include/net-snmp/version.h
 ./callback.lo: ../include/net-snmp/net-snmp-config.h
 ./callback.lo: ../include/net-snmp/system/linux.h
 ./callback.lo: ../include/net-snmp/system/sysv.h
 ./callback.lo: ../include/net-snmp/system/generic.h
 ./callback.lo: ../include/net-snmp/machine/generic.h
+./callback.lo: ../include/net-snmp/net-snmp-features.h
 ./callback.lo: ../include/net-snmp/types.h
+./callback.lo: ../include/net-snmp/library/oid.h
+./callback.lo: ../include/net-snmp/library/types.h
 ./callback.lo: ../include/net-snmp/definitions.h
 ./callback.lo: ../include/net-snmp/library/snmp_api.h
+./callback.lo: ../include/net-snmp/varbind_api.h
+./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
+./callback.lo: ../include/net-snmp/library/snmp_service.h
+./callback.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./callback.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./callback.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./callback.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./callback.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./callback.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./callback.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./callback.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./callback.lo: ../include/net-snmp/library/ucd_compat.h
+./callback.lo: ../include/net-snmp/library/mib.h
+./callback.lo: ../include/net-snmp/mib_api.h
+./callback.lo: ../include/net-snmp/library/parse.h
+./callback.lo: ../include/net-snmp/library/oid_stash.h
 ./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_client.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
 ./callback.lo: ../include/net-snmp/library/int64.h
 ./callback.lo: ../include/net-snmp/library/mt_support.h
 ./callback.lo: ../include/net-snmp/library/snmp_alarm.h
-./callback.lo: ../include/net-snmp/library/callback.h
 ./callback.lo: ../include/net-snmp/library/data_list.h
-./callback.lo: ../include/net-snmp/library/oid_stash.h
 ./callback.lo: ../include/net-snmp/library/check_varbind.h
 ./callback.lo: ../include/net-snmp/library/container.h
 ./callback.lo: ../include/net-snmp/library/factory.h
@@ -68,63 +105,119 @@
 ./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
+./cert_util.lo: ../include/net-snmp/net-snmp-features.h
+./cert_util.lo: ../include/net-snmp/types.h
+./cert_util.lo: ../include/net-snmp/library/oid.h
+./cert_util.lo: ../include/net-snmp/library/types.h
+./cert_util.lo: ../include/net-snmp/definitions.h
+./cert_util.lo: ../include/net-snmp/library/snmp_api.h
+./cert_util.lo: ../include/net-snmp/varbind_api.h
+./cert_util.lo: ../include/net-snmp/library/snmp_client.h
+./cert_util.lo: ../include/net-snmp/pdu_api.h
+./cert_util.lo: ../include/net-snmp/library/asn1.h
+./cert_util.lo: ../include/net-snmp/output_api.h
+./cert_util.lo: ../include/net-snmp/library/snmp_debug.h
+./cert_util.lo: ../include/net-snmp/library/snmp_logging.h
+./cert_util.lo: ../include/net-snmp/session_api.h
+./cert_util.lo: ../include/net-snmp/library/callback.h
+./cert_util.lo: ../include/net-snmp/library/snmp_transport.h
+./cert_util.lo: ../include/net-snmp/library/snmp_service.h
+./cert_util.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./cert_util.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./cert_util.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./cert_util.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./cert_util.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./cert_util.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./cert_util.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./cert_util.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./cert_util.lo: ../include/net-snmp/library/ucd_compat.h
+./cert_util.lo: ../include/net-snmp/library/mib.h
+./cert_util.lo: ../include/net-snmp/mib_api.h
+./cert_util.lo: ../include/net-snmp/library/parse.h
+./cert_util.lo: ../include/net-snmp/library/oid_stash.h
+./cert_util.lo: ../include/net-snmp/library/snmp_impl.h
+./cert_util.lo: ../include/net-snmp/library/snmp.h
+./cert_util.lo: ../include/net-snmp/library/snmp-tc.h
+./cert_util.lo: ../include/net-snmp/config_api.h
+./cert_util.lo: ../include/net-snmp/library/read_config.h
+./cert_util.lo: ../include/net-snmp/library/default_store.h
+./cert_util.lo: ../include/net-snmp/net-snmp-config.h
+./cert_util.lo: ../include/net-snmp/library/snmp_parse_args.h
+./cert_util.lo: ../include/net-snmp/library/snmp_enum.h
+./cert_util.lo: ../include/net-snmp/library/vacm.h
+./cert_util.lo: ../include/net-snmp/library/snmp_assert.h
+./cert_util.lo: ../include/net-snmp/library/system.h
+./cert_util.lo: ../include/net-snmp/library/tools.h
+./cert_util.lo: ../include/net-snmp/library/container.h
+./cert_util.lo: ../include/net-snmp/library/factory.h
+./cert_util.lo: ../include/net-snmp/library/data_list.h
+./cert_util.lo: ../include/net-snmp/library/file_utils.h
+./cert_util.lo: ../include/net-snmp/library/dir_utils.h
+./cert_util.lo: ../include/net-snmp/library/cert_util.h
+./cert_util.lo: ../include/net-snmp/library/snmp_openssl.h
 ./check_varbind.lo: ../include/net-snmp/net-snmp-config.h
-./check_varbind.lo: ../include/net-snmp/system/linux.h
-./check_varbind.lo: ../include/net-snmp/system/sysv.h
-./check_varbind.lo: ../include/net-snmp/system/generic.h
-./check_varbind.lo: ../include/net-snmp/machine/generic.h
 ./check_varbind.lo: ../include/net-snmp/net-snmp-includes.h
 ./check_varbind.lo: ../include/net-snmp/definitions.h
 ./check_varbind.lo: ../include/net-snmp/types.h
+./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
+./check_varbind.lo: ../include/net-snmp/library/snmp_service.h
+./check_varbind.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./check_varbind.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./check_varbind.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./check_varbind.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./check_varbind.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./check_varbind.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./check_varbind.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./check_varbind.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./check_varbind.lo: ../include/net-snmp/library/ucd_compat.h
+./check_varbind.lo: ../include/net-snmp/library/mib.h
+./check_varbind.lo: ../include/net-snmp/mib_api.h
+./check_varbind.lo: ../include/net-snmp/library/parse.h
+./check_varbind.lo: ../include/net-snmp/library/oid_stash.h
+./check_varbind.lo: ../include/net-snmp/net-snmp-features.h
 ./check_varbind.lo: ../include/net-snmp/library/snmp_impl.h
 ./check_varbind.lo: ../include/net-snmp/library/snmp.h
 ./check_varbind.lo: ../include/net-snmp/library/snmp-tc.h
+./check_varbind.lo: ../include/net-snmp/library/getopt.h
 ./check_varbind.lo: ../include/net-snmp/utilities.h
-./check_varbind.lo: ../include/net-snmp/library/snmp_client.h
 ./check_varbind.lo: ../include/net-snmp/library/system.h
 ./check_varbind.lo: ../include/net-snmp/library/tools.h
 ./check_varbind.lo: ../include/net-snmp/library/int64.h
 ./check_varbind.lo: ../include/net-snmp/library/mt_support.h
 ./check_varbind.lo: ../include/net-snmp/library/snmp_alarm.h
-./check_varbind.lo: ../include/net-snmp/library/callback.h
 ./check_varbind.lo: ../include/net-snmp/library/data_list.h
-./check_varbind.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./check_varbind.lo: ../include/net-snmp/library/container.h
 ./check_varbind.lo: ../include/net-snmp/library/snmp_assert.h
 ./check_varbind.lo: ../include/net-snmp/version.h
-./check_varbind.lo: ../include/net-snmp/session_api.h
-./check_varbind.lo: ../include/net-snmp/library/snmp_transport.h
-./check_varbind.lo: ../include/net-snmp/library/snmp_service.h
-./check_varbind.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./check_varbind.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./check_varbind.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./check_varbind.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./check_varbind.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./check_varbind.lo: ../include/net-snmp/pdu_api.h
-./check_varbind.lo: ../include/net-snmp/mib_api.h
-./check_varbind.lo: ../include/net-snmp/library/mib.h
-./check_varbind.lo: ../include/net-snmp/library/parse.h
-./check_varbind.lo: ../include/net-snmp/varbind_api.h
 ./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/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
@@ -133,134 +226,101 @@
 ./check_varbind.lo: ../include/net-snmp/library/lcd_time.h
 ./check_varbind.lo: ../include/net-snmp/library/snmp_secmod.h
 ./check_varbind.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./check_varbind.lo: ../include/net-snmp/library/snmptsm.h
 ./check_varbind.lo: ../include/net-snmp/library/snmpusm.h
-./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.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/snmp_api.h
-./container.lo: ../include/net-snmp/library/asn1.h
-./container.lo: ../include/net-snmp/library/snmp_impl.h
-./container.lo: ../include/net-snmp/library/snmp.h
-./container.lo: ../include/net-snmp/library/snmp-tc.h
-./container.lo: ../include/net-snmp/utilities.h
-./container.lo: ../include/net-snmp/library/snmp_client.h
-./container.lo: ../include/net-snmp/library/system.h
-./container.lo: ../include/net-snmp/library/tools.h
-./container.lo: ../include/net-snmp/library/int64.h
-./container.lo: ../include/net-snmp/library/mt_support.h
-./container.lo: ../include/net-snmp/library/snmp_alarm.h
-./container.lo: ../include/net-snmp/library/callback.h
-./container.lo: ../include/net-snmp/library/data_list.h
-./container.lo: ../include/net-snmp/library/oid_stash.h
-./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
-./container.lo: ../include/net-snmp/library/container.h
-./container.lo: ../include/net-snmp/library/snmp_assert.h
-./container.lo: ../include/net-snmp/version.h
-./container.lo: ../include/net-snmp/session_api.h
-./container.lo: ../include/net-snmp/library/snmp_transport.h
-./container.lo: ../include/net-snmp/library/snmp_service.h
-./container.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./container.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./container.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./container.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./container.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./container.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./container.lo: ../include/net-snmp/library/mib.h
-./container.lo: ../include/net-snmp/library/parse.h
-./container.lo: ../include/net-snmp/varbind_api.h
-./container.lo: ../include/net-snmp/config_api.h
-./container.lo: ../include/net-snmp/library/read_config.h
-./container.lo: ../include/net-snmp/library/default_store.h
-./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
-./container.lo: ../include/net-snmp/library/keytools.h
-./container.lo: ../include/net-snmp/library/scapi.h
-./container.lo: ../include/net-snmp/library/lcd_time.h
-./container.lo: ../include/net-snmp/library/snmp_secmod.h
-./container.lo: ../include/net-snmp/library/snmpv3-security-includes.h
-./container.lo: ../include/net-snmp/library/snmpusm.h
-./container.lo: ../include/net-snmp/library/container_null.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/snmpTCPDomain.h
+./closedir.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./closedir.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./closedir.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./closedir.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./closedir.lo: ../include/net-snmp/library/snmp_impl.h
+./closedir.lo: ../include/net-snmp/library/snmp.h
+./closedir.lo: ../include/net-snmp/library/snmp-tc.h
+./closedir.lo: ../include/net-snmp/library/system.h
 ./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
+./container_binary_array.lo: ../include/net-snmp/library/snmp_service.h
+./container_binary_array.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./container_binary_array.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./container_binary_array.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./container_binary_array.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./container_binary_array.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./container_binary_array.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./container_binary_array.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./container_binary_array.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./container_binary_array.lo: ../include/net-snmp/library/ucd_compat.h
+./container_binary_array.lo: ../include/net-snmp/library/mib.h
+./container_binary_array.lo: ../include/net-snmp/mib_api.h
+./container_binary_array.lo: ../include/net-snmp/library/parse.h
+./container_binary_array.lo: ../include/net-snmp/library/oid_stash.h
+./container_binary_array.lo: ../include/net-snmp/net-snmp-features.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmp_impl.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmp.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmp-tc.h
+./container_binary_array.lo: ../include/net-snmp/library/getopt.h
 ./container_binary_array.lo: ../include/net-snmp/utilities.h
-./container_binary_array.lo: ../include/net-snmp/library/snmp_client.h
 ./container_binary_array.lo: ../include/net-snmp/library/system.h
 ./container_binary_array.lo: ../include/net-snmp/library/tools.h
 ./container_binary_array.lo: ../include/net-snmp/library/int64.h
 ./container_binary_array.lo: ../include/net-snmp/library/mt_support.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmp_alarm.h
-./container_binary_array.lo: ../include/net-snmp/library/callback.h
 ./container_binary_array.lo: ../include/net-snmp/library/data_list.h
-./container_binary_array.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./container_binary_array.lo: ../include/net-snmp/library/container.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmp_assert.h
 ./container_binary_array.lo: ../include/net-snmp/version.h
-./container_binary_array.lo: ../include/net-snmp/session_api.h
-./container_binary_array.lo: ../include/net-snmp/library/snmp_transport.h
-./container_binary_array.lo: ../include/net-snmp/library/snmp_service.h
-./container_binary_array.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./container_binary_array.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./container_binary_array.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./container_binary_array.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./container_binary_array.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./container_binary_array.lo: ../include/net-snmp/pdu_api.h
-./container_binary_array.lo: ../include/net-snmp/mib_api.h
-./container_binary_array.lo: ../include/net-snmp/library/mib.h
-./container_binary_array.lo: ../include/net-snmp/library/parse.h
-./container_binary_array.lo: ../include/net-snmp/varbind_api.h
 ./container_binary_array.lo: ../include/net-snmp/config_api.h
 ./container_binary_array.lo: ../include/net-snmp/library/read_config.h
 ./container_binary_array.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -269,64 +329,134 @@
 ./container_binary_array.lo: ../include/net-snmp/library/lcd_time.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmp_secmod.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./container_binary_array.lo: ../include/net-snmp/library/snmptsm.h
 ./container_binary_array.lo: ../include/net-snmp/library/snmpusm.h
+./container.lo: ../include/net-snmp/net-snmp-config.h
+./container.lo: ../include/net-snmp/net-snmp-features.h
+./container.lo: ../include/net-snmp/net-snmp-includes.h
+./container.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./container.lo: ../include/net-snmp/library/oid.h
+./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
+./container.lo: ../include/net-snmp/library/snmp_service.h
+./container.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./container.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./container.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./container.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./container.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./container.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./container.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./container.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./container.lo: ../include/net-snmp/library/ucd_compat.h
+./container.lo: ../include/net-snmp/library/mib.h
+./container.lo: ../include/net-snmp/mib_api.h
+./container.lo: ../include/net-snmp/library/parse.h
+./container.lo: ../include/net-snmp/library/oid_stash.h
+./container.lo: ../include/net-snmp/library/snmp_impl.h
+./container.lo: ../include/net-snmp/library/snmp.h
+./container.lo: ../include/net-snmp/library/snmp-tc.h
+./container.lo: ../include/net-snmp/library/getopt.h
+./container.lo: ../include/net-snmp/utilities.h
+./container.lo: ../include/net-snmp/library/system.h
+./container.lo: ../include/net-snmp/library/tools.h
+./container.lo: ../include/net-snmp/library/int64.h
+./container.lo: ../include/net-snmp/library/mt_support.h
+./container.lo: ../include/net-snmp/library/snmp_alarm.h
+./container.lo: ../include/net-snmp/library/data_list.h
+./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/container_binary_array.h
+./container.lo: ../include/net-snmp/library/container_list_ssll.h
+./container.lo: ../include/net-snmp/library/container_iterator.h
+./container.lo: ../include/net-snmp/library/container.h
+./container.lo: ../include/net-snmp/library/snmp_assert.h
+./container.lo: ../include/net-snmp/version.h
+./container.lo: ../include/net-snmp/config_api.h
+./container.lo: ../include/net-snmp/library/read_config.h
+./container.lo: ../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./container.lo: ../include/net-snmp/library/snmpv3.h
+./container.lo: ../include/net-snmp/library/transform_oids.h
+./container.lo: ../include/net-snmp/library/keytools.h
+./container.lo: ../include/net-snmp/library/scapi.h
+./container.lo: ../include/net-snmp/library/lcd_time.h
+./container.lo: ../include/net-snmp/library/snmp_secmod.h
+./container.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./container.lo: ../include/net-snmp/library/snmptsm.h
+./container.lo: ../include/net-snmp/library/snmpusm.h
+./container.lo: ../include/net-snmp/library/container_null.h
 ./container_iterator.lo: ../include/net-snmp/net-snmp-config.h
-./container_iterator.lo: ../include/net-snmp/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-features.h
 ./container_iterator.lo: ../include/net-snmp/net-snmp-includes.h
 ./container_iterator.lo: ../include/net-snmp/definitions.h
 ./container_iterator.lo: ../include/net-snmp/types.h
+./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
+./container_iterator.lo: ../include/net-snmp/library/snmp_service.h
+./container_iterator.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./container_iterator.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./container_iterator.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./container_iterator.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./container_iterator.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./container_iterator.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./container_iterator.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./container_iterator.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./container_iterator.lo: ../include/net-snmp/library/ucd_compat.h
+./container_iterator.lo: ../include/net-snmp/library/mib.h
+./container_iterator.lo: ../include/net-snmp/mib_api.h
+./container_iterator.lo: ../include/net-snmp/library/parse.h
+./container_iterator.lo: ../include/net-snmp/library/oid_stash.h
 ./container_iterator.lo: ../include/net-snmp/library/snmp_impl.h
 ./container_iterator.lo: ../include/net-snmp/library/snmp.h
 ./container_iterator.lo: ../include/net-snmp/library/snmp-tc.h
+./container_iterator.lo: ../include/net-snmp/library/getopt.h
 ./container_iterator.lo: ../include/net-snmp/utilities.h
-./container_iterator.lo: ../include/net-snmp/library/snmp_client.h
 ./container_iterator.lo: ../include/net-snmp/library/system.h
 ./container_iterator.lo: ../include/net-snmp/library/tools.h
 ./container_iterator.lo: ../include/net-snmp/library/int64.h
 ./container_iterator.lo: ../include/net-snmp/library/mt_support.h
 ./container_iterator.lo: ../include/net-snmp/library/snmp_alarm.h
-./container_iterator.lo: ../include/net-snmp/library/callback.h
 ./container_iterator.lo: ../include/net-snmp/library/data_list.h
-./container_iterator.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./container_iterator.lo: ../include/net-snmp/library/container.h
 ./container_iterator.lo: ../include/net-snmp/library/snmp_assert.h
 ./container_iterator.lo: ../include/net-snmp/version.h
-./container_iterator.lo: ../include/net-snmp/session_api.h
-./container_iterator.lo: ../include/net-snmp/library/snmp_transport.h
-./container_iterator.lo: ../include/net-snmp/library/snmp_service.h
-./container_iterator.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./container_iterator.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./container_iterator.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./container_iterator.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./container_iterator.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./container_iterator.lo: ../include/net-snmp/pdu_api.h
-./container_iterator.lo: ../include/net-snmp/mib_api.h
-./container_iterator.lo: ../include/net-snmp/library/mib.h
-./container_iterator.lo: ../include/net-snmp/library/parse.h
-./container_iterator.lo: ../include/net-snmp/varbind_api.h
 ./container_iterator.lo: ../include/net-snmp/config_api.h
 ./container_iterator.lo: ../include/net-snmp/library/read_config.h
 ./container_iterator.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -335,64 +465,66 @@
 ./container_iterator.lo: ../include/net-snmp/library/lcd_time.h
 ./container_iterator.lo: ../include/net-snmp/library/snmp_secmod.h
 ./container_iterator.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./container_iterator.lo: ../include/net-snmp/library/snmptsm.h
 ./container_iterator.lo: ../include/net-snmp/library/snmpusm.h
 ./container_list_ssll.lo: ../include/net-snmp/net-snmp-config.h
-./container_list_ssll.lo: ../include/net-snmp/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-features.h
 ./container_list_ssll.lo: ../include/net-snmp/net-snmp-includes.h
 ./container_list_ssll.lo: ../include/net-snmp/definitions.h
 ./container_list_ssll.lo: ../include/net-snmp/types.h
+./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
+./container_list_ssll.lo: ../include/net-snmp/library/snmp_service.h
+./container_list_ssll.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./container_list_ssll.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./container_list_ssll.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./container_list_ssll.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./container_list_ssll.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./container_list_ssll.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./container_list_ssll.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./container_list_ssll.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./container_list_ssll.lo: ../include/net-snmp/library/ucd_compat.h
+./container_list_ssll.lo: ../include/net-snmp/library/mib.h
+./container_list_ssll.lo: ../include/net-snmp/mib_api.h
+./container_list_ssll.lo: ../include/net-snmp/library/parse.h
+./container_list_ssll.lo: ../include/net-snmp/library/oid_stash.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmp_impl.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmp.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmp-tc.h
+./container_list_ssll.lo: ../include/net-snmp/library/getopt.h
 ./container_list_ssll.lo: ../include/net-snmp/utilities.h
-./container_list_ssll.lo: ../include/net-snmp/library/snmp_client.h
 ./container_list_ssll.lo: ../include/net-snmp/library/system.h
 ./container_list_ssll.lo: ../include/net-snmp/library/tools.h
 ./container_list_ssll.lo: ../include/net-snmp/library/int64.h
 ./container_list_ssll.lo: ../include/net-snmp/library/mt_support.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmp_alarm.h
-./container_list_ssll.lo: ../include/net-snmp/library/callback.h
 ./container_list_ssll.lo: ../include/net-snmp/library/data_list.h
-./container_list_ssll.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./container_list_ssll.lo: ../include/net-snmp/library/container.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmp_assert.h
 ./container_list_ssll.lo: ../include/net-snmp/version.h
-./container_list_ssll.lo: ../include/net-snmp/session_api.h
-./container_list_ssll.lo: ../include/net-snmp/library/snmp_transport.h
-./container_list_ssll.lo: ../include/net-snmp/library/snmp_service.h
-./container_list_ssll.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./container_list_ssll.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./container_list_ssll.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./container_list_ssll.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./container_list_ssll.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./container_list_ssll.lo: ../include/net-snmp/pdu_api.h
-./container_list_ssll.lo: ../include/net-snmp/mib_api.h
-./container_list_ssll.lo: ../include/net-snmp/library/mib.h
-./container_list_ssll.lo: ../include/net-snmp/library/parse.h
-./container_list_ssll.lo: ../include/net-snmp/varbind_api.h
 ./container_list_ssll.lo: ../include/net-snmp/config_api.h
 ./container_list_ssll.lo: ../include/net-snmp/library/read_config.h
 ./container_list_ssll.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -401,64 +533,66 @@
 ./container_list_ssll.lo: ../include/net-snmp/library/lcd_time.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmp_secmod.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./container_list_ssll.lo: ../include/net-snmp/library/snmptsm.h
 ./container_list_ssll.lo: ../include/net-snmp/library/snmpusm.h
 ./container_null.lo: ../include/net-snmp/net-snmp-config.h
-./container_null.lo: ../include/net-snmp/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-features.h
 ./container_null.lo: ../include/net-snmp/net-snmp-includes.h
 ./container_null.lo: ../include/net-snmp/definitions.h
 ./container_null.lo: ../include/net-snmp/types.h
+./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
+./container_null.lo: ../include/net-snmp/library/snmp_service.h
+./container_null.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./container_null.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./container_null.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./container_null.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./container_null.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./container_null.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./container_null.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./container_null.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./container_null.lo: ../include/net-snmp/library/ucd_compat.h
+./container_null.lo: ../include/net-snmp/library/mib.h
+./container_null.lo: ../include/net-snmp/mib_api.h
+./container_null.lo: ../include/net-snmp/library/parse.h
+./container_null.lo: ../include/net-snmp/library/oid_stash.h
 ./container_null.lo: ../include/net-snmp/library/snmp_impl.h
 ./container_null.lo: ../include/net-snmp/library/snmp.h
 ./container_null.lo: ../include/net-snmp/library/snmp-tc.h
+./container_null.lo: ../include/net-snmp/library/getopt.h
 ./container_null.lo: ../include/net-snmp/utilities.h
-./container_null.lo: ../include/net-snmp/library/snmp_client.h
 ./container_null.lo: ../include/net-snmp/library/system.h
 ./container_null.lo: ../include/net-snmp/library/tools.h
 ./container_null.lo: ../include/net-snmp/library/int64.h
 ./container_null.lo: ../include/net-snmp/library/mt_support.h
 ./container_null.lo: ../include/net-snmp/library/snmp_alarm.h
-./container_null.lo: ../include/net-snmp/library/callback.h
 ./container_null.lo: ../include/net-snmp/library/data_list.h
-./container_null.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./container_null.lo: ../include/net-snmp/library/container.h
 ./container_null.lo: ../include/net-snmp/library/snmp_assert.h
 ./container_null.lo: ../include/net-snmp/version.h
-./container_null.lo: ../include/net-snmp/session_api.h
-./container_null.lo: ../include/net-snmp/library/snmp_transport.h
-./container_null.lo: ../include/net-snmp/library/snmp_service.h
-./container_null.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./container_null.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./container_null.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./container_null.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./container_null.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./container_null.lo: ../include/net-snmp/pdu_api.h
-./container_null.lo: ../include/net-snmp/mib_api.h
-./container_null.lo: ../include/net-snmp/library/mib.h
-./container_null.lo: ../include/net-snmp/library/parse.h
-./container_null.lo: ../include/net-snmp/varbind_api.h
 ./container_null.lo: ../include/net-snmp/config_api.h
 ./container_null.lo: ../include/net-snmp/library/read_config.h
 ./container_null.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -467,63 +601,66 @@
 ./container_null.lo: ../include/net-snmp/library/lcd_time.h
 ./container_null.lo: ../include/net-snmp/library/snmp_secmod.h
 ./container_null.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./container_null.lo: ../include/net-snmp/library/snmptsm.h
 ./container_null.lo: ../include/net-snmp/library/snmpusm.h
 ./container_null.lo: ../include/net-snmp/library/container_null.h
 ./data_list.lo: ../include/net-snmp/net-snmp-config.h
-./data_list.lo: ../include/net-snmp/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-features.h
 ./data_list.lo: ../include/net-snmp/net-snmp-includes.h
 ./data_list.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./data_list.lo: ../include/net-snmp/library/oid.h
+./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
+./data_list.lo: ../include/net-snmp/library/snmp_service.h
+./data_list.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./data_list.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./data_list.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./data_list.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./data_list.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./data_list.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./data_list.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./data_list.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./data_list.lo: ../include/net-snmp/library/ucd_compat.h
+./data_list.lo: ../include/net-snmp/library/mib.h
+./data_list.lo: ../include/net-snmp/mib_api.h
+./data_list.lo: ../include/net-snmp/library/parse.h
+./data_list.lo: ../include/net-snmp/library/oid_stash.h
 ./data_list.lo: ../include/net-snmp/library/snmp_impl.h
 ./data_list.lo: ../include/net-snmp/library/snmp.h
 ./data_list.lo: ../include/net-snmp/library/snmp-tc.h
+./data_list.lo: ../include/net-snmp/library/getopt.h
 ./data_list.lo: ../include/net-snmp/utilities.h
-./data_list.lo: ../include/net-snmp/library/snmp_client.h
 ./data_list.lo: ../include/net-snmp/library/system.h
 ./data_list.lo: ../include/net-snmp/library/tools.h
 ./data_list.lo: ../include/net-snmp/library/int64.h
 ./data_list.lo: ../include/net-snmp/library/mt_support.h
 ./data_list.lo: ../include/net-snmp/library/snmp_alarm.h
-./data_list.lo: ../include/net-snmp/library/callback.h
 ./data_list.lo: ../include/net-snmp/library/data_list.h
-./data_list.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./data_list.lo: ../include/net-snmp/library/container.h
 ./data_list.lo: ../include/net-snmp/library/snmp_assert.h
 ./data_list.lo: ../include/net-snmp/version.h
-./data_list.lo: ../include/net-snmp/session_api.h
-./data_list.lo: ../include/net-snmp/library/snmp_transport.h
-./data_list.lo: ../include/net-snmp/library/snmp_service.h
-./data_list.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./data_list.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./data_list.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./data_list.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./data_list.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./data_list.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./data_list.lo: ../include/net-snmp/library/mib.h
-./data_list.lo: ../include/net-snmp/library/parse.h
-./data_list.lo: ../include/net-snmp/varbind_api.h
 ./data_list.lo: ../include/net-snmp/config_api.h
 ./data_list.lo: ../include/net-snmp/library/read_config.h
 ./data_list.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -532,23 +669,42 @@
 ./data_list.lo: ../include/net-snmp/library/lcd_time.h
 ./data_list.lo: ../include/net-snmp/library/snmp_secmod.h
 ./data_list.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./data_list.lo: ../include/net-snmp/library/snmptsm.h
 ./data_list.lo: ../include/net-snmp/library/snmpusm.h
 ./default_store.lo: ../include/net-snmp/net-snmp-config.h
-./default_store.lo: ../include/net-snmp/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/net-snmp-features.h
 ./default_store.lo: ../include/net-snmp/types.h
+./default_store.lo: ../include/net-snmp/library/oid.h
+./default_store.lo: ../include/net-snmp/library/types.h
 ./default_store.lo: ../include/net-snmp/definitions.h
 ./default_store.lo: ../include/net-snmp/library/snmp_api.h
+./default_store.lo: ../include/net-snmp/varbind_api.h
+./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
+./default_store.lo: ../include/net-snmp/library/snmp_service.h
+./default_store.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./default_store.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./default_store.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./default_store.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./default_store.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./default_store.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./default_store.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./default_store.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./default_store.lo: ../include/net-snmp/library/ucd_compat.h
+./default_store.lo: ../include/net-snmp/library/mib.h
+./default_store.lo: ../include/net-snmp/mib_api.h
+./default_store.lo: ../include/net-snmp/library/parse.h
+./default_store.lo: ../include/net-snmp/library/oid_stash.h
 ./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_client.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
@@ -561,9 +717,7 @@
 ./default_store.lo: ../include/net-snmp/library/int64.h
 ./default_store.lo: ../include/net-snmp/library/mt_support.h
 ./default_store.lo: ../include/net-snmp/library/snmp_alarm.h
-./default_store.lo: ../include/net-snmp/library/callback.h
 ./default_store.lo: ../include/net-snmp/library/data_list.h
-./default_store.lo: ../include/net-snmp/library/oid_stash.h
 ./default_store.lo: ../include/net-snmp/library/check_varbind.h
 ./default_store.lo: ../include/net-snmp/library/container.h
 ./default_store.lo: ../include/net-snmp/library/factory.h
@@ -573,63 +727,133 @@
 ./default_store.lo: ../include/net-snmp/library/container.h
 ./default_store.lo: ../include/net-snmp/library/snmp_assert.h
 ./default_store.lo: ../include/net-snmp/version.h
+./dir_utils.lo: ../include/net-snmp/net-snmp-config.h
+./dir_utils.lo: ../include/net-snmp/net-snmp-features.h
+./dir_utils.lo: ../include/net-snmp/net-snmp-includes.h
+./dir_utils.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./dir_utils.lo: ../include/net-snmp/library/oid.h
+./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
+./dir_utils.lo: ../include/net-snmp/library/snmp_service.h
+./dir_utils.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./dir_utils.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./dir_utils.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./dir_utils.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./dir_utils.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./dir_utils.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./dir_utils.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./dir_utils.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./dir_utils.lo: ../include/net-snmp/library/ucd_compat.h
+./dir_utils.lo: ../include/net-snmp/library/mib.h
+./dir_utils.lo: ../include/net-snmp/mib_api.h
+./dir_utils.lo: ../include/net-snmp/library/parse.h
+./dir_utils.lo: ../include/net-snmp/library/oid_stash.h
+./dir_utils.lo: ../include/net-snmp/library/snmp_impl.h
+./dir_utils.lo: ../include/net-snmp/library/snmp.h
+./dir_utils.lo: ../include/net-snmp/library/snmp-tc.h
+./dir_utils.lo: ../include/net-snmp/library/getopt.h
+./dir_utils.lo: ../include/net-snmp/utilities.h
+./dir_utils.lo: ../include/net-snmp/library/system.h
+./dir_utils.lo: ../include/net-snmp/library/tools.h
+./dir_utils.lo: ../include/net-snmp/library/int64.h
+./dir_utils.lo: ../include/net-snmp/library/mt_support.h
+./dir_utils.lo: ../include/net-snmp/library/snmp_alarm.h
+./dir_utils.lo: ../include/net-snmp/library/data_list.h
+./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/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
+./dir_utils.lo: ../include/net-snmp/library/container.h
+./dir_utils.lo: ../include/net-snmp/library/snmp_assert.h
+./dir_utils.lo: ../include/net-snmp/version.h
+./dir_utils.lo: ../include/net-snmp/config_api.h
+./dir_utils.lo: ../include/net-snmp/library/read_config.h
+./dir_utils.lo: ../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./dir_utils.lo: ../include/net-snmp/library/snmpv3.h
+./dir_utils.lo: ../include/net-snmp/library/transform_oids.h
+./dir_utils.lo: ../include/net-snmp/library/keytools.h
+./dir_utils.lo: ../include/net-snmp/library/scapi.h
+./dir_utils.lo: ../include/net-snmp/library/lcd_time.h
+./dir_utils.lo: ../include/net-snmp/library/snmp_secmod.h
+./dir_utils.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./dir_utils.lo: ../include/net-snmp/library/snmptsm.h
+./dir_utils.lo: ../include/net-snmp/library/snmpusm.h
+./dir_utils.lo: ../include/net-snmp/library/file_utils.h
+./dir_utils.lo: ../include/net-snmp/library/dir_utils.h
 ./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
+./fd_event_manager.lo: ../include/net-snmp/library/snmp_service.h
+./fd_event_manager.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./fd_event_manager.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./fd_event_manager.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./fd_event_manager.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./fd_event_manager.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./fd_event_manager.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./fd_event_manager.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./fd_event_manager.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./fd_event_manager.lo: ../include/net-snmp/library/ucd_compat.h
+./fd_event_manager.lo: ../include/net-snmp/library/mib.h
+./fd_event_manager.lo: ../include/net-snmp/mib_api.h
+./fd_event_manager.lo: ../include/net-snmp/library/parse.h
+./fd_event_manager.lo: ../include/net-snmp/library/oid_stash.h
+./fd_event_manager.lo: ../include/net-snmp/net-snmp-features.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp_impl.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp-tc.h
+./fd_event_manager.lo: ../include/net-snmp/library/getopt.h
 ./fd_event_manager.lo: ../include/net-snmp/utilities.h
-./fd_event_manager.lo: ../include/net-snmp/library/snmp_client.h
 ./fd_event_manager.lo: ../include/net-snmp/library/system.h
 ./fd_event_manager.lo: ../include/net-snmp/library/tools.h
 ./fd_event_manager.lo: ../include/net-snmp/library/int64.h
 ./fd_event_manager.lo: ../include/net-snmp/library/mt_support.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp_alarm.h
-./fd_event_manager.lo: ../include/net-snmp/library/callback.h
 ./fd_event_manager.lo: ../include/net-snmp/library/data_list.h
-./fd_event_manager.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./fd_event_manager.lo: ../include/net-snmp/library/container.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp_assert.h
 ./fd_event_manager.lo: ../include/net-snmp/version.h
-./fd_event_manager.lo: ../include/net-snmp/session_api.h
-./fd_event_manager.lo: ../include/net-snmp/library/snmp_transport.h
-./fd_event_manager.lo: ../include/net-snmp/library/snmp_service.h
-./fd_event_manager.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./fd_event_manager.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./fd_event_manager.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./fd_event_manager.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./fd_event_manager.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./fd_event_manager.lo: ../include/net-snmp/pdu_api.h
-./fd_event_manager.lo: ../include/net-snmp/mib_api.h
-./fd_event_manager.lo: ../include/net-snmp/library/mib.h
-./fd_event_manager.lo: ../include/net-snmp/library/parse.h
-./fd_event_manager.lo: ../include/net-snmp/varbind_api.h
 ./fd_event_manager.lo: ../include/net-snmp/config_api.h
 ./fd_event_manager.lo: ../include/net-snmp/library/read_config.h
 ./fd_event_manager.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -638,64 +862,68 @@
 ./fd_event_manager.lo: ../include/net-snmp/library/lcd_time.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmp_secmod.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./fd_event_manager.lo: ../include/net-snmp/library/snmptsm.h
 ./fd_event_manager.lo: ../include/net-snmp/library/snmpusm.h
 ./fd_event_manager.lo: ../include/net-snmp/library/fd_event_manager.h
+./fd_event_manager.lo: ../include/net-snmp/library/large_fd_set.h
 ./file_utils.lo: ../include/net-snmp/net-snmp-config.h
-./file_utils.lo: ../include/net-snmp/system/linux.h
-./file_utils.lo: ../include/net-snmp/system/sysv.h
-./file_utils.lo: ../include/net-snmp/system/generic.h
-./file_utils.lo: ../include/net-snmp/machine/generic.h
+./file_utils.lo: ../include/net-snmp/net-snmp-features.h
 ./file_utils.lo: ../include/net-snmp/net-snmp-includes.h
 ./file_utils.lo: ../include/net-snmp/definitions.h
 ./file_utils.lo: ../include/net-snmp/types.h
+./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
+./file_utils.lo: ../include/net-snmp/library/snmp_service.h
+./file_utils.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./file_utils.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./file_utils.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./file_utils.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./file_utils.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./file_utils.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./file_utils.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./file_utils.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./file_utils.lo: ../include/net-snmp/library/ucd_compat.h
+./file_utils.lo: ../include/net-snmp/library/mib.h
+./file_utils.lo: ../include/net-snmp/mib_api.h
+./file_utils.lo: ../include/net-snmp/library/parse.h
+./file_utils.lo: ../include/net-snmp/library/oid_stash.h
 ./file_utils.lo: ../include/net-snmp/library/snmp_impl.h
 ./file_utils.lo: ../include/net-snmp/library/snmp.h
 ./file_utils.lo: ../include/net-snmp/library/snmp-tc.h
+./file_utils.lo: ../include/net-snmp/library/getopt.h
 ./file_utils.lo: ../include/net-snmp/utilities.h
-./file_utils.lo: ../include/net-snmp/library/snmp_client.h
 ./file_utils.lo: ../include/net-snmp/library/system.h
 ./file_utils.lo: ../include/net-snmp/library/tools.h
 ./file_utils.lo: ../include/net-snmp/library/int64.h
 ./file_utils.lo: ../include/net-snmp/library/mt_support.h
 ./file_utils.lo: ../include/net-snmp/library/snmp_alarm.h
-./file_utils.lo: ../include/net-snmp/library/callback.h
 ./file_utils.lo: ../include/net-snmp/library/data_list.h
-./file_utils.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./file_utils.lo: ../include/net-snmp/library/container.h
 ./file_utils.lo: ../include/net-snmp/library/snmp_assert.h
 ./file_utils.lo: ../include/net-snmp/version.h
-./file_utils.lo: ../include/net-snmp/session_api.h
-./file_utils.lo: ../include/net-snmp/library/snmp_transport.h
-./file_utils.lo: ../include/net-snmp/library/snmp_service.h
-./file_utils.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./file_utils.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./file_utils.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./file_utils.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./file_utils.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./file_utils.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./file_utils.lo: ../include/net-snmp/library/mib.h
-./file_utils.lo: ../include/net-snmp/library/parse.h
-./file_utils.lo: ../include/net-snmp/varbind_api.h
 ./file_utils.lo: ../include/net-snmp/config_api.h
 ./file_utils.lo: ../include/net-snmp/library/read_config.h
 ./file_utils.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -704,73 +932,189 @@
 ./file_utils.lo: ../include/net-snmp/library/lcd_time.h
 ./file_utils.lo: ../include/net-snmp/library/snmp_secmod.h
 ./file_utils.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./file_utils.lo: ../include/net-snmp/library/snmptsm.h
 ./file_utils.lo: ../include/net-snmp/library/snmpusm.h
 ./file_utils.lo: ../include/net-snmp/library/file_utils.h
+./getopt.lo: ../include/net-snmp/net-snmp-config.h
+./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/snmpTCPDomain.h
+./gettimeofday.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./gettimeofday.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./gettimeofday.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./gettimeofday.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./gettimeofday.lo: ../include/net-snmp/library/snmp_impl.h
+./gettimeofday.lo: ../include/net-snmp/library/snmp.h
+./gettimeofday.lo: ../include/net-snmp/library/snmp-tc.h
+./gettimeofday.lo: ../include/net-snmp/library/system.h
 ./inet_ntop.lo: ../include/net-snmp/net-snmp-config.h
-./inet_ntop.lo: ../include/net-snmp/system/linux.h
-./inet_ntop.lo: ../include/net-snmp/system/sysv.h
-./inet_ntop.lo: ../include/net-snmp/system/generic.h
-./inet_ntop.lo: ../include/net-snmp/machine/generic.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
+./inet_ntop.lo: ../include/net-snmp/varbind_api.h
+./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
+./inet_ntop.lo: ../include/net-snmp/library/snmp_service.h
+./inet_ntop.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./inet_ntop.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./inet_ntop.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./inet_ntop.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./inet_ntop.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./inet_ntop.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./inet_ntop.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./inet_ntop.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./inet_ntop.lo: ../include/net-snmp/library/ucd_compat.h
+./inet_ntop.lo: ../include/net-snmp/library/mib.h
+./inet_ntop.lo: ../include/net-snmp/mib_api.h
+./inet_ntop.lo: ../include/net-snmp/library/parse.h
+./inet_ntop.lo: ../include/net-snmp/library/oid_stash.h
+./inet_ntop.lo: ../include/net-snmp/net-snmp-features.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmp_impl.h
 ./inet_ntop.lo: ../include/net-snmp/library/snmp.h
-./inet_ntop.lo: ../include/net-snmp/library/snmp-tc.h
+./inet_ntop.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/system/linux.h
-./inet_pton.lo: ../include/net-snmp/system/sysv.h
-./inet_pton.lo: ../include/net-snmp/system/generic.h
-./inet_pton.lo: ../include/net-snmp/machine/generic.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
+./inet_pton.lo: ../include/net-snmp/varbind_api.h
+./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
+./inet_pton.lo: ../include/net-snmp/library/snmp_service.h
+./inet_pton.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./inet_pton.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./inet_pton.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./inet_pton.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./inet_pton.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./inet_pton.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./inet_pton.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./inet_pton.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./inet_pton.lo: ../include/net-snmp/library/ucd_compat.h
+./inet_pton.lo: ../include/net-snmp/library/mib.h
+./inet_pton.lo: ../include/net-snmp/mib_api.h
+./inet_pton.lo: ../include/net-snmp/library/parse.h
+./inet_pton.lo: ../include/net-snmp/library/oid_stash.h
+./inet_pton.lo: ../include/net-snmp/net-snmp-features.h
 ./inet_pton.lo: ../include/net-snmp/library/snmp_impl.h
 ./inet_pton.lo: ../include/net-snmp/library/snmp.h
-./inet_pton.lo: ../include/net-snmp/library/snmp-tc.h
+./inet_pton.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/system/linux.h
-./int64.lo: ../include/net-snmp/system/sysv.h
-./int64.lo: ../include/net-snmp/system/generic.h
-./int64.lo: ../include/net-snmp/machine/generic.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/library/asn1.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
+./int64.lo: ../include/net-snmp/library/snmp_service.h
+./int64.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./int64.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./int64.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./int64.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./int64.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./int64.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./int64.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./int64.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./int64.lo: ../include/net-snmp/library/ucd_compat.h
+./int64.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./int64.lo: ../include/net-snmp/library/parse.h
+./int64.lo: ../include/net-snmp/library/oid_stash.h
+./int64.lo: ../include/net-snmp/net-snmp-features.h
 ./int64.lo: ../include/net-snmp/library/snmp_impl.h
 ./int64.lo: ../include/net-snmp/library/snmp.h
 ./int64.lo: ../include/net-snmp/library/snmp-tc.h
 ./int64.lo: ../include/net-snmp/library/int64.h
 ./int64.lo: ../include/net-snmp/library/snmp_assert.h
-./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/system/linux.h
-./keytools.lo: ../include/net-snmp/system/sysv.h
-./keytools.lo: ../include/net-snmp/system/generic.h
-./keytools.lo: ../include/net-snmp/machine/generic.h
+./keytools.lo: ../include/net-snmp/net-snmp-features.h
 ./keytools.lo: ../include/net-snmp/types.h
+./keytools.lo: ../include/net-snmp/library/oid.h
+./keytools.lo: ../include/net-snmp/library/types.h
 ./keytools.lo: ../include/net-snmp/definitions.h
 ./keytools.lo: ../include/net-snmp/library/snmp_api.h
+./keytools.lo: ../include/net-snmp/varbind_api.h
+./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
+./keytools.lo: ../include/net-snmp/library/snmp_service.h
+./keytools.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./keytools.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./keytools.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./keytools.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./keytools.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./keytools.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./keytools.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./keytools.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./keytools.lo: ../include/net-snmp/library/ucd_compat.h
+./keytools.lo: ../include/net-snmp/library/mib.h
+./keytools.lo: ../include/net-snmp/mib_api.h
+./keytools.lo: ../include/net-snmp/library/parse.h
+./keytools.lo: ../include/net-snmp/library/oid_stash.h
 ./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_client.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
 ./keytools.lo: ../include/net-snmp/library/int64.h
 ./keytools.lo: ../include/net-snmp/library/mt_support.h
 ./keytools.lo: ../include/net-snmp/library/snmp_alarm.h
-./keytools.lo: ../include/net-snmp/library/callback.h
 ./keytools.lo: ../include/net-snmp/library/data_list.h
-./keytools.lo: ../include/net-snmp/library/oid_stash.h
 ./keytools.lo: ../include/net-snmp/library/check_varbind.h
 ./keytools.lo: ../include/net-snmp/library/container.h
 ./keytools.lo: ../include/net-snmp/library/factory.h
@@ -783,31 +1127,116 @@
 ./keytools.lo: ../include/net-snmp/library/scapi.h
 ./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/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
+./large_fd_set.lo: ../include/net-snmp/library/snmp_service.h
+./large_fd_set.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./large_fd_set.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./large_fd_set.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./large_fd_set.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./large_fd_set.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./large_fd_set.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./large_fd_set.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./large_fd_set.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./large_fd_set.lo: ../include/net-snmp/library/ucd_compat.h
+./large_fd_set.lo: ../include/net-snmp/library/mib.h
+./large_fd_set.lo: ../include/net-snmp/mib_api.h
+./large_fd_set.lo: ../include/net-snmp/library/parse.h
+./large_fd_set.lo: ../include/net-snmp/library/oid_stash.h
+./large_fd_set.lo: ../include/net-snmp/net-snmp-features.h
+./large_fd_set.lo: ../include/net-snmp/library/snmp_impl.h
+./large_fd_set.lo: ../include/net-snmp/library/snmp.h
+./large_fd_set.lo: ../include/net-snmp/library/snmp-tc.h
+./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/snmptsm.h
+./large_fd_set.lo: ../include/net-snmp/library/snmpusm.h
+./large_fd_set.lo: ../include/net-snmp/library/large_fd_set.h
 ./lcd_time.lo: ../include/net-snmp/net-snmp-config.h
-./lcd_time.lo: ../include/net-snmp/system/linux.h
-./lcd_time.lo: ../include/net-snmp/system/sysv.h
-./lcd_time.lo: ../include/net-snmp/system/generic.h
-./lcd_time.lo: ../include/net-snmp/machine/generic.h
+./lcd_time.lo: ../include/net-snmp/net-snmp-features.h
 ./lcd_time.lo: ../include/net-snmp/types.h
+./lcd_time.lo: ../include/net-snmp/library/oid.h
+./lcd_time.lo: ../include/net-snmp/library/types.h
 ./lcd_time.lo: ../include/net-snmp/definitions.h
 ./lcd_time.lo: ../include/net-snmp/library/snmp_api.h
+./lcd_time.lo: ../include/net-snmp/varbind_api.h
+./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
+./lcd_time.lo: ../include/net-snmp/library/snmp_service.h
+./lcd_time.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./lcd_time.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./lcd_time.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./lcd_time.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./lcd_time.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./lcd_time.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./lcd_time.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./lcd_time.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./lcd_time.lo: ../include/net-snmp/library/ucd_compat.h
+./lcd_time.lo: ../include/net-snmp/library/mib.h
+./lcd_time.lo: ../include/net-snmp/mib_api.h
+./lcd_time.lo: ../include/net-snmp/library/parse.h
+./lcd_time.lo: ../include/net-snmp/library/oid_stash.h
 ./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_client.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
 ./lcd_time.lo: ../include/net-snmp/library/int64.h
 ./lcd_time.lo: ../include/net-snmp/library/mt_support.h
 ./lcd_time.lo: ../include/net-snmp/library/snmp_alarm.h
-./lcd_time.lo: ../include/net-snmp/library/callback.h
 ./lcd_time.lo: ../include/net-snmp/library/data_list.h
-./lcd_time.lo: ../include/net-snmp/library/oid_stash.h
 ./lcd_time.lo: ../include/net-snmp/library/check_varbind.h
 ./lcd_time.lo: ../include/net-snmp/library/container.h
 ./lcd_time.lo: ../include/net-snmp/library/factory.h
@@ -818,59 +1247,107 @@
 ./lcd_time.lo: ../include/net-snmp/library/snmp_assert.h
 ./lcd_time.lo: ../include/net-snmp/version.h
 ./lcd_time.lo: ../include/net-snmp/library/snmp_secmod.h
-./lcd_time.lo: ../include/net-snmp/library/snmp_transport.h
 ./lcd_time.lo: ../include/net-snmp/library/snmpusm.h
 ./lcd_time.lo: ../include/net-snmp/library/lcd_time.h
 ./lcd_time.lo: ../include/net-snmp/library/scapi.h
 ./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/system/linux.h
-./md5.lo: ../include/net-snmp/system/sysv.h
-./md5.lo: ../include/net-snmp/system/generic.h
-./md5.lo: ../include/net-snmp/machine/generic.h
-./md5.lo: ../include/net-snmp/utilities.h ../include/net-snmp/types.h
-./md5.lo: ../include/net-snmp/definitions.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/library/snmp_api.h
-./md5.lo: ../include/net-snmp/library/asn1.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
+./md5.lo: ../include/net-snmp/library/snmp_service.h
+./md5.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./md5.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./md5.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./md5.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./md5.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./md5.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./md5.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./md5.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./md5.lo: ../include/net-snmp/library/ucd_compat.h
+./md5.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./md5.lo: ../include/net-snmp/library/parse.h
+./md5.lo: ../include/net-snmp/library/oid_stash.h
+./md5.lo: ../include/net-snmp/net-snmp-features.h
 ./md5.lo: ../include/net-snmp/library/snmp_impl.h
 ./md5.lo: ../include/net-snmp/library/snmp.h
 ./md5.lo: ../include/net-snmp/library/snmp-tc.h
-./md5.lo: ../include/net-snmp/library/snmp_client.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
 ./md5.lo: ../include/net-snmp/library/mt_support.h
 ./md5.lo: ../include/net-snmp/library/snmp_alarm.h
-./md5.lo: ../include/net-snmp/library/callback.h
 ./md5.lo: ../include/net-snmp/library/data_list.h
-./md5.lo: ../include/net-snmp/library/oid_stash.h
 ./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/snmptsm.h
+./md5.lo: ../include/net-snmp/library/snmpusm.h
+./md5.lo: ../include/net-snmp/library/md5.h
 ./mib.lo: ../include/net-snmp/net-snmp-config.h
-./mib.lo: ../include/net-snmp/system/linux.h
-./mib.lo: ../include/net-snmp/system/sysv.h
-./mib.lo: ../include/net-snmp/system/generic.h
-./mib.lo: ../include/net-snmp/machine/generic.h
+./mib.lo: ../include/net-snmp/net-snmp-features.h
 ./mib.lo: ../include/net-snmp/types.h
+./mib.lo: ../include/net-snmp/library/oid.h
+./mib.lo: ../include/net-snmp/library/types.h
 ./mib.lo: ../include/net-snmp/definitions.h
 ./mib.lo: ../include/net-snmp/library/snmp_api.h
-./mib.lo: ../include/net-snmp/library/asn1.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
+./mib.lo: ../include/net-snmp/library/snmp_service.h
+./mib.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./mib.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./mib.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./mib.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./mib.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./mib.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./mib.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./mib.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./mib.lo: ../include/net-snmp/library/ucd_compat.h
+./mib.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./mib.lo: ../include/net-snmp/library/parse.h
+./mib.lo: ../include/net-snmp/library/oid_stash.h
 ./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_client.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
@@ -882,9 +1359,7 @@
 ./mib.lo: ../include/net-snmp/library/int64.h
 ./mib.lo: ../include/net-snmp/library/mt_support.h
 ./mib.lo: ../include/net-snmp/library/snmp_alarm.h
-./mib.lo: ../include/net-snmp/library/callback.h
 ./mib.lo: ../include/net-snmp/library/data_list.h
-./mib.lo: ../include/net-snmp/library/oid_stash.h
 ./mib.lo: ../include/net-snmp/library/check_varbind.h
 ./mib.lo: ../include/net-snmp/library/container.h
 ./mib.lo: ../include/net-snmp/library/factory.h
@@ -893,69 +1368,66 @@
 ./mib.lo: ../include/net-snmp/library/container_iterator.h
 ./mib.lo: ../include/net-snmp/library/container.h
 ./mib.lo: ../include/net-snmp/library/snmp_assert.h
-./mib.lo: ../include/net-snmp/version.h ../include/net-snmp/library/mib.h
-./mib.lo: ../include/net-snmp/library/parse.h
+./mib.lo: ../include/net-snmp/version.h
 ./mt_support.lo: ../include/net-snmp/net-snmp-config.h
-./mt_support.lo: ../include/net-snmp/system/linux.h
-./mt_support.lo: ../include/net-snmp/system/sysv.h
-./mt_support.lo: ../include/net-snmp/system/generic.h
-./mt_support.lo: ../include/net-snmp/machine/generic.h
 ./mt_support.lo: ../include/net-snmp/library/mt_support.h
 ./oid_stash.lo: ../include/net-snmp/net-snmp-config.h
-./oid_stash.lo: ../include/net-snmp/system/linux.h
-./oid_stash.lo: ../include/net-snmp/system/sysv.h
-./oid_stash.lo: ../include/net-snmp/system/generic.h
-./oid_stash.lo: ../include/net-snmp/machine/generic.h
+./oid_stash.lo: ../include/net-snmp/net-snmp-features.h
 ./oid_stash.lo: ../include/net-snmp/net-snmp-includes.h
 ./oid_stash.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./oid_stash.lo: ../include/net-snmp/library/oid.h
+./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
+./oid_stash.lo: ../include/net-snmp/library/snmp_service.h
+./oid_stash.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./oid_stash.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./oid_stash.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./oid_stash.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./oid_stash.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./oid_stash.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./oid_stash.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./oid_stash.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./oid_stash.lo: ../include/net-snmp/library/ucd_compat.h
+./oid_stash.lo: ../include/net-snmp/library/mib.h
+./oid_stash.lo: ../include/net-snmp/mib_api.h
+./oid_stash.lo: ../include/net-snmp/library/parse.h
+./oid_stash.lo: ../include/net-snmp/library/oid_stash.h
 ./oid_stash.lo: ../include/net-snmp/library/snmp_impl.h
 ./oid_stash.lo: ../include/net-snmp/library/snmp.h
 ./oid_stash.lo: ../include/net-snmp/library/snmp-tc.h
+./oid_stash.lo: ../include/net-snmp/library/getopt.h
 ./oid_stash.lo: ../include/net-snmp/utilities.h
-./oid_stash.lo: ../include/net-snmp/library/snmp_client.h
 ./oid_stash.lo: ../include/net-snmp/library/system.h
 ./oid_stash.lo: ../include/net-snmp/library/tools.h
 ./oid_stash.lo: ../include/net-snmp/library/int64.h
 ./oid_stash.lo: ../include/net-snmp/library/mt_support.h
 ./oid_stash.lo: ../include/net-snmp/library/snmp_alarm.h
-./oid_stash.lo: ../include/net-snmp/library/callback.h
 ./oid_stash.lo: ../include/net-snmp/library/data_list.h
-./oid_stash.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./oid_stash.lo: ../include/net-snmp/library/container.h
 ./oid_stash.lo: ../include/net-snmp/library/snmp_assert.h
 ./oid_stash.lo: ../include/net-snmp/version.h
-./oid_stash.lo: ../include/net-snmp/session_api.h
-./oid_stash.lo: ../include/net-snmp/library/snmp_transport.h
-./oid_stash.lo: ../include/net-snmp/library/snmp_service.h
-./oid_stash.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./oid_stash.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./oid_stash.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./oid_stash.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./oid_stash.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./oid_stash.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./oid_stash.lo: ../include/net-snmp/library/mib.h
-./oid_stash.lo: ../include/net-snmp/library/parse.h
-./oid_stash.lo: ../include/net-snmp/varbind_api.h
 ./oid_stash.lo: ../include/net-snmp/config_api.h
 ./oid_stash.lo: ../include/net-snmp/library/read_config.h
 ./oid_stash.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -964,23 +1436,74 @@
 ./oid_stash.lo: ../include/net-snmp/library/lcd_time.h
 ./oid_stash.lo: ../include/net-snmp/library/snmp_secmod.h
 ./oid_stash.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./oid_stash.lo: ../include/net-snmp/library/snmptsm.h
 ./oid_stash.lo: ../include/net-snmp/library/snmpusm.h
+./opendir.lo: ../include/net-snmp/net-snmp-config.h
+./opendir.lo: ../include/net-snmp/types.h
+./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/snmpTCPDomain.h
+./opendir.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./opendir.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./opendir.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./opendir.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./opendir.lo: ../include/net-snmp/library/snmp_impl.h
+./opendir.lo: ../include/net-snmp/library/snmp.h
+./opendir.lo: ../include/net-snmp/library/snmp-tc.h
+./opendir.lo: ../include/net-snmp/library/system.h
 ./parse.lo: ../include/net-snmp/net-snmp-config.h
-./parse.lo: ../include/net-snmp/system/linux.h
-./parse.lo: ../include/net-snmp/system/sysv.h
-./parse.lo: ../include/net-snmp/system/generic.h
-./parse.lo: ../include/net-snmp/machine/generic.h
+./parse.lo: ../include/net-snmp/net-snmp-features.h
 ./parse.lo: ../include/net-snmp/types.h
+./parse.lo: ../include/net-snmp/library/oid.h
+./parse.lo: ../include/net-snmp/library/types.h
 ./parse.lo: ../include/net-snmp/definitions.h
 ./parse.lo: ../include/net-snmp/library/snmp_api.h
-./parse.lo: ../include/net-snmp/library/asn1.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
+./parse.lo: ../include/net-snmp/library/snmp_service.h
+./parse.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./parse.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./parse.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./parse.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./parse.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./parse.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./parse.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./parse.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./parse.lo: ../include/net-snmp/library/ucd_compat.h
+./parse.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./parse.lo: ../include/net-snmp/library/parse.h
+./parse.lo: ../include/net-snmp/library/oid_stash.h
 ./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_client.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
@@ -993,9 +1516,7 @@
 ./parse.lo: ../include/net-snmp/library/int64.h
 ./parse.lo: ../include/net-snmp/library/mt_support.h
 ./parse.lo: ../include/net-snmp/library/snmp_alarm.h
-./parse.lo: ../include/net-snmp/library/callback.h
 ./parse.lo: ../include/net-snmp/library/data_list.h
-./parse.lo: ../include/net-snmp/library/oid_stash.h
 ./parse.lo: ../include/net-snmp/library/check_varbind.h
 ./parse.lo: ../include/net-snmp/library/container.h
 ./parse.lo: ../include/net-snmp/library/factory.h
@@ -1004,29 +1525,42 @@
 ./parse.lo: ../include/net-snmp/library/container_iterator.h
 ./parse.lo: ../include/net-snmp/library/container.h
 ./parse.lo: ../include/net-snmp/library/snmp_assert.h
-./parse.lo: ../include/net-snmp/version.h ../include/net-snmp/library/parse.h
-./parse.lo: ../include/net-snmp/library/mib.h
+./parse.lo: ../include/net-snmp/version.h
 ./pkcs.lo: ../include/net-snmp/net-snmp-config.h
-./pkcs.lo: ../include/net-snmp/system/linux.h
-./pkcs.lo: ../include/net-snmp/system/sysv.h
-./pkcs.lo: ../include/net-snmp/system/generic.h
-./pkcs.lo: ../include/net-snmp/machine/generic.h
 ./read_config.lo: ../include/net-snmp/net-snmp-config.h
-./read_config.lo: ../include/net-snmp/system/linux.h
-./read_config.lo: ../include/net-snmp/system/sysv.h
-./read_config.lo: ../include/net-snmp/system/generic.h
-./read_config.lo: ../include/net-snmp/machine/generic.h
+./read_config.lo: ../include/net-snmp/net-snmp-features.h
 ./read_config.lo: ../include/net-snmp/types.h
+./read_config.lo: ../include/net-snmp/library/oid.h
+./read_config.lo: ../include/net-snmp/library/types.h
 ./read_config.lo: ../include/net-snmp/definitions.h
 ./read_config.lo: ../include/net-snmp/library/snmp_api.h
+./read_config.lo: ../include/net-snmp/varbind_api.h
+./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
+./read_config.lo: ../include/net-snmp/library/snmp_service.h
+./read_config.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./read_config.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./read_config.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./read_config.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./read_config.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./read_config.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./read_config.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./read_config.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./read_config.lo: ../include/net-snmp/library/ucd_compat.h
+./read_config.lo: ../include/net-snmp/library/mib.h
+./read_config.lo: ../include/net-snmp/mib_api.h
+./read_config.lo: ../include/net-snmp/library/parse.h
+./read_config.lo: ../include/net-snmp/library/oid_stash.h
 ./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_client.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
@@ -1039,9 +1573,7 @@
 ./read_config.lo: ../include/net-snmp/library/int64.h
 ./read_config.lo: ../include/net-snmp/library/mt_support.h
 ./read_config.lo: ../include/net-snmp/library/snmp_alarm.h
-./read_config.lo: ../include/net-snmp/library/callback.h
 ./read_config.lo: ../include/net-snmp/library/data_list.h
-./read_config.lo: ../include/net-snmp/library/oid_stash.h
 ./read_config.lo: ../include/net-snmp/library/check_varbind.h
 ./read_config.lo: ../include/net-snmp/library/container.h
 ./read_config.lo: ../include/net-snmp/library/factory.h
@@ -1051,33 +1583,79 @@
 ./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
-./read_config.lo: ../include/net-snmp/library/mib.h
-./read_config.lo: ../include/net-snmp/library/parse.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/snmpTCPDomain.h
+./readdir.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./readdir.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./readdir.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./readdir.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./readdir.lo: ../include/net-snmp/library/snmp_impl.h
+./readdir.lo: ../include/net-snmp/library/snmp.h
+./readdir.lo: ../include/net-snmp/library/snmp-tc.h
+./readdir.lo: ../include/net-snmp/library/system.h
 ./scapi.lo: ../include/net-snmp/net-snmp-config.h
-./scapi.lo: ../include/net-snmp/system/linux.h
-./scapi.lo: ../include/net-snmp/system/sysv.h
-./scapi.lo: ../include/net-snmp/system/generic.h
-./scapi.lo: ../include/net-snmp/machine/generic.h
+./scapi.lo: ../include/net-snmp/net-snmp-features.h
 ./scapi.lo: ../include/net-snmp/types.h
+./scapi.lo: ../include/net-snmp/library/oid.h
+./scapi.lo: ../include/net-snmp/library/types.h
 ./scapi.lo: ../include/net-snmp/definitions.h
 ./scapi.lo: ../include/net-snmp/library/snmp_api.h
-./scapi.lo: ../include/net-snmp/library/asn1.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
+./scapi.lo: ../include/net-snmp/library/snmp_service.h
+./scapi.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./scapi.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./scapi.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./scapi.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./scapi.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./scapi.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./scapi.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./scapi.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./scapi.lo: ../include/net-snmp/library/ucd_compat.h
+./scapi.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./scapi.lo: ../include/net-snmp/library/parse.h
+./scapi.lo: ../include/net-snmp/library/oid_stash.h
 ./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_client.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
 ./scapi.lo: ../include/net-snmp/library/int64.h
 ./scapi.lo: ../include/net-snmp/library/mt_support.h
 ./scapi.lo: ../include/net-snmp/library/snmp_alarm.h
-./scapi.lo: ../include/net-snmp/library/callback.h
 ./scapi.lo: ../include/net-snmp/library/data_list.h
-./scapi.lo: ../include/net-snmp/library/oid_stash.h
 ./scapi.lo: ../include/net-snmp/library/check_varbind.h
 ./scapi.lo: ../include/net-snmp/library/container.h
 ./scapi.lo: ../include/net-snmp/library/factory.h
@@ -1088,288 +1666,44 @@
 ./scapi.lo: ../include/net-snmp/library/snmp_assert.h
 ./scapi.lo: ../include/net-snmp/version.h
 ./scapi.lo: ../include/net-snmp/library/snmp_secmod.h
-./scapi.lo: ../include/net-snmp/library/snmp_transport.h
 ./scapi.lo: ../include/net-snmp/library/snmpusm.h
 ./scapi.lo: ../include/net-snmp/library/keytools.h
 ./scapi.lo: ../include/net-snmp/library/scapi.h
-./scapi.lo: ../include/net-snmp/library/mib.h
 ./scapi.lo: ../include/net-snmp/library/transform_oids.h
-./snmp-tc.lo: ../include/net-snmp/net-snmp-config.h
-./snmp-tc.lo: ../include/net-snmp/system/linux.h
-./snmp-tc.lo: ../include/net-snmp/system/sysv.h
-./snmp-tc.lo: ../include/net-snmp/system/generic.h
-./snmp-tc.lo: ../include/net-snmp/machine/generic.h
-./snmp-tc.lo: ../include/net-snmp/types.h
-./snmp-tc.lo: ../include/net-snmp/definitions.h
-./snmp-tc.lo: ../include/net-snmp/library/snmp_api.h
-./snmp-tc.lo: ../include/net-snmp/library/asn1.h
-./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
-./snmp.lo: ../include/net-snmp/net-snmp-config.h
-./snmp.lo: ../include/net-snmp/system/linux.h
-./snmp.lo: ../include/net-snmp/system/sysv.h
-./snmp.lo: ../include/net-snmp/system/generic.h
-./snmp.lo: ../include/net-snmp/machine/generic.h
-./snmp.lo: ../include/net-snmp/types.h
-./snmp.lo: ../include/net-snmp/definitions.h
-./snmp.lo: ../include/net-snmp/library/snmp_api.h
-./snmp.lo: ../include/net-snmp/library/asn1.h
-./snmp.lo: ../include/net-snmp/library/snmp_impl.h
-./snmp.lo: ../include/net-snmp/library/snmp.h
-./snmp.lo: ../include/net-snmp/library/snmp-tc.h
-./snmp.lo: ../include/net-snmp/output_api.h
-./snmp.lo: ../include/net-snmp/library/snmp_client.h
-./snmp.lo: ../include/net-snmp/library/snmp_debug.h
-./snmp.lo: ../include/net-snmp/library/snmp_logging.h
-./snmp.lo: ../include/net-snmp/library/mib.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/system/linux.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/system/sysv.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/system/generic.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/machine/generic.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/types.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/definitions.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/asn1.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_client.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/snmp_transport.h
-./snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpAAL5PVCDomain.h
-./snmpCallbackDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpCallbackDomain.lo: ../include/net-snmp/system/linux.h
-./snmpCallbackDomain.lo: ../include/net-snmp/system/sysv.h
-./snmpCallbackDomain.lo: ../include/net-snmp/system/generic.h
-./snmpCallbackDomain.lo: ../include/net-snmp/machine/generic.h
-./snmpCallbackDomain.lo: ../include/net-snmp/types.h
-./snmpCallbackDomain.lo: ../include/net-snmp/definitions.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/asn1.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_client.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/callback.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/data_list.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/oid_stash.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
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpCallbackDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmpIPXDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpIPXDomain.lo: ../include/net-snmp/system/linux.h
-./snmpIPXDomain.lo: ../include/net-snmp/system/sysv.h
-./snmpIPXDomain.lo: ../include/net-snmp/system/generic.h
-./snmpIPXDomain.lo: ../include/net-snmp/machine/generic.h
-./snmpIPXDomain.lo: ../include/net-snmp/types.h
-./snmpIPXDomain.lo: ../include/net-snmp/definitions.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/asn1.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_client.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
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpIPXDomain.lo: ../include/net-snmp/library/snmpIPXDomain.h
-./snmpSTDDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpSTDDomain.lo: ../include/net-snmp/system/linux.h
-./snmpSTDDomain.lo: ../include/net-snmp/system/sysv.h
-./snmpSTDDomain.lo: ../include/net-snmp/system/generic.h
-./snmpSTDDomain.lo: ../include/net-snmp/machine/generic.h
-./snmpSTDDomain.lo: ../include/net-snmp/types.h
-./snmpSTDDomain.lo: ../include/net-snmp/definitions.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/asn1.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_client.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/snmp_transport.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/snmpSTDDomain.h
-./snmpSTDDomain.lo: ../include/net-snmp/library/tools.h
-./snmpTCPDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpTCPDomain.lo: ../include/net-snmp/system/linux.h
-./snmpTCPDomain.lo: ../include/net-snmp/system/sysv.h
-./snmpTCPDomain.lo: ../include/net-snmp/system/generic.h
-./snmpTCPDomain.lo: ../include/net-snmp/machine/generic.h
-./snmpTCPDomain.lo: ../include/net-snmp/types.h
-./snmpTCPDomain.lo: ../include/net-snmp/definitions.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/asn1.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_client.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_debug.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_logging.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpTCPDomain.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/system/linux.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/system/sysv.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/system/generic.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/machine/generic.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/types.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/definitions.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/asn1.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/snmp_impl.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/snmp.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/output_api.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/snmp_client.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/snmp_debug.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/snmp_logging.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/config_api.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/read_config.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/default_store.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/snmp_parse_args.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/snmp_enum.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/vacm.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
-./snmpTCPIPv6Domain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
-./snmpUDPDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpUDPDomain.lo: ../include/net-snmp/system/linux.h
-./snmpUDPDomain.lo: ../include/net-snmp/system/sysv.h
-./snmpUDPDomain.lo: ../include/net-snmp/system/generic.h
-./snmpUDPDomain.lo: ../include/net-snmp/machine/generic.h
-./snmpUDPDomain.lo: ../include/net-snmp/types.h
-./snmpUDPDomain.lo: ../include/net-snmp/definitions.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/asn1.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_client.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/snmp_transport.h
-./snmpUDPDomain.lo: ../include/net-snmp/library/snmpUDPDomain.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
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/system/linux.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/system/sysv.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/system/generic.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/machine/generic.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/types.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/definitions.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/library/asn1.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp_impl.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/output_api.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp_client.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp_debug.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp_logging.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/config_api.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/library/read_config.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/library/default_store.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp_parse_args.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp_enum.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/library/vacm.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp_transport.h
-./snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
-./snmpUnixDomain.lo: ../include/net-snmp/net-snmp-config.h
-./snmpUnixDomain.lo: ../include/net-snmp/system/linux.h
-./snmpUnixDomain.lo: ../include/net-snmp/system/sysv.h
-./snmpUnixDomain.lo: ../include/net-snmp/system/generic.h
-./snmpUnixDomain.lo: ../include/net-snmp/machine/generic.h
-./snmpUnixDomain.lo: ../include/net-snmp/types.h
-./snmpUnixDomain.lo: ../include/net-snmp/definitions.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmp_api.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/asn1.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_client.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/snmp_transport.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmpUnixDomain.lo: ../include/net-snmp/library/system.h
 ./snmp_alarm.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_alarm.lo: ../include/net-snmp/system/linux.h
-./snmp_alarm.lo: ../include/net-snmp/system/sysv.h
-./snmp_alarm.lo: ../include/net-snmp/system/generic.h
-./snmp_alarm.lo: ../include/net-snmp/machine/generic.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
+./snmp_alarm.lo: ../include/net-snmp/varbind_api.h
+./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
+./snmp_alarm.lo: ../include/net-snmp/library/snmp_service.h
+./snmp_alarm.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp_alarm.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp_alarm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_alarm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp_alarm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_alarm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp_alarm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp_alarm.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp_alarm.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp_alarm.lo: ../include/net-snmp/library/mib.h
+./snmp_alarm.lo: ../include/net-snmp/mib_api.h
+./snmp_alarm.lo: ../include/net-snmp/library/parse.h
+./snmp_alarm.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_alarm.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmp.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmp-tc.h
-./snmp_alarm.lo: ../include/net-snmp/output_api.h
-./snmp_alarm.lo: ../include/net-snmp/library/snmp_client.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
@@ -1382,9 +1716,7 @@
 ./snmp_alarm.lo: ../include/net-snmp/library/int64.h
 ./snmp_alarm.lo: ../include/net-snmp/library/mt_support.h
 ./snmp_alarm.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmp_alarm.lo: ../include/net-snmp/library/callback.h
 ./snmp_alarm.lo: ../include/net-snmp/library/data_list.h
-./snmp_alarm.lo: ../include/net-snmp/library/oid_stash.h
 ./snmp_alarm.lo: ../include/net-snmp/library/check_varbind.h
 ./snmp_alarm.lo: ../include/net-snmp/library/container.h
 ./snmp_alarm.lo: ../include/net-snmp/library/factory.h
@@ -1395,21 +1727,39 @@
 ./snmp_alarm.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmp_alarm.lo: ../include/net-snmp/version.h
 ./snmp_api.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_api.lo: ../include/net-snmp/system/linux.h
-./snmp_api.lo: ../include/net-snmp/system/sysv.h
-./snmp_api.lo: ../include/net-snmp/system/generic.h
-./snmp_api.lo: ../include/net-snmp/machine/generic.h
+./snmp_api.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_api.lo: ../include/net-snmp/types.h
+./snmp_api.lo: ../include/net-snmp/library/oid.h
+./snmp_api.lo: ../include/net-snmp/library/types.h
 ./snmp_api.lo: ../include/net-snmp/definitions.h
 ./snmp_api.lo: ../include/net-snmp/library/snmp_api.h
+./snmp_api.lo: ../include/net-snmp/varbind_api.h
+./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
+./snmp_api.lo: ../include/net-snmp/library/snmp_service.h
+./snmp_api.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp_api.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp_api.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_api.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp_api.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_api.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp_api.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp_api.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp_api.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp_api.lo: ../include/net-snmp/library/mib.h
+./snmp_api.lo: ../include/net-snmp/mib_api.h
+./snmp_api.lo: ../include/net-snmp/library/parse.h
+./snmp_api.lo: ../include/net-snmp/library/oid_stash.h
 ./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_client.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
@@ -1422,9 +1772,7 @@
 ./snmp_api.lo: ../include/net-snmp/library/int64.h
 ./snmp_api.lo: ../include/net-snmp/library/mt_support.h
 ./snmp_api.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmp_api.lo: ../include/net-snmp/library/callback.h
 ./snmp_api.lo: ../include/net-snmp/library/data_list.h
-./snmp_api.lo: ../include/net-snmp/library/oid_stash.h
 ./snmp_api.lo: ../include/net-snmp/library/check_varbind.h
 ./snmp_api.lo: ../include/net-snmp/library/container.h
 ./snmp_api.lo: ../include/net-snmp/library/factory.h
@@ -1434,42 +1782,54 @@
 ./snmp_api.lo: ../include/net-snmp/library/container.h
 ./snmp_api.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmp_api.lo: ../include/net-snmp/version.h
-./snmp_api.lo: ../include/net-snmp/library/parse.h
-./snmp_api.lo: ../include/net-snmp/library/mib.h
 ./snmp_api.lo: ../include/net-snmp/library/snmpv3.h
 ./snmp_api.lo: ../include/net-snmp/library/snmp_secmod.h
-./snmp_api.lo: ../include/net-snmp/library/snmp_transport.h
-./snmp_api.lo: ../include/net-snmp/library/snmpusm.h
+./snmp_api.lo: ../include/net-snmp/library/large_fd_set.h
 ./snmp_api.lo: ../include/net-snmp/library/keytools.h
 ./snmp_api.lo: ../include/net-snmp/library/lcd_time.h
-./snmp_api.lo: ../include/net-snmp/library/snmp_service.h
 ./snmp_api.lo: ../agent/mibgroup/agentx/protocol.h
 ./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/system/linux.h
-./snmp_auth.lo: ../include/net-snmp/system/sysv.h
-./snmp_auth.lo: ../include/net-snmp/system/generic.h
-./snmp_auth.lo: ../include/net-snmp/machine/generic.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
+./snmp_auth.lo: ../include/net-snmp/varbind_api.h
+./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
+./snmp_auth.lo: ../include/net-snmp/library/snmp_service.h
+./snmp_auth.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp_auth.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp_auth.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_auth.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp_auth.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_auth.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp_auth.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp_auth.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp_auth.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp_auth.lo: ../include/net-snmp/library/mib.h
+./snmp_auth.lo: ../include/net-snmp/mib_api.h
+./snmp_auth.lo: ../include/net-snmp/library/parse.h
+./snmp_auth.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_auth.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmp.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmp-tc.h
-./snmp_auth.lo: ../include/net-snmp/output_api.h
-./snmp_auth.lo: ../include/net-snmp/library/snmp_client.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
 ./snmp_auth.lo: ../include/net-snmp/library/int64.h
 ./snmp_auth.lo: ../include/net-snmp/library/mt_support.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmp_auth.lo: ../include/net-snmp/library/callback.h
 ./snmp_auth.lo: ../include/net-snmp/library/data_list.h
-./snmp_auth.lo: ../include/net-snmp/library/oid_stash.h
 ./snmp_auth.lo: ../include/net-snmp/library/check_varbind.h
 ./snmp_auth.lo: ../include/net-snmp/library/container.h
 ./snmp_auth.lo: ../include/net-snmp/library/factory.h
@@ -1479,45 +1839,113 @@
 ./snmp_auth.lo: ../include/net-snmp/library/container.h
 ./snmp_auth.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmp_auth.lo: ../include/net-snmp/version.h
-./snmp_auth.lo: ../include/net-snmp/library/mib.h
 ./snmp_auth.lo: ../include/net-snmp/library/md5.h
 ./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
+./snmp.lo: ../include/net-snmp/library/snmp_service.h
+./snmp.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./snmp.lo: ../include/net-snmp/library/parse.h
+./snmp.lo: ../include/net-snmp/library/oid_stash.h
+./snmp.lo: ../include/net-snmp/net-snmp-features.h
+./snmp.lo: ../include/net-snmp/library/snmp_impl.h
+./snmp.lo: ../include/net-snmp/library/snmp.h
+./snmp.lo: ../include/net-snmp/library/snmp-tc.h
 ./snmp_client.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_client.lo: ../include/net-snmp/system/linux.h
-./snmp_client.lo: ../include/net-snmp/system/sysv.h
-./snmp_client.lo: ../include/net-snmp/system/generic.h
-./snmp_client.lo: ../include/net-snmp/machine/generic.h
+./snmp_client.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_client.lo: ../include/net-snmp/types.h
+./snmp_client.lo: ../include/net-snmp/library/oid.h
+./snmp_client.lo: ../include/net-snmp/library/types.h
 ./snmp_client.lo: ../include/net-snmp/definitions.h
 ./snmp_client.lo: ../include/net-snmp/library/snmp_api.h
+./snmp_client.lo: ../include/net-snmp/varbind_api.h
+./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
+./snmp_client.lo: ../include/net-snmp/library/snmp_service.h
+./snmp_client.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp_client.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp_client.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_client.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp_client.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_client.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp_client.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp_client.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp_client.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp_client.lo: ../include/net-snmp/library/mib.h
+./snmp_client.lo: ../include/net-snmp/mib_api.h
+./snmp_client.lo: ../include/net-snmp/library/parse.h
+./snmp_client.lo: ../include/net-snmp/library/oid_stash.h
 ./snmp_client.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_client.lo: ../include/net-snmp/library/snmp.h
 ./snmp_client.lo: ../include/net-snmp/library/snmp-tc.h
-./snmp_client.lo: ../include/net-snmp/library/snmp_client.h
+./snmp_client.lo: ../include/net-snmp/agent/ds_agent.h
+./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/snmp_transport.h
 ./snmp_client.lo: ../include/net-snmp/library/snmpusm.h
-./snmp_client.lo: ../include/net-snmp/library/callback.h
-./snmp_client.lo: ../include/net-snmp/library/mib.h
-./snmp_client.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmp_client.lo: ../include/net-snmp/library/snmp_assert.h
 ./snmp_debug.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_debug.lo: ../include/net-snmp/system/linux.h
-./snmp_debug.lo: ../include/net-snmp/system/sysv.h
-./snmp_debug.lo: ../include/net-snmp/system/generic.h
-./snmp_debug.lo: ../include/net-snmp/machine/generic.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
+./snmp_debug.lo: ../include/net-snmp/varbind_api.h
+./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
+./snmp_debug.lo: ../include/net-snmp/library/snmp_service.h
+./snmp_debug.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp_debug.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp_debug.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_debug.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp_debug.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_debug.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp_debug.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp_debug.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp_debug.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp_debug.lo: ../include/net-snmp/library/mib.h
+./snmp_debug.lo: ../include/net-snmp/mib_api.h
+./snmp_debug.lo: ../include/net-snmp/library/parse.h
+./snmp_debug.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_debug.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmp.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmp-tc.h
-./snmp_debug.lo: ../include/net-snmp/output_api.h
-./snmp_debug.lo: ../include/net-snmp/library/snmp_client.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
@@ -1530,9 +1958,7 @@
 ./snmp_debug.lo: ../include/net-snmp/library/int64.h
 ./snmp_debug.lo: ../include/net-snmp/library/mt_support.h
 ./snmp_debug.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmp_debug.lo: ../include/net-snmp/library/callback.h
 ./snmp_debug.lo: ../include/net-snmp/library/data_list.h
-./snmp_debug.lo: ../include/net-snmp/library/oid_stash.h
 ./snmp_debug.lo: ../include/net-snmp/library/check_varbind.h
 ./snmp_debug.lo: ../include/net-snmp/library/container.h
 ./snmp_debug.lo: ../include/net-snmp/library/factory.h
@@ -1542,16 +1968,37 @@
 ./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
-./snmp_debug.lo: ../include/net-snmp/library/mib.h
 ./snmp_enum.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_enum.lo: ../include/net-snmp/system/linux.h
-./snmp_enum.lo: ../include/net-snmp/system/sysv.h
-./snmp_enum.lo: ../include/net-snmp/system/generic.h
-./snmp_enum.lo: ../include/net-snmp/machine/generic.h
+./snmp_enum.lo: ../include/net-snmp/net-snmp-features.h
 ./snmp_enum.lo: ../include/net-snmp/types.h
+./snmp_enum.lo: ../include/net-snmp/library/oid.h
+./snmp_enum.lo: ../include/net-snmp/library/types.h
 ./snmp_enum.lo: ../include/net-snmp/definitions.h
 ./snmp_enum.lo: ../include/net-snmp/library/snmp_api.h
+./snmp_enum.lo: ../include/net-snmp/varbind_api.h
+./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
+./snmp_enum.lo: ../include/net-snmp/library/snmp_service.h
+./snmp_enum.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp_enum.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp_enum.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_enum.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp_enum.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_enum.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp_enum.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp_enum.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp_enum.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp_enum.lo: ../include/net-snmp/library/mib.h
+./snmp_enum.lo: ../include/net-snmp/mib_api.h
+./snmp_enum.lo: ../include/net-snmp/library/parse.h
+./snmp_enum.lo: ../include/net-snmp/library/oid_stash.h
 ./snmp_enum.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmp_enum.lo: ../include/net-snmp/library/snmp.h
 ./snmp_enum.lo: ../include/net-snmp/library/snmp-tc.h
@@ -1562,262 +2009,37 @@
 ./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
-./snmp_logging.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_logging.lo: ../include/net-snmp/system/linux.h
-./snmp_logging.lo: ../include/net-snmp/system/sysv.h
-./snmp_logging.lo: ../include/net-snmp/system/generic.h
-./snmp_logging.lo: ../include/net-snmp/machine/generic.h
-./snmp_logging.lo: ../include/net-snmp/types.h
-./snmp_logging.lo: ../include/net-snmp/definitions.h
-./snmp_logging.lo: ../include/net-snmp/library/snmp_api.h
-./snmp_logging.lo: ../include/net-snmp/library/asn1.h
-./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_client.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
-./snmp_logging.lo: ../include/net-snmp/library/snmp_parse_args.h
-./snmp_logging.lo: ../include/net-snmp/library/snmp_enum.h
-./snmp_logging.lo: ../include/net-snmp/library/vacm.h
-./snmp_logging.lo: ../include/net-snmp/utilities.h
-./snmp_logging.lo: ../include/net-snmp/library/system.h
-./snmp_logging.lo: ../include/net-snmp/library/tools.h
-./snmp_logging.lo: ../include/net-snmp/library/int64.h
-./snmp_logging.lo: ../include/net-snmp/library/mt_support.h
-./snmp_logging.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmp_logging.lo: ../include/net-snmp/library/callback.h
-./snmp_logging.lo: ../include/net-snmp/library/data_list.h
-./snmp_logging.lo: ../include/net-snmp/library/oid_stash.h
-./snmp_logging.lo: ../include/net-snmp/library/check_varbind.h
-./snmp_logging.lo: ../include/net-snmp/library/container.h
-./snmp_logging.lo: ../include/net-snmp/library/factory.h
-./snmp_logging.lo: ../include/net-snmp/library/container_binary_array.h
-./snmp_logging.lo: ../include/net-snmp/library/container_list_ssll.h
-./snmp_logging.lo: ../include/net-snmp/library/container_iterator.h
-./snmp_logging.lo: ../include/net-snmp/library/container.h
-./snmp_logging.lo: ../include/net-snmp/library/snmp_assert.h
-./snmp_logging.lo: ../include/net-snmp/version.h
-./snmp_parse_args.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_parse_args.lo: ../include/net-snmp/system/linux.h
-./snmp_parse_args.lo: ../include/net-snmp/system/sysv.h
-./snmp_parse_args.lo: ../include/net-snmp/system/generic.h
-./snmp_parse_args.lo: ../include/net-snmp/machine/generic.h
-./snmp_parse_args.lo: ../include/net-snmp/types.h
-./snmp_parse_args.lo: ../include/net-snmp/definitions.h
-./snmp_parse_args.lo: ../include/net-snmp/library/snmp_api.h
-./snmp_parse_args.lo: ../include/net-snmp/library/asn1.h
-./snmp_parse_args.lo: ../include/net-snmp/library/snmp_impl.h
-./snmp_parse_args.lo: ../include/net-snmp/library/snmp.h
-./snmp_parse_args.lo: ../include/net-snmp/library/snmp-tc.h
-./snmp_parse_args.lo: ../include/net-snmp/output_api.h
-./snmp_parse_args.lo: ../include/net-snmp/library/snmp_client.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/utilities.h
-./snmp_parse_args.lo: ../include/net-snmp/library/system.h
-./snmp_parse_args.lo: ../include/net-snmp/library/tools.h
-./snmp_parse_args.lo: ../include/net-snmp/library/int64.h
-./snmp_parse_args.lo: ../include/net-snmp/library/mt_support.h
-./snmp_parse_args.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmp_parse_args.lo: ../include/net-snmp/library/callback.h
-./snmp_parse_args.lo: ../include/net-snmp/library/data_list.h
-./snmp_parse_args.lo: ../include/net-snmp/library/oid_stash.h
-./snmp_parse_args.lo: ../include/net-snmp/library/check_varbind.h
-./snmp_parse_args.lo: ../include/net-snmp/library/container.h
-./snmp_parse_args.lo: ../include/net-snmp/library/factory.h
-./snmp_parse_args.lo: ../include/net-snmp/library/container_binary_array.h
-./snmp_parse_args.lo: ../include/net-snmp/library/container_list_ssll.h
-./snmp_parse_args.lo: ../include/net-snmp/library/container_iterator.h
-./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/mib.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/library/parse.h
-./snmp_parse_args.lo: ../include/net-snmp/library/snmpv3.h
-./snmp_parse_args.lo: ../include/net-snmp/library/transform_oids.h
-./snmp_secmod.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_secmod.lo: ../include/net-snmp/system/linux.h
-./snmp_secmod.lo: ../include/net-snmp/system/sysv.h
-./snmp_secmod.lo: ../include/net-snmp/system/generic.h
-./snmp_secmod.lo: ../include/net-snmp/machine/generic.h
-./snmp_secmod.lo: ../include/net-snmp/types.h
-./snmp_secmod.lo: ../include/net-snmp/definitions.h
-./snmp_secmod.lo: ../include/net-snmp/library/snmp_api.h
-./snmp_secmod.lo: ../include/net-snmp/library/asn1.h
-./snmp_secmod.lo: ../include/net-snmp/library/snmp_impl.h
-./snmp_secmod.lo: ../include/net-snmp/library/snmp.h
-./snmp_secmod.lo: ../include/net-snmp/library/snmp-tc.h
-./snmp_secmod.lo: ../include/net-snmp/output_api.h
-./snmp_secmod.lo: ../include/net-snmp/library/snmp_client.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
-./snmp_secmod.lo: ../include/net-snmp/library/snmp_parse_args.h
-./snmp_secmod.lo: ../include/net-snmp/library/snmp_enum.h
-./snmp_secmod.lo: ../include/net-snmp/library/vacm.h
-./snmp_secmod.lo: ../include/net-snmp/utilities.h
-./snmp_secmod.lo: ../include/net-snmp/library/system.h
-./snmp_secmod.lo: ../include/net-snmp/library/tools.h
-./snmp_secmod.lo: ../include/net-snmp/library/int64.h
-./snmp_secmod.lo: ../include/net-snmp/library/mt_support.h
-./snmp_secmod.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmp_secmod.lo: ../include/net-snmp/library/callback.h
-./snmp_secmod.lo: ../include/net-snmp/library/data_list.h
-./snmp_secmod.lo: ../include/net-snmp/library/oid_stash.h
-./snmp_secmod.lo: ../include/net-snmp/library/check_varbind.h
-./snmp_secmod.lo: ../include/net-snmp/library/container.h
-./snmp_secmod.lo: ../include/net-snmp/library/factory.h
-./snmp_secmod.lo: ../include/net-snmp/library/container_binary_array.h
-./snmp_secmod.lo: ../include/net-snmp/library/container_list_ssll.h
-./snmp_secmod.lo: ../include/net-snmp/library/container_iterator.h
-./snmp_secmod.lo: ../include/net-snmp/library/container.h
-./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/snmp_transport.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/system/linux.h
-./snmp_service.lo: ../include/net-snmp/system/sysv.h
-./snmp_service.lo: ../include/net-snmp/system/generic.h
-./snmp_service.lo: ../include/net-snmp/machine/generic.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/snmp_api.h
-./snmp_service.lo: ../include/net-snmp/library/asn1.h
-./snmp_service.lo: ../include/net-snmp/library/snmp_impl.h
-./snmp_service.lo: ../include/net-snmp/library/snmp.h
-./snmp_service.lo: ../include/net-snmp/library/snmp-tc.h
-./snmp_service.lo: ../include/net-snmp/utilities.h
-./snmp_service.lo: ../include/net-snmp/library/snmp_client.h
-./snmp_service.lo: ../include/net-snmp/library/system.h
-./snmp_service.lo: ../include/net-snmp/library/tools.h
-./snmp_service.lo: ../include/net-snmp/library/int64.h
-./snmp_service.lo: ../include/net-snmp/library/mt_support.h
-./snmp_service.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmp_service.lo: ../include/net-snmp/library/callback.h
-./snmp_service.lo: ../include/net-snmp/library/data_list.h
-./snmp_service.lo: ../include/net-snmp/library/oid_stash.h
-./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
-./snmp_service.lo: ../include/net-snmp/library/container.h
-./snmp_service.lo: ../include/net-snmp/library/snmp_assert.h
-./snmp_service.lo: ../include/net-snmp/version.h
-./snmp_service.lo: ../include/net-snmp/session_api.h
-./snmp_service.lo: ../include/net-snmp/library/snmp_transport.h
-./snmp_service.lo: ../include/net-snmp/library/snmp_service.h
-./snmp_service.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./snmp_service.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_service.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_service.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmp_service.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./snmp_service.lo: ../include/net-snmp/pdu_api.h
-./snmp_service.lo: ../include/net-snmp/mib_api.h
-./snmp_service.lo: ../include/net-snmp/library/mib.h
-./snmp_service.lo: ../include/net-snmp/library/parse.h
-./snmp_service.lo: ../include/net-snmp/varbind_api.h
-./snmp_service.lo: ../include/net-snmp/config_api.h
-./snmp_service.lo: ../include/net-snmp/library/read_config.h
-./snmp_service.lo: ../include/net-snmp/library/default_store.h
-./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
-./snmp_service.lo: ../include/net-snmp/library/keytools.h
-./snmp_service.lo: ../include/net-snmp/library/scapi.h
-./snmp_service.lo: ../include/net-snmp/library/lcd_time.h
-./snmp_service.lo: ../include/net-snmp/library/snmp_secmod.h
-./snmp_service.lo: ../include/net-snmp/library/snmpv3-security-includes.h
-./snmp_service.lo: ../include/net-snmp/library/snmpusm.h
-./snmp_transport.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_transport.lo: ../include/net-snmp/system/linux.h
-./snmp_transport.lo: ../include/net-snmp/system/sysv.h
-./snmp_transport.lo: ../include/net-snmp/system/generic.h
-./snmp_transport.lo: ../include/net-snmp/machine/generic.h
-./snmp_transport.lo: ../include/net-snmp/output_api.h
-./snmp_transport.lo: ../include/net-snmp/types.h
-./snmp_transport.lo: ../include/net-snmp/definitions.h
-./snmp_transport.lo: ../include/net-snmp/library/snmp_api.h
-./snmp_transport.lo: ../include/net-snmp/library/asn1.h
-./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_client.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
-./snmp_transport.lo: ../include/net-snmp/library/int64.h
-./snmp_transport.lo: ../include/net-snmp/library/mt_support.h
-./snmp_transport.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmp_transport.lo: ../include/net-snmp/library/callback.h
-./snmp_transport.lo: ../include/net-snmp/library/data_list.h
-./snmp_transport.lo: ../include/net-snmp/library/oid_stash.h
-./snmp_transport.lo: ../include/net-snmp/library/check_varbind.h
-./snmp_transport.lo: ../include/net-snmp/library/container.h
-./snmp_transport.lo: ../include/net-snmp/library/factory.h
-./snmp_transport.lo: ../include/net-snmp/library/container_binary_array.h
-./snmp_transport.lo: ../include/net-snmp/library/container_list_ssll.h
-./snmp_transport.lo: ../include/net-snmp/library/container_iterator.h
-./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/snmp_transport.h
-./snmp_transport.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./snmp_transport.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./snmp_transport.lo: ../include/net-snmp/library/snmpIPXDomain.h
-./snmp_transport.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./snmp_transport.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
-./snmp_transport.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
-./snmp_transport.lo: ../include/net-snmp/library/snmp_service.h
-./snmp_version.lo: ../include/net-snmp/net-snmp-config.h
-./snmp_version.lo: ../include/net-snmp/system/linux.h
-./snmp_version.lo: ../include/net-snmp/system/sysv.h
-./snmp_version.lo: ../include/net-snmp/system/generic.h
-./snmp_version.lo: ../include/net-snmp/machine/generic.h
-./snmp_version.lo: ../include/net-snmp/version.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/system/linux.h
-./snmpksm.lo: ../include/net-snmp/system/sysv.h
-./snmpksm.lo: ../include/net-snmp/system/generic.h
-./snmpksm.lo: ../include/net-snmp/machine/generic.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
+./snmpksm.lo: ../include/net-snmp/varbind_api.h
+./snmpksm.lo: ../include/net-snmp/library/snmp_client.h
+./snmpksm.lo: ../include/net-snmp/pdu_api.h
 ./snmpksm.lo: ../include/net-snmp/library/asn1.h
+./snmpksm.lo: ../include/net-snmp/session_api.h
+./snmpksm.lo: ../include/net-snmp/library/callback.h
+./snmpksm.lo: ../include/net-snmp/library/snmp_transport.h
+./snmpksm.lo: ../include/net-snmp/library/snmp_service.h
+./snmpksm.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpksm.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpksm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpksm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpksm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpksm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpksm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpksm.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpksm.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpksm.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./snmpksm.lo: ../include/net-snmp/library/parse.h
+./snmpksm.lo: ../include/net-snmp/library/oid_stash.h
+./snmpksm.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpksm.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpksm.lo: ../include/net-snmp/library/snmp.h
 ./snmpksm.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpksm.lo: ../include/net-snmp/library/snmp_client.h
 ./snmpksm.lo: ../include/net-snmp/library/snmp_debug.h
 ./snmpksm.lo: ../include/net-snmp/library/snmp_logging.h
 ./snmpksm.lo: ../include/net-snmp/config_api.h
@@ -1832,9 +2054,7 @@
 ./snmpksm.lo: ../include/net-snmp/library/int64.h
 ./snmpksm.lo: ../include/net-snmp/library/mt_support.h
 ./snmpksm.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpksm.lo: ../include/net-snmp/library/callback.h
 ./snmpksm.lo: ../include/net-snmp/library/data_list.h
-./snmpksm.lo: ../include/net-snmp/library/oid_stash.h
 ./snmpksm.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpksm.lo: ../include/net-snmp/library/container.h
 ./snmpksm.lo: ../include/net-snmp/library/factory.h
@@ -1849,24 +2069,519 @@
 ./snmpksm.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpksm.lo: ../include/net-snmp/library/scapi.h
 ./snmpksm.lo: ../include/net-snmp/library/snmp_secmod.h
-./snmpksm.lo: ../include/net-snmp/library/snmp_transport.h
 ./snmpksm.lo: ../include/net-snmp/library/snmpksm.h
+./snmp_logging.lo: ../include/net-snmp/net-snmp-config.h
+./snmp_logging.lo: ../include/net-snmp/net-snmp-features.h
+./snmp_logging.lo: ../include/net-snmp/types.h
+./snmp_logging.lo: ../include/net-snmp/library/oid.h
+./snmp_logging.lo: ../include/net-snmp/library/types.h
+./snmp_logging.lo: ../include/net-snmp/definitions.h
+./snmp_logging.lo: ../include/net-snmp/library/snmp_api.h
+./snmp_logging.lo: ../include/net-snmp/varbind_api.h
+./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
+./snmp_logging.lo: ../include/net-snmp/library/snmp_service.h
+./snmp_logging.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp_logging.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp_logging.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_logging.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp_logging.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_logging.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp_logging.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp_logging.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp_logging.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp_logging.lo: ../include/net-snmp/library/mib.h
+./snmp_logging.lo: ../include/net-snmp/mib_api.h
+./snmp_logging.lo: ../include/net-snmp/library/parse.h
+./snmp_logging.lo: ../include/net-snmp/library/oid_stash.h
+./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/config_api.h
+./snmp_logging.lo: ../include/net-snmp/library/read_config.h
+./snmp_logging.lo: ../include/net-snmp/library/default_store.h
+./snmp_logging.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmp_logging.lo: ../include/net-snmp/library/snmp_enum.h
+./snmp_logging.lo: ../include/net-snmp/library/vacm.h
+./snmp_logging.lo: ../include/net-snmp/utilities.h
+./snmp_logging.lo: ../include/net-snmp/library/system.h
+./snmp_logging.lo: ../include/net-snmp/library/tools.h
+./snmp_logging.lo: ../include/net-snmp/library/int64.h
+./snmp_logging.lo: ../include/net-snmp/library/mt_support.h
+./snmp_logging.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmp_logging.lo: ../include/net-snmp/library/data_list.h
+./snmp_logging.lo: ../include/net-snmp/library/check_varbind.h
+./snmp_logging.lo: ../include/net-snmp/library/container.h
+./snmp_logging.lo: ../include/net-snmp/library/factory.h
+./snmp_logging.lo: ../include/net-snmp/library/container_binary_array.h
+./snmp_logging.lo: ../include/net-snmp/library/container_list_ssll.h
+./snmp_logging.lo: ../include/net-snmp/library/container_iterator.h
+./snmp_logging.lo: ../include/net-snmp/library/container.h
+./snmp_logging.lo: ../include/net-snmp/library/snmp_assert.h
+./snmp_logging.lo: ../include/net-snmp/version.h
+./snmp_openssl.lo: ../include/net-snmp/net-snmp-config.h
+./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
+./snmp_openssl.lo: ../include/net-snmp/library/snmp_service.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp_openssl.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp_openssl.lo: ../include/net-snmp/library/mib.h
+./snmp_openssl.lo: ../include/net-snmp/mib_api.h
+./snmp_openssl.lo: ../include/net-snmp/library/parse.h
+./snmp_openssl.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_openssl.lo: ../include/net-snmp/net-snmp-features.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmp_impl.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmp.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmp-tc.h
+./snmp_openssl.lo: ../include/net-snmp/library/getopt.h
+./snmp_openssl.lo: ../include/net-snmp/utilities.h
+./snmp_openssl.lo: ../include/net-snmp/library/system.h
+./snmp_openssl.lo: ../include/net-snmp/library/tools.h
+./snmp_openssl.lo: ../include/net-snmp/library/int64.h
+./snmp_openssl.lo: ../include/net-snmp/library/mt_support.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmp_openssl.lo: ../include/net-snmp/library/data_list.h
+./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/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
+./snmp_openssl.lo: ../include/net-snmp/library/container.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmp_assert.h
+./snmp_openssl.lo: ../include/net-snmp/version.h
+./snmp_openssl.lo: ../include/net-snmp/config_api.h
+./snmp_openssl.lo: ../include/net-snmp/library/read_config.h
+./snmp_openssl.lo: ../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmpv3.h
+./snmp_openssl.lo: ../include/net-snmp/library/transform_oids.h
+./snmp_openssl.lo: ../include/net-snmp/library/keytools.h
+./snmp_openssl.lo: ../include/net-snmp/library/scapi.h
+./snmp_openssl.lo: ../include/net-snmp/library/lcd_time.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmp_secmod.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmptsm.h
+./snmp_openssl.lo: ../include/net-snmp/library/snmpusm.h
+./snmp_parse_args.lo: ../include/net-snmp/net-snmp-config.h
+./snmp_parse_args.lo: ../include/net-snmp/net-snmp-includes.h
+./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
+./snmp_parse_args.lo: ../include/net-snmp/library/snmp_service.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp_parse_args.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp_parse_args.lo: ../include/net-snmp/library/mib.h
+./snmp_parse_args.lo: ../include/net-snmp/mib_api.h
+./snmp_parse_args.lo: ../include/net-snmp/library/parse.h
+./snmp_parse_args.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_parse_args.lo: ../include/net-snmp/net-snmp-features.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmp_impl.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmp.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmp-tc.h
+./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
+./snmp_parse_args.lo: ../include/net-snmp/library/int64.h
+./snmp_parse_args.lo: ../include/net-snmp/library/mt_support.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmp_parse_args.lo: ../include/net-snmp/library/data_list.h
+./snmp_parse_args.lo: ../include/net-snmp/library/check_varbind.h
+./snmp_parse_args.lo: ../include/net-snmp/library/container.h
+./snmp_parse_args.lo: ../include/net-snmp/library/factory.h
+./snmp_parse_args.lo: ../include/net-snmp/library/container_binary_array.h
+./snmp_parse_args.lo: ../include/net-snmp/library/container_list_ssll.h
+./snmp_parse_args.lo: ../include/net-snmp/library/container_iterator.h
+./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/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/snmptsm.h
+./snmp_parse_args.lo: ../include/net-snmp/library/snmpusm.h
+./snmp_secmod.lo: ../include/net-snmp/net-snmp-config.h
+./snmp_secmod.lo: ../include/net-snmp/types.h
+./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
+./snmp_secmod.lo: ../include/net-snmp/varbind_api.h
+./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
+./snmp_secmod.lo: ../include/net-snmp/library/snmp_service.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp_secmod.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp_secmod.lo: ../include/net-snmp/library/mib.h
+./snmp_secmod.lo: ../include/net-snmp/mib_api.h
+./snmp_secmod.lo: ../include/net-snmp/library/parse.h
+./snmp_secmod.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_secmod.lo: ../include/net-snmp/net-snmp-features.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmp_impl.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmp.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmp-tc.h
+./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
+./snmp_secmod.lo: ../include/net-snmp/library/snmp_parse_args.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmp_enum.h
+./snmp_secmod.lo: ../include/net-snmp/library/vacm.h
+./snmp_secmod.lo: ../include/net-snmp/utilities.h
+./snmp_secmod.lo: ../include/net-snmp/library/system.h
+./snmp_secmod.lo: ../include/net-snmp/library/tools.h
+./snmp_secmod.lo: ../include/net-snmp/library/int64.h
+./snmp_secmod.lo: ../include/net-snmp/library/mt_support.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmp_secmod.lo: ../include/net-snmp/library/data_list.h
+./snmp_secmod.lo: ../include/net-snmp/library/check_varbind.h
+./snmp_secmod.lo: ../include/net-snmp/library/container.h
+./snmp_secmod.lo: ../include/net-snmp/library/factory.h
+./snmp_secmod.lo: ../include/net-snmp/library/container_binary_array.h
+./snmp_secmod.lo: ../include/net-snmp/library/container_list_ssll.h
+./snmp_secmod.lo: ../include/net-snmp/library/container_iterator.h
+./snmp_secmod.lo: ../include/net-snmp/library/container.h
+./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/snmptsm.h
+./snmp_secmod.lo: ../include/net-snmp/library/snmpusm.h snmpsm_init.h
+./snmp_secmod.lo: snmpsm_shutdown.h
+./snmp_service.lo: ../include/net-snmp/net-snmp-config.h
+./snmp_service.lo: ../include/net-snmp/net-snmp-includes.h
+./snmp_service.lo: ../include/net-snmp/definitions.h
+./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
+./snmp_service.lo: ../include/net-snmp/library/snmp_service.h
+./snmp_service.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp_service.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp_service.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_service.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp_service.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_service.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp_service.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp_service.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp_service.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp_service.lo: ../include/net-snmp/library/mib.h
+./snmp_service.lo: ../include/net-snmp/mib_api.h
+./snmp_service.lo: ../include/net-snmp/library/parse.h
+./snmp_service.lo: ../include/net-snmp/library/oid_stash.h
+./snmp_service.lo: ../include/net-snmp/net-snmp-features.h
+./snmp_service.lo: ../include/net-snmp/library/snmp_impl.h
+./snmp_service.lo: ../include/net-snmp/library/snmp.h
+./snmp_service.lo: ../include/net-snmp/library/snmp-tc.h
+./snmp_service.lo: ../include/net-snmp/library/getopt.h
+./snmp_service.lo: ../include/net-snmp/utilities.h
+./snmp_service.lo: ../include/net-snmp/library/system.h
+./snmp_service.lo: ../include/net-snmp/library/tools.h
+./snmp_service.lo: ../include/net-snmp/library/int64.h
+./snmp_service.lo: ../include/net-snmp/library/mt_support.h
+./snmp_service.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmp_service.lo: ../include/net-snmp/library/data_list.h
+./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/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
+./snmp_service.lo: ../include/net-snmp/library/container.h
+./snmp_service.lo: ../include/net-snmp/library/snmp_assert.h
+./snmp_service.lo: ../include/net-snmp/version.h
+./snmp_service.lo: ../include/net-snmp/config_api.h
+./snmp_service.lo: ../include/net-snmp/library/read_config.h
+./snmp_service.lo: ../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./snmp_service.lo: ../include/net-snmp/library/snmpv3.h
+./snmp_service.lo: ../include/net-snmp/library/transform_oids.h
+./snmp_service.lo: ../include/net-snmp/library/keytools.h
+./snmp_service.lo: ../include/net-snmp/library/scapi.h
+./snmp_service.lo: ../include/net-snmp/library/lcd_time.h
+./snmp_service.lo: ../include/net-snmp/library/snmp_secmod.h
+./snmp_service.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmp_service.lo: ../include/net-snmp/library/snmptsm.h
+./snmp_service.lo: ../include/net-snmp/library/snmpusm.h
+./snmp-tc.lo: ../include/net-snmp/net-snmp-config.h
+./snmp-tc.lo: ../include/net-snmp/net-snmp-features.h
+./snmp-tc.lo: ../include/net-snmp/types.h
+./snmp-tc.lo: ../include/net-snmp/library/oid.h
+./snmp-tc.lo: ../include/net-snmp/library/types.h
+./snmp-tc.lo: ../include/net-snmp/definitions.h
+./snmp-tc.lo: ../include/net-snmp/library/snmp_api.h
+./snmp-tc.lo: ../include/net-snmp/varbind_api.h
+./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
+./snmp-tc.lo: ../include/net-snmp/library/snmp_service.h
+./snmp-tc.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp-tc.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp-tc.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp-tc.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp-tc.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp-tc.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp-tc.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp-tc.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp-tc.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp-tc.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./snmp-tc.lo: ../include/net-snmp/library/parse.h
+./snmp-tc.lo: ../include/net-snmp/library/oid_stash.h
+./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
+./snmp_transport.lo: ../include/net-snmp/net-snmp-config.h
+./snmp_transport.lo: ../include/net-snmp/net-snmp-features.h
+./snmp_transport.lo: ../include/net-snmp/types.h
+./snmp_transport.lo: ../include/net-snmp/library/oid.h
+./snmp_transport.lo: ../include/net-snmp/library/types.h
+./snmp_transport.lo: ../include/net-snmp/definitions.h
+./snmp_transport.lo: ../include/net-snmp/library/snmp_api.h
+./snmp_transport.lo: ../include/net-snmp/varbind_api.h
+./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
+./snmp_transport.lo: ../include/net-snmp/library/snmp_service.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmp_transport.lo: ../include/net-snmp/library/ucd_compat.h
+./snmp_transport.lo: ../include/net-snmp/library/mib.h
+./snmp_transport.lo: ../include/net-snmp/mib_api.h
+./snmp_transport.lo: ../include/net-snmp/library/parse.h
+./snmp_transport.lo: ../include/net-snmp/library/oid_stash.h
+./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/utilities.h
+./snmp_transport.lo: ../include/net-snmp/library/system.h
+./snmp_transport.lo: ../include/net-snmp/library/tools.h
+./snmp_transport.lo: ../include/net-snmp/library/int64.h
+./snmp_transport.lo: ../include/net-snmp/library/mt_support.h
+./snmp_transport.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmp_transport.lo: ../include/net-snmp/library/data_list.h
+./snmp_transport.lo: ../include/net-snmp/library/check_varbind.h
+./snmp_transport.lo: ../include/net-snmp/library/container.h
+./snmp_transport.lo: ../include/net-snmp/library/factory.h
+./snmp_transport.lo: ../include/net-snmp/library/container_binary_array.h
+./snmp_transport.lo: ../include/net-snmp/library/container_list_ssll.h
+./snmp_transport.lo: ../include/net-snmp/library/container_iterator.h
+./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/snmpUDPDomain.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./snmp_transport.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
+./snmp_transport.lo: ../include/net-snmp/library/read_config.h
+./snmp_transport.lo: ../include/net-snmp/config_api.h
+./snmp_transport.lo: ../include/net-snmp/library/snmp_parse_args.h
+./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-features.h
+./snmptsm.lo: ../include/net-snmp/net-snmp-includes.h
+./snmptsm.lo: ../include/net-snmp/definitions.h ../include/net-snmp/types.h
+./snmptsm.lo: ../include/net-snmp/library/oid.h
+./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
+./snmptsm.lo: ../include/net-snmp/library/snmp_service.h
+./snmptsm.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmptsm.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmptsm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmptsm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmptsm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmptsm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmptsm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmptsm.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmptsm.lo: ../include/net-snmp/library/ucd_compat.h
+./snmptsm.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./snmptsm.lo: ../include/net-snmp/library/parse.h
+./snmptsm.lo: ../include/net-snmp/library/oid_stash.h
+./snmptsm.lo: ../include/net-snmp/library/snmp_impl.h
+./snmptsm.lo: ../include/net-snmp/library/snmp.h
+./snmptsm.lo: ../include/net-snmp/library/snmp-tc.h
+./snmptsm.lo: ../include/net-snmp/library/getopt.h
+./snmptsm.lo: ../include/net-snmp/utilities.h
+./snmptsm.lo: ../include/net-snmp/library/system.h
+./snmptsm.lo: ../include/net-snmp/library/tools.h
+./snmptsm.lo: ../include/net-snmp/library/int64.h
+./snmptsm.lo: ../include/net-snmp/library/mt_support.h
+./snmptsm.lo: ../include/net-snmp/library/snmp_alarm.h
+./snmptsm.lo: ../include/net-snmp/library/data_list.h
+./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/container_binary_array.h
+./snmptsm.lo: ../include/net-snmp/library/container_list_ssll.h
+./snmptsm.lo: ../include/net-snmp/library/container_iterator.h
+./snmptsm.lo: ../include/net-snmp/library/container.h
+./snmptsm.lo: ../include/net-snmp/library/snmp_assert.h
+./snmptsm.lo: ../include/net-snmp/version.h ../include/net-snmp/config_api.h
+./snmptsm.lo: ../include/net-snmp/library/read_config.h
+./snmptsm.lo: ../include/net-snmp/library/default_store.h
+./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/snmpv3_api.h
+./snmptsm.lo: ../include/net-snmp/library/snmpv3.h
+./snmptsm.lo: ../include/net-snmp/library/transform_oids.h
+./snmptsm.lo: ../include/net-snmp/library/keytools.h
+./snmptsm.lo: ../include/net-snmp/library/scapi.h
+./snmptsm.lo: ../include/net-snmp/library/lcd_time.h
+./snmptsm.lo: ../include/net-snmp/library/snmp_secmod.h
+./snmptsm.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./snmptsm.lo: ../include/net-snmp/library/snmptsm.h
+./snmptsm.lo: ../include/net-snmp/library/snmpusm.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-features.h
 ./snmpusm.lo: ../include/net-snmp/types.h
+./snmpusm.lo: ../include/net-snmp/library/oid.h
+./snmpusm.lo: ../include/net-snmp/library/types.h
 ./snmpusm.lo: ../include/net-snmp/definitions.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
+./snmpusm.lo: ../include/net-snmp/library/snmp_service.h
+./snmpusm.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpusm.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpusm.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpusm.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./snmpusm.lo: ../include/net-snmp/library/parse.h
+./snmpusm.lo: ../include/net-snmp/library/oid_stash.h
 ./snmpusm.lo: ../include/net-snmp/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_client.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
@@ -1879,9 +2594,7 @@
 ./snmpusm.lo: ../include/net-snmp/library/int64.h
 ./snmpusm.lo: ../include/net-snmp/library/mt_support.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpusm.lo: ../include/net-snmp/library/callback.h
 ./snmpusm.lo: ../include/net-snmp/library/data_list.h
-./snmpusm.lo: ../include/net-snmp/library/oid_stash.h
 ./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
@@ -1896,24 +2609,39 @@
 ./snmpusm.lo: ../include/net-snmp/library/lcd_time.h
 ./snmpusm.lo: ../include/net-snmp/library/scapi.h
 ./snmpusm.lo: ../include/net-snmp/library/snmp_secmod.h
-./snmpusm.lo: ../include/net-snmp/library/snmp_transport.h
 ./snmpusm.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpv3.lo: ../include/net-snmp/net-snmp-config.h
-./snmpv3.lo: ../include/net-snmp/system/linux.h
-./snmpv3.lo: ../include/net-snmp/system/sysv.h
-./snmpv3.lo: ../include/net-snmp/system/generic.h
-./snmpv3.lo: ../include/net-snmp/machine/generic.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/library/asn1.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
+./snmpv3.lo: ../include/net-snmp/library/snmp_service.h
+./snmpv3.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./snmpv3.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./snmpv3.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./snmpv3.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./snmpv3.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./snmpv3.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./snmpv3.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./snmpv3.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./snmpv3.lo: ../include/net-snmp/library/ucd_compat.h
+./snmpv3.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./snmpv3.lo: ../include/net-snmp/library/parse.h
+./snmpv3.lo: ../include/net-snmp/library/oid_stash.h
+./snmpv3.lo: ../include/net-snmp/net-snmp-features.h
 ./snmpv3.lo: ../include/net-snmp/library/snmp_impl.h
 ./snmpv3.lo: ../include/net-snmp/library/snmp.h
 ./snmpv3.lo: ../include/net-snmp/library/snmp-tc.h
-./snmpv3.lo: ../include/net-snmp/output_api.h
-./snmpv3.lo: ../include/net-snmp/library/snmp_client.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
@@ -1926,9 +2654,7 @@
 ./snmpv3.lo: ../include/net-snmp/library/int64.h
 ./snmpv3.lo: ../include/net-snmp/library/mt_support.h
 ./snmpv3.lo: ../include/net-snmp/library/snmp_alarm.h
-./snmpv3.lo: ../include/net-snmp/library/callback.h
 ./snmpv3.lo: ../include/net-snmp/library/data_list.h
-./snmpv3.lo: ../include/net-snmp/library/oid_stash.h
 ./snmpv3.lo: ../include/net-snmp/library/check_varbind.h
 ./snmpv3.lo: ../include/net-snmp/library/container.h
 ./snmpv3.lo: ../include/net-snmp/library/factory.h
@@ -1943,85 +2669,190 @@
 ./snmpv3.lo: ../include/net-snmp/library/scapi.h
 ./snmpv3.lo: ../include/net-snmp/library/keytools.h
 ./snmpv3.lo: ../include/net-snmp/library/snmp_secmod.h
-./snmpv3.lo: ../include/net-snmp/library/snmp_transport.h
 ./snmpv3.lo: ../include/net-snmp/library/snmpusm.h
 ./snmpv3.lo: ../include/net-snmp/library/transform_oids.h
+./snmp_version.lo: ../include/net-snmp/net-snmp-config.h
+./snmp_version.lo: ../include/net-snmp/version.h
 ./snprintf.lo: ../include/net-snmp/net-snmp-config.h
-./snprintf.lo: ../include/net-snmp/system/linux.h
-./snprintf.lo: ../include/net-snmp/system/sysv.h
-./snprintf.lo: ../include/net-snmp/system/generic.h
-./snprintf.lo: ../include/net-snmp/machine/generic.h
 ./strlcat.lo: ../include/net-snmp/net-snmp-config.h
-./strlcat.lo: ../include/net-snmp/system/linux.h
-./strlcat.lo: ../include/net-snmp/system/sysv.h
-./strlcat.lo: ../include/net-snmp/system/generic.h
-./strlcat.lo: ../include/net-snmp/machine/generic.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
+./strlcat.lo: ../include/net-snmp/varbind_api.h
+./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
+./strlcat.lo: ../include/net-snmp/library/snmp_service.h
+./strlcat.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./strlcat.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./strlcat.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./strlcat.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./strlcat.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./strlcat.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./strlcat.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./strlcat.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./strlcat.lo: ../include/net-snmp/library/ucd_compat.h
+./strlcat.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./strlcat.lo: ../include/net-snmp/library/parse.h
+./strlcat.lo: ../include/net-snmp/library/oid_stash.h
+./strlcat.lo: ../include/net-snmp/net-snmp-features.h
 ./strlcat.lo: ../include/net-snmp/library/snmp_impl.h
 ./strlcat.lo: ../include/net-snmp/library/snmp.h
 ./strlcat.lo: ../include/net-snmp/library/snmp-tc.h
 ./strlcpy.lo: ../include/net-snmp/net-snmp-config.h
-./strlcpy.lo: ../include/net-snmp/system/linux.h
-./strlcpy.lo: ../include/net-snmp/system/sysv.h
-./strlcpy.lo: ../include/net-snmp/system/generic.h
-./strlcpy.lo: ../include/net-snmp/machine/generic.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/snmpTCPDomain.h
+./strlcpy.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./strlcpy.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./strlcpy.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./strlcpy.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./strlcpy.lo: ../include/net-snmp/library/snmp_impl.h
+./strlcpy.lo: ../include/net-snmp/library/snmp.h
+./strlcpy.lo: ../include/net-snmp/library/snmp-tc.h
 ./strtok_r.lo: ../include/net-snmp/net-snmp-config.h
-./strtok_r.lo: ../include/net-snmp/system/linux.h
-./strtok_r.lo: ../include/net-snmp/system/sysv.h
-./strtok_r.lo: ../include/net-snmp/system/generic.h
-./strtok_r.lo: ../include/net-snmp/machine/generic.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/snmpTCPDomain.h
+./strtok_r.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./strtok_r.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./strtok_r.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./strtok_r.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./strtok_r.lo: ../include/net-snmp/library/snmp_impl.h
+./strtok_r.lo: ../include/net-snmp/library/snmp.h
+./strtok_r.lo: ../include/net-snmp/library/snmp-tc.h
 ./strtol.lo: ../include/net-snmp/net-snmp-config.h
-./strtol.lo: ../include/net-snmp/system/linux.h
-./strtol.lo: ../include/net-snmp/system/sysv.h
-./strtol.lo: ../include/net-snmp/system/generic.h
-./strtol.lo: ../include/net-snmp/machine/generic.h
 ./strtoul.lo: ../include/net-snmp/net-snmp-config.h
-./strtoul.lo: ../include/net-snmp/system/linux.h
-./strtoul.lo: ../include/net-snmp/system/sysv.h
-./strtoul.lo: ../include/net-snmp/system/generic.h
-./strtoul.lo: ../include/net-snmp/machine/generic.h
 ./strtoull.lo: ../include/net-snmp/net-snmp-config.h
-./strtoull.lo: ../include/net-snmp/system/linux.h
-./strtoull.lo: ../include/net-snmp/system/sysv.h
-./strtoull.lo: ../include/net-snmp/system/generic.h
-./strtoull.lo: ../include/net-snmp/machine/generic.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/snmpTCPDomain.h
+./strtoull.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./strtoull.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./strtoull.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./strtoull.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
 ./strtoull.lo: ../include/net-snmp/library/snmp_impl.h
 ./strtoull.lo: ../include/net-snmp/library/snmp.h
 ./strtoull.lo: ../include/net-snmp/library/snmp-tc.h
 ./strtoull.lo: ../include/net-snmp/library/system.h
 ./system.lo: ../include/net-snmp/net-snmp-config.h
-./system.lo: ../include/net-snmp/system/linux.h
-./system.lo: ../include/net-snmp/system/sysv.h
-./system.lo: ../include/net-snmp/system/generic.h
-./system.lo: ../include/net-snmp/machine/generic.h
+./system.lo: ../include/net-snmp/net-snmp-features.h
 ./system.lo: ../include/net-snmp/types.h
+./system.lo: ../include/net-snmp/library/oid.h
+./system.lo: ../include/net-snmp/library/types.h
 ./system.lo: ../include/net-snmp/definitions.h
 ./system.lo: ../include/net-snmp/library/snmp_api.h
-./system.lo: ../include/net-snmp/library/asn1.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
+./system.lo: ../include/net-snmp/library/snmp_service.h
+./system.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./system.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./system.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./system.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./system.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./system.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./system.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./system.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./system.lo: ../include/net-snmp/library/ucd_compat.h
+./system.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./system.lo: ../include/net-snmp/library/parse.h
+./system.lo: ../include/net-snmp/library/oid_stash.h
 ./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_client.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
 ./system.lo: ../include/net-snmp/library/int64.h
 ./system.lo: ../include/net-snmp/library/mt_support.h
 ./system.lo: ../include/net-snmp/library/snmp_alarm.h
-./system.lo: ../include/net-snmp/library/callback.h
 ./system.lo: ../include/net-snmp/library/data_list.h
-./system.lo: ../include/net-snmp/library/oid_stash.h
 ./system.lo: ../include/net-snmp/library/check_varbind.h
 ./system.lo: ../include/net-snmp/library/container.h
 ./system.lo: ../include/net-snmp/library/factory.h
@@ -2032,128 +2863,69 @@
 ./system.lo: ../include/net-snmp/library/snmp_assert.h
 ./system.lo: ../include/net-snmp/version.h
 ./system.lo: ../include/net-snmp/library/read_config.h
-./test_binary_array.lo: ../include/net-snmp/net-snmp-config.h
-./test_binary_array.lo: ../include/net-snmp/system/linux.h
-./test_binary_array.lo: ../include/net-snmp/system/sysv.h
-./test_binary_array.lo: ../include/net-snmp/system/generic.h
-./test_binary_array.lo: ../include/net-snmp/machine/generic.h
-./test_binary_array.lo: ../include/net-snmp/net-snmp-includes.h
-./test_binary_array.lo: ../include/net-snmp/definitions.h
-./test_binary_array.lo: ../include/net-snmp/types.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_api.h
-./test_binary_array.lo: ../include/net-snmp/library/asn1.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_impl.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp-tc.h
-./test_binary_array.lo: ../include/net-snmp/utilities.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_client.h
-./test_binary_array.lo: ../include/net-snmp/library/system.h
-./test_binary_array.lo: ../include/net-snmp/library/tools.h
-./test_binary_array.lo: ../include/net-snmp/library/int64.h
-./test_binary_array.lo: ../include/net-snmp/library/mt_support.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_alarm.h
-./test_binary_array.lo: ../include/net-snmp/library/callback.h
-./test_binary_array.lo: ../include/net-snmp/library/data_list.h
-./test_binary_array.lo: ../include/net-snmp/library/oid_stash.h
-./test_binary_array.lo: ../include/net-snmp/library/check_varbind.h
-./test_binary_array.lo: ../include/net-snmp/library/container.h
-./test_binary_array.lo: ../include/net-snmp/library/factory.h
-./test_binary_array.lo: ../include/net-snmp/library/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
-./test_binary_array.lo: ../include/net-snmp/library/container.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_assert.h
-./test_binary_array.lo: ../include/net-snmp/version.h
-./test_binary_array.lo: ../include/net-snmp/session_api.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_transport.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_service.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpIPXDomain.h
-./test_binary_array.lo: ../include/net-snmp/library/ucd_compat.h
-./test_binary_array.lo: ../include/net-snmp/pdu_api.h
-./test_binary_array.lo: ../include/net-snmp/mib_api.h
-./test_binary_array.lo: ../include/net-snmp/library/mib.h
-./test_binary_array.lo: ../include/net-snmp/library/parse.h
-./test_binary_array.lo: ../include/net-snmp/varbind_api.h
-./test_binary_array.lo: ../include/net-snmp/config_api.h
-./test_binary_array.lo: ../include/net-snmp/library/read_config.h
-./test_binary_array.lo: ../include/net-snmp/library/default_store.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_parse_args.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_enum.h
-./test_binary_array.lo: ../include/net-snmp/library/vacm.h
-./test_binary_array.lo: ../include/net-snmp/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
-./test_binary_array.lo: ../include/net-snmp/library/keytools.h
-./test_binary_array.lo: ../include/net-snmp/library/scapi.h
-./test_binary_array.lo: ../include/net-snmp/library/lcd_time.h
-./test_binary_array.lo: ../include/net-snmp/library/snmp_secmod.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpv3-security-includes.h
-./test_binary_array.lo: ../include/net-snmp/library/snmpusm.h
+./system.lo: ../include/net-snmp/config_api.h
+./system.lo: ../include/net-snmp/library/default_store.h
+./system.lo: ../include/net-snmp/library/snmp_parse_args.h
+./system.lo: ../include/net-snmp/library/snmp_enum.h
+./system.lo: ../include/net-snmp/library/vacm.h inet_ntop.h
 ./text_utils.lo: ../include/net-snmp/net-snmp-config.h
-./text_utils.lo: ../include/net-snmp/system/linux.h
-./text_utils.lo: ../include/net-snmp/system/sysv.h
-./text_utils.lo: ../include/net-snmp/system/generic.h
-./text_utils.lo: ../include/net-snmp/machine/generic.h
+./text_utils.lo: ../include/net-snmp/net-snmp-features.h
 ./text_utils.lo: ../include/net-snmp/net-snmp-includes.h
 ./text_utils.lo: ../include/net-snmp/definitions.h
 ./text_utils.lo: ../include/net-snmp/types.h
+./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
+./text_utils.lo: ../include/net-snmp/library/snmp_service.h
+./text_utils.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./text_utils.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./text_utils.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./text_utils.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./text_utils.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./text_utils.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./text_utils.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./text_utils.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./text_utils.lo: ../include/net-snmp/library/ucd_compat.h
+./text_utils.lo: ../include/net-snmp/library/mib.h
+./text_utils.lo: ../include/net-snmp/mib_api.h
+./text_utils.lo: ../include/net-snmp/library/parse.h
+./text_utils.lo: ../include/net-snmp/library/oid_stash.h
 ./text_utils.lo: ../include/net-snmp/library/snmp_impl.h
 ./text_utils.lo: ../include/net-snmp/library/snmp.h
 ./text_utils.lo: ../include/net-snmp/library/snmp-tc.h
+./text_utils.lo: ../include/net-snmp/library/getopt.h
 ./text_utils.lo: ../include/net-snmp/utilities.h
-./text_utils.lo: ../include/net-snmp/library/snmp_client.h
 ./text_utils.lo: ../include/net-snmp/library/system.h
 ./text_utils.lo: ../include/net-snmp/library/tools.h
 ./text_utils.lo: ../include/net-snmp/library/int64.h
 ./text_utils.lo: ../include/net-snmp/library/mt_support.h
 ./text_utils.lo: ../include/net-snmp/library/snmp_alarm.h
-./text_utils.lo: ../include/net-snmp/library/callback.h
 ./text_utils.lo: ../include/net-snmp/library/data_list.h
-./text_utils.lo: ../include/net-snmp/library/oid_stash.h
 ./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
 ./text_utils.lo: ../include/net-snmp/library/container.h
 ./text_utils.lo: ../include/net-snmp/library/snmp_assert.h
 ./text_utils.lo: ../include/net-snmp/version.h
-./text_utils.lo: ../include/net-snmp/session_api.h
-./text_utils.lo: ../include/net-snmp/library/snmp_transport.h
-./text_utils.lo: ../include/net-snmp/library/snmp_service.h
-./text_utils.lo: ../include/net-snmp/library/snmpCallbackDomain.h
-./text_utils.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./text_utils.lo: ../include/net-snmp/library/snmpUDPDomain.h
-./text_utils.lo: ../include/net-snmp/library/snmpTCPDomain.h
-./text_utils.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.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
-./text_utils.lo: ../include/net-snmp/pdu_api.h ../include/net-snmp/mib_api.h
-./text_utils.lo: ../include/net-snmp/library/mib.h
-./text_utils.lo: ../include/net-snmp/library/parse.h
-./text_utils.lo: ../include/net-snmp/varbind_api.h
 ./text_utils.lo: ../include/net-snmp/config_api.h
 ./text_utils.lo: ../include/net-snmp/library/read_config.h
 ./text_utils.lo: ../include/net-snmp/library/default_store.h
 ./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
@@ -2162,34 +2934,49 @@
 ./text_utils.lo: ../include/net-snmp/library/lcd_time.h
 ./text_utils.lo: ../include/net-snmp/library/snmp_secmod.h
 ./text_utils.lo: ../include/net-snmp/library/snmpv3-security-includes.h
+./text_utils.lo: ../include/net-snmp/library/snmptsm.h
 ./text_utils.lo: ../include/net-snmp/library/snmpusm.h
 ./text_utils.lo: ../include/net-snmp/library/file_utils.h
 ./text_utils.lo: ../include/net-snmp/library/text_utils.h
 ./tools.lo: ../include/net-snmp/net-snmp-config.h
-./tools.lo: ../include/net-snmp/system/linux.h
-./tools.lo: ../include/net-snmp/system/sysv.h
-./tools.lo: ../include/net-snmp/system/generic.h
-./tools.lo: ../include/net-snmp/machine/generic.h
+./tools.lo: ../include/net-snmp/net-snmp-features.h
 ./tools.lo: ../include/net-snmp/types.h
+./tools.lo: ../include/net-snmp/library/oid.h
+./tools.lo: ../include/net-snmp/library/types.h
 ./tools.lo: ../include/net-snmp/definitions.h
 ./tools.lo: ../include/net-snmp/library/snmp_api.h
-./tools.lo: ../include/net-snmp/library/asn1.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
+./tools.lo: ../include/net-snmp/library/snmp_service.h
+./tools.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./tools.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./tools.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./tools.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./tools.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./tools.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./tools.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./tools.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./tools.lo: ../include/net-snmp/library/ucd_compat.h
+./tools.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./tools.lo: ../include/net-snmp/library/parse.h
+./tools.lo: ../include/net-snmp/library/oid_stash.h
 ./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_client.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
 ./tools.lo: ../include/net-snmp/library/int64.h
 ./tools.lo: ../include/net-snmp/library/mt_support.h
 ./tools.lo: ../include/net-snmp/library/snmp_alarm.h
-./tools.lo: ../include/net-snmp/library/callback.h
 ./tools.lo: ../include/net-snmp/library/data_list.h
-./tools.lo: ../include/net-snmp/library/oid_stash.h
 ./tools.lo: ../include/net-snmp/library/check_varbind.h
 ./tools.lo: ../include/net-snmp/library/container.h
 ./tools.lo: ../include/net-snmp/library/factory.h
@@ -2198,59 +2985,849 @@
 ./tools.lo: ../include/net-snmp/library/container_iterator.h
 ./tools.lo: ../include/net-snmp/library/container.h
 ./tools.lo: ../include/net-snmp/library/snmp_assert.h
-./tools.lo: ../include/net-snmp/version.h ../include/net-snmp/library/mib.h
-./tools.lo: ../include/net-snmp/library/scapi.h
+./tools.lo: ../include/net-snmp/version.h ../include/net-snmp/library/scapi.h
 ./ucd_compat.lo: ../include/net-snmp/net-snmp-config.h
-./ucd_compat.lo: ../include/net-snmp/system/linux.h
-./ucd_compat.lo: ../include/net-snmp/system/sysv.h
-./ucd_compat.lo: ../include/net-snmp/system/generic.h
-./ucd_compat.lo: ../include/net-snmp/machine/generic.h
+./ucd_compat.lo: ../include/net-snmp/net-snmp-features.h
 ./ucd_compat.lo: ../include/net-snmp/types.h
+./ucd_compat.lo: ../include/net-snmp/library/oid.h
+./ucd_compat.lo: ../include/net-snmp/library/types.h
 ./ucd_compat.lo: ../include/net-snmp/definitions.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmp_api.h
-./ucd_compat.lo: ../include/net-snmp/library/asn1.h
-./ucd_compat.lo: ../include/net-snmp/library/snmp_impl.h
-./ucd_compat.lo: ../include/net-snmp/library/snmp.h
-./ucd_compat.lo: ../include/net-snmp/library/snmp-tc.h
-./ucd_compat.lo: ../include/net-snmp/session_api.h
+./ucd_compat.lo: ../include/net-snmp/varbind_api.h
 ./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
 ./ucd_compat.lo: ../include/net-snmp/library/snmp_service.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmpCallbackDomain.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmpUnixDomain.h
-./ucd_compat.lo: ../include/net-snmp/library/snmpUDPDomain.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./ucd_compat.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./ucd_compat.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmpIPXDomain.h
 ./ucd_compat.lo: ../include/net-snmp/library/ucd_compat.h
+./ucd_compat.lo: ../include/net-snmp/library/mib.h
+./ucd_compat.lo: ../include/net-snmp/mib_api.h
+./ucd_compat.lo: ../include/net-snmp/library/parse.h
+./ucd_compat.lo: ../include/net-snmp/library/oid_stash.h
+./ucd_compat.lo: ../include/net-snmp/library/snmp_impl.h
+./ucd_compat.lo: ../include/net-snmp/library/snmp.h
+./ucd_compat.lo: ../include/net-snmp/library/snmp-tc.h
 ./ucd_compat.lo: ../include/net-snmp/config_api.h
 ./ucd_compat.lo: ../include/net-snmp/library/read_config.h
 ./ucd_compat.lo: ../include/net-snmp/library/default_store.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmp_parse_args.h
 ./ucd_compat.lo: ../include/net-snmp/library/snmp_enum.h
 ./ucd_compat.lo: ../include/net-snmp/library/vacm.h
-./ucd_compat.lo: ../include/net-snmp/library/mib.h
 ./vacm.lo: ../include/net-snmp/net-snmp-config.h
-./vacm.lo: ../include/net-snmp/system/linux.h
-./vacm.lo: ../include/net-snmp/system/sysv.h
-./vacm.lo: ../include/net-snmp/system/generic.h
-./vacm.lo: ../include/net-snmp/machine/generic.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/library/asn1.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
+./vacm.lo: ../include/net-snmp/library/snmp_service.h
+./vacm.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./vacm.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./vacm.lo: ../include/net-snmp/library/snmpTCPDomain.h
+./vacm.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./vacm.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./vacm.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./vacm.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./vacm.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./vacm.lo: ../include/net-snmp/library/ucd_compat.h
+./vacm.lo: ../include/net-snmp/library/mib.h ../include/net-snmp/mib_api.h
+./vacm.lo: ../include/net-snmp/library/parse.h
+./vacm.lo: ../include/net-snmp/library/oid_stash.h
+./vacm.lo: ../include/net-snmp/net-snmp-features.h
 ./vacm.lo: ../include/net-snmp/library/snmp_impl.h
 ./vacm.lo: ../include/net-snmp/library/snmp.h
 ./vacm.lo: ../include/net-snmp/library/snmp-tc.h
-./vacm.lo: ../include/net-snmp/output_api.h
-./vacm.lo: ../include/net-snmp/library/snmp_client.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/snmpTCPDomain.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./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/snmpAAL5PVCDomain.lo: ../include/net-snmp/library/tools.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/types.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/oid.h
+./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/snmpTCPDomain.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./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/snmptsm.h
+./transports/snmpAliasDomain.lo: ../include/net-snmp/library/snmpusm.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpCallbackDomain.h
+./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/snmpTCPDomain.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpCallbackDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./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/snmpTCPDomain.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/default_store.h
+./transports/snmpIPv4BaseDomain.lo: ../include/net-snmp/library/system.h
+./transports/snmpIPv6BaseDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/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/snmpTCPDomain.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpIPXDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./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/snmpIPXDomain.lo: ../include/net-snmp/library/tools.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/types.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/oid.h
+./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/snmpTCPDomain.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpSocketBaseDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./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/net-snmp-features.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpSSHDomain.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/types.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/oid.h
+./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/snmpTCPDomain.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpSSHDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/snmpTCPDomain.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpSTDDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./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/snmpTCPDomain.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpTCPBaseDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./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/snmpTCPDomain.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpSocketBaseDomain.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/snmpTCPBaseDomain.h
+./transports/snmpTCPDomain.lo: ../include/net-snmp/library/tools.h
+./transports/snmpTCPIPv6Domain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/net-snmp-features.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpTLSBaseDomain.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/asn1.h
+./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/snmpTCPDomain.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/config_api.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/read_config.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/default_store.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_parse_args.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_enum.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/vacm.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/cert_util.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_openssl.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_assert.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/snmp_secmod.h
+./transports/snmpTLSBaseDomain.lo: ../include/net-snmp/library/system.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/net-snmp-features.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpTLSTCPDomain.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpTLSTCPDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./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/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/snmpTCPDomain.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpSocketBaseDomain.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/tools.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/default_store.h
+./transports/snmpUDPBaseDomain.lo: ../include/net-snmp/library/system.h
+./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/snmpTCPDomain.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpUDPDomain.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/config_api.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/read_config.h
+./transports/snmpUDPDomain.lo: ../include/net-snmp/library/default_store.h
+./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/snmpTCPDomain.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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/net-snmp-features.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpUDPIPv4BaseDomain.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmpUDPBaseDomain.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/tools.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/snmp_assert.h
+./transports/snmpUDPIPv4BaseDomain.lo: ../include/net-snmp/library/default_store.h
+./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/snmpTCPDomain.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmpIPXDomain.h
+./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/net-snmp-features.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp_impl.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/snmp-tc.h
+./transports/snmpUDPIPv6Domain.lo: ../include/net-snmp/library/system.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/net-snmp-config.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/net-snmp-features.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpUnixDomain.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmp_transport.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/asn1.h
+./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/snmpTCPDomain.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpIPv4BaseDomain.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpUDPIPv6Domain.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpIPv6BaseDomain.h
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/snmpTCPIPv6Domain.h
+./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
+./transports/snmpUnixDomain.lo: ../include/net-snmp/library/tools.h
diff --git a/snmplib/Makefile.in b/snmplib/Makefile.in
index 34e30e6..506b8d4 100644
--- a/snmplib/Makefile.in
+++ b/snmplib/Makefile.in
@@ -13,6 +13,7 @@
 #
 
 top_builddir=..
+mysubdir=snmplib
 
 # use GNU vpath, if available, to only set a path for source and headers
 # VPATH will pick up objects too, which is bad if you are sharing a
@@ -47,6 +48,7 @@
 INCLUDESUBDIRHEADERS=README \
 	asn1.h \
 	callback.h \
+	cert_util.h \
 	container.h \
 	container_binary_array.h \
 	container_list_ssll.h \
@@ -55,6 +57,7 @@
 	factory.h \
 	data_list.h \
 	default_store.h \
+	dir_utils.h \
 	fd_event_manager.h \
 	file_utils.h \
 	int64.h \
@@ -67,6 +70,7 @@
 	snmp.h \
 	snmp_alarm.h \
 	snmp_api.h \
+	large_fd_set.h \
 	snmp_assert.h \
 	snmp_client.h \
 	snmp_debug.h \
@@ -80,10 +84,11 @@
 	text_utils.h \
 	tools.h \
 	transform_oids.h \
-        cmu_compat.h \
+	types.h \
         getopt.h \
         lcd_time.h \
         mt_support.h \
+        oid.h \
         oid_stash.h \
         snmp_enum.h \
         snmp_secmod.h \
@@ -111,6 +116,7 @@
 	scapi.h		\
 	snmp_alarm.h	\
 	snmp_api.h	\
+	large_fd_set.h	\
 	snmp_client.h	\
 	snmp_debug.h	\
 	snmp.h		\
@@ -132,55 +138,91 @@
 
 #
 # Things to build
+#   - for the feature checking / removal / minimialist support these
+#     must be listed such that code requiring a feature must be listed
+#     *before* the code implementing the feature.
 #
 CSRCS=	snmp_client.c mib.c parse.c snmp_api.c snmp.c 		\
 	snmp_auth.c asn1.c md5.c snmp_parse_args.c		\
 	system.c vacm.c int64.c read_config.c pkcs.c		\
 	snmp_debug.c tools.c  snmp_logging.c text_utils.c	\
-	snmpv3.c lcd_time.c keytools.c file_utils.c		\
+	large_fd_set.c cert_util.c snmp_openssl.c 		\
+	snmpv3.c lcd_time.c keytools.c                          \
 	scapi.c callback.c default_store.c snmp_alarm.c		\
 	data_list.c oid_stash.c fd_event_manager.c 		\
+	check_varbind.c 					\
 	mt_support.c snmp_enum.c snmp-tc.c snmp_service.c	\
-	snprintf.c 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 @other_src_list@
+	ucd_compat.c		                                \
+	@other_src_list@ @crypto_files_c@        		\
+	dir_utils.c file_utils.c 	                        \
+	container.c container_binary_array.c	
 
 OBJS=	snmp_client.o mib.o parse.o snmp_api.o snmp.o 		\
 	snmp_auth.o asn1.o md5.o snmp_parse_args.o		\
 	system.o vacm.o int64.o read_config.o pkcs.o 		\
 	snmp_debug.o tools.o  snmp_logging.o text_utils.o	\
-	snmpv3.o lcd_time.o keytools.o file_utils.o		\
+	large_fd_set.o cert_util.o snmp_openssl.o 		\
+	snmpv3.o lcd_time.o keytools.o                          \
 	scapi.o callback.o default_store.o snmp_alarm.o		\
 	data_list.o oid_stash.o fd_event_manager.o		\
+	check_varbind.o 					\
 	mt_support.o snmp_enum.o snmp-tc.o snmp_service.o	\
-	snprintf.o 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 @other_objs_list@
+	ucd_compat.o                               		\
+        @crypto_files_o@ @other_objs_list@ @LIBOBJS@ 		\
+	dir_utils.o file_utils.o 	                        \
+	container.o container_binary_array.o	
 
 LOBJS=	snmp_client.lo mib.lo parse.lo snmp_api.lo snmp.lo 	\
 	snmp_auth.lo asn1.lo md5.lo snmp_parse_args.lo		\
 	system.lo vacm.lo int64.lo read_config.lo pkcs.lo	\
 	snmp_debug.lo tools.lo  snmp_logging.lo	 text_utils.lo	\
-	snmpv3.lo lcd_time.lo keytools.lo file_utils.lo		\
-	scapi.lo callback.lo default_store.lo snmp_alarm.lo		\
+	large_fd_set.lo cert_util.lo snmp_openssl.lo 		\
+	snmpv3.lo lcd_time.lo keytools.lo                       \
+	scapi.lo callback.lo default_store.lo snmp_alarm.lo	\
 	data_list.lo oid_stash.lo fd_event_manager.lo		\
+	check_varbind.lo 					\
 	mt_support.lo snmp_enum.lo snmp-tc.lo snmp_service.lo	\
-	snprintf.lo 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       \
-	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 @other_lobjs_list@
+	snprintf.lo						\
+	snmp_transport.lo @transport_lobj_list@                 \
+	snmp_secmod.lo @security_lobj_list@ snmp_version.lo     \
+	container.lo container_binary_array.lo			\
+	ucd_compat.lo		                                \
+        @crypto_files_lo@ @other_lobjs_list@ @LTLIBOBJS@        \
+	dir_utils.lo file_utils.lo 	                        \
+	container_null.lo container_list_ssll.lo container_iterator.lo 
+
+FTOBJS=	snmp_client.ft mib.ft parse.ft snmp_api.ft snmp.ft 	\
+	snmp_auth.ft asn1.ft md5.ft snmp_parse_args.ft		\
+	system.ft vacm.ft int64.ft read_config.ft pkcs.ft	\
+	snmp_debug.ft tools.ft  snmp_logging.ft	 text_utils.ft	\
+	snmpv3.ft lcd_time.ft keytools.ft                       \
+	scapi.ft callback.ft default_store.ft snmp_alarm.ft	\
+	data_list.ft oid_stash.ft fd_event_manager.ft		\
+	check_varbind.ft 					\
+	mt_support.ft snmp_enum.ft snmp-tc.ft snmp_service.ft	\
+	snprintf.ft						\
+	snmp_transport.ft @transport_ftobj_list@                \
+	snmp_secmod.ft @security_ftobj_list@ snmp_version.ft    \
+	container.ft container_binary_array.ft	\
+	ucd_compat.ft		                             	\
+        @other_ftobjs_list@                     		\
+	large_fd_set.ft cert_util.ft snmp_openssl.ft 		\
+	dir_utils.ft file_utils.ft 	                        \
+	container_null.ft container_list_ssll.ft container_iterator.ft
 
 # just in case someone wants to remove libtool, change this to OBJS.
 TOBJS=$(LOBJS)
 
+FEATUREFILE     = $(top_builddir)/include/net-snmp/library/features.h
+
 # 
 CPPFLAGS = $(TOP_INCLUDES) -I. 	$(SNMPLIB_INCLUDES) @CPPFLAGS@
 
@@ -188,11 +230,11 @@
 
 # how to build the libraries.
 libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION):    $(TOBJS)
-	$(LIB_LD_CMD) $@ $(TOBJS) $(LDFLAGS) @LNETSNMPLIBS@
+	$(LIB_LD_CMD) $@ $(TOBJS) @LD_NO_UNDEFINED@ $(LDFLAGS) @LNETSNMPLIBS@
 	$(RANLIB) $@
 
 libsnmp.$(LIB_EXTENSION)$(LIB_VERSION):    $(TOBJS)
-	$(LIB_LD_CMD) $@ $(TOBJS) $(LDFLAGS) @LNETSNMPLIBS@
+	$(LIB_LD_CMD) $@ $(TOBJS) @LD_NO_UNDEFINED@ $(LDFLAGS) @LNETSNMPLIBS@
 	$(RANLIB) $@
 
 #
@@ -201,7 +243,3 @@
 parse:  mib.o parse.c
 	$(CC) $(CFLAGS) -DTEST parse.c -o $@ \
 		`$(top_srcdir)/net-snmp-config --libs`
-
-test_binary_array: test_binary_array.c
-	$(CC) $(CFLAGS) test_binary_array.c -o $@ \
-		`$(top_srcdir)/net-snmp-config --libs`
diff --git a/snmplib/asn1.c b/snmplib/asn1.c
index 2346e6c..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
@@ -251,6 +248,24 @@
 }
 
 /**
+ * @internal
+ * output an error for a wrong type
+ * 
+ * @param str        error string
+ * @param wrongtype  wrong type
+ */
+static
+    void
+_asn_type_err(const char *str, int wrongtype)
+{
+    char            ebuf[128];
+
+    snprintf(ebuf, sizeof(ebuf), "%s type %d", str, wrongtype);
+    ebuf[ sizeof(ebuf)-1 ] = 0;
+    ERROR_MSG(ebuf);
+}
+
+/**
  * @internal 
  * output an error for a wrong length
  * 
@@ -482,12 +497,17 @@
         return NULL;
     }
     *type = *bufp++;
+    if (*type != ASN_INTEGER) {
+        _asn_type_err(errpre, *type);
+        return NULL;
+    }
+
     bufp = asn_parse_length(bufp, &asn_length);
     if (_asn_parse_length_check
         (errpre, bufp, data, asn_length, *datalength))
         return NULL;
 
-    if ((size_t) asn_length > intsize) {
+    if ((size_t) asn_length > intsize || (int) asn_length == 0) {
         _asn_length_err(errpre, (size_t) asn_length, intsize);
         return NULL;
     }
@@ -503,7 +523,7 @@
 
     CHECK_OVERFLOW_S(value,1);
 
-    DEBUGMSG(("dumpv_recv", "  Integer:\t%ld (0x%.2X)\n", value, value));
+    DEBUGMSG(("dumpv_recv", "  Integer:\t%ld (0x%.2lX)\n", value, value));
 
     *intp = value;
     return bufp;
@@ -549,13 +569,18 @@
         return NULL;
     }
     *type = *bufp++;
+    if (*type != ASN_COUNTER && *type != ASN_GAUGE && *type != ASN_TIMETICKS
+            && *type != ASN_UINTEGER) {
+        _asn_type_err(errpre, *type);
+        return NULL;
+    }
     bufp = asn_parse_length(bufp, &asn_length);
     if (_asn_parse_length_check
         (errpre, bufp, data, asn_length, *datalength))
         return NULL;
 
-    if (((int) asn_length > (intsize + 1)) ||
-        (((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;
     }
@@ -570,7 +595,7 @@
 
     CHECK_OVERFLOW_U(value,2);
 
-    DEBUGMSG(("dumpv_recv", "  UInteger:\t%ld (0x%.2X)\n", value, value));
+    DEBUGMSG(("dumpv_recv", "  UInteger:\t%ld (0x%.2lX)\n", value, value));
 
     *intp = value;
     return bufp;
@@ -649,7 +674,7 @@
         integer <<= 8;
     }
     DEBUGDUMPSETUP("send", initdatap, data - initdatap);
-    DEBUGMSG(("dumpv_send", "  Integer:\t%ld (0x%.2X)\n", *intp, *intp));
+    DEBUGMSG(("dumpv_send", "  Integer:\t%ld (0x%.2lX)\n", *intp, *intp));
     return data;
 }
 
@@ -745,7 +770,7 @@
         integer <<= 8;
     }
     DEBUGDUMPSETUP("send", initdatap, data - initdatap);
-    DEBUGMSG(("dumpv_send", "  UInteger:\t%ld (0x%.2X)\n", *intp, *intp));
+    DEBUGMSG(("dumpv_send", "  UInteger:\t%ld (0x%.2lX)\n", *intp, *intp));
     return data;
 }
 
@@ -788,13 +813,19 @@
     u_long          asn_length;
 
     *type = *bufp++;
+    if (*type != ASN_OCTET_STR && *type != ASN_IPADDRESS && *type != ASN_OPAQUE
+            && *type != ASN_NSAP) {
+        _asn_type_err(errpre, *type);
+        return NULL;
+    }
+
     bufp = asn_parse_length(bufp, &asn_length);
     if (_asn_parse_length_check
         (errpre, bufp, data, asn_length, *datalength)) {
         return NULL;
     }
 
-    if ((int) asn_length > *strlength) {
+    if (asn_length > *strlength) {
         _asn_length_err(errpre, (size_t) asn_length, *strlength);
         return NULL;
     }
@@ -802,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);
@@ -1286,6 +1317,7 @@
                 size_t * datalength,
                 u_char * type, oid * objid, size_t * objidlength)
 {
+    static const char *errpre = "parse objid";
     /*
      * ASN.1 objid ::= 0x06 asnlength subidentifier {subidentifier}*
      * subidentifier ::= {leadingbyte}* lastbyte
@@ -1300,6 +1332,10 @@
     size_t          original_length = *objidlength;
 
     *type = *bufp++;
+    if (*type != ASN_OBJECT_ID) {
+        _asn_type_err(errpre, *type);
+        return NULL;
+    }
     bufp = asn_parse_length(bufp, &asn_length);
     if (_asn_parse_length_check("parse objid", bufp, data,
                                 asn_length, *datalength))
@@ -1669,6 +1705,10 @@
     u_long          asn_length;
 
     *type = *bufp++;
+    if (*type != ASN_BIT_STR) {
+        _asn_type_err(errpre, *type);
+        return NULL;
+    }
     bufp = asn_parse_length(bufp, &asn_length);
     if (_asn_parse_length_check(errpre, bufp, data,
                                 asn_length, *datalength))
@@ -1789,6 +1829,14 @@
         return NULL;
     }
     *type = *bufp++;
+    if (*type != ASN_COUNTER64
+#ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
+            && *type != ASN_OPAQUE
+#endif
+            ) {
+        _asn_type_err(errpre, *type);
+        return NULL;
+    }
     bufp = asn_parse_length(bufp, &asn_length);
     if (_asn_parse_length_check
         (errpre, bufp, data, asn_length, *datalength))
@@ -1988,7 +2036,7 @@
     DEBUGIF("dumpv_send") {
         char            i64buf[I64CHARSZ + 1];
         printU64(i64buf, cp);
-        DEBUGMSG(("dumpv_send", i64buf));
+        DEBUGMSG(("dumpv_send", "%s", i64buf));
     }
     return data;
 }
@@ -2224,6 +2272,7 @@
                 size_t * datalength,
                 u_char * type, float *floatp, size_t floatsize)
 {
+    static const char *errpre = "parse float";
     register u_char *bufp = data;
     u_long          asn_length;
     union {
@@ -2264,6 +2313,11 @@
         *type = ASN_OPAQUE_FLOAT;
     }
 
+    if (*type != ASN_OPAQUE_FLOAT) {
+        _asn_type_err(errpre, *type);
+        return NULL;
+    }
+
     if (asn_length != sizeof(float)) {
         _asn_size_err("parse seq float", asn_length, sizeof(float));
         return NULL;
@@ -2389,6 +2443,7 @@
                  size_t * datalength,
                  u_char * type, double *doublep, size_t doublesize)
 {
+    static const char *errpre = "parse double";
     register u_char *bufp = data;
     u_long          asn_length;
     long            tmp;
@@ -2431,6 +2486,11 @@
         *type = ASN_OPAQUE_DOUBLE;
     }
 
+    if (*type != ASN_OPAQUE_DOUBLE) {
+        _asn_type_err(errpre, *type);
+        return NULL;
+    }
+
     if (asn_length != sizeof(double)) {
         _asn_size_err("parse seq double", asn_length, sizeof(double));
         return NULL;
@@ -2557,15 +2617,16 @@
     if (pkt != NULL && pkt_len != NULL) {
         size_t          old_pkt_len = *pkt_len;
 
-        DEBUGMSGTL(("asn_realloc", " old_pkt %08p, old_pkt_len %08x\n",
-                    *pkt, old_pkt_len));
+        DEBUGMSGTL(("asn_realloc", " old_pkt %8p, old_pkt_len %lu\n",
+                    *pkt, (unsigned long)old_pkt_len));
 
         if (snmp_realloc(pkt, pkt_len)) {
-            DEBUGMSGTL(("asn_realloc", " new_pkt %08p, new_pkt_len %08x\n",
-                        *pkt, *pkt_len));
+            DEBUGMSGTL(("asn_realloc", " new_pkt %8p, new_pkt_len %lu\n",
+                        *pkt, (unsigned long)*pkt_len));
             DEBUGMSGTL(("asn_realloc",
-                        " memmove(%08p + %08x, %08p, %08x)\n", *pkt,
-                        (*pkt_len - old_pkt_len), *pkt, old_pkt_len));
+                        " memmove(%8p + %08x, %8p, %08x)\n",
+			*pkt, (unsigned)(*pkt_len - old_pkt_len),
+			*pkt, (unsigned)old_pkt_len));
             memmove(*pkt + (*pkt_len - old_pkt_len), *pkt, old_pkt_len);
             memset(*pkt, (int) ' ', *pkt_len - old_pkt_len);
             return 1;
@@ -2756,7 +2817,7 @@
         } else {
             DEBUGDUMPSETUP("send", (*pkt + *pkt_len - *offset),
                            (*offset - start_offset));
-            DEBUGMSG(("dumpv_send", "  Integer:\t%ld (0x%.2X)\n", *intp,
+            DEBUGMSG(("dumpv_send", "  Integer:\t%ld (0x%.2lX)\n", *intp,
                       *intp));
             return 1;
         }
@@ -2909,7 +2970,7 @@
         } else {
             DEBUGDUMPSETUP("send", (*pkt + *pkt_len - *offset),
                            (*offset - start_offset));
-            DEBUGMSG(("dumpv_send", "  UInteger:\t%lu (0x%.2X)\n", *intp,
+            DEBUGMSG(("dumpv_send", "  UInteger:\t%lu (0x%.2lX)\n", *intp,
                       *intp));
             return 1;
         }
diff --git a/snmplib/callback.c b/snmplib/callback.c
index e434042..dfe537a 100644
--- a/snmplib/callback.c
+++ b/snmplib/callback.c
@@ -17,14 +17,12 @@
  *  @{
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <sys/types.h>
 #include <stdio.h>
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -55,6 +53,11 @@
 #include <net-snmp/library/callback.h>
 #include <net-snmp/library/snmp_api.h>
 
+netsnmp_feature_child_of(callbacks_all, libnetsnmp)
+
+netsnmp_feature_child_of(callback_count, callbacks_all)
+netsnmp_feature_child_of(callback_list, callbacks_all)
+
 /*
  * the inline callback methods use major/minor to index into arrays.
  * all users in this function do range checking before calling these
@@ -115,7 +118,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 +142,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;
@@ -217,7 +220,9 @@
  * @param new_callback is the callback function that is registered.
  *
  * @param arg when not NULL is a void pointer used whenever new_callback 
- *	function is exercised.
+ *	function is exercised. Ownership is transferred to the twodimensional
+ *      thecallbacks[][] array. The function clear_callback() will deallocate
+ *      the memory pointed at by calling free().
  *
  * @return 
  *	Returns SNMPERR_GENERR if major is >= MAX_CALLBACK_IDS or minor is >=
@@ -237,6 +242,20 @@
                                       NETSNMP_CALLBACK_DEFAULT_PRIORITY);
 }
 
+/**
+ * Register a callback function.
+ *
+ * @param major        Major callback event type.
+ * @param minor        Minor callback event type.
+ * @param new_callback Callback function being registered.
+ * @param arg          Argument that will be passed to the callback function.
+ * @param priority     Handler invocation priority. When multiple handlers have
+ *   been registered for the same (major, minor) callback event type, handlers
+ *   with the numerically lowest priority will be invoked first. Handlers with
+ *   identical priority are invoked in the order they have been registered.
+ *
+ * @see snmp_register_callback
+ */
 int
 netsnmp_register_callback(int major, int minor, SNMPCallback * new_callback,
                           void *arg, int priority)
@@ -354,6 +373,7 @@
     return SNMPERR_SUCCESS;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CALLBACK_COUNT
 int
 snmp_count_callbacks(int major, int minor)
 {
@@ -373,6 +393,7 @@
 
     return count;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CALLBACK_COUNT */
 
 int
 snmp_callback_available(int major, int minor)
@@ -551,6 +572,7 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CALLBACK_LIST
 struct snmp_gen_callback *
 snmp_callback_list(int major, int minor)
 {
@@ -559,4 +581,5 @@
 
     return (thecallbacks[major][minor]);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CALLBACK_LIST */
 /**  @} */
diff --git a/snmplib/cert_util.c b/snmplib/cert_util.c
new file mode 100644
index 0000000..246a6c9
--- /dev/null
+++ b/snmplib/cert_util.c
@@ -0,0 +1,3367 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+#if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL)
+netsnmp_feature_child_of(cert_util_all, libnetsnmp)
+netsnmp_feature_child_of(cert_util, cert_util_all)
+#ifdef NETSNMP_FEATURE_REQUIRE_CERT_UTIL
+netsnmp_feature_require(container_directory)
+netsnmp_feature_require(container_fifo)
+netsnmp_feature_require(container_dup)
+netsnmp_feature_require(container_free_all)
+netsnmp_feature_require(subcontainer_find)
+
+netsnmp_feature_child_of(cert_map_remove, netsnmp_unused)
+netsnmp_feature_child_of(cert_map_find, netsnmp_unused)
+netsnmp_feature_child_of(tlstmparams_external, cert_util_all)
+netsnmp_feature_child_of(tlstmparams_container, tlstmparams_external)
+netsnmp_feature_child_of(tlstmparams_remove, tlstmparams_external)
+netsnmp_feature_child_of(tlstmparams_find, tlstmparams_external)
+netsnmp_feature_child_of(tlstmAddr_remove, netsnmp_unused)
+netsnmp_feature_child_of(tlstmaddr_external, cert_util_all)
+netsnmp_feature_child_of(tlstmaddr_container, tlstmaddr_external)
+netsnmp_feature_child_of(tlstmAddr_get_serverId, tlstmaddr_external)
+
+netsnmp_feature_child_of(cert_fingerprints, cert_util_all)
+netsnmp_feature_child_of(tls_fingerprint_build, cert_util_all)
+
+#endif /* NETSNMP_FEATURE_REQUIRE_CERT_UTIL */
+
+#ifndef NETSNMP_FEATURE_REMOVE_CERT_UTIL
+
+#include <ctype.h>
+
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#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 (_maps) {
+        CONTAINER_FREE_ALL(_maps, NULL);
+        CONTAINER_FREE(_maps);
+        _maps = NULL;
+    }
+    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 = NULL;
+    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_feature_require(cert_utils_dump_names) */
+        /* 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;
+    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 */
+                fp =
+                    netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                          NETSNMP_DS_LIB_TLS_LOCAL_CERT);
+                /** temp backwards compability; remove in 5.7 */
+                if (!fp) {
+                    int           tmp;
+                    tmp = (ptrdiff_t)hint;
+                    DEBUGMSGT(("cert:find:params", " hint = %s\n",
+                               tmp ? "server" : "client"));
+                    fp =
+                        netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, tmp ?
+                                              NETSNMP_DS_LIB_X509_SERVER_PUB :
+                                              NETSNMP_DS_LIB_X509_CLIENT_PUB );
+                }
+                if (!fp) {
+                    /* As a special case, use the application type to
+                       determine a file name to pull the default identity
+                       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_TLS_PEER_CERT);
+                /** temp backwards compability; remove in 5.7 */
+                if (!fp)
+                    fp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                               NETSNMP_DS_LIB_X509_SERVER_PUB);
+                break;
+            default:
+                DEBUGMSGT(("cert:find:err", "unhandled type %d for %s(%d)\n",
+                           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;
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_CERT_FINGERPRINTS
+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;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_CERT_FINGERPRINTS */
+
+#ifndef NETSNMP_FEATURE_REMOVE_TLS_FINGERPRINT_BUILD
+/**
+ * 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;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_TLS_FINGERPRINT_BUILD */
+
+/**
+ * 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);
+        if (0 == matching->size) {
+            free(matching->array);
+            SNMP_FREE(matching);
+        }
+    }
+    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);
+        if (0 == matching->size) {
+            free(matching->array);
+            SNMP_FREE(matching);
+        }
+    }
+    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;
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_CERT_MAP_REMOVE
+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;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_CERT_MAP_REMOVE */
+
+#ifndef NETSNMP_FEATURE_REMOVE_CERT_MAP_FIND
+netsnmp_cert_map *
+netsnmp_cert_map_find(netsnmp_cert_map *map)
+{
+    if (NULL == map)
+        return NULL;
+
+    return CONTAINER_FIND(_maps, map);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_CERT_MAP_FIND */
+
+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, *fp;
+
+    chain_map = netsnmp_container_find("cert_map:stack:binary_array");
+    if (NULL == chain_map) {
+        snmp_log(LOG_ERR, "could not allocate container for cert_map\n");
+        return NULL;
+    }
+
+    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);
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_TLSTMPARAMS_CONTAINER
+netsnmp_container *
+netsnmp_tlstmParams_container(void)
+{
+    return _tlstmParams;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_TLSTMPARAMS_CONTAINER */
+
+snmpTlstmParams *
+netsnmp_tlstmParams_create(const char *name, int hashType, const char *fp,
+                           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;
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_TLSTMPARAMS_REMOVE
+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;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_TLSTMPARAMS_REMOVE */
+
+#ifndef NETSNMP_FEATURE_REMOVE_TLSTMPARAMS_FIND
+snmpTlstmParams *
+netsnmp_tlstmParams_find(snmpTlstmParams *stp)
+{
+    snmpTlstmParams *found;
+
+    if (NULL == stp)
+        return NULL;
+
+    found = CONTAINER_FIND(_tlstmParams, stp);
+    return found;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_TLSTMPARAMS_FIND */
+
+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);
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_TLSTMADDR_CONTAINER
+netsnmp_container *
+netsnmp_tlstmAddr_container(void)
+{
+    return _tlstmAddr;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_TLSTMADDR_CONTAINER */
+
+/*
+ * create a new row in the table 
+ */
+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;
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_TLSTMADDR_REMOVE
+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;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_TLSTMADDR_REMOVE */
+
+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;
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_TLSTMADDR_GET_SERVERID
+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;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_TLSTMADDR_GET_SERVERID */
+/*
+ * END snmpTlstmAddrTable data
+ * ***************************************************************************/
+
+#else
+netsnmp_feature_unused(cert_util);
+#endif /* NETSNMP_FEATURE_REMOVE_CERT_UTIL */
+netsnmp_feature_unused(cert_util);
+#endif /* defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL) */
diff --git a/snmplib/check_varbind.c b/snmplib/check_varbind.c
index c66f073..12b7a52 100644
--- a/snmplib/check_varbind.c
+++ b/snmplib/check_varbind.c
@@ -1,9 +1,27 @@
 #include <net-snmp/net-snmp-config.h>
 
 #include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <net-snmp/library/check_varbind.h>
 
+netsnmp_feature_child_of(check_varbind_all, libnetsnmp)
+
+netsnmp_feature_child_of(check_vb_range, check_varbind_all)
+netsnmp_feature_child_of(check_vb_size_range, check_varbind_all)
+netsnmp_feature_child_of(check_vb_uint, check_varbind_all)
+netsnmp_feature_child_of(check_vb_storagetype, check_varbind_all)
+netsnmp_feature_child_of(check_vb_oid, check_varbind_all)
+netsnmp_feature_child_of(check_vb_type_and_max_size, check_varbind_all)
+netsnmp_feature_child_of(check_vb_type_and_max_size, check_varbind_all)
+netsnmp_feature_child_of(check_vb_rowstatus_with_storagetype, check_varbind_all)
+netsnmp_feature_child_of(check_vb_truthvalue, check_varbind_all)
+
+#ifdef NETSNMP_FEATURE_REQUIRE_CHECK_VB_ROWSTATUS_WITH_STORAGETYPE
+netsnmp_feature_require(check_rowstatus_with_storagetype_transition)
+#endif /* NETSNMP_FEATURE_REQUIRES_CHECK_VB_ROWSTATUS_WITH_STORAGETYPE */
+
+
 NETSNMP_INLINE int
 netsnmp_check_vb_type(const netsnmp_variable_list *var, int type )
 {
@@ -49,6 +67,7 @@
     return rc;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_VB_RANGE
 NETSNMP_INLINE int
 netsnmp_check_vb_range(const netsnmp_variable_list *var,
                        size_t low, size_t high )
@@ -58,13 +77,15 @@
     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;
     }
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_VB_RANGE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_VB_SIZE_RANGE
 NETSNMP_INLINE int
 netsnmp_check_vb_size_range(const netsnmp_variable_list *var,
                             size_t low, size_t high )
@@ -80,6 +101,7 @@
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_VB_SIZE_RANGE */
 
 NETSNMP_INLINE int
 netsnmp_check_vb_type_and_size(const netsnmp_variable_list *var,
@@ -98,6 +120,7 @@
     return rc;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_VB_TYPE_AND_MAX_SIZE
 NETSNMP_INLINE int
 netsnmp_check_vb_type_and_max_size(const netsnmp_variable_list *var,
                                int type, size_t size)
@@ -114,7 +137,9 @@
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_VB_TYPE_AND_MAX_SIZE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_VB_OID
 NETSNMP_INLINE int
 netsnmp_check_vb_oid(const netsnmp_variable_list *var)
 {
@@ -130,6 +155,7 @@
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_VB_OID */
 
 NETSNMP_INLINE int
 netsnmp_check_vb_int(const netsnmp_variable_list *var)
@@ -140,6 +166,7 @@
     return netsnmp_check_vb_type_and_size(var, ASN_INTEGER, sizeof(long));
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_VB_UINT
 NETSNMP_INLINE int
 netsnmp_check_vb_uint(const netsnmp_variable_list *var)
 {
@@ -148,6 +175,7 @@
     
     return netsnmp_check_vb_type_and_size(var, ASN_UNSIGNED, sizeof(long));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_VB_UINT */
 
 NETSNMP_INLINE int
 netsnmp_check_vb_int_range(const netsnmp_variable_list *var, int low, int high)
@@ -167,6 +195,7 @@
     return rc;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_VB_TRUTHVALUE
 int
 netsnmp_check_vb_truthvalue(const netsnmp_variable_list *var)
 {
@@ -180,6 +209,7 @@
     
     return netsnmp_check_vb_int_range(var, 1, 2);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_VB_TRUTHVALUE */
 
 NETSNMP_INLINE int
 netsnmp_check_vb_rowstatus_value(const netsnmp_variable_list *var)
@@ -213,6 +243,26 @@
     return check_rowstatus_transition(old_value, *var->val.integer);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_VB_ROWSTATUS_WITH_STORAGETYPE
+int
+netsnmp_check_vb_rowstatus_with_storagetype(const netsnmp_variable_list *var,
+                                            int old_value, int old_storage)
+{
+    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);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_VB_ROWSTATUS_WITH_STORAGETYPE */
+
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_VB_STORAGETYPE
 int
 netsnmp_check_vb_storagetype(const netsnmp_variable_list *var, int old_value)
 {
@@ -230,3 +280,4 @@
         
     return check_storage_transition(old_value, *var->val.integer);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_VB_STORAGETYPE */
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
deleted file mode 100644
index bd45aba..0000000
--- a/snmplib/cmu_compat.c
+++ /dev/null
@@ -1,91 +0,0 @@
-#include <net-snmp/net-snmp-config.h>
-
-#ifdef CMU_COMPATIBLE
-
-#include <net-snmp/mib_api.h>
-#include <net-snmp/pdu_api.h>
-#include <net-snmp/session_api.h>
-
-int
-mib_TxtToOid(char *Buf, oid ** OidP, size_t * LenP)
-{
-    return read_objid(Buf, *OidP, LenP);
-}
-
-int
-mib_OidToTxt(oid * O, size_t OidLen, char *Buf, size_t BufLen)
-{
-    _sprint_objid(Buf, O, OidLen);
-    return 1;
-}
-
-
-/*
- * cmu_snmp_parse - emulate CMU library's snmp_parse.
- *
- * Parse packet, storing results into PDU.
- * Returns community string if success, NULL if fail.
- * WARNING: may return a zero length community string.
- *
- * Note:
- * Some CMU-aware apps call init_mib(), but do not
- * initialize a session.
- * Check Reqid to make sure that this module is initialized.
- */
-
-u_char         *
-cmu_snmp_parse(netsnmp_session * session,
-               netsnmp_pdu *pdu, u_char * data, size_t length)
-{
-    u_char         *bufp = NULL;
-
-    snmp_sess_init(session);    /* gimme a break! */
-
-    switch (pdu->version) {
-    case SNMP_VERSION_1:
-    case SNMP_VERSION_2c:
-    case SNMP_DEFAULT_VERSION:
-        break;
-    default:
-        return NULL;
-    }
-#ifndef NO_INTERNAL_VARLIST
-    if (snmp_parse(0, session, pdu, data, length) != SNMP_ERR_NOERROR) {
-        return NULL;
-    }
-#else
-    /*
-     * while there are two versions of variable_list:
-     * use an internal variable list for snmp_parse;
-     * clone the result.
-     */
-    if (1) {
-        netsnmp_pdu    *snmp_clone_pdu(netsnmp_pdu *);
-        netsnmp_pdu    *snmp_2clone_pdu(netsnmp_pdu *from_pdu,
-                                        netsnmp_pdu *to_pdu);
-
-        netsnmp_pdu    *ipdu;
-        ipdu = snmp_clone_pdu(pdu);
-        if (snmp_parse(0, session, ipdu, data, length) != SNMP_ERR_NOERROR) {
-            snmp_free_internal_pdu(ipdu);
-            return NULL;
-        }
-        pdu = snmp_2clone_pdu(ipdu, pdu);
-        snmp_free_internal_pdu(ipdu);
-    }
-#endif                          /* NO_INTERNAL_VAR_LIST */
-
-    /*
-     * Add a null to meet the caller's expectations. 
-     */
-
-    bufp = (u_char *) malloc(1 + pdu->community_len);
-    if (bufp && pdu->community_len) {
-        memcpy(bufp, pdu->community, pdu->community_len);
-        bufp[pdu->community_len] = '\0';
-    }
-    return (bufp);
-}
-
-
-#endif                          /* CMU_COMPATIBLE */
diff --git a/snmplib/container.c b/snmplib/container.c
index 08a4c63..b2ac97e 100644
--- a/snmplib/container.c
+++ b/snmplib/container.c
@@ -1,10 +1,39 @@
+/* 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.
+ */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 #include <net-snmp/library/container.h>
 #include <net-snmp/library/container_binary_array.h>
 #include <net-snmp/library/container_list_ssll.h>
 #include <net-snmp/library/container_null.h>
 
+netsnmp_feature_child_of(container_all, libnetsnmp)
+
+netsnmp_feature_child_of(container_factories, container_all)
+netsnmp_feature_child_of(container_types, container_all)
+netsnmp_feature_child_of(container_compare, container_all)
+netsnmp_feature_child_of(container_dup, container_all)
+netsnmp_feature_child_of(container_free_all, container_all)
+netsnmp_feature_child_of(subcontainer_find, container_all)
+
+netsnmp_feature_child_of(container_ncompare_cstring, container_compare)
+netsnmp_feature_child_of(container_compare_mem, container_compare)
+netsnmp_feature_child_of(container_compare_long, container_compare)
+netsnmp_feature_child_of(container_compare_ulong, container_compare)
+netsnmp_feature_child_of(container_compare_int32, container_compare)
+netsnmp_feature_child_of(container_compare_uint32, container_compare)
+
+netsnmp_feature_child_of(container_find_factory, container_factories)
+
 /** @defgroup container container
  */
 
@@ -52,29 +81,41 @@
      */
     containers = netsnmp_container_get_binary_array();
     containers->compare = netsnmp_compare_cstring;
+    containers->container_name = strdup("container list");
 
     /*
      * register containers
      */
     netsnmp_container_binary_array_init();
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_LINKED_LIST
     netsnmp_container_ssll_init();
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_LINKED_LIST */
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_NULL
     netsnmp_container_null_init();
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_NULL */
 
     /*
      * default aliases for some containers
      */
     netsnmp_container_register("table_container",
                                netsnmp_container_get_factory("binary_array"));
+
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_LINKED_LIST
     netsnmp_container_register("linked_list",
                                netsnmp_container_get_factory("sorted_singly_linked_list"));
     netsnmp_container_register("ssll_container",
                                netsnmp_container_get_factory("sorted_singly_linked_list"));
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_LINKED_LIST */
+
+    netsnmp_container_register_with_compare
+        ("cstring", netsnmp_container_get_factory("binary_array"),
+         netsnmp_compare_direct_cstring);
 
     netsnmp_container_register_with_compare
         ("string", netsnmp_container_get_factory("binary_array"),
          netsnmp_compare_cstring);
     netsnmp_container_register_with_compare
-        ("string:binary_array", netsnmp_container_get_factory("binary_array"),
+        ("string_binary_array", netsnmp_container_get_factory("binary_array"),
          netsnmp_compare_cstring);
 
 }
@@ -151,6 +192,7 @@
     return found ? found->factory : NULL;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_FIND_FACTORY
 netsnmp_factory *
 netsnmp_container_find_factory(const char *type_list)
 {
@@ -173,6 +215,7 @@
     free(list);
     return f;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_FIND_FACTORY */
 
 /*------------------------------------------------------------------
  */
@@ -271,8 +314,6 @@
     new_index->prev = curr;
 }
 
-#ifndef NETSNMP_USE_INLINE /* default is to inline */
-
 /*------------------------------------------------------------------
  * These functions should EXACTLY match the inline version in
  * container.h. If you change one, change them both.
@@ -323,7 +364,8 @@
         rc2 = x->remove(x,k);
         /** ignore remove errors if there is a filter in place */
         if ((rc2) && (NULL == x->insert_filter)) {
-            snmp_log(LOG_ERR,"error on subcontainer remove (%d)\n", rc2);
+            snmp_log(LOG_ERR,"error on subcontainer '%s' remove (%d)\n",
+                     x->container_name ? x->container_name : "", rc2);
             rc = rc2;
         }
         x = x->prev;
@@ -333,6 +375,22 @@
 }
 
 /*------------------------------------------------------------------
+ * These functions should EXACTLY match the function version in
+ * container.c. If you change one, change them both.
+ */
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_DUP
+netsnmp_container *CONTAINER_DUP(netsnmp_container *x, void *ctx, u_int flags)
+{
+    if (NULL == x->duplicate) {
+        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);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_DUP */
+
+/*------------------------------------------------------------------
  * These functions should EXACTLY match the inline version in
  * container.h. If you change one, change them both.
  */
@@ -345,14 +403,17 @@
         x = x->next;
     while(x) {
         netsnmp_container *tmp;
+        char *name;
         tmp = x->prev;
-        if (NULL != x->container_name)
-            SNMP_FREE(x->container_name);
+        name = x->container_name;
+        x->container_name = NULL;
         rc2 = x->cfree(x);
         if (rc2) {
-            snmp_log(LOG_ERR,"error on subcontainer cfree (%d)\n", rc2);
+            snmp_log(LOG_ERR,"error on subcontainer '%s' cfree (%d)\n",
+                     name ? name : "", rc2);
             rc = rc2;
         }
+        SNMP_FREE(name);
         x = tmp;
     }
     return rc;
@@ -380,6 +441,19 @@
     x->clear(x, f, c);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_FREE_ALL
+/*
+ * clear all containers. When clearing the *first* container, and
+ * *only* the first container, call the free_item function for each item.
+ * 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);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_FREE_ALL */
+
+#ifndef NETSNMP_FEATURE_REMOVE_SUBCONTAINER_FIND
 /*------------------------------------------------------------------
  * These functions should EXACTLY match the function version in
  * container.c. If you change one, change them both.
@@ -403,7 +477,7 @@
     }
     return x;
 }
-#endif
+#endif /* NETSNMP_FEATURE_REMOVE_SUBCONTAINER_FIND */
 
 
 /*------------------------------------------------------------------
@@ -428,6 +502,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;
 }
 
 /*------------------------------------------------------------------
@@ -487,6 +581,7 @@
                   ((const container_type*)rhs)->name);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_NCOMPARE_CSTRING
 int
 netsnmp_ncompare_cstring(const void * lhs, const void * rhs)
 {
@@ -494,6 +589,13 @@
                    ((const container_type*)rhs)->name,
                    strlen(((const container_type*)rhs)->name));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_NCOMPARE_CSTRING */
+
+int
+netsnmp_compare_direct_cstring(const void * lhs, const void * rhs)
+{
+    return strcmp((const char*)lhs, (const char*)rhs);
+}
 
 /*
  * compare two memory buffers
@@ -502,6 +604,7 @@
  * compare up to the length of the smaller, and then use length to
  * break any ties.
  */
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_MEM
 int
 netsnmp_compare_mem(const char * lhs, size_t lhs_len,
                     const char * rhs, size_t rhs_len)
@@ -518,6 +621,79 @@
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_MEM */
+
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_LONG
+int
+netsnmp_compare_long(const void * lhs, const void * rhs)
+{
+    typedef struct { long index; } dummy;
+
+    const dummy *lhd = (const dummy*)lhs;
+    const dummy *rhd = (const dummy*)rhs;
+
+    if (lhd->index < rhd->index)
+        return -1;
+    else if (lhd->index > rhd->index)
+        return 1;
+
+    return 0;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_LONG */
+
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_ULONG
+int
+netsnmp_compare_ulong(const void * lhs, const void * rhs)
+{
+    typedef struct { u_long index; } dummy;
+
+    const dummy *lhd = (const dummy*)lhs;
+    const dummy *rhd = (const dummy*)rhs;
+
+    if (lhd->index < rhd->index)
+        return -1;
+    else if (lhd->index > rhd->index)
+        return 1;
+
+    return 0;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_ULONG */
+
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_INT32
+int
+netsnmp_compare_int32(const void * lhs, const void * rhs)
+{
+    typedef struct { int32_t index; } dummy;
+
+    const dummy *lhd = (const dummy*)lhs;
+    const dummy *rhd = (const dummy*)rhs;
+
+    if (lhd->index < rhd->index)
+        return -1;
+    else if (lhd->index > rhd->index)
+        return 1;
+
+    return 0;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_INT32 */
+
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_UINT32
+int
+netsnmp_compare_uint32(const void * lhs, const void * rhs)
+{
+    typedef struct { uint32_t index; } dummy;
+
+    const dummy *lhd = (const dummy*)lhs;
+    const dummy *rhd = (const dummy*)rhs;
+
+    if (lhd->index < rhd->index)
+        return -1;
+    else if (lhd->index > rhd->index)
+        return 1;
+
+    return 0;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_COMPARE_UINT32 */
 
 /*------------------------------------------------------------------
  * netsnmp_container_simple_free
diff --git a/snmplib/container_binary_array.c b/snmplib/container_binary_array.c
index 43efc4b..0f5cf62 100644
--- a/snmplib/container_binary_array.c
+++ b/snmplib/container_binary_array.c
@@ -36,9 +36,7 @@
 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 */
 } binary_array_table;
 
@@ -66,9 +64,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 +97,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 +108,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 +118,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 +156,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);
 
@@ -184,7 +220,6 @@
     t->max_size = 0;
     t->count = 0;
     t->dirty = 0;
-    t->data_size = sizeof(void*);
     t->data = NULL;
 
     return t;
@@ -194,9 +229,7 @@
 netsnmp_binary_array_release(netsnmp_container *c)
 {
     binary_array_table *t = (binary_array_table*)c->container_data;
-    if (t->data != NULL) {
-	SNMP_FREE(t->data);
-    }
+    SNMP_FREE(t->data);
     SNMP_FREE(t);
     SNMP_FREE(c);
 }
@@ -204,11 +237,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;
 }
 
@@ -232,7 +270,7 @@
      * if there is no data, return NULL;
      */
     if (!t->count)
-        return 0;
+        return NULL;
 
     /*
      * if the table is dirty, sort it.
@@ -245,17 +283,71 @@
      */
     if (key) {
         if ((index = binary_search(key, c, exact)) == -1)
-            return 0;
+            return NULL;
+        if (!exact &&
+            c->flags & CONTAINER_KEY_ALLOW_DUPLICATES) {
+            int result;
+
+            /*
+             * If duplicates are allowed, we have to be extra
+             * sure that we didn't just increment to a duplicate,
+             * thus causing a getnext loop.
+             */
+            result = c->compare(t->data[index], key);
+            while (result == 0) {
+		DEBUGMSGTL(("container","skipping duplicate key in %s\n",
+					    c->container_name));
+                if (++index == t->count)
+                   return NULL;
+                result = c->compare(t->data[index], key);
+            }
+        }
     }
 
     return t->data[index];
 }
 
 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],
+                sizeof(void*) * (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 +370,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,15 +411,13 @@
 netsnmp_binary_array_insert(netsnmp_container *c, const void *entry)
 {
     binary_array_table *t = (binary_array_table*)c->container_data;
-    int             new_max, new_size;
-    char           *new_data;   /* Used for * a) extending the data table
-                                 * * b) the next entry to use */
+    int             was_dirty = 0;
     /*
      * check for duplicates
      */
-    if (! (t->flags & CONTAINER_KEY_ALLOW_DUPLICATES)) {
-        new_data = netsnmp_binary_array_get(c, entry, 1);
-        if (NULL != new_data) {
+    if (! (c->flags & CONTAINER_KEY_ALLOW_DUPLICATES)) {
+        was_dirty = t->dirty;
+        if (NULL != netsnmp_binary_array_get(c, entry, 1)) {
             DEBUGMSGTL(("container","not inserting duplicate key\n"));
             return -1;
         }
@@ -355,22 +428,20 @@
      */
     if (t->max_size <= t->count) {
         /*
-         * Table is full, so extend it to double the size
+         * Table is full, so extend it to double the size, or use 10 elements
+         * if it is empty.
          */
-        new_max = 2 * t->max_size;
-        if (new_max == 0)
-            new_max = 10;       /* Start with 10 entries */
+        size_t const new_max = t->max_size > 0 ? 2 * t->max_size : 10;
+        void ** const new_data =
+            (void**) realloc(t->data, new_max * sizeof(void*));
 
-        new_size = new_max * t->data_size;
-        new_data = (char *) realloc(t->data, new_size);
         if (new_data == NULL)
             return -1;
-        else {
-            int old_size = t->max_size * t->data_size;
-            int count = new_size - old_size;
-            memset(&new_data[old_size], 0x0, count);
-        }
-        t->data = (void**)new_data;
+
+        memset(new_data + t->max_size, 0x0,
+               (new_max - t->max_size) * sizeof(void*));
+
+        t->data = new_data;
         t->max_size = new_max;
     }
 
@@ -379,6 +450,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;
 }
 
@@ -425,7 +505,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;
@@ -433,8 +513,13 @@
     /*
      * if there is no data, return NULL;
      */
-    if (!t->count || !key)
-        return 0;
+    if (!c || !key)
+        return NULL;
+
+    t = (binary_array_table*)c->container_data;
+    netsnmp_assert(c->ncompare);
+    if (!t->count | !c->ncompare)
+        return NULL;
 
     /*
      * if the table is dirty, sort it.
@@ -447,7 +532,7 @@
      */
     start = end = binary_search_for_start((netsnmp_index *)key, c);
     if (start == -1)
-        return 0;
+        return NULL;
 
     for (i = start + 1; i < t->count; ++i) {
         if (0 != c->ncompare(t->data[i], key))
@@ -456,9 +541,9 @@
     }
 
     *len = end - start + 1;
-    subset = (void **)malloc((*len) * t->data_size);
+    subset = (void **)malloc((*len) * sizeof(void*));
     if (subset)
-        memcpy(subset, &t->data[start], t->data_size * (*len));
+        memcpy(subset, &t->data[start], sizeof(void*) * (*len));
 
     return subset;
 }
@@ -543,6 +628,60 @@
     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;
+
+    /*
+     * shallow copy
+     */
+    dupt->data = (void**) malloc(dupt->max_size * sizeof(void*));
+    if (NULL == dupt->data) {
+        snmp_log(LOG_ERR, "no memory for binary array duplicate\n");
+        netsnmp_binary_array_release(dup);
+        return NULL;
+    }
+
+    memcpy(dupt->data, t->data, dupt->max_size * sizeof(void*));
+
+    return dup;
+}
+
 netsnmp_container *
 netsnmp_container_get_binary_array(void)
 {
@@ -556,18 +695,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;
 }
@@ -680,6 +820,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);
@@ -728,6 +887,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_iterator.c b/snmplib/container_iterator.c
index e26d99e..41b14ff 100644
--- a/snmplib/container_iterator.c
+++ b/snmplib/container_iterator.c
@@ -4,6 +4,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #if HAVE_STDLIB_H
@@ -28,6 +29,9 @@
 
 #include <net-snmp/library/container_iterator.h>
 
+netsnmp_feature_child_of(container_iterator, container_types)
+
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_ITERATOR
 /**
  *  Holds iterator information containing functions which should be called
  *  by the iterator_handler to loop over your data set and sort it in a
@@ -504,3 +508,6 @@
     ii->remove_data = remove_data;
     ii->get_size = get_size;
 }
+#else  /* NETSNMP_FEATURE_REMOVE_CONTAINER_ITERATOR */
+netsnmp_feature_unused(container_iterator);
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_ITERATOR */
diff --git a/snmplib/container_list_ssll.c b/snmplib/container_list_ssll.c
index 8782fd0..7ff01c4 100644
--- a/snmplib/container_list_ssll.c
+++ b/snmplib/container_list_ssll.c
@@ -4,6 +4,7 @@
  *
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #if HAVE_STDLIB_H
@@ -28,6 +29,19 @@
 
 #include <net-snmp/library/container_list_ssll.h>
 
+netsnmp_feature_child_of(container_linked_list, container_types)
+netsnmp_feature_child_of(container_fifo, container_types)
+netsnmp_feature_child_of(container_lifo, container_types)
+
+/* this is a fancy way of cleaning up ifdefs */
+#ifdef NETSNMP_FEATURE_REQUIRE_CONTAINER_FIFO
+netsnmp_feature_require(container_linked_list)
+#endif /* NETSNMP_FEATURE_REQUIRE_CONTAINER_FIFO */
+#ifdef NETSNMP_FEATURE_REQUIRE_CONTAINER_LIFO
+netsnmp_feature_require(container_linked_list)
+#endif /* NETSNMP_FEATURE_REQUIRE_CONTAINER_LIFO */
+
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_LINKED_LIST
 typedef struct sl_node {
    void           *data;
    struct sl_node *next;
@@ -44,6 +58,15 @@
 
 } sl_container;
 
+typedef struct ssll_iterator_s {
+    netsnmp_iterator base;
+ 
+    sl_node         *pos;
+    sl_node         *last;
+} ssll_iterator;
+
+static netsnmp_iterator *_ssll_iterator_get(netsnmp_container *c);
+
 
 static void *
 _get(netsnmp_container *c, const void *key, int exact)
@@ -85,12 +108,13 @@
  *
  *
  **********************************************************************/
-static void
+static int
 _ssll_free(netsnmp_container *c)
 {
     if(c) {
         free(c);
     }
+    return 0;
 }
 
 static void *
@@ -125,6 +149,7 @@
         return -1;
     new_node->data = NETSNMP_REMOVE_CONST(void *, data);
     ++sl->count;
+    ++c->sync;
 
     /*
      * first node?
@@ -223,6 +248,7 @@
      */
     free(curr);
     --sl->count;
+    ++c->sync;
     
     return 0;
 }
@@ -278,6 +304,7 @@
     }
     sl->head = NULL;
     sl->count = 0;
+    ++c->sync;
 }
 
 /**********************************************************************
@@ -297,16 +324,12 @@
         return NULL;
     }
 
-    sl->c.cfree = (netsnmp_container_rc*)_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 = NULL;
+    sl->c.get_iterator =_ssll_iterator_get;
     sl->c.for_each = _ssll_for_each;
     sl->c.clear = _ssll_clear;
 
@@ -391,3 +414,157 @@
                                netsnmp_container_get_fifo_factory());
 }
 
+
+/**********************************************************************
+ *
+ * iterator
+ *
+ */
+NETSNMP_STATIC_INLINE sl_container *
+_ssll_it2cont(ssll_iterator *it)
+{
+    if(NULL == it) {
+        netsnmp_assert(NULL != it);
+        return NULL;
+    }
+
+    if(NULL == it->base.container) {
+        netsnmp_assert(NULL != it->base.container);
+        return NULL;
+    }
+
+    if(it->base.container->sync != it->base.sync) {
+        DEBUGMSGTL(("container:iterator", "out of sync\n"));
+        return NULL;
+    }
+
+    return (sl_container *)it->base.container;
+}
+
+static void *
+_ssll_iterator_curr(ssll_iterator *it)
+{
+    sl_container *t = _ssll_it2cont(it);
+    if ((NULL == t) || (NULL == it->pos))
+        return NULL;
+
+    return it->pos->data;
+}
+
+static void *
+_ssll_iterator_first(ssll_iterator *it)
+{
+    sl_container *t = _ssll_it2cont(it);
+    if ((NULL == t) || (NULL == t->head))
+        return NULL;
+
+    return t->head->data;
+}
+
+static void *
+_ssll_iterator_next(ssll_iterator *it)
+{
+    sl_container *t = _ssll_it2cont(it);
+    if ((NULL == t) || (NULL == it->pos))
+        return NULL;
+
+    it->pos = it->pos->next;
+    if (NULL == it->pos)
+        return NULL;
+
+    return it->pos->data;
+}
+
+static void *
+_ssll_iterator_last(ssll_iterator *it)
+{
+    sl_node      *n;
+    sl_container *t = _ssll_it2cont(it);
+    if(NULL == t)
+        return NULL;
+    
+    if (it->last)
+        return it->last;
+
+    n = it->pos ? it->pos : t->head;
+    if (NULL == n)
+        return NULL;
+
+    while(n->next)
+        n = n->next;
+
+    if (NULL == n)
+        return NULL;
+
+    it->last = n;
+
+    return it->last->data;
+}
+
+static int
+_ssll_iterator_reset(ssll_iterator *it)
+{
+    sl_container *t;
+
+    /** can't use it2conf cuz we might be out of sync */
+    if(NULL == it) {
+        netsnmp_assert(NULL != it);
+        return 0;
+    }
+
+    if(NULL == it->base.container) {
+        netsnmp_assert(NULL != it->base.container);
+        return 0;
+    }
+    t = (sl_container *)it->base.container;
+    if(NULL == t)
+        return -1;
+
+    it->last = NULL;
+    it->pos = t->head;
+
+    /*
+     * save sync count, to make sure container doesn't change while
+     * iterator is in use.
+     */
+    it->base.sync = it->base.container->sync;
+
+    return 0;
+}
+
+static int
+_ssll_iterator_release(netsnmp_iterator *it)
+{
+    free(it);
+
+    return 0;
+}
+
+static netsnmp_iterator *
+_ssll_iterator_get(netsnmp_container *c)
+{
+    ssll_iterator* it;
+
+    if(NULL == c)
+        return NULL;
+
+    it = SNMP_MALLOC_TYPEDEF(ssll_iterator);
+    if(NULL == it)
+        return NULL;
+
+    it->base.container = c;
+    
+    it->base.first = (netsnmp_iterator_rtn*)_ssll_iterator_first;
+    it->base.next = (netsnmp_iterator_rtn*)_ssll_iterator_next;
+    it->base.curr = (netsnmp_iterator_rtn*)_ssll_iterator_curr;
+    it->base.last = (netsnmp_iterator_rtn*)_ssll_iterator_last;
+    it->base.reset = (netsnmp_iterator_rc*)_ssll_iterator_reset;
+    it->base.release = (netsnmp_iterator_rc*)_ssll_iterator_release;
+
+    (void)_ssll_iterator_reset(it);
+
+    return (netsnmp_iterator *)it;
+}
+#else /* NETSNMP_FEATURE_REMOVE_CONTAINER_LINKED_LIST */
+netsnmp_feature_unused(container_linked_list);
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_LINKED_LIST */
diff --git a/snmplib/container_null.c b/snmplib/container_null.c
index 10082af..1f4870e 100644
--- a/snmplib/container_null.c
+++ b/snmplib/container_null.c
@@ -7,6 +7,7 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #if HAVE_IO_H
 #include <io.h>
@@ -33,6 +34,8 @@
 #include <net-snmp/library/tools.h>
 #include <net-snmp/library/snmp_assert.h>
 
+netsnmp_feature_child_of(container_null, container_types)
+
 /** @defgroup null_container null_container
  *  Helps you implement specialized containers.
  *  @ingroup container
@@ -50,6 +53,7 @@
  *  @{
  */
 
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_NULL
 /**********************************************************************
  *
  * container
@@ -156,7 +160,7 @@
     c->find = _null_find;
     c->find_next = _null_find_next;
     c->get_subset = _null_get_subset;
-    c->get_iterator = 0; /* _null_iterator; */
+    c->get_iterator = NULL; /* _null_iterator; */
     c->for_each = _null_for_each;
     c->clear = _null_clear;
        
@@ -180,5 +184,8 @@
     netsnmp_container_register("null",
                                netsnmp_container_get_null_factory());
 }
+#else  /* NETSNMP_FEATURE_REMOVE_CONTAINER_NULL */
+netsnmp_feature_unused(container_null);
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_NULL */
 /**  @} */
 
diff --git a/snmplib/data_list.c b/snmplib/data_list.c
index 01a7d2c..505d4fc 100644
--- a/snmplib/data_list.c
+++ b/snmplib/data_list.c
@@ -4,14 +4,13 @@
  * $Id$
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
-/*
- * prototypes
- */
-NETSNMP_INLINE void
-netsnmp_data_list_add_node(netsnmp_data_list **head, netsnmp_data_list *node);
+netsnmp_feature_child_of(data_list_all, libnetsnmp)
 
+netsnmp_feature_child_of(data_list_add_data, data_list_all)
+netsnmp_feature_child_of(data_list_get_list_node, data_list_all)
 
 /** @defgroup data_list generic linked-list data handling with a string as a key.
  * @ingroup library
@@ -69,8 +68,8 @@
         return NULL;
     node->name = strdup(name);
     if (!node->name) {
-      free(node);
-      return NULL;
+        free(node);
+        return NULL;
     }
     node->data = data;
     node->free_func = beer;
@@ -78,18 +77,6 @@
 }
 
 /** adds data to a datalist
- * @note netsnmp_data_list_add_node is preferred
- * @param head a pointer to the head node of a data_list
- * @param node a node to stash in the data_list
- */
-/**  */
-NETSNMP_INLINE void
-netsnmp_add_list_data(netsnmp_data_list **head, netsnmp_data_list *node)
-{
-    netsnmp_data_list_add_node(head, node);
-}
-
-/** adds data to a datalist
  * @param head a pointer to the head node of a data_list
  * @param node a node to stash in the data_list
  */
@@ -102,12 +89,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,
@@ -131,12 +119,25 @@
 }
 
 /** adds data to a datalist
+ * @note netsnmp_data_list_add_node is preferred
+ * @param head a pointer to the head node of a data_list
+ * @param node a node to stash in the data_list
+ */
+/**  */
+NETSNMP_INLINE void
+netsnmp_add_list_data(netsnmp_data_list **head, netsnmp_data_list *node)
+{
+    netsnmp_data_list_add_node(head, node);
+}
+
+/** adds data to a datalist
  * @param head a pointer to the head node of a data_list
  * @param name the name of the node to cache the data.
  * @param data the data to be stored under that name
  * @param beer A function that can free the data pointer (in the future)
  * @return a newly created data_list node which was inserted in the list
  */
+#ifndef NETSNMP_FEATURE_REMOVE_DATA_LIST_ADD_DATA
 NETSNMP_INLINE netsnmp_data_list *
 netsnmp_data_list_add_data(netsnmp_data_list **head, const char *name,
                            void *data, Netsnmp_Free_List_Data * beer)
@@ -156,6 +157,7 @@
 
     return node;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_DATA_LIST_ADD_DATA */
 
 /** returns a data_list node's data for a given name within a data_list
  * @param head the head node of a data_list
@@ -180,6 +182,7 @@
  * @param name the name to find
  * @return a pointer to the data_list node
  */
+#ifndef NETSNMP_FEATURE_REMOVE_DATA_LIST_GET_LIST_NODE
 NETSNMP_INLINE netsnmp_data_list    *
 netsnmp_get_list_node(netsnmp_data_list *head, const char *name)
 {
@@ -192,6 +195,7 @@
         return head;
     return NULL;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_DATA_LIST_GET_LIST_NODE */
 
 /** Removes a named node from a data_list (and frees it)
  * @param realhead a pointer to the head node of a data_list
diff --git a/snmplib/default_store.c b/snmplib/default_store.c
index 8e94057..8dbc9bc 100644
--- a/snmplib/default_store.c
+++ b/snmplib/default_store.c
@@ -126,6 +126,7 @@
  *  @{
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <sys/types.h>
 #if HAVE_STDLIB_H
 #include <stdlib.h>
@@ -141,9 +142,6 @@
 #else
 #include <strings.h>
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #if HAVE_UNISTD_H
 #include <unistd.h>
@@ -160,6 +158,14 @@
 
 #include <net-snmp/library/snmp_api.h>
 
+netsnmp_feature_child_of(default_store_all, libnetsnmp)
+
+netsnmp_feature_child_of(default_store_void, default_store_all)
+
+#ifndef NETSNMP_FEATURE_REMOVE_DEFAULT_STORE_VOID
+#endif /* NETSNMP_FEATURE_REMOVE_DEFAULT_STORE_VOID */
+
+
 static const char * stores [NETSNMP_DS_MAX_IDS] = { "LIB", "APP", "TOK" };
 
 typedef struct netsnmp_ds_read_config_s {
@@ -176,7 +182,9 @@
 static int   netsnmp_ds_integers[NETSNMP_DS_MAX_IDS][NETSNMP_DS_MAX_SUBIDS];
 static char  netsnmp_ds_booleans[NETSNMP_DS_MAX_IDS][NETSNMP_DS_MAX_SUBIDS/8];
 static char *netsnmp_ds_strings[NETSNMP_DS_MAX_IDS][NETSNMP_DS_MAX_SUBIDS];
+#ifndef NETSNMP_FEATURE_REMOVE_DEFAULT_STORE_VOID
 static void *netsnmp_ds_voids[NETSNMP_DS_MAX_IDS][NETSNMP_DS_MAX_SUBIDS];
+#endif /* NETSNMP_FEATURE_REMOVE_DEFAULT_STORE_VOID */
 
 /*
  * Prototype definitions 
@@ -316,6 +324,7 @@
     return netsnmp_ds_strings[storeid][which];
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_DEFAULT_STORE_VOID
 int
 netsnmp_ds_set_void(int storeid, int which, void *value)
 {
@@ -324,7 +333,7 @@
         return SNMPERR_GENERR;
     }
 
-    DEBUGMSGTL(("netsnmp_ds_set_void", "Setting %s:%d = %x\n",
+    DEBUGMSGTL(("netsnmp_ds_set_void", "Setting %s:%d = %p\n",
                 stores[storeid], which, value));
 
     netsnmp_ds_voids[storeid][which] = value;
@@ -342,6 +351,7 @@
 
     return netsnmp_ds_voids[storeid][which];
 }
+#endif /* NETSNMP_FEATURE_REMOVE_DEFAULT_STORE_VOID */
 
 int
 netsnmp_ds_parse_boolean(char *line)
@@ -442,10 +452,14 @@
 
     if (netsnmp_ds_configs == NULL) {
         netsnmp_ds_configs = SNMP_MALLOC_TYPEDEF(netsnmp_ds_read_config);
+        if (netsnmp_ds_configs == NULL)
+            return SNMPERR_GENERR;
         drsp = netsnmp_ds_configs;
     } else {
         for (drsp = netsnmp_ds_configs; drsp->next != NULL; drsp = drsp->next);
         drsp->next = SNMP_MALLOC_TYPEDEF(netsnmp_ds_read_config);
+        if (drsp->next == NULL)
+            return SNMPERR_GENERR;
         drsp = drsp->next;
     }
 
@@ -488,10 +502,14 @@
 
     if (netsnmp_ds_configs == NULL) {
         netsnmp_ds_configs = SNMP_MALLOC_TYPEDEF(netsnmp_ds_read_config);
+        if (netsnmp_ds_configs == NULL)
+            return SNMPERR_GENERR;
         drsp = netsnmp_ds_configs;
     } else {
         for (drsp = netsnmp_ds_configs; drsp->next != NULL; drsp = drsp->next);
         drsp->next = SNMP_MALLOC_TYPEDEF(netsnmp_ds_read_config);
+        if (drsp->next == NULL)
+            return SNMPERR_GENERR;
         drsp = drsp->next;
     }
 
@@ -522,7 +540,7 @@
 }
 
 void
-netsnmp_ds_shutdown()
+netsnmp_ds_shutdown(void)
 {
     netsnmp_ds_read_config *drsp;
     int             i, j;
diff --git a/snmplib/dir_utils.c b/snmplib/dir_utils.c
new file mode 100644
index 0000000..d35e700
--- /dev/null
+++ b/snmplib/dir_utils.c
@@ -0,0 +1,259 @@
+/* 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.
+ */
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <stdio.h>
+#include <ctype.h>
+#if HAVE_STDLIB_H
+#   include <stdlib.h>
+#endif
+#if HAVE_UNISTD_H
+#   include <unistd.h>
+#endif
+#if HAVE_STRING_H
+#   include <string.h>
+#else
+#  include <strings.h>
+#endif
+
+#include <sys/types.h>
+#if HAVE_LIMITS_H
+#include <limits.h>
+#endif
+#if HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+
+#include <errno.h>
+
+#if HAVE_DMALLOC_H
+#  include <dmalloc.h>
+#endif
+
+#include <net-snmp/types.h>
+#include <net-snmp/library/container.h>
+#include <net-snmp/library/file_utils.h>
+#include <net-snmp/library/dir_utils.h>
+
+netsnmp_feature_child_of(container_directory, container_types)
+#ifdef NETSNMP_FEATURE_REQUIRE_CONTAINER_DIRECTORY
+netsnmp_feature_require(file_utils)
+netsnmp_feature_require(container_free_all)
+#endif /* NETSNMP_FEATURE_REQUIRE_CONTAINER_DIRECTORY */
+
+#ifndef NETSNMP_FEATURE_REMOVE_CONTAINER_DIRECTORY
+static int
+_insert_nsfile( netsnmp_container *c, const char *name, struct stat *stats,
+                u_int flags);
+
+/*
+ * read file names in a directory, with an optional filter
+ */
+netsnmp_container *
+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[SNMP_MAXPATH];
+    size_t             dirname_len;
+    int                rc;
+    struct stat        statbuf;
+    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));
+
+    /*
+     * create the container, if needed
+     */
+    if (NULL == container) {
+        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(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 */
+    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';
+    }
+
+    /** iterate over dir */
+    while ((file = readdir(dir))) {
+
+        if ((file->d_name == NULL) || (file->d_name[0] == 0))
+            continue;
+
+        /** skip '.' and '..' */
+        if ((file->d_name[0] == '.') &&
+            ((file->d_name[1] == 0) ||
+             ((file->d_name[1] == '.') && ((file->d_name[2] == 0)))))
+            continue;
+
+        strlcpy(&path[dirname_len], file->d_name, sizeof(path) - dirname_len);
+        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)
+            && (file->d_type == DT_DIR)
+#elif defined(S_ISDIR)
+            && (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 while building directory container\n");
+                break;
+            }
+            rc = CONTAINER_INSERT(container, dup);
+            if (-1 == rc ) {
+                DEBUGMSGTL(("directory:container", "  err adding %s\n", path));
+                free(dup);
+            }
+        }
+    } /* while */
+
+    closedir(dir);
+
+    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;
+}
+
+void
+netsnmp_directory_container_free(netsnmp_container *container)
+{
+    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 if (stat(ns_file->name, ns_file->stats) < 0) {
+            snmp_log(LOG_ERR, "stat() failed for ns_file\n");
+            netsnmp_file_release(ns_file);
+            return -1;
+        }
+    }
+
+    rc = CONTAINER_INSERT(c, ns_file);
+    if (-1 == rc ) {
+        DEBUGMSGTL(("directory:container", "  err adding %s\n", name));
+        netsnmp_file_release(ns_file);
+    }
+
+    return 0;
+}
+#else  /* NETSNMP_FEATURE_REMOVE_CONTAINER_DIRECTORY */
+netsnmp_feature_unused(container_directory);
+#endif /* NETSNMP_FEATURE_REMOVE_CONTAINER_DIRECTORY */
diff --git a/snmplib/fd_event_manager.c b/snmplib/fd_event_manager.c
index c81cfde..f9cf08e 100644
--- a/snmplib/fd_event_manager.c
+++ b/snmplib/fd_event_manager.c
@@ -4,9 +4,15 @@
 #include <sys/select.h>
 #endif
 #include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/library/snmp_api.h>
 #include <net-snmp/library/fd_event_manager.h>
 #include <net-snmp/library/snmp_logging.h>
+#include <net-snmp/library/large_fd_set.h>
+
+netsnmp_feature_child_of(fd_event_manager, libnetsnmp)
+
+#ifndef NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER
 int     external_readfd[NUM_EXTERNAL_FDS],   external_readfdlen   = 0;
 int     external_writefd[NUM_EXTERNAL_FDS],  external_writefdlen  = 0;
 int     external_exceptfd[NUM_EXTERNAL_FDS], external_exceptfdlen = 0;
@@ -159,22 +165,55 @@
  */
 void netsnmp_external_event_info(int *numfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
 {
+  netsnmp_large_fd_set lreadfds;
+  netsnmp_large_fd_set lwritefds;
+  netsnmp_large_fd_set lexceptfds;
+
+  netsnmp_large_fd_set_init(&lreadfds, FD_SETSIZE);
+  netsnmp_large_fd_set_init(&lwritefds, FD_SETSIZE);
+  netsnmp_large_fd_set_init(&lexceptfds, FD_SETSIZE);
+
+  netsnmp_copy_fd_set_to_large_fd_set(&lreadfds, readfds);
+  netsnmp_copy_fd_set_to_large_fd_set(&lwritefds, writefds);
+  netsnmp_copy_fd_set_to_large_fd_set(&lexceptfds, exceptfds);
+
+  netsnmp_external_event_info2(numfds, &lreadfds, &lwritefds, &lexceptfds);
+
+  if (netsnmp_copy_large_fd_set_to_fd_set(readfds, &lreadfds) < 0
+      || netsnmp_copy_large_fd_set_to_fd_set(writefds, &lwritefds) < 0
+      || netsnmp_copy_large_fd_set_to_fd_set(exceptfds, &lexceptfds) < 0)
+  {
+    snmp_log(LOG_ERR,
+	     "Use netsnmp_external_event_info2() for processing"
+	     " large file descriptors\n");
+  }
+
+  netsnmp_large_fd_set_cleanup(&lreadfds);
+  netsnmp_large_fd_set_cleanup(&lwritefds);
+  netsnmp_large_fd_set_cleanup(&lexceptfds);
+}
+
+void netsnmp_external_event_info2(int *numfds,
+                                  netsnmp_large_fd_set *readfds,
+                                  netsnmp_large_fd_set *writefds,
+                                  netsnmp_large_fd_set *exceptfds)
+{
   int i;
 
   external_fd_unregistered = 0;
 
   for (i = 0; i < external_readfdlen; i++) {
-    FD_SET(external_readfd[i], readfds);
+    NETSNMP_LARGE_FD_SET(external_readfd[i], readfds);
     if (external_readfd[i] >= *numfds)
       *numfds = external_readfd[i] + 1;
   }
   for (i = 0; i < external_writefdlen; i++) {
-    FD_SET(external_writefd[i], writefds);
+    NETSNMP_LARGE_FD_SET(external_writefd[i], writefds);
     if (external_writefd[i] >= *numfds)
       *numfds = external_writefd[i] + 1;
   }
   for (i = 0; i < external_exceptfdlen; i++) {
-    FD_SET(external_exceptfd[i], exceptfds);
+    NETSNMP_LARGE_FD_SET(external_exceptfd[i], exceptfds);
     if (external_exceptfd[i] >= *numfds)
       *numfds = external_exceptfd[i] + 1;
   }
@@ -185,38 +224,74 @@
  */
 void netsnmp_dispatch_external_events(int *count, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
 {
+  netsnmp_large_fd_set lreadfds;
+  netsnmp_large_fd_set lwritefds;
+  netsnmp_large_fd_set lexceptfds;
+
+  netsnmp_large_fd_set_init(&lreadfds, FD_SETSIZE);
+  netsnmp_large_fd_set_init(&lwritefds, FD_SETSIZE);
+  netsnmp_large_fd_set_init(&lexceptfds, FD_SETSIZE);
+
+  netsnmp_copy_fd_set_to_large_fd_set(&lreadfds, readfds);
+  netsnmp_copy_fd_set_to_large_fd_set(&lwritefds, writefds);
+  netsnmp_copy_fd_set_to_large_fd_set(&lexceptfds, exceptfds);
+
+  netsnmp_dispatch_external_events2(count, &lreadfds, &lwritefds, &lexceptfds);
+
+  if (netsnmp_copy_large_fd_set_to_fd_set(readfds, &lreadfds) < 0
+      || netsnmp_copy_large_fd_set_to_fd_set(writefds,  &lwritefds) < 0
+      || netsnmp_copy_large_fd_set_to_fd_set(exceptfds, &lexceptfds) < 0)
+  {
+    snmp_log(LOG_ERR,
+	     "Use netsnmp_dispatch_external_events2() for processing"
+	     " large file descriptors\n");
+  }
+
+  netsnmp_large_fd_set_cleanup(&lreadfds);
+  netsnmp_large_fd_set_cleanup(&lwritefds);
+  netsnmp_large_fd_set_cleanup(&lexceptfds);
+}
+
+void netsnmp_dispatch_external_events2(int *count,
+                                       netsnmp_large_fd_set *readfds,
+                                       netsnmp_large_fd_set *writefds,
+                                       netsnmp_large_fd_set *exceptfds)
+{
   int i;
   for (i = 0;
        *count && (i < external_readfdlen) && !external_fd_unregistered; i++) {
-      if (FD_ISSET(external_readfd[i], readfds)) {
+      if (NETSNMP_LARGE_FD_ISSET(external_readfd[i], readfds)) {
           DEBUGMSGTL(("fd_event_manager:netsnmp_dispatch_external_events", 
                      "readfd[%d] = %d\n", i, external_readfd[i]));
           external_readfdfunc[i] (external_readfd[i],
                                   external_readfd_data[i]);
-          FD_CLR(external_readfd[i], readfds);
+          NETSNMP_LARGE_FD_CLR(external_readfd[i], readfds);
           (*count)--;
       }
   }
   for (i = 0;
        *count && (i < external_writefdlen) && !external_fd_unregistered; i++) {
-      if (FD_ISSET(external_writefd[i], writefds)) {
+      if (NETSNMP_LARGE_FD_ISSET(external_writefd[i], writefds)) {
           DEBUGMSGTL(("fd_event_manager:netsnmp_dispatch_external_events", 
                      "writefd[%d] = %d\n", i, external_writefd[i]));
           external_writefdfunc[i] (external_writefd[i],
                                    external_writefd_data[i]);
-          FD_CLR(external_writefd[i], writefds);
+          NETSNMP_LARGE_FD_CLR(external_writefd[i], writefds);
           (*count)--;
       }
   }
   for (i = 0;
        *count && (i < external_exceptfdlen) && !external_fd_unregistered; i++) {
-      if (FD_ISSET(external_exceptfd[i], exceptfds)) {
+      if (NETSNMP_LARGE_FD_ISSET(external_exceptfd[i], exceptfds)) {
           DEBUGMSGTL(("fd_event_manager:netsnmp_dispatch_external_events", 
                      "exceptfd[%d] = %d\n", i, external_exceptfd[i]));
           external_exceptfdfunc[i] (external_exceptfd[i],
                                     external_exceptfd_data[i]);
-          FD_CLR(external_exceptfd[i], exceptfds);
+          NETSNMP_LARGE_FD_CLR(external_exceptfd[i], exceptfds);
           (*count)--;
       }
   }
 }
+#else  /*  !NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER */
+netsnmp_feature_unused(fd_event_manager);
+#endif /*  !NETSNMP_FEATURE_REMOVE_FD_EVENT_MANAGER */
diff --git a/snmplib/file_utils.c b/snmplib/file_utils.c
index 8f7fb6a..5261431 100644
--- a/snmplib/file_utils.c
+++ b/snmplib/file_utils.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
 #include <stdio.h>
@@ -37,7 +38,11 @@
 #include <net-snmp/library/container.h>
 #include <net-snmp/library/file_utils.h>
 
+netsnmp_feature_child_of(file_utils_all, libnetsnmp)
+netsnmp_feature_child_of(file_utils, file_utils_all)
+netsnmp_feature_child_of(file_close, file_utils_all)
 
+#ifndef NETSNMP_FEATURE_REMOVE_FILE_UTILS
 /*------------------------------------------------------------------
  *
  * Prototypes
@@ -77,6 +82,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 +130,7 @@
 
     filei->fs_flags = fs_flags;
     filei->ns_flags = ns_flags;
+    filei->mode = mode;
 
     return filei;
 }
@@ -126,6 +157,9 @@
     if (NULL != filei->extras)
         netsnmp_free_all_list_data(filei->extras);
 
+    if (NULL != filei->stats)
+        free(filei->stats);
+
     SNMP_FREE(filei);
 
     return rc;
@@ -161,7 +195,7 @@
         filei->fd = open(filei->name, filei->fs_flags, filei->mode);
 
     if (filei->fd < 0) {
-        snmp_log(LOG_ERR, "error opening %s (%d)\n", filei->name, errno);
+        DEBUGMSGTL(("netsnmp_file", "error opening %s (%d)\n", filei->name, errno));
     }
 
     /*
@@ -177,6 +211,7 @@
  * @retval  0 : success
  * @retval -1 : error
  */
+#ifndef NETSNMP_FEATURE_REMOVE_FILE_CLOSE
 int
 netsnmp_file_close(netsnmp_file * filei)
 {
@@ -200,11 +235,29 @@
      */
     rc = close(filei->fd);
     if (rc < 0) {
-        snmp_log(LOG_ERR, "error closing %s (%d)\n", filei->name, errno);
+        DEBUGMSGTL(("netsnmp_file", "error closing %s (%d)\n", filei->name, errno));
     }
     else
         filei->fd = -1;
 
     return rc;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_FILE_CLOSE */
 
+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);
+}
+#else /* NETSNMP_FEATURE_REMOVE_FILE_UTILS */
+netsnmp_feature_unused(file_utils);
+#endif /* NETSNMP_FEATURE_REMOVE_FILE_UTILS */
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..df5c0a0
--- /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 = (long)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 0a03a8f..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
@@ -52,9 +47,6 @@
 #ifndef INT16SZ
 #define	INT16SZ		2
 #endif
-  /*
-   * End of Net-SNMP Win32 additions
-   */
 
 #ifndef INADDRSZ
 #define	INADDRSZ	4
@@ -82,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) {
@@ -317,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 ea56673..51f1f32 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>
@@ -26,6 +23,8 @@
 #include <net-snmp/library/snmp_debug.h>
 #include <net-snmp/library/snmp_logging.h>
 
+#include <net-snmp/net-snmp-features.h>
+
 /**
  * Divide an unsigned 64-bit integer by 10.
  *
@@ -200,6 +199,8 @@
     u64Incr(pu64out, &tmp);
 }
 
+netsnmp_feature_child_of(u64copy, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_U64COPY
 /**
  * Copy a 64-bit number.
  *
@@ -211,6 +212,7 @@
 {
     *pu64one = *pu64two;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_U64COPY */
 
 /**
  * Set an unsigned 64-bit number to zero.
@@ -266,7 +268,7 @@
     if( (NULL == old_val) || (NULL == new_val) )
         return -1;
 
-    DEBUGMSGTL(("9:c64:check_wrap", "check wrap 0x%0x.0x%0x 0x%0x.0x%0x\n",
+    DEBUGMSGTL(("9:c64:check_wrap", "check wrap 0x%0lx.0x%0lx 0x%0lx.0x%0lx\n",
                 old_val->high, old_val->low, new_val->high, new_val->low));
     
     /*
@@ -345,7 +347,7 @@
     if ((NULL == need_wrap_check) || (0 != *need_wrap_check)) {
         rc = netsnmp_c64_check_for_32bit_wrap(old_prev_val,new_val, 1);
         if (rc < 0) {
-            snmp_log(LOG_ERR,"c64 32 bit check failed\n");
+            DEBUGMSGTL(("c64","32 bit check failed\n"));
             return -1;
         }
     }
@@ -375,7 +377,7 @@
          */
         if ((prev_val->low != new_val->low) ||
             (prev_val->high != new_val->high)) {
-            snmp_log(LOG_ERR, "looks like a 64bit wrap, but prev!=new\n");
+            DEBUGMSGTL(("c64", "looks like a 64bit wrap, but prev!=new\n"));
             return -2;
         }
         else if (NULL != need_wrap_check)
@@ -442,7 +444,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 aa6a712..0ccb3a6 100644
--- a/snmplib/keytools.c
+++ b/snmplib/keytools.c
@@ -14,12 +14,10 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #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 +49,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>
@@ -61,6 +63,11 @@
 
 #include <net-snmp/library/transform_oids.h>
 
+netsnmp_feature_child_of(usm_support, libnetsnmp)
+netsnmp_feature_child_of(usm_keytools, usm_support)
+
+#ifndef NETSNMP_FEATURE_REMOVE_USM_KEYTOOLS
+
 /*******************************************************************-o-******
  * generate_Ku
  *
@@ -96,11 +103,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 +119,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
@@ -137,17 +153,35 @@
     ctx = EVP_MD_CTX_create();
 #else
     ctx = malloc(sizeof(*ctx));
-    EVP_MD_CTX_init(ctx);
+    if (!EVP_MD_CTX_init(ctx))
+        return SNMPERR_GENERR;
 #endif
 #ifndef NETSNMP_DISABLE_MD5
-    if (ISTRANSFORM(hashtype, HMACMD5Auth))
-        EVP_DigestInit(ctx, EVP_md5());
-    else
+    if (ISTRANSFORM(hashtype, HMACMD5Auth)) {
+        if (!EVP_DigestInit(ctx, EVP_md5()))
+            return SNMPERR_GENERR;
+    } else
 #endif
-        if (ISTRANSFORM(hashtype, HMACSHA1Auth))
-        EVP_DigestInit(ctx, EVP_sha1());
-    else
+        if (ISTRANSFORM(hashtype, HMACSHA1Auth)) {
+            if (!EVP_DigestInit(ctx, EVP_sha1()))
+                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 */
@@ -159,29 +193,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));
@@ -292,10 +351,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;
@@ -324,7 +383,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);
     }
 
@@ -403,9 +462,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;
 
@@ -427,15 +487,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
@@ -456,7 +516,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 */
@@ -476,7 +536,7 @@
 
         kcstring += properlength;
         nbytes = 0;
-        while ((int) (nbytes++) < properlength) {
+        while ((nbytes++) < properlength) {
             *kcstring++ ^= *newkey++;
         }
     }
@@ -531,7 +591,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;
@@ -588,7 +648,7 @@
         memcpy(newkey, tmp_buf, properlength);
         bufp = kcstring + properlength;
         nbytes = 0;
-        while ((int) (nbytes++) < properlength) {
+        while ((nbytes++) < properlength) {
             *newkey++ ^= *bufp++;
         }
     }
@@ -599,8 +659,7 @@
             memset(newkey, 0, properlength);
     }
     memset(tmp_buf, 0, SNMP_MAXBUF);
-    if (tmpbuf != NULL)
-        SNMP_FREE(tmpbuf);
+    SNMP_FREE(tmpbuf);
 
     return rval;
 
@@ -609,3 +668,4 @@
 #else
 _KEYTOOLS_NOT_AVAILABLE
 #endif                          /* internal or openssl */
+#endif /* NETSNMP_FEATURE_REMOVE_USM_KEYTOOLS */
diff --git a/snmplib/large_fd_set.c b/snmplib/large_fd_set.c
new file mode 100644
index 0000000..88dd481
--- /dev/null
+++ b/snmplib/large_fd_set.c
@@ -0,0 +1,260 @@
+/**
+ * @file large_fd_set.c
+ *
+ * @brief Macro's and functions for manipulation of large file descriptor sets.
+ */
+
+
+#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
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/library/snmp_assert.h>
+#include <net-snmp/library/large_fd_set.h>
+
+
+#if !defined(cygwin) && defined(HAVE_WINSOCK_H)
+
+#define LFD_SET(n, p)    FD_SET(n, p)
+#define LFD_CLR(n, p)    FD_CLR(n, p)
+#define LFD_ISSET(n, p)  FD_ISSET(n, p)
+
+void
+netsnmp_large_fd_setfd(SOCKET fd, netsnmp_large_fd_set * fdset)
+{
+    unsigned        i;
+
+    netsnmp_assert(fd != INVALID_SOCKET);
+
+    if (fdset->lfs_set.fd_count == fdset->lfs_setsize)
+        netsnmp_large_fd_set_resize(fdset, 2 * (fdset->lfs_setsize + 1));
+
+    for (i = 0; i < fdset->lfs_set.fd_count; i++) {
+        if (fdset->lfs_set.fd_array[i] == (SOCKET) (fd))
+            break;
+    }
+
+    if (i == fdset->lfs_set.fd_count
+        && fdset->lfs_set.fd_count < fdset->lfs_setsize) {
+        fdset->lfs_set.fd_count++;
+        fdset->lfs_set.fd_array[i] = fd;
+    }
+}
+
+void
+netsnmp_large_fd_clr(SOCKET fd, netsnmp_large_fd_set * fdset)
+{
+    unsigned        i;
+
+    netsnmp_assert(fd != INVALID_SOCKET);
+
+    for (i = 0; i < fdset->lfs_set.fd_count; i++) {
+        if (fdset->lfs_set.fd_array[i] == fd) {
+            while (i < fdset->lfs_set.fd_count - 1) {
+                fdset->lfs_set.fd_array[i] =
+                    fdset->lfs_set.fd_array[i + 1];
+                i++;
+            }
+            fdset->lfs_set.fd_count--;
+            break;
+        }
+    }
+}
+
+int
+netsnmp_large_fd_is_set(SOCKET fd, netsnmp_large_fd_set * fdset)
+{
+    unsigned int    i;
+
+    netsnmp_assert(fd != INVALID_SOCKET);
+
+    for (i = 0; i < fdset->lfs_set.fd_count; i++) {
+        if (fdset->lfs_set.fd_array[i] == fd)
+            return 1;
+    }
+    return 0;
+}
+
+#else
+
+/*
+ * Recent versions of glibc trigger abort() if FD_SET(), FD_CLR() or
+ * FD_ISSET() is invoked with n >= FD_SETSIZE. Hence these replacement macros.
+ */
+#define LFD_SET(n, p)    ((p)->fds_bits[(n)/NFDBITS] |=  (1ULL << ((n) % NFDBITS)))
+#define LFD_CLR(n, p)    ((p)->fds_bits[(n)/NFDBITS] &= ~(1ULL << ((n) % NFDBITS)))
+#define LFD_ISSET(n, p)  ((p)->fds_bits[(n)/NFDBITS] &   (1ULL << ((n) % NFDBITS)))
+
+void
+netsnmp_large_fd_setfd(int fd, netsnmp_large_fd_set * fdset)
+{
+    netsnmp_assert(fd >= 0);
+
+    while (fd >= (int)fdset->lfs_setsize)
+        netsnmp_large_fd_set_resize(fdset, 2 * (fdset->lfs_setsize + 1));
+
+    LFD_SET(fd, fdset->lfs_setptr);
+}
+
+void
+netsnmp_large_fd_clr(int fd, netsnmp_large_fd_set * fdset)
+{
+    netsnmp_assert(fd >= 0);
+
+    if ((unsigned)fd < fdset->lfs_setsize)
+        LFD_CLR(fd, fdset->lfs_setptr);
+}
+
+int
+netsnmp_large_fd_is_set(int fd, netsnmp_large_fd_set * fdset)
+{
+    netsnmp_assert(fd >= 0);
+
+    return ((unsigned)fd < fdset->lfs_setsize &&
+            LFD_ISSET(fd, fdset->lfs_setptr));
+}
+
+#endif
+
+void
+netsnmp_large_fd_set_init(netsnmp_large_fd_set * fdset, int setsize)
+{
+    fdset->lfs_setsize = 0;
+    fdset->lfs_setptr  = NULL;
+#if !defined(cygwin) && defined(HAVE_WINSOCK_H)
+    fdset->lfs_set.fd_count = 0;
+#endif
+    netsnmp_large_fd_set_resize(fdset, setsize);
+}
+
+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)
+{
+#if defined(cygwin) || !defined(HAVE_WINSOCK_H)
+    /* Bit-set representation: make sure all fds have at least size 'numfds'. */
+    if (readfds && readfds->lfs_setsize < numfds)
+        netsnmp_large_fd_set_resize(readfds, numfds);
+    if (writefds && writefds->lfs_setsize < numfds)
+        netsnmp_large_fd_set_resize(writefds, numfds);
+    if (exceptfds && exceptfds->lfs_setsize < numfds)
+        netsnmp_large_fd_set_resize(exceptfds, numfds);
+#else
+    /* Array representation: no resizing is necessary. */
+#endif
+
+    return select(numfds,
+            readfds ? readfds->lfs_setptr : NULL,
+            writefds ? writefds->lfs_setptr : NULL,
+            exceptfds ? exceptfds->lfs_setptr : NULL,
+            timeout);
+}
+
+int
+netsnmp_large_fd_set_resize(netsnmp_large_fd_set * fdset, int setsize)
+{
+    int             fd_set_bytes;
+
+    if (fdset->lfs_setsize == setsize)
+        goto success;
+
+    if (setsize > FD_SETSIZE) {
+        fd_set_bytes = NETSNMP_FD_SET_BYTES(setsize);
+        if (fdset->lfs_setsize > FD_SETSIZE) {
+            fdset->lfs_setptr = realloc(fdset->lfs_setptr, fd_set_bytes);
+            if (!fdset->lfs_setptr)
+                goto out_of_mem;
+        } else {
+            fdset->lfs_setptr = malloc(fd_set_bytes);
+            if (!fdset->lfs_setptr)
+                goto out_of_mem;
+            *fdset->lfs_setptr = fdset->lfs_set;
+        }
+    } else {
+        if (fdset->lfs_setsize > FD_SETSIZE) {
+            fdset->lfs_set = *fdset->lfs_setptr;
+            free(fdset->lfs_setptr);
+        }
+        fdset->lfs_setptr = &fdset->lfs_set;
+    }
+
+#if defined(cygwin) || !defined(HAVE_WINSOCK_H)
+    /*
+     * Unix: when enlarging, clear the file descriptors defined in the
+     * resized *fdset but that were not defined in the original *fdset.
+     */
+    if ( fdset->lfs_setsize == 0 && setsize == FD_SETSIZE ) {
+        /* In this case we can use the OS's FD_ZERO */
+        FD_ZERO(fdset->lfs_setptr);
+    } else {
+        int             i;
+
+        for (i = fdset->lfs_setsize; i < setsize; i++)
+            LFD_CLR(i, fdset->lfs_setptr);
+    }
+#endif
+
+    fdset->lfs_setsize = setsize;
+#if !defined(cygwin) && defined(HAVE_WINSOCK_H)
+    if (setsize < fdset->lfs_set.fd_count)
+        fdset->lfs_set.fd_count = setsize;
+#endif
+success:
+    return 1;
+
+out_of_mem:
+    fdset->lfs_setsize = 0;
+#if !defined(cygwin) && defined(HAVE_WINSOCK_H)
+    fdset->lfs_set.fd_count = 0;
+#endif
+    return 0;
+}
+
+void
+netsnmp_large_fd_set_cleanup(netsnmp_large_fd_set * fdset)
+{
+    netsnmp_large_fd_set_resize(fdset, 0);
+    fdset->lfs_setsize = 0;
+    fdset->lfs_setptr  = NULL;
+}
+
+void
+netsnmp_copy_fd_set_to_large_fd_set(netsnmp_large_fd_set * dst,
+                                    const fd_set * src)
+{
+    netsnmp_large_fd_set_resize(dst, FD_SETSIZE);
+    *dst->lfs_setptr = *src;
+}
+
+int
+netsnmp_copy_large_fd_set_to_fd_set(fd_set * dst,
+                                    const netsnmp_large_fd_set * src)
+{
+    /* Report failure if *src is larger than FD_SETSIZE. */
+    if (src->lfs_setsize > FD_SETSIZE) {
+        FD_ZERO(dst);
+        return -1;
+    }
+
+    *dst = *src->lfs_setptr;
+
+#if !(!defined(cygwin) && defined(HAVE_WINSOCK_H))
+    {
+        int             i;
+
+        /* Unix: clear any file descriptors defined in *dst but not in *src. */
+        for (i = src->lfs_setsize; i < FD_SETSIZE; ++i)
+            FD_CLR(i, dst);
+    }
+#endif
+
+    return 0;
+}
diff --git a/snmplib/lcd_time.c b/snmplib/lcd_time.c
index a3057dc..2bfa549 100644
--- a/snmplib/lcd_time.c
+++ b/snmplib/lcd_time.c
@@ -6,11 +6,9 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.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 +19,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
@@ -59,6 +53,11 @@
 
 #include <net-snmp/library/transform_oids.h>
 
+netsnmp_feature_child_of(usm_support, libnetsnmp)
+netsnmp_feature_child_of(usm_lcd_time, usm_support)
+
+#ifndef NETSNMP_FEATURE_REMOVE_USM_LCD_TIME
+
 /*
  * Global static hashlist to contain Enginetime entries.
  *
@@ -95,13 +94,13 @@
  *            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)
 {
     int             rval = SNMPERR_SUCCESS;
-    time_t          timediff = 0;
+    int             timediff = 0;
     Enginetime      e = NULL;
 
 
@@ -133,7 +132,7 @@
         *engine_time = e->engineTime;
         *engineboot = e->engineBoot;
 
-       timediff = snmpv3_local_snmpEngineTime() - e->lastReceivedEngineTime;
+       timediff = (int) (snmpv3_local_snmpEngineTime() - e->lastReceivedEngineTime);
 
 #ifdef LCD_TIME_SYNC_OPT
     }
@@ -197,7 +196,7 @@
                   u_int * last_engine_time, u_int authenticated)
 {
     int             rval = SNMPERR_SUCCESS;
-    time_t          timediff = 0;
+    int             timediff = 0;
     Enginetime      e = NULL;
 
 
@@ -229,7 +228,7 @@
         *last_engine_time = *engine_time = e->engineTime;
         *engineboot = e->engineBoot;
 
-       timediff = snmpv3_local_snmpEngineTime() - e->lastReceivedEngineTime;
+       timediff = (int) (snmpv3_local_snmpEngineTime() - e->lastReceivedEngineTime);
 
 #ifdef LCD_TIME_SYNC_OPT
     }
@@ -298,14 +297,14 @@
 void free_etimelist(void)
 {
      int index = 0;
-     Enginetime e = 0;
-     Enginetime nextE = 0;
+     Enginetime e = NULL;
+     Enginetime nextE = NULL;
 
      for( ; index < ETIMELIST_SIZE; ++index)
      {
            e = etimelist[index];
 
-           while(e != 0)
+           while(e != NULL)
            {
                  nextE = e->next;
                  SNMP_FREE(e->engineID);
@@ -313,7 +312,7 @@
                  e = nextE;
            }
 
-           etimelist[index] = 0;
+           etimelist[index] = NULL;
      }
      return;
 }
@@ -342,7 +341,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 +422,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 +480,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;
@@ -506,6 +505,12 @@
     rval = sc_hash(usmHMACMD5AuthProtocol,
                    sizeof(usmHMACMD5AuthProtocol) / sizeof(oid),
                    engineID, engineID_len, buf, &buf_len);
+    if (rval == SNMPERR_SC_NOT_CONFIGURED) {
+        /* fall back to sha1 */
+        rval = sc_hash(usmHMACSHA1AuthProtocol,
+                   sizeof(usmHMACSHA1AuthProtocol) / sizeof(oid),
+                   engineID, engineID_len, buf, &buf_len);
+    }
 #else
     rval = sc_hash(usmHMACSHA1AuthProtocol,
                    sizeof(usmHMACSHA1AuthProtocol) / sizeof(oid),
@@ -521,7 +526,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() */
 
@@ -606,3 +611,4 @@
 
 }                               /* end dump_etimelist() */
 #endif                          /* NETSNMP_ENABLE_TESTING_CODE */
+#endif /* NETSNMP_FEATURE_REMOVE_USM_LCD_TIME */
diff --git a/snmplib/md5.c b/snmplib/md5.c
index b128cca..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 = 0;
+    const u_char   *cp;
+    u_char         *newdata = NULL;
     int             rc = 0;
 
     /*
diff --git a/snmplib/mib.c b/snmplib/mib.c
index 7dcf3d0..e790878 100644
--- a/snmplib/mib.c
+++ b/snmplib/mib.c
@@ -38,19 +38,34 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #include <ctype.h>
 #include <sys/types.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_NETINET_IN_H
 #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,10 +86,6 @@
 #include <sys/select.h>
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
@@ -94,6 +105,19 @@
 #include <net-snmp/library/int64.h>
 #include <net-snmp/library/snmp_client.h>
 
+netsnmp_feature_child_of(mib_api, libnetsnmp)
+netsnmp_feature_child_of(mib_strings_all, mib_api)
+
+netsnmp_feature_child_of(mib_snprint, mib_strings_all)
+netsnmp_feature_child_of(mib_snprint_description, mib_strings_all)
+netsnmp_feature_child_of(mib_snprint_variable, mib_strings_all)
+netsnmp_feature_child_of(mib_string_conversions, mib_strings_all)
+netsnmp_feature_child_of(print_mib, mib_strings_all)
+netsnmp_feature_child_of(snprint_objid, mib_strings_all)
+netsnmp_feature_child_of(snprint_value, mib_strings_all)
+
+netsnmp_feature_child_of(mib_to_asn_type, mib_api)
+
 /** @defgroup mib_utilities mib parsing and datatype manipulation routines.
  *  @ingroup library
  *
@@ -136,9 +160,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 */
 
@@ -456,6 +481,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)) {
@@ -502,9 +529,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);
@@ -2341,7 +2381,9 @@
 
     netsnmp_ds_register_premib(ASN_BOOLEAN, "snmp", "showMibErrors",
                        NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_MIB_ERRORS);
-    netsnmp_ds_register_premib(ASN_BOOLEAN, "snmp", "strictCommentTerm",
+    netsnmp_ds_register_premib(ASN_BOOLEAN, "snmp", "commentToEOL",     /* Describes actual behaviour */
+                       NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_MIB_COMMENT_TERM);
+    netsnmp_ds_register_premib(ASN_BOOLEAN, "snmp", "strictCommentTerm",    /* Backward compatibility */
                        NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_MIB_COMMENT_TERM);
     netsnmp_ds_register_premib(ASN_BOOLEAN, "snmp", "mibAllowUnderline",
                        NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_MIB_PARSE_LABEL);
@@ -2556,6 +2598,7 @@
      */
     netsnmp_fixup_mib_directory();
     env_var = strdup(netsnmp_get_mib_directory());
+    netsnmp_mibindex_load();
 
     DEBUGMSGTL(("init_mib",
                 "Seen MIBDIRS: Looking in '%s' for mib dirs ...\n",
@@ -2621,7 +2664,7 @@
     while (entry) {
         if (strcasecmp(entry, DEBUG_ALWAYS_TOKEN) == 0) {
             read_all_mibs();
-        } else if (strstr(entry, "/") != 0) {
+        } else if (strstr(entry, "/") != NULL) {
             read_mib(entry);
         } else {
             netsnmp_read_module(entry);
@@ -2662,7 +2705,7 @@
 #endif
     }
 
-    if (env_var != 0) {
+    if (env_var != NULL) {
         DEBUGMSGTL(("init_mib",
                     "Seen MIBFILES: Looking in '%s' for mib files ...\n",
                     env_var));
@@ -2717,7 +2760,7 @@
     }
 }
 
-#ifndef NETSNMP_CLEAN_NAMESPACE
+#ifndef NETSNMP_NO_LEGACY_DEFINITIONS
 void
 init_mib(void)
 {
@@ -2726,6 +2769,139 @@
 #endif
 
 
+/*
+ * Handle MIB indexes centrally
+ */
+static int _mibindex     = 0;   /* Last index in use */
+static int _mibindex_max = 0;   /* Size of index array */
+char     **_mibindexes   = NULL;
+
+int _mibindex_add( const char *dirname, int i );
+void
+netsnmp_mibindex_load( void )
+{
+    DIR *dir;
+    struct dirent *file;
+    FILE *fp;
+    char tmpbuf[ 300];
+    char tmpbuf2[300];
+    int  i;
+    char *cp;
+
+    /*
+     * Open the MIB index directory, or create it (empty)
+     */
+    snprintf( tmpbuf, sizeof(tmpbuf), "%s/mib_indexes",
+              get_persistent_directory());
+    tmpbuf[sizeof(tmpbuf)-1] = 0;
+    dir = opendir( tmpbuf );
+    if ( dir == NULL ) {
+        DEBUGMSGTL(("mibindex", "load: (new)\n"));
+        mkdirhier( tmpbuf, NETSNMP_AGENT_DIRECTORY_MODE, 0);
+        return;
+    }
+
+    /*
+     * Create a list of which directory each file refers to
+     */
+    while ((file = readdir( dir ))) {
+        if ( !isdigit((unsigned char)(file->d_name[0])))
+            continue;
+        i = atoi( file->d_name );
+
+        snprintf( tmpbuf, sizeof(tmpbuf), "%s/mib_indexes/%d",
+              get_persistent_directory(), i );
+        tmpbuf[sizeof(tmpbuf)-1] = 0;
+        fp = fopen( tmpbuf, "r" );
+        if (!fp)
+            continue;
+        cp = fgets( tmpbuf2, sizeof(tmpbuf2), fp );
+        if ( !cp ) {
+            DEBUGMSGTL(("mibindex", "Empty MIB index (%d)\n", i));
+            fclose(fp);
+            continue;
+        }
+        tmpbuf2[strlen(tmpbuf2)-1] = 0;
+        DEBUGMSGTL(("mibindex", "load: (%d) %s\n", i, tmpbuf2));
+        (void)_mibindex_add( tmpbuf2+4, i );  /* Skip 'DIR ' */
+        fclose( fp );
+    }
+    closedir( dir );
+}
+
+char *
+netsnmp_mibindex_lookup( const char *dirname )
+{
+    int i;
+    static char tmpbuf[300];
+
+    for (i=0; i<_mibindex; i++) {
+        if ( _mibindexes[i] &&
+             strcmp( _mibindexes[i], dirname ) == 0) {
+             snprintf(tmpbuf, sizeof(tmpbuf), "%s/mib_indexes/%d",
+                      get_persistent_directory(), i);
+             tmpbuf[sizeof(tmpbuf)-1] = 0;
+             DEBUGMSGTL(("mibindex", "lookup: %s (%d) %s\n", dirname, i, tmpbuf ));
+             return tmpbuf;
+        }
+    }
+    DEBUGMSGTL(("mibindex", "lookup: (none)\n"));
+    return NULL;
+}
+
+int
+_mibindex_add( const char *dirname, int i )
+{
+    const int old_mibindex_max = _mibindex_max;
+
+    DEBUGMSGTL(("mibindex", "add: %s (%d)\n", dirname, i ));
+    if ( i == -1 )
+        i = _mibindex++;
+    if ( i >= _mibindex_max ) {
+        /*
+         * If the index array is full (or non-existent)
+         *   then expand (or create) it
+         */
+        _mibindex_max = i + 10;
+        _mibindexes = realloc(_mibindexes,
+                              _mibindex_max * sizeof(_mibindexes[0]));
+        netsnmp_assert(_mibindexes);
+        memset(_mibindexes + old_mibindex_max, 0,
+               (_mibindex_max - old_mibindex_max) * sizeof(_mibindexes[0]));
+    }
+
+    _mibindexes[ i ] = strdup( dirname );
+    if ( i >= _mibindex )
+        _mibindex = i+1;
+
+    DEBUGMSGTL(("mibindex", "add: %d/%d/%d\n", i, _mibindex, _mibindex_max ));
+    return i;
+}
+    
+FILE *
+netsnmp_mibindex_new( const char *dirname )
+{
+    FILE *fp;
+    char  tmpbuf[300];
+    char *cp;
+    int   i;
+
+    cp = netsnmp_mibindex_lookup( dirname );
+    if (!cp) {
+        i  = _mibindex_add( dirname, -1 );
+        snprintf( tmpbuf, sizeof(tmpbuf), "%s/mib_indexes/%d",
+                  get_persistent_directory(), i );
+        tmpbuf[sizeof(tmpbuf)-1] = 0;
+        cp = tmpbuf;
+    }
+    DEBUGMSGTL(("mibindex", "new: %s (%s)\n", dirname, cp ));
+    fp = fopen( cp, "w" );
+    if (fp)
+        fprintf( fp, "DIR %s\n", dirname );
+    return fp;
+}
+
+
 /**
  * Unloads all mibs.
  */
@@ -2737,10 +2913,18 @@
         if (tree_top->label)
             SNMP_FREE(tree_top->label);
         SNMP_FREE(tree_top);
-        tree_top = NULL;
     }
     tree_head = NULL;
     Mib = NULL;
+    if (_mibindexes) {
+        int i;
+        for (i = 0; i < _mibindex; ++i)
+            SNMP_FREE(_mibindexes[i]);
+        free(_mibindexes);
+        _mibindex = 0;
+        _mibindex_max = 0;
+        _mibindexes = NULL;
+    }
     if (Prefix != NULL && Prefix != &Standard_Prefix[0])
         SNMP_FREE(Prefix);
     if (Prefix)
@@ -2754,11 +2938,13 @@
  *
  * @param fp   The file descriptor to print to.
  */
+#ifndef NETSNMP_FEATURE_REMOVE_PRINT_MIB
 void
 print_mib(FILE * fp)
 {
     print_subtree(fp, tree_head, 0);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_PRINT_MIB */
 
 void
 print_ascii_dump(FILE * fp)
@@ -3139,6 +3325,7 @@
     return !buf_overflow;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SPRINT_OBJID
 int
 snprint_objid(char *buf, size_t buf_len,
               const oid * objid, size_t objidlen)
@@ -3152,6 +3339,7 @@
         return -1;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SPRINT_OBJID */
 
 /**
  * Prints an oid to stdout.
@@ -3285,10 +3473,11 @@
          * Handle rare case where tree is empty.  
          */
         return sprint_realloc_by_type(buf, buf_len, out_len, allow_realloc,
-                                      variable, 0, 0, 0);
+                                      variable, NULL, NULL, NULL);
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNPRINT_VARABLE
 int
 snprint_variable(char *buf, size_t buf_len,
                  const oid * objid, size_t objidlen,
@@ -3303,6 +3492,7 @@
         return -1;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNPRINT_VARABLE */
 
 /**
  * Prints a variable to stdout.
@@ -3397,6 +3587,8 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNPRINT_VALUE
+/* used in the perl module */
 int
 snprint_value(char *buf, size_t buf_len,
               const oid * objid, size_t objidlen,
@@ -3411,6 +3603,7 @@
         return -1;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNPRINT_VALUE */
 
 void
 print_value(const oid * objid,
@@ -3541,8 +3734,8 @@
 
     if (var->name_length > MAX_OID_LEN) {
         DEBUGMSGTL(("build_oid_segment",
-                    "Something terribly wrong, namelen = %d\n",
-                    var->name_length));
+                    "Something terribly wrong, namelen = %lu\n",
+                    (unsigned long)var->name_length));
         return SNMPERR_GENERR;
     }
 
@@ -3660,13 +3853,13 @@
         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));
             }
             DEBUGMSGTL(("parse_oid_indexes",
-                        "Parsed int(%d): %d\n", var->type,
+                        "Parsed int(%d): %ld\n", var->type,
                         *var->val.integer));
             break;
 
@@ -3677,7 +3870,8 @@
             for (i = 0; i < 4 && i < *oidLen; ++i) {
                 if (oidIndex[i] > 255) {
                     DEBUGMSGTL(("parse_oid_indexes",
-                                "illegal oid in index: %d\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)));
@@ -4006,7 +4200,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)) {
@@ -4294,7 +4488,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,
@@ -4303,7 +4497,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 *)
@@ -4375,7 +4569,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;
@@ -4390,7 +4585,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 *)
@@ -4399,7 +4594,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,
@@ -4511,6 +4707,7 @@
     SNMP_FREE(buf);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_MIB_SNPRINT_DESCRIPTION
 int
 snprint_description(char *buf, size_t buf_len,
                     oid * objid, size_t objidlen, int width)
@@ -4524,6 +4721,7 @@
         return -1;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_MIB_SNPRINT_DESCRIPTION */
 
 int
 sprint_realloc_description(u_char ** buf, size_t * buf_len,
@@ -4610,7 +4808,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     "))
@@ -4623,7 +4821,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     "))
@@ -5157,7 +5355,7 @@
         /*
          * Search for the appropriate child 
          */
-        if (isdigit(*cp)) {
+        if (isdigit((unsigned char)(*cp))) {
             subid = strtoul(cp, &ecp, 0);
             if (*ecp)
                 goto bad_id;
@@ -5214,7 +5412,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;
@@ -5786,7 +5984,7 @@
     while (1) {
         register struct tree *ntp;
 
-        tp = 0;
+        tp = NULL;
         for (ntp = tree->child_list; ntp; ntp = ntp->next_peer) {
             if (ntp->reported)
                 continue;
@@ -5839,7 +6037,6 @@
 
 /**
  * Converts timeticks to hours, minutes, seconds string.
- * CMU compatible does not show centiseconds.
  *
  * @param timeticks    The timeticks to convert.
  * @param buf          Buffer to write to, has to be at 
@@ -5859,13 +6056,6 @@
 uptime_string_n(u_long timeticks, char *buf, size_t buflen)
 {
     uptimeString(timeticks, buf, buflen);
-#ifdef CMU_COMPATIBLE
-    {
-    char *cp = strrchr(buf, '.');
-    if (cp)
-        *cp = '\0';
-    }
-#endif
     return buf;
 }
 
@@ -6099,7 +6289,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 {
@@ -6108,7 +6298,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) {
@@ -6126,7 +6316,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);
 		
@@ -6145,7 +6335,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);
 		
@@ -6218,6 +6408,7 @@
 
 #endif /* test_display_hint */
 
+#ifndef NETSNMP_FEATURE_REMOVE_MIB_TO_ASN_TYPE
 u_char
 mib_to_asn_type(int mib_type)
 {
@@ -6267,6 +6458,7 @@
     }
     return -1;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_MIB_TO_ASN_TYPE */
 
 /**
  * Converts a string to its OID form.
@@ -6278,6 +6470,7 @@
  *
  * @return 0 on Sucess, 1 on failure.
  */
+#ifndef NETSNMP_FEATURE_REMOVE_MIB_STRING_CONVERSIONS
 int
 netsnmp_str2oid(const char *S, oid * O, int L)
 {
@@ -6357,7 +6550,10 @@
 
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_MIB_STRING_CONVERSIONS */
 
+
+#ifndef NETSNMP_FEATURE_REMOVE_MIB_SNPRINT
 int
 snprint_by_type(char *buf, size_t buf_len,
                 netsnmp_variable_list * var,
@@ -6635,5 +6831,6 @@
         return -1;
 }
 #endif
+#endif /* NETSNMP_FEATURE_REMOVE_MIB_SNPRINT */
 /** @} */
 
diff --git a/snmplib/oid_stash.c b/snmplib/oid_stash.c
index a09ad53..8a79897 100644
--- a/snmplib/oid_stash.c
+++ b/snmplib/oid_stash.c
@@ -5,8 +5,15 @@
 #include <stdlib.h>
 #include <sys/types.h>
 
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
+netsnmp_feature_child_of(oid_stash_all, libnetsnmp)
+netsnmp_feature_child_of(oid_stash, oid_stash_all)
+netsnmp_feature_child_of(oid_stash_no_free, oid_stash_all)
+
+#ifndef NETSNMP_FEATURE_REMOVE_OID_STASH
+
 /** @defgroup oid_stash Store and retrieve data referenced by an OID.
     This is essentially a way of storing data associated with a given
     OID.  It stores a bunch of data pointers within a memory tree that
@@ -68,6 +75,8 @@
     return netsnmp_oid_stash_create_sized_node(OID_STASH_CHILDREN_SIZE);
 }
 
+netsnmp_feature_child_of(oid_stash_add_data, oid_stash_all)
+#ifndef NETSNMP_FEATURE_REMOVE_OID_STASH_ADD_DATA
 /** adds data to the stash at a given oid.
 
  * @param root the top of the stash tree
@@ -144,6 +153,7 @@
     tmpp->thedata = mydata;
     return SNMPERR_SUCCESS;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_OID_STASH_ADD_DATA */
 
 /** returns a node associated with a given OID.
  * @param root the top of the stash tree
@@ -187,6 +197,8 @@
  * @param lookup the oid to look up a node for.
  * @param lookup_len the length of the lookup oid
  */
+netsnmp_feature_child_of(oid_stash_iterate, oid_stash_all)
+#ifndef NETSNMP_FEATURE_REMOVE_OID_STASH_ITERATE
 netsnmp_oid_stash_node *
 netsnmp_oid_stash_getnext_node(netsnmp_oid_stash_node *root,
                                oid * lookup, size_t lookup_len)
@@ -268,7 +280,10 @@
     /* fell off the top */
     return NULL;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_OID_STASH_ITERATE */
 
+netsnmp_feature_child_of(oid_stash_get_data, oid_stash_all)
+#ifndef NETSNMP_FEATURE_REMOVE_OID_STASH_GET_DATA
 /** returns a data pointer associated with a given OID.
 
     This is equivelent to netsnmp_oid_stash_get_node, but returns only
@@ -288,7 +303,10 @@
         return ret->thedata;
     return NULL;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_OID_STASH_GET_DATA */
 
+netsnmp_feature_child_of(oid_stash_store_all, oid_stash_all)
+#ifndef NETSNMP_FEATURE_REMOVE_OID_STASH_STORE_ALL
 /** a wrapper around netsnmp_oid_stash_store for use with a snmp_alarm.
  * when calling snmp_alarm, you can list this as a callback.  The
  * clientarg should be a pointer to a netsnmp_oid_stash_save_info
@@ -314,6 +332,7 @@
                             oidbase,0);
     return SNMP_ERR_NOERROR;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_OID_STASH_STORE_ALL */
 
 /** stores data in a starsh tree to peristent storage.
 
@@ -384,7 +403,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);
             }
@@ -427,10 +446,16 @@
     *root = NULL;
 }
 
+#else /* NETSNMP_FEATURE_REMOVE_OID_STASH */
+netsnmp_feature_unused(oid_stash);
+#endif/* NETSNMP_FEATURE_REMOVE_OID_STASH */
+
+#ifndef NETSNMP_FEATURE_REMOVE_OID_STASH_NO_FREE
 void
 netsnmp_oid_stash_no_free(void *bogus)
 {
     /* noop */
 }
+#endif /* NETSNMP_FEATURE_REMOVE_OID_STASH_NO_FREE */
 
 /** @} */
diff --git a/snmplib/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 67819bf..4d44d88 100644
--- a/snmplib/parse.c
+++ b/snmplib/parse.c
@@ -33,6 +33,7 @@
  * distributed with the Net-SNMP package.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #ifndef NETSNMP_DISABLE_MIB_LOADING
 
@@ -74,11 +75,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 +84,6 @@
 #  include <time.h>
 # endif
 #endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
@@ -113,6 +107,37 @@
 #include <net-snmp/library/parse.h>
 #include <net-snmp/library/mib.h>
 #include <net-snmp/library/snmp_api.h>
+#include <net-snmp/library/tools.h>
+
+netsnmp_feature_child_of(find_module, mib_api)
+netsnmp_feature_child_of(get_tc_description, mib_api)
+
+/*
+ * A linked list of nodes.
+ */
+struct node {
+    struct node    *next;
+    char           *label;  /* This node's (unique) textual name */
+    u_long          subid;  /* This node's integer subidentifier */
+    int             modid;  /* The module containing this node */
+    char           *parent; /* The parent's textual name */
+    int             tc_index; /* index into tclist (-1 if NA) */
+    int             type;   /* The type of object this represents */
+    int             access;
+    int             status;
+    struct enum_list *enums; /* (optional) list of enumerated integers */
+    struct range_list *ranges;
+    struct index_list *indexes;
+    char           *augments;
+    struct varbind_list *varbinds;
+    char           *hint;
+    char           *units;
+    char           *description; /* description (a quoted string) */
+    char           *reference; /* references (a quoted string) */
+    char           *defaultValue;
+    char           *filename;
+    int             lineno;
+};
 
 /*
  * This is one element of an object identifier with either an integer
@@ -509,7 +534,11 @@
  * #define MODULE_LOAD_FAILED   3       
  */
 #define MODULE_LOAD_FAILED	MODULE_NOT_FOUND
+#define MODULE_SYNTAX_ERROR     4
 
+int gMibError = 0,gLoop = 0;
+char *gpMibErrorString = NULL;
+char gMibNames[STRINGMAX];
 
 #define HASHSIZE        32
 #define BUCKET(x)       (x & (HASHSIZE-1))
@@ -523,8 +552,9 @@
 static struct tree *tbuckets[NHASHSIZE];
 static struct module *module_head = NULL;
 
-struct node    *orphan_nodes = NULL;
-struct tree    *tree_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
 static struct module_import root_imports[NUMBER_OF_ROOT_NODES];
@@ -532,7 +562,7 @@
 static int      current_module = 0;
 static int      max_module = 0;
 static int      first_err_module = 1;
-static char    *last_err_module = 0;    /* no repeats on "Cannot find module..." */
+static char    *last_err_module = NULL; /* no repeats on "Cannot find module..." */
 
 static void     tree_from_node(struct tree *tp, struct node *np);
 static void     do_subtree(struct tree *, struct node **);
@@ -681,7 +711,7 @@
     if (!name)
         return 0;
     for (cp = name; *cp; cp++)
-        hash += tolower(*cp);
+        hash += tolower((unsigned char)(*cp));
     return (hash);
 }
 
@@ -727,7 +757,7 @@
      */
 }
 
-#ifndef NETSNMP_CLEAN_NAMESPACE
+#ifndef NETSNMP_NO_LEGACY_DEFINITIONS
 void
 init_mib_internals(void)
 {
@@ -753,11 +783,14 @@
 
 static int      erroneousMibs = 0;
 
+netsnmp_feature_child_of(parse_get_error_count, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_PARSE_GET_ERROR_COUNT
 int
 get_mib_parse_error_count(void)
 {
     return erroneousMibs;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_PARSE_GET_ERROR_COUNT */
 
 
 static void
@@ -885,9 +918,9 @@
 
     unlink_tbucket(Tree);
     free_partial_tree(Tree, FALSE);
-    if (Tree->number_modules > 1)
-        free((char *) Tree->module_list);
-    free((char *) Tree);
+    if (Tree->module_list != &Tree->modid)
+        free(Tree->module_list);
+    free(Tree);
 }
 
 static void
@@ -951,10 +984,8 @@
 static void
 print_nodes(FILE * fp, struct node *root)
 {
-    extern void     xmalloc_stats(FILE *);
     struct enum_list *ep;
     struct index_list *ip;
-    struct range_list *rp;
     struct varbind_list *vp;
     struct node    *np;
 
@@ -970,6 +1001,7 @@
             }
         }
         if (np->ranges) {
+            struct range_list *rp;
             fprintf(fp, "  Ranges: ");
             for (rp = np->ranges; rp; rp = rp->next) {
                 fprintf(fp, "\n    ");
@@ -1056,7 +1088,7 @@
 static int      translation_table[256];
 
 static void
-build_translation_table()
+build_translation_table(void)
 {
     int             count;
 
@@ -1142,7 +1174,7 @@
 }
 
 static void
-init_tree_roots()
+init_tree_roots(void)
 {
     struct tree    *tp, *lasttp;
     int             base_modid;
@@ -1539,15 +1571,14 @@
                 /*
                  * Update list of modules 
                  */
-                int_p =
-                    (int *) malloc((tp->number_modules + 1) * sizeof(int));
+                int_p = malloc((tp->number_modules + 1) * sizeof(int));
                 if (int_p == NULL)
                     return;
                 memcpy(int_p, tp->module_list,
                        tp->number_modules * sizeof(int));
                 int_p[tp->number_modules] = np->modid;
-                if (tp->number_modules > 1)
-                    free((char *) tp->module_list);
+                if (tp->module_list != &tp->modid)
+                    free(tp->module_list);
                 ++tp->number_modules;
                 tp->module_list = int_p;
 
@@ -2120,6 +2151,8 @@
     return (tclist[tc_index].descriptor);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_GET_TC_DESCRIPTION
+/* used in the perl module */
 const char     *
 get_tc_description(int tc_index)
 {
@@ -2127,6 +2160,7 @@
         return NULL;
     return (tclist[tc_index].description);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_GET_TC_DESCRIPTION */
 
 
 /*
@@ -2955,6 +2989,15 @@
         free_node(np);
         return (NULL);
     }
+
+    /* Catch the syntax error */
+    if (np->parent == NULL) {
+        free_node(np->next);
+        free_node(np);
+        gMibError = MODULE_SYNTAX_ERROR;
+        return (NULL);
+    }
+
     np->next->parent = np->parent;
     np->parent = (char *) malloc(strlen(np->parent) + 2);
     if (np->parent == NULL) {
@@ -2965,7 +3008,6 @@
     strcpy(np->parent, np->next->parent);
     strcat(np->parent, "#");
     np->next->label = strdup(np->parent);
-    np->type = TRAPTYPE;
     return np;
 }
 
@@ -3735,6 +3777,8 @@
  *      or those relating to a specified identifier (read_import_replacements)
  *      plus an interface to add new replacement requirements
  */
+netsnmp_feature_child_of(parse_add_module_replacement, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_PARSE_ADD_MODULE_REPLACEMENT
 void
 add_module_replacement(const char *old_module,
                        const char *new_module_name,
@@ -3756,6 +3800,7 @@
     mcp->next = module_map_head;
     module_map_head = mcp;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_PARSE_ADD_MODULE_REPLACEMENT */
 
 static int
 read_module_replacements(const char *name)
@@ -3831,6 +3876,7 @@
 {
     struct module  *mp;
     FILE           *fp;
+    struct node    *np;
 
     netsnmp_init_mib_internals();
 
@@ -3846,9 +3892,17 @@
                 return MODULE_ALREADY_LOADED;
             }
             if ((fp = fopen(mp->file, "r")) == NULL) {
+                int rval;
+                if (errno == ENOTDIR || errno == ENOENT)
+                    rval = MODULE_NOT_FOUND;
+                else
+                    rval = MODULE_LOAD_FAILED;
                 snmp_log_perror(mp->file);
-                return MODULE_LOAD_FAILED;
+                return rval;
             }
+#ifdef HAVE_FLOCKFILE
+            flockfile(fp);
+#endif
             mp->no_imports = 0; /* Note that we've read the file */
             File = mp->file;
             mibLine = 1;
@@ -3856,11 +3910,16 @@
             /*
              * Parse the file
              */
-            parse(fp, NULL);
+            np = parse(fp, NULL);
+#ifdef HAVE_FUNLOCKFILE
+            funlockfile(fp);
+#endif
             fclose(fp);
             File = oldFile;
             mibLine = oldLine;
             current_module = oldModule;
+            if ((np == NULL) && (gMibError == MODULE_SYNTAX_ERROR) )
+                return MODULE_SYNTAX_ERROR;
             return MODULE_LOADED_OK;
         }
 
@@ -3938,7 +3997,7 @@
         }
 }
 
-#ifndef NETSNMP_CLEAN_NAMESPACE
+#ifndef NETSNMP_NO_LEGACY_DEFINITIONS
 struct tree    *
 read_module(const char *name)
 {
@@ -3949,9 +4008,20 @@
 struct tree    *
 netsnmp_read_module(const char *name)
 {
-    if (read_module_internal(name) == MODULE_NOT_FOUND)
+    int status = 0;
+    status = read_module_internal(name);
+
+    if (status == MODULE_NOT_FOUND) {
         if (!read_module_replacements(name))
-	    print_module_not_found(name);
+            print_module_not_found(name);
+    } else if (status == MODULE_SYNTAX_ERROR) {
+        gMibError = 0;
+        gLoop = 1;
+
+        strncat(gMibNames, " ", sizeof(gMibNames) - strlen(gMibNames) - 1);
+        strncat(gMibNames, name, sizeof(gMibNames) - strlen(gMibNames) - 1);
+    }
+
     return tree_head;
 }
 
@@ -4039,7 +4109,7 @@
     }
 }
 
-#ifndef NETSNMP_CLEAN_NAMESPACE
+#ifndef NETSNMP_NO_LEGACY_DEFINITIONS
 int
 unload_module(const char *name)
 {
@@ -4073,12 +4143,12 @@
  * Clear module map, tree nodes, textual convention table.
  */
 void
-unload_all_mibs()
+unload_all_mibs(void)
 {
     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)
@@ -4093,7 +4163,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;
@@ -4192,7 +4262,7 @@
 
 
 static void
-scan_objlist(struct node *root, struct objgroup *list, const char *error)
+scan_objlist(struct node *root, struct module *mp, struct objgroup *list, const char *error)
 {
     int             oLine = mibLine;
 
@@ -4207,8 +4277,16 @@
             else
                 break;
         if (!np) {
-            mibLine = gp->line;
-            print_error(error, gp->name, QUOTESTRING);
+	    int i;
+	    struct module_import *mip;
+	    /* if not local, check if it was IMPORTed */
+	    for (i = 0, mip = mp->imports; i < mp->no_imports; i++, mip++)
+		if (strcmp(mip->label, gp->name) == 0)
+		    break;
+	    if (i == mp->no_imports) {
+		mibLine = gp->line;
+		print_error(error, gp->name, QUOTESTRING);
+	    }
         }
         free(gp->name);
         free(gp);
@@ -4223,6 +4301,9 @@
 static struct node *
 parse(FILE * fp, struct node *root)
 {
+#ifdef TEST
+    extern void     xmalloc_stats(FILE *);
+#endif
     char            token[MAXTOKEN];
     char            name[MAXTOKEN+1];
     int             type = LABEL;
@@ -4239,7 +4320,7 @@
 
     if (last_err_module)
         free(last_err_module);
-    last_err_module = 0;
+    last_err_module = NULL;
 
     np = root;
     if (np != NULL) {
@@ -4260,6 +4341,7 @@
         case END:
             if (state != IN_MIB) {
                 print_error("Error, END before start of MIB", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             } else {
                 struct module  *mp;
@@ -4267,15 +4349,15 @@
                 printf("\nNodes for Module %s:\n", name);
                 print_nodes(stdout, root);
 #endif
-                scan_objlist(root, objgroups, "Undefined OBJECT-GROUP");
-                scan_objlist(root, objects, "Undefined OBJECT");
-                scan_objlist(root, notifs, "Undefined NOTIFICATION");
-                objgroups = oldgroups;
-                objects = oldobjects;
-                notifs = oldnotifs;
                 for (mp = module_head; mp; mp = mp->next)
                     if (mp->modid == current_module)
                         break;
+                scan_objlist(root, mp, objgroups, "Undefined OBJECT-GROUP");
+                scan_objlist(root, mp, objects, "Undefined OBJECT");
+                scan_objlist(root, mp, notifs, "Undefined NOTIFICATION");
+                objgroups = oldgroups;
+                objects = oldobjects;
+                notifs = oldnotifs;
                 do_linkup(mp, root);
                 np = root = NULL;
             }
@@ -4283,7 +4365,7 @@
 #ifdef TEST
             if (netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, 
 				   NETSNMP_DS_LIB_MIB_WARNINGS)) {
-                xmalloc_stats(stderr);
+                /* xmalloc_stats(stderr); */
 	    }
 #endif
             continue;
@@ -4323,6 +4405,7 @@
                 nnp = parse_macro(fp, name);
                 if (nnp == NULL) {
                     print_error("Bad parse of MACRO", NULL, type);
+                    gMibError = MODULE_SYNTAX_ERROR;
                     /*
                      * return NULL;
                      */
@@ -4346,6 +4429,7 @@
                 type = get_token(fp, token, MAXTOKEN);
             if (type == ENDOFFILE) {
                 print_error("Expected \"}\"", token, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             type = get_token(fp, token, MAXTOKEN);
@@ -4355,6 +4439,7 @@
         case DEFINITIONS:
             if (state != BETWEEN_MIBS) {
                 print_error("Error, nested MIBS", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             state = IN_MIB;
@@ -4379,6 +4464,7 @@
             nnp = parse_objecttype(fp, name);
             if (nnp == NULL) {
                 print_error("Bad parse of OBJECT-TYPE", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4386,6 +4472,7 @@
             nnp = parse_objectgroup(fp, name, OBJECTS, &objects);
             if (nnp == NULL) {
                 print_error("Bad parse of OBJECT-GROUP", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4393,6 +4480,7 @@
             nnp = parse_objectgroup(fp, name, NOTIFICATIONS, &notifs);
             if (nnp == NULL) {
                 print_error("Bad parse of NOTIFICATION-GROUP", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4400,6 +4488,7 @@
             nnp = parse_trapDefinition(fp, name);
             if (nnp == NULL) {
                 print_error("Bad parse of TRAP-TYPE", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4407,6 +4496,7 @@
             nnp = parse_notificationDefinition(fp, name);
             if (nnp == NULL) {
                 print_error("Bad parse of NOTIFICATION-TYPE", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4414,6 +4504,7 @@
             nnp = parse_compliance(fp, name);
             if (nnp == NULL) {
                 print_error("Bad parse of MODULE-COMPLIANCE", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4421,6 +4512,7 @@
             nnp = parse_capabilities(fp, name);
             if (nnp == NULL) {
                 print_error("Bad parse of AGENT-CAPABILITIES", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4428,6 +4520,7 @@
             nnp = parse_macro(fp, name);
             if (nnp == NULL) {
                 print_error("Bad parse of MACRO", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 /*
                  * return NULL;
                  */
@@ -4439,6 +4532,7 @@
             nnp = parse_moduleIdentity(fp, name);
             if (nnp == NULL) {
                 print_error("Bad parse of MODULE-IDENTITY", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4446,6 +4540,7 @@
             nnp = parse_objectgroup(fp, name, OBJECTS, &objects);
             if (nnp == NULL) {
                 print_error("Bad parse of OBJECT-IDENTITY", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4453,16 +4548,19 @@
             type = get_token(fp, token, MAXTOKEN);
             if (type != IDENTIFIER) {
                 print_error("Expected IDENTIFIER", token, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             type = get_token(fp, token, MAXTOKEN);
             if (type != EQUALS) {
                 print_error("Expected \"::=\"", token, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             nnp = parse_objectid(fp, name);
             if (nnp == NULL) {
                 print_error("Bad parse of OBJECT IDENTIFIER", NULL, type);
+                gMibError = MODULE_SYNTAX_ERROR;
                 return NULL;
             }
             break;
@@ -4474,6 +4572,7 @@
             break;
         default:
             print_error("Bad operator", token, type);
+            gMibError = MODULE_SYNTAX_ERROR;
             return NULL;
         }
         if (nnp) {
@@ -4507,6 +4606,21 @@
     return 0;
 }
 
+/**
+ * Read a single character from a file. Assumes that the caller has invoked
+ * flockfile(). Uses fgetc_unlocked() instead of getc() since the former is
+ * implemented as an inline function in glibc. See also bug 3447196
+ * (http://sourceforge.net/tracker/?func=detail&aid=3447196&group_id=12694&atid=112694).
+ */
+static int netsnmp_getc(FILE *stream)
+{
+#ifdef HAVE_FGETC_UNLOCKED
+    return fgetc_unlocked(stream);
+#else
+    return getc(stream);
+#endif
+}
+
 /*
  * Parses a token from the file.  The type of the token parsed is returned,
  * and the text is placed in the string pointed to by token.
@@ -4520,12 +4634,13 @@
     register int    hash = 0;
     register struct tok *tp;
     int             too_long = 0;
+    enum { bdigits, xdigits, other } seenSymbols;
 
     /*
      * skip all white space 
      */
     do {
-        ch = getc(fp);
+        ch = netsnmp_getc(fp);
         if (ch == '\n')
             mibLine++;
     }
@@ -4538,39 +4653,60 @@
     case '"':
         return parseQuoteString(fp, token, maxtlen);
     case '\'':                 /* binary or hex constant */
-        while ((ch = getc(fp)) != EOF && ch != '\''
-               && cp - token < maxtlen - 2)
-            *cp++ = ch;
+        seenSymbols = bdigits;
+        while ((ch = netsnmp_getc(fp)) != EOF && ch != '\'') {
+            switch (seenSymbols) {
+            case bdigits:
+                if (ch == '0' || ch == '1')
+                    break;
+                seenSymbols = xdigits;
+            case xdigits:
+                if (isxdigit(ch))
+                    break;
+                seenSymbols = other;
+            case other:
+                break;
+            }
+            if (cp - token < maxtlen - 2)
+                *cp++ = ch;
+        }
         if (ch == '\'') {
             unsigned long   val = 0;
-            *cp++ = '\'';
-            *cp++ = ch = getc(fp);
-            *cp = 0;
-            cp = token + 1;
+            char           *run = token + 1;
+            ch = netsnmp_getc(fp);
             switch (ch) {
             case EOF:
                 return ENDOFFILE;
             case 'b':
             case 'B':
-                while ((ch = *cp++) != '\'')
-                    if (ch != '0' && ch != '1')
-                        return LABEL;
-                    else
-                        val = val * 2 + ch - '0';
+                if (seenSymbols > bdigits) {
+                    *cp++ = '\'';
+                    *cp = 0;
+                    return LABEL;
+                }
+                while (run != cp)
+                    val = val * 2 + *run++ - '0';
                 break;
             case 'h':
             case 'H':
-                while ((ch = *cp++) != '\'')
+                if (seenSymbols > xdigits) {
+                    *cp++ = '\'';
+                    *cp = 0;
+                    return LABEL;
+                }
+                while (run != cp) {
+                    ch = *run++;
                     if ('0' <= ch && ch <= '9')
                         val = val * 16 + ch - '0';
                     else if ('a' <= ch && ch <= 'f')
                         val = val * 16 + ch - 'a' + 10;
                     else if ('A' <= ch && ch <= 'F')
                         val = val * 16 + ch - 'A' + 10;
-                    else
-                        return LABEL;
+                }
                 break;
             default:
+                *cp++ = '\'';
+                *cp = 0;
                 return LABEL;
             }
             sprintf(token, "%ld", val);
@@ -4596,25 +4732,25 @@
     case '|':
         return BAR;
     case '.':
-        ch_next = getc(fp);
+        ch_next = netsnmp_getc(fp);
         if (ch_next == '.')
             return RANGE;
         ungetc(ch_next, fp);
         return LABEL;
     case ':':
-        ch_next = getc(fp);
+        ch_next = netsnmp_getc(fp);
         if (ch_next != ':') {
             ungetc(ch_next, fp);
             return LABEL;
         }
-        ch_next = getc(fp);
+        ch_next = netsnmp_getc(fp);
         if (ch_next != '=') {
             ungetc(ch_next, fp);
             return LABEL;
         }
         return EQUALS;
     case '-':
-        ch_next = getc(fp);
+        ch_next = netsnmp_getc(fp);
         if (ch_next == '-') {
             if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
 				       NETSNMP_DS_LIB_MIB_COMMENT_TERM)) {
@@ -4622,7 +4758,7 @@
                  * Treat the rest of this line as a comment. 
                  */
                 while ((ch_next != EOF) && (ch_next != '\n'))
-                    ch_next = getc(fp);
+                    ch_next = netsnmp_getc(fp);
             } else {
                 /*
                  * Treat the rest of the line or until another '--' as a comment 
@@ -4631,11 +4767,11 @@
                  * (this is the "technically" correct way to parse comments) 
                  */
                 ch = ' ';
-                ch_next = getc(fp);
+                ch_next = netsnmp_getc(fp);
                 while (ch_next != EOF && ch_next != '\n' &&
                        (ch != '-' || ch_next != '-')) {
                     ch = ch_next;
-                    ch_next = getc(fp);
+                    ch_next = netsnmp_getc(fp);
                 }
             }
             if (ch_next == EOF)
@@ -4656,7 +4792,7 @@
             return LABEL;
         hash += tolower(ch);
       more:
-        while (is_labelchar(ch_next = getc(fp))) {
+        while (is_labelchar(ch_next = netsnmp_getc(fp))) {
             hash += tolower(ch_next);
             if (cp - token < maxtlen - 1)
                 *cp++ = ch_next;
@@ -4675,7 +4811,7 @@
         if (tp) {
             if (tp->token != CONTINUE)
                 return (tp->token);
-            while (isspace((ch_next = getc(fp))))
+            while (isspace((ch_next = netsnmp_getc(fp))))
                 if (ch_next == '\n')
                     mibLine++;
             if (ch_next == EOF)
@@ -4686,9 +4822,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;
         }
@@ -4696,11 +4832,14 @@
     }
 }
 
+netsnmp_feature_child_of(parse_get_token, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_PARSE_GET_TOKEN
 int
 snmp_get_token(FILE * fp, char *token, int maxtlen)
 {
     return get_token(fp, token, maxtlen);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_PARSE_GET_TOKEN */
 
 int
 add_mibfile(const char* tmpstr, const char* d_name, FILE *ip )
@@ -4755,26 +4894,24 @@
     int             count = 0;
     int             fname_len = 0;
 #if !(defined(WIN32) || defined(cygwin))
-    char            token[MAXTOKEN];
+    char           *token;
     char space;
     char newline;
     struct stat     dir_stat, idx_stat;
     char            tmpstr1[300];
-    int empty = 1;
 #endif
 
     DEBUGMSGTL(("parse-mibs", "Scanning directory %s\n", dirname));
 #if !(defined(WIN32) || defined(cygwin))
-    snprintf(token, sizeof(token), "%s/%s", dirname, ".index");
-    token[ sizeof(token)-1 ] = 0;
-    if (stat(token, &idx_stat) == 0 && stat(dirname, &dir_stat) == 0) {
+    token = netsnmp_mibindex_lookup( dirname );
+    if (token && stat(token, &idx_stat) == 0 && stat(dirname, &dir_stat) == 0) {
         if (dir_stat.st_mtime < idx_stat.st_mtime) {
             DEBUGMSGTL(("parse-mibs", "The index is good\n"));
             if ((ip = fopen(token, "r")) != NULL) {
+                fgets(tmpstr, sizeof(tmpstr), ip); /* Skip dir line */
                 while (fscanf(ip, "%127s%c%299s%c", token, &space, tmpstr,
 		    &newline) == 4) {
 
-                    empty = 0;
 		    /*
 		     * If an overflow of the token or tmpstr buffers has been
 		     * found log a message and break out of the while loop,
@@ -4794,10 +4931,7 @@
                     count++;
                 }
                 fclose(ip);
-                if ( !empty ) {
-                    return count;
-                }
-                DEBUGMSGTL(("parse-mibs", "Empty MIB index\n"));
+                return count;
             } else
                 DEBUGMSGTL(("parse-mibs", "Can't read index\n"));
         } else
@@ -4807,9 +4941,7 @@
 #endif
 
     if ((dir = opendir(dirname))) {
-        snprintf(tmpstr, sizeof(tmpstr), "%s/.index", dirname);
-        tmpstr[ sizeof(tmpstr)-1 ] = 0;
-        ip = fopen(tmpstr, "w");
+        ip = netsnmp_mibindex_new( dirname );
         while ((file = readdir(dir))) {
             /*
              * Only parse file names that don't begin with a '.' 
@@ -4881,7 +5013,7 @@
 
 
 struct tree    *
-read_all_mibs()
+read_all_mibs(void)
 {
     struct module  *mp;
 
@@ -4890,12 +5022,29 @@
             netsnmp_read_module(mp->name);
     adopt_orphans();
 
+    /* If entered the syntax error loop in "read_module()" */
+    if (gLoop == 1) {
+        gLoop = 0;
+        if (gpMibErrorString != NULL) {
+            SNMP_FREE(gpMibErrorString);
+        }
+        gpMibErrorString = (char *) calloc(1, MAXQUOTESTR);
+        if (gpMibErrorString == NULL) {
+            snmp_log(LOG_CRIT, "failed to allocated memory for gpMibErrorString\n");
+        } else {
+            snprintf(gpMibErrorString, sizeof(gpMibErrorString)-1, "Error in parsing MIB module(s): %s ! Unable to load corresponding MIB(s)", gMibNames);
+        }
+    }
+
+    /* Caller's responsibility to free this memory */
+    tree_head->parseErrorString = gpMibErrorString;
+	
     return tree_head;
 }
 
 
 #ifdef TEST
-main(int argc, char *argv[])
+int main(int argc, char *argv[])
 {
     int             i;
     struct tree    *tp;
@@ -4925,7 +5074,7 @@
     int             too_long = 0;
     char           *token_start = token;
 
-    for (ch = getc(fp); ch != EOF; ch = getc(fp)) {
+    for (ch = netsnmp_getc(fp); ch != EOF; ch = netsnmp_getc(fp)) {
         if (ch == '\r')
             continue;
         if (ch == '\n') {
@@ -5185,8 +5334,8 @@
     return (find_tree_node(name, -1));
 }
 
-/* Find node in specific MIB module
-   Used by Perl modules		*/
+netsnmp_feature_child_of(parse_find_node2, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_PARSE_FIND_NODE2
 struct tree    *
 find_node2(const char *name, const char *module)
 {                               
@@ -5200,7 +5349,10 @@
   }
   return (find_tree_node(name, modid));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_PARSE_FIND_NODE2 */
 
+#ifndef NETSNMP_FEATURE_REMOVE_FIND_MODULE
+/* Used in the perl module */
 struct module  *
 find_module(int mid)
 {
@@ -5210,10 +5362,9 @@
         if (mp->modid == mid)
             break;
     }
-    if (mp != 0)
-        return mp;
-    return NULL;
+    return mp;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_FIND_MODULE */
 
 
 static char     leave_indent[256];
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 795033b..3167674 100644
--- a/snmplib/read_config.c
+++ b/snmplib/read_config.c
@@ -65,6 +65,7 @@
  *  @{
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #include <ctype.h>
@@ -84,11 +85,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 +106,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 +114,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
@@ -135,10 +146,17 @@
 #include <net-snmp/library/snmp_api.h>
 #include <net-snmp/library/callback.h>
 
+netsnmp_feature_child_of(read_config_all, libnetsnmp)
+
+netsnmp_feature_child_of(unregister_app_config_handler, read_config_all)
+netsnmp_feature_child_of(read_config_register_app_prenetsnmp_mib_handler, netsnmp_unused)
+netsnmp_feature_child_of(read_config_register_const_config_handler, netsnmp_unused)
+
 static int      config_errors;
 
 struct config_files *config_files = NULL;
 
+
 static struct config_line *
 internal_register_config_handler(const char *type_param,
 				 const char *token,
@@ -192,8 +210,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.
@@ -238,6 +259,7 @@
 					    help, PREMIB_CONFIG);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_READ_CONFIG_REGISTER_APP_PRENETSNMP_MIB_HANDLER
 struct config_line *
 register_app_prenetsnmp_mib_handler(const char *token,
                                     void (*parser) (const char *, char *),
@@ -247,6 +269,7 @@
     return (register_prenetsnmp_mib_handler
             (NULL, token, parser, releaser, help));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_READ_CONFIG_REGISTER_APP_PRENETSNMP_MIB_HANDLER */
 
 /**
  * register_config_handler registers handlers for certain tokens specified in
@@ -291,6 +314,20 @@
 					    help, NORMAL_CONFIG);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_READ_CONFIG_REGISTER_CONST_CONFIG_HANDLER
+struct config_line *
+register_const_config_handler(const char *type,
+                              const char *token,
+                              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);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_READ_CONFIG_REGISTER_CONST_CONFIG_HANDLER */
+
 struct config_line *
 register_app_config_handler(const char *token,
                             void (*parser) (const char *, char *),
@@ -393,14 +430,16 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_UNREGISTER_APP_CONFIG_HANDLER
 void
 unregister_app_config_handler(const char *token)
 {
     unregister_config_handler(NULL, token);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UNREGISTER_APP_CONFIG_HANDLER */
 
 void
-unregister_all_config_handlers()
+unregister_all_config_handlers(void)
 {
     struct config_files *ctmp, *save;
     struct config_line *ltmp;
@@ -437,8 +476,8 @@
 }
 #endif
 
-int             linecount;
-const char     *curfilename;
+static unsigned int  linecount;
+static const char   *curfilename;
 
 struct config_line *
 read_config_get_handlers(const char *type)
@@ -451,22 +490,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);
 }
 
 
@@ -492,12 +532,12 @@
 run_config_handler(struct config_line *lptr,
                    const char *token, char *cptr, int when)
 {
-    char            tmpbuf[STRINGMAX];
     char           *cp;
     lptr = read_config_find_handler(lptr, token);
     if (lptr != NULL) {
         if (when == EITHER_CONFIG || lptr->config_time == when) {
-            DEBUGMSGTL(("read_config",
+            char tmpbuf[1];
+            DEBUGMSGTL(("read_config:parser",
                         "Found a parser.  Calling it: %s / %s\n", token,
                         cptr));
             /*
@@ -512,17 +552,18 @@
              * 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)) {
-        snprintf(tmpbuf, sizeof(tmpbuf), "Unknown token: %s.", token);
-        tmpbuf[ sizeof(tmpbuf)-1 ] = 0;
-        config_pwarn(tmpbuf);
+	netsnmp_config_warn("Unknown token: %s.", token);
         return SNMPERR_GENERR;
     }
     return SNMPERR_SUCCESS;
@@ -543,7 +584,7 @@
 int
 snmp_config_when(char *line, int when)
 {
-    char           *cptr, buf[STRINGMAX], tmpbuf[STRINGMAX];
+    char           *cptr, buf[STRINGMAX];
     struct config_line *lptr = NULL;
     struct config_files *ctmp = config_files;
     char           *st;
@@ -556,28 +597,19 @@
     strlcpy(buf, line, STRINGMAX);
     cptr = strtok_r(buf, SNMP_CONFIG_DELIMETERS, &st);
     if (!cptr) {
-        snprintf(tmpbuf, sizeof(tmpbuf), "Wrong format: %s", line);
-        tmpbuf[ sizeof(tmpbuf)-1 ] = '\0';
-        config_perror(tmpbuf);
+        netsnmp_config_warn("Wrong format: %s", line);
         return SNMPERR_GENERR;
     }
     if (cptr[0] == '[') {
         if (cptr[strlen(cptr) - 1] != ']') {
-            snprintf(tmpbuf, sizeof(tmpbuf),
-                    "no matching ']' for type %s.",
-                    cptr + 1);
-            tmpbuf[ sizeof(tmpbuf)-1 ] = 0;
-            config_perror(tmpbuf);
+	    netsnmp_config_error("no matching ']' for type %s.", cptr + 1);
             return SNMPERR_GENERR;
         }
         cptr[strlen(cptr) - 1] = '\0';
         lptr = read_config_get_handlers(cptr + 1);
         if (lptr == NULL) {
-            snprintf(tmpbuf,  sizeof(tmpbuf),
-                     "No handlers regestered for type %s.",
-                    cptr + 1);
-            tmpbuf[ sizeof(tmpbuf)-1 ] = 0;
-            config_perror(tmpbuf);
+	    netsnmp_config_error("No handlers regestered for type %s.",
+				 cptr + 1);
             return SNMPERR_GENERR;
         }
         cptr = strtok_r(NULL, SNMP_CONFIG_DELIMETERS, &st);
@@ -591,9 +623,7 @@
     }
     if (lptr == NULL && netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
 					  NETSNMP_DS_LIB_NO_TOKEN_WARNINGS)) {
-        snprintf(tmpbuf, sizeof(tmpbuf), "Unknown token: %s.", cptr);
-        tmpbuf[ sizeof(tmpbuf)-1 ] = 0;
-        config_pwarn(tmpbuf);
+	netsnmp_config_warn("Unknown token: %s.", cptr);
         return SNMPERR_GENERR;
     }
 
@@ -632,8 +662,10 @@
         mem = &((*mem)->next);
 
     *mem = SNMP_MALLOC_STRUCT(read_config_memory);
-    if (line)
-        (*mem)->line = strdup(line);
+    if (*mem != NULL) {
+        if (line)
+            (*mem)->line = strdup(line);
+    }
 }
 
 void
@@ -661,7 +693,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;
     }
@@ -711,20 +743,29 @@
  *
  * 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;
+
+    const char * const prev_filename = curfilename;
+    const unsigned int prev_linecount = linecount;
 
     FILE           *ifile;
-    char            line[STRINGMAX], token[STRINGMAX], tmpbuf[STRINGMAX];
-    char           *cptr;
-    int             i;
-    struct config_line *lptr;
+    char           *line = NULL;  /* current line buffer */
+    size_t          linesize = 0; /* allocated size of line */
 
-    linecount = 0;
-    curfilename = filename;
+    /* reset file counter when recursion depth is 0 */
+    if (depth == 0)
+        files = 0;
 
     if ((ifile = fopen(filename, "r")) == NULL) {
 #ifdef ENOENT
@@ -739,51 +780,93 @@
                         strerror(errno)));
         } else
 #endif                          /* EACCES */
-#if defined(ENOENT) || defined(EACCES)
         {
             snmp_log_perror(filename);
         }
-#else                           /* defined(ENOENT) || defined(EACCES) */
-            snmp_log_perror(filename);
-#endif                          /* ENOENT */
-        return;
-    } else {
-        DEBUGMSGTL(("read_config", "Reading configuration %s\n",
-                    filename));
+        return SNMPERR_GENERR;
     }
 
-    while (fgets(line, sizeof(line), ifile) != NULL) {
-        lptr = line_handler;
-        linecount++;
-        cptr = line;
-        i = strlen(line) - 1;
-        if (line[i] == '\n')
-            line[i] = 0;
+#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;
+    }
+
+    linecount = 0;
+    curfilename = filename;
+
+    ++files;
+    ++depth;
+
+    DEBUGMSGTL(("read_config:file", "Reading configuration %s (%d)\n",
+                filename, when));
+
+    while (ifile) {
+        size_t              linelen = 0; /* strlen of the current line */
+        char               *cptr;
+        struct config_line *lptr = line_handler;
+
+        for (;;) {
+            if (linesize <= linelen + 1) {
+                char *tmp = realloc(line, linesize + 256);
+                if (tmp) {
+                    line = tmp;
+                    linesize += 256;
+                } else {
+                    netsnmp_config_error("Failed to allocate memory\n");
+                    free(line);
+                    fclose(ifile);
+                    return SNMPERR_GENERR;
+                }
+            }
+            if (fgets(line + linelen, linesize - linelen, ifile) == NULL) {
+                line[linelen] = '\0';
+                fclose (ifile);
+                ifile = NULL;
+                break;
+            }
+
+            linelen += strlen(line + linelen);
+
+            if (line[linelen - 1] == '\n') {
+              line[linelen - 1] = '\0';
+              break;
+            }
+        }
+
+        ++linecount;
+        DEBUGMSGTL(("9:read_config:line", "%s:%d examining: %s\n",
+                    filename, linecount, line));
         /*
          * check blank line or # comment 
          */
-        if ((cptr = skip_white(cptr))) {
+        if ((cptr = skip_white(line))) {
+            char token[STRINGMAX];
+
             cptr = copy_nword(cptr, token, sizeof(token));
             if (token[0] == '[') {
                 if (token[strlen(token) - 1] != ']') {
-                    snprintf(tmpbuf, sizeof(tmpbuf),
-                            "no matching ']' for type %s.",
-                            &token[1]);
-                    tmpbuf[ sizeof(tmpbuf)-1 ] = 0;
-                    config_perror(tmpbuf);
+		    netsnmp_config_error("no matching ']' for type %s.",
+					 &token[1]);
                     continue;
                 }
                 token[strlen(token) - 1] = '\0';
                 lptr = read_config_get_handlers(&token[1]);
                 if (lptr == NULL) {
-                    snprintf(tmpbuf, sizeof(tmpbuf),
-                            "No handlers regestered for type %s.",
-                            &token[1]);
-                    tmpbuf[ sizeof(tmpbuf)-1 ] = 0;
-                    config_perror(tmpbuf);
+		    netsnmp_config_error("No handlers regestered for type %s.",
+					 &token[1]);
                     continue;
                 }
-                DEBUGMSGTL(("read_config",
+                DEBUGMSGTL(("read_config:context",
                             "Switching to new context: %s%s\n",
                             ((cptr) ? "(this line only) " : ""),
                             &token[1]));
@@ -799,23 +882,107 @@
                      */
                     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;
+                    }
+                    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);
+                    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);
+                    }
+                    if (read_config(fname, line_handler, when) !=
+                        SNMPERR_SUCCESS && when != PREMIB_CONFIG)
+                        netsnmp_config_error("Included file '%s' not found.",
+                                             fname);
+                    continue;
+                } else if ( strcasecmp( token, "includesearch" )==0) {
+                    struct config_files ctmp;
+                    int len, ret;
+
+                    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 */
+                    ret = read_config_files_of_type(when,&ctmp);
+                    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) {
-                snprintf(tmpbuf, sizeof(tmpbuf),
-                        "Blank line following %s token.", token);
-                tmpbuf[ sizeof(tmpbuf)-1 ] = 0;
-                config_perror(tmpbuf);
+		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;
+    free(line);
+    linecount = prev_linecount;
+    curfilename = prev_filename;
+    --depth;
+    return SNMPERR_SUCCESS;
 
 }                               /* end read_config() */
 
@@ -833,15 +1000,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));
@@ -855,14 +1028,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
@@ -871,20 +1045,23 @@
     char *optional_config = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
 					       NETSNMP_DS_LIB_OPTIONALCONFIG);
 
+    snmp_call_callbacks(SNMP_CALLBACK_LIBRARY,
+                        SNMP_CALLBACK_PRE_READ_CONFIG, NULL);
+
     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);
 
@@ -900,17 +1077,20 @@
     char *optional_config = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
 					       NETSNMP_DS_LIB_OPTIONALCONFIG);
 
+    snmp_call_callbacks(SNMP_CALLBACK_LIBRARY,
+                        SNMP_CALLBACK_PRE_PREMIB_READ_CONFIG, NULL);
+
     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);
 
@@ -948,7 +1128,7 @@
  * We always retrieve it new, since we have to do it anyway if it is just set.
  */
 const char     *
-get_configuration_directory()
+get_configuration_directory(void)
 {
     char            defaultPath[SPRINT_MAX_LEN];
     char           *homepath;
@@ -996,7 +1176,7 @@
  * We always retrieve it new, since we have to do it anyway if it is just set.
  */
 const char     *
-get_persistent_directory()
+get_persistent_directory(void)
 {
     if (NULL == netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
 				      NETSNMP_DS_LIB_PERSISTENT_DIR)) {
@@ -1036,7 +1216,7 @@
  * We always retrieve it new, since we have to do it anyway if it is just set.
  */
 const char     *
-get_temp_file_pattern()
+get_temp_file_pattern(void)
 {
     if (NULL == netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
 				      NETSNMP_DS_LIB_TEMP_FILE_PATTERN)) {
@@ -1048,8 +1228,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)
 {
@@ -1057,13 +1241,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;
@@ -1075,12 +1260,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;
         }
@@ -1089,14 +1274,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
@@ -1105,6 +1290,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 
              */
@@ -1125,18 +1311,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;
@@ -1144,6 +1333,7 @@
         cptr2 = ++cptr1;
     }
     SNMP_FREE(envconfpath);
+    return ret;
 }
 
 /*******************************************************************-o-******
@@ -1174,23 +1364,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
@@ -1199,10 +1389,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
@@ -1216,27 +1402,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
@@ -1322,7 +1537,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);
@@ -1403,8 +1618,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);
 }
@@ -1465,19 +1683,52 @@
  * config_perror: prints a warning string associated with a file and
  * line number of a .conf file and increments the error count. 
  */
+static void
+config_vlog(int level, const char *levelmsg, const char *str, va_list args)
+{
+    char tmpbuf[256];
+    char* buf = tmpbuf;
+    int len = snprintf(tmpbuf, sizeof(tmpbuf), "%s: line %d: %s: %s\n",
+		       curfilename, linecount, levelmsg, str);
+    if (len >= (int)sizeof(tmpbuf)) {
+	buf = (char*)malloc(len + 1);
+	sprintf(buf, "%s: line %d: %s: %s\n",
+		curfilename, linecount, levelmsg, str);
+    }
+    snmp_vlog(level, buf, args);
+    if (buf != tmpbuf)
+	free(buf);
+}
+
+void
+netsnmp_config_error(const char *str, ...)
+{
+    va_list args;
+    va_start(args, str);
+    config_vlog(LOG_ERR, "Error", str, args);
+    va_end(args);
+    config_errors++;
+}
+
+void
+netsnmp_config_warn(const char *str, ...)
+{
+    va_list args;
+    va_start(args, str);
+    config_vlog(LOG_WARNING, "Warning", str, args);
+    va_end(args);
+}
+
 void
 config_perror(const char *str)
 {
-    snmp_log(LOG_ERR, "%s: line %d: Error: %s\n", curfilename, linecount,
-             str);
-    config_errors++;
+    netsnmp_config_error("%s", str);
 }
 
 void
 config_pwarn(const char *str)
 {
-    snmp_log(LOG_WARNING, "%s: line %d: Warning: %s\n", curfilename,
-             linecount, str);
+    netsnmp_config_warn("%s", str);
 }
 
 /*
@@ -1487,6 +1738,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))
@@ -1499,6 +1756,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))
@@ -1511,9 +1774,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);
 }
 
@@ -1534,6 +1803,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;
@@ -1562,7 +1837,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);
@@ -1582,9 +1857,9 @@
     }
     if (len > 0)
         *to = 0;
-    from = skip_white(from);
+    from = skip_white_const(from);
     return (from);
-}                               /* copy_word */
+}                               /* copy_nword */
 
 /*
  * copy_word
@@ -1657,20 +1932,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) {
@@ -1678,7 +1975,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
@@ -1696,31 +1993,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) {
-                snmp_log(LOG_WARNING,"buffer too small to read octet string (%d < %d)\n",
-                         *len, ilen);
+            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 {
@@ -1732,13 +2027,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 
@@ -1749,25 +2042,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 
  */
@@ -1786,7 +2077,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;
@@ -1798,6 +2089,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;
@@ -1819,7 +2117,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"));
@@ -1828,7 +2126,7 @@
         }
     }
 
-    readfrom = skip_token(readfrom);
+    readfrom = skip_token_const(readfrom);
     return readfrom;
 }
 
@@ -1972,7 +2270,6 @@
         return readfrom;
 
     case ASN_COUNTER64:
-    {
         if (*len < sizeof(U64))
             return NULL;
         *len = sizeof(U64);
@@ -1981,11 +2278,7 @@
         return readfrom;
     }
 
-    default:
-        DEBUGMSGTL(("read_config_read_memory", "Fail: Unknown type: %d",
-                    type));
-        return NULL;
-    }
+    DEBUGMSGTL(("read_config_read_memory", "Fail: Unknown type: %d", type));
     return NULL;
 }
 
@@ -2069,4 +2362,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 d837c51..16ac829 100644
--- a/snmplib/scapi.c
+++ b/snmplib/scapi.c
@@ -15,11 +15,9 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <sys/types.h>
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -29,11 +27,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
@@ -57,6 +51,11 @@
 #include <net-snmp/output_api.h>
 #include <net-snmp/utilities.h>
 
+netsnmp_feature_child_of(usm_support, libnetsnmp)
+netsnmp_feature_child_of(usm_scapi, usm_support)
+
+#ifndef NETSNMP_FEATURE_REMOVE_USM_SCAPI
+
 #ifdef NETSNMP_USE_INTERNAL_MD5
 #include <net-snmp/library/md5.h>
 #endif
@@ -69,6 +68,13 @@
 #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>
@@ -79,7 +85,7 @@
 #endif
 
 #ifndef NETSNMP_DISABLE_DES
-#ifdef STRUCT_DES_KS_STRUCT_HAS_WEAK_KEY
+#ifdef HAVE_STRUCT_DES_KS_STRUCT_WEAK_KEY
 /* these are older names for newer structures that exist in openssl .9.7 */
 #define DES_key_schedule    des_key_schedule 
 #define DES_cblock          des_cblock 
@@ -92,6 +98,9 @@
 
 #endif /* HAVE_OPENSSL */
 
+#ifdef NETSNMP_USE_INTERNAL_CRYPTO
+#endif
+
 #ifdef NETSNMP_USE_PKCS11
 #include <security/cryptoki.h>
 #endif
@@ -105,6 +114,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):
@@ -132,6 +150,8 @@
     return SNMPERR_GENERR;
 }
 
+netsnmp_feature_child_of(scapi_get_proper_priv_length, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_SCAPI_GET_PROPER_PRIV_LENGTH
 int
 sc_get_proper_priv_length(const oid * privtype, u_int privtype_len)
 {
@@ -148,6 +168,7 @@
 #endif
     return properlength;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SCAPI_GET_PROPER_PRIV_LENGTH */
 
 
 /*******************************************************************-o-******
@@ -161,15 +182,15 @@
 {
     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;
 
     gettimeofday(&tv, (struct timezone *) 0);
 
-    srandom(tv.tv_sec ^ tv.tv_usec);
+    srandom((unsigned)(tv.tv_sec ^ tv.tv_usec));
 #elif NETSNMP_USE_PKCS11
     DEBUGTRACE;
     rval = pkcs_init();
@@ -196,10 +217,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,17 +286,18 @@
  */
 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)
-    size_t             buf_len = sizeof(buf);
+    unsigned int    buf_len = sizeof(buf);
 #endif
 
     DEBUGTRACE;
@@ -300,11 +322,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
@@ -321,10 +343,10 @@
     else {
         QUITFUN(SNMPERR_GENERR, sc_generate_keyed_hash_quit);
     }
-    if ((int)buf_len != properlength) {
+    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 +376,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;
@@ -399,14 +438,17 @@
  * Returns:
  * SNMPERR_SUCCESS              Success.
  * SNMP_SC_GENERAL_FAILURE      Any error.
+ * 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;
@@ -415,14 +457,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
@@ -451,7 +496,10 @@
     EVP_MD_CTX_init(cptr);
 #endif
 #endif
-    EVP_DigestInit(cptr, hashfn);
+    if (!EVP_DigestInit(cptr, hashfn)) {
+        /* requested hash function is not available */
+        return SNMPERR_SC_NOT_CONFIGURED;
+    }
 
 /** pass the data */
     EVP_DigestUpdate(cptr, buf, buf_len);
@@ -468,6 +516,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
@@ -524,10 +596,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;
@@ -555,10 +627,11 @@
         QUITFUN(SNMPERR_GENERR, sc_check_keyed_hash_quit);
     }
 
+
     if (maclen != USM_MD5_AND_SHA_AUTH_LEN) {
         QUITFUN(SNMPERR_GENERR, sc_check_keyed_hash_quit);
     }
-
+    
     /*
      * Generate a full hash of the message, then compare
      * the result with the given MAC which may shorter than
@@ -616,9 +689,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;
@@ -891,7 +964,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;
@@ -1071,3 +1144,220 @@
 #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 */
+#endif /*  NETSNMP_FEATURE_REMOVE_USM_SCAPI  */
diff --git a/snmplib/snmp-tc.c b/snmplib/snmp-tc.c
index efa5402..891c3a0 100644
--- a/snmplib/snmp-tc.c
+++ b/snmplib/snmp-tc.c
@@ -5,10 +5,8 @@
 
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <sys/types.h>
-#if HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
 #if HAVE_STDLIB_H
 #include <stdlib.h>
 #endif
@@ -16,16 +14,12 @@
 #if HAVE_STRING_H
 #include <string.h>
 #endif
-#if HAVE_STDLIB_H
-#include <stdlib.h>
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
 #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
@@ -39,6 +33,14 @@
 #include <net-snmp/library/snmp-tc.h>   /* for "internal" definitions */
 #include <net-snmp/library/snmp_api.h>
 
+netsnmp_feature_child_of(snmp_tc_all, libnetsnmp)
+
+netsnmp_feature_child_of(netsnmp_dateandtime_set_buf_from_vars, netsnmp_unused)
+netsnmp_feature_child_of(date_n_time, snmp_tc_all)
+netsnmp_feature_child_of(ctime_to_timet, snmp_tc_all)
+netsnmp_feature_child_of(check_rowstatus_with_storagetype_transition, snmp_tc_all)
+
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_DATEANDTIME_SET_BUF_FROM_VARS
 /*
   DateAndTime ::= TEXTUAL-CONVENTION
     DISPLAY-HINT "2d-1d-1d,1d:1d:1d.1d,1a1d:1d"
@@ -119,9 +121,11 @@
 
     return SNMPERR_SUCCESS;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_DATEANDTIME_SET_BUF_FROM_VARS */
 
+#ifndef NETSNMP_FEATURE_REMOVE_DATE_N_TIME
 u_char         *
-date_n_time(time_t * when, size_t * length)
+date_n_time(const time_t * when, size_t * length)
 {
     struct tm      *tm_p;
     static u_char   string[11];
@@ -159,15 +163,15 @@
     string[7] = 0;
     *length = 8;
 
-#ifndef cygwin
+#if defined(HAVE_STRUCT_TM_TM_GMTOFF) || defined(HAVE_TIMEZONE_VARIABLE)
     /*
      * Timezone offset
      */
     {
-#ifdef STRUCT_TM_HAS_TM_GMTOFF
-    const int tzoffset = -tm_p->tm_gmtoff;     /* Seconds east of UTC */
+#ifdef HAVE_STRUCT_TM_TM_GMTOFF
+    const int tzoffset = -tm_p->tm_gmtoff;   /* Seconds east of UTC */
 #else
-    const int tzoffset = timezone;             /* Seconds west of UTC */
+    const int tzoffset = timezone;           /* Seconds west of UTC */
 #endif
     if (tzoffset > 0)
         string[8] = '-';
@@ -179,7 +183,7 @@
     }
 #endif
 
-#ifdef SYSV
+#if defined(SYSV) && !HAVE_STRUCT_TM_TM_GMTOFF
     /*
      * Daylight saving time
      */
@@ -199,10 +203,11 @@
 
     return string;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_DATE_N_TIME */
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_CTIME_TO_TIMET
 time_t
-ctime_to_timet(char *str)
+ctime_to_timet(const char *str)
 {
     struct tm       tm;
 
@@ -258,9 +263,10 @@
 
     return (mktime(&tm));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CTIME_TO_TIMET */
 
 /*
- * blatantly lifted from opensmp 
+ * blatantly lifted from opensnmp 
  */
 char
 check_rowstatus_transition(int oldValue, int newValue)
@@ -370,16 +376,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;
@@ -392,13 +395,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)
             /*
@@ -418,6 +414,25 @@
     return SNMP_ERR_NOERROR;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_ROWSTATUS_WITH_STORAGETYPE_TRANSITION
+char
+check_rowstatus_with_storagetype_transition(int oldValue, int newValue,
+                                            int oldStorage)
+{
+    /*
+     * 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);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_ROWSTATUS_WITH_STORAGETYPE_TRANSITION */
+
+netsnmp_feature_child_of(check_storage_transition, snmp_tc_all)
+#ifndef NETSNMP_FEATURE_REMOVE_CHECK_STORAGE_TRANSITION
 char
 check_storage_transition(int oldValue, int newValue)
 {
@@ -458,3 +473,4 @@
 
     return SNMP_ERR_NOERROR;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CHECK_STORAGE_TRANSITION */
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/snmpAAL5PVCDomain.c b/snmplib/snmpAAL5PVCDomain.c
deleted file mode 100644
index 4f2f0b0..0000000
--- a/snmplib/snmpAAL5PVCDomain.c
+++ /dev/null
@@ -1,359 +0,0 @@
-#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
-#include <atm.h>
-
-#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/snmpAAL5PVCDomain.h>
-
-
-oid netsnmp_AAL5PVCDomain[10] = { NETSNMP_ENTERPRISE_MIB, 3, 3, 3 };
-static netsnmp_tdomain aal5pvcDomain;
-
-
-/*
- * Return a string representing the address in data, or else the "far end"
- * address if data is NULL.  
- */
-
-static char *
-netsnmp_aal5pvc_fmtaddr(netsnmp_transport *t, void *data, int len)
-{
-    struct sockaddr_atmpvc *to = NULL;
-
-    if (data != NULL && len == sizeof(struct sockaddr_atmpvc)) {
-        to = (struct sockaddr_atmpvc *) data;
-    } else if (t != NULL && t->data != NULL &&
-               t->data_length == sizeof(struct sockaddr_atmpvc)) {
-        to = (struct sockaddr_atmpvc *) t->data;
-    }
-    if (to == NULL) {
-        return strdup("AAL5 PVC: unknown");
-    } else {
-        char tmp[64];
-        sprintf(tmp, "AAL5 PVC: %hd.%hd.%d", to->sap_addr.itf,
-                to->sap_addr.vpi, to->sap_addr.vci);
-        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_aal5pvc_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, 0);
-	    if (rc < 0 && errno != EINTR) {
-		break;
-	    }
-	}
-
-        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);
-        } else {
-            DEBUGMSGTL(("netsnmp_aal5pvc", "recv on fd %d err %d (\"%s\")\n", 
-			t->sock, errno, strerror(errno)));
-        }
-        *opaque = NULL;
-        *olength = 0;
-    }
-    return rc;
-}
-
-
-
-static int
-netsnmp_aal5pvc_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_atmpvc)) {
-        to = (struct sockaddr *) (*opaque);
-    } else if (t != NULL && t->data != NULL &&
-               t->data_length == sizeof(struct sockaddr_atmpvc)) {
-        to = (struct sockaddr *) (t->data);
-    }
-
-    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);
-	while (rc < 0) {
-	    rc = sendto(t->sock, buf, size, 0, NULL, 0);
-	    if (rc < 0 && errno != EINTR) {
-		break;
-	    }
-	}
-    }
-    return rc;
-}
-
-
-
-static int
-netsnmp_aal5pvc_close(netsnmp_transport *t)
-{
-    int rc = -1;
-
-    if (t->sock >= 0) {
-        DEBUGMSGTL(("netsnmp_aal5pvc", "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 an AAL5 PVC transport for SNMP.  Local is TRUE if addr is the local 
- * NSAP to bind to (i.e. this is a server-type session); otherwise addr is 
- * the remote NSAP to send things to.  
- */
-
-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) {
-        return NULL;
-    }
-
-    t = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
-    if (t == NULL) {
-        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);
-
-    memset(t, 0, sizeof(netsnmp_transport));
-
-    t->domain = netsnmp_AAL5PVCDomain;
-    t->domain_length =
-        sizeof(netsnmp_AAL5PVCDomain) / sizeof(netsnmp_AAL5PVCDomain[0]);
-
-    t->sock = socket(PF_ATMPVC, SOCK_DGRAM, 0);
-    if (t->sock < 0) {
-        DEBUGMSGTL(("netsnmp_aal5pvc","socket failed (%s)\n",strerror(errno)));
-        netsnmp_transport_free(t);
-        return NULL;
-    }
-    DEBUGMSGTL(("netsnmp_aal5pvc", "fd %d opened\n", t->sock));
-
-    {
-        /*
-         * Set up the QOS parameters.
-         */
-
-        struct atm_qos qos = { 0 };
-        qos.aal = ATM_AAL5;
-        qos.rxtp.traffic_class = ATM_UBR;
-        qos.rxtp.max_sdu = SNMP_MAX_LEN;    /*  Hmm -- this is a bit small?  */
-        qos.txtp = qos.rxtp;
-
-        if (setsockopt(t->sock, SOL_ATM, SO_ATMQOS, &qos, sizeof(qos)) < 0) {
-            DEBUGMSGTL(("netsnmp_aal5pvc", "setsockopt failed (%s)\n",
-                        strerror(errno)));
-            netsnmp_aal5pvc_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-    }
-
-    if (local) {
-        t->local = (unsigned char*)malloc(8);
-        if (t->local == NULL) {
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        t->local[0] = (addr->sap_addr.itf & 0xff00) >> 8;
-        t->local[1] = (addr->sap_addr.itf & 0x00ff) >> 0;
-        t->local[2] = (addr->sap_addr.vpi & 0xff00) >> 8;
-        t->local[3] = (addr->sap_addr.vpi & 0x00ff) >> 0;
-        t->local[4] = (addr->sap_addr.vci & 0xff000000) >> 24;
-        t->local[5] = (addr->sap_addr.vci & 0x00ff0000) >> 16;
-        t->local[6] = (addr->sap_addr.vci & 0x0000ff00) >> 8;
-        t->local[7] = (addr->sap_addr.vci & 0x000000ff) >> 0;
-        t->local_length = 8;
-
-        if (bind(t->sock, (struct sockaddr *) addr,
-                 sizeof(struct sockaddr_atmpvc)) < 0) {
-            DEBUGMSGTL(("netsnmp_aal5pvc", "bind failed (%s)\n",
-                        strerror(errno)));
-            netsnmp_aal5pvc_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-    } else {
-        t->remote = (unsigned char*)malloc(8);
-        if (t->remote == NULL) {
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        t->remote[0] = (addr->sap_addr.itf & 0xff00) >> 8;
-        t->remote[1] = (addr->sap_addr.itf & 0x00ff) >> 0;
-        t->remote[2] = (addr->sap_addr.vpi & 0xff00) >> 8;
-        t->remote[3] = (addr->sap_addr.vpi & 0x00ff) >> 0;
-        t->remote[4] = (addr->sap_addr.vci & 0xff000000) >> 24;
-        t->remote[5] = (addr->sap_addr.vci & 0x00ff0000) >> 16;
-        t->remote[6] = (addr->sap_addr.vci & 0x0000ff00) >> 8;
-        t->remote[7] = (addr->sap_addr.vci & 0x000000ff) >> 0;
-        t->remote_length = 8;
-
-        if (connect(t->sock, (struct sockaddr *) addr,
-                    sizeof(struct sockaddr_atmpvc)) < 0) {
-            DEBUGMSGTL(("netsnmp_aal5pvc", "connect failed (%s)\n",
-                        strerror(errno)));
-            netsnmp_aal5pvc_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-    }
-
-    t->data = malloc(sizeof(struct sockaddr_atmpvc));
-    if (t->data == NULL) {
-        netsnmp_transport_free(t);
-        return NULL;
-    }
-    memcpy(t->data, addr, sizeof(struct sockaddr_atmpvc));
-    t->data_length = sizeof(struct sockaddr_atmpvc);
-
-    /*
-     * 16-bit length field in the trailer, no headers.  
-     */
-
-    t->msgMaxSize = 0xffff;
-    t->f_recv     = netsnmp_aal5pvc_recv;
-    t->f_send     = netsnmp_aal5pvc_send;
-    t->f_close    = netsnmp_aal5pvc_close;
-    t->f_accept   = NULL;
-    t->f_fmtaddr  = netsnmp_aal5pvc_fmtaddr;
-
-    return t;
-}
-
-
-
-netsnmp_transport *
-netsnmp_aal5pvc_create_tstring(const char *str, int local,
-			       const char *default_target)
-{
-    struct sockaddr_atmpvc addr;
-
-    if (str == NULL || *str == '\0')
-	str = default_target;
-
-    if (str != NULL) {
-        addr.sap_family = AF_ATMPVC;
-
-        if (sscanf(str, "%hd.%hd.%d", &(addr.sap_addr.itf),
-                   &(addr.sap_addr.vpi), &(addr.sap_addr.vci)) == 3) {
-            return netsnmp_aal5pvc_transport(&addr, local);
-        } else if (sscanf(str, "%hd.%d", &(addr.sap_addr.vpi),
-                          &(addr.sap_addr.vci)) == 2) {
-            addr.sap_addr.itf = 0;
-            return netsnmp_aal5pvc_transport(&addr, local);
-        } else if (sscanf(str, "%d", &(addr.sap_addr.vci)) == 1) {
-            addr.sap_addr.itf = 0;
-            addr.sap_addr.vpi = 0;
-            return netsnmp_aal5pvc_transport(&addr, local);
-        } else {
-            return NULL;
-        }
-    } else {
-        return NULL;
-    }
-}
-
-
-
-netsnmp_transport *
-netsnmp_aal5pvc_create_ostring(const u_char * o, size_t o_len, int local)
-{
-    struct sockaddr_atmpvc addr;
-
-    if (o_len == 8) {
-        addr.sap_family = AF_ATMPVC;
-        addr.sap_addr.itf = (o[0] << 8) + (o[1] << 0);
-        addr.sap_addr.vpi = (o[2] << 8) + (o[3] << 0);
-        addr.sap_addr.vci =
-	    (o[4] << 24) + (o[5] << 16) + (o[6] << 8) + (o[7] << 0);
-        return netsnmp_aal5pvc_transport(&addr, local);
-    }
-
-    return NULL;
-}
-
-
-
-void
-netsnmp_aal5pvc_ctor(void)
-{
-    aal5pvcDomain.name = netsnmp_AAL5PVCDomain;
-    aal5pvcDomain.name_length = sizeof(netsnmp_AAL5PVCDomain) / sizeof(oid);
-    aal5pvcDomain.prefix = (const char**)calloc(3, sizeof(char *));
-    aal5pvcDomain.prefix[0] = "aal5pvc";
-    aal5pvcDomain.prefix[1] = "pvc";
-
-    aal5pvcDomain.f_create_from_tstring     = NULL;
-    aal5pvcDomain.f_create_from_tstring_new = netsnmp_aal5pvc_create_tstring;
-    aal5pvcDomain.f_create_from_ostring     = netsnmp_aal5pvc_create_ostring;
-
-    netsnmp_tdomain_register(&aal5pvcDomain);
-}
diff --git a/snmplib/snmpCallbackDomain.c b/snmplib/snmpCallbackDomain.c
deleted file mode 100644
index 085a214..0000000
--- a/snmplib/snmpCallbackDomain.c
+++ /dev/null
@@ -1,626 +0,0 @@
-#include <net-snmp/net-snmp-config.h>
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <ctype.h>
-#include <errno.h>
-
-#ifdef WIN32
-#include <net-snmp/library/winpipe.h>
-#endif
-#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_SYS_UN_H
-#include <sys/un.h>
-#endif
-#if HAVE_IO_H
-#include <io.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/config_api.h>
-#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
-#endif
-
-#ifdef NETSNMP_TRANSPORT_CALLBACK_DOMAIN
-
-static netsnmp_transport_list *trlist = NULL;
-
-static int      callback_count = 0;
-
-typedef struct callback_hack_s {
-    void           *orig_transport_data;
-    netsnmp_pdu    *pdu;
-} callback_hack;
-
-typedef struct callback_queue_s {
-    int             callback_num;
-    netsnmp_callback_pass *item;
-    struct callback_queue_s *next, *prev;
-} callback_queue;
-
-callback_queue *thequeue;
-
-static netsnmp_transport *
-find_transport_from_callback_num(int num)
-{
-    static netsnmp_transport_list *ptr;
-    for (ptr = trlist; ptr; ptr = ptr->next)
-        if (((netsnmp_callback_info *) ptr->transport->data)->
-            callback_num == num)
-            return ptr->transport;
-    return NULL;
-}
-
-static void
-callback_debug_pdu(const char *ourstring, netsnmp_pdu *pdu)
-{
-    netsnmp_variable_list *vb;
-    int             i = 1;
-    DEBUGMSGTL((ourstring,
-                "PDU: command = %d, errstat = %d, errindex = %d\n",
-                pdu->command, pdu->errstat, pdu->errindex));
-    for (vb = pdu->variables; vb; vb = vb->next_variable) {
-        DEBUGMSGTL((ourstring, "  var %d:", i++));
-        DEBUGMSGVAR((ourstring, vb));
-        DEBUGMSG((ourstring, "\n"));
-    }
-}
-
-void
-callback_push_queue(int num, netsnmp_callback_pass *item)
-{
-    callback_queue *newitem = SNMP_MALLOC_TYPEDEF(callback_queue);
-    callback_queue *ptr;
-
-    newitem->callback_num = num;
-    newitem->item = item;
-    if (thequeue) {
-        for (ptr = thequeue; ptr && ptr->next; ptr = ptr->next) {
-        }
-        ptr->next = newitem;
-        newitem->prev = ptr;
-    } else {
-        thequeue = newitem;
-    }
-    DEBUGIF("dump_send_callback_transport") {
-        callback_debug_pdu("dump_send_callback_transport", item->pdu);
-    }
-}
-
-netsnmp_callback_pass *
-callback_pop_queue(int num)
-{
-    netsnmp_callback_pass *cp;
-    callback_queue *ptr;
-
-    for (ptr = thequeue; ptr; ptr = ptr->next) {
-        if (ptr->callback_num == num) {
-            if (ptr->prev) {
-                ptr->prev->next = ptr->next;
-            } else {
-                thequeue = ptr->next;
-            }
-            if (ptr->next) {
-                ptr->next->prev = ptr->prev;
-            }
-            cp = ptr->item;
-            SNMP_FREE(ptr);
-            DEBUGIF("dump_recv_callback_transport") {
-                callback_debug_pdu("dump_recv_callback_transport",
-                                   cp->pdu);
-            }
-            return cp;
-        }
-    }
-    return NULL;
-}
-
-/*
- * Return a string representing the address in data, or else the "far end"
- * address if data is NULL.  
- */
-
-char *
-netsnmp_callback_fmtaddr(netsnmp_transport *t, void *data, int len)
-{
-    char buf[SPRINT_MAX_LEN];
-    netsnmp_callback_info *mystuff;
-
-    if (!t)
-        return strdup("callback: unknown");
-
-    mystuff = (netsnmp_callback_info *) t->data;
-
-    if (!mystuff)
-        return strdup("callback: unknown");
-
-    snprintf(buf, SPRINT_MAX_LEN, "callback: %d on fd %d",
-             mystuff->callback_num, mystuff->pipefds[0]);
-    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...  
- */
-
-int
-netsnmp_callback_recv(netsnmp_transport *t, void *buf, int size,
-		      void **opaque, int *olength)
-{
-    int rc = -1;
-    char newbuf[1];
-    netsnmp_callback_info *mystuff = (netsnmp_callback_info *) t->data;
-
-    DEBUGMSGTL(("transport_callback", "hook_recv enter\n"));
-
-    while (rc < 0) {
-#ifdef WIN32
-	rc = recvfrom(mystuff->pipefds[0], newbuf, 1, 0, NULL, 0);
-#else
-	rc = read(mystuff->pipefds[0], newbuf, 1);
-#endif
-	if (rc < 0 && errno != EINTR) {
-	    break;
-	}
-    }
-    if (rc > 0)
-        memset(buf, 0, rc);
-
-    if (mystuff->linkedto) {
-        /*
-         * we're the client.  We don't need to do anything. 
-         */
-    } else {
-        /*
-         * malloc the space here, but it's filled in by
-         * snmp_callback_created_pdu() below 
-         */
-        int            *returnnum = (int *) calloc(1, sizeof(int));
-        *opaque = returnnum;
-        *olength = sizeof(int);
-    }
-    DEBUGMSGTL(("transport_callback", "hook_recv exit\n"));
-    return rc;
-}
-
-
-
-int
-netsnmp_callback_send(netsnmp_transport *t, void *buf, int size,
-		      void **opaque, int *olength)
-{
-    int from, rc = -1;
-    netsnmp_callback_info *mystuff = (netsnmp_callback_info *) t->data;
-    netsnmp_callback_pass *cp;
-
-    /*
-     * extract the pdu from the hacked buffer 
-     */
-    netsnmp_transport *other_side;
-    callback_hack  *ch = (callback_hack *) * opaque;
-    netsnmp_pdu    *pdu = ch->pdu;
-    *opaque = ch->orig_transport_data;
-    SNMP_FREE(ch);
-
-    DEBUGMSGTL(("transport_callback", "hook_send enter\n"));
-
-    cp = SNMP_MALLOC_TYPEDEF(netsnmp_callback_pass);
-    if (!cp)
-        return -1;
-
-    cp->pdu = snmp_clone_pdu(pdu);
-    if (cp->pdu->transport_data) {
-        /*
-         * not needed and not properly freed later 
-         */
-        SNMP_FREE(cp->pdu->transport_data);
-    }
-
-    if (cp->pdu->flags & UCD_MSG_FLAG_EXPECT_RESPONSE)
-        cp->pdu->flags ^= UCD_MSG_FLAG_EXPECT_RESPONSE;
-
-    /*
-     * push the sent pdu onto the stack 
-     */
-    /*
-     * AND send a bogus byte to the remote callback receiver's pipe 
-     */
-    if (mystuff->linkedto) {
-        /*
-         * we're the client, send it to the parent 
-         */
-        cp->return_transport_num = mystuff->callback_num;
-
-        other_side = find_transport_from_callback_num(mystuff->linkedto);
-        if (!other_side) {
-            snmp_free_pdu(cp->pdu);
-            SNMP_FREE(cp);
-            return -1;
-        }
-
-	while (rc < 0) {
-#ifdef WIN32
-	    rc = sendto(((netsnmp_callback_info*) other_side->data)->pipefds[1], " ", 1, 0, NULL, 0);
-#else
-	    rc = write(((netsnmp_callback_info *)other_side->data)->pipefds[1],
-		       " ", 1);
-#endif
-	    if (rc < 0 && errno != EINTR) {
-		break;
-	    }
-	}
-        callback_push_queue(mystuff->linkedto, cp);
-        /*
-         * we don't need the transport data any more 
-         */
-        if (*opaque) {
-            SNMP_FREE(*opaque);
-            *opaque = NULL;
-        }
-    } else {
-        /*
-         * we're the server, send it to the person that sent us the request 
-         */
-        from = **((int **) opaque);
-        /*
-         * we don't need the transport data any more 
-         */
-        if (*opaque) {
-            SNMP_FREE(*opaque);
-            *opaque = NULL;
-        }
-        other_side = find_transport_from_callback_num(from);
-        if (!other_side) {
-            snmp_free_pdu(cp->pdu);
-            SNMP_FREE(cp);
-            return -1;
-        }
-	while (rc < 0) {
-#ifdef WIN32
-	    rc = sendto(((netsnmp_callback_info*) other_side->data)->pipefds[1], " ", 1, 0, NULL, 0);
-#else
-	    rc = write(((netsnmp_callback_info *)other_side->data)->pipefds[1],
-		       " ", 1);
-#endif
-	    if (rc < 0 && errno != EINTR) {
-		break;
-	    }
-	}
-        callback_push_queue(from, cp);
-    }
-
-    DEBUGMSGTL(("transport_callback", "hook_send exit\n"));
-    return 0;
-}
-
-
-
-int
-netsnmp_callback_close(netsnmp_transport *t)
-{
-    int             rc;
-    netsnmp_callback_info *mystuff = (netsnmp_callback_info *) t->data;
-    DEBUGMSGTL(("transport_callback", "hook_close enter\n"));
-
-#ifdef WIN32
-    rc  = closesocket(mystuff->pipefds[0]);
-    rc |= closesocket(mystuff->pipefds[1]);
-#else
-    rc  = close(mystuff->pipefds[0]);
-    rc |= close(mystuff->pipefds[1]);
-#endif
-
-    rc |= netsnmp_transport_remove_from_list(&trlist, t);
-
-    DEBUGMSGTL(("transport_callback", "hook_close exit\n"));
-    return rc;
-}
-
-
-
-int
-netsnmp_callback_accept(netsnmp_transport *t)
-{
-    DEBUGMSGTL(("transport_callback", "hook_accept enter\n"));
-    DEBUGMSGTL(("transport_callback", "hook_accept exit\n"));
-    return 0;
-}
-
-
-
-/*
- * Open a Callback-domain 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
- * (and we make up a temporary name for the local end of the
- * connection).  
- */
-
-netsnmp_transport *
-netsnmp_callback_transport(int to)
-{
-
-    netsnmp_transport *t = NULL;
-    netsnmp_callback_info *mydata;
-    int             rc;
-
-    /*
-     * transport 
-     */
-    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
-    if (!t)
-        return NULL;
-
-    /*
-     * our stuff 
-     */
-    mydata = SNMP_MALLOC_TYPEDEF(netsnmp_callback_info);
-    mydata->linkedto = to;
-    mydata->callback_num = ++callback_count;
-    mydata->data = NULL;
-    t->data = mydata;
-
-#ifdef WIN32
-    rc = create_winpipe_transport(mydata->pipefds);
-#else
-    rc = pipe(mydata->pipefds);
-#endif
-    t->sock = mydata->pipefds[0];
-
-    if (rc) {
-        SNMP_FREE(mydata);
-        SNMP_FREE(t);
-        return NULL;
-    }
-
-    t->f_recv    = netsnmp_callback_recv;
-    t->f_send    = netsnmp_callback_send;
-    t->f_close   = netsnmp_callback_close;
-    t->f_accept  = netsnmp_callback_accept;
-    t->f_fmtaddr = netsnmp_callback_fmtaddr;
-
-    netsnmp_transport_add_to_list(&trlist, t);
-
-    if (to)
-        DEBUGMSGTL(("transport_callback", "initialized %d linked to %d\n",
-                    mydata->callback_num, to));
-    else
-        DEBUGMSGTL(("transport_callback",
-                    "initialized master listening on %d\n",
-                    mydata->callback_num));
-    return t;
-}
-
-int
-netsnmp_callback_hook_parse(netsnmp_session * sp,
-                            netsnmp_pdu *pdu,
-                            u_char * packetptr, size_t len)
-{
-    if (SNMP_MSG_RESPONSE == pdu->command ||
-        SNMP_MSG_REPORT == pdu->command)
-        pdu->flags |= UCD_MSG_FLAG_RESPONSE_PDU;
-    else
-        pdu->flags &= (~UCD_MSG_FLAG_RESPONSE_PDU);
-
-    return SNMP_ERR_NOERROR;
-}
-
-int
-netsnmp_callback_hook_build(netsnmp_session * sp,
-                            netsnmp_pdu *pdu, u_char * ptk, size_t * len)
-{
-    /*
-     * very gross hack, as this is passed later to the transport_send
-     * function 
-     */
-    callback_hack  *ch = SNMP_MALLOC_TYPEDEF(callback_hack);
-    DEBUGMSGTL(("transport_callback", "hook_build enter\n"));
-    ch->pdu = pdu;
-    ch->orig_transport_data = pdu->transport_data;
-    pdu->transport_data = ch;
-    switch (pdu->command) {
-    case SNMP_MSG_GETBULK:
-        if (pdu->max_repetitions < 0) {
-            sp->s_snmp_errno = SNMPERR_BAD_REPETITIONS;
-            return -1;
-        }
-        if (pdu->non_repeaters < 0) {
-            sp->s_snmp_errno = SNMPERR_BAD_REPEATERS;
-            return -1;
-        }
-        break;
-    case SNMP_MSG_RESPONSE:
-    case SNMP_MSG_TRAP:
-    case SNMP_MSG_TRAP2:
-        pdu->flags &= (~UCD_MSG_FLAG_EXPECT_RESPONSE);
-        /*
-         * Fallthrough
-         */
-    default:
-        if (pdu->errstat == SNMP_DEFAULT_ERRSTAT)
-            pdu->errstat = 0;
-        if (pdu->errindex == SNMP_DEFAULT_ERRINDEX)
-            pdu->errindex = 0;
-        break;
-    }
-
-    /*
-     * Copy missing values from session defaults
-     */
-    switch (pdu->version) {
-#ifndef NETSNMP_DISABLE_SNMPV1
-    case SNMP_VERSION_1:
-#endif
-#ifndef NETSNMP_DISABLE_SNMPV2C
-    case SNMP_VERSION_2c:
-#endif
-#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
-        if (pdu->community_len == 0) {
-            if (sp->community_len == 0) {
-                sp->s_snmp_errno = SNMPERR_BAD_COMMUNITY;
-                return -1;
-            }
-            pdu->community = (u_char *) malloc(sp->community_len);
-            if (pdu->community == NULL) {
-                sp->s_snmp_errno = SNMPERR_MALLOC;
-                return -1;
-            }
-            memmove(pdu->community,
-                    sp->community, sp->community_len);
-            pdu->community_len = sp->community_len;
-        }
-        break;
-#endif
-    case SNMP_VERSION_3:
-        if (pdu->securityNameLen == 0) {
-	  pdu->securityName = (char *)malloc(sp->securityNameLen);
-            if (pdu->securityName == NULL) {
-                sp->s_snmp_errno = SNMPERR_MALLOC;
-                return -1;
-            }
-            memmove(pdu->securityName,
-                     sp->securityName, sp->securityNameLen);
-            pdu->securityNameLen = sp->securityNameLen;
-        }
-        if (pdu->securityModel == -1)
-            pdu->securityModel = sp->securityModel;
-        if (pdu->securityLevel == 0)
-            pdu->securityLevel = sp->securityLevel;
-        /* WHAT ELSE ?? */
-    }
-    ptk[0] = 0;
-    *len = 1;
-    DEBUGMSGTL(("transport_callback", "hook_build exit\n"));
-    return 1;
-}
-
-int
-netsnmp_callback_check_packet(u_char * pkt, size_t len)
-{
-    return 1;
-}
-
-netsnmp_pdu    *
-netsnmp_callback_create_pdu(netsnmp_transport *transport,
-                            void *opaque, size_t olength)
-{
-    netsnmp_pdu    *pdu;
-    netsnmp_callback_pass *cp =
-        callback_pop_queue(((netsnmp_callback_info *) transport->data)->
-                           callback_num);
-    if (!cp)
-        return NULL;
-    pdu = cp->pdu;
-    pdu->transport_data = opaque;
-    pdu->transport_data_length = olength;
-    if (opaque)                 /* if created, we're the server */
-        *((int *) opaque) = cp->return_transport_num;
-    SNMP_FREE(cp);
-    return pdu;
-}
-
-netsnmp_session *
-netsnmp_callback_open(int attach_to,
-                      int (*return_func) (int op,
-                                          netsnmp_session * session,
-                                          int reqid, netsnmp_pdu *pdu,
-                                          void *magic),
-                      int (*fpre_parse) (netsnmp_session *,
-                                         struct netsnmp_transport_s *,
-                                         void *, int),
-                      int (*fpost_parse) (netsnmp_session *, netsnmp_pdu *,
-                                          int))
-{
-    netsnmp_session callback_sess, *callback_ss;
-    netsnmp_transport *callback_tr;
-
-    callback_tr = netsnmp_callback_transport(attach_to);
-    snmp_sess_init(&callback_sess);
-    callback_sess.callback = return_func;
-    if (attach_to) {
-        /*
-         * client 
-         */
-        /*
-         * trysess.community = (u_char *) callback_ss; 
-         */
-    } else {
-        callback_sess.isAuthoritative = SNMP_SESS_AUTHORITATIVE;
-    }
-    callback_sess.remote_port = 0;
-    callback_sess.retries = 0;
-    callback_sess.timeout = 30000000;
-    callback_sess.version = SNMP_DEFAULT_VERSION;       /* (mostly) bogus */
-    callback_ss = snmp_add_full(&callback_sess, callback_tr,
-                                fpre_parse,
-                                netsnmp_callback_hook_parse, fpost_parse,
-                                netsnmp_callback_hook_build,
-                                NULL,
-                                netsnmp_callback_check_packet,
-                                netsnmp_callback_create_pdu);
-    if (callback_ss)
-        callback_ss->local_port =
-            ((netsnmp_callback_info *) callback_tr->data)->callback_num;
-    return callback_ss;
-}
-
-
-
-void
-netsnmp_clear_callback_list(void)
-{
-
-    netsnmp_transport_list *list = trlist, *next = NULL;
-    netsnmp_transport *tr = NULL;
-
-    DEBUGMSGTL(("callback_clear", "called netsnmp_callback_clear_list()\n"));
-    while (list != NULL) {
-	next = list->next;
-	tr = list->transport;
-
-	if (tr != NULL) {
-	    tr->f_close(tr);
-  	    netsnmp_transport_remove_from_list(&trlist, tr);
-	    netsnmp_transport_free(tr);
-	}
-	list = next;
-    }
-    trlist = NULL;
-
-}
-
-#endif /* NETSNMP_TRANSPORT_CALLBACK_DOMAIN */
diff --git a/snmplib/snmpIPXDomain.c b/snmplib/snmpIPXDomain.c
deleted file mode 100644
index ecafd5c..0000000
--- a/snmplib/snmpIPXDomain.c
+++ /dev/null
@@ -1,454 +0,0 @@
-#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_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/snmpIPXDomain.h>
-
-#define SNMP_IPX_DEFAULT_PORT	36879   /*  Specified in RFC 1420.  */
-static netsnmp_tdomain ipxDomain;
-
-/*
- * Return a string representing the address in data, or else the "far end"
- * address if data is NULL.  
- */
-
-static char *
-netsnmp_ipx_fmtaddr(netsnmp_transport *t, void *data, int len)
-{
-    struct sockaddr_ipx *to = NULL;
-
-    if (data != NULL && len == sizeof(struct sockaddr_ipx)) {
-        to = (struct sockaddr_ipx *) data;
-    } else if (t != NULL && t->data != NULL) {
-        to = (struct sockaddr_ipx *) t->data;
-    }
-    if (to == NULL) {
-        return strdup("IPX: unknown");
-    } else {
-        char tmp[64];
-        sprintf(tmp, "IPX: %08X:%02X%02X%02X%02X%02X%02X/%hu",
-                ntohl(to->sipx_network), to->sipx_node[0],
-                to->sipx_node[1], to->sipx_node[2], to->sipx_node[3],
-                to->sipx_node[4], to->sipx_node[5], ntohs(to->sipx_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_ipx_recv(netsnmp_transport *t, void *buf, int size,
-		 void **opaque, int *olength)
-{
-    int		     rc = -1;
-    socklen_t	     fromlen = sizeof(struct sockaddr);
-    struct sockaddr *from;
-
-    if (t != NULL && t->sock >= 0) {
-        from = (struct sockaddr *)malloc(sizeof(struct sockaddr_ipx));
-        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_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)));
-        }
-        *opaque = (void *) from;
-        *olength = sizeof(struct sockaddr_ipx);
-    }
-    return rc;
-}
-
-
-
-static int
-netsnmp_ipx_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_ipx)) {
-        to = (struct sockaddr *) (*opaque);
-    } else if (t != NULL && t->data != NULL &&
-               t->data_length == sizeof(struct sockaddr_ipx)) {
-        to = (struct sockaddr *) (t->data);
-    }
-
-    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);
-	while (rc < 0) {
-	    rc = sendto(t->sock, buf, size, 0, to, sizeof(struct sockaddr));
-	    if (rc < 0 && errno != EINTR) {
-		break;
-	    }
-	}
-    }
-    return rc;
-}
-
-
-
-static int
-netsnmp_ipx_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;
-}
-
-
-
-/*
- * Open a IPX-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_ipx_transport(struct sockaddr_ipx *addr, int local)
-{
-    netsnmp_transport *t = NULL;
-    int             rc = 0;
-    char           *str = NULL;
-
-    if (addr == NULL || addr->sipx_family != AF_IPX) {
-        return NULL;
-    }
-
-    t = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
-    if (t == NULL) {
-        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);
-
-    memset(t, 0, sizeof(netsnmp_transport));
-
-    t->domain = netsnmpIPXDomain;
-    t->domain_length = netsnmpIPXDomain_len;
-
-    t->sock = socket(AF_IPX, SOCK_DGRAM, AF_IPX);
-    if (t->sock < 0) {
-        netsnmp_transport_free(t);
-        return NULL;
-    }
-
-    if (local) {
-        t->local = (unsigned char*)malloc(12);
-        if (t->local == NULL) {
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        memcpy(&(t->local[00]), (u_char *) & (addr->sipx_network), 4);
-        memcpy(&(t->local[04]), (u_char *) & (addr->sipx_node), 6);
-        memcpy(&(t->local[10]), (u_char *) & (addr->sipx_port), 2);
-        t->local_length = 12;
-
-        /*
-         * This session is inteneded as a server, so we must bind on to the
-         * given address (which may include a particular network and/or node
-         * address, but definitely includes a port number).
-         */
-
-        rc = bind(t->sock, (struct sockaddr *) addr,
-                  sizeof(struct sockaddr));
-        if (rc != 0) {
-            netsnmp_ipx_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        t->data = NULL;
-        t->data_length = 0;
-    } else {
-        t->remote = (unsigned char*)malloc(12);
-        if (t->remote == NULL) {
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        memcpy(&(t->remote[00]), (u_char *) & (addr->sipx_network), 4);
-        memcpy(&(t->remote[04]), (u_char *) & (addr->sipx_node), 6);
-        memcpy(&(t->remote[10]), (u_char *) & (addr->sipx_port), 2);
-        t->remote_length = 12;
-
-        /*
-         * This is a client session.  Save the address in the
-         * transport-specific data pointer for later use by snmp_ipx_send.
-         */
-
-        t->data = malloc(sizeof(struct sockaddr_ipx));
-        if (t->data == NULL) {
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        memcpy(t->data, addr, sizeof(struct sockaddr_ipx));
-        t->data_length = sizeof(struct sockaddr_ipx);
-    }
-
-    /*
-     * Maximum size of an IPX PDU is 576 bytes including a 30-byte header.
-     * Ridiculous!  
-     */
-
-    t->msgMaxSize = 576 - 30;
-    t->f_recv     = netsnmp_ipx_recv;
-    t->f_send     = netsnmp_ipx_send;
-    t->f_close    = netsnmp_ipx_close;
-    t->f_accept   = NULL;
-    t->f_fmtaddr  = netsnmp_ipx_fmtaddr;
-
-    return t;
-}
-
-
-
-/*
- * Attempt to parse a string of the form [%08x]:%12x[/%d] where the parts
- * are the network number, the node address and the port in that order.  
- */
-
-int
-netsnmp_sockaddr_ipx2(struct sockaddr_ipx *addr, const char *peername,
-		      const char *default_target)
-{
-    char           *input = NULL, *def = NULL;
-    const char     *network, *node, *port;
-    char           *tmp;
-    unsigned long   i;
-
-    if (addr == NULL) {
-        return 0;
-    }
-    memset(addr, 0, sizeof(struct sockaddr_ipx));
-
-    DEBUGMSGTL(("netsnmp_sockaddr_ipx",
-		"addr %p, peername \"%s\" default_target \"%s\"\n",
-                addr, peername ? peername : "[NIL]",
-		default_target ? default_target : "[NIL]"));
-
-    addr->sipx_family = AF_IPX;
-    addr->sipx_type = 4;        /*  Specified in RFC 1420.  */
-
-    network = input = strdup(peername ? peername : "");
-    tmp = strchr(network, ':');
-    if (tmp != NULL) {
-        DEBUGMSGTL(("netsnmp_sockaddr_ipx", "Node identified\n"));
-        *tmp++ = '\0';
-	node = tmp;
-        tmp = strchr(tmp, '/');
-    } else {
-        node = NULL;
-        tmp = strchr(network, '/');
-    }
-    if (tmp != NULL) {
-        DEBUGMSGTL(("netsnmp_sockaddr_ipx", "Port identified\n"));
-        *tmp++ = '\0';
-        port = tmp;
-    } else
-        port = NULL;
-
-    DEBUGMSGTL(("netsnmp_sockaddr_ipx", "Address: %s:%s/%s\n",
-                network ? network : "[NIL]", node ? node : "[NIL]",
-                port ? port : "[NIL]"));
-
-    def = strdup(default_target ? default_target : "");
-    if (network == NULL || *network == '\0')
-        network = def;
-    tmp = strchr(def, ':');
-    if (tmp != NULL) {
-        *tmp++ = '\0';
-	if (node == NULL || *node == '\0')
-            node = tmp;
-        tmp = strchr(tmp, '/');
-    } else
-        tmp = strchr(def, '/');
-    if (tmp != NULL) {
-        *tmp++ = '\0';
-        if (port == NULL || *port == '\0')
-            port = tmp;
-    }
-
-    DEBUGMSGTL(("netsnmp_sockaddr_ipx", "Address: %s:%s/%s\n",
-                network ? network : "[NIL]", node ? node : "[NIL]",
-                port ? port : "[NIL]"));
-
-    if (network == NULL || *network == '\0')
-        network = "0";
-
-    if (node == NULL || *node == '\0')
-        node = "000000000000";
-
-    if (port == NULL || *port == '\0')
-#define val(x) __STRING(x)
-        port = val(SNMP_IPX_DEFAULT_PORT);
-#undef val
-
-    DEBUGMSGTL(("netsnmp_sockaddr_ipx", "Address: %s:%s/%s\n",
-                network ? network : "[NIL]", node ? node : "[NIL]",
-                port ? port : "[NIL]"));
-
-    if(sscanf(network, "%8lx%*c", &i) == 1) {
-        DEBUGMSGTL(("netsnmp_sockaddr_ipx", "network parsed okay\n"));
-        addr->sipx_network = htonl(i);
-    } else {
-        DEBUGMSGTL(("netsnmp_sockaddr_ipx",
-                    "failed to parse network part of address\n"));
-        free(def);
-        free(input);
-        return 0;
-    }
-
-    if(sscanf(node, "%2hhx%2hhx%2hhx%2hhx%2hhx%2hhx%*c",
-              &addr->sipx_node[0], &addr->sipx_node[1],
-              &addr->sipx_node[2], &addr->sipx_node[3],
-              &addr->sipx_node[4], &addr->sipx_node[5]) == 6) {
-        DEBUGMSGTL(("netsnmp_sockaddr_ipx", "node parsed okay\n"));
-    } else {
-        DEBUGMSGTL(("netsnmp_sockaddr_ipx",
-                    "failed to parse node part of address\n"));
-        free(def);
-        free(input);
-        return 0;
-    }
-
-    if(sscanf(port, "%lu%*c", &i) == 1) {
-        DEBUGMSGTL(("netsnmp_sockaddr_ipx", "port parsed okay\n"));
-        addr->sipx_port = htons(i);
-    } else {
-        DEBUGMSGTL(("netsnmp_sockaddr_ipx",
-                    "failed to parse port part of address\n"));
-        free(def);
-        free(input);
-        return 0;
-    }
-
-    free(def);
-    free(input);
-    return 1;
-}
-
-
-
-int
-netsnmp_sockaddr_ipx(struct sockaddr_ipx *addr, const char *peername)
-{
-    return netsnmp_sockaddr_ipx2(addr, peername, NULL);
-}
-
-
-
-netsnmp_transport *
-netsnmp_ipx_create_tstring(const char *str, int local,
-			   const char *default_target)
-{
-    struct sockaddr_ipx addr;
-
-    if (netsnmp_sockaddr_ipx2(&addr, str, default_target)) {
-        return netsnmp_ipx_transport(&addr, local);
-    } else {
-        return NULL;
-    }
-}
-
-
-
-netsnmp_transport *
-netsnmp_ipx_create_ostring(const u_char * o, size_t o_len, int local)
-{
-    struct sockaddr_ipx addr;
-
-    if (o_len == 12) {
-        addr.sipx_family = AF_IPX;
-        memcpy((u_char *) & (addr.sipx_network), &(o[00]), 4);
-        memcpy((u_char *) & (addr.sipx_node), &(o[04]), 6);
-        memcpy((u_char *) & (addr.sipx_port), &(o[10]), 2);
-        return netsnmp_ipx_transport(&addr, local);
-    }
-    return NULL;
-}
-
-
-
-void
-netsnmp_ipx_ctor(void)
-{
-    ipxDomain.name = netsnmpIPXDomain;
-    ipxDomain.name_length = netsnmpIPXDomain_len;
-    ipxDomain.prefix = (const char**)calloc(2, sizeof(char *));
-    ipxDomain.prefix[0] = "ipx";
-
-    ipxDomain.f_create_from_tstring     = NULL;
-    ipxDomain.f_create_from_tstring_new = netsnmp_ipx_create_tstring;
-    ipxDomain.f_create_from_ostring     = netsnmp_ipx_create_ostring;
-
-    netsnmp_tdomain_register(&ipxDomain);
-}
diff --git a/snmplib/snmpSTDDomain.c b/snmplib/snmpSTDDomain.c
deleted file mode 100644
index f83eaa5..0000000
--- a/snmplib/snmpSTDDomain.c
+++ /dev/null
@@ -1,285 +0,0 @@
-#include <net-snmp/net-snmp-config.h>
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <signal.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_DMALLOC_H
-#include <dmalloc.h>
-#endif
-
-#include <net-snmp/types.h>
-#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 };
-static netsnmp_tdomain stdDomain;
-
-/*
- * Return a string representing the address in data, or else the "far end"
- * address if data is NULL.  
- */
-
-static char *
-netsnmp_std_fmtaddr(netsnmp_transport *t, void *data, int len)
-{
-    char *buf;
-    DEBUGMSGTL(("domain:std","formatting addr.  data=%x\n",t->data));
-    if (t->data) {
-        netsnmp_std_data *data = (netsnmp_std_data*)t->data;
-        buf = (char*)malloc(SNMP_MAXBUF_MEDIUM);
-        if (!buf)
-            return strdup("STDInOut");
-        snprintf(buf, SNMP_MAXBUF_MEDIUM, "STD:%s", data->prog);
-        DEBUGMSGTL(("domain:std","  formatted:=%s\n",buf));
-        return buf;
-    }
-    return strdup("STDInOut");
-}
-
-
-
-/*
- * 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_std_recv(netsnmp_transport *t, void *buf, int size,
-		 void **opaque, int *olength)
-{
-    int rc = -1;
-
-    DEBUGMSGTL(("domain:std","recv on sock %d.  data=%x\n",t->sock, t->data));
-    while (rc < 0) {
-        rc = read(t->sock, buf, size);
-        DEBUGMSGTL(("domain:std","  bytes: %d.\n", rc));
-        if (rc < 0 && errno != EINTR) {
-            DEBUGMSGTL(("netsnmp_std", " read on fd %d failed: %d (\"%s\")\n",
-                        t->sock, errno, strerror(errno)));
-            break;
-        }
-        if (rc == 0) {
-            /* 0 input is probably bad since we selected on it */
-            return -1;
-        }
-        DEBUGMSGTL(("netsnmp_std", "read on stdin got %d bytes\n", rc));
-    }
-
-    return rc;
-}
-
-
-
-static int
-netsnmp_std_send(netsnmp_transport *t, void *buf, int size,
-		 void **opaque, int *olength)
-{
-    int rc = -1;
-
-    DEBUGMSGTL(("domain:std","send on sock.  data=%x\n", t->data));
-    while (rc < 0) {
-        if (t->data) {
-            netsnmp_std_data *data = (netsnmp_std_data*)t->data;
-            rc = write(data->outfd, buf, size);
-        } else {
-            /* straight to stdout */
-            rc = write(1, buf, size);
-        }
-        if (rc < 0 && errno != EINTR) {
-            break;
-        }
-    }
-    return rc;
-}
-
-static int
-netsnmp_std_close(netsnmp_transport *t)
-{
-    DEBUGMSGTL(("domain:std","close.  data=%x\n", t->data));
-    if (t->data) {
-        netsnmp_std_data *data = (netsnmp_std_data*)t->data;
-        close(data->outfd);
-        close(t->sock);
-
-        /* kill the child too */
-        DEBUGMSGTL(("domain:std"," killing %d\n", data->childpid));
-        kill(data->childpid, SIGTERM);
-        sleep(1);
-        kill(data->childpid, SIGKILL);
-        /* XXX: set an alarm to kill harder the child */
-    } else {
-        /* close stdout/in */
-        close(1);
-        close(0);
-    }
-    return 0;
-}
-
-
-
-static int
-netsnmp_std_accept(netsnmp_transport *t)
-{
-    DEBUGMSGTL(("domain:std"," accept data=%x\n", t->data));
-    /* nothing to do here */
-    return 0;
-}
-
-/*
- * Open a STDIN/STDOUT -based transport for SNMP.
- */
-
-netsnmp_transport *
-netsnmp_std_transport(const char *instring, size_t instring_len,
-		      const char *default_target)
-{
-    netsnmp_transport *t;
-
-    t = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
-    if (t == NULL) {
-        return NULL;
-    }
-    memset(t, 0, sizeof(netsnmp_transport));
-
-    t->domain = netsnmp_snmpSTDDomain;
-    t->domain_length =
-        sizeof(netsnmp_snmpSTDDomain) / sizeof(netsnmp_snmpSTDDomain[0]);
-
-    t->sock = 0;
-    t->flags = NETSNMP_TRANSPORT_FLAG_STREAM | NETSNMP_TRANSPORT_FLAG_TUNNELED;
-
-    /*
-     * Message size is not limited by this transport (hence msgMaxSize
-     * is equal to the maximum legal size of an SNMP message).  
-     */
-
-    t->msgMaxSize = 0x7fffffff;
-    t->f_recv     = netsnmp_std_recv;
-    t->f_send     = netsnmp_std_send;
-    t->f_close    = netsnmp_std_close;
-    t->f_accept   = netsnmp_std_accept;
-    t->f_fmtaddr  = netsnmp_std_fmtaddr;
-
-    /*
-     * if instring is not null length, it specifies a path to a prog
-     * XXX: plus args
-     */
-    if (instring_len == 0 && default_target != NULL) {
-	instring = default_target;
-	instring_len = strlen(default_target);
-    }
-
-    if (instring_len != 0) {
-        int infd[2], outfd[2];  /* sockets to and from the client */
-        int childpid;
-
-        if (pipe(infd) || pipe(outfd)) {
-            snmp_log(LOG_ERR,
-                     "Failed to create needed pipes for a STD transport");
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-
-        childpid = fork();
-        /* parentpid => childpid */
-        /* infd[1]   => infd[0] */
-        /* outfd[0]  <= outfd[1] */
-
-        if (childpid) {
-            netsnmp_std_data *data;
-            
-            /* we're in the parent */
-            close(infd[0]);
-            close(outfd[1]);
-
-            data = SNMP_MALLOC_TYPEDEF(netsnmp_std_data);
-            if (!data) {
-                snmp_log(LOG_ERR, "snmpSTDDomain: malloc failed");
-                netsnmp_transport_free(t);
-                return NULL;
-            }
-            t->data = data;
-            t->data_length = sizeof(netsnmp_std_data);
-            t->sock = outfd[0];
-            data->prog = strdup(instring);
-            data->outfd = infd[1];
-            data->childpid = childpid;
-            DEBUGMSGTL(("domain:std","parent.  data=%x\n", t->data));
-        } else {
-            /* we're in the child */
-
-            /* close stdin */
-            close(0);
-            /* copy pipe output to stdout */
-            dup(infd[0]);
-
-            /* close stdout */
-            close(1);
-            /* copy pipe output to stdin */
-            dup(outfd[1]);
-            
-            /* close all the pipes themselves */
-            close(infd[0]);
-            close(infd[1]);
-            close(outfd[0]);
-            close(outfd[1]);
-
-            /* call exec */
-            system(instring);
-            /* XXX: TODO: use exec form instead; needs args */
-            /* execv(instring, NULL); */
-            exit(0);
-
-            /* ack...  we should never ever get here */
-            snmp_log(LOG_ERR, "STD transport returned after execv()\n");
-        }
-    }            
-
-    return t;
-}
-
-netsnmp_transport *
-netsnmp_std_create_tstring(const char *instring, int local,
-			   const char *default_target)
-{
-    return netsnmp_std_transport(instring, strlen(instring), default_target);
-}
-
-netsnmp_transport *
-netsnmp_std_create_ostring(const u_char * o, size_t o_len, int local)
-{
-    return netsnmp_std_transport((const char*)o, o_len, NULL);
-}
-
-void
-netsnmp_std_ctor(void)
-{
-    stdDomain.name = netsnmp_snmpSTDDomain;
-    stdDomain.name_length = sizeof(netsnmp_snmpSTDDomain) / sizeof(oid);
-    stdDomain.prefix = (const char **)calloc(2, sizeof(char *));
-    stdDomain.prefix[0] = "std";
-
-    stdDomain.f_create_from_tstring     = NULL;
-    stdDomain.f_create_from_tstring_new = netsnmp_std_create_tstring;
-    stdDomain.f_create_from_ostring     = netsnmp_std_create_ostring;
-
-    netsnmp_tdomain_register(&stdDomain);
-}
diff --git a/snmplib/snmpTCPDomain.c b/snmplib/snmpTCPDomain.c
deleted file mode 100644
index 8cb6f94..0000000
--- a/snmplib/snmpTCPDomain.c
+++ /dev/null
@@ -1,473 +0,0 @@
-#include <net-snmp/net-snmp-config.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_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/library/snmp_transport.h>
-#include <net-snmp/library/snmpUDPDomain.h>
-#include <net-snmp/library/snmpTCPDomain.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;
-
-oid netsnmp_snmpTCPDomain[] = { TRANSPORT_DOMAIN_TCP_IP };
-static netsnmp_tdomain tcpDomain;
-
-/*
- * Not static since it is needed here as well as in snmpUDPDomain, but not
- * public either
- */
-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.  
- */
-
-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);
-    }
-}
-
-
-
-/*
- * 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, 0);
-	    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));
-
-    if (addr_pair == NULL) {
-        /*
-         * Indicate that the acceptance of this socket failed.  
-         */
-        DEBUGMSGTL(("netsnmp_tcp", "accept: malloc failed\n"));
-        return -1;
-    }
-    farend = (struct sockaddr *) &(addr_pair->remote_addr);
-
-    if (t != NULL && t->sock >= 0) {
-        newsock = accept(t->sock, farend, &farendlen);
-
-        if (newsock < 0) {
-            DEBUGMSGTL(("netsnmp_tcp", "accept failed rc %d errno %d \"%s\"\n",
-			newsock, errno, strerror(errno)));
-            free(farend);
-            return newsock;
-        }
-
-        if (t->data != NULL) {
-            free(t->data);
-        }
-
-        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);
-
-        /*
-         * 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
-
-        /*
-         * Allow user to override the send and receive buffers. Default is
-         * to use os default.  Don't worry too much about errors --
-         * just plough on regardless.  
-         */
-        netsnmp_sock_buffer_set(newsock, SO_SNDBUF, 1, 0);
-        netsnmp_sock_buffer_set(newsock, SO_RCVBUF, 1, 0);
-
-        return newsock;
-    } else {
-        free(farend);
-        return -1;
-    }
-}
-
-
-
-/*
- * Open a TCP-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_tcp_transport(struct sockaddr_in *addr, int local)
-{
-    netsnmp_transport *t = NULL;
-    netsnmp_udp_addr_pair *addr_pair = NULL;
-    int rc = 0;
-
-
-    if (addr == NULL || addr->sin_family != AF_INET) {
-        return NULL;
-    }
-
-    t = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
-    if (t == NULL) {
-        return NULL;
-    }
-    memset(t, 0, sizeof(netsnmp_transport));
-
-    addr_pair = (netsnmp_udp_addr_pair *)malloc(sizeof(netsnmp_udp_addr_pair));
-    if (addr_pair == NULL) {
-        netsnmp_transport_free(t);
-        return NULL;
-    }
-    t->data = addr_pair;
-    t->data_length = sizeof(netsnmp_udp_addr_pair);
-    memcpy(&(addr_pair->remote_addr), addr, sizeof(struct sockaddr_in));
-
-    t->domain = netsnmp_snmpTCPDomain;
-    t->domain_length =
-        sizeof(netsnmp_snmpTCPDomain) / sizeof(netsnmp_snmpTCPDomain[0]);
-
-    t->sock = socket(PF_INET, SOCK_STREAM, 0);
-    if (t->sock < 0) {
-        netsnmp_transport_free(t);
-        return NULL;
-    }
-
-    t->flags = NETSNMP_TRANSPORT_FLAG_STREAM;
-
-    if (local) {
-#ifdef WIN32
-        u_long ioctlsocket_opt = 1;
-#else
-        int sockflags = 0;
-#endif
-        int opt = 1;
-
-        /*
-         * This session is inteneded as a server, so we must bind to the given 
-         * IP address (which may include an interface address, or could be
-         * INADDR_ANY, but will always include a port number.  
-         */
-
-        t->flags |= NETSNMP_TRANSPORT_FLAG_LISTEN;
-        t->local = (u_char *)malloc(6);
-        if (t->local == NULL) {
-            netsnmp_tcp_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_length = 6;
-
-        /*
-         * We should set SO_REUSEADDR too.  
-         */
-
-        setsockopt(t->sock, SOL_SOCKET, SO_REUSEADDR, (void *)&opt,
-		   sizeof(opt));
-
-        rc = bind(t->sock, (struct sockaddr *)addr, sizeof(struct sockaddr));
-        if (rc != 0) {
-            netsnmp_tcp_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
-         * 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
-
-        /*
-         * Now sit here and wait for connections to arrive.  
-         */
-
-        rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
-        if (rc != 0) {
-            netsnmp_tcp_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        
-        /*
-         * no buffer size on listen socket - doesn't make sense
-         */
-
-    } else {
-      t->remote = (u_char *)malloc(6);
-        if (t->remote == NULL) {
-            netsnmp_tcp_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_length = 6;
-
-        /*
-         * This is a client-type session, so attempt to connect to the far
-         * end.  We don't go non-blocking here because it's not obvious what
-         * you'd then do if you tried to do snmp_sends before the connection
-         * had completed.  So this can block.
-         */
-
-        rc = connect(t->sock, (struct sockaddr *)addr,
-		     sizeof(struct sockaddr));
-
-        if (rc < 0) {
-            netsnmp_tcp_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-
-        /*
-         * Allow user to override the send and receive buffers. Default is
-         * to use os default.  Don't worry too much about errors --
-         * just plough on regardless.  
-         */
-        netsnmp_sock_buffer_set(t->sock, SO_SNDBUF, local, 0);
-        netsnmp_sock_buffer_set(t->sock, SO_RCVBUF, local, 0);
-    }
-
-    /*
-     * Message size is not limited by this transport (hence msgMaxSize
-     * is equal to the maximum legal size of an SNMP message).  
-     */
-
-    t->msgMaxSize = 0x7fffffff;
-    t->f_recv     = netsnmp_tcp_recv;
-    t->f_send     = netsnmp_tcp_send;
-    t->f_close    = netsnmp_tcp_close;
-    t->f_accept   = netsnmp_tcp_accept;
-    t->f_fmtaddr  = netsnmp_tcp_fmtaddr;
-
-    return t;
-}
-
-
-
-netsnmp_transport *
-netsnmp_tcp_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_tcp_transport(&addr, local);
-    } else {
-        return NULL;
-    }
-}
-
-
-
-netsnmp_transport *
-netsnmp_tcp_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_tcp_transport(&addr, local);
-    }
-    return NULL;
-}
-
-
-
-void
-netsnmp_tcp_ctor(void)
-{
-    tcpDomain.name = netsnmp_snmpTCPDomain;
-    tcpDomain.name_length = sizeof(netsnmp_snmpTCPDomain) / sizeof(oid);
-    tcpDomain.prefix = (const char **)calloc(2, sizeof(char *));
-    tcpDomain.prefix[0] = "tcp";
-
-    tcpDomain.f_create_from_tstring     = NULL;
-    tcpDomain.f_create_from_tstring_new = netsnmp_tcp_create_tstring;
-    tcpDomain.f_create_from_ostring     = netsnmp_tcp_create_ostring;
-
-    netsnmp_tdomain_register(&tcpDomain);
-}
diff --git a/snmplib/snmpTCPIPv6Domain.c b/snmplib/snmpTCPIPv6Domain.c
deleted file mode 100644
index de7e83f..0000000
--- a/snmplib/snmpTCPIPv6Domain.c
+++ /dev/null
@@ -1,493 +0,0 @@
-#include <net-snmp/net-snmp-config.h>
-
-#ifdef NETSNMP_TRANSPORT_TCPIPV6_DOMAIN
-
-#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 defined(HAVE_WINSOCK_H)
-    /*
-     * Windows IPv6 support is part of WinSock2 only
-     */
-#include <winsock2.h>
-#include <ws2tcpip.h>
-
-extern const char *inet_ntop(int, const void*, char*, size_t);
-
-#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_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/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>
-
-oid netsnmp_TCPIPv6Domain[] = { TRANSPORT_DOMAIN_TCP_IPV6 };
-static netsnmp_tdomain tcp6Domain;
-
-/*
- * Return a string representing the address in data, or else the "far end"
- * address if data is NULL.  
- */
-
-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, 0);
-	    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;
-}
-
-static int
-netsnmp_tcp6_accept(netsnmp_transport *t)
-{
-    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));
-
-    if (farend == NULL) {
-        /*
-         * Indicate that the acceptance of this socket failed.  
-         */
-        DEBUGMSGTL(("netsnmp_tcp6", "accept: malloc failed\n"));
-        return -1;
-    }
-
-    if (t != NULL && t->sock >= 0) {
-        newsock = accept(t->sock, (struct sockaddr *) farend, &farendlen);
-
-        if (newsock < 0) {
-            DEBUGMSGTL(("netsnmp_tcp6","accept failed rc %d errno %d \"%s\"\n",
-			newsock, errno, strerror(errno)));
-            free(farend);
-            return newsock;
-        }
-
-        if (t->data != NULL) {
-            free(t->data);
-        }
-
-        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);
-
-        /*
-         * 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
-
-        /*
-         * Allow user to override the send and receive buffers. Default is
-         * to use os default.  Don't worry too much about errors --
-         * just plough on regardless.  
-         */
-        netsnmp_sock_buffer_set(newsock, SO_SNDBUF, 1, 0);
-        netsnmp_sock_buffer_set(newsock, SO_RCVBUF, 1, 0);
-
-        return newsock;
-    } else {
-        free(farend);
-        return -1;
-    }
-}
-
-
-
-/*
- * Open a TCP/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_tcp6_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;
-    }
-    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);
-
-    memset(t, 0, sizeof(netsnmp_transport));
-
-    t->data = malloc(sizeof(struct sockaddr_in6));
-    if (t->data == NULL) {
-        netsnmp_transport_free(t);
-        return NULL;
-    }
-    t->data_length = sizeof(struct sockaddr_in6);
-    memcpy(t->data, addr, sizeof(struct sockaddr_in6));
-
-    t->domain = netsnmp_TCPIPv6Domain;
-    t->domain_length = sizeof(netsnmp_TCPIPv6Domain) / sizeof(oid);
-
-    t->sock = socket(PF_INET6, SOCK_STREAM, 0);
-    if (t->sock < 0) {
-        netsnmp_transport_free(t);
-        return NULL;
-    }
-
-    t->flags = NETSNMP_TRANSPORT_FLAG_STREAM;
-
-    if (local) {
-#ifdef WIN32
-        u_long ioctlsocket_opt;
-#else
-        int sockflags = 0;
-#endif
-        int opt = 1;
-
-        /*
-         * 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
-
-        t->flags |= NETSNMP_TRANSPORT_FLAG_LISTEN;
-        t->local = (unsigned char*)malloc(18);
-        if (t->local == NULL) {
-            netsnmp_tcp6_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;
-
-        /*
-         * We should set SO_REUSEADDR too.  
-         */
-
-        setsockopt(t->sock, SOL_SOCKET, SO_REUSEADDR, (void *)&opt, sizeof(opt));
-
-        rc = bind(t->sock, (struct sockaddr *) addr,
-		  sizeof(struct sockaddr_in6));
-        if (rc != 0) {
-            netsnmp_tcp6_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
-         * 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
-
-        /*
-         * Now sit here and wait for connections to arrive.  
-         */
-
-        rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
-        if (rc != 0) {
-            netsnmp_tcp6_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        
-        /*
-         * no buffer size on listen socket - doesn't make sense
-         */
-
-    } else {
-        t->remote = (unsigned char*)malloc(18);
-        if (t->remote == NULL) {
-            netsnmp_tcp6_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;
-
-        /*
-         * This is a client-type session, so attempt to connect to the far
-         * end.  We don't go non-blocking here because it's not obvious what
-         * you'd then do if you tried to do snmp_sends before the connection
-         * had completed.  So this can block.
-         */
-
-        rc = connect(t->sock, (struct sockaddr *) addr,
-                     sizeof(struct sockaddr_in6));
-
-        DEBUGMSGTL(("netsnmp_tcp6", "connect returns %d\n", rc));
-
-        if (rc < 0) {
-            netsnmp_tcp6_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-
-        /*
-         * Allow user to override the send and receive buffers. Default is
-         * to use os default.  Don't worry too much about errors --
-         * just plough on regardless.  
-         */
-        netsnmp_sock_buffer_set(t->sock, SO_SNDBUF, local, 0);
-        netsnmp_sock_buffer_set(t->sock, SO_RCVBUF, local, 0);
-    }
-
-    /*
-     * Message size is not limited by this transport (hence msgMaxSize
-     * is equal to the maximum legal size of an SNMP message).  
-     */
-
-    t->msgMaxSize = 0x7fffffff;
-    t->f_recv     = netsnmp_tcp6_recv;
-    t->f_send     = netsnmp_tcp6_send;
-    t->f_close    = netsnmp_tcp6_close;
-    t->f_accept   = netsnmp_tcp6_accept;
-    t->f_fmtaddr  = netsnmp_tcp6_fmtaddr;
-
-    return t;
-}
-
-/*
- * Not extern but still defined in snmpUDPIPv6Domain.c
- */
-extern int
-netsnmp_sockaddr_in6_2(struct sockaddr_in6*, const char*, const char*);
-
-netsnmp_transport *
-netsnmp_tcp6_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_tcp6_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_tcp6_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_tcp6_transport(&addr, local);
-    }
-    return NULL;
-}
-
-
-void
-netsnmp_tcp6_ctor(void)
-{
-    tcp6Domain.name = netsnmp_TCPIPv6Domain;
-    tcp6Domain.name_length = sizeof(netsnmp_TCPIPv6Domain) / sizeof(oid);
-    tcp6Domain.f_create_from_tstring     = NULL;
-    tcp6Domain.f_create_from_tstring_new = netsnmp_tcp6_create_tstring;
-    tcp6Domain.f_create_from_ostring     = netsnmp_tcp6_create_ostring;
-    tcp6Domain.prefix = (const char**)calloc(4, sizeof(char *));
-    tcp6Domain.prefix[0] = "tcp6";
-    tcp6Domain.prefix[1] = "tcpv6";
-    tcp6Domain.prefix[2] = "tcpipv6";
-
-    netsnmp_tdomain_register(&tcp6Domain);
-}
-
-#endif /* NETSNMP_TRANSPORT_TCPIPV6_DOMAIN */
-
diff --git a/snmplib/snmpUDPDomain.c b/snmplib/snmpUDPDomain.c
deleted file mode 100644
index 5e062cc..0000000
--- a/snmplib/snmpUDPDomain.c
+++ /dev/null
@@ -1,1334 +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.  
- */
-
-static char *
-netsnmp_udp_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("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 {
-            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)
-
-# define netsnmp_dstaddr(x) (&(((struct in_pktinfo *)(CMSG_DATA(x)))->ipi_addr))
-
-static 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];
-    char cmsg[CMSG_SPACE(sizeof(struct in_pktinfo))];
-    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)));
-    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)));
-        }
-    }
-    return r;
-}
-
-static 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);
-}
-#endif /* linux && IP_PKTINFO */
-
-/*
- * 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)
-            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;
-	    }
-	}
-
-        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)
-            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 */
-	    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;
-    size_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;
-    size_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"));
-        }
-#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)
-{
-#if HAVE_GETADDRINFO
-    struct addrinfo *addrs = NULL;
-    struct addrinfo hint;
-    int             err;
-#elif HAVE_GETIPNODEBYNAME
-    struct hostent *hp = NULL;
-    int             err;
-#elif HAVE_GETHOSTBYNAME
-    struct hostent *hp = NULL;
-#endif
-
-    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)"));
-                    host = port;
-                    port = NULL;
-                } else {
-                    DEBUGMSGTL(("netsnmp_sockaddr_in",
-                                "servname not numeric"));
-                    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 HAVE_GETADDRINFO
-            memset(&hint, 0, sizeof hint);
-            hint.ai_flags = 0;
-            hint.ai_family = PF_INET;
-            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 %s\n", peername,
-                         gai_strerror(err));
-#else
-                snmp_log(LOG_ERR, "getaddrinfo: %s (error %d)\n", peername,
-                         err);
-#endif
-                free(peername);
-                return 0;
-            }
-            if (addrs != NULL) {
-                DEBUGMSGTL(("netsnmp_sockaddr_in",
-                            "hostname (resolved okay)\n"));
-                memcpy(&addr->sin_addr,
-                       &((struct sockaddr_in *) addrs->ai_addr)->sin_addr,
-                       sizeof(struct in_addr));
-                freeaddrinfo(addrs);
-            }
-            else {
-                DEBUGMSGTL(("netsnmp_sockaddr_in",
-                            "Failed to resolve IPv4 hostname\n"));
-            }
-#elif HAVE_GETHOSTBYNAME
-            hp = gethostbyname(host);
-            if (hp == NULL) {
-                DEBUGMSGTL(("netsnmp_sockaddr_in",
-                            "hostname (couldn't resolve)\n"));
-                free(peername);
-                return 0;
-            } else if (hp->h_addrtype != AF_INET) {
-                DEBUGMSGTL(("netsnmp_sockaddr_in",
-                            "hostname (not AF_INET!)\n"));
-                free(peername);
-                return 0;
-            } else {
-                DEBUGMSGTL(("netsnmp_sockaddr_in",
-                            "hostname (resolved okay)\n"));
-                memcpy(&addr->sin_addr, hp->h_addr, hp->h_length);
-            }
-#elif HAVE_GETIPNODEBYNAME
-            hp = getipnodebyname(peername, AF_INET, 0, &err);
-            if (hp == NULL) {
-                DEBUGMSGTL(("netsnmp_sockaddr_in",
-                            "hostname (couldn't resolve = %d)\n", err));
-                free(peername);
-                return 0;
-            }
-            DEBUGMSGTL(("netsnmp_sockaddr_in",
-                        "hostname (resolved okay)\n"));
-            memcpy(&(addr->sin_addr), hp->h_addr, hp->h_length);
-#else /* HAVE_GETIPNODEBYNAME */
-            /*
-             * There is no name resolving function available.
-             */
-            DEBUGMSGTL(("netsnmp_sockaddr_in",
-                        "no getaddrinfo()/getipnodebyname()/gethostbyname()\n"));
-            free(peername);
-            return 0;
-#endif /* HAVE_GETHOSTBYNAME */
-        }
-	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.  
-             */
-#ifdef  HAVE_GETHOSTBYNAME
-            struct hostent *hp = gethostbyname(source);
-            if (hp == NULL) {
-                config_perror("bad source address");
-                return;
-            } else {
-                if (hp->h_addrtype != AF_INET) {
-                    config_perror("no IP address for source hostname");
-                    return;
-                }
-                network = *((in_addr_t *) hp->h_addr);
-            }
-#else                           /*HAVE_GETHOSTBYNAME */
-            /*
-             * Oh dear.  
-             */
-            config_perror("cannot resolve source hostname");
-            return;
-#endif                          /*HAVE_GETHOSTBYNAME */
-        }
-    }
-
-    /*
-     * 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.  
-     */
-
-    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%08x/0x%08x>",
-		    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 f0d7635..0000000
--- a/snmplib/snmpUDPIPv6Domain.c
+++ /dev/null
@@ -1,1391 +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>
-#undef  HAVE_IF_NAMETOINDEX
-
-extern int         inet_pton(int, const char*, void*);
-extern const char *inet_ntop(int, const void*, char*, size_t);
-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 STRUCT_SOCKADDR_STORAGE_HAS_SS_FAMILY
-#define SS_FAMILY ss_family
-#elif STRUCT_SOCKADDR_STORAGE_HAS___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++);
-        if (!*cp && atoi(peername) != 0) {
-            /*
-             * Okay, it looks like JUST a port number.  
-             */
-            DEBUGMSGTL(("netsnmp_sockaddr_in6", "totally numeric: %d\n",
-                        atoi(peername)));
-            addr->sin6_port = htons(atoi(peername));
-            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) == ':') {
-                    if (atoi(cp + 2) != 0 &&
-                        inet_pton(AF_INET6, peername + 1,
-                                  (void *) &(addr->sin6_addr))) {
-                        DEBUGMSGTL(("netsnmp_sockaddr_in6",
-                                    "IPv6 address with port suffix :%d\n",
-                                    atoi(cp + 2)));
-                        addr->sin6_port = htons(atoi(cp + 2));
-#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
-	    }
-            if (atoi(cp + 1) != 0 &&
-                inet_pton(AF_INET6, peername,
-                          (void *) &(addr->sin6_addr))) {
-                DEBUGMSGTL(("netsnmp_sockaddr_in6",
-                            "IPv6 address with port suffix :%d\n",
-                            atoi(cp + 1)));
-                addr->sin6_port = htons(atoi(cp + 1));
-#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';
-            if (atoi(cp + 1) != 0) {
-                DEBUGMSGTL(("netsnmp_sockaddr_in6",
-                            "hostname(?) with port suffix :%d\n",
-                            atoi(cp + 1)));
-                addr->sin6_port = htons(atoi(cp + 1));
-            } 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) {
-        DEBUGMSGTL(("netsnmp_udp6_getSecName",
-                    "compare <\"%s\", 0x%032x/0x%032x>", c->community,
-                    c->network, c->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/snmpUnixDomain.c b/snmplib/snmpUnixDomain.c
deleted file mode 100644
index 036e95a..0000000
--- a/snmplib/snmpUnixDomain.c
+++ /dev/null
@@ -1,661 +0,0 @@
-#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_SYS_UN_H
-#include <sys/un.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/snmpUnixDomain.h>
-#include <net-snmp/library/system.h>
-
-
-#ifndef NETSNMP_STREAM_QUEUE_LEN
-#define NETSNMP_STREAM_QUEUE_LEN  5
-#endif
-
-#ifndef SUN_LEN
-/*
- * Evaluate to actual length of the `sockaddr_un' structure.
- */
-#define SUN_LEN(ptr) ((size_t) (((struct sockaddr_un *) 0)->sun_path)         \
-                      + strlen ((ptr)->sun_path))
-#endif
-
-oid netsnmp_UnixDomain[] = { TRANSPORT_DOMAIN_LOCAL };
-static netsnmp_tdomain unixDomain;
-
-
-/*
- * This is the structure we use to hold transport-specific data.
- */
-
-typedef struct _sockaddr_un_pair {
-    int             local;
-    struct sockaddr_un server;
-    struct sockaddr_un client;
-} sockaddr_un_pair;
-
-
-/*
- * Return a string representing the address in data, or else the "far end"
- * address if data is NULL.
- */
-
-static char *
-netsnmp_unix_fmtaddr(netsnmp_transport *t, void *data, int len)
-{
-    struct sockaddr_un *to = NULL;
-
-    if (data != NULL) {
-        to = (struct sockaddr_un *) data;
-    } else if (t != NULL && t->data != NULL) {
-        to = &(((sockaddr_un_pair *) t->data)->server);
-        len = SUN_LEN(to);
-    }
-    if (to == NULL) {
-        /*
-         * "Local IPC" is the Posix.1g term for Unix domain protocols,
-         * according to W. R. Stevens, ``Unix Network Programming Volume I
-         * Second Edition'', p. 374.
-         */
-        return strdup("Local IPC: unknown");
-    } else if (to->sun_path[0] == 0) {
-        /*
-         * This is an abstract name.  We could render it as hex or something
-         * but let's not worry about that for now.
-         */
-        return strdup("Local IPC: abstract");
-    } else {
-        char           *tmp = (char *) malloc(16 + len);
-        if (tmp != NULL) {
-            sprintf(tmp, "Local IPC: %s", to->sun_path);
-        }
-        return 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_unix_recv(netsnmp_transport *t, void *buf, int size,
-                  void **opaque, int *olength)
-{
-    int rc = -1;
-    socklen_t       tolen = sizeof(struct sockaddr_un);
-    struct sockaddr *to;
-
-
-    if (t != NULL && t->sock >= 0) {
-        to = (struct sockaddr *) malloc(sizeof(struct sockaddr_un));
-        if (to == NULL) {
-            *opaque = NULL;
-            *olength = 0;
-            return -1;
-        } else {
-            memset(to, 0, tolen);
-        }
-        if(getsockname(t->sock, to, &tolen) != 0){
-            free(to);
-            *opaque = NULL;
-            *olength = 0;
-            return -1;
-        };
-        while (rc < 0) {
-#ifdef MSG_DONTWAIT
-            rc = recvfrom(t->sock, buf, size, MSG_DONTWAIT, NULL, NULL);
-#else
-            rc = recvfrom(t->sock, buf, size, 0, NULL, NULL);
-#endif
-            if (rc < 0 && errno != EINTR) {
-                DEBUGMSGTL(("netsnmp_unix", "recv fd %d err %d (\"%s\")\n",
-                            t->sock, errno, strerror(errno)));
-                return rc;
-            }
-            *opaque = (void*)to;
-            *olength = sizeof(struct sockaddr_un);
-        }
-        DEBUGMSGTL(("netsnmp_unix", "recv fd %d got %d bytes\n", t->sock, rc));
-    }
-    return rc;
-}
-
-
-
-static int
-netsnmp_unix_send(netsnmp_transport *t, void *buf, int size,
-                  void **opaque, int *olength)
-{
-    int rc = -1;
-
-    if (t != NULL && t->sock >= 0) {
-        DEBUGMSGTL(("netsnmp_unix", "send %d bytes to %p on fd %d\n",
-                    size, buf, t->sock));
-        while (rc < 0) {
-            rc = sendto(t->sock, buf, size, 0, NULL, 0);
-            if (rc < 0 && errno != EINTR) {
-                break;
-            }
-        }
-    }
-    return rc;
-}
-
-
-
-static int
-netsnmp_unix_close(netsnmp_transport *t)
-{
-    int rc = 0;
-    sockaddr_un_pair *sup = (sockaddr_un_pair *) t->data;
-
-    if (t->sock >= 0) {
-#ifndef HAVE_CLOSESOCKET
-        rc = close(t->sock);
-#else
-        rc = closesocket(t->sock);
-#endif
-        t->sock = -1;
-        if (sup != NULL) {
-            if (sup->local) {
-                if (sup->server.sun_path[0] != 0) {
-                  DEBUGMSGTL(("netsnmp_unix", "close: server unlink(\"%s\")\n",
-                              sup->server.sun_path));
-                  unlink(sup->server.sun_path);
-                }
-            } else {
-                if (sup->client.sun_path[0] != 0) {
-                  DEBUGMSGTL(("netsnmp_unix", "close: client unlink(\"%s\")\n",
-                              sup->client.sun_path));
-                  unlink(sup->client.sun_path);
-                }
-            }
-        }
-        return rc;
-    } else {
-        return -1;
-    }
-}
-
-
-
-static int
-netsnmp_unix_accept(netsnmp_transport *t)
-{
-    struct sockaddr *farend = NULL;
-    int             newsock = -1;
-    socklen_t       farendlen = sizeof(struct sockaddr_un);
-
-    farend = (struct sockaddr *) malloc(farendlen);
-
-    if (farend == NULL) {
-        /*
-         * Indicate that the acceptance of this socket failed.
-         */
-        DEBUGMSGTL(("netsnmp_unix", "accept: malloc failed\n"));
-        return -1;
-    }
-    memset(farend, 0, farendlen);
-
-    if (t != NULL && t->sock >= 0) {
-        newsock = accept(t->sock, farend, &farendlen);
-
-        if (newsock < 0) {
-            DEBUGMSGTL(("netsnmp_unix","accept failed rc %d errno %d \"%s\"\n",
-                        newsock, errno, strerror(errno)));
-            free(farend);
-            return newsock;
-        }
-
-        if (t->data != NULL) {
-            free(t->data);
-        }
-
-        DEBUGMSGTL(("netsnmp_unix", "accept succeeded (farend %p len %d)\n",
-                    farend, (int) farendlen));
-        t->data = farend;
-        t->data_length = sizeof(struct sockaddr_un);
-       netsnmp_sock_buffer_set(newsock, SO_SNDBUF, 1, 0);
-       netsnmp_sock_buffer_set(newsock, SO_RCVBUF, 1, 0);
-        return newsock;
-    } else {
-        free(farend);
-        return -1;
-    }
-}
-
-
-
-/*
- * Open a Unix-domain 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 (and we make up a temporary name for
- * the local end of the connection).
- */
-
-netsnmp_transport *
-netsnmp_unix_transport(struct sockaddr_un *addr, int local)
-{
-    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;
-    }
-
-    t = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
-    if (t == NULL) {
-        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);
-
-    memset(t, 0, sizeof(netsnmp_transport));
-
-    t->domain = netsnmp_UnixDomain;
-    t->domain_length =
-        sizeof(netsnmp_UnixDomain) / sizeof(netsnmp_UnixDomain[0]);
-
-    t->data = malloc(sizeof(sockaddr_un_pair));
-    if (t->data == NULL) {
-        netsnmp_transport_free(t);
-        return NULL;
-    }
-    memset(t->data, 0, sizeof(sockaddr_un_pair));
-    t->data_length = sizeof(sockaddr_un_pair);
-    sup = (sockaddr_un_pair *) t->data;
-
-    t->sock = socket(PF_UNIX, SOCK_STREAM, 0);
-    if (t->sock < 0) {
-        netsnmp_transport_free(t);
-        return NULL;
-    }
-
-    t->flags = NETSNMP_TRANSPORT_FLAG_STREAM;
-
-    if (local) {
-      t->local = (u_char *)malloc(strlen(addr->sun_path));
-        if (t->local == NULL) {
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        memcpy(t->local, addr->sun_path, strlen(addr->sun_path));
-        t->local_length = strlen(addr->sun_path);
-
-        /*
-         * This session is inteneded as a server, so we must bind to the given
-         * path (unlinking it first, to avoid errors).
-         */
-
-        t->flags |= NETSNMP_TRANSPORT_FLAG_LISTEN;
-
-        unlink(addr->sun_path);
-        rc = bind(t->sock, (struct sockaddr *) addr, SUN_LEN(addr));
-        if (rc != 0) {
-            DEBUGMSGTL(("netsnmp_unix_transport",
-                        "couldn't bind \"%s\", errno %d (%s)\n",
-                        addr->sun_path, errno, strerror(errno)));
-            netsnmp_unix_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-
-        /*
-         * Save the address in the transport-specific data pointer for later
-         * use by netsnmp_unix_close.
-         */
-
-        sup->server.sun_family = AF_UNIX;
-        strcpy(sup->server.sun_path, addr->sun_path);
-        sup->local = 1;
-
-        /*
-         * Now sit here and listen for connections to arrive.
-         */
-
-        rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
-        if (rc != 0) {
-            DEBUGMSGTL(("netsnmp_unix_transport",
-                        "couldn't listen to \"%s\", errno %d (%s)\n",
-                        addr->sun_path, errno, strerror(errno)));
-            netsnmp_unix_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-
-    } else {
-      t->remote = (u_char *)malloc(strlen(addr->sun_path));
-        if (t->remote == NULL) {
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-        memcpy(t->remote, addr->sun_path, strlen(addr->sun_path));
-        t->remote_length = strlen(addr->sun_path);
-
-        rc = connect(t->sock, (struct sockaddr *) addr,
-                     sizeof(struct sockaddr_un));
-        if (rc != 0) {
-            DEBUGMSGTL(("netsnmp_unix_transport",
-                        "couldn't connect to \"%s\", errno %d (%s)\n",
-                        addr->sun_path, errno, strerror(errno)));
-            netsnmp_unix_close(t);
-            netsnmp_transport_free(t);
-            return NULL;
-        }
-
-        /*
-         * Save the remote address in the transport-specific data pointer for
-         * later use by netsnmp_unix_send.
-         */
-
-        sup->server.sun_family = AF_UNIX;
-        strcpy(sup->server.sun_path, addr->sun_path);
-        sup->local = 0;
-       netsnmp_sock_buffer_set(t->sock, SO_SNDBUF, local, 0);
-       netsnmp_sock_buffer_set(t->sock, SO_RCVBUF, local, 0);
-    }
-
-    /*
-     * Message size is not limited by this transport (hence msgMaxSize
-     * is equal to the maximum legal size of an SNMP message).
-     */
-
-    t->msgMaxSize = 0x7fffffff;
-    t->f_recv     = netsnmp_unix_recv;
-    t->f_send     = netsnmp_unix_send;
-    t->f_close    = netsnmp_unix_close;
-    t->f_accept   = netsnmp_unix_accept;
-    t->f_fmtaddr  = netsnmp_unix_fmtaddr;
-
-    return t;
-}
-
-netsnmp_transport *
-netsnmp_unix_create_tstring(const char *string, int local,
-			    const char *default_target)
-{
-    struct sockaddr_un addr;
-
-    if (string && *string != '\0') {
-    } else if (default_target && *default_target != '\0') {
-      string = default_target;
-    }
-
-    if ((string != NULL && *string != '\0') &&
-	(strlen(string) < sizeof(addr.sun_path))) {
-        addr.sun_family = AF_UNIX;
-        memset(addr.sun_path, 0, sizeof(addr.sun_path));
-        strlcpy(addr.sun_path, string, sizeof(addr.sun_path));
-        return netsnmp_unix_transport(&addr, local);
-    } else {
-        if (string != NULL && *string != '\0') {
-            snmp_log(LOG_ERR, "Path too long for Unix domain transport\n");
-        }
-        return NULL;
-    }
-}
-
-
-
-netsnmp_transport *
-netsnmp_unix_create_ostring(const u_char * o, size_t o_len, int local)
-{
-    struct sockaddr_un addr;
-
-    if (o_len > 0 && o_len < (sizeof(addr.sun_path) - 1)) {
-        addr.sun_family = AF_UNIX;
-        memset(addr.sun_path, 0, sizeof(addr.sun_path));
-        strlcpy(addr.sun_path, (const char *)o, sizeof(addr.sun_path));
-        return netsnmp_unix_transport(&addr, local);
-    } else {
-        if (o_len > 0) {
-            snmp_log(LOG_ERR, "Path too long for Unix domain transport\n");
-        }
-    }
-    return NULL;
-}
-
-
-
-void
-netsnmp_unix_ctor(void)
-{
-    unixDomain.name = netsnmp_UnixDomain;
-    unixDomain.name_length = sizeof(netsnmp_UnixDomain) / sizeof(oid);
-    unixDomain.prefix = (const char**)calloc(2, sizeof(char *));
-    unixDomain.prefix[0] = "unix";
-
-    unixDomain.f_create_from_tstring     = NULL;
-    unixDomain.f_create_from_tstring_new = netsnmp_unix_create_tstring;
-    unixDomain.f_create_from_ostring     = netsnmp_unix_create_ostring;
-
-    netsnmp_tdomain_register(&unixDomain);
-}
-
-#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
-/* 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;
-} com2SecUnixEntry;
-
-com2SecUnixEntry   *com2SecUnixList = NULL, *com2SecUnixListLast = NULL;
-
-
-int
-netsnmp_unix_getSecName(void *opaque, int olength,
-                        const char *community,
-                        size_t community_len,
-                        char **secName, char **contextName)
-{
-    com2SecUnixEntry   *c;
-    struct sockaddr_un *to = (struct sockaddr_un *) opaque;
-    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 (com2SecUnixList == NULL) {
-        DEBUGMSGTL(("netsnmp_unix_getSecName", "no com2sec entries\n"));
-        return 0;
-    }
-
-    /*
-     * If there is no unix socket path, then there can be no valid security
-     * name.
-     */
-
-    if (opaque == NULL || olength != sizeof(struct sockaddr_un) ||
-        to->sun_family != AF_UNIX) {
-        DEBUGMSGTL(("netsnmp_unix_getSecName",
-                    "no unix destine address in PDU?\n"));
-        return 1;
-    }
-
-    DEBUGIF("netsnmp_unix_getSecName") {
-        ztcommunity = (char *)malloc(community_len + 1);
-        if (ztcommunity != NULL) {
-            memcpy(ztcommunity, community, community_len);
-            ztcommunity[community_len] = '\0';
-        }
-
-        DEBUGMSGTL(("netsnmp_unix_getSecName", "resolve <\"%s\">\n",
-                    ztcommunity ? ztcommunity : "<malloc error>"));
-    }
-
-    for (c = com2SecUnixList; c != NULL; c = c->next) {
-        DEBUGMSGTL(("netsnmp_unix_getSecName","compare <\"%s\",to socket %s>",
-                    c->community, c->sockpath ));
-        if ((community_len == strlen(c->community)) &&
-            (memcmp(community, c->community, community_len) == 0) &&
-            /* compare sockpath, if pathlen == 0, always match */
-            (strlen(to->sun_path) == c->pathlen || c->pathlen == 0) &&
-            (memcmp(to->sun_path, c->sockpath, c->pathlen) == 0)
-            ) {
-            DEBUGMSG(("netsnmp_unix_getSecName", "... SUCCESS\n"));
-            if (secName != NULL) {
-                *secName = c->secName;
-                *contextName = c->contextName;
-            }
-            break;
-        }
-        DEBUGMSG(("netsnmp_unix_getSecName", "... nope\n"));
-    }
-    if (ztcommunity != NULL) {
-        free(ztcommunity);
-    }
-    return 1;
-}
-
-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;
-
-
-    param = copy_nword(param, secName, VACMSTRINGLEN);
-    if (strcmp(secName, "-Cn") == 0) {
-        param = copy_nword( param, contextName, sizeof(contextName));
-        param = copy_nword( param, secName, sizeof(secName));
-        if (contextName[0] == '\0') {
-            config_perror("missing CONTEXT_NAME parameter");
-            return;
-        }
-    } 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;
-    }
-
-        param = copy_nword(param, sockpath, sizeof(struct sockaddr_un) - 1);
-    if (sockpath[0] == '\0') {
-        config_perror("missing SOCKPATH parameter");
-        return;
-    } else if (strlen(sockpath) > (sizeof(struct sockaddr_un) - 1)) {
-        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 (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;
-    }
-
-    e = (com2SecUnixEntry *) malloc(sizeof(com2SecUnixEntry));
-    if (e == NULL) {
-        config_perror("memory error");
-        return;
-    }
-
-    DEBUGMSGTL(("netsnmp_unix_parse_security",
-                "<\"%s\"> => \"%s\"\n", community, secName));
-
-    strcpy(e->secName, secName);
-    strcpy(e->contextName, contextName);
-    strcpy(e->community, community);
-    strcpy(e->sockpath, sockpath);
-    e->pathlen = strlen(sockpath);
-    e->next = NULL;
-
-    if (com2SecUnixListLast != NULL) {
-        com2SecUnixListLast->next = e;
-        com2SecUnixListLast = e;
-    } else {
-        com2SecUnixListLast = com2SecUnixList = e;
-    }
-}
-
-void
-netsnmp_unix_com2SecList_free(void)
-{
-    com2SecUnixEntry   *e = com2SecUnixList;
-    while (e != NULL) {
-        com2SecUnixEntry   *tmp = e;
-        e = e->next;
-        free(tmp);
-    }
-    com2SecUnixList = com2SecUnixListLast = NULL;
-}
-#endif /* support for community based SNMP */
-
-void
-netsnmp_unix_agent_config_tokens_register(void)
-{
-#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
-    register_app_config_handler("com2secunix", netsnmp_unix_parse_security,
-                                netsnmp_unix_com2SecList_free,
-                                "[-Cn CONTEXT] secName sockpath community");
-#endif /* support for community based SNMP */
-}
diff --git a/snmplib/snmp_alarm.c b/snmplib/snmp_alarm.c
index c88fa75..af4800f 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,30 +82,24 @@
 void
 sa_update_entry(struct snmp_alarm *a)
 {
-    if (a->t_last.tv_sec == 0 && a->t_last.tv_usec == 0) {
-        struct timeval  t_now;
+    if (!timerisset(&a->t_lastM)) {
         /*
-         * Never been called yet, call time `t' from now.  
+         * First call of sa_update_entry() for alarm a: set t_lastM and t_nextM.
          */
-        gettimeofday(&t_now, NULL);
-
-        a->t_last.tv_sec = t_now.tv_sec;
-        a->t_last.tv_usec = t_now.tv_usec;
-
-        NETSNMP_TIMERADD(&t_now, &a->t, &a->t_next);
-    } else if (a->t_next.tv_sec == 0 && a->t_next.tv_usec == 0) {
+        netsnmp_get_monotonic_clock(&a->t_lastM);
+        NETSNMP_TIMERADD(&a->t_lastM, &a->t, &a->t_nextM);
+    } else if (!timerisset(&a->t_nextM)) {
         /*
          * We've been called but not reset for the next call.  
          */
         if (a->flags & SA_REPEAT) {
-            if (a->t.tv_sec == 0 && a->t.tv_usec == 0) {
+            if (timerisset(&a->t)) {
+                NETSNMP_TIMERADD(&a->t_lastM, &a->t, &a->t_nextM);
+            } else {
                 DEBUGMSGTL(("snmp_alarm",
                             "update_entry: illegal interval specified\n"));
                 snmp_alarm_unregister(a->clientreg);
-                return;
             }
-
-            NETSNMP_TIMERADD(&a->t_last, &a->t, &a->t_next);
         } else {
             /*
              * Single time call, remove it.  
@@ -151,7 +138,7 @@
         DEBUGMSGTL(("snmp_alarm", "unregistered alarm %d\n", 
 		    sa_ptr->clientreg));
         /*
-         * Note:  do not free the clientarg, its the clients responsibility 
+         * Note: do not free the clientarg, it's the client's responsibility 
          */
         free(sa_ptr);
     } else {
@@ -185,31 +172,16 @@
 sa_find_next(void)
 {
     struct snmp_alarm *a, *lowest = NULL;
-    struct timeval  t_now;
 
-    gettimeofday(&t_now, NULL);
+    for (a = thealarms; a != NULL; a = a->next)
+        if (!(a->flags & SA_FIRED)
+            && (lowest == NULL || timercmp(&a->t_nextM, &lowest->t_nextM, <)))
+            lowest = a;
 
-    for (a = thealarms; a != NULL; a = a->next) {
-        /* 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 (%d seconds), should be %d seconds - fixing\n", (a->t_next.tv_sec - t_now.tv_sec), 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;
-            }
-        } else if (a->t_next.tv_sec < lowest->t_next.tv_sec) {
-            lowest = a;
-        }
-    }
     return lowest;
 }
 
+NETSNMP_IMPORT struct snmp_alarm *sa_find_specific(unsigned int clientreg);
 struct snmp_alarm *
 sa_find_specific(unsigned int clientreg)
 {
@@ -225,8 +197,7 @@
 void
 run_alarms(void)
 {
-    int             done = 0;
-    struct snmp_alarm *a = NULL;
+    struct snmp_alarm *a;
     unsigned int    clientreg;
     struct timeval  t_now;
 
@@ -235,31 +206,27 @@
      * call until all events are finally in the future again.  
      */
 
-    while (!done) {
-        if ((a = sa_find_next()) == NULL) {
+    while ((a = sa_find_next()) != NULL) {
+        netsnmp_get_monotonic_clock(&t_now);
+
+        if (timercmp(&a->t_nextM, &t_now, >))
             return;
-        }
 
-        gettimeofday(&t_now, NULL);
+        clientreg = a->clientreg;
+        a->flags |= SA_FIRED;
+        DEBUGMSGTL(("snmp_alarm", "run alarm %d\n", clientreg));
+        (*(a->thecallback)) (clientreg, a->clientarg);
+        DEBUGMSGTL(("snmp_alarm", "alarm %d completed\n", clientreg));
 
-        if (timercmp(&a->t_next, &t_now, <)) {
-            clientreg = a->clientreg;
-            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;
-                sa_update_entry(a);
-            } else {
-                DEBUGMSGTL(("snmp_alarm", "alarm %d deleted itself\n",
-                            clientreg));
-            }
+        a = sa_find_specific(clientreg);
+        if (a) {
+            a->t_lastM = t_now;
+            timerclear(&a->t_nextM);
+            a->flags &= ~SA_FIRED;
+            sa_update_entry(a);
         } else {
-            done = 1;
+            DEBUGMSGTL(("snmp_alarm", "alarm %d deleted itself\n",
+                        clientreg));
         }
     }
 }
@@ -275,39 +242,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, 0);
-
-        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_nextM));
+        if (timercmp(&sa_ptr->t_nextM, now, >))
+            *alarm_tm = sa_ptr->t_nextM;
+        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;
+
+    netsnmp_get_monotonic_clock(&t_now);
+    res = netsnmp_get_next_alarm_time(&alarm_tm, &t_now);
+    if (res)
+        NETSNMP_TIMERSUB(&alarm_tm, &t_now, delta);
+    return res;
 }
 
 
@@ -329,21 +313,19 @@
 # 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);
-        DEBUGMSGTL(("snmp_alarm", "schedule alarm %d in %d.%03d seconds\n",
-                    nextalarm, delta.tv_sec, (delta.tv_usec / 1000)));
+        DEBUGMSGTL(("snmp_alarm", "schedule alarm %d in %ld.%03ld seconds\n",
+                    nextalarm, (long) delta.tv_sec, (long)(delta.tv_usec / 1000)));
 # else  /* HAVE_SETITIMER */
 #  ifdef SIGALRM
         signal(SIGALRM, alarm_handler);
         alarm(delta.tv_sec);
         DEBUGMSGTL(("snmp_alarm",
-                    "schedule alarm %d in roughly %d seconds\n", nextalarm,
+                    "schedule alarm %d in roughly %ld seconds\n", nextalarm,
                     delta.tv_sec));
 #  endif  /* SIGALRM */
 # endif  /* HAVE_SETITIMER */
@@ -374,7 +356,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
@@ -390,40 +372,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 = %d.%03d, 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);
 }
 
 
@@ -451,7 +410,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
@@ -476,8 +435,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;
@@ -487,8 +445,8 @@
     sa_update_entry(*s);
 
     DEBUGMSGTL(("snmp_alarm",
-                "registered alarm %d, t = %d.%03d, flags=0x%02x\n",
-                (*s)->clientreg, (*s)->t.tv_sec, ((*s)->t.tv_usec / 1000),
+                "registered alarm %d, t = %ld.%03ld, flags=0x%02x\n",
+                (*s)->clientreg, (long) (*s)->t.tv_sec, (long)((*s)->t.tv_usec / 1000),
                 (*s)->flags));
 
     if (start_alarms) {
@@ -516,12 +474,12 @@
     struct snmp_alarm *a;
     struct timeval  t_now;
     if ((a = sa_find_specific(clientreg)) != NULL) {
-        gettimeofday(&t_now, NULL);
-        a->t_last.tv_sec = t_now.tv_sec;
-        a->t_last.tv_usec = t_now.tv_usec;
-        a->t_next.tv_sec = 0;
-        a->t_next.tv_usec = 0;
-        NETSNMP_TIMERADD(&t_now, &a->t, &a->t_next);
+        netsnmp_get_monotonic_clock(&t_now);
+        a->t_lastM.tv_sec = t_now.tv_sec;
+        a->t_lastM.tv_usec = t_now.tv_usec;
+        a->t_nextM.tv_sec = 0;
+        a->t_nextM.tv_usec = 0;
+        NETSNMP_TIMERADD(&t_now, &a->t, &a->t_nextM);
         return 0;
     }
     DEBUGMSGTL(("snmp_alarm_reset", "alarm %d not found\n",
diff --git a/snmplib/snmp_api.c b/snmplib/snmp_api.c
index 45267fd..191debf 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:
@@ -37,6 +38,7 @@
  * snmp_api.c - API for access to snmp.
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #include <ctype.h>
@@ -56,11 +58,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 +79,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
@@ -127,6 +122,7 @@
 #include <net-snmp/library/callback.h>
 #include <net-snmp/library/container.h>
 #include <net-snmp/library/snmp_secmod.h>
+#include <net-snmp/library/large_fd_set.h>
 #ifdef NETSNMP_SECMOD_USM
 #include <net-snmp/library/snmpusm.h>
 #endif
@@ -140,8 +136,20 @@
 #include <net-snmp/library/snmp_service.h>
 #include <net-snmp/library/vacm.h>
 
+netsnmp_feature_child_of(statistics, libnetsnmp)
+netsnmp_feature_child_of(snmp_api, libnetsnmp)
+netsnmp_feature_child_of(oid_is_subtree, snmp_api)
+netsnmp_feature_child_of(snmpv3_probe_contextEngineID_rfc5343, snmp_api)
+
+#if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL)
+extern void netsnmp_certs_init(void);
+extern void netsnmp_certs_shutdown(void);
+#endif
+
 static void     _init_snmp(void);
 
+static int      _snmp_store_needed = 0;
+
 #include "../agent/mibgroup/agentx/protocol.h"
 #include <net-snmp/library/transform_oids.h>
 #ifndef timercmp
@@ -186,7 +194,7 @@
 
 #define DEFAULT_COMMUNITY   "public"
 #define DEFAULT_RETRIES	    5
-#define DEFAULT_TIMEOUT	    1000000L
+#define DEFAULT_TIMEOUT	    ONE_SEC
 #define DEFAULT_REMPORT	    SNMP_PORT
 #define DEFAULT_ENTERPRISE  default_enterprise
 #define DEFAULT_TIME	    0
@@ -221,18 +229,6 @@
     size_t          packet_len, packet_size;
 };
 
-/*
- * The list of active/open sessions.
- */
-struct session_list {
-    struct session_list *next;
-    netsnmp_session *session;
-    netsnmp_transport *transport;
-    struct snmp_internal_session *internal;
-};
-
-
-
 static const char *api_errors[-SNMPERR_MAX + 1] = {
     "No error",                 /* SNMPERR_SUCCESS */
     "Generic error",            /* SNMPERR_GENERR */
@@ -300,6 +296,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[] = {
@@ -349,7 +348,6 @@
 
 static void     snmpv3_calc_msg_flags(int, int, u_char *);
 static int      snmpv3_verify_msg(netsnmp_request_list *, netsnmp_pdu *);
-static int      snmpv3_build_probe_pdu(netsnmp_pdu **);
 static int      snmpv3_build(u_char ** pkt, size_t * pkt_len,
                              size_t * offset, netsnmp_session * session,
                              netsnmp_pdu *pdu);
@@ -360,7 +358,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
@@ -385,12 +385,14 @@
         return "GET";
     case SNMP_MSG_GETNEXT:
         return "GETNEXT";
-    case SNMP_MSG_RESPONSE:
-        return "RESPONSE";
-    case SNMP_MSG_SET:
-        return "SET";
     case SNMP_MSG_GETBULK:
         return "GETBULK";
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+    case SNMP_MSG_SET:
+        return "SET";
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+    case SNMP_MSG_RESPONSE:
+        return "RESPONSE";
     case SNMP_MSG_INFORM:
         return "INFORM";
     case SNMP_MSG_TRAP2:
@@ -664,19 +666,19 @@
     /*
      * 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();
     tmpMsgid = lrand48();
 #else
-    srandom(tv.tv_sec ^ tv.tv_usec);
+    srandom((unsigned)(tv.tv_sec ^ tv.tv_usec));
     tmpReqid = random();
     tmpMsgid = random();
 #endif
 
+    /*
+     * don't allow zero value to repeat init 
+     */
     if (tmpReqid == 0)
         tmpReqid = 1;
     if (tmpMsgid == 0)
@@ -691,15 +693,22 @@
     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, 
                        NETSNMP_DS_LIB_HEX_OUTPUT_LENGTH, 16);
+    netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_RETRIES,
+                       DEFAULT_RETRIES);
 
 #ifdef NETSNMP_USE_REVERSE_ASNENCODING
     netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, 
@@ -772,6 +781,15 @@
 		      NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_DISABLE_PERSISTENT_LOAD);
     netsnmp_ds_register_config(ASN_BOOLEAN, "snmp", "noPersistentSave",
 		      NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_DISABLE_PERSISTENT_SAVE);
+    netsnmp_ds_register_config(ASN_BOOLEAN, "snmp",
+                               "noContextEngineIDDiscovery",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_NO_DISCOVERY);
+    netsnmp_ds_register_config(ASN_INTEGER, "snmp", "timeout",
+		               NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_TIMEOUT);
+    netsnmp_ds_register_config(ASN_INTEGER, "snmp", "retries",
+		               NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_RETRIES);
+
     netsnmp_register_service_handlers();
 }
 
@@ -820,10 +838,19 @@
     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
+#ifdef DNSSEC_LOCAL_VALIDATION
+    netsnmp_ds_register_config(ASN_BOOLEAN, "snmp", "dnssecWarnOnly",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_DNSSEC_WARN_ONLY);
+#endif
 
     read_premib_configs();
 #ifndef NETSNMP_DISABLE_MIB_LOADING
@@ -834,6 +861,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)
 {
@@ -863,6 +912,9 @@
 #ifndef NETSNMP_DISABLE_MIB_LOADING
     shutdown_mib();
 #endif /* NETSNMP_DISABLE_MIB_LOADING */
+#if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL)
+    netsnmp_certs_shutdown();
+#endif
     unregister_all_config_handlers();
     netsnmp_container_free_list();
     clear_sec_mod();
@@ -870,10 +922,9 @@
     netsnmp_clear_tdomain_list();
     clear_callback();
     netsnmp_ds_shutdown();
-    clear_user_list();
     netsnmp_clear_default_target();
     netsnmp_clear_default_domain();
-    free_etimelist();
+    shutdown_secmod();
 
     init_snmp_init_done  = 0;
     _init_snmp_init_done = 0;
@@ -907,6 +958,8 @@
 /*
  * extended open 
  */
+netsnmp_feature_child_of(snmp_open_ex, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_SNMP_OPEN_EX
 netsnmp_session *
 snmp_open_ex(netsnmp_session *session,
              int (*fpre_parse)	(netsnmp_session *, netsnmp_transport *,
@@ -941,6 +994,7 @@
 
     return (slp->session);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMP_OPEN_EX */
 
 static struct session_list *
 _sess_copy(netsnmp_session * in_session)
@@ -951,7 +1005,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;
@@ -1054,39 +1107,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) {
@@ -1164,86 +1184,56 @@
         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 (session->retries == SNMP_DEFAULT_RETRIES) {
+        int retry = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID,
+                                       NETSNMP_DS_LIB_RETRIES);
+        if (retry < 0)
+            session->retries = DEFAULT_RETRIES;
+        else
+            session->retries = retry;
     }
-
-    
-    if ((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->timeout == SNMP_DEFAULT_TIMEOUT) {
+        int timeout = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID,
+                                         NETSNMP_DS_LIB_TIMEOUT);
+        if (timeout <= 0)
+            session->timeout = DEFAULT_TIMEOUT;
+        else
+            session->timeout = timeout * ONE_SEC;
     }
-
-    if (session->retries == SNMP_DEFAULT_RETRIES)
-        session->retries = DEFAULT_RETRIES;
-    if (session->timeout == SNMP_DEFAULT_TIMEOUT)
-        session->timeout = DEFAULT_TIMEOUT;
     session->sessid = snmp_get_next_sessid();
 
     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);
 }
 
@@ -1261,6 +1251,101 @@
     return psl;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNMPV3_PROBE_CONTEXTENGINEID_RFC5343
+/**
+ * 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.
+ */
+int
+snmpv3_probe_contextEngineID_rfc5343(void *slp, netsnmp_session *session) {
+    netsnmp_pdu    *pdu = NULL, *response = NULL;
+    static oid      snmpEngineIDoid[]   = { 1,3,6,1,6,3,10,2,1,1,0};
+    static size_t   snmpEngineIDoid_len = 11;
+
+    static char     probeEngineID[] = { (char)0x80, 0, 0, 0, 6 };
+    static size_t   probeEngineID_len = sizeof(probeEngineID);
+    
+    int status;
+
+    pdu = snmp_pdu_create(SNMP_MSG_GET);
+    if (!pdu)
+        return SNMP_ERR_GENERR;
+    pdu->version = SNMP_VERSION_3;
+    /* don't require a securityName */
+    if (session->securityName) {
+        pdu->securityName = strdup(session->securityName);
+        pdu->securityNameLen = strlen(pdu->securityName);
+    }
+    pdu->securityLevel = SNMP_SEC_LEVEL_NOAUTH;
+    pdu->securityModel = session->securityModel;
+    pdu->contextEngineID = netsnmp_memdup(probeEngineID, probeEngineID_len);
+    if (!pdu->contextEngineID) {
+        snmp_log(LOG_ERR, "failed to clone memory for rfc5343 probe\n");
+        snmp_free_pdu(pdu);
+        return SNMP_ERR_GENERR;
+    }
+    pdu->contextEngineIDLen = probeEngineID_len;
+    
+    snmp_add_null_var(pdu, snmpEngineIDoid, snmpEngineIDoid_len);
+
+    DEBUGMSGTL(("snmp_api", "probing for engineID using rfc5343 methods...\n"));
+    session->flags |= SNMP_FLAGS_DONT_PROBE; /* prevent recursion */
+    status = snmp_sess_synch_response(slp, pdu, &response);
+
+    if ((response == NULL) || (status != STAT_SUCCESS)) {
+        snmp_log(LOG_ERR, "failed rfc5343 contextEngineID probing\n");
+        return SNMP_ERR_GENERR;
+    }
+
+    /* check that the response makes sense */
+    if (NULL != response->variables &&
+        NULL != response->variables->name &&
+        snmp_oid_compare(response->variables->name,
+                         response->variables->name_length,
+                         snmpEngineIDoid, snmpEngineIDoid_len) == 0 &&
+        ASN_OCTET_STR == response->variables->type  &&
+        NULL != response->variables->val.string &&
+        response->variables->val_len > 0) {
+        session->contextEngineID =
+            netsnmp_memdup(response->variables->val.string,
+                           response->variables->val_len);
+        if (!session->contextEngineID) {
+            snmp_log(LOG_ERR, "failed rfc5343 contextEngineID probing: memory allocation failed\n");
+            return SNMP_ERR_GENERR;
+        }
+        
+        /* technically there likely isn't a securityEngineID but just
+           in case anyone goes looking we might as well have one */
+        session->securityEngineID =
+            netsnmp_memdup(response->variables->val.string,
+                           response->variables->val_len);
+        if (!session->securityEngineID) {
+            snmp_log(LOG_ERR, "failed rfc5343 securityEngineID probing: memory allocation failed\n");
+            return SNMP_ERR_GENERR;
+        }
+        
+        session->securityEngineIDLen = session->contextEngineIDLen =
+            response->variables->val_len;
+        
+        if (snmp_get_do_debugging()) {
+            size_t i;
+            DEBUGMSGTL(("snmp_sess_open",
+                        "  probe found engineID:  "));
+            for (i = 0; i < session->securityEngineIDLen; i++)
+                DEBUGMSG(("snmp_sess_open", "%02x",
+                          session->securityEngineID[i]));
+            DEBUGMSG(("snmp_sess_open", "\n"));
+        }
+    }
+    return SNMPERR_SUCCESS;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_SNMPV3_PROBE_CONTEXTENGINEID_RFC5343 */
+
+
 /**
  * probe for peer engineID
  *
@@ -1280,16 +1365,17 @@
 snmpv3_engineID_probe(struct session_list *slp,
                       netsnmp_session * in_session)
 {
-    netsnmp_pdu    *pdu = NULL, *response = NULL;
     netsnmp_session *session;
-    unsigned int    i;
     int             status;
+    struct snmp_secmod_def *sptr = NULL;
 
     if (slp == NULL || slp->session == NULL) {
         return 0;
     }
 
     session = slp->session;
+    netsnmp_assert_or_return(session != NULL, 0);
+    sptr = find_sec_mod(session->securityModel);
 
     /*
      * If we are opening a V3 session and we don't know engineID we must probe
@@ -1297,85 +1383,140 @@
      * list so that the response can handled correctly. 
      */
 
-    if ((session->flags & SNMP_FLAGS_DONT_PROBE) == SNMP_FLAGS_DONT_PROBE)
-        return 1;
-
-    if (session->version == SNMP_VERSION_3) {
-        if (session->securityEngineIDLen == 0) {
-            if (snmpv3_build_probe_pdu(&pdu) != 0) {
-                DEBUGMSGTL(("snmp_api", "unable to create probe PDU\n"));
+    if (session->version == SNMP_VERSION_3 &&
+        (0 == (session->flags & SNMP_FLAGS_DONT_PROBE))) {
+        if (NULL != sptr && NULL != sptr->probe_engineid) {
+            DEBUGMSGTL(("snmp_api", "probing for engineID using security model callback...\n"));
+            /* security model specific mechanism of determining engineID */
+            status = (*sptr->probe_engineid) (slp, in_session);
+            if (status != SNMPERR_SUCCESS)
                 return 0;
-            }
-            DEBUGMSGTL(("snmp_api", "probing for engineID...\n"));
-            session->flags |= SNMP_FLAGS_DONT_PROBE; /* prevent recursion */
-            status = snmp_sess_synch_response(slp, pdu, &response);
-
-            if ((response == NULL) && (status == STAT_SUCCESS)) {
-                status = STAT_ERROR;
-            }
-
-            switch (status) {
-            case STAT_SUCCESS:
-                in_session->s_snmp_errno = SNMPERR_INVALID_MSG; /* XX?? */
-                DEBUGMSGTL(("snmp_sess_open",
-                            "error: expected Report as response to probe: %s (%d)\n",
-                            snmp_errstring(response->errstat),
-                            response->errstat));
-                break;
-            case STAT_ERROR:   /* this is what we expected -> Report == STAT_ERROR */
-                in_session->s_snmp_errno = SNMPERR_UNKNOWN_ENG_ID;
-                break;
-            case STAT_TIMEOUT:
-                in_session->s_snmp_errno = SNMPERR_TIMEOUT;
-            default:
-                DEBUGMSGTL(("snmp_sess_open",
-                            "unable to connect with remote engine: %s (%d)\n",
-                            snmp_api_errstring(session->s_snmp_errno),
-                            session->s_snmp_errno));
-                break;
-            }
-
-            if (slp->session->securityEngineIDLen == 0) {
-                DEBUGMSGTL(("snmp_api",
-                            "unable to determine remote engine ID\n"));
-                /* clear the flag so that probe occurs on next inform */
-                session->flags &= ~SNMP_FLAGS_DONT_PROBE;
-                return 0;
-            }
-
-            in_session->s_snmp_errno = SNMPERR_SUCCESS;
-            if (snmp_get_do_debugging()) {
-                DEBUGMSGTL(("snmp_sess_open",
-                            "  probe found engineID:  "));
-                for (i = 0; i < slp->session->securityEngineIDLen; i++)
-                    DEBUGMSG(("snmp_sess_open", "%02x",
-                              slp->session->securityEngineID[i]));
-                DEBUGMSG(("snmp_sess_open", "\n"));
-            }
-        }
-
-        /*
-         * if boot/time supplied set it for this engineID 
-         */
-        if (session->engineBoots || session->engineTime) {
-            set_enginetime(session->securityEngineID,
-                           session->securityEngineIDLen,
-                           session->engineBoots, session->engineTime,
-                           TRUE);
-        }
-
-        if (create_user_from_session(slp->session) != SNMPERR_SUCCESS) {
-            in_session->s_snmp_errno = SNMPERR_UNKNOWN_USER_NAME;       /* XX?? */
-            DEBUGMSGTL(("snmp_api",
-                        "snmpv3_engine_probe(): failed(2) to create a new user from session\n"));
+        } else {
+            /* XXX: default to the default RFC5343 contextEngineID Probe? */
             return 0;
         }
     }
 
+    /*
+     * see if there is a hook to call now that we're done probing for an
+     * engineID
+     */
+    if (sptr && sptr->post_probe_engineid) {
+        status = (*sptr->post_probe_engineid)(slp, in_session);
+        if (status != SNMPERR_SUCCESS)
+            return 0;
+    }
+
     return 1;
 }
 
+/*******************************************************************-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
@@ -1392,72 +1533,79 @@
 static void    *
 _sess_open(netsnmp_session * in_session)
 {
-    struct session_list *slp;
-    netsnmp_session *session;
-    char            *clientaddr_save = NULL;
+    netsnmp_transport *transport = NULL;
+    int rc;
 
     in_session->s_snmp_errno = 0;
     in_session->s_errno = 0;
 
     _init_snmp();
 
-    if ((slp = snmp_sess_copy(in_session)) == NULL) {
-        return (NULL);
-    }
-    session = slp->session;
-    slp->transport = NULL;
+    {
+        char *clientaddr_save = NULL;
 
-    if (NULL != session->localname) {
-        clientaddr_save = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
-                                                NETSNMP_DS_LIB_CLIENT_ADDR);
-        netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
-                              NETSNMP_DS_LIB_CLIENT_ADDR, session->localname);
+        if (NULL != in_session->localname) {
+            clientaddr_save =
+                netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                      NETSNMP_DS_LIB_CLIENT_ADDR);
+            netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
+                                  NETSNMP_DS_LIB_CLIENT_ADDR,
+                                  in_session->localname);
+        }
+
+        if (in_session->flags & SNMP_FLAGS_STREAM_SOCKET) {
+            transport =
+                netsnmp_tdomain_transport_full("snmp", in_session->peername,
+                                               in_session->local_port, "tcp,tcp6",
+                                               NULL);
+        } else {
+            transport =
+                netsnmp_tdomain_transport_full("snmp", in_session->peername,
+                                               in_session->local_port, "udp,udp6",
+                                               NULL);
+        }
+
+        if (NULL != clientaddr_save)
+            netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
+                                  NETSNMP_DS_LIB_CLIENT_ADDR, clientaddr_save);
     }
 
-    if (session->flags & SNMP_FLAGS_STREAM_SOCKET) {
-        slp->transport =
-	  netsnmp_tdomain_transport_full("snmp", session->peername,
-					 session->local_port, "tcp", NULL);
-    } else {
-        slp->transport =
-	  netsnmp_tdomain_transport_full("snmp", session->peername,
-					 session->local_port, "udp", NULL);
-    }
-
-    if (NULL != session->localname)
-        netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
-                              NETSNMP_DS_LIB_CLIENT_ADDR, clientaddr_save);
-
-    if (slp->transport == NULL) {
+    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(session->peername);
-        snmp_sess_close(slp);
+        snmp_set_detail(in_session->peername);
         return NULL;
     }
 
-    session->rcvMsgMaxSize = slp->transport->msgMaxSize;
-
-    if (!snmpv3_engineID_probe(slp, in_session)) {
-        snmp_sess_close(slp);
+    /* 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 (create_user_from_session(slp->session) != SNMPERR_SUCCESS) {
-        in_session->s_snmp_errno = SNMPERR_UNKNOWN_USER_NAME;       /* XX?? */
-        DEBUGMSGTL(("snmp_api",
-                    "_sess_open(): failed(2) to create a new user from session\n"));
-        snmp_sess_close(slp);
-        return NULL;
+
+#if defined(SO_BROADCAST) && defined(SOL_SOCKET)
+    if ( in_session->flags & SNMP_FLAGS_UDP_BROADCAST) {
+        int   b = 1;
+        int   rc;
+
+        rc = setsockopt(transport->sock, SOL_SOCKET, SO_BROADCAST,
+                        (char *)&b, sizeof(b));
+
+        if ( rc != 0 ) {
+            in_session->s_snmp_errno = SNMPERR_BAD_ADDRESS; /* good as any? */
+            in_session->s_errno = errno;
+
+            DEBUGMSGTL(("_sess_open", "couldn't enable UDP_BROADCAST\n"));
+            return NULL;
+        }
     }
-    
-    session->flags &= ~SNMP_FLAGS_DONT_PROBE;
+#endif
 
-
-    return (void *) slp;
-}                               /* end snmp_sess_open() */
-
-
+    return snmp_sess_add(in_session, transport, NULL, NULL);
+}
 
 /*
  * EXTENDED SESSION API ------------------------------------------ 
@@ -1551,7 +1699,8 @@
                                               size_t))
 {
     struct session_list *slp;
-
+    int rc;
+    
     _init_snmp();
 
     if (transport == NULL)
@@ -1563,8 +1712,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);
@@ -1584,19 +1749,12 @@
 
     if (slp->session->version == SNMP_VERSION_3) {
         DEBUGMSGTL(("snmp_sess_add",
-                    "adding v3 session -- engineID probe now\n"));
-        if (!snmpv3_engineID_probe(slp, in_session)) {
+                    "adding v3 session -- maybe engineID probe now\n"));
+        if (!snmpv3_engineID_probe(slp, slp->session)) {
             DEBUGMSGTL(("snmp_sess_add", "engine ID probe failed\n"));
             snmp_sess_close(slp);
             return NULL;
         }
-        if (create_user_from_session(slp->session) != SNMPERR_SUCCESS) {
-            in_session->s_snmp_errno = SNMPERR_UNKNOWN_USER_NAME;
-            DEBUGMSGTL(("snmp_api",
-                        "snmp_sess_add(): failed(2) to create a new user from session\n"));
-            snmp_sess_close(slp);
-            return NULL;
-        }
     }
 
     slp->session->flags &= ~SNMP_FLAGS_DONT_PROBE;
@@ -1630,225 +1788,17 @@
     return pvoid;
 }
 
-
-
-/*
- * create_user_from_session(netsnmp_session *session):
- * 
- * creates a user in the usm table from the information in a session.
- * If the user already exists, it is updated with the current
- * information from the session
- * 
- * Parameters:
- * session -- IN: pointer to the session to use when creating the user.
- * 
- * Returns:
- * SNMPERR_SUCCESS
- * SNMPERR_GENERR 
- */
 int
-create_user_from_session(netsnmp_session * session)
-{
-    struct usmUser *user;
-    int             user_just_created = 0;
-    char *cp;
+create_user_from_session(netsnmp_session * session) {
+#ifdef NETSNMP_SECMOD_USM
+    return usm_create_user_from_session(session);
+#else
+    snmp_log(LOG_ERR, "create_user_from_session called when USM wasn't compiled in");
+    netsnmp_assert(0 == 1);
+    return SNMP_ERR_GENERR;
+#endif
+}
 
-    /*
-     * - don't create-another/copy-into user for this session by default
-     * - bail now (no error) if we don't have an engineID
-     */
-    if (SNMP_FLAGS_USER_CREATED == (session->flags & SNMP_FLAGS_USER_CREATED) ||
-        session->securityModel != SNMP_SEC_MODEL_USM ||
-        session->version != SNMP_VERSION_3 ||
-        session->securityNameLen == 0 ||
-        session->securityEngineIDLen == 0)
-        return SNMPERR_SUCCESS;
-
-    session->flags |= SNMP_FLAGS_USER_CREATED;
-
-    /*
-     * now that we have the engineID, create an entry in the USM list
-     * for this user using the information in the session 
-     */
-    user = usm_get_user_from_list(session->securityEngineID,
-                                  session->securityEngineIDLen,
-                                  session->securityName,
-                                  usm_get_userList(), 0);
-    if (user == NULL) {
-        DEBUGMSGTL(("snmp_api", "Building user %s...\n",
-                    session->securityName));
-        /*
-         * user doesn't exist so we create and add it 
-         */
-        user = (struct usmUser *) calloc(1, sizeof(struct usmUser));
-        if (user == NULL)
-            return SNMPERR_GENERR;
-
-        /*
-         * copy in the securityName 
-         */
-        if (session->securityName) {
-            user->name = strdup(session->securityName);
-            user->secName = strdup(session->securityName);
-            if (user->name == NULL || user->secName == NULL) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-        }
-
-        /*
-         * copy in the engineID 
-         */
-        user->engineID = netsnmp_memdup(session->securityEngineID,
-                                        session->securityEngineIDLen);
-        if (!user->engineID) {
-            usm_free_user(user);
-            return SNMPERR_GENERR;
-        }
-        user->engineIDLen = session->securityEngineIDLen;
-
-        user_just_created = 1;
-    }
-
-    /*
-     * copy the auth protocol 
-     */
-    if (user->authProtocol == NULL && session->securityAuthProto != NULL) {
-        SNMP_FREE(user->authProtocol);
-        user->authProtocol =
-            snmp_duplicate_objid(session->securityAuthProto,
-                                 session->securityAuthProtoLen);
-        if (user->authProtocol == NULL) {
-            usm_free_user(user);
-            return SNMPERR_GENERR;
-        }
-        user->authProtocolLen = session->securityAuthProtoLen;
-    }
-
-    /*
-     * copy the priv protocol 
-     */
-    if (user->privProtocol == NULL && session->securityPrivProto != NULL) {
-        SNMP_FREE(user->privProtocol);
-        user->privProtocol =
-            snmp_duplicate_objid(session->securityPrivProto,
-                                 session->securityPrivProtoLen);
-        if (user->privProtocol == NULL) {
-            usm_free_user(user);
-            return SNMPERR_GENERR;
-        }
-        user->privProtocolLen = session->securityPrivProtoLen;
-    }
-
-    /*
-     * copy in the authentication Key.  If not localized, localize it 
-     */
-    if (user->authKey == NULL) {
-        if (session->securityAuthLocalKey != NULL
-            && session->securityAuthLocalKeyLen != 0) {
-            /* already localized key passed in.  use it */
-            SNMP_FREE(user->authKey);
-            user->authKey = netsnmp_memdup(session->securityAuthLocalKey,
-                                           session->securityAuthLocalKeyLen);
-            if (!user->authKey) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-            user->authKeyLen = session->securityAuthLocalKeyLen;
-        } else if (session->securityAuthKey != NULL
-                   && session->securityAuthKeyLen != 0) {
-            SNMP_FREE(user->authKey);
-            user->authKey = (u_char *) calloc(1, USM_LENGTH_KU_HASHBLOCK);
-            if (user->authKey == NULL) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-            user->authKeyLen = USM_LENGTH_KU_HASHBLOCK;
-            if (generate_kul(user->authProtocol, user->authProtocolLen,
-                             session->securityEngineID,
-                             session->securityEngineIDLen,
-                             session->securityAuthKey,
-                             session->securityAuthKeyLen, user->authKey,
-                             &user->authKeyLen) != SNMPERR_SUCCESS) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-        } else if ((cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
-                                               NETSNMP_DS_LIB_AUTHLOCALIZEDKEY))) {
-            size_t buflen = USM_AUTH_KU_LEN;
-            SNMP_FREE(user->authKey);
-            user->authKey = (u_char *)malloc(buflen); /* max length needed */
-            user->authKeyLen = 0;
-            /* it will be a hex string */
-            if (!snmp_hex_to_binary(&user->authKey, &buflen, &user->authKeyLen,
-                                    0, cp)) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-        }
-    }
-
-    /*
-     * copy in the privacy Key.  If not localized, localize it 
-     */
-    if (user->privKey == NULL) {
-        if (session->securityPrivLocalKey != NULL
-            && session->securityPrivLocalKeyLen != 0) {
-            /* already localized key passed in.  use it */
-            SNMP_FREE(user->privKey);
-            user->privKey = netsnmp_memdup(session->securityPrivLocalKey,
-                                           session->securityPrivLocalKeyLen);
-            if (!user->privKey) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-            user->privKeyLen = session->securityPrivLocalKeyLen;
-        } else if (session->securityPrivKey != NULL
-                   && session->securityPrivKeyLen != 0) {
-            SNMP_FREE(user->privKey);
-            user->privKey = (u_char *) calloc(1, USM_LENGTH_KU_HASHBLOCK);
-            if (user->privKey == NULL) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-            user->privKeyLen = USM_LENGTH_KU_HASHBLOCK;
-            if (generate_kul(user->authProtocol, user->authProtocolLen,
-                             session->securityEngineID,
-                             session->securityEngineIDLen,
-                             session->securityPrivKey,
-                             session->securityPrivKeyLen, user->privKey,
-                             &user->privKeyLen) != SNMPERR_SUCCESS) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-        } else if ((cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
-                                               NETSNMP_DS_LIB_PRIVLOCALIZEDKEY))) {
-            size_t buflen = USM_PRIV_KU_LEN;
-            SNMP_FREE(user->privKey);
-            user->privKey = (u_char *)malloc(buflen); /* max length needed */
-            user->privKeyLen = 0;
-            /* it will be a hex string */
-            if (!snmp_hex_to_binary(&user->privKey, &buflen, &user->privKeyLen,
-                                    0, cp)) {
-                usm_free_user(user);
-                return SNMPERR_GENERR;
-            }
-        }
-    }
-
-    if (user_just_created) {
-        /*
-         * add the user into the database 
-         */
-        user->userStatus = RS_ACTIVE;
-        user->userStorageType = ST_READONLY;
-        usm_add_user(user);
-    }
-
-    return SNMPERR_SUCCESS;
-
-
-}                               /* end create_user_from_session() */
 
 /*
  *  Do a "deep free()" of a netsnmp_session.
@@ -1906,7 +1856,7 @@
     }
 
     isp = slp->internal;
-    slp->internal = 0;
+    slp->internal = NULL;
 
     if (isp) {
         netsnmp_request_list *rp, *orp;
@@ -1933,7 +1883,7 @@
     }
 
     transport = slp->transport;
-    slp->transport = 0;
+    slp->transport = NULL;
 
     if (transport) {
         transport->f_close(transport);
@@ -1941,7 +1891,7 @@
     }
 
     sesp = slp->session;
-    slp->session = 0;
+    slp->session = NULL;
 
     /*
      * The following is necessary to avoid memory leakage when closing AgentX 
@@ -2010,49 +1960,6 @@
     return 1;
 }
 
-static int
-snmpv3_build_probe_pdu(netsnmp_pdu **pdu)
-{
-    struct usmUser *user;
-
-    /*
-     * create the pdu 
-     */
-    if (!pdu)
-        return -1;
-    *pdu = snmp_pdu_create(SNMP_MSG_GET);
-    if (!(*pdu))
-        return -1;
-    (*pdu)->version = SNMP_VERSION_3;
-    (*pdu)->securityName = strdup("");
-    (*pdu)->securityNameLen = strlen((*pdu)->securityName);
-    (*pdu)->securityLevel = SNMP_SEC_LEVEL_NOAUTH;
-    (*pdu)->securityModel = SNMP_SEC_MODEL_USM;
-
-    /*
-     * create the empty user 
-     */
-    user = usm_get_user(NULL, 0, (*pdu)->securityName);
-    if (user == NULL) {
-        user = (struct usmUser *) calloc(1, sizeof(struct usmUser));
-        if (user == NULL) {
-            snmp_free_pdu(*pdu);
-            *pdu = (netsnmp_pdu *) NULL;
-            return -1;
-        }
-        user->name = strdup((*pdu)->securityName);
-        user->secName = strdup((*pdu)->securityName);
-        user->authProtocolLen = sizeof(usmNoAuthProtocol) / sizeof(oid);
-        user->authProtocol =
-            snmp_duplicate_objid(usmNoAuthProtocol, user->authProtocolLen);
-        user->privProtocolLen = sizeof(usmNoPrivProtocol) / sizeof(oid);
-        user->privProtocol =
-            snmp_duplicate_objid(usmNoPrivProtocol, user->privProtocolLen);
-        usm_add_user(user);
-    }
-    return 0;
-}
-
 static void
 snmpv3_calc_msg_flags(int sec_level, int msg_command, u_char * flags)
 {
@@ -2097,10 +2004,16 @@
     if (rpdu->contextNameLen != pdu->contextNameLen ||
         memcmp(rpdu->contextName, pdu->contextName, pdu->contextNameLen))
         return 0;
-    if (rpdu->securityEngineIDLen != pdu->securityEngineIDLen ||
+
+    /* tunneled transports don't have a securityEngineID...  that's
+       USM specific (and maybe other future ones) */
+    if (pdu->securityModel == SNMP_SEC_MODEL_USM &&
+        (rpdu->securityEngineIDLen != pdu->securityEngineIDLen ||
         memcmp(rpdu->securityEngineID, pdu->securityEngineID,
-               pdu->securityEngineIDLen))
+               pdu->securityEngineIDLen)))
         return 0;
+
+    /* the securityName must match though regardless of secmodel */
     if (rpdu->securityNameLen != pdu->securityNameLen ||
         memcmp(rpdu->securityName, pdu->securityName,
                pdu->securityNameLen))
@@ -2136,9 +2049,13 @@
         /*
          * Fallthrough 
          */
+#ifndef NETSNMP_NOTIFY_ONLY
     case SNMP_MSG_GET:
     case SNMP_MSG_GETNEXT:
+#endif /* ! NETSNMP_NOTIFY_ONLY */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMP_MSG_SET:
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     case SNMP_MSG_INFORM:
         if (pdu->errstat == SNMP_DEFAULT_ERRSTAT)
             pdu->errstat = 0;
@@ -2146,6 +2063,7 @@
             pdu->errindex = 0;
         break;
 
+#ifndef NETSNMP_NOTIFY_ONLY
     case SNMP_MSG_GETBULK:
         if (pdu->max_repetitions < 0) {
             session->s_snmp_errno = SNMPERR_BAD_REPETITIONS;
@@ -2156,6 +2074,7 @@
             return -1;
         }
         break;
+#endif /* ! NETSNMP_NOTIFY_ONLY */
 
     case SNMP_MSG_TRAP:
         session->s_snmp_errno = SNMPERR_V1_IN_V2;
@@ -2206,20 +2125,30 @@
     if (pdu->securityModel == SNMP_DEFAULT_SECMODEL) {
         pdu->securityModel = session->securityModel;
         if (pdu->securityModel == SNMP_DEFAULT_SECMODEL) {
-            pdu->securityModel = SNMP_SEC_MODEL_USM;
+            pdu->securityModel = se_find_value_in_slist("snmp_secmods", netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_SECMODEL));
+            
+            if (pdu->securityModel <= 0) {
+                pdu->securityModel = SNMP_SEC_MODEL_USM;
+            }
         }
     }
-    if (pdu->securityNameLen == 0 && pdu->securityName == 0) {
-        if (session->securityNameLen == 0) {
+    if (pdu->securityNameLen == 0 && pdu->securityName == NULL) {
+        if (session->securityModel != SNMP_SEC_MODEL_TSM &&
+            session->securityNameLen == 0) {
             session->s_snmp_errno = SNMPERR_BAD_SEC_NAME;
             return -1;
         }
-        pdu->securityName = strdup(session->securityName);
-        if (pdu->securityName == NULL) {
-            session->s_snmp_errno = SNMPERR_GENERR;
-            return -1;
+        if (session->securityName) {
+            pdu->securityName = strdup(session->securityName);
+            if (pdu->securityName == NULL) {
+                session->s_snmp_errno = SNMPERR_GENERR;
+                return -1;
+            }
+            pdu->securityNameLen = session->securityNameLen;
+        } else {
+            pdu->securityName = strdup("");
+            session->securityName = strdup("");
         }
-        pdu->securityNameLen = session->securityNameLen;
     }
     if (pdu->securityLevel == 0) {
         if (session->securityLevel == 0) {
@@ -2790,7 +2719,7 @@
             netsnmp_session * session, netsnmp_pdu *pdu)
 {
 #if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
-    u_char         *h0e = 0;
+    u_char         *h0e = NULL;
     size_t          start_offset = *offset;
     long            version;
     int             rc = 0;
@@ -2812,9 +2741,13 @@
         /*
          * Fallthrough 
          */
+#ifndef NETSNMP_NOTIFY_ONLY
     case SNMP_MSG_GET:
     case SNMP_MSG_GETNEXT:
+#endif /* ! NETSNMP_NOTIFY_ONLY */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
     case SNMP_MSG_SET:
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         /*
          * all versions support these PDU types 
          */
@@ -2849,6 +2782,7 @@
             pdu->errindex = 0;
         break;
 
+#ifndef NETSNMP_NOTIFY_ONLY
     case SNMP_MSG_GETBULK:
         /*
          * not supported in SNMPv1 and SNMPsec 
@@ -2868,6 +2802,7 @@
             return -1;
         }
         break;
+#endif /* ! NETSNMP_NOTIFY_ONLY */
 
     case SNMP_MSG_TRAP:
         /*
@@ -2951,7 +2886,6 @@
              */
             if (0 == session->community_len) {
                 SNMP_FREE(pdu->community);
-                pdu->community = NULL;
             } else if (pdu->community_len == session->community_len) {
                 memmove(pdu->community,
                         session->community, session->community_len);
@@ -2969,7 +2903,7 @@
         }
 #endif                          /* !NETSNMP_NO_ZEROLENGTH_COMMUNITY */
 
-        DEBUGMSGTL(("snmp_send", "Building SNMPv%d message...\n",
+        DEBUGMSGTL(("snmp_send", "Building SNMPv%ld message...\n",
                     (1 + pdu->version)));
 #ifdef NETSNMP_USE_REVERSE_ASNENCODING
         if (netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_REVERSE_ENCODE)) {
@@ -3557,8 +3491,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;
         }
@@ -3860,9 +3796,7 @@
             DEBUGINDENTADD(-4);
         }
 
-        if (mallocbuf) {
-            SNMP_FREE(mallocbuf);
-        }
+        SNMP_FREE(mallocbuf);
         return ret_val;
     }
 
@@ -3875,9 +3809,7 @@
     if (data == NULL) {
         snmp_increment_statistic(STAT_SNMPINASNPARSEERRS);
         DEBUGINDENTADD(-4);
-        if (mallocbuf) {
-            SNMP_FREE(mallocbuf);
-        }
+        SNMP_FREE(mallocbuf);
         return SNMPERR_ASN_PARSE_ERR;
     }
 
@@ -3900,15 +3832,11 @@
     if (ret != SNMPERR_SUCCESS) {
         ERROR_MSG("error parsing PDU");
         snmp_increment_statistic(STAT_SNMPINASNPARSEERRS);
-        if (mallocbuf) {
-            SNMP_FREE(mallocbuf);
-        }
+        SNMP_FREE(mallocbuf);
         return SNMPERR_ASN_PARSE_ERR;
     }
 
-    if (mallocbuf) {
-        SNMP_FREE(mallocbuf);
-    }
+    SNMP_FREE(mallocbuf);
     return SNMPERR_SUCCESS;
 }                               /* end snmpv3_parse() */
 
@@ -4020,13 +3948,17 @@
     /*
      * find the appropriate error counter  
      */
+#ifndef NETSNMP_FEATURE_REMOVE_STATISTICS
     ltmp = snmp_get_statistic(stat_ind);
+#else /* !NETSNMP_FEATURE_REMOVE_STATISTICS */
+    ltmp = 1;
+#endif /* !NETSNMP_FEATURE_REMOVE_STATISTICS */
 
     /*
      * return the appropriate error counter  
      */
     snmp_pdu_add_variable(pdu, err_var, err_var_len,
-                          ASN_COUNTER, (u_char *) & ltmp, sizeof(ltmp));
+                          ASN_COUNTER, & ltmp, sizeof(ltmp));
 
     return SNMPERR_SUCCESS;
 }                               /* end snmpv3_make_report() */
@@ -4121,6 +4053,14 @@
 #endif
     int             result = -1;
 
+    static oid      snmpEngineIDoid[]   = { 1,3,6,1,6,3,10,2,1,1,0};
+    static size_t   snmpEngineIDoid_len = 11;
+
+    static char     ourEngineID[SNMP_SEC_PARAM_BUF_SIZE];
+    static size_t   ourEngineID_len = sizeof(ourEngineID);
+
+    netsnmp_pdu    *pdu2 = NULL;
+
     session->s_snmp_errno = 0;
     session->s_errno = 0;
 
@@ -4145,7 +4085,7 @@
     case SNMP_VERSION_2c:
 #endif
 #if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
-        DEBUGMSGTL(("snmp_api", "Parsing SNMPv%d message...\n",
+        DEBUGMSGTL(("snmp_api", "Parsing SNMPv%ld message...\n",
                     (1 + pdu->version)));
 
         /*
@@ -4244,6 +4184,120 @@
                 }
             }
         }
+
+        /* Implement RFC5343 here for two reasons:
+           1) From a security perspective it handles this otherwise
+              always approved request earlier.  It bypasses the need
+              for authorization to the snmpEngineID scalar, which is
+              what is what RFC3415 appendix A species as ok.  Note
+              that we haven't bypassed authentication since if there
+              was an authentication eror it would have been handled
+              above in the if(result) part at the lastet.
+           2) From an application point of view if we let this request
+              get all the way to the application, it'd require that
+              all application types supporting discovery also fire up
+              a minimal agent in order to handle just this request
+              which seems like overkill.  Though there is no other
+              application types that currently need discovery (NRs
+              accept notifications from contextEngineIDs that derive
+              from the NO not the NR).  Also a lame excuse for doing
+              it here.
+           3) Less important technically, but the net-snmp agent
+              doesn't currently handle registrations of different
+              engineIDs either and it would have been a lot more work
+              to implement there since we'd need to support that
+              first. :-/ Supporting multiple context engineIDs should
+              be done anyway, so it's not a valid excuse here.
+           4) There is a lot less to do if we trump the agent at this
+              point; IE, the agent does a lot more unnecessary
+              processing when the only thing that should ever be in
+              this context by definition is the single scalar.
+        */
+
+        /* special RFC5343 engineID discovery engineID check */
+        if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID,
+                                    NETSNMP_DS_LIB_NO_DISCOVERY) &&
+            SNMP_MSG_RESPONSE       != pdu->command &&
+            NULL                    != pdu->contextEngineID &&
+            pdu->contextEngineIDLen == 5 &&
+            pdu->contextEngineID[0] == 0x80 &&
+            pdu->contextEngineID[1] == 0x00 &&
+            pdu->contextEngineID[2] == 0x00 &&
+            pdu->contextEngineID[3] == 0x00 &&
+            pdu->contextEngineID[4] == 0x06) {
+
+            /* define a result so it doesn't get past us at this point
+               and gets dropped by future parts of the stack */
+            result = SNMPERR_JUST_A_CONTEXT_PROBE;
+
+            DEBUGMSGTL(("snmpv3_contextid", "starting context ID discovery\n"));
+            /* ensure exactly one variable */
+            if (NULL != pdu->variables &&
+                NULL == pdu->variables->next_variable &&
+
+                /* if it's a GET, match it exactly */
+                ((SNMP_MSG_GET == pdu->command &&
+                  snmp_oid_compare(snmpEngineIDoid,
+                                   snmpEngineIDoid_len,
+                                   pdu->variables->name,
+                                   pdu->variables->name_length) == 0)
+                 /* if it's a GETNEXT ensure it's less than the engineID oid */
+                 ||
+                 (SNMP_MSG_GETNEXT == pdu->command &&
+                  snmp_oid_compare(snmpEngineIDoid,
+                                   snmpEngineIDoid_len,
+                                   pdu->variables->name,
+                                   pdu->variables->name_length) > 0)
+                    )) {
+
+                DEBUGMSGTL(("snmpv3_contextid",
+                            "  One correct variable found\n"));
+
+                /* Note: we're explictly not handling a GETBULK.  Deal. */
+
+                /* set up the response */
+                pdu2 = snmp_clone_pdu(pdu);
+
+                /* free the current varbind */
+                snmp_free_varbind(pdu2->variables);
+
+                /* set the variables */
+                pdu2->variables = NULL;
+                pdu2->command = SNMP_MSG_RESPONSE;
+                pdu2->errstat = 0;
+                pdu2->errindex = 0;
+
+                ourEngineID_len =
+                    snmpv3_get_engineID((u_char*)ourEngineID, ourEngineID_len);
+                if (0 != ourEngineID_len) {
+
+                    DEBUGMSGTL(("snmpv3_contextid",
+                                "  responding with our engineID\n"));
+
+                    snmp_pdu_add_variable(pdu2,
+                                          snmpEngineIDoid, snmpEngineIDoid_len,
+                                          ASN_OCTET_STR,
+                                          ourEngineID, ourEngineID_len);
+                    
+                    /* send the response */
+                    if (0 == snmp_sess_send(sessp, pdu2)) {
+
+                        DEBUGMSGTL(("snmpv3_contextid",
+                                    "  sent it off!\n"));
+
+                        snmp_free_pdu(pdu2);
+                        
+                        snmp_log(LOG_ERR, "sending a response to the context engineID probe failed\n");
+                    }
+                } else {
+                    snmp_log(LOG_ERR, "failed to get our own engineID!\n");
+                }
+            } else {
+                snmp_log(LOG_WARNING,
+                         "received an odd context engineID probe\n");
+            }
+        }
+
         break;
     case SNMPERR_BAD_VERSION:
         ERROR_MSG("error parsing snmp message version");
@@ -4301,6 +4355,7 @@
     size_t          four;
     netsnmp_variable_list *vp = NULL;
     oid             objid[MAX_OID_LEN];
+    u_char         *p;
 
     /*
      * Get the PDU type 
@@ -4376,12 +4431,16 @@
          * fallthrough 
          */
 
+#ifndef NETSNMP_NOTIFY_ONLY
     case SNMP_MSG_GET:
     case SNMP_MSG_GETNEXT:
     case SNMP_MSG_GETBULK:
+#endif /* ! NETSNMP_NOTIFY_ONLY */
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+    case SNMP_MSG_SET:
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
     case SNMP_MSG_TRAP2:
     case SNMP_MSG_INFORM:
-    case SNMP_MSG_SET:
         /*
          * PDU is not an SNMPv1 TRAP 
          */
@@ -4442,10 +4501,10 @@
     while ((int) *length > 0) {
         netsnmp_variable_list *vptemp;
         vptemp = (netsnmp_variable_list *) malloc(sizeof(*vptemp));
-        if (0 == vptemp) {
+        if (NULL == vptemp) {
             return -1;
         }
-        if (0 == vp) {
+        if (NULL == vp) {
             pdu->variables = vptemp;
         } else {
             vp->next_variable = vptemp;
@@ -4455,10 +4514,10 @@
         vp->next_variable = NULL;
         vp->val.string = NULL;
         vp->name_length = MAX_OID_LEN;
-        vp->name = 0;
+        vp->name = NULL;
         vp->index = 0;
-        vp->data = 0;
-        vp->dataFreeHook = 0;
+        vp->data = NULL;
+        vp->dataFreeHook = NULL;
         DEBUGDUMPSECTION("recv", "VarBind");
         data = snmp_parse_var_op(data, objid, &vp->name_length, &vp->type,
                                  &vp->val_len, &var_val, length);
@@ -4473,9 +4532,11 @@
         case ASN_INTEGER:
             vp->val.integer = (long *) vp->buf;
             vp->val_len = sizeof(long);
-            asn_parse_int(var_val, &len, &vp->type,
+            p = asn_parse_int(var_val, &len, &vp->type,
                           (long *) vp->val.integer,
                           sizeof(*vp->val.integer));
+            if (!p)
+                return -1;
             break;
         case ASN_COUNTER:
         case ASN_GAUGE:
@@ -4483,9 +4544,11 @@
         case ASN_UINTEGER:
             vp->val.integer = (long *) vp->buf;
             vp->val_len = sizeof(u_long);
-            asn_parse_unsigned_int(var_val, &len, &vp->type,
+            p = asn_parse_unsigned_int(var_val, &len, &vp->type,
                                    (u_long *) vp->val.integer,
                                    vp->val_len);
+            if (!p)
+                return -1;
             break;
 #ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
         case ASN_OPAQUE_COUNTER64:
@@ -4494,34 +4557,45 @@
         case ASN_COUNTER64:
             vp->val.counter64 = (struct counter64 *) vp->buf;
             vp->val_len = sizeof(struct counter64);
-            asn_parse_unsigned_int64(var_val, &len, &vp->type,
+            p = asn_parse_unsigned_int64(var_val, &len, &vp->type,
                                      (struct counter64 *) vp->val.
                                      counter64, vp->val_len);
+            if (!p)
+                return -1;
             break;
 #ifdef NETSNMP_WITH_OPAQUE_SPECIAL_TYPES
         case ASN_OPAQUE_FLOAT:
             vp->val.floatVal = (float *) vp->buf;
             vp->val_len = sizeof(float);
-            asn_parse_float(var_val, &len, &vp->type,
+            p = asn_parse_float(var_val, &len, &vp->type,
                             vp->val.floatVal, vp->val_len);
+            if (!p)
+                return -1;
             break;
         case ASN_OPAQUE_DOUBLE:
             vp->val.doubleVal = (double *) vp->buf;
             vp->val_len = sizeof(double);
-            asn_parse_double(var_val, &len, &vp->type,
+            p = asn_parse_double(var_val, &len, &vp->type,
                              vp->val.doubleVal, vp->val_len);
+            if (!p)
+                return -1;
             break;
         case ASN_OPAQUE_I64:
             vp->val.counter64 = (struct counter64 *) vp->buf;
             vp->val_len = sizeof(struct counter64);
-            asn_parse_signed_int64(var_val, &len, &vp->type,
+            p = asn_parse_signed_int64(var_val, &len, &vp->type,
                                    (struct counter64 *) vp->val.counter64,
                                    sizeof(*vp->val.counter64));
 
+            if (!p)
+                return -1;
             break;
 #endif                          /* NETSNMP_WITH_OPAQUE_SPECIAL_TYPES */
-        case ASN_OCTET_STR:
         case ASN_IPADDRESS:
+            if (vp->val_len != 4)
+                return -1;
+            /* fallthrough */
+        case ASN_OCTET_STR:
         case ASN_OPAQUE:
         case ASN_NSAP:
             if (vp->val_len < sizeof(vp->buf)) {
@@ -4532,12 +4606,16 @@
             if (vp->val.string == NULL) {
                 return -1;
             }
-            asn_parse_string(var_val, &len, &vp->type, vp->val.string,
+            p = asn_parse_string(var_val, &len, &vp->type, vp->val.string,
                              &vp->val_len);
+            if (!p)
+                return -1;
             break;
         case ASN_OBJECT_ID:
             vp->val_len = MAX_OID_LEN;
-            asn_parse_objid(var_val, &len, &vp->type, objid, &vp->val_len);
+            p = asn_parse_objid(var_val, &len, &vp->type, objid, &vp->val_len);
+            if (!p)
+                return -1;
             vp->val_len *= sizeof(oid);
             vp->val.objid = (oid *) malloc(vp->val_len);
             if (vp->val.objid == NULL) {
@@ -4555,8 +4633,10 @@
             if (vp->val.bitstring == NULL) {
                 return -1;
             }
-            asn_parse_bitstring(var_val, &len, &vp->type,
+            p = asn_parse_bitstring(var_val, &len, &vp->type,
                                 vp->val.bitstring, &vp->val_len);
+            if (!p)
+                return -1;
             break;
         default:
             snmp_log(LOG_ERR, "bad type returned (%x)\n", vp->type);
@@ -4607,17 +4687,6 @@
     }
 
     /*
-     * check that it agrees with engineID returned from USM above
-     * * only a warning because this could be legal if we are a proxy
-     */
-    if (pdu->securityEngineIDLen != pdu->contextEngineIDLen ||
-        memcmp(pdu->securityEngineID, pdu->contextEngineID,
-               pdu->securityEngineIDLen) != 0) {
-        DEBUGMSGTL(("scopedPDU_parse",
-                    "inconsistent engineID information in message\n"));
-    }
-
-    /*
      * parse contextName from scopedPdu
      */
     tmp_buf_len = SNMP_MAX_CONTEXT_SIZE;
@@ -4784,16 +4853,6 @@
             return 0; /* s_snmp_errno already set */
     }
 
-    /*
-     * check to see if we need to create a v3 user from the session info
-     */
-    if (create_user_from_session(session) != SNMPERR_SUCCESS) {
-        session->s_snmp_errno = SNMPERR_UNKNOWN_USER_NAME;  /* XX?? */
-        DEBUGMSGTL(("snmp_api",
-                    "snmp_send(): failed(2) to create a new user from session\n"));
-        return 0;
-    }
-
     if ((pktbuf = (u_char *)malloc(2048)) == NULL) {
         DEBUGMSGTL(("sess_async_send",
                     "couldn't malloc initial packet buffer\n"));
@@ -4814,8 +4873,10 @@
      */
     if (pdu->variables == NULL) {
         switch (pdu->command) {
-        case SNMP_MSG_GET:
+#ifndef NETSNMP_NO_WRITE_SUPPORT
         case SNMP_MSG_SET:
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
+        case SNMP_MSG_GET:
         case SNMP_MSG_GETNEXT:
         case SNMP_MSG_GETBULK:
         case SNMP_MSG_RESPONSE:
@@ -4874,7 +4935,7 @@
     if (pdu->version == SNMP_VERSION_3 && session->sndMsgMaxSize != 0 && length > session->sndMsgMaxSize) {
         DEBUGMSGTL(("sess_async_send",
                     "length of packet (%lu) exceeds session maximum (%lu)\n",
-                    length, session->sndMsgMaxSize));
+                    (unsigned long)length, (unsigned long)session->sndMsgMaxSize));
         session->s_snmp_errno = SNMPERR_TOO_LONG;
         SNMP_FREE(pktbuf);
         return 0;
@@ -4888,36 +4949,21 @@
     if (transport->msgMaxSize != 0 && length > transport->msgMaxSize) {
         DEBUGMSGTL(("sess_async_send",
                     "length of packet (%lu) exceeds transport maximum (%lu)\n",
-                    length, transport->msgMaxSize));
+                    (unsigned long)length, (unsigned long)transport->msgMaxSize));
         session->s_snmp_errno = SNMPERR_TOO_LONG;
         SNMP_FREE(pktbuf);
         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.  
      */
 
-    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);
 
@@ -4943,7 +4989,7 @@
             return 0;
         }
 
-        gettimeofday(&tv, (struct timezone *) 0);
+        netsnmp_get_monotonic_clock(&tv);
         rp->pdu = pdu;
         rp->request_id = pdu->reqid;
         rp->message_id = pdu->msgid;
@@ -4955,11 +5001,11 @@
         } else {
             rp->timeout = session->timeout;
         }
-        rp->time = tv;
+        rp->timeM = tv;
         tv.tv_usec += rp->timeout;
         tv.tv_sec += tv.tv_usec / 1000000L;
         tv.tv_usec %= 1000000L;
-        rp->expire = tv;
+        rp->expireM = tv;
 
         /*
          * XX lock should be per session ! 
@@ -5020,7 +5066,7 @@
  * Frees the variable and any malloc'd data associated with it.
  */
 void
-snmp_free_var(netsnmp_variable_list * var)
+snmp_free_var_internals(netsnmp_variable_list * var)
 {
     if (!var)
         return;
@@ -5037,7 +5083,12 @@
             SNMP_FREE(var->data);
         }
     }
+}
 
+void
+snmp_free_var(netsnmp_variable_list * var)
+{
+    snmp_free_var_internals(var);
     free((char *) var);
 }
 
@@ -5146,20 +5197,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, "");
   }
 
   /*
@@ -5169,9 +5212,7 @@
   if (isp->hook_pre) {
     if (isp->hook_pre(sp, transport, opaque, olength) == 0) {
       DEBUGMSGTL(("sess_process_packet", "pre-parse fail\n"));
-      if (opaque != NULL) {
-	SNMP_FREE(opaque);
-      }
+      SNMP_FREE(opaque);
       return -1;
     }
   }
@@ -5181,20 +5222,28 @@
   } else {
     pdu = snmp_create_sess_pdu(transport, opaque, olength);
   }
+
   if (pdu == NULL) {
     snmp_log(LOG_ERR, "pdu failed to be created\n");
-    if (opaque != NULL) {
-      SNMP_FREE(opaque);
-    }
+    SNMP_FREE(opaque);
     return -1;
   }
 
+  /* if the transport was a magic tunnel, mark the PDU as having come
+     through one. */
+  if (transport->flags & NETSNMP_TRANSPORT_FLAG_TUNNELED) {
+      pdu->flags |= UCD_MSG_FLAG_TUNNELED;
+  }
+
   if (isp->hook_parse) {
     ret = isp->hook_parse(sp, pdu, packetptr, length);
   } else {
     ret = snmp_parse(sessp, sp, pdu, packetptr, length);
   }
 
+  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"));
   }
@@ -5262,7 +5311,9 @@
 	 * msgId must match for v3 messages.  
 	 */
 	if (rp->message_id != pdu->msgid) {
-	  continue;
+            DEBUGMSGTL(("sess_process_packet", "unmatched msg id: %ld != %ld\n",
+                        rp->message_id, pdu->msgid));
+	    continue;
 	}
 
 	/*
@@ -5360,19 +5411,14 @@
 	/*
 	 * Successful, so delete request.  
 	 */
-	if (isp->requests == rp) {
-	  isp->requests = rp->next_request;
-	  if (isp->requestsEnd == rp) {
-	    isp->requestsEnd = NULL;
-	  }
-	} else {
+	if (orp)
 	  orp->next_request = rp->next_request;
-	  if (isp->requestsEnd == rp) {
-	    isp->requestsEnd = orp;
-	  }
-	}
+        else
+	  isp->requests = rp->next_request;
+        if (isp->requestsEnd == rp)
+	  isp->requestsEnd = orp;
 	snmp_free_pdu(rp->pdu);
-	free((char *) rp);
+	free(rp);
 	/*
 	 * There shouldn't be any more requests with the same reqid.  
 	 */
@@ -5437,10 +5483,21 @@
 void
 snmp_read(fd_set * fdset)
 {
+    netsnmp_large_fd_set lfdset;
+
+    netsnmp_large_fd_set_init(&lfdset, FD_SETSIZE);
+    netsnmp_copy_fd_set_to_large_fd_set(&lfdset, fdset);
+    snmp_read2(&lfdset);
+    netsnmp_large_fd_set_cleanup(&lfdset);
+}
+
+void
+snmp_read2(netsnmp_large_fd_set * fdset)
+{
     struct session_list *slp;
     snmp_res_lock(MT_LIBRARY_ID, MT_LIB_SESSION);
     for (slp = Sessions; slp; slp = slp->next) {
-        snmp_sess_read((void *) slp, fdset);
+        snmp_sess_read2((void *) slp, fdset);
     }
     snmp_res_unlock(MT_LIBRARY_ID, MT_LIB_SESSION);
 }
@@ -5452,7 +5509,7 @@
  * Beware recursive send maybe inside snmp_read callback function. 
  */
 int
-_sess_read(void *sessp, fd_set * fdset)
+_sess_read(void *sessp, netsnmp_large_fd_set * fdset)
 {
     struct session_list *slp = (struct session_list *) sessp;
     netsnmp_session *sp = slp ? slp->session : NULL;
@@ -5474,10 +5531,11 @@
         return 0; 
     }
 
-    if (!fdset || !(FD_ISSET(transport->sock, fdset))) {
+    if (!fdset || !(NETSNMP_LARGE_FD_ISSET(transport->sock, fdset))) {
         DEBUGMSGTL(("sess_read", "not reading %d (fdset %p set %d)\n",
                     transport->sock, fdset,
-                    fdset ? FD_ISSET(transport->sock, fdset) : -9));
+                    fdset ? NETSNMP_LARGE_FD_ISSET(transport->sock, fdset)
+		    : -9));
         return 0;
     }
 
@@ -5564,8 +5622,8 @@
              * We have no saved packet.  Allocate one.  
              */
             if ((isp->packet = (u_char *) malloc(rxbuf_len)) == NULL) {
-                DEBUGMSGTL(("sess_read", "can't malloc %d bytes for rxbuf\n",
-                            rxbuf_len));
+                DEBUGMSGTL(("sess_read", "can't malloc %" NETSNMP_PRIz
+                            "u bytes for rxbuf\n", rxbuf_len));
                 return 0;
             } else {
                 rxbuf = isp->packet;
@@ -5585,7 +5643,8 @@
                                        isp->packet_len + rxbuf_len);
                 if (newbuf == NULL) {
                     DEBUGMSGTL(("sess_read",
-                                "can't malloc %d more for rxbuf (%d tot)\n",
+                                "can't malloc %" NETSNMP_PRIz
+                                "u more for rxbuf (%" NETSNMP_PRIz "u tot)\n",
                                 rxbuf_len, isp->packet_len + rxbuf_len));
                     return 0;
                 } else {
@@ -5600,25 +5659,35 @@
         }
     } else {
         if ((rxbuf = (u_char *) malloc(rxbuf_len)) == NULL) {
-            DEBUGMSGTL(("sess_read", "can't malloc %d bytes for rxbuf\n",
-                        rxbuf_len));
+            DEBUGMSGTL(("sess_read", "can't malloc %" NETSNMP_PRIz
+                        "u bytes for rxbuf\n", rxbuf_len));
             return 0;
         }
     }
 
-    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;
         sp->s_errno = errno;
         snmp_set_detail(strerror(errno));
         SNMP_FREE(rxbuf);
-        if (opaque != NULL) {
-            SNMP_FREE(opaque);
-        }
+        SNMP_FREE(opaque);
         return -1;
     }
 
+    if (0 == length && transport->flags & NETSNMP_TRANSPORT_FLAG_EMPTY_PKT) {
+        /* this allows for a transport that needs to return from
+         * packet processing that doesn't necessarily have any
+         * consumable data in it. */
+
+        /* reset the flag since it's a per-message flag */
+        transport->flags &= (~NETSNMP_TRANSPORT_FLAG_EMPTY_PKT);
+
+        return 0;
+    }
+
     /*
      * Remote end closed connection.  
      */
@@ -5638,9 +5707,7 @@
         DEBUGMSGTL(("sess_read", "fd %d closed\n", transport->sock));
         transport->f_close(transport);
         SNMP_FREE(isp->packet);
-        if (opaque != NULL) {
-            SNMP_FREE(opaque);
-        }
+        SNMP_FREE(opaque);
         return -1;
     }
 
@@ -5662,10 +5729,11 @@
                 pdulen = asn_check_packet(pptr, isp->packet_len);
             }
 
-            DEBUGMSGTL(("sess_read", "  loop packet_len %d, PDU length %d\n",
-                        isp->packet_len, pdulen));
-             
-            if ((pdulen > MAX_PACKET_LENGTH) || (pdulen < 0)) {
+            DEBUGMSGTL(("sess_read",
+                        "  loop packet_len %" NETSNMP_PRIz "u, PDU length %"
+                        NETSNMP_PRIz "u\n", isp->packet_len, pdulen));
+
+            if (pdulen > MAX_PACKET_LENGTH) {
                 /*
                  * Illegal length, drop the connection.  
                  */
@@ -5679,9 +5747,7 @@
 		}
 		DEBUGMSGTL(("sess_read", "fd %d closed\n", transport->sock));
                 transport->f_close(transport);
-                if (opaque != NULL) {
-                    SNMP_FREE(opaque);
-                }
+                SNMP_FREE(opaque);
                 /** XXX-rks: why no SNMP_FREE(isp->packet); ?? */
                 return -1;
             }
@@ -5694,15 +5760,14 @@
                  * start, simply return and wait for more data to arrive.
                  */
                 DEBUGMSGTL(("sess_read",
-                            "pkt not complete (need %d got %d so far)\n",
-                            pdulen, isp->packet_len));
+                            "pkt not complete (need %" NETSNMP_PRIz "u got %"
+                            NETSNMP_PRIz "u so far)\n", pdulen,
+                            isp->packet_len));
 
                 if (pptr != isp->packet)
                     break; /* opaque freed for us outside of loop. */
 
-                if (opaque != NULL) {
-                    SNMP_FREE(opaque);
-                }
+                SNMP_FREE(opaque);
                 return 0;
             }
 
@@ -5751,17 +5816,16 @@
 	    of the opaque pointer, so we still need to free() the opaque
 	    pointer itself.  */
 
-	if (opaque != NULL) {
-	    SNMP_FREE(opaque);
-	}
+	SNMP_FREE(opaque);
 
         if (isp->packet_len >= MAXIMUM_PACKET_SIZE) {
             /*
              * Obviously this should never happen!  
              */
             snmp_log(LOG_ERR,
-                     "too large packet_len = %lu, dropping connection %d\n",
-                     (unsigned long)(isp->packet_len), transport->sock);
+                     "too large packet_len = %" NETSNMP_PRIz
+                     "u, dropping connection %d\n",
+                     isp->packet_len, transport->sock);
             transport->f_close(transport);
             /** XXX-rks: why no SNMP_FREE(isp->packet); ?? */
             return -1;
@@ -5773,7 +5837,6 @@
              * footprint down.
              */
             SNMP_FREE(isp->packet);
-            isp->packet = NULL;
             isp->packet_size = 0;
             isp->packet_len = 0;
             return rc;
@@ -5787,9 +5850,11 @@
          */
 
         memmove(isp->packet, pptr, isp->packet_len);
-        DEBUGMSGTL(("sess_read", "end: memmove(%p, %p, %d); realloc(%p, %d)\n",
-                    isp->packet, pptr, isp->packet_len, isp->packet,
-                    isp->packet_len));
+        DEBUGMSGTL(("sess_read",
+                    "end: memmove(%p, %p, %" NETSNMP_PRIz "u); realloc(%p, %"
+                    NETSNMP_PRIz "u)\n",
+                    isp->packet, pptr, isp->packet_len,
+		    isp->packet, isp->packet_len));
 
         if ((rxbuf = (u_char *)realloc(isp->packet, isp->packet_len)) == NULL) {
             /*
@@ -5819,6 +5884,19 @@
 int
 snmp_sess_read(void *sessp, fd_set * fdset)
 {
+  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_read2(sessp, &lfdset);
+  netsnmp_large_fd_set_cleanup(&lfdset);
+  return rc;
+}
+
+int
+snmp_sess_read2(void *sessp, netsnmp_large_fd_set * fdset)
+{
     struct session_list *psl;
     netsnmp_session *pss;
     int             rc;
@@ -5833,7 +5911,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.
@@ -5854,55 +5932,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);
 }
 
-/*
- * 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_select_info2(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(NULL, numfds, fdset, timeout, block);
+}
+
+/**
+ * @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)
+{
+    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_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\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,
+		       struct timeval *timeout, int *block)
+{
+    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) {
@@ -5933,18 +6077,19 @@
             *numfds = (slp->transport->sock + 1);
         }
 
-        FD_SET(slp->transport->sock, fdset);
+        NETSNMP_LARGE_FD_SET(slp->transport->sock, fdset);
         if (slp->internal != NULL && slp->internal->requests) {
             /*
              * Found another session with outstanding requests.  
              */
             requests++;
             for (rp = slp->internal->requests; rp; rp = rp->next_request) {
-                if ((!timerisset(&earliest)
-                     || (timercmp(&rp->expire, &earliest, <)))) {
-                    earliest = rp->expire;
-                    DEBUGMSG(("verbose:sess_select","(to in %d.%d sec) ",
-                               earliest.tv_sec, earliest.tv_usec));
+                if (!timerisset(&earliest)
+                    || (timerisset(&rp->expireM)
+                        && timercmp(&rp->expireM, &earliest, <))) {
+                    earliest = rp->expireM;
+                    DEBUGMSG(("verbose:sess_select","(to in %d.%06d sec) ",
+                               (int)earliest.tv_sec, (int)earliest.tv_usec));
                 }
             }
         }
@@ -5959,10 +6104,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.%d sec\n",
-                   delta.tv_sec, delta.tv_usec));
+    netsnmp_get_monotonic_clock(&now);
+
+    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) {
         /*
@@ -5973,53 +6123,20 @@
         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",
-                   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",
+                       (long) 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.%d sec\n",
-                   earliest.tv_sec, earliest.tv_usec));
+        DEBUGMSGT(("verbose:sess_select","timer due in %d.%06d sec\n",
+                   (int)earliest.tv_sec, (int)earliest.tv_usec));
     }
 
     /*
@@ -6027,8 +6144,8 @@
      */
     if ((*block || (timercmp(&earliest, timeout, <)))) {
         DEBUGMSGT(("verbose:sess_select",
-                   "setting timer to %d.%d sec, clear block (was %d)\n",
-                   earliest.tv_sec, earliest.tv_usec, *block));
+                   "setting timer to %d.%06d sec, clear block (was %d)\n",
+                   (int)earliest.tv_sec, (int)earliest.tv_usec, *block));
         *timeout = earliest;
         *block = 0;
     }
@@ -6124,32 +6241,16 @@
          * This should never happen.  
          */
         DEBUGMSGTL(("sess_resend", "encoding failure\n"));
-        if (pktbuf != NULL) {
-            SNMP_FREE(pktbuf);
-        }
+        SNMP_FREE(pktbuf);
         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, "");
-    }
-
-    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
@@ -6158,7 +6259,7 @@
 
     if (pktbuf != NULL) {
         SNMP_FREE(pktbuf);
-        pktbuf = packet = NULL;
+        packet = NULL;
     }
 
     if (result < 0) {
@@ -6167,13 +6268,13 @@
         snmp_set_detail(strerror(errno));
         return -1;
     } else {
-        gettimeofday(&now, (struct timezone *) 0);
+        netsnmp_get_monotonic_clock(&now);
         tv = now;
-        rp->time = tv;
+        rp->timeM = tv;
         tv.tv_usec += rp->timeout;
         tv.tv_sec += tv.tv_usec / 1000000L;
         tv.tv_usec %= 1000000L;
-        rp->expire = tv;
+        rp->expireM = tv;
     }
     return 0;
 }
@@ -6199,7 +6300,7 @@
         return;
     }
 
-    gettimeofday(&now, (struct timezone *) 0);
+    netsnmp_get_monotonic_clock(&now);
 
     /*
      * For each request outstanding, check to see if it has expired.
@@ -6213,7 +6314,7 @@
             freeme = NULL;
         }
 
-        if ((timercmp(&rp->expire, &now, <))) {
+        if ((timercmp(&rp->expireM, &now, <))) {
             if ((sptr = find_sec_mod(rp->pdu->securityModel)) != NULL &&
                 sptr->pdu_timeout != NULL) {
                 /*
@@ -6241,18 +6342,13 @@
                     callback(NETSNMP_CALLBACK_OP_TIMED_OUT, sp,
                              rp->pdu->reqid, rp->pdu, magic);
                 }
-                if (isp->requests == rp) {
-                    isp->requests = rp->next_request;
-                    if (isp->requestsEnd == rp) {
-                        isp->requestsEnd = NULL;
-                    }
-                } else {
+                if (orp)
                     orp->next_request = rp->next_request;
-                    if (isp->requestsEnd == rp) {
-                        isp->requestsEnd = orp;
-                    }
-                }
-                snmp_free_pdu(rp->pdu); /* FIX  rp is already free'd! */
+                else
+                    isp->requests = rp->next_request;
+                if (isp->requestsEnd == rp)
+                    isp->requestsEnd = orp;
+                snmp_free_pdu(rp->pdu);
                 freeme = rp;
                 continue;       /* don't update orp below */
             } else {
@@ -6505,6 +6601,7 @@
     return 0;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_OID_IS_SUBTREE
 /** Identical to netsnmp_oid_equals, except only the length up to len1 is compared.
  * Functionally, this determines if in_name2 is equal or a subtree of in_name1
  * @param in_name1 A pointer to the first oid.
@@ -6525,6 +6622,7 @@
 
     return 0;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_OID_IS_SUBTREE */
 
 /** Given two OIDs, determine the common prefix to them both.
  * @param in_name1 A pointer to the first oid.
@@ -6609,7 +6707,7 @@
 snmp_pdu_add_variable(netsnmp_pdu *pdu,
                       const oid * name,
                       size_t name_length,
-                      u_char type, const u_char * value, size_t len)
+                      u_char type, const void * value, size_t len)
 {
     return snmp_varlist_add_variable(&pdu->variables, name, name_length,
                                      type, value, len);
@@ -6623,7 +6721,7 @@
 snmp_varlist_add_variable(netsnmp_variable_list ** varlist,
                           const oid * name,
                           size_t name_length,
-                          u_char type, const u_char * value, size_t len)
+                          u_char type, const void * value, size_t len)
 {
     netsnmp_variable_list *vars, *vtmp;
     int rc;
@@ -6641,7 +6739,7 @@
     if (( 0 != rc ) ||
         (name != NULL && snmp_set_var_objid(vars, name, name_length))) {
         snmp_free_var(vars);
-        return (0);
+        return NULL;
     }
 
     /*
@@ -6789,7 +6887,7 @@
             break;
 #endif /* NETSNMP_DISABLE_MIB_LOADING */
         snmp_pdu_add_variable(pdu, name, name_length, ASN_INTEGER,
-                              (u_char *) & ltmp, sizeof(ltmp));
+                              &ltmp, sizeof(ltmp));
         break;
 
     case 'u':
@@ -6803,7 +6901,7 @@
         ltmp = strtoul(value, &ecp, 10);
         if (*value && !*ecp)
             snmp_pdu_add_variable(pdu, name, name_length, ASN_UNSIGNED,
-                                  (u_char *) & ltmp, sizeof(ltmp));
+                                  &ltmp, sizeof(ltmp));
         else
             goto fail;
         break;
@@ -6819,7 +6917,7 @@
         ltmp = strtoul(value, &ecp, 10);
         if (*value && !*ecp)
             snmp_pdu_add_variable(pdu, name, name_length, ASN_UINTEGER,
-                                  (u_char *) & ltmp, sizeof(ltmp));
+                                  &ltmp, sizeof(ltmp));
         else
             goto fail;
         break;
@@ -6835,7 +6933,7 @@
         ltmp = strtoul(value, &ecp, 10);
         if (*value && !*ecp)
             snmp_pdu_add_variable(pdu, name, name_length, ASN_COUNTER,
-                                  (u_char *) & ltmp, sizeof(ltmp));
+                                  &ltmp, sizeof(ltmp));
         else
             goto fail;
         break;
@@ -6850,7 +6948,7 @@
 #endif /* NETSNMP_DISABLE_MIB_LOADING */
         if (read64(&c64tmp, value))
             snmp_pdu_add_variable(pdu, name, name_length, ASN_COUNTER64,
-                                  (u_char *) & c64tmp, sizeof(c64tmp));
+                                  &c64tmp, sizeof(c64tmp));
         else
             goto fail;
         break;
@@ -6866,7 +6964,7 @@
         ltmp = strtoul(value, &ecp, 10);
         if (*value && !*ecp)
             snmp_pdu_add_variable(pdu, name, name_length, ASN_TIMETICKS,
-                                  (u_char *) & ltmp, sizeof(long));
+                                  &ltmp, sizeof(long));
         else
             goto fail;
         break;
@@ -6882,7 +6980,7 @@
         atmp = inet_addr(value);
         if (atmp != (in_addr_t) -1 || !strcmp(value, "255.255.255.255"))
             snmp_pdu_add_variable(pdu, name, name_length, ASN_IPADDRESS,
-                                  (u_char *) & atmp, sizeof(atmp));
+                                  &atmp, sizeof(atmp));
         else
             goto fail;
         break;
@@ -6900,9 +6998,8 @@
         } else {
             tint = MAX_OID_LEN;
             if (snmp_parse_oid(value, (oid *) buf, &tint)) {
-                snmp_pdu_add_variable(pdu, name, name_length,
-                                      ASN_OBJECT_ID, buf,
-                                      sizeof(oid) * tint);
+                snmp_pdu_add_variable(pdu, name, name_length, ASN_OBJECT_ID,
+                                      buf, sizeof(oid) * tint);
             } else {
                 result = snmp_errno;    /*MTCRITICAL_RESOURCE */
             }
@@ -6920,8 +7017,8 @@
         }
 	if ('s' == type && do_hint && !parse_octet_hint(tp->hint, value, &hintptr, &itmp)) {
             if (_check_range(tp, itmp, &result, "Value does not match DISPLAY-HINT")) {
-                snmp_pdu_add_variable(pdu, name, name_length,
-                                      ASN_OCTET_STR, hintptr, itmp);
+                snmp_pdu_add_variable(pdu, name, name_length, ASN_OCTET_STR,
+                                      hintptr, itmp);
             }
             SNMP_FREE(hintptr);
             hintptr = buf;
@@ -6958,7 +7055,7 @@
         break;
 
     case 'n':
-        snmp_pdu_add_variable(pdu, name, name_length, ASN_NULL, 0, 0);
+        snmp_pdu_add_variable(pdu, name, name_length, ASN_NULL, NULL, 0);
         break;
 
     case 'b':
@@ -7033,7 +7130,7 @@
     case 'U':
         if (read64(&c64tmp, value))
             snmp_pdu_add_variable(pdu, name, name_length, ASN_OPAQUE_U64,
-                                  (u_char *) & c64tmp, sizeof(c64tmp));
+                                  &c64tmp, sizeof(c64tmp));
         else
             goto fail;
         break;
@@ -7041,7 +7138,7 @@
     case 'I':
         if (read64(&c64tmp, value))
             snmp_pdu_add_variable(pdu, name, name_length, ASN_OPAQUE_I64,
-                                  (u_char *) & c64tmp, sizeof(c64tmp));
+                                  &c64tmp, sizeof(c64tmp));
         else
             goto fail;
         break;
@@ -7049,16 +7146,15 @@
     case 'F':
         if (sscanf(value, "%f", &ftmp) == 1)
             snmp_pdu_add_variable(pdu, name, name_length, ASN_OPAQUE_FLOAT,
-                                  (u_char *) & ftmp, sizeof(ftmp));
+                                  &ftmp, sizeof(ftmp));
         else
             goto fail;
         break;
 
     case 'D':
         if (sscanf(value, "%lf", &dtmp) == 1)
-            snmp_pdu_add_variable(pdu, name, name_length,
-                                  ASN_OPAQUE_DOUBLE, (u_char *) & dtmp,
-                                  sizeof(dtmp));
+            snmp_pdu_add_variable(pdu, name, name_length, ASN_OPAQUE_DOUBLE,
+                                  &dtmp, sizeof(dtmp));
         else
             goto fail;
         break;
@@ -7259,25 +7355,27 @@
 oid            *
 snmp_duplicate_objid(const oid * objToCopy, size_t objToCopyLen)
 {
-    oid            *returnOid = NULL;
+    oid            *returnOid;
     if (objToCopy != NULL && objToCopyLen != 0) {
         returnOid = (oid *) malloc(objToCopyLen * sizeof(oid));
         if (returnOid) {
-            memmove(returnOid, objToCopy, objToCopyLen * sizeof(oid));
+            memcpy(returnOid, objToCopy, objToCopyLen * sizeof(oid));
         }
-    }
+    } else
+        returnOid = NULL;
     return returnOid;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_STATISTICS
 /*
  * 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];
     }
@@ -7287,7 +7385,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];
     }
@@ -7297,7 +7395,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;
 }
@@ -7307,5 +7405,5 @@
 {
     memset(statistics, 0, sizeof(statistics));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_STATISTICS */
 /**  @} */
-
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 7eee3a1..ab7a58c 100644
--- a/snmplib/snmp_client.c
+++ b/snmplib/snmp_client.c
@@ -40,6 +40,7 @@
  *  @{
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <stdio.h>
 #include <errno.h>
@@ -56,11 +57,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,12 +86,10 @@
 #include <dmalloc.h>
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-
 #include <net-snmp/types.h>
 
+#include <net-snmp/agent/ds_agent.h>
+#include <net-snmp/library/default_store.h>
 #include <net-snmp/library/snmp_api.h>
 #include <net-snmp/library/snmp_client.h>
 #include <net-snmp/library/snmp_secmod.h>
@@ -102,7 +97,14 @@
 #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>
 
+netsnmp_feature_child_of(snmp_client_all, libnetsnmp)
+
+netsnmp_feature_child_of(snmp_split_pdu, snmp_client_all)
+netsnmp_feature_child_of(snmp_reset_var_types, snmp_client_all)
+netsnmp_feature_child_of(query_set_default_session, snmp_client_all)
+netsnmp_feature_child_of(row_create, snmp_client_all)
 
 #ifndef BSD4_3
 #define BSD4_2
@@ -161,6 +163,7 @@
 }
 
 
+#include <net-snmp/library/snmp_debug.h>
 static int
 snmp_synch_input(int op,
                  netsnmp_session * session,
@@ -170,10 +173,14 @@
     int             rpt_type;
 
     if (reqid != state->reqid && pdu && pdu->command != SNMP_MSG_REPORT) {
+        DEBUGMSGTL(("snmp_synch", "Unexpected response (ReqID: %d,%d - Cmd %d)\n",
+                                   reqid, state->reqid, pdu->command ));
         return 0;
     }
 
     state->waiting = 0;
+    DEBUGMSGTL(("snmp_synch", "Response (ReqID: %d - Cmd %d)\n",
+                               reqid, (pdu ? pdu->command : -1)));
 
     if (op == NETSNMP_CALLBACK_OP_RECEIVED_MESSAGE && pdu) {
         if (pdu->command == SNMP_MSG_REPORT) {
@@ -236,11 +243,11 @@
         return 1;
 
     memmove(newvar, var, sizeof(netsnmp_variable_list));
-    newvar->next_variable = 0;
-    newvar->name = 0;
-    newvar->val.string = 0;
-    newvar->data = 0;
-    newvar->dataFreeHook = 0;
+    newvar->next_variable = NULL;
+    newvar->name = NULL;
+    newvar->val.string = NULL;
+    newvar->data = NULL;
+    newvar->dataFreeHook = NULL;
     newvar->index = 0;
 
     /*
@@ -265,9 +272,13 @@
             memmove(newvar->val.string, var->val.string, var->val_len);
         } else {                /* fix the pointer to new local store */
             newvar->val.string = newvar->buf;
+            /*
+             * no need for a memmove, since we copied the whole var
+             * struct (and thus var->buf) at the beginning of this function.
+             */
         }
     } else {
-        newvar->val.string = 0;
+        newvar->val.string = NULL;
         newvar->val_len = 0;
     }
 
@@ -281,9 +292,9 @@
  * Returns 0 if successful, 1 if memory allocation fails.
  */
 int
-snmp_clone_mem(void **dstPtr, void *srcPtr, unsigned len)
+snmp_clone_mem(void **dstPtr, const void *srcPtr, unsigned len)
 {
-    *dstPtr = 0;
+    *dstPtr = NULL;
     if (srcPtr) {
         *dstPtr = malloc(len + 1);
         if (!*dstPtr) {
@@ -343,20 +354,20 @@
 
     newpdu = (netsnmp_pdu *) malloc(sizeof(netsnmp_pdu));
     if (!newpdu)
-        return 0;
+        return NULL;
     memmove(newpdu, pdu, sizeof(netsnmp_pdu));
 
     /*
      * reset copied pointers if copy fails 
      */
-    newpdu->variables = 0;
-    newpdu->enterprise = 0;
-    newpdu->community = 0;
-    newpdu->securityEngineID = 0;
-    newpdu->securityName = 0;
-    newpdu->contextEngineID = 0;
-    newpdu->contextName = 0;
-    newpdu->transport_data = 0;
+    newpdu->variables = NULL;
+    newpdu->enterprise = NULL;
+    newpdu->community = NULL;
+    newpdu->securityEngineID = NULL;
+    newpdu->securityName = NULL;
+    newpdu->contextEngineID = NULL;
+    newpdu->contextName = NULL;
+    newpdu->transport_data = NULL;
 
     /*
      * copy buffers individually. If any copy fails, all are freed. 
@@ -377,7 +388,7 @@
                           pdu->transport_data,
                           pdu->transport_data_length)) {
         snmp_free_pdu(newpdu);
-        return 0;
+        return NULL;
     }
 
     if (pdu != NULL && pdu->securityStateRef &&
@@ -392,6 +403,7 @@
             return 0;
         }
     }
+
     if ((sptr = find_sec_mod(newpdu->securityModel)) != NULL &&
         sptr->pdu_clone != NULL) {
         /*
@@ -433,13 +445,13 @@
             if (newvar)
                 free((char *) newvar);
             snmp_free_varbind(newhead);
-            return 0;
+            return NULL;
         }
 
         /*
          * add cloned variable to new list  
          */
-        if (0 == newhead)
+        if (NULL == newhead)
             newhead = newvar;
         if (oldvar)
             oldvar->next_variable = newvar;
@@ -484,7 +496,7 @@
     int             drop_idx;
 
     if (!newpdu)
-        return 0;               /* where is PDU to copy to ? */
+        return NULL;            /* where is PDU to copy to ? */
 
     if (drop_err)
         drop_idx = pdu->errindex - skip_count;
@@ -551,7 +563,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 *
@@ -582,6 +594,7 @@
  * Returns a pointer to the cloned PDU if successful.
  * Returns 0 if failure.
  */
+#ifndef NETSNMP_FEATURE_REMOVE_SNMP_SPLIT_PDU
 netsnmp_pdu    *
 snmp_split_pdu(netsnmp_pdu *pdu, int skip_count, int copy_count)
 {
@@ -592,6 +605,7 @@
 
     return newpdu;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMP_SPLIT_PDU */
 
 
 /*
@@ -613,18 +627,18 @@
 
     if ((pdu->command != SNMP_MSG_RESPONSE)
         || (pdu->errstat == SNMP_ERR_NOERROR)
-        || (0 == pdu->variables)
-        || (pdu->errindex > snmp_varbind_len(pdu))
+        || (NULL == pdu->variables)
+        || (pdu->errindex > (int)snmp_varbind_len(pdu))
         || (pdu->errindex <= 0)) {
-        return 0;               /* pre-condition tests fail */
+        return NULL;            /* pre-condition tests fail */
     }
 
     newpdu = _clone_pdu(pdu, 1);        /* copies all except errored variable */
     if (!newpdu)
-        return 0;
+        return NULL;
     if (!newpdu->variables) {
         snmp_free_pdu(newpdu);
-        return 0;               /* no variables. "should not happen" */
+        return NULL;            /* no variables. "should not happen" */
     }
     newpdu->command = command;
     newpdu->reqid = snmp_get_next_reqid();
@@ -715,10 +729,8 @@
 snmp_set_var_typed_integer(netsnmp_variable_list * newvar,
                            u_char type, long val)
 {
-    const long v = val;
     newvar->type = type;
-    return snmp_set_var_value(newvar, &v, sizeof(long));
-    return 0;
+    return snmp_set_var_value(newvar, &val, sizeof(long));
 }
 
 int
@@ -732,6 +744,8 @@
     return count;
 }
 
+netsnmp_feature_child_of(count_varbinds_of_type, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_COUNT_VARBINDS_OF_TYPE
 int
 count_varbinds_of_type(netsnmp_variable_list * var_ptr, u_char type)
 {
@@ -743,7 +757,10 @@
 
     return count;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_COUNT_VARBINDS_OF_TYPE */
 
+netsnmp_feature_child_of(find_varind_of_type, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_FIND_VARIND_OF_TYPE
 netsnmp_variable_list *
 find_varbind_of_type(netsnmp_variable_list * var_ptr, u_char type)
 {
@@ -752,10 +769,11 @@
 
     return var_ptr;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_FIND_VARIND_OF_TYPE */
 
 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))
@@ -783,7 +801,7 @@
     if (vars->val.string && vars->val.string != vars->buf) {
         free(vars->val.string);
     }
-    vars->val.string = 0;
+    vars->val.string = NULL;
     vars->val_len = 0;
 
     if (value == NULL && len > 0) {
@@ -794,7 +812,7 @@
     /*
      * use built-in storage for smaller values 
      */
-    if (len <= (sizeof(vars->buf) - 1)) {
+    if (len <= sizeof(vars->buf)) {
         vars->val.string = (u_char *) vars->buf;
         largeval = 0;
     }
@@ -833,7 +851,8 @@
             }
         }
 #endif
-#if defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG != SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG != SIZEOF_INTMAX_T)
+#if defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG != SIZEOF_LONG_LONG)
+#if !defined(SIZEOF_INTMAX_T) || (SIZEOF_LONG_LONG != SIZEOF_INTMAX_T)
         else if (vars->val_len == sizeof(long long)){
             const unsigned long long   *val_ullong
                 = (const unsigned long long *) value;
@@ -844,7 +863,8 @@
             }
         }
 #endif
-#if SIZEOF_LONG != SIZEOF_INTMAX_T
+#endif
+#if defined(SIZEOF_INTMAX_T) && (SIZEOF_LONG != SIZEOF_INTMAX_T)
         else if (vars->val_len == sizeof(intmax_t)){
             const uintmax_t *val_uintmax_t
                 = (const uintmax_t *) value;
@@ -874,7 +894,7 @@
                     = (const char *) value;
                 *(vars->val.integer) = (long) *val_char;
             } else {
-                const u_char    *val_uchar 
+                    const u_char    *val_uchar
                     = (const u_char *) value;
                 *(vars->val.integer) = (unsigned long) *val_uchar;
             }
@@ -911,7 +931,7 @@
     case ASN_BIT_STR:
     case ASN_OPAQUE:
     case ASN_NSAP:
-        if (largeval) {
+        if (vars->val_len >= sizeof(vars->buf)) {
             vars->val.string = (u_char *) malloc(vars->val_len + 1);
         }
         if (vars->val.string == NULL) {
@@ -993,6 +1013,7 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNMP_RESET_VAR_TYPES
 void
 snmp_reset_var_types(netsnmp_variable_list * vbl, u_char new_type)
 {
@@ -1001,6 +1022,7 @@
         vbl = vbl->next_variable;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMP_RESET_VAR_TYPES */
 
 int
 snmp_synch_response_cb(netsnmp_session * ss,
@@ -1034,10 +1056,11 @@
         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, 0, 0, tvp);
+        count = select(numfds, &fdset, NULL, NULL, tvp);
         if (count > 0) {
             snmp_read(&fdset);
         } else {
@@ -1070,7 +1093,7 @@
 
         if ( ss->flags & SNMP_FLAGS_RESP_CALLBACK ) {
             void (*cb)(void);
-            cb = ss->myvoid;
+            cb = (void (*)(void))(ss->myvoid);
             cb();        /* Used to invoke 'netsnmp_check_outstanding_agent_requests();'
                             on internal AgentX queries.  */
         }
@@ -1125,10 +1148,11 @@
         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, 0, 0, tvp);
+        count = select(numfds, &fdset, NULL, NULL, tvp);
         if (count > 0) {
             snmp_sess_read(sessp, &fdset);
         } else
@@ -1205,15 +1229,48 @@
  *  over the specified SNMP session.
  *
  */
+#include <net-snmp/library/snmp_debug.h>
+
 static netsnmp_session *_def_query_session = NULL;
+
+#ifndef NETSNMP_FEATURE_REMOVE_QUERY_SET_DEFAULT_SESSION
 void
 netsnmp_query_set_default_session( netsnmp_session *sess) {
+    DEBUGMSGTL(("iquery", "set default session %p\n", sess));
     _def_query_session = sess;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_QUERY_SET_DEFAULT_SESSION */
 
+/**
+ * Return a pointer to the default internal query session.
+ */
+netsnmp_session *
+netsnmp_query_get_default_session_unchecked( void ) {
+    DEBUGMSGTL(("iquery", "get default session %p\n", _def_query_session));
+    return _def_query_session;
+}
+
+/**
+ * Return a pointer to the default internal query session and log a
+ * warning message once if this session does not exist.
+ */
 netsnmp_session *
 netsnmp_query_get_default_session( void ) {
-    return _def_query_session;
+    static int warning_logged = 0;
+
+    if (! _def_query_session && ! warning_logged) {
+        if (! netsnmp_ds_get_string(NETSNMP_DS_APPLICATION_ID,
+                                    NETSNMP_DS_AGENT_INTERNAL_SECNAME)) {
+            snmp_log(LOG_WARNING,
+                     "iquerySecName has not been configured - internal queries will fail\n");
+        } else {
+            snmp_log(LOG_WARNING,
+                     "default session is not available - internal queries will fail\n");
+        }
+        warning_logged = 1;
+    }
+
+    return netsnmp_query_get_default_session_unchecked();
 }
 
 
@@ -1227,8 +1284,9 @@
     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));
     /*
      * Clone the varbind list into the request PDU...
      */
@@ -1243,6 +1301,7 @@
         snmp_free_pdu(pdu);
         return SNMP_ERR_GENERR;
     }
+    DEBUGMSGTL(("iquery", "query returned %d\n", ret));
 
     /*
      * ....then copy the results back into the
@@ -1252,6 +1311,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.
@@ -1261,30 +1322,39 @@
              *       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"));
+            }
+#ifndef NETSNMP_NO_WRITE_SUPPORT
             if (request != SNMP_MSG_SET &&
                 response->errindex != 0) {
+                DEBUGMSGTL(("iquery", "retrying query (%d, %ld)\n", ret, response->errindex));
                 pdu = snmp_fix_pdu( response, request );
                 snmp_free_pdu( response );
                 response = NULL;
                 if ( pdu != NULL )
                     goto retry;
             }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
         } else {
             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;
                 }
                 vtmp = vb2->next_variable;
-                /* free old data before overwriting */
-                if (vb2->val.string) {
-                    if (vb2->val.string != &vb2->buf[0]) {
-                        free(vb2->val.string);
-                        vb2->val.string = NULL;
-                    }
-                }
+                snmp_free_var_internals( vb2 );
                 snmp_clone_var( vb1, vb2 );
                 vb2->next_variable = vtmp;
             }
@@ -1312,10 +1382,12 @@
 }
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 int netsnmp_query_set(netsnmp_variable_list *list,
                       netsnmp_session       *session){
     return _query( list, SNMP_MSG_SET, session );
 }
+#endif /* !NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * A walk needs a bit more work.
@@ -1371,4 +1443,448 @@
     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;
+}
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+#ifndef NETSNMP_FEATURE_REMOVE_ROW_CREATE
+/** **************************************************************************
+ *
+ * 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;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_ROW_CREATE */
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+
 /** @} */
diff --git a/snmplib/snmp_debug.c b/snmplib/snmp_debug.c
index d1b4538..27ce233 100644
--- a/snmplib/snmp_debug.c
+++ b/snmplib/snmp_debug.c
@@ -1,5 +1,6 @@
 #include <net-snmp/net-snmp-config.h>
 
+#include <limits.h>
 #include <stdio.h>
 #if HAVE_STDLIB_H
 #include <stdlib.h>
@@ -13,14 +14,7 @@
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
-#if HAVE_STDARG_H
 #include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 
 #if HAVE_UNISTD_H
 #include <unistd.h>
@@ -42,51 +36,58 @@
 #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;
-int             debug_num_excluded = 0;
 static int      debug_print_everything = 0;
 
 netsnmp_token_descr dbg_tokens[MAX_DEBUG_TOKENS];
 
-#ifdef NETSNMP_DEBUG_STATS
-netsnmp_container  *dbg_stats = NULL;
- static int _debug_cmp( const void *lhs, const void *rhs );
- static int _save_debug_stat(netsnmp_token_descr *tb, void *type);
- static int _debug_stats_callback(int majorID, int minorID,
-                   void *serverarg, void *clientarg);
-#endif
-
 /*
- * indent debugging:  provide a space padded section to return an indent for 
+ * Number of spaces to indent debug outpur. Valid range is [0,INT_MAX]
  */
-static int      debugindent = 0;
-#define INDENTMAX 80
-static char     debugindentchars[] =
-    "                                                                                ";
+static int debugindent = 0;
 
-char           *
+int
+debug_indent_get(void)
+{
+    return debugindent;
+}
+
+const char*
 debug_indent(void)
 {
-    return debugindentchars;
+#define SPACES "                                        " \
+               "                                        "
+    if ((sizeof(SPACES) - 1) < (unsigned int)debugindent) {
+        snmp_log(LOG_ERR, "Too deep indentation for debug_indent. "
+                 "Consider using \"%%*s\", debug_indent_get(), \"\" instead.");
+        return SPACES;
+    }
+    return SPACES + sizeof(SPACES) - 1 - debugindent;
+#undef SPACES
 }
 
 void
 debug_indent_add(int amount)
 {
-    if (debugindent + amount >= 0 && debugindent + amount < 80) {
-        debugindentchars[debugindent] = ' ';
-        debugindent += amount;
-        debugindentchars[debugindent] = '\0';
-    }
+    if (-debugindent <= amount && amount <= INT_MAX - debugindent)
+	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)
 {
@@ -94,47 +95,13 @@
 }
 
 void
-snmp_debug_init(void)
-{
-    debugindentchars[0] = '\0'; /* zero out the debugging indent array. */
-    /*
-     * Hmmm....
-     *   this "init" routine seems to be called *after* processing
-     *   the command line options.   So we can't clear the debug
-     *   token array here, and will just have to rely on it being
-     *   initialised to 0 automatically.
-     * So much for trying to program responsibly :-)
-     */
-/*  memset(dbg_tokens, 0, MAX_DEBUG_TOKENS*sizeof(struct token_dscr));  */
-    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...]");
-
-#ifdef NETSNMP_DEBUG_STATS
-    /*
-     * debug stats
-     */
-    dbg_stats = netsnmp_container_find("debug_exclude:table_container");
-    if (NULL != dbg_stats) {
-        dbg_stats->compare = _debug_cmp;
-        netsnmp_register_callback(SNMP_CALLBACK_LIBRARY,
-                                  SNMP_CALLBACK_STORE_DATA,
-                                  _debug_stats_callback, dbg_stats, 1024);
-    }
-#endif
-}
-
-void
-debug_register_tokens(char *tokens)
+debug_register_tokens(const char *tokens)
 {
     char           *newp, *cp;
     char           *st = NULL;
     int             status;
 
-    if (tokens == 0 || *tokens == 0)
+    if (tokens == NULL || *tokens == 0)
         return;
 
     newp = strdup(tokens);      /* strtok_r messes it up */
@@ -164,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);
     }
 }
@@ -197,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;
@@ -233,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
@@ -248,21 +213,16 @@
     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 
-         * (unless something might be excluded)
+         * no tokens specified, print everything
          */
-        if (debug_num_excluded) {
-            rc = SNMPERR_SUCCESS; /* ! found = success */
-        } else {
-            return SNMPERR_SUCCESS;
-        }
+        return SNMPERR_SUCCESS;
     }
     else
         rc = SNMPERR_GENERR; /* ! found = err */
@@ -279,53 +239,19 @@
                 return SNMPERR_GENERR; /* excluded */
         }
     }
-
-#ifdef NETSNMP_DEBUG_STATS
-    if ((SNMPERR_SUCCESS == rc) && (NULL != dbg_stats)) {
-        netsnmp_token_descr td, *found;
-
-        td.token_name = token;
-        found = CONTAINER_FIND(dbg_stats, &td);
-        if (NULL == found) {
-            found = SNMP_MALLOC_TYPEDEF(netsnmp_token_descr);
-            netsnmp_assert(NULL != found);
-            found->token_name = strdup(token);
-            netsnmp_assert(0 == found->enabled);
-            CONTAINER_INSERT(dbg_stats, found);
-        }
-        ++found->enabled;
-    /*  snmp_log(LOG_ERR,"tok %s, %d hits\n", token, found->enabled);  */
-    }
-#endif
-
     return rc;
 }
 
 void
-#if HAVE_STDARG_H
 debugmsg(const char *token, const char *format, ...)
-#else
-debugmsg(va_alist)
-     va_dcl
-#endif
 {
-    va_list         debugargs;
-
-#if HAVE_STDARG_H
-    va_start(debugargs, format);
-#else
-    const char     *format;
-    const char     *token;
-
-    va_start(debugargs);
-    token = va_arg(debugargs, const char *);
-    format = va_arg(debugargs, const char *);   /* ??? */
-#endif
-
     if (debug_is_token_registered(token) == SNMPERR_SUCCESS) {
-        snmp_vlog(LOG_DEBUG, format, debugargs);
+	va_list         debugargs;
+
+	va_start(debugargs, format);
+	snmp_vlog(LOG_DEBUG, format, debugargs);
+	va_end(debugargs);
     }
-    va_end(debugargs);
 }
 
 void
@@ -416,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;
                     }
@@ -438,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;
@@ -460,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;
@@ -480,7 +406,7 @@
              * XXnext two lines were DEBUGPRINTINDENT(token);
              */
             sprintf(buf, "dumpx%s", token);
-            debugmsg(buf, "%s: %s", token2, debug_indent());
+            debugmsg(buf, "%s: %*s", token2, debug_indent_get(), "");
             if (sprint_realloc_hexstring
                 (&b3, &b3_len, &o3_len, 1, thedata, incr)) {
                 if (b3 != NULL) {
@@ -500,53 +426,23 @@
 }
 
 void
-#if HAVE_STDARG_H
 debugmsgtoken(const char *token, const char *format, ...)
-#else
-debugmsgtoken(va_alist)
-     va_dcl
-#endif
 {
     va_list         debugargs;
 
-#if HAVE_STDARG_H
     va_start(debugargs, format);
-#else
-    const char     *token;
-
-    va_start(debugargs);
-    token = va_arg(debugargs, const char *);
-#endif
-
     debugmsg(token, "%s: ", token);
-
     va_end(debugargs);
 }
 
 void
-#if HAVE_STDARG_H
 debug_combo_nc(const char *token, const char *format, ...)
-#else
-debug_combo_nc(va_alist)
-     va_dcl
-#endif
 {
     va_list         debugargs;
 
-#if HAVE_STDARG_H
     va_start(debugargs, format);
-#else
-    const char     *format;
-    const char     *token;
-
-    va_start(debugargs);
-    token = va_arg(debugargs, const char *);
-    format = va_arg(debugargs, const char *);   /* ??? */
-#endif
-
     snmp_log(LOG_DEBUG, "%s: ", token);
     snmp_vlog(LOG_DEBUG, format, debugargs);
-
     va_end(debugargs);
 }
 
@@ -565,62 +461,118 @@
     return dodebug;
 }
 
-#ifdef NETSNMP_DEBUG_STATS
-/************************************************************
- * compare two context pointers here. Return -1 if lhs < rhs,
- * 0 if lhs == rhs, and 1 if lhs > rhs.
- */
-static int
-_debug_cmp( const void *lhs, const void *rhs )
-{
-    netsnmp_token_descr *dbg_l = (netsnmp_token_descr *)lhs;
-    netsnmp_token_descr *dbg_r = (netsnmp_token_descr *)rhs;
+#else /* ! NETSNMP_NO_DEBUGGING */
 
- /* snmp_log(LOG_ERR,"%s/%s\n",dbg_l->token_name, dbg_r->token_name); */
-    return strcmp(dbg_l->token_name, dbg_r->token_name);
-}
-
-
-static int
-_save_debug_stat(netsnmp_token_descr *tb, void *type)
-{
-    char buf[256];
-
-    snprintf(buf, sizeof(buf), "debug_hits %s %d",
-             tb->token_name, tb->enabled);
-    read_config_store((char *) type, buf);
-
-    return SNMP_ERR_NOERROR;
-}
-
-static int
-_debug_stats_callback(int majorID, int minorID,
-                  void *serverarg, void *clientarg)
-{
-    char            sep[] =
-        "##############################################################";
-    char            buf[] =
-        "#\n" "# debug stats\n" "#";
-    char           *type = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
-                                                 NETSNMP_DS_LIB_APPTYPE);
-
-    read_config_store((char *) type, sep);
-    read_config_store((char *) type, buf);
-
-    /*
-     * save all rows
-     */
-    CONTAINER_FOR_EACH((netsnmp_container *) clientarg,
-                       (netsnmp_container_obj_func *)
-                       _save_debug_stat, type);
-
-    read_config_store((char *) type, sep);
-    read_config_store((char *) type, "\n");
-
-    /*
-     * never fails 
-     */
-    return SNMPERR_SUCCESS;
-}
+#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..8a6bd38 100644
--- a/snmplib/snmp_enum.c
+++ b/snmplib/snmp_enum.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #ifdef HAVE_STDLIB_H
 #include <stdlib.h>
@@ -20,6 +21,14 @@
 
 #include <net-snmp/library/snmp_enum.h>
 #include <net-snmp/library/tools.h>
+#include <net-snmp/library/snmp_assert.h>
+
+netsnmp_feature_child_of(snmp_enum_all, libnetsnmp)
+
+netsnmp_feature_child_of(se_find_free_value_in_slist, snmp_enum_all)
+netsnmp_feature_child_of(snmp_enum_store_list, snmp_enum_all)
+netsnmp_feature_child_of(snmp_enum_store_slist, snmp_enum_all)
+netsnmp_feature_child_of(snmp_enum_clear, snmp_enum_all)
 
 struct snmp_enum_list_str {
     char           *name;
@@ -30,7 +39,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 +49,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 +67,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 +83,7 @@
          */
         return SE_NOMEM;
     }
-
+    netsnmp_assert(NULL != snmp_enum_lists);
 
     if (snmp_enum_lists[major][minor] != NULL)
         ret = SE_ALREADY_THERE;
@@ -177,6 +185,7 @@
     read_config_store(type, line);
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SNMP_ENUM_STORE_LIST
 void
 se_store_list(unsigned int major, unsigned int minor, const char *type)
 {
@@ -185,12 +194,14 @@
     snprintf(token, sizeof(token), "%d:%d", major, minor);
     se_store_enum_list(se_find_list(major, minor), token, type);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMP_ENUM_STORE_LIST */
 
 struct snmp_enum_list *
 se_find_list(unsigned int major, unsigned int minor)
 {
     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 +268,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) {
@@ -329,18 +341,19 @@
     return (se_find_label_in_list(se_find_slist(listname), value));
 }
 
-
 int
 se_find_value_in_slist(const char *listname, const char *label)
 {
     return (se_find_value_in_list(se_find_slist(listname), label));
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_SE_FIND_FREE_VALUE_IN_SLIST
 int
 se_find_free_value_in_slist(const char *listname)
 {
     return (se_find_free_value_in_list(se_find_slist(listname)));
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SE_FIND_FREE_VALUE_IN_SLIST */
 
 int
 se_add_pair_to_slist(const char *listname, char *label, int value)
@@ -425,12 +438,7 @@
     return;
 }
 
-void
-se_clear_slist(const char *listname)
-{
-    se_clear_list(se_find_slist_ptr(listname));
-}
-
+#ifndef NETSNMP_FEATURE_REMOVE_SNMP_ENUM_STORE_SLIST
 void
 se_store_slist(const char *listname, const char *type)
 {
@@ -447,6 +455,14 @@
     se_store_slist((char *)clientargs, appname);
     return SNMPERR_SUCCESS;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_SNMP_ENUM_STORE_SLIST */
+
+#ifndef NETSNMP_FEATURE_REMOVE_SNMP_ENUM_CLEAR
+void
+se_clear_slist(const char *listname)
+{
+    se_clear_list(se_find_slist_ptr(listname));
+}
 
 void
 se_clear_all_lists(void)
@@ -456,24 +472,4 @@
     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 */
+#endif /* NETSNMP_FEATURE_REMOVE_SNMP_ENUM_CLEAR */
diff --git a/snmplib/snmp_logging.c b/snmplib/snmp_logging.c
index 7a0ddb2..a2cd55a 100644
--- a/snmplib/snmp_logging.c
+++ b/snmplib/snmp_logging.c
@@ -18,6 +18,7 @@
  *  @{
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <stdio.h>
 #if HAVE_MALLOC_H
 #include <malloc.h>
@@ -42,11 +43,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
@@ -59,11 +56,7 @@
 #include <netinet/in.h>
 #endif
 
-#if HAVE_STDARG_H
 #include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
 
 #if HAVE_UNISTD_H
 #include <unistd.h>
@@ -72,14 +65,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 */
@@ -100,19 +85,57 @@
 #endif
 #endif
 
+netsnmp_feature_child_of(logging_all, libnetsnmp)
+
+netsnmp_feature_child_of(logging_outputs, logging_all)
+netsnmp_feature_child_of(logging_file, logging_outputs)
+netsnmp_feature_child_of(logging_stdio, logging_outputs)
+netsnmp_feature_child_of(logging_syslog, logging_outputs)
+netsnmp_feature_child_of(logging_external, logging_all)
+
+netsnmp_feature_child_of(enable_stderrlog, logging_all)
+
+netsnmp_feature_child_of(logging_enable_calllog, netsnmp_unused)
+netsnmp_feature_child_of(logging_enable_loghandler, netsnmp_unused)
+
+/* default to the file/stdio/syslog set */
+netsnmp_feature_want(logging_outputs)
+
 /*
  * logh_head:  A list of all log handlers, in increasing order of priority
  * logh_priorities:  'Indexes' into this list, by priority
  */
 netsnmp_log_handler *logh_head = NULL;
 netsnmp_log_handler *logh_priorities[LOG_DEBUG+1];
+static int  logh_enabled = 0;
 
-static int      newline = 1;	 /* MTCRITICAL_RESOURCE */
-
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 static char syslogname[64] = DEFAULT_LOG_ID;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
 void
+netsnmp_disable_this_loghandler(netsnmp_log_handler *logh)
+{
+    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;
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
+void
 netsnmp_enable_filelog(netsnmp_log_handler *logh, int dont_zero_log);
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
 
 #ifndef HAVE_VSNPRINTF
                 /*
@@ -123,10 +146,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
@@ -140,6 +175,7 @@
 /*
  * These definitions handle 4.2 systems without additional syslog facilities.
  */
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 #ifndef LOG_CONS
 #define LOG_CONS	0       /* Don't bother if not defined... */
 #endif
@@ -176,6 +212,27 @@
 #ifndef LOG_USER
 #define LOG_USER	0
 #endif
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
+
+/* Set line buffering mode for a stream. */
+void
+netsnmp_set_line_buffering(FILE *stream)
+{
+#if defined(WIN32)
+    /*
+     * According to MSDN, the Microsoft Visual Studio C runtime library does
+     * not support line buffering, so turn off buffering completely.
+     * See also http://msdn.microsoft.com/en-us/library/86cebhfs(VS.71).aspx.
+     */
+    setvbuf(stream, NULL, _IONBF, BUFSIZ);
+#elif defined(HAVE_SETLINEBUF)
+    /* setlinefunction() is a function from the BSD Unix API. */
+    setlinebuf(stream);
+#else
+    /* See also the C89 or C99 standard for more information about setvbuf(). */
+    setvbuf(stream, NULL, _IOLBF, BUFSIZ);
+#endif
+}
 
 /*
  * Decodes log priority.
@@ -251,6 +308,7 @@
     return pri_low;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 int
 decode_facility( char *optarg )
 {
@@ -285,6 +343,7 @@
         return -1;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
 int
 snmp_log_options(char *optarg, int argc, char *const *argv)
@@ -305,6 +364,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;
@@ -318,7 +379,7 @@
     /*
      * and '.... "-Lx value" ....'  (*with* the quotes)
      */
-    while (*optarg && isspace(*optarg)) {
+    while (*optarg && isspace((unsigned char)(*optarg))) {
         optarg++;
     }
     /*
@@ -336,8 +397,10 @@
         inc_optind = 1;
     }
 
+    DEBUGMSGT(("logging:options", "*cp: '%c'\n", *cp));
     switch (*cp) {
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
     /*
      * Log to Standard Error
      */
@@ -350,6 +413,7 @@
     case 'e':
         logh = netsnmp_register_loghandler(NETSNMP_LOGHANDLER_STDERR, priority);
         if (logh) {
+            netsnmp_set_line_buffering(stderr);
             logh->pri_max = pri_max;
             logh->token   = strdup("stderr");
 	}
@@ -367,11 +431,13 @@
     case 'o':
         logh = netsnmp_register_loghandler(NETSNMP_LOGHANDLER_STDERR, priority);
         if (logh) {
+            netsnmp_set_line_buffering(stdout);
             logh->pri_max = pri_max;
             logh->token   = strdup("stdout");
             logh->imagic  = 1;	    /* stdout, not stderr */
 	}
         break;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
 
     /*
      * Log to a named file
@@ -381,6 +447,7 @@
         if (priority == -1 || !argv)  return -1;
         optarg = argv[++optind];
         /* Fallthrough */
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
     case 'f':
         if (inc_optind)
             optind++;
@@ -397,7 +464,9 @@
                                                           NETSNMP_DS_LIB_APPEND_LOGFILES));
 	}
         break;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
     /*
      * Log to syslog
      */
@@ -424,11 +493,12 @@
             int facility = decode_facility(optarg);
             if (facility == -1)  return -1;
             logh->pri_max = pri_max;
-            logh->token   = strdup(snmp_log_syslogname(0));
+            logh->token   = strdup(snmp_log_syslogname(NULL));
             logh->magic   = (void *)(intptr_t)facility;
-	    snmp_enable_syslog_ident(snmp_log_syslogname(0), facility);
+	    snmp_enable_syslog_ident(snmp_log_syslogname(NULL), facility);
 	}
         break;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
     /*
      * Don't log 
@@ -460,6 +530,7 @@
     return 0;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 char *
 snmp_log_syslogname(const char *pstr)
 {
@@ -468,20 +539,29 @@
 
   return syslogname;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
 void
 snmp_log_options_usage(const char *lead, FILE * outf)
 {
     const char *pri1_msg = " for level 'pri' and above";
     const char *pri2_msg = " for levels 'p1' to 'p2'";
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
     fprintf(outf, "%se:           log to standard error\n", lead);
     fprintf(outf, "%so:           log to standard output\n", lead);
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
     fprintf(outf, "%sn:           don't log at all\n", lead);
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
     fprintf(outf, "%sf file:      log to the specified file\n", lead);
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
     fprintf(outf, "%ss facility:  log to syslog (via the specified facility)\n", lead);
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
     fprintf(outf, "\n%s(variants)\n", lead);
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
     fprintf(outf, "%s[EON] pri:   log to standard error, output or /dev/null%s\n", lead, pri1_msg);
     fprintf(outf, "%s[EON] p1-p2: log to standard error, output or /dev/null%s\n", lead, pri2_msg);
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
     fprintf(outf, "%s[FS] pri token:    log to file/syslog%s\n", lead, pri1_msg);
     fprintf(outf, "%s[FS] p1-p2 token:  log to file/syslog%s\n", lead, pri2_msg);
 }
@@ -495,11 +575,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);
 }
 
 
@@ -520,6 +596,7 @@
     return sbuf;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 void
 snmp_disable_syslog_entry(netsnmp_log_handler *logh)
 {
@@ -537,7 +614,7 @@
     logh->imagic  = 0;
 #endif
 
-    logh->enabled = 0;
+    netsnmp_disable_this_loghandler(logh);
 }
 
 void
@@ -549,7 +626,9 @@
         if (logh->enabled && logh->type == NETSNMP_LOGHANDLER_SYSLOG)
             snmp_disable_syslog_entry(logh);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
 void
 snmp_disable_filelog_entry(netsnmp_log_handler *logh)
 {
@@ -561,9 +640,11 @@
         fclose((FILE*)logh->magic);
         logh->magic   = NULL;
     }
-    logh->enabled = 0;
+    netsnmp_disable_this_loghandler(logh);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
 void
 snmp_disable_filelog(void)
 {
@@ -573,7 +654,9 @@
         if (logh->enabled && logh->type == NETSNMP_LOGHANDLER_FILE)
             snmp_disable_filelog_entry(logh);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
 /*
  * returns that status of stderr logging
  *
@@ -602,10 +685,12 @@
     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);
 	}
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_ENABLE_CALLLOG
 void
 snmp_disable_calllog(void)
 {
@@ -613,9 +698,10 @@
 
     for (logh = logh_head; logh; logh = logh->next)
         if (logh->enabled && logh->type == NETSNMP_LOGHANDLER_CALLBACK) {
-            logh->enabled = 0;
+            netsnmp_disable_this_loghandler(logh);
 	}
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_ENABLE_CALLLOG */
 
 void
 snmp_disable_log(void)
@@ -623,11 +709,15 @@
     netsnmp_log_handler *logh;
 
     for (logh = logh_head; logh; logh = logh->next) {
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
         if (logh->type == NETSNMP_LOGHANDLER_SYSLOG)
             snmp_disable_syslog_entry(logh);
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
         if (logh->type == NETSNMP_LOGHANDLER_FILE)
             snmp_disable_filelog_entry(logh);
-        logh->enabled = 0;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
+        netsnmp_disable_this_loghandler(logh);
     }
 }
 
@@ -639,15 +729,20 @@
 netsnmp_logging_restart(void)
 {
     netsnmp_log_handler *logh;
+    int doneone = 0;
 
     for (logh = logh_head; logh; logh = logh->next) {
         if (0 == logh->enabled)
             continue;
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
         if (logh->type == NETSNMP_LOGHANDLER_SYSLOG) {
             snmp_disable_syslog_entry(logh);
             snmp_enable_syslog_ident(logh->token,(int)(intptr_t)logh->magic);
+            doneone = 1;
         }
-        else if (logh->type == NETSNMP_LOGHANDLER_FILE) {
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
+        if (logh->type == NETSNMP_LOGHANDLER_FILE && !doneone) {
             snmp_disable_filelog_entry(logh);
             /** hmm, don't zero status isn't saved.. i think it's
              * safer not to overwrite, in case a hup is just to
@@ -655,15 +750,17 @@
              */
             netsnmp_enable_filelog(logh, 1);
         }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
     }
 }
 
 /* ================================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 void
 snmp_enable_syslog(void)
 {
-    snmp_enable_syslog_ident(snmp_log_syslogname(0), LOG_DAEMON);
+    snmp_enable_syslog_ident(snmp_log_syslogname(NULL), LOG_DAEMON);
 }
 
 void
@@ -698,7 +795,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;
 	}
 
@@ -709,11 +809,16 @@
             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);
         }
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
 void
 netsnmp_enable_filelog(netsnmp_log_handler *logh, int dont_zero_log)
 {
@@ -724,21 +829,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;
-#ifdef WIN32
-        /*
-         * Apparently, "line buffering" under Windows is
-         *  actually implemented as "full buffering".
-         *  Let's try turning off buffering completely.
-         */
-        setvbuf(logfile, NULL, _IONBF, BUFSIZ);
-#else
-        setvbuf(logfile, NULL, _IOLBF, BUFSIZ);
-#endif
+        netsnmp_set_line_buffering(logfile);
     }
-    logh->enabled = 1;
+    netsnmp_enable_this_loghandler(logh);
 }
 
 void
@@ -770,8 +868,11 @@
                 netsnmp_enable_filelog(logh, dont_zero_log);
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_ENABLE_STDERRLOG
+/* used in the perl modules and ip-mib/ipv4InterfaceTable/ipv4InterfaceTable_subagent.c */
 void
 snmp_enable_stderrlog(void)
 {
@@ -781,7 +882,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;
         }
 
@@ -792,8 +893,9 @@
             logh->token    = strdup("stderr");
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_ENABLE_STDERRLOG */
 
-
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_ENABLE_CALLLOG
 void
 snmp_enable_calllog(void)	/* XXX - or take a callback routine ??? */
 {
@@ -802,7 +904,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;
 	}
 
@@ -813,7 +915,7 @@
             logh->token    = strdup("callback");
     }
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_ENABLE_CALLLOG */
 
 
 /* ==================================================== */
@@ -891,22 +993,31 @@
     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:
         logh->imagic  = 1;
         /* fallthrough */
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
     case NETSNMP_LOGHANDLER_STDERR:
         logh->handler = log_handler_stdouterr;
         break;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
     case NETSNMP_LOGHANDLER_FILE:
         logh->handler = log_handler_file;
         logh->imagic  = 1;
         break;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
     case NETSNMP_LOGHANDLER_SYSLOG:
         logh->handler = log_handler_syslog;
         break;
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
     case NETSNMP_LOGHANDLER_CALLBACK:
         logh->handler = log_handler_callback;
         break;
@@ -918,12 +1029,13 @@
         return NULL;
     }
     logh->priority = priority;
-    logh->enabled  = 1;
+    netsnmp_enable_this_loghandler(logh);
     netsnmp_add_loghandler( logh );
     return logh;
 }
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_ENABLE_LOGHANDLER
 int
 netsnmp_enable_loghandler( const char *token )
 {
@@ -932,7 +1044,7 @@
     logh = netsnmp_find_loghandler( token );
     if (!logh)
         return 0;
-    logh->enabled = 1;
+    netsnmp_enable_this_loghandler(logh);
     return 1;
 }
 
@@ -945,9 +1057,10 @@
     logh = netsnmp_find_loghandler( token );
     if (!logh)
         return 0;
-    logh->enabled = 0;
+    netsnmp_disable_this_loghandler(logh);
     return 1;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_ENABLE_LOGHANDLER */
 
 int
 netsnmp_remove_loghandler( netsnmp_log_handler *logh )
@@ -974,9 +1087,12 @@
 
 /* ==================================================== */
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
 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, 
@@ -985,7 +1101,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);
@@ -994,8 +1115,10 @@
 
     return 1;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG
 #ifdef WIN32
 int
 log_handler_syslog(  netsnmp_log_handler* logh, int pri, const char *str)
@@ -1079,8 +1202,10 @@
     return 1;
 }
 #endif /* !WIN32 */
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_SYSLOG */
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_FILE
 int
 log_handler_file(    netsnmp_log_handler* logh, int pri, const char *str)
 {
@@ -1117,6 +1242,7 @@
     logh->imagic = str[strlen(str) - 1] == '\n';
     return 1;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_FILE */
 
 int
 log_handler_callback(netsnmp_log_handler* logh, int pri, const char *str)
@@ -1151,17 +1277,37 @@
 void
 snmp_log_string(int priority, const char *str)
 {
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
+    static int stderr_enabled = 0;
+    static netsnmp_log_handler lh = { 1, 0, 0, 0, "stderr",
+                                      log_handler_stdouterr, 0, NULL,  NULL,
+                                      NULL };
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
     netsnmp_log_handler *logh;
 
     /*
      * 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) {
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
+        if (!stderr_enabled) {
+            ++stderr_enabled;
+            netsnmp_set_line_buffering(stderr);
+        }
+        log_handler_stdouterr( &lh, priority, str );
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
+
+        return;
     }
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_STDIO
+    else if (stderr_enabled) {
+        stderr_enabled = 0;
+        log_handler_stdouterr( &lh, LOG_INFO,
+                               "Log handling defined - disabling stderr\n" );
+    }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_STDIO */
+        
 
     /*
      * Start at the given priority, and work "upwards"....
@@ -1274,25 +1420,11 @@
  * @see snmp_vlog
  */
 int
-#if HAVE_STDARG_H
 snmp_log(int priority, const char *format, ...)
-#else
-snmp_log(va_alist)
-     va_dcl
-#endif
 {
     va_list         ap;
     int             ret;
-#if HAVE_STDARG_H
     va_start(ap, format);
-#else
-    int             priority;
-    const char     *format;
-    va_start(ap);
-
-    priority = va_arg(ap, int);
-    format = va_arg(ap, const char *);
-#endif
     ret = snmp_vlog(priority, format, ap);
     va_end(ap);
     return (ret);
@@ -1318,11 +1450,13 @@
     }
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_LOGGING_EXTERNAL
 /* external access to logh_head variable */
 netsnmp_log_handler  *
 get_logh_head(void)
 {
 	return logh_head;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_LOGGING_EXTERNAL */
 
 /**  @} */
diff --git a/snmplib/snmp_openssl.c b/snmplib/snmp_openssl.c
new file mode 100644
index 0000000..3b0eaa8
--- /dev/null
+++ b/snmplib/snmp_openssl.c
@@ -0,0 +1,879 @@
+/*
+ * snmp_openssl.c
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/net-snmp-features.h>
+
+#if defined(NETSNMP_USE_OPENSSL) && defined(HAVE_LIBSSL) && !defined(NETSNMP_FEATURE_REMOVE_CERT_UTIL)
+
+netsnmp_feature_require(container_free_all)
+
+netsnmp_feature_child_of(openssl_cert_get_subjectAltNames, netsnmp_unused)
+netsnmp_feature_child_of(openssl_ht2nid, netsnmp_unused)
+netsnmp_feature_child_of(openssl_err_log, netsnmp_unused)
+netsnmp_feature_child_of(cert_dump_names, netsnmp_unused)
+
+#include <ctype.h>
+
+#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 */
+    if (have_started_already)
+        return;
+    have_started_already = 1;
+
+    DEBUGMSGTL(("snmp_openssl", "initializing\n"));
+
+    /* Initializing OpenSSL */
+    SSL_library_init();
+    SSL_load_error_strings();
+    ERR_load_BIO_strings();
+    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);
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_CERT_DUMP_NAMES
+/** 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)));
+    }
+}
+#endif /* NETSNMP_FEATURE_REMOVE_CERT_DUMP_NAMES */
+
+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;
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_OPENSSL_CERT_GET_SUBJECTALTNAMES
+/** netsnmp_openssl_cert_get_subjectAltName: get subjectAltName for cert.
+ * if a pointer to a buffer and its length are specified, they will be
+ * used. otherwise, a new buffer will be allocated, which the caller will
+ * 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);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_OPENSSL_CERT_GET_SUBJECTALTNAMES */
+
+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;
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_OPENSSL_HT2NID
+int
+_ht2nid(int ht)
+{
+    if ((ht < 0) || (ht > NS_HASH_MAX))
+        return 0;
+    return _htmap[ht];
+}
+#endif /* NETSNMP_FEATURE_REMOVE_OPENSSL_HT2NID */
+
+/**
+ * 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;
+
+#ifdef HAVE_EVP_SHA224
+        case NS_HASH_SHA224:
+            digest = EVP_sha224();
+            break;
+
+        case NS_HASH_SHA256:
+            digest = EVP_sha256();
+            break;
+
+#endif
+#ifdef HAVE_EVP_SHA384
+        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);
+}
+
+
+#ifndef NETSNMP_FEATURE_REMOVE_OPENSSL_ERR_LOG
+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));
+    }
+}
+#endif /* NETSNMP_FEATURE_REMOVE_OPENSSL_ERR_LOG */
+
+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 && !defined(NETSNMP_FEATURE_REMOVE_CERT_UTIL) */
diff --git a/snmplib/snmp_parse_args.c b/snmplib/snmp_parse_args.c
index a003995..6842d0e 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,31 +190,27 @@
                                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 
      */
     snmp_sess_init(session);
-    strcpy(Opts, "Y:VhHm:M:O:I:P:D:dv:r:t:c:Z:e:E:n:u:l:x:X:a:A:p:T:-:3:s:S:L:");
+    strcpy(Opts, "Y:VhHm:M:O:I:P:D:dv:r:t:c:Z:e:E:n:u:l:x:X:a:A:p:T:-:3:L:");
     if (localOpts) {
         if (strlen(localOpts) + strlen(Opts) >= sizeof(Opts)) {
             snmp_log(LOG_ERR, "Too many localOpts in snmp_parse_args()\n");
@@ -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 = atoi(optarg) * 1000000L;
-            if (session->timeout < 0 || !isdigit(optarg[0])) {
+            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,11 +552,12 @@
                 fprintf(stderr,
                         "Invalid security level specified after -l flag: %s\n",
                         optarg);
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
 
             break;
 
+#ifdef NETSNMP_SECMOD_USM
         case 'a':
 #ifndef NETSNMP_DISABLE_MD5
             if (!strcasecmp(optarg, "MD5")) {
@@ -546,7 +572,7 @@
                 fprintf(stderr,
                         "Invalid authentication protocol specified after -a flag: %s\n",
                         optarg);
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
             break;
 
@@ -571,7 +597,7 @@
                 fprintf(stderr,
                       "Invalid privacy protocol specified after -x flag: %s\n",
                         optarg);
-                return (-1);
+                return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             }
             break;
 
@@ -583,7 +609,7 @@
 		    sp++;
 		} else {
 		    fprintf(stderr, "malloc failure processing -A flag.\n");
-		    return -1;
+		    return NETSNMP_PARSE_ARGS_ERROR;
 		}
 	    } else {
 		Apsz = optarg;
@@ -598,16 +624,17 @@
 		    sp++;
 		} else {
 		    fprintf(stderr, "malloc failure processing -X flag.\n");
-		    return -1;
+		    return NETSNMP_PARSE_ARGS_ERROR;
 		}
 	    } else {
 		Xpsz = optarg;
 	    }
             break;
 #endif                          /* SNMPV3_CMD_OPTIONS */
+#endif /* NETSNMP_SECMOD_USM */
 
         case '?':
-            return (-1);
+            return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
             break;
 
         default:
@@ -617,9 +644,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 +682,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
@@ -668,6 +692,9 @@
         }
     }
 
+#ifdef NETSNMP_SECMOD_USM
+    /* XXX: this should ideally be moved to snmpusm.c somehow */
+
     /*
      * make master key from pass phrases 
      */
@@ -706,7 +733,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,15 +772,17 @@
             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);
         }
     }
+#endif /* NETSNMP_SECMOD_USM */
+
     /*
      * get the hostname 
      */
     if (optind == argc) {
         fprintf(stderr, "No hostname specified.\n");
-        return (-1);
+        return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
     }
     session->peername = argv[optind++]; /* hostname */
 
@@ -787,7 +816,7 @@
                     session->community_len = 0;
                 } else {
                     fprintf(stderr, "No community name specified.\n");
-                    return (-1);
+                    return (NETSNMP_PARSE_ARGS_ERROR_USAGE);
                 }
 	    }
 	} else {
@@ -799,3 +828,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..9e60a42 100644
--- a/snmplib/snmp_secmod.c
+++ b/snmplib/snmp_secmod.c
@@ -30,7 +30,9 @@
 #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>
+
+#include <net-snmp/net-snmp-features.h>
 
 static struct snmp_secmod_list *registered_services = NULL;
 
@@ -51,6 +53,11 @@
 #include "snmpsm_init.h"
 }
 
+void
+shutdown_secmod(void)
+{
+    #include "snmpsm_shutdown.h"
+}
 
 int
 register_sec_mod(int secmod, const char *modname,
@@ -99,6 +106,8 @@
     return SNMPERR_SUCCESS;
 }
 
+netsnmp_feature_child_of(unregister_sec_mod, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_UNREGISTER_SEC_MOD
 int
 unregister_sec_mod(int secmod)
 {
@@ -121,6 +130,7 @@
      */
     return SNMPERR_GENERR;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UNREGISTER_SEC_MOD */
 
 void            
 clear_sec_mod(void)
@@ -153,6 +163,19 @@
     return NULL;
 }
 
+/* try to pick a reasonable security module default based on what was
+   compiled into the net-snmp package */
+#ifdef USM_SEC_MODEL_NUMBER
+#define NETSNMP_SECMOD_DEFAULT_MODEL  USM_SEC_MODEL_NUMBER
+#elif defined(TSM_SEC_MODEL_NUMBER)
+#define NETSNMP_SECMOD_DEFAULT_MODEL  TSM_SEC_MODEL_NUMBER
+#elif defined(KSM_SEC_MODEL_NUMBER)
+#define NETSNMP_SECMOD_DEFAULT_MODEL  KSM_SEC_MODEL_NUMBER
+#else
+/* else we give up and leave it blank */
+#define NETSNMP_SECMOD_DEFAULT_MODEL  -1
+#endif
+
 static int
 set_default_secmod(int major, int minor, void *serverarg, void *clientarg)
 {
@@ -172,11 +195,11 @@
                 snmp_log(LOG_ERR,
                          "unknown security model name: %s.  Forcing USM instead.\n",
                          cptr);
-                sess->securityModel = USM_SEC_MODEL_NUMBER;
+                sess->securityModel = NETSNMP_SECMOD_DEFAULT_MODEL;
                 return SNMPERR_GENERR;
             }
         } else {
-            sess->securityModel = USM_SEC_MODEL_NUMBER;
+            sess->securityModel = NETSNMP_SECMOD_DEFAULT_MODEL;
         }
     }
     return SNMPERR_SUCCESS;
diff --git a/snmplib/snmp_service.c b/snmplib/snmp_service.c
index 2f53b76..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);
@@ -68,7 +68,7 @@
     if (run && strcmp(run->application, application) == 0) {
       if (run->domain != NULL) {
           destroy_word_array(run->domain);
-	  run->domain=NULL;
+	  run->domain = NULL;
 	  res = 1;
       }
     } else {
@@ -120,12 +120,8 @@
     {
         char* cp = copy_nword(cptr, application, len);
         if (cp == NULL) {
-            char tmpbuf[STRINGMAX];
-            snprintf(tmpbuf, sizeof(tmpbuf),
-                     "No domain(s) in registration of defDomain \"%s\"",
-                     application);
-            tmpbuf[sizeof(tmpbuf) - 1] = '\0';
-            config_perror(tmpbuf);
+            netsnmp_config_error("No domain(s) in registration of "
+                                 "defDomain \"%s\"", application);
             free(application);
             return;
         }
@@ -320,22 +316,15 @@
     {
 	char* cp = copy_nword(cptr, application, len);
         if (cp == NULL) {
-            char tmpbuf[STRINGMAX];
-            snprintf(tmpbuf, sizeof(tmpbuf),
-                     "No domain and target in registration of "
-                     "defTarget \"%s\"", application);
-            tmpbuf[sizeof(tmpbuf) - 1] = '\0';
-            config_perror(tmpbuf);
+            netsnmp_config_error("No domain and target in registration of "
+                                 "defTarget \"%s\"", application);
             goto done;
         }
 	cp = copy_nword(cp, domain, len);
         if (cp == NULL) {
-            char tmpbuf[STRINGMAX];
-            snprintf(tmpbuf, sizeof(tmpbuf),
-                     "No target in registration of defTarget \"%s\" \"%s\"",
-                     application, domain);
-            tmpbuf[sizeof(tmpbuf) - 1] = '\0';
-            config_perror(tmpbuf);
+            netsnmp_config_error("No target in registration of "
+                                 "defTarget \"%s\" \"%s\"",
+                                 application, domain);
             goto done;
         }
 	cp = copy_nword(cp, target, len);
diff --git a/snmplib/snmp_transport.c b/snmplib/snmp_transport.c
index fe0affe..ada4781 100644
--- a/snmplib/snmp_transport.c
+++ b/snmplib/snmp_transport.c
@@ -1,4 +1,8 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmp_transport.h>
 
 #include <stdio.h>
 #if HAVE_STRING_H
@@ -12,6 +16,8 @@
 #include <stdlib.h>
 #endif
 
+#include <ctype.h>
+
 #if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
@@ -22,10 +28,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>
@@ -33,6 +43,15 @@
 #ifdef NETSNMP_TRANSPORT_TCP_DOMAIN
 #include <net-snmp/library/snmpTCPDomain.h>
 #endif
+#ifdef NETSNMP_TRANSPORT_DTLSUDP_DOMAIN
+#include <net-snmp/library/snmpDTLSUDPDomain.h>
+#endif
+#ifdef NETSNMP_TRANSPORT_SSH_DOMAIN
+#include <net-snmp/library/snmpSSHDomain.h>
+#endif
+#ifdef NETSNMP_TRANSPORT_ALIAS_DOMAIN
+#include <net-snmp/library/snmpAliasDomain.h>
+#endif
 #ifdef NETSNMP_TRANSPORT_IPX_DOMAIN
 #include <net-snmp/library/snmpIPXDomain.h>
 #endif
@@ -50,7 +69,13 @@
 #endif
 #include <net-snmp/library/snmp_api.h>
 #include <net-snmp/library/snmp_service.h>
+#include <net-snmp/library/read_config.h>
 
+netsnmp_feature_child_of(transport_all, libnetsnmp)
+
+netsnmp_feature_child_of(tdomain_support, transport_all)
+netsnmp_feature_child_of(tdomain_transport_oid, transport_all)
+netsnmp_feature_child_of(sockaddr_size, transport_all)
 
 /*
  * Our list of supported transport domains.  
@@ -80,20 +105,32 @@
 static void     netsnmp_tdomain_dump(void);
 
 
+
+void
+init_snmp_transport(void)
+{
+    netsnmp_ds_register_config(ASN_BOOLEAN,
+                               "snmp", "dontLoadHostConfig",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_DONT_LOAD_HOST_FILES);
+}
+
 /*
  * Make a deep copy of an netsnmp_transport.  
  */
-
 netsnmp_transport *
 netsnmp_transport_copy(netsnmp_transport *t)
 {
     netsnmp_transport *n = NULL;
 
-    n = (netsnmp_transport *) malloc(sizeof(netsnmp_transport));
+    if (t == NULL) {
+        return NULL;
+    }
+
+    n = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
     if (n == NULL) {
         return NULL;
     }
-    memset(n, 0, sizeof(netsnmp_transport));
 
     if (t->domain != NULL) {
         n->domain = t->domain;
@@ -147,10 +184,17 @@
     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;
+    n->base_transport = netsnmp_transport_copy(t->base_transport);
 
+    /* give the transport a chance to do "special things" */
+    if (t->f_copy)
+        t->f_copy(t, n);
+                
     return n;
 }
 
@@ -162,20 +206,128 @@
     if (NULL == t)
         return;
 
-    if (t->local != NULL) {
-        SNMP_FREE(t->local);
-    }
-    if (t->remote != NULL) {
-        SNMP_FREE(t->remote);
-    }
-    if (t->data != NULL) {
-        SNMP_FREE(t->data);
-    }
+    SNMP_FREE(t->local);
+    SNMP_FREE(t->remote);
+    SNMP_FREE(t->data);
+    netsnmp_transport_free(t->base_transport);
+
     SNMP_FREE(t);
 }
 
+/*
+ * 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;
+}
+
+#ifndef NETSNMP_FEATURE_REMOVE_SOCKADDR_SIZE
+int
+netsnmp_sockaddr_size(struct sockaddr *sa)
+{
+    if (NULL == sa)
+        return 0;
+
+    switch (sa->sa_family) {
+        case AF_INET:
+            return sizeof(struct sockaddr_in);
+        break;
+#ifdef NETSNMP_ENABLE_IPV6
+        case AF_INET6:
+            return sizeof(struct sockaddr_in6);
+            break;
+#endif
+    }
+
+    return 0;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_SOCKADDR_SIZE */
+    
+int
+netsnmp_transport_send(netsnmp_transport *t, void *packet, int length,
+                       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;
+}
+
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_TDOMAIN_SUPPORT
 int
 netsnmp_tdomain_support(const oid * in_oid,
                         size_t in_len,
@@ -194,35 +346,17 @@
     }
     return 0;
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_TDOMAIN_SUPPORT */
 
 
 void
 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_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
+
+/* include the configure generated list of constructor calls */
+#include "transports/snmp_transport_inits.h"
+
     netsnmp_tdomain_dump();
 }
 
@@ -290,6 +424,8 @@
 
 
 
+netsnmp_feature_child_of(tdomain_unregister, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_TDOMAIN_UNREGISTER
 int
 netsnmp_tdomain_unregister(netsnmp_tdomain *n)
 {
@@ -310,6 +446,7 @@
         return 0;
     }
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDOMAIN_UNREGISTER */
 
 
 static netsnmp_tdomain *
@@ -330,6 +467,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.
@@ -344,8 +497,8 @@
     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];
+    char **lspec = 0;
 
     DEBUGMSGTL(("tdomain",
                 "tdomain_transport_full(\"%s\", \"%s\", %d, \"%s\", \"%s\")\n",
@@ -353,12 +506,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);
@@ -386,7 +588,21 @@
             DEBUGMSGTL(("tdomain",
                         "Use user specified default domain \"%s\"\n",
                         default_domain));
-            match = find_tdomain(default_domain);
+            if (!strchr(default_domain, ','))
+                match = find_tdomain(default_domain);
+            else {
+                int commas = 0;
+                const char *cp = default_domain;
+                char *dup = strdup(default_domain);
+
+                while (*++cp) if (*cp == ',') commas++;
+                lspec = calloc(commas+2, sizeof(char *));
+                commas = 1;
+                lspec[0] = strtok(dup, ",");
+                while ((lspec[commas++] = strtok(NULL, ",")))
+                    ;
+                spec = (const char * const *)lspec;
+            }
         } else {
             spec = netsnmp_lookup_default_domains(application);
             if (spec == NULL) {
@@ -426,12 +642,19 @@
                         "default address \"%s\"\n",
                         match->prefix[0], addr ? addr : "[NIL]",
                         addr2 ? addr2 : "[NIL]"));
-            if (match->f_create_from_tstring)
+            if (match->f_create_from_tstring) {
+                NETSNMP_LOGONCE((LOG_WARNING,
+                                 "transport domain %s uses deprecated f_create_from_tstring\n",
+                                 match->prefix[0]));
                 t = match->f_create_from_tstring(addr, local);
+            }
             else
                 t = match->f_create_from_tstring_new(addr, local, addr2);
             if (t) {
-                curfilename = prev_curfilename;
+                if (lspec) {
+                    free(lspec[0]);
+                    free(lspec);
+                }
                 return t;
             }
         }
@@ -443,7 +666,10 @@
     }
     if (!any_found)
         snmp_log(LOG_ERR, "No support for any checked transport domain\n");
-    curfilename = prev_curfilename;
+    if (lspec) {
+        free(lspec[0]);
+        free(lspec);
+    }
     return NULL;
 }
 
@@ -457,6 +683,7 @@
 }
 
 
+#ifndef NETSNMP_FEATURE_REMOVE_TDOMAIN_TRANSPORT_OID
 netsnmp_transport *
 netsnmp_tdomain_transport_oid(const oid * dom,
                               size_t dom_len,
@@ -481,6 +708,7 @@
     snmp_log(LOG_ERR, "No support for requested transport domain\n");
     return NULL;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TDOMAIN_TRANSPORT_OID */
 
 netsnmp_transport*
 netsnmp_transport_open(const char* application, const char* str, int local)
@@ -546,3 +774,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/snmp_version.c b/snmplib/snmp_version.c
index 4866dda..7d34c0d 100644
--- a/snmplib/snmp_version.c
+++ b/snmplib/snmp_version.c
@@ -5,10 +5,10 @@
 #ifndef UCD_COMPATIBLE
 static
 #endif
-const char     *NetSnmpVersionInfo = "5.4.4";
+const char     *NetSnmpVersionInfo = PACKAGE_VERSION;
 
 const char     *
-netsnmp_get_version()
+netsnmp_get_version(void)
 {
     return NetSnmpVersionInfo;
 }
diff --git a/snmplib/snmpksm.c b/snmplib/snmpksm.c
index 3ce2802..7d30612 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
@@ -73,6 +66,12 @@
 #define TICKET_CLIENT(x)	(x)->enc_part2->client
 #endif				/* NETSNMP_USE_KERBEROS_HEIMDAL */
 
+#if HAVE_ET_COM_ERR_H
+#include <et/com_err.h>
+#elif HAVE_COM_ERR_H
+#include <com_err.h>
+#endif
+
 #include <net-snmp/output_api.h>
 #include <net-snmp/config_api.h>
 #include <net-snmp/utilities.h>
@@ -107,6 +106,24 @@
 static void     ksm_increment_ref_count(long);
 static struct ksm_cache_entry *ksm_get_cache(long);
 
+#if !defined(HAVE_KRB5_AUTH_CON_GETSENDSUBKEY) /* Heimdal */
+
+krb5_error_code krb5_auth_con_getsendsubkey(krb5_context context,
+				krb5_auth_context auth_context, 
+				krb5_keyblock **keyblock)
+{
+    return krb5_auth_con_getlocalsubkey(context, auth_context, keyblock);
+}
+
+krb5_error_code krb5_auth_con_getrecvsubkey(krb5_context context,
+				krb5_auth_context auth_context, 
+				krb5_keyblock **keyblock)
+{
+    return krb5_auth_con_getremotesubkey(context, auth_context, keyblock);
+}
+
+#endif
+
 #define HASHSIZE	64
 
 /*
@@ -239,7 +256,11 @@
     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);
+}
+
+void shutdown_ksm(void)
+{
 }
 
 /*
@@ -588,15 +609,15 @@
          */
 
         if (ksm_state)
-            retcode = krb5_auth_con_getremotesubkey(kcontext, auth_context,
+            retcode = krb5_auth_con_getrecvsubkey(kcontext, auth_context,
                                                     &subkey);
         else
-            retcode = krb5_auth_con_getlocalsubkey(kcontext, auth_context,
+            retcode = krb5_auth_con_getsendsubkey(kcontext, auth_context,
                                                    &subkey);
 
         if (retcode) {
             DEBUGMSGTL(("ksm",
-                        "KSM: krb5_auth_con_getlocalsubkey failed: %s\n",
+                        "KSM: krb5_auth_con_getsendsubkey failed: %s\n",
                         error_message(retcode)));
             snmp_set_detail(error_message(retcode));
             retval = SNMPERR_KRB5;
@@ -825,13 +846,13 @@
 
     if (!subkey) {
         if (ksm_state)
-            retcode = krb5_auth_con_getremotesubkey(kcontext, auth_context,
+            retcode = krb5_auth_con_getrecvsubkey(kcontext, auth_context,
                                                     &subkey);
         else
-            retcode = krb5_auth_con_getlocalsubkey(kcontext, auth_context,
+            retcode = krb5_auth_con_getsendsubkey(kcontext, auth_context,
                                                    &subkey);
         if (retcode) {
-            DEBUGMSGTL(("ksm", "krb5_auth_con_getlocalsubkey failed: %s\n",
+            DEBUGMSGTL(("ksm", "krb5_auth_con_getsendsubkey failed: %s\n",
                         error_message(retcode)));
             snmp_set_detail(error_message(retcode));
             retval = SNMPERR_KRB5;
@@ -1504,7 +1525,7 @@
         }
 
         retcode =
-            krb5_auth_con_getremotesubkey(kcontext, auth_context, &subkey);
+            krb5_auth_con_getrecvsubkey(kcontext, auth_context, &subkey);
 
         if (retcode) {
             DEBUGMSGTL(("ksm", "KSM remote subkey retrieval failed: %s\n",
@@ -1561,7 +1582,7 @@
         DEBUGMSGTL(("ksm", "KSM: krb5_rd_rep() decoded successfully.\n"));
 
         retcode =
-            krb5_auth_con_getlocalsubkey(kcontext, auth_context, &subkey);
+            krb5_auth_con_getsendsubkey(kcontext, auth_context, &subkey);
 
         if (retcode) {
             DEBUGMSGTL(("ksm", "Unable to retrieve local subkey: %s\n",
diff --git a/snmplib/snmptsm.c b/snmplib/snmptsm.c
new file mode 100644
index 0000000..42de682
--- /dev/null
+++ b/snmplib/snmptsm.c
@@ -0,0 +1,625 @@
+/*
+ * 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 are passed up
+ * by the transport underneath.  The RFC describing this security
+ * model is RFC5591.
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/net-snmp-features.h>
+#include <net-snmp/net-snmp-includes.h>
+
+#include <net-snmp/library/snmptsm.h>
+
+#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
+
+netsnmp_feature_require(snmpv3_probe_contextEngineID_rfc5343)
+netsnmp_feature_require(row_create)
+
+#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 int      tsm_free_pdu(netsnmp_pdu *pdu);
+
+u_int next_sess_id = 1;
+
+/** Initialize the TSM security module */
+void
+init_tsm(void)
+{
+    struct snmp_secmod_def *def;
+    int ret;
+
+    def = SNMP_MALLOC_STRUCT(snmp_secmod_def);
+
+    if (!def) {
+        snmp_log(LOG_ERR,
+                 "Unable to malloc snmp_secmod struct, not registering TSM\n");
+        return;
+    }
+
+    def->encode_reverse = tsm_rgenerate_out_msg;
+    def->decode = tsm_process_in_msg;
+    def->session_open = tsm_session_init;
+    def->pdu_free_state_ref = tsm_free_state_ref;
+    def->pdu_clone = tsm_clone_pdu;
+    def->pdu_free = tsm_free_pdu;
+    def->probe_engineid = snmpv3_probe_contextEngineID_rfc5343;
+
+    DEBUGMSGTL(("tsm","registering ourselves\n"));
+    ret = register_sec_mod(SNMP_SEC_MODEL_TSM, "tsm", def);
+    DEBUGMSGTL(("tsm"," returned %d\n", ret));
+
+    netsnmp_ds_register_config(ASN_BOOLEAN, "snmp", "tsmUseTransportPrefix",
+			       NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_TSM_USE_PREFIX);
+}
+
+/** shutdown the TSM security module */
+void
+shutdown_tsm(void)
+{
+}
+
+/*
+ * Initialize specific session information (right now, just set up things to
+ * not do an engineID probe)
+ */
+
+static int
+tsm_session_init(netsnmp_session * sess)
+{
+    DEBUGMSGTL(("tsm",
+                "TSM: Reached our session initialization callback\n"));
+
+    sess->flags |= SNMP_FLAGS_DONT_PROBE;
+
+    /* XXX: likely needed for something: */
+    /*
+    tsmsession = sess->securityInfo =
+    if (!tsmsession)
+        return SNMPERR_GENERR;
+    */
+
+    return SNMPERR_SUCCESS;
+}
+
+/** Free our state information (this is only done on the agent side) */
+static void
+tsm_free_state_ref(void *ptr)
+{
+    netsnmp_tsmSecurityReference *tsmRef;
+
+    if (NULL == ptr)
+        return;
+
+    tsmRef = (netsnmp_tsmSecurityReference *) ptr;
+    /* the tmStateRef is always taken care of by the normal PDU, since this
+       is just a reference to that one */
+    /* DON'T DO: SNMP_FREE(tsmRef->tmStateRef); */
+    /* SNMP_FREE(tsmRef);  ? */
+}
+
+static int
+tsm_free_pdu(netsnmp_pdu *pdu)
+{
+    /* free the security reference */
+    if (pdu->securityStateRef) {
+        tsm_free_state_ref(pdu->securityStateRef);
+        pdu->securityStateRef = NULL;
+    }
+    return 0;
+}
+
+/** This is called when a PDU is cloned (to increase reference counts) */
+static int
+tsm_clone_pdu(netsnmp_pdu *pdu, netsnmp_pdu *pdu2)
+{
+    netsnmp_tsmSecurityReference *oldref, *newref;
+
+    oldref = pdu->securityStateRef;
+    if (!oldref)
+        return SNMPERR_SUCCESS;
+
+    newref = SNMP_MALLOC_TYPEDEF(netsnmp_tsmSecurityReference);
+    DEBUGMSGTL(("tsm", "cloned as pdu=%p, ref=%p (oldref=%p)\n",
+            pdu2, newref, pdu2->securityStateRef));
+    if (!newref)
+        return SNMPERR_GENERR;
+    
+    memcpy(newref, oldref, sizeof(*oldref));
+
+    pdu2->securityStateRef = newref;
+
+    /* the tm state reference is just a link to the one in the pdu,
+       which was already copied by snmp_clone_pdu before handing it to
+       us. */
+
+    newref->tmStateRef = netsnmp_memdup(oldref->tmStateRef,
+                                        sizeof(*oldref->tmStateRef));
+    return SNMPERR_SUCCESS;
+}
+
+/* asn.1 easing definitions */
+#define TSMBUILD_OR_ERR(fun, args, msg, desc)       \
+    DEBUGDUMPHEADER("send", desc); \
+    rc = fun args;            \
+    DEBUGINDENTLESS();        \
+    if (rc == 0) { \
+        DEBUGMSGTL(("tsm",msg)); \
+        retval = SNMPERR_TOO_LONG; \
+        goto outerr; \
+    }
+
+/****************************************************************************
+ *
+ * tsm_generate_out_msg
+ *
+ * Parameters:
+ *	(See list below...)
+ *
+ * Returns:
+ *	SNMPERR_SUCCESS                        On success.
+ *	... and others
+ *
+ *
+ * Generate an outgoing message.
+ *
+ ****************************************************************************/
+
+int
+tsm_rgenerate_out_msg(struct snmp_secmod_outgoing_params *parms)
+{
+    u_char         **wholeMsg = parms->wholeMsg;
+    size_t	   *offset = parms->wholeMsgOffset;
+    int rc;
+    
+    size_t         *wholeMsgLen = parms->wholeMsgLen;
+    netsnmp_tsmSecurityReference *tsmSecRef;
+    netsnmp_tmStateReference *tmStateRef;
+    int             tmStateRefLocal = 0;
+    
+    DEBUGMSGTL(("tsm", "Starting TSM processing\n"));
+
+    /* 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) {
+        /* 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. */
+
+        /* 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 {
+        /* 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);
+        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_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,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;
+            }
+
+            /* 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);
+                return SNMPERR_GENERR;
+            }
+
+            /* 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 {
+            /* 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';
+
+    /* 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,
+                                     (u_char) (ASN_UNIVERSAL | ASN_PRIMITIVE
+                                             | ASN_OCTET_STR), 0);
+    DEBUGINDENTLESS();
+    if (rc == 0) {
+        DEBUGMSGTL(("tsm", "building msgSecurityParameters failed.\n"));
+        if (tmStateRefLocal)
+            SNMP_FREE(tmStateRef);
+        return SNMPERR_TOO_LONG;
+    }
+    
+    /* 4.2, step 4: Combine the message parts into a wholeMsg and
+       calculate wholeMsgLength.
+     */
+    while ((*wholeMsgLen - *offset) < parms->globalDataLen) {
+        if (!asn_realloc(wholeMsg, wholeMsgLen)) {
+            DEBUGMSGTL(("tsm", "building global data failed.\n"));
+            if (tmStateRefLocal)
+                SNMP_FREE(tmStateRef);
+            return SNMPERR_TOO_LONG;
+        }
+    }
+
+    *offset += parms->globalDataLen;
+    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.  
+     */
+    rc = asn_realloc_rbuild_sequence(wholeMsg, wholeMsgLen, offset, 1,
+                                     (u_char) (ASN_SEQUENCE |
+                                               ASN_CONSTRUCTOR), *offset);
+    if (rc == 0) {
+        DEBUGMSGTL(("tsm", "building master packet sequence failed.\n"));
+        if (tmStateRefLocal)
+            SNMP_FREE(tmStateRef);
+        return SNMPERR_TOO_LONG;
+    }
+
+    if (parms->pdu->transport_data &&
+        parms->pdu->transport_data != tmStateRef) {
+        snmp_log(LOG_ERR, "tsm: needed to free transport data\n");
+        SNMP_FREE(parms->pdu->transport_data);
+    }
+
+    /* put the transport state reference into the PDU for the transport */
+    parms->pdu->transport_data = netsnmp_memdup(tmStateRef, sizeof(*tmStateRef));
+    if (!parms->pdu->transport_data)
+        snmp_log(LOG_ERR, "tsm: malloc failure\n");
+    parms->pdu->transport_data_length = sizeof(*tmStateRef);
+
+    if (tmStateRefLocal)
+        SNMP_FREE(tmStateRef);
+    DEBUGMSGTL(("tsm", "TSM processing completed.\n"));
+    return SNMPERR_SUCCESS;
+}
+
+/****************************************************************************
+ *
+ * tsm_process_in_msg
+ *
+ * Parameters:
+ *	(See list below...)
+ *
+ * Returns:
+ *	TSM_ERR_NO_ERROR                        On success.
+ *	TSM_ERR_GENERIC_ERROR
+ *	TSM_ERR_UNSUPPORTED_SECURITY_LEVEL
+ *
+ *
+ * Processes an incoming message.
+ *
+ ****************************************************************************/
+
+int
+tsm_process_in_msg(struct snmp_secmod_incoming_params *parms)
+{
+    u_char type_value;
+    size_t remaining;
+    u_char *data_ptr;
+    netsnmp_tmStateReference *tmStateRef;
+    netsnmp_tsmSecurityReference *tsmSecRef;
+    u_char          ourEngineID[SNMP_MAX_ENG_SIZE];
+    static size_t   ourEngineID_len = sizeof(ourEngineID);
+    
+    /* Section 5.2, step 1: Set the securityEngineID to the local
+       snmpEngineID. */
+    ourEngineID_len =
+        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: 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) {
+        /* if we're not coming in over a proper transport; bail! */
+        DEBUGMSGTL(("tsm","improper transport data\n"));
+        return -1;
+    }
+    tmStateRef = (netsnmp_tmStateReference *) parms->pdu->transport_data;
+    parms->pdu->transport_data = NULL;
+
+    if (tmStateRef == NULL ||
+        /* not needed: tmStateRef->transportDomain == NULL || */
+        /* not needed: tmStateRef->transportAddress == NULL || */
+        tmStateRef->securityName[0] == '\0'
+        ) {
+        snmp_increment_statistic(STAT_TSM_SNMPTSMINVALIDCACHES);
+        return SNMPERR_GENERR;
+    }
+
+    /* 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 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);
+    }
+
+    /* 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) {
+        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
+       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;
+    }
+
+    netsnmp_assert_or_return(NULL != tsmSecRef, SNMPERR_GENERR);
+
+    *parms->secStateRef = tsmSecRef;
+    tsmSecRef->tmStateRef = tmStateRef;
+
+    /* If this did not come through a tunneled connection, this
+       security model is inappropriate (and would be a HUGE security
+       hole to assume otherwise).  This is functionally a double check
+       since the pdu wouldn't have transport data otherwise.  But this
+       is safer though is functionally an extra step beyond the TSM
+       RFC. */
+    DEBUGMSGTL(("tsm","checking how we got here\n"));
+    if (!(parms->pdu->flags & UCD_MSG_FLAG_TUNNELED)) {
+        DEBUGMSGTL(("tsm","  pdu not tunneled\n"));
+        if (!(parms->sess->flags & NETSNMP_TRANSPORT_FLAG_TUNNELED)) {
+            DEBUGMSGTL(("tsm","  session not tunneled\n"));
+            return SNMPERR_USM_AUTHENTICATIONFAILURE;
+        }
+        DEBUGMSGTL(("tsm","  but session is tunneled\n"));
+    } else {
+        DEBUGMSGTL(("tsm","  tunneled\n"));
+    }
+
+    /* Section 5.2, Step 6:
+       The scopedPDU component is extracted from the wholeMsg. */
+    /*
+     * Eat the first octet header.
+     */
+    remaining = parms->wholeMsgLen - (parms->secParams - parms->wholeMsg);
+    if ((data_ptr = asn_parse_sequence(parms->secParams, &remaining,
+                                        &type_value,
+                                        (ASN_UNIVERSAL | ASN_PRIMITIVE |
+                                         ASN_OCTET_STR),
+                                        "tsm first octet")) == NULL) {
+        /*
+         * RETURN parse error 
+         */
+        return SNMPERR_ASN_PARSE_ERR;
+    }
+    
+    *parms->scopedPdu = data_ptr;
+    *parms->scopedPduLen = parms->wholeMsgLen - (data_ptr - parms->wholeMsg);
+
+    /* 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 */
+
+    /* 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 389b677..6a9cec3 100644
--- a/snmplib/snmpusm.c
+++ b/snmplib/snmpusm.c
@@ -22,21 +22,15 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.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
@@ -78,6 +72,11 @@
 #include <net-snmp/library/snmp_secmod.h>
 #include <net-snmp/library/snmpusm.h>
 
+netsnmp_feature_child_of(usm_all, libnetsnmp)
+netsnmp_feature_child_of(usm_support, usm_all)
+
+netsnmp_feature_require(usm_support)
+
 oid             usmNoAuthProtocol[10] = { 1, 3, 6, 1, 6, 3, 10, 1, 1, 1 };
 #ifndef NETSNMP_DISABLE_MD5
 oid             usmHMACMD5AuthProtocol[10] =
@@ -96,6 +95,16 @@
 static u_int    dummy_etime, dummy_eboot;       /* For ISENGINEKNOWN(). */
 
 /*
+ * Set up default snmpv3 parameter value storage.
+ */
+#ifdef NETSNMP_SECMOD_USM
+static const oid *defaultAuthType = NULL;
+static size_t   defaultAuthTypeLen = 0;
+static const oid *defaultPrivType = NULL;
+static size_t   defaultPrivTypeLen = 0;
+#endif /* NETSNMP_SECMOD_USM */
+
+/*
  * Globals.
  */
 static u_int    salt_integer;
@@ -165,6 +174,21 @@
 }
 
 
+int
+free_enginetime_on_shutdown(int majorid, int minorid, void *serverarg,
+			    void *clientarg)
+{
+    u_char engineID[SNMP_MAX_ENG_SIZE];
+    size_t engineID_len = sizeof(engineID);
+
+    DEBUGMSGTL(("snmpv3", "free enginetime callback called\n"));
+
+    engineID_len = snmpv3_get_engineID(engineID, engineID_len);
+    if (engineID_len > 0)
+	free_enginetime(engineID, engineID_len);
+    return 0;
+}
+
 struct usmStateReference *
 usm_malloc_usmStateReference(void)
 {
@@ -502,7 +526,7 @@
                     engBtlen,   /*   for fields within                     */
                     engTmlen,   /*   msgSecurityParameters portion of      */
                     namelen,    /*   SNMPv3Message.                        */
-                    authlen, privlen;
+                    authlen, privlen, ret;
 
     /*
      * If doing authentication, msgAuthParmLen = 12 else msgAuthParmLen = 0.
@@ -518,7 +542,7 @@
      * Calculate lengths.
      */
     if ((engIDlen = asn_predict_length(ASN_OCTET_STR,
-                                       0, secEngineIDLen)) == -1) {
+                                       NULL, secEngineIDLen)) == -1) {
         return -1;
     }
 
@@ -534,31 +558,35 @@
         return -1;
     }
 
-    if ((namelen = asn_predict_length(ASN_OCTET_STR, 0, secNameLen)) == -1) {
+    if ((namelen = asn_predict_length(ASN_OCTET_STR,
+                                      NULL, secNameLen)) == -1) {
         return -1;
     }
 
     if ((authlen = asn_predict_length(ASN_OCTET_STR,
-                                      0, *msgAuthParmLen)) == -1) {
+                                      NULL, *msgAuthParmLen)) == -1) {
         return -1;
     }
 
     if ((privlen = asn_predict_length(ASN_OCTET_STR,
-                                      0, *msgPrivParmLen)) == -1) {
+                                      NULL, *msgPrivParmLen)) == -1) {
         return -1;
     }
 
     *seq_len =
         engIDlen + engBtlen + engTmlen + namelen + authlen + privlen;
 
-    if ((*otstlen = asn_predict_length(ASN_SEQUENCE, 0, *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,
-                                             0, *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
@@ -583,10 +611,10 @@
     if (secLevel == SNMP_SEC_LEVEL_AUTHPRIV) {
         scopedPduLen = ROUNDUP8(scopedPduLen);
 
-        if ((*datalen =
-             asn_predict_length(ASN_OCTET_STR, 0, scopedPduLen)) == -1) {
+        if ((ret = asn_predict_length(ASN_OCTET_STR, NULL, scopedPduLen)) == -1) {
             return -1;
         }
+        *datalen = (size_t)ret;
     } else {
         *datalen = scopedPduLen;
     }
@@ -1387,7 +1415,7 @@
     size_t          sp_offset = 0, mac_offset = 0;
     int             rc = 0;
 
-    DEBUGMSGTL(("usm", "USM processing has begun (offset %d)\n", *offset));
+    DEBUGMSGTL(("usm", "USM processing has begun (offset %d)\n", (int)*offset));
 
     if (secStateRef != NULL) {
         /*
@@ -1515,7 +1543,7 @@
         if ((ciphertext = (u_char *) malloc(ciphertextlen)) == NULL) {
             DEBUGMSGTL(("usm",
                         "couldn't malloc %d bytes for encrypted PDU\n",
-                        ciphertextlen));
+                        (int)ciphertextlen));
             usm_free_usmStateReference(secStateRef);
             return SNMPERR_MALLOC;
         }
@@ -1590,6 +1618,7 @@
             SNMP_FREE(ciphertext);
             return SNMPERR_USM_ENCRYPTIONERROR;
         }
+
 #ifdef NETSNMP_ENABLE_TESTING_CODE
         if (debug_is_token_registered("usm/dump") == SNMPERR_SUCCESS) {
             dump_chunk("usm/dump", "salt + Encrypted form: ", salt,
@@ -1991,7 +2020,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 
          */
@@ -2137,7 +2166,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;
@@ -2145,11 +2174,7 @@
         if (boots_uint == ENGINEBOOT_MAX
             || boots_uint != myBoots
             || time_difference > USM_TIME_WINDOW) {
-            if (snmp_increment_statistic(STAT_USMSTATSNOTINTIMEWINDOWS) ==
-                0) {
-                DEBUGMSGTL(("usm", "%s\n",
-                            "Failed to increment statistic."));
-            }
+            snmp_increment_statistic(STAT_USMSTATSNOTINTIMEWINDOWS);
 
             DEBUGMSGTL(("usm",
                         "boot_uint %u myBoots %u time_diff %u => not in time window\n",
@@ -2362,16 +2387,10 @@
             /*
              * This indicates a decryptionError.  
              */
-            if (snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS) ==
-                0) {
-                DEBUGMSGTL(("usm", "%s\n",
-                            "Failed to increment statistic."));
-            }
+            snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS);
             return SNMPERR_USM_DECRYPTIONERROR;
         }
-        if (snmp_increment_statistic(STAT_SNMPINASNPARSEERRS) == 0) {
-            DEBUGMSGTL(("usm", "%s\n", "Failed to increment statistic."));
-        }
+        snmp_increment_statistic(STAT_SNMPINASNPARSEERRS);
         return SNMPERR_USM_PARSEERROR;
     }
 
@@ -2382,10 +2401,7 @@
      * calling module.
      */
     if ((secLevel == SNMP_SEC_LEVEL_AUTHPRIV) && (salt_length != 8)) {
-        if (snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS) == 
-            0) {
-            DEBUGMSGTL(("usm", "%s\n", "Failed increment statistic."));
-        }
+        snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS);
         return SNMPERR_USM_DECRYPTIONERROR;
     }
 
@@ -2433,11 +2449,7 @@
         (!sess && (msg_flags & SNMP_MSG_FLAG_RPRT_BIT))) {
         if (ISENGINEKNOWN(secEngineID, *secEngineIDLen) == FALSE) {
             DEBUGMSGTL(("usm", "Unknown Engine ID.\n"));
-            if (snmp_increment_statistic(STAT_USMSTATSUNKNOWNENGINEIDS) ==
-                0) {
-                DEBUGMSGTL(("usm", "%s\n",
-                            "Failed to increment statistic."));
-            }
+            snmp_increment_statistic(STAT_USMSTATSUNKNOWNENGINEIDS);
             return SNMPERR_USM_UNKNOWNENGINEID;
         }
     } else {
@@ -2461,9 +2473,7 @@
                                          (!sess)) ? 0 : 1)))
         == NULL) {
         DEBUGMSGTL(("usm", "Unknown User(%s)\n", secName));
-        if (snmp_increment_statistic(STAT_USMSTATSUNKNOWNUSERNAMES) == 0) {
-            DEBUGMSGTL(("usm", "%s\n", "Failed to increment statistic."));
-        }
+        snmp_increment_statistic(STAT_USMSTATSUNKNOWNUSERNAMES);
         return SNMPERR_USM_UNKNOWNSECURITYNAME;
     }
 
@@ -2481,10 +2491,7 @@
     if (1 == rc) {
         DEBUGMSGTL(("usm", "Unsupported Security Level (%d).\n",
                     secLevel));
-        if (snmp_increment_statistic
-            (STAT_USMSTATSUNSUPPORTEDSECLEVELS) == 0) {
-            DEBUGMSGTL(("usm", "%s\n", "Failed to increment statistic."));
-        }
+        snmp_increment_statistic(STAT_USMSTATSUNSUPPORTEDSECLEVELS);
         return SNMPERR_USM_UNSUPPORTEDSECURITYLEVEL;
     } else if (rc != 0) {
         DEBUGMSGTL(("usm", "Unknown issue.\n"));
@@ -2502,10 +2509,7 @@
                                 signature, signature_length)
             != SNMP_ERR_NOERROR) {
             DEBUGMSGTL(("usm", "Verification failed.\n"));
-            if (snmp_increment_statistic(STAT_USMSTATSWRONGDIGESTS) == 0) {
-                DEBUGMSGTL(("usm", "%s\n",
-                            "Failed to increment statistic."));
-            }
+            snmp_increment_statistic(STAT_USMSTATSWRONGDIGESTS);
 	    snmp_log(LOG_WARNING, "Authentication failed for %s\n",
 				user->name);
             return SNMPERR_USM_AUTHENTICATIONFAILURE;
@@ -2596,9 +2600,7 @@
                                             "encrypted sPDU")) == NULL) {
             DEBUGMSGTL(("usm", "%s\n",
                         "Failed while parsing encrypted sPDU."));
-            if (snmp_increment_statistic(STAT_SNMPINASNPARSEERRS) == 0) {
-                DEBUGMSGTL(("usm", "%s\n", "Failed increment statistic."));
-            }
+            snmp_increment_statistic(STAT_SNMPINASNPARSEERRS);
             usm_free_usmStateReference(*secStateRef);
             *secStateRef = NULL;
             return SNMPERR_USM_PARSEERROR;
@@ -2617,12 +2619,9 @@
 
             if (remaining % 8 != 0) {
                 DEBUGMSGTL(("usm",
-                            "Ciphertext is %lu bytes, not an integer multiple of 8 (rem %d)\n",
-                            remaining, remaining % 8));
-                if (snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS) ==
-                    0) {
-                    DEBUGMSGTL(("usm", "%s\n", "Failed increment statistic."));
-                }
+                            "Ciphertext is %lu bytes, not an integer multiple of 8 (rem %lu)\n",
+                            (unsigned long)remaining, (unsigned long)remaining % 8));
+                snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS);
                 usm_free_usmStateReference(*secStateRef);
                 *secStateRef = NULL;
                 return SNMPERR_USM_DECRYPTIONERROR;
@@ -2632,10 +2631,7 @@
 
             if ( !user->privKey ) {
                 DEBUGMSGTL(("usm", "No privacy pass phrase for %s\n", user->secName));
-                if (snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS) ==
-                    0) {
-                    DEBUGMSGTL(("usm", "%s\n", "Failed increment statistic."));
-                }
+                snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS);
                 usm_free_usmStateReference(*secStateRef);
                 *secStateRef = NULL;
                 return SNMPERR_USM_DECRYPTIONERROR;
@@ -2667,10 +2663,7 @@
                        value_ptr, remaining, *scopedPdu, scopedPduLen)
             != SNMP_ERR_NOERROR) {
             DEBUGMSGTL(("usm", "%s\n", "Failed decryption."));
-            if (snmp_increment_statistic
-                (STAT_USMSTATSDECRYPTIONERRORS) == 0) {
-                DEBUGMSGTL(("usm", "%s\n", "Failed increment statistic."));
-            }
+            snmp_increment_statistic(STAT_USMSTATSDECRYPTIONERRORS);
             return SNMPERR_USM_DECRYPTIONERROR;
         }
 #ifdef NETSNMP_ENABLE_TESTING_CODE
@@ -2700,8 +2693,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"));
@@ -2763,13 +2755,452 @@
     }       
 }
 
+/* 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;
+}
+
+
+/*
+ * usm_create_user_from_session(netsnmp_session *session):
+ * 
+ * creates a user in the usm table from the information in a session.
+ * If the user already exists, it is updated with the current
+ * information from the session
+ * 
+ * Parameters:
+ * session -- IN: pointer to the session to use when creating the user.
+ * 
+ * Returns:
+ * SNMPERR_SUCCESS
+ * SNMPERR_GENERR 
+ */
+int
+usm_create_user_from_session(netsnmp_session * session)
+{
+    struct usmUser *user;
+    int             user_just_created = 0;
+    char *cp;
+
+    /*
+     * - don't create-another/copy-into user for this session by default
+     * - bail now (no error) if we don't have an engineID
+     */
+    if (SNMP_FLAGS_USER_CREATED == (session->flags & SNMP_FLAGS_USER_CREATED) ||
+        session->securityModel != SNMP_SEC_MODEL_USM ||
+        session->version != SNMP_VERSION_3 ||
+        session->securityNameLen == 0 ||
+        session->securityEngineIDLen == 0)
+        return SNMPERR_SUCCESS;
+
+    DEBUGMSGTL(("usm", "no flag defined...  continuing\n"));
+    session->flags |= SNMP_FLAGS_USER_CREATED;
+
+    /*
+     * now that we have the engineID, create an entry in the USM list
+     * for this user using the information in the session 
+     */
+    user = usm_get_user_from_list(session->securityEngineID,
+                                  session->securityEngineIDLen,
+                                  session->securityName,
+                                  usm_get_userList(), 0);
+    DEBUGMSGTL(("usm", "user exists? x=%p\n", user));
+    if (user == NULL) {
+        DEBUGMSGTL(("usm", "Building user %s...\n",
+                    session->securityName));
+        /*
+         * user doesn't exist so we create and add it 
+         */
+        user = (struct usmUser *) calloc(1, sizeof(struct usmUser));
+        if (user == NULL)
+            return SNMPERR_GENERR;
+
+        /*
+         * copy in the securityName 
+         */
+        if (session->securityName) {
+            user->name = strdup(session->securityName);
+            user->secName = strdup(session->securityName);
+            if (user->name == NULL || user->secName == NULL) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+        }
+
+        /*
+         * copy in the engineID 
+         */
+        user->engineID = netsnmp_memdup(session->securityEngineID,
+                                        session->securityEngineIDLen);
+        if (session->securityEngineID && !user->engineID) {
+            usm_free_user(user);
+            return SNMPERR_GENERR;
+        }
+        user->engineIDLen = session->securityEngineIDLen;
+
+        user_just_created = 1;
+    }
+
+    /*
+     * copy the auth protocol 
+     */
+    if (user->authProtocol == NULL && session->securityAuthProto != NULL) {
+        SNMP_FREE(user->authProtocol);
+        user->authProtocol =
+            snmp_duplicate_objid(session->securityAuthProto,
+                                 session->securityAuthProtoLen);
+        if (user->authProtocol == NULL) {
+            usm_free_user(user);
+            return SNMPERR_GENERR;
+        }
+        user->authProtocolLen = session->securityAuthProtoLen;
+    }
+
+    /*
+     * copy the priv protocol 
+     */
+    if (user->privProtocol == NULL && session->securityPrivProto != NULL) {
+        SNMP_FREE(user->privProtocol);
+        user->privProtocol =
+            snmp_duplicate_objid(session->securityPrivProto,
+                                 session->securityPrivProtoLen);
+        if (user->privProtocol == NULL) {
+            usm_free_user(user);
+            return SNMPERR_GENERR;
+        }
+        user->privProtocolLen = session->securityPrivProtoLen;
+    }
+
+    /*
+     * copy in the authentication Key.  If not localized, localize it 
+     */
+    if (user->authKey == NULL) {
+        if (session->securityAuthLocalKey != NULL
+            && session->securityAuthLocalKeyLen != 0) {
+            /* already localized key passed in.  use it */
+            SNMP_FREE(user->authKey);
+            user->authKey = netsnmp_memdup(session->securityAuthLocalKey,
+                                           session->securityAuthLocalKeyLen);
+            if (!user->authKey) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+            user->authKeyLen = session->securityAuthLocalKeyLen;
+        } else if (session->securityAuthKey != NULL
+                   && session->securityAuthKeyLen != 0) {
+            SNMP_FREE(user->authKey);
+            user->authKey = (u_char *) calloc(1, USM_LENGTH_KU_HASHBLOCK);
+            if (user->authKey == NULL) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+            user->authKeyLen = USM_LENGTH_KU_HASHBLOCK;
+            if (generate_kul(user->authProtocol, user->authProtocolLen,
+                             session->securityEngineID,
+                             session->securityEngineIDLen,
+                             session->securityAuthKey,
+                             session->securityAuthKeyLen, user->authKey,
+                             &user->authKeyLen) != SNMPERR_SUCCESS) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+        } else if ((cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
+                                               NETSNMP_DS_LIB_AUTHLOCALIZEDKEY))) {
+            size_t buflen = USM_AUTH_KU_LEN;
+            SNMP_FREE(user->authKey);
+            user->authKey = (u_char *)malloc(buflen); /* max length needed */
+            user->authKeyLen = 0;
+            /* it will be a hex string */
+            if (!snmp_hex_to_binary(&user->authKey, &buflen, &user->authKeyLen,
+                                    0, cp)) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+        }
+    }
+
+    /*
+     * copy in the privacy Key.  If not localized, localize it 
+     */
+    if (user->privKey == NULL) {
+        if (session->securityPrivLocalKey != NULL
+            && session->securityPrivLocalKeyLen != 0) {
+            /* already localized key passed in.  use it */
+            SNMP_FREE(user->privKey);
+            user->privKey = netsnmp_memdup(session->securityPrivLocalKey,
+                                           session->securityPrivLocalKeyLen);
+            if (!user->privKey) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+            user->privKeyLen = session->securityPrivLocalKeyLen;
+        } else if (session->securityPrivKey != NULL
+                   && session->securityPrivKeyLen != 0) {
+            SNMP_FREE(user->privKey);
+            user->privKey = (u_char *) calloc(1, USM_LENGTH_KU_HASHBLOCK);
+            if (user->privKey == NULL) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+            user->privKeyLen = USM_LENGTH_KU_HASHBLOCK;
+            if (generate_kul(user->authProtocol, user->authProtocolLen,
+                             session->securityEngineID,
+                             session->securityEngineIDLen,
+                             session->securityPrivKey,
+                             session->securityPrivKeyLen, user->privKey,
+                             &user->privKeyLen) != SNMPERR_SUCCESS) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+        } else if ((cp = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
+                                               NETSNMP_DS_LIB_PRIVLOCALIZEDKEY))) {
+            size_t buflen = USM_PRIV_KU_LEN;
+            SNMP_FREE(user->privKey);
+            user->privKey = (u_char *)malloc(buflen); /* max length needed */
+            user->privKeyLen = 0;
+            /* it will be a hex string */
+            if (!snmp_hex_to_binary(&user->privKey, &buflen, &user->privKeyLen,
+                                    0, cp)) {
+                usm_free_user(user);
+                return SNMPERR_GENERR;
+            }
+        }
+    }
+
+    if (user_just_created) {
+        /*
+         * add the user into the database 
+         */
+        user->userStatus = RS_ACTIVE;
+        user->userStorageType = ST_READONLY;
+        usm_add_user(user);
+    }
+
+    return SNMPERR_SUCCESS;
+
+
+}
+
+/* A wrapper around the hook */
+int
+usm_create_user_from_session_hook(void *slp, netsnmp_session *session)
+{
+    DEBUGMSGTL(("usm", "potentially bootstrapping the USM table from session data\n"));
+    return usm_create_user_from_session(session);
+}
+
+static int
+usm_build_probe_pdu(netsnmp_pdu **pdu)
+{
+    struct usmUser *user;
+
+    /*
+     * create the pdu 
+     */
+    if (!pdu)
+        return -1;
+    *pdu = snmp_pdu_create(SNMP_MSG_GET);
+    if (!(*pdu))
+        return -1;
+    (*pdu)->version = SNMP_VERSION_3;
+    (*pdu)->securityName = strdup("");
+    (*pdu)->securityNameLen = strlen((*pdu)->securityName);
+    (*pdu)->securityLevel = SNMP_SEC_LEVEL_NOAUTH;
+    (*pdu)->securityModel = SNMP_SEC_MODEL_USM;
+
+    /*
+     * create the empty user 
+     */
+    user = usm_get_user(NULL, 0, (*pdu)->securityName);
+    if (user == NULL) {
+        user = (struct usmUser *) calloc(1, sizeof(struct usmUser));
+        if (user == NULL) {
+            snmp_free_pdu(*pdu);
+            *pdu = (netsnmp_pdu *) NULL;
+            return -1;
+        }
+        user->name = strdup((*pdu)->securityName);
+        user->secName = strdup((*pdu)->securityName);
+        user->authProtocolLen = sizeof(usmNoAuthProtocol) / sizeof(oid);
+        user->authProtocol =
+            snmp_duplicate_objid(usmNoAuthProtocol, user->authProtocolLen);
+        user->privProtocolLen = sizeof(usmNoPrivProtocol) / sizeof(oid);
+        user->privProtocol =
+            snmp_duplicate_objid(usmNoPrivProtocol, user->privProtocolLen);
+        usm_add_user(user);
+    }
+    return 0;
+}
+
+int usm_discover_engineid(void *slpv, netsnmp_session *session) {
+    netsnmp_pdu    *pdu = NULL, *response = NULL;
+    int status, i;
+    struct session_list *slp = (struct session_list *) slpv;
+
+    if (usm_build_probe_pdu(&pdu) != 0) {
+        DEBUGMSGTL(("snmp_api", "unable to create probe PDU\n"));
+        return SNMP_ERR_GENERR;
+    }
+    DEBUGMSGTL(("snmp_api", "probing for engineID...\n"));
+    session->flags |= SNMP_FLAGS_DONT_PROBE; /* prevent recursion */
+    status = snmp_sess_synch_response(slp, pdu, &response);
+
+    if ((response == NULL) && (status == STAT_SUCCESS)) {
+        status = STAT_ERROR;
+    }
+
+    switch (status) {
+    case STAT_SUCCESS:
+        session->s_snmp_errno = SNMPERR_INVALID_MSG; /* XX?? */
+        DEBUGMSGTL(("snmp_sess_open",
+                    "error: expected Report as response to probe: %s (%ld)\n",
+                    snmp_errstring(response->errstat),
+                    response->errstat));
+        break;
+    case STAT_ERROR:   /* this is what we expected -> Report == STAT_ERROR */
+        session->s_snmp_errno = SNMPERR_UNKNOWN_ENG_ID;
+        break;
+    case STAT_TIMEOUT:
+        session->s_snmp_errno = SNMPERR_TIMEOUT;
+        break;
+    default:
+        DEBUGMSGTL(("snmp_sess_open",
+                    "unable to connect with remote engine: %s (%d)\n",
+                    snmp_api_errstring(session->s_snmp_errno),
+                    session->s_snmp_errno));
+        break;
+    }
+
+    if (slp->session->securityEngineIDLen == 0) {
+        DEBUGMSGTL(("snmp_api",
+                    "unable to determine remote engine ID\n"));
+        /* clear the flag so that probe occurs on next inform */
+        session->flags &= ~SNMP_FLAGS_DONT_PROBE;
+        return SNMP_ERR_GENERR;
+    }
+
+    session->s_snmp_errno = SNMPERR_SUCCESS;
+    if (snmp_get_do_debugging()) {
+        DEBUGMSGTL(("snmp_sess_open",
+                    "  probe found engineID:  "));
+        for (i = 0; i < slp->session->securityEngineIDLen; i++)
+            DEBUGMSG(("snmp_sess_open", "%02x",
+                      slp->session->securityEngineID[i]));
+        DEBUGMSG(("snmp_sess_open", "\n"));
+    }
+
+    /*
+     * if boot/time supplied set it for this engineID 
+     */
+    if (session->engineBoots || session->engineTime) {
+        set_enginetime(session->securityEngineID,
+                       session->securityEngineIDLen,
+                       session->engineBoots, session->engineTime,
+                       TRUE);
+    }
+    return SNMPERR_SUCCESS;
+}
+
 void
 init_usm(void)
 {
     struct snmp_secmod_def *def;
+    char *type;
 
-    DEBUGMSGTL(("init_usm", "unit_usm: %d %d\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 */
 
@@ -2777,6 +3208,8 @@
      * register ourselves as a security service 
      */
     def = SNMP_MALLOC_STRUCT(snmp_secmod_def);
+    if (def == NULL)
+        return;
     /*
      * XXX: def->init_sess_secmod move stuff from snmp_api.c 
      */
@@ -2784,7 +3217,10 @@
     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;
+    def->probe_engineid = usm_discover_engineid;
+    def->post_probe_engineid = usm_create_user_from_session_hook;
     register_sec_mod(USM_SEC_MODEL_NUMBER, "usm", def);
 
     snmp_register_callback(SNMP_CALLBACK_LIBRARY,
@@ -2799,6 +3235,39 @@
                            SNMP_CALLBACK_SHUTDOWN,
                            free_engineID, NULL);
 
+    register_config_handler("snmp", "defAuthType", snmpv3_authtype_conf,
+                            NULL, "MD5|SHA");
+    register_config_handler("snmp", "defPrivType", snmpv3_privtype_conf,
+                            NULL,
+#ifdef HAVE_AES
+                            "DES|AES"
+#else
+                            "DES (AES support not available)"
+#endif
+                           );
+
+    /*
+     * Free stuff at shutdown time
+     */
+    snmp_register_callback(SNMP_CALLBACK_LIBRARY,
+                           SNMP_CALLBACK_SHUTDOWN,
+                           free_enginetime_on_shutdown, NULL);
+
+
+    type = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_APPTYPE);
+
+    register_config_handler(type, "userSetAuthPass", usm_set_password,
+                            NULL, NULL);
+    register_config_handler(type, "userSetPrivPass", usm_set_password,
+                            NULL, NULL);
+    register_config_handler(type, "userSetAuthKey", usm_set_password, NULL,
+                            NULL);
+    register_config_handler(type, "userSetPrivKey", usm_set_password, NULL,
+                            NULL);
+    register_config_handler(type, "userSetAuthLocalKey", usm_set_password,
+                            NULL, NULL);
+    register_config_handler(type, "userSetPrivLocalKey", usm_set_password,
+                            NULL, NULL);
 }
 
 void
@@ -2907,6 +3376,13 @@
 
 }
 
+void
+shutdown_usm(void)
+{
+    free_etimelist();
+    clear_user_list();
+}
+
 /*******************************************************************-o-******
  * usm_check_secLevel
  *
@@ -2927,8 +3403,8 @@
     if (user->userStatus != RS_ACTIVE)
         return -1;
 
-    DEBUGMSGTL(("comparex", "Comparing: %d %d ", 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"));
@@ -3312,6 +3788,7 @@
 
 
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 /*
  * take a given user and clone the security info into another 
  */
@@ -3375,6 +3852,7 @@
     }
     return to;
 }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 /*
  * usm_create_user(void):
@@ -3542,11 +4020,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);
@@ -3566,11 +4044,8 @@
                                       user->privKeyLen);
     *cptr++ = ' ';
     cptr = read_config_save_octet_string(cptr, user->userPublicString,
-                                         (user->userPublicString ==
-                                          NULL) ? 0 : strlen((char *)
-                                                             user->
-                                                             userPublicString)
-                                         + 1);
+                                         user->userPublicStringLen);
+
     read_config_store(type, line);
 }
 
@@ -3579,7 +4054,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;
@@ -3590,11 +4065,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
@@ -3611,22 +4086,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
@@ -3646,7 +4120,7 @@
     }
 
     line = read_config_read_octet_string(line, &user->userPublicString,
-                                         &len);
+                                         &user->userPublicStringLen);
     return user;
 }
 
@@ -3844,3 +4318,355 @@
         }
     }
 }                               /* end usm_set_password() */
+
+void
+usm_parse_create_usmUser(const char *token, char *line)
+{
+    char           *cp;
+    char            buf[SNMP_MAXBUF_MEDIUM];
+    struct usmUser *newuser;
+    u_char          userKey[SNMP_MAXBUF_SMALL], *tmpp;
+    size_t          userKeyLen = SNMP_MAXBUF_SMALL;
+    size_t          privKeyLen = 0;
+    size_t          ret;
+    int             ret2;
+    int             testcase;
+
+    newuser = usm_create_user();
+
+    /*
+     * READ: Security Name 
+     */
+    cp = copy_nword(line, buf, sizeof(buf));
+
+    /*
+     * might be a -e ENGINEID argument 
+     */
+    if (strcmp(buf, "-e") == 0) {
+        size_t          ebuf_len = 32, eout_len = 0;
+        u_char         *ebuf = (u_char *) malloc(ebuf_len);
+
+        if (ebuf == NULL) {
+            config_perror("malloc failure processing -e flag");
+            usm_free_user(newuser);
+            return;
+        }
+
+        /*
+         * Get the specified engineid from the line.  
+         */
+        cp = copy_nword(cp, buf, sizeof(buf));
+        if (!snmp_hex_to_binary(&ebuf, &ebuf_len, &eout_len, 1, buf)) {
+            config_perror("invalid EngineID argument to -e");
+            usm_free_user(newuser);
+            SNMP_FREE(ebuf);
+            return;
+        }
+
+        newuser->engineID = ebuf;
+        newuser->engineIDLen = eout_len;
+        cp = copy_nword(cp, buf, sizeof(buf));
+    } else {
+        newuser->engineID = snmpv3_generate_engineID(&ret);
+        if (ret == 0) {
+            usm_free_user(newuser);
+            return;
+        }
+        newuser->engineIDLen = ret;
+    }
+
+    newuser->secName = strdup(buf);
+    newuser->name = strdup(buf);
+
+    if (!cp)
+        goto add;               /* no authentication or privacy type */
+
+    /*
+     * READ: Authentication Type 
+     */
+#ifndef NETSNMP_DISABLE_MD5
+    if (strncmp(cp, "MD5", 3) == 0) {
+        memcpy(newuser->authProtocol, usmHMACMD5AuthProtocol,
+               sizeof(usmHMACMD5AuthProtocol));
+    } else
+#endif
+        if (strncmp(cp, "SHA", 3) == 0) {
+        memcpy(newuser->authProtocol, usmHMACSHA1AuthProtocol,
+               sizeof(usmHMACSHA1AuthProtocol));
+    } else {
+        config_perror("Unknown authentication protocol");
+        usm_free_user(newuser);
+        return;
+    }
+
+    cp = skip_token(cp);
+
+    /*
+     * READ: Authentication Pass Phrase or key
+     */
+    if (!cp) {
+        config_perror("no authentication pass phrase");
+        usm_free_user(newuser);
+        return;
+    }
+    cp = copy_nword(cp, buf, sizeof(buf));
+    if (strcmp(buf,"-m") == 0) {
+        /* a master key is specified */
+        cp = copy_nword(cp, buf, sizeof(buf));
+        ret = sizeof(userKey);
+        tmpp = userKey;
+        userKeyLen = 0;
+        if (!snmp_hex_to_binary(&tmpp, &ret, &userKeyLen, 0, buf)) {
+            config_perror("invalid key value argument to -m");
+            usm_free_user(newuser);
+            return;
+        }
+    } else if (strcmp(buf,"-l") != 0) {
+        /* a password is specified */
+        userKeyLen = sizeof(userKey);
+        ret2 = generate_Ku(newuser->authProtocol, newuser->authProtocolLen,
+                          (u_char *) buf, strlen(buf), userKey, &userKeyLen);
+        if (ret2 != SNMPERR_SUCCESS) {
+            config_perror("could not generate the authentication key from the "
+                          "supplied pass phrase.");
+            usm_free_user(newuser);
+            return;
+        }
+    }        
+        
+    /*
+     * And turn it into a localized key 
+     */
+    ret2 = sc_get_properlength(newuser->authProtocol,
+                               newuser->authProtocolLen);
+    if (ret2 <= 0) {
+        config_perror("Could not get proper authentication protocol key length");
+	usm_free_user(newuser);
+        return;
+    }
+    newuser->authKey = (u_char *) malloc(ret2);
+
+    if (strcmp(buf,"-l") == 0) {
+        /* a local key is directly specified */
+        cp = copy_nword(cp, buf, sizeof(buf));
+        newuser->authKeyLen = 0;
+        ret = ret2;
+        if (!snmp_hex_to_binary(&newuser->authKey, &ret,
+                                &newuser->authKeyLen, 0, buf)) {
+            config_perror("invalid key value argument to -l");
+            usm_free_user(newuser);
+            return;
+        }
+        if (ret != newuser->authKeyLen) {
+            config_perror("improper key length to -l");
+            usm_free_user(newuser);
+            return;
+        }
+    } else {
+        newuser->authKeyLen = ret2;
+        ret2 = generate_kul(newuser->authProtocol, newuser->authProtocolLen,
+                           newuser->engineID, newuser->engineIDLen,
+                           userKey, userKeyLen,
+                           newuser->authKey, &newuser->authKeyLen);
+        if (ret2 != SNMPERR_SUCCESS) {
+            config_perror("could not generate localized authentication key "
+                          "(Kul) from the master key (Ku).");
+            usm_free_user(newuser);
+            return;
+        }
+    }
+
+    if (!cp)
+        goto add;               /* no privacy type (which is legal) */
+
+    /*
+     * READ: Privacy Type 
+     */
+    testcase = 0;
+#ifndef NETSNMP_DISABLE_DES
+    if (strncmp(cp, "DES", 3) == 0) {
+        memcpy(newuser->privProtocol, usmDESPrivProtocol,
+               sizeof(usmDESPrivProtocol));
+        testcase = 1;
+	/* DES uses a 128 bit key, 64 bits of which is a salt */
+	privKeyLen = 16;
+    }
+#endif
+#ifdef HAVE_AES
+    if (strncmp(cp, "AES128", 6) == 0 ||
+               strncmp(cp, "AES", 3) == 0) {
+        memcpy(newuser->privProtocol, usmAESPrivProtocol,
+               sizeof(usmAESPrivProtocol));
+        testcase = 1;
+	privKeyLen = 16;
+    }
+#endif
+    if (testcase == 0) {
+        config_perror("Unknown privacy protocol");
+        usm_free_user(newuser);
+        return;
+    }
+
+    cp = skip_token(cp);
+    /*
+     * READ: Encryption Pass Phrase or key
+     */
+    if (!cp) {
+        /*
+         * assume the same as the authentication key 
+         */
+        newuser->privKey = netsnmp_memdup(newuser->authKey,
+                                          newuser->authKeyLen);
+        newuser->privKeyLen = newuser->authKeyLen;
+    } else {
+        cp = copy_nword(cp, buf, sizeof(buf));
+        
+        if (strcmp(buf,"-m") == 0) {
+            /* a master key is specified */
+            cp = copy_nword(cp, buf, sizeof(buf));
+            ret = sizeof(userKey);
+            tmpp = userKey;
+            userKeyLen = 0;
+            if (!snmp_hex_to_binary(&tmpp, &ret, &userKeyLen, 0, buf)) {
+                config_perror("invalid key value argument to -m");
+                usm_free_user(newuser);
+                return;
+            }
+        } else if (strcmp(buf,"-l") != 0) {
+            /* a password is specified */
+            userKeyLen = sizeof(userKey);
+            ret2 = generate_Ku(newuser->authProtocol, newuser->authProtocolLen,
+                              (u_char *) buf, strlen(buf), userKey, &userKeyLen);
+            if (ret2 != SNMPERR_SUCCESS) {
+                config_perror("could not generate the privacy key from the "
+                              "supplied pass phrase.");
+                usm_free_user(newuser);
+                return;
+            }
+        }        
+        
+        /*
+         * And turn it into a localized key 
+         */
+        ret2 = sc_get_properlength(newuser->authProtocol,
+                                   newuser->authProtocolLen);
+        if (ret2 < 0) {
+            config_perror("could not get proper key length to use for the "
+                          "privacy algorithm.");
+            usm_free_user(newuser);
+            return;
+        }
+        newuser->privKey = (u_char *) malloc(ret2);
+
+        if (strcmp(buf,"-l") == 0) {
+            /* a local key is directly specified */
+            cp = copy_nword(cp, buf, sizeof(buf));
+            ret = ret2;
+            newuser->privKeyLen = 0;
+            if (!snmp_hex_to_binary(&newuser->privKey, &ret,
+                                    &newuser->privKeyLen, 0, buf)) {
+                config_perror("invalid key value argument to -l");
+                usm_free_user(newuser);
+                return;
+            }
+        } else {
+            newuser->privKeyLen = ret2;
+            ret2 = generate_kul(newuser->authProtocol, newuser->authProtocolLen,
+                               newuser->engineID, newuser->engineIDLen,
+                               userKey, userKeyLen,
+                               newuser->privKey, &newuser->privKeyLen);
+            if (ret2 != SNMPERR_SUCCESS) {
+                config_perror("could not generate localized privacy key "
+                              "(Kul) from the master key (Ku).");
+                usm_free_user(newuser);
+                return;
+            }
+        }
+    }
+
+    if ((newuser->privKeyLen >= privKeyLen) || (privKeyLen == 0)){
+      newuser->privKeyLen = privKeyLen;
+    }
+    else {
+      /* The privKey length is smaller than required by privProtocol */
+      usm_free_user(newuser);
+      return;
+    }
+
+  add:
+    usm_add_user(newuser);
+    DEBUGMSGTL(("usmUser", "created a new user %s at ", newuser->secName));
+    DEBUGMSGHEX(("usmUser", newuser->engineID, newuser->engineIDLen));
+    DEBUGMSG(("usmUser", "\n"));
+}
+
+void
+snmpv3_authtype_conf(const char *word, char *cptr)
+{
+#ifndef NETSNMP_DISABLE_MD5
+    if (strcasecmp(cptr, "MD5") == 0)
+        defaultAuthType = usmHMACMD5AuthProtocol;
+    else
+#endif
+        if (strcasecmp(cptr, "SHA") == 0)
+        defaultAuthType = usmHMACSHA1AuthProtocol;
+    else
+        config_perror("Unknown authentication type");
+    defaultAuthTypeLen = USM_LENGTH_OID_TRANSFORM;
+    DEBUGMSGTL(("snmpv3", "set default authentication type: %s\n", cptr));
+}
+
+const oid      *
+get_default_authtype(size_t * len)
+{
+    if (defaultAuthType == NULL) {
+        defaultAuthType = SNMP_DEFAULT_AUTH_PROTO;
+        defaultAuthTypeLen = SNMP_DEFAULT_AUTH_PROTOLEN;
+    }
+    if (len)
+        *len = defaultAuthTypeLen;
+    return defaultAuthType;
+}
+
+void
+snmpv3_privtype_conf(const char *word, char *cptr)
+{
+    int testcase = 0;
+
+#ifndef NETSNMP_DISABLE_DES
+    if (strcasecmp(cptr, "DES") == 0) {
+        testcase = 1;
+        defaultPrivType = usmDESPrivProtocol;
+    }
+#endif
+
+#if HAVE_AES
+    /* XXX AES: assumes oid length == des oid length */
+    if (strcasecmp(cptr, "AES128") == 0 ||
+        strcasecmp(cptr, "AES") == 0) {
+        testcase = 1;
+        defaultPrivType = usmAES128PrivProtocol;
+    }
+#endif
+    if (testcase == 0)
+        config_perror("Unknown privacy type");
+    defaultPrivTypeLen = SNMP_DEFAULT_PRIV_PROTOLEN;
+    DEBUGMSGTL(("snmpv3", "set default privacy type: %s\n", cptr));
+}
+
+const oid      *
+get_default_privtype(size_t * len)
+{
+    if (defaultPrivType == NULL) {
+#ifndef NETSNMP_DISABLE_DES
+        defaultPrivType = usmDESPrivProtocol;
+#else
+        defaultPrivType = usmAESPrivProtocol;
+#endif
+        defaultPrivTypeLen = USM_LENGTH_OID_TRANSFORM;
+    }
+    if (len)
+        *len = defaultPrivTypeLen;
+    return defaultPrivType;
+}
+
diff --git a/snmplib/snmpv3.c b/snmplib/snmpv3.c
index e3bdc50..435cafd 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
@@ -82,6 +75,8 @@
 #include <net-snmp/library/snmpusm.h>
 #include <net-snmp/library/transform_oids.h>
 
+#include <net-snmp/net-snmp-features.h>
+
 static u_long   engineBoots = 1;
 static unsigned int engineIDType = ENGINEID_TYPE_NETSNMP_RND;
 static unsigned char *engineID = NULL;
@@ -92,100 +87,10 @@
 static size_t   oldEngineIDLength = 0;
 static struct timeval snmpv3starttime;
 
-/*
- * Set up default snmpv3 parameter value storage.
- */
-static const oid *defaultAuthType = NULL;
-static size_t   defaultAuthTypeLen = 0;
-static const oid *defaultPrivType = NULL;
-static size_t   defaultPrivTypeLen = 0;
-
-/* this is probably an over-kill ifdef, but why not */
-#if defined(HAVE_SYS_TIMES_H) && defined(HAVE_UNISTD_H) && defined(HAVE_TIMES) && defined(_SC_CLK_TCK) && defined(HAVE_SYSCONF) && defined(UINT_MAX)
-
-#define SNMP_USE_TIMES 1
-
-static clock_t snmpv3startClock;
-static long clockticks = 0;
-static unsigned int lastcalltime = 0;
-static unsigned int wrapcounter = 0;
-
-#endif /* times() tests */
-
 #if defined(IFHWADDRLEN) && defined(SIOCGIFHWADDR)
 static int      getHwAddress(const char *networkDevice, char *addressOut);
 #endif
 
-void
-snmpv3_authtype_conf(const char *word, char *cptr)
-{
-#ifndef NETSNMP_DISABLE_MD5
-    if (strcasecmp(cptr, "MD5") == 0)
-        defaultAuthType = usmHMACMD5AuthProtocol;
-    else
-#endif
-        if (strcasecmp(cptr, "SHA") == 0)
-        defaultAuthType = usmHMACSHA1AuthProtocol;
-    else
-        config_perror("Unknown authentication type");
-    defaultAuthTypeLen = USM_LENGTH_OID_TRANSFORM;
-    DEBUGMSGTL(("snmpv3", "set default authentication type: %s\n", cptr));
-}
-
-const oid      *
-get_default_authtype(size_t * len)
-{
-    if (defaultAuthType == NULL) {
-        defaultAuthType = SNMP_DEFAULT_AUTH_PROTO;
-        defaultAuthTypeLen = SNMP_DEFAULT_AUTH_PROTOLEN;
-    }
-    if (len)
-        *len = defaultAuthTypeLen;
-    return defaultAuthType;
-}
-
-void
-snmpv3_privtype_conf(const char *word, char *cptr)
-{
-    int testcase = 0;
-
-#ifndef NETSNMP_DISABLE_DES
-    if (strcasecmp(cptr, "DES") == 0) {
-        testcase = 1;
-        defaultPrivType = usmDESPrivProtocol;
-    }
-#endif
-
-#if HAVE_AES
-    /* XXX AES: assumes oid length == des oid length */
-    if (strcasecmp(cptr, "AES128") == 0 ||
-        strcasecmp(cptr, "AES") == 0) {
-        testcase = 1;
-        defaultPrivType = usmAES128PrivProtocol;
-    }
-#endif
-    if (testcase == 0)
-        config_perror("Unknown privacy type");
-    defaultPrivTypeLen = SNMP_DEFAULT_PRIV_PROTOLEN;
-    DEBUGMSGTL(("snmpv3", "set default privacy type: %s\n", cptr));
-}
-
-const oid      *
-get_default_privtype(size_t * len)
-{
-    if (defaultPrivType == NULL) {
-#ifndef NETSNMP_DISABLE_DES
-        defaultPrivType = usmDESPrivProtocol;
-#else
-        defaultPrivType = usmAESPrivProtocol;
-#endif
-        defaultPrivTypeLen = USM_LENGTH_OID_TRANSFORM;
-    }
-    if (len)
-        *len = defaultPrivTypeLen;
-    return defaultPrivType;
-}
-
 /*******************************************************************-o-******
  * snmpv3_secLevel_conf
  *
@@ -216,16 +121,13 @@
 void
 snmpv3_secLevel_conf(const char *word, char *cptr)
 {
-    char            buf[1024];
     int             secLevel;
 
     if ((secLevel = parse_secLevel_conf( word, cptr )) >= 0 ) {
         netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID, 
 			   NETSNMP_DS_LIB_SECLEVEL, secLevel);
     } else {
-        snprintf(buf, sizeof(buf), "Unknown security level: %s", cptr);
-        buf[ sizeof(buf)-1 ] = 0;
-        config_perror(buf);
+	netsnmp_config_error("Unknown security level: %s", cptr);
     }
     DEBUGMSGTL(("snmpv3", "default secLevel set to: %s = %d\n", cptr,
                 netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, 
@@ -233,6 +135,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)
@@ -249,7 +154,7 @@
     /*
      * and '.... "-3x value" ....'  (*with* the quotes)
      */
-    while (*optarg && isspace(*optarg)) {
+    while (*optarg && isspace((unsigned char)(*optarg))) {
         optarg++;
     }
     /*
@@ -359,6 +264,7 @@
 
         break;
 
+#ifdef NETSNMP_SECMOD_USM
     case 'a':
 #ifndef NETSNMP_DISABLE_MD5
         if (!strcasecmp(optarg, "MD5")) {
@@ -409,6 +315,7 @@
     case 'X':
         *Xpsz = optarg;
         break;
+#endif /* NETSNMP_SECMOD_USM */
 
     case 'm': {
         size_t bufSize = sizeof(session->securityAuthKey);
@@ -535,7 +442,7 @@
          * get the host name and save the information 
          */
         gethostname((char *) buf, sizeof(buf));
-        hent = gethostbyname((char *) buf);
+        hent = netsnmp_gethostbyname((char *) buf);
         if (hent && hent->h_addrtype == AF_INET6) {
             localEngineIDType = ENGINEID_TYPE_IPV6;
         } else {
@@ -558,7 +465,7 @@
          * get the host name and save the information 
          */
         gethostname((char *) buf, sizeof(buf));
-        hent = gethostbyname((char *) buf);
+        hent = netsnmp_gethostbyname((char *) buf);
     }
 #endif
 #endif                          /* HAVE_GETHOSTNAME */
@@ -751,297 +658,6 @@
     return 0;
 }
 
-int
-free_enginetime_on_shutdown(int majorid, int minorid, void *serverarg,
-			    void *clientarg)
-{
-    DEBUGMSGTL(("snmpv3", "free enginetime callback called\n"));
-    if (engineID != NULL)
-	free_enginetime(engineID, engineIDLength);
-    return 0;
-}
-
-void
-usm_parse_create_usmUser(const char *token, char *line)
-{
-    char           *cp;
-    char            buf[SNMP_MAXBUF_MEDIUM];
-    struct usmUser *newuser;
-    u_char          userKey[SNMP_MAXBUF_SMALL], *tmpp;
-    size_t          userKeyLen = SNMP_MAXBUF_SMALL;
-    size_t          privKeyLen = 0;
-    size_t          ret;
-    int             ret2;
-    int             testcase;
-
-    newuser = usm_create_user();
-
-    /*
-     * READ: Security Name 
-     */
-    cp = copy_nword(line, buf, sizeof(buf));
-
-    /*
-     * might be a -e ENGINEID argument 
-     */
-    if (strcmp(buf, "-e") == 0) {
-        size_t          ebuf_len = 32, eout_len = 0;
-        u_char         *ebuf = (u_char *) malloc(ebuf_len);
-
-        if (ebuf == NULL) {
-            config_perror("malloc failure processing -e flag");
-            usm_free_user(newuser);
-            return;
-        }
-
-        /*
-         * Get the specified engineid from the line.  
-         */
-        cp = copy_nword(cp, buf, sizeof(buf));
-        if (!snmp_hex_to_binary(&ebuf, &ebuf_len, &eout_len, 1, buf)) {
-            config_perror("invalid EngineID argument to -e");
-            usm_free_user(newuser);
-            SNMP_FREE(ebuf);
-            return;
-        }
-
-        newuser->engineID = ebuf;
-        newuser->engineIDLen = eout_len;
-        cp = copy_nword(cp, buf, sizeof(buf));
-    } else {
-        newuser->engineID = snmpv3_generate_engineID(&ret);
-        if (ret == 0) {
-            usm_free_user(newuser);
-            return;
-        }
-        newuser->engineIDLen = ret;
-    }
-
-    newuser->secName = strdup(buf);
-    newuser->name = strdup(buf);
-
-    if (!cp)
-        goto add;               /* no authentication or privacy type */
-
-    /*
-     * READ: Authentication Type 
-     */
-#ifndef NETSNMP_DISABLE_MD5
-    if (strncmp(cp, "MD5", 3) == 0) {
-        memcpy(newuser->authProtocol, usmHMACMD5AuthProtocol,
-               sizeof(usmHMACMD5AuthProtocol));
-    } else
-#endif
-        if (strncmp(cp, "SHA", 3) == 0) {
-        memcpy(newuser->authProtocol, usmHMACSHA1AuthProtocol,
-               sizeof(usmHMACSHA1AuthProtocol));
-    } else {
-        config_perror("Unknown authentication protocol");
-        usm_free_user(newuser);
-        return;
-    }
-
-    cp = skip_token(cp);
-
-    /*
-     * READ: Authentication Pass Phrase or key
-     */
-    if (!cp) {
-        config_perror("no authentication pass phrase");
-        usm_free_user(newuser);
-        return;
-    }
-    cp = copy_nword(cp, buf, sizeof(buf));
-    if (strcmp(buf,"-m") == 0) {
-        /* a master key is specified */
-        cp = copy_nword(cp, buf, sizeof(buf));
-        ret = sizeof(userKey);
-        tmpp = userKey;
-        userKeyLen = 0;
-        if (!snmp_hex_to_binary(&tmpp, &ret, &userKeyLen, 0, buf)) {
-            config_perror("invalid key value argument to -m");
-            usm_free_user(newuser);
-            return;
-        }
-    } else if (strcmp(buf,"-l") != 0) {
-        /* a password is specified */
-        userKeyLen = sizeof(userKey);
-        ret2 = generate_Ku(newuser->authProtocol, newuser->authProtocolLen,
-                          (u_char *) buf, strlen(buf), userKey, &userKeyLen);
-        if (ret2 != SNMPERR_SUCCESS) {
-            config_perror("could not generate the authentication key from the "
-                          "supplied pass phrase.");
-            usm_free_user(newuser);
-            return;
-        }
-    }        
-        
-    /*
-     * And turn it into a localized key 
-     */
-    ret2 = sc_get_properlength(newuser->authProtocol,
-                               newuser->authProtocolLen);
-    if (ret2 <= 0) {
-        config_perror("Could not get proper authentication protocol key length");
-	usm_free_user(newuser);
-        return;
-    }
-    newuser->authKey = (u_char *) malloc(ret2);
-
-    if (strcmp(buf,"-l") == 0) {
-        /* a local key is directly specified */
-        cp = copy_nword(cp, buf, sizeof(buf));
-        newuser->authKeyLen = 0;
-        ret = ret2;
-        if (!snmp_hex_to_binary(&newuser->authKey, &ret,
-                                &newuser->authKeyLen, 0, buf)) {
-            config_perror("invalid key value argument to -l");
-            usm_free_user(newuser);
-            return;
-        }
-        if (ret != newuser->authKeyLen) {
-            config_perror("improper key length to -l");
-            usm_free_user(newuser);
-            return;
-        }
-    } else {
-        newuser->authKeyLen = ret2;
-        ret2 = generate_kul(newuser->authProtocol, newuser->authProtocolLen,
-                           newuser->engineID, newuser->engineIDLen,
-                           userKey, userKeyLen,
-                           newuser->authKey, &newuser->authKeyLen);
-        if (ret2 != SNMPERR_SUCCESS) {
-            config_perror("could not generate localized authentication key "
-                          "(Kul) from the master key (Ku).");
-            usm_free_user(newuser);
-            return;
-        }
-    }
-
-    if (!cp)
-        goto add;               /* no privacy type (which is legal) */
-
-    /*
-     * READ: Privacy Type 
-     */
-    testcase = 0;
-#ifndef NETSNMP_DISABLE_DES
-    if (strncmp(cp, "DES", 3) == 0) {
-        memcpy(newuser->privProtocol, usmDESPrivProtocol,
-               sizeof(usmDESPrivProtocol));
-        testcase = 1;
-	/* DES uses a 128 bit key, 64 bits of which is a salt */
-	privKeyLen = 16;
-    }
-#endif
-#ifdef HAVE_AES
-    if (strncmp(cp, "AES128", 6) == 0 ||
-               strncmp(cp, "AES", 3) == 0) {
-        memcpy(newuser->privProtocol, usmAESPrivProtocol,
-               sizeof(usmAESPrivProtocol));
-        testcase = 1;
-	privKeyLen = 16;
-    }
-#endif
-    if (testcase == 0) {
-        config_perror("Unknown privacy protocol");
-        usm_free_user(newuser);
-        return;
-    }
-
-    cp = skip_token(cp);
-    /*
-     * READ: Encryption Pass Phrase or key
-     */
-    if (!cp) {
-        /*
-         * assume the same as the authentication key 
-         */
-        newuser->privKey = netsnmp_memdup(newuser->authKey,
-                                          newuser->authKeyLen);
-        newuser->privKeyLen = newuser->authKeyLen;
-    } else {
-        cp = copy_nword(cp, buf, sizeof(buf));
-        
-        if (strcmp(buf,"-m") == 0) {
-            /* a master key is specified */
-            cp = copy_nword(cp, buf, sizeof(buf));
-            ret = sizeof(userKey);
-            tmpp = userKey;
-            userKeyLen = 0;
-            if (!snmp_hex_to_binary(&tmpp, &ret, &userKeyLen, 0, buf)) {
-                config_perror("invalid key value argument to -m");
-                usm_free_user(newuser);
-                return;
-            }
-        } else if (strcmp(buf,"-l") != 0) {
-            /* a password is specified */
-            userKeyLen = sizeof(userKey);
-            ret2 = generate_Ku(newuser->authProtocol, newuser->authProtocolLen,
-                              (u_char *) buf, strlen(buf), userKey, &userKeyLen);
-            if (ret2 != SNMPERR_SUCCESS) {
-                config_perror("could not generate the privacy key from the "
-                              "supplied pass phrase.");
-                usm_free_user(newuser);
-                return;
-            }
-        }        
-        
-        /*
-         * And turn it into a localized key 
-         */
-        ret2 = sc_get_properlength(newuser->authProtocol,
-                                   newuser->authProtocolLen);
-        if (ret2 < 0) {
-            config_perror("could not get proper key length to use for the "
-                          "privacy algorithm.");
-            usm_free_user(newuser);
-            return;
-        }
-        newuser->privKey = (u_char *) malloc(ret2);
-
-        if (strcmp(buf,"-l") == 0) {
-            /* a local key is directly specified */
-            cp = copy_nword(cp, buf, sizeof(buf));
-            ret = ret2;
-            newuser->privKeyLen = 0;
-            if (!snmp_hex_to_binary(&newuser->privKey, &ret,
-                                    &newuser->privKeyLen, 0, buf)) {
-                config_perror("invalid key value argument to -l");
-                usm_free_user(newuser);
-                return;
-            }
-        } else {
-            newuser->privKeyLen = ret2;
-            ret2 = generate_kul(newuser->authProtocol, newuser->authProtocolLen,
-                               newuser->engineID, newuser->engineIDLen,
-                               userKey, userKeyLen,
-                               newuser->privKey, &newuser->privKeyLen);
-            if (ret2 != SNMPERR_SUCCESS) {
-                config_perror("could not generate localized privacy key "
-                              "(Kul) from the master key (Ku).");
-                usm_free_user(newuser);
-                return;
-            }
-        }
-    }
-
-    if ((newuser->privKeyLen >= privKeyLen) || (privKeyLen == 0)){
-      newuser->privKeyLen = privKeyLen;
-    }
-    else {
-      /* The privKey length is smaller than required by privProtocol */
-      usm_free_user(newuser);
-      return;
-    }
-
-  add:
-    usm_add_user(newuser);
-    DEBUGMSGTL(("usmUser", "created a new user %s at ", newuser->secName));
-    DEBUGMSGHEX(("usmUser", newuser->engineID, newuser->engineIDLen));
-    DEBUGMSG(("usmUser", "\n"));
-}
-
 /*******************************************************************-o-******
  * engineBoots_conf
  *
@@ -1056,7 +672,7 @@
 engineBoots_conf(const char *word, char *cptr)
 {
     engineBoots = atoi(cptr) + 1;
-    DEBUGMSGTL(("snmpv3", "engineBoots: %d\n", engineBoots));
+    DEBUGMSGTL(("snmpv3", "engineBoots: %lu\n", engineBoots));
 }
 
 /*******************************************************************-o-******
@@ -1127,9 +743,7 @@
         /*
          * See if already set if so erase & release it 
          */
-        if (NULL != engineIDNic) {
-            SNMP_FREE(engineIDNic);
-        }
+        SNMP_FREE(engineIDNic);
         engineIDNic = (u_char *) malloc(strlen(cptr) + 1);
         if (NULL != engineIDNic) {
             strcpy((char *) engineIDNic, cptr);
@@ -1198,7 +812,7 @@
 }
 
 /*
- * engineID_old_conf(const char *, char *):
+ * oldengineID_conf(const char *, char *):
  * 
  * Reads a octet string encoded engineID into the oldEngineID and
  * oldEngineIDLen pointers.
@@ -1210,8 +824,32 @@
 }
 
 /*
+ * exactEngineID_conf(const char *, char *):
+ * 
+ * Reads a octet string encoded engineID into the engineID and
+ * engineIDLen pointers.
+ */
+void
+exactEngineID_conf(const char *word, char *cptr)
+{
+    read_config_read_octet_string(cptr, &engineID, &engineIDLength);
+    if (engineIDLength > MAX_ENGINEID_LENGTH) {
+	netsnmp_config_error(
+	    "exactEngineID '%s' too long; truncating to %d bytes",
+	    cptr, MAX_ENGINEID_LENGTH);
+        engineID[MAX_ENGINEID_LENGTH - 1] = '\0';
+        engineIDLength = MAX_ENGINEID_LENGTH;
+    }
+    engineIDIsSet = 1;
+    engineIDType = ENGINEID_TYPE_EXACT;
+}
+
+
+/*
  * merely call 
  */
+netsnmp_feature_child_of(get_enginetime_alarm, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_GET_ENGINETIME_ALARM
 void
 get_enginetime_alarm(unsigned int regnum, void *clientargs)
 {
@@ -1219,6 +857,7 @@
        wrapping of the times() output */
     snmpv3_local_snmpEngineTime();
 }
+#endif /* NETSNMP_FEATURE_REMOVE_GET_ENGINETIME_ALARM */
 
 /*******************************************************************-o-******
  * init_snmpv3
@@ -1233,19 +872,7 @@
 void
 init_snmpv3(const char *type)
 {
-#if SNMP_USE_TIMES
-  struct tms dummy;
-
-  /* fixme: -1 is fault code... */
-  snmpv3startClock = times(&dummy);
-
-  /* remember how many ticks per second there are, since times() returns this */
-
-  clockticks = sysconf(_SC_CLK_TCK);
-
-#endif /* SNMP_USE_TIMES */
-
-    gettimeofday(&snmpv3starttime, NULL);
+    netsnmp_get_monotonic_clock(&snmpv3starttime);
 
     if (!type)
         type = "__snmpapp__";
@@ -1267,13 +894,6 @@
                            snmpv3_store, (void *) strdup(type));
 
     /*
-     * Free stuff at shutdown time
-     */
-    snmp_register_callback(SNMP_CALLBACK_LIBRARY,
-                           SNMP_CALLBACK_SHUTDOWN,
-                           free_enginetime_on_shutdown, NULL);
-
-    /*
      * initialize submodules 
      */
     /*
@@ -1293,6 +913,8 @@
                                     "string");
     register_prenetsnmp_mib_handler(type, "oldEngineID", oldengineID_conf,
                                     NULL, NULL);
+    register_prenetsnmp_mib_handler(type, "exactEngineID", exactEngineID_conf,
+                                    NULL, NULL);
     register_prenetsnmp_mib_handler(type, "engineIDType",
                                     engineIDType_conf, NULL, "num");
     register_prenetsnmp_mib_handler(type, "engineIDNic", engineIDNic_conf,
@@ -1331,30 +953,9 @@
     register_config_handler("snmp", "defVersion", version_conf, NULL,
                             "1|2c|3");
 
-    register_config_handler("snmp", "defAuthType", snmpv3_authtype_conf,
-                            NULL, "MD5|SHA");
-    register_config_handler("snmp", "defPrivType", snmpv3_privtype_conf,
-                            NULL,
-#ifdef HAVE_AES
-                            "DES|AES");
-#else
-                            "DES (AES support not available)");
-#endif
     register_config_handler("snmp", "defSecurityLevel",
                             snmpv3_secLevel_conf, NULL,
                             "noAuthNoPriv|authNoPriv|authPriv");
-    register_config_handler(type, "userSetAuthPass", usm_set_password,
-                            NULL, NULL);
-    register_config_handler(type, "userSetPrivPass", usm_set_password,
-                            NULL, NULL);
-    register_config_handler(type, "userSetAuthKey", usm_set_password, NULL,
-                            NULL);
-    register_config_handler(type, "userSetPrivKey", usm_set_password, NULL,
-                            NULL);
-    register_config_handler(type, "userSetAuthLocalKey", usm_set_password,
-                            NULL, NULL);
-    register_config_handler(type, "userSetPrivLocalKey", usm_set_password,
-                            NULL, NULL);
 }
 
 /*
@@ -1383,18 +984,20 @@
     /*
      * 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;
     }
 
+#ifdef NETSNMP_SECMOD_USM
     /*
-     * set our local engineTime in the LCD timing cache 
+     * for USM set our local engineTime in the LCD timing cache 
      */
     set_enginetime(c_engineID, engineIDLen,
                    snmpv3_local_snmpEngineBoots(),
                    snmpv3_local_snmpEngineTime(), TRUE);
+#endif /* NETSNMP_SECMOD_USM */
 
     SNMP_FREE(c_engineID);
     return SNMPERR_SUCCESS;
@@ -1508,10 +1111,7 @@
     if (!dest || !destlen)
         return 0;
 
-    if (*dest) {
-        SNMP_FREE(*dest);
-        *dest = NULL;
-    }
+    SNMP_FREE(*dest);
     *destlen = 0;
 
     if (srclen && src) {
@@ -1559,38 +1159,33 @@
 
 }                               /* end snmpv3_generate_engineID() */
 
-/*
- * snmpv3_local_snmpEngineTime(): return the number of seconds since the
- * snmpv3 engine last incremented engine_boots 
+/**
+ * Return the value of snmpEngineTime. According to RFC 3414 snmpEngineTime
+ * is a 31-bit counter. engineBoots must be incremented every time that
+ * counter wraps around.
+ *
+ * @see See also <a href="http://tools.ietf.org/html/rfc3414">RFC 3414</a>.
+ *
+ * @note It is assumed that this function is called at least once every
+ *   2**31 seconds.
  */
 u_long
 snmpv3_local_snmpEngineTime(void)
 {
-#ifdef SNMP_USE_TIMES
-  struct tms dummy;
-  clock_t now = times(&dummy);
-  /* fixme: -1 is fault code... */
-  unsigned int result;
+#ifdef NETSNMP_FEATURE_CHECKING
+    netsnmp_feature_require(calculate_sectime_diff)
+#endif /* NETSNMP_FEATURE_CHECKING */
 
-  if (now < snmpv3startClock) {
-      result = UINT_MAX - (snmpv3startClock - now);
-  } else {
-      result = now - snmpv3startClock;
-  }
-  if (result < lastcalltime) {
-      /* wrapped */
-      wrapcounter++;
-  }
-  lastcalltime = result;
-  result =  (UINT_MAX/clockticks)*wrapcounter + result/clockticks;
-
-  return result;
-#else /* !SNMP_USE_TIMES */
+    static uint32_t last_engineTime;
     struct timeval  now;
+    uint32_t engineTime;
 
-    gettimeofday(&now, NULL);
-    return calculate_sectime_diff(&now, &snmpv3starttime);
-#endif /* HAVE_SYS_TIMES_H */
+    netsnmp_get_monotonic_clock(&now);
+    engineTime = calculate_sectime_diff(&now, &snmpv3starttime) & 0x7fffffffL;
+    if (engineTime < last_engineTime)
+        engineBoots++;
+    last_engineTime = engineTime;
+    return engineTime;
 }
 
 
@@ -1662,18 +1257,17 @@
 #endif
 
 #ifdef NETSNMP_ENABLE_TESTING_CODE
-/*
- * snmpv3_set_engineBootsAndTime(): this function does not exist.  Go away. 
- */
-/*
- * It certainly should never be used, unless in a testing scenero,
- * which is why it was created 
+/**
+ * Set SNMPv3 engineBoots and start time.
+ *
+ * @note This function does not exist. Go away. It certainly should never be
+ *   used, unless in a testing scenario, which is why it was created
  */
 void
 snmpv3_set_engineBootsAndTime(int boots, int ttime)
 {
     engineBoots = boots;
-    gettimeofday(&snmpv3starttime, NULL);
+    netsnmp_get_monotonic_clock(&snmpv3starttime);
     snmpv3starttime.tv_sec -= ttime;
 }
 #endif
diff --git a/snmplib/snprintf.c b/snmplib/snprintf.c
index aaaf7d1..726c4f4 100644
--- a/snmplib/snprintf.c
+++ b/snmplib/snprintf.c
@@ -63,25 +63,11 @@
 #include <ctype.h>
 #include <sys/types.h>
 
-#if HAVE_STDARG_H
 # include <stdarg.h>
-# define HAVE_STDARGS           /* let's hope that works everywhere (mj) */
 # define VA_LOCAL_DECL   va_list ap
 # define VA_START(f)     va_start(ap, f)
 # define VA_SHIFT(v,t)  ;       /* no-op for ANSI */
 # define VA_END          va_end(ap)
-#elif HAVE_VARARGS_H
-#  include <varargs.h>
-#  undef HAVE_STDARGS
-#  define VA_LOCAL_DECL   va_list ap
-#  define VA_START(f)     va_start(ap)  /* f is ignored! */
-#  define VA_SHIFT(v,t) v = va_arg(ap,t)
-#  define VA_END        va_end(ap)
-#else
-/*
- * XX ** NO VARARGS ** XX
- */
-#endif
 
 #ifdef HAVE_LONG_DOUBLE
 #define LDOUBLE long double
@@ -725,20 +711,9 @@
 /*
  * VARARGS3 
  */
-#ifdef HAVE_STDARGS
 int
 snprintf(char *str, size_t count, const char *fmt, ...)
-#else
-int
-snprintf(va_alist)
-     va_dcl
-#endif
 {
-#ifndef HAVE_STDARGS
-    char           *str;
-    size_t          count;
-    char           *fmt;
-#endif
     VA_LOCAL_DECL;
 
     VA_START(fmt);
@@ -828,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 be94f29..9ee53b4 100644
--- a/snmplib/strtoull.c
+++ b/snmplib/strtoull.c
@@ -20,6 +20,8 @@
 
 #include <net-snmp/net-snmp-config.h>
 
+#ifndef HAVE_STRTOULL
+
 #include <errno.h>
 #include <ctype.h>
 #include <limits.h>
@@ -49,13 +51,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;
@@ -162,122 +159,4 @@
     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) */
-
-/*
- * 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:
- */
+#endif /* HAVE_STRTOULL */
diff --git a/snmplib/system.c b/snmplib/system.c
index 38ecfeb..b6de145 100644
--- a/snmplib/system.c
+++ b/snmplib/system.c
@@ -33,9 +33,16 @@
  * distributed with the Net-SNMP package.
  */
 /*
+ * 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.
+ */
+/*
  * System dependent routines go here
  */
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <stdio.h>
 #include <ctype.h>
 #include <errno.h>
@@ -54,11 +61,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
@@ -74,15 +77,16 @@
 #include <netinet/in.h>
 #endif
 
-#if HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
 #if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
 #endif
 #if HAVE_NET_IF_H
 #include <net/if.h>
 #endif
+#if HAVE_NETDB_H
+#include <netdb.h>
+#endif
+
 
 #if HAVE_SYS_SOCKIO_H
 #include <sys/sockio.h>
@@ -144,10 +148,34 @@
 #include <sys/systeminfo.h>
 #endif
 
+#if defined(darwin9)
+#include <crt_externs.h>        /* for _NSGetArgv() */
+#endif
+
+#if HAVE_PWD_H
+#include <pwd.h>
+#endif
+#if HAVE_GRP_H
+#include <grp.h>
+#endif
+
 #if HAVE_LIMITS_H
 #include <limits.h>
 #endif
 
+#if HAVE_ARPA_INET_H
+#include <arpa/inet.h>
+#endif
+
+#ifdef DNSSEC_LOCAL_VALIDATION
+#if 1 /*HAVE_ARPA_NAMESER_H*/
+#include <arpa/nameser.h>
+#endif
+#include <validator/validator.h>
+/* NetSNMP and DNSSEC-Tools both define FREE. We'll not use either here. */
+#undef FREE
+#endif
+
 #include <net-snmp/types.h>
 #include <net-snmp/output_api.h>
 #include <net-snmp/utilities.h>
@@ -156,6 +184,16 @@
 #include <net-snmp/library/snmp_api.h>
 #include <net-snmp/library/read_config.h> /* for get_temp_file_pattern() */
 
+#include "inet_ntop.h"
+
+/* NetSNMP and DNSSEC-Tools both define FREE. We'll not use either here. */
+#undef FREE
+
+netsnmp_feature_child_of(system_all, libnetsnmp)
+
+netsnmp_feature_child_of(user_information, system_all)
+netsnmp_feature_child_of(calculate_sectime_diff, system_all)
+
 #ifndef IFF_LOOPBACK
 #	define IFF_LOOPBACK 0
 #endif
@@ -166,6 +204,37 @@
 # define LOOPBACK    0x7f000001
 #endif
 
+#ifndef EAI_FAIL
+# define EAI_FAIL    -4    /* Non-recoverable failure in name res.  */
+#endif
+
+#if defined(HAVE_FORK)
+static void
+_daemon_prep(int stderr_log)
+{
+    /* Avoid keeping any directory in use. */
+    chdir("/");
+
+    if (stderr_log)
+        return;
+
+    /*
+     * Close inherited file descriptors to avoid
+     * keeping unnecessary references.
+     */
+    close(0);
+    close(1);
+    close(2);
+
+    /*
+     * Redirect std{in,out,err} to /dev/null, just in case.
+     */
+    open("/dev/null", O_RDWR);
+    dup(0);
+    dup(0);
+}
+#endif
+
 /**
  * fork current process into the background.
  *
@@ -194,6 +263,22 @@
     int i = 0;
     DEBUGMSGT(("daemonize","deamonizing...\n"));
 #if HAVE_FORK
+#if defined(darwin9)
+     char            path [PATH_MAX] = "";
+     uint32_t        size = sizeof (path);
+
+     /*
+      * if we are already launched in a "daemonized state", just
+      * close & redirect the file descriptors
+      */
+     if(getppid() <= 2) {
+         _daemon_prep(stderr_log);
+         return 0;
+     }
+
+     if (_NSGetExecutablePath (path, &size))
+         return -1;
+#endif
     /*
      * Fork to return control to the invoking process and to
      * guarantee that we aren't a process group leader.
@@ -235,26 +320,22 @@
             
             DEBUGMSGT(("daemonize","child continuing\n"));
 
-            /* Avoid keeping any directory in use. */
-            chdir("/");
-            
-            if (!stderr_log) {
-                /*
-                 * Close inherited file descriptors to avoid
-                 * keeping unnecessary references.
-                 */
-                close(0);
-                close(1);
-                close(2);
-                
-                /*
-                 * Redirect std{in,out,err} to /dev/null, just in
-                 * case.
-                 */
-                open("/dev/null", O_RDWR);
-                dup(0);
-                dup(0);
-            }
+#if ! defined(darwin9)
+            _daemon_prep(stderr_log);
+#else
+             /*
+              * Some darwin calls (using mach ports) don't work after
+              * a fork. So, now that we've forked, we re-exec ourself
+              * to ensure that the child's mach ports are all set up correctly,
+              * the getppid call above will prevent the exec child from
+              * forking...
+              */
+             char * const *argv = *_NSGetArgv ();
+             DEBUGMSGT(("daemonize","re-execing forked child\n"));
+             execv (path, argv);
+             snmp_log(LOG_ERR,"Forked child unable to re-exec - %s.\n", strerror (errno));
+             exit (0);
+#endif
         }
 #endif /* !WIN32 */
     }
@@ -266,204 +347,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)
 {
@@ -646,7 +529,7 @@
 
     for (ifrp = ifc.ifc_req;
         (char *)ifrp < (char *)ifc.ifc_req + ifc.ifc_len;
-#ifdef STRUCT_SOCKADDR_HAS_SA_LEN
+#ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
         ifrp = (struct ifreq *)(((char *) ifrp) +
                                 sizeof(ifrp->ifr_name) +
                                 ifrp->ifr_addr.sa_len)
@@ -709,14 +592,17 @@
     size_t          len;
 #elif defined(NETSNMP_CAN_USE_NLIST)
     int             kmem;
-    static struct nlist nl[] = {
 #if !defined(hpux)
-        {(char *) "_boottime"},
+    static char boottime_name[] = "_boottime";
 #else
-        {(char *) "boottime"},
+    static char boottime_name[] = "boottime";
 #endif
-        {(char *) ""}
-    };
+    static char empty_name[] = "";
+    struct nlist nl[2];
+
+    memset(nl, 0, sizeof(nl));
+    nl[0].n_name = boottime_name;
+    nl[1].n_name = empty_name;
 #endif                          /* NETSNMP_CAN_USE_SYSCTL */
 #endif                          /* hpux10 || hpux 11 */
 
@@ -756,30 +642,25 @@
 }
 #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)
+    static char lbolt_name[] = "lbolt";
     struct nlist nl;
     int kmem;
     time_t lbolt;
-    nl.n_name = (char *) "lbolt";
+    nl.n_name = lbolt_name;
     if(knlist(&nl, 1, sizeof(struct nlist)) != 0) return(0);
     if(nl.n_type == 0 || nl.n_value == 0) return(0);
     if((kmem = open("/dev/mem", 0)) < 0) return 0;
@@ -787,9 +668,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;
@@ -814,9 +693,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) {
@@ -825,16 +702,303 @@
         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
 }
 
 #endif                          /* ! WIN32 */
 /*******************************************************************/
 
+#ifdef DNSSEC_LOCAL_VALIDATION
+static val_context_t *_val_context = NULL;
+
+static val_context_t *
+netsnmp_validator_context(void)
+{
+    if (NULL == _val_context) {
+        int rc;
+        char *apptype = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID, 
+                                              NETSNMP_DS_LIB_APPTYPE);
+        DEBUGMSGTL(("dns:sec:context", "creating dnssec context for %s\n",
+                    apptype));
+        rc = val_create_context(apptype, &_val_context);
+    }
+
+    return _val_context;
+}
+#endif /* DNSSEC_LOCAL_VALIDATION */
+
+int
+netsnmp_gethostbyname_v4(const char* name, in_addr_t *addr_out)
+{
+#if HAVE_GETADDRINFO
+    struct addrinfo *addrs = NULL;
+    struct addrinfo hint;
+    int             err;
+
+    memset(&hint, 0, sizeof hint);
+    hint.ai_flags = 0;
+    hint.ai_family = PF_INET;
+    hint.ai_socktype = SOCK_DGRAM;
+    hint.ai_protocol = 0;
+
+    err = netsnmp_getaddrinfo(name, NULL, &hint, &addrs);
+    if (err != 0) {
+        return -1;
+    }
+
+    if (addrs != NULL) {
+        memcpy(addr_out,
+               &((struct sockaddr_in *) addrs->ai_addr)->sin_addr,
+               sizeof(in_addr_t));
+        freeaddrinfo(addrs);
+    } else {
+        DEBUGMSGTL(("get_thisaddr",
+                    "Failed to resolve IPv4 hostname\n"));
+    }
+    return 0;
+
+#elif HAVE_GETHOSTBYNAME
+    struct hostent *hp = NULL;
+
+    hp = netsnmp_gethostbyname(name);
+    if (hp == NULL) {
+        DEBUGMSGTL(("get_thisaddr",
+                    "hostname (couldn't resolve)\n"));
+        return -1;
+    } else if (hp->h_addrtype != AF_INET) {
+        DEBUGMSGTL(("get_thisaddr",
+                    "hostname (not AF_INET!)\n"));
+        return -1;
+    } else {
+        DEBUGMSGTL(("get_thisaddr",
+                    "hostname (resolved okay)\n"));
+        memcpy(addr_out, hp->h_addr, sizeof(in_addr_t));
+    }
+    return 0;
+
+#elif HAVE_GETIPNODEBYNAME
+    struct hostent *hp = NULL;
+    int             err;
+
+    hp = getipnodebyname(peername, AF_INET, 0, &err);
+    if (hp == NULL) {
+        DEBUGMSGTL(("get_thisaddr",
+                    "hostname (couldn't resolve = %d)\n", err));
+        return -1;
+    }
+    DEBUGMSGTL(("get_thisaddr",
+                "hostname (resolved okay)\n"));
+    memcpy(addr_out, hp->h_addr, sizeof(in_addr_t));
+    return 0;
+
+#else /* HAVE_GETIPNODEBYNAME */
+    return -1;
+#endif
+}
+
+int
+netsnmp_getaddrinfo(const char *name, const char *service,
+                    const struct addrinfo *hints, struct addrinfo **res)
+{
+#if HAVE_GETADDRINFO
+    struct addrinfo *addrs = NULL;
+    struct addrinfo hint;
+    int             err;
+#ifdef DNSSEC_LOCAL_VALIDATION
+    val_status_t    val_status;
+#endif
+
+    DEBUGMSGTL(("dns:getaddrinfo", "looking up "));
+    if (name)
+        DEBUGMSG(("dns:getaddrinfo", "\"%s\"", name));
+    else
+        DEBUGMSG(("dns:getaddrinfo", "<NULL>"));
+
+    if (service)
+	DEBUGMSG(("dns:getaddrinfo", ":\"%s\"", service));
+
+    if (hints)
+	DEBUGMSG(("dns:getaddrinfo", " with hint ({ ... })"));
+    else
+	DEBUGMSG(("dns:getaddrinfo", " with no hint"));
+
+    DEBUGMSG(("dns:getaddrinfo", "\n"));
+
+    if (NULL == hints) {
+        memset(&hint, 0, sizeof hint);
+        hint.ai_flags = 0;
+        hint.ai_family = PF_INET;
+        hint.ai_socktype = SOCK_DGRAM;
+        hint.ai_protocol = 0;
+        hints = &hint;
+    } else {
+        memcpy(&hint, hints, sizeof hint);
+    }
+
+#ifndef DNSSEC_LOCAL_VALIDATION
+    err = getaddrinfo(name, NULL, &hint, &addrs);
+#else /* DNSSEC_LOCAL_VALIDATION */
+    err = val_getaddrinfo(netsnmp_validator_context(), name, NULL, &hint,
+                          &addrs, &val_status);
+    DEBUGMSGTL(("dns:sec:val", "err %d, val_status %d / %s; trusted: %d\n",
+                err, val_status, p_val_status(val_status),
+                val_istrusted(val_status)));
+    if (! val_istrusted(val_status)) {
+        int rc;
+        if ((err != 0) && VAL_GETADDRINFO_HAS_STATUS(err)) {
+            snmp_log(LOG_WARNING,
+                     "WARNING: UNTRUSTED error in DNS resolution for %s!\n",
+                     name);
+            rc = EAI_FAIL;
+        } else {
+            snmp_log(LOG_WARNING,
+                     "The authenticity of DNS response is not trusted (%s)\n",
+                     p_val_status(val_status));
+            rc = EAI_NONAME;
+        }
+        /** continue anyways if DNSSEC_WARN_ONLY is set */
+        if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                    NETSNMP_DS_LIB_DNSSEC_WARN_ONLY))
+            return rc;
+    }
+
+
+#endif /* DNSSEC_LOCAL_VALIDATION */
+    *res = addrs;
+    if ((0 == err) && addrs && addrs->ai_addr) {
+        DEBUGMSGTL(("dns:getaddrinfo", "answer { AF_INET, %s:%hu }\n",
+                    inet_ntoa(((struct sockaddr_in*)addrs->ai_addr)->sin_addr),
+                    ntohs(((struct sockaddr_in*)addrs->ai_addr)->sin_port)));
+    }
+    return err;
+#else
+    NETSNMP_LOGONCE((LOG_ERR, "getaddrinfo not available"));
+    return EAI_FAIL;
+#endif /* getaddrinfo */
+}
+
+struct hostent *
+netsnmp_gethostbyname(const char *name)
+{
+#if HAVE_GETHOSTBYNAME
+#ifdef DNSSEC_LOCAL_VALIDATION
+    val_status_t val_status;
+#endif
+    struct hostent *hp = NULL;
+
+    if (NULL == name)
+        return NULL;
+
+    DEBUGMSGTL(("dns:gethostbyname", "looking up %s\n", name));
+
+#ifdef DNSSEC_LOCAL_VALIDATION
+    hp  = val_gethostbyname(netsnmp_validator_context(), name, &val_status);
+    DEBUGMSGTL(("dns:sec:val", "val_status %d / %s; trusted: %d\n",
+                val_status, p_val_status(val_status),
+                val_istrusted(val_status)));
+    if (!val_istrusted(val_status)) {
+        snmp_log(LOG_WARNING,
+                 "The authenticity of DNS response is not trusted (%s)\n",
+                 p_val_status(val_status));
+        /** continue anyways if DNSSEC_WARN_ONLY is set */
+        if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                    NETSNMP_DS_LIB_DNSSEC_WARN_ONLY))
+            hp = NULL;
+    }
+    else if (val_does_not_exist(val_status) && hp)
+        hp = NULL;
+#else
+    hp = gethostbyname(name);
+#endif
+    if (hp == NULL) {
+        DEBUGMSGTL(("dns:gethostbyname",
+                    "couldn't resolve %s\n", name));
+    } else if (hp->h_addrtype != AF_INET) {
+        DEBUGMSGTL(("dns:gethostbyname",
+                    "warning: response for %s not AF_INET!\n", name));
+    } else {
+        DEBUGMSGTL(("dns:gethostbyname",
+                    "%s resolved okay\n", name));
+    }
+    return hp;
+#else
+    NETSNMP_LOGONCE((LOG_ERR, "gethostbyname not available"));
+    return NULL;
+#endif /* HAVE_GETHOSTBYNAME */
+}
+
+/**
+ * Look up the host name via DNS.
+ *
+ * @param[in] addr Pointer to the address to resolve. This argument points e.g.
+ *   to a struct in_addr for AF_INET or to a struct in6_addr for AF_INET6.
+ * @param[in] len  Length in bytes of *addr.
+ * @param[in] type Address family, e.g. AF_INET or AF_INET6.
+ *
+ * @return Pointer to a hostent structure if address lookup succeeded or NULL
+ *   if the lookup failed.
+ *
+ * @see See also the gethostbyaddr() man page.
+ */
+struct hostent *
+netsnmp_gethostbyaddr(const void *addr, socklen_t len, int type)
+{
+#if HAVE_GETHOSTBYADDR
+    struct hostent *hp = NULL;
+    char buf[64];
+
+    DEBUGMSGTL(("dns:gethostbyaddr", "resolving %s\n",
+                inet_ntop(type, addr, buf, sizeof(buf))));
+
+#ifdef DNSSEC_LOCAL_VALIDATION
+    val_status_t val_status;
+    hp = val_gethostbyaddr(netsnmp_validator_context(), addr, len, type,
+                           &val_status);
+    DEBUGMSGTL(("dns:sec:val", "val_status %d / %s; trusted: %d\n",
+                val_status, p_val_status(val_status),
+                val_istrusted(val_status)));
+    if (!val_istrusted(val_status)) {
+        snmp_log(LOG_WARNING,
+                 "The authenticity of DNS response is not trusted (%s)\n",
+                 p_val_status(val_status));
+        /** continue anyways if DNSSEC_WARN_ONLY is set */
+        if (!netsnmp_ds_get_boolean(NETSNMP_DS_LIBRARY_ID, 
+                                    NETSNMP_DS_LIB_DNSSEC_WARN_ONLY))
+            hp = NULL;
+    }
+    else if (val_does_not_exist(val_status) && hp)
+        hp = NULL;
+#else
+    hp = gethostbyaddr(addr, len, type);
+#endif
+    if (hp == NULL) {
+        DEBUGMSGTL(("dns:gethostbyaddr", "couldn't resolve addr\n"));
+    } else if (hp->h_addrtype != AF_INET) {
+        DEBUGMSGTL(("dns:gethostbyaddr",
+                    "warning: response for addr not AF_INET!\n"));
+    } else {
+        DEBUGMSGTL(("dns:gethostbyaddr", "addr resolved okay\n"));
+    }
+    return hp;
+#else
+    NETSNMP_LOGONCE((LOG_ERR, "gethostbyaddr not available"));
+    return NULL;
+#endif
+}
+
+/*******************************************************************/
+
 #ifndef HAVE_STRNCASECMP
 
 /*
@@ -925,41 +1089,32 @@
 }
 #endif                          /* HAVE_SETENV */
 
-/* returns centiseconds */
+netsnmp_feature_child_of(calculate_time_diff, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_CALCULATE_TIME_DIFF
+/**
+ * Compute (*now - *then) in centiseconds.
+ */
 int
-calculate_time_diff(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));
-    tmp.tv_sec--;
-    tmp.tv_usec += 1000000L;
-    diff.tv_sec = tmp.tv_sec - then->tv_sec;
-    diff.tv_usec = tmp.tv_usec - then->tv_usec;
-    if (diff.tv_usec > 1000000L) {
-        diff.tv_usec -= 1000000L;
-        diff.tv_sec++;
-    }
-    return ((diff.tv_sec * 100) + (diff.tv_usec / 10000));
-}
+    struct timeval  diff;
 
-/* returns diff in rounded seconds */
-u_int
-calculate_sectime_diff(struct timeval *now, struct timeval *then)
-{
-    struct timeval  tmp, diff;
-    memcpy(&tmp, now, sizeof(struct timeval));
-    tmp.tv_sec--;
-    tmp.tv_usec += 1000000L;
-    diff.tv_sec = tmp.tv_sec - then->tv_sec;
-    diff.tv_usec = tmp.tv_usec - then->tv_usec;
-    if (diff.tv_usec > 1000000L) {
-        diff.tv_usec -= 1000000L;
-        diff.tv_sec++;
-    }
-    if (diff.tv_usec >= 500000L)
-        return diff.tv_sec + 1;
-    return  diff.tv_sec;
+    NETSNMP_TIMERSUB(now, then, &diff);
+    return (int)(diff.tv_sec * 100 + diff.tv_usec / 10000);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_CALCULATE_TIME_DIFF */
+
+#ifndef NETSNMP_FEATURE_REMOVE_CALCULATE_SECTIME_DIFF
+/** Compute rounded (*now - *then) in seconds. */
+u_int
+calculate_sectime_diff(const struct timeval *now, const struct timeval *then)
+{
+    struct timeval  diff;
+
+    NETSNMP_TIMERSUB(now, then, &diff);
+    return diff.tv_sec + (diff.tv_usec >= 500000L);
+}
+#endif /* NETSNMP_FEATURE_REMOVE_CALCULATE_SECTIME_DIFF */
 
 #ifndef HAVE_STRCASESTR
 /*
@@ -1070,13 +1225,14 @@
             /*
              * DNE, make it 
              */
-            snmp_log(LOG_INFO, "Creating directory: %s\n", buf);
 #ifdef WIN32
             if (CreateDirectory(buf, NULL) == 0)
 #else
             if (mkdir(buf, mode) == -1)
 #endif
                 goto out;
+            else
+                snmp_log(LOG_INFO, "Created directory: %s\n", buf);
         } else {
             /*
              * exists, is it a file? 
@@ -1204,7 +1360,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 */
@@ -1214,3 +1370,68 @@
 #endif
 }
 
+netsnmp_feature_child_of(str_to_uid, user_information)
+#ifndef NETSNMP_FEATURE_REMOVE_STR_TO_UID
+/**
+ * Convert a user name or number into numeric form.
+ *
+ * @param[in] useroruid Either a Unix user name or the ASCII representation
+ *   of a user number.
+ *
+ * @return Either a user number > 0 or 0 if useroruid is not a valid user
+ *   name, not a valid user number or the name of the root user.
+ */
+int netsnmp_str_to_uid(const char *useroruid) {
+    int uid;
+#if HAVE_GETPWNAM && HAVE_PWD_H
+    struct passwd *pwd;
+#endif
+
+    uid = atoi(useroruid);
+
+    if (uid == 0) {
+#if HAVE_GETPWNAM && HAVE_PWD_H
+        pwd = getpwnam(useroruid);
+        uid = pwd ? pwd->pw_uid : 0;
+        endpwent();
+#endif
+        if (uid == 0)
+            snmp_log(LOG_WARNING, "Can't identify user (%s).\n", useroruid);
+    }
+    return uid;
+    
+}
+#endif /* NETSNMP_FEATURE_REMOVE_STR_TO_UID */
+
+netsnmp_feature_child_of(str_to_gid, user_information)
+#ifndef NETSNMP_FEATURE_REMOVE_STR_TO_GID
+/**
+ * Convert a group name or number into numeric form.
+ *
+ * @param[in] grouporgid Either a Unix group name or the ASCII representation
+ *   of a group number.
+ *
+ * @return Either a group number > 0 or 0 if grouporgid is not a valid group
+ *   name, not a valid group number or the root group.
+ */
+int netsnmp_str_to_gid(const char *grouporgid)
+{
+    int gid;
+
+    gid = atoi(grouporgid);
+
+    if (gid == 0) {
+#if HAVE_GETGRNAM && HAVE_GRP_H
+        struct group  *grp;
+
+        grp = getgrnam(grouporgid);
+        gid = grp ? grp->gr_gid : 0;
+        endgrent();
+#endif
+        if (gid == 0)
+            snmp_log(LOG_WARNING, "Can't identify group (%s).\n", grouporgid);
+    }
+
+    return gid;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_STR_TO_GID */
diff --git a/snmplib/test_binary_array.c b/snmplib/test_binary_array.c
deleted file mode 100644
index 44b1f0e..0000000
--- a/snmplib/test_binary_array.c
+++ /dev/null
@@ -1,171 +0,0 @@
-#include <net-snmp/net-snmp-config.h>
-
-#if HAVE_IO_H
-#include <io.h>
-#endif
-#include <stdio.h>
-#if HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#if HAVE_MALLOC_H
-#include <malloc.h>
-#endif
-#include <sys/types.h>
-#if HAVE_STRING_H
-#include <string.h>
-#else
-#include <strings.h>
-#endif
-
-#include <net-snmp/net-snmp-includes.h>
-#include <net-snmp/types.h>
-#include <net-snmp/library/snmp_api.h>
-#include <net-snmp/library/container.h>
-#include <net-snmp/library/container_binary_array.h>
-#include <net-snmp/library/tools.h>
-#include <net-snmp/library/snmp_assert.h>
-
-#define TEST_SIZE 7
-
-void
-print_int(netsnmp_index *i, void *v)
-{
-    printf("item %p = %ld\n", i, i->oids[0]);
-}
-
-int
-test_int(void)
-{
-    oid o1 = 1;
-    oid o2 = 2;
-    oid o3 = 6;
-    oid o4 = 8;
-    oid o5 = 9;
-    oid ox = 7;
-    oid oy = 10;
-    netsnmp_index i1,i2,i3,i4,i5,ix,iy, *ip;
-    netsnmp_index *a[TEST_SIZE] = { &i1, &i2, &i3, &ix, &i4, &i5, &iy };
-    netsnmp_container *c = netsnmp_container_get_binary_array();
-    int i;
-
-    c->compare = netsnmp_compare_netsnmp_index;
-    
-    i1.oids = &o1;
-    i2.oids = &o2;
-    i3.oids = &o3;
-    i4.oids = &o4;
-    i5.oids = &o5;
-    ix.oids = &ox;
-    iy.oids = &oy;
-    i1.len = i2.len = i3.len = i4.len = i5.len = ix.len = iy.len = 1;
-
-    printf("Creating container...\n");
-
-    printf("Inserting data...\n");
-    CONTAINER_INSERT(c,&i4);
-    CONTAINER_INSERT(c,&i2);
-    CONTAINER_INSERT(c,&i3);
-    CONTAINER_INSERT(c,&i1);
-    CONTAINER_INSERT(c,&i5);
-
-    printf("For each...\n");
-    CONTAINER_FOR_EACH(c, print_int, NULL);
-    printf("Done.\n");
-
-    printf("\n");
-    ip = CONTAINER_FIRST(c);
-    printf("Find first = %p %ld\n",ip, ip->oids[0]);
-    while( ip ) {
-        ip = CONTAINER_NEXT(c,ip);
-        if(ip)
-            printf("Find next = %p %ld\n",ip, ip->oids[0]);
-        else
-            printf("Find next = %s\n",ip);
-    }
-
-    for( i=0; i < TEST_SIZE; ++i) {
-        printf("\n");
-        ip = CONTAINER_FIND(c,a[i]);
-        printf("Find %ld = %p %ld\n", a[i]->oids[0], ip, ip ? ip->oids[0] : 0);
-        ip = CONTAINER_NEXT(c,a[i]);
-        printf("Next %ld = %p %ld\n", a[i]->oids[0], ip, ip ? ip->oids[0] : 0);
-    }
-
-    printf("Done.\n");
-
-    return 0;
-}
-
-void
-print_string(char *i, void *v)
-{
-    printf("item %s\n", i);
-}
-
-int
-my_strcmp(char *lhs, char *rhs)
-{
-    int rc = strcmp(lhs,rhs);
-/*      printf("%s %d %s\n",lhs, rc, rhs); */
-    return rc;
-}
-
-int
-test_string()
-{
-    const char *o1 = "zebra";
-    const char *o2 = "b-two";
-    const char *o3 = "b";
-    const char *o4 = "cedar";
-    const char *o5 = "alpha";
-    const char *ox = "dev";
-    const char *oy = "aa";
-    const char * ip;
-    
-    const char *a[TEST_SIZE] = { o1, o2, o3, ox, o4, o5, oy };
-    netsnmp_container *c = netsnmp_container_get_binary_array();
-    int i;
-
-    c->compare = my_strcmp;
-    
-    printf("Creating container...\n");
-
-    printf("Inserting data...\n");
-    CONTAINER_INSERT(c,o4);
-    CONTAINER_INSERT(c,o2);
-    CONTAINER_INSERT(c,o3);
-    CONTAINER_INSERT(c,o1);
-    CONTAINER_INSERT(c,o5);
-    printf("\n");
-    printf("For each...\n");
-    CONTAINER_FOR_EACH(c, print_string, NULL);
-    printf("Done.\n");
-
-    printf("\n");
-    ip = CONTAINER_FIRST(c);
-    printf("Find first = %s\n",ip);
-    while( ip ) {
-        ip = CONTAINER_NEXT(c,ip);
-        printf("Find next = %s\n",ip);
-    }
-
-    for( i=0; i < TEST_SIZE; ++i) {
-        printf("\n");
-        ip = CONTAINER_FIND(c,a[i]);
-        printf("Find %s = %s\n", a[i], ip);
-        ip = CONTAINER_NEXT(c,a[i]);
-        printf("Next %s = %s\n", a[i], ip);
-    }
-
-    printf("Done.\n");
-
-    return 0;
-}
-
-int
-main(int argc, char** argv)
-{
-
-    test_int();
-    test_string();
-}
diff --git a/snmplib/text_utils.c b/snmplib/text_utils.c
index 9079709..32596be 100644
--- a/snmplib/text_utils.c
+++ b/snmplib/text_utils.c
@@ -1,4 +1,5 @@
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 #include <net-snmp/net-snmp-includes.h>
 
 #include <stdio.h>
@@ -42,7 +43,14 @@
 #include <net-snmp/library/file_utils.h>
 #include <net-snmp/library/text_utils.h>
 
+netsnmp_feature_child_of(text_utils, libnetsnmp)
 
+netsnmp_feature_provide(text_utils)
+#ifdef NETSNMP_FEATURE_REQUIRE_TEXT_UTILS
+netsnmp_feature_require(file_utils)
+#endif /* NETSNMP_FEATURE_REQUIRE_TEXT_UTILS */
+
+#ifndef NETSNMP_FEATURE_REMOVE_TEXT_UTILS
 /*------------------------------------------------------------------
  *
  * Prototypes
@@ -147,6 +155,8 @@
     return c;
 }
 
+netsnmp_feature_child_of(text_token_container_from_file, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE_TEXT_TOKEN_CONTAINER_FROM_FILE
 netsnmp_container *
 netsnmp_text_token_container_from_file(const char *file, u_int flags,
                                        netsnmp_container *cin, void *context)
@@ -199,6 +209,7 @@
     
     return c;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TEXT_TOKEN_CONTAINER_FROM_FILE */
 
 
 /*------------------------------------------------------------------
@@ -465,13 +476,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 +494,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;
@@ -510,3 +521,6 @@
     return PMLP_RC_MEMORY_USED;
 }
 
+#else  /* ! NETSNMP_FEATURE_REMOVE_TEXT_UTILS */
+netsnmp_feature_unused(text_utils);
+#endif /* ! NETSNMP_FEATURE_REMOVE_TEXT_UTILS */
diff --git a/snmplib/tools.c b/snmplib/tools.c
index 2206ff3..29e5fef 100644
--- a/snmplib/tools.c
+++ b/snmplib/tools.c
@@ -4,17 +4,23 @@
 
 #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 <net-snmp/net-snmp-features.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 +32,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,6 +49,9 @@
 #ifdef HAVE_ARPA_INET_H
 #include <arpa/inet.h>
 #endif
+#ifdef HAVE_VALGRIND_MEMCHECK_H
+#include <valgrind/memcheck.h>
+#endif
 #ifdef cygwin
 #include <windows.h>
 #endif
@@ -63,14 +72,35 @@
 #include <net-snmp/library/mib.h>
 #include <net-snmp/library/scapi.h>
 
-#ifdef WIN32
+netsnmp_feature_child_of(tools_all, libnetsnmp)
+
+netsnmp_feature_child_of(memory_wrappers, tools_all)
+netsnmp_feature_child_of(valgrind, tools_all)
+netsnmp_feature_child_of(string_time_to_secs, tools_all)
+netsnmp_feature_child_of(netsnmp_check_definedness, valgrind)
+
+netsnmp_feature_child_of(uatime_ready, netsnmp_unused)
+netsnmp_feature_child_of(timeval_tticks, netsnmp_unused)
+
+netsnmp_feature_child_of(memory_strdup, memory_wrappers)
+netsnmp_feature_child_of(memory_calloc, memory_wrappers)
+netsnmp_feature_child_of(memory_malloc, memory_wrappers)
+netsnmp_feature_child_of(memory_realloc, memory_wrappers)
+netsnmp_feature_child_of(memory_free, memory_wrappers)
+
+#ifndef NETSNMP_FEATURE_REMOVE_MEMORY_WRAPPERS
 /**
  * This function is a wrapper for the strdup function.
+ *
+ * @note The strdup() implementation calls _malloc_dbg() when linking with
+ * MSVCRT??D.dll and malloc() when linking with MSVCRT??.dll
  */
 char * netsnmp_strdup( const char * ptr)
 {
     return strdup(ptr);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_MEMORY_STRDUP */
+#ifndef NETSNMP_FEATURE_REMOVE_MEMORY_CALLOC
 /**
  * This function is a wrapper for the calloc function.
  */
@@ -78,7 +108,8 @@
 {
     return calloc(nmemb, size);
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_MEMORY_CALLOC */
+#ifndef NETSNMP_FEATURE_REMOVE_MEMORY_MALLOC
 /**
  * This function is a wrapper for the malloc function.
  */
@@ -86,7 +117,8 @@
 {
     return malloc(size);
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_MEMORY_MALLOC */
+#ifndef NETSNMP_FEATURE_REMOVE_MEMORY_REALLOC
 /**
  * This function is a wrapper for the realloc function.
  */
@@ -94,7 +126,8 @@
 {
     return realloc(ptr, size);
 }
-
+#endif /* NETSNMP_FEATURE_REMOVE_MEMORY_REALLOC */
+#ifndef NETSNMP_FEATURE_REMOVE_MEMORY_FREE
 /**
  * This function is a wrapper for the free function.
  * It calls free only if the calling parameter has a non-zero value.
@@ -104,7 +137,7 @@
     if (ptr)
         free(ptr);
 }
-#endif /* WIN32 */
+#endif /* NETSNMP_FEATURE_REMOVE_MEMORY_FREE */
 
 /**
  * This function increase the size of the buffer pointed at by *buf, which is
@@ -174,6 +207,9 @@
         }
     }
 
+    if (!*buf)
+        return 0;
+
     strcpy((char *) (*buf + *out_len), (const char *) s);
     *out_len += strlen((char *) (*buf + *out_len));
     return 1;
@@ -194,6 +230,7 @@
 
 }                               /* end free_zero() */
 
+#ifndef NETSNMP_FEATURE_REMOVE_USM_SCAPI
 /**
  * Returns pointer to allocaed & set buffer on success, size contains
  * number of random bytes filled.  buf is NULL and *size set to KMT
@@ -224,6 +261,7 @@
     return buf;
 
 }                               /* end malloc_random() */
+#endif /* NETSNMP_FEATURE_REMOVE_USM_SCAPI */
 
 /**
  * Duplicates a memory block.
@@ -246,6 +284,39 @@
     return to;
 }                               /* end netsnmp_memdup() */
 
+#ifndef NETSNMP_FEATURE_REMOVE_NETSNMP_CHECK_DEFINEDNESS
+/**
+ * When running under Valgrind, check whether all bytes in the range [packet,
+ * packet+length) are defined. Let Valgrind print a backtrace if one or more
+ * bytes with uninitialized values have been found. This function can help to
+ * find the cause of undefined value errors if --track-origins=yes is not
+ * sufficient. Does nothing when not running under Valgrind.
+ *
+ * Note: this requires a fairly recent valgrind.
+ */
+void
+netsnmp_check_definedness(const void *packet, size_t length)
+{
+#if defined(__VALGRIND_MAJOR__) && defined(__VALGRIND_MINOR__)   \
+    && (__VALGRIND_MAJOR__ > 3                                   \
+        || (__VALGRIND_MAJOR__ == 3 && __VALGRIND_MINOR__ >= 6))
+
+    if (RUNNING_ON_VALGRIND) {
+        int i;
+        char vbits;
+
+        for (i = 0; i < length; ++i) {
+            if (VALGRIND_GET_VBITS((const char *)packet + i, &vbits, 1) == 1
+                && vbits)
+                VALGRIND_PRINTF_BACKTRACE("Undefined: byte %d/%d", i,
+                                          (int)length);
+        }
+    }
+
+#endif
+}
+#endif /* NETSNMP_FEATURE_REMOVE_NETSNMP_CHECK_DEFINEDNESS */
+
 /** copies a (possible) unterminated string of a given length into a
  *  new buffer and null terminates it as well (new buffer MAY be one
  *  byte longer to account for this */
@@ -271,6 +342,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.
@@ -284,21 +407,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() */
 
 
@@ -322,11 +435,14 @@
 hex_to_binary2(const u_char * input, size_t len, char **output)
 {
     u_int           olen = (len / 2) + (len % 2);
-    char           *s = (char *) calloc(1, (olen) ? olen : 1), *op = s;
+    char           *s = calloc(1, olen ? olen : 1), *op = s;
     const u_char   *ip = input;
 
 
     *output = NULL;
+    if (!s)
+        goto hex_to_binary2_quit;
+
     *op = 0;
     if (len % 2) {
         if (!isxdigit(*ip))
@@ -335,7 +451,7 @@
         ip++;
     }
 
-    while (ip - input < (int) len) {
+    while (ip < input + len) {
         if (!isxdigit(*ip))
             goto hex_to_binary2_quit;
         *op = HEX2VAL(*ip) << 4;
@@ -423,7 +539,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) {
@@ -758,19 +874,23 @@
 
 
 /**
- * create a new time marker.
- * NOTE: Caller must free time marker when no longer needed.
+ * Create a new real-time marker.
+ *
+ * \deprecated Use netsnmp_set_monotonic_marker() instead.
+ *
+ * @note Caller must free time marker when no longer needed.
  */
 marker_t
 atime_newMarker(void)
 {
     marker_t        pm = (marker_t) calloc(1, sizeof(struct timeval));
-    gettimeofday((struct timeval *) pm, 0);
+    gettimeofday((struct timeval *) pm, NULL);
     return pm;
 }
 
 /**
- * set a time marker.
+ * Set a time marker to the current value of the real-time clock.
+ * \deprecated Use netsnmp_set_monotonic_marker() instead.
  */
 void
 atime_setMarker(marker_t pm)
@@ -778,40 +898,113 @@
     if (!pm)
         return;
 
-    gettimeofday((struct timeval *) pm, 0);
+    gettimeofday((struct timeval *) pm, NULL);
 }
 
+/**
+ * Query the current value of the monotonic clock.
+ *
+ * Returns the current value of a monotonic clock if such a clock is provided by
+ * the operating system or the wall clock time if no such clock is provided by
+ * the operating system. A monotonic clock is a clock that is never adjusted
+ * backwards and that proceeds at the same rate as wall clock time.
+ *
+ * @param[out] tv Pointer to monotonic clock time.
+ */
+void netsnmp_get_monotonic_clock(struct timeval* tv)
+{
+#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC)
+    struct timespec ts;
+    int res;
+
+    res = clock_gettime(CLOCK_MONOTONIC, &ts);
+    if (res >= 0) {
+        tv->tv_sec = ts.tv_sec;
+        tv->tv_usec = ts.tv_nsec / 1000;
+    } else {
+        gettimeofday(tv, NULL);
+    }
+#elif defined(WIN32)
+    /*
+     * Windows: return tick count. Note: the rate at which the tick count
+     * increases is not adjusted by the time synchronization algorithm, so
+     * expect an error of <= 100 ppm for the rate at which this clock
+     * increases.
+     */
+    typedef ULONGLONG (WINAPI * pfGetTickCount64)(void);
+    static int s_initialized;
+    static pfGetTickCount64 s_pfGetTickCount64;
+    uint64_t now64;
+
+    if (!s_initialized) {
+        HMODULE hKernel32 = GetModuleHandle("kernel32");
+        s_pfGetTickCount64 =
+            (pfGetTickCount64) GetProcAddress(hKernel32, "GetTickCount64");
+        s_initialized = TRUE;
+    }
+
+    if (s_pfGetTickCount64) {
+        /* Windows Vista, Windows 2008 or any later Windows version */
+        now64 = (*s_pfGetTickCount64)();
+    } else {
+        /* Windows XP, Windows 2003 or any earlier Windows version */
+        static uint32_t s_wraps, s_last;
+        uint32_t now;
+
+        now = GetTickCount();
+        if (now < s_last)
+            s_wraps++;
+        s_last = now;
+        now64 = ((uint64_t)s_wraps << 32) | now;
+    }
+    tv->tv_sec = now64 / 1000;
+    tv->tv_usec = (now64 % 1000) * 1000;
+#else
+    /* At least FreeBSD 4 doesn't provide monotonic clock support. */
+#warning Not sure how to query a monotonically increasing clock on your system. \
+Timers will not work correctly if the system clock is adjusted by e.g. ntpd.
+    gettimeofday(tv, NULL);
+#endif
+}
+
+/**
+ * Set a time marker to the current value of the monotonic clock.
+ */
+void
+netsnmp_set_monotonic_marker(marker_t *pm)
+{
+    if (!*pm)
+        *pm = malloc(sizeof(struct timeval));
+    if (*pm)
+        netsnmp_get_monotonic_clock(*pm);
+}
 
 /**
  * Returns the difference (in msec) between the two markers
+ *
+ * \deprecated Don't use in new code.
  */
 long
-atime_diff(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;
+    NETSNMP_TIMERSUB((const struct timeval *) second, (const struct timeval *) first, &diff);
 
-    diff.tv_sec = tv2->tv_sec - tv1->tv_sec - 1;
-    diff.tv_usec = tv2->tv_usec - tv1->tv_usec + 1000000;
-
-    return (diff.tv_sec * 1000 + diff.tv_usec / 1000);
+    return (long)(diff.tv_sec * 1000 + diff.tv_usec / 1000);
 }
 
 /**
  * Returns the difference (in u_long msec) between the two markers
+ *
+ * \deprecated Don't use in new code.
  */
 u_long
-uatime_diff(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);
 }
@@ -819,29 +1012,26 @@
 /**
  * Returns the difference (in u_long 1/100th secs) between the two markers
  * (functionally this is what sysUpTime needs)
+ *
+ * \deprecated Don't use in new code.
  */
 u_long
-uatime_hdiff(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).
+ *
+ * \deprecated Use netsnmp_ready_monotonic() instead.
  */
 int
-atime_ready(marker_t pm, int deltaT)
+atime_ready(const_marker_t pm, int delta_ms)
 {
     marker_t        now;
     long            diff;
@@ -852,18 +1042,21 @@
 
     diff = atime_diff(pm, now);
     free(now);
-    if (diff < deltaT)
+    if (diff < delta_ms)
         return 0;
 
     return 1;
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_UATIME_READY
 /**
- * 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).
+ *
+ * \deprecated Use netsnmp_ready_monotonic() instead.
  */
 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;
@@ -874,11 +1067,38 @@
 
     diff = uatime_diff(pm, now);
     free(now);
-    if (diff < deltaT)
+    if (diff < delta_ms)
         return 0;
 
     return 1;
 }
+#endif /* NETSNMP_FEATURE_REMOVE_UATIME_READY */
+
+/**
+ * Is the current time past (marked time plus delta) ?
+ *
+ * @param[in] pm Pointer to marked time as obtained via
+ *   netsnmp_set_monotonic_marker().
+ * @param[in] delta_ms Time delta in milliseconds.
+ *
+ * @return pm != NULL && now >= (*pm + delta_ms)
+ */
+int
+netsnmp_ready_monotonic(const_marker_t pm, int delta_ms)
+{
+    struct timeval  now, diff, delta;
+
+    netsnmp_assert(delta_ms >= 0);
+    if (pm) {
+        netsnmp_get_monotonic_clock(&now);
+        NETSNMP_TIMERSUB(&now, (const struct timeval *) pm, &diff);
+        delta.tv_sec = delta_ms / 1000;
+        delta.tv_usec = (delta_ms % 1000) * 1000UL;
+        return timercmp(&diff, &delta, >=) ? TRUE : FALSE;
+    } else {
+        return FALSE;
+    }
+}
 
 
         /*
@@ -886,10 +1106,12 @@
          */
 
 /**
- * Return the number of timeTicks since the given marker 
+ * Return the number of timeTicks since the given marker
+ *
+ * \deprecated Don't use in new code.
  */
 int
-marker_tticks(marker_t pm)
+marker_tticks(const_marker_t pm)
 {
     int             res;
     marker_t        now = atime_newMarker();
@@ -899,11 +1121,16 @@
     return res / 10;            /* atime_diff works in msec, not csec */
 }
 
+#ifndef NETSNMP_FEATURE_REMOVE_TIMEVAL_TTICKS
+/**
+ * \deprecated Don't use in new code.
+ */
 int
-timeval_tticks(struct timeval *tv)
+timeval_tticks(const struct timeval *tv)
 {
-    return marker_tticks((marker_t) tv);
+    return marker_tticks((const_marker_t) tv);
 }
+#endif /* NETSNMP_FEATURE_REMOVE_TIMEVAL_TTICKS */
 
 /**
  * Non Windows:  Returns a pointer to the desired environment variable  
@@ -962,8 +1189,7 @@
             NULL,               /* Just get the size */
             &key_value_size) == ERROR_SUCCESS) {
 
-        if (key_value)
-          SNMP_FREE(key_value);
+        SNMP_FREE(key_value);
 
         /* Allocate memory needed +1 to allow RegQueryValueExA to NULL terminate the
          * string data in registry is missing one (which is unlikely).
@@ -1004,8 +1230,7 @@
             NULL,               /* Just get the size */
             &key_value_size) == ERROR_SUCCESS) {
 
-        if (key_value)
-          SNMP_FREE(key_value);
+        SNMP_FREE(key_value);
 
         /* Allocate memory needed +1 to allow RegQueryValueExA to NULL terminate the
          * string data in registry is missing one (which is unlikely).
@@ -1087,3 +1312,65 @@
 
     return 0;
 }
+
+#ifndef NETSNMP_FEATURE_REMOVE_STRING_TIME_TO_SECS
+/**
+ * Takes a time string like 4h and converts it to seconds.
+ * The string time given may end in 's' for seconds (the default
+ * anyway if no suffix is specified),
+ * 'm' for minutes, 'h' for hours, 'd' for days, or 'w' for weeks.  The
+ * upper case versions are also accepted.
+ *
+ * @param time_string The time string to convert.
+ *
+ * @return seconds converted from the string
+ * @return -1  : on failure
+ */
+int
+netsnmp_string_time_to_secs(const char *time_string) {
+    int secs = -1;
+    if (!time_string || !time_string[0])
+        return secs;
+
+    secs = atoi(time_string);
+
+    if (isdigit((unsigned char)time_string[strlen(time_string)-1]))
+        return secs; /* no letter specified, it's already in seconds */
+    
+    switch (time_string[strlen(time_string)-1]) {
+    case 's':
+    case 'S':
+        /* already in seconds */
+        break;
+
+    case 'm':
+    case 'M':
+        secs = secs * 60;
+        break;
+
+    case 'h':
+    case 'H':
+        secs = secs * 60 * 60;
+        break;
+
+    case 'd':
+    case 'D':
+        secs = secs * 60 * 60 * 24;
+        break;
+
+    case 'w':
+    case 'W':
+        secs = secs * 60 * 60 * 24 * 7;
+        break;
+
+    default:
+        snmp_log(LOG_ERR, "time string %s contains an invalid suffix letter\n",
+                 time_string);
+        return -1;
+    }
+
+    DEBUGMSGTL(("string_time_to_secs", "Converted time string %s to %d\n",
+                time_string, secs));
+    return secs;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_STRING_TIME_TO_SECS */
diff --git a/snmplib/transports/snmpAAL5PVCDomain.c b/snmplib/transports/snmpAAL5PVCDomain.c
new file mode 100644
index 0000000..5ac69a1
--- /dev/null
+++ b/snmplib/transports/snmpAAL5PVCDomain.c
@@ -0,0 +1,374 @@
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/library/snmpAAL5PVCDomain.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
+#include <atm.h>
+
+#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/tools.h>
+
+
+oid netsnmp_AAL5PVCDomain[10] = { NETSNMP_ENTERPRISE_MIB, 3, 3, 3 };
+static netsnmp_tdomain aal5pvcDomain;
+
+
+/*
+ * Return a string representing the address in data, or else the "far end"
+ * address if data is NULL.  
+ */
+
+static char *
+netsnmp_aal5pvc_fmtaddr(netsnmp_transport *t, void *data, int len)
+{
+    struct sockaddr_atmpvc *to = NULL;
+
+    if (data != NULL && len == sizeof(struct sockaddr_atmpvc)) {
+        to = (struct sockaddr_atmpvc *) data;
+    } else if (t != NULL && t->data != NULL &&
+               t->data_length == sizeof(struct sockaddr_atmpvc)) {
+        to = (struct sockaddr_atmpvc *) t->data;
+    }
+    if (to == NULL) {
+        return strdup("AAL5 PVC: unknown");
+    } else {
+        char tmp[64];
+        sprintf(tmp, "AAL5 PVC: %hd.%hd.%d", to->sap_addr.itf,
+                to->sap_addr.vpi, to->sap_addr.vci);
+        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_aal5pvc_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) {
+		break;
+	    }
+	}
+
+        if (rc >= 0) {
+            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)));
+        }
+        *opaque = NULL;
+        *olength = 0;
+    }
+    return rc;
+}
+
+
+
+static int
+netsnmp_aal5pvc_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_atmpvc)) {
+        to = (struct sockaddr *) (*opaque);
+    } else if (t != NULL && t->data != NULL &&
+               t->data_length == sizeof(struct sockaddr_atmpvc)) {
+        to = (struct sockaddr *) (t->data);
+    }
+
+    if (to != NULL && t != NULL && t->sock >= 0) {
+        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) {
+		break;
+	    }
+	}
+    }
+    return rc;
+}
+
+
+
+static int
+netsnmp_aal5pvc_close(netsnmp_transport *t)
+{
+    int rc = -1;
+
+    if (t->sock >= 0) {
+        DEBUGMSGTL(("netsnmp_aal5pvc", "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 an AAL5 PVC transport for SNMP.  Local is TRUE if addr is the local 
+ * NSAP to bind to (i.e. this is a server-type session); otherwise addr is 
+ * the remote NSAP to send things to.  
+ */
+
+netsnmp_transport *
+netsnmp_aal5pvc_transport(struct sockaddr_atmpvc *addr, int local)
+{
+    netsnmp_transport *t = NULL;
+
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    if (local)
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
+    if (addr == NULL || addr->sap_family != AF_ATMPVC) {
+        return NULL;
+    }
+
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
+    if (t == NULL) {
+        return NULL;
+    }
+
+    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);
+    }
+
+    t->domain = netsnmp_AAL5PVCDomain;
+    t->domain_length =
+        sizeof(netsnmp_AAL5PVCDomain) / sizeof(netsnmp_AAL5PVCDomain[0]);
+
+    t->sock = socket(PF_ATMPVC, SOCK_DGRAM, 0);
+    if (t->sock < 0) {
+        DEBUGMSGTL(("netsnmp_aal5pvc","socket failed (%s)\n",strerror(errno)));
+        netsnmp_transport_free(t);
+        return NULL;
+    }
+    DEBUGMSGTL(("netsnmp_aal5pvc", "fd %d opened\n", t->sock));
+
+    {
+        /*
+         * Set up the QOS parameters.
+         */
+
+        struct atm_qos qos = { 0 };
+        qos.aal = ATM_AAL5;
+        qos.rxtp.traffic_class = ATM_UBR;
+        qos.rxtp.max_sdu = SNMP_MAX_LEN;    /*  Hmm -- this is a bit small?  */
+        qos.txtp = qos.rxtp;
+
+        if (setsockopt(t->sock, SOL_ATM, SO_ATMQOS, &qos, sizeof(qos)) < 0) {
+            DEBUGMSGTL(("netsnmp_aal5pvc", "setsockopt failed (%s)\n",
+                        strerror(errno)));
+            netsnmp_aal5pvc_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+    }
+
+    if (local) {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
+        t->local = (unsigned char*)malloc(8);
+        if (t->local == NULL) {
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        t->local[0] = (addr->sap_addr.itf & 0xff00) >> 8;
+        t->local[1] = (addr->sap_addr.itf & 0x00ff) >> 0;
+        t->local[2] = (addr->sap_addr.vpi & 0xff00) >> 8;
+        t->local[3] = (addr->sap_addr.vpi & 0x00ff) >> 0;
+        t->local[4] = (addr->sap_addr.vci & 0xff000000) >> 24;
+        t->local[5] = (addr->sap_addr.vci & 0x00ff0000) >> 16;
+        t->local[6] = (addr->sap_addr.vci & 0x0000ff00) >> 8;
+        t->local[7] = (addr->sap_addr.vci & 0x000000ff) >> 0;
+        t->local_length = 8;
+
+        if (bind(t->sock, (struct sockaddr *) addr,
+                 sizeof(struct sockaddr_atmpvc)) < 0) {
+            DEBUGMSGTL(("netsnmp_aal5pvc", "bind failed (%s)\n",
+                        strerror(errno)));
+            netsnmp_aal5pvc_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+    } else {
+        t->remote = (unsigned char*)malloc(8);
+        if (t->remote == NULL) {
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        t->remote[0] = (addr->sap_addr.itf & 0xff00) >> 8;
+        t->remote[1] = (addr->sap_addr.itf & 0x00ff) >> 0;
+        t->remote[2] = (addr->sap_addr.vpi & 0xff00) >> 8;
+        t->remote[3] = (addr->sap_addr.vpi & 0x00ff) >> 0;
+        t->remote[4] = (addr->sap_addr.vci & 0xff000000) >> 24;
+        t->remote[5] = (addr->sap_addr.vci & 0x00ff0000) >> 16;
+        t->remote[6] = (addr->sap_addr.vci & 0x0000ff00) >> 8;
+        t->remote[7] = (addr->sap_addr.vci & 0x000000ff) >> 0;
+        t->remote_length = 8;
+
+        if (connect(t->sock, (struct sockaddr *) addr,
+                    sizeof(struct sockaddr_atmpvc)) < 0) {
+            DEBUGMSGTL(("netsnmp_aal5pvc", "connect failed (%s)\n",
+                        strerror(errno)));
+            netsnmp_aal5pvc_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+    }
+
+    t->data = malloc(sizeof(struct sockaddr_atmpvc));
+    if (t->data == NULL) {
+        netsnmp_transport_free(t);
+        return NULL;
+    }
+    memcpy(t->data, addr, sizeof(struct sockaddr_atmpvc));
+    t->data_length = sizeof(struct sockaddr_atmpvc);
+
+    /*
+     * 16-bit length field in the trailer, no headers.  
+     */
+
+    t->msgMaxSize = 0xffff;
+    t->f_recv     = netsnmp_aal5pvc_recv;
+    t->f_send     = netsnmp_aal5pvc_send;
+    t->f_close    = netsnmp_aal5pvc_close;
+    t->f_accept   = NULL;
+    t->f_fmtaddr  = netsnmp_aal5pvc_fmtaddr;
+
+    return t;
+}
+
+
+
+netsnmp_transport *
+netsnmp_aal5pvc_create_tstring(const char *str, int local,
+			       const char *default_target)
+{
+    struct sockaddr_atmpvc addr;
+
+    if (str == NULL || *str == '\0')
+	str = default_target;
+
+    if (str != NULL) {
+        addr.sap_family = AF_ATMPVC;
+
+        if (sscanf(str, "%hd.%hd.%d", &(addr.sap_addr.itf),
+                   &(addr.sap_addr.vpi), &(addr.sap_addr.vci)) == 3) {
+            return netsnmp_aal5pvc_transport(&addr, local);
+        } else if (sscanf(str, "%hd.%d", &(addr.sap_addr.vpi),
+                          &(addr.sap_addr.vci)) == 2) {
+            addr.sap_addr.itf = 0;
+            return netsnmp_aal5pvc_transport(&addr, local);
+        } else if (sscanf(str, "%d", &(addr.sap_addr.vci)) == 1) {
+            addr.sap_addr.itf = 0;
+            addr.sap_addr.vpi = 0;
+            return netsnmp_aal5pvc_transport(&addr, local);
+        } else {
+            return NULL;
+        }
+    } else {
+        return NULL;
+    }
+}
+
+
+
+netsnmp_transport *
+netsnmp_aal5pvc_create_ostring(const u_char * o, size_t o_len, int local)
+{
+    struct sockaddr_atmpvc addr;
+
+    if (o_len == 8) {
+        addr.sap_family = AF_ATMPVC;
+        addr.sap_addr.itf = (o[0] << 8) + (o[1] << 0);
+        addr.sap_addr.vpi = (o[2] << 8) + (o[3] << 0);
+        addr.sap_addr.vci =
+	    (o[4] << 24) + (o[5] << 16) + (o[6] << 8) + (o[7] << 0);
+        return netsnmp_aal5pvc_transport(&addr, local);
+    }
+
+    return NULL;
+}
+
+
+
+void
+netsnmp_aal5pvc_ctor(void)
+{
+    aal5pvcDomain.name = netsnmp_AAL5PVCDomain;
+    aal5pvcDomain.name_length = sizeof(netsnmp_AAL5PVCDomain) / sizeof(oid);
+    aal5pvcDomain.prefix = (const char**)calloc(3, sizeof(char *));
+    aal5pvcDomain.prefix[0] = "aal5pvc";
+    aal5pvcDomain.prefix[1] = "pvc";
+
+    aal5pvcDomain.f_create_from_tstring     = NULL;
+    aal5pvcDomain.f_create_from_tstring_new = netsnmp_aal5pvc_create_tstring;
+    aal5pvcDomain.f_create_from_ostring     = netsnmp_aal5pvc_create_ostring;
+
+    netsnmp_tdomain_register(&aal5pvcDomain);
+}
diff --git a/snmplib/transports/snmpAliasDomain.c b/snmplib/transports/snmpAliasDomain.c
new file mode 100644
index 0000000..eb50cad
--- /dev/null
+++ b/snmplib/transports/snmpAliasDomain.c
@@ -0,0 +1,116 @@
+#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>
+
+#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_DMALLOC_H
+#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>
+
+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) {
+    char aliasname[SPRINT_MAX_LEN];
+    char transportdef[SPRINT_MAX_LEN];
+    /* copy the first word (the alias) out and then assume the rest is
+       transport */
+    line = copy_nword(line, aliasname, sizeof(aliasname));
+    line = copy_nword(line, transportdef, sizeof(transportdef));
+    if (line)
+        config_perror("more data than expected");
+    netsnmp_data_list_add_node(&alias_memory,
+                               netsnmp_create_data_list(aliasname,
+                                                        strdup(transportdef),
+                                                        &free_wrapper));
+}
+
+void
+free_alias_config(void) {
+    netsnmp_free_all_list_data(alias_memory);
+    alias_memory = NULL;
+}
+
+/*
+ * Open a ALIAS-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_alias_create_tstring(const char *str, int local,
+			   const char *default_target)
+{
+    const char *aliasdata;
+
+    aliasdata = (const char*)netsnmp_get_list_data(alias_memory, str);
+    if (!aliasdata) {
+        snmp_log(LOG_ERR, "No alias found for %s\n", str);
+        return NULL;
+    }
+
+    return netsnmp_tdomain_transport(aliasdata,local,default_target);
+}
+
+
+
+netsnmp_transport *
+netsnmp_alias_create_ostring(const u_char * o, size_t o_len, int local)
+{
+    fprintf(stderr, "make ostring\n");
+    return NULL;
+}
+
+void
+netsnmp_alias_ctor(void)
+{
+    aliasDomain.name = netsnmp_snmpALIASDomain;
+    aliasDomain.name_length = sizeof(netsnmp_snmpALIASDomain) / sizeof(oid);
+    aliasDomain.prefix = (const char **)calloc(2, sizeof(char *));
+    aliasDomain.prefix[0] = "alias";
+
+    aliasDomain.f_create_from_tstring     = NULL;
+    aliasDomain.f_create_from_tstring_new = netsnmp_alias_create_tstring;
+    aliasDomain.f_create_from_ostring     = netsnmp_alias_create_ostring;
+
+    netsnmp_tdomain_register(&aliasDomain);
+
+    register_config_handler("snmp", "alias", parse_alias_config,
+                            free_alias_config, "NAME TRANSPORT_DEFINITION");
+}
diff --git a/snmplib/transports/snmpCallbackDomain.c b/snmplib/transports/snmpCallbackDomain.c
new file mode 100644
index 0000000..95018b8
--- /dev/null
+++ b/snmplib/transports/snmpCallbackDomain.c
@@ -0,0 +1,628 @@
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/library/snmpCallbackDomain.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <ctype.h>
+#include <errno.h>
+
+#ifdef WIN32
+#include <net-snmp/library/winpipe.h>
+#endif
+#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_SYS_UN_H
+#include <sys/un.h>
+#endif
+#if HAVE_IO_H
+#include <io.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/config_api.h>
+#include <net-snmp/utilities.h>
+
+#include <net-snmp/library/snmp_transport.h>
+#include <net-snmp/library/snmp_api.h>
+#include <net-snmp/library/snmp_client.h>
+
+#ifndef NETSNMP_STREAM_QUEUE_LEN
+#define NETSNMP_STREAM_QUEUE_LEN  5
+#endif
+
+#ifdef NETSNMP_TRANSPORT_CALLBACK_DOMAIN
+
+static netsnmp_transport_list *trlist = NULL;
+
+static int      callback_count = 0;
+
+typedef struct callback_hack_s {
+    void           *orig_transport_data;
+    netsnmp_pdu    *pdu;
+} callback_hack;
+
+typedef struct callback_queue_s {
+    int             callback_num;
+    netsnmp_callback_pass *item;
+    struct callback_queue_s *next, *prev;
+} callback_queue;
+
+callback_queue *thequeue;
+
+static netsnmp_transport *
+find_transport_from_callback_num(int num)
+{
+    static netsnmp_transport_list *ptr;
+    for (ptr = trlist; ptr; ptr = ptr->next)
+        if (((netsnmp_callback_info *) ptr->transport->data)->
+            callback_num == num)
+            return ptr->transport;
+    return NULL;
+}
+
+static void
+callback_debug_pdu(const char *ourstring, netsnmp_pdu *pdu)
+{
+    netsnmp_variable_list *vb;
+    int             i = 1;
+    DEBUGMSGTL((ourstring,
+                "PDU: command = %d, errstat = %ld, errindex = %ld\n",
+                pdu->command, pdu->errstat, pdu->errindex));
+    for (vb = pdu->variables; vb; vb = vb->next_variable) {
+        DEBUGMSGTL((ourstring, "  var %d:", i++));
+        DEBUGMSGVAR((ourstring, vb));
+        DEBUGMSG((ourstring, "\n"));
+    }
+}
+
+void
+callback_push_queue(int num, netsnmp_callback_pass *item)
+{
+    callback_queue *newitem = SNMP_MALLOC_TYPEDEF(callback_queue);
+    callback_queue *ptr;
+
+    if (newitem == NULL)
+        return;
+    newitem->callback_num = num;
+    newitem->item = item;
+    if (thequeue) {
+        for (ptr = thequeue; ptr && ptr->next; ptr = ptr->next) {
+        }
+        ptr->next = newitem;
+        newitem->prev = ptr;
+    } else {
+        thequeue = newitem;
+    }
+    DEBUGIF("dump_send_callback_transport") {
+        callback_debug_pdu("dump_send_callback_transport", item->pdu);
+    }
+}
+
+netsnmp_callback_pass *
+callback_pop_queue(int num)
+{
+    netsnmp_callback_pass *cp;
+    callback_queue *ptr;
+
+    for (ptr = thequeue; ptr; ptr = ptr->next) {
+        if (ptr->callback_num == num) {
+            if (ptr->prev) {
+                ptr->prev->next = ptr->next;
+            } else {
+                thequeue = ptr->next;
+            }
+            if (ptr->next) {
+                ptr->next->prev = ptr->prev;
+            }
+            cp = ptr->item;
+            SNMP_FREE(ptr);
+            DEBUGIF("dump_recv_callback_transport") {
+                callback_debug_pdu("dump_recv_callback_transport",
+                                   cp->pdu);
+            }
+            return cp;
+        }
+    }
+    return NULL;
+}
+
+/*
+ * Return a string representing the address in data, or else the "far end"
+ * address if data is NULL.  
+ */
+
+char *
+netsnmp_callback_fmtaddr(netsnmp_transport *t, void *data, int len)
+{
+    char buf[SPRINT_MAX_LEN];
+    netsnmp_callback_info *mystuff;
+
+    if (!t)
+        return strdup("callback: unknown");
+
+    mystuff = (netsnmp_callback_info *) t->data;
+
+    if (!mystuff)
+        return strdup("callback: unknown");
+
+    snprintf(buf, SPRINT_MAX_LEN, "callback: %d on fd %d",
+             mystuff->callback_num, mystuff->pipefds[0]);
+    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...  
+ */
+
+int
+netsnmp_callback_recv(netsnmp_transport *t, void *buf, int size,
+		      void **opaque, int *olength)
+{
+    int rc = -1;
+    char newbuf[1];
+    netsnmp_callback_info *mystuff = (netsnmp_callback_info *) t->data;
+
+    DEBUGMSGTL(("transport_callback", "hook_recv enter\n"));
+
+    while (rc < 0) {
+#ifdef WIN32
+	rc = recvfrom(mystuff->pipefds[0], newbuf, 1, 0, NULL, 0);
+#else
+	rc = read(mystuff->pipefds[0], newbuf, 1);
+#endif
+	if (rc < 0 && errno != EINTR) {
+	    break;
+	}
+    }
+    if (rc > 0)
+        memset(buf, 0, rc);
+
+    if (mystuff->linkedto) {
+        /*
+         * we're the client.  We don't need to do anything. 
+         */
+    } else {
+        /*
+         * malloc the space here, but it's filled in by
+         * snmp_callback_created_pdu() below 
+         */
+        int            *returnnum = (int *) calloc(1, sizeof(int));
+        *opaque = returnnum;
+        *olength = sizeof(int);
+    }
+    DEBUGMSGTL(("transport_callback", "hook_recv exit\n"));
+    return rc;
+}
+
+
+
+int
+netsnmp_callback_send(netsnmp_transport *t, void *buf, int size,
+		      void **opaque, int *olength)
+{
+    int from, rc = -1;
+    netsnmp_callback_info *mystuff = (netsnmp_callback_info *) t->data;
+    netsnmp_callback_pass *cp;
+
+    /*
+     * extract the pdu from the hacked buffer 
+     */
+    netsnmp_transport *other_side;
+    callback_hack  *ch = (callback_hack *) * opaque;
+    netsnmp_pdu    *pdu = ch->pdu;
+    *opaque = ch->orig_transport_data;
+    SNMP_FREE(ch);
+
+    DEBUGMSGTL(("transport_callback", "hook_send enter\n"));
+
+    cp = SNMP_MALLOC_TYPEDEF(netsnmp_callback_pass);
+    if (!cp)
+        return -1;
+
+    cp->pdu = snmp_clone_pdu(pdu);
+    if (cp->pdu->transport_data) {
+        /*
+         * not needed and not properly freed later 
+         */
+        SNMP_FREE(cp->pdu->transport_data);
+    }
+
+    if (cp->pdu->flags & UCD_MSG_FLAG_EXPECT_RESPONSE)
+        cp->pdu->flags ^= UCD_MSG_FLAG_EXPECT_RESPONSE;
+
+    /*
+     * push the sent pdu onto the stack 
+     */
+    /*
+     * AND send a bogus byte to the remote callback receiver's pipe 
+     */
+    if (mystuff->linkedto) {
+        /*
+         * we're the client, send it to the parent 
+         */
+        cp->return_transport_num = mystuff->callback_num;
+
+        other_side = find_transport_from_callback_num(mystuff->linkedto);
+        if (!other_side) {
+            snmp_free_pdu(cp->pdu);
+            SNMP_FREE(cp);
+            return -1;
+        }
+
+	while (rc < 0) {
+#ifdef WIN32
+	    rc = sendto(((netsnmp_callback_info*) other_side->data)->pipefds[1], " ", 1, 0, NULL, 0);
+#else
+	    rc = write(((netsnmp_callback_info *)other_side->data)->pipefds[1],
+		       " ", 1);
+#endif
+	    if (rc < 0 && errno != EINTR) {
+		break;
+	    }
+	}
+        callback_push_queue(mystuff->linkedto, cp);
+        /*
+         * we don't need the transport data any more 
+         */
+        SNMP_FREE(*opaque);
+    } else {
+        /*
+         * we're the server, send it to the person that sent us the request 
+         */
+        from = **((int **) opaque);
+        /*
+         * we don't need the transport data any more 
+         */
+        SNMP_FREE(*opaque);
+        other_side = find_transport_from_callback_num(from);
+        if (!other_side) {
+            snmp_free_pdu(cp->pdu);
+            SNMP_FREE(cp);
+            return -1;
+        }
+	while (rc < 0) {
+#ifdef WIN32
+	    rc = sendto(((netsnmp_callback_info*) other_side->data)->pipefds[1], " ", 1, 0, NULL, 0);
+#else
+	    rc = write(((netsnmp_callback_info *)other_side->data)->pipefds[1],
+		       " ", 1);
+#endif
+	    if (rc < 0 && errno != EINTR) {
+		break;
+	    }
+	}
+        callback_push_queue(from, cp);
+    }
+
+    DEBUGMSGTL(("transport_callback", "hook_send exit\n"));
+    return 0;
+}
+
+
+
+int
+netsnmp_callback_close(netsnmp_transport *t)
+{
+    int             rc;
+    netsnmp_callback_info *mystuff = (netsnmp_callback_info *) t->data;
+    DEBUGMSGTL(("transport_callback", "hook_close enter\n"));
+
+#ifdef WIN32
+    rc  = closesocket(mystuff->pipefds[0]);
+    rc |= closesocket(mystuff->pipefds[1]);
+#else
+    rc  = close(mystuff->pipefds[0]);
+    rc |= close(mystuff->pipefds[1]);
+#endif
+
+    rc |= netsnmp_transport_remove_from_list(&trlist, t);
+
+    DEBUGMSGTL(("transport_callback", "hook_close exit\n"));
+    return rc;
+}
+
+
+
+int
+netsnmp_callback_accept(netsnmp_transport *t)
+{
+    DEBUGMSGTL(("transport_callback", "hook_accept enter\n"));
+    DEBUGMSGTL(("transport_callback", "hook_accept exit\n"));
+    return -1;
+}
+
+
+
+/*
+ * Open a Callback-domain 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
+ * (and we make up a temporary name for the local end of the
+ * connection).  
+ */
+
+netsnmp_transport *
+netsnmp_callback_transport(int to)
+{
+
+    netsnmp_transport *t = NULL;
+    netsnmp_callback_info *mydata;
+    int             rc;
+
+    /*
+     * transport 
+     */
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
+    if (!t)
+        return NULL;
+
+    /*
+     * our stuff 
+     */
+    mydata = SNMP_MALLOC_TYPEDEF(netsnmp_callback_info);
+    if (!mydata) {
+        SNMP_FREE(t);
+        return NULL;
+    }
+    mydata->linkedto = to;
+    mydata->callback_num = ++callback_count;
+    mydata->data = NULL;
+    t->data = mydata;
+
+#ifdef WIN32
+    rc = create_winpipe_transport(mydata->pipefds);
+#else
+    rc = pipe(mydata->pipefds);
+#endif
+    t->sock = mydata->pipefds[0];
+
+    if (rc) {
+        SNMP_FREE(mydata);
+        SNMP_FREE(t);
+        return NULL;
+    }
+
+    t->f_recv    = netsnmp_callback_recv;
+    t->f_send    = netsnmp_callback_send;
+    t->f_close   = netsnmp_callback_close;
+    t->f_accept  = netsnmp_callback_accept;
+    t->f_fmtaddr = netsnmp_callback_fmtaddr;
+
+    netsnmp_transport_add_to_list(&trlist, t);
+
+    if (to)
+        DEBUGMSGTL(("transport_callback", "initialized %d linked to %d\n",
+                    mydata->callback_num, to));
+    else
+        DEBUGMSGTL(("transport_callback",
+                    "initialized master listening on %d\n",
+                    mydata->callback_num));
+    return t;
+}
+
+int
+netsnmp_callback_hook_parse(netsnmp_session * sp,
+                            netsnmp_pdu *pdu,
+                            u_char * packetptr, size_t len)
+{
+    if (SNMP_MSG_RESPONSE == pdu->command ||
+        SNMP_MSG_REPORT == pdu->command)
+        pdu->flags |= UCD_MSG_FLAG_RESPONSE_PDU;
+    else
+        pdu->flags &= (~UCD_MSG_FLAG_RESPONSE_PDU);
+
+    return SNMP_ERR_NOERROR;
+}
+
+int
+netsnmp_callback_hook_build(netsnmp_session * sp,
+                            netsnmp_pdu *pdu, u_char * ptk, size_t * len)
+{
+    /*
+     * very gross hack, as this is passed later to the transport_send
+     * function 
+     */
+    callback_hack  *ch = SNMP_MALLOC_TYPEDEF(callback_hack);
+    if (ch == NULL)
+        return -1;
+    DEBUGMSGTL(("transport_callback", "hook_build enter\n"));
+    ch->pdu = pdu;
+    ch->orig_transport_data = pdu->transport_data;
+    pdu->transport_data = ch;
+    switch (pdu->command) {
+    case SNMP_MSG_GETBULK:
+        if (pdu->max_repetitions < 0) {
+            sp->s_snmp_errno = SNMPERR_BAD_REPETITIONS;
+            return -1;
+        }
+        if (pdu->non_repeaters < 0) {
+            sp->s_snmp_errno = SNMPERR_BAD_REPEATERS;
+            return -1;
+        }
+        break;
+    case SNMP_MSG_RESPONSE:
+    case SNMP_MSG_TRAP:
+    case SNMP_MSG_TRAP2:
+        pdu->flags &= (~UCD_MSG_FLAG_EXPECT_RESPONSE);
+        /*
+         * Fallthrough
+         */
+    default:
+        if (pdu->errstat == SNMP_DEFAULT_ERRSTAT)
+            pdu->errstat = 0;
+        if (pdu->errindex == SNMP_DEFAULT_ERRINDEX)
+            pdu->errindex = 0;
+        break;
+    }
+
+    /*
+     * Copy missing values from session defaults
+     */
+    switch (pdu->version) {
+#ifndef NETSNMP_DISABLE_SNMPV1
+    case SNMP_VERSION_1:
+#endif
+#ifndef NETSNMP_DISABLE_SNMPV2C
+    case SNMP_VERSION_2c:
+#endif
+#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
+        if (pdu->community_len == 0) {
+            if (sp->community_len == 0) {
+                sp->s_snmp_errno = SNMPERR_BAD_COMMUNITY;
+                return -1;
+            }
+            pdu->community = (u_char *) malloc(sp->community_len);
+            if (pdu->community == NULL) {
+                sp->s_snmp_errno = SNMPERR_MALLOC;
+                return -1;
+            }
+            memmove(pdu->community,
+                    sp->community, sp->community_len);
+            pdu->community_len = sp->community_len;
+        }
+        break;
+#endif
+    case SNMP_VERSION_3:
+        if (pdu->securityNameLen == 0) {
+	  pdu->securityName = (char *)malloc(sp->securityNameLen);
+            if (pdu->securityName == NULL) {
+                sp->s_snmp_errno = SNMPERR_MALLOC;
+                return -1;
+            }
+            memmove(pdu->securityName,
+                     sp->securityName, sp->securityNameLen);
+            pdu->securityNameLen = sp->securityNameLen;
+        }
+        if (pdu->securityModel == -1)
+            pdu->securityModel = sp->securityModel;
+        if (pdu->securityLevel == 0)
+            pdu->securityLevel = sp->securityLevel;
+        /* WHAT ELSE ?? */
+    }
+    ptk[0] = 0;
+    *len = 1;
+    DEBUGMSGTL(("transport_callback", "hook_build exit\n"));
+    return 1;
+}
+
+int
+netsnmp_callback_check_packet(u_char * pkt, size_t len)
+{
+    return 1;
+}
+
+netsnmp_pdu    *
+netsnmp_callback_create_pdu(netsnmp_transport *transport,
+                            void *opaque, size_t olength)
+{
+    netsnmp_pdu    *pdu;
+    netsnmp_callback_pass *cp =
+        callback_pop_queue(((netsnmp_callback_info *) transport->data)->
+                           callback_num);
+    if (!cp)
+        return NULL;
+    pdu = cp->pdu;
+    pdu->transport_data = opaque;
+    pdu->transport_data_length = olength;
+    if (opaque)                 /* if created, we're the server */
+        *((int *) opaque) = cp->return_transport_num;
+    SNMP_FREE(cp);
+    return pdu;
+}
+
+netsnmp_session *
+netsnmp_callback_open(int attach_to,
+                      int (*return_func) (int op,
+                                          netsnmp_session * session,
+                                          int reqid, netsnmp_pdu *pdu,
+                                          void *magic),
+                      int (*fpre_parse) (netsnmp_session *,
+                                         struct netsnmp_transport_s *,
+                                         void *, int),
+                      int (*fpost_parse) (netsnmp_session *, netsnmp_pdu *,
+                                          int))
+{
+    netsnmp_session callback_sess, *callback_ss;
+    netsnmp_transport *callback_tr;
+
+    callback_tr = netsnmp_callback_transport(attach_to);
+    snmp_sess_init(&callback_sess);
+    callback_sess.callback = return_func;
+    if (attach_to) {
+        /*
+         * client 
+         */
+        /*
+         * trysess.community = (u_char *) callback_ss; 
+         */
+    } else {
+        callback_sess.isAuthoritative = SNMP_SESS_AUTHORITATIVE;
+    }
+    callback_sess.remote_port = 0;
+    callback_sess.retries = 0;
+    callback_sess.timeout = 30000000;
+    callback_sess.version = SNMP_DEFAULT_VERSION;       /* (mostly) bogus */
+    callback_ss = snmp_add_full(&callback_sess, callback_tr,
+                                fpre_parse,
+                                netsnmp_callback_hook_parse, fpost_parse,
+                                netsnmp_callback_hook_build,
+                                NULL,
+                                netsnmp_callback_check_packet,
+                                netsnmp_callback_create_pdu);
+    if (callback_ss)
+        callback_ss->local_port =
+            ((netsnmp_callback_info *) callback_tr->data)->callback_num;
+    return callback_ss;
+}
+
+
+
+void
+netsnmp_clear_callback_list(void)
+{
+
+    netsnmp_transport_list *list = trlist, *next = NULL;
+    netsnmp_transport *tr = NULL;
+
+    DEBUGMSGTL(("callback_clear", "called netsnmp_callback_clear_list()\n"));
+    while (list != NULL) {
+	next = list->next;
+	tr = list->transport;
+
+	if (tr != NULL) {
+	    tr->f_close(tr);
+  	    netsnmp_transport_remove_from_list(&trlist, tr);
+	    netsnmp_transport_free(tr);
+	}
+	list = next;
+    }
+    trlist = NULL;
+
+}
+
+#endif /* NETSNMP_TRANSPORT_CALLBACK_DOMAIN */
diff --git a/snmplib/transports/snmpDTLSUDPDomain.c b/snmplib/transports/snmpDTLSUDPDomain.c
new file mode 100644
index 0000000..b7dc767
--- /dev/null
+++ b/snmplib/transports/snmpDTLSUDPDomain.c
@@ -0,0 +1,1788 @@
+/* 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/net-snmp-features.h>
+
+netsnmp_feature_require(cert_util)
+netsnmp_feature_require(sockaddr_size)
+
+#include <net-snmp/library/snmpDTLSUDPDomain.h>
+#include <net-snmp/library/snmpUDPIPv6Domain.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#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
+
+#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;
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+static int openssl_addr_index6 = 0;
+#endif
+
+/* this stores openssl credentials for each connection since openssl
+   can't do it for us at the moment; hopefully future versions will
+   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 */
+   netsnmp_sockaddr_storage sas;
+   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(netsnmp_sockaddr_storage *from_addr) {
+    bio_cache *cachep = NULL;
+    
+    for(cachep = biocache; cachep; cachep = cachep->next) {
+
+        if (cachep->sas.sa.sa_family != from_addr->sa.sa_family)
+            continue;
+
+        if ((from_addr->sa.sa_family == AF_INET) &&
+            ((cachep->sas.sin.sin_addr.s_addr !=
+              from_addr->sin.sin_addr.s_addr) ||
+             (cachep->sas.sin.sin_port != from_addr->sin.sin_port)))
+                continue;
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+        else if ((from_addr->sa.sa_family == AF_INET6) &&
+                 ((cachep->sas.sin6.sin6_port != from_addr->sin6.sin6_port) ||
+                  (cachep->sas.sin6.sin6_scope_id !=
+                   from_addr->sin6.sin6_scope_id) ||
+                  (memcmp(cachep->sas.sin6.sin6_addr.s6_addr,
+                          from_addr->sin6.sin6_addr.s6_addr,
+                          sizeof(from_addr->sin6.sin6_addr.s6_addr)) != 0)))
+            continue;
+#endif
+        /* found an existing connection */
+        break;
+    }
+    return cachep;
+}
+
+/* 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,
+                            netsnmp_sockaddr_storage *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;
+
+    if (remote_addr->sa.sa_family == AF_INET)
+        memcpy(&cachep->sas.sin, &remote_addr->sin, sizeof(remote_addr->sin));
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    else if (remote_addr->sa.sa_family == AF_INET6)
+        memcpy(&cachep->sas.sin6, &remote_addr->sin6, sizeof(remote_addr->sin6));
+#endif
+    else
+        DIEHERE("unknown address family");
+
+    /* create caching memory bios for OpenSSL to read and write to */
+
+    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,
+                         netsnmp_sockaddr_storage *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;
+}
+
+static netsnmp_indexed_addr_pair *
+_extract_addr_pair(netsnmp_transport *t, void *opaque, int olen)
+{
+    netsnmp_indexed_addr_pair *addr_pair = NULL;
+
+    if (opaque && olen == sizeof(netsnmp_tmStateReference)) {
+        netsnmp_tmStateReference *tmStateRef =
+            (netsnmp_tmStateReference *) opaque;
+
+        if (tmStateRef->have_addresses)
+            addr_pair = &(tmStateRef->addresses);
+    }
+    if ((NULL == addr_pair) && (NULL != t)) {
+        if (t->data != NULL &&
+            t->data_length == sizeof(netsnmp_indexed_addr_pair))
+            addr_pair = (netsnmp_indexed_addr_pair *) (t->data);
+        else if (t->data != NULL &&
+                 t->data_length == sizeof(_netsnmpTLSBaseData)) {
+            _netsnmpTLSBaseData *tlsdata = (_netsnmpTLSBaseData *) t->data;
+            addr_pair = (netsnmp_indexed_addr_pair *) (tlsdata->addr);
+        }
+    }
+
+    return addr_pair;
+}
+
+static struct sockaddr *
+_find_remote_sockaddr(netsnmp_transport *t, void *opaque, int olen, int *socklen)
+{
+    netsnmp_indexed_addr_pair *addr_pair = _extract_addr_pair(t, opaque, olen);
+    struct sockaddr *sa = NULL;
+
+    if (NULL == addr_pair)
+        return NULL;
+
+    sa = &addr_pair->remote_addr.sa;
+    *socklen = netsnmp_sockaddr_size(sa);
+    return sa;
+}
+
+
+/*
+ * Reads data from our internal openssl outgoing BIO and sends any
+ * queued packets out the UDP port
+ */
+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. */
+        int socksize;
+        struct sockaddr *sa;
+        sa = _find_remote_sockaddr(t, NULL, 0, &socksize);
+        if (NULL == sa)
+            sa = &cachep->sas.sa;
+        socksize = netsnmp_sockaddr_size(sa);
+        rc2 = t->base_transport->f_send(t, outbuf, outsize, (void**)&sa,
+                                        &socksize);
+        if (rc2 == -1) {
+            snmp_log(LOG_ERR, "failed to send a DTLS specific packet\n");
+        }
+    } 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;
+    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) {
+        char *opaque = NULL;
+        int olen;
+        rc = t->base_transport->f_recv(t, buf, size, (void**)&opaque, &olen);
+        if (rc > 0)
+            memcpy(from, opaque, olen);
+        SNMP_FREE(opaque);
+        if (rc < 0 && errno != EINTR) {
+            break;
+        }
+    }
+
+    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 {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
+            /* verify that the client's certificate is the correct one */
+        
+            if ((verifyresult = netsnmp_tlsbase_verify_client_cert(tlsdata->ssl, tlsdata))
+                != 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"));
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+            return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+        }
+    }
+
+    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 =
+            t->base_transport->f_fmtaddr(t, addr_pair,
+                                        sizeof(netsnmp_indexed_addr_pair));
+        DEBUGMSGTL(("9:dtlsudp",
+                    "recvfrom fd %d got %d bytes (from %s)\n",
+                    t->sock, rc, str));
+        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;
+    bio_cache *cachep = NULL;
+    netsnmp_tmStateReference *tmStateRef = NULL;
+    u_char outbuf[65535];
+    _netsnmpTLSBaseData *tlsdata = NULL;
+    int socksize;
+    struct sockaddr *sa;
+    
+    DEBUGTRACETOK("9:dtlsudp");
+    DEBUGMSGTL(("dtlsudp", "sending %d bytes\n", size));
+
+    if (NULL == t || t->sock <= 0) {
+        snmp_increment_statistic(STAT_TLSTM_SNMPTLSTMSESSIONINVALIDCACHES);
+        snmp_log(LOG_ERR, "invalid netsnmp_dtlsudp_send usage\n");
+        return -1;
+    }
+
+    /* determine remote addresses */
+    addr_pair = _extract_addr_pair(t, opaque ? *opaque : NULL,
+                                   olength ? *olength : 0);
+    if (NULL == addr_pair) {
+      /* RFC5953: section 5.2, step 1:
+       1)  If tmStateReference does not refer to a cache containing values
+           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;
+    }
+
+    /* 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.
+    */
+    if (opaque != NULL && *opaque != NULL &&
+        olength != NULL && *olength == sizeof(netsnmp_tmStateReference))
+        tmStateRef = (netsnmp_tmStateReference *) *opaque;
+
+
+    /* 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 = t->base_transport->f_fmtaddr(t, (void *) addr_pair,
+                                        sizeof(netsnmp_indexed_addr_pair));
+        DEBUGMSGTL(("9:dtlsudp", "send %d bytes from %p to %s on fd %d\n",
+                    size, buf, str, t->sock));
+        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;
+    }
+    socksize = netsnmp_sockaddr_size(&cachep->sas.sa);
+    sa = &cachep->sas.sa;
+    rc = t->base_transport->f_send(t, outbuf, rc, (void**)&sa, &socksize);
+
+    return rc;
+}
+
+
+
+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->addr)
+            cachep = find_bio_cache(&tlsbase->addr->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)
+{
+    int              sa_len;
+    struct sockaddr *sa = _find_remote_sockaddr(t, data, len, &sa_len);
+    if (sa) {
+        data = sa;
+        len = sa_len;
+    }
+
+    return netsnmp_ipv4_fmtaddr("DTLSUDP", t, data, len);
+}
+
+/*
+ * 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.  
+ */
+
+static netsnmp_transport *
+_transport_common(netsnmp_transport *t, int local)
+{
+    char *tmp = NULL;
+    int tmp_len;
+
+    DEBUGTRACETOK("9:dtlsudp");
+
+    if (NULL == t)
+        return NULL;
+
+    /** save base transport for clients; need in send/recv functions later */
+    if (t->data) { /* don't copy data */
+        tmp = t->data;
+        tmp_len = t->data_length;
+        t->data = NULL;
+    }
+    t->base_transport = netsnmp_transport_copy(t);
+
+    if (tmp) {
+        t->data = tmp;
+        t->data_length = tmp_len;
+    }
+    if (NULL != t->data &&
+        t->data_length == sizeof(netsnmp_indexed_addr_pair)) {
+        _netsnmpTLSBaseData *tlsdata =
+            netsnmp_tlsbase_allocate_tlsdata(t, local);
+        tlsdata->addr = t->data;
+        t->data = tlsdata;
+        t->data_length = sizeof(_netsnmpTLSBaseData);
+    }
+
+    /*
+     * Set Domain
+     */
+    t->domain = netsnmpDTLSUDPDomain;                                     
+    t->domain_length = netsnmpDTLSUDPDomain_len;     
+
+    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;
+}
+
+netsnmp_transport *
+netsnmp_dtlsudp_transport(struct sockaddr_in *addr, int local)
+{
+    netsnmp_transport *t = NULL;
+
+    DEBUGTRACETOK("dtlsudp");
+
+    t = netsnmp_udp_transport(addr, local);
+    if (NULL == t)
+        return NULL;
+
+    _transport_common(t, local);
+
+    if (!local) {
+        /* dtls needs to bind the socket for SSL_write to work */
+        if (connect(t->sock, (struct sockaddr *) addr, sizeof(*addr)) == -1)
+            snmp_log(LOG_ERR, "dtls: failed to connect\n");
+    }
+
+    return t;
+}
+
+
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+
+char *
+netsnmp_dtlsudp6_fmtaddr(netsnmp_transport *t, void *data, int len)
+{
+    int              sa_len;
+    struct sockaddr *sa = _find_remote_sockaddr(t, data, len, &sa_len);
+    if (sa) {
+        data = sa;
+        len = sa_len;
+    }
+
+    return netsnmp_ipv6_fmtaddr("DTLSUDP6", t, data, len);
+}
+
+/*
+ * Open a DTLS-based transport for SNMP.  Local is TRUE if addr is the local
+ * address to bind to (i.e. this is a server-type session); otherwise addr is 
+ * the remote address to send things to.  
+ */
+
+netsnmp_transport *
+netsnmp_dtlsudp6_transport(struct sockaddr_in6 *addr, int local)
+{
+    netsnmp_transport *t = NULL;
+
+    DEBUGTRACETOK("dtlsudp");
+
+    t = netsnmp_udp6_transport(addr, local);
+    if (NULL == t)
+        return NULL;
+
+    _transport_common(t, local);
+
+    if (!local) {
+        /* dtls needs to bind the socket for SSL_write to work */
+        if (connect(t->sock, (struct sockaddr *) addr, sizeof(*addr)) == -1)
+            snmp_log(LOG_ERR, "dtls: failed to connect\n");
+    }
+
+    /* XXX: Potentially set sock opts here (SO_SNDBUF/SO_RCV_BUF) */      
+    /* XXX: and buf size */        
+
+    t->f_fmtaddr       = netsnmp_dtlsudp6_fmtaddr;
+
+    return t;
+}
+#endif
+
+
+netsnmp_transport *
+netsnmp_dtlsudp_create_tstring(const char *str, int isserver,
+                               const char *default_target)
+{
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    struct sockaddr_in6 addr6;
+#endif
+    struct sockaddr_in addr;
+    netsnmp_transport *t;
+    _netsnmpTLSBaseData *tlsdata;
+    char buf[SPRINT_MAX_LEN], *cp;
+
+    if (netsnmp_sockaddr_in2(&addr, str, default_target))
+        t = netsnmp_dtlsudp_transport(&addr, isserver);
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    else if (netsnmp_sockaddr_in6_2(&addr6, str, default_target))
+        t = netsnmp_dtlsudp6_transport(&addr6, isserver);
+#endif
+    else
+        return NULL;
+
+
+    /* see if we can extract the remote hostname */
+    if (!isserver && t && t->data && str) {
+        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);
+    }
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    else if (o_len == 18) {
+        struct sockaddr_in6 addr6;
+        unsigned short porttmp = (o[16] << 8) + o[17];
+        addr6.sin6_family = AF_INET6;
+        memcpy((u_char *) & (addr6.sin6_addr.s6_addr), o, 4);
+        addr6.sin6_port = htons(porttmp);
+        return netsnmp_dtlsudp6_transport(&addr6, local);
+    }
+#endif
+    return NULL;
+}
+
+void
+netsnmp_dtlsudp_ctor(void)
+{
+    char indexname[] = "_netsnmp_addr_info";
+    static const char *prefixes[] = { "dtlsudp", "dtls"
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+                                      , "dtlsudp6", "dtls6"
+#endif
+    };
+    int i, num_prefixes = sizeof(prefixes) / sizeof(char *);
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    char indexname6[] = "_netsnmp_addr_info6";
+#endif
+
+    DEBUGMSGTL(("dtlsudp", "registering DTLS constructor\n"));
+
+    /* config settings */
+
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    if (!openssl_addr_index6)
+        openssl_addr_index6 =
+            SSL_get_ex_new_index(0, indexname6, NULL, NULL, NULL);
+#endif
+
+    dtlsudpDomain.name = netsnmpDTLSUDPDomain;
+    dtlsudpDomain.name_length = netsnmpDTLSUDPDomain_len;
+    dtlsudpDomain.prefix = (const char**)calloc(num_prefixes + 1,
+                                                sizeof(char *));
+    for (i = 0; i < num_prefixes; ++ i)
+        dtlsudpDomain.prefix[i] = prefixes[i];
+
+    dtlsudpDomain.f_create_from_tstring     = NULL;
+    dtlsudpDomain.f_create_from_tstring_new = netsnmp_dtlsudp_create_tstring;
+    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;
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+       struct sockaddr_in6 s6;
+#endif
+} _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->sas;
+
+    /* 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;
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    case AF_INET6:
+        length += sizeof(struct in6_addr);
+        length += sizeof(peer->s6.sin6_port);
+        break;
+#endif
+    default:
+        snmp_log(LOG_ERR, "dtls generating cookie: unknown family: %d\n",
+                 peer->sa.sa_family);
+        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;
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    case AF_INET6:
+        memcpy(buffer,
+               &peer->s6.sin6_port,
+               sizeof(peer->s6.sin6_port));
+        memcpy(buffer + sizeof(peer->s6.sin6_port),
+               &peer->s6.sin6_addr,
+               sizeof(struct in6_addr));
+        break;
+#endif
+    default:
+        snmp_log(LOG_ERR, "dtls: unknown address family generating a cookie\n");
+        return 0;
+    }
+
+    /* 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->sas;
+
+    /* 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;
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    case AF_INET6:
+        length += sizeof(struct in6_addr);
+        length += sizeof(peer->s6.sin6_port);
+        break;
+#endif
+    default:
+        snmp_log(LOG_ERR,
+                 "dtls: unknown address family %d generating a cookie\n",
+                 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;
+#ifdef NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+    case AF_INET6:
+        memcpy(buffer,
+               &peer->s6.sin6_port,
+               sizeof(peer->s6.sin6_port));
+        memcpy(buffer + sizeof(peer->s6.sin6_port),
+               &peer->s6.sin6_addr,
+               sizeof(struct in6_addr));
+        break;
+#endif
+    default:
+        snmp_log(LOG_ERR,
+                 "dtls: unknown address family %d generating a cookie\n",
+                 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/transports/snmpIPXDomain.c b/snmplib/transports/snmpIPXDomain.c
new file mode 100644
index 0000000..1346156
--- /dev/null
+++ b/snmplib/transports/snmpIPXDomain.c
@@ -0,0 +1,469 @@
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/library/snmpIPXDomain.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_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/tools.h>
+
+#define SNMP_IPX_DEFAULT_PORT	36879   /*  Specified in RFC 1420.  */
+static netsnmp_tdomain ipxDomain;
+
+/*
+ * Return a string representing the address in data, or else the "far end"
+ * address if data is NULL.  
+ */
+
+static char *
+netsnmp_ipx_fmtaddr(netsnmp_transport *t, void *data, int len)
+{
+    struct sockaddr_ipx *to = NULL;
+
+    if (data != NULL && len == sizeof(struct sockaddr_ipx)) {
+        to = (struct sockaddr_ipx *) data;
+    } else if (t != NULL && t->data != NULL) {
+        to = (struct sockaddr_ipx *) t->data;
+    }
+    if (to == NULL) {
+        return strdup("IPX: unknown");
+    } else {
+        char tmp[64];
+        sprintf(tmp, "IPX: %08X:%02X%02X%02X%02X%02X%02X/%hu",
+                ntohl(to->sipx_network), to->sipx_node[0],
+                to->sipx_node[1], to->sipx_node[2], to->sipx_node[3],
+                to->sipx_node[4], to->sipx_node[5], ntohs(to->sipx_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_ipx_recv(netsnmp_transport *t, void *buf, int size,
+		 void **opaque, int *olength)
+{
+    int		     rc = -1;
+    socklen_t	     fromlen = sizeof(struct sockaddr);
+    struct sockaddr *from;
+
+    if (t != NULL && t->sock >= 0) {
+        from = (struct sockaddr *)malloc(sizeof(struct sockaddr_ipx));
+        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_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)));
+        }
+        *opaque = (void *) from;
+        *olength = sizeof(struct sockaddr_ipx);
+    }
+    return rc;
+}
+
+
+
+static int
+netsnmp_ipx_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_ipx)) {
+        to = (struct sockaddr *) (*opaque);
+    } else if (t != NULL && t->data != NULL &&
+               t->data_length == sizeof(struct sockaddr_ipx)) {
+        to = (struct sockaddr *) (t->data);
+    }
+
+    if (to != NULL && t != NULL && t->sock >= 0) {
+        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) {
+		break;
+	    }
+	}
+    }
+    return rc;
+}
+
+
+
+static int
+netsnmp_ipx_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;
+}
+
+
+
+/*
+ * Open a IPX-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_ipx_transport(struct sockaddr_ipx *addr, int local)
+{
+    netsnmp_transport *t = NULL;
+    int             rc = 0;
+
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    if (local)
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
+    if (addr == NULL || addr->sipx_family != AF_IPX) {
+        return NULL;
+    }
+
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
+    if (t == NULL) {
+        return NULL;
+    }
+
+    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);
+    }
+
+    t->domain = netsnmpIPXDomain;
+    t->domain_length = netsnmpIPXDomain_len;
+
+    t->sock = socket(AF_IPX, SOCK_DGRAM, AF_IPX);
+    if (t->sock < 0) {
+        netsnmp_transport_free(t);
+        return NULL;
+    }
+
+    if (local) {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
+        t->local = (unsigned char*)malloc(12);
+        if (t->local == NULL) {
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        memcpy(&(t->local[00]), (u_char *) & (addr->sipx_network), 4);
+        memcpy(&(t->local[04]), (u_char *) & (addr->sipx_node), 6);
+        memcpy(&(t->local[10]), (u_char *) & (addr->sipx_port), 2);
+        t->local_length = 12;
+
+        /*
+         * This session is inteneded as a server, so we must bind on to the
+         * given address (which may include a particular network and/or node
+         * address, but definitely includes a port number).
+         */
+
+        rc = bind(t->sock, (struct sockaddr *) addr,
+                  sizeof(struct sockaddr));
+        if (rc != 0) {
+            netsnmp_ipx_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        t->data = NULL;
+        t->data_length = 0;
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+    } else {
+        t->remote = (unsigned char*)malloc(12);
+        if (t->remote == NULL) {
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        memcpy(&(t->remote[00]), (u_char *) & (addr->sipx_network), 4);
+        memcpy(&(t->remote[04]), (u_char *) & (addr->sipx_node), 6);
+        memcpy(&(t->remote[10]), (u_char *) & (addr->sipx_port), 2);
+        t->remote_length = 12;
+
+        /*
+         * This is a client session.  Save the address in the
+         * transport-specific data pointer for later use by snmp_ipx_send.
+         */
+
+        t->data = malloc(sizeof(struct sockaddr_ipx));
+        if (t->data == NULL) {
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        memcpy(t->data, addr, sizeof(struct sockaddr_ipx));
+        t->data_length = sizeof(struct sockaddr_ipx);
+    }
+
+    /*
+     * Maximum size of an IPX PDU is 576 bytes including a 30-byte header.
+     * Ridiculous!  
+     */
+
+    t->msgMaxSize = 576 - 30;
+    t->f_recv     = netsnmp_ipx_recv;
+    t->f_send     = netsnmp_ipx_send;
+    t->f_close    = netsnmp_ipx_close;
+    t->f_accept   = NULL;
+    t->f_fmtaddr  = netsnmp_ipx_fmtaddr;
+
+    return t;
+}
+
+
+
+/*
+ * Attempt to parse a string of the form [%08x]:%12x[/%d] where the parts
+ * are the network number, the node address and the port in that order.  
+ */
+
+int
+netsnmp_sockaddr_ipx2(struct sockaddr_ipx *addr, const char *peername,
+		      const char *default_target)
+{
+    char           *input = NULL, *def = NULL;
+    const char     *network, *node, *port;
+    char           *tmp;
+    unsigned long   i;
+
+    if (addr == NULL) {
+        return 0;
+    }
+    memset(addr, 0, sizeof(struct sockaddr_ipx));
+
+    DEBUGMSGTL(("netsnmp_sockaddr_ipx",
+		"addr %p, peername \"%s\" default_target \"%s\"\n",
+                addr, peername ? peername : "[NIL]",
+		default_target ? default_target : "[NIL]"));
+
+    addr->sipx_family = AF_IPX;
+    addr->sipx_type = 4;        /*  Specified in RFC 1420.  */
+
+    network = input = strdup(peername ? peername : "");
+    tmp = strchr(input, ':');
+    if (tmp != NULL) {
+        DEBUGMSGTL(("netsnmp_sockaddr_ipx", "Node identified\n"));
+        *tmp++ = '\0';
+	node = tmp;
+        tmp = strchr(tmp, '/');
+    } else {
+        node = NULL;
+        tmp = strchr(input, '/');
+    }
+    if (tmp != NULL) {
+        DEBUGMSGTL(("netsnmp_sockaddr_ipx", "Port identified\n"));
+        *tmp++ = '\0';
+        port = tmp;
+    } else
+        port = NULL;
+
+    DEBUGMSGTL(("netsnmp_sockaddr_ipx", "Address: %s:%s/%s\n",
+                network ? network : "[NIL]", node ? node : "[NIL]",
+                port ? port : "[NIL]"));
+
+    def = strdup(default_target ? default_target : "");
+    if (network == NULL || *network == '\0')
+        network = def;
+    tmp = strchr(def, ':');
+    if (tmp != NULL) {
+        *tmp++ = '\0';
+	if (node == NULL || *node == '\0')
+            node = tmp;
+        tmp = strchr(tmp, '/');
+    } else
+        tmp = strchr(def, '/');
+    if (tmp != NULL) {
+        *tmp++ = '\0';
+        if (port == NULL || *port == '\0')
+            port = tmp;
+    }
+
+    DEBUGMSGTL(("netsnmp_sockaddr_ipx", "Address: %s:%s/%s\n",
+                network ? network : "[NIL]", node ? node : "[NIL]",
+                port ? port : "[NIL]"));
+
+    if (network == NULL || *network == '\0')
+        network = "0";
+
+    if (node == NULL || *node == '\0')
+        node = "000000000000";
+
+    if (port == NULL || *port == '\0')
+#define val(x) __STRING(x)
+        port = val(SNMP_IPX_DEFAULT_PORT);
+#undef val
+
+    DEBUGMSGTL(("netsnmp_sockaddr_ipx", "Address: %s:%s/%s\n",
+                network ? network : "[NIL]", node ? node : "[NIL]",
+                port ? port : "[NIL]"));
+
+    if(sscanf(network, "%8lx%*c", &i) == 1) {
+        DEBUGMSGTL(("netsnmp_sockaddr_ipx", "network parsed okay\n"));
+        addr->sipx_network = htonl(i);
+    } else {
+        DEBUGMSGTL(("netsnmp_sockaddr_ipx",
+                    "failed to parse network part of address\n"));
+        free(def);
+        free(input);
+        return 0;
+    }
+
+    if(sscanf(node, "%2hhx%2hhx%2hhx%2hhx%2hhx%2hhx%*c",
+              &addr->sipx_node[0], &addr->sipx_node[1],
+              &addr->sipx_node[2], &addr->sipx_node[3],
+              &addr->sipx_node[4], &addr->sipx_node[5]) == 6) {
+        DEBUGMSGTL(("netsnmp_sockaddr_ipx", "node parsed okay\n"));
+    } else {
+        DEBUGMSGTL(("netsnmp_sockaddr_ipx",
+                    "failed to parse node part of address\n"));
+        free(def);
+        free(input);
+        return 0;
+    }
+
+    if(sscanf(port, "%lu%*c", &i) == 1) {
+        DEBUGMSGTL(("netsnmp_sockaddr_ipx", "port parsed okay\n"));
+        addr->sipx_port = htons(i);
+    } else {
+        DEBUGMSGTL(("netsnmp_sockaddr_ipx",
+                    "failed to parse port part of address\n"));
+        free(def);
+        free(input);
+        return 0;
+    }
+
+    free(def);
+    free(input);
+    return 1;
+}
+
+
+
+int
+netsnmp_sockaddr_ipx(struct sockaddr_ipx *addr, const char *peername)
+{
+    return netsnmp_sockaddr_ipx2(addr, peername, NULL);
+}
+
+
+
+netsnmp_transport *
+netsnmp_ipx_create_tstring(const char *str, int local,
+			   const char *default_target)
+{
+    struct sockaddr_ipx addr;
+
+    if (netsnmp_sockaddr_ipx2(&addr, str, default_target)) {
+        return netsnmp_ipx_transport(&addr, local);
+    } else {
+        return NULL;
+    }
+}
+
+
+
+netsnmp_transport *
+netsnmp_ipx_create_ostring(const u_char * o, size_t o_len, int local)
+{
+    struct sockaddr_ipx addr;
+
+    if (o_len == 12) {
+        addr.sipx_family = AF_IPX;
+        memcpy((u_char *) & (addr.sipx_network), &(o[00]), 4);
+        memcpy((u_char *) & (addr.sipx_node), &(o[04]), 6);
+        memcpy((u_char *) & (addr.sipx_port), &(o[10]), 2);
+        return netsnmp_ipx_transport(&addr, local);
+    }
+    return NULL;
+}
+
+
+
+void
+netsnmp_ipx_ctor(void)
+{
+    ipxDomain.name = netsnmpIPXDomain;
+    ipxDomain.name_length = netsnmpIPXDomain_len;
+    ipxDomain.prefix = (const char**)calloc(2, sizeof(char *));
+    ipxDomain.prefix[0] = "ipx";
+
+    ipxDomain.f_create_from_tstring     = NULL;
+    ipxDomain.f_create_from_tstring_new = netsnmp_ipx_create_tstring;
+    ipxDomain.f_create_from_ostring     = netsnmp_ipx_create_ostring;
+
+    netsnmp_tdomain_register(&ipxDomain);
+}
diff --git a/snmplib/transports/snmpIPv4BaseDomain.c b/snmplib/transports/snmpIPv4BaseDomain.c
new file mode 100644
index 0000000..05e150b
--- /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.sin_addr),
+                     ntohs(addr_pair->local_addr.sin.sin_port));
+        } else if ( t && t->flags & NETSNMP_TRANSPORT_FLAG_HOSTNAME ) {
+            /* XXX: hmm...  why isn't this prefixed */
+            /* assuming intentional */
+            host = netsnmp_gethostbyaddr((char *)&to->sin_addr, sizeof(struct in_addr), AF_INET);
+            return (host ? strdup(host->h_name) : NULL); 
+        } else {
+            snprintf(tmp, sizeof(tmp), "%s: [%s]:%hu->", prefix,
+                     inet_ntoa(to->sin_addr), ntohs(to->sin_port));
+            snprintf(tmp + strlen(tmp), sizeof(tmp)-strlen(tmp), "[%s]:%hu",
+                     inet_ntoa(addr_pair->local_addr.sin.sin_addr),
+                     ntohs(addr_pair->local_addr.sin.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..1ad6888
--- /dev/null
+++ b/snmplib/transports/snmpIPv6BaseDomain.c
@@ -0,0 +1,423 @@
+/* IPV6 base transport support functions
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#ifdef NETSNMP_ENABLE_IPV6
+
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmpIPv6BaseDomain.h>
+#include <net-snmp/library/system.h>
+
+#include <stddef.h>
+#include <stdio.h>
+#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_ipv6", "fmtaddr: t = %p, data = %p, len = %d\n", t,
+                data, len));
+    if (data != NULL && len == sizeof(struct sockaddr_in6)) {
+        to = (struct sockaddr_in6 *) data;
+    } else if (t != NULL && t->data != NULL) {
+        to = (struct sockaddr_in6 *) t->data;
+    }
+    if (to == NULL) {
+        snprintf(tmp, sizeof(tmp), "%s: unknown", prefix);
+    } else {
+        char scope_id[IF_NAMESIZE + 1] = "";
+
+#if defined(HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID)
+	if (to->sin6_scope_id
+            && netsnmp_if_indextoname(to->sin6_scope_id, &scope_id[1])) {
+            scope_id[0] = '%';
+        }
+#endif
+        snprintf(tmp, sizeof(tmp), "%s: [%s%s]:%hu", prefix,
+                 inet_ntop(AF_INET6, (void *) &(to->sin6_addr), addr,
+                           INET6_ADDRSTRLEN), scope_id, ntohs(to->sin6_port));
+    }
+    tmp[sizeof(tmp)-1] = '\0';
+    return strdup(tmp);
+}
+
+int
+netsnmp_sockaddr_in6_2(struct sockaddr_in6 *addr,
+                       const char *inpeername, const char *default_target)
+{
+    char           *cp = NULL, *peername = NULL;
+    char            debug_addr[INET6_ADDRSTRLEN];
+#if HAVE_GETADDRINFO
+    struct addrinfo *addrs = NULL;
+    int             err;
+#elif HAVE_GETIPNODEBYNAME
+    struct hostent *hp = NULL;
+    int             err;
+#elif HAVE_GETHOSTBYNAME
+    struct hostent *hp = NULL;
+#endif
+    int             portno;
+
+    if (addr == NULL) {
+        return 0;
+    }
+
+    DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
+		"addr %p, peername \"%s\", default_target \"%s\"\n",
+                addr, inpeername ? inpeername : "[NIL]",
+		default_target ? default_target : "[NIL]"));
+
+    memset(addr, 0, sizeof(struct sockaddr_in6));
+    addr->sin6_family = AF_INET6;
+    addr->sin6_addr = in6addr_any;
+    addr->sin6_port = htons((u_short)SNMP_PORT);
+
+    {
+        int port = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID,
+                                      NETSNMP_DS_LIB_DEFAULT_PORT);
+        if (port != 0)
+            addr->sin6_port = htons((u_short)port);
+        else if (default_target != NULL)
+            netsnmp_sockaddr_in6_2(addr, default_target, NULL);
+    }
+
+    if (inpeername != NULL) {
+        /*
+         * Duplicate the peername because we might want to mank around with
+         * it.  
+         */
+
+        peername = strdup(inpeername);
+        if (peername == NULL) {
+            return 0;
+        }
+
+        cp = peername;
+        if (*cp == ':') cp++;
+        portno = atoi(cp);
+        while (*cp && isdigit((unsigned char) *cp)) cp++;
+        if (!*cp &&  portno != 0) {
+            /*
+             * Okay, it looks like JUST a port number.  
+             */
+            DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "totally numeric: %d\n",
+                        portno));
+            addr->sin6_port = htons((u_short)portno);
+            goto resolved;
+        }
+
+        /*
+         * See if it is an IPv6 address covered with square brackets. Also check
+         * for an appended :port.  
+         */
+        if (*peername == '[') {
+            cp = strchr(peername, ']');
+            if (cp != NULL) {
+	      /*
+	       * See if it is an IPv6 link-local address with interface
+	       * name as <zone_id>, like fe80::1234%eth0.
+	       * Please refer to the internet draft, IPv6 Scoped Address Architecture
+	       * http://www.ietf.org/internet-drafts/draft-ietf-ipngwg-scoping-arch-04.txt
+	       *
+	       */
+	        char *scope_id;
+	        unsigned int if_index = 0;
+                *cp = '\0';
+		scope_id = strchr(peername + 1, '%');
+		if (scope_id != NULL) {
+		    *scope_id = '\0';
+		    if_index = netsnmp_if_nametoindex(scope_id + 1);
+		}
+                if (*(cp + 1) == ':') {
+                    portno = atoi(cp+2);
+                    if (portno != 0 &&
+                        inet_pton(AF_INET6, peername + 1,
+                                  (void *) &(addr->sin6_addr))) {
+                        DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
+                                    "IPv6 address with port suffix :%d\n",
+                                    portno));
+                        if (portno > 0 && portno <= 0xffff) {
+                            addr->sin6_port = htons((u_short)portno);
+                        } else {
+                            DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "invalid port number: %d", portno));
+                            return 0;
+                        }
+
+#if defined(HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID)
+                        addr->sin6_scope_id = if_index;
+#endif
+                        goto resolved;
+                    }
+                } else {
+                    if (inet_pton
+                        (AF_INET6, peername + 1,
+                         (void *) &(addr->sin6_addr))) {
+                        DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
+                                    "IPv6 address with square brackets\n"));
+                        portno = ntohs(addr->sin6_port);
+                        if (portno == 0)
+                            portno = netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID, 
+                                                    NETSNMP_DS_LIB_DEFAULT_PORT);
+                        if (portno <= 0)
+                            portno = SNMP_PORT;
+                        addr->sin6_port = htons((u_short)portno);
+#if defined(HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID)
+                        addr->sin6_scope_id = if_index;
+#endif
+                        goto resolved;
+                    }
+                }
+		if (scope_id != NULL) {
+		  *scope_id = '%';
+		}
+		*cp = ']';
+            }
+        }
+
+        cp = strrchr(peername, ':');
+        if (cp != NULL) {
+	    char *scope_id;
+	    unsigned int if_index = 0;
+	    *cp = '\0';
+	    scope_id = strchr(peername + 1, '%');
+	    if (scope_id != NULL) {
+	        *scope_id = '\0';
+	        if_index = netsnmp_if_nametoindex(scope_id + 1);
+	    }
+            portno = atoi(cp + 1);
+            if (portno != 0 &&
+                inet_pton(AF_INET6, peername,
+                          (void *) &(addr->sin6_addr))) {
+                DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
+                            "IPv6 address with port suffix :%d\n",
+                            atoi(cp + 1)));
+                if (portno > 0 && portno <= 0xffff) {
+                    addr->sin6_port = htons((u_short)portno);
+                } else {
+                    DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "invalid port number: %d", portno));
+                    return 0;
+                }
+
+#if defined(HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID)
+                addr->sin6_scope_id = if_index;
+#endif
+                goto resolved;
+            }
+	    if (scope_id != NULL) {
+	      *scope_id = '%';
+	    }
+            *cp = ':';
+        }
+
+        /*
+         * See if it is JUST an IPv6 address.  
+         */
+        if (inet_pton(AF_INET6, peername, (void *) &(addr->sin6_addr))) {
+            DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "just IPv6 address\n"));
+            goto resolved;
+        }
+
+        /*
+         * Well, it must be a hostname then, possibly with an appended :port.
+         * Sort that out first.  
+         */
+
+        cp = strrchr(peername, ':');
+        if (cp != NULL) {
+            *cp = '\0';
+            portno = atoi(cp + 1);
+            if (portno != 0) {
+                DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
+                            "hostname(?) with port suffix :%d\n",
+                            portno));
+                if (portno > 0 && portno <= 0xffff) {
+                    addr->sin6_port = htons((u_short)portno);
+                } else {
+                    DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "invalid port number: %d", portno));
+                    return 0;
+                }
+
+            } else {
+                /*
+                 * No idea, looks bogus but we might as well pass the full thing to
+                 * the name resolver below.  
+                 */
+                *cp = ':';
+                DEBUGMSGTL(("netsnmp_sockaddr_in6_2",
+                            "hostname(?) with embedded ':'?\n"));
+            }
+            /*
+             * Fall through.  
+             */
+        }
+
+        if (peername[0] == '\0') {
+          DEBUGMSGTL(("netsnmp_sockaddr_in6_2", "empty hostname\n"));
+          free(peername);
+          return 0;
+        }
+
+#if HAVE_GETADDRINFO
+        {
+            struct addrinfo hint = { 0 };
+            hint.ai_flags = 0;
+            hint.ai_family = PF_INET6;
+            hint.ai_socktype = SOCK_DGRAM;
+            hint.ai_protocol = 0;
+
+            err = netsnmp_getaddrinfo(peername, NULL, &hint, &addrs);
+        }
+        if (err != 0) {
+            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 = netsnmp_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);
+}
+
+#endif /* NETSNMP_ENABLE_IPV6 */
diff --git a/snmplib/transports/snmpSSHDomain.c b/snmplib/transports/snmpSSHDomain.c
new file mode 100644
index 0000000..a9ed81f
--- /dev/null
+++ b/snmplib/transports/snmpSSHDomain.c
@@ -0,0 +1,1010 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+#include <net-snmp/library/snmpSSHDomain.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <errno.h>
+
+#include <libssh2.h>
+#include <libssh2_sftp.h>
+
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#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_SYS_UN_H
+#include <sys/un.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 <pwd.h>
+
+#ifndef MAXPATHLEN
+#warn no system max path length detected
+#define MAXPATHLEN 2048
+#endif
+
+#include <net-snmp/types.h>
+#include <net-snmp/output_api.h>
+#include <net-snmp/library/tools.h>
+#include <net-snmp/library/system.h>
+#include <net-snmp/library/default_store.h>
+
+#include <net-snmp/library/snmp_transport.h>
+#include <net-snmp/library/snmpIPv4BaseDomain.h>
+#include <net-snmp/library/snmpSocketBaseDomain.h>
+#include <net-snmp/library/read_config.h>
+
+netsnmp_feature_require(user_information)
+
+#define MAX_NAME_LENGTH 127
+
+#define NETSNMP_SSHTOSNMP_VERSION1      1
+#define NETSNMP_MAX_SSHTOSNMP_VERSION   1
+
+#define DEFAULT_SOCK_NAME "sshdomainsocket"
+
+typedef struct netsnmp_ssh_addr_pair_s {
+    struct sockaddr_in remote_addr;
+    struct in_addr local_addr;
+    LIBSSH2_SESSION *session;
+    LIBSSH2_CHANNEL *channel;
+    char username[MAX_NAME_LENGTH+1];
+    struct sockaddr_un unix_socket_end;
+    char socket_path[MAXPATHLEN];
+} netsnmp_ssh_addr_pair;
+
+const oid netsnmp_snmpSSHDomain[] = { TRANSPORT_DOMAIN_SSH_IP };
+static netsnmp_tdomain sshDomain;
+
+#define SNMPSSHDOMAIN_USE_EXTERNAL_PIPE 1
+
+/*
+ * Not static since it is needed here as well as in snmpUDPDomain, but not
+ * public either
+ */
+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.  
+ */
+
+static char *
+netsnmp_ssh_fmtaddr(netsnmp_transport *t, void *data, int len)
+{
+    netsnmp_ssh_addr_pair *addr_pair = NULL;
+
+    if (data != NULL && len == sizeof(netsnmp_ssh_addr_pair)) {
+	addr_pair = (netsnmp_ssh_addr_pair *) data;
+    } else if (t != NULL && t->data != NULL) {
+	addr_pair = (netsnmp_ssh_addr_pair *) t->data;
+    }
+
+    if (addr_pair == NULL) {
+        return strdup("SSH: unknown");
+    } else {
+        struct sockaddr_in *to = NULL;
+	char tmp[64];
+        to = (struct sockaddr_in *) &(addr_pair->remote_addr);
+        if (to == NULL) {
+            return strdup("SSH: unknown");
+        }
+
+        sprintf(tmp, "SSH: [%s]:%hd",
+                inet_ntoa(to->sin_addr), ntohs(to->sin_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_ssh_recv(netsnmp_transport *t, void *buf, int size,
+		 void **opaque, int *olength)
+{
+    int rc = -1;
+    netsnmp_tmStateReference *tmStateRef = NULL;
+    netsnmp_ssh_addr_pair *addr_pair = NULL;
+    int iamclient = 0;
+
+    DEBUGMSGTL(("ssh", "at the top of ssh_recv\n"));
+    DEBUGMSGTL(("ssh", "t=%p\n", t));
+    if (t != NULL && t->data != NULL) {
+	addr_pair = (netsnmp_ssh_addr_pair *) t->data;
+    }
+
+    DEBUGMSGTL(("ssh", "addr_pair=%p\n", addr_pair));
+    if (t != NULL && addr_pair && addr_pair->channel) {
+        DEBUGMSGTL(("ssh", "t=%p, addr_pair=%p, channel=%p\n",
+                    t, addr_pair, addr_pair->channel));
+        iamclient = 1;
+	while (rc < 0) {
+	    rc = libssh2_channel_read(addr_pair->channel, buf, size);
+	    if (rc < 0) {  /* XXX: from tcp; ssh equiv?:  && errno != EINTR */
+		DEBUGMSGTL(("ssh", "recv fd %d err %d (\"%s\")\n",
+			    t->sock, errno, strerror(errno)));
+		break;
+	    }
+	    DEBUGMSGTL(("ssh", "recv fd %d got %d bytes\n",
+			t->sock, rc));
+	}
+    } else if (t != NULL) {
+
+#ifdef SNMPSSHDOMAIN_USE_EXTERNAL_PIPE
+
+        socklen_t       tolen = sizeof(struct sockaddr_un);
+
+        if (t != NULL && t->sock >= 0) {
+            struct sockaddr *to;
+            to = (struct sockaddr *) SNMP_MALLOC_STRUCT(sockaddr_un);
+            if (NULL == to) {
+                *opaque = NULL;
+                *olength = 0;
+                return -1;
+            }
+
+            if(getsockname(t->sock, to, &tolen) != 0){
+                free(to);
+                *opaque = NULL;
+                *olength = 0;
+                return -1;
+            };
+
+            if (addr_pair->username[0] == '\0') {
+                /* we don't have a username yet, so this is the first message */
+                struct ucred *remoteuser;
+                struct msghdr msg;
+                struct iovec iov[1];
+                char cmsg[CMSG_SPACE(sizeof(remoteuser))+4096];
+                struct cmsghdr *cmsgptr;
+                u_char *charbuf  = buf;
+
+                iov[0].iov_base = buf;
+                iov[0].iov_len = size;
+
+                memset(&msg, 0, sizeof msg);
+                msg.msg_iov = iov;
+                msg.msg_iovlen = 1;
+                msg.msg_control = &cmsg;
+                msg.msg_controllen = sizeof(cmsg);
+                
+                rc = recvmsg(t->sock, &msg, MSG_DONTWAIT); /* use DONTWAIT? */
+                if (rc <= 0) {
+                    return rc;
+                }
+
+                /* we haven't received the starting info */
+                if ((u_char) charbuf[0] > NETSNMP_SSHTOSNMP_VERSION1) {
+                    /* unsupported connection version */
+                    snmp_log(LOG_ERR, "received unsupported sshtosnmp version: %d\n", charbuf[0]);
+                    return -1;
+                }
+
+                DEBUGMSGTL(("ssh", "received first msg over SSH; internal SSH protocol version %d\n", charbuf[0]));
+
+                for (cmsgptr = CMSG_FIRSTHDR(&msg); cmsgptr != NULL; cmsgptr = CMSG_NXTHDR(&msg, cmsgptr)) {
+                    if (cmsgptr->cmsg_level == SOL_SOCKET && cmsgptr->cmsg_type == SCM_CREDENTIALS) {
+                        /* received credential info */
+                        struct passwd *user_pw;
+
+                        remoteuser = (struct ucred *) CMSG_DATA(cmsgptr);
+
+                        if ((user_pw = getpwuid(remoteuser->uid)) == NULL) {
+                            snmp_log(LOG_ERR, "No user found for uid %d\n",
+                                remoteuser->uid);
+                            return -1;
+                        }
+                        if (strlen(user_pw->pw_name) >
+                            sizeof(addr_pair->username)-1) {
+                            snmp_log(LOG_ERR,
+                                     "User name '%s' too long for snmp\n",
+                                     user_pw->pw_name);
+                            return -1;
+                        }
+                        strlcpy(addr_pair->username, user_pw->pw_name,
+                                sizeof(addr_pair->username));
+                    }
+                    DEBUGMSGTL(("ssh", "Setting user name to %s\n",
+                                addr_pair->username));
+                }
+
+                if (addr_pair->username[0] == '\0') {
+                    snmp_log(LOG_ERR,
+                             "failed to extract username from sshd connected unix socket\n");
+                    return -1;
+                }
+
+                if (rc == 1) {
+                    /* the only packet we received was the starting one */
+                    t->flags |= NETSNMP_TRANSPORT_FLAG_EMPTY_PKT;
+                    return 0;
+                }
+
+                rc -= 1;
+                memmove(charbuf, &charbuf[1], rc);
+            } else {
+                while (rc < 0) {
+                    rc = recvfrom(t->sock, buf, size, 0, NULL, NULL);
+                    if (rc < 0 && errno != EINTR) {
+                        DEBUGMSGTL(("ssh", "recv fd %d err %d (\"%s\")\n",
+                                    t->sock, errno, strerror(errno)));
+                        return rc;
+                    }
+                    *opaque = (void*)to;
+                    *olength = sizeof(struct sockaddr_un);
+                }
+            }
+            DEBUGMSGTL(("ssh", "recv fd %d got %d bytes\n",
+                        t->sock, rc));
+        }
+        
+#else /* we're called directly by sshd and use stdin/out */
+
+        struct passwd *user_pw;
+
+        iamclient = 0;
+        /* we're on the server side and should read from stdin */
+        while (rc < 0) {
+            rc = read(STDIN_FILENO, buf, size);
+            if (rc < 0 && errno != EINTR) {
+                DEBUGMSGTL(("ssh",
+                            " read on stdin failed: %d (\"%s\")\n",
+                            errno, strerror(errno)));
+                break;
+            }
+            if (rc == 0) {
+                /* 0 input is probably bad since we selected on it */
+                DEBUGMSGTL(("ssh", "got a 0 read on stdin\n"));
+                return -1;
+            }
+            DEBUGMSGTL(("ssh", "read on stdin got %d bytes\n", rc));
+        }
+
+/* XXX: need to check the username, but addr_pair doesn't exist! */
+        /*
+        DEBUGMSGTL(("ssh", "current username=%s\n", c));
+        if (addr_pair->username[0] == '\0') {
+            if ((user_pw = getpwuid(getuid())) == NULL) {
+                snmp_log(LOG_ERR, "No user found for uid %d\n", getuid());
+                return -1;
+            }
+            if (strlen(user_pw->pw_name) > sizeof(addr_pair->username)-1) {
+                snmp_log(LOG_ERR, "User name '%s' too long for snmp\n",
+                         user_pw->pw_name);
+                return -1;
+            }
+            strlcpy(addr_pair->username, user_pw->pw_name,
+                    sizeof(addr_pair->username));
+        }
+        */
+
+#endif /* ! SNMPSSHDOMAIN_USE_EXTERNAL_PIPE */
+    }
+
+    /* create a tmStateRef cache */
+    tmStateRef = SNMP_MALLOC_TYPEDEF(netsnmp_tmStateReference);
+
+    /* secshell document says were always authpriv, even if NULL algorithms */
+    /* ugh! */
+    /* XXX: disallow NULL in our implementations */
+    tmStateRef->transportSecurityLevel = SNMP_SEC_LEVEL_AUTHPRIV;
+
+    /* XXX: figure out how to get the specified local secname from the session */
+    if (iamclient && 0) {
+        /* XXX: we're on the client; we should have named the
+           connection ourselves...  pull this from session somehow? */
+        strlcpy(tmStateRef->securityName, addr_pair->username,
+                sizeof(tmStateRef->securityName));
+    } else {
+#ifdef SNMPSSHDOMAIN_USE_EXTERNAL_PIPE
+        strlcpy(tmStateRef->securityName, addr_pair->username,
+                sizeof(tmStateRef->securityName));
+#else /* we're called directly by sshd and use stdin/out */
+        /* we're on the server... */
+        /* XXX: this doesn't copy properly and can get pointer
+           reference issues */
+        if (strlen(getenv("USER")) > 127) {
+            /* ruh roh */
+            /* XXX: clean up */
+            return -1;
+            exit;
+        }
+
+        /* XXX: detect and throw out overflow secname sizes rather
+           than truncating. */
+        strlcpy(tmStateRef->securityName, getenv("USER"),
+                sizeof(tmStateRef->securityName));
+#endif /* ! SNMPSSHDOMAIN_USE_EXTERNAL_PIPE */
+    }
+    tmStateRef->securityName[sizeof(tmStateRef->securityName)-1] = '\0';
+    tmStateRef->securityNameLen = strlen(tmStateRef->securityName);
+    *opaque = tmStateRef;
+    *olength = sizeof(netsnmp_tmStateReference);
+
+    return rc;
+}
+
+
+
+static int
+netsnmp_ssh_send(netsnmp_transport *t, void *buf, int size,
+		 void **opaque, int *olength)
+{
+    int rc = -1;
+
+    netsnmp_ssh_addr_pair *addr_pair = NULL;
+    netsnmp_tmStateReference *tmStateRef = NULL;
+
+    if (t != NULL && t->data != NULL) {
+	addr_pair = (netsnmp_ssh_addr_pair *) t->data;
+    }
+
+    if (opaque != NULL && *opaque != NULL &&
+        *olength == sizeof(netsnmp_tmStateReference)) {
+        tmStateRef = (netsnmp_tmStateReference *) *opaque;
+    }
+
+    if (!tmStateRef) {
+        /* this is now an error according to my memory in the recent draft */
+        snmp_log(LOG_ERR, "netsnmp_ssh_send wasn't passed a valid tmStateReference\n");
+        return -1;
+    }
+
+    if (NULL != t && NULL != addr_pair && NULL != addr_pair->channel) {
+        if (addr_pair->username[0] == '\0') {
+            strlcpy(addr_pair->username, tmStateRef->securityName,
+                    sizeof(addr_pair->username));
+        } else if (strcmp(addr_pair->username, tmStateRef->securityName) != 0 ||
+                   strlen(addr_pair->username) != tmStateRef->securityNameLen) {
+            /* error!  they must always match */
+            snmp_log(LOG_ERR, "netsnmp_ssh_send was passed a tmStateReference with a securityName not equal to previous messages\n");
+            return -1;
+        }
+	while (rc < 0) {
+	    rc = libssh2_channel_write(addr_pair->channel, buf, size);
+	    if (rc < 0) { /* XXX:  && errno != EINTR */
+		break;
+	    }
+	}
+    } else if (t != NULL) {
+#ifdef SNMPSSHDOMAIN_USE_EXTERNAL_PIPE
+
+	while (rc < 0) {
+            rc = sendto(t->sock, buf, size, 0, NULL, 0);
+            
+            if (rc < 0 && errno != EINTR) {
+                break;
+            }
+        }
+
+#else /* we're called directly by sshd and use stdin/out */
+        /* on the server; send to stdout */
+	while (rc < 0) {
+	    rc = write(STDOUT_FILENO, buf, size);
+            fflush(stdout);
+	    if (rc < 0 && errno != EINTR) { /* XXX:  && errno != EINTR */
+		break;
+	    }
+	}
+#endif
+    }
+
+    return rc;
+}
+
+
+
+static int
+netsnmp_ssh_close(netsnmp_transport *t)
+{
+    int rc = -1;
+    netsnmp_ssh_addr_pair *addr_pair = NULL;
+
+    if (t != NULL && t->data != NULL) {
+	addr_pair = (netsnmp_ssh_addr_pair *) t->data;
+    }
+
+    if (t != NULL && addr_pair && t->sock >= 0) {
+        DEBUGMSGTL(("ssh", "close fd %d\n", t->sock));
+
+        if (addr_pair->channel) {
+            libssh2_channel_close(addr_pair->channel);
+            libssh2_channel_free(addr_pair->channel);
+            addr_pair->channel = NULL;
+        }
+
+        if (addr_pair->session) {
+            libssh2_session_disconnect(addr_pair->session, "Normal Shutdown");
+            libssh2_session_free(addr_pair->session);
+            addr_pair->session = NULL;
+        }
+
+#ifndef HAVE_CLOSESOCKET
+        rc = close(t->sock);
+#else
+        rc = closesocket(t->sock);
+#endif
+        t->sock = -1;
+
+#ifdef SNMPSSHDOMAIN_USE_EXTERNAL_PIPE
+
+        close(t->sock);
+        
+        if (!addr_pair->session && !addr_pair->channel) {
+            /* unix socket based connection */
+            close(t->sock);
+
+            /* XXX: make configurable */
+            unlink(addr_pair->socket_path);
+        }
+
+#else /* we're called directly by sshd and use stdin/out */
+
+        /* on the server: close stdin/out */
+        close(STDIN_FILENO);
+        close(STDOUT_FILENO);
+#endif /* ! SNMPSSHDOMAIN_USE_EXTERNAL_PIPE */
+
+    } else {
+
+#ifndef SNMPSSHDOMAIN_USE_EXTERNAL_PIPE
+        /* on the server: close stdin/out */
+        close(STDIN_FILENO);
+        close(STDOUT_FILENO);
+#endif /* ! SNMPSSHDOMAIN_USE_EXTERNAL_PIPE */
+
+    }
+    return rc;
+}
+
+
+
+static int
+netsnmp_ssh_accept(netsnmp_transport *t)
+{
+#ifdef SNMPSSHDOMAIN_USE_EXTERNAL_PIPE
+
+    /* much of this is duplicated from snmpUnixDomain.c */
+
+    netsnmp_ssh_addr_pair *addr_pair;    
+    int                    newsock   = -1;
+    struct sockaddr       *farend    = NULL;
+    socklen_t              farendlen = sizeof(struct sockaddr_un);
+
+
+    if (t != NULL && t->sock >= 0) {
+        addr_pair = SNMP_MALLOC_TYPEDEF(netsnmp_ssh_addr_pair);
+
+        if (addr_pair == NULL) {
+            /*
+             * Indicate that the acceptance of this socket failed.
+             */
+            DEBUGMSGTL(("ssh", "accept: malloc failed\n"));
+            return -1;
+        }
+
+        farend = (struct sockaddr *) &addr_pair->unix_socket_end;
+
+        newsock = accept(t->sock, farend, &farendlen);
+
+        /* set the SO_PASSCRED option so we can receive the remote uid */
+        {
+            int one = 1;
+            setsockopt(newsock, SOL_SOCKET, SO_PASSCRED, (void *) &one,
+                       sizeof(one));
+        }
+
+        if (newsock < 0) {
+            DEBUGMSGTL(("ssh","accept failed rc %d errno %d \"%s\"\n",
+                        newsock, errno, strerror(errno)));
+            free(addr_pair);
+            return newsock;
+        }
+
+        if (t->data != NULL) {
+            free(t->data);
+        }
+
+        DEBUGMSGTL(("ssh", "accept succeeded (farend %p len %d)\n",
+                    farend, farendlen));
+        t->data = addr_pair;
+        t->data_length = sizeof(netsnmp_ssh_addr_pair);
+        netsnmp_sock_buffer_set(newsock, SO_SNDBUF, 1, 0);
+        netsnmp_sock_buffer_set(newsock, SO_RCVBUF, 1, 0);
+        return newsock;
+    } else {
+        return -1;
+    }
+
+#else /* we're called directly by sshd and use stdin/out */
+    /* we don't need to do anything; server side uses stdin/out */
+    /* XXX: check that we're an ssh connection */
+    
+    return STDIN_FILENO; /* return stdin */
+#endif /* ! SNMPSSHDOMAIN_USE_EXTERNAL_PIPE */
+
+}
+
+
+
+/*
+ * Open a SSH-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_ssh_transport(struct sockaddr_in *addr, int local)
+{
+    netsnmp_transport *t = NULL;
+    netsnmp_ssh_addr_pair *addr_pair = NULL;
+    int rc = 0;
+    int i, auth_pw = 0;
+    const char *fingerprint;
+    char *userauthlist;
+    struct sockaddr_un *unaddr;
+    const char *sockpath =
+        netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                              NETSNMP_DS_LIB_SSHTOSNMP_SOCKET);
+    char tmpsockpath[MAXPATHLEN];
+
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    if (local)
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
+    if (addr == NULL || addr->sin_family != AF_INET) {
+        return NULL;
+    }
+
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
+    if (t == NULL) {
+        return NULL;
+    }
+
+    t->domain = netsnmp_snmpSSHDomain;
+    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);
+    if (addr_pair == NULL) {
+        netsnmp_transport_free(t);
+        return NULL;
+    }
+    t->data = addr_pair;
+    t->data_length = sizeof(netsnmp_ssh_addr_pair);
+
+    if (local) {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
+#ifdef SNMPSSHDOMAIN_USE_EXTERNAL_PIPE
+
+        /* XXX: set t->local and t->local_length */
+
+
+        t->flags |= NETSNMP_TRANSPORT_FLAG_LISTEN;
+
+        unaddr = &addr_pair->unix_socket_end;
+
+        /* open a unix domain socket */
+        /* XXX: get data from the transport def for it's location */
+        unaddr->sun_family = AF_UNIX;
+        if (NULL == sockpath) {
+            sprintf(tmpsockpath, "%s/%s", get_persistent_directory(),
+                    DEFAULT_SOCK_NAME);
+            sockpath = tmpsockpath;
+        }
+
+        strcpy(unaddr->sun_path, sockpath);
+        strcpy(addr_pair->socket_path, sockpath);
+
+        t->sock = socket(PF_UNIX, SOCK_STREAM, 0);
+        if (t->sock < 0) {
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+
+        /* set the SO_PASSCRED option so we can receive the remote uid */
+        {
+            int one = 1;
+            setsockopt(t->sock, SOL_SOCKET, SO_PASSCRED, (void *) &one,
+                       sizeof(one));
+        }
+
+        unlink(unaddr->sun_path);
+        rc = bind(t->sock, (struct sockaddr *) unaddr, SUN_LEN(unaddr));
+        if (rc != 0) {
+            DEBUGMSGTL(("netsnmp_ssh_transport",
+                        "couldn't bind \"%s\", errno %d (%s)\n",
+                        unaddr->sun_path, errno, strerror(errno)));
+            netsnmp_ssh_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+
+
+        /* set the socket permissions */
+        {
+            /*
+             * Apply any settings to the ownership/permissions of the
+             * Sshdomain socket
+             */
+            int sshdomain_sock_perm =
+                netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID,
+                                   NETSNMP_DS_SSHDOMAIN_SOCK_PERM);
+            int sshdomain_sock_user =
+                netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID,
+                                   NETSNMP_DS_SSHDOMAIN_SOCK_USER);
+            int sshdomain_sock_group =
+                netsnmp_ds_get_int(NETSNMP_DS_LIBRARY_ID,
+                                   NETSNMP_DS_SSHDOMAIN_SOCK_GROUP);
+
+            DEBUGMSGTL(("ssh", "here: %s, %d, %d, %d\n",
+                        unaddr->sun_path,
+                        sshdomain_sock_perm, sshdomain_sock_user,
+                        sshdomain_sock_group));
+            if (sshdomain_sock_perm != 0) {
+                DEBUGMSGTL(("ssh", "Setting socket perms to %d\n",
+                            sshdomain_sock_perm));
+                chmod(unaddr->sun_path, sshdomain_sock_perm);
+            }
+
+            if (sshdomain_sock_user || sshdomain_sock_group) {
+                /*
+                 * If either of user or group haven't been set,
+                 *  then leave them unchanged.
+                 */
+                if (sshdomain_sock_user == 0 )
+                    sshdomain_sock_user = -1;
+                if (sshdomain_sock_group == 0 )
+                    sshdomain_sock_group = -1;
+                DEBUGMSGTL(("ssh", "Setting socket user/group to %d/%d\n",
+                            sshdomain_sock_user, sshdomain_sock_group));
+                chown(unaddr->sun_path,
+                      sshdomain_sock_user, sshdomain_sock_group);
+            }
+        }
+
+        rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
+        if (rc != 0) {
+            DEBUGMSGTL(("netsnmp_ssh_transport",
+                        "couldn't listen to \"%s\", errno %d (%s)\n",
+                        unaddr->sun_path, errno, strerror(errno)));
+            netsnmp_ssh_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        
+
+#else /* we're called directly by sshd and use stdin/out */
+        /* for ssh on the server side we've been launched so bind to
+           stdin/out */
+
+        /* nothing to do */
+
+        /* XXX: verify we're inside ssh */
+        t->sock = STDIN_FILENO;
+#endif /* ! SNMPSSHDOMAIN_USE_EXTERNAL_PIPE */
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+    } else {
+        char *username;
+        char *keyfilepub;
+        char *keyfilepriv;
+        
+        /* use the requested user name */
+        /* XXX: default to the current user name on the system like ssh does */
+        username = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                         NETSNMP_DS_LIB_SSH_USERNAME);
+        if (!username || 0 == *username) {
+            snmp_log(LOG_ERR, "You must specify a ssh username to use.  See the snmp.conf manual page\n");
+            return NULL;
+        }
+
+        /* use the requested public key file */
+        keyfilepub = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                           NETSNMP_DS_LIB_SSH_PUBKEY);
+        if (!keyfilepub || 0 == *keyfilepub) {
+            /* XXX: default to ~/.ssh/id_rsa.pub */
+            snmp_log(LOG_ERR, "You must specify a ssh public key file to use.  See the snmp.conf manual page\n");
+            return NULL;
+        }
+
+        /* use the requested private key file */
+        keyfilepriv = netsnmp_ds_get_string(NETSNMP_DS_LIBRARY_ID,
+                                            NETSNMP_DS_LIB_SSH_PRIVKEY);
+        if (!keyfilepriv || 0 == *keyfilepriv) {
+            /* XXX: default to keyfilepub without the .pub suffix */
+            snmp_log(LOG_ERR, "You must specify a ssh private key file to use.  See the snmp.conf manual page\n");
+            return NULL;
+        }
+
+        /* xxx: need an ipv6 friendly one too (sigh) */
+
+        /* XXX: not ideal when structs don't actually match size wise */
+        memcpy(&(addr_pair->remote_addr), addr, sizeof(struct sockaddr_in));
+
+        t->sock = socket(PF_INET, SOCK_STREAM, 0);
+        if (t->sock < 0) {
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+
+        t->remote = (u_char *)malloc(6);
+        if (t->remote == NULL) {
+            netsnmp_ssh_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_length = 6;
+
+        /*
+         * This is a client-type session, so attempt to connect to the far
+         * end.  We don't go non-blocking here because it's not obvious what
+         * you'd then do if you tried to do snmp_sends before the connection
+         * had completed.  So this can block.
+         */
+
+        rc = connect(t->sock, (struct sockaddr *)addr,
+		     sizeof(struct sockaddr));
+
+        if (rc < 0) {
+            netsnmp_ssh_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+
+        /*
+         * Allow user to override the send and receive buffers. Default is
+         * to use os default.  Don't worry too much about errors --
+         * just plough on regardless.  
+         */
+        netsnmp_sock_buffer_set(t->sock, SO_SNDBUF, local, 0);
+        netsnmp_sock_buffer_set(t->sock, SO_RCVBUF, local, 0);
+
+        /* open the SSH session and channel */
+        addr_pair->session = libssh2_session_init();
+        if (libssh2_session_startup(addr_pair->session, t->sock)) {
+          shutdown:
+            snmp_log(LOG_ERR, "Failed to establish an SSH session\n");
+            netsnmp_ssh_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+
+        /* At this point we havn't authenticated, The first thing to
+           do is check the hostkey's fingerprint against our known
+           hosts Your app may have it hard coded, may go to a file,
+           may present it to the user, that's your call
+         */
+        fingerprint =
+            libssh2_hostkey_hash(addr_pair->session, LIBSSH2_HOSTKEY_HASH_MD5);
+        DEBUGMSGTL(("ssh", "Fingerprint: "));
+        for(i = 0; i < 16; i++) {
+            DEBUGMSG(("ssh", "%02x",
+                      (unsigned char)fingerprint[i]));
+        }
+        DEBUGMSG(("ssh", "\n"));
+
+        /* check what authentication methods are available */
+        userauthlist =
+            libssh2_userauth_list(addr_pair->session,
+                                  username, strlen(username));
+        DEBUGMSG(("ssh", "Authentication methods: %s\n", userauthlist));
+
+        /* XXX: allow other types */
+        /* XXX: 4 seems magic to me... */
+        if (strstr(userauthlist, "publickey") != NULL) {
+            auth_pw |= 4;
+        }
+
+        /* XXX: hard coded paths and users */
+        if (auth_pw & 4) {
+            /* public key */
+            if (libssh2_userauth_publickey_fromfile(addr_pair->session,
+                                                    username,
+                                                    keyfilepub, keyfilepriv,
+                                                    NULL)) {
+                snmp_log(LOG_ERR,"Authentication by public key failed!\n");
+                goto shutdown;
+            } else {
+                DEBUGMSG(("ssh",
+                          "\tAuthentication by public key succeeded.\n"));
+            }
+        } else {
+            snmp_log(LOG_ERR,"Authentication by public key failed!\n");
+            goto shutdown;
+        }
+
+        /* we've now authenticated both sides; contining onward ... */
+
+        /* Request a channel */
+        if (!(addr_pair->channel =
+              libssh2_channel_open_session(addr_pair->session))) {
+            snmp_log(LOG_ERR, "Unable to open a session\n");
+            goto shutdown;
+        }
+
+        /* Request a terminal with 'vanilla' terminal emulation
+         * See /etc/termcap for more options
+         */
+        /* XXX: needed?  doubt it */
+/*         if (libssh2_channel_request_pty(addr_pair->channel, "vanilla")) { */
+/*             snmp_log(LOG_ERR, "Failed requesting pty\n"); */
+/*             goto shutdown; */
+/*         } */
+        if (libssh2_channel_subsystem(addr_pair->channel, "snmp")) {
+            snmp_log(LOG_ERR, "Failed to request the ssh 'snmp' subsystem\n");
+            goto shutdown;
+        }
+    }
+
+    DEBUGMSG(("ssh","Opened connection.\n"));
+    /*
+     * Message size is not limited by this transport (hence msgMaxSize
+     * is equal to the maximum legal size of an SNMP message).  
+     */
+
+    t->msgMaxSize = 0x7fffffff;
+    t->f_recv     = netsnmp_ssh_recv;
+    t->f_send     = netsnmp_ssh_send;
+    t->f_close    = netsnmp_ssh_close;
+    t->f_accept   = netsnmp_ssh_accept;
+    t->f_fmtaddr  = netsnmp_ssh_fmtaddr;
+
+    return t;
+}
+
+
+
+netsnmp_transport *
+netsnmp_ssh_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_ssh_transport(&addr, local);
+    } else {
+        return NULL;
+    }
+}
+
+
+
+netsnmp_transport *
+netsnmp_ssh_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_ssh_transport(&addr, local);
+    }
+    return NULL;
+}
+
+void
+sshdomain_parse_socket(const char *token, char *cptr)
+{
+    char *socket_perm, *socket_user, *socket_group;
+    int uid = -1;
+    int gid = -1;
+    int s_perm = -1;
+    char *st;
+
+    DEBUGMSGTL(("ssh/config", "parsing socket info: %s\n", cptr));
+    socket_perm = strtok_r(cptr, " \t", &st);
+    socket_user = strtok_r(NULL, " \t", &st);
+    socket_group = strtok_r(NULL, " \t", &st);
+
+    if (socket_perm) {
+        s_perm = strtol(socket_perm, NULL, 8);
+        netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID,
+                           NETSNMP_DS_SSHDOMAIN_SOCK_PERM, s_perm);
+        DEBUGMSGTL(("ssh/config", "socket permissions: %o (%d)\n",
+                    s_perm, s_perm));
+    }
+    /*
+     * Try to handle numeric UIDs or user names for the socket owner
+     */
+    if (socket_user) {
+        uid = netsnmp_str_to_uid(socket_user);
+        if ( uid != 0 )
+            netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_SSHDOMAIN_SOCK_USER, uid);
+        DEBUGMSGTL(("ssh/config", "socket owner: %s (%d)\n",
+                    socket_user, uid));
+    }
+
+    /*
+     * and similarly for the socket group ownership
+     */
+    if (socket_group) {
+        gid = netsnmp_str_to_gid(socket_group);
+        if ( gid != 0 )
+            netsnmp_ds_set_int(NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_SSHDOMAIN_SOCK_GROUP, gid);
+        DEBUGMSGTL(("ssh/config", "socket group: %s (%d)\n",
+                    socket_group, gid));
+    }
+}
+
+void
+netsnmp_ssh_ctor(void)    
+{
+    sshDomain.name = netsnmp_snmpSSHDomain;
+    sshDomain.name_length = netsnmp_snmpSSHDomain_len;
+    sshDomain.prefix = (const char **)calloc(2, sizeof(char *));
+    sshDomain.prefix[0] = "ssh";
+
+    sshDomain.f_create_from_tstring     = NULL;
+    sshDomain.f_create_from_tstring_new = netsnmp_ssh_create_tstring;
+    sshDomain.f_create_from_ostring     = netsnmp_ssh_create_ostring;
+
+    register_config_handler("snmp", "sshtosnmpsocketperms",
+                            &sshdomain_parse_socket, NULL,
+                            "socketperms [username [groupname]]");
+
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "sshtosnmpsocket",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_SSHTOSNMP_SOCKET);
+
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "sshusername",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_SSH_USERNAME);
+
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "sshpublickey",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_SSH_PUBKEY);
+
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "sshprivatekey",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_SSH_PRIVKEY);
+
+    DEBUGMSGTL(("ssh", "registering the ssh domain\n"));
+    netsnmp_tdomain_register(&sshDomain);
+}
+
+
diff --git a/snmplib/transports/snmpSTDDomain.c b/snmplib/transports/snmpSTDDomain.c
new file mode 100644
index 0000000..0a1c3f9
--- /dev/null
+++ b/snmplib/transports/snmpSTDDomain.c
@@ -0,0 +1,285 @@
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/library/snmpSTDDomain.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <signal.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_DMALLOC_H
+#include <dmalloc.h>
+#endif
+
+#include <net-snmp/types.h>
+#include <net-snmp/output_api.h>
+
+#include <net-snmp/library/snmp_transport.h>
+#include <net-snmp/library/tools.h>
+
+oid netsnmp_snmpSTDDomain[] = { TRANSPORT_DOMAIN_STD_IP };
+static netsnmp_tdomain stdDomain;
+
+/*
+ * Return a string representing the address in data, or else the "far end"
+ * address if data is NULL.  
+ */
+
+static char *
+netsnmp_std_fmtaddr(netsnmp_transport *t, void *data, int len)
+{
+    char *buf;
+    DEBUGMSGTL(("domain:std","formatting addr.  data=%p\n",t->data));
+    if (t->data) {
+        netsnmp_std_data *data = (netsnmp_std_data*)t->data;
+        buf = (char*)malloc(SNMP_MAXBUF_MEDIUM);
+        if (!buf)
+            return strdup("STDInOut");
+        snprintf(buf, SNMP_MAXBUF_MEDIUM, "STD:%s", data->prog);
+        DEBUGMSGTL(("domain:std","  formatted:=%s\n",buf));
+        return buf;
+    }
+    return strdup("STDInOut");
+}
+
+
+
+/*
+ * 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_std_recv(netsnmp_transport *t, void *buf, int size,
+		 void **opaque, int *olength)
+{
+    int rc = -1;
+
+    DEBUGMSGTL(("domain:std","recv on sock %d.  data=%p\n",t->sock, t->data));
+    while (rc < 0) {
+        rc = read(t->sock, buf, size);
+        DEBUGMSGTL(("domain:std","  bytes: %d.\n", rc));
+        if (rc < 0 && errno != EINTR) {
+            DEBUGMSGTL(("netsnmp_std", " read on fd %d failed: %d (\"%s\")\n",
+                        t->sock, errno, strerror(errno)));
+            break;
+        }
+        if (rc == 0) {
+            /* 0 input is probably bad since we selected on it */
+            return -1;
+        }
+        DEBUGMSGTL(("netsnmp_std", "read on stdin got %d bytes\n", rc));
+    }
+
+    return rc;
+}
+
+
+
+static int
+netsnmp_std_send(netsnmp_transport *t, void *buf, int size,
+		 void **opaque, int *olength)
+{
+    int rc = -1;
+
+    DEBUGMSGTL(("domain:std","send on sock.  data=%p\n", t->data));
+    while (rc < 0) {
+        if (t->data) {
+            netsnmp_std_data *data = (netsnmp_std_data*)t->data;
+            rc = write(data->outfd, buf, size);
+        } else {
+            /* straight to stdout */
+            rc = write(1, buf, size);
+        }
+        if (rc < 0 && errno != EINTR) {
+            break;
+        }
+    }
+    return rc;
+}
+
+static int
+netsnmp_std_close(netsnmp_transport *t)
+{
+    DEBUGMSGTL(("domain:std","close.  data=%p\n", t->data));
+    if (t->data) {
+        netsnmp_std_data *data = (netsnmp_std_data*)t->data;
+        close(data->outfd);
+        close(t->sock);
+
+        /* kill the child too */
+        DEBUGMSGTL(("domain:std"," killing %d\n", data->childpid));
+        kill(data->childpid, SIGTERM);
+        sleep(1);
+        kill(data->childpid, SIGKILL);
+        /* XXX: set an alarm to kill harder the child */
+    } else {
+        /* close stdout/in */
+        close(1);
+        close(0);
+    }
+    return 0;
+}
+
+
+
+static int
+netsnmp_std_accept(netsnmp_transport *t)
+{
+    DEBUGMSGTL(("domain:std"," accept data=%p\n", t->data));
+    /* nothing to do here */
+    return 0;
+}
+
+/*
+ * Open a STDIN/STDOUT -based transport for SNMP.
+ */
+
+netsnmp_transport *
+netsnmp_std_transport(const char *instring, size_t instring_len,
+		      const char *default_target)
+{
+    netsnmp_transport *t;
+
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
+    if (t == NULL) {
+        return NULL;
+    }
+
+    t->domain = netsnmp_snmpSTDDomain;
+    t->domain_length =
+        sizeof(netsnmp_snmpSTDDomain) / sizeof(netsnmp_snmpSTDDomain[0]);
+
+    t->sock = 0;
+    t->flags = NETSNMP_TRANSPORT_FLAG_STREAM | NETSNMP_TRANSPORT_FLAG_TUNNELED;
+
+    /*
+     * Message size is not limited by this transport (hence msgMaxSize
+     * is equal to the maximum legal size of an SNMP message).  
+     */
+
+    t->msgMaxSize = 0x7fffffff;
+    t->f_recv     = netsnmp_std_recv;
+    t->f_send     = netsnmp_std_send;
+    t->f_close    = netsnmp_std_close;
+    t->f_accept   = netsnmp_std_accept;
+    t->f_fmtaddr  = netsnmp_std_fmtaddr;
+
+    /*
+     * if instring is not null length, it specifies a path to a prog
+     * XXX: plus args
+     */
+    if (instring_len == 0 && default_target != NULL) {
+	instring = default_target;
+	instring_len = strlen(default_target);
+    }
+
+    if (instring_len != 0) {
+        int infd[2], outfd[2];  /* sockets to and from the client */
+        int childpid;
+
+        if (pipe(infd) || pipe(outfd)) {
+            snmp_log(LOG_ERR,
+                     "Failed to create needed pipes for a STD transport");
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+
+        childpid = fork();
+        /* parentpid => childpid */
+        /* infd[1]   => infd[0] */
+        /* outfd[0]  <= outfd[1] */
+
+        if (childpid) {
+            netsnmp_std_data *data;
+            
+            /* we're in the parent */
+            close(infd[0]);
+            close(outfd[1]);
+
+            data = SNMP_MALLOC_TYPEDEF(netsnmp_std_data);
+            if (!data) {
+                snmp_log(LOG_ERR, "snmpSTDDomain: malloc failed");
+                netsnmp_transport_free(t);
+                return NULL;
+            }
+            t->data = data;
+            t->data_length = sizeof(netsnmp_std_data);
+            t->sock = outfd[0];
+            data->prog = strdup(instring);
+            data->outfd = infd[1];
+            data->childpid = childpid;
+            DEBUGMSGTL(("domain:std","parent.  data=%p\n", t->data));
+        } else {
+            /* we're in the child */
+
+            /* close stdin */
+            close(0);
+            /* copy pipe output to stdout */
+            dup(infd[0]);
+
+            /* close stdout */
+            close(1);
+            /* copy pipe output to stdin */
+            dup(outfd[1]);
+            
+            /* close all the pipes themselves */
+            close(infd[0]);
+            close(infd[1]);
+            close(outfd[0]);
+            close(outfd[1]);
+
+            /* call exec */
+            system(instring);
+            /* XXX: TODO: use exec form instead; needs args */
+            /* execv(instring, NULL); */
+            exit(0);
+
+            /* ack...  we should never ever get here */
+            snmp_log(LOG_ERR, "STD transport returned after execv()\n");
+        }
+    }            
+
+    return t;
+}
+
+netsnmp_transport *
+netsnmp_std_create_tstring(const char *instring, int local,
+			   const char *default_target)
+{
+    return netsnmp_std_transport(instring, strlen(instring), default_target);
+}
+
+netsnmp_transport *
+netsnmp_std_create_ostring(const u_char * o, size_t o_len, int local)
+{
+    return netsnmp_std_transport((const char*)o, o_len, NULL);
+}
+
+void
+netsnmp_std_ctor(void)
+{
+    stdDomain.name = netsnmp_snmpSTDDomain;
+    stdDomain.name_length = sizeof(netsnmp_snmpSTDDomain) / sizeof(oid);
+    stdDomain.prefix = (const char **)calloc(2, sizeof(char *));
+    stdDomain.prefix[0] = "std";
+
+    stdDomain.f_create_from_tstring     = NULL;
+    stdDomain.f_create_from_tstring_new = netsnmp_std_create_tstring;
+    stdDomain.f_create_from_ostring     = netsnmp_std_create_ostring;
+
+    netsnmp_tdomain_register(&stdDomain);
+}
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/transports/snmpTCPDomain.c b/snmplib/transports/snmpTCPDomain.c
new file mode 100644
index 0000000..7feb028
--- /dev/null
+++ b/snmplib/transports/snmpTCPDomain.c
@@ -0,0 +1,351 @@
+#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>
+
+#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/snmpIPv4BaseDomain.h>
+#include <net-snmp/library/snmpSocketBaseDomain.h>
+#include <net-snmp/library/snmpTCPBaseDomain.h>
+#include <net-snmp/library/tools.h>
+
+/*
+ * needs to be in sync with the definitions in snmplib/snmpUDPDomain.c
+ * 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;
+
+/*
+ * Not static since it is needed here as well as in snmpUDPDomain, but not
+ * public either
+ */
+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.  
+ */
+
+static char *
+netsnmp_tcp_fmtaddr(netsnmp_transport *t, void *data, int len)
+{
+    return netsnmp_ipv4_fmtaddr("TCP", t, data, len);
+}
+
+static int
+netsnmp_tcp_accept(netsnmp_transport *t)
+{
+    struct sockaddr *farend = NULL;
+    netsnmp_udp_addr_pair *addr_pair = NULL;
+    int             newsock = -1;
+    socklen_t       farendlen = sizeof(netsnmp_udp_addr_pair);
+
+    addr_pair = (netsnmp_udp_addr_pair *)malloc(farendlen);
+    if (addr_pair == NULL) {
+        /*
+         * Indicate that the acceptance of this socket failed.  
+         */
+        DEBUGMSGTL(("netsnmp_tcp", "accept: malloc failed\n"));
+        return -1;
+    }
+    memset(addr_pair, 0, sizeof *addr_pair);
+    farend = &addr_pair->remote_addr.sa;
+
+    if (t != NULL && t->sock >= 0) {
+        newsock = accept(t->sock, farend, &farendlen);
+
+        if (newsock < 0) {
+            DEBUGMSGTL(("netsnmp_tcp", "accept failed rc %d errno %d \"%s\"\n",
+			newsock, errno, strerror(errno)));
+            free(addr_pair);
+            return newsock;
+        }
+
+        if (t->data != NULL) {
+            free(t->data);
+        }
+
+        t->data = addr_pair;
+        t->data_length = sizeof(netsnmp_udp_addr_pair);
+        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.  
+         */
+
+        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
+         * to use os default.  Don't worry too much about errors --
+         * just plough on regardless.  
+         */
+        netsnmp_sock_buffer_set(newsock, SO_SNDBUF, 1, 0);
+        netsnmp_sock_buffer_set(newsock, SO_RCVBUF, 1, 0);
+
+        return newsock;
+    } else {
+        free(addr_pair);
+        return -1;
+    }
+}
+
+
+
+/*
+ * Open a TCP-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_tcp_transport(struct sockaddr_in *addr, int local)
+{
+    netsnmp_transport *t = NULL;
+    netsnmp_udp_addr_pair *addr_pair = NULL;
+    int rc = 0;
+
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    if (local)
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
+    if (addr == NULL || addr->sin_family != AF_INET) {
+        return NULL;
+    }
+
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
+    if (t == NULL) {
+        return NULL;
+    }
+
+    addr_pair = (netsnmp_udp_addr_pair *)malloc(sizeof(netsnmp_udp_addr_pair));
+    if (addr_pair == NULL) {
+        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));
+
+    t->domain = netsnmp_snmpTCPDomain;
+    t->domain_length =
+        sizeof(netsnmp_snmpTCPDomain) / sizeof(netsnmp_snmpTCPDomain[0]);
+
+    t->sock = socket(PF_INET, SOCK_STREAM, 0);
+    if (t->sock < 0) {
+        netsnmp_transport_free(t);
+        return NULL;
+    }
+
+    t->flags = NETSNMP_TRANSPORT_FLAG_STREAM;
+
+    if (local) {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
+        int opt = 1;
+
+        /*
+         * This session is inteneded as a server, so we must bind to the given 
+         * IP address (which may include an interface address, or could be
+         * INADDR_ANY, but will always include a port number.  
+         */
+
+        t->flags |= NETSNMP_TRANSPORT_FLAG_LISTEN;
+        t->local = (u_char *)malloc(6);
+        if (t->local == NULL) {
+            netsnmp_socketbase_close(t);
+            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;
+
+        /*
+         * We should set SO_REUSEADDR too.  
+         */
+
+        setsockopt(t->sock, SOL_SOCKET, SO_REUSEADDR, (void *)&opt,
+		   sizeof(opt));
+
+        rc = bind(t->sock, (struct sockaddr *)addr, sizeof(struct sockaddr));
+        if (rc != 0) {
+            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 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.
+         */
+
+        netsnmp_set_non_blocking_mode(t->sock, TRUE);
+
+        /*
+         * Now sit here and wait for connections to arrive.  
+         */
+
+        rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
+        if (rc != 0) {
+            netsnmp_socketbase_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        
+        /*
+         * no buffer size on listen socket - doesn't make sense
+         */
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+    } else {
+      t->remote = (u_char *)malloc(6);
+        if (t->remote == NULL) {
+            netsnmp_socketbase_close(t);
+            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;
+
+        /*
+         * This is a client-type session, so attempt to connect to the far
+         * end.  We don't go non-blocking here because it's not obvious what
+         * you'd then do if you tried to do snmp_sends before the connection
+         * had completed.  So this can block.
+         */
+
+        rc = connect(t->sock, (struct sockaddr *)addr,
+		     sizeof(struct sockaddr));
+
+        if (rc < 0) {
+            netsnmp_socketbase_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+
+        /*
+         * Allow user to override the send and receive buffers. Default is
+         * to use os default.  Don't worry too much about errors --
+         * just plough on regardless.  
+         */
+        netsnmp_sock_buffer_set(t->sock, SO_SNDBUF, local, 0);
+        netsnmp_sock_buffer_set(t->sock, SO_RCVBUF, local, 0);
+    }
+
+    /*
+     * Message size is not limited by this transport (hence msgMaxSize
+     * is equal to the maximum legal size of an SNMP message).  
+     */
+
+    t->msgMaxSize = 0x7fffffff;
+    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;
+
+    return t;
+}
+
+
+
+netsnmp_transport *
+netsnmp_tcp_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_tcp_transport(&addr, local);
+    } else {
+        return NULL;
+    }
+}
+
+
+
+netsnmp_transport *
+netsnmp_tcp_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_tcp_transport(&addr, local);
+    }
+    return NULL;
+}
+
+
+
+void
+netsnmp_tcp_ctor(void)
+{
+    tcpDomain.name = netsnmp_snmpTCPDomain;
+    tcpDomain.name_length = sizeof(netsnmp_snmpTCPDomain) / sizeof(oid);
+    tcpDomain.prefix = (const char **)calloc(2, sizeof(char *));
+    tcpDomain.prefix[0] = "tcp";
+
+    tcpDomain.f_create_from_tstring     = NULL;
+    tcpDomain.f_create_from_tstring_new = netsnmp_tcp_create_tstring;
+    tcpDomain.f_create_from_ostring     = netsnmp_tcp_create_ostring;
+
+    netsnmp_tdomain_register(&tcpDomain);
+}
diff --git a/snmplib/transports/snmpTCPIPv6Domain.c b/snmplib/transports/snmpTCPIPv6Domain.c
new file mode 100644
index 0000000..d2e0a2d
--- /dev/null
+++ b/snmplib/transports/snmpTCPIPv6Domain.c
@@ -0,0 +1,374 @@
+#include <net-snmp/net-snmp-config.h>
+
+#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>
+
+#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_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/config_api.h>
+
+#include <net-snmp/library/snmp_transport.h>
+#include <net-snmp/library/snmpSocketBaseDomain.h>
+#include <net-snmp/library/snmpTCPBaseDomain.h>
+#include <net-snmp/library/tools.h>
+
+#include "inet_ntop.h"
+
+oid netsnmp_TCPIPv6Domain[] = { TRANSPORT_DOMAIN_TCP_IPV6 };
+static netsnmp_tdomain tcp6Domain;
+
+/*
+ * Return a string representing the address in data, or else the "far end"
+ * address if data is NULL.  
+ */
+
+static char *
+netsnmp_tcp6_fmtaddr(netsnmp_transport *t, void *data, int len)
+{
+    return netsnmp_ipv6_fmtaddr("TCP/IPv6", t, data, len);
+}
+
+static int
+netsnmp_tcp6_accept(netsnmp_transport *t)
+{
+    struct sockaddr_in6 *farend = NULL;
+    int             newsock = -1;
+    socklen_t       farendlen = sizeof(struct sockaddr_in6);
+
+    farend = (struct sockaddr_in6 *) malloc(sizeof(struct sockaddr_in6));
+
+    if (farend == NULL) {
+        /*
+         * Indicate that the acceptance of this socket failed.  
+         */
+        DEBUGMSGTL(("netsnmp_tcp6", "accept: malloc failed\n"));
+        return -1;
+    }
+
+    if (t != NULL && t->sock >= 0) {
+        newsock = accept(t->sock, (struct sockaddr *) farend, &farendlen);
+
+        if (newsock < 0) {
+            DEBUGMSGTL(("netsnmp_tcp6","accept failed rc %d errno %d \"%s\"\n",
+			newsock, errno, strerror(errno)));
+            free(farend);
+            return newsock;
+        }
+
+        if (t->data != NULL) {
+            free(t->data);
+        }
+
+        t->data = farend;
+        t->data_length = farendlen;
+        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.  
+         */
+
+        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
+         * to use os default.  Don't worry too much about errors --
+         * just plough on regardless.  
+         */
+        netsnmp_sock_buffer_set(newsock, SO_SNDBUF, 1, 0);
+        netsnmp_sock_buffer_set(newsock, SO_RCVBUF, 1, 0);
+
+        return newsock;
+    } else {
+        free(farend);
+        return -1;
+    }
+}
+
+
+
+/*
+ * Open a TCP/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_tcp6_transport(struct sockaddr_in6 *addr, int local)
+{
+    netsnmp_transport *t = NULL;
+    int             rc = 0;
+
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    if (local)
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
+    if (addr == NULL || addr->sin6_family != AF_INET6) {
+        return NULL;
+    }
+
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
+    if (t == NULL) {
+        return NULL;
+    }
+
+    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);
+    }
+
+    t->data = malloc(sizeof(netsnmp_indexed_addr_pair));
+    if (t->data == NULL) {
+        netsnmp_transport_free(t);
+        return NULL;
+    }
+    t->data_length = sizeof(netsnmp_indexed_addr_pair);
+    memcpy(t->data, addr, sizeof(struct sockaddr_in6));
+
+    t->domain = netsnmp_TCPIPv6Domain;
+    t->domain_length = sizeof(netsnmp_TCPIPv6Domain) / sizeof(oid);
+
+    t->sock = socket(PF_INET6, SOCK_STREAM, 0);
+    if (t->sock < 0) {
+        netsnmp_transport_free(t);
+        return NULL;
+    }
+
+    t->flags = NETSNMP_TRANSPORT_FLAG_STREAM;
+
+    if (local) {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
+        int opt = 1;
+
+        /*
+         * 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_tcp6", "couldn't set IPV6_V6ONLY to %d bytes: %s\n", one, strerror(errno)));
+	  } 
+	}
+#endif
+
+        t->flags |= NETSNMP_TRANSPORT_FLAG_LISTEN;
+        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;
+
+        /*
+         * We should set SO_REUSEADDR too.  
+         */
+
+        setsockopt(t->sock, SOL_SOCKET, SO_REUSEADDR, (void *)&opt, sizeof(opt));
+
+        rc = bind(t->sock, (struct sockaddr *) addr,
+		  sizeof(struct sockaddr_in6));
+        if (rc != 0) {
+            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
+         * 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.
+         */
+
+        netsnmp_set_non_blocking_mode(t->sock, TRUE);
+
+        /*
+         * Now sit here and wait for connections to arrive.  
+         */
+
+        rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
+        if (rc != 0) {
+            netsnmp_socketbase_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        
+        /*
+         * no buffer size on listen socket - doesn't make sense
+         */
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+    } else {
+        t->remote = (unsigned char*)malloc(18);
+        if (t->remote == NULL) {
+            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;
+
+        /*
+         * This is a client-type session, so attempt to connect to the far
+         * end.  We don't go non-blocking here because it's not obvious what
+         * you'd then do if you tried to do snmp_sends before the connection
+         * had completed.  So this can block.
+         */
+
+        rc = connect(t->sock, (struct sockaddr *) addr,
+                     sizeof(struct sockaddr_in6));
+
+        DEBUGMSGTL(("netsnmp_tcp6", "connect returns %d\n", rc));
+
+        if (rc < 0) {
+            netsnmp_socketbase_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+
+        /*
+         * Allow user to override the send and receive buffers. Default is
+         * to use os default.  Don't worry too much about errors --
+         * just plough on regardless.  
+         */
+        netsnmp_sock_buffer_set(t->sock, SO_SNDBUF, local, 0);
+        netsnmp_sock_buffer_set(t->sock, SO_RCVBUF, local, 0);
+    }
+
+    /*
+     * Message size is not limited by this transport (hence msgMaxSize
+     * is equal to the maximum legal size of an SNMP message).  
+     */
+
+    t->msgMaxSize = 0x7fffffff;
+    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;
+
+    return t;
+}
+
+/*
+ * Not extern but still defined in snmpUDPIPv6Domain.c
+ */
+extern int
+netsnmp_sockaddr_in6_2(struct sockaddr_in6*, const char*, const char*);
+
+netsnmp_transport *
+netsnmp_tcp6_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_tcp6_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_tcp6_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_tcp6_transport(&addr, local);
+    }
+    return NULL;
+}
+
+
+void
+netsnmp_tcpipv6_ctor(void)
+{
+    tcp6Domain.name = netsnmp_TCPIPv6Domain;
+    tcp6Domain.name_length = sizeof(netsnmp_TCPIPv6Domain) / sizeof(oid);
+    tcp6Domain.f_create_from_tstring     = NULL;
+    tcp6Domain.f_create_from_tstring_new = netsnmp_tcp6_create_tstring;
+    tcp6Domain.f_create_from_ostring     = netsnmp_tcp6_create_ostring;
+    tcp6Domain.prefix = (const char**)calloc(4, sizeof(char *));
+    tcp6Domain.prefix[0] = "tcp6";
+    tcp6Domain.prefix[1] = "tcpv6";
+    tcp6Domain.prefix[2] = "tcpipv6";
+
+    netsnmp_tdomain_register(&tcp6Domain);
+}
+
+#endif /* NETSNMP_TRANSPORT_TCPIPV6_DOMAIN */
+
diff --git a/snmplib/transports/snmpTLSBaseDomain.c b/snmplib/transports/snmpTLSBaseDomain.c
new file mode 100644
index 0000000..c54d6ad
--- /dev/null
+++ b/snmplib/transports/snmpTLSBaseDomain.c
@@ -0,0 +1,1183 @@
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/net-snmp-features.h>
+
+netsnmp_feature_require(cert_util)
+
+#include <net-snmp/library/snmpTLSBaseDomain.h>
+
+#if HAVE_DMALLOC_H
+#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/config_api.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/read_config.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 *peer_cert;
+        peer_cert =
+            netsnmp_cert_find(NS_CERT_REMOTE_PEER, NS_CERTKEY_MULTIPLE,
+                              tlsdata->their_identity);
+
+        if (peer_cert)
+            tlsdata->their_fingerprint =
+                netsnmp_openssl_cert_get_fingerprint(peer_cert->ocert, -1);
+    }
+
+    if (!tlsdata->their_fingerprint && try_default) {
+        /* try for the default instead */
+        netsnmp_cert *peer_cert;
+        peer_cert =
+            netsnmp_cert_find(NS_CERT_REMOTE_PEER, NS_CERTKEY_DEFAULT,
+                              NULL);
+
+        if (peer_cert)
+            tlsdata->their_fingerprint =
+                netsnmp_openssl_cert_get_fingerprint(peer_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, NULL);
+    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, "localCert") == 0) ||
+        (strcmp(token, "our_identity") == 0)) {
+        SNMP_FREE(tlsdata->our_identity);
+        tlsdata->our_identity = strdup(value);
+        DEBUGMSGT(("tls:config","our identity %s\n", value));
+    }
+
+    if ((strcmp(token, "peerCert") == 0) ||
+        (strcmp(token, "their_identity") == 0)) {
+        SNMP_FREE(tlsdata->their_identity);
+        tlsdata->their_identity = strdup(value);
+        DEBUGMSGT(("tls:config","their identity %s\n", value));
+    }
+
+    if ((strcmp(token, "peerHostname") == 0) ||
+        (strcmp(token, "their_hostname") == 0)) {
+        SNMP_FREE(tlsdata->their_hostname);
+        tlsdata->their_hostname = strdup(value);
+    }
+
+    if ((strcmp(token, "trust_cert") == 0) ||
+        (strcmp(token, "trustCert") == 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;
+}
+
+static void _parse_client_cert(const char *tok, char *line)
+{
+    config_pwarn("clientCert is deprecated. Clients should use localCert, servers should use peerCert");
+    if (*line == '"') {
+        char buf[SNMP_MAXBUF];
+        copy_nword(line, buf, sizeof(buf));
+        netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
+                              NETSNMP_DS_LIB_X509_CLIENT_PUB, buf);
+    } else
+        netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
+                              NETSNMP_DS_LIB_X509_CLIENT_PUB, line);
+}
+
+static void _parse_server_cert(const char *tok, char *line)
+{
+    config_pwarn("serverCert is deprecated. Clients should use peerCert, servers should use localCert.");
+    if (*line == '"') {
+        char buf[SNMP_MAXBUF];
+        copy_nword(line, buf, sizeof(buf));
+        netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
+                              NETSNMP_DS_LIB_X509_CLIENT_PUB, buf);
+    } else
+        netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
+                              NETSNMP_DS_LIB_X509_SERVER_PUB, line);
+}
+
+void
+netsnmp_tlsbase_ctor(void) {
+
+    /* 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 */
+    register_config_handler("snmp", "clientCert", _parse_client_cert, NULL,
+                            NULL);
+
+    /*
+     * for the server
+     */
+
+    /* The X509 server key to use */
+    register_config_handler("snmp", "serverCert", _parse_server_cert, NULL,
+                            NULL);
+    /*
+     * remove cert config ambiguity: localCert, peerCert
+     */
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "localCert",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_TLS_LOCAL_CERT);
+    netsnmp_ds_register_config(ASN_OCTET_STR, "snmp", "peerCert",
+                               NETSNMP_DS_LIBRARY_ID,
+                               NETSNMP_DS_LIB_TLS_PEER_CERT);
+
+    /*
+     * 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;
+}
+
+netsnmp_feature_child_of(_x509_get_error, netsnmp_unused)
+#ifndef NETSNMP_FEATURE_REMOVE__X509_GET_ERROR
+const char * _x509_get_error(int x509failvalue, const char *location) {
+    static const char *reason = NULL;
+    
+    /* 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;
+}
+#endif /* NETSNMP_FEATURE_REMOVE__X509_GET_ERROR */
+
+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..473d02c
--- /dev/null
+++ b/snmplib/transports/snmpTLSTCPDomain.c
@@ -0,0 +1,1041 @@
+/* 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/net-snmp-features.h>
+
+netsnmp_feature_require(cert_util)
+
+#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->addr)
+        newtlsdata->addr = netsnmp_memdup(oldtlsdata->addr,
+                                          sizeof(*oldtlsdata->addr));
+
+    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");
+            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);
+            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);
+            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);
+            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);
+            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);
+            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 {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
+        /* 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_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_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;
+#else /* NETSNMP_NO_LISTEN_SUPPORT */
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+    }
+    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];
+    
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    if (isserver)
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
+    /* allocate our transport structure */
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
+    if (NULL == t) {
+        return NULL;
+    }
+
+    /* 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..8497f71
--- /dev/null
+++ b/snmplib/transports/snmpUDPBaseDomain.c
@@ -0,0 +1,513 @@
+/* UDP base transport support functions
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmpUDPBaseDomain.h>
+
+#include <stddef.h>
+#include <stdio.h>
+#include <sys/types.h>
+#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_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/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
+
+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(netsnmp_sockaddr_storage);
+    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 = &addr_pair->remote_addr.sa;
+        }
+
+	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) ||
+          (*olength == sizeof(struct sockaddr_in))))) {
+        addr_pair = (netsnmp_indexed_addr_pair *) (*opaque);
+    } else if (t != NULL && t->data != NULL &&
+                t->data_length == sizeof(netsnmp_indexed_addr_pair)) {
+        addr_pair = (netsnmp_indexed_addr_pair *) (t->data);
+    }
+
+    to = &addr_pair->remote_addr.sa;
+
+    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.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..a0abd8c
--- /dev/null
+++ b/snmplib/transports/snmpUDPDomain.c
@@ -0,0 +1,517 @@
+/* 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 <net-snmp/types.h>
+#include <net-snmp/library/snmpUDPDomain.h>
+#include <net-snmp/library/snmpUDPIPv4BaseDomain.h>
+
+#include <stddef.h>
+#include <stdio.h>
+#include <sys/types.h>
+#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/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
+
+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..8c0fb05
--- /dev/null
+++ b/snmplib/transports/snmpUDPIPv4BaseDomain.c
@@ -0,0 +1,221 @@
+/* IPV4 base transport support functions
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/types.h>
+#include <net-snmp/library/snmpUDPIPv4BaseDomain.h>
+
+#include <stddef.h>
+#include <stdio.h>
+#include <sys/types.h>
+#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>
+
+#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;
+
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    if (local)
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
+    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) {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
+        /*
+         * This session is inteneded as a server, so we must bind on to the
+         * given IP address, which may include an interface address, or could
+         * be INADDR_ANY, but certainly includes a port number.
+         */
+
+        t->local = (u_char *) malloc(6);
+        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 /* NETSNMP_NO_LISTEN_SUPPORT */
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+    } 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..18de876
--- /dev/null
+++ b/snmplib/transports/snmpUDPIPv6Domain.c
@@ -0,0 +1,791 @@
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/library/snmpUDPIPv6Domain.h>
+#include <net-snmp/library/system.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 <net-snmp/library/tools.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)) ||
+                (t->data_length == sizeof(netsnmp_indexed_addr_pair)))) {
+        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;
+
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    if (local)
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
+    if (addr == NULL || addr->sin6_family != AF_INET6) {
+        return NULL;
+    }
+
+    t = SNMP_MALLOC_TYPEDEF(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);
+    }
+
+    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) {
+#ifndef NETSNMP_NO_LISTEN_SUPPORT
+        /*
+         * This session is intended as a server, so we must bind on to the
+         * given IP address, which may include an interface address, or could
+         * be INADDR_ANY, but certainly includes a port number.
+         */
+
+#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 /* NETSNMP_NO_LISTEN_SUPPORT */
+        return NULL;
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+    } else {
+        /*
+         * This is a client session.  Save the address in the
+         * transport-specific data pointer for later use by netsnmp_udp6_send.
+         */
+
+        t->data = malloc(sizeof(netsnmp_indexed_addr_pair));
+        if (t->data == NULL) {
+            netsnmp_socketbase_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        memcpy(t->data, addr, sizeof(struct sockaddr_in6));
+        t->data_length = sizeof(netsnmp_indexed_addr_pair);
+        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 = netsnmp_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/transports/snmpUnixDomain.c b/snmplib/transports/snmpUnixDomain.c
new file mode 100644
index 0000000..47dffc1
--- /dev/null
+++ b/snmplib/transports/snmpUnixDomain.c
@@ -0,0 +1,752 @@
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
+
+#include <sys/types.h>
+#include <net-snmp/library/snmpUnixDomain.h>
+
+#include <stddef.h>
+#include <stdio.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_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/snmpSocketBaseDomain.h>
+#include <net-snmp/library/system.h> /* mkdirhier */
+#include <net-snmp/library/tools.h>
+
+netsnmp_feature_child_of(transport_unix_socket_all, transport_all)
+netsnmp_feature_child_of(unix_socket_paths, transport_unix_socket_all)
+
+#ifndef NETSNMP_STREAM_QUEUE_LEN
+#define NETSNMP_STREAM_QUEUE_LEN  5
+#endif
+
+#ifndef SUN_LEN
+/*
+ * Evaluate to actual length of the `sockaddr_un' structure.
+ */
+#define SUN_LEN(ptr) ((size_t) (((struct sockaddr_un *) 0)->sun_path)         \
+                      + strlen ((ptr)->sun_path))
+#endif
+
+oid netsnmp_UnixDomain[] = { TRANSPORT_DOMAIN_LOCAL };
+static netsnmp_tdomain unixDomain;
+
+
+/*
+ * This is the structure we use to hold transport-specific data.
+ */
+
+typedef struct _sockaddr_un_pair {
+    int             local;
+    struct sockaddr_un server;
+    struct sockaddr_un client;
+} sockaddr_un_pair;
+
+
+/*
+ * Return a string representing the address in data, or else the "far end"
+ * address if data is NULL.
+ */
+
+static char *
+netsnmp_unix_fmtaddr(netsnmp_transport *t, void *data, int len)
+{
+    struct sockaddr_un *to = NULL;
+
+    if (data != NULL) {
+        to = (struct sockaddr_un *) data;
+    } else if (t != NULL && t->data != NULL) {
+        to = &(((sockaddr_un_pair *) t->data)->server);
+        len = SUN_LEN(to);
+    }
+    if (to == NULL) {
+        /*
+         * "Local IPC" is the Posix.1g term for Unix domain protocols,
+         * according to W. R. Stevens, ``Unix Network Programming Volume I
+         * Second Edition'', p. 374.
+         */
+        return strdup("Local IPC: unknown");
+    } else if (to->sun_path[0] == 0) {
+        /*
+         * This is an abstract name.  We could render it as hex or something
+         * but let's not worry about that for now.
+         */
+        return strdup("Local IPC: abstract");
+    } else {
+        char           *tmp = (char *) malloc(16 + len);
+        if (tmp != NULL) {
+            sprintf(tmp, "Local IPC: %s", to->sun_path);
+        }
+        return 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_unix_recv(netsnmp_transport *t, void *buf, int size,
+                  void **opaque, int *olength)
+{
+    int rc = -1;
+    socklen_t       tolen = sizeof(struct sockaddr_un);
+    struct sockaddr *to;
+
+
+    if (t != NULL && t->sock >= 0) {
+        to = (struct sockaddr *) malloc(sizeof(struct sockaddr_un));
+        if (to == NULL) {
+            *opaque = NULL;
+            *olength = 0;
+            return -1;
+        } else {
+            memset(to, 0, tolen);
+        }
+        if(getsockname(t->sock, to, &tolen) != 0){
+            free(to);
+            *opaque = NULL;
+            *olength = 0;
+            return -1;
+        };
+        while (rc < 0) {
+#ifdef MSG_DONTWAIT
+            rc = recvfrom(t->sock, buf, size, MSG_DONTWAIT, NULL, NULL);
+#else
+            rc = recvfrom(t->sock, buf, size, 0, NULL, NULL);
+#endif
+            if (rc < 0 && errno != EINTR) {
+                DEBUGMSGTL(("netsnmp_unix", "recv fd %d err %d (\"%s\")\n",
+                            t->sock, errno, strerror(errno)));
+                return rc;
+            }
+            *opaque = (void*)to;
+            *olength = sizeof(struct sockaddr_un);
+        }
+        DEBUGMSGTL(("netsnmp_unix", "recv fd %d got %d bytes\n", t->sock, rc));
+    }
+    return rc;
+}
+
+
+
+static int
+netsnmp_unix_send(netsnmp_transport *t, void *buf, int size,
+                  void **opaque, int *olength)
+{
+    int rc = -1;
+
+    if (t != NULL && t->sock >= 0) {
+        DEBUGMSGTL(("netsnmp_unix", "send %d bytes to %p on fd %d\n",
+                    size, buf, t->sock));
+        while (rc < 0) {
+            rc = sendto(t->sock, buf, size, 0, NULL, 0);
+            if (rc < 0 && errno != EINTR) {
+                break;
+            }
+        }
+    }
+    return rc;
+}
+
+
+
+static int
+netsnmp_unix_close(netsnmp_transport *t)
+{
+    int rc = 0;
+    sockaddr_un_pair *sup = (sockaddr_un_pair *) t->data;
+
+    if (t->sock >= 0) {
+#ifndef HAVE_CLOSESOCKET
+        rc = close(t->sock);
+#else
+        rc = closesocket(t->sock);
+#endif
+        t->sock = -1;
+        if (sup != NULL) {
+            if (sup->local) {
+                if (sup->server.sun_path[0] != 0) {
+                  DEBUGMSGTL(("netsnmp_unix", "close: server unlink(\"%s\")\n",
+                              sup->server.sun_path));
+                  unlink(sup->server.sun_path);
+                }
+            } else {
+                if (sup->client.sun_path[0] != 0) {
+                  DEBUGMSGTL(("netsnmp_unix", "close: client unlink(\"%s\")\n",
+                              sup->client.sun_path));
+                  unlink(sup->client.sun_path);
+                }
+            }
+        }
+        return rc;
+    } else {
+        return -1;
+    }
+}
+
+
+
+static int
+netsnmp_unix_accept(netsnmp_transport *t)
+{
+    struct sockaddr *farend = NULL;
+    int             newsock = -1;
+    socklen_t       farendlen = sizeof(struct sockaddr_un);
+
+    farend = (struct sockaddr *) malloc(farendlen);
+
+    if (farend == NULL) {
+        /*
+         * Indicate that the acceptance of this socket failed.
+         */
+        DEBUGMSGTL(("netsnmp_unix", "accept: malloc failed\n"));
+        return -1;
+    }
+    memset(farend, 0, farendlen);
+
+    if (t != NULL && t->sock >= 0) {
+        newsock = accept(t->sock, farend, &farendlen);
+
+        if (newsock < 0) {
+            DEBUGMSGTL(("netsnmp_unix","accept failed rc %d errno %d \"%s\"\n",
+                        newsock, errno, strerror(errno)));
+            free(farend);
+            return newsock;
+        }
+
+        if (t->data != NULL) {
+            free(t->data);
+        }
+
+        DEBUGMSGTL(("netsnmp_unix", "accept succeeded (farend %p len %d)\n",
+                    farend, (int) farendlen));
+        t->data = farend;
+        t->data_length = sizeof(struct sockaddr_un);
+       netsnmp_sock_buffer_set(newsock, SO_SNDBUF, 1, 0);
+       netsnmp_sock_buffer_set(newsock, SO_RCVBUF, 1, 0);
+        return newsock;
+    } else {
+        free(farend);
+        return -1;
+    }
+}
+
+static int create_path = 0;
+static mode_t create_mode;
+
+#ifndef NETSNMP_FEATURE_REMOVE_UNIX_SOCKET_PATHS
+/** If trying to create unix sockets in nonexisting directories then
+ *  try to create the directory with mask mode.
+ */
+void netsnmp_unix_create_path_with_mode(int mode)
+{
+    create_path = 1;
+    create_mode = mode;
+}
+
+/** If trying to create unix sockets in nonexisting directories then
+ *  fail.
+ */
+void netsnmp_unix_dont_create_path(void)
+{
+    create_path = 0;
+}
+#endif /* NETSNMP_FEATURE_REMOVE_UNIX_SOCKET_PATHS */
+
+/*
+ * Open a Unix-domain transport for SNMP.  Local is TRUE if addr is the local
+ * address to bind to (i.e. this is a server-type session); otherwise addr is
+ * the remote address to send things to (and we make up a temporary name for
+ * the local end of the connection).
+ */
+
+netsnmp_transport *
+netsnmp_unix_transport(struct sockaddr_un *addr, int local)
+{
+    netsnmp_transport *t = NULL;
+    sockaddr_un_pair *sup = NULL;
+    int             rc = 0;
+
+#ifdef NETSNMP_NO_LISTEN_SUPPORT
+    /* SPECIAL CIRCUMSTANCE: We still want AgentX to be able to operate,
+       so we allow for unix domain socktes to still listen when everything
+       else isn't allowed to.  Thus, we ignore this define in this file.
+    */
+#endif /* NETSNMP_NO_LISTEN_SUPPORT */
+
+    if (addr == NULL || addr->sun_family != AF_UNIX) {
+        return NULL;
+    }
+
+    t = SNMP_MALLOC_TYPEDEF(netsnmp_transport);
+    if (t == NULL) {
+        return NULL;
+    }
+
+    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);
+    }
+
+    t->domain = netsnmp_UnixDomain;
+    t->domain_length =
+        sizeof(netsnmp_UnixDomain) / sizeof(netsnmp_UnixDomain[0]);
+
+    t->data = malloc(sizeof(sockaddr_un_pair));
+    if (t->data == NULL) {
+        netsnmp_transport_free(t);
+        return NULL;
+    }
+    memset(t->data, 0, sizeof(sockaddr_un_pair));
+    t->data_length = sizeof(sockaddr_un_pair);
+    sup = (sockaddr_un_pair *) t->data;
+
+    t->sock = socket(PF_UNIX, SOCK_STREAM, 0);
+    if (t->sock < 0) {
+        netsnmp_transport_free(t);
+        return NULL;
+    }
+
+    t->flags = NETSNMP_TRANSPORT_FLAG_STREAM;
+
+    if (local) {
+        t->local = (u_char *)malloc(strlen(addr->sun_path));
+        if (t->local == NULL) {
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        memcpy(t->local, addr->sun_path, strlen(addr->sun_path));
+        t->local_length = strlen(addr->sun_path);
+
+        /*
+         * This session is inteneded as a server, so we must bind to the given
+         * path (unlinking it first, to avoid errors).
+         */
+
+        t->flags |= NETSNMP_TRANSPORT_FLAG_LISTEN;
+
+        unlink(addr->sun_path);
+        rc = bind(t->sock, (struct sockaddr *) addr, SUN_LEN(addr));
+
+        if (rc != 0 && errno == ENOENT && create_path) {
+            rc = mkdirhier(addr->sun_path, create_mode, 1);
+            if (rc != 0) {
+                netsnmp_unix_close(t);
+                netsnmp_transport_free(t);
+                return NULL;
+            }
+            rc = bind(t->sock, (struct sockaddr *) addr, SUN_LEN(addr));
+        }
+        if (rc != 0) {
+            DEBUGMSGTL(("netsnmp_unix_transport",
+                        "couldn't bind \"%s\", errno %d (%s)\n",
+                        addr->sun_path, errno, strerror(errno)));
+            netsnmp_unix_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+
+        /*
+         * Save the address in the transport-specific data pointer for later
+         * use by netsnmp_unix_close.
+         */
+
+        sup->server.sun_family = AF_UNIX;
+        strcpy(sup->server.sun_path, addr->sun_path);
+        sup->local = 1;
+
+        /*
+         * Now sit here and listen for connections to arrive.
+         */
+
+        rc = listen(t->sock, NETSNMP_STREAM_QUEUE_LEN);
+        if (rc != 0) {
+            DEBUGMSGTL(("netsnmp_unix_transport",
+                        "couldn't listen to \"%s\", errno %d (%s)\n",
+                        addr->sun_path, errno, strerror(errno)));
+            netsnmp_unix_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+
+    } else {
+        t->remote = (u_char *)malloc(strlen(addr->sun_path));
+        if (t->remote == NULL) {
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+        memcpy(t->remote, addr->sun_path, strlen(addr->sun_path));
+        t->remote_length = strlen(addr->sun_path);
+
+        rc = connect(t->sock, (struct sockaddr *) addr,
+                     sizeof(struct sockaddr_un));
+        if (rc != 0) {
+            DEBUGMSGTL(("netsnmp_unix_transport",
+                        "couldn't connect to \"%s\", errno %d (%s)\n",
+                        addr->sun_path, errno, strerror(errno)));
+            netsnmp_unix_close(t);
+            netsnmp_transport_free(t);
+            return NULL;
+        }
+
+        /*
+         * Save the remote address in the transport-specific data pointer for
+         * later use by netsnmp_unix_send.
+         */
+
+        sup->server.sun_family = AF_UNIX;
+        strcpy(sup->server.sun_path, addr->sun_path);
+        sup->local = 0;
+        netsnmp_sock_buffer_set(t->sock, SO_SNDBUF, local, 0);
+        netsnmp_sock_buffer_set(t->sock, SO_RCVBUF, local, 0);
+    }
+
+    /*
+     * Message size is not limited by this transport (hence msgMaxSize
+     * is equal to the maximum legal size of an SNMP message).
+     */
+
+    t->msgMaxSize = 0x7fffffff;
+    t->f_recv     = netsnmp_unix_recv;
+    t->f_send     = netsnmp_unix_send;
+    t->f_close    = netsnmp_unix_close;
+    t->f_accept   = netsnmp_unix_accept;
+    t->f_fmtaddr  = netsnmp_unix_fmtaddr;
+
+    return t;
+}
+
+netsnmp_transport *
+netsnmp_unix_create_tstring(const char *string, int local,
+			    const char *default_target)
+{
+    struct sockaddr_un addr;
+
+    if (string && *string != '\0') {
+    } else if (default_target && *default_target != '\0') {
+      string = default_target;
+    }
+
+    if ((string != NULL && *string != '\0') &&
+	(strlen(string) < sizeof(addr.sun_path))) {
+        addr.sun_family = AF_UNIX;
+        memset(addr.sun_path, 0, sizeof(addr.sun_path));
+        strlcpy(addr.sun_path, string, sizeof(addr.sun_path));
+        return netsnmp_unix_transport(&addr, local);
+    } else {
+        if (string != NULL && *string != '\0') {
+            snmp_log(LOG_ERR, "Path too long for Unix domain transport\n");
+        }
+        return NULL;
+    }
+}
+
+
+
+netsnmp_transport *
+netsnmp_unix_create_ostring(const u_char * o, size_t o_len, int local)
+{
+    struct sockaddr_un addr;
+
+    if (o_len > 0 && o_len < (sizeof(addr.sun_path) - 1)) {
+        addr.sun_family = AF_UNIX;
+        memset(addr.sun_path, 0, sizeof(addr.sun_path));
+        strlcpy(addr.sun_path, (const char *)o, sizeof(addr.sun_path));
+        return netsnmp_unix_transport(&addr, local);
+    } else {
+        if (o_len > 0) {
+            snmp_log(LOG_ERR, "Path too long for Unix domain transport\n");
+        }
+    }
+    return NULL;
+}
+
+
+
+void
+netsnmp_unix_ctor(void)
+{
+    unixDomain.name = netsnmp_UnixDomain;
+    unixDomain.name_length = sizeof(netsnmp_UnixDomain) / sizeof(oid);
+    unixDomain.prefix = (const char**)calloc(2, sizeof(char *));
+    unixDomain.prefix[0] = "unix";
+
+    unixDomain.f_create_from_tstring     = NULL;
+    unixDomain.f_create_from_tstring_new = netsnmp_unix_create_tstring;
+    unixDomain.f_create_from_ostring     = netsnmp_unix_create_ostring;
+
+    netsnmp_tdomain_register(&unixDomain);
+}
+
+#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
+/* support for SNMPv1 and SNMPv2c on unix domain*/
+
+#define EXAMPLE_COMMUNITY "COMMUNITY"
+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;
+
+static com2SecUnixEntry   *com2SecUnixList = NULL, *com2SecUnixListLast = NULL;
+
+
+int
+netsnmp_unix_getSecName(void *opaque, int olength,
+                        const char *community,
+                        size_t community_len,
+                        const char **secName, const char **contextName)
+{
+    const com2SecUnixEntry   *c;
+    struct sockaddr_un *to = (struct sockaddr_un *) opaque;
+    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 (com2SecUnixList == NULL) {
+        DEBUGMSGTL(("netsnmp_unix_getSecName", "no com2sec entries\n"));
+        return 0;
+    }
+
+    /*
+     * If there is no unix socket path, then there can be no valid security
+     * name.
+     */
+
+    if (opaque == NULL || olength != sizeof(struct sockaddr_un) ||
+        to->sun_family != AF_UNIX) {
+        DEBUGMSGTL(("netsnmp_unix_getSecName",
+                    "no unix destine address in PDU?\n"));
+        return 1;
+    }
+
+    DEBUGIF("netsnmp_unix_getSecName") {
+        ztcommunity = (char *)malloc(community_len + 1);
+        if (ztcommunity != NULL) {
+            memcpy(ztcommunity, community, community_len);
+            ztcommunity[community_len] = '\0';
+        }
+
+        DEBUGMSGTL(("netsnmp_unix_getSecName", "resolve <\"%s\">\n",
+                    ztcommunity ? ztcommunity : "<malloc error>"));
+    }
+
+    for (c = com2SecUnixList; c != NULL; c = c->next) {
+        DEBUGMSGTL(("netsnmp_unix_getSecName","compare <\"%s\",to socket %s>",
+                    c->community, c->sockpath ));
+        if ((community_len == strlen(c->community)) &&
+            (memcmp(community, c->community, community_len) == 0) &&
+            /* compare sockpath, if pathlen == 0, always match */
+            (strlen(to->sun_path) == c->pathlen || c->pathlen == 0) &&
+            (memcmp(to->sun_path, c->sockpath, c->pathlen) == 0)
+            ) {
+            DEBUGMSG(("netsnmp_unix_getSecName", "... SUCCESS\n"));
+            if (secName != NULL) {
+                *secName = c->secName;
+                *contextName = c->contextName;
+            }
+            break;
+        }
+        DEBUGMSG(("netsnmp_unix_getSecName", "... nope\n"));
+    }
+    if (ztcommunity != NULL) {
+        free(ztcommunity);
+    }
+    return 1;
+}
+
+void
+netsnmp_unix_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   sockpath[sizeof(((struct sockaddr_un*)0)->sun_path) + 1];
+    size_t sockpathLen;
+
+    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 SOCKPATH parameter");
+        return;
+    }
+    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 (!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 */
+    if(strcmp(sockpath, "default") == 0) {
+        sockpathLen = 0;
+    }
+
+    {
+        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;
+        }
+
+        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;
+        }
+    }
+}
+
+void
+netsnmp_unix_com2SecList_free(void)
+{
+    com2SecUnixEntry   *e = com2SecUnixList;
+    while (e != NULL) {
+        com2SecUnixEntry   *tmp = e;
+        e = e->next;
+        free(tmp);
+    }
+    com2SecUnixList = com2SecUnixListLast = NULL;
+}
+#endif /* support for community based SNMP */
+
+void
+netsnmp_unix_agent_config_tokens_register(void)
+{
+#if !defined(NETSNMP_DISABLE_SNMPV1) || !defined(NETSNMP_DISABLE_SNMPV2C)
+    register_app_config_handler("com2secunix", netsnmp_unix_parse_security,
+                                netsnmp_unix_com2SecList_free,
+                                "[-Cn CONTEXT] secName sockpath community");
+#endif /* support for community based SNMP */
+}
diff --git a/snmplib/ucd_compat.c b/snmplib/ucd_compat.c
index 4f4234a..64c1e13 100644
--- a/snmplib/ucd_compat.c
+++ b/snmplib/ucd_compat.c
@@ -4,12 +4,17 @@
  */
 
 #include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-features.h>
 
 #include <net-snmp/types.h>
 #include <net-snmp/session_api.h>
 #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>
 
+netsnmp_feature_child_of(ucd_compatibility, libnetsnmp)
+
+#ifndef NETSNMP_FEATURE_REMOVE_UCD_COMPATIBILITY
 /*
  * use <netsnmp_session *)->s_snmp_errno instead 
  */
@@ -22,10 +27,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)
 {
@@ -218,3 +225,6 @@
 {
   netsnmp_ds_shutdown();
 }
+#else /* !NETSNMP_FEATURE_REMOVE_UCD_COMPATIBILITY */
+netsnmp_feature_unused(ucd_compatibility);
+#endif /* !NETSNMP_FEATURE_REMOVE_UCD_COMPATIBILITY */
diff --git a/snmplib/vacm.c b/snmplib/vacm.c
index 3551c7f..c639785 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] !=
@@ -848,6 +842,7 @@
     return gp;
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 void
 vacm_destroyGroupEntry(int securityModel, const char *securityName)
 {
@@ -873,6 +868,7 @@
     free(vp);
     return;
 }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 void
 vacm_destroyAllGroupEntries(void)
@@ -1044,6 +1040,7 @@
     return vp;
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 void
 vacm_destroyAccessEntry(const char *groupName,
                         const char *contextPrefix,
@@ -1075,6 +1072,7 @@
     free(vp);
     return;
 }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 void
 vacm_destroyAllAccessEntries(void)
@@ -1148,12 +1146,14 @@
                                 viewSubtreeLen);
 }
 
+#ifndef NETSNMP_NO_WRITE_SUPPORT
 void
 vacm_destroyViewEntry(const char *viewName,
                       oid * viewSubtree, size_t viewSubtreeLen)
 {
     netsnmp_view_destroy( &viewList, viewName, viewSubtree, viewSubtreeLen);
 }
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
 
 void
 vacm_destroyAllViewEntries(void)
diff --git a/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 c323cf0..bc27f8c 100644
--- a/snmplib/winservice.c
+++ b/snmplib/winservice.c
@@ -6,6 +6,8 @@
 
 #ifdef WIN32
 
+#include <net-snmp/net-snmp-config.h>
+
 #include <windows.h>
 #include <tchar.h>
 
@@ -35,6 +37,17 @@
 #define CountOf(arr) ( sizeof(arr) / sizeof(arr[0]) )
 
 
+#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")
+#endif
+#endif
+
+ 
     /*
      * External global variables used here
      */
@@ -90,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);
 
@@ -549,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..4933307 100755
--- a/testing/RUNTESTS
+++ b/testing/RUNTESTS
@@ -1,399 +1,49 @@
 #!/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
-    echo "Could not find pskill.exe. Aborting tests."
-    echo "pskill.exe can be installed as follows:"
-    echo "- Download pskill.exe from http://technet.microsoft.com/en-us/sysinternals/default.aspx."
-    echo "- Copy pskill.exe to C:\\MinGW\\msys\\1.0\\bin."
-    exit 1
-fi 
-
-# 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
+if [ "x$OSTYPE" = "xmsys" ]; then
+    for e in pskill.exe pslist.exe; do
+	if [ "x`type $e 2>/dev/null`" = "x" ]; then
+	    echo "Could not find $e. Aborting tests."
+	    echo "$e can be installed as follows:"
+	    echo "- Download PSTools.zip from http://technet.microsoft.com/en-us/sysinternals/default."
+	    echo "- Copy $e to C:\\MinGW\\msys\\1.0\\bin."
+	    exit 1
+	fi
+    done
 fi
-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/TESTCONF.sh b/testing/TESTCONF.sh
deleted file mode 100644
index d58effd..0000000
--- a/testing/TESTCONF.sh
+++ /dev/null
@@ -1,183 +0,0 @@
-#! /bin/sh -f
-
-#
-# Variables:  (* = exported)
-#  *SNMP_TMPDIR:  	  place to put files used in testing.
-#   SNMP_TESTDIR: 	  where the test scripts are kept.
-#  *SNMP_PERSISTENT_FILE: where to store the agent's persistent information
-#                         (XXX: this should be specific to just the agent)
-
-#
-# Only allow ourselves to be eval'ed once
-#
-if [ "x$TESTCONF_SH_EVALED" != "xyes" ]; then
-    TESTCONF_SH_EVALED=yes
-
-#
-# set cpu and memory limits to prevent major damage
-#
-# defaults: 1h CPU, 500MB VMEM
-#
-[ "x$SNMP_LIMIT_VMEM" = "x" ] && SNMP_LIMIT_VMEM=512000
-[ "x$SNMP_LIMIT_CPU" = "x" ] && SNMP_LIMIT_CPU=3600
-# ulimit will fail if existing limit is lower -- ignore because it's ok
-ulimit -S -t $SNMP_LIMIT_CPU 2>/dev/null
-# not all sh-alikes support "ulimit -v" -- play safe
-[ "x$BASH_VERSION" != "x" ] && ulimit -S -v $SNMP_LIMIT_VMEM 2>/dev/null
-
-#
-# Set up an NL suppressing echo command
-#
-case "`echo 'x\c'`" in
-  'x\c')
-    ECHO() { echo -n $*; }
-    ;;
-  x)
-    ECHO() { echo $*\\c; }
-    ;;
-  *)
-    echo "I don't understand your echo command ..."
-    exit 1
-    ;;
-esac
-#
-# how verbose should we be (0 or 1)
-#
-if [ "x$SNMP_VERBOSE" = "x" ]; then
-    SNMP_VERBOSE=0
-    export SNMP_VERBOSE
-fi
-
-if [ "x$MIBDIRS" = "x" ]; then
-  if [ "x$SNMP_PREFER_NEAR_MIBS" = "x1" ]; then
-    MIBDIRS=${SNMP_BASEDIR}/../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
-    export PATH
-    SNMP_PATH=yes
-    export SNMP_PATH
-fi
-    
-
-# Set up temporary directory
-if [ "x$SNMP_TMPDIR" = "x" -a "x$SNMP_HEADERONLY" != "xyes" ]; then
-    if [ "x$testnum" = "x" ] ; then
-        testnum=1
-    fi
-    SNMP_TMPDIR="/tmp/snmp-test-$testnum-$$"
-    export SNMP_TMPDIR
-    if [ -d $SNMP_TMPDIR ]; then
-	echo "$0: ERROR: $SNMP_TMPDIR already existed."
-	exit 1;
-    fi
-    SNMP_TMP_PERSISTENTDIR=$SNMP_TMPDIR/persist
-    export SNMP_TMP_PERSISTENTDIR
-    mkdir $SNMP_TMPDIR
-    mkdir $SNMP_TMP_PERSISTENTDIR
-    chmod 0700 $SNMP_TMPDIR $SNMP_TMP_PERSISTENTDIR
-fi
-
-if [ "x$SNMP_SAVE_TMPDIR" = "x" ]; then
-    SNMP_SAVE_TMPDIR="no"
-    export SNMP_SAVE_TMPDIR
-fi
-
-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_TESTDIR="$SNMP_BASEDIR/tests"
-SNMP_CONFIG_FILE="$SNMP_TMPDIR/snmpd.conf"
-SNMPTRAPD_CONFIG_FILE="$SNMP_TMPDIR/snmptrapd.conf"
-AGENTX_CONFIG_FILE="$SNMP_TMPDIR/agentx.conf"
-SNMP_SNMPTRAPD_LOG_FILE="$SNMP_TMPDIR/snmptrapd.log"
-SNMP_SNMPTRAPD_PID_FILE="$SNMP_TMPDIR/snmptrapd.pid"
-SNMP_SNMPD_PID_FILE="$SNMP_TMPDIR/snmpd.pid"
-SNMP_SNMPD_LOG_FILE="$SNMP_TMPDIR/snmpd.log"
-SNMP_AGENTX_PID_FILE="$SNMP_TMPDIR/agentx.pid"
-SNMP_AGENTX_LOG_FILE="$SNMP_TMPDIR/agentx.log"
-SNMPCONFPATH="${SNMP_TMPDIR}${SNMP_ENV_SEPARATOR}${SNMP_TMP_PERSISTENTDIR}"
-export SNMPCONFPATH
-SNMP_PERSISTENT_DIR=$SNMP_TMP_PERSISTENTDIR
-export SNMP_PERSISTENT_DIR
-#SNMP_PERSISTENT_FILE="$SNMP_TMP_PERSISTENTDIR/persistent-store.conf"
-#export SNMP_PERSISTENT_FILE
-
-## Setup default flags and ports iff not done
-if [ "x$SNMP_FLAGS" = "x" ]; then
-    SNMP_FLAGS="-d"
-fi
-if test -x /bin/netstat ; then
-    NETSTAT=/bin/netstat
-elif test -x /usr/bin/netstat ; then
-    NETSTAT=/usr/bin/netstat
-elif test -x /usr/sbin/netstat ; then
-    # e.g. Tru64 Unix
-    NETSTAT=/usr/sbin/netstat
-elif test -x /usr/etc/netstat ; then
-    # e.g. IRIX
-    NETSTAT=/usr/etc/netstat
-elif test -x /cygdrive/c/windows/system32/netstat ; then
-    # Cygwin
-    NETSTAT=/cygdrive/c/windows/system32/netstat
-elif test -x /c/Windows/System32/netstat ; then
-    # MinGW + MSYS
-    NETSTAT=/c/Windows/System32/netstat
-else
-    NETSTAT=""
-fi
-
-PROBE_FOR_PORT() {
-    BASE_PORT=$1
-    MAX_RETRIES=10
-    if test -x "$NETSTAT" ; then
-        if test -z "$RANDOM"; then
-            RANDOM=2
-        fi
-        while :
-        do
-            BASE_PORT=`expr $BASE_PORT + \( $RANDOM % 100 \)`
-            IN_USE=`$NETSTAT -a -n 2>/dev/null | grep "[\.:]$BASE_PORT "`
-            if [ $? -ne 0 ]; then
-                echo "$BASE_PORT"
-                break
-            fi
-            MAX_RETRIES=`expr $MAX_RETRIES - 1`
-            if [ $MAX_RETRIES -eq 0 ]; then
-                echo "ERROR: Could not find available port." >&2
-                echo "NOPORT"
-                exit 255
-            fi
-        done
-    fi
-}
-
-if [ "x$SNMP_SNMPD_PORT" = "x" ]; then
-    SNMP_SNMPD_PORT=`PROBE_FOR_PORT 8765`
-fi
-if [ "x$SNMP_SNMPTRAPD_PORT" = "x" ]; then
-    SNMP_SNMPTRAPD_PORT=`PROBE_FOR_PORT 5678`
-fi
-if [ "x$SNMP_AGENTX_PORT" = "x" ]; then
-    SNMP_AGENTX_PORT=`PROBE_FOR_PORT 7676`
-fi
-if [ "x$SNMP_TRANSPORT_SPEC" = "x" ];then
-	SNMP_TRANSPORT_SPEC="udp"
-fi
-if [ "x$SNMP_TEST_DEST" = "x" -a $SNMP_TRANSPORT_SPEC != "unix" ];then
-	SNMP_TEST_DEST="localhost:"
-fi
-export SNMP_FLAGS SNMP_SNMPD_PORT SNMP_SNMPTRAPD_PORT
-
-# Make sure the agent doesn't parse any config file but what we give it.  
-# this is mainly to protect against a broken agent that doesn't
-# properly handle combinations of -c and -C.  (since I've broke it before).
-#SNMPCONFPATH="$SNMP_TMPDIR/does-not-exist"
-#export SNMPCONFPATH
-
-fi # Only allow ourselves to be eval'ed once
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/etimetest.c b/testing/etimetest.c
deleted file mode 100644
index 5e7d3d5..0000000
--- a/testing/etimetest.c
+++ /dev/null
@@ -1,423 +0,0 @@
-/*
- * etimetest.c
- *
- * Expected SUCCESSes for all tests:    3
- *
- * Returns:
- *      Number of FAILUREs.
- *
- * Test of hash_engineID().                             SUCCESSes:  0
- * Test of LCD Engine ID and Time List.                 SUCCESSes:  3
- *
- * FIX  Devise a test for {set,get}_enginetime(..., FALSE).
- */
-
-static char    *rcsid = "$Id$";    /* */
-
-
-#include <net-snmp/net-snmp-config.h>
-
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_STDLIB_H
-#include <stdlib.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"
-
-static u_int    dummy_etime, dummy_eboot;       /* For ISENGINEKNOWN(). */
-
-
-#include <stdlib.h>
-
-extern char    *optarg;
-extern int      optind, optopt, opterr;
-
-
-
-/*
- * Globals, &c...
- */
-char           *local_progname;
-
-#define USAGE	"Usage: %s [-h][-s <seconds>][-aeH]"
-#define OPTIONLIST	"aehHs:"
-
-int             doalltests = 0, dohashindex = 0, doetimetest = 0;
-
-#define	ALLOPTIONS	(doalltests + dohashindex + doetimetest)
-
-
-
-#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;				\
-	}						\
-}
-
-
-
-/*
- * Global variables.
- */
-int             sleeptime = 7;
-
-#define BLAT "alk;djf;an riu;alicenmrul;aiknglksajhe1 adcfalcenrco2"
-
-
-
-
-/*
- * Prototypes.
- */
-void            usage(FILE * ofp);
-
-int             test_etime(void);
-int             test_hashindex(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 'a':
-            doalltests = 1;
-            break;
-        case 'e':
-            doetimetest = 1;
-            break;
-        case 'H':
-            dohashindex = 1;
-            break;
-        case 's':
-            sleeptime = atoi(optarg);
-            if (sleeptime < 0) {
-                usage(stderr);
-                exit(1000);
-            }
-            break;
-            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.
-     */
-    rval = sc_init();
-    FAILED(rval, "sc_init()");
-
-
-    if (dohashindex || doalltests) {
-        failcount += test_hashindex();
-    }
-    if (doetimetest || doalltests) {
-        failcount += test_etime();
-    }
-
-
-    /*
-     * Cleanup.
-     */
-    rval = sc_shutdown(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_SHUTDOWN,
-                       NULL, NULL);
-    FAILED(rval, "sc_shutdown()");
-
-    return failcount;
-
-}                               /* end main() */
-
-
-
-
-
-void
-usage(FILE * ofp)
-{
-    fprintf(ofp,
-            USAGE
-            "" NL
-            "    -a			All tests." NL
-            "    -e			Exercise the list of enginetimes."
-            NL
-            "    -h			Help."
-            NL
-            "    -H			Test hash_engineID()."
-            NL
-            "    -s <seconds>	Seconds to pause.  (Default: 0.)"
-            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;
-
-  test_dosomething_quit:
-    return failcount;
-
-}                               /* end test_dosomething() */
-#endif                          /* EXAMPLE */
-
-
-
-
-
-/*******************************************************************-o-******
- * test_hashindex
- *
- * Returns:
- *	Number of failures.
- *
- *
- * Test hash_engineID().
- */
-int
-test_hashindex(void)
-{
-    int                         /* rval = SNMPERR_SUCCESS,  */
-                    failcount = 0;
-    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 = "BB";
-    fprintf(stdout, "%s = %d\n", s, hash_engineID(s, strlen(s)));
-
-    s = "CCC";
-    fprintf(stdout, "%s = %d\n", s, hash_engineID(s, strlen(s)));
-
-    s = "DDDD";
-    fprintf(stdout, "%s = %d\n", s, hash_engineID(s, strlen(s)));
-
-    s = "EEEEE";
-    fprintf(stdout, "%s = %d\n", s, hash_engineID(s, strlen(s)));
-
-    s = BLAT;
-    fprintf(stdout, "%s = %d\n", s, hash_engineID(s, strlen(s)));
-
-
-    OUTPUT("Visual spot check -- DONE.");
-
-    return failcount;
-
-}                               /* end test_hashindex() */
-
-
-
-
-
-/*******************************************************************-o-******
- * test_etime
- *
- * Returns:
- *	Number of failures.
- *
- * Test of LCD Engine ID and Time List.	
- */
-int
-test_etime(void)
-{
-    int             rval = SNMPERR_SUCCESS, failcount = 0;
-    u_int           etime, eboot;
-
-    /*
-     * ------------------------------------ -o-
-     */
-    OUTPUT("Query of empty list, two set actions.");
-
-
-    rval = ISENGINEKNOWN("A", 1);
-    if (rval == TRUE) {
-        FAILED(SNMPERR_GENERR, "Query of empty list returned TRUE.")
-    }
-
-
-    rval = set_enginetime("BB", 2, 2, 20, TRUE);
-    FAILED(rval, "set_enginetime()");
-
-
-    rval = set_enginetime("CCC", 3, 31, 90127, TRUE);
-    FAILED(rval, "set_enginetime()");
-
-
-    SUCCESS("Check of empty list, and two additions.");
-
-
-
-    /*
-     * ------------------------------------ -o-
-     */
-    OUTPUT("Add entries using macros, test for existence with macros.");
-
-
-    rval = ENSURE_ENGINE_RECORD("DDDD", 4);
-    FAILED(rval, "ENSURE_ENGINE_RECORD()");
-
-
-    rval = MAKENEW_ENGINE_RECORD("EEEEE", 5);
-    if (rval == SNMPERR_SUCCESS) {
-        FAILED(rval,
-               "MAKENEW_ENGINE_RECORD returned success for "
-               "missing record.");
-    }
-
-
-    rval = MAKENEW_ENGINE_RECORD("BB", 2);
-    FAILED(rval, "MAKENEW_ENGINE_RECORD().");
-
-
-    SUCCESS
-        ("Added entries with macros, tested for existence with macros.");
-
-
-
-    /*
-     * ------------------------------------ -o-
-     */
-    OUTPUT("Dump the list and then sleep.");
-
-#ifdef NETSNMP_ENABLE_TESTING_CODE
-    dump_etimelist();
-#endif
-
-    fprintf(stdout, "\nSleeping for %d second%s... ",
-            sleeptime, (sleeptime == 1) ? "" : "s");
-    fflush(stdout);
-
-    sleep(sleeptime);
-    fprintf(stdout, "\n");
-
-
-
-    /*
-     * ------------------------------------ -o-
-     */
-    OUTPUT
-        ("Retrieve data from real/stubbed records, update real/stubbed.");
-
-
-
-    rval = get_enginetime("BB", 2, &eboot, &etime, TRUE);
-    FAILED(rval, "get_enginetime().");
-
-    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);
-    FAILED(rval, "get_enginetime().");
-
-    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);
-    FAILED(rval, "set_enginetime().");
-
-
-    rval = set_enginetime("EEEEE", 5, 9876, 55555, TRUE);
-    FAILED(rval, "set_enginetime().");
-
-
-    SUCCESS("Retrieval and updates.");
-
-
-
-    /*
-     * ------------------------------------ -o-
-     */
-    OUTPUT("Sleep again, then dump the list one last time.");
-
-    fprintf(stdout, "Sleeping for %d second%s... ",
-            sleeptime, (sleeptime == 1) ? "" : "s");
-    fflush(stdout);
-
-    sleep(sleeptime);
-    fprintf(stdout, "\n");
-
-#ifdef NETSNMP_ENABLE_TESTING_CODE
-    dump_etimelist();
-#endif
-
-    return failcount;
-
-}                               /* end test_etime() */
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/eval_tools.sh b/testing/eval_tools.sh
deleted file mode 100644
index a9d3ad1..0000000
--- a/testing/eval_tools.sh
+++ /dev/null
@@ -1,585 +0,0 @@
-#
-# eval_tools.sh
-#
-# Output functions for script tests.  Source this from other test scripts
-# to establish a standardized repertory of test functions.
-#
-#
-# Except where noted, all functions return:
-#	0	On success,	(Bourne Shell's ``true'')
-#	non-0	Otherwise.
-#
-# Input arguments to each function are documented with each function.
-#
-#
-# XXX  Suggestions:
-#	DEBUG ON|OFF
-#	dump CAPTURE output to stdout as well as to junkoutputfile.
-#
-
-#
-# Only allow ourselves to be eval'ed once
-#
-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="-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="
-if [ -z "$OK_TO_SAVE_RESULT" ] ; then
-OK_TO_SAVE_RESULT=1
-export OK_TO_SAVE_RESULT
-fi
-
-
-#
-# HEADER: returns a single line when SNMP_HEADERONLY mode and exits.
-#
-HEADER() {
-    if [ "x$SNMP_HEADERONLY" != "x" ]; then
-        echo test $*
-	exit 0;
-    else
-	ECHO "testing $*...  "
-	headerStr="testing $*"
-    fi
-}
-
-
-#------------------------------------ -o-
-#
-OUTPUT() {	# <any_arguments>
-	cat <<GRONK
-
-
-$*
-
-
-GRONK
-}
-
-CAN_USLEEP() {
-   if [ "$SNMP_CAN_USLEEP" = 0 -o "$SNMP_CAN_USLEEP" = 0 ] ; then
-     return $SNMP_CAN_USLEEP
-   fi
-   sleep .1 > /dev/null 2>&1
-   if [ $? = 0 ] ; then
-     SNMP_CAN_USLEEP=1
-   else
-     SNMP_CAN_USLEEP=0
-   fi
-   export SNMP_CAN_USLEEP
-}
-
-
-#------------------------------------ -o-
-#
-SUCCESS() {	# <any_arguments>
-	[ "$failcount" -ne 0 ] && return
-	cat <<GROINK
-
-SUCCESS: $*
-
-GROINK
-}
-
-
-
-#------------------------------------ -o-
-#
-FAILED() {	# <return_value>, <any_arguments>
-	[ "$1" -eq 0 ] && return
-	shift
-
-	failcount=`expr $failcount + 1`
-	cat <<GRONIK
-
-FAILED: $*
-
-GRONIK
-}
-
-#------------------------------------ -o-
-#
-SKIP() {
-	REMOVETESTDATA
-	echo "SKIPPED"
-	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
-}
-
-SKIPIFNOT() {
-	if ISDEFINED "$1"; then
-	    :
-	else
-	    SKIP
-	fi
-}
-
-SKIPIF() {
-	if ISDEFINED "$1"; then
-	    SKIP
-	fi
-}
-	
-
-#------------------------------------ -o-
-#
-VERIFY() {	# <path_to_file(s)>
-	missingfiles=""
-
-	for f in $*; do
-		[ -f "$f" ] && continue
-		echo "FAILED: Cannot find file \"$f\"."
-		missingfiles=true
-	done
-
-	[ "$missingfiles" = true ] && exit 1000
-}
-
-
-#------------------------------------ -o-
-#
-STARTTEST() {	
-	[ ! -f "$junkoutputfile" ] && {
-		touch $junkoutputfile
-		return
-	}
-	echo "FAILED: Output file already exists: \"$junkoutputfile\"."
-	exit 1000
-}
-
-
-#------------------------------------ -o-
-#
-STOPTEST() {
-	rm -f "$junkoutputfile"
-}
-
-
-#------------------------------------ -o-
-#
-REMOVETESTDATA() {
-#	ECHO "removing $SNMP_TMPDIR  "
-	rm -rf $SNMP_TMPDIR
-}
-
-
-#------------------------------------ -o-
-# Captures output from command, and returns the command's exit code.
-CAPTURE() {	# <command_with_arguments_to_execute>
-    echo $* >> $SNMP_TMPDIR/invoked
-
-	if [ $SNMP_VERBOSE -gt 0 ]; then
-		cat <<KNORG
-
-EXECUTING: $*
-
-KNORG
-
-	fi
-	( $* 2>&1 ) > $junkoutputfile 2>&1
-	RC=$?
-
-	if [ $SNMP_VERBOSE -gt 1 ]; then
-		echo "Command Output: "
-		echo "MIBDIR $MIBDIRS $MIBS"
-		echo "$seperator"
-		cat $junkoutputfile | sed 's/^/  /'
-		echo "$seperator"
-	fi
-	return $RC
-}
-
-#------------------------------------ -o-
-# Delay to let processes settle
-DELAY() {
-    if [ "$SNMP_SLEEP" != "0" ] ; then
-	sleep $SNMP_SLEEP
-    fi
-}
-
-SAVE_RESULTS() {
-   real_return_value=$return_value
-}
-
-#
-# Checks the output result against what we expect.
-#   Sets return_value to 0 or 1.
-#
-EXPECTRESULT() {
-  if [ $OK_TO_SAVE_RESULT -ne 0 ] ; then
-    if [ "$snmp_last_test_result" = "$1" ]; then
-	return_value=0
-    else
-	return_value=1
-    fi
-  fi
-}
-
-#------------------------------------ -o-
-# Returns: Count of matched lines.
-#
-CHECK() {	# <pattern_to_match>
-    if [ $SNMP_VERBOSE -gt 0 ]; then
-	echo -n "checking output for \"$*\"..."
-    fi
-
-    rval=`grep -c "$*" "$junkoutputfile" 2>/dev/null`
-
-    if [ $SNMP_VERBOSE -gt 0 ]; then
-	echo "$rval matches found"
-    fi
-
-    snmp_last_test_result=$rval
-    EXPECTRESULT 1  # default
-    return $rval
-}
-
-CHECKFILE() {
-    file=$1
-    if [ "x$file" = "x" ] ; then
-        file=$junkoutputfile
-    fi
-    shift
-    myoldjunkoutputfile="$junkoutputfile"
-    junkoutputfile="$file"
-    CHECK $*
-    junkoutputfile="$myoldjunkoutputfile"
-}
-
-CHECKTRAPD() {
-    CHECKFILE $SNMP_SNMPTRAPD_LOG_FILE $@
-}
-
-CHECKTRAPDORDIE() {
-    CHECKORDIE $@ $SNMP_SNMPTRAPD_LOG_FILE
-}
-
-CHECKAGENT() {
-    CHECKFILE $SNMP_SNMPD_LOG_FILE $@
-}
-
-WAITFORAGENT() {
-    WAITFOR "$@" $SNMP_SNMPD_LOG_FILE
-}
-
-WAITFORTRAPD() {
-    WAITFOR "$@" $SNMP_SNMPTRAPD_LOG_FILE
-}
-
-WAITFOR() {
-  ## save the previous save state and test result
-    save_state=$OK_TO_SAVE_RESULT
-    save_test=$snmp_last_test_result
-    OK_TO_SAVE_RESULT=0
-
-    sleeptime=$SNMP_SLEEP
-    oldsleeptime=$SNMP_SLEEP
-    if [ "$1" != "" ] ; then
-	CAN_USLEEP
-	if [ $SNMP_CAN_USLEEP = 1 ] ; then
-	  sleeptime=`expr $SNMP_SLEEP '*' 50`
-          SNMP_SLEEP=.1
-	else 
-	  sleeptime=`expr $SNMP_SLEEP '*' 5`
-	  SNMP_SLEEP=1
-	fi
-        while [ $sleeptime -gt 0 ] ; do
-	  if [ "$2" = "" ] ; then
-            CHECK "$@"
-          else
-	    CHECKFILE "$2" "$1"
-	  fi
-          if [ "$snmp_last_test_result" != "" ] ; then
-              if [ "$snmp_last_test_result" -gt 0 ] ; then
-	         break;
-              fi
-	  fi
-          DELAY
-          sleeptime=`expr $sleeptime - 1`
-        done
-        SNMP_SLEEP=$oldsleeptime
-    else
-        if [ $SNMP_SLEEP -ne 0 ] ; then
-	    sleep $SNMP_SLEEP
-        fi
-    fi
-
-  ## restore the previous save state and test result
-    OK_TO_SAVE_RESULT=$save_state
-    snmp_last_test_result=$save_test
-}    
-
-# WAITFORORDIE "grep string" ["file"]
-WAITFORORDIE() {
-    WAITFOR "$1" "$2"
-    if [ "$snmp_last_test_result" != 0 ] ; then
-        FINISHED
-    fi
-    ECHO "."
-}
-
-# CHECKORDIE "grep string" ["file"] .. FAIL if "grep string" is *not* found
-CHECKORDIE() {
-    CHECKFILE "$2" "$1"
-    if [ "$snmp_last_test_result" = 0 ] ; then
-        FINISHED
-    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
-    fi
-    ECHO "."
-}
-
-#------------------------------------ -o-
-# Returns: Count of matched lines.
-#
-CHECKEXACT() {	# <pattern_to_match_exactly>
-	rval=`egrep -c "^$*\$|^$*[^a-zA-Z0-9_]|[^a-zA-Z0-9_]$*\$|[^a-zA-Z0-9_]$*[^a-zA-Z0-9_]" "$junkoutputfile" 2>/dev/null`
-	snmp_last_test_result=$rval
-	EXPECTRESULT 1  # default
-	return $rval
-}
-
-CONFIGAGENT() {
-    if [ "x$SNMP_CONFIG_FILE" = "x" ]; then
-	echo "$0: failed because var: SNMP_CONFIG_FILE wasn't set"
-	exit 1;
-    fi
-    echo $* >> $SNMP_CONFIG_FILE
-}
-
-CONFIGTRAPD() {
-    if [ "x$SNMPTRAPD_CONFIG_FILE" = "x" ]; then
-	echo "$0: failed because var: SNMPTRAPD_CONFIG_FILE wasn't set"
-	exit 1;
-    fi
-    echo $* >> $SNMPTRAPD_CONFIG_FILE
-}
-
-#
-# common to STARTAGENT and STARTTRAPD
-# log command to "invoked" file
-# delay after command to allow for settle
-#
-STARTPROG() {
-    if [ "x$DYNAMIC_ANALYZER" != "x" ]; then
-        COMMAND="$DYNAMIC_ANALYZER $COMMAND"
-    fi
-    if [ $SNMP_VERBOSE -gt 1 ]; then
-	echo "$CFG_FILE contains: "
-	if [ -f $CFG_FILE ]; then
-	    cat $CFG_FILE
-	else
-	    echo "[no config file]"
-	fi
-    fi
-    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
-    echo $COMMAND >> $SNMP_TMPDIR/invoked
-    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
-    else
-      $COMMAND > $LOG_FILE.stdout 2>&1
-    fi
-}
-
-#------------------------------------ -o-
-STARTAGENT() {
-    SNMPDSTARTED=1
-    COMMAND="snmpd $SNMP_FLAGS -r -U -p $SNMP_SNMPD_PID_FILE -Lf $SNMP_SNMPD_LOG_FILE $AGENT_FLAGS"
-    CFG_FILE=$SNMP_CONFIG_FILE
-    LOG_FILE=$SNMP_SNMPD_LOG_FILE
-    PORT_SPEC="$SNMP_SNMPD_PORT"
-    if [ "x$SNMP_TRANSPORT_SPEC" != "x" ]; then
-        PORT_SPEC="${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${PORT_SPEC}"
-    fi
-    STARTPROG
-    WAITFORAGENT "NET-SNMP version"
-}
-
-#------------------------------------ -o-
-STARTTRAPD() {
-    TRAPDSTARTED=1
-    COMMAND="snmptrapd -d -p $SNMP_SNMPTRAPD_PID_FILE -Lf $SNMP_SNMPTRAPD_LOG_FILE $TRAPD_FLAGS"
-    CFG_FILE=$SNMPTRAPD_CONFIG_FILE
-    LOG_FILE=$SNMP_SNMPTRAPD_LOG_FILE
-    PORT_SPEC="$SNMP_SNMPTRAPD_PORT"
-    if [ "x$SNMP_TRANSPORT_SPEC" != "x" ]; then
-        PORT_SPEC="${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${PORT_SPEC}"
-    fi
-    STARTPROG
-    WAITFORTRAPD "NET-SNMP version"
-}
-
-## sending SIGHUP for reconfiguration
-#
-HUPPROG() {
-    if [ -f $1 ]; then
-        if [ "x$OSTYPE" = "xmsys" ]; then
-          COMMAND='echo "Skipping SIGHUP (not possible with MinGW)"'
-        else
-          COMMAND="kill -HUP `cat $1`"
-        fi
-	echo $COMMAND >> $SNMP_TMPDIR/invoked
-	$COMMAND > /dev/null 2>&1
-    fi
-}
-
-HUPAGENT() {
-    HUPPROG $SNMP_SNMPD_PID_FILE
-    if [ "x$OSTYPE" != "xmsys" ]; then
-        WAITFORAGENT "restarted"
-    fi
-}
-
-HUPTRAPD() {
-    HUPPROG $SNMP_SNMPTRAPD_PID_FILE
-    if [ "x$OSTYPE" != "xmsys" ]; then
-        WAITFORTRAPD "restarted"
-    fi
-}
-
-
-## used by STOPAGENT and STOPTRAPD
-# delay before kill to allow previous action to finish
-#    this is especially important for interaction between
-#    master agent and sub agent.
-STOPPROG() {
-    if [ -f $1 ]; then
-        if [ "x$OSTYPE" = "xmsys" ]; then
-          COMMAND="pskill.exe `cat $1`"
-        else
-          COMMAND="kill -TERM `cat $1`"
-        fi
-	echo $COMMAND >> $SNMP_TMPDIR/invoked
-	$COMMAND > /dev/null 2>&1
-    fi
-}
-
-#------------------------------------ -o-
-#
-STOPAGENT() {
-    SAVE_RESULTS
-    STOPPROG $SNMP_SNMPD_PID_FILE
-    if [ "x$OSTYPE" != "xmsys" ]; then
-        WAITFORAGENT "shutting down"
-    fi
-    if [ $SNMP_VERBOSE -gt 1 ]; then
-	echo "Agent Output:"
-	echo "$seperator [stdout]"
-	cat $SNMP_SNMPD_LOG_FILE.stdout
-	echo "$seperator [logfile]"
-	cat $SNMP_SNMPD_LOG_FILE
-	echo "$seperator"
-    fi
-}
-
-#------------------------------------ -o-
-#
-STOPTRAPD() {
-    SAVE_RESULTS
-    STOPPROG $SNMP_SNMPTRAPD_PID_FILE
-    if [ "x$OSTYPE" != "xmsys" ]; then
-        WAITFORTRAPD "Stopped"
-    fi
-    if [ $SNMP_VERBOSE -gt 1 ]; then
-	echo "snmptrapd Output:"
-	echo "$seperator [stdout]"
-	cat $SNMP_SNMPTRAPD_LOG_FILE.stdout
-	echo "$seperator [logfile]"
-	cat $SNMP_SNMPTRAPD_LOG_FILE
-	echo "$seperator"
-    fi
-}
-
-#------------------------------------ -o-
-#
-FINISHED() {
-
-    ## no more changes to test result.
-    OK_TO_SAVE_RESULT=0
-
-    if [ "$SNMPDSTARTED" = "1" ] ; then
-      STOPAGENT
-    fi
-    if [ "$TRAPDSTARTED" = "1" ] ; then
-      STOPTRAPD
-    fi
-    for pfile in $SNMP_TMPDIR/*pid* ; do
-        if [ "x$pfile" = "x$SNMP_TMPDIR/*pid*" ]; then
-            ECHO "(no pid file(s) found) "
-            break
-        fi
-        if [ ! -f $pfile ]; then
-            ECHO "('$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
-            if [ "x$OSTYPE" = "xmsys" ]; then
-              COMMAND="pskill.exe $pid"
-            else
-              COMMAND="kill -9 $pid"
-            fi
-	    echo $COMMAND "($pfile)" >> $SNMP_TMPDIR/invoked
-	    $COMMAND > /dev/null 2>&1
-	    return_value=1
-	fi
-    done
-    if [ "x$real_return_value" != "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
-    fi
-
-    echo "ok"
-    echo "$headerStr...ok" >> $SNMP_TMPDIR/invoked
-
-    if [ "x$SNMP_SAVE_TMPDIR" != "xyes" ]; then
-	REMOVETESTDATA
-    fi
-    exit $real_return_value
-}
-
-#------------------------------------ -o-
-#
-VERBOSE_OUT() {
-    if [ $SNMP_VERBOSE > $1 ]; then
-	shift
-	echo "$*"
-    fi
-}
-
-fi # Only allow ourselves to be eval'ed once
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/fulltests/default/Sv3config b/testing/fulltests/default/Sv3config
new file mode 100644
index 0000000..55df5b4
--- /dev/null
+++ b/testing/fulltests/default/Sv3config
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+SKIPIFNOT NETSNMP_SECMOD_USM
+
+[ "x$SNMP_SMUX_SOCKET" = "x" ] && SNMP_SMUX_SOCKET=1.0.0.0
+
+CONFIGAGENT [snmp] persistentdir $SNMP_TMP_PERSISTENTDIR
+CONFIGAGENT smuxsocket $SNMP_SMUX_SOCKET
+
+# XXX: auto-switch to a supported protocol instead.
+if test "x$DEFAUTHTYPE" = "x"; then
+    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
+	DEFAUTHTYPE="SHA"
+    else
+	    DEFAUTHTYPE="MD5"
+    fi
+fi
+
+if test "x$DEFPRIVTYPE" = "x"; then
+  # XXX: HAVE_AES depends on cpp logic, so we need to test for lower-level stuff
+  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
+    if grep '^#define HAVE_OPENSSL_AES_H 1' $SNMP_UPDIR/include/net-snmp/net-snmp-config.h $SNMP_UPDIR/include/net-snmp/agent/mib_module_config.h > /dev/null ; then
+      if grep '^#define HAVE_AES_CFB128_ENCRYPT 1' $SNMP_UPDIR/include/net-snmp/net-snmp-config.h $SNMP_UPDIR/include/net-snmp/agent/mib_module_config.h > /dev/null ; then
+        DEFPRIVTYPE="AES"
+      else
+        DEFPRIVTYPE="DES"
+      fi
+    else
+      DEFPRIVTYPE="DES"
+    fi
+  else
+    DEFPRIVTYPE=""
+  fi
+fi
+
+CONFIGAGENT createUser initial $DEFAUTHTYPE initial_test_pass_auth $DEFPRIVTYPE
+CONFIGAGENT createUser template $DEFAUTHTYPE template_test_pass_auth $DEFPRIVTYPE
+CONFIGAGENT rwuser initial noauth
+CONFIGAGENT rwuser newtestuser
+
+NOAUTHTESTARGS="-l nanp -u initial -v 3"
+AUTHTESTARGS="-l anp -u initial -v 3 -a $DEFAUTHTYPE -A initial_test_pass_auth"
+PRIVTESTARGS="-l ap -u initial -v 3 -a $DEFAUTHTYPE -A initial_test_pass_auth -x $DEFPRIVTYPE -X initial_test_pass_auth"
+
+AUTHNOPASSTESTARGS="-l anp -u initial -v 3 -a $DEFAUTHTYPE"
+PRIVNOPASSTESTARGS="-l ap -u initial -v 3 -a $DEFAUTHTYPE -x $DEFPRIVTYPE"
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/fulltests/default/Sv3usmconfigbase b/testing/fulltests/default/Sv3usmconfigbase
new file mode 100644
index 0000000..b2e1eb2
--- /dev/null
+++ b/testing/fulltests/default/Sv3usmconfigbase
@@ -0,0 +1,100 @@
+#!/bin/sh
+#
+# SNMPv3 base config
+#
+# Input+Output variables:
+#   DEFSECURITYLEVEL         noAuthNoPriv|authNoPriv|authPriv
+#   DEFAUTHTYPE              MD5|SHA
+#   DEFPRIVTYPE              DES|AES
+#   TESTNOAUTHUSER           <myuser>
+#   TEST(AUTH|PRIV)USER[2]   <myuser>
+#   TEST(AUTH|PRIV)PASS[2]   <mypass>
+#
+# Input variables:
+#   CREATEUSERENGINEID       <engineid>
+#
+# Output variables:
+#   CREATEAUTHUSER[2]
+#   CREATEPRIVUSER[2]
+#   CREATENOAUTHUSER
+#   TESTNOAUTHARGS
+#   TESTAUTHARGS[NOPASS][2]
+#   TESTPRIVARGS[NOPASS][2]
+#
+
+SKIPIFNOT NETSNMP_SECMOD_USM
+
+## Defaults
+[ "x$DEFSECURITYLEVEL" = "x" ] && DEFSECURITYLEVEL=authPriv
+
+## 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
+fi
+
+## auto-probe best priv type
+# XXX: HAVE_AES depends on cpp logic, so we need to test for lower-level stuff
+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
+  if grep '^#define HAVE_OPENSSL_AES_H 1' $SNMP_UPDIR/include/net-snmp/net-snmp-config.h $SNMP_UPDIR/include/net-snmp/agent/mib_module_config.h > /dev/null && \
+   grep '^#define HAVE_AES_CFB128_ENCRYPT 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=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
+
+CREATEUSERCMD="createUser"
+[ "x$CREATEUSERENGINEID" != "x" ] && CREATEUSERCMD="$CREATEUSERCMD -e $CREATEUSERENGINEID"
+
+## auth setup
+if [ "x$DEFSECURITYLEVEL" = "xauthPriv" -o "x$DEFSECURITYLEVEL" = "xauthNoPriv" ]; then
+  [ "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
+  [ "x$TESTAUTHUSER2" = "x" ] && TESTAUTHUSER2=template_auth
+  [ "x$TESTAUTHPASS" = "x" ] && TESTAUTHPASS=initial_test_pass_auth
+  [ "x$TESTAUTHPASS2" = "x" ] && TESTAUTHPASS2=template_test_pass_auth
+  CREATEAUTHUSER="$CREATEUSERCMD $TESTAUTHUSER $DEFAUTHTYPE $TESTAUTHPASS"
+  CREATEAUTHUSER2="$CREATEUSERCMD $TESTAUTHUSER2 $DEFAUTHTYPE $TESTAUTHPASS2"
+  # command args
+  TESTAUTHARGSNOPASS="-v 3 -l anp -u $TESTAUTHUSER -a $DEFAUTHTYPE"
+  TESTAUTHARGSNOPASS2="-v 3 -l anp -u $TESTAUTHUSER2 -a $DEFAUTHTYPE"
+  TESTAUTHARGS="$TESTAUTHARGSNOPASS -A $TESTAUTHPASS"
+  TESTAUTHARGS2="$TESTAUTHARGSNOPASS2 -A $TESTAUTHPASS2"
+fi
+
+## priv setup
+if [ "x$DEFSECURITYLEVEL" = "xauthPriv" ]; then
+  [ "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
+  [ "x$TESTPRIVUSER2" = "x" ] && TESTPRIVUSER2=template_priv
+  [ "x$TESTPRIVPASS" = "x" ] && TESTPRIVPASS=initial_test_pass_priv
+  [ "x$TESTPRIVPASS2" = "x" ] && TESTPRIVPASS2=template_test_pass_priv
+  CREATEPRIVUSER="$CREATEUSERCMD $TESTPRIVUSER $DEFAUTHTYPE $TESTAUTHPASS $DEFPRIVTYPE $TESTPRIVPASS"
+  CREATEPRIVUSER2="$CREATEUSERCMD $TESTPRIVUSER2 $DEFAUTHTYPE $TESTAUTHPASS2 $DEFPRIVTYPE $TESTPRIVPASS2"
+  # command args
+  TESTPRIVARGSNOPASS="-v 3 -l ap -u $TESTPRIVUSER -a $DEFAUTHTYPE -x $DEFPRIVTYPE"
+  TESTPRIVARGSNOPASS2="-v 3 -l ap -u $TESTPRIVUSER2 -a $DEFAUTHTYPE -x $DEFPRIVTYPE"
+  TESTPRIVARGS="$TESTPRIVARGSNOPASS -A $TESTAUTHPASS -X $TESTPRIVPASS"
+  TESTPRIVARGS2="$TESTPRIVARGSNOPASS2 -A $TESTAUTHPASS2 -X $TESTPRIVPASS2"
+fi
+
+## noauth setup
+[ "x$TESTNOAUTHUSER" = "x" ] && TESTNOAUTHUSER=initial
+TESTNOAUTHARGS="-v 3 -l nanp -u $TESTNOAUTHUSER"
+CREATENOAUTHUSER="$CREATEUSERCMD $TESTNOAUTHUSER"
+
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/fulltests/default/Sv3vacmconfig b/testing/fulltests/default/Sv3vacmconfig
new file mode 100644
index 0000000..7c35e36
--- /dev/null
+++ b/testing/fulltests/default/Sv3vacmconfig
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# generically set up the user "initial1" and "initial2"  for snmp v3
+# access to the agent.
+
+# Configuration:
+#initial1 can access .1.3.6.1.2.1.1.1, deny others
+#initial2 can access all except .1.3.6.1.2.1.1.1 
+
+# XXX: do autoselection of supported algorithms
+SKIPIF NETSNMP_DISABLE_MD5
+SKIPIF NETSNMP_DISABLE_DES
+SKIPIFNOT NETSNMP_SECMOD_USM
+
+CONFIGAGENT [snmp] persistentdir $SNMP_TMP_PERSISTENTDIR
+
+CONFIGAGENT createUser initial1 MD5 initial_test_pass_auth DES
+CONFIGAGENT createUser initial2 MD5 initial_test_pass_auth DES
+
+
+CONFIGAGENT group   testcommunitygroup1  usm     initial1
+CONFIGAGENT group   testcommunitygroup2  usm     initial2
+
+CONFIGAGENT view    system1     included .1.3.6.1.2.1.1.1 
+CONFIGAGENT view    system2     included .1
+CONFIGAGENT view    system2     excluded .1.3.6.1.2.1.1.1 
+CONFIGAGENT 'access  testcommunitygroup1  "" any auth exact system1 none none'
+CONFIGAGENT 'access  testcommunitygroup2  "" any auth exact system2 none none'
+
diff --git a/testing/fulltests/default/Svacmconfig b/testing/fulltests/default/Svacmconfig
new file mode 100644
index 0000000..d9d862d
--- /dev/null
+++ b/testing/fulltests/default/Svacmconfig
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+# standard V1 configuration: testcommunity1 testcommunity2
+# testcommunity1 can access .1.3.6.1.2.1.1.1, others are denied
+# generically set up the community "testcommunity1 and testcommunity2" for various snmp
+# version access to the agent.
+
+if [ "x$snmp_version" = "x" ]; then
+  snmp_version="any"
+fi
+
+CONFIGAGENT [snmp] persistentdir $SNMP_TMP_PERSISTENTDIR
+
+CONFIGAGENT rocommunity testrocommunity 127.0.0.1 .1.3.6.1.2.1.1.5.0
+CONFIGAGENT rwcommunity testrwcommunity 127.0.0.1 .1.3.6.1.2.1.1.5.0
+
+CONFIGAGENT com2sec testcommunitysec1  default testcommunity1
+CONFIGAGENT com2sec testcommunitysec2  default testcommunity2
+
+if [ "$SNMP_TRANSPORT_SPEC" = "udp6" -o "$SNMP_TRANSPORT_SPEC" = "tcp6" ];then 
+CONFIGAGENT rocommunity6 testrocommunity ::1 .1.3.6.1.2.1.1.5.0
+CONFIGAGENT rwcommunity6 testrwcommunity ::1 .1.3.6.1.2.1.1.5.0
+CONFIGAGENT com2sec6 testcommunitysec1  default testcommunity1
+CONFIGAGENT com2sec6 testcommunitysec2  default testcommunity2
+fi
+
+if [ "$SNMP_TRANSPORT_SPEC" = "unix" ];then 
+CONFIGAGENT com2secunix testcommunitysec1  testcommunity1
+CONFIGAGENT com2secunix testcommunitysec2  testcommunity2
+fi
+
+CONFIGAGENT group   testcommunitygroup1  $snmp_version     testcommunitysec1
+CONFIGAGENT group   testcommunitygroup2  $snmp_version     testcommunitysec2
+
+CONFIGAGENT view    system1     included .1.3.6.1.2.1.1.1 
+CONFIGAGENT view    system2     included .1
+CONFIGAGENT view    system2     excluded .1.3.6.1.2.1.1.1 
+CONFIGAGENT 'access  testcommunitygroup1  "" any noauth exact system1 none none'
+CONFIGAGENT 'access  testcommunitygroup2  "" any noauth exact system2 none none'
+
diff --git a/testing/fulltests/default/Svanyconfig b/testing/fulltests/default/Svanyconfig
new file mode 100644
index 0000000..8cb53dc
--- /dev/null
+++ b/testing/fulltests/default/Svanyconfig
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# generically set up the community "testcommunity" for various snmp
+# version access to the agent.
+
+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
+
+CONFIGAGENT [snmp] persistentdir $SNMP_TMP_PERSISTENTDIR
+CONFIGAGENT smuxsocket $SNMP_SMUX_SOCKET
+
+CONFIGAGENT com2sec testcommunitysec  default testcommunity
+if [ "$SNMP_TRANSPORT_SPEC" = "udp6" -o "$SNMP_TRANSPORT_SPEC" = "tcp6" ];then 
+	CONFIGAGENT com2sec6 testcommunitysec  default testcommunity
+fi
+
+if [ "$SNMP_TRANSPORT_SPEC" = "unix" ];then 
+	CONFIGAGENT com2secunix testcommunitysec  testcommunity
+fi
+
+CONFIGAGENT group   testcommunitygroup  $snmp_version     testcommunitysec
+CONFIGAGENT view    all     included .1 80
+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/fulltests/default/T001snmpv1get_simple b/testing/fulltests/default/T001snmpv1get_simple
new file mode 100644
index 0000000..07d3847
--- /dev/null
+++ b/testing/fulltests/default/T001snmpv1get_simple
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv1 support
+
+SKIPIF NETSNMP_DISABLE_SNMPV1
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
+#
+# Begin test
+#
+
+# standard V1 configuration: testcomunnity
+. ./Sv1config
+
+STARTAGENT
+
+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.3.0"
+
+CHECKORDIE ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+CAPTURE "snmpgetnext -On $SNMP_FLAGS -c testcommunity -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3"
+
+CHECKORDIE ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+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.3.1"
+
+CHECKORDIE "Error in packet"
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c notavalidcommunity -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+CHECKORDIE "Timeout"
+
+STOPAGENT
+
+FINISHED
diff --git a/testing/fulltests/default/T0141snmpv2cset_simple b/testing/fulltests/default/T0141snmpv2cset_simple
new file mode 100644
index 0000000..18d9bae
--- /dev/null
+++ b/testing/fulltests/default/T0141snmpv2cset_simple
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv2c set of system.sysContact.0
+
+SKIPIF NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF NETSNMP_NO_WRITE_SUPPORT
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
+#
+# Begin test
+#
+
+# standard V2C configuration: testcomunnity
+snmp_write_access='all'
+. ./Sv2cconfig
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0"
+
+CHECK ".1.3.6.1.2.1.1.4.0 = STRING:"
+
+CAPTURE "snmpset -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0 s foobartestingbaz"
+
+CHECK ".1.3.6.1.2.1.1.4.0 = STRING:"
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0"
+
+CHECK "STRING: foobartestingbaz"
+
+STOPAGENT
+
+FINISHED
diff --git a/testing/fulltests/default/T014snmpv2cget_simple b/testing/fulltests/default/T014snmpv2cget_simple
new file mode 100644
index 0000000..43dffd5
--- /dev/null
+++ b/testing/fulltests/default/T014snmpv2cget_simple
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv2c get of system.sysUpTime.0
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
+#
+# Begin test
+#
+
+# standard V2C configuration: testcomunnity
+. ./Sv2cconfig
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+STOPAGENT
+
+CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+FINISHED
diff --git a/testing/fulltests/default/T015snmpv2cgetnext_simple b/testing/fulltests/default/T015snmpv2cgetnext_simple
new file mode 100644
index 0000000..7c6eaa9
--- /dev/null
+++ b/testing/fulltests/default/T015snmpv2cgetnext_simple
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv2c getnext of system.sysUpTime
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
+#
+# Begin test
+#
+
+# standard V2C configuration: testcomunnity
+. ./Sv2cconfig
+
+STARTAGENT
+
+CAPTURE "snmpgetnext -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3"
+
+STOPAGENT
+
+CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+FINISHED
diff --git a/testing/fulltests/default/T0160snmpv2cbulkget_simple b/testing/fulltests/default/T0160snmpv2cbulkget_simple
new file mode 100755
index 0000000..38ec3b3
--- /dev/null
+++ b/testing/fulltests/default/T0160snmpv2cbulkget_simple
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv2c bulkget of system components
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
+#
+# Begin test
+#
+
+# standard V2 configuration: testcomunnity
+. ./Sv2cconfig
+
+STARTAGENT
+
+CAPTURE "snmpbulkget $SNMP_FLAGS -v2c -On -Cn1 -Cr2 -c testcommunity $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4 .1.3.6.1.2.1.1"
+
+STOPAGENT
+
+CHECKORDIE ".1.3.6.1.2.1.1.4.0 = STRING:"
+CHECKORDIE ".1.3.6.1.2.1.1.1.0 = STRING:"
+CHECKORDIE ".1.3.6.1.2.1.1.2.0 = OID:"
+
+CHECKCOUNT 0 ".1.3.6.1.2.1.1.3.0"
+
+CHECKCOUNT 0 ".1.3.6.1.2.1.1.5.0"
+
+FINISHED
diff --git a/testing/fulltests/default/T016snmpv2cgetfail_simple b/testing/fulltests/default/T016snmpv2cgetfail_simple
new file mode 100644
index 0000000..1cd0e94
--- /dev/null
+++ b/testing/fulltests/default/T016snmpv2cgetfail_simple
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+#
+# test snmpv2c get support by reading a variable
+#
+
+. ../support/simple_eval_tools.sh
+
+HEADER for failure of SNMPv2c get with wrong community
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+SKIPIFNOT USING_MIBII_VACM_CONF_MODULE
+
+#
+# Begin test
+#
+
+# standard V2C configuration: testcomunnity
+. ./Sv2cconfig
+
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c notavalidcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+STOPAGENT
+
+CHECK "Timeout"
+
+FINISHED
diff --git a/testing/fulltests/default/T017snmpv2ctov1getfail_simple b/testing/fulltests/default/T017snmpv2ctov1getfail_simple
new file mode 100644
index 0000000..4c812c0
--- /dev/null
+++ b/testing/fulltests/default/T017snmpv2ctov1getfail_simple
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+#
+# test snmpv2c get support by reading a variable
+#
+
+. ../support/simple_eval_tools.sh
+
+HEADER for failure of SNMPv2c get against SNMPv1 agent
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIF NETSNMP_DISABLE_SNMPV1
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
+#
+# Begin test
+#
+
+# standard V2C configuration: testcomunnity
+. ./Sv1config
+
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c notavalidcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+STOPAGENT
+
+CHECK "Timeout"
+
+FINISHED
diff --git a/testing/fulltests/default/T018snmpv1tov2cgetfail_simple b/testing/fulltests/default/T018snmpv1tov2cgetfail_simple
new file mode 100644
index 0000000..d9b8b6a
--- /dev/null
+++ b/testing/fulltests/default/T018snmpv1tov2cgetfail_simple
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER for failure of SNMPv1 get against SNMPv2c agent
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIF NETSNMP_DISABLE_SNMPV1
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
+#
+# Begin test
+#
+
+# standard V2C configuration: testcomunnity
+. ./Sv2cconfig
+
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c notavalidcommunity -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+STOPAGENT
+
+CHECK "Timeout"
+
+FINISHED
diff --git a/testing/fulltests/default/T019snmpv2cnosuch_simple b/testing/fulltests/default/T019snmpv2cnosuch_simple
new file mode 100644
index 0000000..78a0bb1
--- /dev/null
+++ b/testing/fulltests/default/T019snmpv2cnosuch_simple
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv2c get of system.sysUpTime.1
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
+#
+# Begin test
+#
+
+# standard V2C configuration: testcomunnity
+. ./Sv2cconfig
+
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.1"
+
+STOPAGENT
+
+CHECK ".1.3.6.1.2.1.1.3.1 = No Such Instance"
+
+FINISHED
diff --git a/testing/fulltests/default/T020snmpv3get_simple b/testing/fulltests/default/T020snmpv3get_simple
new file mode 100644
index 0000000..20b59e4
--- /dev/null
+++ b/testing/fulltests/default/T020snmpv3get_simple
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv3 get using noAuthNoPriv of .1.3.6.1.2.1.1.3.0
+
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
+#
+# Begin test
+#
+
+# configure the agent to accept user initial with noAuthNoPriv
+. ./Sv3config
+
+STARTAGENT
+
+CAPTURE "snmpget -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/testing/fulltests/default/T021snmpv3getnext_simple b/testing/fulltests/default/T021snmpv3getnext_simple
new file mode 100755
index 0000000..54c82d3
--- /dev/null
+++ b/testing/fulltests/default/T021snmpv3getnext_simple
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv3 getnext using initial of .1.3.6.1.2.1.1.3
+
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
+#
+# Begin test
+#
+
+# configure the agent to accept user initial with noAuthNoPriv
+. ./Sv3config
+
+STARTAGENT
+
+CAPTURE "snmpgetnext -On $SNMP_FLAGS $NOAUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3"
+
+STOPAGENT
+
+CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+FINISHED
diff --git a/testing/fulltests/default/T0220snmpv3bulkget_simple b/testing/fulltests/default/T0220snmpv3bulkget_simple
new file mode 100755
index 0000000..7eddccf
--- /dev/null
+++ b/testing/fulltests/default/T0220snmpv3bulkget_simple
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv3 bulkget of system
+
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
+#
+# Begin test
+#
+
+# standard V3 configuration: 
+. ./Sv3config
+
+STARTAGENT
+
+CAPTURE "snmpbulkget $SNMP_FLAGS -On -Cn1 -Cr2 $NOAUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4 .1.3.6.1.2.1.1"
+
+STOPAGENT
+
+CHECKORDIE ".1.3.6.1.2.1.1.4.0 = STRING:"
+CHECKORDIE ".1.3.6.1.2.1.1.1.0 = STRING:"
+CHECKORDIE ".1.3.6.1.2.1.1.2.0 = OID:"
+
+CHECKCOUNT 0 ".1.3.6.1.2.1.1.3.0"
+
+CHECKCOUNT 0 ".1.3.6.1.2.1.1.5.0"
+
+FINISHED
diff --git a/testing/fulltests/default/T022snmpv3getMD5_simple b/testing/fulltests/default/T022snmpv3getMD5_simple
new file mode 100755
index 0000000..eed4292
--- /dev/null
+++ b/testing/fulltests/default/T022snmpv3getMD5_simple
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv3 get using MD5/noPriv of .1.3.6.1.2.1.1.3.0
+
+SKIPIF NETSNMP_DISABLE_MD5
+
+#
+# Begin test
+#
+
+# standard V3 configuration for initial user
+DEFAUTHTYPE="MD5"
+. ./Sv3config
+
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+STOPAGENT
+
+CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+FINISHED
diff --git a/testing/fulltests/default/T023snmpv3getMD5AES_simple b/testing/fulltests/default/T023snmpv3getMD5AES_simple
new file mode 100644
index 0000000..985b2a4
--- /dev/null
+++ b/testing/fulltests/default/T023snmpv3getMD5AES_simple
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv3 get using MD5/AES of .1.3.6.1.2.1.1.3.0
+
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
+SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
+SKIPIFNOT HAVE_AES_CFB128_ENCRYPT
+SKIPIF NETSNMP_DISABLE_MD5
+
+#
+# Begin test
+#
+
+# standard V3 configuration for initial user
+DEFAUTHTYPE=MD5
+DEFPRIVTYPE=AES
+. ./Sv3config
+
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS $PRIVTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+STOPAGENT
+
+CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+FINISHED
diff --git a/testing/fulltests/default/T023snmpv3getMD5DES_simple b/testing/fulltests/default/T023snmpv3getMD5DES_simple
new file mode 100755
index 0000000..000478a
--- /dev/null
+++ b/testing/fulltests/default/T023snmpv3getMD5DES_simple
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv3 get using MD5/DES of .1.3.6.1.2.1.1.3.0
+
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
+SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
+SKIPIF NETSNMP_DISABLE_MD5
+
+#
+# Begin test
+#
+
+# standard V3 configuration for initial user
+DEFAUTHTYPE=MD5
+DEFPRIVTYPE=DES
+. ./Sv3config
+
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS $PRIVTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+STOPAGENT
+
+CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+FINISHED
diff --git a/testing/fulltests/default/T024snmpv3getSHA1_simple b/testing/fulltests/default/T024snmpv3getSHA1_simple
new file mode 100755
index 0000000..80b7f4f
--- /dev/null
+++ b/testing/fulltests/default/T024snmpv3getSHA1_simple
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv3 get using SHA/noPriv of .1.3.6.1.2.1.1.3.0
+
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
+
+#
+# Begin test
+#
+
+# standard V3 configuration for templateSHA user
+DEFAUTHTYPE="SHA"
+. ./Sv3config
+
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+STOPAGENT
+
+CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+FINISHED
diff --git a/testing/fulltests/default/T025snmpv3getSHADES_simple b/testing/fulltests/default/T025snmpv3getSHADES_simple
new file mode 100755
index 0000000..d01a4ef
--- /dev/null
+++ b/testing/fulltests/default/T025snmpv3getSHADES_simple
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv3 get using SHA/DES of .1.3.6.1.2.1.1.3.0
+
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
+SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
+SKIPIF NETSNMP_DISABLE_DES
+
+#
+# Begin test
+#
+
+# standard V3 configuration for templateSHA user
+DEFAUTHTYPE="SHA"
+DEFPRIVTYPE="DES"
+. ./Sv3config
+
+AGENT_FLAGS="$AGENT_FLAGS -I-winExtDLL"
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS $PRIVTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+STOPAGENT
+
+CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+FINISHED
diff --git a/testing/fulltests/default/T026snmpv3getSHAAES_simple b/testing/fulltests/default/T026snmpv3getSHAAES_simple
new file mode 100644
index 0000000..561cdab
--- /dev/null
+++ b/testing/fulltests/default/T026snmpv3getSHAAES_simple
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv3 get using SHA/AES of .1.3.6.1.2.1.1.3.0
+
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
+SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
+SKIPIFNOT HAVE_AES_CFB128_ENCRYPT
+
+#
+# Begin test
+#
+
+# standard V3 configuration for templateSHA user
+DEFPRIVTYPE="AES"
+DEFAUTHTYPE="SHA"
+. ./Sv3config
+
+AGENT_FLAGS="$AGENT_FLAGS -I-winExtDLL"
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS $PRIVTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+STOPAGENT
+
+CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+FINISHED
diff --git a/testing/fulltests/default/T027snmpv3Defaults_simple b/testing/fulltests/default/T027snmpv3Defaults_simple
new file mode 100644
index 0000000..3bbf5e0
--- /dev/null
+++ b/testing/fulltests/default/T027snmpv3Defaults_simple
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv3 get using default config of .1.3.6.1.2.1.1.3.0
+
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
+SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
+SKIPIFNOT HAVE_AES_CFB128_ENCRYPT
+
+#
+# Begin test
+#
+
+# standard V3 configuration for templateSHA user
+DEFPRIVTYPE="AES"
+DEFAUTHTYPE="SHA"
+. ./Sv3config
+
+STARTAGENT
+
+CONFIGAPP defVersion 3
+CONFIGAPP defPrivType AES
+CONFIGAPP defAuthType SHA
+CONFIGAPP defContext \"\"
+CONFIGAPP defAuthPassPhrase initial_test_pass_auth
+CONFIGAPP defPrivPassPhrase initial_test_pass_auth
+CONFIGAPP defSecurityLevel authPriv
+CONFIGAPP defSecurityName initial
+
+# make sure that the above configuration tokens properly set things up so that
+# no flags are needed
+CAPTURE "snmpget -On $SNMP_FLAGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+STOPAGENT
+
+CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+FINISHED
diff --git a/testing/fulltests/default/T028snmpv3getfail_simple b/testing/fulltests/default/T028snmpv3getfail_simple
new file mode 100755
index 0000000..ada8a13
--- /dev/null
+++ b/testing/fulltests/default/T028snmpv3getfail_simple
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER for failure of SNMPv3 get using unknown user.
+
+#
+# Begin test
+#
+
+# standard V3 configuration for initial user
+. ./Sv3config
+
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS -v 3 -l nanp -u unknownuser $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+STOPAGENT
+
+CHECK "Unknown user name"
+
+FINISHED
diff --git a/testing/fulltests/default/T030snmpv3usercreation_simple b/testing/fulltests/default/T030snmpv3usercreation_simple
new file mode 100644
index 0000000..28eaae8
--- /dev/null
+++ b/testing/fulltests/default/T030snmpv3usercreation_simple
@@ -0,0 +1,119 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv3 agent USM user management with snmpusm
+
+SKIPIF NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF NETSNMP_NO_WRITE_SUPPORT
+SKIPIFNOT USING_SNMPV3_USMUSER_MODULE
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
+SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
+
+#
+# Begin test
+#
+
+# standard SNMPv3 USM agent configuration
+DEFSECURITYLEVEL=authPriv
+. ./Sv3usmconfigagent
+
+# test user
+NEWUSER=newtestuser
+NEWAUTHPASS=newauthpass
+NEWPRIVPASS=newprivpass
+NEWAUTHPRIVPASS=newauthprivpass
+
+# configure agent
+CONFIGAGENT rwuser $NEWUSER
+
+# Start the agent
+STARTAGENT
+
+## usmUserTable management
+
+## 1) create, clone, test, delete
+
+# create new (vanilla) user
+CAPTURE "snmpusm $SNMP_FLAGS $TESTPRIVARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT create $NEWUSER"
+CHECKORDIE "User successfully created"
+
+# clone
+CAPTURE "snmpusm $SNMP_FLAGS $TESTPRIVARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT cloneFrom $NEWUSER $TESTPRIVUSER"
+CHECKORDIE "User successfully cloned"
+
+# test (authPriv)
+CAPTURE "snmpget -On $SNMP_FLAGS -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -A $TESTAUTHPASS -x $DEFPRIVTYPE -X $TESTPRIVPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+CHECKORDIE ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+# delete 
+CAPTURE "snmpusm $SNMP_FLAGS $TESTPRIVARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT delete $NEWUSER"
+CHECKORDIE "User successfully deleted"
+
+## 2) create w/ clone, passwd (auth), passwd (priv), test (authPriv+authNoPriv)
+
+# create+clone template user
+CAPTURE "snmpusm $SNMP_FLAGS $TESTPRIVARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT create $NEWUSER $TESTPRIVUSER2"
+CHECKORDIE "User successfully created"
+
+# change auth passphrase of new user
+CAPTURE "snmpusm $SNMP_FLAGS $TESTPRIVARGS -Ca $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT passwd $TESTAUTHPASS2 $NEWAUTHPASS $NEWUSER"
+CHECKORDIE "SNMPv3 Key(s) successfully changed"
+
+# change priv passphrase of new user
+CAPTURE "snmpusm $SNMP_FLAGS $TESTPRIVARGS -Cx $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT passwd $TESTPRIVPASS2 $NEWPRIVPASS $NEWUSER"
+CHECKORDIE "SNMPv3 Key(s) successfully changed"
+
+# test (authNoPriv)
+CAPTURE "snmpget -On $SNMP_FLAGS -v 3 -u $NEWUSER -l anp -a $DEFAUTHTYPE -A $NEWAUTHPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+CHECKORDIE ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+# test (authPriv)
+CAPTURE "snmpget -On $SNMP_FLAGS -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -A $NEWAUTHPASS -x $DEFPRIVTYPE -X $NEWPRIVPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+CHECKORDIE ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+## 3) passwd (priv), passwd (auth+priv), test
+
+# change priv passphrase (to auth passphrase) by the user himself
+CAPTURE "snmpusm $SNMP_FLAGS -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -A $NEWAUTHPASS -x $DEFPRIVTYPE -X $NEWPRIVPASS -Cx $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT passwd $NEWPRIVPASS $NEWAUTHPASS"
+CHECKORDIE "SNMPv3 Key(s) successfully changed"
+
+# change both passphrases at once
+CAPTURE "snmpusm $SNMP_FLAGS -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -A $NEWAUTHPASS -x $DEFPRIVTYPE -X $NEWAUTHPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT passwd $NEWAUTHPASS $NEWAUTHPRIVPASS"
+CHECKORDIE "SNMPv3 Key(s) successfully changed"
+
+# test (authPriv)
+CAPTURE "snmpget -On $SNMP_FLAGS -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -A $NEWAUTHPRIVPASS -x $DEFPRIVTYPE -X $NEWAUTHPRIVPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+CHECKORDIE ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+## 5) persistency I: reconfigure (SIGHUP), re-test
+
+if ISDEFINED HAVE_SIGHUP; then
+
+HUPAGENT
+DELAY
+
+# test (authPriv)
+CAPTURE "snmpget -On $SNMP_FLAGS -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -A $NEWAUTHPRIVPASS -x $DEFPRIVTYPE -X $NEWAUTHPRIVPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+CHECKORDIE ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+## 5) persistency II: stop, start, re-test
+
+STOPAGENT
+DELAY
+# make sure it picks up persistent config and uses a new logfile
+SNMPCONFPATH="${SNMP_TMPDIR}${SNMP_ENV_SEPARATOR}${SNMP_TMP_PERSISTENTDIR}"
+export SNMPCONFPATH
+SNMP_CONFIG_FILE="does-not-exist"
+SNMP_SNMPD_LOG_FILE=${SNMP_TMPDIR}/snmpd2.log
+STARTAGENT
+
+# test (authPriv)
+CAPTURE "snmpget -On $SNMP_FLAGS -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -A $NEWAUTHPRIVPASS -x $DEFPRIVTYPE -X $NEWAUTHPRIVPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+CHECKORDIE ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+fi
+
+## stop agent and finish
+STOPAGENT
+FINISHED
diff --git a/testing/fulltests/default/T035snmpv3trapdusermgmt_simple b/testing/fulltests/default/T035snmpv3trapdusermgmt_simple
new file mode 100644
index 0000000..be7aab6
--- /dev/null
+++ b/testing/fulltests/default/T035snmpv3trapdusermgmt_simple
@@ -0,0 +1,126 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv3 snmptrapd USM user management with snmpusm
+
+SKIPIFNOT USING_AGENTX_MASTER_MODULE
+SKIPIFNOT USING_AGENTX_SUBAGENT_MODULE
+SKIPIFNOT USING_SNMPV3_USMUSER_MODULE
+SKIPIF    NETSNMP_SNMPTRAPD_DISABLE_AGENTX
+SKIPIF    NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF    NETSNMP_NO_WRITE_SUPPORT
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
+SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
+
+#
+# Begin test
+#
+
+# configure AgentX socket
+if [ "x$SNMP_TRANSPORT_SPEC" = "xunix" ]; then
+  AGENT_FLAGS="$AGENT_FLAGS -x $SNMP_TMPDIR/agentx_socket"
+  TRAPD_FLAGS="$TRAPD_FLAGS -x $SNMP_TMPDIR/agentx_socket"
+else
+  AGENT_FLAGS="$AGENT_FLAGS -x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
+  TRAPD_FLAGS="$TRAPD_FLAGS -x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
+fi
+
+# standard SNMPv3 USM agent configuration
+DEFSECURITYLEVEL=authPriv
+. ./Sv3usmconfigagent
+
+# save agent access
+AGENT_TESTAUTHARGS=$TESTAUTHARGS
+AGENT_TESTPRIVARGS=$TESTPRIVARGS
+
+# configure agent as AgentX master
+CONFIGAGENT master agentx
+
+# Start the master agent
+STARTAGENT
+
+# standard SNMPv3 USM snmptrapd configuration
+. ./Sv3usmconfigtrapd
+
+# configure snmptrapd
+NEWAUTHKEY=0x7458ead7a0b5a753e21bfcb87f6c9803ebef68cf
+NEWPRIVKEY=0x98e2696d1cf34d904dfcae76bf01c473
+NEWUSER=newtestuser
+NEWAUTHPASS=newauthpass
+NEWPRIVPASS=newprivpass
+NEWUSER2=newtestuser_vanilla
+CONFIGTRAPD authuser log $NEWUSER auth
+
+# start snmptrapd
+STARTTRAPD
+
+# delay to let it connect and register all MIBs
+DELAY
+
+## verify snmptrapd usmUserTable management
+
+SNMPUSM_TRAPD_CONTEXT_ARGS="-n snmptrapd -CE $TRAPD_ENGINEID"
+
+## 1) create, clone, passwd auth, passwd priv, test
+
+# create vanilla user
+CAPTURE "snmpusm $SNMP_FLAGS $AGENT_TESTAUTHARGS $SNMPUSM_TRAPD_CONTEXT_ARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT create $NEWUSER2"
+CHECKORDIE "User successfully created"
+
+# clone template user
+CAPTURE "snmpusm $SNMP_FLAGS $AGENT_TESTAUTHARGS $SNMPUSM_TRAPD_CONTEXT_ARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT create $NEWUSER $TESTPRIVUSER"
+CHECKORDIE "User successfully created"
+
+# change auth passphrase of new user
+CAPTURE "snmpusm $SNMP_FLAGS $AGENT_TESTAUTHARGS $SNMPUSM_TRAPD_CONTEXT_ARGS -Ca $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT passwd $TESTAUTHPASS $NEWAUTHPASS $NEWUSER"
+CHECKORDIE "SNMPv3 Key(s) successfully changed"
+
+# change priv passphrase of new user
+CAPTURE "snmpusm $SNMP_FLAGS $AGENT_TESTPRIVARGS $SNMPUSM_TRAPD_CONTEXT_ARGS -Cx $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT passwd $TESTPRIVPASS $NEWPRIVPASS $NEWUSER"
+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 .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 .1.3.6.1.2.1.1.4.0 s received_inform_ap"
+DELAY
+CHECKTRAPDORDIE "received_inform_ap"
+
+## 2) change localized auth key, test, change localized priv key, test
+
+# change localized auth key
+CAPTURE "snmpusm $SNMP_FLAGS $AGENT_TESTAUTHARGS $SNMPUSM_TRAPD_CONTEXT_ARGS -Ca -Ck $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT passwd $NEWAUTHPASS $NEWAUTHKEY $NEWUSER"
+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 .1.3.6.1.2.1.1.4.0 s received_inform_anp2"
+DELAY
+CHECKTRAPDORDIE "received_inform_anp2"
+
+# change localized priv key
+CAPTURE "snmpusm $SNMP_FLAGS $AGENT_TESTPRIVARGS $SNMPUSM_TRAPD_CONTEXT_ARGS -Cx -Ck $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT passwd $NEWPRIVPASS $NEWPRIVKEY $NEWUSER"
+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 .1.3.6.1.2.1.1.4.0 s received_inform_ap2"
+DELAY
+CHECKTRAPDORDIE "received_inform_ap2"
+
+## 3) persistency I: reconfigure (SIGHUP), re-test
+
+# reconfigure snmptrapd
+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 .1.3.6.1.2.1.1.4.0 s received_inform_ap3"
+DELAY
+CHECKTRAPDORDIE "received_inform_ap3"
+
+## stop daemons and finish
+STOPTRAPD
+STOPAGENT
+FINISHED
diff --git a/testing/fulltests/default/T049snmpv3inform_simple b/testing/fulltests/default/T049snmpv3inform_simple
new file mode 100644
index 0000000..99cb5eb
--- /dev/null
+++ b/testing/fulltests/default/T049snmpv3inform_simple
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+SKIPIFNOT NETSNMP_SECMOD_USM
+
+DEFSECURITYLEVEL=noAuthNoPriv
+
+HEADER "SNMPv3 informs (noAuthNoPriv) received and sent by tools"
+
+#
+# Begin test
+#
+
+CONFIGTRAPD createUser testuser
+CONFIGTRAPD authuser log testuser $DEFSECURITYLEVEL
+CONFIGTRAPD agentxsocket /dev/null
+
+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 .1.3.6.1.2.1.1.4.0 s received_inform_$DEFSECURITYLEVEL"
+
+STOPTRAPD
+
+CHECKTRAPD "received_inform_$DEFSECURITYLEVEL"
+
+FINISHED
diff --git a/testing/fulltests/default/T049snmpv3informauth_simple b/testing/fulltests/default/T049snmpv3informauth_simple
new file mode 100644
index 0000000..0f18577
--- /dev/null
+++ b/testing/fulltests/default/T049snmpv3informauth_simple
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+SKIPIFNOT NETSNMP_SECMOD_USM
+
+DEFSECURITYLEVEL=authNoPriv
+
+HEADER "SNMPv3 informs (authNoPriv) received and sent by tools"
+
+#
+# Begin test
+#
+
+. ./Sv3usmconfigtrapd
+CONFIGTRAPD authuser log $TESTAUTHUSER $DEFSECURITYLEVEL
+CONFIGTRAPD agentxsocket /dev/null
+
+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 .1.3.6.1.2.1.1.4.0 s received_inform_$DEFSECURITYLEVEL"
+
+STOPTRAPD
+
+CHECKTRAPD "received_inform_$DEFSECURITYLEVEL"
+
+FINISHED
diff --git a/testing/fulltests/default/T049snmpv3informpriv_simple b/testing/fulltests/default/T049snmpv3informpriv_simple
new file mode 100644
index 0000000..e8f47de
--- /dev/null
+++ b/testing/fulltests/default/T049snmpv3informpriv_simple
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+DEFSECURITYLEVEL=authPriv
+
+HEADER "SNMPv3 informs (authPriv) received and sent by tools"
+
+SKIPIFNOT NETSNMP_CAN_DO_CRYPTO
+SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
+
+#
+# Begin test
+#
+
+. ./Sv3usmconfigtrapd
+CONFIGTRAPD authuser log $TESTPRIVUSER $DEFSECURITYLEVEL
+CONFIGTRAPD agentxsocket /dev/null
+
+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 .1.3.6.1.2.1.1.4.0 s received_inform_$DEFSECURITYLEVEL"
+
+STOPTRAPD
+
+CHECKTRAPD "received_inform_$DEFSECURITYLEVEL"
+
+FINISHED
diff --git a/testing/fulltests/default/T050snmpv3trap_simple b/testing/fulltests/default/T050snmpv3trap_simple
new file mode 100644
index 0000000..2b7a4a8
--- /dev/null
+++ b/testing/fulltests/default/T050snmpv3trap_simple
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv3 traps received and sent by tools
+
+#SKIPIFNOT NETSNMP_USE_OPENSSL
+SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
+
+#
+# Begin test
+#
+
+CREATEUSERENGINEID=0x80001f88802b3d0e06bbdf4321
+. ./Sv3usmconfigtrapd
+CONFIGTRAPD authuser log $TESTNOAUTHUSER noAuthNoPriv
+CONFIGTRAPD authuser log $TESTAUTHUSER authNoPriv
+CONFIGTRAPD authuser log $TESTPRIVUSER authPriv
+CONFIGTRAPD agentxsocket /dev/null
+
+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 .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 .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 .1.3.6.1.2.1.1.4.0 s received_trap_ap"
+DELAY
+
+STOPTRAPD
+
+CHECKTRAPD "received_trap_nanp"
+CHECKTRAPD "received_trap_anp"
+CHECKTRAPD "received_trap_ap"
+
+FINISHED
diff --git a/testing/fulltests/default/T051snmpv2ctrap_simple b/testing/fulltests/default/T051snmpv2ctrap_simple
new file mode 100644
index 0000000..8e1be6b
--- /dev/null
+++ b/testing/fulltests/default/T051snmpv2ctrap_simple
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv2c traps received and sent by tools
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_MIBII_VACM_CONF_MODULE
+
+#
+# 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/fulltests/default/T052snmpv2cinform_simple b/testing/fulltests/default/T052snmpv2cinform_simple
new file mode 100644
index 0000000..4208df8
--- /dev/null
+++ b/testing/fulltests/default/T052snmpv2cinform_simple
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv2c informs received and sent by tools
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_MIBII_VACM_CONF_MODULE
+
+#
+# Begin test
+#
+
+CONFIGTRAPD authcommunity log testcommunity
+CONFIGTRAPD agentxsocket /dev/null
+
+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 .1.3.6.1.2.1.1.4.0 s blah"
+
+STOPTRAPD
+
+CHECKTRAPD "Received"
+
+FINISHED
diff --git a/testing/fulltests/default/T053agentv1trap_simple b/testing/fulltests/default/T053agentv1trap_simple
new file mode 100644
index 0000000..44b219e
--- /dev/null
+++ b/testing/fulltests/default/T053agentv1trap_simple
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER snmpv1 traps are sent by snmpd API
+
+SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE
+SKIPIFNOT HAVE_SIGHUP
+
+#
+# Begin test
+#
+
+# standard V1 configuration: testcomunnity
+. ./Sv3config
+CONFIGAGENT trapsink ${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${SNMP_SNMPTRAPD_PORT} public
+
+CONFIGTRAPD authcommunity log public
+CONFIGTRAPD agentxsocket /dev/null
+
+STARTTRAPD
+
+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 .1.3.6.1.4.1.2021.254.7.0 i 1"
+
+STOPAGENT
+
+STOPTRAPD
+
+CHECKTRAPD "Enterprise Specific Trap (99)"
+
+FINISHED
diff --git a/testing/fulltests/default/T054agentv2ctrap_simple b/testing/fulltests/default/T054agentv2ctrap_simple
new file mode 100644
index 0000000..f5b6904
--- /dev/null
+++ b/testing/fulltests/default/T054agentv2ctrap_simple
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER snmpv2c traps are sent by snmpd API
+
+SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE
+
+#
+# Begin test
+#
+
+# standard V1 configuration: testcommunity
+. ./Sv3config
+CONFIGAGENT trap2sink ${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${SNMP_SNMPTRAPD_PORT} public
+CONFIGTRAPD authcommunity log public
+CONFIGTRAPD agentxsocket /dev/null
+
+STARTTRAPD
+
+AGENT_FLAGS="$AGENT_FLAGS"
+STARTAGENT
+
+#DELAY
+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
+
+STOPTRAPD
+
+CHECKTRAPD "life the universe and everything"
+
+FINISHED
diff --git a/testing/fulltests/default/T055agentv1mintrap_simple b/testing/fulltests/default/T055agentv1mintrap_simple
new file mode 100644
index 0000000..4a1c0e1
--- /dev/null
+++ b/testing/fulltests/default/T055agentv1mintrap_simple
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER snmpv1 traps are sent by snmpd without notification mib support
+
+SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE
+
+#
+# Begin test
+#
+
+# standard V1 configuration: testcommunity
+. ./Sv3config
+CONFIGAGENT trapsink ${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${SNMP_SNMPTRAPD_PORT} public
+CONFIGTRAPD authcommunity log public
+CONFIGTRAPD agentxsocket /dev/null
+
+STARTTRAPD
+
+# initialize only the example mib, and not the notification mib stuff
+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 .1.3.6.1.4.1.2021.254.7.0 i 1"
+
+STOPAGENT
+
+STOPTRAPD
+
+CHECKTRAPD "Enterprise Specific Trap (99)"
+
+FINISHED
diff --git a/testing/fulltests/default/T056agentv2cmintrap_simple b/testing/fulltests/default/T056agentv2cmintrap_simple
new file mode 100644
index 0000000..73c7a23
--- /dev/null
+++ b/testing/fulltests/default/T056agentv2cmintrap_simple
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER snmpv2c traps are sent by snmpd without notification mib support
+
+SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE
+
+#
+# Begin test
+#
+
+# standard V1 configuration: testcommunity
+. ./Sv3config
+CONFIGAGENT trap2sink ${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${SNMP_SNMPTRAPD_PORT} public
+CONFIGTRAPD authcommunity log public
+CONFIGTRAPD agentxsocket /dev/null
+
+STARTTRAPD
+
+# initialize only the example mib, and not the notification mib stuff
+AGENT_FLAGS="$AGENT_FLAGS -Dexample,header_generic,add_trap,mib_init,callback -I example,usmUser,usmConf,vacm_vars"
+STARTAGENT
+
+#DELAY
+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
+
+STOPTRAPD
+
+CHECKTRAPD "life the universe and everything"
+
+FINISHED
diff --git a/testing/fulltests/default/T057trapdauthtest2_simple b/testing/fulltests/default/T057trapdauthtest2_simple
new file mode 100644
index 0000000..6a43989
--- /dev/null
+++ b/testing/fulltests/default/T057trapdauthtest2_simple
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+SKIPIFNOT NETSNMP_SECMOD_USM
+
+HEADER snmptrapd discards of unauthorized notification types 
+
+#
+# Begin test
+#
+
+CONFIGTRAPD createUser testuser
+CONFIGTRAPD authuser log testuser noAuthNoPriv .1.3.6.1.6.3.1.1.5.2
+CONFIGTRAPD agentxsocket /dev/null
+
+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 blah"
+
+STOPTRAPD
+
+CHECKTRAPDCOUNT 0 "coldStart"
+
+FINISHED
diff --git a/testing/fulltests/default/T057trapdauthtest3_simple b/testing/fulltests/default/T057trapdauthtest3_simple
new file mode 100644
index 0000000..078ef38
--- /dev/null
+++ b/testing/fulltests/default/T057trapdauthtest3_simple
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+SKIPIFNOT NETSNMP_SECMOD_USM
+
+HEADER snmptrapd discards of incorrect view types 
+
+#
+# Begin test
+#
+
+CONFIGTRAPD createUser testuser
+CONFIGTRAPD authuser execute testuser noAuthNoPriv
+CONFIGTRAPD agentxsocket /dev/null
+
+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 blah"
+
+STOPTRAPD
+
+CHECKTRAPDCOUNT 0 "coldStart"
+
+FINISHED
diff --git a/testing/fulltests/default/T057trapdauthtest_simple b/testing/fulltests/default/T057trapdauthtest_simple
new file mode 100644
index 0000000..4e2fc10
--- /dev/null
+++ b/testing/fulltests/default/T057trapdauthtest_simple
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+SKIPIFNOT NETSNMP_SECMOD_USM
+
+HEADER snmptrapd authorization failure of non authorized users
+
+#
+# Begin test
+#
+
+CONFIGTRAPD createUser testuser
+CONFIGTRAPD authuser log testuser noAuthNoPriv
+CONFIGTRAPD agentxsocket /dev/null
+
+STARTTRAPD
+
+CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -v 3 -u nottestuser -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 blah"
+
+STOPTRAPD
+
+CHECKTRAPDCOUNT 0 "coldStart"
+
+FINISHED
diff --git a/testing/fulltests/default/T058agentauthtrap_simple b/testing/fulltests/default/T058agentauthtrap_simple
new file mode 100644
index 0000000..aa63639
--- /dev/null
+++ b/testing/fulltests/default/T058agentauthtrap_simple
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER authentication failure traps are sent by snmpd
+
+SKIPIF NETSNMP_DISABLE_SNMPV1
+
+#
+# Begin test
+#
+
+# standard V1 configuration: testcommunity
+. ./Sv1config
+# add in a v1 trap sink
+CONFIGAGENT trapsink $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT public
+CONFIGAGENT authtrapenable 1
+CONFIGTRAPD authcommunity log public
+CONFIGTRAPD agentxsocket /dev/null
+
+STARTTRAPD
+
+STARTAGENT
+
+# give the agent more time to start up.  We only want to fire one
+# request (retries = 0) to make sure only one trap is sent.
+#DELAY
+CAPTURE "snmpget -On -r 0 -t 5 $SNMP_FLAGS -v 1 -c wrongcommunity $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+STOPAGENT
+
+STOPTRAPD
+
+CHECKTRAPD "Authentication Failure Trap"
+
+FINISHED
diff --git a/testing/fulltests/default/T059trapdtraphandle_simple b/testing/fulltests/default/T059trapdtraphandle_simple
new file mode 100755
index 0000000..53d5b90
--- /dev/null
+++ b/testing/fulltests/default/T059trapdtraphandle_simple
@@ -0,0 +1,71 @@
+#!/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
+SKIPIFNOT HAVE_SIGHUP
+
+#
+# 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/fulltests/default/T060trapdperl_simple b/testing/fulltests/default/T060trapdperl_simple
new file mode 100755
index 0000000..70decf4
--- /dev/null
+++ b/testing/fulltests/default/T060trapdperl_simple
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER 'snmptrapd embedded perl support (NetSNMP::TrapReceiver)'
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT NETSNMP_EMBEDDED_PERL
+SKIPIFNOT HAVE_SIGHUP
+SKIPIFNOT NETSNMP_SECMOD_USM
+
+#
+# Begin test
+#
+
+snmp_version=v2c
+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\\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\\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 $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 $VAROID s handled_trap2_$snmp_version"
+
+## stop
+STOPTRAPD
+
+
+CHECKORDIE "handled_by_embperl"       $EMBPERL_LOGFILE
+CHECKORDIE "handled_again_by_embperl" $EMBPERL_LOGFILE
+
+FINISHED
diff --git a/testing/fulltests/default/T061agentperl_simple b/testing/fulltests/default/T061agentperl_simple
new file mode 100755
index 0000000..c20a3ff
--- /dev/null
+++ b/testing/fulltests/default/T061agentperl_simple
@@ -0,0 +1,77 @@
+#!/bin/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
+SKIPIFNOT NETSNMP_SECMOD_USM
+
+#
+# Begin test
+#
+
+snmp_version=v2c
+TESTCOMMUNITY=testcommunity
+. ./Sv2cconfig
+
+TESTOID=.1.3.6.1.4.1.8872.9999.9999.1.0
+TESTOID2=.1.3.6.1.4.1.8872.9999.9999.2.0
+EMBPERL_AGENT=${SNMP_TMPDIR}/hello.pl
+cat >$EMBPERL_AGENT <<END
+#!/usr/bin/env perl
+# minimal embedded perl agent
+
+my \$regat = '.1.3.6.1.4.1.8872.9999.9999'; # netSnmpPlayPen
+my \$myoid = \$regat . ".1.0"; # the "hello world" OID
+my \$myoid2 = \$regat . ".2.0"; # the "hello again world" OID
+
+use NetSNMP::OID qw(:all);
+use NetSNMP::agent qw(:all);
+use NetSNMP::ASN qw(:all);
+use SNMP;
+
+my \$regoid = new NetSNMP::OID(\$regat);
+\$agent->register("hello", \$regoid, \&my_snmp_handler);
+
+sub my_snmp_handler {
+  my (\$handler, \$registration_info, \$request_info, \$requests) = @_;
+  for(my \$request = \$requests; \$request; \$request = \$request->next()) {
+    if (\$request_info->getMode() == MODE_GET) {
+      if (\$request->getOID() == new NetSNMP::OID(\$myoid)) {
+        \$request->setValue(ASN_OCTET_STR, "hello world");
+        last;
+      } elsif (\$request->getOID() == new NetSNMP::OID(\$myoid2)) {
+        \$request->setValue(ASN_OCTET_STR, "hello again world");
+        last;
+      }
+    }
+  }
+}
+END
+
+echo "use blib qw(${SNMP_UPDIR}/perl);" > ${SNMP_TMPDIR}/snmp_perl.pl
+echo 'use NetSNMP::agent;' >> ${SNMP_TMPDIR}/snmp_perl.pl
+echo '$agent = new NetSNMP::agent('"'dont_init_agent' => 1, 'dont_init_lib' => 1);" >> ${SNMP_TMPDIR}/snmp_perl.pl
+
+CONFIGAGENT perlInitFile ${SNMP_TMPDIR}/snmp_perl.pl
+CONFIGAGENT "perl do '$EMBPERL_AGENT';"
+CONFIGAGENT 'perl print STDERR "registered_perl_agent_ok";'
+
+STARTAGENT
+
+## 1) SNMP GET against embedded perl mib module
+CAPTURE "snmpget -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT $TESTOID"
+CHECK "hello world"
+
+## 2) persistency: reconfigure (HUP), re-test
+HUPAGENT
+CAPTURE "snmpget -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT $TESTOID2"
+CHECK "hello again world"
+
+## stop
+STOPAGENT
+
+FINISHED
diff --git a/testing/fulltests/default/T065agentextend_simple b/testing/fulltests/default/T065agentextend_simple
new file mode 100644
index 0000000..f419266
--- /dev/null
+++ b/testing/fulltests/default/T065agentextend_simple
@@ -0,0 +1,54 @@
+#!/bin/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 snmpget not compiled
+
+snmp_version=v2c
+TESTCOMMUNITY=testcommunity
+. ./Sv2cconfig
+
+#
+# Begin test
+#
+
+index='"hello"'
+if [ "x$OSTYPE" = "xmsys" ]; then
+    CONFIGAGENT extend hello $MSYS_SH -c "'" echo hello_world "'"
+else
+    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.$index"
+CHECKORDIE "STRING: hello_world"
+
+#NET-SNMP-EXTEND-MIB::nsExtendOutputFull."hello" = STRING: "hello_world"
+CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.8072.1.3.2.3.1.2.$index"
+CHECKORDIE "STRING: hello_world"
+
+#NET-SNMP-EXTEND-MIB::nsExtendOutLine."hello".1 = STRING: "hello_world"
+CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.8072.1.3.2.4.1.2.$index.1"
+CHECKORDIE "STRING: hello_world"
+
+#NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."hello" = INTEGER: 1
+CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.4.1.8072.1.3.2.3.1.3.$index"
+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.$index"
+CHECKORDIE "INTEGER: 0"
+
+STOPAGENT
+FINISHED
diff --git a/testing/fulltests/default/T066pass_simple b/testing/fulltests/default/T066pass_simple
new file mode 100644
index 0000000..bdee164
--- /dev/null
+++ b/testing/fulltests/default/T066pass_simple
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER "extending agent functionality with pass"
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_UCD_SNMP_PASS_MODULE
+SKIPIFNOT USING_UTILITIES_EXECUTE_MODULE
+
+# Don't run this test on MinGW - local/passtest is a shell script and
+# hence passing it to the MSVCRT popen() doesn't work.
+[ "x$OSTYPE" = "xmsys" ] && SKIP "MinGW"
+
+# make sure snmpget and snmpwalk can be executed
+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
+. ./Sv2cconfig
+
+#
+# Begin test
+#
+oid=.1.3.6.1.4.1.8072.2.255  # NET-SNMP-PASS-MIB::netSnmpPassExamples
+CONFIGAGENT pass $oid ${srcdir}/local/passtest
+
+ORIG_AGENT_FLAGS="$AGENT_FLAGS"
+AGENT_FLAGS="$ORIG_AGENT_FLAGS -Ducd-snmp/pass"
+STARTAGENT
+
+#COMMENT Check a full walk of the sample data
+CAPTURE "$SNMPWALK $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT $oid"
+CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassString.0 = STRING: Life, the Universe, and Everything"
+CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassInteger.1 = INTEGER: 42"
+CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassOID.1 = OID: NET-SNMP-PASS-MIB::netSnmpPassOIDValue"
+CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassTimeTicks.0 = Timeticks: (363136200) 42 days, 0:42:42.00 "
+CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassIpAddress.0 = IpAddress: 127.0.0.1"
+CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassCounter.0 = Counter32: 42"
+CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassGauge.0 = Gauge32: 42"
+
+#COMMENT A couple of spot checks of GET requests.
+CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT NET-SNMP-PASS-MIB::netSnmpPassInteger.1"
+CHECKORDIE "INTEGER: 42"
+
+CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT NET-SNMP-PASS-MIB::netSnmpPassCounter.0"
+CHECKORDIE "Counter32: 42"
+
+STOPAGENT
+FINISHED
diff --git a/testing/fulltests/default/T067passpersist_simple b/testing/fulltests/default/T067passpersist_simple
new file mode 100644
index 0000000..40f1333
--- /dev/null
+++ b/testing/fulltests/default/T067passpersist_simple
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER "extending agent functionality with pass_persist"
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_UCD_SNMP_PASS_PERSIST_MODULE
+
+# 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="${builddir}/apps/snmpget"
+[ -x "$SNMPGET" ] || SKIP snmpget not compiled
+SNMPWALK="${builddir}/apps/snmpwalk"
+[ -x "$SNMPWALK" ] || SKIP snmpwalk not compiled
+
+snmp_version=v2c
+TESTCOMMUNITY=testcommunity
+. ./Sv2cconfig
+
+#
+# Begin test
+#
+oid=.1.3.6.1.4.1.8072.2.255  # NET-SNMP-PASS-MIB::netSnmpPassExamples
+CONFIGAGENT pass_persist $oid ${srcdir}/local/pass_persisttest
+
+ORIG_AGENT_FLAGS="$AGENT_FLAGS"
+AGENT_FLAGS="$ORIG_AGENT_FLAGS -Ducd-snmp/pass_persist"
+PASS_PERSIST_PIDFILE="$SNMP_TMPDIR/pass_persist.pid.$$"
+export PASS_PERSIST_PIDFILE
+STARTAGENT
+
+#COMMENT Check a full walk of the sample data
+CAPTURE "$SNMPWALK $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT $oid"
+CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassString.0 = STRING: Life, the Universe, and Everything"
+CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassInteger.1 = INTEGER: 42"
+CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassOID.1 = OID: NET-SNMP-PASS-MIB::netSnmpPassOIDValue"
+CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassTimeTicks.0 = Timeticks: (363136200) 42 days, 0:42:42.00 "
+CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassIpAddress.0 = IpAddress: 127.0.0.1"
+CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassCounter.0 = Counter32: 1"
+CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassGauge.0 = Gauge32: 42"
+
+#COMMENT A couple of spot checks of GET requests.
+CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT NET-SNMP-PASS-MIB::netSnmpPassInteger.1"
+CHECKORDIE "INTEGER: 42"
+
+#COMMENT netSnmpPassCounter should increment, since this is pass_persist
+CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT NET-SNMP-PASS-MIB::netSnmpPassCounter.0"
+CHECKORDIE "Counter32: 2"
+
+#COMMENT now kill the pass_persist script, and check that it recovers.
+STOPPROG $PASS_PERSIST_PIDFILE
+#COMMENT netSnmpPassCounter should have reverted to 1, as this is a new instance.
+CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT NET-SNMP-PASS-MIB::netSnmpPassCounter.0"
+CHECKORDIE "Counter32: 1"
+
+STOPAGENT
+FINISHED
diff --git a/testing/fulltests/default/T068execfix_simple b/testing/fulltests/default/T068execfix_simple
new file mode 100644
index 0000000..fa81835
--- /dev/null
+++ b/testing/fulltests/default/T068execfix_simple
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER "execfix configuration directive"
+
+SKIPIFNOT USING_UCD_SNMP_EXTENSIBLE_MODULE
+SKIPIF NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF NETSNMP_NO_WRITE_SUPPORT
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+
+# make sure snmpset and snmpwalk can be executed
+SNMPSET="${builddir}/apps/snmpset"
+[ -x "$SNMPSET" ] || SKIP snmpset not compiled
+SNMPWALK="${builddir}/apps/snmpwalk"
+[ -x "$SNMPWALK" ] || SKIP snmpwalk not compiled
+
+snmp_version=v2c
+snmp_write_access='all'
+TESTCOMMUNITY=testcommunity
+. ./Sv2cconfig
+
+#
+# Begin test
+#
+if [ "x$OSTYPE" = xmsys ]; then
+    cmd1="true"
+    cmd2="false"
+    echo="echo"
+else
+    cmd1="$(which true)"
+    cmd2="$(which false)"
+    echo="$(which echo)"
+fi
+CONFIGAGENT exec    true-command    $cmd1
+CONFIGAGENT execfix true-command    $cmd1
+CONFIGAGENT exec    false-command   $cmd2
+CONFIGAGENT execfix false-command   $cmd2
+CONFIGAGENT exec    echo-%s-command ${echo} %s
+CONFIGAGENT execfix echo-%s-command ${echo} fix-%s
+
+STARTAGENT
+
+# Check a full walk of UCD-SNMP-MIB::extTable
+CAPTURE "$SNMPWALK $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT UCD-SNMP-MIB::extEntry"
+CHECK 'UCD-SNMP-MIB::extNames.1 = STRING: true-command$'
+CHECK 'UCD-SNMP-MIB::extCommand.1 = STRING: '"$cmd1"
+CHECK 'UCD-SNMP-MIB::extResult.1 = INTEGER: 0$'
+CHECK 'UCD-SNMP-MIB::extOutput.1 = STRING: $'
+CHECK 'UCD-SNMP-MIB::extErrFix.1 = INTEGER: noError(0)$'
+CHECK 'UCD-SNMP-MIB::extErrFixCmd.1 = STRING: '"$cmd1"
+CHECK 'UCD-SNMP-MIB::extNames.2 = STRING: false-command$'
+CHECK 'UCD-SNMP-MIB::extCommand.2 = STRING: '"$cmd2"'$'
+CHECK 'UCD-SNMP-MIB::extResult.2 = INTEGER: 1$'
+CHECK 'UCD-SNMP-MIB::extOutput.2 = STRING: $'
+CHECK 'UCD-SNMP-MIB::extErrFix.2 = INTEGER: noError(0)$'
+CHECK 'UCD-SNMP-MIB::extErrFixCmd.2 = STRING: '"$cmd2"'$'
+CHECK 'UCD-SNMP-MIB::extNames.3 = STRING: echo-%s-command$'
+CHECK 'UCD-SNMP-MIB::extCommand.3 = STRING: '"${echo}"' %s$'
+CHECK 'UCD-SNMP-MIB::extResult.3 = INTEGER: 0$'
+CHECK 'UCD-SNMP-MIB::extOutput.3 = STRING: %s$'
+CHECK 'UCD-SNMP-MIB::extErrFix.3 = INTEGER: noError(0)$'
+CHECK 'UCD-SNMP-MIB::extErrFixCmd.3 = STRING: '"${echo}"' fix-%s$'
+
+CAPTURE "$SNMPSET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY -r0 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT UCD-SNMP-MIB::extErrFix.3 i 1"
+CHECK 'UCD-SNMP-MIB::extErrFix.3 = INTEGER: runFix(1)'
+
+CAPTURE "$SNMPWALK $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT UCD-SNMP-MIB::extEntry"
+CHECK 'UCD-SNMP-MIB::extErrFixCmd.3 = STRING: '"${echo}"' fix-%s'
+
+STOPAGENT
+FINISHED
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/fulltests/default/T100agenthup_simple b/testing/fulltests/default/T100agenthup_simple
new file mode 100755
index 0000000..d4949e1
--- /dev/null
+++ b/testing/fulltests/default/T100agenthup_simple
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER that the agent responds properly to a kill -HUP
+
+SKIPIF NETSNMP_DISABLE_SNMPV1
+
+SKIPIFNOT HAVE_SIGHUP
+
+#
+# Begin test
+#
+
+# standard V1 configuration: testcomunnity
+. ./Sv1config
+
+STARTAGENT
+
+# add a agent configuration line that wouldn't have been there when
+# the started up.
+CONFIGAGENT syslocation not-anywhere-in-particular
+
+# kill -HUP the agent to get it to re-read the .conf file.
+DELAY
+kill -HUP `cat $SNMP_SNMPD_PID_FILE` > /dev/null 2>&1
+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 .1.3.6.1.2.1.1.6.0"
+
+STOPAGENT
+
+CHECK "not-anywhere-in-particular"
+
+FINISHED
diff --git a/testing/fulltests/default/T110agentxget_simple b/testing/fulltests/default/T110agentxget_simple
new file mode 100644
index 0000000..2f91d36
--- /dev/null
+++ b/testing/fulltests/default/T110agentxget_simple
@@ -0,0 +1,59 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER AgentX GET support
+
+SKIPIFNOT USING_AGENTX_MASTER_MODULE
+SKIPIFNOT USING_AGENTX_SUBAGENT_MODULE
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
+#
+# Begin test
+#
+
+# standard V3 configuration for initial user
+. ./Sv3config
+
+# Start the agent without initializing the system mib.
+if [ "x$SNMP_TRANSPORT_SPEC" = "xunix" ];then
+ORIG_AGENT_FLAGS="$AGENT_FLAGS -x $SNMP_TMPDIR/agentx_socket"
+else
+ORIG_AGENT_FLAGS="$AGENT_FLAGS -x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
+fi
+AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib,winExtDLL"
+STARTAGENT
+
+# test to see that the current agent doesn't support the system mib
+CAPTURE "snmpget -On $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+CHECK ".1.3.6.1.2.1.1.3.0 = No Such Object"
+
+if test "$snmp_last_test_result" = 1; then
+  # test the agentx subagent by first running it...
+
+  SNMP_SNMPD_PID_FILE_ORIG=$SNMP_SNMPD_PID_FILE
+  SNMP_SNMPD_LOG_FILE_ORIG=$SNMP_SNMPD_LOG_FILE
+  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE.num2
+  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE.num2
+  AGENT_FLAGS="$ORIG_AGENT_FLAGS -X -I system_mib"
+  SNMP_CONFIG_FILE="$SNMP_TMPDIR/bogus.conf"
+  STARTAGENT
+
+  # test to see that the agent now supports setting the system mib
+  CAPTURE "snmpget -On $SNMP_FLAGS -t 3 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+  CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+  # stop the subagent
+  STOPAGENT
+
+  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE_ORIG
+  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE_ORIG
+fi
+
+# stop the master agent
+STOPAGENT
+
+# all done (whew)
+FINISHED
diff --git a/testing/fulltests/default/T111agentxset_simple b/testing/fulltests/default/T111agentxset_simple
new file mode 100644
index 0000000..87939bd
--- /dev/null
+++ b/testing/fulltests/default/T111agentxset_simple
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER AgentX SET support
+
+SKIPIFNOT USING_AGENTX_MASTER_MODULE
+SKIPIFNOT USING_AGENTX_SUBAGENT_MODULE
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+SKIPIF    NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF    NETSNMP_NO_WRITE_SUPPORT
+
+#
+# Begin test
+#
+
+# standard V3 configuration for initial user
+. ./Sv3config
+
+# Start the agent without initializing the system mib.
+if [ "x$SNMP_TRANSPORT_SPEC" = "xunix" ];then
+ORIG_AGENT_FLAGS="$AGENT_FLAGS -x $SNMP_TMPDIR/agentx_socket"
+else
+ORIG_AGENT_FLAGS="$AGENT_FLAGS -x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
+fi
+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 .1.3.6.1.2.1.1.4.0"
+
+CHECK ".1.3.6.1.2.1.1.4.0 = No Such Object"
+
+if test "$snmp_last_test_result" = 1; then
+  # test the AgentX subagent by first running it...
+
+  SNMP_SNMPD_PID_FILE_ORIG=$SNMP_SNMPD_PID_FILE
+  SNMP_SNMPD_LOG_FILE_ORIG=$SNMP_SNMPD_LOG_FILE
+  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE.num2
+  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE.num2
+  AGENT_FLAGS="$ORIG_AGENT_FLAGS -X -I system_mib"
+  SNMP_CONFIG_FILE="$SNMP_TMPDIR/bogus.conf"
+  echo "psyscontact testcontact" >> $SNMP_CONFIG_FILE
+  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 .1.3.6.1.2.1.1.4.0"
+
+  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 .1.3.6.1.2.1.1.4.0 s 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 .1.3.6.1.2.1.1.4.0"
+	
+	CHECK ".1.3.6.1.2.1.1.4.0 = STRING: \"*newtestcontact"
+    fi
+  fi
+
+  # stop the subagent
+  STOPAGENT
+
+  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE_ORIG
+  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE_ORIG
+fi
+
+# stop the master agent
+STOPAGENT
+
+# all done (whew)
+FINISHED
diff --git a/testing/fulltests/default/T112agentxsetfail_simple b/testing/fulltests/default/T112agentxsetfail_simple
new file mode 100644
index 0000000..d610b41
--- /dev/null
+++ b/testing/fulltests/default/T112agentxsetfail_simple
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER AgentX illegal SET handling support
+
+SKIPIFNOT USING_AGENTX_MASTER_MODULE
+SKIPIFNOT USING_AGENTX_SUBAGENT_MODULE
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+SKIPIF    NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF    NETSNMP_NO_WRITE_SUPPORT
+
+#
+# Begin test
+#
+
+# standard V3 configuration for initial user
+. ./Sv3config
+
+# Start the agent without initializing the system mib.
+if [ "x$SNMP_TRANSPORT_SPEC" = "xunix" ];then
+ORIG_AGENT_FLAGS="$AGENT_FLAGS -x $SNMP_TMPDIR/agentx_socket"
+else
+ORIG_AGENT_FLAGS="$AGENT_FLAGS -x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
+fi
+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 .1.3.6.1.2.1.1.4.0"
+
+CHECK ".1.3.6.1.2.1.1.4.0 = No Such Object"
+
+if test "$snmp_last_test_result" = 1; then
+  # test the AgentX subagent by first running it...
+
+  SNMP_SNMPD_PID_FILE_ORIG=$SNMP_SNMPD_PID_FILE
+  SNMP_SNMPD_LOG_FILE_ORIG=$SNMP_SNMPD_LOG_FILE
+  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE.num2
+  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE.num2
+  AGENT_FLAGS="$ORIG_AGENT_FLAGS -X -I system_mib"
+  SNMP_CONFIG_FILE="$SNMP_TMPDIR/bogus.conf"
+  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 .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.
+  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 .1.3.6.1.2.1.1.4.0 i 4"
+
+    CHECK "wrongType"
+
+  fi
+
+  # stop the subagent
+  STOPAGENT
+
+  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE_ORIG
+  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE_ORIG
+fi
+
+# stop the master agent
+STOPAGENT
+
+# all done (whew)
+FINISHED
diff --git a/testing/fulltests/default/T113agentxtrap_simple b/testing/fulltests/default/T113agentxtrap_simple
new file mode 100644
index 0000000..4fa5e2f
--- /dev/null
+++ b/testing/fulltests/default/T113agentxtrap_simple
@@ -0,0 +1,79 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER AgentX trap sending support
+
+SKIPIFNOT USING_AGENTX_MASTER_MODULE
+SKIPIFNOT USING_AGENTX_SUBAGENT_MODULE
+SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE
+SKIPIFNOT NETSNMP_SECMOD_USM
+
+#
+# Begin test
+#
+
+# start the trap demon
+CONFIGTRAPD authcommunity log public
+STARTTRAPD
+
+# standard V3 configuration for initial user
+. ./Sv3config
+# configure the trap receiver.
+CONFIGAGENT trapsink ${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${SNMP_SNMPTRAPD_PORT} public
+
+# Start the agent without initializing the example mib.
+if [ "x$SNMP_TRANSPORT_SPEC" = "xunix" ];then
+ORIG_AGENT_FLAGS="$AGENT_FLAGS -x $SNMP_TMPDIR/agentx_socket"
+else
+ORIG_AGENT_FLAGS="$AGENT_FLAGS -x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
+fi
+AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -example"
+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 .1.3.6.1.4.1.2021.254.1.0"
+
+CHECK "No Such Object"
+
+if test "$snmp_last_test_result" = 1; then
+  # test the AgentX subagent by first running it...
+
+  SNMP_SNMPD_PID_FILE_ORIG=$SNMP_SNMPD_PID_FILE
+  SNMP_SNMPD_LOG_FILE_ORIG=$SNMP_SNMPD_LOG_FILE
+  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE.num2
+  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE.num2
+  AGENT_FLAGS="$ORIG_AGENT_FLAGS -X -I example -Dadd"
+  SNMP_CONFIG_FILE="$SNMP_TMPDIR/bogus.conf"
+
+  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 .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 .1.3.6.1.4.1.2021.254.8.0 i 1"
+    DELAY
+    CHECKTRAPD "life the universe and everything"
+
+  fi
+
+  # stop the subagent
+  STOPAGENT
+
+  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE_ORIG
+  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE_ORIG
+fi
+
+# stop the master agent
+STOPAGENT
+
+# stop the trap demon
+STOPTRAPD
+
+# all done (whew)
+FINISHED
diff --git a/testing/fulltests/default/T114agentxagentxtrap_simple b/testing/fulltests/default/T114agentxagentxtrap_simple
new file mode 100644
index 0000000..58475d0
--- /dev/null
+++ b/testing/fulltests/default/T114agentxagentxtrap_simple
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER AgentX trap sending support using agentxtrap
+
+SKIPIFNOT USING_AGENTX_MASTER_MODULE
+SKIPIFNOT NETSNMP_SECMOD_USM
+
+#
+# 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 "= STRING: \"*mostly_harmless\"*"
+
+# all done (whew)
+FINISHED
diff --git a/testing/fulltests/default/T115agentxperl_simple b/testing/fulltests/default/T115agentxperl_simple
new file mode 100755
index 0000000..bdf6471
--- /dev/null
+++ b/testing/fulltests/default/T115agentxperl_simple
@@ -0,0 +1,115 @@
+#!/bin/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 Not --with-perl-modules
+
+#
+# Begin test
+#
+
+snmp_version=v2c
+TESTCOMMUNITY=testcommunity
+. ./Sv2cconfig
+
+TESTOID=.1.3.6.1.4.1.8872.9999.9999.1.0
+TESTOID2=.1.3.6.1.4.1.8872.9999.9999.2.0
+AGENTX_SOCKET=${SNMP_TMPDIR}/agentx_socket
+PERL_SUBAGENT=${SNMP_TMPDIR}/hello.pl
+PERL_SUBAGENT_CONF=${SNMP_TMPDIR}/hello.conf
+
+cat >$PERL_SUBAGENT <<END
+#!${SNMP_PERLPROG}
+# minimal AgentX subagent in Perl
+
+use blib qw(${SNMP_UPDIR}/perl);
+use NetSNMP::OID qw(:all);
+use NetSNMP::agent qw(:all);
+use NetSNMP::ASN qw(:all);
+use NetSNMP::agent::default_store;
+use NetSNMP::default_store qw(:all);
+use SNMP;
+
+## double-fork daemon
+my \$pid;
+unless (\$pid = fork) {
+  unless (fork) {
+    ## start main code
+    my \$regat = '.1.3.6.1.4.1.8872.9999.9999'; # netSnmpPlayPen
+    my \$myoid = \$regat . ".1.0"; # the "hello world" OID
+    my \$myoid2 = \$regat . ".2.0"; # the "hello again world" OID
+
+    my \$pidfile = shift; # take PID file as first argument 
+    open(PIDFILE, ">\$pidfile") or die "Couldn't open \$pidfile";
+    print PIDFILE \$\$;
+    close(PIDFILE);
+
+sub my_snmp_handler {
+  my (\$handler, \$registration_info, \$request_info, \$requests) = @_;
+  for(my \$request = \$requests; \$request; \$request = \$request->next()) {
+    if (\$request_info->getMode() == MODE_GET) {
+      if (\$request->getOID() == new NetSNMP::OID(\$myoid)) {
+        \$request->setValue(ASN_OCTET_STR, "hello world");
+        last;
+      } elsif (\$request->getOID() == new NetSNMP::OID(\$myoid2)) {
+        \$request->setValue(ASN_OCTET_STR, "hello again world");
+        last;
+      }
+    }
+  }
+}
+sub shut_it_down { \$running = 0; }
+
+    netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
+                           NETSNMP_DS_AGENT_NO_ROOT_ACCESS, 1);
+    my \$agent = new NetSNMP::agent('Name' => 'hello', 'AgentX' => 1);
+    my \$regoid = new NetSNMP::OID(\$regat);
+    \$agent->register("hello", \$regoid, \&my_snmp_handler);
+
+    \$SIG{'INT'} = \&shut_it_down;
+    \$SIG{'QUIT'} = \&shut_it_down;
+    \$running = 1;
+    while(\$running) {
+      \$agent->agent_check_and_process(1);
+    }
+    \$agent->shutdown();
+    ## end main code
+    exit 0;
+  }
+  exit 0;
+}
+waitpid(\$pid, 0);
+END
+
+echo "agentxsocket $AGENTX_SOCKET" > $PERL_SUBAGENT_CONF
+
+CONFIGAGENT master agentx
+CONFIGAGENT agentxsocket $AGENTX_SOCKET
+
+STARTAGENT
+
+# 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
+
+## 1) SNMP GET against mib object implemented by the perl subagent
+CAPTURE "snmpget -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT $TESTOID"
+CHECK "hello world"
+
+## 2) persistency: reconfigure master agent (HUP), re-test
+HUPAGENT
+CAPTURE "snmpget -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT $TESTOID2"
+CHECK "hello again world"
+
+## stop
+STOPAGENT
+STOPPROG $SNMP_AGENTX_PID_FILE
+
+FINISHED
diff --git a/testing/fulltests/default/T120proxyget_simple b/testing/fulltests/default/T120proxyget_simple
new file mode 100644
index 0000000..16e9478
--- /dev/null
+++ b/testing/fulltests/default/T120proxyget_simple
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER Proxy GET support
+
+SKIPIFNOT USING_UCD_SNMP_PROXY_MODULE
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+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 Test does not support TCP
+
+#
+# Begin test
+#
+
+# 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} .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,winExtDLL -Dproxy"
+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 .1.3.6.1.2.1.1.3.0"
+
+#CHECK ".1.3.6.1.2.1.1.3.0 = No Such Object"
+
+#if test "$snmp_last_test_result" = 1; then
+  # test the proxy subagent by first running it...
+
+  SNMP_SNMPD_PID_FILE_ORIG=$SNMP_SNMPD_PID_FILE
+  SNMP_SNMPD_LOG_FILE_ORIG=$SNMP_SNMPD_LOG_FILE
+  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE.num2
+  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE.num2
+  SNMP_CONFIG_FILE="$SNMP_TMPDIR/proxy.conf"
+  echo "rwcommunity testcommunity" >> $SNMP_CONFIG_FILE
+  if [ "$SNMP_TRANSPORT_SPEC" = "udp6" -o "$SNMP_TRANSPORT_SPEC" = "tcp6" ];then
+    echo "rwcommunity6 testcommunity" >> $SNMP_CONFIG_FILE
+  fi
+  AGENT_FLAGS=$ORIG_AGENT_FLAGS
+  ORIG_SNMP_SNMPD_PORT=$SNMP_SNMPD_PORT
+  SNMP_SNMPD_PORT="${SNMP_AGENTX_PORT}"
+  STARTAGENT
+  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 .1.3.6.1.2.1.1.3.0"
+
+  CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
+
+  # stop the subagent
+  STOPAGENT
+
+  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE_ORIG
+  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE_ORIG
+#fi
+
+# stop the master agent
+STOPAGENT
+
+# all done (whew)
+FINISHED
diff --git a/testing/fulltests/default/T121proxyset_simple b/testing/fulltests/default/T121proxyset_simple
new file mode 100644
index 0000000..dd19641
--- /dev/null
+++ b/testing/fulltests/default/T121proxyset_simple
@@ -0,0 +1,86 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER Proxy SET support
+
+SKIPIFNOT USING_UCD_SNMP_PROXY_MODULE
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+SKIPIF    NETSNMP_DISABLE_SNMPV2C
+SKIPIF    NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF    NETSNMP_NO_WRITE_SUPPORT
+
+# XXX: ucd-snmp/proxy doesn't properly support TCP -- remove this once it does
+[ "x$SNMP_TRANSPORT_SPEC" = "xtcp" -o "x$SNMP_TRANSPORT_SPEC" = "xtcp6" ] && SKIP Test does not support TCP
+
+#
+# Begin test
+#
+
+# 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} .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,winExtDLL -Dproxy"
+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 .1.3.6.1.2.1.1.3.0"
+
+#CHECK ".1.3.6.1.2.1.1.3.0 = No Such Object"
+
+#if test "$snmp_last_test_result" = 1; then
+  # test the proxy subagent by first running it...
+
+  SNMP_SNMPD_PID_FILE_ORIG=$SNMP_SNMPD_PID_FILE
+  SNMP_SNMPD_LOG_FILE_ORIG=$SNMP_SNMPD_LOG_FILE
+  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE.num2
+  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE.num2
+  SNMP_CONFIG_FILE="$SNMP_TMPDIR/proxy.conf"
+  echo "rwcommunity testcommunity" >> $SNMP_CONFIG_FILE
+  if [ "$SNMP_TRANSPORT_SPEC" = "udp6" -o "$SNMP_TRANSPORT_SPEC" = "tcp6" ];then
+    echo "rwcommunity6 testcommunity" >> $SNMP_CONFIG_FILE
+  fi
+  echo "psyscontact testcontact" >> $SNMP_CONFIG_FILE
+  AGENT_FLAGS="$ORIG_AGENT_FLAGS -Dmib_init"
+  ORIG_SNMP_SNMPD_PORT=$SNMP_SNMPD_PORT
+  SNMP_SNMPD_PORT="${SNMP_AGENTX_PORT}"
+  STARTAGENT
+  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 .1.3.6.1.2.1.1.4.0"
+
+  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 .1.3.6.1.2.1.1.4.0 s testnewcontact"
+
+    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 .1.3.6.1.2.1.1.4.0"
+	
+	CHECK ".1.3.6.1.2.1.1.4.0 = STRING: \"*testnewcontact"
+    fi
+  fi
+
+  # stop the subagent
+  STOPAGENT
+
+  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE_ORIG
+  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE_ORIG
+#fi
+
+# stop the master agent
+STOPAGENT
+
+# all done (whew)
+FINISHED
diff --git a/testing/fulltests/default/T122proxysetfail_simple b/testing/fulltests/default/T122proxysetfail_simple
new file mode 100644
index 0000000..7f27873
--- /dev/null
+++ b/testing/fulltests/default/T122proxysetfail_simple
@@ -0,0 +1,86 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER Proxy illegal SET handling support
+
+SKIPIFNOT USING_UCD_SNMP_PROXY_MODULE
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+SKIPIF    NETSNMP_DISABLE_SNMPV2C
+SKIPIF    NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF    NETSNMP_NO_WRITE_SUPPORT
+
+# XXX: ucd-snmp/proxy doesn't properly support TCP -- remove this once it does
+[ "x$SNMP_TRANSPORT_SPEC" = "xtcp" ] && SKIP Test does not support TCP
+
+#
+# Begin test
+#
+
+# 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} .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,winExtDLL -Dproxy"
+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 .1.3.6.1.2.1.1.3.0"
+
+#CHECK ".1.3.6.1.2.1.1.3.0 = No Such Object"
+
+#if test "$snmp_last_test_result" = 1; then
+  # test the proxy subagent by first running it...
+
+  SNMP_SNMPD_PID_FILE_ORIG=$SNMP_SNMPD_PID_FILE
+  SNMP_SNMPD_LOG_FILE_ORIG=$SNMP_SNMPD_LOG_FILE
+  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE.num2
+  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE.num2
+  SNMP_CONFIG_FILE="$SNMP_TMPDIR/proxy.conf"
+  echo "rwcommunity testcommunity" >> $SNMP_CONFIG_FILE
+  if [ "$SNMP_TRANSPORT_SPEC" = "udp6" -o "$SNMP_TRANSPORT_SPEC" = "tcp6" ];then
+    echo "rwcommunity6 testcommunity" >> $SNMP_CONFIG_FILE
+  fi
+#  echo "syscontact testcontact" >> $SNMP_CONFIG_FILE
+  AGENT_FLAGS="$ORIG_AGENT_FLAGS -Dmib_init"
+  ORIG_SNMP_SNMPD_PORT=$SNMP_SNMPD_PORT
+  SNMP_SNMPD_PORT="${SNMP_AGENTX_PORT}"
+  STARTAGENT
+  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 .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.
+  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 .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"
+    # 5.1.x snmpset shows error on multiple lines
+    CHECK "Reason: wrongType"
+    CHECK "Failed object: .1.3.6.1.2.1.1.4.0"
+
+  fi
+
+  # stop the subagent
+  STOPAGENT
+
+  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE_ORIG
+  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE_ORIG
+#fi
+
+# stop the master agent
+STOPAGENT
+
+# all done (whew)
+FINISHED
diff --git a/testing/fulltests/default/T130snmpv1vacmget_simple b/testing/fulltests/default/T130snmpv1vacmget_simple
new file mode 100644
index 0000000..80623f4
--- /dev/null
+++ b/testing/fulltests/default/T130snmpv1vacmget_simple
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv1 vacm acceptance support
+SKIPIF NETSNMP_DISABLE_SNMPV1
+
+#
+# Begin test
+#
+
+# standard V1 configuration: testcommunity1 testcommunity2
+# testcommunity1 can access .1.3.6.1.2.1.1.1, others are denied
+# testcommunity2 can access all except .1.3.6.1.2.1.1.1
+# This case test for successful access
+snmp_version=v1
+. ./Svacmconfig
+
+AGENT_FLAGS="$AGENT_FLAGS -I-winExtDLL"
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity1 -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.1.0" 
+
+CHECKORDIE ".1.3.6.1.2.1.1.1.0 = STRING:"
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity2 -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .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/fulltests/default/T131snmpv2cvacmget_simple b/testing/fulltests/default/T131snmpv2cvacmget_simple
new file mode 100644
index 0000000..4f72370
--- /dev/null
+++ b/testing/fulltests/default/T131snmpv2cvacmget_simple
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv2 vacm acceptance support
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+
+#
+# Begin test
+#
+
+
+# standard V1 configuration: testcommunity1 testcommunity2
+# testcommunity1 can access .1.3.6.1.2.1.1.1, others are denied
+# testcommunity2 can access all except .1.3.6.1.2.1.1.1
+# This case test for successful access
+
+snmp_version=v2c
+. ./Svacmconfig
+
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity1 -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.1.0" 
+
+CHECKORDIE ".1.3.6.1.2.1.1.1.0 = STRING:"
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity2 -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .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/fulltests/default/T132snmpv3vacmget_simple b/testing/fulltests/default/T132snmpv3vacmget_simple
new file mode 100644
index 0000000..004d0dd
--- /dev/null
+++ b/testing/fulltests/default/T132snmpv3vacmget_simple
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv3 vacm acceptance support
+
+#
+# Begin test
+#
+
+# Configuration:
+#initial1 can access .1.3.6.1.2.1.1.1, deny others
+#initial2 can access all except .1.3.6.1.2.1.1.1 
+#This case test for successful access
+
+snmp_version=v3
+. ./Sv3vacmconfig
+
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS -v3 -a MD5 -A initial_test_pass_auth -u initial1 -l anp $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.1.0" 
+
+CHECKORDIE ".1.3.6.1.2.1.1.1.0 = STRING:"
+
+CAPTURE "snmpget -On $SNMP_FLAGS -v3 -a MD5 -A initial_test_pass_auth -u initial2 -l anp $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .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/fulltests/default/T140snmpv1vacmgetfail_simple b/testing/fulltests/default/T140snmpv1vacmgetfail_simple
new file mode 100644
index 0000000..a47f94d
--- /dev/null
+++ b/testing/fulltests/default/T140snmpv1vacmgetfail_simple
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv1 vacm denial support
+
+SKIPIF NETSNMP_DISABLE_SNMPV1
+
+#
+# Begin test
+#
+
+# standard V1 configuration: testcommunity1 testcommunity2
+# testcommunity1 can access .1.3.6.1.2.1.1.1, others are denied
+# testcommunity2 can access all except .1.3.6.1.2.1.1.1
+# This case test for denied access
+
+snmp_version=v1
+. ./Svacmconfig
+
+STARTAGENT
+
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity1 -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+
+CHECKORDIE "Reason: (noSuchName) There is no such variable name in this MIB."
+
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity2 -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.1.0"
+
+CHECKORDIE "Reason: (noSuchName) There is no such variable name in this MIB."
+
+STOPAGENT
+
+FINISHED
diff --git a/testing/fulltests/default/T141snmpv2cvacmgetfail_simple b/testing/fulltests/default/T141snmpv2cvacmgetfail_simple
new file mode 100644
index 0000000..cd362aa
--- /dev/null
+++ b/testing/fulltests/default/T141snmpv2cvacmgetfail_simple
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv2 vacm denial support
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIF NETSNMP_DISABLE_SET_SUPPORT
+SKIPIF NETSNMP_NO_WRITE_SUPPORT
+SKIPIFNOT USING_MIBII_VACM_CONF_MODULE
+
+#
+# Begin test
+#
+
+
+# standard V1 configuration: testcommunity1 testcommunity2
+# testcommunity1 can access .1.3.6.1.2.1.1.1, others are denied
+# testcommunity2 can access all except .1.3.6.1.2.1.1.1
+# This case test for denied access
+
+snmp_version=v2c
+. ./Svacmconfig
+
+STARTAGENT
+
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity1 -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
+CHECKORDIE ".1.3.6.1.2.1.1.3.0 = No Such Object available on this agent at this OID"
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity2 -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.1.0"
+CHECKORDIE ".1.3.6.1.2.1.1.1.0 = No Such Object available on this agent at this OID"
+
+CAPTURE "snmpset -On $SNMP_FLAGS -c testcommunity1 -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"
+
+CAPTURE "snmpset -On $SNMP_FLAGS -c testcommunity2 -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"
+
+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"
+
+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"
+
+STOPAGENT
+
+FINISHED
diff --git a/testing/fulltests/default/T142snmpv3vacmgetfail_simple b/testing/fulltests/default/T142snmpv3vacmgetfail_simple
new file mode 100644
index 0000000..cfc000b
--- /dev/null
+++ b/testing/fulltests/default/T142snmpv3vacmgetfail_simple
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv3 vacm denial support
+
+#
+# Begin test
+#
+
+# Configuration:
+#initial1 can access .1.3.6.1.2.1.1.1, deny others
+#initial2 can access all except .1.3.6.1.2.1.1.1 
+#This case test for denied access
+
+snmp_version=v3
+. ./Sv3vacmconfig
+
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS -v3 -a MD5 -A initial_test_pass_auth -u initial1 -l anp $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0" 
+
+CHECKORDIE ".1.3.6.1.2.1.1.3.0 = No Such Object available on this agent at this OID"
+
+
+CAPTURE "snmpget -On $SNMP_FLAGS -v3 -a MD5 -A initial_test_pass_auth -u initial2 -l anp $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.1.0" 
+
+CHECKORDIE ".1.3.6.1.2.1.1.1.0 = No Such Object available on this agent at this OID"
+
+STOPAGENT
+
+FINISHED
diff --git a/testing/fulltests/default/T150solarishostcpu_simple b/testing/fulltests/default/T150solarishostcpu_simple
new file mode 100644
index 0000000..4a3ee6a
--- /dev/null
+++ b/testing/fulltests/default/T150solarishostcpu_simple
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER 1st CPU on Solaris using HOST-RESOURCES
+
+if test "x`uname -s`" != "xSunOS" ; then
+    SKIP "not running solaris"
+fi
+
+SKIPIF NETSNMP_DISABLE_SNMPV1
+SKIPIFNOT USING_HOST_HR_DEVICE_MODULE
+
+#
+# Begin test
+#
+
+# standard V1 configuration: testcommunity
+. ./Sv1config
+
+STARTAGENT
+
+# ask for the description of the first CPU in the system
+
+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 '
+
+STOPAGENT
+  
+FINISHED
diff --git a/testing/fulltests/default/T151solarishostdisk_simple b/testing/fulltests/default/T151solarishostdisk_simple
new file mode 100644
index 0000000..77a117f
--- /dev/null
+++ b/testing/fulltests/default/T151solarishostdisk_simple
@@ -0,0 +1,31 @@
+#!/bin/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
+    SKIP  "not running solaris"
+fi
+
+SKIPIFNOT USING_HOST_HR_SYSTEM_MODULE
+SKIPIF NETSNMP_DISABLE_SNMPV1
+
+#
+# Begin test
+#
+
+# standard V1 configuration: testcommunity
+. ./Sv1config
+
+STARTAGENT
+
+# ask for the index of the initial device (hrSystemInitialLoadDevice.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.25.1.3.0"
+
+STOPAGENT
+
+CHECKORDIE "^.1.3.6.1.2.1.25.1.3.0 = INTEGER:"
+
+FINISHED
diff --git a/testing/fulltests/default/T152hostuptime_simple b/testing/fulltests/default/T152hostuptime_simple
new file mode 100644
index 0000000..4d62b35
--- /dev/null
+++ b/testing/fulltests/default/T152hostuptime_simple
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER uptime using HOST-RESOURCES
+
+SKIPIFNOT USING_HOST_HR_SYSTEM_MODULE
+
+SKIPIF NETSNMP_DISABLE_SNMPV1
+
+#
+# Begin test
+#
+
+# standard V1 configuration: testcommunity
+. ./Sv1config
+
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.25.1.1.0"
+
+STOPAGENT
+    
+CHECKORDIE "^.1.3.6.1.2.1.25.1.1.0 = Timeticks:"
+
+FINISHED
+
diff --git a/testing/fulltests/default/T153solarisswap_simple b/testing/fulltests/default/T153solarisswap_simple
new file mode 100644
index 0000000..055dd45
--- /dev/null
+++ b/testing/fulltests/default/T153solarisswap_simple
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER swap on Solaris using HOST-RESOURCES
+
+if test `uname -s` != "SunOS" ; then
+    SKIP "not running solaris"
+fi
+
+ISDEFINED USING_HOST_HR_STORAGE_MODULE || ISDEFINED USING_HOST_HRH_STORAGE_MODULE || SKIP "Not using hrStorage"
+
+SKIPIF NETSNMP_DISABLE_SNMPV1
+
+#
+# Begin test
+#
+
+# standard V1 configuration: testcommunity
+. ./Sv1config
+
+STARTAGENT
+
+# ask for hrStorageSize.10 which reports overall swap size
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.25.2.3.1.5.10"
+
+STOPAGENT
+
+CHECKORDIE "^.1.3.6.1.2.1.25.2.3.1.5.10 = INTEGER:"
+
+FINISHED
diff --git a/testing/fulltests/default/T154dismanpingmib_simple b/testing/fulltests/default/T154dismanpingmib_simple
new file mode 100644
index 0000000..45cffe0
--- /dev/null
+++ b/testing/fulltests/default/T154dismanpingmib_simple
@@ -0,0 +1,116 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER DISMAN PING MIB
+
+[ "$UID" = 0 ] || SKIP "Not permitted to create raw sockets"
+SKIPIFNOT USING_DISMAN_PING_MIB_MODULE
+SKIPIF NETSNMP_DISABLE_SNMPV1
+
+# SNMPv2-TC
+active=1
+createAndWait=5
+destroy=6
+# DISMAN-PING-MIB
+DISMAN_PING_MIB=.1.3.6.1.2.1.80.1
+pingCtlEntry=${DISMAN_PING_MIB}.2.1
+pingCtlTargetAddressType=${pingCtlEntry}.3
+pingCtlTargetAddresTypeIpv4=1
+pingCtlTargetAddress=${pingCtlEntry}.4
+pingCtlProbeCount=${pingCtlEntry}.7
+pingCtlAdminStatus=${pingCtlEntry}.8
+pingCtlAdminStatusEnabled=1
+pingCtlFrequency=${pingCtlEntry}.10
+pingCtlDescr=${pingCtlEntry}.17
+pingCtlRowStatus=${pingCtlEntry}.23
+pingResultsEntry=${DISMAN_PING_MIB}.3.1
+pingResultsProbeResponses=${pingResultsEntry}.7
+pingResultsSentProbes=${pingResultsEntry}.8
+# Test configuration
+TARGET_ADDRESS=127.0.0.1
+IDXPFX=8.78.101.116.45.83.78.77.80.6.84.49.53.52 # "Net-SNMP"."T154"
+IDXS="${IDXPFX}.95.49 ${IDXPFX}.95.50 ${IDXPFX}.95.51"
+PROBE_COUNT=5
+
+
+#
+# Begin test
+#
+
+# standard V1 configuration: testcommunity
+snmp_write_access='all'
+. ./Sv1config
+
+STARTAGENT
+
+for IDX in $IDXS; do
+
+CAPTURE "snmpset -One $SNMP_FLAGS -c testcommunity -v1          \
+         $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT   \
+         $pingCtlRowStatus.$IDX i $destroy"
+
+CHECK "^$pingCtlRowStatus.$IDX = INTEGER: $destroy"
+
+CAPTURE "snmpset -One $SNMP_FLAGS -c testcommunity -v1          \
+         $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT   \
+         $pingCtlRowStatus.$IDX i $createAndWait"
+
+CHECK "^$pingCtlRowStatus.$IDX = INTEGER: $createAndWait"
+
+CAPTURE "snmpset -One $SNMP_FLAGS -c testcommunity -v1                   \
+         $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT           \
+         $pingCtlTargetAddressType.$IDX i $pingCtlTargetAddresTypeIpv4  \
+         $pingCtlTargetAddress.$IDX s $TARGET_ADDRESS                   \
+         $pingCtlFrequency.$IDX u 1                                     \
+         $pingCtlDescr.$IDX s ScriptGenerated                           \
+         $pingCtlProbeCount.$IDX u ${PROBE_COUNT}                       \
+         $pingCtlAdminStatus.$IDX i $pingCtlAdminStatusEnabled"
+
+CHECK "^$pingCtlAdminStatus.$IDX = INTEGER: $pingCtlAdminStatusEnabled"
+
+CAPTURE "snmpset -One $SNMP_FLAGS -c testcommunity -v1          \
+         $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT   \
+         $pingCtlRowStatus.$IDX i $active"
+
+CHECK "^$pingCtlRowStatus.$IDX = INTEGER: $active"
+
+done
+
+sleep ${PROBE_COUNT}
+sleep 2
+
+for IDX in $IDXS; do
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v1           \
+         $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT   \
+         $pingResultsSentProbes.$IDX"
+
+CHECK "^$pingResultsSentProbes.$IDX = Gauge32: ${PROBE_COUNT}"
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v1           \
+         $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT   \
+         $pingResultsProbeResponses.$IDX"
+
+CHECK "^$pingResultsProbeResponses.$IDX = Gauge32: ${PROBE_COUNT}"
+
+done
+
+# Delete first row and leave the remaining rows in the table.
+
+for IDX in $IDXS; do
+
+CAPTURE "snmpset -One $SNMP_FLAGS -c testcommunity -v1          \
+         $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT   \
+         $pingCtlRowStatus.$IDX i $destroy"
+
+CHECK "^$pingCtlRowStatus.$IDX = INTEGER: $destroy"
+
+break
+
+done
+
+STOPAGENT
+
+
+FINISHED
diff --git a/testing/fulltests/default/T160snmpnetstat_simple b/testing/fulltests/default/T160snmpnetstat_simple
new file mode 100644
index 0000000..e20bbbd
--- /dev/null
+++ b/testing/fulltests/default/T160snmpnetstat_simple
@@ -0,0 +1,55 @@
+#!/bin/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
+  proto=udp
+  HEADER "if snmpnetstat finds the running agent in udpTable"
+  SKIPIFNOT USING_MIBII_UDPTABLE_MODULE
+elif [ "x$SNMP_TRANSPORT_SPEC" = "xtcp" ]; then
+  proto=tcp
+  HEADER "if snmpnetstat finds the running agent in tcpTable"
+  SKIPIFNOT USING_MIBII_TCPTABLE_MODULE
+else
+  HEADER "if snmpnetstat finds the running agent in udpTable/tcpTable"
+  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 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 snmpnetstat not compiled
+
+snmp_version=v2c
+. ./Sv2cconfig
+
+#
+# Begin test
+#
+
+STARTAGENT
+
+CAPTURE "$SNMPNETSTAT -Cn -Cp $proto -$snmp_version -c testcommunity $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT"
+CHECKEXACT "127.0.0.1.$SNMP_SNMPD_PORT"
+# multiple occurrences (especially in tcpTable) are fine
+if [ "$snmp_last_test_result" != 0 ] ; then
+    return_value=0
+else
+    return_value=1
+fi
+
+STOPAGENT
+FINISHED
diff --git a/testing/fulltests/default/T161snmpTargetAddr_simple b/testing/fulltests/default/T161snmpTargetAddr_simple
new file mode 100644
index 0000000..00e094e
--- /dev/null
+++ b/testing/fulltests/default/T161snmpTargetAddr_simple
@@ -0,0 +1,142 @@
+#!/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 'B\0A'
+CAPTURE "snmpset -On -Oe $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.9.66.0.65 i 5"
+
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.9.66.0.65 = INTEGER: 5"
+
+# Check that the table contains the 'B\0A' entry and no other
+CAPTURE "snmpwalk -On -Oe $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.9"
+
+CHECK "^.1.3.6.1.6.3.12.1.2.1.9"
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.9.66.0.65 ="
+
+# Delete an entry with index 'B\0A'
+CAPTURE "snmpset -On -Oe $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.9.66.0.65 i 6"
+
+# Create an entry with index 'A'
+CAPTURE "snmpset -On -Oe $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.6.3.12.1.2.1.9.65 i 5"
+
+CHECKORDIE ".1.3.6.1.6.3.12.1.2.1.9.65 = INTEGER: 5"
+
+# 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/fulltests/default/T200snmpv2cwalkall_simple b/testing/fulltests/default/T200snmpv2cwalkall_simple
new file mode 100644
index 0000000..5d5f16f
--- /dev/null
+++ b/testing/fulltests/default/T200snmpv2cwalkall_simple
@@ -0,0 +1,38 @@
+#!/bin/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 Agent must be run at root on HP-UX
+    fi
+fi
+
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+
+# make sure snmpwalk can be executed
+SNMPWALK="${SNMP_UPDIR}/apps/snmpwalk"
+[ -x "$SNMPWALK" ] || SKIP snmpwalk not compiled
+
+snmp_version=v2c
+. ./Sv2cconfig
+
+#
+# Begin test
+#
+
+# higher timeout/retry values for safety
+TIMEOUT=10
+RETRY=5
+
+STARTAGENT
+
+CAPTURE "$SNMPWALK $SNMP_FLAGS -$snmp_version -c testcommunity -t $TIMEOUT -r $RETRY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1"
+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
+FINISHED
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/fulltests/read-only/T0141snmpv2csetfail_simple b/testing/fulltests/read-only/T0141snmpv2csetfail_simple
new file mode 100644
index 0000000..9705f49
--- /dev/null
+++ b/testing/fulltests/read-only/T0141snmpv2csetfail_simple
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER SNMPv2c set failure to system.sysContact.0
+
+SKIPIFNOT NETSNMP_NO_WRITE_SUPPORT
+SKIPIF NETSNMP_DISABLE_SNMPV2C
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+
+#
+# Begin test
+#
+
+# standard V2C configuration: testcomunnity
+snmp_write_access='all'
+(cd ../default ; . ./Sv2cconfig)
+STARTAGENT
+
+CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0"
+
+CHECK ".1.3.6.1.2.1.1.4.0 = STRING:"
+
+CAPTURE "snmpset -r 0 -t 1 -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4.0 s foobartestingbaz"
+
+CHECK "Timeout: No Response"
+
+STOPAGENT
+
+CHECKAGENT 'Bad PDU type received'
+
+FINISHED
diff --git a/testing/fulltests/snmpv3/T010scapitest_capp.c b/testing/fulltests/snmpv3/T010scapitest_capp.c
new file mode 100644
index 0000000..ee794a7
--- /dev/null
+++ b/testing/fulltests/snmpv3/T010scapitest_capp.c
@@ -0,0 +1,459 @@
+/*
+ * scapitest.c
+ *
+ * HEADER Testing SCAPI API
+ *
+ * Expected SUCCESSes:  2 + 10 + 1 for all tests.
+ *
+ * Returns:
+ *      Number of FAILUREs.
+ *
+ *
+ * ASSUMES  No key management functions return non-zero success codes.
+ *
+ * XXX  Split into individual modules?
+ * XXX  Error/fringe conditions should be tested.
+ *
+ *
+ * Test of sc_random.                                           SUCCESSes: 2.
+ *      REQUIRES a human to spot check for obvious non-randomness...
+ *
+ * Test of sc_generate_keyed_hash and sc_check_keyed_hash.      SUCCESSes: 10.
+ *
+ * Test of sc_encrypt and sc_decrypt.                           SUCCESSes: 1.
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <stdio.h>
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
+#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>
+
+extern char    *optarg;
+extern int      optind, optopt, opterr;
+
+#define DEBUG                   /* */
+
+
+
+/*
+ * Globals, &c...
+ */
+char           *local_progname;
+int             testcount=0;
+int             failcount=0;
+
+#define USAGE	"Usage: %s [-h][-acHr]"
+#define OPTIONLIST	"achHr"
+
+int             doalltests = 0, docrypt = 0, dokeyedhash = 0, dorandom = 0;
+
+#define	ALLOPTIONS	(doalltests + docrypt + dokeyedhash + dorandom)
+
+
+
+#define LOCAL_MAXBUF	(1024 * 8)
+#define NL		"\n"
+
+#define OUTPUT(o)	printf("# %s\n", o);
+
+#define SUCCESS(s)					\
+{							\
+    printf("# Done with %s\n", s);			\
+}
+
+#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"	\
+    "of the sea, the beacons flashing on the shore, together make"	\
+    "a prism which is marvellously calculated to entertain but not"	\
+    "fatigue the eye.  The lofty ships with their complex webs of"	\
+    "rigging, swayed to and fro by the swell in harmonious dance,"	\
+    "all help to maintain a taste for rhythm and beauty in the"		\
+    "mind.  And above all there is a mysterious, aristrocratic kind"	\
+    "of pleasure to be had, for those who have lost all curiosity"	\
+    "or ambition, as they strech on the belvedere or lean over the"	\
+    "mole to watch the arrivals and departures of other men, those"	\
+    "who still have sufficient strength of purpose in them, the"	\
+    "urge to travel or enrich themselves."				\
+    "	-- Baudelaire"							\
+    "	   From _The_Poems_in_Prose_, \"The Port\" (XLI)."
+
+#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. */
+
+
+
+/*
+ * Prototypes.
+ */
+void            usage(void);
+
+int             test_docrypt(void);
+int             test_dokeyedhash(void);
+int             test_dorandom(void);
+
+
+
+
+int
+main(int argc, char **argv)
+{
+    int             rval = SNMPERR_SUCCESS;
+    char            ch;
+
+    local_progname = argv[0];
+
+    /*
+     * Parse.
+     */
+    while ((ch = getopt(argc, argv, OPTIONLIST)) != EOF) {
+        switch (ch) {
+        case 'a':
+            doalltests = 1;
+            break;
+        case 'c':
+            docrypt = 1;
+            break;
+        case 'H':
+            dokeyedhash = 1;
+            break;
+        case 'r':
+            dorandom = 1;
+            break;
+        case 'h':
+            rval = 0;
+        default:
+            usage();
+            exit(rval);
+        }
+
+        argc -= 1;
+        argv += 1;
+        optind = 1;
+    }                           /* endwhile getopt */
+
+    if ((argc > 1)) {
+        usage();
+        exit(1000);
+
+    } else if (ALLOPTIONS != 1) {
+        doalltests = 1;
+    }
+
+
+    /*
+     * Test stuff.
+     */
+    rval = sc_init();
+    FAILED(rval, "sc_init() return code");
+
+
+    if (docrypt || doalltests) {
+        test_docrypt();
+    }
+    if (dokeyedhash || doalltests) {
+        test_dokeyedhash();
+    }
+    if (dorandom || doalltests) {
+        test_dorandom();
+    }
+
+    printf("1..%d\n", testcount);
+    return 0;
+}                               /* end main() */
+
+
+
+
+
+void
+usage(void)
+{
+    printf( USAGE
+            "" NL
+            "	-a		All tests." NL
+            "	-c		Test of sc_encrypt()/sc_decrypt()."
+            NL
+            "	-h		Help."
+            NL
+            "	-H              Test sc_{generate,check}_keyed_hash()."
+            NL
+            "	-r              Test sc_random()."
+            NL "" NL, local_progname);
+
+}                               /* end usage() */
+
+
+
+
+/*******************************************************************-o-******
+ * test_dorandom
+ *
+ * One large request, one set of short requests.
+ *
+ * Returns:
+ *	Number of failures.
+ *
+ * XXX	probably should split up into individual options.
+ */
+int
+test_dorandom(void)
+{
+    int             rval = SNMPERR_SUCCESS,
+        origrequest = (1024 * 2),
+        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() return code");
+
+    if (nbytes != origrequest) {
+        FAILED(SNMPERR_GENERR,
+               "sc_random() returned different than requested.");
+    }
+
+    dump_chunk("scapitest", NULL, buf, nbytes);
+
+    SUCCESS("Random test -- large request.");
+
+
+    OUTPUT("Random test -- short requests:");
+    origrequest_short = 16;
+
+    for (i = 0; i < shortcount; i++) {
+        nbytes = origrequest_short;
+        rval = sc_random(buf, &nbytes);
+        FAILED(rval, "sc_random() return code");
+
+        if (nbytes != origrequest_short) {
+            FAILED(SNMPERR_GENERR,
+                   "sc_random() returned different " "than requested.");
+        }
+
+        dump_chunk("scapitest", NULL, buf, nbytes);
+    }                           /* endfor */
+
+    SUCCESS("Random test -- short requests.");
+
+
+    return failcount;
+
+}                               /* end test_dorandom() */
+
+
+
+/*******************************************************************-o-******
+ * test_dokeyedhash
+ *
+ * Returns:
+ *	Number of failures.
+ *
+ *
+ * Test keyed hashes with a variety of MAC length requests.
+ *
+ *
+ * NOTE Both tests intentionally use the same secret
+ *
+ * FIX	Get input or output from some other package which hashes...
+ * XXX	Could cut this in half with a little indirection...
+ */
+int
+test_dokeyedhash(void)
+{
+    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,
+        USM_MD5_AND_SHA_AUTH_LEN,
+        USM_MD5_AND_SHA_AUTH_LEN,
+        USM_MD5_AND_SHA_AUTH_LEN,
+        7,
+        0,
+    };
+
+    u_char          hashbuf[LOCAL_MAXBUF];
+    char           *s;
+
+  test_dokeyedhash_again:
+
+    OUTPUT("Starting Keyed hash test using MD5 --");
+
+    memset(hashbuf, 0, LOCAL_MAXBUF);
+    hblen = hashbuf_len[mlcount];
+    properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACMD5);
+
+    rval =
+        sc_generate_keyed_hash(usmHMACMD5AuthProtocol,
+                               USM_LENGTH_OID_TRANSFORM, BIGSECRET,
+                               secret_len, BIGSTRING,
+                               bigstring_len,
+                               hashbuf, &hblen);
+    FAILED(rval, "sc_generate_keyed_hash() return code");
+
+    if (hashbuf_len[mlcount] > properlength) {
+        if (hblen != properlength) {
+            FAILED(SNMPERR_GENERR, "Wrong MD5 hash length returned.  (1)");
+        }
+
+    } else if (hblen != hashbuf_len[mlcount]) {
+        FAILED(SNMPERR_GENERR, "Wrong MD5 hash length returned.  (2)");
+    }
+
+    rval =
+        sc_check_keyed_hash(usmHMACMD5AuthProtocol,
+                            USM_LENGTH_OID_TRANSFORM, BIGSECRET,
+                            secret_len, BIGSTRING, bigstring_len, hashbuf,
+                            hblen);
+    FAILED(rval, "sc_check_keyed_hash() return code");
+
+    binary_to_hex(hashbuf, hblen, &s);
+    printf("# hash buffer (len=%" NETSNMP_PRIz "u, request=%d):   %s\n",
+            hblen, hashbuf_len[mlcount], s);
+    SNMP_FREE(s);
+
+
+
+    OUTPUT("Starting Keyed hash test using SHA1 --");
+
+    memset(hashbuf, 0, LOCAL_MAXBUF);
+    hblen = hashbuf_len[mlcount];
+    properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACSHA1);
+
+    rval =
+        sc_generate_keyed_hash(usmHMACSHA1AuthProtocol,
+                               USM_LENGTH_OID_TRANSFORM, BIGSECRET,
+                               secret_len, BIGSTRING, bigstring_len,
+                               hashbuf, &hblen);
+    FAILED(rval, "sc_generate_keyed_hash() return code");
+
+    if (hashbuf_len[mlcount] > properlength) {
+        if (hblen != properlength) {
+            FAILED(SNMPERR_GENERR,
+                   "Wrong SHA1 hash length returned.  (1)");
+        }
+
+    } else if (hblen != hashbuf_len[mlcount]) {
+        FAILED(SNMPERR_GENERR, "Wrong SHA1 hash length returned.  (2)");
+    }
+
+    rval =
+        sc_check_keyed_hash(usmHMACSHA1AuthProtocol,
+                            USM_LENGTH_OID_TRANSFORM, BIGSECRET,
+                            secret_len, BIGSTRING, bigstring_len, hashbuf,
+                            hblen);
+    FAILED(rval, "sc_check_keyed_hash() return code");
+
+    binary_to_hex(hashbuf, hblen, &s);
+    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.
+     */
+    if (hashbuf_len[++mlcount] != 0) {
+        goto test_dokeyedhash_again;
+    }
+
+
+    return failcount;
+
+}                               /* end test_dokeyedhash() */
+
+
+
+
+
+/*******************************************************************-o-******
+ * test_docrypt
+ *
+ * Returns:
+ *	Number of failures.
+ */
+int
+test_docrypt(void)
+{
+    int             rval = SNMPERR_SUCCESS,
+        bigstring_len = strlen((const char *) BIGSTRING),
+        secret_len = BYTESIZE(SNMP_TRANS_PRIVLEN_1DES),
+        iv_len = BYTESIZE(SNMP_TRANS_PRIVLEN_1DES_IV);
+
+    size_t          buf_len = LOCAL_MAXBUF;
+    size_t          cryptbuf_len = LOCAL_MAXBUF;
+
+    u_char            buf[LOCAL_MAXBUF],
+        cryptbuf[LOCAL_MAXBUF], secret[LOCAL_MAXBUF], iv[LOCAL_MAXBUF];
+
+    OUTPUT("Starting Test 1DES-CBC --");
+
+
+    memset(buf, 0, LOCAL_MAXBUF);
+
+    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() 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() return code.");
+
+    /* 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);
+
+    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/fulltests/snmpv3/T040keymanagetest_capp.c b/testing/fulltests/snmpv3/T040keymanagetest_capp.c
new file mode 100644
index 0000000..d68f663
--- /dev/null
+++ b/testing/fulltests/snmpv3/T040keymanagetest_capp.c
@@ -0,0 +1,636 @@
+/*
+ * keymanagetest.c
+ *
+ * HEADER Testing key management API functionality
+ *
+ * Expected SUCCESSes:  2 + 2 + 3 for all tests.
+ *
+ * Returns:
+ *      Number of FAILUREs.
+ * 
+ *
+ * FIX  Or how about passing a usmUser name and looking up the entry as
+ *      a means of getting key material?  This means the userList is
+ *      available from an application...
+ *
+ * ASSUMES  No key management functions return non-zero success codes.
+ *
+ * Test of generate_Ku().                       SUCCESSes: 2
+ * Test of generate_kul().                      SUCCESSes: 2
+ * Test of {encode,decode}_keychange().         SUCCESSes: 3
+ */
+
+#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 <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...
+ */
+char           *local_progname;
+
+#define USAGE	"Usage: %s [-h][-aklu][-E <engineID>][-N <newkey>][-O <oldkey>][-P <passphrase>]"
+#define OPTIONLIST	"aqE:hklN:O:P:u"
+
+int             doalltests = 0, dogenKu = 0, dogenkul = 0, dokeychange = 0;
+
+#define	ALLOPTIONS	(doalltests + dogenKu + dogenkul + dokeychange)
+
+
+#define LOCAL_MAXBUF	(1024 * 8)
+#define NL		"\n"
+
+#define OUTPUTALWAYS(o)	fprintf(stdout, "# %s\n", o);
+#define OUTPUT(o)	if (!bequiet) { OUTPUTALWAYS(o); }
+
+#define SUCCESS(s)					\
+{							\
+    fprintf(stdout, "# Done with %s\n", s);             \
+}
+
+#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.
+ */
+#define	ENGINEID_DEFAULT	"1.2.3.4wild"
+#define PASSPHRASE_DEFAULT	"Clay's Conclusion: Creativity is great, " \
+					"but plagiarism is faster."
+#define OLDKEY_DEFAULT		"This is a very old key."
+#define NEWKEY_DEFAULT		"This key, on the other hand, is very new."
+
+u_char         *engineID = NULL;
+char           *passphrase = NULL;
+const u_char   *oldkey = NULL;
+const u_char   *newkey = NULL;
+int             bequiet = 0;
+
+
+/*
+ * Prototypes.
+ */
+void            usage(FILE * ofp);
+
+int             test_genkul(void);
+int             test_genKu(void);
+int             test_keychange(void);
+
+
+
+
+int
+main(int argc, char **argv)
+{
+    int             rval = SNMPERR_SUCCESS, failcount = 0;
+    char            ch;
+
+    local_progname = argv[0];
+    optarg = NULL;
+
+    /*
+     * Parse.
+     */
+    while ((ch = getopt(argc, argv, OPTIONLIST)) != EOF) {
+        switch (ch) {
+        case 'a':
+            doalltests = 1;
+            break;
+        case 'E':
+            engineID = (u_char *) optarg;
+            break;
+        case 'k':
+            dokeychange = 1;
+            break;
+        case 'l':
+            dogenkul = 1;
+            break;
+        case 'N':
+            newkey = (u_char *) optarg;
+            break;
+        case 'O':
+            oldkey = (u_char *) optarg;
+            break;
+        case 'P':
+            passphrase = optarg;
+            break;
+        case 'u':
+            dogenKu = 1;
+            break;
+        case 'q':
+            bequiet = 1;
+            break;
+        case 'h':
+            rval = 0;
+        default:
+            usage(stdout);
+            exit(rval);
+        }
+
+        argc -= 1;
+        argv += 1;
+        if (optarg) {
+            argc -= 1;
+            argv += 1;
+        }
+
+        optind = 1;
+        optarg = NULL;
+    }                           /* endwhile getopt */
+
+    if ((argc > 1)) {
+        usage(stdout);
+        exit(1000);
+
+    } else if (ALLOPTIONS != 1) {
+        doalltests = 1;
+    }
+
+
+    /*
+     * Test stuff.
+     */
+    rval = sc_init();
+    FAILED(rval, "sc_init().");
+
+    if (dogenKu || doalltests) {
+        failcount += test_genKu();
+    }
+    if (dogenkul || doalltests) {
+        failcount += test_genkul();
+    }
+    if (dokeychange || doalltests) {
+        failcount += test_keychange();
+    }
+
+    fprintf(stdout, "1..%d\n", testcount);
+    return failcount;
+
+}                               /* end main() */
+
+
+
+
+
+void
+usage(FILE * ofp)
+{
+    fprintf(ofp,
+            USAGE
+            "" NL
+            "    -a			All tests." NL
+            "    -E [0x]<engineID>	snmpEngineID string."
+            NL
+            "    -k			Test {encode,decode}_keychange()."
+            NL
+            "    -l			generate_kul()."
+            NL
+            "    -h			Help."
+            NL
+            "    -N [0x]<newkey>	New key (for testing KeyChange TC)."
+            NL
+            "    -O [0x]<oldkey>	Old key (for testing KeyChange TC)."
+            NL
+            "    -P <passphrase>	Source string for usmUser master key."
+            NL
+            "    -u			generate_Ku()."
+            NL
+            "    -q			be quiet."
+            NL "" NL, local_progname);
+
+}                               /* end usage() */
+
+
+
+
+#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_genKu
+ *
+ * Returns:
+ *	Number of failures.
+ *
+ *
+ * Test generation of usmUser master key from a passphrase.
+ *
+ * ASSUMES  Passphrase is made of printable characters!
+ */
+int
+test_genKu(void)
+{
+    int             rval = SNMPERR_SUCCESS,
+        failcount = 0,
+        properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACMD5);
+    size_t          kulen;
+    const char     *hashname = "usmHMACMD5AuthProtocol.";
+    char           *s;
+    u_char          Ku[LOCAL_MAXBUF];
+    oid            *hashtype = usmHMACMD5AuthProtocol;
+
+    OUTPUT("Test of generate_Ku --");
+
+    /*
+     * Set passphrase.
+     */
+    if (!passphrase) {
+        passphrase = strdup(PASSPHRASE_DEFAULT);
+    }
+    if (!bequiet)
+        fprintf(stdout, "Passphrase%s: %s\n",
+                (strcmp(passphrase, PASSPHRASE_DEFAULT) == 0) ? " (default)" : "",
+                passphrase);
+
+
+  test_genKu_again:
+    memset(Ku, 0, LOCAL_MAXBUF);
+    kulen = LOCAL_MAXBUF;
+
+    rval = generate_Ku(hashtype, USM_LENGTH_OID_TRANSFORM,
+                       (const u_char *) passphrase, strlen(passphrase),
+                       Ku, &kulen);
+    FAILED(rval, "generate_Ku().");
+
+    FAILED((kulen != properlength),
+           "Ku length is the right length for this hashtype.");
+
+    binary_to_hex(Ku, kulen, &s);
+    if (!bequiet)
+        fprintf(stdout, "# Ku (len=%" NETSNMP_PRIz "u):  %s\n", kulen, s);
+    free_zero(s, kulen);
+
+    OUTPUT(hashname);
+
+    if (hashtype == usmHMACMD5AuthProtocol) {
+        hashtype = usmHMACSHA1AuthProtocol;
+        hashname = "usmHMACSHA1AuthProtocol.";
+        properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACSHA1);
+        goto test_genKu_again;
+    }
+
+    return failcount;
+
+}                               /* end test_genKu() */
+
+
+
+
+/*******************************************************************-o-******
+ * test_genkul
+ *
+ * Returns:
+ *	Number of failures.
+ *
+ *
+ * Test of generate_kul().
+ *
+ * A passphrase and engineID are hashed into a master key Ku using
+ * both known hash transforms.  Localized keys, also using both hash
+ * transforms, are generated from each of these master keys.
+ *
+ * ASSUME  generate_Ku is already tested.
+ * ASSUME  engineID is initially a NULL terminated string.
+ */
+int
+test_genkul(void)
+{
+    int             rval = SNMPERR_SUCCESS,
+        failcount = 0,
+        properlength, engineID_len, isdefault = FALSE;
+
+    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];
+
+    oid            *hashtype_Ku = usmHMACMD5AuthProtocol, *hashtype_kul;
+
+    OUTPUT("Test of generate_kul --");
+
+    /*
+     * Set passphrase and engineID.
+     *
+     * If engineID begins with 0x, assume it is written in (printable)
+     * hex and convert it to binary data.
+     */
+    if (!passphrase) {
+        passphrase = strdup(PASSPHRASE_DEFAULT);
+    }
+    if (!bequiet)
+        fprintf(stdout, "# Passphrase%s: %s\n",
+                (strcmp(passphrase, PASSPHRASE_DEFAULT) == 0) ? " (default)" : "",
+                passphrase);
+
+    if (!engineID) {
+        engineID = (u_char *) strdup(ENGINEID_DEFAULT);
+        isdefault = TRUE;
+    }
+
+    engineID_len = strlen((char *) engineID);
+
+    if (tolower(*(engineID + 1)) == 'x') {
+        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",
+                (isdefault) ? " (default)" : "",
+                engineID_len, ((s != 0) ? ((u_char *) s) : engineID));
+    SNMP_FREE(s);
+
+
+
+    /*
+     * Create a master key using both hash transforms; create localized
+     * keys using both hash transforms from each master key.
+     */
+  test_genkul_again_master:
+    memset(Ku, 0, LOCAL_MAXBUF);
+    kulen = LOCAL_MAXBUF;
+    hashtype_kul = usmHMACMD5AuthProtocol;
+    properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACMD5);
+
+
+    rval = generate_Ku(hashtype_Ku, USM_LENGTH_OID_TRANSFORM,
+                       (u_char *) passphrase, strlen(passphrase), Ku, &kulen);
+    FAILED(rval, "generate_Ku().");
+
+    binary_to_hex(Ku, kulen, &s);
+    if (!bequiet)
+        fprintf(stdout,
+                "# Master Ku using \"%s\": \t%s\n", hashname_Ku, s);
+    free_zero(s, kulen);
+
+
+  test_genkul_again_local:
+    memset(kul, 0, LOCAL_MAXBUF);
+    kul_len = LOCAL_MAXBUF;
+
+    rval = generate_kul(hashtype_kul, USM_LENGTH_OID_TRANSFORM,
+                        engineID, engineID_len, Ku, kulen, kul, &kul_len);
+
+    if ((hashtype_Ku == usmHMACMD5AuthProtocol)
+        && (hashtype_kul == usmHMACSHA1AuthProtocol)) {
+        FAILED((rval == SNMPERR_SUCCESS),
+               "generate_kul SHOULD fail when Ku length is "
+               "less than hash transform length.");
+    } else {
+        FAILED(rval, "generate_kul().");
+
+        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=%" NETSNMP_PRIz "u):  %s\n",
+                ((hashtype_Ku == usmHMACMD5AuthProtocol) ? "MD5" : "SHA"),
+                kul_len, s);
+        free_zero(s, kul_len);
+    }
+
+
+    /*
+     * Create localized key using the other hash transform, but from
+     * * the same master key.
+     */
+    if (hashtype_kul == usmHMACMD5AuthProtocol) {
+        hashtype_kul = usmHMACSHA1AuthProtocol;
+        properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACSHA1);
+        goto test_genkul_again_local;
+    }
+
+    SUCCESS(testname);
+
+
+    /*
+     * Re-create the master key using the other hash transform.
+     */
+    if (hashtype_Ku == usmHMACMD5AuthProtocol) {
+        hashtype_Ku = usmHMACSHA1AuthProtocol;
+        hashname_Ku = "usmHMACSHA1AuthProtocol";
+        testname = "Using HMACSHA1 to create master key.";
+        goto test_genkul_again_master;
+    }
+
+    return failcount;
+
+}                               /* end test_genkul() */
+
+
+
+
+/*******************************************************************-o-******
+ * test_keychange
+ *
+ * Returns:
+ *	Number of failures.
+ *
+ *
+ * Test of KeyChange TC implementation.
+ *
+ * ASSUME newkey and oldkey begin as NULL terminated strings.
+ */
+int
+test_keychange(void)
+{
+    int             rval = SNMPERR_SUCCESS,
+        failcount = 0,
+        properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACMD5),
+        oldkey_len,
+        newkey_len,
+        isdefault_new = FALSE, isdefault_old = FALSE;
+    size_t          keychange_len, temp_len;
+
+    const char     *hashname = "usmHMACMD5AuthProtocol.";
+    char           *s;
+
+    u_char          oldkey_buf[LOCAL_MAXBUF],
+        newkey_buf[LOCAL_MAXBUF],
+        temp_buf[LOCAL_MAXBUF], keychange_buf[LOCAL_MAXBUF];
+
+    oid            *hashtype = usmHMACMD5AuthProtocol;
+
+    OUTPUT("Test of KeyChange TC --");
+
+
+    /*
+     * Set newkey and oldkey.
+     */
+    if (!newkey) {              /* newkey */
+        newkey = (const u_char *) NEWKEY_DEFAULT;
+        isdefault_new = TRUE;
+    }
+    newkey_len = strlen((const char *) newkey);
+
+    if (tolower(*(newkey + 1)) == 'x') {
+        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 = (const u_char *) OLDKEY_DEFAULT;
+        isdefault_old = TRUE;
+    }
+    oldkey_len = strlen((const char *) oldkey);
+
+    if (tolower(*(oldkey + 1)) == 'x') {
+        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);
+    }
+
+
+
+  test_keychange_again:
+    memset(oldkey_buf, 0, LOCAL_MAXBUF);
+    memset(newkey_buf, 0, LOCAL_MAXBUF);
+    memset(keychange_buf, 0, LOCAL_MAXBUF);
+    memset(temp_buf, 0, LOCAL_MAXBUF);
+
+    memcpy(oldkey_buf, oldkey, SNMP_MIN(oldkey_len, properlength));
+    memcpy(newkey_buf, newkey, SNMP_MIN(newkey_len, properlength));
+    keychange_len = LOCAL_MAXBUF;
+
+
+    binary_to_hex(oldkey_buf, properlength, &s);
+    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",
+            (isdefault_new) ? " (default)" : "", properlength, s);
+    SNMP_FREE(s);
+
+
+    rval = encode_keychange(hashtype, USM_LENGTH_OID_TRANSFORM,
+                            oldkey_buf, properlength,
+                            newkey_buf, properlength,
+                            keychange_buf, &keychange_len);
+    FAILED(rval, "encode_keychange().");
+
+    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",
+            ((hashtype == usmHMACMD5AuthProtocol) ? "MD5" : "SHA"), s);
+    SNMP_FREE(s);
+
+    temp_len = properlength;
+    rval = decode_keychange(hashtype, USM_LENGTH_OID_TRANSFORM,
+                            oldkey_buf, properlength,
+                            keychange_buf, properlength * 2,
+                            temp_buf, &temp_len);
+    FAILED(rval, "decode_keychange().");
+
+    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", s);
+    SNMP_FREE(s);
+
+
+    FAILED(memcmp(newkey_buf, temp_buf, temp_len),
+           "newkey did not decode properly.");
+
+
+    SUCCESS(hashname);
+
+
+    /*
+     * Multiplex different test combinations.
+     *
+     * First clause is for Test #2, second clause is for (last) Test #3.
+     */
+    if (hashtype == usmHMACMD5AuthProtocol) {
+        hashtype = usmHMACSHA1AuthProtocol;
+        hashname = "usmHMACSHA1AuthProtocol (w/DES length kul's).";
+        properlength = BYTESIZE(SNMP_TRANS_PRIVLEN_1DES)
+            + BYTESIZE(SNMP_TRANS_PRIVLEN_1DES_IV);
+        goto test_keychange_again;
+
+    } else if (properlength < BYTESIZE(SNMP_TRANS_AUTHLEN_HMACSHA1)) {
+        hashtype = usmHMACSHA1AuthProtocol;
+        hashname = "usmHMACSHA1AuthProtocol.";
+        properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACSHA1);
+        goto test_keychange_again;
+    }
+
+    return failcount;
+
+}                               /* end test_keychange() */
diff --git a/testing/fulltests/snmpv3/T050etimetest_capp.c b/testing/fulltests/snmpv3/T050etimetest_capp.c
new file mode 100644
index 0000000..53951aa
--- /dev/null
+++ b/testing/fulltests/snmpv3/T050etimetest_capp.c
@@ -0,0 +1,420 @@
+/*
+ * etimetest.c
+ *
+ * HEADER Testing engineID hashing and timing
+ *
+ * Expected SUCCESSes for all tests:    3
+ *
+ * Returns:
+ *      Number of FAILUREs.
+ *
+ * Test of hash_engineID().                             SUCCESSes:  0
+ * Test of LCD Engine ID and Time List.                 SUCCESSes:  3
+ *
+ * FIX  Devise a test for {set,get}_enginetime(..., FALSE).
+ */
+
+#include <net-snmp/net-snmp-config.h>
+
+#include <stdio.h>
+#include <sys/types.h>
+#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 <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(). */
+
+
+#include <stdlib.h>
+
+extern char    *optarg;
+extern int      optind, optopt, opterr;
+
+int             testcount=0;
+
+/*
+ * Globals, &c...
+ */
+char           *local_progname;
+
+#define USAGE	"Usage: %s [-h][-s <seconds>][-aeH]"
+#define OPTIONLIST	"aehHs:"
+
+int             doalltests = 0, dohashindex = 0, doetimetest = 0;
+
+#define	ALLOPTIONS	(doalltests + dohashindex + doetimetest)
+
+
+
+#define LOCAL_MAXBUF	(1024 * 8)
+#define NL		"\n"
+
+#define OUTPUT(o)	fprintf(stdout, "# %s\n", o);
+
+#define SUCCESS(s)					\
+{							\
+    fprintf(stdout, "# Done with %s\n", s);             \
+}
+
+#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 = 2;
+
+#define BLAT "alk;djf;an riu;alicenmrul;aiknglksajhe1 adcfalcenrco2"
+
+
+
+
+/*
+ * Prototypes.
+ */
+void            usage(FILE * ofp);
+
+int             test_etime(void);
+int             test_hashindex(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 'a':
+            doalltests = 1;
+            break;
+        case 'e':
+            doetimetest = 1;
+            break;
+        case 'H':
+            dohashindex = 1;
+            break;
+        case 's':
+            sleeptime = atoi(optarg);
+            if (sleeptime < 0) {
+                usage(stderr);
+                exit(1000);
+            }
+            break;
+            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) {
+        doalltests = 1;
+    }
+
+    init_snmp("testing");
+
+    /*
+     * test stuff.
+     */
+    rval = sc_init();
+    FAILED(rval, "sc_init()");
+
+
+    if (dohashindex || doalltests) {
+        failcount += test_hashindex();
+    }
+    if (doetimetest || doalltests) {
+        failcount += test_etime();
+    }
+
+
+    fprintf(stdout, "1..%d\n", testcount);
+    return 0;
+}                               /* end main() */
+
+
+
+
+
+void
+usage(FILE * ofp)
+{
+    fprintf(ofp,
+            USAGE
+            "" NL
+            "    -a			All tests." NL
+            "    -e			Exercise the list of enginetimes."
+            NL
+            "    -h			Help."
+            NL
+            "    -H			Test hash_engineID()."
+            NL
+            "    -s <seconds>	Seconds to pause.  (Default: 0.)"
+            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;
+
+  test_dosomething_quit:
+    return failcount;
+
+}                               /* end test_dosomething() */
+#endif                          /* EXAMPLE */
+
+
+
+
+
+/*******************************************************************-o-******
+ * test_hashindex
+ *
+ * Returns:
+ *	Number of failures.
+ *
+ *
+ * Test hash_engineID().
+ */
+int
+test_hashindex(void)
+{
+    int                         /* rval = SNMPERR_SUCCESS,  */
+                    failcount = 0;
+    const u_char     *s;
+
+    OUTPUT("Visual spot check of hash index outputs.  "
+           "(Success or failure not noted.)");
+
+    s = (const u_char *) " A";
+    fprintf(stdout, "# %s = %d\n", s, hash_engineID(s, strlen((const char *) s)));
+
+    s = (const u_char *) " BB";
+    fprintf(stdout, "# %s = %d\n", s, hash_engineID(s, strlen((const char *) s)));
+
+    s = (const u_char *) " CCC";
+    fprintf(stdout, "# %s = %d\n", s, hash_engineID(s, strlen((const char *) s)));
+
+    s = (const u_char *) " DDDD";
+    fprintf(stdout, "# %s = %d\n", s, hash_engineID(s, strlen((const char *) s)));
+
+    s = (const u_char *) " EEEEE";
+    fprintf(stdout, "# %s = %d\n", s, hash_engineID(s, strlen((const char *) s)));
+
+    s = (const u_char *) BLAT;
+    fprintf(stdout, "# %s = %d\n", s, hash_engineID(s, strlen((const char *) s)));
+
+
+    OUTPUT("Visual spot check -- DONE.");
+
+    return failcount;
+
+}                               /* end test_hashindex() */
+
+
+
+
+
+/*******************************************************************-o-******
+ * test_etime
+ *
+ * Returns:
+ *	Number of failures.
+ *
+ * Test of LCD Engine ID and Time List.	
+ */
+int
+test_etime(void)
+{
+    int             rval = SNMPERR_SUCCESS, failcount = 0;
+    u_int           etime, eboot;
+
+    /*
+     * ------------------------------------ -o-
+     */
+    OUTPUT("Query of empty list, two set actions.");
+
+
+    rval = ISENGINEKNOWN((const u_char *) "A", 1);
+    if (rval == TRUE) {
+        FAILED(SNMPERR_GENERR, "Query of empty list returned TRUE.")
+    }
+
+
+    rval = set_enginetime((const u_char *) "BB", 2, 2, 20, TRUE);
+    FAILED(rval, "set_enginetime()");
+
+
+    rval = set_enginetime((const u_char *) "CCC", 3, 31, 90127, TRUE);
+    FAILED(rval, "set_enginetime()");
+
+
+    SUCCESS("Check of empty list, and two additions.");
+
+
+
+    /*
+     * ------------------------------------ -o-
+     */
+    OUTPUT("Add entries using macros, test for existence with macros.");
+
+
+    rval = ENSURE_ENGINE_RECORD((const u_char *) "DDDD", 4);
+    FAILED(rval, "ENSURE_ENGINE_RECORD()");
+
+
+    rval = MAKENEW_ENGINE_RECORD((const u_char *) "EEEEE", 5);
+    if (rval == SNMPERR_SUCCESS) {
+        FAILED(rval,
+               "MAKENEW_ENGINE_RECORD returned success for "
+               "missing record.");
+    }
+
+
+    rval = MAKENEW_ENGINE_RECORD((const u_char *) "BB", 2);
+    FAILED(rval, "MAKENEW_ENGINE_RECORD().");
+
+
+    SUCCESS
+        ("Added entries with macros, tested for existence with macros.");
+
+
+
+    /*
+     * ------------------------------------ -o-
+     */
+    OUTPUT("Dump the list and then sleep.");
+
+#ifdef NETSNMP_ENABLE_TESTING_CODE
+    dump_etimelist();
+#endif
+
+    fprintf(stdout, "# Sleeping for %d second%s... ",
+            sleeptime, (sleeptime == 1) ? "" : "s");
+
+    sleep(sleeptime);
+
+
+    /*
+     * ------------------------------------ -o-
+     */
+    OUTPUT
+        ("Retrieve data from real/stubbed records, update real/stubbed.");
+
+
+
+    rval = get_enginetime((const u_char *) "BB", 2, &eboot, &etime, TRUE);
+    FAILED(rval, "get_enginetime().");
+
+    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((const u_char *) "DDDD", 4, &eboot, &etime, FALSE);
+    FAILED(rval, "get_enginetime().");
+
+    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((const u_char *) "CCC", 3, 234, 10000, TRUE);
+    FAILED(rval, "set_enginetime().");
+
+
+    rval = set_enginetime((const u_char *) "EEEEE", 5, 9876, 55555, TRUE);
+    FAILED(rval, "set_enginetime().");
+
+
+    SUCCESS("Retrieval and updates.");
+
+
+
+    /*
+     * ------------------------------------ -o-
+     */
+    OUTPUT("Sleep again, then dump the list one last time.");
+
+    fprintf(stdout, "# Sleeping for %d second%s...\n",
+            sleeptime, (sleeptime == 1) ? "" : "s");
+
+    sleep(sleeptime);
+
+#ifdef NETSNMP_ENABLE_TESTING_CODE
+    dump_etimelist();
+#endif
+
+    return failcount;
+
+}                               /* end test_etime() */
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/fulltests/support/simple_TESTCONF.sh b/testing/fulltests/support/simple_TESTCONF.sh
new file mode 100644
index 0000000..2a0a8af
--- /dev/null
+++ b/testing/fulltests/support/simple_TESTCONF.sh
@@ -0,0 +1,264 @@
+#! /bin/sh -f
+
+#
+# Variables:  (* = exported)
+#  *SNMP_TMPDIR:  	  place to put files used in testing.
+#   SNMP_TESTDIR: 	  where the test scripts are kept.
+#  *SNMP_PERSISTENT_FILE: where to store the agent's persistent information
+#                         (XXX: this should be specific to just the agent)
+
+# MinGW/MSYS only: translate an MSYS path back into a DOS path such that snmpd
+# and the Net-SNMP applications can understand it. One of the features of MSYS
+# is that if a POSIX-style path is passed as a command-line argument to an
+# executable that MSYS translates that path to a DOS-style path before
+# starting the executable. This is a key feature of MSYS that makes it
+# possible to run shell scripts unmodified and at the same time to use
+# executables that accept DOS-style paths. There is no support however for
+# automatical translation of environment variables that contain paths. Hence
+# this function that translates paths explicitly.
+translate_path() {
+  if [ "$OSTYPE" = msys ]; then
+    local t=`set \
+             | sed -n -e "s/^$1='\(.*\)'$/${SNMP_ENV_SEPARATOR}\1/p" \
+                      -e "s/^$1=\(.*\)$/${SNMP_ENV_SEPARATOR}\1/p" \
+             | sed -e "s|${SNMP_ENV_SEPARATOR}/c/|${SNMP_ENV_SEPARATOR}c:/|g" \
+                   -e "s|${SNMP_ENV_SEPARATOR}/tmp/|${SNMP_ENV_SEPARATOR}c:/windows/temp/|g" \
+             | sed -e "s/^${SNMP_ENV_SEPARATOR}//" \
+            `
+    eval "$1='$t'"
+  fi
+}
+
+#
+# Only allow ourselves to be eval'ed once
+#
+if [ "x$TESTCONF_SH_EVALED" != "xyes" ]; then
+    TESTCONF_SH_EVALED=yes
+
+#
+# set cpu and memory limits to prevent major damage
+#
+# defaults: 1h CPU, 500MB VMEM
+#
+[ "x$SNMP_LIMIT_VMEM" = "x" ] && SNMP_LIMIT_VMEM=512000
+[ "x$SNMP_LIMIT_CPU" = "x" ] && SNMP_LIMIT_CPU=3600
+# ulimit will fail if existing limit is lower -- ignore because it's ok
+ulimit -S -t $SNMP_LIMIT_CPU 2>/dev/null
+# not all sh-alikes support "ulimit -v" -- play safe
+[ "x$BASH_VERSION" != "x" ] && ulimit -S -v $SNMP_LIMIT_VMEM 2>/dev/null
+
+#
+# Set up an NL suppressing echo command
+#
+case "`echo 'x\c'`" in
+  'x\c')
+    ECHO() { echo -n $*; }
+    ;;
+  x)
+    ECHO() { echo $*\\c; }
+    ;;
+  *)
+    echo "I don't understand your echo command ..."
+    exit 1
+    ;;
+esac
+#
+# how verbose should we be (0 or 1)
+#
+if [ "x$SNMP_VERBOSE" = "x" ]; then
+    SNMP_VERBOSE=0
+    export SNMP_VERBOSE
+fi
+
+SNMP_ENV_SEPARATOR="`${builddir}/net-snmp-config --env-separator`"
+
+if [ "x$MIBDIRS" = "x" ]; then
+  if [ "x$SNMP_PREFER_NEAR_MIBS" = "x1" ]; then
+    MIBDIRS=${srcdir}/mibs
+    export MIBDIRS
+  fi
+fi
+
+# Set up the path to the programs we want to use.
+if [ "x$SNMP_PATH" = "x" ]; then
+    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_HEADERONLY" != "xyes" ]; then
+  if [ "x$SNMP_TMPDIR" = "x" ]; then
+    if [ "x$testnum" = "x" ] ; then
+        testnum=0
+    fi
+    SNMP_TMPDIR="/tmp/snmp-test-$testnum-$$"
+    translate_path SNMP_TMPDIR
+    export SNMP_TMPDIR
+    if [ -d $SNMP_TMPDIR ]; then
+	echo "$0: ERROR: $SNMP_TMPDIR already existed."
+	exit 1;
+    fi
+  fi
+  if [ ! -d $SNMP_TMPDIR ]; then
+    mkdir -p $SNMP_TMPDIR
+    chmod 0700 $SNMP_TMPDIR
+  fi
+  if [ "x$SNMP_TMP_PERSISTENTDIR" = "x" ]; then
+    SNMP_TMP_PERSISTENTDIR=$SNMP_TMPDIR/persist
+    export SNMP_TMP_PERSISTENTDIR
+  fi
+  if [ ! -d $SNMP_TMP_PERSISTENTDIR ]; then
+    mkdir $SNMP_TMP_PERSISTENTDIR
+    chmod 0700 $SNMP_TMP_PERSISTENTDIR
+  fi
+fi
+
+if [ "x$SNMP_SAVE_TMPDIR" = "x" ]; then
+    SNMP_SAVE_TMPDIR="no"
+    export SNMP_SAVE_TMPDIR
+fi
+
+SNMP_IGNORE_WINDOWS_REGISTRY="true"
+export SNMP_IGNORE_WINDOWS_REGISTRY
+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"
+SNMPAPP_CONFIG_FILE="$SNMP_TMPDIR/snmp.conf"
+AGENTX_CONFIG_FILE="$SNMP_TMPDIR/agentx.conf"
+SNMP_SNMPTRAPD_LOG_FILE="$SNMP_TMPDIR/snmptrapd.log"
+SNMP_SNMPTRAPD_PID_FILE="$SNMP_TMPDIR/snmptrapd.pid"
+SNMP_SNMPD_PID_FILE="$SNMP_TMPDIR/snmpd.pid"
+SNMP_SNMPD_LOG_FILE="$SNMP_TMPDIR/snmpd.log"
+SNMP_AGENTX_PID_FILE="$SNMP_TMPDIR/agentx.pid"
+SNMP_AGENTX_LOG_FILE="$SNMP_TMPDIR/agentx.log"
+SNMPCONFPATH="${SNMP_TMPDIR}${SNMP_ENV_SEPARATOR}${SNMP_TMP_PERSISTENTDIR}"
+translate_path SNMPCONFPATH
+export SNMPCONFPATH
+SNMP_PERSISTENT_DIR=$SNMP_TMP_PERSISTENTDIR
+translate_path SNMP_PERSISTENT_DIR
+export SNMP_PERSISTENT_DIR
+#SNMP_PERSISTENT_FILE="$SNMP_TMP_PERSISTENTDIR/persistent-store.conf"
+#export SNMP_PERSISTENT_FILE
+
+## Setup default flags and ports iff not done
+if [ "x$SNMP_FLAGS" = "x" ]; then
+    SNMP_FLAGS="-d"
+fi
+if test -x /bin/netstat ; then
+    NETSTAT=/bin/netstat
+elif test -x /usr/bin/netstat ; then
+    NETSTAT=/usr/bin/netstat
+elif test -x /usr/sbin/netstat ; then
+    # e.g. Tru64 Unix
+    NETSTAT=/usr/sbin/netstat
+elif test -x /usr/etc/netstat ; then
+    # e.g. IRIX
+    NETSTAT=/usr/etc/netstat
+elif test -x /cygdrive/c/windows/system32/netstat ; then
+    # Cygwin
+    NETSTAT=/cygdrive/c/windows/system32/netstat
+elif test -x /c/Windows/System32/netstat ; then
+    # MinGW + MSYS
+    NETSTAT=/c/Windows/System32/netstat
+else
+    NETSTAT=""
+fi
+
+if [ "x$OSTYPE" = "xmsys" ]; then
+    # Obtain the MSYS installation path from the !C: environment variable,
+    # remove surrounding single quotes and convert backslashes into forward
+    # slashes.
+    MSYS_PATH="$(set \
+                 | sed -n 's|^\!C:='"'"'\(.*\)'"'"'$|\1|p' | sed 's|\\|/|g')"
+    MSYS_SH="$MSYS_PATH/sh.exe"
+fi
+
+PROBE_FOR_PORT() {
+    BASE_PORT=$1
+    MAX_RETRIES=10
+    if test -x "$NETSTAT" ; then
+        if test -z "$RANDOM"; then
+            RANDOM=2
+        fi
+        while :
+        do
+            BASE_PORT=`expr $BASE_PORT + \( $RANDOM % 100 \)`
+            IN_USE=`$NETSTAT -a -n 2>/dev/null | grep "[\.:]$BASE_PORT "`
+            if [ $? -ne 0 ]; then
+                echo "$BASE_PORT"
+                break
+            fi
+            MAX_RETRIES=`expr $MAX_RETRIES - 1`
+            if [ $MAX_RETRIES -eq 0 ]; then
+                echo "ERROR: Could not find available port." >&2
+                echo "NOPORT"
+                exit 255
+            fi
+        done
+    else
+	echo "ERROR: Cannot probe for port - netstat not found." >&2
+	echo "NOPORT"
+	exit 255
+    fi
+}
+
+if [ "x$SNMP_SNMPD_PORT" = "x" ]; then
+    SNMP_SNMPD_PORT=`PROBE_FOR_PORT 8765`
+fi
+if [ "x$SNMP_SNMPTRAPD_PORT" = "x" ]; then
+    SNMP_SNMPTRAPD_PORT=`PROBE_FOR_PORT 5678`
+fi
+if [ "x$SNMP_AGENTX_PORT" = "x" ]; then
+    SNMP_AGENTX_PORT=`PROBE_FOR_PORT 7676`
+fi
+if [ "x$SNMP_TRANSPORT_SPEC" = "x" ];then
+	SNMP_TRANSPORT_SPEC="udp"
+fi
+if [ "x$SNMP_TEST_DEST" = "x" -a $SNMP_TRANSPORT_SPEC != "unix" ];then
+	SNMP_TEST_DEST="127.0.0.1:"
+fi
+export SNMP_FLAGS SNMP_SNMPD_PORT SNMP_SNMPTRAPD_PORT
+
+# Make sure the agent doesn't parse any config file but what we give it.  
+# this is mainly to protect against a broken agent that doesn't
+# properly handle combinations of -c and -C.  (since I've broke it before).
+#SNMPCONFPATH="$SNMP_TMPDIR/does-not-exist"
+#export SNMPCONFPATH
+
+fi # Only allow ourselves to be eval'ed once
diff --git a/testing/fulltests/support/simple_eval_tools.sh b/testing/fulltests/support/simple_eval_tools.sh
new file mode 100644
index 0000000..718edc4
--- /dev/null
+++ b/testing/fulltests/support/simple_eval_tools.sh
@@ -0,0 +1,708 @@
+#
+# eval_tools.sh
+#
+# Output functions for script tests.  Source this from other test scripts
+# to establish a standardized repertory of test functions.
+#
+#
+# Except where noted, all functions return:
+#	0	On success,	(Bourne Shell's ``true'')
+#	non-0	Otherwise.
+#
+# Input arguments to each function are documented with each function.
+#
+#
+# XXX  Suggestions:
+#	DEBUG ON|OFF
+#	dump CAPTURE output to stdout as well as to junkoutputfile.
+#
+
+#
+# Only allow ourselves to be eval'ed once
+#
+if [ "x$EVAL_TOOLS_SH_EVALED" != "xyes" ]; then
+    EVAL_TOOLS_SH_EVALED=yes
+
+#
+# Variables used in global environment of calling script.
+#
+failcount=0
+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.
+#
+HEADER() {
+    if [ "x$SNMP_HEADERONLY" != "x" ]; then
+        echo test $*
+	exit 0;
+    else
+	{ echo "# testing $*"; echo ""; } >> $SNMP_TMPDIR/invoked
+    fi
+}
+
+
+#------------------------------------ -o-
+#
+OUTPUT() {	# <any_arguments>
+	cat <<GRONK
+
+
+$*
+
+
+GRONK
+}
+
+CAN_USLEEP() {
+   if [ "$SNMP_CAN_USLEEP" = 0 -o "$SNMP_CAN_USLEEP" = 1 ] ; then
+     return 0
+   fi
+   sleep .1 > /dev/null 2>&1
+   if [ $? = 0 ] ; then
+     SNMP_CAN_USLEEP=1
+   else
+     SNMP_CAN_USLEEP=0
+   fi
+   export SNMP_CAN_USLEEP
+}
+
+
+#------------------------------------ -o-
+#
+SUCCESS() {	# <any_arguments>
+	[ "$failcount" -ne 0 ] && return
+	cat <<GROINK
+
+SUCCESS: $*
+
+GROINK
+}
+
+
+
+#------------------------------------ -o-
+#
+FAILED() {	# <return_value>, <any_arguments>
+	[ "$1" -eq 0 ] && return
+	shift
+
+	failcount=`expr $failcount + 1`
+	cat <<GRONIK
+
+FAILED: $*
+
+GRONIK
+}
+
+#------------------------------------ -o-
+#
+SKIP() {
+	REMOVETESTDATA
+	echo "1..0 # SKIP $*"
+	exit 0
+}
+
+ISDEFINED() {
+	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() {
+	ISDEFINED "$1" || SKIP "$1 is not defined"
+}
+
+SKIPIF() {
+	ISDEFINED "$1" && SKIP "$1 is defined"
+}
+
+#------------------------------------ -o-
+#
+VERIFY() {	# <path_to_file(s)>
+	missingfiles=""
+
+	for f in $*; do
+		[ -f "$f" ] && continue
+		echo "FAILED: Cannot find file \"$f\"."
+		missingfiles=true
+	done
+
+	[ "$missingfiles" = true ] && exit 1000
+}
+
+NEWOUTPUTFILE() {
+        outputcount=`expr $outputcount + 1`
+        junkoutputfile="${junkoutputfilebase}-$outputcount"
+}
+
+#------------------------------------ -o-
+#
+STARTTEST() {
+        NEWOUTPUTFILE
+	[ ! -f "$junkoutputfile" ] && {
+		touch $junkoutputfile
+		return
+	}
+	echo "FAILED: Output file already exists: \"$junkoutputfile\"."
+	exit 1000
+}
+
+
+#------------------------------------ -o-
+#
+STOPTEST() {
+	rm -f "$junkoutputfile"
+}
+
+
+#------------------------------------ -o-
+#
+REMOVETESTDATA() {
+#	ECHO "removing $SNMP_TMPDIR  "
+	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
+		cat <<KNORG
+
+EXECUTING: $*
+
+KNORG
+
+	fi
+	echo "RUNNING: $*" > $junkoutputfile
+	( $* 2>&1 ) >> $junkoutputfile 2>&1
+	RC=$?
+
+	if [ $SNMP_VERBOSE -gt 1 ]; then
+		echo "Command Output: "
+		echo "MIBDIR $MIBDIRS $MIBS"
+		echo "$separator"
+		cat $junkoutputfile | sed 's/^/  /'
+		echo "$separator"
+	fi
+	return $RC
+}
+
+#------------------------------------ -o-
+# Delay to let processes settle
+DELAY() {
+    if [ "$SNMP_SLEEP" != "0" ] ; then
+	sleep $SNMP_SLEEP
+    fi
+}
+
+SAVE_RESULTS() {
+   real_return_value=$return_value
+}
+
+#
+# Checks the output result against what we expect.
+#   Sets return_value to 0 or 1.
+#
+EXPECTRESULT() {
+  if [ $OK_TO_SAVE_RESULT -ne 0 ] ; then
+    if [ "$snmp_last_test_result" = "$1" ]; then
+	return_value=0
+    else
+	return_value=1
+    fi
+  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.
+#
+CHECKFILECOUNT() {	# <pattern_to_match>
+    chkfile=$1
+    ckfcount=$2
+    shift
+    shift
+    if [ $SNMP_VERBOSE -gt 0 ]; then
+	echo -n "checking $chkfile for $ckfcount \"$*\"..."
+    fi
+
+    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 $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
+    shift
+    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
+}
+
+CHECKAGENT() {
+    CHECKFILE $SNMP_SNMPD_LOG_FILE $@
+}
+
+CHECKAGENTCOUNT() {
+    count=$1
+    shift
+    CHECKFILECOUNT $SNMP_SNMPD_LOG_FILE $count $@
+}
+
+# Return 0 (true) if a process with pid $1 exists and 1 (false) if no process
+# with pid $1 exists.
+ISRUNNING() {
+    if [ "x$OSTYPE" = "xmsys" ]; then
+	pslist.exe "$1" 2>&1 | while read name pspid rest; do
+	    if [ "$1" = "$pspid" ]; then
+		return 0
+	    fi
+	done
+	return 1
+    else
+        kill -0 "$1" 2>/dev/null
+    fi
+}
+
+# Echo a command that asks the process with pid $1 to stop.
+ECHOSENDSIGTERM() {
+    if [ "x$OSTYPE" = "xmsys" ]; then
+        echo pskill.exe $1
+    else
+        echo kill -TERM $1
+    fi
+}
+
+# Echo a command that stops the process with pid $1 forcibly.
+ECHOSENDSIGKILL() {
+    if [ "x$OSTYPE" = "xmsys" ]; then
+        echo pskill.exe $1
+    else
+        echo kill -KILL $1
+    fi
+}
+
+# Wait until the shell statement "$@" evaluates to false.
+WAITFORNOTCOND() {
+    CAN_USLEEP
+    if [ $SNMP_CAN_USLEEP = 1 ] ; then
+        sleeptime=`expr $SNMP_SLEEP '*' 50`
+    else 
+        sleeptime=`expr $SNMP_SLEEP '*' 5`
+    fi
+    while [ $sleeptime -gt 0 ] && eval "$@"; do
+        if [ $SNMP_CAN_USLEEP = 1 ]; then
+            sleep .1
+        else
+            sleep 1
+        fi
+        sleeptime=`expr $sleeptime - 1`
+    done
+}
+
+# Wait until the shell statement "$@" evaluates to true.
+WAITFORCOND() {
+    WAITFORNOTCOND if "$@;" then false ";" else true ";" fi
+}
+
+WAITFORAGENT() {
+    WAITFOR "$@" $SNMP_SNMPD_LOG_FILE
+    if [ $SNMP_CAN_USLEEP = 1 ]; then
+        sleep .1
+    else
+        sleep 1
+    fi
+}
+
+WAITFORTRAPD() {
+    WAITFOR "$@" $SNMP_SNMPTRAPD_LOG_FILE
+    if [ $SNMP_CAN_USLEEP = 1 ]; then
+        sleep .1
+    else
+        sleep 1
+    fi
+}
+
+# Wait until pattern "$1" appears in file "$2".
+WAITFOR() {
+    WAITFORCOND grep "$1" "$2" ">/dev/null" "2>&1"
+}
+
+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
+}
+
+# CHECKORDIE "grep string" ["file"] .. FAIL if "grep string" is *not* found
+CHECKORDIE() {
+    if [ "x$2" = "x" ]; then
+      CHECKFILE "$junkoutputfile" "$1"
+    else
+      CHECKFILECOUNT "$2" 1 "$1"
+    fi
+}
+
+# CHECKANDDIE "grep string" ["file"] .. FAIL if "grep string" *is* found
+CHECKANDDIE() {
+    if [ "x$2" = "x" ]; then
+      CHECKFILECOUNT "$junkoutputfile" 0 "$1"
+    else
+      CHECKFILECOUNT "$2" 0 "$1"
+    fi
+}
+
+#------------------------------------ -o-
+# Returns: Count of matched lines.
+#
+CHECKEXACT() {	# <pattern_to_match_exactly>
+	rval=`egrep -c "^$*\$|^$*[^a-zA-Z0-9_]|[^a-zA-Z0-9_]$*\$|[^a-zA-Z0-9_]$*[^a-zA-Z0-9_]" "$junkoutputfile" 2>/dev/null`
+	snmp_last_test_result=$rval
+	EXPECTRESULT 1  # default
+	return $rval
+}
+
+CONFIGAGENT() {
+    if [ "x$SNMP_CONFIG_FILE" = "x" ]; then
+	echo "$0: failed because var: SNMP_CONFIG_FILE wasn't set"
+	exit 1;
+    fi
+    echo $* >> $SNMP_CONFIG_FILE
+}
+
+CONFIGTRAPD() {
+    if [ "x$SNMPTRAPD_CONFIG_FILE" = "x" ]; then
+	echo "$0: failed because var: SNMPTRAPD_CONFIG_FILE wasn't set"
+	exit 1;
+    fi
+    echo $* >> $SNMPTRAPD_CONFIG_FILE
+}
+
+CONFIGAPP() {
+    if [ "x$SNMPAPP_CONFIG_FILE" = "x" ]; then
+	echo "$0: failed because var: SNMPAPP_CONFIG_FILE wasn't set"
+	exit 1;
+    fi
+    echo $* >> $SNMPAPP_CONFIG_FILE
+}
+
+#
+# common to STARTAGENT and STARTTRAPD
+# log command to "invoked" file
+#
+STARTPROG() {
+    if [ "x$DYNAMIC_ANALYZER" != "x" ]; then
+        COMMAND="$DYNAMIC_ANALYZER $COMMAND"
+    fi
+    if [ $SNMP_VERBOSE -gt 1 ]; then
+	echo "$CFG_FILE contains: "
+	if [ -f $CFG_FILE ]; then
+	    cat $CFG_FILE
+	else
+	    echo "[no config file]"
+	fi
+    fi
+    if test -f $CFG_FILE; then
+	COMMAND="$COMMAND -C -c $CFG_FILE"
+    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
+    else
+      $COMMAND > $LOG_FILE.stdout 2>&1
+    fi
+}
+
+#------------------------------------ -o-
+STARTAGENT() {
+    SNMPDSTARTED=1
+    COMMAND="snmpd $SNMP_FLAGS -r -U -p $SNMP_SNMPD_PID_FILE -Lf $SNMP_SNMPD_LOG_FILE $AGENT_FLAGS"
+    CFG_FILE=$SNMP_CONFIG_FILE
+    LOG_FILE=$SNMP_SNMPD_LOG_FILE
+    PORT_SPEC="$SNMP_SNMPD_PORT"
+    if [ "x$SNMP_TRANSPORT_SPEC" != "x" ]; then
+        PORT_SPEC="${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${PORT_SPEC}"
+    fi
+    STARTPROG
+    WAITFORCOND test -f $SNMP_SNMPD_PID_FILE
+    WAITFORAGENT "NET-SNMP.version"
+}
+
+#------------------------------------ -o-
+STARTTRAPD() {
+    TRAPDSTARTED=1
+    COMMAND="snmptrapd -d -p $SNMP_SNMPTRAPD_PID_FILE -Lf $SNMP_SNMPTRAPD_LOG_FILE $TRAPD_FLAGS"
+    CFG_FILE=$SNMPTRAPD_CONFIG_FILE
+    LOG_FILE=$SNMP_SNMPTRAPD_LOG_FILE
+    PORT_SPEC="$SNMP_SNMPTRAPD_PORT"
+    if [ "x$SNMP_TRANSPORT_SPEC" != "x" ]; then
+        PORT_SPEC="${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${PORT_SPEC}"
+    fi
+    STARTPROG
+    WAITFORCOND test -f $SNMP_SNMPTRAPD_PID_FILE
+    WAITFORTRAPD "NET-SNMP.version"
+}
+
+## sending SIGHUP for reconfiguration
+#
+HUPPROG() {
+    if [ -f $1 ]; then
+        if [ "x$OSTYPE" = "xmsys" ]; then
+          COMMAND='echo "Skipping SIGHUP (not possible with MinGW)"'
+        else
+          COMMAND="kill -HUP `cat $1`"
+        fi
+	echo $COMMAND >> $SNMP_TMPDIR/invoked
+	VERBOSE_OUT 0 $COMMAND
+	$COMMAND > /dev/null 2>&1
+    fi
+}
+
+HUPAGENT() {
+    HUPPROG $SNMP_SNMPD_PID_FILE
+    if [ "x$OSTYPE" != "xmsys" ]; then
+        WAITFORAGENT "restarted"
+    fi
+}
+
+HUPTRAPD() {
+    HUPPROG $SNMP_SNMPTRAPD_PID_FILE
+    if [ "x$OSTYPE" != "xmsys" ]; then
+        WAITFORTRAPD "restarted"
+    fi
+}
+
+
+## used by STOPAGENT and STOPTRAPD
+# delay before kill to allow previous action to finish
+#    this is especially important for interaction between
+#    master agent and sub agent.
+STOPPROG() {
+    pid="`cat $1 2>/dev/null`"
+    if [ "x$pid" != "x" ]; then
+	COMMAND="`ECHOSENDSIGTERM $pid`"
+	echo "$COMMAND ($1)" >> $SNMP_TMPDIR/invoked
+	VERBOSE_OUT 0 "$COMMAND ($1)"
+        $COMMAND >/dev/null 2>&1
+        WAITFORNOTCOND "ISRUNNING $pid"
+    fi
+}
+
+#------------------------------------ -o-
+#
+STOPAGENT() {
+    SAVE_RESULTS
+    STOPPROG $SNMP_SNMPD_PID_FILE
+    if [ $SNMP_VERBOSE -gt 1 ]; then
+	echo "Agent Output:"
+	echo "$separator [stdout]"
+	cat $SNMP_SNMPD_LOG_FILE.stdout
+	echo "$separator [logfile]"
+	cat $SNMP_SNMPD_LOG_FILE
+	echo "$separator"
+    fi
+}
+
+#------------------------------------ -o-
+#
+STOPTRAPD() {
+    SAVE_RESULTS
+    STOPPROG $SNMP_SNMPTRAPD_PID_FILE
+    if [ $SNMP_VERBOSE -gt 1 ]; then
+	echo "snmptrapd Output:"
+	echo "$separator [stdout]"
+	cat $SNMP_SNMPTRAPD_LOG_FILE.stdout
+	echo "$separator [logfile]"
+	cat $SNMP_SNMPTRAPD_LOG_FILE
+	echo "$separator"
+    fi
+}
+
+#------------------------------------ -o-
+#
+FINISHED() {
+
+    ## no more changes to test result.
+    OK_TO_SAVE_RESULT=0
+
+    pids="`cat $SNMP_TMPDIR/*pid* 2>/dev/null`"
+    if [ "$SNMPDSTARTED" = "1" ] ; then
+      STOPAGENT
+    fi
+    if [ "$TRAPDSTARTED" = "1" ] ; then
+      STOPTRAPD
+    fi
+    for pid in $pids; do
+        if ISRUNNING $pid; then
+	    SNMP_SAVE_TMPDIR=yes
+	    COMMAND="`ECHOSENDSIGKILL $pid`"
+	    echo "$COMMAND ($pfile)" >> $SNMP_TMPDIR/invoked
+	    VERBOSE_OUT 0 "$COMMAND ($pfile)"
+	    $COMMAND > /dev/null 2>&1
+	    return_value=1
+	fi
+    done
+
+    # 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 "$headerStr...FAIL" >> $SNMP_TMPDIR/invoked
+	exit 1
+    fi
+
+    echo "$headerStr...ok" >> $SNMP_TMPDIR/invoked
+
+    if [ "x$SNMP_SAVE_TMPDIR" != "xyes" ]; then
+	REMOVETESTDATA
+    fi
+    exit 0
+}
+
+#------------------------------------ -o-
+#
+VERBOSE_OUT() {
+    if [ $SNMP_VERBOSE -gt $1 ]; then
+	shift
+	echo "$*"
+    fi
+}
+
+fi # Only allow ourselves to be eval'ed once
diff --git a/testing/fulltests/support/simple_run b/testing/fulltests/support/simple_run
new file mode 100755
index 0000000..1978009
--- /dev/null
+++ b/testing/fulltests/support/simple_run
@@ -0,0 +1,119 @@
+#!/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 in the source tree."
+       echo "The builddir environment variable can be set to point to the build 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 in the source tree."
+       echo "The builddir environment variable can be set to point to the build 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
+if [ "x$DYNAMIC_ANALYZER" = "x" ]; then
+    SNMP_SLEEP_DEFAULT=1
+else
+    SNMP_SLEEP_DEFAULT=10
+fi
+SNMP_SLEEP=${SNMP_SLEEP:=$SNMP_SLEEP_DEFAULT} 	## default seconds to sleep
+export SNMP_SLEEP
+
+# Find executables in source first, then build, then existing PATH.
+## 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/fulltests/transports/Stransport b/testing/fulltests/transports/Stransport
new file mode 100755
index 0000000..b33ff577
--- /dev/null
+++ b/testing/fulltests/transports/Stransport
@@ -0,0 +1,18 @@
+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
+. ../default/Sv3config
+
+STARTAGENT
+
+CAPTURE "snmpget -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/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/fulltests/transports/T310tcp_simple b/testing/fulltests/transports/T310tcp_simple
new file mode 100644
index 0000000..50c6a8a
--- /dev/null
+++ b/testing/fulltests/transports/T310tcp_simple
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER TCP Transport
+
+SKIPIFNOT NETSNMP_TRANSPORT_TCP_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=tcp
+
+. ./Stransport
diff --git a/testing/fulltests/transports/T320udpv6_simple b/testing/fulltests/transports/T320udpv6_simple
new file mode 100644
index 0000000..6a607c6
--- /dev/null
+++ b/testing/fulltests/transports/T320udpv6_simple
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER UDP6 Transport
+
+SKIPIFNOT NETSNMP_TRANSPORT_UDPIPV6_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=udp6
+SNMP_TEST_DEST="[::1]:"
+
+. ./Stransport
diff --git a/testing/fulltests/transports/T330tcpv6_simple b/testing/fulltests/transports/T330tcpv6_simple
new file mode 100644
index 0000000..09eb350
--- /dev/null
+++ b/testing/fulltests/transports/T330tcpv6_simple
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER TCP6 Transport
+
+SKIPIFNOT NETSNMP_TRANSPORT_TCPIPV6_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=tcp6
+SNMP_TEST_DEST="[::1]:"
+
+. ./Stransport
diff --git a/testing/fulltests/transports/T350unix_simple b/testing/fulltests/transports/T350unix_simple
new file mode 100644
index 0000000..053ba1f
--- /dev/null
+++ b/testing/fulltests/transports/T350unix_simple
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER Unix Transport
+
+SKIPIFNOT NETSNMP_TRANSPORT_UNIX_DOMAIN
+
+#
+# Begin test
+#
+
+SNMP_TRANSPORT_SPEC=unix
+SNMP_TEST_DEST=${SNMP_TMPDIR}/testunixsocket
+
+. ./Stransport
+
+# cleanup
+rm -f $SNMP_TEST_DEST
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/fulltests/transports/T399alias_simple b/testing/fulltests/transports/T399alias_simple
new file mode 100644
index 0000000..5f48311
--- /dev/null
+++ b/testing/fulltests/transports/T399alias_simple
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+. ../support/simple_eval_tools.sh
+
+HEADER ALIAS Transport
+
+SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
+SKIPIFNOT NETSNMP_TRANSPORT_ALIAS_DOMAIN
+
+#
+# Begin test
+#
+
+# configure the agent to accept user initial with noAuthNoPriv
+. ../default/Sv3config
+
+CONFIGAPP alias aliastest udp:localhost:$SNMP_SNMPD_PORT
+CONFIGAGENT '[snmp]' alias aliastest udp:localhost:$SNMP_SNMPD_PORT
+
+SNMP_TRANSPORT_SPEC=alias
+SNMP_TEST_DEST="aliastest"
+SNMP_SNMPD_PORT=""
+
+. ./Stransport
diff --git a/testing/fulltests/transports/test-localhost.cert b/testing/fulltests/transports/test-localhost.cert
new file mode 100644
index 0000000..2b49b26
--- /dev/null
+++ b/testing/fulltests/transports/test-localhost.cert
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIID2jCCAsKgAwIBAgIJAISEQRgZJXH4MA0GCSqGSIb3DQEBBQUAMFExCzAJBgNV
+BAYTAlVTMQswCQYDVQQIEwJDQTEOMAwGA1UEBxMFRGF2aXMxETAPBgNVBAoTCE5l
+dC1TTk1QMRIwEAYDVQQDEwlsb2NhbGhvc3QwHhcNMDkwNzA5MjMzNjMwWhcNMDkw
+ODA4MjMzNjMwWjBRMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExDjAMBgNVBAcT
+BURhdmlzMREwDwYDVQQKEwhOZXQtU05NUDESMBAGA1UEAxMJbG9jYWxob3N0MIIB
+IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4yjcQ7njcwny6NsFgM5WwEcV
+GtVe+h2k41JU9lJ9I1Eg7kRsSfJ7z9jX5JXpHXUXq54Mt/sLODeheyE8z5Zwjplc
+MGxLiPdRRp/3Bmlh3qrPLRLR17B+1MkcIz9UBUut2PusxEeCeA/g8RVEwK8oPger
+4I+KaXonXWmhm85EEHlWmZHTDTDa6MXURNs+EqcQrWRgHyf8bQhwpSjBzmbUtVq5
+ipVNWmqxPlSTkj5CqkrbNdkpOIBvZ6ThFfi2rwPDO+YzrucFcM+BfKRCDBcC4TsN
+2z0S1IseJGTNO1iidMrjCVzoIbMB+GouXjLJXAuLIF0X3dP+yOZzeSt5J2vCgQID
+AQABo4G0MIGxMB0GA1UdDgQWBBR+ZduNAGvbAtjo8+7DPUOI5CpQRjCBgQYDVR0j
+BHoweIAUfmXbjQBr2wLY6PPuwz1DiOQqUEahVaRTMFExCzAJBgNVBAYTAlVTMQsw
+CQYDVQQIEwJDQTEOMAwGA1UEBxMFRGF2aXMxETAPBgNVBAoTCE5ldC1TTk1QMRIw
+EAYDVQQDEwlsb2NhbGhvc3SCCQCEhEEYGSVx+DAMBgNVHRMEBTADAQH/MA0GCSqG
+SIb3DQEBBQUAA4IBAQCa2+5tz+fmgw9h8AF9l++8M1Lnzqrmsvy45phxx5f/rZe8
+BrspMlrT6bKcM9CTqezjkDZOrGEuYvcbMea2ntlXG0CIMxhWpgczwxZizGYIN6f1
+CK5siPlOzKObpkAwUjWbLm7N2BJGKp3FMq11Jt31tUwJTBc5viYzWBCQV4CxVoL5
+MqMfVyKjOK0eqgMvtrRgZ6t/098OiE4USheW+++b0zzo8Um/YIA9JQmCbZ4bh6jd
+/AgZhKRR5bXiOGmCLVweDV4MTi12Y285GBbylbdDuj8YV7mu7NzOn5kJ6xI00Vuc
+bGWtdcpEGkW7Zn4YCuxszpqtM3jLGZHCUqCuKSeP
+-----END CERTIFICATE-----
diff --git a/testing/fulltests/transports/test-localhost.priv b/testing/fulltests/transports/test-localhost.priv
new file mode 100644
index 0000000..2e2a8eb
--- /dev/null
+++ b/testing/fulltests/transports/test-localhost.priv
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpQIBAAKCAQEA4yjcQ7njcwny6NsFgM5WwEcVGtVe+h2k41JU9lJ9I1Eg7kRs
+SfJ7z9jX5JXpHXUXq54Mt/sLODeheyE8z5ZwjplcMGxLiPdRRp/3Bmlh3qrPLRLR
+17B+1MkcIz9UBUut2PusxEeCeA/g8RVEwK8oPger4I+KaXonXWmhm85EEHlWmZHT
+DTDa6MXURNs+EqcQrWRgHyf8bQhwpSjBzmbUtVq5ipVNWmqxPlSTkj5CqkrbNdkp
+OIBvZ6ThFfi2rwPDO+YzrucFcM+BfKRCDBcC4TsN2z0S1IseJGTNO1iidMrjCVzo
+IbMB+GouXjLJXAuLIF0X3dP+yOZzeSt5J2vCgQIDAQABAoIBADH4niPj864t5Rrm
+e5pvSdQ4juL9R0x8UvaS+Q/K665mPXlM4gmOZ0A88pldhQ+u34soVKHwfvJaApME
+p8z+yjoEcKxSVneF+IIx1HS7oAUMzFCdED6DnBMRPrheSQx1LoRKMSJonMHutEw0
+opBEt/SVWXEoAonbjmdVQnD0+jIpJRHYvPj8TWGtv7Vl7nHVTQBUYy+jd1CBQ4jA
+emHK5IGx++ytrfNXA1uDa38t8cSHg2Kpr8vhwkzZWVxskS46wSP/sPBqK/wg+Fxd
+8WovaGXpiyLb2Kj15rHBqd5wFeKHGJI/Q/X4qVvxLjKGeFJ1GDNvvg8mevRZ9Rei
+yIBu8oUCgYEA895WxeaC0S8dKZVAR7eXLauHUQ/lAIjql8OtdsHBfpTRLWvs9IpQ
+8y0n4sgcB/4iaBVVp8W414zjutCxXJrq5ZHKOi5zVqpPsamkKQYnGKfbU2q0WptD
+T1z2pLSk1L/MHjhbuwZbe0Hxf7vPg10loukFlUGkEajaHKOnhy1/BtcCgYEA7nW7
+4VmVcDM8yYblNNQPv2THoowZJlST9v7+Q9pjoYMYvruQWKcZyIjFSt9hetrfBtxO
++QxUqvfB8d/RSzg7wF7AmWHa3EfgT7h3X8glh7isb9YIRn6qBtxysWTXRqNGM+Wf
+hxylFQXezJPZ0hSbdXZThhwvvzD41Zbjq3XJzmcCgYEAoA4MO4Tn1O0sIa+gabF4
+GnRasnxRG4HBHmxCPBA8s5xukXYlJfZl3MSFShV2OFS2NkPSXPOrNmV0zZbM4W+X
+vaZq6La14mqTNZKWeIpePJNmoqAE0PbYPY1RH5akHDHpgOgSZHRutD36h5A3SQto
+eTyg+m4Dhcehp2xNtq3Iki8CgYEA3vPPTVxv/264iAgK58DaVG3KxezNWuw7R/WU
+ECbxfkJPcY124Zyi278dD+sZfj+DxStY3zwrMYril95XFkgmfa9Zzk8SzWCalo73
+deNxS5tcBliMdjTZjf6xcbDCIrZn3f/0juQ2aRiK/qXCQ8ymqUWPxFU4Qz9reHBS
+v64qmEMCgYEAsumq+jUoa3qYna45vyBMQf6NJLWCFYXloAtKVTECCb88T6MVyrOE
+cyj0Ybek+iezN8tbJHqiSWVtnRA9kjrC0ArwOKDipNFRkFogpURajzb/LnUQdW+P
+rOtNuLaNnLVo2kiK4QNbd+3BJQCDPBcZQq6dGccvyNXYVtfExY4WI2c=
+-----END RSA PRIVATE KEY-----
diff --git a/testing/fulltests/transports/test-user.cert b/testing/fulltests/transports/test-user.cert
new file mode 100644
index 0000000..4d56b35
--- /dev/null
+++ b/testing/fulltests/transports/test-user.cert
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIID4zCCAsugAwIBAgIJAIpBQHzq+nhbMA0GCSqGSIb3DQEBBQUAMFQxCzAJBgNV
+BAYTAlVTMQswCQYDVQQIEwJDQTEOMAwGA1UEBxMFRGF2aXMxETAPBgNVBAoTCE5l
+dC1TTk1QMRUwEwYDVQQDEwxkdGxzdGVzdHVzZXIwHhcNMDkwNzA5MjM0MDA2WhcN
+MDkwODA4MjM0MDA2WjBUMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExDjAMBgNV
+BAcTBURhdmlzMREwDwYDVQQKEwhOZXQtU05NUDEVMBMGA1UEAxMMZHRsc3Rlc3R1
+c2VyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0rw9BcVYbzJ8cjc4
+M0FX7h4ywT53xtCWypQXLgwNx7GduZU1DTzhVrcyWpeT8aw+ztW9wmH4NEeORSTK
+vGZJJPe3qJiFiPKNSJ17QzKSVG0QStJMPUFSCq7nNYIzZ3blliMHSDJef3q6bx+l
+4NUaDX03Usacgke8CCZlA51BRf+OOtqWNWoJ4QXucuJ/rERqgYRR1f7Pojs35ZAE
+7c71/WVcztl68tLH6yVZhpVDQKd+Ee/Mpir5j2X7FoRp3dUn5ATjpBw6WETw9tbU
+gjbcsrG4wE6czK0YSTxNTGJzC9rvEq3S+vbjPzLBVxrAWxXd7tAMkUSUWVJjCMMv
+e7hoOQIDAQABo4G3MIG0MB0GA1UdDgQWBBTFWVMk7fsGCU2GsKY9nk0bC2PN+jCB
+hAYDVR0jBH0we4AUxVlTJO37BglNhrCmPZ5NGwtjzfqhWKRWMFQxCzAJBgNVBAYT
+AlVTMQswCQYDVQQIEwJDQTEOMAwGA1UEBxMFRGF2aXMxETAPBgNVBAoTCE5ldC1T
+Tk1QMRUwEwYDVQQDEwxkdGxzdGVzdHVzZXKCCQCKQUB86vp4WzAMBgNVHRMEBTAD
+AQH/MA0GCSqGSIb3DQEBBQUAA4IBAQCWxKFEohA+Vl+gj4x0ng5FUMuHtTbtLbSG
+1+r6S94LvMBedloYT7mPIPgcVbMT5fqAeQpfVIaC0i5PkiUI9H2MXtO2AdBa5Jx5
+q18OdUj/LjGA3B7josq5HnIT/0OThYkAeKLIVDLHxiqOYrmFwqZOsK5BZ1RM/6Yl
++/UZuwujuHtnwRW3VWskVVFTF4NGKZ5f7lA+NSYqbHn/7OBqqgS2GxnSzcCD9BOq
+9zNMZoiW3jW+EoIL62pRtE+S/iL1BRBct4xwNP/RQyN4iaDVg0SC10YSSXk4+of+
+e2gCLgCxs0VyBzG8fIoX8Riq7cV99G119M1KT45jXcos1hO2gYuB
+-----END CERTIFICATE-----
diff --git a/testing/fulltests/transports/test-user.priv b/testing/fulltests/transports/test-user.priv
new file mode 100644
index 0000000..62507e3
--- /dev/null
+++ b/testing/fulltests/transports/test-user.priv
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEA0rw9BcVYbzJ8cjc4M0FX7h4ywT53xtCWypQXLgwNx7GduZU1
+DTzhVrcyWpeT8aw+ztW9wmH4NEeORSTKvGZJJPe3qJiFiPKNSJ17QzKSVG0QStJM
+PUFSCq7nNYIzZ3blliMHSDJef3q6bx+l4NUaDX03Usacgke8CCZlA51BRf+OOtqW
+NWoJ4QXucuJ/rERqgYRR1f7Pojs35ZAE7c71/WVcztl68tLH6yVZhpVDQKd+Ee/M
+pir5j2X7FoRp3dUn5ATjpBw6WETw9tbUgjbcsrG4wE6czK0YSTxNTGJzC9rvEq3S
++vbjPzLBVxrAWxXd7tAMkUSUWVJjCMMve7hoOQIDAQABAoIBADcXaOiST+06CJif
+YPzdT0x77o7gctWyAEnTbz/lfNDA2VgD7suYJ9zQpcRTLiUW/5B5BlPD4uxf7Iyc
+8rdQEj0s2YGk5fwIVPEv4mKN3P1fScwVsEKvSfBrCxzM/f1Fcv3OCIBSUqwG/KhC
+YM4nR9lQ696i95WDhV+oEe5g9QiELdADDlc1bv+nb9tVBzUTmHQgpGjwyaJMIzIV
+qkfpC4RV8Ojt5ELb6XjJRFxg9Qi+4kw6mLbBc/inysvVQBmsWLLlCKpbHt02YfUB
+atVODzTR5aUbcQKnNnHmojU05irbCeUXphgQKV9iuzsiWMV4edJ6tW8B10BuSlH5
+b0GNuwECgYEA/fwKmQ0jgrLjRc16cE2GWMZRmqBufTtGSw9tdohmUMIPqNt4+/XQ
+gKV0sfFZgsLLUG50xqRR6mmkzS7TVwl4uRqcrF7DRKKAkyFJP3QkLSQm+4EZFxOv
+dpHVLVpO1QJ+71YE4zKOdIfWRaoh5ZlEpGw3uzf+U0oNTD79X5fOA6ECgYEA1GhW
+iSEbU+2YPny4qeXdf8hcSn9+Ur6cBzxLhYMUHNI9ysyAQn3//MLoRConokiUEWG5
+BLO2zSmNqvHWKRBzaGr6Zjo/tGTWgOWnpLQMq+XYmDxWxDGCTLH2edqC+VIIqBnB
+QmLYBvde9En1UI/c3Cspb18Nh92I+VGZNPzPHZkCgYAPU82D7QIOmiMTDFJuQo9v
+/g/gp/vi/NfCId02QQcDqqJtS0li0zPQ/6sqLel79at1YCUV88apwdRbOY8xenXZ
+ndyEnndkRfZCasjT1nt0afEcTm8oMFzvZ9+YjBGj0zG72dITr/Je3++zZpADHhvB
+XHKEjt1/Q0HILyj1QuEA4QKBgQCUbfkSyJzVMHI0MGnG6Ae59ORxdthqsCJOeBb6
+TJfwcAaYQgHa9Tu+gOFYSPD7WaaG4vgszf0PL1t9OpQCjClprWAfsdK0l8bBujpF
+QUCdmveZooirf0FjoPTxP/5Ihcfg2GaRoor9iz3CjjAsROv8uviwiAbni6rdNuVN
+/uAo+QKBgQCfQf1RBj/iMmOZdi4SifBODmseJEYeAMlfEQBHPFmThNLiflz+VN17
+uqHS5IghPK0sXb7pOQmC2hCxT2sWybJx+qKsoOYHLQyrG5kg7CgVjltm6Hzwyizt
+Kuw6T4cUj1qRQG8aATL+sGuT69FHTSE3va5tlf9oYGsM6rIoA43g3w==
+-----END RSA PRIVATE KEY-----
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..d28b19b
--- /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..715641a
--- /dev/null
+++ b/testing/fulltests/unit-tests/T005table_dataset_cagentlib.c
@@ -0,0 +1,62 @@
+/* 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;
+
+SOCK_STARTUP;
+
+init_agent("snmpd");
+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");
+shutdown_agent();
+
+SOCK_CLEANUP;
+
+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..ed7ae68
--- /dev/null
+++ b/testing/fulltests/unit-tests/T006snmp_handler_registration_cagentlib.c
@@ -0,0 +1,46 @@
+/* HEADER Testing SNMP handler registration */
+
+static oid Oid[] = { 1, 3, 6, 1, 3, 327 }; /* experimental.327 */
+netsnmp_handler_registration *handler, *handler2;
+netsnmp_mib_handler *dh;
+netsnmp_cache *nc, *nc2;
+
+init_snmp("snmp");
+
+handler = netsnmp_create_handler_registration("experimental.327", NULL,
+	Oid, OID_LENGTH(Oid), HANDLER_CAN_RWRITE);
+OK(handler != NULL, "Handler creation.");
+
+nc = netsnmp_cache_create(10, NULL, NULL, Oid, OID_LENGTH(Oid));
+OK(nc, "netsnmp_cache allocation");
+OK(snmp_oid_compare(nc->rootoid, nc->rootoid_len, Oid, OID_LENGTH(Oid)) == 0,
+   "Handler private OID.");
+
+handler->handler->myvoid = nc;
+netsnmp_cache_handler_owns_cache(handler->handler);
+
+nc2 = handler->handler->myvoid;
+OK(nc2, "Handler private data");
+OK(snmp_oid_compare(nc2->rootoid, nc2->rootoid_len, Oid, OID_LENGTH(Oid)) == 0,
+   "Handler private OID.");
+
+OK(netsnmp_register_instance(handler) == MIB_REGISTERED_OK,
+   "MIB registration.");
+
+handler2 = netsnmp_create_handler_registration("experimental.327", NULL,
+        Oid, OID_LENGTH(Oid), HANDLER_CAN_RWRITE);
+OK(handler2 != NULL, "Second registration");
+
+OK(netsnmp_register_instance(handler2) == MIB_DUPLICATE_REGISTRATION,
+   "Duplicate MIB registration.");
+
+dh = netsnmp_handler_dup(handler->handler);
+OK(dh, "Handler duplication.");
+
+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..b94714a
--- /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 = { 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_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 = { 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_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 = { 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_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 = { 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_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/T010netsnmp_string_time_to_secs_clib.c b/testing/fulltests/unit-tests/T010netsnmp_string_time_to_secs_clib.c
new file mode 100644
index 0000000..e31aeeb
--- /dev/null
+++ b/testing/fulltests/unit-tests/T010netsnmp_string_time_to_secs_clib.c
@@ -0,0 +1,45 @@
+/* HEADER Testing the netsnmp_string_time_to_secs API */
+int secs;
+
+#define TESTIT(x,y) \
+    OKF(y == (secs = netsnmp_string_time_to_secs(x)), \
+        ("netsnmp_string_time_to_secs of %s returned %d, not 5", x, secs))
+
+TESTIT("5", 5);
+TESTIT("5", 5);
+
+TESTIT("5s", 5);
+TESTIT("5S", 5);
+
+TESTIT("5m", 5 * 60);
+TESTIT("5M", 5 * 60);
+
+TESTIT("5h", 5 * 60 * 60);
+TESTIT("5H", 5 * 60 * 60);
+
+TESTIT("5d", 5 * 60 * 60 * 24);
+TESTIT("5D", 5 * 60 * 60 * 24);
+
+TESTIT("5w", 5 * 60 * 60 * 24 * 7);
+TESTIT("5W", 5 * 60 * 60 * 24 * 7);
+
+/* now with longer times */
+TESTIT("1234", 1234);
+TESTIT("1234", 1234);
+
+TESTIT("1234s", 1234);
+TESTIT("1234S", 1234);
+
+TESTIT("1234m", 1234 * 60);
+TESTIT("1234M", 1234 * 60);
+
+TESTIT("1234h", 1234 * 60 * 60);
+TESTIT("1234H", 1234 * 60 * 60);
+
+TESTIT("1234d", 1234 * 60 * 60 * 24);
+TESTIT("1234D", 1234 * 60 * 60 * 24);
+
+TESTIT("1234w", 1234 * 60 * 60 * 24 * 7);
+TESTIT("1234W", 1234 * 60 * 60 * 24 * 7);
+
+
diff --git a/testing/fulltests/unit-tests/T011snmp_old_api_registration_cagentlib.c b/testing/fulltests/unit-tests/T011snmp_old_api_registration_cagentlib.c
new file mode 100644
index 0000000..6f1d449
--- /dev/null
+++ b/testing/fulltests/unit-tests/T011snmp_old_api_registration_cagentlib.c
@@ -0,0 +1,46 @@
+/* HEADER Testing SNMP handler registration via the old API */
+
+static oid Oid[] = { 1, 3, 6, 1, 3, 327 }; /* experimental.327 */
+struct variable var_array[] = {
+    { 0, 0/*type*/, 0/*acl*/, NULL/*findVar*/, 7, { 1, 3, 6, 1, 3, 327, 1 } },
+    { 0, 0/*type*/, 0/*acl*/, NULL/*findVar*/, 7, { 1, 3, 6, 1, 3, 327, 2 } },
+    { 0, 0/*type*/, 0/*acl*/, NULL/*findVar*/, 7, { 1, 3, 6, 1, 3, 327, 3 } },
+};
+netsnmp_session *sess;
+int res;
+
+init_snmp("snmp");
+
+sess = calloc(1, sizeof(*sess));
+snmp_sess_init(sess);
+
+res = 
+netsnmp_register_old_api("exp.327.a",
+                         var_array,
+                         sizeof(var_array[0]),
+                         sizeof(var_array)/sizeof(var_array[0]),
+                         Oid,
+                         sizeof(Oid)/sizeof(Oid[0]),
+                         2, /* priority */
+                         0, /* range_subid */
+                         0, /* range_ubound */
+                         sess,
+                         "context", 5/*timeout*/, 0/*flags - ignored*/);
+OK(res == SNMPERR_SUCCESS, "Handler registration (1).");
+
+/* Verify that duplicate registration does not cause any havoc. */
+res = 
+netsnmp_register_old_api("exp.327.b",
+                         var_array,
+                         sizeof(var_array[0]),
+                         sizeof(var_array)/sizeof(var_array[0]),
+                         Oid,
+                         sizeof(Oid)/sizeof(Oid[0]),
+                         2, /* priority */
+                         0, /* range_subid */
+                         0, /* range_ubound */
+                         sess,
+                         "context", 5/*timeout*/, 0/*flags - ignored*/);
+OK(res == SNMPERR_SUCCESS, "Handler registration (2).");
+
+snmp_shutdown("snmp");
diff --git a/testing/fulltests/unit-tests/T012binary_array_oid_clib.c b/testing/fulltests/unit-tests/T012binary_array_oid_clib.c
new file mode 100644
index 0000000..aeeb502
--- /dev/null
+++ b/testing/fulltests/unit-tests/T012binary_array_oid_clib.c
@@ -0,0 +1,72 @@
+/* HEADER Testing binary OID array */
+
+static const char test_name[] = "binary-array-of-OIDs-test";
+oid o1 = 1;
+oid o2 = 2;
+oid o3 = 6;
+oid o4 = 8;
+oid o5 = 9;
+oid ox = 7;
+oid oy = 10;
+netsnmp_index i1, i2, i3, i4, i5, ix, iy, *ip;
+const netsnmp_index *const i_last = &i5;
+netsnmp_index *a[] = { &ix, &iy };
+netsnmp_index *b[] = { &i4, &i2, &i3, &i1, &i5 };
+netsnmp_container *c;
+int i;
+
+init_snmp(test_name);
+
+c = netsnmp_container_get_binary_array();
+c->compare = netsnmp_compare_netsnmp_index;
+    
+i1.oids = &o1;
+i2.oids = &o2;
+i3.oids = &o3;
+i4.oids = &o4;
+i5.oids = &o5;
+ix.oids = &ox;
+iy.oids = &oy;
+i1.len = i2.len = i3.len = i4.len = i5.len = ix.len = iy.len = 1;
+
+for (i = 0; i < sizeof(b)/sizeof(b[0]); ++i)
+    CONTAINER_INSERT(c, b[i]);
+
+for (ip = CONTAINER_FIRST(c); ip; ip = CONTAINER_NEXT(c, ip)) {
+    for (i = sizeof(b)/sizeof(b[0]) - 1; i >= 0; --i)
+        if (c->compare(ip, b[i]) == 0)
+            break;
+    OKF(i >= 0, ("OID b[%d] = %" NETSNMP_PRIo "d present", i, b[i]->oids[0]));
+}
+
+for (i = 0; i < sizeof(b)/sizeof(b[0]); ++i) {
+    ip = CONTAINER_FIND(c, b[i]);
+    OKF(ip, ("Value b[%d] = %" NETSNMP_PRIo "d present", i, b[i]->oids[0]));
+    ip = CONTAINER_NEXT(c, b[i]);
+    if (c->compare(b[i], i_last) < 0)
+        OKF(ip && c->compare(b[i], ip) < 0,
+            ("Successor of b[%d] = %" NETSNMP_PRIo "d is %" NETSNMP_PRIo "d",
+             i, b[i]->oids[0], ip->oids[0]));
+    else
+        OKF(!ip, ("No successor found for b[%d] = %" NETSNMP_PRIo "d", i,
+                  b[i]->oids[0]));
+}
+
+for (i = 0; i < sizeof(a)/sizeof(a[0]); ++i) {
+    ip = CONTAINER_FIND(c, a[i]);
+    OKF(!ip, ("a[%d] = %" NETSNMP_PRIo "d absent", i, a[i]->oids[0]));
+    ip = CONTAINER_NEXT(c, a[i]);
+    if (c->compare(a[i], i_last) < 0)
+        OKF(ip && c->compare(ip, a[i]) > 0,
+            ("Successor of a[%d] = %" NETSNMP_PRIo "d is %" NETSNMP_PRIo "d",
+             i, a[i]->oids[0], ip->oids[0]));
+    else
+        OKF(!ip, ("No successor found for a[%d] = %" NETSNMP_PRIo "d", i,
+                  a[i]->oids[0]));
+}
+
+while ((ip = CONTAINER_FIRST(c)))
+  CONTAINER_REMOVE(c, ip);
+CONTAINER_FREE(c);
+
+snmp_shutdown(test_name);
diff --git a/testing/fulltests/unit-tests/T013binary_array_string_clib.c b/testing/fulltests/unit-tests/T013binary_array_string_clib.c
new file mode 100644
index 0000000..cc4361b
--- /dev/null
+++ b/testing/fulltests/unit-tests/T013binary_array_string_clib.c
@@ -0,0 +1,59 @@
+/* HEADER Testing binary string array */
+
+static const char test_name[] = "binary-array-of-strings-test";
+const char o1[] = "zebra";
+const char o2[] = "b-two";
+const char o3[] = "b";
+const char o4[] = "cedar";
+const char o5[] = "alpha";
+const char ox[] = "dev";
+const char oy[] = "aa";
+const char* const o_last = o1;
+const char *ip;
+const char *const a[] = { ox, oy };
+const char *const b[] = { o4, o2, o3, o1, o5 };
+netsnmp_container *c;
+int i;
+
+init_snmp(test_name);
+
+c = netsnmp_container_get_binary_array();
+c->compare = (netsnmp_container_compare*)strcmp;
+    
+for (i = 0; i < sizeof(b)/sizeof(b[0]); ++i)
+    CONTAINER_INSERT(c, b[i]);
+
+for (ip = CONTAINER_FIRST(c); ip; ip = CONTAINER_NEXT(c, ip)) {
+    for (i = sizeof(b)/sizeof(b[0]) - 1; i >= 0; --i)
+        if (c->compare(ip, b[i]) == 0)
+            break;
+    OKF(i >= 0, ("string b[%d] = \"%s\" present", i, b[i]));
+}
+
+for (i = 0; i < sizeof(b)/sizeof(b[0]); ++i) {
+    ip = CONTAINER_FIND(c, b[i]);
+    OKF(ip, ("b[%d] = \"%s\" present", i, b[i]));
+    ip = CONTAINER_NEXT(c, b[i]);
+    if (c->compare(b[i], o_last) < 0)
+        OKF(ip && c->compare(b[i], ip) < 0,
+            ("Successor of b[%d] = \"%s\" is \"%s\"", i, b[i], ip));
+    else
+        OKF(!ip, ("No successor found for b[%d] = \"%s\"", i, b[i]));
+}
+
+for (i = 0; i < sizeof(a)/sizeof(a[0]); ++i) {
+    ip = CONTAINER_FIND(c, a[i]);
+    OKF(!ip, ("a[%d] = \"%s\" absent", i, a[i]));
+    ip = CONTAINER_NEXT(c, a[i]);
+    if (c->compare(a[i], o_last) < 0)
+        OKF(ip && c->compare(ip, a[i]) > 0,
+            ("Successor of a[%d] = \"%s\" is \"%s\"", i, a[i], ip));
+    else
+        OKF(!ip, ("No successor found for a[%d] = \"%s\"", i, a[i]));
+}
+
+while ((ip = CONTAINER_FIRST(c)))
+  CONTAINER_REMOVE(c, ip);
+CONTAINER_FREE(c);
+
+snmp_shutdown(test_name);
diff --git a/testing/fulltests/unit-tests/T014gethostbyaddr_clib.c b/testing/fulltests/unit-tests/T014gethostbyaddr_clib.c
new file mode 100644
index 0000000..41a578e
--- /dev/null
+++ b/testing/fulltests/unit-tests/T014gethostbyaddr_clib.c
@@ -0,0 +1,97 @@
+/*
+ * HEADER Testing netsnmp_gethostbyaddr() 
+ */
+
+SOCK_STARTUP;
+
+{
+    int             ran_test = 0;
+#ifdef HAVE_GETHOSTBYADDR
+    struct hostent *h, *h2 = NULL;
+    struct in_addr  v4loop;
+    struct sockaddr_in sin_addr;
+    int             s;
+
+    v4loop.s_addr = htonl(INADDR_LOOPBACK);
+    memset(&sin_addr, 0, sizeof(sin_addr));
+    sin_addr.sin_family = AF_INET;
+    sin_addr.sin_addr = v4loop;
+    s = socket(AF_INET, SOCK_DGRAM, 0);
+    if (s >= 0) {
+        if (bind(s, (struct sockaddr *) &sin_addr, sizeof(sin_addr)) >= 0) {
+            h = netsnmp_gethostbyaddr(&v4loop, sizeof(v4loop), AF_INET);
+            if (h)
+                h2 = gethostbyname(h->h_name);
+            OKF(h && (strcmp(h->h_name, "localhost") == 0 ||
+                      (h2 && memcmp(h2->h_addr, &v4loop.s_addr,
+                                    sizeof(v4loop.s_addr)) == 0)),
+                ("127.0.0.1 lookup (%s -> %s)", h ? h->h_name : "(failed)",
+                 h2 ? inet_ntoa(*(struct in_addr *) h2->
+                                h_addr) : "(failed)"));
+            ran_test = 1;
+        }
+        close(s);
+    }
+#endif
+    if (!ran_test)
+        OKF(1, ("Skipped IPv4 test"));
+}
+
+{
+    struct hostent *h;
+#ifdef cygwin
+    static const struct in6_addr v6loop = { { IN6ADDR_LOOPBACK_INIT } };
+#else
+    static const struct in6_addr v6loop = IN6ADDR_LOOPBACK_INIT;
+#endif
+    struct sockaddr_in6 sin6_addr;
+    struct addrinfo hints, *addr = NULL, *ap;
+    char            buf[64];
+    int             s, res, ran_test = 0;
+
+    memset(&sin6_addr, 0, sizeof(sin6_addr));
+    sin6_addr.sin6_family = AF_INET6;
+    sin6_addr.sin6_addr = v6loop;
+    s = socket(AF_INET6, SOCK_DGRAM, 0);
+    if (s >= 0) {
+        if (bind(s, (struct sockaddr *) &sin6_addr, sizeof(sin6_addr)) >=
+            0) {
+            strcpy(buf, "(failed)");
+            h = netsnmp_gethostbyaddr(&v6loop, sizeof(v6loop), AF_INET6);
+            if (h) {
+                memset(&hints, 0, sizeof(hints));
+                hints.ai_family = AF_INET6;
+                res = getaddrinfo(h->h_name, NULL, &hints, &addr);
+                if (res == 0) {
+                    for (ap = addr; ap; ap = ap->ai_next) {
+                        if (ap->ai_family == AF_INET6) {
+                            inet_ntop(ap->ai_family,
+                                      &((struct sockaddr_in6 *) ap->
+                                        ai_addr)->sin6_addr, buf,
+                                      sizeof(buf));
+                            break;
+                        }
+                    }
+                    if (!ap)
+                        strcpy(buf, "no AF_INET6 address found");
+                    if (addr)
+                        freeaddrinfo(addr);
+                } else {
+                    snprintf(buf, sizeof(buf), "getaddrinfo() failed: %s",
+                             strerror(errno));
+                }
+            }
+            OKF(h && (strcmp(h->h_name, "localhost") == 0 ||
+                      (res == 0 && memcmp(addr->ai_addr, &sin6_addr,
+                                          sizeof(sin6_addr)) == 0)),
+                ("::1 lookup (%s -> %s)", h ? h->h_name : "(failed)",
+                 buf));
+            ran_test = 1;
+        }
+        close(s);
+    }
+    if (!ran_test)
+        OKF(1, ("Skipped IPv6 test"));
+}
+
+SOCK_CLEANUP;
diff --git a/testing/fulltests/unit-tests/T015int64_clib.c b/testing/fulltests/unit-tests/T015int64_clib.c
new file mode 100644
index 0000000..5f5f4b6
--- /dev/null
+++ b/testing/fulltests/unit-tests/T015int64_clib.c
@@ -0,0 +1,82 @@
+/* HEADER Testing 64-bit integer operations (U64). */
+
+int i, j;
+char buf[22];
+static const int64_t intval[] = {
+    0,
+    -1,
+    1,
+    37,
+    0x7fffffffUL,
+    0x80000000UL,
+    0x99999999UL,
+    0x7fffffffffffffffULL,
+    0x8000000000000000ULL,
+};
+
+for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
+    U64 a, b;
+    a.low = (uint32_t)intval[i];
+    a.high = (uint32_t)(intval[i] >> 32);
+    printI64(buf, &a);
+    read64(&b, buf);
+    OKF(memcmp(&a, &b, sizeof(a)) == 0,
+        ("[%d]: %" PRId64 " <> %s <> %" PRId64, i, intval[i], buf,
+         ((uint64_t)b.high) << 32 | b.low));
+}
+
+for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
+    for (j = i; j < sizeof(intval)/sizeof(intval[0]); ++j) {
+        U64 a, b;
+        uint64_t d;
+        a.low = (uint32_t)intval[i];
+        a.high = (uint32_t)(intval[i] >> 32);
+        b.low = (uint32_t)intval[j];
+        b.high = (uint32_t)(intval[j] >> 32);
+        u64Incr(&a, &b);
+        d = (uint64_t)a.high << 32 | a.low;
+        OKF(intval[i] + intval[j] == d,
+            ("%" PRId64 " + %" PRId64 " = %" PRId64 " <> %" PRId64, intval[i],
+             intval[j], intval[i] + intval[j], d));
+    }
+}
+        
+for (i = 0; i < sizeof(intval)/sizeof(intval[0]); ++i) {
+    for (j = i; j < sizeof(intval)/sizeof(intval[0]); ++j) {
+        U64 a, b, c;
+        uint64_t d;
+        a.low = (uint32_t)intval[i];
+        a.high = (uint32_t)(intval[i] >> 32);
+        b.low = (uint32_t)intval[j];
+        b.high = (uint32_t)(intval[j] >> 32);
+        u64Subtract(&a, &b, &c);
+        d = (uint64_t)c.high << 32 | c.low;
+        OKF(intval[i] - intval[j] == d,
+            ("%" PRId64 " - %" PRId64 " = %" PRId64 " <> %" PRId64, intval[i],
+             intval[j], intval[i] - intval[j], d));
+    }
+}
+        
+{
+    U64 old_val, new_val;
+    old_val.low = 7;
+    old_val.high = 0;
+    new_val = old_val;
+    OK(netsnmp_c64_check_for_32bit_wrap(&old_val, &new_val, 0) == 0, "cwrap1");
+    new_val.low = 8;
+    OK(netsnmp_c64_check_for_32bit_wrap(&old_val, &new_val, 0) == 0, "cwrap2");
+    new_val.low = 6;
+    OK(netsnmp_c64_check_for_32bit_wrap(&old_val, &new_val, 0) == 32, "cwrap3");
+    OK(netsnmp_c64_check_for_32bit_wrap(&old_val, &new_val, 1) == 32
+       && new_val.low == 6 && new_val.high == 1, "cwrap4");
+    old_val.low = 7;
+    old_val.high = 0xffffffffU;
+    new_val.low = 7;
+    new_val.high = old_val.high;
+    OK(netsnmp_c64_check_for_32bit_wrap(&old_val, &new_val, 0) == 0, "cwrap5");
+    new_val.low = 8;
+    OK(netsnmp_c64_check_for_32bit_wrap(&old_val, &new_val, 0) == 0, "cwrap6");
+    new_val.low = 6;
+    new_val.high = 0;
+    OK(netsnmp_c64_check_for_32bit_wrap(&old_val, &new_val, 0) == 64, "cwrap7");
+}
diff --git a/testing/fulltests/unit-tests/T016read_config_clib.c b/testing/fulltests/unit-tests/T016read_config_clib.c
new file mode 100644
index 0000000..06ceed5
--- /dev/null
+++ b/testing/fulltests/unit-tests/T016read_config_clib.c
@@ -0,0 +1,82 @@
+/* HEADER Testing read_config_read_octet_string_const(). */
+
+struct read_config_testcase {
+    /*
+     * inputs 
+     */
+    const char     *(*pf) (const char * readfrom, u_char ** str,
+                           size_t * len);
+    const char     *readfrom;
+    size_t          obuf_len;
+
+    /*
+     * expected outputs 
+     */
+    size_t          expected_offset;
+    const u_char   *expected_output;
+    size_t          expected_len;
+};
+
+static const u_char obuf1[] = { 1, 0, 2 };
+static const u_char obuf2[] = { 'a', 'b', 'c', 0 };
+
+static const struct read_config_testcase test_input[] = {
+    { &read_config_read_octet_string_const, "",           1, -1, NULL,  0 },
+    { &read_config_read_octet_string_const, "0x0",        1, -1, NULL,  1 },
+    { &read_config_read_octet_string_const, "0x0 0",      1, -1, NULL,  1 },
+
+    { &read_config_read_octet_string_const, "0x010002",   1, -1, NULL,  0 },
+    { &read_config_read_octet_string_const, "0x010002",   2, -1, NULL,  0 },
+    { &read_config_read_octet_string_const, "0x010002",   3, -1, obuf1, 0 },
+    { &read_config_read_octet_string_const, "0x010002",   4, -1, obuf1, 3 },
+    { &read_config_read_octet_string_const, "0x010002 0", 4,  9, obuf1, 3 },
+    { &read_config_read_octet_string_const, "0x010002",   0, -1, obuf1, 3 },
+
+    { &read_config_read_octet_string_const, "abc",        1, -1, NULL,  0 },
+    { &read_config_read_octet_string_const, "abc z",      1,  4, NULL,  0 },
+    { &read_config_read_octet_string_const, "abc",        2, -1, NULL,  1 },
+    { &read_config_read_octet_string_const, "abc",        3, -1, obuf2, 2 },
+    { &read_config_read_octet_string_const, "abc",        4, -1, obuf2, 3 },
+    { &read_config_read_octet_string_const, "abc z",      4,  4, obuf2, 3 },
+    { &read_config_read_octet_string_const, "abc",        0, -1, obuf2, 3 },
+};
+
+unsigned int i, j, ok;
+
+for (i = 0; i < sizeof(test_input) / sizeof(test_input[0]); i++) {
+    const struct read_config_testcase *const p = &test_input[i];
+    size_t          len = p->obuf_len;
+    u_char         *str = len > 0 ? malloc(len) : NULL;
+    const char     *result;
+    size_t          offset;
+
+    fflush(stdout);
+    result = (p->pf) (p->readfrom, &str, &len);
+    offset = result ? result - p->readfrom : -1;
+    OKF(offset == p->expected_offset,
+        ("test %d: expected offset %" NETSNMP_PRIz "d, got offset %"
+         NETSNMP_PRIz "d", i, p->expected_offset, offset));
+    if (offset == p->expected_offset) {
+        OKF(len == p->expected_len,
+            ("test %d: expected length %" NETSNMP_PRIz "d, got length %"
+             NETSNMP_PRIz "d", i, p->expected_len, len));
+        if (len == p->expected_len) {
+            ok = len < 0 || !p->expected_output
+                || memcmp(str, p->expected_output, len) == 0
+                || p->expected_output[len] != 0;
+            OKF(ok, ("test %d: output buffer mismatch", i));
+            if (!ok) {
+                printf("Expected: ");
+                for (j = 0; j < p->expected_len; ++j)
+                    printf("%02x ", p->expected_output[j]);
+                printf("\nActual:   ");
+                for (j = 0; j < len; ++j)
+                    printf("%02x ", str[j]);
+                printf("\n");
+            }
+        }
+    }
+
+    if (str)
+        free(str);
+}
diff --git a/testing/fulltests/unit-tests/T017strtoull_clib.c b/testing/fulltests/unit-tests/T017strtoull_clib.c
new file mode 100644
index 0000000..4ab9cad
--- /dev/null
+++ b/testing/fulltests/unit-tests/T017strtoull_clib.c
@@ -0,0 +1,94 @@
+/* HEADER Testing strtoull(). */
+
+#ifdef HAVE_STRTOULL
+
+OK(1, "Skipping strtoull() test because using strtoull() from C library.\n");;
+
+#else
+
+/*
+ * UINT64_C: C99 macro for the suffix for uint64_t constants. 
+ */
+#ifndef UINT64_C
+#ifdef _MSC_VER
+#define UINT64_C(c) c##ui64
+#else
+#define UINT64_C(c) c##ULL
+#endif
+#endif
+
+/*
+ * According to the C99 standard, the constant ULLONG_MAX must be defined in
+ * <limits.h>. Define it here for pre-C99 compilers.
+ */
+#ifndef ULLONG_MAX
+#define ULLONG_MAX UINT64_C(0xffffffffffffffff)
+#endif
+
+#ifndef PRIu64
+#ifdef _MSC_VER
+#define PRIu64 "I64u"
+#else
+#define PRIu64 "llu"
+#endif
+#endif
+
+struct strtoull_testcase {
+    /*
+     * inputs 
+     */
+    const char     *nptr;
+    int             base;
+    /*
+     * expected outputs 
+     */
+    int             expected_errno;
+    int             expected_end;
+    uint64_t        expected_result;
+};
+
+static const struct strtoull_testcase test_input[] = {
+    {"0x0", 0, 0, 3, 0},
+    {"1", 0, 0, 1, 1},
+    {"0x1", 0, 0, 3, 1},
+    {"  -0666", 0, 0, 7, -0666},
+    {"  -0x666", 0, 0, 8, -0x666},
+    {"18446744073709551614", 0, 0, 20, UINT64_C(0xfffffffffffffffe)},
+    {"0xfffffffffffffffe", 0, 0, 18, UINT64_C(0xfffffffffffffffe)},
+    {"18446744073709551615", 0, 0, 20, UINT64_C(0xffffffffffffffff)},
+    {"0xffffffffffffffff", 0, 0, 18, UINT64_C(0xffffffffffffffff)},
+    {"18446744073709551616", 0, ERANGE, 20, UINT64_C(0xffffffffffffffff)},
+    {"0x10000000000000000", 0, ERANGE, 19, UINT64_C(0xffffffffffffffff)},
+    {"ff", 16, 0, 2, 255},
+    {"0xff", 16, 0, 4, 255},
+    {" ", 0, 0, 0, 0},
+    {"0x", 0, 0, 1, 0},
+    {"0x", 8, 0, 1, 0},
+    {"0x", 16, 0, 1, 0},
+    {"zyyy", 0, 0, 0, 0},
+    {"0xfffffffffffffffff", 0, ERANGE, 19, ULLONG_MAX},
+    {"0xfffffffffffffffffz", 0, ERANGE, 19, ULLONG_MAX}
+};
+
+unsigned int    i;
+
+for (i = 0; i < sizeof(test_input) / sizeof(test_input[0]); i++) {
+    const struct strtoull_testcase *const p = &test_input[i];
+    char           *endptr;
+    uint64_t        result;
+
+    errno = 0;
+    result = strtoull(p->nptr, &endptr, p->base);
+    OKF(errno == p->expected_errno,
+        ("test %d (input \"%s\"): expected errno %d, got errno %d",
+         i, p->nptr, p->expected_errno, errno));
+    OKF(result == p->expected_result,
+        ("test %d (input \"%s\"): expected result %" PRIu64
+         ", got result %" PRIu64,
+         i, p->nptr, p->expected_result, result));
+    OKF(endptr - p->nptr == p->expected_end,
+        ("test %d (input \"%s\"): expected end %d, got end %d",
+         i, p->nptr, p->expected_end, (int) (endptr - p->nptr)));
+}
+
+#endif
diff --git a/testing/fulltests/unit-tests/T018read_config_capp.c b/testing/fulltests/unit-tests/T018read_config_capp.c
new file mode 100644
index 0000000..d6a92c9
--- /dev/null
+++ b/testing/fulltests/unit-tests/T018read_config_capp.c
@@ -0,0 +1,129 @@
+/*
+ * etimetest.c
+ *
+ * HEADER Testing read_config.c shutdown callback
+ *
+ * Expected SUCCESSes for all tests:    8
+ *
+ * Test of snmpd_unregister_config_handler                    	SUCCESSes:  4
+ * Test of unregister_all_config_handlers	              	SUCCESSes:  4
+ *
+ */
+
+#include <net-snmp/net-snmp-config.h>
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+#include <net-snmp/library/testing.h>
+
+/* #undef TEST_INTERNAL_API */
+#define TEST_INTERNAL_API 1
+
+/*
+ * Global variables.
+ */
+int callback_called = 0;
+
+static void test_callback(void);
+static void test_callback(void) {
+	++callback_called;
+};
+
+static void parse_config(const char *token, char *cptr);
+static void parse_config(const char *token, char *cptr) {
+	/* do nothing */
+};
+
+/* each test returns 0 on success, and >0 on failure */
+int test1(void);
+int test2(void);
+int test3(void);
+
+int (*tests[])(void) = { test1, test2, test3 };
+
+int main(int argc, char *argv[])
+{
+    int i,ret=0;
+    for(i=0;i<sizeof(tests)/sizeof(*tests);++i)
+	    ret+=tests[i]();
+    if (__did_plan == 0) {
+       PLAN(__test_counter);
+    }
+    return ret;
+}
+
+int test1() {
+    int sum = 0;
+    callback_called = 0;
+    fprintf(stdout, "# snmpd_unregister_config_handler tests\n");
+    init_snmp("testing");
+    OKF(callback_called==0, ("Callback shouldn't be called before registering it - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    callback_called = 0;
+    register_app_config_handler("testing", parse_config, test_callback, "module-name module-path");
+    OKF(callback_called==0, ("Callback shouldn't be called after registering it - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    callback_called = 0;
+    unregister_app_config_handler("testing");
+    OKF(callback_called==1, ("Callback should have been called once and only once after unregistering handler - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    callback_called = 0;
+    snmp_shutdown("testing");
+    OKF(callback_called==0, ("Callback should have been called once and only once after shutdown - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    return (sum==1)?0:1;
+}
+
+int test2(void) {
+    int sum = 0;
+    callback_called = 0;
+    fprintf(stdout, "# unregister_all_config_handlers tests\n");
+    init_snmp("testing");
+    OKF(callback_called==0, ("Callback shouldn't be called before registering it - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    callback_called = 0;
+    register_app_config_handler("testing", parse_config, test_callback, "module-name module-path");
+    OKF(callback_called==0, ("Callback shouldn't be called after registering it - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    callback_called = 0;
+    snmp_shutdown("testing");
+    OKF(callback_called==1, ("Callback should have been called once and only once during shutdown - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    return (sum==1)?0:1;
+}
+
+int test3(void) {
+#ifdef TEST_INTERNAL_API
+    int sum = 0;
+    callback_called = 0;
+    fprintf(stdout, "# unregister_all_config_handlers internal api tests\n");
+    init_snmp("testing");
+    OKF(callback_called==0, ("Callback shouldn't be called before registering it - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    callback_called = 0;
+    register_app_config_handler("testing", parse_config, test_callback, "module-name module-path");
+    OKF(callback_called==0, ("Callback shouldn't be called after registering it - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    callback_called = 0;
+    unregister_all_config_handlers();
+    OKF(callback_called==1, ("Callback should have been called once and only once after unregistering handler - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    callback_called = 0;
+    snmp_shutdown("testing");
+    OKF(callback_called==0, ("Callback should not have been called during shutdown after unregistering handler - it was called %d times\n",callback_called));
+    sum += callback_called;
+
+    return (sum==1)?0:1;
+#else
+    return 0;
+#endif
+}
diff --git a/testing/fulltests/unit-tests/T019_snmp_service_clib.c b/testing/fulltests/unit-tests/T019_snmp_service_clib.c
new file mode 100644
index 0000000..42ec8d3
--- /dev/null
+++ b/testing/fulltests/unit-tests/T019_snmp_service_clib.c
@@ -0,0 +1,253 @@
+/* HEADER Testing domain and target registrations from snmp_service. */
+
+/* Setup configuration reading */
+netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
+                      NETSNMP_DS_LIB_APPTYPE, "testprog");
+
+netsnmp_register_service_handlers();
+
+netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
+                       NETSNMP_DS_LIB_HAVE_READ_CONFIG, 1);
+
+/* Clear all default values */
+netsnmp_clear_default_domain();
+netsnmp_clear_default_target();
+
+/* Test domain lookup */
+
+OK(netsnmp_register_default_domain("a", "") == 0,
+   "register an empty token in domain 'a'");
+
+OK(netsnmp_register_default_domain("b", "alfa") == 0,
+    "register a single token in domain 'b'");
+
+OK(netsnmp_register_default_domain("c", "alfa beta") == 0,
+   "register two tokens in domain 'c'");
+
+#define OK_STRCMP(name, value, expected)                                \
+  OKF(value != NULL && strcmp(expected, value) == 0,                    \
+      ("Lookup of '" #name "' expected '" expected "', got %s%s%s",     \
+       value ? "'" : "", value ? value : "NULL", value ? "'" : ""))
+
+#define OK_STR_IS_NULL(name, value)                                     \
+  OKF(value == NULL,                                                    \
+      ("Lookup of '" #name "' expected NULL, got %s%s%s",               \
+       value ? "'" : "", value ? value : "NULL", value ? "'" : ""))
+
+#define OK_IS_NULL(name, value)                                         \
+  OKF(value == NULL, ("Lookup of '" #name "' expected NULL, got %p", value))
+
+#define OK_IS_NOT_NULL(name, value)                                     \
+  OKF(value != NULL, ("Lookup of '" #name "' expected non-NULL, got %p", value))
+
+{
+  const char *t;
+
+  t = netsnmp_lookup_default_domain("a");
+  OK_STRCMP(a, t, "");
+
+  t = netsnmp_lookup_default_domain("b");
+  OK_STRCMP(b, t, "alfa");
+
+  t = netsnmp_lookup_default_domain("c");
+  OK_STRCMP(c, t, "alfa");
+
+  t = netsnmp_lookup_default_domain("d");
+  OK_STR_IS_NULL(d, t);
+}
+
+{
+  const char *const *t;
+
+  t = netsnmp_lookup_default_domains("a");
+  OK_IS_NOT_NULL(a, t);
+  OK_STRCMP(a[0], t[0], "");
+  OK_STR_IS_NULL(a[1], t[1]);
+
+  t = netsnmp_lookup_default_domains("b");
+  OK_IS_NOT_NULL(b, t);
+  OK_STRCMP(b[0], t[0], "alfa");
+  OK_STR_IS_NULL(b[1], t[1]);
+
+  t = netsnmp_lookup_default_domains("c");
+  OK_IS_NOT_NULL(c, t);
+  OK_STRCMP(c[0], t[0], "alfa");
+  OK_STRCMP(c[1], t[1], "beta");
+  OK_STR_IS_NULL(c[2], t[2]);
+
+  t = netsnmp_lookup_default_domains("d");
+  OK_IS_NULL(d, t);
+}
+
+{
+  char cfg[] = "defDomain=b gamma";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "register user domain for 'b'");
+}
+
+{
+  char cfg[] = "defDomain=c gamma delta";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "register user domains for 'c'");
+}
+
+{
+  char cfg[] = "defDomain=b2 gamma";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "register user domain for 'b2'");
+}
+
+{
+  char cfg[] = "defDomain=c2 gamma delta";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "register user domains for 'c2'");
+}
+
+{
+  const char *t;
+
+  t = netsnmp_lookup_default_domain("b");
+  OK_STRCMP(b, t, "gamma");
+
+  t = netsnmp_lookup_default_domain("b2");
+  OK_STRCMP(b2, t, "gamma");
+
+  t = netsnmp_lookup_default_domain("c");
+  OK_STRCMP(c, t, "gamma");
+
+  t = netsnmp_lookup_default_domain("c2");
+  OK_STRCMP(c2, t, "gamma");
+}
+
+{
+  const char *const *t;
+
+  t = netsnmp_lookup_default_domains("b");
+  OK_IS_NOT_NULL(b, t);
+  OK_STRCMP(b[0], t[0], "gamma");
+  OK_STR_IS_NULL(b[1], t[1]);
+
+  t = netsnmp_lookup_default_domains("b2");
+  OK_IS_NOT_NULL(b2, t);
+  OK_STRCMP(b2[0], t[0], "gamma");
+  OK_STR_IS_NULL(b2[1], t[1]);
+
+  t = netsnmp_lookup_default_domains("c");
+  OK_IS_NOT_NULL(c, t);
+  OK_STRCMP(c[0], t[0], "gamma");
+  OK_STRCMP(c[1], t[1], "delta");
+  OK_STR_IS_NULL(c[2], t[2]);
+
+  t = netsnmp_lookup_default_domains("c2");
+  OK_IS_NOT_NULL(c2, t);
+  OK_STRCMP(c2[0], t[0], "gamma");
+  OK_STRCMP(c2[1], t[1], "delta");
+  OK_STR_IS_NULL(c2[2], t[2]);
+}
+
+{
+  char cfg[] = "defDomain=";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "Empty config line");
+}
+
+{
+  const char* t;
+  char cfg[] = "defDomain=e";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "Incomplete config line");
+  t = netsnmp_lookup_default_domain("e");
+  OK_STR_IS_NULL(e, t);
+}
+
+/* Test target lookup */
+
+OK(netsnmp_register_default_target("b", "alfa", "alfa-domain:b") == 0,
+   "register a 'alfa:alfa-domain:b' for application 'b'");
+
+OK(netsnmp_register_default_target("b", "beta", "beta-domain:b") == 0,
+   "register a 'beta:beta-domain:b' for application 'b'");
+
+OK(netsnmp_register_default_target("c", "alfa", "alfa-domain:c") == 0,
+   "register a 'alfa:alfa-domain:c' for application 'c'");
+
+{
+  const char *t;
+
+  t = netsnmp_lookup_default_target("b", "alfa");
+  OK_STRCMP(b:alfa, t, "alfa-domain:b");
+
+  t = netsnmp_lookup_default_target("b", "beta");
+  OK_STRCMP(b:beta, t, "beta-domain:b");
+
+  t = netsnmp_lookup_default_target("c", "alfa");
+  OK_STRCMP(c:alfa, t, "alfa-domain:c");
+
+  t = netsnmp_lookup_default_target("a", "alfa");
+  OK_STR_IS_NULL(a:alfa, t);
+
+  t = netsnmp_lookup_default_target("b", "gamma");
+  OK_STR_IS_NULL(b:gamma, t);
+
+  t = netsnmp_lookup_default_target("c", "beta");
+  OK_STR_IS_NULL(c:beta, t);
+}
+
+{
+  char cfg[] = "defTarget=b alfa user-alfa:b";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS,
+     "register user target 'alfa:user-alfa:b' for application 'b'");
+}
+
+{
+  char cfg[] = "defTarget=b gamma user-gamma:b";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS,
+     "register user target 'gamma:user-gamma:b' for application 'b'");
+}
+
+{
+  char cfg[] = "defTarget=c alfa user-alfa:c";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS,
+     "register user target 'alfa:user-alfa:c' for application 'c'");
+}
+
+
+{
+  const char *t;
+
+  t = netsnmp_lookup_default_target("b", "alfa");
+  OK_STRCMP(b:alfa, t, "user-alfa:b");
+
+  t = netsnmp_lookup_default_target("b", "beta");
+  OK_STRCMP(b:beta, t, "beta-domain:b");
+
+  t = netsnmp_lookup_default_target("c", "alfa");
+  OK_STRCMP(c:alfa, t, "user-alfa:c");
+
+  t = netsnmp_lookup_default_target("a", "alfa");
+  OK_STR_IS_NULL(a:alfa, t);
+
+  t = netsnmp_lookup_default_target("b", "gamma");
+  OK_STRCMP(b:gamma, t, "user-gamma:b");
+
+  t = netsnmp_lookup_default_target("b", "delta");
+  OK_STR_IS_NULL(b:delta, t);
+
+  t = netsnmp_lookup_default_target("c", "beta");
+  OK_STR_IS_NULL(c:beta, t);
+}
+
+{
+  char cfg[] = "defTarget=";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "Empty config line");
+}
+
+{
+  const char* t;
+  char cfg[] = "defTarget=e1";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "Incomplete config line #1");
+  t = netsnmp_lookup_default_target("e1", "");
+  OK_STR_IS_NULL(e1:, t);
+}
+
+{
+  const char* t;
+  char cfg[] = "defTarget=e2 omega";
+  OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "Incomplete config line #2");
+  t = netsnmp_lookup_default_target("e2", "omega");
+  OK_STR_IS_NULL(e2:omega, t);
+}
diff --git a/testing/fulltests/unit-tests/T020netsnmp_sprint_realloc_objid_tree_clib.c b/testing/fulltests/unit-tests/T020netsnmp_sprint_realloc_objid_tree_clib.c
new file mode 100644
index 0000000..ec6fc86
--- /dev/null
+++ b/testing/fulltests/unit-tests/T020netsnmp_sprint_realloc_objid_tree_clib.c
@@ -0,0 +1,82 @@
+/* HEADER Testing netsnmp_sprint_realloc_objid_tree() */
+
+static const oid objid1[] = {
+    1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 1, 4, 127, 0, 0, 0, 8
+};
+static const oid objid2[] = {
+    1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 2, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 1, 128
+};
+static const oid objid3[] = {
+    1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 1, 4, 255, 255, 255, 255, 8
+};
+static const oid objid4[] = {
+    1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 2, 16, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 128
+};
+static const oid objid5[] = {
+    1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 1, 4, 256, 256, 256, 256, 8
+};
+static const oid objid6[] = {
+    1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 2, 16, 256, 256, 256, 256, 256, 256, 256,
+    256, 256, 256, 256, 256, 256, 256, 256, 256, 128
+};
+static const oid objid7[] = {
+    1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 1, 4, -1, -1, -1, -1, 8
+};
+static const oid objid8[] = {
+    1, 3, 6, 1, 2, 1, 4, 32, 1, 5, 1, 2, 16, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, 128
+
+};
+struct objid_data { oid const *oid; int len; const char *str; };
+static const struct objid_data objid_array[] = {
+    { objid1, sizeof(objid1) / sizeof(objid1[0]),
+      "IP-MIB::ipAddressPrefixOrigin.1.ipv4.\"127.0.0.0\".8" },
+    { objid2, sizeof(objid2) / sizeof(objid2[0]),
+      "IP-MIB::ipAddressPrefixOrigin.1.ipv6."
+      "\"00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:01\".128" },
+    { objid3, sizeof(objid3) / sizeof(objid3[0]),
+      "IP-MIB::ipAddressPrefixOrigin.1.ipv4.\"255.255.255.255\".8" },
+    { objid4, sizeof(objid4) / sizeof(objid4[0]),
+      "IP-MIB::ipAddressPrefixOrigin.1.ipv6."
+      "\"ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff\".128" },
+    { objid5, sizeof(objid5) / sizeof(objid5[0]),
+      "IP-MIB::ipAddressPrefixOrigin.1.ipv4.\"....\".8" },
+    { objid6, sizeof(objid6) / sizeof(objid6[0]),
+      "IP-MIB::ipAddressPrefixOrigin.1.ipv6.\"................\".128" },
+    { objid7, sizeof(objid7) / sizeof(objid7[0]),
+      "IP-MIB::ipAddressPrefixOrigin.1.ipv4.\"....\".8" },
+    { objid8, sizeof(objid8) / sizeof(objid8[0]),
+      "IP-MIB::ipAddressPrefixOrigin.1.ipv6.\"................\".128" },
+};
+struct tree *tree;
+char *buf;
+size_t buf_len, out_len;
+int buf_overflow, i;
+char mibdir[PATH_MAX];
+
+snprintf(mibdir, sizeof(mibdir), "%s/%s", ABS_SRCDIR, "mibs");
+netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_MIBDIRS, mibdir);
+
+init_snmp("T020");
+
+for (i = 0; i < sizeof(objid_array) / sizeof(objid_array[0]); i++) {
+    buf = NULL;
+    buf_len = out_len = buf_overflow = 0;
+    tree = netsnmp_sprint_realloc_objid_tree((u_char **) &buf, &buf_len,
+                                             &out_len, 1/*allow_realloc*/,
+                                             &buf_overflow,
+                                             objid_array[i].oid,
+                                             objid_array[i].len);
+    OK(!!objid_array[i].str == !!tree,
+       "netsnmp_sprint_realloc_objid_tree() return value");
+    if (objid_array[i].str && tree) {
+        OKF(strcmp(objid_array[i].str, buf) == 0,
+            ("Mismatch: expected %s but got %s", objid_array[i].str,
+             buf ? (const char *)buf : "(NULL)"));
+    }
+    free(buf);
+}
+
+snmp_shutdown("T020");
diff --git a/testing/fulltests/unit-tests/T021binary_array_oid_duplicates_clib.c b/testing/fulltests/unit-tests/T021binary_array_oid_duplicates_clib.c
new file mode 100644
index 0000000..c027329
--- /dev/null
+++ b/testing/fulltests/unit-tests/T021binary_array_oid_duplicates_clib.c
@@ -0,0 +1,72 @@
+/* HEADER Testing duplicate handling in binary OID array */
+
+/* Much copied from T012 */
+static const char test_name[] = "binary-array-of-OIDs-duplicate-test";
+oid o1 = 1;
+oid o2 = 2;
+oid o3 = 6;
+oid o4 = 8;
+oid o5 = 9;
+oid ox = 7;
+oid oy = 10;
+netsnmp_index i1, i2, i3, i4, i5, ix, iy, *ip;
+netsnmp_index *b[] = { &i4, &i2, &i3, &i1, &i5 };
+netsnmp_container *c;
+int i;
+
+init_snmp(test_name);
+
+c = netsnmp_container_get_binary_array();
+c->compare = netsnmp_compare_netsnmp_index;
+netsnmp_binary_array_options_set(c, 1,
+				 CONTAINER_KEY_ALLOW_DUPLICATES);
+
+i1.oids = &o1;
+i2.oids = &o2;
+i3.oids = &o3;
+i4.oids = &o4;
+i5.oids = &o5;
+ix.oids = &ox;
+iy.oids = &oy;
+i1.len = i2.len = i3.len = i4.len = i5.len = ix.len = iy.len = 1;
+
+for (i = 0; i < sizeof(b)/sizeof(b[0]); ++i)
+    CONTAINER_INSERT(c, b[i]);
+
+#define MAX_ROUNDS 6
+/* Insert some duplicates of i4; also insert a duplicate of
+ * i1 to move the contents of the array around. */
+for (i = 0; i < MAX_ROUNDS; ++i) {
+    switch (i) {
+	case 0:
+	    /* First round: no insert */
+	    break;
+	case 1:
+	case 2:
+	case 4:
+	case 5:
+	    /* Insert another duplicate of our target object */
+	    CONTAINER_INSERT(c, &i4);
+	    break;
+	case 3:
+	    /* Insert a dulicate of an earlier OID, so that it
+	     * changes the binary search behavior */
+	    CONTAINER_INSERT(c, &i1);
+	    break;
+    }
+    /* Primary requirement: getnext returns the next value! */
+    ip = CONTAINER_FIND(c, &i4);
+    OKF(ip, ("FIND returned a value"));
+    OKF(c->compare(&i4, ip) == 0,
+        ("FIND returned oid %" NETSNMP_PRIo "d", ip->oids[0]));
+    ip = CONTAINER_NEXT(c, &i4);
+    OKF(ip, ("NEXT returned a value"));
+    OKF(c->compare(&i5, ip) == 0,
+        ("NEXT returned index 5 = %" NETSNMP_PRIo "d", i5.oids[0]));
+}
+
+while ((ip = CONTAINER_FIRST(c)))
+  CONTAINER_REMOVE(c, ip);
+CONTAINER_FREE(c);
+
+snmp_shutdown(test_name);
diff --git a/testing/fulltests/unit-tests/T021netsnmp_sprint_realloc_no_type_clib.c b/testing/fulltests/unit-tests/T021netsnmp_sprint_realloc_no_type_clib.c
new file mode 100644
index 0000000..57793d4
--- /dev/null
+++ b/testing/fulltests/unit-tests/T021netsnmp_sprint_realloc_no_type_clib.c
@@ -0,0 +1,51 @@
+/* HEADER Test sprint_realloc_variable with -OQ */
+
+/*
+ * Check that sprint_realloc_variable does not crash when it prints
+ * a variable with NULL type, while MIG says it's different type (INTEGER, ...).
+ * We will use MIB definition of nlmLogVariableTable, which has a column
+ * for most of the MIB types.
+ */
+static oid objid[] = {
+        1, 3, 6, 1, 2, 1, 92, 1, 3, 2, 1, 4
+};
+
+u_char *buf;
+size_t buf_len, out_len;
+int buf_overflow, i;
+char mibdir[PATH_MAX];
+int ret;
+
+snprintf(mibdir, sizeof(mibdir), "%s/%s", ABS_SRCDIR, "mibs");
+netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_MIBDIRS, mibdir);
+netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID, NETSNMP_DS_LIB_QUICKE_PRINT, TRUE);
+
+init_snmp("T021");
+
+netsnmp_variable_list variable;
+variable.next_variable = NULL;
+variable.name = objid;
+variable.name_length = sizeof(objid) / sizeof(objid[0]);
+variable.type = ASN_NULL;
+variable.val.integer = NULL;
+variable.val_len = 0;
+
+
+buf = NULL;
+buf_len = out_len = buf_overflow = 0;
+
+/* Try to format variable with nlmLogVariableEntry.4 - nlmLogVariableEntry.11
+ * OIDs and with NULL type.
+ */
+for (i=4; i<=11; i++) {
+    buf = NULL;
+    buf_len = out_len = buf_overflow = 0;
+    objid[11] = i;
+    ret = sprint_realloc_variable(&buf, &buf_len, &out_len, 1, objid,
+            sizeof(objid) / sizeof(objid[0]), &variable);
+    OKF(ret == 1, ("sprint_realloc_variable for %d returned %d: %s, expected 1",
+            i, ret, buf));
+    free(buf);
+}
+
+snmp_shutdown("T021");
diff --git a/testing/fulltests/unit-tests/T101pdu_type_clib.c b/testing/fulltests/unit-tests/T101pdu_type_clib.c
new file mode 100644
index 0000000..771aa61
--- /dev/null
+++ b/testing/fulltests/unit-tests/T101pdu_type_clib.c
@@ -0,0 +1,13 @@
+/* HEADER PDU type descriptions */
+const char *pdu_description;
+pdu_description = snmp_pdu_type(SNMP_MSG_GET);
+OKF((strcmp(pdu_description, "GET") == 0),
+    ("SNMP GET PDU type did not return the expected identifier (GET): %s",
+     pdu_description));
+
+#ifdef NETSNMP_NO_WRITE_SUPPORT
+pdu_description = snmp_pdu_type(163);
+OKF((strcmp(pdu_description, "?0xA3?") == 0),
+    ("SNMP SET PDU type did not return the expected unknown identifier (?0xA3?): %s",
+     pdu_description));
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
diff --git a/testing/fulltests/unit-tests/T102pdu_build_clib.c b/testing/fulltests/unit-tests/T102pdu_build_clib.c
new file mode 100644
index 0000000..1fba69e
--- /dev/null
+++ b/testing/fulltests/unit-tests/T102pdu_build_clib.c
@@ -0,0 +1,67 @@
+/* HEADER PDU building */
+
+SOCK_STARTUP;
+
+netsnmp_pdu *pdu;
+u_char *packet;
+size_t packet_len, offset = 0;
+netsnmp_session session, *ss;
+int rc;
+
+/* prototype copied from snmp_api.c */
+int             snmp_build(u_char ** pkt, size_t * pkt_len,
+                           size_t * offset, netsnmp_session * pss,
+                           netsnmp_pdu *pdu);
+
+init_snmp("testing");
+snmp_sess_init(&session);
+session.version = SNMP_VERSION_2c;
+session.peername = strdup("udp:127.0.0.1"); /* we won't actually connect */
+session.community = (u_char *) strdup("bogus");
+session.community_len = strlen((char *) session.community);
+ss = snmp_open(&session);
+
+OKF((ss != NULL), ("Creating a session failed"));
+if (ss == NULL)
+    snmp_perror("ack");
+
+packet_len = 4096;
+packet = malloc(packet_len);
+
+pdu = snmp_pdu_create(SNMP_MSG_GET);
+pdu->version = session.version;
+
+OKF((pdu != NULL), ("Creating a GET PDU failed"));
+
+rc = snmp_build(&packet, &packet_len, &offset, ss, pdu);
+
+#ifndef NETSNMP_NOTIFY_ONLY
+OKF((rc == SNMPERR_SUCCESS),
+    ("Building a GET PDU/packet should have worked: %d", rc));
+#else /* NETSNMP_NOTIFY_ONLY */
+OKF((rc != SNMPERR_SUCCESS),
+    ("Building a GET PDU/packet should have failed: %d", rc));
+#endif /* NETSNMP_NOTIFY_ONLY */
+
+offset = 0;
+pdu->command = 163; /* a SET message */
+rc = snmp_build(&packet, &packet_len, &offset, ss, pdu);
+
+#ifndef NETSNMP_NO_WRITE_SUPPORT
+OKF((rc == SNMPERR_SUCCESS),
+    ("Building a SET PDU/packet should have succeeded: %d", rc));
+#else /* NETSNMP_NO_WRITE_SUPPORT */
+OKF((rc != SNMPERR_SUCCESS),
+    ("Building a SET PDU/packet should have failed: %d", rc));
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
+
+
+
+offset = 0;
+pdu->command = SNMP_MSG_INFORM;
+rc = snmp_build(&packet, &packet_len, &offset, ss, pdu);
+
+OKF((rc == SNMPERR_SUCCESS),
+    ("Building an INFORM PDU/packet should have succeed: %d", rc));
+
+SOCK_CLEANUP;
diff --git a/testing/fulltests/unit-tests/T103pdu_parse_clib.c b/testing/fulltests/unit-tests/T103pdu_parse_clib.c
new file mode 100644
index 0000000..8d5882d
--- /dev/null
+++ b/testing/fulltests/unit-tests/T103pdu_parse_clib.c
@@ -0,0 +1,22 @@
+/* HEADER Parsing of PDUs */
+netsnmp_pdu pdu;
+int rc;
+u_char data[] = { 
+    0xA2, 0x1D, 0x02, 0x04, 0x4E, 0x39,
+    0xB2, 0x8E, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00,
+    0x30, 0x0F, 0x30, 0x0D, 0x06, 0x08, 0x2B, 0x06,
+    0x01, 0x02, 0x01, 0x01, 0x04, 0x00, 0x04, 0x01,
+    0x66
+};
+size_t data_length=sizeof(data);
+
+rc = snmp_pdu_parse(&pdu, data, &data_length);
+
+OKF((rc == 0), ("Parsing of a generic PDU failed"));
+
+#ifdef NETSNMP_NO_WRITE_SUPPORT
+data[0] = 0xA3; /* changes it to a SET pdu */
+rc = snmp_pdu_parse(&pdu, data, &data_length);
+
+OKF((rc != 0), ("Parsing of a generic SET PDU succeeded"));
+#endif /* NETSNMP_NO_WRITE_SUPPORT */
diff --git a/testing/keymanagetest.c b/testing/keymanagetest.c
deleted file mode 100644
index d9a1aa8..0000000
--- a/testing/keymanagetest.c
+++ /dev/null
@@ -1,651 +0,0 @@
-/*
- * keymanagetest.c
- *
- * Expected SUCCESSes:  2 + 2 + 3 for all tests.
- *
- * Returns:
- *      Number of FAILUREs.
- * 
- *
- * FIX  Or how about passing a usmUser name and looking up the entry as
- *      a means of getting key material?  This means the userList is
- *      available from an application...
- *
- * ASSUMES  No key management functions return non-zero success codes.
- *
- * Test of generate_Ku().                       SUCCESSes: 2
- * Test of generate_kul().                      SUCCESSes: 2
- * Test of {encode,decode}_keychange().         SUCCESSes: 3
- */
-
-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 "keytools.h"
-#include "tools.h"
-#include "scapi.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][-aklu][-E <engineID>][-N <newkey>][-O <oldkey>][-P <passphrase>]"
-#define OPTIONLIST	"aqE:hklN:O:P:u"
-
-int             doalltests = 0, dogenKu = 0, dogenkul = 0, dokeychange = 0;
-
-#define	ALLOPTIONS	(doalltests + dogenKu + dogenkul + dokeychange)
-
-
-#define LOCAL_MAXBUF	(1024 * 8)
-#define NL		"\n"
-
-#define OUTPUTALWAYS(o)	fprintf(stdout, "\n\n%s\n\n", o);
-#define OUTPUT(o)	if (!bequiet) { OUTPUTALWAYS(o); }
-
-#define SUCCESS(s)					\
-{							\
-	if (!failcount && !bequiet)					\
-		fprintf(stdout, "\nSUCCESS: %s\n", s);	\
-}
-
-#define FAILED(e, f)					\
-{							\
-	if (e != SNMPERR_SUCCESS && !bequiet) {			\
-		fprintf(stdout, "\nFAILED: %s\n", f);	\
-		failcount += 1;				\
-	}						\
-}
-
-
-
-/*
- * Test specific globals.
- */
-#define	ENGINEID_DEFAULT	"1.2.3.4wild"
-#define PASSPHRASE_DEFAULT	"Clay's Conclusion: Creativity is great, " \
-					"but plagiarism is faster."
-#define OLDKEY_DEFAULT		"This is a very old key."
-#define NEWKEY_DEFAULT		"This key, on the other hand, is very new."
-
-char           *engineID = NULL;
-char           *passphrase = NULL;
-char           *oldkey = NULL;
-char           *newkey = NULL;
-int             bequiet = 0;
-
-
-/*
- * Prototypes.
- */
-void            usage(FILE * ofp);
-
-int             test_genkul(void);
-int             test_genKu(void);
-int             test_keychange(void);
-
-
-
-
-int
-main(int argc, char **argv)
-{
-    int             rval = SNMPERR_SUCCESS, failcount = 0;
-    char            ch;
-
-    local_progname = argv[0];
-    optarg = NULL;
-
-    /*
-     * Parse.
-     */
-    while ((ch = getopt(argc, argv, OPTIONLIST)) != EOF) {
-        switch (ch) {
-        case 'a':
-            doalltests = 1;
-            break;
-        case 'E':
-            engineID = optarg;
-            break;
-        case 'k':
-            dokeychange = 1;
-            break;
-        case 'l':
-            dogenkul = 1;
-            break;
-        case 'N':
-            newkey = optarg;
-            break;
-        case 'O':
-            oldkey = optarg;
-            break;
-        case 'P':
-            passphrase = optarg;
-            break;
-        case 'u':
-            dogenKu = 1;
-            break;
-        case 'q':
-            bequiet = 1;
-            break;
-        case 'h':
-            rval = 0;
-        default:
-            usage(stdout);
-            exit(rval);
-        }
-
-        argc -= 1;
-        argv += 1;
-        if (optarg) {
-            argc -= 1;
-            argv += 1;
-        }
-
-        optind = 1;
-        optarg = NULL;
-    }                           /* endwhile getopt */
-
-    if ((argc > 1)) {
-        usage(stdout);
-        exit(1000);
-
-    } else if (ALLOPTIONS != 1) {
-        usage(stdout);
-        exit(1000);
-    }
-
-
-    /*
-     * Test stuff.
-     */
-    rval = sc_init();
-    FAILED(rval, "sc_init().");
-
-    if (dogenKu || doalltests) {
-        failcount += test_genKu();
-    }
-    if (dogenkul || doalltests) {
-        failcount += test_genkul();
-    }
-    if (dokeychange || doalltests) {
-        failcount += test_keychange();
-    }
-
-
-    /*
-     * Cleanup.
-     */
-    rval = sc_shutdown(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_SHUTDOWN,
-                       NULL, NULL);
-    FAILED(rval, "sc_shutdown().");
-
-    return failcount;
-
-}                               /* end main() */
-
-
-
-
-
-void
-usage(FILE * ofp)
-{
-    fprintf(ofp,
-            USAGE
-            "" NL
-            "    -a			All tests." NL
-            "    -E [0x]<engineID>	snmpEngineID string."
-            NL
-            "    -k			Test {encode,decode}_keychange()."
-            NL
-            "    -l			generate_kul()."
-            NL
-            "    -h			Help."
-            NL
-            "    -N [0x]<newkey>	New key (for testing KeyChange TC)."
-            NL
-            "    -O [0x]<oldkey>	Old key (for testing KeyChange TC)."
-            NL
-            "    -P <passphrase>	Source string for usmUser master key."
-            NL
-            "    -u			generate_Ku()."
-            NL
-            "    -q			be quiet."
-            NL "" NL, local_progname);
-
-}                               /* end usage() */
-
-
-
-
-#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_genKu
- *
- * Returns:
- *	Number of failures.
- *
- *
- * Test generation of usmUser master key from a passphrase.
- *
- * ASSUMES  Passphrase is made of printable characters!
- */
-int
-test_genKu(void)
-{
-    int             rval = SNMPERR_SUCCESS,
-        failcount = 0,
-        properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACMD5), kulen;
-    char           *hashname = "usmHMACMD5AuthProtocol.", *s;
-    u_char          Ku[LOCAL_MAXBUF];
-    oid            *hashtype = usmHMACMD5AuthProtocol;
-
-    OUTPUT("Test of generate_Ku --");
-
-    /*
-     * Set passphrase.
-     */
-    if (!passphrase) {
-        passphrase = PASSPHRASE_DEFAULT;
-    }
-    if (!bequiet)
-        fprintf(stdout, "Passphrase%s:\n\t%s\n\n",
-                (passphrase == PASSPHRASE_DEFAULT) ? " (default)" : "",
-                passphrase);
-
-
-  test_genKu_again:
-    memset(Ku, 0, LOCAL_MAXBUF);
-    kulen = LOCAL_MAXBUF;
-
-    rval = generate_Ku(hashtype, USM_LENGTH_OID_TRANSFORM,
-                       passphrase, strlen(passphrase), Ku, &kulen);
-    FAILED(rval, "generate_Ku().");
-
-    if (kulen != properlength) {
-        FAILED(SNMPERR_GENERR, "Ku length is wrong for this hashtype.");
-    }
-
-    binary_to_hex(Ku, kulen, &s);
-    if (!bequiet)
-        fprintf(stdout, "Ku (len=%d):  %s\n", kulen, s);
-    free_zero(s, kulen);
-
-    SUCCESS(hashname);
-    if (!bequiet)
-        fprintf(stdout, "\n");
-
-    if (hashtype == usmHMACMD5AuthProtocol) {
-        hashtype = usmHMACSHA1AuthProtocol;
-        hashname = "usmHMACSHA1AuthProtocol.";
-        properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACSHA1);
-        goto test_genKu_again;
-    }
-
-    return failcount;
-
-}                               /* end test_genKu() */
-
-
-
-
-/*******************************************************************-o-******
- * test_genkul
- *
- * Returns:
- *	Number of failures.
- *
- *
- * Test of generate_kul().
- *
- * A passphrase and engineID are hashed into a master key Ku using
- * both known hash transforms.  Localized keys, also using both hash
- * transforms, are generated from each of these master keys.
- *
- * ASSUME  generate_Ku is already tested.
- * ASSUME  engineID is initially a NULL terminated string.
- */
-int
-test_genkul(void)
-{
-    int             rval = SNMPERR_SUCCESS,
-        failcount = 0,
-        properlength, kulen, kul_len, engineID_len, isdefault = FALSE;
-
-    char           *s = NULL,
-        *testname = "Using HMACMD5 to create master key.",
-        *hashname_Ku = "usmHMACMD5AuthProtocol", *hashname_kul;
-
-    u_char          Ku[LOCAL_MAXBUF], kul[LOCAL_MAXBUF];
-
-    oid            *hashtype_Ku = usmHMACMD5AuthProtocol, *hashtype_kul;
-
-    OUTPUT("Test of generate_kul --");
-
-
-    /*
-     * Set passphrase and engineID.
-     *
-     * If engineID begins with 0x, assume it is written in (printable)
-     * hex and convert it to binary data.
-     */
-    if (!passphrase) {
-        passphrase = PASSPHRASE_DEFAULT;
-    }
-    if (!bequiet)
-        fprintf(stdout, "Passphrase%s:\n\t%s\n\n",
-                (passphrase == PASSPHRASE_DEFAULT) ? " (default)" : "",
-                passphrase);
-
-    if (!engineID) {
-        engineID = ENGINEID_DEFAULT;
-        isdefault = TRUE;
-    }
-
-    engineID_len = strlen(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;
-        binary_to_hex(engineID, engineID_len, &s);
-    }
-
-    if (!bequiet)
-        fprintf(stdout, "engineID%s (len=%d):  %s\n\n",
-                (isdefault) ? " (default)" : "",
-                engineID_len, (s) ? s : engineID);
-    if (s) {
-        SNMP_FREE(s);
-    }
-
-
-
-    /*
-     * Create a master key using both hash transforms; create localized
-     * keys using both hash transforms from each master key.
-     */
-  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);
-    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);
-    free_zero(s, kulen);
-
-
-  test_genkul_again_local:
-    memset(kul, 0, LOCAL_MAXBUF);
-    kul_len = LOCAL_MAXBUF;
-
-    rval = generate_kul(hashtype_kul, USM_LENGTH_OID_TRANSFORM,
-                        engineID, engineID_len, Ku, kulen, kul, &kul_len);
-
-    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.");
-        }
-
-    } else {
-        FAILED(rval, "generate_kul().");
-
-        if (kul_len != properlength) {
-            FAILED(SNMPERR_GENERR,
-                   "kul length is wrong for the given hashtype.");
-        }
-
-        binary_to_hex(kul, kul_len, &s);
-        fprintf(stdout, "kul (%s) (len=%d):  %s\n",
-                ((hashtype_Ku == usmHMACMD5AuthProtocol) ? "MD5" : "SHA"),
-                kul_len, s);
-        free_zero(s, kul_len);
-    }
-
-
-    /*
-     * Create localized key using the other hash transform, but from
-     * * the same master key.
-     */
-    if (hashtype_kul == usmHMACMD5AuthProtocol) {
-        hashtype_kul = usmHMACSHA1AuthProtocol;
-        hashname_kul = "usmHMACSHA1AuthProtocol";
-        properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACSHA1);
-        goto test_genkul_again_local;
-    }
-
-    SUCCESS(testname);
-
-
-    /*
-     * Re-create the master key using the other hash transform.
-     */
-    if (hashtype_Ku == usmHMACMD5AuthProtocol) {
-        hashtype_Ku = usmHMACSHA1AuthProtocol;
-        hashname_Ku = "usmHMACSHA1AuthProtocol";
-        testname = "Using HMACSHA1 to create master key.";
-        goto test_genkul_again_master;
-    }
-
-    return failcount;
-
-}                               /* end test_genkul() */
-
-
-
-
-/*******************************************************************-o-******
- * test_keychange
- *
- * Returns:
- *	Number of failures.
- *
- *
- * Test of KeyChange TC implementation.
- *
- * ASSUME newkey and oldkey begin as NULL terminated strings.
- */
-int
-test_keychange(void)
-{
-    int             rval = SNMPERR_SUCCESS,
-        failcount = 0,
-        properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACMD5),
-        oldkey_len,
-        newkey_len,
-        keychange_len,
-        temp_len, isdefault_new = FALSE, isdefault_old = FALSE;
-
-    char           *hashname = "usmHMACMD5AuthProtocol.", *s;
-
-    u_char          oldkey_buf[LOCAL_MAXBUF],
-        newkey_buf[LOCAL_MAXBUF],
-        temp_buf[LOCAL_MAXBUF], keychange_buf[LOCAL_MAXBUF];
-
-    oid            *hashtype = usmHMACMD5AuthProtocol;
-
-    OUTPUT("Test of KeyChange TC --");
-
-
-    /*
-     * Set newkey and oldkey.
-     */
-    if (!newkey) {              /* newkey */
-        newkey = NEWKEY_DEFAULT;
-        isdefault_new = TRUE;
-    }
-    newkey_len = strlen(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);
-    }
-
-    if (!oldkey) {              /* oldkey */
-        oldkey = OLDKEY_DEFAULT;
-        isdefault_old = TRUE;
-    }
-    oldkey_len = strlen(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;
-        binary_to_hex(oldkey, oldkey_len, &s);
-    }
-
-
-
-  test_keychange_again:
-    memset(oldkey_buf, 0, LOCAL_MAXBUF);
-    memset(newkey_buf, 0, LOCAL_MAXBUF);
-    memset(keychange_buf, 0, LOCAL_MAXBUF);
-    memset(temp_buf, 0, LOCAL_MAXBUF);
-
-    memcpy(oldkey_buf, oldkey, SNMP_MIN(oldkey_len, properlength));
-    memcpy(newkey_buf, newkey, SNMP_MIN(newkey_len, properlength));
-    keychange_len = LOCAL_MAXBUF;
-
-
-    binary_to_hex(oldkey_buf, properlength, &s);
-    fprintf(stdout, "\noldkey%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",
-            (isdefault_new) ? " (default)" : "", properlength, s);
-    SNMP_FREE(s);
-
-
-    rval = encode_keychange(hashtype, USM_LENGTH_OID_TRANSFORM,
-                            oldkey_buf, properlength,
-                            newkey_buf, properlength,
-                            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.");
-    }
-
-    binary_to_hex(keychange_buf, keychange_len, &s);
-    fprintf(stdout, "(%s) KeyChange string:  %s\n\n",
-            ((hashtype == usmHMACMD5AuthProtocol) ? "MD5" : "SHA"), s);
-    SNMP_FREE(s);
-
-    temp_len = properlength;
-    rval = decode_keychange(hashtype, USM_LENGTH_OID_TRANSFORM,
-                            oldkey_buf, properlength,
-                            keychange_buf, properlength * 2,
-                            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.");
-    }
-
-    binary_to_hex(temp_buf, temp_len, &s);
-    fprintf(stdout, "decoded newkey:  %s\n\n", s);
-    SNMP_FREE(s);
-
-
-    if (memcmp(newkey_buf, temp_buf, temp_len)) {
-        FAILED(SNMPERR_GENERR, "newkey did not decode properly.");
-    }
-
-
-    SUCCESS(hashname);
-    fprintf(stdout, "\n");
-
-
-    /*
-     * Multiplex different test combinations.
-     *
-     * First clause is for Test #2, second clause is for (last) Test #3.
-     */
-    if (hashtype == usmHMACMD5AuthProtocol) {
-        hashtype = usmHMACSHA1AuthProtocol;
-        hashname = "usmHMACSHA1AuthProtocol (w/DES length kul's).";
-        properlength = BYTESIZE(SNMP_TRANS_PRIVLEN_1DES)
-            + BYTESIZE(SNMP_TRANS_PRIVLEN_1DES_IV);
-        goto test_keychange_again;
-
-    } else if (properlength < BYTESIZE(SNMP_TRANS_AUTHLEN_HMACSHA1)) {
-        hashtype = usmHMACSHA1AuthProtocol;
-        hashname = "usmHMACSHA1AuthProtocol.";
-        properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACSHA1);
-        goto test_keychange_again;
-    }
-
-    return failcount;
-
-}                               /* end test_keychange() */
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/scapitest.c b/testing/scapitest.c
deleted file mode 100644
index 82e9098..0000000
--- a/testing/scapitest.c
+++ /dev/null
@@ -1,489 +0,0 @@
-/*
- * scapitest.c
- *
- * Expected SUCCESSes:  2 + 10 + 1 for all tests.
- *
- * Returns:
- *      Number of FAILUREs.
- *
- *
- * ASSUMES  No key management functions return non-zero success codes.
- *
- * XXX  Split into individual modules?
- * XXX  Error/fringe conditions should be tested.
- *
- *
- * Test of sc_random.                                           SUCCESSes: 2.
- *      REQUIRES a human to spot check for obvious non-randomness...
- *
- * Test of sc_generate_keyed_hash and sc_check_keyed_hash.      SUCCESSes: 10.
- *
- * Test of sc_encrypt and sc_decrypt.                           SUCCESSes: 1.
- */
-
-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 "keytools.h"
-#include "tools.h"
-#include "scapi.h"
-#include "transform_oids.h"
-#include "callback.h"
-
-#include <stdlib.h>
-
-extern char    *optarg;
-extern int      optind, optopt, opterr;
-
-#define DEBUG                   /* */
-
-
-
-/*
- * Globals, &c...
- */
-char           *local_progname;
-
-#define USAGE	"Usage: %s [-h][-acHr]"
-#define OPTIONLIST	"achHr"
-
-int             doalltests = 0, docrypt = 0, dokeyedhash = 0, dorandom = 0;
-
-#define	ALLOPTIONS	(doalltests + docrypt + dokeyedhash + dorandom)
-
-
-
-#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 BIGSTRING							\
-    "   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"	\
-    "of the sea, the beacons flashing on the shore, together make"	\
-    "a prism which is marvellously calculated to entertain but not"	\
-    "fatigue the eye.  The lofty ships with their complex webs of"	\
-    "rigging, swayed to and fro by the swell in harmonious dance,"	\
-    "all help to maintain a taste for rhythm and beauty in the"		\
-    "mind.  And above all there is a mysterious, aristrocratic kind"	\
-    "of pleasure to be had, for those who have lost all curiosity"	\
-    "or ambition, as they strech on the belvedere or lean over the"	\
-    "mole to watch the arrivals and departures of other men, those"	\
-    "who still have sufficient strength of purpose in them, the"	\
-    "urge to travel or enrich themselves."				\
-    "	-- 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 MLCOUNT_MAX	6       /* MAC Length Count Maximum. */
-
-
-
-/*
- * Prototypes.
- */
-void            usage(FILE * ofp);
-
-int             test_docrypt(void);
-int             test_dokeyedhash(void);
-int             test_dorandom(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 'a':
-            doalltests = 1;
-            break;
-        case 'c':
-            docrypt = 1;
-            break;
-        case 'H':
-            dokeyedhash = 1;
-            break;
-        case 'r':
-            dorandom = 1;
-            break;
-        case 'h':
-            rval = 0;
-        default:
-            usage(stdout);
-            exit(rval);
-        }
-
-        argc -= 1;
-        argv += 1;
-        optind = 1;
-    }                           /* endwhile getopt */
-
-    if ((argc > 1)) {
-        usage(stdout);
-        exit(1000);
-
-    } else if (ALLOPTIONS != 1) {
-        usage(stdout);
-        exit(1000);
-    }
-
-
-    /*
-     * Test stuff.
-     */
-    rval = sc_init();
-    FAILED(rval, "sc_init().");
-
-
-    if (docrypt || doalltests) {
-        failcount += test_docrypt();
-    }
-    if (dokeyedhash || doalltests) {
-        failcount += test_dokeyedhash();
-    }
-    if (dorandom || doalltests) {
-        failcount += test_dorandom();
-    }
-
-
-    /*
-     * Cleanup.
-     */
-    rval = sc_shutdown(SNMP_CALLBACK_LIBRARY, SNMP_CALLBACK_SHUTDOWN,
-                       NULL, NULL);
-    FAILED(rval, "sc_shutdown().");
-
-    return failcount;
-
-}                               /* end main() */
-
-
-
-
-
-void
-usage(FILE * ofp)
-{
-    fprintf(ofp,
-            USAGE
-            "" NL
-            "	-a		All tests." NL
-            "	-c		Test of sc_encrypt()/sc_decrypt()."
-            NL
-            "	-h		Help."
-            NL
-            "	-H              Test sc_{generate,check}_keyed_hash()."
-            NL
-            "	-r              Test sc_random()."
-            NL "" NL, local_progname);
-
-}                               /* end usage() */
-
-
-
-
-#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
- *
- * One large request, one set of short requests.
- *
- * Returns:
- *	Number of failures.
- *
- * XXX	probably should split up into individual options.
- */
-int
-test_dorandom(void)
-{
-    int             rval = SNMPERR_SUCCESS,
-        failcount = 0,
-        origrequest = (1024 * 2),
-        origrequest_short = 19, nbytes = origrequest, shortcount = 7, i;
-    char            buf[LOCAL_MAXBUF];
-
-    OUTPUT("Random test -- large request:");
-
-    rval = sc_random(buf, &nbytes);
-    FAILED(rval, "sc_random().");
-
-    if (nbytes != origrequest) {
-        FAILED(SNMPERR_GENERR,
-               "sc_random() returned different than requested.");
-    }
-
-    dump_chunk("scapitest", NULL, buf, nbytes);
-
-    SUCCESS("Random test -- large request.");
-
-
-    OUTPUT("Random test -- short requests:");
-    origrequest_short = 16;
-
-    for (i = 0; i < shortcount; i++) {
-        nbytes = origrequest_short;
-        rval = sc_random(buf, &nbytes);
-        FAILED(rval, "sc_random().");
-
-        if (nbytes != origrequest_short) {
-            FAILED(SNMPERR_GENERR,
-                   "sc_random() returned different " "than requested.");
-        }
-
-        dump_chunk("scapitest", NULL, buf, nbytes);
-    }                           /* endfor */
-
-    SUCCESS("Random test -- short requests.");
-
-
-    return failcount;
-
-}                               /* end test_dorandom() */
-
-
-
-/*******************************************************************-o-******
- * test_dokeyedhash
- *
- * Returns:
- *	Number of failures.
- *
- *
- * Test keyed hashes with a variety of MAC length requests.
- *
- *
- * NOTE Both tests intentionally use the same secret
- *
- * FIX	Get input or output from some other package which hashes...
- * XXX	Could cut this in half with a little indirection...
- */
-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. */
-
-    u_int           hashbuf_len[MLCOUNT_MAX] = {
-        LOCAL_MAXBUF,
-        BYTESIZE(SNMP_TRANS_AUTHLEN_HMACSHA1),
-        BYTESIZE(SNMP_TRANS_AUTHLEN_HMACMD5),
-        BYTESIZE(SNMP_TRANS_AUTHLEN_HMAC96),
-        7,
-        0,
-    };
-
-    u_char          hashbuf[LOCAL_MAXBUF];
-    char           *s;
-
-  test_dokeyedhash_again:
-
-    OUTPUT("Keyed hash test using MD5 --");
-
-    memset(hashbuf, 0, LOCAL_MAXBUF);
-    hblen = hashbuf_len[mlcount];
-    properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACMD5);
-
-    rval =
-        sc_generate_keyed_hash(usmHMACMD5AuthProtocol,
-                               USM_LENGTH_OID_TRANSFORM, BIGSECRET,
-                               secret_len, BIGSTRING, bigstring_len,
-                               hashbuf, &hblen);
-    FAILED(rval, "sc_generate_keyed_hash().");
-
-    if (hashbuf_len[mlcount] > properlength) {
-        if (hblen != properlength) {
-            FAILED(SNMPERR_GENERR, "Wrong MD5 hash length returned.  (1)");
-        }
-
-    } else if (hblen != hashbuf_len[mlcount]) {
-        FAILED(SNMPERR_GENERR, "Wrong MD5 hash length returned.  (2)");
-    }
-
-    rval =
-        sc_check_keyed_hash(usmHMACMD5AuthProtocol,
-                            USM_LENGTH_OID_TRANSFORM, BIGSECRET,
-                            secret_len, BIGSTRING, bigstring_len, hashbuf,
-                            hblen);
-    FAILED(rval, "sc_check_keyed_hash().");
-
-    binary_to_hex(hashbuf, hblen, &s);
-    fprintf(stdout, "hash buffer (len=%d, request=%d):   %s\n",
-            hblen, hashbuf_len[mlcount], s);
-    SNMP_FREE(s);
-
-    SUCCESS("Keyed hash test using MD5.");
-
-
-
-    OUTPUT("Keyed hash test using SHA1 --");
-
-    memset(hashbuf, 0, LOCAL_MAXBUF);
-    hblen = hashbuf_len[mlcount];
-    properlength = BYTESIZE(SNMP_TRANS_AUTHLEN_HMACSHA1);
-
-    rval =
-        sc_generate_keyed_hash(usmHMACSHA1AuthProtocol,
-                               USM_LENGTH_OID_TRANSFORM, BIGSECRET,
-                               secret_len, BIGSTRING, bigstring_len,
-                               hashbuf, &hblen);
-    FAILED(rval, "sc_generate_keyed_hash().");
-
-    if (hashbuf_len[mlcount] > properlength) {
-        if (hblen != properlength) {
-            FAILED(SNMPERR_GENERR,
-                   "Wrong SHA1 hash length returned.  (1)");
-        }
-
-    } else if (hblen != hashbuf_len[mlcount]) {
-        FAILED(SNMPERR_GENERR, "Wrong SHA1 hash length returned.  (2)");
-    }
-
-    rval =
-        sc_check_keyed_hash(usmHMACSHA1AuthProtocol,
-                            USM_LENGTH_OID_TRANSFORM, BIGSECRET,
-                            secret_len, BIGSTRING, bigstring_len, hashbuf,
-                            hblen);
-    FAILED(rval, "sc_check_keyed_hash().");
-
-    binary_to_hex(hashbuf, hblen, &s);
-    fprintf(stdout, "hash buffer (len=%d, 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.
-     */
-    if (hashbuf_len[++mlcount] != 0) {
-        goto test_dokeyedhash_again;
-    }
-
-
-    return failcount;
-
-}                               /* end test_dokeyedhash() */
-
-
-
-
-
-/*******************************************************************-o-******
- * test_docrypt
- *
- * Returns:
- *	Number of failures.
- */
-int
-test_docrypt(void)
-{
-    int             rval = SNMPERR_SUCCESS,
-        failcount = 0,
-        bigstring_len = strlen(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;
-
-    char            buf[LOCAL_MAXBUF],
-        cryptbuf[LOCAL_MAXBUF], secret[LOCAL_MAXBUF], iv[LOCAL_MAXBUF];
-
-    OUTPUT("Test 1DES-CBC --");
-
-
-    memset(buf, 0, LOCAL_MAXBUF);
-
-    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().");
-
-    rval = sc_decrypt(usmDESPrivProtocol, USM_LENGTH_OID_TRANSFORM,
-                      secret, secret_len,
-                      iv, iv_len, cryptbuf, cryptbuf_len, buf, &buf_len);
-    FAILED(rval, "sc_decrypt().");
-
-    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.");
-    }
-
-
-    SUCCESS("Test 1DES-CBC --");
-
-    return failcount;
-
-}                               /* end test_docrypt() */
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/Sv3config b/testing/tests/Sv3config
deleted file mode 100644
index 43a7fb2..0000000
--- a/testing/tests/Sv3config
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/sh
-
-[ "x$SNMP_SMUX_SOCKET" = "x" ] && SNMP_SMUX_SOCKET=1.0.0.0
-
-CONFIGAGENT [snmp] persistentdir $SNMP_TMP_PERSISTENTDIR
-CONFIGAGENT smuxsocket $SNMP_SMUX_SOCKET
-
-# XXX: auto-switch to a supported protocol instead.
-if test "x$DEFAUTHTYPE" = "x"; then
-    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
-	DEFAUTHTYPE="SHA"
-    else
-	    DEFAUTHTYPE="MD5"
-    fi
-fi
-
-if test "x$DEFPRIVTYPE" = "x"; then
-  # XXX: HAVE_AES depends on cpp logic, so we need to test for lower-level stuff
-  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
-    if grep '^#define HAVE_OPENSSL_AES_H 1' $SNMP_UPDIR/include/net-snmp/net-snmp-config.h $SNMP_UPDIR/include/net-snmp/agent/mib_module_config.h > /dev/null ; then
-      if grep '^#define HAVE_AES_CFB128_ENCRYPT 1' $SNMP_UPDIR/include/net-snmp/net-snmp-config.h $SNMP_UPDIR/include/net-snmp/agent/mib_module_config.h > /dev/null ; then
-        DEFPRIVTYPE="AES"
-      else
-        DEFPRIVTYPE="DES"
-      fi
-    else
-      DEFPRIVTYPE="DES"
-    fi
-  else
-    DEFPRIVTYPE=""
-  fi
-fi
-
-CONFIGAGENT createUser initial $DEFAUTHTYPE initial_test_pass_auth $DEFPRIVTYPE
-CONFIGAGENT createUser template $DEFAUTHTYPE template_test_pass_auth $DEFPRIVTYPE
-CONFIGAGENT rwuser initial noauth
-CONFIGAGENT rwuser newtestuser
-
-NOAUTHTESTARGS="-l nanp -u initial -v 3"
-AUTHTESTARGS="-l anp -u initial -v 3 -a $DEFAUTHTYPE -A initial_test_pass_auth"
-PRIVTESTARGS="-l ap -u initial -v 3 -a $DEFAUTHTYPE -A initial_test_pass_auth -x $DEFPRIVTYPE -X initial_test_pass_auth"
-
-AUTHNOPASSTESTARGS="-l anp -u initial -v 3 -a $DEFAUTHTYPE"
-PRIVNOPASSTESTARGS="-l ap -u initial -v 3 -a $DEFAUTHTYPE -x $DEFPRIVTYPE"
diff --git a/testing/tests/Sv3usmconfigbase b/testing/tests/Sv3usmconfigbase
deleted file mode 100644
index f241894..0000000
--- a/testing/tests/Sv3usmconfigbase
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/bin/sh
-#
-# SNMPv3 base config
-#
-# Input+Output variables:
-#   DEFSECURITYLEVEL         noAuthNoPriv|authNoPriv|authPriv
-#   DEFAUTHTYPE              MD5|SHA
-#   DEFPRIVTYPE              DES|AES
-#   TESTNOAUTHUSER           <myuser>
-#   TEST(AUTH|PRIV)USER[2]   <myuser>
-#   TEST(AUTH|PRIV)PASS[2]   <mypass>
-#
-# Input variables:
-#   CREATEUSERENGINEID       <engineid>
-#
-# Output variables:
-#   CREATEAUTHUSER[2]
-#   CREATEPRIVUSER[2]
-#   CREATENOAUTHUSER
-#   TESTNOAUTHARGS
-#   TESTAUTHARGS[NOPASS][2]
-#   TESTPRIVARGS[NOPASS][2]
-#
-
-## Defaults
-[ "x$DEFSECURITYLEVEL" = "x" ] && DEFSECURITYLEVEL=authPriv
-
-## 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
-else
-  # MD5 is always available internally
-  MAXAUTHTYPE=MD5
-fi
-
-## auto-probe best priv type
-# XXX: HAVE_AES depends on cpp logic, so we need to test for lower-level stuff
-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
-  if grep '^#define HAVE_OPENSSL_AES_H 1' $SNMP_UPDIR/include/net-snmp/net-snmp-config.h $SNMP_UPDIR/include/net-snmp/agent/mib_module_config.h > /dev/null && \
-   grep '^#define HAVE_AES_CFB128_ENCRYPT 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=DES
-  fi
-else
-    MAXPRIVTYPE=""
-fi
-
-CREATEUSERCMD="createUser"
-[ "x$CREATEUSERENGINEID" != "x" ] && CREATEUSERCMD="$CREATEUSERCMD -e $CREATEUSERENGINEID"
-
-## auth setup
-if [ "x$DEFSECURITYLEVEL" = "xauthPriv" -o "x$DEFSECURITYLEVEL" = "xauthNoPriv" ]; then
-  [ "x$MAXAUTHTYPE" = "x" ] && SKIP
-  [ "x$DEFAUTHTYPE" = "xSHA" -a "x$MAXAUTHTYPE" != "xSHA" ] && SKIP
-  [ "x$DEFAUTHTYPE" = "x" ] && DEFAUTHTYPE=$MAXAUTHTYPE
-  # user/pass setup (XXX: randomize)
-  [ "x$TESTAUTHUSER" = "x" ] && TESTAUTHUSER=initial_auth
-  [ "x$TESTAUTHUSER2" = "x" ] && TESTAUTHUSER2=template_auth
-  [ "x$TESTAUTHPASS" = "x" ] && TESTAUTHPASS=initial_test_pass_auth
-  [ "x$TESTAUTHPASS2" = "x" ] && TESTAUTHPASS2=template_test_pass_auth
-  CREATEAUTHUSER="$CREATEUSERCMD $TESTAUTHUSER $DEFAUTHTYPE $TESTAUTHPASS"
-  CREATEAUTHUSER2="$CREATEUSERCMD $TESTAUTHUSER2 $DEFAUTHTYPE $TESTAUTHPASS2"
-  # command args
-  TESTAUTHARGSNOPASS="-v 3 -l anp -u $TESTAUTHUSER -a $DEFAUTHTYPE"
-  TESTAUTHARGSNOPASS2="-v 3 -l anp -u $TESTAUTHUSER2 -a $DEFAUTHTYPE"
-  TESTAUTHARGS="$TESTAUTHARGSNOPASS -A $TESTAUTHPASS"
-  TESTAUTHARGS2="$TESTAUTHARGSNOPASS2 -A $TESTAUTHPASS2"
-fi
-
-## priv setup
-if [ "x$DEFSECURITYLEVEL" = "xauthPriv" ]; then
-  [ "x$MAXPRIVTYPE" = "x" ] && SKIP
-  [ "x$DEFPRIVTYPE" = "xAES" -a "x$MAXPRIVTYPE" != "xAES" ] && SKIP
-  [ "x$DEFPRIVTYPE" = "x" ] && DEFPRIVTYPE=$MAXPRIVTYPE
-  # user/pass setup (XXX: randomize)
-  [ "x$TESTPRIVUSER" = "x" ] && TESTPRIVUSER=initial_priv
-  [ "x$TESTPRIVUSER2" = "x" ] && TESTPRIVUSER2=template_priv
-  [ "x$TESTPRIVPASS" = "x" ] && TESTPRIVPASS=initial_test_pass_priv
-  [ "x$TESTPRIVPASS2" = "x" ] && TESTPRIVPASS2=template_test_pass_priv
-  CREATEPRIVUSER="$CREATEUSERCMD $TESTPRIVUSER $DEFAUTHTYPE $TESTAUTHPASS $DEFPRIVTYPE $TESTPRIVPASS"
-  CREATEPRIVUSER2="$CREATEUSERCMD $TESTPRIVUSER2 $DEFAUTHTYPE $TESTAUTHPASS2 $DEFPRIVTYPE $TESTPRIVPASS2"
-  # command args
-  TESTPRIVARGSNOPASS="-v 3 -l ap -u $TESTPRIVUSER -a $DEFAUTHTYPE -x $DEFPRIVTYPE"
-  TESTPRIVARGSNOPASS2="-v 3 -l ap -u $TESTPRIVUSER2 -a $DEFAUTHTYPE -x $DEFPRIVTYPE"
-  TESTPRIVARGS="$TESTPRIVARGSNOPASS -A $TESTAUTHPASS -X $TESTPRIVPASS"
-  TESTPRIVARGS2="$TESTPRIVARGSNOPASS2 -A $TESTAUTHPASS2 -X $TESTPRIVPASS2"
-fi
-
-## noauth setup
-[ "x$TESTNOAUTHUSER" = "x" ] && TESTNOAUTHUSER=initial
-TESTNOAUTHARGS="-v 3 -l nanp -u $TESTNOAUTHUSER"
-CREATENOAUTHUSER="$CREATEUSERCMD $TESTNOAUTHUSER"
-
diff --git a/testing/tests/Sv3vacmconfig b/testing/tests/Sv3vacmconfig
deleted file mode 100644
index 3d7bf95..0000000
--- a/testing/tests/Sv3vacmconfig
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-# generically set up the user "initial1" and "initial2"  for snmp v3
-# access to the agent.
-
-# Configuration:
-#initial1 can access .1.3.6.1.2.1.1.1, deny others
-#initial2 can access all except .1.3.6.1.2.1.1.1 
-
-# XXX: do autoselection of supported algorithms
-SKIPIF NETSNMP_DISABLE_MD5
-SKIPIF NETSNMP_DISABLE_DES
-
-CONFIGAGENT [snmp] persistentdir $SNMP_TMP_PERSISTENTDIR
-
-CONFIGAGENT createUser initial1 MD5 initial_test_pass_auth DES
-CONFIGAGENT createUser initial2 MD5 initial_test_pass_auth DES
-
-
-CONFIGAGENT group   testcommunitygroup1  usm     initial1
-CONFIGAGENT group   testcommunitygroup2  usm     initial2
-
-CONFIGAGENT view    system1     included .1.3.6.1.2.1.1.1 
-CONFIGAGENT view    system2     included .1
-CONFIGAGENT view    system2     excluded .1.3.6.1.2.1.1.1 
-CONFIGAGENT 'access  testcommunitygroup1  "" any auth exact system1 none none'
-CONFIGAGENT 'access  testcommunitygroup2  "" any auth exact system2 none none'
-
diff --git a/testing/tests/Svacmconfig b/testing/tests/Svacmconfig
deleted file mode 100644
index cdcc35b..0000000
--- a/testing/tests/Svacmconfig
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/sh
-
-# standard V1 configuration: testcommunity1 testcommunity2
-# testcommunity1 can access .1.3.6.1.2.1.1.1, others are denied
-# generically set up the community "testcommunity1 and testcommunity2" for various snmp
-# version access to the agent.
-
-if [ "x$snmp_version" = "x" ]; then
-  snmp_version="any"
-fi
-
-CONFIGAGENT [snmp] persistentdir $SNMP_TMP_PERSISTENTDIR
-
-CONFIGAGENT rocommunity testrocommunity 127.0.0.1 .1.3.6.1.2.1.1.5.0
-CONFIGAGENT rwcommunity testrwcommunity 127.0.0.1 .1.3.6.1.2.1.1.5.0
-
-CONFIGAGENT com2sec testcommunitysec1  default testcommunity1
-CONFIGAGENT com2sec testcommunitysec2  default testcommunity2
-
-if [ "$SNMP_TRANSPORT_SPEC" = "udp6" -o "$SNMP_TRANSPORT_SPEC" = "tcp6" ];then 
-CONFIGAGENT com2sec6 testcommunitysec1  default testcommunity1
-CONFIGAGENT com2sec6 testcommunitysec2  default testcommunity2
-fi
-
-if [ "$SNMP_TRANSPORT_SPEC" = "unix" ];then 
-CONFIGAGENT com2secunix testcommunitysec1  testcommunity1
-CONFIGAGENT com2secunix testcommunitysec2  testcommunity2
-fi
-
-CONFIGAGENT group   testcommunitygroup1  $snmp_version     testcommunitysec1
-CONFIGAGENT group   testcommunitygroup2  $snmp_version     testcommunitysec2
-
-CONFIGAGENT view    system1     included .1.3.6.1.2.1.1.1 
-CONFIGAGENT view    system2     included .1
-CONFIGAGENT view    system2     excluded .1.3.6.1.2.1.1.1 
-CONFIGAGENT 'access  testcommunitygroup1  "" any noauth exact system1 none none'
-CONFIGAGENT 'access  testcommunitygroup2  "" any noauth exact system2 none none'
-
diff --git a/testing/tests/Svanyconfig b/testing/tests/Svanyconfig
deleted file mode 100644
index ad4d3b5..0000000
--- a/testing/tests/Svanyconfig
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-
-# generically set up the community "testcommunity" for various snmp
-# version access to the agent.
-
-if [ "x$snmp_version" = "x" ]; then
-  snmp_version="any"
-fi
-
-[ "x$SNMP_SMUX_SOCKET" = "x" ] && SNMP_SMUX_SOCKET=1.0.0.0
-
-CONFIGAGENT [snmp] persistentdir $SNMP_TMP_PERSISTENTDIR
-CONFIGAGENT smuxsocket $SNMP_SMUX_SOCKET
-
-CONFIGAGENT com2sec testcommunitysec  default testcommunity
-if [ "$SNMP_TRANSPORT_SPEC" = "udp6" -o "$SNMP_TRANSPORT_SPEC" = "tcp6" ];then 
-	CONFIGAGENT com2sec6 testcommunitysec  default testcommunity
-fi
-
-if [ "$SNMP_TRANSPORT_SPEC" = "unix" ];then 
-	CONFIGAGENT com2secunix testcommunitysec  testcommunity
-fi
-
-CONFIGAGENT group   testcommunitygroup  $snmp_version     testcommunitysec
-CONFIGAGENT view    all     included .1 80
-CONFIGAGENT 'access  testcommunitygroup  "" any noauth exact all none none'
diff --git a/testing/tests/T001snmpv1get b/testing/tests/T001snmpv1get
deleted file mode 100644
index 22cb060..0000000
--- a/testing/tests/T001snmpv1get
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv1 support
-
-SKIPIF NETSNMP_DISABLE_SNMPV1
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-
-#
-# Begin test
-#
-
-# standard V1 configuration: testcomunnity
-. ./Sv1config
-
-STARTAGENT
-
-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.3.0"
-
-CHECKORDIE ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-CAPTURE "snmpgetnext -On $SNMP_FLAGS -c testcommunity -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3"
-
-CHECKORDIE ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-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.3.1"
-
-CHECKORDIE "Error in packet"
-
-CAPTURE "snmpget -On $SNMP_FLAGS -c notavalidcommunity -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-
-CHECKORDIE "Timeout"
-
-STOPAGENT
-
-FINISHED
diff --git a/testing/tests/T014snmpv2cget b/testing/tests/T014snmpv2cget
deleted file mode 100644
index 271f978..0000000
--- a/testing/tests/T014snmpv2cget
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv2c get of system.sysUpTime.0
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-
-#
-# Begin test
-#
-
-# standard V2C configuration: testcomunnity
-. ./Sv2cconfig
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-
-STOPAGENT
-
-CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-FINISHED
diff --git a/testing/tests/T015snmpv2cgetnext b/testing/tests/T015snmpv2cgetnext
deleted file mode 100644
index 6c3fdf6..0000000
--- a/testing/tests/T015snmpv2cgetnext
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv2c getnext of system.sysUpTime
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-
-#
-# Begin test
-#
-
-# standard V2C configuration: testcomunnity
-. ./Sv2cconfig
-
-STARTAGENT
-
-CAPTURE "snmpgetnext -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3"
-
-STOPAGENT
-
-CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-FINISHED
diff --git a/testing/tests/T0160snmpv2cbulkget b/testing/tests/T0160snmpv2cbulkget
deleted file mode 100755
index ec2c427..0000000
--- a/testing/tests/T0160snmpv2cbulkget
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv2c bulkget of system components
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-
-#
-# Begin test
-#
-
-# standard V2 configuration: testcomunnity
-. ./Sv2cconfig
-
-STARTAGENT
-
-CAPTURE "snmpbulkget $SNMP_FLAGS -v2c -On -Cn1 -Cr2 -c testcommunity $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4 .1.3.6.1.2.1.1"
-
-STOPAGENT
-
-CHECKORDIE ".1.3.6.1.2.1.1.4.0 = STRING:"
-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
-
-CHECK ".1.3.6.1.2.1.1.5.0"
-EXPECTRESULT 0
-if [ "$snmp_last_test_result" != 0 ] ; then
-    return_value=1
-    FINISHED
-fi
-
-FINISHED
diff --git a/testing/tests/T016snmpv2cgetfail b/testing/tests/T016snmpv2cgetfail
deleted file mode 100644
index 4bc2412..0000000
--- a/testing/tests/T016snmpv2cgetfail
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-
-#
-# test snmpv2c get support by reading a variable
-#
-
-. ../eval_tools.sh
-
-HEADER for failure of SNMPv2c get with wrong community
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-
-#
-# Begin test
-#
-
-# standard V2C configuration: testcomunnity
-. ./Sv2cconfig
-
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS -c notavalidcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-
-STOPAGENT
-
-CHECK "Timeout"
-
-FINISHED
diff --git a/testing/tests/T017snmpv2ctov1getfail b/testing/tests/T017snmpv2ctov1getfail
deleted file mode 100644
index 8a97942..0000000
--- a/testing/tests/T017snmpv2ctov1getfail
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-
-#
-# test snmpv2c get support by reading a variable
-#
-
-. ../eval_tools.sh
-
-HEADER for failure of SNMPv2c get against SNMPv1 agent
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-SKIPIF NETSNMP_DISABLE_SNMPV1
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-
-#
-# Begin test
-#
-
-# standard V2C configuration: testcomunnity
-. ./Sv1config
-
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS -c notavalidcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-
-STOPAGENT
-
-CHECK "Timeout"
-
-FINISHED
diff --git a/testing/tests/T018snmpv1tov2cgetfail b/testing/tests/T018snmpv1tov2cgetfail
deleted file mode 100644
index f36cd4d..0000000
--- a/testing/tests/T018snmpv1tov2cgetfail
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER for failure of SNMPv1 get against SNMPv2c agent
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-SKIPIF NETSNMP_DISABLE_SNMPV1
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-
-#
-# Begin test
-#
-
-# standard V2C configuration: testcomunnity
-. ./Sv2cconfig
-
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS -c notavalidcommunity -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-
-STOPAGENT
-
-CHECK "Timeout"
-
-FINISHED
diff --git a/testing/tests/T019snmpv2cnosuch b/testing/tests/T019snmpv2cnosuch
deleted file mode 100644
index e69ab9a..0000000
--- a/testing/tests/T019snmpv2cnosuch
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv2c get of system.sysUpTime.1
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-
-#
-# Begin test
-#
-
-# standard V2C configuration: testcomunnity
-. ./Sv2cconfig
-
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.1"
-
-STOPAGENT
-
-CHECK ".1.3.6.1.2.1.1.3.1 = No Such Instance"
-
-FINISHED
diff --git a/testing/tests/T020snmpv3get b/testing/tests/T020snmpv3get
deleted file mode 100644
index 58c6ce3..0000000
--- a/testing/tests/T020snmpv3get
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv3 get using noAuthNoPriv of .1.3.6.1.2.1.1.3.0
-
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-
-#
-# Begin test
-#
-
-# configure the agent to accept user initial with noAuthNoPriv
-. ./Sv3config
-
-STARTAGENT
-
-CAPTURE "snmpget -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/testing/tests/T021snmpv3getnext b/testing/tests/T021snmpv3getnext
deleted file mode 100755
index 2b9f646..0000000
--- a/testing/tests/T021snmpv3getnext
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv3 getnext using initial of .1.3.6.1.2.1.1.3.0
-
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-
-#
-# Begin test
-#
-
-# configure the agent to accept user initial with noAuthNoPriv
-. ./Sv3config
-
-STARTAGENT
-
-CAPTURE "snmpgetnext -On $SNMP_FLAGS $NOAUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT system.sysUpTime"
-
-STOPAGENT
-
-CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-FINISHED
diff --git a/testing/tests/T0220snmpv3bulkget b/testing/tests/T0220snmpv3bulkget
deleted file mode 100755
index 8a8ecb7..0000000
--- a/testing/tests/T0220snmpv3bulkget
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv3 bulkget of system
-
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-
-#
-# Begin test
-#
-
-# standard V3 configuration: 
-. ./Sv3config
-
-STARTAGENT
-
-CAPTURE "snmpbulkget $SNMP_FLAGS -On -Cn1 -Cr2 $NOAUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.4 .1.3.6.1.2.1.1"
-
-STOPAGENT
-
-CHECKORDIE ".1.3.6.1.2.1.1.4.0 = STRING:"
-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
-
-CHECK ".1.3.6.1.2.1.1.5.0"
-EXPECTRESULT 0
-if [ "$snmp_last_test_result" != 0 ] ; then
-    return_value=1
-    FINISHED
-fi
-
-FINISHED
diff --git a/testing/tests/T022snmpv3getMD5 b/testing/tests/T022snmpv3getMD5
deleted file mode 100755
index 9e7960d..0000000
--- a/testing/tests/T022snmpv3getMD5
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv3 get using MD5/noPriv of .1.3.6.1.2.1.1.3.0
-
-SKIPIF NETSNMP_DISABLE_MD5
-
-#
-# Begin test
-#
-
-# standard V3 configuration for initial user
-DEFAUTHTYPE="MD5"
-. ./Sv3config
-
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-
-STOPAGENT
-
-CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-FINISHED
diff --git a/testing/tests/T023snmpv3getMD5AES b/testing/tests/T023snmpv3getMD5AES
deleted file mode 100644
index 773c980..0000000
--- a/testing/tests/T023snmpv3getMD5AES
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/sh
-
-. ../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_ENABLE_SCAPI_AUTHPRIV
-SKIPIFNOT HAVE_AES_CFB128_ENCRYPT
-SKIPIF NETSNMP_DISABLE_MD5
-
-#
-# Begin test
-#
-
-# standard V3 configuration for initial user
-DEFAUTHTYPE=MD5
-DEFPRIVTYPE=AES
-. ./Sv3config
-
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS $PRIVTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-
-STOPAGENT
-
-CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-FINISHED
diff --git a/testing/tests/T023snmpv3getMD5DES b/testing/tests/T023snmpv3getMD5DES
deleted file mode 100755
index 0689dea..0000000
--- a/testing/tests/T023snmpv3getMD5DES
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-. ../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_ENABLE_SCAPI_AUTHPRIV
-SKIPIF NETSNMP_DISABLE_MD5
-
-#
-# Begin test
-#
-
-# standard V3 configuration for initial user
-DEFAUTHTYPE=MD5
-DEFPRIVTYPE=DES
-. ./Sv3config
-
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS $PRIVTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-
-STOPAGENT
-
-CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-FINISHED
diff --git a/testing/tests/T024snmpv3getSHA1 b/testing/tests/T024snmpv3getSHA1
deleted file mode 100755
index 9c1474d..0000000
--- a/testing/tests/T024snmpv3getSHA1
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv3 get using SHA/noPriv of .1.3.6.1.2.1.1.3.0
-
-SKIPIFNOT NETSNMP_USE_OPENSSL
-
-#
-# Begin test
-#
-
-# standard V3 configuration for templateSHA user
-DEFAUTHTYPE="SHA"
-. ./Sv3config
-
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-
-STOPAGENT
-
-CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-FINISHED
diff --git a/testing/tests/T025snmpv3getSHADES b/testing/tests/T025snmpv3getSHADES
deleted file mode 100755
index 94fbaca..0000000
--- a/testing/tests/T025snmpv3getSHADES
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-. ../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_ENABLE_SCAPI_AUTHPRIV
-SKIPIF NETSNMP_DISABLE_DES
-
-#
-# Begin test
-#
-
-# standard V3 configuration for templateSHA user
-DEFAUTHTYPE="SHA"
-DEFPRIVTYPE="DES"
-. ./Sv3config
-
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS $PRIVTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-
-STOPAGENT
-
-CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-FINISHED
diff --git a/testing/tests/T026snmpv3getSHAAES b/testing/tests/T026snmpv3getSHAAES
deleted file mode 100644
index 766513a..0000000
--- a/testing/tests/T026snmpv3getSHAAES
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-. ../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_ENABLE_SCAPI_AUTHPRIV
-SKIPIFNOT HAVE_AES_CFB128_ENCRYPT
-
-#
-# Begin test
-#
-
-# standard V3 configuration for templateSHA user
-DEFPRIVTYPE="AES"
-DEFAUTHTYPE="SHA"
-. ./Sv3config
-
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS $PRIVTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-
-STOPAGENT
-
-CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-FINISHED
diff --git a/testing/tests/T028snmpv3getfail b/testing/tests/T028snmpv3getfail
deleted file mode 100755
index 99095e1..0000000
--- a/testing/tests/T028snmpv3getfail
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER for failure of SNMPv3 get using unknown user.
-
-#
-# Begin test
-#
-
-# standard V3 configuration for initial user
-. ./Sv3config
-
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS -v 3 -l nanp -u unknownuser $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-
-STOPAGENT
-
-CHECK "Unknown user name"
-
-FINISHED
diff --git a/testing/tests/T030snmpv3usercreation b/testing/tests/T030snmpv3usercreation
deleted file mode 100644
index a1cb443..0000000
--- a/testing/tests/T030snmpv3usercreation
+++ /dev/null
@@ -1,118 +0,0 @@
-#!/bin/sh
-
-. ../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_ENABLE_SCAPI_AUTHPRIV
-
-#
-# Begin test
-#
-
-# standard SNMPv3 USM agent configuration
-DEFSECURITYLEVEL=authPriv
-. ./Sv3usmconfigagent
-
-# test user
-NEWUSER=newtestuser
-NEWAUTHPASS=newauthpass
-NEWPRIVPASS=newprivpass
-NEWAUTHPRIVPASS=newauthprivpass
-
-# configure agent
-CONFIGAGENT rwuser $NEWUSER
-
-# Start the agent
-STARTAGENT
-
-## usmUserTable management
-
-## 1) create, clone, test, delete
-
-# create new (vanilla) user
-CAPTURE "snmpusm $SNMP_FLAGS $TESTPRIVARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT create $NEWUSER"
-CHECKORDIE "User successfully created"
-
-# clone
-CAPTURE "snmpusm $SNMP_FLAGS $TESTPRIVARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT cloneFrom $NEWUSER $TESTPRIVUSER"
-CHECKORDIE "User successfully cloned"
-
-# test (authPriv)
-CAPTURE "snmpget -On $SNMP_FLAGS -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -A $TESTAUTHPASS -x $DEFPRIVTYPE -X $TESTPRIVPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-CHECKORDIE ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-# delete 
-CAPTURE "snmpusm $SNMP_FLAGS $TESTPRIVARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT delete $NEWUSER"
-CHECKORDIE "User successfully deleted"
-
-## 2) create w/ clone, passwd (auth), passwd (priv), test (authPriv+authNoPriv)
-
-# create+clone template user
-CAPTURE "snmpusm $SNMP_FLAGS $TESTPRIVARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT create $NEWUSER $TESTPRIVUSER2"
-CHECKORDIE "User successfully created"
-
-# change auth passphrase of new user
-CAPTURE "snmpusm $SNMP_FLAGS $TESTPRIVARGS -Ca $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT passwd $TESTAUTHPASS2 $NEWAUTHPASS $NEWUSER"
-CHECKORDIE "SNMPv3 Key(s) successfully changed"
-
-# change priv passphrase of new user
-CAPTURE "snmpusm $SNMP_FLAGS $TESTPRIVARGS -Cx $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT passwd $TESTPRIVPASS2 $NEWPRIVPASS $NEWUSER"
-CHECKORDIE "SNMPv3 Key(s) successfully changed"
-
-# test (authNoPriv)
-CAPTURE "snmpget -On $SNMP_FLAGS -v 3 -u $NEWUSER -l anp -a $DEFAUTHTYPE -A $NEWAUTHPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-CHECKORDIE ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-# test (authPriv)
-CAPTURE "snmpget -On $SNMP_FLAGS -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -A $NEWAUTHPASS -x $DEFPRIVTYPE -X $NEWPRIVPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-CHECKORDIE ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-## 3) passwd (priv), passwd (auth+priv), test
-
-# change priv passphrase (to auth passphrase) by the user himself
-CAPTURE "snmpusm $SNMP_FLAGS -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -A $NEWAUTHPASS -x $DEFPRIVTYPE -X $NEWPRIVPASS -Cx $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT passwd $NEWPRIVPASS $NEWAUTHPASS"
-CHECKORDIE "SNMPv3 Key(s) successfully changed"
-
-# change both passphrases at once
-CAPTURE "snmpusm $SNMP_FLAGS -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -A $NEWAUTHPASS -x $DEFPRIVTYPE -X $NEWAUTHPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT passwd $NEWAUTHPASS $NEWAUTHPRIVPASS"
-CHECKORDIE "SNMPv3 Key(s) successfully changed"
-
-# test (authPriv)
-CAPTURE "snmpget -On $SNMP_FLAGS -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -A $NEWAUTHPRIVPASS -x $DEFPRIVTYPE -X $NEWAUTHPRIVPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-CHECKORDIE ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-## 5) persistency I: reconfigure (SIGHUP), re-test
-
-if ISDEFINED HAVE_SIGHUP; then
-
-HUPAGENT
-DELAY
-
-# test (authPriv)
-CAPTURE "snmpget -On $SNMP_FLAGS -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -A $NEWAUTHPRIVPASS -x $DEFPRIVTYPE -X $NEWAUTHPRIVPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-CHECKORDIE ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-## 5) persistency II: stop, start, re-test
-
-STOPAGENT
-DELAY
-# make sure it picks up persistent config and uses a new logfile
-SNMPCONFPATH="${SNMP_TMPDIR}${SNMP_ENV_SEPARATOR}${SNMP_TMP_PERSISTENTDIR}"
-export SNMPCONFPATH
-SNMP_CONFIG_FILE="does-not-exist"
-SNMP_SNMPD_LOG_FILE=${SNMP_TMPDIR}/snmpd2.log
-STARTAGENT
-
-# test (authPriv)
-CAPTURE "snmpget -On $SNMP_FLAGS -v 3 -u $NEWUSER -l ap -a $DEFAUTHTYPE -A $NEWAUTHPRIVPASS -x $DEFPRIVTYPE -X $NEWAUTHPRIVPASS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-CHECKORDIE ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-fi
-
-## stop agent and finish
-STOPAGENT
-FINISHED
diff --git a/testing/tests/T035snmpv3trapdusermgmt b/testing/tests/T035snmpv3trapdusermgmt
deleted file mode 100644
index fa26db9..0000000
--- a/testing/tests/T035snmpv3trapdusermgmt
+++ /dev/null
@@ -1,125 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv3 snmptrapd USM user management with snmpusm
-
-SKIPIFNOT USING_AGENTX_MASTER_MODULE
-SKIPIFNOT USING_AGENTX_SUBAGENT_MODULE
-SKIPIFNOT USING_SNMPV3_USMUSER_MODULE
-SKIPIF    NETSNMP_SNMPTRAPD_DISABLE_AGENTX
-SKIPIF    NETSNMP_DISABLE_SET_SUPPORT
-SKIPIFNOT NETSNMP_USE_OPENSSL
-SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
-
-#
-# Begin test
-#
-
-# configure AgentX socket
-if [ "x$SNMP_TRANSPORT_SPEC" = "xunix" ]; then
-  AGENT_FLAGS="$AGENT_FLAGS -x $SNMP_TMPDIR/agentx_socket"
-  TRAPD_FLAGS="$TRAPD_FLAGS -x $SNMP_TMPDIR/agentx_socket"
-else
-  AGENT_FLAGS="$AGENT_FLAGS -x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
-  TRAPD_FLAGS="$TRAPD_FLAGS -x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
-fi
-
-# standard SNMPv3 USM agent configuration
-DEFSECURITYLEVEL=authPriv
-. ./Sv3usmconfigagent
-
-# save agent access
-AGENT_TESTAUTHARGS=$TESTAUTHARGS
-AGENT_TESTPRIVARGS=$TESTPRIVARGS
-
-# configure agent as AgentX master
-CONFIGAGENT master agentx
-
-# Start the master agent
-STARTAGENT
-
-# standard SNMPv3 USM snmptrapd configuration
-. ./Sv3usmconfigtrapd
-
-# configure snmptrapd
-NEWAUTHKEY=0x7458ead7a0b5a753e21bfcb87f6c9803ebef68cf
-NEWPRIVKEY=0x98e2696d1cf34d904dfcae76bf01c473
-NEWUSER=newtestuser
-NEWAUTHPASS=newauthpass
-NEWPRIVPASS=newprivpass
-NEWUSER2=newtestuser_vanilla
-CONFIGTRAPD authuser log $NEWUSER auth
-
-# start snmptrapd
-STARTTRAPD
-
-# delay to let it connect and register all MIBs
-DELAY
-
-## verify snmptrapd usmUserTable management
-
-SNMPUSM_TRAPD_CONTEXT_ARGS="-n snmptrapd -CE $TRAPD_ENGINEID"
-
-## 1) create, clone, passwd auth, passwd priv, test
-
-# create vanilla user
-CAPTURE "snmpusm $SNMP_FLAGS $AGENT_TESTAUTHARGS $SNMPUSM_TRAPD_CONTEXT_ARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT create $NEWUSER2"
-CHECKORDIE "User successfully created"
-
-# clone template user
-CAPTURE "snmpusm $SNMP_FLAGS $AGENT_TESTAUTHARGS $SNMPUSM_TRAPD_CONTEXT_ARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT create $NEWUSER $TESTPRIVUSER"
-CHECKORDIE "User successfully created"
-
-# change auth passphrase of new user
-CAPTURE "snmpusm $SNMP_FLAGS $AGENT_TESTAUTHARGS $SNMPUSM_TRAPD_CONTEXT_ARGS -Ca $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT passwd $TESTAUTHPASS $NEWAUTHPASS $NEWUSER"
-CHECKORDIE "SNMPv3 Key(s) successfully changed"
-
-# change priv passphrase of new user
-CAPTURE "snmpusm $SNMP_FLAGS $AGENT_TESTPRIVARGS $SNMPUSM_TRAPD_CONTEXT_ARGS -Cx $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT passwd $TESTPRIVPASS $NEWPRIVPASS $NEWUSER"
-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"
-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"
-DELAY
-CHECKTRAPDORDIE "received_inform_ap"
-
-## 2) change localized auth key, test, change localized priv key, test
-
-# change localized auth key
-CAPTURE "snmpusm $SNMP_FLAGS $AGENT_TESTAUTHARGS $SNMPUSM_TRAPD_CONTEXT_ARGS -Ca -Ck $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT passwd $NEWAUTHPASS $NEWAUTHKEY $NEWUSER"
-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"
-DELAY
-CHECKTRAPDORDIE "received_inform_anp2"
-
-# change localized priv key
-CAPTURE "snmpusm $SNMP_FLAGS $AGENT_TESTPRIVARGS $SNMPUSM_TRAPD_CONTEXT_ARGS -Cx -Ck $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT passwd $NEWPRIVPASS $NEWPRIVKEY $NEWUSER"
-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"
-DELAY
-CHECKTRAPDORDIE "received_inform_ap2"
-
-## 3) persistency I: reconfigure (SIGHUP), re-test
-
-# reconfigure snmptrapd
-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"
-DELAY
-CHECKTRAPDORDIE "received_inform_ap3"
-
-## stop daemons and finish
-STOPTRAPD
-STOPAGENT
-FINISHED
diff --git a/testing/tests/T049snmpv3inform b/testing/tests/T049snmpv3inform
deleted file mode 100644
index e762d13..0000000
--- a/testing/tests/T049snmpv3inform
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-DEFSECURITYLEVEL=noAuthNoPriv
-
-HEADER "SNMPv3 informs ($DEFSECURITYLEVEL) received and sent by tools"
-
-#
-# Begin test
-#
-
-CONFIGTRAPD createUser testuser
-CONFIGTRAPD authuser log testuser $DEFSECURITYLEVEL
-CONFIGTRAPD agentxsocket /dev/null
-
-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"
-
-STOPTRAPD
-
-CHECKTRAPD "received_inform_$DEFSECURITYLEVEL"
-
-FINISHED
diff --git a/testing/tests/T049snmpv3informauth b/testing/tests/T049snmpv3informauth
deleted file mode 100644
index ab67ff5..0000000
--- a/testing/tests/T049snmpv3informauth
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-DEFSECURITYLEVEL=authNoPriv
-
-HEADER "SNMPv3 informs ($DEFSECURITYLEVEL) received and sent by tools"
-
-#
-# Begin test
-#
-
-. ./Sv3usmconfigtrapd
-CONFIGTRAPD authuser log $TESTAUTHUSER $DEFSECURITYLEVEL
-CONFIGTRAPD agentxsocket /dev/null
-
-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"
-
-STOPTRAPD
-
-CHECKTRAPD "received_inform_$DEFSECURITYLEVEL"
-
-FINISHED
diff --git a/testing/tests/T049snmpv3informpriv b/testing/tests/T049snmpv3informpriv
deleted file mode 100644
index cbbf2f3..0000000
--- a/testing/tests/T049snmpv3informpriv
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-DEFSECURITYLEVEL=authPriv
-
-HEADER "SNMPv3 informs ($DEFSECURITYLEVEL) received and sent by tools"
-
-SKIPIFNOT NETSNMP_USE_OPENSSL
-SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
-
-#
-# Begin test
-#
-
-. ./Sv3usmconfigtrapd
-CONFIGTRAPD authuser log $TESTPRIVUSER $DEFSECURITYLEVEL
-CONFIGTRAPD agentxsocket /dev/null
-
-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"
-
-STOPTRAPD
-
-CHECKTRAPD "received_inform_$DEFSECURITYLEVEL"
-
-FINISHED
diff --git a/testing/tests/T050snmpv3trap b/testing/tests/T050snmpv3trap
deleted file mode 100644
index 819d151..0000000
--- a/testing/tests/T050snmpv3trap
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv3 traps received and sent by tools
-
-SKIPIFNOT NETSNMP_USE_OPENSSL
-SKIPIFNOT NETSNMP_ENABLE_SCAPI_AUTHPRIV
-
-#
-# Begin test
-#
-
-CREATEUSERENGINEID=0x80001f88802b3d0e06bbdf4321
-. ./Sv3usmconfigtrapd
-CONFIGTRAPD authuser log $TESTNOAUTHUSER noAuthNoPriv
-CONFIGTRAPD authuser log $TESTAUTHUSER authNoPriv
-CONFIGTRAPD authuser log $TESTPRIVUSER authPriv
-CONFIGTRAPD agentxsocket /dev/null
-
-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"
-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"
-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"
-DELAY
-
-STOPTRAPD
-
-CHECKTRAPD "received_trap_nanp"
-CHECKTRAPD "received_trap_anp"
-CHECKTRAPD "received_trap_ap"
-
-FINISHED
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/T052snmpv2cinform b/testing/tests/T052snmpv2cinform
deleted file mode 100644
index 2464dd2..0000000
--- a/testing/tests/T052snmpv2cinform
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv2c informs received and sent by tools
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-
-#
-# Begin test
-#
-
-CONFIGTRAPD authcommunity log testcommunity
-CONFIGTRAPD agentxsocket /dev/null
-
-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"
-
-STOPTRAPD
-
-CHECKTRAPD "Received"
-
-FINISHED
diff --git a/testing/tests/T053agentv1trap b/testing/tests/T053agentv1trap
deleted file mode 100644
index 9b25c52..0000000
--- a/testing/tests/T053agentv1trap
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER snmpv1 traps are sent by snmpd API
-
-SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE
-
-#
-# Begin test
-#
-
-# standard V1 configuration: testcomunnity
-. ./Sv3config
-CONFIGAGENT trapsink ${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${SNMP_SNMPTRAPD_PORT} public
-
-CONFIGTRAPD authcommunity log public
-CONFIGTRAPD agentxsocket /dev/null
-
-STARTTRAPD
-
-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"
-
-STOPAGENT
-
-STOPTRAPD
-
-CHECKTRAPD "Enterprise Specific Trap (99)"
-
-FINISHED
diff --git a/testing/tests/T054agentv2ctrap b/testing/tests/T054agentv2ctrap
deleted file mode 100644
index 3a85dc9..0000000
--- a/testing/tests/T054agentv2ctrap
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER snmpv2c traps are sent by snmpd API
-
-SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE
-
-#
-# Begin test
-#
-
-# standard V1 configuration: testcommunity
-. ./Sv3config
-CONFIGAGENT trap2sink ${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${SNMP_SNMPTRAPD_PORT} public
-CONFIGTRAPD authcommunity log public
-CONFIGTRAPD agentxsocket /dev/null
-
-STARTTRAPD
-
-AGENT_FLAGS="$AGENT_FLAGS"
-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"
-
-STOPAGENT
-
-STOPTRAPD
-
-CHECKTRAPD "life the universe and everything"
-
-FINISHED
diff --git a/testing/tests/T055agentv1mintrap b/testing/tests/T055agentv1mintrap
deleted file mode 100644
index f5636a7..0000000
--- a/testing/tests/T055agentv1mintrap
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER snmpv1 traps are sent by snmpd without notification mib support
-
-SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE
-
-#
-# Begin test
-#
-
-# standard V1 configuration: testcommunity
-. ./Sv3config
-CONFIGAGENT trapsink ${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${SNMP_SNMPTRAPD_PORT} public
-CONFIGTRAPD authcommunity log public
-CONFIGTRAPD agentxsocket /dev/null
-
-STARTTRAPD
-
-# initialize only the example mib, and not the notification mib stuff
-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"
-
-STOPAGENT
-
-STOPTRAPD
-
-CHECKTRAPD "Enterprise Specific Trap (99)"
-
-FINISHED
diff --git a/testing/tests/T056agentv2cmintrap b/testing/tests/T056agentv2cmintrap
deleted file mode 100644
index 8c3213f..0000000
--- a/testing/tests/T056agentv2cmintrap
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER snmpv2c traps are sent by snmpd without notification mib support
-
-SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE
-
-#
-# Begin test
-#
-
-# standard V1 configuration: testcommunity
-. ./Sv3config
-CONFIGAGENT trap2sink ${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${SNMP_SNMPTRAPD_PORT} public
-CONFIGTRAPD authcommunity log public
-CONFIGTRAPD agentxsocket /dev/null
-
-STARTTRAPD
-
-# initialize only the example mib, and not the notification mib stuff
-AGENT_FLAGS="$AGENT_FLAGS -Dexample,header_generic,add_trap,mib_init,callback -I example,usmUser,usmConf,vacm_vars"
-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"
-
-STOPAGENT
-
-STOPTRAPD
-
-CHECKTRAPD "life the universe and everything"
-
-FINISHED
diff --git a/testing/tests/T057trapdauthtest b/testing/tests/T057trapdauthtest
deleted file mode 100644
index 3369faf..0000000
--- a/testing/tests/T057trapdauthtest
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER snmptrapd authorization failure of non authorized users
-
-#
-# Begin test
-#
-
-CONFIGTRAPD createUser testuser
-CONFIGTRAPD authuser log testuser noAuthNoPriv
-CONFIGTRAPD agentxsocket /dev/null
-
-STARTTRAPD
-
-CAPTURE "snmptrap -Ci -t $SNMP_SLEEP -d -v 3 -u nottestuser -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 blah"
-
-STOPTRAPD
-
-CHECKTRAPD "coldStart"
-EXPECTRESULT 0
-if [ "$snmp_last_test_result" != 0 ] ; then
-    return_value=1
-    FINISHED
-fi
-
-FINISHED
diff --git a/testing/tests/T057trapdauthtest2 b/testing/tests/T057trapdauthtest2
deleted file mode 100644
index a5a02cf..0000000
--- a/testing/tests/T057trapdauthtest2
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER snmptrapd discards of unauthorized notification types 
-
-#
-# Begin test
-#
-
-CONFIGTRAPD createUser testuser
-CONFIGTRAPD authuser log testuser noAuthNoPriv .1.3.6.1.6.3.1.1.5.2
-CONFIGTRAPD agentxsocket /dev/null
-
-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 blah"
-
-STOPTRAPD
-
-CHECKTRAPD "coldStart"
-EXPECTRESULT 0
-if [ "$snmp_last_test_result" != 0 ] ; then
-    return_value=1
-    FINISHED
-fi
-
-FINISHED
diff --git a/testing/tests/T057trapdauthtest3 b/testing/tests/T057trapdauthtest3
deleted file mode 100644
index 2ccb5cb..0000000
--- a/testing/tests/T057trapdauthtest3
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER snmptrapd discards of incorrect view types 
-
-#
-# Begin test
-#
-
-CONFIGTRAPD createUser testuser
-CONFIGTRAPD authuser execute testuser noAuthNoPriv
-CONFIGTRAPD agentxsocket /dev/null
-
-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 blah"
-
-STOPTRAPD
-
-CHECKTRAPD "coldStart"
-EXPECTRESULT 0
-if [ "$snmp_last_test_result" != 0 ] ; then
-    return_value=1
-    FINISHED
-fi
-
-FINISHED
diff --git a/testing/tests/T058agentauthtrap b/testing/tests/T058agentauthtrap
deleted file mode 100644
index 7be3a7b..0000000
--- a/testing/tests/T058agentauthtrap
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER authentication failure traps are sent by snmpd
-
-SKIPIF NETSNMP_DISABLE_SNMPV1
-
-#
-# Begin test
-#
-
-# standard V1 configuration: testcommunity
-. ./Sv1config
-# add in a v1 trap sink
-CONFIGAGENT trapsink $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPTRAPD_PORT public
-CONFIGAGENT authtrapenable 1
-CONFIGTRAPD authcommunity log public
-CONFIGTRAPD agentxsocket /dev/null
-
-STARTTRAPD
-
-STARTAGENT
-
-# give the agent more time to start up.  We only want to fire one
-# request (retries = 0) to make sure only one trap is sent.
-#DELAY
-CAPTURE "snmpget -On -r 0 -t 5 $SNMP_FLAGS -v 1 -c wrongcommunity $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-
-STOPAGENT
-
-STOPTRAPD
-
-CHECKTRAPD "Authentication Failure Trap"
-
-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/T060trapdperl b/testing/tests/T060trapdperl
deleted file mode 100755
index 63a6f4c..0000000
--- a/testing/tests/T060trapdperl
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER 'snmptrapd embedded perl support (NetSNMP::TrapReceiver)'
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-SKIPIFNOT NETSNMP_EMBEDDED_PERL
-
-#
-# Begin test
-#
-
-snmp_version=v2c
-TESTCOMMUNITY=testcommunity
-TESTOID=.1.3.6.1.6.3.1.1.5.1
-TESTOID2=.1.3.6.1.6.3.1.1.5.2
-EMBPERL_LOGFILE=${SNMP_TMPDIR}/embperl.log
-
-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 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 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"
-
-## 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"
-
-## stop
-STOPTRAPD
-
-
-CHECKORDIE "handled_by_embperl"       $EMBPERL_LOGFILE
-CHECKORDIE "handled_again_by_embperl" $EMBPERL_LOGFILE
-
-FINISHED
diff --git a/testing/tests/T061agentperl b/testing/tests/T061agentperl
deleted file mode 100755
index 27e5b31..0000000
--- a/testing/tests/T061agentperl
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER 'snmpd embedded perl support (using NetSNMP::agent)'
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-SKIPIFNOT NETSNMP_EMBEDDED_PERL
-
-#
-# Begin test
-#
-
-snmp_version=v2c
-TESTCOMMUNITY=testcommunity
-. ./Sv2cconfig
-
-TESTOID=.1.3.6.1.4.1.8872.9999.9999.1.0
-TESTOID2=.1.3.6.1.4.1.8872.9999.9999.2.0
-EMBPERL_AGENT=${SNMP_TMPDIR}/hello.pl
-cat >$EMBPERL_AGENT <<END
-#!/usr/bin/env perl
-# minimal embedded perl agent
-
-my \$regat = '.1.3.6.1.4.1.8872.9999.9999'; # netSnmpPlayPen
-my \$myoid = \$regat . ".1.0"; # the "hello world" OID
-my \$myoid2 = \$regat . ".2.0"; # the "hello again world" OID
-
-use NetSNMP::OID qw(:all);
-use NetSNMP::agent qw(:all);
-use NetSNMP::ASN qw(:all);
-use SNMP;
-
-my \$regoid = new NetSNMP::OID(\$regat);
-\$agent->register("hello", \$regoid, \&my_snmp_handler);
-
-sub my_snmp_handler {
-  my (\$handler, \$registration_info, \$request_info, \$requests) = @_;
-  for(my \$request = \$requests; \$request; \$request = \$request->next()) {
-    if (\$request_info->getMode() == MODE_GET) {
-      if (\$request->getOID() == new NetSNMP::OID(\$myoid)) {
-        \$request->setValue(ASN_OCTET_STR, "hello world");
-        last;
-      } elsif (\$request->getOID() == new NetSNMP::OID(\$myoid2)) {
-        \$request->setValue(ASN_OCTET_STR, "hello again world");
-        last;
-      }
-    }
-  }
-}
-END
-
-echo "use blib qw(${SNMP_UPDIR}/perl);" > ${SNMP_TMPDIR}/snmp_perl.pl
-echo 'use NetSNMP::agent;' >> ${SNMP_TMPDIR}/snmp_perl.pl
-echo '$agent = new NetSNMP::agent('"'dont_init_agent' => 1, 'dont_init_lib' => 1);" >> ${SNMP_TMPDIR}/snmp_perl.pl
-
-CONFIGAGENT perlInitFile ${SNMP_TMPDIR}/snmp_perl.pl
-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
-CAPTURE "snmpget -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT $TESTOID"
-CHECK "hello world"
-
-## 2) persistency: reconfigure (HUP), re-test
-HUPAGENT
-CAPTURE "snmpget -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT $TESTOID2"
-CHECK "hello again world"
-
-## stop
-STOPAGENT
-
-FINISHED
diff --git a/testing/tests/T065agentextend b/testing/tests/T065agentextend
deleted file mode 100644
index 627f58f..0000000
--- a/testing/tests/T065agentextend
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/sh
-
-. ../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
-
-# make sure snmpget can be executed
-SNMPGET="${SNMP_UPDIR}/apps/snmpget"
-[ -x "$SNMPGET" ] || SKIP
-
-snmp_version=v2c
-TESTCOMMUNITY=testcommunity
-. ./Sv2cconfig
-
-#
-# Begin test
-#
-
-CONFIGAGENT extend hello /usr/bin/env echo hello_world
-
-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\""
-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\""
-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"
-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\""
-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\""
-CHECKORDIE "INTEGER: 0"
-
-STOPAGENT
-FINISHED
diff --git a/testing/tests/T066pass_simple b/testing/tests/T066pass_simple
deleted file mode 100644
index 61b14c0..0000000
--- a/testing/tests/T066pass_simple
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER "extending agent functionality with pass"
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-SKIPIFNOT USING_UCD_SNMP_PASS_MODULE
-SKIPIFNOT USING_UTILITIES_EXECUTE_MODULE
-
-# Don't run this test on MinGW - local/passtest is a shell script and
-# hence passing it to the MSVCRT popen() doesn't work.
-[ "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
-
-snmp_version=v2c
-TESTCOMMUNITY=testcommunity
-. ./Sv2cconfig
-
-#
-# Begin test
-#
-oid=.1.3.6.1.4.1.8072.2.255  # NET-SNMP-PASS-MIB::netSnmpPassExamples
-CONFIGAGENT pass $oid ${SNMP_BASEDIR}/../local/passtest
-
-ORIG_AGENT_FLAGS="$AGENT_FLAGS"
-AGENT_FLAGS="$ORIG_AGENT_FLAGS -Ducd-snmp/pass"
-STARTAGENT
-
-#COMMENT Check a full walk of the sample data
-CAPTURE "$SNMPWALK $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT $oid"
-CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassString.0 = STRING: Life, the Universe, and Everything"
-CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassInteger.1 = INTEGER: 42"
-CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassOID.1 = OID: NET-SNMP-PASS-MIB::netSnmpPassOIDValue"
-CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassTimeTicks.0 = Timeticks: (363136200) 42 days, 0:42:42.00 "
-CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassIpAddress.0 = IpAddress: 127.0.0.1"
-CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassCounter.0 = Counter32: 42"
-CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassGauge.0 = Gauge32: 42"
-
-#COMMENT A couple of spot checks of GET requests.
-CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT NET-SNMP-PASS-MIB::netSnmpPassInteger.1"
-CHECKORDIE "INTEGER: 42"
-
-CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT NET-SNMP-PASS-MIB::netSnmpPassCounter.0"
-CHECKORDIE "Counter32: 42"
-
-STOPAGENT
-FINISHED
diff --git a/testing/tests/T067passpersist_simple b/testing/tests/T067passpersist_simple
deleted file mode 100644
index 7c66a1d..0000000
--- a/testing/tests/T067passpersist_simple
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/sh
-
-. ../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"
-
-# make sure snmpget and snmpwalk can be executed
-SNMPGET="${SNMP_UPDIR}/apps/snmpget"
-[ -x "$SNMPGET" ] || SKIP
-SNMPWALK="${SNMP_UPDIR}/apps/snmpwalk"
-[ -x "$SNMPWALK" ] || SKIP
-
-snmp_version=v2c
-TESTCOMMUNITY=testcommunity
-. ./Sv2cconfig
-
-#
-# 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
-
-ORIG_AGENT_FLAGS="$AGENT_FLAGS"
-AGENT_FLAGS="$ORIG_AGENT_FLAGS -Ducd-snmp/pass_persist"
-PASS_PERSIST_PIDFILE="$SNMP_TMPDIR/pass_persist.pid.$$"
-export PASS_PERSIST_PIDFILE
-STARTAGENT
-
-#COMMENT Check a full walk of the sample data
-CAPTURE "$SNMPWALK $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT $oid"
-CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassString.0 = STRING: Life, the Universe, and Everything"
-CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassInteger.1 = INTEGER: 42"
-CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassOID.1 = OID: NET-SNMP-PASS-MIB::netSnmpPassOIDValue"
-CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassTimeTicks.0 = Timeticks: (363136200) 42 days, 0:42:42.00 "
-CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassIpAddress.0 = IpAddress: 127.0.0.1"
-CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassCounter.0 = Counter32: 1"
-CHECKORDIE "NET-SNMP-PASS-MIB::netSnmpPassGauge.0 = Gauge32: 42"
-
-#COMMENT A couple of spot checks of GET requests.
-CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT NET-SNMP-PASS-MIB::netSnmpPassInteger.1"
-CHECKORDIE "INTEGER: 42"
-
-#COMMENT netSnmpPassCounter should increment, since this is pass_persist
-CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT NET-SNMP-PASS-MIB::netSnmpPassCounter.0"
-CHECKORDIE "Counter32: 2"
-
-#COMMENT now kill the pass_persist script, and check that it recovers.
-STOPPROG $PASS_PERSIST_PIDFILE
-#COMMENT netSnmpPassCounter should have reverted to 1, as this is a new instance.
-CAPTURE "$SNMPGET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT NET-SNMP-PASS-MIB::netSnmpPassCounter.0"
-CHECKORDIE "Counter32: 1"
-
-STOPAGENT
-FINISHED
diff --git a/testing/tests/T068execfix b/testing/tests/T068execfix
deleted file mode 100644
index f49206e..0000000
--- a/testing/tests/T068execfix
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/sh
-
-HEADER "execfix configuration directive"
-
-SKIPIFNOT USING_UCD_SNMP_EXTENSIBLE_MODULE
-SKIPIF NETSNMP_DISABLE_SET_SUPPORT
-SKIPIF NETSNMP_NO_WRITE_SUPPORT
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-
-# make sure snmpset and snmpwalk can be executed
-SNMPSET="${builddir}/apps/snmpset"
-[ -x "$SNMPSET" ] || SKIP snmpset not compiled
-SNMPWALK="${builddir}/apps/snmpwalk"
-[ -x "$SNMPWALK" ] || SKIP snmpwalk not compiled
-
-snmp_version=v2c
-snmp_write_access='all'
-TESTCOMMUNITY=testcommunity
-. ./Sv2cconfig
-
-#
-# Begin test
-#
-if [ "x$OSTYPE" = xmsys ]; then
-    cmd1="true"
-    cmd2="false"
-    echo="echo"
-else
-    cmd1="$(which true)"
-    cmd2="$(which false)"
-    echo="$(which echo)"
-fi
-CONFIGAGENT exec    true-command    $cmd1
-CONFIGAGENT execfix true-command    $cmd1
-CONFIGAGENT exec    false-command   $cmd2
-CONFIGAGENT execfix false-command   $cmd2
-CONFIGAGENT exec    echo-%s-command ${echo} %s
-CONFIGAGENT execfix echo-%s-command ${echo} fix-%s
-
-STARTAGENT
-
-# Check a full walk of UCD-SNMP-MIB::extTable
-CAPTURE "$SNMPWALK $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT UCD-SNMP-MIB::extEntry"
-CHECK 'UCD-SNMP-MIB::extNames.1 = STRING: true-command$'
-CHECK 'UCD-SNMP-MIB::extCommand.1 = STRING: '"$cmd1"
-CHECK 'UCD-SNMP-MIB::extResult.1 = INTEGER: 0$'
-CHECK 'UCD-SNMP-MIB::extOutput.1 = STRING: $'
-CHECK 'UCD-SNMP-MIB::extErrFix.1 = INTEGER: noError(0)$'
-CHECK 'UCD-SNMP-MIB::extErrFixCmd.1 = STRING: '"$cmd1"
-CHECK 'UCD-SNMP-MIB::extNames.2 = STRING: false-command$'
-CHECK 'UCD-SNMP-MIB::extCommand.2 = STRING: '"$cmd2"'$'
-CHECK 'UCD-SNMP-MIB::extResult.2 = INTEGER: 1$'
-CHECK 'UCD-SNMP-MIB::extOutput.2 = STRING: $'
-CHECK 'UCD-SNMP-MIB::extErrFix.2 = INTEGER: noError(0)$'
-CHECK 'UCD-SNMP-MIB::extErrFixCmd.2 = STRING: '"$cmd2"'$'
-CHECK 'UCD-SNMP-MIB::extNames.3 = STRING: echo-%s-command$'
-CHECK 'UCD-SNMP-MIB::extCommand.3 = STRING: '"${echo}"' %s$'
-CHECK 'UCD-SNMP-MIB::extResult.3 = INTEGER: 0$'
-CHECK 'UCD-SNMP-MIB::extOutput.3 = STRING: %s$'
-CHECK 'UCD-SNMP-MIB::extErrFix.3 = INTEGER: noError(0)$'
-CHECK 'UCD-SNMP-MIB::extErrFixCmd.3 = STRING: '"${echo}"' fix-%s$'
-
-CAPTURE "$SNMPSET $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY -r0 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT UCD-SNMP-MIB::extErrFix.3 i 1"
-CHECK 'UCD-SNMP-MIB::extErrFix.3 = INTEGER: runFix(1)'
-
-CAPTURE "$SNMPWALK $SNMP_FLAGS -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT UCD-SNMP-MIB::extEntry"
-CHECK 'UCD-SNMP-MIB::extErrFixCmd.3 = STRING: '"${echo}"' fix-%s'
-
-STOPAGENT
-FINISHED
diff --git a/testing/tests/T100agenthup b/testing/tests/T100agenthup
deleted file mode 100755
index 505efb4..0000000
--- a/testing/tests/T100agenthup
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER that the agent responds properly to a kill -HUP
-
-SKIPIF NETSNMP_DISABLE_SNMPV1
-
-SKIPIFNOT HAVE_SIGNAL
-
-#
-# Begin test
-#
-
-# standard V1 configuration: testcomunnity
-. ./Sv1config
-
-STARTAGENT
-
-# add a agent configuration line that wouldn't have been there when
-# the started up.
-CONFIGAGENT syslocation not-anywhere-in-particular
-
-# kill -HUP the agent to get it to re-read the .conf file.
-DELAY
-kill -HUP `cat $SNMP_SNMPD_PID_FILE` > /dev/null 2>&1
-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"
-
-STOPAGENT
-
-CHECK "not-anywhere-in-particular"
-
-FINISHED
diff --git a/testing/tests/T110agentxget b/testing/tests/T110agentxget
deleted file mode 100644
index 449280f..0000000
--- a/testing/tests/T110agentxget
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER AgentX GET support
-
-SKIPIFNOT USING_AGENTX_MASTER_MODULE
-SKIPIFNOT USING_AGENTX_SUBAGENT_MODULE
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-
-#
-# Begin test
-#
-
-# standard V3 configuration for initial user
-. ./Sv3config
-
-# Start the agent without initializing the system mib.
-if [ "x$SNMP_TRANSPORT_SPEC" = "xunix" ];then
-ORIG_AGENT_FLAGS="$AGENT_FLAGS -x $SNMP_TMPDIR/agentx_socket"
-else
-ORIG_AGENT_FLAGS="$AGENT_FLAGS -x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
-fi
-AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib"
-STARTAGENT
-
-# test to see that the current agent doesn't support the system mib
-CAPTURE "snmpget -On $SNMP_FLAGS $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-
-CHECK ".1.3.6.1.2.1.1.3.0 = No Such Object"
-
-if test "$snmp_last_test_result" = 1; then
-  # test the agentx subagent by first running it...
-
-  SNMP_SNMPD_PID_FILE_ORIG=$SNMP_SNMPD_PID_FILE
-  SNMP_SNMPD_LOG_FILE_ORIG=$SNMP_SNMPD_LOG_FILE
-  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE.num2
-  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE.num2
-  AGENT_FLAGS="$ORIG_AGENT_FLAGS -X -I system_mib"
-  SNMP_CONFIG_FILE="$SNMP_TMPDIR/bogus.conf"
-  STARTAGENT
-
-  # test to see that the agent now supports setting the system mib
-  CAPTURE "snmpget -On $SNMP_FLAGS -t 3 $AUTHTESTARGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-
-  CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-  # stop the subagent
-  STOPAGENT
-
-  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE_ORIG
-  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE_ORIG
-fi
-
-# stop the master agent
-STOPAGENT
-
-# all done (whew)
-FINISHED
diff --git a/testing/tests/T111agentxset b/testing/tests/T111agentxset
deleted file mode 100644
index 96cbb50..0000000
--- a/testing/tests/T111agentxset
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER AgentX SET support
-
-SKIPIFNOT USING_AGENTX_MASTER_MODULE
-SKIPIFNOT USING_AGENTX_SUBAGENT_MODULE
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-SKIPIF    NETSNMP_DISABLE_SET_SUPPORT
-
-#
-# Begin test
-#
-
-# standard V3 configuration for initial user
-. ./Sv3config
-
-# Start the agent without initializing the system mib.
-if [ "x$SNMP_TRANSPORT_SPEC" = "xunix" ];then
-ORIG_AGENT_FLAGS="$AGENT_FLAGS -x $SNMP_TMPDIR/agentx_socket"
-else
-ORIG_AGENT_FLAGS="$AGENT_FLAGS -x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
-fi
-AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib -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 .1.3.6.1.2.1.1.4.0"
-
-CHECK ".1.3.6.1.2.1.1.4.0 = No Such Object"
-
-if test "$snmp_last_test_result" = 1; then
-  # test the AgentX subagent by first running it...
-
-  SNMP_SNMPD_PID_FILE_ORIG=$SNMP_SNMPD_PID_FILE
-  SNMP_SNMPD_LOG_FILE_ORIG=$SNMP_SNMPD_LOG_FILE
-  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE.num2
-  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE.num2
-  AGENT_FLAGS="$ORIG_AGENT_FLAGS -X -I system_mib"
-  SNMP_CONFIG_FILE="$SNMP_TMPDIR/bogus.conf"
-  echo "psyscontact testcontact" >> $SNMP_CONFIG_FILE
-  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"
-
-  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"
-
-    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"
-	
-	CHECK ".1.3.6.1.2.1.1.4.0 = STRING: newtestcontact"
-    fi
-  fi
-
-  # stop the subagent
-  STOPAGENT
-
-  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE_ORIG
-  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE_ORIG
-fi
-
-# stop the master agent
-STOPAGENT
-
-# all done (whew)
-FINISHED
diff --git a/testing/tests/T112agentxsetfail b/testing/tests/T112agentxsetfail
deleted file mode 100644
index 4dce727..0000000
--- a/testing/tests/T112agentxsetfail
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER AgentX illegal SET handling support
-
-SKIPIFNOT USING_AGENTX_MASTER_MODULE
-SKIPIFNOT USING_AGENTX_SUBAGENT_MODULE
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-SKIPIF    NETSNMP_DISABLE_SET_SUPPORT
-
-#
-# Begin test
-#
-
-# standard V3 configuration for initial user
-. ./Sv3config
-
-# Start the agent without initializing the system mib.
-if [ "x$SNMP_TRANSPORT_SPEC" = "xunix" ];then
-ORIG_AGENT_FLAGS="$AGENT_FLAGS -x $SNMP_TMPDIR/agentx_socket"
-else
-ORIG_AGENT_FLAGS="$AGENT_FLAGS -x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
-fi
-AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib -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"
-
-CHECK ".1.3.6.1.2.1.1.4.0 = No Such Object"
-
-if test "$snmp_last_test_result" = 1; then
-  # test the AgentX subagent by first running it...
-
-  SNMP_SNMPD_PID_FILE_ORIG=$SNMP_SNMPD_PID_FILE
-  SNMP_SNMPD_LOG_FILE_ORIG=$SNMP_SNMPD_LOG_FILE
-  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE.num2
-  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE.num2
-  AGENT_FLAGS="$ORIG_AGENT_FLAGS -X -I system_mib"
-  SNMP_CONFIG_FILE="$SNMP_TMPDIR/bogus.conf"
-  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"
-
-  # 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"
-
-  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"
-
-    CHECK "wrongType"
-
-  fi
-
-  # stop the subagent
-  STOPAGENT
-
-  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE_ORIG
-  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE_ORIG
-fi
-
-# stop the master agent
-STOPAGENT
-
-# all done (whew)
-FINISHED
diff --git a/testing/tests/T113agentxtrap b/testing/tests/T113agentxtrap
deleted file mode 100644
index 25c3ee1..0000000
--- a/testing/tests/T113agentxtrap
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER AgentX trap sending support
-
-SKIPIFNOT USING_AGENTX_MASTER_MODULE
-SKIPIFNOT USING_AGENTX_SUBAGENT_MODULE
-SKIPIFNOT USING_EXAMPLES_EXAMPLE_MODULE
-
-#
-# Begin test
-#
-
-# start the trap demon
-CONFIGTRAPD authcommunity log public
-STARTTRAPD
-
-# standard V3 configuration for initial user
-. ./Sv3config
-# configure the trap receiver.
-CONFIGAGENT trapsink ${SNMP_TRANSPORT_SPEC}:${SNMP_TEST_DEST}${SNMP_SNMPTRAPD_PORT} public
-
-# Start the agent without initializing the example mib.
-if [ "x$SNMP_TRANSPORT_SPEC" = "xunix" ];then
-ORIG_AGENT_FLAGS="$AGENT_FLAGS -x $SNMP_TMPDIR/agentx_socket"
-else
-ORIG_AGENT_FLAGS="$AGENT_FLAGS -x tcp:${SNMP_TEST_DEST}${SNMP_AGENTX_PORT}"
-fi
-AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -example"
-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"
-
-CHECK "No Such Object"
-
-if test "$snmp_last_test_result" = 1; then
-  # test the AgentX subagent by first running it...
-
-  SNMP_SNMPD_PID_FILE_ORIG=$SNMP_SNMPD_PID_FILE
-  SNMP_SNMPD_LOG_FILE_ORIG=$SNMP_SNMPD_LOG_FILE
-  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE.num2
-  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE.num2
-  AGENT_FLAGS="$ORIG_AGENT_FLAGS -X -I example -Dadd"
-  SNMP_CONFIG_FILE="$SNMP_TMPDIR/bogus.conf"
-
-  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"
-
-  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"
-    DELAY
-    CHECKTRAPD "life the universe and everything"
-
-  fi
-
-  # stop the subagent
-  STOPAGENT
-
-  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE_ORIG
-  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE_ORIG
-fi
-
-# stop the master agent
-STOPAGENT
-
-# stop the trap demon
-STOPTRAPD
-
-# all done (whew)
-FINISHED
diff --git a/testing/tests/T115agentxperl b/testing/tests/T115agentxperl
deleted file mode 100755
index 9da24f6..0000000
--- a/testing/tests/T115agentxperl
+++ /dev/null
@@ -1,133 +0,0 @@
-#!/bin/sh
-
-. ../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
-# make sure the toolkit has been configured --with-perl-modules
-[ -d ${SNMP_UPDIR}/perl/blib/arch/auto/NetSNMP/agent ] || SKIP
-
-#
-# Begin test
-#
-
-snmp_version=v2c
-TESTCOMMUNITY=testcommunity
-. ./Sv2cconfig
-
-TESTOID=.1.3.6.1.4.1.8872.9999.9999.1.0
-TESTOID2=.1.3.6.1.4.1.8872.9999.9999.2.0
-AGENTX_SOCKET=${SNMP_TMPDIR}/agentx_socket
-PERL_SUBAGENT=${SNMP_TMPDIR}/hello.pl
-PERL_SUBAGENT_CONF=${SNMP_TMPDIR}/hello.conf
-
-cat >$PERL_SUBAGENT <<END
-#!${SNMP_PERLPROG}
-# minimal AgentX subagent in Perl
-
-use blib qw(${SNMP_UPDIR}/perl);
-use NetSNMP::OID qw(:all);
-use NetSNMP::agent qw(:all);
-use NetSNMP::ASN qw(:all);
-use NetSNMP::agent::default_store;
-use NetSNMP::default_store qw(:all);
-use SNMP;
-
-## double-fork daemon
-my \$pid;
-unless (\$pid = fork) {
-  unless (fork) {
-    ## start main code
-    my \$regat = '.1.3.6.1.4.1.8872.9999.9999'; # netSnmpPlayPen
-    my \$myoid = \$regat . ".1.0"; # the "hello world" OID
-    my \$myoid2 = \$regat . ".2.0"; # the "hello again world" OID
-
-    my \$pidfile = shift; # take PID file as first argument 
-    open(PIDFILE, ">\$pidfile") or die "Couldn't open \$pidfile";
-    print PIDFILE \$\$;
-    close(PIDFILE);
-
-sub my_snmp_handler {
-  my (\$handler, \$registration_info, \$request_info, \$requests) = @_;
-  for(my \$request = \$requests; \$request; \$request = \$request->next()) {
-    if (\$request_info->getMode() == MODE_GET) {
-      if (\$request->getOID() == new NetSNMP::OID(\$myoid)) {
-        \$request->setValue(ASN_OCTET_STR, "hello world");
-        last;
-      } elsif (\$request->getOID() == new NetSNMP::OID(\$myoid2)) {
-        \$request->setValue(ASN_OCTET_STR, "hello again world");
-        last;
-      }
-    }
-  }
-}
-sub shut_it_down { \$running = 0; }
-
-    netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID,
-                           NETSNMP_DS_AGENT_NO_ROOT_ACCESS, 1);
-    my \$agent = new NetSNMP::agent('Name' => 'hello', 'AgentX' => 1);
-    my \$regoid = new NetSNMP::OID(\$regat);
-    \$agent->register("hello", \$regoid, \&my_snmp_handler);
-
-    \$SIG{'INT'} = \&shut_it_down;
-    \$SIG{'QUIT'} = \&shut_it_down;
-    \$running = 1;
-    while(\$running) {
-      \$agent->agent_check_and_process(1);
-    }
-    \$agent->shutdown();
-    ## end main code
-    exit 0;
-  }
-  exit 0;
-}
-waitpid(\$pid, 0);
-END
-
-echo "agentxsocket $AGENTX_SOCKET" > $PERL_SUBAGENT_CONF
-
-CONFIGAGENT master agentx
-CONFIGAGENT agentxsocket $AGENTX_SOCKET
-
-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
-
-## 1) SNMP GET against mib object implemented by the perl subagent
-CAPTURE "snmpget -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT $TESTOID"
-CHECK "hello world"
-
-## 2) persistency: reconfigure master agent (HUP), re-test
-HUPAGENT
-CAPTURE "snmpget -$snmp_version -c $TESTCOMMUNITY $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT $TESTOID2"
-CHECK "hello again world"
-
-## stop
-STOPAGENT
-STOPPROG $SNMP_AGENTX_PID_FILE
-
-FINISHED
diff --git a/testing/tests/T120proxyget b/testing/tests/T120proxyget
deleted file mode 100644
index d10177b..0000000
--- a/testing/tests/T120proxyget
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER Proxy GET support
-
-SKIPIFNOT USING_UCD_SNMP_PROXY_MODULE
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-
-# XXX: ucd-snmp/proxy doesn't properly support TCP -- remove this once it does
-[ "x$SNMP_TRANSPORT_SPEC" = "xtcp" ] && SKIP
-
-#
-# Begin test
-#
-
-# 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
-
-# Start the agent without initializing the system mib.
-ORIG_AGENT_FLAGS="$AGENT_FLAGS"
-AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib -Dproxy"
-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 .1.3.6.1.2.1.1.3.0"
-
-#CHECK ".1.3.6.1.2.1.1.3.0 = No Such Object"
-
-#if test "$snmp_last_test_result" = 1; then
-  # test the proxy subagent by first running it...
-
-  SNMP_SNMPD_PID_FILE_ORIG=$SNMP_SNMPD_PID_FILE
-  SNMP_SNMPD_LOG_FILE_ORIG=$SNMP_SNMPD_LOG_FILE
-  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE.num2
-  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE.num2
-  SNMP_CONFIG_FILE="$SNMP_TMPDIR/proxy.conf"
-  echo "rwcommunity testcommunity" >> $SNMP_CONFIG_FILE
-  AGENT_FLAGS=$ORIG_AGENT_FLAGS
-  ORIG_SNMP_SNMPD_PORT=$SNMP_SNMPD_PORT
-  SNMP_SNMPD_PORT="${SNMP_AGENTX_PORT}"
-  STARTAGENT
-  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 .1.3.6.1.2.1.1.3.0"
-
-  CHECK ".1.3.6.1.2.1.1.3.0 = Timeticks:"
-
-  # stop the subagent
-  STOPAGENT
-
-  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE_ORIG
-  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE_ORIG
-#fi
-
-# stop the master agent
-STOPAGENT
-
-# all done (whew)
-FINISHED
diff --git a/testing/tests/T121proxyset b/testing/tests/T121proxyset
deleted file mode 100644
index 8c1c7a6..0000000
--- a/testing/tests/T121proxyset
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER Proxy SET support
-
-SKIPIFNOT USING_UCD_SNMP_PROXY_MODULE
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-SKIPIF    NETSNMP_DISABLE_SNMPV2C
-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
-
-#
-# Begin test
-#
-
-# 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
-
-# Start the agent without initializing the system mib.
-ORIG_AGENT_FLAGS="$AGENT_FLAGS"
-AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib -Dproxy"
-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 .1.3.6.1.2.1.1.3.0"
-
-#CHECK ".1.3.6.1.2.1.1.3.0 = No Such Object"
-
-#if test "$snmp_last_test_result" = 1; then
-  # test the proxy subagent by first running it...
-
-  SNMP_SNMPD_PID_FILE_ORIG=$SNMP_SNMPD_PID_FILE
-  SNMP_SNMPD_LOG_FILE_ORIG=$SNMP_SNMPD_LOG_FILE
-  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE.num2
-  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE.num2
-  SNMP_CONFIG_FILE="$SNMP_TMPDIR/proxy.conf"
-  echo "rwcommunity testcommunity" >> $SNMP_CONFIG_FILE
-  echo "psyscontact testcontact" >> $SNMP_CONFIG_FILE
-  AGENT_FLAGS="$ORIG_AGENT_FLAGS -Dmib_init"
-  ORIG_SNMP_SNMPD_PORT=$SNMP_SNMPD_PORT
-  SNMP_SNMPD_PORT="${SNMP_AGENTX_PORT}"
-  STARTAGENT
-  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"
-
-  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"
-
-    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"
-	
-	CHECK ".1.3.6.1.2.1.1.4.0 = STRING: newtestcontact"
-    fi
-  fi
-
-  # stop the subagent
-  STOPAGENT
-
-  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE_ORIG
-  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE_ORIG
-#fi
-
-# stop the master agent
-STOPAGENT
-
-# all done (whew)
-FINISHED
diff --git a/testing/tests/T122proxysetfail b/testing/tests/T122proxysetfail
deleted file mode 100644
index 8ecf9bf..0000000
--- a/testing/tests/T122proxysetfail
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER Proxy illegal SET handling support
-
-SKIPIFNOT USING_UCD_SNMP_PROXY_MODULE
-SKIPIFNOT USING_MIBII_SYSTEM_MIB_MODULE
-SKIPIF    NETSNMP_DISABLE_SNMPV2C
-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
-
-#
-# Begin test
-#
-
-# 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
-
-# Start the agent without initializing the system mib.
-ORIG_AGENT_FLAGS="$AGENT_FLAGS"
-AGENT_FLAGS="$ORIG_AGENT_FLAGS -I -system_mib -Dproxy"
-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 .1.3.6.1.2.1.1.3.0"
-
-#CHECK ".1.3.6.1.2.1.1.3.0 = No Such Object"
-
-#if test "$snmp_last_test_result" = 1; then
-  # test the proxy subagent by first running it...
-
-  SNMP_SNMPD_PID_FILE_ORIG=$SNMP_SNMPD_PID_FILE
-  SNMP_SNMPD_LOG_FILE_ORIG=$SNMP_SNMPD_LOG_FILE
-  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE.num2
-  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE.num2
-  SNMP_CONFIG_FILE="$SNMP_TMPDIR/proxy.conf"
-  echo "rwcommunity testcommunity" >> $SNMP_CONFIG_FILE
-#  echo "syscontact testcontact" >> $SNMP_CONFIG_FILE
-  AGENT_FLAGS="$ORIG_AGENT_FLAGS -Dmib_init"
-  ORIG_SNMP_SNMPD_PORT=$SNMP_SNMPD_PORT
-  SNMP_SNMPD_PORT="${SNMP_AGENTX_PORT}"
-  STARTAGENT
-  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"
-
-  
-  # 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"
-
-  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"
-
-    # 5.0.x snmpset shows error on single line
-    #CHECK ".1.3.6.1.2.1.1.4.0 = Wrong Type"
-    # 5.1.x snmpset shows error on multiple lines
-    CHECK "Reason: wrongType"
-    CHECK "Failed object: .1.3.6.1.2.1.1.4.0"
-
-  fi
-
-  # stop the subagent
-  STOPAGENT
-
-  SNMP_SNMPD_PID_FILE=$SNMP_SNMPD_PID_FILE_ORIG
-  SNMP_SNMPD_LOG_FILE=$SNMP_SNMPD_LOG_FILE_ORIG
-#fi
-
-# stop the master agent
-STOPAGENT
-
-# all done (whew)
-FINISHED
diff --git a/testing/tests/T130snmpv1vacmget b/testing/tests/T130snmpv1vacmget
deleted file mode 100644
index 71bdc71..0000000
--- a/testing/tests/T130snmpv1vacmget
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv1 vacm acceptance support
-SKIPIF NETSNMP_DISABLE_SNMPV1
-
-#
-# Begin test
-#
-
-# standard V1 configuration: testcommunity1 testcommunity2
-# testcommunity1 can access .1.3.6.1.2.1.1.1, others are denied
-# testcommunity2 can access all except .1.3.6.1.2.1.1.1
-# This case test for successful access
-snmp_version=v1
-. ./Svacmconfig
-
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity1 -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.1.0" 
-
-CHECKORDIE ".1.3.6.1.2.1.1.1.0 = STRING:"
-
-CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity2 -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .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/T131snmpv2cvacmget b/testing/tests/T131snmpv2cvacmget
deleted file mode 100644
index 9d481f2..0000000
--- a/testing/tests/T131snmpv2cvacmget
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv2 vacm acceptance support
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-
-#
-# Begin test
-#
-
-
-# standard V1 configuration: testcommunity1 testcommunity2
-# testcommunity1 can access .1.3.6.1.2.1.1.1, others are denied
-# testcommunity2 can access all except .1.3.6.1.2.1.1.1
-# This case test for successful access
-
-snmp_version=v2c
-. ./Svacmconfig
-
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity1 -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.1.0" 
-
-CHECKORDIE ".1.3.6.1.2.1.1.1.0 = STRING:"
-
-CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity2 -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .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/T132snmpv3vacmget b/testing/tests/T132snmpv3vacmget
deleted file mode 100644
index 8ce9364..0000000
--- a/testing/tests/T132snmpv3vacmget
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv3 vacm acceptance support
-
-#
-# Begin test
-#
-
-# Configuration:
-#initial1 can access .1.3.6.1.2.1.1.1, deny others
-#initial2 can access all except .1.3.6.1.2.1.1.1 
-#This case test for successful access
-
-snmp_version=v3
-. ./Sv3vacmconfig
-
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS -v3 -a MD5 -A initial_test_pass_auth -u initial1 -l anp $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.1.0" 
-
-CHECKORDIE ".1.3.6.1.2.1.1.1.0 = STRING:"
-
-CAPTURE "snmpget -On $SNMP_FLAGS -v3 -a MD5 -A initial_test_pass_auth -u initial2 -l anp $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .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/T140snmpv1vacmgetfail b/testing/tests/T140snmpv1vacmgetfail
deleted file mode 100644
index 0510008..0000000
--- a/testing/tests/T140snmpv1vacmgetfail
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv1 vacm denial support
-
-SKIPIF NETSNMP_DISABLE_SNMPV1
-
-#
-# Begin test
-#
-
-# standard V1 configuration: testcommunity1 testcommunity2
-# testcommunity1 can access .1.3.6.1.2.1.1.1, others are denied
-# testcommunity2 can access all except .1.3.6.1.2.1.1.1
-# This case test for denied access
-
-snmp_version=v1
-. ./Svacmconfig
-
-STARTAGENT
-
-
-CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity1 -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-
-CHECKORDIE "Reason: (noSuchName) There is no such variable name in this MIB."
-
-
-CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity2 -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.1.0"
-
-CHECKORDIE "Reason: (noSuchName) There is no such variable name in this MIB."
-
-STOPAGENT
-
-FINISHED
diff --git a/testing/tests/T141snmpv2cvacmgetfail b/testing/tests/T141snmpv2cvacmgetfail
deleted file mode 100644
index c2ed337..0000000
--- a/testing/tests/T141snmpv2cvacmgetfail
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv2 vacm denial support
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-SKIPIF NETSNMP_DISABLE_SET_SUPPORT
-
-#
-# Begin test
-#
-
-
-# standard V1 configuration: testcommunity1 testcommunity2
-# testcommunity1 can access .1.3.6.1.2.1.1.1, others are denied
-# testcommunity2 can access all except .1.3.6.1.2.1.1.1
-# This case test for denied access
-
-snmp_version=v2c
-. ./Svacmconfig
-
-STARTAGENT
-
-
-CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity1 -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0"
-CHECKORDIE ".1.3.6.1.2.1.1.3.0 = No Such Object available on this agent at this OID"
-
-CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity2 -v 2c $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.1.0"
-CHECKORDIE ".1.3.6.1.2.1.1.1.0 = No Such Object available on this agent at this OID"
-
-CAPTURE "snmpset -On $SNMP_FLAGS -c testcommunity1 -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"
-
-CAPTURE "snmpset -On $SNMP_FLAGS -c testcommunity2 -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"
-
-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"
-
-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"
-
-STOPAGENT
-
-FINISHED
diff --git a/testing/tests/T142snmpv3vacmgetfail b/testing/tests/T142snmpv3vacmgetfail
deleted file mode 100644
index 8f7eb9c..0000000
--- a/testing/tests/T142snmpv3vacmgetfail
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER SNMPv3 vacm denial support
-
-#
-# Begin test
-#
-
-# Configuration:
-#initial1 can access .1.3.6.1.2.1.1.1, deny others
-#initial2 can access all except .1.3.6.1.2.1.1.1 
-#This case test for denied access
-
-snmp_version=v3
-. ./Sv3vacmconfig
-
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS -v3 -a MD5 -A initial_test_pass_auth -u initial1 -l anp $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.3.0" 
-
-CHECKORDIE ".1.3.6.1.2.1.1.3.0 = No Such Object available on this agent at this OID"
-
-
-CAPTURE "snmpget -On $SNMP_FLAGS -v3 -a MD5 -A initial_test_pass_auth -u initial2 -l anp $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.1.1.0" 
-
-CHECKORDIE ".1.3.6.1.2.1.1.1.0 = No Such Object available on this agent at this OID"
-
-STOPAGENT
-
-FINISHED
diff --git a/testing/tests/T150solarishostcpu b/testing/tests/T150solarishostcpu
deleted file mode 100644
index a28e939..0000000
--- a/testing/tests/T150solarishostcpu
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER 1st CPU on Solaris using HOST-RESOURCES
-
-if test "x`uname -s`" != "xSunOS" ; then
-    SKIP
-fi
-
-SKIPIF NETSNMP_DISABLE_SNMPV1
-SKIPIFNOT USING_HOST_HR_DEVICE_MODULE
-
-#
-# Begin test
-#
-
-# standard V1 configuration: testcommunity
-. ./Sv1config
-
-STARTAGENT
-
-# ask for the description of the first CPU in the system
-
-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 "
-
-STOPAGENT
-  
-FINISHED
diff --git a/testing/tests/T151solarishostdisk b/testing/tests/T151solarishostdisk
deleted file mode 100644
index f9811f5..0000000
--- a/testing/tests/T151solarishostdisk
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-
-. ../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
-fi
-
-SKIPIFNOT USING_HOST_HR_SYSTEM_MODULE
-SKIPIF NETSNMP_DISABLE_SNMPV1
-
-#
-# Begin test
-#
-
-# standard V1 configuration: testcommunity
-. ./Sv1config
-
-STARTAGENT
-
-# ask for the index of the initial device (hrSystemInitialLoadDevice.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.25.1.3.0"
-
-STOPAGENT
-
-CHECKORDIE "^.1.3.6.1.2.1.25.1.3.0 = INTEGER:"
-
-FINISHED
diff --git a/testing/tests/T152hostuptime b/testing/tests/T152hostuptime
deleted file mode 100644
index 1e90d3f..0000000
--- a/testing/tests/T152hostuptime
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER uptime using HOST-RESOURCES
-
-SKIPIFNOT USING_HOST_HR_SYSTEM_MODULE
-
-SKIPIF NETSNMP_DISABLE_SNMPV1
-
-#
-# Begin test
-#
-
-# standard V1 configuration: testcommunity
-. ./Sv1config
-
-STARTAGENT
-
-CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.25.1.1.0"
-
-STOPAGENT
-    
-CHECKORDIE "^.1.3.6.1.2.1.25.1.1.0 = Timeticks:"
-
-FINISHED
-
diff --git a/testing/tests/T153solarisswap b/testing/tests/T153solarisswap
deleted file mode 100644
index 04e2e3c..0000000
--- a/testing/tests/T153solarisswap
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-HEADER swap on Solaris using HOST-RESOURCES
-
-if test `uname -s` != "SunOS" ; then
-    # a bogus skip for !suns
-    SKIPIFNOT XXXYYYZZZ
-fi
-
-SKIPIFNOT USING_HOST_HR_STORAGE_MODULE
-
-SKIPIF NETSNMP_DISABLE_SNMPV1
-
-#
-# Begin test
-#
-
-# standard V1 configuration: testcommunity
-. ./Sv1config
-
-STARTAGENT
-
-# ask for hrStorageSize.10 which reports overall swap size
-CAPTURE "snmpget -On $SNMP_FLAGS -c testcommunity -v 1 $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT .1.3.6.1.2.1.25.2.3.1.5.10"
-
-STOPAGENT
-
-CHECKORDIE "^.1.3.6.1.2.1.25.2.3.1.5.10 = INTEGER:"
-
-FINISHED
diff --git a/testing/tests/T160snmpnetstat b/testing/tests/T160snmpnetstat
deleted file mode 100644
index 15de54c..0000000
--- a/testing/tests/T160snmpnetstat
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/sh
-
-. ../eval_tools.sh
-
-# snmpnetstat test only works with UDP or TCP
-if [ "x$SNMP_TRANSPORT_SPEC" = "x" -o "x$SNMP_TRANSPORT_SPEC" = "xudp" ]; then
-  proto=udp
-  SKIPIFNOT USING_MIBII_UDPTABLE_MODULE
-elif [ "x$SNMP_TRANSPORT_SPEC" = "xtcp" ]; then
-  proto=tcp
-  SKIPIFNOT USING_MIBII_TCPTABLE_MODULE
-else
-  HEADER "if snmpnetstat finds the running agent in udpTable/tcpTable"
-  SKIP
-fi
-
-HEADER "if snmpnetstat finds the running agent in ${proto}Table"
-
-# 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;;
-esac
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-
-# make sure snmpnetstat can be executed
-SNMPNETSTAT="${SNMP_UPDIR}/apps/snmpnetstat/snmpnetstat"
-[ -x "$SNMPNETSTAT" ] || SKIP
-
-snmp_version=v2c
-. ./Sv2cconfig
-
-#
-# Begin test
-#
-
-STARTAGENT
-
-CAPTURE "$SNMPNETSTAT -Cn -Cp $proto -$snmp_version -c testcommunity $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT"
-CHECKEXACT "127.0.0.1.$SNMP_SNMPD_PORT"
-# multiple occurrences (especially in tcpTable) are fine
-if [ "$snmp_last_test_result" != 0 ] ; then
-    return_value=0
-else
-    return_value=1
-fi
-
-STOPAGENT
-FINISHED
diff --git a/testing/tests/T200snmpv2cwalkall b/testing/tests/T200snmpv2cwalkall
deleted file mode 100644
index 2388235..0000000
--- a/testing/tests/T200snmpv2cwalkall
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/sh
-
-. ../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
-    fi
-fi
-
-SKIPIF NETSNMP_DISABLE_SNMPV2C
-
-# make sure snmpwalk can be executed
-SNMPWALK="${SNMP_UPDIR}/apps/snmpwalk"
-[ -x "$SNMPWALK" ] || SKIP
-
-snmp_version=v2c
-. ./Sv2cconfig
-
-#
-# Begin test
-#
-
-# higher timeout/retry values for safety
-TIMEOUT=10
-RETRY=5
-
-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
-CHECKORDIE "No more variables left in this MIB View"
-
-STOPAGENT
-FINISHED
diff --git a/win32/Configure b/win32/Configure
old mode 100644
new mode 100755
index 98fa3fd..a36db0b
--- a/win32/Configure
+++ b/win32/Configure
@@ -7,6 +7,7 @@
 use Getopt::Long;
 use strict;
 
+my $version = "unknown";
 my $config;
 my $sdk = 0;
 my $linktype;
@@ -85,45 +86,73 @@
 
 ###############################################
 #
-# Create main Makefile
+# Determine version from unix configure script
 #
 ###############################################
+
+my $unix_configure_in = "../configure";
+
+open (UNIX_CONFIGURE_IN, "<$unix_configure_in") || die "Can't Open $unix_configure_in\n";
+
+while (<UNIX_CONFIGURE_IN>)
 {
-  my $makefile_out = "Makefile";
-  my $makefile_in  = "Makefile.in";
-
-  open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
-  open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
-
-  print "creating $makefile_out\n";
-
-  while (<MAKE_IN>)
-  {
-    chomp;
-    if ($sdk == 1) {
-      s/^SDK=/SDK=true/;
-    }
-    else {
-      s/^SDK=/SDK=false/;
-    }
-
-    s/^LINKTYPE=/LINKTYPE=$linktype/;
-    s/^CFG=/CFG=$config/;
-    s/^PREFIX=/PREFIX=$prefix/;
-    s/^PREFIX_DOS=/PREFIX_DOS=$prefixdos/;
-    s/^SSL=.*/SSL=$openssl/;
-
-    print MAKE_OUT $_ . "\n";
+  chomp;
+  /PACKAGE_VERSION='(.*)'/;
+  if ($1 ne "") {
+    $version = $1;
+    last;
   }
 }
 
+# Arguments:
+# $1: Name of output file
+# $2: Name of input file
+# $3: Reference to a hash with substitutions. A substitution is an array with
+#     two elements where element [0] is the pattern to search for and element
+#     [1] the replacement text.
+sub substitute
+{
+  my $out  = shift;
+  my $in   = shift;
+  my $subs = shift;
+
+  open (OUT, ">$out") || die "Can't open $out\n";
+  open (IN,  "<$in")  || die "Can't open $in\n";
+
+  print "creating $out\n";
+
+  while (<IN>) {
+    chomp;
+    foreach my $e (keys %$subs) {
+        my $p = $$subs{$e}[0];
+        my $q = $$subs{$e}[1];
+        s/$p/$q/;
+    }
+    print OUT $_ . "\n";
+  }
+
+  close IN;
+  close OUT;
+}
+
 ###############################################
 #
-# Create Makefiles for applications from
-# Makefile-apps.in
-# (except for snmpnetstat)
+# Perform substitutions
 #
 ###############################################
+my %subs = (
+    "cfg" => [ "^CFG=",        "CFG=$config"                        ],
+    "int" => [ "^INTDIR=",     "INTDIR=.\\$config"                  ],
+    "lnk" => [ "^LINKTYPE=",   "LINKTYPE=$linktype"                 ],
+    "out" => [ "^OUTDIR=",     "OUTDIR=.\\$config"                  ],
+    "pfx" => [ "^PREFIX=",     "PREFIX=$prefix"                     ],
+    "dos" => [ "^PREFIX_DOS=", "PREFIX_DOS=$prefixdos"              ],
+    "sdk" => [ "^SDK=",        $sdk == 1 ? "SDK=true" : "SDK=false" ],
+    );
+
+substitute("Makefile", "Makefile.in", \%subs);
+substitute("local/Makefile", "local/Makefile.in", \%subs);
+
 my @programs = qw
 /encode_keychange
 snmpbulkget
@@ -144,270 +173,51 @@
 /;
 
 foreach my $progName (@programs) {
-
-  my $makefile_out = "$progName\\Makefile";
-  my $makefile_in = "Makefile-apps.in";
-
-  my $outdir = $config;
-  my $intdir = $config;
-
-  open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
-  open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
-
-  print "creating $makefile_out\n";
-
-  while (<MAKE_IN>)
-  {
-    chomp;
-
-    s/^LINKTYPE=/LINKTYPE=$linktype/;
-    s/^PROGNAME=/PROGNAME=$progName/;
-    s/^CFG=/CFG=$config/;
-    s/^OUTDIR=/OUTDIR=.\\$outdir/;
-    s/^INTDIR=/INTDIR=.\\$intdir/;
-    s/^SSL=.*/SSL=$openssl/;
-
-    print MAKE_OUT $_ . "\n";
-  }
+    $subs{"prg"} = [ "^PROGNAME=", "PROGNAME=$progName" ];
+    substitute("$progName/Makefile", "Makefile-apps.in", \%subs);
 }
 
-###############################################
-#
-# Create Makefiles for snmpnetstat from
-# snmpnetstat\Makefile.in
-#
-###############################################
-my @programs = qw
-/snmpnetstat
-/;
-
-foreach my $progName (@programs) {
-
-  my $makefile_out = "$progName\\Makefile";
-  my $makefile_in = "$progName\\Makefile.in";
-
-  my $outdir = $config;
-  my $intdir = $config;
-
-  open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
-  open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
-
-  print "creating $makefile_out\n";
-
-  while (<MAKE_IN>)
-  {
-    chomp;
-
-    s/^LINKTYPE=/LINKTYPE=$linktype/;
-    s/^PROGNAME=/PROGNAME=$progName/;
-    s/^CFG=/CFG=$config/;
-    s/^OUTDIR=/OUTDIR=.\\$outdir/;
-    s/^INTDIR=/INTDIR=.\\$intdir/;
-    s/^SSL=.*/SSL=$openssl/;
-
-    print MAKE_OUT $_ . "\n";
-  }
+foreach my $progName ("libagent", "libnetsnmptrapd", "local",
+                      "netsnmpmibs", "snmpd", "snmptrapd", "snmpnetstat",
+                      $linktype eq "dynamic" ? "libsnmp_dll" : "libsnmp") {
+    $subs{"prg"} = [ "^PROGNAME=", "PROGNAME=$progName" ];
+    substitute("$progName/Makefile", "$progName/Makefile.in", \%subs);
 }
 
+my %subs = (
+    "env" => [ "\@ENV_SEPARATOR\@", ";" ]
+);
 
-###############################################
-#
-# Create Makefiles for libraries
-# from name\Makefile.in
-#
-###############################################
-my @programs = qw
-/libagent
-libhelpers
-libnetsnmptrapd
-/;
+substitute("../local/snmpconf", "../local/snmpconf.in", \%subs);
 
-if ($sdk == 1) {
-  push (@programs, "netsnmpmibssdk");
+
+my %subs = (
+    "ver" => [ "^#define PACKAGE_VERSION.*",
+               "#define PACKAGE_VERSION \"$version\"" ]
+    );
+if ($prefix ne "") {
+    $subs{"pfx"} = [ "^#define INSTALL_BASE.*", "#define INSTALL_BASE \"$prefix\"" ];
 }
-else {
-  push (@programs, "netsnmpmibs");
-}
-
 if ($linktype eq "dynamic") {
-  push (@programs, "libsnmp_dll");
+    $subs{"dll"} = [ "^.*#undef NETSNMP_USE_DLL.*", "#define NETSNMP_USE_DLL 1" ];
 }
-else {
-  push (@programs, "libsnmp");
-}
-
-foreach my $progName (@programs) {
-
-  my $makefile_out = "$progName\\Makefile";
-  my $makefile_in = "$progName\\Makefile.in";
-
-  my $outdir = $config;
-  my $intdir = $config;
-
-  open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
-  open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
-
-  print "creating $makefile_out\n";
-
-  while (<MAKE_IN>)
-  {
-    chomp;
-
-    s/^PROGNAME=/PROGNAME=$progName/;
-    s/^CFG=/CFG=$config/;
-    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";
-  }
-}
-
-###############################################
-#
-# Create Makefiles for daemons
-# from name\Makefile.in
-#
-###############################################
-my @programs = qw
-/snmptrapd
-/;
-
 if ($sdk == 1) {
-  push (@programs, "snmpdsdk");
+    $subs{"sdk"} = [ "^.*#undef HAVE_WIN32_PLATFORM_SDK.*", "#define HAVE_WIN32_PLATFORM_SDK 1" ];
 }
-else {
-  push (@programs, "snmpd");
+if ($openssl == 1) {
+    $subs{"ssl"} = [ "^.*#undef NETSNMP_USE_OPENSSL.*", "#define NETSNMP_USE_OPENSSL 1" ];
+} else {
+    $subs{"ssl"} = [ "^.*#undef NETSNMP_USE_INTERNAL_MD5.*", "#define NETSNMP_USE_INTERNAL_MD5 1" ];
+}
+if ($b_ipv6 == 1) {
+    $subs{"ipv6"} = [ "^.*#undef NETSNMP_ENABLE_IPV6.*", "#define NETSNMP_ENABLE_IPV6 1" ];
+}
+if ($b_winextdll == 1) {
+    $subs{"winextdll"} = [ "^.*#undef USING_WINEXTDLL_MODULE.*", "#define USING_WINEXTDLL_MODULE 1" ];
 }
 
-foreach my $progName (@programs) {
-
-  my $makefile_out = "$progName\\Makefile";
-  my $makefile_in = "$progName\\Makefile.in";
-
-  my $outdir = $config;
-  my $intdir = $config;
-
-  open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
-  open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
-
-  print "creating $makefile_out\n";
-
-  while (<MAKE_IN>)
-  {
-    chomp;
-
-    s/^LINKTYPE=/LINKTYPE=$linktype/;
-    s/^PROGNAME=/PROGNAME=$progName/;
-    s/^CFG=/CFG=$config/;
-    s/^OUTDIR=/OUTDIR=.\\$outdir/;
-    s/^INTDIR=/INTDIR=.\\$intdir/;
-    s/^SSL=.*/SSL=$openssl/;
-
-    print MAKE_OUT $_ . "\n";
-  }
-}
-
-###############################################
-#
-# Create Makefile for Perl scripts in local
-# from local\Makefile.in
-#
-###############################################
-
-my $makefile_out = "local\\Makefile";
-my $makefile_in = "local\\Makefile.in";
-
-my $outdir = $config;
-
-open (MAKE_OUT, ">$makefile_out") || die "Can't Open $makefile_out\n";
-open (MAKE_IN, "<$makefile_in") || die "Can't Open $makefile_in\n";
-
-print "creating $makefile_out\n";
-
-while (<MAKE_IN>)
-{
-  chomp;
-
-  s/^OUTDIR=/OUTDIR=.\\$outdir/;
-  s/^PREFIX=/PREFIX=$prefix/;
-  s/^PREFIX_DOS=/PREFIX_DOS=$prefixdos/;
-
-  print MAKE_OUT $_ . "\n";
-}
-
-
-###############################################
-#
-# Create net-snmp-config.h
-#
-###############################################
-{
-  my $file_out = "net-snmp\\net-snmp-config.h";
-  my $file_in = "net-snmp\\net-snmp-config.h.in";
-
-  open (FILE_OUT, ">$file_out") || die "Can't Open $file_out\n";
-  open (FILE_IN, "<$file_in") || die "Can't Open $file_in\n";
-
-  print "creating $file_out\n";
-
-  while (<FILE_IN>)
-  {
-    chomp;
-
-    if ($prefix ne "") {
-      s/^#define INSTALL_BASE.*/#define INSTALL_BASE \"$prefix\"/;
-    }
-    if ($linktype eq "dynamic") {
-      s/^.*#undef NETSNMP_USE_DLL.*/#define NETSNMP_USE_DLL 1/;
-    }
-    if ($sdk == 1) {
-      s/^.*#undef HAVE_WIN32_PLATFORM_SDK.*/#define HAVE_WIN32_PLATFORM_SDK 1/;
-    }
-    if ($openssl == 1) {
-      s/^.*#undef NETSNMP_USE_OPENSSL.*/#define NETSNMP_USE_OPENSSL 1/;
-    }
-    if ($b_ipv6 == 1) {
-      s/^.*#undef NETSNMP_ENABLE_IPV6.*/#define NETSNMP_ENABLE_IPV6 1/;
-    }
-    if ($b_winextdll == 1) {
-      s/^.*#undef USING_WINEXTDLL_MODULE.*/#define USING_WINEXTDLL_MODULE 1/;
-    }
-
-    print FILE_OUT $_ . "\n";
-  }
-}
-
-###############################################
-#
-# Create libsnmp.def file for libsnmp_dll
-#
-###############################################
-if ($linktype eq "dynamic")
-{
-  my $file_out = "libsnmp_dll\\libsnmp.def";
-  my $file_in = "libsnmp_dll\\libsnmp.def.in";
-
-  open (FILE_OUT, ">$file_out") || die "Can't Open $file_out\n";
-  open (FILE_IN, "<$file_in") || die "Can't Open $file_in\n";
-
-  print "creating $file_out\n";
-
-  while (<FILE_IN>)
-  {
-    chomp;
-
-    if ($b_ipv6 == "1") {
-      s/^;ipv6//i;
-    }
-
-    print FILE_OUT $_ . "\n";
-  }
-}
-
+substitute("net-snmp/net-snmp-config.h", "net-snmp/net-snmp-config.h.in",
+           \%subs);
 
 print qq/
 ---------------------------------------------------------
@@ -416,6 +226,11 @@
 
 /;
 
+if ($version eq "unknown") {
+  $version = "unknown - Could not determine version from ../configure!";
+}
+
+print "  Version:                    $version\n";
 print "  Config type:                $config\n";
 print "  SDK:                        " . ($sdk == 1 ? "enabled" : "disabled") . "\n";
 print "  Link type:                  $linktype\n";
diff --git a/win32/Makefile-apps.in b/win32/Makefile-apps.in
index b5fed61..bcfb26e 100644
--- a/win32/Makefile-apps.in
+++ b/win32/Makefile-apps.in
@@ -3,7 +3,6 @@
 OUTDIR=
 INTDIR=
 LINKTYPE=
-SSL=
 
 # Set to 1 to allow the building using the DLL version of SNMPLIB.
 ALLOW_DLL=1
@@ -24,6 +23,7 @@
 	-@erase "$(INTDIR)\vc??.idb"
 	-@erase "$(INTDIR)\$(PROGNAME).pch"
 	-@erase "..\bin\$(OUTDIR)\$(PROGNAME).exe"
+	-@erase "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest"
 
 "..\bin\$(OUTDIR)" :
     if not exist "..\bin\$(OUTDIR)/$(NULL)" mkdir "..\bin\$(OUTDIR)"
@@ -32,7 +32,7 @@
     if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
 
 CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /GX /Zi /O2 /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_BIND_TO_CURRENT_VCLIBS_VERSION" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\$(PROGNAME).pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+CPP_PROJ=/nologo /MD /W3 /EHsc /Zi /O2 /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_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 
 
 !IF "$(LINKTYPE)" == "dynamic"
 CPP_PROJ=$(CPP_PROJ) /D "NMAKE_NETSNMP_USE_DLL"
@@ -74,7 +74,7 @@
 BSC32_SBRS= \
 
 LINK32=link.exe
-LINK32_FLAGS=netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:"../bin/$(OUTDIR)/$(PROGNAME).pdb" /debug /machine:I386 /out:"../bin/$(OUTDIR)/$(PROGNAME).exe" /libpath:"../lib/release" 
+LINK32_FLAGS=netsnmp.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"
 
@@ -83,6 +83,8 @@
     $(LINK32) @<<
   $(LINK32_FLAGS) $(LINK32_OBJS)
 <<
+ if exist "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest" \
+	    mt.exe -manifest "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest" -outputresource:"..\bin\$(OUTDIR)\$(PROGNAME).exe";1
 !ELSE	# Linktype check
 	-@echo .
 	-@echo Aborting build.  Applications can not be built using --linktype=dynamic
@@ -103,6 +105,7 @@
 	-@erase "$(INTDIR)\$(PROGNAME).pdb"
 	-@erase "$(INTDIR)\$(PROGNAME).pch"
 	-@erase "..\bin\$(OUTDIR)\$(PROGNAME).exe"
+	-@erase "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest"
 
 "..\bin\$(OUTDIR)" :
     if not exist "..\bin\$(OUTDIR)/$(NULL)" mkdir "..\bin\$(OUTDIR)"
@@ -111,7 +114,7 @@
     if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
 
 CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_BIND_TO_CURRENT_VCLIBS_VERSION" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\$(PROGNAME).pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_BIND_TO_CURRENT_VCLIBS_VERSION" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
 
 !IF "$(LINKTYPE)" == "dynamic"
 CPP_PROJ=$(CPP_PROJ) /D "NMAKE_NETSNMP_USE_DLL"
@@ -159,7 +162,7 @@
 <<
 
 LINK32=link.exe
-LINK32_FLAGS=netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /pdb:"../bin/$(OUTDIR)/$(PROGNAME).pdb" /debug /machine:I386 /out:"../bin/$(OUTDIR)/$(PROGNAME).exe" /pdbtype:sept /libpath:"../lib/debug" 
+LINK32_FLAGS=netsnmp.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"
 
@@ -168,6 +171,8 @@
     $(LINK32) @<<
   $(LINK32_FLAGS) $(LINK32_OBJS)
 <<
+ if exist "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest" \
+	    mt.exe -manifest "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest" -outputresource:"..\bin\$(OUTDIR)\$(PROGNAME).exe";1
 !ELSE	# Linktype check
 	-@echo .
 	-@echo Aborting build.  Applications can not be built using --linktype=dynamic
diff --git a/win32/Makefile.in b/win32/Makefile.in
index b908582..bba5464 100644
--- a/win32/Makefile.in
+++ b/win32/Makefile.in
@@ -10,17 +10,10 @@
 
 clean : apps_clean libs_clean snmptrapd_clean snmpd_clean local_clean
 
-!IF "$(SDK)" == "true"
-snmpd : snmpdsdk_
-snmpd_clean : snmpdsdk_clean_
-netsnmpmibs : netsnmpmibssdk_
-netsnmpmibs_clean : netsnmpmibssdk_clean_
-!ELSE
 snmpd : snmpd_
 snmpd_clean : snmpd_clean_
 netsnmpmibs : netsnmpmibs_	
 netsnmpmibs_clean : netsnmpmibs_clean_
-!ENDIF
 
 !IF "$(LINKTYPE)" == "static"
 libsnmp : libsnmp_
@@ -30,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
 
@@ -113,11 +106,6 @@
 	$(NMAKE) all
 	cd ..
 
-libhelpers ::
-	cd libhelpers
-	$(NMAKE) all
-	cd ..
-
 libsnmp_ ::
 	cd libsnmp
 	$(NMAKE) all
@@ -138,11 +126,6 @@
 	$(NMAKE) all
 	cd ..
 
-netsnmpmibssdk_ ::
-	cd netsnmpmibssdk
-	$(NMAKE) all
-	cd ..
-
 snmpdf ::
 	cd snmpdf
 	$(NMAKE) all
@@ -238,11 +221,6 @@
 	$(NMAKE) all
 	cd ..
 
-snmpdsdk_ ::
-	cd snmpdsdk
-	$(NMAKE) all
-	cd ..
-
 snmpconf ::
 	cd local
 	$(NMAKE) snmpconf
@@ -267,11 +245,6 @@
 	$(NMAKE) clean
 	cd ..
 
-libhelpers_clean ::
-	cd libhelpers
-	$(NMAKE) clean
-	cd ..
-
 libsnmp_clean_ ::
 	cd libsnmp
 	$(NMAKE) clean
@@ -292,11 +265,6 @@
 	$(NMAKE) clean
 	cd ..
 
-netsnmpmibssdk_clean_ ::
-	cd netsnmpmibssdk
-	$(NMAKE) clean
-	cd ..
-
 snmpdf_clean ::
 	cd snmpdf
 	$(NMAKE) clean
@@ -392,11 +360,6 @@
 	$(NMAKE) clean
 	cd ..
 
-snmpdsdk_clean_ ::
-	cd snmpdsdk
-	$(NMAKE) clean
-	cd ..
-
 snmpconf_clean ::
 	cd local
 	$(NMAKE) snmpconf_clean
@@ -421,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..4007fae 100644
--- a/win32/build.pl
+++ b/win32/build.pl
@@ -5,32 +5,49 @@
 # March 12th, 2004
 #
 use strict;
-my $openssl = "disabled";
-my $b_ipv6 = "disabled";
-my $b_winextdll = "disabled";
-my $sdk = "disabled";
+use warnings;
+use Config;
+use Cwd 'abs_path';
+use File::Basename;
+use constant false => 0;
+use constant true => 1;
+my $target_arch = $ENV{TARGET_CPU} ? $ENV{TARGET_CPU} : $ENV{Platform} ?
+                  $ENV{Platform} : "x86";
+if ($target_arch ne "x86" && $target_arch ne "x64") {
+    print "Error: unsupported target architecture $target_arch\n";
+    die;
+}
+my @perl_arch = split(/-/, $Config{archname});
+if ($perl_arch[1] ne $target_arch) {
+    print "perl_arch = $perl_arch[1] does not match target_arch = $target_arch\n";
+    die;
+}
+my $openssl = false;
+my $default_openssldir = $target_arch eq "x64" ?
+    "C:\\OpenSSL-Win64" : "C:\\OpenSSL-Win32";
+my $default_opensslincdir = $default_openssldir . "\\include";
+my $opensslincdir = $default_opensslincdir;
+my $default_openssllibdir = $default_openssldir . "\\lib\\VC";
+my $openssllibdir = $default_openssllibdir;
+my $b_ipv6 = false;
+my $b_winextdll = false;
+my $sdk = false;
 my $default_install_base = "c:/usr";
 my $install_base = $default_install_base;
-my $install = "enabled";
-my $install_devel = "disabled";
-my $perl = "disabled";
-my $perl_install = "disabled";
-my $logging = "enabled";
-my $debug = "disabled";
+my $install = true;
+my $install_devel = false;
+my $perl = false;
+my $perl_install = false;
+my $logging = true;
+my $debug = false;
 my $configOpts = "";
-my $linktype = "static";
+my $link_dynamic = false;
 my $option;
 
-# Prepend win32\ if running from main directory
-my $current_pwd = `%COMSPEC% /c cd`;
-chomp $current_pwd;
-if (! ($current_pwd =~ /\\win32$/)) {
-  chdir ("win32");
-  $current_pwd = `%COMSPEC% /c cd`;
-  chomp $current_pwd;
-}
+# Path of this script (source tree path + "win32").
+my $current_pwd = dirname(abs_path($0));
 
-if ( -d $ENV{MSVCDir} || -d $ENV{VCINSTALLDIR}) {
+if ( -d $ENV{MSVCDir} || -d $ENV{VCINSTALLDIR} || defined($ENV{TARGET_CPU}) ) {
 }
 else {
   print "\nPlease run VCVARS32.BAT first to set up the Visual Studio build\n" .
@@ -42,132 +59,89 @@
 while (1) {
   print "\n\nNet-SNMP build and install options\n";
   print "==================================\n\n";
-  print "1.  OpenSSL support:                " . $openssl. "\n";
-  print "2.  Platform SDK support:           " . $sdk . "\n";
+  print "1.  OpenSSL support:                " . ($openssl ? "enabled" : "disabled"). "\n";
+  print "2.  OpenSSL include directory:      " . $opensslincdir. "\n";
+  print "3.  OpenSSL library director:       " . $openssllibdir. "\n";
+  print "4.  Platform SDK support:           " . ($sdk ? "enabled" : "disabled") . "\n";
   print "\n";
-  print "3.  Install path:                   " . $install_base . "\n";
-  print "4.  Install after build:            " . $install . "\n";
+  print "5.  Install path:                   " . $install_base . "\n";
+  print "6.  Install after build:            " . ($install ? "enabled" : "disabled") . "\n";
   print "\n";
-  print "5.  Perl modules:                   " . $perl . "\n";
-  print "6.  Install perl modules:           " . $perl_install . "\n";
+  print "7.  Perl modules:                   " . ($perl ? "enabled" : "disabled") . "\n";
+  print "8.  Install perl modules:           " . ($perl_install ? "enabled" : "disabled") . "\n";
   print "\n";
-  print "7.  Quiet build (logged):           " . $logging . "\n";
-  print "8.  Debug mode:                     " . $debug . "\n";
+  print "9.  Quiet build (logged):           " . ($logging ? "enabled" : "disabled") . "\n";
+  print "10. Debug mode:                     " . ($debug ? "enabled" : "disabled") . "\n";
   print "\n";
-  print "9.  IPv6 transports (requires SDK): " . $b_ipv6 . "\n";
-  print "10. winExtDLL agent (requires SDK): " . $b_winextdll . "\n";
+  print "11. IPv6 transports (requires SDK): " . ($b_ipv6 ? "enabled" : "disabled") . "\n";
+  print "12. winExtDLL agent (requires SDK): " . ($b_winextdll ? "enabled" : "disabled") . "\n";
   print "\n";
-  print "11. Link type:                      " . $linktype . "\n";
+  print "13. Link type:                      " . ($link_dynamic ? "dynamic" : "static") . "\n";
   print "\n";
-  print "12. Install development files       " . $install_devel . "\n";
+  print "14. Install development files       " . ($install_devel ? "enabled" : "disabled") . "\n";
   print "\nF.  Finished - start build\n";
   print "Q.  Quit - abort build\n\n";
   print "Select option to set / toggle: ";
 
   chomp ($option = <>);
   if ($option eq "1") {
-    if ($openssl eq "enabled") {
-      $openssl = "disabled";
-    }
-    else {
-      $openssl = "enabled";
-    }
+    $openssl = !$openssl;
   }
   elsif ($option eq "2") {
-    if ($sdk eq "enabled") {
-      $sdk = "disabled";
-    }
-    else {
-      $sdk = "enabled";
-    }
-  }
-  elsif ($option eq "9") {
-    if ($b_ipv6 eq "enabled") {
-      $b_ipv6 = "disabled";
-    }
-    else {
-      $b_ipv6 = "enabled";
-      if ($sdk = "disabled") {
-        print "\n\n* SDK required for IPv6 and has been automatically enabled";
-        $sdk = "enabled";
-      }
-    }
-  }
-  elsif ($option eq "10") {
-    if ($b_winextdll eq "enabled") {
-      $b_winextdll = "disabled";
-    }
-    else {
-      $b_winextdll = "enabled";
-      if ($sdk = "disabled") {
-        print "\n\n* SDK required for IPv6 and has been automatically enabled";
-        $sdk = "enabled";
-      }
-    }
+    print "Please enter the OpenSSL include directory [$opensslincdir]: ";
+    chomp ($opensslincdir = <>);
+    $opensslincdir =~ s/\\/\//g;
+    $opensslincdir = $default_opensslincdir if ($opensslincdir eq "");
   }
   elsif ($option eq "3") {
-    print "Please enter the new install path [$default_install_base]: ";
-    chomp ($install_base = <>);
-    if ($install_base eq "") {
-      $install_base = $default_install_base;
-    }
-    $install_base =~ s/\\/\//g;
+    print "Please enter the OpenSSL library directory [$openssllibdir]: ";
+    chomp ($openssllibdir = <>);
+    $openssllibdir =~ s/\\/\//g;
+    $openssllibdir = $default_openssllibdir if ($openssllibdir eq "");
   }
   elsif ($option eq "4") {
-    if ($install eq "enabled") {
-      $install = "disabled";
-    }
-    else {
-      $install = "enabled";
+    $sdk = !$sdk;
+  }
+  elsif ($option eq "11") {
+    $b_ipv6 = !$b_ipv6;
+    if ($b_ipv6 && !$sdk) {
+      print "\n\n* SDK required for IPv6 and has been automatically enabled";
+      $sdk = true;
     }
   }
   elsif ($option eq "12") {
-    if ($install_devel eq "enabled") {
-      $install_devel = "disabled";
-    }
-    else {
-      $install_devel = "enabled";
+    $b_winextdll = !$b_winextdll;
+    if ($b_winextdll && !$sdk) {
+      print "\n\n* SDK required for IPv6 and has been automatically enabled";
+      $sdk = true;
     }
   }
   elsif ($option eq "5") {
-    if ($perl eq "enabled") {
-      $perl = "disabled";
-    }
-    else {
-      $perl = "enabled";
-    }
+    print "Please enter the new install path [$default_install_base]: ";
+    chomp ($install_base = <>);
+    $install_base =~ s/\\/\//g;
+    $install_base = $default_install_base if ($install_base eq "");
   }
   elsif ($option eq "6") {
-    if ($perl_install eq "enabled") {
-      $perl_install = "disabled";
-    }
-    else {
-      $perl_install = "enabled";
-    }
+    $install = !$install;
+  }
+  elsif ($option eq "14") {
+    $install_devel = !$install_devel;
   }
   elsif ($option eq "7") {
-    if ($logging eq "enabled") {
-      $logging = "disabled";
-    }
-    else {
-      $logging = "enabled";
-    }
+    $perl = !$perl;
   }
   elsif ($option eq "8") {
-    if ($debug eq "enabled") {
-      $debug = "disabled";
-    }
-    else {
-      $debug = "enabled";
-    }
+    $perl_install = !$perl_install;
   }
-  elsif ($option eq "11") {
-    if ($linktype eq "static") {
-      $linktype = "dynamic";
-    }
-    else {
-      $linktype = "static";
-    }
+  elsif ($option eq "9") {
+    $logging = !$logging;
+  }
+  elsif ($option eq "10") {
+    $debug = !$debug;
+  }
+  elsif ($option eq "13") {
+    $link_dynamic = !$link_dynamic;
   }
   elsif (lc($option) eq "f") {
     last;
@@ -177,15 +151,16 @@
   }
 }
 
-$configOpts .= $openssl eq "enabled" ? "--with-ssl" : "";
+my $linktype = $link_dynamic ? "dynamic" : "static";
+$configOpts .= $openssl ? "--with-ssl" : "";
 $configOpts .= " ";
-$configOpts .= $sdk eq "enabled" ? "--with-sdk" : "";
+$configOpts .= $sdk ? "--with-sdk" : "";
 $configOpts .= " ";
-$configOpts .= $b_ipv6 eq "enabled" ? "--with-ipv6" : "";
+$configOpts .= $b_ipv6 ? "--with-ipv6" : "";
 $configOpts .= " ";
-$configOpts .= $b_winextdll eq "enabled" ? "--with-winextdll" : "";
+$configOpts .= $b_winextdll ? "--with-winextdll" : "";
 $configOpts .= " ";
-$configOpts .= $debug eq "enabled" ? "--config=debug" : "--config=release";
+$configOpts .= $debug ? "--config=debug" : "--config=release";
 
 # Set environment variables
 
@@ -193,143 +168,94 @@
 $ENV{NO_EXTERNAL_DEPS}="1";
 
 # Set PATH environment variable so Perl make tests can locate the DLL
-$ENV{PATH} = "$current_pwd\\bin\\" . ($debug eq "enabled" ? "debug" : "release" ) . ";$ENV{PATH}";
+$ENV{PATH} = "$current_pwd\\bin\\" . ($debug ? "debug" : "release" ) . ";$ENV{PATH}";
+
+$ENV{INCLUDE} .= ";$opensslincdir";
+$ENV{LIB}     .= ";$openssllibdir";
 
 # Set MIBDIRS environment variable so Perl make tests can locate the mibs
-my $temp_mibdir = "$current_pwd/../mibs";
-$temp_mibdir =~ s/\\/\//g;
-$ENV{MIBDIRS}=$temp_mibdir;
+$ENV{MIBDIRS} = dirname($current_pwd) . "/mibs";
 
 # Set SNMPCONFPATH environment variable so Perl conf.t test can locate
 # the configuration files.
 # See the note about environment variables in the Win32 section of
 # perl/SNMP/README for details on why this is needed.
-$ENV{SNMPCONFPATH}="t";$ENV{SNMPCONFPATH};
+$ENV{SNMPCONFPATH}="t";
 
 print "\nBuilding...\n";
 
-if ($logging eq "enabled") {
-  print "\nCreating *.out log files.\n\n";
+print "\nCreating *.out log files.\n\n";
+
+print "Deleting old log files...\n";
+system("del *.out" . ($logging ? " > NUL: 2>&1" : ""));
+
+# Delete net-snmp-config.h from main include folder just in case it was created by a Cygwin or MinGW build
+unlink "../include/net-snmp/net-snmp-config.h";
+unlink "../snmplib/transports/snmp_transport_inits.h";
+
+print "Running Configure...\n";
+system("perl Configure $configOpts --linktype=$linktype --prefix=\"$install_base\"" . ($logging ? " > configure.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see configure.out)" : "Build error (see above)");
+
+print "Cleaning...\n";
+system("nmake /nologo clean" . ($logging ? " > clean.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see clean.out)" : "Build error (see above)");
+
+print "Building main package...\n";
+system("nmake /nologo" . ($logging ? " > make.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see make.out)" : "Build error (see above)");
+
+if ($perl) {
+  if (!$link_dynamic) {
+    print "Running Configure for DLL...\n";
+    system("perl Configure $configOpts --linktype=dynamic --prefix=\"$install_base\"" . ($logging ? " > perlconfigure.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see perlconfigure.out)" : "Build error (see above)");
+
+    print "Cleaning libraries...\n";
+    system("nmake /nologo libs_clean" . ($logging ? " >> clean.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see clean.out)" : "Build error (see above)");
+
+    print "Building DLL libraries...\n";
+    system("nmake /nologo libs" . ($logging ? " > dll.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see dll.out)" : "Build error (see above)");
+  }
+
+  print "Cleaning Perl....\n";
+  system("nmake /nologo perl_clean" . ($logging ? " >> clean.out 2>&1" : "")); # If already cleaned, Makefile is gone so don't worry about errors!
+
+  print "Building Perl modules...\n";
+  system("nmake /nologo perl" . ($logging ? " > perlmake.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see perlmake.out)" : "Build error (see above)");
+
+  print "Testing Perl modules...\n";
+  system("nmake /nologo perl_test" . ($logging ? " > perltest.out 2>&1" : "")); # Don't die if all the tests don't pass..
+
+  if ($perl_install) {
+    print "Installing Perl modules...\n";
+    system("nmake /nologo perl_install" . ($logging ? " > perlinstall.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see perlinstall.out)" : "Build error (see above)");
+  }
+
+  print "\nSee perltest.out for Perl test results\n";
 }
 
-if ($logging eq "enabled") {
-  print "Deleting old log files...\n";
-  system("del *.out > NUL: 2>&1");
-
-  # Delete net-snmp-config.h from main include folder just in case it was created by a Cygwin or MinGW build
-  system("del ..\\include\\net-snmp\\net-snmp-config.h > NUL: 2>&1");
-
-  print "Running Configure...\n";
-  system("perl Configure $configOpts --linktype=$linktype --prefix=\"$install_base\" > configure.out 2>&1") == 0 || die "Build error (see configure.out)";
-
-  print "Cleaning...\n";
-  system("nmake /nologo clean > clean.out 2>&1") == 0 || die "Build error (see clean.out)";
-
-  print "Building main package...\n";
-  system("nmake /nologo > make.out 2>&1") == 0 || die "Build error (see make.out)";
-
-  if ($perl eq "enabled") {
-    if ($linktype eq "static") {
-      print "Running Configure for DLL...\n";
-      system("perl Configure $configOpts --linktype=dynamic --prefix=\"$install_base\" > perlconfigure.out 2>&1") == 0 || die "Build error (see perlconfigure.out)";
-
-      print "Cleaning libraries...\n";
-      system("nmake /nologo libs_clean >> clean.out 2>&1") == 0 || die "Build error (see clean.out)";
-
-      print "Building DLL libraries...\n";
-      system("nmake /nologo libs > dll.out 2>&1") == 0 || die "Build error (see dll.out)";
-    }
-
-    print "Cleaning Perl....\n";
-    system("nmake /nologo perl_clean >> clean.out 2>&1"); # If already cleaned, Makefile is gone so don't worry about errors!
-
-    print "Building Perl modules...\n";
-    system("nmake /nologo perl > perlmake.out 2>&1") == 0 || die "Build error (see perlmake.out)";
-
-    print "Testing Perl modules...\n";
-    system("nmake /nologo perl_test > perltest.out 2>&1"); # Don't die if all the tests don't pass..
-
-    if ($perl_install eq "enabled") {
-      print "Installing Perl modules...\n";
-      system("nmake /nologo perl_install > perlinstall.out 2>&1") == 0 || die "Build error (see perlinstall.out)";
-    }
-
-    print "\nSee perltest.out for Perl test results\n";
-  }
-
-  print "\n";
-  if ($install eq "enabled") {
-    print "Installing main package...\n";
-    system("nmake /nologo install > install.out 2>&1") == 0 || die "Build error (see install.out)";
-  }
-  else {
-    print "Type nmake install to install the package to $install_base\n";
-  }
-
-  if ($install_devel eq "enabled") {
-    print "Installing development files...\n";
-    system("nmake /nologo install_devel > install_devel.out 2>&1") == 0 || die "Build error (see install_devel.out)";
-  }
-  else {
-    print "Type nmake install_devel to install the development files to $install_base\n";
-  }
-
-  if ($perl_install eq "disabled" && $perl eq "enabled") {
-    print "Type nmake perl_install to install the Perl modules\n";
-  }
+print "\n";
+if ($install) {
+  print "Installing main package...\n";
+  system("nmake /nologo install" . ($logging ? " > install.out 2>&1" : "")) == 0 || die ($logging ? "Build error (see install.out)" : "Build error (see above)");
 }
 else {
-  system("del *.out");
+  print "Type nmake install to install the package to $install_base\n";
+}
 
-  # Delete net-snmp-config.h from main include folder just in case it was created by a Cygwin or MinGW build
-  system("del ..\\include\\net-snmp\\net-snmp-config.h > NUL: 2>&1");
+if ($install_devel) {
+  print "Installing development files...\n";
+  system("nmake /nologo install_devel > install_devel.out 2>&1") == 0 || die "Build error (see install_devel.out)";
+}
+else {
+  print "Type nmake install_devel to install the development files to $install_base\n";
+}
 
-  system("perl Configure $configOpts --linktype=$linktype --prefix=\"$install_base\"") == 0 || die "Build error (see above)";
-  system("nmake /nologo clean") == 0 || die "Build error (see above)";
-  system("nmake /nologo") == 0 || die "Build error (see above)";
-
-  if ($perl eq "enabled") {
-    if ($linktype eq "static") {
-      system("perl Configure $configOpts --linktype=dynamic --prefix=\"$install_base\"") == 0 || die "Build error (see above)";
-      system("nmake /nologo libs_clean") == 0 || die "Build error (see above)";
-      system("nmake /nologo libs") == 0 || die "Build error (see above)";
-    }
-
-    system("nmake /nologo perl_clean"); # If already cleaned, Makefile is gone so don't worry about errors!
-    system("nmake /nologo perl") == 0 || die "Build error (see above)";
-
-    my $path_old = $ENV{PATH};
-    $ENV{PATH} = "$current_pwd\\bin\\" . ($debug eq "enabled" ? "debug" : "release" ) . ";$ENV{PATH}";
-    system("nmake /nologo perl_test"); # Don't die if all the tests don't pass..
-    $ENV{PATH} = $path_old;
-
-    if ($perl_install eq "enabled") {
-      print "Installing Perl modules...\n";
-      system("nmake /nologo perl_install") == 0 || die "Build error (see above)";
-    }
-  }
-
-  print "\n";
-  if ($install eq "enabled") {
-    print "Installing main package...\n";
-    system("nmake /nologo install") == 0 || die "Build error (see above)";
-  }
-  else {
-    print "Type nmake install to install the package to $install_base\n";
-  }
-
-  if ($install_devel eq "enabled") {
-    print "Installing development files...\n";
-    system("nmake /nologo install_devel > install_devel.out 2>&1") == 0 || die "Build error (see install_devel.out)";
-  }
-  else {
-    print "Type nmake install_devel to install the development files to $install_base\n";
-  }
-
-  if ($perl_install eq "disabled" && $perl eq "enabled") {
-    print "Type nmake perl_install to install the Perl modules\n";
-  }
+if ($perl && !$perl_install) {
+  print "Type nmake perl_install to install the Perl modules\n";
 }
 
 print "\nDone!\n";
 
+# Local Variables:
+# mode: perl
+# perl-indent-level: 2
+# indent-tabs-mode: nil
+# End:
diff --git a/win32/config.h b/win32/config.h
deleted file mode 100644
index 941cb9a..0000000
--- a/win32/config.h
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
- * Everyone should be including the new style config header.
- * For now, we'll do it for them for backwards compatability.
- */
-#include <net-snmp/net-snmp-config.h>
diff --git a/win32/config.h.borland b/win32/config.h.borland
index 3aef6bb..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
 
@@ -491,9 +476,6 @@
 /* Define if you have the kstat library (-lkstat).  */
 #undef HAVE_LIBKSTAT
 
-/* Define if you have the kvm library (-lkvm).  */
-#undef HAVE_LIBKVM
-
 /* Define if you have the m library (-lm).  */
 #undef HAVE_LIBM
 
@@ -543,9 +525,6 @@
 /* type check for in_addr_t */
 #define in_addr_t u_long
 
-/* define if your compiler (processor) defines __FUNCTION__ for you */
-#undef HAVE_CPP_UNDERBAR_FUNCTION_DEFINED
-
 /* mib pointer to the top of the extensible tree.  This has been
  assigned to UCDavis by the iana group.  Optionally, point this to the
  location in the tree your company/organization has been allocated. */
@@ -732,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 0bd0ee5..1925fb7 100644
--- a/win32/dist/README.build.win32.txt
+++ b/win32/dist/README.build.win32.txt
@@ -1,520 +1,359 @@
-***************************************************************************
-*
-* README.build.win32
-*
-* Authors: Alex Burger <alex_b@users.sourceforge.net>
-*          
-*
-***************************************************************************
-
-Introduction
-============
-
-This README outlines the steps required to create a binary release for
-Windows using Microsoft Visual Studio and the NullSoft installer.
-
-There are four sections:
-
-  Compiling binaries
-
-  Compiling HTMLHelp file
-
-  Combining the binaries and HTMLHelp files
-
-  Bulding a NullSoft installer package
-
-  Bulding an OpenSSL version
-
-
-Compiling binaries
-==================
-
-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
- -MSYS / MinGW -or- tar.exe and gzip.exe
- -win32/dist folder from MAIN in CVS
-
-
-Building the main binaries
---------------------------
-
-Note:  All shell steps are using the Window CMD prompt unless otherwise stated.
-
-Part 1
-------
-
-1.  Extract source.  The location will be references as (source dir)
-
-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)
-
-3.  Apply any required patches
-
-4.  Remove the example MIB files:  
-
-    Edit win32\net-snmp\agent\mib_module_config.h and change the following lines:
-
-      #define USING_EXAMPLES_UCDDEMOPUBLIC_MODULE 1
-      #define USING_EXAMPLES_EXAMPLE_MODULE 1
-
-    to:
-
-      #undef USING_EXAMPLES_UCDDEMOPUBLIC_MODULE
-      #undef USING_EXAMPLES_EXAMPLE_MODULE
-
-5.  cd (source dir)\win32
-
-6.  Run build.bat
-
-7.  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:  		enabled
-    
-    5. Perl modules:         		enabled         ***
-    6. Install perl modules: 		disabled
-    
-    7. Quiet build (logged): 		enabled
-    8. Debug mode:           		disabled
-    9. IPv6 transports:      		disabled
-
-    10. Link type:                      static
-
-    11. 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. Modify files as explained in README.win32 section 'Running Net-SNMP as
-    a replacement for the Microsoft SNMP service' - 'Compiling Net-SNMP with 
-    the winExtDLL extension (MSVC)'.
-
-11.  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. Link type:                      static
-
-    11. Install development files   	disabled
-    
-    F.  Finished - start build
-    Q.  Quit - abort build
-    
-    Select option to set / toggle:
-
-12. F to start the build and verify everything was built ok
-
-13. Copy the new binary:
-
-    copy bin\release\snmpd.exe c:\usr\bin\snmpd-winExtDLL.exe
-
-14. Test each binary by running each one with -DwinExtDLL.  Make sure only the
-    winExtDLL version has debug output.
-
-
-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,2,0,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.  Create base directories:
-
-    md "c:\usr\docs"
-    md "c:\usr\perl"
-    md "c:\usr\perl\x86"
-    md "c:\usr\temp"
-
-10. 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"
-
-11. Update the BUILD INFORMATION section of c:\usr\README.txt
-
-
-Compiling HTMLHelp file
-=======================
-
-This section outlines the steps required to build a Windows HTML Help file
-based on the Net-SNMP man pages, README files, Perldoc documentation etc.
-
-Requirements
-------------
-
- -Linux (or similar) with:
-   -man (man page viewer)
-   -tidy (HTML tidy - http://tidy.sourceforge.net)
-   -Perl
-   -perldoc
-   -man2html3.0.1.tar.gz (http://search.cpan.org/~ehood/man2html3.0.1/)
-    Note:  Most Linux distributions come with man2html as part of the man rpm
-           package which is not the same as man2html from man2html3.0.1.tar.gz.
-           All that is needed from man2html3.0.1.tar.gz is the man2html script.  
-           You do not need to do a complete install (make/make install) but you
-           do need to make sure the script is configured correctly by setting the
-           man command line switches etc for the OS from inside of the script.
-
- -Windows with:
-   -HTML Help Workshop (Search msdn.microsoft.com for 'html help workshop download')
-
-
-Convert documents to html
--------------------------
-
-Note:  The following steps are completed using Linux.
-
-Note:  A temporary location of /tmp/net-snmp is used.
-
-1.  Extract Net-SNMP source and cd (source dir)
-
-2.  cd (source dir)
-
-3.  cp perl/SNMP/README README.perl
-
-4.  Remove older copies of converted files:
-
-    rm -R -f /tmp/net-snmp
-
-5.  Build Net-SNMP man pages: 
-
-    ./configure --prefix=c:/usr; make sedscript; cd man;make; cd ..
-
-6.  Install only the man files to /temp/net-snmp:
-
-    cd man; make install prefix=/tmp/net-snmp; cd ..
-
-7.  Go to the scripts folder and make sure all the scripts are executable:
-
-    cd (source dir)
-    cd win32/dist/scripts; chmod +x *
-
-8.  Edit these files and make sure the paths are correct in the OPTIONS 
-    section.  Also ensure the list of README files and Perl modules 
-    are correct in readme2html and poddir2html.
-
-    mandir2html
-    readme2html
-    poddir2html
-
-    Note:  mandir2html will process ALL man pages in c:\temp\net-snmp while
-           readme2html and poddir2html will only process files listed in the
-           script.  If new man pages are added or removed, the Table of 
-           Contents (toc.hhc) and project file (Net-SNMP.hhp) need to be 
-           updated by hand.
-
-9.  Run each script to generate the .html files:
-
-    ./mandir2html; ./readme2html; ./poddir2html
-
-    Note:  There will be many warnings from tidy which can be ignored.
-
-10. Verify each converted file to ensure all the links are correct.  The files
-    are located in /tmp/net-snmp/html by default.  In some instances, URLs may be 
-    split across two lines such as the Variables link at the bottom of 
-    /tmp/net-snmp/html/man8-snmptrapd.8.html.
-
-11. If new man pages are added or removed, the Table of Contents (Net-SNMP.hhc) and
-    project file (Net-SNMP.hhp) need to be updated by hand.
-
-12. Convert EXAMPLE.conf.win32 to html:
-
-    ./txt2html ../../EXAMPLE.conf.win32 | tidy > /tmp/net-snmp/html/EXAMPLE.conf.win32.html
-    
-
-Build Net-SNMP.chm
-------------------
-
-Note:  The following steps are completed using Windows.
-
-Note:  A temporary location of c:\temp\net-snmp is used.
-
-1.  Transfer /tmp/net-snmp/html from Linux to c:\temp\net-snmp\html
-
-2.  Grab the FAQ from the web site, strip out the includes and save as
-    c:\temp\net-snmp\html\FAQ.html and run:
-
-    tidy -asxhtml -m c:\temp\net-snmp\html\FAQ.html
-
-3.  Grab the Devloper FAQ from the web site, strip out the includes and save as
-    c:\temp\net-snmp\html\Developer_FAQ.html and run:
-
-    tidy -asxhtml -m c:\temp\net-snmp\html\Developer_FAQ.html
-
-4.  Copy the following files to c:\temp\net-snmp\html:
-
-    cd (source dir)
-    copy "win32\dist\htmlhelp\Configuration_Overview.html" c:\temp\net-snmp\html\
-    copy "win32\dist\htmlhelp\Help_Caveats.html" c:\temp\net-snmp\html\
-    copy "win32\dist\htmlhelp\Introduction.html" c:\temp\net-snmp\html\
-    copy "win32\dist\htmlhelp\Net-SNMP.hhc" c:\temp\net-snmp\html\
-    copy "win32\dist\htmlhelp\Net-SNMP.hhp" c:\temp\net-snmp\html\
-    copy "win32\dist\htmlhelp\net-snmp-4.2-800.jpg" c:\temp\net-snmp\html\
-    copy "win32\dist\htmlhelp\snmp.conf.win32.html" c:\temp\net-snmp\html\
-    copy "win32\dist\htmlhelp\snmpd.conf.win32.html" c:\temp\net-snmp\html\
-    copy "win32\dist\htmlhelp\snmptrapd.conf.win32.html" c:\temp\net-snmp\html\
-
-5.  New configuration options may be available in the new release of
-    Net-SNMP, so the *.conf.win32.html files should be updated.
-
-    Create a text file with all the configuration options for snmpd and 
-    snmptrapd using:
-
-    cd win32\bin\release (folder of *Windows* compiled Net-SNMP)
-    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):
-
-    c:\temp\net-snmp\html\snmp.conf.win32.html
-    c:\temp\net-snmp\html\snmpd.conf.win32.html
-    c:\temp\net-snmp\html\snmptrapd.conf.win32.html
- 
-    Only add the relevent section to each file from the .options files
-    created above, ensure the font is set to fixed width.
-
-    Tidy each file using tidy under Windows (or transfer to Linux and tidy
-    using Linux):
-
-    tidy -asxhtml -m c:\temp\net-snmp\html\snmptrapd.conf.win32.html
-    tidy -asxhtml -m c:\temp\net-snmp\html\snmpd.conf.win32.html
-    tidy -asxhtml -m c:\temp\net-snmp\html\snmp.conf.win32.html
-
-6.  Edit c:\temp\net-snmp\html\Net-SNMP.hhp and update the version for the 
-    'Title' variable.
-
-7.  Run HTML Workshop
-
-8.  Open c:\temp\net-snmp\html\Net-SNMP.hhp
-
-9.  Click File - Compile
-
-10. Select 'C:\temp\net-snmp\html\Net-SNMP.hhp' as the filename
-
-11. Click Compile
-
-12. You should now have a c:\temp\net-snmp\html\Net-SNMP.chm file.
-
-13. Launch the file and ensure every content item displays the correct page.
-
-
-Combining the binaries and HTMLHelp files
-=========================================
-
-1.  Copy the HTML Help file to c:\usr\docs:
-
-    copy c:\temp\Net-SNMP\html\Net-SNMP.chm c:\usr\docs\
-
-
-Bulding a NullSoft installer package
-====================================
-
-Requirements
-------------
-
- -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.
-
-2.  Copy the following files to c:\usr:
-
-    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.  Create the following empty files:
-
-    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
-
-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 
-    package
-
-10. 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.
-
-12. Create a .zip file of c:\usr for archive purposes.
-
-
-Bulding an OpenSSL version
-==========================
-
-Requirements
-------------
-
- -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.  Be sure to undo the winExtDLL 
-    changes before starting by copying a fresh net-snmp-config.h.in and 
-    netsnmpmibssdk.dsp.
-
-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.  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.
-
+***************************************************************************

+*

+* README.build.win32

+*

+* Author: Alex Burger <alex_b@users.sourceforge.net>

+*          

+*

+***************************************************************************

+

+Introduction

+============

+

+This README outlines the steps required to create a binary release for

+Windows using Microsoft Visual Studio and the NullSoft installer.

+

+There are four sections:

+

+  Compiling binaries

+

+  Compiling HTMLHelp file

+

+  Combining the binaries and HTMLHelp files

+

+  Bulding a NullSoft installer package

+

+

+Compiling binaries

+==================

+

+Requirements

+------------

+

+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

+--------------------------

+

+Note:  All shell steps are using the Window CMD prompt unless otherwise stated.

+

+Part 1

+------

+

+1.  Install pre-requisites:

+

+    MSVC 2008:

+      Include the Platform SDK and for 64-bit, make sure the 64-bit compiler is installed

+      (not included by default).

+

+      Latest updates from Microsoft to ensure the redistributable DLLs have the latest

+      security fixes.

+

+    ActivePerl:

+      For 64-bit, make sure you install the 64-bit version otherwise compiling will fail.

+

+    MSYS / MinGW:

+      Needed for tar command in build-binary.bat/pl.  

+

+    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.

+

+2.  Extract source.  The location will be referenced as (source dir)

+

+3.  Delete c:\usr if it exists.

+

+4.  Apply any required patches

+

+5.  cd (source dir)\win32\dist

+

+6.  Run build-binary.bat.  

+

+    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

+    

+    Example:

+

+    <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

+=======================

+

+This section outlines the steps required to build a Windows HTML Help file

+based on the Net-SNMP man pages, README files, Perldoc documentation etc.

+

+Requirements

+------------

+

+ -Linux (or similar) with:

+   -man (man page viewer)

+   -tidy (HTML tidy - http://tidy.sourceforge.net)

+   -Perl

+   -perldoc

+   -man2html3.0.1.tar.gz (http://search.cpan.org/~ehood/man2html3.0.1/)

+    Note:  Most Linux distributions come with man2html as part of the man rpm

+           package which is not the same as man2html from man2html3.0.1.tar.gz.

+           All that is needed from man2html3.0.1.tar.gz is the man2html script.  

+           You do not need to do a complete install (make/make install) but you

+           do need to make sure the script is configured correctly by setting the

+           man command line switches etc for the OS from inside of the script.

+

+ -Windows with:

+   -HTML Help Workshop (Search msdn.microsoft.com for 'html help workshop download')

+

+

+Convert documents to html

+-------------------------

+

+Note:  The following steps are completed using Linux.

+

+Note:  A temporary location of /tmp/net-snmp is used.

+

+1.  Extract Net-SNMP source and cd (source dir)

+

+2.  cd (source dir)

+

+3.  cp perl/SNMP/README README.perl

+

+4.  Remove older copies of converted files:

+

+    rm -R -f /tmp/net-snmp

+

+5.  Build Net-SNMP man pages: 

+

+    ./configure --prefix=c:/usr; make sedscript; cd man;make; cd ..

+

+6.  Install only the man files to /temp/net-snmp:

+

+    cd man; make install prefix=/tmp/net-snmp; cd ..

+

+7.  Go to the scripts folder and make sure all the scripts are executable:

+

+    cd (source dir)

+    cd win32/dist/scripts; chmod +x *

+

+8.  Edit these files and make sure the paths are correct in the OPTIONS 

+    section.  Also ensure the list of README files and Perl modules 

+    are correct in readme2html and poddir2html.

+

+    mandir2html

+    readme2html

+    poddir2html

+

+    Note:  mandir2html will process ALL man pages in c:\temp\net-snmp while

+           readme2html and poddir2html will only process files listed in the

+           script.  If new man pages are added or removed, the Table of 

+           Contents (toc.hhc) and project file (Net-SNMP.hhp) need to be 

+           updated by hand.

+

+9.  Run each script to generate the .html files:

+

+    ./mandir2html; ./readme2html; ./poddir2html

+

+    Note:  There will be many warnings from tidy which can be ignored.

+

+10. Verify each converted file to ensure all the links are correct.  The files

+    are located in /tmp/net-snmp/html by default.  In some instances, URLs may be 

+    split across two lines such as the Variables link at the bottom of 

+    /tmp/net-snmp/html/man8-snmptrapd.8.html.

+

+11. If new man pages are added or removed, the Table of Contents (Net-SNMP.hhc) and

+    project file (Net-SNMP.hhp) need to be updated by hand.

+

+12. Convert EXAMPLE.conf.win32 to html:

+

+    ./txt2html ../../EXAMPLE.conf.win32 | tidy > /tmp/net-snmp/html/EXAMPLE.conf.win32.html

+    

+

+Build Net-SNMP.chm

+------------------

+

+Note:  The following steps are completed using Windows.

+

+Note:  A temporary location of c:\temp\net-snmp is used.

+

+1.  Transfer /tmp/net-snmp/html from Linux to c:\temp\net-snmp\html

+

+2.  Grab the FAQ from the web site, strip out the includes and save as

+    c:\temp\net-snmp\html\FAQ.html and run:

+

+    tidy -asxhtml -m c:\temp\net-snmp\html\FAQ.html

+

+3.  Grab the Devloper FAQ from the web site, strip out the includes and save as

+    c:\temp\net-snmp\html\Developer_FAQ.html and run:

+

+    tidy -asxhtml -m c:\temp\net-snmp\html\Developer_FAQ.html

+

+4.  Copy the following files to c:\temp\net-snmp\html:

+

+    cd (source dir)

+    copy "win32\dist\htmlhelp\Configuration_Overview.html" c:\temp\net-snmp\html\

+    copy "win32\dist\htmlhelp\Help_Caveats.html" c:\temp\net-snmp\html\

+    copy "win32\dist\htmlhelp\Introduction.html" c:\temp\net-snmp\html\

+    copy "win32\dist\htmlhelp\Net-SNMP.hhc" c:\temp\net-snmp\html\

+    copy "win32\dist\htmlhelp\Net-SNMP.hhp" c:\temp\net-snmp\html\

+    copy "win32\dist\htmlhelp\net-snmp-4.2-800.jpg" c:\temp\net-snmp\html\

+    copy "win32\dist\htmlhelp\snmp.conf.win32.html" c:\temp\net-snmp\html\

+    copy "win32\dist\htmlhelp\snmpd.conf.win32.html" c:\temp\net-snmp\html\

+    copy "win32\dist\htmlhelp\snmptrapd.conf.win32.html" c:\temp\net-snmp\html\

+

+5.  New configuration options may be available in the new release of

+    Net-SNMP, so the *.conf.win32.html files should be updated.

+

+    Create a text file with all the configuration options for snmpd and 

+    snmptrapd using:

+

+    cd win32\bin\release (folder of *Windows* compiled Net-SNMP)

+    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 (Nvu etc):

+

+    c:\temp\net-snmp\html\snmp.conf.win32.html

+    c:\temp\net-snmp\html\snmpd.conf.win32.html

+    c:\temp\net-snmp\html\snmptrapd.conf.win32.html

+ 

+    Only add the relevent section to each file from the .options files

+    created above, ensure the font is set to fixed width.

+

+    Tidy each file using tidy under Windows (or transfer to Linux and tidy

+    using Linux):

+

+    tidy -asxhtml -m c:\temp\net-snmp\html\snmptrapd.conf.win32.html

+    tidy -asxhtml -m c:\temp\net-snmp\html\snmpd.conf.win32.html

+    tidy -asxhtml -m c:\temp\net-snmp\html\snmp.conf.win32.html

+

+6.  Edit c:\temp\net-snmp\html\Net-SNMP.hhp and update the version for the 

+    'Title' variable.

+

+7.  Run HTML Workshop

+

+8.  Open c:\temp\net-snmp\html\Net-SNMP.hhp

+

+9.  Click File - Compile

+

+10. Select 'C:\temp\net-snmp\html\Net-SNMP.hhp' as the filename

+

+11. Click Compile

+

+12. You should now have a c:\temp\net-snmp\html\Net-SNMP.chm file.

+

+13. Launch the file and ensure every content item displays the correct page.

+

+

+Combining the binaries and HTMLHelp files

+=========================================

+

+1.  Copy the HTML Help file to c:\usr\docs:

+

+    copy c:\temp\Net-SNMP\html\Net-SNMP.chm c:\usr\docs\

+

+

+Bulding a NullSoft installer package

+====================================

+

+Requirements

+------------

+

+ -Windows

+ -Nullsoft Scriptable Install System 2.0 - http://nsis.sourceforge.net/home/

+

+1.  Complete the sections above.

+

+2.  Launch the 'Nullsoft Install System (NSIS 2.0)'

+

+3.  Select 'MakeNSISW (compiler interface)'

+

+4.  Click File - Load Script

+

+5.  Select c:\usr\net-snmp.nsi

+

+6.  You should now have a c:\usr\Net-SNMP-x.x.x-x.exe binary installer 

+    package

+

+7.  Test the package:

+

+    Perform the basic tests below on the following platforms:

+

+      32-bit package:

+        Windows 2000

+        Windows XP 32-bit

+      64-bit package:

+        Windows 7 64-bit

+

+    Tests:

+

+    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

+

+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.

+

+9.  Create a .zip file of c:\usr for archive purposes.

+

diff --git a/win32/dist/README.txt b/win32/dist/README.txt
index 9da48ec..307c860 100644
--- a/win32/dist/README.txt
+++ b/win32/dist/README.txt
@@ -1,184 +1,188 @@
-       README file for win32 binary release of Net-SNMP
-
-DISCLAIMER
-
-  The Authors assume no responsibility for damage or loss of system
-  performance as a direct or indirect result of the use of this
-  software.  This software is provided "as is" without express or
-  implied warranty.
-
-
-TABLE OF CONTENTS
-
-  Disclaimer
-  Table Of Contents
-  Introduction
-* Installation
-* Co-existence with Microsoft SNMP services
-  Installation - Perl module
-* Configuration
-  Build Information
-
-  * = Required Reading.
-
-
-INTRODUCTION
-
-  This package contains a compiled binary release of Net-SNMP for Windows NT/2000/XP.
-  The binaries run unmodified on Windows 98.  The "snmpd" and "snmptrapd" program can 
-  not run as services on Windows 98, as Windows 98 does not provide a Service Control 
-  Manager (SCM).
-
-  Documentation for using the applications is available in the Windows help file
-  (Net-SNMP.chm) located in the docs directory of the installed package.  Help is also
-  available from the web site at http://www.net-snmp.org/docs/.
-
-
-INSTALLATION
-
-  The Net-SNMP Windows installer package performs the following tasks:
-
-  - Installs the Net-SNMP binaries, MIB files and ActiveState 5.8.x Perl PPM 
-    package into the installation folder (defaults to c:\usr). 
-  - Adds (install folder)\bin to the system PATH. 
-  - Adds the following registry keys:
-    - HKEY_LOCAL_MACHINE\Software\Net-SNMP\SNMPCONFPATH=(install folder)/etc/snmp;
-      (install folder)/snmp/persist
-    - HKEY_LOCAL_MACHINE\Software\Net-SNMP\SNMPSHAREPATH=(install folder)/share/snmp
-  - Creates an snmp.conf file in SNMPCONFPATH which defines: 
-    - mibdirs (install folder)/share/snmp/mibs 
-    - persistentDir (install folder)/snmp/persist 
-    - tempFilePattern (install folder)/temp/snmpdXXXXXX 
-
-  After installing using the setup wizard, perform a quick test to verify that 
-  Net-SNMP was installed correctly.  Run the following from a command prompt:
-
-    snmptranslate -IR -Td IF-MIB::linkDown
-
-  The above command should generate:
-
-    IF-MIB::linkDown
-    linkDown NOTIFICATION-TYPE
-      -- FROM       IF-MIB
-      OBJECTS       { ifIndex, ifAdminStatus, ifOperStatus }
-      DESCRIPTION   "A linkDown trap signifies that the SNMP entity, acting in
-                an agent role, has detected that the ifOperStatus object for
-                one of its communication links is about to enter the down
-                state from some other state (but not from the notPresent
-                state).  This other state is indicated by the included value
-                of ifOperStatus."
-    ::= { iso(1) org(3) dod(6) internet(1) snmpV2(6) snmpModules(3) snmpMIB(1) 
-          snmpMIBObjects(1) snmpTraps(5) 3 }
-
-  If snmptranslate can not be found, then verify that the Net-SNMP bin folder is in 
-  your system path.
-
-  If you get Module not found errors such as 'IP-MIB: Module not found', the application
-  was not able to locate the mibs folder.  Verify that SNMPCONFPATH is set to the location
-  of the configuration folder and the persistent storage folder 
-  (c:/usr/etc/snmp;c:/usr/snmp/persist for example).  Also verify that there is an 
-  snmp.conf file that contains configuration values for mibdirs, persistentDir and 
-  tempFilePattern.  For example:
-
-    mibdirs c:/usr/share/snmp/mibs
-    persistentDir c:/usr/snmp/persist
-    tempFilePattern C:/usr/temp/snmpdXXXXXX
-
-  For detailed information on using environment variables and the registry to configure
-  Net-SNMP, see 'Overview' document in the Configuration section of the Net-SNMP help file.
-
-  For information on running snmpd.exe and snmptrapd.exe as a Windows service, see 
-  'How to Register the Net-SNMP Agent and Trap Daemon as Windows services' in README.win32.
-
-
-CO-EXISTENCE WITH MICROSOFT SNMP SERVICES
-
-Please see the section 'Co-existence with Microsoft SNMP services' in README.win32
-
-
-INSTALLATION - PERL MODULE
-
-  Included in the (install folder)\Perl folder is an ActiveState Perl 
-  5.8.x. PPM package.  Note:  In previous version of Net-SNMP, the PPM
-  package was called Net-SNMP.ppd.  The package has been renamed to
-  NetSNMP.ppd to prevent conflicts with the Net::SNMP package available
-  from ActiveState.
-
-  The Perl modules require the Win32 REGEX (Regular Expression) package which 
-  is available from:
-
-    http://people.delphiforums.com/gjc/gnu_regex.html
-
-  Download gnu_regex.exe, copy it to a temporary file and execute it to 
-  extract the files.
-
-  Copy the extracted gnu_regex.dll to your %windir%\system32 folder.
-
-  Remove any existing Net-SNMP Perl modules:
-
-    ppm remove NetSNMP
-
-  Install the Perl modules:
-
-    cd (install folder)\Perl
-    ppm install NetSNMP.ppd
-
-  Perform a basic test using:
-
-    net-snmp-perl-test.pl
-
-
-CONFIGURATION
-
-  All configuration files should be placed in the %SNMPCONFPATH% folder.
-
-  Note: All paths in configuration files should use forward slashes (Unix style), 
-  NOT back slashes.  Example: c:/usr
-
-  Included is a Perl script called snmpconf which can be used to create 
-  configuration files.  
-
-  Documentation for using the snmpconf is available in the Windows help file
-  (Net-SNMP.chm) located in the docs directory of the installed package.  Help is also
-  available from the web site at http://www.net-snmp.org/docs/.
-
-  To run snmpconf, use the following command line:
-
-     snmpconf -i
-
-
-BUILD INFORMATION
-
-  Name:			net-snmp-x.x.x-1.win32.exe
-  URL:			http://www.net-snmp.org
-  Build date:		
-  Built by:		
-  Installer Package by: 
-  
-  OS:			Windows 2000 SP4
-  Compiler:		MSVC++ 6.0 SP5
-  Platform SDK:		February 2003
-  Perl:			ActivePerl 5.8.2 build 808
-  REGEX:		gnu_regex.exe (0.12) - http://people.delphiforums.com/gjc/gnu_regex.html
-
-  Source: 		net-snmp-x.x.x.tar.gz
-  Destination:  	c:\usr
-  Project:		win32sdk.dsw / libdll.dsw
-  Library:		netsnmp for applications, netsnmp.dll for Perl modules
-  OpenSSL:		n/a
-
-
-  The following are the default paths are used by the applications:
-
-  ----------------------------------------------------------------------------
-  net-snmp-config.h define   | value                    | optional environment
-                             |                          | variable
-  ----------------------------------------------------------------------------
-  DEFAULT_MIBDIRS            | c:/usr/share/snmp/mibs   | MIBDIRS
-  SNMPDLMODPATH              | c:/usr/lib/dlmod         | SNMPDLMODPATH
-  SNMPLIBPATH                | c:/usr/lib               | SNMPLIBPATH
-  SNMPSHAREPATH              | c:/usr/share/snmp        | SNMPSHAREPATH
-  SNMPCONFPATH               | c:/usr/etc/snmp          | SNMPCONFPATH
-  PERSISTENT_DIRECTORY       | c:/usr/snmp/persist      | SNMP_PERSISTENT_DIR
-  NETSNMP_TEMP_FILE_PATTERN  | c:/usr/temp/snmpdXXXXXX  | 
-
+       README file for win32 binary release of Net-SNMP

+

+DISCLAIMER

+

+  The Authors assume no responsibility for damage or loss of system

+  performance as a direct or indirect result of the use of this

+  software.  This software is provided "as is" without express or

+  implied warranty.

+

+

+TABLE OF CONTENTS

+

+  Disclaimer

+  Table Of Contents

+  Introduction

+* Installation

+* Co-existence with Microsoft SNMP services

+  Installation - Perl module

+* Configuration

+  Build Information

+

+  * = Required Reading.

+

+

+INTRODUCTION

+

+  This package contains a compiled binary release of Net-SNMP for Windows NT/2000/XP.

+  The binaries run unmodified on Windows 98.  The "snmpd" and "snmptrapd" program can 

+  not run as services on Windows 98, as Windows 98 does not provide a Service Control 

+  Manager (SCM).

+

+  Documentation for using the applications is available in the Windows help file

+  (Net-SNMP.chm) located in the docs directory of the installed package.  Help is also

+  available from the web site at http://www.net-snmp.org/docs/.

+

+

+INSTALLATION

+

+  The Net-SNMP Windows installer package performs the following tasks:

+

+  - Installs the Net-SNMP binaries, MIB files and ActiveState 5.8.x Perl PPM 

+    package into the installation folder (defaults to c:\usr). 

+  - Adds (install folder)\bin to the system PATH. 

+  - Adds the following registry keys:

+    - HKEY_LOCAL_MACHINE\Software\Net-SNMP\SNMPCONFPATH=(install folder)/etc/snmp;

+      (install folder)/snmp/persist

+    - HKEY_LOCAL_MACHINE\Software\Net-SNMP\SNMPSHAREPATH=(install folder)/share/snmp

+  - Creates an snmp.conf file in SNMPCONFPATH which defines: 

+    - mibdirs (install folder)/share/snmp/mibs 

+    - persistentDir (install folder)/snmp/persist 

+    - tempFilePattern (install folder)/temp/snmpdXXXXXX 

+

+  After installing using the setup wizard, perform a quick test to verify that 

+  Net-SNMP was installed correctly.  Run the following from a command prompt:

+

+    snmptranslate -IR -Td IF-MIB::linkDown

+

+  The above command should generate:

+

+    IF-MIB::linkDown

+    linkDown NOTIFICATION-TYPE

+      -- FROM       IF-MIB

+      OBJECTS       { ifIndex, ifAdminStatus, ifOperStatus }

+      DESCRIPTION   "A linkDown trap signifies that the SNMP entity, acting in

+                an agent role, has detected that the ifOperStatus object for

+                one of its communication links is about to enter the down

+                state from some other state (but not from the notPresent

+                state).  This other state is indicated by the included value

+                of ifOperStatus."

+    ::= { iso(1) org(3) dod(6) internet(1) snmpV2(6) snmpModules(3) snmpMIB(1) 

+          snmpMIBObjects(1) snmpTraps(5) 3 }

+

+  If snmptranslate can not be found, then verify that the Net-SNMP bin folder is in 

+  your system path.

+

+  If you get Module not found errors such as 'IP-MIB: Module not found', the application

+  was not able to locate the mibs folder.  Verify that SNMPCONFPATH is set to the location

+  of the configuration folder and the persistent storage folder 

+  (c:/usr/etc/snmp;c:/usr/snmp/persist for example).  Also verify that there is an 

+  snmp.conf file that contains configuration values for mibdirs, persistentDir and 

+  tempFilePattern.  For example:

+

+    mibdirs c:/usr/share/snmp/mibs

+    persistentDir c:/usr/snmp/persist

+    tempFilePattern C:/usr/temp/snmpdXXXXXX

+

+  For detailed information on using environment variables and the registry to configure

+  Net-SNMP, see 'Overview' document in the Configuration section of the Net-SNMP help file.

+

+  For information on running snmpd.exe and snmptrapd.exe as a Windows service, see 

+  'How to Register the Net-SNMP Agent and Trap Daemon as Windows services' in README.win32

+  which can be found in the Net-SNMP Help file in the Start menu.

+

+

+CO-EXISTENCE WITH MICROSOFT SNMP SERVICES

+

+Please see the section 'Co-existence with Microsoft SNMP services' in README.win32 which 

+can be found in the Net-SNMP Help file in the Start menu.

+

+

+INSTALLATION - PERL MODULE

+

+  Included in the (install folder)\Perl folder is an ActiveState Perl 

+  5.8.x. PPM package.  Note:  In previous version of Net-SNMP, the PPM

+  package was called Net-SNMP.ppd.  The package has been renamed to

+  NetSNMP.ppd to prevent conflicts with the Net::SNMP package available

+  from ActiveState.

+

+  The Perl modules require the Win32 REGEX (Regular Expression) package which 

+  is available from:

+

+    http://people.delphiforums.com/gjc/gnu_regex.html

+

+  Download gnu_regex.exe, copy it to a temporary file and execute it to 

+  extract the files.

+

+  Copy the extracted gnu_regex.dll to your %windir%\system32 folder.

+

+  Remove any existing Net-SNMP Perl modules:

+

+    ppm remove NetSNMP

+

+  Install the Perl modules:

+

+    cd (install folder)\Perl

+    ppm install NetSNMP.ppd

+

+  Perform a basic test using:

+

+    net-snmp-perl-test.pl

+

+

+CONFIGURATION

+

+  All configuration files should be placed in the %SNMPCONFPATH% folder.

+

+  Note: All paths in configuration files should use forward slashes (Unix style), 

+  NOT back slashes.  Example: c:/usr

+

+  Included is a Perl script called snmpconf which can be used to create 

+  configuration files.  

+

+  Documentation for using the snmpconf is available in the Windows help file

+  (Net-SNMP.chm) located in the docs directory of the installed package.  Help is also

+  available from the web site at http://www.net-snmp.org/docs/.

+

+  To run snmpconf, use the following command line:

+

+     snmpconf -i

+

+

+BUILD INFORMATION

+

+  Name:			net-snmp-x.x.x-1.win32.exe

+  URL:			http://www.net-snmp.org

+  Build date:		

+  Built by:		

+  Installer Package by: 

+  NSIS Compiler:	Version 2.3

+  

+  OS:			Windows 2000 SP4

+  Compiler:		MSVC++ 6.0 SP5

+  Platform SDK:		February 2003

+  Perl:			ActivePerl 5.8.2 build 808

+  REGEX:		gnu_regex.exe (0.12) - http://people.delphiforums.com/gjc/gnu_regex.html

+

+  Source: 		net-snmp-x.x.x.tar.gz

+  Patches		

+  Destination:  	c:\usr

+  Project:		win32sdk.dsw / libdll.dsw

+  Library:		netsnmp for applications, netsnmp.dll for Perl modules

+  OpenSSL:		n/a

+

+

+  The following are the default paths are used by the applications:

+

+  ----------------------------------------------------------------------------

+  net-snmp-config.h define   | value                    | optional environment

+                             |                          | variable

+  ----------------------------------------------------------------------------

+  DEFAULT_MIBDIRS            | c:/usr/share/snmp/mibs   | MIBDIRS

+  SNMPDLMODPATH              | c:/usr/lib/dlmod         | SNMPDLMODPATH

+  SNMPLIBPATH                | c:/usr/lib               | SNMPLIBPATH

+  SNMPSHAREPATH              | c:/usr/share/snmp        | SNMPSHAREPATH

+  SNMPCONFPATH               | c:/usr/etc/snmp          | SNMPCONFPATH

+  PERSISTENT_DIRECTORY       | c:/usr/snmp/persist      | SNMP_PERSISTENT_DIR

+  NETSNMP_TEMP_FILE_PATTERN  | c:/usr/temp/snmpdXXXXXX  | 

+

diff --git a/win32/dist/build-binary.bat b/win32/dist/build-binary.bat
new file mode 100755
index 0000000..60e1728
--- /dev/null
+++ b/win32/dist/build-binary.bat
@@ -0,0 +1,3 @@
+@echo off
+
+perl %~dp0\build-binary.pl
diff --git a/win32/dist/build-binary.pl b/win32/dist/build-binary.pl
new file mode 100755
index 0000000..b064cc8
--- /dev/null
+++ b/win32/dist/build-binary.pl
@@ -0,0 +1,538 @@
+#!/usr/bin/perl
+# 
+# Build script for Net-SNMP and MSVC
+# Written by Alex Burger - alex_b@users.sourceforge.net
+# May 10th, 2009
+#
+use strict;
+use File::Basename;
+use File::Copy;
+use File::Spec;
+use Cwd 'abs_path';
+
+print "------------------------------------------------------\n";
+
+my $tar_command;
+my $gzip_command;
+for my $msysbindir (("C:\\msys\\1.0\\bin", "C:\\mingw\\msys\\1.0\\bin")) {
+    $tar_command = File::Spec->catfile($msysbindir, "tar.exe");
+    $gzip_command = File::Spec->catfile($msysbindir, "gzip.exe");
+    last if (-f $tar_command);
+}
+
+if (! (-f $tar_command)) {
+  die ("Could not find tar command");
+}
+else {
+  print "tar command:  $tar_command\n";
+}
+if (! (-f $gzip_command)) {
+  die ("Could not find gzip command");
+}
+else {
+  print "gzip command: $gzip_command\n";
+}
+
+my $makensis;
+for my $nsisdir (("C:\\Program Files\\NSIS", "C:\\Program Files (x86)\\NSIS")) {
+    $makensis = File::Spec->catfile($nsisdir, "makensis.exe");
+    last if (-f $makensis);
+}
+die("makensis.exe not found") if (!(-f $makensis));
+
+my $target_arch = $ENV{TARGET_CPU} ? $ENV{TARGET_CPU} : $ENV{Platform} ?
+                  $ENV{Platform} : "x86";
+my $openssldir = $target_arch eq "x64" ? "C:\\OpenSSL-Win64" :
+                 "C:\\OpenSSL-Win32";
+my $opensslincdir = $openssldir . "\\include";
+my $openssllibdir = $openssldir . "\\lib\\VC";
+
+my $version = "unknown";
+my $version_for_perl = "unknown";
+my $version_maj;
+my $version_min;
+my $version_rev;
+my $installer_exe_version = 1;
+my $openssl = "disabled";
+my $b_ipv6 = "disabled";
+my $b_winextdll = "disabled";
+my $sdk = "disabled";
+my $default_install_base = "c:/usr";
+my $install_base = $default_install_base;
+my $install = "enabled";
+my $install_devel = "disabled";
+my $perl = "disabled";
+my $perl_install = "disabled";
+my $logging = "enabled";
+my $debug = "disabled";
+my $configOpts = "";
+my $cTmp = "";
+my $linktype = "static";
+my $option;
+
+my $scriptdir = dirname(abs_path($0));
+my $win32_dir = dirname($scriptdir);
+my $top_dir = dirname($win32_dir);
+my $perl_dir = File::Spec->catdir($top_dir, "perl");
+
+print "\ntop_dir:      $top_dir\n";
+print "win32_dir:    $win32_dir\n";
+print "perl_dir:     $perl_dir\n";
+print "install base: $install_base\n\n";
+
+chdir $win32_dir;
+
+if ( -d "dist" ) { }
+else {
+  print "\nPlease copy the win32/dist folder from trunk to $win32_dir/\n\n";
+  exit;
+}
+
+if (!(-d $ENV{MSVCDir}) && !(-d $ENV{VCINSTALLDIR}) && !defined($ENV{TARGET_CPU})) {
+  print "\nPlease run VCVARS32.BAT first to set up the Visual Studio build\n" .
+        "environment.\n\n";
+  exit;
+}
+
+if ( -d $install_base) {
+  print "\nPlease delete or rename the $install_base folder.\n\n";
+  exit;
+}
+
+my $system_netsnmpdll = "$ENV{WINDIR}\\system32\\netsnmp.dll";
+if ( -f $system_netsnmpdll) {
+  print "\n$system_netsnmpdll should be renamed or deleted.\n\n";
+  
+  print "Would you like me to delete it? (y/n?)";
+  $| = 1;
+  my $temp = <STDIN>;
+  chomp $temp;
+  if (lc($temp) eq "y" || lc($temp) eq "yes") {
+    unlink $system_netsnmpdll || die "Could not delete file $system_netsnmpdll\n";
+  }
+  else {
+    exit;
+  }
+}
+
+###############################################
+#
+# Determine version from unix configure script
+#
+###############################################
+
+my $unix_configure_in = "../configure";
+
+open (UNIX_CONFIGURE_IN, "<$unix_configure_in") || die "Can't Open $unix_configure_in\n";
+
+while (<UNIX_CONFIGURE_IN>)
+{
+  chomp;
+  /PACKAGE_VERSION='(.*)'/;
+  if ($1 ne "") {
+    $version = $1;
+    last;
+  }
+}
+close UNIX_CONFIGURE_IN;
+
+# Determine version for Perl (4 characters with commas)
+$version_for_perl = $version;
+my $dotCount = ($version =~ tr/.//);
+while ($dotCount < 3) {
+  $version_for_perl .= ".0";
+  $dotCount++;
+}
+$version_for_perl =~ s/\./,/g;
+
+# Determine version for NSIS installer
+my @version_array = split(/\./, $version);
+$version =~ /.*?\..*?\.(.*)/;
+$version_rev = $1 || 0;
+$version_maj = $version_array[0] || 0;
+$version_min = $version_array[1] || 0;
+
+print "Net-SNMP version:      $version\n";
+print "Net-SNMP Perl version: $version_for_perl\n";
+print "Net-SNMP version MAJ:  $version_maj\n";
+print "Net-SNMP version MIN1: $version_min\n";
+print "Net-SNMP version MIN2: $version_rev\n\n";
+
+#goto skip1;
+#exit;
+
+
+
+#***************************************************************
+# Common build options:
+$b_ipv6 = "enabled";
+$sdk = "enabled";
+$default_install_base = "c:/usr";
+$install_base = $default_install_base;
+$perl_install = "disabled";
+$debug = "disabled";
+$configOpts = "";
+$cTmp = "";
+$linktype = "dynamic";
+
+#***************************************************************
+# Build binary:
+# winExtDLL = disabled
+# SSL = enabled
+$openssl = "enabled";
+$b_winextdll = "disabled";
+$perl = "enabled";
+$install = "enabled";
+$install_devel = "enabled";
+
+chdir $win32_dir;
+&build();
+&create_perl_package();
+
+print "\nCleaning up $install_base/snmp/persist/\n";
+unlink ("$install_base/snmp/persist/snmpd.conf");
+unlink ("$install_base/snmp/persist/snmptrapd.conf");
+
+#***************************************************************
+# Build binary:
+# winExtDLL = enabled
+# SSL = enabled
+$openssl = "enabled";
+$b_winextdll = "enabled";
+$perl = "disabled";
+$install = "disabled";
+$install_devel = "disabled";
+
+chdir $win32_dir;
+&build();
+
+print "\nCopying snmpd.exe to snmpd-winExtDLL.exe\n";
+copy("bin/release/snmpd.exe","$install_base/bin/snmpd-winExtDLL.exe") || die ("Could not copy snmpd.exe to snmpd-winExtDLL.exe: $?");
+
+print "\nCleaning up $install_base/snmp/persist/\n";
+unlink ("$install_base/snmp/persist/snmpd.conf");
+unlink ("$install_base/snmp/persist/snmptrapd.conf");
+
+
+print "Renaming $install_base/bin to $install_base/bin.ssl\n";
+rename ("$install_base/bin","$install_base/bin.ssl") || die ("Could not rename folder: $?");
+print "Renaming $install_base/lib to $install_base/lib.ssl\n";
+rename ("$install_base/lib","$install_base/lib.ssl") || die ("Could not rename folder: $?");
+print "Renaming $install_base/perl to $install_base/perl.ssl\n";
+rename ("$install_base/perl","$install_base/perl.ssl") || die ("Could not rename folder: $?");
+
+#***************************************************************
+
+
+#***************************************************************
+# Build binary:
+# winExtDLL = disabled
+# SSL = disabled
+$openssl = "disabled";
+$b_winextdll = "disabled";
+$perl = "enabled";
+$install = "enabled";
+$install_devel = "enabled";
+
+chdir $win32_dir;
+&build();
+&create_perl_package();
+
+print "\nCleaning up $install_base/snmp/persist/\n";
+unlink ("$install_base/snmp/persist/snmpd.conf");
+unlink ("$install_base/snmp/persist/snmptrapd.conf");
+
+#***************************************************************
+# Build binary:
+# winExtDLL = enabled
+# SSL = disabled
+$openssl = "disabled";
+$b_winextdll = "enabled";
+$perl = "disabled";
+$install = "disabled";
+$install_devel = "disabled";
+
+chdir $win32_dir;
+&build();
+
+print "\nCopying snmpd.exe to snmpd-winExtDLL.exe\n";
+copy("bin/release/snmpd.exe","$install_base/bin/snmpd-winExtDLL.exe") || die ("Could not copy snmpd.exe to snmpd-winExtDLL.exe: $?");
+
+print "\nCleaning up $install_base/snmp/persist/\n";
+unlink ("$install_base/snmp/persist/snmpd.conf");
+unlink ("$install_base/snmp/persist/snmptrapd.conf");
+
+#***************************************************************
+
+print "\n\nCopying dist files:\n";
+print "===================\n\n";
+
+mkdir ("$install_base/docs");
+mkdir ("$install_base/temp");
+
+&check_dir_exists("$install_base/docs");
+&check_dir_exists("$install_base/temp");
+
+chdir $top_dir;
+copy("COPYING","$install_base/docs/") || die ("Could not copy file: $?");
+copy('win32\dist\README.txt',"$install_base/") || die ("Could not copy file: $?");
+copy('win32\dist\scripts\net-snmp-perl-test.pl',"$install_base/bin/") || die ("Could not copy file: $?");
+
+
+skip1:
+
+#***************************************************************
+
+print "\n\nCopying NSIS installer files:\n";
+print "=============================\n\n";
+
+chdir $top_dir;
+copy('win32\dist\installer\SetEnVar.nsi',"$install_base/") || die ("Could not copy file: $?");
+copy('win32\dist\installer\net-snmp.nsi',"$install_base/net-snmp.nsi") || die ("Could not copy file: $?");
+copy('win32\dist\installer\Add2Path.nsi',"$install_base/") || die ("Could not copy file: $?");
+copy('win32\dist\installer\net-snmp-header1.bmp',"$install_base/") || die ("Could not copy file: $?");
+
+open (TEMP, ">$install_base/registeragent.bat") || die ("Could not create file: $?");
+close TEMP;
+open (TEMP, ">$install_base/unregisteragent.bat") || die ("Could not create file: $?");
+close TEMP;
+open (TEMP, ">$install_base/registertrapd.bat") || die ("Could not create file: $?");
+close TEMP;
+open (TEMP, ">$install_base/unregistertrapd.bat") || die ("Could not create file: $?");
+close TEMP;
+open (TEMP, ">$install_base/etc/snmp/snmp.conf") || die ("Could not create file: $?");
+close TEMP;
+
+print "\n\nCopying documentation:\n";
+print "=============================\n\n";
+
+# To do: replace the two lines below with commands that build the .chm file.
+open out, ">$install_base/docs/net-snmp.chm";
+close out;
+
+print "\n\nBuilding installer:\n";
+print "=============================\n\n";
+
+my $suffix = $ENV{LIB} =~ /\\x64|\\amd64/ ? "x64" : "x86";
+if (system("\"$makensis\" /DPRODUCT_MAJ_VERSION=\"$version_maj\" /DPRODUCT_MIN_VERSION=\"$version_min\" /DPRODUCT_REVISION=\"$version_rev\" /DPRODUCT_EXE_VERSION=\"$installer_exe_version\" /DINSTALLER_PLATFORM=\"$suffix\" \"$install_base/net-snmp.nsi\"") != 0) {
+    die("Building installer failed");
+}
+
+print "\n=======\n";
+print "Done!!!\n";
+print "=======\n\n";
+
+exit;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#***************************************************************
+sub build {
+  print "\n\nBuilding with options:\n";
+  print "======================\n\n";
+  print "1.  OpenSSL support:                " . $openssl. "\n";
+  print "2.  Platform SDK support:           " . $sdk . "\n";
+  print "\n";
+  print "3.  Install path:                   " . $install_base . "\n";
+  print "4.  Install after build:            " . $install . "\n";
+  print "\n";
+  print "5.  Perl modules:                   " . $perl . "\n";
+  print "6.  Install perl modules:           " . $perl_install . "\n";
+  print "\n";
+  print "7.  Quiet build (logged):           " . $logging . "\n";
+  print "8.  Debug mode:                     " . $debug . "\n";
+  print "\n";
+  print "9.  IPv6 transports (requires SDK): " . $b_ipv6 . "\n";
+  print "10. winExtDLL agent (requires SDK): " . $b_winextdll . "\n";
+  print "\n";
+  print "11. Link type:                      " . $linktype . "\n";
+  print "\n";
+  print "12. Install development files       " . $install_devel . "\n";
+
+  $cTmp = ($openssl eq "enabled" ? "--with-ssl" : "" );
+  $configOpts = "$cTmp";
+  $cTmp = ($sdk eq "enabled" ? "--with-sdk" : "" );
+  $configOpts = "$configOpts $cTmp";
+  $cTmp = ($b_ipv6 eq "enabled" ? "--with-ipv6" : "" );
+  $configOpts = "$configOpts $cTmp";
+  $cTmp = ($b_winextdll eq "enabled" ? "--with-winextdll" : "" );
+  $configOpts = "$configOpts $cTmp";
+  $cTmp = ($debug eq "enabled" ? "--config=debug" : "--config=release" );
+  $configOpts = "$configOpts $cTmp";
+  
+  # Set environment variables
+  
+  # Set to not search for non-existent ".dep" files
+  $ENV{NO_EXTERNAL_DEPS}="1";
+
+  $ENV{INCLUDE} .= ";$opensslincdir";
+  $ENV{LIB}     .= ";$openssllibdir";
+
+  # Set PATH environment variable so Perl make tests can locate the DLL
+  $ENV{PATH} = File::Spec->catdir($top_dir, "bin", $debug eq "enabled" ? "debug" : "release") . ";$ENV{PATH}";
+  
+  # Set MIBDIRS environment variable so Perl make tests can locate the mibs
+  my $temp_mibdir = File::Spec->catdir($top_dir, "mibs");
+  $temp_mibdir =~ s/\\/\//g;
+  $ENV{MIBDIRS}=$temp_mibdir;
+  
+  # Set SNMPCONFPATH environment variable so Perl conf.t test can locate
+  # the configuration files.
+  # See the note about environment variables in the Win32 section of 
+  # perl/SNMP/README for details on why this is needed. 
+  $ENV{SNMPCONFPATH}="t";$ENV{SNMPCONFPATH};
+  
+  print "\nBuilding...\n";
+  
+  print "\nCreating *.out log files.\n\n";
+
+  #print "Deleting old log files...\n";
+  #system("del *.out > NUL: 2>&1");
+
+  # Delete net-snmp-config.h from main include folder just in case it was created by a Cygwin or MinGW build
+  system("del ..\\include\\net-snmp\\net-snmp-config.h > NUL: 2>&1");
+  
+  print "Running Configure...\n";
+  system("perl Configure $configOpts --linktype=$linktype --prefix=\"$install_base\" > configure.out 2>&1") == 0 || die "Build error (see configure.out)";
+
+  print "Cleaning...\n";
+  system("nmake /nologo clean > clean.out 2>&1") == 0 || die "Build error (see clean.out)";
+
+  print "Building main package...\n";
+  system("nmake /nologo > make.out 2>&1") == 0 || die "Build error (see make.out)";
+
+  if ($perl eq "enabled") {
+    if ($linktype eq "static") {
+      print "Running Configure for DLL...\n";
+      system("perl Configure $configOpts --linktype=dynamic --prefix=\"$install_base\" > perlconfigure.out 2>&1") == 0 || die "Build error (see perlconfigure.out)";
+      
+      print "Cleaning libraries...\n";
+      system("nmake /nologo libs_clean >> clean.out 2>&1") == 0 || die "Build error (see clean.out)";
+      
+      print "Building DLL libraries...\n";
+      system("nmake /nologo libs > dll.out 2>&1") == 0 || die "Build error (see dll.out)";
+    }
+
+    print "Cleaning Perl....\n";
+    system("nmake /nologo perl_clean >> clean.out 2>&1"); # If already cleaned, Makefile is gone so don't worry about errors!
+
+    print "Building Perl modules...\n";
+    system("nmake /nologo perl > perlmake.out 2>&1") == 0 || die "Build error (see perlmake.out)";
+
+#    print "Testing Perl modules...\n";
+#    system("nmake /nologo perl_test > perltest.out 2>&1"); # Don't die if all the tests don't pass..
+    
+    if ($perl_install eq "enabled") {
+      print "Installing Perl modules...\n";
+      system("nmake /nologo perl_install > perlinstall.out 2>&1") == 0 || die "Build error (see perlinstall.out)";
+    }
+      
+    print "\nSee perltest.out for Perl test results\n";
+  }
+
+  print "\n";
+  if ($install eq "enabled") {
+    print "Installing main package...\n";
+    system("nmake /nologo install > install.out 2>&1") == 0 || die "Build error (see install.out)";
+  }
+  else {
+    print "Type nmake install to install the package to $install_base\n";
+  }
+
+  if ($install_devel eq "enabled") {
+    print "Installing development files...\n";
+    system("nmake /nologo install_devel > install_devel.out 2>&1") == 0 || die "Build error (see install_devel.out)";
+  }
+  else {
+    print "Type nmake install_devel to install the development files to $install_base\n";
+  }
+  
+  if ($perl_install eq "disabled" && $perl eq "enabled") {
+    print "Type nmake perl_install to install the Perl modules\n";
+  }
+
+  print "\nDone!\n";  
+} # sub build
+
+
+
+
+sub create_perl_package {
+
+  print "\n\nCreating Perl package:\n";
+  print "========================\n\n";
+  
+  chdir $perl_dir || die ("Could not enter Perl directory: $perl_dir");
+  
+  system("nmake ppd > perlpackage.out 2>&1") == 0 || die "Build error (see perlpackage.out)";
+  #rename("Bundle-NetSNMP.ppd","NetSNMP.ppd") || die "Could not rename Bundle-NetSNMP.ppd to NetSNMP.ppd";
+  
+  {
+    my $file_out = "NetSNMP.ppd";
+    my $file_in = "Bundle-NetSNMP.ppd";
+  
+    open (FILE_OUT, ">$file_out") || die "Can't Open $file_out\n";
+    open (FILE_IN, "<$file_in") || die "Can't Open $file_in\n";
+    
+    print "creating $file_out\n";
+  
+    while (<FILE_IN>)
+    {
+      chomp;
+      s/^<SOFTPKG NAME.*/<SOFTPKG NAME="NetSNMP" VERSION="$version_for_perl">/;
+      s/.*?<TITLE>.*/    <TITLE>Net-SNMP<\/TITLE>/;
+      s/.*?<ABSTRACT>.*/    <ABSTRACT>Object Oriented Interface to Net-SNMP<\/ABSTRACT>/;
+      s/.*?<CODEBASE.*/        <CODEBASE HREF="x86\/NetSNMP.tar.gz" \/>/;
+  
+      print FILE_OUT $_ . "\n";
+    }
+    close FILE_IN;
+    close FILE_OUT;
+  }
+  
+  print "Compressing Perl modules\n";
+  unlink "NetSNMP.tar";
+  unlink "NetSNMP.tar.gz";
+  unlink "perl-tar.out";
+  unlink "perl-gzip.out";
+  print "  Creating Perl tar file\n";
+  if (system("\"$tar_command\" cvf NetSNMP.tar blib > perl-tar.out 2>&1")) { die ("Could not create tar file.  See perl-tar.out"); }
+  print "  Compressing Perl tar file\n";
+  if (system("\"$gzip_command\" --best NetSNMP.tar > perl-gzip.out 2>&1")) { die ("Could not compress tar file with gzip. See perl-gzip.out"); }
+   
+  # Remove chdir..
+  chdir $perl_dir || die ("Could not enter Perl directory: $perl_dir");
+  mkdir ("$install_base/perl");
+  mkdir ("$install_base/perl/x86");
+  &check_dir_exists("$install_base/perl");
+  &check_dir_exists("$install_base/perl/x86");
+  copy("NetSNMP.ppd","$install_base/perl/") || die ("Could not copy file: $?");
+  copy("NetSNMP.tar.gz","$install_base/perl/x86/") || die ("Could not copy file: $?");
+}  # sub create_perl_package
+
+sub check_dir_exists {
+  my $dir = shift;
+  if (! -d $dir) {
+    die "Directory $dir is missing\n";
+  }
+}
+
diff --git a/win32/dist/htmlhelp/Developer_FAQ.html b/win32/dist/htmlhelp/Developer_FAQ.html
new file mode 100644
index 0000000..b80acbc
--- /dev/null
+++ b/win32/dist/htmlhelp/Developer_FAQ.html
@@ -0,0 +1,786 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+  <head>
+    <title>rstory's NET-SNMP Developers Frequently Asked Questions Page</title>
+  </head>
+
+  <body bgcolor="#ffffff" background="ucd-snmp-bg3.gif">
+    <div align=center>
+    <h1>rstory's NET-SNMP Developers Frequently Asked Questions Page</h1>
+    </div>
+<hr>
+    <div align=center>
+    <font size=-1>
+      <a href="FAQ.html">[Official FAQ]</a> | 
+	<a href="#tokens">[Debug tokens]</a> | 
+	<a href="#agentx">[AgentX]</a> | 
+	<a href="#install">[Install]</a> | 
+	<a href="#disable">[Disable]</a> | 
+	<a href="#errors">[Errors]</a> | 
+	<a href="#bits">[Bits]</a> | 
+	<a href="#embedded">[embedded perl]</a> | 
+	<a href="#smux">[SMUX]</a> | 
+	<a href="#entid">[Enterprise OID]</a> | 
+	<a href="#autodeps">[Automatic dependencies]</a> | 
+	<a href="#cross">[Cross compiling]</a> | 
+	<a href="#static">[Static linking]</a> | 
+	<a href="#readfds">[readfds]</a> | 
+	<a href="#sharing">[Sharing data]</a> | 
+	<a href="man1-mib2c.1.html">[mib2c.array-user.conf]</a> | 
+	<a href="#steps">[Baby Steps flow]</a> | 
+      </font>
+    </div>
+<hr>
+This is just a quick page to answer some common questions that aren't covered
+in the <a href="/FAQ.html">official FAQ</a>.
+
+<a name="agentx"></a> <h2>AgentX</h2>
+<pre> To have the sub-agent communicate on a different socket, or with
+different permissions, add these line to your snmpd.conf
+
+	# socket path
+	agentxsocket /tmp/agentx
+
+	# perms socket directory userid groupid
+	agentxperms 777 777 rstory rstory
+
+
+and add this line to your subagent:
+
+	netsnmp_ds_set_string(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_X_SOCKET, "/tmp/agentx");
+
+*before* you call init_agent().
+
+ </pre>
+
+<a name="install"></a><h2>install</h2>
+<pre> INSTALL_PREFIX goes before everything.. so, with the defaults, just
+setting INSTALL_PREFIX=/tmp would result in /tmp/usr/local.. 
+so INSTALL_PREFIX=/tmp prefix=/usr exec_prefix=/usr would go into /tmp/usr
+ </pre>
+
+<a name="disable"></a><h2>disable</h2>
+<pre> If you are using net-snmp Version >= 5.1, then the following configure
+options may be useful to you:
+
+  --disable-agent                 Do not build the agent (snmpd).
+  --disable-applications          Do not build the apps (snmpget, ...).
+  --disable-manuals               Do not install the manuals.
+  --disable-scripts               Do not install the scripts (mib2c, ...).
+  --disable-mibs                  Do not install the mib files.
+  --disable-mib-loading            Do not include code that parses and
+                                   manipulates the mib files.
+ </pre>
+
+<a name="errors"></a><h2>errors</h2>
+<pre> from RFC 3416:
+
+                   noError(0),
+                   tooBig(1),
+                   noSuchName(2),      -- for proxy compatibility
+                   badValue(3),        -- for proxy compatibility
+                   readOnly(4),        -- for proxy compatibility
+                   genErr(5),
+                   noAccess(6),
+                   wrongType(7),
+                   wrongLength(8),
+                   wrongEncoding(9),
+                   wrongValue(10),
+                   noCreation(11),
+                   inconsistentValue(12),
+                   resourceUnavailable(13),
+                   commitFailed(14),
+                   undoFailed(15),
+                   authorizationError(16),
+                   notWritable(17),
+                   inconsistentName(18)
+ </pre>
+
+<a name="bits"></a><h2>bits</h2>
+<pre> SNMPv1 use BIT STRINGs (RFC 1212, 5.1.1):
+
+          (3)  An object with BIT STRING syntax containing no more than
+               32 bits becomes an INTEGER defined as a sum; otherwise if
+               more than 32 bits are present, the object becomes an
+               OCTET STRING, with the bits numbered from left-to-right,
+               in which the least significant bits of the last octet may
+               be "reserved for future use".
+
+SNMPv2 and beyond uses BITS (RFC 3417, 8.1):
+
+   (3)   When encoding an object whose syntax is described using the
+         BITS construct, the value is encoded as an OCTET STRING, in
+         which all the named bits in (the definition of) the bitstring,
+         commencing with the first bit and proceeding to the last bit,
+         are placed in bits 8 (high order bit) to 1 (low order bit) of
+         the first octet, followed by bits 8 to 1 of each subsequent
+         octet in turn, followed by as many bits as are needed of the
+         final subsequent octet, commencing with bit 8.  Remaining bits,
+         if any, of the final octet are set to zero on generation and
+         ignored on receipt.
+ </pre>
+
+<a name="embedded"></a> <h2>embedded perl</h2>
+<pre> Add the following line to snmpd.conf:
+ 
+   perl do "/path/to/perl_module.pl"
+
+
+To test:
+
+1) Try staring up snmpd, like so: 'snmpd -Dperl'. Check your log files for:
+
+  perl: initializing perl (/tmp/snmp_perl.pl)
+  starting perl_module.pl
+  perl_module.pl loaded ok
+  registering at netSnmp.999
+
+If you get:
+
+  perl: initializing perl (/usr/local/share/snmp/snmp_perl.pl)
+  Can't open perl script "/usr/local/share/snmp/snmp_perl.pl": No such file or directory
+  embedded perl support failed to initalize
+
+Then you need to locate snmp_perl.pl, and put it in the correct path, OR put
+the path in your snmpd.conf:
+
+	perlInitFile /tmp/snmp_perl.pl
+
+
+2) Once it's loaded ok, try a walk:
+
+	snmpwalk -v2c -c public localhost netSnmp.999
+
+You should see something like this in your logs:
+
+ refs: NetSNMP::agent::netsnmp_mib_handler, NetSNMP::agent::reginfo, NetSNMP::agent::netsnmp_agent_request_info, NetSNMP::agent::netsnmp_request_infoPtr
+processing a request of type 161
+   processing request of nsTransactionEntry.3
+    .1.3.6.1.4.1.8072.999.1.2.1 -> hello world
+   finished processing
+
+3) If not, maybe check /path/to/perl_module.pl and make sure it is executable.
+
+Hope that helps.
+
+ </pre>
+
+<a name="smux"></a> <h2>SMUX</h2>
+<pre> To turn off SMUX when you don't have the options of recompiling from source
+to disable SMUX support, you have to give it an invalid IP address to bind
+to. This may be OS specific. On Linux, if I put this in my snmpd.conf:
+
+	smuxsocket 1.0.0.0
+
+I get an error at startup, and lsof or netstat show that snmpd is no longer
+listenting on port 199. If you get and error message about the smuxsocket
+token not being recongnized, then you're out of luck. You'll have to recompile
+from source (or just use local firewall rules to block connections to port
+199).
+ </pre>
+
+<a name="entid"></a> <h2>Enterprise OID</h2>
+<pre> From: Dave Shield, RObert Story
+
+Recent Versions (5.x)
+---------------------
+If you want to *just* change the sysObjectID numbering,
+(and leave the notifications using the Net-SNMP enterprise OID)
+then use  --with-enterprise-sysoid
+Or you could just use the snmpd.conf directive 'sysobjectid'
+to set this at run time.
+
+
+If you want to *just* change enterprise-specific notification OID
+(and leave the sysObjectID using the Net-SNMP values)
+then use  --with-enterprise-notification-oid
+
+
+If you want to change *both* of these,
+then use --with-enterprise-oid
+
+Older Versions (4.2.x)
+----------------------
+In older version, you have to manuall update the version_id in
+agent/agent_trap.c:80
+
+   oid version_id[]    = { EXTENSIBLEMIB, AGENTID, OSTYPE };
+
+ </pre>
+
+<a name="autodeps"></a> <h2>Automatic dependencies</h2>
+<pre> For auto-dependencies, add the following to your Makefile:
+
+#
+# Build rules
+#
+%.d : %.c
+	@echo "Generating makefile $@ ..."
+	@set -e; $(CC) -M $(COPTS) $(CFLAGS) $(CPPFLAGS) $< \
+	| sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \
+	[ -s $@ ] || $(RM) $(RMFLAGS) $@
+
+include $(SOURCES:.c=.d)
+
+ </pre>
+
+<a name="cross"></a> <h2>Cross compiling</h2>
+<pre> From the net-snmp INSTALL file:
+
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on.  Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+     CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+   If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+The most important configure options are:
+
+	--with-cc=[cross-compiler]
+	--with-ld=[cross-linker]
+	--target=[target-environment]
+	--with-endianness=[big|little]
+
+Other potentially useful options:
+
+	--with-cflags="..."
+	--with-ldlags="..."
+	--with-ar=/path/ar
+
+	--enable-mini-agent
+	--enable-shared="no"
+	--without-pic
+
+Two simple examples of cross-compiling:
+
+./configure --target=ppc-linux --with-cc=ppc_405-gcc --with-endianness=big
+
+./configure --target=powerpc-snmc-linux-gnu --build=i386-redhat-linux \
+        --with-endianness=big
+
+A more complex example involves setting environment variables for all
+the flags for the tools needed for the cross compile:
+
+   export TOOLPATH=/opt/hardhat/devkit/ppc/405
+   export PATH=$TOOLPATH/bin:$PATH
+   export CFLAGS=' -g -fPIC -msoft-float -D_SOFT_FLOAT -Dlinux -mcpu=403'
+   export CPPFLAGS='-I$TOOLPATH/include -I$TOOLPATH/target/usr/include'
+   export ASFLAGS='-g -gstabs'
+   export LDFLAGS='-Wl,-soname,-Bdynamic -lc' 
+   export LIB='ar rcu' 
+
+   ./configure --build=i686-pc-linux-gnu  --host=powerpc \
+           --target=powerpc-hardhat-linux-gnu --with-endianness=big
+
+
+
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+The mibgroup section is the most OS specific part of the agent. It's likely
+that you will have to remove some of them. You just need to figure out which
+ones to remove. 
+
+For example, agent/mibgroup/mibII/tcpTable.c is a common module that doesn't
+work on new platforms. So if it isn't working, omit it during configure, like
+so:
+
+	./configure --with-out-mib-modules=mibII/tcpTable
+
+
+Alternatively, you could work the other way. Start with a minimal
+configuration:
+
+	./configure --enable-mini-agent
+
+and then start adding MIB modules one-by-one:
+
+	./configure --enable-mini-agent
+                    --with-mib-modules=mibII/system_mib,mibII/sysORTable
+
+
+ </pre>
+
+<a name="static"></a> <h2>Static linking</h2>
+<pre> mXaureliu: I want to compile the 5.1 snmptrapd binary with statically linked libraries.. Can anyone help me with this? Is it just a simple configure switch
+rstory: mXaureliu: you want static snmp libraries, or totally static (system libraries too)?
+mXaureliu: totally static.. everything in one executable
+mXaureliu: actually, how do i do both ways?
+rstory: for snmp libs, try 'configure --enable-shared=no'.. that won't build the shared libraries
+rstory: (though if you have previous versions of net-snmp libraries installed, the linker might pick those up and try and use them)
+rstory: for totally static, you'll have to tweak the Makefile
+rstory: add -Bstatic to LDFLAGS
+
+[note: actually, for totally static, 'configure --with-ldflags=-Bstatic']
+ </pre>
+
+<a name="readfds"></a> <h2>readfds</h2>
+<pre> > can you please tell me the meaning of the third argument. obviously the 
+> first parameter to register_readfd is a file descriptor and second is the 
+> callback function.
+
+Correct.
+The third parameter is arbitrary data that you can specify when you
+register the file descriptor, and will then be passed to the callback
+function when it's invoked.
+
+
+So if you were listening on two separate sockets, for very similar
+types of data, then you could use the same callback for both and
+use this third parameter to distinguish between them:
+
+
+	fd1 = open( "/proc/tweedledum" );
+	fd2 = open( "/proc/tweedledee" );
+
+	register_readfd( fd1, who_broke_the_rattle(), "tweedledee" );
+	register_readfd( fd2, who_broke_the_rattle(), "tweedledum" );
+
+
+void
+who_broke_the_rattle( int fd, void *data )
+{
+    char *he_did = (char *)data;
+
+    printf("%s broke the rattle!\n", he_did );
+}
+
+ </pre>
+
+<a name="sharing"></a> <h2>sharing data</h2>
+<pre> If two modules are compiled into the same agent/subagent, then just use a
+normal C global var. No need to involve net-snmp in the process.
+
+if they are different sub-agents, you are better off using tradition IPC
+mechanisms. there is no net-snmp api for sharing data between subagents.
+
+That said, *IF* you only need the data during processing of GET requests, or
+when you aren't processing a request at all, you send a snmp request to the
+master, which will query the other subagent. If you are processing a GET
+request and are compiled into the master, you will have to delegate the
+current request).
+
+It's a little inefficient, compared to direct communication w/the other
+subagent and it *will not* work during set processing.
+ </pre>
+
+<a name="tokens"></a> <h2>Debug Tokens</h2>
+<pre> Some of the more common ones are:
+
+   Agent: agent, agentx, dlmod, handler, helper, snmpd, trap, table
+   MIBs: init_mib, mib_init, parse-file, parse-mibs
+   Apps: read_config
+
+Add them to your snmp.conf like so:
+
+   # optionally turn on time stamps
+   logTimestamp true
+   doDebugging 1
+   debugTokens agentx/config
+
+If you put them in a different conf file, like snmpd.conf or myapp.conf,
+prefix each with '[snmp]', like so:
+
+   [snmp] doDebugging 1
+
+
+This list was generated by running the following command in the main CVS branch:
+
+find . -name \"*.c\" -print | xargs grep DEBUGMSGT | grep \" | cut -f 2 -d\" | sort -u
+
+add
+agent_handler
+agent_registry
+agent_set
+agentx
+agentx_build
+agentx_build_varbind
+agentx/config
+agentx/config/retries
+agentx/config/timeout
+agentx/master
+agentx/subagent
+agentx/subgaent
+asn_realloc
+auto_nlist
+build_oid_noalloc
+build_oid_segment
+callback
+callback_clear
+check_getnext_results
+clear_nsap_list
+compare:index
+comparex
+container
+container_iterator
+container_iterator:results
+container:null:
+container:null:find
+container:null:find_next
+container:null:for_each
+container:null:free
+container:null:get_null
+container:null:get_null_factory
+container:null:get_null_noalloc
+container:null:insert
+container:null:remove
+container:null:size
+container_registry
+daemonize
+deinit_usm_post_config
+delayed_instance
+dlmod
+dump_etimelist
+encode_keychange
+example
+example_data_set
+example_notification
+example_scalar_int
+fixup_mib_directory
+generate_Ku
+generate_kul
+get_mib_directory
+handler:calling
+handler:inject
+handler::register
+handler_registry
+handler:returned
+header_complex
+header_complex_add_data
+header_complex_dump
+header_complex_extract_entry
+header_complex_generate_oid
+header_complex_generate_varoid
+header_complex_parse_oid
+header_complex_test
+helper:baby_steps
+helper:cache_handler
+helper:debug
+helper:instance
+helper:mfd
+helper:null
+helper:read_only
+helper:row_merge
+helper:scalar
+helper:scalar_group
+helper:serialize
+helper:stash_cache
+helper:table
+helper:watcher
+helper:watcher:spinlock
+helper:watcher:timestamp
+host/hr_device
+host/hr_disk
+host/hr_filesys
+host/hr_inst
+host/hr_network
+host/hr_partition
+host/hr_print
+host/hr_proc
+host/hr_storage
+host/hr_swinst
+host/hr_swrun
+host/hr_swrun::GetNextHR_SWRun
+host/hr_system
+hr_proc
+initialize_table_ipCidrRouteTable
+initialize_table_mteEventNotificationTable
+initialize_table_mteEventTable
+initialize_table_netSnmpHostsTable
+initialize_table_nlmLogTable
+initialize_table_nlmLogVariableTable
+initialize_table_nsModuleTable
+initialize_table_nsTransactionTable
+init_mib
+init_usm
+injectHandler
+kernel_sunos5
+ksm
+lcd_get_enginetime
+lcd_get_enginetime_ex
+lcd_set_enginetime
+log_notification
+md5
+mfd
+mibII/at
+mibII/icmp
+mibII/interfaces
+mibII/ip
+mibII/ipv6
+mibII/mta_sendmail.c:mta_sendmail_parse_config
+mibII/mta_sendmail.c:open_sendmailst
+mibII/mta_sendmail.c:read_sendmailcf
+mibII/snmp_mib
+mibII/sysORTable
+mibII/tcpScalar
+mibII/tcpTable
+mibII/udpScalar
+mibII/udpTable
+mibII/vacm_vars
+mibII/var_route
+mib_init
+mte_disco
+mteEventTable:send_events
+mteObjectsTable
+mteTriggerBooleanTable
+mteTriggerDeltaTable
+mteTriggerExistenceTable
+mteTriggertable
+mteTriggerTable
+mteTriggerTest
+mteTriggerTest:send_mte_trap
+mteTriggerThresholdTable
+netsnmp_aal5pvc
+netsnmp_agent_check_packet
+netsnmp_deregister_agent_nsap
+netsnmp_ds_handle_config
+netsnmp_ds_set_boolean
+netsnmp_ds_set_int
+netsnmp_ds_set_string
+netsnmp_ds_set_void
+netsnmp_ds_toggle_boolean
+netsnmp_instance_counter32_handler
+netsnmp_instance_int_handler
+netsnmp_instance_long_handler
+netsnmp_instance_ulong_handler
+netsnmp_ipx
+netsnmp_register_agent_nsap
+netsnmp_register_mib_table_row
+netsnmp_sockaddr_in
+netsnmp_sockaddr_in6
+netsnmp_sockaddr_ipx
+netsnmp_table_data_set
+netsnmp_tcp
+netsnmp_tcp6
+netsnmp_udp
+netsnmp_udp6
+netsnmp_udp6_getSecName
+netsnmp_udp6_parse_security
+netsnmp_udp_getSecName
+netsnmp_udp_parse_security
+netsnmp_unix
+netsnmp_unix_getSecName
+netsnmp_unix_parse_security
+netsnmp_unix_transport
+netstat:if
+notification_log
+nsCacheScalars
+nsDebugScalars
+object_monitor
+old_api
+output
+override
+parse-file
+parse-mibs
+parse_oid
+parse_oid_indexes
+perl
+proc
+proxy
+proxy_args
+proxy_config
+proxy_init
+read_config
+read_config_copy_word
+read_config_files
+read_config:forward
+read_config:initmib
+read_config_read_data
+read_config_read_memory
+read_config_read_objid
+read_config_read_octet_string
+read_config_store_data_prefix
+read_config:traphandle
+register_exceptfd
+register_index
+register_mib
+register_readfd
+register_signal
+register_writefd
+report
+results
+scalar_int
+scapi
+scopedPDU_parse
+send_notifications
+sess_async_send
+_sess_open
+sess_process_packet
+sess_read
+sess_resend
+sess_select
+setting auth type: \
+signal
+smux
+smux_conf
+smux_init
+smux/snmp_bgp
+smux/snmp_ospf
+smux/snmp_rip2
+snmp_agent
+snmp_alarm
+snmp_api
+snmp_build
+snmp_clean_persistent
+snmp_config
+snmpd
+snmpd/main
+snmpd_ports
+snmpd_register_app_config_handler
+snmpd/select
+snmpEngine
+snmpNotifyFilterProfileTable
+snmpNotifyFilterTable
+snmpNotifyTable
+snmp_parse
+snmp_parse_args
+snmp_parse_oid
+snmp_pdu_realloc_rbuild
+snmp_save_persistent
+snmp_send
+snmp_sess_add
+snmp_sess_close
+snmp_sess_open
+snmpSetSerialNo
+snmp_store
+snmpTargetAddrEntry
+snmpTargetParamsEntry
+snmptrapd
+snmpv3
+snmpv3_parse
+sprint_by_type
+stash_cache
+subtree
+table_array
+table_array:get
+table_array:group
+table_data_add_data
+table_iterator
+table_set_add_row
+take_snapshot
+target_counters
+target_sessions
+tdomain
+testhandler
+testhandler_table
+transport_callback
+trap
+trapsess
+tunnel
+ucdDemoPublic
+ucd-snmp/disk
+ucd-snmp/disk:
+ucd-snmp/memory
+ucd-snmp/pass
+ucd-snmp/pass_persist
+ucd-snmp/proc
+ucd-snmp/versioninfo
+ucd-snmp/vmstat_aix4.c:update_stats
+ucd-snmp/vmstat_dynix.c:update_stats
+ucd-snmp/vmstat_hpux.c:update_stats
+ucd-snmp/vmstat_solaris2.c:update_stats
+unlink_tree
+unload-mib
+unregister_exceptfd
+unregister_readfd
+unregister_signal
+unregister_writefd
+usm
+usmUser
+util_funcs
+vacm:checkSubtree
+vacm:getView
+versioninfo
+vmstat
+yyyinjectHandler
+ </pre>
+
+<a name="steps"></a> <h2>Baby Steps Flow</h2>
+<pre>     /**
+     * Baby Steps Flow diagram (rev 2003.09.29.1330)
+     *
+     * Legend: (test) [optional] &lt;required>
+     *
+     * OLD              NEW
+     * ========  ============================================
+     * +++           [pre_request]
+     *                    |
+     *               (row exists?) N ->(row_creation) N >-->+
+     *                    |                   | Y           |
+     *                    |&lt;------------------+             |
+     *                   \|/                               \|/
+     * RESERVE1  &lt;object_syntax_checks>                     |
+     *                    |                                 | 
+     *                  (err?)  Y >------------------------>+
+     *                    |                                 |
+     *                   \|/                               \|/
+     * +++          (row existed?) N --->[row_creation]     |
+     *                    |                   |             |
+     *                    |&lt;--------------N (err?)          |
+     *                    |                   | Y           |
+     *                    |                   |             |
+     *                    |       [row_creation_cleanup]--->+
+     *                   \|/                                |
+     * RESERVER2     [undo_setup]                           |
+     *                    |                                 |
+     *                  (err?)  Y --->-------->--------->+  |
+     *                    |                              | \|/
+     * ACTION        &lt;set_values>                        |  |
+     *                    |                              |  |
+     *                  (err?)  Y >---------+           \|/ |
+     *                    |                 |            |  |
+     * +++        [consistency_checks]      |            |  |
+     *                    |                \|/           |  |
+     * UNDO             (err?)  Y >-------[undo]-------->+  |
+     *                    |                              |  |
+     *            [reversible_commit]                    |  |
+     * +++                |                              | \|/
+     *                  (err?)  Y >--[reverse_commit]    |  |
+     *                    |              |               |  |
+     * COMMIT        &lt;final_commit>      |               |  |
+     *                    |              |               |  |
+     *                  (err?)  Y >--[log msg]           |  |
+     *                    |              |               |  |
+     *                    |             \|/             \|/ |
+     *                    | &lt;-----------&lt;+---&lt;-----------+  |
+     *                   \|/                                |
+     * FREE          [undo_cleanup]                         |
+     *                    |                                \|/
+     *                    |&lt;--------------&lt;-----------------+
+     *                   \|/
+     *               [post_request]
+     */
+ </pre>
+
+<hr>
+<table width="100%">
+<tr><td align=left>
+<br>Page
+<!-- Created: Thu Jul 24 10:08:26 MET DST 1997 -->
+<!-- hhmts start -->
+Last modified: Wed Mar 12 13:49:32 PST 2003
+<!-- hhmts end -->
+</td><td align=right>
+<br>Powered by:
+<A href="http://sourceforge.net">
+      <IMG src="http://sourceforge.net/sflogo.php?group_id=12694&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></A>
+
+</td></tr></table>
+  </body>
+</html>
diff --git a/win32/dist/htmlhelp/FAQ.html b/win32/dist/htmlhelp/FAQ.html
new file mode 100644
index 0000000..1635ace
--- /dev/null
+++ b/win32/dist/htmlhelp/FAQ.html
@@ -0,0 +1,3375 @@
+<body bgcolor="#ffffff" background="ucd-snmp-bg3.gif">
+<title>NET-SNMP FAQ</title>
+<div align=center>
+<h1>Frequently Asked Questions (FAQ) for the Net-SNMP package</h1>
+FAQ Maintainer: Dave Shield<br>
+Email: <a href="mailto:net-snmp-coders@lists.sourceforge.net">net-snmp-coders@list.sourceforge.net</a><br>
+</div>
+<hr>
+<h2>Table of Contents</h2>
+</ul><li><b>GENERAL</b><ul>
+<li> <a href="#What_is_it_">What is it?</a>
+<li> <a href="#Where_can_I_get_it_">Where can I get it?</a>
+<li> <a href="#What_documentation_is_available_">What documentation is available?</a>
+<li> <a href="#Are_there_binaries_available_">Are there binaries available?</a>
+<li> <a href="#What_s_the_difference_between_UCD_SNMP_and_Net_SNMP_">What's the difference between UCD-SNMP and Net-SNMP?</a>
+<li> <a href="#What_operating_systems_does_it_run_on_">What operating systems does it run on?</a>
+<li> <a href="#What_happens_if_mine_isn_t_listed_">What happens if mine isn't listed?</a>
+<li> <a href="#Does_it_run_on_Windows_">Does it run on Windows?</a>
+<li> <a href="#How_do_I_find_out_about_new_releases_">How do I find out about new releases?</a>
+<li> <a href="#How_can_I_find_out_what_other_people_are_doing_">How can I find out what other people are doing?</a>
+<li> <a href="#How_do_I_submit_a_patch_or_bug_report_">How do I submit a patch or bug report?</a>
+<li> <a href="#Can_I_reuse_the_code_in_my_commercial_application_">Can I reuse the code in my commercial application?</a>
+<li> <a href="#What_s_the_difference_between_SNMPv___SNMPv__and_SNMPv__">What's the difference between SNMPv1, SNMPv2 and SNMPv3?</a>
+<li> <a href="#What_are_all_these_different_SNMPv__s_anyway_">What are all these different SNMPv2's anyway?</a>
+<li> <a href="#Which_versions_of_SNMP_are_supported_in_this_package_">Which versions of SNMP are supported in this package?</a>
+<li> <a href="#Can_I_use_SNMPv__requests_with_an_SNMPv__MIB__or_vice_versa__">Can I use SNMPv1 requests with an SNMPv2 MIB (or vice versa)?</a>
+<li> <a href="#Where_can_I_find_more_information_about_network_management_">Where can I find more information about network management?</a>
+<li> <a href="#Is_ucd_snmp_thread_safe_">Is ucd-snmp thread safe?</a>
+</ul><li><b>APPLICATIONS</b><ul>
+<li> <a href="#How_do_I_add_a_MIB_">How do I add a MIB?</a>
+<li> <a href="#How_do_I_add_a_MIB_to_the_tools_">How do I add a MIB to the tools?</a>
+<li> <a href="#Why_can_t_I_see_anything_from_the_agent_">Why can't I see anything from the agent?</a>
+<li> <a href="#Why_can_t_I_see_values_in_the__INSERT_ENTERPRISE_HERE__tree_">Why can't I see values in the <INSERT ENTERPRISE HERE> tree?</a>
+<li> <a href="#Requests_always_seem_to_timeout__and_don_t_give_me_anything_back___Why_">Requests always seem to timeout, and don't give me anything back.  Why?</a>
+<li> <a href="#I_can_see_the_system_group__but_nothing_else___Why_">I can see the system group, but nothing else.  Why?</a>
+<li> <a href="#The_agent_worked_for_a_while__then_stopped_responding___Why_">The agent worked for a while, then stopped responding.  Why?</a>
+<li> <a href="#Requesting_an_object_fails_with__Unknown_Object_Identifier___Why_">Requesting an object fails with "Unknown Object Identifier"  Why?</a>
+<li> <a href="#Why_do_I_get__noSuchName__when_asking_for__sysUpTime___or_similar__">Why do I get "noSuchName" when asking for "sysUpTime" (or similar)?</a>
+<li> <a href="#Why_do_I_sometimes_get__End_of_MIB__when_walking_a_tree__and_sometimes_not_">Why do I sometimes get "End of MIB" when walking a tree, and sometimes not?</a>
+<li> <a href="#I_cannot_set_any_variables_in_the_MIB_">I cannot set any variables in the MIB.</a>
+<li> <a href="#Variables_seem_to_disappear_when_I_try_to_set_them___Why_">Variables seem to disappear when I try to set them.  Why?</a>
+<li> <a href="#I_still_can_t_change_sysLocation__though_the_access_settings_allow">I still can't change sysLocation, though the access settings allow</a>
+<a href="#I_still_can_t_change_sysLocation__though_the_access_settings_allow">       it.  Why not?</a>
+<li> <a href="#I_get_an_error_when_trying_to_set_a_negative_value___why_">I get an error when trying to set a negative value - why?</a>
+<li> <a href="#I_get_an_error_when_trying_to_get_a_string_indexed_table_value___why_">I get an error when trying to get a string-indexed table value - why?</a>
+<li> <a href="#How_do_I_send_traps_and_notifications_">How do I send traps and notifications?</a>
+<li> <a href="#How_do_I_handle_traps_and_notifications_">How do I handle traps and notifications?</a>
+<li> <a href="#My_traphandler_script_doesn_t_work_when_run_like_this___why_not_">My traphandler script doesn't work when run like this - why not?</a>
+<li> <a href="#The_ucdShutdown_trap_OID_received_by_my_manager_is_wrong__Why_">The ucdShutdown trap OID received by my manager is wrong. Why?</a>
+<li> <a href="#Why_does_snmptrapd_complain_about_AgentX_">Why does snmptrapd complain about AgentX?</a>
+<li> <a href="#How_do_I_use_SNMPv__">How do I use SNMPv3?</a>
+<li> <a href="#How_big_can_an_SNMP_request__or_reply__be_">How big can an SNMP request (or reply) be?</a>
+<li> <a href="#How_can_I_monitor_my_systems__disk__memory__etc__">How can I monitor my systems (disk, memory, etc)?</a>
+<li> <a href="#Applications_complain_about_entries_in_your_example__snmp_conf__file___Why_">Applications complain about entries in your example 'snmp.conf' file.  Why?</a>
+<li> <a href="#OK__what_should_I_put_in_snmp_conf_">OK, what should I put in snmp.conf?</a>
+</ul><li><b>PERL</b><ul>
+<li> <a href="#Where_can_I_get_the_perl_SNMP_package_">Where can I get the perl SNMP package?</a>
+<li> <a href="#How_do_I_install_the_Perl_SNMP_modules_">How do I install the Perl SNMP modules?</a>
+<li> <a href="#But_compiling_this_fails__Why_">But compiling this fails! Why?</a>
+<li> <a href="#Compiling_the_perl_module_works_OK__but__make_test__fails__Why_">Compiling the perl module works OK, but 'make test' fails. Why?</a>
+<li> <a href="#The_perl__make_test__fails_on_the_OID_tests__Is_it_safe_to_continue_">The perl 'make test' fails on the OID tests. Is it safe to continue?</a>
+<li> <a href="#I_m_trying_to_use_mib_c__or_tkmib__and_it_can_t_locate_SNMP_pm_">I'm trying to use mib2c (or tkmib) and it can't locate SNMP.pm?</a>
+<li> <a href="#I_m_trying_to_use_mib_c__or_tkmib__and_it_can_t_load_SNMP_so_">I'm trying to use mib2c (or tkmib) and it can't load SNMP.so?</a>
+<li> <a href="#I_m_trying_to_use_tkmib_and_it_can_t_locate_Tk_pm_">I'm trying to use tkmib and it can't locate Tk.pm?</a>
+<li> <a href="#I_ve_got_a_problem_with_the_Net_SNMP_module___Can_you_help_">I've got a problem with the Net-SNMP module.  Can you help?</a>
+</ul><li><b>MIBS</b><ul>
+<li> <a href="#Where_can_I_find_a_MIB_compiler_">Where can I find a MIB compiler?</a>
+<li> <a href="#I_can_t_load_any_of_the_mib_files__and_they_seem_to_be_missing">I can't load any of the mib files, and they seem to be missing</a>
+<a href="#I_can_t_load_any_of_the_mib_files__and_they_seem_to_be_missing">       the first two characters of the filename.  What's happening?</a>
+<li> <a href="#Why_aren_t_my_mib_files_being_read_in_">Why aren't my mib files being read in?</a>
+<li> <a href="#I_m_getting_answers__but_they_re_all_numbers__Why_">I'm getting answers, but they're all numbers. Why?</a>
+<li> <a href="#What_does__Cannot_find_module__XXX_MIB___mean_">What does "Cannot find module (XXX-MIB)" mean?</a>
+<li> <a href="#What_about__unlinked_OID__">What about "unlinked OID"?</a>
+<li> <a href="#The_parser_doesn_t_handle_comments_properly__Why_not_">The parser doesn't handle comments properly. Why not?</a>
+<li> <a href="#How_do_I_replace_MIB_values_with_new_ones_">How do I replace MIB values with new ones?</a>
+<li> <a href="#How_can_I_get_more_information_about_these_MIB_file_problems_">How can I get more information about these MIB file problems?</a>
+<li> <a href="#What_s_this_about__too_many_imported_symbols__">What's this about "too many imported symbols"?</a>
+</ul><li><b>AGENT</b><ul>
+<li> <a href="#What_MIBs_are_supported_">What MIBs are supported?</a>
+<li> <a href="#What_protocols_are_supported_">What protocols are supported?</a>
+<li> <a href="#How_do_I_configure_the_agent_">How do I configure the agent?</a>
+<li> <a href="#How_do_I_add_a_MIB_to_the_agent_">How do I add a MIB to the agent?</a>
+<li> <a href="#What_s_the_difference_between__exec____sh__and__pass__">What's the difference between 'exec', 'sh' and 'pass'?</a>
+<li> <a href="#What_s_the_difference_between_AgentX__SMUX_and_proxied_SNMP_">What's the difference between AgentX, SMUX and proxied SNMP?</a>
+<li> <a href="#What_about__dlmod____what_s_that_about_">What about 'dlmod' - what's that about?</a>
+<li> <a href="#Which_should_I_use_">Which should I use?</a>
+<li> <a href="#Can_I_use_AgentX_when_running_under_Windows_">Can I use AgentX when running under Windows?</a>
+<li> <a href="#How_can_I_run_AgentX_with_a_different_socket_address_">How can I run AgentX with a different socket address?</a>
+<li> <a href="#How_can_I_combine_two_copies_of_the__mib___tree_from_separate_subagents_">How can I combine two copies of the 'mib2' tree from separate subagents?</a>
+<li> <a href="#What_traps_are_sent_by_the_agent_">What traps are sent by the agent?</a>
+<li> <a href="#Where_are_these_traps_sent_to_">Where are these traps sent to?</a>
+<li> <a href="#How_can_I_send_a_particular_trap_to_selected_destinations_">How can I send a particular trap to selected destinations?</a>
+<li> <a href="#Why_does_calling__send_v_trap__generate_an_SNMPv__trap__or_vice_versa__">Why does calling 'send_v2trap' generate an SNMPv1 trap (or vice versa)?</a>
+<li> <a href="#When_I_run_the_agent_it_runs_and_then_quits_without_staying_around__Why_">When I run the agent it runs and then quits without staying around. Why?</a>
+<li> <a href="#After_a_while_the_agent_stops_responding__and_starts_eating_CPU_time___Why_">After a while the agent stops responding, and starts eating CPU time.  Why?</a>
+<li> <a href="#How_can_I_stop_other_people_getting_at_my_agent_">How can I stop other people getting at my agent?</a>
+<li> <a href="#How_can_I_listen_on_just_one_particular_interface_">How can I listen on just one particular interface?</a>
+<li> <a href="#How_do_I_configure_access_control_">How do I configure access control?</a>
+<li> <a href="#I_don_t_understand_the_new_access_control_stuff___what_does_it_mean_">I don't understand the new access control stuff - what does it mean?</a>
+<li> <a href="#How_do_I_configure_SNMPv__users_">How do I configure SNMPv3 users?</a>
+<li> <a href="#The__createUser__line_disappears_when_I_start_the_agent___Why_">The 'createUser' line disappears when I start the agent.  Why?</a>
+<li> <a href="#What_s_the_difference_between__var_ucd_snmp_and__usr_local_share_snmp_">What's the difference between /var/ucd-snmp and /usr/local/share/snmp?</a>
+<li> <a href="#My_new_agent_is_ignoring_the_old_snmpd_conf_file__Why_">My new agent is ignoring the old snmpd.conf file. Why?</a>
+<li> <a href="#Why_am_I_getting__Connection_refused__">Why am I getting "Connection refused"?</a>
+<li> <a href="#I_m_getting_errors_about__bad_security_model____why_">I'm getting errors about "bad security model" - why?</a>
+<li> <a href="#I_m_getting_errors_about__bad_prefix_match_parameter____why_">I'm getting errors about "bad prefix match parameter" - why?</a>
+<li> <a href="#Why_can_t_I_see_values_in_the_UCDavis__extensible__or__disk__trees_">Why can't I see values in the UCDavis 'extensible' or 'disk' trees?</a>
+<li> <a href="#Why_can_t_I_see_values_in_the_UCDavis__memory__or__vmstat__tree_">Why can't I see values in the UCDavis 'memory' or 'vmstat' tree?</a>
+<li> <a href="#What_do_the_CPU_statistics_mean___is_this_the_load_average_">What do the CPU statistics mean - is this the load average?</a>
+<li> <a href="#How_do_I_get_percentage_CPU_utilization_using_ssCpuRawIdle_">How do I get percentage CPU utilization using ssCpuRawIdle?</a>
+<li> <a href="#What_about_multi_processor_systems_">What about multi-processor systems?</a>
+<li> <a href="#The_speed_type_of_my_network_interfaces_is_wrong___how_can_I_fix_it_">The speed/type of my network interfaces is wrong - how can I fix it?</a>
+<li> <a href="#The_interface_statistics_for_my_subinterfaces_are_all_zero___why_">The interface statistics for my subinterfaces are all zero - why?</a>
+<li> <a href="#What_does__klread___bad_address__mean_">What does "klread:  bad address" mean?</a>
+<li> <a href="#What_does__nlist_err___wombat_not_found___or_similar__mean_">What does "nlist err:  wombat not found" (or similar) mean?</a>
+<li> <a href="#How_about__Can_t_open__dev_kmem__">How about "Can't open /dev/kmem"?</a>
+<li> <a href="#The_agent_is_complaining_about__snmpd_conf____Where_is_this_">The agent is complaining about 'snmpd.conf'.  Where is this?</a>
+<li> <a href="#The_system_uptime__sysUpTime__returned_is_wrong_">The system uptime (sysUpTime) returned is wrong!</a>
+<li> <a href="#How_can_I_reduce_the_memory_footprint_">How can I reduce the memory footprint?</a>
+</ul><li><b>COMPILING</b><ul>
+<li> <a href="#How_do_I_compile_with__cc__instead_of__gcc__">How do I compile with 'cc' instead of 'gcc'?</a>
+<li> <a href="#But_gcc_doesn_t_compile_it_successfully_on_my_new_Solaris_system__Why_not_">But gcc doesn't compile it successfully on my new Solaris system. Why not?</a>
+<li> <a href="#On_RedHat_____or_up_I_get___usr_bin_ld__cannot_find__lelf___Why_">On RedHat 8.0 or up I get "/usr/bin/ld: cannot find -lelf". Why?</a>
+<li> <a href="#I_m_getting_an_error__autoheader__not_found____what_s_wrong_">I'm getting an error "autoheader: not found" - what's wrong?</a>
+<li> <a href="#What_about_a_failed_dependency_on__libcrypto____Where_can_I_get_that_">What about a failed dependency on 'libcrypto'?  Where can I get that?</a>
+<li> <a href="#Why_is_the_project_workspace_empty_under_Visual_C___">Why is the project workspace empty under Visual C++?</a>
+<li> <a href="#Why_does__make_test__skip_five_tests_">Why does 'make test' skip five tests?</a>
+<li> <a href="#Why_does__make_test__complain_about_a_pid_file_">Why does 'make test' complain about a pid file?</a>
+</ul><li><b>CODING</b><ul>
+<li> <a href="#How_do_I_write_C_code_to_integrate_with_the_agent_">How do I write C code to integrate with the agent?</a>
+<li> <a href="#How_does_the_agent_fetch_the_value_of_a_variable_from_the_system_">How does the agent fetch the value of a variable from the system?</a>
+<li> <a href="#Mib_c_complains_about_a_missing__mib_reference____what_does_this_mean_">Mib2c complains about a missing "mib reference" - what does this mean?</a>
+<li> <a href="#Mib_c_complains_about_not_having_a__valid_OID____what_does_this_mean_">Mib2c complains about not having a "valid OID" - what does this mean?</a>
+<li> <a href="#Why_doesn_t_Mib_c_like_the_MIB_file_I_m_giving_it_">Why doesn't Mib2c like the MIB file I'm giving it?</a>
+<li> <a href="#Mib_c_ignores_my_MIB_and_generates_a_pair_of__mib____code_files___Why_">Mib2c ignores my MIB and generates a pair of 'mib-2' code files.  Why?</a>
+<li> <a href="#Mib_c_complains_about__configuration_files___What_s_this_for_">Mib2c complains about "configuration files". What's this for?</a>
+<li> <a href="#Which_mib_c_configuration_file_should_I_use_">Which mib2c configuration file should I use?</a>
+<li> <a href="#How_can_I_have_Mib_c_generate_code_for_both_scalars_and_tables_">How can I have Mib2c generate code for both scalars and tables?</a>
+<li> <a href="#Are_there_any_examples__or_documentation_">Are there any examples, or documentation?</a>
+<li> <a href="#I_ve_created_a_new_module_with__mib_c__but_it_doesn_t_work___Why_not_">I've created a new module with 'mib2c' but it doesn't work.  Why not?</a>
+<li> <a href="#Where_should_I_put_the_files_produced_by__mib_c__">Where should I put the files produced by 'mib2c'?</a>
+<li> <a href="#Mib_c_only_handles_a_single_table_in_my_MIB__How_can_I_fix_this_">Mib2c only handles a single table in my MIB. How can I fix this?</a>
+<li> <a href="#How_can_I_support_a_large_table__with_more_than_____column_objects_">How can I support a large table, with more than 256 column objects?</a>
+<li> <a href="#How_can_I_get_the_agent_to_generate_a_trap__or_inform__">How can I get the agent to generate a trap (or inform)?</a>
+<li> <a href="#What_if_I_m_using_an_AgentX_sub_agent_instead_">What if I'm using an AgentX sub-agent instead?</a>
+</ul><li><b>MISC</b><ul>
+<li> <a href="#Why_are_packets_requesting_the_same_information_larger_with_UC_Davis_SNMP_">Why are packets requesting the same information larger with UC-Davis SNMP?</a>
+<li> <a href="#What_ASN___parser_is_used_">What ASN.1 parser is used?</a>
+<li> <a href="#What_is_the_Official_Slogan_of_the_net_snmp_coders_list_">What is the Official Slogan of the net-snmp-coders list?</a>
+</ul><hr><pre>
+
+<a name="GENERAL">
+GENERAL
+=======
+
+<a name="What_is_it_">
+What is it?
+----------
+
+  - Various tools relating to the Simple Network Management Protocol
+    including:
+
+	* An extensible agent
+	* An SNMP library
+	* tools to request or set information from SNMP agents
+	* tools to generate and handle SNMP traps
+	* a version of the unix 'netstat' command using SNMP
+	* a graphical Perl/Tk/SNMP based mib browser
+
+    This package is originally based on the Carnegie Mellon University
+    SNMP implementation (version 2.1.2.1), but has developed significantly
+    since then.
+
+
+
+<a name="Where_can_I_get_it_">
+Where can I get it?
+------------------
+
+  Download:
+    - http://www.net-snmp.org/download/
+    - ftp://ftp.net-snmp.org/pub/sourceforge/net-snmp/
+  MD5 Sums:
+    - http://www.net-snmp.org/md5/
+  Web page:
+    - http://www.net-snmp.org/
+  Sourceforge Project page:
+    - http://www.net-snmp.org/project/
+  Mirrors (note that sourceforge download servers are mirrored themselves):
+    - US:          ftp://ftp.freesnmp.com/mirrors/net-snmp/
+    - Bulgaria:    http://rtfm.uni-svishtov.bg/net-snmp/    (appears to be out of date)
+    - Japan:       ftp://ftp.ayamura.org/pub/net-snmp/      (may only work inside Japan)
+    - Germany:     ftp://ftp.mpg.goe.ni.schule.de/pub/internet/net-snmp/  (unknown host)
+    - Greece:      ftp://ftp.ntua.gr/pub/net/snmp/net-snmp/
+
+  The old ucd-snmp.ucdavis.edu web site and ftp server is now
+  offline and should not be accessed any longer.
+
+
+
+<a name="What_documentation_is_available_">
+What documentation is available?
+-------------------------------
+
+	This FAQ (!)
+	README and individual READMEs for various platforms
+	README.thread (discusses threading issues)
+	INSTALL
+	PORTING
+	EXAMPLE.conf
+	man pages for the individual tools, files and the API
+	A guide for extending the agent
+	Tutorials for both ucd-snmp v4 and net-snmp v5
+           at  http://www.net-snmp.org/tutorial/
+           and http://www.net-snmp.org/tutorial-5/ respectively
+
+      Most of this documentation (plus archives of the mailing lists)
+	 is also available on our web page:
+
+        	http://www.net-snmp.org/
+
+
+
+<a name="Are_there_binaries_available_">
+Are there binaries available?
+----------------------------
+
+  - There are binaries for some systems available in the binaries
+    directory on the ftp site.
+
+
+
+<a name="What_s_the_difference_between_UCD_SNMP_and_Net_SNMP_">
+What's the difference between UCD-SNMP and Net-SNMP?
+---------------------------------------------------
+
+  Not a great deal, really.
+  Although the project originally started at UC Davis (hence the name),
+  and it has always been based there, most of the contributors have had
+  little or no connection with this institution.
+
+    The move to SourceForge was intended to provide a more flexible
+  environment for the project, and to distribute the administrative
+  workload more evenly.  The change of name simply reflects this move,
+  which was the last remaining link with UC Davis.
+
+    The 4.2.x line is the last release line that uses the ucd-snmp name,
+  and all releases under this banner will be bug-fixes only.  Release
+  5.0 is the first version using the net-snmp name, and all new features
+  and significant development will be released under this name.
+    (Though the dividing line between a bug-fix and a new feature is
+  something of a vague one, so some changes in the 4.2.x line may be
+  relatively non-trivial!)
+ 
+    Starting with the 5.0 release, we are also trying to review and
+  rework the underlying code base to improve the readability and
+  maintainability of the package.  The 5.0 changes have mostly
+  concentrated on the agent architecture, though there have been some
+  significant changes to the library as well.  Future releases may
+  include further restructuring of the library.
+    This process will probably result in some changes to the API,
+  though we will attempt to retain some form of backwards
+  compatibility as far as possible, and clearly mark anything that has
+  changed.  The most significant change with the 5.0 release is a
+  restructuring of the header file organisation - not least a change
+  from &lt;ucd-snmp/xxx.h&gt; to &lt;net-snmp/yyy.h&gt;.
+
+
+
+<a name="What_operating_systems_does_it_run_on_">
+What operating systems does it run on?
+-------------------------------------
+
+  Both the applications and the agent have been reported as running
+  (at least in part) on the following operating systems:
+
+	* HP-UX (10.20 to 9.01 and 11.0 -- see README.hpux11)
+	* Ultrix (4.5 to 4.2)
+	* Solaris SPARC/ULTRA (2.8 to 2.3), Intel (2.9) and SunOS (4.1.4 to 4.1.2)
+	* OSF (4.0, 3.2)
+	* NetBSD (1.5alpha to 1.0)
+	* FreeBSD (4.1 to 2.2)
+	* BSDi (4.0.1 to 2.1)
+	* Linux (kernels 2.4 to 1.3)
+	* AIX (4.1.5, 3.2.5)
+	* OpenBSD (2.8, 2.6)
+	* Irix (6.5 to 5.1)
+	* OS X (10.1.1 and 10.1.2)
+	* Dynix/PTX 4.4
+	* QNX 6.2.1A
+
+  We have also been informed about a port to the Stratus VOS.
+  See http://ftp.stratus.com/vos/network/network.html for details.
+
+  See the next question but one for the status of Windows support.
+
+  Certain systems (e.g. HP-UX 11, Irix?) fail to compile particular
+  portions of the agent.  These can usually be persuaded to compile
+  (at the loss of some functionality) by omitting the modules affected.
+  See the next question for more details.
+
+  Also note that the presence of a particular configuration in this
+  list does not imply a perfect or complete implementation.  This is
+  simply what various people have reported as seeming to work. (Or more
+  frequently, the configurations people have reported problems with
+  that we think we've fixed!)
+
+
+
+<a name="What_happens_if_mine_isn_t_listed_">
+What happens if mine isn't listed?
+---------------------------------
+
+    It's probably worth trying to compile it anyway.  If your system
+  is reasonably similar to another supported configuration, it may
+  well compile with little or no difficulty.  The most likely source
+  of problems will be MIB modules within the agent, as this tends to
+  be where the most system-specific code is found.
+
+    If only a few modules fail to compile, try removing them from
+  the agent by running "configure --with-out-mib-module=xxx,yyy",
+  and re-compiling.  If a large number of modules fail, then it
+  might be easier to start from a relatively bare system, using
+  "configure --enable-mini-agent --with-defaults".  Then if this
+  minimal agent compiles and runs successfully, try adding the
+  missing mibgroups using the configure option '--with-mib-module'.
+  
+    If configure fails with "invalid configuration" messages, or
+  you get completely stuck, contact the coders list for advice.
+  Similarly, if you manage to get this working on a new system,
+  please let us know both details of the hardware you're using,
+  and what versions of the operating system you've tried it on.
+  The entry 'host' in the file 'config.status' will show this
+  information.  Oh, and congratulations!
+
+
+
+<a name="Does_it_run_on_Windows_">
+Does it run on Windows?
+----------------------
+
+    The suite should compile and run on Win32 platforms, including
+  the library, command-line tools and the basic agent framework.
+  Note that the agent now includes support for the MIB-II module,
+  but this requires Microsoft's Core Platform SDK.  Instructions
+  for how to install this are given in README.win32.
+
+    Some other MIB modules, including the UCD pass-through extensions,
+  do not currently work under Windows.  Volunteers to assist in
+  these missing modules are likely to welcomed with open arms :-)
+
+    Further details of Windows support (currently Visual C++ and
+  Cygnus cygwin32) is available in the file README.win32
+
+
+
+<a name="How_do_I_find_out_about_new_releases_">
+How do I find out about new releases?
+------------------------------------
+
+  There is a mailing list for these announcements
+
+  	net-snmp-announce@lists.sourceforge.net
+
+  To be added to (or removed from) this list, visit
+  http://www.net-snmp.org/lists/net-snmp-announce/.  Or you can send a
+  message to the address
+  'net-snmp-announce-request@lists.sourceforge.net' with a subject
+  line of 'subscribe' (or 'unsubscribe' as appropriate).
+
+  Major code revisions may be announced more widely (e.g. on the
+  SNMP mailing lists, or comp.protocols.snmp) but this list is the most
+  reliable way to keep in touch with the status of this package.
+
+  Patches to fix known problems are also made available via the web site:
+
+        http://www.net-snmp.org/patches/
+
+
+
+<a name="How_can_I_find_out_what_other_people_are_doing_">
+How can I find out what other people are doing?
+----------------------------------------------
+
+  There is a general purpose discussion list
+
+  	net-snmp-users@lists.sourceforge.net
+
+  To be added to (or removed from) this list, visit
+  http://www.net-snmp.org/lists/net-snmp-users.  Or you can send a
+  message to the address 'net-snmp-users-request@lists.sourceforge.net'
+  with a subject line of 'subscribe' (or 'unsubscribe' as appropriate).
+
+  To find out what the developers are doing, and to help them out, please
+  read the PORTING file enclosed with the package.
+
+  There is also an net-snmp IRC channel set up on the freenode.net IRC
+  chat servers (you can use irc.freenode.net to connect and/or see
+  http://www.freenode.net/ for getting started with irc).  Multiple
+  core developers hang out there on a regular basis.
+
+
+
+<a name="How_do_I_submit_a_patch_or_bug_report_">
+How do I submit a patch or bug report?
+-------------------------------------
+
+  All bug reports should be submitted to the bug database through the
+  interface found at http://www.net-snmp.org/bugs/.  Be
+  sure to include the version of the package that you've been working
+  with, the output of the command 'uname -a', the precise command that
+  triggers the problem and a copy of the output it produces.
+
+    All patches should be submitted to the patch manager at
+  http://www.net-snmp.org/patches/.  If possible, submit a
+  bug report describing the patch as well (referencing it by its patch
+  number) since the patch manager doesn't contain a decent description
+  field.
+
+    Questions about using the package should be directed at the
+  net-snmp-users@lists.sourceforge.net mailing list.  Note that this
+  mailing list is relatively busy, and the people answering these
+  questions are doing so out of the goodness of their hearts, and in
+  addition to their main employment.  Please note the following:
+
+     - use plain text mail, rather than HTML
+     - don't resend questions more than once
+          (even if no-one answered immediately)
+     - include full details of exact commands and error messages
+          ("I've tried everything, and it doesn't work" isn't much use!)
+     - do *NOT* send messages to -users and -coders mailing lists
+          (most developers read both anyway)
+     - don't mail the developers privately - keep everything on the list
+
+  Remember that this is basically an unsupported package.  Fundamentally
+  it's Open Source, so you have the source code.  If you need something
+  fixing badly enough, it's up to you to do the work.
+
+    We can't promise to be able to solve all problems, but we'll
+  certainly try and help.  But remember that this is basically an
+  unsupported package.  It's Open Source, so if you need something
+  fixing badly enough,  fundamentally it's up to you to do the work.
+
+<a name="Can_I_reuse_the_code_in_my_commercial_application_">
+Can I reuse the code in my commercial application?
+-------------------------------------------------
+
+The details of the COPYRIGHTs on the package can be found in the
+COPYING file.  You should have your lawyer read this file if you wish
+to use the code in your commercial application.  We will not summarize
+here what is in the file, as we're not lawyers and are unqualified to
+do so.
+
+
+<a name="What_s_the_difference_between_SNMPv___SNMPv__and_SNMPv__">
+What's the difference between SNMPv1, SNMPv2 and SNMPv3?
+-------------------------------------------------------
+<a name="What_are_all_these_different_SNMPv__s_anyway_">
+What are all these different SNMPv2's anyway?
+--------------------------------------------
+
+
+  A full description is probably beyond the scope of this FAQ.
+  Very briefly, the original protocol and framework was described
+  in RFCs 1155-1157, and is now known as SNMPv1.
+
+    Practical experience showed up various problems and
+  deficiencies with this, and a revised framework was developed to
+  try and address these.  This was described in RFCs 1441-1452, and
+  known as "SNMPv2 classic".
+  The changes proposed include:
+
+	* new ways of defining information (MIB structure)
+		(SMI, Textual conventions, conformance statements)
+	* new protocol packet types and transport mappings
+	* new mechanisms for administration and security
+	* mechanisms for remote configuration
+
+  Unfortunately, while many of these were generally accepted, there
+  was some disagreement in these last two areas, security/admin
+  and remote configuration.  This resulted in a number of variants and
+  alternative proposals:
+
+	SNMPv2c		Contains the new protocol and MIB structure elements,
+			using the existing SNMPv1 administration structure.
+			This is the de-facto SNMPv2 standard (described in
+			RFCs 1901-1908), superseding SNMPv2 classic, and is
+			known as "Community-based SNMPv2" or simply "SNMPv2".
+
+
+	SNMPv2 usec	} Alternative proposals to address the
+	SNMPv2*		} limitations of SNMPv1 administration
+			} These are both super-sets of SNMPv2c
+
+			
+	SNMP-NG		An attempt to reach agreement between
+			the proponents of usec and v2star.
+
+  The formal successor to the SNMP-NG work has been termed SNMPv3.
+  This has now been effectively finalised, and is described in RFCs
+  2571-2575.  This is currently a Proposed Standard, but is likely
+  to progress to full Standard in the relatively near future.
+
+
+
+<a name="Which_versions_of_SNMP_are_supported_in_this_package_">
+Which versions of SNMP are supported in this package?
+----------------------------------------------------
+
+  This package currently supports the original SNMPv1, Community-based
+  SNMPv2 (i.e. RFCs 1901-1908), and SNMPv3 (i.e. RFCs 2571-2575).
+    The agent will respond to requests using any of these protocols,
+  and all the tools take a command-line option to determine which
+  version to use.
+
+  Support for SNMPv2 classic (a.k.a. "SNMPv2 historic" - RFCs 1441-1452)
+  was dropped with the 4.0 release of the UCD-snmp package.
+
+
+
+<a name="Can_I_use_SNMPv__requests_with_an_SNMPv__MIB__or_vice_versa__">
+Can I use SNMPv1 requests with an SNMPv2 MIB (or vice versa)?
+------------------------------------------------------------
+
+    Yes.
+
+    The version of the syntax used to define a MIB file
+  is better referred to as SMIv1 or SMIv2, and is purely
+  concerned with defining the characteristics of the
+  various management objects.  This is (almost) completely
+  unrelated to the versions of the protocol operations.
+  So it is quite reasonable to use SNMPv1 requests on
+  objects defined using SMIv2, or SNMPv2 (or SNMPv3)
+  requests on objects defined using SMIv1.
+
+    The one exception is objects of syntax Counter64,
+  which are only accessible using SNMPv2 or higher.
+  SNMPv1 requests will either treat such objects as an
+  error, or skip over them completely.
+
+  
+
+<a name="Where_can_I_find_more_information_about_network_management_">
+Where can I find more information about network management?
+----------------------------------------------------------
+
+  There are a number of sites with network management information on
+  the World Wide Web. Three of the most useful are
+
+      http://www.snmpweb.org/
+      http://www.snmplink.org/
+      http://www.mibdepot.com/
+
+  There are two Usenet newsgroups which are relevant.
+	'comp.dcom.net-management'
+		which discusses general issues relating to network management
+	'comp.protocols.snmp'
+		which is specifically concerned with use of SNMP in particular
+
+  (though there is a large overlap between these two groups).
+  The SNMP group also has an FAQ (split into two parts) which discusses more
+  general issues related to SNMP, including books, software, other sites,
+  how to get an enterprise number, etc, etc.
+  This is available from
+
+      ftp://rtfm.mit.edu/pub/usenet/comp.protocols.snmp/
+
+  or via any of the Web sites above.
+
+
+
+<a name="Is_ucd_snmp_thread_safe_">
+Is ucd-snmp thread safe?
+-----------------------
+
+  Strictly speaking, no.  However, it should be possible to use the
+  library in a thread-safe manner.  This is covered in detail in the file
+  README.thread (shipped with the standard distribution), but can be
+  summarised as follows:
+
+    -	Call 'snmp_sess_init()' prior to activating any threads.
+	This reads in and parses MIB information (which isn't thread-safe)
+	as well as preparing a session structure for subsequent use.
+
+    -	Open an SNMP session using 'snmp_sess_open()' which returns an
+	opaque session handle, which is essentially independent of any
+	other sessions (regardless of thread).
+
+    -	Resource locking is not handled within the library, and is the
+	responsibility of the main application.
+
+  The applications and the agent have not been designed for threaded use.
+
+
+
+<a name="APPLICATIONS">
+APPLICATIONS
+============
+
+<a name="How_do_I_add_a_MIB_">
+How do I add a MIB?
+------------------
+
+  This is actually two separate questions, depending on whether you
+  are referring to the tools, or the agent (or both).
+    See the next question or the next section respectively.
+
+
+
+<a name="How_do_I_add_a_MIB_to_the_tools_">
+How do I add a MIB to the tools?
+-------------------------------
+
+  Firstly,
+
+	cp MY-MIB.txt /usr/local/share/snmp/mibs
+
+          or
+
+        mkdir $HOME/.snmp
+        mkdir $HOME/.snmp/mibs
+	cp MY-MIB.txt $HOME/.snmp/mibs
+
+  And then,
+
+	export MIBS=+MY-MIB
+
+          or alternatively:
+
+        echo "mibs +MY-MIB" &gt;&gt; $HOME/.snmp/snmp.conf
+
+  Note that you need *both* steps.
+  The first command copies the file defining the new MIB to a
+  expected location for MIB files.  This defaults to
+  /usr/local/share/snmp/mibs (or PREFIX/share/snmp/mibs if the the
+  suite was installed into a different base location).  Some
+  ready-packaged distributions (such as Linux RPM packages) may look
+  for MIB files in a different location, such as /etc/snmp/mibs - put
+  the new file in this directory instead.  This makes it available for
+  everyone on the system.
+  The tools will also look for mibs in your personal $HOME/.snmp/mibs
+  directory, but this will only work for you.
+
+  The second command tells the tools to load in this new MIB file as well
+  as the default set.   Note that the tools do *not* load every MIB found
+  in the directory - this is to avoid slowing them down excessively when
+  there is a large collection of MIB files.  If you do want the tools to
+  load all the MIB files, set the environmental variable MIBS to the special
+  value "ALL".
+
+     Note that the value for this variable is the name of the MIB module,
+  *not* the name of the MIB file.   These are typically the same (apart
+  from the .txt suffix), but if in doubt, check the contents of the file.
+  The value to use is the token immediately before the word DEFINITIONS
+  at the start of the file.  Of course, if you load 'ALL' mibs, then this
+  distinction is irrelevant.
+
+    Most of the tools (apart from 'snmptable') will work quite happily
+  without any MIB files at all, as long as you are prepared to work with
+  numeric OIDs throughout.  The MIB files are only used for translating
+  between numeric and textual forms for queries and responses.
+    The same holds true for the agent - see the AGENT section for details.
+
+
+
+<a name="Why_can_t_I_see_anything_from_the_agent_">
+Why can't I see anything from the agent?
+---------------------------------------
+
+  There are two main general causes of problems retrieving information
+  from the agent.   Firstly, the variable (or variables) specified may
+  not be recognised by the tools as valid names.  In this case, the
+  tools will typically reject the request without ever contacting the
+  remote agent.
+
+    Alternatively, the tool may be happy with the request, but the agent
+  does not return the corresponding value(s).  It may return an explicit
+  error message instead, or the request may time out without any response
+  being sent back at all.  The next few entries look at these in more detail.
+
+
+
+<a name="Why_can_t_I_see_values_in_the__INSERT_ENTERPRISE_HERE__tree_">
+Why can't I see values in the &lt;INSERT ENTERPRISE HERE&gt; tree?
+-----------------------------------------------------------
+
+  Having said that there are two main reasons for not getting a response,
+  the most likely cause of this problem is actually something else again.
+
+  The 'snmpwalk' command takes a point in the overall MIB tree, and tries
+  to display all the values that lie within this subtree.  However, it
+  actually does this by issuing a series of "getnext" requests, until
+  the variable returned lies outside the subtree of interest.  If the
+  very first request returns such an undesired value, then the command
+  will terminate, without having displayed anything at all.
+
+    If an expicit starting point is given to 'snmpwalk', then it is reasonably
+  clear what is happening, and that there is simply nothing in the subtree
+  specified.  However, if 'snmpwalk' is called without giving an explicit
+  starting point, then it will display the contents of the 'mib-2' subtree.
+  It will not attempt to traverse any 'private.enterprise' subtree, such as
+  the UCD-specific objects (including any local extensions).
+
+    To walk the whole tree, specify a starting point of '.iso'
+  To walk a specific enterprise subtree, specify the root of this as
+  the starting point - e.g:
+
+	snmpwalk -v1 -c public localhost ucdavis
+ 
+  Or, of course, you can walk a selected portion of an enterprise subtree
+  by specifying the appropriate starting point - e.g:
+
+	snmpwalk -v1 -c public localhost ucdavis.version
+  
+  If you still can't see any information, keep reading.  The next few
+  questions will probably help you.
+
+
+
+<a name="Requests_always_seem_to_timeout__and_don_t_give_me_anything_back___Why_">
+Requests always seem to timeout, and don't give me anything back.  Why?
+----------------------------------------------------------------------
+
+  There are a number of possible causes of this.
+
+  The most likely are the agent access control settings (who is allowed
+  access by the agent itself), or firewall/packet filtering settings
+  (who is allowed access by the underlying operating system).
+
+  A fuller list of possible causes (with indications of how to check
+  for each) is as follows:
+  
+	- is the machine you are querying up and running?
+		(Does it respond to 'ping' or similar requests?)
+	- is there an SNMP agent running on it?
+		(Run 'ps -ef | grep snmp' or 'netstat -an | grep 161')
+	- are the requests arriving, or being blocked (e.g. by a firewall)?
+		(Restart the agent using 'snmpd -f -L -d'
+		 and see if it shows the incoming packet dumps)
+	- is the agent simply taking a long time to respond?
+		(The 'snmpd -f -L -d' command should show a series of
+ 		 incoming PDUs, followed eventually by the outgoing PDUs.
+		 Try the request again with a long timeout value,
+		 e.g. 'snmpcmd -t 120 ....')
+	- does the agent's control settings allow this request?
+		(The 'snmpd -f -L -d' command will show a series of
+ 		 incoming PDUs with *no* corresponding outgoing PDUs)
+
+  Note that if the agent is not configured to allow access for a
+  particular community, then the SNMP specification declares that no
+  error response should be sent at all.  The Net-SNMP tools will retry
+  the request a number of times, before reporting a timeout error.
+
+    If the agent is configured to allow partial access for a given
+  community, then requests that fall outside this authorised access
+  *will* result in an error response.
+    (SNMP agents can be very fussy over who they talk to!)
+
+    See the entries on access control in the AGENT section for how to
+  configure the Net-SNMP agent to allow suitable access.  For other
+  vendors' agents, you will need to consult the relevant documentation.
+
+
+
+<a name="I_can_see_the_system_group__but_nothing_else___Why_">
+I can see the system group, but nothing else.  Why?
+--------------------------------------------------
+
+  This is probably the same as the previous question - a problem with
+  the access configuration of the agent.  Many pre-configured systems
+  (such as most Linux distributions) will only allow access to the system
+  group by default, and need to be configured to enable more general access.
+
+    The easiest way to test this is to try a GETNEXT request, that ought
+  to return the entry of interest.
+  e.g.
+	snmpgetnext -v1 -c public localhost ucdavis.version.versionTag
+  instead of
+	snmpget     -v1 -c public localhost ucdavis.version.versionTag.0
+
+  If the agent responds with "end of MIB" or a different object, then
+  either the agent doesn't implement that particular object at all, or
+  the access control won't allow you access to it.
+
+  See the entries on access control in the AGENT section for how to
+  configure the Net-SNMP agent, or consult the agent's own documentation.
+
+
+
+<a name="The_agent_worked_for_a_while__then_stopped_responding___Why_">
+The agent worked for a while, then stopped responding.  Why?
+-----------------------------------------------------------
+
+  Assuming that the agent hasn't crashed completely, the most likely
+  explanation is that it's simply overloaded, and is taking longer to
+  respond than the querying tool is waiting.  Since the agent handles
+  each request in turn, without regard to earlier activity, and most
+  tools will retry a request when it times out, the list of outstanding
+  requests can grow longer and longer.
+
+    To determine whether this is the cause or not, try leaving the
+  agent undisturbed for a while, and then probe it using a longer
+  timeout (e.g. '-t 120').  This should give the agent time to handle
+  each request first time round, and avoids overloading it with
+  duplicate requests.
+
+  This is not a full solution, of course, but at least it should
+  allow you to isolate the offending portion of the tree. The
+  developers may then be able to offer a more long-term solution.
+
+
+
+<a name="Requesting_an_object_fails_with__Unknown_Object_Identifier___Why_">
+Requesting an object fails with "Unknown Object Identifier"  Why?
+----------------------------------------------------------------
+
+  If a general snmpwalk shows the entry, but asking for it more
+  specifically gives a "sub-identifier not found:" or "Unknown Object
+  Identifier" error, then that's a problem with the tool, rather than
+  the agent.
+
+    Firstly, make sure that you're asking for the object by the right name.
+  Object descriptors are case-sensitive, so asking for 'sysuptime' will
+  not be recognised, but 'sysUpTime' will.
+
+    Secondly, the object may be defined in a MIB that hasn't been loaded.
+  Try loading in all the MIB files:
+
+	snmpget -m ALL -v1 -c public localhost sysUpTime.0
+
+  (though if snmpwalk translates it OK, that's less likely to be the cause).
+
+    Thirdly, earlier versions of the UCD software expected "full" paths
+  for object names, either based at the root of the whole MIB tree
+  (".iso.org.dod.internet.mgmt.mib-2.system.sysUpTime") or the 'mib-2'
+  subtree ("system.sysUpTime").  Try:
+  
+	snmpget -v1 -c public myhost system.sysUpTime.0
+
+  These earlier versions of the tools may take a command-line option '-R'
+  or '-IR' (depending on vintage) to invoke this "random-access" mode.
+  Note that snmptranslate still requires "random-access" to be specified
+  explicitly - all other command tools now use this mode by defaults.
+
+  All versions of the UCD and Net-SNMP tools accept the syntax
+
+	snmpget -v1 -c public myhost RFC1213-MIB:sysUpTime.0
+
+  to denote a particular object in a specific MIB module.  Note that this
+  uses the name of the *module*, not the name of the file.  See the second
+  question in this section for the distinction.
+
+
+
+<a name="Why_do_I_get__noSuchName__when_asking_for__sysUpTime___or_similar__">
+Why do I get "noSuchName" when asking for "sysUpTime" (or similar)?
+------------------------------------------------------------------
+
+  There are a number of possible causes of this (scattered throughout
+  this FAQ, so keep reading!).   But one of the most likely snares for
+  the unwary is forgetting the instance subidentifier for 'non-table'
+  objects.  If you walk the 'system' tree, you'll notice that all the
+  results (apart from the sysORTable), have a '.0' at the end of the OID.
+  This is the "instance sub-identifier" - which *must* be included for
+  a GET request.
+     Compare the following:
+
+	$ snmpget -v1 -c public localhost sysUpTime
+	Error in packet
+	Reason: (noSuchName) There is no such variable name in this MIB.
+	This name doesn't exist: system.sysUpTime
+	$ snmpget -v1 -c public localhost sysUpTime.0
+	system.sysUpTime.0 = Timeticks: (69189271) 8 days, 0:11:32.71
+
+  This is a little less obscure when using SNMPv2c or v3 requests:
+
+	$ snmpget -v 2c -c public localhost sysUpTime
+	system.sysUpTime = No Such Instance currently exists
+
+
+
+<a name="Why_do_I_sometimes_get__End_of_MIB__when_walking_a_tree__and_sometimes_not_">
+Why do I sometimes get "End of MIB" when walking a tree, and sometimes not?
+--------------------------------------------------------------------------
+
+  This depends on which MIB modules are supported by the agent you are
+  querying and what you're asking for.
+
+  Recall that a tree is walked by repeatedly asking for "the next entry" until
+  all the values under that tree have been retrieved.  However, the agent has
+  no idea that this is what's happening - all it sees is a request for "the
+  next entry after X".
+
+  If the object X happens to be the last entry in a sub-tree, the agent will
+  provide the next object supported (as requested) even though this will be
+  in a different subtree.  It's up to the querying tool to recognise that
+  this last result lies outside the area of interest, and simply discard it.
+
+  If the object X happens to be the last entry supported by the agent, it
+  doesn't have another object to provide, so returns an "end of MIB"
+  indication.  The Net-SNMP tools report this with the message above.
+
+  But in either case, the actual information provided will be the same.
+
+
+
+<a name="I_cannot_set_any_variables_in_the_MIB_">
+I cannot set any variables in the MIB.
+-------------------------------------
+
+  There are three possible reasons for this:
+
+  The majority of MIB objects are defined as "read-only" and inherently
+  cannot be changed via SET requests.
+
+  Of those that can in principle be changed, not all have been implemented
+  as such in this agent.
+
+  Even if SET support has been implemented, the agent may not be configured
+  to allow write access to this object.
+
+  The example configuration file shipped with the basic distribution only
+  allows write access for the local host itself (and a suitable community
+  name must be configured first).
+    Ready-installed distributions (such as those shipped with Linux) tend
+  to be configured with read-only access to part of the mib tree (typically
+  just the system group) and no write access at all.
+
+  To change this, you will need to set up the agent's access control
+  configuration.  See the AGENT section for more details.
+
+    Note that neither the community string "public" nor "private" can be
+  used to set variables in a typical default configuration.
+
+
+
+<a name="Variables_seem_to_disappear_when_I_try_to_set_them___Why_">
+Variables seem to disappear when I try to set them.  Why?
+--------------------------------------------------------
+
+  This is actually the same as the previous question - it just isn't
+  particularly obvious, particularly when using SNMPv1.  A typical
+  example of this effect would be
+
+	$ snmpget -v1 -c public localhost system.sysLocation.0
+	system.sysLocation.0 = somewhere nearby
+
+	$ snmpset -v1 -c public localhost system.sysLocation.0 s "right here"
+	Error in packet.
+	Reason: (noSuchName) There is no such variable name in this MIB.
+	This name doesn't exist: system.sysLocation.0
+
+  Trying the same request using SNMPv2 or above is somewhat more informative:
+
+	$ snmpset -v 2c -c public localhost system.sysLocation.0 s "right here"
+        Error in packet.
+        Reason: notWritable
+
+  The SNMPv1 error 'noSuchName' actually means:
+
+	"You can't do that to this variable"
+
+  This might be because the variable doesn't exist, it does exist but
+  you don't have access to it (but someone else may do), or it exists
+  but you can't perform that particular operation (i.e. changing it).
+    Similarly, the SNMPv2 error 'notWritable' means "not writable in
+  this particular case" rather than "not writable under any circumstances".
+
+  If you are sure that the object is writable (and has been implemented
+  as such), then you probably need to look at the agent access control.
+  See the AGENT section for more details.
+
+
+
+I still can't change sysLocation, though the access settings allow it.  Why not?
+-------------------------------------------------------------------------------
+
+    One other possibility for the 'sysLocation' and 'sysContact' objects,
+  is that you've got a configuration option in the 'snmpd.conf' file which
+  already sets the corresponding value there.
+
+    Earlier versions of the agent would allow you to write to these objects,
+  but the new value would be forgotten the next time the agent was re-started.
+  More recent versions of the agent reject such write requests if there's a
+  value set via the config file.   If there isn't such a config setting, then
+  the write request will succeed (assuming the access settings allow it), and
+  the new value will be retained the next time the agent restarts.
+
+
+
+<a name="I_get_an_error_when_trying_to_set_a_negative_value___why_">
+I get an error when trying to set a negative value - why?
+--------------------------------------------------------
+
+    This is a different problem.  What's happening here is that the
+  routine that parses the arguments to the 'snmpset' command is seeing
+  the '-' of the new value, and treating it as a command-line option.
+  This normally generates an error (since digits probably aren't valid
+  command line option).
+
+    The easiest way to solve this is include the "end-of-option"
+  indicator '--' in the command line, somewhere before the new value
+  (but after all of the options, obviously).  For example:
+
+	snmpset -v 2c -c public localhost -- versionRestartAgent.0 i -1
+
+  (This will also fail, since -1 isn't an acceptable value for this
+  object, but it will be rejected by the agent, rather than confusing
+  the snmpset command!)
+
+
+
+<a name="I_get_an_error_when_trying_to_get_a_string_indexed_table_value___why_">
+I get an error when trying to get a string-indexed table value - why?
+--------------------------------------------------------------------
+
+    This is probably due to the shell swallowing the quotes, before
+  they ever get to the SNMP command's OID parser.  Try escaping them:
+
+	snmpget .....   vacmSecurityModel.0.\"wes\"
+  or	snmpget .....  'vacmSecurityModel.0."wes"'
+
+
+  
+<a name="How_do_I_send_traps_and_notifications_">
+How do I send traps and notifications?
+---------------------------------------
+
+    Traps and notifications can be sent using the command 'snmptrap'.
+  The following examples generate the generic trap 'coldStart' and a
+  (dummy) enterprise specific trap '99' respectively:
+
+	snmptrap -v 1 -c public localhost "" "" 0 0  ""
+	snmptrap -v 1 -c public localhost "" "" 6 99 ""
+  
+  The empty parameters "" will use suitable defaults for the relevant 
+  values (enterprise OID, address of sender and current sysuptime).
+
+    An SNMPv2 or SNMPv3 notification (either trap or inform) takes
+  the OID of the trap to send:
+
+	snmptrap -v 2c -c public localhost "" UCD-SNMP-MIB::ucdStart
+	snmptrap -v 2c -c public localhost "" .1.3.6.1.4.1.2021.251.1
+
+  (These two are equivalent ways of specifying the same trap).
+
+  Any of these commands can be followed by one or more varbinds,
+  using the same (OID/type/value) syntax as for 'snmpset':
+
+	snmptrap -v 2c -c public localhost "" ucdStart sysContact.0 s "Dave"
+
+  Generating traps from within the agent is covered in the AGENT and
+  CODING sections.
+
+  You should also read the snmptrap tutorial at
+	http://www.net-snmp.org/tutorial-5/commands/snmptrap.html
+  which will help you understand everything you need to know about traps.
+
+
+
+<a name="How_do_I_handle_traps_and_notifications_">
+How do I handle traps and notifications?
+---------------------------------------
+
+    Handling received traps is done using the tool 'snmptrapd'.
+  This can log these traps via the syslog mechanism:
+
+	snmptrapd -s -l7	(log to 'LOCAL7')
+
+  printed to standard output
+
+	snmptrapd -f -P
+
+  or pass them to an external command.  This last approach uses
+  a 'traphandle' directive in the configuration file 'snmptrapd.conf'.
+  A typical file might look something like:
+
+	traphandle .1.3.6.1.6.3.1.5.1       page_me up
+	traphandle .1.3.6.1.4.1.2021.251.1  page_me up
+	traphandle .1.3.6.1.4.1.2021.251.2  page_me down
+	traphandle default                  log_it
+
+  where 'page_me' and 'log_it' are the command to be run.  (You probably
+  need to specify full pathnames, to ensure that the commands will be
+  found.  They're just short here for readability).
+
+  Note that the first entry uses the OID corresponding to the SNMPv1
+  'coldStart' trap.  See the co-existence RFC (RFC 2576) for details
+  of mapping SNMPv1 traps to SNMPv2 OIDs.
+
+  There's a tutorial with more details on the web site at
+	http://www.net-snmp.org/tutorial-5/commands/snmptrap.html
+  
+
+
+<a name="My_traphandler_script_doesn_t_work_when_run_like_this___why_not_">
+My traphandler script doesn't work when run like this - why not?
+---------------------------------------------------------------
+
+    If a traphandler script works fine when run manually from the
+  command line, but generates an error when triggered by an incoming
+  notification, then this is probably down to one of two likely causes.
+
+    Firstly, the interactive shell environment may not be precisely
+  the same as that for programs executed by the snmptrapd daemon.
+  In particular, it's quite possible that the PATH environmental
+  variable may not include all the additional directories that are
+  commonly set up for a personal login configuration.  To avoid this
+  problem (particularly for traphandler shell scripts), it's worth
+  giving the full path to all programs used within the script.
+
+    Secondly, the snmptrapd daemon may not always recognise the
+  appropriate interpreter to use for a particular trap handler.
+  If this is the case, then you can specify this interpreter
+  explicitly as part of the trap handle directive:
+
+	traphandle default /usr/bin/perl /usr/local/bin/log_it
+
+  Note that in this case, it's almost certain that you'll also
+  need to give the full path to the traphandle script (as shown)
+
+
+
+<a name="The_ucdShutdown_trap_OID_received_by_my_manager_is_wrong__Why_">
+The ucdShutdown trap OID received by my manager is wrong. Why?
+-------------------------------------------------------------
+
+    This is due to the way that traps are converted between
+  SNMPv1 and SNMPv2 formats.  The algorithm used for converting
+  from an SNMPv1 enterprise-specific trap number, to an SNMPv2
+  trap OID results in a penultimate '0' subidentifier, before
+  the trap number itself.  The definition of the trap objects
+  in the UCD-SNMP-MIB file does not include this subidentifier.
+
+    In due course, the intention is to define a new set of MIB
+  objects, under the 'net-snmp' enterprise tree.  This will
+  include new trap OIDs, which will be designed such that
+  this problem does not arise in the future.
+
+
+
+<a name="Why_does_snmptrapd_complain_about_AgentX_">
+Why does snmptrapd complain about AgentX?
+----------------------------------------
+
+    Starting from the v5 release, the trap handling daemon has
+  implemented the notification logging aspects of the NOTIFICATION-MIB
+  (RFC 3014).  This is handled by the trap handler daemon registering
+  as an AgentX subagent, to supply this statistical information.
+
+    If there is no AgentX master agent available, this registration
+  fails, generating the warning about "failed to connect to the agentx
+  master".  This warning only appears between version 5.0 and 5.0.4
+  (in 5.0.4 and after the warning was silenced).  This failure does
+  not affect the main operation of the trap handler.  It simply means
+  that the nsmLog information won't be available for query via SNMP.
+
+    Basically, this is a warning that can safely be ignored.
+
+
+
+<a name="How_do_I_use_SNMPv__">
+How do I use SNMPv3?
+-------------------
+
+    The simplest form of SNMPv3 request (unauthenticated, unencrypted)
+  would be something like:
+
+	snmpget -v 3 -l noAuthNoPriv localhost sysUpTime.0
+
+    An authenticated request would specify a username and pass phrase:
+
+	snmpget -v 3 -l authNoPriv -u dave -A "Open the Door"
+				localhost sysUpTime.0
+
+    A fully secure request would also specify the privacy pass phrase:
+
+	snmpget -v 3 -l authPriv -u dave -A "Open the Door"
+			-X "Bet you can't see me"  localhost sysUpTime.0
+
+  In practise, most of these would probably be set via configuration
+  directives in a personal $HOME/.snmp/snmp.conf file (note, *not* the
+  agent's snmpd.conf file).  The equivalent settings for the third
+  example would be:
+
+	defSecurityName		dave
+	defSecurityLevel	authPriv
+	defAuthPassphrase	"Open the Door"
+	defPrivPassphrase	"Bet you can't see me"
+
+  If the AuthPassphrase and the PrivPassphrase are the same, then you
+  can use the setting
+		defPassphrase	"Open the Door and see me"
+							instead
+
+  For how to configure the agent to respond to SNMPv3 requests, see
+  the AGENT section.
+ 
+
+
+<a name="How_big_can_an_SNMP_request__or_reply__be_">
+How big can an SNMP request (or reply) be?
+-----------------------------------------
+
+    The protocol definition specifies a "minimum maximum" packet size
+  (484 bytes for UDP), which all systems must support, but does not
+  attempt to define an upper bound for this maximum size.  This is left
+  to each individual implementation.
+
+    The UCD software uses a fixed size buffer of 1472 bytes to hold the
+  encoded packet, so all requests and responses must fit within this.
+  Unfortunately, it's not possible to predict how many varbinds this
+  corresponds to, since it depends on the type and actual values being
+  sent, as well as the corresponding OIDs.
+
+    As a rule of thumb, sending 400 integer-valued varbinds seems to
+  work OK, while 300 string-valued varbinds triggers an overrun.
+
+    The Net-SNMP releases handle packet buffers rather differently,
+  and are not subject to the same fixed restrictions.
+
+
+
+<a name="How_can_I_monitor_my_systems__disk__memory__etc__">
+How can I monitor my systems (disk, memory, etc)?
+------------------------------------------------
+
+    In general, the Net-SNMP suite consists of relatively low-level
+  tools, and there is nothing included that is designed for high-level,
+  long-term monitoring of trends in network traffic, disk or memory
+  usage, etc.
+
+    There are a number of packages available that are designed for this
+  purpose.  Two of the most widely used are MRTG (http://www.mrtg.org/)
+  and Cricket (http://cricket.sourceforge.net/).  There are details of
+  how to set up Cricket to monitor some of the UCD extensions at
+  http://www.afn.org/~jam/software/cricket/
+
+     We have also set up a page that describes in detail how MRTG
+  can be set up to monitor disk, memory and cpu activity at
+  http://www.net-snmp.org/tutorial-5/mrtg/index.html
+
+    There is also a web-based network configuration system "Net-Policy",
+  based upon SNMP.  This is not strictly connected to the Net-SNMP project,
+  but a number of the core developers are also involved with that system.
+  See http://net-policy.sourceforge.net for more details.
+
+
+
+<a name="Applications_complain_about_entries_in_your_example__snmp_conf__file___Why_">
+Applications complain about entries in your example 'snmp.conf' file.  Why?
+--------------------------------------------------------------------------
+
+    The example configuration file 'EXAMPLE.conf' is designed as a config
+  for the agent, and should be installed as 'snmpd.conf' (note the 'd').
+  The file 'snmp.conf' is intended for general configuration options,
+  applicable to all applications (via the SNMP library).
+    Rename (or merge) the 'snmp.conf' file to 'snmpd.conf', and this should
+  fix the problem.
+    Note that there is no example snmp.conf shipped with the standard
+  distribution.
+
+
+
+<a name="OK__what_should_I_put_in_snmp_conf_">
+OK, what should I put in snmp.conf?
+----------------------------------
+
+    This is used to set common configuration values for most of the
+  applications, to avoid having to specify them every time.  Examples
+  include the SNMPv3 settings mentioned above, defaults for which MIBs
+  to load and where from, and the default SNMP version, port and
+  (if appropriate) the community string to use.
+
+    Some of these (such as the MIB file location), might belong in a
+  shared snmp.conf file (typically /usr/local/share/snmp/snmp.conf or
+  /etc/snmp/snmp.conf) to apply to all users of the system.  Others
+  (particularly the SNMPv3 security settings), are more likely to refer
+  to a particular user, and should go in a personal snmp.conf file
+  (typically $HOME/.snmp/snmp.conf).
+
+    Note that the Net-SNMP package does not come with an example snmp.conf
+  file.  See 'snmpget -H' and/or the snmp.conf(5) man page for more details.
+
+    You can also use the "snmpconf" command to help you generate your
+  snmp.conf configuration file (just run it and answer its questions).
+
+
+
+<a name="PERL">
+PERL
+====
+
+<a name="Where_can_I_get_the_perl_SNMP_package_">
+Where can I get the perl SNMP package?
+-------------------------------------
+
+  Joe Marzot's excellent perl SNMP module, which requires the ucd-snmp
+  library, is now included in the ucd-snmp source release.  It's
+  located in the perl/SNMP subdirectory of the ucd-snmp source tree.
+
+  It can also be found at any Comprehensive Perl Archive Network
+  (CPAN) site mirror in modules/by-module/SNMP.  To find the CPAN site
+  nearest you, please see http://www.cpan.org/SITES.html.
+
+  With the v5 release of the Net-SNMP suite, this is now accompanied by
+  a number of perl modules grouped together under the NetSNMP namespace.
+
+  Consult the README file in the SNMP perl module distribution to find 
+  out what version of the ucd-snmp library it needs to be linked against.
+
+
+
+<a name="How_do_I_install_the_Perl_SNMP_modules_">
+How do I install the Perl SNMP modules?
+--------------------------------------
+
+  Assuming you have a reasonably new (and properly configured) perl system,
+  this should be simply:
+
+        cd perl		(for 5.0.x)
+  or    cd perl/SNMP	(for 4.2.x)
+	perl Makefile.PL
+	    (press RETURN when prompted for host and community)
+	make
+	make test
+	make install  (probably as root)
+
+  Note that with the 5.0 release line, there are additional SNMP-related
+  perl modules that should probably be installed as well.  These can also
+  be found under the 'perl' subdirectory.  At the very least, install the
+  'default_store' module.
+    This is not necessary with the 4.2.x releases.
+
+
+
+<a name="But_compiling_this_fails__Why_">
+But compiling this fails! Why?
+-----------------------------
+
+  The perl module tends to delve quite deeply into the internals of the
+  main Net-SNMP library, and so is quite sensitive to changes within the
+  library.  It's important to use the correct version of the module, that
+  corresponds to the version of the library you have installed.  If you're
+  working with the main Net-SNMP distribution, the appropriate version of
+  the perl module is shipped as part of this, but you *must* have
+  run "make install" on the main Net-SNMP distribution *first*.
+
+  If you're working with a ready-installed version of the library, make
+  sure you obtain a compatible version of the perl module.
+
+    Note that the perl modules will be compiled using the compiler
+  (and compiler settings) used for compiling the original perl binary,
+  *not* those used for compiling the Net-SNMP (or UCD) library.
+  If these are different (e.g. 'gcc' used for one and 'cc' for the other)
+  then this may well cause problems.  It's much safer to use a consistent
+  environment for both.  This issue is discussed in greater detail in
+  the README.solaris file.
+
+    Also note that the v5 Net-SNMP suite *must* be configured to provide
+  shared libraries in order for the perl modules to work correctly.  This
+  is not necessary with the v4 UCD-SNMP libraries.
+
+
+
+<a name="Compiling_the_perl_module_works_OK__but__make_test__fails__Why_">
+Compiling the perl module works OK, but 'make test' fails. Why?
+--------------------------------------------------------------
+
+  That's difficult to answer in general.
+  Some of the perl tests are rather picky, so this may simply be
+  some minor inconsistency between your precise setup, and the
+  expectations of the test environment.
+
+    Check that you are working with the perl distribution that matches
+  the SNMP libraries (use the 'perl/SNMP' in preference to CPAN), and
+  that you have installed the main libraries successfully (uninstall
+  any old versions if you're having trouble).
+
+    If all this looks OK, and if most of the tests pass, then it's
+  probably safe to run 'make install' anyway.   Probably.
+
+
+
+<a name="The_perl__make_test__fails_on_the_OID_tests__Is_it_safe_to_continue_">
+The perl 'make test' fails on the OID tests. Is it safe to continue?
+-------------------------------------------------------------------
+
+  No.  Almost certainly not.  If the "perl/OID" tests fail the first
+  four tests, and then crashes out complaining about a "netsnmp_oidPtr",
+  then this is a sign of a more fundamental problem.
+
+  The 4.2.x line perl support was a single module, so was independent
+  of the way that the C library was configured.  In contrast to this, 
+  the 5.0.x perl support consist of a number of inter-cooperating modules,
+  which rely on sharing a consistent C library environment.  In practise,
+  this means that the perl modules *MUST* be configured and compiled using
+  a shared version of the C library.   Unfortunately, the default for
+  most early versions of the Net-SNMP suite was to compile using static
+  libraries unless explicitly configured to use shared libraries.  The
+  default should be to use shared libraries from 5.0.7 onwards.
+
+  The error "oid1 is not of type netsnmp_oidPtr" is a fairly sure indication
+  that the C library was compiled statically.   You'll need to re-configure
+  the main Net-SNMP package using the "--enable-shared" configure flag.
+  Then re-install the C library before re-configuring and re-compiling
+  the perl module support.
+
+  Note that this problem does not arise when using the 4.2.x version
+  of perl support.
+
+
+
+<a name="I_m_trying_to_use_mib_c__or_tkmib__and_it_can_t_locate_SNMP_pm_">
+I'm trying to use mib2c (or tkmib) and it can't locate SNMP.pm?
+------------------------------------------------------------
+
+  That's probably because the SNMP perl module hasn't been installed.
+  It's not part of the standard perl distribution, nor is it installed
+  by default in RedHat Linux (for example).
+    You'll need to install it.  See the previous two questions.
+
+
+
+<a name="I_m_trying_to_use_mib_c__or_tkmib__and_it_can_t_load_SNMP_so_">
+I'm trying to use mib2c (or tkmib) and it can't load SNMP.so?
+------------------------------------------------------------
+
+    This is probably the same problem.  Either the SNMP module
+  hasn't been installed, or it's the wrong version.  See the
+  previous two questions.
+
+
+
+<a name="I_m_trying_to_use_tkmib_and_it_can_t_locate_Tk_pm_">
+I'm trying to use tkmib and it can't locate Tk.pm?
+-------------------------------------------------
+
+  Tk.pm is another Perl package that needs to be installed before tkmib
+  will run.  It's also available on Perl CPAN.  We suggest using version
+  "Tk800.011" or later.  It can be installed by issuing the command:
+
+		perl -MCPAN -e shell ; "install Tk"
+
+
+
+<a name="I_ve_got_a_problem_with_the_Net_SNMP_module___Can_you_help_">
+I've got a problem with the Net-SNMP module.  Can you help?
+----------------------------------------------------------
+
+  Sorry, despite the similar-sounding name, the Net-SNMP (or Net::SNMP)
+  module is nothing to do with this package, or the NetSNMP modules.
+  Net::SNMP is a "pure-perl" implementation of SNMP support, developed
+  by David Town.  The developers of the (C-based) Net-SNMP suite do
+  not have any significant experience in using this particular module,
+  and you'll probably be better off asking for help via CPAN or some
+  other perl-related forum.
+
+
+
+<a name="MIBS">
+MIBS
+====
+
+<a name="Where_can_I_find_a_MIB_compiler_">
+Where can I find a MIB compiler?
+-------------------------------
+
+  That depends what you mean by a "MIB compiler".  There are at least two
+  types of tool that are commonly referred to by this name.
+
+  The first is a tool to check MIB files for validity.  This functionality
+  is mostly integrated within the MIB parser (part of the Net-SNMP library)
+  and hence included in all the applications.  The tool 'snmptranslate' is
+  probably the most appropriate for this purpose.
+    Note that the parser is fairly forgiving (see 'What ASN.1 parser is used'
+  below), so this should not be regarded as a stamp of approval.
+
+    The second type of tool is one to turn a MIB specification into C code,
+  specifically one designed to aid agent implementation.  The command 'mib2c'
+  is an example of such a tool for the Net-SNMP agent.  
+  See the CODING section for more information.
+
+
+
+<a name="I_can_t_load_any_of_the_mib_files__and_they_seem_to_be_missing">
+I can't load any of the mib files, and they seem to be missing
+the first two characters of the filename.  What's happening?
+-----------------------------------------------------------
+
+  This is a problem experienced with Sun systems when the tools have
+  been compiled with a mixture of BSD and Solaris environments.
+  You'll need to re-configure and compile the tools, making sure that
+  '/usr/ucb' is not in your PATH (or at least comes at the end).
+
+
+
+<a name="Why_aren_t_my_mib_files_being_read_in_">
+Why aren't my mib files being read in?
+-------------------------------------
+
+    The Net-SNMP library only loads a subset of MIB files by default.
+  This list is set at when the suite is first configured and compiled,
+  and basically corresponds to the list of modules that the agent supports.
+  (This is a simplification, but is a reasonable first approximation).
+
+    You can override this by using the command-line option '-m', the
+  environmental variable 'MIBS' or the snmp.conf directive 'mibs'.
+  Each of these take a (colon-separated) list of MIB module names
+  to load.   Starting the list with a '+' character will add them to
+  the default list - otherwise it replaces the defaults.
+
+    Using the special value 'ALL' will load all the MIB files that
+  the library can find.
+
+
+    Alternatively, the tools may be looking in the wrong place.
+  The default location for the mib files is /usr/local/share/snmp/mibs.
+  Again, this is set when the suite is first configured and compiled.
+  This can be changed using the environmental variable 'MIBDIRS'
+  or the snmp.conf directive 'mibdirs'.
+
+    Note that this may very well affect you if you've installed a
+  new version of the suite manually, replacing one provided by the
+  supplier (which typically would use a more 'central' location).
+
+
+    Finally, are you sure that you've installed the MIB files?
+  If you've compiled the suite from scratch, you need to run
+  "make install" at least once, before the tools will be able to
+  find the MIB files.  This is unlikely to be a problem if you've
+  been working with the tools for a while, but can bite those coming
+  fresh to the SNMP world.
+
+
+
+<a name="I_m_getting_answers__but_they_re_all_numbers__Why_">
+I'm getting answers, but they're all numbers. Why?
+-------------------------------------------------
+
+  This is actually the same as the previous question.  Because the tools
+  don't read in every MIB module they can find, it is quite possible
+  for results from an agent to refer to modules that have not been loaded
+  (particularly with GETNEXT requests, or when walking a tree).
+     The tools will report the answer quite correctly, but won't translate
+  identifiers and enumerations into readable strings.  To fix this, use
+  the environmental variables MIBS or MIBFILES (or the '-m' and '-M' flags)
+  to read in the relevant module files.
+
+
+
+<a name="What_does__Cannot_find_module__XXX_MIB___mean_">
+What does "Cannot find module (XXX-MIB)" mean?
+---------------------------------------------
+
+    This is similar to the previous questions.   In this case, it's
+  stating that it can't find the specified module - either because
+  it's not installed properly, or the name used is subtly wrong.
+
+    If it's just one or two modules that are not being found, check
+  that the files are in the expected location, are readable, and the
+  name being used is correct.  Note that the name reported is the
+  name of the MIB module, which is not necessarily the same as the
+  name of the file. See the question 'How do I add a MIB to the tools?'
+  for more details on this.
+
+    If the tool is generating a whole slew of errors, then it's
+  likely that either the MIB files haven't been installed at all,
+  or the library is looking in the wrong place.   See the previous
+  two questions.
+
+
+
+<a name="What_about__unlinked_OID__">
+What about "unlinked OID"?
+-------------------------
+
+    This means that the library has been able to find the MIB module,
+  and parse the individual objects defined in it, but is having problems
+  linking them together into a consistent tree.  In particular, it
+  can't find an object corresponding to the name within the braces
+  (i.e. the 'xxx' in '{xxx 99}').
+
+    This is probably due either to a typo in this name (remember that
+  names are case sensitive, so a reference to 'xxx' will *not* match
+  a definition of 'Xxx'), or else the name is defined in another MIB
+  file, and this dependency is missing from the IMPORT clause of this
+  MIB file.
+
+
+
+<a name="The_parser_doesn_t_handle_comments_properly__Why_not_">
+The parser doesn't handle comments properly. Why not?
+------------------------------------------------------------
+
+  The most likely reason is that the line in question contains two
+  (or more) sequences of pairs of dashes.  This is often used to try
+  and "comment out" an unwanted line that already contains a comment:
+
+	--   broken ::= { myMIB 1 }   -- This isn't working yet
+
+  The assumption here is that a comment continues to the end of the line.
+  Unfortunately, this assumption is not correct.
+    A comment will continue either to the end of the line, or the next
+  occurance of a pair of dashes.  Thus in this case, the definition of
+  "broken" is commented out (as intended) but the following text is
+  treated as part of the MIB, and will generate an error.
+
+    A similar effect can be obtained when a line of dashes has been used
+  to try and mark separate parts of a MIB file.
+
+    Most of the applications have a command-line option (-Pc) which will
+  work around this problem by treating the whole line as a comment.  But
+  this is not strictly legal, and the offending MIB file should really be
+  corrected.
+
+
+
+<a name="How_do_I_replace_MIB_values_with_new_ones_">
+How do I replace MIB values with new ones?
+-----------------------------------------
+
+  The Net-SNMP parser generally takes the first definition it sees for each
+  object in the MIB hierarchy.   Even if you specify your file to be read
+  first, if the IMPORTS clauses reference a MIB with competing objects,
+  those objects will be parsed first.
+
+  When specifying the Replace MIB command-line option (-PR), the parser
+  will use definitions sourced from the most recent MIB file.
+  The parser will replace MIB objects when the sub-identifier and name match.
+
+  Caution: Using Replace MIB, there is NO guarantee that the resulting
+  MIB tree will be correct.  Other MIB objects matching the name but
+  not the sub-identifier will persist.  Sub-hierarchies may be reparented.
+  In particular, random access searching [see man 1 snmpcmd]
+  may give unexpected result.
+  The Replace MIB option is experimental, buyer beware, carpe diem, etc.
+
+  Here are a few considerations to help you obtain good results.
+  These hold true even if you never use the Replace MIB feature.
+  Your suggestions for improvement are welcomed.
+
+    1. The parser searches the specified directories and attempt
+       to parse every file whose path does not begin with "." (period).
+       Remove (or rename) older MIB files from these directories.
+       Rename "README" to ".README" , etc.
+
+    2. Hint: the parser's module list is in LIFO order. You may see better
+       results if the directory with the most correct MIB files is
+       specified last in the MIBDIRS environment.
+
+    3. Constrain the parser to not read in default MIB files by setting
+       the MIBS environmental variable to the appropriate separator character
+       (semi-colon on win32, colon everywhere else).
+       Setting this to "" may also have the same effect.
+
+    4. The MIBFILES environment can specify the path of the new MIB file.
+
+  Within a program, the call:
+	 /*  4.2.x  */
+	 ds_set_boolean(DS_LIBRARY_ID, DS_LIB_MIB_REPLACE, 1 | 0);
+
+  or, if using the 5.0.x series code:
+	/*  5.0.x  */
+	netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
+			       NETSNMP_DS_LIB_MIB_REPLACE, 1 | 0);
+
+  will enable or disable the Replace MIB feature respectively.
+  If you're having problems loading a particular MIB file, this
+  call can be used to disable this feature, before using read_mib() to
+  load the required file, and then re-enabling the Replace MIB feature.
+  (or vice versa, as appropriate).
+
+
+
+<a name="How_can_I_get_more_information_about_these_MIB_file_problems_">
+How can I get more information about these MIB file problems?
+------------------------------------------------------------
+
+  The command 'snmptranslate' is used to translate between numeric
+  and symbolic forms of OIDs.  It uses the same routines as the
+  'active' commands, but does not rely on communicating successfully
+  with a network management agent.  As such, it is a useful tool
+  for identifying problems with reading in MIB files.
+
+    In particular, the following options may be useful in
+  identifying problems:
+	-Pw  warns about conflicting symbols
+	-PW  prints more verbose warnings about other problems as well
+		(in both cases, ignore the 'xmalloc' reports)
+	-T   provides sub-options for various views of these entries
+
+  There are other '-P' options to control various aspects of MIB parsing.
+  See the 'snmptranslate(1)' and 'snmpcmd(1)' man pages for more details,
+  or the tutorial at
+	http://www.net-snmp.org/tutorial-5/commands/snmptranslate.html
+
+
+
+<a name="What_s_this_about__too_many_imported_symbols__">
+What's this about "too many imported symbols"?
+---------------------------------------------
+
+  Any MIB file starts with an (optional) list of identifiers that
+  it "imports" from other files.  The parser implements this using
+  a fixed size buffer to hold the import information.
+    There are two circumstances in which this can result in the
+  error message shown above.
+
+    Firstly, if the MIB file refers to an unusually large number
+  of external identifiers.  Handling this case requires a (trivial)
+  patch to the parsing code.  Contact the coders list for advice.
+     (This is extremely rare - the only example that
+      we've come across is the Cabletron Trap MIB).
+
+    Much more common is a syntax error in the IMPORTS clause of the
+  MIB file in question.  In particular, check that this ends in a
+  semicolon, before going on to the main definition section.
+  
+
+
+<a name="AGENT">
+AGENT
+=====
+
+<a name="What_MIBs_are_supported_">
+What MIBs are supported?
+-----------------------
+
+  The following MIBs are supported (at least in part and on some systems):
+
+	- MIB-2  General network statistics (RFC 1213)
+	- UCD agent extensions
+		(processes, disks, memory, load average,
+		 shell commands, error handling)
+	- Host Resources (RFC 1514 and 2790)
+	- SNMPv3 MIBS (RFCs 2571-6)
+
+  The SNMPv2 Party and Manager-to-Manager MIBs (RFCs 1447 & 1451) have been
+  withdrawn.
+
+
+
+<a name="What_protocols_are_supported_">
+What protocols are supported?
+----------------------------
+
+  The agent supports all three current versions of SNMP (v1, v2c and v3),
+  over both UDP and TCP transports, as well as a SMUX (RFC 1227) master
+  agent, AgentX (RFC 2257 ) in both master and subagent roles, and SNMP
+  proxying.
+
+
+
+<a name="How_do_I_configure_the_agent_">
+How do I configure the agent?
+----------------------------
+
+  That depends on what you want it to do.  See the snmpd.conf(5) manual
+  page for the possibilities.
+
+  You can also run the "snmpconf" perl script to help you create this
+  file.  Start off with 'snmpconf -g basic_setup' to get you going.
+
+
+
+<a name="How_do_I_add_a_MIB_to_the_agent_">
+How do I add a MIB to the agent?
+-------------------------------
+How do I add functionality?
+--------------------------
+
+  While simply adding a file to the MIB directory (and possibly tweaking
+  the list of MIBs to load) is sufficient for the tools, unfortunately
+  extending the functionality of the agent to include this is not so simple.
+  In fact, the agent makes little or no use of these files, and will work
+  quite happily without them.  All the information about the syntax and
+  scope of the variables supported is hardwired into the implementation
+  of the agent.
+
+  There are a number of alternative ways to add functionality for a new
+  MIB to the agent.
+
+  Firstly, it is possible that the agent distribution already includes
+  the desired functionality, but this has simply not been configured in
+  to the running version.  This is done using the configure option
+		--with-mib-modules="list"
+  (where "list" is a space-separated list of modules to include) then
+  recompiling the agent.
+  Note that some functionality concerned with monitoring and managing
+  unix hosts is included in the UCD extension modules, which are located
+  within the 'private' branch of the MIB tree.  This is covered in a later
+  question in this FAQ.
+
+  Secondly, it is possible for the agent to run commands or shell scripts
+  in response to queries.  These can obtain and report the necessary
+  information, or perform actions as required.
+  Detailed information and examples are provided in the snmpd(8) and
+  snmpd.conf(5) manual pages, and the EXAMPLE.conf file.
+  This is known as "pass-through" support.
+
+  Thirdly, it may be possible to link another agent (which already
+  supports the desired MIB), as a "subagent" of the Net-SNMP master
+  (or vice versa).  The possibilities here are SMUX, AgentX or proxied
+  SNMP (see the next question but one).
+
+  Finally, the agent itself can be extended to support additional MIB
+  groups, by writing the necessary C code, and including this within
+  the main agent - either statically compiled in, or dynamically loaded.
+  This is covered further in the next section.
+
+    Note that there is no visible difference between 'pass-through'
+  MIB support, subagents, and modules implemented within the main agent
+  itself. Tools querying the agent will see a single MIB structure.
+ 
+
+
+<a name="What_s_the_difference_between__exec____sh__and__pass__">
+What's the difference between 'exec', 'sh' and 'pass'?
+-----------------------------------------------------
+
+    'exec' will fork off the specified command and return the exit status
+  and/or the output.  Arguments are passed directly to the command.
+
+    'sh' is similar, but invokes a shell to run the command line given.
+  This means that quoted arguments will be recognised as such, and also
+  allows redirection, and other similar shell interpretation.
+
+  Neither of these mechanisms require the command to have any knowledge
+  of the fact that they are being used in this manner.  Note that return
+  values are cached within the agent for 30 seconds, rather than invoking
+  the command for every request.
+
+
+    'pass' is a more general mechanism for extending the agent, and the
+  command given will be invoked for any request within the specific MIB
+  subtree.  Details of precisely how this command will be called in
+  various circumstances is given in the 'snmpd.conf(5)' man page.
+
+    'pass-persist' is similar, but the command will continue running
+  even once the initial request has been answered.
+
+  See 'snmpd.conf(5)' for more details.
+
+  
+
+<a name="What_s_the_difference_between_AgentX__SMUX_and_proxied_SNMP_">
+What's the difference between AgentX, SMUX and proxied SNMP?
+-----------------------------------------------------------
+
+    All three are protocols that can be used to make two or more agents
+  appear as one to the querying application.  In each case, one agent
+  takes the role of "master", and delegates requests to one of the others
+  as and where this is appropriate.  The differences between them mainly
+  relate to how data is represented, and the mechanisms for communication
+  between master and subagents.
+
+    SMUX and proxy SNMP both essentially use the standard SNMP packet format.
+  The main difference is that a proxy SNMP subagent need not be aware that
+  it is acting in such a role.  It typically listens on a non-standard port,
+  and simply receives requests as usual, forwarded from the master agent. 
+  The main issue to be aware of is that such requests will usually appear
+  to come from the local host, and this may affect how the access control
+  mechanisms need to be set up.
+
+    SMUX uses a similar packet format, but the subagent "registers" with
+  the master agent, providing a suitable password.  The Net-SNMP (and UCD)
+  agent includes the possibility of acting as a SMUX master agent, but the
+  suite does not include a subagent API.   Note that the SMUX protocol has
+  essentially been superceded by AgentX, but is still provided in order to
+  support existing SMUX subagents.
+    See the file 'agent/mibgroup/README.smux' for details.
+
+    AgentX uses a more compact (and simpler) packet format, with a richer
+  range of administrative commands, and provides a more flexible and reliable
+  extension mechanism.  The Net-SNMP agent can be used in both master and
+  subagent roles, and the agent library can also be used to embed an AgentX
+  subagent within another application.
+    See the file 'README.agentx' for details.
+
+  Note that support for SMUX is not configured in by default.  You will
+  need to run configure with the option
+
+		--with-mib-modules=smux
+
+  Starting from release 4.2.1, AgentX support is now included by default,
+  but needs to be explicitly activated in the master agent.  Do this by
+  adding the line
+
+		master agentx
+
+  to the snmpd.conf file before starting the agent.  Note that there are
+  a number of known problems with the AgentX support in the 4.x line, and
+  this should not be used on production systems.  The 5.0 AgentX support
+  has been significantly improved, and production use is less foolhardy.
+    See README.agentx for details.
+
+
+
+<a name="What_about__dlmod____what_s_that_about_">
+What about 'dlmod' - what's that about?
+--------------------------------------
+
+  Dynamically loaded modules are a means of including a MIB implementation
+  module within the main SNMP agent (or an AgentX subagent) without needing
+  to re-compile and re-link the agent binary.  Instead, details of the
+  module(s) to load are specified in the configuration file, and the agent
+  locates the files listed, and merges them in at run time.
+
+  See http://www.net-snmp.org/tutorial-5/toolkit/dlmod/ for more information.
+
+
+
+<a name="Which_should_I_use_">
+Which should I use?
+------------------
+
+  That's a difficult question.
+
+  Comparing the three protocols, SNMP was not originally designed
+  as an internal subagent-communication protocol, and there are
+  certain architectural limitations to SMUX, which were addressed
+  as part of the design of AgentX.  These include such aspects as
+  reliable handling of SET requests (particularly in the face of
+  failures), a common value for sysUpTime, and a mechanism for
+  sharing tables across multiple subagents.
+    So from a purely functional point of view, AgentX is the most
+  appropriate choice for subagent communication.
+
+  In terms of implementation, SMUX is the most mature of the three,
+  but is no longer being actively maintained.  The original author
+  has moved on, and the current developers don't use this facility.
+  It also only includes master agent support - the package does not
+  provide a SMUX sub-agent API.
+    The AgentX support in the 4.x line has a number of known problems,
+  and is not suitable for use in front-line situations (though it's
+  probably sufficiently stable and functional for simple day-to-day
+  use).  The 5.0 agent has seen a significant amount of development,
+  and is a much more reliable beast.
+    Bear in mind that the AgentX and proxy SNMP implementations are
+  relatively new code, so have not received the same level of active
+  service that the core agent has.  But with that caveat, either of
+  these options should be suitable for most use.
+
+    This decision will probably be dictated by external considerations
+  (i.e. the other agents you need to combine with).  Ideally, you
+  should be looking towards AgentX, but this is not always possible.
+
+  Dynamically loaded modules serve a somewhat different purpose,
+  and are purely concerned with how the individual MIB implementation
+  modules are located.  These can be combined with either a "pure SNMP"
+  model, an AgentX subagent or a proxied SNMP agent.  They will involve
+  a slightly greater load on agent start-up (plus an extra level of
+  complexity if things go wrong) - balanced against the ability to
+  avoid re-compiling and re-linking a working binary.
+
+    Note that as far as individual MIB modules are concerned, the
+  protocol used to transport the request is more or less irrelevant.
+  The same information is being requested (or set) each time, so
+  a MIB module ought to be protocol-independent.  This was one of
+  the design aims of the AgentX support, and the exact same module
+  code can be included as part of a pure-SNMP master agent, or an
+  AgentX subagent, either compiled in or dynamically loaded with no
+  modifications needed to the MIB module code itself.
+
+
+
+<a name="Can_I_use_AgentX_when_running_under_Windows_">
+Can I use AgentX when running under Windows?
+-------------------------------------------
+
+  Yes, but there are a couple of things to be aware of.
+
+  Firstly, by default the AgentX master listens on the Unix domain
+  socket '/var/agentx/master', which doesn't work under Windows.
+  You'll need to tell it to listen on a TCP port, either by using
+  the command-line option "-x localhost:705",  or by adding the
+  directive "agentxAddress localhost:705" to the snmpd.conf file.
+
+  Secondly, be aware that the security of AgentX connectivity is not
+  particularly strong.  The examples given here would allow any process
+  running on the local machine to register as an AgentX subagent.  The
+  more obvious settings "-x 705" or "agentxAddress 705" would allow
+  a system *anywhere* on the network (or even from remote networks) to
+  register as an AgentX subagent.  This could potentially be used to
+  hijack the agent, or provide false information.
+
+
+
+<a name="How_can_I_run_AgentX_with_a_different_socket_address_">
+How can I run AgentX with a different socket address?
+----------------------------------------------------
+
+  There are two sides to an AgentX connection, and they need to
+  agree about which socket address to use.  So if you want to use
+  a different socket, you need to configure both sides accordingly.
+
+  For the Net-SNMP master agent, this is done using the command-line
+  option '-x'.  The command
+		"snmpd -x localhost:705 ...."
+  would start the agent listening on the TCP port 705 for connections
+  from the local system.
+
+  The main Net-SNMP agent can also be run in a "subagent" mode, and
+  this uses the same command-line option to specify a different
+  AgentX socket.  So
+		"snmpd -X -x localhost:705 ...."
+  would start it as a subagent, and connect to the master agent
+  listening on TCP port 705 on the same system.
+
+  A subagent running embedded within some other application will
+  typically not understand the same command-line options.  This
+  will need to set the same configuration programmatically.
+  For example, the example subagent driving code from the Net-SNMP
+  "subagent program" tutorial (on the project web pages) could
+  be made to connect to the same TCP port by adding the line
+     netsnmp_ds_set_string(NETSNMP_DS_APPLICATION_ID,
+                           NETSNMP_DS_AGENT_X_SOCKET, "localhost:705");
+  before the 'init_agent' call.
+
+  However, see the mention of AgentX security (or the lack of it!)
+  in the previous entry.
+
+
+
+<a name="How_can_I_combine_two_copies_of_the__mib___tree_from_separate_subagents_">
+How can I combine two copies of the 'mib2' tree from separate subagents?
+-----------------------------------------------------------------------
+
+  With the 4.x line agent, you can't.  Sorry about that.
+
+  With the 5.0 agent, this is possible by using the SNMPv3 context string
+  to distinguish between parallel MIB trees.  This can be set up for an
+  individual MIB implementation module when it registers itself with the
+  main agent framework (either directly, or via AgentX).  It can also
+  be set up for a proxied subagent as part of the proxy configuration
+  entry (see 'snmpd.conf(5)').
+    This facility is not currently available for SNMPv1 or SNMPv2c
+  requests (although it ought to be possible to use the community
+  string in a similar way).
+
+    Another way to handle this would be to tweak one of the subagents to
+  use a different set of (non-standard) OID assignments - perhaps by
+  relocating the whole of the subtree to another (private) OID.  This
+  is not ideal, but should work with all configurations.
+
+
+
+<a name="What_traps_are_sent_by_the_agent_">
+What traps are sent by the agent?
+--------------------------------
+
+  The agent sends a 'coldStart(0)' trap when it first starts up, and an
+  enterprise-specific trap 'nsNotifyShutdown' (or 'ucdShutdown') when it
+  stops.  It can also be configured to send an 'authenticationFailure(4)'
+  trap when it receives an SNMPv1 request using an unknown community name.
+  The Net-SNMP agent generates an enterprise-specific trap 'nsNotifyRestart'
+  (rather than the standard 'coldStart(0)' or 'warmStart(1)' traps) on
+  receiving a HUP signal - typically after being re-configured.
+
+    The agent does not send 'linkUp' or 'linkDown' traps by default.  The
+  Net-SNMP agent can be configured to do this using the 'monitor' config
+  directive.  See the 'snmpd.conf(5)' man page (under DISMAN-EVENT-MIB)
+  for details (including the need for an 'agentSecName' setting).
+
+    Similarly, it does not generate traps by default when one of the
+  monitored characteristics (disk usage, running processes, etc) enters or
+  leaves an error state.  This can be configured using the 'defaultMonitors'
+  config directive (also documented under DISMAN-EVENT-MIB).  Note that
+  these facilities are only available with the v5 Net-SNMP agent, and are
+  not supported by the v4 UCD agent.
+
+
+
+<a name="Where_are_these_traps_sent_to_">
+Where are these traps sent to?
+-----------------------------
+
+    With all these alerts, the agent also needs to be configured with
+  (one or more) destinations to send them to, specifying the type of
+  notification (v1 or v2 trap, or v2 inform) and the community name to
+  use.  This uses the snmpd.conf directives 'trapsink', 'trap2sink' and
+  'informsink' for the destination type, and 'trapcommunity' for the
+  community name.  SNMPv3 destinations can be configured using the directive
+  'trapsess'.   See the 'snmpd.conf(5)' man page for details.
+
+    Note that these directives control the type of notification that is
+  generated.  This is completely separate from the style of API used to
+  request that the notification should be sent.  If a module invokes the
+  v1-style API 'send_easy_trap', this will still send SNMPv2 notifications
+  to destinations configured using 'trap2sink' or 'informsink' (and vice
+  versa).
+
+    A configuration block such as
+
+        trapsink   localhost
+        trap2sink  localhost
+        informsink localhost
+
+  will result in *three* notifications being sent for each call to
+  'send_easy_trap' (or 'send_v2trap').  See 'snmp_trap_api(3)' for details.
+
+    Note that all notifications will be sent to all destinations.  The
+  agent does not (currently) support notification filtering.
+ 
+
+
+<a name="How_can_I_send_a_particular_trap_to_selected_destinations_">
+How can I send a particular trap to selected destinations?
+----------------------------------------------------------
+
+    With the v4 UCD agent, this isn't possible (or at least not
+  easily).  When you request the agent to generate a trap (using
+  either 'send_v2trap' or 'send_easy_trap'), this will be sent
+  to *all* the known destinations.
+
+    The v5 Net-SNMP agent introduced preliminary support for the
+  snmpNotifyFilterTable which is designed to allow this sort of
+  selective trap direction, though this is not currently active.
+  (The tables are present, but the information is not consulted)
+  Documentation on how to use this facility will appear once the
+  functionality is working properly.
+
+
+
+<a name="Why_does_calling__send_v_trap__generate_an_SNMPv__trap__or_vice_versa__">
+Why does calling 'send_v2trap' generate an SNMPv1 trap (or vice versa)?
+----------------------------------------------------------------------
+
+    The two versions of the trap API calls are concerned with how
+  the trap is represented when it is passed *in* to the API, not
+  the version of the trap PDU that will actually be generated by
+  the agent.  That is determined by the configuration token used
+  to set up the trap destination.
+
+    Remember that in general, all traps are sent to all destinations.
+  This means that a trap specified using the SNMPv1 trap syntax
+  needs to be converted to the SNMPv2 format before it can be sent
+  to an SNMPv2 (or SNMPv3) destination.  Similarly, a trap specified
+  using the SNMPv2 syntax needs to be converted to the SNMPv1 format
+  before it can be sent to an SNMPv1 sink.
+
+    Essentially, the API call to use depends on what you asking for,
+  which is not necessarily what the recipients will actually get!
+  See 'snmp_trap_api(3)' for a fuller explanation.
+
+
+
+<a name="When_I_run_the_agent_it_runs_and_then_quits_without_staying_around__Why_">
+When I run the agent it runs and then quits without staying around. Why?
+-----------------------------------------------------------------------
+
+  Firstly, are you certain that this is what is happening?
+
+  The normal operation of the agent is to 'fork' itself into the
+  background, detaching itself so that it will continue running even
+  when you log out, and freeing the command line for subsequent use.
+  This looks at first sight as if the agent has died, but using 'ps'
+  to show all processes should reveal that the agent is still running.
+
+  To prevent this behaviour (such as when attempting to debug the
+  agent), you can start it with the '-f' flag.  This suppresses the
+  fork, and the agent will run as a 'normal' command.  It's also often
+  useful to use the '-L' (or '-Le') flag, to log messages to stdout.
+
+  On the other hand, if 'ps' shows that the agent is not running, then
+  this is an error, and probably show that something went wrong in
+  starting the agent up.  Check the agent log file for any error messages,
+  or run it with '-f -L' and see what it reports.
+
+  One known example of this is the 'ucd-snmp' RPM distributed by RedHat.
+  This agent crashes if there is a 'disk' configuration entry in the
+  snmpd.conf file.  It is not currently known what causes this, as this
+  setting works correctly if the agent is compiled from source.
+
+
+
+<a name="After_a_while_the_agent_stops_responding__and_starts_eating_CPU_time___Why_">
+After a while the agent stops responding, and starts eating CPU time.  Why?
+--------------------------------------------------------------------------
+
+  This is most commonly seen when performing an "snmpwalk" on an agent
+  that's either using a default "vendor provided" configuration
+  (typically access to the 'system' group only), or which is trying
+  to restrict access for individual users or communities to a subset
+  of the whole OID tree.
+
+  The agent implementation of "GetNext" processing is relatively
+  inefficient when dealing with inaccessible objects, and it is quite
+  easy for the clients to time-out and retry a request, while the agent
+  is still trying to process the original.  If this happens continually
+  (as is typically the case with an snmpwalk), the agent can get swamped
+  by this backlog.
+
+  The 5.0.x line has now addressed this, starting with the 5.0.7 release.
+  The 4.2.x line still suffers from this problem, and it is unlikely that
+  this will be fixed.  (The 5.0.7 approach relies on some of the new
+  features in the 5.0.x line, and it has not proved possible to apply
+  this to the 4.2.x code base).
+
+
+
+<a name="How_can_I_stop_other_people_getting_at_my_agent_">
+How can I stop other people getting at my agent?
+-----------------------------------------------
+
+  Firstly, are you concerned with read access or write access?
+
+  As far as changing things on the agent is concerned, there is relatively
+  little that can actually be altered (see the answer to " I cannot set
+  any variables in the MIB" above).
+
+    If you are using the example config file, this is set up to allow
+  read access from your local network, and write access only from the
+  system itself (accessed as 'localhost'), both using the community name
+  specified.  You will need to set appropriate values for both NETWORK
+  and COMMUNITY in this file before using it.
+    This mechanism can also be used to control access much more precisely.
+  (see the next questions for details)
+
+  Other options include:
+	- Blocking access to port 161 from outside your organisation
+		(using filters on network routers)
+	- Configuring TCP wrapper support ("--with-libwrap")
+		This uses the TCP 'libwrap' library (available separately)
+		to allow/deny access via /etc/hosts.{allow,deny}
+
+  For strict security you should use only SNMPv3, which is the secure
+  form of the protocol.
+
+
+
+<a name="How_can_I_listen_on_just_one_particular_interface_">
+How can I listen on just one particular interface?
+-------------------------------------------------
+
+    Normally, the agent will bind to the specified port on all interfaces
+  on the system, and accept request received from any of them.  With
+  version 4.2, the '-p' option can be used to listen on individual
+  interfaces.  For example,
+	
+			snmpd -p 161@127.0.0.1
+
+  will listen (on the standard port) on the loopback interface only, and
+
+			snmpd -p 6161@10.0.0.1
+
+  will listen on port 6161, on the (internal network) interface with address
+  10.0.0.1.   If you want to listen on multiple interfaces (but not all),
+  then simply repeat this option for each one:
+
+		snmpd -p 161@127.0.0.1 -p 6161@10.0.0.1
+
+  The v5 Net-SNMP agent has a similar facility, but does not use the '-p'
+  command line option flag.  Instead, the ports and/or interfaces to listen
+  on are simply listed on the command line, following any other options.  Also,
+  the syntax of port and interface is slightly different (interface:port).
+    So the three examples above would be
+
+			snmpd 127.0.0.1:161
+			snmpd 127.0.0.1:6161
+			snmpd 127.0.0.1:161 127.0.0.1:6161
+
+  The AgentX port option ('-x') works in much the same way, using the
+  "host:port" syntax (in both 4.2 and 5.0 lines - and yes, this *is* an
+  inconsistency in 4.2!)
+
+
+
+<a name="How_do_I_configure_access_control_">
+How do I configure access control?
+---------------------------------
+
+    The simplest way is to use the configure directives:
+
+		rocommunity public	(for SNMPv1/2c)
+		rwcommunity private
+  or
+		rouser user1		(for SNMPv3)
+		rwuser user2
+
+  These specify the community names or security names to accept for
+  read-only and read-write access to the whole of the supported MIB tree.
+  (Obviously you should change these names to match your requirements -
+  which is a particularly good idea in the case of 'rwcommunity'!)
+
+  Note that it is *not* necessary (and not advisible) to specify the
+  same community name for both rocommunity and rwcommunity directives.
+  The rwcommunity setting automatically includes rocommunity access,
+  and having both lines (with the same community name) may result in
+  apparently inconsistent behaviour.  Only use both settings when
+  specifying *different* community names.
+    The same holds true for rouser and rwuser.
+
+  All four of these settings can can also be restricted to particular
+  subtrees, and/or request sources.  See 'snmpd.conf(5)' for details.
+
+  These directives are effectively wrappers round the core access control
+  mechanism, which uses the four directives 'com2sec', 'group', 'view'
+  and 'access' to provide a more efficient and flexible control
+  over who can access which portions of the tree.
+
+    See the next question for the gory details, and the entry after
+  that for setting up SNMPv3 users.
+
+
+
+<a name="I_don_t_understand_the_new_access_control_stuff___what_does_it_mean_">
+I don't understand the new access control stuff - what does it mean?
+-------------------------------------------------------------------
+
+  The idea behind the new access control model is to give a more flexible
+  way of specifying who can see and do what within the MIB tree.
+  It's more complicated to understand than the simple example above, but
+  that's because it can do a whole lot more.
+
+    There are four configuration keywords in the new scheme:
+	'com2sec', 'group', 'view', and 'access'
+
+  We'll consider these one at a time, starting with 'access'.
+  (Because I feel like starting with the last one, that's why - OK?)
+
+
+  The "access" keyword has the job of specifying who has access to
+  which bits of the MIB tree.  This has eight parameters, so can look
+  rather offputting. Most of these can be safely left with default values
+  in most cases (so don't you worry your pretty little head about them).
+  The syntax is
+
+	access {group} "" any noauth exact {read-tree} {write-tree} {notify-tree}
+
+  where the entries in braces need to be defined elsewhere (I'm coming
+  to that - be patient!), and the rest can be left as shown here.
+
+	[ If you really want to know, the 'sec.model' field can 
+	  be used to have an access line that's only relevant to
+	  particular versions of SNMP (such v1 or v2c) rather than
+	  "any" version, and the 'sec.level' field to ensure that
+	  the request must be authenticated or encrypted.
+	    The context and prefix fields can be used to distinguish
+	  between parallel versions of the same overall OID tree
+	]
+
+
+  The "view" keyword is used to define particular bits of the MIB tree,
+  for use in the last three field of the access entry.
+  This has the syntax
+
+	view  {name}  included/excluded  {subtree}   {mask}
+
+  where {name} is the identifier to be used for this view (i.e. what should
+  appear in the access entry), and {subtree} is the portion of the MIB tree
+  that this name refers to (in either numeric or named form).
+    Note that the name of the view does not have to have anything to do
+  with the MIB sub-identifier names - it's purely an identifying tag for
+  use within the config file (though choosing a meaningful name is, as
+  always, a very good idea).
+  
+    The {mask} field can be used to control which elements of the OID subtree
+  should be regarded as relevant when determining which view an OID is in.
+  Normally, the whole of the OID should be included, and in this case the
+  mask field can be omitted.  See snmpd.conf for a description of how this
+  might be used.
+  The third field can be used to include or exclude particular portions
+  of the MIB from the view, and different lines can use the same view name
+  to build up a more complicated view, if that's what's needed.
+
+    The three view fields in the access line are used to control which
+  portions of the MIB tree a particular {group} can see (GET et al),
+  alter (SET), or request NOTIFYs on.
+
+
+
+    That's dealt with the "what" - now for the "who".
+  This is the role of the "group" and "com2sec" entries.
+
+  The "group" keyword gives general control, by mapping between a "security
+  name" (for a particular protocol version), and the internal name used in the
+  access line.  Note that the token "any" is no longer acceptable for the
+  security model - the original support for this was due due to a misreading
+  of the RFC.  You should replace any such line with separate versions for
+  each of the desired security models ('v1', 'v2c' & 'usm').
+
+    For SNMPv1 and SNMPv2c, the group line is just an intermediate step
+  between the "access" line and the "com2sec" line, which is the last bit
+  of the jigsaw.  The "com2sec" entry is used to determine a "security name"
+  from the traditional community string, taking into account where the request
+  has come from.  Thus the same community string can give access to  different
+  portions of the tree, depending on where the request is sent from.
+
+     For example, in an earlier version of the example config file, there
+  were two com2sec lines with the community string "public" - one was valid
+  from anywhere (with the security name "public") and one was only valid
+  from the local network (using the security name "mynet").
+     The group lines converted these security names into the groups "public"
+  and "mygroup" respectively, and the access lines gave these two groups
+  the ability to GET values in the 'system' sub-tree (from anywhere) or
+  the 'mib-2' sub-tree (from the local network).  Neither of these could
+  SET any values though, (since the write-tree was "none" in both cases).
+    Someone on the local machine, using the community string "private",
+  had the security name "local" and the group name "local", and hence had
+  full access (both GET and SET, as well as NOTIFY) to the whole of the
+  MIB tree (or at least everything under .1, which covers most things!)
+
+     Note that the three occurrences of "public", as community string,
+  security name and group name, were three totally separate things.
+  You can't use a community string in a security name field, or either
+  of these as a group name (or vice versa), unless you set up suitable
+  entries to map one name onto the other.
+
+    With SNMPv3, the security name is part of the basic protocol, and can
+  be used directly in a group definition.
+
+  And here concludes our tour of the view-based access control mechanism.
+  Phew!
+
+
+
+<a name="How_do_I_configure_SNMPv__users_">
+How do I configure SNMPv3 users?
+-------------------------------
+
+    Create a file /var/ucd-snmp/snmpd.conf file, containing the line
+
+	createUser {myUser} MD5 {myPassword} DES
+
+  (where {myUser} and {myPassword} are the appropriate values, _without_
+  the braces!).  Then start (or re-start) the snmpd agent.
+  This will create the new user.  See the access control entries above
+  for how to use this, and the file 'README.snmpv3' for more details.
+
+
+
+<a name="The__createUser__line_disappears_when_I_start_the_agent___Why_">
+The 'createUser' line disappears when I start the agent.  Why?
+-------------------------------------------------------------
+
+    That's deliberate.   The agent removes the (human-readable) 'createUser'
+  directive, and replaces it with an equivalent 'usmUser'.  This
+  contains the same information, but in a form that's only meaningful
+  internally.  This means that the password is not longer stored in
+  a human-readable form.  Additionally, the password has been converted
+  to a key that can only be used to access the local machine.  If someone
+  stole the new usmUser line on this machine, they could not use that
+  information to access any of your other agents.
+
+
+
+<a name="What_s_the_difference_between__var_ucd_snmp_and__usr_local_share_snmp_">
+What's the difference between /var/ucd-snmp and /usr/local/share/snmp?
+---------------------------------------------------------------------
+
+    Most "static" agent configuration should go in the traditional location
+  (typically /usr/local/share/snmp/snmpd.conf or /etc/snmp).   The
+  /var/ucd-snmp (or /var/net-snmp) location is used for information set during
+  the running of the agent, which needs to be persistent between one run of
+  the agent and the next.
+
+    Putting the 'createUser' line in this persistent file is an exception,
+  for security reasons (see above).  In general you shouldn't need to put
+  anything else here.
+
+
+
+<a name="My_new_agent_is_ignoring_the_old_snmpd_conf_file__Why_">
+My new agent is ignoring the old snmpd.conf file. Why?
+-----------------------------------------------------
+
+    The most likely explanation is that the new version of the agent is
+  looking in a different location than the previous one.  This is commonly
+  experienced when replacing a ready-installed version (e.g. from a vendor
+  distribution), with the current release installed from the source.
+
+    The default location for this file with the basic distribution is
+  /usr/local/share/snmp/snmpd.conf (or PREFIX/share/snmp/snmpd.conf).
+  Ready-installed versions often look for the file as /etc/snmpd.conf,
+  or /etc/snmp/snmpd.conf.  Try moving the old config file to the new
+  location, and restart the agent.
+
+    With release 5.0, the name of the package changed from "ucd-snmp"
+  to "net-snmp", and this change was reflected in the name of the persistent
+  /var directory.  So a v5 Net-SNMP agent will not look in
+  /var/ucd-snmp/snmpd.conf for settings from a v4 UCD agent.
+
+
+
+<a name="Why_am_I_getting__Connection_refused__">
+Why am I getting "Connection refused"?
+-------------------------------------
+
+    This is actually nothing to do with the access control mechanism
+  (though that's an understandable mistake).  This is the result of
+  the TCP wrapper mechanism using the files 'hosts.allow' and 'hosts.deny'
+  to control access to the service.  Some distributions may come with
+  this enabled automatically - otherwise you need to select it explicitly
+  by configuring using '--with-libwrap'.
+
+    The simplest way to avoid this problem is to add the line
+
+		snmpd: ALL
+
+  in the file /etc/hosts.allow (or wherever this file is on your system).
+  Though be aware that doing this removes one level of protection and allows
+  anyone to try and query your agent (though the agent's own access control
+  mechanisms can still be used to restrict what - if anything - they can see).
+
+  Note that personal firewalls (such as Linux' ipchains or iptables mechanism)
+  may have a similar effect (though typically this won't be logged).
+  See the earlier entry
+    Requests always seem to timeout, and don't give me anything back.  Why?
+
+
+ 
+<a name="I_m_getting_errors_about__bad_security_model____why_">
+I'm getting errors about "bad security model" - why?
+----------------------------------------------------
+
+  Until release 4.2, the access control handling accepted the token "any" 
+  to cover all of the recognised security models.  This is explicitly
+  forbidden in the relevant RFC, so support for this is being withdrawn.
+    As an interim measure, it is currently accepted (with the warning you
+  see), but this will not be the case in future releases of the agent.
+ 
+    You should replace the token 'any' with 'v1', 'v2c' or 'usm' as
+  appropriate.  If you want to support all three of these security models,
+  you'll need to use three distinct group lines, one for each. See the
+  example snmpd.conf file for details.
+
+  
+
+<a name="I_m_getting_errors_about__bad_prefix_match_parameter____why_">
+I'm getting errors about "bad prefix match parameter" - why?
+------------------------------------------------------------
+
+  This is similar to the previous question.  With 4.2, the syntax of the
+  'access' configure line has changed, and a value of '0' is no longer
+  acceptable for the sixth field.  Simply replace this with the word 'exact'.
+
+
+  
+<a name="Why_can_t_I_see_values_in_the_UCDavis__extensible__or__disk__trees_">
+Why can't I see values in the UCDavis 'extensible' or 'disk' trees?
+------------------------------------------------------------------
+
+  Both these trees are designed to report things you ask it to report
+  on.  If you don't declare anything in the snmpd.conf file for it to
+  monitor, it will not report anything.  See the snmpd.conf manual page
+  and the EXAMPLE.conf file for details on configuring the agent.
+
+  Optionally, run snmpconf -g monitoring to help you set up this
+  section of the snmpd.conf file.
+
+
+
+Why can't I see values in the UCDavis 'memory' or 'vmstat' trees?
+----------------------------------------------------------------
+
+  These mib modules are not supported on all operating systems, and
+  will not be included on any other system.  Currently, they are only
+  supported on Linux, HP-UX (memory only), Solaris, BSDi (vmstat on
+  BSDi4 only), Dynix, FreeBSD, NetBSD and OpenBSD.
+    If you want to help port it to other systems, let us know.
+
+  Note that these subtrees only report the current usage when
+  explicitly queried.  They do *not* generate traps when the
+  usage strays outside the configured bounds.
+  See the earlier FAQ entry
+    What traps are sent by the agent?
+
+
+
+<a name="What_do_the_CPU_statistics_mean___is_this_the_load_average_">
+What do the CPU statistics mean - is this the load average?
+----------------------------------------------------------
+
+  No.  Unfortunately, the original definition of the various CPU statistics
+  was a little vague.  It referred to a "percentage", without specifying
+  what period this should be calculated over.  It was therefore
+  implemented slightly differently on different architectures.
+
+    Recent releases includes "raw counters", which can be used to
+  calculate the percentage usage over any desired period.  This is
+  the "right" way to handle things in the SNMP model.  The original
+  flawed percentage objects should not be used, and will be removed
+  in a future release of the agent.
+
+    Note that this is different from the Unix load average, which is
+  available via the loadTable, and is supported on all architectures.
+
+
+
+<a name="How_do_I_get_percentage_CPU_utilization_using_ssCpuRawIdle_">
+How do I get percentage CPU utilization using ssCpuRawIdle?
+-----------------------------------------------------------
+
+  This one of the "raw counters" mentioned in the previous entry.
+  You need to take two readings of this object and look at the
+  difference between them.  That difference divided by the total
+  number of 'ticks' between the two readings (where one tick is
+  probably 0.01 seconds) will give you the percentage utilization
+  over that period.
+
+
+
+<a name="What_about_multi_processor_systems_">
+What about multi-processor systems?
+----------------------------------
+
+    Sorry - the CPU statistics (both original percentages, and the
+  newer raw statistics) both refer to the system as a whole.  There
+  is currently no way to access individual statistics for a particular
+  processor (except on Solaris systems - see below).
+
+    Note that although the Host Resources table includes a hrProcessorTable,
+  the current implementation suffers from two major flaws.  Firstly, it
+  doesn't currently recognise the presence of multiple processors, and
+  simply assumes that all systems have precisely one CPU.  Secondly, it
+  doesn't calculate the hrProcessorLoad value correctly, and either returns
+  a dummy value (based on the load average) or nothing at all.
+
+    As of net-snmp version 5.1, the Solaris operating system delivers some
+  information about multiple CPU's such as speed and type.
+
+    Other than that, to monitor a multi-processor system, you're currently
+  out of luck.  We hope to address this in a future release of the agent.
+  But you've got the source, so you can always have a go yourself :-)
+
+
+
+<a name="The_speed_type_of_my_network_interfaces_is_wrong___how_can_I_fix_it_">
+The speed/type of my network interfaces is wrong - how can I fix it?
+-------------------------------------------------------------------
+
+    Some operating systems will provide a mechanism for determining
+  the speed and type of network interfaces, but many do not.  In this
+  case, the agent attempts to guess the most appropriate values, based
+  on the name of the interface.
+    Version 4.2 allows you to override these guessed values, using the
+  configuration directive 'interface', specifying the name, type and
+  speed of a particular interface.  This is particularly useful for
+  fast-ethernet, or dial-up interfaces, where the speed cannot be
+  guessed from the name.
+    See the snmpd.conf(5) man page for details.
+  
+
+
+<a name="The_interface_statistics_for_my_subinterfaces_are_all_zero___why_">
+The interface statistics for my subinterfaces are all zero - why?
+----------------------------------------------------------------
+
+    Unfortunately, most kernels that support multiple logical
+  interfaces on a single physical interface, don't keep separate
+  statistics for each of these.  They simply report the overall
+  statistics for the physical interface itself.
+    There's no easy way around this problem - the agent can only
+  report such values as it can find out.  If the kernel doesn't
+  keep track of these figures, the agent can't report them.
+    Sorry!
+
+
+<a name="What_does__klread___bad_address__mean_">
+What does "klread:  bad address" mean?
+-------------------------------------
+
+  This means that the agent was unable to extract some of the
+  necessary information from the kernel structures.  This is
+  possibly due to:
+	- either looking in the wrong place for kernel information
+		(check the value of KERNEL_LOC)
+	- an error in the implementation of part of the MIB tree
+		for that architecture.  Try and identify which
+		OID is generating the error, and contact the
+		list 'net-snmp-coders@lists.sourceforge.net'
+		Remember to tell us what architecture you have!
+
+
+
+<a name="What_does__nlist_err___wombat_not_found___or_similar__mean_">
+What does "nlist err:  wombat not found" (or similar) mean?
+----------------------------------------------------------
+
+  This means that the agent wasn't able to locate one of the
+  kernel structures it was looking for.  This may or may not
+  be important - some systems provide alternative mechanisms
+  for obtaining the necessary information - Solaris, for example,
+  can produce a whole slew of such messages, but still provide
+  the correct information.
+    This error only occurs if you have used the flag
+  '--enable-debugging' as part of the initial configuration.
+  Reconfigure the agent with '--disable-debugging' and these
+  messages will disappear.  (It won't fix the underlying problem,
+  but at least you won't be nagged about it).
+
+
+
+<a name="How_about__Can_t_open__dev_kmem__">
+How about "Can't open /dev/kmem"?
+--------------------------------
+
+  This device is normally restricted to just being accessible by root
+  (or possibly by a special group such as 'kmem' or 'sys').  The agent
+  must be able to read this device to obtain the necessary information
+  about the running system.
+    Check that the agent was started by root, and is running with UID 0
+  (or suitable GID if appropriate).  The agent will normally continue
+  to run without this level of access permission, but won't be able to
+  report values for many of the variables (particularly those relating
+  to network statistics).
+
+ 
+
+<a name="The_agent_is_complaining_about__snmpd_conf____Where_is_this_">
+The agent is complaining about 'snmpd.conf'.  Where is this?
+-----------------------------------------------------------
+
+  It doesn't exist in the distribution as shipped.  You need to
+  create it to reflect your local requirement.
+    To get started, you can either just create this as an empty file,
+  or run snmpconf to help you create one.
+    See the snmpd.conf(5) manual page for further details.
+
+
+
+<a name="The_system_uptime__sysUpTime__returned_is_wrong_">
+The system uptime (sysUpTime) returned is wrong!
+-----------------------------------------------
+
+  Oh no it's not.
+  The defined meaning of 'sysUpTime' is
+	"the time ... since the *network management*
+	 portion of the system was re-initialized."
+
+  In other words, when the snmp agent was started, not when the
+  system itself last booted.  This latter information is available
+  in the Host Resources MIB as "host.hrSystem.hrSystemUpTime"
+  Note that even if the full Host Resources is not supported on
+  your system, it's worth configuring in the system portion using
+
+		'--with-mib-modules=host/hr_system'
+
+  and recompiling.  This particular group is reasonably likely to
+  work, even if some of the other more system-specific groups don't.
+
+
+
+<a name="How_can_I_reduce_the_memory_footprint_">
+How can I reduce the memory footprint?
+--------------------------------------
+
+  In order to reduce the memory footprint (for instance, to
+  embed the snmpd into a device), the following configure options
+  could be used.
+
+  '--disable-debugging'
+     This turns off all compilation of debugging info.
+
+  '--enable-mini-agent' '--with-out-mib-modules=examples/ucdDemoPublic'
+     This creates an agent the minimum amount of MIB modules
+     compiled in.
+     NOTE: If you need more MIB modules add then with the option
+     '--with-mib-modules=...' you add of course extra memory footprint.
+
+  '--with-transports=UDP'
+     This option specifies the transports domain you need.
+     For a simple agent UDP should be sufficient.
+
+   '--without-kmem-usage'
+     This can be used in order not to include the code that
+     operates on the /dev/kmem. This option cannot be used when
+     you do want a MIB module compiled in that depends on it.
+
+   '--with-mibdirs=' and '--with-mibs='
+     These options specify not loading the MIB modules for the
+     agent. It reduces the memory footprint only during
+     runtime.
+
+  On top of this one could even attempt to exclude the complete
+  MIB loading functionality, but there is currently no
+  configure option for this.
+
+  Once the agent (snmpd) has been linked, you might also try running
+  'strip snmpd' to remove un-necessary debug/symbol information.
+
+
+
+<a name="COMPILING">
+COMPILING
+=========
+
+<a name="How_do_I_compile_with__cc__instead_of__gcc__">
+How do I compile with 'cc' instead of 'gcc'?
+-------------------------------------------
+
+  Run configure with --with-cc=cc
+
+  Note that if you've already run configure once, it will probably have
+  detected the presence of 'gcc', cached this information, and may still
+  try to use this anyway.   In which case, simply remove the 'config.cache'
+  file before re-running configure.
+ 
+
+
+<a name="But_gcc_doesn_t_compile_it_successfully_on_my_new_Solaris_system__Why_not_">
+But gcc doesn't compile it successfully on my new Solaris system. Why not?
+-------------------------------------------------------------------------
+
+  Whenever you upgrade the operating system under Solaris, you need to
+  reinstall gcc, and run the 'fixincludes' script.  (This is probably
+  a sensible step to take when you upgrade any operating system).
+    Under Solaris 2.6, there is also a bug in the gcc 'fixinc.sv4' script.
+  This needs an additional line as follows:
+
+*** fixinc.svr4.cln     Thu Jun 15 22:03:29 1995
+--- fixinc.svr4 Tue Nov 25 09:47:57 1997
+***************
+*** 191,191 ****
+--- 191,192 ----
+          s/__STDC__ - 0 == 0/!defined (__STRICT_ANSI__)/g
++         s/__STDC__ - 0 == 1/defined (__STRICT_ANSI__)/g
+
+  NOTE: This appears to have been resolved.
+
+
+
+On RedHat 8.0 or up I get "/usr/bin/ld: cannot find -lelf"?
+----------------------------------------------------------
+
+  RedHat 8.0 and up doesn't come with libelf installed (properly) by
+  default.  In order to build Net-SNMP you'll need the elfutils-devel
+  rpm installed, which you currently don't have.
+
+  Alternatively, this could quickly fix the problem without requiring
+  the -devel rpm installed (as this is one of the things the -devel rpm
+  does when you install it):
+
+    cd /usr/lib ; ln -s libelf.so.1 libelf.so
+
+  Note that this will only affect you if you are trying to compile in
+  the host resources mib support, as it'll try to use the rpm libraries
+  which will in turn require that libelf.a or libelf.so be present.
+
+
+
+<a name="I_m_getting_an_error__autoheader__not_found____what_s_wrong_">
+I'm getting an error "autoheader: not found" - what's wrong?
+-----------------------------------------------------------
+
+    This usually appears when compiling the current development source
+  version, obtained via CVS.  Unfortunately, the timestamps on some of
+  the configure files are such that make assumes (mistakenly) that the
+  configure script needs to be re-generated.
+    A similar problem may arise relating to 'autoconf'.
+
+    In both cases, this can be corrected by running the command
+  "make -k touchit" before attempting to make the main package.
+
+
+
+<a name="What_about_a_failed_dependency_on__libcrypto____Where_can_I_get_that_">
+What about a failed dependency on 'libcrypto'?  Where can I get that?
+--------------------------------------------------------------------
+
+    This is typically encountered when installing a Linux RPM of
+  the ucd-snmp package.  This library is part of the 'openssl'
+  suite, so simply install that RPM first, or download the source
+  from ftp://ftp.openssl.org and compile and install that.
+
+    When compiling {UCD,Net}-SNMP from source, the configure script
+  should detect that this library is not present, and use alternative
+  arrangements for MD5-based authentication.
+
+    If encryption (or SHA1-based authentication) is required, then
+  this typically requires compiling from source.  Under Linux, both
+  the 'openssl' and 'openssl-devel' RPMs should be installed, and the
+  'config.cache' file removed before running "configure --with-openssl"
+  and re-compiling.
+
+
+
+<a name="Why_is_the_project_workspace_empty_under_Visual_C___">
+Why is the project workspace empty under Visual C++?
+---------------------------------------------------
+
+    This is probably due to the different ways that Unix and Windows
+  handle text file line termination.  Older versions of WinZip don't
+  handle this properly, and Visual C++ gets confused (poor dear!).
+  The latest version of WinZip is reported to unpack this correctly.
+
+
+
+<a name="Why_does__make_test__skip_five_tests_">
+Why does 'make test' skip five tests?
+-----------------------------------
+
+    You mean T053agentv1trap, T054agentv2ctrap, T055agentv1mintrap,
+  T056agentv2cmintrap and T113agentxtrap?
+
+    These tests rely upon functionality in the NET-SNMP-EXAMPLES-MIB
+  which is not implemented in the default agent configuration.  To
+  include these tests, invoke the `configure` script to include
+      '--with-mib-modules="examples/example".
+
+
+
+<a name="Why_does__make_test__complain_about_a_pid_file_">
+Why does 'make test' complain about a pid file?
+-----------------------------------------------
+
+    Typically it says something like:
+
+    cat:  cannot open /tmp/snmp-test-1-8694/*pid*
+
+    It's trying to tell you the port is blocked - typically because
+  another copy of the agent is still running, left over from from a
+  previous testing run.
+
+  If you type 'ps -ef' you should notice an orphaned process like:
+
+  snmpd -d -r -U -P /tmp/snmp-test-5-27295/snmpd.pid...
+
+  Kill this process.
+
+  This could be happening for several reasons including:
+
+    1.  You are trying to do concurrent runs of 'make test'.
+
+    2.  On a slow machine, the agent might be taking too long to
+      start up. Try changing the value of the variable SNMP_SLEEP
+      in testing/RUNTESTS from 1 to something higher - say 3 or 5.
+
+
+
+<a name="CODING">
+CODING
+======
+
+<a name="How_do_I_write_C_code_to_integrate_with_the_agent_">
+How do I write C code to integrate with the agent?
+-------------------------------------------------
+
+  At the moment, there are three methods for integrating external C code
+  within the agent.
+
+    The code can be included within the agent itself, statically configured
+  and linked in when the agent is compiled.  Alternatively, with the 4.2
+  release of the agent, it's possible to dynamically load MIB modules once
+  the agent is running.  Finally, the agent can be configured to pass certain
+  portions of the MIB tree off to one or more subagents.  See the earlier
+  question on AgentX, SMUX and proxied SNMP for more details.
+
+    All three mechanisms use the same module API.  This is described (in
+  excruciating detail) in the file AGENT.txt, shipped with the standard
+  distribution.  There is also an HTML version accessible via the project
+  web page.  This task can be aided using the tool 'mib2c' which generates
+  most of the necessary skeleton code from the description in the MIB file.
+
+    Note that the UCD suite does not include support for SMUX subagents.
+
+
+
+<a name="How_does_the_agent_fetch_the_value_of_a_variable_from_the_system_">
+How does the agent fetch the value of a variable from the system?
+----------------------------------------------------------------
+
+  Much of the information is extracted from kernel memory - usually
+  by seeking to the appropriate location and reading the structures
+  directly.
+    Some systems provide cleaner interfaces to such kernel information
+  (it would be hard to think of a less clean interface!), via ioctl()
+  calls or similar system routines and these mechanisms are usually used
+  in preference.
+
+
+
+<a name="Mib_c_complains_about_a_missing__mib_reference____what_does_this_mean_">
+Mib2c complains about a missing "mib reference" - what does this mean?
+---------------------------------------------------------------------
+
+    This basically means that it hasn't loaded the MIB file containing
+  the definition of the MIB subtree you're trying to implement.  This
+  might be because it hasn't been installed, the name is wrong, or
+  (most likely), because it isn't in the default list.  See the MIBS
+  section for more details.
+
+
+
+<a name="Mib_c_complains_about_not_having_a__valid_OID____what_does_this_mean_">
+Mib2c complains about not having a "valid OID" - what does this mean?
+---------------------------------------------------------------------
+
+    This probably means that you gave it the name of a MIB file (or
+  module), rather than the name of an object defined in that file.
+  Mib2c expects the name of a 'root' object, and will generate a
+  template for the sub-tree starting from there.
+
+    If you've got a file 'MY-MIB.txt', defining the MIB module
+  'MY-MIB' which contains a subtree based on the object 'myMib',
+  then you should invoke mib2c as
+            "mib2c .... myMib"
+  rather than
+            "mib2c .... MY-MIB.txt"
+  or        "mib2c .... MY-MIB"
+
+    Note that you'll probably also have to add your MIB to the list of
+  MIBs that are loaded automatically, in order for mib2c to recognise
+  the name of this object.  So the command would typically be
+            "MIBS=+MY-MIB mib2c .... myMib"
+  or        "MIBS=ALL     mib2c .... myMib"
+
+
+
+<a name="Why_doesn_t_Mib_c_like_the_MIB_file_I_m_giving_it_">
+Why doesn't Mib2c like the MIB file I'm giving it?
+-------------------------------------------------
+
+    This is the same problem as above.  Mib2c takes the name of a MIB
+  object, not the name of a file (or a MIB module).  Try using the
+  name of the MODULE-IDENTITY definition.
+
+
+
+<a name="Mib_c_ignores_my_MIB_and_generates_a_pair_of__mib____code_files___Why_">
+Mib2c ignores my MIB and generates a pair of 'mib-2' code files.  Why?
+---------------------------------------------------------------------
+
+    This is the same problem as above -  giving mib2c the name of
+  the file containing the MIB, rather than an object within it.
+  Earlier versions of mib2c didn't detect this situation, and
+  rather than report an error, it merrily constructed a template
+  for a default starting point of the mib-2 node.
+
+  More recent versions issue the error mentioned above, instead.
+
+
+
+<a name="Mib_c_complains_about__configuration_files___What_s_this_for_">
+Mib2c complains about "configuration files". What's this for?
+------------------------------------------------------------
+
+    You've probably upgraded to the v5 net-snmp release (from the
+  v4 ucd-snmp release).  This introduced a new approach to agent
+  module development, including a number of different "helpers".
+  The mib2c tool comes with configurations to generate code for
+  many of these, but you'll need to select which is most convenient
+  for your particular case.
+
+
+
+<a name="Which_mib_c_configuration_file_should_I_use_">
+Which mib2c configuration file should I use?
+-------------------------------------------
+
+    If the MIB contains scalar objects, then use the config file
+  'mib2c.scalar.conf'.   This will generate template handlers for
+  these scalar objects (ignoring internal structural definitions,
+  table objects and notifications).
+
+    If the MIB contains tables, then there are number of possible
+  choices.  There are at least four configuration files that will
+  generate template handlers for table objects (ignoring internal
+  internal structural definitions, scalar objects and notifications).
+  Which to use depends on the characteristics of the table being
+  modelled (in particular where the data is held), and preferences
+  as to the style of code structure.
+
+    The config file 'mib2c.create-dataset.conf' assumes that the
+  data is held internally within the agent, and generates a single
+  handler routine for each table.  Most of the processing is handled
+  internally within the agent, so this handler routine is really
+  only needed if particular column objects require special processing.
+  
+    The config file 'mib2c.iterate.conf' is aimed at tables which
+  model data held external to the agent (not necessarily ordered
+  according to the MIB indexing requirements).  It generates a pair
+  of "iteration" routines, which can be used to step through the
+  table, to select the appropriate row for any given request.
+  This row is then passed to the (single) table handler routine,
+  which handles the rest of the processing for all of the column
+  objects (for both GET and SET requests).
+
+    There is also a similar 'mib2c.iterate_access.conf' which
+  builds on this, but generates a series of individual routines
+  for handling GET or SET requests for each column object.
+
+    The config file 'mib2c.array-user.conf' is again primarily
+  aimed at data held within the agent (although it can also be used
+  with external data).  In contrast to the single handler routine of
+  the first two approaches, this generates a series of separate
+  template routines to handle different aspects of processing the
+  request.  As with the 'mib2c.create-dataset.conf' approach, much
+  of the processing is handled internally.  Many of the generated
+  routines can be deleted if the relevant objects need no special
+  processing.
+ 
+    The most recent 'mfd' (or 'MIBs For Dummies') configuration takes
+  this idea of small (often optional) 'stub' routines even further.
+  This generates a collection of separate *files*, each of which
+  implements a particular aspect of the table processing.  The idea
+  here is to have lots of "baby steps", rather than have all the
+  processing dealt with in one place.
+
+    There are also some other 'mib2c' configuration files, for more
+  specialised requirements (e.g. generating notifications, "watched"
+  scalar objects, or code that is compatible with the v4 UCD agent
+  API), but these are the main choices for most requirements.
+
+
+
+<a name="How_can_I_have_Mib_c_generate_code_for_both_scalars_and_tables_">
+How can I have Mib2c generate code for both scalars and tables?
+--------------------------------------------------------------
+
+    The v5 Net-SNMP mib2c tool uses separate configuration files to
+  generate code for scalar objects, and for tables.  This means that
+  it's not possible to automatically generate a single code file
+  that supports both scalars and tables.
+
+    Instead, it's necessary to generate the two code files separately,
+  and then combine the two files manually.  The handler routines from
+  one file can simply be included in the other with no changes needed.
+  The corresponding registration of these handlers can then be copied
+  from the first initialisation routine into the second.
+
+
+
+<a name="Are_there_any_examples__or_documentation_">
+Are there any examples, or documentation?
+-------------------------------------------
+
+    Most of the MIB modules shipped with the Net-SNMP agent still
+  use the v4 "traditional" MIB module API, but a few use one of the
+  newer v5 helper-based handlers.
+
+    The dataset handler is used in the two DISMAN-EVENT-MIB modules
+  (disman/mteEventTable and disman/mteEventNotificationTable), as
+  well as the 'snmptrapd' implementation of logging incoming traps
+  (apps/notification_log)
+
+    The basic iterator handler is used in a number of modules, such
+  as the latest TCP and UDP table implementations (mibII/tcpTable &
+  mibII/udpTable), VACM context handling (mibII/vacm_context) and
+  various tables relating to agent internals (agent/*).  These show
+  a number of different approaches to using the iterator helper, so
+  it's worth comparing them.
+
+    The two examples/netSnmpHostsTable* modules provide a contrast
+  between the iterator and iterator_access helpers.
+
+    The Net-SNMP agent does not currently include any MIB modules
+  using the array-user container-based helper.  The best examples
+  of this are to be found in the net-policy project.
+  See http://net-policy.sourceforge.net/
+
+
+
+<a name="I_ve_created_a_new_module_with__mib_c__but_it_doesn_t_work___Why_not_">
+I've created a new module with 'mib2c' but it doesn't work.  Why not?
+--------------------------------------------------------------------
+
+    Remember that 'mib2c' generates a template for the MIB implementation.
+  It doesn't fill in all the details for you.  In particular, it cannot
+  know how to obtain the information needed to answer particular queries.
+  That's the job of the MIB module programmer (you!) -  See the previous
+  question for how to proceed.
+
+    Essentially mib2c handles the syntax of the MIB implementation,
+  leaving you to concentrate on the semantics.
+
+
+
+<a name="Where_should_I_put_the_files_produced_by__mib_c__">
+Where should I put the files produced by 'mib2c'?
+------------------------------------------------
+
+  If you're using the main source tree to compile your new module, then
+  put these two files (mymib.[ch]) in the directory 'agent/mibgroup'.
+  You should then re-run configure to add in your new module
+  ("configure --with-mib-modules=mymib") and recompile.
+
+    If you've got a number of new modules to add, it might be
+  sensible to put them all into a single subdirectory of 'mibgroup'.
+  Then create a header file, listing the individual components.
+  This might look something like:
+
+		config_require(mymib/myObjects)
+		config_require(mymib/myTable)
+		config_require(mymib/myOtherTable)
+
+  If this was saved as the file 'mymib.h', then the same configure
+  line given above, would pull in all three modules.  See the
+  current contents of 'agent/mibgroup' for examples of this.
+
+
+
+<a name="Mib_c_only_handles_a_single_table_in_my_MIB__How_can_I_fix_this_">
+Mib2c only handles a single table in my MIB. How can I fix this?
+---------------------------------------------------------------
+
+    This was a bug in the mib2c script, which was corrected with
+  the 4.2 release.  Earlier versions can be fixed by applying the
+  following patch:
+
+	$ diff -u mib2c.cln mib2c
+	--- mib2c.cln   Wed Nov 29 15:12:47 2000
+	+++ mib2c       Wed Nov 29 15:13:18 2000
+	@@ -132,6 +132,6 @@
+	 #============================================
+	 foreach $vtable (@table_list) {
+	     foreach $ptable (@processtable) {
+	-       $variables{$ptable}{'processed'} = 
+	+       $variables{$ptable}{'processed'} .= 
+	            (eval "\"$variables{$ptable}{'code'}\"") . "\n\n";
+	     }
+
+
+
+<a name="How_can_I_support_a_large_table__with_more_than_____column_objects_">
+How can I support a large table, with more than 256 column objects?
+------------------------------------------------------------------
+
+    This is a problem (at least apparently) with the v4 UCD module
+  API, which uses a "magic number" to distinguish between the various
+  column objects implemented by a common variable handling routine.
+  Since this field is defined as an unsigned character, it can only
+  take values 0-255.   So it would appear that the agent cannot
+  support tables (or scalar groups) with more than 256 objects,
+  since this would start to duplicate these magic numbers.
+
+    However, the agent doesn't actually care which routine implements
+  a given object, and magic numbers only need to be unique within a
+  single variable handling routine.  So it is actually perfectly
+  possible to implement a larger table by splitting it between two
+  (or more) variable handling routines.  These can then re-use the
+  magic numbers quite safely:
+
+    struct variable1 [] = {
+       {MAGIC1,   ASN_INTEGER, NETSNMP_OLDAPI_RWRITE, var_myfirst,  1, {  1}},
+       {MAGIC2,   ASN_INTEGER, NETSNMP_OLDAPI_RWRITE, var_myfirst,  1, {  2}},
+    		:
+       {MAGIC255, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE, var_myfirst,  1, {255}},
+       {MAGIC1,   ASN_INTEGER, NETSNMP_OLDAPI_RWRITE, var_mysecond, 1, {256}},
+       {MAGIC2,   ASN_INTEGER, NETSNMP_OLDAPI_RWRITE, var_mysecond, 1, {257}},
+    		:
+       {MAGIC255, ASN_INTEGER, NETSNMP_OLDAPI_RWRITE, var_mysecond, 1, {510}}
+    };
+
+  All that matters is that a given magic number isn't re-used within
+  the same variable handling routine.  The v5 table handlers typically
+  use an integer variable for holding column information, so aren't
+  subject to the same limitations.
+
+    Though I'd have to question whether having such a wide table is
+  necessarily a particularly good design strategy!
+
+
+
+<a name="How_can_I_get_the_agent_to_generate_a_trap__or_inform__">
+How can I get the agent to generate a trap (or inform)?
+------------------------------------------------------
+
+    Generating a trap is reasonably simple - just call one of the
+  trap API routines 'send_easy_trap()' or 'send_v2trap' with the
+  relevant information (generic and specific trap values, or a
+  varbind list respectively).  See the 'snmp_trap_api(3)' man page
+  for details.
+
+    The 'mib2c.notify.conf' configuration file can be used to
+  construct a suitable template routine for generating a trap,
+  including building the variable list from the MIB trap
+  definition.  These variables can then be given suitable values,
+  before invoking the 'send_v2trap' call to actually send the trap.
+
+    Note that these APIs are only available within the agent (or
+  subagents), and are not available to stand-alone applications.
+  The code for 'snmptrap' shows an approach to use in such a case.
+
+    Determining _when_ to generate the trap (either directly or
+  via the mib2c-generated routine) is often harder.  If the trap
+  is generated in response to some action within the agent, (e.g.
+  as the result of a SET), then this isn't too much of a problem.
+
+    But if the trap is intended to report on a change of status
+  (e.g. a network interface going up or down, or a disk filling up),
+  then actually detecting this is non-trivial.   It's necessary to
+  poll the value(s) on a regular basis, save the results and compare
+  them with the new values the next time round.
+
+    With the v4 UCD agent, this would have to be done manually,
+  using the routines documented in 'snmp_alarm(3)'.  The v5 Net-SNMP
+  agent has implemented the Distributed Management Event MIB, which
+  provides this functionality in a flexible, standardised manner.
+  See the 'snmpd.conf(5)' man page (under DISMAN-EVENT-MIB) for
+  details (including the need for an 'agentSecName' setting).
+  
+
+
+<a name="What_if_I_m_using_an_AgentX_sub_agent_instead_">
+What if I'm using an AgentX sub-agent instead?
+---------------------------------------------
+
+    That doesn't matter - the routines described in 'snmp_trap_api(3)'
+  can still be used, and the subagent will do the Right Thing.
+  
+  One of the original design aims of the AgentX support was that this
+  should be transparent to a MIB module implementer.  The agent-module
+  interface should be independent of the protocol used to receive the
+  original request.  So the exact same MIB module code could be used
+  within a traditional SNMP-only agent, or an AgentX subagent, with no
+  changes needed.
+    In fact, the main agent supplied as part of the package can indeed
+  be run as an SNMP agent or an AgentX subagent, simply based on command
+  line flags (or similar configuration options).
+
+
+
+<a name="MISC">
+MISC
+======
+
+<a name="Why_are_packets_requesting_the_same_information_larger_with_UC_Davis_SNMP_">
+Why are packets requesting the same information larger with UC-Davis SNMP?
+-------------------------------------------------------------------------
+
+    This shouldn't happen with version 4.2 or later, but for older
+  version the following still applies:
+
+    Some users note that UCD-SNMP applications always generate larger PDUs
+  than other SNMP packages, even if the information requested is the same.
+  Further, there are some agents that refuse PDUs from UCD-SNMP applications
+  but accept PDUs from other applications.
+
+  UCD-SNMP is based on the CMU code from a long time ago which encoded things
+  using the long form of length encoding.  Some agents use the short form
+  of length encoding only, and do not understand the long form.
+
+    This should not be a problem with UCD v4.2 or higher, or the Net-SNMP
+  releases.
+
+
+
+<a name="What_ASN___parser_is_used_">
+What ASN.1 parser is used?
+-------------------------
+
+  The parser used by both the agent and client programs is coded by hand.
+  This parser has recently been re-vamped to allow control of which of 
+  the available MIBs should be included, and to handle duplicate object
+  subidentifiers.
+    The source code can be found in the snmplib directory (in 'parse.c'),
+  and the parser is usually bundled into the library 'libsnmp.a'
+
+    Note that the parser attempts to be fairly forgiving of some common
+  errors and incompatibilities in MIB files.  The Net-SNMP tools accepting
+  a MIB file without complaint does *not* imply that the MIB is strictly
+  correct.
+    Certain MIBs may need some amendments to allow them to be read
+  correctly by the parser.  Contact the coders' list for advice.
+
+
+
+<a name="What_is_the_Official_Slogan_of_the_net_snmp_coders_list_">
+What is the Official Slogan of the net-snmp-coders list?
+-------------------------------------------------------
+
+  "The current implementation is non-obvious and may need to be improved."
+	(with thanks to Rohit Dube)
+
+  And an alternate, added 26-Apr-2000:
+  
+  "In theory, it shouldn't be that hard, but it just needs to be done."
+
+
+
+</pre><hr>
+Last modified: Sat Mar 20 21:53:39 2004
diff --git a/win32/dist/installer/Add2Path.nsi b/win32/dist/installer/Add2Path.nsi
index 3f8d640..104dc16 100644
--- a/win32/dist/installer/Add2Path.nsi
+++ b/win32/dist/installer/Add2Path.nsi
@@ -11,11 +11,32 @@
   Push $1
   Push $2
   Push $3
+  Push $4
+  Push $5
 
   # don't add if the path doesn't exist
   IfFileExists $0 "" AddToPath_done
-
+  
   ReadEnvStr $1 PATH
+  
+  # If length of PATH returned is 0, we couldn't read the environment variable (unlikely) or
+  # it's empty because it's > 1024 characters long.  NSIS only supports variables up to 1024 
+  # characters unless we're using the 8192 length version, which we are not.  
+  # Note:  On XP (at least), the string read using ReadEnvStr is shorter than we would expect.
+  # During testing, when the PATH was 1020 characters long, StrLen of the path returned 984.
+  # When manipulating the path on XP, use the registry instead.
+  StrLen $4 "$1"
+  # MessageBox MB_ICONINFORMATION|MB_OK "PATH length: $4..."
+  IntCmp $4 0 Path_Too_Short1
+  Goto AddToPath_Cont1
+  
+  Path_Too_Short1:
+  # PATH is empty.  Display warning.
+  MessageBox MB_ICONINFORMATION|MB_OK "Your PATH variable could not be read, probably because it is longer than 1024 characters (installer limitation).  Please add the folder $0 to your PATH using the System Control Panel."
+  goto AddToPath_done
+
+  AddToPath_Cont1:
+  
   Push "$1;"
   Push "$0;"
   Call StrStr
@@ -56,17 +77,41 @@
   AddToPath_NT:
     ;ReadRegStr $1 HKCU "Environment" "PATH"
     ReadRegStr $1 HKLM 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment' "PATH"
+
     StrCpy $2 $1 1 -1 # copy last char
     StrCmp $2 ";" 0 +2 # if last char == ;
       StrCpy $1 $1 -1 # remove last char
-    StrCmp $1 "" AddToPath_NTdoIt
-      StrCpy $0 "$1;$0"
-    AddToPath_NTdoIt:
-      ;WriteRegExpandStr HKCU "Environment" "PATH" $0
-      WriteRegExpandStr HKLM 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment' "PATH" $0
-      SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
+
+    # Make sure old PATH is not empty..
+    StrLen $4 "$1"
+    #MessageBox MB_ICONINFORMATION|MB_OK "Reg PATH length: $4..."
+    IntCmp $4 0 Path_Too_Short2
+    Goto AddToPath_Cont2
+    Path_Too_Short2:
+    # PATH is empty.  Display warning.
+    MessageBox MB_ICONINFORMATION|MB_OK "Your PATH variable could not be read, probably because it is longer than 1024 characters (installer limitation).  Please add the folder $0 to your PATH using the System Control Panel."
+    goto AddToPath_done
+    AddToPath_Cont2:
+
+    # Make sure new PATH won't be too long.
+    StrLen $5 "$0"
+    IntOp $4 $4 + $5
+    IntCmp $4 1022 "" "" Path_Too_Long3
+    Goto AddToPath_Cont3
+    Path_Too_Long3:
+    MessageBox MB_ICONINFORMATION|MB_OK "Your new PATH variable could not be set as it would be greater than 1024 characters (installer limitation).  Please add the folder $0 to your PATH using the System Control Panel."
+    goto AddToPath_done
+    AddToPath_Cont3:
+
+    StrCpy $0 "$1;$0"
+
+    ;WriteRegExpandStr HKCU "Environment" "PATH" $0
+    WriteRegExpandStr HKLM 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment' "PATH" $0
+    SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000
 
   AddToPath_done:
+    Pop $5
+    Pop $4
     Pop $3
     Pop $2
     Pop $1
diff --git a/win32/dist/installer/net-snmp.nsi b/win32/dist/installer/net-snmp.nsi
index 95d7b55..2403d77 100644
--- a/win32/dist/installer/net-snmp.nsi
+++ b/win32/dist/installer/net-snmp.nsi
@@ -1,13 +1,16 @@
 ; Script generated by the HM NIS Edit Script Wizard.
+SetCompressor /SOLID lzma
 
+!include x64.nsh
 !include "Sections.nsh"
+!include FileFunc.nsh
+!insertmacro GetParameters
+!insertmacro GetOptions
+var cmdLineParameters
 
 ; HM NIS Edit Wizard helper defines
 !define PRODUCT_NAME "Net-SNMP"
-!define PRODUCT_MAJ_VERSION "5"
-!define PRODUCT_MIN_VERSION "4"
-!define PRODUCT_REVISION "0.pre4"
-!define PRODUCT_EXE_VERSION "1"
+!define PRODUCT_EXE_SUFFIX ".${INSTALLER_PLATFORM}.exe"
 !define PRODUCT_WEB_SITE "http://www.net-snmp.org"
 !define PRODUCT_DIR_REGKEY "Software\Net-SNMP"
 !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
@@ -38,7 +41,7 @@
 !insertmacro MUI_PAGE_LICENSE "docs\COPYING"
 
 ; Make sure SSL is installed.
-Page custom IsSSLInstalled "" ": custom page"
+; Page custom IsSSLInstalled "" ": custom page"
 
 ; Components page
 !insertmacro MUI_PAGE_COMPONENTS
@@ -69,11 +72,11 @@
 ; MUI end ------
 
 Name "${PRODUCT_NAME} ${PRODUCT_MAJ_VERSION}.${PRODUCT_MIN_VERSION}.${PRODUCT_REVISION}"
-OutFile "..\\net-snmp-${PRODUCT_MAJ_VERSION}.\
+OutFile "net-snmp-${PRODUCT_MAJ_VERSION}.\
                   ${PRODUCT_MIN_VERSION}.\
                   ${PRODUCT_REVISION}\
                   -${PRODUCT_EXE_VERSION}\
-                  .win32.exe"
+                  ${PRODUCT_EXE_SUFFIX}"
 InstallDir "C:\usr"
 InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "InstallDir"
 ShowInstDetails show
@@ -81,13 +84,20 @@
 
 ; Variables for writing config files
 Var conf_file
+
 Var winExtDLL
+Var openSSL
 
 Section "Base Components" SEC01
+  SectionIn RO
+  StrCmp $openSSL "false" SEC01_noOpenSSL SEC01_OpenSSL
+  
+  SEC01_noOpenSSL:
   SetOutPath "$INSTDIR"
   SetOverwrite ifnewer
   File "README.txt"
   SetOutPath "$INSTDIR\bin"
+
   File "bin\netsnmp.dll"
   File "bin\encode_keychange.exe"
   File "bin\snmpvacm.exe"
@@ -106,6 +116,35 @@
   File "bin\snmpbulkwalk.exe"
   File "bin\snmpbulkget.exe"
   File "bin\snmpwalk.exe"
+  goto SEC01_continue
+
+  SEC01_OpenSSL:
+  SetOutPath "$INSTDIR"
+  SetOverwrite ifnewer
+  File "README.txt"
+  SetOutPath "$INSTDIR\bin"
+
+  File "bin.ssl\netsnmp.dll"
+  File "bin.ssl\encode_keychange.exe"
+  File "bin.ssl\snmpvacm.exe"
+  File "bin.ssl\snmpusm.exe"
+  File "bin.ssl\snmptrap.exe"
+  File "bin.ssl\snmptranslate.exe"
+  File "bin.ssl\snmptest.exe"
+  File "bin.ssl\snmptable.exe"
+  File "bin.ssl\snmpstatus.exe"
+  File "bin.ssl\snmpset.exe"
+  File "bin.ssl\snmpnetstat.exe"
+  File "bin.ssl\snmpgetnext.exe"
+  File "bin.ssl\snmpget.exe"
+  File "bin.ssl\snmpdf.exe"
+  File "bin.ssl\snmpdelta.exe"
+  File "bin.ssl\snmpbulkwalk.exe"
+  File "bin.ssl\snmpbulkget.exe"
+  File "bin.ssl\snmpwalk.exe"
+
+  SEC01_continue:
+
   File "bin\mib2c"
   File "bin\mib2c.bat"
   Call CreateMib2cBat
@@ -151,18 +190,94 @@
 SectionGroup /e "Net-SNMP Agent Service"
   Section "Standard agent" SEC02
     StrCpy $winExtDLL "0"
-    Call InstallAgent
+    SetOutPath "$INSTDIR\bin"
+
+    ; Delete agent otherwise re-installing a different agent may not work because of date stamps
+    Delete "$INSTDIR\bin\snmpd.exe"  
+
+    StrCmp $openSSL "false" SEC02_noOpenSSL SEC02_OpenSSL
+    SEC02_noOpenSSL:
+      File "bin\snmpd.exe"
+
+    SEC02_OpenSSL:
+      File "bin.ssl\snmpd.exe"
+
+    SetOutPath "$INSTDIR\share\snmp\snmpconf-data\snmpd-data"
+    File "share\snmp\snmpconf-data\snmpd-data\*.*"
+  
+    ; If we are on an NT system then install the service batch files.
+    Call IsNT
+    Pop $1
+    StrCmp $1 0 SEC02_NoService
+  
+    SetOutPath "$INSTDIR\"
+    File "registeragent.bat"
+    File "unregisteragent.bat"
+    Call CreateAgentBats
+
+	ClearErrors
+	StrCmp $ICONS_GROUP "" SEC02_NoService
+    CreateDirectory "$SMPROGRAMS\$ICONS_GROUP\Service"
+    CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Service\Register Agent Service.lnk" "$INSTDIR\registeragent.bat"
+    CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Service\Unregister Agent Service.lnk" "$INSTDIR\unregisteragent.bat"
+    
+    SEC02_NoService:
+	
   SectionEnd
 
-  Section /o "With Windows Extension DLL support" SEC03
-    StrCpy $winExtDLL "1"
-    Call InstallAgent
+  Section "With Windows Extension DLL support" SEC03	
+	StrCpy $winExtDLL "1"
+	SetOutPath "$INSTDIR\bin"
+
+    ; Delete agent otherwise re-installing a different agent may not work because of date stamps
+    Delete "$INSTDIR\bin\snmpd.exe"  
+
+    StrCmp $openSSL "false" SEC03_noOpenSSL SEC03_OpenSSL
+    SEC03_noOpenSSL:
+      File /oname=snmpd.exe "bin\snmpd-winExtDLL.exe"
+
+    SEC03_OpenSSL:
+      File /oname=snmpd.exe "bin.ssl\snmpd-winExtDLL.exe"
+
+    SetOutPath "$INSTDIR\share\snmp\snmpconf-data\snmpd-data"
+    File "share\snmp\snmpconf-data\snmpd-data\*.*"
+  
+    ; If we are on an NT system then install the service batch files.
+    Call IsNT
+    Pop $1
+    StrCmp $1 0 SEC03_NoService
+  
+    SetOutPath "$INSTDIR\"
+    File "registeragent.bat"
+    File "unregisteragent.bat"
+    Call CreateAgentBats
+
+	ClearErrors
+	StrCmp $ICONS_GROUP "" SEC03_NoService
+    CreateDirectory "$SMPROGRAMS\$ICONS_GROUP\Service"
+    CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Service\Register Agent Service.lnk" "$INSTDIR\registeragent.bat"
+    CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Service\Unregister Agent Service.lnk" "$INSTDIR\unregisteragent.bat"
+    
+    SEC03_NoService:
   SectionEnd
+  
+;  Section "Hidden" SECAgentHidden
+  ;SectionEnd
 SectionGroupEnd
 
 Section "Net-SNMP Trap Service" SEC04
   SetOutPath "$INSTDIR\bin"
+
+  StrCmp $openSSL "false" SEC04_noOpenSSL SEC04_OpenSSL
+
+  SEC04_noOpenSSL:
   File "bin\snmptrapd.exe"
+  goto SEC04_continue
+
+  SEC04_OpenSSL:
+  File "bin.ssl\snmptrapd.exe"
+
+  SEC04_continue:
   SetOutPath "$INSTDIR\share\snmp\snmpconf-data\snmptrapd-data"
   File "share\snmp\snmpconf-data\snmptrapd-data\*.*"
   ;SetOutPath "$INSTDIR\etc\snmp"
@@ -178,6 +293,8 @@
   File "unregistertrapd.bat"
   Call CreateTrapdBats
   
+  ClearErrors
+  StrCmp $ICONS_GROUP "" NoTrapService
   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Service\Register Trap Service.lnk" "$INSTDIR\registertrapd.bat"
   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Service\Unregister Trap Service.lnk" "$INSTDIR\unregistertrapd.bat"
   
@@ -186,7 +303,18 @@
 
 Section "Perl SNMP Modules" SEC05
   SetOutPath "$INSTDIR\perl\x86"
+
+  StrCmp $openSSL "false" SEC05_noOpenSSL SEC05_OpenSSL
+
+  SEC05_noOpenSSL:
   File "perl\x86\NetSNMP.tar.gz"
+  goto SEC05_continue
+
+  SEC05_OpenSSL:
+  File "perl.ssl\x86\NetSNMP.tar.gz"
+
+  SEC05_continue:
+
   SetOutPath "$INSTDIR\perl"
   File "perl\NetSNMP.ppd"
   SetOutPath "$INSTDIR\bin"
@@ -224,11 +352,18 @@
   File "lib\*.*"
 SectionEnd
 
+Section "Encryption support (OpenSSL)" SEC07
+SectionEnd
+
 Section -AdditionalIcons
+  ClearErrors
+  StrCmp $ICONS_GROUP "" noAdditionalItems
   CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe"
   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Net-SNMP Help.lnk" "$INSTDIR\docs\Net-SNMP.chm"
   CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\README.lnk" "$INSTDIR\README.txt"
+  
+  noAdditionalItems:
 SectionEnd
 
 Section -Post
@@ -262,6 +397,8 @@
   !insertmacro MUI_DESCRIPTION_TEXT ${SEC06} \
                "The Development files provide header and library files used for developing \
                applications that use the Net-SNMP library."
+  !insertmacro MUI_DESCRIPTION_TEXT ${SEC07} \
+               "Encryption support is required for SNMPv3 SHA authentication and DES / AES privacy.  A Windows package is available from www.slproweb.com."
 !insertmacro MUI_FUNCTION_DESCRIPTION_END
 
 Function CreateSnmpConf
@@ -525,30 +662,256 @@
 FunctionEnd
 
 Function un.onInit
+  SetRegView 64		; Prevent the installer from using the Wow6432Node HKLM subkey on 64-bit systems
   MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2
   Abort
 FunctionEnd
 
 Function .onInit
-
-StrCpy $3 ${SEC02}
-
+SetRegView 64		; Prevent the installer from using the Wow6432Node HKLM subkey on 64-bit systems
 Push $0
+Push $R0
+Push $R1
+
+; Check for /? command line usage option
+${GetParameters} $R1
+StrCpy $cmdLineParameters $R1
+ClearErrors
+${GetOptions} $cmdLineParameters '/?' $R0
+IfErrors +3 0
+MessageBox MB_OK "Options:$\n  \StartMenu={GroupName}$\n  \Agent=standard|extDLL|none   (default standard)$\n  \noTrapd$\t(default \Trapd)$\n  \noPerl$\t$\t(default \Perl)$\n  \Dev$\t$\t(default \noDev)$\n  \OpenSSL$\t(default \noOpenSSL)"
+Abort
+
+; Make sure we're running Windows 2000 (5.0) or higher
+ClearErrors
+ReadRegStr $R0 HKLM \
+  "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
+IfErrors windowsVersionError
+
+IntCmp $R0 '5.0' windowsVersionOK windowsVersionError windowsVersionOK
+windowsVersionError:
+MessageBox MB_ICONINFORMATION|MB_OK "This version of $(^Name) requires Windows 2000 or higher.  For Windows NT and lower, please use Net-SNMP 5.4."
+Quit
+
+windowsVersionOK:
+;MessageBox MB_ICONINFORMATION|MB_OK "Windows version ok: $R0"
+
+; Make sure we're running the right platform
+;INSTALLER_PLATFORM
+${If} ${INSTALLER_PLATFORM} == "x64"
+  ;MessageBox MB_OK "64-bit binary"
+  ${IfNot} ${RunningX64}
+    ;MessageBox MB_OK "32-bit OS"
+	MessageBox MB_OK "This Net-SNMP package requires 64-bit Windows (x64).  Please download the x86 installer package."
+	Quit
+  ${Else}
+    ;MessageBox MB_OK "64-bit OS"
+  ${EndIf}
+${Else}
+  ;MessageBox MB_OK "x86 (32-bit) binary"
+  ${If} ${RunningX64}
+    ;MessageBox MB_OK "64-bit OS"
+	MessageBox MB_OK "You are installing a 32-bit package on a 64-bit operating system.  All applications should work except for the 'Net-SNMP Agent Service with Windows Extension DLL support'.  Please download the x64 installer package."
+  ${EndIf}	
+${EndIf}
 
 ; Disable Development files section by default
 SectionGetFlags ${SEC06} $0
 IntOp $0 $0 & ${SECTION_OFF}
 SectionSetFlags ${SEC06} $0
 
+; Disable OpenSSL section by default
+SectionGetFlags ${SEC07} $0
+IntOp $0 $0 & ${SECTION_OFF}
+SectionSetFlags ${SEC07} $0
+StrCpy $openSSL "false"
+
+; Disable Agent with winExtDLL support - user can select either but not both.
+StrCpy $R8 ${SEC02}
+SectionGetFlags ${SEC02} $0
+IntOp $0 $0 | ${SF_SELECTED}
+SectionSetFlags ${SEC02} $0
+SectionGetFlags ${SEC03} $0
+IntOp $0 $0 & ${SECTION_OFF}
+SectionSetFlags ${SEC03} $0
+
+; Store current status of SEC07 (SSL).  Used for checking if OpenSSL is installed.
+SectionGetFlags ${SEC07} $R9
+
+; process other command line parameters
+Call parseParameters
+
+Pop $R0
 Pop $0
 FunctionEnd
 
+Function parseParameters
+  Push $R0
+  Push $0
+
+  ; /StartMenu=
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/StartMenu="  $R0
+  IfErrors +2 0
+  StrCpy $ICONS_GROUP $R0
+
+  ; /{no,}Trapd  
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/Trapd"  $R0
+  IfErrors +4 0
+  SectionGetFlags ${SEC04} $0
+  IntOp $0 $0 | ${SF_SELECTED}
+  SectionSetFlags ${SEC04} $0
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/noTrapd"  $R0
+  IfErrors +4 0
+  SectionGetFlags ${SEC04} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC04} $0
+
+  ; /{no,}Perl  
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/Perl"  $R0
+  IfErrors +4 0
+  SectionGetFlags ${SEC05} $0
+  IntOp $0 $0 | ${SF_SELECTED}
+  SectionSetFlags ${SEC05} $0
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/noPerl"  $R0
+  IfErrors +4 0
+  SectionGetFlags ${SEC05} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC05} $0
+
+  ; /{no,}Dev  
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/Dev"  $R0
+  IfErrors +4 0
+  SectionGetFlags ${SEC06} $0
+  IntOp $0 $0 | ${SF_SELECTED}
+  SectionSetFlags ${SEC06} $0
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/noDev"  $R0
+  IfErrors +4 0
+  SectionGetFlags ${SEC06} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC06} $0
+
+  ; /{no,}OpenSSL  
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/OpenSSL"  $R0
+  IfErrors +4 0
+  SectionGetFlags ${SEC07} $0
+  IntOp $0 $0 | ${SF_SELECTED}
+  SectionSetFlags ${SEC07} $0
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/noOpenSSL"  $R0
+  IfErrors +4 0
+  SectionGetFlags ${SEC07} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC07} $0
+
+  ; /Agent=  
+  ClearErrors
+  ${GetOptions} $cmdLineParameters "/Agent="  $R0
+  IfErrors endOfAgent 0
+  ; /Agent=none
+  ClearErrors
+  StrCmp $R0 "none" 0 standardAgent
+  SectionGetFlags ${SEC02} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC02} $0
+  SectionGetFlags ${SEC03} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC03} $0
+  Goto endOfAgent
+  
+  standardAgent:
+  ; /Agent=standard
+  ClearErrors
+  StrCmp $R0 "standard" 0 winExtDLLAgent
+  SectionGetFlags ${SEC02} $0
+  IntOp $0 $0 | ${SF_SELECTED}
+  SectionSetFlags ${SEC02} $0
+  SectionGetFlags ${SEC03} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC03} $0
+  Goto endOfAgent
+  
+  winExtDLLAgent:
+  ; /Agent=extDLL
+  ClearErrors
+  StrCmp $R0 "extDLL" 0 endOfAgent
+  SectionGetFlags ${SEC02} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC02} $0
+  SectionGetFlags ${SEC03} $0
+  IntOp $0 $0 | ${SF_SELECTED}
+  SectionSetFlags ${SEC03} $0
+  endOfAgent:
+  
+  Pop $R0  
+FunctionEnd
+
 Function .onSelChange
 
-  !insertmacro StartRadioButtons $3
-    !insertmacro RadioButton ${SEC02}
-    !insertmacro RadioButton ${SEC03}
-  !insertmacro EndRadioButtons
+;  !insertmacro StartRadioButtons $2
+    ;!insertmacro RadioButton ${SEC02}
+    ;!insertmacro RadioButton ${SEC03}
+  ;!insertmacro EndRadioButtons
+
+  # Create a backup copy of $0
+  Push $0
+
+  ; Agent - Only allow user to select standard or winExtDLL agent
+  StrCmp $R8 ${SEC02} onSelChange_check_SEC3
+  SectionGetFlags ${SEC02} $0
+  IntOp $0 $0 & ${SF_SELECTED}
+  IntCmp $0 ${SF_SELECTED} 0 onSelChange_agent_done onSelChange_agent_done
+  StrCpy $R8 ${SEC02}
+  SectionGetFlags ${SEC03} $0
+  IntOp $0 $0 & ${SECTION_OFF}
+  SectionSetFlags ${SEC03} $0
+  Goto onSelChange_agent_done
+ 
+  onSelChange_check_SEC3:
+    SectionGetFlags ${SEC03} $0
+    IntOp $0 $0 & ${SF_SELECTED}
+    IntCmp $0 ${SF_SELECTED} 0 onSelChange_agent_done onSelChange_agent_done
+    StrCpy $R8 ${SEC03}
+    SectionGetFlags ${SEC02} $0
+    IntOp $0 $0 & ${SECTION_OFF}
+    SectionSetFlags ${SEC02} $0
+ 
+  onSelChange_agent_done:
+
+  ; If the user is installing a 32-bit binary on a 64-bit OS, disable winExtDLL agent.
+  ${If} ${RunningX64}
+    ${IfNot} ${INSTALLER_PLATFORM} == "x64"
+	  SectionGetFlags ${SEC03} $0
+      IntOp $0 $0 & ${SECTION_OFF}
+      SectionSetFlags ${SEC03} $0
+    ${EndIf}
+  ${EndIf}
+    
+  ; If user selected Encryption support, make sure OpenSSL is installed.
+  SectionGetFlags ${SEC07} $0
+  IntOp $0 $0 & ${SF_SELECTED}
+  IntCmp $0 ${SF_SELECTED} enableSSLonSelChange disableSSLonSelChange
+  enableSSLonSelChange:
+    StrCpy $openSSL "true"
+    IntCmp $R9 $0 SSLalreadyEnabled SSLjustEnabled
+    SSLjustEnabled:
+      Call IsSSLInstalled
+      SectionGetFlags ${SEC07} $R9
+    SSLalreadyEnabled:
+      goto continueSSLonSelChange
+  disableSSLonSelChange:
+    StrCpy $openSSL "false"
+	SectionGetFlags ${SEC07} $R9
+  continueSSLonSelChange:
+  
+  Pop $0
 
 FunctionEnd
 
@@ -579,6 +942,9 @@
   Delete "$INSTDIR\docs\COPYING"
   Delete "$INSTDIR\docs\Net-SNMP.chm"
   Delete "$INSTDIR\bin\net-snmp-perl-test.pl"
+  ; ideally we should check whether this file has changed
+  Delete "$INSTDIR\etc\snmp\snmp.conf"
+
   Delete "$INSTDIR\bin\snmptrapd.exe"
   Delete "$INSTDIR\bin\snmpd.exe"
   Delete "$INSTDIR\bin\snmpwalk.exe"
@@ -600,6 +966,7 @@
   Delete "$INSTDIR\bin\snmpvacm.exe"
   Delete "$INSTDIR\bin\encode_keychange.exe"
   Delete "$INSTDIR\bin\netsnmp.dll"
+
   Delete "$INSTDIR\bin\mib2c"
   Delete "$INSTDIR\bin\mib2c.bat"
   Delete "$INSTDIR\bin\snmpconf"
@@ -626,6 +993,7 @@
   Delete "$INSTDIR\share\snmp\snmpconf-data\snmptrapd-data\logging"
   Delete "$INSTDIR\share\snmp\snmpconf-data\snmptrapd-data\runtime"
   Delete "$INSTDIR\share\snmp\mibs\AGENTX-MIB.txt"
+  Delete "$INSTDIR\share\snmp\mibs\BRIDGE-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\DISMAN-EVENT-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\DISMAN-EXPRESSION-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\DISMAN-NSLOOKUP-MIB.txt"
@@ -660,6 +1028,7 @@
   Delete "$INSTDIR\share\snmp\mibs\NET-SNMP-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\NET-SNMP-MONITOR-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\NET-SNMP-PASS-MIB.txt"
+  Delete "$INSTDIR\share\snmp\mibs\NET-SNMP-PERIODIC-NOTIFY-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\NET-SNMP-SYSTEM-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\NET-SNMP-TC.txt"
   Delete "$INSTDIR\share\snmp\mibs\NET-SNMP-VACM-MIB.txt"
@@ -677,6 +1046,8 @@
   Delete "$INSTDIR\share\snmp\mibs\SNMP-NOTIFICATION-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\SNMP-PROXY-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\SNMP-TARGET-MIB.txt"
+  Delete "$INSTDIR\share\snmp\mibs\SNMP-TLS-TM-MIB.txt"
+  Delete "$INSTDIR\share\snmp\mibs\SNMP-TSM-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\SNMP-USER-BASED-SM-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\SNMP-USM-AES-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\SNMP-USM-DH-OBJECTS-MIB.txt"
@@ -698,8 +1069,8 @@
   Delete "$INSTDIR\share\snmp\mibs\UCD-SNMP-MIB-OLD.txt"
   Delete "$INSTDIR\share\snmp\mibs\UDP-MIB.txt"
   Delete "$INSTDIR\share\snmp\mibs\.index"
+  Delete "$INSTDIR\snmp\persist\mib_indexes\0"
 
-  SetOutPath "$INSTDIR\share\snmp"
   Delete "$INSTDIR\share\snmp\mib2c.access_functions.conf"
   Delete "$INSTDIR\share\snmp\mib2c.array-user.conf"
   Delete "$INSTDIR\share\snmp\mib2c.check_values.conf"
@@ -719,11 +1090,11 @@
   Delete "$INSTDIR\share\snmp\mib2c.notify.conf"
   Delete "$INSTDIR\share\snmp\mib2c.old-api.conf"
   Delete "$INSTDIR\share\snmp\mib2c.perl.conf"
+  Delete "$INSTDIR\share\snmp\mib2c.raw-table.conf"
   Delete "$INSTDIR\share\snmp\mib2c.row.conf"
   Delete "$INSTDIR\share\snmp\mib2c.scalar.conf"
   Delete "$INSTDIR\share\snmp\mib2c.table_data.conf"
 
-  SetOutPath "$INSTDIR\share\snmp\mib2c-data"
   Delete "$INSTDIR\share\snmp\mib2c-data\default-mfd-top.m2c"
   Delete "$INSTDIR\share\snmp\mib2c-data\details-enums.m2i"
   Delete "$INSTDIR\share\snmp\mib2c-data\details-node.m2i"
@@ -766,7 +1137,7 @@
   Delete "$INSTDIR\share\snmp\mib2c-data\mfd-interactive-setup.m2c"
   Delete "$INSTDIR\share\snmp\mib2c-data\mfd-interface.m2c"
   Delete "$INSTDIR\share\snmp\mib2c-data\mfd-makefile.m2m"
-  Delete "$INSTDIR\share\snmp\mib2c-data\mfd-persistence.m2m"
+  Delete "$INSTDIR\share\snmp\mib2c-data\mfd-persistence.m2i"
   Delete "$INSTDIR\share\snmp\mib2c-data\mfd-readme.m2c"
   Delete "$INSTDIR\share\snmp\mib2c-data\mfd-top.m2c"
   Delete "$INSTDIR\share\snmp\mib2c-data\node-get.m2i"
@@ -790,7 +1161,6 @@
   Delete "$INSTDIR\share\snmp\mib2c-data\syntax-RowStatus-varbind-validate.m2i"
   Delete "$INSTDIR\share\snmp\mib2c-data\syntax-StorageType-dependencies.m2i"
   Delete "$INSTDIR\share\snmp\mib2c-data\syntax-TestAndIncr-get.m2i"
-  Delete "$INSTDIR\share\snmp\mib2c-data\"
 
   Delete "$SMPROGRAMS\$ICONS_GROUP\Net-SNMP Help.lnk"
   Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
@@ -831,6 +1201,7 @@
   Delete "$INSTDIR\include\net-snmp\system\freebsd6.h"
   Delete "$INSTDIR\include\net-snmp\system\freebsd7.h"
   Delete "$INSTDIR\include\net-snmp\system\freebsd8.h"
+  Delete "$INSTDIR\include\net-snmp\system\kfreebsd.h"
   Delete "$INSTDIR\include\net-snmp\system\dragonfly.h"
   Delete "$INSTDIR\include\net-snmp\system\mingw32.h"
   Delete "$INSTDIR\include\net-snmp\system\solaris2.9.h"
@@ -910,6 +1281,9 @@
   Delete "$INSTDIR\include\net-snmp\library\snmp_locking.h"
   Delete "$INSTDIR\include\net-snmp\library\snmpv3.h"
   Delete "$INSTDIR\include\net-snmp\library\oid_stash.h"
+  Delete "$INSTDIR\include\net-snmp\library\snmpAliasDomain.h"
+  Delete "$INSTDIR\include\net-snmp\library\snmpDTLSUDPDomain.h"
+  Delete "$INSTDIR\include\net-snmp\library\snmpSSHDomain.h"
   Delete "$INSTDIR\include\net-snmp\library\snmpSTDDomain.h"
   Delete "$INSTDIR\include\net-snmp\library\snmpTCPDomain.h"
   Delete "$INSTDIR\include\net-snmp\library\snmpUDPDomain.h"
@@ -918,10 +1292,15 @@
   Delete "$INSTDIR\include\net-snmp\library\snmp_enum.h"
   Delete "$INSTDIR\include\net-snmp\library\cmu_compat.h"
   Delete "$INSTDIR\include\net-snmp\library\snmpv3-security-includes.h"
+  Delete "$INSTDIR\include\net-snmp\library\dir_utils.h"
   Delete "$INSTDIR\include\net-snmp\library\file_utils.h"
   Delete "$INSTDIR\include\net-snmp\library\text_utils.h"
+  Delete "$INSTDIR\include\net-snmp\library\types.h"
   Delete "$INSTDIR\include\net-snmp\library\fd_event_manager.h"
+  Delete "$INSTDIR\include\net-snmp\library\large_fd_set.h"
+  Delete "$INSTDIR\include\net-snmp\library\snmp_openssl.h"
   Delete "$INSTDIR\include\net-snmp\library\snmp_service.h"
+  Delete "$INSTDIR\include\net-snmp\library\snmptsm.h"
 
   Delete "$INSTDIR\include\net-snmp\agent\stash_cache.h"
   Delete "$INSTDIR\include\net-snmp\agent\instance.h"
@@ -964,6 +1343,8 @@
   Delete "$INSTDIR\include\net-snmp\agent\serialize.h"
   Delete "$INSTDIR\include\net-snmp\agent\stash_to_next.h"
   Delete "$INSTDIR\include\net-snmp\agent\table_tdata.h"
+  Delete "$INSTDIR\include\net-snmp\agent\sysORTable.h"
+  Delete "$INSTDIR\include\net-snmp\agent\agent_sysORTable.h"
   Delete "$INSTDIR\include\net-snmp\agent\mib_module_config.h"
   Delete "$INSTDIR\include\net-snmp\agent\agent_module_config.h"
 
@@ -977,7 +1358,11 @@
   Delete "$INSTDIR\include\net-snmp\data_access\ipstats.h"
   Delete "$INSTDIR\include\net-snmp\data_access\ipaddress.h"
   Delete "$INSTDIR\include\net-snmp\data_access\tcpConn.h"
+  Delete "$INSTDIR\include\net-snmp\data_access\default_route.h"
   Delete "$INSTDIR\include\net-snmp\data_access\ip_scalars.h"
+  Delete "$INSTDIR\include\net-snmp\data_access\scopezone.h"
+  Delete "$INSTDIR\include\net-snmp\data_access\swinst.h"
+  Delete "$INSTDIR\include\net-snmp\data_access\swrun.h"
   Delete "$INSTDIR\include\net-snmp\data_access\udp_endpoint.h"
 
   Delete "$INSTDIR\lib\netsnmpagent.lib"
@@ -987,8 +1372,6 @@
   Delete "$INSTDIR\lib\netsnmpmibs.lib"
   Delete "$INSTDIR\lib\netsnmp.exp"
   
-  RMDir "$SMPROGRAMS\$ICONS_GROUP\Service"
-  RMDir "$SMPROGRAMS\$ICONS_GROUP"
   RMDir "$INSTDIR\perl\x86"
   RMDir "$INSTDIR\perl"
   RMDir "$INSTDIR\lib"
@@ -1012,6 +1395,7 @@
   RMDir "$INSTDIR\share"
 
   RMDir "$INSTDIR\temp"
+  RMDir "$INSTDIR\snmp\persist\mib_indexes"
   RMDir "$INSTDIR\snmp\persist"
   RMDir "$INSTDIR\snmp"
   RMDir "$INSTDIR\etc\snmp"
@@ -1021,6 +1405,31 @@
   RMDir "$INSTDIR\include"
   RMDir "$INSTDIR\log"
   RMDir "$INSTDIR"
+  
+  ; Start Menu entries may have been installed for the current user only,
+  ; or for All Users.  So let's delete both sets....
+  SetShellVarContext current
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Net-SNMP Help.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\README.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Service\Register Agent Service.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Service\Unregister Agent Service.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Service\Register Trap Service.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Service\Unregister Trap Service.lnk"
+  RMDir "$SMPROGRAMS\$ICONS_GROUP\Service"
+  RMDir "$SMPROGRAMS\$ICONS_GROUP"
+
+  SetShellVarContext all
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Net-SNMP Help.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\README.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Service\Register Agent Service.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Service\Unregister Agent Service.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Service\Register Trap Service.lnk"
+  Delete "$SMPROGRAMS\$ICONS_GROUP\Service\Unregister Trap Service.lnk"
+  RMDir "$SMPROGRAMS\$ICONS_GROUP\Service"
+  RMDir "$SMPROGRAMS\$ICONS_GROUP"
+  
   ; Delete the environment variables
   ;Push "SNMPCONFPATH"
   ;Call un.DeleteEnvStr
@@ -1038,51 +1447,24 @@
 
 Function IsSSLInstalled
   Push $R0
-  StrCmp ${OPENSSL_REQUIRED} "0" continueInstall
-  ReadEnvStr $R0 "windir"
-  IfFileExists "$R0\system32\libeay32.dll" 0 noSSL
-    Goto continueInstall
-  noSSL:
-    MessageBox MB_YESNO|MB_ICONQUESTION "OpenSSL ($R0\system32\libeay32.dll) does not appear to be installed.  OpenSSL is required for this installation of Net-SNMP.  Please install OpenSSL from http://www.slproweb.com/products/Win32OpenSSL.html and try again.  Would you like to continue installing anyways?" IDYES continueInstall
+  Push $R1
+
+  GetDLLVersion libeay32.dll $R0 $R1
+  IfErrors noSSL
+
+  ; Continue installing if the DLL version is >= 1.0.0.0
+  IntCmpU 65536 $R0 continueInstall continueInstall
+
+  MessageBox MB_OK "This package is known not to work with OpenSSL versions before 1.0.0.  Please install the latest OpenSSL version from http://www.slproweb.com/products/Win32OpenSSL.html and try again."
   Quit
+
+  noSSL:
+    MessageBox MB_YESNO|MB_ICONQUESTION "OpenSSL does not appear to be installed.  OpenSSL is required for this installation of Net-SNMP.  Please install OpenSSL from http://www.slproweb.com/products/Win32OpenSSL.html and try again.  Would you like to continue installing anyways?" IDYES continueInstall
+  Quit
+  
   continueInstall:
+  Pop $R1
   Pop $R0
 FunctionEnd
 
-Function InstallAgent
-  SetOutPath "$INSTDIR\bin"
 
-  ; Delete agent otherwise re-installing a different agent may not work because of date stamps
-  Delete "$INSTDIR\bin\snmpd.exe"  
-
-  StrCmp $winExtDLL "1" sec02_winExtDLL sec02_normal
-
-  sec02_winExtDLL:
-  ;File "bin\snmpd-winExtDLL.exe"
-  File /oname=snmpd.exe "bin\snmpd-winExtDLL.exe"
-  goto sec02_continue
-
-  sec02_normal:
-  File "bin\snmpd.exe"
-
-  sec02_continue:
-
-  SetOutPath "$INSTDIR\share\snmp\snmpconf-data\snmpd-data"
-  File "share\snmp\snmpconf-data\snmpd-data\*.*"
-  
-  ; If we are on an NT system then install the service batch files.
-  Call IsNT
-  Pop $1
-  StrCmp $1 0 NoService
-  
-  SetOutPath "$INSTDIR\"
-  File "registeragent.bat"
-  File "unregisteragent.bat"
-  Call CreateAgentBats
-
-  CreateDirectory "$SMPROGRAMS\$ICONS_GROUP\Service"
-  CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Service\Register Agent Service.lnk" "$INSTDIR\registeragent.bat"
-  CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Service\Unregister Agent Service.lnk" "$INSTDIR\unregisteragent.bat"
-  
-  NoService:
-FunctionEnd
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/encode_keychange/encode_keychange.dsp b/win32/encode_keychange/encode_keychange.dsp
index 5e19366..5a252f5 100644
--- a/win32/encode_keychange/encode_keychange.dsp
+++ b/win32/encode_keychange/encode_keychange.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

diff --git a/win32/libagent/Makefile.in b/win32/libagent/Makefile.in
index 0b4dbc4..abcd82e 100644
--- a/win32/libagent/Makefile.in
+++ b/win32/libagent/Makefile.in
@@ -9,31 +9,62 @@
 NULL=nul
 !ENDIF 
 
+ALL : "..\lib\$(OUTDIR)\netsnmpagent.lib"
+
+
+LIB32_OBJS= \
+	"$(INTDIR)\agent_handler.obj" \
+	"$(INTDIR)\agent_index.obj" \
+	"$(INTDIR)\agent_read_config.obj" \
+	"$(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_get_statistic.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
+	-@erase "$(INTDIR)\vc??.idb"
+	-@erase "..\lib\$(OUTDIR)\netsnmpagent.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)\netsnmpagent.lib"
-
-
-CLEAN :
-	-@erase "$(INTDIR)\agent_handler.obj"
-	-@erase "$(INTDIR)\agent_index.obj"
-	-@erase "$(INTDIR)\agent_read_config.obj"
-	-@erase "$(INTDIR)\agent_registry.obj"
-	-@erase "$(INTDIR)\agent_trap.obj"
-	-@erase "$(INTDIR)\snmp_agent.obj"
-	-@erase "$(INTDIR)\snmp_vars.obj"
-	-@erase "$(INTDIR)\vc??.idb"
-	-@erase "$(INTDIR)\$(PROGNAME).pch"
-	-@erase "..\lib\$(OUTDIR)\netsnmpagent.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 /GX /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 "_MBCS" /Fp"$(INTDIR)\libagent.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+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 
+!ELSE
+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 
+!ENDIF
 
 .c{$(INTDIR)}.obj::
    $(CPP) @<<
@@ -50,122 +81,16 @@
    $(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)\libagent.bsc" 
-BSC32_SBRS= \
-
 LIB32=link.exe -lib
 LIB32_FLAGS=/nologo /out:"..\lib\$(OUTDIR)\netsnmpagent.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\agent_handler.obj" \
-	"$(INTDIR)\agent_index.obj" \
-	"$(INTDIR)\agent_read_config.obj" \
-	"$(INTDIR)\agent_registry.obj" \
-	"$(INTDIR)\agent_trap.obj" \
-	"$(INTDIR)\snmp_agent.obj" \
-	"$(INTDIR)\snmp_vars.obj"
 
 "..\lib\$(OUTDIR)\netsnmpagent.lib" : "..\lib\$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
     $(LIB32) @<<
   $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
 <<
 
-!ELSEIF  "$(CFG)" == "debug"
-
-ALL : "..\lib\$(OUTDIR)\netsnmpagent.lib"
-
-
-CLEAN :
-	-@erase "$(INTDIR)\agent_handler.obj"
-	-@erase "$(INTDIR)\agent_index.obj"
-	-@erase "$(INTDIR)\agent_read_config.obj"
-	-@erase "$(INTDIR)\agent_registry.obj"
-	-@erase "$(INTDIR)\agent_trap.obj"
-	-@erase "$(INTDIR)\snmp_agent.obj"
-	-@erase "$(INTDIR)\snmp_vars.obj"
-	-@erase "$(INTDIR)\vc??.idb"
-	-@erase "$(INTDIR)\vc??.pdb"
-	-@erase "$(INTDIR)\$(PROGNAME).pch"
-	-@erase "..\lib\$(OUTDIR)\netsnmpagent.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 /GX /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 "_MBCS" /Fp"$(INTDIR)\libagent.pch" /YX /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)\libagent.bsc" 
-BSC32_SBRS= \
-
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"..\lib\$(OUTDIR)\netsnmpagent.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\agent_handler.obj" \
-	"$(INTDIR)\agent_index.obj" \
-	"$(INTDIR)\agent_read_config.obj" \
-	"$(INTDIR)\agent_registry.obj" \
-	"$(INTDIR)\agent_trap.obj" \
-	"$(INTDIR)\snmp_agent.obj" \
-	"$(INTDIR)\snmp_vars.obj"
-
-"..\lib\$(OUTDIR)\netsnmpagent.lib" : "..\lib\$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ENDIF 
-
 
 !IF "$(NO_EXTERNAL_DEPS)" != "1"
 !IF EXISTS("libagent.dep")
@@ -176,7 +101,6 @@
 !ENDIF 
 
 
-!IF "$(CFG)" == "release" || "$(CFG)" == "debug"
 SOURCE=..\..\agent\agent_handler.c
 
 "$(INTDIR)\agent_handler.obj" : $(SOURCE) "$(INTDIR)"
@@ -200,6 +124,10 @@
 "$(INTDIR)\agent_registry.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
+SOURCE=..\..\agent\agent_sysORTable.c
+
+"$(INTDIR)\agent_sysORTable.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 SOURCE=..\..\agent\agent_trap.c
 
@@ -219,7 +147,158 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\agent\helpers\all_helpers.c
 
-!ENDIF 
+"$(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\snmp_get_statistic.c
+
+"$(INTDIR)\snmp_get_statistic.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\helpers\stash_cache.c
+
+"$(INTDIR)\stash_cache.obj" : $(SOURCE) "$(INTDIR)"
+	$(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 f70d494..63642c2 100644
--- a/win32/libagent/libagent.dsp
+++ b/win32/libagent/libagent.dsp
@@ -101,16 +101,124 @@
 # End Source File

 # Begin Source File

 

+SOURCE=..\..\agent\agent_sysORTable.c

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\agent\agent_trap.c

 # 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\snmp_get_statistic.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"

 

@@ -133,16 +241,80 @@
 # End Source File

 # Begin Source File

 

+SOURCE="..\..\include\net-snmp\agent\agent_sysORTable.h"

+# End Source File

+# Begin Source File

+

 SOURCE="..\..\include\net-snmp\agent\agent_trap.h"

 # 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 263bcd2..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 /GX /Zi /O2 /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /I "..\..\agent" /I "..\..\agent\mibgroup" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\libhelpers.pch" /YX /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 /GX /Zi /Od /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /I "..\..\agent" /I "..\..\agent\mibgroup" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\libhelpers.pch" /YX /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/Makefile.in b/win32/libnetsnmptrapd/Makefile.in
index b5c8b25..3824919 100644
--- a/win32/libnetsnmptrapd/Makefile.in
+++ b/win32/libnetsnmptrapd/Makefile.in
@@ -19,7 +19,6 @@
 	-@erase "$(INTDIR)\snmptrapd_handlers.obj"
 	-@erase "$(INTDIR)\snmptrapd_log.obj"
 	-@erase "$(INTDIR)\snmptrapd_auth.obj"
-	-@erase "$(INTDIR)\notification_log.obj"
 	-@erase "$(INTDIR)\winservice.obj"
 	-@erase "$(INTDIR)\vc??.idb"
 	-@erase "$(INTDIR)\$(PROGNAME).pch"
@@ -32,7 +31,7 @@
     if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
 
 CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /GX /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 "_MBCS" /Fp"$(INTDIR)\libnetsnmptrapd.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+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) @<<
@@ -76,7 +75,6 @@
 	"$(INTDIR)\snmptrapd_handlers.obj" \
 	"$(INTDIR)\snmptrapd_log.obj" \
 	"$(INTDIR)\snmptrapd_auth.obj" \
-	"$(INTDIR)\notification_log.obj" \
 	"$(INTDIR)\winservice.obj"
 
 "..\lib\$(OUTDIR)\netsnmptrapd.lib" : "..\lib\$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
@@ -94,7 +92,6 @@
 	-@erase "$(INTDIR)\snmptrapd_handlers.obj"
 	-@erase "$(INTDIR)\snmptrapd_log.obj"
 	-@erase "$(INTDIR)\snmptrapd_auth.obj"
-	-@erase "$(INTDIR)\notification_log.obj"
 	-@erase "$(INTDIR)\winservice.obj"
 	-@erase "$(INTDIR)\vc??.idb"
 	-@erase "$(INTDIR)\vc??.pdb"
@@ -108,7 +105,7 @@
     if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
 
 CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /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 "_MBCS" /Fp"$(INTDIR)\libnetsnmptrapd.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+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) @<<
@@ -152,7 +149,6 @@
 	"$(INTDIR)\snmptrapd_handlers.obj" \
 	"$(INTDIR)\snmptrapd_log.obj" \
 	"$(INTDIR)\snmptrapd_auth.obj" \
-	"$(INTDIR)\notification_log.obj" \
 	"$(INTDIR)\winservice.obj"
 
 "..\lib\$(OUTDIR)\netsnmptrapd.lib" : "..\lib\$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
@@ -197,11 +193,6 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\agent\mibgroup\notification-log-mib\notification_log.c
-
-"$(INTDIR)\notification_log.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
 SOURCE=..\..\snmplib\winservice.c
 
 "$(INTDIR)\winservice.obj" : $(SOURCE) "$(INTDIR)"
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/libsdll.dsw b/win32/libsdll.dsw
deleted file mode 100644
index 155c999..0000000
--- a/win32/libsdll.dsw
+++ /dev/null
@@ -1,77 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00

-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!

-

-###############################################################################

-

-Project: "libagent"=".\libagent\libagent.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-}}}

-

-###############################################################################

-

-Project: "libhelpers"=".\libhelpers\libhelpers.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-}}}

-

-###############################################################################

-

-Project: "libsnmp_dll"=".\libsnmp_dll\libsnmp_dll.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-}}}

-

-###############################################################################

-

-Project: "netsnmpmibs"=".\netsnmpmibs\netsnmpmibs.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-}}}

-

-###############################################################################

-

-Project: "libnetsnmptrapd"=".\libnetsnmptrapd\libnetsnmptrapd.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-}}}

-

-###############################################################################

-

-Global:

-

-Package=<5>

-{{{

-}}}

-

-Package=<3>

-{{{

-}}}

-

-###############################################################################

-

diff --git a/win32/libsnmp/Makefile.in b/win32/libsnmp/Makefile.in
index 9b36bb8..98d83c8 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,250 +10,94 @@
 NULL=nul
 !ENDIF 
 
+ALL : "..\lib\$(OUTDIR)\netsnmp.lib"
+
+LIB32_OBJS= \
+	"$(INTDIR)\asn1.obj" \
+	"$(INTDIR)\callback.obj" \
+	"$(INTDIR)\check_varbind.obj" \
+	"$(INTDIR)\closedir.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)\ucd_compat.obj"
-	-@erase "$(INTDIR)\vacm.obj"
-	-@erase "$(INTDIR)\vc??.idb"
-	-@erase "$(INTDIR)\winpipe.obj"
-	-@erase "$(INTDIR)\fd_event_manager.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 /GX /Zi /O2 /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_BIND_TO_CURRENT_VCLIBS_VERSION" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\$(PROGNAME).pch" /YX /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)\ucd_compat.obj" \
-	"$(INTDIR)\vacm.obj" \
-	"$(INTDIR)\winpipe.obj" \
-	"$(INTDIR)\fd_event_manager.obj"
-
-"..\lib\$(OUTDIR)\netsnmp.lib" : "..\lib\$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
+CPP_PROJ=/nologo /MD /W3 /EHsc /Zi /O2 /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_CRT_SECURE_NO_WARNINGS" /D "_CRT_NONSTDC_NO_WARNINGS" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
 !ELSEIF  "$(CFG)" == "debug"
-
-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)\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)\$(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 /GX /Zi /Od /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_BIND_TO_CURRENT_VCLIBS_VERSION" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\$(PROGNAME).pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_CRT_SECURE_NO_WARNINGS" /D "_CRT_NONSTDC_NO_WARNINGS" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+!ENDIF
 
 .c{$(INTDIR)}.obj::
    $(CPP) @<<
@@ -269,91 +114,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)\ucd_compat.obj" \
-	"$(INTDIR)\vacm.obj" \
-	"$(INTDIR)\winpipe.obj" \
-	"$(INTDIR)\fd_event_manager.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")
@@ -364,7 +133,6 @@
 !ENDIF 
 
 
-!IF "$(CFG)" == "release" || "$(CFG)" == "debug"
 SOURCE=..\..\snmplib\asn1.c
 
 "$(INTDIR)\asn1.obj" : $(SOURCE) "$(INTDIR)"
@@ -383,9 +151,9 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\snmplib\cmu_compat.c
+SOURCE=..\..\snmplib\closedir.c
 
-"$(INTDIR)\cmu_compat.obj" : $(SOURCE) "$(INTDIR)"
+"$(INTDIR)\closedir.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
@@ -431,15 +199,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)
 
 
@@ -455,12 +229,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)"
@@ -491,6 +277,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)"
@@ -503,6 +295,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)"
@@ -521,6 +319,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)"
@@ -575,6 +439,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)"
@@ -587,42 +457,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)"
@@ -647,6 +481,18 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\strtok_r.c
+
+"$(INTDIR)\strtok_r.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\strtoull.c
+
+"$(INTDIR)\strtoull.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\system.c
 
 "$(INTDIR)\system.obj" : $(SOURCE) "$(INTDIR)"
@@ -659,12 +505,6 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\snmplib\strtok_r.c
-
-"$(INTDIR)\strtok_r.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
 SOURCE=..\..\snmplib\ucd_compat.c
 
 "$(INTDIR)\ucd_compat.obj" : $(SOURCE) "$(INTDIR)"
@@ -683,11 +523,3 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\snmplib\fd_event_manager.c
-
-"$(INTDIR)\fd_event_manager.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF 
-
diff --git a/win32/libsnmp/libsnmp.dsp b/win32/libsnmp/libsnmp.dsp
index 16eea2d..2386331 100644
--- a/win32/libsnmp/libsnmp.dsp
+++ b/win32/libsnmp/libsnmp.dsp
@@ -97,7 +97,7 @@
 # End Source File

 # Begin Source File

 

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

+SOURCE=..\..\snmplib\closedir.c

 # End Source File

 # Begin Source File

 

@@ -129,10 +129,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 +157,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 +181,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 +193,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 +245,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 +257,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,6 +321,14 @@
 # End Source File

 # Begin Source File

 

+SOURCE=..\..\snmplib\strtok_r.c

+# End Source File

+# Begin Source File

+

+SOURCE=..\..\snmplib\strtoull.c

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\snmplib\system.c

 # End Source File

 # Begin Source File

@@ -281,10 +337,6 @@
 # End Source File

 # Begin Source File

 

-SOURCE=..\..\snmplib\strtok_r.c

-# End Source File

-# Begin Source File

-

 SOURCE=..\..\snmplib\ucd_compat.c

 # End Source File

 # Begin Source File

@@ -295,10 +347,6 @@
 

 SOURCE=..\..\snmplib\winpipe.c

 # End Source File

-# Begin Source File

-

-SOURCE=..\..\snmplib\fd_event_manager.c

-# End Source File

 # End Group

 # Begin Group "Header Files"

 

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

 # Begin Source File

 

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

-# End Source File

-# Begin Source File

-

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

 # End Source File

 # Begin Source File

@@ -333,6 +377,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

@@ -345,6 +393,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

@@ -437,6 +489,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

@@ -445,10 +501,6 @@
 # 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

diff --git a/win32/libsnmp_dll/Makefile.in b/win32/libsnmp_dll/Makefile.in
index bef70ae..0aaf41b 100644
--- a/win32/libsnmp_dll/Makefile.in
+++ b/win32/libsnmp_dll/Makefile.in
@@ -2,7 +2,7 @@
 CFG=
 OUTDIR=
 INTDIR=
-SSL=
+SDK=
 
 !IF "$(OS)" == "Windows_NT"
 NULL=
@@ -10,71 +10,84 @@
 NULL=nul
 !ENDIF 
 
-!IF  "$(CFG)" == "release"
-
 ALL : "..\bin\$(OUTDIR)\netsnmp.dll"
 
+LINK32_OBJS= \
+	"$(INTDIR)\asn1.obj" \
+	"$(INTDIR)\callback.obj" \
+	"$(INTDIR)\check_varbind.obj" \
+	"$(INTDIR)\closedir.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"
+LINK32_OBJS=$(LINK32_OBJS)\
+	"$(INTDIR)\snmpIPv6BaseDomain.obj" \
+	"$(INTDIR)\snmpTCPIPv6Domain.obj" \
+	"$(INTDIR)\snmpUDPIPv6Domain.obj"
+!ENDIF
 
 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)\ucd_compat.obj"
-	-@erase "$(INTDIR)\vacm.obj"
-	-@erase "$(INTDIR)\vc??.idb"
-	-@erase "$(INTDIR)\winpipe.obj"
-	-@erase "$(INTDIR)\fd_event_manager.obj"
-	-@erase "$(INTDIR)\$(PROGNAME).pch"
+	-@for %f in ($(LINK32_OBJS)) do erase %%f
 	-@erase "..\lib\$(OUTDIR)\netsnmp.exp"
 	-@erase "..\lib\$(OUTDIR)\netsnmp.lib"
 	-@erase "..\bin\$(OUTDIR)\netsnmp.dll"
+	-@erase "..\bin\$(OUTDIR)\netsnmp.dll.manifest"
 
 "..\lib\$(OUTDIR)" :
     if not exist "..\lib\$(OUTDIR)/$(NULL)" mkdir "..\lib\$(OUTDIR)"
@@ -86,7 +99,11 @@
     if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
 
 CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /GX /Zi /O2 /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_BIND_TO_CURRENT_VCLIBS_VERSION" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "NETSNMP_DLL" /Fp"$(INTDIR)\libsnmp_dll.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+!IF  "$(CFG)" == "release"
+CPP_PROJ=/nologo /MD /W3 /EHsc /Zi /O2 /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_BIND_TO_CURRENT_VCLIBS_VERSION" /D "NDEBUG" /D "_CONSOLE" /D "_CRT_SECURE_NO_WARNINGS" /D "_CRT_NONSTDC_NO_WARNINGS" /D "_MBCS" /D "NETSNMP_DLL" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+!ELSE
+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" /D "NETSNMP_DLL" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+!ENDIF
 
 .c{$(INTDIR)}.obj::
    $(CPP) @<<
@@ -103,272 +120,23 @@
    $(CPP_PROJ) $< 
 <<
 
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
 MTL=midl.exe
 MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32 
 RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(INTDIR)\libsnmp_dll.bsc" 
-BSC32_SBRS= \
-
 LINK32=link.exe
-LINK32_FLAGS=advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /dll /pdb:"../bin/$(OUTDIR)/netsnmp.pdb" /debug /machine:I386 /def:".\libsnmp.def" /out:"../bin/$(OUTDIR)/netsnmp.dll" /implib:"../lib/$(OUTDIR)\netsnmp.lib" 
-LINK32_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)\ucd_compat.obj" \
-	"$(INTDIR)\vacm.obj" \
-	"$(INTDIR)\winpipe.obj" \
-	"$(INTDIR)\fd_event_manager.obj"
+!IF  "$(CFG)" == "release"
+LINK32_FLAGS=advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /dll /pdb:"../bin/$(OUTDIR)/netsnmp.pdb" /debug /def:".\libsnmp.def" /out:"../bin/$(OUTDIR)/netsnmp.dll" /implib:"../lib/$(OUTDIR)/netsnmp.lib" 
+!ELSE
+LINK32_FLAGS=advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /dll /incremental:no /pdb:"../bin/$(OUTDIR)/netsnmp.pdb" /debug /def:".\libsnmp.def" /out:"../bin/$(OUTDIR)/netsnmp.dll" /implib:"../lib/$(OUTDIR)/netsnmp.lib" 
+!ENDIF
 
 "..\bin\$(OUTDIR)\netsnmp.dll" : "..\bin\$(OUTDIR)" "..\lib\$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
     $(LINK32) @<<
   $(LINK32_FLAGS) $(LINK32_OBJS)
 <<
-
-!ELSEIF  "$(CFG)" == "debug"
-
-ALL : "..\bin\$(OUTDIR)\netsnmp.dll"
-
-
-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)\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)\$(PROGNAME).pch"
-	-@erase "..\lib\$(OUTDIR)\netsnmp.exp"
-	-@erase "..\lib\$(OUTDIR)\netsnmp.lib"
-	-@erase "$(INTDIR)\netsnmp.pdb"
-	-@erase "..\bin\$(OUTDIR)\netsnmp.dll"
-
-"..\lib\$(OUTDIR)" :
-    if not exist "..\lib\$(OUTDIR)/$(NULL)" mkdir "..\lib\$(OUTDIR)"
-
-"..\bin\$(OUTDIR)" :
-    if not exist "..\bin\$(OUTDIR)/$(NULL)" mkdir "..\bin\$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_BIND_TO_CURRENT_VCLIBS_VERSION" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "NETSNMP_DLL" /Fp"$(INTDIR)\libsnmp_dll.pch" /YX /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) $< 
-<<
-
-MTL=midl.exe
-MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32 
-RSC=rc.exe
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(INTDIR)\libsnmp_dll.bsc" 
-BSC32_SBRS= \
-
+ if exist "../bin/$(OUTDIR)/netsnmp.dll.manifest" \
+	    mt.exe -manifest "../bin/$(OUTDIR)/netsnmp.dll.manifest" -outputresource:"../bin/$(OUTDIR)/netsnmp.dll";2
 LINK32=link.exe
-LINK32_FLAGS=advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /dll /incremental:no /pdb:"../bin/$(OUTDIR)\netsnmp.pdb" /debug /machine:I386 /def:".\libsnmp.def" /out:"../bin/$(OUTDIR)/netsnmp.dll" /implib:"../lib/$(OUTDIR)\netsnmp.lib" 
-LINK32_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)\ucd_compat.obj" \
-	"$(INTDIR)\vacm.obj" \
-	"$(INTDIR)\winpipe.obj" \
-	"$(INTDIR)\fd_event_manager.obj"
-
-"..\bin\$(OUTDIR)\netsnmp.dll" : "..\bin\$(OUTDIR)" "..\lib\$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
-    $(LINK32) @<<
-  $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF 
 
 
 !IF "$(NO_EXTERNAL_DEPS)" != "1"
@@ -380,7 +148,6 @@
 !ENDIF 
 
 
-!IF "$(CFG)" == "release" || "$(CFG)" == "debug"
 SOURCE=..\..\snmplib\asn1.c
 
 "$(INTDIR)\asn1.obj" : $(SOURCE) "$(INTDIR)"
@@ -399,9 +166,9 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\snmplib\cmu_compat.c
+SOURCE=..\..\snmplib\closedir.c
 
-"$(INTDIR)\cmu_compat.obj" : $(SOURCE) "$(INTDIR)"
+"$(INTDIR)\closedir.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
@@ -447,15 +214,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)
 
 
@@ -471,12 +244,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)"
@@ -507,6 +292,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)"
@@ -519,6 +310,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)"
@@ -537,6 +334,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)"
@@ -591,6 +454,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)"
@@ -603,42 +472,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)"
@@ -663,6 +496,18 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\snmplib\strtok_r.c
+
+"$(INTDIR)\strtok_r.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\snmplib\strtoull.c
+
+"$(INTDIR)\strtoull.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\snmplib\system.c
 
 "$(INTDIR)\system.obj" : $(SOURCE) "$(INTDIR)"
@@ -675,12 +520,6 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-SOURCE=..\..\snmplib\strtok_r.c
-
-"$(INTDIR)\strtok_r.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
 SOURCE=..\..\snmplib\ucd_compat.c
 
 "$(INTDIR)\ucd_compat.obj" : $(SOURCE) "$(INTDIR)"
@@ -698,12 +537,4 @@
 "$(INTDIR)\winpipe.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
-SOURCE=..\..\snmplib\fd_event_manager.c
-
-"$(INTDIR)\fd_event_manager.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF 
-
 
diff --git a/win32/libsnmp_dll/libsnmp.def b/win32/libsnmp_dll/libsnmp.def
index 4670fb6..45dd356 100644
--- a/win32/libsnmp_dll/libsnmp.def
+++ b/win32/libsnmp_dll/libsnmp.def
@@ -1,459 +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_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
-
+; 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 ecb9d5e..12c0414 100644
--- a/win32/libsnmp_dll/libsnmp_dll.dsp
+++ b/win32/libsnmp_dll/libsnmp_dll.dsp
@@ -104,7 +104,7 @@
 # End Source File

 # Begin Source File

 

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

+SOURCE=..\..\snmplib\closedir.c

 # End Source File

 # Begin Source File

 

@@ -136,10 +136,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 +164,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 +188,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 +200,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 +252,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 +264,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,6 +328,14 @@
 # End Source File

 # Begin Source File

 

+SOURCE=..\..\snmplib\strtok_r.c

+# End Source File

+# Begin Source File

+

+SOURCE=..\..\snmplib\strtoull.c

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\snmplib\system.c

 # End Source File

 # Begin Source File

@@ -288,10 +344,6 @@
 # End Source File

 # Begin Source File

 

-SOURCE=..\..\snmplib\strtok_r.c

-# End Source File

-# Begin Source File

-

 SOURCE=..\..\snmplib\ucd_compat.c

 # End Source File

 # Begin Source File

@@ -302,10 +354,6 @@
 

 SOURCE=..\..\snmplib\winpipe.c

 # End Source File

-# Begin Source File

-

-SOURCE=..\..\snmplib\fd_event_manager.c

-# End Source File

 # End Group

 # Begin Group "Header Files"

 

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

 # Begin Source File

 

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

-# End Source File

-# Begin Source File

-

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

 # End Source File

 # Begin Source File

@@ -340,6 +384,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

@@ -352,6 +400,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

@@ -444,6 +496,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

@@ -452,10 +508,6 @@
 # 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

@@ -463,5 +515,9 @@
 SOURCE="..\..\include\net-snmp\library\vacm.h"

 # End Source File

 # End Group

+# Begin Source File

+

+SOURCE=.\libsnmp.def

+# End Source File

 # End Target

 # End Project

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 95662ad..4978dc8 100644
--- a/win32/net-snmp/agent/mib_module_config.h
+++ b/win32/net-snmp/agent/mib_module_config.h
@@ -15,11 +15,12 @@
 /* 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
-#else
-/* #undef USING_NOTIFICATION_LOG_MIB_NOTIFICATION_LOG_MODULE */
 #endif
 
 /* Define if compiling with the target module files.  */
@@ -245,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 a6826b3..1608563 100644
--- a/win32/net-snmp/net-snmp-config.h
+++ b/win32/net-snmp/net-snmp-config.h
@@ -5,31 +5,45 @@
 #define NET_SNMP_CONFIG_H
 
 /* _MSC_VER values
-   1600 = 10.0 (2010)
-   1500 =  9.0 (2008)
-   1400 =  8.0 (2005)
-   1310 =  7.1 (2003)
-   1300 =  7.0 (2002)
-   1200 =  6.0
+   1800 = MSVC++ 12.0 (Visual Studio 2013)
+   1700 = MSVC++ 11.0 (Visual Studio 2012)
+   1600 = MSVC++ 10.0 (Visual Studio 2010)
+   1500 = MSVC++  9.0 (Visual Studio 2008)
+   1400 = MSVC++  8.0 (Visual Studio 2005)
+   1310 = MSVC++  7.1 (Visual Studio 2003)
+   1300 = MSVC++  7.0 (Visual Studio 2002)
+   1200 = MSVC++  6.0
 */
 
+#ifdef _MSC_VER
+/* Disable warning 4018: signed/unsigned mismatch. */
+#pragma warning (disable: 4018)
+#endif
+
+/* Automatically set by Windows perl Configure script.
+ * When compiling with the MSVC workspace, this must be set manually.
+ * See the PACKAGE_VERSION variable in Unix /configure script
+*/
+#ifndef PACKAGE_VERSION
+#define PACKAGE_VERSION "unknown"
+#endif
+
 /* Define HAVE_WIN32_PLATFORM_SDK if you have:
  * 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 */
+#define HAVE_WIN32_PLATFORM_SDK 1
 
-/* 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>.
+/* 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
  */
 #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.
@@ -227,19 +241,17 @@
 /* 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 */
 
+/* Define to 1 if you have the <crtdbg.h> header file. */
+#define HAVE_CRTDBG_H 1
+
 /* Define to 1 if you have the <direct.h> header file. */
-/* #undef HAVE_DIRECT_H */
+#define HAVE_DIRECT_H 1
 
-/* Define to 1 if you have the `chown' function. */
-/* #undef HAVE_CHOWN */
-
-/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.  */
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+   */
 /* #undef HAVE_DIRENT_H */
 
 /* Define to 1 if you have the <dlfcn.h> header file. */
@@ -314,12 +326,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
 
@@ -365,9 +379,6 @@
 /* Define to 1 if you have the `crypto' library (-lcrypto). */
 /* #undef HAVE_LIBCRYPTO */
 
-/* Define to 1 if you have the `dl' library (-ldl). */
-/* #undef HAVE_LIBDL */
-
 /* Define to 1 if you have the `efence' library (-lefence). */
 /* #undef HAVE_LIBEFENCE */
 
@@ -377,9 +388,6 @@
 /* Define to 1 if you have the `kstat' library (-lkstat). */
 /* #undef HAVE_LIBKSTAT */
 
-/* Define to 1 if you have the `kvm' library (-lkvm). */
-/* #undef HAVE_LIBKVM */
-
 /* Define to 1 if you have the `m' library (-lm). */
 /* #undef HAVE_LIBM */
 
@@ -404,9 +412,6 @@
 /* Define to 1 if you have the `sensors' library (-lsensors). */
 /* #undef HAVE_LIBSENSORS */
 
-/* Define to 1 if you have the `z' library (-lz). */
-/* #undef HAVE_LIBZ */
-
 /* Define to 1 if you have the <limits.h> header file. */
 #define HAVE_LIMITS_H 1
 
@@ -419,9 +424,6 @@
 /* Define to 1 if you have the <locale.h> header file. */
 #define HAVE_LOCALE_H 1
 
-/* Define to 1 if you have the `localtime_r' function. */
-/* #undef HAVE_LOCALTIME_R */
-
 /* Define to 1 if you have the `lrand48' function. */
 /* #undef HAVE_LRAND48 */
 
@@ -437,12 +439,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
 
@@ -512,6 +508,9 @@
 /* Define to 1 if you have the <netinet/ip_icmp.h> header file. */
 /* #undef HAVE_NETINET_IP_ICMP_H */
 
+/* Define to 1 if you have the <netinet/icmp6.h> header file. */
+/* #undef HAVE_NETINET_ICMP6_H */
+
 /* Define to 1 if you have the <netinet/ip_var.h> header file. */
 /* #undef HAVE_NETINET_IP_VAR_H */
 
@@ -683,9 +682,6 @@
 /* Define to 1 if you have the `statvfs' function. */
 /* #undef HAVE_STATVFS */
 
-/* Define to 1 if you have the <stdarg.h> header file. */
-#define HAVE_STDARG_H 1
-
 /* Define to 1 if you have the <stdint.h> header file. */
 #ifdef __MINGW32__
 #define HAVE_STDINT_H 1
@@ -700,9 +696,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
 
@@ -846,6 +839,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
 
@@ -939,6 +935,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 */
 
@@ -946,13 +951,17 @@
 /* #undef PACKAGE_BUGREPORT */
 
 /* Define to the full name of this package. */
+#ifndef PACKAGE_NAME
 #define PACKAGE_NAME "Net-SNMP"
+#endif
 
 /* Define to the full name and version of this package. */
 /* #undef PACKAGE_STRING */
 
 /* Define to the one symbol short name of this package. */
+#ifndef PACKAGE_TARNAME
 #define PACKAGE_TARNAME "net-snmp"
+#endif
 
 /* Define to the version of this package. */
 /* #undef PACKAGE_VERSION */
@@ -966,6 +975,9 @@
 /* The size of a `long', as computed by sizeof. */
 #define SIZEOF_LONG 4
 
+/* The size of a `intmax_t', as computed by sizeof. */
+#define SIZEOF_INTMAX_T 8
+
 /* The size of a `short', as computed by sizeof. */
 #define SIZEOF_SHORT 2
 
@@ -981,7 +993,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). */
@@ -1030,96 +1042,102 @@
 /* #undef RTENTRY_4_4 */
 
 /* Does struct sigaction have a sa_sigaction field? */
-/* #undef STRUCT_SIGACTION_HAS_SA_SIGACTION */
+/* #undef HAVE_STRUCT_SIGACTION_SA_SIGACTION */
 
 /* Does struct sockaddr have a sa_len field? */
-/* #undef STRUCT_SOCKADDR_HAS_SA_LEN */
+/* #undef HAVE_STRUCT_SOCKADDR_SA_LEN */
 
 /* Does struct sockaddr have a sa_family2 field? */
-/* #undef STRUCT_SOCKADDR_HAS_SA_UNION_SA_GENERIC_SA_FAMILY2 */
+/* #undef HAVE_STRUCT_SOCKADDR_SA_UNION_SA_GENERIC_SA_FAMILY2 */
 
 /* Does struct in6_addr have a s6_un.sa6_ladd field? */
-/* #undef STRUCT_IN6_ADDR_HAS_S6_UN_SA6_LADDR */
+/* #undef HAVE_STRUCT_IN6_ADDR_S6_UN_SA6_LADDR */
+
+/* msghdr.msg_control */
+/* #undef HAVE_STRUCT_MSGHDR_MSG_CONTROL */
+
+/* msghdr.msg_flags */
+/* #undef HAVE_STRUCT_MSGHDR_MSG_FLAGS */
 
 /* rtentry structure tests */
 /* #undef RTENTRY_RT_NEXT */
-/* #undef STRUCT_RTENTRY_HAS_RT_DST */
-/* #undef STRUCT_RTENTRY_HAS_RT_UNIT */
-/* #undef STRUCT_RTENTRY_HAS_RT_USE */
-/* #undef STRUCT_RTENTRY_HAS_RT_REFCNT */
-/* #undef STRUCT_RTENTRY_HAS_RT_HASH */
+/* #undef HAVE_STRUCT_RTENTRY_RT_DST */
+/* #undef HAVE_STRUCT_RTENTRY_RT_UNIT */
+/* #undef HAVE_STRUCT_RTENTRY_RT_USE */
+/* #undef HAVE_STRUCT_RTENTRY_RT_REFCNT */
+/* #undef HAVE_STRUCT_RTENTRY_RT_HASH */
 
 /* ifnet structure tests */
-/* #undef STRUCT_IFNET_HAS_IF_BAUDRATE */
-/* #undef STRUCT_IFNET_HAS_IF_BAUDRATE_IFS_VALUE */
-/* #undef STRUCT_IFNET_HAS_IF_SPEED */
-/* #undef STRUCT_IFNET_HAS_IF_TYPE */
-/* #undef STRUCT_IFNET_HAS_IF_IMCASTS */
-/* #undef STRUCT_IFNET_HAS_IF_IQDROPS */
-/* #undef STRUCT_IFNET_HAS_IF_LASTCHANGE_TV_SEC */
-/* #undef STRUCT_IFNET_HAS_IF_NOPROTO */
-/* #undef STRUCT_IFNET_HAS_IF_OMCASTS */
-/* #undef STRUCT_IFNET_HAS_IF_XNAME */
-/* #undef STRUCT_IFNET_HAS_IF_OBYTES */
-/* #undef STRUCT_IFNET_HAS_IF_IBYTES */
-/* #undef STRUCT_IFNET_HAS_IF_ADDRLIST */
+/* #undef HAVE_STRUCT_IFNET_IF_BAUDRATE */
+/* #undef HAVE_STRUCT_IFNET_IF_BAUDRATE_IFS_VALUE */
+/* #undef HAVE_STRUCT_IFNET_IF_SPEED */
+/* #undef HAVE_STRUCT_IFNET_IF_TYPE */
+/* #undef HAVE_STRUCT_IFNET_IF_IMCASTS */
+/* #undef HAVE_STRUCT_IFNET_IF_IQDROPS */
+/* #undef HAVE_STRUCT_IFNET_IF_LASTCHANGE_TV_SEC */
+/* #undef HAVE_STRUCT_IFNET_IF_NOPROTO */
+/* #undef HAVE_STRUCT_IFNET_IF_OMCASTS */
+/* #undef HAVE_STRUCT_IFNET_IF_XNAME */
+/* #undef HAVE_STRUCT_IFNET_IF_OBYTES */
+/* #undef HAVE_STRUCT_IFNET_IF_IBYTES */
+/* #undef HAVE_STRUCT_IFNET_IF_ADDRLIST */
 
 /* tcpstat.tcps_rcvmemdrop */
-/* #undef STRUCT_TCPSTAT_HAS_TCPS_RCVMEMDROP */
+/* #undef HAVE_STRUCT_TCPSTAT_TCPS_RCVMEMDROP */
 
 /* udpstat.udps_discard */
-/* #undef STRUCT_UDPSTAT_HAS_UDPS_DISCARD */
+/* #undef HAVE_STRUCT_UDPSTAT_UDPS_DISCARD */
 
 /* udpstat.udps_discard */
-/* #undef STRUCT_UDPSTAT_HAS_UDPS_NOPORT */
+/* #undef HAVE_STRUCT_UDPSTAT_UDPS_NOPORT */
 
 /* udpstat.udps_discard */
-/* #undef STRUCT_UDPSTAT_HAS_UDPS_NOPORTBCAST */
+/* #undef HAVE_STRUCT_UDPSTAT_UDPS_NOPORTBCAST */
 
 /* udpstat.udps_discard */
-/* #undef STRUCT_UDPSTAT_HAS_UDPS_FULLSOCK */
+/* #undef HAVE_STRUCT_UDPSTAT_UDPS_FULLSOCK */
 
 /* arphd.at_next */
-/* #undef STRUCT_ARPHD_HAS_AT_NEXT */
+/* #undef HAVE_STRUCT_ARPHD_AT_NEXT */
 
 /* ifaddr.ifa_next */
-/* #undef STRUCT_IFADDR_HAS_IFA_NEXT */
+/* #undef HAVE_STRUCT_IFADDR_IFA_NEXT */
 
 /* ifnet.if_mtu */
-/* #undef STRUCT_IFNET_HAS_IF_MTU */
+/* #undef HAVE_STRUCT_IFNET_IF_MTU */
 
 /* swdevt.sw_nblksenabled */
-/* #undef STRUCT_SWDEVT_HAS_SW_NBLKSENABLED */
+/* #undef HAVE_STRUCT_SWDEVT_SW_NBLKSENABLED */
 
 /* nlist.n_value */
-/* #undef STRUCT_NLIST_HAS_N_VALUE */
+/* #undef HAVE_STRUCT_NLIST_N_VALUE */
 
 /* ipstat structure tests */
-/* #undef STRUCT_IPSTAT_HAS_IPS_CANTFORWARD */
-/* #undef STRUCT_IPSTAT_HAS_IPS_CANTFRAG */
-/* #undef STRUCT_IPSTAT_HAS_IPS_DELIVERED */
-/* #undef STRUCT_IPSTAT_HAS_IPS_FRAGDROPPED */
-/* #undef STRUCT_IPSTAT_HAS_IPS_FRAGTIMEOUT */
-/* #undef STRUCT_IPSTAT_HAS_IPS_LOCALOUT */
-/* #undef STRUCT_IPSTAT_HAS_IPS_NOPROTO */
-/* #undef STRUCT_IPSTAT_HAS_IPS_NOROUTE */
-/* #undef STRUCT_IPSTAT_HAS_IPS_ODROPPED */
-/* #undef STRUCT_IPSTAT_HAS_IPS_OFRAGMENTS */
-/* #undef STRUCT_IPSTAT_HAS_IPS_REASSEMBLED */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_CANTFORWARD */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_CANTFRAG */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_DELIVERED */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_FRAGDROPPED */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_FRAGTIMEOUT */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_LOCALOUT */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_NOPROTO */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_NOROUTE */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_ODROPPED */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_OFRAGMENTS */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_REASSEMBLED */
 
 /* vfsstat.f_frsize */
-/* #undef STRUCT_STATVFS_HAS_F_FRSIZE */
+/* #undef HAVE_STRUCT_STATVFS_F_FRSIZE */
 
 /* vfsstat.f_files */
-/* #undef STRUCT_STATVFS_HAS_F_FILES */
+/* #undef HAVE_STRUCT_STATVFS_F_FILES */
 
 /* statfs inode structure tests*/
-/* #undef STRUCT_STATFS_HAS_F_FILES */
-/* #undef STRUCT_STATFS_HAS_F_FFREE */
-/* #undef STRUCT_STATFS_HAS_F_FAVAIL */
+/* #undef HAVE_STRUCT_STATFS_F_FILES */
+/* #undef HAVE_STRUCT_STATFS_F_FFREE */
+/* #undef HAVE_STRUCT_STATFS_F_FAVAIL */
 
 /* des_ks_struct.weak_key */
-/* #undef STRUCT_DES_KS_STRUCT_HAS_WEAK_KEY */
+/* #undef HAVE_STRUCT_DES_KS_STRUCT_WEAK_KEY */
 
 /* ifnet needs to have _KERNEL defined */
 /* #undef IFNET_NEEDS_KERNEL */
@@ -1133,9 +1151,6 @@
 /* define if SIOCGIFADDR exists in sys/ioctl.h */
 /* #undef SYS_IOCTL_H_HAS_SIOCGIFADDR */
 
-/* define if your compiler (processor) defines __FUNCTION__ for you */
-/* #undef HAVE_CPP_UNDERBAR_FUNCTION_DEFINED */
-
 /* Mib-2 tree Info */
 /* These are the system information variables. */
 
@@ -1340,44 +1355,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 */
 
@@ -1486,6 +1463,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
 
@@ -1503,14 +1506,16 @@
 
 /* Not-to-be-compiled macros for use by configure only */
 #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
@@ -1577,20 +1582,53 @@
 typedef unsigned short mode_t;
 #endif
 #ifndef HAVE_STDINT_H
+typedef unsigned char uint8_t;
+typedef char int8_t;
+typedef unsigned __int16 uint16_t;
+typedef __int16 int16_t;
 typedef unsigned __int32 uint32_t;
-typedef long int32_t;
+typedef __int32 int32_t;
 typedef unsigned __int64 uint64_t;
 typedef __int64 int64_t;
-typedef unsigned short   uint16_t;
+typedef unsigned __int64 uintmax_t;
+typedef __int64 intmax_t;
 #else /* HAVE_STDINT_H */
 #include <stdint.h>
 #endif /* HAVE_STDINT_H */
 
+
+/* (u)intptr_t should only be needed for MSVC 6 32-bit. */
+/* SDK has it for 64-bit and newer MSVC should also have it in stddef.h. */
+#ifndef _INTPTR_T_DEFINED
+#ifdef _M_X64
+typedef __int64          intptr_t;
+#else
+typedef int              intptr_t;
+#endif
+#define _INTPTR_T_DEFINED
+#endif
+
+#ifndef _UINTPTR_T_DEFINED
+#ifdef _M_X64
+typedef unsigned __int64 uintptr_t;
+#else
+typedef unsigned int     uintptr_t;
+#endif
+#define _UINTPTR_T_DEFINED
+#endif
+
 #ifndef __cplusplus
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable: 4804) // '-' : unsafe use of type 'bool' in operation
+#endif
 enum {
     netsnmp_compile_time_uintptr_t_size_check
         = sizeof(struct netsnmp_compile_time_uintptr_t_size_check_s { int:-!(sizeof(uintptr_t) == sizeof(void*)); })
 };
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
 #endif
 
 /* Define if you have the closesocket function.  */
@@ -1617,17 +1655,9 @@
 /* Define NETSNMP_USE_DLL when building or using netsnmp.DLL */
 /* #undef NETSNMP_USE_DLL */
 
-#ifdef NETSNMP_USE_DLL
-  #ifdef NETSNMP_DLL
-    #if defined(_MSC_VER)
-      #define NETSNMP_IMPORT __declspec(dllexport)
-    #endif
-  #else
-    #if defined(_MSC_VER)
-      #define NETSNMP_IMPORT __declspec(dllimport)
-    #endif
-  #endif   /* NETSNMP_DLL */
-#endif     /* NETSNMP_USE_DLL */
+#if defined(NETSNMP_DLL) && !defined(NETSNMP_USE_DLL)
+#error NETSNMP_USE_DLL must be defined when building libsnmp as a DLL.
+#endif
 
 /*
  * DLL decoration, if used at all, must be consistent.
@@ -1640,25 +1670,22 @@
  *  the NETSNMP_IMPORT definitions harmless.
  */
 
-
-  #ifdef NETSNMP_USE_DLL
-    #ifndef NETSNMP_TOOLS_C
-
-  /* wrap alloc functions to use DLL's memory heap */
-  /* This is not done in tools.c, where these wrappers are defined */
-
-      #define strdup    netsnmp_strdup
-      #define calloc    netsnmp_calloc
-      #define malloc    netsnmp_malloc
-      #define realloc   netsnmp_realloc
-      #define free      netsnmp_free
+#ifdef NETSNMP_USE_DLL
+  #ifdef NETSNMP_DLL
+    #if defined(_MSC_VER)
+      #define NETSNMP_IMPORT __declspec(dllexport)
     #endif
-  #endif
+  #else
+    #if defined(_MSC_VER)
+      #define NETSNMP_IMPORT __declspec(dllimport)
+    #endif
+  #endif   /* NETSNMP_DLL */
+#endif     /* NETSNMP_USE_DLL */
 
 /* MSVC OpenSSL linker settings. */
-#if defined(WIN32) && !defined(mingw32)
+#if defined(_MSC_VER)
 #  if defined(NETSNMP_USE_OPENSSL)
-#    ifdef NETSNMP_USE_DLL
+#    ifdef _DLL
 #      ifdef _DEBUG
 #        pragma comment(lib, "libeay32MDd.lib")
 #      else
@@ -1672,6 +1699,7 @@
 #      endif
 #    endif
 #    pragma comment(lib, "gdi32.lib")
+#    pragma comment(lib, "user32.lib")
 #  endif
 #endif
 
@@ -1681,7 +1709,7 @@
 #  define NETSNMP_IMPORT extern
 #endif
 
-#if defined(HAVE_NLIST) && defined(STRUCT_NLIST_HAS_N_VALUE) && !defined(DONT_USE_NLIST) && !defined(NETSNMP_NO_KMEM_USAGE)
+#if defined(HAVE_NLIST) && defined(HAVE_STRUCT_NLIST_N_VALUE) && !defined(DONT_USE_NLIST) && !defined(NETSNMP_NO_KMEM_USAGE)
 #define NETSNMP_CAN_USE_NLIST
 #endif
 
@@ -1689,7 +1717,6 @@
 #define DMALLOC_FUNC_CHECK
 #endif
 
-/* #undef NETSNMP_ENABLE_IPV6 */
 /* #undef NETSNMP_ENABLE_LOCAL_SMUX */
 
 /* define if agentx transport is to use domain sockets only */
@@ -1710,19 +1737,35 @@
 #undef HAVE_INET_NTOP
 #undef HAVE_INET_PTON
 
-#if NETSNMP_ENABLE_IPV6
+/* IPv6 transports */
+#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
 #endif
 #endif
 
+/*
+ * Although if_nametoindex() is available on Windows Vista, Windows Server
+ * 2008 and later in iphlpapi.dll, do not link with if_nametoindex() such
+ * that the Net-SNMP executable can be started on earlier Windows versions.
+ */
+#undef HAVE_IF_NAMETOINDEX
+
 #ifndef NI_MAXHOST
 #define NI_MAXHOST	1025
 #endif
 
+/* Define to 1 if you have the `strtoull' function. */
+#if _MSC_VER >= 1800
+#define HAVE_STRTOULL 1
+#else
+/* #undef HAVE_STRTOULL */
+#endif
+
 /*
  * Module configuration and control starts here.
  *
@@ -1766,9 +1809,19 @@
 #define NETSNMP_TIMEOUT_WAITFORSINGLEOBJECT 5000
 
 #ifdef HAVE_WIN32_PLATFORM_SDK
-#define STRUCT_SOCKADDR_STORAGE_HAS_SS_FAMILY 1
+#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"
+#else
+#define NETSNMP_PRIz ""
+#endif
+#endif
 
 #endif /* NET_SNMP_CONFIG_H */
 
diff --git a/win32/net-snmp/net-snmp-config.h.in b/win32/net-snmp/net-snmp-config.h.in
index a6826b3..9693730 100644
--- a/win32/net-snmp/net-snmp-config.h.in
+++ b/win32/net-snmp/net-snmp-config.h.in
@@ -5,31 +5,45 @@
 #define NET_SNMP_CONFIG_H
 
 /* _MSC_VER values
-   1600 = 10.0 (2010)
-   1500 =  9.0 (2008)
-   1400 =  8.0 (2005)
-   1310 =  7.1 (2003)
-   1300 =  7.0 (2002)
-   1200 =  6.0
+   1800 = MSVC++ 12.0 (Visual Studio 2013)
+   1700 = MSVC++ 11.0 (Visual Studio 2012)
+   1600 = MSVC++ 10.0 (Visual Studio 2010)
+   1500 = MSVC++  9.0 (Visual Studio 2008)
+   1400 = MSVC++  8.0 (Visual Studio 2005)
+   1310 = MSVC++  7.1 (Visual Studio 2003)
+   1300 = MSVC++  7.0 (Visual Studio 2002)
+   1200 = MSVC++  6.0
 */
 
+#ifdef _MSC_VER
+/* Disable warning 4018: signed/unsigned mismatch. */
+#pragma warning (disable: 4018)
+#endif
+
+/* Automatically set by Windows perl Configure script.
+ * When compiling with the MSVC workspace, this must be set manually.
+ * See the PACKAGE_VERSION variable in Unix /configure script
+*/
+#ifndef PACKAGE_VERSION
+#define PACKAGE_VERSION "unknown"
+#endif
+
 /* Define HAVE_WIN32_PLATFORM_SDK if you have:
  * 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 */
 
-/* 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>.
+/* 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
  */
 #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.
@@ -227,19 +241,17 @@
 /* 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 */
 
+/* Define to 1 if you have the <crtdbg.h> header file. */
+#define HAVE_CRTDBG_H 1
+
 /* Define to 1 if you have the <direct.h> header file. */
-/* #undef HAVE_DIRECT_H */
+#define HAVE_DIRECT_H 1
 
-/* Define to 1 if you have the `chown' function. */
-/* #undef HAVE_CHOWN */
-
-/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.  */
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+   */
 /* #undef HAVE_DIRENT_H */
 
 /* Define to 1 if you have the <dlfcn.h> header file. */
@@ -314,12 +326,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
 
@@ -365,9 +379,6 @@
 /* Define to 1 if you have the `crypto' library (-lcrypto). */
 /* #undef HAVE_LIBCRYPTO */
 
-/* Define to 1 if you have the `dl' library (-ldl). */
-/* #undef HAVE_LIBDL */
-
 /* Define to 1 if you have the `efence' library (-lefence). */
 /* #undef HAVE_LIBEFENCE */
 
@@ -377,9 +388,6 @@
 /* Define to 1 if you have the `kstat' library (-lkstat). */
 /* #undef HAVE_LIBKSTAT */
 
-/* Define to 1 if you have the `kvm' library (-lkvm). */
-/* #undef HAVE_LIBKVM */
-
 /* Define to 1 if you have the `m' library (-lm). */
 /* #undef HAVE_LIBM */
 
@@ -404,9 +412,6 @@
 /* Define to 1 if you have the `sensors' library (-lsensors). */
 /* #undef HAVE_LIBSENSORS */
 
-/* Define to 1 if you have the `z' library (-lz). */
-/* #undef HAVE_LIBZ */
-
 /* Define to 1 if you have the <limits.h> header file. */
 #define HAVE_LIMITS_H 1
 
@@ -419,9 +424,6 @@
 /* Define to 1 if you have the <locale.h> header file. */
 #define HAVE_LOCALE_H 1
 
-/* Define to 1 if you have the `localtime_r' function. */
-/* #undef HAVE_LOCALTIME_R */
-
 /* Define to 1 if you have the `lrand48' function. */
 /* #undef HAVE_LRAND48 */
 
@@ -437,12 +439,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
 
@@ -512,6 +508,9 @@
 /* Define to 1 if you have the <netinet/ip_icmp.h> header file. */
 /* #undef HAVE_NETINET_IP_ICMP_H */
 
+/* Define to 1 if you have the <netinet/icmp6.h> header file. */
+/* #undef HAVE_NETINET_ICMP6_H */
+
 /* Define to 1 if you have the <netinet/ip_var.h> header file. */
 /* #undef HAVE_NETINET_IP_VAR_H */
 
@@ -683,9 +682,6 @@
 /* Define to 1 if you have the `statvfs' function. */
 /* #undef HAVE_STATVFS */
 
-/* Define to 1 if you have the <stdarg.h> header file. */
-#define HAVE_STDARG_H 1
-
 /* Define to 1 if you have the <stdint.h> header file. */
 #ifdef __MINGW32__
 #define HAVE_STDINT_H 1
@@ -700,9 +696,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
 
@@ -846,6 +839,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
 
@@ -939,6 +935,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 */
 
@@ -946,13 +951,17 @@
 /* #undef PACKAGE_BUGREPORT */
 
 /* Define to the full name of this package. */
+#ifndef PACKAGE_NAME
 #define PACKAGE_NAME "Net-SNMP"
+#endif
 
 /* Define to the full name and version of this package. */
 /* #undef PACKAGE_STRING */
 
 /* Define to the one symbol short name of this package. */
+#ifndef PACKAGE_TARNAME
 #define PACKAGE_TARNAME "net-snmp"
+#endif
 
 /* Define to the version of this package. */
 /* #undef PACKAGE_VERSION */
@@ -966,6 +975,9 @@
 /* The size of a `long', as computed by sizeof. */
 #define SIZEOF_LONG 4
 
+/* The size of a `intmax_t', as computed by sizeof. */
+#define SIZEOF_INTMAX_T 8
+
 /* The size of a `short', as computed by sizeof. */
 #define SIZEOF_SHORT 2
 
@@ -981,7 +993,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). */
@@ -1030,96 +1042,102 @@
 /* #undef RTENTRY_4_4 */
 
 /* Does struct sigaction have a sa_sigaction field? */
-/* #undef STRUCT_SIGACTION_HAS_SA_SIGACTION */
+/* #undef HAVE_STRUCT_SIGACTION_SA_SIGACTION */
 
 /* Does struct sockaddr have a sa_len field? */
-/* #undef STRUCT_SOCKADDR_HAS_SA_LEN */
+/* #undef HAVE_STRUCT_SOCKADDR_SA_LEN */
 
 /* Does struct sockaddr have a sa_family2 field? */
-/* #undef STRUCT_SOCKADDR_HAS_SA_UNION_SA_GENERIC_SA_FAMILY2 */
+/* #undef HAVE_STRUCT_SOCKADDR_SA_UNION_SA_GENERIC_SA_FAMILY2 */
 
 /* Does struct in6_addr have a s6_un.sa6_ladd field? */
-/* #undef STRUCT_IN6_ADDR_HAS_S6_UN_SA6_LADDR */
+/* #undef HAVE_STRUCT_IN6_ADDR_S6_UN_SA6_LADDR */
+
+/* msghdr.msg_control */
+/* #undef HAVE_STRUCT_MSGHDR_MSG_CONTROL */
+
+/* msghdr.msg_flags */
+/* #undef HAVE_STRUCT_MSGHDR_MSG_FLAGS */
 
 /* rtentry structure tests */
 /* #undef RTENTRY_RT_NEXT */
-/* #undef STRUCT_RTENTRY_HAS_RT_DST */
-/* #undef STRUCT_RTENTRY_HAS_RT_UNIT */
-/* #undef STRUCT_RTENTRY_HAS_RT_USE */
-/* #undef STRUCT_RTENTRY_HAS_RT_REFCNT */
-/* #undef STRUCT_RTENTRY_HAS_RT_HASH */
+/* #undef HAVE_STRUCT_RTENTRY_RT_DST */
+/* #undef HAVE_STRUCT_RTENTRY_RT_UNIT */
+/* #undef HAVE_STRUCT_RTENTRY_RT_USE */
+/* #undef HAVE_STRUCT_RTENTRY_RT_REFCNT */
+/* #undef HAVE_STRUCT_RTENTRY_RT_HASH */
 
 /* ifnet structure tests */
-/* #undef STRUCT_IFNET_HAS_IF_BAUDRATE */
-/* #undef STRUCT_IFNET_HAS_IF_BAUDRATE_IFS_VALUE */
-/* #undef STRUCT_IFNET_HAS_IF_SPEED */
-/* #undef STRUCT_IFNET_HAS_IF_TYPE */
-/* #undef STRUCT_IFNET_HAS_IF_IMCASTS */
-/* #undef STRUCT_IFNET_HAS_IF_IQDROPS */
-/* #undef STRUCT_IFNET_HAS_IF_LASTCHANGE_TV_SEC */
-/* #undef STRUCT_IFNET_HAS_IF_NOPROTO */
-/* #undef STRUCT_IFNET_HAS_IF_OMCASTS */
-/* #undef STRUCT_IFNET_HAS_IF_XNAME */
-/* #undef STRUCT_IFNET_HAS_IF_OBYTES */
-/* #undef STRUCT_IFNET_HAS_IF_IBYTES */
-/* #undef STRUCT_IFNET_HAS_IF_ADDRLIST */
+/* #undef HAVE_STRUCT_IFNET_IF_BAUDRATE */
+/* #undef HAVE_STRUCT_IFNET_IF_BAUDRATE_IFS_VALUE */
+/* #undef HAVE_STRUCT_IFNET_IF_SPEED */
+/* #undef HAVE_STRUCT_IFNET_IF_TYPE */
+/* #undef HAVE_STRUCT_IFNET_IF_IMCASTS */
+/* #undef HAVE_STRUCT_IFNET_IF_IQDROPS */
+/* #undef HAVE_STRUCT_IFNET_IF_LASTCHANGE_TV_SEC */
+/* #undef HAVE_STRUCT_IFNET_IF_NOPROTO */
+/* #undef HAVE_STRUCT_IFNET_IF_OMCASTS */
+/* #undef HAVE_STRUCT_IFNET_IF_XNAME */
+/* #undef HAVE_STRUCT_IFNET_IF_OBYTES */
+/* #undef HAVE_STRUCT_IFNET_IF_IBYTES */
+/* #undef HAVE_STRUCT_IFNET_IF_ADDRLIST */
 
 /* tcpstat.tcps_rcvmemdrop */
-/* #undef STRUCT_TCPSTAT_HAS_TCPS_RCVMEMDROP */
+/* #undef HAVE_STRUCT_TCPSTAT_TCPS_RCVMEMDROP */
 
 /* udpstat.udps_discard */
-/* #undef STRUCT_UDPSTAT_HAS_UDPS_DISCARD */
+/* #undef HAVE_STRUCT_UDPSTAT_UDPS_DISCARD */
 
 /* udpstat.udps_discard */
-/* #undef STRUCT_UDPSTAT_HAS_UDPS_NOPORT */
+/* #undef HAVE_STRUCT_UDPSTAT_UDPS_NOPORT */
 
 /* udpstat.udps_discard */
-/* #undef STRUCT_UDPSTAT_HAS_UDPS_NOPORTBCAST */
+/* #undef HAVE_STRUCT_UDPSTAT_UDPS_NOPORTBCAST */
 
 /* udpstat.udps_discard */
-/* #undef STRUCT_UDPSTAT_HAS_UDPS_FULLSOCK */
+/* #undef HAVE_STRUCT_UDPSTAT_UDPS_FULLSOCK */
 
 /* arphd.at_next */
-/* #undef STRUCT_ARPHD_HAS_AT_NEXT */
+/* #undef HAVE_STRUCT_ARPHD_AT_NEXT */
 
 /* ifaddr.ifa_next */
-/* #undef STRUCT_IFADDR_HAS_IFA_NEXT */
+/* #undef HAVE_STRUCT_IFADDR_IFA_NEXT */
 
 /* ifnet.if_mtu */
-/* #undef STRUCT_IFNET_HAS_IF_MTU */
+/* #undef HAVE_STRUCT_IFNET_IF_MTU */
 
 /* swdevt.sw_nblksenabled */
-/* #undef STRUCT_SWDEVT_HAS_SW_NBLKSENABLED */
+/* #undef HAVE_STRUCT_SWDEVT_SW_NBLKSENABLED */
 
 /* nlist.n_value */
-/* #undef STRUCT_NLIST_HAS_N_VALUE */
+/* #undef HAVE_STRUCT_NLIST_N_VALUE */
 
 /* ipstat structure tests */
-/* #undef STRUCT_IPSTAT_HAS_IPS_CANTFORWARD */
-/* #undef STRUCT_IPSTAT_HAS_IPS_CANTFRAG */
-/* #undef STRUCT_IPSTAT_HAS_IPS_DELIVERED */
-/* #undef STRUCT_IPSTAT_HAS_IPS_FRAGDROPPED */
-/* #undef STRUCT_IPSTAT_HAS_IPS_FRAGTIMEOUT */
-/* #undef STRUCT_IPSTAT_HAS_IPS_LOCALOUT */
-/* #undef STRUCT_IPSTAT_HAS_IPS_NOPROTO */
-/* #undef STRUCT_IPSTAT_HAS_IPS_NOROUTE */
-/* #undef STRUCT_IPSTAT_HAS_IPS_ODROPPED */
-/* #undef STRUCT_IPSTAT_HAS_IPS_OFRAGMENTS */
-/* #undef STRUCT_IPSTAT_HAS_IPS_REASSEMBLED */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_CANTFORWARD */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_CANTFRAG */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_DELIVERED */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_FRAGDROPPED */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_FRAGTIMEOUT */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_LOCALOUT */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_NOPROTO */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_NOROUTE */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_ODROPPED */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_OFRAGMENTS */
+/* #undef HAVE_STRUCT_IPSTAT_IPS_REASSEMBLED */
 
 /* vfsstat.f_frsize */
-/* #undef STRUCT_STATVFS_HAS_F_FRSIZE */
+/* #undef HAVE_STRUCT_STATVFS_F_FRSIZE */
 
 /* vfsstat.f_files */
-/* #undef STRUCT_STATVFS_HAS_F_FILES */
+/* #undef HAVE_STRUCT_STATVFS_F_FILES */
 
 /* statfs inode structure tests*/
-/* #undef STRUCT_STATFS_HAS_F_FILES */
-/* #undef STRUCT_STATFS_HAS_F_FFREE */
-/* #undef STRUCT_STATFS_HAS_F_FAVAIL */
+/* #undef HAVE_STRUCT_STATFS_F_FILES */
+/* #undef HAVE_STRUCT_STATFS_F_FFREE */
+/* #undef HAVE_STRUCT_STATFS_F_FAVAIL */
 
 /* des_ks_struct.weak_key */
-/* #undef STRUCT_DES_KS_STRUCT_HAS_WEAK_KEY */
+/* #undef HAVE_STRUCT_DES_KS_STRUCT_WEAK_KEY */
 
 /* ifnet needs to have _KERNEL defined */
 /* #undef IFNET_NEEDS_KERNEL */
@@ -1133,9 +1151,6 @@
 /* define if SIOCGIFADDR exists in sys/ioctl.h */
 /* #undef SYS_IOCTL_H_HAS_SIOCGIFADDR */
 
-/* define if your compiler (processor) defines __FUNCTION__ for you */
-/* #undef HAVE_CPP_UNDERBAR_FUNCTION_DEFINED */
-
 /* Mib-2 tree Info */
 /* These are the system information variables. */
 
@@ -1340,44 +1355,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 */
 
@@ -1486,6 +1463,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
 
@@ -1503,14 +1506,16 @@
 
 /* Not-to-be-compiled macros for use by configure only */
 #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
@@ -1577,20 +1582,53 @@
 typedef unsigned short mode_t;
 #endif
 #ifndef HAVE_STDINT_H
+typedef unsigned char uint8_t;
+typedef char int8_t;
+typedef unsigned __int16 uint16_t;
+typedef __int16 int16_t;
 typedef unsigned __int32 uint32_t;
-typedef long int32_t;
+typedef __int32 int32_t;
 typedef unsigned __int64 uint64_t;
 typedef __int64 int64_t;
-typedef unsigned short   uint16_t;
+typedef unsigned __int64 uintmax_t;
+typedef __int64 intmax_t;
 #else /* HAVE_STDINT_H */
 #include <stdint.h>
 #endif /* HAVE_STDINT_H */
 
+
+/* (u)intptr_t should only be needed for MSVC 6 32-bit. */
+/* SDK has it for 64-bit and newer MSVC should also have it in stddef.h. */
+#ifndef _INTPTR_T_DEFINED
+#ifdef _M_X64
+typedef __int64          intptr_t;
+#else
+typedef int              intptr_t;
+#endif
+#define _INTPTR_T_DEFINED
+#endif
+
+#ifndef _UINTPTR_T_DEFINED
+#ifdef _M_X64
+typedef unsigned __int64 uintptr_t;
+#else
+typedef unsigned int     uintptr_t;
+#endif
+#define _UINTPTR_T_DEFINED
+#endif
+
 #ifndef __cplusplus
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable: 4804) // '-' : unsafe use of type 'bool' in operation
+#endif
 enum {
     netsnmp_compile_time_uintptr_t_size_check
         = sizeof(struct netsnmp_compile_time_uintptr_t_size_check_s { int:-!(sizeof(uintptr_t) == sizeof(void*)); })
 };
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
 #endif
 
 /* Define if you have the closesocket function.  */
@@ -1617,17 +1655,9 @@
 /* Define NETSNMP_USE_DLL when building or using netsnmp.DLL */
 /* #undef NETSNMP_USE_DLL */
 
-#ifdef NETSNMP_USE_DLL
-  #ifdef NETSNMP_DLL
-    #if defined(_MSC_VER)
-      #define NETSNMP_IMPORT __declspec(dllexport)
-    #endif
-  #else
-    #if defined(_MSC_VER)
-      #define NETSNMP_IMPORT __declspec(dllimport)
-    #endif
-  #endif   /* NETSNMP_DLL */
-#endif     /* NETSNMP_USE_DLL */
+#if defined(NETSNMP_DLL) && !defined(NETSNMP_USE_DLL)
+#error NETSNMP_USE_DLL must be defined when building libsnmp as a DLL.
+#endif
 
 /*
  * DLL decoration, if used at all, must be consistent.
@@ -1640,25 +1670,22 @@
  *  the NETSNMP_IMPORT definitions harmless.
  */
 
-
-  #ifdef NETSNMP_USE_DLL
-    #ifndef NETSNMP_TOOLS_C
-
-  /* wrap alloc functions to use DLL's memory heap */
-  /* This is not done in tools.c, where these wrappers are defined */
-
-      #define strdup    netsnmp_strdup
-      #define calloc    netsnmp_calloc
-      #define malloc    netsnmp_malloc
-      #define realloc   netsnmp_realloc
-      #define free      netsnmp_free
+#ifdef NETSNMP_USE_DLL
+  #ifdef NETSNMP_DLL
+    #if defined(_MSC_VER)
+      #define NETSNMP_IMPORT __declspec(dllexport)
     #endif
-  #endif
+  #else
+    #if defined(_MSC_VER)
+      #define NETSNMP_IMPORT __declspec(dllimport)
+    #endif
+  #endif   /* NETSNMP_DLL */
+#endif     /* NETSNMP_USE_DLL */
 
 /* MSVC OpenSSL linker settings. */
-#if defined(WIN32) && !defined(mingw32)
+#if defined(_MSC_VER)
 #  if defined(NETSNMP_USE_OPENSSL)
-#    ifdef NETSNMP_USE_DLL
+#    ifdef _DLL
 #      ifdef _DEBUG
 #        pragma comment(lib, "libeay32MDd.lib")
 #      else
@@ -1672,6 +1699,7 @@
 #      endif
 #    endif
 #    pragma comment(lib, "gdi32.lib")
+#    pragma comment(lib, "user32.lib")
 #  endif
 #endif
 
@@ -1681,7 +1709,7 @@
 #  define NETSNMP_IMPORT extern
 #endif
 
-#if defined(HAVE_NLIST) && defined(STRUCT_NLIST_HAS_N_VALUE) && !defined(DONT_USE_NLIST) && !defined(NETSNMP_NO_KMEM_USAGE)
+#if defined(HAVE_NLIST) && defined(HAVE_STRUCT_NLIST_N_VALUE) && !defined(DONT_USE_NLIST) && !defined(NETSNMP_NO_KMEM_USAGE)
 #define NETSNMP_CAN_USE_NLIST
 #endif
 
@@ -1689,7 +1717,6 @@
 #define DMALLOC_FUNC_CHECK
 #endif
 
-/* #undef NETSNMP_ENABLE_IPV6 */
 /* #undef NETSNMP_ENABLE_LOCAL_SMUX */
 
 /* define if agentx transport is to use domain sockets only */
@@ -1710,19 +1737,35 @@
 #undef HAVE_INET_NTOP
 #undef HAVE_INET_PTON
 
-#if NETSNMP_ENABLE_IPV6
+/* IPv6 transports */
+#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
 #endif
 #endif
 
+/*
+ * Although if_nametoindex() is available on Windows Vista, Windows Server
+ * 2008 and later in iphlpapi.dll, do not link with if_nametoindex() such
+ * that the Net-SNMP executable can be started on earlier Windows versions.
+ */
+#undef HAVE_IF_NAMETOINDEX
+
 #ifndef NI_MAXHOST
 #define NI_MAXHOST	1025
 #endif
 
+/* Define to 1 if you have the `strtoull' function. */
+#if _MSC_VER >= 1800
+#define HAVE_STRTOULL
+#else
+/* #undef HAVE_STRTOULL */
+#endif
+
 /*
  * Module configuration and control starts here.
  *
@@ -1766,9 +1809,19 @@
 #define NETSNMP_TIMEOUT_WAITFORSINGLEOBJECT 5000
 
 #ifdef HAVE_WIN32_PLATFORM_SDK
-#define STRUCT_SOCKADDR_STORAGE_HAS_SS_FAMILY 1
+#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"
+#else
+#define NETSNMP_PRIz ""
+#endif
+#endif
 
 #endif /* NET_SNMP_CONFIG_H */
 
diff --git a/win32/netsnmpmibs/Makefile.in b/win32/netsnmpmibs/Makefile.in
old mode 100644
new mode 100755
index 4e24d75..b6bacbc
--- a/win32/netsnmpmibs/Makefile.in
+++ b/win32/netsnmpmibs/Makefile.in
@@ -2,6 +2,7 @@
 CFG=
 OUTDIR=
 INTDIR=
+SDK=
 
 !IF "$(OS)" == "Windows_NT"
 NULL=
@@ -9,75 +10,8 @@
 NULL=nul
 !ENDIF 
 
-!IF  "$(CFG)" == "release"
-
 ALL : "..\lib\$(OUTDIR)\$(PROGNAME).lib"
 
-
-CLEAN :
-	-@erase "$(INTDIR)\agentx_config.obj"
-	-@erase "$(INTDIR)\client.obj"
-	-@erase "$(INTDIR)\errormib.obj"
-	-@erase "$(INTDIR)\example.obj"
-	-@erase "$(INTDIR)\execute.obj"
-	-@erase "$(INTDIR)\iquery.obj"
-	-@erase "$(INTDIR)\extensible.obj"
-	-@erase "$(INTDIR)\file.obj"
-	-@erase "$(INTDIR)\header_complex.obj"
-	-@erase "$(INTDIR)\loadave.obj"
-	-@erase "$(INTDIR)\master.obj"
-	-@erase "$(INTDIR)\master_admin.obj"
-	-@erase "$(INTDIR)\mib_modules.obj"
-	-@erase "$(INTDIR)\mteEventNotificationTable.obj"
-	-@erase "$(INTDIR)\mteEventTable.obj"
-	-@erase "$(INTDIR)\mteObjectsTable.obj"
-	-@erase "$(INTDIR)\mteTriggerBooleanTable.obj"
-	-@erase "$(INTDIR)\mteTriggerDeltaTable.obj"
-	-@erase "$(INTDIR)\mteTriggerExistenceTable.obj"
-	-@erase "$(INTDIR)\mteTriggerTable.obj"
-	-@erase "$(INTDIR)\mteTriggerThresholdTable.obj"
-	-@erase "$(INTDIR)\extend.obj"
-	-@erase "$(INTDIR)\nsCache.obj"
-	-@erase "$(INTDIR)\nsDebug.obj"
-	-@erase "$(INTDIR)\nsLogging.obj"
-	-@erase "$(INTDIR)\nsModuleTable.obj"
-	-@erase "$(INTDIR)\nsTransactionTable.obj"
-	-@erase "$(INTDIR)\override.obj"
-	-@erase "$(INTDIR)\pass.obj"
-	-@erase "$(INTDIR)\pass_persist.obj"
-	-@erase "$(INTDIR)\proc.obj"
-	-@erase "$(INTDIR)\protocol.obj"
-	-@erase "$(INTDIR)\proxy.obj"
-	-@erase "$(INTDIR)\setSerialNo.obj"
-	-@erase "$(INTDIR)\smux.obj"
-	-@erase "$(INTDIR)\snmp_mib.obj"
-	-@erase "$(INTDIR)\snmpEngine.obj"
-	-@erase "$(INTDIR)\snmpMPDStats.obj"
-	-@erase "$(INTDIR)\snmpNotifyFilterProfileTable.obj"
-	-@erase "$(INTDIR)\snmpNotifyFilterTable.obj"
-	-@erase "$(INTDIR)\snmpNotifyFilterTable_data_access.obj"
-	-@erase "$(INTDIR)\snmpNotifyFilterTable_interface.obj"
-	-@erase "$(INTDIR)\snmpNotifyTable.obj"
-	-@erase "$(INTDIR)\snmpTargetAddrEntry.obj"
-	-@erase "$(INTDIR)\snmpTargetParamsEntry.obj"
-	-@erase "$(INTDIR)\subagent.obj"
-	-@erase "$(INTDIR)\sysORTable.obj"
-	-@erase "$(INTDIR)\system_mib.obj"
-	-@erase "$(INTDIR)\target.obj"
-	-@erase "$(INTDIR)\target_counters.obj"
-	-@erase "$(INTDIR)\ucdDemoPublic.obj"
-	-@erase "$(INTDIR)\usmConf.obj"
-	-@erase "$(INTDIR)\usmStats.obj"
-	-@erase "$(INTDIR)\usmUser.obj"
-	-@erase "$(INTDIR)\util_funcs.obj"
-	-@erase "$(INTDIR)\vacm_context.obj"
-	-@erase "$(INTDIR)\vacm_conf.obj"
-	-@erase "$(INTDIR)\vacm_vars.obj"
-	-@erase "$(INTDIR)\vc??.idb"
-	-@erase "$(INTDIR)\versioninfo.obj"
-	-@erase "$(INTDIR)\$(PROGNAME).pch"
-	-@erase "..\lib\$(OUTDIR)\$(PROGNAME).lib"
-
 "..\lib\$(OUTDIR)" :
     if not exist "..\lib\$(OUTDIR)/$(NULL)" mkdir "..\lib\$(OUTDIR)"
 
@@ -85,7 +19,11 @@
     if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
 
 CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /GX /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 "_MBCS" /Fp"$(INTDIR)\$(PROGNAME).pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+!IF  "$(CFG)" == "release"
+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 
+!ELSEIF  "$(CFG)" == "debug"
+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 
+!ENDIF
 
 .c{$(INTDIR)}.obj::
    $(CPP) @<<
@@ -118,33 +56,40 @@
 <<
 
 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)\$(PROGNAME).lib" 
-LIB32_OBJS= \
+LIB32_OBJS1= \
 	"$(INTDIR)\setSerialNo.obj" \
 	"$(INTDIR)\snmp_mib.obj" \
 	"$(INTDIR)\sysORTable.obj" \
 	"$(INTDIR)\system_mib.obj" \
+	"$(INTDIR)\updates.obj" \
 	"$(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" \
@@ -180,201 +125,44 @@
 	"$(INTDIR)\nsTransactionTable.obj" \
 	"$(INTDIR)\execute.obj" \
 	"$(INTDIR)\iquery.obj" \
+	"$(INTDIR)\override.obj" \
+	"$(INTDIR)\header_generic.obj" \
+	"$(INTDIR)\header_simple_table.obj" \
 	"$(INTDIR)\header_complex.obj" \
 	"$(INTDIR)\mib_modules.obj" \
-	"$(INTDIR)\override.obj" \
 	"$(INTDIR)\util_funcs.obj" \
+	"$(INTDIR)\Exit.obj" \
+	"$(INTDIR)\restart.obj" \
 	"$(INTDIR)\smux.obj"
-
-"..\lib\$(OUTDIR)\$(PROGNAME).lib" : "..\lib\$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "debug"
-
-ALL : "..\lib\$(OUTDIR)\$(PROGNAME).lib"
-
+!IF "$(SDK)" == "true"
+LIB32_OBJS3= \
+	"$(INTDIR)\at.obj" \
+	"$(INTDIR)\icmp.obj" \
+	"$(INTDIR)\interfaces.obj" \
+	"$(INTDIR)\ip.obj" \
+	"$(INTDIR)\ipAddr.obj" \
+	"$(INTDIR)\notification_log.obj" \
+	"$(INTDIR)\route_write.obj" \
+	"$(INTDIR)\tcp.obj" \
+	"$(INTDIR)\tcpTable.obj" \
+	"$(INTDIR)\udp.obj" \
+	"$(INTDIR)\udpTable.obj" \
+	"$(INTDIR)\var_route.obj" \
+	"$(INTDIR)\winExtDLL.obj"
+!ENDIF
+LIB32_OBJS=$(LIB32_OBJS1) $(LIB32_OBJS2) $(LIB32_OBJS3)
 
 CLEAN :
-	-@erase "$(INTDIR)\agentx_config.obj"
-	-@erase "$(INTDIR)\client.obj"
-	-@erase "$(INTDIR)\errormib.obj"
-	-@erase "$(INTDIR)\example.obj"
-	-@erase "$(INTDIR)\execute.obj"
-	-@erase "$(INTDIR)\iquery.obj"
-	-@erase "$(INTDIR)\extensible.obj"
-	-@erase "$(INTDIR)\file.obj"
-	-@erase "$(INTDIR)\header_complex.obj"
-	-@erase "$(INTDIR)\loadave.obj"
-	-@erase "$(INTDIR)\master.obj"
-	-@erase "$(INTDIR)\master_admin.obj"
-	-@erase "$(INTDIR)\mib_modules.obj"
-	-@erase "$(INTDIR)\mteEventNotificationTable.obj"
-	-@erase "$(INTDIR)\mteEventTable.obj"
-	-@erase "$(INTDIR)\mteObjectsTable.obj"
-	-@erase "$(INTDIR)\mteTriggerBooleanTable.obj"
-	-@erase "$(INTDIR)\mteTriggerDeltaTable.obj"
-	-@erase "$(INTDIR)\mteTriggerExistenceTable.obj"
-	-@erase "$(INTDIR)\mteTriggerTable.obj"
-	-@erase "$(INTDIR)\mteTriggerThresholdTable.obj"
-	-@erase "$(INTDIR)\extend.obj"
-	-@erase "$(INTDIR)\nsCache.obj"
-	-@erase "$(INTDIR)\nsDebug.obj"
-	-@erase "$(INTDIR)\nsLogging.obj"
-	-@erase "$(INTDIR)\nsModuleTable.obj"
-	-@erase "$(INTDIR)\nsTransactionTable.obj"
-	-@erase "$(INTDIR)\override.obj"
-	-@erase "$(INTDIR)\pass.obj"
-	-@erase "$(INTDIR)\pass_persist.obj"
-	-@erase "$(INTDIR)\proc.obj"
-	-@erase "$(INTDIR)\protocol.obj"
-	-@erase "$(INTDIR)\proxy.obj"
-	-@erase "$(INTDIR)\setSerialNo.obj"
-	-@erase "$(INTDIR)\smux.obj"
-	-@erase "$(INTDIR)\snmp_mib.obj"
-	-@erase "$(INTDIR)\snmpEngine.obj"
-	-@erase "$(INTDIR)\snmpMPDStats.obj"
-	-@erase "$(INTDIR)\snmpNotifyFilterProfileTable.obj"
-	-@erase "$(INTDIR)\snmpNotifyFilterTable.obj"
-	-@erase "$(INTDIR)\snmpNotifyFilterTable_data_access.obj"
-	-@erase "$(INTDIR)\snmpNotifyFilterTable_interface.obj"
-	-@erase "$(INTDIR)\snmpNotifyTable.obj"
-	-@erase "$(INTDIR)\snmpTargetAddrEntry.obj"
-	-@erase "$(INTDIR)\snmpTargetParamsEntry.obj"
-	-@erase "$(INTDIR)\subagent.obj"
-	-@erase "$(INTDIR)\sysORTable.obj"
-	-@erase "$(INTDIR)\system_mib.obj"
-	-@erase "$(INTDIR)\target.obj"
-	-@erase "$(INTDIR)\target_counters.obj"
-	-@erase "$(INTDIR)\ucdDemoPublic.obj"
-	-@erase "$(INTDIR)\usmConf.obj"
-	-@erase "$(INTDIR)\usmStats.obj"
-	-@erase "$(INTDIR)\usmUser.obj"
-	-@erase "$(INTDIR)\util_funcs.obj"
-	-@erase "$(INTDIR)\vacm_context.obj"
-	-@erase "$(INTDIR)\vacm_conf.obj"
-	-@erase "$(INTDIR)\vacm_vars.obj"
-	-@erase "$(INTDIR)\vc??.idb"
-	-@erase "$(INTDIR)\vc??.pdb"
-	-@erase "$(INTDIR)\versioninfo.obj"
-	-@erase "$(INTDIR)\$(PROGNAME).pch"
+	-@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)" :
-    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 /GX /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 "_MBCS" /Fp"$(INTDIR)\$(PROGNAME).pch" /YX /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)\$(PROGNAME).lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\setSerialNo.obj" \
-	"$(INTDIR)\snmp_mib.obj" \
-	"$(INTDIR)\sysORTable.obj" \
-	"$(INTDIR)\system_mib.obj" \
-	"$(INTDIR)\vacm_context.obj" \
-	"$(INTDIR)\vacm_conf.obj" \
-	"$(INTDIR)\vacm_vars.obj" \
-	"$(INTDIR)\mteEventNotificationTable.obj" \
-	"$(INTDIR)\mteEventTable.obj" \
-	"$(INTDIR)\mteObjectsTable.obj" \
-	"$(INTDIR)\mteTriggerBooleanTable.obj" \
-	"$(INTDIR)\mteTriggerDeltaTable.obj" \
-	"$(INTDIR)\mteTriggerExistenceTable.obj" \
-	"$(INTDIR)\mteTriggerTable.obj" \
-	"$(INTDIR)\mteTriggerThresholdTable.obj" \
-	"$(INTDIR)\example.obj" \
-	"$(INTDIR)\ucdDemoPublic.obj" \
-	"$(INTDIR)\errormib.obj" \
-	"$(INTDIR)\extensible.obj" \
-	"$(INTDIR)\file.obj" \
-	"$(INTDIR)\loadave.obj" \
-	"$(INTDIR)\pass.obj" \
-	"$(INTDIR)\pass_persist.obj" \
-	"$(INTDIR)\proc.obj" \
-	"$(INTDIR)\proxy.obj" \
-	"$(INTDIR)\versioninfo.obj" \
-	"$(INTDIR)\snmpEngine.obj" \
-	"$(INTDIR)\snmpMPDStats.obj" \
-	"$(INTDIR)\usmConf.obj" \
-	"$(INTDIR)\usmStats.obj" \
-	"$(INTDIR)\usmUser.obj" \
-	"$(INTDIR)\snmpNotifyFilterProfileTable.obj" \
-	"$(INTDIR)\snmpNotifyFilterTable.obj" \
-	"$(INTDIR)\snmpNotifyFilterTable_data_access.obj" \
-	"$(INTDIR)\snmpNotifyFilterTable_interface.obj" \
-	"$(INTDIR)\snmpNotifyTable.obj" \
-	"$(INTDIR)\snmpTargetAddrEntry.obj" \
-	"$(INTDIR)\snmpTargetParamsEntry.obj" \
-	"$(INTDIR)\target.obj" \
-	"$(INTDIR)\target_counters.obj" \
-	"$(INTDIR)\agentx_config.obj" \
-	"$(INTDIR)\client.obj" \
-	"$(INTDIR)\master.obj" \
-	"$(INTDIR)\master_admin.obj" \
-	"$(INTDIR)\protocol.obj" \
-	"$(INTDIR)\subagent.obj" \
-	"$(INTDIR)\extend.obj" \
-	"$(INTDIR)\nsCache.obj" \
-	"$(INTDIR)\nsDebug.obj" \
-	"$(INTDIR)\nsLogging.obj" \
-	"$(INTDIR)\nsModuleTable.obj" \
-	"$(INTDIR)\nsTransactionTable.obj" \
-	"$(INTDIR)\execute.obj" \
-	"$(INTDIR)\iquery.obj" \
-	"$(INTDIR)\header_complex.obj" \
-	"$(INTDIR)\mib_modules.obj" \
-	"$(INTDIR)\override.obj" \
-	"$(INTDIR)\util_funcs.obj" \
-	"$(INTDIR)\smux.obj"
-
 "..\lib\$(OUTDIR)\$(PROGNAME).lib" : "..\lib\$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
     $(LIB32) @<<
   $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
 <<
 
-!ENDIF 
-
 
 !IF "$(NO_EXTERNAL_DEPS)" != "1"
 !IF EXISTS("$(PROGNAME).dep")
@@ -410,6 +198,12 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE=..\..\agent\mibgroup\mibII\updates.c
+
+"$(INTDIR)\updates.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\agent\mibgroup\mibII\vacm_context.c
 
 "$(INTDIR)\vacm_context.obj" : $(SOURCE) "$(INTDIR)"
@@ -428,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)
@@ -488,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)"
@@ -584,6 +417,12 @@
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
+SOURCE="..\..\agent\mibgroup\notification-log-mib\notification_log.c"
+
+"$(INTDIR)\notification_log.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\agent\mibgroup\snmp-notification-mib\snmpNotifyFilterTable\snmpNotifyFilterTable.c
 
 "$(INTDIR)\snmpNotifyFilterTable.obj" : $(SOURCE) "$(INTDIR)"
@@ -715,6 +554,25 @@
 "$(INTDIR)\iquery.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
+
+SOURCE=..\..\agent\mibgroup\utilities\override.c
+
+"$(INTDIR)\override.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\util_funcs\header_generic.c
+
+"$(INTDIR)\header_generic.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\util_funcs\header_simple_table.c
+
+"$(INTDIR)\header_simple_table.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
 SOURCE=..\..\agent\mibgroup\header_complex.c
 
 "$(INTDIR)\header_complex.obj" : $(SOURCE) "$(INTDIR)"
@@ -727,26 +585,88 @@
 	$(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\winExtDLL.c
+"$(INTDIR)\winExtDLL.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\mibII\at.c
+"$(INTDIR)\at.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\mibII\icmp.c
+"$(INTDIR)\icmp.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\mibII\interfaces.c
+"$(INTDIR)\interfaces.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\mibII\ip.c
+"$(INTDIR)\ip.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\mibII\ipAddr.c
+"$(INTDIR)\ipAddr.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\mibII\route_write.c
+"$(INTDIR)\route_write.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\mibII\tcp.c
+"$(INTDIR)\tcp.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\mibII\tcpTable.c
+"$(INTDIR)\tcpTable.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\mibII\udp.c
+"$(INTDIR)\udp.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\mibII\udpTable.c
+"$(INTDIR)\udpTable.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\..\agent\mibgroup\mibII\var_route.c
+"$(INTDIR)\var_route.obj" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
 
 !ENDIF 
-
-
-
diff --git a/win32/netsnmpmibs/netsnmpmibs.dsp b/win32/netsnmpmibs/netsnmpmibs.dsp
index 3ad879d..cde496c 100644
--- a/win32/netsnmpmibs/netsnmpmibs.dsp
+++ b/win32/netsnmpmibs/netsnmpmibs.dsp
@@ -85,6 +85,30 @@
 # PROP Default_Filter ""

 # Begin Source File

 

+SOURCE=..\..\agent\mibgroup\mibII\at.c

+# End Source File

+# Begin Source File

+

+SOURCE=..\..\agent\mibgroup\mibII\icmp.c

+# End Source File

+# Begin Source File

+

+SOURCE=..\..\agent\mibgroup\mibII\interfaces.c

+# End Source File

+# Begin Source File

+

+SOURCE=..\..\agent\mibgroup\mibII\ip.c

+# End Source File

+# Begin Source File

+

+SOURCE=..\..\agent\mibgroup\mibII\ipAddr.c

+# End Source File

+# Begin Source File

+

+SOURCE=..\..\agent\mibgroup\mibII\route_write.c

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\agent\mibgroup\mibII\setSerialNo.c

 # End Source File

 # Begin Source File

@@ -101,7 +125,23 @@
 # End Source File

 # Begin Source File

 

-SOURCE=..\..\agent\mibgroup\mibII\vacm_context.c

+SOURCE=..\..\agent\mibgroup\mibII\tcp.c

+# End Source File

+# Begin Source File

+

+SOURCE=..\..\agent\mibgroup\mibII\tcpTable.c

+# End Source File

+# Begin Source File

+

+SOURCE=..\..\agent\mibgroup\mibII\udp.c

+# End Source File

+# Begin Source File

+

+SOURCE=..\..\agent\mibgroup\mibII\udpTable.c

+# End Source File

+# Begin Source File

+

+SOURCE=..\..\agent\mibgroup\mibII\updates.c

 # End Source File

 # Begin Source File

 

@@ -109,43 +149,83 @@
 # End Source File

 # Begin Source File

 

+SOURCE=..\..\agent\mibgroup\mibII\vacm_context.c

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\agent\mibgroup\mibII\vacm_vars.c

 # End Source File

+# Begin Source File

+

+SOURCE=..\..\agent\mibgroup\mibII\var_route.c

+# End Source File

 # End Group

 # Begin Group "disman"

 

 # 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"

@@ -237,19 +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\snmp-notification-mib\snmpNotifyFilterTable\snmpNotifyFilterTable.c

+SOURCE="..\..\agent\mibgroup\snmp-notification-mib\snmpNotifyFilterTable\snmpNotifyFilterTable.c"

 # End Source File

 # Begin Source File

 

-SOURCE=..\..\agent\mibgroup\snmp-notification-mib\snmpNotifyFilterTable\snmpNotifyFilterTable_data_access.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_interface.c

+SOURCE="..\..\agent\mibgroup\snmp-notification-mib\snmpNotifyFilterTable\snmpNotifyFilterTable_interface.c"

 # End Source File

 # Begin Source File

 

@@ -341,7 +425,7 @@
 # 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

 

@@ -349,6 +433,18 @@
 # End Source File

 # Begin Source File

 

+SOURCE=..\..\agent\mibgroup\util_funcs\header_generic.c

+# End Source File

+# Begin Source File

+

+SOURCE=..\..\agent\mibgroup\util_funcs\header_simple_table.c

+# End Source File

+# Begin Source File

+

+SOURCE=..\..\agent\mibgroup\utilities\iquery.c

+# End Source File

+# Begin Source File

+

 SOURCE=..\..\agent\mib_modules.c

 # End Source File

 # Begin Source File

@@ -357,12 +453,32 @@
 # 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

+# Begin Group "winExtDLL"

+

+# PROP Default_Filter ""

+# Begin Source File

+

+SOURCE=..\..\agent\mibgroup\winExtDLL.c

+# End Source File

+# Begin Source File

+

+SOURCE=..\..\agent\mibgroup\winExtDLL.h

+# End Source File

+# End Group

+# Begin Group "smux"

+

+# PROP Default_Filter ""

 # Begin Source File

 

 SOURCE=..\..\agent\mibgroup\smux\smux.c

 # End Source File

+# End Group

 # End Target

 # End Project

diff --git a/win32/netsnmpmibssdk/Makefile.in b/win32/netsnmpmibssdk/Makefile.in
deleted file mode 100644
index 47d1904..0000000
--- a/win32/netsnmpmibssdk/Makefile.in
+++ /dev/null
@@ -1,885 +0,0 @@
-PROGNAME=
-CFG=
-OUTDIR=
-INTDIR=
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE 
-NULL=nul
-!ENDIF 
-
-!IF  "$(CFG)" == "release"
-
-ALL : "..\lib\$(OUTDIR)\netsnmpmibs.lib"
-
-
-CLEAN :
-	-@erase "$(INTDIR)\agentx_config.obj"
-	-@erase "$(INTDIR)\at.obj"
-	-@erase "$(INTDIR)\client.obj"
-	-@erase "$(INTDIR)\dlmod.obj"
-	-@erase "$(INTDIR)\errormib.obj"
-	-@erase "$(INTDIR)\example.obj"
-	-@erase "$(INTDIR)\execute.obj"
-	-@erase "$(INTDIR)\iquery.obj"
-	-@erase "$(INTDIR)\extensible.obj"
-	-@erase "$(INTDIR)\file.obj"
-	-@erase "$(INTDIR)\header_complex.obj"
-	-@erase "$(INTDIR)\icmp.obj"
-	-@erase "$(INTDIR)\interfaces.obj"
-	-@erase "$(INTDIR)\ip.obj"
-	-@erase "$(INTDIR)\ipAddr.obj"
-	-@erase "$(INTDIR)\loadave.obj"
-	-@erase "$(INTDIR)\master.obj"
-	-@erase "$(INTDIR)\master_admin.obj"
-	-@erase "$(INTDIR)\mib_modules.obj"
-	-@erase "$(INTDIR)\mteEventNotificationTable.obj"
-	-@erase "$(INTDIR)\mteEventTable.obj"
-	-@erase "$(INTDIR)\mteObjectsTable.obj"
-	-@erase "$(INTDIR)\mteTriggerBooleanTable.obj"
-	-@erase "$(INTDIR)\mteTriggerDeltaTable.obj"
-	-@erase "$(INTDIR)\mteTriggerExistenceTable.obj"
-	-@erase "$(INTDIR)\mteTriggerTable.obj"
-	-@erase "$(INTDIR)\mteTriggerThresholdTable.obj"
-	-@erase "$(INTDIR)\extend.obj"
-	-@erase "$(INTDIR)\nsCache.obj"
-	-@erase "$(INTDIR)\nsDebug.obj"
-	-@erase "$(INTDIR)\nsLogging.obj"
-	-@erase "$(INTDIR)\nsModuleTable.obj"
-	-@erase "$(INTDIR)\nsTransactionTable.obj"
-	-@erase "$(INTDIR)\override.obj"
-	-@erase "$(INTDIR)\pass.obj"
-	-@erase "$(INTDIR)\pass_persist.obj"
-	-@erase "$(INTDIR)\proc.obj"
-	-@erase "$(INTDIR)\protocol.obj"
-	-@erase "$(INTDIR)\proxy.obj"
-	-@erase "$(INTDIR)\route_write.obj"
-	-@erase "$(INTDIR)\setSerialNo.obj"
-	-@erase "$(INTDIR)\smux.obj"
-#	-@erase "$(INTDIR)\winExtDLL.obj"	# uncomment for winExtDLL
-	-@erase "$(INTDIR)\snmp_mib.obj"
-	-@erase "$(INTDIR)\snmpEngine.obj"
-	-@erase "$(INTDIR)\snmpMPDStats.obj"
-	-@erase "$(INTDIR)\snmpNotifyFilterProfileTable.obj"
-	-@erase "$(INTDIR)\notification_log.obj"
-	-@erase "$(INTDIR)\snmpNotifyFilterTable.obj"
-	-@erase "$(INTDIR)\snmpNotifyFilterTable_data_access.obj"
-	-@erase "$(INTDIR)\snmpNotifyFilterTable_interface.obj"
-	-@erase "$(INTDIR)\snmpNotifyTable.obj"
-	-@erase "$(INTDIR)\snmpTargetAddrEntry.obj"
-	-@erase "$(INTDIR)\snmpTargetParamsEntry.obj"
-	-@erase "$(INTDIR)\subagent.obj"
-	-@erase "$(INTDIR)\sysORTable.obj"
-	-@erase "$(INTDIR)\system_mib.obj"
-	-@erase "$(INTDIR)\target.obj"
-	-@erase "$(INTDIR)\target_counters.obj"
-	-@erase "$(INTDIR)\tcp.obj"
-	-@erase "$(INTDIR)\tcpTable.obj"
-	-@erase "$(INTDIR)\ucdDemoPublic.obj"
-	-@erase "$(INTDIR)\udp.obj"
-	-@erase "$(INTDIR)\udpTable.obj"
-	-@erase "$(INTDIR)\usmConf.obj"
-	-@erase "$(INTDIR)\usmStats.obj"
-	-@erase "$(INTDIR)\usmUser.obj"
-	-@erase "$(INTDIR)\util_funcs.obj"
-	-@erase "$(INTDIR)\vacm_context.obj"
-	-@erase "$(INTDIR)\vacm_conf.obj"
-	-@erase "$(INTDIR)\vacm_vars.obj"
-	-@erase "$(INTDIR)\var_route.obj"
-	-@erase "$(INTDIR)\vc??.idb"
-	-@erase "$(INTDIR)\versioninfo.obj"
-	-@erase "$(INTDIR)\$(PROGNAME).pch"
-	-@erase "..\lib\$(OUTDIR)\netsnmpmibs.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 /GX /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 "_MBCS" /D "HAVE_WIN32_PLATFORM_SDK" /Fp"$(INTDIR)\netsnmpmibssdk.pch" /YX /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)\netsnmpmibssdk.bsc" 
-BSC32_SBRS= \
-
-LIB32=link.exe -lib
-LIB32_FLAGS=iphlpapi.lib /nologo /out:"..\lib\$(OUTDIR)\netsnmpmibs.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\setSerialNo.obj" \
-	"$(INTDIR)\snmp_mib.obj" \
-	"$(INTDIR)\sysORTable.obj" \
-	"$(INTDIR)\system_mib.obj" \
-	"$(INTDIR)\vacm_context.obj" \
-	"$(INTDIR)\vacm_conf.obj" \
-	"$(INTDIR)\vacm_vars.obj" \
-	"$(INTDIR)\mteEventNotificationTable.obj" \
-	"$(INTDIR)\mteEventTable.obj" \
-	"$(INTDIR)\mteObjectsTable.obj" \
-	"$(INTDIR)\mteTriggerBooleanTable.obj" \
-	"$(INTDIR)\mteTriggerDeltaTable.obj" \
-	"$(INTDIR)\mteTriggerExistenceTable.obj" \
-	"$(INTDIR)\mteTriggerTable.obj" \
-	"$(INTDIR)\mteTriggerThresholdTable.obj" \
-	"$(INTDIR)\example.obj" \
-	"$(INTDIR)\ucdDemoPublic.obj" \
-	"$(INTDIR)\snmpEngine.obj" \
-	"$(INTDIR)\snmpMPDStats.obj" \
-	"$(INTDIR)\usmConf.obj" \
-	"$(INTDIR)\usmStats.obj" \
-	"$(INTDIR)\usmUser.obj" \
-	"$(INTDIR)\snmpNotifyFilterProfileTable.obj" \
-	"$(INTDIR)\notification_log.obj" \
-	"$(INTDIR)\snmpNotifyFilterTable.obj" \
-	"$(INTDIR)\snmpNotifyFilterTable_data_access.obj" \
-	"$(INTDIR)\snmpNotifyFilterTable_interface.obj" \
-	"$(INTDIR)\snmpNotifyTable.obj" \
-	"$(INTDIR)\snmpTargetAddrEntry.obj" \
-	"$(INTDIR)\snmpTargetParamsEntry.obj" \
-	"$(INTDIR)\target.obj" \
-	"$(INTDIR)\target_counters.obj" \
-	"$(INTDIR)\agentx_config.obj" \
-	"$(INTDIR)\client.obj" \
-	"$(INTDIR)\master.obj" \
-	"$(INTDIR)\master_admin.obj" \
-	"$(INTDIR)\protocol.obj" \
-	"$(INTDIR)\subagent.obj" \
-	"$(INTDIR)\extend.obj" \
-	"$(INTDIR)\nsCache.obj" \
-	"$(INTDIR)\nsDebug.obj" \
-	"$(INTDIR)\nsLogging.obj" \
-	"$(INTDIR)\nsModuleTable.obj" \
-	"$(INTDIR)\nsTransactionTable.obj" \
-	"$(INTDIR)\execute.obj" \
-	"$(INTDIR)\iquery.obj" \
-	"$(INTDIR)\override.obj" \
-	"$(INTDIR)\at.obj" \
-	"$(INTDIR)\icmp.obj" \
-	"$(INTDIR)\interfaces.obj" \
-	"$(INTDIR)\ip.obj" \
-	"$(INTDIR)\ipAddr.obj" \
-	"$(INTDIR)\route_write.obj" \
-	"$(INTDIR)\tcp.obj" \
-	"$(INTDIR)\tcpTable.obj" \
-	"$(INTDIR)\udp.obj" \
-	"$(INTDIR)\udpTable.obj" \
-	"$(INTDIR)\var_route.obj" \
-	"$(INTDIR)\dlmod.obj" \
-	"$(INTDIR)\errormib.obj" \
-	"$(INTDIR)\extensible.obj" \
-	"$(INTDIR)\file.obj" \
-	"$(INTDIR)\loadave.obj" \
-	"$(INTDIR)\pass.obj" \
-	"$(INTDIR)\pass_persist.obj" \
-	"$(INTDIR)\proc.obj" \
-	"$(INTDIR)\proxy.obj" \
-	"$(INTDIR)\versioninfo.obj" \
-	"$(INTDIR)\header_complex.obj" \
-	"$(INTDIR)\mib_modules.obj" \
-	"$(INTDIR)\util_funcs.obj" \
-#	"$(INTDIR)\winExtDLL.obj" \	# uncomment for winExtDLL
-	"$(INTDIR)\smux.obj"
-
-"..\lib\$(OUTDIR)\netsnmpmibs.lib" : "..\lib\$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ELSEIF  "$(CFG)" == "debug"
-
-ALL : "..\lib\$(OUTDIR)\netsnmpmibs.lib"
-
-
-CLEAN :
-	-@erase "$(INTDIR)\agentx_config.obj"
-	-@erase "$(INTDIR)\at.obj"
-	-@erase "$(INTDIR)\client.obj"
-	-@erase "$(INTDIR)\dlmod.obj"
-	-@erase "$(INTDIR)\errormib.obj"
-	-@erase "$(INTDIR)\example.obj"
-	-@erase "$(INTDIR)\execute.obj"
-	-@erase "$(INTDIR)\iquery.obj"
-	-@erase "$(INTDIR)\extensible.obj"
-	-@erase "$(INTDIR)\file.obj"
-	-@erase "$(INTDIR)\header_complex.obj"
-	-@erase "$(INTDIR)\icmp.obj"
-	-@erase "$(INTDIR)\interfaces.obj"
-	-@erase "$(INTDIR)\ip.obj"
-	-@erase "$(INTDIR)\ipAddr.obj"
-	-@erase "$(INTDIR)\loadave.obj"
-	-@erase "$(INTDIR)\master.obj"
-	-@erase "$(INTDIR)\master_admin.obj"
-	-@erase "$(INTDIR)\mib_modules.obj"
-	-@erase "$(INTDIR)\mteEventNotificationTable.obj"
-	-@erase "$(INTDIR)\mteEventTable.obj"
-	-@erase "$(INTDIR)\mteObjectsTable.obj"
-	-@erase "$(INTDIR)\mteTriggerBooleanTable.obj"
-	-@erase "$(INTDIR)\mteTriggerDeltaTable.obj"
-	-@erase "$(INTDIR)\mteTriggerExistenceTable.obj"
-	-@erase "$(INTDIR)\mteTriggerTable.obj"
-	-@erase "$(INTDIR)\mteTriggerThresholdTable.obj"
-	-@erase "$(INTDIR)\extend.obj"
-	-@erase "$(INTDIR)\nsCache.obj"
-	-@erase "$(INTDIR)\nsDebug.obj"
-	-@erase "$(INTDIR)\nsLogging.obj"
-	-@erase "$(INTDIR)\nsModuleTable.obj"
-	-@erase "$(INTDIR)\nsTransactionTable.obj"
-	-@erase "$(INTDIR)\override.obj"
-	-@erase "$(INTDIR)\pass.obj"
-	-@erase "$(INTDIR)\pass_persist.obj"
-	-@erase "$(INTDIR)\proc.obj"
-	-@erase "$(INTDIR)\protocol.obj"
-	-@erase "$(INTDIR)\proxy.obj"
-	-@erase "$(INTDIR)\route_write.obj"
-	-@erase "$(INTDIR)\setSerialNo.obj"
-	-@erase "$(INTDIR)\smux.obj"
-#	-@erase "$(INTDIR)\winExtDLL.obj"	# uncomment for winExtDLL
-	-@erase "$(INTDIR)\snmp_mib.obj"
-	-@erase "$(INTDIR)\snmpEngine.obj"
-	-@erase "$(INTDIR)\snmpMPDStats.obj"
-	-@erase "$(INTDIR)\snmpNotifyFilterProfileTable.obj"
-	-@erase "$(INTDIR)\notification_log.obj"
-	-@erase "$(INTDIR)\snmpNotifyFilterTable.obj"
-	-@erase "$(INTDIR)\snmpNotifyFilterTable_data_access.obj"
-	-@erase "$(INTDIR)\snmpNotifyFilterTable_interface.obj"
-	-@erase "$(INTDIR)\snmpNotifyTable.obj"
-	-@erase "$(INTDIR)\snmpTargetAddrEntry.obj"
-	-@erase "$(INTDIR)\snmpTargetParamsEntry.obj"
-	-@erase "$(INTDIR)\subagent.obj"
-	-@erase "$(INTDIR)\sysORTable.obj"
-	-@erase "$(INTDIR)\system_mib.obj"
-	-@erase "$(INTDIR)\target.obj"
-	-@erase "$(INTDIR)\target_counters.obj"
-	-@erase "$(INTDIR)\tcp.obj"
-	-@erase "$(INTDIR)\tcpTable.obj"
-	-@erase "$(INTDIR)\ucdDemoPublic.obj"
-	-@erase "$(INTDIR)\udp.obj"
-	-@erase "$(INTDIR)\udpTable.obj"
-	-@erase "$(INTDIR)\usmConf.obj"
-	-@erase "$(INTDIR)\usmStats.obj"
-	-@erase "$(INTDIR)\usmUser.obj"
-	-@erase "$(INTDIR)\util_funcs.obj"
-	-@erase "$(INTDIR)\vacm_context.obj"
-	-@erase "$(INTDIR)\vacm_conf.obj"
-	-@erase "$(INTDIR)\vacm_vars.obj"
-	-@erase "$(INTDIR)\var_route.obj"
-	-@erase "$(INTDIR)\vc??.idb"
-	-@erase "$(INTDIR)\vc??.pdb"
-	-@erase "$(INTDIR)\versioninfo.obj"
-	-@erase "$(INTDIR)\$(PROGNAME).pch"
-	-@erase "..\lib\$(OUTDIR)\netsnmpmibs.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 /GX /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 "_MBCS" /D "HAVE_WIN32_PLATFORM_SDK" /Fp"$(INTDIR)\netsnmpmibssdk.pch" /YX /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)\netsnmpmibssdk.bsc" 
-BSC32_SBRS= \
-
-LIB32=link.exe -lib
-LIB32_FLAGS=iphlpapi.lib /nologo /out:"..\lib\$(OUTDIR)\netsnmpmibs.lib" 
-LIB32_OBJS= \
-	"$(INTDIR)\setSerialNo.obj" \
-	"$(INTDIR)\snmp_mib.obj" \
-	"$(INTDIR)\sysORTable.obj" \
-	"$(INTDIR)\system_mib.obj" \
-	"$(INTDIR)\vacm_context.obj" \
-	"$(INTDIR)\vacm_conf.obj" \
-	"$(INTDIR)\vacm_vars.obj" \
-	"$(INTDIR)\mteEventNotificationTable.obj" \
-	"$(INTDIR)\mteEventTable.obj" \
-	"$(INTDIR)\mteObjectsTable.obj" \
-	"$(INTDIR)\mteTriggerBooleanTable.obj" \
-	"$(INTDIR)\mteTriggerDeltaTable.obj" \
-	"$(INTDIR)\mteTriggerExistenceTable.obj" \
-	"$(INTDIR)\mteTriggerTable.obj" \
-	"$(INTDIR)\mteTriggerThresholdTable.obj" \
-	"$(INTDIR)\example.obj" \
-	"$(INTDIR)\ucdDemoPublic.obj" \
-	"$(INTDIR)\snmpEngine.obj" \
-	"$(INTDIR)\snmpMPDStats.obj" \
-	"$(INTDIR)\usmConf.obj" \
-	"$(INTDIR)\usmStats.obj" \
-	"$(INTDIR)\usmUser.obj" \
-	"$(INTDIR)\snmpNotifyFilterProfileTable.obj" \
-	"$(INTDIR)\notification_log.obj" \
-	"$(INTDIR)\snmpNotifyFilterTable.obj" \
-	"$(INTDIR)\snmpNotifyFilterTable_data_access.obj" \
-	"$(INTDIR)\snmpNotifyFilterTable_interface.obj" \
-	"$(INTDIR)\snmpNotifyTable.obj" \
-	"$(INTDIR)\snmpTargetAddrEntry.obj" \
-	"$(INTDIR)\snmpTargetParamsEntry.obj" \
-	"$(INTDIR)\target.obj" \
-	"$(INTDIR)\target_counters.obj" \
-	"$(INTDIR)\agentx_config.obj" \
-	"$(INTDIR)\client.obj" \
-	"$(INTDIR)\master.obj" \
-	"$(INTDIR)\master_admin.obj" \
-	"$(INTDIR)\protocol.obj" \
-	"$(INTDIR)\subagent.obj" \
-	"$(INTDIR)\extend.obj" \
-	"$(INTDIR)\nsCache.obj" \
-	"$(INTDIR)\nsDebug.obj" \
-	"$(INTDIR)\nsLogging.obj" \
-	"$(INTDIR)\nsModuleTable.obj" \
-	"$(INTDIR)\nsTransactionTable.obj" \
-	"$(INTDIR)\execute.obj" \
-	"$(INTDIR)\iquery.obj" \
-	"$(INTDIR)\override.obj" \
-	"$(INTDIR)\at.obj" \
-	"$(INTDIR)\icmp.obj" \
-	"$(INTDIR)\interfaces.obj" \
-	"$(INTDIR)\ip.obj" \
-	"$(INTDIR)\ipAddr.obj" \
-	"$(INTDIR)\route_write.obj" \
-	"$(INTDIR)\tcp.obj" \
-	"$(INTDIR)\tcpTable.obj" \
-	"$(INTDIR)\udp.obj" \
-	"$(INTDIR)\udpTable.obj" \
-	"$(INTDIR)\var_route.obj" \
-	"$(INTDIR)\dlmod.obj" \
-	"$(INTDIR)\errormib.obj" \
-	"$(INTDIR)\extensible.obj" \
-	"$(INTDIR)\file.obj" \
-	"$(INTDIR)\loadave.obj" \
-	"$(INTDIR)\pass.obj" \
-	"$(INTDIR)\pass_persist.obj" \
-	"$(INTDIR)\proc.obj" \
-	"$(INTDIR)\proxy.obj" \
-	"$(INTDIR)\versioninfo.obj" \
-	"$(INTDIR)\header_complex.obj" \
-	"$(INTDIR)\mib_modules.obj" \
-	"$(INTDIR)\util_funcs.obj" \
-	"$(INTDIR)\smux.obj" \
-#	"$(INTDIR)\winExtDLL.obj" \	# uncomment for winExtDLL
-	"$(INTDIR)\smux.obj"
-
-"..\lib\$(OUTDIR)\netsnmpmibs.lib" : "..\lib\$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
-    $(LIB32) @<<
-  $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ENDIF 
-
-
-!IF "$(NO_EXTERNAL_DEPS)" != "1"
-!IF EXISTS("netsnmpmibssdk.dep")
-!INCLUDE "netsnmpmibssdk.dep"
-!ELSE 
-!MESSAGE Warning: cannot find "netsnmpmibssdk.dep"
-!ENDIF 
-!ENDIF 
-
-
-!IF "$(CFG)" == "release" || "$(CFG)" == "debug"
-SOURCE=..\..\agent\mibgroup\mibII\setSerialNo.c
-
-"$(INTDIR)\setSerialNo.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\snmp_mib.c
-
-"$(INTDIR)\snmp_mib.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\sysORTable.c
-
-"$(INTDIR)\sysORTable.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\system_mib.c
-
-"$(INTDIR)\system_mib.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\vacm_context.c
-
-"$(INTDIR)\vacm_context.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\vacm_conf.c
-
-"$(INTDIR)\vacm_conf.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\vacm_vars.c
-
-"$(INTDIR)\vacm_vars.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\disman\mteEventNotificationTable.c
-
-"$(INTDIR)\mteEventNotificationTable.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\disman\mteEventTable.c
-
-"$(INTDIR)\mteEventTable.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\disman\mteObjectsTable.c
-
-"$(INTDIR)\mteObjectsTable.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\disman\mteTriggerBooleanTable.c
-
-"$(INTDIR)\mteTriggerBooleanTable.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\disman\mteTriggerDeltaTable.c
-
-"$(INTDIR)\mteTriggerDeltaTable.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\disman\mteTriggerExistenceTable.c
-
-"$(INTDIR)\mteTriggerExistenceTable.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\disman\mteTriggerTable.c
-
-"$(INTDIR)\mteTriggerTable.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\disman\mteTriggerThresholdTable.c
-
-"$(INTDIR)\mteTriggerThresholdTable.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\examples\example.c
-
-"$(INTDIR)\example.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\examples\ucdDemoPublic.c
-
-"$(INTDIR)\ucdDemoPublic.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\snmpv3\snmpEngine.c
-
-"$(INTDIR)\snmpEngine.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\snmpv3\snmpMPDStats.c
-
-"$(INTDIR)\snmpMPDStats.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\snmpv3\usmConf.c
-
-"$(INTDIR)\usmConf.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\snmpv3\usmStats.c
-
-"$(INTDIR)\usmStats.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\snmpv3\usmUser.c
-
-"$(INTDIR)\usmUser.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\notification\snmpNotifyFilterProfileTable.c
-
-"$(INTDIR)\snmpNotifyFilterProfileTable.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\notification-log-mib\notification_log.c
-
-"$(INTDIR)\notification_log.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\snmp-notification-mib\snmpNotifyFilterTable\snmpNotifyFilterTable.c
-
-"$(INTDIR)\snmpNotifyFilterTable.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\snmp-notification-mib\snmpNotifyFilterTable\snmpNotifyFilterTable_data_access.c
-
-"$(INTDIR)\snmpNotifyFilterTable_data_access.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\snmp-notification-mib\snmpNotifyFilterTable\snmpNotifyFilterTable_interface.c
-
-"$(INTDIR)\snmpNotifyFilterTable_interface.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\notification\snmpNotifyTable.c
-
-"$(INTDIR)\snmpNotifyTable.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\target\snmpTargetAddrEntry.c
-
-"$(INTDIR)\snmpTargetAddrEntry.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\target\snmpTargetParamsEntry.c
-
-"$(INTDIR)\snmpTargetParamsEntry.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\target\target.c
-
-"$(INTDIR)\target.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\target\target_counters.c
-
-"$(INTDIR)\target_counters.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\agentx\agentx_config.c
-
-"$(INTDIR)\agentx_config.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\agentx\client.c
-
-"$(INTDIR)\client.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\agentx\master.c
-
-"$(INTDIR)\master.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\agentx\master_admin.c
-
-"$(INTDIR)\master_admin.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\agentx\protocol.c
-
-"$(INTDIR)\protocol.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\agentx\subagent.c
-
-"$(INTDIR)\subagent.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\agent\extend.c
-
-"$(INTDIR)\extend.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\agent\nsCache.c
-
-"$(INTDIR)\nsCache.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\agent\nsDebug.c
-
-"$(INTDIR)\nsDebug.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\agent\nsLogging.c
-
-"$(INTDIR)\nsLogging.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\agent\nsModuleTable.c
-
-"$(INTDIR)\nsModuleTable.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\agent\nsTransactionTable.c
-
-"$(INTDIR)\nsTransactionTable.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\utilities\execute.c
-
-"$(INTDIR)\execute.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\utilities\iquery.c
-
-"$(INTDIR)\iquery.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\utilities\override.c
-
-"$(INTDIR)\override.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\at.c
-
-"$(INTDIR)\at.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\icmp.c
-
-"$(INTDIR)\icmp.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\interfaces.c
-
-"$(INTDIR)\interfaces.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\ip.c
-
-"$(INTDIR)\ip.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\ipAddr.c
-
-"$(INTDIR)\ipAddr.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\route_write.c
-
-"$(INTDIR)\route_write.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\tcp.c
-
-"$(INTDIR)\tcp.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\tcpTable.c
-
-"$(INTDIR)\tcpTable.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\udp.c
-
-"$(INTDIR)\udp.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\udpTable.c
-
-"$(INTDIR)\udpTable.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mibgroup\mibII\var_route.c
-
-"$(INTDIR)\var_route.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\header_complex.c
-
-"$(INTDIR)\header_complex.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-SOURCE=..\..\agent\mib_modules.c
-
-"$(INTDIR)\mib_modules.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\winExtDLL.c		# uncomment for winExtDLL
-
-#"$(INTDIR)\winExtDLL.obj" : $(SOURCE) "$(INTDIR)"	# uncomment for winExtDLL
-#	$(CPP) $(CPP_PROJ) $(SOURCE)			# uncomment for winExtDLL
-
-
-SOURCE=..\..\agent\mibgroup\util_funcs.c
-
-"$(INTDIR)\util_funcs.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF 
-
-
diff --git a/win32/netsnmpmibssdk/netsnmpmibssdk.dsp b/win32/netsnmpmibssdk/netsnmpmibssdk.dsp
deleted file mode 100644
index 91d5ccc..0000000
--- a/win32/netsnmpmibssdk/netsnmpmibssdk.dsp
+++ /dev/null
@@ -1,420 +0,0 @@
-# Microsoft Developer Studio Project File - Name="netsnmpmibssdk" - Package Owner=<4>

-# Microsoft Developer Studio Generated Build File, Format Version 6.00

-# ** DO NOT EDIT **

-

-# TARGTYPE "Win32 (x86) Static Library" 0x0104

-

-CFG=netsnmpmibssdk - 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 "netsnmpmibssdk.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 "netsnmpmibssdk.mak" CFG="netsnmpmibssdk - Win32 Debug"

-!MESSAGE 

-!MESSAGE Possible choices for configuration are:

-!MESSAGE 

-!MESSAGE "netsnmpmibssdk - Win32 Release" (based on "Win32 (x86) Static Library")

-!MESSAGE "netsnmpmibssdk - 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)" == "netsnmpmibssdk - 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" /D "HAVE_WIN32_PLATFORM_SDK" /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 iphlpapi.lib mgmtapi.lib snmpapi.lib /nologo /out:"../lib/release/netsnmpmibs.lib"

-

-!ELSEIF  "$(CFG)" == "netsnmpmibssdk - 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" /D "HAVE_WIN32_PLATFORM_SDK" /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 iphlpapi.lib mgmtapi.lib snmpapi.lib /nologo /out:"../lib/debug/netsnmpmibs.lib"

-

-!ENDIF 

-

-# Begin Target

-

-# Name "netsnmpmibssdk - Win32 Release"

-# Name "netsnmpmibssdk - Win32 Debug"

-# Begin Group "mibII"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\setSerialNo.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\snmp_mib.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\sysORTable.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\system_mib.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\vacm_context.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\vacm_conf.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\vacm_vars.c

-# End Source File

-# End Group

-# Begin Group "disman"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\disman\mteEventNotificationTable.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\disman\mteEventTable.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\disman\mteObjectsTable.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\disman\mteTriggerBooleanTable.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\disman\mteTriggerDeltaTable.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\disman\mteTriggerExistenceTable.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\disman\mteTriggerTable.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\disman\mteTriggerThresholdTable.c

-# End Source File

-# End Group

-# Begin Group "examples"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\examples\example.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\examples\ucdDemoPublic.c

-# End Source File

-# End Group

-# Begin Group "snmpv3"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\snmpv3\snmpEngine.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\snmpv3\snmpMPDStats.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\snmpv3\usmConf.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\snmpv3\usmStats.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\snmpv3\usmUser.c

-# End Source File

-# End Group

-# Begin Group "notification"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\notification\snmpNotifyFilterProfileTable.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\notification-log-mib\notification_log.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\snmp-notification-mib\snmpNotifyFilterTable\snmpNotifyFilterTable.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

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\notification\snmpNotifyTable.c

-# End Source File

-# End Group

-# Begin Group "target"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\target\snmpTargetAddrEntry.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\target\snmpTargetParamsEntry.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\target\target.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\target\target_counters.c

-# End Source File

-# End Group

-# Begin Group "agentx"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\agentx\agentx_config.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\agentx\client.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\agentx\master.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\agentx\master_admin.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\agentx\protocol.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\agentx\subagent.c

-# End Source File

-# End Group

-# Begin Group "agent"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\agent\extend.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\agent\nsCache.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\agent\nsDebug.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\agent\nsLogging.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\agent\nsModuleTable.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\agent\nsTransactionTable.c

-# End Source File

-# End Group

-# Begin Group "utilities"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\utilities\execute.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\utilities\iquery.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\utilities\override.c

-# End Source File

-# End Group

-# Begin Group "mibIIsdk"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\at.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\icmp.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\interfaces.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\ip.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\ipAddr.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\route_write.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\tcp.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\tcpTable.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\udp.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\udpTable.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\mibII\var_route.c

-# End Source File

-# End Group

-# Begin Group "ucd-snmp"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE="..\..\agent\mibgroup\ucd-snmp\dlmod.c"

-# End Source File

-# Begin Source File

-

-SOURCE="..\..\agent\mibgroup\ucd-snmp\errormib.c"

-# End Source File

-# Begin Source File

-

-SOURCE="..\..\agent\mibgroup\ucd-snmp\extensible.c"

-# End Source File

-# Begin Source File

-

-SOURCE="..\..\agent\mibgroup\ucd-snmp\file.c"

-# End Source File

-# Begin Source File

-

-SOURCE="..\..\agent\mibgroup\ucd-snmp\loadave.c"

-# End Source File

-# Begin Source File

-

-SOURCE="..\..\agent\mibgroup\ucd-snmp\pass.c"

-# End Source File

-# Begin Source File

-

-SOURCE="..\..\agent\mibgroup\ucd-snmp\pass_persist.c"

-# End Source File

-# Begin Source File

-

-SOURCE="..\..\agent\mibgroup\ucd-snmp\proc.c"

-# End Source File

-# Begin Source File

-

-SOURCE="..\..\agent\mibgroup\ucd-snmp\proxy.c"

-# End Source File

-# Begin Source File

-

-SOURCE="..\..\agent\mibgroup\ucd-snmp\versioninfo.c"

-# End Source File

-# End Group

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\header_complex.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mib_modules.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\util_funcs.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\smux\smux.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\mibgroup\winExtDLL.c

-# End Source File

-# End Target

-# End Project

diff --git a/win32/snmpbulkget/snmpbulkget.dsp b/win32/snmpbulkget/snmpbulkget.dsp
index fe5e5ae..39599db 100644
--- a/win32/snmpbulkget/snmpbulkget.dsp
+++ b/win32/snmpbulkget/snmpbulkget.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

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

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

diff --git a/win32/snmpd/Makefile.in b/win32/snmpd/Makefile.in
index 41ac55e..1b1b3ac 100644
--- a/win32/snmpd/Makefile.in
+++ b/win32/snmpd/Makefile.in
@@ -2,7 +2,7 @@
 CFG=
 OUTDIR=
 INTDIR=
-SSL=
+SDK=
 LINKTYPE=
 
 # Set to 1 to allow the building using the DLL version of SNMPLIB.
@@ -14,21 +14,9 @@
 NULL=nul
 !ENDIF 
 
-!IF  "$(CFG)" == "release"
-
 ALL : "..\bin\$(OUTDIR)\snmpd.exe" "$(INTDIR)"
 
 
-CLEAN :
-	-@erase "$(INTDIR)\auto_nlist.obj"
-	-@erase "$(INTDIR)\kernel.obj"
-	-@erase "$(INTDIR)\snmpd.obj"
-	-@erase "$(INTDIR)\vc??.idb"
-	-@erase "$(INTDIR)\winservice.obj"
-	-@erase "$(INTDIR)\winservice.res"
-	-@erase "$(INTDIR)\$(PROGNAME).pch"
-	-@erase "..\bin\$(OUTDIR)\snmpd.exe"
-
 "..\bin\$(OUTDIR)" :
     if not exist "..\bin\$(OUTDIR)/$(NULL)" mkdir "..\bin\$(OUTDIR)"
 
@@ -36,99 +24,14 @@
     if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
 
 CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /GX /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 "_MBCS" /Fp"$(INTDIR)\snmpd.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
-
-!IF "$(LINKTYPE)" == "dynamic"
-CPP_PROJ=$(CPP_PROJ) /D "NMAKE_NETSNMP_USE_DLL"
-!ENDIF
-
-.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
+!IF  "$(CFG)" == "release"
+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 
 RSC_PROJ=/l 0x409 /fo"$(INTDIR)\winservice.res" /d "NDEBUG" 
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(INTDIR)\snmpd.bsc" 
-BSC32_SBRS= \
-
-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 /pdb:"../bin/$(OUTDIR)/snmpd.pdb" /debug /machine:I386 /out:"../bin/$(OUTDIR)/snmpd.exe" /libpath:"../lib/release" 
-LINK32_OBJS= \
-	"$(INTDIR)\auto_nlist.obj" \
-	"$(INTDIR)\kernel.obj" \
-	"$(INTDIR)\snmpd.obj" \
-	"$(INTDIR)\winservice.obj" \
-	"$(INTDIR)\winservice.res"
-
-"..\bin\$(OUTDIR)\$(PROGNAME).exe" : "..\bin\$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
-!IF "$(LINKTYPE)" == "static" || "$(ALLOW_DLL)" == "1"
-    $(LINK32) @<<
-  $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-!ELSE	# Linktype check
-	-@echo .
-	-@echo Aborting build.  Applications can not be built using --linktype=dynamic
-	-@echo .
+!ELSE
+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" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+RSC_PROJ=/l 0x409 /fo"$(INTDIR)\winservice.res" /d "_DEBUG" 
 !ENDIF
 
-!ELSEIF  "$(CFG)" == "debug"
-
-ALL : "..\bin\$(OUTDIR)\snmpd.exe" "$(INTDIR)\snmpd.bsc" "$(INTDIR)"
-
-
-CLEAN :
-	-@erase "$(INTDIR)\auto_nlist.obj"
-	-@erase "$(INTDIR)\auto_nlist.sbr"
-	-@erase "$(INTDIR)\kernel.obj"
-	-@erase "$(INTDIR)\kernel.sbr"
-	-@erase "$(INTDIR)\snmpd.obj"
-	-@erase "$(INTDIR)\snmpd.sbr"
-	-@erase "$(INTDIR)\vc??.idb"
-	-@erase "$(INTDIR)\vc??.pdb"
-	-@erase "$(INTDIR)\winservice.obj"
-	-@erase "$(INTDIR)\winservice.res"
-	-@erase "$(INTDIR)\winservice.sbr"
-	-@erase "$(INTDIR)\snmpd.bsc"
-	-@erase "$(INTDIR)\snmpd.pdb"
-	-@erase "$(INTDIR)\$(PROGNAME).pch"
-	-@erase "..\bin\$(OUTDIR)\snmpd.exe"
-
-"..\bin\$(OUTDIR)" :
-    if not exist "..\bin\$(OUTDIR)/$(NULL)" mkdir "..\bin\$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /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 "_MBCS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\snmpd.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
-
 !IF "$(LINKTYPE)" == "dynamic"
 CPP_PROJ=$(CPP_PROJ) /D "NMAKE_NETSNMP_USE_DLL"
 !ENDIF
@@ -148,38 +51,14 @@
    $(CPP_PROJ) $< 
 <<
 
-.c{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cpp{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
-.cxx{$(INTDIR)}.sbr::
-   $(CPP) @<<
-   $(CPP_PROJ) $< 
-<<
-
 RSC=rc.exe
-RSC_PROJ=/l 0x409 /fo"$(INTDIR)\winservice.res" /d "_DEBUG" 
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(INTDIR)\snmpd.bsc" 
-BSC32_SBRS= \
-	"$(INTDIR)\auto_nlist.sbr" \
-	"$(INTDIR)\kernel.sbr" \
-	"$(INTDIR)\snmpd.sbr" \
-	"$(INTDIR)\winservice.sbr"
-
-"$(INTDIR)\snmpd.bsc" : "..\bin\$(OUTDIR)" $(BSC32_SBRS)
-    $(BSC32) @<<
-  $(BSC32_FLAGS) $(BSC32_SBRS)
-<<
-
 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 /incremental:no /pdb:"../bin/$(OUTDIR)/snmpd.pdb" /debug /machine:I386 /out:"../bin/$(OUTDIR)/snmpd.exe" /pdbtype:sept /libpath:"../lib/debug" 
+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
+LINK32_FLAGS=$(LINK32_FLAGS) /debug /incremental:no /pdb:"../bin/$(OUTDIR)/snmpd.pdb" /pdbtype:sept
+!ENDIF
 LINK32_OBJS= \
 	"$(INTDIR)\auto_nlist.obj" \
 	"$(INTDIR)\kernel.obj" \
@@ -187,21 +66,24 @@
 	"$(INTDIR)\winservice.obj" \
 	"$(INTDIR)\winservice.res"
 
+CLEAN :
+	-@for %f in ($(LINK32_OBJS)) do erase %%f
+	-@erase "..\bin\$(OUTDIR)\$(PROGNAME).exe"
+	-@erase "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest"
 
 "..\bin\$(OUTDIR)\$(PROGNAME).exe" : "..\bin\$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
 !IF "$(LINKTYPE)" == "static" || "$(ALLOW_DLL)" == "1"
     $(LINK32) @<<
   $(LINK32_FLAGS) $(LINK32_OBJS)
 <<
+ if exist "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest" \
+	    mt.exe -manifest "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest" -outputresource:"..\bin\$(OUTDIR)\$(PROGNAME).exe";1
 !ELSE	# Linktype check
 	-@echo .
 	-@echo Aborting build.  Applications can not be built using --linktype=dynamic
 	-@echo .
 !ENDIF
 
-!ENDIF 
-
-
 !IF "$(NO_EXTERNAL_DEPS)" != "1"
 !IF EXISTS("snmpd.dep")
 !INCLUDE "snmpd.dep"
@@ -211,97 +93,31 @@
 !ENDIF 
 
 
-!IF "$(CFG)" == "release" || "$(CFG)" == "debug"
 SOURCE=..\..\agent\auto_nlist.c
 
-!IF  "$(CFG)" == "release"
-
-
 "$(INTDIR)\auto_nlist.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-!ELSEIF  "$(CFG)" == "debug"
-
-
-"$(INTDIR)\auto_nlist.obj"	"$(INTDIR)\auto_nlist.sbr" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF 
-
 SOURCE=..\..\agent\kernel.c
 
-!IF  "$(CFG)" == "release"
-
-
 "$(INTDIR)\kernel.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-!ELSEIF  "$(CFG)" == "debug"
-
-
-"$(INTDIR)\kernel.obj"	"$(INTDIR)\kernel.sbr" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF 
-
 SOURCE=..\..\agent\snmpd.c
 
-!IF  "$(CFG)" == "release"
-
-
 "$(INTDIR)\snmpd.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-!ELSEIF  "$(CFG)" == "debug"
-
-
-"$(INTDIR)\snmpd.obj"	"$(INTDIR)\snmpd.sbr" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF 
-
 SOURCE=..\..\snmplib\winservice.c
 
-!IF  "$(CFG)" == "release"
-
-
 "$(INTDIR)\winservice.obj" : $(SOURCE) "$(INTDIR)"
 	$(CPP) $(CPP_PROJ) $(SOURCE)
 
 
-!ELSEIF  "$(CFG)" == "debug"
-
-
-"$(INTDIR)\winservice.obj"	"$(INTDIR)\winservice.sbr" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF 
-
 SOURCE=..\..\snmplib\winservice.rc
 
-!IF  "$(CFG)" == "release"
-
-
 "$(INTDIR)\winservice.res" : $(SOURCE) "$(INTDIR)"
-	$(RSC) /l 0x409 /fo"$(INTDIR)\winservice.res" /i "..\..\snmplib" /d "NDEBUG" $(SOURCE)
-
-
-!ELSEIF  "$(CFG)" == "debug"
-
-
-"$(INTDIR)\winservice.res" : $(SOURCE) "$(INTDIR)"
-	$(RSC) /l 0x409 /fo"$(INTDIR)\winservice.res" /i "..\..\snmplib" /d "_DEBUG" $(SOURCE)
-
-
-!ENDIF 
-
-
-!ENDIF 
-
+	$(RSC) $(RSC_PROJ) /i "..\..\snmplib" $(SOURCE)
diff --git a/win32/snmpd/snmpd.dsp b/win32/snmpd/snmpd.dsp
index 4269aa4..45e2cad 100644
--- a/win32/snmpd/snmpd.dsp
+++ b/win32/snmpd/snmpd.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

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

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

 

 !ENDIF 

 

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

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

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

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

diff --git a/win32/snmpdsdk/Makefile.in b/win32/snmpdsdk/Makefile.in
deleted file mode 100644
index 6b8de43..0000000
--- a/win32/snmpdsdk/Makefile.in
+++ /dev/null
@@ -1,306 +0,0 @@
-PROGNAME=
-CFG=
-OUTDIR=
-INTDIR=
-SSL=
-LINKTYPE=
-
-# Set to 1 to allow the building using the DLL version of SNMPLIB.
-ALLOW_DLL=1
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE 
-NULL=nul
-!ENDIF 
-
-!IF  "$(CFG)" == "release"
-
-ALL : "..\bin\$(OUTDIR)\snmpd.exe" "$(INTDIR)"
-
-
-CLEAN :
-	-@erase "$(INTDIR)\auto_nlist.obj"
-	-@erase "$(INTDIR)\kernel.obj"
-	-@erase "$(INTDIR)\snmpd.obj"
-	-@erase "$(INTDIR)\vc??.idb"
-	-@erase "$(INTDIR)\winservice.obj"
-	-@erase "$(INTDIR)\winservice.res"
-	-@erase "$(INTDIR)\snmpd.pch"
-	-@erase "..\bin\$(OUTDIR)\snmpd.exe"
-
-"..\bin\$(OUTDIR)" :
-    if not exist "..\bin\$(OUTDIR)/$(NULL)" mkdir "..\bin\$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /GX /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 "_MBCS" /D "HAVE_WIN32_PLATFORM_SDK" /Fp"$(INTDIR)\snmpd.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
-
-!IF "$(LINKTYPE)" == "dynamic"
-CPP_PROJ=$(CPP_PROJ) /D "NMAKE_NETSNMP_USE_DLL"
-!ENDIF
-
-.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
-RSC_PROJ=/l 0x409 /fo"$(INTDIR)\winservice.res" /d "NDEBUG" 
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(INTDIR)\snmpd.bsc" 
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=netsnmp.lib netsnmpagent.lib netsnmpmibs.lib netsnmphelpers.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib iphlpapi.lib /nologo /subsystem:console /pdb:"../bin/$(OUTDIR)/snmpd.pdb" /debug /machine:I386 /out:"../bin/$(OUTDIR)/snmpd.exe" /libpath:"../lib/release" 
-LINK32_OBJS= \
-	"$(INTDIR)\auto_nlist.obj" \
-	"$(INTDIR)\kernel.obj" \
-	"$(INTDIR)\snmpd.obj" \
-	"$(INTDIR)\winservice.obj" \
-	"$(INTDIR)\winservice.res"
-
-"..\bin\$(OUTDIR)\snmpd.exe" : "..\bin\$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
-!IF "$(LINKTYPE)" == "static" || "$(ALLOW_DLL)" == "1"
-    $(LINK32) @<<
-  $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-!ELSE	# Linktype check
-	-@echo .
-	-@echo Aborting build.  Applications can not be built using --linktype=dynamic
-	-@echo .
-!ENDIF
-
-!ELSEIF  "$(CFG)" == "debug"
-
-ALL : "..\bin\$(OUTDIR)\snmpd.exe" "$(INTDIR)\snmpd.bsc" "$(INTDIR)"
-
-
-CLEAN :
-	-@erase "$(INTDIR)\auto_nlist.obj"
-	-@erase "$(INTDIR)\auto_nlist.sbr"
-	-@erase "$(INTDIR)\kernel.obj"
-	-@erase "$(INTDIR)\kernel.sbr"
-	-@erase "$(INTDIR)\snmpd.obj"
-	-@erase "$(INTDIR)\snmpd.sbr"
-	-@erase "$(INTDIR)\vc??.idb"
-	-@erase "$(INTDIR)\vc??.pdb"
-	-@erase "$(INTDIR)\winservice.obj"
-	-@erase "$(INTDIR)\winservice.res"
-	-@erase "$(INTDIR)\winservice.sbr"
-	-@erase "$(INTDIR)\snmpd.bsc"
-	-@erase "$(INTDIR)\snmpd.pdb"
-	-@erase "$(INTDIR)\snmpd.pch"
-	-@erase "..\bin\$(OUTDIR)\snmpd.exe"
-
-"..\bin\$(OUTDIR)" :
-    if not exist "..\bin\$(OUTDIR)/$(NULL)" mkdir "..\bin\$(OUTDIR)"
-
-"$(INTDIR)" :
-    if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /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 "_MBCS" /D "HAVE_WIN32_PLATFORM_SDK" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\snmpd.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
-
-!IF "$(LINKTYPE)" == "dynamic"
-CPP_PROJ=$(CPP_PROJ) /D "NMAKE_NETSNMP_USE_DLL"
-!ENDIF
-
-.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
-RSC_PROJ=/l 0x409 /fo"$(INTDIR)\winservice.res" /d "_DEBUG" 
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(INTDIR)\snmpd.bsc" 
-BSC32_SBRS= \
-	"$(INTDIR)\auto_nlist.sbr" \
-	"$(INTDIR)\kernel.sbr" \
-	"$(INTDIR)\snmpd.sbr" \
-	"$(INTDIR)\winservice.sbr"
-
-"$(INTDIR)\snmpd.bsc" : "..\bin\$(OUTDIR)" $(BSC32_SBRS)
-    $(BSC32) @<<
-  $(BSC32_FLAGS) $(BSC32_SBRS)
-<<
-
-LINK32=link.exe
-LINK32_FLAGS=netsnmp.lib netsnmpagent.lib netsnmpmibs.lib netsnmphelpers.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib iphlpapi.lib /nologo /subsystem:console /incremental:no /pdb:"../bin/$(OUTDIR)/snmpd.pdb" /debug /machine:I386 /out:"../bin\$(OUTDIR)/snmpd.exe" /pdbtype:sept /libpath:"../lib/debug" 
-LINK32_OBJS= \
-	"$(INTDIR)\auto_nlist.obj" \
-	"$(INTDIR)\kernel.obj" \
-	"$(INTDIR)\snmpd.obj" \
-	"$(INTDIR)\winservice.obj" \
-	"$(INTDIR)\winservice.res"
-
-"..\bin\$(OUTDIR)\snmpd.exe" : "..\bin\$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
-!IF "$(LINKTYPE)" == "static" || "$(ALLOW_DLL)" == "1"
-    $(LINK32) @<<
-  $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-!ELSE	# Linktype check
-	-@echo .
-	-@echo Aborting build.  Applications can not be built using --linktype=dynamic
-	-@echo .
-!ENDIF
-
-!ENDIF 
-
-
-!IF "$(NO_EXTERNAL_DEPS)" != "1"
-!IF EXISTS("snmpd.dep")
-!INCLUDE "snmpd.dep"
-!ELSE 
-!MESSAGE Warning: cannot find "snmpd.dep"
-!ENDIF 
-!ENDIF 
-
-
-!IF "$(CFG)" == "release" || "$(CFG)" == "debug"
-SOURCE=..\..\agent\auto_nlist.c
-
-!IF  "$(CFG)" == "release"
-
-
-"$(INTDIR)\auto_nlist.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF  "$(CFG)" == "debug"
-
-
-"$(INTDIR)\auto_nlist.obj"	"$(INTDIR)\auto_nlist.sbr" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF 
-
-SOURCE=..\..\agent\kernel.c
-
-!IF  "$(CFG)" == "release"
-
-
-"$(INTDIR)\kernel.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF  "$(CFG)" == "debug"
-
-
-"$(INTDIR)\kernel.obj"	"$(INTDIR)\kernel.sbr" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF 
-
-SOURCE=..\..\agent\snmpd.c
-
-!IF  "$(CFG)" == "release"
-
-
-"$(INTDIR)\snmpd.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF  "$(CFG)" == "debug"
-
-
-"$(INTDIR)\snmpd.obj"	"$(INTDIR)\snmpd.sbr" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF 
-
-SOURCE=..\..\snmplib\winservice.c
-
-!IF  "$(CFG)" == "release"
-
-
-"$(INTDIR)\winservice.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF  "$(CFG)" == "debug"
-
-
-"$(INTDIR)\winservice.obj"	"$(INTDIR)\winservice.sbr" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF 
-
-SOURCE=..\..\snmplib\winservice.rc
-
-!IF  "$(CFG)" == "release"
-
-
-"$(INTDIR)\winservice.res" : $(SOURCE) "$(INTDIR)"
-	$(RSC) /l 0x409 /fo"$(INTDIR)\winservice.res" /i "..\..\snmplib" /d "NDEBUG" $(SOURCE)
-
-
-!ELSEIF  "$(CFG)" == "debug"
-
-
-"$(INTDIR)\winservice.res" : $(SOURCE) "$(INTDIR)"
-	$(RSC) /l 0x409 /fo"$(INTDIR)\winservice.res" /i "..\..\snmplib" /d "_DEBUG" $(SOURCE)
-
-
-!ENDIF 
-
-
-!ENDIF 
-
diff --git a/win32/snmpdsdk/snmpd.dsp b/win32/snmpdsdk/snmpd.dsp
deleted file mode 100644
index 882ad22..0000000
--- a/win32/snmpdsdk/snmpd.dsp
+++ /dev/null
@@ -1,106 +0,0 @@
-# Microsoft Developer Studio Project File - Name="snmpdsdk" - Package Owner=<4>

-# Microsoft Developer Studio Generated Build File, Format Version 6.00

-# ** DO NOT EDIT **

-

-# TARGTYPE "Win32 (x86) Console Application" 0x0103

-

-CFG=snmpdsdk - 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 "snmpd.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 "snmpd.mak" CFG="snmpdsdk - Win32 Debug"

-!MESSAGE 

-!MESSAGE Possible choices for configuration are:

-!MESSAGE 

-!MESSAGE "snmpdsdk - Win32 Release" (based on "Win32 (x86) Console Application")

-!MESSAGE "snmpdsdk - Win32 Debug" (based on "Win32 (x86) Console Application")

-!MESSAGE 

-

-# Begin Project

-# PROP AllowPerConfigDependencies 0

-# PROP Scc_ProjName ""

-# PROP Scc_LocalPath ""

-CPP=cl.exe

-RSC=rc.exe

-

-!IF  "$(CFG)" == "snmpdsdk - 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 "Release"

-# PROP Intermediate_Dir "Release"

-# PROP Ignore_Export_Lib 0

-# 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" /D "HAVE_WIN32_PLATFORM_SDK" /YX /FD /c

-# ADD BASE RSC /l 0x409 /d "NDEBUG"

-# ADD RSC /l 0x409 /d "NDEBUG"

-BSC32=bscmake.exe

-# ADD BASE BSC32 /nologo

-# 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 iphlpapi.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"../bin/release/snmpd.exe" /libpath:"../lib/release"

-

-!ELSEIF  "$(CFG)" == "snmpdsdk - 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 "Debug"

-# PROP Intermediate_Dir "Debug"

-# PROP Ignore_Export_Lib 0

-# 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" /D "HAVE_WIN32_PLATFORM_SDK" /FR /YX /FD /c

-# ADD BASE RSC /l 0x409 /d "_DEBUG"

-# ADD RSC /l 0x409 /d "_DEBUG"

-BSC32=bscmake.exe

-# ADD BASE BSC32 /nologo

-# 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 iphlpapi.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"../bin/debug/snmpd.exe" /pdbtype:sept /libpath:"../lib/debug"

-

-!ENDIF 

-

-# Begin Target

-

-# Name "snmpdsdk - Win32 Release"

-# Name "snmpdsdk - Win32 Debug"

-# Begin Source File

-

-SOURCE=..\..\agent\auto_nlist.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\kernel.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\agent\snmpd.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\snmplib\winservice.c

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\snmplib\winservice.rc

-# End Source File

-# End Target

-# End Project

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

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

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

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

diff --git a/win32/snmpnetstat/Makefile.in b/win32/snmpnetstat/Makefile.in
index ba4d5e2..05a01e8 100644
--- a/win32/snmpnetstat/Makefile.in
+++ b/win32/snmpnetstat/Makefile.in
@@ -2,7 +2,6 @@
 CFG=
 OUTDIR=
 INTDIR=
-SSL=
 LINKTYPE=
 
 # Set to 1 to allow the building using the DLL version of SNMPLIB.
@@ -23,13 +22,16 @@
 	-@erase "$(INTDIR)\if.obj"
 	-@erase "$(INTDIR)\inet.obj"
 	-@erase "$(INTDIR)\inet6.obj"
+	-@erase "$(INTDIR)\inetx.obj"
 	-@erase "$(INTDIR)\main.obj"
 	-@erase "$(INTDIR)\route.obj"
+	-@erase "$(INTDIR)\routex.obj"
 	-@erase "$(INTDIR)\ffs.obj"
 	-@erase "$(INTDIR)\vc??.idb"
 	-@erase "$(INTDIR)\winstub.obj"
 	-@erase "$(INTDIR)\$(PROGNAME).pch"
 	-@erase "..\bin\$(OUTDIR)\$(PROGNAME).exe"
+	-@erase "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest"
 
 "..\bin\$(OUTDIR)" :
     if not exist "..\bin\$(OUTDIR)/$(NULL)" mkdir "..\bin\$(OUTDIR)"
@@ -38,7 +40,7 @@
     if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
 
 CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /GX /Zi /O2 /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_BIND_TO_CURRENT_VCLIBS_VERSION" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\$(PROGNAME).pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+CPP_PROJ=/nologo /MD /W3 /EHsc /Zi /O2 /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_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 
 
 !IF "$(LINKTYPE)" == "dynamic"
 CPP_PROJ=$(CPP_PROJ) /D "NMAKE_NETSNMP_USE_DLL"
@@ -80,13 +82,15 @@
 BSC32_SBRS= \
 
 LINK32=link.exe
-LINK32_FLAGS=netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /pdb:"../bin/$(OUTDIR)/$(PROGNAME).pdb" /debug /machine:I386 /out:"../bin/$(OUTDIR)/$(PROGNAME).exe" /libpath:"../lib/release" 
+LINK32_FLAGS=netsnmp.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)\if.obj" \
 	"$(INTDIR)\inet.obj" \
 	"$(INTDIR)\inet6.obj" \
+	"$(INTDIR)\inetx.obj" \
 	"$(INTDIR)\main.obj" \
 	"$(INTDIR)\route.obj" \
+	"$(INTDIR)\routex.obj" \
 	"$(INTDIR)\ffs.obj" \
 	"$(INTDIR)\winstub.obj"
 
@@ -95,6 +99,8 @@
     $(LINK32) @<<
   $(LINK32_FLAGS) $(LINK32_OBJS)
 <<
+ if exist "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest" \
+	    mt.exe -manifest "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest" -outputresource:"..\bin\$(OUTDIR)\$(PROGNAME).exe";1
 !ELSE	# Linktype check
 	-@echo .
 	-@echo Aborting build.  Applications can not be built using --linktype=dynamic
@@ -113,10 +119,14 @@
 	-@erase "$(INTDIR)\inet.sbr"
 	-@erase "$(INTDIR)\inet6.obj"
 	-@erase "$(INTDIR)\inet6.sbr"
+	-@erase "$(INTDIR)\inetx.obj"
+	-@erase "$(INTDIR)\inetx.sbr"
 	-@erase "$(INTDIR)\main.obj"
 	-@erase "$(INTDIR)\main.sbr"
 	-@erase "$(INTDIR)\route.obj"
 	-@erase "$(INTDIR)\route.sbr"
+	-@erase "$(INTDIR)\routex.obj"
+	-@erase "$(INTDIR)\routex.sbr"
 	-@erase "$(INTDIR)\ffs.obj"
 	-@erase "$(INTDIR)\ffs.sbr"
 	-@erase "$(INTDIR)\vc??.idb"
@@ -127,6 +137,7 @@
 	-@erase "$(INTDIR)\$(PROGNAME).bsc"
 	-@erase "$(INTDIR)\$(PROGNAME).pdb"
 	-@erase "..\bin\$(OUTDIR)\$(PROGNAME).exe"
+	-@erase "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest"
 
 "..\bin\$(OUTDIR)" :
     if not exist "..\bin\$(OUTDIR)/$(NULL)" mkdir "..\bin\$(OUTDIR)"
@@ -135,7 +146,7 @@
     if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
 
 CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_BIND_TO_CURRENT_VCLIBS_VERSION" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\$(PROGNAME).pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /D "WIN32" /D "_BIND_TO_CURRENT_VCLIBS_VERSION" /D "_DEBUG" /D "_CONSOLE" /D "_CRT_SECURE_NO_WARNINGS" /D "_CRT_NONSTDC_NO_WARNINGS" /D "_MBCS" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
 
 !IF "$(LINKTYPE)" == "dynamic"
 CPP_PROJ=$(CPP_PROJ) /D "NMAKE_NETSNMP_USE_DLL"
@@ -178,8 +189,10 @@
 	"$(INTDIR)\if.sbr" \
 	"$(INTDIR)\inet.sbr" \
 	"$(INTDIR)\inet6.sbr" \
+	"$(INTDIR)\inetx.sbr" \
 	"$(INTDIR)\main.sbr" \
 	"$(INTDIR)\route.sbr" \
+	"$(INTDIR)\routex.sbr" \
 	"$(INTDIR)\ffs.sbr" \
 	"$(INTDIR)\winstub.sbr"
 
@@ -189,13 +202,15 @@
 <<
 
 LINK32=link.exe
-LINK32_FLAGS=netsnmp.lib advapi32.lib ws2_32.lib kernel32.lib user32.lib /nologo /subsystem:console /incremental:no /pdb:"../bin/$(OUTDIR)/$(PROGNAME).pdb" /debug /machine:I386 /out:"../bin/$(OUTDIR)/$(PROGNAME).exe" /pdbtype:sept /libpath:"../lib/debug" 
+LINK32_FLAGS=netsnmp.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)\if.obj" \
 	"$(INTDIR)\inet.obj" \
 	"$(INTDIR)\inet6.obj" \
+	"$(INTDIR)\inetx.obj" \
 	"$(INTDIR)\main.obj" \
 	"$(INTDIR)\route.obj" \
+	"$(INTDIR)\routex.obj" \
 	"$(INTDIR)\ffs.obj" \
 	"$(INTDIR)\winstub.obj"
 
@@ -204,6 +219,8 @@
     $(LINK32) @<<
   $(LINK32_FLAGS) $(LINK32_OBJS)
 <<
+ if exist "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest" \
+	    mt.exe -manifest "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest" -outputresource:"..\bin\$(OUTDIR)\$(PROGNAME).exe";1
 !ELSE	# Linktype check
 	-@echo .
 	-@echo Aborting build.  Applications can not be built using --linktype=dynamic
@@ -277,6 +294,11 @@
 
 !ENDIF 
 
+SOURCE=..\..\apps\$(PROGNAME)\inetx.c
+
+"$(INTDIR)\inetx.obj"	"$(INTDIR)\inetx.sbr" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
 SOURCE=..\..\apps\$(PROGNAME)\main.c
 
 !IF  "$(CFG)" == "release"
@@ -313,6 +335,11 @@
 
 !ENDIF 
 
+SOURCE=..\..\apps\$(PROGNAME)\routex.c
+
+"$(INTDIR)\routex.obj"	"$(INTDIR)\routex.sbr" : $(SOURCE) "$(INTDIR)"
+	$(CPP) $(CPP_PROJ) $(SOURCE)
+
 SOURCE=..\..\apps\$(PROGNAME)\ffs.c
 
 !IF  "$(CFG)" == "release"
diff --git a/win32/snmpnetstat/snmpnetstat.dsp b/win32/snmpnetstat/snmpnetstat.dsp
old mode 100644
new mode 100755
index 25ec031..2eda575
--- a/win32/snmpnetstat/snmpnetstat.dsp
+++ b/win32/snmpnetstat/snmpnetstat.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

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

 # Begin Source File

 

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

+# End Source File

+# Begin Source File

+

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

 # End Source File

 # Begin Source File

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

 # Begin Source File

 

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

+# End Source File

+# Begin Source File

+

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

 # End Source File

 # Begin Source File

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

 # Begin Source File

 

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

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

 # End Source File

 # Begin Source File

 

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

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

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

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

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

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

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

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

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

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

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

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

diff --git a/win32/snmptrapd/Makefile.in b/win32/snmptrapd/Makefile.in
index eb72fa7..2fa5ccb 100644
--- a/win32/snmptrapd/Makefile.in
+++ b/win32/snmptrapd/Makefile.in
@@ -2,7 +2,6 @@
 CFG=
 OUTDIR=
 INTDIR=
-SSL=
 LINKTYPE=
 
 # Set to 1 to allow the building using the DLL version of SNMPLIB.
@@ -26,6 +25,7 @@
 	-@erase "$(INTDIR)\vc??.idb"
 	-@erase "$(INTDIR)\$(PROGNAME).pch"
 	-@erase "..\bin\$(OUTDIR)\$(PROGNAME).exe"
+	-@erase "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest"
 
 "..\bin\$(OUTDIR)" :
     if not exist "..\bin\$(OUTDIR)/$(NULL)" mkdir "..\bin\$(OUTDIR)"
@@ -34,7 +34,7 @@
     if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
 
 CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /GX /Zi /O2 /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /I "..\..\agent\mibgroup" /D "WIN32" /D "_BIND_TO_CURRENT_VCLIBS_VERSION" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\$(PROGNAME).pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+CPP_PROJ=/nologo /MD /W3 /EHsc /Zi /O2 /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /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 
 
 !IF "$(LINKTYPE)" == "dynamic"
 CPP_PROJ=$(CPP_PROJ) /D "NMAKE_NETSNMP_USE_DLL"
@@ -77,7 +77,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 /machine:I386 /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" \
@@ -88,6 +88,8 @@
     $(LINK32) @<<
   $(LINK32_FLAGS) $(LINK32_OBJS)
 <<
+ if exist "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest" \
+	    mt.exe -manifest "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest" -outputresource:"..\bin\$(OUTDIR)\$(PROGNAME).exe";1
 !ELSE	# Linktype check
 	-@echo .
 	-@echo Aborting build.  Applications can not be built using --linktype=dynamic
@@ -111,6 +113,7 @@
 	-@erase "$(INTDIR)\$(PROGNAME).bsc"
 	-@erase "$(INTDIR)\$(PROGNAME).pdb"
 	-@erase "..\bin\$(OUTDIR)\$(PROGNAME).exe"
+	-@erase "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest"
 
 "..\bin\$(OUTDIR)" :
     if not exist "..\bin\$(OUTDIR)/$(NULL)" mkdir "..\bin\$(OUTDIR)"
@@ -119,7 +122,7 @@
     if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
 
 CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /I "..\..\agent\mibgroup" /D "WIN32" /D "_BIND_TO_CURRENT_VCLIBS_VERSION" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\$(PROGNAME).pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
+CPP_PROJ=/nologo /MDd /W3 /Gm /EHsc /Zi /Od /I "." /I ".." /I "..\..\snmplib" /I "..\.." /I "..\..\include" /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" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\$(PROGNAME).pdb" /FD /c 
 
 !IF "$(LINKTYPE)" == "dynamic"
 CPP_PROJ=$(CPP_PROJ) /D "NMAKE_NETSNMP_USE_DLL"
@@ -169,7 +172,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 /machine:I386 /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" \
@@ -180,6 +183,8 @@
     $(LINK32) @<<
   $(LINK32_FLAGS) $(LINK32_OBJS)
 <<
+ if exist "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest" \
+	    mt.exe -manifest "..\bin\$(OUTDIR)\$(PROGNAME).exe.manifest" -outputresource:"..\bin\$(OUTDIR)\$(PROGNAME).exe";1
 !ELSE	# Linktype check
 	-@echo .
 	-@echo Aborting build.  Applications can not be built using --linktype=dynamic
@@ -198,25 +203,6 @@
 !ENDIF 
 
 
-!IF "$(CFG)" == "release" || "$(CFG)" == "debug"
-SOURCE=..\..\agent\mibgroup\notification-log-mib\notification_log.c
-
-!IF  "$(CFG)" == "release"
-
-
-"$(INTDIR)\notification_log.obj" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF  "$(CFG)" == "debug"
-
-
-"$(INTDIR)\notification_log.obj"	"$(INTDIR)\notification_log.sbr" : $(SOURCE) "$(INTDIR)"
-	$(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF 
-
 SOURCE=..\..\apps\$(PROGNAME).c
 
 !IF  "$(CFG)" == "release"
@@ -306,7 +292,3 @@
 
 
 !ENDIF 
-
-
-!ENDIF 
-
diff --git a/win32/snmptrapd/snmptrapd.dsp b/win32/snmptrapd/snmptrapd.dsp
index de44737..9f49389 100644
--- a/win32/snmptrapd/snmptrapd.dsp
+++ b/win32/snmptrapd/snmptrapd.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

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

-# ADD LINK32 netsnmp.lib netsnmpagent.lib netsnmpmibs.lib 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 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 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/snmpusm/snmpusm.dsp b/win32/snmpusm/snmpusm.dsp
index db43f2e..a1c0124 100644
--- a/win32/snmpusm/snmpusm.dsp
+++ b/win32/snmpusm/snmpusm.dsp
@@ -50,7 +50,7 @@
 # ADD BSC32 /nologo

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

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

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

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

 LINK32=link.exe

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

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

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

 

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

 

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

 LINK32=link.exe

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

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

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

 

 !ENDIF 

 

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 4763c37..5ad1ab0 100644
--- a/win32/win32.dsw
+++ b/win32/win32.dsw
@@ -11,30 +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

 }}}

 

 ###############################################################################

@@ -47,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>

+{{{

 }}}

 

 ###############################################################################

@@ -59,6 +53,9 @@
 

 Package=<4>

 {{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -71,9 +68,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -86,9 +83,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -101,9 +98,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -116,18 +113,15 @@
 

 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

-  End Project Dependency

-  Begin Project Dependency

-  Project_Dep_Name netsnmpmibs

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libagent

+    End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name netsnmpmibs

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -140,9 +134,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -155,9 +149,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -170,9 +164,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -185,9 +179,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -200,9 +194,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -215,9 +209,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -230,9 +224,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -245,9 +239,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -260,9 +254,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -275,9 +269,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -290,9 +284,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -305,21 +299,18 @@
 

 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

-  End Project Dependency

-  Begin Project Dependency

-  Project_Dep_Name netsnmpmibs

-  End Project Dependency

-  Begin Project Dependency

-  Project_Dep_Name libnetsnmptrapd

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libagent

+    End Project Dependency

+    Begin Project Dependency

+    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

 }}}

 

 ###############################################################################

@@ -332,9 +323,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -347,9 +338,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

@@ -362,9 +353,9 @@
 

 Package=<4>

 {{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp

+    End Project Dependency

 }}}

 

 ###############################################################################

diff --git a/win32/win32dll.dsw b/win32/win32dll.dsw
new file mode 100755
index 0000000..fc24f5a
--- /dev/null
+++ b/win32/win32dll.dsw
@@ -0,0 +1,374 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00

+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!

+

+###############################################################################

+

+Project: "encode_keychange"=".\encode_keychange\encode_keychange.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "libagent"=".\libagent\libagent.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>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "libsnmp_dll"=".\libsnmp_dll\libsnmp_dll.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+}}}

+

+###############################################################################

+

+Project: "netsnmpmibs"=".\netsnmpmibs\netsnmpmibs.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmpbulkget"=".\snmpbulkget\snmpbulkget.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmpbulkwalk"=".\snmpbulkwalk\snmpbulkwalk.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmpd"=".\snmpd\snmpd.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libagent

+    End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name netsnmpmibs

+    End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmpdelta"=".\snmpdelta\snmpdelta.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmpdf"=".\snmpdf\snmpdf.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmpget"=".\snmpget\snmpget.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmpgetnext"=".\snmpgetnext\snmpgetnext.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmpnetstat"=".\snmpnetstat\snmpnetstat.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmpset"=".\snmpset\snmpset.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmpstatus"=".\snmpstatus\snmpstatus.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmptable"=".\snmptable\snmptable.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmptest"=".\snmptest\snmptest.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmptranslate"=".\snmptranslate\snmptranslate.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmptrap"=".\snmptrap\snmptrap.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmptrapd"=".\snmptrapd\snmptrapd.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libagent

+    End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libnetsnmptrapd

+    End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name netsnmpmibs

+    End Project Dependency

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmpusm"=".\snmpusm\snmpusm.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmpvacm"=".\snmpvacm\snmpvacm.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Project: "snmpwalk"=".\snmpwalk\snmpwalk.dsp" - Package Owner=<4>

+

+Package=<5>

+{{{

+}}}

+

+Package=<4>

+{{{

+    Begin Project Dependency

+    Project_Dep_Name libsnmp_dll

+    End Project Dependency

+}}}

+

+###############################################################################

+

+Global:

+

+Package=<5>

+{{{

+}}}

+

+Package=<3>

+{{{

+}}}

+

+###############################################################################

+

diff --git a/win32/win32sdk.dsw b/win32/win32sdk.dsw
deleted file mode 100644
index b3c6cba..0000000
--- a/win32/win32sdk.dsw
+++ /dev/null
@@ -1,383 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00

-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!

-

-###############################################################################

-

-Project: "libagent"=".\libagent\libagent.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

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

-{{{

-}}}

-

-###############################################################################

-

-Project: "netsnmpmibssdk"=".\netsnmpmibssdk\netsnmpmibssdk.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-}}}

-

-###############################################################################

-

-Project: "libnetsnmptrapd"=".\libnetsnmptrapd\libnetsnmptrapd.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-}}}

-

-###############################################################################

-

-Project: "encode_keychange"=".\encode_keychange\encode_keychange.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmpbulkget"=".\snmpbulkget\snmpbulkget.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmpbulkwalk"=".\snmpbulkwalk\snmpbulkwalk.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmpdsdk"=".\snmpdsdk\snmpd.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-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

-  End Project Dependency

-  Begin Project Dependency

-  Project_Dep_Name netsnmpmibssdk

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmpdelta"=".\snmpdelta\snmpdelta.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmpdf"=".\snmpdf\snmpdf.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmpget"=".\snmpget\snmpget.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmpgetnext"=".\snmpgetnext\snmpgetnext.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmpnetstat"=".\snmpnetstat\snmpnetstat.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmpset"=".\snmpset\snmpset.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmpstatus"=".\snmpstatus\snmpstatus.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmptable"=".\snmptable\snmptable.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmptest"=".\snmptest\snmptest.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmptranslate"=".\snmptranslate\snmptranslate.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmptrap"=".\snmptrap\snmptrap.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmptrapd"=".\snmptrapd\snmptrapd.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-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

-  End Project Dependency

-  Begin Project Dependency

-  Project_Dep_Name netsnmpmibssdk

-  End Project Dependency

-  Begin Project Dependency

-  Project_Dep_Name libnetsnmptrapd

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmpusm"=".\snmpusm\snmpusm.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmpvacm"=".\snmpvacm\snmpvacm.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Project: "snmpwalk"=".\snmpwalk\snmpwalk.dsp" - Package Owner=<4>

-

-Package=<5>

-{{{

-}}}

-

-Package=<4>

-{{{

-  Begin Project Dependency

-  Project_Dep_Name libsnmp

-  End Project Dependency

-}}}

-

-###############################################################################

-

-Global:

-

-Package=<5>

-{{{

-}}}

-

-Package=<3>

-{{{

-}}}

-

-###############################################################################

-